Merge branch 'master' of https://github.com/KaneRoot/vis
[vis.git] / vis-digraph.c
blob35a5a17cc779229a0952b9fed31bc6f8c44efb8d
1 #include <errno.h>
2 #include <termios.h>
3 #include <locale.h>
4 #include <stdio.h>
5 #include <stdlib.h>
6 #include <string.h>
7 #include <unistd.h>
8 #include <wchar.h>
10 #define MAX_DIGRAPH_LENGTH 7
12 typedef struct {
13 const char name[MAX_DIGRAPH_LENGTH+1];
14 const wchar_t rune;
15 const char *description;
16 } Digraph;
18 static const Digraph digraphs[] = {
19 /* generated from https://tools.ietf.org/rfc/rfc1345.txt */
20 { "SP", 0x0020, "SPACE" },
21 { "! ", 0x0021, "EXCLAMATION MARK" },
22 { "\" ", 0x0022, "QUOTATION MARK" },
23 { "Nb", 0x0023, "NUMBER SIGN" },
24 { "DO", 0x0024, "DOLLAR SIGN" },
25 { "% ", 0x0025, "PERCENT SIGN" },
26 { "& ", 0x0026, "AMPERSAND" },
27 { "' ", 0x0027, "APOSTROPHE" },
28 { "( ", 0x0028, "LEFT PARENTHESIS" },
29 { ") ", 0x0029, "RIGHT PARENTHESIS" },
30 { "* ", 0x002a, "ASTERISK" },
31 { "+ ", 0x002b, "PLUS SIGN" },
32 { ", ", 0x002c, "COMMA" },
33 { "- ", 0x002d, "HYPHEN-MINUS" },
34 { ". ", 0x002e, "FULL STOP" },
35 { "/ ", 0x002f, "SOLIDUS" },
36 { "0 ", 0x0030, "DIGIT ZERO" },
37 { "1 ", 0x0031, "DIGIT ONE" },
38 { "2 ", 0x0032, "DIGIT TWO" },
39 { "3 ", 0x0033, "DIGIT THREE" },
40 { "4 ", 0x0034, "DIGIT FOUR" },
41 { "5 ", 0x0035, "DIGIT FIVE" },
42 { "6 ", 0x0036, "DIGIT SIX" },
43 { "7 ", 0x0037, "DIGIT SEVEN" },
44 { "8 ", 0x0038, "DIGIT EIGHT" },
45 { "9 ", 0x0039, "DIGIT NINE" },
46 { ": ", 0x003a, "COLON" },
47 { "; ", 0x003b, "SEMICOLON" },
48 { "< ", 0x003c, "LESS-THAN SIGN" },
49 { "= ", 0x003d, "EQUALS SIGN" },
50 { "> ", 0x003e, "GREATER-THAN SIGN" },
51 { "? ", 0x003f, "QUESTION MARK" },
52 { "At", 0x0040, "COMMERCIAL AT" },
53 { "A ", 0x0041, "LATIN CAPITAL LETTER A" },
54 { "B ", 0x0042, "LATIN CAPITAL LETTER B" },
55 { "C ", 0x0043, "LATIN CAPITAL LETTER C" },
56 { "D ", 0x0044, "LATIN CAPITAL LETTER D" },
57 { "E ", 0x0045, "LATIN CAPITAL LETTER E" },
58 { "F ", 0x0046, "LATIN CAPITAL LETTER F" },
59 { "G ", 0x0047, "LATIN CAPITAL LETTER G" },
60 { "H ", 0x0048, "LATIN CAPITAL LETTER H" },
61 { "I ", 0x0049, "LATIN CAPITAL LETTER I" },
62 { "J ", 0x004a, "LATIN CAPITAL LETTER J" },
63 { "K ", 0x004b, "LATIN CAPITAL LETTER K" },
64 { "L ", 0x004c, "LATIN CAPITAL LETTER L" },
65 { "M ", 0x004d, "LATIN CAPITAL LETTER M" },
66 { "N ", 0x004e, "LATIN CAPITAL LETTER N" },
67 { "O ", 0x004f, "LATIN CAPITAL LETTER O" },
68 { "P ", 0x0050, "LATIN CAPITAL LETTER P" },
69 { "Q ", 0x0051, "LATIN CAPITAL LETTER Q" },
70 { "R ", 0x0052, "LATIN CAPITAL LETTER R" },
71 { "S ", 0x0053, "LATIN CAPITAL LETTER S" },
72 { "T ", 0x0054, "LATIN CAPITAL LETTER T" },
73 { "U ", 0x0055, "LATIN CAPITAL LETTER U" },
74 { "V ", 0x0056, "LATIN CAPITAL LETTER V" },
75 { "W ", 0x0057, "LATIN CAPITAL LETTER W" },
76 { "X ", 0x0058, "LATIN CAPITAL LETTER X" },
77 { "Y ", 0x0059, "LATIN CAPITAL LETTER Y" },
78 { "Z ", 0x005a, "LATIN CAPITAL LETTER Z" },
79 { "<(", 0x005b, "LEFT SQUARE BRACKET" },
80 { "//", 0x005c, "REVERSE SOLIDUS" },
81 { ")>", 0x005d, "RIGHT SQUARE BRACKET" },
82 { "'>", 0x005e, "CIRCUMFLEX ACCENT" },
83 { "_ ", 0x005f, "LOW LINE" },
84 { "'!", 0x0060, "GRAVE ACCENT" },
85 { "a ", 0x0061, "LATIN SMALL LETTER A" },
86 { "b ", 0x0062, "LATIN SMALL LETTER B" },
87 { "c ", 0x0063, "LATIN SMALL LETTER C" },
88 { "d ", 0x0064, "LATIN SMALL LETTER D" },
89 { "e ", 0x0065, "LATIN SMALL LETTER E" },
90 { "f ", 0x0066, "LATIN SMALL LETTER F" },
91 { "g ", 0x0067, "LATIN SMALL LETTER G" },
92 { "h ", 0x0068, "LATIN SMALL LETTER H" },
93 { "i ", 0x0069, "LATIN SMALL LETTER I" },
94 { "j ", 0x006a, "LATIN SMALL LETTER J" },
95 { "k ", 0x006b, "LATIN SMALL LETTER K" },
96 { "l ", 0x006c, "LATIN SMALL LETTER L" },
97 { "m ", 0x006d, "LATIN SMALL LETTER M" },
98 { "n ", 0x006e, "LATIN SMALL LETTER N" },
99 { "o ", 0x006f, "LATIN SMALL LETTER O" },
100 { "p ", 0x0070, "LATIN SMALL LETTER P" },
101 { "q ", 0x0071, "LATIN SMALL LETTER Q" },
102 { "r ", 0x0072, "LATIN SMALL LETTER R" },
103 { "s ", 0x0073, "LATIN SMALL LETTER S" },
104 { "t ", 0x0074, "LATIN SMALL LETTER T" },
105 { "u ", 0x0075, "LATIN SMALL LETTER U" },
106 { "v ", 0x0076, "LATIN SMALL LETTER V" },
107 { "w ", 0x0077, "LATIN SMALL LETTER W" },
108 { "x ", 0x0078, "LATIN SMALL LETTER X" },
109 { "y ", 0x0079, "LATIN SMALL LETTER Y" },
110 { "z ", 0x007a, "LATIN SMALL LETTER Z" },
111 { "(!", 0x007b, "LEFT CURLY BRACKET" },
112 { "!!", 0x007c, "VERTICAL LINE" },
113 { "!)", 0x007d, "RIGHT CURLY BRACKET" },
114 { "'?", 0x007e, "TILDE" },
115 { "NS", 0x00a0, "NO-BREAK SPACE" },
116 { "!I", 0x00a1, "INVERTED EXCLAMATION MARK" },
117 { "Ct", 0x00a2, "CENT SIGN" },
118 { "Pd", 0x00a3, "POUND SIGN" },
119 { "Cu", 0x00a4, "CURRENCY SIGN" },
120 { "Ye", 0x00a5, "YEN SIGN" },
121 { "BB", 0x00a6, "BROKEN BAR" },
122 { "SE", 0x00a7, "SECTION SIGN" },
123 { "':", 0x00a8, "DIAERESIS" },
124 { "Co", 0x00a9, "COPYRIGHT SIGN" },
125 { "-a", 0x00aa, "FEMININE ORDINAL INDICATOR" },
126 { "<<", 0x00ab, "LEFT-POINTING DOUBLE ANGLE QUOTATION MARK" },
127 { "NO", 0x00ac, "NOT SIGN" },
128 { "--", 0x00ad, "SOFT HYPHEN" },
129 { "Rg", 0x00ae, "REGISTERED SIGN" },
130 { "'m", 0x00af, "MACRON" },
131 { "DG", 0x00b0, "DEGREE SIGN" },
132 { "+-", 0x00b1, "PLUS-MINUS SIGN" },
133 { "2S", 0x00b2, "SUPERSCRIPT TWO" },
134 { "3S", 0x00b3, "SUPERSCRIPT THREE" },
135 { "''", 0x00b4, "ACUTE ACCENT" },
136 { "My", 0x00b5, "MICRO SIGN" },
137 { "PI", 0x00b6, "PILCROW SIGN" },
138 { ".M", 0x00b7, "MIDDLE DOT" },
139 { "',", 0x00b8, "CEDILLA" },
140 { "1S", 0x00b9, "SUPERSCRIPT ONE" },
141 { "-o", 0x00ba, "MASCULINE ORDINAL INDICATOR" },
142 { ">>", 0x00bb, "RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK" },
143 { "14", 0x00bc, "VULGAR FRACTION ONE QUARTER" },
144 { "12", 0x00bd, "VULGAR FRACTION ONE HALF" },
145 { "34", 0x00be, "VULGAR FRACTION THREE QUARTERS" },
146 { "?I", 0x00bf, "INVERTED QUESTION MARK" },
147 { "A!", 0x00c0, "LATIN CAPITAL LETTER A WITH GRAVE" },
148 { "A'", 0x00c1, "LATIN CAPITAL LETTER A WITH ACUTE" },
149 { "A>", 0x00c2, "LATIN CAPITAL LETTER A WITH CIRCUMFLEX" },
150 { "A?", 0x00c3, "LATIN CAPITAL LETTER A WITH TILDE" },
151 { "A:", 0x00c4, "LATIN CAPITAL LETTER A WITH DIAERESIS" },
152 { "AA", 0x00c5, "LATIN CAPITAL LETTER A WITH RING ABOVE" },
153 { "AE", 0x00c6, "LATIN CAPITAL LETTER AE" },
154 { "C,", 0x00c7, "LATIN CAPITAL LETTER C WITH CEDILLA" },
155 { "E!", 0x00c8, "LATIN CAPITAL LETTER E WITH GRAVE" },
156 { "E'", 0x00c9, "LATIN CAPITAL LETTER E WITH ACUTE" },
157 { "E>", 0x00ca, "LATIN CAPITAL LETTER E WITH CIRCUMFLEX" },
158 { "E:", 0x00cb, "LATIN CAPITAL LETTER E WITH DIAERESIS" },
159 { "I!", 0x00cc, "LATIN CAPITAL LETTER I WITH GRAVE" },
160 { "I'", 0x00cd, "LATIN CAPITAL LETTER I WITH ACUTE" },
161 { "I>", 0x00ce, "LATIN CAPITAL LETTER I WITH CIRCUMFLEX" },
162 { "I:", 0x00cf, "LATIN CAPITAL LETTER I WITH DIAERESIS" },
163 { "D-", 0x00d0, "LATIN CAPITAL LETTER ETH (Icelandic)" },
164 { "N?", 0x00d1, "LATIN CAPITAL LETTER N WITH TILDE" },
165 { "O!", 0x00d2, "LATIN CAPITAL LETTER O WITH GRAVE" },
166 { "O'", 0x00d3, "LATIN CAPITAL LETTER O WITH ACUTE" },
167 { "O>", 0x00d4, "LATIN CAPITAL LETTER O WITH CIRCUMFLEX" },
168 { "O?", 0x00d5, "LATIN CAPITAL LETTER O WITH TILDE" },
169 { "O:", 0x00d6, "LATIN CAPITAL LETTER O WITH DIAERESIS" },
170 { "*X", 0x00d7, "MULTIPLICATION SIGN" },
171 { "O/", 0x00d8, "LATIN CAPITAL LETTER O WITH STROKE" },
172 { "U!", 0x00d9, "LATIN CAPITAL LETTER U WITH GRAVE" },
173 { "U'", 0x00da, "LATIN CAPITAL LETTER U WITH ACUTE" },
174 { "U>", 0x00db, "LATIN CAPITAL LETTER U WITH CIRCUMFLEX" },
175 { "U:", 0x00dc, "LATIN CAPITAL LETTER U WITH DIAERESIS" },
176 { "Y'", 0x00dd, "LATIN CAPITAL LETTER Y WITH ACUTE" },
177 { "TH", 0x00de, "LATIN CAPITAL LETTER THORN (Icelandic)" },
178 { "ss", 0x00df, "LATIN SMALL LETTER SHARP S (German)" },
179 { "a!", 0x00e0, "LATIN SMALL LETTER A WITH GRAVE" },
180 { "a'", 0x00e1, "LATIN SMALL LETTER A WITH ACUTE" },
181 { "a>", 0x00e2, "LATIN SMALL LETTER A WITH CIRCUMFLEX" },
182 { "a?", 0x00e3, "LATIN SMALL LETTER A WITH TILDE" },
183 { "a:", 0x00e4, "LATIN SMALL LETTER A WITH DIAERESIS" },
184 { "aa", 0x00e5, "LATIN SMALL LETTER A WITH RING ABOVE" },
185 { "ae", 0x00e6, "LATIN SMALL LETTER AE" },
186 { "c,", 0x00e7, "LATIN SMALL LETTER C WITH CEDILLA" },
187 { "e!", 0x00e8, "LATIN SMALL LETTER E WITH GRAVE" },
188 { "e'", 0x00e9, "LATIN SMALL LETTER E WITH ACUTE" },
189 { "e>", 0x00ea, "LATIN SMALL LETTER E WITH CIRCUMFLEX" },
190 { "e:", 0x00eb, "LATIN SMALL LETTER E WITH DIAERESIS" },
191 { "i!", 0x00ec, "LATIN SMALL LETTER I WITH GRAVE" },
192 { "i'", 0x00ed, "LATIN SMALL LETTER I WITH ACUTE" },
193 { "i>", 0x00ee, "LATIN SMALL LETTER I WITH CIRCUMFLEX" },
194 { "i:", 0x00ef, "LATIN SMALL LETTER I WITH DIAERESIS" },
195 { "d-", 0x00f0, "LATIN SMALL LETTER ETH (Icelandic)" },
196 { "n?", 0x00f1, "LATIN SMALL LETTER N WITH TILDE" },
197 { "o!", 0x00f2, "LATIN SMALL LETTER O WITH GRAVE" },
198 { "o'", 0x00f3, "LATIN SMALL LETTER O WITH ACUTE" },
199 { "o>", 0x00f4, "LATIN SMALL LETTER O WITH CIRCUMFLEX" },
200 { "o?", 0x00f5, "LATIN SMALL LETTER O WITH TILDE" },
201 { "o:", 0x00f6, "LATIN SMALL LETTER O WITH DIAERESIS" },
202 { "-:", 0x00f7, "DIVISION SIGN" },
203 { "o/", 0x00f8, "LATIN SMALL LETTER O WITH STROKE" },
204 { "u!", 0x00f9, "LATIN SMALL LETTER U WITH GRAVE" },
205 { "u'", 0x00fa, "LATIN SMALL LETTER U WITH ACUTE" },
206 { "u>", 0x00fb, "LATIN SMALL LETTER U WITH CIRCUMFLEX" },
207 { "u:", 0x00fc, "LATIN SMALL LETTER U WITH DIAERESIS" },
208 { "y'", 0x00fd, "LATIN SMALL LETTER Y WITH ACUTE" },
209 { "th", 0x00fe, "LATIN SMALL LETTER THORN (Icelandic)" },
210 { "y:", 0x00ff, "LATIN SMALL LETTER Y WITH DIAERESIS" },
211 { "A-", 0x0100, "LATIN CAPITAL LETTER A WITH MACRON" },
212 { "a-", 0x0101, "LATIN SMALL LETTER A WITH MACRON" },
213 { "A(", 0x0102, "LATIN CAPITAL LETTER A WITH BREVE" },
214 { "a(", 0x0103, "LATIN SMALL LETTER A WITH BREVE" },
215 { "A;", 0x0104, "LATIN CAPITAL LETTER A WITH OGONEK" },
216 { "a;", 0x0105, "LATIN SMALL LETTER A WITH OGONEK" },
217 { "C'", 0x0106, "LATIN CAPITAL LETTER C WITH ACUTE" },
218 { "c'", 0x0107, "LATIN SMALL LETTER C WITH ACUTE" },
219 { "C>", 0x0108, "LATIN CAPITAL LETTER C WITH CIRCUMFLEX" },
220 { "c>", 0x0109, "LATIN SMALL LETTER C WITH CIRCUMFLEX" },
221 { "C.", 0x010a, "LATIN CAPITAL LETTER C WITH DOT ABOVE" },
222 { "c.", 0x010b, "LATIN SMALL LETTER C WITH DOT ABOVE" },
223 { "C<", 0x010c, "LATIN CAPITAL LETTER C WITH CARON" },
224 { "c<", 0x010d, "LATIN SMALL LETTER C WITH CARON" },
225 { "D<", 0x010e, "LATIN CAPITAL LETTER D WITH CARON" },
226 { "d<", 0x010f, "LATIN SMALL LETTER D WITH CARON" },
227 { "D/", 0x0110, "LATIN CAPITAL LETTER D WITH STROKE" },
228 { "d/", 0x0111, "LATIN SMALL LETTER D WITH STROKE" },
229 { "E-", 0x0112, "LATIN CAPITAL LETTER E WITH MACRON" },
230 { "e-", 0x0113, "LATIN SMALL LETTER E WITH MACRON" },
231 { "E(", 0x0114, "LATIN CAPITAL LETTER E WITH BREVE" },
232 { "e(", 0x0115, "LATIN SMALL LETTER E WITH BREVE" },
233 { "E.", 0x0116, "LATIN CAPITAL LETTER E WITH DOT ABOVE" },
234 { "e.", 0x0117, "LATIN SMALL LETTER E WITH DOT ABOVE" },
235 { "E;", 0x0118, "LATIN CAPITAL LETTER E WITH OGONEK" },
236 { "e;", 0x0119, "LATIN SMALL LETTER E WITH OGONEK" },
237 { "E<", 0x011a, "LATIN CAPITAL LETTER E WITH CARON" },
238 { "e<", 0x011b, "LATIN SMALL LETTER E WITH CARON" },
239 { "G>", 0x011c, "LATIN CAPITAL LETTER G WITH CIRCUMFLEX" },
240 { "g>", 0x011d, "LATIN SMALL LETTER G WITH CIRCUMFLEX" },
241 { "G(", 0x011e, "LATIN CAPITAL LETTER G WITH BREVE" },
242 { "g(", 0x011f, "LATIN SMALL LETTER G WITH BREVE" },
243 { "G.", 0x0120, "LATIN CAPITAL LETTER G WITH DOT ABOVE" },
244 { "g.", 0x0121, "LATIN SMALL LETTER G WITH DOT ABOVE" },
245 { "G,", 0x0122, "LATIN CAPITAL LETTER G WITH CEDILLA" },
246 { "g,", 0x0123, "LATIN SMALL LETTER G WITH CEDILLA" },
247 { "H>", 0x0124, "LATIN CAPITAL LETTER H WITH CIRCUMFLEX" },
248 { "h>", 0x0125, "LATIN SMALL LETTER H WITH CIRCUMFLEX" },
249 { "H/", 0x0126, "LATIN CAPITAL LETTER H WITH STROKE" },
250 { "h/", 0x0127, "LATIN SMALL LETTER H WITH STROKE" },
251 { "I?", 0x0128, "LATIN CAPITAL LETTER I WITH TILDE" },
252 { "i?", 0x0129, "LATIN SMALL LETTER I WITH TILDE" },
253 { "I-", 0x012a, "LATIN CAPITAL LETTER I WITH MACRON" },
254 { "i-", 0x012b, "LATIN SMALL LETTER I WITH MACRON" },
255 { "I(", 0x012c, "LATIN CAPITAL LETTER I WITH BREVE" },
256 { "i(", 0x012d, "LATIN SMALL LETTER I WITH BREVE" },
257 { "I;", 0x012e, "LATIN CAPITAL LETTER I WITH OGONEK" },
258 { "i;", 0x012f, "LATIN SMALL LETTER I WITH OGONEK" },
259 { "I.", 0x0130, "LATIN CAPITAL LETTER I WITH DOT ABOVE" },
260 { "i.", 0x0131, "LATIN SMALL LETTER I DOTLESS" },
261 { "IJ", 0x0132, "LATIN CAPITAL LIGATURE IJ" },
262 { "ij", 0x0133, "LATIN SMALL LIGATURE IJ" },
263 { "J>", 0x0134, "LATIN CAPITAL LETTER J WITH CIRCUMFLEX" },
264 { "j>", 0x0135, "LATIN SMALL LETTER J WITH CIRCUMFLEX" },
265 { "K,", 0x0136, "LATIN CAPITAL LETTER K WITH CEDILLA" },
266 { "k,", 0x0137, "LATIN SMALL LETTER K WITH CEDILLA" },
267 { "kk", 0x0138, "LATIN SMALL LETTER KRA (Greenlandic)" },
268 { "L'", 0x0139, "LATIN CAPITAL LETTER L WITH ACUTE" },
269 { "l'", 0x013a, "LATIN SMALL LETTER L WITH ACUTE" },
270 { "L,", 0x013b, "LATIN CAPITAL LETTER L WITH CEDILLA" },
271 { "l,", 0x013c, "LATIN SMALL LETTER L WITH CEDILLA" },
272 { "L<", 0x013d, "LATIN CAPITAL LETTER L WITH CARON" },
273 { "l<", 0x013e, "LATIN SMALL LETTER L WITH CARON" },
274 { "L.", 0x013f, "LATIN CAPITAL LETTER L WITH MIDDLE DOT" },
275 { "l.", 0x0140, "LATIN SMALL LETTER L WITH MIDDLE DOT" },
276 { "L/", 0x0141, "LATIN CAPITAL LETTER L WITH STROKE" },
277 { "l/", 0x0142, "LATIN SMALL LETTER L WITH STROKE" },
278 { "N'", 0x0143, "LATIN CAPITAL LETTER N WITH ACUTE" },
279 { "n'", 0x0144, "LATIN SMALL LETTER N WITH ACUTE" },
280 { "N,", 0x0145, "LATIN CAPITAL LETTER N WITH CEDILLA" },
281 { "n,", 0x0146, "LATIN SMALL LETTER N WITH CEDILLA" },
282 { "N<", 0x0147, "LATIN CAPITAL LETTER N WITH CARON" },
283 { "n<", 0x0148, "LATIN SMALL LETTER N WITH CARON" },
284 { "'n", 0x0149, "LATIN SMALL LETTER N PRECEDED BY APOSTROPHE" },
285 { "NG", 0x014a, "LATIN CAPITAL LETTER ENG (Lappish)" },
286 { "ng", 0x014b, "LATIN SMALL LETTER ENG (Lappish)" },
287 { "O-", 0x014c, "LATIN CAPITAL LETTER O WITH MACRON" },
288 { "o-", 0x014d, "LATIN SMALL LETTER O WITH MACRON" },
289 { "O(", 0x014e, "LATIN CAPITAL LETTER O WITH BREVE" },
290 { "o(", 0x014f, "LATIN SMALL LETTER O WITH BREVE" },
291 { "O\"", 0x0150, "LATIN CAPITAL LETTER O WITH DOUBLE ACUTE" },
292 { "o\"", 0x0151, "LATIN SMALL LETTER O WITH DOUBLE ACUTE" },
293 { "OE", 0x0152, "LATIN CAPITAL LIGATURE OE" },
294 { "oe", 0x0153, "LATIN SMALL LIGATURE OE" },
295 { "R'", 0x0154, "LATIN CAPITAL LETTER R WITH ACUTE" },
296 { "r'", 0x0155, "LATIN SMALL LETTER R WITH ACUTE" },
297 { "R,", 0x0156, "LATIN CAPITAL LETTER R WITH CEDILLA" },
298 { "r,", 0x0157, "LATIN SMALL LETTER R WITH CEDILLA" },
299 { "R<", 0x0158, "LATIN CAPITAL LETTER R WITH CARON" },
300 { "r<", 0x0159, "LATIN SMALL LETTER R WITH CARON" },
301 { "S'", 0x015a, "LATIN CAPITAL LETTER S WITH ACUTE" },
302 { "s'", 0x015b, "LATIN SMALL LETTER S WITH ACUTE" },
303 { "S>", 0x015c, "LATIN CAPITAL LETTER S WITH CIRCUMFLEX" },
304 { "s>", 0x015d, "LATIN SMALL LETTER S WITH CIRCUMFLEX" },
305 { "S,", 0x015e, "LATIN CAPITAL LETTER S WITH CEDILLA" },
306 { "s,", 0x015f, "LATIN SMALL LETTER S WITH CEDILLA" },
307 { "S<", 0x0160, "LATIN CAPITAL LETTER S WITH CARON" },
308 { "s<", 0x0161, "LATIN SMALL LETTER S WITH CARON" },
309 { "T,", 0x0162, "LATIN CAPITAL LETTER T WITH CEDILLA" },
310 { "t,", 0x0163, "LATIN SMALL LETTER T WITH CEDILLA" },
311 { "T<", 0x0164, "LATIN CAPITAL LETTER T WITH CARON" },
312 { "t<", 0x0165, "LATIN SMALL LETTER T WITH CARON" },
313 { "T/", 0x0166, "LATIN CAPITAL LETTER T WITH STROKE" },
314 { "t/", 0x0167, "LATIN SMALL LETTER T WITH STROKE" },
315 { "U?", 0x0168, "LATIN CAPITAL LETTER U WITH TILDE" },
316 { "u?", 0x0169, "LATIN SMALL LETTER U WITH TILDE" },
317 { "U-", 0x016a, "LATIN CAPITAL LETTER U WITH MACRON" },
318 { "u-", 0x016b, "LATIN SMALL LETTER U WITH MACRON" },
319 { "U(", 0x016c, "LATIN CAPITAL LETTER U WITH BREVE" },
320 { "u(", 0x016d, "LATIN SMALL LETTER U WITH BREVE" },
321 { "U0", 0x016e, "LATIN CAPITAL LETTER U WITH RING ABOVE" },
322 { "u0", 0x016f, "LATIN SMALL LETTER U WITH RING ABOVE" },
323 { "U\"", 0x0170, "LATIN CAPITAL LETTER U WITH DOUBLE ACUTE" },
324 { "u\"", 0x0171, "LATIN SMALL LETTER U WITH DOUBLE ACUTE" },
325 { "U;", 0x0172, "LATIN CAPITAL LETTER U WITH OGONEK" },
326 { "u;", 0x0173, "LATIN SMALL LETTER U WITH OGONEK" },
327 { "W>", 0x0174, "LATIN CAPITAL LETTER W WITH CIRCUMFLEX" },
328 { "w>", 0x0175, "LATIN SMALL LETTER W WITH CIRCUMFLEX" },
329 { "Y>", 0x0176, "LATIN CAPITAL LETTER Y WITH CIRCUMFLEX" },
330 { "y>", 0x0177, "LATIN SMALL LETTER Y WITH CIRCUMFLEX" },
331 { "Y:", 0x0178, "LATIN CAPITAL LETTER Y WITH DIAERESIS" },
332 { "Z'", 0x0179, "LATIN CAPITAL LETTER Z WITH ACUTE" },
333 { "z'", 0x017a, "LATIN SMALL LETTER Z WITH ACUTE" },
334 { "Z.", 0x017b, "LATIN CAPITAL LETTER Z WITH DOT ABOVE" },
335 { "z.", 0x017c, "LATIN SMALL LETTER Z WITH DOT ABOVE" },
336 { "Z<", 0x017d, "LATIN CAPITAL LETTER Z WITH CARON" },
337 { "z<", 0x017e, "LATIN SMALL LETTER Z WITH CARON" },
338 { "O9", 0x01a0, "LATIN CAPITAL LETTER O WITH HORN" },
339 { "o9", 0x01a1, "LATIN SMALL LETTER O WITH HORN" },
340 { "OI", 0x01a2, "LATIN CAPITAL LETTER OI" },
341 { "oi", 0x01a3, "LATIN SMALL LETTER OI" },
342 { "yr", 0x01a6, "LATIN LETTER YR" },
343 { "U9", 0x01af, "LATIN CAPITAL LETTER U WITH HORN" },
344 { "u9", 0x01b0, "LATIN SMALL LETTER U WITH HORN" },
345 { "Z/", 0x01b5, "LATIN CAPITAL LETTER Z WITH STROKE" },
346 { "z/", 0x01b6, "LATIN SMALL LETTER Z WITH STROKE" },
347 { "ED", 0x01b7, "LATIN CAPITAL LETTER EZH" },
348 { "A<", 0x01cd, "LATIN CAPITAL LETTER A WITH CARON" },
349 { "a<", 0x01ce, "LATIN SMALL LETTER A WITH CARON" },
350 { "I<", 0x01cf, "LATIN CAPITAL LETTER I WITH CARON" },
351 { "i<", 0x01d0, "LATIN SMALL LETTER I WITH CARON" },
352 { "O<", 0x01d1, "LATIN CAPITAL LETTER O WITH CARON" },
353 { "o<", 0x01d2, "LATIN SMALL LETTER O WITH CARON" },
354 { "U<", 0x01d3, "LATIN CAPITAL LETTER U WITH CARON" },
355 { "u<", 0x01d4, "LATIN SMALL LETTER U WITH CARON" },
356 { "U:-", 0x01d5, "LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON" },
357 { "u:-", 0x01d6, "LATIN SMALL LETTER U WITH DIAERESIS AND MACRON" },
358 { "U:'", 0x01d7, "LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE" },
359 { "u:'", 0x01d8, "LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE" },
360 { "U:<", 0x01d9, "LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON" },
361 { "u:<", 0x01da, "LATIN SMALL LETTER U WITH DIAERESIS AND CARON" },
362 { "U:!", 0x01db, "LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE" },
363 { "u:!", 0x01dc, "LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE" },
364 { "A1", 0x01de, "LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON" },
365 { "a1", 0x01df, "LATIN SMALL LETTER A WITH DIAERESIS AND MACRON" },
366 { "A7", 0x01e0, "LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON" },
367 { "a7", 0x01e1, "LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON" },
368 { "A3", 0x01e2, "LATIN CAPITAL LETTER AE WITH MACRON" },
369 { "a3", 0x01e3, "LATIN SMALL LETTER AE WITH MACRON" },
370 { "G/", 0x01e4, "LATIN CAPITAL LETTER G WITH STROKE" },
371 { "g/", 0x01e5, "LATIN SMALL LETTER G WITH STROKE" },
372 { "G<", 0x01e6, "LATIN CAPITAL LETTER G WITH CARON" },
373 { "g<", 0x01e7, "LATIN SMALL LETTER G WITH CARON" },
374 { "K<", 0x01e8, "LATIN CAPITAL LETTER K WITH CARON" },
375 { "k<", 0x01e9, "LATIN SMALL LETTER K WITH CARON" },
376 { "O;", 0x01ea, "LATIN CAPITAL LETTER O WITH OGONEK" },
377 { "o;", 0x01eb, "LATIN SMALL LETTER O WITH OGONEK" },
378 { "O1", 0x01ec, "LATIN CAPITAL LETTER O WITH OGONEK AND MACRON" },
379 { "o1", 0x01ed, "LATIN SMALL LETTER O WITH OGONEK AND MACRON" },
380 { "EZ", 0x01ee, "LATIN CAPITAL LETTER EZH WITH CARON" },
381 { "ez", 0x01ef, "LATIN SMALL LETTER EZH WITH CARON" },
382 { "j<", 0x01f0, "LATIN SMALL LETTER J WITH CARON" },
383 { "G'", 0x01f4, "LATIN CAPITAL LETTER G WITH ACUTE" },
384 { "g'", 0x01f5, "LATIN SMALL LETTER G WITH ACUTE" },
385 { "AA'", 0x01fa, "LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE" },
386 { "aa'", 0x01fb, "LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE" },
387 { "AE'", 0x01fc, "LATIN CAPITAL LETTER AE WITH ACUTE" },
388 { "ae'", 0x01fd, "LATIN SMALL LETTER AE WITH ACUTE" },
389 { "O/'", 0x01fe, "LATIN CAPITAL LETTER O WITH STROKE AND ACUTE" },
390 { "o/'", 0x01ff, "LATIN SMALL LETTER O WITH STROKE AND ACUTE" },
391 { ";S", 0x02bf, "MODIFIER LETTER LEFT HALF RING" },
392 { "'<", 0x02c7, "CARON" },
393 { "'(", 0x02d8, "BREVE" },
394 { "'.", 0x02d9, "DOT ABOVE" },
395 { "'0", 0x02da, "RING ABOVE" },
396 { "';", 0x02db, "OGONEK" },
397 { "'\"", 0x02dd, "DOUBLE ACUTE ACCENT" },
398 { "A%", 0x0386, "GREEK CAPITAL LETTER ALPHA WITH ACUTE" },
399 { "E%", 0x0388, "GREEK CAPITAL LETTER EPSILON WITH ACUTE" },
400 { "Y%", 0x0389, "GREEK CAPITAL LETTER ETA WITH ACUTE" },
401 { "I%", 0x038a, "GREEK CAPITAL LETTER IOTA WITH ACUTE" },
402 { "O%", 0x038c, "GREEK CAPITAL LETTER OMICRON WITH ACUTE" },
403 { "U%", 0x038e, "GREEK CAPITAL LETTER UPSILON WITH ACUTE" },
404 { "W%", 0x038f, "GREEK CAPITAL LETTER OMEGA WITH ACUTE" },
405 { "i3", 0x0390, "GREEK SMALL LETTER IOTA WITH ACUTE AND DIAERESIS" },
406 { "A*", 0x0391, "GREEK CAPITAL LETTER ALPHA" },
407 { "B*", 0x0392, "GREEK CAPITAL LETTER BETA" },
408 { "G*", 0x0393, "GREEK CAPITAL LETTER GAMMA" },
409 { "D*", 0x0394, "GREEK CAPITAL LETTER DELTA" },
410 { "E*", 0x0395, "GREEK CAPITAL LETTER EPSILON" },
411 { "Z*", 0x0396, "GREEK CAPITAL LETTER ZETA" },
412 { "Y*", 0x0397, "GREEK CAPITAL LETTER ETA" },
413 { "H*", 0x0398, "GREEK CAPITAL LETTER THETA" },
414 { "I*", 0x0399, "GREEK CAPITAL LETTER IOTA" },
415 { "K*", 0x039a, "GREEK CAPITAL LETTER KAPPA" },
416 { "L*", 0x039b, "GREEK CAPITAL LETTER LAMDA" },
417 { "M*", 0x039c, "GREEK CAPITAL LETTER MU" },
418 { "N*", 0x039d, "GREEK CAPITAL LETTER NU" },
419 { "C*", 0x039e, "GREEK CAPITAL LETTER XI" },
420 { "O*", 0x039f, "GREEK CAPITAL LETTER OMICRON" },
421 { "P*", 0x03a0, "GREEK CAPITAL LETTER PI" },
422 { "R*", 0x03a1, "GREEK CAPITAL LETTER RHO" },
423 { "S*", 0x03a3, "GREEK CAPITAL LETTER SIGMA" },
424 { "T*", 0x03a4, "GREEK CAPITAL LETTER TAU" },
425 { "U*", 0x03a5, "GREEK CAPITAL LETTER UPSILON" },
426 { "F*", 0x03a6, "GREEK CAPITAL LETTER PHI" },
427 { "X*", 0x03a7, "GREEK CAPITAL LETTER CHI" },
428 { "Q*", 0x03a8, "GREEK CAPITAL LETTER PSI" },
429 { "W*", 0x03a9, "GREEK CAPITAL LETTER OMEGA" },
430 { "J*", 0x03aa, "GREEK CAPITAL LETTER IOTA WITH DIAERESIS" },
431 { "V*", 0x03ab, "GREEK CAPITAL LETTER UPSILON WITH DIAERESIS" },
432 { "a%", 0x03ac, "GREEK SMALL LETTER ALPHA WITH ACUTE" },
433 { "e%", 0x03ad, "GREEK SMALL LETTER EPSILON WITH ACUTE" },
434 { "y%", 0x03ae, "GREEK SMALL LETTER ETA WITH ACUTE" },
435 { "i%", 0x03af, "GREEK SMALL LETTER IOTA WITH ACUTE" },
436 { "u3", 0x03b0, "GREEK SMALL LETTER UPSILON WITH ACUTE AND DIAERESIS" },
437 { "a*", 0x03b1, "GREEK SMALL LETTER ALPHA" },
438 { "b*", 0x03b2, "GREEK SMALL LETTER BETA" },
439 { "g*", 0x03b3, "GREEK SMALL LETTER GAMMA" },
440 { "d*", 0x03b4, "GREEK SMALL LETTER DELTA" },
441 { "e*", 0x03b5, "GREEK SMALL LETTER EPSILON" },
442 { "z*", 0x03b6, "GREEK SMALL LETTER ZETA" },
443 { "y*", 0x03b7, "GREEK SMALL LETTER ETA" },
444 { "h*", 0x03b8, "GREEK SMALL LETTER THETA" },
445 { "i*", 0x03b9, "GREEK SMALL LETTER IOTA" },
446 { "k*", 0x03ba, "GREEK SMALL LETTER KAPPA" },
447 { "l*", 0x03bb, "GREEK SMALL LETTER LAMDA" },
448 { "m*", 0x03bc, "GREEK SMALL LETTER MU" },
449 { "n*", 0x03bd, "GREEK SMALL LETTER NU" },
450 { "c*", 0x03be, "GREEK SMALL LETTER XI" },
451 { "o*", 0x03bf, "GREEK SMALL LETTER OMICRON" },
452 { "p*", 0x03c0, "GREEK SMALL LETTER PI" },
453 { "r*", 0x03c1, "GREEK SMALL LETTER RHO" },
454 { "*s", 0x03c2, "GREEK SMALL LETTER FINAL SIGMA" },
455 { "s*", 0x03c3, "GREEK SMALL LETTER SIGMA" },
456 { "t*", 0x03c4, "GREEK SMALL LETTER TAU" },
457 { "u*", 0x03c5, "GREEK SMALL LETTER UPSILON" },
458 { "f*", 0x03c6, "GREEK SMALL LETTER PHI" },
459 { "x*", 0x03c7, "GREEK SMALL LETTER CHI" },
460 { "q*", 0x03c8, "GREEK SMALL LETTER PSI" },
461 { "w*", 0x03c9, "GREEK SMALL LETTER OMEGA" },
462 { "j*", 0x03ca, "GREEK SMALL LETTER IOTA WITH DIAERESIS" },
463 { "v*", 0x03cb, "GREEK SMALL LETTER UPSILON WITH DIAERESIS" },
464 { "o%", 0x03cc, "GREEK SMALL LETTER OMICRON WITH ACUTE" },
465 { "u%", 0x03cd, "GREEK SMALL LETTER UPSILON WITH ACUTE" },
466 { "w%", 0x03ce, "GREEK SMALL LETTER OMEGA WITH ACUTE" },
467 { "'G", 0x03d8, "GREEK NUMERAL SIGN" },
468 { ",G", 0x03d9, "GREEK LOWER NUMERAL SIGN" },
469 { "T3", 0x03da, "GREEK CAPITAL LETTER STIGMA" },
470 { "t3", 0x03db, "GREEK SMALL LETTER STIGMA" },
471 { "M3", 0x03dc, "GREEK CAPITAL LETTER DIGAMMA" },
472 { "m3", 0x03dd, "GREEK SMALL LETTER DIGAMMA" },
473 { "K3", 0x03de, "GREEK CAPITAL LETTER KOPPA" },
474 { "k3", 0x03df, "GREEK SMALL LETTER KOPPA" },
475 { "P3", 0x03e0, "GREEK CAPITAL LETTER SAMPI" },
476 { "p3", 0x03e1, "GREEK SMALL LETTER SAMPI" },
477 { "'%", 0x03f4, "ACUTE ACCENT AND DIAERESIS (Tonos and Dialytika)" },
478 { "j3", 0x03f5, "GREEK IOTA BELOW" },
479 { "IO", 0x0401, "CYRILLIC CAPITAL LETTER IO" },
480 { "D%", 0x0402, "CYRILLIC CAPITAL LETTER DJE (Serbocroatian)" },
481 { "G%", 0x0403, "CYRILLIC CAPITAL LETTER GJE (Macedonian)" },
482 { "IE", 0x0404, "CYRILLIC CAPITAL LETTER UKRAINIAN IE" },
483 { "DS", 0x0405, "CYRILLIC CAPITAL LETTER DZE (Macedonian)" },
484 { "II", 0x0406, "CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I" },
485 { "YI", 0x0407, "CYRILLIC CAPITAL LETTER YI (Ukrainian)" },
486 { "J%", 0x0408, "CYRILLIC CAPITAL LETTER JE" },
487 { "LJ", 0x0409, "CYRILLIC CAPITAL LETTER LJE" },
488 { "NJ", 0x040a, "CYRILLIC CAPITAL LETTER NJE" },
489 { "Ts", 0x040b, "CYRILLIC CAPITAL LETTER TSHE (Serbocroatian)" },
490 { "KJ", 0x040c, "CYRILLIC CAPITAL LETTER KJE (Macedonian)" },
491 { "V%", 0x040e, "CYRILLIC CAPITAL LETTER SHORT U (Byelorussian)" },
492 { "DZ", 0x040f, "CYRILLIC CAPITAL LETTER DZHE" },
493 { "A=", 0x0410, "CYRILLIC CAPITAL LETTER A" },
494 { "B=", 0x0411, "CYRILLIC CAPITAL LETTER BE" },
495 { "V=", 0x0412, "CYRILLIC CAPITAL LETTER VE" },
496 { "G=", 0x0413, "CYRILLIC CAPITAL LETTER GHE" },
497 { "D=", 0x0414, "CYRILLIC CAPITAL LETTER DE" },
498 { "E=", 0x0415, "CYRILLIC CAPITAL LETTER IE" },
499 { "Z%", 0x0416, "CYRILLIC CAPITAL LETTER ZHE" },
500 { "Z=", 0x0417, "CYRILLIC CAPITAL LETTER ZE" },
501 { "I=", 0x0418, "CYRILLIC CAPITAL LETTER I" },
502 { "J=", 0x0419, "CYRILLIC CAPITAL LETTER SHORT I" },
503 { "K=", 0x041a, "CYRILLIC CAPITAL LETTER KA" },
504 { "L=", 0x041b, "CYRILLIC CAPITAL LETTER EL" },
505 { "M=", 0x041c, "CYRILLIC CAPITAL LETTER EM" },
506 { "N=", 0x041d, "CYRILLIC CAPITAL LETTER EN" },
507 { "O=", 0x041e, "CYRILLIC CAPITAL LETTER O" },
508 { "P=", 0x041f, "CYRILLIC CAPITAL LETTER PE" },
509 { "R=", 0x0420, "CYRILLIC CAPITAL LETTER ER" },
510 { "S=", 0x0421, "CYRILLIC CAPITAL LETTER ES" },
511 { "T=", 0x0422, "CYRILLIC CAPITAL LETTER TE" },
512 { "U=", 0x0423, "CYRILLIC CAPITAL LETTER U" },
513 { "F=", 0x0424, "CYRILLIC CAPITAL LETTER EF" },
514 { "H=", 0x0425, "CYRILLIC CAPITAL LETTER HA" },
515 { "C=", 0x0426, "CYRILLIC CAPITAL LETTER TSE" },
516 { "C%", 0x0427, "CYRILLIC CAPITAL LETTER CHE" },
517 { "S%", 0x0428, "CYRILLIC CAPITAL LETTER SHA" },
518 { "Sc", 0x0429, "CYRILLIC CAPITAL LETTER SHCHA" },
519 { "=\"", 0x042a, "CYRILLIC CAPITAL LETTER HARD SIGN" },
520 { "Y=", 0x042b, "CYRILLIC CAPITAL LETTER YERU" },
521 { "%\"", 0x042c, "CYRILLIC CAPITAL LETTER SOFT SIGN" },
522 { "JE", 0x042d, "CYRILLIC CAPITAL LETTER E" },
523 { "JU", 0x042e, "CYRILLIC CAPITAL LETTER YU" },
524 { "JA", 0x042f, "CYRILLIC CAPITAL LETTER YA" },
525 { "a=", 0x0430, "CYRILLIC SMALL LETTER A" },
526 { "b=", 0x0431, "CYRILLIC SMALL LETTER BE" },
527 { "v=", 0x0432, "CYRILLIC SMALL LETTER VE" },
528 { "g=", 0x0433, "CYRILLIC SMALL LETTER GHE" },
529 { "d=", 0x0434, "CYRILLIC SMALL LETTER DE" },
530 { "e=", 0x0435, "CYRILLIC SMALL LETTER IE" },
531 { "z%", 0x0436, "CYRILLIC SMALL LETTER ZHE" },
532 { "z=", 0x0437, "CYRILLIC SMALL LETTER ZE" },
533 { "i=", 0x0438, "CYRILLIC SMALL LETTER I" },
534 { "j=", 0x0439, "CYRILLIC SMALL LETTER SHORT I" },
535 { "k=", 0x043a, "CYRILLIC SMALL LETTER KA" },
536 { "l=", 0x043b, "CYRILLIC SMALL LETTER EL" },
537 { "m=", 0x043c, "CYRILLIC SMALL LETTER EM" },
538 { "n=", 0x043d, "CYRILLIC SMALL LETTER EN" },
539 { "o=", 0x043e, "CYRILLIC SMALL LETTER O" },
540 { "p=", 0x043f, "CYRILLIC SMALL LETTER PE" },
541 { "r=", 0x0440, "CYRILLIC SMALL LETTER ER" },
542 { "s=", 0x0441, "CYRILLIC SMALL LETTER ES" },
543 { "t=", 0x0442, "CYRILLIC SMALL LETTER TE" },
544 { "u=", 0x0443, "CYRILLIC SMALL LETTER U" },
545 { "f=", 0x0444, "CYRILLIC SMALL LETTER EF" },
546 { "h=", 0x0445, "CYRILLIC SMALL LETTER HA" },
547 { "c=", 0x0446, "CYRILLIC SMALL LETTER TSE" },
548 { "c%", 0x0447, "CYRILLIC SMALL LETTER CHE" },
549 { "s%", 0x0448, "CYRILLIC SMALL LETTER SHA" },
550 { "sc", 0x0449, "CYRILLIC SMALL LETTER SHCHA" },
551 { "='", 0x044a, "CYRILLIC SMALL LETTER HARD SIGN" },
552 { "y=", 0x044b, "CYRILLIC SMALL LETTER YERU" },
553 { "%'", 0x044c, "CYRILLIC SMALL LETTER SOFT SIGN" },
554 { "je", 0x044d, "CYRILLIC SMALL LETTER E" },
555 { "ju", 0x044e, "CYRILLIC SMALL LETTER YU" },
556 { "ja", 0x044f, "CYRILLIC SMALL LETTER YA" },
557 { "io", 0x0451, "CYRILLIC SMALL LETTER IO" },
558 { "d%", 0x0452, "CYRILLIC SMALL LETTER DJE (Serbocroatian)" },
559 { "g%", 0x0453, "CYRILLIC SMALL LETTER GJE (Macedonian)" },
560 { "ie", 0x0454, "CYRILLIC SMALL LETTER UKRAINIAN IE" },
561 { "ds", 0x0455, "CYRILLIC SMALL LETTER DZE (Macedonian)" },
562 { "ii", 0x0456, "CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I" },
563 { "yi", 0x0457, "CYRILLIC SMALL LETTER YI (Ukrainian)" },
564 { "j%", 0x0458, "CYRILLIC SMALL LETTER JE" },
565 { "lj", 0x0459, "CYRILLIC SMALL LETTER LJE" },
566 { "nj", 0x045a, "CYRILLIC SMALL LETTER NJE" },
567 { "ts", 0x045b, "CYRILLIC SMALL LETTER TSHE (Serbocroatian)" },
568 { "kj", 0x045c, "CYRILLIC SMALL LETTER KJE (Macedonian)" },
569 { "v%", 0x045e, "CYRILLIC SMALL LETTER SHORT U (Byelorussian)" },
570 { "dz", 0x045f, "CYRILLIC SMALL LETTER DZHE" },
571 { "Y3", 0x0462, "CYRILLIC CAPITAL LETTER YAT" },
572 { "y3", 0x0463, "CYRILLIC SMALL LETTER YAT" },
573 { "O3", 0x046a, "CYRILLIC CAPITAL LETTER BIG YUS" },
574 { "o3", 0x046b, "CYRILLIC SMALL LETTER BIG YUS" },
575 { "F3", 0x0472, "CYRILLIC CAPITAL LETTER FITA" },
576 { "f3", 0x0473, "CYRILLIC SMALL LETTER FITA" },
577 { "V3", 0x0474, "CYRILLIC CAPITAL LETTER IZHITSA" },
578 { "v3", 0x0475, "CYRILLIC SMALL LETTER IZHITSA" },
579 { "C3", 0x0480, "CYRILLIC CAPITAL LETTER KOPPA" },
580 { "c3", 0x0481, "CYRILLIC SMALL LETTER KOPPA" },
581 { "G3", 0x0490, "CYRILLIC CAPITAL LETTER GHE WITH UPTURN" },
582 { "g3", 0x0491, "CYRILLIC SMALL LETTER GHE WITH UPTURN" },
583 { "A+", 0x05d0, "HEBREW LETTER ALEF" },
584 { "B+", 0x05d1, "HEBREW LETTER BET" },
585 { "G+", 0x05d2, "HEBREW LETTER GIMEL" },
586 { "D+", 0x05d3, "HEBREW LETTER DALET" },
587 { "H+", 0x05d4, "HEBREW LETTER HE" },
588 { "W+", 0x05d5, "HEBREW LETTER VAV" },
589 { "Z+", 0x05d6, "HEBREW LETTER ZAYIN" },
590 { "X+", 0x05d7, "HEBREW LETTER HET" },
591 { "Tj", 0x05d8, "HEBREW LETTER TET" },
592 { "J+", 0x05d9, "HEBREW LETTER YOD" },
593 { "K%", 0x05da, "HEBREW LETTER FINAL KAF" },
594 { "K+", 0x05db, "HEBREW LETTER KAF" },
595 { "L+", 0x05dc, "HEBREW LETTER LAMED" },
596 { "M%", 0x05dd, "HEBREW LETTER FINAL MEM" },
597 { "M+", 0x05de, "HEBREW LETTER MEM" },
598 { "N%", 0x05df, "HEBREW LETTER FINAL NUN" },
599 { "N+", 0x05e0, "HEBREW LETTER NUN" },
600 { "S+", 0x05e1, "HEBREW LETTER SAMEKH" },
601 { "E+", 0x05e2, "HEBREW LETTER AYIN" },
602 { "P%", 0x05e3, "HEBREW LETTER FINAL PE" },
603 { "P+", 0x05e4, "HEBREW LETTER PE" },
604 { "Zj", 0x05e5, "HEBREW LETTER FINAL TSADI" },
605 { "ZJ", 0x05e6, "HEBREW LETTER TSADI" },
606 { "Q+", 0x05e7, "HEBREW LETTER QOF" },
607 { "R+", 0x05e8, "HEBREW LETTER RESH" },
608 { "Sh", 0x05e9, "HEBREW LETTER SHIN" },
609 { "T+", 0x05ea, "HEBREW LETTER TAV" },
610 { ",+", 0x060c, "ARABIC COMMA" },
611 { ";+", 0x061b, "ARABIC SEMICOLON" },
612 { "?+", 0x061f, "ARABIC QUESTION MARK" },
613 { "H'", 0x0621, "ARABIC LETTER HAMZA" },
614 { "aM", 0x0622, "ARABIC LETTER ALEF WITH MADDA ABOVE" },
615 { "aH", 0x0623, "ARABIC LETTER ALEF WITH HAMZA ABOVE" },
616 { "wH", 0x0624, "ARABIC LETTER WAW WITH HAMZA ABOVE" },
617 { "ah", 0x0625, "ARABIC LETTER ALEF WITH HAMZA BELOW" },
618 { "yH", 0x0626, "ARABIC LETTER YEH WITH HAMZA ABOVE" },
619 { "a+", 0x0627, "ARABIC LETTER ALEF" },
620 { "b+", 0x0628, "ARABIC LETTER BEH" },
621 { "tm", 0x0629, "ARABIC LETTER TEH MARBUTA" },
622 { "t+", 0x062a, "ARABIC LETTER TEH" },
623 { "tk", 0x062b, "ARABIC LETTER THEH" },
624 { "g+", 0x062c, "ARABIC LETTER JEEM" },
625 { "hk", 0x062d, "ARABIC LETTER HAH" },
626 { "x+", 0x062e, "ARABIC LETTER KHAH" },
627 { "d+", 0x062f, "ARABIC LETTER DAL" },
628 { "dk", 0x0630, "ARABIC LETTER THAL" },
629 { "r+", 0x0631, "ARABIC LETTER REH" },
630 { "z+", 0x0632, "ARABIC LETTER ZAIN" },
631 { "s+", 0x0633, "ARABIC LETTER SEEN" },
632 { "sn", 0x0634, "ARABIC LETTER SHEEN" },
633 { "c+", 0x0635, "ARABIC LETTER SAD" },
634 { "dd", 0x0636, "ARABIC LETTER DAD" },
635 { "tj", 0x0637, "ARABIC LETTER TAH" },
636 { "zH", 0x0638, "ARABIC LETTER ZAH" },
637 { "e+", 0x0639, "ARABIC LETTER AIN" },
638 { "i+", 0x063a, "ARABIC LETTER GHAIN" },
639 { "++", 0x0640, "ARABIC TATWEEL" },
640 { "f+", 0x0641, "ARABIC LETTER FEH" },
641 { "q+", 0x0642, "ARABIC LETTER QAF" },
642 { "k+", 0x0643, "ARABIC LETTER KAF" },
643 { "l+", 0x0644, "ARABIC LETTER LAM" },
644 { "m+", 0x0645, "ARABIC LETTER MEEM" },
645 { "n+", 0x0646, "ARABIC LETTER NOON" },
646 { "h+", 0x0647, "ARABIC LETTER HEH" },
647 { "w+", 0x0648, "ARABIC LETTER WAW" },
648 { "j+", 0x0649, "ARABIC LETTER ALEF MAKSURA" },
649 { "y+", 0x064a, "ARABIC LETTER YEH" },
650 { ":+", 0x064b, "ARABIC FATHATAN" },
651 { "\"+", 0x064c, "ARABIC DAMMATAN" },
652 { "=+", 0x064d, "ARABIC KASRATAN" },
653 { "/+", 0x064e, "ARABIC FATHA" },
654 { "'+", 0x064f, "ARABIC DAMMA" },
655 { "1+", 0x0650, "ARABIC KASRA" },
656 { "3+", 0x0651, "ARABIC SHADDA" },
657 { "0+", 0x0652, "ARABIC SUKUN" },
658 { "aS", 0x0670, "SUPERSCRIPT ARABIC LETTER ALEF" },
659 { "p+", 0x067e, "ARABIC LETTER PEH" },
660 { "v+", 0x06a4, "ARABIC LETTER VEH" },
661 { "gf", 0x06af, "ARABIC LETTER GAF" },
662 { "0a", 0x06f0, "EASTERN ARABIC-INDIC DIGIT ZERO" },
663 { "1a", 0x06f1, "EASTERN ARABIC-INDIC DIGIT ONE" },
664 { "2a", 0x06f2, "EASTERN ARABIC-INDIC DIGIT TWO" },
665 { "3a", 0x06f3, "EASTERN ARABIC-INDIC DIGIT THREE" },
666 { "4a", 0x06f4, "EASTERN ARABIC-INDIC DIGIT FOUR" },
667 { "5a", 0x06f5, "EASTERN ARABIC-INDIC DIGIT FIVE" },
668 { "6a", 0x06f6, "EASTERN ARABIC-INDIC DIGIT SIX" },
669 { "7a", 0x06f7, "EASTERN ARABIC-INDIC DIGIT SEVEN" },
670 { "8a", 0x06f8, "EASTERN ARABIC-INDIC DIGIT EIGHT" },
671 { "9a", 0x06f9, "EASTERN ARABIC-INDIC DIGIT NINE" },
672 { "A-0", 0x1e00, "LATIN CAPITAL LETTER A WITH RING BELOW" },
673 { "a-0", 0x1e01, "LATIN SMALL LETTER A WITH RING BELOW" },
674 { "B.", 0x1e02, "LATIN CAPITAL LETTER B WITH DOT ABOVE" },
675 { "b.", 0x1e03, "LATIN SMALL LETTER B WITH DOT ABOVE" },
676 { "B-.", 0x1e04, "LATIN CAPITAL LETTER B WITH DOT BELOW" },
677 { "b-.", 0x1e05, "LATIN SMALL LETTER B WITH DOT BELOW" },
678 { "B_", 0x1e06, "LATIN CAPITAL LETTER B WITH LINE BELOW" },
679 { "b_", 0x1e07, "LATIN SMALL LETTER B WITH LINE BELOW" },
680 { "C,'", 0x1e08, "LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE" },
681 { "c,'", 0x1e09, "LATIN SMALL LETTER C WITH CEDILLA AND ACUTE" },
682 { "D.", 0x1e0a, "LATIN CAPITAL LETTER D WITH DOT ABOVE" },
683 { "d.", 0x1e0b, "LATIN SMALL LETTER D WITH DOT ABOVE" },
684 { "D-.", 0x1e0c, "LATIN CAPITAL LETTER D WITH DOT BELOW" },
685 { "d-.", 0x1e0d, "LATIN SMALL LETTER D WITH DOT BELOW" },
686 { "D_", 0x1e0e, "LATIN CAPITAL LETTER D WITH LINE BELOW" },
687 { "d_", 0x1e0f, "LATIN SMALL LETTER D WITH LINE BELOW" },
688 { "D,", 0x1e10, "LATIN CAPITAL LETTER D WITH CEDILLA" },
689 { "d,", 0x1e11, "LATIN SMALL LETTER D WITH CEDILLA" },
690 { "D->", 0x1e12, "LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW" },
691 { "d->", 0x1e13, "LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW" },
692 { "E-!", 0x1e14, "LATIN CAPITAL LETTER E WITH MACRON AND GRAVE" },
693 { "e-!", 0x1e15, "LATIN SMALL LETTER E WITH MACRON AND GRAVE" },
694 { "E-'", 0x1e16, "LATIN CAPITAL LETTER E WITH MACRON AND ACUTE" },
695 { "e-'", 0x1e17, "LATIN SMALL LETTER E WITH MACRON AND ACUTE" },
696 { "E->", 0x1e18, "LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW" },
697 { "e->", 0x1e19, "LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW" },
698 { "E-?", 0x1e1a, "LATIN CAPITAL LETTER E WITH TILDE BELOW" },
699 { "e-?", 0x1e1b, "LATIN SMALL LETTER E WITH TILDE BELOW" },
700 { "E,(", 0x1e1c, "LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE" },
701 { "e,(", 0x1e1d, "LATIN SMALL LETTER E WITH CEDILLA AND BREVE" },
702 { "F.", 0x1e1e, "LATIN CAPITAL LETTER F WITH DOT ABOVE" },
703 { "f.", 0x1e1f, "LATIN SMALL LETTER F WITH DOT ABOVE" },
704 { "G-", 0x1e20, "LATIN CAPITAL LETTER G WITH MACRON" },
705 { "g-", 0x1e21, "LATIN SMALL LETTER G WITH MACRON" },
706 { "H.", 0x1e22, "LATIN CAPITAL LETTER H WITH DOT ABOVE" },
707 { "h.", 0x1e23, "LATIN SMALL LETTER H WITH DOT ABOVE" },
708 { "H-.", 0x1e24, "LATIN CAPITAL LETTER H WITH DOT BELOW" },
709 { "h-.", 0x1e25, "LATIN SMALL LETTER H WITH DOT BELOW" },
710 { "H:", 0x1e26, "LATIN CAPITAL LETTER H WITH DIAERESIS" },
711 { "h:", 0x1e27, "LATIN SMALL LETTER H WITH DIAERESIS" },
712 { "H,", 0x1e28, "LATIN CAPITAL LETTER H WITH CEDILLA" },
713 { "h,", 0x1e29, "LATIN SMALL LETTER H WITH CEDILLA" },
714 { "H-(", 0x1e2a, "LATIN CAPITAL LETTER H WITH BREVE BELOW" },
715 { "h-(", 0x1e2b, "LATIN SMALL LETTER H WITH BREVE BELOW" },
716 { "I-?", 0x1e2c, "LATIN CAPITAL LETTER I WITH TILDE BELOW" },
717 { "i-?", 0x1e2d, "LATIN SMALL LETTER I WITH TILDE BELOW" },
718 { "I:'", 0x1e2e, "LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE" },
719 { "i:'", 0x1e2f, "LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE" },
720 { "K'", 0x1e30, "LATIN CAPITAL LETTER K WITH ACUTE" },
721 { "k'", 0x1e31, "LATIN SMALL LETTER K WITH ACUTE" },
722 { "K-.", 0x1e32, "LATIN CAPITAL LETTER K WITH DOT BELOW" },
723 { "k-.", 0x1e33, "LATIN SMALL LETTER K WITH DOT BELOW" },
724 { "K_", 0x1e34, "LATIN CAPITAL LETTER K WITH LINE BELOW" },
725 { "k_", 0x1e35, "LATIN SMALL LETTER K WITH LINE BELOW" },
726 { "L-.", 0x1e36, "LATIN CAPITAL LETTER L WITH DOT BELOW" },
727 { "l-.", 0x1e37, "LATIN SMALL LETTER L WITH DOT BELOW" },
728 { "L--.", 0x1e38, "LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON" },
729 { "l--.", 0x1e39, "LATIN SMALL LETTER L WITH DOT BELOW AND MACRON" },
730 { "L_", 0x1e3a, "LATIN CAPITAL LETTER L WITH LINE BELOW" },
731 { "l_", 0x1e3b, "LATIN SMALL LETTER L WITH LINE BELOW" },
732 { "L->", 0x1e3c, "LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW" },
733 { "l->", 0x1e3d, "LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW" },
734 { "M'", 0x1e3e, "LATIN CAPITAL LETTER M WITH ACUTE" },
735 { "m'", 0x1e3f, "LATIN SMALL LETTER M WITH ACUTE" },
736 { "M.", 0x1e40, "LATIN CAPITAL LETTER M WITH DOT ABOVE" },
737 { "m.", 0x1e41, "LATIN SMALL LETTER M WITH DOT ABOVE" },
738 { "M-.", 0x1e42, "LATIN CAPITAL LETTER M WITH DOT BELOW" },
739 { "m-.", 0x1e43, "LATIN SMALL LETTER M WITH DOT BELOW" },
740 { "N.", 0x1e44, "LATIN CAPITAL LETTER N WITH DOT ABOVE" },
741 { "n.", 0x1e45, "LATIN SMALL LETTER N WITH DOT ABOVE" },
742 { "N-.", 0x1e46, "LATIN CAPITAL LETTER N WITH DOT BELOW" },
743 { "n-.", 0x1e47, "LATIN SMALL LETTER N WITH DOT BELOW" },
744 { "N_", 0x1e48, "LATIN CAPITAL LETTER N WITH LINE BELOW" },
745 { "n_", 0x1e49, "LATIN SMALL LETTER N WITH LINE BELOW" },
746 { "N->", 0x1e4a, "LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW" },
747 { "N->", 0x1e4b, "LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW" },
748 { "O?'", 0x1e4c, "LATIN CAPITAL LETTER O WITH TILDE AND ACUTE" },
749 { "o?'", 0x1e4d, "LATIN SMALL LETTER O WITH TILDE AND ACUTE" },
750 { "O?:", 0x1e4e, "LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS" },
751 { "o?:", 0x1e4f, "LATIN SMALL LETTER O WITH TILDE AND DIAERESIS" },
752 { "O-!", 0x1e50, "LATIN CAPITAL LETTER O WITH MACRON AND GRAVE" },
753 { "o-!", 0x1e51, "LATIN SMALL LETTER O WITH MACRON AND GRAVE" },
754 { "O-'", 0x1e52, "LATIN CAPITAL LETTER O WITH MACRON AND ACUTE" },
755 { "o-'", 0x1e53, "LATIN SMALL LETTER O WITH MACRON AND ACUTE" },
756 { "P'", 0x1e54, "LATIN CAPITAL LETTER P WITH ACUTE" },
757 { "p'", 0x1e55, "LATIN SMALL LETTER P WITH ACUTE" },
758 { "P.", 0x1e56, "LATIN CAPITAL LETTER P WITH DOT ABOVE" },
759 { "p.", 0x1e57, "LATIN SMALL LETTER P WITH DOT ABOVE" },
760 { "R.", 0x1e58, "LATIN CAPITAL LETTER R WITH DOT ABOVE" },
761 { "r.", 0x1e59, "LATIN SMALL LETTER R WITH DOT ABOVE" },
762 { "R-.", 0x1e5a, "LATIN CAPITAL LETTER R WITH DOT BELOW" },
763 { "r-.", 0x1e5b, "LATIN SMALL LETTER R WITH DOT BELOW" },
764 { "R--.", 0x1e5c, "LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON" },
765 { "r--.", 0x1e5d, "LATIN SMALL LETTER R WITH DOT BELOW AND MACRON" },
766 { "R_", 0x1e5e, "LATIN CAPITAL LETTER R WITH LINE BELOW" },
767 { "r_", 0x1e5f, "LATIN SMALL LETTER R WITH LINE BELOW" },
768 { "S.", 0x1e60, "LATIN CAPITAL LETTER S WITH DOT ABOVE" },
769 { "s.", 0x1e61, "LATIN SMALL LETTER S WITH DOT ABOVE" },
770 { "S-.", 0x1e62, "LATIN CAPITAL LETTER S WITH DOT BELOW" },
771 { "s-.", 0x1e63, "LATIN SMALL LETTER S WITH DOT BELOW" },
772 { "S'.", 0x1e64, "LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE" },
773 { "s'.", 0x1e65, "LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE" },
774 { "S<.", 0x1e66, "LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE" },
775 { "s<.", 0x1e67, "LATIN SMALL LETTER S WITH CARON AND DOT ABOVE" },
776 { "S.-.", 0x1e68, "LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE" },
777 { "S.-.", 0x1e69, "LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE" },
778 { "T.", 0x1e6a, "LATIN CAPITAL LETTER T WITH DOT ABOVE" },
779 { "t.", 0x1e6b, "LATIN SMALL LETTER T WITH DOT ABOVE" },
780 { "T-.", 0x1e6c, "LATIN CAPITAL LETTER T WITH DOT BELOW" },
781 { "t-.", 0x1e6d, "LATIN SMALL LETTER T WITH DOT BELOW" },
782 { "T_", 0x1e6e, "LATIN CAPITAL LETTER T WITH LINE BELOW" },
783 { "t_", 0x1e6f, "LATIN SMALL LETTER T WITH LINE BELOW" },
784 { "T->", 0x1e70, "LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW" },
785 { "t->", 0x1e71, "LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW" },
786 { "U--:", 0x1e72, "LATIN CAPITAL LETTER U WITH DIAERESIS BELOW" },
787 { "u--:", 0x1e73, "LATIN SMALL LETTER U WITH DIAERESIS BELOW" },
788 { "U-?", 0x1e74, "LATIN CAPITAL LETTER U WITH TILDE BELOW" },
789 { "u-?", 0x1e75, "LATIN SMALL LETTER U WITH TILDE BELOW" },
790 { "U->", 0x1e76, "LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW" },
791 { "u->", 0x1e77, "LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW" },
792 { "U?'", 0x1e78, "LATIN CAPITAL LETTER U WITH TILDE AND ACUTE" },
793 { "u?'", 0x1e79, "LATIN SMALL LETTER U WITH TILDE AND ACUTE" },
794 { "U-:", 0x1e7a, "LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS" },
795 { "u-:", 0x1e7b, "LATIN SMALL LETTER U WITH MACRON AND DIAERESIS" },
796 { "V?", 0x1e7c, "LATIN CAPITAL LETTER V WITH TILDE" },
797 { "v?", 0x1e7d, "LATIN SMALL LETTER V WITH TILDE" },
798 { "V-.", 0x1e7e, "LATIN CAPITAL LETTER V WITH DOT BELOW" },
799 { "v-.", 0x1e7f, "LATIN SMALL LETTER V WITH DOT BELOW" },
800 { "W!", 0x1e80, "LATIN CAPITAL LETTER W WITH GRAVE" },
801 { "w!", 0x1e81, "LATIN SMALL LETTER W WITH GRAVE" },
802 { "W'", 0x1e82, "LATIN CAPITAL LETTER W WITH ACUTE" },
803 { "w'", 0x1e83, "LATIN SMALL LETTER W WITH ACUTE" },
804 { "W:", 0x1e84, "LATIN CAPITAL LETTER W WITH DIAERESIS" },
805 { "w:", 0x1e85, "LATIN SMALL LETTER W WITH DIAERESIS" },
806 { "W.", 0x1e86, "LATIN CAPITAL LETTER W WITH DOT ABOVE" },
807 { "w.", 0x1e87, "LATIN SMALL LETTER W WITH DOT ABOVE" },
808 { "W-.", 0x1e88, "LATIN CAPITAL LETTER W WITH DOT BELOW" },
809 { "w-.", 0x1e89, "LATIN SMALL LETTER W WITH DOT BELOW" },
810 { "X.", 0x1e8a, "LATIN CAPITAL LETTER X WITH DOT ABOVE" },
811 { "x.", 0x1e8b, "LATIN SMALL LETTER X WITH DOT ABOVE" },
812 { "X:", 0x1e8c, "LATIN CAPITAL LETTER X WITH DIAERESIS" },
813 { "x:", 0x1e8d, "LATIN SMALL LETTER X WITH DIAERESIS" },
814 { "Y.", 0x1e8e, "LATIN CAPITAL LETTER Y WITH DOT ABOVE" },
815 { "y.", 0x1e8f, "LATIN SMALL LETTER Y WITH DOT ABOVE" },
816 { "Z>", 0x1e90, "LATIN CAPITAL LETTER Z WITH CIRCUMFLEX" },
817 { "z>", 0x1e91, "LATIN SMALL LETTER Z WITH CIRCUMFLEX" },
818 { "Z-.", 0x1e92, "LATIN CAPITAL LETTER Z WITH DOT BELOW" },
819 { "z-.", 0x1e93, "LATIN SMALL LETTER Z WITH DOT BELOW" },
820 { "Z_", 0x1e94, "LATIN CAPITAL LETTER Z WITH LINE BELOW" },
821 { "z_", 0x1e95, "LATIN SMALL LETTER Z WITH LINE BELOW" },
822 { "h_", 0x1e96, "LATIN SMALL LETTER H WITH LINE BELOW" },
823 { "t:", 0x1e97, "LATIN SMALL LETTER T WITH DIAERESIS" },
824 { "w0", 0x1e98, "LATIN SMALL LETTER W WITH RING ABOVE" },
825 { "y0", 0x1e99, "LATIN SMALL LETTER Y WITH RING ABOVE" },
826 { "A-.", 0x1ea0, "LATIN CAPITAL LETTER A WITH DOT BELOW" },
827 { "a-.", 0x1ea1, "LATIN SMALL LETTER A WITH DOT BELOW" },
828 { "A2", 0x1ea2, "LATIN CAPITAL LETTER A WITH HOOK ABOVE" },
829 { "a2", 0x1ea3, "LATIN SMALL LETTER A WITH HOOK ABOVE" },
830 { "A>'", 0x1ea4, "LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE" },
831 { "a>'", 0x1ea5, "LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE" },
832 { "A>!", 0x1ea6, "LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE" },
833 { "a>!", 0x1ea7, "LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE" },
834 { "A>2", 0x1ea8, "LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE" },
835 { "a>2", 0x1ea9, "LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE" },
836 { "A>?", 0x1eaa, "LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE" },
837 { "a>?", 0x1eab, "LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE" },
838 { "A>-.", 0x1eac, "LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW" },
839 { "a>-.", 0x1ead, "LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW" },
840 { "A('", 0x1eae, "LATIN CAPITAL LETTER A WITH BREVE AND ACUTE" },
841 { "a('", 0x1eaf, "LATIN SMALL LETTER A WITH BREVE AND ACUTE" },
842 { "A(!", 0x1eb0, "LATIN CAPITAL LETTER A WITH BREVE AND GRAVE" },
843 { "a(!", 0x1eb1, "LATIN SMALL LETTER A WITH BREVE AND GRAVE" },
844 { "A(2", 0x1eb2, "LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE" },
845 { "a(2", 0x1eb3, "LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE" },
846 { "A(?", 0x1eb4, "LATIN CAPITAL LETTER A WITH BREVE AND TILDE" },
847 { "a(?", 0x1eb5, "LATIN SMALL LETTER A WITH BREVE AND TILDE" },
848 { "A(-.", 0x1eb6, "LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW" },
849 { "a(-.", 0x1eb7, "LATIN SMALL LETTER A WITH BREVE AND DOT BELOW" },
850 { "E-.", 0x1eb8, "LATIN CAPITAL LETTER E WITH DOT BELOW" },
851 { "e-.", 0x1eb9, "LATIN SMALL LETTER E WITH DOT BELOW" },
852 { "E2", 0x1eba, "LATIN CAPITAL LETTER E WITH HOOK ABOVE" },
853 { "e2", 0x1ebb, "LATIN SMALL LETTER E WITH HOOK ABOVE" },
854 { "E?", 0x1ebc, "LATIN CAPITAL LETTER E WITH TILDE" },
855 { "e?", 0x1ebd, "LATIN SMALL LETTER E WITH TILDE" },
856 { "E>'", 0x1ebe, "LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE" },
857 { "e>'", 0x1ebf, "LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE" },
858 { "E>!", 0x1ec0, "LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE" },
859 { "e>!", 0x1ec1, "LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE" },
860 { "E>2", 0x1ec2, "LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE" },
861 { "e>2", 0x1ec3, "LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE" },
862 { "E>?", 0x1ec4, "LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE" },
863 { "e>?", 0x1ec5, "LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE" },
864 { "E>-.", 0x1ec6, "LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW" },
865 { "e>-.", 0x1ec7, "LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW" },
866 { "I2", 0x1ec8, "LATIN CAPITAL LETTER I WITH HOOK ABOVE" },
867 { "i2", 0x1ec9, "LATIN SMALL LETTER I WITH HOOK ABOVE" },
868 { "I-.", 0x1eca, "LATIN CAPITAL LETTER I WITH DOT BELOW" },
869 { "i-.", 0x1ecb, "LATIN SMALL LETTER I WITH DOT BELOW" },
870 { "O-.", 0x1ecc, "LATIN CAPITAL LETTER O WITH DOT BELOW" },
871 { "o-.", 0x1ecd, "LATIN SMALL LETTER O WITH DOT BELOW" },
872 { "O2", 0x1ece, "LATIN CAPITAL LETTER O WITH HOOK ABOVE" },
873 { "o2", 0x1ecf, "LATIN SMALL LETTER O WITH HOOK ABOVE" },
874 { "O>'", 0x1ed0, "LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE" },
875 { "o>'", 0x1ed1, "LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE" },
876 { "O>!", 0x1ed2, "LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE" },
877 { "o>!", 0x1ed3, "LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE" },
878 { "O>2", 0x1ed4, "LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE" },
879 { "o>2", 0x1ed5, "LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE" },
880 { "O>?", 0x1ed6, "LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE" },
881 { "o>?", 0x1ed7, "LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE" },
882 { "O>-.", 0x1ed8, "LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW" },
883 { "o>-.", 0x1ed9, "LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW" },
884 { "O9'", 0x1eda, "LATIN CAPITAL LETTER O WITH HORN AND ACUTE" },
885 { "o9'", 0x1edb, "LATIN SMALL LETTER O WITH HORN AND ACUTE" },
886 { "O9!", 0x1edc, "LATIN CAPITAL LETTER O WITH HORN AND GRAVE" },
887 { "o9!", 0x1edd, "LATIN SMALL LETTER O WITH HORN AND GRAVE" },
888 { "O92", 0x1ede, "LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE" },
889 { "o92", 0x1edf, "LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE" },
890 { "O9?", 0x1ee0, "LATIN CAPITAL LETTER O WITH HORN AND TILDE" },
891 { "o9?", 0x1ee1, "LATIN SMALL LETTER O WITH HORN AND TILDE" },
892 { "O9-.", 0x1ee2, "LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW" },
893 { "o9-.", 0x1ee3, "LATIN SMALL LETTER O WITH HORN AND DOT BELOW" },
894 { "U-.", 0x1ee4, "LATIN CAPITAL LETTER U WITH DOT BELOW" },
895 { "u-.", 0x1ee5, "LATIN SMALL LETTER U WITH DOT BELOW" },
896 { "U2", 0x1ee6, "LATIN CAPITAL LETTER U WITH HOOK ABOVE" },
897 { "u2", 0x1ee7, "LATIN SMALL LETTER U WITH HOOK ABOVE" },
898 { "U9'", 0x1ee8, "LATIN CAPITAL LETTER U WITH HORN AND ACUTE" },
899 { "u9'", 0x1ee9, "LATIN SMALL LETTER U WITH HORN AND ACUTE" },
900 { "U9!", 0x1eea, "LATIN CAPITAL LETTER U WITH HORN AND GRAVE" },
901 { "u9!", 0x1eeb, "LATIN SMALL LETTER U WITH HORN AND GRAVE" },
902 { "U92", 0x1eec, "LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE" },
903 { "u92", 0x1eed, "LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE" },
904 { "U9?", 0x1eee, "LATIN CAPITAL LETTER U WITH HORN AND TILDE" },
905 { "u9?", 0x1eef, "LATIN SMALL LETTER U WITH HORN AND TILDE" },
906 { "U9-.", 0x1ef0, "LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW" },
907 { "u9-.", 0x1ef1, "LATIN SMALL LETTER U WITH HORN AND DOT BELOW" },
908 { "Y!", 0x1ef2, "LATIN CAPITAL LETTER Y WITH GRAVE" },
909 { "y!", 0x1ef3, "LATIN SMALL LETTER Y WITH GRAVE" },
910 { "Y-.", 0x1ef4, "LATIN CAPITAL LETTER Y WITH DOT BELOW" },
911 { "y-.", 0x1ef5, "LATIN SMALL LETTER Y WITH DOT BELOW" },
912 { "Y2", 0x1ef6, "LATIN CAPITAL LETTER Y WITH HOOK ABOVE" },
913 { "y2", 0x1ef7, "LATIN SMALL LETTER Y WITH HOOK ABOVE" },
914 { "Y?", 0x1ef8, "LATIN CAPITAL LETTER Y WITH TILDE" },
915 { "y?", 0x1ef9, "LATIN SMALL LETTER Y WITH TILDE" },
916 { ";'", 0x1f00, "GREEK DASIA AND ACUTE ACCENT" },
917 { ",'", 0x1f01, "GREEK PSILI AND ACUTE ACCENT" },
918 { ";!", 0x1f02, "GREEK DASIA AND VARIA" },
919 { ",!", 0x1f03, "GREEK PSILI AND VARIA" },
920 { "?;", 0x1f04, "GREEK DASIA AND PERISPOMENI" },
921 { "?,", 0x1f05, "GREEK PSILI AND PERISPOMENI" },
922 { "!:", 0x1f06, "GREEK DIAERESIS AND VARIA" },
923 { "?:", 0x1f07, "GREEK DIAERESIS AND PERISPOMENI" },
924 { "1N", 0x2002, "EN SPACE" },
925 { "1M", 0x2003, "EM SPACE" },
926 { "3M", 0x2004, "THREE-PER-EM SPACE" },
927 { "4M", 0x2005, "FOUR-PER-EM SPACE" },
928 { "6M", 0x2006, "SIX-PER-EM SPACE" },
929 { "1T", 0x2009, "THIN SPACE" },
930 { "1H", 0x200a, "HAIR SPACE" },
931 { "-1", 0x2010, "HYPHEN" },
932 { "-N", 0x2013, "EN DASH" },
933 { "-M", 0x2014, "EM DASH" },
934 { "-3", 0x2015, "HORIZONTAL BAR" },
935 { "!2", 0x2016, "DOUBLE VERTICAL LINE" },
936 { "=2", 0x2017, "DOUBLE LOW LINE" },
937 { "'6", 0x2018, "LEFT SINGLE QUOTATION MARK" },
938 { "'9", 0x2019, "RIGHT SINGLE QUOTATION MARK" },
939 { ".9", 0x201a, "SINGLE LOW-9 QUOTATION MARK" },
940 { "9'", 0x201b, "SINGLE HIGH-REVERSED-9 QUOTATION MARK" },
941 { "\"6", 0x201c, "LEFT DOUBLE QUOTATION MARK" },
942 { "\"9", 0x201d, "RIGHT DOUBLE QUOTATION MARK" },
943 { ":9", 0x201e, "DOUBLE LOW-9 QUOTATION MARK" },
944 { "9\"", 0x201f, "DOUBLE HIGH-REVERSED-9 QUOTATION MARK" },
945 { "/-", 0x2020, "DAGGER" },
946 { "/=", 0x2021, "DOUBLE DAGGER" },
947 { "..", 0x2025, "TWO DOT LEADER" },
948 { "%0", 0x2030, "PER MILLE SIGN" },
949 { "1'", 0x2032, "PRIME" },
950 { "2'", 0x2033, "DOUBLE PRIME" },
951 { "3'", 0x2034, "TRIPLE PRIME" },
952 { "1\"", 0x2035, "REVERSED PRIME" },
953 { "2\"", 0x2036, "REVERSED DOUBLE PRIME" },
954 { "3\"", 0x2037, "REVERSED TRIPLE PRIME" },
955 { "Ca", 0x2038, "CARET" },
956 { "<1", 0x2039, "SINGLE LEFT-POINTING ANGLE QUOTATION MARK" },
957 { ">1", 0x203a, "SINGLE RIGHT-POINTING ANGLE QUOTATION MARK" },
958 { ":X", 0x203b, "REFERENCE MARK" },
959 { "!*2", 0x203c, "DOUBLE EXCLAMATION MARK" },
960 { "'-", 0x203e, "OVERLINE" },
961 { "/f", 0x2044, "FRACTION SLASH" },
962 { "0S", 0x2070, "SUPERSCRIPT DIGIT ZERO" },
963 { "4S", 0x2074, "SUPERSCRIPT DIGIT FOUR" },
964 { "5S", 0x2075, "SUPERSCRIPT DIGIT FIVE" },
965 { "6S", 0x2076, "SUPERSCRIPT DIGIT SIX" },
966 { "7S", 0x2077, "SUPERSCRIPT DIGIT SEVEN" },
967 { "8S", 0x2078, "SUPERSCRIPT DIGIT EIGHT" },
968 { "9S", 0x2079, "SUPERSCRIPT DIGIT NINE" },
969 { "+S", 0x207a, "SUPERSCRIPT PLUS SIGN" },
970 { "-S", 0x207b, "SUPERSCRIPT MINUS" },
971 { "=S", 0x207c, "SUPERSCRIPT EQUALS SIGN" },
972 { "(S", 0x207d, "SUPERSCRIPT LEFT PARENTHESIS" },
973 { ")S", 0x207e, "SUPERSCRIPT RIGHT PARENTHESIS" },
974 { "nS", 0x207f, "SUPERSCRIPT LATIN SMALL LETTER N" },
975 { "0s", 0x2080, "SUBSCRIPT DIGIT ZERO" },
976 { "1s", 0x2081, "SUBSCRIPT DIGIT ONE" },
977 { "2s", 0x2082, "SUBSCRIPT DIGIT TWO" },
978 { "3s", 0x2083, "SUBSCRIPT DIGIT THREE" },
979 { "4s", 0x2084, "SUBSCRIPT DIGIT FOUR" },
980 { "5s", 0x2085, "SUBSCRIPT DIGIT FIVE" },
981 { "6s", 0x2086, "SUBSCRIPT DIGIT SIX" },
982 { "7s", 0x2087, "SUBSCRIPT DIGIT SEVEN" },
983 { "8s", 0x2088, "SUBSCRIPT DIGIT EIGHT" },
984 { "9s", 0x2089, "SUBSCRIPT DIGIT NINE" },
985 { "+s", 0x208a, "SUBSCRIPT PLUS SIGN" },
986 { "-s", 0x208b, "SUBSCRIPT MINUS" },
987 { "=s", 0x208c, "SUBSCRIPT EQUALS SIGN" },
988 { "(s", 0x208d, "SUBSCRIPT LEFT PARENTHESIS" },
989 { ")s", 0x208e, "SUBSCRIPT RIGHT PARENTHESIS" },
990 { "Li", 0x20a4, "LIRA SIGN" },
991 { "Pt", 0x20a7, "PESETA SIGN" },
992 { "W=", 0x20a9, "WON SIGN" },
993 { "oC", 0x2103, "DEGREE CENTIGRADE" },
994 { "co", 0x2105, "CARE OF" },
995 { "oF", 0x2109, "DEGREE FAHRENHEIT" },
996 { "N0", 0x2116, "NUMERO SIGN" },
997 { "PO", 0x2117, "SOUND RECORDING COPYRIGHT" },
998 { "Rx", 0x211e, "PRESCRIPTION TAKE" },
999 { "SM", 0x2120, "SERVICE MARK" },
1000 { "TM", 0x2122, "TRADE MARK SIGN" },
1001 { "Om", 0x2126, "OHM SIGN" },
1002 { "AO", 0x212b, "ANGSTROEM SIGN" },
1003 { "13", 0x2153, "VULGAR FRACTION ONE THIRD" },
1004 { "23", 0x2154, "VULGAR FRACTION TWO THIRDS" },
1005 { "15", 0x2155, "VULGAR FRACTION ONE FIFTH" },
1006 { "25", 0x2156, "VULGAR FRACTION TWO FIFTHS" },
1007 { "35", 0x2157, "VULGAR FRACTION THREE FIFTHS" },
1008 { "45", 0x2158, "VULGAR FRACTION FOUR FIFTHS" },
1009 { "16", 0x2159, "VULGAR FRACTION ONE SIXTH" },
1010 { "56", 0x215a, "VULGAR FRACTION FIVE SIXTHS" },
1011 { "18", 0x215b, "VULGAR FRACTION ONE EIGHTH" },
1012 { "38", 0x215c, "VULGAR FRACTION THREE EIGHTHS" },
1013 { "58", 0x215d, "VULGAR FRACTION FIVE EIGHTHS" },
1014 { "78", 0x215e, "VULGAR FRACTION SEVEN EIGHTHS" },
1015 { "1R", 0x2160, "ROMAN NUMERAL ONE" },
1016 { "2R", 0x2161, "ROMAN NUMERAL TWO" },
1017 { "3R", 0x2162, "ROMAN NUMERAL THREE" },
1018 { "4R", 0x2163, "ROMAN NUMERAL FOUR" },
1019 { "5R", 0x2164, "ROMAN NUMERAL FIVE" },
1020 { "6R", 0x2165, "ROMAN NUMERAL SIX" },
1021 { "7R", 0x2166, "ROMAN NUMERAL SEVEN" },
1022 { "8R", 0x2167, "ROMAN NUMERAL EIGHT" },
1023 { "9R", 0x2168, "ROMAN NUMERAL NINE" },
1024 { "aR", 0x2169, "ROMAN NUMERAL TEN" },
1025 { "bR", 0x216a, "ROMAN NUMERAL ELEVEN" },
1026 { "cR", 0x216b, "ROMAN NUMERAL TWELVE" },
1027 { "50R", 0x216c, "ROMAN NUMERAL FIFTY" },
1028 { "100R", 0x216d, "ROMAN NUMERAL ONE HUNDRED" },
1029 { "500R", 0x216e, "ROMAN NUMERAL FIVE HUNDRED" },
1030 { "1000R", 0x216f, "ROMAN NUMERAL ONE THOUSAND" },
1031 { "1r", 0x2170, "SMALL ROMAN NUMERAL ONE" },
1032 { "2r", 0x2171, "SMALL ROMAN NUMERAL TWO" },
1033 { "3r", 0x2172, "SMALL ROMAN NUMERAL THREE" },
1034 { "4r", 0x2173, "SMALL ROMAN NUMERAL FOUR" },
1035 { "5r", 0x2174, "SMALL ROMAN NUMERAL FIVE" },
1036 { "6r", 0x2175, "SMALL ROMAN NUMERAL SIX" },
1037 { "7r", 0x2176, "SMALL ROMAN NUMERAL SEVEN" },
1038 { "8r", 0x2177, "SMALL ROMAN NUMERAL EIGHT" },
1039 { "9r", 0x2178, "SMALL ROMAN NUMERAL NINE" },
1040 { "ar", 0x2179, "SMALL ROMAN NUMERAL TEN" },
1041 { "br", 0x217a, "SMALL ROMAN NUMERAL ELEVEN" },
1042 { "cr", 0x217b, "SMALL ROMAN NUMERAL TWELVE" },
1043 { "50r", 0x217c, "SMALL ROMAN NUMERAL FIFTY" },
1044 { "100r", 0x217d, "SMALL ROMAN NUMERAL ONE HUNDRED" },
1045 { "500r", 0x217e, "SMALL ROMAN NUMERAL FIVE HUNDRED" },
1046 { "1000r", 0x217f, "SMALL ROMAN NUMERAL ONE THOUSAND" },
1047 { "1000RCD", 0x2180, "ROMAN NUMERAL ONE THOUSAND C D" },
1048 { "5000R", 0x2181, "ROMAN NUMERAL FIVE THOUSAND" },
1049 { "10000R", 0x2182, "ROMAN NUMERAL TEN THOUSAND" },
1050 { "<-", 0x2190, "LEFTWARDS ARROW" },
1051 { "-!", 0x2191, "UPWARDS ARROW" },
1052 { "->", 0x2192, "RIGHTWARDS ARROW" },
1053 { "-v", 0x2193, "DOWNWARDS ARROW" },
1054 { "<>", 0x2194, "LEFT RIGHT ARROW" },
1055 { "UD", 0x2195, "UP DOWN ARROW" },
1056 { "<!!", 0x2196, "NORTH WEST ARROW" },
1057 { "//>", 0x2197, "NORTH EAST ARROW" },
1058 { "!!>", 0x2198, "SOUTH EAST ARROW" },
1059 { "<//", 0x2199, "SOUTH WEST ARROW" },
1060 { "<=", 0x21d0, "LEFTWARDS DOUBLE ARROW" },
1061 { "=>", 0x21d2, "RIGHTWARDS DOUBLE ARROW" },
1062 { "==", 0x21d4, "LEFT RIGHT DOUBLE ARROW" },
1063 { "FA", 0x2200, "FOR ALL" },
1064 { "dP", 0x2202, "PARTIAL DIFFERENTIAL" },
1065 { "TE", 0x2203, "THERE EXISTS" },
1066 { "/0", 0x2205, "EMPTY SET" },
1067 { "DE", 0x2206, "INCREMENT" },
1068 { "NB", 0x2207, "NABLA" },
1069 { "(-", 0x2208, "ELEMENT OF" },
1070 { "-)", 0x220b, "CONTAINS AS MEMBER" },
1071 { "*P", 0x220f, "N-ARY PRODUCT" },
1072 { "+Z", 0x2211, "N-ARY SUMMATION" },
1073 { "-2", 0x2212, "MINUS SIGN" },
1074 { "-+", 0x2213, "MINUS-OR-PLUS SIGN" },
1075 { "*-", 0x2217, "ASTERISK OPERATOR" },
1076 { "Ob", 0x2218, "RING OPERATOR" },
1077 { "Sb", 0x2219, "BULLET OPERATOR" },
1078 { "RT", 0x221a, "SQUARE ROOT" },
1079 { "0(", 0x221d, "PROPORTIONAL TO" },
1080 { "00", 0x221e, "INFINITY" },
1081 { "-L", 0x221f, "RIGHT ANGLE" },
1082 { "-V", 0x2220, "ANGLE" },
1083 { "PP", 0x2225, "PARALLEL TO" },
1084 { "AN", 0x2227, "LOGICAL AND" },
1085 { "OR", 0x2228, "LOGICAL OR" },
1086 { "(U", 0x2229, "INTERSECTION" },
1087 { ")U", 0x222a, "UNION" },
1088 { "In", 0x222b, "INTEGRAL" },
1089 { "DI", 0x222c, "DOUBLE INTEGRAL" },
1090 { "Io", 0x222e, "CONTOUR INTEGRAL" },
1091 { ".:", 0x2234, "THEREFORE" },
1092 { ":.", 0x2235, "BECAUSE" },
1093 { ":R", 0x2236, "RATIO" },
1094 { "::", 0x2237, "PROPORTION" },
1095 { "?1", 0x223c, "TILDE OPERATOR" },
1096 { "CG", 0x223e, "INVERTED LAZY S" },
1097 { "?-", 0x2243, "ASYMPTOTICALLY EQUAL TO" },
1098 { "?=", 0x2245, "APPROXIMATELY EQUAL TO" },
1099 { "?2", 0x2248, "ALMOST EQUAL TO" },
1100 { "=?", 0x224c, "ALL EQUAL TO" },
1101 { "HI", 0x2253, "IMAGE OF OR APPROXIMATELY EQUAL TO" },
1102 { "!=", 0x2260, "NOT EQUAL TO" },
1103 { "=3", 0x2261, "IDENTICAL TO" },
1104 { "=<", 0x2264, "LESS-THAN OR EQUAL TO" },
1105 { ">=", 0x2265, "GREATER-THAN OR EQUAL TO" },
1106 { "<*", 0x226a, "MUCH LESS-THAN" },
1107 { "*>", 0x226b, "MUCH GREATER-THAN" },
1108 { "!<", 0x226e, "NOT LESS-THAN" },
1109 { "!>", 0x226f, "NOT GREATER-THAN" },
1110 { "(C", 0x2282, "SUBSET OF" },
1111 { ")C", 0x2283, "SUPERSET OF" },
1112 { "(_", 0x2286, "SUBSET OF OR EQUAL TO" },
1113 { ")_", 0x2287, "SUPERSET OF OR EQUAL TO" },
1114 { "0.", 0x2299, "CIRCLED DOT OPERATOR" },
1115 { "02", 0x229a, "CIRCLED RING OPERATOR" },
1116 { "-T", 0x22a5, "UP TACK" },
1117 { ".P", 0x22c5, "DOT OPERATOR" },
1118 { ":3", 0x22ee, "VERTICAL ELLIPSIS" },
1119 { ".3", 0x22ef, "MIDLINE HORIZONTAL ELLIPSIS" },
1120 { "Eh", 0x2302, "HOUSE" },
1121 { "<7", 0x2308, "LEFT CEILING" },
1122 { ">7", 0x2309, "RIGHT CEILING" },
1123 { "7<", 0x230a, "LEFT FLOOR" },
1124 { "7>", 0x230b, "RIGHT FLOOR" },
1125 { "NI", 0x2310, "REVERSED NOT SIGN" },
1126 { "(A", 0x2312, "ARC" },
1127 { "TR", 0x2315, "TELEPHONE RECORDER" },
1128 { "Iu", 0x2320, "TOP HALF INTEGRAL" },
1129 { "Il", 0x2321, "BOTTOM HALF INTEGRAL" },
1130 { "</", 0x2329, "LEFT-POINTING ANGLE BRACKET" },
1131 { "/>", 0x232a, "RIGHT-POINTING ANGLE BRACKET" },
1132 { "Vs", 0x2423, "OPEN BOX" },
1133 { "1h", 0x2440, "OCR HOOK" },
1134 { "3h", 0x2441, "OCR CHAIR" },
1135 { "2h", 0x2442, "OCR FORK" },
1136 { "4h", 0x2443, "OCR INVERTED FORK" },
1137 { "1j", 0x2446, "OCR BRANCH BANK IDENTIFICATION" },
1138 { "2j", 0x2447, "OCR AMOUNT OF CHECK" },
1139 { "3j", 0x2448, "OCR DASH" },
1140 { "4j", 0x2449, "OCR CUSTOMER ACCOUNT NUMBER" },
1141 { "1-o", 0x2460, "CIRCLED DIGIT ONE" },
1142 { "2-o", 0x2461, "CIRCLED DIGIT TWO" },
1143 { "3-o", 0x2462, "CIRCLED DIGIT THREE" },
1144 { "4-o", 0x2463, "CIRCLED DIGIT FOUR" },
1145 { "5-o", 0x2464, "CIRCLED DIGIT FIVE" },
1146 { "6-o", 0x2465, "CIRCLED DIGIT SIX" },
1147 { "7-o", 0x2466, "CIRCLED DIGIT SEVEN" },
1148 { "8-o", 0x2467, "CIRCLED DIGIT EIGHT" },
1149 { "9-o", 0x2468, "CIRCLED DIGIT NINE" },
1150 { "10-o", 0x2469, "CIRCLED NUMBER TEN" },
1151 { "11-o", 0x246a, "CIRCLED NUMBER ELEVEN" },
1152 { "12-o", 0x246b, "CIRCLED NUMBER TWELVE" },
1153 { "13-o", 0x246c, "CIRCLED NUMBER THIRTEEN" },
1154 { "14-o", 0x246d, "CIRCLED NUMBER FOURTEEN" },
1155 { "15-o", 0x246e, "CIRCLED NUMBER FIFTEEN" },
1156 { "16-o", 0x246f, "CIRCLED NUMBER SIXTEEN" },
1157 { "17-o", 0x2470, "CIRCLED NUMBER SEVENTEEN" },
1158 { "18-o", 0x2471, "CIRCLED NUMBER EIGHTEEN" },
1159 { "19-o", 0x2472, "CIRCLED NUMBER NINETEEN" },
1160 { "20-o", 0x2473, "CIRCLED NUMBER TWENTY" },
1161 { "(1)", 0x2474, "PARENTHESIZED DIGIT ONE" },
1162 { "(2)", 0x2475, "PARENTHESIZED DIGIT TWO" },
1163 { "(3)", 0x2476, "PARENTHESIZED DIGIT THREE" },
1164 { "(4)", 0x2477, "PARENTHESIZED DIGIT FOUR" },
1165 { "(5)", 0x2478, "PARENTHESIZED DIGIT FIVE" },
1166 { "(6)", 0x2479, "PARENTHESIZED DIGIT SIX" },
1167 { "(7)", 0x247a, "PARENTHESIZED DIGIT SEVEN" },
1168 { "(8)", 0x247b, "PARENTHESIZED DIGIT EIGHT" },
1169 { "(9)", 0x247c, "PARENTHESIZED DIGIT NINE" },
1170 { "(10)", 0x247d, "PARENTHESIZED NUMBER TEN" },
1171 { "(11)", 0x247e, "PARENTHESIZED NUMBER ELEVEN" },
1172 { "(12)", 0x247f, "PARENTHESIZED NUMBER TWELVE" },
1173 { "(13)", 0x2480, "PARENTHESIZED NUMBER THIRTEEN" },
1174 { "(14)", 0x2481, "PARENTHESIZED NUMBER FOURTEEN" },
1175 { "(15)", 0x2482, "PARENTHESIZED NUMBER FIFTEEN" },
1176 { "(16)", 0x2483, "PARENTHESIZED NUMBER SIXTEEN" },
1177 { "(17)", 0x2484, "PARENTHESIZED NUMBER SEVENTEEN" },
1178 { "(18)", 0x2485, "PARENTHESIZED NUMBER EIGHTEEN" },
1179 { "(19)", 0x2486, "PARENTHESIZED NUMBER NINETEEN" },
1180 { "(20)", 0x2487, "PARENTHESIZED NUMBER TWENTY" },
1181 { "1.", 0x2488, "DIGIT ONE FULL STOP" },
1182 { "2.", 0x2489, "DIGIT TWO FULL STOP" },
1183 { "3.", 0x248a, "DIGIT THREE FULL STOP" },
1184 { "4.", 0x248b, "DIGIT FOUR FULL STOP" },
1185 { "5.", 0x248c, "DIGIT FIVE FULL STOP" },
1186 { "6.", 0x248d, "DIGIT SIX FULL STOP" },
1187 { "7.", 0x248e, "DIGIT SEVEN FULL STOP" },
1188 { "8.", 0x248f, "DIGIT EIGHT FULL STOP" },
1189 { "9.", 0x2490, "DIGIT NINE FULL STOP" },
1190 { "10.", 0x2491, "NUMBER TEN FULL STOP" },
1191 { "11.", 0x2492, "NUMBER ELEVEN FULL STOP" },
1192 { "12.", 0x2493, "NUMBER TWELVE FULL STOP" },
1193 { "13.", 0x2494, "NUMBER THIRTEEN FULL STOP" },
1194 { "14.", 0x2495, "NUMBER FOURTEEN FULL STOP" },
1195 { "15.", 0x2496, "NUMBER FIFTEEN FULL STOP" },
1196 { "16.", 0x2497, "NUMBER SIXTEEN FULL STOP" },
1197 { "17.", 0x2498, "NUMBER SEVENTEEN FULL STOP" },
1198 { "18.", 0x2499, "NUMBER EIGHTEEN FULL STOP" },
1199 { "19.", 0x249a, "NUMBER NINETEEN FULL STOP" },
1200 { "20.", 0x249b, "NUMBER TWENTY FULL STOP" },
1201 { "(a)", 0x249c, "PARENTHESIZED LATIN SMALL LETTER A" },
1202 { "(b)", 0x249d, "PARENTHESIZED LATIN SMALL LETTER B" },
1203 { "(c)", 0x249e, "PARENTHESIZED LATIN SMALL LETTER C" },
1204 { "(d)", 0x249f, "PARENTHESIZED LATIN SMALL LETTER D" },
1205 { "(e)", 0x24a0, "PARENTHESIZED LATIN SMALL LETTER E" },
1206 { "(f)", 0x24a1, "PARENTHESIZED LATIN SMALL LETTER F" },
1207 { "(g)", 0x24a2, "PARENTHESIZED LATIN SMALL LETTER G" },
1208 { "(h)", 0x24a3, "PARENTHESIZED LATIN SMALL LETTER H" },
1209 { "(i)", 0x24a4, "PARENTHESIZED LATIN SMALL LETTER I" },
1210 { "(j)", 0x24a5, "PARENTHESIZED LATIN SMALL LETTER J" },
1211 { "(k)", 0x24a6, "PARENTHESIZED LATIN SMALL LETTER K" },
1212 { "(l)", 0x24a7, "PARENTHESIZED LATIN SMALL LETTER L" },
1213 { "(m)", 0x24a8, "PARENTHESIZED LATIN SMALL LETTER M" },
1214 { "(n)", 0x24a9, "PARENTHESIZED LATIN SMALL LETTER N" },
1215 { "(o)", 0x24aa, "PARENTHESIZED LATIN SMALL LETTER O" },
1216 { "(p)", 0x24ab, "PARENTHESIZED LATIN SMALL LETTER P" },
1217 { "(q)", 0x24ac, "PARENTHESIZED LATIN SMALL LETTER Q" },
1218 { "(r)", 0x24ad, "PARENTHESIZED LATIN SMALL LETTER R" },
1219 { "(s)", 0x24ae, "PARENTHESIZED LATIN SMALL LETTER S" },
1220 { "(t)", 0x24af, "PARENTHESIZED LATIN SMALL LETTER T" },
1221 { "(u)", 0x24b0, "PARENTHESIZED LATIN SMALL LETTER U" },
1222 { "(v)", 0x24b1, "PARENTHESIZED LATIN SMALL LETTER V" },
1223 { "(w)", 0x24b2, "PARENTHESIZED LATIN SMALL LETTER W" },
1224 { "(x)", 0x24b3, "PARENTHESIZED LATIN SMALL LETTER X" },
1225 { "(y)", 0x24b4, "PARENTHESIZED LATIN SMALL LETTER Y" },
1226 { "(z)", 0x24b5, "PARENTHESIZED LATIN SMALL LETTER Z" },
1227 { "A-o", 0x24b6, "CIRCLED LATIN CAPITAL LETTER A" },
1228 { "B-o", 0x24b7, "CIRCLED LATIN CAPITAL LETTER B" },
1229 { "C-o", 0x24b8, "CIRCLED LATIN CAPITAL LETTER C" },
1230 { "D-o", 0x24b9, "CIRCLED LATIN CAPITAL LETTER D" },
1231 { "E-o", 0x24ba, "CIRCLED LATIN CAPITAL LETTER E" },
1232 { "F-o", 0x24bb, "CIRCLED LATIN CAPITAL LETTER F" },
1233 { "G-o", 0x24bc, "CIRCLED LATIN CAPITAL LETTER G" },
1234 { "H-o", 0x24bd, "CIRCLED LATIN CAPITAL LETTER H" },
1235 { "I-o", 0x24be, "CIRCLED LATIN CAPITAL LETTER I" },
1236 { "J-o", 0x24bf, "CIRCLED LATIN CAPITAL LETTER J" },
1237 { "K-o", 0x24c0, "CIRCLED LATIN CAPITAL LETTER K" },
1238 { "L-o", 0x24c1, "CIRCLED LATIN CAPITAL LETTER L" },
1239 { "M-o", 0x24c2, "CIRCLED LATIN CAPITAL LETTER M" },
1240 { "N-o", 0x24c3, "CIRCLED LATIN CAPITAL LETTER N" },
1241 { "O-o", 0x24c4, "CIRCLED LATIN CAPITAL LETTER O" },
1242 { "P-o", 0x24c5, "CIRCLED LATIN CAPITAL LETTER P" },
1243 { "Q-o", 0x24c6, "CIRCLED LATIN CAPITAL LETTER Q" },
1244 { "R-o", 0x24c7, "CIRCLED LATIN CAPITAL LETTER R" },
1245 { "S-o", 0x24c8, "CIRCLED LATIN CAPITAL LETTER S" },
1246 { "T-o", 0x24c9, "CIRCLED LATIN CAPITAL LETTER T" },
1247 { "U-o", 0x24ca, "CIRCLED LATIN CAPITAL LETTER U" },
1248 { "V-o", 0x24cb, "CIRCLED LATIN CAPITAL LETTER V" },
1249 { "W-o", 0x24cc, "CIRCLED LATIN CAPITAL LETTER W" },
1250 { "X-o", 0x24cd, "CIRCLED LATIN CAPITAL LETTER X" },
1251 { "Y-o", 0x24ce, "CIRCLED LATIN CAPITAL LETTER Y" },
1252 { "Z-o", 0x24cf, "CIRCLED LATIN CAPITAL LETTER Z" },
1253 { "a-o", 0x24d0, "CIRCLED LATIN SMALL LETTER A" },
1254 { "b-o", 0x24d1, "CIRCLED LATIN SMALL LETTER B" },
1255 { "c-o", 0x24d2, "CIRCLED LATIN SMALL LETTER C" },
1256 { "d-o", 0x24d3, "CIRCLED LATIN SMALL LETTER D" },
1257 { "e-o", 0x24d4, "CIRCLED LATIN SMALL LETTER E" },
1258 { "f-o", 0x24d5, "CIRCLED LATIN SMALL LETTER F" },
1259 { "g-o", 0x24d6, "CIRCLED LATIN SMALL LETTER G" },
1260 { "h-o", 0x24d7, "CIRCLED LATIN SMALL LETTER H" },
1261 { "i-o", 0x24d8, "CIRCLED LATIN SMALL LETTER I" },
1262 { "j-o", 0x24d9, "CIRCLED LATIN SMALL LETTER J" },
1263 { "k-o", 0x24da, "CIRCLED LATIN SMALL LETTER K" },
1264 { "l-o", 0x24db, "CIRCLED LATIN SMALL LETTER L" },
1265 { "m-o", 0x24dc, "CIRCLED LATIN SMALL LETTER M" },
1266 { "n-o", 0x24dd, "CIRCLED LATIN SMALL LETTER N" },
1267 { "o-o", 0x24de, "CIRCLED LATIN SMALL LETTER O" },
1268 { "p-o", 0x24df, "CIRCLED LATIN SMALL LETTER P" },
1269 { "q-o", 0x24e0, "CIRCLED LATIN SMALL LETTER Q" },
1270 { "r-o", 0x24e1, "CIRCLED LATIN SMALL LETTER R" },
1271 { "s-o", 0x24e2, "CIRCLED LATIN SMALL LETTER S" },
1272 { "t-o", 0x24e3, "CIRCLED LATIN SMALL LETTER T" },
1273 { "u-o", 0x24e4, "CIRCLED LATIN SMALL LETTER U" },
1274 { "v-o", 0x24e5, "CIRCLED LATIN SMALL LETTER V" },
1275 { "w-o", 0x24e6, "CIRCLED LATIN SMALL LETTER W" },
1276 { "x-o", 0x24e7, "CIRCLED LATIN SMALL LETTER X" },
1277 { "y-o", 0x24e8, "CIRCLED LATIN SMALL LETTER Y" },
1278 { "z-o", 0x24e9, "CIRCLED LATIN SMALL LETTER Z" },
1279 { "0-o", 0x24ea, "CIRCLED DIGIT ZERO" },
1280 { "hh", 0x2500, "BOX DRAWINGS LIGHT HORIZONTAL" },
1281 { "HH", 0x2501, "BOX DRAWINGS HEAVY HORIZONTAL" },
1282 { "vv", 0x2502, "BOX DRAWINGS LIGHT VERTICAL" },
1283 { "VV", 0x2503, "BOX DRAWINGS HEAVY VERTICAL" },
1284 { "3-", 0x2504, "BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL" },
1285 { "3_", 0x2505, "BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL" },
1286 { "3!", 0x2506, "BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL" },
1287 { "3/", 0x2507, "BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL" },
1288 { "4-", 0x2508, "BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL" },
1289 { "4_", 0x2509, "BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL" },
1290 { "4!", 0x250a, "BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL" },
1291 { "4/", 0x250b, "BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL" },
1292 { "dr", 0x250c, "BOX DRAWINGS LIGHT DOWN AND RIGHT" },
1293 { "dR", 0x250d, "BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY" },
1294 { "Dr", 0x250e, "BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT" },
1295 { "DR", 0x250f, "BOX DRAWINGS HEAVY DOWN AND RIGHT" },
1296 { "dl", 0x2510, "BOX DRAWINGS LIGHT DOWN AND LEFT" },
1297 { "dL", 0x2511, "BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY" },
1298 { "Dl", 0x2512, "BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT" },
1299 { "LD", 0x2513, "BOX DRAWINGS HEAVY DOWN AND LEFT" },
1300 { "ur", 0x2514, "BOX DRAWINGS LIGHT UP AND RIGHT" },
1301 { "uR", 0x2515, "BOX DRAWINGS UP LIGHT AND RIGHT HEAVY" },
1302 { "Ur", 0x2516, "BOX DRAWINGS UP HEAVY AND RIGHT LIGHT" },
1303 { "UR", 0x2517, "BOX DRAWINGS HEAVY UP AND RIGHT" },
1304 { "ul", 0x2518, "BOX DRAWINGS LIGHT UP AND LEFT" },
1305 { "uL", 0x2519, "BOX DRAWINGS UP LIGHT AND LEFT HEAVY" },
1306 { "Ul", 0x251a, "BOX DRAWINGS UP HEAVY AND LEFT LIGHT" },
1307 { "UL", 0x251b, "BOX DRAWINGS HEAVY UP AND LEFT" },
1308 { "vr", 0x251c, "BOX DRAWINGS LIGHT VERTICAL AND RIGHT" },
1309 { "vR", 0x251d, "BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY" },
1310 { "Udr", 0x251e, "BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT" },
1311 { "uDr", 0x251f, "BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT" },
1312 { "Vr", 0x2520, "BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT" },
1313 { "UdR", 0x2521, "BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY" },
1314 { "uDR", 0x2522, "BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY" },
1315 { "VR", 0x2523, "BOX DRAWINGS HEAVY VERTICAL AND RIGHT" },
1316 { "vl", 0x2524, "BOX DRAWINGS LIGHT VERTICAL AND LEFT" },
1317 { "vL", 0x2525, "BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY" },
1318 { "Udl", 0x2526, "BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT" },
1319 { "uDl", 0x2527, "BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT" },
1320 { "Vl", 0x2528, "BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT" },
1321 { "UdL", 0x2529, "BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY" },
1322 { "uDL", 0x252a, "BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY" },
1323 { "VL", 0x252b, "BOX DRAWINGS HEAVY VERTICAL AND LEFT" },
1324 { "dh", 0x252c, "BOX DRAWINGS LIGHT DOWN AND HORIZONTAL" },
1325 { "dLr", 0x252d, "BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT" },
1326 { "dlR", 0x252e, "BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT" },
1327 { "dH", 0x252f, "BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY" },
1328 { "Dh", 0x2530, "BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT" },
1329 { "DLr", 0x2531, "BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY" },
1330 { "DlR", 0x2532, "BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY" },
1331 { "DH", 0x2533, "BOX DRAWINGS HEAVY DOWN AND HORIZONTAL" },
1332 { "uh", 0x2534, "BOX DRAWINGS LIGHT UP AND HORIZONTAL" },
1333 { "uLr", 0x2535, "BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT" },
1334 { "ulR", 0x2536, "BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT" },
1335 { "uH", 0x2537, "BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY" },
1336 { "Uh", 0x2538, "BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT" },
1337 { "ULr", 0x2539, "BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY" },
1338 { "UlR", 0x253a, "BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY" },
1339 { "UH", 0x253b, "BOX DRAWINGS HEAVY UP AND HORIZONTAL" },
1340 { "vh", 0x253c, "BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL" },
1341 { "vLr", 0x253d, "BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT" },
1342 { "vlR", 0x253e, "BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT" },
1343 { "vH", 0x253f, "BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY" },
1344 { "Udh", 0x2540, "BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT" },
1345 { "uDh", 0x2541, "BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT" },
1346 { "Vh", 0x2542, "BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT" },
1347 { "UdLr", 0x2543, "BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT" },
1348 { "UdlR", 0x2544, "BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT" },
1349 { "uDLr", 0x2545, "BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT" },
1350 { "uDlR", 0x2546, "BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT" },
1351 { "UdH", 0x2547, "BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY" },
1352 { "uDH", 0x2548, "BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY" },
1353 { "VLr", 0x2549, "BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY" },
1354 { "VlR", 0x254a, "BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY" },
1355 { "VH", 0x254b, "BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL" },
1356 { "FD", 0x2571, "BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT" },
1357 { "BD", 0x2572, "BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT" },
1358 { "TB", 0x2580, "UPPER HALF BLOCK" },
1359 { "LB", 0x2584, "LOWER HALF BLOCK" },
1360 { "FB", 0x2588, "FULL BLOCK" },
1361 { "lB", 0x258c, "LEFT HALF BLOCK" },
1362 { "RB", 0x2590, "RIGHT HALF BLOCK" },
1363 { ".S", 0x2591, "LIGHT SHADE" },
1364 { ":S", 0x2592, "MEDIUM SHADE" },
1365 { "?S", 0x2593, "DARK SHADE" },
1366 { "fS", 0x25a0, "BLACK SQUARE" },
1367 { "OS", 0x25a1, "WHITE SQUARE" },
1368 { "RO", 0x25a2, "WHITE SQUARE WITH ROUNDED CORNERS" },
1369 { "Rr", 0x25a3, "WHITE SQUARE CONTAINING BLACK SMALL SQUARE" },
1370 { "RF", 0x25a4, "SQUARE WITH HORIZONTAL FILL" },
1371 { "RY", 0x25a5, "SQUARE WITH VERTICAL FILL" },
1372 { "RH", 0x25a6, "SQUARE WITH ORTHOGONAL CROSSHATCH FILL" },
1373 { "RZ", 0x25a7, "SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL" },
1374 { "RK", 0x25a8, "SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL" },
1375 { "RX", 0x25a9, "SQUARE WITH DIAGONAL CROSSHATCH FILL" },
1376 { "sB", 0x25aa, "BLACK SMALL SQUARE" },
1377 { "SR", 0x25ac, "BLACK RECTANGLE" },
1378 { "Or", 0x25ad, "WHITE RECTANGLE" },
1379 { "UT", 0x25b2, "BLACK UP-POINTING TRIANGLE" },
1380 { "uT", 0x25b3, "WHITE UP-POINTING TRIANGLE" },
1381 { "PR", 0x25b6, "BLACK RIGHT-POINTING TRIANGLE" },
1382 { "Tr", 0x25b7, "WHITE RIGHT-POINTING TRIANGLE" },
1383 { "Dt", 0x25bc, "BLACK DOWN-POINTING TRIANGLE" },
1384 { "dT", 0x25bd, "WHITE DOWN-POINTING TRIANGLE" },
1385 { "PL", 0x25c0, "BLACK LEFT-POINTING TRIANGLE" },
1386 { "Tl", 0x25c1, "WHITE LEFT-POINTING TRIANGLE" },
1387 { "Db", 0x25c6, "BLACK DIAMOND" },
1388 { "Dw", 0x25c7, "WHITE DIAMOND" },
1389 { "LZ", 0x25ca, "LOZENGE" },
1390 { "0m", 0x25cb, "WHITE CIRCLE" },
1391 { "0o", 0x25ce, "BULLSEYE" },
1392 { "0M", 0x25cf, "BLACK CIRCLE" },
1393 { "0L", 0x25d0, "CIRCLE WITH LEFT HALF BLACK" },
1394 { "0R", 0x25d1, "CIRCLE WITH RIGHT HALF BLACK" },
1395 { "Sn", 0x25d8, "INVERSE BULLET" },
1396 { "Ic", 0x25d9, "INVERSE WHITE CIRCLE" },
1397 { "Fd", 0x25e2, "BLACK LOWER RIGHT TRIANGLE" },
1398 { "Bd", 0x25e3, "BLACK LOWER LEFT TRIANGLE" },
1399 { "*2", 0x2605, "BLACK STAR" },
1400 { "*1", 0x2606, "WHITE STAR" },
1401 { "TEL", 0x260e, "BLACK TELEPHONE" },
1402 { "tel", 0x260f, "WHITE TELEPHONE" },
1403 { "<H", 0x261c, "WHITE LEFT POINTING INDEX" },
1404 { ">H", 0x261e, "WHITE RIGHT POINTING INDEX" },
1405 { "0u", 0x263a, "WHITE SMILING FACE" },
1406 { "0U", 0x263b, "BLACK SMILING FACE" },
1407 { "SU", 0x263c, "WHITE SUN WITH RAYS" },
1408 { "Fm", 0x2640, "FEMALE SIGN" },
1409 { "Ml", 0x2642, "MALE SIGN" },
1410 { "cS", 0x2660, "BLACK SPADE SUIT" },
1411 { "cH", 0x2661, "WHITE HEART SUIT" },
1412 { "cD", 0x2662, "WHITE DIAMOND SUIT" },
1413 { "cC", 0x2663, "BLACK CLUB SUIT" },
1414 { "cS-", 0x2664, "WHITE SPADE SUIT" },
1415 { "cH-", 0x2665, "BLACK HEART SUIT" },
1416 { "cD-", 0x2666, "BLACK DIAMOND SUIT" },
1417 { "cC-", 0x2667, "WHITE CLUB SUIT" },
1418 { "Md", 0x2669, "QUARTER NOTE" },
1419 { "M8", 0x266a, "EIGHTH NOTE" },
1420 { "M2", 0x266b, "BARRED EIGHTH NOTES" },
1421 { "M16", 0x266c, "BARRED SIXTEENTH NOTES" },
1422 { "Mb", 0x266d, "MUSIC FLAT SIGN" },
1423 { "Mx", 0x266e, "MUSIC NATURAL SIGN" },
1424 { "MX", 0x266f, "MUSIC SHARP SIGN" },
1425 { "OK", 0x2713, "CHECK MARK" },
1426 { "XX", 0x2717, "BALLOT X" },
1427 { "-X", 0x2720, "MALTESE CROSS" },
1428 { "IS", 0x3000, "IDEOGRAPHIC SPACE" },
1429 { ",_", 0x3001, "IDEOGRAPHIC COMMA" },
1430 { "._", 0x3002, "IDEOGRAPHIC PERIOD" },
1431 { "+\"", 0x3003, "DITTO MARK" },
1432 { "+_", 0x3004, "IDEOGRAPHIC DITTO MARK" },
1433 { "*_", 0x3005, "IDEOGRAPHIC ITERATION MARK" },
1434 { ";_", 0x3006, "IDEOGRAPHIC CLOSING MARK" },
1435 { "0_", 0x3007, "IDEOGRAPHIC NUMBER ZERO" },
1436 { "<+", 0x300a, "LEFT DOUBLE ANGLE BRACKET" },
1437 { ">+", 0x300b, "RIGHT DOUBLE ANGLE BRACKET" },
1438 { "<'", 0x300c, "LEFT CORNER BRACKET" },
1439 { ">'", 0x300d, "RIGHT CORNER BRACKET" },
1440 { "<\"", 0x300e, "LEFT WHITE CORNER BRACKET" },
1441 { ">\"", 0x300f, "RIGHT WHITE CORNER BRACKET" },
1442 { "(\"", 0x3010, "LEFT BLACK LENTICULAR BRACKET" },
1443 { ")\"", 0x3011, "RIGHT BLACK LENTICULAR BRACKET" },
1444 { "=T", 0x3012, "POSTAL MARK" },
1445 { "=_", 0x3013, "GETA MARK" },
1446 { "('", 0x3014, "LEFT TORTOISE SHELL BRACKET" },
1447 { ")'", 0x3015, "RIGHT TORTOISE SHELL BRACKET" },
1448 { "(I", 0x3016, "LEFT WHITE LENTICULAR BRACKET" },
1449 { ")I", 0x3017, "RIGHT WHITE LENTICULAR BRACKET" },
1450 { "-?", 0x301c, "WAVE DASH" },
1451 { "=T:)", 0x3020, "POSTAL MARK FACE" },
1452 { "A5", 0x3041, "HIRAGANA LETTER SMALL A" },
1453 { "a5", 0x3042, "HIRAGANA LETTER A" },
1454 { "I5", 0x3043, "HIRAGANA LETTER SMALL I" },
1455 { "i5", 0x3044, "HIRAGANA LETTER I" },
1456 { "U5", 0x3045, "HIRAGANA LETTER SMALL U" },
1457 { "u5", 0x3046, "HIRAGANA LETTER U" },
1458 { "E5", 0x3047, "HIRAGANA LETTER SMALL E" },
1459 { "e5", 0x3048, "HIRAGANA LETTER E" },
1460 { "O5", 0x3049, "HIRAGANA LETTER SMALL O" },
1461 { "o5", 0x304a, "HIRAGANA LETTER O" },
1462 { "ka", 0x304b, "HIRAGANA LETTER KA" },
1463 { "ga", 0x304c, "HIRAGANA LETTER GA" },
1464 { "ki", 0x304d, "HIRAGANA LETTER KI" },
1465 { "gi", 0x304e, "HIRAGANA LETTER GI" },
1466 { "ku", 0x304f, "HIRAGANA LETTER KU" },
1467 { "gu", 0x3050, "HIRAGANA LETTER GU" },
1468 { "ke", 0x3051, "HIRAGANA LETTER KE" },
1469 { "ge", 0x3052, "HIRAGANA LETTER GE" },
1470 { "ko", 0x3053, "HIRAGANA LETTER KO" },
1471 { "go", 0x3054, "HIRAGANA LETTER GO" },
1472 { "sa", 0x3055, "HIRAGANA LETTER SA" },
1473 { "za", 0x3056, "HIRAGANA LETTER ZA" },
1474 { "si", 0x3057, "HIRAGANA LETTER SI" },
1475 { "zi", 0x3058, "HIRAGANA LETTER ZI" },
1476 { "su", 0x3059, "HIRAGANA LETTER SU" },
1477 { "zu", 0x305a, "HIRAGANA LETTER ZU" },
1478 { "se", 0x305b, "HIRAGANA LETTER SE" },
1479 { "ze", 0x305c, "HIRAGANA LETTER ZE" },
1480 { "so", 0x305d, "HIRAGANA LETTER SO" },
1481 { "zo", 0x305e, "HIRAGANA LETTER ZO" },
1482 { "ta", 0x305f, "HIRAGANA LETTER TA" },
1483 { "da", 0x3060, "HIRAGANA LETTER DA" },
1484 { "ti", 0x3061, "HIRAGANA LETTER TI" },
1485 { "di", 0x3062, "HIRAGANA LETTER DI" },
1486 { "tU", 0x3063, "HIRAGANA LETTER SMALL TU" },
1487 { "tu", 0x3064, "HIRAGANA LETTER TU" },
1488 { "du", 0x3065, "HIRAGANA LETTER DU" },
1489 { "te", 0x3066, "HIRAGANA LETTER TE" },
1490 { "de", 0x3067, "HIRAGANA LETTER DE" },
1491 { "to", 0x3068, "HIRAGANA LETTER TO" },
1492 { "do", 0x3069, "HIRAGANA LETTER DO" },
1493 { "na", 0x306a, "HIRAGANA LETTER NA" },
1494 { "ni", 0x306b, "HIRAGANA LETTER NI" },
1495 { "nu", 0x306c, "HIRAGANA LETTER NU" },
1496 { "ne", 0x306d, "HIRAGANA LETTER NE" },
1497 { "no", 0x306e, "HIRAGANA LETTER NO" },
1498 { "ha", 0x306f, "HIRAGANA LETTER HA" },
1499 { "ba", 0x3070, "HIRAGANA LETTER BA" },
1500 { "pa", 0x3071, "HIRAGANA LETTER PA" },
1501 { "hi", 0x3072, "HIRAGANA LETTER HI" },
1502 { "bi", 0x3073, "HIRAGANA LETTER BI" },
1503 { "pi", 0x3074, "HIRAGANA LETTER PI" },
1504 { "hu", 0x3075, "HIRAGANA LETTER HU" },
1505 { "bu", 0x3076, "HIRAGANA LETTER BU" },
1506 { "pu", 0x3077, "HIRAGANA LETTER PU" },
1507 { "he", 0x3078, "HIRAGANA LETTER HE" },
1508 { "be", 0x3079, "HIRAGANA LETTER BE" },
1509 { "pe", 0x307a, "HIRAGANA LETTER PE" },
1510 { "ho", 0x307b, "HIRAGANA LETTER HO" },
1511 { "bo", 0x307c, "HIRAGANA LETTER BO" },
1512 { "po", 0x307d, "HIRAGANA LETTER PO" },
1513 { "ma", 0x307e, "HIRAGANA LETTER MA" },
1514 { "mi", 0x307f, "HIRAGANA LETTER MI" },
1515 { "mu", 0x3080, "HIRAGANA LETTER MU" },
1516 { "me", 0x3081, "HIRAGANA LETTER ME" },
1517 { "mo", 0x3082, "HIRAGANA LETTER MO" },
1518 { "yA", 0x3083, "HIRAGANA LETTER SMALL YA" },
1519 { "ya", 0x3084, "HIRAGANA LETTER YA" },
1520 { "yU", 0x3085, "HIRAGANA LETTER SMALL YU" },
1521 { "yu", 0x3086, "HIRAGANA LETTER YU" },
1522 { "yO", 0x3087, "HIRAGANA LETTER SMALL YO" },
1523 { "yo", 0x3088, "HIRAGANA LETTER YO" },
1524 { "ra", 0x3089, "HIRAGANA LETTER RA" },
1525 { "ri", 0x308a, "HIRAGANA LETTER RI" },
1526 { "ru", 0x308b, "HIRAGANA LETTER RU" },
1527 { "re", 0x308c, "HIRAGANA LETTER RE" },
1528 { "ro", 0x308d, "HIRAGANA LETTER RO" },
1529 { "wA", 0x308e, "HIRAGANA LETTER SMALL WA" },
1530 { "wa", 0x308f, "HIRAGANA LETTER WA" },
1531 { "wi", 0x3090, "HIRAGANA LETTER WI" },
1532 { "we", 0x3091, "HIRAGANA LETTER WE" },
1533 { "wo", 0x3092, "HIRAGANA LETTER WO" },
1534 { "n5", 0x3093, "HIRAGANA LETTER N" },
1535 { "vu", 0x3094, "HIRAGANA LETTER VU" },
1536 { "\"5", 0x309b, "KATAKANA-HIRAGANA VOICED SOUND MARK" },
1537 { "05", 0x309c, "KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK" },
1538 { "*5", 0x309d, "HIRAGANA ITERATION MARK" },
1539 { "+5", 0x309e, "HIRAGANA VOICED ITERATION MARK" },
1540 { "a6", 0x30a1, "KATAKANA LETTER SMALL A" },
1541 { "A6", 0x30a2, "KATAKANA LETTER A" },
1542 { "i6", 0x30a3, "KATAKANA LETTER SMALL I" },
1543 { "I6", 0x30a4, "KATAKANA LETTER I" },
1544 { "u6", 0x30a5, "KATAKANA LETTER SMALL U" },
1545 { "U6", 0x30a6, "KATAKANA LETTER U" },
1546 { "e6", 0x30a7, "KATAKANA LETTER SMALL E" },
1547 { "E6", 0x30a8, "KATAKANA LETTER E" },
1548 { "o6", 0x30a9, "KATAKANA LETTER SMALL O" },
1549 { "O6", 0x30aa, "KATAKANA LETTER O" },
1550 { "Ka", 0x30ab, "KATAKANA LETTER KA" },
1551 { "Ga", 0x30ac, "KATAKANA LETTER GA" },
1552 { "Ki", 0x30ad, "KATAKANA LETTER KI" },
1553 { "Gi", 0x30ae, "KATAKANA LETTER GI" },
1554 { "Ku", 0x30af, "KATAKANA LETTER KU" },
1555 { "Gu", 0x30b0, "KATAKANA LETTER GU" },
1556 { "Ke", 0x30b1, "KATAKANA LETTER KE" },
1557 { "Ge", 0x30b2, "KATAKANA LETTER GE" },
1558 { "Ko", 0x30b3, "KATAKANA LETTER KO" },
1559 { "Go", 0x30b4, "KATAKANA LETTER GO" },
1560 { "Sa", 0x30b5, "KATAKANA LETTER SA" },
1561 { "Za", 0x30b6, "KATAKANA LETTER ZA" },
1562 { "Si", 0x30b7, "KATAKANA LETTER SI" },
1563 { "Zi", 0x30b8, "KATAKANA LETTER ZI" },
1564 { "Su", 0x30b9, "KATAKANA LETTER SU" },
1565 { "Zu", 0x30ba, "KATAKANA LETTER ZU" },
1566 { "Se", 0x30bb, "KATAKANA LETTER SE" },
1567 { "Ze", 0x30bc, "KATAKANA LETTER ZE" },
1568 { "So", 0x30bd, "KATAKANA LETTER SO" },
1569 { "Zo", 0x30be, "KATAKANA LETTER ZO" },
1570 { "Ta", 0x30bf, "KATAKANA LETTER TA" },
1571 { "Da", 0x30c0, "KATAKANA LETTER DA" },
1572 { "Ti", 0x30c1, "KATAKANA LETTER TI" },
1573 { "Di", 0x30c2, "KATAKANA LETTER DI" },
1574 { "TU", 0x30c3, "KATAKANA LETTER SMALL TU" },
1575 { "Tu", 0x30c4, "KATAKANA LETTER TU" },
1576 { "Du", 0x30c5, "KATAKANA LETTER DU" },
1577 { "Te", 0x30c6, "KATAKANA LETTER TE" },
1578 { "De", 0x30c7, "KATAKANA LETTER DE" },
1579 { "To", 0x30c8, "KATAKANA LETTER TO" },
1580 { "Do", 0x30c9, "KATAKANA LETTER DO" },
1581 { "Na", 0x30ca, "KATAKANA LETTER NA" },
1582 { "Ni", 0x30cb, "KATAKANA LETTER NI" },
1583 { "Nu", 0x30cc, "KATAKANA LETTER NU" },
1584 { "Ne", 0x30cd, "KATAKANA LETTER NE" },
1585 { "No", 0x30ce, "KATAKANA LETTER NO" },
1586 { "Ha", 0x30cf, "KATAKANA LETTER HA" },
1587 { "Ba", 0x30d0, "KATAKANA LETTER BA" },
1588 { "Pa", 0x30d1, "KATAKANA LETTER PA" },
1589 { "Hi", 0x30d2, "KATAKANA LETTER HI" },
1590 { "Bi", 0x30d3, "KATAKANA LETTER BI" },
1591 { "Pi", 0x30d4, "KATAKANA LETTER PI" },
1592 { "Hu", 0x30d5, "KATAKANA LETTER HU" },
1593 { "Bu", 0x30d6, "KATAKANA LETTER BU" },
1594 { "Pu", 0x30d7, "KATAKANA LETTER PU" },
1595 { "He", 0x30d8, "KATAKANA LETTER HE" },
1596 { "Be", 0x30d9, "KATAKANA LETTER BE" },
1597 { "Pe", 0x30da, "KATAKANA LETTER PE" },
1598 { "Ho", 0x30db, "KATAKANA LETTER HO" },
1599 { "Bo", 0x30dc, "KATAKANA LETTER BO" },
1600 { "Po", 0x30dd, "KATAKANA LETTER PO" },
1601 { "Ma", 0x30de, "KATAKANA LETTER MA" },
1602 { "Mi", 0x30df, "KATAKANA LETTER MI" },
1603 { "Mu", 0x30e0, "KATAKANA LETTER MU" },
1604 { "Me", 0x30e1, "KATAKANA LETTER ME" },
1605 { "Mo", 0x30e2, "KATAKANA LETTER MO" },
1606 { "YA", 0x30e3, "KATAKANA LETTER SMALL YA" },
1607 { "Ya", 0x30e4, "KATAKANA LETTER YA" },
1608 { "YU", 0x30e5, "KATAKANA LETTER SMALL YU" },
1609 { "Yu", 0x30e6, "KATAKANA LETTER YU" },
1610 { "YO", 0x30e7, "KATAKANA LETTER SMALL YO" },
1611 { "Yo", 0x30e8, "KATAKANA LETTER YO" },
1612 { "Ra", 0x30e9, "KATAKANA LETTER RA" },
1613 { "Ri", 0x30ea, "KATAKANA LETTER RI" },
1614 { "Ru", 0x30eb, "KATAKANA LETTER RU" },
1615 { "Re", 0x30ec, "KATAKANA LETTER RE" },
1616 { "Ro", 0x30ed, "KATAKANA LETTER RO" },
1617 { "WA", 0x30ee, "KATAKANA LETTER SMALL WA" },
1618 { "Wa", 0x30ef, "KATAKANA LETTER WA" },
1619 { "Wi", 0x30f0, "KATAKANA LETTER WI" },
1620 { "We", 0x30f1, "KATAKANA LETTER WE" },
1621 { "Wo", 0x30f2, "KATAKANA LETTER WO" },
1622 { "N6", 0x30f3, "KATAKANA LETTER N" },
1623 { "Vu", 0x30f4, "KATAKANA LETTER VU" },
1624 { "KA", 0x30f5, "KATAKANA LETTER SMALL KA" },
1625 { "KE", 0x30f6, "KATAKANA LETTER SMALL KE" },
1626 { "Va", 0x30f7, "KATAKANA LETTER VA" },
1627 { "Vi", 0x30f8, "KATAKANA LETTER VI" },
1628 { "Ve", 0x30f9, "KATAKANA LETTER VE" },
1629 { "Vo", 0x30fa, "KATAKANA LETTER VO" },
1630 { ".6", 0x30fb, "KATAKANA MIDDLE DOT" },
1631 { "-6", 0x30fc, "KATAKANA-HIRAGANA PROLONGED SOUND MARK" },
1632 { "*6", 0x30fd, "KATAKANA ITERATION MARK" },
1633 { "+6", 0x30fe, "KATAKANA VOICED ITERATION MARK" },
1634 { "b4", 0x3105, "BOPOMOFO LETTER B" },
1635 { "p4", 0x3106, "BOPOMOFO LETTER P" },
1636 { "m4", 0x3107, "BOPOMOFO LETTER M" },
1637 { "f4", 0x3108, "BOPOMOFO LETTER F" },
1638 { "d4", 0x3109, "BOPOMOFO LETTER D" },
1639 { "t4", 0x310a, "BOPOMOFO LETTER T" },
1640 { "n4", 0x310b, "BOPOMOFO LETTER N" },
1641 { "l4", 0x310c, "BOPOMOFO LETTER L" },
1642 { "g4", 0x310d, "BOPOMOFO LETTER G" },
1643 { "k4", 0x310e, "BOPOMOFO LETTER K" },
1644 { "h4", 0x310f, "BOPOMOFO LETTER H" },
1645 { "j4", 0x3110, "BOPOMOFO LETTER J" },
1646 { "q4", 0x3111, "BOPOMOFO LETTER Q" },
1647 { "x4", 0x3112, "BOPOMOFO LETTER X" },
1648 { "zh", 0x3113, "BOPOMOFO LETTER ZH" },
1649 { "ch", 0x3114, "BOPOMOFO LETTER CH" },
1650 { "sh", 0x3115, "BOPOMOFO LETTER SH" },
1651 { "r4", 0x3116, "BOPOMOFO LETTER R" },
1652 { "z4", 0x3117, "BOPOMOFO LETTER Z" },
1653 { "c4", 0x3118, "BOPOMOFO LETTER C" },
1654 { "s4", 0x3119, "BOPOMOFO LETTER S" },
1655 { "a4", 0x311a, "BOPOMOFO LETTER A" },
1656 { "o4", 0x311b, "BOPOMOFO LETTER O" },
1657 { "e4", 0x311c, "BOPOMOFO LETTER E" },
1658 { "eh4", 0x311d, "BOPOMOFO LETTER EH" },
1659 { "ai", 0x311e, "BOPOMOFO LETTER AI" },
1660 { "ei", 0x311f, "BOPOMOFO LETTER EI" },
1661 { "au", 0x3120, "BOPOMOFO LETTER AU" },
1662 { "ou", 0x3121, "BOPOMOFO LETTER OU" },
1663 { "an", 0x3122, "BOPOMOFO LETTER AN" },
1664 { "en", 0x3123, "BOPOMOFO LETTER EN" },
1665 { "aN", 0x3124, "BOPOMOFO LETTER ANG" },
1666 { "eN", 0x3125, "BOPOMOFO LETTER ENG" },
1667 { "er", 0x3126, "BOPOMOFO LETTER ER" },
1668 { "i4", 0x3127, "BOPOMOFO LETTER I" },
1669 { "u4", 0x3128, "BOPOMOFO LETTER U" },
1670 { "iu", 0x3129, "BOPOMOFO LETTER IU" },
1671 { "v4", 0x312a, "BOPOMOFO LETTER V" },
1672 { "nG", 0x312b, "BOPOMOFO LETTER NG" },
1673 { "gn", 0x312c, "BOPOMOFO LETTER GN" },
1674 { "(JU)", 0x321c, "PARENTHESIZED HANGUL JU" },
1675 { "1c", 0x3220, "PARENTHESIZED IDEOGRAPH ONE" },
1676 { "2c", 0x3221, "PARENTHESIZED IDEOGRAPH TWO" },
1677 { "3c", 0x3222, "PARENTHESIZED IDEOGRAPH THREE" },
1678 { "4c", 0x3223, "PARENTHESIZED IDEOGRAPH FOUR" },
1679 { "5c", 0x3224, "PARENTHESIZED IDEOGRAPH FIVE" },
1680 { "6c", 0x3225, "PARENTHESIZED IDEOGRAPH SIX" },
1681 { "7c", 0x3226, "PARENTHESIZED IDEOGRAPH SEVEN" },
1682 { "8c", 0x3227, "PARENTHESIZED IDEOGRAPH EIGHT" },
1683 { "9c", 0x3228, "PARENTHESIZED IDEOGRAPH NINE" },
1684 { "10c", 0x3229, "PARENTHESIZED IDEOGRAPH TEN" },
1685 { "KSC", 0x327f, "KOREAN STANDARD SYMBOL" },
1686 { "ff", 0xfb00, "LATIN SMALL LIGATURE FF" },
1687 { "fi", 0xfb01, "LATIN SMALL LIGATURE FI" },
1688 { "fl", 0xfb02, "LATIN SMALL LIGATURE FL" },
1689 { "ffi", 0xfb03, "LATIN SMALL LIGATURE FFI" },
1690 { "ffl", 0xfb04, "LATIN SMALL LIGATURE FFL" },
1691 { "ft", 0xfb05, "LATIN SMALL LIGATURE FT" },
1692 { "st", 0xfb06, "LATIN SMALL LIGATURE ST" },
1693 { "3+;", 0xfe7d, "ARABIC SHADDA MEDIAL FORM" },
1694 { "aM.", 0xfe82, "ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM" },
1695 { "aH.", 0xfe84, "ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM" },
1696 { "a+-", 0xfe8d, "ARABIC LETTER ALEF ISOLATED FORM" },
1697 { "a+.", 0xfe8e, "ARABIC LETTER ALEF FINAL FORM" },
1698 { "b+-", 0xfe8f, "ARABIC LETTER BEH ISOLATED FORM" },
1699 { "b+,", 0xfe90, "ARABIC LETTER BEH INITIAL FORM" },
1700 { "b+;", 0xfe91, "ARABIC LETTER BEH MEDIAL FORM" },
1701 { "b+.", 0xfe92, "ARABIC LETTER BEH FINAL FORM" },
1702 { "tm-", 0xfe93, "ARABIC LETTER TEH MARBUTA ISOLATED FORM" },
1703 { "tm.", 0xfe94, "ARABIC LETTER TEH MARBUTA FINAL FORM" },
1704 { "t+-", 0xfe95, "ARABIC LETTER TEH ISOLATED FORM" },
1705 { "t+,", 0xfe96, "ARABIC LETTER TEH INITIAL FORM" },
1706 { "t+;", 0xfe97, "ARABIC LETTER TEH MEDIAL FORM" },
1707 { "t+.", 0xfe98, "ARABIC LETTER TEH FINAL FORM" },
1708 { "tk-", 0xfe99, "ARABIC LETTER THEH ISOLATED FORM" },
1709 { "tk,", 0xfe9a, "ARABIC LETTER THEH INITIAL FORM" },
1710 { "tk;", 0xfe9b, "ARABIC LETTER THEH MEDIAL FORM" },
1711 { "tk.", 0xfe9c, "ARABIC LETTER THEH FINAL FORM" },
1712 { "g+-", 0xfe9d, "ARABIC LETTER JEEM ISOLATED FORM" },
1713 { "g+,", 0xfe9e, "ARABIC LETTER JEEM INITIAL FORM" },
1714 { "g+;", 0xfe9f, "ARABIC LETTER JEEM MEDIAL FORM" },
1715 { "g+.", 0xfea0, "ARABIC LETTER JEEM FINAL FORM" },
1716 { "hk-", 0xfea1, "ARABIC LETTER HAH ISOLATED FORM" },
1717 { "hk,", 0xfea2, "ARABIC LETTER HAH INITIAL FORM" },
1718 { "hk;", 0xfea3, "ARABIC LETTER HAH MEDIAL FORM" },
1719 { "hk.", 0xfea4, "ARABIC LETTER HAH FINAL FORM" },
1720 { "x+-", 0xfea5, "ARABIC LETTER KHAH ISOLATED FORM" },
1721 { "x+,", 0xfea6, "ARABIC LETTER KHAH INITIAL FORM" },
1722 { "x+;", 0xfea7, "ARABIC LETTER KHAH MEDIAL FORM" },
1723 { "x+.", 0xfea8, "ARABIC LETTER KHAH FINAL FORM" },
1724 { "d+-", 0xfea9, "ARABIC LETTER DAL ISOLATED FORM" },
1725 { "d+.", 0xfeaa, "ARABIC LETTER DAL FINAL FORM" },
1726 { "dk-", 0xfeab, "ARABIC LETTER THAL ISOLATED FORM" },
1727 { "dk.", 0xfeac, "ARABIC LETTER THAL FINAL FORM" },
1728 { "r+-", 0xfead, "ARABIC LETTER REH ISOLATED FORM" },
1729 { "r+.", 0xfeae, "ARABIC LETTER REH FINAL FORM" },
1730 { "z+-", 0xfeaf, "ARABIC LETTER ZAIN ISOLATED FORM" },
1731 { "z+.", 0xfeb0, "ARABIC LETTER ZAIN FINAL FORM" },
1732 { "s+-", 0xfeb1, "ARABIC LETTER SEEN ISOLATED FORM" },
1733 { "s+,", 0xfeb2, "ARABIC LETTER SEEN INITIAL FORM" },
1734 { "s+;", 0xfeb3, "ARABIC LETTER SEEN MEDIAL FORM" },
1735 { "s+.", 0xfeb4, "ARABIC LETTER SEEN FINAL FORM" },
1736 { "sn-", 0xfeb5, "ARABIC LETTER SHEEN ISOLATED FORM" },
1737 { "sn,", 0xfeb6, "ARABIC LETTER SHEEN INITIAL FORM" },
1738 { "sn;", 0xfeb7, "ARABIC LETTER SHEEN MEDIAL FORM" },
1739 { "sn.", 0xfeb8, "ARABIC LETTER SHEEN FINAL FORM" },
1740 { "c+-", 0xfeb9, "ARABIC LETTER SAD ISOLATED FORM" },
1741 { "c+,", 0xfeba, "ARABIC LETTER SAD INITIAL FORM" },
1742 { "c+;", 0xfebb, "ARABIC LETTER SAD MEDIAL FORM" },
1743 { "c+.", 0xfebc, "ARABIC LETTER SAD FINAL FORM" },
1744 { "dd-", 0xfebd, "ARABIC LETTER DAD ISOLATED FORM" },
1745 { "dd,", 0xfebe, "ARABIC LETTER DAD INITIAL FORM" },
1746 { "dd;", 0xfebf, "ARABIC LETTER DAD MEDIAL FORM" },
1747 { "dd.", 0xfec0, "ARABIC LETTER DAD FINAL FORM" },
1748 { "tj-", 0xfec1, "ARABIC LETTER TAH ISOLATED FORM" },
1749 { "tj,", 0xfec2, "ARABIC LETTER TAH INITIAL FORM" },
1750 { "tj;", 0xfec3, "ARABIC LETTER TAH MEDIAL FORM" },
1751 { "tj.", 0xfec4, "ARABIC LETTER TAH FINAL FORM" },
1752 { "zH-", 0xfec5, "ARABIC LETTER ZAH ISOLATED FORM" },
1753 { "zH,", 0xfec6, "ARABIC LETTER ZAH INITIAL FORM" },
1754 { "zH;", 0xfec7, "ARABIC LETTER ZAH MEDIAL FORM" },
1755 { "zH.", 0xfec8, "ARABIC LETTER ZAH FINAL FORM" },
1756 { "e+-", 0xfec9, "ARABIC LETTER AIN ISOLATED FORM" },
1757 { "e+,", 0xfeca, "ARABIC LETTER AIN INITIAL FORM" },
1758 { "e+;", 0xfecb, "ARABIC LETTER AIN MEDIAL FORM" },
1759 { "e+.", 0xfecc, "ARABIC LETTER AIN FINAL FORM" },
1760 { "i+-", 0xfecd, "ARABIC LETTER GHAIN ISOLATED FORM" },
1761 { "i+,", 0xfece, "ARABIC LETTER GHAIN INITIAL FORM" },
1762 { "i+;", 0xfecf, "ARABIC LETTER GHAIN MEDIAL FORM" },
1763 { "i+.", 0xfed0, "ARABIC LETTER GHAIN FINAL FORM" },
1764 { "f+-", 0xfed1, "ARABIC LETTER FEH ISOLATED FORM" },
1765 { "f+,", 0xfed2, "ARABIC LETTER FEH INITIAL FORM" },
1766 { "f+;", 0xfed3, "ARABIC LETTER FEH MEDIAL FORM" },
1767 { "f+.", 0xfed4, "ARABIC LETTER FEH FINAL FORM" },
1768 { "q+-", 0xfed5, "ARABIC LETTER QAF ISOLATED FORM" },
1769 { "q+,", 0xfed6, "ARABIC LETTER QAF INITIAL FORM" },
1770 { "q+;", 0xfed7, "ARABIC LETTER QAF MEDIAL FORM" },
1771 { "q+.", 0xfed8, "ARABIC LETTER QAF FINAL FORM" },
1772 { "k+-", 0xfed9, "ARABIC LETTER KAF ISOLATED FORM" },
1773 { "k+,", 0xfeda, "ARABIC LETTER KAF INITIAL FORM" },
1774 { "k+;", 0xfedb, "ARABIC LETTER KAF MEDIAL FORM" },
1775 { "k+.", 0xfedc, "ARABIC LETTER KAF FINAL FORM" },
1776 { "l+-", 0xfedd, "ARABIC LETTER LAM ISOLATED FORM" },
1777 { "l+,", 0xfede, "ARABIC LETTER LAM INITIAL FORM" },
1778 { "l+;", 0xfedf, "ARABIC LETTER LAM MEDIAL FORM" },
1779 { "l+.", 0xfee0, "ARABIC LETTER LAM FINAL FORM" },
1780 { "m+-", 0xfee1, "ARABIC LETTER MEEM ISOLATED FORM" },
1781 { "m+,", 0xfee2, "ARABIC LETTER MEEM INITIAL FORM" },
1782 { "m+;", 0xfee3, "ARABIC LETTER MEEM MEDIAL FORM" },
1783 { "m+.", 0xfee4, "ARABIC LETTER MEEM FINAL FORM" },
1784 { "n+-", 0xfee5, "ARABIC LETTER NOON ISOLATED FORM" },
1785 { "n+,", 0xfee6, "ARABIC LETTER NOON INITIAL FORM" },
1786 { "n+;", 0xfee7, "ARABIC LETTER NOON MEDIAL FORM" },
1787 { "n+.", 0xfee8, "ARABIC LETTER NOON FINAL FORM" },
1788 { "h+-", 0xfee9, "ARABIC LETTER HEH ISOLATED FORM" },
1789 { "h+,", 0xfeea, "ARABIC LETTER HEH INITIAL FORM" },
1790 { "h+;", 0xfeeb, "ARABIC LETTER HEH MEDIAL FORM" },
1791 { "h+.", 0xfeec, "ARABIC LETTER HEH FINAL FORM" },
1792 { "w+-", 0xfeed, "ARABIC LETTER WAW ISOLATED FORM" },
1793 { "w+.", 0xfeee, "ARABIC LETTER WAW FINAL FORM" },
1794 { "j+-", 0xfeef, "ARABIC LETTER ALEF MAKSURA ISOLATED FORM" },
1795 { "j+.", 0xfef0, "ARABIC LETTER ALEF MAKSURA FINAL FORM" },
1796 { "y+-", 0xfef1, "ARABIC LETTER YEH ISOLATED FORM" },
1797 { "y+,", 0xfef2, "ARABIC LETTER YEH INITIAL FORM" },
1798 { "y+;", 0xfef3, "ARABIC LETTER YEH MEDIAL FORM" },
1799 { "y+.", 0xfef4, "ARABIC LETTER YEH FINAL FORM" },
1800 { "lM-", 0xfef5, "ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM" },
1801 { "lM.", 0xfef6, "ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM" },
1802 { "lH-", 0xfef7, "ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM" },
1803 { "lH.", 0xfef8, "ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM" },
1804 { "lh-", 0xfef9, "ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM" },
1805 { "lh.", 0xfefa, "ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM" },
1806 { "la-", 0xfefb, "ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM" },
1807 { "la.", 0xfefc, "ARABIC LIGATURE LAM WITH ALEF FINAL FORM" },
1808 { "NU", 0x0000, "NULL (NUL)" },
1809 { "SH", 0x0001, "START OF HEADING (SOH)" },
1810 { "SX", 0x0002, "START OF TEXT (STX)" },
1811 { "EX", 0x0003, "END OF TEXT (ETX)" },
1812 { "ET", 0x0004, "END OF TRANSMISSION (EOT)" },
1813 { "EQ", 0x0005, "ENQUIRY (ENQ)" },
1814 { "AK", 0x0006, "ACKNOWLEDGE (ACK)" },
1815 { "BL", 0x0007, "BELL (BEL)" },
1816 { "BS", 0x0008, "BACKSPACE (BS)" },
1817 { "HT", 0x0009, "CHARACTER TABULATION (HT)" },
1818 { "LF", 0x000a, "LINE FEED (LF)" },
1819 { "VT", 0x000b, "LINE TABULATION (VT)" },
1820 { "FF", 0x000c, "FORM FEED (FF)" },
1821 { "CR", 0x000d, "CARRIAGE RETURN (CR)" },
1822 { "SO", 0x000e, "SHIFT OUT (SO)" },
1823 { "SI", 0x000f, "SHIFT IN (SI)" },
1824 { "DL", 0x0010, "DATALINK ESCAPE (DLE)" },
1825 { "D1", 0x0011, "DEVICE CONTROL ONE (DC1)" },
1826 { "D2", 0x0012, "DEVICE CONTROL TWO (DC2)" },
1827 { "D3", 0x0013, "DEVICE CONTROL THREE (DC3)" },
1828 { "D4", 0x0014, "DEVICE CONTROL FOUR (DC4)" },
1829 { "NK", 0x0015, "NEGATIVE ACKNOWLEDGE (NAK)" },
1830 { "SY", 0x0016, "SYNCRONOUS IDLE (SYN)" },
1831 { "EB", 0x0017, "END OF TRANSMISSION BLOCK (ETB)" },
1832 { "CN", 0x0018, "CANCEL (CAN)" },
1833 { "EM", 0x0019, "END OF MEDIUM (EM)" },
1834 { "SB", 0x001a, "SUBSTITUTE (SUB)" },
1835 { "EC", 0x001b, "ESCAPE (ESC)" },
1836 { "FS", 0x001c, "FILE SEPARATOR (IS4)" },
1837 { "GS", 0x001d, "GROUP SEPARATOR (IS3)" },
1838 { "RS", 0x001e, "RECORD SEPARATOR (IS2)" },
1839 { "US", 0x001f, "UNIT SEPARATOR (IS1)" },
1840 { "DT", 0x007f, "DELETE (DEL)" },
1841 { "PA", 0x0080, "PADDING CHARACTER (PAD)" },
1842 { "HO", 0x0081, "HIGH OCTET PRESET (HOP)" },
1843 { "BH", 0x0082, "BREAK PERMITTED HERE (BPH)" },
1844 { "NH", 0x0083, "NO BREAK HERE (NBH)" },
1845 { "IN", 0x0084, "INDEX (IND)" },
1846 { "NL", 0x0085, "NEXT LINE (NEL)" },
1847 { "SA", 0x0086, "START OF SELECTED AREA (SSA)" },
1848 { "ES", 0x0087, "END OF SELECTED AREA (ESA)" },
1849 { "HS", 0x0088, "CHARACTER TABULATION SET (HTS)" },
1850 { "HJ", 0x0089, "CHARACTER TABULATION WITH JUSTIFICATION (HTJ)" },
1851 { "VS", 0x008a, "LINE TABULATION SET (VTS)" },
1852 { "PD", 0x008b, "PARTIAL LINE FORWARD (PLD)" },
1853 { "PU", 0x008c, "PARTIAL LINE BACKWARD (PLU)" },
1854 { "RI", 0x008d, "REVERSE LINE FEED (RI)" },
1855 { "S2", 0x008e, "SINGLE-SHIFT TWO (SS2)" },
1856 { "S3", 0x008f, "SINGLE-SHIFT THREE (SS3)" },
1857 { "DC", 0x0090, "DEVICE CONTROL STRING (DCS)" },
1858 { "P1", 0x0091, "PRIVATE USE ONE (PU1)" },
1859 { "P2", 0x0092, "PRIVATE USE TWO (PU2)" },
1860 { "TS", 0x0093, "SET TRANSMIT STATE (STS)" },
1861 { "CC", 0x0094, "CANCEL CHARACTER (CCH)" },
1862 { "MW", 0x0095, "MESSAGE WAITING (MW)" },
1863 { "SG", 0x0096, "START OF GUARDED AREA (SPA)" },
1864 { "EG", 0x0097, "END OF GUARDED AREA (EPA)" },
1865 { "SS", 0x0098, "START OF STRING (SOS)" },
1866 { "GC", 0x0099, "SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)" },
1867 { "SC", 0x009a, "SINGLE CHARACTER INTRODUCER (SCI)" },
1868 { "CI", 0x009b, "CONTROL SEQUENCE INTRODUCER (CSI)" },
1869 { "ST", 0x009c, "STRING TERMINATOR (ST)" },
1870 { "OC", 0x009d, "OPERATING SYSTEM COMMAND (OSC)" },
1871 { "PM", 0x009e, "PRIVACY MESSAGE (PM)" },
1872 { "AC", 0x009f, "APPLICATION PROGRAM COMMAND (APC)" },
1873 { " ", 0xe000, "indicates unfinished (Mnemonic)" },
1874 { "/c", 0xe001, "JOIN THIS LINE WITH NEXT LINE (Mnemonic)" },
1875 { "UA", 0xe002, "Unit space A (ISO-IR-8-1 064)" },
1876 { "UB", 0xe003, "Unit space B (ISO-IR-8-1 096)" },
1877 { "\"3", 0xe004, "NON-SPACING UMLAUT (ISO-IR-38 201) (character part)" },
1878 { "\"1", 0xe005, "NON-SPACING DIAERESIS WITH ACCENT (ISO-IR-70 192) (character part)" },
1879 { "\"!", 0xe006, "NON-SPACING GRAVE ACCENT (ISO-IR-103 193) (character part)" },
1880 { "\"'", 0xe007, "NON-SPACING ACUTE ACCENT (ISO-IR-103 194) (character part)" },
1881 { "\">", 0xe008, "NON-SPACING CIRCUMFLEX ACCENT (ISO-IR-103 195) (character part)" },
1882 { "\"?", 0xe009, "NON-SPACING TILDE (ISO-IR-103 196) (character part)" },
1883 { "\"-", 0xe00a, "NON-SPACING MACRON (ISO-IR-103 197) (character part)" },
1884 { "\"(", 0xe00b, "NON-SPACING BREVE (ISO-IR-103 198) (character part)" },
1885 { "\".", 0xe00c, "NON-SPACING DOT ABOVE (ISO-IR-103 199) (character part)" },
1886 { "\":", 0xe00d, "NON-SPACING DIAERESIS (ISO-IR-103 200) (character part)" },
1887 { "\"0", 0xe00e, "NON-SPACING RING ABOVE (ISO-IR-103 202) (character part)" },
1888 { "\"\"", 0xe00f, "NON-SPACING DOUBLE ACCUTE (ISO-IR-103 204) (character part)" },
1889 { "\"<", 0xe010, "NON-SPACING CARON (ISO-IR-103 206) (character part)" },
1890 { "\",", 0xe011, "NON-SPACING CEDILLA (ISO-IR-103 203) (character part)" },
1891 { "\";", 0xe012, "NON-SPACING OGONEK (ISO-IR-103 206) (character part)" },
1892 { "\"_", 0xe013, "NON-SPACING LOW LINE (ISO-IR-103 204) (character part)" },
1893 { "\"=", 0xe014, "NON-SPACING DOUBLE LOW LINE (ISO-IR-38 217) (character part)" },
1894 { "\"/", 0xe015, "NON-SPACING LONG SOLIDUS (ISO-IR-128 201) (character part)" },
1895 { "\"i", 0xe016, "GREEK NON-SPACING IOTA BELOW (ISO-IR-55 39) (character part)" },
1896 { "\"d", 0xe017, "GREEK NON-SPACING DASIA PNEUMATA (ISO-IR-55 38) (character part)" },
1897 { "\"p", 0xe018, "GREEK NON-SPACING PSILI PNEUMATA (ISO-IR-55 37) (character part)" },
1898 { ";;", 0xe019, "GREEK DASIA PNEUMATA (ISO-IR-18 92)" },
1899 { ",,", 0xe01a, "GREEK PSILI PNEUMATA (ISO-IR-18 124)" },
1900 { "b3", 0xe01b, "GREEK SMALL LETTER MIDDLE BETA (ISO-IR-18 99)" },
1901 { "Ci", 0xe01c, "CIRCLE (ISO-IR-83 0294)" },
1902 { "f(", 0xe01d, "FUNCTION SIGN (ISO-IR-143 221)" },
1903 { "ed", 0xe01e, "LATIN SMALL LETTER EZH (ISO-IR-158 142)" },
1904 { "am", 0xe01f, "ANTE MERIDIAM SIGN (ISO-IR-149 0267)" },
1905 { "pm", 0xe020, "POST MERIDIAM SIGN (ISO-IR-149 0268)" },
1906 { "Tel", 0xe021, "TEL COMPATIBILITY SIGN (ISO-IR-149 0269)" },
1907 { "a+:", 0xe022, "ARABIC LETTER ALEF FINAL FORM COMPATIBILITY (IBM868 144)" },
1908 { "Fl", 0xe023, "DUTCH GUILDER SIGN (IBM437 159)" },
1909 { "GF", 0xe024, "GAMMA FUNCTION SIGN (ISO-10646-1DIS 032/032/037/122)" },
1910 { ">V", 0xe025, "RIGHTWARDS VECTOR ABOVE (ISO-10646-1DIS 032/032/038/046)" },
1911 { "!*", 0xe026, "GREEK VARIA (ISO-10646-1DIS 032/032/042/164)" },
1912 { "?*", 0xe027, "GREEK PERISPOMENI (ISO-10646-1DIS 032/032/042/165)" },
1913 { "J<", 0xe028, "LATIN CAPITAL LETTER J WITH CARON (lowercase: 000/000/001/240)" },
1914 { "", 0, NULL },
1917 static struct termios tio_old, tio_new;
1919 // return values: 0 (not found), 1 (found), -1 (prefix)
1920 static int lookup(const char *name, wchar_t *rune) {
1921 size_t len = strlen(name);
1922 for (const Digraph *d = digraphs; d->name[0]; d++) {
1923 if (strncmp(name, d->name, len) == 0) {
1924 *rune = d->rune;
1925 return d->name[len] == '\0' ? 1 : -1;
1928 return 0;
1931 static void setup(void) {
1932 tcgetattr(0, &tio_old);
1933 tio_new = tio_old;
1934 tio_new.c_iflag &= ~(BRKINT|PARMRK|ISTRIP|INLCR|IGNCR|ICRNL|IXON);
1935 tio_new.c_lflag &= ~(ECHO|ECHONL|ICANON|ISIG|IEXTEN);
1936 tio_new.c_cflag &= ~(CSIZE|PARENB);
1937 tio_new.c_cflag |= CS8;
1938 tio_new.c_cc[VMIN] = 1;
1939 tcsetattr(0, TCSANOW, &tio_new);
1942 static void cleanup(void) {
1943 tcsetattr(0, TCSANOW, &tio_old);
1946 static ssize_t readc(char *c) {
1947 for (;;) {
1948 ssize_t r = read(0, c, 1);
1949 if (r == -1 && errno == EINTR)
1950 continue;
1951 return r;
1955 /* program exit status:
1956 * 0 -> success
1957 * 1 -> invalid
1958 * 2 -> prefix
1959 * 3 -> error
1961 int main(int argc, char *argv[]) {
1962 setlocale(LC_ALL, "");
1964 if (argc == 1) {
1965 for (const Digraph *d = digraphs; d->name[0]; d++)
1966 wprintf(L"%s %lc %s\n", d->name, d->rune, d->description);
1967 return 0;
1970 if (strcmp(argv[1], "-") == 0) {
1971 setup();
1972 char name[MAX_DIGRAPH_LENGTH+1] = "";
1973 for (size_t i = 0; i < sizeof(name)-1; i++) {
1974 ssize_t r = readc(name+i);
1975 if (r == -1) {
1976 cleanup();
1977 fputs("I/O error", stderr);
1978 return 3;
1981 wchar_t rune;
1982 int l = lookup(name, &rune);
1983 if (l == 0 || (l == -1 && r == 0)) {
1984 cleanup();
1985 fprintf(stderr, "Unknown digraph: `%s'\n", name);
1986 return 1;
1987 } else if (l == 1) {
1988 cleanup();
1989 putwchar(rune);
1990 return 0;
1993 cleanup();
1994 return 1;
1997 wchar_t *runes = calloc(argc-1, sizeof(runes[0]));
1998 if (!runes) {
1999 perror(NULL);
2000 return 1;
2003 for (int i = 1; i < argc; i++) {
2004 int l = lookup(argv[i], &runes[i-1]);
2005 if (l == 0) {
2006 fprintf(stderr, "Unknown digraph: `%s'\n", argv[i]);
2007 return 1;
2008 } else if (l == -1) {
2009 return 2;
2013 for (int i = 0; i < argc-1; i++)
2014 putwchar(runes[i]);
2015 return 0;