diff options
author | Hans Hagen <pragma@wxs.nl> | 2017-04-20 22:56:41 +0200 |
---|---|---|
committer | Context Git Mirror Bot <phg42.2a@gmail.com> | 2017-04-20 22:56:41 +0200 |
commit | f2a20e191bf71094aa21d37dee2ecd2f804dbc56 (patch) | |
tree | 5c94b5e2d5c0ec7e1946bf967a982c27f99a5fdc /tex | |
parent | 218228536ed709be8ab2dde4a00dc27249ceed8a (diff) | |
download | context-f2a20e191bf71094aa21d37dee2ecd2f804dbc56.tar.gz |
2017-04-20 21:37:00
Diffstat (limited to 'tex')
24 files changed, 858 insertions, 103 deletions
diff --git a/tex/context/base/mkii/cont-new.mkii b/tex/context/base/mkii/cont-new.mkii index d256c24d9..0d52642ba 100644 --- a/tex/context/base/mkii/cont-new.mkii +++ b/tex/context/base/mkii/cont-new.mkii @@ -11,7 +11,7 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -\newcontextversion{2017.04.16 12:32} +\newcontextversion{2017.04.20 21:31} %D This file is loaded at runtime, thereby providing an %D excellent place for hacks, patches, extensions and new diff --git a/tex/context/base/mkii/context.mkii b/tex/context/base/mkii/context.mkii index 26595dd56..6e0150998 100644 --- a/tex/context/base/mkii/context.mkii +++ b/tex/context/base/mkii/context.mkii @@ -20,7 +20,7 @@ %D your styles an modules. \edef\contextformat {\jobname} -\edef\contextversion{2017.04.16 12:32} +\edef\contextversion{2017.04.20 21:31} %D For those who want to use this: diff --git a/tex/context/base/mkiv/char-def.lua b/tex/context/base/mkiv/char-def.lua index 6a1b04e01..0618ceb2e 100644 --- a/tex/context/base/mkiv/char-def.lua +++ b/tex/context/base/mkiv/char-def.lua @@ -103,6 +103,7 @@ characters.data={ description="CHARACTER TABULATION", direction="s", linebreak="ba", + synonyms={ "horizontal tabulation", "ht", "tab" }, unicodeslot=0x9, }, { @@ -111,6 +112,7 @@ characters.data={ description="LINE FEED (LF)", direction="b", linebreak="lf", + synonyms={ "end of line", "eol", "lf", "new line", "nl" }, unicodeslot=0xA, }, { @@ -119,6 +121,7 @@ characters.data={ description="LINE TABULATION", direction="s", linebreak="bk", + synonyms={ "vertical tabulation", "vt" }, unicodeslot=0xB, }, { @@ -127,6 +130,7 @@ characters.data={ description="FORM FEED (FF)", direction="ws", linebreak="bk", + synonyms={ "ff" }, unicodeslot=0xC, }, { @@ -135,6 +139,7 @@ characters.data={ description="CARRIAGE RETURN (CR)", direction="b", linebreak="cr", + synonyms={ "cr" }, unicodeslot=0xD, }, { @@ -255,6 +260,7 @@ characters.data={ description="INFORMATION SEPARATOR FOUR", direction="b", linebreak="cm", + synonyms={ "file separator" }, unicodeslot=0x1C, }, { @@ -263,6 +269,7 @@ characters.data={ description="INFORMATION SEPARATOR THREE", direction="b", linebreak="cm", + synonyms={ "group separator" }, unicodeslot=0x1D, }, { @@ -271,6 +278,7 @@ characters.data={ description="INFORMATION SEPARATOR TWO", direction="b", linebreak="cm", + synonyms={ "record separator" }, unicodeslot=0x1E, }, { @@ -279,6 +287,7 @@ characters.data={ description="INFORMATION SEPARATOR ONE", direction="s", linebreak="cm", + synonyms={ "unit separator" }, unicodeslot=0x1F, }, { @@ -298,6 +307,7 @@ characters.data={ direction="on", linebreak="ex", mathclass="close", + synonyms={ "bang", "factorial" }, unicodeslot=0x21, }, { @@ -309,6 +319,7 @@ characters.data={ direction="on", linebreak="qu", mathclass="default", + synonyms={ "neutral quotation mark" }, unicodeslot=0x22, }, { @@ -321,11 +332,9 @@ characters.data={ linebreak="al", mathclass="binary", mathname="mathhash", + synonyms={ "crosshatch", "hash", "octothorpe", "pound sign" }, unicodeslot=0x23, - variants={ - [0xFE0E]="text style", - [0xFE0F]="emoji style", - }, + variants=variants_emoji, }, { adobename="dollar", @@ -337,6 +346,7 @@ characters.data={ linebreak="pr", mathclass="binary", mathname="mathdollar", + synonyms={ "escudo", "milreis" }, unicodeslot=0x24, }, { @@ -372,6 +382,7 @@ characters.data={ direction="on", linebreak="qu", mathclass="default", + synonyms={ "apl quote", "apostrophe-quote", "neutral single quotation mark" }, unicodeslot=0x27, }, { @@ -384,6 +395,7 @@ characters.data={ mathclass="open", mathname="lparent", mirror=0x29, + synonyms={ "opening parenthesis" }, textclass="open", unicodeslot=0x28, }, @@ -397,6 +409,7 @@ characters.data={ mathclass="close", mathname="rparent", mirror=0x28, + synonyms={ "closing parenthesis" }, textclass="close", unicodeslot=0x29, }, @@ -410,6 +423,7 @@ characters.data={ mathclass="binary", mathname="ast", mathsymbol=0x2217, + synonyms={ "star" }, unicodeslot=0x2A, variants=variants_emoji, }, @@ -432,6 +446,7 @@ characters.data={ direction="cs", linebreak="is", mathclass="punctuation", + synonyms={ "decimal separator" }, unicodeslot=0x2C, }, { @@ -447,6 +462,7 @@ characters.data={ mathfiller="relfill", mathname="mathhyphen", mathsymbol=0x2212, + synonyms={ "hyphen or minus sign", "hyphus" }, unicodeslot=0x2D, }, { @@ -465,6 +481,7 @@ characters.data={ name="ldotp", }, }, + synonyms={ "decimal point", "dot", "period" }, unicodeslot=0x2E, }, { @@ -483,6 +500,7 @@ characters.data={ class="ordinary", }, }, + synonyms={ "slash", "virgule" }, unicodeslot=0x2F, }, { @@ -618,6 +636,7 @@ characters.data={ direction="on", linebreak="is", mathclass="punctuation", + synonyms={ "greek question mark" }, unicodeslot=0x3B, }, { @@ -686,6 +705,7 @@ characters.data={ description="COMMERCIAL AT", direction="on", linebreak="al", + synonyms={ "at sign" }, unicodeslot=0x40, }, { @@ -986,6 +1006,7 @@ characters.data={ mathclass="open", mathname="lbracket", mirror=0x5D, + synonyms={ "opening square bracket" }, textclass="open", unicodeslot=0x5B, }, @@ -999,6 +1020,7 @@ characters.data={ linebreak="pr", mathclass="nothing", mathname="backslash", + synonyms={ "backslash" }, unicodeslot=0x5C, }, { @@ -1011,6 +1033,7 @@ characters.data={ mathclass="close", mathname="rbracket", mirror=0x5B, + synonyms={ "closing square bracket" }, textclass="close", unicodeslot=0x5D, }, @@ -1024,6 +1047,7 @@ characters.data={ linebreak="al", mathclass="topaccent", mathname="Hat", + synonyms={ "spacing circumflex accent" }, unicodeslot=0x5E, }, { @@ -1034,6 +1058,7 @@ characters.data={ description="LOW LINE", direction="on", linebreak="al", + synonyms={ "spacing underscore" }, unicodeslot=0x5F, }, { @@ -1046,6 +1071,7 @@ characters.data={ linebreak="al", mathclass="topaccent", mathname="grave", + synonyms={ "spacing grave accent" }, unicodeslot=0x60, }, { @@ -1346,6 +1372,7 @@ characters.data={ mathclass="open", mathname="lbrace", mirror=0x7D, + synonyms={ "opening brace", "opening curly bracket" }, textclass="open", unicodeslot=0x7B, }, @@ -1384,6 +1411,7 @@ characters.data={ name="singleverticalbar", }, }, + synonyms={ "absolute value", "vertical bar" }, unicodeslot=0x7C, }, { @@ -1397,6 +1425,7 @@ characters.data={ mathclass="close", mathname="rbrace", mirror=0x7B, + synonyms={ "closing brace", "closing curly bracket" }, textclass="close", unicodeslot=0x7D, }, @@ -1408,6 +1437,7 @@ characters.data={ description="TILDE", direction="on", linebreak="al", + synonyms={ "spacing tilde" }, unicodeslot=0x7E, }, { @@ -1458,6 +1488,7 @@ characters.data={ description="NEXT LINE (NEL)", direction="b", linebreak="nl", + synonyms={ "nel" }, unicodeslot=0x85, }, { @@ -1650,6 +1681,7 @@ characters.data={ direction="cs", linebreak="gl", specials={ "nobreak", 0x20 }, + synonyms={ "nbsp", "non-breaking space" }, unicodeslot=0xA0, }, { @@ -1680,6 +1712,7 @@ characters.data={ description="POUND SIGN", direction="et", linebreak="pr", + synonyms={ "irish punt", "italian lira", "pound sterling" }, unicodeslot=0xA3, }, { @@ -1702,6 +1735,7 @@ characters.data={ linebreak="pr", mathclass="nothing", mathname="yen", + synonyms={ "yuan sign" }, unicodeslot=0xA5, }, { @@ -1712,6 +1746,7 @@ characters.data={ description="BROKEN BAR", direction="on", linebreak="al", + synonyms={ "broken vertical bar", "parted rule" }, unicodeslot=0xA6, }, { @@ -1724,6 +1759,7 @@ characters.data={ linebreak="ai", mathclass="box", mathname="S", + synonyms={ "european paragraph sign" }, unicodeslot=0xA7, }, { @@ -1737,6 +1773,7 @@ characters.data={ mathclass="topaccent", mathname="ddot", specials={ "compat", 0x20, 0x308 }, + synonyms={ "spacing diaeresis" }, unicodeslot=0xA8, }, { @@ -1768,6 +1805,7 @@ characters.data={ direction="on", linebreak="qu", mirror=0xBB, + synonyms={ "chevrons", "left pointing guillemet" }, textclass="open", unicodeslot=0xAB, }, @@ -1789,6 +1827,7 @@ characters.data={ name="neg", }, }, + synonyms={ "angled dash" }, unicodeslot=0xAC, }, { @@ -1799,6 +1838,7 @@ characters.data={ description="SOFT HYPHEN", direction="bn", linebreak="ba", + synonyms={ "discretionary hyphen", "shy" }, unicodeslot=0xAD, }, { @@ -1809,6 +1849,7 @@ characters.data={ description="REGISTERED SIGN", direction="on", linebreak="al", + synonyms={ "registered trade mark sign" }, unicodeslot=0xAE, variants=variants_emoji, }, @@ -1825,6 +1866,7 @@ characters.data={ mathmleq=0x203E, mathname="bar", specials={ "compat", 0x20, 0x304 }, + synonyms={ "apl overbar", "overline", "spacing macron" }, unicodeslot=0xAF, }, { @@ -1858,6 +1900,7 @@ characters.data={ direction="en", linebreak="ai", specials={ "super", 0x32 }, + synonyms={ "squared" }, unicodeslot=0xB2, }, { @@ -1869,6 +1912,7 @@ characters.data={ direction="en", linebreak="ai", specials={ "super", 0x33 }, + synonyms={ "cubed" }, unicodeslot=0xB3, }, { @@ -1882,6 +1926,7 @@ characters.data={ mathclass="topaccent", mathname="acute", specials={ "compat", 0x20, 0x301 }, + synonyms={ "spacing acute accent" }, unicodeslot=0xB4, }, { @@ -1905,6 +1950,7 @@ characters.data={ linebreak="ai", mathclass="box", mathname="P", + synonyms={ "european section sign", "paragraph sign" }, unicodeslot=0xB6, }, { @@ -1917,6 +1963,7 @@ characters.data={ linebreak="ai", mathclass="binary", mathname="centerdot", + synonyms={ "georgian comma", "greek ano teleia", "greek middle dot", "midpoint" }, unicodeslot=0xB7, }, { @@ -1928,6 +1975,7 @@ characters.data={ direction="on", linebreak="ai", specials={ "compat", 0x20, 0x327 }, + synonyms={ "spacing cedilla" }, unicodeslot=0xB8, }, { @@ -1960,6 +2008,7 @@ characters.data={ direction="on", linebreak="qu", mirror=0xAB, + synonyms={ "right pointing guillemet" }, textclass="close", unicodeslot=0xBB, }, @@ -2004,6 +2053,7 @@ characters.data={ description="INVERTED QUESTION MARK", direction="on", linebreak="op", + synonyms={ "turned question mark" }, unicodeslot=0xBF, }, { @@ -2088,6 +2138,7 @@ characters.data={ lccode=0xE6, linebreak="al", shcode={ 0x41, 0x45 }, + synonyms={ "latin capital ligature ae" }, unicodeslot=0xC6, }, { @@ -2291,6 +2342,7 @@ characters.data={ linebreak="ai", mathclass="binary", mathname="times", + synonyms={ "cartesian product" }, unicodeslot=0xD7, }, { @@ -2303,6 +2355,7 @@ characters.data={ lccode=0xF8, linebreak="al", shcode=0x4F, + synonyms={ "latin capital letter o slash" }, unicodeslot=0xD8, }, { @@ -2386,6 +2439,7 @@ characters.data={ direction="l", linebreak="al", shcode={ 0x73, 0x73 }, + synonyms={ "eszett" }, uccode={ 0x53, 0x53 }, unicodeslot=0xDF, }, @@ -2472,6 +2526,7 @@ characters.data={ direction="l", linebreak="al", shcode={ 0x61, 0x65 }, + synonyms={ "ash", "latin small ligature ae" }, uccode=0xC6, unicodeslot=0xE6, }, @@ -2685,6 +2740,7 @@ characters.data={ linebreak="ai", mathclass="binary", mathname="div", + synonyms={ "obelus" }, unicodeslot=0xF7, }, { @@ -2696,6 +2752,7 @@ characters.data={ direction="l", linebreak="al", shcode=0x6F, + synonyms={ "latin small letter o slash" }, uccode=0xD8, unicodeslot=0xF8, }, @@ -3374,6 +3431,7 @@ characters.data={ linebreak="al", shcode=0x49, specials={ "char", 0x49, 0x307 }, + synonyms={ "latin capital letter i dot" }, unicodeslot=0x130, }, { @@ -3794,6 +3852,7 @@ characters.data={ direction="l", linebreak="al", shcode={ 0x6F, 0x65 }, + synonyms={ "ethel", "latin small letter o e" }, uccode=0x152, unicodeslot=0x153, }, @@ -4472,6 +4531,7 @@ characters.data={ direction="l", lccode=0x1DD, linebreak="al", + synonyms={ "latin capital letter turned e" }, unicodeslot=0x18E, }, { @@ -4491,6 +4551,7 @@ characters.data={ direction="l", lccode=0x25B, linebreak="al", + synonyms={ "latin capital letter epsilon" }, unicodeslot=0x190, }, { @@ -4512,6 +4573,7 @@ characters.data={ direction="l", linebreak="al", shcode=0x66, + synonyms={ "florin currency symbol", "folder", "function symbol", "latin small letter script f" }, uccode=0x191, unicodeslot=0x192, }, @@ -4562,6 +4624,7 @@ characters.data={ lccode=0x268, linebreak="al", shcode=0x49, + synonyms={ "latin capital letter i bar" }, unicodeslot=0x197, }, { @@ -4605,6 +4668,7 @@ characters.data={ linebreak="al", mathclass="variable", mathname="lambdabar", + synonyms={ "latin letter lambda bar" }, unicodeslot=0x19B, }, { @@ -4644,6 +4708,7 @@ characters.data={ lccode=0x275, linebreak="al", shcode=0x4F, + synonyms={ "latin capital letter barred o", "latin capital letter o bar" }, unicodeslot=0x19F, }, { @@ -4837,6 +4902,7 @@ characters.data={ lccode=0x28B, linebreak="al", shcode=0x56, + synonyms={ "latin capital letter script v" }, unicodeslot=0x1B2, }, { @@ -4880,6 +4946,7 @@ characters.data={ direction="l", linebreak="al", shcode=0x7A, + synonyms={ "latin small letter z bar" }, uccode=0x1B5, unicodeslot=0x1B6, }, @@ -4968,6 +5035,7 @@ characters.data={ description="LATIN LETTER DENTAL CLICK", direction="l", linebreak="al", + synonyms={ "pipe" }, unicodeslot=0x1C0, }, { @@ -4976,6 +5044,7 @@ characters.data={ description="LATIN LETTER LATERAL CLICK", direction="l", linebreak="al", + synonyms={ "double pipe" }, unicodeslot=0x1C1, }, { @@ -4984,6 +5053,7 @@ characters.data={ description="LATIN LETTER ALVEOLAR CLICK", direction="l", linebreak="al", + synonyms={ "double-barred pipe" }, unicodeslot=0x1C2, }, { @@ -4992,6 +5062,7 @@ characters.data={ description="LATIN LETTER RETROFLEX CLICK", direction="l", linebreak="al", + synonyms={ "latin letter exclamation mark" }, unicodeslot=0x1C3, }, { @@ -6549,6 +6620,7 @@ characters.data={ description="LATIN SMALL LETTER ALPHA", direction="l", linebreak="al", + synonyms={ "latin small letter script a" }, unicodeslot=0x251, }, { @@ -6597,6 +6669,7 @@ characters.data={ direction="l", linebreak="al", shcode=0x64, + synonyms={ "latin small letter d retroflex hook" }, uccode=0x189, unicodeslot=0x256, }, @@ -6645,6 +6718,7 @@ characters.data={ description="LATIN SMALL LETTER OPEN E", direction="l", linebreak="al", + synonyms={ "latin small letter epsilon" }, uccode=0x190, unicodeslot=0x25B, }, @@ -6670,6 +6744,7 @@ characters.data={ description="LATIN SMALL LETTER CLOSED REVERSED OPEN E", direction="l", linebreak="al", + synonyms={ "latin small letter closed reversed epsilon" }, unicodeslot=0x25E, }, { @@ -6722,6 +6797,7 @@ characters.data={ description="LATIN SMALL LETTER RAMS HORN", direction="l", linebreak="al", + synonyms={ "latin small letter baby gamma" }, unicodeslot=0x264, }, { @@ -6869,6 +6945,7 @@ characters.data={ description="LATIN SMALL LETTER BARRED O", direction="l", linebreak="al", + synonyms={ "latin small letter o bar" }, uccode=0x19F, unicodeslot=0x275, }, @@ -7057,6 +7134,7 @@ characters.data={ direction="l", linebreak="al", shcode=0x76, + synonyms={ "latin small letter script v" }, uccode=0x1B2, unicodeslot=0x28B, }, @@ -7066,6 +7144,7 @@ characters.data={ description="LATIN SMALL LETTER TURNED V", direction="l", linebreak="al", + synonyms={ "caret" }, uccode=0x245, unicodeslot=0x28C, }, @@ -7116,6 +7195,7 @@ characters.data={ description="LATIN SMALL LETTER EZH", direction="l", linebreak="al", + synonyms={ "dram" }, uccode=0x1B7, unicodeslot=0x292, }, @@ -7142,6 +7222,7 @@ characters.data={ description="LATIN LETTER PHARYNGEAL VOICED FRICATIVE", direction="l", linebreak="al", + synonyms={ "latin letter reversed glottal stop" }, unicodeslot=0x295, }, { @@ -7166,6 +7247,7 @@ characters.data={ description="LATIN LETTER BILABIAL CLICK", direction="l", linebreak="al", + synonyms={ "latin letter bullseye" }, unicodeslot=0x298, }, { @@ -7181,6 +7263,7 @@ characters.data={ description="LATIN SMALL LETTER CLOSED OPEN E", direction="l", linebreak="al", + synonyms={ "latin small letter closed epsilon" }, unicodeslot=0x29A, }, { @@ -7454,6 +7537,7 @@ characters.data={ description="MODIFIER LETTER APOSTROPHE", direction="l", linebreak="al", + synonyms={ "glottal stop", "neutral apostrophe" }, unicodeslot=0x2BC, }, { @@ -7554,6 +7638,7 @@ characters.data={ mathclass="topaccent", mathname="check", specials={ "compat", 0x20, 0x30C }, + synonyms={ "mandarin chinese third tone", "modifier letter hacek" }, unicodeslot=0x2C7, }, { @@ -7571,6 +7656,7 @@ characters.data={ description="MODIFIER LETTER MACRON", direction="on", linebreak="ai", + synonyms={ "mandarin chinese first tone" }, unicodeslot=0x2C9, }, { @@ -7580,6 +7666,7 @@ characters.data={ description="MODIFIER LETTER ACUTE ACCENT", direction="on", linebreak="ai", + synonyms={ "mandarin chinese second tone" }, unicodeslot=0x2CA, }, { @@ -7589,6 +7676,7 @@ characters.data={ description="MODIFIER LETTER GRAVE ACCENT", direction="on", linebreak="ai", + synonyms={ "mandarin chinese fourth tone" }, unicodeslot=0x2CB, }, { @@ -7713,6 +7801,7 @@ characters.data={ mathclass="topaccent", mathname="dot", specials={ "compat", 0x20, 0x307 }, + synonyms={ "mandarin chinese fifth or neutral tone" }, unicodeslot=0x2D9, }, { @@ -7776,6 +7865,7 @@ characters.data={ description="MODIFIER LETTER CROSS ACCENT", direction="on", linebreak="bb", + synonyms={ "swedish grave accent" }, unicodeslot=0x2DF, }, { @@ -8023,6 +8113,7 @@ characters.data={ description="COMBINING GRAVE ACCENT", direction="nsm", linebreak="cm", + synonyms={ "greek varia" }, unicodeslot=0x300, }, { @@ -8033,6 +8124,7 @@ characters.data={ description="COMBINING ACUTE ACCENT", direction="nsm", linebreak="cm", + synonyms={ "greek oxia", "greek tonos", "stress mark" }, unicodeslot=0x301, }, { @@ -8069,6 +8161,7 @@ characters.data={ description="COMBINING MACRON", direction="nsm", linebreak="cm", + synonyms={ "long" }, unicodeslot=0x304, }, { @@ -8079,6 +8172,7 @@ characters.data={ description="COMBINING OVERLINE", direction="nsm", linebreak="cm", + synonyms={ "overscore", "vinculum" }, unicodeslot=0x305, }, { @@ -8089,6 +8183,7 @@ characters.data={ description="COMBINING BREVE", direction="nsm", linebreak="cm", + synonyms={ "greek vrachy", "short" }, unicodeslot=0x306, }, { @@ -8099,6 +8194,7 @@ characters.data={ description="COMBINING DOT ABOVE", direction="nsm", linebreak="cm", + synonyms={ "derivative" }, unicodeslot=0x307, }, { @@ -8109,6 +8205,7 @@ characters.data={ description="COMBINING DIAERESIS", direction="nsm", linebreak="cm", + synonyms={ "double derivative", "double dot above", "greek dialytika", "umlaut" }, unicodeslot=0x308, }, { @@ -8149,6 +8246,7 @@ characters.data={ description="COMBINING CARON", direction="nsm", linebreak="cm", + synonyms={ "combining hacek", "v above" }, unicodeslot=0x30C, }, { @@ -8209,6 +8307,7 @@ characters.data={ description="COMBINING TURNED COMMA ABOVE", direction="nsm", linebreak="cm", + synonyms={ "cedilla above" }, unicodeslot=0x312, }, { @@ -8219,6 +8318,7 @@ characters.data={ description="COMBINING COMMA ABOVE", direction="nsm", linebreak="cm", + synonyms={ "greek psili", "greek smooth breathing mark" }, unicodeslot=0x313, }, { @@ -8229,6 +8329,7 @@ characters.data={ description="COMBINING REVERSED COMMA ABOVE", direction="nsm", linebreak="cm", + synonyms={ "greek dasia", "greek rough breathing mark" }, unicodeslot=0x314, }, { @@ -8430,6 +8531,7 @@ characters.data={ description="COMBINING OGONEK", direction="nsm", linebreak="cm", + synonyms={ "nasal hook" }, unicodeslot=0x328, }, { @@ -8530,6 +8632,7 @@ characters.data={ description="COMBINING LOW LINE", direction="nsm", linebreak="cm", + synonyms={ "underline", "underscore" }, unicodeslot=0x332, }, { @@ -8540,6 +8643,7 @@ characters.data={ description="COMBINING DOUBLE LOW LINE", direction="nsm", linebreak="cm", + synonyms={ "double underline", "double underscore" }, unicodeslot=0x333, }, { @@ -8580,6 +8684,7 @@ characters.data={ description="COMBINING SHORT SOLIDUS OVERLAY", direction="nsm", linebreak="cm", + synonyms={ "short slash overlay" }, unicodeslot=0x337, }, { @@ -8592,6 +8697,7 @@ characters.data={ linebreak="cm", mathclass="relation", mathname="not", + synonyms={ "long slash overlay" }, unicodeslot=0x338, }, { @@ -8726,6 +8832,7 @@ characters.data={ description="COMBINING GREEK YPOGEGRAMMENI", direction="nsm", linebreak="cm", + synonyms={ "greek iota subscript", "greek non-spacing iota below" }, uccode=0x399, unicodeslot=0x345, }, @@ -8816,6 +8923,7 @@ characters.data={ description="COMBINING GRAPHEME JOINER", direction="nsm", linebreak="gl", + synonyms={ "cgj" }, unicodeslot=0x34F, }, { @@ -8933,6 +9041,7 @@ characters.data={ description="COMBINING DOUBLE BREVE BELOW", direction="nsm", linebreak="gl", + synonyms={ "ligature tie below", "papyrological hyphen" }, unicodeslot=0x35C, }, { @@ -8980,6 +9089,7 @@ characters.data={ description="COMBINING DOUBLE INVERTED BREVE", direction="nsm", linebreak="gl", + synonyms={ "ligature tie" }, unicodeslot=0x361, }, { @@ -9377,6 +9487,7 @@ characters.data={ linebreak="al", mathclass="variable", mathname="Gamma", + synonyms={ "gamma function" }, unicodeslot=0x393, }, [0x394]={ @@ -9940,6 +10051,7 @@ characters.data={ linebreak="al", mathclass="variable", mathname="pi", + synonyms={ "mathematical constant 3.141592... pi", "mathematical constant pi" }, uccode=0x3A0, unicodeslot=0x3C0, }, @@ -10133,6 +10245,7 @@ characters.data={ direction="l", linebreak="al", specials={ "compat", 0x3B2 }, + synonyms={ "curled beta" }, uccode=0x392, unicodeslot=0x3D0, }, @@ -10146,6 +10259,7 @@ characters.data={ mathclass="variable", mathname="varTheta", specials={ "compat", 0x3B8 }, + synonyms={ "script theta" }, uccode=0x398, unicodeslot=0x3D1, }, @@ -10199,6 +10313,7 @@ characters.data={ mathclass="variable", mathname="varpi", specials={ "compat", 0x3C0 }, + synonyms={ "omega pi" }, uccode=0x3A0, unicodeslot=0x3D6, }, @@ -10457,6 +10572,7 @@ characters.data={ direction="l", linebreak="al", specials={ "compat", 0x3C2 }, + synonyms={ "greek small letter lunate sigma" }, uccode=0x3F9, unicodeslot=0x3F2, }, @@ -10486,6 +10602,7 @@ characters.data={ mathclass="variable", mathname="epsilon", specials={ "compat", 0x3B5 }, + synonyms={ "straight epsilon" }, uccode=0x395, unicodeslot=0x3F5, }, @@ -10496,6 +10613,7 @@ characters.data={ linebreak="al", mathclass="variable", mathname="backepsilon", + synonyms={ "reversed straight epsilon" }, unicodeslot=0x3F6, }, [0x3F7]={ @@ -14007,6 +14125,7 @@ characters.data={ description="ARMENIAN APOSTROPHE", direction="l", linebreak="al", + synonyms={ "armenian modifier letter right half ring" }, unicodeslot=0x55A, }, [0x55B]={ @@ -14015,6 +14134,7 @@ characters.data={ description="ARMENIAN EMPHASIS MARK", direction="l", linebreak="al", + synonyms={ "armenian shesht" }, unicodeslot=0x55B, }, [0x55C]={ @@ -14023,6 +14143,7 @@ characters.data={ description="ARMENIAN EXCLAMATION MARK", direction="l", linebreak="al", + synonyms={ "armenian batsaganchakan nshan" }, unicodeslot=0x55C, }, [0x55D]={ @@ -14031,6 +14152,7 @@ characters.data={ description="ARMENIAN COMMA", direction="l", linebreak="al", + synonyms={ "armenian bowt" }, unicodeslot=0x55D, }, [0x55E]={ @@ -14039,6 +14161,7 @@ characters.data={ description="ARMENIAN QUESTION MARK", direction="l", linebreak="al", + synonyms={ "armenian hartsakan nshan" }, unicodeslot=0x55E, }, [0x55F]={ @@ -14047,6 +14170,7 @@ characters.data={ description="ARMENIAN ABBREVIATION MARK", direction="l", linebreak="al", + synonyms={ "armenian patiw" }, unicodeslot=0x55F, }, [0x561]={ @@ -14406,6 +14530,7 @@ characters.data={ description="ARMENIAN FULL STOP", direction="l", linebreak="is", + synonyms={ "armenian vertsaket", "georgian full stop" }, unicodeslot=0x589, }, [0x58A]={ @@ -14413,6 +14538,7 @@ characters.data={ description="ARMENIAN HYPHEN", direction="on", linebreak="ba", + synonyms={ "armenian yentamna" }, unicodeslot=0x58A, }, [0x58D]={ @@ -14434,6 +14560,7 @@ characters.data={ description="ARMENIAN DRAM SIGN", direction="et", linebreak="pr", + synonyms={ "armenian currency" }, unicodeslot=0x58F, }, [0x591]={ @@ -15747,6 +15874,7 @@ characters.data={ description="ARABIC TATWEEL", direction="al", linebreak="al", + synonyms={ "arabic kashida" }, unicodeslot=0x640, }, [0x641]={ @@ -16117,6 +16245,7 @@ characters.data={ description="ARABIC THOUSANDS SEPARATOR", direction="an", linebreak="nu", + synonyms={ "arabic phrase separator" }, unicodeslot=0x66C, }, [0x66D]={ @@ -16850,6 +16979,7 @@ characters.data={ linebreak="al", shcode=0x647, specials={ "char", 0x6D5, 0x654 }, + synonyms={ "arabic letter hamzah on ha", "izafet" }, unicodeslot=0x6C0, }, [0x6C1]={ @@ -17471,6 +17601,7 @@ characters.data={ description="SYRIAC ABBREVIATION MARK", direction="al", linebreak="al", + synonyms={ "syriac sam" }, unicodeslot=0x70F, visible="yes", }, @@ -20466,6 +20597,7 @@ characters.data={ description="DEVANAGARI SIGN CANDRABINDU", direction="nsm", linebreak="cm", + synonyms={ "devanagari anunasika" }, unicodeslot=0x901, }, [0x902]={ @@ -20474,6 +20606,7 @@ characters.data={ description="DEVANAGARI SIGN ANUSVARA", direction="nsm", linebreak="cm", + synonyms={ "devanagari bindu" }, unicodeslot=0x902, }, [0x903]={ @@ -21076,6 +21209,7 @@ characters.data={ description="DEVANAGARI SIGN VIRAMA", direction="nsm", linebreak="cm", + synonyms={ "halant" }, unicodeslot=0x94D, }, [0x94E]={ @@ -21267,6 +21401,7 @@ characters.data={ description="DEVANAGARI DANDA", direction="l", linebreak="ba", + synonyms={ "devanagari phrase separator", "devanagari purna viram" }, unicodeslot=0x964, }, [0x965]={ @@ -21275,6 +21410,7 @@ characters.data={ description="DEVANAGARI DOUBLE DANDA", direction="l", linebreak="ba", + synonyms={ "devanagari deergh viram" }, unicodeslot=0x965, }, [0x966]={ @@ -21966,6 +22102,7 @@ characters.data={ description="BENGALI SIGN VIRAMA", direction="nsm", linebreak="cm", + synonyms={ "bengali hasant" }, unicodeslot=0x9CD, }, [0x9CE]={ @@ -24177,6 +24314,7 @@ characters.data={ description="TAMIL SIGN VISARGA", direction="l", linebreak="al", + synonyms={ "tamil aytham" }, unicodeslot=0xB83, }, [0xB85]={ @@ -24623,6 +24761,7 @@ characters.data={ description="TAMIL DAY SIGN", direction="on", linebreak="al", + synonyms={ "tamil naal" }, unicodeslot=0xBF3, }, [0xBF4]={ @@ -24630,6 +24769,7 @@ characters.data={ description="TAMIL MONTH SIGN", direction="on", linebreak="al", + synonyms={ "tamil maatham" }, unicodeslot=0xBF4, }, [0xBF5]={ @@ -24637,6 +24777,7 @@ characters.data={ description="TAMIL YEAR SIGN", direction="on", linebreak="al", + synonyms={ "tamil varudam" }, unicodeslot=0xBF5, }, [0xBF6]={ @@ -24644,6 +24785,7 @@ characters.data={ description="TAMIL DEBIT SIGN", direction="on", linebreak="al", + synonyms={ "tamil patru" }, unicodeslot=0xBF6, }, [0xBF7]={ @@ -24651,6 +24793,7 @@ characters.data={ description="TAMIL CREDIT SIGN", direction="on", linebreak="al", + synonyms={ "tamil varavu" }, unicodeslot=0xBF7, }, [0xBF8]={ @@ -24658,6 +24801,7 @@ characters.data={ description="TAMIL AS ABOVE SIGN", direction="on", linebreak="al", + synonyms={ "tamil merpadi" }, unicodeslot=0xBF8, }, [0xBF9]={ @@ -24665,6 +24809,7 @@ characters.data={ description="TAMIL RUPEE SIGN", direction="et", linebreak="pr", + synonyms={ "tamil rupai" }, unicodeslot=0xBF9, }, [0xBFA]={ @@ -24672,6 +24817,7 @@ characters.data={ description="TAMIL NUMBER SIGN", direction="on", linebreak="al", + synonyms={ "tamil enn" }, unicodeslot=0xBFA, }, [0xC00]={ @@ -24693,6 +24839,7 @@ characters.data={ description="TELUGU SIGN ANUSVARA", direction="l", linebreak="cm", + synonyms={ "telugu sunna" }, unicodeslot=0xC02, }, [0xC03]={ @@ -26465,6 +26612,7 @@ characters.data={ description="MALAYALAM SIGN VIRAMA", direction="nsm", linebreak="cm", + synonyms={ "malayalam chandrakkala", "malayalam vowel half-u" }, unicodeslot=0xD4D, }, [0xD4E]={ @@ -27208,6 +27356,7 @@ characters.data={ description="SINHALA SIGN AL-LAKUNA", direction="nsm", linebreak="cm", + synonyms={ "sinhala virama" }, unicodeslot=0xDCA, }, [0xDCF]={ @@ -29473,6 +29622,7 @@ characters.data={ description="TIBETAN SIGN RJES SU NGA RO", direction="nsm", linebreak="cm", + synonyms={ "tibetan anusvara" }, unicodeslot=0xF7E, }, [0xF7F]={ @@ -29480,6 +29630,7 @@ characters.data={ description="TIBETAN SIGN RNAM BCAD", direction="l", linebreak="ba", + synonyms={ "tibetan visarga" }, unicodeslot=0xF7F, }, [0xF80]={ @@ -29520,6 +29671,7 @@ characters.data={ description="TIBETAN MARK HALANTA", direction="nsm", linebreak="cm", + synonyms={ "tibetan srog med" }, unicodeslot=0xF84, }, [0xF85]={ @@ -30555,6 +30707,7 @@ characters.data={ description="MYANMAR SIGN VIRAMA", direction="nsm", linebreak="sa", + synonyms={ "myanmar killer" }, unicodeslot=0x1039, }, [0x103A]={ @@ -43535,6 +43688,7 @@ characters.data={ description="KHMER SIGN NIKAHIT", direction="nsm", linebreak="sa", + synonyms={ "khmer anusvara", "khmer srak am" }, unicodeslot=0x17C6, }, [0x17C7]={ @@ -43542,6 +43696,7 @@ characters.data={ description="KHMER SIGN REAHMUK", direction="l", linebreak="sa", + synonyms={ "khmer srak ah", "khmer visarga" }, unicodeslot=0x17C7, }, [0x17C8]={ @@ -43925,6 +44080,7 @@ characters.data={ description="MONGOLIAN FREE VARIATION SELECTOR ONE", direction="nsm", linebreak="cm", + synonyms={ "fvs1" }, unicodeslot=0x180B, }, [0x180C]={ @@ -58794,6 +58950,7 @@ characters.data={ direction="ws", linebreak="ba", specials={ "char", 0x2003 }, + synonyms={ "mutton quad" }, unicodeslot=0x2001, }, [0x2002]={ @@ -58804,6 +58961,7 @@ characters.data={ direction="ws", linebreak="ba", specials={ "compat", 0x20 }, + synonyms={ "nut" }, unicodeslot=0x2002, }, [0x2003]={ @@ -58813,6 +58971,7 @@ characters.data={ direction="ws", linebreak="ba", specials={ "compat", 0x20 }, + synonyms={ "mutton" }, unicodeslot=0x2003, }, [0x2004]={ @@ -58822,6 +58981,7 @@ characters.data={ direction="ws", linebreak="ba", specials={ "compat", 0x20 }, + synonyms={ "thick space" }, unicodeslot=0x2004, }, [0x2005]={ @@ -58831,6 +58991,7 @@ characters.data={ direction="ws", linebreak="ba", specials={ "compat", 0x20 }, + synonyms={ "mid space" }, unicodeslot=0x2005, }, [0x2006]={ @@ -58885,6 +59046,7 @@ characters.data={ description="ZERO WIDTH SPACE", direction="bn", linebreak="zw", + synonyms={ "zwsp" }, unicodeslot=0x200B, }, [0x200C]={ @@ -58895,6 +59057,7 @@ characters.data={ description="ZERO WIDTH NON-JOINER", direction="bn", linebreak="cm", + synonyms={ "zwnj" }, unicodeslot=0x200C, }, [0x200D]={ @@ -58905,6 +59068,7 @@ characters.data={ description="ZERO WIDTH JOINER", direction="bn", linebreak="zwj", + synonyms={ "zwj" }, unicodeslot=0x200D, }, [0x200E]={ @@ -58913,6 +59077,7 @@ characters.data={ description="LEFT-TO-RIGHT MARK", direction="l", linebreak="cm", + synonyms={ "lrm" }, unicodeslot=0x200E, }, [0x200F]={ @@ -58921,6 +59086,7 @@ characters.data={ description="RIGHT-TO-LEFT MARK", direction="r", linebreak="cm", + synonyms={ "rlm" }, unicodeslot=0x200F, }, [0x2010]={ @@ -58977,6 +59143,7 @@ characters.data={ description="HORIZONTAL BAR", direction="on", linebreak="ai", + synonyms={ "quotation dash" }, unicodeslot=0x2015, }, [0x2016]={ @@ -59017,6 +59184,7 @@ characters.data={ direction="on", linebreak="al", specials={ "compat", 0x20, 0x333 }, + synonyms={ "spacing double underscore" }, unicodeslot=0x2017, }, [0x2018]={ @@ -59027,6 +59195,7 @@ characters.data={ description="LEFT SINGLE QUOTATION MARK", direction="on", linebreak="qu", + synonyms={ "single turned comma quotation mark" }, unicodeslot=0x2018, }, [0x2019]={ @@ -59037,6 +59206,7 @@ characters.data={ description="RIGHT SINGLE QUOTATION MARK", direction="on", linebreak="qu", + synonyms={ "apostrophe", "single comma quotation mark" }, unicodeslot=0x2019, }, [0x201A]={ @@ -59046,6 +59216,7 @@ characters.data={ description="SINGLE LOW-0x0009 QUOTATION MARK", direction="on", linebreak="op", + synonyms={ "low single comma quotation mark" }, unicodeslot=0x201A, }, [0x201B]={ @@ -59054,6 +59225,7 @@ characters.data={ description="SINGLE HIGH-REVERSED-0x0009 QUOTATION MARK", direction="on", linebreak="qu", + synonyms={ "single reversed comma quotation mark" }, unicodeslot=0x201B, }, [0x201C]={ @@ -59064,6 +59236,7 @@ characters.data={ description="LEFT DOUBLE QUOTATION MARK", direction="on", linebreak="qu", + synonyms={ "double turned comma quotation mark" }, unicodeslot=0x201C, }, [0x201D]={ @@ -59074,6 +59247,7 @@ characters.data={ description="RIGHT DOUBLE QUOTATION MARK", direction="on", linebreak="qu", + synonyms={ "double comma quotation mark" }, unicodeslot=0x201D, }, [0x201E]={ @@ -59083,6 +59257,7 @@ characters.data={ description="DOUBLE LOW-0x0009 QUOTATION MARK", direction="on", linebreak="op", + synonyms={ "low double comma quotation mark" }, unicodeslot=0x201E, }, [0x201F]={ @@ -59090,6 +59265,7 @@ characters.data={ description="DOUBLE HIGH-REVERSED-0x0009 QUOTATION MARK", direction="on", linebreak="qu", + synonyms={ "double reversed comma quotation mark" }, unicodeslot=0x201F, }, [0x2020]={ @@ -59110,6 +59286,7 @@ characters.data={ name="dag", }, }, + synonyms={ "long cross" }, unicodeslot=0x2020, }, [0x2021]={ @@ -59130,6 +59307,7 @@ characters.data={ name="ddag", }, }, + synonyms={ "diesis" }, unicodeslot=0x2021, }, [0x2022]={ @@ -59142,6 +59320,7 @@ characters.data={ linebreak="al", mathclass="binary", mathname="bullet", + synonyms={ "black small circle" }, unicodeslot=0x2022, }, [0x2023]={ @@ -59190,6 +59369,7 @@ characters.data={ }, }, specials={ "compat", 0x2E, 0x2E, 0x2E }, + synonyms={ "three dot leader" }, unicodeslot=0x2026, }, [0x2027]={ @@ -59219,6 +59399,7 @@ characters.data={ description="LEFT-TO-RIGHT EMBEDDING", direction="lre", linebreak="cm", + synonyms={ "lre" }, unicodeslot=0x202A, }, [0x202B]={ @@ -59226,6 +59407,7 @@ characters.data={ description="RIGHT-TO-LEFT EMBEDDING", direction="rle", linebreak="cm", + synonyms={ "rle" }, unicodeslot=0x202B, }, [0x202C]={ @@ -59234,6 +59416,7 @@ characters.data={ description="POP DIRECTIONAL FORMATTING", direction="pdf", linebreak="cm", + synonyms={ "pdf" }, unicodeslot=0x202C, }, [0x202D]={ @@ -59242,6 +59425,7 @@ characters.data={ description="LEFT-TO-RIGHT OVERRIDE", direction="lro", linebreak="cm", + synonyms={ "lro" }, unicodeslot=0x202D, }, [0x202E]={ @@ -59250,6 +59434,7 @@ characters.data={ description="RIGHT-TO-LEFT OVERRIDE", direction="rlo", linebreak="cm", + synonyms={ "rlo" }, unicodeslot=0x202E, }, [0x202F]={ @@ -59260,6 +59445,7 @@ characters.data={ direction="cs", linebreak="gl", specials={ "nobreak", 0x20 }, + synonyms={ "nnbsp" }, unicodeslot=0x202F, }, [0x2030]={ @@ -59270,6 +59456,7 @@ characters.data={ description="PER MILLE SIGN", direction="et", linebreak="po", + synonyms={ "per thousand" }, unicodeslot=0x2030, }, [0x2031]={ @@ -59288,6 +59475,7 @@ characters.data={ linebreak="po", mathclass="nothing", mathname="prime", + synonyms={ "feet", "minutes" }, unicodeslot=0x2032, }, [0x2033]={ @@ -59300,6 +59488,7 @@ characters.data={ mathclass="nothing", mathname="doubleprime", specials={ "compat", 0x2032, 0x2032 }, + synonyms={ "inches", "seconds" }, unicodeslot=0x2033, }, [0x2034]={ @@ -59358,6 +59547,7 @@ characters.data={ direction="on", linebreak="qu", mirror=0x203A, + synonyms={ "left pointing single guillemet" }, textclass="open", unicodeslot=0x2039, }, @@ -59369,6 +59559,7 @@ characters.data={ direction="on", linebreak="qu", mirror=0x2039, + synonyms={ "right pointing single guillemet" }, textclass="close", unicodeslot=0x203A, }, @@ -59379,6 +59570,7 @@ characters.data={ description="REFERENCE MARK", direction="on", linebreak="ai", + synonyms={ "japanese kome", "urdu paragraph separator" }, unicodeslot=0x203B, }, [0x203C]={ @@ -59420,6 +59612,7 @@ characters.data={ }, mathstretch="h", specials={ "compat", 0x20, 0x305 }, + synonyms={ "spacing overscore" }, unicodeslot=0x203E, }, [0x203F]={ @@ -59427,6 +59620,7 @@ characters.data={ description="UNDERTIE", direction="on", linebreak="al", + synonyms={ "greek enotikon" }, unicodeslot=0x203F, }, [0x2040]={ @@ -59434,6 +59628,7 @@ characters.data={ description="CHARACTER TIE", direction="on", linebreak="al", + synonyms={ "sequence concatenation" }, unicodeslot=0x2040, }, [0x2041]={ @@ -59475,6 +59670,7 @@ characters.data={ name="solidus", }, }, + synonyms={ "solidus" }, unicodeslot=0x2044, }, [0x2045]={ @@ -59579,6 +59775,7 @@ characters.data={ description="COMMERCIAL MINUS SIGN", direction="on", linebreak="al", + synonyms={ "med avdrag av", "piska" }, unicodeslot=0x2052, }, [0x2053]={ @@ -59600,6 +59797,7 @@ characters.data={ description="FLOWER PUNCTUATION MARK", direction="on", linebreak="al", + synonyms={ "phul", "puspika" }, unicodeslot=0x2055, }, [0x2056]={ @@ -59631,6 +59829,7 @@ characters.data={ description="FIVE DOT PUNCTUATION", direction="on", linebreak="ba", + synonyms={ "greek pentonkion" }, unicodeslot=0x2059, }, [0x205A]={ @@ -59659,6 +59858,7 @@ characters.data={ description="TRICOLON", direction="on", linebreak="ba", + synonyms={ "epidaurean acrophonic symbol three" }, unicodeslot=0x205D, }, [0x205E]={ @@ -59675,6 +59875,7 @@ characters.data={ direction="ws", linebreak="ba", specials={ "compat", 0x20 }, + synonyms={ "mmsp" }, unicodeslot=0x205F, }, [0x2060]={ @@ -59682,6 +59883,7 @@ characters.data={ description="WORD JOINER", direction="bn", linebreak="wj", + synonyms={ "wj" }, unicodeslot=0x2060, }, [0x2061]={ @@ -59706,6 +59908,7 @@ characters.data={ linebreak="al", mathclass="binary", mathname="invisibletimes", + synonyms={ "invisible comma" }, unicodeslot=0x2063, }, [0x2064]={ @@ -60180,6 +60383,7 @@ characters.data={ description="COLON SIGN", direction="et", linebreak="pr", + synonyms={ "costa rican currency", "el salvadorian currency" }, unicodeslot=0x20A1, }, [0x20A2]={ @@ -60188,6 +60392,7 @@ characters.data={ description="CRUZEIRO SIGN", direction="et", linebreak="pr", + synonyms={ "brazilian currency" }, unicodeslot=0x20A2, }, [0x20A3]={ @@ -60196,6 +60401,7 @@ characters.data={ description="FRENCH FRANC SIGN", direction="et", linebreak="pr", + synonyms={ "french currency" }, unicodeslot=0x20A3, }, [0x20A4]={ @@ -60204,6 +60410,7 @@ characters.data={ description="LIRA SIGN", direction="et", linebreak="pr", + synonyms={ "italian currency", "turkish currency" }, unicodeslot=0x20A4, }, [0x20A5]={ @@ -60218,6 +60425,7 @@ characters.data={ description="NAIRA SIGN", direction="et", linebreak="pr", + synonyms={ "nigerian currency" }, unicodeslot=0x20A6, }, [0x20A7]={ @@ -60226,6 +60434,7 @@ characters.data={ description="PESETA SIGN", direction="et", linebreak="po", + synonyms={ "spanish currency" }, unicodeslot=0x20A7, }, [0x20A8]={ @@ -60234,6 +60443,7 @@ characters.data={ direction="et", linebreak="pr", specials={ "compat", 0x52, 0x73 }, + synonyms={ "indian currency" }, unicodeslot=0x20A8, }, [0x20A9]={ @@ -60243,6 +60453,7 @@ characters.data={ description="WON SIGN", direction="et", linebreak="pr", + synonyms={ "korean currency" }, unicodeslot=0x20A9, }, [0x20AA]={ @@ -60251,6 +60462,7 @@ characters.data={ description="NEW SHEQEL SIGN", direction="et", linebreak="pr", + synonyms={ "israeli currency" }, unicodeslot=0x20AA, }, [0x20AB]={ @@ -60260,6 +60472,7 @@ characters.data={ description="DONG SIGN", direction="et", linebreak="pr", + synonyms={ "vietnamese currency" }, unicodeslot=0x20AB, }, [0x20AC]={ @@ -60270,6 +60483,7 @@ characters.data={ description="EURO SIGN", direction="et", linebreak="pr", + synonyms={ "euro european currency" }, unicodeslot=0x20AC, }, [0x20AD]={ @@ -60277,6 +60491,7 @@ characters.data={ description="KIP SIGN", direction="et", linebreak="pr", + synonyms={ "laotian currency" }, unicodeslot=0x20AD, }, [0x20AE]={ @@ -60284,6 +60499,7 @@ characters.data={ description="TUGRIK SIGN", direction="et", linebreak="pr", + synonyms={ "mongolian currency" }, unicodeslot=0x20AE, }, [0x20AF]={ @@ -60291,6 +60507,7 @@ characters.data={ description="DRACHMA SIGN", direction="et", linebreak="pr", + synonyms={ "greek currency" }, unicodeslot=0x20AF, }, [0x20B0]={ @@ -60305,6 +60522,7 @@ characters.data={ description="PESO SIGN", direction="et", linebreak="pr", + synonyms={ "phillipine currency" }, unicodeslot=0x20B1, }, [0x20B2]={ @@ -60312,6 +60530,7 @@ characters.data={ description="GUARANI SIGN", direction="et", linebreak="pr", + synonyms={ "paraguayan currency" }, unicodeslot=0x20B2, }, [0x20B3]={ @@ -60319,6 +60538,7 @@ characters.data={ description="AUSTRAL SIGN", direction="et", linebreak="pr", + synonyms={ "argentinian former currency" }, unicodeslot=0x20B3, }, [0x20B4]={ @@ -60326,6 +60546,7 @@ characters.data={ description="HRYVNIA SIGN", direction="et", linebreak="pr", + synonyms={ "ukrainian currency" }, unicodeslot=0x20B4, }, [0x20B5]={ @@ -60333,6 +60554,7 @@ characters.data={ description="CEDI SIGN", direction="et", linebreak="pr", + synonyms={ "ghana currency" }, unicodeslot=0x20B5, }, [0x20B6]={ @@ -60382,6 +60604,7 @@ characters.data={ description="MANAT SIGN", direction="et", linebreak="pr", + synonyms={ "azerbaijani currency" }, unicodeslot=0x20BC, }, [0x20BD]={ @@ -60389,6 +60612,7 @@ characters.data={ description="RUBLE SIGN", direction="et", linebreak="pr", + synonyms={ "russian currency" }, unicodeslot=0x20BD, }, [0x20BE]={ @@ -60396,6 +60620,7 @@ characters.data={ description="LARI SIGN", direction="et", linebreak="po", + synonyms={ "georgian currency" }, unicodeslot=0x20BE, }, [0x20D0]={ @@ -60436,6 +60661,7 @@ characters.data={ description="COMBINING ANTICLOCKWISE ARROW ABOVE", direction="nsm", linebreak="cm", + synonyms={ "combining counterclockwise arrow above" }, unicodeslot=0x20D4, }, [0x20D5]={ @@ -60462,6 +60688,7 @@ characters.data={ linebreak="cm", mathclass="topaccent", mathname="vec", + synonyms={ "vector" }, unicodeslot=0x20D7, }, [0x20D8]={ @@ -60486,6 +60713,7 @@ characters.data={ description="COMBINING ANTICLOCKWISE RING OVERLAY", direction="nsm", linebreak="cm", + synonyms={ "combining counterclockwise ring overlay" }, unicodeslot=0x20DA, }, [0x20DB]={ @@ -60496,6 +60724,7 @@ characters.data={ linebreak="cm", mathclass="topaccent", mathname="dddot", + synonyms={ "third derivative" }, unicodeslot=0x20DB, }, [0x20DC]={ @@ -60504,6 +60733,7 @@ characters.data={ description="COMBINING FOUR DOTS ABOVE", direction="nsm", linebreak="cm", + synonyms={ "fourth derivative" }, unicodeslot=0x20DC, }, [0x20DD]={ @@ -60521,6 +60751,7 @@ characters.data={ name="bigcircle", }, }, + synonyms={ "jis composition circle" }, unicodeslot=0x20DD, }, [0x20DE]={ @@ -60546,6 +60777,7 @@ characters.data={ description="COMBINING ENCLOSING CIRCLE BACKSLASH", direction="nsm", linebreak="cm", + synonyms={ "no", "prohibition" }, unicodeslot=0x20E0, }, [0x20E1]={ @@ -60591,6 +60823,7 @@ characters.data={ description="COMBINING DOUBLE VERTICAL STROKE OVERLAY", direction="nsm", linebreak="cm", + synonyms={ "finite function diacritic" }, unicodeslot=0x20E6, }, [0x20E7]={ @@ -60601,6 +60834,7 @@ characters.data={ linebreak="cm", mathclass="topaccent", mathname="actuarial", + synonyms={ "actuarial bend" }, unicodeslot=0x20E7, }, [0x20E8]={ @@ -60618,6 +60852,7 @@ characters.data={ direction="nsm", linebreak="cm", mathclass="topaccent", + synonyms={ "contraction operator" }, unicodeslot=0x20E9, }, [0x20EA]={ @@ -60634,6 +60869,7 @@ characters.data={ description="COMBINING LONG DOUBLE SOLIDUS OVERLAY", direction="nsm", linebreak="cm", + synonyms={ "long double slash overlay" }, unicodeslot=0x20EB, }, [0x20EC]={ @@ -60700,6 +60936,7 @@ characters.data={ mathclass="variable", mathname="complexes", specials={ "font", 0x43 }, + synonyms={ "complex numbers", "the set of complex numbers" }, unicodeslot=0x2102, }, [0x2103]={ @@ -60711,6 +60948,7 @@ characters.data={ direction="on", linebreak="po", specials={ "compat", 0xB0, 0x43 }, + synonyms={ "degrees centigrade" }, unicodeslot=0x2103, }, [0x2104]={ @@ -60718,6 +60956,7 @@ characters.data={ description="CENTRE LINE SYMBOL", direction="on", linebreak="al", + synonyms={ "clone" }, unicodeslot=0x2104, }, [0x2105]={ @@ -60771,6 +61010,7 @@ characters.data={ direction="l", linebreak="al", specials={ "font", 0x67 }, + synonyms={ "real number symbol" }, unicodeslot=0x210A, }, [0x210B]={ @@ -60787,6 +61027,7 @@ characters.data={ direction="l", linebreak="al", specials={ "font", 0x48 }, + synonyms={ "hilbert space" }, unicodeslot=0x210C, }, [0x210D]={ @@ -60842,6 +61083,7 @@ characters.data={ mathclass="default", mathname="Im", specials={ "font", 0x49 }, + synonyms={ "imaginary part" }, unicodeslot=0x2111, }, [0x2112]={ @@ -60850,6 +61092,7 @@ characters.data={ direction="l", linebreak="al", specials={ "font", 0x4C }, + synonyms={ "laplace transform" }, unicodeslot=0x2112, }, [0x2113]={ @@ -60862,6 +61105,7 @@ characters.data={ mathclass="default", mathname="ell", specials={ "font", 0x6C }, + synonyms={ "liter" }, unicodeslot=0x2113, }, [0x2114]={ @@ -60869,6 +61113,7 @@ characters.data={ description="L B BAR SYMBOL", direction="on", linebreak="al", + synonyms={ "pounds" }, unicodeslot=0x2114, }, [0x2115]={ @@ -60879,6 +61124,7 @@ characters.data={ mathclass="variable", mathname="naturalnumbers", specials={ "font", 0x4E }, + synonyms={ "natural number" }, unicodeslot=0x2115, }, [0x2116]={ @@ -60898,6 +61144,7 @@ characters.data={ description="SOUND RECORDING COPYRIGHT", direction="on", linebreak="al", + synonyms={ "phonorecord sign", "published" }, unicodeslot=0x2117, }, [0x2118]={ @@ -60908,6 +61155,7 @@ characters.data={ linebreak="al", mathclass="default", mathname="wp", + synonyms={ "weierstrass elliptic function" }, unicodeslot=0x2118, }, [0x2119]={ @@ -60928,6 +61176,7 @@ characters.data={ mathclass="variable", mathname="rationals", specials={ "font", 0x51 }, + synonyms={ "rational numbers", "the set of rational numbers" }, unicodeslot=0x211A, }, [0x211B]={ @@ -60936,6 +61185,7 @@ characters.data={ direction="l", linebreak="al", specials={ "font", 0x52 }, + synonyms={ "riemann integral" }, unicodeslot=0x211B, }, [0x211C]={ @@ -60947,6 +61197,7 @@ characters.data={ mathclass="default", mathname="Re", specials={ "font", 0x52 }, + synonyms={ "real part" }, unicodeslot=0x211C, }, [0x211D]={ @@ -60957,6 +61208,7 @@ characters.data={ mathclass="variable", mathname="reals", specials={ "font", 0x52 }, + synonyms={ "real numbers", "the set of real numbers" }, unicodeslot=0x211D, }, [0x211E]={ @@ -60965,6 +61217,7 @@ characters.data={ description="PRESCRIPTION TAKE", direction="on", linebreak="al", + synonyms={ "cross ratio", "recipe" }, unicodeslot=0x211E, }, [0x211F]={ @@ -61019,6 +61272,7 @@ characters.data={ mathclass="variable", mathname="integers", specials={ "font", 0x5A }, + synonyms={ "integers", "the set of integers" }, unicodeslot=0x2124, }, [0x2125]={ @@ -61051,6 +61305,7 @@ characters.data={ linebreak="al", mathclass="variable", mathname="mho", + synonyms={ "mho" }, unicodeslot=0x2127, }, [0x2128]={ @@ -61068,6 +61323,7 @@ characters.data={ linebreak="al", mathclass="variable", mathname="turnediota", + synonyms={ "unique element" }, unicodeslot=0x2129, }, [0x212A]={ @@ -61100,6 +61356,7 @@ characters.data={ direction="l", linebreak="al", specials={ "font", 0x42 }, + synonyms={ "bernoulli function" }, unicodeslot=0x212C, }, [0x212D]={ @@ -61124,6 +61381,7 @@ characters.data={ direction="l", linebreak="al", specials={ "font", 0x65 }, + synonyms={ "error", "natural exponent" }, unicodeslot=0x212F, }, [0x2130]={ @@ -61132,6 +61390,7 @@ characters.data={ direction="l", linebreak="al", specials={ "font", 0x45 }, + synonyms={ "electromotive force", "emf" }, unicodeslot=0x2130, }, [0x2131]={ @@ -61140,6 +61399,7 @@ characters.data={ direction="l", linebreak="al", specials={ "font", 0x46 }, + synonyms={ "fourier transform" }, unicodeslot=0x2131, }, [0x2132]={ @@ -61150,6 +61410,7 @@ characters.data={ linebreak="al", mathclass="ordinary", mathname="Finv", + synonyms={ "claudian digamma inversum" }, unicodeslot=0x2132, }, [0x2133]={ @@ -61158,6 +61419,7 @@ characters.data={ direction="l", linebreak="al", specials={ "font", 0x4D }, + synonyms={ "german mark pre-wwii", "m-matrix" }, unicodeslot=0x2133, }, [0x2134]={ @@ -61166,6 +61428,7 @@ characters.data={ direction="l", linebreak="al", specials={ "font", 0x6F }, + synonyms={ "order" }, unicodeslot=0x2134, }, [0x2135]={ @@ -61177,6 +61440,7 @@ characters.data={ mathclass="default", mathname="aleph", specials={ "compat", 0x5D0 }, + synonyms={ "first transfinite cardinal", "first transfinite cardinal countable" }, unicodeslot=0x2135, }, [0x2136]={ @@ -61187,6 +61451,7 @@ characters.data={ mathclass="default", mathname="beth", specials={ "compat", 0x5D1 }, + synonyms={ "second transfinite cardinal", "second transfinite cardinal continuum" }, unicodeslot=0x2136, }, [0x2137]={ @@ -61197,6 +61462,7 @@ characters.data={ mathclass="default", mathname="gimel", specials={ "compat", 0x5D2 }, + synonyms={ "third transfinite cardinal" }, unicodeslot=0x2137, }, [0x2138]={ @@ -61207,6 +61473,7 @@ characters.data={ mathclass="default", mathname="daleth", specials={ "compat", 0x5D3 }, + synonyms={ "fourth transfinite cardinal" }, unicodeslot=0x2138, }, [0x2139]={ @@ -61280,6 +61547,7 @@ characters.data={ linebreak="al", mathclass="ordinary", mathname="Game", + synonyms={ "game" }, unicodeslot=0x2141, }, [0x2142]={ @@ -61951,6 +62219,7 @@ characters.data={ direction="l", lccode=0x2184, linebreak="al", + synonyms={ "apostrophic c", "claudian antisigma" }, unicodeslot=0x2183, }, [0x2184]={ @@ -62052,6 +62321,7 @@ characters.data={ mathclass="relation", mathextensible="u", mathname="uparrow", + synonyms={ "egressive airflow" }, unicodeslot=0x2191, }, [0x2192]={ @@ -62082,6 +62352,7 @@ characters.data={ }, }, mathstretch="h", + synonyms={ "total function" }, unicodeslot=0x2192, }, [0x2193]={ @@ -62094,6 +62365,7 @@ characters.data={ mathclass="relation", mathextensible="d", mathname="downarrow", + synonyms={ "ingressive airflow" }, unicodeslot=0x2193, }, [0x2194]={ @@ -62106,6 +62378,7 @@ characters.data={ mathclass="relation", mathextensible="h", mathname="leftrightarrow", + synonyms={ "relation" }, unicodeslot=0x2194, variants=variants_emoji, }, @@ -62221,6 +62494,7 @@ characters.data={ mathextensible="l", mathfiller="twoheadleftarrowfill", mathname="twoheadleftarrow", + synonyms={ "fast cursor left" }, unicodeslot=0x219E, }, [0x219F]={ @@ -62231,6 +62505,7 @@ characters.data={ mathclass="relation", mathextensible="u", mathname="twoheaduparrow", + synonyms={ "fast cursor up" }, unicodeslot=0x219F, }, [0x21A0]={ @@ -62242,6 +62517,7 @@ characters.data={ mathextensible="r", mathfiller="twoheadrightarrowfill", mathname="twoheadrightarrow", + synonyms={ "fast cursor right", "total surjection" }, unicodeslot=0x21A0, }, [0x21A1]={ @@ -62252,6 +62528,7 @@ characters.data={ mathclass="relation", mathextensible="d", mathname="twoheaddownarrow", + synonyms={ "fast cursor down", "form feed" }, unicodeslot=0x21A1, }, [0x21A2]={ @@ -62272,6 +62549,7 @@ characters.data={ mathclass="relation", mathextensible="r", mathname="rightarrowtail", + synonyms={ "total injection" }, unicodeslot=0x21A3, }, [0x21A4]={ @@ -62303,6 +62581,7 @@ characters.data={ mathextensible="r", mathfiller="mapstofill", mathname="mapsto", + synonyms={ "maplet" }, unicodeslot=0x21A6, }, [0x21A7]={ @@ -62313,6 +62592,7 @@ characters.data={ mathclass="relation", mathextensible="d", mathname="mapsdown", + synonyms={ "depth symbol" }, unicodeslot=0x21A7, }, [0x21A8]={ @@ -62399,6 +62679,7 @@ characters.data={ mathclass="relation", mathextensible="d", mathname="downzigzagarrow", + synonyms={ "electrolysis" }, unicodeslot=0x21AF, }, [0x21B0]={ @@ -62449,6 +62730,7 @@ characters.data={ mathclass="ordinary", mathextensible="m", mathname="linefeed", + synonyms={ "line feed" }, unicodeslot=0x21B4, }, [0x21B5]={ @@ -62500,6 +62782,7 @@ characters.data={ mathclass="relation", mathextensible="h", mathname="barleftarrowrightarrowbar", + synonyms={ "tab with shift tab" }, unicodeslot=0x21B9, }, [0x21BA]={ @@ -62925,6 +63208,7 @@ characters.data={ mathclass="relation", mathextensible="u", mathname="nHuparrow", + synonyms={ "page up" }, unicodeslot=0x21DE, }, [0x21DF]={ @@ -62998,6 +63282,7 @@ characters.data={ mathclass="relation", mathextensible="l", mathname="barleftarrow", + synonyms={ "leftward tab" }, unicodeslot=0x21E4, }, [0x21E5]={ @@ -63009,6 +63294,7 @@ characters.data={ mathclass="relation", mathextensible="r", mathname="rightarrowbar", + synonyms={ "rightward tab" }, unicodeslot=0x21E5, }, [0x21E6]={ @@ -63032,6 +63318,7 @@ characters.data={ mathclass="ordinary", mathextensible="u", mathname="upwhitearrow", + synonyms={ "shift" }, unicodeslot=0x21E7, }, [0x21E8]={ @@ -63072,6 +63359,7 @@ characters.data={ mathclass="ordinary", mathextensible="u", mathname="whitearrowupfrombar", + synonyms={ "level 2 lock" }, unicodeslot=0x21EB, }, [0x21EC]={ @@ -63079,6 +63367,7 @@ characters.data={ description="UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR", direction="on", linebreak="al", + synonyms={ "caps lock" }, unicodeslot=0x21EC, }, [0x21ED]={ @@ -63086,6 +63375,7 @@ characters.data={ description="UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR", direction="on", linebreak="al", + synonyms={ "numerics lock" }, unicodeslot=0x21ED, }, [0x21EE]={ @@ -63093,6 +63383,7 @@ characters.data={ description="UPWARDS WHITE DOUBLE ARROW", direction="on", linebreak="al", + synonyms={ "level 3 select" }, unicodeslot=0x21EE, }, [0x21EF]={ @@ -63100,6 +63391,7 @@ characters.data={ description="UPWARDS WHITE DOUBLE ARROW ON PEDESTAL", direction="on", linebreak="al", + synonyms={ "level 3 lock" }, unicodeslot=0x21EF, }, [0x21F0]={ @@ -63107,6 +63399,7 @@ characters.data={ description="RIGHTWARDS WHITE ARROW FROM WALL", direction="on", linebreak="al", + synonyms={ "group lock" }, unicodeslot=0x21F0, }, [0x21F1]={ @@ -63114,6 +63407,7 @@ characters.data={ description="NORTH WEST ARROW TO CORNER", direction="on", linebreak="al", + synonyms={ "home" }, unicodeslot=0x21F1, }, [0x21F2]={ @@ -63121,6 +63415,7 @@ characters.data={ description="SOUTH EAST ARROW TO CORNER", direction="on", linebreak="al", + synonyms={ "end" }, unicodeslot=0x21F2, }, [0x21F3]={ @@ -63128,6 +63423,7 @@ characters.data={ description="UP DOWN WHITE ARROW", direction="on", linebreak="al", + synonyms={ "scrolling" }, unicodeslot=0x21F3, }, [0x21F4]={ @@ -63178,6 +63474,7 @@ characters.data={ mathclass="relation", mathextensible="r", mathname="nvrightarrow", + synonyms={ "partial function" }, unicodeslot=0x21F8, }, [0x21F9]={ @@ -63188,6 +63485,7 @@ characters.data={ mathclass="relation", mathextensible="h", mathname="nvleftrightarrow", + synonyms={ "partial relation" }, unicodeslot=0x21F9, }, [0x21FA]={ @@ -63208,6 +63506,7 @@ characters.data={ mathclass="relation", mathextensible="r", mathname="nVrightarrow", + synonyms={ "finite function" }, unicodeslot=0x21FB, }, [0x21FC]={ @@ -63218,6 +63517,7 @@ characters.data={ mathclass="relation", mathextensible="h", mathname="nVleftrightarrow", + synonyms={ "finite relation" }, unicodeslot=0x21FC, }, [0x21FD]={ @@ -63259,6 +63559,7 @@ characters.data={ linebreak="ai", mathclass="ordinary", mathname="forall", + synonyms={ "universal quantifier" }, unicodeslot=0x2200, }, [0x2201]={ @@ -63290,6 +63591,7 @@ characters.data={ linebreak="ai", mathclass="ordinary", mathname="exists", + synonyms={ "existential quantifier" }, unicodeslot=0x2203, }, [0x2204]={ @@ -63310,6 +63612,7 @@ characters.data={ linebreak="al", mathclass="default", mathname="emptyset", + synonyms={ "null set" }, unicodeslot=0x2205, variants={ [0xFE00]="zero with long diagonal stroke overlay form", @@ -63321,6 +63624,7 @@ characters.data={ description="INCREMENT", direction="on", linebreak="al", + synonyms={ "forward difference", "laplace operator" }, unicodeslot=0x2206, }, [0x2207]={ @@ -63332,6 +63636,7 @@ characters.data={ linebreak="ai", mathclass="default", mathname="nabla", + synonyms={ "backward difference", "del" }, unicodeslot=0x2207, }, [0x2208]={ @@ -63427,6 +63732,7 @@ characters.data={ description="END OF PROOF", direction="on", linebreak="al", + synonyms={ "q.e.d." }, unicodeslot=0x220E, }, [0x220F]={ @@ -63438,6 +63744,7 @@ characters.data={ linebreak="ai", mathclass="limop", mathname="prod", + synonyms={ "product sign" }, unicodeslot=0x220F, }, [0x2210]={ @@ -63447,6 +63754,7 @@ characters.data={ linebreak="al", mathclass="limop", mathname="coprod", + synonyms={ "coproduct sign" }, unicodeslot=0x2210, }, [0x2211]={ @@ -63458,6 +63766,7 @@ characters.data={ linebreak="ai", mathclass="limop", mathname="sum", + synonyms={ "summation sign" }, unicodeslot=0x2211, }, [0x2212]={ @@ -63539,6 +63848,7 @@ characters.data={ linebreak="al", mathclass="binary", mathname="circ", + synonyms={ "apl jot", "composite function" }, unicodeslot=0x2218, }, [0x2219]={ @@ -63572,6 +63882,7 @@ characters.data={ name="surd", }, }, + synonyms={ "radical sign" }, unicodeslot=0x221A, }, [0x221B]={ @@ -63648,6 +63959,7 @@ characters.data={ linebreak="al", mathclass="ordinary", mathname="sphericalangle", + synonyms={ "angle arc" }, unicodeslot=0x2222, }, [0x2223]={ @@ -63659,6 +63971,7 @@ characters.data={ linebreak="ai", mathclass="binary", mathname="divides", + synonyms={ "apl stile", "such that" }, unicodeslot=0x2223, }, [0x2224]={ @@ -63722,6 +64035,7 @@ characters.data={ name="land", }, }, + synonyms={ "conjunction", "wedge" }, unicodeslot=0x2227, }, [0x2228]={ @@ -63741,6 +64055,7 @@ characters.data={ name="lor", }, }, + synonyms={ "disjunction", "vee" }, unicodeslot=0x2228, }, [0x2229]={ @@ -63752,6 +64067,7 @@ characters.data={ linebreak="ai", mathclass="binary", mathname="cap", + synonyms={ "cap", "hat" }, unicodeslot=0x2229, variants={ [0xFE00]="with serifs", @@ -63766,6 +64082,7 @@ characters.data={ linebreak="ai", mathclass="binary", mathname="cup", + synonyms={ "cup" }, unicodeslot=0x222A, variants={ [0xFE00]="with serifs", @@ -63887,6 +64204,7 @@ characters.data={ linebreak="al", mathclass="limop", mathname="ointctrclockwise", + synonyms={ "counterclockwise contour integral" }, unicodeslot=0x2233, }, [0x2234]={ @@ -63940,6 +64258,7 @@ characters.data={ linebreak="al", mathclass="binary", mathname="dotminus", + synonyms={ "saturating subtraction" }, unicodeslot=0x2238, }, [0x2239]={ @@ -63975,6 +64294,7 @@ characters.data={ mathclass="relation", mathname="sim", mirror=0x223D, + synonyms={ "apl tilde", "cycle", "difference between", "not", "proportional to", "similar to", "varies with" }, unicodeslot=0x223C, }, [0x223D]={ @@ -63987,6 +64307,7 @@ characters.data={ mathclass="relation", mathname="backsim", mirror=0x223C, + synonyms={ "lazy s" }, unicodeslot=0x223D, }, [0x223E]={ @@ -63994,6 +64315,7 @@ characters.data={ description="INVERTED LAZY S", direction="on", linebreak="al", + synonyms={ "most positive" }, unicodeslot=0x223E, }, [0x223F]={ @@ -64001,6 +64323,7 @@ characters.data={ description="SINE WAVE", direction="on", linebreak="al", + synonyms={ "alternating current" }, unicodeslot=0x223F, }, [0x2240]={ @@ -64106,6 +64429,7 @@ characters.data={ linebreak="ai", mathclass="relation", mathname="approx", + synonyms={ "asymptotic to" }, unicodeslot=0x2248, }, [0x2249]={ @@ -64207,6 +64531,7 @@ characters.data={ mathclass="relation", mathname="fallingdotseq", mirror=0x2253, + synonyms={ "nearly equals" }, unicodeslot=0x2252, }, [0x2253]={ @@ -64258,6 +64583,7 @@ characters.data={ linebreak="al", mathclass="relation", mathname="circeq", + synonyms={ "approximately equal to" }, unicodeslot=0x2257, }, [0x2258]={ @@ -64274,6 +64600,7 @@ characters.data={ linebreak="al", mathclass="relation", mathname="wedgeeq", + synonyms={ "corresponds to" }, unicodeslot=0x2259, }, [0x225A]={ @@ -64301,6 +64628,7 @@ characters.data={ linebreak="al", mathclass="relation", mathname="triangleq", + synonyms={ "equal to by definition", "equiangular" }, unicodeslot=0x225C, }, [0x225D]={ @@ -64507,6 +64835,7 @@ characters.data={ linebreak="al", mathclass="relation", mathname="between", + synonyms={ "plaintiff", "quantic" }, unicodeslot=0x226C, }, [0x226D]={ @@ -64673,6 +65002,7 @@ characters.data={ mathclass="relation", mathname="prec", mirror=0x227B, + synonyms={ "lower rank than" }, unicodeslot=0x227A, }, [0x227B]={ @@ -64684,6 +65014,7 @@ characters.data={ mathclass="relation", mathname="succ", mirror=0x227A, + synonyms={ "higher rank than" }, unicodeslot=0x227B, }, [0x227C]={ @@ -64760,6 +65091,7 @@ characters.data={ mathclass="relation", mathname="subset", mirror=0x2283, + synonyms={ "included in set" }, unicodeslot=0x2282, }, [0x2283]={ @@ -64772,6 +65104,7 @@ characters.data={ mathclass="relation", mathname="supset", mirror=0x2282, + synonyms={ "includes in set" }, unicodeslot=0x2283, }, [0x2284]={ @@ -64893,6 +65226,7 @@ characters.data={ linebreak="al", mathclass="binary", mathname="uplus", + synonyms={ "bag addition" }, unicodeslot=0x228E, }, [0x228F]={ @@ -64968,6 +65302,7 @@ characters.data={ linebreak="ai", mathclass="binary", mathname="oplus", + synonyms={ "direct sum" }, unicodeslot=0x2295, variants={ [0xFE00]="with white rim", @@ -64981,6 +65316,7 @@ characters.data={ linebreak="al", mathclass="binary", mathname="ominus", + synonyms={ "symmetric difference" }, unicodeslot=0x2296, }, [0x2297]={ @@ -64991,6 +65327,7 @@ characters.data={ linebreak="al", mathclass="binary", mathname="otimes", + synonyms={ "tensor product", "vector pointing into page" }, unicodeslot=0x2297, variants={ [0xFE00]="with white rim", @@ -65015,6 +65352,7 @@ characters.data={ linebreak="ai", mathclass="binary", mathname="odot", + synonyms={ "direct product", "vector pointing out of page" }, unicodeslot=0x2299, }, [0x229A]={ @@ -65100,6 +65438,7 @@ characters.data={ mathclass="relation", mathname="vdash", mirror=0x22A3, + synonyms={ "implies", "proves", "reducible", "turnstile", "yields" }, unicodeslot=0x22A2, }, [0x22A3]={ @@ -65111,6 +65450,7 @@ characters.data={ mathclass="relation", mathname="dashv", mirror=0x22A2, + synonyms={ "does not yield", "non-theorem", "reverse turnstile" }, unicodeslot=0x22A3, }, [0x22A4]={ @@ -65121,6 +65461,7 @@ characters.data={ linebreak="al", mathclass="default", mathname="top", + synonyms={ "top" }, unicodeslot=0x22A4, }, [0x22A5]={ @@ -65140,6 +65481,7 @@ characters.data={ name="perp", }, }, + synonyms={ "base", "bottom", "orthogonal to", "perpendicular" }, unicodeslot=0x22A5, }, [0x22A6]={ @@ -65148,6 +65490,7 @@ characters.data={ direction="on", linebreak="al", mirror=0x2ADE, + synonyms={ "reduces to" }, unicodeslot=0x22A6, }, [0x22A7]={ @@ -65167,6 +65510,7 @@ characters.data={ mathclass="relation", mathname="vDash", mirror=0x2AE4, + synonyms={ "results in", "satisfies", "statement is true", "tautology", "valid" }, unicodeslot=0x22A8, }, [0x22A9]={ @@ -65397,6 +65741,7 @@ characters.data={ linebreak="al", mathclass="limop", mathname="bigcap", + synonyms={ "generalized intersection" }, unicodeslot=0x22C2, }, [0x22C3]={ @@ -65406,6 +65751,7 @@ characters.data={ linebreak="al", mathclass="limop", mathname="bigcup", + synonyms={ "generalized union" }, unicodeslot=0x22C3, }, [0x22C4]={ @@ -65599,6 +65945,7 @@ characters.data={ linebreak="al", mathclass="relation", mathname="pitchfork", + synonyms={ "proper intersection" }, unicodeslot=0x22D4, }, [0x22D5]={ @@ -66049,6 +66396,7 @@ characters.data={ description="ELECTRIC ARROW", direction="on", linebreak="al", + synonyms={ "end of transmission symbol" }, unicodeslot=0x2301, }, [0x2302]={ @@ -66104,6 +66452,7 @@ characters.data={ mathclass="open", mathname="lceil", mirror=0x2309, + synonyms={ "apl upstile" }, unicodeslot=0x2308, }, [0x2309]={ @@ -66124,6 +66473,7 @@ characters.data={ mathclass="open", mathname="lfloor", mirror=0x230B, + synonyms={ "apl downstile" }, unicodeslot=0x230A, }, [0x230B]={ @@ -66170,6 +66520,7 @@ characters.data={ description="REVERSED NOT SIGN", direction="on", linebreak="al", + synonyms={ "beginning of line" }, unicodeslot=0x2310, }, [0x2311]={ @@ -66177,6 +66528,7 @@ characters.data={ description="SQUARE LOZENGE", direction="on", linebreak="al", + synonyms={ "kissen", "pillow" }, unicodeslot=0x2311, }, [0x2312]={ @@ -66229,6 +66581,7 @@ characters.data={ description="PLACE OF INTEREST SIGN", direction="on", linebreak="al", + synonyms={ "command key" }, unicodeslot=0x2318, }, [0x2319]={ @@ -66236,6 +66589,7 @@ characters.data={ description="TURNED NOT SIGN", direction="on", linebreak="al", + synonyms={ "line marker" }, unicodeslot=0x2319, }, [0x231A]={ @@ -66331,6 +66685,7 @@ characters.data={ description="UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS", direction="on", linebreak="al", + synonyms={ "enter key" }, unicodeslot=0x2324, }, [0x2325]={ @@ -66347,6 +66702,7 @@ characters.data={ description="ERASE TO THE RIGHT", direction="on", linebreak="al", + synonyms={ "delete to the right key" }, unicodeslot=0x2326, }, [0x2327]={ @@ -66355,6 +66711,7 @@ characters.data={ description="X IN A RECTANGLE BOX", direction="on", linebreak="al", + synonyms={ "clear key" }, unicodeslot=0x2327, }, [0x2328]={ @@ -66393,6 +66750,7 @@ characters.data={ description="ERASE TO THE LEFT", direction="on", linebreak="al", + synonyms={ "delete to the left key" }, unicodeslot=0x232B, }, [0x232C]={ @@ -66792,6 +67150,7 @@ characters.data={ description="APL FUNCTIONAL SYMBOL JOT DIAERESIS", direction="l", linebreak="al", + synonyms={ "hoot" }, unicodeslot=0x2364, }, [0x2365]={ @@ -66799,6 +67158,7 @@ characters.data={ description="APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS", direction="l", linebreak="al", + synonyms={ "holler" }, unicodeslot=0x2365, }, [0x2366]={ @@ -66820,6 +67180,7 @@ characters.data={ description="APL FUNCTIONAL SYMBOL TILDE DIAERESIS", direction="l", linebreak="al", + synonyms={ "smirk" }, unicodeslot=0x2368, }, [0x2369]={ @@ -66967,6 +67328,7 @@ characters.data={ description="SHOULDERED OPEN BOX", direction="on", linebreak="al", + synonyms={ "keyboard symbol for no break space" }, unicodeslot=0x237D, }, [0x237E]={ @@ -66981,6 +67343,7 @@ characters.data={ description="VERTICAL LINE WITH MIDDLE DOT", direction="on", linebreak="al", + synonyms={ "symbol for end of medium" }, unicodeslot=0x237F, }, [0x2380]={ @@ -67023,6 +67386,7 @@ characters.data={ description="WHITE SQUARE WITH CENTRE VERTICAL LINE", direction="on", linebreak="al", + synonyms={ "center" }, unicodeslot=0x2385, }, [0x2386]={ @@ -67044,6 +67408,7 @@ characters.data={ description="HELM SYMBOL", direction="on", linebreak="al", + synonyms={ "control" }, unicodeslot=0x2388, }, [0x2389]={ @@ -67051,6 +67416,7 @@ characters.data={ description="CIRCLED HORIZONTAL BAR WITH NOTCH", direction="on", linebreak="al", + synonyms={ "pause" }, unicodeslot=0x2389, }, [0x238A]={ @@ -67058,6 +67424,7 @@ characters.data={ description="CIRCLED TRIANGLE DOWN", direction="on", linebreak="al", + synonyms={ "interrupt" }, unicodeslot=0x238A, }, [0x238B]={ @@ -67326,6 +67693,7 @@ characters.data={ linebreak="al", mathclass="open", mathname="lmoustache", + synonyms={ "left moustache" }, unicodeslot=0x23B0, }, [0x23B1]={ @@ -67335,6 +67703,7 @@ characters.data={ linebreak="al", mathclass="close", mathname="rmoustache", + synonyms={ "right moustache" }, unicodeslot=0x23B1, }, [0x23B2]={ @@ -67553,6 +67922,7 @@ characters.data={ description="EJECT SYMBOL", direction="on", linebreak="al", + synonyms={ "eject media" }, unicodeslot=0x23CF, variants=variants_emoji, }, @@ -67755,6 +68125,7 @@ characters.data={ description="BLACK RIGHT-POINTING DOUBLE TRIANGLE", direction="on", linebreak="al", + synonyms={ "fast forward" }, unicodeslot=0x23E9, }, [0x23EA]={ @@ -67763,6 +68134,7 @@ characters.data={ description="BLACK LEFT-POINTING DOUBLE TRIANGLE", direction="on", linebreak="al", + synonyms={ "fast rewind" }, unicodeslot=0x23EA, }, [0x23EB]={ @@ -67842,6 +68214,7 @@ characters.data={ description="BLACK MEDIUM LEFT-POINTING TRIANGLE", direction="on", linebreak="al", + synonyms={ "reverse play" }, unicodeslot=0x23F4, }, [0x23F5]={ @@ -67849,6 +68222,7 @@ characters.data={ description="BLACK MEDIUM RIGHT-POINTING TRIANGLE", direction="on", linebreak="al", + synonyms={ "forward play" }, unicodeslot=0x23F5, }, [0x23F6]={ @@ -67856,6 +68230,7 @@ characters.data={ description="BLACK MEDIUM UP-POINTING TRIANGLE", direction="on", linebreak="al", + synonyms={ "increase" }, unicodeslot=0x23F6, }, [0x23F7]={ @@ -67863,6 +68238,7 @@ characters.data={ description="BLACK MEDIUM DOWN-POINTING TRIANGLE", direction="on", linebreak="al", + synonyms={ "decrease" }, unicodeslot=0x23F7, }, [0x23F8]={ @@ -67870,6 +68246,7 @@ characters.data={ description="DOUBLE VERTICAL BAR", direction="on", linebreak="al", + synonyms={ "pause play" }, unicodeslot=0x23F8, variants=variants_emoji, }, @@ -67878,6 +68255,7 @@ characters.data={ description="BLACK SQUARE FOR STOP", direction="on", linebreak="al", + synonyms={ "stop play" }, unicodeslot=0x23F9, variants=variants_emoji, }, @@ -67886,6 +68264,7 @@ characters.data={ description="BLACK CIRCLE FOR RECORD", direction="on", linebreak="al", + synonyms={ "record" }, unicodeslot=0x23FA, variants=variants_emoji, }, @@ -68168,6 +68547,7 @@ characters.data={ description="OPEN BOX", direction="on", linebreak="al", + synonyms={ "graphic for space" }, unicodeslot=0x2423, }, [0x2424]={ @@ -71002,6 +71382,7 @@ characters.data={ description="FULL BLOCK", direction="on", linebreak="ai", + synonyms={ "solid" }, unicodeslot=0x2588, }, [0x2589]={ @@ -71209,6 +71590,7 @@ characters.data={ name="Box", }, }, + synonyms={ "quadrature" }, unicodeslot=0x25A1, }, [0x25A2]={ @@ -71320,6 +71702,7 @@ characters.data={ description="BLACK VERTICAL RECTANGLE", direction="on", linebreak="al", + synonyms={ "histogram marker" }, unicodeslot=0x25AE, }, [0x25AF]={ @@ -71371,6 +71754,7 @@ characters.data={ name="bigtriangleup", }, }, + synonyms={ "trine" }, unicodeslot=0x25B3, }, [0x25B4]={ @@ -71410,6 +71794,7 @@ characters.data={ linebreak="ai", mathclass="binary", mathname="triangleright", + synonyms={ "range restriction" }, unicodeslot=0x25B7, }, [0x25B8]={ @@ -71440,6 +71825,7 @@ characters.data={ description="WHITE RIGHT-POINTING POINTER", direction="on", linebreak="al", + synonyms={ "forward arrow indicator" }, unicodeslot=0x25BB, }, [0x25BC]={ @@ -71470,6 +71856,7 @@ characters.data={ name="bigtriangledown", }, }, + synonyms={ "hamilton operator" }, unicodeslot=0x25BD, }, [0x25BE]={ @@ -71508,6 +71895,7 @@ characters.data={ linebreak="ai", mathclass="binary", mathname="triangleleft", + synonyms={ "domain restriction" }, unicodeslot=0x25C1, }, [0x25C2]={ @@ -71538,6 +71926,7 @@ characters.data={ description="WHITE LEFT-POINTING POINTER", direction="on", linebreak="al", + synonyms={ "backward arrow indicator" }, unicodeslot=0x25C5, }, [0x25C6]={ @@ -71573,6 +71962,7 @@ characters.data={ description="FISHEYE", direction="on", linebreak="al", + synonyms={ "tainome japanese bullet" }, unicodeslot=0x25C9, }, [0x25CA]={ @@ -71952,6 +72342,7 @@ characters.data={ description="WHITE MEDIUM SQUARE", direction="on", linebreak="al", + synonyms={ "always" }, unicodeslot=0x25FB, variants=variants_emoji, }, @@ -71993,6 +72384,7 @@ characters.data={ description="BLACK SUN WITH RAYS", direction="on", linebreak="id", + synonyms={ "clear weather" }, unicodeslot=0x2600, variants=variants_emoji, }, @@ -72001,6 +72393,7 @@ characters.data={ description="CLOUD", direction="on", linebreak="id", + synonyms={ "cloudy weather" }, unicodeslot=0x2601, variants=variants_emoji, }, @@ -72009,6 +72402,7 @@ characters.data={ description="UMBRELLA", direction="on", linebreak="id", + synonyms={ "rainy weather" }, unicodeslot=0x2602, variants=variants_emoji, }, @@ -72017,6 +72411,7 @@ characters.data={ description="SNOWMAN", direction="on", linebreak="id", + synonyms={ "snowy weather" }, unicodeslot=0x2603, variants=variants_emoji, }, @@ -72144,6 +72539,7 @@ characters.data={ description="SALTIRE", direction="on", linebreak="al", + synonyms={ "st. andrew's cross" }, unicodeslot=0x2613, }, [0x2614]={ @@ -72152,6 +72548,7 @@ characters.data={ description="UMBRELLA WITH RAIN DROPS", direction="on", linebreak="id", + synonyms={ "showery weather" }, unicodeslot=0x2614, variants=variants_emoji, }, @@ -72161,6 +72558,7 @@ characters.data={ description="HOT BEVERAGE", direction="on", linebreak="id", + synonyms={ "cup of coffee", "cup of tea" }, unicodeslot=0x2615, variants=variants_emoji, }, @@ -72232,6 +72630,7 @@ characters.data={ description="WHITE RIGHT POINTING INDEX", direction="on", linebreak="id", + synonyms={ "fist" }, unicodeslot=0x261E, }, [0x261F]={ @@ -72247,6 +72646,7 @@ characters.data={ description="SKULL AND CROSSBONES", direction="on", linebreak="al", + synonyms={ "jolly roger", "poison" }, unicodeslot=0x2620, variants=variants_emoji, }, @@ -72300,6 +72700,7 @@ characters.data={ description="CHI RHO", direction="on", linebreak="al", + synonyms={ "christogram", "constantine's cross" }, unicodeslot=0x2627, }, [0x2628]={ @@ -72336,6 +72737,7 @@ characters.data={ description="ADI SHAKTI", direction="on", linebreak="al", + synonyms={ "gurmukhi khanda" }, unicodeslot=0x262C, }, [0x262D]={ @@ -72440,6 +72842,7 @@ characters.data={ description="WHITE SMILING FACE", direction="on", linebreak="id", + synonyms={ "have a nice day!" }, unicodeslot=0x263A, variants=variants_emoji, }, @@ -72457,6 +72860,7 @@ characters.data={ description="WHITE SUN WITH RAYS", direction="on", linebreak="al", + synonyms={ "compass" }, unicodeslot=0x263C, }, [0x263D]={ @@ -72487,6 +72891,7 @@ characters.data={ description="FEMALE SIGN", direction="on", linebreak="ai", + synonyms={ "venus" }, unicodeslot=0x2640, }, [0x2641]={ @@ -72504,6 +72909,7 @@ characters.data={ description="MALE SIGN", direction="on", linebreak="ai", + synonyms={ "mars" }, unicodeslot=0x2642, }, [0x2643]={ @@ -72592,6 +72998,7 @@ characters.data={ description="VIRGO", direction="on", linebreak="al", + synonyms={ "minim alternate glyph" }, unicodeslot=0x264D, variants=variants_emoji, }, @@ -72610,6 +73017,7 @@ characters.data={ description="SCORPIUS", direction="on", linebreak="al", + synonyms={ "drop", "minim" }, unicodeslot=0x264F, variants=variants_emoji, }, @@ -72775,6 +73183,7 @@ characters.data={ linebreak="ai", mathclass="default", mathname="clubsuit", + synonyms={ "shamrock" }, unicodeslot=0x2663, variants=variants_emoji, }, @@ -72794,6 +73203,7 @@ characters.data={ description="BLACK HEART SUIT", direction="on", linebreak="ai", + synonyms={ "valentine" }, unicodeslot=0x2665, variants=variants_emoji, }, @@ -72834,6 +73244,7 @@ characters.data={ description="QUARTER NOTE", direction="on", linebreak="ai", + synonyms={ "crotchet" }, unicodeslot=0x2669, }, [0x266A]={ @@ -72843,6 +73254,7 @@ characters.data={ description="EIGHTH NOTE", direction="on", linebreak="ai", + synonyms={ "quaver" }, unicodeslot=0x266A, }, [0x266B]={ @@ -72851,6 +73263,7 @@ characters.data={ description="BEAMED EIGHTH NOTES", direction="on", linebreak="al", + synonyms={ "beamed quavers" }, unicodeslot=0x266B, }, [0x266C]={ @@ -72860,6 +73273,7 @@ characters.data={ description="BEAMED SIXTEENTH NOTES", direction="on", linebreak="ai", + synonyms={ "beamed semiquavers" }, unicodeslot=0x266C, }, [0x266D]={ @@ -72891,6 +73305,7 @@ characters.data={ linebreak="ai", mathclass="default", mathname="sharp", + synonyms={ "infix bag count" }, unicodeslot=0x266F, }, [0x2670]={ @@ -73139,6 +73554,7 @@ characters.data={ description="HAMMER AND PICK", direction="on", linebreak="al", + synonyms={ "mining symbol", "working day symbol" }, unicodeslot=0x2692, variants=variants_emoji, }, @@ -73148,6 +73564,7 @@ characters.data={ description="ANCHOR", direction="on", linebreak="al", + synonyms={ "harbor symbol" }, unicodeslot=0x2693, variants=variants_emoji, }, @@ -73156,6 +73573,7 @@ characters.data={ description="CROSSED SWORDS", direction="on", linebreak="al", + synonyms={ "battleground symbol" }, unicodeslot=0x2694, variants=variants_emoji, }, @@ -73171,6 +73589,7 @@ characters.data={ description="SCALES", direction="on", linebreak="al", + synonyms={ "jurisprudence symbol" }, unicodeslot=0x2696, variants=variants_emoji, }, @@ -73257,6 +73676,7 @@ characters.data={ description="HIGH VOLTAGE SIGN", direction="on", linebreak="al", + synonyms={ "lightning", "thunder" }, unicodeslot=0x26A1, variants=variants_emoji, }, @@ -73367,6 +73787,7 @@ characters.data={ description="COFFIN", direction="on", linebreak="al", + synonyms={ "buried symbol" }, unicodeslot=0x26B0, variants=variants_emoji, }, @@ -73375,6 +73796,7 @@ characters.data={ description="FUNERAL URN", direction="on", linebreak="al", + synonyms={ "cremated symbol" }, unicodeslot=0x26B1, variants=variants_emoji, }, @@ -73479,6 +73901,7 @@ characters.data={ description="SQUARED KEY", direction="on", linebreak="id", + synonyms={ "parental lock" }, unicodeslot=0x26BF, }, [0x26C0]={ @@ -73515,6 +73938,7 @@ characters.data={ description="SNOWMAN WITHOUT SNOW", direction="on", linebreak="id", + synonyms={ "light snow" }, unicodeslot=0x26C4, variants=variants_emoji, }, @@ -73524,6 +73948,7 @@ characters.data={ description="SUN BEHIND CLOUD", direction="on", linebreak="id", + synonyms={ "partly cloudy" }, unicodeslot=0x26C5, variants=variants_emoji, }, @@ -73541,6 +73966,7 @@ characters.data={ description="BLACK SNOWMAN", direction="on", linebreak="id", + synonyms={ "heavy snow" }, unicodeslot=0x26C7, }, [0x26C8]={ @@ -73549,6 +73975,7 @@ characters.data={ description="THUNDER CLOUD AND RAIN", direction="on", linebreak="id", + synonyms={ "thunderstorm" }, unicodeslot=0x26C8, variants=variants_emoji, }, @@ -73582,6 +74009,7 @@ characters.data={ description="CROSSING LANES", direction="on", linebreak="ai", + synonyms={ "accident" }, unicodeslot=0x26CC, }, [0x26CD]={ @@ -73606,6 +74034,7 @@ characters.data={ description="PICK", direction="on", linebreak="id", + synonyms={ "construction" }, unicodeslot=0x26CF, variants=variants_emoji, }, @@ -73615,6 +74044,7 @@ characters.data={ description="CAR SLIDING", direction="on", linebreak="id", + synonyms={ "icy road" }, unicodeslot=0x26D0, }, [0x26D1]={ @@ -73632,6 +74062,7 @@ characters.data={ description="CIRCLED CROSSING LANES", direction="on", linebreak="ai", + synonyms={ "road closed" }, unicodeslot=0x26D2, }, [0x26D3]={ @@ -73649,6 +74080,7 @@ characters.data={ description="NO ENTRY", direction="on", linebreak="id", + synonyms={ "do not enter" }, unicodeslot=0x26D4, variants=variants_emoji, }, @@ -73706,6 +74138,7 @@ characters.data={ description="HEAVY WHITE DOWN-POINTING TRIANGLE", direction="on", linebreak="ai", + synonyms={ "yield" }, unicodeslot=0x26DB, }, [0x26DC]={ @@ -73738,6 +74171,7 @@ characters.data={ description="BLACK TRUCK", direction="on", linebreak="id", + synonyms={ "black lorry" }, unicodeslot=0x26DF, }, [0x26E0]={ @@ -73761,6 +74195,7 @@ characters.data={ description="ASTRONOMICAL SYMBOL FOR URANUS", direction="on", linebreak="al", + synonyms={ "uranus" }, unicodeslot=0x26E2, }, [0x26E3]={ @@ -73776,6 +74211,7 @@ characters.data={ description="PENTAGRAM", direction="on", linebreak="al", + synonyms={ "pentangle pentalpha" }, unicodeslot=0x26E4, }, [0x26E5]={ @@ -73805,6 +74241,7 @@ characters.data={ description="BLACK CROSS ON SHIELD", direction="on", linebreak="ai", + synonyms={ "hospital" }, unicodeslot=0x26E8, }, [0x26E9]={ @@ -73813,6 +74250,7 @@ characters.data={ description="SHINTO SHRINE", direction="on", linebreak="ai", + synonyms={ "torii" }, unicodeslot=0x26E9, variants=variants_emoji, }, @@ -73847,6 +74285,7 @@ characters.data={ description="GEAR WITHOUT HUB", direction="on", linebreak="ai", + synonyms={ "factory" }, unicodeslot=0x26ED, }, [0x26EE]={ @@ -73855,6 +74294,7 @@ characters.data={ description="GEAR WITH HANDLES", direction="on", linebreak="ai", + synonyms={ "power plant" }, unicodeslot=0x26EE, }, [0x26EF]={ @@ -73880,6 +74320,7 @@ characters.data={ description="UMBRELLA ON GROUND", direction="on", linebreak="id", + synonyms={ "bathing beach" }, unicodeslot=0x26F1, variants=variants_emoji, }, @@ -73889,6 +74330,7 @@ characters.data={ description="FOUNTAIN", direction="on", linebreak="id", + synonyms={ "park" }, unicodeslot=0x26F2, variants=variants_emoji, }, @@ -73898,6 +74340,7 @@ characters.data={ description="FLAG IN HOLE", direction="on", linebreak="id", + synonyms={ "golf course" }, unicodeslot=0x26F3, variants=variants_emoji, }, @@ -73907,6 +74350,7 @@ characters.data={ description="FERRY", direction="on", linebreak="id", + synonyms={ "boat terminal", "marina or yacht harbour" }, unicodeslot=0x26F4, variants=variants_emoji, }, @@ -73960,6 +74404,7 @@ characters.data={ description="TENT", direction="on", linebreak="id", + synonyms={ "camping site" }, unicodeslot=0x26FA, variants=variants_emoji, }, @@ -73977,6 +74422,7 @@ characters.data={ description="HEADSTONE GRAVEYARD SYMBOL", direction="on", linebreak="ai", + synonyms={ "cemetery", "graveyard" }, unicodeslot=0x26FC, }, [0x26FD]={ @@ -73985,6 +74431,7 @@ characters.data={ description="FUEL PUMP", direction="on", linebreak="id", + synonyms={ "gas station", "petrol station" }, unicodeslot=0x26FD, variants=variants_emoji, }, @@ -73994,6 +74441,7 @@ characters.data={ description="CUP ON BLACK SQUARE", direction="on", linebreak="id", + synonyms={ "drive-in restaurant" }, unicodeslot=0x26FE, }, [0x26FF]={ @@ -74084,6 +74532,7 @@ characters.data={ description="RAISED FIST", direction="on", linebreak="eb", + synonyms={ "paper, scissors game rock in rock" }, unicodeslot=0x270A, }, [0x270B]={ @@ -74092,6 +74541,7 @@ characters.data={ description="RAISED HAND", direction="on", linebreak="eb", + synonyms={ "paper, scissors game paper in rock" }, unicodeslot=0x270B, }, [0x270C]={ @@ -74099,6 +74549,7 @@ characters.data={ description="VICTORY HAND", direction="on", linebreak="eb", + synonyms={ "paper, scissors game scissors in rock" }, unicodeslot=0x270C, variants=variants_emoji, }, @@ -74409,6 +74860,7 @@ characters.data={ description="SIX POINTED BLACK STAR", direction="on", linebreak="al", + synonyms={ "sextile" }, unicodeslot=0x2736, }, [0x2737]={ @@ -74437,6 +74889,7 @@ characters.data={ description="SIXTEEN POINTED ASTERISK", direction="on", linebreak="al", + synonyms={ "starburst" }, unicodeslot=0x273A, }, [0x273B]={ @@ -74545,6 +74998,7 @@ characters.data={ description="BALLOON-SPOKED ASTERISK", direction="on", linebreak="al", + synonyms={ "jack" }, unicodeslot=0x2749, }, [0x274A]={ @@ -74559,6 +75013,7 @@ characters.data={ description="HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK", direction="on", linebreak="al", + synonyms={ "turbofan" }, unicodeslot=0x274B, }, [0x274C]={ @@ -74757,6 +75212,7 @@ characters.data={ description="FLORAL HEART", direction="on", linebreak="al", + synonyms={ "aldus leaf" }, unicodeslot=0x2766, }, [0x2767]={ @@ -74764,6 +75220,7 @@ characters.data={ description="ROTATED FLORAL HEART BULLET", direction="on", linebreak="al", + synonyms={ "hedera", "ivy leaf" }, unicodeslot=0x2767, }, [0x2768]={ @@ -75570,6 +76027,7 @@ characters.data={ description="LOWER RIGHT CORNER WITH DOT", direction="on", linebreak="al", + synonyms={ "pullback" }, unicodeslot=0x27D3, }, [0x27D4]={ @@ -75577,6 +76035,7 @@ characters.data={ description="UPPER LEFT CORNER WITH DOT", direction="on", linebreak="al", + synonyms={ "pushout" }, unicodeslot=0x27D4, }, [0x27D5]={ @@ -75658,6 +76117,7 @@ characters.data={ description="UP TACK WITH CIRCLE ABOVE", direction="on", linebreak="al", + synonyms={ "radial component" }, unicodeslot=0x27DF, }, [0x27E0]={ @@ -75715,6 +76175,7 @@ characters.data={ mathclass="open", mathname="llbracket", mirror=0x27E7, + synonyms={ "left bag bracket" }, unicodeslot=0x27E6, }, [0x27E7]={ @@ -75726,6 +76187,7 @@ characters.data={ mathclass="close", mathname="rrbracket", mirror=0x27E6, + synonyms={ "right bag bracket" }, unicodeslot=0x27E7, }, [0x27E8]={ @@ -75737,6 +76199,7 @@ characters.data={ mathclass="open", mathname="langle", mirror=0x27E9, + synonyms={ "bra", "left sequence bracket" }, unicodeslot=0x27E8, }, [0x27E9]={ @@ -75748,6 +76211,7 @@ characters.data={ mathclass="close", mathname="rangle", mirror=0x27E8, + synonyms={ "ket", "right sequence bracket" }, unicodeslot=0x27E9, }, [0x27EA]={ @@ -75759,6 +76223,7 @@ characters.data={ mathclass="open", mathname="llangle", mirror=0x27EB, + synonyms={ "left chevron bracket" }, unicodeslot=0x27EA, }, [0x27EB]={ @@ -75770,6 +76235,7 @@ characters.data={ mathclass="close", mathname="rrangle", mirror=0x27EA, + synonyms={ "right chevron bracket" }, unicodeslot=0x27EB, }, [0x27EC]={ @@ -75798,6 +76264,7 @@ characters.data={ mathclass="open", mathname="lgroup", mirror=0x27EF, + synonyms={ "lgroup" }, unicodeslot=0x27EE, }, [0x27EF]={ @@ -75808,6 +76275,7 @@ characters.data={ mathclass="close", mathname="rgroup", mirror=0x27EE, + synonyms={ "rgroup" }, unicodeslot=0x27EF, }, [0x27F0]={ @@ -77765,6 +78233,7 @@ characters.data={ direction="on", linebreak="al", mathextensible="r", + synonyms={ "partial surjection" }, unicodeslot=0x2900, }, [0x2901]={ @@ -77773,6 +78242,7 @@ characters.data={ direction="on", linebreak="al", mathextensible="r", + synonyms={ "finite surjection" }, unicodeslot=0x2901, }, [0x2902]={ @@ -77815,6 +78285,7 @@ characters.data={ mathclass="relation", mathextensible="l", mathname="Mapsfrom", + synonyms={ "maps from" }, unicodeslot=0x2906, }, [0x2907]={ @@ -77825,6 +78296,7 @@ characters.data={ mathclass="relation", mathextensible="r", mathname="Mapsto", + synonyms={ "maps to" }, unicodeslot=0x2907, }, [0x2908]={ @@ -77939,6 +78411,7 @@ characters.data={ direction="on", linebreak="al", mathextensible="r", + synonyms={ "partial injection" }, unicodeslot=0x2914, }, [0x2915]={ @@ -77947,6 +78420,7 @@ characters.data={ direction="on", linebreak="al", mathextensible="r", + synonyms={ "finite injection" }, unicodeslot=0x2915, }, [0x2916]={ @@ -77957,6 +78431,7 @@ characters.data={ mathclass="relation", mathextensible="r", mathname="twoheadrightarrowtail", + synonyms={ "bijection" }, unicodeslot=0x2916, }, [0x2917]={ @@ -77966,6 +78441,7 @@ characters.data={ linebreak="al", mathclass="relation", mathextensible="r", + synonyms={ "surjective injection" }, unicodeslot=0x2917, }, [0x2918]={ @@ -77974,6 +78450,7 @@ characters.data={ direction="on", linebreak="al", mathextensible="r", + synonyms={ "finite surjective injection" }, unicodeslot=0x2918, }, [0x2919]={ @@ -78945,8 +79422,8 @@ characters.data={ }, }, mirror=0x2998, - unicodeslot=0x2997, textclass="open", + unicodeslot=0x2997, }, [0x2998]={ category="pe", @@ -78972,8 +79449,8 @@ characters.data={ }, }, mirror=0x2997, - unicodeslot=0x2998, textclass="close", + unicodeslot=0x2998, }, [0x2999]={ category="sm", @@ -79418,6 +79895,7 @@ characters.data={ description="WHITE HOURGLASS", direction="on", linebreak="al", + synonyms={ "vertical bowtie", "white framus" }, unicodeslot=0x29D6, }, [0x29D7]={ @@ -79464,6 +79942,7 @@ characters.data={ description="INCOMPLETE INFINITY", direction="on", linebreak="al", + synonyms={ "isotech entity ⧜" }, unicodeslot=0x29DC, }, [0x29DD]={ @@ -79492,6 +79971,7 @@ characters.data={ description="SQUARE WITH CONTOURED OUTLINE", direction="on", linebreak="al", + synonyms={ "d'alembertian" }, unicodeslot=0x29E0, }, [0x29E1]={ @@ -79534,6 +80014,7 @@ characters.data={ description="GLEICH STARK", direction="on", linebreak="al", + synonyms={ "tautological equivalent" }, unicodeslot=0x29E6, }, [0x29E7]={ @@ -79635,6 +80116,7 @@ characters.data={ description="RULE-DELAYED", direction="on", linebreak="al", + synonyms={ "colon right arrow" }, unicodeslot=0x29F4, }, [0x29F5]={ @@ -79673,6 +80155,7 @@ characters.data={ direction="on", linebreak="al", mirror=0x29F8, + synonyms={ "schema hiding" }, unicodeslot=0x29F9, }, [0x29FA]={ @@ -79787,6 +80270,7 @@ characters.data={ description="TWO LOGICAL AND OPERATOR", direction="on", linebreak="al", + synonyms={ "merge" }, unicodeslot=0x2A07, }, [0x2A08]={ @@ -79871,6 +80355,7 @@ characters.data={ description="ANTICLOCKWISE INTEGRATION", direction="on", linebreak="al", + synonyms={ "counterclockwise integration" }, unicodeslot=0x2A11, }, [0x2A12]={ @@ -79942,6 +80427,7 @@ characters.data={ description="INTEGRAL WITH OVERBAR", direction="on", linebreak="al", + synonyms={ "upper integral" }, unicodeslot=0x2A1B, }, [0x2A1C]={ @@ -79949,6 +80435,7 @@ characters.data={ description="INTEGRAL WITH UNDERBAR", direction="on", linebreak="al", + synonyms={ "lower integral" }, unicodeslot=0x2A1C, }, [0x2A1D]={ @@ -79956,6 +80443,7 @@ characters.data={ description="JOIN", direction="on", linebreak="al", + synonyms={ "large bowtie" }, unicodeslot=0x2A1D, }, [0x2A1E]={ @@ -80005,6 +80493,7 @@ characters.data={ description="PLUS SIGN WITH TILDE ABOVE", direction="on", linebreak="al", + synonyms={ "positive difference or sum" }, unicodeslot=0x2A24, }, [0x2A25]={ @@ -80019,6 +80508,7 @@ characters.data={ description="PLUS SIGN WITH TILDE BELOW", direction="on", linebreak="al", + synonyms={ "sum or positive difference" }, unicodeslot=0x2A26, }, [0x2A27]={ @@ -80026,6 +80516,7 @@ characters.data={ description="PLUS SIGN WITH SUBSCRIPT TWO", direction="on", linebreak="al", + synonyms={ "nim-addition" }, unicodeslot=0x2A27, }, [0x2A28]={ @@ -80224,6 +80715,7 @@ characters.data={ description="UNION WITH MINUS SIGN", direction="on", linebreak="al", + synonyms={ "bag subtraction" }, unicodeslot=0x2A41, }, [0x2A42]={ @@ -80958,6 +81450,7 @@ characters.data={ direction="on", linebreak="al", mirror=0x2AA2, + synonyms={ "absolute continuity" }, unicodeslot=0x2AA1, }, [0x2AA2]={ @@ -81451,6 +81944,7 @@ characters.data={ direction="on", linebreak="al", specials={ "char", 0x2ADD, 0x338 }, + synonyms={ "not independent" }, unicodeslot=0x2ADC, }, [0x2ADD]={ @@ -81458,6 +81952,7 @@ characters.data={ description="NONFORKING", direction="on", linebreak="al", + synonyms={ "independent" }, unicodeslot=0x2ADD, }, [0x2ADE]={ @@ -81494,6 +81989,7 @@ characters.data={ description="VERTICAL BAR TRIPLE RIGHT TURNSTILE", direction="on", linebreak="al", + synonyms={ "ordinarily satisfies" }, unicodeslot=0x2AE2, }, [0x2AE3]={ @@ -81560,6 +82056,7 @@ characters.data={ description="DOUBLE UP TACK", direction="on", linebreak="al", + synonyms={ "independence" }, unicodeslot=0x2AEB, }, [0x2AEC]={ @@ -81604,6 +82101,7 @@ characters.data={ description="DOWN TACK WITH CIRCLE BELOW", direction="on", linebreak="al", + synonyms={ "necessarily satisfies" }, unicodeslot=0x2AF1, }, [0x2AF2]={ @@ -81625,6 +82123,7 @@ characters.data={ description="TRIPLE VERTICAL BAR BINARY RELATION", direction="on", linebreak="al", + synonyms={ "interleave" }, unicodeslot=0x2AF4, }, [0x2AF5]={ @@ -81699,6 +82198,7 @@ characters.data={ description="WHITE VERTICAL BAR", direction="on", linebreak="al", + synonyms={ "dijkstra choice" }, unicodeslot=0x2AFE, }, [0x2AFF]={ @@ -81706,6 +82206,7 @@ characters.data={ description="N-ARY WHITE VERTICAL BAR", direction="on", linebreak="al", + synonyms={ "n-ary dijkstra choice" }, unicodeslot=0x2AFF, }, [0x2B00]={ @@ -82527,6 +83028,7 @@ characters.data={ description="LEFTWARDS TRIANGLE-HEADED ARROW TO BAR", direction="on", linebreak="al", + synonyms={ "left tab" }, unicodeslot=0x2B70, }, [0x2B71]={ @@ -82534,6 +83036,7 @@ characters.data={ description="UPWARDS TRIANGLE-HEADED ARROW TO BAR", direction="on", linebreak="al", + synonyms={ "up tab" }, unicodeslot=0x2B71, }, [0x2B72]={ @@ -82541,6 +83044,7 @@ characters.data={ description="RIGHTWARDS TRIANGLE-HEADED ARROW TO BAR", direction="on", linebreak="al", + synonyms={ "right tab" }, unicodeslot=0x2B72, }, [0x2B73]={ @@ -82548,6 +83052,7 @@ characters.data={ description="DOWNWARDS TRIANGLE-HEADED ARROW TO BAR", direction="on", linebreak="al", + synonyms={ "down tab" }, unicodeslot=0x2B73, }, [0x2B76]={ @@ -82604,6 +83109,7 @@ characters.data={ description="DOWNWARDS TRIANGLE-HEADED ARROW WITH DOUBLE HORIZONTAL STROKE", direction="on", linebreak="al", + synonyms={ "page down" }, unicodeslot=0x2B7D, }, [0x2B7E]={ @@ -83010,6 +83516,7 @@ characters.data={ description="UP ARROWHEAD IN A RECTANGLE BOX", direction="on", linebreak="al", + synonyms={ "escape" }, unicodeslot=0x2BB9, }, [0x2BBD]={ @@ -86874,6 +87381,7 @@ characters.data={ description="INVERTED INTERROBANG", direction="on", linebreak="op", + synonyms={ "gnaborretni" }, unicodeslot=0x2E18, }, [0x2E19]={ @@ -87124,6 +87632,7 @@ characters.data={ description="TWO-EM DASH", direction="on", linebreak="b2", + synonyms={ "omission dash" }, unicodeslot=0x2E3A, }, [0x2E3B]={ @@ -90399,6 +90908,7 @@ characters.data={ direction="on", linebreak="op", mirror=0x301B, + synonyms={ "left abstract syntax bracket" }, unicodeslot=0x301A, }, [0x301B]={ @@ -90408,6 +90918,7 @@ characters.data={ direction="on", linebreak="cl", mirror=0x301A, + synonyms={ "right abstract syntax bracket" }, unicodeslot=0x301B, }, [0x301C]={ @@ -91788,6 +92299,7 @@ characters.data={ direction="nsm", linebreak="cm", sound="voiced", + synonyms={ "combining japanese daku-on" }, unicodeslot=0x3099, }, [0x309A]={ @@ -91798,6 +92310,7 @@ characters.data={ direction="nsm", linebreak="cm", sound="semivoiced", + synonyms={ "combining japanese han-daku-on" }, unicodeslot=0x309A, }, [0x309B]={ @@ -91809,6 +92322,7 @@ characters.data={ linebreak="ns", sound="voiced", specials={ "compat", 0x20, 0x3099 }, + synonyms={ "japanese daku-on" }, unicodeslot=0x309B, }, [0x309C]={ @@ -91820,6 +92334,7 @@ characters.data={ linebreak="ns", sound="semivoiced", specials={ "compat", 0x20, 0x309A }, + synonyms={ "japanese han-daku-on" }, unicodeslot=0x309C, }, [0x309D]={ @@ -98710,6 +99225,7 @@ characters.data={ direction="l", linebreak="id", specials={ "square", 0x682A, 0x5F0F, 0x4F1A, 0x793E }, + synonyms={ "japanese incorporated", "kabusiki-gaisya" }, unicodeslot=0x337F, }, [0x3380]={ @@ -131918,6 +132434,7 @@ characters.data={ direction="al", linebreak="po", specials={ "isolated", 0x631, 0x6CC, 0x627, 0x644 }, + synonyms={ "iranian currency" }, unicodeslot=0xFDFC, }, [0xFDFD]={ @@ -131927,6 +132444,11 @@ characters.data={ linebreak="al", unicodeslot=0xFDFD, }, + [0xFE00]={ + description="VARIATION SELECTOR-0x0001", + synonyms={ "vs1" }, + unicodeslot=0xFE00, + }, [0xFE10]={ category="po", cjkwd="w", @@ -133961,6 +134483,7 @@ characters.data={ description="ZERO WIDTH NO-BREAK SPACE", direction="bn", linebreak="wj", + synonyms={ "bom", "byte order mark", "zwnbsp" }, unicodeslot=0xFEFF, }, [0xFF01]={ @@ -198804,6 +199327,7 @@ characters.data={ description="MUSICAL SYMBOL WHOLE NOTE", direction="l", linebreak="al", + synonyms={ "semibreve" }, unicodeslot=0x1D15D, }, [0x1D15E]={ @@ -198836,6 +199360,7 @@ characters.data={ direction="l", linebreak="al", specials={ "char", 0x1D15F, 0x1D16F }, + synonyms={ "semiquaver" }, unicodeslot=0x1D161, }, [0x1D162]={ @@ -202515,6 +203040,7 @@ characters.data={ direction="l", linebreak="al", specials={ "font", 0x50 }, + synonyms={ "power set" }, unicodeslot=0x1D4AB, }, [0x1D4AC]={ @@ -203319,6 +203845,7 @@ characters.data={ direction="l", linebreak="al", specials={ "font", 0x4D }, + synonyms={ "new testament majority text" }, unicodeslot=0x1D510, }, [0x1D511]={ @@ -203359,6 +203886,7 @@ characters.data={ direction="l", linebreak="al", specials={ "font", 0x53 }, + synonyms={ "greek old testament", "septuagint" }, unicodeslot=0x1D516, }, [0x1D517]={ @@ -220711,6 +221239,7 @@ characters.data={ direction="on", linebreak="al", specials={ "super", 0x4D, 0x43 }, + synonyms={ "marque de commerce" }, unicodeslot=0x1F16A, }, [0x1F16B]={ @@ -220719,6 +221248,7 @@ characters.data={ direction="on", linebreak="al", specials={ "super", 0x4D, 0x44 }, + synonyms={ "marque deposee" }, unicodeslot=0x1F16B, }, [0x1F170]={ @@ -222357,6 +222887,7 @@ characters.data={ description="HOT PEPPER", direction="on", linebreak="id", + synonyms={ "spicy" }, unicodeslot=0x1F336, variants=variants_emoji, }, @@ -222854,6 +223385,7 @@ characters.data={ description="FORK AND KNIFE", direction="on", linebreak="id", + synonyms={ "meal (glyph may vary) restaurant" }, unicodeslot=0x1F374, }, [0x1F375]={ @@ -222925,6 +223457,7 @@ characters.data={ description="FORK AND KNIFE WITH PLATE", direction="on", linebreak="id", + synonyms={ "dining available symbol", "food available symbol" }, unicodeslot=0x1F37D, variants=variants_emoji, }, @@ -222990,6 +223523,7 @@ characters.data={ description="FATHER CHRISTMAS", direction="on", linebreak="eb", + synonyms={ "santa claus" }, unicodeslot=0x1F385, }, [0x1F386]={ @@ -223102,6 +223636,7 @@ characters.data={ description="GRADUATION CAP", direction="on", linebreak="id", + synonyms={ "mortarboard" }, unicodeslot=0x1F393, }, [0x1F394]={ @@ -223305,6 +223840,7 @@ characters.data={ description="PERFORMING ARTS", direction="on", linebreak="id", + synonyms={ "masks of comedy and tragedy", "theater masks" }, unicodeslot=0x1F3AD, }, [0x1F3AE]={ @@ -223998,6 +224534,7 @@ characters.data={ description="COW", direction="on", linebreak="id", + synonyms={ "beef (on menus)" }, unicodeslot=0x1F404, }, [0x1F405]={ @@ -224126,6 +224663,7 @@ characters.data={ description="CHICKEN", direction="on", linebreak="id", + synonyms={ "poultry (on menus)" }, unicodeslot=0x1F414, }, [0x1F415]={ @@ -224142,6 +224680,7 @@ characters.data={ description="PIG", direction="on", linebreak="id", + synonyms={ "pork (on menus)" }, unicodeslot=0x1F416, }, [0x1F417]={ @@ -224174,6 +224713,7 @@ characters.data={ description="SPIRAL SHELL", direction="on", linebreak="id", + synonyms={ "seashell" }, unicodeslot=0x1F41A, }, [0x1F41B]={ @@ -224558,6 +225098,7 @@ characters.data={ description="FISTED HAND SIGN", direction="on", linebreak="eb", + synonyms={ "punch" }, unicodeslot=0x1F44A, }, [0x1F44B]={ @@ -224766,6 +225307,7 @@ characters.data={ description="BUST IN SILHOUETTE", direction="on", linebreak="id", + synonyms={ "guest account" }, unicodeslot=0x1F464, }, [0x1F465]={ @@ -224774,6 +225316,7 @@ characters.data={ description="BUSTS IN SILHOUETTE", direction="on", linebreak="id", + synonyms={ "accounts" }, unicodeslot=0x1F465, }, [0x1F466]={ @@ -224918,6 +225461,7 @@ characters.data={ description="CONSTRUCTION WORKER", direction="on", linebreak="eb", + synonyms={ "hardhat" }, unicodeslot=0x1F477, }, [0x1F478]={ @@ -225254,6 +225798,7 @@ characters.data={ description="ELECTRIC LIGHT BULB", direction="on", linebreak="id", + synonyms={ "idea" }, unicodeslot=0x1F4A1, }, [0x1F4A2]={ @@ -225294,6 +225839,7 @@ characters.data={ description="SPLASHING SWEAT SYMBOL", direction="on", linebreak="id", + synonyms={ "plewds" }, unicodeslot=0x1F4A6, }, [0x1F4A7]={ @@ -225310,6 +225856,7 @@ characters.data={ description="DASH SYMBOL", direction="on", linebreak="id", + synonyms={ "briffits" }, unicodeslot=0x1F4A8, }, [0x1F4A9]={ @@ -225334,6 +225881,7 @@ characters.data={ description="DIZZY SYMBOL", direction="on", linebreak="id", + synonyms={ "squeans" }, unicodeslot=0x1F4AB, }, [0x1F4AC]={ @@ -225494,6 +226042,7 @@ characters.data={ description="OPTICAL DISC", direction="on", linebreak="id", + synonyms={ "cd", "compact disc" }, unicodeslot=0x1F4BF, }, [0x1F4C0]={ @@ -226093,6 +226642,7 @@ characters.data={ description="SPEAKER WITH THREE SOUND WAVES", direction="on", linebreak="id", + synonyms={ "sound" }, unicodeslot=0x1F50A, }, [0x1F50B]={ @@ -226989,6 +227539,7 @@ characters.data={ description="RIGHT HAND TELEPHONE RECEIVER", direction="on", linebreak="id", + synonyms={ "telephone handset" }, unicodeslot=0x1F57D, }, [0x1F57E]={ @@ -227594,6 +228145,7 @@ characters.data={ description="WASTEBASKET", direction="on", linebreak="id", + synonyms={ "trashcan" }, unicodeslot=0x1F5D1, variants=variants_emoji, }, @@ -227835,6 +228387,7 @@ characters.data={ description="LIGHTNING MOOD", direction="on", linebreak="id", + synonyms={ "lightning bolt" }, unicodeslot=0x1F5F2, }, [0x1F5F3]={ @@ -229476,6 +230029,7 @@ characters.data={ description="TRIANGLE WITH ROUNDED CORNERS", direction="on", linebreak="id", + synonyms={ "caution" }, unicodeslot=0x1F6C6, }, [0x1F6C7]={ @@ -229490,6 +230044,7 @@ characters.data={ description="CIRCLED INFORMATION SOURCE", direction="on", linebreak="id", + synonyms={ "information" }, unicodeslot=0x1F6C8, }, [0x1F6C9]={ @@ -229560,6 +230115,7 @@ characters.data={ description="OCTAGONAL SIGN", direction="on", linebreak="id", + synonyms={ "stop sign" }, unicodeslot=0x1F6D1, }, [0x1F6D2]={ @@ -229568,6 +230124,7 @@ characters.data={ description="SHOPPING TROLLEY", direction="on", linebreak="id", + synonyms={ "shopping cart" }, unicodeslot=0x1F6D2, }, [0x1F6E0]={ @@ -230618,6 +231175,7 @@ characters.data={ description="ROUND TARGET", direction="on", linebreak="al", + synonyms={ "bullseye" }, unicodeslot=0x1F78B, }, [0x1F78C]={ @@ -232285,6 +232843,7 @@ characters.data={ description="HAND WITH INDEX AND MIDDLE FINGERS CROSSED", direction="on", linebreak="eb", + synonyms={ "crossed fingers", "fingers crossed" }, unicodeslot=0x1F91E, }, [0x1F920]={ @@ -232317,6 +232876,7 @@ characters.data={ description="ROLLING ON THE FLOOR LAUGHING", direction="on", linebreak="id", + synonyms={ "rofl" }, unicodeslot=0x1F923, }, [0x1F924]={ @@ -232517,6 +233077,7 @@ characters.data={ description="FIRST PLACE MEDAL", direction="on", linebreak="id", + synonyms={ "gold medal" }, unicodeslot=0x1F947, }, [0x1F948]={ @@ -232525,6 +233086,7 @@ characters.data={ description="SECOND PLACE MEDAL", direction="on", linebreak="id", + synonyms={ "silver medal" }, unicodeslot=0x1F948, }, [0x1F949]={ @@ -232533,6 +233095,7 @@ characters.data={ description="THIRD PLACE MEDAL", direction="on", linebreak="id", + synonyms={ "bronze medal" }, unicodeslot=0x1F949, }, [0x1F94A]={ @@ -232621,6 +233184,7 @@ characters.data={ description="SHALLOW PAN OF FOOD", direction="on", linebreak="id", + synonyms={ "paella" }, unicodeslot=0x1F958, }, [0x1F959]={ @@ -238380,4 +238944,9 @@ characters.data={ linebreak="cm", unicodeslot=0xE007F, }, -} + [0xE0100]={ + description="VARIATION SELECTOR-0x0011", + synonyms={ "vs17" }, + unicodeslot=0xE0100, + }, +}
\ No newline at end of file diff --git a/tex/context/base/mkiv/char-ini.lua b/tex/context/base/mkiv/char-ini.lua index a9ea52cce..3cebeabd9 100644 --- a/tex/context/base/mkiv/char-ini.lua +++ b/tex/context/base/mkiv/char-ini.lua @@ -14,7 +14,7 @@ if not modules then modules = { } end modules ['char-ini'] = { local utfchar, utfbyte, utfvalues, ustring, utotable = utf.char, utf.byte, utf.values, utf.ustring, utf.totable local concat, unpack, tohash, insert = table.concat, table.unpack, table.tohash, table.insert local next, tonumber, type, rawget, rawset = next, tonumber, type, rawget, rawset -local format, lower, gsub = string.format, string.lower, string.gsub +local format, lower, gsub, find = string.format, string.lower, string.gsub, string.find local P, R, S, Cs = lpeg.P, lpeg.R, lpeg.S, lpeg.Cs if not characters then require("char-def") end @@ -942,6 +942,7 @@ end) local specialchars = allocate() characters.specialchars = specialchars -- lazy table local descriptions = allocate() characters.descriptions = descriptions -- lazy table +local synonyms = allocate() characters.synonyms = synonyms -- lazy table setmetatableindex(specialchars, function(t,u) if u then @@ -975,7 +976,9 @@ setmetatableindex(descriptions, function(t,k) for u, c in next, data do local d = c.description if d then - d = gsub(d," ","") + if find(d," ") then + d = gsub(d," ","") + end d = lower(d) t[d] = u end @@ -987,6 +990,24 @@ setmetatableindex(descriptions, function(t,k) return d end) +setmetatableindex(synonyms, function(t,k) + for u, c in next, data do + local s = c.synonyms + if s then + if find(s," ") then + s = gsub(s," ","") + end + -- s = lower(s) -- is already lowercase + t[s] = u + end + end + local s = rawget(t,k) + if not s then + t[s] = s + end + return s +end) + function characters.unicodechar(asked) local n = tonumber(asked) if n then diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv index 0d9ecfdd7..a6623f5c0 100644 --- a/tex/context/base/mkiv/cont-new.mkiv +++ b/tex/context/base/mkiv/cont-new.mkiv @@ -11,7 +11,7 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -\newcontextversion{2017.04.16 12:32} +\newcontextversion{2017.04.20 21:31} %D This file is loaded at runtime, thereby providing an excellent place for %D hacks, patches, extensions and new features. diff --git a/tex/context/base/mkiv/context.mkiv b/tex/context/base/mkiv/context.mkiv index c4446b3dd..220ec71db 100644 --- a/tex/context/base/mkiv/context.mkiv +++ b/tex/context/base/mkiv/context.mkiv @@ -39,7 +39,7 @@ %D up and the dependencies are more consistent. \edef\contextformat {\jobname} -\edef\contextversion{2017.04.16 12:32} +\edef\contextversion{2017.04.20 21:31} \edef\contextkind {beta} %D For those who want to use this: diff --git a/tex/context/base/mkiv/font-ctx.lua b/tex/context/base/mkiv/font-ctx.lua index 9e53b2c25..c81f9e2cb 100644 --- a/tex/context/base/mkiv/font-ctx.lua +++ b/tex/context/base/mkiv/font-ctx.lua @@ -14,7 +14,7 @@ if not modules then modules = { } end modules ['font-ctx'] = { local context, commands = context, commands -local format, gmatch, match, find, lower, gsub, byte, topattern = string.format, string.gmatch, string.match, string.find, string.lower, string.gsub, string.byte, string.topattern +local format, gmatch, match, find, lower, upper, gsub, byte, topattern = string.format, string.gmatch, string.match, string.find, string.lower, string.upper, string.gsub, string.byte, string.topattern local concat, serialize, sort, fastcopy, mergedtable = table.concat, table.serialize, table.sort, table.fastcopy, table.merged local sortedhash, sortedkeys, sequenced = table.sortedhash, table.sortedkeys, table.sequenced local settings_to_hash, hash_to_string = utilities.parsers.settings_to_hash, utilities.parsers.hash_to_string @@ -48,6 +48,8 @@ local setmetatableindex = table.setmetatableindex local implement = interfaces.implement +local chardata = characters.data + local fonts = fonts local handlers = fonts.handlers local otf = handlers.otf -- brrr @@ -1629,7 +1631,6 @@ implement { local function nametoslot(name) local t = type(name) - local s = nil if t == "string" then local slot = unicodes[true][name] if slot then @@ -1638,12 +1639,82 @@ local function nametoslot(name) if not aglunicodes then aglunicodes = encodings.agl.unicodes end - slot = aglunicodes[name] - if characters[true][slot] then + local char = characters[true] + local slot = aglunicodes[name] + if char[slot] then + return slot + end + -- not in font + elseif t == "number" then + if characters[true][name] then return slot else -- not in font end + end +end + + +local found = { } + +local function descriptiontoslot(name) + local t = type(name) + if t == "string" then + -- slow + local list = sortedkeys(chardata) + local slot = found[name] + local char = characters[true] + if slot then + return char[slot] and slot or nil + end + local NAME = upper(name) + for i=1,#list do + slot = list[i] + local c = chardata[slot] + local d = c.description + if d == NAME then + found[name] = slot + return char[slot] and slot or nil + end + end + for i=1,#list do + slot = list[i] + local c = chardata[slot] + local s = c.synonyms + if s then + for i=1,#s do + local si = s[i] + if si == name then + found[name] = si + return char[slot] and slot or nil + end + end + end + end + for i=1,#list do + slot = list[i] + local c = chardata[slot] + local d = c.description + if d and find(d,NAME) then + found[name] = slot + return char[slot] and slot or nil + end + end + for i=1,#list do + slot = list[i] + local c = chardata[slot] + local s = c.synonyms + if s then + for i=1,#s do + local si = s[i] + if find(s[i],name) then + found[name] = si + return char[slot] and slot or nil + end + end + end + end + -- not in font elseif t == "number" then if characters[true][name] then return slot @@ -1720,6 +1791,16 @@ do -- else too many locals local n = nametoslot(name) return n and utfchar(n) or name end, + -- unicode description (synonym) + u = function(name) + local n = descriptiontoslot(name,false) + return n and utfchar(n) or name + end, + -- all + a = function(name) + local n = nametoslot(name) or descriptiontoslot(name) + return n and utfchar(n) or name + end, -- char c = function(name) return name @@ -1752,9 +1833,10 @@ do -- else too many locals end end - helpers.nametoslot = nametoslot - helpers.indextoslot = indextoslot - helpers.tochar = tochar + helpers.nametoslot = nametoslot + helpers.descriptiontoslot = descriptiontoslot + helpers.indextoslot = indextoslot + helpers.tochar = tochar -- interfaces: diff --git a/tex/context/base/mkiv/font-dsp.lua b/tex/context/base/mkiv/font-dsp.lua index d2aea7037..1ea6a4908 100644 --- a/tex/context/base/mkiv/font-dsp.lua +++ b/tex/context/base/mkiv/font-dsp.lua @@ -2917,7 +2917,7 @@ function readers.colr(f,fontdata,specification) -- than 'palette'. setposition(f,tableoffset + layeroffset) for i=1,noflayers do - local slot = readushort(f) + local slot = readushort(f) local class = readushort(f) if class < 0xFFFF then class = class + 1 diff --git a/tex/context/base/mkiv/font-ini.mkvi b/tex/context/base/mkiv/font-ini.mkvi index ad36e2e25..2697dff2e 100644 --- a/tex/context/base/mkiv/font-ini.mkvi +++ b/tex/context/base/mkiv/font-ini.mkvi @@ -2528,6 +2528,8 @@ %D \NC i \NC decimal index \NC i:456 \NC \NR %D \NC n \NC name \NC n:eight \NC \NR %D \NC c \NC name \NC c:x \NC \NR +%D \NC u \NC unicode descriptions \NC u:dog \NC \NR +%D \NC a \NC all (also descriptions) \NC a:rewind \NC \NR %D \stoptabulate %D %D This is an expandable command! diff --git a/tex/context/base/mkiv/font-map.lua b/tex/context/base/mkiv/font-map.lua index 37a7f03af..cf369708c 100644 --- a/tex/context/base/mkiv/font-map.lua +++ b/tex/context/base/mkiv/font-map.lua @@ -19,7 +19,9 @@ local trace_mapping = false trackers.register("fonts.mapping", function(v) trac local report_fonts = logs.reporter("fonts","loading") -- not otf only -local force_ligatures = false directives.register("fonts.mapping.forceligatures",function(v) force_ligatures = v end) +-- force_ligatures is true per 2017-04-20 so that these emoji's with bad names work too + +local force_ligatures = true directives.register("fonts.mapping.forceligatures",function(v) force_ligatures = v end) local fonts = fonts or { } local mappings = fonts.mappings or { } @@ -242,6 +244,8 @@ mappings.tounicode16 = tounicode16 mappings.tounicode16sequence = tounicode16sequence mappings.fromunicode16 = fromunicode16 +-- mozilla emoji has bad lig names: name = gsub(name,"(u[a-f0-9_]+)%-([a-f0-9_]+)","%1_%2") + local ligseparator = P("_") local varseparator = P(".") local namesplitter = Ct(C((1 - ligseparator - varseparator)^1) * (ligseparator * C((1 - ligseparator - varseparator)^1))^0) @@ -490,41 +494,50 @@ function mappings.addtounicode(data,filename,checklookups) checklookups(data,missing,nofmissing) end - -- todo: go lowercase - - local collected = false local unicoded = 0 - -- for du, glyph in next, descriptions do - for i=1,#dlist do - local du = dlist[i] - local glyph = descriptions[du] - if glyph.class == "ligature" and (force_ligatures or not glyph.unicode) then - if not collected then - collected = fonts.handlers.otf.readers.getcomponents(data) - if not collected then - break - end + local collected = fonts.handlers.otf.readers.getcomponents(data) -- neglectable overhead + + local function resolve(glyph,u) + local n = #u + for i=1,n do + if u[i] > private then + n = 0 + break + end + end + if n > 0 then + if n > 1 then + glyph.unicode = u + else + glyph.unicode = u[1] end - local u = collected[du] -- always tables + unicoded = unicoded + 1 + end + end + + if not collected then + -- move on + elseif force_ligatures then + for i=1,#dlist do + local du = dlist[i] + local u = collected[du] -- always tables if u then - local n = #u - for i=1,n do - if u[i] > private then - n = 0 - break - end - end - if n > 0 then - if n > 1 then - glyph.unicode = u - else - glyph.unicode = u[1] - end - unicoded = unicoded + 1 + resolve(descriptions[du],u) + end + end + else + for i=1,#dlist do + local du = dlist[i] + local glyph = descriptions[du] + if glyph.class == "ligature" and not glyph.unicode then + local u = collected[du] -- always tables + if u then + resolve(glyph,u) end end end end + if trace_mapping and unicoded > 0 then report_fonts("%n ligature tounicode mappings deduced from gsub ligature features",unicoded) end diff --git a/tex/context/base/mkiv/font-ocl.lua b/tex/context/base/mkiv/font-ocl.lua index 2cb0c1eb7..c1ab2e592 100644 --- a/tex/context/base/mkiv/font-ocl.lua +++ b/tex/context/base/mkiv/font-ocl.lua @@ -141,10 +141,10 @@ local function initializecolr(tfmdata,kind,value) -- hm, always value -- are somewhat inefficient as each glyph gets the font set. It's a -- side effect of the fact that a font is handled when a character gets -- flushed. - -- { "special", "pdf:page:q" }, - -- { "special", "pdf:raw:" .. b } - -- This seems to be okay too: - { "special", "pdf:direct:q " .. b }, + { "special", "pdf:page:q" }, + { "special", "pdf:raw:" .. b } + -- This is not ok: + -- { "special", "pdf:direct:q " .. b }, } local n = #t for i=1,s do @@ -155,10 +155,10 @@ local function initializecolr(tfmdata,kind,value) -- hm, always value n = n + 1 t[n] = { "right", -w } end end - -- n = n + 1 t[n] = { "special", "pdf:page:" .. e } - -- n = n + 1 t[n] = { "special", "pdf:raw:Q" } - -- This seems to be okay too: - n = n + 1 t[n] = { "special", "pdf:direct:" .. e .. " Q"} + n = n + 1 t[n] = { "special", "pdf:page:" .. e } + n = n + 1 t[n] = { "special", "pdf:raw:Q" } + -- This is not ok: + -- n = n + 1 t[n] = { "special", "pdf:direct:" .. e .. " Q"} character.commands = t end end diff --git a/tex/context/base/mkiv/font-ttf.lua b/tex/context/base/mkiv/font-ttf.lua index 96c1d165a..b44f5d7bd 100644 --- a/tex/context/base/mkiv/font-ttf.lua +++ b/tex/context/base/mkiv/font-ttf.lua @@ -904,7 +904,7 @@ function readers.glyf(f,fontdata,specification) -- part goes to cff module else contours2outlines_shaped(glyphs,shapes,specification.shapes) end - elseif specification.loadshapes then + elseif specification.shapes then contours2outlines_normal(glyphs,shapes) end end diff --git a/tex/context/base/mkiv/l-table.lua b/tex/context/base/mkiv/l-table.lua index 5deb795d1..6bb0ef637 100644 --- a/tex/context/base/mkiv/l-table.lua +++ b/tex/context/base/mkiv/l-table.lua @@ -573,7 +573,12 @@ local function is_simple_table(t) -- also used in util-tab so maybe public local v = t[i] local tv = type(v) if tv == "number" then - tt[i] = v -- not needed tostring(v) + -- tt[i] = v -- not needed tostring(v) + if hexify then + tt[i] = format("0x%X",v) + else + tt[i] = v -- not needed tostring(v) + end elseif tv == "string" then tt[i] = format("%q",v) -- f_string(v) elseif tv == "boolean" then @@ -589,7 +594,12 @@ local function is_simple_table(t) -- also used in util-tab so maybe public local v = t[i] local tv = type(v) if tv == "number" then - tt[i+1] = v -- not needed tostring(v) + -- tt[i+1] = v -- not needed tostring(v) + if hexify then + tt[i+1] = format("0x%X",v) + else + tt[i+1] = v -- not needed tostring(v) + end elseif tv == "string" then tt[i+1] = format("%q",v) -- f_string(v) elseif tv == "boolean" then diff --git a/tex/context/base/mkiv/math-ini.lua b/tex/context/base/mkiv/math-ini.lua index 321014d94..2cb4e2413 100644 --- a/tex/context/base/mkiv/math-ini.lua +++ b/tex/context/base/mkiv/math-ini.lua @@ -365,6 +365,11 @@ local function utfmathclass(chr, default) return cd and cd.mathclass or default or "unknown" end +local function utfmathlimop(chr) + local cd = somechar[chr] + return cd and cd.mathclass == "limop" or false +end + local function utfmathaccent(chr,default,asked1,asked2) local cd = somechar[chr] if not cd then @@ -513,6 +518,7 @@ implement { actions = { utfmathcommand, context }, arguments = { "string", false, "'botaccent'","'under'" } } + implement { name = "utfmathcommandfiller", actions = { utfmathfiller, context }, @@ -545,6 +551,12 @@ implement { arguments = "string", } +implement { + name = "doifelseutfmathlimop", + actions = { utfmathlimop, ctx_doifelsesomething }, + arguments = "string", +} + -- helpers -- -- 1: step 1 diff --git a/tex/context/base/mkiv/math-ini.mkiv b/tex/context/base/mkiv/math-ini.mkiv index 3b57c56da..8c682bdcb 100644 --- a/tex/context/base/mkiv/math-ini.mkiv +++ b/tex/context/base/mkiv/math-ini.mkiv @@ -557,11 +557,13 @@ \unexpanded\def\doifelseutfmathabove #1{\clf_doifelseutfmathabove {#1}} \unexpanded\def\doifelseutfmathbelow #1{\clf_doifelseutfmathbelow {#1}} \unexpanded\def\doifelseutfmathfiller#1{\clf_doifelseutfmathfiller{#1}} +\unexpanded\def\doifelseutfmathlimop #1{\clf_doifelseutfmathlimop {#1}} \let\doifutfmathaccentelse \doifelseutfmathaccent \let\doifutfmathaboveelse \doifelseutfmathabove \let\doifutfmathbelowelse \doifelseutfmathbelow \let\doifutfmathfillerelse \doifelseutfmathfiller +\let\doifutfmathlimopelse \doifelseutfmathlimop %D Not used that much: diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf Binary files differindex 94d382b63..a27cfc42f 100644 --- a/tex/context/base/mkiv/status-files.pdf +++ b/tex/context/base/mkiv/status-files.pdf diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf Binary files differindex c66f8765b..c80930664 100644 --- a/tex/context/base/mkiv/status-lua.pdf +++ b/tex/context/base/mkiv/status-lua.pdf diff --git a/tex/context/base/mkiv/trac-vis.lua b/tex/context/base/mkiv/trac-vis.lua index 5d69b406d..1e7165abd 100644 --- a/tex/context/base/mkiv/trac-vis.lua +++ b/tex/context/base/mkiv/trac-vis.lua @@ -423,6 +423,7 @@ local fontkern do setlistcolor(list,c_zero_d) end setlisttransparency(list,c_text_d) + setcolor(rule,c_text_d) settransparency(rule,c_text_d) setshift(text,-5 * exheight) info = new_hlist(setlink(rule,text)) diff --git a/tex/context/interface/mkiv/i-context.pdf b/tex/context/interface/mkiv/i-context.pdf Binary files differindex 5716030ad..bb6619b2e 100644 --- a/tex/context/interface/mkiv/i-context.pdf +++ b/tex/context/interface/mkiv/i-context.pdf diff --git a/tex/context/interface/mkiv/i-readme.pdf b/tex/context/interface/mkiv/i-readme.pdf Binary files differindex 61f901149..675d2a7c9 100644 --- a/tex/context/interface/mkiv/i-readme.pdf +++ b/tex/context/interface/mkiv/i-readme.pdf diff --git a/tex/context/modules/mkiv/x-mathml.lua b/tex/context/modules/mkiv/x-mathml.lua index 7d0b42d21..9650afab8 100644 --- a/tex/context/modules/mkiv/x-mathml.lua +++ b/tex/context/modules/mkiv/x-mathml.lua @@ -187,6 +187,7 @@ local i_replacements = { ["true"] = "{\\mathrm true}", ["declare"] = "{\\mathrm declare}", ["as"] = "{\\mathrm as}", + } -- we could use a metatable or when accessing fallback on the diff --git a/tex/context/modules/mkiv/x-mathml.mkiv b/tex/context/modules/mkiv/x-mathml.mkiv index 7ed1b4322..50d31da0e 100644 --- a/tex/context/modules/mkiv/x-mathml.mkiv +++ b/tex/context/modules/mkiv/x-mathml.mkiv @@ -204,7 +204,7 @@ %D The second implementation expanded the whole math sequence %D into an internal \TEX\ representation. This is a rather clean %D and fast process. Filtering and testing takes place by -%D redefining teh internal representation macros. +%D redefining the internal representation macros. %D %D The third implementation may look a bit more messy in some %D respects. This is because in \TEX\ it's not that trivial to @@ -1849,9 +1849,13 @@ \let\mmlfrac\frac \xmlmapvalue {mml:l} {+} {\let\mmlfrac\sfrac} +\xmlmapvalue {mml:d} {true} {\displaystyle} +\xmlmapvalue {mml:d} {false} {\textstyle} % or whatever + % todo: displaystyle=true/false (or whatever else shows up) \starttexdefinition setmmlmathstyle #1 + \xmlval{mml:d}{\xmlatt{#1}{displaystyle}}\empty % was: \mmmr \xmlval{mml:s}{\xmlatt{#1}{mathvariant}}\empty % was: \mmmr \stoptexdefinition @@ -2268,9 +2272,9 @@ \def\mmlextensible#1{\ctxmodulemathml{extensible(\!!bs#1\!!es)}} -\definemathtriplet [\v!mathematics] [mmlovertriplet] % or will we use a special instance -\definemathtriplet [\v!mathematics] [mmlundertriplet] % or will we use a special instance -\definemathtriplet [\v!mathematics] [mmldoubletriplet] % or will we use a special instance +\definemathtriplet [\v!mathematics] [mmlovertriplet] % or will we use a special instance +\definemathtriplet [\v!mathematics] [mmlundertriplet] % or will we use a special instance +\definemathtriplet [\v!mathematics] [mmldoubletriplet] % or will we use a special instance % common to munder/mover/munderover : will become core helper (speed up too) @@ -2319,9 +2323,15 @@ \startxmlsetups mml:mover \edef\mmlbasetoken{\mmlextensible{\xmlraw{#1}{/mml:*[1]}}}% /text() - \doifelseutfmathfiller\mmlbasetoken \mmloverbasefiller \mmloveraccentchecker {#1} + \doifelseutfmathlimop\mmlbasetoken + {\mmllimopover{#1}} + {\doifelseutfmathfiller\mmlbasetoken \mmloverbasefiller \mmloveraccentchecker {#1}} \stopxmlsetups +\starttexdefinition mmllimopover #1 + \mmlbasetoken ^{\mmlfencedsecond{#1}} +\stoptexdefinition + % munder \starttexdefinition unexpanded mmlunderbelow #1 @@ -2351,9 +2361,15 @@ \startxmlsetups mml:munder \edef\mmlbasetoken{\mmlextensible{\xmlraw{#1}{/mml:*[1]}}}% /text() - \doifelseutfmathfiller\mmlbasetoken \mmlunderbasefiller \mmlunderaccentchecker {#1} + \doifelseutfmathlimop\mmlbasetoken + {\mmllimopunder{#1}} + {\doifelseutfmathfiller\mmlbasetoken \mmlunderbasefiller \mmlunderaccentchecker {#1}} \stopxmlsetups +\starttexdefinition mmllimopunder #1 + \mmlbasetoken _{\mmlfencedsecond{#1}} +\stoptexdefinition + % munderover \starttexdefinition unexpanded mmlunderoveraccentcheckerUO #1 @@ -2412,11 +2428,18 @@ \edef\mmlbasecommand{e\utfmathcommandfiller\mmlbasetoken}% \mmlexecuteifdefined\mmlbasecommand \relax {\mmlfencedthird{#1}} {\mmlfencedsecond{#1}} \stoptexdefinition + \startxmlsetups mml:munderover \edef\mmlbasetoken{\mmlextensible{\xmlraw{#1}{/mml:*[1]}}}% /text() - \doifelseutfmathfiller\mmlbasetoken \mmlunderoverbasefiller \mmlunderoveraccentchecker {#1} + \doifelseutfmathlimop\mmlbasetoken + {\mmllimopunderover{#1}} + {\doifelseutfmathfiller\mmlbasetoken \mmlunderoverbasefiller \mmlunderoveraccentchecker {#1}} \stopxmlsetups +\starttexdefinition mmllimopunderover #1 + \mmlbasetoken ^{\mmlfencedthird{#1}}_{\mmlfencedsecond{#1}} +\stoptexdefinition + % tables (mml:mtable, mml:mtr, mml:mlabledtr, mml:mtd) \startxmlsetups mml:mtable % some more attributes need to be supported diff --git a/tex/generic/context/luatex/luatex-core.lua b/tex/generic/context/luatex/luatex-core.lua index b32be8095..16df01707 100644 --- a/tex/generic/context/luatex/luatex-core.lua +++ b/tex/generic/context/luatex/luatex-core.lua @@ -25,8 +25,8 @@ local fio_recordfilename = fio.recordfilename local mt = getmetatable(io.stderr) local mt_lines = mt.lines local saferoption = status.safer_option -local shellescape = status.shell_escape -- 0 (disabled) 1 (restricted) 2 (everything) -local kpseused = status.kpse_used -- 0 1 +local shellescape = status.shell_escape -- 0 (disabled) 1 (anything) 2 (restricted) +local kpseused = status.kpse_used -- 0 1 io.saved_open = io_open -- can be protected io.saved_popen = io_popen -- can be protected @@ -127,7 +127,7 @@ if saferoption == 1 then end -if saferoption == 1 or shellescape ~= 2 then +if saferoption == 1 or shellescape ~= 1 then ffi = require('ffi') for k, v in next, ffi do @@ -136,6 +136,7 @@ if saferoption == 1 or shellescape ~= 2 then end end ffi = nil + end -- os.[execute|os.spawn|os.exec] already are shellescape aware) diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua index c671651ef..093846c7a 100644 --- a/tex/generic/context/luatex/luatex-fonts-merged.lua +++ b/tex/generic/context/luatex/luatex-fonts-merged.lua @@ -1,6 +1,6 @@ -- merged file : c:/data/develop/context/sources/luatex-fonts-merged.lua -- parent file : c:/data/develop/context/sources/luatex-fonts.lua --- merge date : 04/16/17 12:32:21 +-- merge date : 04/20/17 21:31:47 do -- begin closure to overcome local limits and interference @@ -1389,7 +1389,11 @@ local function is_simple_table(t) local v=t[i] local tv=type(v) if tv=="number" then - tt[i]=v + if hexify then + tt[i]=format("0x%X",v) + else + tt[i]=v + end elseif tv=="string" then tt[i]=format("%q",v) elseif tv=="boolean" then @@ -1405,7 +1409,11 @@ local function is_simple_table(t) local v=t[i] local tv=type(v) if tv=="number" then - tt[i+1]=v + if hexify then + tt[i+1]=format("0x%X",v) + else + tt[i+1]=v + end elseif tv=="string" then tt[i+1]=format("%q",v) elseif tv=="boolean" then @@ -7541,8 +7549,8 @@ local formatters=string.formatters local sortedhash,sortedkeys=table.sortedhash,table.sortedkeys local trace_loading=false trackers.register("fonts.loading",function(v) trace_loading=v end) local trace_mapping=false trackers.register("fonts.mapping",function(v) trace_mapping=v end) -local report_fonts=logs.reporter("fonts","loading") -local force_ligatures=false directives.register("fonts.mapping.forceligatures",function(v) force_ligatures=v end) +local report_fonts=logs.reporter("fonts","loading") +local force_ligatures=true directives.register("fonts.mapping.forceligatures",function(v) force_ligatures=v end) local fonts=fonts or {} local mappings=fonts.mappings or {} fonts.mappings=mappings @@ -7825,34 +7833,42 @@ function mappings.addtounicode(data,filename,checklookups) if type(checklookups)=="function" then checklookups(data,missing,nofmissing) end - local collected=false local unicoded=0 - for i=1,#dlist do - local du=dlist[i] - local glyph=descriptions[du] - if glyph.class=="ligature" and (force_ligatures or not glyph.unicode) then - if not collected then - collected=fonts.handlers.otf.readers.getcomponents(data) - if not collected then - break - end + local collected=fonts.handlers.otf.readers.getcomponents(data) + local function resolve(glyph,u) + local n=#u + for i=1,n do + if u[i]>private then + n=0 + break end + end + if n>0 then + if n>1 then + glyph.unicode=u + else + glyph.unicode=u[1] + end + unicoded=unicoded+1 + end + end + if not collected then + elseif force_ligatures then + for i=1,#dlist do + local du=dlist[i] local u=collected[du] if u then - local n=#u - for i=1,n do - if u[i]>private then - n=0 - break - end - end - if n>0 then - if n>1 then - glyph.unicode=u - else - glyph.unicode=u[1] - end - unicoded=unicoded+1 + resolve(descriptions[du],u) + end + end + else + for i=1,#dlist do + local du=dlist[i] + local glyph=descriptions[du] + if glyph.class=="ligature" and not glyph.unicode then + local u=collected[du] + if u then + resolve(glyph,u) end end end @@ -12463,7 +12479,7 @@ function readers.glyf(f,fontdata,specification) else contours2outlines_shaped(glyphs,shapes,specification.shapes) end - elseif specification.loadshapes then + elseif specification.shapes then contours2outlines_normal(glyphs,shapes) end end @@ -26006,7 +26022,8 @@ local function initializecolr(tfmdata,kind,value) local w=character.width or 0 local s=#colorlist local t={ - { "special","pdf:direct:q "..b }, + { "special","pdf:page:q" }, + { "special","pdf:raw:"..b } } local n=#t for i=1,s do @@ -26017,7 +26034,8 @@ local function initializecolr(tfmdata,kind,value) n=n+1 t[n]={ "right",-w } end end - n=n+1 t[n]={ "special","pdf:direct:"..e.." Q"} + n=n+1 t[n]={ "special","pdf:page:"..e } + n=n+1 t[n]={ "special","pdf:raw:Q" } character.commands=t end end |