summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKhaled Hosny <khaledhosny@eglug.org>2011-03-02 20:10:46 +0200
committerKhaled Hosny <khaledhosny@eglug.org>2011-03-02 20:57:11 +0200
commit654f5f46c8c7bc43b73ce46035f3f6c1d5e9bbe5 (patch)
tree3df613c3e05ca044d521bfc872f0d28028cb15f8
parenta0e1a5594231d9f3789c51f04fdfb24680ca2516 (diff)
downloadluaotfload-654f5f46c8c7bc43b73ce46035f3f6c1d5e9bbe5.tar.gz
Sync with ConTeXt 2011.02.25 22:03
This commit overrides all our local modification to ConTeXt file and is not tested at all.
-rw-r--r--luaotfload.dtx31
-rw-r--r--otfl-data-con.lua4
-rw-r--r--otfl-font-age.lua3743
-rw-r--r--otfl-font-agl.lua3699
-rw-r--r--otfl-font-cid.lua2
-rw-r--r--otfl-font-def.lua308
-rw-r--r--otfl-font-dum.lua48
-rw-r--r--otfl-font-ini.lua37
-rw-r--r--otfl-font-lua.lua45
-rw-r--r--otfl-font-map.lua10
-rw-r--r--otfl-font-ota.lua2
-rw-r--r--otfl-font-otb.lua2
-rw-r--r--otfl-font-otc.lua24
-rw-r--r--otfl-font-otd.lua4
-rw-r--r--otfl-font-otf.lua225
-rw-r--r--otfl-font-otn.lua14
-rw-r--r--otfl-font-tfm.lua89
-rw-r--r--otfl-font-xtx.lua142
-rw-r--r--otfl-luat-dum.lua54
-rw-r--r--otfl-node-inj.lua24
20 files changed, 4271 insertions, 4236 deletions
diff --git a/luaotfload.dtx b/luaotfload.dtx
index 68750df..3fd9812 100644
--- a/luaotfload.dtx
+++ b/luaotfload.dtx
@@ -394,25 +394,27 @@ and the derived files
%
% \begin{multicols}{3}
% \begin{itemize*}
-% \item |luat-dum.lua|
% \item |data-con.lua|
-% \item |node-inj.lua|
-% \item |node-dum.lua|
-% \item |font-ini.lua|
-% \item |font-tfm.lua|
+% \item |font-age.lua|
% \item |font-cid.lua|
-% \item |font-ott.lua|
-% \item |font-otf.lua|
+% \item |font-def.lua|
+% \item |font-dum.lua|
+% \item |font-ini.lua|
+% \item |font-lua.lua|
+% \item |font-map.lua|
+% \item |font-ota.lua|
+% \item |font-otb.lua|
+% \item |font-otc.lua|
% \item |font-otd.lua|
+% \item |font-otf.lua|
% \item |font-oti.lua|
-% \item |font-otb.lua|
% \item |font-otn.lua|
-% \item |font-ota.lua|
-% \item |font-otc.lua|
-% \item |font-def.lua|
+% \item |font-ott.lua|
+% \item |font-tfm.lua|
% \item |font-xtx.lua|
-% \item |font-map.lua|
-% \item |font-dum.lua|
+% \item |luat-dum.lua|
+% \item |node-dum.lua|
+% \item |node-inj.lua|
% \end{itemize*}
% \end{multicols}
%
@@ -570,6 +572,7 @@ luaotfload.loadmodule('font-tfm.lua')
luaotfload.loadmodule('font-cid.lua')
luaotfload.loadmodule('font-ott.lua')
luaotfload.loadmodule('font-map.lua')
+luaotfload.loadmodule('font-lua.lua')
luaotfload.loadmodule('font-otf.lua')
luaotfload.loadmodule('font-otd.lua')
luaotfload.loadmodule('font-oti.lua')
@@ -577,7 +580,7 @@ luaotfload.loadmodule('font-otb.lua')
luaotfload.loadmodule('font-otn.lua')
luaotfload.loadmodule('font-ota.lua')
luaotfload.loadmodule('font-otc.lua')
-luaotfload.loadmodule('font-agl.lua')
+luaotfload.loadmodule('font-age.lua')
luaotfload.loadmodule('font-def.lua')
luaotfload.loadmodule('font-xtx.lua')
luaotfload.loadmodule('font-dum.lua')
diff --git a/otfl-data-con.lua b/otfl-data-con.lua
index 5d9650f..ed4f2de 100644
--- a/otfl-data-con.lua
+++ b/otfl-data-con.lua
@@ -29,11 +29,11 @@ containers = containers or { }
local containers = containers
containers.usecache = true
-local report_cache = logs.new("cache")
+local report_containers = logs.reporter("resolvers","containers")
local function report(container,tag,name)
if trace_cache or trace_containers then
- report_cache("container: %s, tag: %s, name: %s",container.subcategory,tag,name or 'invalid')
+ report_containers("container: %s, tag: %s, name: %s",container.subcategory,tag,name or 'invalid')
end
end
diff --git a/otfl-font-age.lua b/otfl-font-age.lua
new file mode 100644
index 0000000..5c19d41
--- /dev/null
+++ b/otfl-font-age.lua
@@ -0,0 +1,3743 @@
+if not modules then modules = { } end modules ['font-map'] = {
+ version = 1.001,
+ comment = "companion to font-ini.mkiv",
+ author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
+ copyright = "derived from http://www.adobe.com/devnet/opentype/archives/glyphlist.txt",
+ original = "Adobe Glyph List, version 2.0, September 20, 2002",
+}
+
+fonts = fonts or { }
+fonts.enc = fonts.enc or { }
+fonts.enc.agl = fonts.enc.agl or { }
+
+fonts.enc.agl.unicodes = { -- generated
+ ["A"]=65,
+ ["AE"]=198,
+ ["AEacute"]=508,
+ ["AEmacron"]=482,
+ ["Aacute"]=193,
+ ["Abreve"]=258,
+ ["Abreveacute"]=7854,
+ ["Abrevecyrillic"]=1232,
+ ["Abrevedotbelow"]=7862,
+ ["Abrevegrave"]=7856,
+ ["Abrevehookabove"]=7858,
+ ["Abrevetilde"]=7860,
+ ["Acaron"]=461,
+ ["Acircle"]=9398,
+ ["Acircumflex"]=194,
+ ["Acircumflexacute"]=7844,
+ ["Acircumflexdotbelow"]=7852,
+ ["Acircumflexgrave"]=7846,
+ ["Acircumflexhookabove"]=7848,
+ ["Acircumflextilde"]=7850,
+ ["Adblgrave"]=512,
+ ["Adieresis"]=196,
+ ["Adieresiscyrillic"]=1234,
+ ["Adieresismacron"]=478,
+ ["Adotbelow"]=7840,
+ ["Adotmacron"]=480,
+ ["Agrave"]=192,
+ ["Ahookabove"]=7842,
+ ["Aiecyrillic"]=1236,
+ ["Ainvertedbreve"]=514,
+ ["Alpha"]=913,
+ ["Alphatonos"]=902,
+ ["Amacron"]=256,
+ ["Amonospace"]=65313,
+ ["Aogonek"]=260,
+ ["Aring"]=197,
+ ["Aringacute"]=506,
+ ["Aringbelow"]=7680,
+ ["Atilde"]=195,
+ ["Aybarmenian"]=1329,
+ ["B"]=66,
+ ["Bcircle"]=9399,
+ ["Bdotaccent"]=7682,
+ ["Bdotbelow"]=7684,
+ ["Benarmenian"]=1330,
+ ["Beta"]=914,
+ ["Bhook"]=385,
+ ["Blinebelow"]=7686,
+ ["Bmonospace"]=65314,
+ ["Btopbar"]=386,
+ ["C"]=67,
+ ["Caarmenian"]=1342,
+ ["Cacute"]=262,
+ ["Ccaron"]=268,
+ ["Ccedilla"]=199,
+ ["Ccedillaacute"]=7688,
+ ["Ccircle"]=9400,
+ ["Ccircumflex"]=264,
+ ["Cdotaccent"]=266,
+ ["Chaarmenian"]=1353,
+ ["Cheabkhasiancyrillic"]=1212,
+ ["Chedescenderabkhasiancyrillic"]=1214,
+ ["Chedescendercyrillic"]=1206,
+ ["Chedieresiscyrillic"]=1268,
+ ["Cheharmenian"]=1347,
+ ["Chekhakassiancyrillic"]=1227,
+ ["Cheverticalstrokecyrillic"]=1208,
+ ["Chi"]=935,
+ ["Chook"]=391,
+ ["Cmonospace"]=65315,
+ ["Coarmenian"]=1361,
+ ["D"]=68,
+ ["DZ"]=497,
+ ["DZcaron"]=452,
+ ["Daarmenian"]=1332,
+ ["Dafrican"]=393,
+ ["Dcaron"]=270,
+ ["Dcedilla"]=7696,
+ ["Dcircle"]=9401,
+ ["Dcircumflexbelow"]=7698,
+ ["Ddotaccent"]=7690,
+ ["Ddotbelow"]=7692,
+ ["Deicoptic"]=1006,
+ ["Deltagreek"]=916,
+ ["Dhook"]=394,
+ ["Digammagreek"]=988,
+ ["Dlinebelow"]=7694,
+ ["Dmonospace"]=65316,
+ ["Dslash"]=272,
+ ["Dtopbar"]=395,
+ ["Dz"]=498,
+ ["Dzcaron"]=453,
+ ["Dzeabkhasiancyrillic"]=1248,
+ ["E"]=69,
+ ["Eacute"]=201,
+ ["Ebreve"]=276,
+ ["Ecaron"]=282,
+ ["Ecedillabreve"]=7708,
+ ["Echarmenian"]=1333,
+ ["Ecircle"]=9402,
+ ["Ecircumflex"]=202,
+ ["Ecircumflexacute"]=7870,
+ ["Ecircumflexbelow"]=7704,
+ ["Ecircumflexdotbelow"]=7878,
+ ["Ecircumflexgrave"]=7872,
+ ["Ecircumflexhookabove"]=7874,
+ ["Ecircumflextilde"]=7876,
+ ["Edblgrave"]=516,
+ ["Edieresis"]=203,
+ ["Edotaccent"]=278,
+ ["Edotbelow"]=7864,
+ ["Egrave"]=200,
+ ["Eharmenian"]=1335,
+ ["Ehookabove"]=7866,
+ ["Eightroman"]=8551,
+ ["Einvertedbreve"]=518,
+ ["Eiotifiedcyrillic"]=1124,
+ ["Elevenroman"]=8554,
+ ["Emacron"]=274,
+ ["Emacronacute"]=7702,
+ ["Emacrongrave"]=7700,
+ ["Emonospace"]=65317,
+ ["Endescendercyrillic"]=1186,
+ ["Eng"]=330,
+ ["Enghecyrillic"]=1188,
+ ["Enhookcyrillic"]=1223,
+ ["Eogonek"]=280,
+ ["Eopen"]=400,
+ ["Epsilon"]=917,
+ ["Epsilontonos"]=904,
+ ["Ereversed"]=398,
+ ["Esdescendercyrillic"]=1194,
+ ["Esh"]=425,
+ ["Eta"]=919,
+ ["Etarmenian"]=1336,
+ ["Etatonos"]=905,
+ ["Eth"]=208,
+ ["Etilde"]=7868,
+ ["Etildebelow"]=7706,
+ ["Ezh"]=439,
+ ["Ezhcaron"]=494,
+ ["Ezhreversed"]=440,
+ ["F"]=70,
+ ["Fcircle"]=9403,
+ ["Fdotaccent"]=7710,
+ ["Feharmenian"]=1366,
+ ["Feicoptic"]=996,
+ ["Fhook"]=401,
+ ["Fiveroman"]=8548,
+ ["Fmonospace"]=65318,
+ ["Fourroman"]=8547,
+ ["G"]=71,
+ ["GBsquare"]=13191,
+ ["Gacute"]=500,
+ ["Gamma"]=915,
+ ["Gammaafrican"]=404,
+ ["Gangiacoptic"]=1002,
+ ["Gbreve"]=286,
+ ["Gcaron"]=486,
+ ["Gcircle"]=9404,
+ ["Gcircumflex"]=284,
+ ["Gcommaaccent"]=290,
+ ["Gdotaccent"]=288,
+ ["Ghadarmenian"]=1346,
+ ["Ghemiddlehookcyrillic"]=1172,
+ ["Ghestrokecyrillic"]=1170,
+ ["Ghook"]=403,
+ ["Gimarmenian"]=1331,
+ ["Gmacron"]=7712,
+ ["Gmonospace"]=65319,
+ ["Gsmallhook"]=667,
+ ["Gstroke"]=484,
+ ["H"]=72,
+ ["HPsquare"]=13259,
+ ["Haabkhasiancyrillic"]=1192,
+ ["Hadescendercyrillic"]=1202,
+ ["Hbar"]=294,
+ ["Hbrevebelow"]=7722,
+ ["Hcedilla"]=7720,
+ ["Hcircle"]=9405,
+ ["Hcircumflex"]=292,
+ ["Hdieresis"]=7718,
+ ["Hdotaccent"]=7714,
+ ["Hdotbelow"]=7716,
+ ["Hmonospace"]=65320,
+ ["Hoarmenian"]=1344,
+ ["Horicoptic"]=1000,
+ ["Hzsquare"]=13200,
+ ["I"]=73,
+ ["IJ"]=306,
+ ["Iacute"]=205,
+ ["Ibreve"]=300,
+ ["Icaron"]=463,
+ ["Icircle"]=9406,
+ ["Icircumflex"]=206,
+ ["Idblgrave"]=520,
+ ["Idieresis"]=207,
+ ["Idieresisacute"]=7726,
+ ["Idieresiscyrillic"]=1252,
+ ["Idotaccent"]=304,
+ ["Idotbelow"]=7882,
+ ["Iebrevecyrillic"]=1238,
+ ["Ifraktur"]=8465,
+ ["Igrave"]=204,
+ ["Ihookabove"]=7880,
+ ["Iinvertedbreve"]=522,
+ ["Imacron"]=298,
+ ["Imacroncyrillic"]=1250,
+ ["Imonospace"]=65321,
+ ["Iniarmenian"]=1339,
+ ["Iogonek"]=302,
+ ["Iota"]=921,
+ ["Iotaafrican"]=406,
+ ["Iotadieresis"]=938,
+ ["Iotatonos"]=906,
+ ["Istroke"]=407,
+ ["Itilde"]=296,
+ ["Itildebelow"]=7724,
+ ["Izhitsadblgravecyrillic"]=1142,
+ ["J"]=74,
+ ["Jaarmenian"]=1345,
+ ["Jcircle"]=9407,
+ ["Jcircumflex"]=308,
+ ["Jheharmenian"]=1355,
+ ["Jmonospace"]=65322,
+ ["K"]=75,
+ ["KBsquare"]=13189,
+ ["KKsquare"]=13261,
+ ["Kabashkircyrillic"]=1184,
+ ["Kacute"]=7728,
+ ["Kadescendercyrillic"]=1178,
+ ["Kahookcyrillic"]=1219,
+ ["Kappa"]=922,
+ ["Kastrokecyrillic"]=1182,
+ ["Kaverticalstrokecyrillic"]=1180,
+ ["Kcaron"]=488,
+ ["Kcircle"]=9408,
+ ["Kcommaaccent"]=310,
+ ["Kdotbelow"]=7730,
+ ["Keharmenian"]=1364,
+ ["Kenarmenian"]=1343,
+ ["Kheicoptic"]=998,
+ ["Khook"]=408,
+ ["Klinebelow"]=7732,
+ ["Kmonospace"]=65323,
+ ["Koppacyrillic"]=1152,
+ ["Koppagreek"]=990,
+ ["Ksicyrillic"]=1134,
+ ["L"]=76,
+ ["LJ"]=455,
+ ["Lacute"]=313,
+ ["Lambda"]=923,
+ ["Lcaron"]=317,
+ ["Lcircle"]=9409,
+ ["Lcircumflexbelow"]=7740,
+ ["Lcommaaccent"]=315,
+ ["Ldotaccent"]=319,
+ ["Ldotbelow"]=7734,
+ ["Ldotbelowmacron"]=7736,
+ ["Liwnarmenian"]=1340,
+ ["Lj"]=456,
+ ["Llinebelow"]=7738,
+ ["Lmonospace"]=65324,
+ ["Lslash"]=321,
+ ["M"]=77,
+ ["MBsquare"]=13190,
+ ["Macute"]=7742,
+ ["Mcircle"]=9410,
+ ["Mdotaccent"]=7744,
+ ["Mdotbelow"]=7746,
+ ["Menarmenian"]=1348,
+ ["Mmonospace"]=65325,
+ ["Mturned"]=412,
+ ["Mu"]=924,
+ ["N"]=78,
+ ["NJ"]=458,
+ ["Nacute"]=323,
+ ["Ncaron"]=327,
+ ["Ncircle"]=9411,
+ ["Ncircumflexbelow"]=7754,
+ ["Ncommaaccent"]=325,
+ ["Ndotaccent"]=7748,
+ ["Ndotbelow"]=7750,
+ ["Nhookleft"]=413,
+ ["Nineroman"]=8552,
+ ["Nj"]=459,
+ ["Nlinebelow"]=7752,
+ ["Nmonospace"]=65326,
+ ["Nowarmenian"]=1350,
+ ["Ntilde"]=209,
+ ["Nu"]=925,
+ ["O"]=79,
+ ["OE"]=338,
+ ["Oacute"]=211,
+ ["Obarredcyrillic"]=1256,
+ ["Obarreddieresiscyrillic"]=1258,
+ ["Obreve"]=334,
+ ["Ocaron"]=465,
+ ["Ocenteredtilde"]=415,
+ ["Ocircle"]=9412,
+ ["Ocircumflex"]=212,
+ ["Ocircumflexacute"]=7888,
+ ["Ocircumflexdotbelow"]=7896,
+ ["Ocircumflexgrave"]=7890,
+ ["Ocircumflexhookabove"]=7892,
+ ["Ocircumflextilde"]=7894,
+ ["Odblgrave"]=524,
+ ["Odieresis"]=214,
+ ["Odieresiscyrillic"]=1254,
+ ["Odotbelow"]=7884,
+ ["Ograve"]=210,
+ ["Oharmenian"]=1365,
+ ["Ohookabove"]=7886,
+ ["Ohorn"]=416,
+ ["Ohornacute"]=7898,
+ ["Ohorndotbelow"]=7906,
+ ["Ohorngrave"]=7900,
+ ["Ohornhookabove"]=7902,
+ ["Ohorntilde"]=7904,
+ ["Ohungarumlaut"]=336,
+ ["Oi"]=418,
+ ["Oinvertedbreve"]=526,
+ ["Omacron"]=332,
+ ["Omacronacute"]=7762,
+ ["Omacrongrave"]=7760,
+ ["Omega"]=8486,
+ ["Omegacyrillic"]=1120,
+ ["Omegagreek"]=937,
+ ["Omegaroundcyrillic"]=1146,
+ ["Omegatitlocyrillic"]=1148,
+ ["Omegatonos"]=911,
+ ["Omicron"]=927,
+ ["Omicrontonos"]=908,
+ ["Omonospace"]=65327,
+ ["Oneroman"]=8544,
+ ["Oogonek"]=490,
+ ["Oogonekmacron"]=492,
+ ["Oopen"]=390,
+ ["Oslash"]=216,
+ ["Ostrokeacute"]=510,
+ ["Otcyrillic"]=1150,
+ ["Otilde"]=213,
+ ["Otildeacute"]=7756,
+ ["Otildedieresis"]=7758,
+ ["P"]=80,
+ ["Pacute"]=7764,
+ ["Pcircle"]=9413,
+ ["Pdotaccent"]=7766,
+ ["Peharmenian"]=1354,
+ ["Pemiddlehookcyrillic"]=1190,
+ ["Phi"]=934,
+ ["Phook"]=420,
+ ["Pi"]=928,
+ ["Piwrarmenian"]=1363,
+ ["Pmonospace"]=65328,
+ ["Psi"]=936,
+ ["Psicyrillic"]=1136,
+ ["Q"]=81,
+ ["Qcircle"]=9414,
+ ["Qmonospace"]=65329,
+ ["R"]=82,
+ ["Raarmenian"]=1356,
+ ["Racute"]=340,
+ ["Rcaron"]=344,
+ ["Rcircle"]=9415,
+ ["Rcommaaccent"]=342,
+ ["Rdblgrave"]=528,
+ ["Rdotaccent"]=7768,
+ ["Rdotbelow"]=7770,
+ ["Rdotbelowmacron"]=7772,
+ ["Reharmenian"]=1360,
+ ["Rfraktur"]=8476,
+ ["Rho"]=929,
+ ["Rinvertedbreve"]=530,
+ ["Rlinebelow"]=7774,
+ ["Rmonospace"]=65330,
+ ["Rsmallinverted"]=641,
+ ["Rsmallinvertedsuperior"]=694,
+ ["S"]=83,
+ ["SF010000"]=9484,
+ ["SF020000"]=9492,
+ ["SF030000"]=9488,
+ ["SF040000"]=9496,
+ ["SF050000"]=9532,
+ ["SF060000"]=9516,
+ ["SF070000"]=9524,
+ ["SF080000"]=9500,
+ ["SF090000"]=9508,
+ ["SF100000"]=9472,
+ ["SF110000"]=9474,
+ ["SF190000"]=9569,
+ ["SF200000"]=9570,
+ ["SF210000"]=9558,
+ ["SF220000"]=9557,
+ ["SF230000"]=9571,
+ ["SF240000"]=9553,
+ ["SF250000"]=9559,
+ ["SF260000"]=9565,
+ ["SF270000"]=9564,
+ ["SF280000"]=9563,
+ ["SF360000"]=9566,
+ ["SF370000"]=9567,
+ ["SF380000"]=9562,
+ ["SF390000"]=9556,
+ ["SF400000"]=9577,
+ ["SF410000"]=9574,
+ ["SF420000"]=9568,
+ ["SF430000"]=9552,
+ ["SF440000"]=9580,
+ ["SF450000"]=9575,
+ ["SF460000"]=9576,
+ ["SF470000"]=9572,
+ ["SF480000"]=9573,
+ ["SF490000"]=9561,
+ ["SF500000"]=9560,
+ ["SF510000"]=9554,
+ ["SF520000"]=9555,
+ ["SF530000"]=9579,
+ ["SF540000"]=9578,
+ ["Sacute"]=346,
+ ["Sacutedotaccent"]=7780,
+ ["Sampigreek"]=992,
+ ["Scaron"]=352,
+ ["Scarondotaccent"]=7782,
+ ["Scedilla"]=350,
+ ["Schwa"]=399,
+ ["Schwacyrillic"]=1240,
+ ["Schwadieresiscyrillic"]=1242,
+ ["Scircle"]=9416,
+ ["Scircumflex"]=348,
+ ["Scommaaccent"]=536,
+ ["Sdotaccent"]=7776,
+ ["Sdotbelow"]=7778,
+ ["Sdotbelowdotaccent"]=7784,
+ ["Seharmenian"]=1357,
+ ["Sevenroman"]=8550,
+ ["Shaarmenian"]=1351,
+ ["Sheicoptic"]=994,
+ ["Shhacyrillic"]=1210,
+ ["Shimacoptic"]=1004,
+ ["Sigma"]=931,
+ ["Sixroman"]=8549,
+ ["Smonospace"]=65331,
+ ["Stigmagreek"]=986,
+ ["T"]=84,
+ ["Tau"]=932,
+ ["Tbar"]=358,
+ ["Tcaron"]=356,
+ ["Tcircle"]=9417,
+ ["Tcircumflexbelow"]=7792,
+ ["Tcommaaccent"]=354,
+ ["Tdotaccent"]=7786,
+ ["Tdotbelow"]=7788,
+ ["Tedescendercyrillic"]=1196,
+ ["Tenroman"]=8553,
+ ["Tetsecyrillic"]=1204,
+ ["Theta"]=920,
+ ["Thook"]=428,
+ ["Thorn"]=222,
+ ["Threeroman"]=8546,
+ ["Tiwnarmenian"]=1359,
+ ["Tlinebelow"]=7790,
+ ["Tmonospace"]=65332,
+ ["Toarmenian"]=1337,
+ ["Tonefive"]=444,
+ ["Tonesix"]=388,
+ ["Tonetwo"]=423,
+ ["Tretroflexhook"]=430,
+ ["Twelveroman"]=8555,
+ ["Tworoman"]=8545,
+ ["U"]=85,
+ ["Uacute"]=218,
+ ["Ubreve"]=364,
+ ["Ucaron"]=467,
+ ["Ucircle"]=9418,
+ ["Ucircumflex"]=219,
+ ["Ucircumflexbelow"]=7798,
+ ["Udblgrave"]=532,
+ ["Udieresis"]=220,
+ ["Udieresisacute"]=471,
+ ["Udieresisbelow"]=7794,
+ ["Udieresiscaron"]=473,
+ ["Udieresiscyrillic"]=1264,
+ ["Udieresisgrave"]=475,
+ ["Udieresismacron"]=469,
+ ["Udotbelow"]=7908,
+ ["Ugrave"]=217,
+ ["Uhookabove"]=7910,
+ ["Uhorn"]=431,
+ ["Uhornacute"]=7912,
+ ["Uhorndotbelow"]=7920,
+ ["Uhorngrave"]=7914,
+ ["Uhornhookabove"]=7916,
+ ["Uhorntilde"]=7918,
+ ["Uhungarumlaut"]=368,
+ ["Uhungarumlautcyrillic"]=1266,
+ ["Uinvertedbreve"]=534,
+ ["Ukcyrillic"]=1144,
+ ["Umacron"]=362,
+ ["Umacroncyrillic"]=1262,
+ ["Umacrondieresis"]=7802,
+ ["Umonospace"]=65333,
+ ["Uogonek"]=370,
+ ["Upsilon"]=933,
+ ["Upsilonacutehooksymbolgreek"]=979,
+ ["Upsilonafrican"]=433,
+ ["Upsilondieresis"]=939,
+ ["Upsilondieresishooksymbolgreek"]=980,
+ ["Upsilonhooksymbol"]=978,
+ ["Upsilontonos"]=910,
+ ["Uring"]=366,
+ ["Ustraightcyrillic"]=1198,
+ ["Ustraightstrokecyrillic"]=1200,
+ ["Utilde"]=360,
+ ["Utildeacute"]=7800,
+ ["Utildebelow"]=7796,
+ ["V"]=86,
+ ["Vcircle"]=9419,
+ ["Vdotbelow"]=7806,
+ ["Vewarmenian"]=1358,
+ ["Vhook"]=434,
+ ["Vmonospace"]=65334,
+ ["Voarmenian"]=1352,
+ ["Vtilde"]=7804,
+ ["W"]=87,
+ ["Wacute"]=7810,
+ ["Wcircle"]=9420,
+ ["Wcircumflex"]=372,
+ ["Wdieresis"]=7812,
+ ["Wdotaccent"]=7814,
+ ["Wdotbelow"]=7816,
+ ["Wgrave"]=7808,
+ ["Wmonospace"]=65335,
+ ["X"]=88,
+ ["Xcircle"]=9421,
+ ["Xdieresis"]=7820,
+ ["Xdotaccent"]=7818,
+ ["Xeharmenian"]=1341,
+ ["Xi"]=926,
+ ["Xmonospace"]=65336,
+ ["Y"]=89,
+ ["Yacute"]=221,
+ ["Ycircle"]=9422,
+ ["Ycircumflex"]=374,
+ ["Ydieresis"]=376,
+ ["Ydotaccent"]=7822,
+ ["Ydotbelow"]=7924,
+ ["Yerudieresiscyrillic"]=1272,
+ ["Ygrave"]=7922,
+ ["Yhook"]=435,
+ ["Yhookabove"]=7926,
+ ["Yiarmenian"]=1349,
+ ["Yiwnarmenian"]=1362,
+ ["Ymonospace"]=65337,
+ ["Ytilde"]=7928,
+ ["Yusbigcyrillic"]=1130,
+ ["Yusbigiotifiedcyrillic"]=1132,
+ ["Yuslittlecyrillic"]=1126,
+ ["Yuslittleiotifiedcyrillic"]=1128,
+ ["Z"]=90,
+ ["Zaarmenian"]=1334,
+ ["Zacute"]=377,
+ ["Zcaron"]=381,
+ ["Zcircle"]=9423,
+ ["Zcircumflex"]=7824,
+ ["Zdotaccent"]=379,
+ ["Zdotbelow"]=7826,
+ ["Zedescendercyrillic"]=1176,
+ ["Zedieresiscyrillic"]=1246,
+ ["Zeta"]=918,
+ ["Zhearmenian"]=1338,
+ ["Zhebrevecyrillic"]=1217,
+ ["Zhedescendercyrillic"]=1174,
+ ["Zhedieresiscyrillic"]=1244,
+ ["Zlinebelow"]=7828,
+ ["Zmonospace"]=65338,
+ ["Zstroke"]=437,
+ ["a"]=97,
+ ["aabengali"]=2438,
+ ["aacute"]=225,
+ ["aadeva"]=2310,
+ ["aagujarati"]=2694,
+ ["aagurmukhi"]=2566,
+ ["aamatragurmukhi"]=2622,
+ ["aarusquare"]=13059,
+ ["aavowelsignbengali"]=2494,
+ ["aavowelsigndeva"]=2366,
+ ["aavowelsigngujarati"]=2750,
+ ["abbreviationmarkarmenian"]=1375,
+ ["abbreviationsigndeva"]=2416,
+ ["abengali"]=2437,
+ ["abopomofo"]=12570,
+ ["abreve"]=259,
+ ["abreveacute"]=7855,
+ ["abrevecyrillic"]=1233,
+ ["abrevedotbelow"]=7863,
+ ["abrevegrave"]=7857,
+ ["abrevehookabove"]=7859,
+ ["abrevetilde"]=7861,
+ ["acaron"]=462,
+ ["acircle"]=9424,
+ ["acircumflex"]=226,
+ ["acircumflexacute"]=7845,
+ ["acircumflexdotbelow"]=7853,
+ ["acircumflexgrave"]=7847,
+ ["acircumflexhookabove"]=7849,
+ ["acircumflextilde"]=7851,
+ ["acute"]=180,
+ ["acutebelowcmb"]=791,
+ ["acutecomb"]=769,
+ ["acutedeva"]=2388,
+ ["acutelowmod"]=719,
+ ["acutetonecmb"]=833,
+ ["adblgrave"]=513,
+ ["addakgurmukhi"]=2673,
+ ["adeva"]=2309,
+ ["adieresis"]=228,
+ ["adieresiscyrillic"]=1235,
+ ["adieresismacron"]=479,
+ ["adotbelow"]=7841,
+ ["adotmacron"]=481,
+ ["ae"]=230,
+ ["aeacute"]=509,
+ ["aekorean"]=12624,
+ ["aemacron"]=483,
+ ["afii10017"]=1040,
+ ["afii10018"]=1041,
+ ["afii10019"]=1042,
+ ["afii10020"]=1043,
+ ["afii10021"]=1044,
+ ["afii10022"]=1045,
+ ["afii10023"]=1025,
+ ["afii10024"]=1046,
+ ["afii10025"]=1047,
+ ["afii10026"]=1048,
+ ["afii10027"]=1049,
+ ["afii10028"]=1050,
+ ["afii10029"]=1051,
+ ["afii10030"]=1052,
+ ["afii10031"]=1053,
+ ["afii10032"]=1054,
+ ["afii10033"]=1055,
+ ["afii10034"]=1056,
+ ["afii10035"]=1057,
+ ["afii10036"]=1058,
+ ["afii10037"]=1059,
+ ["afii10038"]=1060,
+ ["afii10039"]=1061,
+ ["afii10040"]=1062,
+ ["afii10041"]=1063,
+ ["afii10042"]=1064,
+ ["afii10043"]=1065,
+ ["afii10044"]=1066,
+ ["afii10045"]=1067,
+ ["afii10046"]=1068,
+ ["afii10047"]=1069,
+ ["afii10048"]=1070,
+ ["afii10049"]=1071,
+ ["afii10050"]=1168,
+ ["afii10051"]=1026,
+ ["afii10052"]=1027,
+ ["afii10053"]=1028,
+ ["afii10054"]=1029,
+ ["afii10055"]=1030,
+ ["afii10056"]=1031,
+ ["afii10057"]=1032,
+ ["afii10058"]=1033,
+ ["afii10059"]=1034,
+ ["afii10060"]=1035,
+ ["afii10061"]=1036,
+ ["afii10062"]=1038,
+ ["afii10065"]=1072,
+ ["afii10145"]=1039,
+ ["afii10146"]=1122,
+ ["afii10147"]=1138,
+ ["afii10148"]=1140,
+ ["afii299"]=8206,
+ ["afii300"]=8207,
+ ["afii301"]=8205,
+ ["afii57534"]=1749,
+ ["afii61573"]=8236,
+ ["afii61574"]=8237,
+ ["afii61575"]=8238,
+ ["agrave"]=224,
+ ["agujarati"]=2693,
+ ["agurmukhi"]=2565,
+ ["ahiragana"]=12354,
+ ["ahookabove"]=7843,
+ ["aibengali"]=2448,
+ ["aibopomofo"]=12574,
+ ["aideva"]=2320,
+ ["aiecyrillic"]=1237,
+ ["aigujarati"]=2704,
+ ["aigurmukhi"]=2576,
+ ["aimatragurmukhi"]=2632,
+ ["ainarabic"]=1593,
+ ["ainfinalarabic"]=65226,
+ ["aininitialarabic"]=65227,
+ ["ainmedialarabic"]=65228,
+ ["ainvertedbreve"]=515,
+ ["aivowelsignbengali"]=2504,
+ ["aivowelsigndeva"]=2376,
+ ["aivowelsigngujarati"]=2760,
+ ["akatakana"]=12450,
+ ["akatakanahalfwidth"]=65393,
+ ["akorean"]=12623,
+ ["alefarabic"]=1575,
+ ["alefdageshhebrew"]=64304,
+ ["aleffinalarabic"]=65166,
+ ["alefhamzaabovearabic"]=1571,
+ ["alefhamzaabovefinalarabic"]=65156,
+ ["alefhamzabelowarabic"]=1573,
+ ["alefhamzabelowfinalarabic"]=65160,
+ ["alefhebrew"]=1488,
+ ["aleflamedhebrew"]=64335,
+ ["alefmaddaabovearabic"]=1570,
+ ["alefmaddaabovefinalarabic"]=65154,
+ ["alefmaksuraarabic"]=1609,
+ ["alefmaksurafinalarabic"]=65264,
+ ["alefpatahhebrew"]=64302,
+ ["alefqamatshebrew"]=64303,
+ ["aleph"]=8501,
+ ["allequal"]=8780,
+ ["alpha"]=945,
+ ["alphatonos"]=940,
+ ["amacron"]=257,
+ ["amonospace"]=65345,
+ ["ampersand"]=38,
+ ["ampersandmonospace"]=65286,
+ ["amsquare"]=13250,
+ ["anbopomofo"]=12578,
+ ["angbopomofo"]=12580,
+ ["angkhankhuthai"]=3674,
+ ["angle"]=8736,
+ ["anglebracketleft"]=12296,
+ ["anglebracketleftvertical"]=65087,
+ ["anglebracketright"]=12297,
+ ["anglebracketrightvertical"]=65088,
+ ["angleleft"]=9001,
+ ["angleright"]=9002,
+ ["angstrom"]=8491,
+ ["anoteleia"]=903,
+ ["anudattadeva"]=2386,
+ ["anusvarabengali"]=2434,
+ ["anusvaradeva"]=2306,
+ ["anusvaragujarati"]=2690,
+ ["aogonek"]=261,
+ ["apaatosquare"]=13056,
+ ["aparen"]=9372,
+ ["apostrophearmenian"]=1370,
+ ["apostrophemod"]=700,
+ ["apple"]=63743,
+ ["approaches"]=8784,
+ ["approxequal"]=8776,
+ ["approxequalorimage"]=8786,
+ ["araeaekorean"]=12686,
+ ["araeakorean"]=12685,
+ ["arc"]=8978,
+ ["arighthalfring"]=7834,
+ ["aring"]=229,
+ ["aringacute"]=507,
+ ["aringbelow"]=7681,
+ ["arrowboth"]=8596,
+ ["arrowdashdown"]=8675,
+ ["arrowdashleft"]=8672,
+ ["arrowdashright"]=8674,
+ ["arrowdashup"]=8673,
+ ["arrowdbldown"]=8659,
+ ["arrowdblup"]=8657,
+ ["arrowdown"]=8595,
+ ["arrowdownleft"]=8601,
+ ["arrowdownright"]=8600,
+ ["arrowdownwhite"]=8681,
+ ["arrowheaddownmod"]=709,
+ ["arrowheadleftmod"]=706,
+ ["arrowheadrightmod"]=707,
+ ["arrowheadupmod"]=708,
+ ["arrowleft"]=8592,
+ ["arrowleftdbl"]=8656,
+ ["arrowleftdblstroke"]=8653,
+ ["arrowleftoverright"]=8646,
+ ["arrowleftwhite"]=8678,
+ ["arrowright"]=8594,
+ ["arrowrightdblstroke"]=8655,
+ ["arrowrightheavy"]=10142,
+ ["arrowrightoverleft"]=8644,
+ ["arrowrightwhite"]=8680,
+ ["arrowtableft"]=8676,
+ ["arrowtabright"]=8677,
+ ["arrowup"]=8593,
+ ["arrowupdn"]=8597,
+ ["arrowupdownbase"]=8616,
+ ["arrowupleft"]=8598,
+ ["arrowupleftofdown"]=8645,
+ ["arrowupright"]=8599,
+ ["arrowupwhite"]=8679,
+ ["asciicircum"]=94,
+ ["asciicircummonospace"]=65342,
+ ["asciitilde"]=126,
+ ["asciitildemonospace"]=65374,
+ ["ascript"]=593,
+ ["ascriptturned"]=594,
+ ["asmallhiragana"]=12353,
+ ["asmallkatakana"]=12449,
+ ["asmallkatakanahalfwidth"]=65383,
+ ["asterisk"]=42,
+ ["asteriskarabic"]=1645,
+ ["asteriskmath"]=8727,
+ ["asteriskmonospace"]=65290,
+ ["asterisksmall"]=65121,
+ ["asterism"]=8258,
+ ["asymptoticallyequal"]=8771,
+ ["at"]=64,
+ ["atilde"]=227,
+ ["atmonospace"]=65312,
+ ["atsmall"]=65131,
+ ["aturned"]=592,
+ ["aubengali"]=2452,
+ ["aubopomofo"]=12576,
+ ["audeva"]=2324,
+ ["augujarati"]=2708,
+ ["augurmukhi"]=2580,
+ ["aulengthmarkbengali"]=2519,
+ ["aumatragurmukhi"]=2636,
+ ["auvowelsignbengali"]=2508,
+ ["auvowelsigndeva"]=2380,
+ ["auvowelsigngujarati"]=2764,
+ ["avagrahadeva"]=2365,
+ ["aybarmenian"]=1377,
+ ["ayinaltonehebrew"]=64288,
+ ["ayinhebrew"]=1506,
+ ["b"]=98,
+ ["babengali"]=2476,
+ ["backslash"]=92,
+ ["backslashmonospace"]=65340,
+ ["badeva"]=2348,
+ ["bagujarati"]=2732,
+ ["bagurmukhi"]=2604,
+ ["bahiragana"]=12400,
+ ["bahtthai"]=3647,
+ ["bakatakana"]=12496,
+ ["barmonospace"]=65372,
+ ["bbopomofo"]=12549,
+ ["bcircle"]=9425,
+ ["bdotaccent"]=7683,
+ ["bdotbelow"]=7685,
+ ["beamedsixteenthnotes"]=9836,
+ ["because"]=8757,
+ ["becyrillic"]=1073,
+ ["beharabic"]=1576,
+ ["behfinalarabic"]=65168,
+ ["behinitialarabic"]=65169,
+ ["behiragana"]=12409,
+ ["behmedialarabic"]=65170,
+ ["behmeeminitialarabic"]=64671,
+ ["behmeemisolatedarabic"]=64520,
+ ["behnoonfinalarabic"]=64621,
+ ["bekatakana"]=12505,
+ ["benarmenian"]=1378,
+ ["beta"]=946,
+ ["betasymbolgreek"]=976,
+ ["betdageshhebrew"]=64305,
+ ["bethebrew"]=1489,
+ ["betrafehebrew"]=64332,
+ ["bhabengali"]=2477,
+ ["bhadeva"]=2349,
+ ["bhagujarati"]=2733,
+ ["bhagurmukhi"]=2605,
+ ["bhook"]=595,
+ ["bihiragana"]=12403,
+ ["bikatakana"]=12499,
+ ["bilabialclick"]=664,
+ ["bindigurmukhi"]=2562,
+ ["birusquare"]=13105,
+ ["blackcircle"]=9679,
+ ["blackdiamond"]=9670,
+ ["blackleftpointingtriangle"]=9664,
+ ["blacklenticularbracketleft"]=12304,
+ ["blacklenticularbracketleftvertical"]=65083,
+ ["blacklenticularbracketright"]=12305,
+ ["blacklenticularbracketrightvertical"]=65084,
+ ["blacklowerlefttriangle"]=9699,
+ ["blacklowerrighttriangle"]=9698,
+ ["blackrightpointingtriangle"]=9654,
+ ["blacksmallsquare"]=9642,
+ ["blackstar"]=9733,
+ ["blackupperlefttriangle"]=9700,
+ ["blackupperrighttriangle"]=9701,
+ ["blackuppointingsmalltriangle"]=9652,
+ ["blank"]=9251,
+ ["blinebelow"]=7687,
+ ["block"]=9608,
+ ["bmonospace"]=65346,
+ ["bobaimaithai"]=3610,
+ ["bohiragana"]=12412,
+ ["bokatakana"]=12508,
+ ["bparen"]=9373,
+ ["bqsquare"]=13251,
+ ["braceleft"]=123,
+ ["braceleftmonospace"]=65371,
+ ["braceleftsmall"]=65115,
+ ["braceleftvertical"]=65079,
+ ["braceright"]=125,
+ ["bracerightmonospace"]=65373,
+ ["bracerightsmall"]=65116,
+ ["bracerightvertical"]=65080,
+ ["bracketleft"]=91,
+ ["bracketleftmonospace"]=65339,
+ ["bracketright"]=93,
+ ["bracketrightmonospace"]=65341,
+ ["breve"]=728,
+ ["brevebelowcmb"]=814,
+ ["brevecmb"]=774,
+ ["breveinvertedbelowcmb"]=815,
+ ["breveinvertedcmb"]=785,
+ ["breveinverteddoublecmb"]=865,
+ ["bridgebelowcmb"]=810,
+ ["bridgeinvertedbelowcmb"]=826,
+ ["brokenbar"]=166,
+ ["bstroke"]=384,
+ ["btopbar"]=387,
+ ["buhiragana"]=12406,
+ ["bukatakana"]=12502,
+ ["bullet"]=8226,
+ ["bulletoperator"]=8729,
+ ["bullseye"]=9678,
+ ["c"]=99,
+ ["caarmenian"]=1390,
+ ["cabengali"]=2458,
+ ["cacute"]=263,
+ ["cadeva"]=2330,
+ ["cagujarati"]=2714,
+ ["cagurmukhi"]=2586,
+ ["calsquare"]=13192,
+ ["candrabindubengali"]=2433,
+ ["candrabinducmb"]=784,
+ ["candrabindudeva"]=2305,
+ ["candrabindugujarati"]=2689,
+ ["capslock"]=8682,
+ ["careof"]=8453,
+ ["caron"]=711,
+ ["caronbelowcmb"]=812,
+ ["caroncmb"]=780,
+ ["carriagereturn"]=8629,
+ ["cbopomofo"]=12568,
+ ["ccaron"]=269,
+ ["ccedilla"]=231,
+ ["ccedillaacute"]=7689,
+ ["ccircle"]=9426,
+ ["ccircumflex"]=265,
+ ["ccurl"]=597,
+ ["cdotaccent"]=267,
+ ["cdsquare"]=13253,
+ ["cedilla"]=184,
+ ["cedillacmb"]=807,
+ ["cent"]=162,
+ ["centigrade"]=8451,
+ ["centmonospace"]=65504,
+ ["chaarmenian"]=1401,
+ ["chabengali"]=2459,
+ ["chadeva"]=2331,
+ ["chagujarati"]=2715,
+ ["chagurmukhi"]=2587,
+ ["chbopomofo"]=12564,
+ ["cheabkhasiancyrillic"]=1213,
+ ["checkmark"]=10003,
+ ["checyrillic"]=1095,
+ ["chedescenderabkhasiancyrillic"]=1215,
+ ["chedescendercyrillic"]=1207,
+ ["chedieresiscyrillic"]=1269,
+ ["cheharmenian"]=1395,
+ ["chekhakassiancyrillic"]=1228,
+ ["cheverticalstrokecyrillic"]=1209,
+ ["chi"]=967,
+ ["chieuchacirclekorean"]=12919,
+ ["chieuchaparenkorean"]=12823,
+ ["chieuchcirclekorean"]=12905,
+ ["chieuchkorean"]=12618,
+ ["chieuchparenkorean"]=12809,
+ ["chochangthai"]=3594,
+ ["chochanthai"]=3592,
+ ["chochingthai"]=3593,
+ ["chochoethai"]=3596,
+ ["chook"]=392,
+ ["cieucacirclekorean"]=12918,
+ ["cieucaparenkorean"]=12822,
+ ["cieuccirclekorean"]=12904,
+ ["cieuckorean"]=12616,
+ ["cieucparenkorean"]=12808,
+ ["cieucuparenkorean"]=12828,
+ ["circleot"]=8857,
+ ["circlepostalmark"]=12342,
+ ["circlewithlefthalfblack"]=9680,
+ ["circlewithrighthalfblack"]=9681,
+ ["circumflex"]=710,
+ ["circumflexbelowcmb"]=813,
+ ["circumflexcmb"]=770,
+ ["clear"]=8999,
+ ["clickalveolar"]=450,
+ ["clickdental"]=448,
+ ["clicklateral"]=449,
+ ["clickretroflex"]=451,
+ ["clubsuitblack"]=9827,
+ ["clubsuitwhite"]=9831,
+ ["cmcubedsquare"]=13220,
+ ["cmonospace"]=65347,
+ ["cmsquaredsquare"]=13216,
+ ["coarmenian"]=1409,
+ ["colon"]=58,
+ ["colonmonospace"]=65306,
+ ["colonsign"]=8353,
+ ["colonsmall"]=65109,
+ ["colontriangularhalfmod"]=721,
+ ["colontriangularmod"]=720,
+ ["comma"]=44,
+ ["commaabovecmb"]=787,
+ ["commaaboverightcmb"]=789,
+ ["commaarabic"]=1548,
+ ["commaarmenian"]=1373,
+ ["commamonospace"]=65292,
+ ["commareversedabovecmb"]=788,
+ ["commareversedmod"]=701,
+ ["commasmall"]=65104,
+ ["commaturnedabovecmb"]=786,
+ ["commaturnedmod"]=699,
+ ["congruent"]=8773,
+ ["contourintegral"]=8750,
+ ["control"]=8963,
+ ["controlACK"]=6,
+ ["controlBEL"]=7,
+ ["controlBS"]=8,
+ ["controlCAN"]=24,
+ ["controlCR"]=13,
+ ["controlDC1"]=17,
+ ["controlDC2"]=18,
+ ["controlDC3"]=19,
+ ["controlDC4"]=20,
+ ["controlDEL"]=127,
+ ["controlDLE"]=16,
+ ["controlEM"]=25,
+ ["controlENQ"]=5,
+ ["controlEOT"]=4,
+ ["controlESC"]=27,
+ ["controlETB"]=23,
+ ["controlETX"]=3,
+ ["controlFF"]=12,
+ ["controlFS"]=28,
+ ["controlGS"]=29,
+ ["controlHT"]=9,
+ ["controlLF"]=10,
+ ["controlNAK"]=21,
+ ["controlRS"]=30,
+ ["controlSI"]=15,
+ ["controlSO"]=14,
+ ["controlSOT"]=2,
+ ["controlSTX"]=1,
+ ["controlSUB"]=26,
+ ["controlSYN"]=22,
+ ["controlUS"]=31,
+ ["controlVT"]=11,
+ ["copyright"]=169,
+ ["cornerbracketleft"]=12300,
+ ["cornerbracketlefthalfwidth"]=65378,
+ ["cornerbracketleftvertical"]=65089,
+ ["cornerbracketright"]=12301,
+ ["cornerbracketrighthalfwidth"]=65379,
+ ["cornerbracketrightvertical"]=65090,
+ ["corporationsquare"]=13183,
+ ["cosquare"]=13255,
+ ["coverkgsquare"]=13254,
+ ["cparen"]=9374,
+ ["cruzeiro"]=8354,
+ ["cstretched"]=663,
+ ["curlyand"]=8911,
+ ["curlyor"]=8910,
+ ["currency"]=164,
+ ["d"]=100,
+ ["daarmenian"]=1380,
+ ["dabengali"]=2470,
+ ["dadarabic"]=1590,
+ ["dadeva"]=2342,
+ ["dadfinalarabic"]=65214,
+ ["dadinitialarabic"]=65215,
+ ["dadmedialarabic"]=65216,
+ ["dageshhebrew"]=1468,
+ ["dagger"]=8224,
+ ["daggerdbl"]=8225,
+ ["dagujarati"]=2726,
+ ["dagurmukhi"]=2598,
+ ["dahiragana"]=12384,
+ ["dakatakana"]=12480,
+ ["dalarabic"]=1583,
+ ["daletdageshhebrew"]=64307,
+ ["dalettserehebrew"]=1491,
+ ["dalfinalarabic"]=65194,
+ ["dammalowarabic"]=1615,
+ ["dammatanarabic"]=1612,
+ ["danda"]=2404,
+ ["dargalefthebrew"]=1447,
+ ["dasiapneumatacyrilliccmb"]=1157,
+ ["dblanglebracketleft"]=12298,
+ ["dblanglebracketleftvertical"]=65085,
+ ["dblanglebracketright"]=12299,
+ ["dblanglebracketrightvertical"]=65086,
+ ["dblarchinvertedbelowcmb"]=811,
+ ["dblarrowleft"]=8660,
+ ["dblarrowright"]=8658,
+ ["dbldanda"]=2405,
+ ["dblgravecmb"]=783,
+ ["dblintegral"]=8748,
+ ["dbllowlinecmb"]=819,
+ ["dbloverlinecmb"]=831,
+ ["dblprimemod"]=698,
+ ["dblverticalbar"]=8214,
+ ["dblverticallineabovecmb"]=782,
+ ["dbopomofo"]=12553,
+ ["dbsquare"]=13256,
+ ["dcaron"]=271,
+ ["dcedilla"]=7697,
+ ["dcircle"]=9427,
+ ["dcircumflexbelow"]=7699,
+ ["ddabengali"]=2465,
+ ["ddadeva"]=2337,
+ ["ddagujarati"]=2721,
+ ["ddagurmukhi"]=2593,
+ ["ddalarabic"]=1672,
+ ["ddalfinalarabic"]=64393,
+ ["dddhadeva"]=2396,
+ ["ddhabengali"]=2466,
+ ["ddhadeva"]=2338,
+ ["ddhagujarati"]=2722,
+ ["ddhagurmukhi"]=2594,
+ ["ddotaccent"]=7691,
+ ["ddotbelow"]=7693,
+ ["decimalseparatorpersian"]=1643,
+ ["decyrillic"]=1076,
+ ["degree"]=176,
+ ["dehihebrew"]=1453,
+ ["dehiragana"]=12391,
+ ["deicoptic"]=1007,
+ ["dekatakana"]=12487,
+ ["deleteleft"]=9003,
+ ["deleteright"]=8998,
+ ["delta"]=948,
+ ["deltaturned"]=397,
+ ["denominatorminusonenumeratorbengali"]=2552,
+ ["dezh"]=676,
+ ["dhabengali"]=2471,
+ ["dhadeva"]=2343,
+ ["dhagujarati"]=2727,
+ ["dhagurmukhi"]=2599,
+ ["dhook"]=599,
+ ["dialytikatonoscmb"]=836,
+ ["diamond"]=9830,
+ ["diamondsuitwhite"]=9826,
+ ["dieresis"]=168,
+ ["dieresisbelowcmb"]=804,
+ ["dieresiscmb"]=776,
+ ["dieresistonos"]=901,
+ ["dihiragana"]=12386,
+ ["dikatakana"]=12482,
+ ["dittomark"]=12291,
+ ["divide"]=247,
+ ["divides"]=8739,
+ ["divisionslash"]=8725,
+ ["djecyrillic"]=1106,
+ ["dlinebelow"]=7695,
+ ["dlsquare"]=13207,
+ ["dmacron"]=273,
+ ["dmonospace"]=65348,
+ ["dnblock"]=9604,
+ ["dochadathai"]=3598,
+ ["dodekthai"]=3604,
+ ["dohiragana"]=12393,
+ ["dokatakana"]=12489,
+ ["dollar"]=36,
+ ["dollarmonospace"]=65284,
+ ["dollarsmall"]=65129,
+ ["dong"]=8363,
+ ["dorusquare"]=13094,
+ ["dotaccent"]=729,
+ ["dotaccentcmb"]=775,
+ ["dotbelowcomb"]=803,
+ ["dotkatakana"]=12539,
+ ["dotlessi"]=305,
+ ["dotlessjstrokehook"]=644,
+ ["dotmath"]=8901,
+ ["dottedcircle"]=9676,
+ ["downtackbelowcmb"]=798,
+ ["downtackmod"]=725,
+ ["dparen"]=9375,
+ ["dtail"]=598,
+ ["dtopbar"]=396,
+ ["duhiragana"]=12389,
+ ["dukatakana"]=12485,
+ ["dz"]=499,
+ ["dzaltone"]=675,
+ ["dzcaron"]=454,
+ ["dzcurl"]=677,
+ ["dzeabkhasiancyrillic"]=1249,
+ ["dzecyrillic"]=1109,
+ ["dzhecyrillic"]=1119,
+ ["e"]=101,
+ ["eacute"]=233,
+ ["earth"]=9793,
+ ["ebengali"]=2447,
+ ["ebopomofo"]=12572,
+ ["ebreve"]=277,
+ ["ecandradeva"]=2317,
+ ["ecandragujarati"]=2701,
+ ["ecandravowelsigndeva"]=2373,
+ ["ecandravowelsigngujarati"]=2757,
+ ["ecaron"]=283,
+ ["ecedillabreve"]=7709,
+ ["echarmenian"]=1381,
+ ["echyiwnarmenian"]=1415,
+ ["ecircle"]=9428,
+ ["ecircumflex"]=234,
+ ["ecircumflexacute"]=7871,
+ ["ecircumflexbelow"]=7705,
+ ["ecircumflexdotbelow"]=7879,
+ ["ecircumflexgrave"]=7873,
+ ["ecircumflexhookabove"]=7875,
+ ["ecircumflextilde"]=7877,
+ ["ecyrillic"]=1108,
+ ["edblgrave"]=517,
+ ["edeva"]=2319,
+ ["edieresis"]=235,
+ ["edotaccent"]=279,
+ ["edotbelow"]=7865,
+ ["eegurmukhi"]=2575,
+ ["eematragurmukhi"]=2631,
+ ["efcyrillic"]=1092,
+ ["egrave"]=232,
+ ["egujarati"]=2703,
+ ["eharmenian"]=1383,
+ ["ehbopomofo"]=12573,
+ ["ehiragana"]=12360,
+ ["ehookabove"]=7867,
+ ["eibopomofo"]=12575,
+ ["eight"]=56,
+ ["eightbengali"]=2542,
+ ["eightcircle"]=9319,
+ ["eightcircleinversesansserif"]=10129,
+ ["eightdeva"]=2414,
+ ["eighteencircle"]=9329,
+ ["eighteenparen"]=9349,
+ ["eighteenperiod"]=9369,
+ ["eightgujarati"]=2798,
+ ["eightgurmukhi"]=2670,
+ ["eighthackarabic"]=1640,
+ ["eighthangzhou"]=12328,
+ ["eightideographicparen"]=12839,
+ ["eightinferior"]=8328,
+ ["eightmonospace"]=65304,
+ ["eightparen"]=9339,
+ ["eightperiod"]=9359,
+ ["eightpersian"]=1784,
+ ["eightroman"]=8567,
+ ["eightsuperior"]=8312,
+ ["eightthai"]=3672,
+ ["einvertedbreve"]=519,
+ ["eiotifiedcyrillic"]=1125,
+ ["ekatakana"]=12456,
+ ["ekatakanahalfwidth"]=65396,
+ ["ekonkargurmukhi"]=2676,
+ ["ekorean"]=12628,
+ ["elcyrillic"]=1083,
+ ["element"]=8712,
+ ["elevencircle"]=9322,
+ ["elevenparen"]=9342,
+ ["elevenperiod"]=9362,
+ ["elevenroman"]=8570,
+ ["ellipsis"]=8230,
+ ["ellipsisvertical"]=8942,
+ ["emacron"]=275,
+ ["emacronacute"]=7703,
+ ["emacrongrave"]=7701,
+ ["emcyrillic"]=1084,
+ ["emdash"]=8212,
+ ["emdashvertical"]=65073,
+ ["emonospace"]=65349,
+ ["emphasismarkarmenian"]=1371,
+ ["emptyset"]=8709,
+ ["enbopomofo"]=12579,
+ ["encyrillic"]=1085,
+ ["endash"]=8211,
+ ["endashvertical"]=65074,
+ ["endescendercyrillic"]=1187,
+ ["eng"]=331,
+ ["engbopomofo"]=12581,
+ ["enghecyrillic"]=1189,
+ ["enhookcyrillic"]=1224,
+ ["enspace"]=8194,
+ ["eogonek"]=281,
+ ["eokorean"]=12627,
+ ["eopen"]=603,
+ ["eopenclosed"]=666,
+ ["eopenreversed"]=604,
+ ["eopenreversedclosed"]=606,
+ ["eopenreversedhook"]=605,
+ ["eparen"]=9376,
+ ["epsilon"]=949,
+ ["epsilontonos"]=941,
+ ["equal"]=61,
+ ["equalmonospace"]=65309,
+ ["equalsmall"]=65126,
+ ["equalsuperior"]=8316,
+ ["equivalence"]=8801,
+ ["erbopomofo"]=12582,
+ ["ercyrillic"]=1088,
+ ["ereversed"]=600,
+ ["ereversedcyrillic"]=1101,
+ ["escyrillic"]=1089,
+ ["esdescendercyrillic"]=1195,
+ ["esh"]=643,
+ ["eshcurl"]=646,
+ ["eshortdeva"]=2318,
+ ["eshortvowelsigndeva"]=2374,
+ ["eshreversedloop"]=426,
+ ["eshsquatreversed"]=645,
+ ["esmallhiragana"]=12359,
+ ["esmallkatakana"]=12455,
+ ["esmallkatakanahalfwidth"]=65386,
+ ["estimated"]=8494,
+ ["eta"]=951,
+ ["etarmenian"]=1384,
+ ["etatonos"]=942,
+ ["eth"]=240,
+ ["etilde"]=7869,
+ ["etildebelow"]=7707,
+ ["etnahtalefthebrew"]=1425,
+ ["eturned"]=477,
+ ["eukorean"]=12641,
+ ["euro"]=8364,
+ ["evowelsignbengali"]=2503,
+ ["evowelsigndeva"]=2375,
+ ["evowelsigngujarati"]=2759,
+ ["exclam"]=33,
+ ["exclamarmenian"]=1372,
+ ["exclamdbl"]=8252,
+ ["exclamdown"]=161,
+ ["exclammonospace"]=65281,
+ ["ezh"]=658,
+ ["ezhcaron"]=495,
+ ["ezhcurl"]=659,
+ ["ezhreversed"]=441,
+ ["ezhtail"]=442,
+ ["f"]=102,
+ ["fadeva"]=2398,
+ ["fagurmukhi"]=2654,
+ ["fahrenheit"]=8457,
+ ["fathalowarabic"]=1614,
+ ["fathatanarabic"]=1611,
+ ["fbopomofo"]=12552,
+ ["fcircle"]=9429,
+ ["fdotaccent"]=7711,
+ ["feharabic"]=1601,
+ ["feharmenian"]=1414,
+ ["fehfinalarabic"]=65234,
+ ["fehinitialarabic"]=65235,
+ ["fehmedialarabic"]=65236,
+ ["feicoptic"]=997,
+ ["ff"]=64256,
+ ["ffi"]=64259,
+ ["ffl"]=64260,
+ ["fi"]=64257,
+ ["fifteencircle"]=9326,
+ ["fifteenparen"]=9346,
+ ["fifteenperiod"]=9366,
+ ["figuredash"]=8210,
+ ["filledbox"]=9632,
+ ["filledrect"]=9644,
+ ["finalkafdageshhebrew"]=64314,
+ ["finalkafshevahebrew"]=1498,
+ ["finalmemhebrew"]=1501,
+ ["finalnunhebrew"]=1503,
+ ["finalpehebrew"]=1507,
+ ["finaltsadihebrew"]=1509,
+ ["firsttonechinese"]=713,
+ ["fisheye"]=9673,
+ ["fitacyrillic"]=1139,
+ ["five"]=53,
+ ["fivebengali"]=2539,
+ ["fivecircle"]=9316,
+ ["fivecircleinversesansserif"]=10126,
+ ["fivedeva"]=2411,
+ ["fiveeighths"]=8541,
+ ["fivegujarati"]=2795,
+ ["fivegurmukhi"]=2667,
+ ["fivehackarabic"]=1637,
+ ["fivehangzhou"]=12325,
+ ["fiveideographicparen"]=12836,
+ ["fiveinferior"]=8325,
+ ["fivemonospace"]=65301,
+ ["fiveparen"]=9336,
+ ["fiveperiod"]=9356,
+ ["fivepersian"]=1781,
+ ["fiveroman"]=8564,
+ ["fivesuperior"]=8309,
+ ["fivethai"]=3669,
+ ["fl"]=64258,
+ ["florin"]=402,
+ ["fmonospace"]=65350,
+ ["fmsquare"]=13209,
+ ["fofanthai"]=3615,
+ ["fofathai"]=3613,
+ ["fongmanthai"]=3663,
+ ["four"]=52,
+ ["fourbengali"]=2538,
+ ["fourcircle"]=9315,
+ ["fourcircleinversesansserif"]=10125,
+ ["fourdeva"]=2410,
+ ["fourgujarati"]=2794,
+ ["fourgurmukhi"]=2666,
+ ["fourhackarabic"]=1636,
+ ["fourhangzhou"]=12324,
+ ["fourideographicparen"]=12835,
+ ["fourinferior"]=8324,
+ ["fourmonospace"]=65300,
+ ["fournumeratorbengali"]=2551,
+ ["fourparen"]=9335,
+ ["fourperiod"]=9355,
+ ["fourpersian"]=1780,
+ ["fourroman"]=8563,
+ ["foursuperior"]=8308,
+ ["fourteencircle"]=9325,
+ ["fourteenparen"]=9345,
+ ["fourteenperiod"]=9365,
+ ["fourthai"]=3668,
+ ["fourthtonechinese"]=715,
+ ["fparen"]=9377,
+ ["fraction"]=8260,
+ ["franc"]=8355,
+ ["g"]=103,
+ ["gabengali"]=2455,
+ ["gacute"]=501,
+ ["gadeva"]=2327,
+ ["gafarabic"]=1711,
+ ["gaffinalarabic"]=64403,
+ ["gafinitialarabic"]=64404,
+ ["gafmedialarabic"]=64405,
+ ["gagujarati"]=2711,
+ ["gagurmukhi"]=2583,
+ ["gahiragana"]=12364,
+ ["gakatakana"]=12460,
+ ["gamma"]=947,
+ ["gammalatinsmall"]=611,
+ ["gammasuperior"]=736,
+ ["gangiacoptic"]=1003,
+ ["gbopomofo"]=12557,
+ ["gbreve"]=287,
+ ["gcaron"]=487,
+ ["gcircle"]=9430,
+ ["gcircumflex"]=285,
+ ["gcommaaccent"]=291,
+ ["gdotaccent"]=289,
+ ["gecyrillic"]=1075,
+ ["gehiragana"]=12370,
+ ["gekatakana"]=12466,
+ ["geometricallyequal"]=8785,
+ ["gereshaccenthebrew"]=1436,
+ ["gereshhebrew"]=1523,
+ ["gereshmuqdamhebrew"]=1437,
+ ["germandbls"]=223,
+ ["gershayimaccenthebrew"]=1438,
+ ["gershayimhebrew"]=1524,
+ ["getamark"]=12307,
+ ["ghabengali"]=2456,
+ ["ghadarmenian"]=1394,
+ ["ghadeva"]=2328,
+ ["ghagujarati"]=2712,
+ ["ghagurmukhi"]=2584,
+ ["ghainarabic"]=1594,
+ ["ghainfinalarabic"]=65230,
+ ["ghaininitialarabic"]=65231,
+ ["ghainmedialarabic"]=65232,
+ ["ghemiddlehookcyrillic"]=1173,
+ ["ghestrokecyrillic"]=1171,
+ ["gheupturncyrillic"]=1169,
+ ["ghhadeva"]=2394,
+ ["ghhagurmukhi"]=2650,
+ ["ghook"]=608,
+ ["ghzsquare"]=13203,
+ ["gihiragana"]=12366,
+ ["gikatakana"]=12462,
+ ["gimarmenian"]=1379,
+ ["gimeldageshhebrew"]=64306,
+ ["gimelhebrew"]=1490,
+ ["gjecyrillic"]=1107,
+ ["glottalinvertedstroke"]=446,
+ ["glottalstop"]=660,
+ ["glottalstopinverted"]=662,
+ ["glottalstopmod"]=704,
+ ["glottalstopreversed"]=661,
+ ["glottalstopreversedmod"]=705,
+ ["glottalstopreversedsuperior"]=740,
+ ["glottalstopstroke"]=673,
+ ["glottalstopstrokereversed"]=674,
+ ["gmacron"]=7713,
+ ["gmonospace"]=65351,
+ ["gohiragana"]=12372,
+ ["gokatakana"]=12468,
+ ["gparen"]=9378,
+ ["gpasquare"]=13228,
+ ["grave"]=96,
+ ["gravebelowcmb"]=790,
+ ["gravecomb"]=768,
+ ["gravedeva"]=2387,
+ ["gravelowmod"]=718,
+ ["gravemonospace"]=65344,
+ ["gravetonecmb"]=832,
+ ["greater"]=62,
+ ["greaterequal"]=8805,
+ ["greaterequalorless"]=8923,
+ ["greatermonospace"]=65310,
+ ["greaterorequivalent"]=8819,
+ ["greaterorless"]=8823,
+ ["greateroverequal"]=8807,
+ ["greatersmall"]=65125,
+ ["gscript"]=609,
+ ["gstroke"]=485,
+ ["guhiragana"]=12368,
+ ["guillemotleft"]=171,
+ ["guillemotright"]=187,
+ ["guilsinglleft"]=8249,
+ ["guilsinglright"]=8250,
+ ["gukatakana"]=12464,
+ ["guramusquare"]=13080,
+ ["gysquare"]=13257,
+ ["h"]=104,
+ ["haabkhasiancyrillic"]=1193,
+ ["habengali"]=2489,
+ ["hadescendercyrillic"]=1203,
+ ["hadeva"]=2361,
+ ["hagujarati"]=2745,
+ ["hagurmukhi"]=2617,
+ ["haharabic"]=1581,
+ ["hahfinalarabic"]=65186,
+ ["hahinitialarabic"]=65187,
+ ["hahiragana"]=12399,
+ ["hahmedialarabic"]=65188,
+ ["haitusquare"]=13098,
+ ["hakatakana"]=12495,
+ ["hakatakanahalfwidth"]=65418,
+ ["halantgurmukhi"]=2637,
+ ["hamzasukunarabic"]=1569,
+ ["hangulfiller"]=12644,
+ ["hardsigncyrillic"]=1098,
+ ["harpoonleftbarbup"]=8636,
+ ["harpoonrightbarbup"]=8640,
+ ["hasquare"]=13258,
+ ["hatafpatahwidehebrew"]=1458,
+ ["hatafqamatswidehebrew"]=1459,
+ ["hatafsegolwidehebrew"]=1457,
+ ["hbar"]=295,
+ ["hbopomofo"]=12559,
+ ["hbrevebelow"]=7723,
+ ["hcedilla"]=7721,
+ ["hcircle"]=9431,
+ ["hcircumflex"]=293,
+ ["hdieresis"]=7719,
+ ["hdotaccent"]=7715,
+ ["hdotbelow"]=7717,
+ ["heartsuitblack"]=9829,
+ ["heartsuitwhite"]=9825,
+ ["hedageshhebrew"]=64308,
+ ["hehaltonearabic"]=1729,
+ ["heharabic"]=1607,
+ ["hehebrew"]=1492,
+ ["hehfinalaltonearabic"]=64423,
+ ["hehfinalarabic"]=65258,
+ ["hehhamzaabovefinalarabic"]=64421,
+ ["hehhamzaaboveisolatedarabic"]=64420,
+ ["hehinitialaltonearabic"]=64424,
+ ["hehinitialarabic"]=65259,
+ ["hehiragana"]=12408,
+ ["hehmedialaltonearabic"]=64425,
+ ["hehmedialarabic"]=65260,
+ ["heiseierasquare"]=13179,
+ ["hekatakana"]=12504,
+ ["hekatakanahalfwidth"]=65421,
+ ["hekutaarusquare"]=13110,
+ ["henghook"]=615,
+ ["herutusquare"]=13113,
+ ["hethebrew"]=1495,
+ ["hhook"]=614,
+ ["hhooksuperior"]=689,
+ ["hieuhacirclekorean"]=12923,
+ ["hieuhaparenkorean"]=12827,
+ ["hieuhcirclekorean"]=12909,
+ ["hieuhkorean"]=12622,
+ ["hieuhparenkorean"]=12813,
+ ["hihiragana"]=12402,
+ ["hikatakana"]=12498,
+ ["hikatakanahalfwidth"]=65419,
+ ["hiriqwidehebrew"]=1460,
+ ["hlinebelow"]=7830,
+ ["hmonospace"]=65352,
+ ["hoarmenian"]=1392,
+ ["hohipthai"]=3627,
+ ["hohiragana"]=12411,
+ ["hokatakana"]=12507,
+ ["hokatakanahalfwidth"]=65422,
+ ["holamwidehebrew"]=1465,
+ ["honokhukthai"]=3630,
+ ["hookcmb"]=777,
+ ["hookpalatalizedbelowcmb"]=801,
+ ["hookretroflexbelowcmb"]=802,
+ ["hoonsquare"]=13122,
+ ["horicoptic"]=1001,
+ ["horizontalbar"]=8213,
+ ["horncmb"]=795,
+ ["hotsprings"]=9832,
+ ["house"]=8962,
+ ["hparen"]=9379,
+ ["hsuperior"]=688,
+ ["hturned"]=613,
+ ["huhiragana"]=12405,
+ ["huiitosquare"]=13107,
+ ["hukatakana"]=12501,
+ ["hukatakanahalfwidth"]=65420,
+ ["hungarumlaut"]=733,
+ ["hungarumlautcmb"]=779,
+ ["hv"]=405,
+ ["hyphen"]=45,
+ ["hyphenmonospace"]=65293,
+ ["hyphensmall"]=65123,
+ ["hyphentwo"]=8208,
+ ["i"]=105,
+ ["iacute"]=237,
+ ["iacyrillic"]=1103,
+ ["ibengali"]=2439,
+ ["ibopomofo"]=12583,
+ ["ibreve"]=301,
+ ["icaron"]=464,
+ ["icircle"]=9432,
+ ["icircumflex"]=238,
+ ["icyrillic"]=1110,
+ ["idblgrave"]=521,
+ ["ideographearthcircle"]=12943,
+ ["ideographfirecircle"]=12939,
+ ["ideographicallianceparen"]=12863,
+ ["ideographiccallparen"]=12858,
+ ["ideographiccentrecircle"]=12965,
+ ["ideographicclose"]=12294,
+ ["ideographiccomma"]=12289,
+ ["ideographiccommaleft"]=65380,
+ ["ideographiccongratulationparen"]=12855,
+ ["ideographiccorrectcircle"]=12963,
+ ["ideographicearthparen"]=12847,
+ ["ideographicenterpriseparen"]=12861,
+ ["ideographicexcellentcircle"]=12957,
+ ["ideographicfestivalparen"]=12864,
+ ["ideographicfinancialcircle"]=12950,
+ ["ideographicfinancialparen"]=12854,
+ ["ideographicfireparen"]=12843,
+ ["ideographichaveparen"]=12850,
+ ["ideographichighcircle"]=12964,
+ ["ideographiciterationmark"]=12293,
+ ["ideographiclaborcircle"]=12952,
+ ["ideographiclaborparen"]=12856,
+ ["ideographicleftcircle"]=12967,
+ ["ideographiclowcircle"]=12966,
+ ["ideographicmedicinecircle"]=12969,
+ ["ideographicmetalparen"]=12846,
+ ["ideographicmoonparen"]=12842,
+ ["ideographicnameparen"]=12852,
+ ["ideographicperiod"]=12290,
+ ["ideographicprintcircle"]=12958,
+ ["ideographicreachparen"]=12867,
+ ["ideographicrepresentparen"]=12857,
+ ["ideographicresourceparen"]=12862,
+ ["ideographicrightcircle"]=12968,
+ ["ideographicsecretcircle"]=12953,
+ ["ideographicselfparen"]=12866,
+ ["ideographicsocietyparen"]=12851,
+ ["ideographicspace"]=12288,
+ ["ideographicspecialparen"]=12853,
+ ["ideographicstockparen"]=12849,
+ ["ideographicstudyparen"]=12859,
+ ["ideographicsunparen"]=12848,
+ ["ideographicsuperviseparen"]=12860,
+ ["ideographicwaterparen"]=12844,
+ ["ideographicwoodparen"]=12845,
+ ["ideographiczero"]=12295,
+ ["ideographmetalcircle"]=12942,
+ ["ideographmooncircle"]=12938,
+ ["ideographnamecircle"]=12948,
+ ["ideographsuncircle"]=12944,
+ ["ideographwatercircle"]=12940,
+ ["ideographwoodcircle"]=12941,
+ ["ideva"]=2311,
+ ["idieresis"]=239,
+ ["idieresisacute"]=7727,
+ ["idieresiscyrillic"]=1253,
+ ["idotbelow"]=7883,
+ ["iebrevecyrillic"]=1239,
+ ["iecyrillic"]=1077,
+ ["ieungacirclekorean"]=12917,
+ ["ieungaparenkorean"]=12821,
+ ["ieungcirclekorean"]=12903,
+ ["ieungkorean"]=12615,
+ ["ieungparenkorean"]=12807,
+ ["igrave"]=236,
+ ["igujarati"]=2695,
+ ["igurmukhi"]=2567,
+ ["ihiragana"]=12356,
+ ["ihookabove"]=7881,
+ ["iibengali"]=2440,
+ ["iicyrillic"]=1080,
+ ["iideva"]=2312,
+ ["iigujarati"]=2696,
+ ["iigurmukhi"]=2568,
+ ["iimatragurmukhi"]=2624,
+ ["iinvertedbreve"]=523,
+ ["iishortcyrillic"]=1081,
+ ["iivowelsignbengali"]=2496,
+ ["iivowelsigndeva"]=2368,
+ ["iivowelsigngujarati"]=2752,
+ ["ij"]=307,
+ ["ikatakana"]=12452,
+ ["ikatakanahalfwidth"]=65394,
+ ["ikorean"]=12643,
+ ["iluyhebrew"]=1452,
+ ["imacron"]=299,
+ ["imacroncyrillic"]=1251,
+ ["imageorapproximatelyequal"]=8787,
+ ["imatragurmukhi"]=2623,
+ ["imonospace"]=65353,
+ ["increment"]=8710,
+ ["infinity"]=8734,
+ ["iniarmenian"]=1387,
+ ["integral"]=8747,
+ ["integralbt"]=8993,
+ ["integraltp"]=8992,
+ ["intersection"]=8745,
+ ["intisquare"]=13061,
+ ["invbullet"]=9688,
+ ["invsmileface"]=9787,
+ ["iocyrillic"]=1105,
+ ["iogonek"]=303,
+ ["iota"]=953,
+ ["iotadieresis"]=970,
+ ["iotadieresistonos"]=912,
+ ["iotalatin"]=617,
+ ["iotatonos"]=943,
+ ["iparen"]=9380,
+ ["irigurmukhi"]=2674,
+ ["ismallhiragana"]=12355,
+ ["ismallkatakana"]=12451,
+ ["ismallkatakanahalfwidth"]=65384,
+ ["issharbengali"]=2554,
+ ["istroke"]=616,
+ ["iterationhiragana"]=12445,
+ ["iterationkatakana"]=12541,
+ ["itilde"]=297,
+ ["itildebelow"]=7725,
+ ["iubopomofo"]=12585,
+ ["iucyrillic"]=1102,
+ ["ivowelsignbengali"]=2495,
+ ["ivowelsigndeva"]=2367,
+ ["ivowelsigngujarati"]=2751,
+ ["izhitsacyrillic"]=1141,
+ ["izhitsadblgravecyrillic"]=1143,
+ ["j"]=106,
+ ["jaarmenian"]=1393,
+ ["jabengali"]=2460,
+ ["jadeva"]=2332,
+ ["jagujarati"]=2716,
+ ["jagurmukhi"]=2588,
+ ["jbopomofo"]=12560,
+ ["jcaron"]=496,
+ ["jcircle"]=9433,
+ ["jcircumflex"]=309,
+ ["jcrossedtail"]=669,
+ ["jdotlessstroke"]=607,
+ ["jecyrillic"]=1112,
+ ["jeemarabic"]=1580,
+ ["jeemfinalarabic"]=65182,
+ ["jeeminitialarabic"]=65183,
+ ["jeemmedialarabic"]=65184,
+ ["jeharabic"]=1688,
+ ["jehfinalarabic"]=64395,
+ ["jhabengali"]=2461,
+ ["jhadeva"]=2333,
+ ["jhagujarati"]=2717,
+ ["jhagurmukhi"]=2589,
+ ["jheharmenian"]=1403,
+ ["jis"]=12292,
+ ["jmonospace"]=65354,
+ ["jparen"]=9381,
+ ["jsuperior"]=690,
+ ["k"]=107,
+ ["kabashkircyrillic"]=1185,
+ ["kabengali"]=2453,
+ ["kacute"]=7729,
+ ["kacyrillic"]=1082,
+ ["kadescendercyrillic"]=1179,
+ ["kadeva"]=2325,
+ ["kafarabic"]=1603,
+ ["kafdageshhebrew"]=64315,
+ ["kaffinalarabic"]=65242,
+ ["kafhebrew"]=1499,
+ ["kafinitialarabic"]=65243,
+ ["kafmedialarabic"]=65244,
+ ["kafrafehebrew"]=64333,
+ ["kagujarati"]=2709,
+ ["kagurmukhi"]=2581,
+ ["kahiragana"]=12363,
+ ["kahookcyrillic"]=1220,
+ ["kakatakana"]=12459,
+ ["kakatakanahalfwidth"]=65398,
+ ["kappa"]=954,
+ ["kappasymbolgreek"]=1008,
+ ["kapyeounmieumkorean"]=12657,
+ ["kapyeounphieuphkorean"]=12676,
+ ["kapyeounpieupkorean"]=12664,
+ ["kapyeounssangpieupkorean"]=12665,
+ ["karoriisquare"]=13069,
+ ["kasmallkatakana"]=12533,
+ ["kasquare"]=13188,
+ ["kasraarabic"]=1616,
+ ["kasratanarabic"]=1613,
+ ["kastrokecyrillic"]=1183,
+ ["katahiraprolongmarkhalfwidth"]=65392,
+ ["kaverticalstrokecyrillic"]=1181,
+ ["kbopomofo"]=12558,
+ ["kcalsquare"]=13193,
+ ["kcaron"]=489,
+ ["kcircle"]=9434,
+ ["kcommaaccent"]=311,
+ ["kdotbelow"]=7731,
+ ["keharmenian"]=1412,
+ ["kehiragana"]=12369,
+ ["kekatakana"]=12465,
+ ["kekatakanahalfwidth"]=65401,
+ ["kenarmenian"]=1391,
+ ["kesmallkatakana"]=12534,
+ ["kgreenlandic"]=312,
+ ["khabengali"]=2454,
+ ["khacyrillic"]=1093,
+ ["khadeva"]=2326,
+ ["khagujarati"]=2710,
+ ["khagurmukhi"]=2582,
+ ["khaharabic"]=1582,
+ ["khahfinalarabic"]=65190,
+ ["khahinitialarabic"]=65191,
+ ["khahmedialarabic"]=65192,
+ ["kheicoptic"]=999,
+ ["khhadeva"]=2393,
+ ["khhagurmukhi"]=2649,
+ ["khieukhacirclekorean"]=12920,
+ ["khieukhaparenkorean"]=12824,
+ ["khieukhcirclekorean"]=12906,
+ ["khieukhkorean"]=12619,
+ ["khieukhparenkorean"]=12810,
+ ["khokhaithai"]=3586,
+ ["khokhonthai"]=3589,
+ ["khokhuatthai"]=3587,
+ ["khokhwaithai"]=3588,
+ ["khomutthai"]=3675,
+ ["khook"]=409,
+ ["khorakhangthai"]=3590,
+ ["khzsquare"]=13201,
+ ["kihiragana"]=12365,
+ ["kikatakana"]=12461,
+ ["kikatakanahalfwidth"]=65399,
+ ["kiroguramusquare"]=13077,
+ ["kiromeetorusquare"]=13078,
+ ["kirosquare"]=13076,
+ ["kiyeokacirclekorean"]=12910,
+ ["kiyeokaparenkorean"]=12814,
+ ["kiyeokcirclekorean"]=12896,
+ ["kiyeokkorean"]=12593,
+ ["kiyeokparenkorean"]=12800,
+ ["kiyeoksioskorean"]=12595,
+ ["kjecyrillic"]=1116,
+ ["klinebelow"]=7733,
+ ["klsquare"]=13208,
+ ["kmcubedsquare"]=13222,
+ ["kmonospace"]=65355,
+ ["kmsquaredsquare"]=13218,
+ ["kohiragana"]=12371,
+ ["kohmsquare"]=13248,
+ ["kokaithai"]=3585,
+ ["kokatakana"]=12467,
+ ["kokatakanahalfwidth"]=65402,
+ ["kooposquare"]=13086,
+ ["koppacyrillic"]=1153,
+ ["koreanstandardsymbol"]=12927,
+ ["koroniscmb"]=835,
+ ["kparen"]=9382,
+ ["kpasquare"]=13226,
+ ["ksicyrillic"]=1135,
+ ["ktsquare"]=13263,
+ ["kturned"]=670,
+ ["kuhiragana"]=12367,
+ ["kukatakana"]=12463,
+ ["kukatakanahalfwidth"]=65400,
+ ["kvsquare"]=13240,
+ ["kwsquare"]=13246,
+ ["l"]=108,
+ ["labengali"]=2482,
+ ["lacute"]=314,
+ ["ladeva"]=2354,
+ ["lagujarati"]=2738,
+ ["lagurmukhi"]=2610,
+ ["lakkhangyaothai"]=3653,
+ ["lamaleffinalarabic"]=65276,
+ ["lamalefhamzaabovefinalarabic"]=65272,
+ ["lamalefhamzaaboveisolatedarabic"]=65271,
+ ["lamalefhamzabelowfinalarabic"]=65274,
+ ["lamalefhamzabelowisolatedarabic"]=65273,
+ ["lamalefisolatedarabic"]=65275,
+ ["lamalefmaddaabovefinalarabic"]=65270,
+ ["lamalefmaddaaboveisolatedarabic"]=65269,
+ ["lamarabic"]=1604,
+ ["lambda"]=955,
+ ["lambdastroke"]=411,
+ ["lameddageshhebrew"]=64316,
+ ["lamedholamhebrew"]=1500,
+ ["lamfinalarabic"]=65246,
+ ["lamhahinitialarabic"]=64714,
+ ["lamjeeminitialarabic"]=64713,
+ ["lamkhahinitialarabic"]=64715,
+ ["lamlamhehisolatedarabic"]=65010,
+ ["lammedialarabic"]=65248,
+ ["lammeemhahinitialarabic"]=64904,
+ ["lammeeminitialarabic"]=64716,
+ ["lammeemkhahinitialarabic"]=65247,
+ ["largecircle"]=9711,
+ ["lbar"]=410,
+ ["lbelt"]=620,
+ ["lbopomofo"]=12556,
+ ["lcaron"]=318,
+ ["lcircle"]=9435,
+ ["lcircumflexbelow"]=7741,
+ ["lcommaaccent"]=316,
+ ["ldotaccent"]=320,
+ ["ldotbelow"]=7735,
+ ["ldotbelowmacron"]=7737,
+ ["leftangleabovecmb"]=794,
+ ["lefttackbelowcmb"]=792,
+ ["less"]=60,
+ ["lessequal"]=8804,
+ ["lessequalorgreater"]=8922,
+ ["lessmonospace"]=65308,
+ ["lessorequivalent"]=8818,
+ ["lessorgreater"]=8822,
+ ["lessoverequal"]=8806,
+ ["lesssmall"]=65124,
+ ["lezh"]=622,
+ ["lfblock"]=9612,
+ ["lhookretroflex"]=621,
+ ["lira"]=8356,
+ ["liwnarmenian"]=1388,
+ ["lj"]=457,
+ ["ljecyrillic"]=1113,
+ ["lladeva"]=2355,
+ ["llagujarati"]=2739,
+ ["llinebelow"]=7739,
+ ["llladeva"]=2356,
+ ["llvocalicbengali"]=2529,
+ ["llvocalicdeva"]=2401,
+ ["llvocalicvowelsignbengali"]=2531,
+ ["llvocalicvowelsigndeva"]=2403,
+ ["lmiddletilde"]=619,
+ ["lmonospace"]=65356,
+ ["lmsquare"]=13264,
+ ["lochulathai"]=3628,
+ ["logicaland"]=8743,
+ ["logicalnot"]=172,
+ ["logicalor"]=8744,
+ ["lolingthai"]=3621,
+ ["lowlinecenterline"]=65102,
+ ["lowlinecmb"]=818,
+ ["lowlinedashed"]=65101,
+ ["lozenge"]=9674,
+ ["lparen"]=9383,
+ ["lslash"]=322,
+ ["lsquare"]=8467,
+ ["luthai"]=3622,
+ ["lvocalicbengali"]=2444,
+ ["lvocalicdeva"]=2316,
+ ["lvocalicvowelsignbengali"]=2530,
+ ["lvocalicvowelsigndeva"]=2402,
+ ["lxsquare"]=13267,
+ ["m"]=109,
+ ["mabengali"]=2478,
+ ["macron"]=175,
+ ["macronbelowcmb"]=817,
+ ["macroncmb"]=772,
+ ["macronlowmod"]=717,
+ ["macronmonospace"]=65507,
+ ["macute"]=7743,
+ ["madeva"]=2350,
+ ["magujarati"]=2734,
+ ["magurmukhi"]=2606,
+ ["mahapakhlefthebrew"]=1444,
+ ["mahiragana"]=12414,
+ ["maichattawathai"]=3659,
+ ["maiekthai"]=3656,
+ ["maihanakatthai"]=3633,
+ ["maitaikhuthai"]=3655,
+ ["maithothai"]=3657,
+ ["maitrithai"]=3658,
+ ["maiyamokthai"]=3654,
+ ["makatakana"]=12510,
+ ["makatakanahalfwidth"]=65423,
+ ["mansyonsquare"]=13127,
+ ["maqafhebrew"]=1470,
+ ["mars"]=9794,
+ ["masoracirclehebrew"]=1455,
+ ["masquare"]=13187,
+ ["mbopomofo"]=12551,
+ ["mbsquare"]=13268,
+ ["mcircle"]=9436,
+ ["mcubedsquare"]=13221,
+ ["mdotaccent"]=7745,
+ ["mdotbelow"]=7747,
+ ["meemarabic"]=1605,
+ ["meemfinalarabic"]=65250,
+ ["meeminitialarabic"]=65251,
+ ["meemmedialarabic"]=65252,
+ ["meemmeeminitialarabic"]=64721,
+ ["meemmeemisolatedarabic"]=64584,
+ ["meetorusquare"]=13133,
+ ["mehiragana"]=12417,
+ ["meizierasquare"]=13182,
+ ["mekatakana"]=12513,
+ ["mekatakanahalfwidth"]=65426,
+ ["memdageshhebrew"]=64318,
+ ["memhebrew"]=1502,
+ ["menarmenian"]=1396,
+ ["merkhakefulalefthebrew"]=1446,
+ ["merkhalefthebrew"]=1445,
+ ["mhook"]=625,
+ ["mhzsquare"]=13202,
+ ["middledotkatakanahalfwidth"]=65381,
+ ["mieumacirclekorean"]=12914,
+ ["mieumaparenkorean"]=12818,
+ ["mieumcirclekorean"]=12900,
+ ["mieumkorean"]=12609,
+ ["mieumpansioskorean"]=12656,
+ ["mieumparenkorean"]=12804,
+ ["mieumpieupkorean"]=12654,
+ ["mieumsioskorean"]=12655,
+ ["mihiragana"]=12415,
+ ["mikatakana"]=12511,
+ ["mikatakanahalfwidth"]=65424,
+ ["minus"]=8722,
+ ["minusbelowcmb"]=800,
+ ["minuscircle"]=8854,
+ ["minusmod"]=727,
+ ["minusplus"]=8723,
+ ["minute"]=8242,
+ ["miribaarusquare"]=13130,
+ ["mirisquare"]=13129,
+ ["mlonglegturned"]=624,
+ ["mlsquare"]=13206,
+ ["mmcubedsquare"]=13219,
+ ["mmonospace"]=65357,
+ ["mmsquaredsquare"]=13215,
+ ["mohiragana"]=12418,
+ ["mohmsquare"]=13249,
+ ["mokatakana"]=12514,
+ ["mokatakanahalfwidth"]=65427,
+ ["molsquare"]=13270,
+ ["momathai"]=3617,
+ ["moverssquare"]=13223,
+ ["moverssquaredsquare"]=13224,
+ ["mparen"]=9384,
+ ["mpasquare"]=13227,
+ ["mssquare"]=13235,
+ ["mturned"]=623,
+ ["mu1"]=181,
+ ["muasquare"]=13186,
+ ["muchgreater"]=8811,
+ ["muchless"]=8810,
+ ["mufsquare"]=13196,
+ ["mugreek"]=956,
+ ["mugsquare"]=13197,
+ ["muhiragana"]=12416,
+ ["mukatakana"]=12512,
+ ["mukatakanahalfwidth"]=65425,
+ ["mulsquare"]=13205,
+ ["multiply"]=215,
+ ["mumsquare"]=13211,
+ ["munahlefthebrew"]=1443,
+ ["musicalnote"]=9834,
+ ["musicalnotedbl"]=9835,
+ ["musicflatsign"]=9837,
+ ["musicsharpsign"]=9839,
+ ["mussquare"]=13234,
+ ["muvsquare"]=13238,
+ ["muwsquare"]=13244,
+ ["mvmegasquare"]=13241,
+ ["mvsquare"]=13239,
+ ["mwmegasquare"]=13247,
+ ["mwsquare"]=13245,
+ ["n"]=110,
+ ["nabengali"]=2472,
+ ["nabla"]=8711,
+ ["nacute"]=324,
+ ["nadeva"]=2344,
+ ["nagujarati"]=2728,
+ ["nagurmukhi"]=2600,
+ ["nahiragana"]=12394,
+ ["nakatakana"]=12490,
+ ["nakatakanahalfwidth"]=65413,
+ ["nasquare"]=13185,
+ ["nbopomofo"]=12555,
+ ["ncaron"]=328,
+ ["ncircle"]=9437,
+ ["ncircumflexbelow"]=7755,
+ ["ncommaaccent"]=326,
+ ["ndotaccent"]=7749,
+ ["ndotbelow"]=7751,
+ ["nehiragana"]=12397,
+ ["nekatakana"]=12493,
+ ["nekatakanahalfwidth"]=65416,
+ ["nfsquare"]=13195,
+ ["ngabengali"]=2457,
+ ["ngadeva"]=2329,
+ ["ngagujarati"]=2713,
+ ["ngagurmukhi"]=2585,
+ ["ngonguthai"]=3591,
+ ["nhiragana"]=12435,
+ ["nhookleft"]=626,
+ ["nhookretroflex"]=627,
+ ["nieunacirclekorean"]=12911,
+ ["nieunaparenkorean"]=12815,
+ ["nieuncieuckorean"]=12597,
+ ["nieuncirclekorean"]=12897,
+ ["nieunhieuhkorean"]=12598,
+ ["nieunkorean"]=12596,
+ ["nieunpansioskorean"]=12648,
+ ["nieunparenkorean"]=12801,
+ ["nieunsioskorean"]=12647,
+ ["nieuntikeutkorean"]=12646,
+ ["nihiragana"]=12395,
+ ["nikatakana"]=12491,
+ ["nikatakanahalfwidth"]=65414,
+ ["nikhahitthai"]=3661,
+ ["nine"]=57,
+ ["ninebengali"]=2543,
+ ["ninecircle"]=9320,
+ ["ninecircleinversesansserif"]=10130,
+ ["ninedeva"]=2415,
+ ["ninegujarati"]=2799,
+ ["ninegurmukhi"]=2671,
+ ["ninehackarabic"]=1641,
+ ["ninehangzhou"]=12329,
+ ["nineideographicparen"]=12840,
+ ["nineinferior"]=8329,
+ ["ninemonospace"]=65305,
+ ["nineparen"]=9340,
+ ["nineperiod"]=9360,
+ ["ninepersian"]=1785,
+ ["nineroman"]=8568,
+ ["ninesuperior"]=8313,
+ ["nineteencircle"]=9330,
+ ["nineteenparen"]=9350,
+ ["nineteenperiod"]=9370,
+ ["ninethai"]=3673,
+ ["nj"]=460,
+ ["njecyrillic"]=1114,
+ ["nkatakana"]=12531,
+ ["nkatakanahalfwidth"]=65437,
+ ["nlegrightlong"]=414,
+ ["nlinebelow"]=7753,
+ ["nmonospace"]=65358,
+ ["nmsquare"]=13210,
+ ["nnabengali"]=2467,
+ ["nnadeva"]=2339,
+ ["nnagujarati"]=2723,
+ ["nnagurmukhi"]=2595,
+ ["nnnadeva"]=2345,
+ ["nohiragana"]=12398,
+ ["nokatakana"]=12494,
+ ["nokatakanahalfwidth"]=65417,
+ ["nonbreakingspace"]=160,
+ ["nonenthai"]=3603,
+ ["nonuthai"]=3609,
+ ["noonarabic"]=1606,
+ ["noonfinalarabic"]=65254,
+ ["noonghunnaarabic"]=1722,
+ ["noonghunnafinalarabic"]=64415,
+ ["nooninitialarabic"]=65255,
+ ["noonjeeminitialarabic"]=64722,
+ ["noonjeemisolatedarabic"]=64587,
+ ["noonmedialarabic"]=65256,
+ ["noonmeeminitialarabic"]=64725,
+ ["noonmeemisolatedarabic"]=64590,
+ ["noonnoonfinalarabic"]=64653,
+ ["notcontains"]=8716,
+ ["notelementof"]=8713,
+ ["notequal"]=8800,
+ ["notgreater"]=8815,
+ ["notgreaternorequal"]=8817,
+ ["notgreaternorless"]=8825,
+ ["notidentical"]=8802,
+ ["notless"]=8814,
+ ["notlessnorequal"]=8816,
+ ["notparallel"]=8742,
+ ["notprecedes"]=8832,
+ ["notsubset"]=8836,
+ ["notsucceeds"]=8833,
+ ["notsuperset"]=8837,
+ ["nowarmenian"]=1398,
+ ["nparen"]=9385,
+ ["nssquare"]=13233,
+ ["nsuperior"]=8319,
+ ["ntilde"]=241,
+ ["nu"]=957,
+ ["nuhiragana"]=12396,
+ ["nukatakana"]=12492,
+ ["nukatakanahalfwidth"]=65415,
+ ["nuktabengali"]=2492,
+ ["nuktadeva"]=2364,
+ ["nuktagujarati"]=2748,
+ ["nuktagurmukhi"]=2620,
+ ["numbersign"]=35,
+ ["numbersignmonospace"]=65283,
+ ["numbersignsmall"]=65119,
+ ["numeralsigngreek"]=884,
+ ["numeralsignlowergreek"]=885,
+ ["numero"]=8470,
+ ["nundageshhebrew"]=64320,
+ ["nunhebrew"]=1504,
+ ["nvsquare"]=13237,
+ ["nwsquare"]=13243,
+ ["nyabengali"]=2462,
+ ["nyadeva"]=2334,
+ ["nyagujarati"]=2718,
+ ["nyagurmukhi"]=2590,
+ ["o"]=111,
+ ["oacute"]=243,
+ ["oangthai"]=3629,
+ ["obarred"]=629,
+ ["obarredcyrillic"]=1257,
+ ["obarreddieresiscyrillic"]=1259,
+ ["obengali"]=2451,
+ ["obopomofo"]=12571,
+ ["obreve"]=335,
+ ["ocandradeva"]=2321,
+ ["ocandragujarati"]=2705,
+ ["ocandravowelsigndeva"]=2377,
+ ["ocandravowelsigngujarati"]=2761,
+ ["ocaron"]=466,
+ ["ocircle"]=9438,
+ ["ocircumflex"]=244,
+ ["ocircumflexacute"]=7889,
+ ["ocircumflexdotbelow"]=7897,
+ ["ocircumflexgrave"]=7891,
+ ["ocircumflexhookabove"]=7893,
+ ["ocircumflextilde"]=7895,
+ ["ocyrillic"]=1086,
+ ["odblgrave"]=525,
+ ["odeva"]=2323,
+ ["odieresis"]=246,
+ ["odieresiscyrillic"]=1255,
+ ["odotbelow"]=7885,
+ ["oe"]=339,
+ ["oekorean"]=12634,
+ ["ogonek"]=731,
+ ["ogonekcmb"]=808,
+ ["ograve"]=242,
+ ["ogujarati"]=2707,
+ ["oharmenian"]=1413,
+ ["ohiragana"]=12362,
+ ["ohookabove"]=7887,
+ ["ohorn"]=417,
+ ["ohornacute"]=7899,
+ ["ohorndotbelow"]=7907,
+ ["ohorngrave"]=7901,
+ ["ohornhookabove"]=7903,
+ ["ohorntilde"]=7905,
+ ["ohungarumlaut"]=337,
+ ["oi"]=419,
+ ["oinvertedbreve"]=527,
+ ["okatakana"]=12458,
+ ["okatakanahalfwidth"]=65397,
+ ["okorean"]=12631,
+ ["olehebrew"]=1451,
+ ["omacron"]=333,
+ ["omacronacute"]=7763,
+ ["omacrongrave"]=7761,
+ ["omdeva"]=2384,
+ ["omega"]=969,
+ ["omegacyrillic"]=1121,
+ ["omegalatinclosed"]=631,
+ ["omegaroundcyrillic"]=1147,
+ ["omegatitlocyrillic"]=1149,
+ ["omegatonos"]=974,
+ ["omgujarati"]=2768,
+ ["omicron"]=959,
+ ["omicrontonos"]=972,
+ ["omonospace"]=65359,
+ ["one"]=49,
+ ["onebengali"]=2535,
+ ["onecircle"]=9312,
+ ["onecircleinversesansserif"]=10122,
+ ["onedeva"]=2407,
+ ["onedotenleader"]=8228,
+ ["oneeighth"]=8539,
+ ["onegujarati"]=2791,
+ ["onegurmukhi"]=2663,
+ ["onehackarabic"]=1633,
+ ["onehalf"]=189,
+ ["onehangzhou"]=12321,
+ ["oneideographicparen"]=12832,
+ ["oneinferior"]=8321,
+ ["onemonospace"]=65297,
+ ["onenumeratorbengali"]=2548,
+ ["oneparen"]=9332,
+ ["oneperiod"]=9352,
+ ["onepersian"]=1777,
+ ["onequarter"]=188,
+ ["oneroman"]=8560,
+ ["onesuperior"]=185,
+ ["onethai"]=3665,
+ ["onethird"]=8531,
+ ["oogonek"]=491,
+ ["oogonekmacron"]=493,
+ ["oogurmukhi"]=2579,
+ ["oomatragurmukhi"]=2635,
+ ["oopen"]=596,
+ ["oparen"]=9386,
+ ["option"]=8997,
+ ["ordfeminine"]=170,
+ ["ordmasculine"]=186,
+ ["oshortdeva"]=2322,
+ ["oshortvowelsigndeva"]=2378,
+ ["oslash"]=248,
+ ["osmallhiragana"]=12361,
+ ["osmallkatakana"]=12457,
+ ["osmallkatakanahalfwidth"]=65387,
+ ["ostrokeacute"]=511,
+ ["otcyrillic"]=1151,
+ ["otilde"]=245,
+ ["otildeacute"]=7757,
+ ["otildedieresis"]=7759,
+ ["oubopomofo"]=12577,
+ ["overline"]=8254,
+ ["overlinecenterline"]=65098,
+ ["overlinecmb"]=773,
+ ["overlinedashed"]=65097,
+ ["overlinedblwavy"]=65100,
+ ["overlinewavy"]=65099,
+ ["ovowelsignbengali"]=2507,
+ ["ovowelsigndeva"]=2379,
+ ["ovowelsigngujarati"]=2763,
+ ["p"]=112,
+ ["paampssquare"]=13184,
+ ["paasentosquare"]=13099,
+ ["pabengali"]=2474,
+ ["pacute"]=7765,
+ ["padeva"]=2346,
+ ["pagedown"]=8671,
+ ["pageup"]=8670,
+ ["pagujarati"]=2730,
+ ["pagurmukhi"]=2602,
+ ["pahiragana"]=12401,
+ ["paiyannoithai"]=3631,
+ ["pakatakana"]=12497,
+ ["palatalizationcyrilliccmb"]=1156,
+ ["palochkacyrillic"]=1216,
+ ["pansioskorean"]=12671,
+ ["paragraph"]=182,
+ ["parallel"]=8741,
+ ["parenleft"]=40,
+ ["parenleftaltonearabic"]=64830,
+ ["parenleftinferior"]=8333,
+ ["parenleftmonospace"]=65288,
+ ["parenleftsmall"]=65113,
+ ["parenleftsuperior"]=8317,
+ ["parenleftvertical"]=65077,
+ ["parenright"]=41,
+ ["parenrightaltonearabic"]=64831,
+ ["parenrightinferior"]=8334,
+ ["parenrightmonospace"]=65289,
+ ["parenrightsmall"]=65114,
+ ["parenrightsuperior"]=8318,
+ ["parenrightvertical"]=65078,
+ ["partialdiff"]=8706,
+ ["paseqhebrew"]=1472,
+ ["pashtahebrew"]=1433,
+ ["pasquare"]=13225,
+ ["patahwidehebrew"]=1463,
+ ["pazerhebrew"]=1441,
+ ["pbopomofo"]=12550,
+ ["pcircle"]=9439,
+ ["pdotaccent"]=7767,
+ ["pecyrillic"]=1087,
+ ["pedageshhebrew"]=64324,
+ ["peezisquare"]=13115,
+ ["pefinaldageshhebrew"]=64323,
+ ["peharabic"]=1662,
+ ["peharmenian"]=1402,
+ ["pehebrew"]=1508,
+ ["pehfinalarabic"]=64343,
+ ["pehinitialarabic"]=64344,
+ ["pehiragana"]=12410,
+ ["pehmedialarabic"]=64345,
+ ["pekatakana"]=12506,
+ ["pemiddlehookcyrillic"]=1191,
+ ["perafehebrew"]=64334,
+ ["percent"]=37,
+ ["percentarabic"]=1642,
+ ["percentmonospace"]=65285,
+ ["percentsmall"]=65130,
+ ["period"]=46,
+ ["periodarmenian"]=1417,
+ ["periodcentered"]=183,
+ ["periodhalfwidth"]=65377,
+ ["periodmonospace"]=65294,
+ ["periodsmall"]=65106,
+ ["perispomenigreekcmb"]=834,
+ ["perpendicular"]=8869,
+ ["perthousand"]=8240,
+ ["peseta"]=8359,
+ ["pfsquare"]=13194,
+ ["phabengali"]=2475,
+ ["phadeva"]=2347,
+ ["phagujarati"]=2731,
+ ["phagurmukhi"]=2603,
+ ["phi"]=966,
+ ["phieuphacirclekorean"]=12922,
+ ["phieuphaparenkorean"]=12826,
+ ["phieuphcirclekorean"]=12908,
+ ["phieuphkorean"]=12621,
+ ["phieuphparenkorean"]=12812,
+ ["philatin"]=632,
+ ["phinthuthai"]=3642,
+ ["phisymbolgreek"]=981,
+ ["phook"]=421,
+ ["phophanthai"]=3614,
+ ["phophungthai"]=3612,
+ ["phosamphaothai"]=3616,
+ ["pi"]=960,
+ ["pieupacirclekorean"]=12915,
+ ["pieupaparenkorean"]=12819,
+ ["pieupcieuckorean"]=12662,
+ ["pieupcirclekorean"]=12901,
+ ["pieupkiyeokkorean"]=12658,
+ ["pieupkorean"]=12610,
+ ["pieupparenkorean"]=12805,
+ ["pieupsioskiyeokkorean"]=12660,
+ ["pieupsioskorean"]=12612,
+ ["pieupsiostikeutkorean"]=12661,
+ ["pieupthieuthkorean"]=12663,
+ ["pieuptikeutkorean"]=12659,
+ ["pihiragana"]=12404,
+ ["pikatakana"]=12500,
+ ["pisymbolgreek"]=982,
+ ["piwrarmenian"]=1411,
+ ["plus"]=43,
+ ["plusbelowcmb"]=799,
+ ["pluscircle"]=8853,
+ ["plusminus"]=177,
+ ["plusmod"]=726,
+ ["plusmonospace"]=65291,
+ ["plussmall"]=65122,
+ ["plussuperior"]=8314,
+ ["pmonospace"]=65360,
+ ["pmsquare"]=13272,
+ ["pohiragana"]=12413,
+ ["pointingindexdownwhite"]=9759,
+ ["pointingindexleftwhite"]=9756,
+ ["pointingindexrightwhite"]=9758,
+ ["pointingindexupwhite"]=9757,
+ ["pokatakana"]=12509,
+ ["poplathai"]=3611,
+ ["postalmark"]=12306,
+ ["postalmarkface"]=12320,
+ ["pparen"]=9387,
+ ["precedes"]=8826,
+ ["prescription"]=8478,
+ ["primemod"]=697,
+ ["primereversed"]=8245,
+ ["product"]=8719,
+ ["projective"]=8965,
+ ["prolongedkana"]=12540,
+ ["propellor"]=8984,
+ ["proportion"]=8759,
+ ["proportional"]=8733,
+ ["psi"]=968,
+ ["psicyrillic"]=1137,
+ ["psilipneumatacyrilliccmb"]=1158,
+ ["pssquare"]=13232,
+ ["puhiragana"]=12407,
+ ["pukatakana"]=12503,
+ ["pvsquare"]=13236,
+ ["pwsquare"]=13242,
+ ["q"]=113,
+ ["qadeva"]=2392,
+ ["qadmahebrew"]=1448,
+ ["qafarabic"]=1602,
+ ["qaffinalarabic"]=65238,
+ ["qafinitialarabic"]=65239,
+ ["qafmedialarabic"]=65240,
+ ["qamatswidehebrew"]=1464,
+ ["qarneyparahebrew"]=1439,
+ ["qbopomofo"]=12561,
+ ["qcircle"]=9440,
+ ["qhook"]=672,
+ ["qmonospace"]=65361,
+ ["qofdageshhebrew"]=64327,
+ ["qoftserehebrew"]=1511,
+ ["qparen"]=9388,
+ ["quarternote"]=9833,
+ ["qubutswidehebrew"]=1467,
+ ["question"]=63,
+ ["questionarabic"]=1567,
+ ["questionarmenian"]=1374,
+ ["questiondown"]=191,
+ ["questiongreek"]=894,
+ ["questionmonospace"]=65311,
+ ["quotedbl"]=34,
+ ["quotedblbase"]=8222,
+ ["quotedblleft"]=8220,
+ ["quotedblmonospace"]=65282,
+ ["quotedblprime"]=12318,
+ ["quotedblprimereversed"]=12317,
+ ["quotedblright"]=8221,
+ ["quoteleft"]=8216,
+ ["quotereversed"]=8219,
+ ["quoteright"]=8217,
+ ["quoterightn"]=329,
+ ["quotesinglbase"]=8218,
+ ["quotesingle"]=39,
+ ["quotesinglemonospace"]=65287,
+ ["r"]=114,
+ ["raarmenian"]=1404,
+ ["rabengali"]=2480,
+ ["racute"]=341,
+ ["radeva"]=2352,
+ ["radical"]=8730,
+ ["radoverssquare"]=13230,
+ ["radoverssquaredsquare"]=13231,
+ ["radsquare"]=13229,
+ ["rafehebrew"]=1471,
+ ["ragujarati"]=2736,
+ ["ragurmukhi"]=2608,
+ ["rahiragana"]=12425,
+ ["rakatakana"]=12521,
+ ["rakatakanahalfwidth"]=65431,
+ ["ralowerdiagonalbengali"]=2545,
+ ["ramiddlediagonalbengali"]=2544,
+ ["ramshorn"]=612,
+ ["ratio"]=8758,
+ ["rbopomofo"]=12566,
+ ["rcaron"]=345,
+ ["rcircle"]=9441,
+ ["rcommaaccent"]=343,
+ ["rdblgrave"]=529,
+ ["rdotaccent"]=7769,
+ ["rdotbelow"]=7771,
+ ["rdotbelowmacron"]=7773,
+ ["referencemark"]=8251,
+ ["registered"]=174,
+ ["reharmenian"]=1408,
+ ["rehfinalarabic"]=65198,
+ ["rehiragana"]=12428,
+ ["rehyehaleflamarabic"]=1585,
+ ["rekatakana"]=12524,
+ ["rekatakanahalfwidth"]=65434,
+ ["reshdageshhebrew"]=64328,
+ ["reshtserehebrew"]=1512,
+ ["reversedtilde"]=8765,
+ ["reviamugrashhebrew"]=1431,
+ ["revlogicalnot"]=8976,
+ ["rfishhook"]=638,
+ ["rfishhookreversed"]=639,
+ ["rhabengali"]=2525,
+ ["rhadeva"]=2397,
+ ["rho"]=961,
+ ["rhook"]=637,
+ ["rhookturned"]=635,
+ ["rhookturnedsuperior"]=693,
+ ["rhosymbolgreek"]=1009,
+ ["rhotichookmod"]=734,
+ ["rieulacirclekorean"]=12913,
+ ["rieulaparenkorean"]=12817,
+ ["rieulcirclekorean"]=12899,
+ ["rieulhieuhkorean"]=12608,
+ ["rieulkiyeokkorean"]=12602,
+ ["rieulkiyeoksioskorean"]=12649,
+ ["rieulkorean"]=12601,
+ ["rieulmieumkorean"]=12603,
+ ["rieulpansioskorean"]=12652,
+ ["rieulparenkorean"]=12803,
+ ["rieulphieuphkorean"]=12607,
+ ["rieulpieupkorean"]=12604,
+ ["rieulpieupsioskorean"]=12651,
+ ["rieulsioskorean"]=12605,
+ ["rieulthieuthkorean"]=12606,
+ ["rieultikeutkorean"]=12650,
+ ["rieulyeorinhieuhkorean"]=12653,
+ ["rightangle"]=8735,
+ ["righttackbelowcmb"]=793,
+ ["righttriangle"]=8895,
+ ["rihiragana"]=12426,
+ ["rikatakana"]=12522,
+ ["rikatakanahalfwidth"]=65432,
+ ["ring"]=730,
+ ["ringbelowcmb"]=805,
+ ["ringcmb"]=778,
+ ["ringhalfleft"]=703,
+ ["ringhalfleftarmenian"]=1369,
+ ["ringhalfleftbelowcmb"]=796,
+ ["ringhalfleftcentered"]=723,
+ ["ringhalfright"]=702,
+ ["ringhalfrightbelowcmb"]=825,
+ ["ringhalfrightcentered"]=722,
+ ["rinvertedbreve"]=531,
+ ["rittorusquare"]=13137,
+ ["rlinebelow"]=7775,
+ ["rlongleg"]=636,
+ ["rlonglegturned"]=634,
+ ["rmonospace"]=65362,
+ ["rohiragana"]=12429,
+ ["rokatakana"]=12525,
+ ["rokatakanahalfwidth"]=65435,
+ ["roruathai"]=3619,
+ ["rparen"]=9389,
+ ["rrabengali"]=2524,
+ ["rradeva"]=2353,
+ ["rragurmukhi"]=2652,
+ ["rreharabic"]=1681,
+ ["rrehfinalarabic"]=64397,
+ ["rrvocalicbengali"]=2528,
+ ["rrvocalicdeva"]=2400,
+ ["rrvocalicgujarati"]=2784,
+ ["rrvocalicvowelsignbengali"]=2500,
+ ["rrvocalicvowelsigndeva"]=2372,
+ ["rrvocalicvowelsigngujarati"]=2756,
+ ["rtblock"]=9616,
+ ["rturned"]=633,
+ ["rturnedsuperior"]=692,
+ ["ruhiragana"]=12427,
+ ["rukatakana"]=12523,
+ ["rukatakanahalfwidth"]=65433,
+ ["rupeemarkbengali"]=2546,
+ ["rupeesignbengali"]=2547,
+ ["ruthai"]=3620,
+ ["rvocalicbengali"]=2443,
+ ["rvocalicdeva"]=2315,
+ ["rvocalicgujarati"]=2699,
+ ["rvocalicvowelsignbengali"]=2499,
+ ["rvocalicvowelsigndeva"]=2371,
+ ["rvocalicvowelsigngujarati"]=2755,
+ ["s"]=115,
+ ["sabengali"]=2488,
+ ["sacute"]=347,
+ ["sacutedotaccent"]=7781,
+ ["sadarabic"]=1589,
+ ["sadeva"]=2360,
+ ["sadfinalarabic"]=65210,
+ ["sadinitialarabic"]=65211,
+ ["sadmedialarabic"]=65212,
+ ["sagujarati"]=2744,
+ ["sagurmukhi"]=2616,
+ ["sahiragana"]=12373,
+ ["sakatakana"]=12469,
+ ["sakatakanahalfwidth"]=65403,
+ ["sallallahoualayhewasallamarabic"]=65018,
+ ["samekhdageshhebrew"]=64321,
+ ["samekhhebrew"]=1505,
+ ["saraaathai"]=3634,
+ ["saraaethai"]=3649,
+ ["saraaimaimalaithai"]=3652,
+ ["saraaimaimuanthai"]=3651,
+ ["saraamthai"]=3635,
+ ["saraathai"]=3632,
+ ["saraethai"]=3648,
+ ["saraiithai"]=3637,
+ ["saraithai"]=3636,
+ ["saraothai"]=3650,
+ ["saraueethai"]=3639,
+ ["sarauethai"]=3638,
+ ["sarauthai"]=3640,
+ ["sarauuthai"]=3641,
+ ["sbopomofo"]=12569,
+ ["scaron"]=353,
+ ["scarondotaccent"]=7783,
+ ["scedilla"]=351,
+ ["schwa"]=601,
+ ["schwacyrillic"]=1241,
+ ["schwadieresiscyrillic"]=1243,
+ ["schwahook"]=602,
+ ["scircle"]=9442,
+ ["scircumflex"]=349,
+ ["scommaaccent"]=537,
+ ["sdotaccent"]=7777,
+ ["sdotbelow"]=7779,
+ ["sdotbelowdotaccent"]=7785,
+ ["seagullbelowcmb"]=828,
+ ["second"]=8243,
+ ["secondtonechinese"]=714,
+ ["section"]=167,
+ ["seenarabic"]=1587,
+ ["seenfinalarabic"]=65202,
+ ["seeninitialarabic"]=65203,
+ ["seenmedialarabic"]=65204,
+ ["segoltahebrew"]=1426,
+ ["segolwidehebrew"]=1462,
+ ["seharmenian"]=1405,
+ ["sehiragana"]=12379,
+ ["sekatakana"]=12475,
+ ["sekatakanahalfwidth"]=65406,
+ ["semicolon"]=59,
+ ["semicolonarabic"]=1563,
+ ["semicolonmonospace"]=65307,
+ ["semicolonsmall"]=65108,
+ ["semivoicedmarkkana"]=12444,
+ ["semivoicedmarkkanahalfwidth"]=65439,
+ ["sentisquare"]=13090,
+ ["sentosquare"]=13091,
+ ["seven"]=55,
+ ["sevenbengali"]=2541,
+ ["sevencircle"]=9318,
+ ["sevencircleinversesansserif"]=10128,
+ ["sevendeva"]=2413,
+ ["seveneighths"]=8542,
+ ["sevengujarati"]=2797,
+ ["sevengurmukhi"]=2669,
+ ["sevenhackarabic"]=1639,
+ ["sevenhangzhou"]=12327,
+ ["sevenideographicparen"]=12838,
+ ["seveninferior"]=8327,
+ ["sevenmonospace"]=65303,
+ ["sevenparen"]=9338,
+ ["sevenperiod"]=9358,
+ ["sevenpersian"]=1783,
+ ["sevenroman"]=8566,
+ ["sevensuperior"]=8311,
+ ["seventeencircle"]=9328,
+ ["seventeenparen"]=9348,
+ ["seventeenperiod"]=9368,
+ ["seventhai"]=3671,
+ ["shaarmenian"]=1399,
+ ["shabengali"]=2486,
+ ["shacyrillic"]=1096,
+ ["shaddadammaarabic"]=64609,
+ ["shaddadammatanarabic"]=64606,
+ ["shaddafathaarabic"]=64608,
+ ["shaddafathatanarabic"]=1617,
+ ["shaddakasraarabic"]=64610,
+ ["shaddakasratanarabic"]=64607,
+ ["shadedark"]=9619,
+ ["shadelight"]=9617,
+ ["shademedium"]=9618,
+ ["shadeva"]=2358,
+ ["shagujarati"]=2742,
+ ["shagurmukhi"]=2614,
+ ["shalshelethebrew"]=1427,
+ ["shbopomofo"]=12565,
+ ["shchacyrillic"]=1097,
+ ["sheenarabic"]=1588,
+ ["sheenfinalarabic"]=65206,
+ ["sheeninitialarabic"]=65207,
+ ["sheenmedialarabic"]=65208,
+ ["sheicoptic"]=995,
+ ["sheqelhebrew"]=8362,
+ ["shevawidehebrew"]=1456,
+ ["shhacyrillic"]=1211,
+ ["shimacoptic"]=1005,
+ ["shindageshhebrew"]=64329,
+ ["shindageshshindothebrew"]=64300,
+ ["shindageshsindothebrew"]=64301,
+ ["shindothebrew"]=1473,
+ ["shinhebrew"]=1513,
+ ["shinshindothebrew"]=64298,
+ ["shinsindothebrew"]=64299,
+ ["shook"]=642,
+ ["sigma"]=963,
+ ["sigmafinal"]=962,
+ ["sigmalunatesymbolgreek"]=1010,
+ ["sihiragana"]=12375,
+ ["sikatakana"]=12471,
+ ["sikatakanahalfwidth"]=65404,
+ ["siluqlefthebrew"]=1469,
+ ["sindothebrew"]=1474,
+ ["siosacirclekorean"]=12916,
+ ["siosaparenkorean"]=12820,
+ ["sioscieuckorean"]=12670,
+ ["sioscirclekorean"]=12902,
+ ["sioskiyeokkorean"]=12666,
+ ["sioskorean"]=12613,
+ ["siosnieunkorean"]=12667,
+ ["siosparenkorean"]=12806,
+ ["siospieupkorean"]=12669,
+ ["siostikeutkorean"]=12668,
+ ["six"]=54,
+ ["sixbengali"]=2540,
+ ["sixcircle"]=9317,
+ ["sixcircleinversesansserif"]=10127,
+ ["sixdeva"]=2412,
+ ["sixgujarati"]=2796,
+ ["sixgurmukhi"]=2668,
+ ["sixhackarabic"]=1638,
+ ["sixhangzhou"]=12326,
+ ["sixideographicparen"]=12837,
+ ["sixinferior"]=8326,
+ ["sixmonospace"]=65302,
+ ["sixparen"]=9337,
+ ["sixperiod"]=9357,
+ ["sixpersian"]=1782,
+ ["sixroman"]=8565,
+ ["sixsuperior"]=8310,
+ ["sixteencircle"]=9327,
+ ["sixteencurrencydenominatorbengali"]=2553,
+ ["sixteenparen"]=9347,
+ ["sixteenperiod"]=9367,
+ ["sixthai"]=3670,
+ ["slash"]=47,
+ ["slashmonospace"]=65295,
+ ["slong"]=383,
+ ["slongdotaccent"]=7835,
+ ["smonospace"]=65363,
+ ["sofpasuqhebrew"]=1475,
+ ["softhyphen"]=173,
+ ["softsigncyrillic"]=1100,
+ ["sohiragana"]=12381,
+ ["sokatakana"]=12477,
+ ["sokatakanahalfwidth"]=65407,
+ ["soliduslongoverlaycmb"]=824,
+ ["solidusshortoverlaycmb"]=823,
+ ["sorusithai"]=3625,
+ ["sosalathai"]=3624,
+ ["sosothai"]=3595,
+ ["sosuathai"]=3626,
+ ["space"]=32,
+ ["spadesuitblack"]=9824,
+ ["spadesuitwhite"]=9828,
+ ["sparen"]=9390,
+ ["squarebelowcmb"]=827,
+ ["squarecc"]=13252,
+ ["squarecm"]=13213,
+ ["squarediagonalcrosshatchfill"]=9641,
+ ["squarehorizontalfill"]=9636,
+ ["squarekg"]=13199,
+ ["squarekm"]=13214,
+ ["squarekmcapital"]=13262,
+ ["squareln"]=13265,
+ ["squarelog"]=13266,
+ ["squaremg"]=13198,
+ ["squaremil"]=13269,
+ ["squaremm"]=13212,
+ ["squaremsquared"]=13217,
+ ["squareorthogonalcrosshatchfill"]=9638,
+ ["squareupperlefttolowerrightfill"]=9639,
+ ["squareupperrighttolowerleftfill"]=9640,
+ ["squareverticalfill"]=9637,
+ ["squarewhitewithsmallblack"]=9635,
+ ["srsquare"]=13275,
+ ["ssabengali"]=2487,
+ ["ssadeva"]=2359,
+ ["ssagujarati"]=2743,
+ ["ssangcieuckorean"]=12617,
+ ["ssanghieuhkorean"]=12677,
+ ["ssangieungkorean"]=12672,
+ ["ssangkiyeokkorean"]=12594,
+ ["ssangnieunkorean"]=12645,
+ ["ssangpieupkorean"]=12611,
+ ["ssangsioskorean"]=12614,
+ ["ssangtikeutkorean"]=12600,
+ ["sterling"]=163,
+ ["sterlingmonospace"]=65505,
+ ["strokelongoverlaycmb"]=822,
+ ["strokeshortoverlaycmb"]=821,
+ ["subset"]=8834,
+ ["subsetnotequal"]=8842,
+ ["subsetorequal"]=8838,
+ ["succeeds"]=8827,
+ ["suchthat"]=8715,
+ ["suhiragana"]=12377,
+ ["sukatakana"]=12473,
+ ["sukatakanahalfwidth"]=65405,
+ ["sukunarabic"]=1618,
+ ["summation"]=8721,
+ ["sun"]=9788,
+ ["superset"]=8835,
+ ["supersetnotequal"]=8843,
+ ["supersetorequal"]=8839,
+ ["svsquare"]=13276,
+ ["syouwaerasquare"]=13180,
+ ["t"]=116,
+ ["tabengali"]=2468,
+ ["tackdown"]=8868,
+ ["tackleft"]=8867,
+ ["tadeva"]=2340,
+ ["tagujarati"]=2724,
+ ["tagurmukhi"]=2596,
+ ["taharabic"]=1591,
+ ["tahfinalarabic"]=65218,
+ ["tahinitialarabic"]=65219,
+ ["tahiragana"]=12383,
+ ["tahmedialarabic"]=65220,
+ ["taisyouerasquare"]=13181,
+ ["takatakana"]=12479,
+ ["takatakanahalfwidth"]=65408,
+ ["tatweelarabic"]=1600,
+ ["tau"]=964,
+ ["tavdageshhebrew"]=64330,
+ ["tavhebrew"]=1514,
+ ["tbar"]=359,
+ ["tbopomofo"]=12554,
+ ["tcaron"]=357,
+ ["tccurl"]=680,
+ ["tcheharabic"]=1670,
+ ["tchehfinalarabic"]=64379,
+ ["tchehmedialarabic"]=64381,
+ ["tchehmeeminitialarabic"]=64380,
+ ["tcircle"]=9443,
+ ["tcircumflexbelow"]=7793,
+ ["tcommaaccent"]=355,
+ ["tdieresis"]=7831,
+ ["tdotaccent"]=7787,
+ ["tdotbelow"]=7789,
+ ["tecyrillic"]=1090,
+ ["tedescendercyrillic"]=1197,
+ ["teharabic"]=1578,
+ ["tehfinalarabic"]=65174,
+ ["tehhahinitialarabic"]=64674,
+ ["tehhahisolatedarabic"]=64524,
+ ["tehinitialarabic"]=65175,
+ ["tehiragana"]=12390,
+ ["tehjeeminitialarabic"]=64673,
+ ["tehjeemisolatedarabic"]=64523,
+ ["tehmarbutaarabic"]=1577,
+ ["tehmarbutafinalarabic"]=65172,
+ ["tehmedialarabic"]=65176,
+ ["tehmeeminitialarabic"]=64676,
+ ["tehmeemisolatedarabic"]=64526,
+ ["tehnoonfinalarabic"]=64627,
+ ["tekatakana"]=12486,
+ ["tekatakanahalfwidth"]=65411,
+ ["telephone"]=8481,
+ ["telephoneblack"]=9742,
+ ["telishagedolahebrew"]=1440,
+ ["telishaqetanahebrew"]=1449,
+ ["tencircle"]=9321,
+ ["tenideographicparen"]=12841,
+ ["tenparen"]=9341,
+ ["tenperiod"]=9361,
+ ["tenroman"]=8569,
+ ["tesh"]=679,
+ ["tetdageshhebrew"]=64312,
+ ["tethebrew"]=1496,
+ ["tetsecyrillic"]=1205,
+ ["tevirlefthebrew"]=1435,
+ ["thabengali"]=2469,
+ ["thadeva"]=2341,
+ ["thagujarati"]=2725,
+ ["thagurmukhi"]=2597,
+ ["thalarabic"]=1584,
+ ["thalfinalarabic"]=65196,
+ ["thanthakhatthai"]=3660,
+ ["theharabic"]=1579,
+ ["thehfinalarabic"]=65178,
+ ["thehinitialarabic"]=65179,
+ ["thehmedialarabic"]=65180,
+ ["thereexists"]=8707,
+ ["therefore"]=8756,
+ ["theta"]=952,
+ ["thetasymbolgreek"]=977,
+ ["thieuthacirclekorean"]=12921,
+ ["thieuthaparenkorean"]=12825,
+ ["thieuthcirclekorean"]=12907,
+ ["thieuthkorean"]=12620,
+ ["thieuthparenkorean"]=12811,
+ ["thirteencircle"]=9324,
+ ["thirteenparen"]=9344,
+ ["thirteenperiod"]=9364,
+ ["thonangmonthothai"]=3601,
+ ["thook"]=429,
+ ["thophuthaothai"]=3602,
+ ["thorn"]=254,
+ ["thothahanthai"]=3607,
+ ["thothanthai"]=3600,
+ ["thothongthai"]=3608,
+ ["thothungthai"]=3606,
+ ["thousandcyrillic"]=1154,
+ ["thousandsseparatorpersian"]=1644,
+ ["three"]=51,
+ ["threebengali"]=2537,
+ ["threecircle"]=9314,
+ ["threecircleinversesansserif"]=10124,
+ ["threedeva"]=2409,
+ ["threeeighths"]=8540,
+ ["threegujarati"]=2793,
+ ["threegurmukhi"]=2665,
+ ["threehackarabic"]=1635,
+ ["threehangzhou"]=12323,
+ ["threeideographicparen"]=12834,
+ ["threeinferior"]=8323,
+ ["threemonospace"]=65299,
+ ["threenumeratorbengali"]=2550,
+ ["threeparen"]=9334,
+ ["threeperiod"]=9354,
+ ["threepersian"]=1779,
+ ["threequarters"]=190,
+ ["threeroman"]=8562,
+ ["threesuperior"]=179,
+ ["threethai"]=3667,
+ ["thzsquare"]=13204,
+ ["tihiragana"]=12385,
+ ["tikatakana"]=12481,
+ ["tikatakanahalfwidth"]=65409,
+ ["tikeutacirclekorean"]=12912,
+ ["tikeutaparenkorean"]=12816,
+ ["tikeutcirclekorean"]=12898,
+ ["tikeutkorean"]=12599,
+ ["tikeutparenkorean"]=12802,
+ ["tilde"]=732,
+ ["tildebelowcmb"]=816,
+ ["tildecomb"]=771,
+ ["tildedoublecmb"]=864,
+ ["tildeoperator"]=8764,
+ ["tildeoverlaycmb"]=820,
+ ["tildeverticalcmb"]=830,
+ ["timescircle"]=8855,
+ ["tipehalefthebrew"]=1430,
+ ["tippigurmukhi"]=2672,
+ ["titlocyrilliccmb"]=1155,
+ ["tiwnarmenian"]=1407,
+ ["tlinebelow"]=7791,
+ ["tmonospace"]=65364,
+ ["toarmenian"]=1385,
+ ["tohiragana"]=12392,
+ ["tokatakana"]=12488,
+ ["tokatakanahalfwidth"]=65412,
+ ["tonebarextrahighmod"]=741,
+ ["tonebarextralowmod"]=745,
+ ["tonebarhighmod"]=742,
+ ["tonebarlowmod"]=744,
+ ["tonebarmidmod"]=743,
+ ["tonefive"]=445,
+ ["tonesix"]=389,
+ ["tonetwo"]=424,
+ ["tonos"]=900,
+ ["tonsquare"]=13095,
+ ["topatakthai"]=3599,
+ ["tortoiseshellbracketleft"]=12308,
+ ["tortoiseshellbracketleftsmall"]=65117,
+ ["tortoiseshellbracketleftvertical"]=65081,
+ ["tortoiseshellbracketright"]=12309,
+ ["tortoiseshellbracketrightsmall"]=65118,
+ ["tortoiseshellbracketrightvertical"]=65082,
+ ["totaothai"]=3605,
+ ["tpalatalhook"]=427,
+ ["tparen"]=9391,
+ ["trademark"]=8482,
+ ["tretroflexhook"]=648,
+ ["triagdn"]=9660,
+ ["triaglf"]=9668,
+ ["triagrt"]=9658,
+ ["triagup"]=9650,
+ ["ts"]=678,
+ ["tsadidageshhebrew"]=64326,
+ ["tsadihebrew"]=1510,
+ ["tsecyrillic"]=1094,
+ ["tserewidehebrew"]=1461,
+ ["tshecyrillic"]=1115,
+ ["ttabengali"]=2463,
+ ["ttadeva"]=2335,
+ ["ttagujarati"]=2719,
+ ["ttagurmukhi"]=2591,
+ ["tteharabic"]=1657,
+ ["ttehfinalarabic"]=64359,
+ ["ttehinitialarabic"]=64360,
+ ["ttehmedialarabic"]=64361,
+ ["tthabengali"]=2464,
+ ["tthadeva"]=2336,
+ ["tthagujarati"]=2720,
+ ["tthagurmukhi"]=2592,
+ ["tturned"]=647,
+ ["tuhiragana"]=12388,
+ ["tukatakana"]=12484,
+ ["tukatakanahalfwidth"]=65410,
+ ["tusmallhiragana"]=12387,
+ ["tusmallkatakana"]=12483,
+ ["tusmallkatakanahalfwidth"]=65391,
+ ["twelvecircle"]=9323,
+ ["twelveparen"]=9343,
+ ["twelveperiod"]=9363,
+ ["twelveroman"]=8571,
+ ["twentycircle"]=9331,
+ ["twentyparen"]=9351,
+ ["twentyperiod"]=9371,
+ ["two"]=50,
+ ["twobengali"]=2536,
+ ["twocircle"]=9313,
+ ["twocircleinversesansserif"]=10123,
+ ["twodeva"]=2408,
+ ["twodotleader"]=8229,
+ ["twodotleadervertical"]=65072,
+ ["twogujarati"]=2792,
+ ["twogurmukhi"]=2664,
+ ["twohackarabic"]=1634,
+ ["twohangzhou"]=12322,
+ ["twoideographicparen"]=12833,
+ ["twoinferior"]=8322,
+ ["twomonospace"]=65298,
+ ["twonumeratorbengali"]=2549,
+ ["twoparen"]=9333,
+ ["twoperiod"]=9353,
+ ["twopersian"]=1778,
+ ["tworoman"]=8561,
+ ["twostroke"]=443,
+ ["twosuperior"]=178,
+ ["twothai"]=3666,
+ ["twothirds"]=8532,
+ ["u"]=117,
+ ["uacute"]=250,
+ ["ubar"]=649,
+ ["ubengali"]=2441,
+ ["ubopomofo"]=12584,
+ ["ubreve"]=365,
+ ["ucaron"]=468,
+ ["ucircle"]=9444,
+ ["ucircumflex"]=251,
+ ["ucircumflexbelow"]=7799,
+ ["ucyrillic"]=1091,
+ ["udattadeva"]=2385,
+ ["udblgrave"]=533,
+ ["udeva"]=2313,
+ ["udieresis"]=252,
+ ["udieresisacute"]=472,
+ ["udieresisbelow"]=7795,
+ ["udieresiscaron"]=474,
+ ["udieresiscyrillic"]=1265,
+ ["udieresisgrave"]=476,
+ ["udieresismacron"]=470,
+ ["udotbelow"]=7909,
+ ["ugrave"]=249,
+ ["ugujarati"]=2697,
+ ["ugurmukhi"]=2569,
+ ["uhiragana"]=12358,
+ ["uhookabove"]=7911,
+ ["uhorn"]=432,
+ ["uhornacute"]=7913,
+ ["uhorndotbelow"]=7921,
+ ["uhorngrave"]=7915,
+ ["uhornhookabove"]=7917,
+ ["uhorntilde"]=7919,
+ ["uhungarumlaut"]=369,
+ ["uhungarumlautcyrillic"]=1267,
+ ["uinvertedbreve"]=535,
+ ["ukatakana"]=12454,
+ ["ukatakanahalfwidth"]=65395,
+ ["ukcyrillic"]=1145,
+ ["ukorean"]=12636,
+ ["umacron"]=363,
+ ["umacroncyrillic"]=1263,
+ ["umacrondieresis"]=7803,
+ ["umatragurmukhi"]=2625,
+ ["umonospace"]=65365,
+ ["underscore"]=95,
+ ["underscoredbl"]=8215,
+ ["underscoremonospace"]=65343,
+ ["underscorevertical"]=65075,
+ ["underscorewavy"]=65103,
+ ["union"]=8746,
+ ["universal"]=8704,
+ ["uogonek"]=371,
+ ["uparen"]=9392,
+ ["upblock"]=9600,
+ ["upperdothebrew"]=1476,
+ ["upsilon"]=965,
+ ["upsilondieresis"]=971,
+ ["upsilondieresistonos"]=944,
+ ["upsilonlatin"]=650,
+ ["upsilontonos"]=973,
+ ["uptackbelowcmb"]=797,
+ ["uptackmod"]=724,
+ ["uragurmukhi"]=2675,
+ ["uring"]=367,
+ ["ushortcyrillic"]=1118,
+ ["usmallhiragana"]=12357,
+ ["usmallkatakana"]=12453,
+ ["usmallkatakanahalfwidth"]=65385,
+ ["ustraightcyrillic"]=1199,
+ ["ustraightstrokecyrillic"]=1201,
+ ["utilde"]=361,
+ ["utildeacute"]=7801,
+ ["utildebelow"]=7797,
+ ["uubengali"]=2442,
+ ["uudeva"]=2314,
+ ["uugujarati"]=2698,
+ ["uugurmukhi"]=2570,
+ ["uumatragurmukhi"]=2626,
+ ["uuvowelsignbengali"]=2498,
+ ["uuvowelsigndeva"]=2370,
+ ["uuvowelsigngujarati"]=2754,
+ ["uvowelsignbengali"]=2497,
+ ["uvowelsigndeva"]=2369,
+ ["uvowelsigngujarati"]=2753,
+ ["v"]=118,
+ ["vadeva"]=2357,
+ ["vagujarati"]=2741,
+ ["vagurmukhi"]=2613,
+ ["vakatakana"]=12535,
+ ["vavdageshhebrew"]=64309,
+ ["vavhebrew"]=1493,
+ ["vavholamhebrew"]=64331,
+ ["vavvavhebrew"]=1520,
+ ["vavyodhebrew"]=1521,
+ ["vcircle"]=9445,
+ ["vdotbelow"]=7807,
+ ["vecyrillic"]=1074,
+ ["veharabic"]=1700,
+ ["vehfinalarabic"]=64363,
+ ["vehinitialarabic"]=64364,
+ ["vehmedialarabic"]=64365,
+ ["vekatakana"]=12537,
+ ["venus"]=9792,
+ ["verticalbar"]=124,
+ ["verticallineabovecmb"]=781,
+ ["verticallinebelowcmb"]=809,
+ ["verticallinelowmod"]=716,
+ ["verticallinemod"]=712,
+ ["vewarmenian"]=1406,
+ ["vhook"]=651,
+ ["vikatakana"]=12536,
+ ["viramabengali"]=2509,
+ ["viramadeva"]=2381,
+ ["viramagujarati"]=2765,
+ ["visargabengali"]=2435,
+ ["visargadeva"]=2307,
+ ["visargagujarati"]=2691,
+ ["vmonospace"]=65366,
+ ["voarmenian"]=1400,
+ ["voicediterationhiragana"]=12446,
+ ["voicediterationkatakana"]=12542,
+ ["voicedmarkkana"]=12443,
+ ["voicedmarkkanahalfwidth"]=65438,
+ ["vokatakana"]=12538,
+ ["vparen"]=9393,
+ ["vtilde"]=7805,
+ ["vturned"]=652,
+ ["vuhiragana"]=12436,
+ ["vukatakana"]=12532,
+ ["w"]=119,
+ ["wacute"]=7811,
+ ["waekorean"]=12633,
+ ["wahiragana"]=12431,
+ ["wakatakana"]=12527,
+ ["wakatakanahalfwidth"]=65436,
+ ["wakorean"]=12632,
+ ["wasmallhiragana"]=12430,
+ ["wasmallkatakana"]=12526,
+ ["wattosquare"]=13143,
+ ["wavedash"]=12316,
+ ["wavyunderscorevertical"]=65076,
+ ["wawarabic"]=1608,
+ ["wawfinalarabic"]=65262,
+ ["wawhamzaabovearabic"]=1572,
+ ["wawhamzaabovefinalarabic"]=65158,
+ ["wbsquare"]=13277,
+ ["wcircle"]=9446,
+ ["wcircumflex"]=373,
+ ["wdieresis"]=7813,
+ ["wdotaccent"]=7815,
+ ["wdotbelow"]=7817,
+ ["wehiragana"]=12433,
+ ["weierstrass"]=8472,
+ ["wekatakana"]=12529,
+ ["wekorean"]=12638,
+ ["weokorean"]=12637,
+ ["wgrave"]=7809,
+ ["whitebullet"]=9702,
+ ["whitecircle"]=9675,
+ ["whitecircleinverse"]=9689,
+ ["whitecornerbracketleft"]=12302,
+ ["whitecornerbracketleftvertical"]=65091,
+ ["whitecornerbracketright"]=12303,
+ ["whitecornerbracketrightvertical"]=65092,
+ ["whitediamond"]=9671,
+ ["whitediamondcontainingblacksmalldiamond"]=9672,
+ ["whitedownpointingsmalltriangle"]=9663,
+ ["whitedownpointingtriangle"]=9661,
+ ["whiteleftpointingsmalltriangle"]=9667,
+ ["whiteleftpointingtriangle"]=9665,
+ ["whitelenticularbracketleft"]=12310,
+ ["whitelenticularbracketright"]=12311,
+ ["whiterightpointingsmalltriangle"]=9657,
+ ["whiterightpointingtriangle"]=9655,
+ ["whitesmallsquare"]=9643,
+ ["whitesmilingface"]=9786,
+ ["whitesquare"]=9633,
+ ["whitestar"]=9734,
+ ["whitetelephone"]=9743,
+ ["whitetortoiseshellbracketleft"]=12312,
+ ["whitetortoiseshellbracketright"]=12313,
+ ["whiteuppointingsmalltriangle"]=9653,
+ ["whiteuppointingtriangle"]=9651,
+ ["wihiragana"]=12432,
+ ["wikatakana"]=12528,
+ ["wikorean"]=12639,
+ ["wmonospace"]=65367,
+ ["wohiragana"]=12434,
+ ["wokatakana"]=12530,
+ ["wokatakanahalfwidth"]=65382,
+ ["won"]=8361,
+ ["wonmonospace"]=65510,
+ ["wowaenthai"]=3623,
+ ["wparen"]=9394,
+ ["wring"]=7832,
+ ["wsuperior"]=695,
+ ["wturned"]=653,
+ ["wynn"]=447,
+ ["x"]=120,
+ ["xabovecmb"]=829,
+ ["xbopomofo"]=12562,
+ ["xcircle"]=9447,
+ ["xdieresis"]=7821,
+ ["xdotaccent"]=7819,
+ ["xeharmenian"]=1389,
+ ["xi"]=958,
+ ["xmonospace"]=65368,
+ ["xparen"]=9395,
+ ["xsuperior"]=739,
+ ["y"]=121,
+ ["yaadosquare"]=13134,
+ ["yabengali"]=2479,
+ ["yacute"]=253,
+ ["yadeva"]=2351,
+ ["yaekorean"]=12626,
+ ["yagujarati"]=2735,
+ ["yagurmukhi"]=2607,
+ ["yahiragana"]=12420,
+ ["yakatakana"]=12516,
+ ["yakatakanahalfwidth"]=65428,
+ ["yakorean"]=12625,
+ ["yamakkanthai"]=3662,
+ ["yasmallhiragana"]=12419,
+ ["yasmallkatakana"]=12515,
+ ["yasmallkatakanahalfwidth"]=65388,
+ ["yatcyrillic"]=1123,
+ ["ycircle"]=9448,
+ ["ycircumflex"]=375,
+ ["ydieresis"]=255,
+ ["ydotaccent"]=7823,
+ ["ydotbelow"]=7925,
+ ["yeharabic"]=1610,
+ ["yehbarreearabic"]=1746,
+ ["yehbarreefinalarabic"]=64431,
+ ["yehfinalarabic"]=65266,
+ ["yehhamzaabovearabic"]=1574,
+ ["yehhamzaabovefinalarabic"]=65162,
+ ["yehhamzaaboveinitialarabic"]=65163,
+ ["yehhamzaabovemedialarabic"]=65164,
+ ["yehinitialarabic"]=65267,
+ ["yehmedialarabic"]=65268,
+ ["yehmeeminitialarabic"]=64733,
+ ["yehmeemisolatedarabic"]=64600,
+ ["yehnoonfinalarabic"]=64660,
+ ["yehthreedotsbelowarabic"]=1745,
+ ["yekorean"]=12630,
+ ["yen"]=165,
+ ["yenmonospace"]=65509,
+ ["yeokorean"]=12629,
+ ["yeorinhieuhkorean"]=12678,
+ ["yerahbenyomolefthebrew"]=1450,
+ ["yericyrillic"]=1099,
+ ["yerudieresiscyrillic"]=1273,
+ ["yesieungkorean"]=12673,
+ ["yesieungpansioskorean"]=12675,
+ ["yesieungsioskorean"]=12674,
+ ["yetivhebrew"]=1434,
+ ["ygrave"]=7923,
+ ["yhook"]=436,
+ ["yhookabove"]=7927,
+ ["yiarmenian"]=1397,
+ ["yicyrillic"]=1111,
+ ["yikorean"]=12642,
+ ["yinyang"]=9775,
+ ["yiwnarmenian"]=1410,
+ ["ymonospace"]=65369,
+ ["yoddageshhebrew"]=64313,
+ ["yodhebrew"]=1497,
+ ["yodyodhebrew"]=1522,
+ ["yodyodpatahhebrew"]=64287,
+ ["yohiragana"]=12424,
+ ["yoikorean"]=12681,
+ ["yokatakana"]=12520,
+ ["yokatakanahalfwidth"]=65430,
+ ["yokorean"]=12635,
+ ["yosmallhiragana"]=12423,
+ ["yosmallkatakana"]=12519,
+ ["yosmallkatakanahalfwidth"]=65390,
+ ["yotgreek"]=1011,
+ ["yoyaekorean"]=12680,
+ ["yoyakorean"]=12679,
+ ["yoyakthai"]=3618,
+ ["yoyingthai"]=3597,
+ ["yparen"]=9396,
+ ["ypogegrammeni"]=890,
+ ["ypogegrammenigreekcmb"]=837,
+ ["yr"]=422,
+ ["yring"]=7833,
+ ["ysuperior"]=696,
+ ["ytilde"]=7929,
+ ["yturned"]=654,
+ ["yuhiragana"]=12422,
+ ["yuikorean"]=12684,
+ ["yukatakana"]=12518,
+ ["yukatakanahalfwidth"]=65429,
+ ["yukorean"]=12640,
+ ["yusbigcyrillic"]=1131,
+ ["yusbigiotifiedcyrillic"]=1133,
+ ["yuslittlecyrillic"]=1127,
+ ["yuslittleiotifiedcyrillic"]=1129,
+ ["yusmallhiragana"]=12421,
+ ["yusmallkatakana"]=12517,
+ ["yusmallkatakanahalfwidth"]=65389,
+ ["yuyekorean"]=12683,
+ ["yuyeokorean"]=12682,
+ ["yyabengali"]=2527,
+ ["yyadeva"]=2399,
+ ["z"]=122,
+ ["zaarmenian"]=1382,
+ ["zacute"]=378,
+ ["zadeva"]=2395,
+ ["zagurmukhi"]=2651,
+ ["zaharabic"]=1592,
+ ["zahfinalarabic"]=65222,
+ ["zahinitialarabic"]=65223,
+ ["zahiragana"]=12374,
+ ["zahmedialarabic"]=65224,
+ ["zainarabic"]=1586,
+ ["zainfinalarabic"]=65200,
+ ["zakatakana"]=12470,
+ ["zaqefgadolhebrew"]=1429,
+ ["zaqefqatanhebrew"]=1428,
+ ["zarqahebrew"]=1432,
+ ["zayindageshhebrew"]=64310,
+ ["zayinhebrew"]=1494,
+ ["zbopomofo"]=12567,
+ ["zcaron"]=382,
+ ["zcircle"]=9449,
+ ["zcircumflex"]=7825,
+ ["zcurl"]=657,
+ ["zdotaccent"]=380,
+ ["zdotbelow"]=7827,
+ ["zecyrillic"]=1079,
+ ["zedescendercyrillic"]=1177,
+ ["zedieresiscyrillic"]=1247,
+ ["zehiragana"]=12380,
+ ["zekatakana"]=12476,
+ ["zero"]=48,
+ ["zerobengali"]=2534,
+ ["zerodeva"]=2406,
+ ["zerogujarati"]=2790,
+ ["zerogurmukhi"]=2662,
+ ["zerohackarabic"]=1632,
+ ["zeroinferior"]=8320,
+ ["zeromonospace"]=65296,
+ ["zeropersian"]=1776,
+ ["zerosuperior"]=8304,
+ ["zerothai"]=3664,
+ ["zerowidthjoiner"]=65279,
+ ["zerowidthnonjoiner"]=8204,
+ ["zerowidthspace"]=8203,
+ ["zeta"]=950,
+ ["zhbopomofo"]=12563,
+ ["zhearmenian"]=1386,
+ ["zhebrevecyrillic"]=1218,
+ ["zhecyrillic"]=1078,
+ ["zhedescendercyrillic"]=1175,
+ ["zhedieresiscyrillic"]=1245,
+ ["zihiragana"]=12376,
+ ["zikatakana"]=12472,
+ ["zinorhebrew"]=1454,
+ ["zlinebelow"]=7829,
+ ["zmonospace"]=65370,
+ ["zohiragana"]=12382,
+ ["zokatakana"]=12478,
+ ["zparen"]=9397,
+ ["zretroflexhook"]=656,
+ ["zstroke"]=438,
+ ["zuhiragana"]=12378,
+ ["zukatakana"]=12474,
+
+ -- extras
+
+ ["Dcroat"]=272,
+ ["Delta"]=8710,
+ ["Euro"]=8364,
+ ["H18533"]=9679,
+ ["H18543"]=9642,
+ ["H18551"]=9643,
+ ["H22073"]=9633,
+ ["Ldot"]=319,
+ ["Oslashacute"]=510,
+ ["SF10000"]=9484,
+ ["SF20000"]=9492,
+ ["SF30000"]=9488,
+ ["SF40000"]=9496,
+ ["SF50000"]=9532,
+ ["SF60000"]=9516,
+ ["SF70000"]=9524,
+ ["SF80000"]=9500,
+ ["SF90000"]=9508,
+ ["Upsilon1"]=978,
+ ["afii10066"]=1073,
+ ["afii10067"]=1074,
+ ["afii10068"]=1075,
+ ["afii10069"]=1076,
+ ["afii10070"]=1077,
+ ["afii10071"]=1105,
+ ["afii10072"]=1078,
+ ["afii10073"]=1079,
+ ["afii10074"]=1080,
+ ["afii10075"]=1081,
+ ["afii10076"]=1082,
+ ["afii10077"]=1083,
+ ["afii10078"]=1084,
+ ["afii10079"]=1085,
+ ["afii10080"]=1086,
+ ["afii10081"]=1087,
+ ["afii10082"]=1088,
+ ["afii10083"]=1089,
+ ["afii10084"]=1090,
+ ["afii10085"]=1091,
+ ["afii10086"]=1092,
+ ["afii10087"]=1093,
+ ["afii10088"]=1094,
+ ["afii10089"]=1095,
+ ["afii10090"]=1096,
+ ["afii10091"]=1097,
+ ["afii10092"]=1098,
+ ["afii10093"]=1099,
+ ["afii10094"]=1100,
+ ["afii10095"]=1101,
+ ["afii10096"]=1102,
+ ["afii10097"]=1103,
+ ["afii10098"]=1169,
+ ["afii10099"]=1106,
+ ["afii10100"]=1107,
+ ["afii10101"]=1108,
+ ["afii10102"]=1109,
+ ["afii10103"]=1110,
+ ["afii10104"]=1111,
+ ["afii10105"]=1112,
+ ["afii10106"]=1113,
+ ["afii10107"]=1114,
+ ["afii10108"]=1115,
+ ["afii10109"]=1116,
+ ["afii10110"]=1118,
+ ["afii10193"]=1119,
+ ["afii10194"]=1123,
+ ["afii10195"]=1139,
+ ["afii10196"]=1141,
+ ["afii10846"]=1241,
+ ["afii208"]=8213,
+ ["afii57381"]=1642,
+ ["afii57388"]=1548,
+ ["afii57392"]=1632,
+ ["afii57393"]=1633,
+ ["afii57394"]=1634,
+ ["afii57395"]=1635,
+ ["afii57396"]=1636,
+ ["afii57397"]=1637,
+ ["afii57398"]=1638,
+ ["afii57399"]=1639,
+ ["afii57400"]=1640,
+ ["afii57401"]=1641,
+ ["afii57403"]=1563,
+ ["afii57407"]=1567,
+ ["afii57409"]=1569,
+ ["afii57410"]=1570,
+ ["afii57411"]=1571,
+ ["afii57412"]=1572,
+ ["afii57413"]=1573,
+ ["afii57414"]=1574,
+ ["afii57415"]=1575,
+ ["afii57416"]=1576,
+ ["afii57417"]=1577,
+ ["afii57418"]=1578,
+ ["afii57419"]=1579,
+ ["afii57420"]=1580,
+ ["afii57421"]=1581,
+ ["afii57422"]=1582,
+ ["afii57423"]=1583,
+ ["afii57424"]=1584,
+ ["afii57425"]=1585,
+ ["afii57426"]=1586,
+ ["afii57427"]=1587,
+ ["afii57428"]=1588,
+ ["afii57429"]=1589,
+ ["afii57430"]=1590,
+ ["afii57431"]=1591,
+ ["afii57432"]=1592,
+ ["afii57433"]=1593,
+ ["afii57434"]=1594,
+ ["afii57440"]=1600,
+ ["afii57441"]=1601,
+ ["afii57442"]=1602,
+ ["afii57443"]=1603,
+ ["afii57444"]=1604,
+ ["afii57445"]=1605,
+ ["afii57446"]=1606,
+ ["afii57448"]=1608,
+ ["afii57449"]=1609,
+ ["afii57450"]=1610,
+ ["afii57451"]=1611,
+ ["afii57452"]=1612,
+ ["afii57453"]=1613,
+ ["afii57454"]=1614,
+ ["afii57455"]=1615,
+ ["afii57456"]=1616,
+ ["afii57457"]=1617,
+ ["afii57458"]=1618,
+ ["afii57470"]=1607,
+ ["afii57505"]=1700,
+ ["afii57506"]=1662,
+ ["afii57507"]=1670,
+ ["afii57508"]=1688,
+ ["afii57509"]=1711,
+ ["afii57511"]=1657,
+ ["afii57512"]=1672,
+ ["afii57513"]=1681,
+ ["afii57514"]=1722,
+ ["afii57519"]=1746,
+ ["afii57636"]=8362,
+ ["afii57645"]=1470,
+ ["afii57658"]=1475,
+ ["afii57664"]=1488,
+ ["afii57665"]=1489,
+ ["afii57666"]=1490,
+ ["afii57667"]=1491,
+ ["afii57668"]=1492,
+ ["afii57669"]=1493,
+ ["afii57670"]=1494,
+ ["afii57671"]=1495,
+ ["afii57672"]=1496,
+ ["afii57673"]=1497,
+ ["afii57674"]=1498,
+ ["afii57675"]=1499,
+ ["afii57676"]=1500,
+ ["afii57677"]=1501,
+ ["afii57678"]=1502,
+ ["afii57679"]=1503,
+ ["afii57680"]=1504,
+ ["afii57681"]=1505,
+ ["afii57682"]=1506,
+ ["afii57683"]=1507,
+ ["afii57684"]=1508,
+ ["afii57685"]=1509,
+ ["afii57686"]=1510,
+ ["afii57687"]=1511,
+ ["afii57688"]=1512,
+ ["afii57689"]=1513,
+ ["afii57690"]=1514,
+ ["afii57716"]=1520,
+ ["afii57717"]=1521,
+ ["afii57718"]=1522,
+ ["afii57793"]=1460,
+ ["afii57794"]=1461,
+ ["afii57795"]=1462,
+ ["afii57796"]=1467,
+ ["afii57797"]=1464,
+ ["afii57798"]=1463,
+ ["afii57799"]=1456,
+ ["afii57800"]=1458,
+ ["afii57801"]=1457,
+ ["afii57802"]=1459,
+ ["afii57803"]=1474,
+ ["afii57804"]=1473,
+ ["afii57806"]=1465,
+ ["afii57807"]=1468,
+ ["afii57839"]=1469,
+ ["afii57841"]=1471,
+ ["afii57842"]=1472,
+ ["afii57929"]=700,
+ ["afii61248"]=8453,
+ ["afii61289"]=8467,
+ ["afii61352"]=8470,
+ ["afii61664"]=8204,
+ ["afii63167"]=1645,
+ ["afii64937"]=701,
+ ["arrowdblboth"]=8660,
+ ["arrowdblleft"]=8656,
+ ["arrowdblright"]=8658,
+ ["arrowupdnbse"]=8616,
+ ["bar"]=124,
+ ["circle"]=9675,
+ ["circlemultiply"]=8855,
+ ["circleplus"]=8853,
+ ["club"]=9827,
+ ["colonmonetary"]=8353,
+ ["dcroat"]=273,
+ ["dkshade"]=9619,
+ ["existential"]=8707,
+ ["female"]=9792,
+ ["gradient"]=8711,
+ ["heart"]=9829,
+ ["hookabovecomb"]=777,
+ ["invcircle"]=9689,
+ ["ldot"]=320,
+ ["longs"]=383,
+ ["ltshade"]=9617,
+ ["male"]=9794,
+ ["mu"]=181,
+ ["napostrophe"]=329,
+ ["notelement"]=8713,
+ ["omega1"]=982,
+ ["openbullet"]=9702,
+ ["orthogonal"]=8735,
+ ["oslashacute"]=511,
+ ["phi1"]=981,
+ ["propersubset"]=8834,
+ ["propersuperset"]=8835,
+ ["reflexsubset"]=8838,
+ ["reflexsuperset"]=8839,
+ ["shade"]=9618,
+ ["sigma1"]=962,
+ ["similar"]=8764,
+ ["smileface"]=9786,
+ ["spacehackarabic"]=32,
+ ["spade"]=9824,
+ ["theta1"]=977,
+ ["twodotenleader"]=8229,
+}
diff --git a/otfl-font-agl.lua b/otfl-font-agl.lua
deleted file mode 100644
index 820600a..0000000
--- a/otfl-font-agl.lua
+++ /dev/null
@@ -1,3699 +0,0 @@
-if not modules then modules = { } end modules ['font-map'] = {
- version = 1.001,
- comment = "companion to font-ini.mkiv",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "derived from http://www.adobe.com/devnet/opentype/archives/glyphlist.txt",
- comment = "Adobe Glyph List, version 2.0, September 20, 2002",
-}
-
-local allocate = utilities.storage.allocate
-
-fonts.enc = fonts.enc or { }
-local enc = fonts.enc
-local agl = { }
-enc.agl = agl
-
-agl.names = allocate { -- to name
- "controlSTX",
- "controlSOT",
- "controlETX",
- "controlEOT",
- "controlENQ",
- "controlACK",
- "controlBEL",
- "controlBS",
- "controlHT",
- "controlLF",
- "controlVT",
- "controlFF",
- "controlCR",
- "controlSO",
- "controlSI",
- "controlDLE",
- "controlDC1",
- "controlDC2",
- "controlDC3",
- "controlDC4",
- "controlNAK",
- "controlSYN",
- "controlETB",
- "controlCAN",
- "controlEM",
- "controlSUB",
- "controlESC",
- "controlFS",
- "controlGS",
- "controlRS",
- "controlUS",
- "spacehackarabic",
- "exclam",
- "quotedbl",
- "numbersign",
- "dollar",
- "percent",
- "ampersand",
- "quotesingle",
- "parenleft",
- "parenright",
- "asterisk",
- "plus",
- "comma",
- "hyphen",
- "period",
- "slash",
- "zero",
- "one",
- "two",
- "three",
- "four",
- "five",
- "six",
- "seven",
- "eight",
- "nine",
- "colon",
- "semicolon",
- "less",
- "equal",
- "greater",
- "question",
- "at",
- "A",
- "B",
- "C",
- "D",
- "E",
- "F",
- "G",
- "H",
- "I",
- "J",
- "K",
- "L",
- "M",
- "N",
- "O",
- "P",
- "Q",
- "R",
- "S",
- "T",
- "U",
- "V",
- "W",
- "X",
- "Y",
- "Z",
- "bracketleft",
- "backslash",
- "bracketright",
- "asciicircum",
- "underscore",
- "grave",
- "a",
- "b",
- "c",
- "d",
- "e",
- "f",
- "g",
- "h",
- "i",
- "j",
- "k",
- "l",
- "m",
- "n",
- "o",
- "p",
- "q",
- "r",
- "s",
- "t",
- "u",
- "v",
- "w",
- "x",
- "y",
- "z",
- "braceleft",
- "verticalbar",
- "braceright",
- "asciitilde",
- "controlDEL",
- [0x00A0] = "nonbreakingspace",
- [0x00A1] = "exclamdown",
- [0x00A2] = "cent",
- [0x00A3] = "sterling",
- [0x00A4] = "currency",
- [0x00A5] = "yen",
- [0x00A6] = "brokenbar",
- [0x00A7] = "section",
- [0x00A8] = "dieresis",
- [0x00A9] = "copyright",
- [0x00AA] = "ordfeminine",
- [0x00AB] = "guillemotleft",
- [0x00AC] = "logicalnot",
- [0x00AD] = "softhyphen",
- [0x00AE] = "registered",
- [0x00AF] = "overscore",
- [0x00B0] = "degree",
- [0x00B1] = "plusminus",
- [0x00B2] = "twosuperior",
- [0x00B3] = "threesuperior",
- [0x00B4] = "acute",
- [0x00B5] = "mu1",
- [0x00B6] = "paragraph",
- [0x00B7] = "periodcentered",
- [0x00B8] = "cedilla",
- [0x00B9] = "onesuperior",
- [0x00BA] = "ordmasculine",
- [0x00BB] = "guillemotright",
- [0x00BC] = "onequarter",
- [0x00BD] = "onehalf",
- [0x00BE] = "threequarters",
- [0x00BF] = "questiondown",
- [0x00C0] = "Agrave",
- [0x00C1] = "Aacute",
- [0x00C2] = "Acircumflex",
- [0x00C3] = "Atilde",
- [0x00C4] = "Adieresis",
- [0x00C5] = "Aring",
- [0x00C6] = "AE",
- [0x00C7] = "Ccedilla",
- [0x00C8] = "Egrave",
- [0x00C9] = "Eacute",
- [0x00CA] = "Ecircumflex",
- [0x00CB] = "Edieresis",
- [0x00CC] = "Igrave",
- [0x00CD] = "Iacute",
- [0x00CE] = "Icircumflex",
- [0x00CF] = "Idieresis",
- [0x00D0] = "Eth",
- [0x00D1] = "Ntilde",
- [0x00D2] = "Ograve",
- [0x00D3] = "Oacute",
- [0x00D4] = "Ocircumflex",
- [0x00D5] = "Otilde",
- [0x00D6] = "Odieresis",
- [0x00D7] = "multiply",
- [0x00D8] = "Oslash",
- [0x00D9] = "Ugrave",
- [0x00DA] = "Uacute",
- [0x00DB] = "Ucircumflex",
- [0x00DC] = "Udieresis",
- [0x00DD] = "Yacute",
- [0x00DE] = "Thorn",
- [0x00DF] = "germandbls",
- [0x00E0] = "agrave",
- [0x00E1] = "aacute",
- [0x00E2] = "acircumflex",
- [0x00E3] = "atilde",
- [0x00E4] = "adieresis",
- [0x00E5] = "aring",
- [0x00E6] = "ae",
- [0x00E7] = "ccedilla",
- [0x00E8] = "egrave",
- [0x00E9] = "eacute",
- [0x00EA] = "ecircumflex",
- [0x00EB] = "edieresis",
- [0x00EC] = "igrave",
- [0x00ED] = "iacute",
- [0x00EE] = "icircumflex",
- [0x00EF] = "idieresis",
- [0x00F0] = "eth",
- [0x00F1] = "ntilde",
- [0x00F2] = "ograve",
- [0x00F3] = "oacute",
- [0x00F4] = "ocircumflex",
- [0x00F5] = "otilde",
- [0x00F6] = "odieresis",
- [0x00F7] = "divide",
- [0x00F8] = "oslash",
- [0x00F9] = "ugrave",
- [0x00FA] = "uacute",
- [0x00FB] = "ucircumflex",
- [0x00FC] = "udieresis",
- [0x00FD] = "yacute",
- [0x00FE] = "thorn",
- [0x00FF] = "ydieresis",
- [0x0100] = "Amacron",
- [0x0101] = "amacron",
- [0x0102] = "Abreve",
- [0x0103] = "abreve",
- [0x0104] = "Aogonek",
- [0x0105] = "aogonek",
- [0x0106] = "Cacute",
- [0x0107] = "cacute",
- [0x0108] = "Ccircumflex",
- [0x0109] = "ccircumflex",
- [0x010A] = "Cdotaccent",
- [0x010B] = "cdotaccent",
- [0x010C] = "Ccaron",
- [0x010D] = "ccaron",
- [0x010E] = "Dcaron",
- [0x010F] = "dcaron",
- [0x0110] = "Dslash",
- [0x0111] = "dmacron",
- [0x0112] = "Emacron",
- [0x0113] = "emacron",
- [0x0114] = "Ebreve",
- [0x0115] = "ebreve",
- [0x0116] = "Edotaccent",
- [0x0117] = "edotaccent",
- [0x0118] = "Eogonek",
- [0x0119] = "eogonek",
- [0x011A] = "Ecaron",
- [0x011B] = "ecaron",
- [0x011C] = "Gcircumflex",
- [0x011D] = "gcircumflex",
- [0x011E] = "Gbreve",
- [0x011F] = "gbreve",
- [0x0120] = "Gdotaccent",
- [0x0121] = "gdotaccent",
- [0x0122] = "Gcommaaccent",
- [0x0123] = "gcommaaccent",
- [0x0124] = "Hcircumflex",
- [0x0125] = "hcircumflex",
- [0x0126] = "Hbar",
- [0x0127] = "hbar",
- [0x0128] = "Itilde",
- [0x0129] = "itilde",
- [0x012A] = "Imacron",
- [0x012B] = "imacron",
- [0x012C] = "Ibreve",
- [0x012D] = "ibreve",
- [0x012E] = "Iogonek",
- [0x012F] = "iogonek",
- [0x0130] = "Idotaccent",
- [0x0131] = "dotlessi",
- [0x0132] = "IJ",
- [0x0133] = "ij",
- [0x0134] = "Jcircumflex",
- [0x0135] = "jcircumflex",
- [0x0136] = "Kcommaaccent",
- [0x0137] = "kcommaaccent",
- [0x0138] = "kgreenlandic",
- [0x0139] = "Lacute",
- [0x013A] = "lacute",
- [0x013B] = "Lcommaaccent",
- [0x013C] = "lcommaaccent",
- [0x013D] = "Lcaron",
- [0x013E] = "lcaron",
- [0x013F] = "Ldotaccent",
- [0x0140] = "ldotaccent",
- [0x0141] = "Lslash",
- [0x0142] = "lslash",
- [0x0143] = "Nacute",
- [0x0144] = "nacute",
- [0x0145] = "Ncommaaccent",
- [0x0146] = "ncommaaccent",
- [0x0147] = "Ncaron",
- [0x0148] = "ncaron",
- [0x0149] = "quoterightn",
- [0x014A] = "Eng",
- [0x014B] = "eng",
- [0x014C] = "Omacron",
- [0x014D] = "omacron",
- [0x014E] = "Obreve",
- [0x014F] = "obreve",
- [0x0150] = "Ohungarumlaut",
- [0x0151] = "ohungarumlaut",
- [0x0152] = "OE",
- [0x0153] = "oe",
- [0x0154] = "Racute",
- [0x0155] = "racute",
- [0x0156] = "Rcommaaccent",
- [0x0157] = "rcommaaccent",
- [0x0158] = "Rcaron",
- [0x0159] = "rcaron",
- [0x015A] = "Sacute",
- [0x015B] = "sacute",
- [0x015C] = "Scircumflex",
- [0x015D] = "scircumflex",
- [0x015E] = "Scedilla",
- [0x015F] = "scedilla",
- [0x0160] = "Scaron",
- [0x0161] = "scaron",
- [0x0162] = "Tcommaaccent",
- [0x0163] = "tcommaaccent",
- [0x0164] = "Tcaron",
- [0x0165] = "tcaron",
- [0x0166] = "Tbar",
- [0x0167] = "tbar",
- [0x0168] = "Utilde",
- [0x0169] = "utilde",
- [0x016A] = "Umacron",
- [0x016B] = "umacron",
- [0x016C] = "Ubreve",
- [0x016D] = "ubreve",
- [0x016E] = "Uring",
- [0x016F] = "uring",
- [0x0170] = "Uhungarumlaut",
- [0x0171] = "uhungarumlaut",
- [0x0172] = "Uogonek",
- [0x0173] = "uogonek",
- [0x0174] = "Wcircumflex",
- [0x0175] = "wcircumflex",
- [0x0176] = "Ycircumflex",
- [0x0177] = "ycircumflex",
- [0x0178] = "Ydieresis",
- [0x0179] = "Zacute",
- [0x017A] = "zacute",
- [0x017B] = "Zdotaccent",
- [0x017C] = "zdotaccent",
- [0x017D] = "Zcaron",
- [0x017E] = "zcaron",
- [0x017F] = "slong",
- [0x0180] = "bstroke",
- [0x0181] = "Bhook",
- [0x0182] = "Btopbar",
- [0x0183] = "btopbar",
- [0x0184] = "Tonesix",
- [0x0185] = "tonesix",
- [0x0186] = "Oopen",
- [0x0187] = "Chook",
- [0x0188] = "chook",
- [0x0189] = "Dafrican",
- [0x018A] = "Dhook",
- [0x018B] = "Dtopbar",
- [0x018C] = "dtopbar",
- [0x018D] = "deltaturned",
- [0x018E] = "Ereversed",
- [0x018F] = "Schwa",
- [0x0190] = "Eopen",
- [0x0191] = "Fhook",
- [0x0192] = "florin",
- [0x0193] = "Ghook",
- [0x0194] = "Gammaafrican",
- [0x0195] = "hv",
- [0x0196] = "Iotaafrican",
- [0x0197] = "Istroke",
- [0x0198] = "Khook",
- [0x0199] = "khook",
- [0x019A] = "lbar",
- [0x019B] = "lambdastroke",
- [0x019C] = "Mturned",
- [0x019D] = "Nhookleft",
- [0x019E] = "nlegrightlong",
- [0x019F] = "Ocenteredtilde",
- [0x01A0] = "Ohorn",
- [0x01A1] = "ohorn",
- [0x01A2] = "Oi",
- [0x01A3] = "oi",
- [0x01A4] = "Phook",
- [0x01A5] = "phook",
- [0x01A6] = "yr",
- [0x01A7] = "Tonetwo",
- [0x01A8] = "tonetwo",
- [0x01A9] = "Esh",
- [0x01AA] = "eshreversedloop",
- [0x01AB] = "tpalatalhook",
- [0x01AC] = "Thook",
- [0x01AD] = "thook",
- [0x01AE] = "Tretroflexhook",
- [0x01AF] = "Uhorn",
- [0x01B0] = "uhorn",
- [0x01B1] = "Upsilonafrican",
- [0x01B2] = "Vhook",
- [0x01B3] = "Yhook",
- [0x01B4] = "yhook",
- [0x01B5] = "Zstroke",
- [0x01B6] = "zstroke",
- [0x01B7] = "Ezh",
- [0x01B8] = "Ezhreversed",
- [0x01B9] = "ezhreversed",
- [0x01BA] = "ezhtail",
- [0x01BB] = "twostroke",
- [0x01BC] = "Tonefive",
- [0x01BD] = "tonefive",
- [0x01BE] = "glottalinvertedstroke",
- [0x01BF] = "wynn",
- [0x01C0] = "clickdental",
- [0x01C1] = "clicklateral",
- [0x01C2] = "clickalveolar",
- [0x01C3] = "clickretroflex",
- [0x01C4] = "DZcaron",
- [0x01C5] = "Dzcaron",
- [0x01C6] = "dzcaron",
- [0x01C7] = "LJ",
- [0x01C8] = "Lj",
- [0x01C9] = "lj",
- [0x01CA] = "NJ",
- [0x01CB] = "Nj",
- [0x01CC] = "nj",
- [0x01CD] = "Acaron",
- [0x01CE] = "acaron",
- [0x01CF] = "Icaron",
- [0x01D0] = "icaron",
- [0x01D1] = "Ocaron",
- [0x01D2] = "ocaron",
- [0x01D3] = "Ucaron",
- [0x01D4] = "ucaron",
- [0x01D5] = "Udieresismacron",
- [0x01D6] = "udieresismacron",
- [0x01D7] = "Udieresisacute",
- [0x01D8] = "udieresisacute",
- [0x01D9] = "Udieresiscaron",
- [0x01DA] = "udieresiscaron",
- [0x01DB] = "Udieresisgrave",
- [0x01DC] = "udieresisgrave",
- [0x01DD] = "eturned",
- [0x01DE] = "Adieresismacron",
- [0x01DF] = "adieresismacron",
- [0x01E0] = "Adotmacron",
- [0x01E1] = "adotmacron",
- [0x01E2] = "AEmacron",
- [0x01E3] = "aemacron",
- [0x01E4] = "Gstroke",
- [0x01E5] = "gstroke",
- [0x01E6] = "Gcaron",
- [0x01E7] = "gcaron",
- [0x01E8] = "Kcaron",
- [0x01E9] = "kcaron",
- [0x01EA] = "Oogonek",
- [0x01EB] = "oogonek",
- [0x01EC] = "Oogonekmacron",
- [0x01ED] = "oogonekmacron",
- [0x01EE] = "Ezhcaron",
- [0x01EF] = "ezhcaron",
- [0x01F0] = "jcaron",
- [0x01F1] = "DZ",
- [0x01F2] = "Dz",
- [0x01F3] = "dz",
- [0x01F4] = "Gacute",
- [0x01F5] = "gacute",
- [0x01FA] = "Aringacute",
- [0x01FB] = "aringacute",
- [0x01FC] = "AEacute",
- [0x01FD] = "aeacute",
- [0x01FE] = "Ostrokeacute",
- [0x01FF] = "ostrokeacute",
- [0x0200] = "Adblgrave",
- [0x0201] = "adblgrave",
- [0x0202] = "Ainvertedbreve",
- [0x0203] = "ainvertedbreve",
- [0x0204] = "Edblgrave",
- [0x0205] = "edblgrave",
- [0x0206] = "Einvertedbreve",
- [0x0207] = "einvertedbreve",
- [0x0208] = "Idblgrave",
- [0x0209] = "idblgrave",
- [0x020A] = "Iinvertedbreve",
- [0x020B] = "iinvertedbreve",
- [0x020C] = "Odblgrave",
- [0x020D] = "odblgrave",
- [0x020E] = "Oinvertedbreve",
- [0x020F] = "oinvertedbreve",
- [0x0210] = "Rdblgrave",
- [0x0211] = "rdblgrave",
- [0x0212] = "Rinvertedbreve",
- [0x0213] = "rinvertedbreve",
- [0x0214] = "Udblgrave",
- [0x0215] = "udblgrave",
- [0x0216] = "Uinvertedbreve",
- [0x0217] = "uinvertedbreve",
- [0x0218] = "Scommaaccent",
- [0x0219] = "scommaaccent",
- [0x0250] = "aturned",
- [0x0251] = "ascript",
- [0x0252] = "ascriptturned",
- [0x0253] = "bhook",
- [0x0254] = "oopen",
- [0x0255] = "ccurl",
- [0x0256] = "dtail",
- [0x0257] = "dhook",
- [0x0258] = "ereversed",
- [0x0259] = "schwa",
- [0x025A] = "schwahook",
- [0x025B] = "eopen",
- [0x025C] = "eopenreversed",
- [0x025D] = "eopenreversedhook",
- [0x025E] = "eopenreversedclosed",
- [0x025F] = "jdotlessstroke",
- [0x0260] = "ghook",
- [0x0261] = "gscript",
- [0x0263] = "gammalatinsmall",
- [0x0264] = "ramshorn",
- [0x0265] = "hturned",
- [0x0266] = "hhook",
- [0x0267] = "henghook",
- [0x0268] = "istroke",
- [0x0269] = "iotalatin",
- [0x026B] = "lmiddletilde",
- [0x026C] = "lbelt",
- [0x026D] = "lhookretroflex",
- [0x026E] = "lezh",
- [0x026F] = "mturned",
- [0x0270] = "mlonglegturned",
- [0x0271] = "mhook",
- [0x0272] = "nhookleft",
- [0x0273] = "nhookretroflex",
- [0x0275] = "obarred",
- [0x0277] = "omegalatinclosed",
- [0x0278] = "philatin",
- [0x0279] = "rturned",
- [0x027A] = "rlonglegturned",
- [0x027B] = "rhookturned",
- [0x027C] = "rlongleg",
- [0x027D] = "rhook",
- [0x027E] = "rfishhook",
- [0x027F] = "rfishhookreversed",
- [0x0281] = "Rsmallinverted",
- [0x0282] = "shook",
- [0x0283] = "esh",
- [0x0284] = "dotlessjstrokehook",
- [0x0285] = "eshsquatreversed",
- [0x0286] = "eshcurl",
- [0x0287] = "tturned",
- [0x0288] = "tretroflexhook",
- [0x0289] = "ubar",
- [0x028A] = "upsilonlatin",
- [0x028B] = "vhook",
- [0x028C] = "vturned",
- [0x028D] = "wturned",
- [0x028E] = "yturned",
- [0x0290] = "zretroflexhook",
- [0x0291] = "zcurl",
- [0x0292] = "ezh",
- [0x0293] = "ezhcurl",
- [0x0294] = "glottalstop",
- [0x0295] = "glottalstopreversed",
- [0x0296] = "glottalstopinverted",
- [0x0297] = "cstretched",
- [0x0298] = "bilabialclick",
- [0x029A] = "eopenclosed",
- [0x029B] = "Gsmallhook",
- [0x029D] = "jcrossedtail",
- [0x029E] = "kturned",
- [0x02A0] = "qhook",
- [0x02A1] = "glottalstopstroke",
- [0x02A2] = "glottalstopstrokereversed",
- [0x02A3] = "dzaltone",
- [0x02A4] = "dezh",
- [0x02A5] = "dzcurl",
- [0x02A6] = "ts",
- [0x02A7] = "tesh",
- [0x02A8] = "tccurl",
- [0x02B0] = "hsuperior",
- [0x02B1] = "hhooksuperior",
- [0x02B2] = "jsuperior",
- [0x02B4] = "rturnedsuperior",
- [0x02B5] = "rhookturnedsuperior",
- [0x02B6] = "Rsmallinvertedsuperior",
- [0x02B7] = "wsuperior",
- [0x02B8] = "ysuperior",
- [0x02B9] = "primemod",
- [0x02BA] = "dblprimemod",
- [0x02BB] = "commaturnedmod",
- [0x02BC] = "apostrophemod",
- [0x02BD] = "commareversedmod",
- [0x02BE] = "ringhalfright",
- [0x02BF] = "ringhalfleft",
- [0x02C0] = "glottalstopmod",
- [0x02C1] = "glottalstopreversedmod",
- [0x02C2] = "arrowheadleftmod",
- [0x02C3] = "arrowheadrightmod",
- [0x02C4] = "arrowheadupmod",
- [0x02C5] = "arrowheaddownmod",
- [0x02C6] = "circumflex",
- [0x02C7] = "caron",
- [0x02C8] = "verticallinemod",
- [0x02C9] = "firsttonechinese",
- [0x02CA] = "secondtonechinese",
- [0x02CB] = "fourthtonechinese",
- [0x02CC] = "verticallinelowmod",
- [0x02CD] = "macronlowmod",
- [0x02CE] = "gravelowmod",
- [0x02CF] = "acutelowmod",
- [0x02D0] = "colontriangularmod",
- [0x02D1] = "colontriangularhalfmod",
- [0x02D2] = "ringhalfrightcentered",
- [0x02D3] = "ringhalfleftcentered",
- [0x02D4] = "uptackmod",
- [0x02D5] = "downtackmod",
- [0x02D6] = "plusmod",
- [0x02D7] = "minusmod",
- [0x02D8] = "breve",
- [0x02D9] = "dotaccent",
- [0x02DA] = "ring",
- [0x02DB] = "ogonek",
- [0x02DC] = "tilde",
- [0x02DD] = "hungarumlaut",
- [0x02DE] = "rhotichookmod",
- [0x02E0] = "gammasuperior",
- [0x02E3] = "xsuperior",
- [0x02E4] = "glottalstopreversedsuperior",
- [0x02E5] = "tonebarextrahighmod",
- [0x02E6] = "tonebarhighmod",
- [0x02E7] = "tonebarmidmod",
- [0x02E8] = "tonebarlowmod",
- [0x02E9] = "tonebarextralowmod",
- [0x0300] = "gravecomb",
- [0x0301] = "acutecomb",
- [0x0302] = "circumflexcmb",
- [0x0303] = "tildecomb",
- [0x0304] = "macroncmb",
- [0x0305] = "overlinecmb",
- [0x0306] = "brevecmb",
- [0x0307] = "dotaccentcmb",
- [0x0308] = "dieresiscmb",
- [0x0309] = "hookcmb",
- [0x030A] = "ringcmb",
- [0x030B] = "hungarumlautcmb",
- [0x030C] = "caroncmb",
- [0x030D] = "verticallineabovecmb",
- [0x030E] = "dblverticallineabovecmb",
- [0x030F] = "dblgravecmb",
- [0x0310] = "candrabinducmb",
- [0x0311] = "breveinvertedcmb",
- [0x0312] = "commaturnedabovecmb",
- [0x0313] = "commaabovecmb",
- [0x0314] = "commareversedabovecmb",
- [0x0315] = "commaaboverightcmb",
- [0x0316] = "gravebelowcmb",
- [0x0317] = "acutebelowcmb",
- [0x0318] = "lefttackbelowcmb",
- [0x0319] = "righttackbelowcmb",
- [0x031A] = "leftangleabovecmb",
- [0x031B] = "horncmb",
- [0x031C] = "ringhalfleftbelowcmb",
- [0x031D] = "uptackbelowcmb",
- [0x031E] = "downtackbelowcmb",
- [0x031F] = "plusbelowcmb",
- [0x0320] = "minusbelowcmb",
- [0x0321] = "hookpalatalizedbelowcmb",
- [0x0322] = "hookretroflexbelowcmb",
- [0x0323] = "dotbelowcomb",
- [0x0324] = "dieresisbelowcmb",
- [0x0325] = "ringbelowcmb",
- [0x0327] = "cedillacmb",
- [0x0328] = "ogonekcmb",
- [0x0329] = "verticallinebelowcmb",
- [0x032A] = "bridgebelowcmb",
- [0x032B] = "dblarchinvertedbelowcmb",
- [0x032C] = "caronbelowcmb",
- [0x032D] = "circumflexbelowcmb",
- [0x032E] = "brevebelowcmb",
- [0x032F] = "breveinvertedbelowcmb",
- [0x0330] = "tildebelowcmb",
- [0x0331] = "macronbelowcmb",
- [0x0332] = "lowlinecmb",
- [0x0333] = "dbllowlinecmb",
- [0x0334] = "tildeoverlaycmb",
- [0x0335] = "strokeshortoverlaycmb",
- [0x0336] = "strokelongoverlaycmb",
- [0x0337] = "solidusshortoverlaycmb",
- [0x0338] = "soliduslongoverlaycmb",
- [0x0339] = "ringhalfrightbelowcmb",
- [0x033A] = "bridgeinvertedbelowcmb",
- [0x033B] = "squarebelowcmb",
- [0x033C] = "seagullbelowcmb",
- [0x033D] = "xabovecmb",
- [0x033E] = "tildeverticalcmb",
- [0x033F] = "dbloverlinecmb",
- [0x0340] = "gravetonecmb",
- [0x0341] = "acutetonecmb",
- [0x0342] = "perispomenigreekcmb",
- [0x0343] = "koroniscmb",
- [0x0344] = "dialytikatonoscmb",
- [0x0345] = "ypogegrammenigreekcmb",
- [0x0360] = "tildedoublecmb",
- [0x0361] = "breveinverteddoublecmb",
- [0x0374] = "numeralsigngreek",
- [0x0375] = "numeralsignlowergreek",
- [0x037A] = "ypogegrammeni",
- [0x037E] = "questiongreek",
- [0x0384] = "tonos",
- [0x0385] = "dieresistonos",
- [0x0386] = "Alphatonos",
- [0x0387] = "anoteleia",
- [0x0388] = "Epsilontonos",
- [0x0389] = "Etatonos",
- [0x038A] = "Iotatonos",
- [0x038C] = "Omicrontonos",
- [0x038E] = "Upsilontonos",
- [0x038F] = "Omegatonos",
- [0x0390] = "iotadieresistonos",
- [0x0391] = "Alpha",
- [0x0392] = "Beta",
- [0x0393] = "Gamma",
- [0x0394] = "Deltagreek",
- [0x0395] = "Epsilon",
- [0x0396] = "Zeta",
- [0x0397] = "Eta",
- [0x0398] = "Theta",
- [0x0399] = "Iota",
- [0x039A] = "Kappa",
- [0x039B] = "Lambda",
- [0x039C] = "Mu",
- [0x039D] = "Nu",
- [0x039E] = "Xi",
- [0x039F] = "Omicron",
- [0x03A0] = "Pi",
- [0x03A1] = "Rho",
- [0x03A3] = "Sigma",
- [0x03A4] = "Tau",
- [0x03A5] = "Upsilon",
- [0x03A6] = "Phi",
- [0x03A7] = "Chi",
- [0x03A8] = "Psi",
- [0x03A9] = "Omegagreek",
- [0x03AA] = "Iotadieresis",
- [0x03AB] = "Upsilondieresis",
- [0x03AC] = "alphatonos",
- [0x03AD] = "epsilontonos",
- [0x03AE] = "etatonos",
- [0x03AF] = "iotatonos",
- [0x03B0] = "upsilondieresistonos",
- [0x03B1] = "alpha",
- [0x03B2] = "beta",
- [0x03B3] = "gamma",
- [0x03B4] = "delta",
- [0x03B5] = "epsilon",
- [0x03B6] = "zeta",
- [0x03B7] = "eta",
- [0x03B8] = "theta",
- [0x03B9] = "iota",
- [0x03BA] = "kappa",
- [0x03BB] = "lambda",
- [0x03BC] = "mugreek",
- [0x03BD] = "nu",
- [0x03BE] = "xi",
- [0x03BF] = "omicron",
- [0x03C0] = "pi",
- [0x03C1] = "rho",
- [0x03C2] = "sigmafinal",
- [0x03C3] = "sigma",
- [0x03C4] = "tau",
- [0x03C5] = "upsilon",
- [0x03C6] = "phi",
- [0x03C7] = "chi",
- [0x03C8] = "psi",
- [0x03C9] = "omega",
- [0x03CA] = "iotadieresis",
- [0x03CB] = "upsilondieresis",
- [0x03CC] = "omicrontonos",
- [0x03CD] = "upsilontonos",
- [0x03CE] = "omegatonos",
- [0x03D0] = "betasymbolgreek",
- [0x03D1] = "thetasymbolgreek",
- [0x03D2] = "Upsilonhooksymbol",
- [0x03D3] = "Upsilonacutehooksymbolgreek",
- [0x03D4] = "Upsilondieresishooksymbolgreek",
- [0x03D5] = "phisymbolgreek",
- [0x03D6] = "pisymbolgreek",
- [0x03DA] = "Stigmagreek",
- [0x03DC] = "Digammagreek",
- [0x03DE] = "Koppagreek",
- [0x03E0] = "Sampigreek",
- [0x03E2] = "Sheicoptic",
- [0x03E3] = "sheicoptic",
- [0x03E4] = "Feicoptic",
- [0x03E5] = "feicoptic",
- [0x03E6] = "Kheicoptic",
- [0x03E7] = "kheicoptic",
- [0x03E8] = "Horicoptic",
- [0x03E9] = "horicoptic",
- [0x03EA] = "Gangiacoptic",
- [0x03EB] = "gangiacoptic",
- [0x03EC] = "Shimacoptic",
- [0x03ED] = "shimacoptic",
- [0x03EE] = "Deicoptic",
- [0x03EF] = "deicoptic",
- [0x03F0] = "kappasymbolgreek",
- [0x03F1] = "rhosymbolgreek",
- [0x03F2] = "sigmalunatesymbolgreek",
- [0x03F3] = "yotgreek",
- [0x0401] = "afii10023",
- [0x0402] = "afii10051",
- [0x0403] = "afii10052",
- [0x0404] = "afii10053",
- [0x0405] = "afii10054",
- [0x0406] = "afii10055",
- [0x0407] = "afii10056",
- [0x0408] = "afii10057",
- [0x0409] = "afii10058",
- [0x040A] = "afii10059",
- [0x040B] = "afii10060",
- [0x040C] = "afii10061",
- [0x040E] = "afii10062",
- [0x040F] = "afii10145",
- [0x0410] = "afii10017",
- [0x0411] = "afii10018",
- [0x0412] = "afii10019",
- [0x0413] = "afii10020",
- [0x0414] = "afii10021",
- [0x0415] = "afii10022",
- [0x0416] = "afii10024",
- [0x0417] = "afii10025",
- [0x0418] = "afii10026",
- [0x0419] = "afii10027",
- [0x041A] = "afii10028",
- [0x041B] = "afii10029",
- [0x041C] = "afii10030",
- [0x041D] = "afii10031",
- [0x041E] = "afii10032",
- [0x041F] = "afii10033",
- [0x0420] = "afii10034",
- [0x0421] = "afii10035",
- [0x0422] = "afii10036",
- [0x0423] = "afii10037",
- [0x0424] = "afii10038",
- [0x0425] = "afii10039",
- [0x0426] = "afii10040",
- [0x0427] = "afii10041",
- [0x0428] = "afii10042",
- [0x0429] = "afii10043",
- [0x042A] = "afii10044",
- [0x042B] = "afii10045",
- [0x042C] = "afii10046",
- [0x042D] = "afii10047",
- [0x042E] = "afii10048",
- [0x042F] = "afii10049",
- [0x0430] = "afii10065",
- [0x0431] = "becyrillic",
- [0x0432] = "vecyrillic",
- [0x0433] = "gecyrillic",
- [0x0434] = "decyrillic",
- [0x0435] = "iecyrillic",
- [0x0436] = "zhecyrillic",
- [0x0437] = "zecyrillic",
- [0x0438] = "iicyrillic",
- [0x0439] = "iishortcyrillic",
- [0x043A] = "kacyrillic",
- [0x043B] = "elcyrillic",
- [0x043C] = "emcyrillic",
- [0x043D] = "encyrillic",
- [0x043E] = "ocyrillic",
- [0x043F] = "pecyrillic",
- [0x0440] = "ercyrillic",
- [0x0441] = "escyrillic",
- [0x0442] = "tecyrillic",
- [0x0443] = "ucyrillic",
- [0x0444] = "efcyrillic",
- [0x0445] = "khacyrillic",
- [0x0446] = "tsecyrillic",
- [0x0447] = "checyrillic",
- [0x0448] = "shacyrillic",
- [0x0449] = "shchacyrillic",
- [0x044A] = "hardsigncyrillic",
- [0x044B] = "yericyrillic",
- [0x044C] = "softsigncyrillic",
- [0x044D] = "ereversedcyrillic",
- [0x044E] = "iucyrillic",
- [0x044F] = "iacyrillic",
- [0x0451] = "iocyrillic",
- [0x0452] = "djecyrillic",
- [0x0453] = "gjecyrillic",
- [0x0454] = "ecyrillic",
- [0x0455] = "dzecyrillic",
- [0x0456] = "icyrillic",
- [0x0457] = "yicyrillic",
- [0x0458] = "jecyrillic",
- [0x0459] = "ljecyrillic",
- [0x045A] = "njecyrillic",
- [0x045B] = "tshecyrillic",
- [0x045C] = "kjecyrillic",
- [0x045E] = "ushortcyrillic",
- [0x045F] = "dzhecyrillic",
- [0x0460] = "Omegacyrillic",
- [0x0461] = "omegacyrillic",
- [0x0462] = "afii10146",
- [0x0463] = "yatcyrillic",
- [0x0464] = "Eiotifiedcyrillic",
- [0x0465] = "eiotifiedcyrillic",
- [0x0466] = "Yuslittlecyrillic",
- [0x0467] = "yuslittlecyrillic",
- [0x0468] = "Yuslittleiotifiedcyrillic",
- [0x0469] = "yuslittleiotifiedcyrillic",
- [0x046A] = "Yusbigcyrillic",
- [0x046B] = "yusbigcyrillic",
- [0x046C] = "Yusbigiotifiedcyrillic",
- [0x046D] = "yusbigiotifiedcyrillic",
- [0x046E] = "Ksicyrillic",
- [0x046F] = "ksicyrillic",
- [0x0470] = "Psicyrillic",
- [0x0471] = "psicyrillic",
- [0x0472] = "afii10147",
- [0x0473] = "fitacyrillic",
- [0x0474] = "afii10148",
- [0x0475] = "izhitsacyrillic",
- [0x0476] = "Izhitsadblgravecyrillic",
- [0x0477] = "izhitsadblgravecyrillic",
- [0x0478] = "Ukcyrillic",
- [0x0479] = "ukcyrillic",
- [0x047A] = "Omegaroundcyrillic",
- [0x047B] = "omegaroundcyrillic",
- [0x047C] = "Omegatitlocyrillic",
- [0x047D] = "omegatitlocyrillic",
- [0x047E] = "Otcyrillic",
- [0x047F] = "otcyrillic",
- [0x0480] = "Koppacyrillic",
- [0x0481] = "koppacyrillic",
- [0x0482] = "thousandcyrillic",
- [0x0483] = "titlocyrilliccmb",
- [0x0484] = "palatalizationcyrilliccmb",
- [0x0485] = "dasiapneumatacyrilliccmb",
- [0x0486] = "psilipneumatacyrilliccmb",
- [0x0490] = "afii10050",
- [0x0491] = "gheupturncyrillic",
- [0x0492] = "Ghestrokecyrillic",
- [0x0493] = "ghestrokecyrillic",
- [0x0494] = "Ghemiddlehookcyrillic",
- [0x0495] = "ghemiddlehookcyrillic",
- [0x0496] = "Zhedescendercyrillic",
- [0x0497] = "zhedescendercyrillic",
- [0x0498] = "Zedescendercyrillic",
- [0x0499] = "zedescendercyrillic",
- [0x049A] = "Kadescendercyrillic",
- [0x049B] = "kadescendercyrillic",
- [0x049C] = "Kaverticalstrokecyrillic",
- [0x049D] = "kaverticalstrokecyrillic",
- [0x049E] = "Kastrokecyrillic",
- [0x049F] = "kastrokecyrillic",
- [0x04A0] = "Kabashkircyrillic",
- [0x04A1] = "kabashkircyrillic",
- [0x04A2] = "Endescendercyrillic",
- [0x04A3] = "endescendercyrillic",
- [0x04A4] = "Enghecyrillic",
- [0x04A5] = "enghecyrillic",
- [0x04A6] = "Pemiddlehookcyrillic",
- [0x04A7] = "pemiddlehookcyrillic",
- [0x04A8] = "Haabkhasiancyrillic",
- [0x04A9] = "haabkhasiancyrillic",
- [0x04AA] = "Esdescendercyrillic",
- [0x04AB] = "esdescendercyrillic",
- [0x04AC] = "Tedescendercyrillic",
- [0x04AD] = "tedescendercyrillic",
- [0x04AE] = "Ustraightcyrillic",
- [0x04AF] = "ustraightcyrillic",
- [0x04B0] = "Ustraightstrokecyrillic",
- [0x04B1] = "ustraightstrokecyrillic",
- [0x04B2] = "Hadescendercyrillic",
- [0x04B3] = "hadescendercyrillic",
- [0x04B4] = "Tetsecyrillic",
- [0x04B5] = "tetsecyrillic",
- [0x04B6] = "Chedescendercyrillic",
- [0x04B7] = "chedescendercyrillic",
- [0x04B8] = "Cheverticalstrokecyrillic",
- [0x04B9] = "cheverticalstrokecyrillic",
- [0x04BA] = "Shhacyrillic",
- [0x04BB] = "shhacyrillic",
- [0x04BC] = "Cheabkhasiancyrillic",
- [0x04BD] = "cheabkhasiancyrillic",
- [0x04BE] = "Chedescenderabkhasiancyrillic",
- [0x04BF] = "chedescenderabkhasiancyrillic",
- [0x04C0] = "palochkacyrillic",
- [0x04C1] = "Zhebrevecyrillic",
- [0x04C2] = "zhebrevecyrillic",
- [0x04C3] = "Kahookcyrillic",
- [0x04C4] = "kahookcyrillic",
- [0x04C7] = "Enhookcyrillic",
- [0x04C8] = "enhookcyrillic",
- [0x04CB] = "Chekhakassiancyrillic",
- [0x04CC] = "chekhakassiancyrillic",
- [0x04D0] = "Abrevecyrillic",
- [0x04D1] = "abrevecyrillic",
- [0x04D2] = "Adieresiscyrillic",
- [0x04D3] = "adieresiscyrillic",
- [0x04D4] = "Aiecyrillic",
- [0x04D5] = "aiecyrillic",
- [0x04D6] = "Iebrevecyrillic",
- [0x04D7] = "iebrevecyrillic",
- [0x04D8] = "Schwacyrillic",
- [0x04D9] = "schwacyrillic",
- [0x04DA] = "Schwadieresiscyrillic",
- [0x04DB] = "schwadieresiscyrillic",
- [0x04DC] = "Zhedieresiscyrillic",
- [0x04DD] = "zhedieresiscyrillic",
- [0x04DE] = "Zedieresiscyrillic",
- [0x04DF] = "zedieresiscyrillic",
- [0x04E0] = "Dzeabkhasiancyrillic",
- [0x04E1] = "dzeabkhasiancyrillic",
- [0x04E2] = "Imacroncyrillic",
- [0x04E3] = "imacroncyrillic",
- [0x04E4] = "Idieresiscyrillic",
- [0x04E5] = "idieresiscyrillic",
- [0x04E6] = "Odieresiscyrillic",
- [0x04E7] = "odieresiscyrillic",
- [0x04E8] = "Obarredcyrillic",
- [0x04E9] = "obarredcyrillic",
- [0x04EA] = "Obarreddieresiscyrillic",
- [0x04EB] = "obarreddieresiscyrillic",
- [0x04EE] = "Umacroncyrillic",
- [0x04EF] = "umacroncyrillic",
- [0x04F0] = "Udieresiscyrillic",
- [0x04F1] = "udieresiscyrillic",
- [0x04F2] = "Uhungarumlautcyrillic",
- [0x04F3] = "uhungarumlautcyrillic",
- [0x04F4] = "Chedieresiscyrillic",
- [0x04F5] = "chedieresiscyrillic",
- [0x04F8] = "Yerudieresiscyrillic",
- [0x04F9] = "yerudieresiscyrillic",
- [0x0531] = "Aybarmenian",
- [0x0532] = "Benarmenian",
- [0x0533] = "Gimarmenian",
- [0x0534] = "Daarmenian",
- [0x0535] = "Echarmenian",
- [0x0536] = "Zaarmenian",
- [0x0537] = "Eharmenian",
- [0x0538] = "Etarmenian",
- [0x0539] = "Toarmenian",
- [0x053A] = "Zhearmenian",
- [0x053B] = "Iniarmenian",
- [0x053C] = "Liwnarmenian",
- [0x053D] = "Xeharmenian",
- [0x053E] = "Caarmenian",
- [0x053F] = "Kenarmenian",
- [0x0540] = "Hoarmenian",
- [0x0541] = "Jaarmenian",
- [0x0542] = "Ghadarmenian",
- [0x0543] = "Cheharmenian",
- [0x0544] = "Menarmenian",
- [0x0545] = "Yiarmenian",
- [0x0546] = "Nowarmenian",
- [0x0547] = "Shaarmenian",
- [0x0548] = "Voarmenian",
- [0x0549] = "Chaarmenian",
- [0x054A] = "Peharmenian",
- [0x054B] = "Jheharmenian",
- [0x054C] = "Raarmenian",
- [0x054D] = "Seharmenian",
- [0x054E] = "Vewarmenian",
- [0x054F] = "Tiwnarmenian",
- [0x0550] = "Reharmenian",
- [0x0551] = "Coarmenian",
- [0x0552] = "Yiwnarmenian",
- [0x0553] = "Piwrarmenian",
- [0x0554] = "Keharmenian",
- [0x0555] = "Oharmenian",
- [0x0556] = "Feharmenian",
- [0x0559] = "ringhalfleftarmenian",
- [0x055A] = "apostrophearmenian",
- [0x055B] = "emphasismarkarmenian",
- [0x055C] = "exclamarmenian",
- [0x055D] = "commaarmenian",
- [0x055E] = "questionarmenian",
- [0x055F] = "abbreviationmarkarmenian",
- [0x0561] = "aybarmenian",
- [0x0562] = "benarmenian",
- [0x0563] = "gimarmenian",
- [0x0564] = "daarmenian",
- [0x0565] = "echarmenian",
- [0x0566] = "zaarmenian",
- [0x0567] = "eharmenian",
- [0x0568] = "etarmenian",
- [0x0569] = "toarmenian",
- [0x056A] = "zhearmenian",
- [0x056B] = "iniarmenian",
- [0x056C] = "liwnarmenian",
- [0x056D] = "xeharmenian",
- [0x056E] = "caarmenian",
- [0x056F] = "kenarmenian",
- [0x0570] = "hoarmenian",
- [0x0571] = "jaarmenian",
- [0x0572] = "ghadarmenian",
- [0x0573] = "cheharmenian",
- [0x0574] = "menarmenian",
- [0x0575] = "yiarmenian",
- [0x0576] = "nowarmenian",
- [0x0577] = "shaarmenian",
- [0x0578] = "voarmenian",
- [0x0579] = "chaarmenian",
- [0x057A] = "peharmenian",
- [0x057B] = "jheharmenian",
- [0x057C] = "raarmenian",
- [0x057D] = "seharmenian",
- [0x057E] = "vewarmenian",
- [0x057F] = "tiwnarmenian",
- [0x0580] = "reharmenian",
- [0x0581] = "coarmenian",
- [0x0582] = "yiwnarmenian",
- [0x0583] = "piwrarmenian",
- [0x0584] = "keharmenian",
- [0x0585] = "oharmenian",
- [0x0586] = "feharmenian",
- [0x0587] = "echyiwnarmenian",
- [0x0589] = "periodarmenian",
- [0x0591] = "etnahtalefthebrew",
- [0x0592] = "segoltahebrew",
- [0x0593] = "shalshelethebrew",
- [0x0594] = "zaqefqatanhebrew",
- [0x0595] = "zaqefgadolhebrew",
- [0x0596] = "tipehalefthebrew",
- [0x0597] = "reviamugrashhebrew",
- [0x0598] = "zarqahebrew",
- [0x0599] = "pashtahebrew",
- [0x059A] = "yetivhebrew",
- [0x059B] = "tevirlefthebrew",
- [0x059C] = "gereshaccenthebrew",
- [0x059D] = "gereshmuqdamhebrew",
- [0x059E] = "gershayimaccenthebrew",
- [0x059F] = "qarneyparahebrew",
- [0x05A0] = "telishagedolahebrew",
- [0x05A1] = "pazerhebrew",
- [0x05A3] = "munahlefthebrew",
- [0x05A4] = "mahapakhlefthebrew",
- [0x05A5] = "merkhalefthebrew",
- [0x05A6] = "merkhakefulalefthebrew",
- [0x05A7] = "dargalefthebrew",
- [0x05A8] = "qadmahebrew",
- [0x05A9] = "telishaqetanahebrew",
- [0x05AA] = "yerahbenyomolefthebrew",
- [0x05AB] = "olehebrew",
- [0x05AC] = "iluyhebrew",
- [0x05AD] = "dehihebrew",
- [0x05AE] = "zinorhebrew",
- [0x05AF] = "masoracirclehebrew",
- [0x05B0] = "shevawidehebrew",
- [0x05B1] = "hatafsegolwidehebrew",
- [0x05B2] = "hatafpatahwidehebrew",
- [0x05B3] = "hatafqamatswidehebrew",
- [0x05B4] = "hiriqwidehebrew",
- [0x05B5] = "tserewidehebrew",
- [0x05B6] = "segolwidehebrew",
- [0x05B7] = "patahwidehebrew",
- [0x05B8] = "qamatswidehebrew",
- [0x05B9] = "holamwidehebrew",
- [0x05BB] = "qubutswidehebrew",
- [0x05BC] = "dageshhebrew",
- [0x05BD] = "siluqlefthebrew",
- [0x05BE] = "maqafhebrew",
- [0x05BF] = "rafehebrew",
- [0x05C0] = "paseqhebrew",
- [0x05C1] = "shindothebrew",
- [0x05C2] = "sindothebrew",
- [0x05C3] = "sofpasuqhebrew",
- [0x05C4] = "upperdothebrew",
- [0x05D0] = "alefhebrew",
- [0x05D1] = "bethebrew",
- [0x05D2] = "gimelhebrew",
- [0x05D3] = "dalettserehebrew",
- [0x05D4] = "hehebrew",
- [0x05D5] = "vavhebrew",
- [0x05D6] = "zayinhebrew",
- [0x05D7] = "hethebrew",
- [0x05D8] = "tethebrew",
- [0x05D9] = "yodhebrew",
- [0x05DA] = "finalkafshevahebrew",
- [0x05DB] = "kafhebrew",
- [0x05DC] = "lamedholamhebrew",
- [0x05DD] = "finalmemhebrew",
- [0x05DE] = "memhebrew",
- [0x05DF] = "finalnunhebrew",
- [0x05E0] = "nunhebrew",
- [0x05E1] = "samekhhebrew",
- [0x05E2] = "ayinhebrew",
- [0x05E3] = "finalpehebrew",
- [0x05E4] = "pehebrew",
- [0x05E5] = "finaltsadihebrew",
- [0x05E6] = "tsadihebrew",
- [0x05E7] = "qoftserehebrew",
- [0x05E8] = "reshtserehebrew",
- [0x05E9] = "shinhebrew",
- [0x05EA] = "tavhebrew",
- [0x05F0] = "vavvavhebrew",
- [0x05F1] = "vavyodhebrew",
- [0x05F2] = "yodyodhebrew",
- [0x05F3] = "gereshhebrew",
- [0x05F4] = "gershayimhebrew",
- [0x060C] = "commaarabic",
- [0x061B] = "semicolonarabic",
- [0x061F] = "questionarabic",
- [0x0621] = "hamzasukunarabic",
- [0x0622] = "alefmaddaabovearabic",
- [0x0623] = "alefhamzaabovearabic",
- [0x0624] = "wawhamzaabovearabic",
- [0x0625] = "alefhamzabelowarabic",
- [0x0626] = "yehhamzaabovearabic",
- [0x0627] = "alefarabic",
- [0x0628] = "beharabic",
- [0x0629] = "tehmarbutaarabic",
- [0x062A] = "teharabic",
- [0x062B] = "theharabic",
- [0x062C] = "jeemarabic",
- [0x062D] = "haharabic",
- [0x062E] = "khaharabic",
- [0x062F] = "dalarabic",
- [0x0630] = "thalarabic",
- [0x0631] = "rehyehaleflamarabic",
- [0x0632] = "zainarabic",
- [0x0633] = "seenarabic",
- [0x0634] = "sheenarabic",
- [0x0635] = "sadarabic",
- [0x0636] = "dadarabic",
- [0x0637] = "taharabic",
- [0x0638] = "zaharabic",
- [0x0639] = "ainarabic",
- [0x063A] = "ghainarabic",
- [0x0640] = "tatweelarabic",
- [0x0641] = "feharabic",
- [0x0642] = "qafarabic",
- [0x0643] = "kafarabic",
- [0x0644] = "lamarabic",
- [0x0645] = "meemarabic",
- [0x0646] = "noonarabic",
- [0x0647] = "heharabic",
- [0x0648] = "wawarabic",
- [0x0649] = "alefmaksuraarabic",
- [0x064A] = "yeharabic",
- [0x064B] = "fathatanarabic",
- [0x064C] = "dammatanarabic",
- [0x064D] = "kasratanarabic",
- [0x064E] = "fathalowarabic",
- [0x064F] = "dammalowarabic",
- [0x0650] = "kasraarabic",
- [0x0651] = "shaddafathatanarabic",
- [0x0652] = "sukunarabic",
- [0x0660] = "zerohackarabic",
- [0x0661] = "onehackarabic",
- [0x0662] = "twohackarabic",
- [0x0663] = "threehackarabic",
- [0x0664] = "fourhackarabic",
- [0x0665] = "fivehackarabic",
- [0x0666] = "sixhackarabic",
- [0x0667] = "sevenhackarabic",
- [0x0668] = "eighthackarabic",
- [0x0669] = "ninehackarabic",
- [0x066A] = "percentarabic",
- [0x066B] = "decimalseparatorpersian",
- [0x066C] = "thousandsseparatorpersian",
- [0x066D] = "asteriskarabic",
- [0x0679] = "tteharabic",
- [0x067E] = "peharabic",
- [0x0686] = "tcheharabic",
- [0x0688] = "ddalarabic",
- [0x0691] = "rreharabic",
- [0x0698] = "jeharabic",
- [0x06A4] = "veharabic",
- [0x06AF] = "gafarabic",
- [0x06BA] = "noonghunnaarabic",
- [0x06C1] = "hehaltonearabic",
- [0x06D1] = "yehthreedotsbelowarabic",
- [0x06D2] = "yehbarreearabic",
- [0x06D5] = "afii57534",
- [0x06F0] = "zeropersian",
- [0x06F1] = "onepersian",
- [0x06F2] = "twopersian",
- [0x06F3] = "threepersian",
- [0x06F4] = "fourpersian",
- [0x06F5] = "fivepersian",
- [0x06F6] = "sixpersian",
- [0x06F7] = "sevenpersian",
- [0x06F8] = "eightpersian",
- [0x06F9] = "ninepersian",
- [0x0901] = "candrabindudeva",
- [0x0902] = "anusvaradeva",
- [0x0903] = "visargadeva",
- [0x0905] = "adeva",
- [0x0906] = "aadeva",
- [0x0907] = "ideva",
- [0x0908] = "iideva",
- [0x0909] = "udeva",
- [0x090A] = "uudeva",
- [0x090B] = "rvocalicdeva",
- [0x090C] = "lvocalicdeva",
- [0x090D] = "ecandradeva",
- [0x090E] = "eshortdeva",
- [0x090F] = "edeva",
- [0x0910] = "aideva",
- [0x0911] = "ocandradeva",
- [0x0912] = "oshortdeva",
- [0x0913] = "odeva",
- [0x0914] = "audeva",
- [0x0915] = "kadeva",
- [0x0916] = "khadeva",
- [0x0917] = "gadeva",
- [0x0918] = "ghadeva",
- [0x0919] = "ngadeva",
- [0x091A] = "cadeva",
- [0x091B] = "chadeva",
- [0x091C] = "jadeva",
- [0x091D] = "jhadeva",
- [0x091E] = "nyadeva",
- [0x091F] = "ttadeva",
- [0x0920] = "tthadeva",
- [0x0921] = "ddadeva",
- [0x0922] = "ddhadeva",
- [0x0923] = "nnadeva",
- [0x0924] = "tadeva",
- [0x0925] = "thadeva",
- [0x0926] = "dadeva",
- [0x0927] = "dhadeva",
- [0x0928] = "nadeva",
- [0x0929] = "nnnadeva",
- [0x092A] = "padeva",
- [0x092B] = "phadeva",
- [0x092C] = "badeva",
- [0x092D] = "bhadeva",
- [0x092E] = "madeva",
- [0x092F] = "yadeva",
- [0x0930] = "radeva",
- [0x0931] = "rradeva",
- [0x0932] = "ladeva",
- [0x0933] = "lladeva",
- [0x0934] = "llladeva",
- [0x0935] = "vadeva",
- [0x0936] = "shadeva",
- [0x0937] = "ssadeva",
- [0x0938] = "sadeva",
- [0x0939] = "hadeva",
- [0x093C] = "nuktadeva",
- [0x093D] = "avagrahadeva",
- [0x093E] = "aavowelsigndeva",
- [0x093F] = "ivowelsigndeva",
- [0x0940] = "iivowelsigndeva",
- [0x0941] = "uvowelsigndeva",
- [0x0942] = "uuvowelsigndeva",
- [0x0943] = "rvocalicvowelsigndeva",
- [0x0944] = "rrvocalicvowelsigndeva",
- [0x0945] = "ecandravowelsigndeva",
- [0x0946] = "eshortvowelsigndeva",
- [0x0947] = "evowelsigndeva",
- [0x0948] = "aivowelsigndeva",
- [0x0949] = "ocandravowelsigndeva",
- [0x094A] = "oshortvowelsigndeva",
- [0x094B] = "ovowelsigndeva",
- [0x094C] = "auvowelsigndeva",
- [0x094D] = "viramadeva",
- [0x0950] = "omdeva",
- [0x0951] = "udattadeva",
- [0x0952] = "anudattadeva",
- [0x0953] = "gravedeva",
- [0x0954] = "acutedeva",
- [0x0958] = "qadeva",
- [0x0959] = "khhadeva",
- [0x095A] = "ghhadeva",
- [0x095B] = "zadeva",
- [0x095C] = "dddhadeva",
- [0x095D] = "rhadeva",
- [0x095E] = "fadeva",
- [0x095F] = "yyadeva",
- [0x0960] = "rrvocalicdeva",
- [0x0961] = "llvocalicdeva",
- [0x0962] = "lvocalicvowelsigndeva",
- [0x0963] = "llvocalicvowelsigndeva",
- [0x0964] = "danda",
- [0x0965] = "dbldanda",
- [0x0966] = "zerodeva",
- [0x0967] = "onedeva",
- [0x0968] = "twodeva",
- [0x0969] = "threedeva",
- [0x096A] = "fourdeva",
- [0x096B] = "fivedeva",
- [0x096C] = "sixdeva",
- [0x096D] = "sevendeva",
- [0x096E] = "eightdeva",
- [0x096F] = "ninedeva",
- [0x0970] = "abbreviationsigndeva",
- [0x0981] = "candrabindubengali",
- [0x0982] = "anusvarabengali",
- [0x0983] = "visargabengali",
- [0x0985] = "abengali",
- [0x0986] = "aabengali",
- [0x0987] = "ibengali",
- [0x0988] = "iibengali",
- [0x0989] = "ubengali",
- [0x098A] = "uubengali",
- [0x098B] = "rvocalicbengali",
- [0x098C] = "lvocalicbengali",
- [0x098F] = "ebengali",
- [0x0990] = "aibengali",
- [0x0993] = "obengali",
- [0x0994] = "aubengali",
- [0x0995] = "kabengali",
- [0x0996] = "khabengali",
- [0x0997] = "gabengali",
- [0x0998] = "ghabengali",
- [0x0999] = "ngabengali",
- [0x099A] = "cabengali",
- [0x099B] = "chabengali",
- [0x099C] = "jabengali",
- [0x099D] = "jhabengali",
- [0x099E] = "nyabengali",
- [0x099F] = "ttabengali",
- [0x09A0] = "tthabengali",
- [0x09A1] = "ddabengali",
- [0x09A2] = "ddhabengali",
- [0x09A3] = "nnabengali",
- [0x09A4] = "tabengali",
- [0x09A5] = "thabengali",
- [0x09A6] = "dabengali",
- [0x09A7] = "dhabengali",
- [0x09A8] = "nabengali",
- [0x09AA] = "pabengali",
- [0x09AB] = "phabengali",
- [0x09AC] = "babengali",
- [0x09AD] = "bhabengali",
- [0x09AE] = "mabengali",
- [0x09AF] = "yabengali",
- [0x09B0] = "rabengali",
- [0x09B2] = "labengali",
- [0x09B6] = "shabengali",
- [0x09B7] = "ssabengali",
- [0x09B8] = "sabengali",
- [0x09B9] = "habengali",
- [0x09BC] = "nuktabengali",
- [0x09BE] = "aavowelsignbengali",
- [0x09BF] = "ivowelsignbengali",
- [0x09C0] = "iivowelsignbengali",
- [0x09C1] = "uvowelsignbengali",
- [0x09C2] = "uuvowelsignbengali",
- [0x09C3] = "rvocalicvowelsignbengali",
- [0x09C4] = "rrvocalicvowelsignbengali",
- [0x09C7] = "evowelsignbengali",
- [0x09C8] = "aivowelsignbengali",
- [0x09CB] = "ovowelsignbengali",
- [0x09CC] = "auvowelsignbengali",
- [0x09CD] = "viramabengali",
- [0x09D7] = "aulengthmarkbengali",
- [0x09DC] = "rrabengali",
- [0x09DD] = "rhabengali",
- [0x09DF] = "yyabengali",
- [0x09E0] = "rrvocalicbengali",
- [0x09E1] = "llvocalicbengali",
- [0x09E2] = "lvocalicvowelsignbengali",
- [0x09E3] = "llvocalicvowelsignbengali",
- [0x09E6] = "zerobengali",
- [0x09E7] = "onebengali",
- [0x09E8] = "twobengali",
- [0x09E9] = "threebengali",
- [0x09EA] = "fourbengali",
- [0x09EB] = "fivebengali",
- [0x09EC] = "sixbengali",
- [0x09ED] = "sevenbengali",
- [0x09EE] = "eightbengali",
- [0x09EF] = "ninebengali",
- [0x09F0] = "ramiddlediagonalbengali",
- [0x09F1] = "ralowerdiagonalbengali",
- [0x09F2] = "rupeemarkbengali",
- [0x09F3] = "rupeesignbengali",
- [0x09F4] = "onenumeratorbengali",
- [0x09F5] = "twonumeratorbengali",
- [0x09F6] = "threenumeratorbengali",
- [0x09F7] = "fournumeratorbengali",
- [0x09F8] = "denominatorminusonenumeratorbengali",
- [0x09F9] = "sixteencurrencydenominatorbengali",
- [0x09FA] = "issharbengali",
- [0x0A02] = "bindigurmukhi",
- [0x0A05] = "agurmukhi",
- [0x0A06] = "aagurmukhi",
- [0x0A07] = "igurmukhi",
- [0x0A08] = "iigurmukhi",
- [0x0A09] = "ugurmukhi",
- [0x0A0A] = "uugurmukhi",
- [0x0A0F] = "eegurmukhi",
- [0x0A10] = "aigurmukhi",
- [0x0A13] = "oogurmukhi",
- [0x0A14] = "augurmukhi",
- [0x0A15] = "kagurmukhi",
- [0x0A16] = "khagurmukhi",
- [0x0A17] = "gagurmukhi",
- [0x0A18] = "ghagurmukhi",
- [0x0A19] = "ngagurmukhi",
- [0x0A1A] = "cagurmukhi",
- [0x0A1B] = "chagurmukhi",
- [0x0A1C] = "jagurmukhi",
- [0x0A1D] = "jhagurmukhi",
- [0x0A1E] = "nyagurmukhi",
- [0x0A1F] = "ttagurmukhi",
- [0x0A20] = "tthagurmukhi",
- [0x0A21] = "ddagurmukhi",
- [0x0A22] = "ddhagurmukhi",
- [0x0A23] = "nnagurmukhi",
- [0x0A24] = "tagurmukhi",
- [0x0A25] = "thagurmukhi",
- [0x0A26] = "dagurmukhi",
- [0x0A27] = "dhagurmukhi",
- [0x0A28] = "nagurmukhi",
- [0x0A2A] = "pagurmukhi",
- [0x0A2B] = "phagurmukhi",
- [0x0A2C] = "bagurmukhi",
- [0x0A2D] = "bhagurmukhi",
- [0x0A2E] = "magurmukhi",
- [0x0A2F] = "yagurmukhi",
- [0x0A30] = "ragurmukhi",
- [0x0A32] = "lagurmukhi",
- [0x0A35] = "vagurmukhi",
- [0x0A36] = "shagurmukhi",
- [0x0A38] = "sagurmukhi",
- [0x0A39] = "hagurmukhi",
- [0x0A3C] = "nuktagurmukhi",
- [0x0A3E] = "aamatragurmukhi",
- [0x0A3F] = "imatragurmukhi",
- [0x0A40] = "iimatragurmukhi",
- [0x0A41] = "umatragurmukhi",
- [0x0A42] = "uumatragurmukhi",
- [0x0A47] = "eematragurmukhi",
- [0x0A48] = "aimatragurmukhi",
- [0x0A4B] = "oomatragurmukhi",
- [0x0A4C] = "aumatragurmukhi",
- [0x0A4D] = "halantgurmukhi",
- [0x0A59] = "khhagurmukhi",
- [0x0A5A] = "ghhagurmukhi",
- [0x0A5B] = "zagurmukhi",
- [0x0A5C] = "rragurmukhi",
- [0x0A5E] = "fagurmukhi",
- [0x0A66] = "zerogurmukhi",
- [0x0A67] = "onegurmukhi",
- [0x0A68] = "twogurmukhi",
- [0x0A69] = "threegurmukhi",
- [0x0A6A] = "fourgurmukhi",
- [0x0A6B] = "fivegurmukhi",
- [0x0A6C] = "sixgurmukhi",
- [0x0A6D] = "sevengurmukhi",
- [0x0A6E] = "eightgurmukhi",
- [0x0A6F] = "ninegurmukhi",
- [0x0A70] = "tippigurmukhi",
- [0x0A71] = "addakgurmukhi",
- [0x0A72] = "irigurmukhi",
- [0x0A73] = "uragurmukhi",
- [0x0A74] = "ekonkargurmukhi",
- [0x0A81] = "candrabindugujarati",
- [0x0A82] = "anusvaragujarati",
- [0x0A83] = "visargagujarati",
- [0x0A85] = "agujarati",
- [0x0A86] = "aagujarati",
- [0x0A87] = "igujarati",
- [0x0A88] = "iigujarati",
- [0x0A89] = "ugujarati",
- [0x0A8A] = "uugujarati",
- [0x0A8B] = "rvocalicgujarati",
- [0x0A8D] = "ecandragujarati",
- [0x0A8F] = "egujarati",
- [0x0A90] = "aigujarati",
- [0x0A91] = "ocandragujarati",
- [0x0A93] = "ogujarati",
- [0x0A94] = "augujarati",
- [0x0A95] = "kagujarati",
- [0x0A96] = "khagujarati",
- [0x0A97] = "gagujarati",
- [0x0A98] = "ghagujarati",
- [0x0A99] = "ngagujarati",
- [0x0A9A] = "cagujarati",
- [0x0A9B] = "chagujarati",
- [0x0A9C] = "jagujarati",
- [0x0A9D] = "jhagujarati",
- [0x0A9E] = "nyagujarati",
- [0x0A9F] = "ttagujarati",
- [0x0AA0] = "tthagujarati",
- [0x0AA1] = "ddagujarati",
- [0x0AA2] = "ddhagujarati",
- [0x0AA3] = "nnagujarati",
- [0x0AA4] = "tagujarati",
- [0x0AA5] = "thagujarati",
- [0x0AA6] = "dagujarati",
- [0x0AA7] = "dhagujarati",
- [0x0AA8] = "nagujarati",
- [0x0AAA] = "pagujarati",
- [0x0AAB] = "phagujarati",
- [0x0AAC] = "bagujarati",
- [0x0AAD] = "bhagujarati",
- [0x0AAE] = "magujarati",
- [0x0AAF] = "yagujarati",
- [0x0AB0] = "ragujarati",
- [0x0AB2] = "lagujarati",
- [0x0AB3] = "llagujarati",
- [0x0AB5] = "vagujarati",
- [0x0AB6] = "shagujarati",
- [0x0AB7] = "ssagujarati",
- [0x0AB8] = "sagujarati",
- [0x0AB9] = "hagujarati",
- [0x0ABC] = "nuktagujarati",
- [0x0ABE] = "aavowelsigngujarati",
- [0x0ABF] = "ivowelsigngujarati",
- [0x0AC0] = "iivowelsigngujarati",
- [0x0AC1] = "uvowelsigngujarati",
- [0x0AC2] = "uuvowelsigngujarati",
- [0x0AC3] = "rvocalicvowelsigngujarati",
- [0x0AC4] = "rrvocalicvowelsigngujarati",
- [0x0AC5] = "ecandravowelsigngujarati",
- [0x0AC7] = "evowelsigngujarati",
- [0x0AC8] = "aivowelsigngujarati",
- [0x0AC9] = "ocandravowelsigngujarati",
- [0x0ACB] = "ovowelsigngujarati",
- [0x0ACC] = "auvowelsigngujarati",
- [0x0ACD] = "viramagujarati",
- [0x0AD0] = "omgujarati",
- [0x0AE0] = "rrvocalicgujarati",
- [0x0AE6] = "zerogujarati",
- [0x0AE7] = "onegujarati",
- [0x0AE8] = "twogujarati",
- [0x0AE9] = "threegujarati",
- [0x0AEA] = "fourgujarati",
- [0x0AEB] = "fivegujarati",
- [0x0AEC] = "sixgujarati",
- [0x0AED] = "sevengujarati",
- [0x0AEE] = "eightgujarati",
- [0x0AEF] = "ninegujarati",
- [0x0E01] = "kokaithai",
- [0x0E02] = "khokhaithai",
- [0x0E03] = "khokhuatthai",
- [0x0E04] = "khokhwaithai",
- [0x0E05] = "khokhonthai",
- [0x0E06] = "khorakhangthai",
- [0x0E07] = "ngonguthai",
- [0x0E08] = "chochanthai",
- [0x0E09] = "chochingthai",
- [0x0E0A] = "chochangthai",
- [0x0E0B] = "sosothai",
- [0x0E0C] = "chochoethai",
- [0x0E0D] = "yoyingthai",
- [0x0E0E] = "dochadathai",
- [0x0E0F] = "topatakthai",
- [0x0E10] = "thothanthai",
- [0x0E11] = "thonangmonthothai",
- [0x0E12] = "thophuthaothai",
- [0x0E13] = "nonenthai",
- [0x0E14] = "dodekthai",
- [0x0E15] = "totaothai",
- [0x0E16] = "thothungthai",
- [0x0E17] = "thothahanthai",
- [0x0E18] = "thothongthai",
- [0x0E19] = "nonuthai",
- [0x0E1A] = "bobaimaithai",
- [0x0E1B] = "poplathai",
- [0x0E1C] = "phophungthai",
- [0x0E1D] = "fofathai",
- [0x0E1E] = "phophanthai",
- [0x0E1F] = "fofanthai",
- [0x0E20] = "phosamphaothai",
- [0x0E21] = "momathai",
- [0x0E22] = "yoyakthai",
- [0x0E23] = "roruathai",
- [0x0E24] = "ruthai",
- [0x0E25] = "lolingthai",
- [0x0E26] = "luthai",
- [0x0E27] = "wowaenthai",
- [0x0E28] = "sosalathai",
- [0x0E29] = "sorusithai",
- [0x0E2A] = "sosuathai",
- [0x0E2B] = "hohipthai",
- [0x0E2C] = "lochulathai",
- [0x0E2D] = "oangthai",
- [0x0E2E] = "honokhukthai",
- [0x0E2F] = "paiyannoithai",
- [0x0E30] = "saraathai",
- [0x0E31] = "maihanakatthai",
- [0x0E32] = "saraaathai",
- [0x0E33] = "saraamthai",
- [0x0E34] = "saraithai",
- [0x0E35] = "saraiithai",
- [0x0E36] = "sarauethai",
- [0x0E37] = "saraueethai",
- [0x0E38] = "sarauthai",
- [0x0E39] = "sarauuthai",
- [0x0E3A] = "phinthuthai",
- [0x0E3F] = "bahtthai",
- [0x0E40] = "saraethai",
- [0x0E41] = "saraaethai",
- [0x0E42] = "saraothai",
- [0x0E43] = "saraaimaimuanthai",
- [0x0E44] = "saraaimaimalaithai",
- [0x0E45] = "lakkhangyaothai",
- [0x0E46] = "maiyamokthai",
- [0x0E47] = "maitaikhuthai",
- [0x0E48] = "maiekthai",
- [0x0E49] = "maithothai",
- [0x0E4A] = "maitrithai",
- [0x0E4B] = "maichattawathai",
- [0x0E4C] = "thanthakhatthai",
- [0x0E4D] = "nikhahitthai",
- [0x0E4E] = "yamakkanthai",
- [0x0E4F] = "fongmanthai",
- [0x0E50] = "zerothai",
- [0x0E51] = "onethai",
- [0x0E52] = "twothai",
- [0x0E53] = "threethai",
- [0x0E54] = "fourthai",
- [0x0E55] = "fivethai",
- [0x0E56] = "sixthai",
- [0x0E57] = "seventhai",
- [0x0E58] = "eightthai",
- [0x0E59] = "ninethai",
- [0x0E5A] = "angkhankhuthai",
- [0x0E5B] = "khomutthai",
- [0x1E00] = "Aringbelow",
- [0x1E01] = "aringbelow",
- [0x1E02] = "Bdotaccent",
- [0x1E03] = "bdotaccent",
- [0x1E04] = "Bdotbelow",
- [0x1E05] = "bdotbelow",
- [0x1E06] = "Blinebelow",
- [0x1E07] = "blinebelow",
- [0x1E08] = "Ccedillaacute",
- [0x1E09] = "ccedillaacute",
- [0x1E0A] = "Ddotaccent",
- [0x1E0B] = "ddotaccent",
- [0x1E0C] = "Ddotbelow",
- [0x1E0D] = "ddotbelow",
- [0x1E0E] = "Dlinebelow",
- [0x1E0F] = "dlinebelow",
- [0x1E10] = "Dcedilla",
- [0x1E11] = "dcedilla",
- [0x1E12] = "Dcircumflexbelow",
- [0x1E13] = "dcircumflexbelow",
- [0x1E14] = "Emacrongrave",
- [0x1E15] = "emacrongrave",
- [0x1E16] = "Emacronacute",
- [0x1E17] = "emacronacute",
- [0x1E18] = "Ecircumflexbelow",
- [0x1E19] = "ecircumflexbelow",
- [0x1E1A] = "Etildebelow",
- [0x1E1B] = "etildebelow",
- [0x1E1C] = "Ecedillabreve",
- [0x1E1D] = "ecedillabreve",
- [0x1E1E] = "Fdotaccent",
- [0x1E1F] = "fdotaccent",
- [0x1E20] = "Gmacron",
- [0x1E21] = "gmacron",
- [0x1E22] = "Hdotaccent",
- [0x1E23] = "hdotaccent",
- [0x1E24] = "Hdotbelow",
- [0x1E25] = "hdotbelow",
- [0x1E26] = "Hdieresis",
- [0x1E27] = "hdieresis",
- [0x1E28] = "Hcedilla",
- [0x1E29] = "hcedilla",
- [0x1E2A] = "Hbrevebelow",
- [0x1E2B] = "hbrevebelow",
- [0x1E2C] = "Itildebelow",
- [0x1E2D] = "itildebelow",
- [0x1E2E] = "Idieresisacute",
- [0x1E2F] = "idieresisacute",
- [0x1E30] = "Kacute",
- [0x1E31] = "kacute",
- [0x1E32] = "Kdotbelow",
- [0x1E33] = "kdotbelow",
- [0x1E34] = "Klinebelow",
- [0x1E35] = "klinebelow",
- [0x1E36] = "Ldotbelow",
- [0x1E37] = "ldotbelow",
- [0x1E38] = "Ldotbelowmacron",
- [0x1E39] = "ldotbelowmacron",
- [0x1E3A] = "Llinebelow",
- [0x1E3B] = "llinebelow",
- [0x1E3C] = "Lcircumflexbelow",
- [0x1E3D] = "lcircumflexbelow",
- [0x1E3E] = "Macute",
- [0x1E3F] = "macute",
- [0x1E40] = "Mdotaccent",
- [0x1E41] = "mdotaccent",
- [0x1E42] = "Mdotbelow",
- [0x1E43] = "mdotbelow",
- [0x1E44] = "Ndotaccent",
- [0x1E45] = "ndotaccent",
- [0x1E46] = "Ndotbelow",
- [0x1E47] = "ndotbelow",
- [0x1E48] = "Nlinebelow",
- [0x1E49] = "nlinebelow",
- [0x1E4A] = "Ncircumflexbelow",
- [0x1E4B] = "ncircumflexbelow",
- [0x1E4C] = "Otildeacute",
- [0x1E4D] = "otildeacute",
- [0x1E4E] = "Otildedieresis",
- [0x1E4F] = "otildedieresis",
- [0x1E50] = "Omacrongrave",
- [0x1E51] = "omacrongrave",
- [0x1E52] = "Omacronacute",
- [0x1E53] = "omacronacute",
- [0x1E54] = "Pacute",
- [0x1E55] = "pacute",
- [0x1E56] = "Pdotaccent",
- [0x1E57] = "pdotaccent",
- [0x1E58] = "Rdotaccent",
- [0x1E59] = "rdotaccent",
- [0x1E5A] = "Rdotbelow",
- [0x1E5B] = "rdotbelow",
- [0x1E5C] = "Rdotbelowmacron",
- [0x1E5D] = "rdotbelowmacron",
- [0x1E5E] = "Rlinebelow",
- [0x1E5F] = "rlinebelow",
- [0x1E60] = "Sdotaccent",
- [0x1E61] = "sdotaccent",
- [0x1E62] = "Sdotbelow",
- [0x1E63] = "sdotbelow",
- [0x1E64] = "Sacutedotaccent",
- [0x1E65] = "sacutedotaccent",
- [0x1E66] = "Scarondotaccent",
- [0x1E67] = "scarondotaccent",
- [0x1E68] = "Sdotbelowdotaccent",
- [0x1E69] = "sdotbelowdotaccent",
- [0x1E6A] = "Tdotaccent",
- [0x1E6B] = "tdotaccent",
- [0x1E6C] = "Tdotbelow",
- [0x1E6D] = "tdotbelow",
- [0x1E6E] = "Tlinebelow",
- [0x1E6F] = "tlinebelow",
- [0x1E70] = "Tcircumflexbelow",
- [0x1E71] = "tcircumflexbelow",
- [0x1E72] = "Udieresisbelow",
- [0x1E73] = "udieresisbelow",
- [0x1E74] = "Utildebelow",
- [0x1E75] = "utildebelow",
- [0x1E76] = "Ucircumflexbelow",
- [0x1E77] = "ucircumflexbelow",
- [0x1E78] = "Utildeacute",
- [0x1E79] = "utildeacute",
- [0x1E7A] = "Umacrondieresis",
- [0x1E7B] = "umacrondieresis",
- [0x1E7C] = "Vtilde",
- [0x1E7D] = "vtilde",
- [0x1E7E] = "Vdotbelow",
- [0x1E7F] = "vdotbelow",
- [0x1E80] = "Wgrave",
- [0x1E81] = "wgrave",
- [0x1E82] = "Wacute",
- [0x1E83] = "wacute",
- [0x1E84] = "Wdieresis",
- [0x1E85] = "wdieresis",
- [0x1E86] = "Wdotaccent",
- [0x1E87] = "wdotaccent",
- [0x1E88] = "Wdotbelow",
- [0x1E89] = "wdotbelow",
- [0x1E8A] = "Xdotaccent",
- [0x1E8B] = "xdotaccent",
- [0x1E8C] = "Xdieresis",
- [0x1E8D] = "xdieresis",
- [0x1E8E] = "Ydotaccent",
- [0x1E8F] = "ydotaccent",
- [0x1E90] = "Zcircumflex",
- [0x1E91] = "zcircumflex",
- [0x1E92] = "Zdotbelow",
- [0x1E93] = "zdotbelow",
- [0x1E94] = "Zlinebelow",
- [0x1E95] = "zlinebelow",
- [0x1E96] = "hlinebelow",
- [0x1E97] = "tdieresis",
- [0x1E98] = "wring",
- [0x1E99] = "yring",
- [0x1E9A] = "arighthalfring",
- [0x1E9B] = "slongdotaccent",
- [0x1EA0] = "Adotbelow",
- [0x1EA1] = "adotbelow",
- [0x1EA2] = "Ahookabove",
- [0x1EA3] = "ahookabove",
- [0x1EA4] = "Acircumflexacute",
- [0x1EA5] = "acircumflexacute",
- [0x1EA6] = "Acircumflexgrave",
- [0x1EA7] = "acircumflexgrave",
- [0x1EA8] = "Acircumflexhookabove",
- [0x1EA9] = "acircumflexhookabove",
- [0x1EAA] = "Acircumflextilde",
- [0x1EAB] = "acircumflextilde",
- [0x1EAC] = "Acircumflexdotbelow",
- [0x1EAD] = "acircumflexdotbelow",
- [0x1EAE] = "Abreveacute",
- [0x1EAF] = "abreveacute",
- [0x1EB0] = "Abrevegrave",
- [0x1EB1] = "abrevegrave",
- [0x1EB2] = "Abrevehookabove",
- [0x1EB3] = "abrevehookabove",
- [0x1EB4] = "Abrevetilde",
- [0x1EB5] = "abrevetilde",
- [0x1EB6] = "Abrevedotbelow",
- [0x1EB7] = "abrevedotbelow",
- [0x1EB8] = "Edotbelow",
- [0x1EB9] = "edotbelow",
- [0x1EBA] = "Ehookabove",
- [0x1EBB] = "ehookabove",
- [0x1EBC] = "Etilde",
- [0x1EBD] = "etilde",
- [0x1EBE] = "Ecircumflexacute",
- [0x1EBF] = "ecircumflexacute",
- [0x1EC0] = "Ecircumflexgrave",
- [0x1EC1] = "ecircumflexgrave",
- [0x1EC2] = "Ecircumflexhookabove",
- [0x1EC3] = "ecircumflexhookabove",
- [0x1EC4] = "Ecircumflextilde",
- [0x1EC5] = "ecircumflextilde",
- [0x1EC6] = "Ecircumflexdotbelow",
- [0x1EC7] = "ecircumflexdotbelow",
- [0x1EC8] = "Ihookabove",
- [0x1EC9] = "ihookabove",
- [0x1ECA] = "Idotbelow",
- [0x1ECB] = "idotbelow",
- [0x1ECC] = "Odotbelow",
- [0x1ECD] = "odotbelow",
- [0x1ECE] = "Ohookabove",
- [0x1ECF] = "ohookabove",
- [0x1ED0] = "Ocircumflexacute",
- [0x1ED1] = "ocircumflexacute",
- [0x1ED2] = "Ocircumflexgrave",
- [0x1ED3] = "ocircumflexgrave",
- [0x1ED4] = "Ocircumflexhookabove",
- [0x1ED5] = "ocircumflexhookabove",
- [0x1ED6] = "Ocircumflextilde",
- [0x1ED7] = "ocircumflextilde",
- [0x1ED8] = "Ocircumflexdotbelow",
- [0x1ED9] = "ocircumflexdotbelow",
- [0x1EDA] = "Ohornacute",
- [0x1EDB] = "ohornacute",
- [0x1EDC] = "Ohorngrave",
- [0x1EDD] = "ohorngrave",
- [0x1EDE] = "Ohornhookabove",
- [0x1EDF] = "ohornhookabove",
- [0x1EE0] = "Ohorntilde",
- [0x1EE1] = "ohorntilde",
- [0x1EE2] = "Ohorndotbelow",
- [0x1EE3] = "ohorndotbelow",
- [0x1EE4] = "Udotbelow",
- [0x1EE5] = "udotbelow",
- [0x1EE6] = "Uhookabove",
- [0x1EE7] = "uhookabove",
- [0x1EE8] = "Uhornacute",
- [0x1EE9] = "uhornacute",
- [0x1EEA] = "Uhorngrave",
- [0x1EEB] = "uhorngrave",
- [0x1EEC] = "Uhornhookabove",
- [0x1EED] = "uhornhookabove",
- [0x1EEE] = "Uhorntilde",
- [0x1EEF] = "uhorntilde",
- [0x1EF0] = "Uhorndotbelow",
- [0x1EF1] = "uhorndotbelow",
- [0x1EF2] = "Ygrave",
- [0x1EF3] = "ygrave",
- [0x1EF4] = "Ydotbelow",
- [0x1EF5] = "ydotbelow",
- [0x1EF6] = "Yhookabove",
- [0x1EF7] = "yhookabove",
- [0x1EF8] = "Ytilde",
- [0x1EF9] = "ytilde",
- [0x2002] = "enspace",
- [0x200B] = "zerowidthspace",
- [0x200C] = "zerowidthnonjoiner",
- [0x200D] = "afii301",
- [0x200E] = "afii299",
- [0x200F] = "afii300",
- [0x2010] = "hyphentwo",
- [0x2012] = "figuredash",
- [0x2013] = "endash",
- [0x2014] = "emdash",
- [0x2015] = "horizontalbar",
- [0x2016] = "dblverticalbar",
- [0x2017] = "underscoredbl",
- [0x2018] = "quoteleft",
- [0x2019] = "quoteright",
- [0x201A] = "quotesinglbase",
- [0x201B] = "quotereversed",
- [0x201C] = "quotedblleft",
- [0x201D] = "quotedblright",
- [0x201E] = "quotedblbase",
- [0x2020] = "dagger",
- [0x2021] = "daggerdbl",
- [0x2022] = "bullet",
- [0x2024] = "onedotenleader",
- [0x2025] = "twodotleader",
- [0x2026] = "ellipsis",
- [0x202C] = "afii61573",
- [0x202D] = "afii61574",
- [0x202E] = "afii61575",
- [0x2030] = "perthousand",
- [0x2032] = "minute",
- [0x2033] = "second",
- [0x2035] = "primereversed",
- [0x2039] = "guilsinglleft",
- [0x203A] = "guilsinglright",
- [0x203B] = "referencemark",
- [0x203C] = "exclamdbl",
- [0x203E] = "overline",
- [0x2042] = "asterism",
- [0x2044] = "fraction",
- [0x2070] = "zerosuperior",
- [0x2074] = "foursuperior",
- [0x2075] = "fivesuperior",
- [0x2076] = "sixsuperior",
- [0x2077] = "sevensuperior",
- [0x2078] = "eightsuperior",
- [0x2079] = "ninesuperior",
- [0x207A] = "plussuperior",
- [0x207C] = "equalsuperior",
- [0x207D] = "parenleftsuperior",
- [0x207E] = "parenrightsuperior",
- [0x207F] = "nsuperior",
- [0x2080] = "zeroinferior",
- [0x2081] = "oneinferior",
- [0x2082] = "twoinferior",
- [0x2083] = "threeinferior",
- [0x2084] = "fourinferior",
- [0x2085] = "fiveinferior",
- [0x2086] = "sixinferior",
- [0x2087] = "seveninferior",
- [0x2088] = "eightinferior",
- [0x2089] = "nineinferior",
- [0x208D] = "parenleftinferior",
- [0x208E] = "parenrightinferior",
- [0x20A1] = "colonsign",
- [0x20A2] = "cruzeiro",
- [0x20A3] = "franc",
- [0x20A4] = "lira",
- [0x20A7] = "peseta",
- [0x20A9] = "won",
- [0x20AA] = "sheqelhebrew",
- [0x20AB] = "dong",
- [0x20AC] = "euro",
- [0x2103] = "centigrade",
- [0x2105] = "careof",
- [0x2109] = "fahrenheit",
- [0x2111] = "Ifraktur",
- [0x2113] = "lsquare",
- [0x2116] = "numero",
- [0x2118] = "weierstrass",
- [0x211C] = "Rfraktur",
- [0x211E] = "prescription",
- [0x2121] = "telephone",
- [0x2122] = "trademark",
- [0x2126] = "Omega",
- [0x212B] = "angstrom",
- [0x212E] = "estimated",
- [0x2135] = "aleph",
- [0x2153] = "onethird",
- [0x2154] = "twothirds",
- [0x215B] = "oneeighth",
- [0x215C] = "threeeighths",
- [0x215D] = "fiveeighths",
- [0x215E] = "seveneighths",
- [0x2160] = "Oneroman",
- [0x2161] = "Tworoman",
- [0x2162] = "Threeroman",
- [0x2163] = "Fourroman",
- [0x2164] = "Fiveroman",
- [0x2165] = "Sixroman",
- [0x2166] = "Sevenroman",
- [0x2167] = "Eightroman",
- [0x2168] = "Nineroman",
- [0x2169] = "Tenroman",
- [0x216A] = "Elevenroman",
- [0x216B] = "Twelveroman",
- [0x2170] = "oneroman",
- [0x2171] = "tworoman",
- [0x2172] = "threeroman",
- [0x2173] = "fourroman",
- [0x2174] = "fiveroman",
- [0x2175] = "sixroman",
- [0x2176] = "sevenroman",
- [0x2177] = "eightroman",
- [0x2178] = "nineroman",
- [0x2179] = "tenroman",
- [0x217A] = "elevenroman",
- [0x217B] = "twelveroman",
- [0x2190] = "arrowleft",
- [0x2191] = "arrowup",
- [0x2192] = "arrowright",
- [0x2193] = "arrowdown",
- [0x2194] = "arrowboth",
- [0x2195] = "arrowupdn",
- [0x2196] = "arrowupleft",
- [0x2197] = "arrowupright",
- [0x2198] = "arrowdownright",
- [0x2199] = "arrowdownleft",
- [0x21A8] = "arrowupdownbase",
- [0x21B5] = "carriagereturn",
- [0x21BC] = "harpoonleftbarbup",
- [0x21C0] = "harpoonrightbarbup",
- [0x21C4] = "arrowrightoverleft",
- [0x21C5] = "arrowupleftofdown",
- [0x21C6] = "arrowleftoverright",
- [0x21CD] = "arrowleftdblstroke",
- [0x21CF] = "arrowrightdblstroke",
- [0x21D0] = "arrowleftdbl",
- [0x21D1] = "arrowdblup",
- [0x21D2] = "dblarrowright",
- [0x21D3] = "arrowdbldown",
- [0x21D4] = "dblarrowleft",
- [0x21DE] = "pageup",
- [0x21DF] = "pagedown",
- [0x21E0] = "arrowdashleft",
- [0x21E1] = "arrowdashup",
- [0x21E2] = "arrowdashright",
- [0x21E3] = "arrowdashdown",
- [0x21E4] = "arrowtableft",
- [0x21E5] = "arrowtabright",
- [0x21E6] = "arrowleftwhite",
- [0x21E7] = "arrowupwhite",
- [0x21E8] = "arrowrightwhite",
- [0x21E9] = "arrowdownwhite",
- [0x21EA] = "capslock",
- [0x2200] = "universal",
- [0x2202] = "partialdiff",
- [0x2203] = "thereexists",
- [0x2205] = "emptyset",
- [0x2206] = "increment",
- [0x2207] = "nabla",
- [0x2208] = "element",
- [0x2209] = "notelementof",
- [0x220B] = "suchthat",
- [0x220C] = "notcontains",
- [0x220F] = "product",
- [0x2211] = "summation",
- [0x2212] = "minus",
- [0x2213] = "minusplus",
- [0x2215] = "divisionslash",
- [0x2217] = "asteriskmath",
- [0x2219] = "bulletoperator",
- [0x221A] = "radical",
- [0x221D] = "proportional",
- [0x221E] = "infinity",
- [0x221F] = "rightangle",
- [0x2220] = "angle",
- [0x2223] = "divides",
- [0x2225] = "parallel",
- [0x2226] = "notparallel",
- [0x2227] = "logicaland",
- [0x2228] = "logicalor",
- [0x2229] = "intersection",
- [0x222A] = "union",
- [0x222B] = "integral",
- [0x222C] = "dblintegral",
- [0x222E] = "contourintegral",
- [0x2234] = "therefore",
- [0x2235] = "because",
- [0x2236] = "ratio",
- [0x2237] = "proportion",
- [0x223C] = "tildeoperator",
- [0x223D] = "reversedtilde",
- [0x2243] = "asymptoticallyequal",
- [0x2245] = "congruent",
- [0x2248] = "approxequal",
- [0x224C] = "allequal",
- [0x2250] = "approaches",
- [0x2251] = "geometricallyequal",
- [0x2252] = "approxequalorimage",
- [0x2253] = "imageorapproximatelyequal",
- [0x2260] = "notequal",
- [0x2261] = "equivalence",
- [0x2262] = "notidentical",
- [0x2264] = "lessequal",
- [0x2265] = "greaterequal",
- [0x2266] = "lessoverequal",
- [0x2267] = "greateroverequal",
- [0x226A] = "muchless",
- [0x226B] = "muchgreater",
- [0x226E] = "notless",
- [0x226F] = "notgreater",
- [0x2270] = "notlessnorequal",
- [0x2271] = "notgreaternorequal",
- [0x2272] = "lessorequivalent",
- [0x2273] = "greaterorequivalent",
- [0x2276] = "lessorgreater",
- [0x2277] = "greaterorless",
- [0x2279] = "notgreaternorless",
- [0x227A] = "precedes",
- [0x227B] = "succeeds",
- [0x2280] = "notprecedes",
- [0x2281] = "notsucceeds",
- [0x2282] = "subset",
- [0x2283] = "superset",
- [0x2284] = "notsubset",
- [0x2285] = "notsuperset",
- [0x2286] = "subsetorequal",
- [0x2287] = "supersetorequal",
- [0x228A] = "subsetnotequal",
- [0x228B] = "supersetnotequal",
- [0x2295] = "pluscircle",
- [0x2296] = "minuscircle",
- [0x2297] = "timescircle",
- [0x2299] = "circleot",
- [0x22A3] = "tackleft",
- [0x22A4] = "tackdown",
- [0x22A5] = "perpendicular",
- [0x22BF] = "righttriangle",
- [0x22C5] = "dotmath",
- [0x22CE] = "curlyor",
- [0x22CF] = "curlyand",
- [0x22DA] = "lessequalorgreater",
- [0x22DB] = "greaterequalorless",
- [0x22EE] = "ellipsisvertical",
- [0x2302] = "house",
- [0x2303] = "control",
- [0x2305] = "projective",
- [0x2310] = "revlogicalnot",
- [0x2312] = "arc",
- [0x2318] = "propellor",
- [0x2320] = "integraltp",
- [0x2321] = "integralbt",
- [0x2325] = "option",
- [0x2326] = "deleteright",
- [0x2327] = "clear",
- [0x2329] = "angleleft",
- [0x232A] = "angleright",
- [0x232B] = "deleteleft",
- [0x2423] = "blank",
- [0x2460] = "onecircle",
- [0x2461] = "twocircle",
- [0x2462] = "threecircle",
- [0x2463] = "fourcircle",
- [0x2464] = "fivecircle",
- [0x2465] = "sixcircle",
- [0x2466] = "sevencircle",
- [0x2467] = "eightcircle",
- [0x2468] = "ninecircle",
- [0x2469] = "tencircle",
- [0x246A] = "elevencircle",
- [0x246B] = "twelvecircle",
- [0x246C] = "thirteencircle",
- [0x246D] = "fourteencircle",
- [0x246E] = "fifteencircle",
- [0x246F] = "sixteencircle",
- [0x2470] = "seventeencircle",
- [0x2471] = "eighteencircle",
- [0x2472] = "nineteencircle",
- [0x2473] = "twentycircle",
- [0x2474] = "oneparen",
- [0x2475] = "twoparen",
- [0x2476] = "threeparen",
- [0x2477] = "fourparen",
- [0x2478] = "fiveparen",
- [0x2479] = "sixparen",
- [0x247A] = "sevenparen",
- [0x247B] = "eightparen",
- [0x247C] = "nineparen",
- [0x247D] = "tenparen",
- [0x247E] = "elevenparen",
- [0x247F] = "twelveparen",
- [0x2480] = "thirteenparen",
- [0x2481] = "fourteenparen",
- [0x2482] = "fifteenparen",
- [0x2483] = "sixteenparen",
- [0x2484] = "seventeenparen",
- [0x2485] = "eighteenparen",
- [0x2486] = "nineteenparen",
- [0x2487] = "twentyparen",
- [0x2488] = "oneperiod",
- [0x2489] = "twoperiod",
- [0x248A] = "threeperiod",
- [0x248B] = "fourperiod",
- [0x248C] = "fiveperiod",
- [0x248D] = "sixperiod",
- [0x248E] = "sevenperiod",
- [0x248F] = "eightperiod",
- [0x2490] = "nineperiod",
- [0x2491] = "tenperiod",
- [0x2492] = "elevenperiod",
- [0x2493] = "twelveperiod",
- [0x2494] = "thirteenperiod",
- [0x2495] = "fourteenperiod",
- [0x2496] = "fifteenperiod",
- [0x2497] = "sixteenperiod",
- [0x2498] = "seventeenperiod",
- [0x2499] = "eighteenperiod",
- [0x249A] = "nineteenperiod",
- [0x249B] = "twentyperiod",
- [0x249C] = "aparen",
- [0x249D] = "bparen",
- [0x249E] = "cparen",
- [0x249F] = "dparen",
- [0x24A0] = "eparen",
- [0x24A1] = "fparen",
- [0x24A2] = "gparen",
- [0x24A3] = "hparen",
- [0x24A4] = "iparen",
- [0x24A5] = "jparen",
- [0x24A6] = "kparen",
- [0x24A7] = "lparen",
- [0x24A8] = "mparen",
- [0x24A9] = "nparen",
- [0x24AA] = "oparen",
- [0x24AB] = "pparen",
- [0x24AC] = "qparen",
- [0x24AD] = "rparen",
- [0x24AE] = "sparen",
- [0x24AF] = "tparen",
- [0x24B0] = "uparen",
- [0x24B1] = "vparen",
- [0x24B2] = "wparen",
- [0x24B3] = "xparen",
- [0x24B4] = "yparen",
- [0x24B5] = "zparen",
- [0x24B6] = "Acircle",
- [0x24B7] = "Bcircle",
- [0x24B8] = "Ccircle",
- [0x24B9] = "Dcircle",
- [0x24BA] = "Ecircle",
- [0x24BB] = "Fcircle",
- [0x24BC] = "Gcircle",
- [0x24BD] = "Hcircle",
- [0x24BE] = "Icircle",
- [0x24BF] = "Jcircle",
- [0x24C0] = "Kcircle",
- [0x24C1] = "Lcircle",
- [0x24C2] = "Mcircle",
- [0x24C3] = "Ncircle",
- [0x24C4] = "Ocircle",
- [0x24C5] = "Pcircle",
- [0x24C6] = "Qcircle",
- [0x24C7] = "Rcircle",
- [0x24C8] = "Scircle",
- [0x24C9] = "Tcircle",
- [0x24CA] = "Ucircle",
- [0x24CB] = "Vcircle",
- [0x24CC] = "Wcircle",
- [0x24CD] = "Xcircle",
- [0x24CE] = "Ycircle",
- [0x24CF] = "Zcircle",
- [0x24D0] = "acircle",
- [0x24D1] = "bcircle",
- [0x24D2] = "ccircle",
- [0x24D3] = "dcircle",
- [0x24D4] = "ecircle",
- [0x24D5] = "fcircle",
- [0x24D6] = "gcircle",
- [0x24D7] = "hcircle",
- [0x24D8] = "icircle",
- [0x24D9] = "jcircle",
- [0x24DA] = "kcircle",
- [0x24DB] = "lcircle",
- [0x24DC] = "mcircle",
- [0x24DD] = "ncircle",
- [0x24DE] = "ocircle",
- [0x24DF] = "pcircle",
- [0x24E0] = "qcircle",
- [0x24E1] = "rcircle",
- [0x24E2] = "scircle",
- [0x24E3] = "tcircle",
- [0x24E4] = "ucircle",
- [0x24E5] = "vcircle",
- [0x24E6] = "wcircle",
- [0x24E7] = "xcircle",
- [0x24E8] = "ycircle",
- [0x24E9] = "zcircle",
- [0x2500] = "SF100000",
- [0x2502] = "SF110000",
- [0x250C] = "SF010000",
- [0x2510] = "SF030000",
- [0x2514] = "SF020000",
- [0x2518] = "SF040000",
- [0x251C] = "SF080000",
- [0x2524] = "SF090000",
- [0x252C] = "SF060000",
- [0x2534] = "SF070000",
- [0x253C] = "SF050000",
- [0x2550] = "SF430000",
- [0x2551] = "SF240000",
- [0x2552] = "SF510000",
- [0x2553] = "SF520000",
- [0x2554] = "SF390000",
- [0x2555] = "SF220000",
- [0x2556] = "SF210000",
- [0x2557] = "SF250000",
- [0x2558] = "SF500000",
- [0x2559] = "SF490000",
- [0x255A] = "SF380000",
- [0x255B] = "SF280000",
- [0x255C] = "SF270000",
- [0x255D] = "SF260000",
- [0x255E] = "SF360000",
- [0x255F] = "SF370000",
- [0x2560] = "SF420000",
- [0x2561] = "SF190000",
- [0x2562] = "SF200000",
- [0x2563] = "SF230000",
- [0x2564] = "SF470000",
- [0x2565] = "SF480000",
- [0x2566] = "SF410000",
- [0x2567] = "SF450000",
- [0x2568] = "SF460000",
- [0x2569] = "SF400000",
- [0x256A] = "SF540000",
- [0x256B] = "SF530000",
- [0x256C] = "SF440000",
- [0x2580] = "upblock",
- [0x2584] = "dnblock",
- [0x2588] = "block",
- [0x258C] = "lfblock",
- [0x2590] = "rtblock",
- [0x2591] = "shadelight",
- [0x2592] = "shademedium",
- [0x2593] = "shadedark",
- [0x25A0] = "filledbox",
- [0x25A1] = "whitesquare",
- [0x25A3] = "squarewhitewithsmallblack",
- [0x25A4] = "squarehorizontalfill",
- [0x25A5] = "squareverticalfill",
- [0x25A6] = "squareorthogonalcrosshatchfill",
- [0x25A7] = "squareupperlefttolowerrightfill",
- [0x25A8] = "squareupperrighttolowerleftfill",
- [0x25A9] = "squarediagonalcrosshatchfill",
- [0x25AA] = "blacksmallsquare",
- [0x25AB] = "whitesmallsquare",
- [0x25AC] = "filledrect",
- [0x25B2] = "triagup",
- [0x25B3] = "whiteuppointingtriangle",
- [0x25B4] = "blackuppointingsmalltriangle",
- [0x25B5] = "whiteuppointingsmalltriangle",
- [0x25B6] = "blackrightpointingtriangle",
- [0x25B7] = "whiterightpointingtriangle",
- [0x25B9] = "whiterightpointingsmalltriangle",
- [0x25BA] = "triagrt",
- [0x25BC] = "triagdn",
- [0x25BD] = "whitedownpointingtriangle",
- [0x25BF] = "whitedownpointingsmalltriangle",
- [0x25C0] = "blackleftpointingtriangle",
- [0x25C1] = "whiteleftpointingtriangle",
- [0x25C3] = "whiteleftpointingsmalltriangle",
- [0x25C4] = "triaglf",
- [0x25C6] = "blackdiamond",
- [0x25C7] = "whitediamond",
- [0x25C8] = "whitediamondcontainingblacksmalldiamond",
- [0x25C9] = "fisheye",
- [0x25CA] = "lozenge",
- [0x25CB] = "whitecircle",
- [0x25CC] = "dottedcircle",
- [0x25CE] = "bullseye",
- [0x25CF] = "blackcircle",
- [0x25D0] = "circlewithlefthalfblack",
- [0x25D1] = "circlewithrighthalfblack",
- [0x25D8] = "invbullet",
- [0x25D9] = "whitecircleinverse",
- [0x25E2] = "blacklowerrighttriangle",
- [0x25E3] = "blacklowerlefttriangle",
- [0x25E4] = "blackupperlefttriangle",
- [0x25E5] = "blackupperrighttriangle",
- [0x25E6] = "whitebullet",
- [0x25EF] = "largecircle",
- [0x2605] = "blackstar",
- [0x2606] = "whitestar",
- [0x260E] = "telephoneblack",
- [0x260F] = "whitetelephone",
- [0x261C] = "pointingindexleftwhite",
- [0x261D] = "pointingindexupwhite",
- [0x261E] = "pointingindexrightwhite",
- [0x261F] = "pointingindexdownwhite",
- [0x262F] = "yinyang",
- [0x263A] = "whitesmilingface",
- [0x263B] = "invsmileface",
- [0x263C] = "sun",
- [0x2640] = "venus",
- [0x2641] = "earth",
- [0x2642] = "mars",
- [0x2660] = "spadesuitblack",
- [0x2661] = "heartsuitwhite",
- [0x2662] = "diamondsuitwhite",
- [0x2663] = "clubsuitblack",
- [0x2664] = "spadesuitwhite",
- [0x2665] = "heartsuitblack",
- [0x2666] = "diamond",
- [0x2667] = "clubsuitwhite",
- [0x2668] = "hotsprings",
- [0x2669] = "quarternote",
- [0x266A] = "musicalnote",
- [0x266B] = "musicalnotedbl",
- [0x266C] = "beamedsixteenthnotes",
- [0x266D] = "musicflatsign",
- [0x266F] = "musicsharpsign",
- [0x2713] = "checkmark",
- [0x278A] = "onecircleinversesansserif",
- [0x278B] = "twocircleinversesansserif",
- [0x278C] = "threecircleinversesansserif",
- [0x278D] = "fourcircleinversesansserif",
- [0x278E] = "fivecircleinversesansserif",
- [0x278F] = "sixcircleinversesansserif",
- [0x2790] = "sevencircleinversesansserif",
- [0x2791] = "eightcircleinversesansserif",
- [0x2792] = "ninecircleinversesansserif",
- [0x279E] = "arrowrightheavy",
- [0x3000] = "ideographicspace",
- [0x3001] = "ideographiccomma",
- [0x3002] = "ideographicperiod",
- [0x3003] = "dittomark",
- [0x3004] = "jis",
- [0x3005] = "ideographiciterationmark",
- [0x3006] = "ideographicclose",
- [0x3007] = "ideographiczero",
- [0x3008] = "anglebracketleft",
- [0x3009] = "anglebracketright",
- [0x300A] = "dblanglebracketleft",
- [0x300B] = "dblanglebracketright",
- [0x300C] = "cornerbracketleft",
- [0x300D] = "cornerbracketright",
- [0x300E] = "whitecornerbracketleft",
- [0x300F] = "whitecornerbracketright",
- [0x3010] = "blacklenticularbracketleft",
- [0x3011] = "blacklenticularbracketright",
- [0x3012] = "postalmark",
- [0x3013] = "getamark",
- [0x3014] = "tortoiseshellbracketleft",
- [0x3015] = "tortoiseshellbracketright",
- [0x3016] = "whitelenticularbracketleft",
- [0x3017] = "whitelenticularbracketright",
- [0x3018] = "whitetortoiseshellbracketleft",
- [0x3019] = "whitetortoiseshellbracketright",
- [0x301C] = "wavedash",
- [0x301D] = "quotedblprimereversed",
- [0x301E] = "quotedblprime",
- [0x3020] = "postalmarkface",
- [0x3021] = "onehangzhou",
- [0x3022] = "twohangzhou",
- [0x3023] = "threehangzhou",
- [0x3024] = "fourhangzhou",
- [0x3025] = "fivehangzhou",
- [0x3026] = "sixhangzhou",
- [0x3027] = "sevenhangzhou",
- [0x3028] = "eighthangzhou",
- [0x3029] = "ninehangzhou",
- [0x3036] = "circlepostalmark",
- [0x3041] = "asmallhiragana",
- [0x3042] = "ahiragana",
- [0x3043] = "ismallhiragana",
- [0x3044] = "ihiragana",
- [0x3045] = "usmallhiragana",
- [0x3046] = "uhiragana",
- [0x3047] = "esmallhiragana",
- [0x3048] = "ehiragana",
- [0x3049] = "osmallhiragana",
- [0x304A] = "ohiragana",
- [0x304B] = "kahiragana",
- [0x304C] = "gahiragana",
- [0x304D] = "kihiragana",
- [0x304E] = "gihiragana",
- [0x304F] = "kuhiragana",
- [0x3050] = "guhiragana",
- [0x3051] = "kehiragana",
- [0x3052] = "gehiragana",
- [0x3053] = "kohiragana",
- [0x3054] = "gohiragana",
- [0x3055] = "sahiragana",
- [0x3056] = "zahiragana",
- [0x3057] = "sihiragana",
- [0x3058] = "zihiragana",
- [0x3059] = "suhiragana",
- [0x305A] = "zuhiragana",
- [0x305B] = "sehiragana",
- [0x305C] = "zehiragana",
- [0x305D] = "sohiragana",
- [0x305E] = "zohiragana",
- [0x305F] = "tahiragana",
- [0x3060] = "dahiragana",
- [0x3061] = "tihiragana",
- [0x3062] = "dihiragana",
- [0x3063] = "tusmallhiragana",
- [0x3064] = "tuhiragana",
- [0x3065] = "duhiragana",
- [0x3066] = "tehiragana",
- [0x3067] = "dehiragana",
- [0x3068] = "tohiragana",
- [0x3069] = "dohiragana",
- [0x306A] = "nahiragana",
- [0x306B] = "nihiragana",
- [0x306C] = "nuhiragana",
- [0x306D] = "nehiragana",
- [0x306E] = "nohiragana",
- [0x306F] = "hahiragana",
- [0x3070] = "bahiragana",
- [0x3071] = "pahiragana",
- [0x3072] = "hihiragana",
- [0x3073] = "bihiragana",
- [0x3074] = "pihiragana",
- [0x3075] = "huhiragana",
- [0x3076] = "buhiragana",
- [0x3077] = "puhiragana",
- [0x3078] = "hehiragana",
- [0x3079] = "behiragana",
- [0x307A] = "pehiragana",
- [0x307B] = "hohiragana",
- [0x307C] = "bohiragana",
- [0x307D] = "pohiragana",
- [0x307E] = "mahiragana",
- [0x307F] = "mihiragana",
- [0x3080] = "muhiragana",
- [0x3081] = "mehiragana",
- [0x3082] = "mohiragana",
- [0x3083] = "yasmallhiragana",
- [0x3084] = "yahiragana",
- [0x3085] = "yusmallhiragana",
- [0x3086] = "yuhiragana",
- [0x3087] = "yosmallhiragana",
- [0x3088] = "yohiragana",
- [0x3089] = "rahiragana",
- [0x308A] = "rihiragana",
- [0x308B] = "ruhiragana",
- [0x308C] = "rehiragana",
- [0x308D] = "rohiragana",
- [0x308E] = "wasmallhiragana",
- [0x308F] = "wahiragana",
- [0x3090] = "wihiragana",
- [0x3091] = "wehiragana",
- [0x3092] = "wohiragana",
- [0x3093] = "nhiragana",
- [0x3094] = "vuhiragana",
- [0x309B] = "voicedmarkkana",
- [0x309C] = "semivoicedmarkkana",
- [0x309D] = "iterationhiragana",
- [0x309E] = "voicediterationhiragana",
- [0x30A1] = "asmallkatakana",
- [0x30A2] = "akatakana",
- [0x30A3] = "ismallkatakana",
- [0x30A4] = "ikatakana",
- [0x30A5] = "usmallkatakana",
- [0x30A6] = "ukatakana",
- [0x30A7] = "esmallkatakana",
- [0x30A8] = "ekatakana",
- [0x30A9] = "osmallkatakana",
- [0x30AA] = "okatakana",
- [0x30AB] = "kakatakana",
- [0x30AC] = "gakatakana",
- [0x30AD] = "kikatakana",
- [0x30AE] = "gikatakana",
- [0x30AF] = "kukatakana",
- [0x30B0] = "gukatakana",
- [0x30B1] = "kekatakana",
- [0x30B2] = "gekatakana",
- [0x30B3] = "kokatakana",
- [0x30B4] = "gokatakana",
- [0x30B5] = "sakatakana",
- [0x30B6] = "zakatakana",
- [0x30B7] = "sikatakana",
- [0x30B8] = "zikatakana",
- [0x30B9] = "sukatakana",
- [0x30BA] = "zukatakana",
- [0x30BB] = "sekatakana",
- [0x30BC] = "zekatakana",
- [0x30BD] = "sokatakana",
- [0x30BE] = "zokatakana",
- [0x30BF] = "takatakana",
- [0x30C0] = "dakatakana",
- [0x30C1] = "tikatakana",
- [0x30C2] = "dikatakana",
- [0x30C3] = "tusmallkatakana",
- [0x30C4] = "tukatakana",
- [0x30C5] = "dukatakana",
- [0x30C6] = "tekatakana",
- [0x30C7] = "dekatakana",
- [0x30C8] = "tokatakana",
- [0x30C9] = "dokatakana",
- [0x30CA] = "nakatakana",
- [0x30CB] = "nikatakana",
- [0x30CC] = "nukatakana",
- [0x30CD] = "nekatakana",
- [0x30CE] = "nokatakana",
- [0x30CF] = "hakatakana",
- [0x30D0] = "bakatakana",
- [0x30D1] = "pakatakana",
- [0x30D2] = "hikatakana",
- [0x30D3] = "bikatakana",
- [0x30D4] = "pikatakana",
- [0x30D5] = "hukatakana",
- [0x30D6] = "bukatakana",
- [0x30D7] = "pukatakana",
- [0x30D8] = "hekatakana",
- [0x30D9] = "bekatakana",
- [0x30DA] = "pekatakana",
- [0x30DB] = "hokatakana",
- [0x30DC] = "bokatakana",
- [0x30DD] = "pokatakana",
- [0x30DE] = "makatakana",
- [0x30DF] = "mikatakana",
- [0x30E0] = "mukatakana",
- [0x30E1] = "mekatakana",
- [0x30E2] = "mokatakana",
- [0x30E3] = "yasmallkatakana",
- [0x30E4] = "yakatakana",
- [0x30E5] = "yusmallkatakana",
- [0x30E6] = "yukatakana",
- [0x30E7] = "yosmallkatakana",
- [0x30E8] = "yokatakana",
- [0x30E9] = "rakatakana",
- [0x30EA] = "rikatakana",
- [0x30EB] = "rukatakana",
- [0x30EC] = "rekatakana",
- [0x30ED] = "rokatakana",
- [0x30EE] = "wasmallkatakana",
- [0x30EF] = "wakatakana",
- [0x30F0] = "wikatakana",
- [0x30F1] = "wekatakana",
- [0x30F2] = "wokatakana",
- [0x30F3] = "nkatakana",
- [0x30F4] = "vukatakana",
- [0x30F5] = "kasmallkatakana",
- [0x30F6] = "kesmallkatakana",
- [0x30F7] = "vakatakana",
- [0x30F8] = "vikatakana",
- [0x30F9] = "vekatakana",
- [0x30FA] = "vokatakana",
- [0x30FB] = "dotkatakana",
- [0x30FC] = "prolongedkana",
- [0x30FD] = "iterationkatakana",
- [0x30FE] = "voicediterationkatakana",
- [0x3105] = "bbopomofo",
- [0x3106] = "pbopomofo",
- [0x3107] = "mbopomofo",
- [0x3108] = "fbopomofo",
- [0x3109] = "dbopomofo",
- [0x310A] = "tbopomofo",
- [0x310B] = "nbopomofo",
- [0x310C] = "lbopomofo",
- [0x310D] = "gbopomofo",
- [0x310E] = "kbopomofo",
- [0x310F] = "hbopomofo",
- [0x3110] = "jbopomofo",
- [0x3111] = "qbopomofo",
- [0x3112] = "xbopomofo",
- [0x3113] = "zhbopomofo",
- [0x3114] = "chbopomofo",
- [0x3115] = "shbopomofo",
- [0x3116] = "rbopomofo",
- [0x3117] = "zbopomofo",
- [0x3118] = "cbopomofo",
- [0x3119] = "sbopomofo",
- [0x311A] = "abopomofo",
- [0x311B] = "obopomofo",
- [0x311C] = "ebopomofo",
- [0x311D] = "ehbopomofo",
- [0x311E] = "aibopomofo",
- [0x311F] = "eibopomofo",
- [0x3120] = "aubopomofo",
- [0x3121] = "oubopomofo",
- [0x3122] = "anbopomofo",
- [0x3123] = "enbopomofo",
- [0x3124] = "angbopomofo",
- [0x3125] = "engbopomofo",
- [0x3126] = "erbopomofo",
- [0x3127] = "ibopomofo",
- [0x3128] = "ubopomofo",
- [0x3129] = "iubopomofo",
- [0x3131] = "kiyeokkorean",
- [0x3132] = "ssangkiyeokkorean",
- [0x3133] = "kiyeoksioskorean",
- [0x3134] = "nieunkorean",
- [0x3135] = "nieuncieuckorean",
- [0x3136] = "nieunhieuhkorean",
- [0x3137] = "tikeutkorean",
- [0x3138] = "ssangtikeutkorean",
- [0x3139] = "rieulkorean",
- [0x313A] = "rieulkiyeokkorean",
- [0x313B] = "rieulmieumkorean",
- [0x313C] = "rieulpieupkorean",
- [0x313D] = "rieulsioskorean",
- [0x313E] = "rieulthieuthkorean",
- [0x313F] = "rieulphieuphkorean",
- [0x3140] = "rieulhieuhkorean",
- [0x3141] = "mieumkorean",
- [0x3142] = "pieupkorean",
- [0x3143] = "ssangpieupkorean",
- [0x3144] = "pieupsioskorean",
- [0x3145] = "sioskorean",
- [0x3146] = "ssangsioskorean",
- [0x3147] = "ieungkorean",
- [0x3148] = "cieuckorean",
- [0x3149] = "ssangcieuckorean",
- [0x314A] = "chieuchkorean",
- [0x314B] = "khieukhkorean",
- [0x314C] = "thieuthkorean",
- [0x314D] = "phieuphkorean",
- [0x314E] = "hieuhkorean",
- [0x314F] = "akorean",
- [0x3150] = "aekorean",
- [0x3151] = "yakorean",
- [0x3152] = "yaekorean",
- [0x3153] = "eokorean",
- [0x3154] = "ekorean",
- [0x3155] = "yeokorean",
- [0x3156] = "yekorean",
- [0x3157] = "okorean",
- [0x3158] = "wakorean",
- [0x3159] = "waekorean",
- [0x315A] = "oekorean",
- [0x315B] = "yokorean",
- [0x315C] = "ukorean",
- [0x315D] = "weokorean",
- [0x315E] = "wekorean",
- [0x315F] = "wikorean",
- [0x3160] = "yukorean",
- [0x3161] = "eukorean",
- [0x3162] = "yikorean",
- [0x3163] = "ikorean",
- [0x3164] = "hangulfiller",
- [0x3165] = "ssangnieunkorean",
- [0x3166] = "nieuntikeutkorean",
- [0x3167] = "nieunsioskorean",
- [0x3168] = "nieunpansioskorean",
- [0x3169] = "rieulkiyeoksioskorean",
- [0x316A] = "rieultikeutkorean",
- [0x316B] = "rieulpieupsioskorean",
- [0x316C] = "rieulpansioskorean",
- [0x316D] = "rieulyeorinhieuhkorean",
- [0x316E] = "mieumpieupkorean",
- [0x316F] = "mieumsioskorean",
- [0x3170] = "mieumpansioskorean",
- [0x3171] = "kapyeounmieumkorean",
- [0x3172] = "pieupkiyeokkorean",
- [0x3173] = "pieuptikeutkorean",
- [0x3174] = "pieupsioskiyeokkorean",
- [0x3175] = "pieupsiostikeutkorean",
- [0x3176] = "pieupcieuckorean",
- [0x3177] = "pieupthieuthkorean",
- [0x3178] = "kapyeounpieupkorean",
- [0x3179] = "kapyeounssangpieupkorean",
- [0x317A] = "sioskiyeokkorean",
- [0x317B] = "siosnieunkorean",
- [0x317C] = "siostikeutkorean",
- [0x317D] = "siospieupkorean",
- [0x317E] = "sioscieuckorean",
- [0x317F] = "pansioskorean",
- [0x3180] = "ssangieungkorean",
- [0x3181] = "yesieungkorean",
- [0x3182] = "yesieungsioskorean",
- [0x3183] = "yesieungpansioskorean",
- [0x3184] = "kapyeounphieuphkorean",
- [0x3185] = "ssanghieuhkorean",
- [0x3186] = "yeorinhieuhkorean",
- [0x3187] = "yoyakorean",
- [0x3188] = "yoyaekorean",
- [0x3189] = "yoikorean",
- [0x318A] = "yuyeokorean",
- [0x318B] = "yuyekorean",
- [0x318C] = "yuikorean",
- [0x318D] = "araeakorean",
- [0x318E] = "araeaekorean",
- [0x3200] = "kiyeokparenkorean",
- [0x3201] = "nieunparenkorean",
- [0x3202] = "tikeutparenkorean",
- [0x3203] = "rieulparenkorean",
- [0x3204] = "mieumparenkorean",
- [0x3205] = "pieupparenkorean",
- [0x3206] = "siosparenkorean",
- [0x3207] = "ieungparenkorean",
- [0x3208] = "cieucparenkorean",
- [0x3209] = "chieuchparenkorean",
- [0x320A] = "khieukhparenkorean",
- [0x320B] = "thieuthparenkorean",
- [0x320C] = "phieuphparenkorean",
- [0x320D] = "hieuhparenkorean",
- [0x320E] = "kiyeokaparenkorean",
- [0x320F] = "nieunaparenkorean",
- [0x3210] = "tikeutaparenkorean",
- [0x3211] = "rieulaparenkorean",
- [0x3212] = "mieumaparenkorean",
- [0x3213] = "pieupaparenkorean",
- [0x3214] = "siosaparenkorean",
- [0x3215] = "ieungaparenkorean",
- [0x3216] = "cieucaparenkorean",
- [0x3217] = "chieuchaparenkorean",
- [0x3218] = "khieukhaparenkorean",
- [0x3219] = "thieuthaparenkorean",
- [0x321A] = "phieuphaparenkorean",
- [0x321B] = "hieuhaparenkorean",
- [0x321C] = "cieucuparenkorean",
- [0x3220] = "oneideographicparen",
- [0x3221] = "twoideographicparen",
- [0x3222] = "threeideographicparen",
- [0x3223] = "fourideographicparen",
- [0x3224] = "fiveideographicparen",
- [0x3225] = "sixideographicparen",
- [0x3226] = "sevenideographicparen",
- [0x3227] = "eightideographicparen",
- [0x3228] = "nineideographicparen",
- [0x3229] = "tenideographicparen",
- [0x322A] = "ideographicmoonparen",
- [0x322B] = "ideographicfireparen",
- [0x322C] = "ideographicwaterparen",
- [0x322D] = "ideographicwoodparen",
- [0x322E] = "ideographicmetalparen",
- [0x322F] = "ideographicearthparen",
- [0x3230] = "ideographicsunparen",
- [0x3231] = "ideographicstockparen",
- [0x3232] = "ideographichaveparen",
- [0x3233] = "ideographicsocietyparen",
- [0x3234] = "ideographicnameparen",
- [0x3235] = "ideographicspecialparen",
- [0x3236] = "ideographicfinancialparen",
- [0x3237] = "ideographiccongratulationparen",
- [0x3238] = "ideographiclaborparen",
- [0x3239] = "ideographicrepresentparen",
- [0x323A] = "ideographiccallparen",
- [0x323B] = "ideographicstudyparen",
- [0x323C] = "ideographicsuperviseparen",
- [0x323D] = "ideographicenterpriseparen",
- [0x323E] = "ideographicresourceparen",
- [0x323F] = "ideographicallianceparen",
- [0x3240] = "ideographicfestivalparen",
- [0x3242] = "ideographicselfparen",
- [0x3243] = "ideographicreachparen",
- [0x3260] = "kiyeokcirclekorean",
- [0x3261] = "nieuncirclekorean",
- [0x3262] = "tikeutcirclekorean",
- [0x3263] = "rieulcirclekorean",
- [0x3264] = "mieumcirclekorean",
- [0x3265] = "pieupcirclekorean",
- [0x3266] = "sioscirclekorean",
- [0x3267] = "ieungcirclekorean",
- [0x3268] = "cieuccirclekorean",
- [0x3269] = "chieuchcirclekorean",
- [0x326A] = "khieukhcirclekorean",
- [0x326B] = "thieuthcirclekorean",
- [0x326C] = "phieuphcirclekorean",
- [0x326D] = "hieuhcirclekorean",
- [0x326E] = "kiyeokacirclekorean",
- [0x326F] = "nieunacirclekorean",
- [0x3270] = "tikeutacirclekorean",
- [0x3271] = "rieulacirclekorean",
- [0x3272] = "mieumacirclekorean",
- [0x3273] = "pieupacirclekorean",
- [0x3274] = "siosacirclekorean",
- [0x3275] = "ieungacirclekorean",
- [0x3276] = "cieucacirclekorean",
- [0x3277] = "chieuchacirclekorean",
- [0x3278] = "khieukhacirclekorean",
- [0x3279] = "thieuthacirclekorean",
- [0x327A] = "phieuphacirclekorean",
- [0x327B] = "hieuhacirclekorean",
- [0x327F] = "koreanstandardsymbol",
- [0x328A] = "ideographmooncircle",
- [0x328B] = "ideographfirecircle",
- [0x328C] = "ideographwatercircle",
- [0x328D] = "ideographwoodcircle",
- [0x328E] = "ideographmetalcircle",
- [0x328F] = "ideographearthcircle",
- [0x3290] = "ideographsuncircle",
- [0x3294] = "ideographnamecircle",
- [0x3296] = "ideographicfinancialcircle",
- [0x3298] = "ideographiclaborcircle",
- [0x3299] = "ideographicsecretcircle",
- [0x329D] = "ideographicexcellentcircle",
- [0x329E] = "ideographicprintcircle",
- [0x32A3] = "ideographiccorrectcircle",
- [0x32A4] = "ideographichighcircle",
- [0x32A5] = "ideographiccentrecircle",
- [0x32A6] = "ideographiclowcircle",
- [0x32A7] = "ideographicleftcircle",
- [0x32A8] = "ideographicrightcircle",
- [0x32A9] = "ideographicmedicinecircle",
- [0x3300] = "apaatosquare",
- [0x3303] = "aarusquare",
- [0x3305] = "intisquare",
- [0x330D] = "karoriisquare",
- [0x3314] = "kirosquare",
- [0x3315] = "kiroguramusquare",
- [0x3316] = "kiromeetorusquare",
- [0x3318] = "guramusquare",
- [0x331E] = "kooposquare",
- [0x3322] = "sentisquare",
- [0x3323] = "sentosquare",
- [0x3326] = "dorusquare",
- [0x3327] = "tonsquare",
- [0x332A] = "haitusquare",
- [0x332B] = "paasentosquare",
- [0x3331] = "birusquare",
- [0x3333] = "huiitosquare",
- [0x3336] = "hekutaarusquare",
- [0x3339] = "herutusquare",
- [0x333B] = "peezisquare",
- [0x3342] = "hoonsquare",
- [0x3347] = "mansyonsquare",
- [0x3349] = "mirisquare",
- [0x334A] = "miribaarusquare",
- [0x334D] = "meetorusquare",
- [0x334E] = "yaadosquare",
- [0x3351] = "rittorusquare",
- [0x3357] = "wattosquare",
- [0x337B] = "heiseierasquare",
- [0x337C] = "syouwaerasquare",
- [0x337D] = "taisyouerasquare",
- [0x337E] = "meizierasquare",
- [0x337F] = "corporationsquare",
- [0x3380] = "paampssquare",
- [0x3381] = "nasquare",
- [0x3382] = "muasquare",
- [0x3383] = "masquare",
- [0x3384] = "kasquare",
- [0x3385] = "KBsquare",
- [0x3386] = "MBsquare",
- [0x3387] = "GBsquare",
- [0x3388] = "calsquare",
- [0x3389] = "kcalsquare",
- [0x338A] = "pfsquare",
- [0x338B] = "nfsquare",
- [0x338C] = "mufsquare",
- [0x338D] = "mugsquare",
- [0x338E] = "squaremg",
- [0x338F] = "squarekg",
- [0x3390] = "Hzsquare",
- [0x3391] = "khzsquare",
- [0x3392] = "mhzsquare",
- [0x3393] = "ghzsquare",
- [0x3394] = "thzsquare",
- [0x3395] = "mulsquare",
- [0x3396] = "mlsquare",
- [0x3397] = "dlsquare",
- [0x3398] = "klsquare",
- [0x3399] = "fmsquare",
- [0x339A] = "nmsquare",
- [0x339B] = "mumsquare",
- [0x339C] = "squaremm",
- [0x339D] = "squarecm",
- [0x339E] = "squarekm",
- [0x339F] = "mmsquaredsquare",
- [0x33A0] = "cmsquaredsquare",
- [0x33A1] = "squaremsquared",
- [0x33A2] = "kmsquaredsquare",
- [0x33A3] = "mmcubedsquare",
- [0x33A4] = "cmcubedsquare",
- [0x33A5] = "mcubedsquare",
- [0x33A6] = "kmcubedsquare",
- [0x33A7] = "moverssquare",
- [0x33A8] = "moverssquaredsquare",
- [0x33A9] = "pasquare",
- [0x33AA] = "kpasquare",
- [0x33AB] = "mpasquare",
- [0x33AC] = "gpasquare",
- [0x33AD] = "radsquare",
- [0x33AE] = "radoverssquare",
- [0x33AF] = "radoverssquaredsquare",
- [0x33B0] = "pssquare",
- [0x33B1] = "nssquare",
- [0x33B2] = "mussquare",
- [0x33B3] = "mssquare",
- [0x33B4] = "pvsquare",
- [0x33B5] = "nvsquare",
- [0x33B6] = "muvsquare",
- [0x33B7] = "mvsquare",
- [0x33B8] = "kvsquare",
- [0x33B9] = "mvmegasquare",
- [0x33BA] = "pwsquare",
- [0x33BB] = "nwsquare",
- [0x33BC] = "muwsquare",
- [0x33BD] = "mwsquare",
- [0x33BE] = "kwsquare",
- [0x33BF] = "mwmegasquare",
- [0x33C0] = "kohmsquare",
- [0x33C1] = "mohmsquare",
- [0x33C2] = "amsquare",
- [0x33C3] = "bqsquare",
- [0x33C4] = "squarecc",
- [0x33C5] = "cdsquare",
- [0x33C6] = "coverkgsquare",
- [0x33C7] = "cosquare",
- [0x33C8] = "dbsquare",
- [0x33C9] = "gysquare",
- [0x33CA] = "hasquare",
- [0x33CB] = "HPsquare",
- [0x33CD] = "KKsquare",
- [0x33CE] = "squarekmcapital",
- [0x33CF] = "ktsquare",
- [0x33D0] = "lmsquare",
- [0x33D1] = "squareln",
- [0x33D2] = "squarelog",
- [0x33D3] = "lxsquare",
- [0x33D4] = "mbsquare",
- [0x33D5] = "squaremil",
- [0x33D6] = "molsquare",
- [0x33D8] = "pmsquare",
- [0x33DB] = "srsquare",
- [0x33DC] = "svsquare",
- [0x33DD] = "wbsquare",
- [0x5344] = "twentyhangzhou",
- [0xF6BE] = "dotlessj",
- [0xF6BF] = "LL",
- [0xF6C0] = "ll",
- [0xF6C3] = "commaaccent",
- [0xF6C4] = "afii10063",
- [0xF6C5] = "afii10064",
- [0xF6C6] = "afii10192",
- [0xF6C7] = "afii10831",
- [0xF6C8] = "afii10832",
- [0xF6C9] = "Acute",
- [0xF6CA] = "Caron",
- [0xF6CB] = "Dieresis",
- [0xF6CC] = "DieresisAcute",
- [0xF6CD] = "DieresisGrave",
- [0xF6CE] = "Grave",
- [0xF6CF] = "Hungarumlaut",
- [0xF6D0] = "Macron",
- [0xF6D1] = "cyrBreve",
- [0xF6D2] = "cyrFlex",
- [0xF6D3] = "dblGrave",
- [0xF6D4] = "cyrbreve",
- [0xF6D5] = "cyrflex",
- [0xF6D6] = "dblgrave",
- [0xF6D7] = "dieresisacute",
- [0xF6D8] = "dieresisgrave",
- [0xF6D9] = "copyrightserif",
- [0xF6DA] = "registerserif",
- [0xF6DB] = "trademarkserif",
- [0xF6DC] = "onefitted",
- [0xF6DD] = "rupiah",
- [0xF6DE] = "threequartersemdash",
- [0xF6DF] = "centinferior",
- [0xF6E0] = "centsuperior",
- [0xF6E1] = "commainferior",
- [0xF6E2] = "commasuperior",
- [0xF6E3] = "dollarinferior",
- [0xF6E4] = "dollarsuperior",
- [0xF6E5] = "hypheninferior",
- [0xF6E6] = "hyphensuperior",
- [0xF6E7] = "periodinferior",
- [0xF6E8] = "periodsuperior",
- [0xF6E9] = "asuperior",
- [0xF6EA] = "bsuperior",
- [0xF6EB] = "dsuperior",
- [0xF6EC] = "esuperior",
- [0xF6ED] = "isuperior",
- [0xF6EE] = "lsuperior",
- [0xF6EF] = "msuperior",
- [0xF6F0] = "osuperior",
- [0xF6F1] = "rsuperior",
- [0xF6F2] = "ssuperior",
- [0xF6F3] = "tsuperior",
- [0xF6F4] = "Brevesmall",
- [0xF6F5] = "Caronsmall",
- [0xF6F6] = "Circumflexsmall",
- [0xF6F7] = "Dotaccentsmall",
- [0xF6F8] = "Hungarumlautsmall",
- [0xF6F9] = "Lslashsmall",
- [0xF6FA] = "OEsmall",
- [0xF6FB] = "Ogoneksmall",
- [0xF6FC] = "Ringsmall",
- [0xF6FD] = "Scaronsmall",
- [0xF6FE] = "Tildesmall",
- [0xF6FF] = "Zcaronsmall",
- [0xF721] = "exclamsmall",
- [0xF724] = "dollaroldstyle",
- [0xF726] = "ampersandsmall",
- [0xF730] = "zerooldstyle",
- [0xF731] = "oneoldstyle",
- [0xF732] = "twooldstyle",
- [0xF733] = "threeoldstyle",
- [0xF734] = "fouroldstyle",
- [0xF735] = "fiveoldstyle",
- [0xF736] = "sixoldstyle",
- [0xF737] = "sevenoldstyle",
- [0xF738] = "eightoldstyle",
- [0xF739] = "nineoldstyle",
- [0xF73F] = "questionsmall",
- [0xF760] = "Gravesmall",
- [0xF761] = "Asmall",
- [0xF762] = "Bsmall",
- [0xF763] = "Csmall",
- [0xF764] = "Dsmall",
- [0xF765] = "Esmall",
- [0xF766] = "Fsmall",
- [0xF767] = "Gsmall",
- [0xF768] = "Hsmall",
- [0xF769] = "Ismall",
- [0xF76A] = "Jsmall",
- [0xF76B] = "Ksmall",
- [0xF76C] = "Lsmall",
- [0xF76D] = "Msmall",
- [0xF76E] = "Nsmall",
- [0xF76F] = "Osmall",
- [0xF770] = "Psmall",
- [0xF771] = "Qsmall",
- [0xF772] = "Rsmall",
- [0xF773] = "Ssmall",
- [0xF774] = "Tsmall",
- [0xF775] = "Usmall",
- [0xF776] = "Vsmall",
- [0xF777] = "Wsmall",
- [0xF778] = "Xsmall",
- [0xF779] = "Ysmall",
- [0xF77A] = "Zsmall",
- [0xF7A1] = "exclamdownsmall",
- [0xF7A2] = "centoldstyle",
- [0xF7A8] = "Dieresissmall",
- [0xF7AF] = "Macronsmall",
- [0xF7B4] = "Acutesmall",
- [0xF7B8] = "Cedillasmall",
- [0xF7BF] = "questiondownsmall",
- [0xF7E0] = "Agravesmall",
- [0xF7E1] = "Aacutesmall",
- [0xF7E2] = "Acircumflexsmall",
- [0xF7E3] = "Atildesmall",
- [0xF7E4] = "Adieresissmall",
- [0xF7E5] = "Aringsmall",
- [0xF7E6] = "AEsmall",
- [0xF7E7] = "Ccedillasmall",
- [0xF7E8] = "Egravesmall",
- [0xF7E9] = "Eacutesmall",
- [0xF7EA] = "Ecircumflexsmall",
- [0xF7EB] = "Edieresissmall",
- [0xF7EC] = "Igravesmall",
- [0xF7ED] = "Iacutesmall",
- [0xF7EE] = "Icircumflexsmall",
- [0xF7EF] = "Idieresissmall",
- [0xF7F0] = "Ethsmall",
- [0xF7F1] = "Ntildesmall",
- [0xF7F2] = "Ogravesmall",
- [0xF7F3] = "Oacutesmall",
- [0xF7F4] = "Ocircumflexsmall",
- [0xF7F5] = "Otildesmall",
- [0xF7F6] = "Odieresissmall",
- [0xF7F8] = "Oslashsmall",
- [0xF7F9] = "Ugravesmall",
- [0xF7FA] = "Uacutesmall",
- [0xF7FB] = "Ucircumflexsmall",
- [0xF7FC] = "Udieresissmall",
- [0xF7FD] = "Yacutesmall",
- [0xF7FE] = "Thornsmall",
- [0xF7FF] = "Ydieresissmall",
- [0xF884] = "maihanakatleftthai",
- [0xF885] = "saraileftthai",
- [0xF886] = "saraiileftthai",
- [0xF887] = "saraueleftthai",
- [0xF888] = "saraueeleftthai",
- [0xF889] = "maitaikhuleftthai",
- [0xF88A] = "maiekupperleftthai",
- [0xF88B] = "maieklowrightthai",
- [0xF88C] = "maieklowleftthai",
- [0xF88D] = "maithoupperleftthai",
- [0xF88E] = "maitholowrightthai",
- [0xF88F] = "maitholowleftthai",
- [0xF890] = "maitriupperleftthai",
- [0xF891] = "maitrilowrightthai",
- [0xF892] = "maitrilowleftthai",
- [0xF893] = "maichattawaupperleftthai",
- [0xF894] = "maichattawalowrightthai",
- [0xF895] = "maichattawalowleftthai",
- [0xF896] = "thanthakhatupperleftthai",
- [0xF897] = "thanthakhatlowrightthai",
- [0xF898] = "thanthakhatlowleftthai",
- [0xF899] = "nikhahitleftthai",
- [0xF8E5] = "radicalex",
- [0xF8E6] = "arrowvertex",
- [0xF8E7] = "arrowhorizex",
- [0xF8E8] = "registersans",
- [0xF8E9] = "copyrightsans",
- [0xF8EA] = "trademarksans",
- [0xF8EB] = "parenlefttp",
- [0xF8EC] = "parenleftex",
- [0xF8ED] = "parenleftbt",
- [0xF8EE] = "bracketlefttp",
- [0xF8EF] = "bracketleftex",
- [0xF8F0] = "bracketleftbt",
- [0xF8F1] = "bracelefttp",
- [0xF8F2] = "braceleftmid",
- [0xF8F3] = "braceleftbt",
- [0xF8F4] = "braceex",
- [0xF8F5] = "integralex",
- [0xF8F6] = "parenrighttp",
- [0xF8F7] = "parenrightex",
- [0xF8F8] = "parenrightbt",
- [0xF8F9] = "bracketrighttp",
- [0xF8FA] = "bracketrightex",
- [0xF8FB] = "bracketrightbt",
- [0xF8FC] = "bracerighttp",
- [0xF8FD] = "bracerightmid",
- [0xF8FE] = "bracerightbt",
- [0xF8FF] = "apple",
- [0xFB00] = "ff",
- [0xFB01] = "fi",
- [0xFB02] = "fl",
- [0xFB03] = "ffi",
- [0xFB04] = "ffl",
- [0xFB1F] = "yodyodpatahhebrew",
- [0xFB20] = "ayinaltonehebrew",
- [0xFB2A] = "shinshindothebrew",
- [0xFB2B] = "shinsindothebrew",
- [0xFB2C] = "shindageshshindothebrew",
- [0xFB2D] = "shindageshsindothebrew",
- [0xFB2E] = "alefpatahhebrew",
- [0xFB2F] = "alefqamatshebrew",
- [0xFB30] = "alefdageshhebrew",
- [0xFB31] = "betdageshhebrew",
- [0xFB32] = "gimeldageshhebrew",
- [0xFB33] = "daletdageshhebrew",
- [0xFB34] = "hedageshhebrew",
- [0xFB35] = "vavdageshhebrew",
- [0xFB36] = "zayindageshhebrew",
- [0xFB38] = "tetdageshhebrew",
- [0xFB39] = "yoddageshhebrew",
- [0xFB3A] = "finalkafdageshhebrew",
- [0xFB3B] = "kafdageshhebrew",
- [0xFB3C] = "lameddageshhebrew",
- [0xFB3E] = "memdageshhebrew",
- [0xFB40] = "nundageshhebrew",
- [0xFB41] = "samekhdageshhebrew",
- [0xFB43] = "pefinaldageshhebrew",
- [0xFB44] = "pedageshhebrew",
- [0xFB46] = "tsadidageshhebrew",
- [0xFB47] = "qofdageshhebrew",
- [0xFB48] = "reshdageshhebrew",
- [0xFB49] = "shindageshhebrew",
- [0xFB4A] = "tavdageshhebrew",
- [0xFB4B] = "vavholamhebrew",
- [0xFB4C] = "betrafehebrew",
- [0xFB4D] = "kafrafehebrew",
- [0xFB4E] = "perafehebrew",
- [0xFB4F] = "aleflamedhebrew",
- [0xFB57] = "pehfinalarabic",
- [0xFB58] = "pehinitialarabic",
- [0xFB59] = "pehmedialarabic",
- [0xFB67] = "ttehfinalarabic",
- [0xFB68] = "ttehinitialarabic",
- [0xFB69] = "ttehmedialarabic",
- [0xFB6B] = "vehfinalarabic",
- [0xFB6C] = "vehinitialarabic",
- [0xFB6D] = "vehmedialarabic",
- [0xFB7B] = "tchehfinalarabic",
- [0xFB7C] = "tchehmeeminitialarabic",
- [0xFB7D] = "tchehmedialarabic",
- [0xFB89] = "ddalfinalarabic",
- [0xFB8B] = "jehfinalarabic",
- [0xFB8D] = "rrehfinalarabic",
- [0xFB93] = "gaffinalarabic",
- [0xFB94] = "gafinitialarabic",
- [0xFB95] = "gafmedialarabic",
- [0xFB9F] = "noonghunnafinalarabic",
- [0xFBA4] = "hehhamzaaboveisolatedarabic",
- [0xFBA5] = "hehhamzaabovefinalarabic",
- [0xFBA7] = "hehfinalaltonearabic",
- [0xFBA8] = "hehinitialaltonearabic",
- [0xFBA9] = "hehmedialaltonearabic",
- [0xFBAF] = "yehbarreefinalarabic",
- [0xFC08] = "behmeemisolatedarabic",
- [0xFC0B] = "tehjeemisolatedarabic",
- [0xFC0C] = "tehhahisolatedarabic",
- [0xFC0E] = "tehmeemisolatedarabic",
- [0xFC48] = "meemmeemisolatedarabic",
- [0xFC4B] = "noonjeemisolatedarabic",
- [0xFC4E] = "noonmeemisolatedarabic",
- [0xFC58] = "yehmeemisolatedarabic",
- [0xFC5E] = "shaddadammatanarabic",
- [0xFC5F] = "shaddakasratanarabic",
- [0xFC60] = "shaddafathaarabic",
- [0xFC61] = "shaddadammaarabic",
- [0xFC62] = "shaddakasraarabic",
- [0xFC6D] = "behnoonfinalarabic",
- [0xFC73] = "tehnoonfinalarabic",
- [0xFC8D] = "noonnoonfinalarabic",
- [0xFC94] = "yehnoonfinalarabic",
- [0xFC9F] = "behmeeminitialarabic",
- [0xFCA1] = "tehjeeminitialarabic",
- [0xFCA2] = "tehhahinitialarabic",
- [0xFCA4] = "tehmeeminitialarabic",
- [0xFCC9] = "lamjeeminitialarabic",
- [0xFCCA] = "lamhahinitialarabic",
- [0xFCCB] = "lamkhahinitialarabic",
- [0xFCCC] = "lammeeminitialarabic",
- [0xFCD1] = "meemmeeminitialarabic",
- [0xFCD2] = "noonjeeminitialarabic",
- [0xFCD5] = "noonmeeminitialarabic",
- [0xFCDD] = "yehmeeminitialarabic",
- [0xFD3E] = "parenleftaltonearabic",
- [0xFD3F] = "parenrightaltonearabic",
- [0xFD88] = "lammeemhahinitialarabic",
- [0xFDF2] = "lamlamhehisolatedarabic",
- [0xFDFA] = "sallallahoualayhewasallamarabic",
- [0xFE30] = "twodotleadervertical",
- [0xFE31] = "emdashvertical",
- [0xFE32] = "endashvertical",
- [0xFE33] = "underscorevertical",
- [0xFE34] = "wavyunderscorevertical",
- [0xFE35] = "parenleftvertical",
- [0xFE36] = "parenrightvertical",
- [0xFE37] = "braceleftvertical",
- [0xFE38] = "bracerightvertical",
- [0xFE39] = "tortoiseshellbracketleftvertical",
- [0xFE3A] = "tortoiseshellbracketrightvertical",
- [0xFE3B] = "blacklenticularbracketleftvertical",
- [0xFE3C] = "blacklenticularbracketrightvertical",
- [0xFE3D] = "dblanglebracketleftvertical",
- [0xFE3E] = "dblanglebracketrightvertical",
- [0xFE3F] = "anglebracketleftvertical",
- [0xFE40] = "anglebracketrightvertical",
- [0xFE41] = "cornerbracketleftvertical",
- [0xFE42] = "cornerbracketrightvertical",
- [0xFE43] = "whitecornerbracketleftvertical",
- [0xFE44] = "whitecornerbracketrightvertical",
- [0xFE49] = "overlinedashed",
- [0xFE4A] = "overlinecenterline",
- [0xFE4B] = "overlinewavy",
- [0xFE4C] = "overlinedblwavy",
- [0xFE4D] = "lowlinedashed",
- [0xFE4E] = "lowlinecenterline",
- [0xFE4F] = "underscorewavy",
- [0xFE50] = "commasmall",
- [0xFE52] = "periodsmall",
- [0xFE54] = "semicolonsmall",
- [0xFE55] = "colonsmall",
- [0xFE59] = "parenleftsmall",
- [0xFE5A] = "parenrightsmall",
- [0xFE5B] = "braceleftsmall",
- [0xFE5C] = "bracerightsmall",
- [0xFE5D] = "tortoiseshellbracketleftsmall",
- [0xFE5E] = "tortoiseshellbracketrightsmall",
- [0xFE5F] = "numbersignsmall",
- [0xFE61] = "asterisksmall",
- [0xFE62] = "plussmall",
- [0xFE63] = "hyphensmall",
- [0xFE64] = "lesssmall",
- [0xFE65] = "greatersmall",
- [0xFE66] = "equalsmall",
- [0xFE69] = "dollarsmall",
- [0xFE6A] = "percentsmall",
- [0xFE6B] = "atsmall",
- [0xFE82] = "alefmaddaabovefinalarabic",
- [0xFE84] = "alefhamzaabovefinalarabic",
- [0xFE86] = "wawhamzaabovefinalarabic",
- [0xFE88] = "alefhamzabelowfinalarabic",
- [0xFE8A] = "yehhamzaabovefinalarabic",
- [0xFE8B] = "yehhamzaaboveinitialarabic",
- [0xFE8C] = "yehhamzaabovemedialarabic",
- [0xFE8E] = "aleffinalarabic",
- [0xFE90] = "behfinalarabic",
- [0xFE91] = "behinitialarabic",
- [0xFE92] = "behmedialarabic",
- [0xFE94] = "tehmarbutafinalarabic",
- [0xFE96] = "tehfinalarabic",
- [0xFE97] = "tehinitialarabic",
- [0xFE98] = "tehmedialarabic",
- [0xFE9A] = "thehfinalarabic",
- [0xFE9B] = "thehinitialarabic",
- [0xFE9C] = "thehmedialarabic",
- [0xFE9E] = "jeemfinalarabic",
- [0xFE9F] = "jeeminitialarabic",
- [0xFEA0] = "jeemmedialarabic",
- [0xFEA2] = "hahfinalarabic",
- [0xFEA3] = "hahinitialarabic",
- [0xFEA4] = "hahmedialarabic",
- [0xFEA6] = "khahfinalarabic",
- [0xFEA7] = "khahinitialarabic",
- [0xFEA8] = "khahmedialarabic",
- [0xFEAA] = "dalfinalarabic",
- [0xFEAC] = "thalfinalarabic",
- [0xFEAE] = "rehfinalarabic",
- [0xFEB0] = "zainfinalarabic",
- [0xFEB2] = "seenfinalarabic",
- [0xFEB3] = "seeninitialarabic",
- [0xFEB4] = "seenmedialarabic",
- [0xFEB6] = "sheenfinalarabic",
- [0xFEB7] = "sheeninitialarabic",
- [0xFEB8] = "sheenmedialarabic",
- [0xFEBA] = "sadfinalarabic",
- [0xFEBB] = "sadinitialarabic",
- [0xFEBC] = "sadmedialarabic",
- [0xFEBE] = "dadfinalarabic",
- [0xFEBF] = "dadinitialarabic",
- [0xFEC0] = "dadmedialarabic",
- [0xFEC2] = "tahfinalarabic",
- [0xFEC3] = "tahinitialarabic",
- [0xFEC4] = "tahmedialarabic",
- [0xFEC6] = "zahfinalarabic",
- [0xFEC7] = "zahinitialarabic",
- [0xFEC8] = "zahmedialarabic",
- [0xFECA] = "ainfinalarabic",
- [0xFECB] = "aininitialarabic",
- [0xFECC] = "ainmedialarabic",
- [0xFECE] = "ghainfinalarabic",
- [0xFECF] = "ghaininitialarabic",
- [0xFED0] = "ghainmedialarabic",
- [0xFED2] = "fehfinalarabic",
- [0xFED3] = "fehinitialarabic",
- [0xFED4] = "fehmedialarabic",
- [0xFED6] = "qaffinalarabic",
- [0xFED7] = "qafinitialarabic",
- [0xFED8] = "qafmedialarabic",
- [0xFEDA] = "kaffinalarabic",
- [0xFEDB] = "kafinitialarabic",
- [0xFEDC] = "kafmedialarabic",
- [0xFEDE] = "lamfinalarabic",
- [0xFEDF] = "lammeemkhahinitialarabic",
- [0xFEE0] = "lammedialarabic",
- [0xFEE2] = "meemfinalarabic",
- [0xFEE3] = "meeminitialarabic",
- [0xFEE4] = "meemmedialarabic",
- [0xFEE6] = "noonfinalarabic",
- [0xFEE7] = "nooninitialarabic",
- [0xFEE8] = "noonmedialarabic",
- [0xFEEA] = "hehfinalarabic",
- [0xFEEB] = "hehinitialarabic",
- [0xFEEC] = "hehmedialarabic",
- [0xFEEE] = "wawfinalarabic",
- [0xFEF0] = "alefmaksurafinalarabic",
- [0xFEF2] = "yehfinalarabic",
- [0xFEF3] = "yehinitialarabic",
- [0xFEF4] = "yehmedialarabic",
- [0xFEF5] = "lamalefmaddaaboveisolatedarabic",
- [0xFEF6] = "lamalefmaddaabovefinalarabic",
- [0xFEF7] = "lamalefhamzaaboveisolatedarabic",
- [0xFEF8] = "lamalefhamzaabovefinalarabic",
- [0xFEF9] = "lamalefhamzabelowisolatedarabic",
- [0xFEFA] = "lamalefhamzabelowfinalarabic",
- [0xFEFB] = "lamalefisolatedarabic",
- [0xFEFC] = "lamaleffinalarabic",
- [0xFEFF] = "zerowidthjoiner",
- [0xFF01] = "exclammonospace",
- [0xFF02] = "quotedblmonospace",
- [0xFF03] = "numbersignmonospace",
- [0xFF04] = "dollarmonospace",
- [0xFF05] = "percentmonospace",
- [0xFF06] = "ampersandmonospace",
- [0xFF07] = "quotesinglemonospace",
- [0xFF08] = "parenleftmonospace",
- [0xFF09] = "parenrightmonospace",
- [0xFF0A] = "asteriskmonospace",
- [0xFF0B] = "plusmonospace",
- [0xFF0C] = "commamonospace",
- [0xFF0D] = "hyphenmonospace",
- [0xFF0E] = "periodmonospace",
- [0xFF0F] = "slashmonospace",
- [0xFF10] = "zeromonospace",
- [0xFF11] = "onemonospace",
- [0xFF12] = "twomonospace",
- [0xFF13] = "threemonospace",
- [0xFF14] = "fourmonospace",
- [0xFF15] = "fivemonospace",
- [0xFF16] = "sixmonospace",
- [0xFF17] = "sevenmonospace",
- [0xFF18] = "eightmonospace",
- [0xFF19] = "ninemonospace",
- [0xFF1A] = "colonmonospace",
- [0xFF1B] = "semicolonmonospace",
- [0xFF1C] = "lessmonospace",
- [0xFF1D] = "equalmonospace",
- [0xFF1E] = "greatermonospace",
- [0xFF1F] = "questionmonospace",
- [0xFF20] = "atmonospace",
- [0xFF21] = "Amonospace",
- [0xFF22] = "Bmonospace",
- [0xFF23] = "Cmonospace",
- [0xFF24] = "Dmonospace",
- [0xFF25] = "Emonospace",
- [0xFF26] = "Fmonospace",
- [0xFF27] = "Gmonospace",
- [0xFF28] = "Hmonospace",
- [0xFF29] = "Imonospace",
- [0xFF2A] = "Jmonospace",
- [0xFF2B] = "Kmonospace",
- [0xFF2C] = "Lmonospace",
- [0xFF2D] = "Mmonospace",
- [0xFF2E] = "Nmonospace",
- [0xFF2F] = "Omonospace",
- [0xFF30] = "Pmonospace",
- [0xFF31] = "Qmonospace",
- [0xFF32] = "Rmonospace",
- [0xFF33] = "Smonospace",
- [0xFF34] = "Tmonospace",
- [0xFF35] = "Umonospace",
- [0xFF36] = "Vmonospace",
- [0xFF37] = "Wmonospace",
- [0xFF38] = "Xmonospace",
- [0xFF39] = "Ymonospace",
- [0xFF3A] = "Zmonospace",
- [0xFF3B] = "bracketleftmonospace",
- [0xFF3C] = "backslashmonospace",
- [0xFF3D] = "bracketrightmonospace",
- [0xFF3E] = "asciicircummonospace",
- [0xFF3F] = "underscoremonospace",
- [0xFF40] = "gravemonospace",
- [0xFF41] = "amonospace",
- [0xFF42] = "bmonospace",
- [0xFF43] = "cmonospace",
- [0xFF44] = "dmonospace",
- [0xFF45] = "emonospace",
- [0xFF46] = "fmonospace",
- [0xFF47] = "gmonospace",
- [0xFF48] = "hmonospace",
- [0xFF49] = "imonospace",
- [0xFF4A] = "jmonospace",
- [0xFF4B] = "kmonospace",
- [0xFF4C] = "lmonospace",
- [0xFF4D] = "mmonospace",
- [0xFF4E] = "nmonospace",
- [0xFF4F] = "omonospace",
- [0xFF50] = "pmonospace",
- [0xFF51] = "qmonospace",
- [0xFF52] = "rmonospace",
- [0xFF53] = "smonospace",
- [0xFF54] = "tmonospace",
- [0xFF55] = "umonospace",
- [0xFF56] = "vmonospace",
- [0xFF57] = "wmonospace",
- [0xFF58] = "xmonospace",
- [0xFF59] = "ymonospace",
- [0xFF5A] = "zmonospace",
- [0xFF5B] = "braceleftmonospace",
- [0xFF5C] = "barmonospace",
- [0xFF5D] = "bracerightmonospace",
- [0xFF5E] = "asciitildemonospace",
- [0xFF61] = "periodhalfwidth",
- [0xFF62] = "cornerbracketlefthalfwidth",
- [0xFF63] = "cornerbracketrighthalfwidth",
- [0xFF64] = "ideographiccommaleft",
- [0xFF65] = "middledotkatakanahalfwidth",
- [0xFF66] = "wokatakanahalfwidth",
- [0xFF67] = "asmallkatakanahalfwidth",
- [0xFF68] = "ismallkatakanahalfwidth",
- [0xFF69] = "usmallkatakanahalfwidth",
- [0xFF6A] = "esmallkatakanahalfwidth",
- [0xFF6B] = "osmallkatakanahalfwidth",
- [0xFF6C] = "yasmallkatakanahalfwidth",
- [0xFF6D] = "yusmallkatakanahalfwidth",
- [0xFF6E] = "yosmallkatakanahalfwidth",
- [0xFF6F] = "tusmallkatakanahalfwidth",
- [0xFF70] = "katahiraprolongmarkhalfwidth",
- [0xFF71] = "akatakanahalfwidth",
- [0xFF72] = "ikatakanahalfwidth",
- [0xFF73] = "ukatakanahalfwidth",
- [0xFF74] = "ekatakanahalfwidth",
- [0xFF75] = "okatakanahalfwidth",
- [0xFF76] = "kakatakanahalfwidth",
- [0xFF77] = "kikatakanahalfwidth",
- [0xFF78] = "kukatakanahalfwidth",
- [0xFF79] = "kekatakanahalfwidth",
- [0xFF7A] = "kokatakanahalfwidth",
- [0xFF7B] = "sakatakanahalfwidth",
- [0xFF7C] = "sikatakanahalfwidth",
- [0xFF7D] = "sukatakanahalfwidth",
- [0xFF7E] = "sekatakanahalfwidth",
- [0xFF7F] = "sokatakanahalfwidth",
- [0xFF80] = "takatakanahalfwidth",
- [0xFF81] = "tikatakanahalfwidth",
- [0xFF82] = "tukatakanahalfwidth",
- [0xFF83] = "tekatakanahalfwidth",
- [0xFF84] = "tokatakanahalfwidth",
- [0xFF85] = "nakatakanahalfwidth",
- [0xFF86] = "nikatakanahalfwidth",
- [0xFF87] = "nukatakanahalfwidth",
- [0xFF88] = "nekatakanahalfwidth",
- [0xFF89] = "nokatakanahalfwidth",
- [0xFF8A] = "hakatakanahalfwidth",
- [0xFF8B] = "hikatakanahalfwidth",
- [0xFF8C] = "hukatakanahalfwidth",
- [0xFF8D] = "hekatakanahalfwidth",
- [0xFF8E] = "hokatakanahalfwidth",
- [0xFF8F] = "makatakanahalfwidth",
- [0xFF90] = "mikatakanahalfwidth",
- [0xFF91] = "mukatakanahalfwidth",
- [0xFF92] = "mekatakanahalfwidth",
- [0xFF93] = "mokatakanahalfwidth",
- [0xFF94] = "yakatakanahalfwidth",
- [0xFF95] = "yukatakanahalfwidth",
- [0xFF96] = "yokatakanahalfwidth",
- [0xFF97] = "rakatakanahalfwidth",
- [0xFF98] = "rikatakanahalfwidth",
- [0xFF99] = "rukatakanahalfwidth",
- [0xFF9A] = "rekatakanahalfwidth",
- [0xFF9B] = "rokatakanahalfwidth",
- [0xFF9C] = "wakatakanahalfwidth",
- [0xFF9D] = "nkatakanahalfwidth",
- [0xFF9E] = "voicedmarkkanahalfwidth",
- [0xFF9F] = "semivoicedmarkkanahalfwidth",
- [0xFFE0] = "centmonospace",
- [0xFFE1] = "sterlingmonospace",
- [0xFFE3] = "macronmonospace",
- [0xFFE5] = "yenmonospace",
- [0xFFE6] = "wonmonospace",
-}
-
-agl.unicodes = allocate(table.swapped(agl.names)) -- to unicode
diff --git a/otfl-font-cid.lua b/otfl-font-cid.lua
index 1d03bca..a9bd3c5 100644
--- a/otfl-font-cid.lua
+++ b/otfl-font-cid.lua
@@ -12,7 +12,7 @@ local lpegmatch = lpeg.match
local trace_loading = false trackers.register("otf.loading", function(v) trace_loading = v end)
-local report_otf = logs.new("load otf")
+local report_otf = logs.reporter("fonts","otf loading")
local fonts = fonts
diff --git a/otfl-font-def.lua b/otfl-font-def.lua
index e87fee4..3a09b66 100644
--- a/otfl-font-def.lua
+++ b/otfl-font-def.lua
@@ -6,7 +6,8 @@ if not modules then modules = { } end modules ['font-def'] = {
license = "see context related readme files"
}
-local format, concat, gmatch, match, find, lower = string.format, table.concat, string.gmatch, string.match, string.find, string.lower
+local concat = table.concat
+local format, gmatch, match, find, lower, gsub = string.format, string.gmatch, string.match, string.find, string.lower, string.gsub
local tostring, next = tostring, next
local lpegmatch = lpeg.match
@@ -18,8 +19,7 @@ local directive_embedall = false directives.register("fonts.embedall", function
trackers.register("fonts.loading", "fonts.defining", "otf.loading", "afm.loading", "tfm.loading")
trackers.register("fonts.all", "fonts.*", "otf.*", "afm.*", "tfm.*")
-local report_define = logs.new("define fonts")
-local report_afm = logs.new("load afm")
+local report_defining = logs.reporter("fonts","defining")
--[[ldx--
<p>Here we deal with defining fonts. We do so by intercepting the
@@ -29,16 +29,14 @@ default loader that only handles <l n='tfm'/>.</p>
local fonts = fonts
local tfm = fonts.tfm
local vf = fonts.vf
-local fontcsnames = fonts.csnames
fonts.used = allocate()
tfm.readers = tfm.readers or { }
tfm.fonts = allocate()
-tfm.internalized = allocate() -- internal tex numbers
local readers = tfm.readers
-local sequence = allocate { 'otf', 'ttf', 'afm', 'tfm' }
+local sequence = allocate { 'otf', 'ttf', 'afm', 'tfm', 'lua' }
readers.sequence = sequence
tfm.version = 1.01
@@ -125,15 +123,18 @@ end
definers.getspecification = getspecification
-function definers.registersplit(symbol,action)
+function definers.registersplit(symbol,action,verbosename)
addspecifier(symbol)
variants[symbol] = action
+ if verbosename then
+ variants[verbosename] = action
+ end
end
function definers.makespecification(specification, lookup, name, sub, method, detail, size)
size = size or 655360
if trace_defining then
- report_define("%s -> lookup: %s, name: %s, sub: %s, method: %s, detail: %s",
+ report_defining("%s -> lookup: %s, name: %s, sub: %s, method: %s, detail: %s",
specification, (lookup ~= "" and lookup) or "[file]", (name ~= "" and name) or "-",
(sub ~= "" and sub) or "-", (method ~= "" and method) or "-", (detail ~= "" and detail) or "-")
end
@@ -191,10 +192,10 @@ function tfm.hashfeatures(specification)
t[tn] = v .. '=' .. tostring(vtf[v])
end
end
- --~ if specification.mathsize then
- --~ tn = tn + 1
- --~ t[tn] = "mathsize=" .. specification.mathsize
- --~ end
+ -- if specification.mathsize then
+ -- tn = tn + 1
+ -- t[tn] = "mathsize=" .. specification.mathsize
+ -- end
if tn > 0 then
return concat(t,"+")
end
@@ -222,21 +223,21 @@ function tfm.hashinstance(specification,force)
size = math.round(tfm.scaled(size,fonts.designsizes[hash]))
specification.size = size
end
---~ local mathsize = specification.mathsize or 0
---~ if mathsize > 0 then
---~ local textsize = specification.textsize
---~ if fallbacks then
---~ return hash .. ' @ ' .. tostring(size) .. ' [ ' .. tostring(mathsize) .. ' : ' .. tostring(textsize) .. ' ] @ ' .. fallbacks
---~ else
---~ return hash .. ' @ ' .. tostring(size) .. ' [ ' .. tostring(mathsize) .. ' : ' .. tostring(textsize) .. ' ]'
---~ end
---~ else
+ -- local mathsize = specification.mathsize or 0
+ -- if mathsize > 0 then
+ -- local textsize = specification.textsize
+ -- if fallbacks then
+ -- return hash .. ' @ ' .. tostring(size) .. ' [ ' .. tostring(mathsize) .. ' : ' .. tostring(textsize) .. ' ] @ ' .. fallbacks
+ -- else
+ -- return hash .. ' @ ' .. tostring(size) .. ' [ ' .. tostring(mathsize) .. ' : ' .. tostring(textsize) .. ' ]'
+ -- end
+ -- else
if fallbacks then
return hash .. ' @ ' .. tostring(size) .. ' @ ' .. fallbacks
else
return hash .. ' @ ' .. tostring(size)
end
---~ end
+ -- end
end
--[[ldx--
@@ -259,7 +260,7 @@ end
function resolvers.name(specification)
local resolve = fonts.names.resolve
if resolve then
- local resolved, sub = fonts.names.resolve(specification)
+ local resolved, sub = fonts.names.resolve(specification.name,specification.sub)
specification.resolved, specification.sub = resolved, sub
if resolved then
local suffix = file.suffix(resolved)
@@ -278,7 +279,7 @@ end
function resolvers.spec(specification)
local resolvespec = fonts.names.resolvespec
if resolvespec then
- specification.resolved, specification.sub = fonts.names.resolvespec(specification)
+ specification.resolved, specification.sub = fonts.names.resolvespec(specification.name,specification.sub)
if specification.resolved then
specification.forced = file.extname(specification.resolved)
specification.name = file.removesuffix(specification.resolved)
@@ -338,16 +339,17 @@ function tfm.read(specification)
if not tfmtable then
local forced = specification.forced or ""
if forced ~= "" then
- tfmtable = readers[lower(forced)](specification)
+ local reader = readers[lower(forced)]
+ tfmtable = reader and reader(specification)
if not tfmtable then
- report_define("forced type %s of %s not found",forced,specification.name)
+ report_defining("forced type %s of %s not found",forced,specification.name)
end
else
for s=1,#sequence do -- reader sequence
local reader = sequence[s]
if readers[reader] then -- not really needed
if trace_defining then
- report_define("trying (reader sequence driven) type %s for %s with file %s",reader,specification.name,specification.filename or "unknown")
+ report_defining("trying (reader sequence driven) type %s for %s with file %s",reader,specification.name,specification.filename or "unknown")
end
tfmtable = readers[reader](specification)
if tfmtable then
@@ -366,13 +368,26 @@ function tfm.read(specification)
else
tfmtable.embedding = "subset"
end
+ -- fonts.goodies.postprocessors.apply(tfmdata) -- only here
+ local postprocessors = tfmtable.postprocessors
+ if postprocessors then
+ for i=1,#postprocessors do
+ local extrahash = postprocessors[i](tfmtable) -- after scaling etc
+ if type(extrahash) == "string" and extrahash ~= "" then
+ -- e.g. a reencoding needs this
+ extrahash = gsub(lower(extrahash),"[^a-z]","-")
+ tfmtable.fullname = format("%s-%s",tfmtable.fullname,extrahash)
+ end
+ end
+ end
+ --
tfm.fonts[hash] = tfmtable
fonts.designsizes[specification.hash] = tfmtable.designsize -- we only know this for sure after loading once
--~ tfmtable.mode = specification.features.normal.mode or "base"
end
end
if not tfmtable then
- report_define("font with name %s is not found",specification.name)
+ report_defining("font with asked name '%s' is not found using lookup '%s'",specification.name,specification.lookup)
end
return tfmtable
end
@@ -391,153 +406,20 @@ function tfm.readanddefine(name,size) -- no id
local hash = tfm.hashinstance(specification)
local id = definers.registered(hash)
if not id then
- local fontdata = tfm.read(specification)
- if fontdata then
- fontdata.hash = hash
- id = font.define(fontdata)
- definers.register(fontdata,id)
- tfm.cleanuptable(fontdata)
+ local tfmdata = tfm.read(specification)
+ if tfmdata then
+ tfmdata.hash = hash
+ id = font.define(tfmdata)
+ definers.register(tfmdata,id)
+ tfm.cleanuptable(tfmdata)
else
id = 0 -- signal
end
end
- return fonts.ids[id], id
+ return fonts.identifiers[id], id
end
--[[ldx--
-<p>Next follow the readers. This code was written while <l n='luatex'/>
-evolved. Each one has its own way of dealing with its format.</p>
---ldx]]--
-
-local function check_tfm(specification,fullname)
- -- ofm directive blocks local path search unless set; btw, in context we
- -- don't support ofm files anyway as this format is obsolete
- local foundname = findbinfile(fullname, 'tfm') or "" -- just to be sure
- if foundname == "" then
- foundname = findbinfile(fullname, 'ofm') or "" -- bonus for usage outside context
- end
- if foundname == "" then
- foundname = fonts.names.getfilename(fullname,"tfm")
- end
- if foundname ~= "" then
- specification.filename, specification.format = foundname, "ofm"
- return tfm.read_from_tfm(specification)
- end
-end
-
-local function check_afm(specification,fullname)
- local foundname = findbinfile(fullname, 'afm') or "" -- just to be sure
- if foundname == "" then
- foundname = fonts.names.getfilename(fullname,"afm")
- end
- if foundname == "" and tfm.autoprefixedafm then
- local encoding, shortname = match(fullname,"^(.-)%-(.*)$") -- context: encoding-name.*
- if encoding and shortname and fonts.enc.known[encoding] then
- shortname = findbinfile(shortname,'afm') or "" -- just to be sure
- if shortname ~= "" then
- foundname = shortname
- if trace_loading then
- report_afm("stripping encoding prefix from filename %s",afmname)
- end
- end
- end
- end
- if foundname ~= "" then
- specification.filename, specification.format = foundname, "afm"
- return tfm.read_from_afm(specification)
- end
-end
-
-function readers.tfm(specification)
- local fullname, tfmtable = specification.filename or "", nil
- if fullname == "" then
- local forced = specification.forced or ""
- if forced ~= "" then
- tfmtable = check_tfm(specification,specification.name .. "." .. forced)
- end
- if not tfmtable then
- tfmtable = check_tfm(specification,specification.name)
- end
- else
- tfmtable = check_tfm(specification,fullname)
- end
- return tfmtable
-end
-
-function readers.afm(specification,method)
- local fullname, tfmtable = specification.filename or "", nil
- if fullname == "" then
- local forced = specification.forced or ""
- if forced ~= "" then
- tfmtable = check_afm(specification,specification.name .. "." .. forced)
- end
- if not tfmtable then
- method = method or definers.method or "afm or tfm"
- if method == "tfm" then
- tfmtable = check_tfm(specification,specification.name)
- elseif method == "afm" then
- tfmtable = check_afm(specification,specification.name)
- elseif method == "tfm or afm" then
- tfmtable = check_tfm(specification,specification.name) or check_afm(specification,specification.name)
- else -- method == "afm or tfm" or method == "" then
- tfmtable = check_afm(specification,specification.name) or check_tfm(specification,specification.name)
- end
- end
- else
- tfmtable = check_afm(specification,fullname)
- end
- return tfmtable
-end
-
--- maybe some day a set of names
-
-local function check_otf(forced,specification,suffix,what)
- local name = specification.name
- if forced then
- name = file.addsuffix(name,suffix,true)
- end
- local fullname, tfmtable = findbinfile(name,suffix) or "", nil -- one shot
- -- if false then -- can be enabled again when needed
- -- if fullname == "" then
- -- local fb = fonts.names.old_to_new[name]
- -- if fb then
- -- fullname = findbinfile(fb,suffix) or ""
- -- end
- -- end
- -- if fullname == "" then
- -- local fb = fonts.names.new_to_old[name]
- -- if fb then
- -- fullname = findbinfile(fb,suffix) or ""
- -- end
- -- end
- -- end
- if fullname == "" then
- fullname = fonts.names.getfilename(name,suffix)
- end
- if fullname ~= "" then
- specification.filename, specification.format = fullname, what -- hm, so we do set the filename, then
- tfmtable = tfm.read_from_otf(specification) -- we need to do it for all matches / todo
- end
- return tfmtable
-end
-
-function readers.opentype(specification,suffix,what)
- local forced = specification.forced or ""
- if forced == "otf" then
- return check_otf(true,specification,forced,"opentype")
- elseif forced == "ttf" or forced == "ttc" or forced == "dfont" then
- return check_otf(true,specification,forced,"truetype")
- else
- return check_otf(false,specification,suffix,what)
- end
-end
-
-function readers.otf (specification) return readers.opentype(specification,"otf","opentype") end
-function readers.ttf (specification) return readers.opentype(specification,"ttf","truetype") end
-function readers.ttc (specification) return readers.opentype(specification,"ttf","truetype") end -- !!
-function readers.dfont(specification) return readers.opentype(specification,"ttf","truetype") end -- !!
-
---[[ldx--
<p>We need to check for default features. For this we provide
a helper function.</p>
--ldx]]--
@@ -568,31 +450,29 @@ not gain much. By the way, passing id's back to in the callback was
introduced later in the development.</p>
--ldx]]--
-local lastdefined = nil -- we don't want this one to end up in s-tra-02
+local lastdefined = nil -- we don't want this one to end up in s-tra-02
+local internalized = { }
function definers.current() -- or maybe current
return lastdefined
end
-function definers.register(fontdata,id)
- if fontdata and id then
- local hash = fontdata.hash
- if not tfm.internalized[hash] then
+function definers.register(tfmdata,id) -- will be overloaded
+ if tfmdata and id then
+ local hash = tfmdata.hash
+ if not internalized[hash] then
if trace_defining then
- report_define("loading at 2 id %s, hash: %s",id or "?",hash or "?")
+ report_defining("registering font, id: %s, hash: %s",id or "?",hash or "?")
end
- fonts.identifiers[id] = fontdata
- fonts.characters [id] = fontdata.characters
- fonts.quads [id] = fontdata.parameters and fontdata.parameters.quad
- -- todo: extra functions, e.g. setdigitwidth etc in list
- tfm.internalized[hash] = id
+ fonts.identifiers[id] = tfmdata
+ internalized[hash] = id
end
end
end
-function definers.registered(hash)
- local id = tfm.internalized[hash]
- return id, id and fonts.ids[id]
+function definers.registered(hash) -- will be overloaded
+ local id = internalized[hash]
+ return id, id and fonts.identifiers[id]
end
local cache_them = false
@@ -625,49 +505,45 @@ function definers.read(specification,size,id) -- id can be optional, name can al
specification = definers.resolve(specification)
local hash = tfm.hashinstance(specification)
if cache_them then
- local fontdata = containers.read(fonts.cache,hash) -- for tracing purposes
+ local tfmdata = containers.read(fonts.cache,hash) -- for tracing purposes
end
- local fontdata = definers.registered(hash) -- id
- if not fontdata then
+ local tfmdata = definers.registered(hash) -- id
+ if not tfmdata then
if specification.features.vtf and specification.features.vtf.preset then
- fontdata = tfm.make(specification)
+ tfmdata = tfm.make(specification)
else
- fontdata = tfm.read(specification)
- if fontdata then
- tfm.checkvirtualid(fontdata)
+ tfmdata = tfm.read(specification)
+ if tfmdata then
+ tfm.checkvirtualid(tfmdata)
end
end
if cache_them then
- fontdata = containers.write(fonts.cache,hash,fontdata) -- for tracing purposes
+ tfmdata = containers.write(fonts.cache,hash,tfmdata) -- for tracing purposes
end
- if fontdata then
- fontdata.hash = hash
- fontdata.cache = "no"
+ if tfmdata then
+ tfmdata.hash = hash
+ tfmdata.cache = "no"
if id then
- definers.register(fontdata,id)
+ definers.register(tfmdata,id)
end
end
end
- lastdefined = fontdata or id -- todo ! ! ! ! !
- if not fontdata then -- or id?
- report_define( "unknown font %s, loading aborted",specification.name)
- elseif trace_defining and type(fontdata) == "table" then
- report_define("using %s font with id %s, name:%s size:%s bytes:%s encoding:%s fullname:%s filename:%s",
- fontdata.type or "unknown",
- id or "?",
- fontdata.name or "?",
- fontdata.size or "default",
- fontdata.encodingbytes or "?",
- fontdata.encodingname or "unicode",
- fontdata.fullname or "?",
- file.basename(fontdata.filename or "?"))
- end
- local cs = specification.cs
- if cs then
- fontcsnames[cs] = fontdata -- new (beware: locals can be forgotten)
+ lastdefined = tfmdata or id -- todo ! ! ! ! !
+ if not tfmdata then -- or id?
+ report_defining( "unknown font %s, loading aborted",specification.name)
+ elseif trace_defining and type(tfmdata) == "table" then
+ report_defining("using %s font with id %s, name:%s size:%s bytes:%s encoding:%s fullname:%s filename:%s",
+ tfmdata.type or "unknown",
+ id or "?",
+ tfmdata.name or "?",
+ tfmdata.size or "default",
+ tfmdata.encodingbytes or "?",
+ tfmdata.encodingname or "unicode",
+ tfmdata.fullname or "?",
+ file.basename(tfmdata.filename or "?"))
end
statistics.stoptiming(fonts)
- return fontdata
+ return tfmdata
end
function vf.find(name)
@@ -676,18 +552,18 @@ function vf.find(name)
local format = fonts.logger.format(name)
if format == 'tfm' or format == 'ofm' then
if trace_defining then
- report_define("locating vf for %s",name)
+ report_defining("locating vf for %s",name)
end
return findbinfile(name,"ovf")
else
if trace_defining then
- report_define("vf for %s is already taken care of",name)
+ report_defining("vf for %s is already taken care of",name)
end
return nil -- ""
end
else
if trace_defining then
- report_define("locating vf for %s",name)
+ report_defining("locating vf for %s",name)
end
return findbinfile(name,"ovf")
end
@@ -698,4 +574,4 @@ end
--ldx]]--
callbacks.register('define_font' , definers.read, "definition of fonts (tfmtable preparation)")
-callbacks.register('find_vf_file', vf.find , "locating virtual fonts, insofar needed") -- not that relevant any more
+callbacks.register('find_vf_file', vf.find, "locating virtual fonts, insofar needed") -- not that relevant any more
diff --git a/otfl-font-dum.lua b/otfl-font-dum.lua
index 14d155a..54b631d 100644
--- a/otfl-font-dum.lua
+++ b/otfl-font-dum.lua
@@ -11,13 +11,13 @@ fonts = fonts or { }
-- general
fonts.otf.pack = false -- only makes sense in context
-fonts.tfm.resolvevirtualtoo = false -- context specific (du eto resolver)
+fonts.tfm.resolvevirtualtoo = false -- context specific (due to resolver)
fonts.tfm.fontnamemode = "specification" -- somehow latex needs this (changed name!)
-- readers
fonts.tfm.readers = fonts.tfm.readers or { }
-fonts.tfm.readers.sequence = { 'otf', 'ttf', 'tfm' }
+fonts.tfm.readers.sequence = { 'otf', 'ttf', 'tfm', 'lua' }
fonts.tfm.readers.afm = nil
-- define
@@ -275,7 +275,7 @@ end
-- bonus
function fonts.otf.nametoslot(name)
- local tfmdata = fonts.ids[font.current()]
+ local tfmdata = fonts.identifiers[font.current()]
if tfmdata and tfmdata.shared then
local otfdata = tfmdata.shared.otfdata
local unicode = otfdata.luatex.unicodes[name]
@@ -310,3 +310,45 @@ fonts.strippables = table.tohash {
0xE0077, 0xE0078, 0xE0079, 0xE007A, 0xE007B, 0xE007C, 0xE007D, 0xE007E, 0xE007F,
}
+-- \font\test=file:somefont:reencode=mymessup
+--
+-- fonts.enc.reencodings.mymessup = {
+-- [109] = 110, -- m
+-- [110] = 109, -- n
+-- }
+
+fonts.enc = fonts.enc or {}
+local reencodings = { }
+fonts.enc.reencodings = reencodings
+
+local function specialreencode(tfmdata,value)
+ -- we forget about kerns as we assume symbols and we
+ -- could issue a message if ther are kerns but it's
+ -- a hack anyway so we odn't care too much here
+ local encoding = value and reencodings[value]
+ if encoding then
+ local temp = { }
+ local char = tfmdata.characters
+ for k, v in next, encoding do
+ temp[k] = char[v]
+ end
+ for k, v in next, temp do
+ char[k] = temp[k]
+ end
+ -- if we use the font otherwise luatex gets confused so
+ -- we return an additional hash component for fullname
+ return string.format("reencoded:%s",value)
+ end
+end
+
+local function reencode(tfmdata,value)
+ tfmdata.postprocessors = tfmdata.postprocessors or { }
+ table.insert(tfmdata.postprocessors,
+ function(tfmdata)
+ return specialreencode(tfmdata,value)
+ end
+ )
+end
+
+table.insert(fonts.manipulators,"reencode")
+fonts.initializers.base.otf.reencode = reencode
diff --git a/otfl-font-ini.lua b/otfl-font-ini.lua
index 6082c1d..df534c6 100644
--- a/otfl-font-ini.lua
+++ b/otfl-font-ini.lua
@@ -6,6 +6,9 @@ if not modules then modules = { } end modules ['font-ini'] = {
license = "see context related readme files"
}
+-- The font code will be upgraded and reorganized so that we have a
+-- leaner generic code base and can do more tuning for context.
+
--[[ldx--
<p>Not much is happening here.</p>
--ldx]]--
@@ -16,7 +19,7 @@ local write_nl = texio.write_nl
local lower = string.lower
local allocate, mark = utilities.storage.allocate, utilities.storage.mark
-local report_define = logs.new("define fonts")
+local report_defining = logs.reporter("fonts","defining")
fontloader.totable = fontloader.to_table
@@ -25,14 +28,18 @@ fontloader.totable = fontloader.to_table
fonts = fonts or { }
--- we will also have des and fam hashes
+-- beware, some already defined
--- beware, soem alreadyu defined
+fonts.identifiers = mark(fonts.identifiers or { }) -- fontdata
+-----.characters = mark(fonts.characters or { }) -- chardata
+-----.csnames = mark(fonts.csnames or { }) -- namedata
+-----.quads = mark(fonts.quads or { }) -- quaddata
-fonts.ids = mark(fonts.ids or { }) fonts.identifiers = fonts.ids -- aka fontdata
-fonts.chr = mark(fonts.chr or { }) fonts.characters = fonts.chr -- aka chardata
-fonts.qua = mark(fonts.qua or { }) fonts.quads = fonts.qua -- aka quaddata
-fonts.css = mark(fonts.css or { }) fonts.csnames = fonts.css -- aka namedata
+--~ fonts.identifiers[0] = { -- nullfont
+--~ characters = { },
+--~ descriptions = { },
+--~ name = "nullfont",
+--~ }
fonts.tfm = fonts.tfm or { }
fonts.vf = fonts.vf or { }
@@ -41,15 +48,7 @@ fonts.pfb = fonts.pfb or { }
fonts.otf = fonts.otf or { }
fonts.privateoffset = 0xF0000 -- 0x10FFFF
-fonts.verbose = false -- more verbose cache tables
-
-fonts.ids[0] = { -- nullfont
- characters = { },
- descriptions = { },
- name = "nullfont",
-}
-
-fonts.chr[0] = { }
+fonts.verbose = false -- more verbose cache tables (will move to context namespace)
fonts.methods = fonts.methods or {
base = { tfm = { }, afm = { }, otf = { }, vtf = { }, fix = { } },
@@ -109,7 +108,11 @@ function fonts.fontformat(filename,default)
if format then
return format
else
- report_define("unable to determine font format for '%s'",filename)
+ report_defining("unable to determine font format for '%s'",filename)
return default
end
end
+
+-- readers
+
+fonts.tfm.readers = fonts.tfm.readers or { }
diff --git a/otfl-font-lua.lua b/otfl-font-lua.lua
new file mode 100644
index 0000000..a6fcc16
--- /dev/null
+++ b/otfl-font-lua.lua
@@ -0,0 +1,45 @@
+if not modules then modules = { } end modules ['font-lua'] = {
+ version = 1.001,
+ comment = "companion to font-ini.mkiv",
+ author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
+ copyright = "PRAGMA ADE / ConTeXt Development Team",
+ license = "see context related readme files"
+}
+
+local trace_defining = false trackers.register("fonts.defining", function(v) trace_defining = v end)
+
+local report_lua = logs.reporter("fonts","lua loading")
+
+fonts.formats.lua = "lua"
+
+local readers = fonts.tfm.readers
+
+local function check_lua(specification,fullname)
+ -- standard tex file lookup
+ local fullname = resolvers.findfile(fullname) or ""
+ if fullname ~= "" then
+ local loader = loadfile(fullname)
+ loader = loader and loader()
+ return loader and loader(specification)
+ end
+end
+
+function readers.lua(specification)
+ local original = specification.specification
+ if trace_defining then
+ report_lua("using lua reader for '%s'",original)
+ end
+ local fullname, tfmtable = specification.filename or "", nil
+ if fullname == "" then
+ local forced = specification.forced or ""
+ if forced ~= "" then
+ tfmtable = check_lua(specification,specification.name .. "." .. forced)
+ end
+ if not tfmtable then
+ tfmtable = check_lua(specification,specification.name)
+ end
+ else
+ tfmtable = check_lua(specification,fullname)
+ end
+ return tfmtable
+end
diff --git a/otfl-font-map.lua b/otfl-font-map.lua
index b206632..26b22b6 100644
--- a/otfl-font-map.lua
+++ b/otfl-font-map.lua
@@ -14,7 +14,7 @@ local utfbyte = utf.byte
local trace_loading = false trackers.register("otf.loading", function(v) trace_loading = v end)
local trace_unimapping = false trackers.register("otf.unimapping", function(v) trace_unimapping = v end)
-local report_otf = logs.new("load otf")
+local report_otf = logs.reporter("fonts","otf loading")
--[[ldx--
<p>Eventually this code will disappear because map files are kind
@@ -163,11 +163,11 @@ fonts.map.addtounicode = function(data,filename)
cidcodes = usedmap.unicodes
end
uparser = makenameparser()
- local aglmap = fonts.enc and fonts.enc.agl -- to name
+ local unicodevector = fonts.enc.agl.unicodes -- loaded runtime in context
for index, glyph in next, data.glyphs do
local name, unic = glyph.name, glyph.unicode or -1 -- play safe
if unic == -1 or unic >= private or (unic >= 0xE000 and unic <= 0xF8FF) or unic == 0xFFFE or unic == 0xFFFF then
- local unicode = (lumunic and lumunic[name]) or (aglmap and aglmap[name])
+ local unicode = (lumunic and lumunic[name]) or unicodevector[name]
if unicode then
originals[index], tounicode[index], ns = unicode, tounicode16(unicode), ns + 1
end
@@ -211,7 +211,7 @@ fonts.map.addtounicode = function(data,filename)
-- skip
elseif nplit == 1 then
local base = split[1]
- unicode = unicodes[base] or (aglmap and aglmap[base])
+ unicode = unicodes[base] or unicodevector[base]
if unicode then
if type(unicode) == "table" then
unicode = unicode[1]
@@ -222,7 +222,7 @@ fonts.map.addtounicode = function(data,filename)
local t, n = { }, 0
for l=1,nplit do
local base = split[l]
- local u = unicodes[base] or (aglmap and aglmap[base])
+ local u = unicodes[base] or unicodevector[base]
if not u then
break
elseif type(u) == "table" then
diff --git a/otfl-font-ota.lua b/otfl-font-ota.lua
index 18b0bf2..f972d28 100644
--- a/otfl-font-ota.lua
+++ b/otfl-font-ota.lua
@@ -40,7 +40,7 @@ local has_attribute = node.has_attribute
local traverse_id = node.traverse_id
local traverse_node_list = node.traverse
-local fontdata = fonts.ids
+local fontdata = fonts.identifiers
local state = attributes.private('state')
local categories = characters and characters.categories or { } -- sorry, only in context
diff --git a/otfl-font-otb.lua b/otfl-font-otb.lua
index 241845f..8ee39b8 100644
--- a/otfl-font-otb.lua
+++ b/otfl-font-otb.lua
@@ -23,7 +23,7 @@ local trace_ligatures = false trackers.register("otf.ligatures", function
local trace_kerns = false trackers.register("otf.kerns", function(v) trace_kerns = v end)
local trace_preparing = false trackers.register("otf.preparing", function(v) trace_preparing = v end)
-local report_prepare = logs.new("otf prepare")
+local report_prepare = logs.reporter("fonts","otf prepare")
local wildcard = "*"
local default = "dflt"
diff --git a/otfl-font-otc.lua b/otfl-font-otc.lua
index cc7f0ab..93b942f 100644
--- a/otfl-font-otc.lua
+++ b/otfl-font-otc.lua
@@ -16,7 +16,7 @@ local trace_loading = false trackers.register("otf.loading", function(v) trace_
local fonts = fonts
local otf = fonts.otf
-local report_otf = logs.new("load otf")
+local report_otf = logs.reporter("fonts","otf loading")
-- instead of "script = "DFLT", langs = { 'dflt' }" we now use wildcards (we used to
-- have always); some day we can write a "force always when true" trick for other
@@ -35,22 +35,18 @@ local extra_lists = {
{
endash = "hyphen hyphen",
emdash = "hyphen hyphen hyphen",
- quotedblleft = "quoteleft quoteleft",
- quotedblright = "quoteright quoteright",
- quotedblleft = "grave grave",
- quotedblright = "quotesingle quotesingle",
- quotedblbase = "comma comma",
- exclamdown = "exclam grave",
- questiondown = "question grave",
- guillemotleft = "less less",
- guillemotright= "greater greater",
+ -- quotedblleft = "quoteleft quoteleft",
+ -- quotedblright = "quoteright quoteright",
+ -- quotedblleft = "grave grave",
+ -- quotedblright = "quotesingle quotesingle",
+ -- quotedblbase = "comma comma",
},
},
trep = {
{
- [0x0022] = 0x201D,
+ -- [0x0022] = 0x201D,
[0x0027] = 0x2019,
- [0x0060] = 0x2018,
+ -- [0x0060] = 0x2018,
},
},
anum = {
@@ -102,14 +98,14 @@ local extra_features = { -- maybe just 1..n so that we prescribe order
},
anum = {
{
- features = { arab = { FAR = true, dflt = true } },
+ features = { arab = { URD = true, dflt = true } },
name = "ctx_anum_1",
subtables = { "ctx_anum_1_s" },
type = "gsub_single",
flags = { },
},
{
- features = { arab = { FAR = true } },
+ features = { arab = { URD = true } },
name = "ctx_anum_2",
subtables = { "ctx_anum_2_s" },
type = "gsub_single",
diff --git a/otfl-font-otd.lua b/otfl-font-otd.lua
index 910725a..4754816 100644
--- a/otfl-font-otd.lua
+++ b/otfl-font-otd.lua
@@ -8,11 +8,11 @@ if not modules then modules = { } end modules ['font-otd'] = {
local trace_dynamics = false trackers.register("otf.dynamics", function(v) trace_dynamics = v end)
-local report_otf = logs.new("load otf")
+local report_otf = logs.reporter("fonts","otf loading")
local fonts = fonts
local otf = fonts.otf
-local fontdata = fonts.ids
+local fontdata = fonts.identifiers
otf.features = otf.features or { }
otf.features.default = otf.features.default or { }
diff --git a/otfl-font-otf.lua b/otfl-font-otf.lua
index 7656f13..c974d89 100644
--- a/otfl-font-otf.lua
+++ b/otfl-font-otf.lua
@@ -32,44 +32,53 @@ local trace_sequences = false trackers.register("otf.sequences", function(v)
local trace_math = false trackers.register("otf.math", function(v) trace_math = v end)
local trace_defining = false trackers.register("fonts.defining", function(v) trace_defining = v end)
-local report_otf = logs.new("load otf")
+local report_otf = logs.reporter("fonts","otf loading")
local starttiming, stoptiming, elapsedtime = statistics.starttiming, statistics.stoptiming, statistics.elapsedtime
-local fonts = fonts
+local findbinfile = resolvers.findbinfile
-fonts.otf = fonts.otf or { }
-local otf = fonts.otf
-local tfm = fonts.tfm
+local fonts = fonts
-local fontdata = fonts.ids
-local chardata = characters and characters.data -- not used
+fonts.otf = fonts.otf or { }
+local otf = fonts.otf
+local tfm = fonts.tfm
-otf.features = otf.features or { }
-otf.features.list = otf.features.list or { }
-otf.features.default = otf.features.default or { }
+local fontdata = fonts.identifiers
+local chardata = characters and characters.data -- not used
-otf.enhancers = allocate()
-local enhancers = otf.enhancers
-enhancers.patches = { }
+-- todo: probably first time so local first
-local definers = fonts.definers
+otf.features = otf.features or { }
+local features = otf.features
+features.list = features.list or { }
+local featurelist = features.list
+features.default = features.default or { }
+local defaultfeatures = features.default
-otf.glists = { "gsub", "gpos" }
+otf.enhancers = allocate()
+local enhancers = otf.enhancers
+enhancers.patches = { }
+local patches = enhancers.patches
-otf.version = 2.706 -- beware: also sync font-mis.lua
-otf.cache = containers.define("fonts", "otf", otf.version, true)
+local definers = fonts.definers
+local readers = fonts.tfm.readers
-local loadmethod = "table" -- table, mixed, sparse
-local forceload = false
-local cleanup = 0
-local usemetatables = false -- .4 slower on mk but 30 M less mem so we might change the default -- will be directive
-local packdata = true
-local syncspace = true
-local forcenotdef = false
+otf.glists = { "gsub", "gpos" }
-local wildcard = "*"
-local default = "dflt"
+otf.version = 2.710 -- beware: also sync font-mis.lua
+otf.cache = containers.define("fonts", "otf", otf.version, true)
+
+local loadmethod = "table" -- table, mixed, sparse
+local forceload = false
+local cleanup = 0
+local usemetatables = false -- .4 slower on mk but 30 M less mem so we might change the default -- will be directive
+local packdata = true
+local syncspace = true
+local forcenotdef = false
+
+local wildcard = "*"
+local default = "dflt"
local fontloaderfields = fontloader.fields
local mainfields = nil
@@ -264,11 +273,11 @@ local ordered_enhancers = {
local actions = { }
-enhancers.patches.before = allocate()
-enhancers.patches.after = allocate()
+patches.before = allocate()
+patches.after = allocate()
-local before = enhancers.patches.before
-local after = enhancers.patches.after
+local before = patches.before
+local after = patches.after
local function enhance(name,data,filename,raw,verbose)
local enhancer = actions[name]
@@ -312,9 +321,9 @@ function enhancers.apply(data,filename,raw,verbose)
ioflush() -- we want instant messages
end
--- enhancers.patches.register("before","migrate metadata","cambria",function() end)
+-- patches.register("before","migrate metadata","cambria",function() end)
-function enhancers.patches.register(what,where,pattern,action)
+function patches.register(what,where,pattern,action)
local ww = what[where]
if ww then
ww[pattern] = action
@@ -323,6 +332,12 @@ function enhancers.patches.register(what,where,pattern,action)
end
end
+function patches.report(fmt,...)
+ if trace_loading then
+ report_otf("patching: " ..fmt,...)
+ end
+end
+
function enhancers.register(what,action) -- only already registered can be overloaded
actions[what] = action
end
@@ -332,9 +347,7 @@ function otf.load(filename,format,sub,featurefile)
local attr = lfs.attributes(filename)
local size, time = attr and attr.size or 0, attr and attr.modification or 0
if featurefile then
- local fattr = lfs.attributes(featurefile)
- local fsize, ftime = fattr and fattr.size or 0, fattr and fattr.modification or 0
- name = name .. "@" .. file.removesuffix(file.basename(featurefile)) .. ftime .. fsize
+ name = name .. "@" .. file.removesuffix(file.basename(featurefile))
end
if sub == "" then sub = false end
local hash = name
@@ -435,6 +448,7 @@ function otf.load(filename,format,sub,featurefile)
end
data.size = size
data.time = time
+ data.format = format
if featurefiles then
data.featuredata = featurefiles
end
@@ -545,7 +559,7 @@ end
actions["prepare tables"] = function(data,filename,raw)
local luatex = {
- filename = filename,
+ filename = resolvers.unresolve(filename), -- no shortcut
version = otf.version,
creator = "context mkiv",
}
@@ -966,23 +980,27 @@ actions["reorganize subtables"] = function(data,filename,raw)
end
end
+-- the next one is still messy but will get better when we have
+-- flattened map/enc tables in the font loader
+
actions["prepare unicodes"] = function(data,filename,raw)
local luatex = data.luatex
- local indices, unicodes, multiples, internals = { }, { }, { }, { }
- local mapmap = data.map or raw.map
- local mapenc = nil -- will go away
- if not mapmap then
- report_otf("no map in %s",filename)
+ local indices, unicodes, multiples, internals= { }, { }, { }, { }
+ local mapdata = data.map or raw.map -- map already moved
+ local mapmap
+ if not mapdata then
+ report_otf("no mapdata in '%s'",filename)
mapmap = { }
- data.map = { map = mapmap }
- elseif not mapmap.map then
- report_otf("no unicode map in %s",filename)
+ mapdata = { map = mapmap }
+ data.map = mapdata
+ elseif not mapdata.map then
+ report_otf("no map in mapdata of '%s'",filename)
mapmap = { }
- data.map.map = mapmap
+ mapdata.map = mapmap
else
- mapenc = mapmap.enc -- will go away
- mapmap = mapmap.map
+ mapmap = mapdata.map
end
+ local encname = lower(data.enc_name or raw.enc_name or mapdata.enc_name or "")
local criterium = fonts.privateoffset
local private = criterium
local glyphs = data.glyphs
@@ -1028,11 +1046,9 @@ actions["prepare unicodes"] = function(data,filename,raw)
end
end
-- beware: the indices table is used to initialize the tfm table
- local encname = lower(data.enc_name or (mapenc and mapenc[1] and mapenc[1].enc_name) or "") -- mapenc will go away
- -- will become: local encname = lower(data.enc_name or "")
- if encname == "" or encname == "unicodebmp" or encname == "unicodefull" then -- maybe find(encname,"unicode")
+ if find(encname,"unicode") then -- unicodebmp, unicodefull, ...
if trace_loading then
- report_otf("using extra unicode map")
+ report_otf("using embedded unicode map '%s'",encname)
end
-- ok -- we can also consider using the altuni
for unicode, index in next, mapmap do
@@ -1394,7 +1410,7 @@ actions["check metadata"] = function(data,filename,raw)
data.map = nil
end
-local private_math_parameters = {
+local private_mathparameters = {
"FractionDelimiterSize",
"FractionDelimiterDisplayStyleSize",
}
@@ -1402,8 +1418,8 @@ local private_math_parameters = {
actions["check math parameters"] = function(data,filename,raw)
local mathdata = data.metadata.math
if mathdata then
- for m=1,#private_math_parameters do
- local pmp = private_math_parameters[m]
+ for m=1,#private_mathparameters do
+ local pmp = private_mathparameters[m]
if not mathdata[pmp] then
if trace_loading then
report_otf("setting math parameter '%s' to 0", pmp)
@@ -1523,9 +1539,12 @@ end
-- -- -- -- -- --
-- -- -- -- -- --
-function otf.features.register(name,default)
- otf.features.list[#otf.features.list+1] = name
- otf.features.default[name] = default
+function features.register(name,default,description)
+ featurelist[#featurelist+1] = name
+ defaultfeatures[name] = default
+ if description and description ~= "" then
+ fonts.otf.tables.features[name] = description
+ end
end
-- for context this will become a task handler
@@ -1604,11 +1623,6 @@ end
-- we cannot share descriptions as virtual fonts might extend them (ok, we could
-- use a cache with a hash
-fonts.formats.dfont = "truetype"
-fonts.formats.ttc = "truetype"
-fonts.formats.ttf = "truetype"
-fonts.formats.otf = "opentype"
-
local function copytotfm(data,cache_id) -- we can save a copy when we reorder the tma to unicode (nasty due to one->many)
if data then
local glyphs, pfminfo, metadata = data.glyphs or { }, data.pfminfo or { }, data.metadata or { }
@@ -1616,13 +1630,15 @@ local function copytotfm(data,cache_id) -- we can save a copy when we reorder th
local unicodes = luatex.unicodes -- names to unicodes
local indices = luatex.indices
local mode = data.mode or "base"
- local characters, parameters, math_parameters, descriptions = { }, { }, { }, { }
+ local characters, parameters, mathparameters, descriptions = { }, { }, { }, { }
local designsize = metadata.designsize or metadata.design_size or 100
if designsize == 0 then
designsize = 100
end
local spaceunits, spacer = 500, "space"
-- indices maps from unicodes to indices
+ -- this wil stay as we can manipulate indices
+ -- beforehand
for u, i in next, indices do
characters[u] = { } -- we need this because for instance we add protruding info and loop over characters
descriptions[u] = glyphs[i]
@@ -1631,7 +1647,7 @@ local function copytotfm(data,cache_id) -- we can save a copy when we reorder th
if metadata.math then
-- parameters
for name, value in next, metadata.math do
- math_parameters[name] = value
+ mathparameters[name] = value
end
-- we could use a subset
for u, char in next, characters do
@@ -1678,10 +1694,10 @@ local function copytotfm(data,cache_id) -- we can save a copy when we reorder th
end
end
-- end math
- local endash, emdash, space = 0x20, 0x2014, "space" -- unicodes['space'], unicodes['emdash']
+ local space, emdash = 0x20, 0x2014 -- unicodes['space'], unicodes['emdash']
if metadata.isfixedpitch then
- if descriptions[endash] then
- spaceunits, spacer = descriptions[endash].width, "space"
+ if descriptions[space] then
+ spaceunits, spacer = descriptions[space].width, "space"
end
if not spaceunits and descriptions[emdash] then
spaceunits, spacer = descriptions[emdash].width, "emdash"
@@ -1690,8 +1706,8 @@ local function copytotfm(data,cache_id) -- we can save a copy when we reorder th
spaceunits, spacer = metadata.charwidth, "charwidth"
end
else
- if descriptions[endash] then
- spaceunits, spacer = descriptions[endash].width, "space"
+ if descriptions[space] then
+ spaceunits, spacer = descriptions[space].width, "space"
end
if not spaceunits and descriptions[emdash] then
spaceunits, spacer = descriptions[emdash].width/2, "emdash/2"
@@ -1700,7 +1716,7 @@ local function copytotfm(data,cache_id) -- we can save a copy when we reorder th
spaceunits, spacer = metadata.charwidth, "charwidth"
end
end
- spaceunits = tonumber(spaceunits) or tfm.units/2 -- 500 -- brrr
+ spaceunits = tonumber(spaceunits) or 500 -- brrr
-- we need a runtime lookup because of running from cdrom or zip, brrr (shouldn't we use the basename then?)
local filename = fonts.tfm.checkedfilename(luatex)
local fontname = metadata.fontname
@@ -1743,10 +1759,14 @@ local function copytotfm(data,cache_id) -- we can save a copy when we reorder th
end
end
--
+ local fileformat = data.format or fonts.fontformat(filename,"opentype")
+ if units > 1000 then
+ fileformat = "truetype"
+ end
return {
characters = characters,
parameters = parameters,
- math_parameters = math_parameters,
+ mathparameters = mathparameters,
descriptions = descriptions,
indices = indices,
unicodes = unicodes,
@@ -1755,7 +1775,6 @@ local function copytotfm(data,cache_id) -- we can save a copy when we reorder th
boundarychar_label = 0,
boundarychar = 65536,
designsize = (designsize/10)*65536,
- spacer = "500 units",
encodingbytes = 2,
mode = mode,
filename = filename,
@@ -1764,7 +1783,7 @@ local function copytotfm(data,cache_id) -- we can save a copy when we reorder th
psname = fontname or fullname,
name = filename or fullname,
units = units,
- format = fonts.fontformat(filename,"opentype"),
+ format = fileformat,
cidinfo = cidinfo,
ascender = abs(metadata.ascent or 0),
descender = abs(metadata.descent or 0),
@@ -1814,7 +1833,8 @@ local function otftotfm(specification)
tfmdata.has_italic = otfdata.metadata.has_italic
if not tfmdata.language then tfmdata.language = 'dflt' end
if not tfmdata.script then tfmdata.script = 'dflt' end
- shared.processes, shared.features = otf.setfeatures(tfmdata,definers.check(features,otf.features.default))
+ -- at this moment no characters are assinged yet, only empty slots
+ shared.processes, shared.features = otf.setfeatures(tfmdata,definers.check(features,defaultfeatures))
end
end
containers.write(tfm.cache,cache_id,tfmdata)
@@ -1822,9 +1842,9 @@ local function otftotfm(specification)
return tfmdata
end
-otf.features.register('mathsize')
+features.register('mathsize')
-function tfm.read_from_otf(specification) -- wrong namespace
+local function read_from_otf(specification) -- wrong namespace
local tfmtable = otftotfm(specification)
if tfmtable then
local otfdata = tfmtable.shared.otfdata
@@ -1910,3 +1930,56 @@ function otf.collectlookups(otfdata,kind,script,language)
end
return nil, nil
end
+
+-- readers
+
+fonts.formats.dfont = "truetype"
+fonts.formats.ttc = "truetype"
+fonts.formats.ttf = "truetype"
+fonts.formats.otf = "opentype"
+
+local function check_otf(forced,specification,suffix,what)
+ local name = specification.name
+ if forced then
+ name = file.addsuffix(name,suffix,true)
+ end
+ local fullname, tfmtable = findbinfile(name,suffix) or "", nil -- one shot
+ -- if false then -- can be enabled again when needed
+ -- if fullname == "" then
+ -- local fb = fonts.names.old_to_new[name]
+ -- if fb then
+ -- fullname = findbinfile(fb,suffix) or ""
+ -- end
+ -- end
+ -- if fullname == "" then
+ -- local fb = fonts.names.new_to_old[name]
+ -- if fb then
+ -- fullname = findbinfile(fb,suffix) or ""
+ -- end
+ -- end
+ -- end
+ if fullname == "" then
+ fullname = fonts.names.getfilename(name,suffix)
+ end
+ if fullname ~= "" then
+ specification.filename, specification.format = fullname, what -- hm, so we do set the filename, then
+ tfmtable = read_from_otf(specification) -- we need to do it for all matches / todo
+ end
+ return tfmtable
+end
+
+function readers.opentype(specification,suffix,what)
+ local forced = specification.forced or ""
+ if forced == "otf" then
+ return check_otf(true,specification,forced,"opentype")
+ elseif forced == "ttf" or forced == "ttc" or forced == "dfont" then
+ return check_otf(true,specification,forced,"truetype")
+ else
+ return check_otf(false,specification,suffix,what)
+ end
+end
+
+function readers.otf (specification) return readers.opentype(specification,"otf","opentype") end
+function readers.ttf (specification) return readers.opentype(specification,"ttf","truetype") end
+function readers.ttc (specification) return readers.opentype(specification,"ttf","truetype") end -- !!
+function readers.dfont(specification) return readers.opentype(specification,"ttf","truetype") end -- !!
diff --git a/otfl-font-otn.lua b/otfl-font-otn.lua
index ec246d2..6c5ba12 100644
--- a/otfl-font-otn.lua
+++ b/otfl-font-otn.lua
@@ -148,11 +148,11 @@ local trace_steps = false trackers.register("otf.steps", function
local trace_skips = false trackers.register("otf.skips", function(v) trace_skips = v end)
local trace_directions = false trackers.register("otf.directions", function(v) trace_directions = v end)
-local report_direct = logs.new("otf direct")
-local report_subchain = logs.new("otf subchain")
-local report_chain = logs.new("otf chain")
-local report_process = logs.new("otf process")
-local report_prepare = logs.new("otf prepare")
+local report_direct = logs.reporter("fonts","otf direct")
+local report_subchain = logs.reporter("fonts","otf subchain")
+local report_chain = logs.reporter("fonts","otf chain")
+local report_process = logs.reporter("fonts","otf process")
+local report_prepare = logs.reporter("fonts","otf prepare")
trackers.register("otf.verbose_chain", function(v) otf.setcontextchain(v and "verbose") end)
trackers.register("otf.normal_chain", function(v) otf.setcontextchain(v and "normal") end)
@@ -211,7 +211,7 @@ local markonce = true
local cursonce = true
local kernonce = true
-local fontdata = fonts.ids
+local fontdata = fonts.identifiers
otf.features.process = { }
@@ -239,7 +239,7 @@ local contextsetups = specifiers.contextsetups
local contextnumbers = specifiers.contextnumbers
local contextmerged = specifiers.contextmerged
--- we cannot optimize with "start = first_character(head)" because then we don't
+-- we cannot optimize with "start = first_glyph(head)" because then we don't
-- know which rlmode we're in which messes up cursive handling later on
--
-- head is always a whatsit so we can safely assume that head is not changed
diff --git a/otfl-font-tfm.lua b/otfl-font-tfm.lua
index e8b2427..5e841b2 100644
--- a/otfl-font-tfm.lua
+++ b/otfl-font-tfm.lua
@@ -16,7 +16,7 @@ local allocate = utilities.storage.allocate
local trace_defining = false trackers.register("fonts.defining", function(v) trace_defining = v end)
local trace_scaling = false trackers.register("fonts.scaling" , function(v) trace_scaling = v end)
-local report_define = logs.new("define fonts")
+local report_defining = logs.reporter("fonts","defining")
-- tfmdata has also fast access to indices and unicodes
-- to be checked: otf -> tfm -> tfmscaled
@@ -37,8 +37,10 @@ fonts.initializers = fonts.initializers or { }
fonts.initializers.common = fonts.initializers.common or { }
local set_attribute = node.set_attribute
+local findbinfile = resolvers.findbinfile
-local fontdata = fonts.ids
+local readers = fonts.tfm.readers
+local fontdata = fonts.identifiers
local nodecodes = nodes.nodecodes
local disc_code = nodecodes.disc
@@ -56,20 +58,18 @@ tfm.fontnamemode = "fullpath"
tfm.enhance = tfm.enhance or function() end
-fonts.formats.tfm = "type1" -- we need to have at least a value here
-
-function tfm.read_from_tfm(specification)
+local function read_from_tfm(specification)
local fname, tfmdata = specification.filename or "", nil
if fname ~= "" then
if trace_defining then
- report_define("loading tfm file %s at size %s",fname,specification.size)
+ report_defining("loading tfm file %s at size %s",fname,specification.size)
end
tfmdata = font.read_tfm(fname,specification.size) -- not cached, fast enough
if tfmdata then
tfmdata.descriptions = tfmdata.descriptions or { }
if tfm.resolvevirtualtoo then
fonts.logger.save(tfmdata,file.extname(fname),specification) -- strange, why here
- fname = resolvers.findbinfile(specification.name, 'ovf')
+ fname = findbinfile(specification.name, 'ovf')
if fname and fname ~= "" then
local vfdata = font.read_vf(fname,specification.size) -- not cached, fast enough
if vfdata then
@@ -85,7 +85,7 @@ function tfm.read_from_tfm(specification)
tfm.enhance(tfmdata,specification)
end
elseif trace_defining then
- report_define("loading tfm with name %s fails",specification.name)
+ report_defining("loading tfm with name %s fails",specification.name)
end
return tfmdata
end
@@ -279,7 +279,9 @@ function tfm.scale(tfmtable, scaledpoints, relativeid)
-- tfm.prepare_base_kerns(tfmtable) -- optimalization
local t = { } -- the new table
local scaledpoints, delta, units = tfm.calculatescale(tfmtable, scaledpoints, relativeid)
+ -- is just a trigger for the backend
t.units_per_em = units or 1000
+ --
local hdelta, vdelta = delta, delta
-- unicoded unique descriptions shared cidinfo characters changed parameters indices
for k,v in next, tfmtable do
@@ -304,7 +306,7 @@ function tfm.scale(tfmtable, scaledpoints, relativeid)
end
-- status
local isvirtual = tfmtable.type == "virtual" or tfmtable.virtualized
- local hasmath = (tfmtable.math_parameters ~= nil and next(tfmtable.math_parameters) ~= nil) or (tfmtable.MathConstants ~= nil and next(tfmtable.MathConstants) ~= nil)
+ local hasmath = (tfmtable.mathparameters ~= nil and next(tfmtable.mathparameters) ~= nil) or (tfmtable.MathConstants ~= nil and next(tfmtable.MathConstants) ~= nil)
local nodemode = tfmtable.mode == "node"
local hasquality = tfmtable.auto_expand or tfmtable.auto_protrude
local hasitalic = tfmtable.has_italic
@@ -322,15 +324,18 @@ function tfm.scale(tfmtable, scaledpoints, relativeid)
t.unicodes = tfmtable.unicodes
t.indices = tfmtable.indices
t.marks = tfmtable.marks
+ -- this will move to some subtable so that it is copied at once
t.goodies = tfmtable.goodies
t.colorscheme = tfmtable.colorscheme
+ t.postprocessors = tfmtable.postprocessors
+ --
-- t.embedding = tfmtable.embedding
t.descriptions = descriptions
if tfmtable.fonts then
t.fonts = table.fastcopy(tfmtable.fonts) -- hm also at the end
end
local tp = t.parameters
- local mp = t.math_parameters
+ local mp = t.mathparameters
local tfmp = tfmtable.parameters -- let's check for indexes
--
tp.slant = (tfmp.slant or tfmp[1] or 0)
@@ -421,7 +426,7 @@ function tfm.scale(tfmtable, scaledpoints, relativeid)
end
end
-- if trace_scaling then
- -- report_define("t=%s, u=%s, i=%s, n=%s c=%s",k,chr.tounicode or k,description.index,description.name or '-',description.class or '-')
+ -- report_defining("t=%s, u=%s, i=%s, n=%s c=%s",k,chr.tounicode or "",index or 0,description.name or '-',description.class or '-')
-- end
if tounicode then
local tu = tounicode[index] -- nb: index!
@@ -458,7 +463,7 @@ function tfm.scale(tfmtable, scaledpoints, relativeid)
if vn then
chr.next = vn
--~ if v.vert_variants or v.horiz_variants then
- --~ report_define("glyph 0x%05X has combination of next, vert_variants and horiz_variants",index)
+ --~ report_defining("glyph 0x%05X has combination of next, vert_variants and horiz_variants",index)
--~ end
else
local vv = v.vert_variants
@@ -592,6 +597,7 @@ function tfm.scale(tfmtable, scaledpoints, relativeid)
else
chr.commands = vc
end
+ chr.index = nil
end
end
tc[k] = chr
@@ -629,11 +635,11 @@ function tfm.scale(tfmtable, scaledpoints, relativeid)
-- can have multiple subfonts
if hasmath then
if trace_defining then
- report_define("math enabled for: name '%s', fullname: '%s', filename: '%s'",t.name or "noname",t.fullname or "nofullname",t.filename or "nofilename")
+ report_defining("math enabled for: name '%s', fullname: '%s', filename: '%s'",t.name or "noname",t.fullname or "nofullname",t.filename or "nofilename")
end
else
if trace_defining then
- report_define("math disabled for: name '%s', fullname: '%s', filename: '%s'",t.name or "noname",t.fullname or "nofullname",t.filename or "nofilename")
+ report_defining("math disabled for: name '%s', fullname: '%s', filename: '%s'",t.name or "noname",t.fullname or "nofullname",t.filename or "nofilename")
end
t.nomath, t.MathConstants = true, nil
end
@@ -642,8 +648,8 @@ function tfm.scale(tfmtable, scaledpoints, relativeid)
t.psname = t.fontname or (t.fullname and fonts.names.cleanname(t.fullname))
end
if trace_defining then
- report_define("used for accessing (sub)font: '%s'",t.psname or "nopsname")
- report_define("used for subsetting: '%s'",t.fontname or "nofontname")
+ report_defining("used for accessing (sub)font: '%s'",t.psname or "nopsname")
+ report_defining("used for subsetting: '%s'",t.fontname or "nofontname")
end
-- this will move up (side effect of merging split call)
t.factor = delta
@@ -743,20 +749,21 @@ function tfm.checkedfilename(metadata,whatever)
if not foundfilename then
local askedfilename = metadata.filename or ""
if askedfilename ~= "" then
- foundfilename = resolvers.findbinfile(askedfilename,"") or ""
+ askedfilename = resolvers.resolve(askedfilename) -- no shortcut
+ foundfilename = findbinfile(askedfilename,"") or ""
if foundfilename == "" then
- report_define("source file '%s' is not found",askedfilename)
- foundfilename = resolvers.findbinfile(file.basename(askedfilename),"") or ""
+ report_defining("source file '%s' is not found",askedfilename)
+ foundfilename = findbinfile(file.basename(askedfilename),"") or ""
if foundfilename ~= "" then
- report_define("using source file '%s' (cache mismatch)",foundfilename)
+ report_defining("using source file '%s' (cache mismatch)",foundfilename)
end
end
elseif whatever then
- report_define("no source file for '%s'",whatever)
+ report_defining("no source file for '%s'",whatever)
foundfilename = ""
end
metadata.foundfilename = foundfilename
- -- report_define("using source file '%s'",foundfilename)
+ -- report_defining("using source file '%s'",foundfilename)
end
return foundfilename
end
@@ -766,3 +773,41 @@ end
statistics.register("fonts load time", function()
return statistics.elapsedseconds(fonts)
end)
+
+-- readers
+
+fonts.formats.tfm = "type1" -- we need to have at least a value here
+
+local function check_tfm(specification,fullname)
+ -- ofm directive blocks local path search unless set; btw, in context we
+ -- don't support ofm files anyway as this format is obsolete
+ local foundname = findbinfile(fullname, 'tfm') or "" -- just to be sure
+ if foundname == "" then
+ foundname = findbinfile(fullname, 'ofm') or "" -- bonus for usage outside context
+ end
+ if foundname == "" then
+ foundname = fonts.names.getfilename(fullname,"tfm")
+ end
+ if foundname ~= "" then
+ specification.filename, specification.format = foundname, "ofm"
+ return read_from_tfm(specification)
+ end
+end
+
+readers.check_tfm = check_tfm
+
+function readers.tfm(specification)
+ local fullname, tfmtable = specification.filename or "", nil
+ if fullname == "" then
+ local forced = specification.forced or ""
+ if forced ~= "" then
+ tfmtable = check_tfm(specification,specification.name .. "." .. forced)
+ end
+ if not tfmtable then
+ tfmtable = check_tfm(specification,specification.name)
+ end
+ else
+ tfmtable = check_tfm(specification,fullname)
+ end
+ return tfmtable
+end
diff --git a/otfl-font-xtx.lua b/otfl-font-xtx.lua
index 574e161..505e085 100644
--- a/otfl-font-xtx.lua
+++ b/otfl-font-xtx.lua
@@ -40,155 +40,47 @@ local list = { }
specifiers.colonizedpreference = "file"
-local function isstyle(s)
- local style = string.lower(s):split("/")
- for _,v in ipairs(style) do
- if v == "b" then
- list.style = "bold"
- elseif v == "i" then
- list.style = "italic"
- elseif v == "bi" or v == "ib" then
- list.style = "bolditalic"
- elseif v:find("^s=") then
- list.optsize = v:split("=")[2]
- elseif v == "aat" or v == "icu" or v == "gr" then
- logs.report("load font", "unsupported font option: %s", v)
- elseif not v:is_empty() then
- list.style = v:gsub("[^%a%d]", "")
- end
- end
-end
-
-fonts = fonts or { }
-fonts.otf = fonts.otf or { }
-
-local otf = fonts.otf
-
-otf.tables = otf.tables or { }
-
-otf.tables.defaults = {
- dflt = {
- "ccmp", "locl", "rlig", "liga", "clig",
- "kern", "mark", "mkmk",
- },
- arab = {
- "ccmp", "locl", "isol", "fina", "fin2",
- "fin3", "medi", "med2", "init", "rlig",
- "calt", "liga", "cswh", "mset", "curs",
- "kern", "mark", "mkmk",
- },
- deva = {
- "ccmp", "locl", "init", "nukt", "akhn",
- "rphf", "blwf", "half", "pstf", "vatu",
- "pres", "blws", "abvs", "psts", "haln",
- "calt", "blwm", "abvm", "dist", "kern",
- "mark", "mkmk",
- },
- khmr = {
- "ccmp", "locl", "pref", "blwf", "abvf",
- "pstf", "pres", "blws", "abvs", "psts",
- "clig", "calt", "blwm", "abvm", "dist",
- "kern", "mark", "mkmk",
- },
- thai = {
- "ccmp", "locl", "liga", "kern", "mark",
- "mkmk",
- },
- hang = {
- "ccmp", "ljmo", "vjmo", "tjmo",
- },
-}
-
-otf.tables.defaults.beng = otf.tables.defaults.deva
-otf.tables.defaults.guru = otf.tables.defaults.deva
-otf.tables.defaults.gujr = otf.tables.defaults.deva
-otf.tables.defaults.orya = otf.tables.defaults.deva
-otf.tables.defaults.taml = otf.tables.defaults.deva
-otf.tables.defaults.telu = otf.tables.defaults.deva
-otf.tables.defaults.knda = otf.tables.defaults.deva
-otf.tables.defaults.mlym = otf.tables.defaults.deva
-otf.tables.defaults.sinh = otf.tables.defaults.deva
-
-otf.tables.defaults.syrc = otf.tables.defaults.arab
-otf.tables.defaults.mong = otf.tables.defaults.arab
-otf.tables.defaults.nko = otf.tables.defaults.arab
-
-otf.tables.defaults.tibt = otf.tables.defaults.khmr
-
-otf.tables.defaults.lao = otf.tables.defaults.thai
-
-local function parse_script(script)
- if otf.tables.scripts[script] then
- local dflt
- if otf.tables.defaults[script] then
- logs.report("load font", "auto-selecting default features for script: %s", script)
- dflt = otf.tables.defaults[script]
- else
- logs.report("load font", "auto-selecting default features for script: dflt (was %s)", script)
- dflt = otf.tables.defaults["dflt"]
- end
- for _,v in next, dflt do
- list[v] = "yes"
- end
- else
- logs.report("load font", "unknown script: %s", script)
- end
-end
-
-specifiers.colonizedpreference = "file"
-
local function issome () list.lookup = specifiers.colonizedpreference end
local function isfile () list.lookup = 'file' end
local function isname () list.lookup = 'name' end
local function thename(s) list.name = s end
local function issub (v) list.sub = v end
+local function iscrap (s) list.crap = string.lower(s) end
+local function istrue (s) list[s] = 'yes' end
+local function isfalse(s) list[s] = 'no' end
+local function iskey (k,v) list[k] = v end
+
local function istrue (s) list[s] = true end
local function isfalse(s) list[s] = false end
-local function iskey (k,v)
- if k == "script" then
- parse_script(v)
- end
- list[k] = v
-end
local P, S, R, C = lpeg.P, lpeg.S, lpeg.R, lpeg.C
local spaces = P(" ")^0
local namespec = (1-S("/:("))^0 -- was: (1-S("/: ("))^0
-local filespec = (R("az", "AZ") * P(":"))^-1 * (1-S(":("))^1
-local stylespec = spaces * P("/") * (((1-P(":"))^0)/isstyle) * spaces
-local filename = (P("file:")/isfile * (filespec/thename)) + (P("[") * P(true)/isname * (((1-P("]"))^0)/thename) * P("]"))
+local crapspec = spaces * P("/") * (((1-P(":"))^0)/iscrap) * spaces
+local filename = (P("file:")/isfile * (namespec/thename)) + (P("[") * P(true)/isname * (((1-P("]"))^0)/thename) * P("]"))
local fontname = (P("name:")/isname * (namespec/thename)) + P(true)/issome * (namespec/thename)
local sometext = (R("az","AZ","09") + S("+-."))^1
local truevalue = P("+") * spaces * (sometext/istrue)
local falsevalue = P("-") * spaces * (sometext/isfalse)
-local keyvalue = P("+") + (C(sometext) * spaces * P("=") * spaces * C(sometext))/iskey
+local keyvalue = (C(sometext) * spaces * P("=") * spaces * C(sometext))/iskey
local somevalue = sometext/istrue
local subvalue = P("(") * (C(P(1-S("()"))^1)/issub) * P(")") -- for Kim
local option = spaces * (keyvalue + falsevalue + truevalue + somevalue) * spaces
local options = P(":") * spaces * (P(";")^0 * option)^0
-local pattern = (filename + fontname) * subvalue^0 * stylespec^0 * options^0
+local pattern = (filename + fontname) * subvalue^0 * crapspec^0 * options^0
local function colonized(specification) -- xetex mode
list = { }
lpegmatch(pattern,specification.specification)
- if list.style then
- specification.style = list.style
- list.style = nil
- end
- if list.optsize then
- specification.optsize = list.optsize
- list.optsize = nil
- end
+ -- for k, v in next, list do
+ -- list[k] = is_boolean(v)
+ -- if type(list[a]) == "nil" then
+ -- list[k] = v
+ -- end
+ -- end
+ list.crap = nil -- style not supported, maybe some day
if list.name then
- if resolvers.findfile(list.name, "tfm") then
- list.lookup = "file"
- list.name = file.addsuffix(list.name, "tfm")
- elseif resolvers.findfile(list.name, "ofm") then
- list.lookup = "file"
- list.name = file.addsuffix(list.name, "ofm")
- end
-
specification.name = list.name
list.name = nil
end
@@ -205,4 +97,4 @@ local function colonized(specification) -- xetex mode
return specification
end
-definers.registersplit(":",colonized)
+definers.registersplit(":",colonized,"cryptic")
diff --git a/otfl-luat-dum.lua b/otfl-luat-dum.lua
index bd10e89..e0b6292 100644
--- a/otfl-luat-dum.lua
+++ b/otfl-luat-dum.lua
@@ -7,6 +7,7 @@ if not modules then modules = { } end modules ['luat-dum'] = {
}
local dummyfunction = function() end
+local dummyreporter = function(c) return function(...) texio.write(c .. " : " .. string.format(...)) end end
statistics = {
register = dummyfunction,
@@ -34,9 +35,10 @@ storage = { -- probably no longer needed
shared = { },
}
logs = {
- new = function() return dummyfunction end,
+ new = dummyreporter,
+ reporter = dummyreporter,
+ messenger = dummyreporter,
report = dummyfunction,
- simple = dummyfunction,
}
callbacks = {
register = function(n,f) return callback.register(n,f) end,
@@ -62,15 +64,19 @@ local remapper = {
otf = "opentype fonts",
ttf = "truetype fonts",
ttc = "truetype fonts",
- dfont = "truetype fonts",
+ dfont = "truetype fonts", -- "truetype dictionary",
cid = "cid maps",
fea = "font feature files",
}
function resolvers.findfile(name,kind)
name = string.gsub(name,"\\","\/")
- kind = string.lower(kind)
- return kpse.find_file(name,(kind and kind ~= "" and (remapper[kind] or kind)) or file.extname(name,"tex"))
+ kind = kind and string.lower(kind)
+ local found = kpse.find_file(name,(kind and kind ~= "" and (remapper[kind] or kind)) or file.extname(name,"tex"))
+ if not found or found == "" then
+ found = kpse.find_file(name,"other text file")
+ end
+ return found
end
function resolvers.findbinfile(name,kind)
@@ -80,6 +86,14 @@ function resolvers.findbinfile(name,kind)
return resolvers.findfile(name,(kind and remapper[kind]) or kind)
end
+function resolvers.resolve(s)
+ return s
+end
+
+function resolvers.unresolve(s)
+ return s
+end
+
-- Caches ... I will make a real stupid version some day when I'm in the
-- mood. After all, the generic code does not need the more advanced
-- ConTeXt features. Cached data is not shared between ConTeXt and other
@@ -98,41 +112,43 @@ end
do
- local cachepaths
+ local cachepaths = kpse.expand_path('$TEXMFCACHE') or ""
+
+ if cachepaths == "" then
+ cachepaths = kpse.expand_path('$TEXMFVAR')
+ end
- if kpse.expand_var('$TEXMFCACHE') ~= '$TEXMFCACHE' then
- cachepaths = kpse.expand_var('$TEXMFCACHE')
- elseif kpse.expand_var('$TEXMFVAR') ~= '$TEXMFVAR' then
- cachepaths = kpse.expand_var('$TEXMFVAR')
+ if cachepaths == "" then
+ cachepaths = kpse.expand_path('$VARTEXMF')
end
- if not cachepaths then
+ if cachepaths == "" then
cachepaths = "."
end
cachepaths = string.split(cachepaths,os.type == "windows" and ";" or ":")
for i=1,#cachepaths do
- local done
- writable = file.join(cachepaths[i], "luatex-cache")
- writable = file.join(writable,caches.namespace)
- writable, done = dir.mkdirs(writable)
- if done then
+ if file.is_writable(cachepaths[i]) then
+ writable = file.join(cachepaths[i],"luatex-cache")
+ lfs.mkdir(writable)
+ writable = file.join(writable,caches.namespace)
+ lfs.mkdir(writable)
break
end
end
for i=1,#cachepaths do
- if file.isreadable(cachepaths[i]) then
+ if file.is_readable(cachepaths[i]) then
readables[#readables+1] = file.join(cachepaths[i],"luatex-cache",caches.namespace)
end
end
if not writable then
- texio.write_nl("quiting: fix your writable cache path\n")
+ texio.write_nl("quiting: fix your writable cache path")
os.exit()
elseif #readables == 0 then
- texio.write_nl("quiting: fix your readable cache path\n")
+ texio.write_nl("quiting: fix your readable cache path")
os.exit()
elseif #readables == 1 and readables[1] == writable then
texio.write(string.format("(using cache: %s)",writable))
diff --git a/otfl-node-inj.lua b/otfl-node-inj.lua
index e4380a4..bf6a609 100644
--- a/otfl-node-inj.lua
+++ b/otfl-node-inj.lua
@@ -6,7 +6,7 @@ if not modules then modules = { } end modules ['node-inj'] = {
license = "see context related readme files"
}
--- tricky ... fonts.ids is not yet defined .. to be solved (maybe general tex ini)
+-- tricky ... fonts.identifiers is not yet defined .. to be solved (maybe general tex ini)
-- This is very experimental (this will change when we have luatex > .50 and
-- a few pending thingies are available. Also, Idris needs to make a few more
@@ -17,22 +17,22 @@ local next = next
local trace_injections = false trackers.register("nodes.injections", function(v) trace_injections = v end)
-local report_injections = logs.new("injections")
+local report_injections = logs.reporter("nodes","injections")
local attributes, nodes, node = attributes, nodes, node
-fonts = fonts or { }
-fonts.tfm = fonts.tfm or { }
-fonts.ids = fonts.ids or { }
+fonts = fonts or { }
+fonts.tfm = fonts.tfm or { }
+fonts.identifiers = fonts.identifiers or { }
-nodes.injections = nodes.injections or { }
-local injections = nodes.injections
+nodes.injections = nodes.injections or { }
+local injections = nodes.injections
-local fontdata = fonts.ids
-local nodecodes = nodes.nodecodes
-local glyph_code = nodecodes.glyph
-local nodepool = nodes.pool
-local newkern = nodepool.kern
+local fontdata = fonts.identifiers
+local nodecodes = nodes.nodecodes
+local glyph_code = nodecodes.glyph
+local nodepool = nodes.pool
+local newkern = nodepool.kern
local traverse_id = node.traverse_id
local unset_attribute = node.unset_attribute