5 # FreeType 2 glyph name builder
9 # Copyright 1996-2000, 2003, 2005, 2007, 2008 by
10 # David Turner, Robert Wilhelm, and Werner Lemberg.
12 # This file is part of the FreeType project, and may only be used, modified,
13 # and distributed under the terms of the FreeType project license,
14 # LICENSE.TXT. By continuing to use, modify, or distribute this file you
15 # indicate that you have read the license and understand and accept it
21 usage: %s <output-file>
23 This python script generates the glyph names tables defined in the
26 Its single argument is the name of the header file to be created.
30 import sys
, string
, struct
, re
, os
.path
33 # This table lists the glyphs according to the Macintosh specification.
34 # It is used by the TrueType Postscript names table.
38 # http://fonts.apple.com/TTRefMan/RM06/Chap6post.html
40 # for the official list.
42 mac_standard_names
= \
45 ".notdef", ".null", "nonmarkingreturn", "space", "exclam",
46 "quotedbl", "numbersign", "dollar", "percent", "ampersand",
49 "quotesingle", "parenleft", "parenright", "asterisk", "plus",
50 "comma", "hyphen", "period", "slash", "zero",
53 "one", "two", "three", "four", "five",
54 "six", "seven", "eight", "nine", "colon",
57 "semicolon", "less", "equal", "greater", "question",
58 "at", "A", "B", "C", "D",
61 "E", "F", "G", "H", "I",
62 "J", "K", "L", "M", "N",
65 "O", "P", "Q", "R", "S",
66 "T", "U", "V", "W", "X",
69 "Y", "Z", "bracketleft", "backslash", "bracketright",
70 "asciicircum", "underscore", "grave", "a", "b",
73 "c", "d", "e", "f", "g",
74 "h", "i", "j", "k", "l",
77 "m", "n", "o", "p", "q",
78 "r", "s", "t", "u", "v",
81 "w", "x", "y", "z", "braceleft",
82 "bar", "braceright", "asciitilde", "Adieresis", "Aring",
85 "Ccedilla", "Eacute", "Ntilde", "Odieresis", "Udieresis",
86 "aacute", "agrave", "acircumflex", "adieresis", "atilde",
89 "aring", "ccedilla", "eacute", "egrave", "ecircumflex",
90 "edieresis", "iacute", "igrave", "icircumflex", "idieresis",
93 "ntilde", "oacute", "ograve", "ocircumflex", "odieresis",
94 "otilde", "uacute", "ugrave", "ucircumflex", "udieresis",
97 "dagger", "degree", "cent", "sterling", "section",
98 "bullet", "paragraph", "germandbls", "registered", "copyright",
101 "trademark", "acute", "dieresis", "notequal", "AE",
102 "Oslash", "infinity", "plusminus", "lessequal", "greaterequal",
105 "yen", "mu", "partialdiff", "summation", "product",
106 "pi", "integral", "ordfeminine", "ordmasculine", "Omega",
109 "ae", "oslash", "questiondown", "exclamdown", "logicalnot",
110 "radical", "florin", "approxequal", "Delta", "guillemotleft",
113 "guillemotright", "ellipsis", "nonbreakingspace", "Agrave", "Atilde",
114 "Otilde", "OE", "oe", "endash", "emdash",
117 "quotedblleft", "quotedblright", "quoteleft", "quoteright", "divide",
118 "lozenge", "ydieresis", "Ydieresis", "fraction", "currency",
121 "guilsinglleft", "guilsinglright", "fi", "fl", "daggerdbl",
122 "periodcentered", "quotesinglbase", "quotedblbase", "perthousand",
126 "Ecircumflex", "Aacute", "Edieresis", "Egrave", "Iacute",
127 "Icircumflex", "Idieresis", "Igrave", "Oacute", "Ocircumflex",
130 "apple", "Ograve", "Uacute", "Ucircumflex", "Ugrave",
131 "dotlessi", "circumflex", "tilde", "macron", "breve",
134 "dotaccent", "ring", "cedilla", "hungarumlaut", "ogonek",
135 "caron", "Lslash", "lslash", "Scaron", "scaron",
138 "Zcaron", "zcaron", "brokenbar", "Eth", "eth",
139 "Yacute", "yacute", "Thorn", "thorn", "minus",
142 "multiply", "onesuperior", "twosuperior", "threesuperior", "onehalf",
143 "onequarter", "threequarters", "franc", "Gbreve", "gbreve",
146 "Idotaccent", "Scedilla", "scedilla", "Cacute", "cacute",
147 "Ccaron", "ccaron", "dcroat"
151 # The list of standard `SID' glyph names. For the official list,
152 # see Annex A of document at
154 # http://partners.adobe.com/asn/developer/pdfs/tn/5176.CFF.pdf.
156 sid_standard_names
= \
159 ".notdef", "space", "exclam", "quotedbl", "numbersign",
160 "dollar", "percent", "ampersand", "quoteright", "parenleft",
163 "parenright", "asterisk", "plus", "comma", "hyphen",
164 "period", "slash", "zero", "one", "two",
167 "three", "four", "five", "six", "seven",
168 "eight", "nine", "colon", "semicolon", "less",
171 "equal", "greater", "question", "at", "A",
172 "B", "C", "D", "E", "F",
175 "G", "H", "I", "J", "K",
176 "L", "M", "N", "O", "P",
179 "Q", "R", "S", "T", "U",
180 "V", "W", "X", "Y", "Z",
183 "bracketleft", "backslash", "bracketright", "asciicircum", "underscore",
184 "quoteleft", "a", "b", "c", "d",
187 "e", "f", "g", "h", "i",
188 "j", "k", "l", "m", "n",
191 "o", "p", "q", "r", "s",
192 "t", "u", "v", "w", "x",
195 "y", "z", "braceleft", "bar", "braceright",
196 "asciitilde", "exclamdown", "cent", "sterling", "fraction",
199 "yen", "florin", "section", "currency", "quotesingle",
200 "quotedblleft", "guillemotleft", "guilsinglleft", "guilsinglright", "fi",
203 "fl", "endash", "dagger", "daggerdbl", "periodcentered",
204 "paragraph", "bullet", "quotesinglbase", "quotedblbase", "quotedblright",
207 "guillemotright", "ellipsis", "perthousand", "questiondown", "grave",
208 "acute", "circumflex", "tilde", "macron", "breve",
211 "dotaccent", "dieresis", "ring", "cedilla", "hungarumlaut",
212 "ogonek", "caron", "emdash", "AE", "ordfeminine",
215 "Lslash", "Oslash", "OE", "ordmasculine", "ae",
216 "dotlessi", "lslash", "oslash", "oe", "germandbls",
219 "onesuperior", "logicalnot", "mu", "trademark", "Eth",
220 "onehalf", "plusminus", "Thorn", "onequarter", "divide",
223 "brokenbar", "degree", "thorn", "threequarters", "twosuperior",
224 "registered", "minus", "eth", "multiply", "threesuperior",
227 "copyright", "Aacute", "Acircumflex", "Adieresis", "Agrave",
228 "Aring", "Atilde", "Ccedilla", "Eacute", "Ecircumflex",
231 "Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis",
232 "Igrave", "Ntilde", "Oacute", "Ocircumflex", "Odieresis",
235 "Ograve", "Otilde", "Scaron", "Uacute", "Ucircumflex",
236 "Udieresis", "Ugrave", "Yacute", "Ydieresis", "Zcaron",
239 "aacute", "acircumflex", "adieresis", "agrave", "aring",
240 "atilde", "ccedilla", "eacute", "ecircumflex", "edieresis",
243 "egrave", "iacute", "icircumflex", "idieresis", "igrave",
244 "ntilde", "oacute", "ocircumflex", "odieresis", "ograve",
247 "otilde", "scaron", "uacute", "ucircumflex", "udieresis",
248 "ugrave", "yacute", "ydieresis", "zcaron", "exclamsmall",
251 "Hungarumlautsmall", "dollaroldstyle", "dollarsuperior", "ampersandsmall",
253 "parenleftsuperior", "parenrightsuperior", "twodotenleader",
254 "onedotenleader", "zerooldstyle",
257 "oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle",
259 "sixoldstyle", "sevenoldstyle", "eightoldstyle", "nineoldstyle",
263 "threequartersemdash", "periodsuperior", "questionsmall", "asuperior",
265 "centsuperior", "dsuperior", "esuperior", "isuperior", "lsuperior",
268 "msuperior", "nsuperior", "osuperior", "rsuperior", "ssuperior",
269 "tsuperior", "ff", "ffi", "ffl", "parenleftinferior",
272 "parenrightinferior", "Circumflexsmall", "hyphensuperior", "Gravesmall",
274 "Bsmall", "Csmall", "Dsmall", "Esmall", "Fsmall",
277 "Gsmall", "Hsmall", "Ismall", "Jsmall", "Ksmall",
278 "Lsmall", "Msmall", "Nsmall", "Osmall", "Psmall",
281 "Qsmall", "Rsmall", "Ssmall", "Tsmall", "Usmall",
282 "Vsmall", "Wsmall", "Xsmall", "Ysmall", "Zsmall",
285 "colonmonetary", "onefitted", "rupiah", "Tildesmall", "exclamdownsmall",
286 "centoldstyle", "Lslashsmall", "Scaronsmall", "Zcaronsmall",
290 "Brevesmall", "Caronsmall", "Dotaccentsmall", "Macronsmall", "figuredash",
291 "hypheninferior", "Ogoneksmall", "Ringsmall", "Cedillasmall",
295 "oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird",
296 "twothirds", "zerosuperior", "foursuperior", "fivesuperior",
300 "sevensuperior", "eightsuperior", "ninesuperior", "zeroinferior",
302 "twoinferior", "threeinferior", "fourinferior", "fiveinferior",
306 "seveninferior", "eightinferior", "nineinferior", "centinferior",
308 "periodinferior", "commainferior", "Agravesmall", "Aacutesmall",
312 "Atildesmall", "Adieresissmall", "Aringsmall", "AEsmall", "Ccedillasmall",
313 "Egravesmall", "Eacutesmall", "Ecircumflexsmall", "Edieresissmall",
317 "Iacutesmall", "Icircumflexsmall", "Idieresissmall", "Ethsmall",
319 "Ogravesmall", "Oacutesmall", "Ocircumflexsmall", "Otildesmall",
323 "OEsmall", "Oslashsmall", "Ugravesmall", "Uacutesmall",
325 "Udieresissmall", "Yacutesmall", "Thornsmall", "Ydieresissmall",
329 "001.001", "001.002", "001.003", "Black", "Bold",
330 "Book", "Light", "Medium", "Regular", "Roman",
337 # This table maps character codes of the Adobe Standard Type 1
338 # encoding to glyph indices in the sid_standard_names table.
340 t1_standard_encoding
= \
342 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
343 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
344 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
345 0, 0, 1, 2, 3, 4, 5, 6, 7, 8,
346 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
348 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
349 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
350 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
351 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
352 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
354 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
355 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
356 89, 90, 91, 92, 93, 94, 95, 0, 0, 0,
357 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
358 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
360 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
361 0, 96, 97, 98, 99, 100, 101, 102, 103, 104,
362 105, 106, 107, 108, 109, 110, 0, 111, 112, 113,
363 114, 0, 115, 116, 117, 118, 119, 120, 121, 122,
364 0, 123, 0, 124, 125, 126, 127, 128, 129, 130,
366 131, 0, 132, 133, 0, 134, 135, 136, 137, 0,
367 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
368 0, 0, 0, 0, 0, 138, 0, 139, 0, 0,
369 0, 0, 140, 141, 142, 143, 0, 0, 0, 0,
370 0, 144, 0, 0, 0, 145, 0, 0, 146, 147,
376 # This table maps character codes of the Adobe Expert Type 1
377 # encoding to glyph indices in the sid_standard_names table.
379 t1_expert_encoding
= \
381 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
382 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
383 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
384 0, 0, 1, 229, 230, 0, 231, 232, 233, 234,
385 235, 236, 237, 238, 13, 14, 15, 99, 239, 240,
387 241, 242, 243, 244, 245, 246, 247, 248, 27, 28,
388 249, 250, 251, 252, 0, 253, 254, 255, 256, 257,
389 0, 0, 0, 258, 0, 0, 259, 260, 261, 262,
390 0, 0, 263, 264, 265, 0, 266, 109, 110, 267,
391 268, 269, 0, 270, 271, 272, 273, 274, 275, 276,
393 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
394 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
395 297, 298, 299, 300, 301, 302, 303, 0, 0, 0,
396 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
397 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
399 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
400 0, 304, 305, 306, 0, 0, 307, 308, 309, 310,
401 311, 0, 312, 0, 0, 313, 0, 0, 314, 315,
402 0, 0, 316, 317, 318, 0, 0, 0, 158, 155,
403 163, 319, 320, 321, 322, 323, 324, 325, 0, 0,
405 326, 150, 164, 169, 327, 328, 329, 330, 331, 332,
406 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
407 343, 344, 345, 346, 347, 348, 349, 350, 351, 352,
408 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
409 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
411 373, 374, 375, 376, 377, 378
415 # This data has been taken literally from the file `glyphlist.txt',
416 # version 2.0, 22 Sept 2002. It is available from
418 # http://partners.adobe.com/asn/developer/typeforum/unicodegn.html
419 # http://partners.adobe.com/public/developer/en/opentype/glyphlist.txt
421 adobe_glyph_list
= """\
439 Acircumflexacute;1EA4
440 Acircumflexdotbelow;1EAC
441 Acircumflexgrave;1EA6
442 Acircumflexhookabove;1EA8
443 Acircumflexsmall;F7E2
444 Acircumflextilde;1EAA
450 Adieresiscyrillic;04D2
501 Cheabkhasiancyrillic;04BC
503 Chedescenderabkhasiancyrillic;04BE
504 Chedescendercyrillic;04B6
505 Chedieresiscyrillic;04F4
507 Chekhakassiancyrillic;04CB
508 Cheverticalstrokecyrillic;04B8
523 Dcircumflexbelow;1E12
546 Dzeabkhasiancyrillic;04E0
558 Ecircumflexacute;1EBE
559 Ecircumflexbelow;1E18
560 Ecircumflexdotbelow;1EC6
561 Ecircumflexgrave;1EC0
562 Ecircumflexhookabove;1EC2
563 Ecircumflexsmall;F7EA
564 Ecircumflextilde;1EC4
579 Eiotifiedcyrillic;0464
588 Endescendercyrillic;04A2
598 Ereversedcyrillic;042D
600 Esdescendercyrillic;04AA
641 Ghemiddlehookcyrillic;0494
642 Ghestrokecyrillic;0492
643 Gheupturncyrillic;0490
660 Haabkhasiancyrillic;04A8
661 Hadescendercyrillic;04B2
662 Hardsigncyrillic;042A
676 Hungarumlautsmall;F6F8
688 Icircumflexsmall;F7EE
693 Idieresiscyrillic;04E4
722 Izhitsadblgravecyrillic;0476
734 Kabashkircyrillic;04A0
737 Kadescendercyrillic;049A
740 Kastrokecyrillic;049E
741 Kaverticalstrokecyrillic;049C
767 Lcircumflexbelow;1E3C
800 Ncircumflexbelow;1E4A
821 Obarreddieresiscyrillic;04EA
827 Ocircumflexacute;1ED0
828 Ocircumflexdotbelow;1ED8
829 Ocircumflexgrave;1ED2
830 Ocircumflexhookabove;1ED4
831 Ocircumflexsmall;F7F4
832 Ocircumflextilde;1ED6
837 Odieresiscyrillic;04E6
861 Omegaroundcyrillic;047A
862 Omegatitlocyrillic;047C
887 Pemiddlehookcyrillic;04A6
920 Rsmallinvertedsuperior;02B6
971 Schwadieresiscyrillic;04DA
977 Sdotbelowdotaccent;1E68
989 Softsigncyrillic;042C
998 Tcircumflexbelow;1E70
1003 Tedescendercyrillic;04AC
1032 Ucircumflexbelow;1E76
1033 Ucircumflexsmall;F7FB
1041 Udieresiscyrillic;04F0
1043 Udieresismacron;01D5
1056 Uhungarumlautcyrillic;04F2
1060 Umacroncyrillic;04EE
1061 Umacrondieresis;1E7A
1066 Upsilonacutehooksymbolgreek;03D3
1068 Upsilondieresis;03AB
1069 Upsilondieresishooksymbolgreek;03D4
1070 Upsilonhooksymbol;03D2
1075 Ustraightcyrillic;04AE
1076 Ustraightstrokecyrillic;04B0
1119 Yerudieresiscyrillic;04F8
1130 Yusbigiotifiedcyrillic;046C
1131 Yuslittlecyrillic;0466
1132 Yuslittleiotifiedcyrillic;0468
1144 Zedescendercyrillic;0498
1145 Zedieresiscyrillic;04DE
1148 Zhebrevecyrillic;04C1
1150 Zhedescendercyrillic;0496
1151 Zhedieresiscyrillic;04DC
1162 aamatragurmukhi;0A3E
1164 aavowelsignbengali;09BE
1165 aavowelsigndeva;093E
1166 aavowelsigngujarati;0ABE
1167 abbreviationmarkarmenian;055F
1168 abbreviationsigndeva;0970
1176 abrevehookabove;1EB3
1181 acircumflexacute;1EA5
1182 acircumflexdotbelow;1EAD
1183 acircumflexgrave;1EA7
1184 acircumflexhookabove;1EA9
1185 acircumflextilde;1EAB
1198 adieresiscyrillic;04D3
1199 adieresismacron;01DF
1463 aimatragurmukhi;0A48
1466 aininitialarabic;FECB
1467 ainmedialarabic;FECC
1469 aivowelsignbengali;09C8
1470 aivowelsigndeva;0948
1471 aivowelsigngujarati;0AC8
1473 akatakanahalfwidth;FF71
1477 alefdageshhebrew;FB30
1478 aleffinalarabic;FE8E
1479 alefhamzaabovearabic;0623
1480 alefhamzaabovefinalarabic;FE84
1481 alefhamzabelowarabic;0625
1482 alefhamzabelowfinalarabic;FE88
1484 aleflamedhebrew;FB4F
1485 alefmaddaabovearabic;0622
1486 alefmaddaabovefinalarabic;FE82
1487 alefmaksuraarabic;0649
1488 alefmaksurafinalarabic;FEF0
1489 alefmaksurainitialarabic;FEF3
1490 alefmaksuramedialarabic;FEF4
1491 alefpatahhebrew;FB2E
1492 alefqamatshebrew;FB2F
1500 ampersandmonospace;FF06
1507 anglebracketleft;3008
1508 anglebracketleftvertical;FE3F
1509 anglebracketright;3009
1510 anglebracketrightvertical;FE40
1516 anusvarabengali;0982
1518 anusvaragujarati;0A82
1522 apostrophearmenian;055A
1527 approxequalorimage;2252
1528 approximatelyequal;2245
1550 arrowheaddownmod;02C5
1551 arrowheadleftmod;02C2
1552 arrowheadrightmod;02C3
1557 arrowleftdblstroke;21CD
1558 arrowleftoverright;21C6
1561 arrowrightdblstroke;21CF
1562 arrowrightheavy;279E
1563 arrowrightoverleft;21C4
1564 arrowrightwhite;21E8
1570 arrowupdownbase;21A8
1572 arrowupleftofdown;21C5
1577 asciicircummonospace;FF3E
1579 asciitildemonospace;FF5E
1584 asmallkatakanahalfwidth;FF67
1586 asteriskaltonearabic;066D
1589 asteriskmonospace;FF0A
1593 asymptoticallyequal;2243
1604 aulengthmarkbengali;09D7
1605 aumatragurmukhi;0A4C
1606 auvowelsignbengali;09CC
1607 auvowelsigndeva;094C
1608 auvowelsigngujarati;0ACC
1612 ayinaltonehebrew;FB20
1617 backslashmonospace;FF3C
1630 beamedsixteenthnotes;266C
1635 behinitialarabic;FE91
1637 behmedialarabic;FE92
1638 behmeeminitialarabic;FC9F
1639 behmeemisolatedarabic;FC08
1640 behnoonfinalarabic;FC6D
1645 betasymbolgreek;03D0
1647 betdageshhebrew;FB31
1662 blackdownpointingtriangle;25BC
1663 blackleftpointingpointer;25C4
1664 blackleftpointingtriangle;25C0
1665 blacklenticularbracketleft;3010
1666 blacklenticularbracketleftvertical;FE3B
1667 blacklenticularbracketright;3011
1668 blacklenticularbracketrightvertical;FE3C
1669 blacklowerlefttriangle;25E3
1670 blacklowerrighttriangle;25E2
1672 blackrightpointingpointer;25BA
1673 blackrightpointingtriangle;25B6
1674 blacksmallsquare;25AA
1675 blacksmilingface;263B
1678 blackupperlefttriangle;25E4
1679 blackupperrighttriangle;25E5
1680 blackuppointingsmalltriangle;25B4
1681 blackuppointingtriangle;25B2
1695 braceleftmonospace;FF5B
1698 braceleftvertical;FE37
1702 bracerightmonospace;FF5D
1703 bracerightsmall;FE5C
1705 bracerightvertical;FE38
1709 bracketleftmonospace;FF3B
1714 bracketrightmonospace;FF3D
1719 breveinvertedbelowcmb;032F
1720 breveinvertedcmb;0311
1721 breveinverteddoublecmb;0361
1723 bridgeinvertedbelowcmb;033A
1742 candrabindubengali;0981
1744 candrabindudeva;0901
1745 candrabindugujarati;0A81
1776 cheabkhasiancyrillic;04BD
1779 chedescenderabkhasiancyrillic;04BF
1780 chedescendercyrillic;04B7
1781 chedieresiscyrillic;04F5
1783 chekhakassiancyrillic;04CC
1784 cheverticalstrokecyrillic;04B9
1786 chieuchacirclekorean;3277
1787 chieuchaparenkorean;3217
1788 chieuchcirclekorean;3269
1790 chieuchparenkorean;3209
1796 cieucacirclekorean;3276
1797 cieucaparenkorean;3216
1798 cieuccirclekorean;3268
1800 cieucparenkorean;3208
1801 cieucuparenkorean;321C
1806 circlepostalmark;3036
1807 circlewithlefthalfblack;25D0
1808 circlewithrighthalfblack;25D1
1810 circumflexbelowcmb;032D
1822 cmsquaredsquare;33A0
1829 colontriangularhalfmod;02D1
1830 colontriangularmod;02D0
1833 commaaboverightcmb;0315
1839 commareversedabovecmb;0314
1840 commareversedmod;02BD
1843 commaturnedabovecmb;0312
1847 contourintegral;222E
1884 cornerbracketleft;300C
1885 cornerbracketlefthalfwidth;FF62
1886 cornerbracketleftvertical;FE41
1887 cornerbracketright;300D
1888 cornerbracketrighthalfwidth;FF63
1889 cornerbracketrightvertical;FE42
1890 corporationsquare;337F
1909 dadinitialarabic;FEBF
1910 dadmedialarabic;FEC0
1922 daletdageshhebrew;FB33
1923 dalethatafpatah;05D3 05B2
1924 dalethatafpatahhebrew;05D3 05B2
1925 dalethatafsegol;05D3 05B1
1926 dalethatafsegolhebrew;05D3 05B1
1928 dalethiriq;05D3 05B4
1929 dalethiriqhebrew;05D3 05B4
1930 daletholam;05D3 05B9
1931 daletholamhebrew;05D3 05B9
1932 daletpatah;05D3 05B7
1933 daletpatahhebrew;05D3 05B7
1934 daletqamats;05D3 05B8
1935 daletqamatshebrew;05D3 05B8
1936 daletqubuts;05D3 05BB
1937 daletqubutshebrew;05D3 05BB
1938 daletsegol;05D3 05B6
1939 daletsegolhebrew;05D3 05B6
1940 daletsheva;05D3 05B0
1941 daletshevahebrew;05D3 05B0
1942 dalettsere;05D3 05B5
1943 dalettserehebrew;05D3 05B5
1947 dammatanaltonearabic;064C
1951 dargalefthebrew;05A7
1952 dasiapneumatacyrilliccmb;0485
1954 dblanglebracketleft;300A
1955 dblanglebracketleftvertical;FE3D
1956 dblanglebracketright;300B
1957 dblanglebracketrightvertical;FE3E
1958 dblarchinvertedbelowcmb;032B
1970 dblverticallineabovecmb;030E
1976 dcircumflexbelow;1E13
1983 ddalfinalarabic;FB89
1991 decimalseparatorarabic;066B
1992 decimalseparatorpersian;066B
2003 denominatorminusonenumeratorbengali;09F8
2011 dialytikatonoscmb;0344
2013 diamondsuitwhite;2662
2016 dieresisbelowcmb;0324
2039 dollarmonospace;FF04
2052 dotlessjstrokehook;0284
2056 doubleyodpatahhebrew;FB1F
2057 downtackbelowcmb;031E
2069 dzeabkhasiancyrillic;04E1
2079 ecandragujarati;0A8D
2080 ecandravowelsigndeva;0945
2081 ecandravowelsigngujarati;0AC5
2085 echyiwnarmenian;0587
2088 ecircumflexacute;1EBF
2089 ecircumflexbelow;1E19
2090 ecircumflexdotbelow;1EC7
2091 ecircumflexgrave;1EC1
2092 ecircumflexhookabove;1EC3
2093 ecircumflextilde;1EC5
2102 eematragurmukhi;0A47
2115 eightcircleinversesansserif;2791
2122 eighthackarabic;0668
2124 eighthnotebeamed;266B
2125 eightideographicparen;3227
2136 eiotifiedcyrillic;0465
2138 ekatakanahalfwidth;FF74
2139 ekonkargurmukhi;0A74
2148 ellipsisvertical;22EE
2156 emphasismarkarmenian;055B
2162 endescendercyrillic;04A3
2173 eopenreversedclosed;025E
2174 eopenreversedhook;025D
2186 ereversedcyrillic;044D
2188 esdescendercyrillic;04AB
2192 eshortvowelsigndeva;0946
2193 eshreversedloop;01AA
2194 eshsquatreversed;0285
2197 esmallkatakanahalfwidth;FF6A
2206 etnahtafoukhhebrew;0591
2207 etnahtafoukhlefthebrew;0591
2209 etnahtalefthebrew;0591
2213 evowelsignbengali;09C7
2215 evowelsigngujarati;0AC7
2220 exclamdownsmall;F7A1
2221 exclammonospace;FF01
2242 fehinitialarabic;FED3
2243 fehmedialarabic;FED4
2258 finalkafdageshhebrew;FB3A
2260 finalkafqamats;05DA 05B8
2261 finalkafqamatshebrew;05DA 05B8
2262 finalkafsheva;05DA 05B0
2263 finalkafshevahebrew;05DA 05B0
2271 finaltsadihebrew;05E5
2272 firsttonechinese;02C9
2279 fivecircleinversesansserif;278E
2286 fiveideographicparen;3224
2308 fourcircleinversesansserif;278D
2314 fourideographicparen;3223
2317 fournumeratorbengali;09F7
2328 fourthtonechinese;02CB
2338 gafinitialarabic;FB94
2339 gafmedialarabic;FB95
2345 gammalatinsmall;0263
2360 geometricallyequal;2251
2361 gereshaccenthebrew;059C
2363 gereshmuqdamhebrew;059D
2365 gershayimaccenthebrew;059E
2366 gershayimhebrew;05F4
2374 ghainfinalarabic;FECE
2375 ghaininitialarabic;FECF
2376 ghainmedialarabic;FED0
2377 ghemiddlehookcyrillic;0495
2378 ghestrokecyrillic;0493
2379 gheupturncyrillic;0491
2389 gimeldageshhebrew;FB32
2392 glottalinvertedstroke;01BE
2394 glottalstopinverted;0296
2396 glottalstopreversed;0295
2397 glottalstopreversedmod;02C1
2398 glottalstopreversedsuperior;02E4
2399 glottalstopstroke;02A1
2400 glottalstopstrokereversed;02A2
2418 greaterequalorless;22DB
2419 greatermonospace;FF1E
2420 greaterorequivalent;2273
2422 greateroverequal;2267
2435 haabkhasiancyrillic;04A9
2438 hadescendercyrillic;04B3
2444 hahinitialarabic;FEA3
2446 hahmedialarabic;FEA4
2449 hakatakanahalfwidth;FF8A
2452 hamzadammaarabic;0621 064F
2453 hamzadammatanarabic;0621 064C
2454 hamzafathaarabic;0621 064E
2455 hamzafathatanarabic;0621 064B
2457 hamzalowkasraarabic;0621 0650
2458 hamzalowkasratanarabic;0621 064D
2459 hamzasukunarabic;0621 0652
2461 hardsigncyrillic;044A
2462 harpoonleftbarbup;21BC
2463 harpoonrightbarbup;21C0
2469 hatafpatahhebrew;05B2
2470 hatafpatahnarrowhebrew;05B2
2471 hatafpatahquarterhebrew;05B2
2472 hatafpatahwidehebrew;05B2
2477 hatafqamatshebrew;05B3
2478 hatafqamatsnarrowhebrew;05B3
2479 hatafqamatsquarterhebrew;05B3
2480 hatafqamatswidehebrew;05B3
2485 hatafsegolhebrew;05B1
2486 hatafsegolnarrowhebrew;05B1
2487 hatafsegolquarterhebrew;05B1
2488 hatafsegolwidehebrew;05B1
2504 hehaltonearabic;06C1
2507 hehfinalaltonearabic;FBA7
2508 hehfinalalttwoarabic;FEEA
2510 hehhamzaabovefinalarabic;FBA5
2511 hehhamzaaboveisolatedarabic;FBA4
2512 hehinitialaltonearabic;FBA8
2513 hehinitialarabic;FEEB
2515 hehmedialaltonearabic;FBA9
2516 hehmedialarabic;FEEC
2517 heiseierasquare;337B
2519 hekatakanahalfwidth;FF8D
2520 hekutaarusquare;3336
2527 hieuhacirclekorean;327B
2528 hieuhaparenkorean;321B
2529 hieuhcirclekorean;326D
2531 hieuhparenkorean;320D
2534 hikatakanahalfwidth;FF8B
2540 hiriqnarrowhebrew;05B4
2541 hiriqquarterhebrew;05B4
2542 hiriqwidehebrew;05B4
2549 hokatakanahalfwidth;FF8E
2555 holamnarrowhebrew;05B9
2556 holamquarterhebrew;05B9
2557 holamwidehebrew;05B9
2561 hookpalatalizedbelowcmb;0321
2562 hookretroflexbelowcmb;0322
2575 hukatakanahalfwidth;FF8C
2577 hungarumlautcmb;030B
2581 hyphenmonospace;FF0D
2596 ideographearthcircle;328F
2597 ideographfirecircle;328B
2598 ideographicallianceparen;323F
2599 ideographiccallparen;323A
2600 ideographiccentrecircle;32A5
2601 ideographicclose;3006
2602 ideographiccomma;3001
2603 ideographiccommaleft;FF64
2604 ideographiccongratulationparen;3237
2605 ideographiccorrectcircle;32A3
2606 ideographicearthparen;322F
2607 ideographicenterpriseparen;323D
2608 ideographicexcellentcircle;329D
2609 ideographicfestivalparen;3240
2610 ideographicfinancialcircle;3296
2611 ideographicfinancialparen;3236
2612 ideographicfireparen;322B
2613 ideographichaveparen;3232
2614 ideographichighcircle;32A4
2615 ideographiciterationmark;3005
2616 ideographiclaborcircle;3298
2617 ideographiclaborparen;3238
2618 ideographicleftcircle;32A7
2619 ideographiclowcircle;32A6
2620 ideographicmedicinecircle;32A9
2621 ideographicmetalparen;322E
2622 ideographicmoonparen;322A
2623 ideographicnameparen;3234
2624 ideographicperiod;3002
2625 ideographicprintcircle;329E
2626 ideographicreachparen;3243
2627 ideographicrepresentparen;3239
2628 ideographicresourceparen;323E
2629 ideographicrightcircle;32A8
2630 ideographicsecretcircle;3299
2631 ideographicselfparen;3242
2632 ideographicsocietyparen;3233
2633 ideographicspace;3000
2634 ideographicspecialparen;3235
2635 ideographicstockparen;3231
2636 ideographicstudyparen;323B
2637 ideographicsunparen;3230
2638 ideographicsuperviseparen;323C
2639 ideographicwaterparen;322C
2640 ideographicwoodparen;322D
2641 ideographiczero;3007
2642 ideographmetalcircle;328E
2643 ideographmooncircle;328A
2644 ideographnamecircle;3294
2645 ideographsuncircle;3290
2646 ideographwatercircle;328C
2647 ideographwoodcircle;328D
2651 idieresiscyrillic;04E5
2653 iebrevecyrillic;04D7
2655 ieungacirclekorean;3275
2656 ieungaparenkorean;3215
2657 ieungcirclekorean;3267
2659 ieungparenkorean;3207
2670 iimatragurmukhi;0A40
2672 iishortcyrillic;0439
2673 iivowelsignbengali;09C0
2674 iivowelsigndeva;0940
2675 iivowelsigngujarati;0AC0
2678 ikatakanahalfwidth;FF72
2683 imacroncyrillic;04E3
2684 imageorapproximatelyequal;2253
2705 iotadieresistonos;0390
2712 ismallkatakanahalfwidth;FF68
2716 iterationhiragana;309D
2717 iterationkatakana;30FD
2722 ivowelsignbengali;09BF
2724 ivowelsigngujarati;0ABF
2725 izhitsacyrillic;0475
2726 izhitsadblgravecyrillic;0477
2741 jeemfinalarabic;FE9E
2742 jeeminitialarabic;FE9F
2743 jeemmedialarabic;FEA0
2756 kabashkircyrillic;04A1
2760 kadescendercyrillic;049B
2765 kafdageshhebrew;FB3B
2768 kafinitialarabic;FEDB
2769 kafmedialarabic;FEDC
2776 kakatakanahalfwidth;FF76
2778 kappasymbolgreek;03F0
2779 kapyeounmieumkorean;3171
2780 kapyeounphieuphkorean;3184
2781 kapyeounpieupkorean;3178
2782 kapyeounssangpieupkorean;3179
2784 kashidaautoarabic;0640
2785 kashidaautonosidebearingarabic;0640
2786 kasmallkatakana;30F5
2790 kastrokecyrillic;049F
2791 katahiraprolongmarkhalfwidth;FF70
2792 kaverticalstrokecyrillic;049D
2803 kekatakanahalfwidth;FF79
2805 kesmallkatakana;30F6
2813 khahfinalarabic;FEA6
2814 khahinitialarabic;FEA7
2815 khahmedialarabic;FEA8
2819 khieukhacirclekorean;3278
2820 khieukhaparenkorean;3218
2821 khieukhcirclekorean;326A
2823 khieukhparenkorean;320A
2834 kikatakanahalfwidth;FF77
2835 kiroguramusquare;3315
2836 kiromeetorusquare;3316
2838 kiyeokacirclekorean;326E
2839 kiyeokaparenkorean;320E
2840 kiyeokcirclekorean;3260
2842 kiyeokparenkorean;3200
2843 kiyeoksioskorean;3133
2849 kmsquaredsquare;33A2
2854 kokatakanahalfwidth;FF7A
2857 koreanstandardsymbol;327F
2866 kukatakanahalfwidth;FF78
2875 lakkhangyaothai;0E45
2876 lamaleffinalarabic;FEFC
2877 lamalefhamzaabovefinalarabic;FEF8
2878 lamalefhamzaaboveisolatedarabic;FEF7
2879 lamalefhamzabelowfinalarabic;FEFA
2880 lamalefhamzabelowisolatedarabic;FEF9
2881 lamalefisolatedarabic;FEFB
2882 lamalefmaddaabovefinalarabic;FEF6
2883 lamalefmaddaaboveisolatedarabic;FEF5
2889 lameddageshhebrew;FB3C
2891 lamedholam;05DC 05B9
2892 lamedholamdagesh;05DC 05B9 05BC
2893 lamedholamdageshhebrew;05DC 05B9 05BC
2894 lamedholamhebrew;05DC 05B9
2896 lamhahinitialarabic;FCCA
2897 laminitialarabic;FEDF
2898 lamjeeminitialarabic;FCC9
2899 lamkhahinitialarabic;FCCB
2900 lamlamhehisolatedarabic;FDF2
2901 lammedialarabic;FEE0
2902 lammeemhahinitialarabic;FD88
2903 lammeeminitialarabic;FCCC
2904 lammeemjeeminitialarabic;FEDF FEE4 FEA0
2905 lammeemkhahinitialarabic;FEDF FEE4 FEA8
2913 lcircumflexbelow;1E3D
2918 ldotbelowmacron;1E39
2919 leftangleabovecmb;031A
2920 lefttackbelowcmb;0318
2923 lessequalorgreater;22DA
2925 lessorequivalent;2272
2941 llvocalicbengali;09E1
2943 llvocalicvowelsignbengali;09E3
2944 llvocalicvowelsigndeva;0963
2951 logicalnotreversed;2310
2955 lowlinecenterline;FE4E
2965 lvocalicbengali;098C
2967 lvocalicvowelsignbengali;09E2
2968 lvocalicvowelsigndeva;0962
2976 macronmonospace;FFE3
2982 mahapakhlefthebrew;05A4
2984 maichattawalowleftthai;F895
2985 maichattawalowrightthai;F894
2986 maichattawathai;0E4B
2987 maichattawaupperleftthai;F893
2988 maieklowleftthai;F88C
2989 maieklowrightthai;F88B
2991 maiekupperleftthai;F88A
2992 maihanakatleftthai;F884
2994 maitaikhuleftthai;F889
2996 maitholowleftthai;F88F
2997 maitholowrightthai;F88E
2999 maithoupperleftthai;F88D
3000 maitrilowleftthai;F892
3001 maitrilowrightthai;F891
3003 maitriupperleftthai;F890
3006 makatakanahalfwidth;FF8F
3011 masoracirclehebrew;05AF
3020 meemfinalarabic;FEE2
3021 meeminitialarabic;FEE3
3022 meemmedialarabic;FEE4
3023 meemmeeminitialarabic;FCD1
3024 meemmeemisolatedarabic;FC48
3029 mekatakanahalfwidth;FF92
3032 memdageshhebrew;FB3E
3036 merkhakefulahebrew;05A6
3037 merkhakefulalefthebrew;05A6
3038 merkhalefthebrew;05A5
3041 middledotkatakanahalfwidth;FF65
3043 mieumacirclekorean;3272
3044 mieumaparenkorean;3212
3045 mieumcirclekorean;3264
3047 mieumpansioskorean;3170
3048 mieumparenkorean;3204
3049 mieumpieupkorean;316E
3050 mieumsioskorean;316F
3053 mikatakanahalfwidth;FF90
3060 miribaarusquare;334A
3066 mmsquaredsquare;339F
3070 mokatakanahalfwidth;FF93
3074 moverssquaredsquare;33A8
3090 mukatakanahalfwidth;FF91
3095 munahlefthebrew;05A3
3116 nakatakanahalfwidth;FF85
3124 ncircumflexbelow;1E4B
3130 nekatakanahalfwidth;FF88
3141 nieunacirclekorean;326F
3142 nieunaparenkorean;320F
3143 nieuncieuckorean;3135
3144 nieuncirclekorean;3261
3145 nieunhieuhkorean;3136
3147 nieunpansioskorean;3168
3148 nieunparenkorean;3201
3149 nieunsioskorean;3167
3150 nieuntikeutkorean;3166
3153 nikatakanahalfwidth;FF86
3154 nikhahitleftthai;F899
3160 ninecircleinversesansserif;2792
3166 nineideographicparen;3228
3182 nkatakanahalfwidth;FF9D
3194 nokatakanahalfwidth;FF89
3195 nonbreakingspace;00A0
3199 noonfinalarabic;FEE6
3200 noonghunnaarabic;06BA
3201 noonghunnafinalarabic;FB9F
3202 noonhehinitialarabic;FEE7 FEEC
3203 nooninitialarabic;FEE7
3204 noonjeeminitialarabic;FCD2
3205 noonjeemisolatedarabic;FC4B
3206 noonmedialarabic;FEE8
3207 noonmeeminitialarabic;FCD5
3208 noonmeemisolatedarabic;FC4E
3209 noonnoonfinalarabic;FC8D
3215 notgreaternorequal;2271
3216 notgreaternorless;2279
3219 notlessnorequal;2270
3233 nukatakanahalfwidth;FF87
3239 numbersignmonospace;FF03
3240 numbersignsmall;FE5F
3241 numeralsigngreek;0374
3242 numeralsignlowergreek;0375
3246 nundageshhebrew;FB40
3258 obarredcyrillic;04E9
3259 obarreddieresiscyrillic;04EB
3264 ocandragujarati;0A91
3265 ocandravowelsigndeva;0949
3266 ocandravowelsigngujarati;0AC9
3270 ocircumflexacute;1ED1
3271 ocircumflexdotbelow;1ED9
3272 ocircumflexgrave;1ED3
3273 ocircumflexhookabove;1ED5
3274 ocircumflextilde;1ED7
3280 odieresiscyrillic;04E7
3301 okatakanahalfwidth;FF75
3311 omegalatinclosed;0277
3312 omegaroundcyrillic;047B
3313 omegatitlocyrillic;047D
3323 onecircleinversesansserif;278A
3333 oneideographicparen;3220
3336 onenumeratorbengali;09F4
3349 oomatragurmukhi;0A4B
3358 oshortvowelsigndeva;094A
3363 osmallkatakanahalfwidth;FF6B
3372 overlinecenterline;FE4A
3375 overlinedblwavy;FE4C
3378 ovowelsignbengali;09CB
3380 ovowelsigngujarati;0ACB
3394 palatalizationcyrilliccmb;0484
3395 palochkacyrillic;04C0
3400 parenleftaltonearabic;FD3E
3403 parenleftinferior;208D
3404 parenleftmonospace;FF08
3406 parenleftsuperior;207D
3408 parenleftvertical;FE35
3410 parenrightaltonearabic;FD3F
3413 parenrightinferior;208E
3414 parenrightmonospace;FF09
3415 parenrightsmall;FE5A
3416 parenrightsuperior;207E
3418 parenrightvertical;FE36
3428 patahnarrowhebrew;05B7
3429 patahquarterhebrew;05B7
3430 patahwidehebrew;05B7
3440 pefinaldageshhebrew;FB43
3445 pehinitialarabic;FB58
3447 pehmedialarabic;FB59
3449 pemiddlehookcyrillic;04A7
3453 percentmonospace;FF05
3458 periodhalfwidth;FF61
3460 periodmonospace;FF0E
3463 perispomenigreekcmb;0342
3474 phieuphacirclekorean;327A
3475 phieuphaparenkorean;321A
3476 phieuphcirclekorean;326C
3478 phieuphparenkorean;320C
3487 pieupacirclekorean;3273
3488 pieupaparenkorean;3213
3489 pieupcieuckorean;3176
3490 pieupcirclekorean;3265
3491 pieupkiyeokkorean;3172
3493 pieupparenkorean;3205
3494 pieupsioskiyeokkorean;3174
3495 pieupsioskorean;3144
3496 pieupsiostikeutkorean;3175
3497 pieupthieuthkorean;3177
3498 pieuptikeutkorean;3173
3514 pointingindexdownwhite;261F
3515 pointingindexleftwhite;261C
3516 pointingindexrightwhite;261E
3517 pointingindexupwhite;261D
3537 psilipneumatacyrilliccmb;0486
3548 qafinitialarabic;FED7
3549 qafmedialarabic;FED8
3559 qamatsnarrowhebrew;05B8
3560 qamatsqatanhebrew;05B8
3561 qamatsqatannarrowhebrew;05B8
3562 qamatsqatanquarterhebrew;05B8
3563 qamatsqatanwidehebrew;05B8
3564 qamatsquarterhebrew;05B8
3565 qamatswidehebrew;05B8
3566 qarneyparahebrew;059F
3573 qofdageshhebrew;FB47
3574 qofhatafpatah;05E7 05B2
3575 qofhatafpatahhebrew;05E7 05B2
3576 qofhatafsegol;05E7 05B1
3577 qofhatafsegolhebrew;05E7 05B1
3580 qofhiriqhebrew;05E7 05B4
3582 qofholamhebrew;05E7 05B9
3584 qofpatahhebrew;05E7 05B7
3586 qofqamatshebrew;05E7 05B8
3588 qofqubutshebrew;05E7 05BB
3590 qofsegolhebrew;05E7 05B6
3592 qofshevahebrew;05E7 05B0
3594 qoftserehebrew;05E7 05B5
3602 qubutsnarrowhebrew;05BB
3603 qubutsquarterhebrew;05BB
3604 qubutswidehebrew;05BB
3607 questionarmenian;055E
3609 questiondownsmall;F7BF
3611 questionmonospace;FF1F
3616 quotedblmonospace;FF02
3618 quotedblprimereversed;301D
3621 quoteleftreversed;201B
3627 quotesinglemonospace;FF07
3636 radoverssquaredsquare;33AF
3644 rakatakanahalfwidth;FF97
3645 ralowerdiagonalbengali;09F1
3646 ramiddlediagonalbengali;09F0
3657 rdotbelowmacron;1E5D
3668 rehyehaleflamarabic;0631 FEF3 FE8E 0644
3670 rekatakanahalfwidth;FF9A
3672 reshdageshhebrew;FB48
3673 reshhatafpatah;05E8 05B2
3674 reshhatafpatahhebrew;05E8 05B2
3675 reshhatafsegol;05E8 05B1
3676 reshhatafsegolhebrew;05E8 05B1
3679 reshhiriqhebrew;05E8 05B4
3681 reshholamhebrew;05E8 05B9
3683 reshpatahhebrew;05E8 05B7
3684 reshqamats;05E8 05B8
3685 reshqamatshebrew;05E8 05B8
3686 reshqubuts;05E8 05BB
3687 reshqubutshebrew;05E8 05BB
3689 reshsegolhebrew;05E8 05B6
3691 reshshevahebrew;05E8 05B0
3693 reshtserehebrew;05E8 05B5
3696 reviamugrashhebrew;0597
3699 rfishhookreversed;027F
3705 rhookturnedsuperior;02B5
3708 rieulacirclekorean;3271
3709 rieulaparenkorean;3211
3710 rieulcirclekorean;3263
3711 rieulhieuhkorean;3140
3712 rieulkiyeokkorean;313A
3713 rieulkiyeoksioskorean;3169
3715 rieulmieumkorean;313B
3716 rieulpansioskorean;316C
3717 rieulparenkorean;3203
3718 rieulphieuphkorean;313F
3719 rieulpieupkorean;313C
3720 rieulpieupsioskorean;316B
3721 rieulsioskorean;313D
3722 rieulthieuthkorean;313E
3723 rieultikeutkorean;316A
3724 rieulyeorinhieuhkorean;316D
3726 righttackbelowcmb;0319
3730 rikatakanahalfwidth;FF98
3735 ringhalfleftarmenian;0559
3736 ringhalfleftbelowcmb;031C
3737 ringhalfleftcentered;02D3
3739 ringhalfrightbelowcmb;0339
3740 ringhalfrightcentered;02D2
3749 rokatakanahalfwidth;FF9B
3756 rrehfinalarabic;FB8D
3757 rrvocalicbengali;09E0
3759 rrvocalicgujarati;0AE0
3760 rrvocalicvowelsignbengali;09C4
3761 rrvocalicvowelsigndeva;0944
3762 rrvocalicvowelsigngujarati;0AC4
3766 rturnedsuperior;02B4
3769 rukatakanahalfwidth;FF99
3770 rupeemarkbengali;09F2
3771 rupeesignbengali;09F3
3774 rvocalicbengali;098B
3776 rvocalicgujarati;0A8B
3777 rvocalicvowelsignbengali;09C3
3778 rvocalicvowelsigndeva;0943
3779 rvocalicvowelsigngujarati;0AC3
3783 sacutedotaccent;1E65
3787 sadinitialarabic;FEBB
3788 sadmedialarabic;FEBC
3793 sakatakanahalfwidth;FF7B
3794 sallallahoualayhewasallamarabic;FDFA
3797 samekhdageshhebrew;FB41
3801 saraaimaimalaithai;0E44
3802 saraaimaimuanthai;0E43
3811 saraueeleftthai;F888
3819 scarondotaccent;1E67
3823 schwadieresiscyrillic;04DB
3830 sdotbelowdotaccent;1E69
3831 seagullbelowcmb;033C
3833 secondtonechinese;02CA
3836 seenfinalarabic;FEB2
3837 seeninitialarabic;FEB3
3838 seenmedialarabic;FEB4
3844 segolnarrowhebrew;05B6
3845 segolquarterhebrew;05B6
3847 segolwidehebrew;05B6
3851 sekatakanahalfwidth;FF7E
3853 semicolonarabic;061B
3854 semicolonmonospace;FF1B
3856 semivoicedmarkkana;309C
3857 semivoicedmarkkanahalfwidth;FF9F
3864 sevencircleinversesansserif;2790
3869 sevenhackarabic;0667
3871 sevenideographicparen;3226
3880 seventeencircle;2470
3882 seventeenperiod;2498
3889 shaddadammaarabic;FC61
3890 shaddadammatanarabic;FC5E
3891 shaddafathaarabic;FC60
3892 shaddafathatanarabic;0651 064B
3893 shaddakasraarabic;FC62
3894 shaddakasratanarabic;FC5F
3902 shalshelethebrew;0593
3906 sheenfinalarabic;FEB6
3907 sheeninitialarabic;FEB7
3908 sheenmedialarabic;FEB8
3918 shevanarrowhebrew;05B0
3919 shevaquarterhebrew;05B0
3920 shevawidehebrew;05B0
3925 shindageshhebrew;FB49
3926 shindageshshindot;FB2C
3927 shindageshshindothebrew;FB2C
3928 shindageshsindot;FB2D
3929 shindageshsindothebrew;FB2D
3933 shinshindothebrew;FB2A
3935 shinsindothebrew;FB2B
3940 sigmalunatesymbolgreek;03F2
3943 sikatakanahalfwidth;FF7C
3945 siluqlefthebrew;05BD
3948 siosacirclekorean;3274
3949 siosaparenkorean;3214
3950 sioscieuckorean;317E
3951 sioscirclekorean;3266
3952 sioskiyeokkorean;317A
3954 siosnieunkorean;317B
3955 siosparenkorean;3206
3956 siospieupkorean;317D
3957 siostikeutkorean;317C
3962 sixcircleinversesansserif;278F
3968 sixideographicparen;3225
3978 sixteencurrencydenominatorbengali;09F9
3990 softsigncyrillic;044C
3993 sokatakanahalfwidth;FF7F
3994 soliduslongoverlaycmb;0338
3995 solidusshortoverlaycmb;0337
4001 spacehackarabic;0020
4009 squarediagonalcrosshatchfill;25A9
4010 squarehorizontalfill;25A4
4013 squarekmcapital;33CE
4020 squareorthogonalcrosshatchfill;25A6
4021 squareupperlefttolowerrightfill;25A7
4022 squareupperrighttolowerleftfill;25A8
4023 squareverticalfill;25A5
4024 squarewhitewithsmallblack;25A3
4029 ssangcieuckorean;3149
4030 ssanghieuhkorean;3185
4031 ssangieungkorean;3180
4032 ssangkiyeokkorean;3132
4033 ssangnieunkorean;3165
4034 ssangpieupkorean;3143
4035 ssangsioskorean;3146
4036 ssangtikeutkorean;3138
4039 sterlingmonospace;FFE1
4040 strokelongoverlaycmb;0336
4041 strokeshortoverlaycmb;0335
4049 sukatakanahalfwidth;FF7D
4054 supersetnotequal;228B
4055 supersetorequal;2287
4057 syouwaerasquare;337C
4067 tahinitialarabic;FEC3
4069 tahmedialarabic;FEC4
4070 taisyouerasquare;337D
4072 takatakanahalfwidth;FF80
4078 tavdageshhebrew;FB4A
4086 tchehfinalarabic;FB7B
4087 tchehinitialarabic;FB7C
4088 tchehmedialarabic;FB7D
4089 tchehmeeminitialarabic;FB7C FEE4
4091 tcircumflexbelow;1E71
4097 tedescendercyrillic;04AD
4100 tehhahinitialarabic;FCA2
4101 tehhahisolatedarabic;FC0C
4102 tehinitialarabic;FE97
4104 tehjeeminitialarabic;FCA1
4105 tehjeemisolatedarabic;FC0B
4106 tehmarbutaarabic;0629
4107 tehmarbutafinalarabic;FE94
4108 tehmedialarabic;FE98
4109 tehmeeminitialarabic;FCA4
4110 tehmeemisolatedarabic;FC0E
4111 tehnoonfinalarabic;FC73
4113 tekatakanahalfwidth;FF83
4116 telishagedolahebrew;05A0
4117 telishaqetanahebrew;05A9
4119 tenideographicparen;3229
4126 tetdageshhebrew;FB38
4130 tevirlefthebrew;059B
4136 thalfinalarabic;FEAC
4137 thanthakhatlowleftthai;F898
4138 thanthakhatlowrightthai;F897
4139 thanthakhatthai;0E4C
4140 thanthakhatupperleftthai;F896
4142 thehfinalarabic;FE9A
4143 thehinitialarabic;FE9B
4144 thehmedialarabic;FE9C
4149 thetasymbolgreek;03D1
4150 thieuthacirclekorean;3279
4151 thieuthaparenkorean;3219
4152 thieuthcirclekorean;326B
4154 thieuthparenkorean;320B
4158 thonangmonthothai;0E11
4166 thousandcyrillic;0482
4167 thousandsseparatorarabic;066C
4168 thousandsseparatorpersian;066C
4173 threecircleinversesansserif;278C
4178 threehackarabic;0663
4180 threeideographicparen;3222
4183 threenumeratorbengali;09F6
4189 threequartersemdash;F6DE
4196 tikatakanahalfwidth;FF81
4197 tikeutacirclekorean;3270
4198 tikeutaparenkorean;3210
4199 tikeutcirclekorean;3262
4201 tikeutparenkorean;3202
4208 tildeoverlaycmb;0334
4209 tildeverticalcmb;033E
4212 tipehalefthebrew;0596
4214 titlocyrilliccmb;0483
4221 tokatakanahalfwidth;FF84
4222 tonebarextrahighmod;02E5
4223 tonebarextralowmod;02E9
4233 tortoiseshellbracketleft;3014
4234 tortoiseshellbracketleftsmall;FE5D
4235 tortoiseshellbracketleftvertical;FE39
4236 tortoiseshellbracketright;3015
4237 tortoiseshellbracketrightsmall;FE5E
4238 tortoiseshellbracketrightvertical;FE3A
4253 tsadidageshhebrew;FB46
4261 tserenarrowhebrew;05B5
4262 tserequarterhebrew;05B5
4263 tserewidehebrew;05B5
4271 ttehfinalarabic;FB67
4272 ttehinitialarabic;FB68
4273 ttehmedialarabic;FB69
4281 tukatakanahalfwidth;FF82
4282 tusmallhiragana;3063
4283 tusmallkatakana;30C3
4284 tusmallkatakanahalfwidth;FF6F
4297 twocircleinversesansserif;278B
4301 twodotleadervertical;FE30
4306 twoideographicparen;3221
4309 twonumeratorbengali;09F5
4328 ucircumflexbelow;1E77
4338 udieresiscyrillic;04F1
4340 udieresismacron;01D6
4354 uhungarumlautcyrillic;04F3
4357 ukatakanahalfwidth;FF73
4361 umacroncyrillic;04EF
4362 umacrondieresis;1E7B
4367 underscoremonospace;FF3F
4368 underscorevertical;FE33
4377 upsilondieresis;03CB
4378 upsilondieresistonos;03B0
4388 usmallkatakanahalfwidth;FF69
4389 ustraightcyrillic;04AF
4390 ustraightstrokecyrillic;04B1
4398 uumatragurmukhi;0A42
4399 uuvowelsignbengali;09C2
4400 uuvowelsigndeva;0942
4401 uuvowelsigngujarati;0AC2
4402 uvowelsignbengali;09C1
4404 uvowelsigngujarati;0AC1
4413 vavdageshhebrew;FB35
4424 vehinitialarabic;FB6C
4425 vehmedialarabic;FB6D
4429 verticallineabovecmb;030D
4430 verticallinebelowcmb;0329
4431 verticallinelowmod;02CC
4432 verticallinemod;02C8
4441 visargagujarati;0A83
4444 voicediterationhiragana;309E
4445 voicediterationkatakana;30FE
4447 voicedmarkkanahalfwidth;FF9E
4459 wakatakanahalfwidth;FF9C
4461 wasmallhiragana;308E
4462 wasmallkatakana;30EE
4465 wavyunderscorevertical;FE34
4468 wawhamzaabovearabic;0624
4469 wawhamzaabovefinalarabic;FE86
4484 whitecircleinverse;25D9
4485 whitecornerbracketleft;300E
4486 whitecornerbracketleftvertical;FE43
4487 whitecornerbracketright;300F
4488 whitecornerbracketrightvertical;FE44
4490 whitediamondcontainingblacksmalldiamond;25C8
4491 whitedownpointingsmalltriangle;25BF
4492 whitedownpointingtriangle;25BD
4493 whiteleftpointingsmalltriangle;25C3
4494 whiteleftpointingtriangle;25C1
4495 whitelenticularbracketleft;3016
4496 whitelenticularbracketright;3017
4497 whiterightpointingsmalltriangle;25B9
4498 whiterightpointingtriangle;25B7
4499 whitesmallsquare;25AB
4500 whitesmilingface;263A
4504 whitetortoiseshellbracketleft;3018
4505 whitetortoiseshellbracketright;3019
4506 whiteuppointingsmalltriangle;25B5
4507 whiteuppointingtriangle;25B3
4514 wokatakanahalfwidth;FF66
4544 yakatakanahalfwidth;FF94
4547 yasmallhiragana;3083
4548 yasmallkatakana;30E3
4549 yasmallkatakanahalfwidth;FF6C
4557 yehbarreearabic;06D2
4558 yehbarreefinalarabic;FBAF
4560 yehhamzaabovearabic;0626
4561 yehhamzaabovefinalarabic;FE8A
4562 yehhamzaaboveinitialarabic;FE8B
4563 yehhamzaabovemedialarabic;FE8C
4564 yehinitialarabic;FEF3
4565 yehmedialarabic;FEF4
4566 yehmeeminitialarabic;FCDD
4567 yehmeemisolatedarabic;FC58
4568 yehnoonfinalarabic;FC94
4569 yehthreedotsbelowarabic;06D1
4574 yeorinhieuhkorean;3186
4575 yerahbenyomohebrew;05AA
4576 yerahbenyomolefthebrew;05AA
4578 yerudieresiscyrillic;04F9
4580 yesieungpansioskorean;3183
4581 yesieungsioskorean;3182
4594 yoddageshhebrew;FB39
4597 yodyodpatahhebrew;FB1F
4601 yokatakanahalfwidth;FF96
4603 yosmallhiragana;3087
4604 yosmallkatakana;30E7
4605 yosmallkatakanahalfwidth;FF6E
4613 ypogegrammenigreekcmb;0345
4622 yukatakanahalfwidth;FF95
4625 yusbigiotifiedcyrillic;046D
4626 yuslittlecyrillic;0467
4627 yuslittleiotifiedcyrillic;0469
4628 yusmallhiragana;3085
4629 yusmallkatakana;30E5
4630 yusmallkatakanahalfwidth;FF6D
4642 zahinitialarabic;FEC7
4644 zahmedialarabic;FEC8
4646 zainfinalarabic;FEB0
4648 zaqefgadolhebrew;0595
4649 zaqefqatanhebrew;0594
4653 zayindageshhebrew;FB36
4664 zedescendercyrillic;0499
4665 zedieresiscyrillic;04DF
4681 zerowidthjoiner;FEFF
4682 zerowidthnonjoiner;200C
4687 zhebrevecyrillic;04C2
4689 zhedescendercyrillic;0497
4690 zhedieresiscyrillic;04DD
4706 # string table management
4709 def __init__( self
, name_list
, master_table_name
):
4710 self
.names
= name_list
4711 self
.master_table
= master_table_name
4715 for name
in name_list
:
4716 self
.indices
[name
] = index
4717 index
+= len( name
) + 1
4721 def dump( self
, file ):
4723 write( " static const char " + self
.master_table
+
4724 "[" + repr( self
.total
) + "] =\n" )
4728 for name
in self
.names
:
4730 line
+= string
.join( ( re
.findall( ".", name
) ), "','" )
4733 write( line
+ " };\n\n\n" )
4735 def dump_sublist( self
, file, table_name
, macro_name
, sublist
):
4737 write( "#define " + macro_name
+ " " + repr( len( sublist
) ) + "\n\n" )
4739 write( " /* Values are offsets into the `" +
4740 self
.master_table
+ "' table */\n\n" )
4741 write( " static const short " + table_name
+
4742 "[" + macro_name
+ "] =\n" )
4749 for name
in sublist
:
4751 line
+= "%4d" % self
.indices
[name
]
4758 write( line
+ "\n };\n\n\n" )
4761 # We now store the Adobe Glyph List in compressed form. The list is put
4762 # into a data structure called `trie' (because it has a tree-like
4763 # appearance). Consider, for example, that you want to store the
4764 # following name mapping:
4771 # It is possible to store the entries as follows.
4783 # We see that each node in the trie has:
4785 # - one or more `letters'
4786 # - an optional value
4787 # - zero or more child nodes
4789 # The first step is to call
4791 # root = StringNode( "", 0 )
4792 # for word in map.values():
4793 # root.add( word, map[word] )
4795 # which creates a large trie where each node has only one children.
4799 # root = root.optimize()
4801 # optimizes the trie by merging the letters of successive nodes whenever
4804 # Each node of the trie is stored as follows.
4806 # - First the node's letter, according to the following scheme. We
4807 # use the fact that in the AGL no name contains character codes > 127.
4809 # name bitsize description
4810 # ----------------------------------------------------------------
4811 # notlast 1 Set to 1 if this is not the last letter
4813 # ascii 7 The letter's ASCII value.
4815 # - The letter is followed by a children count and the value of the
4816 # current key (if any). Again we can do some optimization because all
4817 # AGL entries are from the BMP; this means that 16 bits are sufficient
4818 # to store its Unicode values. Additionally, no node has more than
4821 # name bitsize description
4822 # -----------------------------------------
4823 # hasvalue 1 Set to 1 if a 16-bit Unicode value follows.
4824 # num_children 7 Number of children. Can be 0 only if
4825 # `hasvalue' is set to 1.
4826 # value 16 Optional Unicode value.
4828 # - A node is finished by a list of 16bit absolute offsets to the
4829 # children, which must be sorted in increasing order of their first
4832 # For simplicity, all 16bit quantities are stored in big-endian order.
4834 # The root node has first letter = 0, and no value.
4837 def __init__( self
, letter
, value
):
4838 self
.letter
= letter
4842 def __cmp__( self
, other
):
4843 return ord( self
.letter
[0] ) - ord( other
.letter
[0] )
4845 def add( self
, word
, value
):
4846 if len( word
) == 0:
4853 if self
.children
.has_key( letter
):
4854 child
= self
.children
[letter
]
4856 child
= StringNode( letter
, 0 )
4857 self
.children
[letter
] = child
4859 child
.add( word
, value
)
4861 def optimize( self
):
4862 # optimize all children first
4863 children
= self
.children
.values()
4866 for child
in children
:
4867 self
.children
[child
.letter
[0]] = child
.optimize()
4869 # don't optimize if there's a value,
4870 # if we don't have any child or if we
4871 # have more than one child
4872 if ( self
.value
!= 0 ) or ( not children
) or len( children
) > 1:
4877 self
.letter
+= child
.letter
4878 self
.value
= child
.value
4879 self
.children
= child
.children
4883 def dump_debug( self
, write
, margin
):
4884 # this is used during debugging
4885 line
= margin
+ "+-"
4886 if len( self
.letter
) == 0:
4887 line
+= "<NOLETTER>"
4892 line
+= " => " + repr( self
.value
)
4894 write( line
+ "\n" )
4898 for child
in self
.children
.values():
4899 child
.dump_debug( write
, margin
)
4901 def locate( self
, index
):
4903 if len( self
.letter
) > 0:
4904 index
+= len( self
.letter
) + 1
4911 children
= self
.children
.values()
4914 index
+= 2 * len( children
)
4915 for child
in children
:
4916 index
= child
.locate( index
)
4920 def store( self
, storage
):
4922 l
= len( self
.letter
)
4924 storage
+= struct
.pack( "B", 0 )
4926 for n
in range( l
):
4927 val
= ord( self
.letter
[n
] )
4930 storage
+= struct
.pack( "B", val
)
4933 children
= self
.children
.values()
4936 count
= len( children
)
4939 storage
+= struct
.pack( "!BH", count
+ 128, self
.value
)
4941 storage
+= struct
.pack( "B", count
)
4943 for child
in children
:
4944 storage
+= struct
.pack( "!H", child
.index
)
4946 for child
in children
:
4947 storage
= child
.store( storage
)
4952 def adobe_glyph_values():
4953 """return the list of glyph names and their unicode values"""
4955 lines
= string
.split( adobe_glyph_list
, '\n' )
4961 fields
= string
.split( line
, ';' )
4962 # print fields[1] + ' - ' + fields[0]
4963 subfields
= string
.split( fields
[1], ' ' )
4964 if len( subfields
) == 1:
4965 glyphs
.append( fields
[0] )
4966 values
.append( fields
[1] )
4968 return glyphs
, values
4971 def filter_glyph_names( alist
, filter ):
4972 """filter `alist' by taking _out_ all glyph names that are in `filter'"""
4979 filtered_index
= filter.index( name
)
4981 extras
.append( name
)
4986 def dump_encoding( file, encoding_name
, encoding_list
):
4987 """dump a given encoding"""
4990 write( " /* the following are indices into the SID name table */\n" )
4991 write( " static const unsigned short " + encoding_name
+
4992 "[" + repr( len( encoding_list
) ) + "] =\n" )
4998 for value
in encoding_list
:
5000 line
+= "%3d" % value
5007 write( line
+ "\n };\n\n\n" )
5010 def dump_array( the_array
, write
, array_name
):
5011 """dumps a given encoding"""
5013 write( " static const unsigned char " + array_name
+
5014 "[" + repr( len( the_array
) ) + "L] =\n" )
5021 for value
in the_array
:
5023 line
+= "%3d" % ord( value
)
5031 if len( line
) > 1024:
5035 write( line
+ "\n };\n\n\n" )
5039 """main program body"""
5041 if len( sys
.argv
) != 2:
5042 print __doc__
% sys
.argv
[0]
5045 file = open( sys
.argv
[1], "w\n" )
5048 count_sid
= len( sid_standard_names
)
5050 # `mac_extras' contains the list of glyph names in the Macintosh standard
5051 # encoding which are not in the SID Standard Names.
5053 mac_extras
= filter_glyph_names( mac_standard_names
, sid_standard_names
)
5055 # `base_list' contains the names of our final glyph names table.
5056 # It consists of the `mac_extras' glyph names, followed by the SID
5059 mac_extras_count
= len( mac_extras
)
5060 base_list
= mac_extras
+ sid_standard_names
5062 write( "/***************************************************************************/\n" )
5065 write( "/* %-71s*/\n" % os
.path
.basename( sys
.argv
[1] ) )
5068 write( "/* PostScript glyph names. */\n" )
5070 write( "/* Copyright 2005, 2008 by */\n" )
5071 write( "/* David Turner, Robert Wilhelm, and Werner Lemberg. */\n" )
5073 write( "/* This file is part of the FreeType project, and may only be used, */\n" )
5074 write( "/* modified, and distributed under the terms of the FreeType project */\n" )
5075 write( "/* license, LICENSE.TXT. By continuing to use, modify, or distribute */\n" )
5076 write( "/* this file you indicate that you have read the license and */\n" )
5077 write( "/* understand and accept it fully. */\n" )
5079 write( "/***************************************************************************/\n" )
5082 write( " /* This file has been generated automatically -- do not edit! */\n" )
5086 # dump final glyph list (mac extras + sid standard names)
5088 st
= StringTable( base_list
, "ft_standard_glyph_names" )
5091 st
.dump_sublist( file, "ft_mac_names",
5092 "FT_NUM_MAC_NAMES", mac_standard_names
)
5093 st
.dump_sublist( file, "ft_sid_names",
5094 "FT_NUM_SID_NAMES", sid_standard_names
)
5096 dump_encoding( file, "t1_standard_encoding", t1_standard_encoding
)
5097 dump_encoding( file, "t1_expert_encoding", t1_expert_encoding
)
5099 # dump the AGL in its compressed form
5101 agl_glyphs
, agl_values
= adobe_glyph_values()
5102 dict = StringNode( "", 0 )
5104 for g
in range( len( agl_glyphs
) ):
5105 dict.add( agl_glyphs
[g
], eval( "0x" + agl_values
[g
] ) )
5107 dict = dict.optimize()
5108 dict_len
= dict.locate( 0 )
5109 dict_array
= dict.store( "" )
5113 * This table is a compressed version of the Adobe Glyph List (AGL),
5114 * optimized for efficient searching. It has been generated by the
5115 * `glnames.py' python script located in the `src/tools' directory.
5117 * The lookup function to get the Unicode value for a given string
5118 * is defined below the table.
5121 #ifdef FT_CONFIG_OPTION_ADOBE_GLYPH_LIST
5125 dump_array( dict_array
, write
, "ft_adobe_glyph_list" )
5127 # write the lookup routine now
5131 * This function searches the compressed table efficiently.
5133 static unsigned long
5134 ft_get_adobe_glyph_index( const char* name,
5138 int count, min, max;
5139 const unsigned char* p = ft_adobe_glyph_list;
5142 if ( name == 0 || name >= limit )
5154 int mid = ( min + max ) >> 1;
5155 const unsigned char* q = p + mid * 2;
5159 q = ft_adobe_glyph_list + ( ( (int)q[0] << 8 ) | q[1] );
5177 /* assert (*p & 127) == c */
5179 if ( name >= limit )
5181 if ( (p[0] & 128) == 0 &&
5183 return (unsigned long)( ( (int)p[2] << 8 ) | p[3] );
5191 if ( c != (p[0] & 127) )
5204 for ( ; count > 0; count--, p += 2 )
5206 int offset = ( (int)p[0] << 8 ) | p[1];
5207 const unsigned char* q = ft_adobe_glyph_list + offset;
5209 if ( c == ( q[0] & 127 ) )
5225 #endif /* FT_CONFIG_OPTION_ADOBE_GLYPH_LIST */
5229 if 0: # generate unit test, or don't
5231 # now write the unit test to check that everything works OK
5233 write( "#ifdef TEST\n\n" )
5235 write( "static const char* const the_names[] = {\n" )
5236 for name
in agl_glyphs
:
5237 write( ' "' + name
+ '",\n' )
5240 write( "static const unsigned long the_values[] = {\n" )
5241 for val
in agl_values
:
5242 write( ' 0x' + val
+ ',\n' )
5253 const char* const* names = the_names;
5254 const unsigned long* values = the_values;
5257 for ( ; *names; names++, values++ )
5259 const char* name = *names;
5260 unsigned long reference = *values;
5261 unsigned long value;
5264 value = ft_get_adobe_glyph_index( name, name + strlen( name ) );
5265 if ( value != reference )
5268 fprintf( stderr, "name '%s' => %04x instead of %04x\\n",
5269 name, value, reference );
5277 write( "#endif /* TEST */\n" )
5279 write("\n/* END */\n")
5282 # Now run the main routine