Module: ANSEL::CharacterMap

Included in:
Converter
Defined in:
lib/ansel/character_map.rb

Constant Summary collapse

NON_COMBINING =
{
  'ERR' => "\xFF\xFD",      # � - REPLACEMENT CHARACTER
  '88' => '',               # NON-SORT BEGIN / START OF STRING
  '89' => '',               # NON-SORT END / STRING TERMINATOR
  '8D' => '',               # JOINER / ZERO WIDTH JOINER
  '8E' => '',               # NON-JOINER / ZERO WIDTH NON-JOINER
  'A1' => "\x01\x41",       # Ł - UPPERCASE POLISH L / LATIN CAPITAL LETTER L WITH STROKE
  'A2' => "\x00\xD8",       # Ø - UPPERCASE SCANDINAVIAN O / LATIN CAPITAL LETTER O WITH STROKE
  'A3' => "\x01\x10",       # Đ - UPPERCASE D WITH CROSSBAR / LATIN CAPITAL LETTER D WITH STROKE
  'A4' => "\x00\xDE",       # Þ - UPPERCASE ICELANDIC THORN / LATIN CAPITAL LETTER THORN (Icelandic)
  'A5' => "\x00\xC6",       # Æ - UPPERCASE DIGRAPH AE / LATIN CAPITAL LIGATURE AE
  'A6' => "\x01\x52",       # Π- UPPERCASE DIGRAPH OE / LATIN CAPITAL LIGATURE OE
  'A7' => "\x02\xB9",       # ʹ - SOFT SIGN, PRIME / MODIFIER LETTER PRIME
  'A8' => "\x00\xB7",       # · - MIDDLE DOT
  'A9' => "\x26\x6D",       # ♭ - MUSIC FLAT SIGN
  'AA' => "\x00\xAE",       # ® - PATENT MARK / REGISTERED SIGN
  'AB' => "\x00\xB1",       # ± - PLUS OR MINUS / PLUS-MINUS SIGN
  'AC' => "\x01\xA0",       # Ơ - UPPERCASE O-HOOK / LATIN CAPITAL LETTER O WITH HORN
  'AD' => "\x01\xAF",       # Ư - UPPERCASE U-HOOK / LATIN CAPITAL LETTER U WITH HORN
  'AE' => "\x02\xBC",       # ʼ - ALIF / MODIFIER LETTER APOSTROPHE
  'B0' => "\x02\xBB",       # ʻ - AYN / MODIFIER LETTER TURNED COMMA
  'B1' => "\x01\x42",       # ł - LOWERCASE POLISH L / LATIN SMALL LETTER L WITH STROKE
  'B2' => "\x00\xF8",       # ø - LOWERCASE SCANDINAVIAN O / LATIN SMALL LETTER O WITH STROKE
  'B3' => "\x01\x11",       # đ - LOWERCASE D WITH CROSSBAR / LATIN SMALL LETTER D WITH STROKE
  'B4' => "\x00\xFE",       # þ - LOWERCASE ICELANDIC THORN / LATIN SMALL LETTER THORN (Icelandic)
  'B5' => "\x00\xE6",       # æ - LOWERCASE DIGRAPH AE / LATIN SMALL LIGATURE AE
  'B6' => "\x01\x53",       # œ - LOWERCASE DIGRAPH OE / LATIN SMALL LIGATURE OE
  'B7' => "\x02\xBA",       # ʺ - HARD SIGN, DOUBLE PRIME / MODIFIER LETTER DOUBLE PRIME
  'B8' => "\x01\x31",       # ı - LOWERCASE TURKISH I / LATIN SMALL LETTER DOTLESS I
  'B9' => "\x00\xA3",       # £ - BRITISH POUND / POUND SIGN
  'BA' => "\x00\xF0",       # ð - LOWERCASE ETH / LATIN SMALL LETTER ETH (Icelandic)
  'BC' => "\x01\xA1",       # ơ - LOWERCASE O-HOOK / LATIN SMALL LETTER O WITH HORN
  'BD' => "\x01\xB0",       # ư - LOWERCASE U-HOOK / LATIN SMALL LETTER U WITH HORN
  'C0' => "\x00\xB0",       # ° - DEGREE SIGN
  'C1' => "\x21\x13",       # ℓ - SCRIPT SMALL L
  'C2' => "\x21\x17",       # ℗ - SOUND RECORDING COPYRIGHT
  'C3' => "\x00\xA9",       # © - COPYRIGHT SIGN
  'C4' => "\x26\x6F",       # ♯ - MUSIC SHARP SIGN
  'C5' => "\x00\xBF",       # ¿ - INVERTED QUESTION MARK
  'C6' => "\x00\xA1",       # ¡ - INVERTED EXCLAMATION MARK
  'C7' => "\x00\xDF",       # ß - ESZETT SYMBOL
  'C8' => "\x20\xAC"        # € - EURO SIGN
}.freeze
COMBINING =
{
  'E0+41' => "\x1E\xA2",    # Ả - LATIN CAPITAL LETTER A WITH HOOK ABOVE
  'E0+45' => "\x1E\xBA",    # LATIN CAPITAL LETTER E WITH HOOK ABOVE
  'E0+49' => "\x1E\xC8",    # LATIN CAPITAL LETTER I WITH HOOK ABOVE
  'E0+4F' => "\x1E\xCE",    # LATIN CAPITAL LETTER O WITH HOOK ABOVE
  'E0+55' => "\x1E\xE6",    # LATIN CAPITAL LETTER U WITH HOOK ABOVE
  'E0+59' => "\x1E\xF6",    # LATIN CAPITAL LETTER Y WITH HOOK ABOVE
  'E0+61' => "\x1E\xA3",    # LATIN SMALL LETTER A WITH HOOK ABOVE
  'E0+65' => "\x1E\xBB",    # LATIN SMALL LETTER E WITH HOOK ABOVE
  'E0+69' => "\x1E\xC9",    # LATIN SMALL LETTER I WITH HOOK ABOVE
  'E0+6F' => "\x1E\xCF",    # LATIN SMALL LETTER O WITH HOOK ABOVE
  'E0+75' => "\x1E\xE7",    # LATIN SMALL LETTER U WITH HOOK ABOVE
  'E0+79' => "\x1E\xF7",    # LATIN SMALL LETTER Y WITH HOOK ABOVE
  'E0+E3+41' => "\x1E\xA8", # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
  'E0+E3+45' => "\x1E\xC2", # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
  'E0+E3+4F' => "\x1E\xD4", # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
  'E0+E3+61' => "\x1E\xA9", # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
  'E0+E3+65' => "\x1E\xC3", # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
  'E0+E3+6F' => "\x1E\xD5", # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
  'E0+E6+41' => "\x1E\xB2", # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
  'E0+E6+61' => "\x1E\xB3", # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
  'E0' => "\x03\x09",       # COMBINING HOOK ABOVE
  'E1+41' => "\x00\xC0",    # LATIN CAPITAL LETTER A WITH GRAVE
  'E1+45' => "\x00\xC8",    # LATIN CAPITAL LETTER E WITH GRAVE
  'E1+49' => "\x00\xCC",    # LATIN CAPITAL LETTER I WITH GRAVE
  'E1+4F' => "\x00\xD2",    # LATIN CAPITAL LETTER O WITH GRAVE
  'E1+55' => "\x00\xD9",    # LATIN CAPITAL LETTER U WITH GRAVE
  'E1+57' => "\x1E\x80",    # LATIN CAPITAL LETTER W WITH GRAVE
  'E1+59' => "\x1E\xF2",    # LATIN CAPITAL LETTER Y WITH GRAVE
  'E1+61' => "\x00\xE0",    # LATIN SMALL LETTER A WITH GRAVE
  'E1+65' => "\x00\xE8",    # LATIN SMALL LETTER E WITH GRAVE
  'E1+69' => "\x00\xEC",    # LATIN SMALL LETTER I WITH GRAVE
  'E1+6F' => "\x00\xF2",    # LATIN SMALL LETTER O WITH GRAVE
  'E1+75' => "\x00\xF9",    # LATIN SMALL LETTER U WITH GRAVE
  'E1+77' => "\x1E\x81",    # LATIN SMALL LETTER W WITH GRAVE
  'E1+79' => "\x1E\xF3",    # LATIN SMALL LETTER Y WITH GRAVE
  'E1+E3+41' => "\x1E\xA6", # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
  'E1+E3+45' => "\x1E\xC0", # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
  'E1+E3+4F' => "\x1E\xD2", # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
  'E1+E3+61' => "\x1E\xA7", # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
  'E1+E3+65' => "\x1E\xC1", # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
  'E1+E3+6F' => "\x1E\xD3", # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
  'E1+E5+45' => "\x1E\x14", # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
  'E1+E5+4F' => "\x1E\x50", # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
  'E1+E5+65' => "\x1E\x15", # LATIN SMALL LETTER E WITH MACRON AND GRAVE
  'E1+E5+6F' => "\x1E\x51", # LATIN SMALL LETTER O WITH MACRON AND GRAVE
  'E1+E6+41' => "\x1E\xB0", # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
  'E1+E6+61' => "\x1E\xB1", # LATIN SMALL LETTER A WITH BREVE AND GRAVE
  'E1+E8+55' => "\x01\xDB", # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
  'E1+E8+75' => "\x01\xDC", # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
  'E1' => "\x03\x00",       # COMBINING GRAVE ACCENT
  'E2+41' => "\x00\xC1",    # LATIN CAPITAL LETTER A WITH ACUTE
  'E2+43' => "\x01\x06",    # LATIN CAPITAL LETTER C WITH ACUTE
  'E2+45' => "\x00\xC9",    # LATIN CAPITAL LETTER E WITH ACUTE
  'E2+47' => "\x01\xF4",    # LATIN CAPITAL LETTER G WITH ACUTE
  'E2+49' => "\x00\xCD",    # LATIN CAPITAL LETTER I WITH ACUTE
  'E2+4B' => "\x1E\x30",    # LATIN CAPITAL LETTER K WITH ACUTE
  'E2+4C' => "\x01\x39",    # LATIN CAPITAL LETTER L WITH ACUTE
  'E2+4D' => "\x1E\x3E",    # LATIN CAPITAL LETTER M WITH ACUTE
  'E2+4E' => "\x01\x43",    # LATIN CAPITAL LETTER N WITH ACUTE
  'E2+4F' => "\x00\xD3",    # LATIN CAPITAL LETTER O WITH ACUTE
  'E2+50' => "\x1E\x54",    # LATIN CAPITAL LETTER P WITH ACUTE
  'E2+52' => "\x01\x54",    # LATIN CAPITAL LETTER R WITH ACUTE
  'E2+53' => "\x01\x5A",    # LATIN CAPITAL LETTER S WITH ACUTE
  'E2+55' => "\x00\xDA",    # LATIN CAPITAL LETTER U WITH ACUTE
  'E2+57' => "\x1E\x82",    # LATIN CAPITAL LETTER W WITH ACUTE
  'E2+59' => "\x00\xDD",    # LATIN CAPITAL LETTER Y WITH ACUTE
  'E2+5A' => "\x01\x79",    # LATIN CAPITAL LETTER Z WITH ACUTE
  'E2+61' => "\x00\xE1",    # LATIN SMALL LETTER A WITH ACUTE
  'E2+63' => "\x01\x07",    # LATIN SMALL LETTER C WITH ACUTE
  'E2+65' => "\x00\xE9",    # LATIN SMALL LETTER E WITH ACUTE
  'E2+67' => "\x01\xF5",    # LATIN SMALL LETTER G WITH ACUTE
  'E2+69' => "\x00\xED",    # LATIN SMALL LETTER I WITH ACUTE
  'E2+6B' => "\x1E\x31",    # LATIN SMALL LETTER K WITH ACUTE
  'E2+6C' => "\x01\x3A",    # LATIN SMALL LETTER L WITH ACUTE
  'E2+6D' => "\x1E\x3F",    # LATIN SMALL LETTER M WITH ACUTE
  'E2+6E' => "\x01\x44",    # LATIN SMALL LETTER N WITH ACUTE
  'E2+6F' => "\x00\xF3",    # LATIN SMALL LETTER O WITH ACUTE
  'E2+70' => "\x1E\x55",    # LATIN SMALL LETTER P WITH ACUTE
  'E2+72' => "\x01\x55",    # LATIN SMALL LETTER R WITH ACUTE
  'E2+73' => "\x01\x5B",    # LATIN SMALL LETTER S WITH ACUTE
  'E2+75' => "\x00\xFA",    # LATIN SMALL LETTER U WITH ACUTE
  'E2+77' => "\x1E\x83",    # LATIN SMALL LETTER W WITH ACUTE
  'E2+79' => "\x00\xFD",    # LATIN SMALL LETTER Y WITH ACUTE
  'E2+7A' => "\x01\x7A",    # LATIN SMALL LETTER Z WITH ACUTE
  'E2+A5' => "\x01\xFC",    # LATIN CAPITAL LETTER AE WITH ACUTE
  'E2+B5' => "\x01\xFD",    # LATIN SMALL LETTER AE WITH ACUTE
  'E2+E3+41' => "\x1E\xA4", # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
  'E2+E3+45' => "\x1E\xBE", # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
  'E2+E3+4F' => "\x1E\xD0", # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
  'E2+E3+61' => "\x1E\xA5", # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
  'E2+E3+65' => "\x1E\xBF", # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
  'E2+E3+6F' => "\x1E\xD1", # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
  'E2+E4+4F' => "\x1E\x4C", # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
  'E2+E4+55' => "\x1E\x78", # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
  'E2+E4+6F' => "\x1E\x4D", # LATIN SMALL LETTER O WITH TILDE AND ACUTE
  'E2+E4+75' => "\x1E\x79", # LATIN SMALL LETTER U WITH TILDE AND ACUTE
  'E2+E5+45' => "\x1E\x16", # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
  'E2+E5+4F' => "\x1E\x52", # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
  'E2+E5+65' => "\x1E\x17", # LATIN SMALL LETTER E WITH MACRON AND ACUTE
  'E2+E5+6F' => "\x1E\x53", # LATIN SMALL LETTER O WITH MACRON AND ACUTE
  'E2+E6+41' => "\x1E\xAE", # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
  'E2+E6+61' => "\x1E\xAF", # LATIN SMALL LETTER A WITH BREVE AND ACUTE
  'E2+E7+53' => "\x1E\x64", # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
  'E2+E7+73' => "\x1E\x65", # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
  'E2+E8+49' => "\x1E\x2E", # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
  'E2+E8+55' => "\x01\xD7", # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
  'E2+E8+69' => "\x1E\x2F", # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
  'E2+E8+75' => "\x01\xD8", # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
  'E2+EA+41' => "\x01\xFA", # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
  'E2+EA+61' => "\x01\xFB", # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
  'E2+F0+43' => "\x1E\x08", # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
  'E2+F0+63' => "\x1E\x09", # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
  'E2' => "\x03\x01",       # COMBINING ACUTE ACCENT
  'E3+41' => "\x00\xC2",    # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
  'E3+43' => "\x01\x08",    # LATIN CAPITAL LETTER C WITH CIRCUMFLEX
  'E3+45' => "\x00\xCA",    # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
  'E3+47' => "\x01\x1C",    # LATIN CAPITAL LETTER G WITH CIRCUMFLEX
  'E3+48' => "\x01\x24",    # LATIN CAPITAL LETTER H WITH CIRCUMFLEX
  'E3+49' => "\x00\xCE",    # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
  'E3+4A' => "\x01\x34",    # LATIN CAPITAL LETTER J WITH CIRCUMFLEX
  'E3+4F' => "\x00\xD4",    # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
  'E3+53' => "\x01\x5C",    # LATIN CAPITAL LETTER S WITH CIRCUMFLEX
  'E3+55' => "\x00\xDB",    # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
  'E3+57' => "\x01\x74",    # LATIN CAPITAL LETTER W WITH CIRCUMFLEX
  'E3+59' => "\x01\x76",    # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
  'E3+5A' => "\x1E\x90",    # LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
  'E3+61' => "\x00\xE2",    # LATIN SMALL LETTER A WITH CIRCUMFLEX
  'E3+63' => "\x01\x09",    # LATIN SMALL LETTER C WITH CIRCUMFLEX
  'E3+65' => "\x00\xEA",    # LATIN SMALL LETTER E WITH CIRCUMFLEX
  'E3+67' => "\x01\x1D",    # LATIN SMALL LETTER G WITH CIRCUMFLEX
  'E3+68' => "\x01\x25",    # LATIN SMALL LETTER H WITH CIRCUMFLEX
  'E3+69' => "\x00\xEE",    # LATIN SMALL LETTER I WITH CIRCUMFLEX
  'E3+6A' => "\x01\x35",    # LATIN SMALL LETTER J WITH CIRCUMFLEX
  'E3+6F' => "\x00\xF4",    # LATIN SMALL LETTER O WITH CIRCUMFLEX
  'E3+73' => "\x01\x5D",    # LATIN SMALL LETTER S WITH CIRCUMFLEX
  'E3+75' => "\x00\xFB",    # LATIN SMALL LETTER U WITH CIRCUMFLEX
  'E3+77' => "\x01\x75",    # LATIN SMALL LETTER W WITH CIRCUMFLEX
  'E3+79' => "\x01\x77",    # LATIN SMALL LETTER Y WITH CIRCUMFLEX
  'E3+7A' => "\x1E\x91",    # LATIN SMALL LETTER Z WITH CIRCUMFLEX
  'E3+E0+41' => "\x1E\xA8", # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
  'E3+E0+45' => "\x1E\xC2", # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
  'E3+E0+4F' => "\x1E\xD4", # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
  'E3+E0+61' => "\x1E\xA9", # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
  'E3+E0+65' => "\x1E\xC3", # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
  'E3+E0+6F' => "\x1E\xD5", # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
  'E3+E1+41' => "\x1E\xA6", # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
  'E3+E1+45' => "\x1E\xC0", # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
  'E3+E1+4F' => "\x1E\xD2", # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
  'E3+E1+61' => "\x1E\xA7", # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
  'E3+E1+65' => "\x1E\xC1", # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
  'E3+E1+6F' => "\x1E\xD3", # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
  'E3+E2+41' => "\x1E\xA4", # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
  'E3+E2+45' => "\x1E\xBE", # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
  'E3+E2+4F' => "\x1E\xD0", # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
  'E3+E2+61' => "\x1E\xA5", # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
  'E3+E2+65' => "\x1E\xBF", # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
  'E3+E2+6F' => "\x1E\xD1", # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
  'E3+E4+41' => "\x1E\xAA", # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
  'E3+E4+45' => "\x1E\xC4", # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
  'E3+E4+4F' => "\x1E\xD6", # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
  'E3+E4+61' => "\x1E\xAB", # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
  'E3+E4+65' => "\x1E\xC5", # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
  'E3+E4+6F' => "\x1E\xD7", # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
  'E3+F2+41' => "\x1E\xAC", # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
  'E3+F2+45' => "\x1E\xC6", # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
  'E3+F2+4F' => "\x1E\xD8", # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
  'E3+F2+61' => "\x1E\xAD", # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
  'E3+F2+65' => "\x1E\xC7", # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
  'E3+F2+6F' => "\x1E\xD9", # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
  'E3' => "\x03\x02",       # COMBINING CIRCUMFLEX ACCENT
  'E4+41' => "\x00\xC3",    # LATIN CAPITAL LETTER A WITH TILDE
  'E4+45' => "\x1E\xBC",    # LATIN CAPITAL LETTER E WITH TILDE
  'E4+49' => "\x01\x28",    # LATIN CAPITAL LETTER I WITH TILDE
  'E4+4E' => "\x00\xD1",    # LATIN CAPITAL LETTER N WITH TILDE
  'E4+4F' => "\x00\xD5",    # LATIN CAPITAL LETTER O WITH TILDE
  'E4+55' => "\x01\x68",    # LATIN CAPITAL LETTER U WITH TILDE
  'E4+56' => "\x1E\x7C",    # LATIN CAPITAL LETTER V WITH TILDE
  'E4+59' => "\x1E\xF8",    # LATIN CAPITAL LETTER Y WITH TILDE
  'E4+61' => "\x00\xE3",    # LATIN SMALL LETTER A WITH TILDE
  'E4+65' => "\x1E\xBD",    # LATIN SMALL LETTER E WITH TILDE
  'E4+69' => "\x01\x29",    # LATIN SMALL LETTER I WITH TILDE
  'E4+6E' => "\x00\xF1",    # LATIN SMALL LETTER N WITH TILDE
  'E4+6F' => "\x00\xF5",    # LATIN SMALL LETTER O WITH TILDE
  'E4+75' => "\x01\x69",    # LATIN SMALL LETTER U WITH TILDE
  'E4+76' => "\x1E\x7D",    # LATIN SMALL LETTER V WITH TILDE
  'E4+79' => "\x1E\xF9",    # LATIN SMALL LETTER Y WITH TILDE
  'E4+E2+4F' => "\x1E\x4C", # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
  'E4+E2+55' => "\x1E\x78", # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
  'E4+E2+6F' => "\x1E\x4D", # LATIN SMALL LETTER O WITH TILDE AND ACUTE
  'E4+E2+75' => "\x1E\x79", # LATIN SMALL LETTER U WITH TILDE AND ACUTE
  'E4+E3+41' => "\x1E\xAA", # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
  'E4+E3+45' => "\x1E\xC4", # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
  'E4+E3+4F' => "\x1E\xD6", # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
  'E4+E3+61' => "\x1E\xAB", # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
  'E4+E3+65' => "\x1E\xC5", # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
  'E4+E3+6F' => "\x1E\xD7", # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
  'E4+E6+41' => "\x1E\xB4", # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
  'E4+E6+61' => "\x1E\xB5", # LATIN SMALL LETTER A WITH BREVE AND TILDE
  'E4+E8+4F' => "\x1E\x4E", # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
  'E4+E8+6F' => "\x1E\x4F", # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
  'E4' => "\x03\x03",       # COMBINING TILDE
  'E5+41' => "\x01\x00",    # LATIN CAPITAL LETTER A WITH MACRON
  'E5+45' => "\x01\x12",    # LATIN CAPITAL LETTER E WITH MACRON
  'E5+47' => "\x1E\x20",    # LATIN CAPITAL LETTER G WITH MACRON
  'E5+49' => "\x01\x2A",    # LATIN CAPITAL LETTER I WITH MACRON
  'E5+4F' => "\x01\x4C",    # LATIN CAPITAL LETTER O WITH MACRON
  'E5+55' => "\x01\x6A",    # LATIN CAPITAL LETTER U WITH MACRON
  'E5+61' => "\x01\x01",    # LATIN SMALL LETTER A WITH MACRON
  'E5+65' => "\x01\x13",    # LATIN SMALL LETTER E WITH MACRON
  'E5+67' => "\x1E\x21",    # LATIN SMALL LETTER G WITH MACRON
  'E5+69' => "\x01\x2B",    # LATIN SMALL LETTER I WITH MACRON
  'E5+6F' => "\x01\x4D",    # LATIN SMALL LETTER O WITH MACRON
  'E5+75' => "\x01\x6B",    # LATIN SMALL LETTER U WITH MACRON
  'E5+A5' => "\x01\xE2",    # LATIN CAPITAL LETTER AE WITH MACRON
  'E5+B5' => "\x01\xE3",    # LATIN SMALL LETTER AE WITH MACRON
  'E5+E1+45' => "\x1E\x14", # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
  'E5+E1+4F' => "\x1E\x50", # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
  'E5+E1+65' => "\x1E\x15", # LATIN SMALL LETTER E WITH MACRON AND GRAVE
  'E5+E1+6F' => "\x1E\x51", # LATIN SMALL LETTER O WITH MACRON AND GRAVE
  'E5+E2+45' => "\x1E\x16", # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
  'E5+E2+4F' => "\x1E\x52", # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
  'E5+E2+65' => "\x1E\x17", # LATIN SMALL LETTER E WITH MACRON AND ACUTE
  'E5+E2+6F' => "\x1E\x53", # LATIN SMALL LETTER O WITH MACRON AND ACUTE
  'E5+E7+41' => "\x01\xE0", # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
  'E5+E7+61' => "\x01\xE1", # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
  'E5+E8+41' => "\x01\xDE", # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
  'E5+E8+55' => "\x1E\x7A", # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
  'E5+E8+61' => "\x01\xDF", # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
  'E5+E8+75' => "\x1E\x7B", # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
  'E5+F1+4F' => "\x01\xEC", # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
  'E5+F1+6F' => "\x01\xED", # LATIN SMALL LETTER O WITH OGONEK AND MACRON
  'E5+F2+4C' => "\x1E\x38", # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
  'E5+F2+52' => "\x1E\x5C", # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
  'E5+F2+6C' => "\x1E\x39", # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
  'E5+F2+72' => "\x1E\x5D", # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
  'E5' => "\x03\x04",       # COMBINING MACRON
  'E6+41' => "\x01\x02",    # LATIN CAPITAL LETTER A WITH BREVE
  'E6+45' => "\x01\x14",    # LATIN CAPITAL LETTER E WITH BREVE
  'E6+47' => "\x01\x1E",    # LATIN CAPITAL LETTER G WITH BREVE
  'E6+49' => "\x01\x2C",    # LATIN CAPITAL LETTER I WITH BREVE
  'E6+4F' => "\x01\x4E",    # LATIN CAPITAL LETTER O WITH BREVE
  'E6+55' => "\x01\x6C",    # LATIN CAPITAL LETTER U WITH BREVE
  'E6+61' => "\x01\x03",    # LATIN SMALL LETTER A WITH BREVE
  'E6+65' => "\x01\x15",    # LATIN SMALL LETTER E WITH BREVE
  'E6+67' => "\x01\x1F",    # LATIN SMALL LETTER G WITH BREVE
  'E6+69' => "\x01\x2D",    # LATIN SMALL LETTER I WITH BREVE
  'E6+6F' => "\x01\x4F",    # LATIN SMALL LETTER O WITH BREVE
  'E6+75' => "\x01\x6D",    # LATIN SMALL LETTER U WITH BREVE
  'E6+E0+41' => "\x1E\xB2", # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
  'E6+E0+61' => "\x1E\xB3", # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
  'E6+E1+41' => "\x1E\xB0", # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
  'E6+E1+61' => "\x1E\xB1", # LATIN SMALL LETTER A WITH BREVE AND GRAVE
  'E6+E2+41' => "\x1E\xAE", # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
  'E6+E2+61' => "\x1E\xAF", # LATIN SMALL LETTER A WITH BREVE AND ACUTE
  'E6+E4+41' => "\x1E\xB4", # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
  'E6+E4+61' => "\x1E\xB5", # LATIN SMALL LETTER A WITH BREVE AND TILDE
  'E6+F0+45' => "\x1E\x1C", # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
  'E6+F0+65' => "\x1E\x1D", # LATIN SMALL LETTER E WITH CEDILLA AND BREVE
  'E6+F2+41' => "\x1E\xB6", # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
  'E6+F2+61' => "\x1E\xB7", # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
  'E6' => "\x03\x06",       # COMBINING BREVE
  'E7+42' => "\x1E\x02",    # LATIN CAPITAL LETTER B WITH DOT ABOVE
  'E7+43' => "\x01\x0A",    # LATIN CAPITAL LETTER C WITH DOT ABOVE
  'E7+44' => "\x1E\x0A",    # LATIN CAPITAL LETTER D WITH DOT ABOVE
  'E7+45' => "\x01\x16",    # LATIN CAPITAL LETTER E WITH DOT ABOVE
  'E7+46' => "\x1E\x1E",    # LATIN CAPITAL LETTER F WITH DOT ABOVE
  'E7+47' => "\x01\x20",    # LATIN CAPITAL LETTER G WITH DOT ABOVE
  'E7+48' => "\x1E\x22",    # LATIN CAPITAL LETTER H WITH DOT ABOVE
  'E7+49' => "\x01\x30",    # LATIN CAPITAL LETTER I WITH DOT ABOVE
  'E7+4D' => "\x1E\x40",    # LATIN CAPITAL LETTER M WITH DOT ABOVE
  'E7+4E' => "\x1E\x44",    # LATIN CAPITAL LETTER N WITH DOT ABOVE
  'E7+50' => "\x1E\x56",    # LATIN CAPITAL LETTER P WITH DOT ABOVE
  'E7+52' => "\x1E\x58",    # LATIN CAPITAL LETTER R WITH DOT ABOVE
  'E7+53' => "\x1E\x60",    # LATIN CAPITAL LETTER S WITH DOT ABOVE
  'E7+54' => "\x1E\x6A",    # LATIN CAPITAL LETTER T WITH DOT ABOVE
  'E7+57' => "\x1E\x86",    # LATIN CAPITAL LETTER W WITH DOT ABOVE
  'E7+58' => "\x1E\x8A",    # LATIN CAPITAL LETTER X WITH DOT ABOVE
  'E7+59' => "\x1E\x8E",    # LATIN CAPITAL LETTER Y WITH DOT ABOVE
  'E7+5A' => "\x01\x7B",    # LATIN CAPITAL LETTER Z WITH DOT ABOVE
  'E7+62' => "\x1E\x03",    # LATIN SMALL LETTER B WITH DOT ABOVE
  'E7+63' => "\x01\x0B",    # LATIN SMALL LETTER C WITH DOT ABOVE
  'E7+64' => "\x1E\x0B",    # LATIN SMALL LETTER D WITH DOT ABOVE
  'E7+65' => "\x01\x17",    # LATIN SMALL LETTER E WITH DOT ABOVE
  'E7+66' => "\x1E\x1F",    # LATIN SMALL LETTER F WITH DOT ABOVE
  'E7+67' => "\x01\x21",    # LATIN SMALL LETTER G WITH DOT ABOVE
  'E7+68' => "\x1E\x23",    # LATIN SMALL LETTER H WITH DOT ABOVE
  'E7+6D' => "\x1E\x41",    # LATIN SMALL LETTER M WITH DOT ABOVE
  'E7+6E' => "\x1E\x45",    # LATIN SMALL LETTER N WITH DOT ABOVE
  'E7+70' => "\x1E\x57",    # LATIN SMALL LETTER P WITH DOT ABOVE
  'E7+72' => "\x1E\x59",    # LATIN SMALL LETTER R WITH DOT ABOVE
  'E7+73' => "\x1E\x61",    # LATIN SMALL LETTER S WITH DOT ABOVE
  'E7+74' => "\x1E\x6B",    # LATIN SMALL LETTER T WITH DOT ABOVE
  'E7+77' => "\x1E\x87",    # LATIN SMALL LETTER W WITH DOT ABOVE
  'E7+78' => "\x1E\x8B",    # LATIN SMALL LETTER X WITH DOT ABOVE
  'E7+79' => "\x1E\x8F",    # LATIN SMALL LETTER Y WITH DOT ABOVE
  'E7+7A' => "\x01\x7C",    # LATIN SMALL LETTER Z WITH DOT ABOVE
  'E7+E2+53' => "\x1E\x64", # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
  'E7+E2+73' => "\x1E\x65", # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
  'E7+E5+41' => "\x01\xE0", # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
  'E7+E5+61' => "\x01\xE1", # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
  'E7+E9+53' => "\x1E\x66", # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
  'E7+E9+73' => "\x1E\x67", # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE
  'E7+F2+53' => "\x1E\x68", # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
  'E7+F2+73' => "\x1E\x69", # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
  'E7' => "\x03\x07",       # COMBINING DOT ABOVE
  'E8+41' => "\x00\xC4",    # LATIN CAPITAL LETTER A WITH DIAERESIS
  'E8+45' => "\x00\xCB",    # LATIN CAPITAL LETTER E WITH DIAERESIS
  'E8+48' => "\x1E\x26",    # LATIN CAPITAL LETTER H WITH DIAERESIS
  'E8+49' => "\x00\xCF",    # LATIN CAPITAL LETTER I WITH DIAERESIS
  'E8+4F' => "\x00\xD6",    # LATIN CAPITAL LETTER O WITH DIAERESIS
  'E8+55' => "\x00\xDC",    # LATIN CAPITAL LETTER U WITH DIAERESIS
  'E8+57' => "\x1E\x84",    # LATIN CAPITAL LETTER W WITH DIAERESIS
  'E8+58' => "\x1E\x8C",    # LATIN CAPITAL LETTER X WITH DIAERESIS
  'E8+59' => "\x01\x78",    # LATIN CAPITAL LETTER Y WITH DIAERESIS
  'E8+61' => "\x00\xE4",    # LATIN SMALL LETTER A WITH DIAERESIS
  'E8+65' => "\x00\xEB",    # LATIN SMALL LETTER E WITH DIAERESIS
  'E8+68' => "\x1E\x27",    # LATIN SMALL LETTER H WITH DIAERESIS
  'E8+69' => "\x00\xEF",    # LATIN SMALL LETTER I WITH DIAERESIS
  'E8+6F' => "\x00\xF6",    # LATIN SMALL LETTER O WITH DIAERESIS
  'E8+74' => "\x1E\x97",    # LATIN SMALL LETTER T WITH DIAERESIS
  'E8+75' => "\x00\xFC",    # LATIN SMALL LETTER U WITH DIAERESIS
  'E8+77' => "\x1E\x85",    # LATIN SMALL LETTER W WITH DIAERESIS
  'E8+78' => "\x1E\x8D",    # LATIN SMALL LETTER X WITH DIAERESIS
  'E8+79' => "\x00\xFF",    # LATIN SMALL LETTER Y WITH DIAERESIS
  'E8+E1+55' => "\x01\xDB", # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
  'E8+E1+75' => "\x01\xDC", # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
  'E8+E2+49' => "\x1E\x2E", # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
  'E8+E2+55' => "\x01\xD7", # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
  'E8+E2+69' => "\x1E\x2F", # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
  'E8+E2+75' => "\x01\xD8", # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
  'E8+E4+4F' => "\x1E\x4E", # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
  'E8+E4+6F' => "\x1E\x4F", # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
  'E8+E5+41' => "\x01\xDE", # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
  'E8+E5+55' => "\x1E\x7A", # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
  'E8+E5+61' => "\x01\xDF", # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
  'E8+E5+75' => "\x1E\x7B", # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
  'E8+E9+55' => "\x01\xD9", # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
  'E8+E9+75' => "\x01\xDA", # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
  'E8' => "\x03\x08",       # COMBINING DIAERESIS
  'E9+41' => "\x01\xCD",    # LATIN CAPITAL LETTER A WITH CARON
  'E9+43' => "\x01\x0C",    # LATIN CAPITAL LETTER C WITH CARON
  'E9+44' => "\x01\x0E",    # LATIN CAPITAL LETTER D WITH CARON
  'E9+45' => "\x01\x1A",    # LATIN CAPITAL LETTER E WITH CARON
  'E9+47' => "\x01\xE6",    # LATIN CAPITAL LETTER G WITH CARON
  'E9+49' => "\x01\xCF",    # LATIN CAPITAL LETTER I WITH CARON
  'E9+4B' => "\x01\xE8",    # LATIN CAPITAL LETTER K WITH CARON
  'E9+4C' => "\x01\x3D",    # LATIN CAPITAL LETTER L WITH CARON
  'E9+4E' => "\x01\x47",    # LATIN CAPITAL LETTER N WITH CARON
  'E9+4F' => "\x01\xD1",    # LATIN CAPITAL LETTER O WITH CARON
  'E9+52' => "\x01\x58",    # LATIN CAPITAL LETTER R WITH CARON
  'E9+53' => "\x01\x60",    # LATIN CAPITAL LETTER S WITH CARON
  'E9+54' => "\x01\x64",    # LATIN CAPITAL LETTER T WITH CARON
  'E9+55' => "\x01\xD3",    # LATIN CAPITAL LETTER U WITH CARON
  'E9+5A' => "\x01\x7D",    # LATIN CAPITAL LETTER Z WITH CARON
  'E9+61' => "\x01\xCE",    # LATIN SMALL LETTER A WITH CARON
  'E9+63' => "\x01\x0D",    # LATIN SMALL LETTER C WITH CARON
  'E9+64' => "\x01\x0F",    # LATIN SMALL LETTER D WITH CARON
  'E9+65' => "\x01\x1B",    # LATIN SMALL LETTER E WITH CARON
  'E9+67' => "\x01\xE7",    # LATIN SMALL LETTER G WITH CARON
  'E9+69' => "\x01\xD0",    # LATIN SMALL LETTER I WITH CARON
  'E9+6A' => "\x01\xF0",    # LATIN SMALL LETTER J WITH CARON
  'E9+6B' => "\x01\xE9",    # LATIN SMALL LETTER K WITH CARON
  'E9+6C' => "\x01\x3E",    # LATIN SMALL LETTER L WITH CARON
  'E9+6E' => "\x01\x48",    # LATIN SMALL LETTER N WITH CARON
  'E9+6F' => "\x01\xD2",    # LATIN SMALL LETTER O WITH CARON
  'E9+72' => "\x01\x59",    # LATIN SMALL LETTER R WITH CARON
  'E9+73' => "\x01\x61",    # LATIN SMALL LETTER S WITH CARON
  'E9+74' => "\x01\x65",    # LATIN SMALL LETTER T WITH CARON
  'E9+75' => "\x01\xD4",    # LATIN SMALL LETTER U WITH CARON
  'E9+7A' => "\x01\x7E",    # LATIN SMALL LETTER Z WITH CARON
  'E9+E7+53' => "\x1E\x66", # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
  'E9+E7+73' => "\x1E\x67", # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE
  'E9+E8+55' => "\x01\xD9", # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
  'E9+E8+75' => "\x01\xDA", # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
  'E9' => "\x03\x0C",       # COMBINING CARON
  'EA+41' => "\x00\xC5",    # LATIN CAPITAL LETTER A WITH RING ABOVE
  'EA+55' => "\x01\x6E",    # LATIN CAPITAL LETTER U WITH RING ABOVE
  'EA+61' => "\x00\xE5",    # LATIN SMALL LETTER A WITH RING ABOVE
  'EA+75' => "\x01\x6F",    # LATIN SMALL LETTER U WITH RING ABOVE
  'EA+77' => "\x1E\x98",    # LATIN SMALL LETTER W WITH RING ABOVE
  'EA+79' => "\x1E\x99",    # LATIN SMALL LETTER Y WITH RING ABOVE
  'EA+E2+41' => "\x01\xFA", # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
  'EA+E2+61' => "\x01\xFB", # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
  'EA' => "\x03\x0A",       # COMBINING RING ABOVE
  'EB' => "\xFE\x20",       # COMBINING LIGATURE LEFT HALF
  'EC' => "\xFE\x21",       # COMBINING LIGATURE RIGHT HALF
  'ED' => "\x03\x15",       # COMBINING COMMA ABOVE RIGHT
  'EE+4F' => "\x01\x50",    # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
  'EE+55' => "\x01\x70",    # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
  'EE+6F' => "\x01\x51",    # LATIN SMALL LETTER O WITH DOUBLE ACUTE
  'EE+75' => "\x01\x71",    # LATIN SMALL LETTER U WITH DOUBLE ACUTE
  'EE' => "\x03\x0B",       # COMBINING DOUBLE ACUTE ACCENT
  'EF' => "\x03\x10",       # COMBINING CANDRABINDU
  'F0+43' => "\x00\xC7",    # LATIN CAPITAL LETTER C WITH CEDILLA
  'F0+44' => "\x1E\x10",    # LATIN CAPITAL LETTER D WITH CEDILLA
  'F0+47' => "\x01\x22",    # LATIN CAPITAL LETTER G WITH CEDILLA
  'F0+48' => "\x1E\x28",    # LATIN CAPITAL LETTER H WITH CEDILLA
  'F0+4B' => "\x01\x36",    # LATIN CAPITAL LETTER K WITH CEDILLA
  'F0+4C' => "\x01\x3B",    # LATIN CAPITAL LETTER L WITH CEDILLA
  'F0+4E' => "\x01\x45",    # LATIN CAPITAL LETTER N WITH CEDILLA
  'F0+52' => "\x01\x56",    # LATIN CAPITAL LETTER R WITH CEDILLA
  'F0+53' => "\x01\x5E",    # LATIN CAPITAL LETTER S WITH CEDILLA
  'F0+54' => "\x01\x62",    # LATIN CAPITAL LETTER T WITH CEDILLA
  'F0+63' => "\x00\xE7",    # LATIN SMALL LETTER C WITH CEDILLA
  'F0+64' => "\x1E\x11",    # LATIN SMALL LETTER D WITH CEDILLA
  'F0+67' => "\x01\x23",    # LATIN SMALL LETTER G WITH CEDILLA
  'F0+68' => "\x1E\x29",    # LATIN SMALL LETTER H WITH CEDILLA
  'F0+6B' => "\x01\x37",    # LATIN SMALL LETTER K WITH CEDILLA
  'F0+6C' => "\x01\x3C",    # LATIN SMALL LETTER L WITH CEDILLA
  'F0+6E' => "\x01\x46",    # LATIN SMALL LETTER N WITH CEDILLA
  'F0+72' => "\x01\x57",    # LATIN SMALL LETTER R WITH CEDILLA
  'F0+73' => "\x01\x5F",    # LATIN SMALL LETTER S WITH CEDILLA
  'F0+74' => "\x01\x63",    # LATIN SMALL LETTER T WITH CEDILLA
  'F0+E2+43' => "\x1E\x08", # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
  'F0+E2+63' => "\x1E\x09", # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
  'F0+E6+45' => "\x1E\x1C", # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
  'F0+E6+65' => "\x1E\x1D", # LATIN SMALL LETTER E WITH CEDILLA AND BREVE
  'F0' => "\x03\x27",       # COMBINING CEDILLA
  'F1+41' => "\x01\x04",    # LATIN CAPITAL LETTER A WITH OGONEK
  'F1+45' => "\x01\x18",    # LATIN CAPITAL LETTER E WITH OGONEK
  'F1+49' => "\x01\x2E",    # LATIN CAPITAL LETTER I WITH OGONEK
  'F1+4F' => "\x01\xEA",    # LATIN CAPITAL LETTER O WITH OGONEK
  'F1+55' => "\x01\x72",    # LATIN CAPITAL LETTER U WITH OGONEK
  'F1+61' => "\x01\x05",    # LATIN SMALL LETTER A WITH OGONEK
  'F1+65' => "\x01\x19",    # LATIN SMALL LETTER E WITH OGONEK
  'F1+69' => "\x01\x2F",    # LATIN SMALL LETTER I WITH OGONEK
  'F1+6F' => "\x01\xEB",    # LATIN SMALL LETTER O WITH OGONEK
  'F1+75' => "\x01\x73",    # LATIN SMALL LETTER U WITH OGONEK
  'F1+E5+4F' => "\x01\xEC", # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
  'F1+E5+6F' => "\x01\xED", # LATIN SMALL LETTER O WITH OGONEK AND MACRON
  'F1' => "\x03\x28",       # COMBINING OGONEK
  'F2+41' => "\x1E\xA0",    # LATIN CAPITAL LETTER A WITH DOT BELOW
  'F2+42' => "\x1E\x04",    # LATIN CAPITAL LETTER B WITH DOT BELOW
  'F2+44' => "\x1E\x0C",    # LATIN CAPITAL LETTER D WITH DOT BELOW
  'F2+45' => "\x1E\xB8",    # LATIN CAPITAL LETTER E WITH DOT BELOW
  'F2+48' => "\x1E\x24",    # LATIN CAPITAL LETTER H WITH DOT BELOW
  'F2+49' => "\x1E\xCA",    # LATIN CAPITAL LETTER I WITH DOT BELOW
  'F2+4B' => "\x1E\x32",    # LATIN CAPITAL LETTER K WITH DOT BELOW
  'F2+4C' => "\x1E\x36",    # LATIN CAPITAL LETTER L WITH DOT BELOW
  'F2+4D' => "\x1E\x42",    # LATIN CAPITAL LETTER M WITH DOT BELOW
  'F2+4E' => "\x1E\x46",    # LATIN CAPITAL LETTER N WITH DOT BELOW
  'F2+4F' => "\x1E\xCC",    # LATIN CAPITAL LETTER O WITH DOT BELOW
  'F2+52' => "\x1E\x5A",    # LATIN CAPITAL LETTER R WITH DOT BELOW
  'F2+53' => "\x1E\x62",    # LATIN CAPITAL LETTER S WITH DOT BELOW
  'F2+54' => "\x1E\x6C",    # LATIN CAPITAL LETTER T WITH DOT BELOW
  'F2+55' => "\x1E\xE4",    # LATIN CAPITAL LETTER U WITH DOT BELOW
  'F2+56' => "\x1E\x7E",    # LATIN CAPITAL LETTER V WITH DOT BELOW
  'F2+57' => "\x1E\x88",    # LATIN CAPITAL LETTER W WITH DOT BELOW
  'F2+59' => "\x1E\xF4",    # LATIN CAPITAL LETTER Y WITH DOT BELOW
  'F2+5A' => "\x1E\x92",    # LATIN CAPITAL LETTER Z WITH DOT BELOW
  'F2+61' => "\x1E\xA1",    # LATIN SMALL LETTER A WITH DOT BELOW
  'F2+62' => "\x1E\x05",    # LATIN SMALL LETTER B WITH DOT BELOW
  'F2+64' => "\x1E\x0D",    # LATIN SMALL LETTER D WITH DOT BELOW
  'F2+65' => "\x1E\xB9",    # LATIN SMALL LETTER E WITH DOT BELOW
  'F2+68' => "\x1E\x25",    # LATIN SMALL LETTER H WITH DOT BELOW
  'F2+69' => "\x1E\xCB",    # LATIN SMALL LETTER I WITH DOT BELOW
  'F2+6B' => "\x1E\x33",    # LATIN SMALL LETTER K WITH DOT BELOW
  'F2+6C' => "\x1E\x37",    # LATIN SMALL LETTER L WITH DOT BELOW
  'F2+6D' => "\x1E\x43",    # LATIN SMALL LETTER M WITH DOT BELOW
  'F2+6E' => "\x1E\x47",    # LATIN SMALL LETTER N WITH DOT BELOW
  'F2+6F' => "\x1E\xCD",    # LATIN SMALL LETTER O WITH DOT BELOW
  'F2+72' => "\x1E\x5B",    # LATIN SMALL LETTER R WITH DOT BELOW
  'F2+73' => "\x1E\x63",    # LATIN SMALL LETTER S WITH DOT BELOW
  'F2+74' => "\x1E\x6D",    # LATIN SMALL LETTER T WITH DOT BELOW
  'F2+75' => "\x1E\xE5",    # LATIN SMALL LETTER U WITH DOT BELOW
  'F2+76' => "\x1E\x7F",    # LATIN SMALL LETTER V WITH DOT BELOW
  'F2+77' => "\x1E\x89",    # LATIN SMALL LETTER W WITH DOT BELOW
  'F2+79' => "\x1E\xF5",    # LATIN SMALL LETTER Y WITH DOT BELOW
  'F2+7A' => "\x1E\x93",    # LATIN SMALL LETTER Z WITH DOT BELOW
  'F2+E3+41' => "\x1E\xAC", # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
  'F2+E3+45' => "\x1E\xC6", # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
  'F2+E3+4F' => "\x1E\xD8", # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
  'F2+E3+61' => "\x1E\xAD", # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
  'F2+E3+65' => "\x1E\xC7", # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
  'F2+E3+6F' => "\x1E\xD9", # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
  'F2+E5+4C' => "\x1E\x38", # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
  'F2+E5+52' => "\x1E\x5C", # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
  'F2+E5+6C' => "\x1E\x39", # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
  'F2+E5+72' => "\x1E\x5D", # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
  'F2+E6+41' => "\x1E\xB6", # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
  'F2+E6+61' => "\x1E\xB7", # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
  'F2+E7+53' => "\x1E\x68", # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
  'F2+E7+73' => "\x1E\x69", # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
  'F2' => "\x03\x23",       # COMBINING DOT BELOW
  'F3+55' => "\x1E\x72",    # LATIN CAPITAL LETTER U WITH DIAERESIS BELOW
  'F3+75' => "\x1E\x73",    # LATIN SMALL LETTER U WITH DIAERESIS BELOW
  'F3' => "\x03\x24",       # COMBINING DIAERESIS BELOW
  'F4+41' => "\x1E\x00",    # LATIN CAPITAL LETTER A WITH RING BELOW
  'F4+61' => "\x1E\x01",    # LATIN SMALL LETTER A WITH RING BELOW
  'F4' => "\x03\x25",       # COMBINING RING BELOW
  'F5' => "\x03\x33",       # COMBINING DOUBLE LOW LINE
  'F6+42' => "\x1E\x06",    # LATIN CAPITAL LETTER B WITH LINE BELOW
  'F6+44' => "\x1E\x0E",    # LATIN CAPITAL LETTER D WITH LINE BELOW
  'F6+4B' => "\x1E\x34",    # LATIN CAPITAL LETTER K WITH LINE BELOW
  'F6+4C' => "\x1E\x3A",    # LATIN CAPITAL LETTER L WITH LINE BELOW
  'F6+4E' => "\x1E\x48",    # LATIN CAPITAL LETTER N WITH LINE BELOW
  'F6+52' => "\x1E\x5E",    # LATIN CAPITAL LETTER R WITH LINE BELOW
  'F6+54' => "\x1E\x6E",    # LATIN CAPITAL LETTER T WITH LINE BELOW
  'F6+5A' => "\x1E\x94",    # LATIN CAPITAL LETTER Z WITH LINE BELOW
  'F6+62' => "\x1E\x07",    # LATIN SMALL LETTER B WITH LINE BELOW
  'F6+64' => "\x1E\x0F",    # LATIN SMALL LETTER D WITH LINE BELOW
  'F6+68' => "\x1E\x96",    # LATIN SMALL LETTER H WITH LINE BELOW
  'F6+6B' => "\x1E\x35",    # LATIN SMALL LETTER K WITH LINE BELOW
  'F6+6C' => "\x1E\x3B",    # LATIN SMALL LETTER L WITH LINE BELOW
  'F6+6E' => "\x1E\x49",    # LATIN SMALL LETTER N WITH LINE BELOW
  'F6+72' => "\x1E\x5F",    # LATIN SMALL LETTER R WITH LINE BELOW
  'F6+74' => "\x1E\x6F",    # LATIN SMALL LETTER T WITH LINE BELOW
  'F6+7A' => "\x1E\x95",    # LATIN SMALL LETTER Z WITH LINE BELOW
  'F6' => "\x03\x32",       # COMBINING LOW LINE
  'F7' => "\x03\x26",       # COMBINING COMMA BELOW
  'F8' => "\x03\x21",       # COMBINING OGONEK
  'F9+48' => "\x1E\x2A",    # LATIN CAPITAL LETTER H WITH BREVE BELOW
  'F9+68' => "\x1E\x2B",    # LATIN SMALL LETTER H WITH BREVE BELOW
  'F9' => "\x03\x2E",       # COMBINING BREVE BELOW
  'FA' => "\xFE\x22",       # COMBINING DOUBLE TILDE LEFT HALF
  'FB' => "\xFE\x23"        # COMBINING DOUBLE TILDE RIGHT HALF
}.freeze
ANSI_TO_UTF16_MAP =
NON_COMBINING.merge(COMBINING)