mod: улучшен алгоритм висячей пунктуации для правого вывешивания. Изменения в левом вывешивании.

This commit is contained in:
2026-03-19 11:03:30 +03:00
parent 88b228050e
commit 465dd9e9e6
5 changed files with 399 additions and 58 deletions

View File

@@ -55,6 +55,7 @@ CHAR_EN_QUOT1_OPEN = '“'
CHAR_EN_QUOT1_CLOSE = ''
CHAR_EN_QUOT2_OPEN = ''
CHAR_EN_QUOT2_CLOSE = ''
CHAR_TIMES = '×'
CHAR_COPY = '\u00a9' # Символ авторского права / © / ©
CHAR_REG = '\u00ae' # Зарегистрированная торговая марка / ® / ®
CHAR_COPYP = '\u2117' # Знак звуковой записи / ℗ / &copyp;
@@ -210,9 +211,9 @@ CUSTOM_ENCODE_MAP = {
# '\u007b': '{', # { / { / {
# '\u007d': '}', # } / } / }
# '\u007c': '|', # | / | / | / |
CHAR_NBSP: ' ', # /   /  
CHAR_REG: '®', # ® / ® / ® / ®
CHAR_COPY: '©', # © / © / ©
CHAR_NBSP: ' ', # /   /  
CHAR_REG: '®', # ® / ® / ® / ®
CHAR_COPY: '©', # © / © / ©
'\u0022': '"', # " / " / "
'\u0026': '&', # & / & / &
'\u003e': '>', # > / > / >
@@ -693,6 +694,7 @@ DEFAULT_POST_UNITS = [
'рад', 'К', '°C', '°F', '%', 'мкм', 'нм', 'А°', 'эВ', 'Дж', 'кДж', 'МДж', 'пкФ', 'нФ', 'мкФ', 'мФ', 'Ф',
'Гн', 'мГн', 'мкГн', 'Тл', 'Гс', 'эрг', 'бод', 'бит', 'байт', 'Кб', 'Мб', 'Гб', 'Тб', 'Пб', 'Эб', 'кал', 'ккал',
# Английские
'Kb', 'Mb', 'Gb', 'Tb', 'Pb', 'Eb', 'byte', 'uF', 'pF', 'W', 'A', 'V', 'ohm',
# --- Издательское дело ---
'pp', 'p', 'para', 'sect', 'fig', 'vol', 'ed', 'rev', 'dpi',
# --- Имперские и американские единицы ---
@@ -700,11 +702,11 @@ DEFAULT_POST_UNITS = [
]
# Пред-позиционные (№ 5, $ 10)
DEFAULT_PRE_UNITS = ['', '$', '', '£', '', '#', '§', '¤', '', '', '', '', '', '', '', '', '', '',
'ГОСТ', 'ТУ', 'ИСО', 'DIN', 'ASTM', 'EN', 'IEC', 'IEEE'] # технические стандарты перед числом работают как единицы измерения
'ГОСТ', 'ТУ', 'ИСО', 'ISO', 'DIN', 'ASTM', 'EN', 'IEC', 'IEEE'] # технические стандарты перед числом работают как единицы измерения
# Операторы, которые могут стоять между единицами измерения (км/ч)
# Сложение и вычитание здесь намеренно отсутствуют.
UNIT_MATH_OPERATORS = ['/', '*', '×', CHAR_MIDDOT, '÷']
UNIT_MATH_OPERATORS = ['/', '*', CHAR_TIMES, CHAR_MIDDOT, '÷']
# === КОНСТАНТЫ ДЛЯ ФИНАЛЬНЫХ СОКРАЩЕНИЙ ===
# Эти сокращения (обычно в конце фразы) будут "склеены" тонкой шпацией, а перед ними будет поставлен неразрывный пробел.
@@ -734,7 +736,7 @@ HANGING_PUNCTUATION_MODES = frozenset([
HANGING_PUNCTUATION_MODE_RIGHT,
])
# Пробелы ( символы-ищейки) которые могут использоваться как разделители "компенсационных сдвигов" для висячей пунктуации.
# Пробелы (символы-ищейки) которые могут использоваться как разделители "компенсационных сдвигов" для висячей пунктуации.
# Их соседство с висячими символами позволяет "компенсировать" их смещение относительно прилегающего символа.
HANGING_PUNCTUATION_SPACE_CHARS = frozenset([
' ', # обычный пробел