1 /**
2  * Defines the named entities to support the "\\&Entity;" escape sequence for strings / character literals.
3  *
4  * Specification $(LINK2 https://dlang.org/spec/entity.html, Named Character Entities)
5  *
6  * Copyright:   Copyright (C) 1999-2023 by The D Language Foundation, All Rights Reserved
7  * Authors:     $(LINK2 https://www.digitalmars.com, Walter Bright)
8  * License:     $(LINK2 https://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
9  * Source:      $(LINK2 https://github.com/dlang/dmd/blob/master/src/dmd/entity.d, _entity.d)
10  * Documentation:  https://dlang.org/phobos/dmd_entity.html
11  * Coverage:    https://codecov.io/gh/dlang/dmd/src/master/src/dmd/entity.d
12  */
13 
14 module dmd.entity;
15 
16 import core.stdc.ctype;
17 
18 nothrow:
19 
20 /**********************************
21  * See if `name` is an HTML Named Entity
22  * Params:
23  *      name = name of the entity
24  * Returns:
25  *      code point corresponding to the named entity
26  *      ~0 for not recognized as a named entity
27  */
28 public uint[2] HtmlNamedEntity(scope const char[] name) pure @nogc @safe
29 {
30     const firstC = tolower(name[0]);
31     if (firstC >= 'a' && firstC <= 'z')
32     {
33         // Linear search (use hash table instead?)
34         foreach (entity; namesTable[firstC - 'a'])
35         {
36             if (entity.name == name)
37                 return [entity.value, entity.value2];
38         }
39     }
40     return [0, 0];
41 }
42 
43 private:
44 
45 /*********************************************
46  * Convert from named entity to its encoding.
47  * For reference:
48  *      https://www.htmlhelp.com/reference/html40/entities/
49  *      https://www.w3.org/2003/entities/2007/w3centities-f.ent
50  */
51 struct NameId
52 {
53     string name;
54     uint value;
55     uint value2;
56 }
57 
58 // @todo@ order namesTable and names? by frequency
59 immutable NameId[][] namesTable =
60 [
61     namesA, namesB, namesC, namesD, namesE, namesF, namesG, namesH, namesI,
62     namesJ, namesK, namesL, namesM, namesN, namesO, namesP, namesQ, namesR,
63     namesS, namesT, namesU, namesV, namesW, namesX, namesY, namesZ
64 ];
65 
66 immutable NameId[] namesA =
67 [
68     {"Aacgr",            0x00386},  // GREEK CAPITAL LETTER ALPHA WITH TONOS
69     {"aacgr",            0x003AC},  // GREEK SMALL LETTER ALPHA WITH TONOS
70     {"Aacute",           0x000C1},  // LATIN CAPITAL LETTER A WITH ACUTE
71     {"aacute",           0x000E1},  // LATIN SMALL LETTER A WITH ACUTE
72     {"Abreve",           0x00102},  // LATIN CAPITAL LETTER A WITH BREVE
73     {"abreve",           0x00103},  // LATIN SMALL LETTER A WITH BREVE
74     {"ac",               0x0223E},  // INVERTED LAZY S
75     {"acd",              0x0223F},  // SINE WAVE
76     {"acE",              0x0223E, 0x00333},  // INVERTED LAZY S with double underline
77     {"Acirc",            0x000C2},  // LATIN CAPITAL LETTER A WITH CIRCUMFLEX
78     {"acirc",            0x000E2},  // LATIN SMALL LETTER A WITH CIRCUMFLEX
79     {"acute",            0x000B4},  // ACUTE ACCENT
80     {"Acy",              0x00410},  // CYRILLIC CAPITAL LETTER A
81     {"acy",              0x00430},  // CYRILLIC SMALL LETTER A
82     {"AElig",            0x000C6},  // LATIN CAPITAL LETTER AE
83     {"aelig",            0x000E6},  // LATIN SMALL LETTER AE
84     {"af",               0x02061},  // FUNCTION APPLICATION
85     {"Afr",              0x1D504},  // MATHEMATICAL FRAKTUR CAPITAL A
86     {"afr",              0x1D51E},  // MATHEMATICAL FRAKTUR SMALL A
87     {"Agr",              0x00391},  // GREEK CAPITAL LETTER ALPHA
88     {"agr",              0x003B1},  // GREEK SMALL LETTER ALPHA
89     {"Agrave",           0x000C0},  // LATIN CAPITAL LETTER A WITH GRAVE
90     {"agrave",           0x000E0},  // LATIN SMALL LETTER A WITH GRAVE
91     {"alefsym",          0x02135},  // ALEF SYMBOL
92     {"aleph",            0x02135},  // ALEF SYMBOL
93     {"Alpha",            0x00391},  // GREEK CAPITAL LETTER ALPHA
94     {"alpha",            0x003B1},  // GREEK SMALL LETTER ALPHA
95     {"Amacr",            0x00100},  // LATIN CAPITAL LETTER A WITH MACRON
96     {"amacr",            0x00101},  // LATIN SMALL LETTER A WITH MACRON
97     {"amalg",            0x02A3F},  // AMALGAMATION OR COPRODUCT
98     {"amp",              0x00026},  // AMPERSAND
99     {"AMP",              0x00026},  // AMPERSAND
100     {"and",              0x02227},  // LOGICAL AND
101     {"And",              0x02A53},  // DOUBLE LOGICAL AND
102     {"andand",           0x02A55},  // TWO INTERSECTING LOGICAL AND
103     {"andd",             0x02A5C},  // LOGICAL AND WITH HORIZONTAL DASH
104     {"andslope",         0x02A58},  // SLOPING LARGE AND
105     {"andv",             0x02A5A},  // LOGICAL AND WITH MIDDLE STEM
106     {"ang",              0x02220},  // ANGLE
107     {"ange",             0x029A4},  // ANGLE WITH UNDERBAR
108     {"angle",            0x02220},  // ANGLE
109     {"angmsd",           0x02221},  // MEASURED ANGLE
110     {"angmsdaa",         0x029A8},  // MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT
111     {"angmsdab",         0x029A9},  // MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT
112     {"angmsdac",         0x029AA},  // MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT
113     {"angmsdad",         0x029AB},  // MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT
114     {"angmsdae",         0x029AC},  // MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP
115     {"angmsdaf",         0x029AD},  // MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP
116     {"angmsdag",         0x029AE},  // MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN
117     {"angmsdah",         0x029AF},  // MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN
118     {"angrt",            0x0221F},  // RIGHT ANGLE
119     {"angrtvb",          0x022BE},  // RIGHT ANGLE WITH ARC
120     {"angrtvbd",         0x0299D},  // MEASURED RIGHT ANGLE WITH DOT
121     {"angsph",           0x02222},  // SPHERICAL ANGLE
122     {"angst",            0x000C5},  // LATIN CAPITAL LETTER A WITH RING ABOVE
123     {"angzarr",          0x0237C},  // RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW
124     {"Aogon",            0x00104},  // LATIN CAPITAL LETTER A WITH OGONEK
125     {"aogon",            0x00105},  // LATIN SMALL LETTER A WITH OGONEK
126     {"Aopf",             0x1D538},  // MATHEMATICAL DOUBLE-STRUCK CAPITAL A
127     {"aopf",             0x1D552},  // MATHEMATICAL DOUBLE-STRUCK SMALL A
128     {"ap",               0x02248},  // ALMOST EQUAL TO
129     {"apacir",           0x02A6F},  // ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT
130     {"ape",              0x0224A},  // ALMOST EQUAL OR EQUAL TO
131     {"apE",              0x02A70},  // APPROXIMATELY EQUAL OR EQUAL TO
132     {"apid",             0x0224B},  // TRIPLE TILDE
133     {"apos",             0x00027},  // APOSTROPHE
134     {"ApplyFunction",    0x02061},  // FUNCTION APPLICATION
135     {"approx",           0x02248},  // ALMOST EQUAL TO
136     {"approxeq",         0x0224A},  // ALMOST EQUAL OR EQUAL TO
137     {"Aring",            0x000C5},  // LATIN CAPITAL LETTER A WITH RING ABOVE
138     {"aring",            0x000E5},  // LATIN SMALL LETTER A WITH RING ABOVE
139     {"Ascr",             0x1D49C},  // MATHEMATICAL SCRIPT CAPITAL A
140     {"ascr",             0x1D4B6},  // MATHEMATICAL SCRIPT SMALL A
141     {"Assign",           0x02254},  // COLON EQUALS
142     {"ast",              0x0002A},  // ASTERISK
143     {"asymp",            0x02248},  // ALMOST EQUAL TO
144     {"asympeq",          0x0224D},  // EQUIVALENT TO
145     {"Atilde",           0x000C3},  // LATIN CAPITAL LETTER A WITH TILDE
146     {"atilde",           0x000E3},  // LATIN SMALL LETTER A WITH TILDE
147     {"Auml",             0x000C4},  // LATIN CAPITAL LETTER A WITH DIAERESIS
148     {"auml",             0x000E4},  // LATIN SMALL LETTER A WITH DIAERESIS
149     {"awconint",         0x02233},  // ANTICLOCKWISE CONTOUR INTEGRAL
150     {"awint",            0x02A11},  // ANTICLOCKWISE INTEGRATION
151 ];
152 
153 immutable NameId[] namesB =
154 [
155     {"backcong",         0x0224C},  // ALL EQUAL TO
156     {"backepsilon",      0x003F6},  // GREEK REVERSED LUNATE EPSILON SYMBOL
157     {"backprime",        0x02035},  // REVERSED PRIME
158     {"backsim",          0x0223D},  // REVERSED TILDE
159     {"backsimeq",        0x022CD},  // REVERSED TILDE EQUALS
160     {"Backslash",        0x02216},  // SET MINUS
161     {"Barv",             0x02AE7},  // SHORT DOWN TACK WITH OVERBAR
162     {"barvee",           0x022BD},  // NOR
163     {"barwed",           0x02305},  // PROJECTIVE
164     {"Barwed",           0x02306},  // PERSPECTIVE
165     {"barwedge",         0x02305},  // PROJECTIVE
166     {"bbrk",             0x023B5},  // BOTTOM SQUARE BRACKET
167     {"bbrktbrk",         0x023B6},  // BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET
168     {"bcong",            0x0224C},  // ALL EQUAL TO
169     {"Bcy",              0x00411},  // CYRILLIC CAPITAL LETTER BE
170     {"bcy",              0x00431},  // CYRILLIC SMALL LETTER BE
171     {"bdquo",            0x0201E},  // DOUBLE LOW-9 QUOTATION MARK
172     {"becaus",           0x02235},  // BECAUSE
173     {"because",          0x02235},  // BECAUSE
174     {"Because",          0x02235},  // BECAUSE
175     {"bemptyv",          0x029B0},  // REVERSED EMPTY SET
176     {"bepsi",            0x003F6},  // GREEK REVERSED LUNATE EPSILON SYMBOL
177     {"bernou",           0x0212C},  // SCRIPT CAPITAL B
178     {"Bernoullis",       0x0212C},  // SCRIPT CAPITAL B
179     {"Beta",             0x00392},  // GREEK CAPITAL LETTER BETA
180     {"beta",             0x003B2},  // GREEK SMALL LETTER BETA
181     {"beth",             0x02136},  // BET SYMBOL
182     {"between",          0x0226C},  // BETWEEN
183     {"Bfr",              0x1D505},  // MATHEMATICAL FRAKTUR CAPITAL B
184     {"bfr",              0x1D51F},  // MATHEMATICAL FRAKTUR SMALL B
185     {"Bgr",              0x00392},  // GREEK CAPITAL LETTER BETA
186     {"bgr",              0x003B2},  // GREEK SMALL LETTER BETA
187     {"bigcap",           0x022C2},  // N-ARY INTERSECTION
188     {"bigcirc",          0x025EF},  // LARGE CIRCLE
189     {"bigcup",           0x022C3},  // N-ARY UNION
190     {"bigodot",          0x02A00},  // N-ARY CIRCLED DOT OPERATOR
191     {"bigoplus",         0x02A01},  // N-ARY CIRCLED PLUS OPERATOR
192     {"bigotimes",        0x02A02},  // N-ARY CIRCLED TIMES OPERATOR
193     {"bigsqcup",         0x02A06},  // N-ARY SQUARE UNION OPERATOR
194     {"bigstar",          0x02605},  // BLACK STAR
195     {"bigtriangledown",  0x025BD},  // WHITE DOWN-POINTING TRIANGLE
196     {"bigtriangleup",    0x025B3},  // WHITE UP-POINTING TRIANGLE
197     {"biguplus",         0x02A04},  // N-ARY UNION OPERATOR WITH PLUS
198     {"bigvee",           0x022C1},  // N-ARY LOGICAL OR
199     {"bigwedge",         0x022C0},  // N-ARY LOGICAL AND
200     {"bkarow",           0x0290D},  // RIGHTWARDS DOUBLE DASH ARROW
201     {"blacklozenge",     0x029EB},  // BLACK LOZENGE
202     {"blacksquare",      0x025AA},  // BLACK SMALL SQUARE
203     {"blacktriangle",    0x025B4},  // BLACK UP-POINTING SMALL TRIANGLE
204     {"blacktriangledown", 0x025BE},  // BLACK DOWN-POINTING SMALL TRIANGLE
205     {"blacktriangleleft", 0x025C2},  // BLACK LEFT-POINTING SMALL TRIANGLE
206     {"blacktriangleright", 0x025B8},  // BLACK RIGHT-POINTING SMALL TRIANGLE
207     {"blank",            0x02423},  // OPEN BOX
208     {"blk12",            0x02592},  // MEDIUM SHADE
209     {"blk14",            0x02591},  // LIGHT SHADE
210     {"blk34",            0x02593},  // DARK SHADE
211     {"block",            0x02588},  // FULL BLOCK
212     {"bne",              0x0003D, 0x020E5},  // EQUALS SIGN with reverse slash
213     {"bnequiv",          0x02261, 0x020E5},  // IDENTICAL TO with reverse slash
214     {"bnot",             0x02310},  // REVERSED NOT SIGN
215     {"bNot",             0x02AED},  // REVERSED DOUBLE STROKE NOT SIGN
216     {"Bopf",             0x1D539},  // MATHEMATICAL DOUBLE-STRUCK CAPITAL B
217     {"bopf",             0x1D553},  // MATHEMATICAL DOUBLE-STRUCK SMALL B
218     {"bot",              0x022A5},  // UP TACK
219     {"bottom",           0x022A5},  // UP TACK
220     {"bowtie",           0x022C8},  // BOWTIE
221     {"boxbox",           0x029C9},  // TWO JOINED SQUARES
222     {"boxdl",            0x02510},  // BOX DRAWINGS LIGHT DOWN AND LEFT
223     {"boxdL",            0x02555},  // BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
224     {"boxDl",            0x02556},  // BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
225     {"boxDL",            0x02557},  // BOX DRAWINGS DOUBLE DOWN AND LEFT
226     {"boxdr",            0x0250C},  // BOX DRAWINGS LIGHT DOWN AND RIGHT
227     {"boxdR",            0x02552},  // BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
228     {"boxDr",            0x02553},  // BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
229     {"boxDR",            0x02554},  // BOX DRAWINGS DOUBLE DOWN AND RIGHT
230     {"boxh",             0x02500},  // BOX DRAWINGS LIGHT HORIZONTAL
231     {"boxH",             0x02550},  // BOX DRAWINGS DOUBLE HORIZONTAL
232     {"boxhd",            0x0252C},  // BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
233     {"boxHd",            0x02564},  // BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
234     {"boxhD",            0x02565},  // BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
235     {"boxHD",            0x02566},  // BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
236     {"boxhu",            0x02534},  // BOX DRAWINGS LIGHT UP AND HORIZONTAL
237     {"boxHu",            0x02567},  // BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
238     {"boxhU",            0x02568},  // BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
239     {"boxHU",            0x02569},  // BOX DRAWINGS DOUBLE UP AND HORIZONTAL
240     {"boxminus",         0x0229F},  // SQUARED MINUS
241     {"boxplus",          0x0229E},  // SQUARED PLUS
242     {"boxtimes",         0x022A0},  // SQUARED TIMES
243     {"boxul",            0x02518},  // BOX DRAWINGS LIGHT UP AND LEFT
244     {"boxuL",            0x0255B},  // BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
245     {"boxUl",            0x0255C},  // BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
246     {"boxUL",            0x0255D},  // BOX DRAWINGS DOUBLE UP AND LEFT
247     {"boxur",            0x02514},  // BOX DRAWINGS LIGHT UP AND RIGHT
248     {"boxuR",            0x02558},  // BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
249     {"boxUr",            0x02559},  // BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
250     {"boxUR",            0x0255A},  // BOX DRAWINGS DOUBLE UP AND RIGHT
251     {"boxv",             0x02502},  // BOX DRAWINGS LIGHT VERTICAL
252     {"boxV",             0x02551},  // BOX DRAWINGS DOUBLE VERTICAL
253     {"boxvh",            0x0253C},  // BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
254     {"boxvH",            0x0256A},  // BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
255     {"boxVh",            0x0256B},  // BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
256     {"boxVH",            0x0256C},  // BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
257     {"boxvl",            0x02524},  // BOX DRAWINGS LIGHT VERTICAL AND LEFT
258     {"boxvL",            0x02561},  // BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
259     {"boxVl",            0x02562},  // BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
260     {"boxVL",            0x02563},  // BOX DRAWINGS DOUBLE VERTICAL AND LEFT
261     {"boxvr",            0x0251C},  // BOX DRAWINGS LIGHT VERTICAL AND RIGHT
262     {"boxvR",            0x0255E},  // BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
263     {"boxVr",            0x0255F},  // BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
264     {"boxVR",            0x02560},  // BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
265     {"bprime",           0x02035},  // REVERSED PRIME
266     {"breve",            0x002D8},  // BREVE
267     {"Breve",            0x002D8},  // BREVE
268     {"brvbar",           0x000A6},  // BROKEN BAR
269     {"Bscr",             0x0212C},  // SCRIPT CAPITAL B
270     {"bscr",             0x1D4B7},  // MATHEMATICAL SCRIPT SMALL B
271     {"bsemi",            0x0204F},  // REVERSED SEMICOLON
272     {"bsim",             0x0223D},  // REVERSED TILDE
273     {"bsime",            0x022CD},  // REVERSED TILDE EQUALS
274     {"bsol",             0x0005C},  // REVERSE SOLIDUS
275     {"bsolb",            0x029C5},  // SQUARED FALLING DIAGONAL SLASH
276     {"bsolhsub",         0x027C8},  // REVERSE SOLIDUS PRECEDING SUBSET
277     {"bull",             0x02022},  // BULLET
278     {"bullet",           0x02022},  // BULLET
279     {"bump",             0x0224E},  // GEOMETRICALLY EQUIVALENT TO
280     {"bumpe",            0x0224F},  // DIFFERENCE BETWEEN
281     {"bumpE",            0x02AAE},  // EQUALS SIGN WITH BUMPY ABOVE
282     {"Bumpeq",           0x0224E},  // GEOMETRICALLY EQUIVALENT TO
283     {"bumpeq",           0x0224F},  // DIFFERENCE BETWEEN
284 ];
285 
286 immutable NameId[] namesC =
287 [
288     {"Cacute",           0x00106},  // LATIN CAPITAL LETTER C WITH ACUTE
289     {"cacute",           0x00107},  // LATIN SMALL LETTER C WITH ACUTE
290     {"cap",              0x02229},  // INTERSECTION
291     {"Cap",              0x022D2},  // DOUBLE INTERSECTION
292     {"capand",           0x02A44},  // INTERSECTION WITH LOGICAL AND
293     {"capbrcup",         0x02A49},  // INTERSECTION ABOVE BAR ABOVE UNION
294     {"capcap",           0x02A4B},  // INTERSECTION BESIDE AND JOINED WITH INTERSECTION
295     {"capcup",           0x02A47},  // INTERSECTION ABOVE UNION
296     {"capdot",           0x02A40},  // INTERSECTION WITH DOT
297     {"CapitalDifferentialD", 0x02145},  // DOUBLE-STRUCK ITALIC CAPITAL D
298     {"caps",             0x02229, 0x0FE00},  // INTERSECTION with serifs
299     {"caret",            0x02041},  // CARET INSERTION POINT
300     {"caron",            0x002C7},  // CARON
301     {"Cayleys",          0x0212D},  // BLACK-LETTER CAPITAL C
302     {"ccaps",            0x02A4D},  // CLOSED INTERSECTION WITH SERIFS
303     {"Ccaron",           0x0010C},  // LATIN CAPITAL LETTER C WITH CARON
304     {"ccaron",           0x0010D},  // LATIN SMALL LETTER C WITH CARON
305     {"Ccedil",           0x000C7},  // LATIN CAPITAL LETTER C WITH CEDILLA
306     {"ccedil",           0x000E7},  // LATIN SMALL LETTER C WITH CEDILLA
307     {"Ccirc",            0x00108},  // LATIN CAPITAL LETTER C WITH CIRCUMFLEX
308     {"ccirc",            0x00109},  // LATIN SMALL LETTER C WITH CIRCUMFLEX
309     {"Cconint",          0x02230},  // VOLUME INTEGRAL
310     {"ccups",            0x02A4C},  // CLOSED UNION WITH SERIFS
311     {"ccupssm",          0x02A50},  // CLOSED UNION WITH SERIFS AND SMASH PRODUCT
312     {"Cdot",             0x0010A},  // LATIN CAPITAL LETTER C WITH DOT ABOVE
313     {"cdot",             0x0010B},  // LATIN SMALL LETTER C WITH DOT ABOVE
314     {"cedil",            0x000B8},  // CEDILLA
315     {"Cedilla",          0x000B8},  // CEDILLA
316     {"cemptyv",          0x029B2},  // EMPTY SET WITH SMALL CIRCLE ABOVE
317     {"cent",             0x000A2},  // CENT SIGN
318     {"centerdot",        0x000B7},  // MIDDLE DOT
319     {"CenterDot",        0x000B7},  // MIDDLE DOT
320     {"Cfr",              0x0212D},  // BLACK-LETTER CAPITAL C
321     {"cfr",              0x1D520},  // MATHEMATICAL FRAKTUR SMALL C
322     {"CHcy",             0x00427},  // CYRILLIC CAPITAL LETTER CHE
323     {"chcy",             0x00447},  // CYRILLIC SMALL LETTER CHE
324     {"check",            0x02713},  // CHECK MARK
325     {"checkmark",        0x02713},  // CHECK MARK
326     {"Chi",              0x003A7},  // GREEK CAPITAL LETTER CHI
327     {"chi",              0x003C7},  // GREEK SMALL LETTER CHI
328     {"cir",              0x025CB},  // WHITE CIRCLE
329     {"circ",             0x002C6},  // MODIFIER LETTER CIRCUMFLEX ACCENT
330     {"circeq",           0x02257},  // RING EQUAL TO
331     {"circlearrowleft",  0x021BA},  // ANTICLOCKWISE OPEN CIRCLE ARROW
332     {"circlearrowright", 0x021BB},  // CLOCKWISE OPEN CIRCLE ARROW
333     {"circledast",       0x0229B},  // CIRCLED ASTERISK OPERATOR
334     {"circledcirc",      0x0229A},  // CIRCLED RING OPERATOR
335     {"circleddash",      0x0229D},  // CIRCLED DASH
336     {"CircleDot",        0x02299},  // CIRCLED DOT OPERATOR
337     {"circledR",         0x000AE},  // REGISTERED SIGN
338     {"circledS",         0x024C8},  // CIRCLED LATIN CAPITAL LETTER S
339     {"CircleMinus",      0x02296},  // CIRCLED MINUS
340     {"CirclePlus",       0x02295},  // CIRCLED PLUS
341     {"CircleTimes",      0x02297},  // CIRCLED TIMES
342     {"cire",             0x02257},  // RING EQUAL TO
343     {"cirE",             0x029C3},  // CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT
344     {"cirfnint",         0x02A10},  // CIRCULATION FUNCTION
345     {"cirmid",           0x02AEF},  // VERTICAL LINE WITH CIRCLE ABOVE
346     {"cirscir",          0x029C2},  // CIRCLE WITH SMALL CIRCLE TO THE RIGHT
347     {"ClockwiseContourIntegral", 0x02232},  // CLOCKWISE CONTOUR INTEGRAL
348     {"CloseCurlyDoubleQuote", 0x0201D},  // RIGHT DOUBLE QUOTATION MARK
349     {"CloseCurlyQuote",  0x02019},  // RIGHT SINGLE QUOTATION MARK
350     {"clubs",            0x02663},  // BLACK CLUB SUIT
351     {"clubsuit",         0x02663},  // BLACK CLUB SUIT
352     {"colon",            0x0003A},  // COLON
353     {"Colon",            0x02237},  // PROPORTION
354     {"colone",           0x02254},  // COLON EQUALS
355     {"Colone",           0x02A74},  // DOUBLE COLON EQUAL
356     {"coloneq",          0x02254},  // COLON EQUALS
357     {"comma",            0x0002C},  // COMMA
358     {"commat",           0x00040},  // COMMERCIAL AT
359     {"comp",             0x02201},  // COMPLEMENT
360     {"compfn",           0x02218},  // RING OPERATOR
361     {"complement",       0x02201},  // COMPLEMENT
362     {"complexes",        0x02102},  // DOUBLE-STRUCK CAPITAL C
363     {"cong",             0x02245},  // APPROXIMATELY EQUAL TO
364     {"congdot",          0x02A6D},  // CONGRUENT WITH DOT ABOVE
365     {"Congruent",        0x02261},  // IDENTICAL TO
366     {"conint",           0x0222E},  // CONTOUR INTEGRAL
367     {"Conint",           0x0222F},  // SURFACE INTEGRAL
368     {"ContourIntegral",  0x0222E},  // CONTOUR INTEGRAL
369     {"Copf",             0x02102},  // DOUBLE-STRUCK CAPITAL C
370     {"copf",             0x1D554},  // MATHEMATICAL DOUBLE-STRUCK SMALL C
371     {"coprod",           0x02210},  // N-ARY COPRODUCT
372     {"Coproduct",        0x02210},  // N-ARY COPRODUCT
373     {"copy",             0x000A9},  // COPYRIGHT SIGN
374     {"COPY",             0x000A9},  // COPYRIGHT SIGN
375     {"copysr",           0x02117},  // SOUND RECORDING COPYRIGHT
376     {"CounterClockwiseContourIntegral", 0x02233},  // ANTICLOCKWISE CONTOUR INTEGRAL
377     {"crarr",            0x021B5},  // DOWNWARDS ARROW WITH CORNER LEFTWARDS
378     {"cross",            0x02717},  // BALLOT X
379     {"Cross",            0x02A2F},  // VECTOR OR CROSS PRODUCT
380     {"Cscr",             0x1D49E},  // MATHEMATICAL SCRIPT CAPITAL C
381     {"cscr",             0x1D4B8},  // MATHEMATICAL SCRIPT SMALL C
382     {"csub",             0x02ACF},  // CLOSED SUBSET
383     {"csube",            0x02AD1},  // CLOSED SUBSET OR EQUAL TO
384     {"csup",             0x02AD0},  // CLOSED SUPERSET
385     {"csupe",            0x02AD2},  // CLOSED SUPERSET OR EQUAL TO
386     {"ctdot",            0x022EF},  // MIDLINE HORIZONTAL ELLIPSIS
387     {"cudarrl",          0x02938},  // RIGHT-SIDE ARC CLOCKWISE ARROW
388     {"cudarrr",          0x02935},  // ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS
389     {"cuepr",            0x022DE},  // EQUAL TO OR PRECEDES
390     {"cuesc",            0x022DF},  // EQUAL TO OR SUCCEEDS
391     {"cularr",           0x021B6},  // ANTICLOCKWISE TOP SEMICIRCLE ARROW
392     {"cularrp",          0x0293D},  // TOP ARC ANTICLOCKWISE ARROW WITH PLUS
393     {"cup",              0x0222A},  // UNION
394     {"Cup",              0x022D3},  // DOUBLE UNION
395     {"cupbrcap",         0x02A48},  // UNION ABOVE BAR ABOVE INTERSECTION
396     {"CupCap",           0x0224D},  // EQUIVALENT TO
397     {"cupcap",           0x02A46},  // UNION ABOVE INTERSECTION
398     {"cupcup",           0x02A4A},  // UNION BESIDE AND JOINED WITH UNION
399     {"cupdot",           0x0228D},  // MULTISET MULTIPLICATION
400     {"cupor",            0x02A45},  // UNION WITH LOGICAL OR
401     {"cups",             0x0222A, 0x0FE00},  // UNION with serifs
402     {"curarr",           0x021B7},  // CLOCKWISE TOP SEMICIRCLE ARROW
403     {"curarrm",          0x0293C},  // TOP ARC CLOCKWISE ARROW WITH MINUS
404     {"curlyeqprec",      0x022DE},  // EQUAL TO OR PRECEDES
405     {"curlyeqsucc",      0x022DF},  // EQUAL TO OR SUCCEEDS
406     {"curlyvee",         0x022CE},  // CURLY LOGICAL OR
407     {"curlywedge",       0x022CF},  // CURLY LOGICAL AND
408     {"curren",           0x000A4},  // CURRENCY SIGN
409     {"curvearrowleft",   0x021B6},  // ANTICLOCKWISE TOP SEMICIRCLE ARROW
410     {"curvearrowright",  0x021B7},  // CLOCKWISE TOP SEMICIRCLE ARROW
411     {"cuvee",            0x022CE},  // CURLY LOGICAL OR
412     {"cuwed",            0x022CF},  // CURLY LOGICAL AND
413     {"cwconint",         0x02232},  // CLOCKWISE CONTOUR INTEGRAL
414     {"cwint",            0x02231},  // CLOCKWISE INTEGRAL
415     {"cylcty",           0x0232D},  // CYLINDRICITY
416 ];
417 
418 immutable NameId[] namesD =
419 [
420     {"dagger",           0x02020},  // DAGGER
421     {"Dagger",           0x02021},  // DOUBLE DAGGER
422     {"daleth",           0x02138},  // DALET SYMBOL
423     {"darr",             0x02193},  // DOWNWARDS ARROW
424     {"Darr",             0x021A1},  // DOWNWARDS TWO HEADED ARROW
425     {"dArr",             0x021D3},  // DOWNWARDS DOUBLE ARROW
426     {"dash",             0x02010},  // HYPHEN
427     {"dashv",            0x022A3},  // LEFT TACK
428     {"Dashv",            0x02AE4},  // VERTICAL BAR DOUBLE LEFT TURNSTILE
429     {"dbkarow",          0x0290F},  // RIGHTWARDS TRIPLE DASH ARROW
430     {"dblac",            0x002DD},  // DOUBLE ACUTE ACCENT
431     {"Dcaron",           0x0010E},  // LATIN CAPITAL LETTER D WITH CARON
432     {"dcaron",           0x0010F},  // LATIN SMALL LETTER D WITH CARON
433     {"Dcy",              0x00414},  // CYRILLIC CAPITAL LETTER DE
434     {"dcy",              0x00434},  // CYRILLIC SMALL LETTER DE
435     {"DD",               0x02145},  // DOUBLE-STRUCK ITALIC CAPITAL D
436     {"dd",               0x02146},  // DOUBLE-STRUCK ITALIC SMALL D
437     {"ddagger",          0x02021},  // DOUBLE DAGGER
438     {"ddarr",            0x021CA},  // DOWNWARDS PAIRED ARROWS
439     {"DDotrahd",         0x02911},  // RIGHTWARDS ARROW WITH DOTTED STEM
440     {"ddotseq",          0x02A77},  // EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW
441     {"deg",              0x000B0},  // DEGREE SIGN
442     {"Del",              0x02207},  // NABLA
443     {"Delta",            0x00394},  // GREEK CAPITAL LETTER DELTA
444     {"delta",            0x003B4},  // GREEK SMALL LETTER DELTA
445     {"demptyv",          0x029B1},  // EMPTY SET WITH OVERBAR
446     {"dfisht",           0x0297F},  // DOWN FISH TAIL
447     {"Dfr",              0x1D507},  // MATHEMATICAL FRAKTUR CAPITAL D
448     {"dfr",              0x1D521},  // MATHEMATICAL FRAKTUR SMALL D
449     {"Dgr",              0x00394},  // GREEK CAPITAL LETTER DELTA
450     {"dgr",              0x003B4},  // GREEK SMALL LETTER DELTA
451     {"dHar",             0x02965},  // DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT
452     {"dharl",            0x021C3},  // DOWNWARDS HARPOON WITH BARB LEFTWARDS
453     {"dharr",            0x021C2},  // DOWNWARDS HARPOON WITH BARB RIGHTWARDS
454     {"DiacriticalAcute", 0x000B4},  // ACUTE ACCENT
455     {"DiacriticalDot",   0x002D9},  // DOT ABOVE
456     {"DiacriticalDoubleAcute", 0x002DD},  // DOUBLE ACUTE ACCENT
457     {"DiacriticalGrave", 0x00060},  // GRAVE ACCENT
458     {"DiacriticalTilde", 0x002DC},  // SMALL TILDE
459     {"diam",             0x022C4},  // DIAMOND OPERATOR
460     {"diamond",          0x022C4},  // DIAMOND OPERATOR
461     {"Diamond",          0x022C4},  // DIAMOND OPERATOR
462     {"diamondsuit",      0x02666},  // BLACK DIAMOND SUIT
463     {"diams",            0x02666},  // BLACK DIAMOND SUIT
464     {"die",              0x000A8},  // DIAERESIS
465     {"DifferentialD",    0x02146},  // DOUBLE-STRUCK ITALIC SMALL D
466     {"digamma",          0x003DD},  // GREEK SMALL LETTER DIGAMMA
467     {"disin",            0x022F2},  // ELEMENT OF WITH LONG HORIZONTAL STROKE
468     {"div",              0x000F7},  // DIVISION SIGN
469     {"divide",           0x000F7},  // DIVISION SIGN
470     {"divideontimes",    0x022C7},  // DIVISION TIMES
471     {"divonx",           0x022C7},  // DIVISION TIMES
472     {"DJcy",             0x00402},  // CYRILLIC CAPITAL LETTER DJE
473     {"djcy",             0x00452},  // CYRILLIC SMALL LETTER DJE
474     {"dlcorn",           0x0231E},  // BOTTOM LEFT CORNER
475     {"dlcrop",           0x0230D},  // BOTTOM LEFT CROP
476     {"dollar",           0x00024},  // DOLLAR SIGN
477     {"Dopf",             0x1D53B},  // MATHEMATICAL DOUBLE-STRUCK CAPITAL D
478     {"dopf",             0x1D555},  // MATHEMATICAL DOUBLE-STRUCK SMALL D
479     {"Dot",              0x000A8},  // DIAERESIS
480     {"dot",              0x002D9},  // DOT ABOVE
481     {"DotDot",           0x020DC},  // COMBINING FOUR DOTS ABOVE
482     {"doteq",            0x02250},  // APPROACHES THE LIMIT
483     {"doteqdot",         0x02251},  // GEOMETRICALLY EQUAL TO
484     {"DotEqual",         0x02250},  // APPROACHES THE LIMIT
485     {"dotminus",         0x02238},  // DOT MINUS
486     {"dotplus",          0x02214},  // DOT PLUS
487     {"dotsquare",        0x022A1},  // SQUARED DOT OPERATOR
488     {"doublebarwedge",   0x02306},  // PERSPECTIVE
489     {"DoubleContourIntegral", 0x0222F},  // SURFACE INTEGRAL
490     {"DoubleDot",        0x000A8},  // DIAERESIS
491     {"DoubleDownArrow",  0x021D3},  // DOWNWARDS DOUBLE ARROW
492     {"DoubleLeftArrow",  0x021D0},  // LEFTWARDS DOUBLE ARROW
493     {"DoubleLeftRightArrow", 0x021D4},  // LEFT RIGHT DOUBLE ARROW
494     {"DoubleLeftTee",    0x02AE4},  // VERTICAL BAR DOUBLE LEFT TURNSTILE
495     {"DoubleLongLeftArrow", 0x027F8},  // LONG LEFTWARDS DOUBLE ARROW
496     {"DoubleLongLeftRightArrow", 0x027FA},  // LONG LEFT RIGHT DOUBLE ARROW
497     {"DoubleLongRightArrow", 0x027F9},  // LONG RIGHTWARDS DOUBLE ARROW
498     {"DoubleRightArrow", 0x021D2},  // RIGHTWARDS DOUBLE ARROW
499     {"DoubleRightTee",   0x022A8},  // TRUE
500     {"DoubleUpArrow",    0x021D1},  // UPWARDS DOUBLE ARROW
501     {"DoubleUpDownArrow", 0x021D5},  // UP DOWN DOUBLE ARROW
502     {"DoubleVerticalBar", 0x02225},  // PARALLEL TO
503     {"downarrow",        0x02193},  // DOWNWARDS ARROW
504     {"DownArrow",        0x02193},  // DOWNWARDS ARROW
505     {"Downarrow",        0x021D3},  // DOWNWARDS DOUBLE ARROW
506     {"DownArrowBar",     0x02913},  // DOWNWARDS ARROW TO BAR
507     {"DownArrowUpArrow", 0x021F5},  // DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW
508     {"DownBreve",        0x00311},  // COMBINING INVERTED BREVE
509     {"downdownarrows",   0x021CA},  // DOWNWARDS PAIRED ARROWS
510     {"downharpoonleft",  0x021C3},  // DOWNWARDS HARPOON WITH BARB LEFTWARDS
511     {"downharpoonright", 0x021C2},  // DOWNWARDS HARPOON WITH BARB RIGHTWARDS
512     {"DownLeftRightVector", 0x02950},  // LEFT BARB DOWN RIGHT BARB DOWN HARPOON
513     {"DownLeftTeeVector", 0x0295E},  // LEFTWARDS HARPOON WITH BARB DOWN FROM BAR
514     {"DownLeftVector",   0x021BD},  // LEFTWARDS HARPOON WITH BARB DOWNWARDS
515     {"DownLeftVectorBar", 0x02956},  // LEFTWARDS HARPOON WITH BARB DOWN TO BAR
516     {"DownRightTeeVector", 0x0295F},  // RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR
517     {"DownRightVector",  0x021C1},  // RIGHTWARDS HARPOON WITH BARB DOWNWARDS
518     {"DownRightVectorBar", 0x02957},  // RIGHTWARDS HARPOON WITH BARB DOWN TO BAR
519     {"DownTee",          0x022A4},  // DOWN TACK
520     {"DownTeeArrow",     0x021A7},  // DOWNWARDS ARROW FROM BAR
521     {"drbkarow",         0x02910},  // RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW
522     {"drcorn",           0x0231F},  // BOTTOM RIGHT CORNER
523     {"drcrop",           0x0230C},  // BOTTOM RIGHT CROP
524     {"Dscr",             0x1D49F},  // MATHEMATICAL SCRIPT CAPITAL D
525     {"dscr",             0x1D4B9},  // MATHEMATICAL SCRIPT SMALL D
526     {"DScy",             0x00405},  // CYRILLIC CAPITAL LETTER DZE
527     {"dscy",             0x00455},  // CYRILLIC SMALL LETTER DZE
528     {"dsol",             0x029F6},  // SOLIDUS WITH OVERBAR
529     {"Dstrok",           0x00110},  // LATIN CAPITAL LETTER D WITH STROKE
530     {"dstrok",           0x00111},  // LATIN SMALL LETTER D WITH STROKE
531     {"dtdot",            0x022F1},  // DOWN RIGHT DIAGONAL ELLIPSIS
532     {"dtri",             0x025BF},  // WHITE DOWN-POINTING SMALL TRIANGLE
533     {"dtrif",            0x025BE},  // BLACK DOWN-POINTING SMALL TRIANGLE
534     {"duarr",            0x021F5},  // DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW
535     {"duhar",            0x0296F},  // DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT
536     {"dwangle",          0x029A6},  // OBLIQUE ANGLE OPENING UP
537     {"DZcy",             0x0040F},  // CYRILLIC CAPITAL LETTER DZHE
538     {"dzcy",             0x0045F},  // CYRILLIC SMALL LETTER DZHE
539     {"dzigrarr",         0x027FF},  // LONG RIGHTWARDS SQUIGGLE ARROW
540 ];
541 
542 immutable NameId[] namesE =
543 [
544     {"Eacgr",            0x00388},  // GREEK CAPITAL LETTER EPSILON WITH TONOS
545     {"eacgr",            0x003AD},  // GREEK SMALL LETTER EPSILON WITH TONOS
546     {"Eacute",           0x000C9},  // LATIN CAPITAL LETTER E WITH ACUTE
547     {"eacute",           0x000E9},  // LATIN SMALL LETTER E WITH ACUTE
548     {"easter",           0x02A6E},  // EQUALS WITH ASTERISK
549     {"Ecaron",           0x0011A},  // LATIN CAPITAL LETTER E WITH CARON
550     {"ecaron",           0x0011B},  // LATIN SMALL LETTER E WITH CARON
551     {"ecir",             0x02256},  // RING IN EQUAL TO
552     {"Ecirc",            0x000CA},  // LATIN CAPITAL LETTER E WITH CIRCUMFLEX
553     {"ecirc",            0x000EA},  // LATIN SMALL LETTER E WITH CIRCUMFLEX
554     {"ecolon",           0x02255},  // EQUALS COLON
555     {"Ecy",              0x0042D},  // CYRILLIC CAPITAL LETTER E
556     {"ecy",              0x0044D},  // CYRILLIC SMALL LETTER E
557     {"eDDot",            0x02A77},  // EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW
558     {"Edot",             0x00116},  // LATIN CAPITAL LETTER E WITH DOT ABOVE
559     {"edot",             0x00117},  // LATIN SMALL LETTER E WITH DOT ABOVE
560     {"eDot",             0x02251},  // GEOMETRICALLY EQUAL TO
561     {"ee",               0x02147},  // DOUBLE-STRUCK ITALIC SMALL E
562     {"EEacgr",           0x00389},  // GREEK CAPITAL LETTER ETA WITH TONOS
563     {"eeacgr",           0x003AE},  // GREEK SMALL LETTER ETA WITH TONOS
564     {"EEgr",             0x00397},  // GREEK CAPITAL LETTER ETA
565     {"eegr",             0x003B7},  // GREEK SMALL LETTER ETA
566     {"efDot",            0x02252},  // APPROXIMATELY EQUAL TO OR THE IMAGE OF
567     {"Efr",              0x1D508},  // MATHEMATICAL FRAKTUR CAPITAL E
568     {"efr",              0x1D522},  // MATHEMATICAL FRAKTUR SMALL E
569     {"eg",               0x02A9A},  // DOUBLE-LINE EQUAL TO OR GREATER-THAN
570     {"Egr",              0x00395},  // GREEK CAPITAL LETTER EPSILON
571     {"egr",              0x003B5},  // GREEK SMALL LETTER EPSILON
572     {"Egrave",           0x000C8},  // LATIN CAPITAL LETTER E WITH GRAVE
573     {"egrave",           0x000E8},  // LATIN SMALL LETTER E WITH GRAVE
574     {"egs",              0x02A96},  // SLANTED EQUAL TO OR GREATER-THAN
575     {"egsdot",           0x02A98},  // SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE
576     {"el",               0x02A99},  // DOUBLE-LINE EQUAL TO OR LESS-THAN
577     {"Element",          0x02208},  // ELEMENT OF
578     {"elinters",         0x023E7},  // ELECTRICAL INTERSECTION
579     {"ell",              0x02113},  // SCRIPT SMALL L
580     {"els",              0x02A95},  // SLANTED EQUAL TO OR LESS-THAN
581     {"elsdot",           0x02A97},  // SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE
582     {"Emacr",            0x00112},  // LATIN CAPITAL LETTER E WITH MACRON
583     {"emacr",            0x00113},  // LATIN SMALL LETTER E WITH MACRON
584     {"empty",            0x02205},  // EMPTY SET
585     {"emptyset",         0x02205},  // EMPTY SET
586     {"EmptySmallSquare", 0x025FB},  // WHITE MEDIUM SQUARE
587     {"emptyv",           0x02205},  // EMPTY SET
588     {"EmptyVerySmallSquare", 0x025AB},  // WHITE SMALL SQUARE
589     {"emsp",             0x02003},  // EM SPACE
590     {"emsp13",           0x02004},  // THREE-PER-EM SPACE
591     {"emsp14",           0x02005},  // FOUR-PER-EM SPACE
592     {"ENG",              0x0014A},  // LATIN CAPITAL LETTER ENG
593     {"eng",              0x0014B},  // LATIN SMALL LETTER ENG
594     {"ensp",             0x02002},  // EN SPACE
595     {"Eogon",            0x00118},  // LATIN CAPITAL LETTER E WITH OGONEK
596     {"eogon",            0x00119},  // LATIN SMALL LETTER E WITH OGONEK
597     {"Eopf",             0x1D53C},  // MATHEMATICAL DOUBLE-STRUCK CAPITAL E
598     {"eopf",             0x1D556},  // MATHEMATICAL DOUBLE-STRUCK SMALL E
599     {"epar",             0x022D5},  // EQUAL AND PARALLEL TO
600     {"eparsl",           0x029E3},  // EQUALS SIGN AND SLANTED PARALLEL
601     {"eplus",            0x02A71},  // EQUALS SIGN ABOVE PLUS SIGN
602     {"epsi",             0x003B5},  // GREEK SMALL LETTER EPSILON
603     {"Epsilon",          0x00395},  // GREEK CAPITAL LETTER EPSILON
604     {"epsilon",          0x003B5},  // GREEK SMALL LETTER EPSILON
605     {"epsiv",            0x003F5},  // GREEK LUNATE EPSILON SYMBOL
606     {"eqcirc",           0x02256},  // RING IN EQUAL TO
607     {"eqcolon",          0x02255},  // EQUALS COLON
608     {"eqsim",            0x02242},  // MINUS TILDE
609     {"eqslantgtr",       0x02A96},  // SLANTED EQUAL TO OR GREATER-THAN
610     {"eqslantless",      0x02A95},  // SLANTED EQUAL TO OR LESS-THAN
611     {"Equal",            0x02A75},  // TWO CONSECUTIVE EQUALS SIGNS
612     {"equals",           0x0003D},  // EQUALS SIGN
613     {"EqualTilde",       0x02242},  // MINUS TILDE
614     {"equest",           0x0225F},  // QUESTIONED EQUAL TO
615     {"Equilibrium",      0x021CC},  // RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON
616     {"equiv",            0x02261},  // IDENTICAL TO
617     {"equivDD",          0x02A78},  // EQUIVALENT WITH FOUR DOTS ABOVE
618     {"eqvparsl",         0x029E5},  // IDENTICAL TO AND SLANTED PARALLEL
619     {"erarr",            0x02971},  // EQUALS SIGN ABOVE RIGHTWARDS ARROW
620     {"erDot",            0x02253},  // IMAGE OF OR APPROXIMATELY EQUAL TO
621     {"escr",             0x0212F},  // SCRIPT SMALL E
622     {"Escr",             0x02130},  // SCRIPT CAPITAL E
623     {"esdot",            0x02250},  // APPROACHES THE LIMIT
624     {"esim",             0x02242},  // MINUS TILDE
625     {"Esim",             0x02A73},  // EQUALS SIGN ABOVE TILDE OPERATOR
626     {"Eta",              0x00397},  // GREEK CAPITAL LETTER ETA
627     {"eta",              0x003B7},  // GREEK SMALL LETTER ETA
628     {"ETH",              0x000D0},  // LATIN CAPITAL LETTER ETH
629     {"eth",              0x000F0},  // LATIN SMALL LETTER ETH
630     {"Euml",             0x000CB},  // LATIN CAPITAL LETTER E WITH DIAERESIS
631     {"euml",             0x000EB},  // LATIN SMALL LETTER E WITH DIAERESIS
632     {"euro",             0x020AC},  // EURO SIGN
633     {"excl",             0x00021},  // EXCLAMATION MARK
634     {"exist",            0x02203},  // THERE EXISTS
635     {"Exists",           0x02203},  // THERE EXISTS
636     {"expectation",      0x02130},  // SCRIPT CAPITAL E
637     {"exponentiale",     0x02147},  // DOUBLE-STRUCK ITALIC SMALL E
638     {"ExponentialE",     0x02147},  // DOUBLE-STRUCK ITALIC SMALL E
639 ];
640 
641 immutable NameId[] namesF =
642 [
643     {"fallingdotseq",    0x02252},  // APPROXIMATELY EQUAL TO OR THE IMAGE OF
644     {"Fcy",              0x00424},  // CYRILLIC CAPITAL LETTER EF
645     {"fcy",              0x00444},  // CYRILLIC SMALL LETTER EF
646     {"female",           0x02640},  // FEMALE SIGN
647     {"ffilig",           0x0FB03},  // LATIN SMALL LIGATURE FFI
648     {"fflig",            0x0FB00},  // LATIN SMALL LIGATURE FF
649     {"ffllig",           0x0FB04},  // LATIN SMALL LIGATURE FFL
650     {"Ffr",              0x1D509},  // MATHEMATICAL FRAKTUR CAPITAL F
651     {"ffr",              0x1D523},  // MATHEMATICAL FRAKTUR SMALL F
652     {"filig",            0x0FB01},  // LATIN SMALL LIGATURE FI
653     {"FilledSmallSquare", 0x025FC},  // BLACK MEDIUM SQUARE
654     {"FilledVerySmallSquare", 0x025AA},  // BLACK SMALL SQUARE
655     {"fjlig",            0x00066, 0x0006A},  // fj ligature
656     {"flat",             0x0266D},  // MUSIC FLAT SIGN
657     {"fllig",            0x0FB02},  // LATIN SMALL LIGATURE FL
658     {"fltns",            0x025B1},  // WHITE PARALLELOGRAM
659     {"fnof",             0x00192},  // LATIN SMALL LETTER F WITH HOOK
660     {"Fopf",             0x1D53D},  // MATHEMATICAL DOUBLE-STRUCK CAPITAL F
661     {"fopf",             0x1D557},  // MATHEMATICAL DOUBLE-STRUCK SMALL F
662     {"forall",           0x02200},  // FOR ALL
663     {"ForAll",           0x02200},  // FOR ALL
664     {"fork",             0x022D4},  // PITCHFORK
665     {"forkv",            0x02AD9},  // ELEMENT OF OPENING DOWNWARDS
666     {"Fouriertrf",       0x02131},  // SCRIPT CAPITAL F
667     {"fpartint",         0x02A0D},  // FINITE PART INTEGRAL
668     {"frac12",           0x000BD},  // VULGAR FRACTION ONE HALF
669     {"frac13",           0x02153},  // VULGAR FRACTION ONE THIRD
670     {"frac14",           0x000BC},  // VULGAR FRACTION ONE QUARTER
671     {"frac15",           0x02155},  // VULGAR FRACTION ONE FIFTH
672     {"frac16",           0x02159},  // VULGAR FRACTION ONE SIXTH
673     {"frac18",           0x0215B},  // VULGAR FRACTION ONE EIGHTH
674     {"frac23",           0x02154},  // VULGAR FRACTION TWO THIRDS
675     {"frac25",           0x02156},  // VULGAR FRACTION TWO FIFTHS
676     {"frac34",           0x000BE},  // VULGAR FRACTION THREE QUARTERS
677     {"frac35",           0x02157},  // VULGAR FRACTION THREE FIFTHS
678     {"frac38",           0x0215C},  // VULGAR FRACTION THREE EIGHTHS
679     {"frac45",           0x02158},  // VULGAR FRACTION FOUR FIFTHS
680     {"frac56",           0x0215A},  // VULGAR FRACTION FIVE SIXTHS
681     {"frac58",           0x0215D},  // VULGAR FRACTION FIVE EIGHTHS
682     {"frac78",           0x0215E},  // VULGAR FRACTION SEVEN EIGHTHS
683     {"frasl",            0x02044},  // FRACTION SLASH
684     {"frown",            0x02322},  // FROWN
685     {"Fscr",             0x02131},  // SCRIPT CAPITAL F
686     {"fscr",             0x1D4BB},  // MATHEMATICAL SCRIPT SMALL F
687 ];
688 
689 immutable NameId[] namesG =
690 [
691     {"gacute",           0x001F5},  // LATIN SMALL LETTER G WITH ACUTE
692     {"Gamma",            0x00393},  // GREEK CAPITAL LETTER GAMMA
693     {"gamma",            0x003B3},  // GREEK SMALL LETTER GAMMA
694     {"Gammad",           0x003DC},  // GREEK LETTER DIGAMMA
695     {"gammad",           0x003DD},  // GREEK SMALL LETTER DIGAMMA
696     {"gap",              0x02A86},  // GREATER-THAN OR APPROXIMATE
697     {"Gbreve",           0x0011E},  // LATIN CAPITAL LETTER G WITH BREVE
698     {"gbreve",           0x0011F},  // LATIN SMALL LETTER G WITH BREVE
699     {"Gcedil",           0x00122},  // LATIN CAPITAL LETTER G WITH CEDILLA
700     {"Gcirc",            0x0011C},  // LATIN CAPITAL LETTER G WITH CIRCUMFLEX
701     {"gcirc",            0x0011D},  // LATIN SMALL LETTER G WITH CIRCUMFLEX
702     {"Gcy",              0x00413},  // CYRILLIC CAPITAL LETTER GHE
703     {"gcy",              0x00433},  // CYRILLIC SMALL LETTER GHE
704     {"Gdot",             0x00120},  // LATIN CAPITAL LETTER G WITH DOT ABOVE
705     {"gdot",             0x00121},  // LATIN SMALL LETTER G WITH DOT ABOVE
706     {"ge",               0x02265},  // GREATER-THAN OR EQUAL TO
707     {"gE",               0x02267},  // GREATER-THAN OVER EQUAL TO
708     {"gel",              0x022DB},  // GREATER-THAN EQUAL TO OR LESS-THAN
709     {"gEl",              0x02A8C},  // GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN
710     {"geq",              0x02265},  // GREATER-THAN OR EQUAL TO
711     {"geqq",             0x02267},  // GREATER-THAN OVER EQUAL TO
712     {"geqslant",         0x02A7E},  // GREATER-THAN OR SLANTED EQUAL TO
713     {"ges",              0x02A7E},  // GREATER-THAN OR SLANTED EQUAL TO
714     {"gescc",            0x02AA9},  // GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL
715     {"gesdot",           0x02A80},  // GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE
716     {"gesdoto",          0x02A82},  // GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE
717     {"gesdotol",         0x02A84},  // GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT
718     {"gesl",             0x022DB, 0x0FE00},  // GREATER-THAN slanted EQUAL TO OR LESS-THAN
719     {"gesles",           0x02A94},  // GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL
720     {"Gfr",              0x1D50A},  // MATHEMATICAL FRAKTUR CAPITAL G
721     {"gfr",              0x1D524},  // MATHEMATICAL FRAKTUR SMALL G
722     {"gg",               0x0226B},  // MUCH GREATER-THAN
723     {"Gg",               0x022D9},  // VERY MUCH GREATER-THAN
724     {"ggg",              0x022D9},  // VERY MUCH GREATER-THAN
725     {"Ggr",              0x00393},  // GREEK CAPITAL LETTER GAMMA
726     {"ggr",              0x003B3},  // GREEK SMALL LETTER GAMMA
727     {"gimel",            0x02137},  // GIMEL SYMBOL
728     {"GJcy",             0x00403},  // CYRILLIC CAPITAL LETTER GJE
729     {"gjcy",             0x00453},  // CYRILLIC SMALL LETTER GJE
730     {"gl",               0x02277},  // GREATER-THAN OR LESS-THAN
731     {"gla",              0x02AA5},  // GREATER-THAN BESIDE LESS-THAN
732     {"glE",              0x02A92},  // GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL
733     {"glj",              0x02AA4},  // GREATER-THAN OVERLAPPING LESS-THAN
734     {"gnap",             0x02A8A},  // GREATER-THAN AND NOT APPROXIMATE
735     {"gnapprox",         0x02A8A},  // GREATER-THAN AND NOT APPROXIMATE
736     {"gnE",              0x02269},  // GREATER-THAN BUT NOT EQUAL TO
737     {"gne",              0x02A88},  // GREATER-THAN AND SINGLE-LINE NOT EQUAL TO
738     {"gneq",             0x02A88},  // GREATER-THAN AND SINGLE-LINE NOT EQUAL TO
739     {"gneqq",            0x02269},  // GREATER-THAN BUT NOT EQUAL TO
740     {"gnsim",            0x022E7},  // GREATER-THAN BUT NOT EQUIVALENT TO
741     {"Gopf",             0x1D53E},  // MATHEMATICAL DOUBLE-STRUCK CAPITAL G
742     {"gopf",             0x1D558},  // MATHEMATICAL DOUBLE-STRUCK SMALL G
743     {"grave",            0x00060},  // GRAVE ACCENT
744     {"GreaterEqual",     0x02265},  // GREATER-THAN OR EQUAL TO
745     {"GreaterEqualLess", 0x022DB},  // GREATER-THAN EQUAL TO OR LESS-THAN
746     {"GreaterFullEqual", 0x02267},  // GREATER-THAN OVER EQUAL TO
747     {"GreaterGreater",   0x02AA2},  // DOUBLE NESTED GREATER-THAN
748     {"GreaterLess",      0x02277},  // GREATER-THAN OR LESS-THAN
749     {"GreaterSlantEqual", 0x02A7E},  // GREATER-THAN OR SLANTED EQUAL TO
750     {"GreaterTilde",     0x02273},  // GREATER-THAN OR EQUIVALENT TO
751     {"gscr",             0x0210A},  // SCRIPT SMALL G
752     {"Gscr",             0x1D4A2},  // MATHEMATICAL SCRIPT CAPITAL G
753     {"gsim",             0x02273},  // GREATER-THAN OR EQUIVALENT TO
754     {"gsime",            0x02A8E},  // GREATER-THAN ABOVE SIMILAR OR EQUAL
755     {"gsiml",            0x02A90},  // GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN
756     {"gt",               0x0003E},  // GREATER-THAN SIGN
757     {"GT",               0x0003E},  // GREATER-THAN SIGN
758     {"Gt",               0x0226B},  // MUCH GREATER-THAN
759     {"gtcc",             0x02AA7},  // GREATER-THAN CLOSED BY CURVE
760     {"gtcir",            0x02A7A},  // GREATER-THAN WITH CIRCLE INSIDE
761     {"gtdot",            0x022D7},  // GREATER-THAN WITH DOT
762     {"gtlPar",           0x02995},  // DOUBLE LEFT ARC GREATER-THAN BRACKET
763     {"gtquest",          0x02A7C},  // GREATER-THAN WITH QUESTION MARK ABOVE
764     {"gtrapprox",        0x02A86},  // GREATER-THAN OR APPROXIMATE
765     {"gtrarr",           0x02978},  // GREATER-THAN ABOVE RIGHTWARDS ARROW
766     {"gtrdot",           0x022D7},  // GREATER-THAN WITH DOT
767     {"gtreqless",        0x022DB},  // GREATER-THAN EQUAL TO OR LESS-THAN
768     {"gtreqqless",       0x02A8C},  // GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN
769     {"gtrless",          0x02277},  // GREATER-THAN OR LESS-THAN
770     {"gtrsim",           0x02273},  // GREATER-THAN OR EQUIVALENT TO
771     {"gvertneqq",        0x02269, 0x0FE00},  // GREATER-THAN BUT NOT EQUAL TO - with vertical stroke
772     {"gvnE",             0x02269, 0x0FE00},  // GREATER-THAN BUT NOT EQUAL TO - with vertical stroke
773 ];
774 
775 immutable NameId[] namesH =
776 [
777     {"Hacek",            0x002C7},  // CARON
778     {"hairsp",           0x0200A},  // HAIR SPACE
779     {"half",             0x000BD},  // VULGAR FRACTION ONE HALF
780     {"hamilt",           0x0210B},  // SCRIPT CAPITAL H
781     {"HARDcy",           0x0042A},  // CYRILLIC CAPITAL LETTER HARD SIGN
782     {"hardcy",           0x0044A},  // CYRILLIC SMALL LETTER HARD SIGN
783     {"harr",             0x02194},  // LEFT RIGHT ARROW
784     {"hArr",             0x021D4},  // LEFT RIGHT DOUBLE ARROW
785     {"harrcir",          0x02948},  // LEFT RIGHT ARROW THROUGH SMALL CIRCLE
786     {"harrw",            0x021AD},  // LEFT RIGHT WAVE ARROW
787     {"Hat",              0x0005E},  // CIRCUMFLEX ACCENT
788     {"hbar",             0x0210F},  // PLANCK CONSTANT OVER TWO PI
789     {"Hcirc",            0x00124},  // LATIN CAPITAL LETTER H WITH CIRCUMFLEX
790     {"hcirc",            0x00125},  // LATIN SMALL LETTER H WITH CIRCUMFLEX
791     {"hearts",           0x02665},  // BLACK HEART SUIT
792     {"heartsuit",        0x02665},  // BLACK HEART SUIT
793     {"hellip",           0x02026},  // HORIZONTAL ELLIPSIS
794     {"hercon",           0x022B9},  // HERMITIAN CONJUGATE MATRIX
795     {"Hfr",              0x0210C},  // BLACK-LETTER CAPITAL H
796     {"hfr",              0x1D525},  // MATHEMATICAL FRAKTUR SMALL H
797     {"HilbertSpace",     0x0210B},  // SCRIPT CAPITAL H
798     {"hksearow",         0x02925},  // SOUTH EAST ARROW WITH HOOK
799     {"hkswarow",         0x02926},  // SOUTH WEST ARROW WITH HOOK
800     {"hoarr",            0x021FF},  // LEFT RIGHT OPEN-HEADED ARROW
801     {"homtht",           0x0223B},  // HOMOTHETIC
802     {"hookleftarrow",    0x021A9},  // LEFTWARDS ARROW WITH HOOK
803     {"hookrightarrow",   0x021AA},  // RIGHTWARDS ARROW WITH HOOK
804     {"Hopf",             0x0210D},  // DOUBLE-STRUCK CAPITAL H
805     {"hopf",             0x1D559},  // MATHEMATICAL DOUBLE-STRUCK SMALL H
806     {"horbar",           0x02015},  // HORIZONTAL BAR
807     {"HorizontalLine",   0x02500},  // BOX DRAWINGS LIGHT HORIZONTAL
808     {"Hscr",             0x0210B},  // SCRIPT CAPITAL H
809     {"hscr",             0x1D4BD},  // MATHEMATICAL SCRIPT SMALL H
810     {"hslash",           0x0210F},  // PLANCK CONSTANT OVER TWO PI
811     {"Hstrok",           0x00126},  // LATIN CAPITAL LETTER H WITH STROKE
812     {"hstrok",           0x00127},  // LATIN SMALL LETTER H WITH STROKE
813     {"HumpDownHump",     0x0224E},  // GEOMETRICALLY EQUIVALENT TO
814     {"HumpEqual",        0x0224F},  // DIFFERENCE BETWEEN
815     {"hybull",           0x02043},  // HYPHEN BULLET
816     {"hyphen",           0x02010},  // HYPHEN
817 ];
818 
819 immutable NameId[] namesI =
820 [
821     {"Iacgr",            0x0038A},  // GREEK CAPITAL LETTER IOTA WITH TONOS
822     {"iacgr",            0x003AF},  // GREEK SMALL LETTER IOTA WITH TONOS
823     {"Iacute",           0x000CD},  // LATIN CAPITAL LETTER I WITH ACUTE
824     {"iacute",           0x000ED},  // LATIN SMALL LETTER I WITH ACUTE
825     {"ic",               0x02063},  // INVISIBLE SEPARATOR
826     {"Icirc",            0x000CE},  // LATIN CAPITAL LETTER I WITH CIRCUMFLEX
827     {"icirc",            0x000EE},  // LATIN SMALL LETTER I WITH CIRCUMFLEX
828     {"Icy",              0x00418},  // CYRILLIC CAPITAL LETTER I
829     {"icy",              0x00438},  // CYRILLIC SMALL LETTER I
830     {"idiagr",           0x00390},  // GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
831     {"Idigr",            0x003AA},  // GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
832     {"idigr",            0x003CA},  // GREEK SMALL LETTER IOTA WITH DIALYTIKA
833     {"Idot",             0x00130},  // LATIN CAPITAL LETTER I WITH DOT ABOVE
834     {"IEcy",             0x00415},  // CYRILLIC CAPITAL LETTER IE
835     {"iecy",             0x00435},  // CYRILLIC SMALL LETTER IE
836     {"iexcl",            0x000A1},  // INVERTED EXCLAMATION MARK
837     {"iff",              0x021D4},  // LEFT RIGHT DOUBLE ARROW
838     {"Ifr",              0x02111},  // BLACK-LETTER CAPITAL I
839     {"ifr",              0x1D526},  // MATHEMATICAL FRAKTUR SMALL I
840     {"Igr",              0x00399},  // GREEK CAPITAL LETTER IOTA
841     {"igr",              0x003B9},  // GREEK SMALL LETTER IOTA
842     {"Igrave",           0x000CC},  // LATIN CAPITAL LETTER I WITH GRAVE
843     {"igrave",           0x000EC},  // LATIN SMALL LETTER I WITH GRAVE
844     {"ii",               0x02148},  // DOUBLE-STRUCK ITALIC SMALL I
845     {"iiiint",           0x02A0C},  // QUADRUPLE INTEGRAL OPERATOR
846     {"iiint",            0x0222D},  // TRIPLE INTEGRAL
847     {"iinfin",           0x029DC},  // INCOMPLETE INFINITY
848     {"iiota",            0x02129},  // TURNED GREEK SMALL LETTER IOTA
849     {"IJlig",            0x00132},  // LATIN CAPITAL LIGATURE IJ
850     {"ijlig",            0x00133},  // LATIN SMALL LIGATURE IJ
851     {"Im",               0x02111},  // BLACK-LETTER CAPITAL I
852     {"Imacr",            0x0012A},  // LATIN CAPITAL LETTER I WITH MACRON
853     {"imacr",            0x0012B},  // LATIN SMALL LETTER I WITH MACRON
854     {"image",            0x02111},  // BLACK-LETTER CAPITAL I
855     {"ImaginaryI",       0x02148},  // DOUBLE-STRUCK ITALIC SMALL I
856     {"imagline",         0x02110},  // SCRIPT CAPITAL I
857     {"imagpart",         0x02111},  // BLACK-LETTER CAPITAL I
858     {"imath",            0x00131},  // LATIN SMALL LETTER DOTLESS I
859     {"imof",             0x022B7},  // IMAGE OF
860     {"imped",            0x001B5},  // LATIN CAPITAL LETTER Z WITH STROKE
861     {"Implies",          0x021D2},  // RIGHTWARDS DOUBLE ARROW
862     {"in",               0x02208},  // ELEMENT OF
863     {"incare",           0x02105},  // CARE OF
864     {"infin",            0x0221E},  // INFINITY
865     {"infintie",         0x029DD},  // TIE OVER INFINITY
866     {"inodot",           0x00131},  // LATIN SMALL LETTER DOTLESS I
867     {"int",              0x0222B},  // INTEGRAL
868     {"Int",              0x0222C},  // DOUBLE INTEGRAL
869     {"intcal",           0x022BA},  // INTERCALATE
870     {"integers",         0x02124},  // DOUBLE-STRUCK CAPITAL Z
871     {"Integral",         0x0222B},  // INTEGRAL
872     {"intercal",         0x022BA},  // INTERCALATE
873     {"Intersection",     0x022C2},  // N-ARY INTERSECTION
874     {"intlarhk",         0x02A17},  // INTEGRAL WITH LEFTWARDS ARROW WITH HOOK
875     {"intprod",          0x02A3C},  // INTERIOR PRODUCT
876     {"InvisibleComma",   0x02063},  // INVISIBLE SEPARATOR
877     {"InvisibleTimes",   0x02062},  // INVISIBLE TIMES
878     {"IOcy",             0x00401},  // CYRILLIC CAPITAL LETTER IO
879     {"iocy",             0x00451},  // CYRILLIC SMALL LETTER IO
880     {"Iogon",            0x0012E},  // LATIN CAPITAL LETTER I WITH OGONEK
881     {"iogon",            0x0012F},  // LATIN SMALL LETTER I WITH OGONEK
882     {"Iopf",             0x1D540},  // MATHEMATICAL DOUBLE-STRUCK CAPITAL I
883     {"iopf",             0x1D55A},  // MATHEMATICAL DOUBLE-STRUCK SMALL I
884     {"Iota",             0x00399},  // GREEK CAPITAL LETTER IOTA
885     {"iota",             0x003B9},  // GREEK SMALL LETTER IOTA
886     {"iprod",            0x02A3C},  // INTERIOR PRODUCT
887     {"iquest",           0x000BF},  // INVERTED QUESTION MARK
888     {"Iscr",             0x02110},  // SCRIPT CAPITAL I
889     {"iscr",             0x1D4BE},  // MATHEMATICAL SCRIPT SMALL I
890     {"isin",             0x02208},  // ELEMENT OF
891     {"isindot",          0x022F5},  // ELEMENT OF WITH DOT ABOVE
892     {"isinE",            0x022F9},  // ELEMENT OF WITH TWO HORIZONTAL STROKES
893     {"isins",            0x022F4},  // SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
894     {"isinsv",           0x022F3},  // ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
895     {"isinv",            0x02208},  // ELEMENT OF
896     {"it",               0x02062},  // INVISIBLE TIMES
897     {"Itilde",           0x00128},  // LATIN CAPITAL LETTER I WITH TILDE
898     {"itilde",           0x00129},  // LATIN SMALL LETTER I WITH TILDE
899     {"Iukcy",            0x00406},  // CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
900     {"iukcy",            0x00456},  // CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
901     {"Iuml",             0x000CF},  // LATIN CAPITAL LETTER I WITH DIAERESIS
902     {"iuml",             0x000EF},  // LATIN SMALL LETTER I WITH DIAERESIS
903 ];
904 
905 immutable NameId[] namesJ =
906 [
907     {"Jcirc",            0x00134},  // LATIN CAPITAL LETTER J WITH CIRCUMFLEX
908     {"jcirc",            0x00135},  // LATIN SMALL LETTER J WITH CIRCUMFLEX
909     {"Jcy",              0x00419},  // CYRILLIC CAPITAL LETTER SHORT I
910     {"jcy",              0x00439},  // CYRILLIC SMALL LETTER SHORT I
911     {"Jfr",              0x1D50D},  // MATHEMATICAL FRAKTUR CAPITAL J
912     {"jfr",              0x1D527},  // MATHEMATICAL FRAKTUR SMALL J
913     {"jmath",            0x00237},  // LATIN SMALL LETTER DOTLESS J
914     {"Jopf",             0x1D541},  // MATHEMATICAL DOUBLE-STRUCK CAPITAL J
915     {"jopf",             0x1D55B},  // MATHEMATICAL DOUBLE-STRUCK SMALL J
916     {"Jscr",             0x1D4A5},  // MATHEMATICAL SCRIPT CAPITAL J
917     {"jscr",             0x1D4BF},  // MATHEMATICAL SCRIPT SMALL J
918     {"Jsercy",           0x00408},  // CYRILLIC CAPITAL LETTER JE
919     {"jsercy",           0x00458},  // CYRILLIC SMALL LETTER JE
920     {"Jukcy",            0x00404},  // CYRILLIC CAPITAL LETTER UKRAINIAN IE
921     {"jukcy",            0x00454},  // CYRILLIC SMALL LETTER UKRAINIAN IE
922 ];
923 
924 immutable NameId[] namesK =
925 [
926     {"Kappa",            0x0039A},  // GREEK CAPITAL LETTER KAPPA
927     {"kappa",            0x003BA},  // GREEK SMALL LETTER KAPPA
928     {"kappav",           0x003F0},  // GREEK KAPPA SYMBOL
929     {"Kcedil",           0x00136},  // LATIN CAPITAL LETTER K WITH CEDILLA
930     {"kcedil",           0x00137},  // LATIN SMALL LETTER K WITH CEDILLA
931     {"Kcy",              0x0041A},  // CYRILLIC CAPITAL LETTER KA
932     {"kcy",              0x0043A},  // CYRILLIC SMALL LETTER KA
933     {"Kfr",              0x1D50E},  // MATHEMATICAL FRAKTUR CAPITAL K
934     {"kfr",              0x1D528},  // MATHEMATICAL FRAKTUR SMALL K
935     {"Kgr",              0x0039A},  // GREEK CAPITAL LETTER KAPPA
936     {"kgr",              0x003BA},  // GREEK SMALL LETTER KAPPA
937     {"kgreen",           0x00138},  // LATIN SMALL LETTER KRA
938     {"KHcy",             0x00425},  // CYRILLIC CAPITAL LETTER HA
939     {"khcy",             0x00445},  // CYRILLIC SMALL LETTER HA
940     {"KHgr",             0x003A7},  // GREEK CAPITAL LETTER CHI
941     {"khgr",             0x003C7},  // GREEK SMALL LETTER CHI
942     {"KJcy",             0x0040C},  // CYRILLIC CAPITAL LETTER KJE
943     {"kjcy",             0x0045C},  // CYRILLIC SMALL LETTER KJE
944     {"Kopf",             0x1D542},  // MATHEMATICAL DOUBLE-STRUCK CAPITAL K
945     {"kopf",             0x1D55C},  // MATHEMATICAL DOUBLE-STRUCK SMALL K
946     {"Kscr",             0x1D4A6},  // MATHEMATICAL SCRIPT CAPITAL K
947     {"kscr",             0x1D4C0},  // MATHEMATICAL SCRIPT SMALL K
948 ];
949 
950 immutable NameId[] namesL =
951 [
952     {"lAarr",            0x021DA},  // LEFTWARDS TRIPLE ARROW
953     {"Lacute",           0x00139},  // LATIN CAPITAL LETTER L WITH ACUTE
954     {"lacute",           0x0013A},  // LATIN SMALL LETTER L WITH ACUTE
955     {"laemptyv",         0x029B4},  // EMPTY SET WITH LEFT ARROW ABOVE
956     {"lagran",           0x02112},  // SCRIPT CAPITAL L
957     {"Lambda",           0x0039B},  // GREEK CAPITAL LETTER LAMDA
958     {"lambda",           0x003BB},  // GREEK SMALL LETTER LAMDA
959     {"lang",             0x027E8},  // MATHEMATICAL LEFT ANGLE BRACKET
960     {"Lang",             0x027EA},  // MATHEMATICAL LEFT DOUBLE ANGLE BRACKET
961     {"langd",            0x02991},  // LEFT ANGLE BRACKET WITH DOT
962     {"langle",           0x027E8},  // MATHEMATICAL LEFT ANGLE BRACKET
963     {"lap",              0x02A85},  // LESS-THAN OR APPROXIMATE
964     {"Laplacetrf",       0x02112},  // SCRIPT CAPITAL L
965     {"laquo",            0x000AB},  // LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
966     {"larr",             0x02190},  // LEFTWARDS ARROW
967     {"Larr",             0x0219E},  // LEFTWARDS TWO HEADED ARROW
968     {"lArr",             0x021D0},  // LEFTWARDS DOUBLE ARROW
969     {"larrb",            0x021E4},  // LEFTWARDS ARROW TO BAR
970     {"larrbfs",          0x0291F},  // LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND
971     {"larrfs",           0x0291D},  // LEFTWARDS ARROW TO BLACK DIAMOND
972     {"larrhk",           0x021A9},  // LEFTWARDS ARROW WITH HOOK
973     {"larrlp",           0x021AB},  // LEFTWARDS ARROW WITH LOOP
974     {"larrpl",           0x02939},  // LEFT-SIDE ARC ANTICLOCKWISE ARROW
975     {"larrsim",          0x02973},  // LEFTWARDS ARROW ABOVE TILDE OPERATOR
976     {"larrtl",           0x021A2},  // LEFTWARDS ARROW WITH TAIL
977     {"lat",              0x02AAB},  // LARGER THAN
978     {"latail",           0x02919},  // LEFTWARDS ARROW-TAIL
979     {"lAtail",           0x0291B},  // LEFTWARDS DOUBLE ARROW-TAIL
980     {"late",             0x02AAD},  // LARGER THAN OR EQUAL TO
981     {"lates",            0x02AAD, 0x0FE00},  // LARGER THAN OR slanted EQUAL
982     {"lbarr",            0x0290C},  // LEFTWARDS DOUBLE DASH ARROW
983     {"lBarr",            0x0290E},  // LEFTWARDS TRIPLE DASH ARROW
984     {"lbbrk",            0x02772},  // LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT
985     {"lbrace",           0x0007B},  // LEFT CURLY BRACKET
986     {"lbrack",           0x0005B},  // LEFT SQUARE BRACKET
987     {"lbrke",            0x0298B},  // LEFT SQUARE BRACKET WITH UNDERBAR
988     {"lbrksld",          0x0298F},  // LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
989     {"lbrkslu",          0x0298D},  // LEFT SQUARE BRACKET WITH TICK IN TOP CORNER
990     {"Lcaron",           0x0013D},  // LATIN CAPITAL LETTER L WITH CARON
991     {"lcaron",           0x0013E},  // LATIN SMALL LETTER L WITH CARON
992     {"Lcedil",           0x0013B},  // LATIN CAPITAL LETTER L WITH CEDILLA
993     {"lcedil",           0x0013C},  // LATIN SMALL LETTER L WITH CEDILLA
994     {"lceil",            0x02308},  // LEFT CEILING
995     {"lcub",             0x0007B},  // LEFT CURLY BRACKET
996     {"Lcy",              0x0041B},  // CYRILLIC CAPITAL LETTER EL
997     {"lcy",              0x0043B},  // CYRILLIC SMALL LETTER EL
998     {"ldca",             0x02936},  // ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS
999     {"ldquo",            0x0201C},  // LEFT DOUBLE QUOTATION MARK
1000     {"ldquor",           0x0201E},  // DOUBLE LOW-9 QUOTATION MARK
1001     {"ldrdhar",          0x02967},  // LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN
1002     {"ldrushar",         0x0294B},  // LEFT BARB DOWN RIGHT BARB UP HARPOON
1003     {"ldsh",             0x021B2},  // DOWNWARDS ARROW WITH TIP LEFTWARDS
1004     {"le",               0x02264},  // LESS-THAN OR EQUAL TO
1005     {"lE",               0x02266},  // LESS-THAN OVER EQUAL TO
1006     {"LeftAngleBracket", 0x027E8},  // MATHEMATICAL LEFT ANGLE BRACKET
1007     {"leftarrow",        0x02190},  // LEFTWARDS ARROW
1008     {"LeftArrow",        0x02190},  // LEFTWARDS ARROW
1009     {"Leftarrow",        0x021D0},  // LEFTWARDS DOUBLE ARROW
1010     {"LeftArrowBar",     0x021E4},  // LEFTWARDS ARROW TO BAR
1011     {"LeftArrowRightArrow", 0x021C6},  // LEFTWARDS ARROW OVER RIGHTWARDS ARROW
1012     {"leftarrowtail",    0x021A2},  // LEFTWARDS ARROW WITH TAIL
1013     {"LeftCeiling",      0x02308},  // LEFT CEILING
1014     {"LeftDoubleBracket", 0x027E6},  // MATHEMATICAL LEFT WHITE SQUARE BRACKET
1015     {"LeftDownTeeVector", 0x02961},  // DOWNWARDS HARPOON WITH BARB LEFT FROM BAR
1016     {"LeftDownVector",   0x021C3},  // DOWNWARDS HARPOON WITH BARB LEFTWARDS
1017     {"LeftDownVectorBar", 0x02959},  // DOWNWARDS HARPOON WITH BARB LEFT TO BAR
1018     {"LeftFloor",        0x0230A},  // LEFT FLOOR
1019     {"leftharpoondown",  0x021BD},  // LEFTWARDS HARPOON WITH BARB DOWNWARDS
1020     {"leftharpoonup",    0x021BC},  // LEFTWARDS HARPOON WITH BARB UPWARDS
1021     {"leftleftarrows",   0x021C7},  // LEFTWARDS PAIRED ARROWS
1022     {"leftrightarrow",   0x02194},  // LEFT RIGHT ARROW
1023     {"LeftRightArrow",   0x02194},  // LEFT RIGHT ARROW
1024     {"Leftrightarrow",   0x021D4},  // LEFT RIGHT DOUBLE ARROW
1025     {"leftrightarrows",  0x021C6},  // LEFTWARDS ARROW OVER RIGHTWARDS ARROW
1026     {"leftrightharpoons", 0x021CB},  // LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON
1027     {"leftrightsquigarrow", 0x021AD},  // LEFT RIGHT WAVE ARROW
1028     {"LeftRightVector",  0x0294E},  // LEFT BARB UP RIGHT BARB UP HARPOON
1029     {"LeftTee",          0x022A3},  // LEFT TACK
1030     {"LeftTeeArrow",     0x021A4},  // LEFTWARDS ARROW FROM BAR
1031     {"LeftTeeVector",    0x0295A},  // LEFTWARDS HARPOON WITH BARB UP FROM BAR
1032     {"leftthreetimes",   0x022CB},  // LEFT SEMIDIRECT PRODUCT
1033     {"LeftTriangle",     0x022B2},  // NORMAL SUBGROUP OF
1034     {"LeftTriangleBar",  0x029CF},  // LEFT TRIANGLE BESIDE VERTICAL BAR
1035     {"LeftTriangleEqual", 0x022B4},  // NORMAL SUBGROUP OF OR EQUAL TO
1036     {"LeftUpDownVector", 0x02951},  // UP BARB LEFT DOWN BARB LEFT HARPOON
1037     {"LeftUpTeeVector",  0x02960},  // UPWARDS HARPOON WITH BARB LEFT FROM BAR
1038     {"LeftUpVector",     0x021BF},  // UPWARDS HARPOON WITH BARB LEFTWARDS
1039     {"LeftUpVectorBar",  0x02958},  // UPWARDS HARPOON WITH BARB LEFT TO BAR
1040     {"LeftVector",       0x021BC},  // LEFTWARDS HARPOON WITH BARB UPWARDS
1041     {"LeftVectorBar",    0x02952},  // LEFTWARDS HARPOON WITH BARB UP TO BAR
1042     {"leg",              0x022DA},  // LESS-THAN EQUAL TO OR GREATER-THAN
1043     {"lEg",              0x02A8B},  // LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN
1044     {"leq",              0x02264},  // LESS-THAN OR EQUAL TO
1045     {"leqq",             0x02266},  // LESS-THAN OVER EQUAL TO
1046     {"leqslant",         0x02A7D},  // LESS-THAN OR SLANTED EQUAL TO
1047     {"les",              0x02A7D},  // LESS-THAN OR SLANTED EQUAL TO
1048     {"lescc",            0x02AA8},  // LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL
1049     {"lesdot",           0x02A7F},  // LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE
1050     {"lesdoto",          0x02A81},  // LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE
1051     {"lesdotor",         0x02A83},  // LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT
1052     {"lesg",             0x022DA, 0x0FE00},  // LESS-THAN slanted EQUAL TO OR GREATER-THAN
1053     {"lesges",           0x02A93},  // LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL
1054     {"lessapprox",       0x02A85},  // LESS-THAN OR APPROXIMATE
1055     {"lessdot",          0x022D6},  // LESS-THAN WITH DOT
1056     {"lesseqgtr",        0x022DA},  // LESS-THAN EQUAL TO OR GREATER-THAN
1057     {"lesseqqgtr",       0x02A8B},  // LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN
1058     {"LessEqualGreater", 0x022DA},  // LESS-THAN EQUAL TO OR GREATER-THAN
1059     {"LessFullEqual",    0x02266},  // LESS-THAN OVER EQUAL TO
1060     {"LessGreater",      0x02276},  // LESS-THAN OR GREATER-THAN
1061     {"lessgtr",          0x02276},  // LESS-THAN OR GREATER-THAN
1062     {"LessLess",         0x02AA1},  // DOUBLE NESTED LESS-THAN
1063     {"lesssim",          0x02272},  // LESS-THAN OR EQUIVALENT TO
1064     {"LessSlantEqual",   0x02A7D},  // LESS-THAN OR SLANTED EQUAL TO
1065     {"LessTilde",        0x02272},  // LESS-THAN OR EQUIVALENT TO
1066     {"lfisht",           0x0297C},  // LEFT FISH TAIL
1067     {"lfloor",           0x0230A},  // LEFT FLOOR
1068     {"Lfr",              0x1D50F},  // MATHEMATICAL FRAKTUR CAPITAL L
1069     {"lfr",              0x1D529},  // MATHEMATICAL FRAKTUR SMALL L
1070     {"lg",               0x02276},  // LESS-THAN OR GREATER-THAN
1071     {"lgE",              0x02A91},  // LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL
1072     {"Lgr",              0x0039B},  // GREEK CAPITAL LETTER LAMDA
1073     {"lgr",              0x003BB},  // GREEK SMALL LETTER LAMDA
1074     {"lHar",             0x02962},  // LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN
1075     {"lhard",            0x021BD},  // LEFTWARDS HARPOON WITH BARB DOWNWARDS
1076     {"lharu",            0x021BC},  // LEFTWARDS HARPOON WITH BARB UPWARDS
1077     {"lharul",           0x0296A},  // LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH
1078     {"lhblk",            0x02584},  // LOWER HALF BLOCK
1079     {"LJcy",             0x00409},  // CYRILLIC CAPITAL LETTER LJE
1080     {"ljcy",             0x00459},  // CYRILLIC SMALL LETTER LJE
1081     {"ll",               0x0226A},  // MUCH LESS-THAN
1082     {"Ll",               0x022D8},  // VERY MUCH LESS-THAN
1083     {"llarr",            0x021C7},  // LEFTWARDS PAIRED ARROWS
1084     {"llcorner",         0x0231E},  // BOTTOM LEFT CORNER
1085     {"Lleftarrow",       0x021DA},  // LEFTWARDS TRIPLE ARROW
1086     {"llhard",           0x0296B},  // LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH
1087     {"lltri",            0x025FA},  // LOWER LEFT TRIANGLE
1088     {"Lmidot",           0x0013F},  // LATIN CAPITAL LETTER L WITH MIDDLE DOT
1089     {"lmidot",           0x00140},  // LATIN SMALL LETTER L WITH MIDDLE DOT
1090     {"lmoust",           0x023B0},  // UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION
1091     {"lmoustache",       0x023B0},  // UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION
1092     {"lnap",             0x02A89},  // LESS-THAN AND NOT APPROXIMATE
1093     {"lnapprox",         0x02A89},  // LESS-THAN AND NOT APPROXIMATE
1094     {"lnE",              0x02268},  // LESS-THAN BUT NOT EQUAL TO
1095     {"lne",              0x02A87},  // LESS-THAN AND SINGLE-LINE NOT EQUAL TO
1096     {"lneq",             0x02A87},  // LESS-THAN AND SINGLE-LINE NOT EQUAL TO
1097     {"lneqq",            0x02268},  // LESS-THAN BUT NOT EQUAL TO
1098     {"lnsim",            0x022E6},  // LESS-THAN BUT NOT EQUIVALENT TO
1099     {"loang",            0x027EC},  // MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET
1100     {"loarr",            0x021FD},  // LEFTWARDS OPEN-HEADED ARROW
1101     {"lobrk",            0x027E6},  // MATHEMATICAL LEFT WHITE SQUARE BRACKET
1102     {"longleftarrow",    0x027F5},  // LONG LEFTWARDS ARROW
1103     {"LongLeftArrow",    0x027F5},  // LONG LEFTWARDS ARROW
1104     {"Longleftarrow",    0x027F8},  // LONG LEFTWARDS DOUBLE ARROW
1105     {"longleftrightarrow", 0x027F7},  // LONG LEFT RIGHT ARROW
1106     {"LongLeftRightArrow", 0x027F7},  // LONG LEFT RIGHT ARROW
1107     {"Longleftrightarrow", 0x027FA},  // LONG LEFT RIGHT DOUBLE ARROW
1108     {"longmapsto",       0x027FC},  // LONG RIGHTWARDS ARROW FROM BAR
1109     {"longrightarrow",   0x027F6},  // LONG RIGHTWARDS ARROW
1110     {"LongRightArrow",   0x027F6},  // LONG RIGHTWARDS ARROW
1111     {"Longrightarrow",   0x027F9},  // LONG RIGHTWARDS DOUBLE ARROW
1112     {"looparrowleft",    0x021AB},  // LEFTWARDS ARROW WITH LOOP
1113     {"looparrowright",   0x021AC},  // RIGHTWARDS ARROW WITH LOOP
1114     {"lopar",            0x02985},  // LEFT WHITE PARENTHESIS
1115     {"Lopf",             0x1D543},  // MATHEMATICAL DOUBLE-STRUCK CAPITAL L
1116     {"lopf",             0x1D55D},  // MATHEMATICAL DOUBLE-STRUCK SMALL L
1117     {"loplus",           0x02A2D},  // PLUS SIGN IN LEFT HALF CIRCLE
1118     {"lotimes",          0x02A34},  // MULTIPLICATION SIGN IN LEFT HALF CIRCLE
1119     {"lowast",           0x02217},  // ASTERISK OPERATOR
1120     {"lowbar",           0x0005F},  // LOW LINE
1121     {"LowerLeftArrow",   0x02199},  // SOUTH WEST ARROW
1122     {"LowerRightArrow",  0x02198},  // SOUTH EAST ARROW
1123     {"loz",              0x025CA},  // LOZENGE
1124     {"lozenge",          0x025CA},  // LOZENGE
1125     {"lozf",             0x029EB},  // BLACK LOZENGE
1126     {"lpar",             0x00028},  // LEFT PARENTHESIS
1127     {"lparlt",           0x02993},  // LEFT ARC LESS-THAN BRACKET
1128     {"lrarr",            0x021C6},  // LEFTWARDS ARROW OVER RIGHTWARDS ARROW
1129     {"lrcorner",         0x0231F},  // BOTTOM RIGHT CORNER
1130     {"lrhar",            0x021CB},  // LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON
1131     {"lrhard",           0x0296D},  // RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH
1132     {"lrm",              0x0200E},  // LEFT-TO-RIGHT MARK
1133     {"lrtri",            0x022BF},  // RIGHT TRIANGLE
1134     {"lsaquo",           0x02039},  // SINGLE LEFT-POINTING ANGLE QUOTATION MARK
1135     {"Lscr",             0x02112},  // SCRIPT CAPITAL L
1136     {"lscr",             0x1D4C1},  // MATHEMATICAL SCRIPT SMALL L
1137     {"lsh",              0x021B0},  // UPWARDS ARROW WITH TIP LEFTWARDS
1138     {"Lsh",              0x021B0},  // UPWARDS ARROW WITH TIP LEFTWARDS
1139     {"lsim",             0x02272},  // LESS-THAN OR EQUIVALENT TO
1140     {"lsime",            0x02A8D},  // LESS-THAN ABOVE SIMILAR OR EQUAL
1141     {"lsimg",            0x02A8F},  // LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN
1142     {"lsqb",             0x0005B},  // LEFT SQUARE BRACKET
1143     {"lsquo",            0x02018},  // LEFT SINGLE QUOTATION MARK
1144     {"lsquor",           0x0201A},  // SINGLE LOW-9 QUOTATION MARK
1145     {"Lstrok",           0x00141},  // LATIN CAPITAL LETTER L WITH STROKE
1146     {"lstrok",           0x00142},  // LATIN SMALL LETTER L WITH STROKE
1147     {"lt",               0x0003C},  // LESS-THAN SIGN
1148     {"LT",               0x0003C},  // LESS-THAN SIGN
1149     {"Lt",               0x0226A},  // MUCH LESS-THAN
1150     {"ltcc",             0x02AA6},  // LESS-THAN CLOSED BY CURVE
1151     {"ltcir",            0x02A79},  // LESS-THAN WITH CIRCLE INSIDE
1152     {"ltdot",            0x022D6},  // LESS-THAN WITH DOT
1153     {"lthree",           0x022CB},  // LEFT SEMIDIRECT PRODUCT
1154     {"ltimes",           0x022C9},  // LEFT NORMAL FACTOR SEMIDIRECT PRODUCT
1155     {"ltlarr",           0x02976},  // LESS-THAN ABOVE LEFTWARDS ARROW
1156     {"ltquest",          0x02A7B},  // LESS-THAN WITH QUESTION MARK ABOVE
1157     {"ltri",             0x025C3},  // WHITE LEFT-POINTING SMALL TRIANGLE
1158     {"ltrie",            0x022B4},  // NORMAL SUBGROUP OF OR EQUAL TO
1159     {"ltrif",            0x025C2},  // BLACK LEFT-POINTING SMALL TRIANGLE
1160     {"ltrPar",           0x02996},  // DOUBLE RIGHT ARC LESS-THAN BRACKET
1161     {"lurdshar",         0x0294A},  // LEFT BARB UP RIGHT BARB DOWN HARPOON
1162     {"luruhar",          0x02966},  // LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP
1163     {"lvertneqq",        0x02268, 0x0FE00},  // LESS-THAN BUT NOT EQUAL TO - with vertical stroke
1164     {"lvnE",             0x02268, 0x0FE00},  // LESS-THAN BUT NOT EQUAL TO - with vertical stroke
1165 ];
1166 
1167 immutable NameId[] namesM =
1168 [
1169     {"macr",             0x000AF},  // MACRON
1170     {"male",             0x02642},  // MALE SIGN
1171     {"malt",             0x02720},  // MALTESE CROSS
1172     {"maltese",          0x02720},  // MALTESE CROSS
1173     {"map",              0x021A6},  // RIGHTWARDS ARROW FROM BAR
1174     {"Map",              0x02905},  // RIGHTWARDS TWO-HEADED ARROW FROM BAR
1175     {"mapsto",           0x021A6},  // RIGHTWARDS ARROW FROM BAR
1176     {"mapstodown",       0x021A7},  // DOWNWARDS ARROW FROM BAR
1177     {"mapstoleft",       0x021A4},  // LEFTWARDS ARROW FROM BAR
1178     {"mapstoup",         0x021A5},  // UPWARDS ARROW FROM BAR
1179     {"marker",           0x025AE},  // BLACK VERTICAL RECTANGLE
1180     {"mcomma",           0x02A29},  // MINUS SIGN WITH COMMA ABOVE
1181     {"Mcy",              0x0041C},  // CYRILLIC CAPITAL LETTER EM
1182     {"mcy",              0x0043C},  // CYRILLIC SMALL LETTER EM
1183     {"mdash",            0x02014},  // EM DASH
1184     {"mDDot",            0x0223A},  // GEOMETRIC PROPORTION
1185     {"measuredangle",    0x02221},  // MEASURED ANGLE
1186     {"MediumSpace",      0x0205F},  // MEDIUM MATHEMATICAL SPACE
1187     {"Mellintrf",        0x02133},  // SCRIPT CAPITAL M
1188     {"Mfr",              0x1D510},  // MATHEMATICAL FRAKTUR CAPITAL M
1189     {"mfr",              0x1D52A},  // MATHEMATICAL FRAKTUR SMALL M
1190     {"Mgr",              0x0039C},  // GREEK CAPITAL LETTER MU
1191     {"mgr",              0x003BC},  // GREEK SMALL LETTER MU
1192     {"mho",              0x02127},  // INVERTED OHM SIGN
1193     {"micro",            0x000B5},  // MICRO SIGN
1194     {"mid",              0x02223},  // DIVIDES
1195     {"midast",           0x0002A},  // ASTERISK
1196     {"midcir",           0x02AF0},  // VERTICAL LINE WITH CIRCLE BELOW
1197     {"middot",           0x000B7},  // MIDDLE DOT
1198     {"minus",            0x02212},  // MINUS SIGN
1199     {"minusb",           0x0229F},  // SQUARED MINUS
1200     {"minusd",           0x02238},  // DOT MINUS
1201     {"minusdu",          0x02A2A},  // MINUS SIGN WITH DOT BELOW
1202     {"MinusPlus",        0x02213},  // MINUS-OR-PLUS SIGN
1203     {"mlcp",             0x02ADB},  // TRANSVERSAL INTERSECTION
1204     {"mldr",             0x02026},  // HORIZONTAL ELLIPSIS
1205     {"mnplus",           0x02213},  // MINUS-OR-PLUS SIGN
1206     {"models",           0x022A7},  // MODELS
1207     {"Mopf",             0x1D544},  // MATHEMATICAL DOUBLE-STRUCK CAPITAL M
1208     {"mopf",             0x1D55E},  // MATHEMATICAL DOUBLE-STRUCK SMALL M
1209     {"mp",               0x02213},  // MINUS-OR-PLUS SIGN
1210     {"Mscr",             0x02133},  // SCRIPT CAPITAL M
1211     {"mscr",             0x1D4C2},  // MATHEMATICAL SCRIPT SMALL M
1212     {"mstpos",           0x0223E},  // INVERTED LAZY S
1213     {"Mu",               0x0039C},  // GREEK CAPITAL LETTER MU
1214     {"mu",               0x003BC},  // GREEK SMALL LETTER MU
1215     {"multimap",         0x022B8},  // MULTIMAP
1216     {"mumap",            0x022B8},  // MULTIMAP
1217 ];
1218 
1219 immutable NameId[] namesN =
1220 [
1221     {"nabla",            0x02207},  // NABLA
1222     {"Nacute",           0x00143},  // LATIN CAPITAL LETTER N WITH ACUTE
1223     {"nacute",           0x00144},  // LATIN SMALL LETTER N WITH ACUTE
1224     {"nang",             0x02220, 0x020D2},  // ANGLE with vertical line
1225     {"nap",              0x02249},  // NOT ALMOST EQUAL TO
1226     {"napE",             0x02A70, 0x00338},  // APPROXIMATELY EQUAL OR EQUAL TO with slash
1227     {"napid",            0x0224B, 0x00338},  // TRIPLE TILDE with slash
1228     {"napos",            0x00149},  // LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
1229     {"napprox",          0x02249},  // NOT ALMOST EQUAL TO
1230     {"natur",            0x0266E},  // MUSIC NATURAL SIGN
1231     {"natural",          0x0266E},  // MUSIC NATURAL SIGN
1232     {"naturals",         0x02115},  // DOUBLE-STRUCK CAPITAL N
1233     {"nbsp",             0x000A0},  // NO-BREAK SPACE
1234     {"nbump",            0x0224E, 0x00338},  // GEOMETRICALLY EQUIVALENT TO with slash
1235     {"nbumpe",           0x0224F, 0x00338},  // DIFFERENCE BETWEEN with slash
1236     {"ncap",             0x02A43},  // INTERSECTION WITH OVERBAR
1237     {"Ncaron",           0x00147},  // LATIN CAPITAL LETTER N WITH CARON
1238     {"ncaron",           0x00148},  // LATIN SMALL LETTER N WITH CARON
1239     {"Ncedil",           0x00145},  // LATIN CAPITAL LETTER N WITH CEDILLA
1240     {"ncedil",           0x00146},  // LATIN SMALL LETTER N WITH CEDILLA
1241     {"ncong",            0x02247},  // NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
1242     {"ncongdot",         0x02A6D, 0x00338},  // CONGRUENT WITH DOT ABOVE with slash
1243     {"ncup",             0x02A42},  // UNION WITH OVERBAR
1244     {"Ncy",              0x0041D},  // CYRILLIC CAPITAL LETTER EN
1245     {"ncy",              0x0043D},  // CYRILLIC SMALL LETTER EN
1246     {"ndash",            0x02013},  // EN DASH
1247     {"ne",               0x02260},  // NOT EQUAL TO
1248     {"nearhk",           0x02924},  // NORTH EAST ARROW WITH HOOK
1249     {"nearr",            0x02197},  // NORTH EAST ARROW
1250     {"neArr",            0x021D7},  // NORTH EAST DOUBLE ARROW
1251     {"nearrow",          0x02197},  // NORTH EAST ARROW
1252     {"nedot",            0x02250, 0x00338},  // APPROACHES THE LIMIT with slash
1253     {"NegativeMediumSpace", 0x0200B},  // ZERO WIDTH SPACE
1254     {"NegativeThickSpace", 0x0200B},  // ZERO WIDTH SPACE
1255     {"NegativeThinSpace", 0x0200B},  // ZERO WIDTH SPACE
1256     {"NegativeVeryThinSpace", 0x0200B},  // ZERO WIDTH SPACE
1257     {"nequiv",           0x02262},  // NOT IDENTICAL TO
1258     {"nesear",           0x02928},  // NORTH EAST ARROW AND SOUTH EAST ARROW
1259     {"nesim",            0x02242, 0x00338},  // MINUS TILDE with slash
1260     {"NestedGreaterGreater", 0x0226B},  // MUCH GREATER-THAN
1261     {"NestedLessLess",   0x0226A},  // MUCH LESS-THAN
1262     {"NewLine",          0x0000A},  // LINE FEED (LF)
1263     {"nexist",           0x02204},  // THERE DOES NOT EXIST
1264     {"nexists",          0x02204},  // THERE DOES NOT EXIST
1265     {"Nfr",              0x1D511},  // MATHEMATICAL FRAKTUR CAPITAL N
1266     {"nfr",              0x1D52B},  // MATHEMATICAL FRAKTUR SMALL N
1267     {"ngE",              0x02267, 0x00338},  // GREATER-THAN OVER EQUAL TO with slash
1268     {"nge",              0x02271},  // NEITHER GREATER-THAN NOR EQUAL TO
1269     {"ngeq",             0x02271},  // NEITHER GREATER-THAN NOR EQUAL TO
1270     {"ngeqq",            0x02267, 0x00338},  // GREATER-THAN OVER EQUAL TO with slash
1271     {"ngeqslant",        0x02A7E, 0x00338},  // GREATER-THAN OR SLANTED EQUAL TO with slash
1272     {"nges",             0x02A7E, 0x00338},  // GREATER-THAN OR SLANTED EQUAL TO with slash
1273     {"nGg",              0x022D9, 0x00338},  // VERY MUCH GREATER-THAN with slash
1274     {"Ngr",              0x0039D},  // GREEK CAPITAL LETTER NU
1275     {"ngr",              0x003BD},  // GREEK SMALL LETTER NU
1276     {"ngsim",            0x02275},  // NEITHER GREATER-THAN NOR EQUIVALENT TO
1277     {"nGt",              0x0226B, 0x020D2},  // MUCH GREATER THAN with vertical line
1278     {"ngt",              0x0226F},  // NOT GREATER-THAN
1279     {"ngtr",             0x0226F},  // NOT GREATER-THAN
1280     {"nGtv",             0x0226B, 0x00338},  // MUCH GREATER THAN with slash
1281     {"nharr",            0x021AE},  // LEFT RIGHT ARROW WITH STROKE
1282     {"nhArr",            0x021CE},  // LEFT RIGHT DOUBLE ARROW WITH STROKE
1283     {"nhpar",            0x02AF2},  // PARALLEL WITH HORIZONTAL STROKE
1284     {"ni",               0x0220B},  // CONTAINS AS MEMBER
1285     {"nis",              0x022FC},  // SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
1286     {"nisd",             0x022FA},  // CONTAINS WITH LONG HORIZONTAL STROKE
1287     {"niv",              0x0220B},  // CONTAINS AS MEMBER
1288     {"NJcy",             0x0040A},  // CYRILLIC CAPITAL LETTER NJE
1289     {"njcy",             0x0045A},  // CYRILLIC SMALL LETTER NJE
1290     {"nlarr",            0x0219A},  // LEFTWARDS ARROW WITH STROKE
1291     {"nlArr",            0x021CD},  // LEFTWARDS DOUBLE ARROW WITH STROKE
1292     {"nldr",             0x02025},  // TWO DOT LEADER
1293     {"nlE",              0x02266, 0x00338},  // LESS-THAN OVER EQUAL TO with slash
1294     {"nle",              0x02270},  // NEITHER LESS-THAN NOR EQUAL TO
1295     {"nleftarrow",       0x0219A},  // LEFTWARDS ARROW WITH STROKE
1296     {"nLeftarrow",       0x021CD},  // LEFTWARDS DOUBLE ARROW WITH STROKE
1297     {"nleftrightarrow",  0x021AE},  // LEFT RIGHT ARROW WITH STROKE
1298     {"nLeftrightarrow",  0x021CE},  // LEFT RIGHT DOUBLE ARROW WITH STROKE
1299     {"nleq",             0x02270},  // NEITHER LESS-THAN NOR EQUAL TO
1300     {"nleqq",            0x02266, 0x00338},  // LESS-THAN OVER EQUAL TO with slash
1301     {"nleqslant",        0x02A7D, 0x00338},  // LESS-THAN OR SLANTED EQUAL TO with slash
1302     {"nles",             0x02A7D, 0x00338},  // LESS-THAN OR SLANTED EQUAL TO with slash
1303     {"nless",            0x0226E},  // NOT LESS-THAN
1304     {"nLl",              0x022D8, 0x00338},  // VERY MUCH LESS-THAN with slash
1305     {"nlsim",            0x02274},  // NEITHER LESS-THAN NOR EQUIVALENT TO
1306     {"nLt",              0x0226A, 0x020D2},  // MUCH LESS THAN with vertical line
1307     {"nlt",              0x0226E},  // NOT LESS-THAN
1308     {"nltri",            0x022EA},  // NOT NORMAL SUBGROUP OF
1309     {"nltrie",           0x022EC},  // NOT NORMAL SUBGROUP OF OR EQUAL TO
1310     {"nLtv",             0x0226A, 0x00338},  // MUCH LESS THAN with slash
1311     {"nmid",             0x02224},  // DOES NOT DIVIDE
1312     {"NoBreak",          0x02060},  // WORD JOINER
1313     {"NonBreakingSpace", 0x000A0},  // NO-BREAK SPACE
1314     {"Nopf",             0x02115},  // DOUBLE-STRUCK CAPITAL N
1315     {"nopf",             0x1D55F},  // MATHEMATICAL DOUBLE-STRUCK SMALL N
1316     {"not",              0x000AC},  // NOT SIGN
1317     {"Not",              0x02AEC},  // DOUBLE STROKE NOT SIGN
1318     {"NotCongruent",     0x02262},  // NOT IDENTICAL TO
1319     {"NotCupCap",        0x0226D},  // NOT EQUIVALENT TO
1320     {"NotDoubleVerticalBar", 0x02226},  // NOT PARALLEL TO
1321     {"NotElement",       0x02209},  // NOT AN ELEMENT OF
1322     {"NotEqual",         0x02260},  // NOT EQUAL TO
1323     {"NotEqualTilde",    0x02242, 0x00338},  // MINUS TILDE with slash
1324     {"NotExists",        0x02204},  // THERE DOES NOT EXIST
1325     {"NotGreater",       0x0226F},  // NOT GREATER-THAN
1326     {"NotGreaterEqual",  0x02271},  // NEITHER GREATER-THAN NOR EQUAL TO
1327     {"NotGreaterFullEqual", 0x02267, 0x00338},  // GREATER-THAN OVER EQUAL TO with slash
1328     {"NotGreaterGreater", 0x0226B, 0x00338},  // MUCH GREATER THAN with slash
1329     {"NotGreaterLess",   0x02279},  // NEITHER GREATER-THAN NOR LESS-THAN
1330     {"NotGreaterSlantEqual", 0x02A7E, 0x00338},  // GREATER-THAN OR SLANTED EQUAL TO with slash
1331     {"NotGreaterTilde",  0x02275},  // NEITHER GREATER-THAN NOR EQUIVALENT TO
1332     {"NotHumpDownHump",  0x0224E, 0x00338},  // GEOMETRICALLY EQUIVALENT TO with slash
1333     {"NotHumpEqual",     0x0224F, 0x00338},  // DIFFERENCE BETWEEN with slash
1334     {"notin",            0x02209},  // NOT AN ELEMENT OF
1335     {"notindot",         0x022F5, 0x00338},  // ELEMENT OF WITH DOT ABOVE with slash
1336     {"notinE",           0x022F9, 0x00338},  // ELEMENT OF WITH TWO HORIZONTAL STROKES with slash
1337     {"notinva",          0x02209},  // NOT AN ELEMENT OF
1338     {"notinvb",          0x022F7},  // SMALL ELEMENT OF WITH OVERBAR
1339     {"notinvc",          0x022F6},  // ELEMENT OF WITH OVERBAR
1340     {"NotLeftTriangle",  0x022EA},  // NOT NORMAL SUBGROUP OF
1341     {"NotLeftTriangleBar", 0x029CF, 0x00338},  // LEFT TRIANGLE BESIDE VERTICAL BAR with slash
1342     {"NotLeftTriangleEqual", 0x022EC},  // NOT NORMAL SUBGROUP OF OR EQUAL TO
1343     {"NotLess",          0x0226E},  // NOT LESS-THAN
1344     {"NotLessEqual",     0x02270},  // NEITHER LESS-THAN NOR EQUAL TO
1345     {"NotLessGreater",   0x02278},  // NEITHER LESS-THAN NOR GREATER-THAN
1346     {"NotLessLess",      0x0226A, 0x00338},  // MUCH LESS THAN with slash
1347     {"NotLessSlantEqual", 0x02A7D, 0x00338},  // LESS-THAN OR SLANTED EQUAL TO with slash
1348     {"NotLessTilde",     0x02274},  // NEITHER LESS-THAN NOR EQUIVALENT TO
1349     {"NotNestedGreaterGreater", 0x02AA2, 0x00338},  // DOUBLE NESTED GREATER-THAN with slash
1350     {"NotNestedLessLess", 0x02AA1, 0x00338},  // DOUBLE NESTED LESS-THAN with slash
1351     {"notni",            0x0220C},  // DOES NOT CONTAIN AS MEMBER
1352     {"notniva",          0x0220C},  // DOES NOT CONTAIN AS MEMBER
1353     {"notnivb",          0x022FE},  // SMALL CONTAINS WITH OVERBAR
1354     {"notnivc",          0x022FD},  // CONTAINS WITH OVERBAR
1355     {"NotPrecedes",      0x02280},  // DOES NOT PRECEDE
1356     {"NotPrecedesEqual", 0x02AAF, 0x00338},  // PRECEDES ABOVE SINGLE-LINE EQUALS SIGN with slash
1357     {"NotPrecedesSlantEqual", 0x022E0},  // DOES NOT PRECEDE OR EQUAL
1358     {"NotReverseElement", 0x0220C},  // DOES NOT CONTAIN AS MEMBER
1359     {"NotRightTriangle", 0x022EB},  // DOES NOT CONTAIN AS NORMAL SUBGROUP
1360     {"NotRightTriangleBar", 0x029D0, 0x00338},  // VERTICAL BAR BESIDE RIGHT TRIANGLE with slash
1361     {"NotRightTriangleEqual", 0x022ED},  // DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
1362     {"NotSquareSubset",  0x0228F, 0x00338},  // SQUARE IMAGE OF with slash
1363     {"NotSquareSubsetEqual", 0x022E2},  // NOT SQUARE IMAGE OF OR EQUAL TO
1364     {"NotSquareSuperset", 0x02290, 0x00338},  // SQUARE ORIGINAL OF with slash
1365     {"NotSquareSupersetEqual", 0x022E3},  // NOT SQUARE ORIGINAL OF OR EQUAL TO
1366     {"NotSubset",        0x02282, 0x020D2},  // SUBSET OF with vertical line
1367     {"NotSubsetEqual",   0x02288},  // NEITHER A SUBSET OF NOR EQUAL TO
1368     {"NotSucceeds",      0x02281},  // DOES NOT SUCCEED
1369     {"NotSucceedsEqual", 0x02AB0, 0x00338},  // SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN with slash
1370     {"NotSucceedsSlantEqual", 0x022E1},  // DOES NOT SUCCEED OR EQUAL
1371     {"NotSucceedsTilde", 0x0227F, 0x00338},  // SUCCEEDS OR EQUIVALENT TO with slash
1372     {"NotSuperset",      0x02283, 0x020D2},  // SUPERSET OF with vertical line
1373     {"NotSupersetEqual", 0x02289},  // NEITHER A SUPERSET OF NOR EQUAL TO
1374     {"NotTilde",         0x02241},  // NOT TILDE
1375     {"NotTildeEqual",    0x02244},  // NOT ASYMPTOTICALLY EQUAL TO
1376     {"NotTildeFullEqual", 0x02247},  // NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
1377     {"NotTildeTilde",    0x02249},  // NOT ALMOST EQUAL TO
1378     {"NotVerticalBar",   0x02224},  // DOES NOT DIVIDE
1379     {"npar",             0x02226},  // NOT PARALLEL TO
1380     {"nparallel",        0x02226},  // NOT PARALLEL TO
1381     {"nparsl",           0x02AFD, 0x020E5},  // DOUBLE SOLIDUS OPERATOR with reverse slash
1382     {"npart",            0x02202, 0x00338},  // PARTIAL DIFFERENTIAL with slash
1383     {"npolint",          0x02A14},  // LINE INTEGRATION NOT INCLUDING THE POLE
1384     {"npr",              0x02280},  // DOES NOT PRECEDE
1385     {"nprcue",           0x022E0},  // DOES NOT PRECEDE OR EQUAL
1386     {"npre",             0x02AAF, 0x00338},  // PRECEDES ABOVE SINGLE-LINE EQUALS SIGN with slash
1387     {"nprec",            0x02280},  // DOES NOT PRECEDE
1388     {"npreceq",          0x02AAF, 0x00338},  // PRECEDES ABOVE SINGLE-LINE EQUALS SIGN with slash
1389     {"nrarr",            0x0219B},  // RIGHTWARDS ARROW WITH STROKE
1390     {"nrArr",            0x021CF},  // RIGHTWARDS DOUBLE ARROW WITH STROKE
1391     {"nrarrc",           0x02933, 0x00338},  // WAVE ARROW POINTING DIRECTLY RIGHT with slash
1392     {"nrarrw",           0x0219D, 0x00338},  // RIGHTWARDS WAVE ARROW with slash
1393     {"nrightarrow",      0x0219B},  // RIGHTWARDS ARROW WITH STROKE
1394     {"nRightarrow",      0x021CF},  // RIGHTWARDS DOUBLE ARROW WITH STROKE
1395     {"nrtri",            0x022EB},  // DOES NOT CONTAIN AS NORMAL SUBGROUP
1396     {"nrtrie",           0x022ED},  // DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
1397     {"nsc",              0x02281},  // DOES NOT SUCCEED
1398     {"nsccue",           0x022E1},  // DOES NOT SUCCEED OR EQUAL
1399     {"nsce",             0x02AB0, 0x00338},  // SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN with slash
1400     {"Nscr",             0x1D4A9},  // MATHEMATICAL SCRIPT CAPITAL N
1401     {"nscr",             0x1D4C3},  // MATHEMATICAL SCRIPT SMALL N
1402     {"nshortmid",        0x02224},  // DOES NOT DIVIDE
1403     {"nshortparallel",   0x02226},  // NOT PARALLEL TO
1404     {"nsim",             0x02241},  // NOT TILDE
1405     {"nsime",            0x02244},  // NOT ASYMPTOTICALLY EQUAL TO
1406     {"nsimeq",           0x02244},  // NOT ASYMPTOTICALLY EQUAL TO
1407     {"nsmid",            0x02224},  // DOES NOT DIVIDE
1408     {"nspar",            0x02226},  // NOT PARALLEL TO
1409     {"nsqsube",          0x022E2},  // NOT SQUARE IMAGE OF OR EQUAL TO
1410     {"nsqsupe",          0x022E3},  // NOT SQUARE ORIGINAL OF OR EQUAL TO
1411     {"nsub",             0x02284},  // NOT A SUBSET OF
1412     {"nsube",            0x02288},  // NEITHER A SUBSET OF NOR EQUAL TO
1413     {"nsubE",            0x02AC5, 0x00338},  // SUBSET OF ABOVE EQUALS SIGN with slash
1414     {"nsubset",          0x02282, 0x020D2},  // SUBSET OF with vertical line
1415     {"nsubseteq",        0x02288},  // NEITHER A SUBSET OF NOR EQUAL TO
1416     {"nsubseteqq",       0x02AC5, 0x00338},  // SUBSET OF ABOVE EQUALS SIGN with slash
1417     {"nsucc",            0x02281},  // DOES NOT SUCCEED
1418     {"nsucceq",          0x02AB0, 0x00338},  // SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN with slash
1419     {"nsup",             0x02285},  // NOT A SUPERSET OF
1420     {"nsupe",            0x02289},  // NEITHER A SUPERSET OF NOR EQUAL TO
1421     {"nsupE",            0x02AC6, 0x00338},  // SUPERSET OF ABOVE EQUALS SIGN with slash
1422     {"nsupset",          0x02283, 0x020D2},  // SUPERSET OF with vertical line
1423     {"nsupseteq",        0x02289},  // NEITHER A SUPERSET OF NOR EQUAL TO
1424     {"nsupseteqq",       0x02AC6, 0x00338},  // SUPERSET OF ABOVE EQUALS SIGN with slash
1425     {"ntgl",             0x02279},  // NEITHER GREATER-THAN NOR LESS-THAN
1426     {"Ntilde",           0x000D1},  // LATIN CAPITAL LETTER N WITH TILDE
1427     {"ntilde",           0x000F1},  // LATIN SMALL LETTER N WITH TILDE
1428     {"ntlg",             0x02278},  // NEITHER LESS-THAN NOR GREATER-THAN
1429     {"ntriangleleft",    0x022EA},  // NOT NORMAL SUBGROUP OF
1430     {"ntrianglelefteq",  0x022EC},  // NOT NORMAL SUBGROUP OF OR EQUAL TO
1431     {"ntriangleright",   0x022EB},  // DOES NOT CONTAIN AS NORMAL SUBGROUP
1432     {"ntrianglerighteq", 0x022ED},  // DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
1433     {"Nu",               0x0039D},  // GREEK CAPITAL LETTER NU
1434     {"nu",               0x003BD},  // GREEK SMALL LETTER NU
1435     {"num",              0x00023},  // NUMBER SIGN
1436     {"numero",           0x02116},  // NUMERO SIGN
1437     {"numsp",            0x02007},  // FIGURE SPACE
1438     {"nvap",             0x0224D, 0x020D2},  // EQUIVALENT TO with vertical line
1439     {"nvdash",           0x022AC},  // DOES NOT PROVE
1440     {"nvDash",           0x022AD},  // NOT TRUE
1441     {"nVdash",           0x022AE},  // DOES NOT FORCE
1442     {"nVDash",           0x022AF},  // NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
1443     {"nvge",             0x02265, 0x020D2},  // GREATER-THAN OR EQUAL TO with vertical line
1444     {"nvgt",             0x0003E, 0x020D2},  // GREATER-THAN SIGN with vertical line
1445     {"nvHarr",           0x02904},  // LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE
1446     {"nvinfin",          0x029DE},  // INFINITY NEGATED WITH VERTICAL BAR
1447     {"nvlArr",           0x02902},  // LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE
1448     {"nvle",             0x02264, 0x020D2},  // LESS-THAN OR EQUAL TO with vertical line
1449     {"nvlt",             0x0003C, 0x020D2},  // LESS-THAN SIGN with vertical line
1450     {"nvltrie",          0x022B4, 0x020D2},  // NORMAL SUBGROUP OF OR EQUAL TO with vertical line
1451     {"nvrArr",           0x02903},  // RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE
1452     {"nvrtrie",          0x022B5, 0x020D2},  // CONTAINS AS NORMAL SUBGROUP OR EQUAL TO with vertical line
1453     {"nvsim",            0x0223C, 0x020D2},  // TILDE OPERATOR with vertical line
1454     {"nwarhk",           0x02923},  // NORTH WEST ARROW WITH HOOK
1455     {"nwarr",            0x02196},  // NORTH WEST ARROW
1456     {"nwArr",            0x021D6},  // NORTH WEST DOUBLE ARROW
1457     {"nwarrow",          0x02196},  // NORTH WEST ARROW
1458     {"nwnear",           0x02927},  // NORTH WEST ARROW AND NORTH EAST ARROW
1459 ];
1460 
1461 immutable NameId[] namesO =
1462 [
1463     {"Oacgr",            0x0038C},  // GREEK CAPITAL LETTER OMICRON WITH TONOS
1464     {"oacgr",            0x003CC},  // GREEK SMALL LETTER OMICRON WITH TONOS
1465     {"Oacute",           0x000D3},  // LATIN CAPITAL LETTER O WITH ACUTE
1466     {"oacute",           0x000F3},  // LATIN SMALL LETTER O WITH ACUTE
1467     {"oast",             0x0229B},  // CIRCLED ASTERISK OPERATOR
1468     {"ocir",             0x0229A},  // CIRCLED RING OPERATOR
1469     {"Ocirc",            0x000D4},  // LATIN CAPITAL LETTER O WITH CIRCUMFLEX
1470     {"ocirc",            0x000F4},  // LATIN SMALL LETTER O WITH CIRCUMFLEX
1471     {"Ocy",              0x0041E},  // CYRILLIC CAPITAL LETTER O
1472     {"ocy",              0x0043E},  // CYRILLIC SMALL LETTER O
1473     {"odash",            0x0229D},  // CIRCLED DASH
1474     {"Odblac",           0x00150},  // LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
1475     {"odblac",           0x00151},  // LATIN SMALL LETTER O WITH DOUBLE ACUTE
1476     {"odiv",             0x02A38},  // CIRCLED DIVISION SIGN
1477     {"odot",             0x02299},  // CIRCLED DOT OPERATOR
1478     {"odsold",           0x029BC},  // CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN
1479     {"OElig",            0x00152},  // LATIN CAPITAL LIGATURE OE
1480     {"oelig",            0x00153},  // LATIN SMALL LIGATURE OE
1481     {"ofcir",            0x029BF},  // CIRCLED BULLET
1482     {"Ofr",              0x1D512},  // MATHEMATICAL FRAKTUR CAPITAL O
1483     {"ofr",              0x1D52C},  // MATHEMATICAL FRAKTUR SMALL O
1484     {"ogon",             0x002DB},  // OGONEK
1485     {"Ogr",              0x0039F},  // GREEK CAPITAL LETTER OMICRON
1486     {"ogr",              0x003BF},  // GREEK SMALL LETTER OMICRON
1487     {"Ograve",           0x000D2},  // LATIN CAPITAL LETTER O WITH GRAVE
1488     {"ograve",           0x000F2},  // LATIN SMALL LETTER O WITH GRAVE
1489     {"ogt",              0x029C1},  // CIRCLED GREATER-THAN
1490     {"OHacgr",           0x0038F},  // GREEK CAPITAL LETTER OMEGA WITH TONOS
1491     {"ohacgr",           0x003CE},  // GREEK SMALL LETTER OMEGA WITH TONOS
1492     {"ohbar",            0x029B5},  // CIRCLE WITH HORIZONTAL BAR
1493     {"OHgr",             0x003A9},  // GREEK CAPITAL LETTER OMEGA
1494     {"ohgr",             0x003C9},  // GREEK SMALL LETTER OMEGA
1495     {"ohm",              0x003A9},  // GREEK CAPITAL LETTER OMEGA
1496     {"oint",             0x0222E},  // CONTOUR INTEGRAL
1497     {"olarr",            0x021BA},  // ANTICLOCKWISE OPEN CIRCLE ARROW
1498     {"olcir",            0x029BE},  // CIRCLED WHITE BULLET
1499     {"olcross",          0x029BB},  // CIRCLE WITH SUPERIMPOSED X
1500     {"oline",            0x0203E},  // OVERLINE
1501     {"olt",              0x029C0},  // CIRCLED LESS-THAN
1502     {"Omacr",            0x0014C},  // LATIN CAPITAL LETTER O WITH MACRON
1503     {"omacr",            0x0014D},  // LATIN SMALL LETTER O WITH MACRON
1504     {"Omega",            0x003A9},  // GREEK CAPITAL LETTER OMEGA
1505     {"omega",            0x003C9},  // GREEK SMALL LETTER OMEGA
1506     {"Omicron",          0x0039F},  // GREEK CAPITAL LETTER OMICRON
1507     {"omicron",          0x003BF},  // GREEK SMALL LETTER OMICRON
1508     {"omid",             0x029B6},  // CIRCLED VERTICAL BAR
1509     {"ominus",           0x02296},  // CIRCLED MINUS
1510     {"Oopf",             0x1D546},  // MATHEMATICAL DOUBLE-STRUCK CAPITAL O
1511     {"oopf",             0x1D560},  // MATHEMATICAL DOUBLE-STRUCK SMALL O
1512     {"opar",             0x029B7},  // CIRCLED PARALLEL
1513     {"OpenCurlyDoubleQuote", 0x0201C},  // LEFT DOUBLE QUOTATION MARK
1514     {"OpenCurlyQuote",   0x02018},  // LEFT SINGLE QUOTATION MARK
1515     {"operp",            0x029B9},  // CIRCLED PERPENDICULAR
1516     {"oplus",            0x02295},  // CIRCLED PLUS
1517     {"or",               0x02228},  // LOGICAL OR
1518     {"Or",               0x02A54},  // DOUBLE LOGICAL OR
1519     {"orarr",            0x021BB},  // CLOCKWISE OPEN CIRCLE ARROW
1520     {"ord",              0x02A5D},  // LOGICAL OR WITH HORIZONTAL DASH
1521     {"order",            0x02134},  // SCRIPT SMALL O
1522     {"orderof",          0x02134},  // SCRIPT SMALL O
1523     {"ordf",             0x000AA},  // FEMININE ORDINAL INDICATOR
1524     {"ordm",             0x000BA},  // MASCULINE ORDINAL INDICATOR
1525     {"origof",           0x022B6},  // ORIGINAL OF
1526     {"oror",             0x02A56},  // TWO INTERSECTING LOGICAL OR
1527     {"orslope",          0x02A57},  // SLOPING LARGE OR
1528     {"orv",              0x02A5B},  // LOGICAL OR WITH MIDDLE STEM
1529     {"oS",               0x024C8},  // CIRCLED LATIN CAPITAL LETTER S
1530     {"oscr",             0x02134},  // SCRIPT SMALL O
1531     {"Oscr",             0x1D4AA},  // MATHEMATICAL SCRIPT CAPITAL O
1532     {"Oslash",           0x000D8},  // LATIN CAPITAL LETTER O WITH STROKE
1533     {"oslash",           0x000F8},  // LATIN SMALL LETTER O WITH STROKE
1534     {"osol",             0x02298},  // CIRCLED DIVISION SLASH
1535     {"Otilde",           0x000D5},  // LATIN CAPITAL LETTER O WITH TILDE
1536     {"otilde",           0x000F5},  // LATIN SMALL LETTER O WITH TILDE
1537     {"otimes",           0x02297},  // CIRCLED TIMES
1538     {"Otimes",           0x02A37},  // MULTIPLICATION SIGN IN DOUBLE CIRCLE
1539     {"otimesas",         0x02A36},  // CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT
1540     {"Ouml",             0x000D6},  // LATIN CAPITAL LETTER O WITH DIAERESIS
1541     {"ouml",             0x000F6},  // LATIN SMALL LETTER O WITH DIAERESIS
1542     {"ovbar",            0x0233D},  // APL FUNCTIONAL SYMBOL CIRCLE STILE
1543     {"OverBar",          0x0203E},  // OVERLINE
1544     {"OverBrace",        0x023DE},  // TOP CURLY BRACKET
1545     {"OverBracket",      0x023B4},  // TOP SQUARE BRACKET
1546     {"OverParenthesis",  0x023DC},  // TOP PARENTHESIS
1547 ];
1548 
1549 immutable NameId[] namesP =
1550 [
1551     {"par",              0x02225},  // PARALLEL TO
1552     {"para",             0x000B6},  // PILCROW SIGN
1553     {"parallel",         0x02225},  // PARALLEL TO
1554     {"parsim",           0x02AF3},  // PARALLEL WITH TILDE OPERATOR
1555     {"parsl",            0x02AFD},  // DOUBLE SOLIDUS OPERATOR
1556     {"part",             0x02202},  // PARTIAL DIFFERENTIAL
1557     {"PartialD",         0x02202},  // PARTIAL DIFFERENTIAL
1558     {"Pcy",              0x0041F},  // CYRILLIC CAPITAL LETTER PE
1559     {"pcy",              0x0043F},  // CYRILLIC SMALL LETTER PE
1560     {"percnt",           0x00025},  // PERCENT SIGN
1561     {"period",           0x0002E},  // FULL STOP
1562     {"permil",           0x02030},  // PER MILLE SIGN
1563     {"perp",             0x022A5},  // UP TACK
1564     {"pertenk",          0x02031},  // PER TEN THOUSAND SIGN
1565     {"Pfr",              0x1D513},  // MATHEMATICAL FRAKTUR CAPITAL P
1566     {"pfr",              0x1D52D},  // MATHEMATICAL FRAKTUR SMALL P
1567     {"Pgr",              0x003A0},  // GREEK CAPITAL LETTER PI
1568     {"pgr",              0x003C0},  // GREEK SMALL LETTER PI
1569     {"PHgr",             0x003A6},  // GREEK CAPITAL LETTER PHI
1570     {"phgr",             0x003C6},  // GREEK SMALL LETTER PHI
1571     {"Phi",              0x003A6},  // GREEK CAPITAL LETTER PHI
1572     {"phi",              0x003C6},  // GREEK SMALL LETTER PHI
1573     {"phiv",             0x003D5},  // GREEK PHI SYMBOL
1574     {"phmmat",           0x02133},  // SCRIPT CAPITAL M
1575     {"phone",            0x0260E},  // BLACK TELEPHONE
1576     {"Pi",               0x003A0},  // GREEK CAPITAL LETTER PI
1577     {"pi",               0x003C0},  // GREEK SMALL LETTER PI
1578     {"pitchfork",        0x022D4},  // PITCHFORK
1579     {"piv",              0x003D6},  // GREEK PI SYMBOL
1580     {"planck",           0x0210F},  // PLANCK CONSTANT OVER TWO PI
1581     {"planckh",          0x0210E},  // PLANCK CONSTANT
1582     {"plankv",           0x0210F},  // PLANCK CONSTANT OVER TWO PI
1583     {"plus",             0x0002B},  // PLUS SIGN
1584     {"plusacir",         0x02A23},  // PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE
1585     {"plusb",            0x0229E},  // SQUARED PLUS
1586     {"pluscir",          0x02A22},  // PLUS SIGN WITH SMALL CIRCLE ABOVE
1587     {"plusdo",           0x02214},  // DOT PLUS
1588     {"plusdu",           0x02A25},  // PLUS SIGN WITH DOT BELOW
1589     {"pluse",            0x02A72},  // PLUS SIGN ABOVE EQUALS SIGN
1590     {"PlusMinus",        0x000B1},  // PLUS-MINUS SIGN
1591     {"plusmn",           0x000B1},  // PLUS-MINUS SIGN
1592     {"plussim",          0x02A26},  // PLUS SIGN WITH TILDE BELOW
1593     {"plustwo",          0x02A27},  // PLUS SIGN WITH SUBSCRIPT TWO
1594     {"pm",               0x000B1},  // PLUS-MINUS SIGN
1595     {"Poincareplane",    0x0210C},  // BLACK-LETTER CAPITAL H
1596     {"pointint",         0x02A15},  // INTEGRAL AROUND A POINT OPERATOR
1597     {"Popf",             0x02119},  // DOUBLE-STRUCK CAPITAL P
1598     {"popf",             0x1D561},  // MATHEMATICAL DOUBLE-STRUCK SMALL P
1599     {"pound",            0x000A3},  // POUND SIGN
1600     {"pr",               0x0227A},  // PRECEDES
1601     {"Pr",               0x02ABB},  // DOUBLE PRECEDES
1602     {"prap",             0x02AB7},  // PRECEDES ABOVE ALMOST EQUAL TO
1603     {"prcue",            0x0227C},  // PRECEDES OR EQUAL TO
1604     {"pre",              0x02AAF},  // PRECEDES ABOVE SINGLE-LINE EQUALS SIGN
1605     {"prE",              0x02AB3},  // PRECEDES ABOVE EQUALS SIGN
1606     {"prec",             0x0227A},  // PRECEDES
1607     {"precapprox",       0x02AB7},  // PRECEDES ABOVE ALMOST EQUAL TO
1608     {"preccurlyeq",      0x0227C},  // PRECEDES OR EQUAL TO
1609     {"Precedes",         0x0227A},  // PRECEDES
1610     {"PrecedesEqual",    0x02AAF},  // PRECEDES ABOVE SINGLE-LINE EQUALS SIGN
1611     {"PrecedesSlantEqual", 0x0227C},  // PRECEDES OR EQUAL TO
1612     {"PrecedesTilde",    0x0227E},  // PRECEDES OR EQUIVALENT TO
1613     {"preceq",           0x02AAF},  // PRECEDES ABOVE SINGLE-LINE EQUALS SIGN
1614     {"precnapprox",      0x02AB9},  // PRECEDES ABOVE NOT ALMOST EQUAL TO
1615     {"precneqq",         0x02AB5},  // PRECEDES ABOVE NOT EQUAL TO
1616     {"precnsim",         0x022E8},  // PRECEDES BUT NOT EQUIVALENT TO
1617     {"precsim",          0x0227E},  // PRECEDES OR EQUIVALENT TO
1618     {"prime",            0x02032},  // PRIME
1619     {"Prime",            0x02033},  // DOUBLE PRIME
1620     {"primes",           0x02119},  // DOUBLE-STRUCK CAPITAL P
1621     {"prnap",            0x02AB9},  // PRECEDES ABOVE NOT ALMOST EQUAL TO
1622     {"prnE",             0x02AB5},  // PRECEDES ABOVE NOT EQUAL TO
1623     {"prnsim",           0x022E8},  // PRECEDES BUT NOT EQUIVALENT TO
1624     {"prod",             0x0220F},  // N-ARY PRODUCT
1625     {"Product",          0x0220F},  // N-ARY PRODUCT
1626     {"profalar",         0x0232E},  // ALL AROUND-PROFILE
1627     {"profline",         0x02312},  // ARC
1628     {"profsurf",         0x02313},  // SEGMENT
1629     {"prop",             0x0221D},  // PROPORTIONAL TO
1630     {"Proportion",       0x02237},  // PROPORTION
1631     {"Proportional",     0x0221D},  // PROPORTIONAL TO
1632     {"propto",           0x0221D},  // PROPORTIONAL TO
1633     {"prsim",            0x0227E},  // PRECEDES OR EQUIVALENT TO
1634     {"prurel",           0x022B0},  // PRECEDES UNDER RELATION
1635     {"Pscr",             0x1D4AB},  // MATHEMATICAL SCRIPT CAPITAL P
1636     {"pscr",             0x1D4C5},  // MATHEMATICAL SCRIPT SMALL P
1637     {"PSgr",             0x003A8},  // GREEK CAPITAL LETTER PSI
1638     {"psgr",             0x003C8},  // GREEK SMALL LETTER PSI
1639     {"Psi",              0x003A8},  // GREEK CAPITAL LETTER PSI
1640     {"psi",              0x003C8},  // GREEK SMALL LETTER PSI
1641     {"puncsp",           0x02008},  // PUNCTUATION SPACE
1642 ];
1643 
1644 immutable NameId[] namesQ =
1645 [
1646     {"Qfr",              0x1D514},  // MATHEMATICAL FRAKTUR CAPITAL Q
1647     {"qfr",              0x1D52E},  // MATHEMATICAL FRAKTUR SMALL Q
1648     {"qint",             0x02A0C},  // QUADRUPLE INTEGRAL OPERATOR
1649     {"Qopf",             0x0211A},  // DOUBLE-STRUCK CAPITAL Q
1650     {"qopf",             0x1D562},  // MATHEMATICAL DOUBLE-STRUCK SMALL Q
1651     {"qprime",           0x02057},  // QUADRUPLE PRIME
1652     {"Qscr",             0x1D4AC},  // MATHEMATICAL SCRIPT CAPITAL Q
1653     {"qscr",             0x1D4C6},  // MATHEMATICAL SCRIPT SMALL Q
1654     {"quaternions",      0x0210D},  // DOUBLE-STRUCK CAPITAL H
1655     {"quatint",          0x02A16},  // QUATERNION INTEGRAL OPERATOR
1656     {"quest",            0x0003F},  // QUESTION MARK
1657     {"questeq",          0x0225F},  // QUESTIONED EQUAL TO
1658     {"quot",             0x00022},  // QUOTATION MARK
1659     {"QUOT",             0x00022},  // QUOTATION MARK
1660 ];
1661 
1662 immutable NameId[] namesR =
1663 [
1664     {"rAarr",            0x021DB},  // RIGHTWARDS TRIPLE ARROW
1665     {"race",             0x0223D, 0x00331},  // REVERSED TILDE with underline
1666     {"Racute",           0x00154},  // LATIN CAPITAL LETTER R WITH ACUTE
1667     {"racute",           0x00155},  // LATIN SMALL LETTER R WITH ACUTE
1668     {"radic",            0x0221A},  // SQUARE ROOT
1669     {"raemptyv",         0x029B3},  // EMPTY SET WITH RIGHT ARROW ABOVE
1670     {"rang",             0x027E9},  // MATHEMATICAL RIGHT ANGLE BRACKET
1671     {"Rang",             0x027EB},  // MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET
1672     {"rangd",            0x02992},  // RIGHT ANGLE BRACKET WITH DOT
1673     {"range",            0x029A5},  // REVERSED ANGLE WITH UNDERBAR
1674     {"rangle",           0x027E9},  // MATHEMATICAL RIGHT ANGLE BRACKET
1675     {"raquo",            0x000BB},  // RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
1676     {"rarr",             0x02192},  // RIGHTWARDS ARROW
1677     {"Rarr",             0x021A0},  // RIGHTWARDS TWO HEADED ARROW
1678     {"rArr",             0x021D2},  // RIGHTWARDS DOUBLE ARROW
1679     {"rarrap",           0x02975},  // RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO
1680     {"rarrb",            0x021E5},  // RIGHTWARDS ARROW TO BAR
1681     {"rarrbfs",          0x02920},  // RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND
1682     {"rarrc",            0x02933},  // WAVE ARROW POINTING DIRECTLY RIGHT
1683     {"rarrfs",           0x0291E},  // RIGHTWARDS ARROW TO BLACK DIAMOND
1684     {"rarrhk",           0x021AA},  // RIGHTWARDS ARROW WITH HOOK
1685     {"rarrlp",           0x021AC},  // RIGHTWARDS ARROW WITH LOOP
1686     {"rarrpl",           0x02945},  // RIGHTWARDS ARROW WITH PLUS BELOW
1687     {"rarrsim",          0x02974},  // RIGHTWARDS ARROW ABOVE TILDE OPERATOR
1688     {"rarrtl",           0x021A3},  // RIGHTWARDS ARROW WITH TAIL
1689     {"Rarrtl",           0x02916},  // RIGHTWARDS TWO-HEADED ARROW WITH TAIL
1690     {"rarrw",            0x0219D},  // RIGHTWARDS WAVE ARROW
1691     {"ratail",           0x0291A},  // RIGHTWARDS ARROW-TAIL
1692     {"rAtail",           0x0291C},  // RIGHTWARDS DOUBLE ARROW-TAIL
1693     {"ratio",            0x02236},  // RATIO
1694     {"rationals",        0x0211A},  // DOUBLE-STRUCK CAPITAL Q
1695     {"rbarr",            0x0290D},  // RIGHTWARDS DOUBLE DASH ARROW
1696     {"rBarr",            0x0290F},  // RIGHTWARDS TRIPLE DASH ARROW
1697     {"RBarr",            0x02910},  // RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW
1698     {"rbbrk",            0x02773},  // LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT
1699     {"rbrace",           0x0007D},  // RIGHT CURLY BRACKET
1700     {"rbrack",           0x0005D},  // RIGHT SQUARE BRACKET
1701     {"rbrke",            0x0298C},  // RIGHT SQUARE BRACKET WITH UNDERBAR
1702     {"rbrksld",          0x0298E},  // RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
1703     {"rbrkslu",          0x02990},  // RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER
1704     {"Rcaron",           0x00158},  // LATIN CAPITAL LETTER R WITH CARON
1705     {"rcaron",           0x00159},  // LATIN SMALL LETTER R WITH CARON
1706     {"Rcedil",           0x00156},  // LATIN CAPITAL LETTER R WITH CEDILLA
1707     {"rcedil",           0x00157},  // LATIN SMALL LETTER R WITH CEDILLA
1708     {"rceil",            0x02309},  // RIGHT CEILING
1709     {"rcub",             0x0007D},  // RIGHT CURLY BRACKET
1710     {"Rcy",              0x00420},  // CYRILLIC CAPITAL LETTER ER
1711     {"rcy",              0x00440},  // CYRILLIC SMALL LETTER ER
1712     {"rdca",             0x02937},  // ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS
1713     {"rdldhar",          0x02969},  // RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN
1714     {"rdquo",            0x0201D},  // RIGHT DOUBLE QUOTATION MARK
1715     {"rdquor",           0x0201D},  // RIGHT DOUBLE QUOTATION MARK
1716     {"rdsh",             0x021B3},  // DOWNWARDS ARROW WITH TIP RIGHTWARDS
1717     {"Re",               0x0211C},  // BLACK-LETTER CAPITAL R
1718     {"real",             0x0211C},  // BLACK-LETTER CAPITAL R
1719     {"realine",          0x0211B},  // SCRIPT CAPITAL R
1720     {"realpart",         0x0211C},  // BLACK-LETTER CAPITAL R
1721     {"reals",            0x0211D},  // DOUBLE-STRUCK CAPITAL R
1722     {"rect",             0x025AD},  // WHITE RECTANGLE
1723     {"reg",              0x000AE},  // REGISTERED SIGN
1724     {"REG",              0x000AE},  // REGISTERED SIGN
1725     {"ReverseElement",   0x0220B},  // CONTAINS AS MEMBER
1726     {"ReverseEquilibrium", 0x021CB},  // LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON
1727     {"ReverseUpEquilibrium", 0x0296F},  // DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT
1728     {"rfisht",           0x0297D},  // RIGHT FISH TAIL
1729     {"rfloor",           0x0230B},  // RIGHT FLOOR
1730     {"Rfr",              0x0211C},  // BLACK-LETTER CAPITAL R
1731     {"rfr",              0x1D52F},  // MATHEMATICAL FRAKTUR SMALL R
1732     {"Rgr",              0x003A1},  // GREEK CAPITAL LETTER RHO
1733     {"rgr",              0x003C1},  // GREEK SMALL LETTER RHO
1734     {"rHar",             0x02964},  // RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN
1735     {"rhard",            0x021C1},  // RIGHTWARDS HARPOON WITH BARB DOWNWARDS
1736     {"rharu",            0x021C0},  // RIGHTWARDS HARPOON WITH BARB UPWARDS
1737     {"rharul",           0x0296C},  // RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH
1738     {"Rho",              0x003A1},  // GREEK CAPITAL LETTER RHO
1739     {"rho",              0x003C1},  // GREEK SMALL LETTER RHO
1740     {"rhov",             0x003F1},  // GREEK RHO SYMBOL
1741     {"RightAngleBracket", 0x027E9},  // MATHEMATICAL RIGHT ANGLE BRACKET
1742     {"rightarrow",       0x02192},  // RIGHTWARDS ARROW
1743     {"RightArrow",       0x02192},  // RIGHTWARDS ARROW
1744     {"Rightarrow",       0x021D2},  // RIGHTWARDS DOUBLE ARROW
1745     {"RightArrowBar",    0x021E5},  // RIGHTWARDS ARROW TO BAR
1746     {"RightArrowLeftArrow", 0x021C4},  // RIGHTWARDS ARROW OVER LEFTWARDS ARROW
1747     {"rightarrowtail",   0x021A3},  // RIGHTWARDS ARROW WITH TAIL
1748     {"RightCeiling",     0x02309},  // RIGHT CEILING
1749     {"RightDoubleBracket", 0x027E7},  // MATHEMATICAL RIGHT WHITE SQUARE BRACKET
1750     {"RightDownTeeVector", 0x0295D},  // DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR
1751     {"RightDownVector",  0x021C2},  // DOWNWARDS HARPOON WITH BARB RIGHTWARDS
1752     {"RightDownVectorBar", 0x02955},  // DOWNWARDS HARPOON WITH BARB RIGHT TO BAR
1753     {"RightFloor",       0x0230B},  // RIGHT FLOOR
1754     {"rightharpoondown", 0x021C1},  // RIGHTWARDS HARPOON WITH BARB DOWNWARDS
1755     {"rightharpoonup",   0x021C0},  // RIGHTWARDS HARPOON WITH BARB UPWARDS
1756     {"rightleftarrows",  0x021C4},  // RIGHTWARDS ARROW OVER LEFTWARDS ARROW
1757     {"rightleftharpoons", 0x021CC},  // RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON
1758     {"rightrightarrows", 0x021C9},  // RIGHTWARDS PAIRED ARROWS
1759     {"rightsquigarrow",  0x0219D},  // RIGHTWARDS WAVE ARROW
1760     {"RightTee",         0x022A2},  // RIGHT TACK
1761     {"RightTeeArrow",    0x021A6},  // RIGHTWARDS ARROW FROM BAR
1762     {"RightTeeVector",   0x0295B},  // RIGHTWARDS HARPOON WITH BARB UP FROM BAR
1763     {"rightthreetimes",  0x022CC},  // RIGHT SEMIDIRECT PRODUCT
1764     {"RightTriangle",    0x022B3},  // CONTAINS AS NORMAL SUBGROUP
1765     {"RightTriangleBar", 0x029D0},  // VERTICAL BAR BESIDE RIGHT TRIANGLE
1766     {"RightTriangleEqual", 0x022B5},  // CONTAINS AS NORMAL SUBGROUP OR EQUAL TO
1767     {"RightUpDownVector", 0x0294F},  // UP BARB RIGHT DOWN BARB RIGHT HARPOON
1768     {"RightUpTeeVector", 0x0295C},  // UPWARDS HARPOON WITH BARB RIGHT FROM BAR
1769     {"RightUpVector",    0x021BE},  // UPWARDS HARPOON WITH BARB RIGHTWARDS
1770     {"RightUpVectorBar", 0x02954},  // UPWARDS HARPOON WITH BARB RIGHT TO BAR
1771     {"RightVector",      0x021C0},  // RIGHTWARDS HARPOON WITH BARB UPWARDS
1772     {"RightVectorBar",   0x02953},  // RIGHTWARDS HARPOON WITH BARB UP TO BAR
1773     {"ring",             0x002DA},  // RING ABOVE
1774     {"risingdotseq",     0x02253},  // IMAGE OF OR APPROXIMATELY EQUAL TO
1775     {"rlarr",            0x021C4},  // RIGHTWARDS ARROW OVER LEFTWARDS ARROW
1776     {"rlhar",            0x021CC},  // RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON
1777     {"rlm",              0x0200F},  // RIGHT-TO-LEFT MARK
1778     {"rmoust",           0x023B1},  // UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION
1779     {"rmoustache",       0x023B1},  // UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION
1780     {"rnmid",            0x02AEE},  // DOES NOT DIVIDE WITH REVERSED NEGATION SLASH
1781     {"roang",            0x027ED},  // MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET
1782     {"roarr",            0x021FE},  // RIGHTWARDS OPEN-HEADED ARROW
1783     {"robrk",            0x027E7},  // MATHEMATICAL RIGHT WHITE SQUARE BRACKET
1784     {"ropar",            0x02986},  // RIGHT WHITE PARENTHESIS
1785     {"Ropf",             0x0211D},  // DOUBLE-STRUCK CAPITAL R
1786     {"ropf",             0x1D563},  // MATHEMATICAL DOUBLE-STRUCK SMALL R
1787     {"roplus",           0x02A2E},  // PLUS SIGN IN RIGHT HALF CIRCLE
1788     {"rotimes",          0x02A35},  // MULTIPLICATION SIGN IN RIGHT HALF CIRCLE
1789     {"RoundImplies",     0x02970},  // RIGHT DOUBLE ARROW WITH ROUNDED HEAD
1790     {"rpar",             0x00029},  // RIGHT PARENTHESIS
1791     {"rpargt",           0x02994},  // RIGHT ARC GREATER-THAN BRACKET
1792     {"rppolint",         0x02A12},  // LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE
1793     {"rrarr",            0x021C9},  // RIGHTWARDS PAIRED ARROWS
1794     {"Rrightarrow",      0x021DB},  // RIGHTWARDS TRIPLE ARROW
1795     {"rsaquo",           0x0203A},  // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
1796     {"Rscr",             0x0211B},  // SCRIPT CAPITAL R
1797     {"rscr",             0x1D4C7},  // MATHEMATICAL SCRIPT SMALL R
1798     {"rsh",              0x021B1},  // UPWARDS ARROW WITH TIP RIGHTWARDS
1799     {"Rsh",              0x021B1},  // UPWARDS ARROW WITH TIP RIGHTWARDS
1800     {"rsqb",             0x0005D},  // RIGHT SQUARE BRACKET
1801     {"rsquo",            0x02019},  // RIGHT SINGLE QUOTATION MARK
1802     {"rsquor",           0x02019},  // RIGHT SINGLE QUOTATION MARK
1803     {"rthree",           0x022CC},  // RIGHT SEMIDIRECT PRODUCT
1804     {"rtimes",           0x022CA},  // RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT
1805     {"rtri",             0x025B9},  // WHITE RIGHT-POINTING SMALL TRIANGLE
1806     {"rtrie",            0x022B5},  // CONTAINS AS NORMAL SUBGROUP OR EQUAL TO
1807     {"rtrif",            0x025B8},  // BLACK RIGHT-POINTING SMALL TRIANGLE
1808     {"rtriltri",         0x029CE},  // RIGHT TRIANGLE ABOVE LEFT TRIANGLE
1809     {"RuleDelayed",      0x029F4},  // RULE-DELAYED
1810     {"ruluhar",          0x02968},  // RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP
1811     {"rx",               0x0211E},  // PRESCRIPTION TAKE
1812 ];
1813 
1814 immutable NameId[] namesS =
1815 [
1816     {"Sacute",           0x0015A},  // LATIN CAPITAL LETTER S WITH ACUTE
1817     {"sacute",           0x0015B},  // LATIN SMALL LETTER S WITH ACUTE
1818     {"sbquo",            0x0201A},  // SINGLE LOW-9 QUOTATION MARK
1819     {"sc",               0x0227B},  // SUCCEEDS
1820     {"Sc",               0x02ABC},  // DOUBLE SUCCEEDS
1821     {"scap",             0x02AB8},  // SUCCEEDS ABOVE ALMOST EQUAL TO
1822     {"Scaron",           0x00160},  // LATIN CAPITAL LETTER S WITH CARON
1823     {"scaron",           0x00161},  // LATIN SMALL LETTER S WITH CARON
1824     {"sccue",            0x0227D},  // SUCCEEDS OR EQUAL TO
1825     {"sce",              0x02AB0},  // SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN
1826     {"scE",              0x02AB4},  // SUCCEEDS ABOVE EQUALS SIGN
1827     {"Scedil",           0x0015E},  // LATIN CAPITAL LETTER S WITH CEDILLA
1828     {"scedil",           0x0015F},  // LATIN SMALL LETTER S WITH CEDILLA
1829     {"Scirc",            0x0015C},  // LATIN CAPITAL LETTER S WITH CIRCUMFLEX
1830     {"scirc",            0x0015D},  // LATIN SMALL LETTER S WITH CIRCUMFLEX
1831     {"scnap",            0x02ABA},  // SUCCEEDS ABOVE NOT ALMOST EQUAL TO
1832     {"scnE",             0x02AB6},  // SUCCEEDS ABOVE NOT EQUAL TO
1833     {"scnsim",           0x022E9},  // SUCCEEDS BUT NOT EQUIVALENT TO
1834     {"scpolint",         0x02A13},  // LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE
1835     {"scsim",            0x0227F},  // SUCCEEDS OR EQUIVALENT TO
1836     {"Scy",              0x00421},  // CYRILLIC CAPITAL LETTER ES
1837     {"scy",              0x00441},  // CYRILLIC SMALL LETTER ES
1838     {"sdot",             0x022C5},  // DOT OPERATOR
1839     {"sdotb",            0x022A1},  // SQUARED DOT OPERATOR
1840     {"sdote",            0x02A66},  // EQUALS SIGN WITH DOT BELOW
1841     {"searhk",           0x02925},  // SOUTH EAST ARROW WITH HOOK
1842     {"searr",            0x02198},  // SOUTH EAST ARROW
1843     {"seArr",            0x021D8},  // SOUTH EAST DOUBLE ARROW
1844     {"searrow",          0x02198},  // SOUTH EAST ARROW
1845     {"sect",             0x000A7},  // SECTION SIGN
1846     {"semi",             0x0003B},  // SEMICOLON
1847     {"seswar",           0x02929},  // SOUTH EAST ARROW AND SOUTH WEST ARROW
1848     {"setminus",         0x02216},  // SET MINUS
1849     {"setmn",            0x02216},  // SET MINUS
1850     {"sext",             0x02736},  // SIX POINTED BLACK STAR
1851     {"sfgr",             0x003C2},  // GREEK SMALL LETTER FINAL SIGMA
1852     {"Sfr",              0x1D516},  // MATHEMATICAL FRAKTUR CAPITAL S
1853     {"sfr",              0x1D530},  // MATHEMATICAL FRAKTUR SMALL S
1854     {"sfrown",           0x02322},  // FROWN
1855     {"Sgr",              0x003A3},  // GREEK CAPITAL LETTER SIGMA
1856     {"sgr",              0x003C3},  // GREEK SMALL LETTER SIGMA
1857     {"sharp",            0x0266F},  // MUSIC SHARP SIGN
1858     {"SHCHcy",           0x00429},  // CYRILLIC CAPITAL LETTER SHCHA
1859     {"shchcy",           0x00449},  // CYRILLIC SMALL LETTER SHCHA
1860     {"SHcy",             0x00428},  // CYRILLIC CAPITAL LETTER SHA
1861     {"shcy",             0x00448},  // CYRILLIC SMALL LETTER SHA
1862     {"ShortDownArrow",   0x02193},  // DOWNWARDS ARROW
1863     {"ShortLeftArrow",   0x02190},  // LEFTWARDS ARROW
1864     {"shortmid",         0x02223},  // DIVIDES
1865     {"shortparallel",    0x02225},  // PARALLEL TO
1866     {"ShortRightArrow",  0x02192},  // RIGHTWARDS ARROW
1867     {"ShortUpArrow",     0x02191},  // UPWARDS ARROW
1868     {"shy",              0x000AD},  // SOFT HYPHEN
1869     {"Sigma",            0x003A3},  // GREEK CAPITAL LETTER SIGMA
1870     {"sigma",            0x003C3},  // GREEK SMALL LETTER SIGMA
1871     {"sigmaf",           0x003C2},  // GREEK SMALL LETTER FINAL SIGMA
1872     {"sigmav",           0x003C2},  // GREEK SMALL LETTER FINAL SIGMA
1873     {"sim",              0x0223C},  // TILDE OPERATOR
1874     {"simdot",           0x02A6A},  // TILDE OPERATOR WITH DOT ABOVE
1875     {"sime",             0x02243},  // ASYMPTOTICALLY EQUAL TO
1876     {"simeq",            0x02243},  // ASYMPTOTICALLY EQUAL TO
1877     {"simg",             0x02A9E},  // SIMILAR OR GREATER-THAN
1878     {"simgE",            0x02AA0},  // SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN
1879     {"siml",             0x02A9D},  // SIMILAR OR LESS-THAN
1880     {"simlE",            0x02A9F},  // SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN
1881     {"simne",            0x02246},  // APPROXIMATELY BUT NOT ACTUALLY EQUAL TO
1882     {"simplus",          0x02A24},  // PLUS SIGN WITH TILDE ABOVE
1883     {"simrarr",          0x02972},  // TILDE OPERATOR ABOVE RIGHTWARDS ARROW
1884     {"slarr",            0x02190},  // LEFTWARDS ARROW
1885     {"SmallCircle",      0x02218},  // RING OPERATOR
1886     {"smallsetminus",    0x02216},  // SET MINUS
1887     {"smashp",           0x02A33},  // SMASH PRODUCT
1888     {"smeparsl",         0x029E4},  // EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE
1889     {"smid",             0x02223},  // DIVIDES
1890     {"smile",            0x02323},  // SMILE
1891     {"smt",              0x02AAA},  // SMALLER THAN
1892     {"smte",             0x02AAC},  // SMALLER THAN OR EQUAL TO
1893     {"smtes",            0x02AAC, 0x0FE00},  // SMALLER THAN OR slanted EQUAL
1894     {"SOFTcy",           0x0042C},  // CYRILLIC CAPITAL LETTER SOFT SIGN
1895     {"softcy",           0x0044C},  // CYRILLIC SMALL LETTER SOFT SIGN
1896     {"sol",              0x0002F},  // SOLIDUS
1897     {"solb",             0x029C4},  // SQUARED RISING DIAGONAL SLASH
1898     {"solbar",           0x0233F},  // APL FUNCTIONAL SYMBOL SLASH BAR
1899     {"Sopf",             0x1D54A},  // MATHEMATICAL DOUBLE-STRUCK CAPITAL S
1900     {"sopf",             0x1D564},  // MATHEMATICAL DOUBLE-STRUCK SMALL S
1901     {"spades",           0x02660},  // BLACK SPADE SUIT
1902     {"spadesuit",        0x02660},  // BLACK SPADE SUIT
1903     {"spar",             0x02225},  // PARALLEL TO
1904     {"sqcap",            0x02293},  // SQUARE CAP
1905     {"sqcaps",           0x02293, 0x0FE00},  // SQUARE CAP with serifs
1906     {"sqcup",            0x02294},  // SQUARE CUP
1907     {"sqcups",           0x02294, 0x0FE00},  // SQUARE CUP with serifs
1908     {"Sqrt",             0x0221A},  // SQUARE ROOT
1909     {"sqsub",            0x0228F},  // SQUARE IMAGE OF
1910     {"sqsube",           0x02291},  // SQUARE IMAGE OF OR EQUAL TO
1911     {"sqsubset",         0x0228F},  // SQUARE IMAGE OF
1912     {"sqsubseteq",       0x02291},  // SQUARE IMAGE OF OR EQUAL TO
1913     {"sqsup",            0x02290},  // SQUARE ORIGINAL OF
1914     {"sqsupe",           0x02292},  // SQUARE ORIGINAL OF OR EQUAL TO
1915     {"sqsupset",         0x02290},  // SQUARE ORIGINAL OF
1916     {"sqsupseteq",       0x02292},  // SQUARE ORIGINAL OF OR EQUAL TO
1917     {"squ",              0x025A1},  // WHITE SQUARE
1918     {"square",           0x025A1},  // WHITE SQUARE
1919     {"Square",           0x025A1},  // WHITE SQUARE
1920     {"SquareIntersection", 0x02293},  // SQUARE CAP
1921     {"SquareSubset",     0x0228F},  // SQUARE IMAGE OF
1922     {"SquareSubsetEqual", 0x02291},  // SQUARE IMAGE OF OR EQUAL TO
1923     {"SquareSuperset",   0x02290},  // SQUARE ORIGINAL OF
1924     {"SquareSupersetEqual", 0x02292},  // SQUARE ORIGINAL OF OR EQUAL TO
1925     {"SquareUnion",      0x02294},  // SQUARE CUP
1926     {"squarf",           0x025AA},  // BLACK SMALL SQUARE
1927     {"squf",             0x025AA},  // BLACK SMALL SQUARE
1928     {"srarr",            0x02192},  // RIGHTWARDS ARROW
1929     {"Sscr",             0x1D4AE},  // MATHEMATICAL SCRIPT CAPITAL S
1930     {"sscr",             0x1D4C8},  // MATHEMATICAL SCRIPT SMALL S
1931     {"ssetmn",           0x02216},  // SET MINUS
1932     {"ssmile",           0x02323},  // SMILE
1933     {"sstarf",           0x022C6},  // STAR OPERATOR
1934     {"Star",             0x022C6},  // STAR OPERATOR
1935     {"star",             0x02606},  // WHITE STAR
1936     {"starf",            0x02605},  // BLACK STAR
1937     {"straightepsilon",  0x003F5},  // GREEK LUNATE EPSILON SYMBOL
1938     {"straightphi",      0x003D5},  // GREEK PHI SYMBOL
1939     {"strns",            0x000AF},  // MACRON
1940     {"sub",              0x02282},  // SUBSET OF
1941     {"Sub",              0x022D0},  // DOUBLE SUBSET
1942     {"subdot",           0x02ABD},  // SUBSET WITH DOT
1943     {"sube",             0x02286},  // SUBSET OF OR EQUAL TO
1944     {"subE",             0x02AC5},  // SUBSET OF ABOVE EQUALS SIGN
1945     {"subedot",          0x02AC3},  // SUBSET OF OR EQUAL TO WITH DOT ABOVE
1946     {"submult",          0x02AC1},  // SUBSET WITH MULTIPLICATION SIGN BELOW
1947     {"subne",            0x0228A},  // SUBSET OF WITH NOT EQUAL TO
1948     {"subnE",            0x02ACB},  // SUBSET OF ABOVE NOT EQUAL TO
1949     {"subplus",          0x02ABF},  // SUBSET WITH PLUS SIGN BELOW
1950     {"subrarr",          0x02979},  // SUBSET ABOVE RIGHTWARDS ARROW
1951     {"subset",           0x02282},  // SUBSET OF
1952     {"Subset",           0x022D0},  // DOUBLE SUBSET
1953     {"subseteq",         0x02286},  // SUBSET OF OR EQUAL TO
1954     {"subseteqq",        0x02AC5},  // SUBSET OF ABOVE EQUALS SIGN
1955     {"SubsetEqual",      0x02286},  // SUBSET OF OR EQUAL TO
1956     {"subsetneq",        0x0228A},  // SUBSET OF WITH NOT EQUAL TO
1957     {"subsetneqq",       0x02ACB},  // SUBSET OF ABOVE NOT EQUAL TO
1958     {"subsim",           0x02AC7},  // SUBSET OF ABOVE TILDE OPERATOR
1959     {"subsub",           0x02AD5},  // SUBSET ABOVE SUBSET
1960     {"subsup",           0x02AD3},  // SUBSET ABOVE SUPERSET
1961     {"succ",             0x0227B},  // SUCCEEDS
1962     {"succapprox",       0x02AB8},  // SUCCEEDS ABOVE ALMOST EQUAL TO
1963     {"succcurlyeq",      0x0227D},  // SUCCEEDS OR EQUAL TO
1964     {"Succeeds",         0x0227B},  // SUCCEEDS
1965     {"SucceedsEqual",    0x02AB0},  // SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN
1966     {"SucceedsSlantEqual", 0x0227D},  // SUCCEEDS OR EQUAL TO
1967     {"SucceedsTilde",    0x0227F},  // SUCCEEDS OR EQUIVALENT TO
1968     {"succeq",           0x02AB0},  // SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN
1969     {"succnapprox",      0x02ABA},  // SUCCEEDS ABOVE NOT ALMOST EQUAL TO
1970     {"succneqq",         0x02AB6},  // SUCCEEDS ABOVE NOT EQUAL TO
1971     {"succnsim",         0x022E9},  // SUCCEEDS BUT NOT EQUIVALENT TO
1972     {"succsim",          0x0227F},  // SUCCEEDS OR EQUIVALENT TO
1973     {"SuchThat",         0x0220B},  // CONTAINS AS MEMBER
1974     {"sum",              0x02211},  // N-ARY SUMMATION
1975     {"Sum",              0x02211},  // N-ARY SUMMATION
1976     {"sung",             0x0266A},  // EIGHTH NOTE
1977     {"sup",              0x02283},  // SUPERSET OF
1978     {"Sup",              0x022D1},  // DOUBLE SUPERSET
1979     {"sup1",             0x000B9},  // SUPERSCRIPT ONE
1980     {"sup2",             0x000B2},  // SUPERSCRIPT TWO
1981     {"sup3",             0x000B3},  // SUPERSCRIPT THREE
1982     {"supdot",           0x02ABE},  // SUPERSET WITH DOT
1983     {"supdsub",          0x02AD8},  // SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET
1984     {"supe",             0x02287},  // SUPERSET OF OR EQUAL TO
1985     {"supE",             0x02AC6},  // SUPERSET OF ABOVE EQUALS SIGN
1986     {"supedot",          0x02AC4},  // SUPERSET OF OR EQUAL TO WITH DOT ABOVE
1987     {"Superset",         0x02283},  // SUPERSET OF
1988     {"SupersetEqual",    0x02287},  // SUPERSET OF OR EQUAL TO
1989     {"suphsol",          0x027C9},  // SUPERSET PRECEDING SOLIDUS
1990     {"suphsub",          0x02AD7},  // SUPERSET BESIDE SUBSET
1991     {"suplarr",          0x0297B},  // SUPERSET ABOVE LEFTWARDS ARROW
1992     {"supmult",          0x02AC2},  // SUPERSET WITH MULTIPLICATION SIGN BELOW
1993     {"supne",            0x0228B},  // SUPERSET OF WITH NOT EQUAL TO
1994     {"supnE",            0x02ACC},  // SUPERSET OF ABOVE NOT EQUAL TO
1995     {"supplus",          0x02AC0},  // SUPERSET WITH PLUS SIGN BELOW
1996     {"supset",           0x02283},  // SUPERSET OF
1997     {"Supset",           0x022D1},  // DOUBLE SUPERSET
1998     {"supseteq",         0x02287},  // SUPERSET OF OR EQUAL TO
1999     {"supseteqq",        0x02AC6},  // SUPERSET OF ABOVE EQUALS SIGN
2000     {"supsetneq",        0x0228B},  // SUPERSET OF WITH NOT EQUAL TO
2001     {"supsetneqq",       0x02ACC},  // SUPERSET OF ABOVE NOT EQUAL TO
2002     {"supsim",           0x02AC8},  // SUPERSET OF ABOVE TILDE OPERATOR
2003     {"supsub",           0x02AD4},  // SUPERSET ABOVE SUBSET
2004     {"supsup",           0x02AD6},  // SUPERSET ABOVE SUPERSET
2005     {"swarhk",           0x02926},  // SOUTH WEST ARROW WITH HOOK
2006     {"swarr",            0x02199},  // SOUTH WEST ARROW
2007     {"swArr",            0x021D9},  // SOUTH WEST DOUBLE ARROW
2008     {"swarrow",          0x02199},  // SOUTH WEST ARROW
2009     {"swnwar",           0x0292A},  // SOUTH WEST ARROW AND NORTH WEST ARROW
2010     {"szlig",            0x000DF},  // LATIN SMALL LETTER SHARP S
2011 ];
2012 
2013 immutable NameId[] namesT =
2014 [
2015     {"Tab",              0x00009},  // CHARACTER TABULATION
2016     {"target",           0x02316},  // POSITION INDICATOR
2017     {"Tau",              0x003A4},  // GREEK CAPITAL LETTER TAU
2018     {"tau",              0x003C4},  // GREEK SMALL LETTER TAU
2019     {"tbrk",             0x023B4},  // TOP SQUARE BRACKET
2020     {"Tcaron",           0x00164},  // LATIN CAPITAL LETTER T WITH CARON
2021     {"tcaron",           0x00165},  // LATIN SMALL LETTER T WITH CARON
2022     {"Tcedil",           0x00162},  // LATIN CAPITAL LETTER T WITH CEDILLA
2023     {"tcedil",           0x00163},  // LATIN SMALL LETTER T WITH CEDILLA
2024     {"Tcy",              0x00422},  // CYRILLIC CAPITAL LETTER TE
2025     {"tcy",              0x00442},  // CYRILLIC SMALL LETTER TE
2026     {"tdot",             0x020DB},  // COMBINING THREE DOTS ABOVE
2027     {"telrec",           0x02315},  // TELEPHONE RECORDER
2028     {"Tfr",              0x1D517},  // MATHEMATICAL FRAKTUR CAPITAL T
2029     {"tfr",              0x1D531},  // MATHEMATICAL FRAKTUR SMALL T
2030     {"Tgr",              0x003A4},  // GREEK CAPITAL LETTER TAU
2031     {"tgr",              0x003C4},  // GREEK SMALL LETTER TAU
2032     {"there4",           0x02234},  // THEREFORE
2033     {"therefore",        0x02234},  // THEREFORE
2034     {"Therefore",        0x02234},  // THEREFORE
2035     {"Theta",            0x00398},  // GREEK CAPITAL LETTER THETA
2036     {"theta",            0x003B8},  // GREEK SMALL LETTER THETA
2037     {"thetasym",         0x003D1},  // GREEK THETA SYMBOL
2038     {"thetav",           0x003D1},  // GREEK THETA SYMBOL
2039     {"THgr",             0x00398},  // GREEK CAPITAL LETTER THETA
2040     {"thgr",             0x003B8},  // GREEK SMALL LETTER THETA
2041     {"thickapprox",      0x02248},  // ALMOST EQUAL TO
2042     {"thicksim",         0x0223C},  // TILDE OPERATOR
2043     {"ThickSpace",       0x0205F, 0x0200A},  // space of width 5/18 em
2044     {"thinsp",           0x02009},  // THIN SPACE
2045     {"ThinSpace",        0x02009},  // THIN SPACE
2046     {"thkap",            0x02248},  // ALMOST EQUAL TO
2047     {"thksim",           0x0223C},  // TILDE OPERATOR
2048     {"THORN",            0x000DE},  // LATIN CAPITAL LETTER THORN
2049     {"thorn",            0x000FE},  // LATIN SMALL LETTER THORN
2050     {"tilde",            0x002DC},  // SMALL TILDE
2051     {"Tilde",            0x0223C},  // TILDE OPERATOR
2052     {"TildeEqual",       0x02243},  // ASYMPTOTICALLY EQUAL TO
2053     {"TildeFullEqual",   0x02245},  // APPROXIMATELY EQUAL TO
2054     {"TildeTilde",       0x02248},  // ALMOST EQUAL TO
2055     {"times",            0x000D7},  // MULTIPLICATION SIGN
2056     {"timesb",           0x022A0},  // SQUARED TIMES
2057     {"timesbar",         0x02A31},  // MULTIPLICATION SIGN WITH UNDERBAR
2058     {"timesd",           0x02A30},  // MULTIPLICATION SIGN WITH DOT ABOVE
2059     {"tint",             0x0222D},  // TRIPLE INTEGRAL
2060     {"toea",             0x02928},  // NORTH EAST ARROW AND SOUTH EAST ARROW
2061     {"top",              0x022A4},  // DOWN TACK
2062     {"topbot",           0x02336},  // APL FUNCTIONAL SYMBOL I-BEAM
2063     {"topcir",           0x02AF1},  // DOWN TACK WITH CIRCLE BELOW
2064     {"Topf",             0x1D54B},  // MATHEMATICAL DOUBLE-STRUCK CAPITAL T
2065     {"topf",             0x1D565},  // MATHEMATICAL DOUBLE-STRUCK SMALL T
2066     {"topfork",          0x02ADA},  // PITCHFORK WITH TEE TOP
2067     {"tosa",             0x02929},  // SOUTH EAST ARROW AND SOUTH WEST ARROW
2068     {"tprime",           0x02034},  // TRIPLE PRIME
2069     {"trade",            0x02122},  // TRADE MARK SIGN
2070     {"TRADE",            0x02122},  // TRADE MARK SIGN
2071     {"triangle",         0x025B5},  // WHITE UP-POINTING SMALL TRIANGLE
2072     {"triangledown",     0x025BF},  // WHITE DOWN-POINTING SMALL TRIANGLE
2073     {"triangleleft",     0x025C3},  // WHITE LEFT-POINTING SMALL TRIANGLE
2074     {"trianglelefteq",   0x022B4},  // NORMAL SUBGROUP OF OR EQUAL TO
2075     {"triangleq",        0x0225C},  // DELTA EQUAL TO
2076     {"triangleright",    0x025B9},  // WHITE RIGHT-POINTING SMALL TRIANGLE
2077     {"trianglerighteq",  0x022B5},  // CONTAINS AS NORMAL SUBGROUP OR EQUAL TO
2078     {"tridot",           0x025EC},  // WHITE UP-POINTING TRIANGLE WITH DOT
2079     {"trie",             0x0225C},  // DELTA EQUAL TO
2080     {"triminus",         0x02A3A},  // MINUS SIGN IN TRIANGLE
2081     {"TripleDot",        0x020DB},  // COMBINING THREE DOTS ABOVE
2082     {"triplus",          0x02A39},  // PLUS SIGN IN TRIANGLE
2083     {"trisb",            0x029CD},  // TRIANGLE WITH SERIFS AT BOTTOM
2084     {"tritime",          0x02A3B},  // MULTIPLICATION SIGN IN TRIANGLE
2085     {"trpezium",         0x023E2},  // WHITE TRAPEZIUM
2086     {"Tscr",             0x1D4AF},  // MATHEMATICAL SCRIPT CAPITAL T
2087     {"tscr",             0x1D4C9},  // MATHEMATICAL SCRIPT SMALL T
2088     {"TScy",             0x00426},  // CYRILLIC CAPITAL LETTER TSE
2089     {"tscy",             0x00446},  // CYRILLIC SMALL LETTER TSE
2090     {"TSHcy",            0x0040B},  // CYRILLIC CAPITAL LETTER TSHE
2091     {"tshcy",            0x0045B},  // CYRILLIC SMALL LETTER TSHE
2092     {"Tstrok",           0x00166},  // LATIN CAPITAL LETTER T WITH STROKE
2093     {"tstrok",           0x00167},  // LATIN SMALL LETTER T WITH STROKE
2094     {"twixt",            0x0226C},  // BETWEEN
2095     {"twoheadleftarrow", 0x0219E},  // LEFTWARDS TWO HEADED ARROW
2096     {"twoheadrightarrow", 0x021A0},  // RIGHTWARDS TWO HEADED ARROW
2097 ];
2098 
2099 immutable NameId[] namesU =
2100 [
2101     {"Uacgr",            0x0038E},  // GREEK CAPITAL LETTER UPSILON WITH TONOS
2102     {"uacgr",            0x003CD},  // GREEK SMALL LETTER UPSILON WITH TONOS
2103     {"Uacute",           0x000DA},  // LATIN CAPITAL LETTER U WITH ACUTE
2104     {"uacute",           0x000FA},  // LATIN SMALL LETTER U WITH ACUTE
2105     {"uarr",             0x02191},  // UPWARDS ARROW
2106     {"Uarr",             0x0219F},  // UPWARDS TWO HEADED ARROW
2107     {"uArr",             0x021D1},  // UPWARDS DOUBLE ARROW
2108     {"Uarrocir",         0x02949},  // UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE
2109     {"Ubrcy",            0x0040E},  // CYRILLIC CAPITAL LETTER SHORT U
2110     {"ubrcy",            0x0045E},  // CYRILLIC SMALL LETTER SHORT U
2111     {"Ubreve",           0x0016C},  // LATIN CAPITAL LETTER U WITH BREVE
2112     {"ubreve",           0x0016D},  // LATIN SMALL LETTER U WITH BREVE
2113     {"Ucirc",            0x000DB},  // LATIN CAPITAL LETTER U WITH CIRCUMFLEX
2114     {"ucirc",            0x000FB},  // LATIN SMALL LETTER U WITH CIRCUMFLEX
2115     {"Ucy",              0x00423},  // CYRILLIC CAPITAL LETTER U
2116     {"ucy",              0x00443},  // CYRILLIC SMALL LETTER U
2117     {"udarr",            0x021C5},  // UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW
2118     {"Udblac",           0x00170},  // LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
2119     {"udblac",           0x00171},  // LATIN SMALL LETTER U WITH DOUBLE ACUTE
2120     {"udhar",            0x0296E},  // UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT
2121     {"udiagr",           0x003B0},  // GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
2122     {"Udigr",            0x003AB},  // GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
2123     {"udigr",            0x003CB},  // GREEK SMALL LETTER UPSILON WITH DIALYTIKA
2124     {"ufisht",           0x0297E},  // UP FISH TAIL
2125     {"Ufr",              0x1D518},  // MATHEMATICAL FRAKTUR CAPITAL U
2126     {"ufr",              0x1D532},  // MATHEMATICAL FRAKTUR SMALL U
2127     {"Ugr",              0x003A5},  // GREEK CAPITAL LETTER UPSILON
2128     {"ugr",              0x003C5},  // GREEK SMALL LETTER UPSILON
2129     {"Ugrave",           0x000D9},  // LATIN CAPITAL LETTER U WITH GRAVE
2130     {"ugrave",           0x000F9},  // LATIN SMALL LETTER U WITH GRAVE
2131     {"uHar",             0x02963},  // UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT
2132     {"uharl",            0x021BF},  // UPWARDS HARPOON WITH BARB LEFTWARDS
2133     {"uharr",            0x021BE},  // UPWARDS HARPOON WITH BARB RIGHTWARDS
2134     {"uhblk",            0x02580},  // UPPER HALF BLOCK
2135     {"ulcorn",           0x0231C},  // TOP LEFT CORNER
2136     {"ulcorner",         0x0231C},  // TOP LEFT CORNER
2137     {"ulcrop",           0x0230F},  // TOP LEFT CROP
2138     {"ultri",            0x025F8},  // UPPER LEFT TRIANGLE
2139     {"Umacr",            0x0016A},  // LATIN CAPITAL LETTER U WITH MACRON
2140     {"umacr",            0x0016B},  // LATIN SMALL LETTER U WITH MACRON
2141     {"uml",              0x000A8},  // DIAERESIS
2142     {"UnderBar",         0x0005F},  // LOW LINE
2143     {"UnderBrace",       0x023DF},  // BOTTOM CURLY BRACKET
2144     {"UnderBracket",     0x023B5},  // BOTTOM SQUARE BRACKET
2145     {"UnderParenthesis", 0x023DD},  // BOTTOM PARENTHESIS
2146     {"Union",            0x022C3},  // N-ARY UNION
2147     {"UnionPlus",        0x0228E},  // MULTISET UNION
2148     {"Uogon",            0x00172},  // LATIN CAPITAL LETTER U WITH OGONEK
2149     {"uogon",            0x00173},  // LATIN SMALL LETTER U WITH OGONEK
2150     {"Uopf",             0x1D54C},  // MATHEMATICAL DOUBLE-STRUCK CAPITAL U
2151     {"uopf",             0x1D566},  // MATHEMATICAL DOUBLE-STRUCK SMALL U
2152     {"uparrow",          0x02191},  // UPWARDS ARROW
2153     {"UpArrow",          0x02191},  // UPWARDS ARROW
2154     {"Uparrow",          0x021D1},  // UPWARDS DOUBLE ARROW
2155     {"UpArrowBar",       0x02912},  // UPWARDS ARROW TO BAR
2156     {"UpArrowDownArrow", 0x021C5},  // UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW
2157     {"updownarrow",      0x02195},  // UP DOWN ARROW
2158     {"UpDownArrow",      0x02195},  // UP DOWN ARROW
2159     {"Updownarrow",      0x021D5},  // UP DOWN DOUBLE ARROW
2160     {"UpEquilibrium",    0x0296E},  // UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT
2161     {"upharpoonleft",    0x021BF},  // UPWARDS HARPOON WITH BARB LEFTWARDS
2162     {"upharpoonright",   0x021BE},  // UPWARDS HARPOON WITH BARB RIGHTWARDS
2163     {"uplus",            0x0228E},  // MULTISET UNION
2164     {"UpperLeftArrow",   0x02196},  // NORTH WEST ARROW
2165     {"UpperRightArrow",  0x02197},  // NORTH EAST ARROW
2166     {"upsi",             0x003C5},  // GREEK SMALL LETTER UPSILON
2167     {"Upsi",             0x003D2},  // GREEK UPSILON WITH HOOK SYMBOL
2168     {"upsih",            0x003D2},  // GREEK UPSILON WITH HOOK SYMBOL
2169     {"Upsilon",          0x003A5},  // GREEK CAPITAL LETTER UPSILON
2170     {"upsilon",          0x003C5},  // GREEK SMALL LETTER UPSILON
2171     {"UpTee",            0x022A5},  // UP TACK
2172     {"UpTeeArrow",       0x021A5},  // UPWARDS ARROW FROM BAR
2173     {"upuparrows",       0x021C8},  // UPWARDS PAIRED ARROWS
2174     {"urcorn",           0x0231D},  // TOP RIGHT CORNER
2175     {"urcorner",         0x0231D},  // TOP RIGHT CORNER
2176     {"urcrop",           0x0230E},  // TOP RIGHT CROP
2177     {"Uring",            0x0016E},  // LATIN CAPITAL LETTER U WITH RING ABOVE
2178     {"uring",            0x0016F},  // LATIN SMALL LETTER U WITH RING ABOVE
2179     {"urtri",            0x025F9},  // UPPER RIGHT TRIANGLE
2180     {"Uscr",             0x1D4B0},  // MATHEMATICAL SCRIPT CAPITAL U
2181     {"uscr",             0x1D4CA},  // MATHEMATICAL SCRIPT SMALL U
2182     {"utdot",            0x022F0},  // UP RIGHT DIAGONAL ELLIPSIS
2183     {"Utilde",           0x00168},  // LATIN CAPITAL LETTER U WITH TILDE
2184     {"utilde",           0x00169},  // LATIN SMALL LETTER U WITH TILDE
2185     {"utri",             0x025B5},  // WHITE UP-POINTING SMALL TRIANGLE
2186     {"utrif",            0x025B4},  // BLACK UP-POINTING SMALL TRIANGLE
2187     {"uuarr",            0x021C8},  // UPWARDS PAIRED ARROWS
2188     {"Uuml",             0x000DC},  // LATIN CAPITAL LETTER U WITH DIAERESIS
2189     {"uuml",             0x000FC},  // LATIN SMALL LETTER U WITH DIAERESIS
2190     {"uwangle",          0x029A7},  // OBLIQUE ANGLE OPENING DOWN
2191 ];
2192 
2193 immutable NameId[] namesV =
2194 [
2195     {"vangrt",           0x0299C},  // RIGHT ANGLE VARIANT WITH SQUARE
2196     {"varepsilon",       0x003F5},  // GREEK LUNATE EPSILON SYMBOL
2197     {"varkappa",         0x003F0},  // GREEK KAPPA SYMBOL
2198     {"varnothing",       0x02205},  // EMPTY SET
2199     {"varphi",           0x003D5},  // GREEK PHI SYMBOL
2200     {"varpi",            0x003D6},  // GREEK PI SYMBOL
2201     {"varpropto",        0x0221D},  // PROPORTIONAL TO
2202     {"varr",             0x02195},  // UP DOWN ARROW
2203     {"vArr",             0x021D5},  // UP DOWN DOUBLE ARROW
2204     {"varrho",           0x003F1},  // GREEK RHO SYMBOL
2205     {"varsigma",         0x003C2},  // GREEK SMALL LETTER FINAL SIGMA
2206     {"varsubsetneq",     0x0228A, 0x0FE00},  // SUBSET OF WITH NOT EQUAL TO - variant with stroke through bottom members
2207     {"varsubsetneqq",    0x02ACB, 0x0FE00},  // SUBSET OF ABOVE NOT EQUAL TO - variant with stroke through bottom members
2208     {"varsupsetneq",     0x0228B, 0x0FE00},  // SUPERSET OF WITH NOT EQUAL TO - variant with stroke through bottom members
2209     {"varsupsetneqq",    0x02ACC, 0x0FE00},  // SUPERSET OF ABOVE NOT EQUAL TO - variant with stroke through bottom members
2210     {"vartheta",         0x003D1},  // GREEK THETA SYMBOL
2211     {"vartriangleleft",  0x022B2},  // NORMAL SUBGROUP OF
2212     {"vartriangleright", 0x022B3},  // CONTAINS AS NORMAL SUBGROUP
2213     {"vBar",             0x02AE8},  // SHORT UP TACK WITH UNDERBAR
2214     {"Vbar",             0x02AEB},  // DOUBLE UP TACK
2215     {"vBarv",            0x02AE9},  // SHORT UP TACK ABOVE SHORT DOWN TACK
2216     {"Vcy",              0x00412},  // CYRILLIC CAPITAL LETTER VE
2217     {"vcy",              0x00432},  // CYRILLIC SMALL LETTER VE
2218     {"vdash",            0x022A2},  // RIGHT TACK
2219     {"vDash",            0x022A8},  // TRUE
2220     {"Vdash",            0x022A9},  // FORCES
2221     {"VDash",            0x022AB},  // DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
2222     {"Vdashl",           0x02AE6},  // LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL
2223     {"vee",              0x02228},  // LOGICAL OR
2224     {"Vee",              0x022C1},  // N-ARY LOGICAL OR
2225     {"veebar",           0x022BB},  // XOR
2226     {"veeeq",            0x0225A},  // EQUIANGULAR TO
2227     {"vellip",           0x022EE},  // VERTICAL ELLIPSIS
2228     {"verbar",           0x0007C},  // VERTICAL LINE
2229     {"Verbar",           0x02017},  // DOUBLE VERTICAL LINE
2230     {"vert",             0x0007C},  // VERTICAL LINE
2231     {"Vert",             0x02017},  // DOUBLE VERTICAL LINE
2232     {"VerticalBar",      0x02223},  // DIVIDES
2233     {"VerticalLine",     0x0007C},  // VERTICAL LINE
2234     {"VerticalSeparator", 0x02758},  // LIGHT VERTICAL BAR
2235     {"VerticalTilde",    0x02240},  // WREATH PRODUCT
2236     {"VeryThinSpace",    0x0200A},  // HAIR SPACE
2237     {"Vfr",              0x1D519},  // MATHEMATICAL FRAKTUR CAPITAL V
2238     {"vfr",              0x1D533},  // MATHEMATICAL FRAKTUR SMALL V
2239     {"vltri",            0x022B2},  // NORMAL SUBGROUP OF
2240     {"vnsub",            0x02282, 0x020D2},  // SUBSET OF with vertical line
2241     {"vnsup",            0x02283, 0x020D2},  // SUPERSET OF with vertical line
2242     {"Vopf",             0x1D54D},  // MATHEMATICAL DOUBLE-STRUCK CAPITAL V
2243     {"vopf",             0x1D567},  // MATHEMATICAL DOUBLE-STRUCK SMALL V
2244     {"vprop",            0x0221D},  // PROPORTIONAL TO
2245     {"vrtri",            0x022B3},  // CONTAINS AS NORMAL SUBGROUP
2246     {"Vscr",             0x1D4B1},  // MATHEMATICAL SCRIPT CAPITAL V
2247     {"vscr",             0x1D4CB},  // MATHEMATICAL SCRIPT SMALL V
2248     {"vsubne",           0x0228A, 0x0FE00},  // SUBSET OF WITH NOT EQUAL TO - variant with stroke through bottom members
2249     {"vsubnE",           0x02ACB, 0x0FE00},  // SUBSET OF ABOVE NOT EQUAL TO - variant with stroke through bottom members
2250     {"vsupne",           0x0228B, 0x0FE00},  // SUPERSET OF WITH NOT EQUAL TO - variant with stroke through bottom members
2251     {"vsupnE",           0x02ACC, 0x0FE00},  // SUPERSET OF ABOVE NOT EQUAL TO - variant with stroke through bottom members
2252     {"Vvdash",           0x022AA},  // TRIPLE VERTICAL BAR RIGHT TURNSTILE
2253     {"vzigzag",          0x0299A},  // VERTICAL ZIGZAG LINE
2254 ];
2255 
2256 immutable NameId[] namesW =
2257 [
2258     {"Wcirc",            0x00174},  // LATIN CAPITAL LETTER W WITH CIRCUMFLEX
2259     {"wcirc",            0x00175},  // LATIN SMALL LETTER W WITH CIRCUMFLEX
2260     {"wedbar",           0x02A5F},  // LOGICAL AND WITH UNDERBAR
2261     {"wedge",            0x02227},  // LOGICAL AND
2262     {"Wedge",            0x022C0},  // N-ARY LOGICAL AND
2263     {"wedgeq",           0x02259},  // ESTIMATES
2264     {"weierp",           0x02118},  // SCRIPT CAPITAL P
2265     {"Wfr",              0x1D51A},  // MATHEMATICAL FRAKTUR CAPITAL W
2266     {"wfr",              0x1D534},  // MATHEMATICAL FRAKTUR SMALL W
2267     {"Wopf",             0x1D54E},  // MATHEMATICAL DOUBLE-STRUCK CAPITAL W
2268     {"wopf",             0x1D568},  // MATHEMATICAL DOUBLE-STRUCK SMALL W
2269     {"wp",               0x02118},  // SCRIPT CAPITAL P
2270     {"wr",               0x02240},  // WREATH PRODUCT
2271     {"wreath",           0x02240},  // WREATH PRODUCT
2272     {"Wscr",             0x1D4B2},  // MATHEMATICAL SCRIPT CAPITAL W
2273     {"wscr",             0x1D4CC},  // MATHEMATICAL SCRIPT SMALL W
2274 ];
2275 
2276 immutable NameId[] namesX =
2277 [
2278     {"xcap",             0x022C2},  // N-ARY INTERSECTION
2279     {"xcirc",            0x025EF},  // LARGE CIRCLE
2280     {"xcup",             0x022C3},  // N-ARY UNION
2281     {"xdtri",            0x025BD},  // WHITE DOWN-POINTING TRIANGLE
2282     {"Xfr",              0x1D51B},  // MATHEMATICAL FRAKTUR CAPITAL X
2283     {"xfr",              0x1D535},  // MATHEMATICAL FRAKTUR SMALL X
2284     {"Xgr",              0x0039E},  // GREEK CAPITAL LETTER XI
2285     {"xgr",              0x003BE},  // GREEK SMALL LETTER XI
2286     {"xharr",            0x027F7},  // LONG LEFT RIGHT ARROW
2287     {"xhArr",            0x027FA},  // LONG LEFT RIGHT DOUBLE ARROW
2288     {"Xi",               0x0039E},  // GREEK CAPITAL LETTER XI
2289     {"xi",               0x003BE},  // GREEK SMALL LETTER XI
2290     {"xlarr",            0x027F5},  // LONG LEFTWARDS ARROW
2291     {"xlArr",            0x027F8},  // LONG LEFTWARDS DOUBLE ARROW
2292     {"xmap",             0x027FC},  // LONG RIGHTWARDS ARROW FROM BAR
2293     {"xnis",             0x022FB},  // CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
2294     {"xodot",            0x02A00},  // N-ARY CIRCLED DOT OPERATOR
2295     {"Xopf",             0x1D54F},  // MATHEMATICAL DOUBLE-STRUCK CAPITAL X
2296     {"xopf",             0x1D569},  // MATHEMATICAL DOUBLE-STRUCK SMALL X
2297     {"xoplus",           0x02A01},  // N-ARY CIRCLED PLUS OPERATOR
2298     {"xotime",           0x02A02},  // N-ARY CIRCLED TIMES OPERATOR
2299     {"xrarr",            0x027F6},  // LONG RIGHTWARDS ARROW
2300     {"xrArr",            0x027F9},  // LONG RIGHTWARDS DOUBLE ARROW
2301     {"Xscr",             0x1D4B3},  // MATHEMATICAL SCRIPT CAPITAL X
2302     {"xscr",             0x1D4CD},  // MATHEMATICAL SCRIPT SMALL X
2303     {"xsqcup",           0x02A06},  // N-ARY SQUARE UNION OPERATOR
2304     {"xuplus",           0x02A04},  // N-ARY UNION OPERATOR WITH PLUS
2305     {"xutri",            0x025B3},  // WHITE UP-POINTING TRIANGLE
2306     {"xvee",             0x022C1},  // N-ARY LOGICAL OR
2307     {"xwedge",           0x022C0},  // N-ARY LOGICAL AND
2308 ];
2309 
2310 immutable NameId[] namesY =
2311 [
2312     {"Yacute",           0x000DD},  // LATIN CAPITAL LETTER Y WITH ACUTE
2313     {"yacute",           0x000FD},  // LATIN SMALL LETTER Y WITH ACUTE
2314     {"YAcy",             0x0042F},  // CYRILLIC CAPITAL LETTER YA
2315     {"yacy",             0x0044F},  // CYRILLIC SMALL LETTER YA
2316     {"Ycirc",            0x00176},  // LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
2317     {"ycirc",            0x00177},  // LATIN SMALL LETTER Y WITH CIRCUMFLEX
2318     {"Ycy",              0x0042B},  // CYRILLIC CAPITAL LETTER YERU
2319     {"ycy",              0x0044B},  // CYRILLIC SMALL LETTER YERU
2320     {"yen",              0x000A5},  // YEN SIGN
2321     {"Yfr",              0x1D51C},  // MATHEMATICAL FRAKTUR CAPITAL Y
2322     {"yfr",              0x1D536},  // MATHEMATICAL FRAKTUR SMALL Y
2323     {"YIcy",             0x00407},  // CYRILLIC CAPITAL LETTER YI
2324     {"yicy",             0x00457},  // CYRILLIC SMALL LETTER YI
2325     {"Yopf",             0x1D550},  // MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
2326     {"yopf",             0x1D56A},  // MATHEMATICAL DOUBLE-STRUCK SMALL Y
2327     {"Yscr",             0x1D4B4},  // MATHEMATICAL SCRIPT CAPITAL Y
2328     {"yscr",             0x1D4CE},  // MATHEMATICAL SCRIPT SMALL Y
2329     {"YUcy",             0x0042E},  // CYRILLIC CAPITAL LETTER YU
2330     {"yucy",             0x0044E},  // CYRILLIC SMALL LETTER YU
2331     {"yuml",             0x000FF},  // LATIN SMALL LETTER Y WITH DIAERESIS
2332     {"Yuml",             0x00178},  // LATIN CAPITAL LETTER Y WITH DIAERESIS
2333 ];
2334 
2335 immutable NameId[] namesZ =
2336 [
2337     {"Zacute",           0x00179},  // LATIN CAPITAL LETTER Z WITH ACUTE
2338     {"zacute",           0x0017A},  // LATIN SMALL LETTER Z WITH ACUTE
2339     {"Zcaron",           0x0017D},  // LATIN CAPITAL LETTER Z WITH CARON
2340     {"zcaron",           0x0017E},  // LATIN SMALL LETTER Z WITH CARON
2341     {"Zcy",              0x00417},  // CYRILLIC CAPITAL LETTER ZE
2342     {"zcy",              0x00437},  // CYRILLIC SMALL LETTER ZE
2343     {"Zdot",             0x0017B},  // LATIN CAPITAL LETTER Z WITH DOT ABOVE
2344     {"zdot",             0x0017C},  // LATIN SMALL LETTER Z WITH DOT ABOVE
2345     {"zeetrf",           0x02128},  // BLACK-LETTER CAPITAL Z
2346     {"ZeroWidthSpace",   0x0200B},  // ZERO WIDTH SPACE
2347     {"Zeta",             0x00396},  // GREEK CAPITAL LETTER ZETA
2348     {"zeta",             0x003B6},  // GREEK SMALL LETTER ZETA
2349     {"Zfr",              0x02128},  // BLACK-LETTER CAPITAL Z
2350     {"zfr",              0x1D537},  // MATHEMATICAL FRAKTUR SMALL Z
2351     {"Zgr",              0x00396},  // GREEK CAPITAL LETTER ZETA
2352     {"zgr",              0x003B6},  // GREEK SMALL LETTER ZETA
2353     {"ZHcy",             0x00416},  // CYRILLIC CAPITAL LETTER ZHE
2354     {"zhcy",             0x00436},  // CYRILLIC SMALL LETTER ZHE
2355     {"zigrarr",          0x021DD},  // RIGHTWARDS SQUIGGLE ARROW
2356     {"Zopf",             0x02124},  // DOUBLE-STRUCK CAPITAL Z
2357     {"zopf",             0x1D56B},  // MATHEMATICAL DOUBLE-STRUCK SMALL Z
2358     {"Zscr",             0x1D4B5},  // MATHEMATICAL SCRIPT CAPITAL Z
2359     {"zscr",             0x1D4CF},  // MATHEMATICAL SCRIPT SMALL Z
2360     {"zwj",              0x0200D},  // ZERO WIDTH JOINER
2361     {"zwnj",             0x0200C},  // ZERO WIDTH NON-JOINER
2362 ];