mod: ++++приоритеты и тесты html-мнемоник для decode_to_unicode()

This commit is contained in:
2025-08-08 18:16:35 +03:00
parent 679c9770f0
commit a16d4f7416
2 changed files with 507 additions and 146 deletions

View File

@@ -58,11 +58,11 @@ SAFE_MODE_CHARS_TO_MNEMONIC = frozenset([
'\u200D', # Нулевая ширина (с объединением) (Zero Width Joiner) -- ‌
'\u200E', # Изменить направление текста на слева-направо (Left-to-Right Mark /LRE) -- ‎
'\u200F', # Изменить направление текста направо-налево (Right-to-Left Mark /RLM) -- ‏
'\u2010', # ‐ -- дефис (Hyphen)
'\u205F', # Средний пробел (Medium Mathematical Space) --  
'\u2060', # ⁠
'\u2062', # ⁢
'\u2063', # ⁣
'\u2062', # ⁢ -- для семантической разметки математических выражений
'\u2063', # ⁣ -- для семантической разметки математических выражений
])
# 3. СПИСОК ДЛЯ ЧИСЛОВОГО КОДИРОВАНИЯ: Символы без стандартного имени.
@@ -84,35 +84,385 @@ ALWAYS_ENCODE_TO_NUMERIC_CHARS = frozenset([
#
# Также можно использовать для создания исключений из "черного списка" NEVER_ENCODE_CHARS.
CUSTOM_ENCODE_MAP = {
'\u2010': '‐', # Для \u2010 всегда предпочитаем ‐, а не ‐
# Исключения для букв, которые есть в алфавитах, но должны кодироваться (для обеспечения консистентности):
# 'Æ': 'Æ',
# 'Œ': 'Œ',
# 'æ': 'æ',
# 'œ': 'œ',
'\u3253': 'ℵ', # / &alefsym / ℵ
'&': '&', # & / & / &
'\u2220': '∠', # / ∠ / ∠
# '\u2010': '‐', # Для \u2010 всегда предпочитаем ‐, а не ‐
# # Исключения для букв, которые есть в алфавитах, но должны кодироваться (для обеспечения консистентности):
# # 'Æ': 'Æ',
# # 'Œ': 'Œ',
# # 'æ': 'æ',
# # 'œ': 'œ',
# '\u002a': '*', # * / * / *
# '\u005b': '[', # [ / [ / [
# '\u005d': ']', # ] / ] / ]
# '\u005f': '_', # _ / _ / _
# '\u007b': '{', # { / { / {
# '\u007d': '}', # } / } / }
# '\u007c': '|', # | / | / | / |
# '\u0026': '&', # & / & / &
'\u0026': '&', # & / & / &
'\u003e': '>', # > / > / >
'\u00ae': '®', # ® / ® / ® / ®
'\u00b7': '·', # · / · / · / ·
'\u0060': '`', # ` / grave / DiacriticalGrave
'\u00a8': '¨', # ¨ / ¨ / ¨ / ¨
'\u00b1': '±', # ± / pm / PlusMinus
'\u00bd': '½', # ½ / ½ / ½
'\u223e': '∾', # ∾ / ∾ / ∾
'\u2207': '∇', # ∇ / ∇ / ∇
'\u2061': '⁡', # / ⁡ / ⁡
'\u2248': '≈', # / ≈ / ≈ / ≈ / ≈ / ≈ / ≈
'\u00c5': 'Å', # Å / Å / Å /
'\u224a': '≊', # ≊ / ≊ / &≊
'\u2305': '⌅', # / ⌅ / ⌅
'\u2235': '∵', # / ∵ / ∵ / ∵
'\u224c': '≌', # / ≌ / ≌
'\u03f6': '϶', # ϶ / ϶ / ϶
'\u212c': 'ℬ', # / ℬ / ℬ / ℬ
'\u22a5': '⊥', # / ⊥ / ⊥ / ⊥ / ⊥
'\u2035': '‵', # / ‵ / ‵
'\u02d8': '˘', # ˘ / ˘ / ˘
'\u223d': '∽', # ∽ / ∽ / ∽
'\u22cd': '⋍', # / ⋍ / ⋍
'\u2022': '•', # / • / •
'\u224e': '≎', # / ≎ / ≎ / &HumpDownHumpl;
'\u2221': '∡', # / ∡ / ∡
'\u2248': '≈', # / ≈ / ≈ / ≈ / ≈ / ≈
'\u224a': '≊', # ≊ / ≊ / ≊
'\u2254': '≔', # / ≔ / ≔ / ≔
'\u224d': '≍', # / ≍ / ≍
'\u2233': '∳', # / awconint / CounterClockwiseContourIntegral
'\u224c': '≌', # / bcong / backcong
'\u03f6': '϶', # ϶ / bepsi / backepsilon
'\u2035': '‵', # / bprime / backprime
'\u223d': '∽', # / bsim / backsim
'\u22cd': '⋍', # / bsime / backsimeq
'\u2216': '∖', # / ∖ / ∖ / ∖ / ∖ / ∖
'\u2306': '⌆', # / Barwed / doublebarwedge
'\u2305': '⌅', # / barwed / barwedge
'\u23b5': '⎵', # / bbrk / UnderBracket
'\u2235': '∵', # ∵ / becaus / because / Because
'\u212c': 'ℬ', # / Bscr / bernou / Bernoullis
'\u226c': '≬', # ≬ / ≬ / ≬
'\u22c2': '⋂', # ⋂ / ⋂ / ⋂ / ⋂
'\u25ef': '◯', # ◯ / ◯ / ◯
'\u22c3': '⋃', # / ⋃ / ⋃ / ⋃
'\u2a00': '⨀', # ⨀ / ⨀ / ⨀
'\u2a01': '⨁', # ⨁ / ⨁ / ⨁
'\u2a02': '⨂', # ⨂ / ⨂ / ⨂
'\u2a06': '⨆', # ⨆ / ⨆ / ⨆
'\u2605': '★', # ★ / ★ / ★
'\u25bd': '▽', # ▽ / ▽ / ▽
'\u25b3': '△', # △ / △ / △
'\u2a04': '⨄', # ⨄ / ⨄ / ⨄
'\u22c1': '⋁', # / ⋁ / ⋁ / ⋁
'\u22c0': '⋀', # ⋀ / Wedge / ⋀ / $bigwedge;
'\u290d': '⤍', # ⤍ / rbarr / bkarow
'\u29eb': '⧫', # ⧫ / ⧫ / ⧫
'\u25aa': '▪', # ▪ / ▪ / ▪ / ▪ / ▪
'\u25b4': '▴', # ▴ / ▴ / ▴
'\u25be': '▾', # ▾ / ▾ / ▾
'\u25c2': '◂', # ◂ / ◂ / ◂
'\u25b8': '▸', # ▸ / ▸ / ▸
'\u22a5': '⊥', # ⊥ / ⊥ / ⊥ / ⊥ / ⊥
'\u2500': '─', # ─ / ─ / ─
'\u229f': '⊟', # ⊟ / ⊟ / ⊟
'\u229e': '⊞', # ⊞ / ⊞ / ⊞
'\u22a0': '⊠', # ⊠ / ⊠ / ⊠
'\u02d8': '˘', # ˘ / breve / Breve
'\u224e': '≎', # ≎ / ≎ / ≎ / ≎
'\u224f': '≏', # ≏ / ≏ / ≏ / ≏
'\u00b8': '¸', # ¸ / ¸ / ¸
'\u00b7': '·', # · / · / · / ·
'\u212d': 'ℭ', # / ℭ / ℭ
'\u2145': 'ⅅ', # / ⅅ / ⅅ
'\u02c7': 'ˇ', # ˇ / ˇ / ˇ
'\u212d': 'ℭ', # / Cfr / Cayleys
'\u2713': '✓', # ✓ / check / checkmark
'\u2257': '≗', # ≗ / cire / circeq
'\u21ba': '↺', # ↺ / olarr / circlearrowleft
'\u21bb': '↻', # ↻ / orarr / circlearrowright
'\u229b': '⊛', # ⊛ / ⊛ / ⊛
'\u229a': '⊚', # ⊚ / ⊚ / ⊚
'\u229d': '⊝', # ⊝ / ⊝ / ⊝
'\u2299': '⊙', # ⊙ / odot / CircleDot
'\u2200': '∀', # ∀ / ∀ / ∀
'\u24c8': 'Ⓢ', # Ⓢ / Ⓢ / Ⓢ
'\u2296': '⊖', # ⊖ / ⊖ / ⊖
'\u2232': '∲', # ∲ / cwconint / ClockwiseContourIntegral
'\u201d': '”', # ” / ” / rdquor / CloseCurlyDoubleQuote
'\u2019': '’', # / ’ / rsquor / CloseCurlyQuote
'\u2237': '∷', # ∷ / Colon / Proportion
'\u2201': '∁', # ∁ / comp / complement
'\u2218': '∘', # ∘ / compfn / SmallCircle
'\u2102': 'ℂ', # / Copf / complexes
'\u222f': '∯', # ∯ / Conint / DoubleContourIntegral
'\u222e': '∮', # ∮ / oint / conint / ContourIntegral
'\u2210': '∐', # ∐ / coprod / Coproduct
'\u22de': '⋞', # ⋞ / cuepr / curlyeqprec
'\u22df': '⋟', # ⋟ / cuesc / curlyeqsucc
'\u21b6': '↶', # ↶ / cularr / curvearrowleft
'\u21b7': '↷', # ↷ / curarr / curvearrowright
'\u22ce': '⋎', # ⋎ / cuvee / curlyvee
'\u22cf': '⋏', # ⋏ / cuwed / curlywedge
'\u2010': '‐', # / ‐ / ‐
'\u2ae4': '⫤', # ⫤ / Dashv / DoubleLeftTee
'\u22a3': '⊣', # ⊣ / dashv / LeftTee
'\u290f': '⤏', # ⤏ / ⤏ / ⤏
'\u02dd': '˝', # ˝ / dblac / DiacriticalDoubleAcute
'\u2146': 'ⅆ', # / dd / DifferentialD
'\u21ca': '⇊', # ⇊ / ddarr / downdownarrows
'\u2a77': '⩷', # ⩷ / eDDot / ddotseq
'\u21c3': '⇃', # ⇃ / ⇃ / ⇃ / ⇃
'\u21c2': '⇂', # ⇂ / dharr / RightDownVector / downharpoonright
'\u02d9': '˙', # ˙ / dot / DiacriticalDot
'\u222b': '∫', # ∫ / ∫ / ∫
'\u22c4': '⋄', # ⋄ / diam / diamond / Diamond
'\u03b5': 'ε', # ε / ε / ε
'\u03dd': 'ϝ', # ϝ / gammad / digamma
'\u22c7': '⋇', # ⋇ / divonx / divideontimes
'\u231e': '⌞', # ⌞ / dlcorn / llcorner
'\u2250': '≐', # ≐ / esdot / doteq / DotEqual
'\u2251': '≑', # ≑ / eDot / doteqdot
'\u2238': '∸', # ∸ / minusd / dotminus
'\u2214': '∔', # ∔ / plusdo / dotplus
'\u22a1': '⊡', # ⊡ / sdotb / dotsquare
'\u21d3': '⇓', # ⇓ / ⇓ / ⇓ / ⇓
'\u21d0': '⇐', # ⇐ / ⇐ / ⇐ / ⇐
'\u21d4': '⇔', # ⇔ / ⇔ / ⇔ / ⇔ / ⇔
'\u27f8': '⟸', # ⟸ / xlArr / Longleftarrow / DoubleLongLeftArrow
'\u27fa': '⟺', # ⟺ / xhArr / Longleftrightarrow / DoubleLongLeftRightArrow
'\u27f9': '⟹', # ⟹ / xrArr / Longrightarrow / DoubleLongRightArrow
'\u21d2': '⇒', # ⇒ / ⇒ / ⇒ / ⇒ / ⇒
'\u22a8': '⊨', # ⊨ / vDash / DoubleRightTee
'\u21d1': '⇑', # ⇑ / ⇑ / ⇑ / ⇑
'\u21d5': '⇕', # ⇕ / vArr / Updownarrow / DoubleUpDownArrow
'\u2225': '∥', # ∥ / par / spar / parallel / shortparallel / DoubleVerticalBar
'\u2191': '↑', # ↑ / ↑ / ↑ / ↑
'\u2193': '↓', # ↓ / ↓ / ↓ / ↓ / ↓
'\u21f5': '⇵', # ⇵ / ⇵ / ⇵
'\u21bd': '↽', # ↽ / ↽ /↽ / ↽
'\u21c1': '⇁', # ⇁ / ⇁ / ⇁ / ⇁
'\u22a4': '⊤', # / ⊤ / ⊤
'\u21a7': '↧', # ↧ / ↧ / ↧
'\u2910': '⤐', # ⤐ / ⤐ / ⤐
'\u231f': '⌟', # ⌟ / ⌟ / ⌟
'\u25bf': '▿', # ▿ / ▿ / ▿
'\u296f': '⥯', # ⥯ / duhar / ReverseUpEquilibrium
'\u2256': '≖', # ≖ / ≖ / ≖
'\u2255': '≕', # ≕ / ecolon / eqcolon
'\u2147': 'ⅇ', # / ⅇ / ⅇ / ⅇ
'\u2252': '≒', # ≒ / ≒ / ≒
'\u2a96': '⪖', # ⪖ / ⪖ / ⪖
'\u2208': '∈', # ∈ / ∈ / ∈ / ∈ / ∈
'\u2a95': '⪕', # ⪕ / ⪕ / ⪕
'\u2205': '∅', # ∅ / ∅ / ∅ / ∅ / ∅
'\u03f5': 'ϵ', # ϵ / epsiv / varepsilon / straightepsilon
'\u2242': '≂', # ≂ / ≂ / ≂ / ≂
'\u225f': '≟', # ≟ / equest / questeq
'\u21cc': '⇌', # ⇌ / ⇌ / ⇌ / ⇌
'\u2253': '≓', # ≓ / erDot / risingdotseq
'\u2130': 'ℰ', # / ℰ / ℰ
'\u22d4': '⋔', # ⋔ / fork / pitchfork
'\u2131': 'ℱ', # / ℱ / ℱ
'\u2322': '⌢', # ⌢ / frown / sfrown
'\u2a86': '⪆', # ⪆ / ⪆ / ⪆
'\u2267': '≧', # ≧ / ≧ / ≧ / ≧
'\u2a8c': '⪌', # ⪌ / ⪌ / ⪌
'\u22db': '⋛', # ⋛ / ⋛ / ⋛ / ⋛
'\u2265': '≥', # ≥ / ≥ / ≥ / ≥
'\u2a7e': '⩾', # ⩾ / ⩾ / ⩾ / ⩾
'\u22d9': '⋙', # ⋙ / ⋙ / ⋙
'\u226b': '≫', # ≫ / &gg ;/ ≫ / ≫
'\u2277': '≷', # ≷ / ≷ / ≷ / ≷
'\u2a8a': '⪊', # ⪊ / ⪊ / ⪊
'\u2269': '≩', # ≩ / ≩ / ≩
'\u2a88': '⪈', # ⪈ / ⪈ / ⪈
'\u2273': '≳', # ≳ / ≳ / ≳ / ≳
'\u22d7': '⋗', # ⋗ / ⋗ / ⋗
'\u200a': ' ', # /   /  
'\u210b': 'ℋ', # / ℋ / ℋ / ℋ
'\u21ad': '↭', # ↭ / harrw / leftrightsquigarrow
'\u210f': 'ℏ', # ℏ / ℏ / ℏ / ℏ / ℏ
'\u210c': 'ℌ', # / Hfr / Poincareplane
'\u2925': '⤥', # ⤥ / ⤥ / ⤥
'\u2926': '⤦', # ⤦ / ⤦ / ⤦
'\u21a9': '↩', # ↩ / ↩ / ↩
'\u21aa': '↪', # ↪ / ↪ / ↪
'\u210d': 'ℍ', # / Hopf / quaternions
'\u2063': '⁣', # / ⁣ / ⁣
'\u2111': 'ℑ', # / ℑ / ℑ / ℑ / ℑ
'\u2148': 'ⅈ', # / ⅈ / ⅈ
'\u2a0c': '⨌', # ⨌ / ⨌ / ⨌
'\u222d': '∭', # ∭ / ∭ / ∭
'\u2110': 'ℐ', # / ℐ / ℐ
'\u0131': 'ı', # ı / ı / ı
'\u22ba': '⊺', # ⊺ / ⊺ / ⊺
'\u2124': 'ℤ', # / ℤ / ℤ
'\u2a3c': '⨼', # ⨼ / ⨼ / ⨼
'\u2062': '⁢', # / ⁢ / ⁢
'\u03f0': 'ϰ', # ϰ / kappav / varkappa
'\u21da': '⇚', # ⇚ / lAarr / Lleftarrow
'\u2112': 'ℒ', # / ℒ / ℒ / ℒ
'\u27e8': '⟨', # ⟨ / ⟨ / ⟨ / ⟨
'\u2a85': '⪅', # ⪅ / lap / lessapprox
'\u219e': '↞', # ↞ / Larr / twoheadleftarrow
'\u21e4': '⇤', # ⇤ / ⇤ / ⇤
'\u21ab': '↫', # ↫ / larrlp / looparrowleft
'\u21a2': '↢', # ↢ / ↢ / ↢
'\u2266': '≦', # ≦ / lE / leqq / LessFullEqual
'\u2190': '←', # ← / ← / ← / ← / ← / ←
'\u21c6': '⇆', # ⇆ / ⇆ / ⇆ / ⇆
'\u27e6': '⟦', # ⟦ / ⟦ / ⟦
'\u21bc': '↼', # ↼ / ↼ / ↼ / ↼
'\u21c7': '⇇', # ⇇ / ⇇ / ⇇
'\u2194': '↔', # ↔ / ↔ / ↔ / ↔
'\u21cb': '⇋', # ⇋ / lrhar / leftrightharpoons / ReverseEquilibrium
'\u21a4': '↤', # ↤ / mapstoleft / LeftTeeArrow
'\u22cb': '⋋', # ⋋ / lthree / leftthreetimes
'\u22b2': '⊲', # ⊲ / vltri / LeftTriangle / vartriangleleft
'\u22b4': '⊴', # ⊴ / ltrie / trianglelefteq / LeftTriangleEqual
'\u21bf': '↿', # ↿ / uharl / LeftUpVector / upharpoonleft
'\u2308': '⌈', # ⌈ / ⌈ / ⌈
'\u230a': '⌊', # ⌊ / ⌊ / ⌊
'\u2a8b': '⪋', # ⪋ / lEg / lesseqqgtr
'\u22da': '⋚', # ⋚ / leg / lesseqgtr / LessEqualGreater
'\u2a7d': '⩽', # ⩽ / les / leqslant / LessSlantEqual
'\u22d6': '⋖', # ⋖ / ltdot / lessdot
'\u2276': '≶', # ≶ / lg / lessgtr / LessGreater
'\u2272': '≲', # ≲ / lsim / lesssim / LessTilde
'\u226a': '≪', # ≪ / ll / Lt / NestedLessLess
'\u23b0': '⎰', # ⎰ / lmoust / lmoustache
'\u2a89': '⪉', # ⪉ / lnap / lnapprox
'\u2268': '≨', # ≨ / lnE / lneqq
'\u2a87': '⪇', # ⪇ / lne / lneq
'\u27f5': '⟵', # ⟵ / xlarr / longleftarrow / LongLeftArrow
'\u27f7': '⟷', # ⟷ / xharr / longleftrightarrow / LongLeftRightArrow
'\u27fc': '⟼', # ⟼ / xmap / longmapsto
'\u27f6': '⟶', # ⟶ / xrarr / LongRightArrow / longrightarrow
'\u21ac': '↬', # ↬ / rarrlp / looparrowright
'\u201e': '„', # „ / „ / „
'\u2199': '↙', # ↙ / swarr / swarrow / LowerLeftArrow
'\u2198': '↘', # ↘ / searr / searrow / LowerRightArrow
'\u21b0': '↰', # ↰ / Lsh / lsh
'\u25c3': '◃', # ◃ / ltri / triangleleft
'\u2720': '✠', # ✠ / malt / maltese
'\u21a6': '↦', # ↦ / map / mapsto / RightTeeArrow
'\u21a5': '↥', # ↥ / mapstoup / UpTeeArrow
'\u2133': 'ℳ', # / Mscr / phmmat / Mellintrf
'\u2223': '∣', # / mid / smid / shortmid / VerticalBar
'\u2213': '∓', # ∓ / mp / mnplus / MinusPlus
'\u22b8': '⊸', # ⊸ / mumap / multimap
'\u2249': '≉', # ≉ / nap / napprox / NotTildeTilde
'\u266e': '♮', # ♮ / natur / natural
'\u2115': 'ℕ', # / Nopf / naturals
'\u2247': '≇', # ≇ / ncong / NotTildeFullEqual
'\u2197': '↗', # ↗ / nearr / nearrow / UpperRightArrow
'\u200b': '​', # / ZeroWidthSpace / NegativeThinSpace / NegativeThickSpace / NegativeMediumSpace / NegativeVeryThinSpace
'\u2262': '≢', # ≢ / nequiv / NotCongruent
'\u2928': '⤨', # ⤨ / toea / nesear
'\u2203': '∃', # ∃ / ∃ / ∃
'\u2204': '∄', # ∄ / nexist / nexists / NotExists
'\u2271': '≱', # ≱ / nge / ngeq / NotGreaterEqual
'\u2275': '≵', # ≵ / ngsim / NotGreaterTilde
'\u226f': '≯', # ≯ / ngt / ngtr / NotGreater
'\u21ce': '⇎', # ⇎ / nhArr / nLeftrightarrow
'\u21ae': '↮', # ↮ / nharr / nleftrightarrow
'\u220b': '∋', # ∋ / ∋ / ∋ / ∋ / ∋
'\u21cd': '⇍', # ⇍ / nlArr / nLeftarrow
'\u219a': '↚', # ↚ / nlarr / nleftarrow
'\u2270': '≰', # ≰ / nle / nleq / NotLessEqual
'\u226e': '≮', # ≮ / nlt / nless / NotLess
'\u2274': '≴', # ≴ / nlsim / NotLessTilde
'\u22ea': '⋪', # ⋪ / nltri / ntriangleleft / NotLeftTriangle
'\u22ec': '⋬', # ⋬ / nltrie / ntrianglelefteq / NotLeftTriangleEqual
'\u2224': '∤', # ∤ / nmid / nsmid / nshortmid / NotVerticalBar
'\u2226': '∦', # ∦ / npar / nspar / nparallel / nshortparallel / NotDoubleVerticalBar
'\u2209': '∉', # ∉ / ∉ / ∉ / ∉
'\u2279': '≹', # ≹ / ntgl / NotGreaterLess
'\u2278': '≸', # ≸ / ntlg / NotLessGreater
'\u220c': '∌', # ∌ / notni / notniva / NotReverseElement
'\u2280': '⊀', # ⊀ / npr / nprec / NotPrecedes
'\u22e0': '⋠', # ⋠ / nprcue / NotPrecedesSlantEqual
'\u22eb': '⋫', # ⋫ / nrtri / ntriangleright / NotRightTriangle
'\u22ed': '⋭', # ⋭ / nrtrie / ntrianglerighteq / NotRightTriangleEqual
'\u22e2': '⋢', # ⋢ / nsqsube / NotSquareSubsetEqual
'\u22e3': '⋣', # ⋣ / nsqsupe / NotSquareSupersetEqual
'\u2288': '⊈', # ⊈ / nsube / nsubseteq / NotSubsetEqual
'\u2281': '⊁', # ⊁ / nsc / nsucc / NotSucceeds
'\u22e1': '⋡', # ⋡ / nsccue / NotSucceedsSlantEqual
'\u2289': '⊉', # ⊉ / nsupe / nsupseteq / NotSupersetEqual
'\u2241': '≁', # ≁ / nsim / NotTilde
'\u2244': '≄', # ≄ / nsime / nsimeq / NotTildeEqual
'\u21cf': '⇏', # ⇏ / nrArr / nRightarrow
'\u219b': '↛', # ↛ / nrarr / nrightarrow
'\u2196': '↖', # ↖ / nwarr / nwarrow / UpperLeftArrow
'\u2134': 'ℴ', # / oscr / order / orderof
'\u23b4': '⎴', # ⎴ / tbrk / OverBracket
'\u03d5': 'ϕ', # ϕ / phiv / varphi / straightphi
'\u2665': '♥', # ♥ / ♥ / ♥ /
'\u2119': 'ℙ', # / Popf / primes
'\u227a': '≺', # ≺ / pr / prec / Precedes
'\u2ab7': '⪷', # ⪷ / prap / precapprox
'\u227c': '≼', # ≼ / prcue / preccurlyeq / PrecedesSlantEqual
'\u2aaf': '⪯', # ⪯ / pre / preceq / PrecedesEqual
'\u227e': '≾', # ≾ / prsim / precsim / PrecedesTilde
'\u2ab9': '⪹', # ⪹ / prnap / precnapprox
'\u2ab5': '⪵', # ⪵ / prnE / precneqq
'\u22e8': '⋨', # ⋨ / prnsim / precnsim
'\u221d': '∝', # ∝ / ∝ / ∝ / ∝ / ∝ / ∝
'\u211a': 'ℚ', # / Qopf / rationals
'\u21db': '⇛', # ⇛ / rAarr / Rrightarrow
'\u27e9': '⟩', # ⟩ / ⟩ / ⟩ / ⟩
'\u21a0': '↠', # ↠ / Rarr / twoheadrightarrow
'\u21e5': '⇥', # ⇥ / rarrb / RightArrowBar
'\u21a3': '↣', # ↣ / rarrtl / rightarrowtail
'\u219d': '↝', # ↝ / rarrw / rightsquigarrow
'\u211c': 'ℜ', # / ℜ / ℜ / ℜ / ℜ
'\u211b': 'ℛ', # / Rscr / realine
'\u211d': 'ℝ', # / Ropf / reals
'\u21c0': '⇀', # ⇀ / rharu / RightVector / rightharpoonup
'\u03f1': 'ϱ', # ϱ / rhov / varrho
'\u2192': '→', # → / → / → / → / → / →
'\u21c4': '⇄', # ⇄ / rlarr / rightleftarrows / RightArrowLeftArrow
'\u27e7': '⟧', # ⟧ / robrk / RightDoubleBracket
'\u21c9': '⇉', # ⇉ / rrarr / rightrightarrows
'\u22a2': '⊢', # ⊢ / vdash / RightTee
'\u22cc': '⋌', # ⋌ / rthree / rightthreetimes
'\u22b3': '⊳', # ⊳ / vrtri / RightTriangle / vartriangleright
'\u22b5': '⊵', # ⊵ / rtrie / trianglerighteq / RightTriangleEqual
'\u21be': '↾', # ↾ / uharr / RightUpVector / upharpoonright
'\u23b1': '⎱', # ⎱ / rmoust / rmoustache
'\u21b1': '↱', # ↱ / rsh / Rsh
'\u25b9': '▹', # ▹ / rtri / triangleright
'\u227b': '≻', # ≻ / sc / succ / Succeeds
'\u2ab8': '⪸', # ⪸ / scap / succapprox
'\u227d': '≽', # ≽ / sccue / succcurlyeq / SucceedsSlantEqual
'\u2ab0': '⪰', # ⪰ / sce / succeq / SucceedsEqual
'\u2aba': '⪺', # ⪺ / scnap / succnapprox
'\u2ab6': '⪶', # ⪶ / scnE / succneqq
'\u22e9': '⋩', # ⋩ / scnsim / succnsim
'\u227f': '≿', # ≿ / scsim / succsim / SucceedsTilde
'\u2929': '⤩', # ⤩ / tosa / seswar
'\u03c2': 'ς', # ς / ς / ς / ς
'\u2243': '≃', # ≃ / sime / simeq / TildeEqual
'\u2323': '⌣', # ⌣ / smile / ssmile
'\u2293': '⊓', # ⊓ / sqcap / SquareIntersection
'\u2294': '⊔', # ⊔ / sqcup / SquareUnion
'\u228f': '⊏', # ⊏ / sqsub / sqsubset / SquareSubset
'\u2291': '⊑', # ⊑ / sqsube / sqsubseteq / SquareSubsetEqual
'\u2290': '⊐', # ⊐ / sqsup / sqsupset / SquareSuperset
'\u2292': '⊒', # ⊒ / sqsupe / sqsupseteq / SquareSupersetEqual
'\u25a1': '□', # □ / squ / Square / square
'\u22c6': '⋆', # ⋆ / Star / sstarf
'\u22d0': '⋐', # ⋐ / Sub / Subset
'\u2ac5': '⫅', # ⫅ / subE / subseteqq
'\u2acb': '⫋', # ⫋ / subnE / subsetneqq
'\u228a': '⊊', # ⊊ / subne / subsetneq
'\u2286': '⊆', # ⊆ / ⊆ / ⊆ / ⊆
'\u22d1': '⋑', # ⋑ / Sup / Supset
'\u2ac6': '⫆', # ⫆ / supE / supseteqq
'\u2283': '⊃', # ⊃ / ⊃ / ⊃ / ⊃
'\u2287': '⊇', # ⊇ / ⊇ / ⊇ / ⊇
'\u2acc': '⫌', # ⫌ / supnE / supsetneqq
'\u228b': '⊋', # ⊋ / supne / supsetneq
'\u20db': '⃛', # ⃛ / tdot / TripleDot
'\u2234': '∴', # ∴ / ∴ / ∴ / ∴
'\u03d1': 'ϑ', # ϑ / ϑ / ϑ / ϑ
'\u25b5': '▵', # ▵ / utri / triangle
'\u225c': '≜', # ≜ / trie / triangleq
'\u21c5': '⇅', # ⇅ / udarr / UpArrowDownArrow
'\u296e': '⥮', # ⥮ / udhar / UpEquilibrium
'\u231c': '⌜', # ⌜ / ulcorn / ulcorner
'\u228e': '⊎', # ⊎ / uplus / UnionPlus
'\u2195': '↕', # ↕ / varr / updownarrow / UpDownArrow
'\u21c8': '⇈', # ⇈ / uuarr / upuparrows
'\u231d': '⌝', # ⌝ / urcorn / urcorner
'\u2016': '‖', # ‖ / Vert / Verbar
'\u2240': '≀', # ≀ / wr / wreath / VerticalTilde
'\u2128': 'ℨ', # / Zfr / zeetrf
}
# === Динамическая генерация карт преобразования ===

View File

@@ -42,9 +42,9 @@ STRINGS_FOR_DECODE = [
("ο ⊕ ∨ ª º ø õ ⊗ ö", "ο ª º ø õ ⊗ ö"),
("¶ ∂ ‰ ⊥ φ π ϖ ± £ ′ ∏", "¶ ∂ ‰ ⊥ φ π ϖ ± £ "),
("∝ ψ " ⇒ √ ⟩ » → ⌉ ”", "∝ ψ \" ⇒ √ ⟩ » → ⌉ ”"),
("ℜ ® ⌋ ρ ‏ › ’ ‚ š", " ® ⌋ ρ \u200f š"),
("⋅ § ­ σ ς ∼ ♠ ⊂ ⊆ ∑", "⋅ § \u00AD σ ς ♠ ⊂ ⊆ ∑"),
("⊃ ¹ ² ³ ⊇ ß τ ∴ θ ϑ", "⊃ ¹ ² ³ ⊇ ß τ ∴ θ ϑ"),
("ℜ ® ⌋ ρ ‏ › ’ ‚ š", " ® ⌋ ρ \u200f š"),
("⋅ § ­ σ ς ∼ ♠ ⊂ ⊆ ∑", "⋅ § \u00AD σ ς ♠ ⊂ ⊆ ∑"),
("⊃ ¹ ² ³ ⊇ ß τ ∴ θ ϑ", "⊃ ¹ ² ³ ⊇ ß τ ∴ θ ϑ"),
("  þ ˜ × ™ ⇑ ú ↑ û", "\u2009 þ ˜ × ™ ⇑ ú ↑ û"),
("ù ¨ ϒ υ ü ℘ ξ ý ¥ ÿ", "ù ¨ ϒ υ ü ℘ ξ ý ¥ ÿ"),
("ζ ‍ ‌ + = %", "ζ \u200D \u200C + = %"),
@@ -79,7 +79,7 @@ STRINGS_FOR_DECODE = [
("Χ χ ○ ˆ ≗ ↺ ↻", "Χ χ ○ ˆ ≗ ↺ ↻"),
("⊛ ⊚ ⊝ ⊙ ® Ⓢ", "⊛ ⊚ ⊝ ⊙ ® Ⓢ"),
("⊖ ⊕ ⊗ ⧃ ≗ ⨐ ⫯", "⊖ ⊕ ⊗ ⧃ ≗ ⨐ ⫯"),
("⧂ ∲ ” ’", "⧂ ∲ ” "),
("⧂ ∲ ” ’", "⧂ ∲ ” "),
("♣ ♣ ∷ : ⩴ ≔ ≔ , @", "♣ ♣ ∷ : ⩴ ≔ ≔ , @"),
("∁ ∘ ∁ ℂ ≅ ⩭ ≡", "∁ ∘ ∁ ≅ ⩭ ≡"),
("∯ ∮ ∮ ℂ 𝕔 ∐ ∐", "∯ ∮ ∮ 𝕔 ∐ ∐"),
@@ -234,7 +234,7 @@ STRINGS_FOR_DECODE = [
("⨷ ⊗ ⨶ Ö ö Ö ö ⌽ ‾", "⨷ ⊗ ⨶ Ö ö Ö ö ⌽ ‾"),
("⏞ ⎴ ⏜ ∥ ¶ ¶ ∥", "⏞ ⎴ ⏜ ∥ ¶ ¶ ∥"),
("⫳ ⫽ ∂ ∂ П п % . ‰", "⫳ ⫽ ∂ ∂ П п % . ‰"),
("⊥ ‱ 𝔓 𝔭 Φ φ ϕ ℳ ☎ Π π", "⊥ ‱ 𝔓 𝔭 Φ φ ϕ ☎ Π π"),
("⊥ ‱ 𝔓 𝔭 Φ φ ϕ ℳ ☎ Π π", "⊥ ‱ 𝔓 𝔭 Φ φ ϕ ☎ Π π"),
("⋔ ϖ ℏ ℎ ℏ + ⨣ ⊞", "⋔ ϖ ℏ ℏ + ⨣ ⊞"),
("⨢ ∔ ⨥ ⩲ ± ± ± ⨦", "⨢ ∔ ⨥ ⩲ ± ± ± ⨦"),
("⨧ ± ℌ ⨕ ℙ 𝕡 £ £ ⪻", "⨧ ± 𝕡 £ £ ⪻"),
@@ -272,7 +272,7 @@ STRINGS_FOR_DECODE = [
("⤥ ⇘ ↘ ↘ § § ; ⤩ ∖", "⤥ ⇘ ↘ ↘ § § ; ⤩ "),
("∖ ✶ 𝔖 𝔰 ⌢ ♯ Щ щ Ш ш", "𝔖 𝔰 ⌢ ♯ Щ щ Ш ш"),
("↓ ← ∣ ∥ →", "↓ ← ∥ →"),
("↑ ­ Σ σ ς ς ∼ ⩪", "\u00AD Σ σ ς ς "),
("↑ ­ Σ σ ς ς ∼ ⩪", "\u00AD Σ σ ς ς "),
("≃ ≃ ⪞ ⪠ ⪝ ⪟ ≆ ⨤ ⥲", "≃ ≃ ⪞ ⪠ ⪝ ⪟ ≆ ⨤ ⥲"),
("← ∘ ∖ ⨳ ⧤ ∣ ⌣ ⪪", "← ∘ ⨳ ⧤ ⌣ ⪪"),
("⪬ ⪬︀ Ь ь / ⧄ ⌿ 𝕊 𝕤 ♠", "⪬ ⪬︀ Ь ь / ⧄ ⌿ 𝕊 𝕤"),
@@ -315,7 +315,7 @@ STRINGS_FOR_DECODE = [
("𝒰 𝓊 ⋰ Ũ ũ ▵ ▴ ⇈ Ü ü", "𝒰 𝓊 ⋰ Ũ ũ ▵ ▴ ⇈ Ü ü"),
("Ü ü ⦧ ⦜ ϵ ϰ ∅ ϕ", "Ü ü ⦧ ⦜ ϵ ϰ ∅ ϕ"),
("ϖ ∝ ⇕ ↕ ϱ ς ⊊︀", "ϖ ∝ ⇕ ↕ ϱ ς ⊊︀"),
("⫋︀ ⊋︀ ⫌︀ ϑ ⊲", "⫋︀ ⊋︀ ⫌︀ ϑ ⊲"),
("⫋︀ ⊋︀ ⫌︀ ϑ ⊲", "⫋︀ ⊋︀ ⫌︀ ϑ ⊲"),
("⊳ ⫫ ⫨ ⫩ В в ⊫ ⊩ ⊨", "⊳ ⫫ ⫨ ⫩ В в ⊫ ⊩ ⊨"),
("⊢ ⫦ ⋁ ∨ ⊻ ≚ ⋮ ‖ |", "⊢ ⫦ ⊻ ≚ ⋮ ‖ |"),
("‖ | ∣ | ❘ ≀", "‖ | | ❘ ≀"),
@@ -351,7 +351,7 @@ STRINGS_FOR_ENCODE = [
("< > & \"", "&lt; &gt; &amp; &quot;"), # Самый простой набор HTML-мнемоников
("\u00AD", "&shy;"), # Мягкий перенос
("\u00A0\u2002\u2003\u2009\u200D\u200C", "&nbsp;&ensp;&emsp;&thinsp;&zwj;&zwnj;"), # Набор пробелов и невидимых символов
("", "&ndash; &mdash; &hyphen; &horbar;"), # Набор тире и дефисов
("", "&ndash; &mdash; &dash; &horbar;"), # Набор тире и дефисов
("$ ¢ £ ¤ ¥ € ₽", "&dollar; &cent; &pound; &curren; &yen; &euro; &#8381;"), # Валютные символы
("֏ ₽ ₴ ₸ ₹ ₼ ₾", "&#1423; &#8381; &#8372; &#8376; &#8377; &#8380; &#8382;"), # Валютные символы
# Набор из html.entities.name2codepoint
@@ -362,25 +362,25 @@ STRINGS_FOR_ENCODE = [
("Ω Ο Ø Õ Φ Π ″ Ψ Ρ Š", "&Omega; &Omicron; &Oslash; &Otilde; &Phi; &Pi; &Prime; &Psi; &Rho; &Scaron;"),
("Σ Þ Τ Θ Ú Û Ù Υ Ü", "&Sigma; &THORN; &Tau; &Theta; &Uacute; &Ucirc; &Ugrave; &Upsilon; &Uuml;"),
("Ξ Ý Ÿ Ζ á â ´ æ à", "&Xi; &Yacute; &Yuml; &Zeta; &aacute; &acirc; &acute; æ &agrave;"),
("α & ∧ ∠ ' å ≈ ã ä", "&alefsym; &alpha; &amp; &and; &ang; &apos; &aring; &asymp; &atilde; &auml;"),
("α & ∧ ∠ ' å ≈ ã ä", "&alefsym; &alpha; &amp; &and; &ang; &apos; &aring; &ap; &atilde; &auml;"),
("„ β ¦ • ∩ ç ¸ ¢ χ ˆ", "&bdquo; &beta; &brvbar; &bull; &cap; &ccedil; &cedil; &cent; &chi; &circ;"),
("♣ ≅ © ↵ ¤ ⇓ † ↓ °", "&clubs; &cong; &copy; &crarr; &cup; &curren; &dArr; &dagger; &darr; &deg;"),
("δ ♦ ÷ é ê è ∅ \u2003 \u2002", "&delta; &diams; &divide; &eacute; &ecirc; &egrave; &empty; &emsp; &ensp;"),
("ε ≡ η ð ë € ∃ ƒ ∀ ½", "&epsilon; &equiv; &eta; &eth; &euml; &euro; &exist; &fnof; &forall; &frac12;"),
("¼ ¾ γ ≥ > ⇔ ↔ ♥ …", "&frac14; &frac34; &frasl; &gamma; &ge; &gt; &hArr; &harr; &hearts; &hellip;"),
("í î ¡ ì ∞ ∫ ι ¿ ∈", "&iacute; &icirc; &iexcl; &igrave; &image; &infin; &int; &iota; &iquest; &isin;"),
("ε ≡ η ð ë € ∃ ƒ ∀ ½", "&epsi; &equiv; &eta; &eth; &euml; &euro; &exist; &fnof; &forall; &half;"),
("¼ ¾ γ ≥ > ⇔ ↔ ♥ …", "&frac14; &frac34; &frasl; &gamma; &ge; &gt; &iff; &harr; &hearts; &hellip;"),
("í î ¡ ì ∞ ∫ ι ¿ ∈", "&iacute; &icirc; &iexcl; &igrave; &Im; &infin; &int; &iota; &iquest; &in;"),
("ï κ ⇐ λ ⟨ « ← ⌈ “ ≤", "&iuml; &kappa; &lArr; &lambda; &lang; &laquo; &larr; &lceil; &ldquo; &le;"),
("\u200e < ¯ — µ", "&lfloor; &lowast; &loz; &lrm; &lsaquo; &lsquo; &lt; &macr; &mdash; &micro;"),
("· μ ∇ \u00A0 ≠ ∋ ¬ ∉", "&middot; &minus; &mu; &nabla; &nbsp; &ndash; &ne; &ni; &not; &notin;"),
("· μ ∇ \u00A0 ≠ ∋ ¬ ∉", "&middot; &minus; &mu; &Del; &nbsp; &ndash; &ne; &ni; &not; &notin;"),
("⊄ ñ ν ó ô œ ò ‾ ω", "&nsub; &ntilde; &nu; &oacute; &ocirc; œ &ograve; &oline; &omega;"),
("ο ª º ø õ ⊗ ö", "&omicron; &oplus; &or; &ordf; &ordm; &oslash; &otilde; &otimes; &ouml;"),
("¶ ∂ ‰ ⊥ φ π ϖ ± £ ", "&para; &part; &permil; &perp; &phi; &pi; &piv; &plusmn; &pound; &prime; &prod;"),
("¶ ∂ ‰ ⊥ φ π ϖ ± £ ", "&para; &part; &permil; &bot; &phi; &pi; &piv; &pm; &pound; &prime; &prod;"),
("∝ ψ \" ⇒ √ ⟩ » → ⌉ ”", "&prop; &psi; &quot; &rArr; &radic; &rang; &raquo; &rarr; &rceil; &rdquo;"),
(" ® ⌋ ρ \u200f š", "&real; &reg; &rfloor; &rho; &rlm; &rsaquo; &rsquo; &sbquo; &scaron;"),
(" ® ⌋ ρ \u200f š", "&Re; &reg; &rfloor; &rho; &rlm; &rsaquo; &rsquo; &sbquo; &scaron;"),
("⋅ § \u00AD σ ς ♠ ⊂ ⊆ ∑", "&sdot; &sect; &shy; &sigma; &sigmaf; &sim; &spades; &sub; &sube; &sum;"),
("⊃ ¹ ² ³ ⊇ ß τ ∴ θ ϑ", "&sup; &sup1; &sup2; &sup3; &supe; &szlig; &tau; &there4; &theta; &thetasym;"),
("⊃ ¹ ² ³ ⊇ ß τ ∴ θ ϑ", "&sup; &sup1; &sup2; &sup3; &supe; &szlig; &tau; &there4; &theta; &thetav;"),
("\u2009 þ ˜ × ™ ⇑ ú ↑ û", "&thinsp; &thorn; &tilde; &times; &trade; &uArr; &uacute; &uarr; &ucirc;"),
("ù ¨ ϒ υ ü ℘ ξ ý ¥ ÿ", "&ugrave; &uml; &upsih; &upsilon; &uuml; &weierp; &xi; &yacute; &yen; &yuml;"),
("ù ¨ ϒ υ ü ℘ ξ ý ¥ ÿ", "&ugrave; &die; &upsih; &upsilon; &uuml; &weierp; &xi; &yacute; &yen; &yuml;"),
("ζ \u200D \u200C + = %", "&zeta; &zwj; &zwnj; &plus; = %"),
# Набор из html.entities.html5
("Á á Á á Ă ă ∾ ∿ Â", "&Aacute; &aacute; &Aacute; &aacute; &Abreve; &abreve; &ac; &acd; &Acirc;"),
@@ -390,114 +390,114 @@ STRINGS_FOR_ENCODE = [
("⩕ ⩜ ⩘ ⩚ ∠ ⦤ ∠ ∡ ⦨", "&andand; &andd; &andslope; &andv; &ang; &ange; &ang; &angmsd; &angmsdaa;"),
("⦩ ⦪ ⦫ ⦬ ⦭ ⦮ ⦯", "&angmsdab; &angmsdac; &angmsdad; &angmsdae; &angmsdaf; &angmsdag; &angmsdah;"),
("∟ ⊾ ⦝ ∢ Å ⍼ Ą ą 𝔸", "&angrt; &angrtvb; &angrtvbd; &angsph; &Aring; &angzarr; &Aogon; &aogon; &Aopf;"),
("𝕒 ≈ ⩯ ⩰ ≊ ≋ ' \u2061", "&aopf; &asymp; &apacir; &apE; &ape; &apid; &apos; &af; &asymp;"),
("𝕒 ≈ ⩯ ⩰ ≊ ≋ ' \u2061", "&aopf; &ap; &apacir; &apE; &ape; &apid; &apos; &af; &ap;"),
("≊ Å å Å å 𝒜 𝒶 ≔ *", "&ape; &Aring; &aring; &Aring; &aring; &Ascr; &ascr; &Assign; *"),
("≈ ≍ Ã ã Ã ã Ä ä Ä", "&asymp; &asympeq; &Atilde; &atilde; &Atilde; &atilde; &Auml; &auml; &Auml;"),
("≈ ≍ Ã ã Ã ã Ä ä Ä", "&ap; &CupCap; &Atilde; &atilde; &Atilde; &atilde; &Auml; &auml; &Auml;"),
("ä ∳ ⨑ ≌ ϶ ", "&auml; &awconint; &awint; &bcong; &bepsi; &bprime; &bsim;"),
(" ⫧ ⊽ ⌆ ⌅ ⌅ ⎵", "&bsime; &Backslash; &Barv; &barvee; &Barwed; &barwed; &barwed; &bbrk;"),
(" ⫧ ⊽ ⌆ ⌅ ⌅ ⎵", "&bsime; &setmn; &Barv; &barvee; &Barwed; &barwed; &barwed; &bbrk;"),
("⎶ ≌ Б б „ ∵ ⦰", "&bbrktbrk; &bcong; Б б &bdquo; &becaus; &bemptyv;"),
("϶ Β β ℶ ≬ 𝔅 𝔟", "&bepsi; &Bscr; &Bscr; &Beta; &beta; &beth; &between; &Bfr; &bfr;"),
("⋂ ◯ ⨀ ⨁ ⨂ ⨆", "&bigcap; &bigcirc; &bigcup; &bigodot; &bigoplus; &bigotimes; &bigsqcup;"),
("★ ▽ △ ⨄ ", "&bigstar; &bigtriangledown; &bigtriangleup; &biguplus; &bigvee; &bigwedge;"),
("⤍ ⧫ ▪ ▴ ▾", "&bkarow; &blacklozenge; &blacksquare; &blacktriangle; &blacktriangledown;"),
("◂ ▸ ␣ ▒ ░ ▓", "&blacktriangleleft; &blacktriangleright; &blank; &blk12; &blk14; &blk34;"),
("█ ⫭ ⌐ 𝔹 𝕓 ⊥ ⊥ ⋈ ⧉ ╗", "&block; &bNot; &bnot; &Bopf; &bopf; &perp; &perp; &bowtie; &boxbox; &boxDL;"),
("϶ Β β ℶ ≬ 𝔅 𝔟", "&bepsi; &Bscr; &Bscr; &Beta; &beta; &beth; &twixt; &Bfr; &bfr;"),
("⋂ ◯ ⨀ ⨁ ⨂ ⨆", "&xcap; &xcirc; &xcup; &xodot; &xoplus; &xotime; &xsqcup;"),
("★ ▽ △ ⨄ ", "&starf; &xdtri; &xutri; &xuplus; &Vee; &Wedge;"),
("⤍ ⧫ ▪ ▴ ▾", "&rbarr; &lozf; &squf; &utrif; &dtrif;"),
("◂ ▸ ␣ ▒ ░ ▓", "&ltrif; &rtrif; &blank; &blk12; &blk14; &blk34;"),
("█ ⫭ ⌐ 𝔹 𝕓 ⊥ ⊥ ⋈ ⧉ ╗", "&block; &bNot; &bnot; &Bopf; &bopf; &bot; &bot; &bowtie; &boxbox; &boxDL;"),
("╖ ╕ ┐ ╔ ╓ ╒ ┌ ═ ─ ╦", "&boxDl; &boxdL; &boxdl; &boxDR; &boxDr; &boxdR; &boxdr; &boxH; &boxh; &boxHD;"),
("╤ ╥ ┬ ╩ ╧ ╨ ┴ ⊟ ⊞", "&boxHd; &boxhD; &boxhd; &boxHU; &boxHu; &boxhU; &boxhu; &boxminus; &boxplus;"),
("⊠ ╝ ╜ ╛ ┘ ╚ ╙ ╘ └", "&boxtimes; &boxUL; &boxUl; &boxuL; &boxul; &boxUR; &boxUr; &boxuR; &boxur;"),
("╤ ╥ ┬ ╩ ╧ ╨ ┴ ⊟ ⊞", "&boxHd; &boxhD; &boxhd; &boxHU; &boxHu; &boxhU; &boxhu; &minusb; &plusb;"),
("⊠ ╝ ╜ ╛ ┘ ╚ ╙ ╘ └", "&timesb; &boxUL; &boxUl; &boxuL; &boxul; &boxUR; &boxUr; &boxuR; &boxur;"),
("║ │ ╬ ╫ ╪ ┼ ╣ ╢ ╡ ┤", "&boxV; &boxv; &boxVH; &boxVh; &boxvH; &boxvh; &boxVL; &boxVl; &boxvL; &boxvl;"),
("╠ ╟ ╞ ├ ˘ ˘ ¦ ¦", "&boxVR; &boxVr; &boxvR; &boxvr; &bprime; &breve; &breve; &brvbar; &brvbar;"),
(" 𝒷 ⁏ ∽ ⋍ \\ ⧅ ⟈ • •", "&Bscr; &bscr; &bsemi; &bsim; &bsime; \\ &bsolb; &bsolhsub; &bull; &bull;"),
("≎ ⪮ ≏ ≎ ≏ Ć ć ⋒ ∩", "&bump; &bumpE; &bumpe; &bump; &bumpe; &Cacute; &cacute; &Cap; &cap;"),
("⩄ ⩉ ⩋ ⩇ ⩀ ", "&capand; &capbrcup; &capcap; &capcup; &capdot; &CapitalDifferentialD; &caret;"),
("⩄ ⩉ ⩋ ⩇ ⩀ ", "&capand; &capbrcup; &capcap; &capcup; &capdot; &DD; &caret;"),
("ˇ ⩍ Č č Ç ç Ç", "&caron; &Cfr; &ccaps; &Ccaron; &ccaron; &Ccedil; &ccedil; &Ccedil;"),
("ç Ĉ ĉ ∰ ⩌ ⩐ Ċ ċ ¸", "&ccedil; &Ccirc; &ccirc; &Cconint; &ccups; &ccupssm; &Cdot; &cdot; &cedil;"),
("¸ ¸ ⦲ ¢ ¢ · · 𝔠", "&cedil; &cedil; &cemptyv; &cent; &cent; &middot; &middot; &Cfr; &cfr;"),
# ("Ч ч ✓ ✓ Χ χ ○ ˆ", "&CHcy; &chcy; &check; &checkmark; &Chi; &chi; &cir; &circ; &circeq;"),
# ("↺ ↻ ⊛ ⊚ ⊝", "&circlearrowleft; &circlearrowright; &circledast; &circledcirc; &circleddash;"),
# ("⊙ ® Ⓢ ⊖ ⊕ ⊗", "&CircleDot; &circledR; &circledS; &CircleMinus; &CirclePlus; &CircleTimes;"),
# ("⧃ ≗ ⨐ ⫯ ⧂ ∲", "&cirE; &cire; &cirfnint; &cirmid; &cirscir; &ClockwiseContourIntegral;"),
# (" ♣ ♣ ∷ :", "&CloseCurlyDoubleQuote; &CloseCurlyQuote; &clubs; &clubsuit; &Colon; &colon;"),
# ("⩴ ≔ ≔ , @ ∁ ∘ ∁", "&Colone; &colone; &coloneq; &comma; &commat; &comp; &compfn; &complement;"),
# (" ≅ ⩭ ≡ ∯ ∮ ∮", "&complexes; &cong; &congdot; &Congruent; &Conint; &conint; &ContourIntegral;"),
# (" 𝕔 ∐ ∐ © © © © ℗", "&Copf; &copf; &coprod; &Coproduct; &COPY; &copy; &COPY; &copy; &copysr;"),
# ("∳ ↵ 𝒞 𝒸", "&CounterClockwiseContourIntegral; &crarr; &Cross; &cross; &Cscr; &cscr; &csub;"),
# ("⫑ ⫐ ⫒ ⋯ ⤸ ⤵ ⋞ ⋟ ↶", "&csube; &csup; &csupe; &ctdot; &cudarrl; &cudarrr; &cuepr; &cuesc; &cularr;"),
# ("⤽ ⋓ ⩈ ≍ ⩆ ⩊ ⊍ ⩅", "&cularrp; &Cup; &cup; &cupbrcap; &CupCap; &cupcap; &cupcup; &cupdot; &cupor;"),
# ("↷ ⤼ ⋞ ⋟ ⋎ ⋏", "&curarr; &curarrm; &curlyeqprec; &curlyeqsucc; &curlyvee; &curlywedge;"),
# ("¤ ¤ ↶ ↷ ⋎ ⋏", "&curren; &curren; &curvearrowleft; &curvearrowright; &cuvee; &cuwed;"),
# ("∲ ∱ ⌭ ‡ † ℸ ↡ ⇓ ↓", "&cwconint; &cwint; &cylcty; &Dagger; &dagger; &daleth; &Darr; &dArr; &darr;"),
# (" ⫤ ⊣ ⤏ ˝ Ď ď Д д ", "&dash; &Dashv; &dashv; &dbkarow; &dblac; &Dcaron; &dcaron; &Dcy; &dcy; &DD;"),
# (" ‡ ⇊ ⤑ ⩷ ° ° ∇ Δ δ", "&dd; &ddagger; &ddarr; &DDotrahd; &ddotseq; &deg; &deg; &Del; &Delta; &delta;"),
# ("⦱ ⥿ 𝔇 𝔡 ⥥ ⇃ ⇂ ´", "&demptyv; &dfisht; &Dfr; &dfr; &dHar; &dharl; &dharr; &DiacriticalAcute;"),
# ("˙ ˝ `", "&DiacriticalDot; &DiacriticalDoubleAcute; &DiacriticalGrave;"),
# ("˜ ⋄ ⋄ ⋄ ♦ ♦ ¨", "&DiacriticalTilde; &diam; &Diamond; &diamond; &diamondsuit; &diams; &die;"),
# (" ϝ ⋲ ÷ ÷ ÷ ⋇", "&DifferentialD; &digamma; &disin; &div; &divide; &divide; &divideontimes;"),
# ("⋇ Ђ ђ ⌞ ⌍ $ 𝔻 𝕕 ¨ ˙", "&divonx; &DJcy; &djcy; &dlcorn; &dlcrop; &dollar; &Dopf; &dopf; &Dot; &dot;"),
# ("⃜ ≐ ≑ ≐ ∸ ∔ ⊡", "&DotDot; &doteq; &doteqdot; &DotEqual; &dotminus; &dotplus; &dotsquare;"),
# ("⌆ ∯ ¨ ⇓", "&doublebarwedge; &DoubleContourIntegral; &DoubleDot; &DoubleDownArrow;"),
# ("⇐ ⇔ ⫤ ⟸", "&DoubleLeftArrow; &DoubleLeftRightArrow; &DoubleLeftTee; &DoubleLongLeftArrow;"),
# ("⟺ ⟹ ⇒", "&DoubleLongLeftRightArrow; &DoubleLongRightArrow; &DoubleRightArrow;"),
# ("⊨ ⇑ ⇕ ∥", "&DoubleRightTee; &DoubleUpArrow; &DoubleUpDownArrow; &DoubleVerticalBar;"),
# ("↓ ⇓ ↓ ⤓ ⇵", "&DownArrow; &Downarrow; &downarrow; &DownArrowBar; &DownArrowUpArrow;"),
# ("̑ ⇊ ⇃ ⇂", "&DownBreve; &downdownarrows; &downharpoonleft; &downharpoonright;"),
# ("⥐ ⥞ ↽ ⥖", "&DownLeftRightVector; &DownLeftTeeVector; &DownLeftVector; &DownLeftVectorBar;"),
# ("⥟ ⇁ ⥗ ", "&DownRightTeeVector; &DownRightVector; &DownRightVectorBar; &DownTee;"),
# ("↧ ⤐ ⌟ ⌌ 𝒟 𝒹 Ѕ ѕ", "&DownTeeArrow; &drbkarow; &drcorn; &drcrop; &Dscr; &dscr; &DScy; &dscy; &dsol;"),
# ("Đ đ ⋱ ▿ ▾ ⇵ ⥯ ⦦ Џ", "&Dstrok; &dstrok; &dtdot; &dtri; &dtrif; &duarr; &duhar; &dwangle; &DZcy;"),
# ("џ ⟿ É é É é ⩮ Ě", "&dzcy; &dzigrarr; &Eacute; &eacute; &Eacute; &eacute; &easter; &Ecaron;"),
# ("ě ≖ Ê ê Ê ê ≕ Э э ⩷", "&ecaron; &ecir; &Ecirc; &ecirc; &Ecirc; &ecirc; &ecolon; &Ecy; &ecy; &eDDot;"),
# ("Ė ≑ ė 𝔈 𝔢 ⪚ È è È", "&Edot; &eDot; &edot; &ee; &efDot; &Efr; &efr; &eg; &Egrave; &egrave; &Egrave;"),
# ("è ⪖ ⪘ ⪙ ∈ ⏧ ⪕ ⪗ Ē", "&egrave; &egs; &egsdot; &el; &Element; &elinters; &ell; &els; &elsdot; &Emacr;"),
# ("ē ∅ ∅ ◻ ∅ ▫", "&emacr; &empty; &emptyset; &EmptySmallSquare; &emptyv; &EmptyVerySmallSquare;"),
# (" Ŋ ŋ Ę ę 𝔼 𝕖", "&emsp13; &emsp14; &emsp; &ENG; &eng; &ensp; &Eogon; &eogon; &Eopf; &eopf;"),
# ("⋕ ⧣ ⩱ ε Ε ε ϵ ≖ ≕", "&epar; &eparsl; &eplus; &epsi; &Epsilon; &epsilon; &epsiv; &eqcirc; &eqcolon;"),
# ("≂ ⪖ ⪕ ⩵ = ≂ ≟", "&eqsim; &eqslantgtr; &eqslantless; &Equal; &equals; &EqualTilde; &equest;"),
# ("⇌ ≡ ⩸ ⧥ ⥱ ≓ ", "&Equilibrium; &equiv; &equivDD; &eqvparsl; &erarr; &erDot; &Escr; &escr;"),
# ("≐ ⩳ ≂ Η η Ð ð Ð ð Ë ë Ë", "&esdot; &Esim; &esim; &Eta; &eta; &ETH; &eth; &ETH; &eth; &Euml; &euml; &Euml;"),
# ("ë € ! ∃ ∃ ", "&euml; &euro; &excl; &exist; &Exists; &expectation; &ExponentialE;"),
# (" ≒ Ф ф ♀ ffi ff ffl", "&exponentiale; &fallingdotseq; &Fcy; &fcy; &female; &ffilig; &fflig; &ffllig;"),
# ("𝔉 𝔣 fi ◼ ▪ ♭ fl", "&Ffr; &ffr; &filig; &FilledSmallSquare; &FilledVerySmallSquare; &flat; &fllig;"),
# ("▱ ƒ 𝔽 𝕗 ∀ ∀ ⋔ ⫙ ", "&fltns; &fnof; &Fopf; &fopf; &ForAll; &forall; &fork; &forkv; &Fouriertrf;"),
# ("⨍ ½ ½ ⅓ ¼ ¼ ⅕ ⅙", "&fpartint; &frac12; &frac12; &frac13; &frac14; &frac14; &frac15; &frac16;"),
# ("⅛ ⅔ ⅖ ¾ ¾ ⅗ ⅜ ⅘", "&frac18; &frac23; &frac25; &frac34; &frac34; &frac35; &frac38; &frac45;"),
# ("⅚ ⅝ ⅞ 𝒻 ǵ Γ", "&frac56; &frac58; &frac78; &frasl; &frown; &Fscr; &fscr; &gacute; &Gamma;"),
# ("γ Ϝ ϝ ⪆ Ğ ğ Ģ Ĝ ĝ", "&gamma; &Gammad; &gammad; &gap; &Gbreve; &gbreve; &Gcedil; &Gcirc; &gcirc;"),
# ("Г г Ġ ġ ≧ ≥ ⪌ ⋛ ≥ ≧ ⩾ ⩾", "&Gcy; &gcy; &Gdot; &gdot; &gE; &ge; &gEl; &gel; &geq; &geqq; &geqslant; &ges;"),
# ("⪩ ⪀ ⪂ ⪄ ⪔ 𝔊 𝔤 ⋙ ≫ ⋙", "&gescc; &gesdot; &gesdoto; &gesdotol; &gesles; &Gfr; &gfr; &Gg; &gg; &ggg;"),
# ("ℷ Ѓ ѓ ≷ ⪥ ⪒ ⪤ ⪊ ⪊ ≩ ⪈", "&gimel; &GJcy; &gjcy; &gl; &gla; &glE; &glj; &gnap; &gnapprox; &gnE; &gne;"),
# ("⪈ ≩ ⋧ 𝔾 𝕘 ` ≥ ⋛", "&gneq; &gneqq; &gnsim; &Gopf; &gopf; &grave; &GreaterEqual; &GreaterEqualLess;"),
# ("≧ ⪢ ≷ ⩾", "&GreaterFullEqual; &GreaterGreater; &GreaterLess; &GreaterSlantEqual;"),
# ("𝒢 ≳ ⪎ ⪐ > > > ≫ >", "&GreaterTilde; &Gscr; &gscr; &gsim; &gsime; &gsiml; &GT; &gt; &GT; &Gt; &gt;"),
# ("⪧ ⩺ ⋗ ⦕ ⩼ ⪆ ⥸ ⋗", "&gtcc; &gtcir; &gtdot; &gtlPar; &gtquest; &gtrapprox; &gtrarr; &gtrdot;"),
# ("⋛ ⪌ ≷ ≳ ˇ ½ ", "&gtreqless; &gtreqqless; &gtrless; &gtrsim; &Hacek; &hairsp; &half; &hamilt;"),
# ("Ъ ъ ⇔ ↔ ⥈ ↭ ^ ℏ Ĥ ĥ", "&HARDcy; &hardcy; &hArr; &harr; &harrcir; &harrw; &Hat; &hbar; &Hcirc; &hcirc;"),
# ("♥ ♥ … ⊹ 𝔥 ", "&hearts; &heartsuit; &hellip; &hercon; &Hfr; &hfr; &HilbertSpace; &hksearow;"),
# ("⤦ ⇿ ∻ ↩ ↪ 𝕙", "&hkswarow; &hoarr; &homtht; &hookleftarrow; &hookrightarrow; &Hopf; &hopf;"),
# ("― ─ 𝒽 ℏ Ħ ħ", "&horbar; &HorizontalLine; &Hscr; &hscr; &hslash; &Hstrok; &hstrok;"),
# ("≎ ≏ Í í Í", "&HumpDownHump; &HumpEqual; &hybull; &hyphen; &Iacute; &iacute; &Iacute;"),
# ("í Î î Î î И и İ Е е", "&iacute; &ic; &Icirc; &icirc; &Icirc; &icirc; &Icy; &icy; &Idot; &IEcy; &iecy;"),
# ("¡ ¡ ⇔ 𝔦 Ì ì Ì ì ", "&iexcl; &iexcl; &iff; &Ifr; &ifr; &Igrave; &igrave; &Igrave; &igrave; &ii;"),
# ("⨌ ∭ ⧜ ℩ IJ ij Ī ī ", "&iiiint; &iiint; &iinfin; &iiota; &IJlig; &ijlig; &Im; &Imacr; &imacr; &image;"),
# (" ı ⊷ Ƶ ⇒ ∈", "&ImaginaryI; &imagline; &imagpart; &imath; &imof; &imped; &Implies; &in;"),
# ("℅ ∞ ⧝ ı ∬ ∫ ⊺ ", "&incare; &infin; &infintie; &inodot; &Int; &int; &intcal; &integers;"),
# ("∫ ⊺ ⋂ ⨗ ⨼ ", "&Integral; &intercal; &Intersection; &intlarhk; &intprod; &InvisibleComma;"),
# (" Ё ё Į į 𝕀 𝕚 Ι ι", "&InvisibleTimes; &IOcy; &iocy; &Iogon; &iogon; &Iopf; &iopf; &Iota; &iota;"),
# ("⨼ ¿ ¿ 𝒾 ∈ ⋵ ⋹ ⋴", "&iprod; &iquest; &iquest; &Iscr; &iscr; &isin; &isindot; &isinE; &isins;"),
# ("⋳ ∈ Ĩ ĩ І і Ï ï Ï", "&isinsv; &isinv; &it; &Itilde; &itilde; &Iukcy; &iukcy; &Iuml; &iuml; &Iuml;"),
# ("ï Ĵ ĵ Й й 𝔍 𝔧 ȷ 𝕁 𝕛 𝒥", "&iuml; &Jcirc; &jcirc; &Jcy; &jcy; &Jfr; &jfr; &jmath; &Jopf; &jopf; &Jscr;"),
# ("𝒿 Ј ј Є є Κ κ ϰ Ķ", "&jscr; &Jsercy; &jsercy; &Jukcy; &jukcy; &Kappa; &kappa; &kappav; &Kcedil;"),
# ("ķ К к 𝔎 𝔨 ĸ Х х Ќ ќ 𝕂", "&kcedil; &Kcy; &kcy; &Kfr; &kfr; &kgreen; &KHcy; &khcy; &KJcy; &kjcy; &Kopf;"),
# ("𝕜 𝒦 𝓀 ⇚ Ĺ ĺ ⦴ Λ", "&kopf; &Kscr; &kscr; &lAarr; &Lacute; &lacute; &laemptyv; &lagran; &Lambda;"),
# ("λ ⟪ ⟨ ⦑ ⟨ ⪅ « «", "&lambda; &Lang; &lang; &langd; &langle; &lap; &Laplacetrf; &laquo; &laquo;"),
# ("↞ ⇐ ← ⇤ ⤟ ⤝ ↩ ↫ ⤹", "&Larr; &lArr; &larr; &larrb; &larrbfs; &larrfs; &larrhk; &larrlp; &larrpl;"),
# ("⥳ ↢ ⪫ ⤛ ⤙ ⪭ ⤎ ⤌ ", "&larrsim; &larrtl; &lat; &lAtail; &latail; &late; &lBarr; &lbarr; &lbbrk;"),
# ("{ [ ⦋ ⦏ ⦍ Ľ ľ Ļ", "&lbrace; &lbrack; &lbrke; &lbrksld; &lbrkslu; &Lcaron; &lcaron; &Lcedil;"),
# ("ļ ⌈ { Л л ⤶ “ „ ⥧", "&lcedil; &lceil; &lcub; &Lcy; &lcy; &ldca; &ldquo; &ldquor; &ldrdhar;"),
# ("⥋ ↲ ≦ ≤ ⟨ ← ⇐", "&ldrushar; &ldsh; &lE; &le; &LeftAngleBracket; &LeftArrow; &Leftarrow;"),
# ("← ⇤ ⇆ ↢ ⌈", "&leftarrow; &LeftArrowBar; &LeftArrowRightArrow; &leftarrowtail; &LeftCeiling;"),
# ("⟦ ⥡ ⇃ ⥙", "&LeftDoubleBracket; &LeftDownTeeVector; &LeftDownVector; &LeftDownVectorBar;"),
# ("⌊ ↽ ↼ ⇇", "&LeftFloor; &leftharpoondown; &leftharpoonup; &leftleftarrows;"),
("Ч ч ✓ ✓ Χ χ ○ ˆ", "Ч ч &check; &check; &Chi; &chi; &cir; &circ; &cire;"),
("↺ ↻ ⊛ ⊚ ⊝", "&olarr; &orarr; &oast; &ocir; &odash;"),
("⊙ ® Ⓢ ⊖ ⊕ ⊗", "&odot; &reg; &oS; &ominus; &oplus; &otimes;"),
("⧃ ≗ ⨐ ⫯ ⧂ ∲", "&cirE; &cire; &cirfnint; &cirmid; &cirscir; &cwconint;"),
(" ♣ ♣ ∷ :", "&rdquo; &rsquo; &clubs; &clubs; &Colon; :"),
("⩴ ≔ ≔ , @ ∁ ∘ ∁", "&Colone; &Assign; &Assign; , @ &comp; &compfn; &comp;"),
(" ≅ ⩭ ≡ ∯ ∮ ∮", "&Copf; &cong; &congdot; &equiv; &Conint; &oint; &oint;"),
(" 𝕔 ∐ ∐ © © © © ℗", "&Copf; &copf; &coprod; &coprod; &copy; &copy; &copy; &copy; &copysr;"),
("∳ ↵ 𝒞 𝒸", "&awconint; &crarr; &Cross; &cross; &Cscr; &cscr; &csub;"),
("⫑ ⫐ ⫒ ⋯ ⤸ ⤵ ⋞ ⋟ ↶", "&csube; &csup; &csupe; &ctdot; &cudarrl; &cudarrr; &cuepr; &cuesc; &cularr;"),
("⤽ ⋓ ⩈ ≍ ⩆ ⩊ ⊍ ⩅", "&cularrp; &Cup; &cup; &cupbrcap; &CupCap; &cupcap; &cupcup; &cupdot; &cupor;"),
("↷ ⤼ ⋞ ⋟ ⋎ ⋏", "&curarr; &curarrm; &cuepr; &cuesc; &cuvee; &cuwed;"),
("¤ ¤ ↶ ↷ ⋎ ⋏", "&curren; &curren; &cularr; &curarr; &cuvee; &cuwed;"),
("∲ ∱ ⌭ ‡ † ℸ ↡ ⇓ ↓", "&cwconint; &cwint; &cylcty; &Dagger; &dagger; &daleth; &Darr; &dArr; &darr;"),
(" ⫤ ⊣ ⤏ ˝ Ď ď Д д ", "&dash; &Dashv; &dashv; &rBarr; &dblac; &Dcaron; &dcaron; Д д &DD;"),
(" ‡ ⇊ ⤑ ⩷ ° ° ∇ Δ δ", "&dd; &Dagger; &ddarr; &DDotrahd; &eDDot; &deg; &deg; &Del; &Delta; &delta;"),
("⦱ ⥿ 𝔇 𝔡 ⥥ ⇃ ⇂ ´", "&demptyv; &dfisht; &Dfr; &dfr; &dHar; &dharl; &dharr; &acute;"),
("˙ ˝ `", "&dot; &dblac; &grave;"),
("˜ ⋄ ⋄ ⋄ ♦ ♦ ¨", "&tilde; &diam; &diam; &diam; &diams; &diams; &die;"),
(" ϝ ⋲ ÷ ÷ ÷ ⋇", "&dd; &gammad; &disin; &divide; &divide; &divide; &divonx;"),
("⋇ Ђ ђ ⌞ ⌍ $ 𝔻 𝕕 ¨ ˙", "&divonx; &DJcy; &djcy; &dlcorn; &dlcrop; &dollar; &Dopf; &dopf; &die; &dot;"),
("⃜ ≐ ≑ ≐ ∸ ∔ ⊡", "&DotDot; &esdot; &eDot; &esdot; &minusd; &plusdo; &sdotb;"),
("⌆ ∯ ¨ ⇓", "&Barwed; &Conint; &die; &dArr;"),
("⇐ ⇔ ⫤ ⟸", "&lArr; &iff; &Dashv; &xlArr;"),
("⟺ ⟹ ⇒", "&xhArr; &xrArr; &rArr;"),
("⊨ ⇑ ⇕ ∥", "&vDash; &uArr; &vArr; &par;"),
("↓ ⇓ ↓ ⤓ ⇵", "&darr; &dArr; &darr; &DownArrowBar; &duarr;"),
("̑ ⇊ ⇃ ⇂", "&DownBreve; &ddarr; &dharl; &dharr;"),
("⥐ ⥞ ↽ ⥖", "&DownLeftRightVector; &DownLeftTeeVector; &lhard; &DownLeftVectorBar;"),
("⥟ ⇁ ⥗ ", "&DownRightTeeVector; &rhard; &DownRightVectorBar; &top;"),
("↧ ⤐ ⌟ ⌌ 𝒟 𝒹 Ѕ ѕ", "&mapstodown; &RBarr; &drcorn; &drcrop; &Dscr; &dscr; &DScy; &dscy; &dsol;"),
("Đ đ ⋱ ▿ ▾ ⇵ ⥯ ⦦ Џ", "&Dstrok; &dstrok; &dtdot; &dtri; &dtrif; &duarr; &duhar; &dwangle; &DZcy;"),
("џ ⟿ É é É é ⩮ Ě", "&dzcy; &dzigrarr; &Eacute; &eacute; &Eacute; &eacute; &easter; &Ecaron;"),
("ě ≖ Ê ê Ê ê ≕ Э э ⩷", "&ecaron; &ecir; &Ecirc; &ecirc; &Ecirc; &ecirc; &ecolon; Э э &eDDot;"),
("Ė ≑ ė 𝔈 𝔢 ⪚ È è È", "&Edot; &eDot; &edot; &ee; &efDot; &Efr; &efr; &eg; &Egrave; &egrave; &Egrave;"),
("è ⪖ ⪘ ⪙ ∈ ⏧ ⪕ ⪗ Ē", "&egrave; &egs; &egsdot; &el; &in; &elinters; &ell; &els; &elsdot; &Emacr;"),
("ē ∅ ∅ ◻ ∅ ▫", "&emacr; &empty; &empty; &EmptySmallSquare; &empty; &EmptyVerySmallSquare;"),
("\u2004 \u2005 \u2003 Ŋ ŋ Ę ę 𝔼 𝕖", "&emsp13; &emsp14; &emsp; &ENG; &eng; &Eogon; &eogon; &Eopf; &eopf;"),
("⋕ ⧣ ⩱ ε Ε ε ϵ ≖ ≕", "&epar; &eparsl; &eplus; &epsi; &Epsilon; &epsi; &epsiv; &ecir; &ecolon;"),
("≂ ⪖ ⪕ ⩵ = ≂ ≟", "&esim; &egs; &els; &Equal; = &esim; &equest;"),
("⇌ ≡ ⩸ ⧥ ⥱ ≓ ", "&rlhar; &equiv; &equivDD; &eqvparsl; &erarr; &erDot; &Escr; &escr;"),
("≐ ⩳ ≂ Η η Ð ð Ð ð Ë ë Ë", "&esdot; &Esim; &esim; &Eta; &eta; &ETH; &eth; &ETH; &eth; &Euml; &euml; &Euml;"),
("ë € ! ∃ ∃ ", "&euml; &euro; ! &exist; &exist; &Escr; &ee;"),
(" ≒ Ф ф ♀ ffi ff ffl", "&ee; &efDot; Ф ф &female; &ffilig; &fflig; &ffllig;"),
("𝔉 𝔣 fi ◼ ▪ ♭ fl", "&Ffr; &ffr; &filig; &FilledSmallSquare; &squf; &flat; &fllig;"),
("▱ ƒ 𝔽 𝕗 ∀ ∀ ⋔ ⫙ ", "&fltns; &fnof; &Fopf; &fopf; &forall; &forall; &fork; &forkv; &Fscr;"),
("⨍ ½ ½ ⅓ ¼ ¼ ⅕ ⅙", "&fpartint; &half; &half; &frac13; &frac14; &frac14; &frac15; &frac16;"),
("⅛ ⅔ ⅖ ¾ ¾ ⅗ ⅜ ⅘", "&frac18; &frac23; &frac25; &frac34; &frac34; &frac35; &frac38; &frac45;"),
("⅚ ⅝ ⅞ 𝒻 ǵ Γ", "&frac56; &frac58; &frac78; &frasl; &frown; &Fscr; &fscr; &gacute; &Gamma;"),
("γ Ϝ ϝ ⪆ Ğ ğ Ģ Ĝ ĝ", "&gamma; &Gammad; &gammad; &gap; &Gbreve; &gbreve; &Gcedil; &Gcirc; &gcirc;"),
("Г г Ġ ġ ≧ ≥ ⪌ ⋛ ≥ ≧ ⩾", "Г г &Gdot; &gdot; &gE; &ge; &gEl; &gel; &ge; &gE; &ges;"),
("⪩ ⪀ ⪂ ⪄ ⪔ 𝔊 𝔤 ⋙ ≫ ⋙", "&gescc; &gesdot; &gesdoto; &gesdotol; &gesles; &Gfr; &gfr; &Gg; &gg; &Gg;"),
("ℷ Ѓ ѓ ≷ ⪥ ⪒ ⪤ ⪊ ⪊ ≩ ⪈", "&gimel; &GJcy; &gjcy; &gl; &gla; &glE; &glj; &gnap; &gnap; &gnE; &gne;"),
("⪈ ≩ ⋧ 𝔾 𝕘 ` ≥ ⋛", "&gne; &gnE; &gnsim; &Gopf; &gopf; &grave; &ge; &gel;"),
("≧ ⪢ ≷ ⩾", "&gE; &GreaterGreater; &gl; &ges;"),
("𝒢 ≳ ⪎ ⪐ > > ≫ >", "&gsim; &Gscr; &gscr; &gsim; &gsime; &gsiml; &gt; &gt; &gg; &gt;"),
("⪧ ⩺ ⋗ ⦕ ⩼ ⪆ ⥸ ⋗", "&gtcc; &gtcir; &gtdot; &gtlPar; &gtquest; &gap; &gtrarr; &gtdot;"),
("⋛ ⪌ ≷ ≳ ˇ \u200a ½ ", "&gel; &gEl; &gl; &gsim; &caron; &hairsp; &half; &Hscr;"),
("Ъ ъ ⇔ ↔ ⥈ ↭ ^ ℏ Ĥ ĥ", "Ъ ъ &iff; &harr; &harrcir; &harrw; ^ &hbar; &Hcirc; &hcirc;"),
("♥ … ⊹ 𝔥 ", "&hearts; &hellip; &hercon; &Hfr; &hfr; &Hscr; &searhk;"),
("⤦ ⇿ ∻ ↩ ↪ 𝕙", "&swarhk; &hoarr; &homtht; &larrhk; &rarrhk; &Hopf; &hopf;"),
("― ─ 𝒽 ℏ Ħ ħ", "&horbar; &boxh; &Hscr; &hscr; &hbar; &Hstrok; &hstrok;"),
("≎ ≏ Í í Í", "&bump; &bumpe; &hybull; &dash; &Iacute; &iacute; &Iacute;"),
("í Î î Î î И и İ Е е", "&iacute; &ic; &Icirc; &icirc; &Icirc; &icirc; И и &Idot; Е е"),
("¡ ¡ ⇔ 𝔦 Ì ì Ì ì ", "&iexcl; &iexcl; &iff; &Im; &ifr; &Igrave; &igrave; &Igrave; &igrave; &ii;"),
("⨌ ∭ ⧜ ℩ IJ ij Ī ī ", "&qint; &tint; &iinfin; &iiota; &IJlig; &ijlig; &Im; &Imacr; &imacr; &Im;"),
(" ı ⊷ Ƶ ⇒ ∈", "&ii; &Iscr; &Im; &imath; &imof; &imped; &rArr; &in;"),
("℅ ∞ ⧝ ı ∬ ∫ ⊺ ", "&incare; &infin; &infintie; &imath; &Int; &int; &intcal; &Zopf;"),
("∫ ⊺ ⋂ ⨗ ⨼ ", "&int; &intcal; &xcap; &intlarhk; &iprod; &ic;"),
(" Ё ё Į į 𝕀 𝕚 Ι ι", "&it; Ё ё &Iogon; &iogon; &Iopf; &iopf; &Iota; &iota;"),
("⨼ ¿ ¿ 𝒾 ∈ ⋵ ⋹ ⋴", "&iprod; &iquest; &iquest; &Iscr; &iscr; &in; &isindot; &isinE; &isins;"),
("⋳ ∈ Ĩ ĩ І і Ï ï Ï", "&isinsv; &in; &it; &Itilde; &itilde; &Iukcy; &iukcy; &Iuml; &iuml; &Iuml;"),
("ï Ĵ ĵ Й й 𝔍 𝔧 ȷ 𝕁 𝕛 𝒥", "&iuml; &Jcirc; &jcirc; Й й &Jfr; &jfr; &jmath; &Jopf; &jopf; &Jscr;"),
("𝒿 Ј ј Є є Κ κ ϰ Ķ", "&jscr; &Jsercy; &jsercy; &Jukcy; &jukcy; &Kappa; &kappa; &kappav; &Kcedil;"),
("ķ К к 𝔎 𝔨 ĸ Х х Ќ ќ 𝕂", "&kcedil; К к &Kfr; &kfr; &kgreen; Х х &KJcy; &kjcy; &Kopf;"),
("𝕜 𝒦 𝓀 ⇚ Ĺ ĺ ⦴ Λ", "&kopf; &Kscr; &kscr; &lAarr; &Lacute; &lacute; &laemptyv; &Lscr; &Lambda;"),
("λ ⟪ ⟨ ⦑ ⟨ ⪅ « «", "&lambda; &Lang; &lang; &langd; &lang; &lap; &Lscr; &laquo; &laquo;"),
("↞ ⇐ ← ⇤ ⤟ ⤝ ↩ ↫ ⤹", "&Larr; &lArr; &larr; &larrb; &larrbfs; &larrfs; &larrhk; &larrlp; &larrpl;"),
("⥳ ↢ ⪫ ⤛ ⤙ ⪭ ⤎ ⤌ ", "&larrsim; &larrtl; &lat; &lAtail; &latail; &late; &lBarr; &lbarr; &lbbrk;"),
("{ [ ⦋ ⦏ ⦍ Ľ ľ Ļ", "{ [ &lbrke; &lbrksld; &lbrkslu; &Lcaron; &lcaron; &Lcedil;"),
("ļ ⌈ { Л л ⤶ “ „ ⥧", "&lcedil; &lceil; { Л л &ldca; &ldquo; &bdquo; &ldrdhar;"),
("⥋ ↲ ≦ ≤ ⟨ ← ⇐", "&ldrushar; &ldsh; &lE; &le; &lang; &larr; &lArr;"),
("← ⇤ ⇆ ↢ ⌈", "&larr; &larrb; &lrarr; &larrtl; &lceil;"),
("⟦ ⥡ ⇃ ⥙", "&lobrk; &LeftDownTeeVector; &dharl; &LeftDownVectorBar;"),
("⌊ ↽ ↼ ⇇", "&lfloor; &lhard; &lharu; &llarr;"),
# ("↔ ⇔ ↔ ⇆", "&LeftRightArrow; &Leftrightarrow; &leftrightarrow; &leftrightarrows;"),
# ("⇋ ↭ ⥎ ⊣", "&leftrightharpoons; &leftrightsquigarrow; &LeftRightVector; &LeftTee;"),
# ("↤ ⥚ ⋋ ⊲", "&LeftTeeArrow; &LeftTeeVector; &leftthreetimes; &LeftTriangle;"),
@@ -666,3 +666,14 @@ def test_utf_to_html_mnemo(input_string, expected_output):
actual_output = codec.encode_from_unicode(input_string, mode="mnemonic")
# Assert (проверка)
assert actual_output == expected_output
@pytest.mark.parametrize("expected_output, input_string", STRINGS_FOR_ENCODE)
def test_html_mnemo_to_utf_back(expected_output, input_string):
"""
Проверяет ОБРАТНОЕ ПОВЕДЕНИЕ: из HTML-мнемоники после encode_from_unicode() в Unicode-строки.
"""
# Act (действие) - тестируем
actual_output = codec.decode_to_unicode(input_string)
# Assert (проверка)
assert actual_output == expected_output