diff --git a/Userland/Libraries/LibPDF/CMakeLists.txt b/Userland/Libraries/LibPDF/CMakeLists.txt index 7f00a9d469..ec76b3f222 100644 --- a/Userland/Libraries/LibPDF/CMakeLists.txt +++ b/Userland/Libraries/LibPDF/CMakeLists.txt @@ -6,6 +6,7 @@ set(SOURCES Encoding.cpp Encryption.cpp Filter.cpp + Fonts/AdobeGlyphList.cpp Fonts/CFF.cpp Fonts/PDFFont.cpp Fonts/PS1FontProgram.cpp diff --git a/Userland/Libraries/LibPDF/Fonts/AdobeGlyphList.cpp b/Userland/Libraries/LibPDF/Fonts/AdobeGlyphList.cpp new file mode 100644 index 0000000000..aaba3c85fd --- /dev/null +++ b/Userland/Libraries/LibPDF/Fonts/AdobeGlyphList.cpp @@ -0,0 +1,4247 @@ +/* + * Copyright (c) 2023, Nico Weber + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +/* +Contains the Adobe Glyph List, transformed into C++ via this script: + +```py +#!/usr/bin/env python3 + +import sys + +print(f'static HashMap constexpr glyph_list = {{') +for line in open('glyphlist.txt'): + line = line.strip() + if line.startswith('#'): + continue + + name, codepoint = line.split(';') + + if ' ' in codepoint: + print(f'skipping {name}, multiple codepoints', file=sys.stderr) + continue + + print(f' {{ "{name}"sv, 0x{codepoint} }},') +print(f'}};') +``` + +where glyphlist.txt is from https://github.com/adobe-type-tools/agl-aglfn/blob/master/glyphlist.txt +*/ + +#include +#include + +namespace PDF { + +static HashMap const glyph_list = { + { "A"sv, 0x0041 }, + { "AE"sv, 0x00C6 }, + { "AEacute"sv, 0x01FC }, + { "AEmacron"sv, 0x01E2 }, + { "AEsmall"sv, 0xF7E6 }, + { "Aacute"sv, 0x00C1 }, + { "Aacutesmall"sv, 0xF7E1 }, + { "Abreve"sv, 0x0102 }, + { "Abreveacute"sv, 0x1EAE }, + { "Abrevecyrillic"sv, 0x04D0 }, + { "Abrevedotbelow"sv, 0x1EB6 }, + { "Abrevegrave"sv, 0x1EB0 }, + { "Abrevehookabove"sv, 0x1EB2 }, + { "Abrevetilde"sv, 0x1EB4 }, + { "Acaron"sv, 0x01CD }, + { "Acircle"sv, 0x24B6 }, + { "Acircumflex"sv, 0x00C2 }, + { "Acircumflexacute"sv, 0x1EA4 }, + { "Acircumflexdotbelow"sv, 0x1EAC }, + { "Acircumflexgrave"sv, 0x1EA6 }, + { "Acircumflexhookabove"sv, 0x1EA8 }, + { "Acircumflexsmall"sv, 0xF7E2 }, + { "Acircumflextilde"sv, 0x1EAA }, + { "Acute"sv, 0xF6C9 }, + { "Acutesmall"sv, 0xF7B4 }, + { "Acyrillic"sv, 0x0410 }, + { "Adblgrave"sv, 0x0200 }, + { "Adieresis"sv, 0x00C4 }, + { "Adieresiscyrillic"sv, 0x04D2 }, + { "Adieresismacron"sv, 0x01DE }, + { "Adieresissmall"sv, 0xF7E4 }, + { "Adotbelow"sv, 0x1EA0 }, + { "Adotmacron"sv, 0x01E0 }, + { "Agrave"sv, 0x00C0 }, + { "Agravesmall"sv, 0xF7E0 }, + { "Ahookabove"sv, 0x1EA2 }, + { "Aiecyrillic"sv, 0x04D4 }, + { "Ainvertedbreve"sv, 0x0202 }, + { "Alpha"sv, 0x0391 }, + { "Alphatonos"sv, 0x0386 }, + { "Amacron"sv, 0x0100 }, + { "Amonospace"sv, 0xFF21 }, + { "Aogonek"sv, 0x0104 }, + { "Aring"sv, 0x00C5 }, + { "Aringacute"sv, 0x01FA }, + { "Aringbelow"sv, 0x1E00 }, + { "Aringsmall"sv, 0xF7E5 }, + { "Asmall"sv, 0xF761 }, + { "Atilde"sv, 0x00C3 }, + { "Atildesmall"sv, 0xF7E3 }, + { "Aybarmenian"sv, 0x0531 }, + { "B"sv, 0x0042 }, + { "Bcircle"sv, 0x24B7 }, + { "Bdotaccent"sv, 0x1E02 }, + { "Bdotbelow"sv, 0x1E04 }, + { "Becyrillic"sv, 0x0411 }, + { "Benarmenian"sv, 0x0532 }, + { "Beta"sv, 0x0392 }, + { "Bhook"sv, 0x0181 }, + { "Blinebelow"sv, 0x1E06 }, + { "Bmonospace"sv, 0xFF22 }, + { "Brevesmall"sv, 0xF6F4 }, + { "Bsmall"sv, 0xF762 }, + { "Btopbar"sv, 0x0182 }, + { "C"sv, 0x0043 }, + { "Caarmenian"sv, 0x053E }, + { "Cacute"sv, 0x0106 }, + { "Caron"sv, 0xF6CA }, + { "Caronsmall"sv, 0xF6F5 }, + { "Ccaron"sv, 0x010C }, + { "Ccedilla"sv, 0x00C7 }, + { "Ccedillaacute"sv, 0x1E08 }, + { "Ccedillasmall"sv, 0xF7E7 }, + { "Ccircle"sv, 0x24B8 }, + { "Ccircumflex"sv, 0x0108 }, + { "Cdot"sv, 0x010A }, + { "Cdotaccent"sv, 0x010A }, + { "Cedillasmall"sv, 0xF7B8 }, + { "Chaarmenian"sv, 0x0549 }, + { "Cheabkhasiancyrillic"sv, 0x04BC }, + { "Checyrillic"sv, 0x0427 }, + { "Chedescenderabkhasiancyrillic"sv, 0x04BE }, + { "Chedescendercyrillic"sv, 0x04B6 }, + { "Chedieresiscyrillic"sv, 0x04F4 }, + { "Cheharmenian"sv, 0x0543 }, + { "Chekhakassiancyrillic"sv, 0x04CB }, + { "Cheverticalstrokecyrillic"sv, 0x04B8 }, + { "Chi"sv, 0x03A7 }, + { "Chook"sv, 0x0187 }, + { "Circumflexsmall"sv, 0xF6F6 }, + { "Cmonospace"sv, 0xFF23 }, + { "Coarmenian"sv, 0x0551 }, + { "Csmall"sv, 0xF763 }, + { "D"sv, 0x0044 }, + { "DZ"sv, 0x01F1 }, + { "DZcaron"sv, 0x01C4 }, + { "Daarmenian"sv, 0x0534 }, + { "Dafrican"sv, 0x0189 }, + { "Dcaron"sv, 0x010E }, + { "Dcedilla"sv, 0x1E10 }, + { "Dcircle"sv, 0x24B9 }, + { "Dcircumflexbelow"sv, 0x1E12 }, + { "Dcroat"sv, 0x0110 }, + { "Ddotaccent"sv, 0x1E0A }, + { "Ddotbelow"sv, 0x1E0C }, + { "Decyrillic"sv, 0x0414 }, + { "Deicoptic"sv, 0x03EE }, + { "Delta"sv, 0x2206 }, + { "Deltagreek"sv, 0x0394 }, + { "Dhook"sv, 0x018A }, + { "Dieresis"sv, 0xF6CB }, + { "DieresisAcute"sv, 0xF6CC }, + { "DieresisGrave"sv, 0xF6CD }, + { "Dieresissmall"sv, 0xF7A8 }, + { "Digammagreek"sv, 0x03DC }, + { "Djecyrillic"sv, 0x0402 }, + { "Dlinebelow"sv, 0x1E0E }, + { "Dmonospace"sv, 0xFF24 }, + { "Dotaccentsmall"sv, 0xF6F7 }, + { "Dslash"sv, 0x0110 }, + { "Dsmall"sv, 0xF764 }, + { "Dtopbar"sv, 0x018B }, + { "Dz"sv, 0x01F2 }, + { "Dzcaron"sv, 0x01C5 }, + { "Dzeabkhasiancyrillic"sv, 0x04E0 }, + { "Dzecyrillic"sv, 0x0405 }, + { "Dzhecyrillic"sv, 0x040F }, + { "E"sv, 0x0045 }, + { "Eacute"sv, 0x00C9 }, + { "Eacutesmall"sv, 0xF7E9 }, + { "Ebreve"sv, 0x0114 }, + { "Ecaron"sv, 0x011A }, + { "Ecedillabreve"sv, 0x1E1C }, + { "Echarmenian"sv, 0x0535 }, + { "Ecircle"sv, 0x24BA }, + { "Ecircumflex"sv, 0x00CA }, + { "Ecircumflexacute"sv, 0x1EBE }, + { "Ecircumflexbelow"sv, 0x1E18 }, + { "Ecircumflexdotbelow"sv, 0x1EC6 }, + { "Ecircumflexgrave"sv, 0x1EC0 }, + { "Ecircumflexhookabove"sv, 0x1EC2 }, + { "Ecircumflexsmall"sv, 0xF7EA }, + { "Ecircumflextilde"sv, 0x1EC4 }, + { "Ecyrillic"sv, 0x0404 }, + { "Edblgrave"sv, 0x0204 }, + { "Edieresis"sv, 0x00CB }, + { "Edieresissmall"sv, 0xF7EB }, + { "Edot"sv, 0x0116 }, + { "Edotaccent"sv, 0x0116 }, + { "Edotbelow"sv, 0x1EB8 }, + { "Efcyrillic"sv, 0x0424 }, + { "Egrave"sv, 0x00C8 }, + { "Egravesmall"sv, 0xF7E8 }, + { "Eharmenian"sv, 0x0537 }, + { "Ehookabove"sv, 0x1EBA }, + { "Eightroman"sv, 0x2167 }, + { "Einvertedbreve"sv, 0x0206 }, + { "Eiotifiedcyrillic"sv, 0x0464 }, + { "Elcyrillic"sv, 0x041B }, + { "Elevenroman"sv, 0x216A }, + { "Emacron"sv, 0x0112 }, + { "Emacronacute"sv, 0x1E16 }, + { "Emacrongrave"sv, 0x1E14 }, + { "Emcyrillic"sv, 0x041C }, + { "Emonospace"sv, 0xFF25 }, + { "Encyrillic"sv, 0x041D }, + { "Endescendercyrillic"sv, 0x04A2 }, + { "Eng"sv, 0x014A }, + { "Enghecyrillic"sv, 0x04A4 }, + { "Enhookcyrillic"sv, 0x04C7 }, + { "Eogonek"sv, 0x0118 }, + { "Eopen"sv, 0x0190 }, + { "Epsilon"sv, 0x0395 }, + { "Epsilontonos"sv, 0x0388 }, + { "Ercyrillic"sv, 0x0420 }, + { "Ereversed"sv, 0x018E }, + { "Ereversedcyrillic"sv, 0x042D }, + { "Escyrillic"sv, 0x0421 }, + { "Esdescendercyrillic"sv, 0x04AA }, + { "Esh"sv, 0x01A9 }, + { "Esmall"sv, 0xF765 }, + { "Eta"sv, 0x0397 }, + { "Etarmenian"sv, 0x0538 }, + { "Etatonos"sv, 0x0389 }, + { "Eth"sv, 0x00D0 }, + { "Ethsmall"sv, 0xF7F0 }, + { "Etilde"sv, 0x1EBC }, + { "Etildebelow"sv, 0x1E1A }, + { "Euro"sv, 0x20AC }, + { "Ezh"sv, 0x01B7 }, + { "Ezhcaron"sv, 0x01EE }, + { "Ezhreversed"sv, 0x01B8 }, + { "F"sv, 0x0046 }, + { "Fcircle"sv, 0x24BB }, + { "Fdotaccent"sv, 0x1E1E }, + { "Feharmenian"sv, 0x0556 }, + { "Feicoptic"sv, 0x03E4 }, + { "Fhook"sv, 0x0191 }, + { "Fitacyrillic"sv, 0x0472 }, + { "Fiveroman"sv, 0x2164 }, + { "Fmonospace"sv, 0xFF26 }, + { "Fourroman"sv, 0x2163 }, + { "Fsmall"sv, 0xF766 }, + { "G"sv, 0x0047 }, + { "GBsquare"sv, 0x3387 }, + { "Gacute"sv, 0x01F4 }, + { "Gamma"sv, 0x0393 }, + { "Gammaafrican"sv, 0x0194 }, + { "Gangiacoptic"sv, 0x03EA }, + { "Gbreve"sv, 0x011E }, + { "Gcaron"sv, 0x01E6 }, + { "Gcedilla"sv, 0x0122 }, + { "Gcircle"sv, 0x24BC }, + { "Gcircumflex"sv, 0x011C }, + { "Gcommaaccent"sv, 0x0122 }, + { "Gdot"sv, 0x0120 }, + { "Gdotaccent"sv, 0x0120 }, + { "Gecyrillic"sv, 0x0413 }, + { "Ghadarmenian"sv, 0x0542 }, + { "Ghemiddlehookcyrillic"sv, 0x0494 }, + { "Ghestrokecyrillic"sv, 0x0492 }, + { "Gheupturncyrillic"sv, 0x0490 }, + { "Ghook"sv, 0x0193 }, + { "Gimarmenian"sv, 0x0533 }, + { "Gjecyrillic"sv, 0x0403 }, + { "Gmacron"sv, 0x1E20 }, + { "Gmonospace"sv, 0xFF27 }, + { "Grave"sv, 0xF6CE }, + { "Gravesmall"sv, 0xF760 }, + { "Gsmall"sv, 0xF767 }, + { "Gsmallhook"sv, 0x029B }, + { "Gstroke"sv, 0x01E4 }, + { "H"sv, 0x0048 }, + { "H18533"sv, 0x25CF }, + { "H18543"sv, 0x25AA }, + { "H18551"sv, 0x25AB }, + { "H22073"sv, 0x25A1 }, + { "HPsquare"sv, 0x33CB }, + { "Haabkhasiancyrillic"sv, 0x04A8 }, + { "Hadescendercyrillic"sv, 0x04B2 }, + { "Hardsigncyrillic"sv, 0x042A }, + { "Hbar"sv, 0x0126 }, + { "Hbrevebelow"sv, 0x1E2A }, + { "Hcedilla"sv, 0x1E28 }, + { "Hcircle"sv, 0x24BD }, + { "Hcircumflex"sv, 0x0124 }, + { "Hdieresis"sv, 0x1E26 }, + { "Hdotaccent"sv, 0x1E22 }, + { "Hdotbelow"sv, 0x1E24 }, + { "Hmonospace"sv, 0xFF28 }, + { "Hoarmenian"sv, 0x0540 }, + { "Horicoptic"sv, 0x03E8 }, + { "Hsmall"sv, 0xF768 }, + { "Hungarumlaut"sv, 0xF6CF }, + { "Hungarumlautsmall"sv, 0xF6F8 }, + { "Hzsquare"sv, 0x3390 }, + { "I"sv, 0x0049 }, + { "IAcyrillic"sv, 0x042F }, + { "IJ"sv, 0x0132 }, + { "IUcyrillic"sv, 0x042E }, + { "Iacute"sv, 0x00CD }, + { "Iacutesmall"sv, 0xF7ED }, + { "Ibreve"sv, 0x012C }, + { "Icaron"sv, 0x01CF }, + { "Icircle"sv, 0x24BE }, + { "Icircumflex"sv, 0x00CE }, + { "Icircumflexsmall"sv, 0xF7EE }, + { "Icyrillic"sv, 0x0406 }, + { "Idblgrave"sv, 0x0208 }, + { "Idieresis"sv, 0x00CF }, + { "Idieresisacute"sv, 0x1E2E }, + { "Idieresiscyrillic"sv, 0x04E4 }, + { "Idieresissmall"sv, 0xF7EF }, + { "Idot"sv, 0x0130 }, + { "Idotaccent"sv, 0x0130 }, + { "Idotbelow"sv, 0x1ECA }, + { "Iebrevecyrillic"sv, 0x04D6 }, + { "Iecyrillic"sv, 0x0415 }, + { "Ifraktur"sv, 0x2111 }, + { "Igrave"sv, 0x00CC }, + { "Igravesmall"sv, 0xF7EC }, + { "Ihookabove"sv, 0x1EC8 }, + { "Iicyrillic"sv, 0x0418 }, + { "Iinvertedbreve"sv, 0x020A }, + { "Iishortcyrillic"sv, 0x0419 }, + { "Imacron"sv, 0x012A }, + { "Imacroncyrillic"sv, 0x04E2 }, + { "Imonospace"sv, 0xFF29 }, + { "Iniarmenian"sv, 0x053B }, + { "Iocyrillic"sv, 0x0401 }, + { "Iogonek"sv, 0x012E }, + { "Iota"sv, 0x0399 }, + { "Iotaafrican"sv, 0x0196 }, + { "Iotadieresis"sv, 0x03AA }, + { "Iotatonos"sv, 0x038A }, + { "Ismall"sv, 0xF769 }, + { "Istroke"sv, 0x0197 }, + { "Itilde"sv, 0x0128 }, + { "Itildebelow"sv, 0x1E2C }, + { "Izhitsacyrillic"sv, 0x0474 }, + { "Izhitsadblgravecyrillic"sv, 0x0476 }, + { "J"sv, 0x004A }, + { "Jaarmenian"sv, 0x0541 }, + { "Jcircle"sv, 0x24BF }, + { "Jcircumflex"sv, 0x0134 }, + { "Jecyrillic"sv, 0x0408 }, + { "Jheharmenian"sv, 0x054B }, + { "Jmonospace"sv, 0xFF2A }, + { "Jsmall"sv, 0xF76A }, + { "K"sv, 0x004B }, + { "KBsquare"sv, 0x3385 }, + { "KKsquare"sv, 0x33CD }, + { "Kabashkircyrillic"sv, 0x04A0 }, + { "Kacute"sv, 0x1E30 }, + { "Kacyrillic"sv, 0x041A }, + { "Kadescendercyrillic"sv, 0x049A }, + { "Kahookcyrillic"sv, 0x04C3 }, + { "Kappa"sv, 0x039A }, + { "Kastrokecyrillic"sv, 0x049E }, + { "Kaverticalstrokecyrillic"sv, 0x049C }, + { "Kcaron"sv, 0x01E8 }, + { "Kcedilla"sv, 0x0136 }, + { "Kcircle"sv, 0x24C0 }, + { "Kcommaaccent"sv, 0x0136 }, + { "Kdotbelow"sv, 0x1E32 }, + { "Keharmenian"sv, 0x0554 }, + { "Kenarmenian"sv, 0x053F }, + { "Khacyrillic"sv, 0x0425 }, + { "Kheicoptic"sv, 0x03E6 }, + { "Khook"sv, 0x0198 }, + { "Kjecyrillic"sv, 0x040C }, + { "Klinebelow"sv, 0x1E34 }, + { "Kmonospace"sv, 0xFF2B }, + { "Koppacyrillic"sv, 0x0480 }, + { "Koppagreek"sv, 0x03DE }, + { "Ksicyrillic"sv, 0x046E }, + { "Ksmall"sv, 0xF76B }, + { "L"sv, 0x004C }, + { "LJ"sv, 0x01C7 }, + { "LL"sv, 0xF6BF }, + { "Lacute"sv, 0x0139 }, + { "Lambda"sv, 0x039B }, + { "Lcaron"sv, 0x013D }, + { "Lcedilla"sv, 0x013B }, + { "Lcircle"sv, 0x24C1 }, + { "Lcircumflexbelow"sv, 0x1E3C }, + { "Lcommaaccent"sv, 0x013B }, + { "Ldot"sv, 0x013F }, + { "Ldotaccent"sv, 0x013F }, + { "Ldotbelow"sv, 0x1E36 }, + { "Ldotbelowmacron"sv, 0x1E38 }, + { "Liwnarmenian"sv, 0x053C }, + { "Lj"sv, 0x01C8 }, + { "Ljecyrillic"sv, 0x0409 }, + { "Llinebelow"sv, 0x1E3A }, + { "Lmonospace"sv, 0xFF2C }, + { "Lslash"sv, 0x0141 }, + { "Lslashsmall"sv, 0xF6F9 }, + { "Lsmall"sv, 0xF76C }, + { "M"sv, 0x004D }, + { "MBsquare"sv, 0x3386 }, + { "Macron"sv, 0xF6D0 }, + { "Macronsmall"sv, 0xF7AF }, + { "Macute"sv, 0x1E3E }, + { "Mcircle"sv, 0x24C2 }, + { "Mdotaccent"sv, 0x1E40 }, + { "Mdotbelow"sv, 0x1E42 }, + { "Menarmenian"sv, 0x0544 }, + { "Mmonospace"sv, 0xFF2D }, + { "Msmall"sv, 0xF76D }, + { "Mturned"sv, 0x019C }, + { "Mu"sv, 0x039C }, + { "N"sv, 0x004E }, + { "NJ"sv, 0x01CA }, + { "Nacute"sv, 0x0143 }, + { "Ncaron"sv, 0x0147 }, + { "Ncedilla"sv, 0x0145 }, + { "Ncircle"sv, 0x24C3 }, + { "Ncircumflexbelow"sv, 0x1E4A }, + { "Ncommaaccent"sv, 0x0145 }, + { "Ndotaccent"sv, 0x1E44 }, + { "Ndotbelow"sv, 0x1E46 }, + { "Nhookleft"sv, 0x019D }, + { "Nineroman"sv, 0x2168 }, + { "Nj"sv, 0x01CB }, + { "Njecyrillic"sv, 0x040A }, + { "Nlinebelow"sv, 0x1E48 }, + { "Nmonospace"sv, 0xFF2E }, + { "Nowarmenian"sv, 0x0546 }, + { "Nsmall"sv, 0xF76E }, + { "Ntilde"sv, 0x00D1 }, + { "Ntildesmall"sv, 0xF7F1 }, + { "Nu"sv, 0x039D }, + { "O"sv, 0x004F }, + { "OE"sv, 0x0152 }, + { "OEsmall"sv, 0xF6FA }, + { "Oacute"sv, 0x00D3 }, + { "Oacutesmall"sv, 0xF7F3 }, + { "Obarredcyrillic"sv, 0x04E8 }, + { "Obarreddieresiscyrillic"sv, 0x04EA }, + { "Obreve"sv, 0x014E }, + { "Ocaron"sv, 0x01D1 }, + { "Ocenteredtilde"sv, 0x019F }, + { "Ocircle"sv, 0x24C4 }, + { "Ocircumflex"sv, 0x00D4 }, + { "Ocircumflexacute"sv, 0x1ED0 }, + { "Ocircumflexdotbelow"sv, 0x1ED8 }, + { "Ocircumflexgrave"sv, 0x1ED2 }, + { "Ocircumflexhookabove"sv, 0x1ED4 }, + { "Ocircumflexsmall"sv, 0xF7F4 }, + { "Ocircumflextilde"sv, 0x1ED6 }, + { "Ocyrillic"sv, 0x041E }, + { "Odblacute"sv, 0x0150 }, + { "Odblgrave"sv, 0x020C }, + { "Odieresis"sv, 0x00D6 }, + { "Odieresiscyrillic"sv, 0x04E6 }, + { "Odieresissmall"sv, 0xF7F6 }, + { "Odotbelow"sv, 0x1ECC }, + { "Ogoneksmall"sv, 0xF6FB }, + { "Ograve"sv, 0x00D2 }, + { "Ogravesmall"sv, 0xF7F2 }, + { "Oharmenian"sv, 0x0555 }, + { "Ohm"sv, 0x2126 }, + { "Ohookabove"sv, 0x1ECE }, + { "Ohorn"sv, 0x01A0 }, + { "Ohornacute"sv, 0x1EDA }, + { "Ohorndotbelow"sv, 0x1EE2 }, + { "Ohorngrave"sv, 0x1EDC }, + { "Ohornhookabove"sv, 0x1EDE }, + { "Ohorntilde"sv, 0x1EE0 }, + { "Ohungarumlaut"sv, 0x0150 }, + { "Oi"sv, 0x01A2 }, + { "Oinvertedbreve"sv, 0x020E }, + { "Omacron"sv, 0x014C }, + { "Omacronacute"sv, 0x1E52 }, + { "Omacrongrave"sv, 0x1E50 }, + { "Omega"sv, 0x2126 }, + { "Omegacyrillic"sv, 0x0460 }, + { "Omegagreek"sv, 0x03A9 }, + { "Omegaroundcyrillic"sv, 0x047A }, + { "Omegatitlocyrillic"sv, 0x047C }, + { "Omegatonos"sv, 0x038F }, + { "Omicron"sv, 0x039F }, + { "Omicrontonos"sv, 0x038C }, + { "Omonospace"sv, 0xFF2F }, + { "Oneroman"sv, 0x2160 }, + { "Oogonek"sv, 0x01EA }, + { "Oogonekmacron"sv, 0x01EC }, + { "Oopen"sv, 0x0186 }, + { "Oslash"sv, 0x00D8 }, + { "Oslashacute"sv, 0x01FE }, + { "Oslashsmall"sv, 0xF7F8 }, + { "Osmall"sv, 0xF76F }, + { "Ostrokeacute"sv, 0x01FE }, + { "Otcyrillic"sv, 0x047E }, + { "Otilde"sv, 0x00D5 }, + { "Otildeacute"sv, 0x1E4C }, + { "Otildedieresis"sv, 0x1E4E }, + { "Otildesmall"sv, 0xF7F5 }, + { "P"sv, 0x0050 }, + { "Pacute"sv, 0x1E54 }, + { "Pcircle"sv, 0x24C5 }, + { "Pdotaccent"sv, 0x1E56 }, + { "Pecyrillic"sv, 0x041F }, + { "Peharmenian"sv, 0x054A }, + { "Pemiddlehookcyrillic"sv, 0x04A6 }, + { "Phi"sv, 0x03A6 }, + { "Phook"sv, 0x01A4 }, + { "Pi"sv, 0x03A0 }, + { "Piwrarmenian"sv, 0x0553 }, + { "Pmonospace"sv, 0xFF30 }, + { "Psi"sv, 0x03A8 }, + { "Psicyrillic"sv, 0x0470 }, + { "Psmall"sv, 0xF770 }, + { "Q"sv, 0x0051 }, + { "Qcircle"sv, 0x24C6 }, + { "Qmonospace"sv, 0xFF31 }, + { "Qsmall"sv, 0xF771 }, + { "R"sv, 0x0052 }, + { "Raarmenian"sv, 0x054C }, + { "Racute"sv, 0x0154 }, + { "Rcaron"sv, 0x0158 }, + { "Rcedilla"sv, 0x0156 }, + { "Rcircle"sv, 0x24C7 }, + { "Rcommaaccent"sv, 0x0156 }, + { "Rdblgrave"sv, 0x0210 }, + { "Rdotaccent"sv, 0x1E58 }, + { "Rdotbelow"sv, 0x1E5A }, + { "Rdotbelowmacron"sv, 0x1E5C }, + { "Reharmenian"sv, 0x0550 }, + { "Rfraktur"sv, 0x211C }, + { "Rho"sv, 0x03A1 }, + { "Ringsmall"sv, 0xF6FC }, + { "Rinvertedbreve"sv, 0x0212 }, + { "Rlinebelow"sv, 0x1E5E }, + { "Rmonospace"sv, 0xFF32 }, + { "Rsmall"sv, 0xF772 }, + { "Rsmallinverted"sv, 0x0281 }, + { "Rsmallinvertedsuperior"sv, 0x02B6 }, + { "S"sv, 0x0053 }, + { "SF010000"sv, 0x250C }, + { "SF020000"sv, 0x2514 }, + { "SF030000"sv, 0x2510 }, + { "SF040000"sv, 0x2518 }, + { "SF050000"sv, 0x253C }, + { "SF060000"sv, 0x252C }, + { "SF070000"sv, 0x2534 }, + { "SF080000"sv, 0x251C }, + { "SF090000"sv, 0x2524 }, + { "SF100000"sv, 0x2500 }, + { "SF110000"sv, 0x2502 }, + { "SF190000"sv, 0x2561 }, + { "SF200000"sv, 0x2562 }, + { "SF210000"sv, 0x2556 }, + { "SF220000"sv, 0x2555 }, + { "SF230000"sv, 0x2563 }, + { "SF240000"sv, 0x2551 }, + { "SF250000"sv, 0x2557 }, + { "SF260000"sv, 0x255D }, + { "SF270000"sv, 0x255C }, + { "SF280000"sv, 0x255B }, + { "SF360000"sv, 0x255E }, + { "SF370000"sv, 0x255F }, + { "SF380000"sv, 0x255A }, + { "SF390000"sv, 0x2554 }, + { "SF400000"sv, 0x2569 }, + { "SF410000"sv, 0x2566 }, + { "SF420000"sv, 0x2560 }, + { "SF430000"sv, 0x2550 }, + { "SF440000"sv, 0x256C }, + { "SF450000"sv, 0x2567 }, + { "SF460000"sv, 0x2568 }, + { "SF470000"sv, 0x2564 }, + { "SF480000"sv, 0x2565 }, + { "SF490000"sv, 0x2559 }, + { "SF500000"sv, 0x2558 }, + { "SF510000"sv, 0x2552 }, + { "SF520000"sv, 0x2553 }, + { "SF530000"sv, 0x256B }, + { "SF540000"sv, 0x256A }, + { "Sacute"sv, 0x015A }, + { "Sacutedotaccent"sv, 0x1E64 }, + { "Sampigreek"sv, 0x03E0 }, + { "Scaron"sv, 0x0160 }, + { "Scarondotaccent"sv, 0x1E66 }, + { "Scaronsmall"sv, 0xF6FD }, + { "Scedilla"sv, 0x015E }, + { "Schwa"sv, 0x018F }, + { "Schwacyrillic"sv, 0x04D8 }, + { "Schwadieresiscyrillic"sv, 0x04DA }, + { "Scircle"sv, 0x24C8 }, + { "Scircumflex"sv, 0x015C }, + { "Scommaaccent"sv, 0x0218 }, + { "Sdotaccent"sv, 0x1E60 }, + { "Sdotbelow"sv, 0x1E62 }, + { "Sdotbelowdotaccent"sv, 0x1E68 }, + { "Seharmenian"sv, 0x054D }, + { "Sevenroman"sv, 0x2166 }, + { "Shaarmenian"sv, 0x0547 }, + { "Shacyrillic"sv, 0x0428 }, + { "Shchacyrillic"sv, 0x0429 }, + { "Sheicoptic"sv, 0x03E2 }, + { "Shhacyrillic"sv, 0x04BA }, + { "Shimacoptic"sv, 0x03EC }, + { "Sigma"sv, 0x03A3 }, + { "Sixroman"sv, 0x2165 }, + { "Smonospace"sv, 0xFF33 }, + { "Softsigncyrillic"sv, 0x042C }, + { "Ssmall"sv, 0xF773 }, + { "Stigmagreek"sv, 0x03DA }, + { "T"sv, 0x0054 }, + { "Tau"sv, 0x03A4 }, + { "Tbar"sv, 0x0166 }, + { "Tcaron"sv, 0x0164 }, + { "Tcedilla"sv, 0x0162 }, + { "Tcircle"sv, 0x24C9 }, + { "Tcircumflexbelow"sv, 0x1E70 }, + { "Tcommaaccent"sv, 0x0162 }, + { "Tdotaccent"sv, 0x1E6A }, + { "Tdotbelow"sv, 0x1E6C }, + { "Tecyrillic"sv, 0x0422 }, + { "Tedescendercyrillic"sv, 0x04AC }, + { "Tenroman"sv, 0x2169 }, + { "Tetsecyrillic"sv, 0x04B4 }, + { "Theta"sv, 0x0398 }, + { "Thook"sv, 0x01AC }, + { "Thorn"sv, 0x00DE }, + { "Thornsmall"sv, 0xF7FE }, + { "Threeroman"sv, 0x2162 }, + { "Tildesmall"sv, 0xF6FE }, + { "Tiwnarmenian"sv, 0x054F }, + { "Tlinebelow"sv, 0x1E6E }, + { "Tmonospace"sv, 0xFF34 }, + { "Toarmenian"sv, 0x0539 }, + { "Tonefive"sv, 0x01BC }, + { "Tonesix"sv, 0x0184 }, + { "Tonetwo"sv, 0x01A7 }, + { "Tretroflexhook"sv, 0x01AE }, + { "Tsecyrillic"sv, 0x0426 }, + { "Tshecyrillic"sv, 0x040B }, + { "Tsmall"sv, 0xF774 }, + { "Twelveroman"sv, 0x216B }, + { "Tworoman"sv, 0x2161 }, + { "U"sv, 0x0055 }, + { "Uacute"sv, 0x00DA }, + { "Uacutesmall"sv, 0xF7FA }, + { "Ubreve"sv, 0x016C }, + { "Ucaron"sv, 0x01D3 }, + { "Ucircle"sv, 0x24CA }, + { "Ucircumflex"sv, 0x00DB }, + { "Ucircumflexbelow"sv, 0x1E76 }, + { "Ucircumflexsmall"sv, 0xF7FB }, + { "Ucyrillic"sv, 0x0423 }, + { "Udblacute"sv, 0x0170 }, + { "Udblgrave"sv, 0x0214 }, + { "Udieresis"sv, 0x00DC }, + { "Udieresisacute"sv, 0x01D7 }, + { "Udieresisbelow"sv, 0x1E72 }, + { "Udieresiscaron"sv, 0x01D9 }, + { "Udieresiscyrillic"sv, 0x04F0 }, + { "Udieresisgrave"sv, 0x01DB }, + { "Udieresismacron"sv, 0x01D5 }, + { "Udieresissmall"sv, 0xF7FC }, + { "Udotbelow"sv, 0x1EE4 }, + { "Ugrave"sv, 0x00D9 }, + { "Ugravesmall"sv, 0xF7F9 }, + { "Uhookabove"sv, 0x1EE6 }, + { "Uhorn"sv, 0x01AF }, + { "Uhornacute"sv, 0x1EE8 }, + { "Uhorndotbelow"sv, 0x1EF0 }, + { "Uhorngrave"sv, 0x1EEA }, + { "Uhornhookabove"sv, 0x1EEC }, + { "Uhorntilde"sv, 0x1EEE }, + { "Uhungarumlaut"sv, 0x0170 }, + { "Uhungarumlautcyrillic"sv, 0x04F2 }, + { "Uinvertedbreve"sv, 0x0216 }, + { "Ukcyrillic"sv, 0x0478 }, + { "Umacron"sv, 0x016A }, + { "Umacroncyrillic"sv, 0x04EE }, + { "Umacrondieresis"sv, 0x1E7A }, + { "Umonospace"sv, 0xFF35 }, + { "Uogonek"sv, 0x0172 }, + { "Upsilon"sv, 0x03A5 }, + { "Upsilon1"sv, 0x03D2 }, + { "Upsilonacutehooksymbolgreek"sv, 0x03D3 }, + { "Upsilonafrican"sv, 0x01B1 }, + { "Upsilondieresis"sv, 0x03AB }, + { "Upsilondieresishooksymbolgreek"sv, 0x03D4 }, + { "Upsilonhooksymbol"sv, 0x03D2 }, + { "Upsilontonos"sv, 0x038E }, + { "Uring"sv, 0x016E }, + { "Ushortcyrillic"sv, 0x040E }, + { "Usmall"sv, 0xF775 }, + { "Ustraightcyrillic"sv, 0x04AE }, + { "Ustraightstrokecyrillic"sv, 0x04B0 }, + { "Utilde"sv, 0x0168 }, + { "Utildeacute"sv, 0x1E78 }, + { "Utildebelow"sv, 0x1E74 }, + { "V"sv, 0x0056 }, + { "Vcircle"sv, 0x24CB }, + { "Vdotbelow"sv, 0x1E7E }, + { "Vecyrillic"sv, 0x0412 }, + { "Vewarmenian"sv, 0x054E }, + { "Vhook"sv, 0x01B2 }, + { "Vmonospace"sv, 0xFF36 }, + { "Voarmenian"sv, 0x0548 }, + { "Vsmall"sv, 0xF776 }, + { "Vtilde"sv, 0x1E7C }, + { "W"sv, 0x0057 }, + { "Wacute"sv, 0x1E82 }, + { "Wcircle"sv, 0x24CC }, + { "Wcircumflex"sv, 0x0174 }, + { "Wdieresis"sv, 0x1E84 }, + { "Wdotaccent"sv, 0x1E86 }, + { "Wdotbelow"sv, 0x1E88 }, + { "Wgrave"sv, 0x1E80 }, + { "Wmonospace"sv, 0xFF37 }, + { "Wsmall"sv, 0xF777 }, + { "X"sv, 0x0058 }, + { "Xcircle"sv, 0x24CD }, + { "Xdieresis"sv, 0x1E8C }, + { "Xdotaccent"sv, 0x1E8A }, + { "Xeharmenian"sv, 0x053D }, + { "Xi"sv, 0x039E }, + { "Xmonospace"sv, 0xFF38 }, + { "Xsmall"sv, 0xF778 }, + { "Y"sv, 0x0059 }, + { "Yacute"sv, 0x00DD }, + { "Yacutesmall"sv, 0xF7FD }, + { "Yatcyrillic"sv, 0x0462 }, + { "Ycircle"sv, 0x24CE }, + { "Ycircumflex"sv, 0x0176 }, + { "Ydieresis"sv, 0x0178 }, + { "Ydieresissmall"sv, 0xF7FF }, + { "Ydotaccent"sv, 0x1E8E }, + { "Ydotbelow"sv, 0x1EF4 }, + { "Yericyrillic"sv, 0x042B }, + { "Yerudieresiscyrillic"sv, 0x04F8 }, + { "Ygrave"sv, 0x1EF2 }, + { "Yhook"sv, 0x01B3 }, + { "Yhookabove"sv, 0x1EF6 }, + { "Yiarmenian"sv, 0x0545 }, + { "Yicyrillic"sv, 0x0407 }, + { "Yiwnarmenian"sv, 0x0552 }, + { "Ymonospace"sv, 0xFF39 }, + { "Ysmall"sv, 0xF779 }, + { "Ytilde"sv, 0x1EF8 }, + { "Yusbigcyrillic"sv, 0x046A }, + { "Yusbigiotifiedcyrillic"sv, 0x046C }, + { "Yuslittlecyrillic"sv, 0x0466 }, + { "Yuslittleiotifiedcyrillic"sv, 0x0468 }, + { "Z"sv, 0x005A }, + { "Zaarmenian"sv, 0x0536 }, + { "Zacute"sv, 0x0179 }, + { "Zcaron"sv, 0x017D }, + { "Zcaronsmall"sv, 0xF6FF }, + { "Zcircle"sv, 0x24CF }, + { "Zcircumflex"sv, 0x1E90 }, + { "Zdot"sv, 0x017B }, + { "Zdotaccent"sv, 0x017B }, + { "Zdotbelow"sv, 0x1E92 }, + { "Zecyrillic"sv, 0x0417 }, + { "Zedescendercyrillic"sv, 0x0498 }, + { "Zedieresiscyrillic"sv, 0x04DE }, + { "Zeta"sv, 0x0396 }, + { "Zhearmenian"sv, 0x053A }, + { "Zhebrevecyrillic"sv, 0x04C1 }, + { "Zhecyrillic"sv, 0x0416 }, + { "Zhedescendercyrillic"sv, 0x0496 }, + { "Zhedieresiscyrillic"sv, 0x04DC }, + { "Zlinebelow"sv, 0x1E94 }, + { "Zmonospace"sv, 0xFF3A }, + { "Zsmall"sv, 0xF77A }, + { "Zstroke"sv, 0x01B5 }, + { "a"sv, 0x0061 }, + { "aabengali"sv, 0x0986 }, + { "aacute"sv, 0x00E1 }, + { "aadeva"sv, 0x0906 }, + { "aagujarati"sv, 0x0A86 }, + { "aagurmukhi"sv, 0x0A06 }, + { "aamatragurmukhi"sv, 0x0A3E }, + { "aarusquare"sv, 0x3303 }, + { "aavowelsignbengali"sv, 0x09BE }, + { "aavowelsigndeva"sv, 0x093E }, + { "aavowelsigngujarati"sv, 0x0ABE }, + { "abbreviationmarkarmenian"sv, 0x055F }, + { "abbreviationsigndeva"sv, 0x0970 }, + { "abengali"sv, 0x0985 }, + { "abopomofo"sv, 0x311A }, + { "abreve"sv, 0x0103 }, + { "abreveacute"sv, 0x1EAF }, + { "abrevecyrillic"sv, 0x04D1 }, + { "abrevedotbelow"sv, 0x1EB7 }, + { "abrevegrave"sv, 0x1EB1 }, + { "abrevehookabove"sv, 0x1EB3 }, + { "abrevetilde"sv, 0x1EB5 }, + { "acaron"sv, 0x01CE }, + { "acircle"sv, 0x24D0 }, + { "acircumflex"sv, 0x00E2 }, + { "acircumflexacute"sv, 0x1EA5 }, + { "acircumflexdotbelow"sv, 0x1EAD }, + { "acircumflexgrave"sv, 0x1EA7 }, + { "acircumflexhookabove"sv, 0x1EA9 }, + { "acircumflextilde"sv, 0x1EAB }, + { "acute"sv, 0x00B4 }, + { "acutebelowcmb"sv, 0x0317 }, + { "acutecmb"sv, 0x0301 }, + { "acutecomb"sv, 0x0301 }, + { "acutedeva"sv, 0x0954 }, + { "acutelowmod"sv, 0x02CF }, + { "acutetonecmb"sv, 0x0341 }, + { "acyrillic"sv, 0x0430 }, + { "adblgrave"sv, 0x0201 }, + { "addakgurmukhi"sv, 0x0A71 }, + { "adeva"sv, 0x0905 }, + { "adieresis"sv, 0x00E4 }, + { "adieresiscyrillic"sv, 0x04D3 }, + { "adieresismacron"sv, 0x01DF }, + { "adotbelow"sv, 0x1EA1 }, + { "adotmacron"sv, 0x01E1 }, + { "ae"sv, 0x00E6 }, + { "aeacute"sv, 0x01FD }, + { "aekorean"sv, 0x3150 }, + { "aemacron"sv, 0x01E3 }, + { "afii00208"sv, 0x2015 }, + { "afii08941"sv, 0x20A4 }, + { "afii10017"sv, 0x0410 }, + { "afii10018"sv, 0x0411 }, + { "afii10019"sv, 0x0412 }, + { "afii10020"sv, 0x0413 }, + { "afii10021"sv, 0x0414 }, + { "afii10022"sv, 0x0415 }, + { "afii10023"sv, 0x0401 }, + { "afii10024"sv, 0x0416 }, + { "afii10025"sv, 0x0417 }, + { "afii10026"sv, 0x0418 }, + { "afii10027"sv, 0x0419 }, + { "afii10028"sv, 0x041A }, + { "afii10029"sv, 0x041B }, + { "afii10030"sv, 0x041C }, + { "afii10031"sv, 0x041D }, + { "afii10032"sv, 0x041E }, + { "afii10033"sv, 0x041F }, + { "afii10034"sv, 0x0420 }, + { "afii10035"sv, 0x0421 }, + { "afii10036"sv, 0x0422 }, + { "afii10037"sv, 0x0423 }, + { "afii10038"sv, 0x0424 }, + { "afii10039"sv, 0x0425 }, + { "afii10040"sv, 0x0426 }, + { "afii10041"sv, 0x0427 }, + { "afii10042"sv, 0x0428 }, + { "afii10043"sv, 0x0429 }, + { "afii10044"sv, 0x042A }, + { "afii10045"sv, 0x042B }, + { "afii10046"sv, 0x042C }, + { "afii10047"sv, 0x042D }, + { "afii10048"sv, 0x042E }, + { "afii10049"sv, 0x042F }, + { "afii10050"sv, 0x0490 }, + { "afii10051"sv, 0x0402 }, + { "afii10052"sv, 0x0403 }, + { "afii10053"sv, 0x0404 }, + { "afii10054"sv, 0x0405 }, + { "afii10055"sv, 0x0406 }, + { "afii10056"sv, 0x0407 }, + { "afii10057"sv, 0x0408 }, + { "afii10058"sv, 0x0409 }, + { "afii10059"sv, 0x040A }, + { "afii10060"sv, 0x040B }, + { "afii10061"sv, 0x040C }, + { "afii10062"sv, 0x040E }, + { "afii10063"sv, 0xF6C4 }, + { "afii10064"sv, 0xF6C5 }, + { "afii10065"sv, 0x0430 }, + { "afii10066"sv, 0x0431 }, + { "afii10067"sv, 0x0432 }, + { "afii10068"sv, 0x0433 }, + { "afii10069"sv, 0x0434 }, + { "afii10070"sv, 0x0435 }, + { "afii10071"sv, 0x0451 }, + { "afii10072"sv, 0x0436 }, + { "afii10073"sv, 0x0437 }, + { "afii10074"sv, 0x0438 }, + { "afii10075"sv, 0x0439 }, + { "afii10076"sv, 0x043A }, + { "afii10077"sv, 0x043B }, + { "afii10078"sv, 0x043C }, + { "afii10079"sv, 0x043D }, + { "afii10080"sv, 0x043E }, + { "afii10081"sv, 0x043F }, + { "afii10082"sv, 0x0440 }, + { "afii10083"sv, 0x0441 }, + { "afii10084"sv, 0x0442 }, + { "afii10085"sv, 0x0443 }, + { "afii10086"sv, 0x0444 }, + { "afii10087"sv, 0x0445 }, + { "afii10088"sv, 0x0446 }, + { "afii10089"sv, 0x0447 }, + { "afii10090"sv, 0x0448 }, + { "afii10091"sv, 0x0449 }, + { "afii10092"sv, 0x044A }, + { "afii10093"sv, 0x044B }, + { "afii10094"sv, 0x044C }, + { "afii10095"sv, 0x044D }, + { "afii10096"sv, 0x044E }, + { "afii10097"sv, 0x044F }, + { "afii10098"sv, 0x0491 }, + { "afii10099"sv, 0x0452 }, + { "afii10100"sv, 0x0453 }, + { "afii10101"sv, 0x0454 }, + { "afii10102"sv, 0x0455 }, + { "afii10103"sv, 0x0456 }, + { "afii10104"sv, 0x0457 }, + { "afii10105"sv, 0x0458 }, + { "afii10106"sv, 0x0459 }, + { "afii10107"sv, 0x045A }, + { "afii10108"sv, 0x045B }, + { "afii10109"sv, 0x045C }, + { "afii10110"sv, 0x045E }, + { "afii10145"sv, 0x040F }, + { "afii10146"sv, 0x0462 }, + { "afii10147"sv, 0x0472 }, + { "afii10148"sv, 0x0474 }, + { "afii10192"sv, 0xF6C6 }, + { "afii10193"sv, 0x045F }, + { "afii10194"sv, 0x0463 }, + { "afii10195"sv, 0x0473 }, + { "afii10196"sv, 0x0475 }, + { "afii10831"sv, 0xF6C7 }, + { "afii10832"sv, 0xF6C8 }, + { "afii10846"sv, 0x04D9 }, + { "afii299"sv, 0x200E }, + { "afii300"sv, 0x200F }, + { "afii301"sv, 0x200D }, + { "afii57381"sv, 0x066A }, + { "afii57388"sv, 0x060C }, + { "afii57392"sv, 0x0660 }, + { "afii57393"sv, 0x0661 }, + { "afii57394"sv, 0x0662 }, + { "afii57395"sv, 0x0663 }, + { "afii57396"sv, 0x0664 }, + { "afii57397"sv, 0x0665 }, + { "afii57398"sv, 0x0666 }, + { "afii57399"sv, 0x0667 }, + { "afii57400"sv, 0x0668 }, + { "afii57401"sv, 0x0669 }, + { "afii57403"sv, 0x061B }, + { "afii57407"sv, 0x061F }, + { "afii57409"sv, 0x0621 }, + { "afii57410"sv, 0x0622 }, + { "afii57411"sv, 0x0623 }, + { "afii57412"sv, 0x0624 }, + { "afii57413"sv, 0x0625 }, + { "afii57414"sv, 0x0626 }, + { "afii57415"sv, 0x0627 }, + { "afii57416"sv, 0x0628 }, + { "afii57417"sv, 0x0629 }, + { "afii57418"sv, 0x062A }, + { "afii57419"sv, 0x062B }, + { "afii57420"sv, 0x062C }, + { "afii57421"sv, 0x062D }, + { "afii57422"sv, 0x062E }, + { "afii57423"sv, 0x062F }, + { "afii57424"sv, 0x0630 }, + { "afii57425"sv, 0x0631 }, + { "afii57426"sv, 0x0632 }, + { "afii57427"sv, 0x0633 }, + { "afii57428"sv, 0x0634 }, + { "afii57429"sv, 0x0635 }, + { "afii57430"sv, 0x0636 }, + { "afii57431"sv, 0x0637 }, + { "afii57432"sv, 0x0638 }, + { "afii57433"sv, 0x0639 }, + { "afii57434"sv, 0x063A }, + { "afii57440"sv, 0x0640 }, + { "afii57441"sv, 0x0641 }, + { "afii57442"sv, 0x0642 }, + { "afii57443"sv, 0x0643 }, + { "afii57444"sv, 0x0644 }, + { "afii57445"sv, 0x0645 }, + { "afii57446"sv, 0x0646 }, + { "afii57448"sv, 0x0648 }, + { "afii57449"sv, 0x0649 }, + { "afii57450"sv, 0x064A }, + { "afii57451"sv, 0x064B }, + { "afii57452"sv, 0x064C }, + { "afii57453"sv, 0x064D }, + { "afii57454"sv, 0x064E }, + { "afii57455"sv, 0x064F }, + { "afii57456"sv, 0x0650 }, + { "afii57457"sv, 0x0651 }, + { "afii57458"sv, 0x0652 }, + { "afii57470"sv, 0x0647 }, + { "afii57505"sv, 0x06A4 }, + { "afii57506"sv, 0x067E }, + { "afii57507"sv, 0x0686 }, + { "afii57508"sv, 0x0698 }, + { "afii57509"sv, 0x06AF }, + { "afii57511"sv, 0x0679 }, + { "afii57512"sv, 0x0688 }, + { "afii57513"sv, 0x0691 }, + { "afii57514"sv, 0x06BA }, + { "afii57519"sv, 0x06D2 }, + { "afii57534"sv, 0x06D5 }, + { "afii57636"sv, 0x20AA }, + { "afii57645"sv, 0x05BE }, + { "afii57658"sv, 0x05C3 }, + { "afii57664"sv, 0x05D0 }, + { "afii57665"sv, 0x05D1 }, + { "afii57666"sv, 0x05D2 }, + { "afii57667"sv, 0x05D3 }, + { "afii57668"sv, 0x05D4 }, + { "afii57669"sv, 0x05D5 }, + { "afii57670"sv, 0x05D6 }, + { "afii57671"sv, 0x05D7 }, + { "afii57672"sv, 0x05D8 }, + { "afii57673"sv, 0x05D9 }, + { "afii57674"sv, 0x05DA }, + { "afii57675"sv, 0x05DB }, + { "afii57676"sv, 0x05DC }, + { "afii57677"sv, 0x05DD }, + { "afii57678"sv, 0x05DE }, + { "afii57679"sv, 0x05DF }, + { "afii57680"sv, 0x05E0 }, + { "afii57681"sv, 0x05E1 }, + { "afii57682"sv, 0x05E2 }, + { "afii57683"sv, 0x05E3 }, + { "afii57684"sv, 0x05E4 }, + { "afii57685"sv, 0x05E5 }, + { "afii57686"sv, 0x05E6 }, + { "afii57687"sv, 0x05E7 }, + { "afii57688"sv, 0x05E8 }, + { "afii57689"sv, 0x05E9 }, + { "afii57690"sv, 0x05EA }, + { "afii57694"sv, 0xFB2A }, + { "afii57695"sv, 0xFB2B }, + { "afii57700"sv, 0xFB4B }, + { "afii57705"sv, 0xFB1F }, + { "afii57716"sv, 0x05F0 }, + { "afii57717"sv, 0x05F1 }, + { "afii57718"sv, 0x05F2 }, + { "afii57723"sv, 0xFB35 }, + { "afii57793"sv, 0x05B4 }, + { "afii57794"sv, 0x05B5 }, + { "afii57795"sv, 0x05B6 }, + { "afii57796"sv, 0x05BB }, + { "afii57797"sv, 0x05B8 }, + { "afii57798"sv, 0x05B7 }, + { "afii57799"sv, 0x05B0 }, + { "afii57800"sv, 0x05B2 }, + { "afii57801"sv, 0x05B1 }, + { "afii57802"sv, 0x05B3 }, + { "afii57803"sv, 0x05C2 }, + { "afii57804"sv, 0x05C1 }, + { "afii57806"sv, 0x05B9 }, + { "afii57807"sv, 0x05BC }, + { "afii57839"sv, 0x05BD }, + { "afii57841"sv, 0x05BF }, + { "afii57842"sv, 0x05C0 }, + { "afii57929"sv, 0x02BC }, + { "afii61248"sv, 0x2105 }, + { "afii61289"sv, 0x2113 }, + { "afii61352"sv, 0x2116 }, + { "afii61573"sv, 0x202C }, + { "afii61574"sv, 0x202D }, + { "afii61575"sv, 0x202E }, + { "afii61664"sv, 0x200C }, + { "afii63167"sv, 0x066D }, + { "afii64937"sv, 0x02BD }, + { "agrave"sv, 0x00E0 }, + { "agujarati"sv, 0x0A85 }, + { "agurmukhi"sv, 0x0A05 }, + { "ahiragana"sv, 0x3042 }, + { "ahookabove"sv, 0x1EA3 }, + { "aibengali"sv, 0x0990 }, + { "aibopomofo"sv, 0x311E }, + { "aideva"sv, 0x0910 }, + { "aiecyrillic"sv, 0x04D5 }, + { "aigujarati"sv, 0x0A90 }, + { "aigurmukhi"sv, 0x0A10 }, + { "aimatragurmukhi"sv, 0x0A48 }, + { "ainarabic"sv, 0x0639 }, + { "ainfinalarabic"sv, 0xFECA }, + { "aininitialarabic"sv, 0xFECB }, + { "ainmedialarabic"sv, 0xFECC }, + { "ainvertedbreve"sv, 0x0203 }, + { "aivowelsignbengali"sv, 0x09C8 }, + { "aivowelsigndeva"sv, 0x0948 }, + { "aivowelsigngujarati"sv, 0x0AC8 }, + { "akatakana"sv, 0x30A2 }, + { "akatakanahalfwidth"sv, 0xFF71 }, + { "akorean"sv, 0x314F }, + { "alef"sv, 0x05D0 }, + { "alefarabic"sv, 0x0627 }, + { "alefdageshhebrew"sv, 0xFB30 }, + { "aleffinalarabic"sv, 0xFE8E }, + { "alefhamzaabovearabic"sv, 0x0623 }, + { "alefhamzaabovefinalarabic"sv, 0xFE84 }, + { "alefhamzabelowarabic"sv, 0x0625 }, + { "alefhamzabelowfinalarabic"sv, 0xFE88 }, + { "alefhebrew"sv, 0x05D0 }, + { "aleflamedhebrew"sv, 0xFB4F }, + { "alefmaddaabovearabic"sv, 0x0622 }, + { "alefmaddaabovefinalarabic"sv, 0xFE82 }, + { "alefmaksuraarabic"sv, 0x0649 }, + { "alefmaksurafinalarabic"sv, 0xFEF0 }, + { "alefmaksurainitialarabic"sv, 0xFEF3 }, + { "alefmaksuramedialarabic"sv, 0xFEF4 }, + { "alefpatahhebrew"sv, 0xFB2E }, + { "alefqamatshebrew"sv, 0xFB2F }, + { "aleph"sv, 0x2135 }, + { "allequal"sv, 0x224C }, + { "alpha"sv, 0x03B1 }, + { "alphatonos"sv, 0x03AC }, + { "amacron"sv, 0x0101 }, + { "amonospace"sv, 0xFF41 }, + { "ampersand"sv, 0x0026 }, + { "ampersandmonospace"sv, 0xFF06 }, + { "ampersandsmall"sv, 0xF726 }, + { "amsquare"sv, 0x33C2 }, + { "anbopomofo"sv, 0x3122 }, + { "angbopomofo"sv, 0x3124 }, + { "angkhankhuthai"sv, 0x0E5A }, + { "angle"sv, 0x2220 }, + { "anglebracketleft"sv, 0x3008 }, + { "anglebracketleftvertical"sv, 0xFE3F }, + { "anglebracketright"sv, 0x3009 }, + { "anglebracketrightvertical"sv, 0xFE40 }, + { "angleleft"sv, 0x2329 }, + { "angleright"sv, 0x232A }, + { "angstrom"sv, 0x212B }, + { "anoteleia"sv, 0x0387 }, + { "anudattadeva"sv, 0x0952 }, + { "anusvarabengali"sv, 0x0982 }, + { "anusvaradeva"sv, 0x0902 }, + { "anusvaragujarati"sv, 0x0A82 }, + { "aogonek"sv, 0x0105 }, + { "apaatosquare"sv, 0x3300 }, + { "aparen"sv, 0x249C }, + { "apostrophearmenian"sv, 0x055A }, + { "apostrophemod"sv, 0x02BC }, + { "apple"sv, 0xF8FF }, + { "approaches"sv, 0x2250 }, + { "approxequal"sv, 0x2248 }, + { "approxequalorimage"sv, 0x2252 }, + { "approximatelyequal"sv, 0x2245 }, + { "araeaekorean"sv, 0x318E }, + { "araeakorean"sv, 0x318D }, + { "arc"sv, 0x2312 }, + { "arighthalfring"sv, 0x1E9A }, + { "aring"sv, 0x00E5 }, + { "aringacute"sv, 0x01FB }, + { "aringbelow"sv, 0x1E01 }, + { "arrowboth"sv, 0x2194 }, + { "arrowdashdown"sv, 0x21E3 }, + { "arrowdashleft"sv, 0x21E0 }, + { "arrowdashright"sv, 0x21E2 }, + { "arrowdashup"sv, 0x21E1 }, + { "arrowdblboth"sv, 0x21D4 }, + { "arrowdbldown"sv, 0x21D3 }, + { "arrowdblleft"sv, 0x21D0 }, + { "arrowdblright"sv, 0x21D2 }, + { "arrowdblup"sv, 0x21D1 }, + { "arrowdown"sv, 0x2193 }, + { "arrowdownleft"sv, 0x2199 }, + { "arrowdownright"sv, 0x2198 }, + { "arrowdownwhite"sv, 0x21E9 }, + { "arrowheaddownmod"sv, 0x02C5 }, + { "arrowheadleftmod"sv, 0x02C2 }, + { "arrowheadrightmod"sv, 0x02C3 }, + { "arrowheadupmod"sv, 0x02C4 }, + { "arrowhorizex"sv, 0xF8E7 }, + { "arrowleft"sv, 0x2190 }, + { "arrowleftdbl"sv, 0x21D0 }, + { "arrowleftdblstroke"sv, 0x21CD }, + { "arrowleftoverright"sv, 0x21C6 }, + { "arrowleftwhite"sv, 0x21E6 }, + { "arrowright"sv, 0x2192 }, + { "arrowrightdblstroke"sv, 0x21CF }, + { "arrowrightheavy"sv, 0x279E }, + { "arrowrightoverleft"sv, 0x21C4 }, + { "arrowrightwhite"sv, 0x21E8 }, + { "arrowtableft"sv, 0x21E4 }, + { "arrowtabright"sv, 0x21E5 }, + { "arrowup"sv, 0x2191 }, + { "arrowupdn"sv, 0x2195 }, + { "arrowupdnbse"sv, 0x21A8 }, + { "arrowupdownbase"sv, 0x21A8 }, + { "arrowupleft"sv, 0x2196 }, + { "arrowupleftofdown"sv, 0x21C5 }, + { "arrowupright"sv, 0x2197 }, + { "arrowupwhite"sv, 0x21E7 }, + { "arrowvertex"sv, 0xF8E6 }, + { "asciicircum"sv, 0x005E }, + { "asciicircummonospace"sv, 0xFF3E }, + { "asciitilde"sv, 0x007E }, + { "asciitildemonospace"sv, 0xFF5E }, + { "ascript"sv, 0x0251 }, + { "ascriptturned"sv, 0x0252 }, + { "asmallhiragana"sv, 0x3041 }, + { "asmallkatakana"sv, 0x30A1 }, + { "asmallkatakanahalfwidth"sv, 0xFF67 }, + { "asterisk"sv, 0x002A }, + { "asteriskaltonearabic"sv, 0x066D }, + { "asteriskarabic"sv, 0x066D }, + { "asteriskmath"sv, 0x2217 }, + { "asteriskmonospace"sv, 0xFF0A }, + { "asterisksmall"sv, 0xFE61 }, + { "asterism"sv, 0x2042 }, + { "asuperior"sv, 0xF6E9 }, + { "asymptoticallyequal"sv, 0x2243 }, + { "at"sv, 0x0040 }, + { "atilde"sv, 0x00E3 }, + { "atmonospace"sv, 0xFF20 }, + { "atsmall"sv, 0xFE6B }, + { "aturned"sv, 0x0250 }, + { "aubengali"sv, 0x0994 }, + { "aubopomofo"sv, 0x3120 }, + { "audeva"sv, 0x0914 }, + { "augujarati"sv, 0x0A94 }, + { "augurmukhi"sv, 0x0A14 }, + { "aulengthmarkbengali"sv, 0x09D7 }, + { "aumatragurmukhi"sv, 0x0A4C }, + { "auvowelsignbengali"sv, 0x09CC }, + { "auvowelsigndeva"sv, 0x094C }, + { "auvowelsigngujarati"sv, 0x0ACC }, + { "avagrahadeva"sv, 0x093D }, + { "aybarmenian"sv, 0x0561 }, + { "ayin"sv, 0x05E2 }, + { "ayinaltonehebrew"sv, 0xFB20 }, + { "ayinhebrew"sv, 0x05E2 }, + { "b"sv, 0x0062 }, + { "babengali"sv, 0x09AC }, + { "backslash"sv, 0x005C }, + { "backslashmonospace"sv, 0xFF3C }, + { "badeva"sv, 0x092C }, + { "bagujarati"sv, 0x0AAC }, + { "bagurmukhi"sv, 0x0A2C }, + { "bahiragana"sv, 0x3070 }, + { "bahtthai"sv, 0x0E3F }, + { "bakatakana"sv, 0x30D0 }, + { "bar"sv, 0x007C }, + { "barmonospace"sv, 0xFF5C }, + { "bbopomofo"sv, 0x3105 }, + { "bcircle"sv, 0x24D1 }, + { "bdotaccent"sv, 0x1E03 }, + { "bdotbelow"sv, 0x1E05 }, + { "beamedsixteenthnotes"sv, 0x266C }, + { "because"sv, 0x2235 }, + { "becyrillic"sv, 0x0431 }, + { "beharabic"sv, 0x0628 }, + { "behfinalarabic"sv, 0xFE90 }, + { "behinitialarabic"sv, 0xFE91 }, + { "behiragana"sv, 0x3079 }, + { "behmedialarabic"sv, 0xFE92 }, + { "behmeeminitialarabic"sv, 0xFC9F }, + { "behmeemisolatedarabic"sv, 0xFC08 }, + { "behnoonfinalarabic"sv, 0xFC6D }, + { "bekatakana"sv, 0x30D9 }, + { "benarmenian"sv, 0x0562 }, + { "bet"sv, 0x05D1 }, + { "beta"sv, 0x03B2 }, + { "betasymbolgreek"sv, 0x03D0 }, + { "betdagesh"sv, 0xFB31 }, + { "betdageshhebrew"sv, 0xFB31 }, + { "bethebrew"sv, 0x05D1 }, + { "betrafehebrew"sv, 0xFB4C }, + { "bhabengali"sv, 0x09AD }, + { "bhadeva"sv, 0x092D }, + { "bhagujarati"sv, 0x0AAD }, + { "bhagurmukhi"sv, 0x0A2D }, + { "bhook"sv, 0x0253 }, + { "bihiragana"sv, 0x3073 }, + { "bikatakana"sv, 0x30D3 }, + { "bilabialclick"sv, 0x0298 }, + { "bindigurmukhi"sv, 0x0A02 }, + { "birusquare"sv, 0x3331 }, + { "blackcircle"sv, 0x25CF }, + { "blackdiamond"sv, 0x25C6 }, + { "blackdownpointingtriangle"sv, 0x25BC }, + { "blackleftpointingpointer"sv, 0x25C4 }, + { "blackleftpointingtriangle"sv, 0x25C0 }, + { "blacklenticularbracketleft"sv, 0x3010 }, + { "blacklenticularbracketleftvertical"sv, 0xFE3B }, + { "blacklenticularbracketright"sv, 0x3011 }, + { "blacklenticularbracketrightvertical"sv, 0xFE3C }, + { "blacklowerlefttriangle"sv, 0x25E3 }, + { "blacklowerrighttriangle"sv, 0x25E2 }, + { "blackrectangle"sv, 0x25AC }, + { "blackrightpointingpointer"sv, 0x25BA }, + { "blackrightpointingtriangle"sv, 0x25B6 }, + { "blacksmallsquare"sv, 0x25AA }, + { "blacksmilingface"sv, 0x263B }, + { "blacksquare"sv, 0x25A0 }, + { "blackstar"sv, 0x2605 }, + { "blackupperlefttriangle"sv, 0x25E4 }, + { "blackupperrighttriangle"sv, 0x25E5 }, + { "blackuppointingsmalltriangle"sv, 0x25B4 }, + { "blackuppointingtriangle"sv, 0x25B2 }, + { "blank"sv, 0x2423 }, + { "blinebelow"sv, 0x1E07 }, + { "block"sv, 0x2588 }, + { "bmonospace"sv, 0xFF42 }, + { "bobaimaithai"sv, 0x0E1A }, + { "bohiragana"sv, 0x307C }, + { "bokatakana"sv, 0x30DC }, + { "bparen"sv, 0x249D }, + { "bqsquare"sv, 0x33C3 }, + { "braceex"sv, 0xF8F4 }, + { "braceleft"sv, 0x007B }, + { "braceleftbt"sv, 0xF8F3 }, + { "braceleftmid"sv, 0xF8F2 }, + { "braceleftmonospace"sv, 0xFF5B }, + { "braceleftsmall"sv, 0xFE5B }, + { "bracelefttp"sv, 0xF8F1 }, + { "braceleftvertical"sv, 0xFE37 }, + { "braceright"sv, 0x007D }, + { "bracerightbt"sv, 0xF8FE }, + { "bracerightmid"sv, 0xF8FD }, + { "bracerightmonospace"sv, 0xFF5D }, + { "bracerightsmall"sv, 0xFE5C }, + { "bracerighttp"sv, 0xF8FC }, + { "bracerightvertical"sv, 0xFE38 }, + { "bracketleft"sv, 0x005B }, + { "bracketleftbt"sv, 0xF8F0 }, + { "bracketleftex"sv, 0xF8EF }, + { "bracketleftmonospace"sv, 0xFF3B }, + { "bracketlefttp"sv, 0xF8EE }, + { "bracketright"sv, 0x005D }, + { "bracketrightbt"sv, 0xF8FB }, + { "bracketrightex"sv, 0xF8FA }, + { "bracketrightmonospace"sv, 0xFF3D }, + { "bracketrighttp"sv, 0xF8F9 }, + { "breve"sv, 0x02D8 }, + { "brevebelowcmb"sv, 0x032E }, + { "brevecmb"sv, 0x0306 }, + { "breveinvertedbelowcmb"sv, 0x032F }, + { "breveinvertedcmb"sv, 0x0311 }, + { "breveinverteddoublecmb"sv, 0x0361 }, + { "bridgebelowcmb"sv, 0x032A }, + { "bridgeinvertedbelowcmb"sv, 0x033A }, + { "brokenbar"sv, 0x00A6 }, + { "bstroke"sv, 0x0180 }, + { "bsuperior"sv, 0xF6EA }, + { "btopbar"sv, 0x0183 }, + { "buhiragana"sv, 0x3076 }, + { "bukatakana"sv, 0x30D6 }, + { "bullet"sv, 0x2022 }, + { "bulletinverse"sv, 0x25D8 }, + { "bulletoperator"sv, 0x2219 }, + { "bullseye"sv, 0x25CE }, + { "c"sv, 0x0063 }, + { "caarmenian"sv, 0x056E }, + { "cabengali"sv, 0x099A }, + { "cacute"sv, 0x0107 }, + { "cadeva"sv, 0x091A }, + { "cagujarati"sv, 0x0A9A }, + { "cagurmukhi"sv, 0x0A1A }, + { "calsquare"sv, 0x3388 }, + { "candrabindubengali"sv, 0x0981 }, + { "candrabinducmb"sv, 0x0310 }, + { "candrabindudeva"sv, 0x0901 }, + { "candrabindugujarati"sv, 0x0A81 }, + { "capslock"sv, 0x21EA }, + { "careof"sv, 0x2105 }, + { "caron"sv, 0x02C7 }, + { "caronbelowcmb"sv, 0x032C }, + { "caroncmb"sv, 0x030C }, + { "carriagereturn"sv, 0x21B5 }, + { "cbopomofo"sv, 0x3118 }, + { "ccaron"sv, 0x010D }, + { "ccedilla"sv, 0x00E7 }, + { "ccedillaacute"sv, 0x1E09 }, + { "ccircle"sv, 0x24D2 }, + { "ccircumflex"sv, 0x0109 }, + { "ccurl"sv, 0x0255 }, + { "cdot"sv, 0x010B }, + { "cdotaccent"sv, 0x010B }, + { "cdsquare"sv, 0x33C5 }, + { "cedilla"sv, 0x00B8 }, + { "cedillacmb"sv, 0x0327 }, + { "cent"sv, 0x00A2 }, + { "centigrade"sv, 0x2103 }, + { "centinferior"sv, 0xF6DF }, + { "centmonospace"sv, 0xFFE0 }, + { "centoldstyle"sv, 0xF7A2 }, + { "centsuperior"sv, 0xF6E0 }, + { "chaarmenian"sv, 0x0579 }, + { "chabengali"sv, 0x099B }, + { "chadeva"sv, 0x091B }, + { "chagujarati"sv, 0x0A9B }, + { "chagurmukhi"sv, 0x0A1B }, + { "chbopomofo"sv, 0x3114 }, + { "cheabkhasiancyrillic"sv, 0x04BD }, + { "checkmark"sv, 0x2713 }, + { "checyrillic"sv, 0x0447 }, + { "chedescenderabkhasiancyrillic"sv, 0x04BF }, + { "chedescendercyrillic"sv, 0x04B7 }, + { "chedieresiscyrillic"sv, 0x04F5 }, + { "cheharmenian"sv, 0x0573 }, + { "chekhakassiancyrillic"sv, 0x04CC }, + { "cheverticalstrokecyrillic"sv, 0x04B9 }, + { "chi"sv, 0x03C7 }, + { "chieuchacirclekorean"sv, 0x3277 }, + { "chieuchaparenkorean"sv, 0x3217 }, + { "chieuchcirclekorean"sv, 0x3269 }, + { "chieuchkorean"sv, 0x314A }, + { "chieuchparenkorean"sv, 0x3209 }, + { "chochangthai"sv, 0x0E0A }, + { "chochanthai"sv, 0x0E08 }, + { "chochingthai"sv, 0x0E09 }, + { "chochoethai"sv, 0x0E0C }, + { "chook"sv, 0x0188 }, + { "cieucacirclekorean"sv, 0x3276 }, + { "cieucaparenkorean"sv, 0x3216 }, + { "cieuccirclekorean"sv, 0x3268 }, + { "cieuckorean"sv, 0x3148 }, + { "cieucparenkorean"sv, 0x3208 }, + { "cieucuparenkorean"sv, 0x321C }, + { "circle"sv, 0x25CB }, + { "circlemultiply"sv, 0x2297 }, + { "circleot"sv, 0x2299 }, + { "circleplus"sv, 0x2295 }, + { "circlepostalmark"sv, 0x3036 }, + { "circlewithlefthalfblack"sv, 0x25D0 }, + { "circlewithrighthalfblack"sv, 0x25D1 }, + { "circumflex"sv, 0x02C6 }, + { "circumflexbelowcmb"sv, 0x032D }, + { "circumflexcmb"sv, 0x0302 }, + { "clear"sv, 0x2327 }, + { "clickalveolar"sv, 0x01C2 }, + { "clickdental"sv, 0x01C0 }, + { "clicklateral"sv, 0x01C1 }, + { "clickretroflex"sv, 0x01C3 }, + { "club"sv, 0x2663 }, + { "clubsuitblack"sv, 0x2663 }, + { "clubsuitwhite"sv, 0x2667 }, + { "cmcubedsquare"sv, 0x33A4 }, + { "cmonospace"sv, 0xFF43 }, + { "cmsquaredsquare"sv, 0x33A0 }, + { "coarmenian"sv, 0x0581 }, + { "colon"sv, 0x003A }, + { "colonmonetary"sv, 0x20A1 }, + { "colonmonospace"sv, 0xFF1A }, + { "colonsign"sv, 0x20A1 }, + { "colonsmall"sv, 0xFE55 }, + { "colontriangularhalfmod"sv, 0x02D1 }, + { "colontriangularmod"sv, 0x02D0 }, + { "comma"sv, 0x002C }, + { "commaabovecmb"sv, 0x0313 }, + { "commaaboverightcmb"sv, 0x0315 }, + { "commaaccent"sv, 0xF6C3 }, + { "commaarabic"sv, 0x060C }, + { "commaarmenian"sv, 0x055D }, + { "commainferior"sv, 0xF6E1 }, + { "commamonospace"sv, 0xFF0C }, + { "commareversedabovecmb"sv, 0x0314 }, + { "commareversedmod"sv, 0x02BD }, + { "commasmall"sv, 0xFE50 }, + { "commasuperior"sv, 0xF6E2 }, + { "commaturnedabovecmb"sv, 0x0312 }, + { "commaturnedmod"sv, 0x02BB }, + { "compass"sv, 0x263C }, + { "congruent"sv, 0x2245 }, + { "contourintegral"sv, 0x222E }, + { "control"sv, 0x2303 }, + { "controlACK"sv, 0x0006 }, + { "controlBEL"sv, 0x0007 }, + { "controlBS"sv, 0x0008 }, + { "controlCAN"sv, 0x0018 }, + { "controlCR"sv, 0x000D }, + { "controlDC1"sv, 0x0011 }, + { "controlDC2"sv, 0x0012 }, + { "controlDC3"sv, 0x0013 }, + { "controlDC4"sv, 0x0014 }, + { "controlDEL"sv, 0x007F }, + { "controlDLE"sv, 0x0010 }, + { "controlEM"sv, 0x0019 }, + { "controlENQ"sv, 0x0005 }, + { "controlEOT"sv, 0x0004 }, + { "controlESC"sv, 0x001B }, + { "controlETB"sv, 0x0017 }, + { "controlETX"sv, 0x0003 }, + { "controlFF"sv, 0x000C }, + { "controlFS"sv, 0x001C }, + { "controlGS"sv, 0x001D }, + { "controlHT"sv, 0x0009 }, + { "controlLF"sv, 0x000A }, + { "controlNAK"sv, 0x0015 }, + { "controlRS"sv, 0x001E }, + { "controlSI"sv, 0x000F }, + { "controlSO"sv, 0x000E }, + { "controlSOT"sv, 0x0002 }, + { "controlSTX"sv, 0x0001 }, + { "controlSUB"sv, 0x001A }, + { "controlSYN"sv, 0x0016 }, + { "controlUS"sv, 0x001F }, + { "controlVT"sv, 0x000B }, + { "copyright"sv, 0x00A9 }, + { "copyrightsans"sv, 0xF8E9 }, + { "copyrightserif"sv, 0xF6D9 }, + { "cornerbracketleft"sv, 0x300C }, + { "cornerbracketlefthalfwidth"sv, 0xFF62 }, + { "cornerbracketleftvertical"sv, 0xFE41 }, + { "cornerbracketright"sv, 0x300D }, + { "cornerbracketrighthalfwidth"sv, 0xFF63 }, + { "cornerbracketrightvertical"sv, 0xFE42 }, + { "corporationsquare"sv, 0x337F }, + { "cosquare"sv, 0x33C7 }, + { "coverkgsquare"sv, 0x33C6 }, + { "cparen"sv, 0x249E }, + { "cruzeiro"sv, 0x20A2 }, + { "cstretched"sv, 0x0297 }, + { "curlyand"sv, 0x22CF }, + { "curlyor"sv, 0x22CE }, + { "currency"sv, 0x00A4 }, + { "cyrBreve"sv, 0xF6D1 }, + { "cyrFlex"sv, 0xF6D2 }, + { "cyrbreve"sv, 0xF6D4 }, + { "cyrflex"sv, 0xF6D5 }, + { "d"sv, 0x0064 }, + { "daarmenian"sv, 0x0564 }, + { "dabengali"sv, 0x09A6 }, + { "dadarabic"sv, 0x0636 }, + { "dadeva"sv, 0x0926 }, + { "dadfinalarabic"sv, 0xFEBE }, + { "dadinitialarabic"sv, 0xFEBF }, + { "dadmedialarabic"sv, 0xFEC0 }, + { "dagesh"sv, 0x05BC }, + { "dageshhebrew"sv, 0x05BC }, + { "dagger"sv, 0x2020 }, + { "daggerdbl"sv, 0x2021 }, + { "dagujarati"sv, 0x0AA6 }, + { "dagurmukhi"sv, 0x0A26 }, + { "dahiragana"sv, 0x3060 }, + { "dakatakana"sv, 0x30C0 }, + { "dalarabic"sv, 0x062F }, + { "dalet"sv, 0x05D3 }, + { "daletdagesh"sv, 0xFB33 }, + { "daletdageshhebrew"sv, 0xFB33 }, + { "dalethebrew"sv, 0x05D3 }, + { "dalfinalarabic"sv, 0xFEAA }, + { "dammaarabic"sv, 0x064F }, + { "dammalowarabic"sv, 0x064F }, + { "dammatanaltonearabic"sv, 0x064C }, + { "dammatanarabic"sv, 0x064C }, + { "danda"sv, 0x0964 }, + { "dargahebrew"sv, 0x05A7 }, + { "dargalefthebrew"sv, 0x05A7 }, + { "dasiapneumatacyrilliccmb"sv, 0x0485 }, + { "dblGrave"sv, 0xF6D3 }, + { "dblanglebracketleft"sv, 0x300A }, + { "dblanglebracketleftvertical"sv, 0xFE3D }, + { "dblanglebracketright"sv, 0x300B }, + { "dblanglebracketrightvertical"sv, 0xFE3E }, + { "dblarchinvertedbelowcmb"sv, 0x032B }, + { "dblarrowleft"sv, 0x21D4 }, + { "dblarrowright"sv, 0x21D2 }, + { "dbldanda"sv, 0x0965 }, + { "dblgrave"sv, 0xF6D6 }, + { "dblgravecmb"sv, 0x030F }, + { "dblintegral"sv, 0x222C }, + { "dbllowline"sv, 0x2017 }, + { "dbllowlinecmb"sv, 0x0333 }, + { "dbloverlinecmb"sv, 0x033F }, + { "dblprimemod"sv, 0x02BA }, + { "dblverticalbar"sv, 0x2016 }, + { "dblverticallineabovecmb"sv, 0x030E }, + { "dbopomofo"sv, 0x3109 }, + { "dbsquare"sv, 0x33C8 }, + { "dcaron"sv, 0x010F }, + { "dcedilla"sv, 0x1E11 }, + { "dcircle"sv, 0x24D3 }, + { "dcircumflexbelow"sv, 0x1E13 }, + { "dcroat"sv, 0x0111 }, + { "ddabengali"sv, 0x09A1 }, + { "ddadeva"sv, 0x0921 }, + { "ddagujarati"sv, 0x0AA1 }, + { "ddagurmukhi"sv, 0x0A21 }, + { "ddalarabic"sv, 0x0688 }, + { "ddalfinalarabic"sv, 0xFB89 }, + { "dddhadeva"sv, 0x095C }, + { "ddhabengali"sv, 0x09A2 }, + { "ddhadeva"sv, 0x0922 }, + { "ddhagujarati"sv, 0x0AA2 }, + { "ddhagurmukhi"sv, 0x0A22 }, + { "ddotaccent"sv, 0x1E0B }, + { "ddotbelow"sv, 0x1E0D }, + { "decimalseparatorarabic"sv, 0x066B }, + { "decimalseparatorpersian"sv, 0x066B }, + { "decyrillic"sv, 0x0434 }, + { "degree"sv, 0x00B0 }, + { "dehihebrew"sv, 0x05AD }, + { "dehiragana"sv, 0x3067 }, + { "deicoptic"sv, 0x03EF }, + { "dekatakana"sv, 0x30C7 }, + { "deleteleft"sv, 0x232B }, + { "deleteright"sv, 0x2326 }, + { "delta"sv, 0x03B4 }, + { "deltaturned"sv, 0x018D }, + { "denominatorminusonenumeratorbengali"sv, 0x09F8 }, + { "dezh"sv, 0x02A4 }, + { "dhabengali"sv, 0x09A7 }, + { "dhadeva"sv, 0x0927 }, + { "dhagujarati"sv, 0x0AA7 }, + { "dhagurmukhi"sv, 0x0A27 }, + { "dhook"sv, 0x0257 }, + { "dialytikatonos"sv, 0x0385 }, + { "dialytikatonoscmb"sv, 0x0344 }, + { "diamond"sv, 0x2666 }, + { "diamondsuitwhite"sv, 0x2662 }, + { "dieresis"sv, 0x00A8 }, + { "dieresisacute"sv, 0xF6D7 }, + { "dieresisbelowcmb"sv, 0x0324 }, + { "dieresiscmb"sv, 0x0308 }, + { "dieresisgrave"sv, 0xF6D8 }, + { "dieresistonos"sv, 0x0385 }, + { "dihiragana"sv, 0x3062 }, + { "dikatakana"sv, 0x30C2 }, + { "dittomark"sv, 0x3003 }, + { "divide"sv, 0x00F7 }, + { "divides"sv, 0x2223 }, + { "divisionslash"sv, 0x2215 }, + { "djecyrillic"sv, 0x0452 }, + { "dkshade"sv, 0x2593 }, + { "dlinebelow"sv, 0x1E0F }, + { "dlsquare"sv, 0x3397 }, + { "dmacron"sv, 0x0111 }, + { "dmonospace"sv, 0xFF44 }, + { "dnblock"sv, 0x2584 }, + { "dochadathai"sv, 0x0E0E }, + { "dodekthai"sv, 0x0E14 }, + { "dohiragana"sv, 0x3069 }, + { "dokatakana"sv, 0x30C9 }, + { "dollar"sv, 0x0024 }, + { "dollarinferior"sv, 0xF6E3 }, + { "dollarmonospace"sv, 0xFF04 }, + { "dollaroldstyle"sv, 0xF724 }, + { "dollarsmall"sv, 0xFE69 }, + { "dollarsuperior"sv, 0xF6E4 }, + { "dong"sv, 0x20AB }, + { "dorusquare"sv, 0x3326 }, + { "dotaccent"sv, 0x02D9 }, + { "dotaccentcmb"sv, 0x0307 }, + { "dotbelowcmb"sv, 0x0323 }, + { "dotbelowcomb"sv, 0x0323 }, + { "dotkatakana"sv, 0x30FB }, + { "dotlessi"sv, 0x0131 }, + { "dotlessj"sv, 0xF6BE }, + { "dotlessjstrokehook"sv, 0x0284 }, + { "dotmath"sv, 0x22C5 }, + { "dottedcircle"sv, 0x25CC }, + { "doubleyodpatah"sv, 0xFB1F }, + { "doubleyodpatahhebrew"sv, 0xFB1F }, + { "downtackbelowcmb"sv, 0x031E }, + { "downtackmod"sv, 0x02D5 }, + { "dparen"sv, 0x249F }, + { "dsuperior"sv, 0xF6EB }, + { "dtail"sv, 0x0256 }, + { "dtopbar"sv, 0x018C }, + { "duhiragana"sv, 0x3065 }, + { "dukatakana"sv, 0x30C5 }, + { "dz"sv, 0x01F3 }, + { "dzaltone"sv, 0x02A3 }, + { "dzcaron"sv, 0x01C6 }, + { "dzcurl"sv, 0x02A5 }, + { "dzeabkhasiancyrillic"sv, 0x04E1 }, + { "dzecyrillic"sv, 0x0455 }, + { "dzhecyrillic"sv, 0x045F }, + { "e"sv, 0x0065 }, + { "eacute"sv, 0x00E9 }, + { "earth"sv, 0x2641 }, + { "ebengali"sv, 0x098F }, + { "ebopomofo"sv, 0x311C }, + { "ebreve"sv, 0x0115 }, + { "ecandradeva"sv, 0x090D }, + { "ecandragujarati"sv, 0x0A8D }, + { "ecandravowelsigndeva"sv, 0x0945 }, + { "ecandravowelsigngujarati"sv, 0x0AC5 }, + { "ecaron"sv, 0x011B }, + { "ecedillabreve"sv, 0x1E1D }, + { "echarmenian"sv, 0x0565 }, + { "echyiwnarmenian"sv, 0x0587 }, + { "ecircle"sv, 0x24D4 }, + { "ecircumflex"sv, 0x00EA }, + { "ecircumflexacute"sv, 0x1EBF }, + { "ecircumflexbelow"sv, 0x1E19 }, + { "ecircumflexdotbelow"sv, 0x1EC7 }, + { "ecircumflexgrave"sv, 0x1EC1 }, + { "ecircumflexhookabove"sv, 0x1EC3 }, + { "ecircumflextilde"sv, 0x1EC5 }, + { "ecyrillic"sv, 0x0454 }, + { "edblgrave"sv, 0x0205 }, + { "edeva"sv, 0x090F }, + { "edieresis"sv, 0x00EB }, + { "edot"sv, 0x0117 }, + { "edotaccent"sv, 0x0117 }, + { "edotbelow"sv, 0x1EB9 }, + { "eegurmukhi"sv, 0x0A0F }, + { "eematragurmukhi"sv, 0x0A47 }, + { "efcyrillic"sv, 0x0444 }, + { "egrave"sv, 0x00E8 }, + { "egujarati"sv, 0x0A8F }, + { "eharmenian"sv, 0x0567 }, + { "ehbopomofo"sv, 0x311D }, + { "ehiragana"sv, 0x3048 }, + { "ehookabove"sv, 0x1EBB }, + { "eibopomofo"sv, 0x311F }, + { "eight"sv, 0x0038 }, + { "eightarabic"sv, 0x0668 }, + { "eightbengali"sv, 0x09EE }, + { "eightcircle"sv, 0x2467 }, + { "eightcircleinversesansserif"sv, 0x2791 }, + { "eightdeva"sv, 0x096E }, + { "eighteencircle"sv, 0x2471 }, + { "eighteenparen"sv, 0x2485 }, + { "eighteenperiod"sv, 0x2499 }, + { "eightgujarati"sv, 0x0AEE }, + { "eightgurmukhi"sv, 0x0A6E }, + { "eighthackarabic"sv, 0x0668 }, + { "eighthangzhou"sv, 0x3028 }, + { "eighthnotebeamed"sv, 0x266B }, + { "eightideographicparen"sv, 0x3227 }, + { "eightinferior"sv, 0x2088 }, + { "eightmonospace"sv, 0xFF18 }, + { "eightoldstyle"sv, 0xF738 }, + { "eightparen"sv, 0x247B }, + { "eightperiod"sv, 0x248F }, + { "eightpersian"sv, 0x06F8 }, + { "eightroman"sv, 0x2177 }, + { "eightsuperior"sv, 0x2078 }, + { "eightthai"sv, 0x0E58 }, + { "einvertedbreve"sv, 0x0207 }, + { "eiotifiedcyrillic"sv, 0x0465 }, + { "ekatakana"sv, 0x30A8 }, + { "ekatakanahalfwidth"sv, 0xFF74 }, + { "ekonkargurmukhi"sv, 0x0A74 }, + { "ekorean"sv, 0x3154 }, + { "elcyrillic"sv, 0x043B }, + { "element"sv, 0x2208 }, + { "elevencircle"sv, 0x246A }, + { "elevenparen"sv, 0x247E }, + { "elevenperiod"sv, 0x2492 }, + { "elevenroman"sv, 0x217A }, + { "ellipsis"sv, 0x2026 }, + { "ellipsisvertical"sv, 0x22EE }, + { "emacron"sv, 0x0113 }, + { "emacronacute"sv, 0x1E17 }, + { "emacrongrave"sv, 0x1E15 }, + { "emcyrillic"sv, 0x043C }, + { "emdash"sv, 0x2014 }, + { "emdashvertical"sv, 0xFE31 }, + { "emonospace"sv, 0xFF45 }, + { "emphasismarkarmenian"sv, 0x055B }, + { "emptyset"sv, 0x2205 }, + { "enbopomofo"sv, 0x3123 }, + { "encyrillic"sv, 0x043D }, + { "endash"sv, 0x2013 }, + { "endashvertical"sv, 0xFE32 }, + { "endescendercyrillic"sv, 0x04A3 }, + { "eng"sv, 0x014B }, + { "engbopomofo"sv, 0x3125 }, + { "enghecyrillic"sv, 0x04A5 }, + { "enhookcyrillic"sv, 0x04C8 }, + { "enspace"sv, 0x2002 }, + { "eogonek"sv, 0x0119 }, + { "eokorean"sv, 0x3153 }, + { "eopen"sv, 0x025B }, + { "eopenclosed"sv, 0x029A }, + { "eopenreversed"sv, 0x025C }, + { "eopenreversedclosed"sv, 0x025E }, + { "eopenreversedhook"sv, 0x025D }, + { "eparen"sv, 0x24A0 }, + { "epsilon"sv, 0x03B5 }, + { "epsilontonos"sv, 0x03AD }, + { "equal"sv, 0x003D }, + { "equalmonospace"sv, 0xFF1D }, + { "equalsmall"sv, 0xFE66 }, + { "equalsuperior"sv, 0x207C }, + { "equivalence"sv, 0x2261 }, + { "erbopomofo"sv, 0x3126 }, + { "ercyrillic"sv, 0x0440 }, + { "ereversed"sv, 0x0258 }, + { "ereversedcyrillic"sv, 0x044D }, + { "escyrillic"sv, 0x0441 }, + { "esdescendercyrillic"sv, 0x04AB }, + { "esh"sv, 0x0283 }, + { "eshcurl"sv, 0x0286 }, + { "eshortdeva"sv, 0x090E }, + { "eshortvowelsigndeva"sv, 0x0946 }, + { "eshreversedloop"sv, 0x01AA }, + { "eshsquatreversed"sv, 0x0285 }, + { "esmallhiragana"sv, 0x3047 }, + { "esmallkatakana"sv, 0x30A7 }, + { "esmallkatakanahalfwidth"sv, 0xFF6A }, + { "estimated"sv, 0x212E }, + { "esuperior"sv, 0xF6EC }, + { "eta"sv, 0x03B7 }, + { "etarmenian"sv, 0x0568 }, + { "etatonos"sv, 0x03AE }, + { "eth"sv, 0x00F0 }, + { "etilde"sv, 0x1EBD }, + { "etildebelow"sv, 0x1E1B }, + { "etnahtafoukhhebrew"sv, 0x0591 }, + { "etnahtafoukhlefthebrew"sv, 0x0591 }, + { "etnahtahebrew"sv, 0x0591 }, + { "etnahtalefthebrew"sv, 0x0591 }, + { "eturned"sv, 0x01DD }, + { "eukorean"sv, 0x3161 }, + { "euro"sv, 0x20AC }, + { "evowelsignbengali"sv, 0x09C7 }, + { "evowelsigndeva"sv, 0x0947 }, + { "evowelsigngujarati"sv, 0x0AC7 }, + { "exclam"sv, 0x0021 }, + { "exclamarmenian"sv, 0x055C }, + { "exclamdbl"sv, 0x203C }, + { "exclamdown"sv, 0x00A1 }, + { "exclamdownsmall"sv, 0xF7A1 }, + { "exclammonospace"sv, 0xFF01 }, + { "exclamsmall"sv, 0xF721 }, + { "existential"sv, 0x2203 }, + { "ezh"sv, 0x0292 }, + { "ezhcaron"sv, 0x01EF }, + { "ezhcurl"sv, 0x0293 }, + { "ezhreversed"sv, 0x01B9 }, + { "ezhtail"sv, 0x01BA }, + { "f"sv, 0x0066 }, + { "fadeva"sv, 0x095E }, + { "fagurmukhi"sv, 0x0A5E }, + { "fahrenheit"sv, 0x2109 }, + { "fathaarabic"sv, 0x064E }, + { "fathalowarabic"sv, 0x064E }, + { "fathatanarabic"sv, 0x064B }, + { "fbopomofo"sv, 0x3108 }, + { "fcircle"sv, 0x24D5 }, + { "fdotaccent"sv, 0x1E1F }, + { "feharabic"sv, 0x0641 }, + { "feharmenian"sv, 0x0586 }, + { "fehfinalarabic"sv, 0xFED2 }, + { "fehinitialarabic"sv, 0xFED3 }, + { "fehmedialarabic"sv, 0xFED4 }, + { "feicoptic"sv, 0x03E5 }, + { "female"sv, 0x2640 }, + { "ff"sv, 0xFB00 }, + { "ffi"sv, 0xFB03 }, + { "ffl"sv, 0xFB04 }, + { "fi"sv, 0xFB01 }, + { "fifteencircle"sv, 0x246E }, + { "fifteenparen"sv, 0x2482 }, + { "fifteenperiod"sv, 0x2496 }, + { "figuredash"sv, 0x2012 }, + { "filledbox"sv, 0x25A0 }, + { "filledrect"sv, 0x25AC }, + { "finalkaf"sv, 0x05DA }, + { "finalkafdagesh"sv, 0xFB3A }, + { "finalkafdageshhebrew"sv, 0xFB3A }, + { "finalkafhebrew"sv, 0x05DA }, + { "finalmem"sv, 0x05DD }, + { "finalmemhebrew"sv, 0x05DD }, + { "finalnun"sv, 0x05DF }, + { "finalnunhebrew"sv, 0x05DF }, + { "finalpe"sv, 0x05E3 }, + { "finalpehebrew"sv, 0x05E3 }, + { "finaltsadi"sv, 0x05E5 }, + { "finaltsadihebrew"sv, 0x05E5 }, + { "firsttonechinese"sv, 0x02C9 }, + { "fisheye"sv, 0x25C9 }, + { "fitacyrillic"sv, 0x0473 }, + { "five"sv, 0x0035 }, + { "fivearabic"sv, 0x0665 }, + { "fivebengali"sv, 0x09EB }, + { "fivecircle"sv, 0x2464 }, + { "fivecircleinversesansserif"sv, 0x278E }, + { "fivedeva"sv, 0x096B }, + { "fiveeighths"sv, 0x215D }, + { "fivegujarati"sv, 0x0AEB }, + { "fivegurmukhi"sv, 0x0A6B }, + { "fivehackarabic"sv, 0x0665 }, + { "fivehangzhou"sv, 0x3025 }, + { "fiveideographicparen"sv, 0x3224 }, + { "fiveinferior"sv, 0x2085 }, + { "fivemonospace"sv, 0xFF15 }, + { "fiveoldstyle"sv, 0xF735 }, + { "fiveparen"sv, 0x2478 }, + { "fiveperiod"sv, 0x248C }, + { "fivepersian"sv, 0x06F5 }, + { "fiveroman"sv, 0x2174 }, + { "fivesuperior"sv, 0x2075 }, + { "fivethai"sv, 0x0E55 }, + { "fl"sv, 0xFB02 }, + { "florin"sv, 0x0192 }, + { "fmonospace"sv, 0xFF46 }, + { "fmsquare"sv, 0x3399 }, + { "fofanthai"sv, 0x0E1F }, + { "fofathai"sv, 0x0E1D }, + { "fongmanthai"sv, 0x0E4F }, + { "forall"sv, 0x2200 }, + { "four"sv, 0x0034 }, + { "fourarabic"sv, 0x0664 }, + { "fourbengali"sv, 0x09EA }, + { "fourcircle"sv, 0x2463 }, + { "fourcircleinversesansserif"sv, 0x278D }, + { "fourdeva"sv, 0x096A }, + { "fourgujarati"sv, 0x0AEA }, + { "fourgurmukhi"sv, 0x0A6A }, + { "fourhackarabic"sv, 0x0664 }, + { "fourhangzhou"sv, 0x3024 }, + { "fourideographicparen"sv, 0x3223 }, + { "fourinferior"sv, 0x2084 }, + { "fourmonospace"sv, 0xFF14 }, + { "fournumeratorbengali"sv, 0x09F7 }, + { "fouroldstyle"sv, 0xF734 }, + { "fourparen"sv, 0x2477 }, + { "fourperiod"sv, 0x248B }, + { "fourpersian"sv, 0x06F4 }, + { "fourroman"sv, 0x2173 }, + { "foursuperior"sv, 0x2074 }, + { "fourteencircle"sv, 0x246D }, + { "fourteenparen"sv, 0x2481 }, + { "fourteenperiod"sv, 0x2495 }, + { "fourthai"sv, 0x0E54 }, + { "fourthtonechinese"sv, 0x02CB }, + { "fparen"sv, 0x24A1 }, + { "fraction"sv, 0x2044 }, + { "franc"sv, 0x20A3 }, + { "g"sv, 0x0067 }, + { "gabengali"sv, 0x0997 }, + { "gacute"sv, 0x01F5 }, + { "gadeva"sv, 0x0917 }, + { "gafarabic"sv, 0x06AF }, + { "gaffinalarabic"sv, 0xFB93 }, + { "gafinitialarabic"sv, 0xFB94 }, + { "gafmedialarabic"sv, 0xFB95 }, + { "gagujarati"sv, 0x0A97 }, + { "gagurmukhi"sv, 0x0A17 }, + { "gahiragana"sv, 0x304C }, + { "gakatakana"sv, 0x30AC }, + { "gamma"sv, 0x03B3 }, + { "gammalatinsmall"sv, 0x0263 }, + { "gammasuperior"sv, 0x02E0 }, + { "gangiacoptic"sv, 0x03EB }, + { "gbopomofo"sv, 0x310D }, + { "gbreve"sv, 0x011F }, + { "gcaron"sv, 0x01E7 }, + { "gcedilla"sv, 0x0123 }, + { "gcircle"sv, 0x24D6 }, + { "gcircumflex"sv, 0x011D }, + { "gcommaaccent"sv, 0x0123 }, + { "gdot"sv, 0x0121 }, + { "gdotaccent"sv, 0x0121 }, + { "gecyrillic"sv, 0x0433 }, + { "gehiragana"sv, 0x3052 }, + { "gekatakana"sv, 0x30B2 }, + { "geometricallyequal"sv, 0x2251 }, + { "gereshaccenthebrew"sv, 0x059C }, + { "gereshhebrew"sv, 0x05F3 }, + { "gereshmuqdamhebrew"sv, 0x059D }, + { "germandbls"sv, 0x00DF }, + { "gershayimaccenthebrew"sv, 0x059E }, + { "gershayimhebrew"sv, 0x05F4 }, + { "getamark"sv, 0x3013 }, + { "ghabengali"sv, 0x0998 }, + { "ghadarmenian"sv, 0x0572 }, + { "ghadeva"sv, 0x0918 }, + { "ghagujarati"sv, 0x0A98 }, + { "ghagurmukhi"sv, 0x0A18 }, + { "ghainarabic"sv, 0x063A }, + { "ghainfinalarabic"sv, 0xFECE }, + { "ghaininitialarabic"sv, 0xFECF }, + { "ghainmedialarabic"sv, 0xFED0 }, + { "ghemiddlehookcyrillic"sv, 0x0495 }, + { "ghestrokecyrillic"sv, 0x0493 }, + { "gheupturncyrillic"sv, 0x0491 }, + { "ghhadeva"sv, 0x095A }, + { "ghhagurmukhi"sv, 0x0A5A }, + { "ghook"sv, 0x0260 }, + { "ghzsquare"sv, 0x3393 }, + { "gihiragana"sv, 0x304E }, + { "gikatakana"sv, 0x30AE }, + { "gimarmenian"sv, 0x0563 }, + { "gimel"sv, 0x05D2 }, + { "gimeldagesh"sv, 0xFB32 }, + { "gimeldageshhebrew"sv, 0xFB32 }, + { "gimelhebrew"sv, 0x05D2 }, + { "gjecyrillic"sv, 0x0453 }, + { "glottalinvertedstroke"sv, 0x01BE }, + { "glottalstop"sv, 0x0294 }, + { "glottalstopinverted"sv, 0x0296 }, + { "glottalstopmod"sv, 0x02C0 }, + { "glottalstopreversed"sv, 0x0295 }, + { "glottalstopreversedmod"sv, 0x02C1 }, + { "glottalstopreversedsuperior"sv, 0x02E4 }, + { "glottalstopstroke"sv, 0x02A1 }, + { "glottalstopstrokereversed"sv, 0x02A2 }, + { "gmacron"sv, 0x1E21 }, + { "gmonospace"sv, 0xFF47 }, + { "gohiragana"sv, 0x3054 }, + { "gokatakana"sv, 0x30B4 }, + { "gparen"sv, 0x24A2 }, + { "gpasquare"sv, 0x33AC }, + { "gradient"sv, 0x2207 }, + { "grave"sv, 0x0060 }, + { "gravebelowcmb"sv, 0x0316 }, + { "gravecmb"sv, 0x0300 }, + { "gravecomb"sv, 0x0300 }, + { "gravedeva"sv, 0x0953 }, + { "gravelowmod"sv, 0x02CE }, + { "gravemonospace"sv, 0xFF40 }, + { "gravetonecmb"sv, 0x0340 }, + { "greater"sv, 0x003E }, + { "greaterequal"sv, 0x2265 }, + { "greaterequalorless"sv, 0x22DB }, + { "greatermonospace"sv, 0xFF1E }, + { "greaterorequivalent"sv, 0x2273 }, + { "greaterorless"sv, 0x2277 }, + { "greateroverequal"sv, 0x2267 }, + { "greatersmall"sv, 0xFE65 }, + { "gscript"sv, 0x0261 }, + { "gstroke"sv, 0x01E5 }, + { "guhiragana"sv, 0x3050 }, + { "guillemotleft"sv, 0x00AB }, + { "guillemotright"sv, 0x00BB }, + { "guilsinglleft"sv, 0x2039 }, + { "guilsinglright"sv, 0x203A }, + { "gukatakana"sv, 0x30B0 }, + { "guramusquare"sv, 0x3318 }, + { "gysquare"sv, 0x33C9 }, + { "h"sv, 0x0068 }, + { "haabkhasiancyrillic"sv, 0x04A9 }, + { "haaltonearabic"sv, 0x06C1 }, + { "habengali"sv, 0x09B9 }, + { "hadescendercyrillic"sv, 0x04B3 }, + { "hadeva"sv, 0x0939 }, + { "hagujarati"sv, 0x0AB9 }, + { "hagurmukhi"sv, 0x0A39 }, + { "haharabic"sv, 0x062D }, + { "hahfinalarabic"sv, 0xFEA2 }, + { "hahinitialarabic"sv, 0xFEA3 }, + { "hahiragana"sv, 0x306F }, + { "hahmedialarabic"sv, 0xFEA4 }, + { "haitusquare"sv, 0x332A }, + { "hakatakana"sv, 0x30CF }, + { "hakatakanahalfwidth"sv, 0xFF8A }, + { "halantgurmukhi"sv, 0x0A4D }, + { "hamzaarabic"sv, 0x0621 }, + { "hamzalowarabic"sv, 0x0621 }, + { "hangulfiller"sv, 0x3164 }, + { "hardsigncyrillic"sv, 0x044A }, + { "harpoonleftbarbup"sv, 0x21BC }, + { "harpoonrightbarbup"sv, 0x21C0 }, + { "hasquare"sv, 0x33CA }, + { "hatafpatah"sv, 0x05B2 }, + { "hatafpatah16"sv, 0x05B2 }, + { "hatafpatah23"sv, 0x05B2 }, + { "hatafpatah2f"sv, 0x05B2 }, + { "hatafpatahhebrew"sv, 0x05B2 }, + { "hatafpatahnarrowhebrew"sv, 0x05B2 }, + { "hatafpatahquarterhebrew"sv, 0x05B2 }, + { "hatafpatahwidehebrew"sv, 0x05B2 }, + { "hatafqamats"sv, 0x05B3 }, + { "hatafqamats1b"sv, 0x05B3 }, + { "hatafqamats28"sv, 0x05B3 }, + { "hatafqamats34"sv, 0x05B3 }, + { "hatafqamatshebrew"sv, 0x05B3 }, + { "hatafqamatsnarrowhebrew"sv, 0x05B3 }, + { "hatafqamatsquarterhebrew"sv, 0x05B3 }, + { "hatafqamatswidehebrew"sv, 0x05B3 }, + { "hatafsegol"sv, 0x05B1 }, + { "hatafsegol17"sv, 0x05B1 }, + { "hatafsegol24"sv, 0x05B1 }, + { "hatafsegol30"sv, 0x05B1 }, + { "hatafsegolhebrew"sv, 0x05B1 }, + { "hatafsegolnarrowhebrew"sv, 0x05B1 }, + { "hatafsegolquarterhebrew"sv, 0x05B1 }, + { "hatafsegolwidehebrew"sv, 0x05B1 }, + { "hbar"sv, 0x0127 }, + { "hbopomofo"sv, 0x310F }, + { "hbrevebelow"sv, 0x1E2B }, + { "hcedilla"sv, 0x1E29 }, + { "hcircle"sv, 0x24D7 }, + { "hcircumflex"sv, 0x0125 }, + { "hdieresis"sv, 0x1E27 }, + { "hdotaccent"sv, 0x1E23 }, + { "hdotbelow"sv, 0x1E25 }, + { "he"sv, 0x05D4 }, + { "heart"sv, 0x2665 }, + { "heartsuitblack"sv, 0x2665 }, + { "heartsuitwhite"sv, 0x2661 }, + { "hedagesh"sv, 0xFB34 }, + { "hedageshhebrew"sv, 0xFB34 }, + { "hehaltonearabic"sv, 0x06C1 }, + { "heharabic"sv, 0x0647 }, + { "hehebrew"sv, 0x05D4 }, + { "hehfinalaltonearabic"sv, 0xFBA7 }, + { "hehfinalalttwoarabic"sv, 0xFEEA }, + { "hehfinalarabic"sv, 0xFEEA }, + { "hehhamzaabovefinalarabic"sv, 0xFBA5 }, + { "hehhamzaaboveisolatedarabic"sv, 0xFBA4 }, + { "hehinitialaltonearabic"sv, 0xFBA8 }, + { "hehinitialarabic"sv, 0xFEEB }, + { "hehiragana"sv, 0x3078 }, + { "hehmedialaltonearabic"sv, 0xFBA9 }, + { "hehmedialarabic"sv, 0xFEEC }, + { "heiseierasquare"sv, 0x337B }, + { "hekatakana"sv, 0x30D8 }, + { "hekatakanahalfwidth"sv, 0xFF8D }, + { "hekutaarusquare"sv, 0x3336 }, + { "henghook"sv, 0x0267 }, + { "herutusquare"sv, 0x3339 }, + { "het"sv, 0x05D7 }, + { "hethebrew"sv, 0x05D7 }, + { "hhook"sv, 0x0266 }, + { "hhooksuperior"sv, 0x02B1 }, + { "hieuhacirclekorean"sv, 0x327B }, + { "hieuhaparenkorean"sv, 0x321B }, + { "hieuhcirclekorean"sv, 0x326D }, + { "hieuhkorean"sv, 0x314E }, + { "hieuhparenkorean"sv, 0x320D }, + { "hihiragana"sv, 0x3072 }, + { "hikatakana"sv, 0x30D2 }, + { "hikatakanahalfwidth"sv, 0xFF8B }, + { "hiriq"sv, 0x05B4 }, + { "hiriq14"sv, 0x05B4 }, + { "hiriq21"sv, 0x05B4 }, + { "hiriq2d"sv, 0x05B4 }, + { "hiriqhebrew"sv, 0x05B4 }, + { "hiriqnarrowhebrew"sv, 0x05B4 }, + { "hiriqquarterhebrew"sv, 0x05B4 }, + { "hiriqwidehebrew"sv, 0x05B4 }, + { "hlinebelow"sv, 0x1E96 }, + { "hmonospace"sv, 0xFF48 }, + { "hoarmenian"sv, 0x0570 }, + { "hohipthai"sv, 0x0E2B }, + { "hohiragana"sv, 0x307B }, + { "hokatakana"sv, 0x30DB }, + { "hokatakanahalfwidth"sv, 0xFF8E }, + { "holam"sv, 0x05B9 }, + { "holam19"sv, 0x05B9 }, + { "holam26"sv, 0x05B9 }, + { "holam32"sv, 0x05B9 }, + { "holamhebrew"sv, 0x05B9 }, + { "holamnarrowhebrew"sv, 0x05B9 }, + { "holamquarterhebrew"sv, 0x05B9 }, + { "holamwidehebrew"sv, 0x05B9 }, + { "honokhukthai"sv, 0x0E2E }, + { "hookabovecomb"sv, 0x0309 }, + { "hookcmb"sv, 0x0309 }, + { "hookpalatalizedbelowcmb"sv, 0x0321 }, + { "hookretroflexbelowcmb"sv, 0x0322 }, + { "hoonsquare"sv, 0x3342 }, + { "horicoptic"sv, 0x03E9 }, + { "horizontalbar"sv, 0x2015 }, + { "horncmb"sv, 0x031B }, + { "hotsprings"sv, 0x2668 }, + { "house"sv, 0x2302 }, + { "hparen"sv, 0x24A3 }, + { "hsuperior"sv, 0x02B0 }, + { "hturned"sv, 0x0265 }, + { "huhiragana"sv, 0x3075 }, + { "huiitosquare"sv, 0x3333 }, + { "hukatakana"sv, 0x30D5 }, + { "hukatakanahalfwidth"sv, 0xFF8C }, + { "hungarumlaut"sv, 0x02DD }, + { "hungarumlautcmb"sv, 0x030B }, + { "hv"sv, 0x0195 }, + { "hyphen"sv, 0x002D }, + { "hypheninferior"sv, 0xF6E5 }, + { "hyphenmonospace"sv, 0xFF0D }, + { "hyphensmall"sv, 0xFE63 }, + { "hyphensuperior"sv, 0xF6E6 }, + { "hyphentwo"sv, 0x2010 }, + { "i"sv, 0x0069 }, + { "iacute"sv, 0x00ED }, + { "iacyrillic"sv, 0x044F }, + { "ibengali"sv, 0x0987 }, + { "ibopomofo"sv, 0x3127 }, + { "ibreve"sv, 0x012D }, + { "icaron"sv, 0x01D0 }, + { "icircle"sv, 0x24D8 }, + { "icircumflex"sv, 0x00EE }, + { "icyrillic"sv, 0x0456 }, + { "idblgrave"sv, 0x0209 }, + { "ideographearthcircle"sv, 0x328F }, + { "ideographfirecircle"sv, 0x328B }, + { "ideographicallianceparen"sv, 0x323F }, + { "ideographiccallparen"sv, 0x323A }, + { "ideographiccentrecircle"sv, 0x32A5 }, + { "ideographicclose"sv, 0x3006 }, + { "ideographiccomma"sv, 0x3001 }, + { "ideographiccommaleft"sv, 0xFF64 }, + { "ideographiccongratulationparen"sv, 0x3237 }, + { "ideographiccorrectcircle"sv, 0x32A3 }, + { "ideographicearthparen"sv, 0x322F }, + { "ideographicenterpriseparen"sv, 0x323D }, + { "ideographicexcellentcircle"sv, 0x329D }, + { "ideographicfestivalparen"sv, 0x3240 }, + { "ideographicfinancialcircle"sv, 0x3296 }, + { "ideographicfinancialparen"sv, 0x3236 }, + { "ideographicfireparen"sv, 0x322B }, + { "ideographichaveparen"sv, 0x3232 }, + { "ideographichighcircle"sv, 0x32A4 }, + { "ideographiciterationmark"sv, 0x3005 }, + { "ideographiclaborcircle"sv, 0x3298 }, + { "ideographiclaborparen"sv, 0x3238 }, + { "ideographicleftcircle"sv, 0x32A7 }, + { "ideographiclowcircle"sv, 0x32A6 }, + { "ideographicmedicinecircle"sv, 0x32A9 }, + { "ideographicmetalparen"sv, 0x322E }, + { "ideographicmoonparen"sv, 0x322A }, + { "ideographicnameparen"sv, 0x3234 }, + { "ideographicperiod"sv, 0x3002 }, + { "ideographicprintcircle"sv, 0x329E }, + { "ideographicreachparen"sv, 0x3243 }, + { "ideographicrepresentparen"sv, 0x3239 }, + { "ideographicresourceparen"sv, 0x323E }, + { "ideographicrightcircle"sv, 0x32A8 }, + { "ideographicsecretcircle"sv, 0x3299 }, + { "ideographicselfparen"sv, 0x3242 }, + { "ideographicsocietyparen"sv, 0x3233 }, + { "ideographicspace"sv, 0x3000 }, + { "ideographicspecialparen"sv, 0x3235 }, + { "ideographicstockparen"sv, 0x3231 }, + { "ideographicstudyparen"sv, 0x323B }, + { "ideographicsunparen"sv, 0x3230 }, + { "ideographicsuperviseparen"sv, 0x323C }, + { "ideographicwaterparen"sv, 0x322C }, + { "ideographicwoodparen"sv, 0x322D }, + { "ideographiczero"sv, 0x3007 }, + { "ideographmetalcircle"sv, 0x328E }, + { "ideographmooncircle"sv, 0x328A }, + { "ideographnamecircle"sv, 0x3294 }, + { "ideographsuncircle"sv, 0x3290 }, + { "ideographwatercircle"sv, 0x328C }, + { "ideographwoodcircle"sv, 0x328D }, + { "ideva"sv, 0x0907 }, + { "idieresis"sv, 0x00EF }, + { "idieresisacute"sv, 0x1E2F }, + { "idieresiscyrillic"sv, 0x04E5 }, + { "idotbelow"sv, 0x1ECB }, + { "iebrevecyrillic"sv, 0x04D7 }, + { "iecyrillic"sv, 0x0435 }, + { "ieungacirclekorean"sv, 0x3275 }, + { "ieungaparenkorean"sv, 0x3215 }, + { "ieungcirclekorean"sv, 0x3267 }, + { "ieungkorean"sv, 0x3147 }, + { "ieungparenkorean"sv, 0x3207 }, + { "igrave"sv, 0x00EC }, + { "igujarati"sv, 0x0A87 }, + { "igurmukhi"sv, 0x0A07 }, + { "ihiragana"sv, 0x3044 }, + { "ihookabove"sv, 0x1EC9 }, + { "iibengali"sv, 0x0988 }, + { "iicyrillic"sv, 0x0438 }, + { "iideva"sv, 0x0908 }, + { "iigujarati"sv, 0x0A88 }, + { "iigurmukhi"sv, 0x0A08 }, + { "iimatragurmukhi"sv, 0x0A40 }, + { "iinvertedbreve"sv, 0x020B }, + { "iishortcyrillic"sv, 0x0439 }, + { "iivowelsignbengali"sv, 0x09C0 }, + { "iivowelsigndeva"sv, 0x0940 }, + { "iivowelsigngujarati"sv, 0x0AC0 }, + { "ij"sv, 0x0133 }, + { "ikatakana"sv, 0x30A4 }, + { "ikatakanahalfwidth"sv, 0xFF72 }, + { "ikorean"sv, 0x3163 }, + { "ilde"sv, 0x02DC }, + { "iluyhebrew"sv, 0x05AC }, + { "imacron"sv, 0x012B }, + { "imacroncyrillic"sv, 0x04E3 }, + { "imageorapproximatelyequal"sv, 0x2253 }, + { "imatragurmukhi"sv, 0x0A3F }, + { "imonospace"sv, 0xFF49 }, + { "increment"sv, 0x2206 }, + { "infinity"sv, 0x221E }, + { "iniarmenian"sv, 0x056B }, + { "integral"sv, 0x222B }, + { "integralbottom"sv, 0x2321 }, + { "integralbt"sv, 0x2321 }, + { "integralex"sv, 0xF8F5 }, + { "integraltop"sv, 0x2320 }, + { "integraltp"sv, 0x2320 }, + { "intersection"sv, 0x2229 }, + { "intisquare"sv, 0x3305 }, + { "invbullet"sv, 0x25D8 }, + { "invcircle"sv, 0x25D9 }, + { "invsmileface"sv, 0x263B }, + { "iocyrillic"sv, 0x0451 }, + { "iogonek"sv, 0x012F }, + { "iota"sv, 0x03B9 }, + { "iotadieresis"sv, 0x03CA }, + { "iotadieresistonos"sv, 0x0390 }, + { "iotalatin"sv, 0x0269 }, + { "iotatonos"sv, 0x03AF }, + { "iparen"sv, 0x24A4 }, + { "irigurmukhi"sv, 0x0A72 }, + { "ismallhiragana"sv, 0x3043 }, + { "ismallkatakana"sv, 0x30A3 }, + { "ismallkatakanahalfwidth"sv, 0xFF68 }, + { "issharbengali"sv, 0x09FA }, + { "istroke"sv, 0x0268 }, + { "isuperior"sv, 0xF6ED }, + { "iterationhiragana"sv, 0x309D }, + { "iterationkatakana"sv, 0x30FD }, + { "itilde"sv, 0x0129 }, + { "itildebelow"sv, 0x1E2D }, + { "iubopomofo"sv, 0x3129 }, + { "iucyrillic"sv, 0x044E }, + { "ivowelsignbengali"sv, 0x09BF }, + { "ivowelsigndeva"sv, 0x093F }, + { "ivowelsigngujarati"sv, 0x0ABF }, + { "izhitsacyrillic"sv, 0x0475 }, + { "izhitsadblgravecyrillic"sv, 0x0477 }, + { "j"sv, 0x006A }, + { "jaarmenian"sv, 0x0571 }, + { "jabengali"sv, 0x099C }, + { "jadeva"sv, 0x091C }, + { "jagujarati"sv, 0x0A9C }, + { "jagurmukhi"sv, 0x0A1C }, + { "jbopomofo"sv, 0x3110 }, + { "jcaron"sv, 0x01F0 }, + { "jcircle"sv, 0x24D9 }, + { "jcircumflex"sv, 0x0135 }, + { "jcrossedtail"sv, 0x029D }, + { "jdotlessstroke"sv, 0x025F }, + { "jecyrillic"sv, 0x0458 }, + { "jeemarabic"sv, 0x062C }, + { "jeemfinalarabic"sv, 0xFE9E }, + { "jeeminitialarabic"sv, 0xFE9F }, + { "jeemmedialarabic"sv, 0xFEA0 }, + { "jeharabic"sv, 0x0698 }, + { "jehfinalarabic"sv, 0xFB8B }, + { "jhabengali"sv, 0x099D }, + { "jhadeva"sv, 0x091D }, + { "jhagujarati"sv, 0x0A9D }, + { "jhagurmukhi"sv, 0x0A1D }, + { "jheharmenian"sv, 0x057B }, + { "jis"sv, 0x3004 }, + { "jmonospace"sv, 0xFF4A }, + { "jparen"sv, 0x24A5 }, + { "jsuperior"sv, 0x02B2 }, + { "k"sv, 0x006B }, + { "kabashkircyrillic"sv, 0x04A1 }, + { "kabengali"sv, 0x0995 }, + { "kacute"sv, 0x1E31 }, + { "kacyrillic"sv, 0x043A }, + { "kadescendercyrillic"sv, 0x049B }, + { "kadeva"sv, 0x0915 }, + { "kaf"sv, 0x05DB }, + { "kafarabic"sv, 0x0643 }, + { "kafdagesh"sv, 0xFB3B }, + { "kafdageshhebrew"sv, 0xFB3B }, + { "kaffinalarabic"sv, 0xFEDA }, + { "kafhebrew"sv, 0x05DB }, + { "kafinitialarabic"sv, 0xFEDB }, + { "kafmedialarabic"sv, 0xFEDC }, + { "kafrafehebrew"sv, 0xFB4D }, + { "kagujarati"sv, 0x0A95 }, + { "kagurmukhi"sv, 0x0A15 }, + { "kahiragana"sv, 0x304B }, + { "kahookcyrillic"sv, 0x04C4 }, + { "kakatakana"sv, 0x30AB }, + { "kakatakanahalfwidth"sv, 0xFF76 }, + { "kappa"sv, 0x03BA }, + { "kappasymbolgreek"sv, 0x03F0 }, + { "kapyeounmieumkorean"sv, 0x3171 }, + { "kapyeounphieuphkorean"sv, 0x3184 }, + { "kapyeounpieupkorean"sv, 0x3178 }, + { "kapyeounssangpieupkorean"sv, 0x3179 }, + { "karoriisquare"sv, 0x330D }, + { "kashidaautoarabic"sv, 0x0640 }, + { "kashidaautonosidebearingarabic"sv, 0x0640 }, + { "kasmallkatakana"sv, 0x30F5 }, + { "kasquare"sv, 0x3384 }, + { "kasraarabic"sv, 0x0650 }, + { "kasratanarabic"sv, 0x064D }, + { "kastrokecyrillic"sv, 0x049F }, + { "katahiraprolongmarkhalfwidth"sv, 0xFF70 }, + { "kaverticalstrokecyrillic"sv, 0x049D }, + { "kbopomofo"sv, 0x310E }, + { "kcalsquare"sv, 0x3389 }, + { "kcaron"sv, 0x01E9 }, + { "kcedilla"sv, 0x0137 }, + { "kcircle"sv, 0x24DA }, + { "kcommaaccent"sv, 0x0137 }, + { "kdotbelow"sv, 0x1E33 }, + { "keharmenian"sv, 0x0584 }, + { "kehiragana"sv, 0x3051 }, + { "kekatakana"sv, 0x30B1 }, + { "kekatakanahalfwidth"sv, 0xFF79 }, + { "kenarmenian"sv, 0x056F }, + { "kesmallkatakana"sv, 0x30F6 }, + { "kgreenlandic"sv, 0x0138 }, + { "khabengali"sv, 0x0996 }, + { "khacyrillic"sv, 0x0445 }, + { "khadeva"sv, 0x0916 }, + { "khagujarati"sv, 0x0A96 }, + { "khagurmukhi"sv, 0x0A16 }, + { "khaharabic"sv, 0x062E }, + { "khahfinalarabic"sv, 0xFEA6 }, + { "khahinitialarabic"sv, 0xFEA7 }, + { "khahmedialarabic"sv, 0xFEA8 }, + { "kheicoptic"sv, 0x03E7 }, + { "khhadeva"sv, 0x0959 }, + { "khhagurmukhi"sv, 0x0A59 }, + { "khieukhacirclekorean"sv, 0x3278 }, + { "khieukhaparenkorean"sv, 0x3218 }, + { "khieukhcirclekorean"sv, 0x326A }, + { "khieukhkorean"sv, 0x314B }, + { "khieukhparenkorean"sv, 0x320A }, + { "khokhaithai"sv, 0x0E02 }, + { "khokhonthai"sv, 0x0E05 }, + { "khokhuatthai"sv, 0x0E03 }, + { "khokhwaithai"sv, 0x0E04 }, + { "khomutthai"sv, 0x0E5B }, + { "khook"sv, 0x0199 }, + { "khorakhangthai"sv, 0x0E06 }, + { "khzsquare"sv, 0x3391 }, + { "kihiragana"sv, 0x304D }, + { "kikatakana"sv, 0x30AD }, + { "kikatakanahalfwidth"sv, 0xFF77 }, + { "kiroguramusquare"sv, 0x3315 }, + { "kiromeetorusquare"sv, 0x3316 }, + { "kirosquare"sv, 0x3314 }, + { "kiyeokacirclekorean"sv, 0x326E }, + { "kiyeokaparenkorean"sv, 0x320E }, + { "kiyeokcirclekorean"sv, 0x3260 }, + { "kiyeokkorean"sv, 0x3131 }, + { "kiyeokparenkorean"sv, 0x3200 }, + { "kiyeoksioskorean"sv, 0x3133 }, + { "kjecyrillic"sv, 0x045C }, + { "klinebelow"sv, 0x1E35 }, + { "klsquare"sv, 0x3398 }, + { "kmcubedsquare"sv, 0x33A6 }, + { "kmonospace"sv, 0xFF4B }, + { "kmsquaredsquare"sv, 0x33A2 }, + { "kohiragana"sv, 0x3053 }, + { "kohmsquare"sv, 0x33C0 }, + { "kokaithai"sv, 0x0E01 }, + { "kokatakana"sv, 0x30B3 }, + { "kokatakanahalfwidth"sv, 0xFF7A }, + { "kooposquare"sv, 0x331E }, + { "koppacyrillic"sv, 0x0481 }, + { "koreanstandardsymbol"sv, 0x327F }, + { "koroniscmb"sv, 0x0343 }, + { "kparen"sv, 0x24A6 }, + { "kpasquare"sv, 0x33AA }, + { "ksicyrillic"sv, 0x046F }, + { "ktsquare"sv, 0x33CF }, + { "kturned"sv, 0x029E }, + { "kuhiragana"sv, 0x304F }, + { "kukatakana"sv, 0x30AF }, + { "kukatakanahalfwidth"sv, 0xFF78 }, + { "kvsquare"sv, 0x33B8 }, + { "kwsquare"sv, 0x33BE }, + { "l"sv, 0x006C }, + { "labengali"sv, 0x09B2 }, + { "lacute"sv, 0x013A }, + { "ladeva"sv, 0x0932 }, + { "lagujarati"sv, 0x0AB2 }, + { "lagurmukhi"sv, 0x0A32 }, + { "lakkhangyaothai"sv, 0x0E45 }, + { "lamaleffinalarabic"sv, 0xFEFC }, + { "lamalefhamzaabovefinalarabic"sv, 0xFEF8 }, + { "lamalefhamzaaboveisolatedarabic"sv, 0xFEF7 }, + { "lamalefhamzabelowfinalarabic"sv, 0xFEFA }, + { "lamalefhamzabelowisolatedarabic"sv, 0xFEF9 }, + { "lamalefisolatedarabic"sv, 0xFEFB }, + { "lamalefmaddaabovefinalarabic"sv, 0xFEF6 }, + { "lamalefmaddaaboveisolatedarabic"sv, 0xFEF5 }, + { "lamarabic"sv, 0x0644 }, + { "lambda"sv, 0x03BB }, + { "lambdastroke"sv, 0x019B }, + { "lamed"sv, 0x05DC }, + { "lameddagesh"sv, 0xFB3C }, + { "lameddageshhebrew"sv, 0xFB3C }, + { "lamedhebrew"sv, 0x05DC }, + { "lamfinalarabic"sv, 0xFEDE }, + { "lamhahinitialarabic"sv, 0xFCCA }, + { "laminitialarabic"sv, 0xFEDF }, + { "lamjeeminitialarabic"sv, 0xFCC9 }, + { "lamkhahinitialarabic"sv, 0xFCCB }, + { "lamlamhehisolatedarabic"sv, 0xFDF2 }, + { "lammedialarabic"sv, 0xFEE0 }, + { "lammeemhahinitialarabic"sv, 0xFD88 }, + { "lammeeminitialarabic"sv, 0xFCCC }, + { "largecircle"sv, 0x25EF }, + { "lbar"sv, 0x019A }, + { "lbelt"sv, 0x026C }, + { "lbopomofo"sv, 0x310C }, + { "lcaron"sv, 0x013E }, + { "lcedilla"sv, 0x013C }, + { "lcircle"sv, 0x24DB }, + { "lcircumflexbelow"sv, 0x1E3D }, + { "lcommaaccent"sv, 0x013C }, + { "ldot"sv, 0x0140 }, + { "ldotaccent"sv, 0x0140 }, + { "ldotbelow"sv, 0x1E37 }, + { "ldotbelowmacron"sv, 0x1E39 }, + { "leftangleabovecmb"sv, 0x031A }, + { "lefttackbelowcmb"sv, 0x0318 }, + { "less"sv, 0x003C }, + { "lessequal"sv, 0x2264 }, + { "lessequalorgreater"sv, 0x22DA }, + { "lessmonospace"sv, 0xFF1C }, + { "lessorequivalent"sv, 0x2272 }, + { "lessorgreater"sv, 0x2276 }, + { "lessoverequal"sv, 0x2266 }, + { "lesssmall"sv, 0xFE64 }, + { "lezh"sv, 0x026E }, + { "lfblock"sv, 0x258C }, + { "lhookretroflex"sv, 0x026D }, + { "lira"sv, 0x20A4 }, + { "liwnarmenian"sv, 0x056C }, + { "lj"sv, 0x01C9 }, + { "ljecyrillic"sv, 0x0459 }, + { "ll"sv, 0xF6C0 }, + { "lladeva"sv, 0x0933 }, + { "llagujarati"sv, 0x0AB3 }, + { "llinebelow"sv, 0x1E3B }, + { "llladeva"sv, 0x0934 }, + { "llvocalicbengali"sv, 0x09E1 }, + { "llvocalicdeva"sv, 0x0961 }, + { "llvocalicvowelsignbengali"sv, 0x09E3 }, + { "llvocalicvowelsigndeva"sv, 0x0963 }, + { "lmiddletilde"sv, 0x026B }, + { "lmonospace"sv, 0xFF4C }, + { "lmsquare"sv, 0x33D0 }, + { "lochulathai"sv, 0x0E2C }, + { "logicaland"sv, 0x2227 }, + { "logicalnot"sv, 0x00AC }, + { "logicalnotreversed"sv, 0x2310 }, + { "logicalor"sv, 0x2228 }, + { "lolingthai"sv, 0x0E25 }, + { "longs"sv, 0x017F }, + { "lowlinecenterline"sv, 0xFE4E }, + { "lowlinecmb"sv, 0x0332 }, + { "lowlinedashed"sv, 0xFE4D }, + { "lozenge"sv, 0x25CA }, + { "lparen"sv, 0x24A7 }, + { "lslash"sv, 0x0142 }, + { "lsquare"sv, 0x2113 }, + { "lsuperior"sv, 0xF6EE }, + { "ltshade"sv, 0x2591 }, + { "luthai"sv, 0x0E26 }, + { "lvocalicbengali"sv, 0x098C }, + { "lvocalicdeva"sv, 0x090C }, + { "lvocalicvowelsignbengali"sv, 0x09E2 }, + { "lvocalicvowelsigndeva"sv, 0x0962 }, + { "lxsquare"sv, 0x33D3 }, + { "m"sv, 0x006D }, + { "mabengali"sv, 0x09AE }, + { "macron"sv, 0x00AF }, + { "macronbelowcmb"sv, 0x0331 }, + { "macroncmb"sv, 0x0304 }, + { "macronlowmod"sv, 0x02CD }, + { "macronmonospace"sv, 0xFFE3 }, + { "macute"sv, 0x1E3F }, + { "madeva"sv, 0x092E }, + { "magujarati"sv, 0x0AAE }, + { "magurmukhi"sv, 0x0A2E }, + { "mahapakhhebrew"sv, 0x05A4 }, + { "mahapakhlefthebrew"sv, 0x05A4 }, + { "mahiragana"sv, 0x307E }, + { "maichattawalowleftthai"sv, 0xF895 }, + { "maichattawalowrightthai"sv, 0xF894 }, + { "maichattawathai"sv, 0x0E4B }, + { "maichattawaupperleftthai"sv, 0xF893 }, + { "maieklowleftthai"sv, 0xF88C }, + { "maieklowrightthai"sv, 0xF88B }, + { "maiekthai"sv, 0x0E48 }, + { "maiekupperleftthai"sv, 0xF88A }, + { "maihanakatleftthai"sv, 0xF884 }, + { "maihanakatthai"sv, 0x0E31 }, + { "maitaikhuleftthai"sv, 0xF889 }, + { "maitaikhuthai"sv, 0x0E47 }, + { "maitholowleftthai"sv, 0xF88F }, + { "maitholowrightthai"sv, 0xF88E }, + { "maithothai"sv, 0x0E49 }, + { "maithoupperleftthai"sv, 0xF88D }, + { "maitrilowleftthai"sv, 0xF892 }, + { "maitrilowrightthai"sv, 0xF891 }, + { "maitrithai"sv, 0x0E4A }, + { "maitriupperleftthai"sv, 0xF890 }, + { "maiyamokthai"sv, 0x0E46 }, + { "makatakana"sv, 0x30DE }, + { "makatakanahalfwidth"sv, 0xFF8F }, + { "male"sv, 0x2642 }, + { "mansyonsquare"sv, 0x3347 }, + { "maqafhebrew"sv, 0x05BE }, + { "mars"sv, 0x2642 }, + { "masoracirclehebrew"sv, 0x05AF }, + { "masquare"sv, 0x3383 }, + { "mbopomofo"sv, 0x3107 }, + { "mbsquare"sv, 0x33D4 }, + { "mcircle"sv, 0x24DC }, + { "mcubedsquare"sv, 0x33A5 }, + { "mdotaccent"sv, 0x1E41 }, + { "mdotbelow"sv, 0x1E43 }, + { "meemarabic"sv, 0x0645 }, + { "meemfinalarabic"sv, 0xFEE2 }, + { "meeminitialarabic"sv, 0xFEE3 }, + { "meemmedialarabic"sv, 0xFEE4 }, + { "meemmeeminitialarabic"sv, 0xFCD1 }, + { "meemmeemisolatedarabic"sv, 0xFC48 }, + { "meetorusquare"sv, 0x334D }, + { "mehiragana"sv, 0x3081 }, + { "meizierasquare"sv, 0x337E }, + { "mekatakana"sv, 0x30E1 }, + { "mekatakanahalfwidth"sv, 0xFF92 }, + { "mem"sv, 0x05DE }, + { "memdagesh"sv, 0xFB3E }, + { "memdageshhebrew"sv, 0xFB3E }, + { "memhebrew"sv, 0x05DE }, + { "menarmenian"sv, 0x0574 }, + { "merkhahebrew"sv, 0x05A5 }, + { "merkhakefulahebrew"sv, 0x05A6 }, + { "merkhakefulalefthebrew"sv, 0x05A6 }, + { "merkhalefthebrew"sv, 0x05A5 }, + { "mhook"sv, 0x0271 }, + { "mhzsquare"sv, 0x3392 }, + { "middledotkatakanahalfwidth"sv, 0xFF65 }, + { "middot"sv, 0x00B7 }, + { "mieumacirclekorean"sv, 0x3272 }, + { "mieumaparenkorean"sv, 0x3212 }, + { "mieumcirclekorean"sv, 0x3264 }, + { "mieumkorean"sv, 0x3141 }, + { "mieumpansioskorean"sv, 0x3170 }, + { "mieumparenkorean"sv, 0x3204 }, + { "mieumpieupkorean"sv, 0x316E }, + { "mieumsioskorean"sv, 0x316F }, + { "mihiragana"sv, 0x307F }, + { "mikatakana"sv, 0x30DF }, + { "mikatakanahalfwidth"sv, 0xFF90 }, + { "minus"sv, 0x2212 }, + { "minusbelowcmb"sv, 0x0320 }, + { "minuscircle"sv, 0x2296 }, + { "minusmod"sv, 0x02D7 }, + { "minusplus"sv, 0x2213 }, + { "minute"sv, 0x2032 }, + { "miribaarusquare"sv, 0x334A }, + { "mirisquare"sv, 0x3349 }, + { "mlonglegturned"sv, 0x0270 }, + { "mlsquare"sv, 0x3396 }, + { "mmcubedsquare"sv, 0x33A3 }, + { "mmonospace"sv, 0xFF4D }, + { "mmsquaredsquare"sv, 0x339F }, + { "mohiragana"sv, 0x3082 }, + { "mohmsquare"sv, 0x33C1 }, + { "mokatakana"sv, 0x30E2 }, + { "mokatakanahalfwidth"sv, 0xFF93 }, + { "molsquare"sv, 0x33D6 }, + { "momathai"sv, 0x0E21 }, + { "moverssquare"sv, 0x33A7 }, + { "moverssquaredsquare"sv, 0x33A8 }, + { "mparen"sv, 0x24A8 }, + { "mpasquare"sv, 0x33AB }, + { "mssquare"sv, 0x33B3 }, + { "msuperior"sv, 0xF6EF }, + { "mturned"sv, 0x026F }, + { "mu"sv, 0x00B5 }, + { "mu1"sv, 0x00B5 }, + { "muasquare"sv, 0x3382 }, + { "muchgreater"sv, 0x226B }, + { "muchless"sv, 0x226A }, + { "mufsquare"sv, 0x338C }, + { "mugreek"sv, 0x03BC }, + { "mugsquare"sv, 0x338D }, + { "muhiragana"sv, 0x3080 }, + { "mukatakana"sv, 0x30E0 }, + { "mukatakanahalfwidth"sv, 0xFF91 }, + { "mulsquare"sv, 0x3395 }, + { "multiply"sv, 0x00D7 }, + { "mumsquare"sv, 0x339B }, + { "munahhebrew"sv, 0x05A3 }, + { "munahlefthebrew"sv, 0x05A3 }, + { "musicalnote"sv, 0x266A }, + { "musicalnotedbl"sv, 0x266B }, + { "musicflatsign"sv, 0x266D }, + { "musicsharpsign"sv, 0x266F }, + { "mussquare"sv, 0x33B2 }, + { "muvsquare"sv, 0x33B6 }, + { "muwsquare"sv, 0x33BC }, + { "mvmegasquare"sv, 0x33B9 }, + { "mvsquare"sv, 0x33B7 }, + { "mwmegasquare"sv, 0x33BF }, + { "mwsquare"sv, 0x33BD }, + { "n"sv, 0x006E }, + { "nabengali"sv, 0x09A8 }, + { "nabla"sv, 0x2207 }, + { "nacute"sv, 0x0144 }, + { "nadeva"sv, 0x0928 }, + { "nagujarati"sv, 0x0AA8 }, + { "nagurmukhi"sv, 0x0A28 }, + { "nahiragana"sv, 0x306A }, + { "nakatakana"sv, 0x30CA }, + { "nakatakanahalfwidth"sv, 0xFF85 }, + { "napostrophe"sv, 0x0149 }, + { "nasquare"sv, 0x3381 }, + { "nbopomofo"sv, 0x310B }, + { "nbspace"sv, 0x00A0 }, + { "ncaron"sv, 0x0148 }, + { "ncedilla"sv, 0x0146 }, + { "ncircle"sv, 0x24DD }, + { "ncircumflexbelow"sv, 0x1E4B }, + { "ncommaaccent"sv, 0x0146 }, + { "ndotaccent"sv, 0x1E45 }, + { "ndotbelow"sv, 0x1E47 }, + { "nehiragana"sv, 0x306D }, + { "nekatakana"sv, 0x30CD }, + { "nekatakanahalfwidth"sv, 0xFF88 }, + { "newsheqelsign"sv, 0x20AA }, + { "nfsquare"sv, 0x338B }, + { "ngabengali"sv, 0x0999 }, + { "ngadeva"sv, 0x0919 }, + { "ngagujarati"sv, 0x0A99 }, + { "ngagurmukhi"sv, 0x0A19 }, + { "ngonguthai"sv, 0x0E07 }, + { "nhiragana"sv, 0x3093 }, + { "nhookleft"sv, 0x0272 }, + { "nhookretroflex"sv, 0x0273 }, + { "nieunacirclekorean"sv, 0x326F }, + { "nieunaparenkorean"sv, 0x320F }, + { "nieuncieuckorean"sv, 0x3135 }, + { "nieuncirclekorean"sv, 0x3261 }, + { "nieunhieuhkorean"sv, 0x3136 }, + { "nieunkorean"sv, 0x3134 }, + { "nieunpansioskorean"sv, 0x3168 }, + { "nieunparenkorean"sv, 0x3201 }, + { "nieunsioskorean"sv, 0x3167 }, + { "nieuntikeutkorean"sv, 0x3166 }, + { "nihiragana"sv, 0x306B }, + { "nikatakana"sv, 0x30CB }, + { "nikatakanahalfwidth"sv, 0xFF86 }, + { "nikhahitleftthai"sv, 0xF899 }, + { "nikhahitthai"sv, 0x0E4D }, + { "nine"sv, 0x0039 }, + { "ninearabic"sv, 0x0669 }, + { "ninebengali"sv, 0x09EF }, + { "ninecircle"sv, 0x2468 }, + { "ninecircleinversesansserif"sv, 0x2792 }, + { "ninedeva"sv, 0x096F }, + { "ninegujarati"sv, 0x0AEF }, + { "ninegurmukhi"sv, 0x0A6F }, + { "ninehackarabic"sv, 0x0669 }, + { "ninehangzhou"sv, 0x3029 }, + { "nineideographicparen"sv, 0x3228 }, + { "nineinferior"sv, 0x2089 }, + { "ninemonospace"sv, 0xFF19 }, + { "nineoldstyle"sv, 0xF739 }, + { "nineparen"sv, 0x247C }, + { "nineperiod"sv, 0x2490 }, + { "ninepersian"sv, 0x06F9 }, + { "nineroman"sv, 0x2178 }, + { "ninesuperior"sv, 0x2079 }, + { "nineteencircle"sv, 0x2472 }, + { "nineteenparen"sv, 0x2486 }, + { "nineteenperiod"sv, 0x249A }, + { "ninethai"sv, 0x0E59 }, + { "nj"sv, 0x01CC }, + { "njecyrillic"sv, 0x045A }, + { "nkatakana"sv, 0x30F3 }, + { "nkatakanahalfwidth"sv, 0xFF9D }, + { "nlegrightlong"sv, 0x019E }, + { "nlinebelow"sv, 0x1E49 }, + { "nmonospace"sv, 0xFF4E }, + { "nmsquare"sv, 0x339A }, + { "nnabengali"sv, 0x09A3 }, + { "nnadeva"sv, 0x0923 }, + { "nnagujarati"sv, 0x0AA3 }, + { "nnagurmukhi"sv, 0x0A23 }, + { "nnnadeva"sv, 0x0929 }, + { "nohiragana"sv, 0x306E }, + { "nokatakana"sv, 0x30CE }, + { "nokatakanahalfwidth"sv, 0xFF89 }, + { "nonbreakingspace"sv, 0x00A0 }, + { "nonenthai"sv, 0x0E13 }, + { "nonuthai"sv, 0x0E19 }, + { "noonarabic"sv, 0x0646 }, + { "noonfinalarabic"sv, 0xFEE6 }, + { "noonghunnaarabic"sv, 0x06BA }, + { "noonghunnafinalarabic"sv, 0xFB9F }, + { "nooninitialarabic"sv, 0xFEE7 }, + { "noonjeeminitialarabic"sv, 0xFCD2 }, + { "noonjeemisolatedarabic"sv, 0xFC4B }, + { "noonmedialarabic"sv, 0xFEE8 }, + { "noonmeeminitialarabic"sv, 0xFCD5 }, + { "noonmeemisolatedarabic"sv, 0xFC4E }, + { "noonnoonfinalarabic"sv, 0xFC8D }, + { "notcontains"sv, 0x220C }, + { "notelement"sv, 0x2209 }, + { "notelementof"sv, 0x2209 }, + { "notequal"sv, 0x2260 }, + { "notgreater"sv, 0x226F }, + { "notgreaternorequal"sv, 0x2271 }, + { "notgreaternorless"sv, 0x2279 }, + { "notidentical"sv, 0x2262 }, + { "notless"sv, 0x226E }, + { "notlessnorequal"sv, 0x2270 }, + { "notparallel"sv, 0x2226 }, + { "notprecedes"sv, 0x2280 }, + { "notsubset"sv, 0x2284 }, + { "notsucceeds"sv, 0x2281 }, + { "notsuperset"sv, 0x2285 }, + { "nowarmenian"sv, 0x0576 }, + { "nparen"sv, 0x24A9 }, + { "nssquare"sv, 0x33B1 }, + { "nsuperior"sv, 0x207F }, + { "ntilde"sv, 0x00F1 }, + { "nu"sv, 0x03BD }, + { "nuhiragana"sv, 0x306C }, + { "nukatakana"sv, 0x30CC }, + { "nukatakanahalfwidth"sv, 0xFF87 }, + { "nuktabengali"sv, 0x09BC }, + { "nuktadeva"sv, 0x093C }, + { "nuktagujarati"sv, 0x0ABC }, + { "nuktagurmukhi"sv, 0x0A3C }, + { "numbersign"sv, 0x0023 }, + { "numbersignmonospace"sv, 0xFF03 }, + { "numbersignsmall"sv, 0xFE5F }, + { "numeralsigngreek"sv, 0x0374 }, + { "numeralsignlowergreek"sv, 0x0375 }, + { "numero"sv, 0x2116 }, + { "nun"sv, 0x05E0 }, + { "nundagesh"sv, 0xFB40 }, + { "nundageshhebrew"sv, 0xFB40 }, + { "nunhebrew"sv, 0x05E0 }, + { "nvsquare"sv, 0x33B5 }, + { "nwsquare"sv, 0x33BB }, + { "nyabengali"sv, 0x099E }, + { "nyadeva"sv, 0x091E }, + { "nyagujarati"sv, 0x0A9E }, + { "nyagurmukhi"sv, 0x0A1E }, + { "o"sv, 0x006F }, + { "oacute"sv, 0x00F3 }, + { "oangthai"sv, 0x0E2D }, + { "obarred"sv, 0x0275 }, + { "obarredcyrillic"sv, 0x04E9 }, + { "obarreddieresiscyrillic"sv, 0x04EB }, + { "obengali"sv, 0x0993 }, + { "obopomofo"sv, 0x311B }, + { "obreve"sv, 0x014F }, + { "ocandradeva"sv, 0x0911 }, + { "ocandragujarati"sv, 0x0A91 }, + { "ocandravowelsigndeva"sv, 0x0949 }, + { "ocandravowelsigngujarati"sv, 0x0AC9 }, + { "ocaron"sv, 0x01D2 }, + { "ocircle"sv, 0x24DE }, + { "ocircumflex"sv, 0x00F4 }, + { "ocircumflexacute"sv, 0x1ED1 }, + { "ocircumflexdotbelow"sv, 0x1ED9 }, + { "ocircumflexgrave"sv, 0x1ED3 }, + { "ocircumflexhookabove"sv, 0x1ED5 }, + { "ocircumflextilde"sv, 0x1ED7 }, + { "ocyrillic"sv, 0x043E }, + { "odblacute"sv, 0x0151 }, + { "odblgrave"sv, 0x020D }, + { "odeva"sv, 0x0913 }, + { "odieresis"sv, 0x00F6 }, + { "odieresiscyrillic"sv, 0x04E7 }, + { "odotbelow"sv, 0x1ECD }, + { "oe"sv, 0x0153 }, + { "oekorean"sv, 0x315A }, + { "ogonek"sv, 0x02DB }, + { "ogonekcmb"sv, 0x0328 }, + { "ograve"sv, 0x00F2 }, + { "ogujarati"sv, 0x0A93 }, + { "oharmenian"sv, 0x0585 }, + { "ohiragana"sv, 0x304A }, + { "ohookabove"sv, 0x1ECF }, + { "ohorn"sv, 0x01A1 }, + { "ohornacute"sv, 0x1EDB }, + { "ohorndotbelow"sv, 0x1EE3 }, + { "ohorngrave"sv, 0x1EDD }, + { "ohornhookabove"sv, 0x1EDF }, + { "ohorntilde"sv, 0x1EE1 }, + { "ohungarumlaut"sv, 0x0151 }, + { "oi"sv, 0x01A3 }, + { "oinvertedbreve"sv, 0x020F }, + { "okatakana"sv, 0x30AA }, + { "okatakanahalfwidth"sv, 0xFF75 }, + { "okorean"sv, 0x3157 }, + { "olehebrew"sv, 0x05AB }, + { "omacron"sv, 0x014D }, + { "omacronacute"sv, 0x1E53 }, + { "omacrongrave"sv, 0x1E51 }, + { "omdeva"sv, 0x0950 }, + { "omega"sv, 0x03C9 }, + { "omega1"sv, 0x03D6 }, + { "omegacyrillic"sv, 0x0461 }, + { "omegalatinclosed"sv, 0x0277 }, + { "omegaroundcyrillic"sv, 0x047B }, + { "omegatitlocyrillic"sv, 0x047D }, + { "omegatonos"sv, 0x03CE }, + { "omgujarati"sv, 0x0AD0 }, + { "omicron"sv, 0x03BF }, + { "omicrontonos"sv, 0x03CC }, + { "omonospace"sv, 0xFF4F }, + { "one"sv, 0x0031 }, + { "onearabic"sv, 0x0661 }, + { "onebengali"sv, 0x09E7 }, + { "onecircle"sv, 0x2460 }, + { "onecircleinversesansserif"sv, 0x278A }, + { "onedeva"sv, 0x0967 }, + { "onedotenleader"sv, 0x2024 }, + { "oneeighth"sv, 0x215B }, + { "onefitted"sv, 0xF6DC }, + { "onegujarati"sv, 0x0AE7 }, + { "onegurmukhi"sv, 0x0A67 }, + { "onehackarabic"sv, 0x0661 }, + { "onehalf"sv, 0x00BD }, + { "onehangzhou"sv, 0x3021 }, + { "oneideographicparen"sv, 0x3220 }, + { "oneinferior"sv, 0x2081 }, + { "onemonospace"sv, 0xFF11 }, + { "onenumeratorbengali"sv, 0x09F4 }, + { "oneoldstyle"sv, 0xF731 }, + { "oneparen"sv, 0x2474 }, + { "oneperiod"sv, 0x2488 }, + { "onepersian"sv, 0x06F1 }, + { "onequarter"sv, 0x00BC }, + { "oneroman"sv, 0x2170 }, + { "onesuperior"sv, 0x00B9 }, + { "onethai"sv, 0x0E51 }, + { "onethird"sv, 0x2153 }, + { "oogonek"sv, 0x01EB }, + { "oogonekmacron"sv, 0x01ED }, + { "oogurmukhi"sv, 0x0A13 }, + { "oomatragurmukhi"sv, 0x0A4B }, + { "oopen"sv, 0x0254 }, + { "oparen"sv, 0x24AA }, + { "openbullet"sv, 0x25E6 }, + { "option"sv, 0x2325 }, + { "ordfeminine"sv, 0x00AA }, + { "ordmasculine"sv, 0x00BA }, + { "orthogonal"sv, 0x221F }, + { "oshortdeva"sv, 0x0912 }, + { "oshortvowelsigndeva"sv, 0x094A }, + { "oslash"sv, 0x00F8 }, + { "oslashacute"sv, 0x01FF }, + { "osmallhiragana"sv, 0x3049 }, + { "osmallkatakana"sv, 0x30A9 }, + { "osmallkatakanahalfwidth"sv, 0xFF6B }, + { "ostrokeacute"sv, 0x01FF }, + { "osuperior"sv, 0xF6F0 }, + { "otcyrillic"sv, 0x047F }, + { "otilde"sv, 0x00F5 }, + { "otildeacute"sv, 0x1E4D }, + { "otildedieresis"sv, 0x1E4F }, + { "oubopomofo"sv, 0x3121 }, + { "overline"sv, 0x203E }, + { "overlinecenterline"sv, 0xFE4A }, + { "overlinecmb"sv, 0x0305 }, + { "overlinedashed"sv, 0xFE49 }, + { "overlinedblwavy"sv, 0xFE4C }, + { "overlinewavy"sv, 0xFE4B }, + { "overscore"sv, 0x00AF }, + { "ovowelsignbengali"sv, 0x09CB }, + { "ovowelsigndeva"sv, 0x094B }, + { "ovowelsigngujarati"sv, 0x0ACB }, + { "p"sv, 0x0070 }, + { "paampssquare"sv, 0x3380 }, + { "paasentosquare"sv, 0x332B }, + { "pabengali"sv, 0x09AA }, + { "pacute"sv, 0x1E55 }, + { "padeva"sv, 0x092A }, + { "pagedown"sv, 0x21DF }, + { "pageup"sv, 0x21DE }, + { "pagujarati"sv, 0x0AAA }, + { "pagurmukhi"sv, 0x0A2A }, + { "pahiragana"sv, 0x3071 }, + { "paiyannoithai"sv, 0x0E2F }, + { "pakatakana"sv, 0x30D1 }, + { "palatalizationcyrilliccmb"sv, 0x0484 }, + { "palochkacyrillic"sv, 0x04C0 }, + { "pansioskorean"sv, 0x317F }, + { "paragraph"sv, 0x00B6 }, + { "parallel"sv, 0x2225 }, + { "parenleft"sv, 0x0028 }, + { "parenleftaltonearabic"sv, 0xFD3E }, + { "parenleftbt"sv, 0xF8ED }, + { "parenleftex"sv, 0xF8EC }, + { "parenleftinferior"sv, 0x208D }, + { "parenleftmonospace"sv, 0xFF08 }, + { "parenleftsmall"sv, 0xFE59 }, + { "parenleftsuperior"sv, 0x207D }, + { "parenlefttp"sv, 0xF8EB }, + { "parenleftvertical"sv, 0xFE35 }, + { "parenright"sv, 0x0029 }, + { "parenrightaltonearabic"sv, 0xFD3F }, + { "parenrightbt"sv, 0xF8F8 }, + { "parenrightex"sv, 0xF8F7 }, + { "parenrightinferior"sv, 0x208E }, + { "parenrightmonospace"sv, 0xFF09 }, + { "parenrightsmall"sv, 0xFE5A }, + { "parenrightsuperior"sv, 0x207E }, + { "parenrighttp"sv, 0xF8F6 }, + { "parenrightvertical"sv, 0xFE36 }, + { "partialdiff"sv, 0x2202 }, + { "paseqhebrew"sv, 0x05C0 }, + { "pashtahebrew"sv, 0x0599 }, + { "pasquare"sv, 0x33A9 }, + { "patah"sv, 0x05B7 }, + { "patah11"sv, 0x05B7 }, + { "patah1d"sv, 0x05B7 }, + { "patah2a"sv, 0x05B7 }, + { "patahhebrew"sv, 0x05B7 }, + { "patahnarrowhebrew"sv, 0x05B7 }, + { "patahquarterhebrew"sv, 0x05B7 }, + { "patahwidehebrew"sv, 0x05B7 }, + { "pazerhebrew"sv, 0x05A1 }, + { "pbopomofo"sv, 0x3106 }, + { "pcircle"sv, 0x24DF }, + { "pdotaccent"sv, 0x1E57 }, + { "pe"sv, 0x05E4 }, + { "pecyrillic"sv, 0x043F }, + { "pedagesh"sv, 0xFB44 }, + { "pedageshhebrew"sv, 0xFB44 }, + { "peezisquare"sv, 0x333B }, + { "pefinaldageshhebrew"sv, 0xFB43 }, + { "peharabic"sv, 0x067E }, + { "peharmenian"sv, 0x057A }, + { "pehebrew"sv, 0x05E4 }, + { "pehfinalarabic"sv, 0xFB57 }, + { "pehinitialarabic"sv, 0xFB58 }, + { "pehiragana"sv, 0x307A }, + { "pehmedialarabic"sv, 0xFB59 }, + { "pekatakana"sv, 0x30DA }, + { "pemiddlehookcyrillic"sv, 0x04A7 }, + { "perafehebrew"sv, 0xFB4E }, + { "percent"sv, 0x0025 }, + { "percentarabic"sv, 0x066A }, + { "percentmonospace"sv, 0xFF05 }, + { "percentsmall"sv, 0xFE6A }, + { "period"sv, 0x002E }, + { "periodarmenian"sv, 0x0589 }, + { "periodcentered"sv, 0x00B7 }, + { "periodhalfwidth"sv, 0xFF61 }, + { "periodinferior"sv, 0xF6E7 }, + { "periodmonospace"sv, 0xFF0E }, + { "periodsmall"sv, 0xFE52 }, + { "periodsuperior"sv, 0xF6E8 }, + { "perispomenigreekcmb"sv, 0x0342 }, + { "perpendicular"sv, 0x22A5 }, + { "perthousand"sv, 0x2030 }, + { "peseta"sv, 0x20A7 }, + { "pfsquare"sv, 0x338A }, + { "phabengali"sv, 0x09AB }, + { "phadeva"sv, 0x092B }, + { "phagujarati"sv, 0x0AAB }, + { "phagurmukhi"sv, 0x0A2B }, + { "phi"sv, 0x03C6 }, + { "phi1"sv, 0x03D5 }, + { "phieuphacirclekorean"sv, 0x327A }, + { "phieuphaparenkorean"sv, 0x321A }, + { "phieuphcirclekorean"sv, 0x326C }, + { "phieuphkorean"sv, 0x314D }, + { "phieuphparenkorean"sv, 0x320C }, + { "philatin"sv, 0x0278 }, + { "phinthuthai"sv, 0x0E3A }, + { "phisymbolgreek"sv, 0x03D5 }, + { "phook"sv, 0x01A5 }, + { "phophanthai"sv, 0x0E1E }, + { "phophungthai"sv, 0x0E1C }, + { "phosamphaothai"sv, 0x0E20 }, + { "pi"sv, 0x03C0 }, + { "pieupacirclekorean"sv, 0x3273 }, + { "pieupaparenkorean"sv, 0x3213 }, + { "pieupcieuckorean"sv, 0x3176 }, + { "pieupcirclekorean"sv, 0x3265 }, + { "pieupkiyeokkorean"sv, 0x3172 }, + { "pieupkorean"sv, 0x3142 }, + { "pieupparenkorean"sv, 0x3205 }, + { "pieupsioskiyeokkorean"sv, 0x3174 }, + { "pieupsioskorean"sv, 0x3144 }, + { "pieupsiostikeutkorean"sv, 0x3175 }, + { "pieupthieuthkorean"sv, 0x3177 }, + { "pieuptikeutkorean"sv, 0x3173 }, + { "pihiragana"sv, 0x3074 }, + { "pikatakana"sv, 0x30D4 }, + { "pisymbolgreek"sv, 0x03D6 }, + { "piwrarmenian"sv, 0x0583 }, + { "plus"sv, 0x002B }, + { "plusbelowcmb"sv, 0x031F }, + { "pluscircle"sv, 0x2295 }, + { "plusminus"sv, 0x00B1 }, + { "plusmod"sv, 0x02D6 }, + { "plusmonospace"sv, 0xFF0B }, + { "plussmall"sv, 0xFE62 }, + { "plussuperior"sv, 0x207A }, + { "pmonospace"sv, 0xFF50 }, + { "pmsquare"sv, 0x33D8 }, + { "pohiragana"sv, 0x307D }, + { "pointingindexdownwhite"sv, 0x261F }, + { "pointingindexleftwhite"sv, 0x261C }, + { "pointingindexrightwhite"sv, 0x261E }, + { "pointingindexupwhite"sv, 0x261D }, + { "pokatakana"sv, 0x30DD }, + { "poplathai"sv, 0x0E1B }, + { "postalmark"sv, 0x3012 }, + { "postalmarkface"sv, 0x3020 }, + { "pparen"sv, 0x24AB }, + { "precedes"sv, 0x227A }, + { "prescription"sv, 0x211E }, + { "primemod"sv, 0x02B9 }, + { "primereversed"sv, 0x2035 }, + { "product"sv, 0x220F }, + { "projective"sv, 0x2305 }, + { "prolongedkana"sv, 0x30FC }, + { "propellor"sv, 0x2318 }, + { "propersubset"sv, 0x2282 }, + { "propersuperset"sv, 0x2283 }, + { "proportion"sv, 0x2237 }, + { "proportional"sv, 0x221D }, + { "psi"sv, 0x03C8 }, + { "psicyrillic"sv, 0x0471 }, + { "psilipneumatacyrilliccmb"sv, 0x0486 }, + { "pssquare"sv, 0x33B0 }, + { "puhiragana"sv, 0x3077 }, + { "pukatakana"sv, 0x30D7 }, + { "pvsquare"sv, 0x33B4 }, + { "pwsquare"sv, 0x33BA }, + { "q"sv, 0x0071 }, + { "qadeva"sv, 0x0958 }, + { "qadmahebrew"sv, 0x05A8 }, + { "qafarabic"sv, 0x0642 }, + { "qaffinalarabic"sv, 0xFED6 }, + { "qafinitialarabic"sv, 0xFED7 }, + { "qafmedialarabic"sv, 0xFED8 }, + { "qamats"sv, 0x05B8 }, + { "qamats10"sv, 0x05B8 }, + { "qamats1a"sv, 0x05B8 }, + { "qamats1c"sv, 0x05B8 }, + { "qamats27"sv, 0x05B8 }, + { "qamats29"sv, 0x05B8 }, + { "qamats33"sv, 0x05B8 }, + { "qamatsde"sv, 0x05B8 }, + { "qamatshebrew"sv, 0x05B8 }, + { "qamatsnarrowhebrew"sv, 0x05B8 }, + { "qamatsqatanhebrew"sv, 0x05B8 }, + { "qamatsqatannarrowhebrew"sv, 0x05B8 }, + { "qamatsqatanquarterhebrew"sv, 0x05B8 }, + { "qamatsqatanwidehebrew"sv, 0x05B8 }, + { "qamatsquarterhebrew"sv, 0x05B8 }, + { "qamatswidehebrew"sv, 0x05B8 }, + { "qarneyparahebrew"sv, 0x059F }, + { "qbopomofo"sv, 0x3111 }, + { "qcircle"sv, 0x24E0 }, + { "qhook"sv, 0x02A0 }, + { "qmonospace"sv, 0xFF51 }, + { "qof"sv, 0x05E7 }, + { "qofdagesh"sv, 0xFB47 }, + { "qofdageshhebrew"sv, 0xFB47 }, + { "qofhebrew"sv, 0x05E7 }, + { "qparen"sv, 0x24AC }, + { "quarternote"sv, 0x2669 }, + { "qubuts"sv, 0x05BB }, + { "qubuts18"sv, 0x05BB }, + { "qubuts25"sv, 0x05BB }, + { "qubuts31"sv, 0x05BB }, + { "qubutshebrew"sv, 0x05BB }, + { "qubutsnarrowhebrew"sv, 0x05BB }, + { "qubutsquarterhebrew"sv, 0x05BB }, + { "qubutswidehebrew"sv, 0x05BB }, + { "question"sv, 0x003F }, + { "questionarabic"sv, 0x061F }, + { "questionarmenian"sv, 0x055E }, + { "questiondown"sv, 0x00BF }, + { "questiondownsmall"sv, 0xF7BF }, + { "questiongreek"sv, 0x037E }, + { "questionmonospace"sv, 0xFF1F }, + { "questionsmall"sv, 0xF73F }, + { "quotedbl"sv, 0x0022 }, + { "quotedblbase"sv, 0x201E }, + { "quotedblleft"sv, 0x201C }, + { "quotedblmonospace"sv, 0xFF02 }, + { "quotedblprime"sv, 0x301E }, + { "quotedblprimereversed"sv, 0x301D }, + { "quotedblright"sv, 0x201D }, + { "quoteleft"sv, 0x2018 }, + { "quoteleftreversed"sv, 0x201B }, + { "quotereversed"sv, 0x201B }, + { "quoteright"sv, 0x2019 }, + { "quoterightn"sv, 0x0149 }, + { "quotesinglbase"sv, 0x201A }, + { "quotesingle"sv, 0x0027 }, + { "quotesinglemonospace"sv, 0xFF07 }, + { "r"sv, 0x0072 }, + { "raarmenian"sv, 0x057C }, + { "rabengali"sv, 0x09B0 }, + { "racute"sv, 0x0155 }, + { "radeva"sv, 0x0930 }, + { "radical"sv, 0x221A }, + { "radicalex"sv, 0xF8E5 }, + { "radoverssquare"sv, 0x33AE }, + { "radoverssquaredsquare"sv, 0x33AF }, + { "radsquare"sv, 0x33AD }, + { "rafe"sv, 0x05BF }, + { "rafehebrew"sv, 0x05BF }, + { "ragujarati"sv, 0x0AB0 }, + { "ragurmukhi"sv, 0x0A30 }, + { "rahiragana"sv, 0x3089 }, + { "rakatakana"sv, 0x30E9 }, + { "rakatakanahalfwidth"sv, 0xFF97 }, + { "ralowerdiagonalbengali"sv, 0x09F1 }, + { "ramiddlediagonalbengali"sv, 0x09F0 }, + { "ramshorn"sv, 0x0264 }, + { "ratio"sv, 0x2236 }, + { "rbopomofo"sv, 0x3116 }, + { "rcaron"sv, 0x0159 }, + { "rcedilla"sv, 0x0157 }, + { "rcircle"sv, 0x24E1 }, + { "rcommaaccent"sv, 0x0157 }, + { "rdblgrave"sv, 0x0211 }, + { "rdotaccent"sv, 0x1E59 }, + { "rdotbelow"sv, 0x1E5B }, + { "rdotbelowmacron"sv, 0x1E5D }, + { "referencemark"sv, 0x203B }, + { "reflexsubset"sv, 0x2286 }, + { "reflexsuperset"sv, 0x2287 }, + { "registered"sv, 0x00AE }, + { "registersans"sv, 0xF8E8 }, + { "registerserif"sv, 0xF6DA }, + { "reharabic"sv, 0x0631 }, + { "reharmenian"sv, 0x0580 }, + { "rehfinalarabic"sv, 0xFEAE }, + { "rehiragana"sv, 0x308C }, + { "rekatakana"sv, 0x30EC }, + { "rekatakanahalfwidth"sv, 0xFF9A }, + { "resh"sv, 0x05E8 }, + { "reshdageshhebrew"sv, 0xFB48 }, + { "reshhebrew"sv, 0x05E8 }, + { "reversedtilde"sv, 0x223D }, + { "reviahebrew"sv, 0x0597 }, + { "reviamugrashhebrew"sv, 0x0597 }, + { "revlogicalnot"sv, 0x2310 }, + { "rfishhook"sv, 0x027E }, + { "rfishhookreversed"sv, 0x027F }, + { "rhabengali"sv, 0x09DD }, + { "rhadeva"sv, 0x095D }, + { "rho"sv, 0x03C1 }, + { "rhook"sv, 0x027D }, + { "rhookturned"sv, 0x027B }, + { "rhookturnedsuperior"sv, 0x02B5 }, + { "rhosymbolgreek"sv, 0x03F1 }, + { "rhotichookmod"sv, 0x02DE }, + { "rieulacirclekorean"sv, 0x3271 }, + { "rieulaparenkorean"sv, 0x3211 }, + { "rieulcirclekorean"sv, 0x3263 }, + { "rieulhieuhkorean"sv, 0x3140 }, + { "rieulkiyeokkorean"sv, 0x313A }, + { "rieulkiyeoksioskorean"sv, 0x3169 }, + { "rieulkorean"sv, 0x3139 }, + { "rieulmieumkorean"sv, 0x313B }, + { "rieulpansioskorean"sv, 0x316C }, + { "rieulparenkorean"sv, 0x3203 }, + { "rieulphieuphkorean"sv, 0x313F }, + { "rieulpieupkorean"sv, 0x313C }, + { "rieulpieupsioskorean"sv, 0x316B }, + { "rieulsioskorean"sv, 0x313D }, + { "rieulthieuthkorean"sv, 0x313E }, + { "rieultikeutkorean"sv, 0x316A }, + { "rieulyeorinhieuhkorean"sv, 0x316D }, + { "rightangle"sv, 0x221F }, + { "righttackbelowcmb"sv, 0x0319 }, + { "righttriangle"sv, 0x22BF }, + { "rihiragana"sv, 0x308A }, + { "rikatakana"sv, 0x30EA }, + { "rikatakanahalfwidth"sv, 0xFF98 }, + { "ring"sv, 0x02DA }, + { "ringbelowcmb"sv, 0x0325 }, + { "ringcmb"sv, 0x030A }, + { "ringhalfleft"sv, 0x02BF }, + { "ringhalfleftarmenian"sv, 0x0559 }, + { "ringhalfleftbelowcmb"sv, 0x031C }, + { "ringhalfleftcentered"sv, 0x02D3 }, + { "ringhalfright"sv, 0x02BE }, + { "ringhalfrightbelowcmb"sv, 0x0339 }, + { "ringhalfrightcentered"sv, 0x02D2 }, + { "rinvertedbreve"sv, 0x0213 }, + { "rittorusquare"sv, 0x3351 }, + { "rlinebelow"sv, 0x1E5F }, + { "rlongleg"sv, 0x027C }, + { "rlonglegturned"sv, 0x027A }, + { "rmonospace"sv, 0xFF52 }, + { "rohiragana"sv, 0x308D }, + { "rokatakana"sv, 0x30ED }, + { "rokatakanahalfwidth"sv, 0xFF9B }, + { "roruathai"sv, 0x0E23 }, + { "rparen"sv, 0x24AD }, + { "rrabengali"sv, 0x09DC }, + { "rradeva"sv, 0x0931 }, + { "rragurmukhi"sv, 0x0A5C }, + { "rreharabic"sv, 0x0691 }, + { "rrehfinalarabic"sv, 0xFB8D }, + { "rrvocalicbengali"sv, 0x09E0 }, + { "rrvocalicdeva"sv, 0x0960 }, + { "rrvocalicgujarati"sv, 0x0AE0 }, + { "rrvocalicvowelsignbengali"sv, 0x09C4 }, + { "rrvocalicvowelsigndeva"sv, 0x0944 }, + { "rrvocalicvowelsigngujarati"sv, 0x0AC4 }, + { "rsuperior"sv, 0xF6F1 }, + { "rtblock"sv, 0x2590 }, + { "rturned"sv, 0x0279 }, + { "rturnedsuperior"sv, 0x02B4 }, + { "ruhiragana"sv, 0x308B }, + { "rukatakana"sv, 0x30EB }, + { "rukatakanahalfwidth"sv, 0xFF99 }, + { "rupeemarkbengali"sv, 0x09F2 }, + { "rupeesignbengali"sv, 0x09F3 }, + { "rupiah"sv, 0xF6DD }, + { "ruthai"sv, 0x0E24 }, + { "rvocalicbengali"sv, 0x098B }, + { "rvocalicdeva"sv, 0x090B }, + { "rvocalicgujarati"sv, 0x0A8B }, + { "rvocalicvowelsignbengali"sv, 0x09C3 }, + { "rvocalicvowelsigndeva"sv, 0x0943 }, + { "rvocalicvowelsigngujarati"sv, 0x0AC3 }, + { "s"sv, 0x0073 }, + { "sabengali"sv, 0x09B8 }, + { "sacute"sv, 0x015B }, + { "sacutedotaccent"sv, 0x1E65 }, + { "sadarabic"sv, 0x0635 }, + { "sadeva"sv, 0x0938 }, + { "sadfinalarabic"sv, 0xFEBA }, + { "sadinitialarabic"sv, 0xFEBB }, + { "sadmedialarabic"sv, 0xFEBC }, + { "sagujarati"sv, 0x0AB8 }, + { "sagurmukhi"sv, 0x0A38 }, + { "sahiragana"sv, 0x3055 }, + { "sakatakana"sv, 0x30B5 }, + { "sakatakanahalfwidth"sv, 0xFF7B }, + { "sallallahoualayhewasallamarabic"sv, 0xFDFA }, + { "samekh"sv, 0x05E1 }, + { "samekhdagesh"sv, 0xFB41 }, + { "samekhdageshhebrew"sv, 0xFB41 }, + { "samekhhebrew"sv, 0x05E1 }, + { "saraaathai"sv, 0x0E32 }, + { "saraaethai"sv, 0x0E41 }, + { "saraaimaimalaithai"sv, 0x0E44 }, + { "saraaimaimuanthai"sv, 0x0E43 }, + { "saraamthai"sv, 0x0E33 }, + { "saraathai"sv, 0x0E30 }, + { "saraethai"sv, 0x0E40 }, + { "saraiileftthai"sv, 0xF886 }, + { "saraiithai"sv, 0x0E35 }, + { "saraileftthai"sv, 0xF885 }, + { "saraithai"sv, 0x0E34 }, + { "saraothai"sv, 0x0E42 }, + { "saraueeleftthai"sv, 0xF888 }, + { "saraueethai"sv, 0x0E37 }, + { "saraueleftthai"sv, 0xF887 }, + { "sarauethai"sv, 0x0E36 }, + { "sarauthai"sv, 0x0E38 }, + { "sarauuthai"sv, 0x0E39 }, + { "sbopomofo"sv, 0x3119 }, + { "scaron"sv, 0x0161 }, + { "scarondotaccent"sv, 0x1E67 }, + { "scedilla"sv, 0x015F }, + { "schwa"sv, 0x0259 }, + { "schwacyrillic"sv, 0x04D9 }, + { "schwadieresiscyrillic"sv, 0x04DB }, + { "schwahook"sv, 0x025A }, + { "scircle"sv, 0x24E2 }, + { "scircumflex"sv, 0x015D }, + { "scommaaccent"sv, 0x0219 }, + { "sdotaccent"sv, 0x1E61 }, + { "sdotbelow"sv, 0x1E63 }, + { "sdotbelowdotaccent"sv, 0x1E69 }, + { "seagullbelowcmb"sv, 0x033C }, + { "second"sv, 0x2033 }, + { "secondtonechinese"sv, 0x02CA }, + { "section"sv, 0x00A7 }, + { "seenarabic"sv, 0x0633 }, + { "seenfinalarabic"sv, 0xFEB2 }, + { "seeninitialarabic"sv, 0xFEB3 }, + { "seenmedialarabic"sv, 0xFEB4 }, + { "segol"sv, 0x05B6 }, + { "segol13"sv, 0x05B6 }, + { "segol1f"sv, 0x05B6 }, + { "segol2c"sv, 0x05B6 }, + { "segolhebrew"sv, 0x05B6 }, + { "segolnarrowhebrew"sv, 0x05B6 }, + { "segolquarterhebrew"sv, 0x05B6 }, + { "segoltahebrew"sv, 0x0592 }, + { "segolwidehebrew"sv, 0x05B6 }, + { "seharmenian"sv, 0x057D }, + { "sehiragana"sv, 0x305B }, + { "sekatakana"sv, 0x30BB }, + { "sekatakanahalfwidth"sv, 0xFF7E }, + { "semicolon"sv, 0x003B }, + { "semicolonarabic"sv, 0x061B }, + { "semicolonmonospace"sv, 0xFF1B }, + { "semicolonsmall"sv, 0xFE54 }, + { "semivoicedmarkkana"sv, 0x309C }, + { "semivoicedmarkkanahalfwidth"sv, 0xFF9F }, + { "sentisquare"sv, 0x3322 }, + { "sentosquare"sv, 0x3323 }, + { "seven"sv, 0x0037 }, + { "sevenarabic"sv, 0x0667 }, + { "sevenbengali"sv, 0x09ED }, + { "sevencircle"sv, 0x2466 }, + { "sevencircleinversesansserif"sv, 0x2790 }, + { "sevendeva"sv, 0x096D }, + { "seveneighths"sv, 0x215E }, + { "sevengujarati"sv, 0x0AED }, + { "sevengurmukhi"sv, 0x0A6D }, + { "sevenhackarabic"sv, 0x0667 }, + { "sevenhangzhou"sv, 0x3027 }, + { "sevenideographicparen"sv, 0x3226 }, + { "seveninferior"sv, 0x2087 }, + { "sevenmonospace"sv, 0xFF17 }, + { "sevenoldstyle"sv, 0xF737 }, + { "sevenparen"sv, 0x247A }, + { "sevenperiod"sv, 0x248E }, + { "sevenpersian"sv, 0x06F7 }, + { "sevenroman"sv, 0x2176 }, + { "sevensuperior"sv, 0x2077 }, + { "seventeencircle"sv, 0x2470 }, + { "seventeenparen"sv, 0x2484 }, + { "seventeenperiod"sv, 0x2498 }, + { "seventhai"sv, 0x0E57 }, + { "sfthyphen"sv, 0x00AD }, + { "shaarmenian"sv, 0x0577 }, + { "shabengali"sv, 0x09B6 }, + { "shacyrillic"sv, 0x0448 }, + { "shaddaarabic"sv, 0x0651 }, + { "shaddadammaarabic"sv, 0xFC61 }, + { "shaddadammatanarabic"sv, 0xFC5E }, + { "shaddafathaarabic"sv, 0xFC60 }, + { "shaddakasraarabic"sv, 0xFC62 }, + { "shaddakasratanarabic"sv, 0xFC5F }, + { "shade"sv, 0x2592 }, + { "shadedark"sv, 0x2593 }, + { "shadelight"sv, 0x2591 }, + { "shademedium"sv, 0x2592 }, + { "shadeva"sv, 0x0936 }, + { "shagujarati"sv, 0x0AB6 }, + { "shagurmukhi"sv, 0x0A36 }, + { "shalshelethebrew"sv, 0x0593 }, + { "shbopomofo"sv, 0x3115 }, + { "shchacyrillic"sv, 0x0449 }, + { "sheenarabic"sv, 0x0634 }, + { "sheenfinalarabic"sv, 0xFEB6 }, + { "sheeninitialarabic"sv, 0xFEB7 }, + { "sheenmedialarabic"sv, 0xFEB8 }, + { "sheicoptic"sv, 0x03E3 }, + { "sheqel"sv, 0x20AA }, + { "sheqelhebrew"sv, 0x20AA }, + { "sheva"sv, 0x05B0 }, + { "sheva115"sv, 0x05B0 }, + { "sheva15"sv, 0x05B0 }, + { "sheva22"sv, 0x05B0 }, + { "sheva2e"sv, 0x05B0 }, + { "shevahebrew"sv, 0x05B0 }, + { "shevanarrowhebrew"sv, 0x05B0 }, + { "shevaquarterhebrew"sv, 0x05B0 }, + { "shevawidehebrew"sv, 0x05B0 }, + { "shhacyrillic"sv, 0x04BB }, + { "shimacoptic"sv, 0x03ED }, + { "shin"sv, 0x05E9 }, + { "shindagesh"sv, 0xFB49 }, + { "shindageshhebrew"sv, 0xFB49 }, + { "shindageshshindot"sv, 0xFB2C }, + { "shindageshshindothebrew"sv, 0xFB2C }, + { "shindageshsindot"sv, 0xFB2D }, + { "shindageshsindothebrew"sv, 0xFB2D }, + { "shindothebrew"sv, 0x05C1 }, + { "shinhebrew"sv, 0x05E9 }, + { "shinshindot"sv, 0xFB2A }, + { "shinshindothebrew"sv, 0xFB2A }, + { "shinsindot"sv, 0xFB2B }, + { "shinsindothebrew"sv, 0xFB2B }, + { "shook"sv, 0x0282 }, + { "sigma"sv, 0x03C3 }, + { "sigma1"sv, 0x03C2 }, + { "sigmafinal"sv, 0x03C2 }, + { "sigmalunatesymbolgreek"sv, 0x03F2 }, + { "sihiragana"sv, 0x3057 }, + { "sikatakana"sv, 0x30B7 }, + { "sikatakanahalfwidth"sv, 0xFF7C }, + { "siluqhebrew"sv, 0x05BD }, + { "siluqlefthebrew"sv, 0x05BD }, + { "similar"sv, 0x223C }, + { "sindothebrew"sv, 0x05C2 }, + { "siosacirclekorean"sv, 0x3274 }, + { "siosaparenkorean"sv, 0x3214 }, + { "sioscieuckorean"sv, 0x317E }, + { "sioscirclekorean"sv, 0x3266 }, + { "sioskiyeokkorean"sv, 0x317A }, + { "sioskorean"sv, 0x3145 }, + { "siosnieunkorean"sv, 0x317B }, + { "siosparenkorean"sv, 0x3206 }, + { "siospieupkorean"sv, 0x317D }, + { "siostikeutkorean"sv, 0x317C }, + { "six"sv, 0x0036 }, + { "sixarabic"sv, 0x0666 }, + { "sixbengali"sv, 0x09EC }, + { "sixcircle"sv, 0x2465 }, + { "sixcircleinversesansserif"sv, 0x278F }, + { "sixdeva"sv, 0x096C }, + { "sixgujarati"sv, 0x0AEC }, + { "sixgurmukhi"sv, 0x0A6C }, + { "sixhackarabic"sv, 0x0666 }, + { "sixhangzhou"sv, 0x3026 }, + { "sixideographicparen"sv, 0x3225 }, + { "sixinferior"sv, 0x2086 }, + { "sixmonospace"sv, 0xFF16 }, + { "sixoldstyle"sv, 0xF736 }, + { "sixparen"sv, 0x2479 }, + { "sixperiod"sv, 0x248D }, + { "sixpersian"sv, 0x06F6 }, + { "sixroman"sv, 0x2175 }, + { "sixsuperior"sv, 0x2076 }, + { "sixteencircle"sv, 0x246F }, + { "sixteencurrencydenominatorbengali"sv, 0x09F9 }, + { "sixteenparen"sv, 0x2483 }, + { "sixteenperiod"sv, 0x2497 }, + { "sixthai"sv, 0x0E56 }, + { "slash"sv, 0x002F }, + { "slashmonospace"sv, 0xFF0F }, + { "slong"sv, 0x017F }, + { "slongdotaccent"sv, 0x1E9B }, + { "smileface"sv, 0x263A }, + { "smonospace"sv, 0xFF53 }, + { "sofpasuqhebrew"sv, 0x05C3 }, + { "softhyphen"sv, 0x00AD }, + { "softsigncyrillic"sv, 0x044C }, + { "sohiragana"sv, 0x305D }, + { "sokatakana"sv, 0x30BD }, + { "sokatakanahalfwidth"sv, 0xFF7F }, + { "soliduslongoverlaycmb"sv, 0x0338 }, + { "solidusshortoverlaycmb"sv, 0x0337 }, + { "sorusithai"sv, 0x0E29 }, + { "sosalathai"sv, 0x0E28 }, + { "sosothai"sv, 0x0E0B }, + { "sosuathai"sv, 0x0E2A }, + { "space"sv, 0x0020 }, + { "spacehackarabic"sv, 0x0020 }, + { "spade"sv, 0x2660 }, + { "spadesuitblack"sv, 0x2660 }, + { "spadesuitwhite"sv, 0x2664 }, + { "sparen"sv, 0x24AE }, + { "squarebelowcmb"sv, 0x033B }, + { "squarecc"sv, 0x33C4 }, + { "squarecm"sv, 0x339D }, + { "squarediagonalcrosshatchfill"sv, 0x25A9 }, + { "squarehorizontalfill"sv, 0x25A4 }, + { "squarekg"sv, 0x338F }, + { "squarekm"sv, 0x339E }, + { "squarekmcapital"sv, 0x33CE }, + { "squareln"sv, 0x33D1 }, + { "squarelog"sv, 0x33D2 }, + { "squaremg"sv, 0x338E }, + { "squaremil"sv, 0x33D5 }, + { "squaremm"sv, 0x339C }, + { "squaremsquared"sv, 0x33A1 }, + { "squareorthogonalcrosshatchfill"sv, 0x25A6 }, + { "squareupperlefttolowerrightfill"sv, 0x25A7 }, + { "squareupperrighttolowerleftfill"sv, 0x25A8 }, + { "squareverticalfill"sv, 0x25A5 }, + { "squarewhitewithsmallblack"sv, 0x25A3 }, + { "srsquare"sv, 0x33DB }, + { "ssabengali"sv, 0x09B7 }, + { "ssadeva"sv, 0x0937 }, + { "ssagujarati"sv, 0x0AB7 }, + { "ssangcieuckorean"sv, 0x3149 }, + { "ssanghieuhkorean"sv, 0x3185 }, + { "ssangieungkorean"sv, 0x3180 }, + { "ssangkiyeokkorean"sv, 0x3132 }, + { "ssangnieunkorean"sv, 0x3165 }, + { "ssangpieupkorean"sv, 0x3143 }, + { "ssangsioskorean"sv, 0x3146 }, + { "ssangtikeutkorean"sv, 0x3138 }, + { "ssuperior"sv, 0xF6F2 }, + { "sterling"sv, 0x00A3 }, + { "sterlingmonospace"sv, 0xFFE1 }, + { "strokelongoverlaycmb"sv, 0x0336 }, + { "strokeshortoverlaycmb"sv, 0x0335 }, + { "subset"sv, 0x2282 }, + { "subsetnotequal"sv, 0x228A }, + { "subsetorequal"sv, 0x2286 }, + { "succeeds"sv, 0x227B }, + { "suchthat"sv, 0x220B }, + { "suhiragana"sv, 0x3059 }, + { "sukatakana"sv, 0x30B9 }, + { "sukatakanahalfwidth"sv, 0xFF7D }, + { "sukunarabic"sv, 0x0652 }, + { "summation"sv, 0x2211 }, + { "sun"sv, 0x263C }, + { "superset"sv, 0x2283 }, + { "supersetnotequal"sv, 0x228B }, + { "supersetorequal"sv, 0x2287 }, + { "svsquare"sv, 0x33DC }, + { "syouwaerasquare"sv, 0x337C }, + { "t"sv, 0x0074 }, + { "tabengali"sv, 0x09A4 }, + { "tackdown"sv, 0x22A4 }, + { "tackleft"sv, 0x22A3 }, + { "tadeva"sv, 0x0924 }, + { "tagujarati"sv, 0x0AA4 }, + { "tagurmukhi"sv, 0x0A24 }, + { "taharabic"sv, 0x0637 }, + { "tahfinalarabic"sv, 0xFEC2 }, + { "tahinitialarabic"sv, 0xFEC3 }, + { "tahiragana"sv, 0x305F }, + { "tahmedialarabic"sv, 0xFEC4 }, + { "taisyouerasquare"sv, 0x337D }, + { "takatakana"sv, 0x30BF }, + { "takatakanahalfwidth"sv, 0xFF80 }, + { "tatweelarabic"sv, 0x0640 }, + { "tau"sv, 0x03C4 }, + { "tav"sv, 0x05EA }, + { "tavdages"sv, 0xFB4A }, + { "tavdagesh"sv, 0xFB4A }, + { "tavdageshhebrew"sv, 0xFB4A }, + { "tavhebrew"sv, 0x05EA }, + { "tbar"sv, 0x0167 }, + { "tbopomofo"sv, 0x310A }, + { "tcaron"sv, 0x0165 }, + { "tccurl"sv, 0x02A8 }, + { "tcedilla"sv, 0x0163 }, + { "tcheharabic"sv, 0x0686 }, + { "tchehfinalarabic"sv, 0xFB7B }, + { "tchehinitialarabic"sv, 0xFB7C }, + { "tchehmedialarabic"sv, 0xFB7D }, + { "tcircle"sv, 0x24E3 }, + { "tcircumflexbelow"sv, 0x1E71 }, + { "tcommaaccent"sv, 0x0163 }, + { "tdieresis"sv, 0x1E97 }, + { "tdotaccent"sv, 0x1E6B }, + { "tdotbelow"sv, 0x1E6D }, + { "tecyrillic"sv, 0x0442 }, + { "tedescendercyrillic"sv, 0x04AD }, + { "teharabic"sv, 0x062A }, + { "tehfinalarabic"sv, 0xFE96 }, + { "tehhahinitialarabic"sv, 0xFCA2 }, + { "tehhahisolatedarabic"sv, 0xFC0C }, + { "tehinitialarabic"sv, 0xFE97 }, + { "tehiragana"sv, 0x3066 }, + { "tehjeeminitialarabic"sv, 0xFCA1 }, + { "tehjeemisolatedarabic"sv, 0xFC0B }, + { "tehmarbutaarabic"sv, 0x0629 }, + { "tehmarbutafinalarabic"sv, 0xFE94 }, + { "tehmedialarabic"sv, 0xFE98 }, + { "tehmeeminitialarabic"sv, 0xFCA4 }, + { "tehmeemisolatedarabic"sv, 0xFC0E }, + { "tehnoonfinalarabic"sv, 0xFC73 }, + { "tekatakana"sv, 0x30C6 }, + { "tekatakanahalfwidth"sv, 0xFF83 }, + { "telephone"sv, 0x2121 }, + { "telephoneblack"sv, 0x260E }, + { "telishagedolahebrew"sv, 0x05A0 }, + { "telishaqetanahebrew"sv, 0x05A9 }, + { "tencircle"sv, 0x2469 }, + { "tenideographicparen"sv, 0x3229 }, + { "tenparen"sv, 0x247D }, + { "tenperiod"sv, 0x2491 }, + { "tenroman"sv, 0x2179 }, + { "tesh"sv, 0x02A7 }, + { "tet"sv, 0x05D8 }, + { "tetdagesh"sv, 0xFB38 }, + { "tetdageshhebrew"sv, 0xFB38 }, + { "tethebrew"sv, 0x05D8 }, + { "tetsecyrillic"sv, 0x04B5 }, + { "tevirhebrew"sv, 0x059B }, + { "tevirlefthebrew"sv, 0x059B }, + { "thabengali"sv, 0x09A5 }, + { "thadeva"sv, 0x0925 }, + { "thagujarati"sv, 0x0AA5 }, + { "thagurmukhi"sv, 0x0A25 }, + { "thalarabic"sv, 0x0630 }, + { "thalfinalarabic"sv, 0xFEAC }, + { "thanthakhatlowleftthai"sv, 0xF898 }, + { "thanthakhatlowrightthai"sv, 0xF897 }, + { "thanthakhatthai"sv, 0x0E4C }, + { "thanthakhatupperleftthai"sv, 0xF896 }, + { "theharabic"sv, 0x062B }, + { "thehfinalarabic"sv, 0xFE9A }, + { "thehinitialarabic"sv, 0xFE9B }, + { "thehmedialarabic"sv, 0xFE9C }, + { "thereexists"sv, 0x2203 }, + { "therefore"sv, 0x2234 }, + { "theta"sv, 0x03B8 }, + { "theta1"sv, 0x03D1 }, + { "thetasymbolgreek"sv, 0x03D1 }, + { "thieuthacirclekorean"sv, 0x3279 }, + { "thieuthaparenkorean"sv, 0x3219 }, + { "thieuthcirclekorean"sv, 0x326B }, + { "thieuthkorean"sv, 0x314C }, + { "thieuthparenkorean"sv, 0x320B }, + { "thirteencircle"sv, 0x246C }, + { "thirteenparen"sv, 0x2480 }, + { "thirteenperiod"sv, 0x2494 }, + { "thonangmonthothai"sv, 0x0E11 }, + { "thook"sv, 0x01AD }, + { "thophuthaothai"sv, 0x0E12 }, + { "thorn"sv, 0x00FE }, + { "thothahanthai"sv, 0x0E17 }, + { "thothanthai"sv, 0x0E10 }, + { "thothongthai"sv, 0x0E18 }, + { "thothungthai"sv, 0x0E16 }, + { "thousandcyrillic"sv, 0x0482 }, + { "thousandsseparatorarabic"sv, 0x066C }, + { "thousandsseparatorpersian"sv, 0x066C }, + { "three"sv, 0x0033 }, + { "threearabic"sv, 0x0663 }, + { "threebengali"sv, 0x09E9 }, + { "threecircle"sv, 0x2462 }, + { "threecircleinversesansserif"sv, 0x278C }, + { "threedeva"sv, 0x0969 }, + { "threeeighths"sv, 0x215C }, + { "threegujarati"sv, 0x0AE9 }, + { "threegurmukhi"sv, 0x0A69 }, + { "threehackarabic"sv, 0x0663 }, + { "threehangzhou"sv, 0x3023 }, + { "threeideographicparen"sv, 0x3222 }, + { "threeinferior"sv, 0x2083 }, + { "threemonospace"sv, 0xFF13 }, + { "threenumeratorbengali"sv, 0x09F6 }, + { "threeoldstyle"sv, 0xF733 }, + { "threeparen"sv, 0x2476 }, + { "threeperiod"sv, 0x248A }, + { "threepersian"sv, 0x06F3 }, + { "threequarters"sv, 0x00BE }, + { "threequartersemdash"sv, 0xF6DE }, + { "threeroman"sv, 0x2172 }, + { "threesuperior"sv, 0x00B3 }, + { "threethai"sv, 0x0E53 }, + { "thzsquare"sv, 0x3394 }, + { "tihiragana"sv, 0x3061 }, + { "tikatakana"sv, 0x30C1 }, + { "tikatakanahalfwidth"sv, 0xFF81 }, + { "tikeutacirclekorean"sv, 0x3270 }, + { "tikeutaparenkorean"sv, 0x3210 }, + { "tikeutcirclekorean"sv, 0x3262 }, + { "tikeutkorean"sv, 0x3137 }, + { "tikeutparenkorean"sv, 0x3202 }, + { "tilde"sv, 0x02DC }, + { "tildebelowcmb"sv, 0x0330 }, + { "tildecmb"sv, 0x0303 }, + { "tildecomb"sv, 0x0303 }, + { "tildedoublecmb"sv, 0x0360 }, + { "tildeoperator"sv, 0x223C }, + { "tildeoverlaycmb"sv, 0x0334 }, + { "tildeverticalcmb"sv, 0x033E }, + { "timescircle"sv, 0x2297 }, + { "tipehahebrew"sv, 0x0596 }, + { "tipehalefthebrew"sv, 0x0596 }, + { "tippigurmukhi"sv, 0x0A70 }, + { "titlocyrilliccmb"sv, 0x0483 }, + { "tiwnarmenian"sv, 0x057F }, + { "tlinebelow"sv, 0x1E6F }, + { "tmonospace"sv, 0xFF54 }, + { "toarmenian"sv, 0x0569 }, + { "tohiragana"sv, 0x3068 }, + { "tokatakana"sv, 0x30C8 }, + { "tokatakanahalfwidth"sv, 0xFF84 }, + { "tonebarextrahighmod"sv, 0x02E5 }, + { "tonebarextralowmod"sv, 0x02E9 }, + { "tonebarhighmod"sv, 0x02E6 }, + { "tonebarlowmod"sv, 0x02E8 }, + { "tonebarmidmod"sv, 0x02E7 }, + { "tonefive"sv, 0x01BD }, + { "tonesix"sv, 0x0185 }, + { "tonetwo"sv, 0x01A8 }, + { "tonos"sv, 0x0384 }, + { "tonsquare"sv, 0x3327 }, + { "topatakthai"sv, 0x0E0F }, + { "tortoiseshellbracketleft"sv, 0x3014 }, + { "tortoiseshellbracketleftsmall"sv, 0xFE5D }, + { "tortoiseshellbracketleftvertical"sv, 0xFE39 }, + { "tortoiseshellbracketright"sv, 0x3015 }, + { "tortoiseshellbracketrightsmall"sv, 0xFE5E }, + { "tortoiseshellbracketrightvertical"sv, 0xFE3A }, + { "totaothai"sv, 0x0E15 }, + { "tpalatalhook"sv, 0x01AB }, + { "tparen"sv, 0x24AF }, + { "trademark"sv, 0x2122 }, + { "trademarksans"sv, 0xF8EA }, + { "trademarkserif"sv, 0xF6DB }, + { "tretroflexhook"sv, 0x0288 }, + { "triagdn"sv, 0x25BC }, + { "triaglf"sv, 0x25C4 }, + { "triagrt"sv, 0x25BA }, + { "triagup"sv, 0x25B2 }, + { "ts"sv, 0x02A6 }, + { "tsadi"sv, 0x05E6 }, + { "tsadidagesh"sv, 0xFB46 }, + { "tsadidageshhebrew"sv, 0xFB46 }, + { "tsadihebrew"sv, 0x05E6 }, + { "tsecyrillic"sv, 0x0446 }, + { "tsere"sv, 0x05B5 }, + { "tsere12"sv, 0x05B5 }, + { "tsere1e"sv, 0x05B5 }, + { "tsere2b"sv, 0x05B5 }, + { "tserehebrew"sv, 0x05B5 }, + { "tserenarrowhebrew"sv, 0x05B5 }, + { "tserequarterhebrew"sv, 0x05B5 }, + { "tserewidehebrew"sv, 0x05B5 }, + { "tshecyrillic"sv, 0x045B }, + { "tsuperior"sv, 0xF6F3 }, + { "ttabengali"sv, 0x099F }, + { "ttadeva"sv, 0x091F }, + { "ttagujarati"sv, 0x0A9F }, + { "ttagurmukhi"sv, 0x0A1F }, + { "tteharabic"sv, 0x0679 }, + { "ttehfinalarabic"sv, 0xFB67 }, + { "ttehinitialarabic"sv, 0xFB68 }, + { "ttehmedialarabic"sv, 0xFB69 }, + { "tthabengali"sv, 0x09A0 }, + { "tthadeva"sv, 0x0920 }, + { "tthagujarati"sv, 0x0AA0 }, + { "tthagurmukhi"sv, 0x0A20 }, + { "tturned"sv, 0x0287 }, + { "tuhiragana"sv, 0x3064 }, + { "tukatakana"sv, 0x30C4 }, + { "tukatakanahalfwidth"sv, 0xFF82 }, + { "tusmallhiragana"sv, 0x3063 }, + { "tusmallkatakana"sv, 0x30C3 }, + { "tusmallkatakanahalfwidth"sv, 0xFF6F }, + { "twelvecircle"sv, 0x246B }, + { "twelveparen"sv, 0x247F }, + { "twelveperiod"sv, 0x2493 }, + { "twelveroman"sv, 0x217B }, + { "twentycircle"sv, 0x2473 }, + { "twentyhangzhou"sv, 0x5344 }, + { "twentyparen"sv, 0x2487 }, + { "twentyperiod"sv, 0x249B }, + { "two"sv, 0x0032 }, + { "twoarabic"sv, 0x0662 }, + { "twobengali"sv, 0x09E8 }, + { "twocircle"sv, 0x2461 }, + { "twocircleinversesansserif"sv, 0x278B }, + { "twodeva"sv, 0x0968 }, + { "twodotenleader"sv, 0x2025 }, + { "twodotleader"sv, 0x2025 }, + { "twodotleadervertical"sv, 0xFE30 }, + { "twogujarati"sv, 0x0AE8 }, + { "twogurmukhi"sv, 0x0A68 }, + { "twohackarabic"sv, 0x0662 }, + { "twohangzhou"sv, 0x3022 }, + { "twoideographicparen"sv, 0x3221 }, + { "twoinferior"sv, 0x2082 }, + { "twomonospace"sv, 0xFF12 }, + { "twonumeratorbengali"sv, 0x09F5 }, + { "twooldstyle"sv, 0xF732 }, + { "twoparen"sv, 0x2475 }, + { "twoperiod"sv, 0x2489 }, + { "twopersian"sv, 0x06F2 }, + { "tworoman"sv, 0x2171 }, + { "twostroke"sv, 0x01BB }, + { "twosuperior"sv, 0x00B2 }, + { "twothai"sv, 0x0E52 }, + { "twothirds"sv, 0x2154 }, + { "u"sv, 0x0075 }, + { "uacute"sv, 0x00FA }, + { "ubar"sv, 0x0289 }, + { "ubengali"sv, 0x0989 }, + { "ubopomofo"sv, 0x3128 }, + { "ubreve"sv, 0x016D }, + { "ucaron"sv, 0x01D4 }, + { "ucircle"sv, 0x24E4 }, + { "ucircumflex"sv, 0x00FB }, + { "ucircumflexbelow"sv, 0x1E77 }, + { "ucyrillic"sv, 0x0443 }, + { "udattadeva"sv, 0x0951 }, + { "udblacute"sv, 0x0171 }, + { "udblgrave"sv, 0x0215 }, + { "udeva"sv, 0x0909 }, + { "udieresis"sv, 0x00FC }, + { "udieresisacute"sv, 0x01D8 }, + { "udieresisbelow"sv, 0x1E73 }, + { "udieresiscaron"sv, 0x01DA }, + { "udieresiscyrillic"sv, 0x04F1 }, + { "udieresisgrave"sv, 0x01DC }, + { "udieresismacron"sv, 0x01D6 }, + { "udotbelow"sv, 0x1EE5 }, + { "ugrave"sv, 0x00F9 }, + { "ugujarati"sv, 0x0A89 }, + { "ugurmukhi"sv, 0x0A09 }, + { "uhiragana"sv, 0x3046 }, + { "uhookabove"sv, 0x1EE7 }, + { "uhorn"sv, 0x01B0 }, + { "uhornacute"sv, 0x1EE9 }, + { "uhorndotbelow"sv, 0x1EF1 }, + { "uhorngrave"sv, 0x1EEB }, + { "uhornhookabove"sv, 0x1EED }, + { "uhorntilde"sv, 0x1EEF }, + { "uhungarumlaut"sv, 0x0171 }, + { "uhungarumlautcyrillic"sv, 0x04F3 }, + { "uinvertedbreve"sv, 0x0217 }, + { "ukatakana"sv, 0x30A6 }, + { "ukatakanahalfwidth"sv, 0xFF73 }, + { "ukcyrillic"sv, 0x0479 }, + { "ukorean"sv, 0x315C }, + { "umacron"sv, 0x016B }, + { "umacroncyrillic"sv, 0x04EF }, + { "umacrondieresis"sv, 0x1E7B }, + { "umatragurmukhi"sv, 0x0A41 }, + { "umonospace"sv, 0xFF55 }, + { "underscore"sv, 0x005F }, + { "underscoredbl"sv, 0x2017 }, + { "underscoremonospace"sv, 0xFF3F }, + { "underscorevertical"sv, 0xFE33 }, + { "underscorewavy"sv, 0xFE4F }, + { "union"sv, 0x222A }, + { "universal"sv, 0x2200 }, + { "uogonek"sv, 0x0173 }, + { "uparen"sv, 0x24B0 }, + { "upblock"sv, 0x2580 }, + { "upperdothebrew"sv, 0x05C4 }, + { "upsilon"sv, 0x03C5 }, + { "upsilondieresis"sv, 0x03CB }, + { "upsilondieresistonos"sv, 0x03B0 }, + { "upsilonlatin"sv, 0x028A }, + { "upsilontonos"sv, 0x03CD }, + { "uptackbelowcmb"sv, 0x031D }, + { "uptackmod"sv, 0x02D4 }, + { "uragurmukhi"sv, 0x0A73 }, + { "uring"sv, 0x016F }, + { "ushortcyrillic"sv, 0x045E }, + { "usmallhiragana"sv, 0x3045 }, + { "usmallkatakana"sv, 0x30A5 }, + { "usmallkatakanahalfwidth"sv, 0xFF69 }, + { "ustraightcyrillic"sv, 0x04AF }, + { "ustraightstrokecyrillic"sv, 0x04B1 }, + { "utilde"sv, 0x0169 }, + { "utildeacute"sv, 0x1E79 }, + { "utildebelow"sv, 0x1E75 }, + { "uubengali"sv, 0x098A }, + { "uudeva"sv, 0x090A }, + { "uugujarati"sv, 0x0A8A }, + { "uugurmukhi"sv, 0x0A0A }, + { "uumatragurmukhi"sv, 0x0A42 }, + { "uuvowelsignbengali"sv, 0x09C2 }, + { "uuvowelsigndeva"sv, 0x0942 }, + { "uuvowelsigngujarati"sv, 0x0AC2 }, + { "uvowelsignbengali"sv, 0x09C1 }, + { "uvowelsigndeva"sv, 0x0941 }, + { "uvowelsigngujarati"sv, 0x0AC1 }, + { "v"sv, 0x0076 }, + { "vadeva"sv, 0x0935 }, + { "vagujarati"sv, 0x0AB5 }, + { "vagurmukhi"sv, 0x0A35 }, + { "vakatakana"sv, 0x30F7 }, + { "vav"sv, 0x05D5 }, + { "vavdagesh"sv, 0xFB35 }, + { "vavdagesh65"sv, 0xFB35 }, + { "vavdageshhebrew"sv, 0xFB35 }, + { "vavhebrew"sv, 0x05D5 }, + { "vavholam"sv, 0xFB4B }, + { "vavholamhebrew"sv, 0xFB4B }, + { "vavvavhebrew"sv, 0x05F0 }, + { "vavyodhebrew"sv, 0x05F1 }, + { "vcircle"sv, 0x24E5 }, + { "vdotbelow"sv, 0x1E7F }, + { "vecyrillic"sv, 0x0432 }, + { "veharabic"sv, 0x06A4 }, + { "vehfinalarabic"sv, 0xFB6B }, + { "vehinitialarabic"sv, 0xFB6C }, + { "vehmedialarabic"sv, 0xFB6D }, + { "vekatakana"sv, 0x30F9 }, + { "venus"sv, 0x2640 }, + { "verticalbar"sv, 0x007C }, + { "verticallineabovecmb"sv, 0x030D }, + { "verticallinebelowcmb"sv, 0x0329 }, + { "verticallinelowmod"sv, 0x02CC }, + { "verticallinemod"sv, 0x02C8 }, + { "vewarmenian"sv, 0x057E }, + { "vhook"sv, 0x028B }, + { "vikatakana"sv, 0x30F8 }, + { "viramabengali"sv, 0x09CD }, + { "viramadeva"sv, 0x094D }, + { "viramagujarati"sv, 0x0ACD }, + { "visargabengali"sv, 0x0983 }, + { "visargadeva"sv, 0x0903 }, + { "visargagujarati"sv, 0x0A83 }, + { "vmonospace"sv, 0xFF56 }, + { "voarmenian"sv, 0x0578 }, + { "voicediterationhiragana"sv, 0x309E }, + { "voicediterationkatakana"sv, 0x30FE }, + { "voicedmarkkana"sv, 0x309B }, + { "voicedmarkkanahalfwidth"sv, 0xFF9E }, + { "vokatakana"sv, 0x30FA }, + { "vparen"sv, 0x24B1 }, + { "vtilde"sv, 0x1E7D }, + { "vturned"sv, 0x028C }, + { "vuhiragana"sv, 0x3094 }, + { "vukatakana"sv, 0x30F4 }, + { "w"sv, 0x0077 }, + { "wacute"sv, 0x1E83 }, + { "waekorean"sv, 0x3159 }, + { "wahiragana"sv, 0x308F }, + { "wakatakana"sv, 0x30EF }, + { "wakatakanahalfwidth"sv, 0xFF9C }, + { "wakorean"sv, 0x3158 }, + { "wasmallhiragana"sv, 0x308E }, + { "wasmallkatakana"sv, 0x30EE }, + { "wattosquare"sv, 0x3357 }, + { "wavedash"sv, 0x301C }, + { "wavyunderscorevertical"sv, 0xFE34 }, + { "wawarabic"sv, 0x0648 }, + { "wawfinalarabic"sv, 0xFEEE }, + { "wawhamzaabovearabic"sv, 0x0624 }, + { "wawhamzaabovefinalarabic"sv, 0xFE86 }, + { "wbsquare"sv, 0x33DD }, + { "wcircle"sv, 0x24E6 }, + { "wcircumflex"sv, 0x0175 }, + { "wdieresis"sv, 0x1E85 }, + { "wdotaccent"sv, 0x1E87 }, + { "wdotbelow"sv, 0x1E89 }, + { "wehiragana"sv, 0x3091 }, + { "weierstrass"sv, 0x2118 }, + { "wekatakana"sv, 0x30F1 }, + { "wekorean"sv, 0x315E }, + { "weokorean"sv, 0x315D }, + { "wgrave"sv, 0x1E81 }, + { "whitebullet"sv, 0x25E6 }, + { "whitecircle"sv, 0x25CB }, + { "whitecircleinverse"sv, 0x25D9 }, + { "whitecornerbracketleft"sv, 0x300E }, + { "whitecornerbracketleftvertical"sv, 0xFE43 }, + { "whitecornerbracketright"sv, 0x300F }, + { "whitecornerbracketrightvertical"sv, 0xFE44 }, + { "whitediamond"sv, 0x25C7 }, + { "whitediamondcontainingblacksmalldiamond"sv, 0x25C8 }, + { "whitedownpointingsmalltriangle"sv, 0x25BF }, + { "whitedownpointingtriangle"sv, 0x25BD }, + { "whiteleftpointingsmalltriangle"sv, 0x25C3 }, + { "whiteleftpointingtriangle"sv, 0x25C1 }, + { "whitelenticularbracketleft"sv, 0x3016 }, + { "whitelenticularbracketright"sv, 0x3017 }, + { "whiterightpointingsmalltriangle"sv, 0x25B9 }, + { "whiterightpointingtriangle"sv, 0x25B7 }, + { "whitesmallsquare"sv, 0x25AB }, + { "whitesmilingface"sv, 0x263A }, + { "whitesquare"sv, 0x25A1 }, + { "whitestar"sv, 0x2606 }, + { "whitetelephone"sv, 0x260F }, + { "whitetortoiseshellbracketleft"sv, 0x3018 }, + { "whitetortoiseshellbracketright"sv, 0x3019 }, + { "whiteuppointingsmalltriangle"sv, 0x25B5 }, + { "whiteuppointingtriangle"sv, 0x25B3 }, + { "wihiragana"sv, 0x3090 }, + { "wikatakana"sv, 0x30F0 }, + { "wikorean"sv, 0x315F }, + { "wmonospace"sv, 0xFF57 }, + { "wohiragana"sv, 0x3092 }, + { "wokatakana"sv, 0x30F2 }, + { "wokatakanahalfwidth"sv, 0xFF66 }, + { "won"sv, 0x20A9 }, + { "wonmonospace"sv, 0xFFE6 }, + { "wowaenthai"sv, 0x0E27 }, + { "wparen"sv, 0x24B2 }, + { "wring"sv, 0x1E98 }, + { "wsuperior"sv, 0x02B7 }, + { "wturned"sv, 0x028D }, + { "wynn"sv, 0x01BF }, + { "x"sv, 0x0078 }, + { "xabovecmb"sv, 0x033D }, + { "xbopomofo"sv, 0x3112 }, + { "xcircle"sv, 0x24E7 }, + { "xdieresis"sv, 0x1E8D }, + { "xdotaccent"sv, 0x1E8B }, + { "xeharmenian"sv, 0x056D }, + { "xi"sv, 0x03BE }, + { "xmonospace"sv, 0xFF58 }, + { "xparen"sv, 0x24B3 }, + { "xsuperior"sv, 0x02E3 }, + { "y"sv, 0x0079 }, + { "yaadosquare"sv, 0x334E }, + { "yabengali"sv, 0x09AF }, + { "yacute"sv, 0x00FD }, + { "yadeva"sv, 0x092F }, + { "yaekorean"sv, 0x3152 }, + { "yagujarati"sv, 0x0AAF }, + { "yagurmukhi"sv, 0x0A2F }, + { "yahiragana"sv, 0x3084 }, + { "yakatakana"sv, 0x30E4 }, + { "yakatakanahalfwidth"sv, 0xFF94 }, + { "yakorean"sv, 0x3151 }, + { "yamakkanthai"sv, 0x0E4E }, + { "yasmallhiragana"sv, 0x3083 }, + { "yasmallkatakana"sv, 0x30E3 }, + { "yasmallkatakanahalfwidth"sv, 0xFF6C }, + { "yatcyrillic"sv, 0x0463 }, + { "ycircle"sv, 0x24E8 }, + { "ycircumflex"sv, 0x0177 }, + { "ydieresis"sv, 0x00FF }, + { "ydotaccent"sv, 0x1E8F }, + { "ydotbelow"sv, 0x1EF5 }, + { "yeharabic"sv, 0x064A }, + { "yehbarreearabic"sv, 0x06D2 }, + { "yehbarreefinalarabic"sv, 0xFBAF }, + { "yehfinalarabic"sv, 0xFEF2 }, + { "yehhamzaabovearabic"sv, 0x0626 }, + { "yehhamzaabovefinalarabic"sv, 0xFE8A }, + { "yehhamzaaboveinitialarabic"sv, 0xFE8B }, + { "yehhamzaabovemedialarabic"sv, 0xFE8C }, + { "yehinitialarabic"sv, 0xFEF3 }, + { "yehmedialarabic"sv, 0xFEF4 }, + { "yehmeeminitialarabic"sv, 0xFCDD }, + { "yehmeemisolatedarabic"sv, 0xFC58 }, + { "yehnoonfinalarabic"sv, 0xFC94 }, + { "yehthreedotsbelowarabic"sv, 0x06D1 }, + { "yekorean"sv, 0x3156 }, + { "yen"sv, 0x00A5 }, + { "yenmonospace"sv, 0xFFE5 }, + { "yeokorean"sv, 0x3155 }, + { "yeorinhieuhkorean"sv, 0x3186 }, + { "yerahbenyomohebrew"sv, 0x05AA }, + { "yerahbenyomolefthebrew"sv, 0x05AA }, + { "yericyrillic"sv, 0x044B }, + { "yerudieresiscyrillic"sv, 0x04F9 }, + { "yesieungkorean"sv, 0x3181 }, + { "yesieungpansioskorean"sv, 0x3183 }, + { "yesieungsioskorean"sv, 0x3182 }, + { "yetivhebrew"sv, 0x059A }, + { "ygrave"sv, 0x1EF3 }, + { "yhook"sv, 0x01B4 }, + { "yhookabove"sv, 0x1EF7 }, + { "yiarmenian"sv, 0x0575 }, + { "yicyrillic"sv, 0x0457 }, + { "yikorean"sv, 0x3162 }, + { "yinyang"sv, 0x262F }, + { "yiwnarmenian"sv, 0x0582 }, + { "ymonospace"sv, 0xFF59 }, + { "yod"sv, 0x05D9 }, + { "yoddagesh"sv, 0xFB39 }, + { "yoddageshhebrew"sv, 0xFB39 }, + { "yodhebrew"sv, 0x05D9 }, + { "yodyodhebrew"sv, 0x05F2 }, + { "yodyodpatahhebrew"sv, 0xFB1F }, + { "yohiragana"sv, 0x3088 }, + { "yoikorean"sv, 0x3189 }, + { "yokatakana"sv, 0x30E8 }, + { "yokatakanahalfwidth"sv, 0xFF96 }, + { "yokorean"sv, 0x315B }, + { "yosmallhiragana"sv, 0x3087 }, + { "yosmallkatakana"sv, 0x30E7 }, + { "yosmallkatakanahalfwidth"sv, 0xFF6E }, + { "yotgreek"sv, 0x03F3 }, + { "yoyaekorean"sv, 0x3188 }, + { "yoyakorean"sv, 0x3187 }, + { "yoyakthai"sv, 0x0E22 }, + { "yoyingthai"sv, 0x0E0D }, + { "yparen"sv, 0x24B4 }, + { "ypogegrammeni"sv, 0x037A }, + { "ypogegrammenigreekcmb"sv, 0x0345 }, + { "yr"sv, 0x01A6 }, + { "yring"sv, 0x1E99 }, + { "ysuperior"sv, 0x02B8 }, + { "ytilde"sv, 0x1EF9 }, + { "yturned"sv, 0x028E }, + { "yuhiragana"sv, 0x3086 }, + { "yuikorean"sv, 0x318C }, + { "yukatakana"sv, 0x30E6 }, + { "yukatakanahalfwidth"sv, 0xFF95 }, + { "yukorean"sv, 0x3160 }, + { "yusbigcyrillic"sv, 0x046B }, + { "yusbigiotifiedcyrillic"sv, 0x046D }, + { "yuslittlecyrillic"sv, 0x0467 }, + { "yuslittleiotifiedcyrillic"sv, 0x0469 }, + { "yusmallhiragana"sv, 0x3085 }, + { "yusmallkatakana"sv, 0x30E5 }, + { "yusmallkatakanahalfwidth"sv, 0xFF6D }, + { "yuyekorean"sv, 0x318B }, + { "yuyeokorean"sv, 0x318A }, + { "yyabengali"sv, 0x09DF }, + { "yyadeva"sv, 0x095F }, + { "z"sv, 0x007A }, + { "zaarmenian"sv, 0x0566 }, + { "zacute"sv, 0x017A }, + { "zadeva"sv, 0x095B }, + { "zagurmukhi"sv, 0x0A5B }, + { "zaharabic"sv, 0x0638 }, + { "zahfinalarabic"sv, 0xFEC6 }, + { "zahinitialarabic"sv, 0xFEC7 }, + { "zahiragana"sv, 0x3056 }, + { "zahmedialarabic"sv, 0xFEC8 }, + { "zainarabic"sv, 0x0632 }, + { "zainfinalarabic"sv, 0xFEB0 }, + { "zakatakana"sv, 0x30B6 }, + { "zaqefgadolhebrew"sv, 0x0595 }, + { "zaqefqatanhebrew"sv, 0x0594 }, + { "zarqahebrew"sv, 0x0598 }, + { "zayin"sv, 0x05D6 }, + { "zayindagesh"sv, 0xFB36 }, + { "zayindageshhebrew"sv, 0xFB36 }, + { "zayinhebrew"sv, 0x05D6 }, + { "zbopomofo"sv, 0x3117 }, + { "zcaron"sv, 0x017E }, + { "zcircle"sv, 0x24E9 }, + { "zcircumflex"sv, 0x1E91 }, + { "zcurl"sv, 0x0291 }, + { "zdot"sv, 0x017C }, + { "zdotaccent"sv, 0x017C }, + { "zdotbelow"sv, 0x1E93 }, + { "zecyrillic"sv, 0x0437 }, + { "zedescendercyrillic"sv, 0x0499 }, + { "zedieresiscyrillic"sv, 0x04DF }, + { "zehiragana"sv, 0x305C }, + { "zekatakana"sv, 0x30BC }, + { "zero"sv, 0x0030 }, + { "zeroarabic"sv, 0x0660 }, + { "zerobengali"sv, 0x09E6 }, + { "zerodeva"sv, 0x0966 }, + { "zerogujarati"sv, 0x0AE6 }, + { "zerogurmukhi"sv, 0x0A66 }, + { "zerohackarabic"sv, 0x0660 }, + { "zeroinferior"sv, 0x2080 }, + { "zeromonospace"sv, 0xFF10 }, + { "zerooldstyle"sv, 0xF730 }, + { "zeropersian"sv, 0x06F0 }, + { "zerosuperior"sv, 0x2070 }, + { "zerothai"sv, 0x0E50 }, + { "zerowidthjoiner"sv, 0xFEFF }, + { "zerowidthnonjoiner"sv, 0x200C }, + { "zerowidthspace"sv, 0x200B }, + { "zeta"sv, 0x03B6 }, + { "zhbopomofo"sv, 0x3113 }, + { "zhearmenian"sv, 0x056A }, + { "zhebrevecyrillic"sv, 0x04C2 }, + { "zhecyrillic"sv, 0x0436 }, + { "zhedescendercyrillic"sv, 0x0497 }, + { "zhedieresiscyrillic"sv, 0x04DD }, + { "zihiragana"sv, 0x3058 }, + { "zikatakana"sv, 0x30B8 }, + { "zinorhebrew"sv, 0x05AE }, + { "zlinebelow"sv, 0x1E95 }, + { "zmonospace"sv, 0xFF5A }, + { "zohiragana"sv, 0x305E }, + { "zokatakana"sv, 0x30BE }, + { "zparen"sv, 0x24B5 }, + { "zretroflexhook"sv, 0x0290 }, + { "zstroke"sv, 0x01B6 }, + { "zuhiragana"sv, 0x305A }, + { "zukatakana"sv, 0x30BA }, +}; + +Optional glyph_name_to_unicode(StringView name) +{ + return glyph_list.get(name); +} + +} diff --git a/Userland/Libraries/LibPDF/Fonts/AdobeGlyphList.h b/Userland/Libraries/LibPDF/Fonts/AdobeGlyphList.h new file mode 100644 index 0000000000..c1e3993209 --- /dev/null +++ b/Userland/Libraries/LibPDF/Fonts/AdobeGlyphList.h @@ -0,0 +1,15 @@ +/* + * Copyright (c) 2023, Nico Weber + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include + +namespace PDF { + +Optional glyph_name_to_unicode(StringView); + +} diff --git a/Userland/Libraries/LibPDF/Fonts/TrueTypeFont.cpp b/Userland/Libraries/LibPDF/Fonts/TrueTypeFont.cpp index e764c7ec6a..cb90793372 100644 --- a/Userland/Libraries/LibPDF/Fonts/TrueTypeFont.cpp +++ b/Userland/Libraries/LibPDF/Fonts/TrueTypeFont.cpp @@ -9,6 +9,7 @@ #include #include #include +#include #include #include @@ -18,6 +19,15 @@ PDFErrorOr TrueTypeFont::initialize(Document* document, NonnullRefPtrcontains(CommonNames::Encoding)) { + auto encoding_object = MUST(dict->get_object(document, CommonNames::Encoding)); + if (encoding_object->is()) { + auto name = encoding_object->cast()->name(); + if (name == "MacRomanEncoding" || name == "WinAnsiEncoding") + m_encoding_is_mac_roman_or_win_ansi = true; + } + } + m_base_font_name = TRY(dict->get_name(document, CommonNames::BaseFont))->name(); // If there's an embedded font program we use that; otherwise we try to find a replacement font @@ -33,8 +43,26 @@ PDFErrorOr TrueTypeFont::initialize(Document* document, NonnullRefPtrcontains(CommonNames::Encoding) || is_symbolic()) { + // FIXME: Looks like this is never hit in the test set (?). + for (u8 prefix : { 0x00, 0xF0, 0xF1, 0xF2 }) { + bool has_all = true; + for (unsigned suffix = 0x00; suffix <= 0xFF; ++suffix) { + if (!m_font->contains_glyph((prefix << 8) | suffix)) { + has_all = false; + break; + } + } + if (has_all) { + m_high_byte = prefix; + break; + } + } + } + return {}; } @@ -48,6 +76,18 @@ void TrueTypeFont::set_font_size(float font_size) m_font = m_font->with_size((font_size * POINTS_PER_INCH) / DEFAULT_DPI); } +static void do_draw_glyph(Gfx::Painter& painter, Gfx::FloatPoint position, float width, u32 unicode, Gfx::Font const& font, ColorOrStyle const& style) +{ + if (style.has()) { + painter.draw_glyph(position, unicode, font, style.get()); + } else { + // FIXME: Bounding box and sample point look to be pretty wrong + style.get>()->paint(Gfx::IntRect(position.x(), position.y(), width, 0), [&](auto sample) { + painter.draw_glyph(position, unicode, font, sample(Gfx::IntPoint(position.x(), position.y()))); + }); + } +} + PDFErrorOr TrueTypeFont::draw_glyph(Gfx::Painter& painter, Gfx::FloatPoint point, float width, u8 char_code, Renderer const& renderer) { auto style = renderer.state().paint_style; @@ -55,14 +95,71 @@ PDFErrorOr TrueTypeFont::draw_glyph(Gfx::Painter& painter, Gfx::FloatPoint // Undo shift in Glyf::Glyph::append_simple_path() via OpenType::Font::rasterize_glyph(). auto position = point.translated(0, -m_font->pixel_metrics().ascent); - if (style.has()) { - painter.draw_glyph(position, char_code, *m_font, style.get()); + // 5.5.5 Character Encoding, Encodings for TrueType Fonts + u32 unicode; + + // "If the font has a named Encoding entry of either MacRomanEncoding or WinAnsiEncoding, + // or if the font descriptor’s Nonsymbolic flag (see Table 5.20) is set, the viewer creates + // a table that maps from character codes to glyph names: + if (m_encoding_is_mac_roman_or_win_ansi || is_nonsymbolic()) { + // • If the Encoding entry is one of the names MacRomanEncoding or WinAnsiEncoding, + // the table is initialized with the mappings described in Appendix D. + // • If the Encoding entry is a dictionary, the table is initialized with the entries + // from the dictionary’s BaseEncoding entry (see Table 5.11). Any entries in the + // Differences array are used to update the table. Finally, any undefined entries in + // the table are filled using StandardEncoding." + // Implementor's note: This is (mostly) done in SimpleFont::initialize() and encoding() returns the result. + auto effective_encoding = encoding(); + if (!effective_encoding) + effective_encoding = Encoding::standard_encoding(); + + // "If a (3, 1) “cmap” subtable (Microsoft Unicode) is present: + // • A character code is first mapped to a glyph name using the table described above. + // • The glyph name is then mapped to a Unicode value by consulting the Adobe Glyph List (see the Bibliography). + // • Finally, the Unicode value is mapped to a glyph description according to the (3, 1) subtable. + // + // If no (3, 1) subtable is present but a (1, 0) subtable (Macintosh Roman) is present: + // • A character code is first mapped to a glyph name using the table described above. + // • The glyph name is then mapped back to a character code according to the standard + // Roman encoding used on Mac OS (see note below). + // • Finally, the code is mapped to a glyph description according to the (1, 0) subtable." + // Implementor's note: We currently don't know which tables are present, so we for now we always + // use the (3, 1) algorithm. + // FIXME: Implement (1, 0) subtable support. + auto char_name = effective_encoding->get_name(char_code); + u32 unicode = glyph_name_to_unicode(char_name).value_or(char_code); + if (m_font->contains_glyph(unicode)) { + do_draw_glyph(painter, position, width, unicode, *m_font, style); + return {}; + } + + // "In either of the cases above, if the glyph name cannot be mapped as specified, the glyph name is looked up + // in the font program’s “post” table (if one is present) and the associated glyph description is used." + // FIXME: Implement this. + return Error::rendering_unsupported_error("Looking up glyph in 'post' table not yet implemented."); + } else if (m_high_byte.has_value()) { + // "When the font has no Encoding entry, or the font descriptor’s Symbolic flag is set (in which case the + // Encoding entry is ignored), the following occurs: + // + // • If the font contains a (3, 0) subtable, the range of character codes must be one of the following: + // 0x0000 - 0x00FF, 0xF000 - 0xF0FF, 0xF100 - 0xF1FF, or 0xF200 - 0xF2FF. Depending on the range of codes, + // each byte from the string is prepended with the high byte of the range, to form a two-byte character, + // which is used to select the associated glyph description from the subtable. + // • Otherwise, if the font contains a (1, 0) subtable, single bytes from the string are used to look up the + // associated glyph descriptions from the subtable." + // Implementor's note: We currently don't know which tables are present, so we for now we always use the (3, 0) algorithm. + unicode = (m_high_byte.value() << 8) | char_code; } else { - // FIXME: Bounding box and sample point look to be pretty wrong - style.get>()->paint(Gfx::IntRect(position.x(), position.y(), width, 0), [&](auto sample) { - painter.draw_glyph(position, char_code, *m_font, sample(Gfx::IntPoint(position.x(), position.y()))); - }); + // "If a character cannot be mapped in any of the ways described above, the results are implementation-dependent." + // FIXME: Do something smarter? + auto effective_encoding = encoding(); + if (!effective_encoding) + effective_encoding = Encoding::standard_encoding(); + auto char_name = effective_encoding->get_name(char_code); + unicode = glyph_name_to_unicode(char_name).value_or(char_code); } + + do_draw_glyph(painter, position, width, unicode, *m_font, style); return {}; } diff --git a/Userland/Libraries/LibPDF/Fonts/TrueTypeFont.h b/Userland/Libraries/LibPDF/Fonts/TrueTypeFont.h index 0636fa03e0..c20d5dc204 100644 --- a/Userland/Libraries/LibPDF/Fonts/TrueTypeFont.h +++ b/Userland/Libraries/LibPDF/Fonts/TrueTypeFont.h @@ -26,6 +26,8 @@ protected: private: DeprecatedFlyString m_base_font_name; RefPtr m_font; + bool m_encoding_is_mac_roman_or_win_ansi { false }; + Optional m_high_byte; }; }