Edit

kc3-lang/freetype/src/tools/glnames.py

Branch :

  • Show log

    Commit

  • Author : Werner Lemberg
    Date : 2005-03-11 09:14:21
    Hash : 1dbcbabf
    Message : Improving comment.

  • src/tools/glnames.py
  • #!/usr/bin/env python
    #
    
    #
    # FreeType 2 glyph name builder
    #
    
    
    # Copyright 1996-2000, 2003, 2005 by
    # David Turner, Robert Wilhelm, and Werner Lemberg.
    #
    # This file is part of the FreeType project, and may only be used, modified,
    # and distributed under the terms of the FreeType project license,
    # LICENSE.TXT.  By continuing to use, modify, or distribute this file you
    # indicate that you have read the license and understand and accept it
    # fully.
    
    
    """\
    
    usage: %s <output-file>
    
      This python script generates the glyph names tables defined in the
      PSNames module.
    
      Its single argument is the name of the header file to be created.
    """
    
    
    import sys, string, struct, re, os.path
    
    
    # This table lists the glyphs according to the Macintosh specification.
    # It is used by the TrueType Postscript names table.
    #
    # See
    #
    #   http://fonts.apple.com/TTRefMan/RM06/Chap6post.html
    #
    # for the official list.
    #
    mac_standard_names = \
    [
      # 0
      ".notdef", ".null", "nonmarkingreturn", "space", "exclam",
      "quotedbl", "numbersign", "dollar", "percent", "ampersand",
    
      # 10
      "quotesingle", "parenleft", "parenright", "asterisk", "plus",
      "comma", "hyphen", "period", "slash", "zero",
    
      # 20
      "one", "two", "three", "four", "five",
      "six", "seven", "eight", "nine", "colon",
    
      # 30
      "semicolon", "less", "equal", "greater", "question",
      "at", "A", "B", "C", "D",
    
      # 40
      "E", "F", "G", "H", "I",
      "J", "K", "L", "M", "N",
    
      # 50
      "O", "P", "Q", "R", "S",
      "T", "U", "V", "W", "X",
    
      # 60
      "Y", "Z", "bracketleft", "backslash", "bracketright",
      "asciicircum", "underscore", "grave", "a", "b",
    
      # 70
      "c", "d", "e", "f", "g",
      "h", "i", "j", "k", "l",
    
      # 80
      "m", "n", "o", "p", "q",
      "r", "s", "t", "u", "v",
    
      # 90
      "w", "x", "y", "z", "braceleft",
      "bar", "braceright", "asciitilde", "Adieresis", "Aring",
    
      # 100
      "Ccedilla", "Eacute", "Ntilde", "Odieresis", "Udieresis",
      "aacute", "agrave", "acircumflex", "adieresis", "atilde",
    
      # 110
      "aring", "ccedilla", "eacute", "egrave", "ecircumflex",
      "edieresis", "iacute", "igrave", "icircumflex", "idieresis",
    
      # 120
      "ntilde", "oacute", "ograve", "ocircumflex", "odieresis",
      "otilde", "uacute", "ugrave", "ucircumflex", "udieresis",
    
      # 130
      "dagger", "degree", "cent", "sterling", "section",
      "bullet", "paragraph", "germandbls", "registered", "copyright",
    
      # 140
      "trademark", "acute", "dieresis", "notequal", "AE",
      "Oslash", "infinity", "plusminus", "lessequal", "greaterequal",
    
      # 150
      "yen", "mu", "partialdiff", "summation", "product",
      "pi", "integral", "ordfeminine", "ordmasculine", "Omega",
    
      # 160
      "ae", "oslash", "questiondown", "exclamdown", "logicalnot",
      "radical", "florin", "approxequal", "Delta", "guillemotleft",
    
      # 170
      "guillemotright", "ellipsis", "nonbreakingspace", "Agrave", "Atilde",
      "Otilde", "OE", "oe", "endash", "emdash",
    
      # 180
      "quotedblleft", "quotedblright", "quoteleft", "quoteright", "divide",
      "lozenge", "ydieresis", "Ydieresis", "fraction", "currency",
    
      # 190
      "guilsinglleft", "guilsinglright", "fi", "fl", "daggerdbl",
      "periodcentered", "quotesinglbase", "quotedblbase", "perthousand",
        "Acircumflex",
    
      # 200
      "Ecircumflex", "Aacute", "Edieresis", "Egrave", "Iacute",
      "Icircumflex", "Idieresis", "Igrave", "Oacute", "Ocircumflex",
    
      # 210
      "apple", "Ograve", "Uacute", "Ucircumflex", "Ugrave",
      "dotlessi", "circumflex", "tilde", "macron", "breve",
    
      # 220
      "dotaccent", "ring", "cedilla", "hungarumlaut", "ogonek",
      "caron", "Lslash", "lslash", "Scaron", "scaron",
    
      # 230
      "Zcaron", "zcaron", "brokenbar", "Eth", "eth",
      "Yacute", "yacute", "Thorn", "thorn", "minus",
    
      # 240
      "multiply", "onesuperior", "twosuperior", "threesuperior", "onehalf",
      "onequarter", "threequarters", "franc", "Gbreve", "gbreve",
    
      # 250
      "Idotaccent", "Scedilla", "scedilla", "Cacute", "cacute",
      "Ccaron", "ccaron", "dcroat"
    ]
    
    
    # The list of standard `SID' glyph names.  For the official list,
    # see Annex A of document at
    #
    #   http://partners.adobe.com/asn/developer/pdfs/tn/5176.CFF.pdf.
    #
    sid_standard_names = \
    [
      # 0
      ".notdef", "space", "exclam", "quotedbl", "numbersign",
      "dollar", "percent", "ampersand", "quoteright", "parenleft",
    
      # 10
      "parenright", "asterisk", "plus", "comma", "hyphen",
      "period", "slash", "zero", "one", "two",
    
      # 20
      "three", "four", "five", "six", "seven",
      "eight", "nine", "colon", "semicolon", "less",
    
      # 30
      "equal", "greater", "question", "at", "A",
      "B", "C", "D", "E", "F",
    
      # 40
      "G", "H", "I", "J", "K",
      "L", "M", "N", "O", "P",
    
      # 50
      "Q", "R", "S", "T", "U",
      "V", "W", "X", "Y", "Z",
    
      # 60
      "bracketleft", "backslash", "bracketright", "asciicircum", "underscore",
      "quoteleft", "a", "b", "c", "d",
    
      # 70
      "e", "f", "g", "h", "i",
      "j", "k", "l", "m", "n",
    
      # 80
      "o", "p", "q", "r", "s",
      "t", "u", "v", "w", "x",
    
      # 90
      "y", "z", "braceleft", "bar", "braceright",
      "asciitilde", "exclamdown", "cent", "sterling", "fraction",
    
      # 100
      "yen", "florin", "section", "currency", "quotesingle",
      "quotedblleft", "guillemotleft", "guilsinglleft", "guilsinglright", "fi",
    
      # 110
      "fl", "endash", "dagger", "daggerdbl", "periodcentered",
      "paragraph", "bullet", "quotesinglbase", "quotedblbase", "quotedblright",
    
      # 120
      "guillemotright", "ellipsis", "perthousand", "questiondown", "grave",
      "acute", "circumflex", "tilde", "macron", "breve",
    
      # 130
      "dotaccent", "dieresis", "ring", "cedilla", "hungarumlaut",
      "ogonek", "caron", "emdash", "AE", "ordfeminine",
    
      # 140
      "Lslash", "Oslash", "OE", "ordmasculine", "ae",
      "dotlessi", "lslash", "oslash", "oe", "germandbls",
    
      # 150
      "onesuperior", "logicalnot", "mu", "trademark", "Eth",
      "onehalf", "plusminus", "Thorn", "onequarter", "divide",
    
      # 160
      "brokenbar", "degree", "thorn", "threequarters", "twosuperior",
      "registered", "minus", "eth", "multiply", "threesuperior",
    
      # 170
      "copyright", "Aacute", "Acircumflex", "Adieresis", "Agrave",
      "Aring", "Atilde", "Ccedilla", "Eacute", "Ecircumflex",
    
      # 180
      "Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis",
      "Igrave", "Ntilde", "Oacute", "Ocircumflex", "Odieresis",
    
      # 190
      "Ograve", "Otilde", "Scaron", "Uacute", "Ucircumflex",
      "Udieresis", "Ugrave", "Yacute", "Ydieresis", "Zcaron",
    
      # 200
      "aacute", "acircumflex", "adieresis", "agrave", "aring",
      "atilde", "ccedilla", "eacute", "ecircumflex", "edieresis",
    
      # 210
      "egrave", "iacute", "icircumflex", "idieresis", "igrave",
      "ntilde", "oacute", "ocircumflex", "odieresis", "ograve",
    
      # 220
      "otilde", "scaron", "uacute", "ucircumflex", "udieresis",
      "ugrave", "yacute", "ydieresis", "zcaron", "exclamsmall",
    
      # 230
      "Hungarumlautsmall", "dollaroldstyle", "dollarsuperior", "ampersandsmall",
        "Acutesmall",
      "parenleftsuperior", "parenrightsuperior", "twodotenleader",
        "onedotenleader", "zerooldstyle",
    
      # 240
      "oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle",
        "fiveoldstyle",
      "sixoldstyle", "sevenoldstyle", "eightoldstyle", "nineoldstyle",
        "commasuperior",
    
      # 250
      "threequartersemdash", "periodsuperior", "questionsmall", "asuperior",
        "bsuperior",
      "centsuperior", "dsuperior", "esuperior", "isuperior", "lsuperior",
    
      # 260
      "msuperior", "nsuperior", "osuperior", "rsuperior", "ssuperior",
      "tsuperior", "ff", "ffi", "ffl", "parenleftinferior",
    
      # 270
      "parenrightinferior", "Circumflexsmall", "hyphensuperior", "Gravesmall",
        "Asmall",
      "Bsmall", "Csmall", "Dsmall", "Esmall", "Fsmall",
    
      # 280
      "Gsmall", "Hsmall", "Ismall", "Jsmall", "Ksmall",
      "Lsmall", "Msmall", "Nsmall", "Osmall", "Psmall",
    
      # 290
      "Qsmall", "Rsmall", "Ssmall", "Tsmall", "Usmall",
      "Vsmall", "Wsmall", "Xsmall", "Ysmall", "Zsmall",
    
      # 300
      "colonmonetary", "onefitted", "rupiah", "Tildesmall", "exclamdownsmall",
      "centoldstyle", "Lslashsmall", "Scaronsmall", "Zcaronsmall",
        "Dieresissmall",
    
      # 310
      "Brevesmall", "Caronsmall", "Dotaccentsmall", "Macronsmall", "figuredash",
      "hypheninferior", "Ogoneksmall", "Ringsmall", "Cedillasmall",
        "questiondownsmall",
    
      # 320
      "oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird",
      "twothirds", "zerosuperior", "foursuperior", "fivesuperior",
        "sixsuperior",
    
      # 330
      "sevensuperior", "eightsuperior", "ninesuperior", "zeroinferior",
        "oneinferior",
      "twoinferior", "threeinferior", "fourinferior", "fiveinferior",
        "sixinferior",
    
      # 340
      "seveninferior", "eightinferior", "nineinferior", "centinferior",
        "dollarinferior",
      "periodinferior", "commainferior", "Agravesmall", "Aacutesmall",
        "Acircumflexsmall",
    
      # 350
      "Atildesmall", "Adieresissmall", "Aringsmall", "AEsmall", "Ccedillasmall",
      "Egravesmall", "Eacutesmall", "Ecircumflexsmall", "Edieresissmall",
        "Igravesmall",
    
      # 360
      "Iacutesmall", "Icircumflexsmall", "Idieresissmall", "Ethsmall",
        "Ntildesmall",
      "Ogravesmall", "Oacutesmall", "Ocircumflexsmall", "Otildesmall",
        "Odieresissmall",
    
      # 370
      "OEsmall", "Oslashsmall", "Ugravesmall", "Uacutesmall",
        "Ucircumflexsmall",
      "Udieresissmall", "Yacutesmall", "Thornsmall", "Ydieresissmall",
        "001.000",
    
      # 380
      "001.001", "001.002", "001.003", "Black", "Bold",
      "Book", "Light", "Medium", "Regular", "Roman",
    
      # 390
      "Semibold"
    ]
    
    
    # This table maps character codes of the Adobe Standard Type 1
    # encoding to glyph indices in the sid_standard_names table.
    #
    t1_standard_encoding = \
    [
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   1,   2,   3,   4,   5,   6,   7,   8,
        9,  10,  11,  12,  13,  14,  15,  16,  17,  18,
    
       19,  20,  21,  22,  23,  24,  25,  26,  27,  28,
       29,  30,  31,  32,  33,  34,  35,  36,  37,  38,
       39,  40,  41,  42,  43,  44,  45,  46,  47,  48,
       49,  50,  51,  52,  53,  54,  55,  56,  57,  58,
       59,  60,  61,  62,  63,  64,  65,  66,  67,  68,
    
       69,  70,  71,  72,  73,  74,  75,  76,  77,  78,
       79,  80,  81,  82,  83,  84,  85,  86,  87,  88,
       89,  90,  91,  92,  93,  94,  95,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,  96,  97,  98,  99, 100, 101, 102, 103, 104,
      105, 106, 107, 108, 109, 110,   0, 111, 112, 113,
      114,   0, 115, 116, 117, 118, 119, 120, 121, 122,
        0, 123,   0, 124, 125, 126, 127, 128, 129, 130,
    
      131,   0, 132, 133,   0, 134, 135, 136, 137,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0, 138,   0, 139,   0,   0,
        0,   0, 140, 141, 142, 143,   0,   0,   0,   0,
        0, 144,   0,   0,   0, 145,   0,   0, 146, 147,
    
      148, 149,   0,   0,   0,   0
    ]
    
    
    # This table maps character codes of the Adobe Expert Type 1
    # encoding to glyph indices in the sid_standard_names table.
    #
    t1_expert_encoding = \
    [
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   1, 229, 230,   0, 231, 232, 233, 234,
      235, 236, 237, 238,  13,  14,  15,  99, 239, 240,
    
      241, 242, 243, 244, 245, 246, 247, 248,  27,  28,
      249, 250, 251, 252,   0, 253, 254, 255, 256, 257,
        0,   0,   0, 258,   0,   0, 259, 260, 261, 262,
        0,   0, 263, 264, 265,   0, 266, 109, 110, 267,
      268, 269,   0, 270, 271, 272, 273, 274, 275, 276,
    
      277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
      287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
      297, 298, 299, 300, 301, 302, 303,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0, 304, 305, 306,   0,   0, 307, 308, 309, 310,
      311,   0, 312,   0,   0, 313,   0,   0, 314, 315,
        0,   0, 316, 317, 318,   0,   0,   0, 158, 155,
      163, 319, 320, 321, 322, 323, 324, 325,   0,   0,
    
      326, 150, 164, 169, 327, 328, 329, 330, 331, 332,
      333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
      343, 344, 345, 346, 347, 348, 349, 350, 351, 352,
      353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
      363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
    
      373, 374, 375, 376, 377, 378
    ]
    
    
    # This data has been taken literally from the file `glyphlist.txt',
    # version 2.0, 22 Sept 2002.  It is available from
    #
    #   http://partners.adobe.com/asn/developer/typeforum/unicodegn.html
    #   http://partners.adobe.com/public/developer/en/opentype/glyphlist.txt
    #
    adobe_glyph_list = """\
    A;0041
    AE;00C6
    AEacute;01FC
    AEmacron;01E2
    AEsmall;F7E6
    Aacute;00C1
    Aacutesmall;F7E1
    Abreve;0102
    Abreveacute;1EAE
    Abrevecyrillic;04D0
    Abrevedotbelow;1EB6
    Abrevegrave;1EB0
    Abrevehookabove;1EB2
    Abrevetilde;1EB4
    Acaron;01CD
    Acircle;24B6
    Acircumflex;00C2
    Acircumflexacute;1EA4
    Acircumflexdotbelow;1EAC
    Acircumflexgrave;1EA6
    Acircumflexhookabove;1EA8
    Acircumflexsmall;F7E2
    Acircumflextilde;1EAA
    Acute;F6C9
    Acutesmall;F7B4
    Acyrillic;0410
    Adblgrave;0200
    Adieresis;00C4
    Adieresiscyrillic;04D2
    Adieresismacron;01DE
    Adieresissmall;F7E4
    Adotbelow;1EA0
    Adotmacron;01E0
    Agrave;00C0
    Agravesmall;F7E0
    Ahookabove;1EA2
    Aiecyrillic;04D4
    Ainvertedbreve;0202
    Alpha;0391
    Alphatonos;0386
    Amacron;0100
    Amonospace;FF21
    Aogonek;0104
    Aring;00C5
    Aringacute;01FA
    Aringbelow;1E00
    Aringsmall;F7E5
    Asmall;F761
    Atilde;00C3
    Atildesmall;F7E3
    Aybarmenian;0531
    B;0042
    Bcircle;24B7
    Bdotaccent;1E02
    Bdotbelow;1E04
    Becyrillic;0411
    Benarmenian;0532
    Beta;0392
    Bhook;0181
    Blinebelow;1E06
    Bmonospace;FF22
    Brevesmall;F6F4
    Bsmall;F762
    Btopbar;0182
    C;0043
    Caarmenian;053E
    Cacute;0106
    Caron;F6CA
    Caronsmall;F6F5
    Ccaron;010C
    Ccedilla;00C7
    Ccedillaacute;1E08
    Ccedillasmall;F7E7
    Ccircle;24B8
    Ccircumflex;0108
    Cdot;010A
    Cdotaccent;010A
    Cedillasmall;F7B8
    Chaarmenian;0549
    Cheabkhasiancyrillic;04BC
    Checyrillic;0427
    Chedescenderabkhasiancyrillic;04BE
    Chedescendercyrillic;04B6
    Chedieresiscyrillic;04F4
    Cheharmenian;0543
    Chekhakassiancyrillic;04CB
    Cheverticalstrokecyrillic;04B8
    Chi;03A7
    Chook;0187
    Circumflexsmall;F6F6
    Cmonospace;FF23
    Coarmenian;0551
    Csmall;F763
    D;0044
    DZ;01F1
    DZcaron;01C4
    Daarmenian;0534
    Dafrican;0189
    Dcaron;010E
    Dcedilla;1E10
    Dcircle;24B9
    Dcircumflexbelow;1E12
    Dcroat;0110
    Ddotaccent;1E0A
    Ddotbelow;1E0C
    Decyrillic;0414
    Deicoptic;03EE
    Delta;2206
    Deltagreek;0394
    Dhook;018A
    Dieresis;F6CB
    DieresisAcute;F6CC
    DieresisGrave;F6CD
    Dieresissmall;F7A8
    Digammagreek;03DC
    Djecyrillic;0402
    Dlinebelow;1E0E
    Dmonospace;FF24
    Dotaccentsmall;F6F7
    Dslash;0110
    Dsmall;F764
    Dtopbar;018B
    Dz;01F2
    Dzcaron;01C5
    Dzeabkhasiancyrillic;04E0
    Dzecyrillic;0405
    Dzhecyrillic;040F
    E;0045
    Eacute;00C9
    Eacutesmall;F7E9
    Ebreve;0114
    Ecaron;011A
    Ecedillabreve;1E1C
    Echarmenian;0535
    Ecircle;24BA
    Ecircumflex;00CA
    Ecircumflexacute;1EBE
    Ecircumflexbelow;1E18
    Ecircumflexdotbelow;1EC6
    Ecircumflexgrave;1EC0
    Ecircumflexhookabove;1EC2
    Ecircumflexsmall;F7EA
    Ecircumflextilde;1EC4
    Ecyrillic;0404
    Edblgrave;0204
    Edieresis;00CB
    Edieresissmall;F7EB
    Edot;0116
    Edotaccent;0116
    Edotbelow;1EB8
    Efcyrillic;0424
    Egrave;00C8
    Egravesmall;F7E8
    Eharmenian;0537
    Ehookabove;1EBA
    Eightroman;2167
    Einvertedbreve;0206
    Eiotifiedcyrillic;0464
    Elcyrillic;041B
    Elevenroman;216A
    Emacron;0112
    Emacronacute;1E16
    Emacrongrave;1E14
    Emcyrillic;041C
    Emonospace;FF25
    Encyrillic;041D
    Endescendercyrillic;04A2
    Eng;014A
    Enghecyrillic;04A4
    Enhookcyrillic;04C7
    Eogonek;0118
    Eopen;0190
    Epsilon;0395
    Epsilontonos;0388
    Ercyrillic;0420
    Ereversed;018E
    Ereversedcyrillic;042D
    Escyrillic;0421
    Esdescendercyrillic;04AA
    Esh;01A9
    Esmall;F765
    Eta;0397
    Etarmenian;0538
    Etatonos;0389
    Eth;00D0
    Ethsmall;F7F0
    Etilde;1EBC
    Etildebelow;1E1A
    Euro;20AC
    Ezh;01B7
    Ezhcaron;01EE
    Ezhreversed;01B8
    F;0046
    Fcircle;24BB
    Fdotaccent;1E1E
    Feharmenian;0556
    Feicoptic;03E4
    Fhook;0191
    Fitacyrillic;0472
    Fiveroman;2164
    Fmonospace;FF26
    Fourroman;2163
    Fsmall;F766
    G;0047
    GBsquare;3387
    Gacute;01F4
    Gamma;0393
    Gammaafrican;0194
    Gangiacoptic;03EA
    Gbreve;011E
    Gcaron;01E6
    Gcedilla;0122
    Gcircle;24BC
    Gcircumflex;011C
    Gcommaaccent;0122
    Gdot;0120
    Gdotaccent;0120
    Gecyrillic;0413
    Ghadarmenian;0542
    Ghemiddlehookcyrillic;0494
    Ghestrokecyrillic;0492
    Gheupturncyrillic;0490
    Ghook;0193
    Gimarmenian;0533
    Gjecyrillic;0403
    Gmacron;1E20
    Gmonospace;FF27
    Grave;F6CE
    Gravesmall;F760
    Gsmall;F767
    Gsmallhook;029B
    Gstroke;01E4
    H;0048
    H18533;25CF
    H18543;25AA
    H18551;25AB
    H22073;25A1
    HPsquare;33CB
    Haabkhasiancyrillic;04A8
    Hadescendercyrillic;04B2
    Hardsigncyrillic;042A
    Hbar;0126
    Hbrevebelow;1E2A
    Hcedilla;1E28
    Hcircle;24BD
    Hcircumflex;0124
    Hdieresis;1E26
    Hdotaccent;1E22
    Hdotbelow;1E24
    Hmonospace;FF28
    Hoarmenian;0540
    Horicoptic;03E8
    Hsmall;F768
    Hungarumlaut;F6CF
    Hungarumlautsmall;F6F8
    Hzsquare;3390
    I;0049
    IAcyrillic;042F
    IJ;0132
    IUcyrillic;042E
    Iacute;00CD
    Iacutesmall;F7ED
    Ibreve;012C
    Icaron;01CF
    Icircle;24BE
    Icircumflex;00CE
    Icircumflexsmall;F7EE
    Icyrillic;0406
    Idblgrave;0208
    Idieresis;00CF
    Idieresisacute;1E2E
    Idieresiscyrillic;04E4
    Idieresissmall;F7EF
    Idot;0130
    Idotaccent;0130
    Idotbelow;1ECA
    Iebrevecyrillic;04D6
    Iecyrillic;0415
    Ifraktur;2111
    Igrave;00CC
    Igravesmall;F7EC
    Ihookabove;1EC8
    Iicyrillic;0418
    Iinvertedbreve;020A
    Iishortcyrillic;0419
    Imacron;012A
    Imacroncyrillic;04E2
    Imonospace;FF29
    Iniarmenian;053B
    Iocyrillic;0401
    Iogonek;012E
    Iota;0399
    Iotaafrican;0196
    Iotadieresis;03AA
    Iotatonos;038A
    Ismall;F769
    Istroke;0197
    Itilde;0128
    Itildebelow;1E2C
    Izhitsacyrillic;0474
    Izhitsadblgravecyrillic;0476
    J;004A
    Jaarmenian;0541
    Jcircle;24BF
    Jcircumflex;0134
    Jecyrillic;0408
    Jheharmenian;054B
    Jmonospace;FF2A
    Jsmall;F76A
    K;004B
    KBsquare;3385
    KKsquare;33CD
    Kabashkircyrillic;04A0
    Kacute;1E30
    Kacyrillic;041A
    Kadescendercyrillic;049A
    Kahookcyrillic;04C3
    Kappa;039A
    Kastrokecyrillic;049E
    Kaverticalstrokecyrillic;049C
    Kcaron;01E8
    Kcedilla;0136
    Kcircle;24C0
    Kcommaaccent;0136
    Kdotbelow;1E32
    Keharmenian;0554
    Kenarmenian;053F
    Khacyrillic;0425
    Kheicoptic;03E6
    Khook;0198
    Kjecyrillic;040C
    Klinebelow;1E34
    Kmonospace;FF2B
    Koppacyrillic;0480
    Koppagreek;03DE
    Ksicyrillic;046E
    Ksmall;F76B
    L;004C
    LJ;01C7
    LL;F6BF
    Lacute;0139
    Lambda;039B
    Lcaron;013D
    Lcedilla;013B
    Lcircle;24C1
    Lcircumflexbelow;1E3C
    Lcommaaccent;013B
    Ldot;013F
    Ldotaccent;013F
    Ldotbelow;1E36
    Ldotbelowmacron;1E38
    Liwnarmenian;053C
    Lj;01C8
    Ljecyrillic;0409
    Llinebelow;1E3A
    Lmonospace;FF2C
    Lslash;0141
    Lslashsmall;F6F9
    Lsmall;F76C
    M;004D
    MBsquare;3386
    Macron;F6D0
    Macronsmall;F7AF
    Macute;1E3E
    Mcircle;24C2
    Mdotaccent;1E40
    Mdotbelow;1E42
    Menarmenian;0544
    Mmonospace;FF2D
    Msmall;F76D
    Mturned;019C
    Mu;039C
    N;004E
    NJ;01CA
    Nacute;0143
    Ncaron;0147
    Ncedilla;0145
    Ncircle;24C3
    Ncircumflexbelow;1E4A
    Ncommaaccent;0145
    Ndotaccent;1E44
    Ndotbelow;1E46
    Nhookleft;019D
    Nineroman;2168
    Nj;01CB
    Njecyrillic;040A
    Nlinebelow;1E48
    Nmonospace;FF2E
    Nowarmenian;0546
    Nsmall;F76E
    Ntilde;00D1
    Ntildesmall;F7F1
    Nu;039D
    O;004F
    OE;0152
    OEsmall;F6FA
    Oacute;00D3
    Oacutesmall;F7F3
    Obarredcyrillic;04E8
    Obarreddieresiscyrillic;04EA
    Obreve;014E
    Ocaron;01D1
    Ocenteredtilde;019F
    Ocircle;24C4
    Ocircumflex;00D4
    Ocircumflexacute;1ED0
    Ocircumflexdotbelow;1ED8
    Ocircumflexgrave;1ED2
    Ocircumflexhookabove;1ED4
    Ocircumflexsmall;F7F4
    Ocircumflextilde;1ED6
    Ocyrillic;041E
    Odblacute;0150
    Odblgrave;020C
    Odieresis;00D6
    Odieresiscyrillic;04E6
    Odieresissmall;F7F6
    Odotbelow;1ECC
    Ogoneksmall;F6FB
    Ograve;00D2
    Ogravesmall;F7F2
    Oharmenian;0555
    Ohm;2126
    Ohookabove;1ECE
    Ohorn;01A0
    Ohornacute;1EDA
    Ohorndotbelow;1EE2
    Ohorngrave;1EDC
    Ohornhookabove;1EDE
    Ohorntilde;1EE0
    Ohungarumlaut;0150
    Oi;01A2
    Oinvertedbreve;020E
    Omacron;014C
    Omacronacute;1E52
    Omacrongrave;1E50
    Omega;2126
    Omegacyrillic;0460
    Omegagreek;03A9
    Omegaroundcyrillic;047A
    Omegatitlocyrillic;047C
    Omegatonos;038F
    Omicron;039F
    Omicrontonos;038C
    Omonospace;FF2F
    Oneroman;2160
    Oogonek;01EA
    Oogonekmacron;01EC
    Oopen;0186
    Oslash;00D8
    Oslashacute;01FE
    Oslashsmall;F7F8
    Osmall;F76F
    Ostrokeacute;01FE
    Otcyrillic;047E
    Otilde;00D5
    Otildeacute;1E4C
    Otildedieresis;1E4E
    Otildesmall;F7F5
    P;0050
    Pacute;1E54
    Pcircle;24C5
    Pdotaccent;1E56
    Pecyrillic;041F
    Peharmenian;054A
    Pemiddlehookcyrillic;04A6
    Phi;03A6
    Phook;01A4
    Pi;03A0
    Piwrarmenian;0553
    Pmonospace;FF30
    Psi;03A8
    Psicyrillic;0470
    Psmall;F770
    Q;0051
    Qcircle;24C6
    Qmonospace;FF31
    Qsmall;F771
    R;0052
    Raarmenian;054C
    Racute;0154
    Rcaron;0158
    Rcedilla;0156
    Rcircle;24C7
    Rcommaaccent;0156
    Rdblgrave;0210
    Rdotaccent;1E58
    Rdotbelow;1E5A
    Rdotbelowmacron;1E5C
    Reharmenian;0550
    Rfraktur;211C
    Rho;03A1
    Ringsmall;F6FC
    Rinvertedbreve;0212
    Rlinebelow;1E5E
    Rmonospace;FF32
    Rsmall;F772
    Rsmallinverted;0281
    Rsmallinvertedsuperior;02B6
    S;0053
    SF010000;250C
    SF020000;2514
    SF030000;2510
    SF040000;2518
    SF050000;253C
    SF060000;252C
    SF070000;2534
    SF080000;251C
    SF090000;2524
    SF100000;2500
    SF110000;2502
    SF190000;2561
    SF200000;2562
    SF210000;2556
    SF220000;2555
    SF230000;2563
    SF240000;2551
    SF250000;2557
    SF260000;255D
    SF270000;255C
    SF280000;255B
    SF360000;255E
    SF370000;255F
    SF380000;255A
    SF390000;2554
    SF400000;2569
    SF410000;2566
    SF420000;2560
    SF430000;2550
    SF440000;256C
    SF450000;2567
    SF460000;2568
    SF470000;2564
    SF480000;2565
    SF490000;2559
    SF500000;2558
    SF510000;2552
    SF520000;2553
    SF530000;256B
    SF540000;256A
    Sacute;015A
    Sacutedotaccent;1E64
    Sampigreek;03E0
    Scaron;0160
    Scarondotaccent;1E66
    Scaronsmall;F6FD
    Scedilla;015E
    Schwa;018F
    Schwacyrillic;04D8
    Schwadieresiscyrillic;04DA
    Scircle;24C8
    Scircumflex;015C
    Scommaaccent;0218
    Sdotaccent;1E60
    Sdotbelow;1E62
    Sdotbelowdotaccent;1E68
    Seharmenian;054D
    Sevenroman;2166
    Shaarmenian;0547
    Shacyrillic;0428
    Shchacyrillic;0429
    Sheicoptic;03E2
    Shhacyrillic;04BA
    Shimacoptic;03EC
    Sigma;03A3
    Sixroman;2165
    Smonospace;FF33
    Softsigncyrillic;042C
    Ssmall;F773
    Stigmagreek;03DA
    T;0054
    Tau;03A4
    Tbar;0166
    Tcaron;0164
    Tcedilla;0162
    Tcircle;24C9
    Tcircumflexbelow;1E70
    Tcommaaccent;0162
    Tdotaccent;1E6A
    Tdotbelow;1E6C
    Tecyrillic;0422
    Tedescendercyrillic;04AC
    Tenroman;2169
    Tetsecyrillic;04B4
    Theta;0398
    Thook;01AC
    Thorn;00DE
    Thornsmall;F7FE
    Threeroman;2162
    Tildesmall;F6FE
    Tiwnarmenian;054F
    Tlinebelow;1E6E
    Tmonospace;FF34
    Toarmenian;0539
    Tonefive;01BC
    Tonesix;0184
    Tonetwo;01A7
    Tretroflexhook;01AE
    Tsecyrillic;0426
    Tshecyrillic;040B
    Tsmall;F774
    Twelveroman;216B
    Tworoman;2161
    U;0055
    Uacute;00DA
    Uacutesmall;F7FA
    Ubreve;016C
    Ucaron;01D3
    Ucircle;24CA
    Ucircumflex;00DB
    Ucircumflexbelow;1E76
    Ucircumflexsmall;F7FB
    Ucyrillic;0423
    Udblacute;0170
    Udblgrave;0214
    Udieresis;00DC
    Udieresisacute;01D7
    Udieresisbelow;1E72
    Udieresiscaron;01D9
    Udieresiscyrillic;04F0
    Udieresisgrave;01DB
    Udieresismacron;01D5
    Udieresissmall;F7FC
    Udotbelow;1EE4
    Ugrave;00D9
    Ugravesmall;F7F9
    Uhookabove;1EE6
    Uhorn;01AF
    Uhornacute;1EE8
    Uhorndotbelow;1EF0
    Uhorngrave;1EEA
    Uhornhookabove;1EEC
    Uhorntilde;1EEE
    Uhungarumlaut;0170
    Uhungarumlautcyrillic;04F2
    Uinvertedbreve;0216
    Ukcyrillic;0478
    Umacron;016A
    Umacroncyrillic;04EE
    Umacrondieresis;1E7A
    Umonospace;FF35
    Uogonek;0172
    Upsilon;03A5
    Upsilon1;03D2
    Upsilonacutehooksymbolgreek;03D3
    Upsilonafrican;01B1
    Upsilondieresis;03AB
    Upsilondieresishooksymbolgreek;03D4
    Upsilonhooksymbol;03D2
    Upsilontonos;038E
    Uring;016E
    Ushortcyrillic;040E
    Usmall;F775
    Ustraightcyrillic;04AE
    Ustraightstrokecyrillic;04B0
    Utilde;0168
    Utildeacute;1E78
    Utildebelow;1E74
    V;0056
    Vcircle;24CB
    Vdotbelow;1E7E
    Vecyrillic;0412
    Vewarmenian;054E
    Vhook;01B2
    Vmonospace;FF36
    Voarmenian;0548
    Vsmall;F776
    Vtilde;1E7C
    W;0057
    Wacute;1E82
    Wcircle;24CC
    Wcircumflex;0174
    Wdieresis;1E84
    Wdotaccent;1E86
    Wdotbelow;1E88
    Wgrave;1E80
    Wmonospace;FF37
    Wsmall;F777
    X;0058
    Xcircle;24CD
    Xdieresis;1E8C
    Xdotaccent;1E8A
    Xeharmenian;053D
    Xi;039E
    Xmonospace;FF38
    Xsmall;F778
    Y;0059
    Yacute;00DD
    Yacutesmall;F7FD
    Yatcyrillic;0462
    Ycircle;24CE
    Ycircumflex;0176
    Ydieresis;0178
    Ydieresissmall;F7FF
    Ydotaccent;1E8E
    Ydotbelow;1EF4
    Yericyrillic;042B
    Yerudieresiscyrillic;04F8
    Ygrave;1EF2
    Yhook;01B3
    Yhookabove;1EF6
    Yiarmenian;0545
    Yicyrillic;0407
    Yiwnarmenian;0552
    Ymonospace;FF39
    Ysmall;F779
    Ytilde;1EF8
    Yusbigcyrillic;046A
    Yusbigiotifiedcyrillic;046C
    Yuslittlecyrillic;0466
    Yuslittleiotifiedcyrillic;0468
    Z;005A
    Zaarmenian;0536
    Zacute;0179
    Zcaron;017D
    Zcaronsmall;F6FF
    Zcircle;24CF
    Zcircumflex;1E90
    Zdot;017B
    Zdotaccent;017B
    Zdotbelow;1E92
    Zecyrillic;0417
    Zedescendercyrillic;0498
    Zedieresiscyrillic;04DE
    Zeta;0396
    Zhearmenian;053A
    Zhebrevecyrillic;04C1
    Zhecyrillic;0416
    Zhedescendercyrillic;0496
    Zhedieresiscyrillic;04DC
    Zlinebelow;1E94
    Zmonospace;FF3A
    Zsmall;F77A
    Zstroke;01B5
    a;0061
    aabengali;0986
    aacute;00E1
    aadeva;0906
    aagujarati;0A86
    aagurmukhi;0A06
    aamatragurmukhi;0A3E
    aarusquare;3303
    aavowelsignbengali;09BE
    aavowelsigndeva;093E
    aavowelsigngujarati;0ABE
    abbreviationmarkarmenian;055F
    abbreviationsigndeva;0970
    abengali;0985
    abopomofo;311A
    abreve;0103
    abreveacute;1EAF
    abrevecyrillic;04D1
    abrevedotbelow;1EB7
    abrevegrave;1EB1
    abrevehookabove;1EB3
    abrevetilde;1EB5
    acaron;01CE
    acircle;24D0
    acircumflex;00E2
    acircumflexacute;1EA5
    acircumflexdotbelow;1EAD
    acircumflexgrave;1EA7
    acircumflexhookabove;1EA9
    acircumflextilde;1EAB
    acute;00B4
    acutebelowcmb;0317
    acutecmb;0301
    acutecomb;0301
    acutedeva;0954
    acutelowmod;02CF
    acutetonecmb;0341
    acyrillic;0430
    adblgrave;0201
    addakgurmukhi;0A71
    adeva;0905
    adieresis;00E4
    adieresiscyrillic;04D3
    adieresismacron;01DF
    adotbelow;1EA1
    adotmacron;01E1
    ae;00E6
    aeacute;01FD
    aekorean;3150
    aemacron;01E3
    afii00208;2015
    afii08941;20A4
    afii10017;0410
    afii10018;0411
    afii10019;0412
    afii10020;0413
    afii10021;0414
    afii10022;0415
    afii10023;0401
    afii10024;0416
    afii10025;0417
    afii10026;0418
    afii10027;0419
    afii10028;041A
    afii10029;041B
    afii10030;041C
    afii10031;041D
    afii10032;041E
    afii10033;041F
    afii10034;0420
    afii10035;0421
    afii10036;0422
    afii10037;0423
    afii10038;0424
    afii10039;0425
    afii10040;0426
    afii10041;0427
    afii10042;0428
    afii10043;0429
    afii10044;042A
    afii10045;042B
    afii10046;042C
    afii10047;042D
    afii10048;042E
    afii10049;042F
    afii10050;0490
    afii10051;0402
    afii10052;0403
    afii10053;0404
    afii10054;0405
    afii10055;0406
    afii10056;0407
    afii10057;0408
    afii10058;0409
    afii10059;040A
    afii10060;040B
    afii10061;040C
    afii10062;040E
    afii10063;F6C4
    afii10064;F6C5
    afii10065;0430
    afii10066;0431
    afii10067;0432
    afii10068;0433
    afii10069;0434
    afii10070;0435
    afii10071;0451
    afii10072;0436
    afii10073;0437
    afii10074;0438
    afii10075;0439
    afii10076;043A
    afii10077;043B
    afii10078;043C
    afii10079;043D
    afii10080;043E
    afii10081;043F
    afii10082;0440
    afii10083;0441
    afii10084;0442
    afii10085;0443
    afii10086;0444
    afii10087;0445
    afii10088;0446
    afii10089;0447
    afii10090;0448
    afii10091;0449
    afii10092;044A
    afii10093;044B
    afii10094;044C
    afii10095;044D
    afii10096;044E
    afii10097;044F
    afii10098;0491
    afii10099;0452
    afii10100;0453
    afii10101;0454
    afii10102;0455
    afii10103;0456
    afii10104;0457
    afii10105;0458
    afii10106;0459
    afii10107;045A
    afii10108;045B
    afii10109;045C
    afii10110;045E
    afii10145;040F
    afii10146;0462
    afii10147;0472
    afii10148;0474
    afii10192;F6C6
    afii10193;045F
    afii10194;0463
    afii10195;0473
    afii10196;0475
    afii10831;F6C7
    afii10832;F6C8
    afii10846;04D9
    afii299;200E
    afii300;200F
    afii301;200D
    afii57381;066A
    afii57388;060C
    afii57392;0660
    afii57393;0661
    afii57394;0662
    afii57395;0663
    afii57396;0664
    afii57397;0665
    afii57398;0666
    afii57399;0667
    afii57400;0668
    afii57401;0669
    afii57403;061B
    afii57407;061F
    afii57409;0621
    afii57410;0622
    afii57411;0623
    afii57412;0624
    afii57413;0625
    afii57414;0626
    afii57415;0627
    afii57416;0628
    afii57417;0629
    afii57418;062A
    afii57419;062B
    afii57420;062C
    afii57421;062D
    afii57422;062E
    afii57423;062F
    afii57424;0630
    afii57425;0631
    afii57426;0632
    afii57427;0633
    afii57428;0634
    afii57429;0635
    afii57430;0636
    afii57431;0637
    afii57432;0638
    afii57433;0639
    afii57434;063A
    afii57440;0640
    afii57441;0641
    afii57442;0642
    afii57443;0643
    afii57444;0644
    afii57445;0645
    afii57446;0646
    afii57448;0648
    afii57449;0649
    afii57450;064A
    afii57451;064B
    afii57452;064C
    afii57453;064D
    afii57454;064E
    afii57455;064F
    afii57456;0650
    afii57457;0651
    afii57458;0652
    afii57470;0647
    afii57505;06A4
    afii57506;067E
    afii57507;0686
    afii57508;0698
    afii57509;06AF
    afii57511;0679
    afii57512;0688
    afii57513;0691
    afii57514;06BA
    afii57519;06D2
    afii57534;06D5
    afii57636;20AA
    afii57645;05BE
    afii57658;05C3
    afii57664;05D0
    afii57665;05D1
    afii57666;05D2
    afii57667;05D3
    afii57668;05D4
    afii57669;05D5
    afii57670;05D6
    afii57671;05D7
    afii57672;05D8
    afii57673;05D9
    afii57674;05DA
    afii57675;05DB
    afii57676;05DC
    afii57677;05DD
    afii57678;05DE
    afii57679;05DF
    afii57680;05E0
    afii57681;05E1
    afii57682;05E2
    afii57683;05E3
    afii57684;05E4
    afii57685;05E5
    afii57686;05E6
    afii57687;05E7
    afii57688;05E8
    afii57689;05E9
    afii57690;05EA
    afii57694;FB2A
    afii57695;FB2B
    afii57700;FB4B
    afii57705;FB1F
    afii57716;05F0
    afii57717;05F1
    afii57718;05F2
    afii57723;FB35
    afii57793;05B4
    afii57794;05B5
    afii57795;05B6
    afii57796;05BB
    afii57797;05B8
    afii57798;05B7
    afii57799;05B0
    afii57800;05B2
    afii57801;05B1
    afii57802;05B3
    afii57803;05C2
    afii57804;05C1
    afii57806;05B9
    afii57807;05BC
    afii57839;05BD
    afii57841;05BF
    afii57842;05C0
    afii57929;02BC
    afii61248;2105
    afii61289;2113
    afii61352;2116
    afii61573;202C
    afii61574;202D
    afii61575;202E
    afii61664;200C
    afii63167;066D
    afii64937;02BD
    agrave;00E0
    agujarati;0A85
    agurmukhi;0A05
    ahiragana;3042
    ahookabove;1EA3
    aibengali;0990
    aibopomofo;311E
    aideva;0910
    aiecyrillic;04D5
    aigujarati;0A90
    aigurmukhi;0A10
    aimatragurmukhi;0A48
    ainarabic;0639
    ainfinalarabic;FECA
    aininitialarabic;FECB
    ainmedialarabic;FECC
    ainvertedbreve;0203
    aivowelsignbengali;09C8
    aivowelsigndeva;0948
    aivowelsigngujarati;0AC8
    akatakana;30A2
    akatakanahalfwidth;FF71
    akorean;314F
    alef;05D0
    alefarabic;0627
    alefdageshhebrew;FB30
    aleffinalarabic;FE8E
    alefhamzaabovearabic;0623
    alefhamzaabovefinalarabic;FE84
    alefhamzabelowarabic;0625
    alefhamzabelowfinalarabic;FE88
    alefhebrew;05D0
    aleflamedhebrew;FB4F
    alefmaddaabovearabic;0622
    alefmaddaabovefinalarabic;FE82
    alefmaksuraarabic;0649
    alefmaksurafinalarabic;FEF0
    alefmaksurainitialarabic;FEF3
    alefmaksuramedialarabic;FEF4
    alefpatahhebrew;FB2E
    alefqamatshebrew;FB2F
    aleph;2135
    allequal;224C
    alpha;03B1
    alphatonos;03AC
    amacron;0101
    amonospace;FF41
    ampersand;0026
    ampersandmonospace;FF06
    ampersandsmall;F726
    amsquare;33C2
    anbopomofo;3122
    angbopomofo;3124
    angkhankhuthai;0E5A
    angle;2220
    anglebracketleft;3008
    anglebracketleftvertical;FE3F
    anglebracketright;3009
    anglebracketrightvertical;FE40
    angleleft;2329
    angleright;232A
    angstrom;212B
    anoteleia;0387
    anudattadeva;0952
    anusvarabengali;0982
    anusvaradeva;0902
    anusvaragujarati;0A82
    aogonek;0105
    apaatosquare;3300
    aparen;249C
    apostrophearmenian;055A
    apostrophemod;02BC
    apple;F8FF
    approaches;2250
    approxequal;2248
    approxequalorimage;2252
    approximatelyequal;2245
    araeaekorean;318E
    araeakorean;318D
    arc;2312
    arighthalfring;1E9A
    aring;00E5
    aringacute;01FB
    aringbelow;1E01
    arrowboth;2194
    arrowdashdown;21E3
    arrowdashleft;21E0
    arrowdashright;21E2
    arrowdashup;21E1
    arrowdblboth;21D4
    arrowdbldown;21D3
    arrowdblleft;21D0
    arrowdblright;21D2
    arrowdblup;21D1
    arrowdown;2193
    arrowdownleft;2199
    arrowdownright;2198
    arrowdownwhite;21E9
    arrowheaddownmod;02C5
    arrowheadleftmod;02C2
    arrowheadrightmod;02C3
    arrowheadupmod;02C4
    arrowhorizex;F8E7
    arrowleft;2190
    arrowleftdbl;21D0
    arrowleftdblstroke;21CD
    arrowleftoverright;21C6
    arrowleftwhite;21E6
    arrowright;2192
    arrowrightdblstroke;21CF
    arrowrightheavy;279E
    arrowrightoverleft;21C4
    arrowrightwhite;21E8
    arrowtableft;21E4
    arrowtabright;21E5
    arrowup;2191
    arrowupdn;2195
    arrowupdnbse;21A8
    arrowupdownbase;21A8
    arrowupleft;2196
    arrowupleftofdown;21C5
    arrowupright;2197
    arrowupwhite;21E7
    arrowvertex;F8E6
    asciicircum;005E
    asciicircummonospace;FF3E
    asciitilde;007E
    asciitildemonospace;FF5E
    ascript;0251
    ascriptturned;0252
    asmallhiragana;3041
    asmallkatakana;30A1
    asmallkatakanahalfwidth;FF67
    asterisk;002A
    asteriskaltonearabic;066D
    asteriskarabic;066D
    asteriskmath;2217
    asteriskmonospace;FF0A
    asterisksmall;FE61
    asterism;2042
    asuperior;F6E9
    asymptoticallyequal;2243
    at;0040
    atilde;00E3
    atmonospace;FF20
    atsmall;FE6B
    aturned;0250
    aubengali;0994
    aubopomofo;3120
    audeva;0914
    augujarati;0A94
    augurmukhi;0A14
    aulengthmarkbengali;09D7
    aumatragurmukhi;0A4C
    auvowelsignbengali;09CC
    auvowelsigndeva;094C
    auvowelsigngujarati;0ACC
    avagrahadeva;093D
    aybarmenian;0561
    ayin;05E2
    ayinaltonehebrew;FB20
    ayinhebrew;05E2
    b;0062
    babengali;09AC
    backslash;005C
    backslashmonospace;FF3C
    badeva;092C
    bagujarati;0AAC
    bagurmukhi;0A2C
    bahiragana;3070
    bahtthai;0E3F
    bakatakana;30D0
    bar;007C
    barmonospace;FF5C
    bbopomofo;3105
    bcircle;24D1
    bdotaccent;1E03
    bdotbelow;1E05
    beamedsixteenthnotes;266C
    because;2235
    becyrillic;0431
    beharabic;0628
    behfinalarabic;FE90
    behinitialarabic;FE91
    behiragana;3079
    behmedialarabic;FE92
    behmeeminitialarabic;FC9F
    behmeemisolatedarabic;FC08
    behnoonfinalarabic;FC6D
    bekatakana;30D9
    benarmenian;0562
    bet;05D1
    beta;03B2
    betasymbolgreek;03D0
    betdagesh;FB31
    betdageshhebrew;FB31
    bethebrew;05D1
    betrafehebrew;FB4C
    bhabengali;09AD
    bhadeva;092D
    bhagujarati;0AAD
    bhagurmukhi;0A2D
    bhook;0253
    bihiragana;3073
    bikatakana;30D3
    bilabialclick;0298
    bindigurmukhi;0A02
    birusquare;3331
    blackcircle;25CF
    blackdiamond;25C6
    blackdownpointingtriangle;25BC
    blackleftpointingpointer;25C4
    blackleftpointingtriangle;25C0
    blacklenticularbracketleft;3010
    blacklenticularbracketleftvertical;FE3B
    blacklenticularbracketright;3011
    blacklenticularbracketrightvertical;FE3C
    blacklowerlefttriangle;25E3
    blacklowerrighttriangle;25E2
    blackrectangle;25AC
    blackrightpointingpointer;25BA
    blackrightpointingtriangle;25B6
    blacksmallsquare;25AA
    blacksmilingface;263B
    blacksquare;25A0
    blackstar;2605
    blackupperlefttriangle;25E4
    blackupperrighttriangle;25E5
    blackuppointingsmalltriangle;25B4
    blackuppointingtriangle;25B2
    blank;2423
    blinebelow;1E07
    block;2588
    bmonospace;FF42
    bobaimaithai;0E1A
    bohiragana;307C
    bokatakana;30DC
    bparen;249D
    bqsquare;33C3
    braceex;F8F4
    braceleft;007B
    braceleftbt;F8F3
    braceleftmid;F8F2
    braceleftmonospace;FF5B
    braceleftsmall;FE5B
    bracelefttp;F8F1
    braceleftvertical;FE37
    braceright;007D
    bracerightbt;F8FE
    bracerightmid;F8FD
    bracerightmonospace;FF5D
    bracerightsmall;FE5C
    bracerighttp;F8FC
    bracerightvertical;FE38
    bracketleft;005B
    bracketleftbt;F8F0
    bracketleftex;F8EF
    bracketleftmonospace;FF3B
    bracketlefttp;F8EE
    bracketright;005D
    bracketrightbt;F8FB
    bracketrightex;F8FA
    bracketrightmonospace;FF3D
    bracketrighttp;F8F9
    breve;02D8
    brevebelowcmb;032E
    brevecmb;0306
    breveinvertedbelowcmb;032F
    breveinvertedcmb;0311
    breveinverteddoublecmb;0361
    bridgebelowcmb;032A
    bridgeinvertedbelowcmb;033A
    brokenbar;00A6
    bstroke;0180
    bsuperior;F6EA
    btopbar;0183
    buhiragana;3076
    bukatakana;30D6
    bullet;2022
    bulletinverse;25D8
    bulletoperator;2219
    bullseye;25CE
    c;0063
    caarmenian;056E
    cabengali;099A
    cacute;0107
    cadeva;091A
    cagujarati;0A9A
    cagurmukhi;0A1A
    calsquare;3388
    candrabindubengali;0981
    candrabinducmb;0310
    candrabindudeva;0901
    candrabindugujarati;0A81
    capslock;21EA
    careof;2105
    caron;02C7
    caronbelowcmb;032C
    caroncmb;030C
    carriagereturn;21B5
    cbopomofo;3118
    ccaron;010D
    ccedilla;00E7
    ccedillaacute;1E09
    ccircle;24D2
    ccircumflex;0109
    ccurl;0255
    cdot;010B
    cdotaccent;010B
    cdsquare;33C5
    cedilla;00B8
    cedillacmb;0327
    cent;00A2
    centigrade;2103
    centinferior;F6DF
    centmonospace;FFE0
    centoldstyle;F7A2
    centsuperior;F6E0
    chaarmenian;0579
    chabengali;099B
    chadeva;091B
    chagujarati;0A9B
    chagurmukhi;0A1B
    chbopomofo;3114
    cheabkhasiancyrillic;04BD
    checkmark;2713
    checyrillic;0447
    chedescenderabkhasiancyrillic;04BF
    chedescendercyrillic;04B7
    chedieresiscyrillic;04F5
    cheharmenian;0573
    chekhakassiancyrillic;04CC
    cheverticalstrokecyrillic;04B9
    chi;03C7
    chieuchacirclekorean;3277
    chieuchaparenkorean;3217
    chieuchcirclekorean;3269
    chieuchkorean;314A
    chieuchparenkorean;3209
    chochangthai;0E0A
    chochanthai;0E08
    chochingthai;0E09
    chochoethai;0E0C
    chook;0188
    cieucacirclekorean;3276
    cieucaparenkorean;3216
    cieuccirclekorean;3268
    cieuckorean;3148
    cieucparenkorean;3208
    cieucuparenkorean;321C
    circle;25CB
    circlemultiply;2297
    circleot;2299
    circleplus;2295
    circlepostalmark;3036
    circlewithlefthalfblack;25D0
    circlewithrighthalfblack;25D1
    circumflex;02C6
    circumflexbelowcmb;032D
    circumflexcmb;0302
    clear;2327
    clickalveolar;01C2
    clickdental;01C0
    clicklateral;01C1
    clickretroflex;01C3
    club;2663
    clubsuitblack;2663
    clubsuitwhite;2667
    cmcubedsquare;33A4
    cmonospace;FF43
    cmsquaredsquare;33A0
    coarmenian;0581
    colon;003A
    colonmonetary;20A1
    colonmonospace;FF1A
    colonsign;20A1
    colonsmall;FE55
    colontriangularhalfmod;02D1
    colontriangularmod;02D0
    comma;002C
    commaabovecmb;0313
    commaaboverightcmb;0315
    commaaccent;F6C3
    commaarabic;060C
    commaarmenian;055D
    commainferior;F6E1
    commamonospace;FF0C
    commareversedabovecmb;0314
    commareversedmod;02BD
    commasmall;FE50
    commasuperior;F6E2
    commaturnedabovecmb;0312
    commaturnedmod;02BB
    compass;263C
    congruent;2245
    contourintegral;222E
    control;2303
    controlACK;0006
    controlBEL;0007
    controlBS;0008
    controlCAN;0018
    controlCR;000D
    controlDC1;0011
    controlDC2;0012
    controlDC3;0013
    controlDC4;0014
    controlDEL;007F
    controlDLE;0010
    controlEM;0019
    controlENQ;0005
    controlEOT;0004
    controlESC;001B
    controlETB;0017
    controlETX;0003
    controlFF;000C
    controlFS;001C
    controlGS;001D
    controlHT;0009
    controlLF;000A
    controlNAK;0015
    controlRS;001E
    controlSI;000F
    controlSO;000E
    controlSOT;0002
    controlSTX;0001
    controlSUB;001A
    controlSYN;0016
    controlUS;001F
    controlVT;000B
    copyright;00A9
    copyrightsans;F8E9
    copyrightserif;F6D9
    cornerbracketleft;300C
    cornerbracketlefthalfwidth;FF62
    cornerbracketleftvertical;FE41
    cornerbracketright;300D
    cornerbracketrighthalfwidth;FF63
    cornerbracketrightvertical;FE42
    corporationsquare;337F
    cosquare;33C7
    coverkgsquare;33C6
    cparen;249E
    cruzeiro;20A2
    cstretched;0297
    curlyand;22CF
    curlyor;22CE
    currency;00A4
    cyrBreve;F6D1
    cyrFlex;F6D2
    cyrbreve;F6D4
    cyrflex;F6D5
    d;0064
    daarmenian;0564
    dabengali;09A6
    dadarabic;0636
    dadeva;0926
    dadfinalarabic;FEBE
    dadinitialarabic;FEBF
    dadmedialarabic;FEC0
    dagesh;05BC
    dageshhebrew;05BC
    dagger;2020
    daggerdbl;2021
    dagujarati;0AA6
    dagurmukhi;0A26
    dahiragana;3060
    dakatakana;30C0
    dalarabic;062F
    dalet;05D3
    daletdagesh;FB33
    daletdageshhebrew;FB33
    dalethatafpatah;05D3 05B2
    dalethatafpatahhebrew;05D3 05B2
    dalethatafsegol;05D3 05B1
    dalethatafsegolhebrew;05D3 05B1
    dalethebrew;05D3
    dalethiriq;05D3 05B4
    dalethiriqhebrew;05D3 05B4
    daletholam;05D3 05B9
    daletholamhebrew;05D3 05B9
    daletpatah;05D3 05B7
    daletpatahhebrew;05D3 05B7
    daletqamats;05D3 05B8
    daletqamatshebrew;05D3 05B8
    daletqubuts;05D3 05BB
    daletqubutshebrew;05D3 05BB
    daletsegol;05D3 05B6
    daletsegolhebrew;05D3 05B6
    daletsheva;05D3 05B0
    daletshevahebrew;05D3 05B0
    dalettsere;05D3 05B5
    dalettserehebrew;05D3 05B5
    dalfinalarabic;FEAA
    dammaarabic;064F
    dammalowarabic;064F
    dammatanaltonearabic;064C
    dammatanarabic;064C
    danda;0964
    dargahebrew;05A7
    dargalefthebrew;05A7
    dasiapneumatacyrilliccmb;0485
    dblGrave;F6D3
    dblanglebracketleft;300A
    dblanglebracketleftvertical;FE3D
    dblanglebracketright;300B
    dblanglebracketrightvertical;FE3E
    dblarchinvertedbelowcmb;032B
    dblarrowleft;21D4
    dblarrowright;21D2
    dbldanda;0965
    dblgrave;F6D6
    dblgravecmb;030F
    dblintegral;222C
    dbllowline;2017
    dbllowlinecmb;0333
    dbloverlinecmb;033F
    dblprimemod;02BA
    dblverticalbar;2016
    dblverticallineabovecmb;030E
    dbopomofo;3109
    dbsquare;33C8
    dcaron;010F
    dcedilla;1E11
    dcircle;24D3
    dcircumflexbelow;1E13
    dcroat;0111
    ddabengali;09A1
    ddadeva;0921
    ddagujarati;0AA1
    ddagurmukhi;0A21
    ddalarabic;0688
    ddalfinalarabic;FB89
    dddhadeva;095C
    ddhabengali;09A2
    ddhadeva;0922
    ddhagujarati;0AA2
    ddhagurmukhi;0A22
    ddotaccent;1E0B
    ddotbelow;1E0D
    decimalseparatorarabic;066B
    decimalseparatorpersian;066B
    decyrillic;0434
    degree;00B0
    dehihebrew;05AD
    dehiragana;3067
    deicoptic;03EF
    dekatakana;30C7
    deleteleft;232B
    deleteright;2326
    delta;03B4
    deltaturned;018D
    denominatorminusonenumeratorbengali;09F8
    dezh;02A4
    dhabengali;09A7
    dhadeva;0927
    dhagujarati;0AA7
    dhagurmukhi;0A27
    dhook;0257
    dialytikatonos;0385
    dialytikatonoscmb;0344
    diamond;2666
    diamondsuitwhite;2662
    dieresis;00A8
    dieresisacute;F6D7
    dieresisbelowcmb;0324
    dieresiscmb;0308
    dieresisgrave;F6D8
    dieresistonos;0385
    dihiragana;3062
    dikatakana;30C2
    dittomark;3003
    divide;00F7
    divides;2223
    divisionslash;2215
    djecyrillic;0452
    dkshade;2593
    dlinebelow;1E0F
    dlsquare;3397
    dmacron;0111
    dmonospace;FF44
    dnblock;2584
    dochadathai;0E0E
    dodekthai;0E14
    dohiragana;3069
    dokatakana;30C9
    dollar;0024
    dollarinferior;F6E3
    dollarmonospace;FF04
    dollaroldstyle;F724
    dollarsmall;FE69
    dollarsuperior;F6E4
    dong;20AB
    dorusquare;3326
    dotaccent;02D9
    dotaccentcmb;0307
    dotbelowcmb;0323
    dotbelowcomb;0323
    dotkatakana;30FB
    dotlessi;0131
    dotlessj;F6BE
    dotlessjstrokehook;0284
    dotmath;22C5
    dottedcircle;25CC
    doubleyodpatah;FB1F
    doubleyodpatahhebrew;FB1F
    downtackbelowcmb;031E
    downtackmod;02D5
    dparen;249F
    dsuperior;F6EB
    dtail;0256
    dtopbar;018C
    duhiragana;3065
    dukatakana;30C5
    dz;01F3
    dzaltone;02A3
    dzcaron;01C6
    dzcurl;02A5
    dzeabkhasiancyrillic;04E1
    dzecyrillic;0455
    dzhecyrillic;045F
    e;0065
    eacute;00E9
    earth;2641
    ebengali;098F
    ebopomofo;311C
    ebreve;0115
    ecandradeva;090D
    ecandragujarati;0A8D
    ecandravowelsigndeva;0945
    ecandravowelsigngujarati;0AC5
    ecaron;011B
    ecedillabreve;1E1D
    echarmenian;0565
    echyiwnarmenian;0587
    ecircle;24D4
    ecircumflex;00EA
    ecircumflexacute;1EBF
    ecircumflexbelow;1E19
    ecircumflexdotbelow;1EC7
    ecircumflexgrave;1EC1
    ecircumflexhookabove;1EC3
    ecircumflextilde;1EC5
    ecyrillic;0454
    edblgrave;0205
    edeva;090F
    edieresis;00EB
    edot;0117
    edotaccent;0117
    edotbelow;1EB9
    eegurmukhi;0A0F
    eematragurmukhi;0A47
    efcyrillic;0444
    egrave;00E8
    egujarati;0A8F
    eharmenian;0567
    ehbopomofo;311D
    ehiragana;3048
    ehookabove;1EBB
    eibopomofo;311F
    eight;0038
    eightarabic;0668
    eightbengali;09EE
    eightcircle;2467
    eightcircleinversesansserif;2791
    eightdeva;096E
    eighteencircle;2471
    eighteenparen;2485
    eighteenperiod;2499
    eightgujarati;0AEE
    eightgurmukhi;0A6E
    eighthackarabic;0668
    eighthangzhou;3028
    eighthnotebeamed;266B
    eightideographicparen;3227
    eightinferior;2088
    eightmonospace;FF18
    eightoldstyle;F738
    eightparen;247B
    eightperiod;248F
    eightpersian;06F8
    eightroman;2177
    eightsuperior;2078
    eightthai;0E58
    einvertedbreve;0207
    eiotifiedcyrillic;0465
    ekatakana;30A8
    ekatakanahalfwidth;FF74
    ekonkargurmukhi;0A74
    ekorean;3154
    elcyrillic;043B
    element;2208
    elevencircle;246A
    elevenparen;247E
    elevenperiod;2492
    elevenroman;217A
    ellipsis;2026
    ellipsisvertical;22EE
    emacron;0113
    emacronacute;1E17
    emacrongrave;1E15
    emcyrillic;043C
    emdash;2014
    emdashvertical;FE31
    emonospace;FF45
    emphasismarkarmenian;055B
    emptyset;2205
    enbopomofo;3123
    encyrillic;043D
    endash;2013
    endashvertical;FE32
    endescendercyrillic;04A3
    eng;014B
    engbopomofo;3125
    enghecyrillic;04A5
    enhookcyrillic;04C8
    enspace;2002
    eogonek;0119
    eokorean;3153
    eopen;025B
    eopenclosed;029A
    eopenreversed;025C
    eopenreversedclosed;025E
    eopenreversedhook;025D
    eparen;24A0
    epsilon;03B5
    epsilontonos;03AD
    equal;003D
    equalmonospace;FF1D
    equalsmall;FE66
    equalsuperior;207C
    equivalence;2261
    erbopomofo;3126
    ercyrillic;0440
    ereversed;0258
    ereversedcyrillic;044D
    escyrillic;0441
    esdescendercyrillic;04AB
    esh;0283
    eshcurl;0286
    eshortdeva;090E
    eshortvowelsigndeva;0946
    eshreversedloop;01AA
    eshsquatreversed;0285
    esmallhiragana;3047
    esmallkatakana;30A7
    esmallkatakanahalfwidth;FF6A
    estimated;212E
    esuperior;F6EC
    eta;03B7
    etarmenian;0568
    etatonos;03AE
    eth;00F0
    etilde;1EBD
    etildebelow;1E1B
    etnahtafoukhhebrew;0591
    etnahtafoukhlefthebrew;0591
    etnahtahebrew;0591
    etnahtalefthebrew;0591
    eturned;01DD
    eukorean;3161
    euro;20AC
    evowelsignbengali;09C7
    evowelsigndeva;0947
    evowelsigngujarati;0AC7
    exclam;0021
    exclamarmenian;055C
    exclamdbl;203C
    exclamdown;00A1
    exclamdownsmall;F7A1
    exclammonospace;FF01
    exclamsmall;F721
    existential;2203
    ezh;0292
    ezhcaron;01EF
    ezhcurl;0293
    ezhreversed;01B9
    ezhtail;01BA
    f;0066
    fadeva;095E
    fagurmukhi;0A5E
    fahrenheit;2109
    fathaarabic;064E
    fathalowarabic;064E
    fathatanarabic;064B
    fbopomofo;3108
    fcircle;24D5
    fdotaccent;1E1F
    feharabic;0641
    feharmenian;0586
    fehfinalarabic;FED2
    fehinitialarabic;FED3
    fehmedialarabic;FED4
    feicoptic;03E5
    female;2640
    ff;FB00
    ffi;FB03
    ffl;FB04
    fi;FB01
    fifteencircle;246E
    fifteenparen;2482
    fifteenperiod;2496
    figuredash;2012
    filledbox;25A0
    filledrect;25AC
    finalkaf;05DA
    finalkafdagesh;FB3A
    finalkafdageshhebrew;FB3A
    finalkafhebrew;05DA
    finalkafqamats;05DA 05B8
    finalkafqamatshebrew;05DA 05B8
    finalkafsheva;05DA 05B0
    finalkafshevahebrew;05DA 05B0
    finalmem;05DD
    finalmemhebrew;05DD
    finalnun;05DF
    finalnunhebrew;05DF
    finalpe;05E3
    finalpehebrew;05E3
    finaltsadi;05E5
    finaltsadihebrew;05E5
    firsttonechinese;02C9
    fisheye;25C9
    fitacyrillic;0473
    five;0035
    fivearabic;0665
    fivebengali;09EB
    fivecircle;2464
    fivecircleinversesansserif;278E
    fivedeva;096B
    fiveeighths;215D
    fivegujarati;0AEB
    fivegurmukhi;0A6B
    fivehackarabic;0665
    fivehangzhou;3025
    fiveideographicparen;3224
    fiveinferior;2085
    fivemonospace;FF15
    fiveoldstyle;F735
    fiveparen;2478
    fiveperiod;248C
    fivepersian;06F5
    fiveroman;2174
    fivesuperior;2075
    fivethai;0E55
    fl;FB02
    florin;0192
    fmonospace;FF46
    fmsquare;3399
    fofanthai;0E1F
    fofathai;0E1D
    fongmanthai;0E4F
    forall;2200
    four;0034
    fourarabic;0664
    fourbengali;09EA
    fourcircle;2463
    fourcircleinversesansserif;278D
    fourdeva;096A
    fourgujarati;0AEA
    fourgurmukhi;0A6A
    fourhackarabic;0664
    fourhangzhou;3024
    fourideographicparen;3223
    fourinferior;2084
    fourmonospace;FF14
    fournumeratorbengali;09F7
    fouroldstyle;F734
    fourparen;2477
    fourperiod;248B
    fourpersian;06F4
    fourroman;2173
    foursuperior;2074
    fourteencircle;246D
    fourteenparen;2481
    fourteenperiod;2495
    fourthai;0E54
    fourthtonechinese;02CB
    fparen;24A1
    fraction;2044
    franc;20A3
    g;0067
    gabengali;0997
    gacute;01F5
    gadeva;0917
    gafarabic;06AF
    gaffinalarabic;FB93
    gafinitialarabic;FB94
    gafmedialarabic;FB95
    gagujarati;0A97
    gagurmukhi;0A17
    gahiragana;304C
    gakatakana;30AC
    gamma;03B3
    gammalatinsmall;0263
    gammasuperior;02E0
    gangiacoptic;03EB
    gbopomofo;310D
    gbreve;011F
    gcaron;01E7
    gcedilla;0123
    gcircle;24D6
    gcircumflex;011D
    gcommaaccent;0123
    gdot;0121
    gdotaccent;0121
    gecyrillic;0433
    gehiragana;3052
    gekatakana;30B2
    geometricallyequal;2251
    gereshaccenthebrew;059C
    gereshhebrew;05F3
    gereshmuqdamhebrew;059D
    germandbls;00DF
    gershayimaccenthebrew;059E
    gershayimhebrew;05F4
    getamark;3013
    ghabengali;0998
    ghadarmenian;0572
    ghadeva;0918
    ghagujarati;0A98
    ghagurmukhi;0A18
    ghainarabic;063A
    ghainfinalarabic;FECE
    ghaininitialarabic;FECF
    ghainmedialarabic;FED0
    ghemiddlehookcyrillic;0495
    ghestrokecyrillic;0493
    gheupturncyrillic;0491
    ghhadeva;095A
    ghhagurmukhi;0A5A
    ghook;0260
    ghzsquare;3393
    gihiragana;304E
    gikatakana;30AE
    gimarmenian;0563
    gimel;05D2
    gimeldagesh;FB32
    gimeldageshhebrew;FB32
    gimelhebrew;05D2
    gjecyrillic;0453
    glottalinvertedstroke;01BE
    glottalstop;0294
    glottalstopinverted;0296
    glottalstopmod;02C0
    glottalstopreversed;0295
    glottalstopreversedmod;02C1
    glottalstopreversedsuperior;02E4
    glottalstopstroke;02A1
    glottalstopstrokereversed;02A2
    gmacron;1E21
    gmonospace;FF47
    gohiragana;3054
    gokatakana;30B4
    gparen;24A2
    gpasquare;33AC
    gradient;2207
    grave;0060
    gravebelowcmb;0316
    gravecmb;0300
    gravecomb;0300
    gravedeva;0953
    gravelowmod;02CE
    gravemonospace;FF40
    gravetonecmb;0340
    greater;003E
    greaterequal;2265
    greaterequalorless;22DB
    greatermonospace;FF1E
    greaterorequivalent;2273
    greaterorless;2277
    greateroverequal;2267
    greatersmall;FE65
    gscript;0261
    gstroke;01E5
    guhiragana;3050
    guillemotleft;00AB
    guillemotright;00BB
    guilsinglleft;2039
    guilsinglright;203A
    gukatakana;30B0
    guramusquare;3318
    gysquare;33C9
    h;0068
    haabkhasiancyrillic;04A9
    haaltonearabic;06C1
    habengali;09B9
    hadescendercyrillic;04B3
    hadeva;0939
    hagujarati;0AB9
    hagurmukhi;0A39
    haharabic;062D
    hahfinalarabic;FEA2
    hahinitialarabic;FEA3
    hahiragana;306F
    hahmedialarabic;FEA4
    haitusquare;332A
    hakatakana;30CF
    hakatakanahalfwidth;FF8A
    halantgurmukhi;0A4D
    hamzaarabic;0621
    hamzadammaarabic;0621 064F
    hamzadammatanarabic;0621 064C
    hamzafathaarabic;0621 064E
    hamzafathatanarabic;0621 064B
    hamzalowarabic;0621
    hamzalowkasraarabic;0621 0650
    hamzalowkasratanarabic;0621 064D
    hamzasukunarabic;0621 0652
    hangulfiller;3164
    hardsigncyrillic;044A
    harpoonleftbarbup;21BC
    harpoonrightbarbup;21C0
    hasquare;33CA
    hatafpatah;05B2
    hatafpatah16;05B2
    hatafpatah23;05B2
    hatafpatah2f;05B2
    hatafpatahhebrew;05B2
    hatafpatahnarrowhebrew;05B2
    hatafpatahquarterhebrew;05B2
    hatafpatahwidehebrew;05B2
    hatafqamats;05B3
    hatafqamats1b;05B3
    hatafqamats28;05B3
    hatafqamats34;05B3
    hatafqamatshebrew;05B3
    hatafqamatsnarrowhebrew;05B3
    hatafqamatsquarterhebrew;05B3
    hatafqamatswidehebrew;05B3
    hatafsegol;05B1
    hatafsegol17;05B1
    hatafsegol24;05B1
    hatafsegol30;05B1
    hatafsegolhebrew;05B1
    hatafsegolnarrowhebrew;05B1
    hatafsegolquarterhebrew;05B1
    hatafsegolwidehebrew;05B1
    hbar;0127
    hbopomofo;310F
    hbrevebelow;1E2B
    hcedilla;1E29
    hcircle;24D7
    hcircumflex;0125
    hdieresis;1E27
    hdotaccent;1E23
    hdotbelow;1E25
    he;05D4
    heart;2665
    heartsuitblack;2665
    heartsuitwhite;2661
    hedagesh;FB34
    hedageshhebrew;FB34
    hehaltonearabic;06C1
    heharabic;0647
    hehebrew;05D4
    hehfinalaltonearabic;FBA7
    hehfinalalttwoarabic;FEEA
    hehfinalarabic;FEEA
    hehhamzaabovefinalarabic;FBA5
    hehhamzaaboveisolatedarabic;FBA4
    hehinitialaltonearabic;FBA8
    hehinitialarabic;FEEB
    hehiragana;3078
    hehmedialaltonearabic;FBA9
    hehmedialarabic;FEEC
    heiseierasquare;337B
    hekatakana;30D8
    hekatakanahalfwidth;FF8D
    hekutaarusquare;3336
    henghook;0267
    herutusquare;3339
    het;05D7
    hethebrew;05D7
    hhook;0266
    hhooksuperior;02B1
    hieuhacirclekorean;327B
    hieuhaparenkorean;321B
    hieuhcirclekorean;326D
    hieuhkorean;314E
    hieuhparenkorean;320D
    hihiragana;3072
    hikatakana;30D2
    hikatakanahalfwidth;FF8B
    hiriq;05B4
    hiriq14;05B4
    hiriq21;05B4
    hiriq2d;05B4
    hiriqhebrew;05B4
    hiriqnarrowhebrew;05B4
    hiriqquarterhebrew;05B4
    hiriqwidehebrew;05B4
    hlinebelow;1E96
    hmonospace;FF48
    hoarmenian;0570
    hohipthai;0E2B
    hohiragana;307B
    hokatakana;30DB
    hokatakanahalfwidth;FF8E
    holam;05B9
    holam19;05B9
    holam26;05B9
    holam32;05B9
    holamhebrew;05B9
    holamnarrowhebrew;05B9
    holamquarterhebrew;05B9
    holamwidehebrew;05B9
    honokhukthai;0E2E
    hookabovecomb;0309
    hookcmb;0309
    hookpalatalizedbelowcmb;0321
    hookretroflexbelowcmb;0322
    hoonsquare;3342
    horicoptic;03E9
    horizontalbar;2015
    horncmb;031B
    hotsprings;2668
    house;2302
    hparen;24A3
    hsuperior;02B0
    hturned;0265
    huhiragana;3075
    huiitosquare;3333
    hukatakana;30D5
    hukatakanahalfwidth;FF8C
    hungarumlaut;02DD
    hungarumlautcmb;030B
    hv;0195
    hyphen;002D
    hypheninferior;F6E5
    hyphenmonospace;FF0D
    hyphensmall;FE63
    hyphensuperior;F6E6
    hyphentwo;2010
    i;0069
    iacute;00ED
    iacyrillic;044F
    ibengali;0987
    ibopomofo;3127
    ibreve;012D
    icaron;01D0
    icircle;24D8
    icircumflex;00EE
    icyrillic;0456
    idblgrave;0209
    ideographearthcircle;328F
    ideographfirecircle;328B
    ideographicallianceparen;323F
    ideographiccallparen;323A
    ideographiccentrecircle;32A5
    ideographicclose;3006
    ideographiccomma;3001
    ideographiccommaleft;FF64
    ideographiccongratulationparen;3237
    ideographiccorrectcircle;32A3
    ideographicearthparen;322F
    ideographicenterpriseparen;323D
    ideographicexcellentcircle;329D
    ideographicfestivalparen;3240
    ideographicfinancialcircle;3296
    ideographicfinancialparen;3236
    ideographicfireparen;322B
    ideographichaveparen;3232
    ideographichighcircle;32A4
    ideographiciterationmark;3005
    ideographiclaborcircle;3298
    ideographiclaborparen;3238
    ideographicleftcircle;32A7
    ideographiclowcircle;32A6
    ideographicmedicinecircle;32A9
    ideographicmetalparen;322E
    ideographicmoonparen;322A
    ideographicnameparen;3234
    ideographicperiod;3002
    ideographicprintcircle;329E
    ideographicreachparen;3243
    ideographicrepresentparen;3239
    ideographicresourceparen;323E
    ideographicrightcircle;32A8
    ideographicsecretcircle;3299
    ideographicselfparen;3242
    ideographicsocietyparen;3233
    ideographicspace;3000
    ideographicspecialparen;3235
    ideographicstockparen;3231
    ideographicstudyparen;323B
    ideographicsunparen;3230
    ideographicsuperviseparen;323C
    ideographicwaterparen;322C
    ideographicwoodparen;322D
    ideographiczero;3007
    ideographmetalcircle;328E
    ideographmooncircle;328A
    ideographnamecircle;3294
    ideographsuncircle;3290
    ideographwatercircle;328C
    ideographwoodcircle;328D
    ideva;0907
    idieresis;00EF
    idieresisacute;1E2F
    idieresiscyrillic;04E5
    idotbelow;1ECB
    iebrevecyrillic;04D7
    iecyrillic;0435
    ieungacirclekorean;3275
    ieungaparenkorean;3215
    ieungcirclekorean;3267
    ieungkorean;3147
    ieungparenkorean;3207
    igrave;00EC
    igujarati;0A87
    igurmukhi;0A07
    ihiragana;3044
    ihookabove;1EC9
    iibengali;0988
    iicyrillic;0438
    iideva;0908
    iigujarati;0A88
    iigurmukhi;0A08
    iimatragurmukhi;0A40
    iinvertedbreve;020B
    iishortcyrillic;0439
    iivowelsignbengali;09C0
    iivowelsigndeva;0940
    iivowelsigngujarati;0AC0
    ij;0133
    ikatakana;30A4
    ikatakanahalfwidth;FF72
    ikorean;3163
    ilde;02DC
    iluyhebrew;05AC
    imacron;012B
    imacroncyrillic;04E3
    imageorapproximatelyequal;2253
    imatragurmukhi;0A3F
    imonospace;FF49
    increment;2206
    infinity;221E
    iniarmenian;056B
    integral;222B
    integralbottom;2321
    integralbt;2321
    integralex;F8F5
    integraltop;2320
    integraltp;2320
    intersection;2229
    intisquare;3305
    invbullet;25D8
    invcircle;25D9
    invsmileface;263B
    iocyrillic;0451
    iogonek;012F
    iota;03B9
    iotadieresis;03CA
    iotadieresistonos;0390
    iotalatin;0269
    iotatonos;03AF
    iparen;24A4
    irigurmukhi;0A72
    ismallhiragana;3043
    ismallkatakana;30A3
    ismallkatakanahalfwidth;FF68
    issharbengali;09FA
    istroke;0268
    isuperior;F6ED
    iterationhiragana;309D
    iterationkatakana;30FD
    itilde;0129
    itildebelow;1E2D
    iubopomofo;3129
    iucyrillic;044E
    ivowelsignbengali;09BF
    ivowelsigndeva;093F
    ivowelsigngujarati;0ABF
    izhitsacyrillic;0475
    izhitsadblgravecyrillic;0477
    j;006A
    jaarmenian;0571
    jabengali;099C
    jadeva;091C
    jagujarati;0A9C
    jagurmukhi;0A1C
    jbopomofo;3110
    jcaron;01F0
    jcircle;24D9
    jcircumflex;0135
    jcrossedtail;029D
    jdotlessstroke;025F
    jecyrillic;0458
    jeemarabic;062C
    jeemfinalarabic;FE9E
    jeeminitialarabic;FE9F
    jeemmedialarabic;FEA0
    jeharabic;0698
    jehfinalarabic;FB8B
    jhabengali;099D
    jhadeva;091D
    jhagujarati;0A9D
    jhagurmukhi;0A1D
    jheharmenian;057B
    jis;3004
    jmonospace;FF4A
    jparen;24A5
    jsuperior;02B2
    k;006B
    kabashkircyrillic;04A1
    kabengali;0995
    kacute;1E31
    kacyrillic;043A
    kadescendercyrillic;049B
    kadeva;0915
    kaf;05DB
    kafarabic;0643
    kafdagesh;FB3B
    kafdageshhebrew;FB3B
    kaffinalarabic;FEDA
    kafhebrew;05DB
    kafinitialarabic;FEDB
    kafmedialarabic;FEDC
    kafrafehebrew;FB4D
    kagujarati;0A95
    kagurmukhi;0A15
    kahiragana;304B
    kahookcyrillic;04C4
    kakatakana;30AB
    kakatakanahalfwidth;FF76
    kappa;03BA
    kappasymbolgreek;03F0
    kapyeounmieumkorean;3171
    kapyeounphieuphkorean;3184
    kapyeounpieupkorean;3178
    kapyeounssangpieupkorean;3179
    karoriisquare;330D
    kashidaautoarabic;0640
    kashidaautonosidebearingarabic;0640
    kasmallkatakana;30F5
    kasquare;3384
    kasraarabic;0650
    kasratanarabic;064D
    kastrokecyrillic;049F
    katahiraprolongmarkhalfwidth;FF70
    kaverticalstrokecyrillic;049D
    kbopomofo;310E
    kcalsquare;3389
    kcaron;01E9
    kcedilla;0137
    kcircle;24DA
    kcommaaccent;0137
    kdotbelow;1E33
    keharmenian;0584
    kehiragana;3051
    kekatakana;30B1
    kekatakanahalfwidth;FF79
    kenarmenian;056F
    kesmallkatakana;30F6
    kgreenlandic;0138
    khabengali;0996
    khacyrillic;0445
    khadeva;0916
    khagujarati;0A96
    khagurmukhi;0A16
    khaharabic;062E
    khahfinalarabic;FEA6
    khahinitialarabic;FEA7
    khahmedialarabic;FEA8
    kheicoptic;03E7
    khhadeva;0959
    khhagurmukhi;0A59
    khieukhacirclekorean;3278
    khieukhaparenkorean;3218
    khieukhcirclekorean;326A
    khieukhkorean;314B
    khieukhparenkorean;320A
    khokhaithai;0E02
    khokhonthai;0E05
    khokhuatthai;0E03
    khokhwaithai;0E04
    khomutthai;0E5B
    khook;0199
    khorakhangthai;0E06
    khzsquare;3391
    kihiragana;304D
    kikatakana;30AD
    kikatakanahalfwidth;FF77
    kiroguramusquare;3315
    kiromeetorusquare;3316
    kirosquare;3314
    kiyeokacirclekorean;326E
    kiyeokaparenkorean;320E
    kiyeokcirclekorean;3260
    kiyeokkorean;3131
    kiyeokparenkorean;3200
    kiyeoksioskorean;3133
    kjecyrillic;045C
    klinebelow;1E35
    klsquare;3398
    kmcubedsquare;33A6
    kmonospace;FF4B
    kmsquaredsquare;33A2
    kohiragana;3053
    kohmsquare;33C0
    kokaithai;0E01
    kokatakana;30B3
    kokatakanahalfwidth;FF7A
    kooposquare;331E
    koppacyrillic;0481
    koreanstandardsymbol;327F
    koroniscmb;0343
    kparen;24A6
    kpasquare;33AA
    ksicyrillic;046F
    ktsquare;33CF
    kturned;029E
    kuhiragana;304F
    kukatakana;30AF
    kukatakanahalfwidth;FF78
    kvsquare;33B8
    kwsquare;33BE
    l;006C
    labengali;09B2
    lacute;013A
    ladeva;0932
    lagujarati;0AB2
    lagurmukhi;0A32
    lakkhangyaothai;0E45
    lamaleffinalarabic;FEFC
    lamalefhamzaabovefinalarabic;FEF8
    lamalefhamzaaboveisolatedarabic;FEF7
    lamalefhamzabelowfinalarabic;FEFA
    lamalefhamzabelowisolatedarabic;FEF9
    lamalefisolatedarabic;FEFB
    lamalefmaddaabovefinalarabic;FEF6
    lamalefmaddaaboveisolatedarabic;FEF5
    lamarabic;0644
    lambda;03BB
    lambdastroke;019B
    lamed;05DC
    lameddagesh;FB3C
    lameddageshhebrew;FB3C
    lamedhebrew;05DC
    lamedholam;05DC 05B9
    lamedholamdagesh;05DC 05B9 05BC
    lamedholamdageshhebrew;05DC 05B9 05BC
    lamedholamhebrew;05DC 05B9
    lamfinalarabic;FEDE
    lamhahinitialarabic;FCCA
    laminitialarabic;FEDF
    lamjeeminitialarabic;FCC9
    lamkhahinitialarabic;FCCB
    lamlamhehisolatedarabic;FDF2
    lammedialarabic;FEE0
    lammeemhahinitialarabic;FD88
    lammeeminitialarabic;FCCC
    lammeemjeeminitialarabic;FEDF FEE4 FEA0
    lammeemkhahinitialarabic;FEDF FEE4 FEA8
    largecircle;25EF
    lbar;019A
    lbelt;026C
    lbopomofo;310C
    lcaron;013E
    lcedilla;013C
    lcircle;24DB
    lcircumflexbelow;1E3D
    lcommaaccent;013C
    ldot;0140
    ldotaccent;0140
    ldotbelow;1E37
    ldotbelowmacron;1E39
    leftangleabovecmb;031A
    lefttackbelowcmb;0318
    less;003C
    lessequal;2264
    lessequalorgreater;22DA
    lessmonospace;FF1C
    lessorequivalent;2272
    lessorgreater;2276
    lessoverequal;2266
    lesssmall;FE64
    lezh;026E
    lfblock;258C
    lhookretroflex;026D
    lira;20A4
    liwnarmenian;056C
    lj;01C9
    ljecyrillic;0459
    ll;F6C0
    lladeva;0933
    llagujarati;0AB3
    llinebelow;1E3B
    llladeva;0934
    llvocalicbengali;09E1
    llvocalicdeva;0961
    llvocalicvowelsignbengali;09E3
    llvocalicvowelsigndeva;0963
    lmiddletilde;026B
    lmonospace;FF4C
    lmsquare;33D0
    lochulathai;0E2C
    logicaland;2227
    logicalnot;00AC
    logicalnotreversed;2310
    logicalor;2228
    lolingthai;0E25
    longs;017F
    lowlinecenterline;FE4E
    lowlinecmb;0332
    lowlinedashed;FE4D
    lozenge;25CA
    lparen;24A7
    lslash;0142
    lsquare;2113
    lsuperior;F6EE
    ltshade;2591
    luthai;0E26
    lvocalicbengali;098C
    lvocalicdeva;090C
    lvocalicvowelsignbengali;09E2
    lvocalicvowelsigndeva;0962
    lxsquare;33D3
    m;006D
    mabengali;09AE
    macron;00AF
    macronbelowcmb;0331
    macroncmb;0304
    macronlowmod;02CD
    macronmonospace;FFE3
    macute;1E3F
    madeva;092E
    magujarati;0AAE
    magurmukhi;0A2E
    mahapakhhebrew;05A4
    mahapakhlefthebrew;05A4
    mahiragana;307E
    maichattawalowleftthai;F895
    maichattawalowrightthai;F894
    maichattawathai;0E4B
    maichattawaupperleftthai;F893
    maieklowleftthai;F88C
    maieklowrightthai;F88B
    maiekthai;0E48
    maiekupperleftthai;F88A
    maihanakatleftthai;F884
    maihanakatthai;0E31
    maitaikhuleftthai;F889
    maitaikhuthai;0E47
    maitholowleftthai;F88F
    maitholowrightthai;F88E
    maithothai;0E49
    maithoupperleftthai;F88D
    maitrilowleftthai;F892
    maitrilowrightthai;F891
    maitrithai;0E4A
    maitriupperleftthai;F890
    maiyamokthai;0E46
    makatakana;30DE
    makatakanahalfwidth;FF8F
    male;2642
    mansyonsquare;3347
    maqafhebrew;05BE
    mars;2642
    masoracirclehebrew;05AF
    masquare;3383
    mbopomofo;3107
    mbsquare;33D4
    mcircle;24DC
    mcubedsquare;33A5
    mdotaccent;1E41
    mdotbelow;1E43
    meemarabic;0645
    meemfinalarabic;FEE2
    meeminitialarabic;FEE3
    meemmedialarabic;FEE4
    meemmeeminitialarabic;FCD1
    meemmeemisolatedarabic;FC48
    meetorusquare;334D
    mehiragana;3081
    meizierasquare;337E
    mekatakana;30E1
    mekatakanahalfwidth;FF92
    mem;05DE
    memdagesh;FB3E
    memdageshhebrew;FB3E
    memhebrew;05DE
    menarmenian;0574
    merkhahebrew;05A5
    merkhakefulahebrew;05A6
    merkhakefulalefthebrew;05A6
    merkhalefthebrew;05A5
    mhook;0271
    mhzsquare;3392
    middledotkatakanahalfwidth;FF65
    middot;00B7
    mieumacirclekorean;3272
    mieumaparenkorean;3212
    mieumcirclekorean;3264
    mieumkorean;3141
    mieumpansioskorean;3170
    mieumparenkorean;3204
    mieumpieupkorean;316E
    mieumsioskorean;316F
    mihiragana;307F
    mikatakana;30DF
    mikatakanahalfwidth;FF90
    minus;2212
    minusbelowcmb;0320
    minuscircle;2296
    minusmod;02D7
    minusplus;2213
    minute;2032
    miribaarusquare;334A
    mirisquare;3349
    mlonglegturned;0270
    mlsquare;3396
    mmcubedsquare;33A3
    mmonospace;FF4D
    mmsquaredsquare;339F
    mohiragana;3082
    mohmsquare;33C1
    mokatakana;30E2
    mokatakanahalfwidth;FF93
    molsquare;33D6
    momathai;0E21
    moverssquare;33A7
    moverssquaredsquare;33A8
    mparen;24A8
    mpasquare;33AB
    mssquare;33B3
    msuperior;F6EF
    mturned;026F
    mu;00B5
    mu1;00B5
    muasquare;3382
    muchgreater;226B
    muchless;226A
    mufsquare;338C
    mugreek;03BC
    mugsquare;338D
    muhiragana;3080
    mukatakana;30E0
    mukatakanahalfwidth;FF91
    mulsquare;3395
    multiply;00D7
    mumsquare;339B
    munahhebrew;05A3
    munahlefthebrew;05A3
    musicalnote;266A
    musicalnotedbl;266B
    musicflatsign;266D
    musicsharpsign;266F
    mussquare;33B2
    muvsquare;33B6
    muwsquare;33BC
    mvmegasquare;33B9
    mvsquare;33B7
    mwmegasquare;33BF
    mwsquare;33BD
    n;006E
    nabengali;09A8
    nabla;2207
    nacute;0144
    nadeva;0928
    nagujarati;0AA8
    nagurmukhi;0A28
    nahiragana;306A
    nakatakana;30CA
    nakatakanahalfwidth;FF85
    napostrophe;0149
    nasquare;3381
    nbopomofo;310B
    nbspace;00A0
    ncaron;0148
    ncedilla;0146
    ncircle;24DD
    ncircumflexbelow;1E4B
    ncommaaccent;0146
    ndotaccent;1E45
    ndotbelow;1E47
    nehiragana;306D
    nekatakana;30CD
    nekatakanahalfwidth;FF88
    newsheqelsign;20AA
    nfsquare;338B
    ngabengali;0999
    ngadeva;0919
    ngagujarati;0A99
    ngagurmukhi;0A19
    ngonguthai;0E07
    nhiragana;3093
    nhookleft;0272
    nhookretroflex;0273
    nieunacirclekorean;326F
    nieunaparenkorean;320F
    nieuncieuckorean;3135
    nieuncirclekorean;3261
    nieunhieuhkorean;3136
    nieunkorean;3134
    nieunpansioskorean;3168
    nieunparenkorean;3201
    nieunsioskorean;3167
    nieuntikeutkorean;3166
    nihiragana;306B
    nikatakana;30CB
    nikatakanahalfwidth;FF86
    nikhahitleftthai;F899
    nikhahitthai;0E4D
    nine;0039
    ninearabic;0669
    ninebengali;09EF
    ninecircle;2468
    ninecircleinversesansserif;2792
    ninedeva;096F
    ninegujarati;0AEF
    ninegurmukhi;0A6F
    ninehackarabic;0669
    ninehangzhou;3029
    nineideographicparen;3228
    nineinferior;2089
    ninemonospace;FF19
    nineoldstyle;F739
    nineparen;247C
    nineperiod;2490
    ninepersian;06F9
    nineroman;2178
    ninesuperior;2079
    nineteencircle;2472
    nineteenparen;2486
    nineteenperiod;249A
    ninethai;0E59
    nj;01CC
    njecyrillic;045A
    nkatakana;30F3
    nkatakanahalfwidth;FF9D
    nlegrightlong;019E
    nlinebelow;1E49
    nmonospace;FF4E
    nmsquare;339A
    nnabengali;09A3
    nnadeva;0923
    nnagujarati;0AA3
    nnagurmukhi;0A23
    nnnadeva;0929
    nohiragana;306E
    nokatakana;30CE
    nokatakanahalfwidth;FF89
    nonbreakingspace;00A0
    nonenthai;0E13
    nonuthai;0E19
    noonarabic;0646
    noonfinalarabic;FEE6
    noonghunnaarabic;06BA
    noonghunnafinalarabic;FB9F
    noonhehinitialarabic;FEE7 FEEC
    nooninitialarabic;FEE7
    noonjeeminitialarabic;FCD2
    noonjeemisolatedarabic;FC4B
    noonmedialarabic;FEE8
    noonmeeminitialarabic;FCD5
    noonmeemisolatedarabic;FC4E
    noonnoonfinalarabic;FC8D
    notcontains;220C
    notelement;2209
    notelementof;2209
    notequal;2260
    notgreater;226F
    notgreaternorequal;2271
    notgreaternorless;2279
    notidentical;2262
    notless;226E
    notlessnorequal;2270
    notparallel;2226
    notprecedes;2280
    notsubset;2284
    notsucceeds;2281
    notsuperset;2285
    nowarmenian;0576
    nparen;24A9
    nssquare;33B1
    nsuperior;207F
    ntilde;00F1
    nu;03BD
    nuhiragana;306C
    nukatakana;30CC
    nukatakanahalfwidth;FF87
    nuktabengali;09BC
    nuktadeva;093C
    nuktagujarati;0ABC
    nuktagurmukhi;0A3C
    numbersign;0023
    numbersignmonospace;FF03
    numbersignsmall;FE5F
    numeralsigngreek;0374
    numeralsignlowergreek;0375
    numero;2116
    nun;05E0
    nundagesh;FB40
    nundageshhebrew;FB40
    nunhebrew;05E0
    nvsquare;33B5
    nwsquare;33BB
    nyabengali;099E
    nyadeva;091E
    nyagujarati;0A9E
    nyagurmukhi;0A1E
    o;006F
    oacute;00F3
    oangthai;0E2D
    obarred;0275
    obarredcyrillic;04E9
    obarreddieresiscyrillic;04EB
    obengali;0993
    obopomofo;311B
    obreve;014F
    ocandradeva;0911
    ocandragujarati;0A91
    ocandravowelsigndeva;0949
    ocandravowelsigngujarati;0AC9
    ocaron;01D2
    ocircle;24DE
    ocircumflex;00F4
    ocircumflexacute;1ED1
    ocircumflexdotbelow;1ED9
    ocircumflexgrave;1ED3
    ocircumflexhookabove;1ED5
    ocircumflextilde;1ED7
    ocyrillic;043E
    odblacute;0151
    odblgrave;020D
    odeva;0913
    odieresis;00F6
    odieresiscyrillic;04E7
    odotbelow;1ECD
    oe;0153
    oekorean;315A
    ogonek;02DB
    ogonekcmb;0328
    ograve;00F2
    ogujarati;0A93
    oharmenian;0585
    ohiragana;304A
    ohookabove;1ECF
    ohorn;01A1
    ohornacute;1EDB
    ohorndotbelow;1EE3
    ohorngrave;1EDD
    ohornhookabove;1EDF
    ohorntilde;1EE1
    ohungarumlaut;0151
    oi;01A3
    oinvertedbreve;020F
    okatakana;30AA
    okatakanahalfwidth;FF75
    okorean;3157
    olehebrew;05AB
    omacron;014D
    omacronacute;1E53
    omacrongrave;1E51
    omdeva;0950
    omega;03C9
    omega1;03D6
    omegacyrillic;0461
    omegalatinclosed;0277
    omegaroundcyrillic;047B
    omegatitlocyrillic;047D
    omegatonos;03CE
    omgujarati;0AD0
    omicron;03BF
    omicrontonos;03CC
    omonospace;FF4F
    one;0031
    onearabic;0661
    onebengali;09E7
    onecircle;2460
    onecircleinversesansserif;278A
    onedeva;0967
    onedotenleader;2024
    oneeighth;215B
    onefitted;F6DC
    onegujarati;0AE7
    onegurmukhi;0A67
    onehackarabic;0661
    onehalf;00BD
    onehangzhou;3021
    oneideographicparen;3220
    oneinferior;2081
    onemonospace;FF11
    onenumeratorbengali;09F4
    oneoldstyle;F731
    oneparen;2474
    oneperiod;2488
    onepersian;06F1
    onequarter;00BC
    oneroman;2170
    onesuperior;00B9
    onethai;0E51
    onethird;2153
    oogonek;01EB
    oogonekmacron;01ED
    oogurmukhi;0A13
    oomatragurmukhi;0A4B
    oopen;0254
    oparen;24AA
    openbullet;25E6
    option;2325
    ordfeminine;00AA
    ordmasculine;00BA
    orthogonal;221F
    oshortdeva;0912
    oshortvowelsigndeva;094A
    oslash;00F8
    oslashacute;01FF
    osmallhiragana;3049
    osmallkatakana;30A9
    osmallkatakanahalfwidth;FF6B
    ostrokeacute;01FF
    osuperior;F6F0
    otcyrillic;047F
    otilde;00F5
    otildeacute;1E4D
    otildedieresis;1E4F
    oubopomofo;3121
    overline;203E
    overlinecenterline;FE4A
    overlinecmb;0305
    overlinedashed;FE49
    overlinedblwavy;FE4C
    overlinewavy;FE4B
    overscore;00AF
    ovowelsignbengali;09CB
    ovowelsigndeva;094B
    ovowelsigngujarati;0ACB
    p;0070
    paampssquare;3380
    paasentosquare;332B
    pabengali;09AA
    pacute;1E55
    padeva;092A
    pagedown;21DF
    pageup;21DE
    pagujarati;0AAA
    pagurmukhi;0A2A
    pahiragana;3071
    paiyannoithai;0E2F
    pakatakana;30D1
    palatalizationcyrilliccmb;0484
    palochkacyrillic;04C0
    pansioskorean;317F
    paragraph;00B6
    parallel;2225
    parenleft;0028
    parenleftaltonearabic;FD3E
    parenleftbt;F8ED
    parenleftex;F8EC
    parenleftinferior;208D
    parenleftmonospace;FF08
    parenleftsmall;FE59
    parenleftsuperior;207D
    parenlefttp;F8EB
    parenleftvertical;FE35
    parenright;0029
    parenrightaltonearabic;FD3F
    parenrightbt;F8F8
    parenrightex;F8F7
    parenrightinferior;208E
    parenrightmonospace;FF09
    parenrightsmall;FE5A
    parenrightsuperior;207E
    parenrighttp;F8F6
    parenrightvertical;FE36
    partialdiff;2202
    paseqhebrew;05C0
    pashtahebrew;0599
    pasquare;33A9
    patah;05B7
    patah11;05B7
    patah1d;05B7
    patah2a;05B7
    patahhebrew;05B7
    patahnarrowhebrew;05B7
    patahquarterhebrew;05B7
    patahwidehebrew;05B7
    pazerhebrew;05A1
    pbopomofo;3106
    pcircle;24DF
    pdotaccent;1E57
    pe;05E4
    pecyrillic;043F
    pedagesh;FB44
    pedageshhebrew;FB44
    peezisquare;333B
    pefinaldageshhebrew;FB43
    peharabic;067E
    peharmenian;057A
    pehebrew;05E4
    pehfinalarabic;FB57
    pehinitialarabic;FB58
    pehiragana;307A
    pehmedialarabic;FB59
    pekatakana;30DA
    pemiddlehookcyrillic;04A7
    perafehebrew;FB4E
    percent;0025
    percentarabic;066A
    percentmonospace;FF05
    percentsmall;FE6A
    period;002E
    periodarmenian;0589
    periodcentered;00B7
    periodhalfwidth;FF61
    periodinferior;F6E7
    periodmonospace;FF0E
    periodsmall;FE52
    periodsuperior;F6E8
    perispomenigreekcmb;0342
    perpendicular;22A5
    perthousand;2030
    peseta;20A7
    pfsquare;338A
    phabengali;09AB
    phadeva;092B
    phagujarati;0AAB
    phagurmukhi;0A2B
    phi;03C6
    phi1;03D5
    phieuphacirclekorean;327A
    phieuphaparenkorean;321A
    phieuphcirclekorean;326C
    phieuphkorean;314D
    phieuphparenkorean;320C
    philatin;0278
    phinthuthai;0E3A
    phisymbolgreek;03D5
    phook;01A5
    phophanthai;0E1E
    phophungthai;0E1C
    phosamphaothai;0E20
    pi;03C0
    pieupacirclekorean;3273
    pieupaparenkorean;3213
    pieupcieuckorean;3176
    pieupcirclekorean;3265
    pieupkiyeokkorean;3172
    pieupkorean;3142
    pieupparenkorean;3205
    pieupsioskiyeokkorean;3174
    pieupsioskorean;3144
    pieupsiostikeutkorean;3175
    pieupthieuthkorean;3177
    pieuptikeutkorean;3173
    pihiragana;3074
    pikatakana;30D4
    pisymbolgreek;03D6
    piwrarmenian;0583
    plus;002B
    plusbelowcmb;031F
    pluscircle;2295
    plusminus;00B1
    plusmod;02D6
    plusmonospace;FF0B
    plussmall;FE62
    plussuperior;207A
    pmonospace;FF50
    pmsquare;33D8
    pohiragana;307D
    pointingindexdownwhite;261F
    pointingindexleftwhite;261C
    pointingindexrightwhite;261E
    pointingindexupwhite;261D
    pokatakana;30DD
    poplathai;0E1B
    postalmark;3012
    postalmarkface;3020
    pparen;24AB
    precedes;227A
    prescription;211E
    primemod;02B9
    primereversed;2035
    product;220F
    projective;2305
    prolongedkana;30FC
    propellor;2318
    propersubset;2282
    propersuperset;2283
    proportion;2237
    proportional;221D
    psi;03C8
    psicyrillic;0471
    psilipneumatacyrilliccmb;0486
    pssquare;33B0
    puhiragana;3077
    pukatakana;30D7
    pvsquare;33B4
    pwsquare;33BA
    q;0071
    qadeva;0958
    qadmahebrew;05A8
    qafarabic;0642
    qaffinalarabic;FED6
    qafinitialarabic;FED7
    qafmedialarabic;FED8
    qamats;05B8
    qamats10;05B8
    qamats1a;05B8
    qamats1c;05B8
    qamats27;05B8
    qamats29;05B8
    qamats33;05B8
    qamatsde;05B8
    qamatshebrew;05B8
    qamatsnarrowhebrew;05B8
    qamatsqatanhebrew;05B8
    qamatsqatannarrowhebrew;05B8
    qamatsqatanquarterhebrew;05B8
    qamatsqatanwidehebrew;05B8
    qamatsquarterhebrew;05B8
    qamatswidehebrew;05B8
    qarneyparahebrew;059F
    qbopomofo;3111
    qcircle;24E0
    qhook;02A0
    qmonospace;FF51
    qof;05E7
    qofdagesh;FB47
    qofdageshhebrew;FB47
    qofhatafpatah;05E7 05B2
    qofhatafpatahhebrew;05E7 05B2
    qofhatafsegol;05E7 05B1
    qofhatafsegolhebrew;05E7 05B1
    qofhebrew;05E7
    qofhiriq;05E7 05B4
    qofhiriqhebrew;05E7 05B4
    qofholam;05E7 05B9
    qofholamhebrew;05E7 05B9
    qofpatah;05E7 05B7
    qofpatahhebrew;05E7 05B7
    qofqamats;05E7 05B8
    qofqamatshebrew;05E7 05B8
    qofqubuts;05E7 05BB
    qofqubutshebrew;05E7 05BB
    qofsegol;05E7 05B6
    qofsegolhebrew;05E7 05B6
    qofsheva;05E7 05B0
    qofshevahebrew;05E7 05B0
    qoftsere;05E7 05B5
    qoftserehebrew;05E7 05B5
    qparen;24AC
    quarternote;2669
    qubuts;05BB
    qubuts18;05BB
    qubuts25;05BB
    qubuts31;05BB
    qubutshebrew;05BB
    qubutsnarrowhebrew;05BB
    qubutsquarterhebrew;05BB
    qubutswidehebrew;05BB
    question;003F
    questionarabic;061F
    questionarmenian;055E
    questiondown;00BF
    questiondownsmall;F7BF
    questiongreek;037E
    questionmonospace;FF1F
    questionsmall;F73F
    quotedbl;0022
    quotedblbase;201E
    quotedblleft;201C
    quotedblmonospace;FF02
    quotedblprime;301E
    quotedblprimereversed;301D
    quotedblright;201D
    quoteleft;2018
    quoteleftreversed;201B
    quotereversed;201B
    quoteright;2019
    quoterightn;0149
    quotesinglbase;201A
    quotesingle;0027
    quotesinglemonospace;FF07
    r;0072
    raarmenian;057C
    rabengali;09B0
    racute;0155
    radeva;0930
    radical;221A
    radicalex;F8E5
    radoverssquare;33AE
    radoverssquaredsquare;33AF
    radsquare;33AD
    rafe;05BF
    rafehebrew;05BF
    ragujarati;0AB0
    ragurmukhi;0A30
    rahiragana;3089
    rakatakana;30E9
    rakatakanahalfwidth;FF97
    ralowerdiagonalbengali;09F1
    ramiddlediagonalbengali;09F0
    ramshorn;0264
    ratio;2236
    rbopomofo;3116
    rcaron;0159
    rcedilla;0157
    rcircle;24E1
    rcommaaccent;0157
    rdblgrave;0211
    rdotaccent;1E59
    rdotbelow;1E5B
    rdotbelowmacron;1E5D
    referencemark;203B
    reflexsubset;2286
    reflexsuperset;2287
    registered;00AE
    registersans;F8E8
    registerserif;F6DA
    reharabic;0631
    reharmenian;0580
    rehfinalarabic;FEAE
    rehiragana;308C
    rehyehaleflamarabic;0631 FEF3 FE8E 0644
    rekatakana;30EC
    rekatakanahalfwidth;FF9A
    resh;05E8
    reshdageshhebrew;FB48
    reshhatafpatah;05E8 05B2
    reshhatafpatahhebrew;05E8 05B2
    reshhatafsegol;05E8 05B1
    reshhatafsegolhebrew;05E8 05B1
    reshhebrew;05E8
    reshhiriq;05E8 05B4
    reshhiriqhebrew;05E8 05B4
    reshholam;05E8 05B9
    reshholamhebrew;05E8 05B9
    reshpatah;05E8 05B7
    reshpatahhebrew;05E8 05B7
    reshqamats;05E8 05B8
    reshqamatshebrew;05E8 05B8
    reshqubuts;05E8 05BB
    reshqubutshebrew;05E8 05BB
    reshsegol;05E8 05B6
    reshsegolhebrew;05E8 05B6
    reshsheva;05E8 05B0
    reshshevahebrew;05E8 05B0
    reshtsere;05E8 05B5
    reshtserehebrew;05E8 05B5
    reversedtilde;223D
    reviahebrew;0597
    reviamugrashhebrew;0597
    revlogicalnot;2310
    rfishhook;027E
    rfishhookreversed;027F
    rhabengali;09DD
    rhadeva;095D
    rho;03C1
    rhook;027D
    rhookturned;027B
    rhookturnedsuperior;02B5
    rhosymbolgreek;03F1
    rhotichookmod;02DE
    rieulacirclekorean;3271
    rieulaparenkorean;3211
    rieulcirclekorean;3263
    rieulhieuhkorean;3140
    rieulkiyeokkorean;313A
    rieulkiyeoksioskorean;3169
    rieulkorean;3139
    rieulmieumkorean;313B
    rieulpansioskorean;316C
    rieulparenkorean;3203
    rieulphieuphkorean;313F
    rieulpieupkorean;313C
    rieulpieupsioskorean;316B
    rieulsioskorean;313D
    rieulthieuthkorean;313E
    rieultikeutkorean;316A
    rieulyeorinhieuhkorean;316D
    rightangle;221F
    righttackbelowcmb;0319
    righttriangle;22BF
    rihiragana;308A
    rikatakana;30EA
    rikatakanahalfwidth;FF98
    ring;02DA
    ringbelowcmb;0325
    ringcmb;030A
    ringhalfleft;02BF
    ringhalfleftarmenian;0559
    ringhalfleftbelowcmb;031C
    ringhalfleftcentered;02D3
    ringhalfright;02BE
    ringhalfrightbelowcmb;0339
    ringhalfrightcentered;02D2
    rinvertedbreve;0213
    rittorusquare;3351
    rlinebelow;1E5F
    rlongleg;027C
    rlonglegturned;027A
    rmonospace;FF52
    rohiragana;308D
    rokatakana;30ED
    rokatakanahalfwidth;FF9B
    roruathai;0E23
    rparen;24AD
    rrabengali;09DC
    rradeva;0931
    rragurmukhi;0A5C
    rreharabic;0691
    rrehfinalarabic;FB8D
    rrvocalicbengali;09E0
    rrvocalicdeva;0960
    rrvocalicgujarati;0AE0
    rrvocalicvowelsignbengali;09C4
    rrvocalicvowelsigndeva;0944
    rrvocalicvowelsigngujarati;0AC4
    rsuperior;F6F1
    rtblock;2590
    rturned;0279
    rturnedsuperior;02B4
    ruhiragana;308B
    rukatakana;30EB
    rukatakanahalfwidth;FF99
    rupeemarkbengali;09F2
    rupeesignbengali;09F3
    rupiah;F6DD
    ruthai;0E24
    rvocalicbengali;098B
    rvocalicdeva;090B
    rvocalicgujarati;0A8B
    rvocalicvowelsignbengali;09C3
    rvocalicvowelsigndeva;0943
    rvocalicvowelsigngujarati;0AC3
    s;0073
    sabengali;09B8
    sacute;015B
    sacutedotaccent;1E65
    sadarabic;0635
    sadeva;0938
    sadfinalarabic;FEBA
    sadinitialarabic;FEBB
    sadmedialarabic;FEBC
    sagujarati;0AB8
    sagurmukhi;0A38
    sahiragana;3055
    sakatakana;30B5
    sakatakanahalfwidth;FF7B
    sallallahoualayhewasallamarabic;FDFA
    samekh;05E1
    samekhdagesh;FB41
    samekhdageshhebrew;FB41
    samekhhebrew;05E1
    saraaathai;0E32
    saraaethai;0E41
    saraaimaimalaithai;0E44
    saraaimaimuanthai;0E43
    saraamthai;0E33
    saraathai;0E30
    saraethai;0E40
    saraiileftthai;F886
    saraiithai;0E35
    saraileftthai;F885
    saraithai;0E34
    saraothai;0E42
    saraueeleftthai;F888
    saraueethai;0E37
    saraueleftthai;F887
    sarauethai;0E36
    sarauthai;0E38
    sarauuthai;0E39
    sbopomofo;3119
    scaron;0161
    scarondotaccent;1E67
    scedilla;015F
    schwa;0259
    schwacyrillic;04D9
    schwadieresiscyrillic;04DB
    schwahook;025A
    scircle;24E2
    scircumflex;015D
    scommaaccent;0219
    sdotaccent;1E61
    sdotbelow;1E63
    sdotbelowdotaccent;1E69
    seagullbelowcmb;033C
    second;2033
    secondtonechinese;02CA
    section;00A7
    seenarabic;0633
    seenfinalarabic;FEB2
    seeninitialarabic;FEB3
    seenmedialarabic;FEB4
    segol;05B6
    segol13;05B6
    segol1f;05B6
    segol2c;05B6
    segolhebrew;05B6
    segolnarrowhebrew;05B6
    segolquarterhebrew;05B6
    segoltahebrew;0592
    segolwidehebrew;05B6
    seharmenian;057D
    sehiragana;305B
    sekatakana;30BB
    sekatakanahalfwidth;FF7E
    semicolon;003B
    semicolonarabic;061B
    semicolonmonospace;FF1B
    semicolonsmall;FE54
    semivoicedmarkkana;309C
    semivoicedmarkkanahalfwidth;FF9F
    sentisquare;3322
    sentosquare;3323
    seven;0037
    sevenarabic;0667
    sevenbengali;09ED
    sevencircle;2466
    sevencircleinversesansserif;2790
    sevendeva;096D
    seveneighths;215E
    sevengujarati;0AED
    sevengurmukhi;0A6D
    sevenhackarabic;0667
    sevenhangzhou;3027
    sevenideographicparen;3226
    seveninferior;2087
    sevenmonospace;FF17
    sevenoldstyle;F737
    sevenparen;247A
    sevenperiod;248E
    sevenpersian;06F7
    sevenroman;2176
    sevensuperior;2077
    seventeencircle;2470
    seventeenparen;2484
    seventeenperiod;2498
    seventhai;0E57
    sfthyphen;00AD
    shaarmenian;0577
    shabengali;09B6
    shacyrillic;0448
    shaddaarabic;0651
    shaddadammaarabic;FC61
    shaddadammatanarabic;FC5E
    shaddafathaarabic;FC60
    shaddafathatanarabic;0651 064B
    shaddakasraarabic;FC62
    shaddakasratanarabic;FC5F
    shade;2592
    shadedark;2593
    shadelight;2591
    shademedium;2592
    shadeva;0936
    shagujarati;0AB6
    shagurmukhi;0A36
    shalshelethebrew;0593
    shbopomofo;3115
    shchacyrillic;0449
    sheenarabic;0634
    sheenfinalarabic;FEB6
    sheeninitialarabic;FEB7
    sheenmedialarabic;FEB8
    sheicoptic;03E3
    sheqel;20AA
    sheqelhebrew;20AA
    sheva;05B0
    sheva115;05B0
    sheva15;05B0
    sheva22;05B0
    sheva2e;05B0
    shevahebrew;05B0
    shevanarrowhebrew;05B0
    shevaquarterhebrew;05B0
    shevawidehebrew;05B0
    shhacyrillic;04BB
    shimacoptic;03ED
    shin;05E9
    shindagesh;FB49
    shindageshhebrew;FB49
    shindageshshindot;FB2C
    shindageshshindothebrew;FB2C
    shindageshsindot;FB2D
    shindageshsindothebrew;FB2D
    shindothebrew;05C1
    shinhebrew;05E9
    shinshindot;FB2A
    shinshindothebrew;FB2A
    shinsindot;FB2B
    shinsindothebrew;FB2B
    shook;0282
    sigma;03C3
    sigma1;03C2
    sigmafinal;03C2
    sigmalunatesymbolgreek;03F2
    sihiragana;3057
    sikatakana;30B7
    sikatakanahalfwidth;FF7C
    siluqhebrew;05BD
    siluqlefthebrew;05BD
    similar;223C
    sindothebrew;05C2
    siosacirclekorean;3274
    siosaparenkorean;3214
    sioscieuckorean;317E
    sioscirclekorean;3266
    sioskiyeokkorean;317A
    sioskorean;3145
    siosnieunkorean;317B
    siosparenkorean;3206
    siospieupkorean;317D
    siostikeutkorean;317C
    six;0036
    sixarabic;0666
    sixbengali;09EC
    sixcircle;2465
    sixcircleinversesansserif;278F
    sixdeva;096C
    sixgujarati;0AEC
    sixgurmukhi;0A6C
    sixhackarabic;0666
    sixhangzhou;3026
    sixideographicparen;3225
    sixinferior;2086
    sixmonospace;FF16
    sixoldstyle;F736
    sixparen;2479
    sixperiod;248D
    sixpersian;06F6
    sixroman;2175
    sixsuperior;2076
    sixteencircle;246F
    sixteencurrencydenominatorbengali;09F9
    sixteenparen;2483
    sixteenperiod;2497
    sixthai;0E56
    slash;002F
    slashmonospace;FF0F
    slong;017F
    slongdotaccent;1E9B
    smileface;263A
    smonospace;FF53
    sofpasuqhebrew;05C3
    softhyphen;00AD
    softsigncyrillic;044C
    sohiragana;305D
    sokatakana;30BD
    sokatakanahalfwidth;FF7F
    soliduslongoverlaycmb;0338
    solidusshortoverlaycmb;0337
    sorusithai;0E29
    sosalathai;0E28
    sosothai;0E0B
    sosuathai;0E2A
    space;0020
    spacehackarabic;0020
    spade;2660
    spadesuitblack;2660
    spadesuitwhite;2664
    sparen;24AE
    squarebelowcmb;033B
    squarecc;33C4
    squarecm;339D
    squarediagonalcrosshatchfill;25A9
    squarehorizontalfill;25A4
    squarekg;338F
    squarekm;339E
    squarekmcapital;33CE
    squareln;33D1
    squarelog;33D2
    squaremg;338E
    squaremil;33D5
    squaremm;339C
    squaremsquared;33A1
    squareorthogonalcrosshatchfill;25A6
    squareupperlefttolowerrightfill;25A7
    squareupperrighttolowerleftfill;25A8
    squareverticalfill;25A5
    squarewhitewithsmallblack;25A3
    srsquare;33DB
    ssabengali;09B7
    ssadeva;0937
    ssagujarati;0AB7
    ssangcieuckorean;3149
    ssanghieuhkorean;3185
    ssangieungkorean;3180
    ssangkiyeokkorean;3132
    ssangnieunkorean;3165
    ssangpieupkorean;3143
    ssangsioskorean;3146
    ssangtikeutkorean;3138
    ssuperior;F6F2
    sterling;00A3
    sterlingmonospace;FFE1
    strokelongoverlaycmb;0336
    strokeshortoverlaycmb;0335
    subset;2282
    subsetnotequal;228A
    subsetorequal;2286
    succeeds;227B
    suchthat;220B
    suhiragana;3059
    sukatakana;30B9
    sukatakanahalfwidth;FF7D
    sukunarabic;0652
    summation;2211
    sun;263C
    superset;2283
    supersetnotequal;228B
    supersetorequal;2287
    svsquare;33DC
    syouwaerasquare;337C
    t;0074
    tabengali;09A4
    tackdown;22A4
    tackleft;22A3
    tadeva;0924
    tagujarati;0AA4
    tagurmukhi;0A24
    taharabic;0637
    tahfinalarabic;FEC2
    tahinitialarabic;FEC3
    tahiragana;305F
    tahmedialarabic;FEC4
    taisyouerasquare;337D
    takatakana;30BF
    takatakanahalfwidth;FF80
    tatweelarabic;0640
    tau;03C4
    tav;05EA
    tavdages;FB4A
    tavdagesh;FB4A
    tavdageshhebrew;FB4A
    tavhebrew;05EA
    tbar;0167
    tbopomofo;310A
    tcaron;0165
    tccurl;02A8
    tcedilla;0163
    tcheharabic;0686
    tchehfinalarabic;FB7B
    tchehinitialarabic;FB7C
    tchehmedialarabic;FB7D
    tchehmeeminitialarabic;FB7C FEE4
    tcircle;24E3
    tcircumflexbelow;1E71
    tcommaaccent;0163
    tdieresis;1E97
    tdotaccent;1E6B
    tdotbelow;1E6D
    tecyrillic;0442
    tedescendercyrillic;04AD
    teharabic;062A
    tehfinalarabic;FE96
    tehhahinitialarabic;FCA2
    tehhahisolatedarabic;FC0C
    tehinitialarabic;FE97
    tehiragana;3066
    tehjeeminitialarabic;FCA1
    tehjeemisolatedarabic;FC0B
    tehmarbutaarabic;0629
    tehmarbutafinalarabic;FE94
    tehmedialarabic;FE98
    tehmeeminitialarabic;FCA4
    tehmeemisolatedarabic;FC0E
    tehnoonfinalarabic;FC73
    tekatakana;30C6
    tekatakanahalfwidth;FF83
    telephone;2121
    telephoneblack;260E
    telishagedolahebrew;05A0
    telishaqetanahebrew;05A9
    tencircle;2469
    tenideographicparen;3229
    tenparen;247D
    tenperiod;2491
    tenroman;2179
    tesh;02A7
    tet;05D8
    tetdagesh;FB38
    tetdageshhebrew;FB38
    tethebrew;05D8
    tetsecyrillic;04B5
    tevirhebrew;059B
    tevirlefthebrew;059B
    thabengali;09A5
    thadeva;0925
    thagujarati;0AA5
    thagurmukhi;0A25
    thalarabic;0630
    thalfinalarabic;FEAC
    thanthakhatlowleftthai;F898
    thanthakhatlowrightthai;F897
    thanthakhatthai;0E4C
    thanthakhatupperleftthai;F896
    theharabic;062B
    thehfinalarabic;FE9A
    thehinitialarabic;FE9B
    thehmedialarabic;FE9C
    thereexists;2203
    therefore;2234
    theta;03B8
    theta1;03D1
    thetasymbolgreek;03D1
    thieuthacirclekorean;3279
    thieuthaparenkorean;3219
    thieuthcirclekorean;326B
    thieuthkorean;314C
    thieuthparenkorean;320B
    thirteencircle;246C
    thirteenparen;2480
    thirteenperiod;2494
    thonangmonthothai;0E11
    thook;01AD
    thophuthaothai;0E12
    thorn;00FE
    thothahanthai;0E17
    thothanthai;0E10
    thothongthai;0E18
    thothungthai;0E16
    thousandcyrillic;0482
    thousandsseparatorarabic;066C
    thousandsseparatorpersian;066C
    three;0033
    threearabic;0663
    threebengali;09E9
    threecircle;2462
    threecircleinversesansserif;278C
    threedeva;0969
    threeeighths;215C
    threegujarati;0AE9
    threegurmukhi;0A69
    threehackarabic;0663
    threehangzhou;3023
    threeideographicparen;3222
    threeinferior;2083
    threemonospace;FF13
    threenumeratorbengali;09F6
    threeoldstyle;F733
    threeparen;2476
    threeperiod;248A
    threepersian;06F3
    threequarters;00BE
    threequartersemdash;F6DE
    threeroman;2172
    threesuperior;00B3
    threethai;0E53
    thzsquare;3394
    tihiragana;3061
    tikatakana;30C1
    tikatakanahalfwidth;FF81
    tikeutacirclekorean;3270
    tikeutaparenkorean;3210
    tikeutcirclekorean;3262
    tikeutkorean;3137
    tikeutparenkorean;3202
    tilde;02DC
    tildebelowcmb;0330
    tildecmb;0303
    tildecomb;0303
    tildedoublecmb;0360
    tildeoperator;223C
    tildeoverlaycmb;0334
    tildeverticalcmb;033E
    timescircle;2297
    tipehahebrew;0596
    tipehalefthebrew;0596
    tippigurmukhi;0A70
    titlocyrilliccmb;0483
    tiwnarmenian;057F
    tlinebelow;1E6F
    tmonospace;FF54
    toarmenian;0569
    tohiragana;3068
    tokatakana;30C8
    tokatakanahalfwidth;FF84
    tonebarextrahighmod;02E5
    tonebarextralowmod;02E9
    tonebarhighmod;02E6
    tonebarlowmod;02E8
    tonebarmidmod;02E7
    tonefive;01BD
    tonesix;0185
    tonetwo;01A8
    tonos;0384
    tonsquare;3327
    topatakthai;0E0F
    tortoiseshellbracketleft;3014
    tortoiseshellbracketleftsmall;FE5D
    tortoiseshellbracketleftvertical;FE39
    tortoiseshellbracketright;3015
    tortoiseshellbracketrightsmall;FE5E
    tortoiseshellbracketrightvertical;FE3A
    totaothai;0E15
    tpalatalhook;01AB
    tparen;24AF
    trademark;2122
    trademarksans;F8EA
    trademarkserif;F6DB
    tretroflexhook;0288
    triagdn;25BC
    triaglf;25C4
    triagrt;25BA
    triagup;25B2
    ts;02A6
    tsadi;05E6
    tsadidagesh;FB46
    tsadidageshhebrew;FB46
    tsadihebrew;05E6
    tsecyrillic;0446
    tsere;05B5
    tsere12;05B5
    tsere1e;05B5
    tsere2b;05B5
    tserehebrew;05B5
    tserenarrowhebrew;05B5
    tserequarterhebrew;05B5
    tserewidehebrew;05B5
    tshecyrillic;045B
    tsuperior;F6F3
    ttabengali;099F
    ttadeva;091F
    ttagujarati;0A9F
    ttagurmukhi;0A1F
    tteharabic;0679
    ttehfinalarabic;FB67
    ttehinitialarabic;FB68
    ttehmedialarabic;FB69
    tthabengali;09A0
    tthadeva;0920
    tthagujarati;0AA0
    tthagurmukhi;0A20
    tturned;0287
    tuhiragana;3064
    tukatakana;30C4
    tukatakanahalfwidth;FF82
    tusmallhiragana;3063
    tusmallkatakana;30C3
    tusmallkatakanahalfwidth;FF6F
    twelvecircle;246B
    twelveparen;247F
    twelveperiod;2493
    twelveroman;217B
    twentycircle;2473
    twentyhangzhou;5344
    twentyparen;2487
    twentyperiod;249B
    two;0032
    twoarabic;0662
    twobengali;09E8
    twocircle;2461
    twocircleinversesansserif;278B
    twodeva;0968
    twodotenleader;2025
    twodotleader;2025
    twodotleadervertical;FE30
    twogujarati;0AE8
    twogurmukhi;0A68
    twohackarabic;0662
    twohangzhou;3022
    twoideographicparen;3221
    twoinferior;2082
    twomonospace;FF12
    twonumeratorbengali;09F5
    twooldstyle;F732
    twoparen;2475
    twoperiod;2489
    twopersian;06F2
    tworoman;2171
    twostroke;01BB
    twosuperior;00B2
    twothai;0E52
    twothirds;2154
    u;0075
    uacute;00FA
    ubar;0289
    ubengali;0989
    ubopomofo;3128
    ubreve;016D
    ucaron;01D4
    ucircle;24E4
    ucircumflex;00FB
    ucircumflexbelow;1E77
    ucyrillic;0443
    udattadeva;0951
    udblacute;0171
    udblgrave;0215
    udeva;0909
    udieresis;00FC
    udieresisacute;01D8
    udieresisbelow;1E73
    udieresiscaron;01DA
    udieresiscyrillic;04F1
    udieresisgrave;01DC
    udieresismacron;01D6
    udotbelow;1EE5
    ugrave;00F9
    ugujarati;0A89
    ugurmukhi;0A09
    uhiragana;3046
    uhookabove;1EE7
    uhorn;01B0
    uhornacute;1EE9
    uhorndotbelow;1EF1
    uhorngrave;1EEB
    uhornhookabove;1EED
    uhorntilde;1EEF
    uhungarumlaut;0171
    uhungarumlautcyrillic;04F3
    uinvertedbreve;0217
    ukatakana;30A6
    ukatakanahalfwidth;FF73
    ukcyrillic;0479
    ukorean;315C
    umacron;016B
    umacroncyrillic;04EF
    umacrondieresis;1E7B
    umatragurmukhi;0A41
    umonospace;FF55
    underscore;005F
    underscoredbl;2017
    underscoremonospace;FF3F
    underscorevertical;FE33
    underscorewavy;FE4F
    union;222A
    universal;2200
    uogonek;0173
    uparen;24B0
    upblock;2580
    upperdothebrew;05C4
    upsilon;03C5
    upsilondieresis;03CB
    upsilondieresistonos;03B0
    upsilonlatin;028A
    upsilontonos;03CD
    uptackbelowcmb;031D
    uptackmod;02D4
    uragurmukhi;0A73
    uring;016F
    ushortcyrillic;045E
    usmallhiragana;3045
    usmallkatakana;30A5
    usmallkatakanahalfwidth;FF69
    ustraightcyrillic;04AF
    ustraightstrokecyrillic;04B1
    utilde;0169
    utildeacute;1E79
    utildebelow;1E75
    uubengali;098A
    uudeva;090A
    uugujarati;0A8A
    uugurmukhi;0A0A
    uumatragurmukhi;0A42
    uuvowelsignbengali;09C2
    uuvowelsigndeva;0942
    uuvowelsigngujarati;0AC2
    uvowelsignbengali;09C1
    uvowelsigndeva;0941
    uvowelsigngujarati;0AC1
    v;0076
    vadeva;0935
    vagujarati;0AB5
    vagurmukhi;0A35
    vakatakana;30F7
    vav;05D5
    vavdagesh;FB35
    vavdagesh65;FB35
    vavdageshhebrew;FB35
    vavhebrew;05D5
    vavholam;FB4B
    vavholamhebrew;FB4B
    vavvavhebrew;05F0
    vavyodhebrew;05F1
    vcircle;24E5
    vdotbelow;1E7F
    vecyrillic;0432
    veharabic;06A4
    vehfinalarabic;FB6B
    vehinitialarabic;FB6C
    vehmedialarabic;FB6D
    vekatakana;30F9
    venus;2640
    verticalbar;007C
    verticallineabovecmb;030D
    verticallinebelowcmb;0329
    verticallinelowmod;02CC
    verticallinemod;02C8
    vewarmenian;057E
    vhook;028B
    vikatakana;30F8
    viramabengali;09CD
    viramadeva;094D
    viramagujarati;0ACD
    visargabengali;0983
    visargadeva;0903
    visargagujarati;0A83
    vmonospace;FF56
    voarmenian;0578
    voicediterationhiragana;309E
    voicediterationkatakana;30FE
    voicedmarkkana;309B
    voicedmarkkanahalfwidth;FF9E
    vokatakana;30FA
    vparen;24B1
    vtilde;1E7D
    vturned;028C
    vuhiragana;3094
    vukatakana;30F4
    w;0077
    wacute;1E83
    waekorean;3159
    wahiragana;308F
    wakatakana;30EF
    wakatakanahalfwidth;FF9C
    wakorean;3158
    wasmallhiragana;308E
    wasmallkatakana;30EE
    wattosquare;3357
    wavedash;301C
    wavyunderscorevertical;FE34
    wawarabic;0648
    wawfinalarabic;FEEE
    wawhamzaabovearabic;0624
    wawhamzaabovefinalarabic;FE86
    wbsquare;33DD
    wcircle;24E6
    wcircumflex;0175
    wdieresis;1E85
    wdotaccent;1E87
    wdotbelow;1E89
    wehiragana;3091
    weierstrass;2118
    wekatakana;30F1
    wekorean;315E
    weokorean;315D
    wgrave;1E81
    whitebullet;25E6
    whitecircle;25CB
    whitecircleinverse;25D9
    whitecornerbracketleft;300E
    whitecornerbracketleftvertical;FE43
    whitecornerbracketright;300F
    whitecornerbracketrightvertical;FE44
    whitediamond;25C7
    whitediamondcontainingblacksmalldiamond;25C8
    whitedownpointingsmalltriangle;25BF
    whitedownpointingtriangle;25BD
    whiteleftpointingsmalltriangle;25C3
    whiteleftpointingtriangle;25C1
    whitelenticularbracketleft;3016
    whitelenticularbracketright;3017
    whiterightpointingsmalltriangle;25B9
    whiterightpointingtriangle;25B7
    whitesmallsquare;25AB
    whitesmilingface;263A
    whitesquare;25A1
    whitestar;2606
    whitetelephone;260F
    whitetortoiseshellbracketleft;3018
    whitetortoiseshellbracketright;3019
    whiteuppointingsmalltriangle;25B5
    whiteuppointingtriangle;25B3
    wihiragana;3090
    wikatakana;30F0
    wikorean;315F
    wmonospace;FF57
    wohiragana;3092
    wokatakana;30F2
    wokatakanahalfwidth;FF66
    won;20A9
    wonmonospace;FFE6
    wowaenthai;0E27
    wparen;24B2
    wring;1E98
    wsuperior;02B7
    wturned;028D
    wynn;01BF
    x;0078
    xabovecmb;033D
    xbopomofo;3112
    xcircle;24E7
    xdieresis;1E8D
    xdotaccent;1E8B
    xeharmenian;056D
    xi;03BE
    xmonospace;FF58
    xparen;24B3
    xsuperior;02E3
    y;0079
    yaadosquare;334E
    yabengali;09AF
    yacute;00FD
    yadeva;092F
    yaekorean;3152
    yagujarati;0AAF
    yagurmukhi;0A2F
    yahiragana;3084
    yakatakana;30E4
    yakatakanahalfwidth;FF94
    yakorean;3151
    yamakkanthai;0E4E
    yasmallhiragana;3083
    yasmallkatakana;30E3
    yasmallkatakanahalfwidth;FF6C
    yatcyrillic;0463
    ycircle;24E8
    ycircumflex;0177
    ydieresis;00FF
    ydotaccent;1E8F
    ydotbelow;1EF5
    yeharabic;064A
    yehbarreearabic;06D2
    yehbarreefinalarabic;FBAF
    yehfinalarabic;FEF2
    yehhamzaabovearabic;0626
    yehhamzaabovefinalarabic;FE8A
    yehhamzaaboveinitialarabic;FE8B
    yehhamzaabovemedialarabic;FE8C
    yehinitialarabic;FEF3
    yehmedialarabic;FEF4
    yehmeeminitialarabic;FCDD
    yehmeemisolatedarabic;FC58
    yehnoonfinalarabic;FC94
    yehthreedotsbelowarabic;06D1
    yekorean;3156
    yen;00A5
    yenmonospace;FFE5
    yeokorean;3155
    yeorinhieuhkorean;3186
    yerahbenyomohebrew;05AA
    yerahbenyomolefthebrew;05AA
    yericyrillic;044B
    yerudieresiscyrillic;04F9
    yesieungkorean;3181
    yesieungpansioskorean;3183
    yesieungsioskorean;3182
    yetivhebrew;059A
    ygrave;1EF3
    yhook;01B4
    yhookabove;1EF7
    yiarmenian;0575
    yicyrillic;0457
    yikorean;3162
    yinyang;262F
    yiwnarmenian;0582
    ymonospace;FF59
    yod;05D9
    yoddagesh;FB39
    yoddageshhebrew;FB39
    yodhebrew;05D9
    yodyodhebrew;05F2
    yodyodpatahhebrew;FB1F
    yohiragana;3088
    yoikorean;3189
    yokatakana;30E8
    yokatakanahalfwidth;FF96
    yokorean;315B
    yosmallhiragana;3087
    yosmallkatakana;30E7
    yosmallkatakanahalfwidth;FF6E
    yotgreek;03F3
    yoyaekorean;3188
    yoyakorean;3187
    yoyakthai;0E22
    yoyingthai;0E0D
    yparen;24B4
    ypogegrammeni;037A
    ypogegrammenigreekcmb;0345
    yr;01A6
    yring;1E99
    ysuperior;02B8
    ytilde;1EF9
    yturned;028E
    yuhiragana;3086
    yuikorean;318C
    yukatakana;30E6
    yukatakanahalfwidth;FF95
    yukorean;3160
    yusbigcyrillic;046B
    yusbigiotifiedcyrillic;046D
    yuslittlecyrillic;0467
    yuslittleiotifiedcyrillic;0469
    yusmallhiragana;3085
    yusmallkatakana;30E5
    yusmallkatakanahalfwidth;FF6D
    yuyekorean;318B
    yuyeokorean;318A
    yyabengali;09DF
    yyadeva;095F
    z;007A
    zaarmenian;0566
    zacute;017A
    zadeva;095B
    zagurmukhi;0A5B
    zaharabic;0638
    zahfinalarabic;FEC6
    zahinitialarabic;FEC7
    zahiragana;3056
    zahmedialarabic;FEC8
    zainarabic;0632
    zainfinalarabic;FEB0
    zakatakana;30B6
    zaqefgadolhebrew;0595
    zaqefqatanhebrew;0594
    zarqahebrew;0598
    zayin;05D6
    zayindagesh;FB36
    zayindageshhebrew;FB36
    zayinhebrew;05D6
    zbopomofo;3117
    zcaron;017E
    zcircle;24E9
    zcircumflex;1E91
    zcurl;0291
    zdot;017C
    zdotaccent;017C
    zdotbelow;1E93
    zecyrillic;0437
    zedescendercyrillic;0499
    zedieresiscyrillic;04DF
    zehiragana;305C
    zekatakana;30BC
    zero;0030
    zeroarabic;0660
    zerobengali;09E6
    zerodeva;0966
    zerogujarati;0AE6
    zerogurmukhi;0A66
    zerohackarabic;0660
    zeroinferior;2080
    zeromonospace;FF10
    zerooldstyle;F730
    zeropersian;06F0
    zerosuperior;2070
    zerothai;0E50
    zerowidthjoiner;FEFF
    zerowidthnonjoiner;200C
    zerowidthspace;200B
    zeta;03B6
    zhbopomofo;3113
    zhearmenian;056A
    zhebrevecyrillic;04C2
    zhecyrillic;0436
    zhedescendercyrillic;0497
    zhedieresiscyrillic;04DD
    zihiragana;3058
    zikatakana;30B8
    zinorhebrew;05AE
    zlinebelow;1E95
    zmonospace;FF5A
    zohiragana;305E
    zokatakana;30BE
    zparen;24B5
    zretroflexhook;0290
    zstroke;01B6
    zuhiragana;305A
    zukatakana;30BA
    """
    
    
    # string table management
    #
    class StringTable:
      def __init__( self, name_list, master_table_name ):
        self.names        = name_list
        self.master_table = master_table_name
        self.indices      = {}
        index             = 0
    
        for name in name_list:
          self.indices[name] = index
          index += len( name ) + 1
    
        self.total = index
    
      def dump( self, file ):
        write = file.write
        write( "  static const char  " + self.master_table +
               "[" + repr( self.total ) + "] =\n" )
        write( "  {\n" )
    
        line = ""
        for name in self.names:
          line += "    '"
          line += string.join( ( re.findall( ".", name ) ), "','" )
          line += "', 0,\n"
    
        write( line + "  };\n\n\n" )
    
      def dump_sublist( self, file, table_name, macro_name, sublist ):
        write = file.write
        write( "#define " + macro_name + "  " + repr( len( sublist ) ) + "\n\n" )
    
        write( "  /* Values are offsets into the `" +
               self.master_table + "' table */\n\n" )
        write( "  static const short  " + table_name +
               "[" + macro_name + "] =\n" )
        write( "  {\n" )
    
        line  = "    "
        comma = ""
        col   = 0
    
        for name in sublist:
          line += comma
          line += "%4d" % self.indices[name]
          col  += 1
          comma = ","
          if col == 14:
            col   = 0
            comma = ",\n    "
    
        write( line + "\n  };\n\n\n" )
    
    
    # We now store the Adobe Glyph List in compressed form.  The list is put
    # into a data structure called `trie' (because it has a tree-like
    # appearance).  Consider, for example, that you want to store the
    # following name mapping:
    #
    #   A        => 1
    #   Aacute   => 6
    #   Abalon   => 2
    #   Abstract => 4
    #
    # It is possible to store the entries as follows.
    #
    #   A => 1
    #   |
    #   +-acute => 6
    #   |
    #   +-b
    #     |
    #     +-alon => 2
    #     |
    #     +-stract => 4
    #
    # We see that each node in the trie has:
    #
    # - one or more `letters'
    # - an optional value
    # - zero or more child nodes
    #
    # The first step is to call
    #
    #   root = StringNode( "", 0 )
    #   for word in map.values():
    #     root.add( word, map[word] )
    #
    # which creates a large trie where each node has only one children.
    #
    # Executing
    #
    #   root = root.optimize()
    #
    # optimizes the trie by merging the letters of successive nodes whenever
    # possible.
    #
    # Each node of the trie is stored as follows.
    #
    # - First the node's letter, according to the following scheme.  We
    #   use the fact that in the AGL no name contains character codes > 127.
    #
    #     name         bitsize     description
    #     ----------------------------------------------------------------
    #     notlast            1     Set to 1 if this is not the last letter
    #                              in the word.
    #     ascii              7     The letter's ASCII value.
    #
    # - The letter is followed by a children count and the value of the
    #   current key (if any).  Again we can do some optimization because all
    #   AGL entries are from the BMP; this means that 16 bits are sufficient
    #   to store its Unicode values.  Additionally, no node has more than
    #   127 children.
    #
    #     name         bitsize     description
    #     -----------------------------------------
    #     hasvalue           1     Set to 1 if a 16-bit Unicode value follows.
    #     num_children       7     Number of childrens.  Can be 0 only if
    #                              `hasvalue' is set to 1.
    #     value             16     Optional Unicode value.
    #
    # - A node is finished by a list of 16bit absolute offsets to the
    #   children, which must be sorted in increasing order of their first
    #   letter.
    #
    # For simplicity, all 16bit quantities are stored in big-endian order.
    #
    # The root node has first letter = 0, and no value.
    #
    class StringNode:
      def __init__( self, letter, value ):
        self.letter   = letter
        self.value    = value
        self.children = {}
    
      def __cmp__( self, other ):
        return ord( self.letter[0] ) - ord( other.letter[0] )
    
      def add( self, word, value ):
        if len( word ) == 0:
          self.value = value
          return
    
        letter = word[0]
        word   = word[1:]
    
        if self.children.has_key( letter ):
          child = self.children[letter]
        else:
          child = StringNode( letter, 0 )
          self.children[letter] = child
    
        child.add( word, value )
    
      def optimize( self ):
        # optimize all children first
        children      = self.children.values()
        self.children = {}
    
        for child in children:
          self.children[child.letter[0]] = child.optimize()
    
        # don't optimize if there's a value,
        # if we don't have any child or if we
        # have more than one child
        if ( self.value != 0 ) or ( not children ) or len( children ) > 1:
          return self
    
        child = children[0]
    
        self.letter  += child.letter
        self.value    = child.value
        self.children = child.children
    
        return self
    
      def dump_debug( self, write, margin ):
        # this is used during debugging
        line = margin + "+-"
        if len( self.letter ) == 0:
          line += "<NOLETTER>"
        else:
          line += self.letter
    
        if self.value:
          line += " => " + repr( self.value )
    
        write( line + "\n" )
    
        if self.children:
          margin += "| "
          for child in self.children.values():
            child.dump_debug( write, margin )
    
      def locate( self, index ):
        self.index = index
        if len( self.letter ) > 0:
          index += len( self.letter ) + 1
        else:
          index += 2
    
        if self.value != 0:
          index += 2
    
        children = self.children.values()
        children.sort()
    
        index += 2 * len( children )
        for child in children:
          index = child.locate( index )
    
        return index
    
      def store( self, storage ):
        # write the letters
        l = len( self.letter )
        if l == 0:
          storage += struct.pack( "B", 0 )
        else:
          for n in range( l ):
            val = ord( self.letter[n] )
            if n < l - 1:
              val += 128
            storage += struct.pack( "B", val )
    
        # write the count
        children = self.children.values()
        children.sort()
    
        count = len( children )
    
        if self.value != 0:
          storage += struct.pack( "!BH", count + 128, self.value )
        else:
          storage += struct.pack( "B", count )
    
        for child in children:
          storage += struct.pack( "!H", child.index )
    
        for child in children:
          storage = child.store( storage )
    
        return storage
    
    
    def adobe_glyph_values():
      """return the list of glyph names and their unicode values"""
    
      lines  = string.split( adobe_glyph_list, '\n' )
      glyphs = []
      values = []
    
      for line in lines:
        if line:
          fields = string.split( line, ';' )
    #     print fields[1] + ' - ' + fields[0]
          subfields = string.split( fields[1], ' ' )
          if len( subfields ) == 1:
            glyphs.append( fields[0] )
            values.append( fields[1] )
    
      return glyphs, values
    
    
    def filter_glyph_names( alist, filter ):
      """filter `alist' by taking _out_ all glyph names that are in `filter'"""
    
      count  = 0
      extras = []
    
      for name in alist:
        try:
          filtered_index = filter.index( name )
        except:
          extras.append( name )
    
      return extras
    
    
    def dump_encoding( file, encoding_name, encoding_list ):
      """dump a given encoding"""
    
      write = file.write
      write( "  /* the following are indices into the SID name table */\n" )
      write( "  static const unsigned short  " + encoding_name +
             "[" + repr( len( encoding_list ) ) + "] =\n" )
      write( "  {\n" )
    
      line  = "    "
      comma = ""
      col   = 0
      for value in encoding_list:
        line += comma
        line += "%3d" % value
        comma = ","
        col  += 1
        if col == 16:
          col = 0
          comma = ",\n    "
    
      write( line + "\n  };\n\n\n" )
    
    
    def dump_array( the_array, write, array_name ):
      """dumps a given encoding"""
    
      write( "  static const unsigned char  " + array_name +
             "[" + repr( len( the_array ) ) + "] =\n" )
      write( "  {\n" )
    
      line  = ""
      comma = "    "
      col   = 0
    
      for value in the_array:
        line += comma
        line += "%3d" % ord( value )
        comma = ","
        col  += 1
    
        if col == 16:
          col   = 0
          comma = ",\n    "
    
        if len( line ) > 1024:
          write( line )
          line = ""
    
      write( line + "\n  };\n\n\n" )
    
    
    def main():
      """main program body"""
    
      if len( sys.argv ) != 2:
        print __doc__ % sys.argv[0]
        sys.exit( 1 )
    
      file  = open( sys.argv[1], "w\n" )
      write = file.write
    
      count_sid = len( sid_standard_names )
    
      # `mac_extras' contains the list of glyph names in the Macintosh standard
      # encoding which are not in the SID Standard Names.
      #
      mac_extras = filter_glyph_names( mac_standard_names, sid_standard_names )
    
      # `base_list' contains the names of our final glyph names table.
      # It consists of the `mac_extras' glyph names, followed by the SID
      # standard names.
      #
      mac_extras_count = len( mac_extras )
      base_list        = mac_extras + sid_standard_names
    
      write( "/***************************************************************************/\n" )
      write( "/*                                                                         */\n" )
    
      write( "/*  %-71s*/\n" % os.path.basename( sys.argv[1] ) )
    
      write( "/*                                                                         */\n" )
      write( "/*    PostScript glyph names.                                              */\n" )
      write( "/*                                                                         */\n" )
      write( "/*  Copyright 2005 by                                                      */\n" )
      write( "/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */\n" )
      write( "/*                                                                         */\n" )
      write( "/*  This file is part of the FreeType project, and may only be used,       */\n" )
      write( "/*  modified, and distributed under the terms of the FreeType project      */\n" )
      write( "/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */\n" )
      write( "/*  this file you indicate that you have read the license and              */\n" )
      write( "/*  understand and accept it fully.                                        */\n" )
      write( "/*                                                                         */\n" )
      write( "/***************************************************************************/\n" )
      write( "\n" )
      write( "\n" )
      write( "  /* This file has been generated automatically -- do not edit! */\n" )
      write( "\n" )
      write( "\n" )
    
      # dump final glyph list (mac extras + sid standard names)
      #
      st = StringTable( base_list, "ft_standard_glyph_names" )
    
      st.dump( file )
      st.dump_sublist( file, "ft_mac_names",
                       "FT_NUM_MAC_NAMES", mac_standard_names )
      st.dump_sublist( file, "ft_sid_names",
                       "FT_NUM_SID_NAMES", sid_standard_names )
    
      dump_encoding( file, "t1_standard_encoding", t1_standard_encoding )
      dump_encoding( file, "t1_expert_encoding", t1_expert_encoding )
    
      # dump the AGL in its compressed form
      #
      agl_glyphs, agl_values = adobe_glyph_values()
      dict = StringNode( "", 0 )
    
      for g in range( len( agl_glyphs ) ):
        dict.add( agl_glyphs[g], eval( "0x" + agl_values[g] ) )
    
      dict       = dict.optimize()
      dict_len   = dict.locate( 0 )
      dict_array = dict.store( "" )
    
      write( """\
      /*
       *  This table is a compressed version of the Adobe Glyph List (AGL),
       *  optimized for efficient searching.  It has been generated by the
       *  `glnames.py' python script located in the `src/tools' directory.
       *
       *  The lookup function to get the Unicode value for a given string
       *  is defined below the table.
       */
    """ )
    
      dump_array( dict_array, write, "ft_adobe_glyph_list" )
    
      # write the lookup routine now
      #
      write( """\
      /*
       *  This function searches the compressed table efficiently.
       */
      static unsigned long
      ft_get_adobe_glyph_index( const char*  name,
                                const char*  limit )
      {
        int                   c = 0;
        int                   count, min, max;
        const unsigned char*  p = ft_adobe_glyph_list;
    
    
        if ( name == 0 || name >= limit )
          goto NotFound;
    
        c     = *name++;
        count = p[1];
        p    += 2;
    
        min = 0;
        max = count;
    
        while ( min < max )
        {
          int                   mid = ( min + max ) >> 1;
          const unsigned char*  q   = p + mid * 2;
          int                   c2;
    
    
          q = ft_adobe_glyph_list + ( ( (int)q[0] << 8 ) | q[1] );
    
          c2 = q[0] & 127;
          if ( c2 == c )
          {
            p = q;
            goto Found;
          }
          if ( c2 < c )
            min = mid + 1;
          else
            max = mid;
        }
        goto NotFound;
    
      Found:
        for (;;)
        {
          /* assert (*p & 127) == c */
    
          if ( name >= limit )
          {
            if ( (p[0] & 128) == 0 &&
                 (p[1] & 128) != 0 )
              return (unsigned long)( ( (int)p[2] << 8 ) | p[3] );
    
            goto NotFound;
          }
          c = *name++;
          if ( p[0] & 128 )
          {
            p++;
            if ( c != (p[0] & 127) )
              goto NotFound;
    
            continue;
          }
    
          p++;
          count = p[0] & 127;
          if ( p[0] & 128 )
            p += 2;
    
          p++;
    
          for ( ; count > 0; count--, p += 2 )
          {
            int                   offset = ( (int)p[0] << 8 ) | p[1];
            const unsigned char*  q      = ft_adobe_glyph_list + offset;
    
            if ( c == ( q[0] & 127 ) )
            {
              p = q;
              goto NextIter;
            }
          }
          goto NotFound;
    
        NextIter:
          ;
        }
    
      NotFound:
        return 0;
      }
    
    """ )
    
      if 0:  # generate unit test, or don't
        #
        # now write the unit test to check that everything works OK
        #
        write( "#ifdef TEST\n\n" )
    
        write( "static const char* const  the_names[] = {\n" )
        for name in agl_glyphs:
          write( '  "' + name + '",\n' )
        write( "  0\n};\n" )
    
        write( "static const unsigned long  the_values[] = {\n" )
        for val in agl_values:
          write( '  0x' + val + ',\n' )
        write( "  0\n};\n" )
    
        write( """
    #include <stdlib.h>
    #include <stdio.h>
    
      int
      main( void )
      {
        int                   result = 0;
        const char* const*    names  = the_names;
        const unsigned long*  values = the_values;
    
    
        for ( ; *names; names++, values++ )
        {
          const char*    name      = *names;
          unsigned long  reference = *values;
          unsigned long  value;
    
    
          value = ft_get_adobe_glyph_index( name, name + strlen( name ) );
          if ( value != reference )
          {
            result = 1;
            fprintf( stderr, "name '%s' => %04x instead of %04x\\n",
                             name, value, reference );
          }
        }
    
        return result;
      }
    """ )
    
        write( "#endif /* TEST */\n" )
    
      write("\n/* END */\n")
    
    
    # Now run the main routine
    #
    main()
    
    
    # END