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