diff --git a/etpgrf/config.py b/etpgrf/config.py index ad69a0c..e8483e4 100644 --- a/etpgrf/config.py +++ b/etpgrf/config.py @@ -22,97 +22,498 @@ SUPPORTED_LANGS = frozenset([LANG_RU, LANG_RU_OLD, LANG_EN]) # === Соответствия `unicode` и `mnemonic` для типографа # Переносы -KEY_SHY = 'SHY' +KEY_SHY = 'shy' SHY_ENTITIES = { KEY_SHY: ('\u00AD', '­'), # Мягкий перенос } # Пробелы и неразрывные пробелы -KEY_NBSP = 'NBSP' -KEY_THINSP = 'THINSP' -KEY_ENSP = 'ENSP' -KEY_EMSP = 'EMSP' -KEY_ZWNJ = 'ZWNJ' -KEY_ZWJ = 'ZWJ' +KEY_NBSP = 'nbsp' +KEY_THINSP = 'thinsp' +KEY_ENSP = 'ensp' +KEY_EMSP = 'emsp' +KEY_ZWNJ = 'zwnj' +KEY_ZWJ = 'zwj' SPACE_ENTITIES = { KEY_NBSP: ('\u00A0', ' '), # Неразрывный пробел - KEY_THINSP: ('\u2009', ' '), # Тонкий пробел - KEY_ENSP: ('\u2002', ' '), # Полу-широкий пробел - KEY_EMSP: ('\u2003', ' '), # Широкий пробел - KEY_ZWNJ: ('\u200C', '‌'), # Разрывный пробел нулевой ширины (без пробела) - KEY_ZWJ: ('\u200D', '‍'), # Неразрывный пробел нулевой ширины + KEY_ENSP: ('\u2002', ' '), # Полу-широкий пробел (En space) + KEY_EMSP: ('\u2003', ' '), # Широкий пробел (Em space) + KEY_THINSP: ('\u2009', ' '), # Тонкий пробел (Thin space) + KEY_ZWJ: ('\u200D', '‍'), # Нулевая ширина (с объединением) (Zero Width Joiner) + KEY_ZWNJ: ('\u200C', '‌'), # Нулевая ширина (без объединения) (Zero Width Non-Joiner) } # Тире и дефисы DASH_ENTITIES = { - 'NDASH': ('\u2013', '–'), # Cреднее тире (En dash) - 'MDASH': ('\u2014', '—'), # Длинное тире - 'HYPHEN': ('\u2010', '‐'), # Обычный дефис (если нужно отличать от минуса) - 'HORBAR': ('\u2015', '―'), # Горизонтальная линия (длинная черта) + 'ndash': ('\u2013', '–'), # Cреднее тире (En dash) + 'mdash': ('\u2014', '—'), # Длинное тире + 'hyphen': ('\u2010', '‐'), # Обычный дефис (если нужно отличать от минуса) + 'horbar': ('\u2015', '―'), # Горизонтальная линия (длинная черта) } # Кавычки +KEY_QUOT = 'quot' +KEY_LAQUO = 'laquo' +KEY_RAQUO = 'raquo' +KEY_LDQUO = 'ldquo' +KEY_RDQUO = 'rdquo' QUOTE_ENTITIES = { - 'QUOT': ('\u0022', '"'), # Двойная кавычка (универсальная) -- " - 'APOS': ('\u0027', '''), # Апостроф (одинарная кавычка) -- ' - 'LAQUO': ('\u00AB', '«'), # Открывающая (левая) кавычка «ёлочка» -- « - 'RAQUO': ('\u00BB', '»'), # Закрывающая (правая) кавычка «ёлочка» -- » - 'LDQUO': ('\u201C', '“'), # Oткрывающая (левая) двойная кавычка -- “ - 'RDQUO': ('\u201D', '”'), # Закрывающая (правая) двойная кавычка -- ” - 'BDQUO': ('\u2039', '„'), # Нижняя двойная кавычка -- „ - 'LSQUO': ('\u2018', '‘'), # Открывающая (левая) одинарная кавычка -- ‘ - 'RSQUO': ('\u2019', '’'), # Закрывающая (правая) одинарная кавычка -- ’ - 'SBQUO': ('\u201A', '‚'), # Нижняя одинарная кавычка -- ‚ - 'LSAQUO': ('\u2039', '‹'), # Открывающая французская угловая кавычка -- › - 'RSAQUO': ('\u203A', '›'), # Закрывающая французская угловая кавычка -- ‹ + KEY_QUOT: ('\u0022', '"'), # Двойная кавычка (универсальная) -- " + 'apos': ('\u0027', '''), # Апостроф (одинарная кавычка) -- ' + KEY_LAQUO: ('\u00AB', '«'), # Открывающая (левая) кавычка «ёлочка» -- « + KEY_RAQUO: ('\u00BB', '»'), # Закрывающая (правая) кавычка «ёлочка» -- » + KEY_LDQUO: ('\u201C', '“'), # Oткрывающая (левая) двойная кавычка -- “ + KEY_RDQUO: ('\u201D', '”'), # Закрывающая (правая) двойная кавычка -- ” + 'bdquo': ('\u2039', '„'), # Нижняя двойная кавычка -- „ + 'lsquo': ('\u2018', '‘'), # Открывающая (левая) одинарная кавычка -- ‘ + 'rsquo': ('\u2019', '’'), # Закрывающая (правая) одинарная кавычка -- ’ + 'sbquo': ('\u201A', '‚'), # Нижняя одинарная кавычка -- ‚ + 'lsaquo': ('\u2039', '‹'), # Открывающая французская угловая кавычка -- › + 'rsaquo': ('\u203A', '›'), # Закрывающая французская угловая кавычка -- ‹ } # Символы валют CURRENCY_ENTITIES = { - 'DOLLAR': ('\u0024', '$'), # Доллар - 'CENT': ('\u00A2', '¢'), # Цент - 'POUND': ('\u00A3', '£'), # Фунт стерлингов - 'CURREN': ('\u00A4', '¤'), # Знак валюты (обычно используется для обозначения "без конкретной валюты") - 'YEN': ('\u00A5', '¥'), # Йена - 'EURO': ('\u20AC', '€'), # Евро - 'RUBLE': ('\u20BD', '₽'), # Российский рубль (₽) + 'dollar': ('\u0024', '$'), # Доллар + 'cent': ('\u00A2', '¢'), # Цент + 'pound': ('\u00A3', '£'), # Фунт стерлингов + 'curren': ('\u00A4', '¤'), # Знак валюты (обычно используется для обозначения "без конкретной валюты") + 'yen': ('\u00A5', '¥'), # Йена + 'euro': ('\u20AC', '€'), # Евро + 'ruble': ('\u20BD', '₽'), # Российский рубль (₽) } # Математические символы -KEY_LT = 'LT' -KEY_GT = 'GT' +KEY_LT = 'lt' +KEY_GT = 'gt' MATH_ENTITIES = { - KEY_LT: ('\u00B7', '<'), # Меньше (<) - KEY_GT: ('\u00B7', '>'), # Больше (>) - 'PLUS': ('\u002B', '+'), # Плюс (+) - 'MINUS': ('\u2212', '−'), # Минус (−) - 'MULTIPLY': ('\u00D7', '×'), # Умножение (×) - 'DIVIDE': ('\u00F7', '÷'), # Деление (÷) - 'EQUALS': ('\u003D', '='), # Равно (=) - 'NOT_EQUAL': ('\u2260', '≠'), # Не равно (≠) - 'PLUSMN': ('\u00B1', '±'), # Плюс-минус (±) - 'LESS_EQUAL': ('\u2264', '≤'), # Меньше или равно (≤) - 'GREATER_EQUAL': ('\u2265', '≥'), # Больше или равно (≥) - 'APPROX_EQUAL': ('\u2245', '≅'), # Приблизительно равно (≅) - 'APPROX_EQ': ('\u2245', '≊'), # Приблизительно равно (≅) - 'APPROX': ('\u2248', '≈'), # Приблизительно равно (≈) + KEY_LT: ('\u00B7', '<'), # Меньше (<) + KEY_GT: ('\u00B7', '>'), # Больше (>) + 'plus': ('\u002B', '+'), # Плюс (+) + 'minus': ('\u2212', '−'), # Минус (−) + 'times': ('\u00D7', '×'), # Умножение (×) + 'divide': ('\u00F7', '÷'), # Деление (÷) + 'equals': ('\u003D', '='), # Равно (=) + 'ne': ('\u2260', '≠'), # Не равно (≠) + 'plusmn': ('\u00B1', '±'), # Плюс-минус (±) + 'not': ('\u00AC', '¬'), # Знак отрицания (¬) + 'deg': ('\u00B0', '°'), # Знак градуса (°) + 'sup1': ('\u00B9', '¹'), # Верхний индекс 1 (¹) + 'sup2': ('\u00B2', '²'), # Верхний индекс 2 (²) + 'sup3': ('\u00B3', '³'), # Верхний индекс 3 (³) + 'fnof': ('\u0192', 'ƒ'), # Латинская строчная буква «f» с хвостиком или знак флорина (ƒ) + 'percnt': ('\u0025', '%'), # Знак процента (%) + 'permil': ('\u0089', '‰'), # Знак промилле (‰) + 'pertenk': ('\u2031', '‱'), # Знак на десять тысяч (‱) + 'forall': ('\u2200', '∀'), # Для всех (∀) + 'comp': ('\u2201', '∁'), # Дополнение (∁) + 'part': ('\u2202', '∂'), # Частный дифференциал (∂) + 'exist': ('\u2203', '∃'), # Существует (∃) + 'nexist': ('\u2204', '∄'), # Не существует (∄) + 'empty': ('\u2205', '∅'), # Пустое множество (∅) + 'nabla': ('\u2207', '∇'), # Набла (∇) + 'isin': ('\u2208', '∈'), # Принадлежит (∈) + 'notin': ('\u2209', '∉'), # Не принадлежит (∉) + 'ni': ('\u220B', '∋'), # Содержит как член (∋) + 'notni': ('\u220C', '∌'), # Не содержит как член (∌) + 'prod': ('\u220F', '∏'), # N-арное произведение (∏) + 'coprod' : ('\u2210', '∐'), # N-арный сомножитель (∐) + 'sum': ('\u2211', '∑'), # N-арная сумма (∑) + 'mnplus': ('\u2213', '∓'), # Минус-плюс (∓) + 'minusd': ('\u2212', '∸'), # Минус с точкой (∸) + 'plusdo': ('\u2214', '∔'), # Плюс с точкой (∔) + 'setminus': ('\u2216', '∖'), # Разность множеств (∖) + 'lowast': ('\u2217', '∗'), # Оператор звездочка (∗) + 'compfn': ('\u2218', '∘'), # Кольцевой оператор (∘) + 'radic': ('\u221A', '√'), # Квадратный корень (√) + 'prop': ('\u221D', '∝'), # Пропорционально (∝) + 'infin': ('\u221E', '∞'), # Бесконечность (∞) + 'ang': ('\u2220', '∠'), # Угол (∠) + 'angrt': ('\u221F', '∟'), # Правый угол (∟) + 'angmsd': ('\u2221', '∡'), # Измеримый угол (∡) + 'angsph': ('\u2222', '∢'), # Сферический угол (∢) + 'mid': ('\u2223', '∣'), # Делит (∣) + 'nmid': ('\u2224', '∤'), # Не делит (∤) + 'parallel': ('\u2225', '∥'), # Параллельно (∥) + 'npar': ('\u2226', '∦'), # Не параллельно (∦) + 'and': ('\u2227', '∧'), # Логическое И (∧) + 'or': ('\u2228', '∨'), # Логическое ИЛИ (∨) + 'cap': ('\u2229', '∩'), # Пересечение (∩) + 'cup': ('\u222A', '∪'), # Объединение (∪) + 'int': ('\u222B', '∫'), # Интеграл (∫) + 'int2': ('\u222C', '∬'), # Двойной интеграл (∬) + 'int3': ('\u222D', '∭'), # Тройной интеграл (∭) + 'conint': ('\u222E', '∮'), # Интеграл по контуру (∮) + 'Conint': ('\u222F', '∯'), # Поверхностный интеграл (∯) + 'Cconint': ('\u2230', '∰'), # Интеграл по объёму (∰) + 'cwint': ('\u2231', '∱'), # Круговой интеграл (∱) + 'cwconint': ('\u2232', '∲'), # Круговой интеграл по контуру (∲) + 'awconint': ('\u2233', '∳'), # Антикруговой интеграл по контуру (∳) + 'there4': ('\u2234', '∴'), # Следовательно (∴) + 'because': ('\u2235', '∵'), # Поскольку (∵) + 'ratio': ('\u2236', '∶'), # Отношение (∶) + 'Colon': ('\u2237', '∷'), # Пропорция (∷) + 'mDDot': ('\u223A', '∺'), # Геометрическая пропорция (∺) + 'homtht': ('\u223B', '∻'), # Гомотетия (∻) + 'sim': ('\u223C', '∼'), # Оператор тильда (∼) + 'bsim': ('\u223D', '∽'), # Обратная тильда (∽) + 'ac': ('\u223E', '∾'), # Перевернутая плавная s (∾) + 'acd': ('\u223F', '∿'), # Синусоидальная волна (∿) + 'wreath': ('\u2240', '≀'), # Скрученное произведение (≀) + 'nsim': ('\u2241', '≁'), # Не эквивалентно (≁) + 'esim': ('\u2242', '≂'), # Тильда с минусом (≂) + 'sime': ('\u2243', '≃'), # Асимптотически равно (≃) + 'nsime': ('\u2244', '≄'), # Не асимптотически равно (≄) + 'cong': ('\u2245', '≅'), # Конгруэнтность (≅) + 'asymp': ('\u2248', '≈'), # Приблизительно равно (≈) + 'simne': ('\u2246', '≆'), # Приблизительно, но не точно равно (≆) + 'ncong': ('\u2247', '≇'), # Не приблизительно, не фактически равно (≇) + 'nap': ('\u2249', '≉'), # Не почти равный (≉) + 'approxeq': ('\u224A', '≊'), # Почти равный или равный (≊) + 'apid': ('\u224B', '≋'), # Тройная тильда (≋) + 'bcong': ('\u224C', '≌'), # Все равны (≌) + 'asympeq': ('\u224D', '≍'), # Эквивалентный (≍) + 'bump': ('\u224E', '≎'), # Геометрически эквивалентный (≎) + 'bumpe': ('\u224F', '≏'), # Различие между (≏) + 'esdot': ('\u2250', '≐'), # Приближается к пределу (≐) + 'eDot': ('\u2251', '≑'), # Точка в пределах, Геометрически равный (≑) + 'efDot': ('\u2252', '≒'), # Приблизительно равный или образ (≒) + 'erDot': ('\u2253', '≓'), # Образ или приблизительно равный (≓) + 'colone': ('\u2254', '≔'), # Двоеточие равно (≔) + 'ecolon': ('\u2255', '≕'), # Равно двоеточие (≕) + 'ecir': ('\u2256', '≖'), # Кольцо в равно (≖) + 'cire': ('\u2257', '≗'), # Кольцо равно (≗) + 'wedgeq': ('\u2259', '≙'), # Оценка, Равно с вектором (≙) + 'veeeq': ('\u225A', '≚'), # Равноугольный (≚) + 'trie': ('\u225C', '≜'), # Равно по определению (≜) + 'equest': ('\u225F', '≟'), # Равно с вопросительным знаком (≟) + 'equiv': ('\u2261', '≡'), # Тождественно равно (≡) + 'nequiv': ('\u2262', '≢'), # Не тождественно равно (≢) + 'le': ('\u2264', '≤'), # Меньше или равно (≤) + 'ge': ('\u2265', '≥'), # Больше или равно (≥) + 'lE': ('\u2266', '≦'), # Меньше над равно (≦) + 'gE': ('\u2267', '≧'), # Больше над равно (≧) + 'lnE': ('\u2268', '≨'), # Меньше, но не равно (≨) + 'gnE': ('\u2269', '≩'), # Больше, но не равно (≩) + 'Lt': ('\u226A', '≪'), # Много меньше (≪) + 'Gt': ('\u226B', '≫'), # Много больше (≫) + 'between': ('\u226C', '≬'), # Между (≬) + 'NotCupCap': ('\u226D', '≭'), # Не эквивалентно (≭) + 'nlt': ('\u226E', '≮'), # Не меньше (≮) + 'ngt': ('\u226F', '≯'), # Не больше (≯) + 'nle': ('\u2270', '≰'), # Не меньше, не равно (≰) + 'nge': ('\u2271', '≱'), # Не больше, не равно (≱) + 'lsim': ('\u2272', '≲'), # Меньше либо эквивалентно (≲) + 'gsim': ('\u2273', '≳'), # Больше либо эквивалентно (≳) + 'nlsim': ('\u2274', '≴'), # Ни меньше, ни эквивалентно (≴) + 'ngsim': ('\u2275', '≵'), # Ни больше, ни эквивалентно (≵) + 'lg': ('\u2276', '≶'), # Меньше либо больше (≶) + 'gl': ('\u2277', '≷'), # Больше либо меньше (≷) + 'ntlg': ('\u2278', '≸'), # Ни меньше, ни больше (≸) + 'ntgl': ('\u2279', '≹'), # Ни больше, ни меньше (≹) + 'pr': ('\u227A', '≺'), # Предшествует (≺) + 'sc': ('\u227B', '≻'), # Следует за (≻) + 'prcue': ('\u227C', '≼'), # Предшествует либо равно (≼) + 'sccue': ('\u227D', '≽'), # Следует за либо равно (≽) + 'prsim': ('\u227E', '≾'), # Предшествует либо эквивалентно (≾) + 'scsim': ('\u227F', '≿'), # Следует за либо эквивалентно (≿) + 'npr': ('\u2280', '⊀'), # Не предшествует (⊀) + 'nsc': ('\u2281', '⊁'), # Не следует за (⊁) + 'sub': ('\u2282', '⊂'), # Подмножество (⊂) + 'sup': ('\u2283', '⊃'), # Надмножество (⊃) + 'nsub': ('\u2284', '⊄'), # Не подмножество (⊄) + 'nsup': ('\u2285', '⊅'), # Не надмножество (⊅) + 'sube': ('\u2286', '⊆'), # Подмножество либо совпадает (⊆) + 'supe': ('\u2287', '⊇'), # Надмножество либо совпадает (⊇) + 'nsube': ('\u2288', '⊈'), # Ни подмножество, ни совпадает (⊈) + 'nsupe': ('\u2289', '⊉'), # Ни надмножество, ни совпадает (⊉) + 'subne': ('\u228A', '⊊'), # Подмножество и не совпадает (⊊) + 'supne': ('\u228B', '⊋'), # Надмножество и не совпадает (⊋) + 'cupdot': ('\u228D', '⊍'), # Умножение мультимножеств (⊍) + 'uplus': ('\u228E', '⊎'), # Объединение мультимножеств, Подмножество с плюсом (⊎) + 'sqsub': ('\u228F', '⊏'), # Образ в квадрате (⊏) + 'sqsup': ('\u2290', '⊐'), # Прообраз в квадрате (⊐) + 'sqsube': ('\u2291', '⊑'), # Образ в квадрате либо равно (⊑) + 'sqsupe': ('\u2292', '⊒'), # Прообраз в квадрате либо равно (⊒) + 'sqcap': ('\u2293', '⊓'), # Пересечение в квадрате (⊓) + 'sqcup': ('\u2294', '⊔'), # Объединение в квадрате (⊔) + 'oplus': ('\u2295', '⊕'), # Плюс в круге (⊕) + 'ominus': ('\u2296', '⊖'), # Минус в круге (⊖) + 'otimes': ('\u2297', '⊗'), # Произведение в круге (⊗) + 'osol': ('\u2298', '⊘'), # Дробная черта в круге (⊘) + 'odot': ('\u2299', '⊙'), # Точка в круге (⊙) + 'ocir': ('\u229A', '⊚'), # Кольцевой оператор в круге (⊚) + 'oast': ('\u229B', '⊛'), # Оператор звёздочка в круге (⊛) + 'odash': ('\u229D', '⊝'), # Дефис в круге (⊝) + 'plusb': ('\u229E', '⊞'), # Плюс в квадрате (⊞) + 'minusb': ('\u229F', '⊟'), # Минус в квадрате (⊟) + 'timesb': ('\u22A0', '⊠'), # Произведение в квадрате (⊠) + 'sdotb': ('\u22A1', '⊡'), # Точка в квадрате (⊡) + 'vdash': ('\u22A2', '⊢'), # Шеврон вправо (⊢) + 'dashv': ('\u22A3', '⊣'), # Шеврон влево (⊣) + 'top': ('\u22A4', '⊤'), # Истина, Шеврон вниз (⊤) + 'bot': ('\u22A5', '⊥'), # Ложь, Шеврон вверх (⊥) + 'models': ('\u22A7', '⊧'), # Моделирует (⊧) + 'vDash': ('\u22A8', '⊨'), # Истина (⊨) + 'Vdash': ('\u22A9', '⊩'), # Влечёт (⊩) + 'Vvdash': ('\u22AA', '⊪'), # Тройная вертикальная черта с перекладиной справа (⊪) + 'VDash': ('\u22AB', '⊫'), # Двойная вертикальная черта с двойной перекладиной справа (⊫) + 'nvdash': ('\u22AC', '⊬'), # Не доказано (⊬) + 'nvDash': ('\u22AD', '⊭'), # Не истина (⊭) + 'nVdash': ('\u22AE', '⊮'), # Не влечёт (⊮) + 'nVDash': ('\u22AF', '⊯'), # Двойная вертикальная черта с двойной перекладиной справа с отрицанием (⊯) + 'prurel': ('\u22B0', '⊰'), # Предшествует относительно (⊰) + 'scurel': ('\u22B1', '&scurel;'), # Следует за относительно (⊱) + 'vltri': ('\u22B2', '⊲'), # Нормальная подгруппа (⊲) + 'vrtri': ('\u22B3', '⊳'), # Содержит как нормальную подгруппу (⊳) + 'ltrie': ('\u22B4', '⊴'), # Нормальная подгруппа либо совпадает (⊴) + 'rtrie': ('\u22B5', '⊵'), # Содержит как нормальную подгруппу либо совпадает (⊵) + 'origof': ('\u22B6', '⊶'), # Прообраз (⊶) + 'imof': ('\u22B7', '⊷'), # Образ, Импликация (⊷) + 'mumap': ('\u22B8', '⊸'), # Многозначное отображение (⊹) + 'hercon': ('\u22B9', '⊹'), # Эрмитово сопряжение матрицы (⊹) + 'intcal': ('\u22BA', '⊺'), # Включение (⊺) + 'veebar': ('\u22BB', '⊻'), # Исключающее ИЛИ (⊻) + 'barvee': ('\u22BE', '⊽'), # Логическое ИЛИ с отрицанием (⊽) + 'angrtvb': ('\u22BE', '⊾'), # Правый угол с дугой (⊾) + 'lrtri': ('\u22BF', '⊿'), # Треугольник вершиной вправо (⊿) + 'xwedge': ('\u22C0', '⋀'), # N-арное логическое И (⋀) + 'xvee': ('\u22C1', '⋁'), # N-арное логическое ИЛИ (⋁) + 'xcap': ('\u22C2', '⋂'), # N-арное пересечение (⋂) + 'xcup': ('\u22C3', '⋃'), # N-арное объединение (⋃) + 'diamond': ('\u22C4', '⋄'), # Ромб (⋄) + 'sdot': ('\u22C5', '⋅'), # Оператор точка (⋅) + 'Star': ('\u22C6', '⋆'), # Оператор звёздочка (⋆) + 'divonx': ('\u22C7', '⋇'), # Деление с умножением, Кратность деления (⋇) + 'bowtie': ('\u22C8', '⋈'), # Бабочка (⋈) + 'ltimes': ('\u22C9', '⋉'), # Полупрямое произведение с нормальным фактором слева (⋉) + 'rtimes': ('\u22CA', '⋊'), # Полупрямое произведение с нормальным фактором справа (⋊) + 'lthree': ('\u22CB', '⋋'), # Левое полупрямое произведение (⋋) + 'rthree': ('\u22CC', '⋌'), # Правое полупрямое произведение (⋌) + 'bsime': ('\u22CD', '⋍'), # Обратное волнистое равно (⋍) + 'cuvee': ('\u22CE', '⋎'), # Волнистое логическое ИЛИ (⋎) + 'cuwed': ('\u22CF', '⋏'), # Волнистое логическое И (⋏) + 'Sub': ('\u22D0', '⋐'), # Двойное подмножество (⋐) + 'Sup': ('\u22D1', '⋑'), # Двойное надмножество (⋑) + 'Cap': ('\u22D2', '⋒'), # Двойное пересечение (⋒) + 'Cup': ('\u22D3', '⋓'), # Двойное объединение (⋓) + 'fork': ('\u22D4', '⋔'), # Вилка (⋔) + 'epar': ('\u22D5', '⋕'), # Равно и параллельно (⋕) + 'ltdot': ('\u22D6', '⋖'), # Меньше с точкой (⋖) + 'gtdot': ('\u22D7', '⋗'), # Больше с точкой (⋗) + 'Ll': ('\u22D8', '⋘'), # Очень много меньше (⋘) + 'Gg': ('\u22D9', '⋙'), # Очень много больше (⋙) + 'leg': ('\u22DA', '⋚'), # Меньше, равно либо больше (⋚) + 'gel': ('\u22DB', '⋛'), # Больше, равно либо меньше (⋛) + 'cuepr': ('\u22DE', '⋞'), # Равно либо предшествует (⋞) + 'cuesc': ('\u22DF', '⋟'), # Равно либо следует за (⋟) + 'nprcue': ('\u22E0', '⋠'), # Не предшествует либо равно (⋠) + 'nsccue': ('\u22E1', '⋡'), # Не следует за либо равно (⋡) + 'nsqsube': ('\u22E2', '⋢'), # Не образ в квадрате либо равно (⋢) + 'nsqsupe': ('\u22E3', '⋣'), # Не прообраз в квадрате либо равно (⋣) + 'lnapprox': ('\u22E4', '⪉'), # Меньше, но не приблизительно равно (⋤) + 'gnapprox': ('\u22E5', '⪊'), # Больше, но не приблизительно равно (⋥) + 'lnsim': ('\u22E6', '⋦'), # Меньше, но не эквивалентно (⋦) + 'gnsim': ('\u22E7', '⋧'), # Больше, но не эквивалентно (⋧) + 'prnsim': ('\u22E8', '⋨'), # Предшествует, но не эквивалентно (⋨) + 'scnsim': ('\u22E9', '⋩'), # Следует за, но не эквивалентно (⋩) + 'nltri': ('\u22EA', '⋪'), # Не содержится как нормальная подгруппа (⋪ + 'nrtri': ('\u22EB', '⋫'), # Не содержит как нормальную подгруппу (⋫) + 'nltrie': ('\u22EC', '⋬'), # Не содержится как нормальная подгруппа либо совпадает (⋬) + 'nrtrie': ('\u22ED', '⋭'), # Не содержит как нормальную подгруппу либо совпадает (⋭) + 'vellip': ('\u22EE', '⋮'), # Вертикальное многоточие (⋮) + 'ctdot': ('\u22EF', '⋯'), # Внутристрочное горизонтальное многоточие (⋯) + 'utdot': ('\u22F0', '⋰'), # Диагональное многоточие сверху вправо (⋰) + 'dtdot': ('\u22F1', '⋱'), # Диагональное многоточие снизу вправо (⋱) + 'disin': ('\u22F2', '⋲'), # Принадлежит с длинным горизонтальным штрихом (⋲) + 'isinsv': ('\u22F3', '⋳'), # Принадлежит с вертикальной чертой в конце горизонтального штриха (⋳) + 'isins': ('\u22F4', '⋴'), # Малое принадлежит с вертикальной чертой в конце горизонтального штриха (⋴) + 'isindot': ('\u22F5', '⋵'), # Принадлежит с точкой сверху (⋵) + 'notinvc': ('\u22F6', '⋶'), # Принадлежит с чертой сверху (⋶) + 'notinvb': ('\u22F7', '⋷'), # Малое принадлежит с чертой сверху (⋷) + 'isinE': ('\u22F8', '⋹'), # Принадлежит с двумя горизонтальными штрихами (⋸) + 'nisd': ('\u22FA', '⋺'), # Содержит с длинным горизонтальным штрихом (⋹) + 'xnis': ('\u22FB', '⋻'), # Содержит с вертикальной чертой в конце горизонтального штриха (⋺) + 'nis': ('\u22FC', '⋼'), # Малое содержит с вертикальной чертой в конце горизонтального штриха (⋼) + 'notnivc': ('\u22FD', '⋽'), # Содержит с чертой сверху (⋽) + 'notnivb': ('\u22FE', '⋾'), # Малое содержит с чертой сверху (⋾) + 'barwed': ('\u2305', '⌅'), # Вертикальная черта с горизонтальной чертой (⌅) + 'Barwed': ('\u2306', '⌆'), # Двойная вертикальная черта с горизонтальной чертой (⌆) + 'lceil': ('\u2308', '⌈'), # Потолок числа, левая скобка (⌈) + 'rceil': ('\u2309', '⌉'), # Потолок числа, правая скобка (⌉) + 'lfloor': ('\u230A', '⌊'), # Пол числа, левая скобка (⌊) + 'rfloor': ('\u230B', '⌋'), # Пол числа, правая скобка (⌋) + 'lang': ('\u2329', '⟨'), # Левая угловая скобка (〈) + 'rang': ('\u232A', '⟩'), # Правая угловая скобка (〉) } # Другие символы (пример для расширения) -KEY_AMP = 'AMP' SYMBOL_ENTITIES = { - KEY_AMP: ('\u0026', '&smp;'), #Амперсанд (&) - 'HELLIP': ('\u2026', '…'), # Многоточие - 'COPY': ('\u00A9', '©'), # Копирайт - # ... стрелочки, математические символы и т.д. по мере необходимости + 'copy': ('\u00A9', '©'), # Копирайт (©) + 'reg': ('\u00AE', '®'), # Зарегистрированный товарный знак (®) + 'trade': ('\u2122', '™'), # Знак торговой марки (™) + 'copysr': ('\u2117', '℗'), # Авторское право звукозаписи, продакшн (℗) + 'commat': ('\u0040', '@'), # Коммерческое at, `собака` (@) + 'Copf': ('\u2102', 'ℂ'), # Дважды начерченная заглавная С (ℂ) + 'incare': ('\u2105', '℅'), # Забота о (℅) + 'gscr': ('\u210A', 'ℊ'), # Каллиграфическая строчная g (ℊ) + 'hamilt': ('\u210B', 'ℋ'), # Каллиграфическая заглавная H (ℋ) + 'Hfr': ('\u210C', 'ℌ'), # Готическая заглавная H (ℌ) + 'Hopf': ('\u210D', 'ℍ'), # Дважды начерченная заглавная H (ℍ) + 'planckh': ('\u210E', 'ℎ'), # Постоянная Планка (ℎ) + 'planck': ('\u210F', 'ℏ'), # Постоянная Планка делённая на два пи, константа Дирака (ℏ) + 'Iscr': ('\u2110', 'ℐ'), # Каллиграфическая заглавная I (ℐ) + 'image': ('\u2111', 'ℑ'), # Готическая заглавная I (ℑ) + 'Lscr': ('\u2112', 'ℒ'), # Каллиграфическая заглавная L (ℒ) + 'ell': ('\u2113', 'ℓ'), # Каллиграфическая строчная l (ℓ) + 'Nopf': ('\u2115', 'ℕ'), # Дважды начерченная заглавная N (ℕ) + 'numero': ('\u2116', '№'), # Знак номера (№) + 'weierp': ('\u2118', '℘'), # Каллиграфическая заглавная P (℘) + 'Popf': ('\u2119', 'ℙ'), # Дважды начерченная заглавная P (ℙ) + 'Qopf': ('\u211A', 'ℚ'), # Дважды начерченная заглавная Q (ℚ) + 'Rscr': ('\u211B', 'ℛ'), # Каллиграфическая заглавная R (ℜ) + 'real': ('\u211C', 'ℜ'), # Готическая заглавная R (ℝ) + 'Ropf': ('\u211D', 'ℝ'), # Дважды начерченная заглавная R (ℝ) + 'rx': ('\u211E', '℞'), # Символ рецепта (℞) + 'Zopf': ('\u2124', 'ℤ'), # Дважды начерченная заглавная Z (ℤ) + 'mho': ('\u2127', '℧'), # Перевёрнутый знак ома (℧) + 'Zfr': ('\u2128', 'ℨ'), # Готическая заглавная Z (ℨ) + 'iiota': ('\u2129', '℩'), # Перевернутая греческая строчная буква йота (℩) + 'bernou': ('\u212C', 'ℬ'), # Каллиграфическая заглавная B (ℬ) + 'Cfr': ('\u212D', 'ℭ'), # Готическая заглавная C (ℭ) + 'escr': ('\u212F', 'ℯ'), # Каллиграфическая строчная буква e (ℯ) + 'Escr': ('\u2130', 'ℰ'), # Каллиграфическая заглавная E (ℰ) + 'Fscr': ('\u2131', 'ℱ'), # Каллиграфическая заглавная F (ℱ) + 'Mscr': ('\u2133', 'ℳ'), # Каллиграфическая заглавная M (ℳ) + 'oscr': ('\u2134', 'ℴ'), # Каллиграфическая строчная буква o (ℴ) + 'alefsym': ('\u2135', 'ℵ'), # Символ алеф (ℵ) + 'beth': ('\u2136', 'ℶ'), # Символ бет (ℶ) + 'gimel': ('\u2137', 'ℷ'), # Символ гимел (ℷ) + 'daleth': ('\u2138', 'ℸ'), # Символ далет (ℸ) + 'DD': ('\u2145', 'ⅅ'), # Дважды начерченная курсивная заглавная D (ⅅ) + 'dd': ('\u2146', 'ⅆ'), # Дважды начерченная курсивная строчная d (ⅆ) + 'ee': ('\u2147', 'ⅇ'), # Дважды начерченная курсивная строчная e (ⅇ) + 'ii': ('\u2148', 'ⅈ'), # Дважды начерченная курсивная строчная i (ⅈ) + 'ff': ('\u2149', '&ff;'), # Дважды начерченная курсивная строчная f (ⅉ) + 'ffilig': ('\uFB03', 'ffi'), # Лигатура "ffi" (ffi) + 'fflig': ('\uFB00', 'ff'), # Лигатура "ff" (ff) + 'filig': ('\uFB01', 'fi'), # Лигатура "fi" (fi) + 'fllig': ('\uFB02', 'fl'), # Лигатура "fl" (fl) + 'starf': ('\u2605', '★'), # Закрашенная звезда (★) + 'star': ('\u2606', '☆'), # Незакрашенная звезда (☆) + 'phone': ('\u260E', '☎'), # Значок телефона (☎) + 'female': ('\u2640', '♀'), # Венера (женский знак) (♀) + 'male': ('\u2642', '♂'), # Марс (мужской знак) (♂) + 'spades': ('\u2660', '♠'), # Пики закрашенные (♠) + 'clubs': ('\u2663', '♣'), # Трефы закрашенные (♣) + 'hearts': ('\u2665', '♥'), # Черви закрашенные (♥) + 'diams': ('\u2666','♦'), # Бубны закрашенные (♦) + 'loz': ('\u25CA', '◊'), # Ромб (◊) + 'sung': ('\u266A', '♪'), # Музыкальная восьмая нота (♪) + 'flat': ('\u266D', '♭'), # Музыкальный знак бемоль (♭) + 'natural': ('\u266E', '♮'), # Музыкальный знак бекар (♮) + 'sharp': ('\u266F', '♯'), # Музыкальный знак диез (♯) + 'check': ('\u2713', '✓'), # Галочка (✓) + 'cross': ('\u2717', '✗'), # Крестик (✗) + 'malt': ('\u2720', '✠'), # Мальтийский крест (✠) + 'sext': ('\u2736', '✶'), # Шестиконечная закрашенная звезда (✶) + 'VerticalSeparator': ('\u2758', '❘'), # Тонкая вертикальная черта (❘) + 'lbbrk': ('\u2772', '❲'), # Тонкая левая скобка панцерообразной формы (❲) + 'rbbrk': ('\u2773', '❳'), # Тонкая правая скобка панцерообразной формы (❳) } +# Знаки препинания +KEY_AMP = 'amp' +SYMBOL_PUNCTUATION = { + # 'excl': ('\u0021', '!'), # Восклицательный знак (!) + # 'num': ('\u0023', '#'), # Решётка (#) + # 'percnt': ('\u0025', '%'), # Знак процента (%) + KEY_AMP: ('\u0026', '&'), # Амперсанд (&) + # 'lpar': ('\u0028', '('), # Левая круглая скобка (() + # 'rpar': ('\u0029', ')'), # Правая круглая скобка ()) + #'ast': ('\u002A', '*'), # Звёздочка (*) + #'comma': ('\u002C', ','), # Запятая (,) + # 'period': ('\u002E', '.'), # Точка (.) + #'sol': ('\u002F', '/'), # Косая черта (/) + # 'colon': ('\u003A', ':'), # Двоеточие (:) + # 'semi': ('\u003B', ';'), # Точка с запятой (;) + # 'quest': ('\u003F', '?'), # Знак вопроса (?) + # 'lbrack': ('\u005B', '['), # Левая квадратная скобка ([) + # 'bsol': ('\u005C', '\'), # Обратная косая черта (\) + # 'rbrack': ('\u005D', ']'), # Правая квадратная скобка (]) + # 'Hat': ('\u005E', '^'), # Циркумфлекс (^) -- знак вставки, карет + # 'lowbar': ('\u005F', '_'), # Нижнее подчёркивание (_) + # 'grave': ('\u0060', '`'), # Гравис, Апостроф (обратная кавычка) (`) + # 'lbrace': ('\u007B', '{'), # Левая фигурная скобка ({) + # 'vert': ('\u007C', '|'), # Вертикальная черта (|) + # 'rbrace': ('\u007D', '}'), # Правая фигурная скобка (}) + # 'tilde': ('\u007E', '˜'), # Тильда (~) + 'circ': ('\u02C6', 'ˆ'), # Модификатор буквы циркумфлекс, ударение (ˆ) + 'lrm': ('\u200E', '‎'), # Метка слева направо (Left-to-Right Mark) + 'rlm': ('\u200F', '‏'), # Метка справа налево (Right-to-Left Mark) + 'iexcl': ('\u00A1', '¡'), # Перевернутый восклицательный знак (¡) + 'brvbar': ('\u00A6', '¦'), # Изломанная вертикальная черта (¦) + 'sect': ('\u00A7', '§'), # Знак параграфа (§) + 'uml': ('\u00A8', '¨'), # Диэрезис (¨) + 'ordf': ('\u00AA', 'ª'), # Женский порядковый индикатор (ª) + 'not': ('\u00AC', '¬'), # Знак отрицания (¬) + 'macr': ('\u00AF', '¯'), # Макрон (¯) + 'acute': ('\u00B4', '´'), # Знак ударения (´) + 'micro': ('\u00B5', 'µ'), # Знак микро (µ) + 'para': ('\u00B6', '¶'), # Знак абзаца (¶) + 'middot': ('\u00B7', '·'), # Точка по центру (·) + 'cedil': ('\u00B8', '¸'), # Седиль (¸) + 'ordm': ('\u00BA', 'º'), # Мужской порядковый индикатор (º) + 'iquest': ('\u00BF', '¿'), # Перевернутый вопросительный знак (¿) + 'Vert': ('\u2016', '‖'), # Двойная вертикальная черта (‖) + 'dagger': ('\u2020', '†'), # Крестик (†) + 'Dagger': ('\u2021', '‡'), # Двойной крестик (‡) + 'bull': ('\u2022', '•'), # Маркер списка (•) + 'nldr': ('\u2025', '‥'), # Двухточечный пунктир (‥) + 'hellip': ('\u2026', '…'), # Многоточие (…) + 'permil': ('\u2030', '‰'), # Знак промилле (‰) + 'pertenk': ('\u2031', '‱'), # Знак на десять тысяч (‱) + 'prime': ('\u2032', '′'), # Знак штриха (одинарная минута) (′) + 'Prime': ('\u2033', '″'), # Двойной штрих (двойная минута) (″) + 'tprime': ('\u2034', '‴'), # Тройной штрих (тройная минута) (‴) + 'bprime': ('\u2035', '‵'), # Обратный штрих (обратная минута) (‵) + 'oline': ('\u203E', '‾'), # Надчёркивание (длинная черта над текстом) (‾) + 'caret': ('\u2041', '⁁'), # Знак вставки точки ввода (⁁) + 'hybull': ('\u2043', '⁃'), # Маркер списка дефис (⁃) + 'frasl': ('\u2044', '⁄'), # Дробная наклонная черта (Fraction Slash) (⁄) + 'bsemi': ('\u204F', '⁏'), # Инвертированная точка с запятой (⁏) + 'qprime': ('\u2057', '⁗'), # Четырехкратный штрих (⁗) +} + +# Дробные символы и знаки +SYMBOL_FRACTIONS = { + 'frac12': ('\u00BD', '½'), # Обычная дробь 1/2 (½) + 'frac13': ('\u2153', '⅓'), # Обычная дробь 1/3 (⅓) + 'frac14': ('\u00BC', '¼'), # Обычная дробь 1/4 (¼) + 'frac15': ('\u2155', '⅕'), # Обычная дробь 1/5 (⅕) + 'frac16': ('\u2159', '⅙'), # Обычная дробь 1/6 (⅙) + 'frac17': ('\u215A', '&frac17;'), # Обычная дробь 1/7 (⅐) + 'frac18': ('\u215B', '⅛'), # Обычная дробь 1/8 (⅛) + 'frac19': ('\u215C', '&frac19;'), # Обычная дробь 1/9 (⅑) + 'frac110': ('\u215D', '&frac110;'), # Обычная дробь 1/10 (⅒) + 'frac23': ('\u2154', '⅔'), # Обычная дробь 2/3 (⅔) + 'frac25': ('\u2156', '⅖'), # Обычная дробь 2/5 (⅖) + 'frac34': ('\u00BE', '¾'), # Обычная дробь 3/4 (¾) + 'frac35': ('\u2157', '⅗'), # Обычная дробь 3/5 (⅗) + 'frac38': ('\u215A', '⅜'), # Обычная дробь 3/8 (⅜) + 'frac45': ('\u2158', '⅘'), # Обычная дробь 4/5 (⅘) + 'frac56': ('\u215A', '⅚'), # Обычная дробь 5/6 (⅚) + 'frac58': ('\u215B', '⅝'), # Обычная дробь 5/8 (⅝) + 'frac78': ('\u215B', '⅞'), # Обычная дробь 7/8 (⅞) +} + + # --- Сборка и валидация --- # 1. Создаем единый словарь всех сущностей для удобного доступа ALL_ENTITIES = { **SHY_ENTITIES, **SPACE_ENTITIES, **DASH_ENTITIES, **MATH_ENTITIES, - **QUOTE_ENTITIES, **CURRENCY_ENTITIES, **SYMBOL_ENTITIES + **QUOTE_ENTITIES, **CURRENCY_ENTITIES, **SYMBOL_ENTITIES, **SYMBOL_PUNCTUATION, **SYMBOL_FRACTIONS } # Сущности, которые ВСЕГДА должны выводиться как мнемоники в режиме MODE_MIXED