Skip to content

HTML Entity Encoder/Decoder — Python source

Encode text to HTML entities and decode entities back to text (named + numeric). UTF-8 safe, runs entirely in your browser, with a shareable link to your exact input.

This is the Python implementation — the same logic the interactive tool runs, in a shareable, citable form.

# @file python.py
# @language Python
#
# HTML entity encode / decode — pure string transforms that never raise.
# Encode escapes the five HTML-significant characters (& < > ' ") and can
# optionally flatten every non-ASCII code point to a decimal numeric
# reference. Decode resolves named (&amp;, &copy;, …), decimal (&#169;), and
# hex (&#xA9;) references; unknown or malformed references pass through whole.
#
# CosmoDev polyglot showcase port of `html-entity-encoder`, ported from
# src/lib/htmlEntities.ts. Behavior matches the TypeScript lib exactly: same
# inputs yield identical outputs, including the lone-surrogate and
# out-of-range guards (decode never raises on bad input).
#
# Standard library only — no third-party packages.
#
# The named-entity table is the full WHATWG HTML named-character-reference
# set (2125 entries), generated from src/lib/htmlEntityTable.ts so the data
# stays byte-identical to the canonical TypeScript lib.
#
# Display source — part of CosmoDev's polyglot tool pages.
"""HTML entity encode / decode (pure, std-only, total)."""

from __future__ import annotations

import re
from dataclasses import dataclass


@dataclass
class EncodeOptions:
    """Controls how :func:`encode_html` transforms its input.

    ``ascii`` — when true, every non-ASCII code point is also emitted as a
    decimal numeric reference (e.g. © → ``&#169;``), producing ASCII-safe
    output. When false (the default), only the five HTML-significant
    characters are escaped.
    """

    ascii: bool = False


# A well-formed reference: &#xHH; / &#NN; / &name;.
# Compiled once at import; the body capture is everything between '&' and ';'.
_ENTITY = re.compile(r"&(#[xX][0-9a-fA-F]+|#[0-9]+|[A-Za-z][A-Za-z0-9]*);")


def encode_html(text: str, options: EncodeOptions | None = None) -> str:
    """Escape the five HTML-significant characters.

    ``&`` is replaced first so the entities we emit (``&amp;``, ``&lt;``, …)
    are never themselves re-escaped on a later pass — the order is
    load-bearing.

    With ``options.ascii`` set, every non-ASCII code point is additionally
    rewritten to a decimal numeric reference. ``re.sub`` on a ``str`` matches
    by Unicode code point, so an astral character such as an emoji encodes as
    a single reference rather than two surrogate halves, and ``ord()`` yields
    its full scalar value.
    """
    out = (
        text.replace("&", "&amp;")
        .replace("<", "&lt;")
        .replace(">", "&gt;")
        .replace("'", "&apos;")
        .replace('"', "&quot;")
    )

    if options and options.ascii:
        out = re.sub(
            r"[^\x00-\x7F]",
            lambda m: f"&#{ord(m.group())};",
            out,
        )
    return out


def decode_html(text: str) -> str:
    """Decode every recognized reference in ``text``.

    Unknown references and stray ampersands are left exactly as they appear
    in the input. Decode is total: it never raises on malformed or
    out-of-range input — such references are returned verbatim.
    """
    return _ENTITY.sub(_decode_reference, text)


def _decode_reference(match: re.Match[str]) -> str:
    """Resolve one matched reference (``&body;``) to its character, or return
    the original text unchanged when the reference is unrecognized / unsafe.

    Python's ``chr()`` is unusually permissive: unlike the equivalent in
    TypeScript / Go / Rust, it *accepts* lone surrogates (U+D800..U+DFFF) and
    returns a surrogate code unit instead of raising. The explicit surrogate
    guard below is therefore mandatory here — it cannot be folded into the
    out-of-range ``chr()`` check the way ``utf8.ValidRune`` / ``mb_chr`` /
    ``char::from_u32`` handle it in the other ports.

    ``chr()`` *does* raise ``ValueError`` for values above U+10FFFF
    (``sys.maxunicode``); that is caught and falls back to the original text.
    """
    body = match.group(1)

    if body[0] == "#":
        hex_ = body[1] in ("x", "X")
        digits = body[2:] if hex_ else body[1:]
        num = int(digits, 16 if hex_ else 10)

        if 0xD800 <= num <= 0xDFFF:
            return match.group(0)  # lone surrogate — not a valid scalar value
        try:
            return chr(num)
        except ValueError:
            return match.group(0)  # > U+10FFFF

    return HTML_ENTITY_TABLE.get(body, match.group(0))


# The full WHATWG HTML named-character-reference table, name → character.
# Generated from src/lib/htmlEntityTable.ts (2125 entries). Do not edit by
# hand — regenerate from the canonical source.
HTML_ENTITY_TABLE = {
    "AElig": "Æ",
    "AMP": "&",
    "Aacute": "Á",
    "Abreve": "Ă",
    "Acirc": "Â",
    "Acy": "А",
    "Afr": "𝔄",
    "Agrave": "À",
    "Alpha": "Α",
    "Amacr": "Ā",
    "And": "⩓",
    "Aogon": "Ą",
    "Aopf": "𝔸",
    "ApplyFunction": "⁡",
    "Aring": "Å",
    "Ascr": "𝒜",
    "Assign": "≔",
    "Atilde": "Ã",
    "Auml": "Ä",
    "Backslash": "∖",
    "Barv": "⫧",
    "Barwed": "⌆",
    "Bcy": "Б",
    "Because": "∵",
    "Bernoullis": "ℬ",
    "Beta": "Β",
    "Bfr": "𝔅",
    "Bopf": "𝔹",
    "Breve": "˘",
    "Bscr": "ℬ",
    "Bumpeq": "≎",
    "CHcy": "Ч",
    "COPY": "©",
    "Cacute": "Ć",
    "Cap": "⋒",
    "CapitalDifferentialD": "ⅅ",
    "Cayleys": "ℭ",
    "Ccaron": "Č",
    "Ccedil": "Ç",
    "Ccirc": "Ĉ",
    "Cconint": "∰",
    "Cdot": "Ċ",
    "Cedilla": "¸",
    "CenterDot": "·",
    "Cfr": "ℭ",
    "Chi": "Χ",
    "CircleDot": "⊙",
    "CircleMinus": "⊖",
    "CirclePlus": "⊕",
    "CircleTimes": "⊗",
    "ClockwiseContourIntegral": "∲",
    "CloseCurlyDoubleQuote": "”",
    "CloseCurlyQuote": "’",
    "Colon": "∷",
    "Colone": "⩴",
    "Congruent": "≡",
    "Conint": "∯",
    "ContourIntegral": "∮",
    "Copf": "ℂ",
    "Coproduct": "∐",
    "CounterClockwiseContourIntegral": "∳",
    "Cross": "⨯",
    "Cscr": "𝒞",
    "Cup": "⋓",
    "CupCap": "≍",
    "DD": "ⅅ",
    "DDotrahd": "⤑",
    "DJcy": "Ђ",
    "DScy": "Ѕ",
    "DZcy": "Џ",
    "Dagger": "‡",
    "Darr": "↡",
    "Dashv": "⫤",
    "Dcaron": "Ď",
    "Dcy": "Д",
    "Del": "∇",
    "Delta": "Δ",
    "Dfr": "𝔇",
    "DiacriticalAcute": "´",
    "DiacriticalDot": "˙",
    "DiacriticalDoubleAcute": "˝",
    "DiacriticalGrave": "`",
    "DiacriticalTilde": "˜",
    "Diamond": "⋄",
    "DifferentialD": "ⅆ",
    "Dopf": "𝔻",
    "Dot": "¨",
    "DotDot": "⃜",
    "DotEqual": "≐",
    "DoubleContourIntegral": "∯",
    "DoubleDot": "¨",
    "DoubleDownArrow": "⇓",
    "DoubleLeftArrow": "⇐",
    "DoubleLeftRightArrow": "⇔",
    "DoubleLeftTee": "⫤",
    "DoubleLongLeftArrow": "⟸",
    "DoubleLongLeftRightArrow": "⟺",
    "DoubleLongRightArrow": "⟹",
    "DoubleRightArrow": "⇒",
    "DoubleRightTee": "⊨",
    "DoubleUpArrow": "⇑",
    "DoubleUpDownArrow": "⇕",
    "DoubleVerticalBar": "∥",
    "DownArrow": "↓",
    "DownArrowBar": "⤓",
    "DownArrowUpArrow": "⇵",
    "DownBreve": "̑",
    "DownLeftRightVector": "⥐",
    "DownLeftTeeVector": "⥞",
    "DownLeftVector": "↽",
    "DownLeftVectorBar": "⥖",
    "DownRightTeeVector": "⥟",
    "DownRightVector": "⇁",
    "DownRightVectorBar": "⥗",
    "DownTee": "⊤",
    "DownTeeArrow": "↧",
    "Downarrow": "⇓",
    "Dscr": "𝒟",
    "Dstrok": "Đ",
    "ENG": "Ŋ",
    "ETH": "Ð",
    "Eacute": "É",
    "Ecaron": "Ě",
    "Ecirc": "Ê",
    "Ecy": "Э",
    "Edot": "Ė",
    "Efr": "𝔈",
    "Egrave": "È",
    "Element": "∈",
    "Emacr": "Ē",
    "EmptySmallSquare": "◻",
    "EmptyVerySmallSquare": "▫",
    "Eogon": "Ę",
    "Eopf": "𝔼",
    "Epsilon": "Ε",
    "Equal": "⩵",
    "EqualTilde": "≂",
    "Equilibrium": "⇌",
    "Escr": "ℰ",
    "Esim": "⩳",
    "Eta": "Η",
    "Euml": "Ë",
    "Exists": "∃",
    "ExponentialE": "ⅇ",
    "Fcy": "Ф",
    "Ffr": "𝔉",
    "FilledSmallSquare": "◼",
    "FilledVerySmallSquare": "▪",
    "Fopf": "𝔽",
    "ForAll": "∀",
    "Fouriertrf": "ℱ",
    "Fscr": "ℱ",
    "GJcy": "Ѓ",
    "GT": ">",
    "Gamma": "Γ",
    "Gammad": "Ϝ",
    "Gbreve": "Ğ",
    "Gcedil": "Ģ",
    "Gcirc": "Ĝ",
    "Gcy": "Г",
    "Gdot": "Ġ",
    "Gfr": "𝔊",
    "Gg": "⋙",
    "Gopf": "𝔾",
    "GreaterEqual": "≥",
    "GreaterEqualLess": "⋛",
    "GreaterFullEqual": "≧",
    "GreaterGreater": "⪢",
    "GreaterLess": "≷",
    "GreaterSlantEqual": "⩾",
    "GreaterTilde": "≳",
    "Gscr": "𝒢",
    "Gt": "≫",
    "HARDcy": "Ъ",
    "Hacek": "ˇ",
    "Hat": "^",
    "Hcirc": "Ĥ",
    "Hfr": "ℌ",
    "HilbertSpace": "ℋ",
    "Hopf": "ℍ",
    "HorizontalLine": "─",
    "Hscr": "ℋ",
    "Hstrok": "Ħ",
    "HumpDownHump": "≎",
    "HumpEqual": "≏",
    "IEcy": "Е",
    "IJlig": "IJ",
    "IOcy": "Ё",
    "Iacute": "Í",
    "Icirc": "Î",
    "Icy": "И",
    "Idot": "İ",
    "Ifr": "ℑ",
    "Igrave": "Ì",
    "Im": "ℑ",
    "Imacr": "Ī",
    "ImaginaryI": "ⅈ",
    "Implies": "⇒",
    "Int": "∬",
    "Integral": "∫",
    "Intersection": "⋂",
    "InvisibleComma": "⁣",
    "InvisibleTimes": "⁢",
    "Iogon": "Į",
    "Iopf": "𝕀",
    "Iota": "Ι",
    "Iscr": "ℐ",
    "Itilde": "Ĩ",
    "Iukcy": "І",
    "Iuml": "Ï",
    "Jcirc": "Ĵ",
    "Jcy": "Й",
    "Jfr": "𝔍",
    "Jopf": "𝕁",
    "Jscr": "𝒥",
    "Jsercy": "Ј",
    "Jukcy": "Є",
    "KHcy": "Х",
    "KJcy": "Ќ",
    "Kappa": "Κ",
    "Kcedil": "Ķ",
    "Kcy": "К",
    "Kfr": "𝔎",
    "Kopf": "𝕂",
    "Kscr": "𝒦",
    "LJcy": "Љ",
    "LT": "<",
    "Lacute": "Ĺ",
    "Lambda": "Λ",
    "Lang": "⟪",
    "Laplacetrf": "ℒ",
    "Larr": "↞",
    "Lcaron": "Ľ",
    "Lcedil": "Ļ",
    "Lcy": "Л",
    "LeftAngleBracket": "⟨",
    "LeftArrow": "←",
    "LeftArrowBar": "⇤",
    "LeftArrowRightArrow": "⇆",
    "LeftCeiling": "⌈",
    "LeftDoubleBracket": "⟦",
    "LeftDownTeeVector": "⥡",
    "LeftDownVector": "⇃",
    "LeftDownVectorBar": "⥙",
    "LeftFloor": "⌊",
    "LeftRightArrow": "↔",
    "LeftRightVector": "⥎",
    "LeftTee": "⊣",
    "LeftTeeArrow": "↤",
    "LeftTeeVector": "⥚",
    "LeftTriangle": "⊲",
    "LeftTriangleBar": "⧏",
    "LeftTriangleEqual": "⊴",
    "LeftUpDownVector": "⥑",
    "LeftUpTeeVector": "⥠",
    "LeftUpVector": "↿",
    "LeftUpVectorBar": "⥘",
    "LeftVector": "↼",
    "LeftVectorBar": "⥒",
    "Leftarrow": "⇐",
    "Leftrightarrow": "⇔",
    "LessEqualGreater": "⋚",
    "LessFullEqual": "≦",
    "LessGreater": "≶",
    "LessLess": "⪡",
    "LessSlantEqual": "⩽",
    "LessTilde": "≲",
    "Lfr": "𝔏",
    "Ll": "⋘",
    "Lleftarrow": "⇚",
    "Lmidot": "Ŀ",
    "LongLeftArrow": "⟵",
    "LongLeftRightArrow": "⟷",
    "LongRightArrow": "⟶",
    "Longleftarrow": "⟸",
    "Longleftrightarrow": "⟺",
    "Longrightarrow": "⟹",
    "Lopf": "𝕃",
    "LowerLeftArrow": "↙",
    "LowerRightArrow": "↘",
    "Lscr": "ℒ",
    "Lsh": "↰",
    "Lstrok": "Ł",
    "Lt": "≪",
    "Map": "⤅",
    "Mcy": "М",
    "MediumSpace": " ",
    "Mellintrf": "ℳ",
    "Mfr": "𝔐",
    "MinusPlus": "∓",
    "Mopf": "𝕄",
    "Mscr": "ℳ",
    "Mu": "Μ",
    "NJcy": "Њ",
    "Nacute": "Ń",
    "Ncaron": "Ň",
    "Ncedil": "Ņ",
    "Ncy": "Н",
    "NegativeMediumSpace": "​",
    "NegativeThickSpace": "​",
    "NegativeThinSpace": "​",
    "NegativeVeryThinSpace": "​",
    "NestedGreaterGreater": "≫",
    "NestedLessLess": "≪",
    "NewLine": "\n",
    "Nfr": "𝔑",
    "NoBreak": "⁠",
    "NonBreakingSpace": " ",
    "Nopf": "ℕ",
    "Not": "⫬",
    "NotCongruent": "≢",
    "NotCupCap": "≭",
    "NotDoubleVerticalBar": "∦",
    "NotElement": "∉",
    "NotEqual": "≠",
    "NotEqualTilde": "≂̸",
    "NotExists": "∄",
    "NotGreater": "≯",
    "NotGreaterEqual": "≱",
    "NotGreaterFullEqual": "≧̸",
    "NotGreaterGreater": "≫̸",
    "NotGreaterLess": "≹",
    "NotGreaterSlantEqual": "⩾̸",
    "NotGreaterTilde": "≵",
    "NotHumpDownHump": "≎̸",
    "NotHumpEqual": "≏̸",
    "NotLeftTriangle": "⋪",
    "NotLeftTriangleBar": "⧏̸",
    "NotLeftTriangleEqual": "⋬",
    "NotLess": "≮",
    "NotLessEqual": "≰",
    "NotLessGreater": "≸",
    "NotLessLess": "≪̸",
    "NotLessSlantEqual": "⩽̸",
    "NotLessTilde": "≴",
    "NotNestedGreaterGreater": "⪢̸",
    "NotNestedLessLess": "⪡̸",
    "NotPrecedes": "⊀",
    "NotPrecedesEqual": "⪯̸",
    "NotPrecedesSlantEqual": "⋠",
    "NotReverseElement": "∌",
    "NotRightTriangle": "⋫",
    "NotRightTriangleBar": "⧐̸",
    "NotRightTriangleEqual": "⋭",
    "NotSquareSubset": "⊏̸",
    "NotSquareSubsetEqual": "⋢",
    "NotSquareSuperset": "⊐̸",
    "NotSquareSupersetEqual": "⋣",
    "NotSubset": "⊂⃒",
    "NotSubsetEqual": "⊈",
    "NotSucceeds": "⊁",
    "NotSucceedsEqual": "⪰̸",
    "NotSucceedsSlantEqual": "⋡",
    "NotSucceedsTilde": "≿̸",
    "NotSuperset": "⊃⃒",
    "NotSupersetEqual": "⊉",
    "NotTilde": "≁",
    "NotTildeEqual": "≄",
    "NotTildeFullEqual": "≇",
    "NotTildeTilde": "≉",
    "NotVerticalBar": "∤",
    "Nscr": "𝒩",
    "Ntilde": "Ñ",
    "Nu": "Ν",
    "OElig": "Œ",
    "Oacute": "Ó",
    "Ocirc": "Ô",
    "Ocy": "О",
    "Odblac": "Ő",
    "Ofr": "𝔒",
    "Ograve": "Ò",
    "Omacr": "Ō",
    "Omega": "Ω",
    "Omicron": "Ο",
    "Oopf": "𝕆",
    "OpenCurlyDoubleQuote": "“",
    "OpenCurlyQuote": "‘",
    "Or": "⩔",
    "Oscr": "𝒪",
    "Oslash": "Ø",
    "Otilde": "Õ",
    "Otimes": "⨷",
    "Ouml": "Ö",
    "OverBar": "‾",
    "OverBrace": "⏞",
    "OverBracket": "⎴",
    "OverParenthesis": "⏜",
    "PartialD": "∂",
    "Pcy": "П",
    "Pfr": "𝔓",
    "Phi": "Φ",
    "Pi": "Π",
    "PlusMinus": "±",
    "Poincareplane": "ℌ",
    "Popf": "ℙ",
    "Pr": "⪻",
    "Precedes": "≺",
    "PrecedesEqual": "⪯",
    "PrecedesSlantEqual": "≼",
    "PrecedesTilde": "≾",
    "Prime": "″",
    "Product": "∏",
    "Proportion": "∷",
    "Proportional": "∝",
    "Pscr": "𝒫",
    "Psi": "Ψ",
    "QUOT": "\"",
    "Qfr": "𝔔",
    "Qopf": "ℚ",
    "Qscr": "𝒬",
    "RBarr": "⤐",
    "REG": "®",
    "Racute": "Ŕ",
    "Rang": "⟫",
    "Rarr": "↠",
    "Rarrtl": "⤖",
    "Rcaron": "Ř",
    "Rcedil": "Ŗ",
    "Rcy": "Р",
    "Re": "ℜ",
    "ReverseElement": "∋",
    "ReverseEquilibrium": "⇋",
    "ReverseUpEquilibrium": "⥯",
    "Rfr": "ℜ",
    "Rho": "Ρ",
    "RightAngleBracket": "⟩",
    "RightArrow": "→",
    "RightArrowBar": "⇥",
    "RightArrowLeftArrow": "⇄",
    "RightCeiling": "⌉",
    "RightDoubleBracket": "⟧",
    "RightDownTeeVector": "⥝",
    "RightDownVector": "⇂",
    "RightDownVectorBar": "⥕",
    "RightFloor": "⌋",
    "RightTee": "⊢",
    "RightTeeArrow": "↦",
    "RightTeeVector": "⥛",
    "RightTriangle": "⊳",
    "RightTriangleBar": "⧐",
    "RightTriangleEqual": "⊵",
    "RightUpDownVector": "⥏",
    "RightUpTeeVector": "⥜",
    "RightUpVector": "↾",
    "RightUpVectorBar": "⥔",
    "RightVector": "⇀",
    "RightVectorBar": "⥓",
    "Rightarrow": "⇒",
    "Ropf": "ℝ",
    "RoundImplies": "⥰",
    "Rrightarrow": "⇛",
    "Rscr": "ℛ",
    "Rsh": "↱",
    "RuleDelayed": "⧴",
    "SHCHcy": "Щ",
    "SHcy": "Ш",
    "SOFTcy": "Ь",
    "Sacute": "Ś",
    "Sc": "⪼",
    "Scaron": "Š",
    "Scedil": "Ş",
    "Scirc": "Ŝ",
    "Scy": "С",
    "Sfr": "𝔖",
    "ShortDownArrow": "↓",
    "ShortLeftArrow": "←",
    "ShortRightArrow": "→",
    "ShortUpArrow": "↑",
    "Sigma": "Σ",
    "SmallCircle": "∘",
    "Sopf": "𝕊",
    "Sqrt": "√",
    "Square": "□",
    "SquareIntersection": "⊓",
    "SquareSubset": "⊏",
    "SquareSubsetEqual": "⊑",
    "SquareSuperset": "⊐",
    "SquareSupersetEqual": "⊒",
    "SquareUnion": "⊔",
    "Sscr": "𝒮",
    "Star": "⋆",
    "Sub": "⋐",
    "Subset": "⋐",
    "SubsetEqual": "⊆",
    "Succeeds": "≻",
    "SucceedsEqual": "⪰",
    "SucceedsSlantEqual": "≽",
    "SucceedsTilde": "≿",
    "SuchThat": "∋",
    "Sum": "∑",
    "Sup": "⋑",
    "Superset": "⊃",
    "SupersetEqual": "⊇",
    "Supset": "⋑",
    "THORN": "Þ",
    "TRADE": "™",
    "TSHcy": "Ћ",
    "TScy": "Ц",
    "Tab": "\t",
    "Tau": "Τ",
    "Tcaron": "Ť",
    "Tcedil": "Ţ",
    "Tcy": "Т",
    "Tfr": "𝔗",
    "Therefore": "∴",
    "Theta": "Θ",
    "ThickSpace": "  ",
    "ThinSpace": " ",
    "Tilde": "∼",
    "TildeEqual": "≃",
    "TildeFullEqual": "≅",
    "TildeTilde": "≈",
    "Topf": "𝕋",
    "TripleDot": "⃛",
    "Tscr": "𝒯",
    "Tstrok": "Ŧ",
    "Uacute": "Ú",
    "Uarr": "↟",
    "Uarrocir": "⥉",
    "Ubrcy": "Ў",
    "Ubreve": "Ŭ",
    "Ucirc": "Û",
    "Ucy": "У",
    "Udblac": "Ű",
    "Ufr": "𝔘",
    "Ugrave": "Ù",
    "Umacr": "Ū",
    "UnderBar": "_",
    "UnderBrace": "⏟",
    "UnderBracket": "⎵",
    "UnderParenthesis": "⏝",
    "Union": "⋃",
    "UnionPlus": "⊎",
    "Uogon": "Ų",
    "Uopf": "𝕌",
    "UpArrow": "↑",
    "UpArrowBar": "⤒",
    "UpArrowDownArrow": "⇅",
    "UpDownArrow": "↕",
    "UpEquilibrium": "⥮",
    "UpTee": "⊥",
    "UpTeeArrow": "↥",
    "Uparrow": "⇑",
    "Updownarrow": "⇕",
    "UpperLeftArrow": "↖",
    "UpperRightArrow": "↗",
    "Upsi": "ϒ",
    "Upsilon": "Υ",
    "Uring": "Ů",
    "Uscr": "𝒰",
    "Utilde": "Ũ",
    "Uuml": "Ü",
    "VDash": "⊫",
    "Vbar": "⫫",
    "Vcy": "В",
    "Vdash": "⊩",
    "Vdashl": "⫦",
    "Vee": "⋁",
    "Verbar": "‖",
    "Vert": "‖",
    "VerticalBar": "∣",
    "VerticalLine": "|",
    "VerticalSeparator": "❘",
    "VerticalTilde": "≀",
    "VeryThinSpace": " ",
    "Vfr": "𝔙",
    "Vopf": "𝕍",
    "Vscr": "𝒱",
    "Vvdash": "⊪",
    "Wcirc": "Ŵ",
    "Wedge": "⋀",
    "Wfr": "𝔚",
    "Wopf": "𝕎",
    "Wscr": "𝒲",
    "Xfr": "𝔛",
    "Xi": "Ξ",
    "Xopf": "𝕏",
    "Xscr": "𝒳",
    "YAcy": "Я",
    "YIcy": "Ї",
    "YUcy": "Ю",
    "Yacute": "Ý",
    "Ycirc": "Ŷ",
    "Ycy": "Ы",
    "Yfr": "𝔜",
    "Yopf": "𝕐",
    "Yscr": "𝒴",
    "Yuml": "Ÿ",
    "ZHcy": "Ж",
    "Zacute": "Ź",
    "Zcaron": "Ž",
    "Zcy": "З",
    "Zdot": "Ż",
    "ZeroWidthSpace": "​",
    "Zeta": "Ζ",
    "Zfr": "ℨ",
    "Zopf": "ℤ",
    "Zscr": "𝒵",
    "aacute": "á",
    "abreve": "ă",
    "ac": "∾",
    "acE": "∾̳",
    "acd": "∿",
    "acirc": "â",
    "acute": "´",
    "acy": "а",
    "aelig": "æ",
    "af": "⁡",
    "afr": "𝔞",
    "agrave": "à",
    "alefsym": "ℵ",
    "aleph": "ℵ",
    "alpha": "α",
    "amacr": "ā",
    "amalg": "⨿",
    "amp": "&",
    "and": "∧",
    "andand": "⩕",
    "andd": "⩜",
    "andslope": "⩘",
    "andv": "⩚",
    "ang": "∠",
    "ange": "⦤",
    "angle": "∠",
    "angmsd": "∡",
    "angmsdaa": "⦨",
    "angmsdab": "⦩",
    "angmsdac": "⦪",
    "angmsdad": "⦫",
    "angmsdae": "⦬",
    "angmsdaf": "⦭",
    "angmsdag": "⦮",
    "angmsdah": "⦯",
    "angrt": "∟",
    "angrtvb": "⊾",
    "angrtvbd": "⦝",
    "angsph": "∢",
    "angst": "Å",
    "angzarr": "⍼",
    "aogon": "ą",
    "aopf": "𝕒",
    "ap": "≈",
    "apE": "⩰",
    "apacir": "⩯",
    "ape": "≊",
    "apid": "≋",
    "apos": "'",
    "approx": "≈",
    "approxeq": "≊",
    "aring": "å",
    "ascr": "𝒶",
    "ast": "*",
    "asymp": "≈",
    "asympeq": "≍",
    "atilde": "ã",
    "auml": "ä",
    "awconint": "∳",
    "awint": "⨑",
    "bNot": "⫭",
    "backcong": "≌",
    "backepsilon": "϶",
    "backprime": "‵",
    "backsim": "∽",
    "backsimeq": "⋍",
    "barvee": "⊽",
    "barwed": "⌅",
    "barwedge": "⌅",
    "bbrk": "⎵",
    "bbrktbrk": "⎶",
    "bcong": "≌",
    "bcy": "б",
    "bdquo": "„",
    "becaus": "∵",
    "because": "∵",
    "bemptyv": "⦰",
    "bepsi": "϶",
    "bernou": "ℬ",
    "beta": "β",
    "beth": "ℶ",
    "between": "≬",
    "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": "█",
    "bne": "=⃥",
    "bnequiv": "≡⃥",
    "bnot": "⌐",
    "bopf": "𝕓",
    "bot": "⊥",
    "bottom": "⊥",
    "bowtie": "⋈",
    "boxDL": "╗",
    "boxDR": "╔",
    "boxDl": "╖",
    "boxDr": "╓",
    "boxH": "═",
    "boxHD": "╦",
    "boxHU": "╩",
    "boxHd": "╤",
    "boxHu": "╧",
    "boxUL": "╝",
    "boxUR": "╚",
    "boxUl": "╜",
    "boxUr": "╙",
    "boxV": "║",
    "boxVH": "╬",
    "boxVL": "╣",
    "boxVR": "╠",
    "boxVh": "╫",
    "boxVl": "╢",
    "boxVr": "╟",
    "boxbox": "⧉",
    "boxdL": "╕",
    "boxdR": "╒",
    "boxdl": "┐",
    "boxdr": "┌",
    "boxh": "─",
    "boxhD": "╥",
    "boxhU": "╨",
    "boxhd": "┬",
    "boxhu": "┴",
    "boxminus": "⊟",
    "boxplus": "⊞",
    "boxtimes": "⊠",
    "boxuL": "╛",
    "boxuR": "╘",
    "boxul": "┘",
    "boxur": "└",
    "boxv": "│",
    "boxvH": "╪",
    "boxvL": "╡",
    "boxvR": "╞",
    "boxvh": "┼",
    "boxvl": "┤",
    "boxvr": "├",
    "bprime": "‵",
    "breve": "˘",
    "brvbar": "¦",
    "bscr": "𝒷",
    "bsemi": "⁏",
    "bsim": "∽",
    "bsime": "⋍",
    "bsol": "\\",
    "bsolb": "⧅",
    "bsolhsub": "⟈",
    "bull": "•",
    "bullet": "•",
    "bump": "≎",
    "bumpE": "⪮",
    "bumpe": "≏",
    "bumpeq": "≏",
    "cacute": "ć",
    "cap": "∩",
    "capand": "⩄",
    "capbrcup": "⩉",
    "capcap": "⩋",
    "capcup": "⩇",
    "capdot": "⩀",
    "caps": "∩︀",
    "caret": "⁁",
    "caron": "ˇ",
    "ccaps": "⩍",
    "ccaron": "č",
    "ccedil": "ç",
    "ccirc": "ĉ",
    "ccups": "⩌",
    "ccupssm": "⩐",
    "cdot": "ċ",
    "cedil": "¸",
    "cemptyv": "⦲",
    "cent": "¢",
    "centerdot": "·",
    "cfr": "𝔠",
    "chcy": "ч",
    "check": "✓",
    "checkmark": "✓",
    "chi": "χ",
    "cir": "○",
    "cirE": "⧃",
    "circ": "ˆ",
    "circeq": "≗",
    "circlearrowleft": "↺",
    "circlearrowright": "↻",
    "circledR": "®",
    "circledS": "Ⓢ",
    "circledast": "⊛",
    "circledcirc": "⊚",
    "circleddash": "⊝",
    "cire": "≗",
    "cirfnint": "⨐",
    "cirmid": "⫯",
    "cirscir": "⧂",
    "clubs": "♣",
    "clubsuit": "♣",
    "colon": ":",
    "colone": "≔",
    "coloneq": "≔",
    "comma": ",",
    "commat": "@",
    "comp": "∁",
    "compfn": "∘",
    "complement": "∁",
    "complexes": "ℂ",
    "cong": "≅",
    "congdot": "⩭",
    "conint": "∮",
    "copf": "𝕔",
    "coprod": "∐",
    "copy": "©",
    "copysr": "℗",
    "crarr": "↵",
    "cross": "✗",
    "cscr": "𝒸",
    "csub": "⫏",
    "csube": "⫑",
    "csup": "⫐",
    "csupe": "⫒",
    "ctdot": "⋯",
    "cudarrl": "⤸",
    "cudarrr": "⤵",
    "cuepr": "⋞",
    "cuesc": "⋟",
    "cularr": "↶",
    "cularrp": "⤽",
    "cup": "∪",
    "cupbrcap": "⩈",
    "cupcap": "⩆",
    "cupcup": "⩊",
    "cupdot": "⊍",
    "cupor": "⩅",
    "cups": "∪︀",
    "curarr": "↷",
    "curarrm": "⤼",
    "curlyeqprec": "⋞",
    "curlyeqsucc": "⋟",
    "curlyvee": "⋎",
    "curlywedge": "⋏",
    "curren": "¤",
    "curvearrowleft": "↶",
    "curvearrowright": "↷",
    "cuvee": "⋎",
    "cuwed": "⋏",
    "cwconint": "∲",
    "cwint": "∱",
    "cylcty": "⌭",
    "dArr": "⇓",
    "dHar": "⥥",
    "dagger": "†",
    "daleth": "ℸ",
    "darr": "↓",
    "dash": "‐",
    "dashv": "⊣",
    "dbkarow": "⤏",
    "dblac": "˝",
    "dcaron": "ď",
    "dcy": "д",
    "dd": "ⅆ",
    "ddagger": "‡",
    "ddarr": "⇊",
    "ddotseq": "⩷",
    "deg": "°",
    "delta": "δ",
    "demptyv": "⦱",
    "dfisht": "⥿",
    "dfr": "𝔡",
    "dharl": "⇃",
    "dharr": "⇂",
    "diam": "⋄",
    "diamond": "⋄",
    "diamondsuit": "♦",
    "diams": "♦",
    "die": "¨",
    "digamma": "ϝ",
    "disin": "⋲",
    "div": "÷",
    "divide": "÷",
    "divideontimes": "⋇",
    "divonx": "⋇",
    "djcy": "ђ",
    "dlcorn": "⌞",
    "dlcrop": "⌍",
    "dollar": "$",
    "dopf": "𝕕",
    "dot": "˙",
    "doteq": "≐",
    "doteqdot": "≑",
    "dotminus": "∸",
    "dotplus": "∔",
    "dotsquare": "⊡",
    "doublebarwedge": "⌆",
    "downarrow": "↓",
    "downdownarrows": "⇊",
    "downharpoonleft": "⇃",
    "downharpoonright": "⇂",
    "drbkarow": "⤐",
    "drcorn": "⌟",
    "drcrop": "⌌",
    "dscr": "𝒹",
    "dscy": "ѕ",
    "dsol": "⧶",
    "dstrok": "đ",
    "dtdot": "⋱",
    "dtri": "▿",
    "dtrif": "▾",
    "duarr": "⇵",
    "duhar": "⥯",
    "dwangle": "⦦",
    "dzcy": "џ",
    "dzigrarr": "⟿",
    "eDDot": "⩷",
    "eDot": "≑",
    "eacute": "é",
    "easter": "⩮",
    "ecaron": "ě",
    "ecir": "≖",
    "ecirc": "ê",
    "ecolon": "≕",
    "ecy": "э",
    "edot": "ė",
    "ee": "ⅇ",
    "efDot": "≒",
    "efr": "𝔢",
    "eg": "⪚",
    "egrave": "è",
    "egs": "⪖",
    "egsdot": "⪘",
    "el": "⪙",
    "elinters": "⏧",
    "ell": "ℓ",
    "els": "⪕",
    "elsdot": "⪗",
    "emacr": "ē",
    "empty": "∅",
    "emptyset": "∅",
    "emptyv": "∅",
    "emsp13": " ",
    "emsp14": " ",
    "emsp": " ",
    "eng": "ŋ",
    "ensp": " ",
    "eogon": "ę",
    "eopf": "𝕖",
    "epar": "⋕",
    "eparsl": "⧣",
    "eplus": "⩱",
    "epsi": "ε",
    "epsilon": "ε",
    "epsiv": "ϵ",
    "eqcirc": "≖",
    "eqcolon": "≕",
    "eqsim": "≂",
    "eqslantgtr": "⪖",
    "eqslantless": "⪕",
    "equals": "=",
    "equest": "≟",
    "equiv": "≡",
    "equivDD": "⩸",
    "eqvparsl": "⧥",
    "erDot": "≓",
    "erarr": "⥱",
    "escr": "ℯ",
    "esdot": "≐",
    "esim": "≂",
    "eta": "η",
    "eth": "ð",
    "euml": "ë",
    "euro": "€",
    "excl": "!",
    "exist": "∃",
    "expectation": "ℰ",
    "exponentiale": "ⅇ",
    "fallingdotseq": "≒",
    "fcy": "ф",
    "female": "♀",
    "ffilig": "ffi",
    "fflig": "ff",
    "ffllig": "ffl",
    "ffr": "𝔣",
    "filig": "fi",
    "fjlig": "fj",
    "flat": "♭",
    "fllig": "fl",
    "fltns": "▱",
    "fnof": "ƒ",
    "fopf": "𝕗",
    "forall": "∀",
    "fork": "⋔",
    "forkv": "⫙",
    "fpartint": "⨍",
    "frac12": "½",
    "frac13": "⅓",
    "frac14": "¼",
    "frac15": "⅕",
    "frac16": "⅙",
    "frac18": "⅛",
    "frac23": "⅔",
    "frac25": "⅖",
    "frac34": "¾",
    "frac35": "⅗",
    "frac38": "⅜",
    "frac45": "⅘",
    "frac56": "⅚",
    "frac58": "⅝",
    "frac78": "⅞",
    "frasl": "⁄",
    "frown": "⌢",
    "fscr": "𝒻",
    "gE": "≧",
    "gEl": "⪌",
    "gacute": "ǵ",
    "gamma": "γ",
    "gammad": "ϝ",
    "gap": "⪆",
    "gbreve": "ğ",
    "gcirc": "ĝ",
    "gcy": "г",
    "gdot": "ġ",
    "ge": "≥",
    "gel": "⋛",
    "geq": "≥",
    "geqq": "≧",
    "geqslant": "⩾",
    "ges": "⩾",
    "gescc": "⪩",
    "gesdot": "⪀",
    "gesdoto": "⪂",
    "gesdotol": "⪄",
    "gesl": "⋛︀",
    "gesles": "⪔",
    "gfr": "𝔤",
    "gg": "≫",
    "ggg": "⋙",
    "gimel": "ℷ",
    "gjcy": "ѓ",
    "gl": "≷",
    "glE": "⪒",
    "gla": "⪥",
    "glj": "⪤",
    "gnE": "≩",
    "gnap": "⪊",
    "gnapprox": "⪊",
    "gne": "⪈",
    "gneq": "⪈",
    "gneqq": "≩",
    "gnsim": "⋧",
    "gopf": "𝕘",
    "grave": "`",
    "gscr": "ℊ",
    "gsim": "≳",
    "gsime": "⪎",
    "gsiml": "⪐",
    "gt": ">",
    "gtcc": "⪧",
    "gtcir": "⩺",
    "gtdot": "⋗",
    "gtlPar": "⦕",
    "gtquest": "⩼",
    "gtrapprox": "⪆",
    "gtrarr": "⥸",
    "gtrdot": "⋗",
    "gtreqless": "⋛",
    "gtreqqless": "⪌",
    "gtrless": "≷",
    "gtrsim": "≳",
    "gvertneqq": "≩︀",
    "gvnE": "≩︀",
    "hArr": "⇔",
    "hairsp": " ",
    "half": "½",
    "hamilt": "ℋ",
    "hardcy": "ъ",
    "harr": "↔",
    "harrcir": "⥈",
    "harrw": "↭",
    "hbar": "ℏ",
    "hcirc": "ĥ",
    "hearts": "♥",
    "heartsuit": "♥",
    "hellip": "…",
    "hercon": "⊹",
    "hfr": "𝔥",
    "hksearow": "⤥",
    "hkswarow": "⤦",
    "hoarr": "⇿",
    "homtht": "∻",
    "hookleftarrow": "↩",
    "hookrightarrow": "↪",
    "hopf": "𝕙",
    "horbar": "―",
    "hscr": "𝒽",
    "hslash": "ℏ",
    "hstrok": "ħ",
    "hybull": "⁃",
    "hyphen": "‐",
    "iacute": "í",
    "ic": "⁣",
    "icirc": "î",
    "icy": "и",
    "iecy": "е",
    "iexcl": "¡",
    "iff": "⇔",
    "ifr": "𝔦",
    "igrave": "ì",
    "ii": "ⅈ",
    "iiiint": "⨌",
    "iiint": "∭",
    "iinfin": "⧜",
    "iiota": "℩",
    "ijlig": "ij",
    "imacr": "ī",
    "image": "ℑ",
    "imagline": "ℐ",
    "imagpart": "ℑ",
    "imath": "ı",
    "imof": "⊷",
    "imped": "Ƶ",
    "in": "∈",
    "incare": "℅",
    "infin": "∞",
    "infintie": "⧝",
    "inodot": "ı",
    "int": "∫",
    "intcal": "⊺",
    "integers": "ℤ",
    "intercal": "⊺",
    "intlarhk": "⨗",
    "intprod": "⨼",
    "iocy": "ё",
    "iogon": "į",
    "iopf": "𝕚",
    "iota": "ι",
    "iprod": "⨼",
    "iquest": "¿",
    "iscr": "𝒾",
    "isin": "∈",
    "isinE": "⋹",
    "isindot": "⋵",
    "isins": "⋴",
    "isinsv": "⋳",
    "isinv": "∈",
    "it": "⁢",
    "itilde": "ĩ",
    "iukcy": "і",
    "iuml": "ï",
    "jcirc": "ĵ",
    "jcy": "й",
    "jfr": "𝔧",
    "jmath": "ȷ",
    "jopf": "𝕛",
    "jscr": "𝒿",
    "jsercy": "ј",
    "jukcy": "є",
    "kappa": "κ",
    "kappav": "ϰ",
    "kcedil": "ķ",
    "kcy": "к",
    "kfr": "𝔨",
    "kgreen": "ĸ",
    "khcy": "х",
    "kjcy": "ќ",
    "kopf": "𝕜",
    "kscr": "𝓀",
    "lAarr": "⇚",
    "lArr": "⇐",
    "lAtail": "⤛",
    "lBarr": "⤎",
    "lE": "≦",
    "lEg": "⪋",
    "lHar": "⥢",
    "lacute": "ĺ",
    "laemptyv": "⦴",
    "lagran": "ℒ",
    "lambda": "λ",
    "lang": "⟨",
    "langd": "⦑",
    "langle": "⟨",
    "lap": "⪅",
    "laquo": "«",
    "larr": "←",
    "larrb": "⇤",
    "larrbfs": "⤟",
    "larrfs": "⤝",
    "larrhk": "↩",
    "larrlp": "↫",
    "larrpl": "⤹",
    "larrsim": "⥳",
    "larrtl": "↢",
    "lat": "⪫",
    "latail": "⤙",
    "late": "⪭",
    "lates": "⪭︀",
    "lbarr": "⤌",
    "lbbrk": "❲",
    "lbrace": "{",
    "lbrack": "[",
    "lbrke": "⦋",
    "lbrksld": "⦏",
    "lbrkslu": "⦍",
    "lcaron": "ľ",
    "lcedil": "ļ",
    "lceil": "⌈",
    "lcub": "{",
    "lcy": "л",
    "ldca": "⤶",
    "ldquo": "“",
    "ldquor": "„",
    "ldrdhar": "⥧",
    "ldrushar": "⥋",
    "ldsh": "↲",
    "le": "≤",
    "leftarrow": "←",
    "leftarrowtail": "↢",
    "leftharpoondown": "↽",
    "leftharpoonup": "↼",
    "leftleftarrows": "⇇",
    "leftrightarrow": "↔",
    "leftrightarrows": "⇆",
    "leftrightharpoons": "⇋",
    "leftrightsquigarrow": "↭",
    "leftthreetimes": "⋋",
    "leg": "⋚",
    "leq": "≤",
    "leqq": "≦",
    "leqslant": "⩽",
    "les": "⩽",
    "lescc": "⪨",
    "lesdot": "⩿",
    "lesdoto": "⪁",
    "lesdotor": "⪃",
    "lesg": "⋚︀",
    "lesges": "⪓",
    "lessapprox": "⪅",
    "lessdot": "⋖",
    "lesseqgtr": "⋚",
    "lesseqqgtr": "⪋",
    "lessgtr": "≶",
    "lesssim": "≲",
    "lfisht": "⥼",
    "lfloor": "⌊",
    "lfr": "𝔩",
    "lg": "≶",
    "lgE": "⪑",
    "lhard": "↽",
    "lharu": "↼",
    "lharul": "⥪",
    "lhblk": "▄",
    "ljcy": "љ",
    "ll": "≪",
    "llarr": "⇇",
    "llcorner": "⌞",
    "llhard": "⥫",
    "lltri": "◺",
    "lmidot": "ŀ",
    "lmoust": "⎰",
    "lmoustache": "⎰",
    "lnE": "≨",
    "lnap": "⪉",
    "lnapprox": "⪉",
    "lne": "⪇",
    "lneq": "⪇",
    "lneqq": "≨",
    "lnsim": "⋦",
    "loang": "⟬",
    "loarr": "⇽",
    "lobrk": "⟦",
    "longleftarrow": "⟵",
    "longleftrightarrow": "⟷",
    "longmapsto": "⟼",
    "longrightarrow": "⟶",
    "looparrowleft": "↫",
    "looparrowright": "↬",
    "lopar": "⦅",
    "lopf": "𝕝",
    "loplus": "⨭",
    "lotimes": "⨴",
    "lowast": "∗",
    "lowbar": "_",
    "loz": "◊",
    "lozenge": "◊",
    "lozf": "⧫",
    "lpar": "(",
    "lparlt": "⦓",
    "lrarr": "⇆",
    "lrcorner": "⌟",
    "lrhar": "⇋",
    "lrhard": "⥭",
    "lrm": "‎",
    "lrtri": "⊿",
    "lsaquo": "‹",
    "lscr": "𝓁",
    "lsh": "↰",
    "lsim": "≲",
    "lsime": "⪍",
    "lsimg": "⪏",
    "lsqb": "[",
    "lsquo": "‘",
    "lsquor": "‚",
    "lstrok": "ł",
    "lt": "<",
    "ltcc": "⪦",
    "ltcir": "⩹",
    "ltdot": "⋖",
    "lthree": "⋋",
    "ltimes": "⋉",
    "ltlarr": "⥶",
    "ltquest": "⩻",
    "ltrPar": "⦖",
    "ltri": "◃",
    "ltrie": "⊴",
    "ltrif": "◂",
    "lurdshar": "⥊",
    "luruhar": "⥦",
    "lvertneqq": "≨︀",
    "lvnE": "≨︀",
    "mDDot": "∺",
    "macr": "¯",
    "male": "♂",
    "malt": "✠",
    "maltese": "✠",
    "map": "↦",
    "mapsto": "↦",
    "mapstodown": "↧",
    "mapstoleft": "↤",
    "mapstoup": "↥",
    "marker": "▮",
    "mcomma": "⨩",
    "mcy": "м",
    "mdash": "—",
    "measuredangle": "∡",
    "mfr": "𝔪",
    "mho": "℧",
    "micro": "µ",
    "mid": "∣",
    "midast": "*",
    "midcir": "⫰",
    "middot": "·",
    "minus": "−",
    "minusb": "⊟",
    "minusd": "∸",
    "minusdu": "⨪",
    "mlcp": "⫛",
    "mldr": "…",
    "mnplus": "∓",
    "models": "⊧",
    "mopf": "𝕞",
    "mp": "∓",
    "mscr": "𝓂",
    "mstpos": "∾",
    "mu": "μ",
    "multimap": "⊸",
    "mumap": "⊸",
    "nGg": "⋙̸",
    "nGt": "≫⃒",
    "nGtv": "≫̸",
    "nLeftarrow": "⇍",
    "nLeftrightarrow": "⇎",
    "nLl": "⋘̸",
    "nLt": "≪⃒",
    "nLtv": "≪̸",
    "nRightarrow": "⇏",
    "nVDash": "⊯",
    "nVdash": "⊮",
    "nabla": "∇",
    "nacute": "ń",
    "nang": "∠⃒",
    "nap": "≉",
    "napE": "⩰̸",
    "napid": "≋̸",
    "napos": "ʼn",
    "napprox": "≉",
    "natur": "♮",
    "natural": "♮",
    "naturals": "ℕ",
    "nbsp": " ",
    "nbump": "≎̸",
    "nbumpe": "≏̸",
    "ncap": "⩃",
    "ncaron": "ň",
    "ncedil": "ņ",
    "ncong": "≇",
    "ncongdot": "⩭̸",
    "ncup": "⩂",
    "ncy": "н",
    "ndash": "–",
    "ne": "≠",
    "neArr": "⇗",
    "nearhk": "⤤",
    "nearr": "↗",
    "nearrow": "↗",
    "nedot": "≐̸",
    "nequiv": "≢",
    "nesear": "⤨",
    "nesim": "≂̸",
    "nexist": "∄",
    "nexists": "∄",
    "nfr": "𝔫",
    "ngE": "≧̸",
    "nge": "≱",
    "ngeq": "≱",
    "ngeqq": "≧̸",
    "ngeqslant": "⩾̸",
    "nges": "⩾̸",
    "ngsim": "≵",
    "ngt": "≯",
    "ngtr": "≯",
    "nhArr": "⇎",
    "nharr": "↮",
    "nhpar": "⫲",
    "ni": "∋",
    "nis": "⋼",
    "nisd": "⋺",
    "niv": "∋",
    "njcy": "њ",
    "nlArr": "⇍",
    "nlE": "≦̸",
    "nlarr": "↚",
    "nldr": "‥",
    "nle": "≰",
    "nleftarrow": "↚",
    "nleftrightarrow": "↮",
    "nleq": "≰",
    "nleqq": "≦̸",
    "nleqslant": "⩽̸",
    "nles": "⩽̸",
    "nless": "≮",
    "nlsim": "≴",
    "nlt": "≮",
    "nltri": "⋪",
    "nltrie": "⋬",
    "nmid": "∤",
    "nopf": "𝕟",
    "not": "¬",
    "notin": "∉",
    "notinE": "⋹̸",
    "notindot": "⋵̸",
    "notinva": "∉",
    "notinvb": "⋷",
    "notinvc": "⋶",
    "notni": "∌",
    "notniva": "∌",
    "notnivb": "⋾",
    "notnivc": "⋽",
    "npar": "∦",
    "nparallel": "∦",
    "nparsl": "⫽⃥",
    "npart": "∂̸",
    "npolint": "⨔",
    "npr": "⊀",
    "nprcue": "⋠",
    "npre": "⪯̸",
    "nprec": "⊀",
    "npreceq": "⪯̸",
    "nrArr": "⇏",
    "nrarr": "↛",
    "nrarrc": "⤳̸",
    "nrarrw": "↝̸",
    "nrightarrow": "↛",
    "nrtri": "⋫",
    "nrtrie": "⋭",
    "nsc": "⊁",
    "nsccue": "⋡",
    "nsce": "⪰̸",
    "nscr": "𝓃",
    "nshortmid": "∤",
    "nshortparallel": "∦",
    "nsim": "≁",
    "nsime": "≄",
    "nsimeq": "≄",
    "nsmid": "∤",
    "nspar": "∦",
    "nsqsube": "⋢",
    "nsqsupe": "⋣",
    "nsub": "⊄",
    "nsubE": "⫅̸",
    "nsube": "⊈",
    "nsubset": "⊂⃒",
    "nsubseteq": "⊈",
    "nsubseteqq": "⫅̸",
    "nsucc": "⊁",
    "nsucceq": "⪰̸",
    "nsup": "⊅",
    "nsupE": "⫆̸",
    "nsupe": "⊉",
    "nsupset": "⊃⃒",
    "nsupseteq": "⊉",
    "nsupseteqq": "⫆̸",
    "ntgl": "≹",
    "ntilde": "ñ",
    "ntlg": "≸",
    "ntriangleleft": "⋪",
    "ntrianglelefteq": "⋬",
    "ntriangleright": "⋫",
    "ntrianglerighteq": "⋭",
    "nu": "ν",
    "num": "#",
    "numero": "№",
    "numsp": " ",
    "nvDash": "⊭",
    "nvHarr": "⤄",
    "nvap": "≍⃒",
    "nvdash": "⊬",
    "nvge": "≥⃒",
    "nvgt": ">⃒",
    "nvinfin": "⧞",
    "nvlArr": "⤂",
    "nvle": "≤⃒",
    "nvlt": "<⃒",
    "nvltrie": "⊴⃒",
    "nvrArr": "⤃",
    "nvrtrie": "⊵⃒",
    "nvsim": "∼⃒",
    "nwArr": "⇖",
    "nwarhk": "⤣",
    "nwarr": "↖",
    "nwarrow": "↖",
    "nwnear": "⤧",
    "oS": "Ⓢ",
    "oacute": "ó",
    "oast": "⊛",
    "ocir": "⊚",
    "ocirc": "ô",
    "ocy": "о",
    "odash": "⊝",
    "odblac": "ő",
    "odiv": "⨸",
    "odot": "⊙",
    "odsold": "⦼",
    "oelig": "œ",
    "ofcir": "⦿",
    "ofr": "𝔬",
    "ogon": "˛",
    "ograve": "ò",
    "ogt": "⧁",
    "ohbar": "⦵",
    "ohm": "Ω",
    "oint": "∮",
    "olarr": "↺",
    "olcir": "⦾",
    "olcross": "⦻",
    "oline": "‾",
    "olt": "⧀",
    "omacr": "ō",
    "omega": "ω",
    "omicron": "ο",
    "omid": "⦶",
    "ominus": "⊖",
    "oopf": "𝕠",
    "opar": "⦷",
    "operp": "⦹",
    "oplus": "⊕",
    "or": "∨",
    "orarr": "↻",
    "ord": "⩝",
    "order": "ℴ",
    "orderof": "ℴ",
    "ordf": "ª",
    "ordm": "º",
    "origof": "⊶",
    "oror": "⩖",
    "orslope": "⩗",
    "orv": "⩛",
    "oscr": "ℴ",
    "oslash": "ø",
    "osol": "⊘",
    "otilde": "õ",
    "otimes": "⊗",
    "otimesas": "⨶",
    "ouml": "ö",
    "ovbar": "⌽",
    "par": "∥",
    "para": "¶",
    "parallel": "∥",
    "parsim": "⫳",
    "parsl": "⫽",
    "part": "∂",
    "pcy": "п",
    "percnt": "%",
    "period": ".",
    "permil": "‰",
    "perp": "⊥",
    "pertenk": "‱",
    "pfr": "𝔭",
    "phi": "φ",
    "phiv": "ϕ",
    "phmmat": "ℳ",
    "phone": "☎",
    "pi": "π",
    "pitchfork": "⋔",
    "piv": "ϖ",
    "planck": "ℏ",
    "planckh": "ℎ",
    "plankv": "ℏ",
    "plus": "+",
    "plusacir": "⨣",
    "plusb": "⊞",
    "pluscir": "⨢",
    "plusdo": "∔",
    "plusdu": "⨥",
    "pluse": "⩲",
    "plusmn": "±",
    "plussim": "⨦",
    "plustwo": "⨧",
    "pm": "±",
    "pointint": "⨕",
    "popf": "𝕡",
    "pound": "£",
    "pr": "≺",
    "prE": "⪳",
    "prap": "⪷",
    "prcue": "≼",
    "pre": "⪯",
    "prec": "≺",
    "precapprox": "⪷",
    "preccurlyeq": "≼",
    "preceq": "⪯",
    "precnapprox": "⪹",
    "precneqq": "⪵",
    "precnsim": "⋨",
    "precsim": "≾",
    "prime": "′",
    "primes": "ℙ",
    "prnE": "⪵",
    "prnap": "⪹",
    "prnsim": "⋨",
    "prod": "∏",
    "profalar": "⌮",
    "profline": "⌒",
    "profsurf": "⌓",
    "prop": "∝",
    "propto": "∝",
    "prsim": "≾",
    "prurel": "⊰",
    "pscr": "𝓅",
    "psi": "ψ",
    "puncsp": " ",
    "qfr": "𝔮",
    "qint": "⨌",
    "qopf": "𝕢",
    "qprime": "⁗",
    "qscr": "𝓆",
    "quaternions": "ℍ",
    "quatint": "⨖",
    "quest": "?",
    "questeq": "≟",
    "quot": "\"",
    "rAarr": "⇛",
    "rArr": "⇒",
    "rAtail": "⤜",
    "rBarr": "⤏",
    "rHar": "⥤",
    "race": "∽̱",
    "racute": "ŕ",
    "radic": "√",
    "raemptyv": "⦳",
    "rang": "⟩",
    "rangd": "⦒",
    "range": "⦥",
    "rangle": "⟩",
    "raquo": "»",
    "rarr": "→",
    "rarrap": "⥵",
    "rarrb": "⇥",
    "rarrbfs": "⤠",
    "rarrc": "⤳",
    "rarrfs": "⤞",
    "rarrhk": "↪",
    "rarrlp": "↬",
    "rarrpl": "⥅",
    "rarrsim": "⥴",
    "rarrtl": "↣",
    "rarrw": "↝",
    "ratail": "⤚",
    "ratio": "∶",
    "rationals": "ℚ",
    "rbarr": "⤍",
    "rbbrk": "❳",
    "rbrace": "}",
    "rbrack": "]",
    "rbrke": "⦌",
    "rbrksld": "⦎",
    "rbrkslu": "⦐",
    "rcaron": "ř",
    "rcedil": "ŗ",
    "rceil": "⌉",
    "rcub": "}",
    "rcy": "р",
    "rdca": "⤷",
    "rdldhar": "⥩",
    "rdquo": "”",
    "rdquor": "”",
    "rdsh": "↳",
    "real": "ℜ",
    "realine": "ℛ",
    "realpart": "ℜ",
    "reals": "ℝ",
    "rect": "▭",
    "reg": "®",
    "rfisht": "⥽",
    "rfloor": "⌋",
    "rfr": "𝔯",
    "rhard": "⇁",
    "rharu": "⇀",
    "rharul": "⥬",
    "rho": "ρ",
    "rhov": "ϱ",
    "rightarrow": "→",
    "rightarrowtail": "↣",
    "rightharpoondown": "⇁",
    "rightharpoonup": "⇀",
    "rightleftarrows": "⇄",
    "rightleftharpoons": "⇌",
    "rightrightarrows": "⇉",
    "rightsquigarrow": "↝",
    "rightthreetimes": "⋌",
    "ring": "˚",
    "risingdotseq": "≓",
    "rlarr": "⇄",
    "rlhar": "⇌",
    "rlm": "‏",
    "rmoust": "⎱",
    "rmoustache": "⎱",
    "rnmid": "⫮",
    "roang": "⟭",
    "roarr": "⇾",
    "robrk": "⟧",
    "ropar": "⦆",
    "ropf": "𝕣",
    "roplus": "⨮",
    "rotimes": "⨵",
    "rpar": ")",
    "rpargt": "⦔",
    "rppolint": "⨒",
    "rrarr": "⇉",
    "rsaquo": "›",
    "rscr": "𝓇",
    "rsh": "↱",
    "rsqb": "]",
    "rsquo": "’",
    "rsquor": "’",
    "rthree": "⋌",
    "rtimes": "⋊",
    "rtri": "▹",
    "rtrie": "⊵",
    "rtrif": "▸",
    "rtriltri": "⧎",
    "ruluhar": "⥨",
    "rx": "℞",
    "sacute": "ś",
    "sbquo": "‚",
    "sc": "≻",
    "scE": "⪴",
    "scap": "⪸",
    "scaron": "š",
    "sccue": "≽",
    "sce": "⪰",
    "scedil": "ş",
    "scirc": "ŝ",
    "scnE": "⪶",
    "scnap": "⪺",
    "scnsim": "⋩",
    "scpolint": "⨓",
    "scsim": "≿",
    "scy": "с",
    "sdot": "⋅",
    "sdotb": "⊡",
    "sdote": "⩦",
    "seArr": "⇘",
    "searhk": "⤥",
    "searr": "↘",
    "searrow": "↘",
    "sect": "§",
    "semi": ";",
    "seswar": "⤩",
    "setminus": "∖",
    "setmn": "∖",
    "sext": "✶",
    "sfr": "𝔰",
    "sfrown": "⌢",
    "sharp": "♯",
    "shchcy": "щ",
    "shcy": "ш",
    "shortmid": "∣",
    "shortparallel": "∥",
    "shy": "­",
    "sigma": "σ",
    "sigmaf": "ς",
    "sigmav": "ς",
    "sim": "∼",
    "simdot": "⩪",
    "sime": "≃",
    "simeq": "≃",
    "simg": "⪞",
    "simgE": "⪠",
    "siml": "⪝",
    "simlE": "⪟",
    "simne": "≆",
    "simplus": "⨤",
    "simrarr": "⥲",
    "slarr": "←",
    "smallsetminus": "∖",
    "smashp": "⨳",
    "smeparsl": "⧤",
    "smid": "∣",
    "smile": "⌣",
    "smt": "⪪",
    "smte": "⪬",
    "smtes": "⪬︀",
    "softcy": "ь",
    "sol": "/",
    "solb": "⧄",
    "solbar": "⌿",
    "sopf": "𝕤",
    "spades": "♠",
    "spadesuit": "♠",
    "spar": "∥",
    "sqcap": "⊓",
    "sqcaps": "⊓︀",
    "sqcup": "⊔",
    "sqcups": "⊔︀",
    "sqsub": "⊏",
    "sqsube": "⊑",
    "sqsubset": "⊏",
    "sqsubseteq": "⊑",
    "sqsup": "⊐",
    "sqsupe": "⊒",
    "sqsupset": "⊐",
    "sqsupseteq": "⊒",
    "squ": "□",
    "square": "□",
    "squarf": "▪",
    "squf": "▪",
    "srarr": "→",
    "sscr": "𝓈",
    "ssetmn": "∖",
    "ssmile": "⌣",
    "sstarf": "⋆",
    "star": "☆",
    "starf": "★",
    "straightepsilon": "ϵ",
    "straightphi": "ϕ",
    "strns": "¯",
    "sub": "⊂",
    "subE": "⫅",
    "subdot": "⪽",
    "sube": "⊆",
    "subedot": "⫃",
    "submult": "⫁",
    "subnE": "⫋",
    "subne": "⊊",
    "subplus": "⪿",
    "subrarr": "⥹",
    "subset": "⊂",
    "subseteq": "⊆",
    "subseteqq": "⫅",
    "subsetneq": "⊊",
    "subsetneqq": "⫋",
    "subsim": "⫇",
    "subsub": "⫕",
    "subsup": "⫓",
    "succ": "≻",
    "succapprox": "⪸",
    "succcurlyeq": "≽",
    "succeq": "⪰",
    "succnapprox": "⪺",
    "succneqq": "⪶",
    "succnsim": "⋩",
    "succsim": "≿",
    "sum": "∑",
    "sung": "♪",
    "sup1": "¹",
    "sup2": "²",
    "sup3": "³",
    "sup": "⊃",
    "supE": "⫆",
    "supdot": "⪾",
    "supdsub": "⫘",
    "supe": "⊇",
    "supedot": "⫄",
    "suphsol": "⟉",
    "suphsub": "⫗",
    "suplarr": "⥻",
    "supmult": "⫂",
    "supnE": "⫌",
    "supne": "⊋",
    "supplus": "⫀",
    "supset": "⊃",
    "supseteq": "⊇",
    "supseteqq": "⫆",
    "supsetneq": "⊋",
    "supsetneqq": "⫌",
    "supsim": "⫈",
    "supsub": "⫔",
    "supsup": "⫖",
    "swArr": "⇙",
    "swarhk": "⤦",
    "swarr": "↙",
    "swarrow": "↙",
    "swnwar": "⤪",
    "szlig": "ß",
    "target": "⌖",
    "tau": "τ",
    "tbrk": "⎴",
    "tcaron": "ť",
    "tcedil": "ţ",
    "tcy": "т",
    "tdot": "⃛",
    "telrec": "⌕",
    "tfr": "𝔱",
    "there4": "∴",
    "therefore": "∴",
    "theta": "θ",
    "thetasym": "ϑ",
    "thetav": "ϑ",
    "thickapprox": "≈",
    "thicksim": "∼",
    "thinsp": " ",
    "thkap": "≈",
    "thksim": "∼",
    "thorn": "þ",
    "tilde": "˜",
    "times": "×",
    "timesb": "⊠",
    "timesbar": "⨱",
    "timesd": "⨰",
    "tint": "∭",
    "toea": "⤨",
    "top": "⊤",
    "topbot": "⌶",
    "topcir": "⫱",
    "topf": "𝕥",
    "topfork": "⫚",
    "tosa": "⤩",
    "tprime": "‴",
    "trade": "™",
    "triangle": "▵",
    "triangledown": "▿",
    "triangleleft": "◃",
    "trianglelefteq": "⊴",
    "triangleq": "≜",
    "triangleright": "▹",
    "trianglerighteq": "⊵",
    "tridot": "◬",
    "trie": "≜",
    "triminus": "⨺",
    "triplus": "⨹",
    "trisb": "⧍",
    "tritime": "⨻",
    "trpezium": "⏢",
    "tscr": "𝓉",
    "tscy": "ц",
    "tshcy": "ћ",
    "tstrok": "ŧ",
    "twixt": "≬",
    "twoheadleftarrow": "↞",
    "twoheadrightarrow": "↠",
    "uArr": "⇑",
    "uHar": "⥣",
    "uacute": "ú",
    "uarr": "↑",
    "ubrcy": "ў",
    "ubreve": "ŭ",
    "ucirc": "û",
    "ucy": "у",
    "udarr": "⇅",
    "udblac": "ű",
    "udhar": "⥮",
    "ufisht": "⥾",
    "ufr": "𝔲",
    "ugrave": "ù",
    "uharl": "↿",
    "uharr": "↾",
    "uhblk": "▀",
    "ulcorn": "⌜",
    "ulcorner": "⌜",
    "ulcrop": "⌏",
    "ultri": "◸",
    "umacr": "ū",
    "uml": "¨",
    "uogon": "ų",
    "uopf": "𝕦",
    "uparrow": "↑",
    "updownarrow": "↕",
    "upharpoonleft": "↿",
    "upharpoonright": "↾",
    "uplus": "⊎",
    "upsi": "υ",
    "upsih": "ϒ",
    "upsilon": "υ",
    "upuparrows": "⇈",
    "urcorn": "⌝",
    "urcorner": "⌝",
    "urcrop": "⌎",
    "uring": "ů",
    "urtri": "◹",
    "uscr": "𝓊",
    "utdot": "⋰",
    "utilde": "ũ",
    "utri": "▵",
    "utrif": "▴",
    "uuarr": "⇈",
    "uuml": "ü",
    "uwangle": "⦧",
    "vArr": "⇕",
    "vBar": "⫨",
    "vBarv": "⫩",
    "vDash": "⊨",
    "vangrt": "⦜",
    "varepsilon": "ϵ",
    "varkappa": "ϰ",
    "varnothing": "∅",
    "varphi": "ϕ",
    "varpi": "ϖ",
    "varpropto": "∝",
    "varr": "↕",
    "varrho": "ϱ",
    "varsigma": "ς",
    "varsubsetneq": "⊊︀",
    "varsubsetneqq": "⫋︀",
    "varsupsetneq": "⊋︀",
    "varsupsetneqq": "⫌︀",
    "vartheta": "ϑ",
    "vartriangleleft": "⊲",
    "vartriangleright": "⊳",
    "vcy": "в",
    "vdash": "⊢",
    "vee": "∨",
    "veebar": "⊻",
    "veeeq": "≚",
    "vellip": "⋮",
    "verbar": "|",
    "vert": "|",
    "vfr": "𝔳",
    "vltri": "⊲",
    "vnsub": "⊂⃒",
    "vnsup": "⊃⃒",
    "vopf": "𝕧",
    "vprop": "∝",
    "vrtri": "⊳",
    "vscr": "𝓋",
    "vsubnE": "⫋︀",
    "vsubne": "⊊︀",
    "vsupnE": "⫌︀",
    "vsupne": "⊋︀",
    "vzigzag": "⦚",
    "wcirc": "ŵ",
    "wedbar": "⩟",
    "wedge": "∧",
    "wedgeq": "≙",
    "weierp": "℘",
    "wfr": "𝔴",
    "wopf": "𝕨",
    "wp": "℘",
    "wr": "≀",
    "wreath": "≀",
    "wscr": "𝓌",
    "xcap": "⋂",
    "xcirc": "◯",
    "xcup": "⋃",
    "xdtri": "▽",
    "xfr": "𝔵",
    "xhArr": "⟺",
    "xharr": "⟷",
    "xi": "ξ",
    "xlArr": "⟸",
    "xlarr": "⟵",
    "xmap": "⟼",
    "xnis": "⋻",
    "xodot": "⨀",
    "xopf": "𝕩",
    "xoplus": "⨁",
    "xotime": "⨂",
    "xrArr": "⟹",
    "xrarr": "⟶",
    "xscr": "𝓍",
    "xsqcup": "⨆",
    "xuplus": "⨄",
    "xutri": "△",
    "xvee": "⋁",
    "xwedge": "⋀",
    "yacute": "ý",
    "yacy": "я",
    "ycirc": "ŷ",
    "ycy": "ы",
    "yen": "¥",
    "yfr": "𝔶",
    "yicy": "ї",
    "yopf": "𝕪",
    "yscr": "𝓎",
    "yucy": "ю",
    "yuml": "ÿ",
    "zacute": "ź",
    "zcaron": "ž",
    "zcy": "з",
    "zdot": "ż",
    "zeetrf": "ℨ",
    "zeta": "ζ",
    "zfr": "𝔷",
    "zhcy": "ж",
    "zigrarr": "⇝",
    "zopf": "𝕫",
    "zscr": "𝓏",
    "zwj": "‍",
    "zwnj": "‌",
}

Also available in 13 other languages

Every CosmoDev tool ships its pure logic in TypeScript (web) and Go (CLI), with authored implementations in a dozen-plus languages — the same contract, ported. Compare all languages side by side →