//========================================================================
//
// FontEncodingTables.cc
//
// Copyright 2001-2003 Glyph & Cog, LLC
//
//========================================================================

#include <config.h>
#include <cstdlib>
#include "FontEncodingTables.h"

const char *macRomanEncoding[256] = { nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      "space",
                                      "exclam",
                                      "quotedbl",
                                      "numbersign",
                                      "dollar",
                                      "percent",
                                      "ampersand",
                                      "quotesingle",
                                      "parenleft",
                                      "parenright",
                                      "asterisk",
                                      "plus",
                                      "comma",
                                      "hyphen",
                                      "period",
                                      "slash",
                                      "zero",
                                      "one",
                                      "two",
                                      "three",
                                      "four",
                                      "five",
                                      "six",
                                      "seven",
                                      "eight",
                                      "nine",
                                      "colon",
                                      "semicolon",
                                      "less",
                                      "equal",
                                      "greater",
                                      "question",
                                      "at",
                                      "A",
                                      "B",
                                      "C",
                                      "D",
                                      "E",
                                      "F",
                                      "G",
                                      "H",
                                      "I",
                                      "J",
                                      "K",
                                      "L",
                                      "M",
                                      "N",
                                      "O",
                                      "P",
                                      "Q",
                                      "R",
                                      "S",
                                      "T",
                                      "U",
                                      "V",
                                      "W",
                                      "X",
                                      "Y",
                                      "Z",
                                      "bracketleft",
                                      "backslash",
                                      "bracketright",
                                      "asciicircum",
                                      "underscore",
                                      "grave",
                                      "a",
                                      "b",
                                      "c",
                                      "d",
                                      "e",
                                      "f",
                                      "g",
                                      "h",
                                      "i",
                                      "j",
                                      "k",
                                      "l",
                                      "m",
                                      "n",
                                      "o",
                                      "p",
                                      "q",
                                      "r",
                                      "s",
                                      "t",
                                      "u",
                                      "v",
                                      "w",
                                      "x",
                                      "y",
                                      "z",
                                      "braceleft",
                                      "bar",
                                      "braceright",
                                      "asciitilde",
                                      nullptr,
                                      "Adieresis",
                                      "Aring",
                                      "Ccedilla",
                                      "Eacute",
                                      "Ntilde",
                                      "Odieresis",
                                      "Udieresis",
                                      "aacute",
                                      "agrave",
                                      "acircumflex",
                                      "adieresis",
                                      "atilde",
                                      "aring",
                                      "ccedilla",
                                      "eacute",
                                      "egrave",
                                      "ecircumflex",
                                      "edieresis",
                                      "iacute",
                                      "igrave",
                                      "icircumflex",
                                      "idieresis",
                                      "ntilde",
                                      "oacute",
                                      "ograve",
                                      "ocircumflex",
                                      "odieresis",
                                      "otilde",
                                      "uacute",
                                      "ugrave",
                                      "ucircumflex",
                                      "udieresis",
                                      "dagger",
                                      "degree",
                                      "cent",
                                      "sterling",
                                      "section",
                                      "bullet",
                                      "paragraph",
                                      "germandbls",
                                      "registered",
                                      "copyright",
                                      "trademark",
                                      "acute",
                                      "dieresis",
                                      "notequal",
                                      "AE",
                                      "Oslash",
                                      "infinity",
                                      "plusminus",
                                      "lessequal",
                                      "greaterequal",
                                      "yen",
                                      "mu",
                                      "partialdiff",
                                      "summation",
                                      "product",
                                      "pi",
                                      "integral",
                                      "ordfeminine",
                                      "ordmasculine",
                                      "Omega",
                                      "ae",
                                      "oslash",
                                      "questiondown",
                                      "exclamdown",
                                      "logicalnot",
                                      "radical",
                                      "florin",
                                      "approxequal",
                                      "Delta",
                                      "guillemotleft",
                                      "guillemotright",
                                      "ellipsis",
                                      "space",
                                      "Agrave",
                                      "Atilde",
                                      "Otilde",
                                      "OE",
                                      "oe",
                                      "endash",
                                      "emdash",
                                      "quotedblleft",
                                      "quotedblright",
                                      "quoteleft",
                                      "quoteright",
                                      "divide",
                                      "lozenge",
                                      "ydieresis",
                                      "Ydieresis",
                                      "fraction",
                                      "currency",
                                      "guilsinglleft",
                                      "guilsinglright",
                                      "fi",
                                      "fl",
                                      "daggerdbl",
                                      "periodcentered",
                                      "quotesinglbase",
                                      "quotedblbase",
                                      "perthousand",
                                      "Acircumflex",
                                      "Ecircumflex",
                                      "Aacute",
                                      "Edieresis",
                                      "Egrave",
                                      "Iacute",
                                      "Icircumflex",
                                      "Idieresis",
                                      "Igrave",
                                      "Oacute",
                                      "Ocircumflex",
                                      "apple",
                                      "Ograve",
                                      "Uacute",
                                      "Ucircumflex",
                                      "Ugrave",
                                      "dotlessi",
                                      "circumflex",
                                      "tilde",
                                      "macron",
                                      "breve",
                                      "dotaccent",
                                      "ring",
                                      "cedilla",
                                      "hungarumlaut",
                                      "ogonek",
                                      "caron" };

const char *macExpertEncoding[256] = { nullptr,
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       "space",
                                       "exclamsmall",
                                       "Hungarumlautsmall",
                                       "centoldstyle",
                                       "dollaroldstyle",
                                       "dollarsuperior",
                                       "ampersandsmall",
                                       "Acutesmall",
                                       "parenleftsuperior",
                                       "parenrightsuperior",
                                       "twodotenleader",
                                       "onedotenleader",
                                       "comma",
                                       "hyphen",
                                       "period",
                                       "fraction",
                                       "zerooldstyle",
                                       "oneoldstyle",
                                       "twooldstyle",
                                       "threeoldstyle",
                                       "fouroldstyle",
                                       "fiveoldstyle",
                                       "sixoldstyle",
                                       "sevenoldstyle",
                                       "eightoldstyle",
                                       "nineoldstyle",
                                       "colon",
                                       "semicolon",
                                       nullptr,
                                       "threequartersemdash",
                                       nullptr,
                                       "questionsmall",
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       "Ethsmall",
                                       nullptr,
                                       nullptr,
                                       "onequarter",
                                       "onehalf",
                                       "threequarters",
                                       "oneeighth",
                                       "threeeighths",
                                       "fiveeighths",
                                       "seveneighths",
                                       "onethird",
                                       "twothirds",
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       "ff",
                                       "fi",
                                       "fl",
                                       "ffi",
                                       "ffl",
                                       "parenleftinferior",
                                       nullptr,
                                       "parenrightinferior",
                                       "Circumflexsmall",
                                       "hypheninferior",
                                       "Gravesmall",
                                       "Asmall",
                                       "Bsmall",
                                       "Csmall",
                                       "Dsmall",
                                       "Esmall",
                                       "Fsmall",
                                       "Gsmall",
                                       "Hsmall",
                                       "Ismall",
                                       "Jsmall",
                                       "Ksmall",
                                       "Lsmall",
                                       "Msmall",
                                       "Nsmall",
                                       "Osmall",
                                       "Psmall",
                                       "Qsmall",
                                       "Rsmall",
                                       "Ssmall",
                                       "Tsmall",
                                       "Usmall",
                                       "Vsmall",
                                       "Wsmall",
                                       "Xsmall",
                                       "Ysmall",
                                       "Zsmall",
                                       "colonmonetary",
                                       "onefitted",
                                       "rupiah",
                                       "Tildesmall",
                                       nullptr,
                                       nullptr,
                                       "asuperior",
                                       "centsuperior",
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       "Aacutesmall",
                                       "Agravesmall",
                                       "Acircumflexsmall",
                                       "Adieresissmall",
                                       "Atildesmall",
                                       "Aringsmall",
                                       "Ccedillasmall",
                                       "Eacutesmall",
                                       "Egravesmall",
                                       "Ecircumflexsmall",
                                       "Edieresissmall",
                                       "Iacutesmall",
                                       "Igravesmall",
                                       "Icircumflexsmall",
                                       "Idieresissmall",
                                       "Ntildesmall",
                                       "Oacutesmall",
                                       "Ogravesmall",
                                       "Ocircumflexsmall",
                                       "Odieresissmall",
                                       "Otildesmall",
                                       "Uacutesmall",
                                       "Ugravesmall",
                                       "Ucircumflexsmall",
                                       "Udieresissmall",
                                       nullptr,
                                       "eightsuperior",
                                       "fourinferior",
                                       "threeinferior",
                                       "sixinferior",
                                       "eightinferior",
                                       "seveninferior",
                                       "Scaronsmall",
                                       nullptr,
                                       "centinferior",
                                       "twoinferior",
                                       nullptr,
                                       "Dieresissmall",
                                       nullptr,
                                       "Caronsmall",
                                       "osuperior",
                                       "fiveinferior",
                                       nullptr,
                                       "commainferior",
                                       "periodinferior",
                                       "Yacutesmall",
                                       nullptr,
                                       "dollarinferior",
                                       nullptr,
                                       nullptr,
                                       "Thornsmall",
                                       nullptr,
                                       "nineinferior",
                                       "zeroinferior",
                                       "Zcaronsmall",
                                       "AEsmall",
                                       "Oslashsmall",
                                       "questiondownsmall",
                                       "oneinferior",
                                       "Lslashsmall",
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       "Cedillasmall",
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       "OEsmall",
                                       "figuredash",
                                       "hyphensuperior",
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       "exclamdownsmall",
                                       nullptr,
                                       "Ydieresissmall",
                                       nullptr,
                                       "onesuperior",
                                       "twosuperior",
                                       "threesuperior",
                                       "foursuperior",
                                       "fivesuperior",
                                       "sixsuperior",
                                       "sevensuperior",
                                       "ninesuperior",
                                       "zerosuperior",
                                       nullptr,
                                       "esuperior",
                                       "rsuperior",
                                       "tsuperior",
                                       nullptr,
                                       nullptr,
                                       "isuperior",
                                       "ssuperior",
                                       "dsuperior",
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       "lsuperior",
                                       "Ogoneksmall",
                                       "Brevesmall",
                                       "Macronsmall",
                                       "bsuperior",
                                       "nsuperior",
                                       "msuperior",
                                       "commasuperior",
                                       "periodsuperior",
                                       "Dotaccentsmall",
                                       "Ringsmall",
                                       nullptr,
                                       nullptr,
                                       nullptr,
                                       nullptr };

const char *winAnsiEncoding[256] = { nullptr,
                                     nullptr,
                                     nullptr,
                                     nullptr,
                                     nullptr,
                                     nullptr,
                                     nullptr,
                                     nullptr,
                                     nullptr,
                                     nullptr,
                                     nullptr,
                                     nullptr,
                                     nullptr,
                                     nullptr,
                                     nullptr,
                                     nullptr,
                                     nullptr,
                                     nullptr,
                                     nullptr,
                                     nullptr,
                                     nullptr,
                                     nullptr,
                                     nullptr,
                                     nullptr,
                                     nullptr,
                                     nullptr,
                                     nullptr,
                                     nullptr,
                                     nullptr,
                                     nullptr,
                                     nullptr,
                                     nullptr,
                                     "space",
                                     "exclam",
                                     "quotedbl",
                                     "numbersign",
                                     "dollar",
                                     "percent",
                                     "ampersand",
                                     "quotesingle",
                                     "parenleft",
                                     "parenright",
                                     "asterisk",
                                     "plus",
                                     "comma",
                                     "hyphen",
                                     "period",
                                     "slash",
                                     "zero",
                                     "one",
                                     "two",
                                     "three",
                                     "four",
                                     "five",
                                     "six",
                                     "seven",
                                     "eight",
                                     "nine",
                                     "colon",
                                     "semicolon",
                                     "less",
                                     "equal",
                                     "greater",
                                     "question",
                                     "at",
                                     "A",
                                     "B",
                                     "C",
                                     "D",
                                     "E",
                                     "F",
                                     "G",
                                     "H",
                                     "I",
                                     "J",
                                     "K",
                                     "L",
                                     "M",
                                     "N",
                                     "O",
                                     "P",
                                     "Q",
                                     "R",
                                     "S",
                                     "T",
                                     "U",
                                     "V",
                                     "W",
                                     "X",
                                     "Y",
                                     "Z",
                                     "bracketleft",
                                     "backslash",
                                     "bracketright",
                                     "asciicircum",
                                     "underscore",
                                     "grave",
                                     "a",
                                     "b",
                                     "c",
                                     "d",
                                     "e",
                                     "f",
                                     "g",
                                     "h",
                                     "i",
                                     "j",
                                     "k",
                                     "l",
                                     "m",
                                     "n",
                                     "o",
                                     "p",
                                     "q",
                                     "r",
                                     "s",
                                     "t",
                                     "u",
                                     "v",
                                     "w",
                                     "x",
                                     "y",
                                     "z",
                                     "braceleft",
                                     "bar",
                                     "braceright",
                                     "asciitilde",
                                     "bullet",
                                     "Euro",
                                     "bullet",
                                     "quotesinglbase",
                                     "florin",
                                     "quotedblbase",
                                     "ellipsis",
                                     "dagger",
                                     "daggerdbl",
                                     "circumflex",
                                     "perthousand",
                                     "Scaron",
                                     "guilsinglleft",
                                     "OE",
                                     "bullet",
                                     "Zcaron",
                                     "bullet",
                                     "bullet",
                                     "quoteleft",
                                     "quoteright",
                                     "quotedblleft",
                                     "quotedblright",
                                     "bullet",
                                     "endash",
                                     "emdash",
                                     "tilde",
                                     "trademark",
                                     "scaron",
                                     "guilsinglright",
                                     "oe",
                                     "bullet",
                                     "zcaron",
                                     "Ydieresis",
                                     "space",
                                     "exclamdown",
                                     "cent",
                                     "sterling",
                                     "currency",
                                     "yen",
                                     "brokenbar",
                                     "section",
                                     "dieresis",
                                     "copyright",
                                     "ordfeminine",
                                     "guillemotleft",
                                     "logicalnot",
                                     "hyphen",
                                     "registered",
                                     "macron",
                                     "degree",
                                     "plusminus",
                                     "twosuperior",
                                     "threesuperior",
                                     "acute",
                                     "mu",
                                     "paragraph",
                                     "periodcentered",
                                     "cedilla",
                                     "onesuperior",
                                     "ordmasculine",
                                     "guillemotright",
                                     "onequarter",
                                     "onehalf",
                                     "threequarters",
                                     "questiondown",
                                     "Agrave",
                                     "Aacute",
                                     "Acircumflex",
                                     "Atilde",
                                     "Adieresis",
                                     "Aring",
                                     "AE",
                                     "Ccedilla",
                                     "Egrave",
                                     "Eacute",
                                     "Ecircumflex",
                                     "Edieresis",
                                     "Igrave",
                                     "Iacute",
                                     "Icircumflex",
                                     "Idieresis",
                                     "Eth",
                                     "Ntilde",
                                     "Ograve",
                                     "Oacute",
                                     "Ocircumflex",
                                     "Otilde",
                                     "Odieresis",
                                     "multiply",
                                     "Oslash",
                                     "Ugrave",
                                     "Uacute",
                                     "Ucircumflex",
                                     "Udieresis",
                                     "Yacute",
                                     "Thorn",
                                     "germandbls",
                                     "agrave",
                                     "aacute",
                                     "acircumflex",
                                     "atilde",
                                     "adieresis",
                                     "aring",
                                     "ae",
                                     "ccedilla",
                                     "egrave",
                                     "eacute",
                                     "ecircumflex",
                                     "edieresis",
                                     "igrave",
                                     "iacute",
                                     "icircumflex",
                                     "idieresis",
                                     "eth",
                                     "ntilde",
                                     "ograve",
                                     "oacute",
                                     "ocircumflex",
                                     "otilde",
                                     "odieresis",
                                     "divide",
                                     "oslash",
                                     "ugrave",
                                     "uacute",
                                     "ucircumflex",
                                     "udieresis",
                                     "yacute",
                                     "thorn",
                                     "ydieresis" };

const char *standardEncoding[256] = { nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      "space",
                                      "exclam",
                                      "quotedbl",
                                      "numbersign",
                                      "dollar",
                                      "percent",
                                      "ampersand",
                                      "quoteright",
                                      "parenleft",
                                      "parenright",
                                      "asterisk",
                                      "plus",
                                      "comma",
                                      "hyphen",
                                      "period",
                                      "slash",
                                      "zero",
                                      "one",
                                      "two",
                                      "three",
                                      "four",
                                      "five",
                                      "six",
                                      "seven",
                                      "eight",
                                      "nine",
                                      "colon",
                                      "semicolon",
                                      "less",
                                      "equal",
                                      "greater",
                                      "question",
                                      "at",
                                      "A",
                                      "B",
                                      "C",
                                      "D",
                                      "E",
                                      "F",
                                      "G",
                                      "H",
                                      "I",
                                      "J",
                                      "K",
                                      "L",
                                      "M",
                                      "N",
                                      "O",
                                      "P",
                                      "Q",
                                      "R",
                                      "S",
                                      "T",
                                      "U",
                                      "V",
                                      "W",
                                      "X",
                                      "Y",
                                      "Z",
                                      "bracketleft",
                                      "backslash",
                                      "bracketright",
                                      "asciicircum",
                                      "underscore",
                                      "quoteleft",
                                      "a",
                                      "b",
                                      "c",
                                      "d",
                                      "e",
                                      "f",
                                      "g",
                                      "h",
                                      "i",
                                      "j",
                                      "k",
                                      "l",
                                      "m",
                                      "n",
                                      "o",
                                      "p",
                                      "q",
                                      "r",
                                      "s",
                                      "t",
                                      "u",
                                      "v",
                                      "w",
                                      "x",
                                      "y",
                                      "z",
                                      "braceleft",
                                      "bar",
                                      "braceright",
                                      "asciitilde",
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      "exclamdown",
                                      "cent",
                                      "sterling",
                                      "fraction",
                                      "yen",
                                      "florin",
                                      "section",
                                      "currency",
                                      "quotesingle",
                                      "quotedblleft",
                                      "guillemotleft",
                                      "guilsinglleft",
                                      "guilsinglright",
                                      "fi",
                                      "fl",
                                      nullptr,
                                      "endash",
                                      "dagger",
                                      "daggerdbl",
                                      "periodcentered",
                                      nullptr,
                                      "paragraph",
                                      "bullet",
                                      "quotesinglbase",
                                      "quotedblbase",
                                      "quotedblright",
                                      "guillemotright",
                                      "ellipsis",
                                      "perthousand",
                                      nullptr,
                                      "questiondown",
                                      nullptr,
                                      "grave",
                                      "acute",
                                      "circumflex",
                                      "tilde",
                                      "macron",
                                      "breve",
                                      "dotaccent",
                                      "dieresis",
                                      nullptr,
                                      "ring",
                                      "cedilla",
                                      nullptr,
                                      "hungarumlaut",
                                      "ogonek",
                                      "caron",
                                      "emdash",
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      "AE",
                                      nullptr,
                                      "ordfeminine",
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      "Lslash",
                                      "Oslash",
                                      "OE",
                                      "ordmasculine",
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      "ae",
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      "dotlessi",
                                      nullptr,
                                      nullptr,
                                      "lslash",
                                      "oslash",
                                      "oe",
                                      "germandbls",
                                      nullptr,
                                      nullptr,
                                      nullptr,
                                      nullptr };

const char *expertEncoding[256] = { nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    "space",
                                    "exclamsmall",
                                    "Hungarumlautsmall",
                                    nullptr,
                                    "dollaroldstyle",
                                    "dollarsuperior",
                                    "ampersandsmall",
                                    "Acutesmall",
                                    "parenleftsuperior",
                                    "parenrightsuperior",
                                    "twodotenleader",
                                    "onedotenleader",
                                    "comma",
                                    "hyphen",
                                    "period",
                                    "fraction",
                                    "zerooldstyle",
                                    "oneoldstyle",
                                    "twooldstyle",
                                    "threeoldstyle",
                                    "fouroldstyle",
                                    "fiveoldstyle",
                                    "sixoldstyle",
                                    "sevenoldstyle",
                                    "eightoldstyle",
                                    "nineoldstyle",
                                    "colon",
                                    "semicolon",
                                    "commasuperior",
                                    "threequartersemdash",
                                    "periodsuperior",
                                    "questionsmall",
                                    nullptr,
                                    "asuperior",
                                    "bsuperior",
                                    "centsuperior",
                                    "dsuperior",
                                    "esuperior",
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    "isuperior",
                                    nullptr,
                                    nullptr,
                                    "lsuperior",
                                    "msuperior",
                                    "nsuperior",
                                    "osuperior",
                                    nullptr,
                                    nullptr,
                                    "rsuperior",
                                    "ssuperior",
                                    "tsuperior",
                                    nullptr,
                                    "ff",
                                    "fi",
                                    "fl",
                                    "ffi",
                                    "ffl",
                                    "parenleftinferior",
                                    nullptr,
                                    "parenrightinferior",
                                    "Circumflexsmall",
                                    "hyphensuperior",
                                    "Gravesmall",
                                    "Asmall",
                                    "Bsmall",
                                    "Csmall",
                                    "Dsmall",
                                    "Esmall",
                                    "Fsmall",
                                    "Gsmall",
                                    "Hsmall",
                                    "Ismall",
                                    "Jsmall",
                                    "Ksmall",
                                    "Lsmall",
                                    "Msmall",
                                    "Nsmall",
                                    "Osmall",
                                    "Psmall",
                                    "Qsmall",
                                    "Rsmall",
                                    "Ssmall",
                                    "Tsmall",
                                    "Usmall",
                                    "Vsmall",
                                    "Wsmall",
                                    "Xsmall",
                                    "Ysmall",
                                    "Zsmall",
                                    "colonmonetary",
                                    "onefitted",
                                    "rupiah",
                                    "Tildesmall",
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    "exclamdownsmall",
                                    "centoldstyle",
                                    "Lslashsmall",
                                    nullptr,
                                    nullptr,
                                    "Scaronsmall",
                                    "Zcaronsmall",
                                    "Dieresissmall",
                                    "Brevesmall",
                                    "Caronsmall",
                                    nullptr,
                                    "Dotaccentsmall",
                                    nullptr,
                                    nullptr,
                                    "Macronsmall",
                                    nullptr,
                                    nullptr,
                                    "figuredash",
                                    "hypheninferior",
                                    nullptr,
                                    nullptr,
                                    "Ogoneksmall",
                                    "Ringsmall",
                                    "Cedillasmall",
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    "onequarter",
                                    "onehalf",
                                    "threequarters",
                                    "questiondownsmall",
                                    "oneeighth",
                                    "threeeighths",
                                    "fiveeighths",
                                    "seveneighths",
                                    "onethird",
                                    "twothirds",
                                    nullptr,
                                    nullptr,
                                    "zerosuperior",
                                    "onesuperior",
                                    "twosuperior",
                                    "threesuperior",
                                    "foursuperior",
                                    "fivesuperior",
                                    "sixsuperior",
                                    "sevensuperior",
                                    "eightsuperior",
                                    "ninesuperior",
                                    "zeroinferior",
                                    "oneinferior",
                                    "twoinferior",
                                    "threeinferior",
                                    "fourinferior",
                                    "fiveinferior",
                                    "sixinferior",
                                    "seveninferior",
                                    "eightinferior",
                                    "nineinferior",
                                    "centinferior",
                                    "dollarinferior",
                                    "periodinferior",
                                    "commainferior",
                                    "Agravesmall",
                                    "Aacutesmall",
                                    "Acircumflexsmall",
                                    "Atildesmall",
                                    "Adieresissmall",
                                    "Aringsmall",
                                    "AEsmall",
                                    "Ccedillasmall",
                                    "Egravesmall",
                                    "Eacutesmall",
                                    "Ecircumflexsmall",
                                    "Edieresissmall",
                                    "Igravesmall",
                                    "Iacutesmall",
                                    "Icircumflexsmall",
                                    "Idieresissmall",
                                    "Ethsmall",
                                    "Ntildesmall",
                                    "Ogravesmall",
                                    "Oacutesmall",
                                    "Ocircumflexsmall",
                                    "Otildesmall",
                                    "Odieresissmall",
                                    "OEsmall",
                                    "Oslashsmall",
                                    "Ugravesmall",
                                    "Uacutesmall",
                                    "Ucircumflexsmall",
                                    "Udieresissmall",
                                    "Yacutesmall",
                                    "Thornsmall",
                                    "Ydieresissmall" };

const char *symbolEncoding[256] = { nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    "space",
                                    "exclam",
                                    "universal",
                                    "numbersign",
                                    "existential",
                                    "percent",
                                    "ampersand",
                                    "suchthat",
                                    "parenleft",
                                    "parenright",
                                    "asteriskmath",
                                    "plus",
                                    "comma",
                                    "minus",
                                    "period",
                                    "slash",
                                    "zero",
                                    "one",
                                    "two",
                                    "three",
                                    "four",
                                    "five",
                                    "six",
                                    "seven",
                                    "eight",
                                    "nine",
                                    "colon",
                                    "semicolon",
                                    "less",
                                    "equal",
                                    "greater",
                                    "question",
                                    "congruent",
                                    "Alpha",
                                    "Beta",
                                    "Chi",
                                    "Delta",
                                    "Epsilon",
                                    "Phi",
                                    "Gamma",
                                    "Eta",
                                    "Iota",
                                    "theta1",
                                    "Kappa",
                                    "Lambda",
                                    "Mu",
                                    "Nu",
                                    "Omicron",
                                    "Pi",
                                    "Theta",
                                    "Rho",
                                    "Sigma",
                                    "Tau",
                                    "Upsilon",
                                    "sigma1",
                                    "Omega",
                                    "Xi",
                                    "Psi",
                                    "Zeta",
                                    "bracketleft",
                                    "therefore",
                                    "bracketright",
                                    "perpendicular",
                                    "underscore",
                                    "radicalex",
                                    "alpha",
                                    "beta",
                                    "chi",
                                    "delta",
                                    "epsilon",
                                    "phi",
                                    "gamma",
                                    "eta",
                                    "iota",
                                    "phi1",
                                    "kappa",
                                    "lambda",
                                    "mu",
                                    "nu",
                                    "omicron",
                                    "pi",
                                    "theta",
                                    "rho",
                                    "sigma",
                                    "tau",
                                    "upsilon",
                                    "omega1",
                                    "omega",
                                    "xi",
                                    "psi",
                                    "zeta",
                                    "braceleft",
                                    "bar",
                                    "braceright",
                                    "similar",
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    nullptr,
                                    "Upsilon1",
                                    "minute",
                                    "lessequal",
                                    "fraction",
                                    "infinity",
                                    "florin",
                                    "club",
                                    "diamond",
                                    "heart",
                                    "spade",
                                    "arrowboth",
                                    "arrowleft",
                                    "arrowup",
                                    "arrowright",
                                    "arrowdown",
                                    "degree",
                                    "plusminus",
                                    "second",
                                    "greaterequal",
                                    "multiply",
                                    "proportional",
                                    "partialdiff",
                                    "bullet",
                                    "divide",
                                    "notequal",
                                    "equivalence",
                                    "approxequal",
                                    "ellipsis",
                                    "arrowvertex",
                                    "arrowhorizex",
                                    "carriagereturn",
                                    "aleph",
                                    "Ifraktur",
                                    "Rfraktur",
                                    "weierstrass",
                                    "circlemultiply",
                                    "circleplus",
                                    "emptyset",
                                    "intersection",
                                    "union",
                                    "propersuperset",
                                    "reflexsuperset",
                                    "notsubset",
                                    "propersubset",
                                    "reflexsubset",
                                    "element",
                                    "notelement",
                                    "angle",
                                    "gradient",
                                    "registerserif",
                                    "copyrightserif",
                                    "trademarkserif",
                                    "product",
                                    "radical",
                                    "dotmath",
                                    "logicalnot",
                                    "logicaland",
                                    "logicalor",
                                    "arrowdblboth",
                                    "arrowdblleft",
                                    "arrowdblup",
                                    "arrowdblright",
                                    "arrowdbldown",
                                    "lozenge",
                                    "angleleft",
                                    "registersans",
                                    "copyrightsans",
                                    "trademarksans",
                                    "summation",
                                    "parenlefttp",
                                    "parenleftex",
                                    "parenleftbt",
                                    "bracketlefttp",
                                    "bracketleftex",
                                    "bracketleftbt",
                                    "bracelefttp",
                                    "braceleftmid",
                                    "braceleftbt",
                                    "braceex",
                                    nullptr,
                                    "angleright",
                                    "integral",
                                    "integraltp",
                                    "integralex",
                                    "integralbt",
                                    "parenrighttp",
                                    "parenrightex",
                                    "parenrightbt",
                                    "bracketrighttp",
                                    "bracketrightex",
                                    "bracketrightbt",
                                    "bracerighttp",
                                    "bracerightmid",
                                    "bracerightbt",
                                    nullptr };

const char *zapfDingbatsEncoding[256] = { nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr,
                                          nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, "space", "a1",    "a2",    "a202",  "a3",    "a4",    "a5",    "a119",  "a118",  "a117",  "a11",   "a12",
                                          "a13",   "a14",   "a15",   "a16",   "a105",  "a17",   "a18",   "a19",   "a20",   "a21",   "a22",   "a23",   "a24",   "a25",   "a26",   "a27",   "a28",   "a6",    "a7",    "a8",    "a9",    "a10",
                                          "a29",   "a30",   "a31",   "a32",   "a33",   "a34",   "a35",   "a36",   "a37",   "a38",   "a39",   "a40",   "a41",   "a42",   "a43",   "a44",   "a45",   "a46",   "a47",   "a48",   "a49",   "a50",
                                          "a51",   "a52",   "a53",   "a54",   "a55",   "a56",   "a57",   "a58",   "a59",   "a60",   "a61",   "a62",   "a63",   "a64",   "a65",   "a66",   "a67",   "a68",   "a69",   "a70",   "a71",   "a72",
                                          "a73",   "a74",   "a203",  "a75",   "a204",  "a76",   "a77",   "a78",   "a79",   "a81",   "a82",   "a83",   "a84",   "a97",   "a98",   "a99",   "a100",  nullptr, nullptr, nullptr, nullptr, nullptr,
                                          nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr,
                                          nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, "a101",  "a102",  "a103",  "a104",  "a106",  "a107",  "a108",  "a112",  "a111",  "a110",  "a109",  "a120",  "a121",  "a122",  "a123",
                                          "a124",  "a125",  "a126",  "a127",  "a128",  "a129",  "a130",  "a131",  "a132",  "a133",  "a134",  "a135",  "a136",  "a137",  "a138",  "a139",  "a140",  "a141",  "a142",  "a143",  "a144",  "a145",
                                          "a146",  "a147",  "a148",  "a149",  "a150",  "a151",  "a152",  "a153",  "a154",  "a155",  "a156",  "a157",  "a158",  "a159",  "a160",  "a161",  "a163",  "a164",  "a196",  "a165",  "a192",  "a166",
                                          "a167",  "a168",  "a169",  "a170",  "a171",  "a172",  "a173",  "a162",  "a174",  "a175",  "a176",  "a177",  "a178",  "a179",  "a193",  "a180",  "a199",  "a181",  "a200",  "a182",  nullptr, "a201",
                                          "a183",  "a184",  "a197",  "a185",  "a194",  "a198",  "a186",  "a195",  "a187",  "a188",  "a189",  "a190",  "a191",  nullptr };
