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