From f0640addbf20d42a235b357130a32d95bc5fb29f Mon Sep 17 00:00:00 2001 From: pubpub-zz <4083478+pubpub-zz@users.noreply.github.com> Date: Wed, 18 May 2022 00:27:48 +0200 Subject: [PATCH 01/27] Improve Text Extraction fix at least #880 line feeds are applied as stated in the ref TODO : for segmented text, horizontal translation should be analysed to apply some space or delete some characters (to be analysed in crazyones.pdf) TODO : font conversion (to be analysed in crazyones.pdf) --- PyPDF2/_page.py | 9 ++++++--- resources/crazyones.txt | 2 ++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/PyPDF2/_page.py b/PyPDF2/_page.py index 01b45d8a1..bf403a18d 100644 --- a/PyPDF2/_page.py +++ b/PyPDF2/_page.py @@ -759,8 +759,10 @@ def extractText(self, Tj_sep: str = "", TJ_sep: str = "") -> str: if isinstance(_text, TextStringObject): text += Tj_sep text += _text - text += "\n" - elif operator == b_("T*"): + #text += "\n" + # see Pdf Reference 1.7 page 406 + elif ((operator in [b_("T*"),b_("ET")]) or + ((operator in [b_("Td"),b_("TD")]) and operands[1] != 0)): text += "\n" elif operator == b_("'"): text += "\n" @@ -773,6 +775,7 @@ def extractText(self, Tj_sep: str = "", TJ_sep: str = "") -> str: text += "\n" text += _text elif operator == b_("TJ"): + pass for i in operands[0]: if isinstance(i, TextStringObject): text += TJ_sep @@ -786,7 +789,7 @@ def extractText(self, Tj_sep: str = "", TJ_sep: str = "") -> str: else: if len(text) > 1 and text[-1] == " ": text = text[:-1] - text += "\n" + #text += "\n" return text mediaBox = createRectangleAccessor(PG.MEDIABOX, ()) diff --git a/resources/crazyones.txt b/resources/crazyones.txt index bf55e4ca2..934edd8d1 100644 --- a/resources/crazyones.txt +++ b/resources/crazyones.txt @@ -1,5 +1,7 @@ + The Crazy Ones October 14, 1998 + Heres to the crazy ones. The mis˝ts. The reb els. The troublemakers. The round p egs in the square holes. The ones who see things di˙erently. Theyre not fond of rules. And From 4346612e2778b0884a0c7806569da524afee6551 Mon Sep 17 00:00:00 2001 From: pubpub-zz <4083478+pubpub-zz@users.noreply.github.com> Date: Sun, 22 May 2022 23:54:55 +0200 Subject: [PATCH 02/27] improve extractText fix wrong characters in crazyones fix space wrongly introduced --- PyPDF2/_adglyphs.py | 4330 +++++++++++++++++++++++++++++++++++++++ PyPDF2/_page.py | 105 +- PyPDF2/generic.py | 126 +- resources/crazyones.txt | 25 +- 4 files changed, 4536 insertions(+), 50 deletions(-) create mode 100644 PyPDF2/_adglyphs.py diff --git a/PyPDF2/_adglyphs.py b/PyPDF2/_adglyphs.py new file mode 100644 index 000000000..778434184 --- /dev/null +++ b/PyPDF2/_adglyphs.py @@ -0,0 +1,4330 @@ +#https://raw.githubusercontent.com/adobe-type-tools/agl-aglfn/master/glyphlist.txt + +# converted manualy to python + +# ----------------------------------------------------------- +# Copyright 2002-2019 Adobe (http://www.adobe.com/). +# +# Redistribution and use in source and binary forms, with or +# without modification, are permitted provided that the +# following conditions are met: +# +# Redistributions of source code must retain the above +# copyright notice, this list of conditions and the following +# disclaimer. +# +# Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials +# provided with the distribution. +# +# Neither the name of Adobe nor the names of its contributors +# may be used to endorse or promote products derived from this +# software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND +# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# ----------------------------------------------------------- +# Name: Adobe Glyph List +# Table version: 2.0 +# Date: September 20, 2002 +# URL: https://github.com/adobe-type-tools/agl-aglfn +# +# Format: two semicolon-delimited fields: +# (1) glyph name--upper/lowercase letters and digits +# (2) Unicode scalar value--four uppercase hexadecimal digits +# +adobe_glyphs={ + "/A":"\u0041", + "/AE":"\u00C6", + "/AEacute":"\u01FC", + "/AEmacron":"\u01E2", + "/AEsmall":"\uF7E6", + "/Aacute":"\u00C1", + "/Aacutesmall":"\uF7E1", + "/Abreve":"\u0102", + "/Abreveacute":"\u1EAE", + "/Abrevecyrillic":"\u04D0", + "/Abrevedotbelow":"\u1EB6", + "/Abrevegrave":"\u1EB0", + "/Abrevehookabove":"\u1EB2", + "/Abrevetilde":"\u1EB4", + "/Acaron":"\u01CD", + "/Acircle":"\u24B6", + "/Acircumflex":"\u00C2", + "/Acircumflexacute":"\u1EA4", + "/Acircumflexdotbelow":"\u1EAC", + "/Acircumflexgrave":"\u1EA6", + "/Acircumflexhookabove":"\u1EA8", + "/Acircumflexsmall":"\uF7E2", + "/Acircumflextilde":"\u1EAA", + "/Acute":"\uF6C9", + "/Acutesmall":"\uF7B4", + "/Acyrillic":"\u0410", + "/Adblgrave":"\u0200", + "/Adieresis":"\u00C4", + "/Adieresiscyrillic":"\u04D2", + "/Adieresismacron":"\u01DE", + "/Adieresissmall":"\uF7E4", + "/Adotbelow":"\u1EA0", + "/Adotmacron":"\u01E0", + "/Agrave":"\u00C0", + "/Agravesmall":"\uF7E0", + "/Ahookabove":"\u1EA2", + "/Aiecyrillic":"\u04D4", + "/Ainvertedbreve":"\u0202", + "/Alpha":"\u0391", + "/Alphatonos":"\u0386", + "/Amacron":"\u0100", + "/Amonospace":"\uFF21", + "/Aogonek":"\u0104", + "/Aring":"\u00C5", + "/Aringacute":"\u01FA", + "/Aringbelow":"\u1E00", + "/Aringsmall":"\uF7E5", + "/Asmall":"\uF761", + "/Atilde":"\u00C3", + "/Atildesmall":"\uF7E3", + "/Aybarmenian":"\u0531", + "/B":"\u0042", + "/Bcircle":"\u24B7", + "/Bdotaccent":"\u1E02", + "/Bdotbelow":"\u1E04", + "/Becyrillic":"\u0411", + "/Benarmenian":"\u0532", + "/Beta":"\u0392", + "/Bhook":"\u0181", + "/Blinebelow":"\u1E06", + "/Bmonospace":"\uFF22", + "/Brevesmall":"\uF6F4", + "/Bsmall":"\uF762", + "/Btopbar":"\u0182", + "/C":"\u0043", + "/Caarmenian":"\u053E", + "/Cacute":"\u0106", + "/Caron":"\uF6CA", + "/Caronsmall":"\uF6F5", + "/Ccaron":"\u010C", + "/Ccedilla":"\u00C7", + "/Ccedillaacute":"\u1E08", + "/Ccedillasmall":"\uF7E7", + "/Ccircle":"\u24B8", + "/Ccircumflex":"\u0108", + "/Cdot":"\u010A", + "/Cdotaccent":"\u010A", + "/Cedillasmall":"\uF7B8", + "/Chaarmenian":"\u0549", + "/Cheabkhasiancyrillic":"\u04BC", + "/Checyrillic":"\u0427", + "/Chedescenderabkhasiancyrillic":"\u04BE", + "/Chedescendercyrillic":"\u04B6", + "/Chedieresiscyrillic":"\u04F4", + "/Cheharmenian":"\u0543", + "/Chekhakassiancyrillic":"\u04CB", + "/Cheverticalstrokecyrillic":"\u04B8", + "/Chi":"\u03A7", + "/Chook":"\u0187", + "/Circumflexsmall":"\uF6F6", + "/Cmonospace":"\uFF23", + "/Coarmenian":"\u0551", + "/Csmall":"\uF763", + "/D":"\u0044", + "/DZ":"\u01F1", + "/DZcaron":"\u01C4", + "/Daarmenian":"\u0534", + "/Dafrican":"\u0189", + "/Dcaron":"\u010E", + "/Dcedilla":"\u1E10", + "/Dcircle":"\u24B9", + "/Dcircumflexbelow":"\u1E12", + "/Dcroat":"\u0110", + "/Ddotaccent":"\u1E0A", + "/Ddotbelow":"\u1E0C", + "/Decyrillic":"\u0414", + "/Deicoptic":"\u03EE", + "/Delta":"\u2206", + "/Deltagreek":"\u0394", + "/Dhook":"\u018A", + "/Dieresis":"\uF6CB", + "/DieresisAcute":"\uF6CC", + "/DieresisGrave":"\uF6CD", + "/Dieresissmall":"\uF7A8", + "/Digammagreek":"\u03DC", + "/Djecyrillic":"\u0402", + "/Dlinebelow":"\u1E0E", + "/Dmonospace":"\uFF24", + "/Dotaccentsmall":"\uF6F7", + "/Dslash":"\u0110", + "/Dsmall":"\uF764", + "/Dtopbar":"\u018B", + "/Dz":"\u01F2", + "/Dzcaron":"\u01C5", + "/Dzeabkhasiancyrillic":"\u04E0", + "/Dzecyrillic":"\u0405", + "/Dzhecyrillic":"\u040F", + "/E":"\u0045", + "/Eacute":"\u00C9", + "/Eacutesmall":"\uF7E9", + "/Ebreve":"\u0114", + "/Ecaron":"\u011A", + "/Ecedillabreve":"\u1E1C", + "/Echarmenian":"\u0535", + "/Ecircle":"\u24BA", + "/Ecircumflex":"\u00CA", + "/Ecircumflexacute":"\u1EBE", + "/Ecircumflexbelow":"\u1E18", + "/Ecircumflexdotbelow":"\u1EC6", + "/Ecircumflexgrave":"\u1EC0", + "/Ecircumflexhookabove":"\u1EC2", + "/Ecircumflexsmall":"\uF7EA", + "/Ecircumflextilde":"\u1EC4", + "/Ecyrillic":"\u0404", + "/Edblgrave":"\u0204", + "/Edieresis":"\u00CB", + "/Edieresissmall":"\uF7EB", + "/Edot":"\u0116", + "/Edotaccent":"\u0116", + "/Edotbelow":"\u1EB8", + "/Efcyrillic":"\u0424", + "/Egrave":"\u00C8", + "/Egravesmall":"\uF7E8", + "/Eharmenian":"\u0537", + "/Ehookabove":"\u1EBA", + "/Eightroman":"\u2167", + "/Einvertedbreve":"\u0206", + "/Eiotifiedcyrillic":"\u0464", + "/Elcyrillic":"\u041B", + "/Elevenroman":"\u216A", + "/Emacron":"\u0112", + "/Emacronacute":"\u1E16", + "/Emacrongrave":"\u1E14", + "/Emcyrillic":"\u041C", + "/Emonospace":"\uFF25", + "/Encyrillic":"\u041D", + "/Endescendercyrillic":"\u04A2", + "/Eng":"\u014A", + "/Enghecyrillic":"\u04A4", + "/Enhookcyrillic":"\u04C7", + "/Eogonek":"\u0118", + "/Eopen":"\u0190", + "/Epsilon":"\u0395", + "/Epsilontonos":"\u0388", + "/Ercyrillic":"\u0420", + "/Ereversed":"\u018E", + "/Ereversedcyrillic":"\u042D", + "/Escyrillic":"\u0421", + "/Esdescendercyrillic":"\u04AA", + "/Esh":"\u01A9", + "/Esmall":"\uF765", + "/Eta":"\u0397", + "/Etarmenian":"\u0538", + "/Etatonos":"\u0389", + "/Eth":"\u00D0", + "/Ethsmall":"\uF7F0", + "/Etilde":"\u1EBC", + "/Etildebelow":"\u1E1A", + "/Euro":"\u20AC", + "/Ezh":"\u01B7", + "/Ezhcaron":"\u01EE", + "/Ezhreversed":"\u01B8", + "/F":"\u0046", + "/Fcircle":"\u24BB", + "/Fdotaccent":"\u1E1E", + "/Feharmenian":"\u0556", + "/Feicoptic":"\u03E4", + "/Fhook":"\u0191", + "/Fitacyrillic":"\u0472", + "/Fiveroman":"\u2164", + "/Fmonospace":"\uFF26", + "/Fourroman":"\u2163", + "/Fsmall":"\uF766", + "/G":"\u0047", + "/GBsquare":"\u3387", + "/Gacute":"\u01F4", + "/Gamma":"\u0393", + "/Gammaafrican":"\u0194", + "/Gangiacoptic":"\u03EA", + "/Gbreve":"\u011E", + "/Gcaron":"\u01E6", + "/Gcedilla":"\u0122", + "/Gcircle":"\u24BC", + "/Gcircumflex":"\u011C", + "/Gcommaaccent":"\u0122", + "/Gdot":"\u0120", + "/Gdotaccent":"\u0120", + "/Gecyrillic":"\u0413", + "/Ghadarmenian":"\u0542", + "/Ghemiddlehookcyrillic":"\u0494", + "/Ghestrokecyrillic":"\u0492", + "/Gheupturncyrillic":"\u0490", + "/Ghook":"\u0193", + "/Gimarmenian":"\u0533", + "/Gjecyrillic":"\u0403", + "/Gmacron":"\u1E20", + "/Gmonospace":"\uFF27", + "/Grave":"\uF6CE", + "/Gravesmall":"\uF760", + "/Gsmall":"\uF767", + "/Gsmallhook":"\u029B", + "/Gstroke":"\u01E4", + "/H":"\u0048", + "/H18533":"\u25CF", + "/H18543":"\u25AA", + "/H18551":"\u25AB", + "/H22073":"\u25A1", + "/HPsquare":"\u33CB", + "/Haabkhasiancyrillic":"\u04A8", + "/Hadescendercyrillic":"\u04B2", + "/Hardsigncyrillic":"\u042A", + "/Hbar":"\u0126", + "/Hbrevebelow":"\u1E2A", + "/Hcedilla":"\u1E28", + "/Hcircle":"\u24BD", + "/Hcircumflex":"\u0124", + "/Hdieresis":"\u1E26", + "/Hdotaccent":"\u1E22", + "/Hdotbelow":"\u1E24", + "/Hmonospace":"\uFF28", + "/Hoarmenian":"\u0540", + "/Horicoptic":"\u03E8", + "/Hsmall":"\uF768", + "/Hungarumlaut":"\uF6CF", + "/Hungarumlautsmall":"\uF6F8", + "/Hzsquare":"\u3390", + "/I":"\u0049", + "/IAcyrillic":"\u042F", + "/IJ":"\u0132", + "/IUcyrillic":"\u042E", + "/Iacute":"\u00CD", + "/Iacutesmall":"\uF7ED", + "/Ibreve":"\u012C", + "/Icaron":"\u01CF", + "/Icircle":"\u24BE", + "/Icircumflex":"\u00CE", + "/Icircumflexsmall":"\uF7EE", + "/Icyrillic":"\u0406", + "/Idblgrave":"\u0208", + "/Idieresis":"\u00CF", + "/Idieresisacute":"\u1E2E", + "/Idieresiscyrillic":"\u04E4", + "/Idieresissmall":"\uF7EF", + "/Idot":"\u0130", + "/Idotaccent":"\u0130", + "/Idotbelow":"\u1ECA", + "/Iebrevecyrillic":"\u04D6", + "/Iecyrillic":"\u0415", + "/Ifraktur":"\u2111", + "/Igrave":"\u00CC", + "/Igravesmall":"\uF7EC", + "/Ihookabove":"\u1EC8", + "/Iicyrillic":"\u0418", + "/Iinvertedbreve":"\u020A", + "/Iishortcyrillic":"\u0419", + "/Imacron":"\u012A", + "/Imacroncyrillic":"\u04E2", + "/Imonospace":"\uFF29", + "/Iniarmenian":"\u053B", + "/Iocyrillic":"\u0401", + "/Iogonek":"\u012E", + "/Iota":"\u0399", + "/Iotaafrican":"\u0196", + "/Iotadieresis":"\u03AA", + "/Iotatonos":"\u038A", + "/Ismall":"\uF769", + "/Istroke":"\u0197", + "/Itilde":"\u0128", + "/Itildebelow":"\u1E2C", + "/Izhitsacyrillic":"\u0474", + "/Izhitsadblgravecyrillic":"\u0476", + "/J":"\u004A", + "/Jaarmenian":"\u0541", + "/Jcircle":"\u24BF", + "/Jcircumflex":"\u0134", + "/Jecyrillic":"\u0408", + "/Jheharmenian":"\u054B", + "/Jmonospace":"\uFF2A", + "/Jsmall":"\uF76A", + "/K":"\u004B", + "/KBsquare":"\u3385", + "/KKsquare":"\u33CD", + "/Kabashkircyrillic":"\u04A0", + "/Kacute":"\u1E30", + "/Kacyrillic":"\u041A", + "/Kadescendercyrillic":"\u049A", + "/Kahookcyrillic":"\u04C3", + "/Kappa":"\u039A", + "/Kastrokecyrillic":"\u049E", + "/Kaverticalstrokecyrillic":"\u049C", + "/Kcaron":"\u01E8", + "/Kcedilla":"\u0136", + "/Kcircle":"\u24C0", + "/Kcommaaccent":"\u0136", + "/Kdotbelow":"\u1E32", + "/Keharmenian":"\u0554", + "/Kenarmenian":"\u053F", + "/Khacyrillic":"\u0425", + "/Kheicoptic":"\u03E6", + "/Khook":"\u0198", + "/Kjecyrillic":"\u040C", + "/Klinebelow":"\u1E34", + "/Kmonospace":"\uFF2B", + "/Koppacyrillic":"\u0480", + "/Koppagreek":"\u03DE", + "/Ksicyrillic":"\u046E", + "/Ksmall":"\uF76B", + "/L":"\u004C", + "/LJ":"\u01C7", + "/LL":"\uF6BF", + "/Lacute":"\u0139", + "/Lambda":"\u039B", + "/Lcaron":"\u013D", + "/Lcedilla":"\u013B", + "/Lcircle":"\u24C1", + "/Lcircumflexbelow":"\u1E3C", + "/Lcommaaccent":"\u013B", + "/Ldot":"\u013F", + "/Ldotaccent":"\u013F", + "/Ldotbelow":"\u1E36", + "/Ldotbelowmacron":"\u1E38", + "/Liwnarmenian":"\u053C", + "/Lj":"\u01C8", + "/Ljecyrillic":"\u0409", + "/Llinebelow":"\u1E3A", + "/Lmonospace":"\uFF2C", + "/Lslash":"\u0141", + "/Lslashsmall":"\uF6F9", + "/Lsmall":"\uF76C", + "/M":"\u004D", + "/MBsquare":"\u3386", + "/Macron":"\uF6D0", + "/Macronsmall":"\uF7AF", + "/Macute":"\u1E3E", + "/Mcircle":"\u24C2", + "/Mdotaccent":"\u1E40", + "/Mdotbelow":"\u1E42", + "/Menarmenian":"\u0544", + "/Mmonospace":"\uFF2D", + "/Msmall":"\uF76D", + "/Mturned":"\u019C", + "/Mu":"\u039C", + "/N":"\u004E", + "/NJ":"\u01CA", + "/Nacute":"\u0143", + "/Ncaron":"\u0147", + "/Ncedilla":"\u0145", + "/Ncircle":"\u24C3", + "/Ncircumflexbelow":"\u1E4A", + "/Ncommaaccent":"\u0145", + "/Ndotaccent":"\u1E44", + "/Ndotbelow":"\u1E46", + "/Nhookleft":"\u019D", + "/Nineroman":"\u2168", + "/Nj":"\u01CB", + "/Njecyrillic":"\u040A", + "/Nlinebelow":"\u1E48", + "/Nmonospace":"\uFF2E", + "/Nowarmenian":"\u0546", + "/Nsmall":"\uF76E", + "/Ntilde":"\u00D1", + "/Ntildesmall":"\uF7F1", + "/Nu":"\u039D", + "/O":"\u004F", + "/OE":"\u0152", + "/OEsmall":"\uF6FA", + "/Oacute":"\u00D3", + "/Oacutesmall":"\uF7F3", + "/Obarredcyrillic":"\u04E8", + "/Obarreddieresiscyrillic":"\u04EA", + "/Obreve":"\u014E", + "/Ocaron":"\u01D1", + "/Ocenteredtilde":"\u019F", + "/Ocircle":"\u24C4", + "/Ocircumflex":"\u00D4", + "/Ocircumflexacute":"\u1ED0", + "/Ocircumflexdotbelow":"\u1ED8", + "/Ocircumflexgrave":"\u1ED2", + "/Ocircumflexhookabove":"\u1ED4", + "/Ocircumflexsmall":"\uF7F4", + "/Ocircumflextilde":"\u1ED6", + "/Ocyrillic":"\u041E", + "/Odblacute":"\u0150", + "/Odblgrave":"\u020C", + "/Odieresis":"\u00D6", + "/Odieresiscyrillic":"\u04E6", + "/Odieresissmall":"\uF7F6", + "/Odotbelow":"\u1ECC", + "/Ogoneksmall":"\uF6FB", + "/Ograve":"\u00D2", + "/Ogravesmall":"\uF7F2", + "/Oharmenian":"\u0555", + "/Ohm":"\u2126", + "/Ohookabove":"\u1ECE", + "/Ohorn":"\u01A0", + "/Ohornacute":"\u1EDA", + "/Ohorndotbelow":"\u1EE2", + "/Ohorngrave":"\u1EDC", + "/Ohornhookabove":"\u1EDE", + "/Ohorntilde":"\u1EE0", + "/Ohungarumlaut":"\u0150", + "/Oi":"\u01A2", + "/Oinvertedbreve":"\u020E", + "/Omacron":"\u014C", + "/Omacronacute":"\u1E52", + "/Omacrongrave":"\u1E50", + "/Omega":"\u2126", + "/Omegacyrillic":"\u0460", + "/Omegagreek":"\u03A9", + "/Omegaroundcyrillic":"\u047A", + "/Omegatitlocyrillic":"\u047C", + "/Omegatonos":"\u038F", + "/Omicron":"\u039F", + "/Omicrontonos":"\u038C", + "/Omonospace":"\uFF2F", + "/Oneroman":"\u2160", + "/Oogonek":"\u01EA", + "/Oogonekmacron":"\u01EC", + "/Oopen":"\u0186", + "/Oslash":"\u00D8", + "/Oslashacute":"\u01FE", + "/Oslashsmall":"\uF7F8", + "/Osmall":"\uF76F", + "/Ostrokeacute":"\u01FE", + "/Otcyrillic":"\u047E", + "/Otilde":"\u00D5", + "/Otildeacute":"\u1E4C", + "/Otildedieresis":"\u1E4E", + "/Otildesmall":"\uF7F5", + "/P":"\u0050", + "/Pacute":"\u1E54", + "/Pcircle":"\u24C5", + "/Pdotaccent":"\u1E56", + "/Pecyrillic":"\u041F", + "/Peharmenian":"\u054A", + "/Pemiddlehookcyrillic":"\u04A6", + "/Phi":"\u03A6", + "/Phook":"\u01A4", + "/Pi":"\u03A0", + "/Piwrarmenian":"\u0553", + "/Pmonospace":"\uFF30", + "/Psi":"\u03A8", + "/Psicyrillic":"\u0470", + "/Psmall":"\uF770", + "/Q":"\u0051", + "/Qcircle":"\u24C6", + "/Qmonospace":"\uFF31", + "/Qsmall":"\uF771", + "/R":"\u0052", + "/Raarmenian":"\u054C", + "/Racute":"\u0154", + "/Rcaron":"\u0158", + "/Rcedilla":"\u0156", + "/Rcircle":"\u24C7", + "/Rcommaaccent":"\u0156", + "/Rdblgrave":"\u0210", + "/Rdotaccent":"\u1E58", + "/Rdotbelow":"\u1E5A", + "/Rdotbelowmacron":"\u1E5C", + "/Reharmenian":"\u0550", + "/Rfraktur":"\u211C", + "/Rho":"\u03A1", + "/Ringsmall":"\uF6FC", + "/Rinvertedbreve":"\u0212", + "/Rlinebelow":"\u1E5E", + "/Rmonospace":"\uFF32", + "/Rsmall":"\uF772", + "/Rsmallinverted":"\u0281", + "/Rsmallinvertedsuperior":"\u02B6", + "/S":"\u0053", + "/SF010000":"\u250C", + "/SF020000":"\u2514", + "/SF030000":"\u2510", + "/SF040000":"\u2518", + "/SF050000":"\u253C", + "/SF060000":"\u252C", + "/SF070000":"\u2534", + "/SF080000":"\u251C", + "/SF090000":"\u2524", + "/SF100000":"\u2500", + "/SF110000":"\u2502", + "/SF190000":"\u2561", + "/SF200000":"\u2562", + "/SF210000":"\u2556", + "/SF220000":"\u2555", + "/SF230000":"\u2563", + "/SF240000":"\u2551", + "/SF250000":"\u2557", + "/SF260000":"\u255D", + "/SF270000":"\u255C", + "/SF280000":"\u255B", + "/SF360000":"\u255E", + "/SF370000":"\u255F", + "/SF380000":"\u255A", + "/SF390000":"\u2554", + "/SF400000":"\u2569", + "/SF410000":"\u2566", + "/SF420000":"\u2560", + "/SF430000":"\u2550", + "/SF440000":"\u256C", + "/SF450000":"\u2567", + "/SF460000":"\u2568", + "/SF470000":"\u2564", + "/SF480000":"\u2565", + "/SF490000":"\u2559", + "/SF500000":"\u2558", + "/SF510000":"\u2552", + "/SF520000":"\u2553", + "/SF530000":"\u256B", + "/SF540000":"\u256A", + "/Sacute":"\u015A", + "/Sacutedotaccent":"\u1E64", + "/Sampigreek":"\u03E0", + "/Scaron":"\u0160", + "/Scarondotaccent":"\u1E66", + "/Scaronsmall":"\uF6FD", + "/Scedilla":"\u015E", + "/Schwa":"\u018F", + "/Schwacyrillic":"\u04D8", + "/Schwadieresiscyrillic":"\u04DA", + "/Scircle":"\u24C8", + "/Scircumflex":"\u015C", + "/Scommaaccent":"\u0218", + "/Sdotaccent":"\u1E60", + "/Sdotbelow":"\u1E62", + "/Sdotbelowdotaccent":"\u1E68", + "/Seharmenian":"\u054D", + "/Sevenroman":"\u2166", + "/Shaarmenian":"\u0547", + "/Shacyrillic":"\u0428", + "/Shchacyrillic":"\u0429", + "/Sheicoptic":"\u03E2", + "/Shhacyrillic":"\u04BA", + "/Shimacoptic":"\u03EC", + "/Sigma":"\u03A3", + "/Sixroman":"\u2165", + "/Smonospace":"\uFF33", + "/Softsigncyrillic":"\u042C", + "/Ssmall":"\uF773", + "/Stigmagreek":"\u03DA", + "/T":"\u0054", + "/Tau":"\u03A4", + "/Tbar":"\u0166", + "/Tcaron":"\u0164", + "/Tcedilla":"\u0162", + "/Tcircle":"\u24C9", + "/Tcircumflexbelow":"\u1E70", + "/Tcommaaccent":"\u0162", + "/Tdotaccent":"\u1E6A", + "/Tdotbelow":"\u1E6C", + "/Tecyrillic":"\u0422", + "/Tedescendercyrillic":"\u04AC", + "/Tenroman":"\u2169", + "/Tetsecyrillic":"\u04B4", + "/Theta":"\u0398", + "/Thook":"\u01AC", + "/Thorn":"\u00DE", + "/Thornsmall":"\uF7FE", + "/Threeroman":"\u2162", + "/Tildesmall":"\uF6FE", + "/Tiwnarmenian":"\u054F", + "/Tlinebelow":"\u1E6E", + "/Tmonospace":"\uFF34", + "/Toarmenian":"\u0539", + "/Tonefive":"\u01BC", + "/Tonesix":"\u0184", + "/Tonetwo":"\u01A7", + "/Tretroflexhook":"\u01AE", + "/Tsecyrillic":"\u0426", + "/Tshecyrillic":"\u040B", + "/Tsmall":"\uF774", + "/Twelveroman":"\u216B", + "/Tworoman":"\u2161", + "/U":"\u0055", + "/Uacute":"\u00DA", + "/Uacutesmall":"\uF7FA", + "/Ubreve":"\u016C", + "/Ucaron":"\u01D3", + "/Ucircle":"\u24CA", + "/Ucircumflex":"\u00DB", + "/Ucircumflexbelow":"\u1E76", + "/Ucircumflexsmall":"\uF7FB", + "/Ucyrillic":"\u0423", + "/Udblacute":"\u0170", + "/Udblgrave":"\u0214", + "/Udieresis":"\u00DC", + "/Udieresisacute":"\u01D7", + "/Udieresisbelow":"\u1E72", + "/Udieresiscaron":"\u01D9", + "/Udieresiscyrillic":"\u04F0", + "/Udieresisgrave":"\u01DB", + "/Udieresismacron":"\u01D5", + "/Udieresissmall":"\uF7FC", + "/Udotbelow":"\u1EE4", + "/Ugrave":"\u00D9", + "/Ugravesmall":"\uF7F9", + "/Uhookabove":"\u1EE6", + "/Uhorn":"\u01AF", + "/Uhornacute":"\u1EE8", + "/Uhorndotbelow":"\u1EF0", + "/Uhorngrave":"\u1EEA", + "/Uhornhookabove":"\u1EEC", + "/Uhorntilde":"\u1EEE", + "/Uhungarumlaut":"\u0170", + "/Uhungarumlautcyrillic":"\u04F2", + "/Uinvertedbreve":"\u0216", + "/Ukcyrillic":"\u0478", + "/Umacron":"\u016A", + "/Umacroncyrillic":"\u04EE", + "/Umacrondieresis":"\u1E7A", + "/Umonospace":"\uFF35", + "/Uogonek":"\u0172", + "/Upsilon":"\u03A5", + "/Upsilon1":"\u03D2", + "/Upsilonacutehooksymbolgreek":"\u03D3", + "/Upsilonafrican":"\u01B1", + "/Upsilondieresis":"\u03AB", + "/Upsilondieresishooksymbolgreek":"\u03D4", + "/Upsilonhooksymbol":"\u03D2", + "/Upsilontonos":"\u038E", + "/Uring":"\u016E", + "/Ushortcyrillic":"\u040E", + "/Usmall":"\uF775", + "/Ustraightcyrillic":"\u04AE", + "/Ustraightstrokecyrillic":"\u04B0", + "/Utilde":"\u0168", + "/Utildeacute":"\u1E78", + "/Utildebelow":"\u1E74", + "/V":"\u0056", + "/Vcircle":"\u24CB", + "/Vdotbelow":"\u1E7E", + "/Vecyrillic":"\u0412", + "/Vewarmenian":"\u054E", + "/Vhook":"\u01B2", + "/Vmonospace":"\uFF36", + "/Voarmenian":"\u0548", + "/Vsmall":"\uF776", + "/Vtilde":"\u1E7C", + "/W":"\u0057", + "/Wacute":"\u1E82", + "/Wcircle":"\u24CC", + "/Wcircumflex":"\u0174", + "/Wdieresis":"\u1E84", + "/Wdotaccent":"\u1E86", + "/Wdotbelow":"\u1E88", + "/Wgrave":"\u1E80", + "/Wmonospace":"\uFF37", + "/Wsmall":"\uF777", + "/X":"\u0058", + "/Xcircle":"\u24CD", + "/Xdieresis":"\u1E8C", + "/Xdotaccent":"\u1E8A", + "/Xeharmenian":"\u053D", + "/Xi":"\u039E", + "/Xmonospace":"\uFF38", + "/Xsmall":"\uF778", + "/Y":"\u0059", + "/Yacute":"\u00DD", + "/Yacutesmall":"\uF7FD", + "/Yatcyrillic":"\u0462", + "/Ycircle":"\u24CE", + "/Ycircumflex":"\u0176", + "/Ydieresis":"\u0178", + "/Ydieresissmall":"\uF7FF", + "/Ydotaccent":"\u1E8E", + "/Ydotbelow":"\u1EF4", + "/Yericyrillic":"\u042B", + "/Yerudieresiscyrillic":"\u04F8", + "/Ygrave":"\u1EF2", + "/Yhook":"\u01B3", + "/Yhookabove":"\u1EF6", + "/Yiarmenian":"\u0545", + "/Yicyrillic":"\u0407", + "/Yiwnarmenian":"\u0552", + "/Ymonospace":"\uFF39", + "/Ysmall":"\uF779", + "/Ytilde":"\u1EF8", + "/Yusbigcyrillic":"\u046A", + "/Yusbigiotifiedcyrillic":"\u046C", + "/Yuslittlecyrillic":"\u0466", + "/Yuslittleiotifiedcyrillic":"\u0468", + "/Z":"\u005A", + "/Zaarmenian":"\u0536", + "/Zacute":"\u0179", + "/Zcaron":"\u017D", + "/Zcaronsmall":"\uF6FF", + "/Zcircle":"\u24CF", + "/Zcircumflex":"\u1E90", + "/Zdot":"\u017B", + "/Zdotaccent":"\u017B", + "/Zdotbelow":"\u1E92", + "/Zecyrillic":"\u0417", + "/Zedescendercyrillic":"\u0498", + "/Zedieresiscyrillic":"\u04DE", + "/Zeta":"\u0396", + "/Zhearmenian":"\u053A", + "/Zhebrevecyrillic":"\u04C1", + "/Zhecyrillic":"\u0416", + "/Zhedescendercyrillic":"\u0496", + "/Zhedieresiscyrillic":"\u04DC", + "/Zlinebelow":"\u1E94", + "/Zmonospace":"\uFF3A", + "/Zsmall":"\uF77A", + "/Zstroke":"\u01B5", + "/a":"\u0061", + "/aabengali":"\u0986", + "/aacute":"\u00E1", + "/aadeva":"\u0906", + "/aagujarati":"\u0A86", + "/aagurmukhi":"\u0A06", + "/aamatragurmukhi":"\u0A3E", + "/aarusquare":"\u3303", + "/aavowelsignbengali":"\u09BE", + "/aavowelsigndeva":"\u093E", + "/aavowelsigngujarati":"\u0ABE", + "/abbreviationmarkarmenian":"\u055F", + "/abbreviationsigndeva":"\u0970", + "/abengali":"\u0985", + "/abopomofo":"\u311A", + "/abreve":"\u0103", + "/abreveacute":"\u1EAF", + "/abrevecyrillic":"\u04D1", + "/abrevedotbelow":"\u1EB7", + "/abrevegrave":"\u1EB1", + "/abrevehookabove":"\u1EB3", + "/abrevetilde":"\u1EB5", + "/acaron":"\u01CE", + "/acircle":"\u24D0", + "/acircumflex":"\u00E2", + "/acircumflexacute":"\u1EA5", + "/acircumflexdotbelow":"\u1EAD", + "/acircumflexgrave":"\u1EA7", + "/acircumflexhookabove":"\u1EA9", + "/acircumflextilde":"\u1EAB", + "/acute":"\u00B4", + "/acutebelowcmb":"\u0317", + "/acutecmb":"\u0301", + "/acutecomb":"\u0301", + "/acutedeva":"\u0954", + "/acutelowmod":"\u02CF", + "/acutetonecmb":"\u0341", + "/acyrillic":"\u0430", + "/adblgrave":"\u0201", + "/addakgurmukhi":"\u0A71", + "/adeva":"\u0905", + "/adieresis":"\u00E4", + "/adieresiscyrillic":"\u04D3", + "/adieresismacron":"\u01DF", + "/adotbelow":"\u1EA1", + "/adotmacron":"\u01E1", + "/ae":"\u00E6", + "/aeacute":"\u01FD", + "/aekorean":"\u3150", + "/aemacron":"\u01E3", + "/afii00208":"\u2015", + "/afii08941":"\u20A4", + "/afii10017":"\u0410", + "/afii10018":"\u0411", + "/afii10019":"\u0412", + "/afii10020":"\u0413", + "/afii10021":"\u0414", + "/afii10022":"\u0415", + "/afii10023":"\u0401", + "/afii10024":"\u0416", + "/afii10025":"\u0417", + "/afii10026":"\u0418", + "/afii10027":"\u0419", + "/afii10028":"\u041A", + "/afii10029":"\u041B", + "/afii10030":"\u041C", + "/afii10031":"\u041D", + "/afii10032":"\u041E", + "/afii10033":"\u041F", + "/afii10034":"\u0420", + "/afii10035":"\u0421", + "/afii10036":"\u0422", + "/afii10037":"\u0423", + "/afii10038":"\u0424", + "/afii10039":"\u0425", + "/afii10040":"\u0426", + "/afii10041":"\u0427", + "/afii10042":"\u0428", + "/afii10043":"\u0429", + "/afii10044":"\u042A", + "/afii10045":"\u042B", + "/afii10046":"\u042C", + "/afii10047":"\u042D", + "/afii10048":"\u042E", + "/afii10049":"\u042F", + "/afii10050":"\u0490", + "/afii10051":"\u0402", + "/afii10052":"\u0403", + "/afii10053":"\u0404", + "/afii10054":"\u0405", + "/afii10055":"\u0406", + "/afii10056":"\u0407", + "/afii10057":"\u0408", + "/afii10058":"\u0409", + "/afii10059":"\u040A", + "/afii10060":"\u040B", + "/afii10061":"\u040C", + "/afii10062":"\u040E", + "/afii10063":"\uF6C4", + "/afii10064":"\uF6C5", + "/afii10065":"\u0430", + "/afii10066":"\u0431", + "/afii10067":"\u0432", + "/afii10068":"\u0433", + "/afii10069":"\u0434", + "/afii10070":"\u0435", + "/afii10071":"\u0451", + "/afii10072":"\u0436", + "/afii10073":"\u0437", + "/afii10074":"\u0438", + "/afii10075":"\u0439", + "/afii10076":"\u043A", + "/afii10077":"\u043B", + "/afii10078":"\u043C", + "/afii10079":"\u043D", + "/afii10080":"\u043E", + "/afii10081":"\u043F", + "/afii10082":"\u0440", + "/afii10083":"\u0441", + "/afii10084":"\u0442", + "/afii10085":"\u0443", + "/afii10086":"\u0444", + "/afii10087":"\u0445", + "/afii10088":"\u0446", + "/afii10089":"\u0447", + "/afii10090":"\u0448", + "/afii10091":"\u0449", + "/afii10092":"\u044A", + "/afii10093":"\u044B", + "/afii10094":"\u044C", + "/afii10095":"\u044D", + "/afii10096":"\u044E", + "/afii10097":"\u044F", + "/afii10098":"\u0491", + "/afii10099":"\u0452", + "/afii10100":"\u0453", + "/afii10101":"\u0454", + "/afii10102":"\u0455", + "/afii10103":"\u0456", + "/afii10104":"\u0457", + "/afii10105":"\u0458", + "/afii10106":"\u0459", + "/afii10107":"\u045A", + "/afii10108":"\u045B", + "/afii10109":"\u045C", + "/afii10110":"\u045E", + "/afii10145":"\u040F", + "/afii10146":"\u0462", + "/afii10147":"\u0472", + "/afii10148":"\u0474", + "/afii10192":"\uF6C6", + "/afii10193":"\u045F", + "/afii10194":"\u0463", + "/afii10195":"\u0473", + "/afii10196":"\u0475", + "/afii10831":"\uF6C7", + "/afii10832":"\uF6C8", + "/afii10846":"\u04D9", + "/afii299":"\u200E", + "/afii300":"\u200F", + "/afii301":"\u200D", + "/afii57381":"\u066A", + "/afii57388":"\u060C", + "/afii57392":"\u0660", + "/afii57393":"\u0661", + "/afii57394":"\u0662", + "/afii57395":"\u0663", + "/afii57396":"\u0664", + "/afii57397":"\u0665", + "/afii57398":"\u0666", + "/afii57399":"\u0667", + "/afii57400":"\u0668", + "/afii57401":"\u0669", + "/afii57403":"\u061B", + "/afii57407":"\u061F", + "/afii57409":"\u0621", + "/afii57410":"\u0622", + "/afii57411":"\u0623", + "/afii57412":"\u0624", + "/afii57413":"\u0625", + "/afii57414":"\u0626", + "/afii57415":"\u0627", + "/afii57416":"\u0628", + "/afii57417":"\u0629", + "/afii57418":"\u062A", + "/afii57419":"\u062B", + "/afii57420":"\u062C", + "/afii57421":"\u062D", + "/afii57422":"\u062E", + "/afii57423":"\u062F", + "/afii57424":"\u0630", + "/afii57425":"\u0631", + "/afii57426":"\u0632", + "/afii57427":"\u0633", + "/afii57428":"\u0634", + "/afii57429":"\u0635", + "/afii57430":"\u0636", + "/afii57431":"\u0637", + "/afii57432":"\u0638", + "/afii57433":"\u0639", + "/afii57434":"\u063A", + "/afii57440":"\u0640", + "/afii57441":"\u0641", + "/afii57442":"\u0642", + "/afii57443":"\u0643", + "/afii57444":"\u0644", + "/afii57445":"\u0645", + "/afii57446":"\u0646", + "/afii57448":"\u0648", + "/afii57449":"\u0649", + "/afii57450":"\u064A", + "/afii57451":"\u064B", + "/afii57452":"\u064C", + "/afii57453":"\u064D", + "/afii57454":"\u064E", + "/afii57455":"\u064F", + "/afii57456":"\u0650", + "/afii57457":"\u0651", + "/afii57458":"\u0652", + "/afii57470":"\u0647", + "/afii57505":"\u06A4", + "/afii57506":"\u067E", + "/afii57507":"\u0686", + "/afii57508":"\u0698", + "/afii57509":"\u06AF", + "/afii57511":"\u0679", + "/afii57512":"\u0688", + "/afii57513":"\u0691", + "/afii57514":"\u06BA", + "/afii57519":"\u06D2", + "/afii57534":"\u06D5", + "/afii57636":"\u20AA", + "/afii57645":"\u05BE", + "/afii57658":"\u05C3", + "/afii57664":"\u05D0", + "/afii57665":"\u05D1", + "/afii57666":"\u05D2", + "/afii57667":"\u05D3", + "/afii57668":"\u05D4", + "/afii57669":"\u05D5", + "/afii57670":"\u05D6", + "/afii57671":"\u05D7", + "/afii57672":"\u05D8", + "/afii57673":"\u05D9", + "/afii57674":"\u05DA", + "/afii57675":"\u05DB", + "/afii57676":"\u05DC", + "/afii57677":"\u05DD", + "/afii57678":"\u05DE", + "/afii57679":"\u05DF", + "/afii57680":"\u05E0", + "/afii57681":"\u05E1", + "/afii57682":"\u05E2", + "/afii57683":"\u05E3", + "/afii57684":"\u05E4", + "/afii57685":"\u05E5", + "/afii57686":"\u05E6", + "/afii57687":"\u05E7", + "/afii57688":"\u05E8", + "/afii57689":"\u05E9", + "/afii57690":"\u05EA", + "/afii57694":"\uFB2A", + "/afii57695":"\uFB2B", + "/afii57700":"\uFB4B", + "/afii57705":"\uFB1F", + "/afii57716":"\u05F0", + "/afii57717":"\u05F1", + "/afii57718":"\u05F2", + "/afii57723":"\uFB35", + "/afii57793":"\u05B4", + "/afii57794":"\u05B5", + "/afii57795":"\u05B6", + "/afii57796":"\u05BB", + "/afii57797":"\u05B8", + "/afii57798":"\u05B7", + "/afii57799":"\u05B0", + "/afii57800":"\u05B2", + "/afii57801":"\u05B1", + "/afii57802":"\u05B3", + "/afii57803":"\u05C2", + "/afii57804":"\u05C1", + "/afii57806":"\u05B9", + "/afii57807":"\u05BC", + "/afii57839":"\u05BD", + "/afii57841":"\u05BF", + "/afii57842":"\u05C0", + "/afii57929":"\u02BC", + "/afii61248":"\u2105", + "/afii61289":"\u2113", + "/afii61352":"\u2116", + "/afii61573":"\u202C", + "/afii61574":"\u202D", + "/afii61575":"\u202E", + "/afii61664":"\u200C", + "/afii63167":"\u066D", + "/afii64937":"\u02BD", + "/agrave":"\u00E0", + "/agujarati":"\u0A85", + "/agurmukhi":"\u0A05", + "/ahiragana":"\u3042", + "/ahookabove":"\u1EA3", + "/aibengali":"\u0990", + "/aibopomofo":"\u311E", + "/aideva":"\u0910", + "/aiecyrillic":"\u04D5", + "/aigujarati":"\u0A90", + "/aigurmukhi":"\u0A10", + "/aimatragurmukhi":"\u0A48", + "/ainarabic":"\u0639", + "/ainfinalarabic":"\uFECA", + "/aininitialarabic":"\uFECB", + "/ainmedialarabic":"\uFECC", + "/ainvertedbreve":"\u0203", + "/aivowelsignbengali":"\u09C8", + "/aivowelsigndeva":"\u0948", + "/aivowelsigngujarati":"\u0AC8", + "/akatakana":"\u30A2", + "/akatakanahalfwidth":"\uFF71", + "/akorean":"\u314F", + "/alef":"\u05D0", + "/alefarabic":"\u0627", + "/alefdageshhebrew":"\uFB30", + "/aleffinalarabic":"\uFE8E", + "/alefhamzaabovearabic":"\u0623", + "/alefhamzaabovefinalarabic":"\uFE84", + "/alefhamzabelowarabic":"\u0625", + "/alefhamzabelowfinalarabic":"\uFE88", + "/alefhebrew":"\u05D0", + "/aleflamedhebrew":"\uFB4F", + "/alefmaddaabovearabic":"\u0622", + "/alefmaddaabovefinalarabic":"\uFE82", + "/alefmaksuraarabic":"\u0649", + "/alefmaksurafinalarabic":"\uFEF0", + "/alefmaksurainitialarabic":"\uFEF3", + "/alefmaksuramedialarabic":"\uFEF4", + "/alefpatahhebrew":"\uFB2E", + "/alefqamatshebrew":"\uFB2F", + "/aleph":"\u2135", + "/allequal":"\u224C", + "/alpha":"\u03B1", + "/alphatonos":"\u03AC", + "/amacron":"\u0101", + "/amonospace":"\uFF41", + "/ampersand":"\u0026", + "/ampersandmonospace":"\uFF06", + "/ampersandsmall":"\uF726", + "/amsquare":"\u33C2", + "/anbopomofo":"\u3122", + "/angbopomofo":"\u3124", + "/angkhankhuthai":"\u0E5A", + "/angle":"\u2220", + "/anglebracketleft":"\u3008", + "/anglebracketleftvertical":"\uFE3F", + "/anglebracketright":"\u3009", + "/anglebracketrightvertical":"\uFE40", + "/angleleft":"\u2329", + "/angleright":"\u232A", + "/angstrom":"\u212B", + "/anoteleia":"\u0387", + "/anudattadeva":"\u0952", + "/anusvarabengali":"\u0982", + "/anusvaradeva":"\u0902", + "/anusvaragujarati":"\u0A82", + "/aogonek":"\u0105", + "/apaatosquare":"\u3300", + "/aparen":"\u249C", + "/apostrophearmenian":"\u055A", + "/apostrophemod":"\u02BC", + "/apple":"\uF8FF", + "/approaches":"\u2250", + "/approxequal":"\u2248", + "/approxequalorimage":"\u2252", + "/approximatelyequal":"\u2245", + "/araeaekorean":"\u318E", + "/araeakorean":"\u318D", + "/arc":"\u2312", + "/arighthalfring":"\u1E9A", + "/aring":"\u00E5", + "/aringacute":"\u01FB", + "/aringbelow":"\u1E01", + "/arrowboth":"\u2194", + "/arrowdashdown":"\u21E3", + "/arrowdashleft":"\u21E0", + "/arrowdashright":"\u21E2", + "/arrowdashup":"\u21E1", + "/arrowdblboth":"\u21D4", + "/arrowdbldown":"\u21D3", + "/arrowdblleft":"\u21D0", + "/arrowdblright":"\u21D2", + "/arrowdblup":"\u21D1", + "/arrowdown":"\u2193", + "/arrowdownleft":"\u2199", + "/arrowdownright":"\u2198", + "/arrowdownwhite":"\u21E9", + "/arrowheaddownmod":"\u02C5", + "/arrowheadleftmod":"\u02C2", + "/arrowheadrightmod":"\u02C3", + "/arrowheadupmod":"\u02C4", + "/arrowhorizex":"\uF8E7", + "/arrowleft":"\u2190", + "/arrowleftdbl":"\u21D0", + "/arrowleftdblstroke":"\u21CD", + "/arrowleftoverright":"\u21C6", + "/arrowleftwhite":"\u21E6", + "/arrowright":"\u2192", + "/arrowrightdblstroke":"\u21CF", + "/arrowrightheavy":"\u279E", + "/arrowrightoverleft":"\u21C4", + "/arrowrightwhite":"\u21E8", + "/arrowtableft":"\u21E4", + "/arrowtabright":"\u21E5", + "/arrowup":"\u2191", + "/arrowupdn":"\u2195", + "/arrowupdnbse":"\u21A8", + "/arrowupdownbase":"\u21A8", + "/arrowupleft":"\u2196", + "/arrowupleftofdown":"\u21C5", + "/arrowupright":"\u2197", + "/arrowupwhite":"\u21E7", + "/arrowvertex":"\uF8E6", + "/asciicircum":"\u005E", + "/asciicircummonospace":"\uFF3E", + "/asciitilde":"\u007E", + "/asciitildemonospace":"\uFF5E", + "/ascript":"\u0251", + "/ascriptturned":"\u0252", + "/asmallhiragana":"\u3041", + "/asmallkatakana":"\u30A1", + "/asmallkatakanahalfwidth":"\uFF67", + "/asterisk":"\u002A", + "/asteriskaltonearabic":"\u066D", + "/asteriskarabic":"\u066D", + "/asteriskmath":"\u2217", + "/asteriskmonospace":"\uFF0A", + "/asterisksmall":"\uFE61", + "/asterism":"\u2042", + "/asuperior":"\uF6E9", + "/asymptoticallyequal":"\u2243", + "/at":"\u0040", + "/atilde":"\u00E3", + "/atmonospace":"\uFF20", + "/atsmall":"\uFE6B", + "/aturned":"\u0250", + "/aubengali":"\u0994", + "/aubopomofo":"\u3120", + "/audeva":"\u0914", + "/augujarati":"\u0A94", + "/augurmukhi":"\u0A14", + "/aulengthmarkbengali":"\u09D7", + "/aumatragurmukhi":"\u0A4C", + "/auvowelsignbengali":"\u09CC", + "/auvowelsigndeva":"\u094C", + "/auvowelsigngujarati":"\u0ACC", + "/avagrahadeva":"\u093D", + "/aybarmenian":"\u0561", + "/ayin":"\u05E2", + "/ayinaltonehebrew":"\uFB20", + "/ayinhebrew":"\u05E2", + "/b":"\u0062", + "/babengali":"\u09AC", + "/backslash":"\u005C", + "/backslashmonospace":"\uFF3C", + "/badeva":"\u092C", + "/bagujarati":"\u0AAC", + "/bagurmukhi":"\u0A2C", + "/bahiragana":"\u3070", + "/bahtthai":"\u0E3F", + "/bakatakana":"\u30D0", + "/bar":"\u007C", + "/barmonospace":"\uFF5C", + "/bbopomofo":"\u3105", + "/bcircle":"\u24D1", + "/bdotaccent":"\u1E03", + "/bdotbelow":"\u1E05", + "/beamedsixteenthnotes":"\u266C", + "/because":"\u2235", + "/becyrillic":"\u0431", + "/beharabic":"\u0628", + "/behfinalarabic":"\uFE90", + "/behinitialarabic":"\uFE91", + "/behiragana":"\u3079", + "/behmedialarabic":"\uFE92", + "/behmeeminitialarabic":"\uFC9F", + "/behmeemisolatedarabic":"\uFC08", + "/behnoonfinalarabic":"\uFC6D", + "/bekatakana":"\u30D9", + "/benarmenian":"\u0562", + "/bet":"\u05D1", + "/beta":"\u03B2", + "/betasymbolgreek":"\u03D0", + "/betdagesh":"\uFB31", + "/betdageshhebrew":"\uFB31", + "/bethebrew":"\u05D1", + "/betrafehebrew":"\uFB4C", + "/bhabengali":"\u09AD", + "/bhadeva":"\u092D", + "/bhagujarati":"\u0AAD", + "/bhagurmukhi":"\u0A2D", + "/bhook":"\u0253", + "/bihiragana":"\u3073", + "/bikatakana":"\u30D3", + "/bilabialclick":"\u0298", + "/bindigurmukhi":"\u0A02", + "/birusquare":"\u3331", + "/blackcircle":"\u25CF", + "/blackdiamond":"\u25C6", + "/blackdownpointingtriangle":"\u25BC", + "/blackleftpointingpointer":"\u25C4", + "/blackleftpointingtriangle":"\u25C0", + "/blacklenticularbracketleft":"\u3010", + "/blacklenticularbracketleftvertical":"\uFE3B", + "/blacklenticularbracketright":"\u3011", + "/blacklenticularbracketrightvertical":"\uFE3C", + "/blacklowerlefttriangle":"\u25E3", + "/blacklowerrighttriangle":"\u25E2", + "/blackrectangle":"\u25AC", + "/blackrightpointingpointer":"\u25BA", + "/blackrightpointingtriangle":"\u25B6", + "/blacksmallsquare":"\u25AA", + "/blacksmilingface":"\u263B", + "/blacksquare":"\u25A0", + "/blackstar":"\u2605", + "/blackupperlefttriangle":"\u25E4", + "/blackupperrighttriangle":"\u25E5", + "/blackuppointingsmalltriangle":"\u25B4", + "/blackuppointingtriangle":"\u25B2", + "/blank":"\u2423", + "/blinebelow":"\u1E07", + "/block":"\u2588", + "/bmonospace":"\uFF42", + "/bobaimaithai":"\u0E1A", + "/bohiragana":"\u307C", + "/bokatakana":"\u30DC", + "/bparen":"\u249D", + "/bqsquare":"\u33C3", + "/braceex":"\uF8F4", + "/braceleft":"\u007B", + "/braceleftbt":"\uF8F3", + "/braceleftmid":"\uF8F2", + "/braceleftmonospace":"\uFF5B", + "/braceleftsmall":"\uFE5B", + "/bracelefttp":"\uF8F1", + "/braceleftvertical":"\uFE37", + "/braceright":"\u007D", + "/bracerightbt":"\uF8FE", + "/bracerightmid":"\uF8FD", + "/bracerightmonospace":"\uFF5D", + "/bracerightsmall":"\uFE5C", + "/bracerighttp":"\uF8FC", + "/bracerightvertical":"\uFE38", + "/bracketleft":"\u005B", + "/bracketleftbt":"\uF8F0", + "/bracketleftex":"\uF8EF", + "/bracketleftmonospace":"\uFF3B", + "/bracketlefttp":"\uF8EE", + "/bracketright":"\u005D", + "/bracketrightbt":"\uF8FB", + "/bracketrightex":"\uF8FA", + "/bracketrightmonospace":"\uFF3D", + "/bracketrighttp":"\uF8F9", + "/breve":"\u02D8", + "/brevebelowcmb":"\u032E", + "/brevecmb":"\u0306", + "/breveinvertedbelowcmb":"\u032F", + "/breveinvertedcmb":"\u0311", + "/breveinverteddoublecmb":"\u0361", + "/bridgebelowcmb":"\u032A", + "/bridgeinvertedbelowcmb":"\u033A", + "/brokenbar":"\u00A6", + "/bstroke":"\u0180", + "/bsuperior":"\uF6EA", + "/btopbar":"\u0183", + "/buhiragana":"\u3076", + "/bukatakana":"\u30D6", + "/bullet":"\u2022", + "/bulletinverse":"\u25D8", + "/bulletoperator":"\u2219", + "/bullseye":"\u25CE", + "/c":"\u0063", + "/caarmenian":"\u056E", + "/cabengali":"\u099A", + "/cacute":"\u0107", + "/cadeva":"\u091A", + "/cagujarati":"\u0A9A", + "/cagurmukhi":"\u0A1A", + "/calsquare":"\u3388", + "/candrabindubengali":"\u0981", + "/candrabinducmb":"\u0310", + "/candrabindudeva":"\u0901", + "/candrabindugujarati":"\u0A81", + "/capslock":"\u21EA", + "/careof":"\u2105", + "/caron":"\u02C7", + "/caronbelowcmb":"\u032C", + "/caroncmb":"\u030C", + "/carriagereturn":"\u21B5", + "/cbopomofo":"\u3118", + "/ccaron":"\u010D", + "/ccedilla":"\u00E7", + "/ccedillaacute":"\u1E09", + "/ccircle":"\u24D2", + "/ccircumflex":"\u0109", + "/ccurl":"\u0255", + "/cdot":"\u010B", + "/cdotaccent":"\u010B", + "/cdsquare":"\u33C5", + "/cedilla":"\u00B8", + "/cedillacmb":"\u0327", + "/cent":"\u00A2", + "/centigrade":"\u2103", + "/centinferior":"\uF6DF", + "/centmonospace":"\uFFE0", + "/centoldstyle":"\uF7A2", + "/centsuperior":"\uF6E0", + "/chaarmenian":"\u0579", + "/chabengali":"\u099B", + "/chadeva":"\u091B", + "/chagujarati":"\u0A9B", + "/chagurmukhi":"\u0A1B", + "/chbopomofo":"\u3114", + "/cheabkhasiancyrillic":"\u04BD", + "/checkmark":"\u2713", + "/checyrillic":"\u0447", + "/chedescenderabkhasiancyrillic":"\u04BF", + "/chedescendercyrillic":"\u04B7", + "/chedieresiscyrillic":"\u04F5", + "/cheharmenian":"\u0573", + "/chekhakassiancyrillic":"\u04CC", + "/cheverticalstrokecyrillic":"\u04B9", + "/chi":"\u03C7", + "/chieuchacirclekorean":"\u3277", + "/chieuchaparenkorean":"\u3217", + "/chieuchcirclekorean":"\u3269", + "/chieuchkorean":"\u314A", + "/chieuchparenkorean":"\u3209", + "/chochangthai":"\u0E0A", + "/chochanthai":"\u0E08", + "/chochingthai":"\u0E09", + "/chochoethai":"\u0E0C", + "/chook":"\u0188", + "/cieucacirclekorean":"\u3276", + "/cieucaparenkorean":"\u3216", + "/cieuccirclekorean":"\u3268", + "/cieuckorean":"\u3148", + "/cieucparenkorean":"\u3208", + "/cieucuparenkorean":"\u321C", + "/circle":"\u25CB", + "/circlemultiply":"\u2297", + "/circleot":"\u2299", + "/circleplus":"\u2295", + "/circlepostalmark":"\u3036", + "/circlewithlefthalfblack":"\u25D0", + "/circlewithrighthalfblack":"\u25D1", + "/circumflex":"\u02C6", + "/circumflexbelowcmb":"\u032D", + "/circumflexcmb":"\u0302", + "/clear":"\u2327", + "/clickalveolar":"\u01C2", + "/clickdental":"\u01C0", + "/clicklateral":"\u01C1", + "/clickretroflex":"\u01C3", + "/club":"\u2663", + "/clubsuitblack":"\u2663", + "/clubsuitwhite":"\u2667", + "/cmcubedsquare":"\u33A4", + "/cmonospace":"\uFF43", + "/cmsquaredsquare":"\u33A0", + "/coarmenian":"\u0581", + "/colon":"\u003A", + "/colonmonetary":"\u20A1", + "/colonmonospace":"\uFF1A", + "/colonsign":"\u20A1", + "/colonsmall":"\uFE55", + "/colontriangularhalfmod":"\u02D1", + "/colontriangularmod":"\u02D0", + "/comma":"\u002C", + "/commaabovecmb":"\u0313", + "/commaaboverightcmb":"\u0315", + "/commaaccent":"\uF6C3", + "/commaarabic":"\u060C", + "/commaarmenian":"\u055D", + "/commainferior":"\uF6E1", + "/commamonospace":"\uFF0C", + "/commareversedabovecmb":"\u0314", + "/commareversedmod":"\u02BD", + "/commasmall":"\uFE50", + "/commasuperior":"\uF6E2", + "/commaturnedabovecmb":"\u0312", + "/commaturnedmod":"\u02BB", + "/compass":"\u263C", + "/congruent":"\u2245", + "/contourintegral":"\u222E", + "/control":"\u2303", + "/controlACK":"\u0006", + "/controlBEL":"\u0007", + "/controlBS":"\u0008", + "/controlCAN":"\u0018", + "/controlCR":"\u000D", + "/controlDC1":"\u0011", + "/controlDC2":"\u0012", + "/controlDC3":"\u0013", + "/controlDC4":"\u0014", + "/controlDEL":"\u007F", + "/controlDLE":"\u0010", + "/controlEM":"\u0019", + "/controlENQ":"\u0005", + "/controlEOT":"\u0004", + "/controlESC":"\u001B", + "/controlETB":"\u0017", + "/controlETX":"\u0003", + "/controlFF":"\u000C", + "/controlFS":"\u001C", + "/controlGS":"\u001D", + "/controlHT":"\u0009", + "/controlLF":"\u000A", + "/controlNAK":"\u0015", + "/controlRS":"\u001E", + "/controlSI":"\u000F", + "/controlSO":"\u000E", + "/controlSOT":"\u0002", + "/controlSTX":"\u0001", + "/controlSUB":"\u001A", + "/controlSYN":"\u0016", + "/controlUS":"\u001F", + "/controlVT":"\u000B", + "/copyright":"\u00A9", + "/copyrightsans":"\uF8E9", + "/copyrightserif":"\uF6D9", + "/cornerbracketleft":"\u300C", + "/cornerbracketlefthalfwidth":"\uFF62", + "/cornerbracketleftvertical":"\uFE41", + "/cornerbracketright":"\u300D", + "/cornerbracketrighthalfwidth":"\uFF63", + "/cornerbracketrightvertical":"\uFE42", + "/corporationsquare":"\u337F", + "/cosquare":"\u33C7", + "/coverkgsquare":"\u33C6", + "/cparen":"\u249E", + "/cruzeiro":"\u20A2", + "/cstretched":"\u0297", + "/curlyand":"\u22CF", + "/curlyor":"\u22CE", + "/currency":"\u00A4", + "/cyrBreve":"\uF6D1", + "/cyrFlex":"\uF6D2", + "/cyrbreve":"\uF6D4", + "/cyrflex":"\uF6D5", + "/d":"\u0064", + "/daarmenian":"\u0564", + "/dabengali":"\u09A6", + "/dadarabic":"\u0636", + "/dadeva":"\u0926", + "/dadfinalarabic":"\uFEBE", + "/dadinitialarabic":"\uFEBF", + "/dadmedialarabic":"\uFEC0", + "/dagesh":"\u05BC", + "/dageshhebrew":"\u05BC", + "/dagger":"\u2020", + "/daggerdbl":"\u2021", + "/dagujarati":"\u0AA6", + "/dagurmukhi":"\u0A26", + "/dahiragana":"\u3060", + "/dakatakana":"\u30C0", + "/dalarabic":"\u062F", + "/dalet":"\u05D3", + "/daletdagesh":"\uFB33", + "/daletdageshhebrew":"\uFB33", + "/dalethatafpatah":"\u05D3 05B2", + "/dalethatafpatahhebrew":"\u05D3 05B2", + "/dalethatafsegol":"\u05D3 05B1", + "/dalethatafsegolhebrew":"\u05D3 05B1", + "/dalethebrew":"\u05D3", + "/dalethiriq":"\u05D3 05B4", + "/dalethiriqhebrew":"\u05D3 05B4", + "/daletholam":"\u05D3 05B9", + "/daletholamhebrew":"\u05D3 05B9", + "/daletpatah":"\u05D3 05B7", + "/daletpatahhebrew":"\u05D3 05B7", + "/daletqamats":"\u05D3 05B8", + "/daletqamatshebrew":"\u05D3 05B8", + "/daletqubuts":"\u05D3 05BB", + "/daletqubutshebrew":"\u05D3 05BB", + "/daletsegol":"\u05D3 05B6", + "/daletsegolhebrew":"\u05D3 05B6", + "/daletsheva":"\u05D3 05B0", + "/daletshevahebrew":"\u05D3 05B0", + "/dalettsere":"\u05D3 05B5", + "/dalettserehebrew":"\u05D3 05B5", + "/dalfinalarabic":"\uFEAA", + "/dammaarabic":"\u064F", + "/dammalowarabic":"\u064F", + "/dammatanaltonearabic":"\u064C", + "/dammatanarabic":"\u064C", + "/danda":"\u0964", + "/dargahebrew":"\u05A7", + "/dargalefthebrew":"\u05A7", + "/dasiapneumatacyrilliccmb":"\u0485", + "/dblGrave":"\uF6D3", + "/dblanglebracketleft":"\u300A", + "/dblanglebracketleftvertical":"\uFE3D", + "/dblanglebracketright":"\u300B", + "/dblanglebracketrightvertical":"\uFE3E", + "/dblarchinvertedbelowcmb":"\u032B", + "/dblarrowleft":"\u21D4", + "/dblarrowright":"\u21D2", + "/dbldanda":"\u0965", + "/dblgrave":"\uF6D6", + "/dblgravecmb":"\u030F", + "/dblintegral":"\u222C", + "/dbllowline":"\u2017", + "/dbllowlinecmb":"\u0333", + "/dbloverlinecmb":"\u033F", + "/dblprimemod":"\u02BA", + "/dblverticalbar":"\u2016", + "/dblverticallineabovecmb":"\u030E", + "/dbopomofo":"\u3109", + "/dbsquare":"\u33C8", + "/dcaron":"\u010F", + "/dcedilla":"\u1E11", + "/dcircle":"\u24D3", + "/dcircumflexbelow":"\u1E13", + "/dcroat":"\u0111", + "/ddabengali":"\u09A1", + "/ddadeva":"\u0921", + "/ddagujarati":"\u0AA1", + "/ddagurmukhi":"\u0A21", + "/ddalarabic":"\u0688", + "/ddalfinalarabic":"\uFB89", + "/dddhadeva":"\u095C", + "/ddhabengali":"\u09A2", + "/ddhadeva":"\u0922", + "/ddhagujarati":"\u0AA2", + "/ddhagurmukhi":"\u0A22", + "/ddotaccent":"\u1E0B", + "/ddotbelow":"\u1E0D", + "/decimalseparatorarabic":"\u066B", + "/decimalseparatorpersian":"\u066B", + "/decyrillic":"\u0434", + "/degree":"\u00B0", + "/dehihebrew":"\u05AD", + "/dehiragana":"\u3067", + "/deicoptic":"\u03EF", + "/dekatakana":"\u30C7", + "/deleteleft":"\u232B", + "/deleteright":"\u2326", + "/delta":"\u03B4", + "/deltaturned":"\u018D", + "/denominatorminusonenumeratorbengali":"\u09F8", + "/dezh":"\u02A4", + "/dhabengali":"\u09A7", + "/dhadeva":"\u0927", + "/dhagujarati":"\u0AA7", + "/dhagurmukhi":"\u0A27", + "/dhook":"\u0257", + "/dialytikatonos":"\u0385", + "/dialytikatonoscmb":"\u0344", + "/diamond":"\u2666", + "/diamondsuitwhite":"\u2662", + "/dieresis":"\u00A8", + "/dieresisacute":"\uF6D7", + "/dieresisbelowcmb":"\u0324", + "/dieresiscmb":"\u0308", + "/dieresisgrave":"\uF6D8", + "/dieresistonos":"\u0385", + "/dihiragana":"\u3062", + "/dikatakana":"\u30C2", + "/dittomark":"\u3003", + "/divide":"\u00F7", + "/divides":"\u2223", + "/divisionslash":"\u2215", + "/djecyrillic":"\u0452", + "/dkshade":"\u2593", + "/dlinebelow":"\u1E0F", + "/dlsquare":"\u3397", + "/dmacron":"\u0111", + "/dmonospace":"\uFF44", + "/dnblock":"\u2584", + "/dochadathai":"\u0E0E", + "/dodekthai":"\u0E14", + "/dohiragana":"\u3069", + "/dokatakana":"\u30C9", + "/dollar":"\u0024", + "/dollarinferior":"\uF6E3", + "/dollarmonospace":"\uFF04", + "/dollaroldstyle":"\uF724", + "/dollarsmall":"\uFE69", + "/dollarsuperior":"\uF6E4", + "/dong":"\u20AB", + "/dorusquare":"\u3326", + "/dotaccent":"\u02D9", + "/dotaccentcmb":"\u0307", + "/dotbelowcmb":"\u0323", + "/dotbelowcomb":"\u0323", + "/dotkatakana":"\u30FB", + "/dotlessi":"\u0131", + "/dotlessj":"\uF6BE", + "/dotlessjstrokehook":"\u0284", + "/dotmath":"\u22C5", + "/dottedcircle":"\u25CC", + "/doubleyodpatah":"\uFB1F", + "/doubleyodpatahhebrew":"\uFB1F", + "/downtackbelowcmb":"\u031E", + "/downtackmod":"\u02D5", + "/dparen":"\u249F", + "/dsuperior":"\uF6EB", + "/dtail":"\u0256", + "/dtopbar":"\u018C", + "/duhiragana":"\u3065", + "/dukatakana":"\u30C5", + "/dz":"\u01F3", + "/dzaltone":"\u02A3", + "/dzcaron":"\u01C6", + "/dzcurl":"\u02A5", + "/dzeabkhasiancyrillic":"\u04E1", + "/dzecyrillic":"\u0455", + "/dzhecyrillic":"\u045F", + "/e":"\u0065", + "/eacute":"\u00E9", + "/earth":"\u2641", + "/ebengali":"\u098F", + "/ebopomofo":"\u311C", + "/ebreve":"\u0115", + "/ecandradeva":"\u090D", + "/ecandragujarati":"\u0A8D", + "/ecandravowelsigndeva":"\u0945", + "/ecandravowelsigngujarati":"\u0AC5", + "/ecaron":"\u011B", + "/ecedillabreve":"\u1E1D", + "/echarmenian":"\u0565", + "/echyiwnarmenian":"\u0587", + "/ecircle":"\u24D4", + "/ecircumflex":"\u00EA", + "/ecircumflexacute":"\u1EBF", + "/ecircumflexbelow":"\u1E19", + "/ecircumflexdotbelow":"\u1EC7", + "/ecircumflexgrave":"\u1EC1", + "/ecircumflexhookabove":"\u1EC3", + "/ecircumflextilde":"\u1EC5", + "/ecyrillic":"\u0454", + "/edblgrave":"\u0205", + "/edeva":"\u090F", + "/edieresis":"\u00EB", + "/edot":"\u0117", + "/edotaccent":"\u0117", + "/edotbelow":"\u1EB9", + "/eegurmukhi":"\u0A0F", + "/eematragurmukhi":"\u0A47", + "/efcyrillic":"\u0444", + "/egrave":"\u00E8", + "/egujarati":"\u0A8F", + "/eharmenian":"\u0567", + "/ehbopomofo":"\u311D", + "/ehiragana":"\u3048", + "/ehookabove":"\u1EBB", + "/eibopomofo":"\u311F", + "/eight":"\u0038", + "/eightarabic":"\u0668", + "/eightbengali":"\u09EE", + "/eightcircle":"\u2467", + "/eightcircleinversesansserif":"\u2791", + "/eightdeva":"\u096E", + "/eighteencircle":"\u2471", + "/eighteenparen":"\u2485", + "/eighteenperiod":"\u2499", + "/eightgujarati":"\u0AEE", + "/eightgurmukhi":"\u0A6E", + "/eighthackarabic":"\u0668", + "/eighthangzhou":"\u3028", + "/eighthnotebeamed":"\u266B", + "/eightideographicparen":"\u3227", + "/eightinferior":"\u2088", + "/eightmonospace":"\uFF18", + "/eightoldstyle":"\uF738", + "/eightparen":"\u247B", + "/eightperiod":"\u248F", + "/eightpersian":"\u06F8", + "/eightroman":"\u2177", + "/eightsuperior":"\u2078", + "/eightthai":"\u0E58", + "/einvertedbreve":"\u0207", + "/eiotifiedcyrillic":"\u0465", + "/ekatakana":"\u30A8", + "/ekatakanahalfwidth":"\uFF74", + "/ekonkargurmukhi":"\u0A74", + "/ekorean":"\u3154", + "/elcyrillic":"\u043B", + "/element":"\u2208", + "/elevencircle":"\u246A", + "/elevenparen":"\u247E", + "/elevenperiod":"\u2492", + "/elevenroman":"\u217A", + "/ellipsis":"\u2026", + "/ellipsisvertical":"\u22EE", + "/emacron":"\u0113", + "/emacronacute":"\u1E17", + "/emacrongrave":"\u1E15", + "/emcyrillic":"\u043C", + "/emdash":"\u2014", + "/emdashvertical":"\uFE31", + "/emonospace":"\uFF45", + "/emphasismarkarmenian":"\u055B", + "/emptyset":"\u2205", + "/enbopomofo":"\u3123", + "/encyrillic":"\u043D", + "/endash":"\u2013", + "/endashvertical":"\uFE32", + "/endescendercyrillic":"\u04A3", + "/eng":"\u014B", + "/engbopomofo":"\u3125", + "/enghecyrillic":"\u04A5", + "/enhookcyrillic":"\u04C8", + "/enspace":"\u2002", + "/eogonek":"\u0119", + "/eokorean":"\u3153", + "/eopen":"\u025B", + "/eopenclosed":"\u029A", + "/eopenreversed":"\u025C", + "/eopenreversedclosed":"\u025E", + "/eopenreversedhook":"\u025D", + "/eparen":"\u24A0", + "/epsilon":"\u03B5", + "/epsilontonos":"\u03AD", + "/equal":"\u003D", + "/equalmonospace":"\uFF1D", + "/equalsmall":"\uFE66", + "/equalsuperior":"\u207C", + "/equivalence":"\u2261", + "/erbopomofo":"\u3126", + "/ercyrillic":"\u0440", + "/ereversed":"\u0258", + "/ereversedcyrillic":"\u044D", + "/escyrillic":"\u0441", + "/esdescendercyrillic":"\u04AB", + "/esh":"\u0283", + "/eshcurl":"\u0286", + "/eshortdeva":"\u090E", + "/eshortvowelsigndeva":"\u0946", + "/eshreversedloop":"\u01AA", + "/eshsquatreversed":"\u0285", + "/esmallhiragana":"\u3047", + "/esmallkatakana":"\u30A7", + "/esmallkatakanahalfwidth":"\uFF6A", + "/estimated":"\u212E", + "/esuperior":"\uF6EC", + "/eta":"\u03B7", + "/etarmenian":"\u0568", + "/etatonos":"\u03AE", + "/eth":"\u00F0", + "/etilde":"\u1EBD", + "/etildebelow":"\u1E1B", + "/etnahtafoukhhebrew":"\u0591", + "/etnahtafoukhlefthebrew":"\u0591", + "/etnahtahebrew":"\u0591", + "/etnahtalefthebrew":"\u0591", + "/eturned":"\u01DD", + "/eukorean":"\u3161", + "/euro":"\u20AC", + "/evowelsignbengali":"\u09C7", + "/evowelsigndeva":"\u0947", + "/evowelsigngujarati":"\u0AC7", + "/exclam":"\u0021", + "/exclamarmenian":"\u055C", + "/exclamdbl":"\u203C", + "/exclamdown":"\u00A1", + "/exclamdownsmall":"\uF7A1", + "/exclammonospace":"\uFF01", + "/exclamsmall":"\uF721", + "/existential":"\u2203", + "/ezh":"\u0292", + "/ezhcaron":"\u01EF", + "/ezhcurl":"\u0293", + "/ezhreversed":"\u01B9", + "/ezhtail":"\u01BA", + "/f":"\u0066", + "/fadeva":"\u095E", + "/fagurmukhi":"\u0A5E", + "/fahrenheit":"\u2109", + "/fathaarabic":"\u064E", + "/fathalowarabic":"\u064E", + "/fathatanarabic":"\u064B", + "/fbopomofo":"\u3108", + "/fcircle":"\u24D5", + "/fdotaccent":"\u1E1F", + "/feharabic":"\u0641", + "/feharmenian":"\u0586", + "/fehfinalarabic":"\uFED2", + "/fehinitialarabic":"\uFED3", + "/fehmedialarabic":"\uFED4", + "/feicoptic":"\u03E5", + "/female":"\u2640", + "/ff":"\uFB00", + "/ffi":"\uFB03", + "/ffl":"\uFB04", + "/fi":"\uFB01", + "/fifteencircle":"\u246E", + "/fifteenparen":"\u2482", + "/fifteenperiod":"\u2496", + "/figuredash":"\u2012", + "/filledbox":"\u25A0", + "/filledrect":"\u25AC", + "/finalkaf":"\u05DA", + "/finalkafdagesh":"\uFB3A", + "/finalkafdageshhebrew":"\uFB3A", + "/finalkafhebrew":"\u05DA", + "/finalkafqamats":"\u05DA 05B8", + "/finalkafqamatshebrew":"\u05DA 05B8", + "/finalkafsheva":"\u05DA 05B0", + "/finalkafshevahebrew":"\u05DA 05B0", + "/finalmem":"\u05DD", + "/finalmemhebrew":"\u05DD", + "/finalnun":"\u05DF", + "/finalnunhebrew":"\u05DF", + "/finalpe":"\u05E3", + "/finalpehebrew":"\u05E3", + "/finaltsadi":"\u05E5", + "/finaltsadihebrew":"\u05E5", + "/firsttonechinese":"\u02C9", + "/fisheye":"\u25C9", + "/fitacyrillic":"\u0473", + "/five":"\u0035", + "/fivearabic":"\u0665", + "/fivebengali":"\u09EB", + "/fivecircle":"\u2464", + "/fivecircleinversesansserif":"\u278E", + "/fivedeva":"\u096B", + "/fiveeighths":"\u215D", + "/fivegujarati":"\u0AEB", + "/fivegurmukhi":"\u0A6B", + "/fivehackarabic":"\u0665", + "/fivehangzhou":"\u3025", + "/fiveideographicparen":"\u3224", + "/fiveinferior":"\u2085", + "/fivemonospace":"\uFF15", + "/fiveoldstyle":"\uF735", + "/fiveparen":"\u2478", + "/fiveperiod":"\u248C", + "/fivepersian":"\u06F5", + "/fiveroman":"\u2174", + "/fivesuperior":"\u2075", + "/fivethai":"\u0E55", + "/fl":"\uFB02", + "/florin":"\u0192", + "/fmonospace":"\uFF46", + "/fmsquare":"\u3399", + "/fofanthai":"\u0E1F", + "/fofathai":"\u0E1D", + "/fongmanthai":"\u0E4F", + "/forall":"\u2200", + "/four":"\u0034", + "/fourarabic":"\u0664", + "/fourbengali":"\u09EA", + "/fourcircle":"\u2463", + "/fourcircleinversesansserif":"\u278D", + "/fourdeva":"\u096A", + "/fourgujarati":"\u0AEA", + "/fourgurmukhi":"\u0A6A", + "/fourhackarabic":"\u0664", + "/fourhangzhou":"\u3024", + "/fourideographicparen":"\u3223", + "/fourinferior":"\u2084", + "/fourmonospace":"\uFF14", + "/fournumeratorbengali":"\u09F7", + "/fouroldstyle":"\uF734", + "/fourparen":"\u2477", + "/fourperiod":"\u248B", + "/fourpersian":"\u06F4", + "/fourroman":"\u2173", + "/foursuperior":"\u2074", + "/fourteencircle":"\u246D", + "/fourteenparen":"\u2481", + "/fourteenperiod":"\u2495", + "/fourthai":"\u0E54", + "/fourthtonechinese":"\u02CB", + "/fparen":"\u24A1", + "/fraction":"\u2044", + "/franc":"\u20A3", + "/g":"\u0067", + "/gabengali":"\u0997", + "/gacute":"\u01F5", + "/gadeva":"\u0917", + "/gafarabic":"\u06AF", + "/gaffinalarabic":"\uFB93", + "/gafinitialarabic":"\uFB94", + "/gafmedialarabic":"\uFB95", + "/gagujarati":"\u0A97", + "/gagurmukhi":"\u0A17", + "/gahiragana":"\u304C", + "/gakatakana":"\u30AC", + "/gamma":"\u03B3", + "/gammalatinsmall":"\u0263", + "/gammasuperior":"\u02E0", + "/gangiacoptic":"\u03EB", + "/gbopomofo":"\u310D", + "/gbreve":"\u011F", + "/gcaron":"\u01E7", + "/gcedilla":"\u0123", + "/gcircle":"\u24D6", + "/gcircumflex":"\u011D", + "/gcommaaccent":"\u0123", + "/gdot":"\u0121", + "/gdotaccent":"\u0121", + "/gecyrillic":"\u0433", + "/gehiragana":"\u3052", + "/gekatakana":"\u30B2", + "/geometricallyequal":"\u2251", + "/gereshaccenthebrew":"\u059C", + "/gereshhebrew":"\u05F3", + "/gereshmuqdamhebrew":"\u059D", + "/germandbls":"\u00DF", + "/gershayimaccenthebrew":"\u059E", + "/gershayimhebrew":"\u05F4", + "/getamark":"\u3013", + "/ghabengali":"\u0998", + "/ghadarmenian":"\u0572", + "/ghadeva":"\u0918", + "/ghagujarati":"\u0A98", + "/ghagurmukhi":"\u0A18", + "/ghainarabic":"\u063A", + "/ghainfinalarabic":"\uFECE", + "/ghaininitialarabic":"\uFECF", + "/ghainmedialarabic":"\uFED0", + "/ghemiddlehookcyrillic":"\u0495", + "/ghestrokecyrillic":"\u0493", + "/gheupturncyrillic":"\u0491", + "/ghhadeva":"\u095A", + "/ghhagurmukhi":"\u0A5A", + "/ghook":"\u0260", + "/ghzsquare":"\u3393", + "/gihiragana":"\u304E", + "/gikatakana":"\u30AE", + "/gimarmenian":"\u0563", + "/gimel":"\u05D2", + "/gimeldagesh":"\uFB32", + "/gimeldageshhebrew":"\uFB32", + "/gimelhebrew":"\u05D2", + "/gjecyrillic":"\u0453", + "/glottalinvertedstroke":"\u01BE", + "/glottalstop":"\u0294", + "/glottalstopinverted":"\u0296", + "/glottalstopmod":"\u02C0", + "/glottalstopreversed":"\u0295", + "/glottalstopreversedmod":"\u02C1", + "/glottalstopreversedsuperior":"\u02E4", + "/glottalstopstroke":"\u02A1", + "/glottalstopstrokereversed":"\u02A2", + "/gmacron":"\u1E21", + "/gmonospace":"\uFF47", + "/gohiragana":"\u3054", + "/gokatakana":"\u30B4", + "/gparen":"\u24A2", + "/gpasquare":"\u33AC", + "/gradient":"\u2207", + "/grave":"\u0060", + "/gravebelowcmb":"\u0316", + "/gravecmb":"\u0300", + "/gravecomb":"\u0300", + "/gravedeva":"\u0953", + "/gravelowmod":"\u02CE", + "/gravemonospace":"\uFF40", + "/gravetonecmb":"\u0340", + "/greater":"\u003E", + "/greaterequal":"\u2265", + "/greaterequalorless":"\u22DB", + "/greatermonospace":"\uFF1E", + "/greaterorequivalent":"\u2273", + "/greaterorless":"\u2277", + "/greateroverequal":"\u2267", + "/greatersmall":"\uFE65", + "/gscript":"\u0261", + "/gstroke":"\u01E5", + "/guhiragana":"\u3050", + "/guillemotleft":"\u00AB", + "/guillemotright":"\u00BB", + "/guilsinglleft":"\u2039", + "/guilsinglright":"\u203A", + "/gukatakana":"\u30B0", + "/guramusquare":"\u3318", + "/gysquare":"\u33C9", + "/h":"\u0068", + "/haabkhasiancyrillic":"\u04A9", + "/haaltonearabic":"\u06C1", + "/habengali":"\u09B9", + "/hadescendercyrillic":"\u04B3", + "/hadeva":"\u0939", + "/hagujarati":"\u0AB9", + "/hagurmukhi":"\u0A39", + "/haharabic":"\u062D", + "/hahfinalarabic":"\uFEA2", + "/hahinitialarabic":"\uFEA3", + "/hahiragana":"\u306F", + "/hahmedialarabic":"\uFEA4", + "/haitusquare":"\u332A", + "/hakatakana":"\u30CF", + "/hakatakanahalfwidth":"\uFF8A", + "/halantgurmukhi":"\u0A4D", + "/hamzaarabic":"\u0621", + "/hamzadammaarabic":"\u0621 064F", + "/hamzadammatanarabic":"\u0621 064C", + "/hamzafathaarabic":"\u0621 064E", + "/hamzafathatanarabic":"\u0621 064B", + "/hamzalowarabic":"\u0621", + "/hamzalowkasraarabic":"\u0621 0650", + "/hamzalowkasratanarabic":"\u0621 064D", + "/hamzasukunarabic":"\u0621 0652", + "/hangulfiller":"\u3164", + "/hardsigncyrillic":"\u044A", + "/harpoonleftbarbup":"\u21BC", + "/harpoonrightbarbup":"\u21C0", + "/hasquare":"\u33CA", + "/hatafpatah":"\u05B2", + "/hatafpatah16":"\u05B2", + "/hatafpatah23":"\u05B2", + "/hatafpatah2f":"\u05B2", + "/hatafpatahhebrew":"\u05B2", + "/hatafpatahnarrowhebrew":"\u05B2", + "/hatafpatahquarterhebrew":"\u05B2", + "/hatafpatahwidehebrew":"\u05B2", + "/hatafqamats":"\u05B3", + "/hatafqamats1b":"\u05B3", + "/hatafqamats28":"\u05B3", + "/hatafqamats34":"\u05B3", + "/hatafqamatshebrew":"\u05B3", + "/hatafqamatsnarrowhebrew":"\u05B3", + "/hatafqamatsquarterhebrew":"\u05B3", + "/hatafqamatswidehebrew":"\u05B3", + "/hatafsegol":"\u05B1", + "/hatafsegol17":"\u05B1", + "/hatafsegol24":"\u05B1", + "/hatafsegol30":"\u05B1", + "/hatafsegolhebrew":"\u05B1", + "/hatafsegolnarrowhebrew":"\u05B1", + "/hatafsegolquarterhebrew":"\u05B1", + "/hatafsegolwidehebrew":"\u05B1", + "/hbar":"\u0127", + "/hbopomofo":"\u310F", + "/hbrevebelow":"\u1E2B", + "/hcedilla":"\u1E29", + "/hcircle":"\u24D7", + "/hcircumflex":"\u0125", + "/hdieresis":"\u1E27", + "/hdotaccent":"\u1E23", + "/hdotbelow":"\u1E25", + "/he":"\u05D4", + "/heart":"\u2665", + "/heartsuitblack":"\u2665", + "/heartsuitwhite":"\u2661", + "/hedagesh":"\uFB34", + "/hedageshhebrew":"\uFB34", + "/hehaltonearabic":"\u06C1", + "/heharabic":"\u0647", + "/hehebrew":"\u05D4", + "/hehfinalaltonearabic":"\uFBA7", + "/hehfinalalttwoarabic":"\uFEEA", + "/hehfinalarabic":"\uFEEA", + "/hehhamzaabovefinalarabic":"\uFBA5", + "/hehhamzaaboveisolatedarabic":"\uFBA4", + "/hehinitialaltonearabic":"\uFBA8", + "/hehinitialarabic":"\uFEEB", + "/hehiragana":"\u3078", + "/hehmedialaltonearabic":"\uFBA9", + "/hehmedialarabic":"\uFEEC", + "/heiseierasquare":"\u337B", + "/hekatakana":"\u30D8", + "/hekatakanahalfwidth":"\uFF8D", + "/hekutaarusquare":"\u3336", + "/henghook":"\u0267", + "/herutusquare":"\u3339", + "/het":"\u05D7", + "/hethebrew":"\u05D7", + "/hhook":"\u0266", + "/hhooksuperior":"\u02B1", + "/hieuhacirclekorean":"\u327B", + "/hieuhaparenkorean":"\u321B", + "/hieuhcirclekorean":"\u326D", + "/hieuhkorean":"\u314E", + "/hieuhparenkorean":"\u320D", + "/hihiragana":"\u3072", + "/hikatakana":"\u30D2", + "/hikatakanahalfwidth":"\uFF8B", + "/hiriq":"\u05B4", + "/hiriq14":"\u05B4", + "/hiriq21":"\u05B4", + "/hiriq2d":"\u05B4", + "/hiriqhebrew":"\u05B4", + "/hiriqnarrowhebrew":"\u05B4", + "/hiriqquarterhebrew":"\u05B4", + "/hiriqwidehebrew":"\u05B4", + "/hlinebelow":"\u1E96", + "/hmonospace":"\uFF48", + "/hoarmenian":"\u0570", + "/hohipthai":"\u0E2B", + "/hohiragana":"\u307B", + "/hokatakana":"\u30DB", + "/hokatakanahalfwidth":"\uFF8E", + "/holam":"\u05B9", + "/holam19":"\u05B9", + "/holam26":"\u05B9", + "/holam32":"\u05B9", + "/holamhebrew":"\u05B9", + "/holamnarrowhebrew":"\u05B9", + "/holamquarterhebrew":"\u05B9", + "/holamwidehebrew":"\u05B9", + "/honokhukthai":"\u0E2E", + "/hookabovecomb":"\u0309", + "/hookcmb":"\u0309", + "/hookpalatalizedbelowcmb":"\u0321", + "/hookretroflexbelowcmb":"\u0322", + "/hoonsquare":"\u3342", + "/horicoptic":"\u03E9", + "/horizontalbar":"\u2015", + "/horncmb":"\u031B", + "/hotsprings":"\u2668", + "/house":"\u2302", + "/hparen":"\u24A3", + "/hsuperior":"\u02B0", + "/hturned":"\u0265", + "/huhiragana":"\u3075", + "/huiitosquare":"\u3333", + "/hukatakana":"\u30D5", + "/hukatakanahalfwidth":"\uFF8C", + "/hungarumlaut":"\u02DD", + "/hungarumlautcmb":"\u030B", + "/hv":"\u0195", + "/hyphen":"\u002D", + "/hypheninferior":"\uF6E5", + "/hyphenmonospace":"\uFF0D", + "/hyphensmall":"\uFE63", + "/hyphensuperior":"\uF6E6", + "/hyphentwo":"\u2010", + "/i":"\u0069", + "/iacute":"\u00ED", + "/iacyrillic":"\u044F", + "/ibengali":"\u0987", + "/ibopomofo":"\u3127", + "/ibreve":"\u012D", + "/icaron":"\u01D0", + "/icircle":"\u24D8", + "/icircumflex":"\u00EE", + "/icyrillic":"\u0456", + "/idblgrave":"\u0209", + "/ideographearthcircle":"\u328F", + "/ideographfirecircle":"\u328B", + "/ideographicallianceparen":"\u323F", + "/ideographiccallparen":"\u323A", + "/ideographiccentrecircle":"\u32A5", + "/ideographicclose":"\u3006", + "/ideographiccomma":"\u3001", + "/ideographiccommaleft":"\uFF64", + "/ideographiccongratulationparen":"\u3237", + "/ideographiccorrectcircle":"\u32A3", + "/ideographicearthparen":"\u322F", + "/ideographicenterpriseparen":"\u323D", + "/ideographicexcellentcircle":"\u329D", + "/ideographicfestivalparen":"\u3240", + "/ideographicfinancialcircle":"\u3296", + "/ideographicfinancialparen":"\u3236", + "/ideographicfireparen":"\u322B", + "/ideographichaveparen":"\u3232", + "/ideographichighcircle":"\u32A4", + "/ideographiciterationmark":"\u3005", + "/ideographiclaborcircle":"\u3298", + "/ideographiclaborparen":"\u3238", + "/ideographicleftcircle":"\u32A7", + "/ideographiclowcircle":"\u32A6", + "/ideographicmedicinecircle":"\u32A9", + "/ideographicmetalparen":"\u322E", + "/ideographicmoonparen":"\u322A", + "/ideographicnameparen":"\u3234", + "/ideographicperiod":"\u3002", + "/ideographicprintcircle":"\u329E", + "/ideographicreachparen":"\u3243", + "/ideographicrepresentparen":"\u3239", + "/ideographicresourceparen":"\u323E", + "/ideographicrightcircle":"\u32A8", + "/ideographicsecretcircle":"\u3299", + "/ideographicselfparen":"\u3242", + "/ideographicsocietyparen":"\u3233", + "/ideographicspace":"\u3000", + "/ideographicspecialparen":"\u3235", + "/ideographicstockparen":"\u3231", + "/ideographicstudyparen":"\u323B", + "/ideographicsunparen":"\u3230", + "/ideographicsuperviseparen":"\u323C", + "/ideographicwaterparen":"\u322C", + "/ideographicwoodparen":"\u322D", + "/ideographiczero":"\u3007", + "/ideographmetalcircle":"\u328E", + "/ideographmooncircle":"\u328A", + "/ideographnamecircle":"\u3294", + "/ideographsuncircle":"\u3290", + "/ideographwatercircle":"\u328C", + "/ideographwoodcircle":"\u328D", + "/ideva":"\u0907", + "/idieresis":"\u00EF", + "/idieresisacute":"\u1E2F", + "/idieresiscyrillic":"\u04E5", + "/idotbelow":"\u1ECB", + "/iebrevecyrillic":"\u04D7", + "/iecyrillic":"\u0435", + "/ieungacirclekorean":"\u3275", + "/ieungaparenkorean":"\u3215", + "/ieungcirclekorean":"\u3267", + "/ieungkorean":"\u3147", + "/ieungparenkorean":"\u3207", + "/igrave":"\u00EC", + "/igujarati":"\u0A87", + "/igurmukhi":"\u0A07", + "/ihiragana":"\u3044", + "/ihookabove":"\u1EC9", + "/iibengali":"\u0988", + "/iicyrillic":"\u0438", + "/iideva":"\u0908", + "/iigujarati":"\u0A88", + "/iigurmukhi":"\u0A08", + "/iimatragurmukhi":"\u0A40", + "/iinvertedbreve":"\u020B", + "/iishortcyrillic":"\u0439", + "/iivowelsignbengali":"\u09C0", + "/iivowelsigndeva":"\u0940", + "/iivowelsigngujarati":"\u0AC0", + "/ij":"\u0133", + "/ikatakana":"\u30A4", + "/ikatakanahalfwidth":"\uFF72", + "/ikorean":"\u3163", + "/ilde":"\u02DC", + "/iluyhebrew":"\u05AC", + "/imacron":"\u012B", + "/imacroncyrillic":"\u04E3", + "/imageorapproximatelyequal":"\u2253", + "/imatragurmukhi":"\u0A3F", + "/imonospace":"\uFF49", + "/increment":"\u2206", + "/infinity":"\u221E", + "/iniarmenian":"\u056B", + "/integral":"\u222B", + "/integralbottom":"\u2321", + "/integralbt":"\u2321", + "/integralex":"\uF8F5", + "/integraltop":"\u2320", + "/integraltp":"\u2320", + "/intersection":"\u2229", + "/intisquare":"\u3305", + "/invbullet":"\u25D8", + "/invcircle":"\u25D9", + "/invsmileface":"\u263B", + "/iocyrillic":"\u0451", + "/iogonek":"\u012F", + "/iota":"\u03B9", + "/iotadieresis":"\u03CA", + "/iotadieresistonos":"\u0390", + "/iotalatin":"\u0269", + "/iotatonos":"\u03AF", + "/iparen":"\u24A4", + "/irigurmukhi":"\u0A72", + "/ismallhiragana":"\u3043", + "/ismallkatakana":"\u30A3", + "/ismallkatakanahalfwidth":"\uFF68", + "/issharbengali":"\u09FA", + "/istroke":"\u0268", + "/isuperior":"\uF6ED", + "/iterationhiragana":"\u309D", + "/iterationkatakana":"\u30FD", + "/itilde":"\u0129", + "/itildebelow":"\u1E2D", + "/iubopomofo":"\u3129", + "/iucyrillic":"\u044E", + "/ivowelsignbengali":"\u09BF", + "/ivowelsigndeva":"\u093F", + "/ivowelsigngujarati":"\u0ABF", + "/izhitsacyrillic":"\u0475", + "/izhitsadblgravecyrillic":"\u0477", + "/j":"\u006A", + "/jaarmenian":"\u0571", + "/jabengali":"\u099C", + "/jadeva":"\u091C", + "/jagujarati":"\u0A9C", + "/jagurmukhi":"\u0A1C", + "/jbopomofo":"\u3110", + "/jcaron":"\u01F0", + "/jcircle":"\u24D9", + "/jcircumflex":"\u0135", + "/jcrossedtail":"\u029D", + "/jdotlessstroke":"\u025F", + "/jecyrillic":"\u0458", + "/jeemarabic":"\u062C", + "/jeemfinalarabic":"\uFE9E", + "/jeeminitialarabic":"\uFE9F", + "/jeemmedialarabic":"\uFEA0", + "/jeharabic":"\u0698", + "/jehfinalarabic":"\uFB8B", + "/jhabengali":"\u099D", + "/jhadeva":"\u091D", + "/jhagujarati":"\u0A9D", + "/jhagurmukhi":"\u0A1D", + "/jheharmenian":"\u057B", + "/jis":"\u3004", + "/jmonospace":"\uFF4A", + "/jparen":"\u24A5", + "/jsuperior":"\u02B2", + "/k":"\u006B", + "/kabashkircyrillic":"\u04A1", + "/kabengali":"\u0995", + "/kacute":"\u1E31", + "/kacyrillic":"\u043A", + "/kadescendercyrillic":"\u049B", + "/kadeva":"\u0915", + "/kaf":"\u05DB", + "/kafarabic":"\u0643", + "/kafdagesh":"\uFB3B", + "/kafdageshhebrew":"\uFB3B", + "/kaffinalarabic":"\uFEDA", + "/kafhebrew":"\u05DB", + "/kafinitialarabic":"\uFEDB", + "/kafmedialarabic":"\uFEDC", + "/kafrafehebrew":"\uFB4D", + "/kagujarati":"\u0A95", + "/kagurmukhi":"\u0A15", + "/kahiragana":"\u304B", + "/kahookcyrillic":"\u04C4", + "/kakatakana":"\u30AB", + "/kakatakanahalfwidth":"\uFF76", + "/kappa":"\u03BA", + "/kappasymbolgreek":"\u03F0", + "/kapyeounmieumkorean":"\u3171", + "/kapyeounphieuphkorean":"\u3184", + "/kapyeounpieupkorean":"\u3178", + "/kapyeounssangpieupkorean":"\u3179", + "/karoriisquare":"\u330D", + "/kashidaautoarabic":"\u0640", + "/kashidaautonosidebearingarabic":"\u0640", + "/kasmallkatakana":"\u30F5", + "/kasquare":"\u3384", + "/kasraarabic":"\u0650", + "/kasratanarabic":"\u064D", + "/kastrokecyrillic":"\u049F", + "/katahiraprolongmarkhalfwidth":"\uFF70", + "/kaverticalstrokecyrillic":"\u049D", + "/kbopomofo":"\u310E", + "/kcalsquare":"\u3389", + "/kcaron":"\u01E9", + "/kcedilla":"\u0137", + "/kcircle":"\u24DA", + "/kcommaaccent":"\u0137", + "/kdotbelow":"\u1E33", + "/keharmenian":"\u0584", + "/kehiragana":"\u3051", + "/kekatakana":"\u30B1", + "/kekatakanahalfwidth":"\uFF79", + "/kenarmenian":"\u056F", + "/kesmallkatakana":"\u30F6", + "/kgreenlandic":"\u0138", + "/khabengali":"\u0996", + "/khacyrillic":"\u0445", + "/khadeva":"\u0916", + "/khagujarati":"\u0A96", + "/khagurmukhi":"\u0A16", + "/khaharabic":"\u062E", + "/khahfinalarabic":"\uFEA6", + "/khahinitialarabic":"\uFEA7", + "/khahmedialarabic":"\uFEA8", + "/kheicoptic":"\u03E7", + "/khhadeva":"\u0959", + "/khhagurmukhi":"\u0A59", + "/khieukhacirclekorean":"\u3278", + "/khieukhaparenkorean":"\u3218", + "/khieukhcirclekorean":"\u326A", + "/khieukhkorean":"\u314B", + "/khieukhparenkorean":"\u320A", + "/khokhaithai":"\u0E02", + "/khokhonthai":"\u0E05", + "/khokhuatthai":"\u0E03", + "/khokhwaithai":"\u0E04", + "/khomutthai":"\u0E5B", + "/khook":"\u0199", + "/khorakhangthai":"\u0E06", + "/khzsquare":"\u3391", + "/kihiragana":"\u304D", + "/kikatakana":"\u30AD", + "/kikatakanahalfwidth":"\uFF77", + "/kiroguramusquare":"\u3315", + "/kiromeetorusquare":"\u3316", + "/kirosquare":"\u3314", + "/kiyeokacirclekorean":"\u326E", + "/kiyeokaparenkorean":"\u320E", + "/kiyeokcirclekorean":"\u3260", + "/kiyeokkorean":"\u3131", + "/kiyeokparenkorean":"\u3200", + "/kiyeoksioskorean":"\u3133", + "/kjecyrillic":"\u045C", + "/klinebelow":"\u1E35", + "/klsquare":"\u3398", + "/kmcubedsquare":"\u33A6", + "/kmonospace":"\uFF4B", + "/kmsquaredsquare":"\u33A2", + "/kohiragana":"\u3053", + "/kohmsquare":"\u33C0", + "/kokaithai":"\u0E01", + "/kokatakana":"\u30B3", + "/kokatakanahalfwidth":"\uFF7A", + "/kooposquare":"\u331E", + "/koppacyrillic":"\u0481", + "/koreanstandardsymbol":"\u327F", + "/koroniscmb":"\u0343", + "/kparen":"\u24A6", + "/kpasquare":"\u33AA", + "/ksicyrillic":"\u046F", + "/ktsquare":"\u33CF", + "/kturned":"\u029E", + "/kuhiragana":"\u304F", + "/kukatakana":"\u30AF", + "/kukatakanahalfwidth":"\uFF78", + "/kvsquare":"\u33B8", + "/kwsquare":"\u33BE", + "/l":"\u006C", + "/labengali":"\u09B2", + "/lacute":"\u013A", + "/ladeva":"\u0932", + "/lagujarati":"\u0AB2", + "/lagurmukhi":"\u0A32", + "/lakkhangyaothai":"\u0E45", + "/lamaleffinalarabic":"\uFEFC", + "/lamalefhamzaabovefinalarabic":"\uFEF8", + "/lamalefhamzaaboveisolatedarabic":"\uFEF7", + "/lamalefhamzabelowfinalarabic":"\uFEFA", + "/lamalefhamzabelowisolatedarabic":"\uFEF9", + "/lamalefisolatedarabic":"\uFEFB", + "/lamalefmaddaabovefinalarabic":"\uFEF6", + "/lamalefmaddaaboveisolatedarabic":"\uFEF5", + "/lamarabic":"\u0644", + "/lambda":"\u03BB", + "/lambdastroke":"\u019B", + "/lamed":"\u05DC", + "/lameddagesh":"\uFB3C", + "/lameddageshhebrew":"\uFB3C", + "/lamedhebrew":"\u05DC", + "/lamedholam":"\u05DC 05B9", + "/lamedholamdagesh":"\u05DC 05B9 05BC", + "/lamedholamdageshhebrew":"\u05DC 05B9 05BC", + "/lamedholamhebrew":"\u05DC 05B9", + "/lamfinalarabic":"\uFEDE", + "/lamhahinitialarabic":"\uFCCA", + "/laminitialarabic":"\uFEDF", + "/lamjeeminitialarabic":"\uFCC9", + "/lamkhahinitialarabic":"\uFCCB", + "/lamlamhehisolatedarabic":"\uFDF2", + "/lammedialarabic":"\uFEE0", + "/lammeemhahinitialarabic":"\uFD88", + "/lammeeminitialarabic":"\uFCCC", + "/lammeemjeeminitialarabic":"\uFEDF FEE4 FEA0", + "/lammeemkhahinitialarabic":"\uFEDF FEE4 FEA8", + "/largecircle":"\u25EF", + "/lbar":"\u019A", + "/lbelt":"\u026C", + "/lbopomofo":"\u310C", + "/lcaron":"\u013E", + "/lcedilla":"\u013C", + "/lcircle":"\u24DB", + "/lcircumflexbelow":"\u1E3D", + "/lcommaaccent":"\u013C", + "/ldot":"\u0140", + "/ldotaccent":"\u0140", + "/ldotbelow":"\u1E37", + "/ldotbelowmacron":"\u1E39", + "/leftangleabovecmb":"\u031A", + "/lefttackbelowcmb":"\u0318", + "/less":"\u003C", + "/lessequal":"\u2264", + "/lessequalorgreater":"\u22DA", + "/lessmonospace":"\uFF1C", + "/lessorequivalent":"\u2272", + "/lessorgreater":"\u2276", + "/lessoverequal":"\u2266", + "/lesssmall":"\uFE64", + "/lezh":"\u026E", + "/lfblock":"\u258C", + "/lhookretroflex":"\u026D", + "/lira":"\u20A4", + "/liwnarmenian":"\u056C", + "/lj":"\u01C9", + "/ljecyrillic":"\u0459", + "/ll":"\uF6C0", + "/lladeva":"\u0933", + "/llagujarati":"\u0AB3", + "/llinebelow":"\u1E3B", + "/llladeva":"\u0934", + "/llvocalicbengali":"\u09E1", + "/llvocalicdeva":"\u0961", + "/llvocalicvowelsignbengali":"\u09E3", + "/llvocalicvowelsigndeva":"\u0963", + "/lmiddletilde":"\u026B", + "/lmonospace":"\uFF4C", + "/lmsquare":"\u33D0", + "/lochulathai":"\u0E2C", + "/logicaland":"\u2227", + "/logicalnot":"\u00AC", + "/logicalnotreversed":"\u2310", + "/logicalor":"\u2228", + "/lolingthai":"\u0E25", + "/longs":"\u017F", + "/lowlinecenterline":"\uFE4E", + "/lowlinecmb":"\u0332", + "/lowlinedashed":"\uFE4D", + "/lozenge":"\u25CA", + "/lparen":"\u24A7", + "/lslash":"\u0142", + "/lsquare":"\u2113", + "/lsuperior":"\uF6EE", + "/ltshade":"\u2591", + "/luthai":"\u0E26", + "/lvocalicbengali":"\u098C", + "/lvocalicdeva":"\u090C", + "/lvocalicvowelsignbengali":"\u09E2", + "/lvocalicvowelsigndeva":"\u0962", + "/lxsquare":"\u33D3", + "/m":"\u006D", + "/mabengali":"\u09AE", + "/macron":"\u00AF", + "/macronbelowcmb":"\u0331", + "/macroncmb":"\u0304", + "/macronlowmod":"\u02CD", + "/macronmonospace":"\uFFE3", + "/macute":"\u1E3F", + "/madeva":"\u092E", + "/magujarati":"\u0AAE", + "/magurmukhi":"\u0A2E", + "/mahapakhhebrew":"\u05A4", + "/mahapakhlefthebrew":"\u05A4", + "/mahiragana":"\u307E", + "/maichattawalowleftthai":"\uF895", + "/maichattawalowrightthai":"\uF894", + "/maichattawathai":"\u0E4B", + "/maichattawaupperleftthai":"\uF893", + "/maieklowleftthai":"\uF88C", + "/maieklowrightthai":"\uF88B", + "/maiekthai":"\u0E48", + "/maiekupperleftthai":"\uF88A", + "/maihanakatleftthai":"\uF884", + "/maihanakatthai":"\u0E31", + "/maitaikhuleftthai":"\uF889", + "/maitaikhuthai":"\u0E47", + "/maitholowleftthai":"\uF88F", + "/maitholowrightthai":"\uF88E", + "/maithothai":"\u0E49", + "/maithoupperleftthai":"\uF88D", + "/maitrilowleftthai":"\uF892", + "/maitrilowrightthai":"\uF891", + "/maitrithai":"\u0E4A", + "/maitriupperleftthai":"\uF890", + "/maiyamokthai":"\u0E46", + "/makatakana":"\u30DE", + "/makatakanahalfwidth":"\uFF8F", + "/male":"\u2642", + "/mansyonsquare":"\u3347", + "/maqafhebrew":"\u05BE", + "/mars":"\u2642", + "/masoracirclehebrew":"\u05AF", + "/masquare":"\u3383", + "/mbopomofo":"\u3107", + "/mbsquare":"\u33D4", + "/mcircle":"\u24DC", + "/mcubedsquare":"\u33A5", + "/mdotaccent":"\u1E41", + "/mdotbelow":"\u1E43", + "/meemarabic":"\u0645", + "/meemfinalarabic":"\uFEE2", + "/meeminitialarabic":"\uFEE3", + "/meemmedialarabic":"\uFEE4", + "/meemmeeminitialarabic":"\uFCD1", + "/meemmeemisolatedarabic":"\uFC48", + "/meetorusquare":"\u334D", + "/mehiragana":"\u3081", + "/meizierasquare":"\u337E", + "/mekatakana":"\u30E1", + "/mekatakanahalfwidth":"\uFF92", + "/mem":"\u05DE", + "/memdagesh":"\uFB3E", + "/memdageshhebrew":"\uFB3E", + "/memhebrew":"\u05DE", + "/menarmenian":"\u0574", + "/merkhahebrew":"\u05A5", + "/merkhakefulahebrew":"\u05A6", + "/merkhakefulalefthebrew":"\u05A6", + "/merkhalefthebrew":"\u05A5", + "/mhook":"\u0271", + "/mhzsquare":"\u3392", + "/middledotkatakanahalfwidth":"\uFF65", + "/middot":"\u00B7", + "/mieumacirclekorean":"\u3272", + "/mieumaparenkorean":"\u3212", + "/mieumcirclekorean":"\u3264", + "/mieumkorean":"\u3141", + "/mieumpansioskorean":"\u3170", + "/mieumparenkorean":"\u3204", + "/mieumpieupkorean":"\u316E", + "/mieumsioskorean":"\u316F", + "/mihiragana":"\u307F", + "/mikatakana":"\u30DF", + "/mikatakanahalfwidth":"\uFF90", + "/minus":"\u2212", + "/minusbelowcmb":"\u0320", + "/minuscircle":"\u2296", + "/minusmod":"\u02D7", + "/minusplus":"\u2213", + "/minute":"\u2032", + "/miribaarusquare":"\u334A", + "/mirisquare":"\u3349", + "/mlonglegturned":"\u0270", + "/mlsquare":"\u3396", + "/mmcubedsquare":"\u33A3", + "/mmonospace":"\uFF4D", + "/mmsquaredsquare":"\u339F", + "/mohiragana":"\u3082", + "/mohmsquare":"\u33C1", + "/mokatakana":"\u30E2", + "/mokatakanahalfwidth":"\uFF93", + "/molsquare":"\u33D6", + "/momathai":"\u0E21", + "/moverssquare":"\u33A7", + "/moverssquaredsquare":"\u33A8", + "/mparen":"\u24A8", + "/mpasquare":"\u33AB", + "/mssquare":"\u33B3", + "/msuperior":"\uF6EF", + "/mturned":"\u026F", + "/mu":"\u00B5", + "/mu1":"\u00B5", + "/muasquare":"\u3382", + "/muchgreater":"\u226B", + "/muchless":"\u226A", + "/mufsquare":"\u338C", + "/mugreek":"\u03BC", + "/mugsquare":"\u338D", + "/muhiragana":"\u3080", + "/mukatakana":"\u30E0", + "/mukatakanahalfwidth":"\uFF91", + "/mulsquare":"\u3395", + "/multiply":"\u00D7", + "/mumsquare":"\u339B", + "/munahhebrew":"\u05A3", + "/munahlefthebrew":"\u05A3", + "/musicalnote":"\u266A", + "/musicalnotedbl":"\u266B", + "/musicflatsign":"\u266D", + "/musicsharpsign":"\u266F", + "/mussquare":"\u33B2", + "/muvsquare":"\u33B6", + "/muwsquare":"\u33BC", + "/mvmegasquare":"\u33B9", + "/mvsquare":"\u33B7", + "/mwmegasquare":"\u33BF", + "/mwsquare":"\u33BD", + "/n":"\u006E", + "/nabengali":"\u09A8", + "/nabla":"\u2207", + "/nacute":"\u0144", + "/nadeva":"\u0928", + "/nagujarati":"\u0AA8", + "/nagurmukhi":"\u0A28", + "/nahiragana":"\u306A", + "/nakatakana":"\u30CA", + "/nakatakanahalfwidth":"\uFF85", + "/napostrophe":"\u0149", + "/nasquare":"\u3381", + "/nbopomofo":"\u310B", + "/nbspace":"\u00A0", + "/ncaron":"\u0148", + "/ncedilla":"\u0146", + "/ncircle":"\u24DD", + "/ncircumflexbelow":"\u1E4B", + "/ncommaaccent":"\u0146", + "/ndotaccent":"\u1E45", + "/ndotbelow":"\u1E47", + "/nehiragana":"\u306D", + "/nekatakana":"\u30CD", + "/nekatakanahalfwidth":"\uFF88", + "/newsheqelsign":"\u20AA", + "/nfsquare":"\u338B", + "/ngabengali":"\u0999", + "/ngadeva":"\u0919", + "/ngagujarati":"\u0A99", + "/ngagurmukhi":"\u0A19", + "/ngonguthai":"\u0E07", + "/nhiragana":"\u3093", + "/nhookleft":"\u0272", + "/nhookretroflex":"\u0273", + "/nieunacirclekorean":"\u326F", + "/nieunaparenkorean":"\u320F", + "/nieuncieuckorean":"\u3135", + "/nieuncirclekorean":"\u3261", + "/nieunhieuhkorean":"\u3136", + "/nieunkorean":"\u3134", + "/nieunpansioskorean":"\u3168", + "/nieunparenkorean":"\u3201", + "/nieunsioskorean":"\u3167", + "/nieuntikeutkorean":"\u3166", + "/nihiragana":"\u306B", + "/nikatakana":"\u30CB", + "/nikatakanahalfwidth":"\uFF86", + "/nikhahitleftthai":"\uF899", + "/nikhahitthai":"\u0E4D", + "/nine":"\u0039", + "/ninearabic":"\u0669", + "/ninebengali":"\u09EF", + "/ninecircle":"\u2468", + "/ninecircleinversesansserif":"\u2792", + "/ninedeva":"\u096F", + "/ninegujarati":"\u0AEF", + "/ninegurmukhi":"\u0A6F", + "/ninehackarabic":"\u0669", + "/ninehangzhou":"\u3029", + "/nineideographicparen":"\u3228", + "/nineinferior":"\u2089", + "/ninemonospace":"\uFF19", + "/nineoldstyle":"\uF739", + "/nineparen":"\u247C", + "/nineperiod":"\u2490", + "/ninepersian":"\u06F9", + "/nineroman":"\u2178", + "/ninesuperior":"\u2079", + "/nineteencircle":"\u2472", + "/nineteenparen":"\u2486", + "/nineteenperiod":"\u249A", + "/ninethai":"\u0E59", + "/nj":"\u01CC", + "/njecyrillic":"\u045A", + "/nkatakana":"\u30F3", + "/nkatakanahalfwidth":"\uFF9D", + "/nlegrightlong":"\u019E", + "/nlinebelow":"\u1E49", + "/nmonospace":"\uFF4E", + "/nmsquare":"\u339A", + "/nnabengali":"\u09A3", + "/nnadeva":"\u0923", + "/nnagujarati":"\u0AA3", + "/nnagurmukhi":"\u0A23", + "/nnnadeva":"\u0929", + "/nohiragana":"\u306E", + "/nokatakana":"\u30CE", + "/nokatakanahalfwidth":"\uFF89", + "/nonbreakingspace":"\u00A0", + "/nonenthai":"\u0E13", + "/nonuthai":"\u0E19", + "/noonarabic":"\u0646", + "/noonfinalarabic":"\uFEE6", + "/noonghunnaarabic":"\u06BA", + "/noonghunnafinalarabic":"\uFB9F", + "/noonhehinitialarabic":"\uFEE7 FEEC", + "/nooninitialarabic":"\uFEE7", + "/noonjeeminitialarabic":"\uFCD2", + "/noonjeemisolatedarabic":"\uFC4B", + "/noonmedialarabic":"\uFEE8", + "/noonmeeminitialarabic":"\uFCD5", + "/noonmeemisolatedarabic":"\uFC4E", + "/noonnoonfinalarabic":"\uFC8D", + "/notcontains":"\u220C", + "/notelement":"\u2209", + "/notelementof":"\u2209", + "/notequal":"\u2260", + "/notgreater":"\u226F", + "/notgreaternorequal":"\u2271", + "/notgreaternorless":"\u2279", + "/notidentical":"\u2262", + "/notless":"\u226E", + "/notlessnorequal":"\u2270", + "/notparallel":"\u2226", + "/notprecedes":"\u2280", + "/notsubset":"\u2284", + "/notsucceeds":"\u2281", + "/notsuperset":"\u2285", + "/nowarmenian":"\u0576", + "/nparen":"\u24A9", + "/nssquare":"\u33B1", + "/nsuperior":"\u207F", + "/ntilde":"\u00F1", + "/nu":"\u03BD", + "/nuhiragana":"\u306C", + "/nukatakana":"\u30CC", + "/nukatakanahalfwidth":"\uFF87", + "/nuktabengali":"\u09BC", + "/nuktadeva":"\u093C", + "/nuktagujarati":"\u0ABC", + "/nuktagurmukhi":"\u0A3C", + "/numbersign":"\u0023", + "/numbersignmonospace":"\uFF03", + "/numbersignsmall":"\uFE5F", + "/numeralsigngreek":"\u0374", + "/numeralsignlowergreek":"\u0375", + "/numero":"\u2116", + "/nun":"\u05E0", + "/nundagesh":"\uFB40", + "/nundageshhebrew":"\uFB40", + "/nunhebrew":"\u05E0", + "/nvsquare":"\u33B5", + "/nwsquare":"\u33BB", + "/nyabengali":"\u099E", + "/nyadeva":"\u091E", + "/nyagujarati":"\u0A9E", + "/nyagurmukhi":"\u0A1E", + "/o":"\u006F", + "/oacute":"\u00F3", + "/oangthai":"\u0E2D", + "/obarred":"\u0275", + "/obarredcyrillic":"\u04E9", + "/obarreddieresiscyrillic":"\u04EB", + "/obengali":"\u0993", + "/obopomofo":"\u311B", + "/obreve":"\u014F", + "/ocandradeva":"\u0911", + "/ocandragujarati":"\u0A91", + "/ocandravowelsigndeva":"\u0949", + "/ocandravowelsigngujarati":"\u0AC9", + "/ocaron":"\u01D2", + "/ocircle":"\u24DE", + "/ocircumflex":"\u00F4", + "/ocircumflexacute":"\u1ED1", + "/ocircumflexdotbelow":"\u1ED9", + "/ocircumflexgrave":"\u1ED3", + "/ocircumflexhookabove":"\u1ED5", + "/ocircumflextilde":"\u1ED7", + "/ocyrillic":"\u043E", + "/odblacute":"\u0151", + "/odblgrave":"\u020D", + "/odeva":"\u0913", + "/odieresis":"\u00F6", + "/odieresiscyrillic":"\u04E7", + "/odotbelow":"\u1ECD", + "/oe":"\u0153", + "/oekorean":"\u315A", + "/ogonek":"\u02DB", + "/ogonekcmb":"\u0328", + "/ograve":"\u00F2", + "/ogujarati":"\u0A93", + "/oharmenian":"\u0585", + "/ohiragana":"\u304A", + "/ohookabove":"\u1ECF", + "/ohorn":"\u01A1", + "/ohornacute":"\u1EDB", + "/ohorndotbelow":"\u1EE3", + "/ohorngrave":"\u1EDD", + "/ohornhookabove":"\u1EDF", + "/ohorntilde":"\u1EE1", + "/ohungarumlaut":"\u0151", + "/oi":"\u01A3", + "/oinvertedbreve":"\u020F", + "/okatakana":"\u30AA", + "/okatakanahalfwidth":"\uFF75", + "/okorean":"\u3157", + "/olehebrew":"\u05AB", + "/omacron":"\u014D", + "/omacronacute":"\u1E53", + "/omacrongrave":"\u1E51", + "/omdeva":"\u0950", + "/omega":"\u03C9", + "/omega1":"\u03D6", + "/omegacyrillic":"\u0461", + "/omegalatinclosed":"\u0277", + "/omegaroundcyrillic":"\u047B", + "/omegatitlocyrillic":"\u047D", + "/omegatonos":"\u03CE", + "/omgujarati":"\u0AD0", + "/omicron":"\u03BF", + "/omicrontonos":"\u03CC", + "/omonospace":"\uFF4F", + "/one":"\u0031", + "/onearabic":"\u0661", + "/onebengali":"\u09E7", + "/onecircle":"\u2460", + "/onecircleinversesansserif":"\u278A", + "/onedeva":"\u0967", + "/onedotenleader":"\u2024", + "/oneeighth":"\u215B", + "/onefitted":"\uF6DC", + "/onegujarati":"\u0AE7", + "/onegurmukhi":"\u0A67", + "/onehackarabic":"\u0661", + "/onehalf":"\u00BD", + "/onehangzhou":"\u3021", + "/oneideographicparen":"\u3220", + "/oneinferior":"\u2081", + "/onemonospace":"\uFF11", + "/onenumeratorbengali":"\u09F4", + "/oneoldstyle":"\uF731", + "/oneparen":"\u2474", + "/oneperiod":"\u2488", + "/onepersian":"\u06F1", + "/onequarter":"\u00BC", + "/oneroman":"\u2170", + "/onesuperior":"\u00B9", + "/onethai":"\u0E51", + "/onethird":"\u2153", + "/oogonek":"\u01EB", + "/oogonekmacron":"\u01ED", + "/oogurmukhi":"\u0A13", + "/oomatragurmukhi":"\u0A4B", + "/oopen":"\u0254", + "/oparen":"\u24AA", + "/openbullet":"\u25E6", + "/option":"\u2325", + "/ordfeminine":"\u00AA", + "/ordmasculine":"\u00BA", + "/orthogonal":"\u221F", + "/oshortdeva":"\u0912", + "/oshortvowelsigndeva":"\u094A", + "/oslash":"\u00F8", + "/oslashacute":"\u01FF", + "/osmallhiragana":"\u3049", + "/osmallkatakana":"\u30A9", + "/osmallkatakanahalfwidth":"\uFF6B", + "/ostrokeacute":"\u01FF", + "/osuperior":"\uF6F0", + "/otcyrillic":"\u047F", + "/otilde":"\u00F5", + "/otildeacute":"\u1E4D", + "/otildedieresis":"\u1E4F", + "/oubopomofo":"\u3121", + "/overline":"\u203E", + "/overlinecenterline":"\uFE4A", + "/overlinecmb":"\u0305", + "/overlinedashed":"\uFE49", + "/overlinedblwavy":"\uFE4C", + "/overlinewavy":"\uFE4B", + "/overscore":"\u00AF", + "/ovowelsignbengali":"\u09CB", + "/ovowelsigndeva":"\u094B", + "/ovowelsigngujarati":"\u0ACB", + "/p":"\u0070", + "/paampssquare":"\u3380", + "/paasentosquare":"\u332B", + "/pabengali":"\u09AA", + "/pacute":"\u1E55", + "/padeva":"\u092A", + "/pagedown":"\u21DF", + "/pageup":"\u21DE", + "/pagujarati":"\u0AAA", + "/pagurmukhi":"\u0A2A", + "/pahiragana":"\u3071", + "/paiyannoithai":"\u0E2F", + "/pakatakana":"\u30D1", + "/palatalizationcyrilliccmb":"\u0484", + "/palochkacyrillic":"\u04C0", + "/pansioskorean":"\u317F", + "/paragraph":"\u00B6", + "/parallel":"\u2225", + "/parenleft":"\u0028", + "/parenleftaltonearabic":"\uFD3E", + "/parenleftbt":"\uF8ED", + "/parenleftex":"\uF8EC", + "/parenleftinferior":"\u208D", + "/parenleftmonospace":"\uFF08", + "/parenleftsmall":"\uFE59", + "/parenleftsuperior":"\u207D", + "/parenlefttp":"\uF8EB", + "/parenleftvertical":"\uFE35", + "/parenright":"\u0029", + "/parenrightaltonearabic":"\uFD3F", + "/parenrightbt":"\uF8F8", + "/parenrightex":"\uF8F7", + "/parenrightinferior":"\u208E", + "/parenrightmonospace":"\uFF09", + "/parenrightsmall":"\uFE5A", + "/parenrightsuperior":"\u207E", + "/parenrighttp":"\uF8F6", + "/parenrightvertical":"\uFE36", + "/partialdiff":"\u2202", + "/paseqhebrew":"\u05C0", + "/pashtahebrew":"\u0599", + "/pasquare":"\u33A9", + "/patah":"\u05B7", + "/patah11":"\u05B7", + "/patah1d":"\u05B7", + "/patah2a":"\u05B7", + "/patahhebrew":"\u05B7", + "/patahnarrowhebrew":"\u05B7", + "/patahquarterhebrew":"\u05B7", + "/patahwidehebrew":"\u05B7", + "/pazerhebrew":"\u05A1", + "/pbopomofo":"\u3106", + "/pcircle":"\u24DF", + "/pdotaccent":"\u1E57", + "/pe":"\u05E4", + "/pecyrillic":"\u043F", + "/pedagesh":"\uFB44", + "/pedageshhebrew":"\uFB44", + "/peezisquare":"\u333B", + "/pefinaldageshhebrew":"\uFB43", + "/peharabic":"\u067E", + "/peharmenian":"\u057A", + "/pehebrew":"\u05E4", + "/pehfinalarabic":"\uFB57", + "/pehinitialarabic":"\uFB58", + "/pehiragana":"\u307A", + "/pehmedialarabic":"\uFB59", + "/pekatakana":"\u30DA", + "/pemiddlehookcyrillic":"\u04A7", + "/perafehebrew":"\uFB4E", + "/percent":"\u0025", + "/percentarabic":"\u066A", + "/percentmonospace":"\uFF05", + "/percentsmall":"\uFE6A", + "/period":"\u002E", + "/periodarmenian":"\u0589", + "/periodcentered":"\u00B7", + "/periodhalfwidth":"\uFF61", + "/periodinferior":"\uF6E7", + "/periodmonospace":"\uFF0E", + "/periodsmall":"\uFE52", + "/periodsuperior":"\uF6E8", + "/perispomenigreekcmb":"\u0342", + "/perpendicular":"\u22A5", + "/perthousand":"\u2030", + "/peseta":"\u20A7", + "/pfsquare":"\u338A", + "/phabengali":"\u09AB", + "/phadeva":"\u092B", + "/phagujarati":"\u0AAB", + "/phagurmukhi":"\u0A2B", + "/phi":"\u03C6", + "/phi1":"\u03D5", + "/phieuphacirclekorean":"\u327A", + "/phieuphaparenkorean":"\u321A", + "/phieuphcirclekorean":"\u326C", + "/phieuphkorean":"\u314D", + "/phieuphparenkorean":"\u320C", + "/philatin":"\u0278", + "/phinthuthai":"\u0E3A", + "/phisymbolgreek":"\u03D5", + "/phook":"\u01A5", + "/phophanthai":"\u0E1E", + "/phophungthai":"\u0E1C", + "/phosamphaothai":"\u0E20", + "/pi":"\u03C0", + "/pieupacirclekorean":"\u3273", + "/pieupaparenkorean":"\u3213", + "/pieupcieuckorean":"\u3176", + "/pieupcirclekorean":"\u3265", + "/pieupkiyeokkorean":"\u3172", + "/pieupkorean":"\u3142", + "/pieupparenkorean":"\u3205", + "/pieupsioskiyeokkorean":"\u3174", + "/pieupsioskorean":"\u3144", + "/pieupsiostikeutkorean":"\u3175", + "/pieupthieuthkorean":"\u3177", + "/pieuptikeutkorean":"\u3173", + "/pihiragana":"\u3074", + "/pikatakana":"\u30D4", + "/pisymbolgreek":"\u03D6", + "/piwrarmenian":"\u0583", + "/plus":"\u002B", + "/plusbelowcmb":"\u031F", + "/pluscircle":"\u2295", + "/plusminus":"\u00B1", + "/plusmod":"\u02D6", + "/plusmonospace":"\uFF0B", + "/plussmall":"\uFE62", + "/plussuperior":"\u207A", + "/pmonospace":"\uFF50", + "/pmsquare":"\u33D8", + "/pohiragana":"\u307D", + "/pointingindexdownwhite":"\u261F", + "/pointingindexleftwhite":"\u261C", + "/pointingindexrightwhite":"\u261E", + "/pointingindexupwhite":"\u261D", + "/pokatakana":"\u30DD", + "/poplathai":"\u0E1B", + "/postalmark":"\u3012", + "/postalmarkface":"\u3020", + "/pparen":"\u24AB", + "/precedes":"\u227A", + "/prescription":"\u211E", + "/primemod":"\u02B9", + "/primereversed":"\u2035", + "/product":"\u220F", + "/projective":"\u2305", + "/prolongedkana":"\u30FC", + "/propellor":"\u2318", + "/propersubset":"\u2282", + "/propersuperset":"\u2283", + "/proportion":"\u2237", + "/proportional":"\u221D", + "/psi":"\u03C8", + "/psicyrillic":"\u0471", + "/psilipneumatacyrilliccmb":"\u0486", + "/pssquare":"\u33B0", + "/puhiragana":"\u3077", + "/pukatakana":"\u30D7", + "/pvsquare":"\u33B4", + "/pwsquare":"\u33BA", + "/q":"\u0071", + "/qadeva":"\u0958", + "/qadmahebrew":"\u05A8", + "/qafarabic":"\u0642", + "/qaffinalarabic":"\uFED6", + "/qafinitialarabic":"\uFED7", + "/qafmedialarabic":"\uFED8", + "/qamats":"\u05B8", + "/qamats10":"\u05B8", + "/qamats1a":"\u05B8", + "/qamats1c":"\u05B8", + "/qamats27":"\u05B8", + "/qamats29":"\u05B8", + "/qamats33":"\u05B8", + "/qamatsde":"\u05B8", + "/qamatshebrew":"\u05B8", + "/qamatsnarrowhebrew":"\u05B8", + "/qamatsqatanhebrew":"\u05B8", + "/qamatsqatannarrowhebrew":"\u05B8", + "/qamatsqatanquarterhebrew":"\u05B8", + "/qamatsqatanwidehebrew":"\u05B8", + "/qamatsquarterhebrew":"\u05B8", + "/qamatswidehebrew":"\u05B8", + "/qarneyparahebrew":"\u059F", + "/qbopomofo":"\u3111", + "/qcircle":"\u24E0", + "/qhook":"\u02A0", + "/qmonospace":"\uFF51", + "/qof":"\u05E7", + "/qofdagesh":"\uFB47", + "/qofdageshhebrew":"\uFB47", + "/qofhatafpatah":"\u05E7 05B2", + "/qofhatafpatahhebrew":"\u05E7 05B2", + "/qofhatafsegol":"\u05E7 05B1", + "/qofhatafsegolhebrew":"\u05E7 05B1", + "/qofhebrew":"\u05E7", + "/qofhiriq":"\u05E7 05B4", + "/qofhiriqhebrew":"\u05E7 05B4", + "/qofholam":"\u05E7 05B9", + "/qofholamhebrew":"\u05E7 05B9", + "/qofpatah":"\u05E7 05B7", + "/qofpatahhebrew":"\u05E7 05B7", + "/qofqamats":"\u05E7 05B8", + "/qofqamatshebrew":"\u05E7 05B8", + "/qofqubuts":"\u05E7 05BB", + "/qofqubutshebrew":"\u05E7 05BB", + "/qofsegol":"\u05E7 05B6", + "/qofsegolhebrew":"\u05E7 05B6", + "/qofsheva":"\u05E7 05B0", + "/qofshevahebrew":"\u05E7 05B0", + "/qoftsere":"\u05E7 05B5", + "/qoftserehebrew":"\u05E7 05B5", + "/qparen":"\u24AC", + "/quarternote":"\u2669", + "/qubuts":"\u05BB", + "/qubuts18":"\u05BB", + "/qubuts25":"\u05BB", + "/qubuts31":"\u05BB", + "/qubutshebrew":"\u05BB", + "/qubutsnarrowhebrew":"\u05BB", + "/qubutsquarterhebrew":"\u05BB", + "/qubutswidehebrew":"\u05BB", + "/question":"\u003F", + "/questionarabic":"\u061F", + "/questionarmenian":"\u055E", + "/questiondown":"\u00BF", + "/questiondownsmall":"\uF7BF", + "/questiongreek":"\u037E", + "/questionmonospace":"\uFF1F", + "/questionsmall":"\uF73F", + "/quotedbl":"\u0022", + "/quotedblbase":"\u201E", + "/quotedblleft":"\u201C", + "/quotedblmonospace":"\uFF02", + "/quotedblprime":"\u301E", + "/quotedblprimereversed":"\u301D", + "/quotedblright":"\u201D", + "/quoteleft":"\u2018", + "/quoteleftreversed":"\u201B", + "/quotereversed":"\u201B", + "/quoteright":"\u2019", + "/quoterightn":"\u0149", + "/quotesinglbase":"\u201A", + "/quotesingle":"\u0027", + "/quotesinglemonospace":"\uFF07", + "/r":"\u0072", + "/raarmenian":"\u057C", + "/rabengali":"\u09B0", + "/racute":"\u0155", + "/radeva":"\u0930", + "/radical":"\u221A", + "/radicalex":"\uF8E5", + "/radoverssquare":"\u33AE", + "/radoverssquaredsquare":"\u33AF", + "/radsquare":"\u33AD", + "/rafe":"\u05BF", + "/rafehebrew":"\u05BF", + "/ragujarati":"\u0AB0", + "/ragurmukhi":"\u0A30", + "/rahiragana":"\u3089", + "/rakatakana":"\u30E9", + "/rakatakanahalfwidth":"\uFF97", + "/ralowerdiagonalbengali":"\u09F1", + "/ramiddlediagonalbengali":"\u09F0", + "/ramshorn":"\u0264", + "/ratio":"\u2236", + "/rbopomofo":"\u3116", + "/rcaron":"\u0159", + "/rcedilla":"\u0157", + "/rcircle":"\u24E1", + "/rcommaaccent":"\u0157", + "/rdblgrave":"\u0211", + "/rdotaccent":"\u1E59", + "/rdotbelow":"\u1E5B", + "/rdotbelowmacron":"\u1E5D", + "/referencemark":"\u203B", + "/reflexsubset":"\u2286", + "/reflexsuperset":"\u2287", + "/registered":"\u00AE", + "/registersans":"\uF8E8", + "/registerserif":"\uF6DA", + "/reharabic":"\u0631", + "/reharmenian":"\u0580", + "/rehfinalarabic":"\uFEAE", + "/rehiragana":"\u308C", + "/rehyehaleflamarabic":"\u0631 FEF3 FE8E 0644", + "/rekatakana":"\u30EC", + "/rekatakanahalfwidth":"\uFF9A", + "/resh":"\u05E8", + "/reshdageshhebrew":"\uFB48", + "/reshhatafpatah":"\u05E8 05B2", + "/reshhatafpatahhebrew":"\u05E8 05B2", + "/reshhatafsegol":"\u05E8 05B1", + "/reshhatafsegolhebrew":"\u05E8 05B1", + "/reshhebrew":"\u05E8", + "/reshhiriq":"\u05E8 05B4", + "/reshhiriqhebrew":"\u05E8 05B4", + "/reshholam":"\u05E8 05B9", + "/reshholamhebrew":"\u05E8 05B9", + "/reshpatah":"\u05E8 05B7", + "/reshpatahhebrew":"\u05E8 05B7", + "/reshqamats":"\u05E8 05B8", + "/reshqamatshebrew":"\u05E8 05B8", + "/reshqubuts":"\u05E8 05BB", + "/reshqubutshebrew":"\u05E8 05BB", + "/reshsegol":"\u05E8 05B6", + "/reshsegolhebrew":"\u05E8 05B6", + "/reshsheva":"\u05E8 05B0", + "/reshshevahebrew":"\u05E8 05B0", + "/reshtsere":"\u05E8 05B5", + "/reshtserehebrew":"\u05E8 05B5", + "/reversedtilde":"\u223D", + "/reviahebrew":"\u0597", + "/reviamugrashhebrew":"\u0597", + "/revlogicalnot":"\u2310", + "/rfishhook":"\u027E", + "/rfishhookreversed":"\u027F", + "/rhabengali":"\u09DD", + "/rhadeva":"\u095D", + "/rho":"\u03C1", + "/rhook":"\u027D", + "/rhookturned":"\u027B", + "/rhookturnedsuperior":"\u02B5", + "/rhosymbolgreek":"\u03F1", + "/rhotichookmod":"\u02DE", + "/rieulacirclekorean":"\u3271", + "/rieulaparenkorean":"\u3211", + "/rieulcirclekorean":"\u3263", + "/rieulhieuhkorean":"\u3140", + "/rieulkiyeokkorean":"\u313A", + "/rieulkiyeoksioskorean":"\u3169", + "/rieulkorean":"\u3139", + "/rieulmieumkorean":"\u313B", + "/rieulpansioskorean":"\u316C", + "/rieulparenkorean":"\u3203", + "/rieulphieuphkorean":"\u313F", + "/rieulpieupkorean":"\u313C", + "/rieulpieupsioskorean":"\u316B", + "/rieulsioskorean":"\u313D", + "/rieulthieuthkorean":"\u313E", + "/rieultikeutkorean":"\u316A", + "/rieulyeorinhieuhkorean":"\u316D", + "/rightangle":"\u221F", + "/righttackbelowcmb":"\u0319", + "/righttriangle":"\u22BF", + "/rihiragana":"\u308A", + "/rikatakana":"\u30EA", + "/rikatakanahalfwidth":"\uFF98", + "/ring":"\u02DA", + "/ringbelowcmb":"\u0325", + "/ringcmb":"\u030A", + "/ringhalfleft":"\u02BF", + "/ringhalfleftarmenian":"\u0559", + "/ringhalfleftbelowcmb":"\u031C", + "/ringhalfleftcentered":"\u02D3", + "/ringhalfright":"\u02BE", + "/ringhalfrightbelowcmb":"\u0339", + "/ringhalfrightcentered":"\u02D2", + "/rinvertedbreve":"\u0213", + "/rittorusquare":"\u3351", + "/rlinebelow":"\u1E5F", + "/rlongleg":"\u027C", + "/rlonglegturned":"\u027A", + "/rmonospace":"\uFF52", + "/rohiragana":"\u308D", + "/rokatakana":"\u30ED", + "/rokatakanahalfwidth":"\uFF9B", + "/roruathai":"\u0E23", + "/rparen":"\u24AD", + "/rrabengali":"\u09DC", + "/rradeva":"\u0931", + "/rragurmukhi":"\u0A5C", + "/rreharabic":"\u0691", + "/rrehfinalarabic":"\uFB8D", + "/rrvocalicbengali":"\u09E0", + "/rrvocalicdeva":"\u0960", + "/rrvocalicgujarati":"\u0AE0", + "/rrvocalicvowelsignbengali":"\u09C4", + "/rrvocalicvowelsigndeva":"\u0944", + "/rrvocalicvowelsigngujarati":"\u0AC4", + "/rsuperior":"\uF6F1", + "/rtblock":"\u2590", + "/rturned":"\u0279", + "/rturnedsuperior":"\u02B4", + "/ruhiragana":"\u308B", + "/rukatakana":"\u30EB", + "/rukatakanahalfwidth":"\uFF99", + "/rupeemarkbengali":"\u09F2", + "/rupeesignbengali":"\u09F3", + "/rupiah":"\uF6DD", + "/ruthai":"\u0E24", + "/rvocalicbengali":"\u098B", + "/rvocalicdeva":"\u090B", + "/rvocalicgujarati":"\u0A8B", + "/rvocalicvowelsignbengali":"\u09C3", + "/rvocalicvowelsigndeva":"\u0943", + "/rvocalicvowelsigngujarati":"\u0AC3", + "/s":"\u0073", + "/sabengali":"\u09B8", + "/sacute":"\u015B", + "/sacutedotaccent":"\u1E65", + "/sadarabic":"\u0635", + "/sadeva":"\u0938", + "/sadfinalarabic":"\uFEBA", + "/sadinitialarabic":"\uFEBB", + "/sadmedialarabic":"\uFEBC", + "/sagujarati":"\u0AB8", + "/sagurmukhi":"\u0A38", + "/sahiragana":"\u3055", + "/sakatakana":"\u30B5", + "/sakatakanahalfwidth":"\uFF7B", + "/sallallahoualayhewasallamarabic":"\uFDFA", + "/samekh":"\u05E1", + "/samekhdagesh":"\uFB41", + "/samekhdageshhebrew":"\uFB41", + "/samekhhebrew":"\u05E1", + "/saraaathai":"\u0E32", + "/saraaethai":"\u0E41", + "/saraaimaimalaithai":"\u0E44", + "/saraaimaimuanthai":"\u0E43", + "/saraamthai":"\u0E33", + "/saraathai":"\u0E30", + "/saraethai":"\u0E40", + "/saraiileftthai":"\uF886", + "/saraiithai":"\u0E35", + "/saraileftthai":"\uF885", + "/saraithai":"\u0E34", + "/saraothai":"\u0E42", + "/saraueeleftthai":"\uF888", + "/saraueethai":"\u0E37", + "/saraueleftthai":"\uF887", + "/sarauethai":"\u0E36", + "/sarauthai":"\u0E38", + "/sarauuthai":"\u0E39", + "/sbopomofo":"\u3119", + "/scaron":"\u0161", + "/scarondotaccent":"\u1E67", + "/scedilla":"\u015F", + "/schwa":"\u0259", + "/schwacyrillic":"\u04D9", + "/schwadieresiscyrillic":"\u04DB", + "/schwahook":"\u025A", + "/scircle":"\u24E2", + "/scircumflex":"\u015D", + "/scommaaccent":"\u0219", + "/sdotaccent":"\u1E61", + "/sdotbelow":"\u1E63", + "/sdotbelowdotaccent":"\u1E69", + "/seagullbelowcmb":"\u033C", + "/second":"\u2033", + "/secondtonechinese":"\u02CA", + "/section":"\u00A7", + "/seenarabic":"\u0633", + "/seenfinalarabic":"\uFEB2", + "/seeninitialarabic":"\uFEB3", + "/seenmedialarabic":"\uFEB4", + "/segol":"\u05B6", + "/segol13":"\u05B6", + "/segol1f":"\u05B6", + "/segol2c":"\u05B6", + "/segolhebrew":"\u05B6", + "/segolnarrowhebrew":"\u05B6", + "/segolquarterhebrew":"\u05B6", + "/segoltahebrew":"\u0592", + "/segolwidehebrew":"\u05B6", + "/seharmenian":"\u057D", + "/sehiragana":"\u305B", + "/sekatakana":"\u30BB", + "/sekatakanahalfwidth":"\uFF7E", + "/semicolon":"\u003B", + "/semicolonarabic":"\u061B", + "/semicolonmonospace":"\uFF1B", + "/semicolonsmall":"\uFE54", + "/semivoicedmarkkana":"\u309C", + "/semivoicedmarkkanahalfwidth":"\uFF9F", + "/sentisquare":"\u3322", + "/sentosquare":"\u3323", + "/seven":"\u0037", + "/sevenarabic":"\u0667", + "/sevenbengali":"\u09ED", + "/sevencircle":"\u2466", + "/sevencircleinversesansserif":"\u2790", + "/sevendeva":"\u096D", + "/seveneighths":"\u215E", + "/sevengujarati":"\u0AED", + "/sevengurmukhi":"\u0A6D", + "/sevenhackarabic":"\u0667", + "/sevenhangzhou":"\u3027", + "/sevenideographicparen":"\u3226", + "/seveninferior":"\u2087", + "/sevenmonospace":"\uFF17", + "/sevenoldstyle":"\uF737", + "/sevenparen":"\u247A", + "/sevenperiod":"\u248E", + "/sevenpersian":"\u06F7", + "/sevenroman":"\u2176", + "/sevensuperior":"\u2077", + "/seventeencircle":"\u2470", + "/seventeenparen":"\u2484", + "/seventeenperiod":"\u2498", + "/seventhai":"\u0E57", + "/sfthyphen":"\u00AD", + "/shaarmenian":"\u0577", + "/shabengali":"\u09B6", + "/shacyrillic":"\u0448", + "/shaddaarabic":"\u0651", + "/shaddadammaarabic":"\uFC61", + "/shaddadammatanarabic":"\uFC5E", + "/shaddafathaarabic":"\uFC60", + "/shaddafathatanarabic":"\u0651 064B", + "/shaddakasraarabic":"\uFC62", + "/shaddakasratanarabic":"\uFC5F", + "/shade":"\u2592", + "/shadedark":"\u2593", + "/shadelight":"\u2591", + "/shademedium":"\u2592", + "/shadeva":"\u0936", + "/shagujarati":"\u0AB6", + "/shagurmukhi":"\u0A36", + "/shalshelethebrew":"\u0593", + "/shbopomofo":"\u3115", + "/shchacyrillic":"\u0449", + "/sheenarabic":"\u0634", + "/sheenfinalarabic":"\uFEB6", + "/sheeninitialarabic":"\uFEB7", + "/sheenmedialarabic":"\uFEB8", + "/sheicoptic":"\u03E3", + "/sheqel":"\u20AA", + "/sheqelhebrew":"\u20AA", + "/sheva":"\u05B0", + "/sheva115":"\u05B0", + "/sheva15":"\u05B0", + "/sheva22":"\u05B0", + "/sheva2e":"\u05B0", + "/shevahebrew":"\u05B0", + "/shevanarrowhebrew":"\u05B0", + "/shevaquarterhebrew":"\u05B0", + "/shevawidehebrew":"\u05B0", + "/shhacyrillic":"\u04BB", + "/shimacoptic":"\u03ED", + "/shin":"\u05E9", + "/shindagesh":"\uFB49", + "/shindageshhebrew":"\uFB49", + "/shindageshshindot":"\uFB2C", + "/shindageshshindothebrew":"\uFB2C", + "/shindageshsindot":"\uFB2D", + "/shindageshsindothebrew":"\uFB2D", + "/shindothebrew":"\u05C1", + "/shinhebrew":"\u05E9", + "/shinshindot":"\uFB2A", + "/shinshindothebrew":"\uFB2A", + "/shinsindot":"\uFB2B", + "/shinsindothebrew":"\uFB2B", + "/shook":"\u0282", + "/sigma":"\u03C3", + "/sigma1":"\u03C2", + "/sigmafinal":"\u03C2", + "/sigmalunatesymbolgreek":"\u03F2", + "/sihiragana":"\u3057", + "/sikatakana":"\u30B7", + "/sikatakanahalfwidth":"\uFF7C", + "/siluqhebrew":"\u05BD", + "/siluqlefthebrew":"\u05BD", + "/similar":"\u223C", + "/sindothebrew":"\u05C2", + "/siosacirclekorean":"\u3274", + "/siosaparenkorean":"\u3214", + "/sioscieuckorean":"\u317E", + "/sioscirclekorean":"\u3266", + "/sioskiyeokkorean":"\u317A", + "/sioskorean":"\u3145", + "/siosnieunkorean":"\u317B", + "/siosparenkorean":"\u3206", + "/siospieupkorean":"\u317D", + "/siostikeutkorean":"\u317C", + "/six":"\u0036", + "/sixarabic":"\u0666", + "/sixbengali":"\u09EC", + "/sixcircle":"\u2465", + "/sixcircleinversesansserif":"\u278F", + "/sixdeva":"\u096C", + "/sixgujarati":"\u0AEC", + "/sixgurmukhi":"\u0A6C", + "/sixhackarabic":"\u0666", + "/sixhangzhou":"\u3026", + "/sixideographicparen":"\u3225", + "/sixinferior":"\u2086", + "/sixmonospace":"\uFF16", + "/sixoldstyle":"\uF736", + "/sixparen":"\u2479", + "/sixperiod":"\u248D", + "/sixpersian":"\u06F6", + "/sixroman":"\u2175", + "/sixsuperior":"\u2076", + "/sixteencircle":"\u246F", + "/sixteencurrencydenominatorbengali":"\u09F9", + "/sixteenparen":"\u2483", + "/sixteenperiod":"\u2497", + "/sixthai":"\u0E56", + "/slash":"\u002F", + "/slashmonospace":"\uFF0F", + "/slong":"\u017F", + "/slongdotaccent":"\u1E9B", + "/smileface":"\u263A", + "/smonospace":"\uFF53", + "/sofpasuqhebrew":"\u05C3", + "/softhyphen":"\u00AD", + "/softsigncyrillic":"\u044C", + "/sohiragana":"\u305D", + "/sokatakana":"\u30BD", + "/sokatakanahalfwidth":"\uFF7F", + "/soliduslongoverlaycmb":"\u0338", + "/solidusshortoverlaycmb":"\u0337", + "/sorusithai":"\u0E29", + "/sosalathai":"\u0E28", + "/sosothai":"\u0E0B", + "/sosuathai":"\u0E2A", + "/space":"\u0020", + "/spacehackarabic":"\u0020", + "/spade":"\u2660", + "/spadesuitblack":"\u2660", + "/spadesuitwhite":"\u2664", + "/sparen":"\u24AE", + "/squarebelowcmb":"\u033B", + "/squarecc":"\u33C4", + "/squarecm":"\u339D", + "/squarediagonalcrosshatchfill":"\u25A9", + "/squarehorizontalfill":"\u25A4", + "/squarekg":"\u338F", + "/squarekm":"\u339E", + "/squarekmcapital":"\u33CE", + "/squareln":"\u33D1", + "/squarelog":"\u33D2", + "/squaremg":"\u338E", + "/squaremil":"\u33D5", + "/squaremm":"\u339C", + "/squaremsquared":"\u33A1", + "/squareorthogonalcrosshatchfill":"\u25A6", + "/squareupperlefttolowerrightfill":"\u25A7", + "/squareupperrighttolowerleftfill":"\u25A8", + "/squareverticalfill":"\u25A5", + "/squarewhitewithsmallblack":"\u25A3", + "/srsquare":"\u33DB", + "/ssabengali":"\u09B7", + "/ssadeva":"\u0937", + "/ssagujarati":"\u0AB7", + "/ssangcieuckorean":"\u3149", + "/ssanghieuhkorean":"\u3185", + "/ssangieungkorean":"\u3180", + "/ssangkiyeokkorean":"\u3132", + "/ssangnieunkorean":"\u3165", + "/ssangpieupkorean":"\u3143", + "/ssangsioskorean":"\u3146", + "/ssangtikeutkorean":"\u3138", + "/ssuperior":"\uF6F2", + "/sterling":"\u00A3", + "/sterlingmonospace":"\uFFE1", + "/strokelongoverlaycmb":"\u0336", + "/strokeshortoverlaycmb":"\u0335", + "/subset":"\u2282", + "/subsetnotequal":"\u228A", + "/subsetorequal":"\u2286", + "/succeeds":"\u227B", + "/suchthat":"\u220B", + "/suhiragana":"\u3059", + "/sukatakana":"\u30B9", + "/sukatakanahalfwidth":"\uFF7D", + "/sukunarabic":"\u0652", + "/summation":"\u2211", + "/sun":"\u263C", + "/superset":"\u2283", + "/supersetnotequal":"\u228B", + "/supersetorequal":"\u2287", + "/svsquare":"\u33DC", + "/syouwaerasquare":"\u337C", + "/t":"\u0074", + "/tabengali":"\u09A4", + "/tackdown":"\u22A4", + "/tackleft":"\u22A3", + "/tadeva":"\u0924", + "/tagujarati":"\u0AA4", + "/tagurmukhi":"\u0A24", + "/taharabic":"\u0637", + "/tahfinalarabic":"\uFEC2", + "/tahinitialarabic":"\uFEC3", + "/tahiragana":"\u305F", + "/tahmedialarabic":"\uFEC4", + "/taisyouerasquare":"\u337D", + "/takatakana":"\u30BF", + "/takatakanahalfwidth":"\uFF80", + "/tatweelarabic":"\u0640", + "/tau":"\u03C4", + "/tav":"\u05EA", + "/tavdages":"\uFB4A", + "/tavdagesh":"\uFB4A", + "/tavdageshhebrew":"\uFB4A", + "/tavhebrew":"\u05EA", + "/tbar":"\u0167", + "/tbopomofo":"\u310A", + "/tcaron":"\u0165", + "/tccurl":"\u02A8", + "/tcedilla":"\u0163", + "/tcheharabic":"\u0686", + "/tchehfinalarabic":"\uFB7B", + "/tchehinitialarabic":"\uFB7C", + "/tchehmedialarabic":"\uFB7D", + "/tchehmeeminitialarabic":"\uFB7C FEE4", + "/tcircle":"\u24E3", + "/tcircumflexbelow":"\u1E71", + "/tcommaaccent":"\u0163", + "/tdieresis":"\u1E97", + "/tdotaccent":"\u1E6B", + "/tdotbelow":"\u1E6D", + "/tecyrillic":"\u0442", + "/tedescendercyrillic":"\u04AD", + "/teharabic":"\u062A", + "/tehfinalarabic":"\uFE96", + "/tehhahinitialarabic":"\uFCA2", + "/tehhahisolatedarabic":"\uFC0C", + "/tehinitialarabic":"\uFE97", + "/tehiragana":"\u3066", + "/tehjeeminitialarabic":"\uFCA1", + "/tehjeemisolatedarabic":"\uFC0B", + "/tehmarbutaarabic":"\u0629", + "/tehmarbutafinalarabic":"\uFE94", + "/tehmedialarabic":"\uFE98", + "/tehmeeminitialarabic":"\uFCA4", + "/tehmeemisolatedarabic":"\uFC0E", + "/tehnoonfinalarabic":"\uFC73", + "/tekatakana":"\u30C6", + "/tekatakanahalfwidth":"\uFF83", + "/telephone":"\u2121", + "/telephoneblack":"\u260E", + "/telishagedolahebrew":"\u05A0", + "/telishaqetanahebrew":"\u05A9", + "/tencircle":"\u2469", + "/tenideographicparen":"\u3229", + "/tenparen":"\u247D", + "/tenperiod":"\u2491", + "/tenroman":"\u2179", + "/tesh":"\u02A7", + "/tet":"\u05D8", + "/tetdagesh":"\uFB38", + "/tetdageshhebrew":"\uFB38", + "/tethebrew":"\u05D8", + "/tetsecyrillic":"\u04B5", + "/tevirhebrew":"\u059B", + "/tevirlefthebrew":"\u059B", + "/thabengali":"\u09A5", + "/thadeva":"\u0925", + "/thagujarati":"\u0AA5", + "/thagurmukhi":"\u0A25", + "/thalarabic":"\u0630", + "/thalfinalarabic":"\uFEAC", + "/thanthakhatlowleftthai":"\uF898", + "/thanthakhatlowrightthai":"\uF897", + "/thanthakhatthai":"\u0E4C", + "/thanthakhatupperleftthai":"\uF896", + "/theharabic":"\u062B", + "/thehfinalarabic":"\uFE9A", + "/thehinitialarabic":"\uFE9B", + "/thehmedialarabic":"\uFE9C", + "/thereexists":"\u2203", + "/therefore":"\u2234", + "/theta":"\u03B8", + "/theta1":"\u03D1", + "/thetasymbolgreek":"\u03D1", + "/thieuthacirclekorean":"\u3279", + "/thieuthaparenkorean":"\u3219", + "/thieuthcirclekorean":"\u326B", + "/thieuthkorean":"\u314C", + "/thieuthparenkorean":"\u320B", + "/thirteencircle":"\u246C", + "/thirteenparen":"\u2480", + "/thirteenperiod":"\u2494", + "/thonangmonthothai":"\u0E11", + "/thook":"\u01AD", + "/thophuthaothai":"\u0E12", + "/thorn":"\u00FE", + "/thothahanthai":"\u0E17", + "/thothanthai":"\u0E10", + "/thothongthai":"\u0E18", + "/thothungthai":"\u0E16", + "/thousandcyrillic":"\u0482", + "/thousandsseparatorarabic":"\u066C", + "/thousandsseparatorpersian":"\u066C", + "/three":"\u0033", + "/threearabic":"\u0663", + "/threebengali":"\u09E9", + "/threecircle":"\u2462", + "/threecircleinversesansserif":"\u278C", + "/threedeva":"\u0969", + "/threeeighths":"\u215C", + "/threegujarati":"\u0AE9", + "/threegurmukhi":"\u0A69", + "/threehackarabic":"\u0663", + "/threehangzhou":"\u3023", + "/threeideographicparen":"\u3222", + "/threeinferior":"\u2083", + "/threemonospace":"\uFF13", + "/threenumeratorbengali":"\u09F6", + "/threeoldstyle":"\uF733", + "/threeparen":"\u2476", + "/threeperiod":"\u248A", + "/threepersian":"\u06F3", + "/threequarters":"\u00BE", + "/threequartersemdash":"\uF6DE", + "/threeroman":"\u2172", + "/threesuperior":"\u00B3", + "/threethai":"\u0E53", + "/thzsquare":"\u3394", + "/tihiragana":"\u3061", + "/tikatakana":"\u30C1", + "/tikatakanahalfwidth":"\uFF81", + "/tikeutacirclekorean":"\u3270", + "/tikeutaparenkorean":"\u3210", + "/tikeutcirclekorean":"\u3262", + "/tikeutkorean":"\u3137", + "/tikeutparenkorean":"\u3202", + "/tilde":"\u02DC", + "/tildebelowcmb":"\u0330", + "/tildecmb":"\u0303", + "/tildecomb":"\u0303", + "/tildedoublecmb":"\u0360", + "/tildeoperator":"\u223C", + "/tildeoverlaycmb":"\u0334", + "/tildeverticalcmb":"\u033E", + "/timescircle":"\u2297", + "/tipehahebrew":"\u0596", + "/tipehalefthebrew":"\u0596", + "/tippigurmukhi":"\u0A70", + "/titlocyrilliccmb":"\u0483", + "/tiwnarmenian":"\u057F", + "/tlinebelow":"\u1E6F", + "/tmonospace":"\uFF54", + "/toarmenian":"\u0569", + "/tohiragana":"\u3068", + "/tokatakana":"\u30C8", + "/tokatakanahalfwidth":"\uFF84", + "/tonebarextrahighmod":"\u02E5", + "/tonebarextralowmod":"\u02E9", + "/tonebarhighmod":"\u02E6", + "/tonebarlowmod":"\u02E8", + "/tonebarmidmod":"\u02E7", + "/tonefive":"\u01BD", + "/tonesix":"\u0185", + "/tonetwo":"\u01A8", + "/tonos":"\u0384", + "/tonsquare":"\u3327", + "/topatakthai":"\u0E0F", + "/tortoiseshellbracketleft":"\u3014", + "/tortoiseshellbracketleftsmall":"\uFE5D", + "/tortoiseshellbracketleftvertical":"\uFE39", + "/tortoiseshellbracketright":"\u3015", + "/tortoiseshellbracketrightsmall":"\uFE5E", + "/tortoiseshellbracketrightvertical":"\uFE3A", + "/totaothai":"\u0E15", + "/tpalatalhook":"\u01AB", + "/tparen":"\u24AF", + "/trademark":"\u2122", + "/trademarksans":"\uF8EA", + "/trademarkserif":"\uF6DB", + "/tretroflexhook":"\u0288", + "/triagdn":"\u25BC", + "/triaglf":"\u25C4", + "/triagrt":"\u25BA", + "/triagup":"\u25B2", + "/ts":"\u02A6", + "/tsadi":"\u05E6", + "/tsadidagesh":"\uFB46", + "/tsadidageshhebrew":"\uFB46", + "/tsadihebrew":"\u05E6", + "/tsecyrillic":"\u0446", + "/tsere":"\u05B5", + "/tsere12":"\u05B5", + "/tsere1e":"\u05B5", + "/tsere2b":"\u05B5", + "/tserehebrew":"\u05B5", + "/tserenarrowhebrew":"\u05B5", + "/tserequarterhebrew":"\u05B5", + "/tserewidehebrew":"\u05B5", + "/tshecyrillic":"\u045B", + "/tsuperior":"\uF6F3", + "/ttabengali":"\u099F", + "/ttadeva":"\u091F", + "/ttagujarati":"\u0A9F", + "/ttagurmukhi":"\u0A1F", + "/tteharabic":"\u0679", + "/ttehfinalarabic":"\uFB67", + "/ttehinitialarabic":"\uFB68", + "/ttehmedialarabic":"\uFB69", + "/tthabengali":"\u09A0", + "/tthadeva":"\u0920", + "/tthagujarati":"\u0AA0", + "/tthagurmukhi":"\u0A20", + "/tturned":"\u0287", + "/tuhiragana":"\u3064", + "/tukatakana":"\u30C4", + "/tukatakanahalfwidth":"\uFF82", + "/tusmallhiragana":"\u3063", + "/tusmallkatakana":"\u30C3", + "/tusmallkatakanahalfwidth":"\uFF6F", + "/twelvecircle":"\u246B", + "/twelveparen":"\u247F", + "/twelveperiod":"\u2493", + "/twelveroman":"\u217B", + "/twentycircle":"\u2473", + "/twentyhangzhou":"\u5344", + "/twentyparen":"\u2487", + "/twentyperiod":"\u249B", + "/two":"\u0032", + "/twoarabic":"\u0662", + "/twobengali":"\u09E8", + "/twocircle":"\u2461", + "/twocircleinversesansserif":"\u278B", + "/twodeva":"\u0968", + "/twodotenleader":"\u2025", + "/twodotleader":"\u2025", + "/twodotleadervertical":"\uFE30", + "/twogujarati":"\u0AE8", + "/twogurmukhi":"\u0A68", + "/twohackarabic":"\u0662", + "/twohangzhou":"\u3022", + "/twoideographicparen":"\u3221", + "/twoinferior":"\u2082", + "/twomonospace":"\uFF12", + "/twonumeratorbengali":"\u09F5", + "/twooldstyle":"\uF732", + "/twoparen":"\u2475", + "/twoperiod":"\u2489", + "/twopersian":"\u06F2", + "/tworoman":"\u2171", + "/twostroke":"\u01BB", + "/twosuperior":"\u00B2", + "/twothai":"\u0E52", + "/twothirds":"\u2154", + "/u":"\u0075", + "/uacute":"\u00FA", + "/ubar":"\u0289", + "/ubengali":"\u0989", + "/ubopomofo":"\u3128", + "/ubreve":"\u016D", + "/ucaron":"\u01D4", + "/ucircle":"\u24E4", + "/ucircumflex":"\u00FB", + "/ucircumflexbelow":"\u1E77", + "/ucyrillic":"\u0443", + "/udattadeva":"\u0951", + "/udblacute":"\u0171", + "/udblgrave":"\u0215", + "/udeva":"\u0909", + "/udieresis":"\u00FC", + "/udieresisacute":"\u01D8", + "/udieresisbelow":"\u1E73", + "/udieresiscaron":"\u01DA", + "/udieresiscyrillic":"\u04F1", + "/udieresisgrave":"\u01DC", + "/udieresismacron":"\u01D6", + "/udotbelow":"\u1EE5", + "/ugrave":"\u00F9", + "/ugujarati":"\u0A89", + "/ugurmukhi":"\u0A09", + "/uhiragana":"\u3046", + "/uhookabove":"\u1EE7", + "/uhorn":"\u01B0", + "/uhornacute":"\u1EE9", + "/uhorndotbelow":"\u1EF1", + "/uhorngrave":"\u1EEB", + "/uhornhookabove":"\u1EED", + "/uhorntilde":"\u1EEF", + "/uhungarumlaut":"\u0171", + "/uhungarumlautcyrillic":"\u04F3", + "/uinvertedbreve":"\u0217", + "/ukatakana":"\u30A6", + "/ukatakanahalfwidth":"\uFF73", + "/ukcyrillic":"\u0479", + "/ukorean":"\u315C", + "/umacron":"\u016B", + "/umacroncyrillic":"\u04EF", + "/umacrondieresis":"\u1E7B", + "/umatragurmukhi":"\u0A41", + "/umonospace":"\uFF55", + "/underscore":"\u005F", + "/underscoredbl":"\u2017", + "/underscoremonospace":"\uFF3F", + "/underscorevertical":"\uFE33", + "/underscorewavy":"\uFE4F", + "/union":"\u222A", + "/universal":"\u2200", + "/uogonek":"\u0173", + "/uparen":"\u24B0", + "/upblock":"\u2580", + "/upperdothebrew":"\u05C4", + "/upsilon":"\u03C5", + "/upsilondieresis":"\u03CB", + "/upsilondieresistonos":"\u03B0", + "/upsilonlatin":"\u028A", + "/upsilontonos":"\u03CD", + "/uptackbelowcmb":"\u031D", + "/uptackmod":"\u02D4", + "/uragurmukhi":"\u0A73", + "/uring":"\u016F", + "/ushortcyrillic":"\u045E", + "/usmallhiragana":"\u3045", + "/usmallkatakana":"\u30A5", + "/usmallkatakanahalfwidth":"\uFF69", + "/ustraightcyrillic":"\u04AF", + "/ustraightstrokecyrillic":"\u04B1", + "/utilde":"\u0169", + "/utildeacute":"\u1E79", + "/utildebelow":"\u1E75", + "/uubengali":"\u098A", + "/uudeva":"\u090A", + "/uugujarati":"\u0A8A", + "/uugurmukhi":"\u0A0A", + "/uumatragurmukhi":"\u0A42", + "/uuvowelsignbengali":"\u09C2", + "/uuvowelsigndeva":"\u0942", + "/uuvowelsigngujarati":"\u0AC2", + "/uvowelsignbengali":"\u09C1", + "/uvowelsigndeva":"\u0941", + "/uvowelsigngujarati":"\u0AC1", + "/v":"\u0076", + "/vadeva":"\u0935", + "/vagujarati":"\u0AB5", + "/vagurmukhi":"\u0A35", + "/vakatakana":"\u30F7", + "/vav":"\u05D5", + "/vavdagesh":"\uFB35", + "/vavdagesh65":"\uFB35", + "/vavdageshhebrew":"\uFB35", + "/vavhebrew":"\u05D5", + "/vavholam":"\uFB4B", + "/vavholamhebrew":"\uFB4B", + "/vavvavhebrew":"\u05F0", + "/vavyodhebrew":"\u05F1", + "/vcircle":"\u24E5", + "/vdotbelow":"\u1E7F", + "/vecyrillic":"\u0432", + "/veharabic":"\u06A4", + "/vehfinalarabic":"\uFB6B", + "/vehinitialarabic":"\uFB6C", + "/vehmedialarabic":"\uFB6D", + "/vekatakana":"\u30F9", + "/venus":"\u2640", + "/verticalbar":"\u007C", + "/verticallineabovecmb":"\u030D", + "/verticallinebelowcmb":"\u0329", + "/verticallinelowmod":"\u02CC", + "/verticallinemod":"\u02C8", + "/vewarmenian":"\u057E", + "/vhook":"\u028B", + "/vikatakana":"\u30F8", + "/viramabengali":"\u09CD", + "/viramadeva":"\u094D", + "/viramagujarati":"\u0ACD", + "/visargabengali":"\u0983", + "/visargadeva":"\u0903", + "/visargagujarati":"\u0A83", + "/vmonospace":"\uFF56", + "/voarmenian":"\u0578", + "/voicediterationhiragana":"\u309E", + "/voicediterationkatakana":"\u30FE", + "/voicedmarkkana":"\u309B", + "/voicedmarkkanahalfwidth":"\uFF9E", + "/vokatakana":"\u30FA", + "/vparen":"\u24B1", + "/vtilde":"\u1E7D", + "/vturned":"\u028C", + "/vuhiragana":"\u3094", + "/vukatakana":"\u30F4", + "/w":"\u0077", + "/wacute":"\u1E83", + "/waekorean":"\u3159", + "/wahiragana":"\u308F", + "/wakatakana":"\u30EF", + "/wakatakanahalfwidth":"\uFF9C", + "/wakorean":"\u3158", + "/wasmallhiragana":"\u308E", + "/wasmallkatakana":"\u30EE", + "/wattosquare":"\u3357", + "/wavedash":"\u301C", + "/wavyunderscorevertical":"\uFE34", + "/wawarabic":"\u0648", + "/wawfinalarabic":"\uFEEE", + "/wawhamzaabovearabic":"\u0624", + "/wawhamzaabovefinalarabic":"\uFE86", + "/wbsquare":"\u33DD", + "/wcircle":"\u24E6", + "/wcircumflex":"\u0175", + "/wdieresis":"\u1E85", + "/wdotaccent":"\u1E87", + "/wdotbelow":"\u1E89", + "/wehiragana":"\u3091", + "/weierstrass":"\u2118", + "/wekatakana":"\u30F1", + "/wekorean":"\u315E", + "/weokorean":"\u315D", + "/wgrave":"\u1E81", + "/whitebullet":"\u25E6", + "/whitecircle":"\u25CB", + "/whitecircleinverse":"\u25D9", + "/whitecornerbracketleft":"\u300E", + "/whitecornerbracketleftvertical":"\uFE43", + "/whitecornerbracketright":"\u300F", + "/whitecornerbracketrightvertical":"\uFE44", + "/whitediamond":"\u25C7", + "/whitediamondcontainingblacksmalldiamond":"\u25C8", + "/whitedownpointingsmalltriangle":"\u25BF", + "/whitedownpointingtriangle":"\u25BD", + "/whiteleftpointingsmalltriangle":"\u25C3", + "/whiteleftpointingtriangle":"\u25C1", + "/whitelenticularbracketleft":"\u3016", + "/whitelenticularbracketright":"\u3017", + "/whiterightpointingsmalltriangle":"\u25B9", + "/whiterightpointingtriangle":"\u25B7", + "/whitesmallsquare":"\u25AB", + "/whitesmilingface":"\u263A", + "/whitesquare":"\u25A1", + "/whitestar":"\u2606", + "/whitetelephone":"\u260F", + "/whitetortoiseshellbracketleft":"\u3018", + "/whitetortoiseshellbracketright":"\u3019", + "/whiteuppointingsmalltriangle":"\u25B5", + "/whiteuppointingtriangle":"\u25B3", + "/wihiragana":"\u3090", + "/wikatakana":"\u30F0", + "/wikorean":"\u315F", + "/wmonospace":"\uFF57", + "/wohiragana":"\u3092", + "/wokatakana":"\u30F2", + "/wokatakanahalfwidth":"\uFF66", + "/won":"\u20A9", + "/wonmonospace":"\uFFE6", + "/wowaenthai":"\u0E27", + "/wparen":"\u24B2", + "/wring":"\u1E98", + "/wsuperior":"\u02B7", + "/wturned":"\u028D", + "/wynn":"\u01BF", + "/x":"\u0078", + "/xabovecmb":"\u033D", + "/xbopomofo":"\u3112", + "/xcircle":"\u24E7", + "/xdieresis":"\u1E8D", + "/xdotaccent":"\u1E8B", + "/xeharmenian":"\u056D", + "/xi":"\u03BE", + "/xmonospace":"\uFF58", + "/xparen":"\u24B3", + "/xsuperior":"\u02E3", + "/y":"\u0079", + "/yaadosquare":"\u334E", + "/yabengali":"\u09AF", + "/yacute":"\u00FD", + "/yadeva":"\u092F", + "/yaekorean":"\u3152", + "/yagujarati":"\u0AAF", + "/yagurmukhi":"\u0A2F", + "/yahiragana":"\u3084", + "/yakatakana":"\u30E4", + "/yakatakanahalfwidth":"\uFF94", + "/yakorean":"\u3151", + "/yamakkanthai":"\u0E4E", + "/yasmallhiragana":"\u3083", + "/yasmallkatakana":"\u30E3", + "/yasmallkatakanahalfwidth":"\uFF6C", + "/yatcyrillic":"\u0463", + "/ycircle":"\u24E8", + "/ycircumflex":"\u0177", + "/ydieresis":"\u00FF", + "/ydotaccent":"\u1E8F", + "/ydotbelow":"\u1EF5", + "/yeharabic":"\u064A", + "/yehbarreearabic":"\u06D2", + "/yehbarreefinalarabic":"\uFBAF", + "/yehfinalarabic":"\uFEF2", + "/yehhamzaabovearabic":"\u0626", + "/yehhamzaabovefinalarabic":"\uFE8A", + "/yehhamzaaboveinitialarabic":"\uFE8B", + "/yehhamzaabovemedialarabic":"\uFE8C", + "/yehinitialarabic":"\uFEF3", + "/yehmedialarabic":"\uFEF4", + "/yehmeeminitialarabic":"\uFCDD", + "/yehmeemisolatedarabic":"\uFC58", + "/yehnoonfinalarabic":"\uFC94", + "/yehthreedotsbelowarabic":"\u06D1", + "/yekorean":"\u3156", + "/yen":"\u00A5", + "/yenmonospace":"\uFFE5", + "/yeokorean":"\u3155", + "/yeorinhieuhkorean":"\u3186", + "/yerahbenyomohebrew":"\u05AA", + "/yerahbenyomolefthebrew":"\u05AA", + "/yericyrillic":"\u044B", + "/yerudieresiscyrillic":"\u04F9", + "/yesieungkorean":"\u3181", + "/yesieungpansioskorean":"\u3183", + "/yesieungsioskorean":"\u3182", + "/yetivhebrew":"\u059A", + "/ygrave":"\u1EF3", + "/yhook":"\u01B4", + "/yhookabove":"\u1EF7", + "/yiarmenian":"\u0575", + "/yicyrillic":"\u0457", + "/yikorean":"\u3162", + "/yinyang":"\u262F", + "/yiwnarmenian":"\u0582", + "/ymonospace":"\uFF59", + "/yod":"\u05D9", + "/yoddagesh":"\uFB39", + "/yoddageshhebrew":"\uFB39", + "/yodhebrew":"\u05D9", + "/yodyodhebrew":"\u05F2", + "/yodyodpatahhebrew":"\uFB1F", + "/yohiragana":"\u3088", + "/yoikorean":"\u3189", + "/yokatakana":"\u30E8", + "/yokatakanahalfwidth":"\uFF96", + "/yokorean":"\u315B", + "/yosmallhiragana":"\u3087", + "/yosmallkatakana":"\u30E7", + "/yosmallkatakanahalfwidth":"\uFF6E", + "/yotgreek":"\u03F3", + "/yoyaekorean":"\u3188", + "/yoyakorean":"\u3187", + "/yoyakthai":"\u0E22", + "/yoyingthai":"\u0E0D", + "/yparen":"\u24B4", + "/ypogegrammeni":"\u037A", + "/ypogegrammenigreekcmb":"\u0345", + "/yr":"\u01A6", + "/yring":"\u1E99", + "/ysuperior":"\u02B8", + "/ytilde":"\u1EF9", + "/yturned":"\u028E", + "/yuhiragana":"\u3086", + "/yuikorean":"\u318C", + "/yukatakana":"\u30E6", + "/yukatakanahalfwidth":"\uFF95", + "/yukorean":"\u3160", + "/yusbigcyrillic":"\u046B", + "/yusbigiotifiedcyrillic":"\u046D", + "/yuslittlecyrillic":"\u0467", + "/yuslittleiotifiedcyrillic":"\u0469", + "/yusmallhiragana":"\u3085", + "/yusmallkatakana":"\u30E5", + "/yusmallkatakanahalfwidth":"\uFF6D", + "/yuyekorean":"\u318B", + "/yuyeokorean":"\u318A", + "/yyabengali":"\u09DF", + "/yyadeva":"\u095F", + "/z":"\u007A", + "/zaarmenian":"\u0566", + "/zacute":"\u017A", + "/zadeva":"\u095B", + "/zagurmukhi":"\u0A5B", + "/zaharabic":"\u0638", + "/zahfinalarabic":"\uFEC6", + "/zahinitialarabic":"\uFEC7", + "/zahiragana":"\u3056", + "/zahmedialarabic":"\uFEC8", + "/zainarabic":"\u0632", + "/zainfinalarabic":"\uFEB0", + "/zakatakana":"\u30B6", + "/zaqefgadolhebrew":"\u0595", + "/zaqefqatanhebrew":"\u0594", + "/zarqahebrew":"\u0598", + "/zayin":"\u05D6", + "/zayindagesh":"\uFB36", + "/zayindageshhebrew":"\uFB36", + "/zayinhebrew":"\u05D6", + "/zbopomofo":"\u3117", + "/zcaron":"\u017E", + "/zcircle":"\u24E9", + "/zcircumflex":"\u1E91", + "/zcurl":"\u0291", + "/zdot":"\u017C", + "/zdotaccent":"\u017C", + "/zdotbelow":"\u1E93", + "/zecyrillic":"\u0437", + "/zedescendercyrillic":"\u0499", + "/zedieresiscyrillic":"\u04DF", + "/zehiragana":"\u305C", + "/zekatakana":"\u30BC", + "/zero":"\u0030", + "/zeroarabic":"\u0660", + "/zerobengali":"\u09E6", + "/zerodeva":"\u0966", + "/zerogujarati":"\u0AE6", + "/zerogurmukhi":"\u0A66", + "/zerohackarabic":"\u0660", + "/zeroinferior":"\u2080", + "/zeromonospace":"\uFF10", + "/zerooldstyle":"\uF730", + "/zeropersian":"\u06F0", + "/zerosuperior":"\u2070", + "/zerothai":"\u0E50", + "/zerowidthjoiner":"\uFEFF", + "/zerowidthnonjoiner":"\u200C", + "/zerowidthspace":"\u200B", + "/zeta":"\u03B6", + "/zhbopomofo":"\u3113", + "/zhearmenian":"\u056A", + "/zhebrevecyrillic":"\u04C2", + "/zhecyrillic":"\u0436", + "/zhedescendercyrillic":"\u0497", + "/zhedieresiscyrillic":"\u04DD", + "/zihiragana":"\u3058", + "/zikatakana":"\u30B8", + "/zinorhebrew":"\u05AE", + "/zlinebelow":"\u1E95", + "/zmonospace":"\uFF5A", + "/zohiragana":"\u305E", + "/zokatakana":"\u30BE", + "/zparen":"\u24B5", + "/zretroflexhook":"\u0290", + "/zstroke":"\u01B6", + "/zuhiragana":"\u305A", + "/zukatakana":"\u30BA", +} diff --git a/PyPDF2/_page.py b/PyPDF2/_page.py index bf403a18d..bd51bdd8c 100644 --- a/PyPDF2/_page.py +++ b/PyPDF2/_page.py @@ -30,6 +30,7 @@ import math import uuid from decimal import Decimal +from binascii import unhexlify from typing import ( Any, Callable, @@ -56,8 +57,10 @@ NumberObject, RectangleObject, TextStringObject, + charset_encoding ) from .utils import b_, matrixMultiply +from ._adglyphs import adobe_glyphs def getRectangle(self: Any, name: str, defaults: Iterable[str]) -> RectangleObject: @@ -746,15 +749,90 @@ def extractText(self, Tj_sep: str = "", TJ_sep: str = "") -> str: :return: a string object. """ + # code freely inspired from @twiggy ; see #711 + def buildCharMap(pdf, font_name="/a"): + mapDict = {} + processRg = False + processChar = False + encoding = [] + fontType = pdf.getPage(0)["/Resources"]["/Font"][font_name]["/Subtype"] + if "/Encoding" in pdf.getPage(0)["/Resources"]["/Font"][font_name]: + enc= pdf.getPage(0)["/Resources"]["/Font"][font_name]["/Encoding"].getObject() + if '/BaseEncoding' in enc: + encoding = list(charset_encoding[enc['/BaseEncoding']]) + else: + encoding = list(charset_encoding['/StandardCoding']) + if '/Differences' in enc: + x=0 + for o in enc['/Differences']: + if isinstance(o,int): + x = o + else: + try: + encoding[x] = adobe_glyphs[o] + except: + encoding[x] = o + x += 1 + if "/ToUnicode" in pdf.getPage(0)["/Resources"]["/Font"][font_name]: + cm = pdf.getPage(0)["/Resources"]["/Font"][font_name]["/ToUnicode"].getData().decode('utf-8') + for l in cm.strip().replace('<', '').replace('>', '').split('\n'): + #print(l) + if 'beginbfrange' in l: + processRg = True + elif 'endbfrange' in l: + processRg = False + elif 'beginbfchar' in l: + processChar = True + elif 'endbfchar' in l: + processChar = False + elif processRg: + lst=l.split(' ',2) + a=int(lst[0], 16) + b=int(lst[1], 16) + if lst[2] == '[': + lst = lst[2].trim(' []').split(' ') + for sq in lst: + mapDict[a] = unhexlify(sq).decode("utf-16-be") + a += 1 + assert a>b + else: + c = int(lst[2],16) + while(a<=b): + mapDict[a] = chr(c) + a += 1 + c += 1 + elif processChar: + lst=l.split(' ',2) + a=int(lst[0], 16) + mapDict[a] = unhexlify(lst[1]).decode("utf-16-be") + return fontType, dict(zip(range(256),encoding)), "".maketrans(mapDict) + #------- end of buildCharmap ------ text = "" + output = "" + cmap = {} content = self[PG.CONTENTS].getObject() if not isinstance(content, ContentStream): - content = ContentStream(content, self.pdf) + content = ContentStream(content, self.pdf,"charmap") # Note: we check all strings are TextStringObjects. ByteStringObjects # are strings where the byte->string encoding was unknown, so adding # them to the text here would be gibberish. + + #charSize = 1.0 + #charScale = 1.0 for operands, operator in content.operations: - if operator == b_("Tj"): + if operator == b_("Tf"): + if text!="": + output += text.translate(cmap) + ft,cmap,cmap2 = buildCharMap(self.pdf,operands[0]) + #print(ft,"\n",cmap,"\n--------------\n",cmap2) + #charSize = operands[1] # reserved + if output == "": + text = "" + else: + text = " " + #elif operator == b_("Tc"): + #charScale = 1.0 + float(operands[0]) + elif operator == b_("Tj"): _text = operands[0] if isinstance(_text, TextStringObject): text += Tj_sep @@ -763,17 +841,24 @@ def extractText(self, Tj_sep: str = "", TJ_sep: str = "") -> str: # see Pdf Reference 1.7 page 406 elif ((operator in [b_("T*"),b_("ET")]) or ((operator in [b_("Td"),b_("TD")]) and operands[1] != 0)): - text += "\n" + if text != "": + output += text.translate(cmap) + "\n" + text = "" + elif ((operator in [b_("Td")]) and (operands[1] == 0)): + if operands[-1]>0: + print("back ",operands[-1]) + elif operands[-1]<0: + print("back ",operands[-1]) elif operator == b_("'"): - text += "\n" + output += text.translate(cmap) + "\n" _text = operands[0] if isinstance(_text, TextStringObject): - text += operands[0] + text = operands[0] elif operator == b_('"'): + output += text.translate(cmap) + "\n" _text = operands[2] if isinstance(_text, TextStringObject): - text += "\n" - text += _text + text = _text elif operator == b_("TJ"): pass for i in operands[0]: @@ -783,14 +868,16 @@ def extractText(self, Tj_sep: str = "", TJ_sep: str = "") -> str: elif isinstance(i, NumberObject): # a positive value decreases and the negative value increases # space - if int(i) < 0: + if i<-500 or i>500:print("TJ:",text,"*",i) + if int(i) < -200: if len(text) == 0 or text[-1] != " ": text += " " else: if len(text) > 1 and text[-1] == " ": text = text[:-1] #text += "\n" - return text + output += text.translate(cmap) + return output mediaBox = createRectangleAccessor(PG.MEDIABOX, ()) """ diff --git a/PyPDF2/generic.py b/PyPDF2/generic.py index f275a5286..5442d2178 100644 --- a/PyPDF2/generic.py +++ b/PyPDF2/generic.py @@ -132,7 +132,7 @@ def writeToStream( stream.write(b_(" ]")) @staticmethod - def readFromStream(stream: StreamType, pdf: Any) -> "ArrayObject": # PdfFileReader + def readFromStream(stream: StreamType, pdf: Any, forcedEncoding: Union[None,str,list] = None) -> "ArrayObject": # PdfFileReader arr = ArrayObject() tmp = stream.read(1) if tmp != b_("["): @@ -149,7 +149,7 @@ def readFromStream(stream: StreamType, pdf: Any) -> "ArrayObject": # PdfFileRea break stream.seek(-1, 1) # read and append obj - arr.append(readObject(stream, pdf)) + arr.append(readObject(stream, pdf, forcedEncoding)) return arr @@ -301,6 +301,7 @@ def readHexStringFromStream( def readStringFromStream( stream: StreamType, + forceEncoding: Union[None,str,list] = None, ) -> Union["TextStringObject", "ByteStringObject"]: tok = stream.read(1) parens = 1 @@ -371,7 +372,7 @@ def readStringFromStream( # if.strict: PdfReadError(msg) logger.warning(msg) txt += tok - return createStringObject(txt) + return createStringObject(txt,forceEncoding) class ByteStringObject(bytes_type, PdfObject): # type: ignore @@ -553,7 +554,8 @@ def writeToStream( @staticmethod def readFromStream( - stream: StreamType, pdf: Any # PdfFileReader + stream: StreamType, pdf: Any, # PdfFileReader + forcedEncoding: Union[None,str,list] = None ) -> "DictionaryObject": def getNextObjPos( p: int, p1: int, remGens: List[int], pdf: Any @@ -607,7 +609,7 @@ def readUnsizedFromSteam( key = readObject(stream, pdf) tok = readNonWhitespace(stream) stream.seek(-1, 1) - value = readObject(stream, pdf) + value = readObject(stream, pdf, forcedEncoding) if not data.get(key): data[key] = value elif pdf.strict: @@ -908,7 +910,7 @@ def setData(self, data: Any) -> None: class ContentStream(DecodedStreamObject): - def __init__(self, stream: Any, pdf: Any) -> None: + def __init__(self, stream: Any, pdf: Any, forcedEncoding: Union[None,str,list] = None) -> None: self.pdf = pdf # The inner list has two elements: @@ -926,6 +928,8 @@ def __init__(self, stream: Any, pdf: Any) -> None: stream = BytesIO(b_(data)) else: stream = BytesIO(b_(stream.getData())) + #self.savstream = stream + self.forcedEncoding = forcedEncoding self.__parseContentStream(stream) def __parseContentStream(self, stream: StreamType) -> None: @@ -957,7 +961,7 @@ def __parseContentStream(self, stream: StreamType) -> None: while peek not in (b_("\r"), b_("\n")): peek = stream.read(1) else: - operands.append(readObject(stream, None)) + operands.append(readObject(stream, None,self.forcedEncoding)) def _readInlineImage(self, stream: StreamType) -> Dict[str, Any]: # begin reading just after the "BI" - begin image @@ -1045,7 +1049,8 @@ def _data(self, value: Union[str, bytes]) -> None: def readObject( - stream: StreamType, pdf: Any # PdfFileReader + stream: StreamType, pdf: Any, # PdfFileReader + forcedEncoding: Union[None,str,list] = None ) -> Union[PdfObject, int, str, ContentStream]: tok = stream.read(1) stream.seek(-1, 1) # reset to start @@ -1058,15 +1063,15 @@ def readObject( stream.seek(-2, 1) # reset to start if peek == b_("<<"): - return DictionaryObject.readFromStream(stream, pdf) + return DictionaryObject.readFromStream(stream, pdf, forcedEncoding) else: return readHexStringFromStream(stream) elif idx == 2: - return ArrayObject.readFromStream(stream, pdf) + return ArrayObject.readFromStream(stream, pdf, forcedEncoding) elif idx == 3 or idx == 4: return BooleanObject.readFromStream(stream) elif idx == 5: - return readStringFromStream(stream) + return readStringFromStream(stream, forcedEncoding) elif idx == 6: return NullObject.readFromStream(stream) elif idx == 7: @@ -1079,7 +1084,7 @@ def readObject( raise PdfStreamError("File ended unexpectedly.") tok = readNonWhitespace(stream) stream.seek(-1, 1) - return readObject(stream, pdf) + return readObject(stream, pdf, forcedEncoding) else: # number object OR indirect reference peek = stream.read(20) @@ -1491,7 +1496,8 @@ def writeToStream( def createStringObject( - string: Union[str, bytes] + string: Union[str, bytes], + forceEncoding: Union[None,str,list] = None ) -> Union[TextStringObject, ByteStringObject]: """ Given a string, create a ByteStringObject or a TextStringObject to @@ -1501,7 +1507,17 @@ def createStringObject( :raises TypeError: If string is not of type str or bytes. """ - if isinstance(string, str): + if isinstance(forceEncoding,list): + out = "" + for x in string: + try: + out += forceEncoding[x] + except: + out += x + return x + elif isinstance(forceEncoding,str): + return TextStringObject(string.decode(forceEncoding)) + elif isinstance(string, str): return TextStringObject(string) elif isinstance(string, bytes_type): try: @@ -1527,7 +1543,7 @@ def encode_pdfdocencoding(unicode_string: str) -> bytes: retval = b_("") for c in unicode_string: try: - retval += b_(chr(_pdfDocEncoding_rev[c])) + retval += b_(chr(_pdfdoc_encoding_rev[c])) except KeyError: raise UnicodeEncodeError( "pdfdocencoding", c, -1, -1, "does not exist in translation table" @@ -1538,7 +1554,7 @@ def encode_pdfdocencoding(unicode_string: str) -> bytes: def decode_pdfdocencoding(byte_array: bytes) -> str: retval = "" for b in byte_array: - c = _pdfDocEncoding[ord_(b)] + c = _pdfdoc_encoding[ord_(b)] if c == "\u0000": raise UnicodeDecodeError( "pdfdocencoding", @@ -1555,7 +1571,7 @@ def decode_pdfdocencoding(byte_array: bytes) -> str: # C.1 Predefined encodings sorted by character name of another PDF reference # Some indices have '\u0000' although they should have something else: # 22: should be '\u0017' -_pdfDocEncoding = ( +_pdfdoc_encoding = ( "\u0000", "\u0001", "\u0002", @@ -1814,14 +1830,68 @@ def decode_pdfdocencoding(byte_array: bytes) -> str: "\u00ff", # 248 - 255 ) -assert len(_pdfDocEncoding) == 256 - -_pdfDocEncoding_rev: Dict[str, int] = {} -for i in range(256): - char = _pdfDocEncoding[i] - if char == "\u0000": - continue - assert char not in _pdfDocEncoding_rev, ( - str(char) + " at " + str(i) + " already at " + str(_pdfDocEncoding_rev[char]) - ) - _pdfDocEncoding_rev[char] = i +assert len(_pdfdoc_encoding) == 256 +def fill_from_encoding(enc:str)->list: + lst=() + for x in range(256): + try: + lst+=(bytes((x,)).decode(enc),) + except: + lst+=(chr(x),) + return lst +_win_encoding = fill_from_encoding("cp1252") +_mac_encoding = fill_from_encoding("mac_roman") +_std_encoding = ['\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07', + '\x08', '\t', '\n', '\x0b', '\x0c', '\r', '\x0e', '\x0f', + '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17', + '\x18', '\x19', '\x1a', '\x1b', '\x1c', '\x1d', '\x1e', '\x1f', + ' ', '!', '"', '#', '$', '%', '&', '’', + '(', ')', '*', '+', ',', '-', '.', '/', + '0', '1', '2', '3', '4', '5', '6', '7', + '8', '9', ':', ';', '<', '=', '>', '?', + '@', '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', '[', '\\', ']', '^', '_', + '‘', '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', '{', '|', '}', '~', '\x7f', + '\x80', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87', + '\x88', '\x89', '\x8a', '\x8b', '\x8c', '\x8d', '\x8e', '\x8f', + '\x90', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96', '\x97', + '\x98', '\x99', '\x9a', '\x9b', '\x9c', '\x9d', '\x9e', '\x9f', + '\xa0', '¡', '¢', '£', '⁄', '¥', 'ƒ', '§', + '¤', "'", '“', '«', '‹', '›', 'fi', 'fl', + '°', '–', '†', '‡', '·', 'µ', '¶', '•', + '‚', '„', '”', '»', '…', '‰', '¾', '¿', + 'À', '`', '´', 'ˆ', '˜', '¯', '˘', '˙', + '¨', 'É', '˚', '¸', 'Ì', '˝', '˛', 'ˇ', + '—', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', '×', + 'Ø', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'Þ', 'ß', + 'à', 'Æ', 'â', 'ª', 'ä', 'å', 'æ', 'ç', + 'Ł', 'Ø', 'Œ', 'º', 'ì', 'í', 'î', 'ï', + 'ð', 'æ', 'ò', 'ó', 'ô', 'ı', 'ö', '÷', + 'ł', 'ø', 'œ', 'ß', 'ü', 'ý', 'þ', 'ÿ'] + +def rev_encoding(enc : list ) -> Dict[str, int]: + rev : Dict[str, int] = {} + for i in range(256): + char = enc[i] + if char == "\u0000": + continue + assert char not in rev, ( + str(char) + " at " + str(i) + " already at " + str(rev[char]) + ) + rev[char] = i + return rev + +_pdfdoc_encoding_rev = rev_encoding(_pdfdoc_encoding) +_win_encoding_rev = rev_encoding(_win_encoding) +_mac_encoding_rev = rev_encoding(_mac_encoding) + +charset_encoding = {"/StandardCoding":_std_encoding, + "/WinAnsiEncoding":_win_encoding, + "/MacRomanEncoding":_mac_encoding, + "/PDFDocEncoding":_pdfdoc_encoding + } diff --git a/resources/crazyones.txt b/resources/crazyones.txt index 934edd8d1..3cc0eb9a5 100644 --- a/resources/crazyones.txt +++ b/resources/crazyones.txt @@ -1,20 +1,19 @@ - -The Crazy Ones +The Crazy Ones October 14, 1998 - -Heres to the crazy ones. The mis˝ts. The reb els. The troublemakers. -The round p egs in the square holes. -The ones who see things di˙erently. Theyre not fond of rules. And -they have no resp ect for the status quo. You can quote them, + +Heres to the crazy ones. The misfits. The rebels. The troublemakers. +The round pegs in the square holes. +The ones who see things differently. Theyre not fond of rules. And +they have no respect for the status quo. You can quote them, disagree with them, glorify or vilify them. -Ab out the only thing you cant do is ignore them. Because they change +About the only thing you cant do is ignore them. Because they change things. They invent. They imagine. They heal. They explore. They create. They inspire. They push the human race forward. -Mayb e they have to b e crazy. +Maybe they have to be crazy. How else can you stare at an empty canvas and see a work of art? Or -sit in silence and hear a song thats never b een written? Or gaze at -a red planet and see a lab oratory on wheels? -We make to ols for these kinds of p eople. +sit in silence and hear a song thats never been written? Or gaze at +a red planet and see a laboratory on wheels? +We make tools for these kinds of people. While some see them as the crazy ones, we see genius. Because the -p eople who are crazy enough to think they can change the world, +people who are crazy enough to think they can change the world, are the ones who do. From 6d35cd00d7a325a6a08d80dac64c7a55cbd8b471 Mon Sep 17 00:00:00 2001 From: Martin Thoma Date: Mon, 23 May 2022 23:31:54 +0200 Subject: [PATCH 03/27] Apply suggestions from code review --- PyPDF2/_page.py | 2 +- PyPDF2/generic.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/PyPDF2/_page.py b/PyPDF2/_page.py index 13c57ef6d..e3bc65c74 100644 --- a/PyPDF2/_page.py +++ b/PyPDF2/_page.py @@ -1085,7 +1085,7 @@ def buildCharMap(pdf, font_name="/a"): else: try: encoding[x] = adobe_glyphs[o] - except: + except Exception: encoding[x] = o x += 1 if "/ToUnicode" in pdf.getPage(0)["/Resources"]["/Font"][font_name]: diff --git a/PyPDF2/generic.py b/PyPDF2/generic.py index 465e15736..ed2178c48 100644 --- a/PyPDF2/generic.py +++ b/PyPDF2/generic.py @@ -1713,7 +1713,7 @@ def createStringObject( for x in string: try: out += forceEncoding[x] - except: + except Exception: out += x return x elif isinstance(forceEncoding,str): @@ -2037,7 +2037,7 @@ def fill_from_encoding(enc:str)->list: for x in range(256): try: lst+=(bytes((x,)).decode(enc),) - except: + except Exception: lst+=(chr(x),) return lst _win_encoding = fill_from_encoding("cp1252") From b386daf03e1baed886b5f5bb3e881425e8df66a9 Mon Sep 17 00:00:00 2001 From: Martin Thoma Date: Mon, 23 May 2022 23:36:31 +0200 Subject: [PATCH 04/27] Apply suggestions from code review --- PyPDF2/_page.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/PyPDF2/_page.py b/PyPDF2/_page.py index e3bc65c74..577197410 100644 --- a/PyPDF2/_page.py +++ b/PyPDF2/_page.py @@ -1070,9 +1070,9 @@ def buildCharMap(pdf, font_name="/a"): processRg = False processChar = False encoding = [] - fontType = pdf.getPage(0)["/Resources"]["/Font"][font_name]["/Subtype"] - if "/Encoding" in pdf.getPage(0)["/Resources"]["/Font"][font_name]: - enc= pdf.getPage(0)["/Resources"]["/Font"][font_name]["/Encoding"].getObject() + fontType = pdf.pages[0]["/Resources"]["/Font"][font_name]["/Subtype"] + if "/Encoding" in pdf.pages[0]["/Resources"]["/Font"][font_name]: + enc= pdf.pages[0]["/Resources"]["/Font"][font_name]["/Encoding"].get_object() if '/BaseEncoding' in enc: encoding = list(charset_encoding[enc['/BaseEncoding']]) else: @@ -1088,8 +1088,8 @@ def buildCharMap(pdf, font_name="/a"): except Exception: encoding[x] = o x += 1 - if "/ToUnicode" in pdf.getPage(0)["/Resources"]["/Font"][font_name]: - cm = pdf.getPage(0)["/Resources"]["/Font"][font_name]["/ToUnicode"].getData().decode('utf-8') + if "/ToUnicode" in pdf.pages[0]["/Resources"]["/Font"][font_name]: + cm = pdf.pages[0]["/Resources"]["/Font"][font_name]["/ToUnicode"].getData().decode('utf-8') for l in cm.strip().replace('<', '').replace('>', '').split('\n'): #print(l) if 'beginbfrange' in l: From de1e103876a3bb116d0071723a7260ac1852f527 Mon Sep 17 00:00:00 2001 From: pubpub-zz <4083478+pubpub-zz@users.noreply.github.com> Date: Thu, 26 May 2022 00:08:34 +0200 Subject: [PATCH 05/27] extractText improvement from testbench tests various fixes +add pytest with pypdftest --- PyPDF2/_page.py | 129 ++++++++------ PyPDF2/generic.py | 363 +++++++++++++++++++++++++++++++++------- tests/test_workflows.py | 38 +++++ 3 files changed, 413 insertions(+), 117 deletions(-) diff --git a/PyPDF2/_page.py b/PyPDF2/_page.py index bd51bdd8c..cde8e90ab 100644 --- a/PyPDF2/_page.py +++ b/PyPDF2/_page.py @@ -57,7 +57,7 @@ NumberObject, RectangleObject, TextStringObject, - charset_encoding + charset_encoding, ) from .utils import b_, matrixMultiply from ._adglyphs import adobe_glyphs @@ -755,17 +755,17 @@ def buildCharMap(pdf, font_name="/a"): processRg = False processChar = False encoding = [] - fontType = pdf.getPage(0)["/Resources"]["/Font"][font_name]["/Subtype"] - if "/Encoding" in pdf.getPage(0)["/Resources"]["/Font"][font_name]: - enc= pdf.getPage(0)["/Resources"]["/Font"][font_name]["/Encoding"].getObject() - if '/BaseEncoding' in enc: - encoding = list(charset_encoding[enc['/BaseEncoding']]) + fontType = self["/Resources"]["/Font"][font_name]["/Subtype"] + if "/Encoding" in self["/Resources"]["/Font"][font_name]: + enc = self["/Resources"]["/Font"][font_name]["/Encoding"].getObject() + if "/BaseEncoding" in enc: + encoding = list(charset_encoding[enc["/BaseEncoding"]]) else: - encoding = list(charset_encoding['/StandardCoding']) - if '/Differences' in enc: - x=0 - for o in enc['/Differences']: - if isinstance(o,int): + encoding = list(charset_encoding["/StandardCoding"]) + if "/Differences" in enc: + x = 0 + for o in enc["/Differences"]: + if isinstance(o, int): x = o else: try: @@ -773,82 +773,102 @@ def buildCharMap(pdf, font_name="/a"): except: encoding[x] = o x += 1 - if "/ToUnicode" in pdf.getPage(0)["/Resources"]["/Font"][font_name]: - cm = pdf.getPage(0)["/Resources"]["/Font"][font_name]["/ToUnicode"].getData().decode('utf-8') - for l in cm.strip().replace('<', '').replace('>', '').split('\n'): - #print(l) - if 'beginbfrange' in l: + if "/ToUnicode" in self["/Resources"]["/Font"][font_name]: + cm = ( + self["/Resources"]["/Font"][font_name]["/ToUnicode"] + .getData() + .decode("utf-8") + ) + for l in ( + cm.strip() + .replace("<", " ") + .replace(">", "") + .replace("[", " [ ") + .replace("]", " ] ") + .split("\n") + ): + if l == "": + continue + if "beginbfrange" in l: processRg = True - elif 'endbfrange' in l: + elif "endbfrange" in l: processRg = False - elif 'beginbfchar' in l: + elif "beginbfchar" in l: processChar = True - elif 'endbfchar' in l: + elif "endbfchar" in l: processChar = False elif processRg: - lst=l.split(' ',2) - a=int(lst[0], 16) - b=int(lst[1], 16) - if lst[2] == '[': - lst = lst[2].trim(' []').split(' ') - for sq in lst: + lst = [x for x in l.split(" ") if x] + a = int(lst[0], 16) + b = int(lst[1], 16) + if lst[2] == "[": + # lst = lst[3:].trim(' []').split(' ') + for sq in lst[3:]: + if "]": + break mapDict[a] = unhexlify(sq).decode("utf-16-be") a += 1 - assert a>b + assert a > b else: - c = int(lst[2],16) - while(a<=b): - mapDict[a] = chr(c) + c = int(lst[2], 16) + fmt = b"%%0%dX" % len(lst[2]) + while a <= b: + mapDict[a] = unhexlify(fmt % c).decode("utf-16-be") a += 1 c += 1 elif processChar: - lst=l.split(' ',2) - a=int(lst[0], 16) + lst = [x for x in l.split(" ") if x] + a = int(lst[0], 16) mapDict[a] = unhexlify(lst[1]).decode("utf-16-be") - return fontType, dict(zip(range(256),encoding)), "".maketrans(mapDict) - #------- end of buildCharmap ------ + return fontType, dict(zip(range(256), encoding)), "".maketrans(mapDict) + + # ------- end of buildCharmap ------ text = "" output = "" cmap = {} content = self[PG.CONTENTS].getObject() if not isinstance(content, ContentStream): - content = ContentStream(content, self.pdf,"charmap") + content = ContentStream(content, self.pdf, "charmap") # Note: we check all strings are TextStringObjects. ByteStringObjects # are strings where the byte->string encoding was unknown, so adding # them to the text here would be gibberish. - #charSize = 1.0 - #charScale = 1.0 + # charSize = 1.0 + # charScale = 0.0 + spaceScale = 1.0 for operands, operator in content.operations: if operator == b_("Tf"): - if text!="": + if text != "": output += text.translate(cmap) - ft,cmap,cmap2 = buildCharMap(self.pdf,operands[0]) - #print(ft,"\n",cmap,"\n--------------\n",cmap2) - #charSize = operands[1] # reserved + ft, cmap, cmap2 = buildCharMap(self.pdf, operands[0]) + # print(ft,"\n",cmap,"\n--------------\n",cmap2) + # charSize = operands[1] # reserved if output == "": text = "" else: text = " " - #elif operator == b_("Tc"): - #charScale = 1.0 + float(operands[0]) + # elif operator == b_("Tc"): + # charScale = 1.0 + float(operands[0]) + elif operator == b_("Tw"): + spaceScale = 1.0 + float(operands[0]) elif operator == b_("Tj"): _text = operands[0] if isinstance(_text, TextStringObject): text += Tj_sep text += _text - #text += "\n" + # text += "\n" # see Pdf Reference 1.7 page 406 - elif ((operator in [b_("T*"),b_("ET")]) or - ((operator in [b_("Td"),b_("TD")]) and operands[1] != 0)): + elif (operator in [b_("T*"), b_("ET")]) or ( + (operator in [b_("Td"), b_("TD")]) and operands[1] != 0 + ): if text != "": output += text.translate(cmap) + "\n" text = "" - elif ((operator in [b_("Td")]) and (operands[1] == 0)): - if operands[-1]>0: - print("back ",operands[-1]) - elif operands[-1]<0: - print("back ",operands[-1]) + elif (operator in [b_("Td")]) and (operands[1] == 0): + if operands[-1] > 0: + print("back ", operands[-1]) + elif operands[-1] < 0: + print("back ", operands[-1]) elif operator == b_("'"): output += text.translate(cmap) + "\n" _text = operands[0] @@ -865,17 +885,18 @@ def buildCharMap(pdf, font_name="/a"): if isinstance(i, TextStringObject): text += TJ_sep text += i - elif isinstance(i, NumberObject): + elif isinstance(i, (NumberObject, FloatObject)): # a positive value decreases and the negative value increases # space - if i<-500 or i>500:print("TJ:",text,"*",i) - if int(i) < -200: + # if abs(i)>spaceScale*1000:print("TJ:",text,"*",i) + # print(text,i) + if int(i) < -spaceScale * 250: if len(text) == 0 or text[-1] != " ": text += " " else: if len(text) > 1 and text[-1] == " ": text = text[:-1] - #text += "\n" + # text += "\n" output += text.translate(cmap) return output diff --git a/PyPDF2/generic.py b/PyPDF2/generic.py index 5442d2178..b586a0e04 100644 --- a/PyPDF2/generic.py +++ b/PyPDF2/generic.py @@ -5,7 +5,7 @@ # modification, are permitted provided that the following conditions are # met: # -# * Redistributions of source code must retain the above copyright notice, +# * Redistri butions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation @@ -132,7 +132,9 @@ def writeToStream( stream.write(b_(" ]")) @staticmethod - def readFromStream(stream: StreamType, pdf: Any, forcedEncoding: Union[None,str,list] = None) -> "ArrayObject": # PdfFileReader + def readFromStream( + stream: StreamType, pdf: Any, forcedEncoding: Union[None, str, list[int]] = None + ) -> "ArrayObject": # PdfFileReader arr = ArrayObject() tmp = stream.read(1) if tmp != b_("["): @@ -301,7 +303,7 @@ def readHexStringFromStream( def readStringFromStream( stream: StreamType, - forceEncoding: Union[None,str,list] = None, + forcedEncoding: Union[None, str, list[int]] = None, ) -> Union["TextStringObject", "ByteStringObject"]: tok = stream.read(1) parens = 1 @@ -372,7 +374,7 @@ def readStringFromStream( # if.strict: PdfReadError(msg) logger.warning(msg) txt += tok - return createStringObject(txt,forceEncoding) + return createStringObject(txt, forcedEncoding) class ByteStringObject(bytes_type, PdfObject): # type: ignore @@ -554,8 +556,9 @@ def writeToStream( @staticmethod def readFromStream( - stream: StreamType, pdf: Any, # PdfFileReader - forcedEncoding: Union[None,str,list] = None + stream: StreamType, + pdf: Any, # PdfFileReader + forcedEncoding: Union[None, str, list[int]] = None, ) -> "DictionaryObject": def getNextObjPos( p: int, p1: int, remGens: List[int], pdf: Any @@ -910,7 +913,9 @@ def setData(self, data: Any) -> None: class ContentStream(DecodedStreamObject): - def __init__(self, stream: Any, pdf: Any, forcedEncoding: Union[None,str,list] = None) -> None: + def __init__( + self, stream: Any, pdf: Any, forcedEncoding: Union[None, str, list[int]] = None + ) -> None: self.pdf = pdf # The inner list has two elements: @@ -928,7 +933,7 @@ def __init__(self, stream: Any, pdf: Any, forcedEncoding: Union[None,str,list] = stream = BytesIO(b_(data)) else: stream = BytesIO(b_(stream.getData())) - #self.savstream = stream + # self.savstream = stream self.forcedEncoding = forcedEncoding self.__parseContentStream(stream) @@ -961,7 +966,7 @@ def __parseContentStream(self, stream: StreamType) -> None: while peek not in (b_("\r"), b_("\n")): peek = stream.read(1) else: - operands.append(readObject(stream, None,self.forcedEncoding)) + operands.append(readObject(stream, None, self.forcedEncoding)) def _readInlineImage(self, stream: StreamType) -> Dict[str, Any]: # begin reading just after the "BI" - begin image @@ -1049,8 +1054,9 @@ def _data(self, value: Union[str, bytes]) -> None: def readObject( - stream: StreamType, pdf: Any, # PdfFileReader - forcedEncoding: Union[None,str,list] = None + stream: StreamType, + pdf: Any, # PdfFileReader + forcedEncoding: Union[None, str, list[int]] = None, ) -> Union[PdfObject, int, str, ContentStream]: tok = stream.read(1) stream.seek(-1, 1) # reset to start @@ -1345,7 +1351,6 @@ def __init__( self[NameObject("/Page")] = page self[NameObject("/Type")] = typ - # from table 8.2 of the PDF 1.7 reference. if typ == "/XYZ": ( @@ -1496,8 +1501,7 @@ def writeToStream( def createStringObject( - string: Union[str, bytes], - forceEncoding: Union[None,str,list] = None + string: Union[str, bytes], forcedEncoding: Union[None, str, list[int]] = None ) -> Union[TextStringObject, ByteStringObject]: """ Given a string, create a ByteStringObject or a TextStringObject to @@ -1507,16 +1511,16 @@ def createStringObject( :raises TypeError: If string is not of type str or bytes. """ - if isinstance(forceEncoding,list): + if isinstance(forcedEncoding, list): out = "" for x in string: try: - out += forceEncoding[x] + out += forcedEncoding[x] except: - out += x + out += chr(x) return x - elif isinstance(forceEncoding,str): - return TextStringObject(string.decode(forceEncoding)) + elif isinstance(forcedEncoding, str): + return TextStringObject(string.decode(forcedEncoding)) elif isinstance(string, str): return TextStringObject(string) elif isinstance(string, bytes_type): @@ -1831,51 +1835,282 @@ def decode_pdfdocencoding(byte_array: bytes) -> str: ) assert len(_pdfdoc_encoding) == 256 -def fill_from_encoding(enc:str)->list: - lst=() + + +def fill_from_encoding(enc: str) -> list: + lst = () for x in range(256): try: - lst+=(bytes((x,)).decode(enc),) + lst += (bytes((x,)).decode(enc),) except: - lst+=(chr(x),) + lst += (chr(x),) return lst + + _win_encoding = fill_from_encoding("cp1252") _mac_encoding = fill_from_encoding("mac_roman") -_std_encoding = ['\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07', - '\x08', '\t', '\n', '\x0b', '\x0c', '\r', '\x0e', '\x0f', - '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17', - '\x18', '\x19', '\x1a', '\x1b', '\x1c', '\x1d', '\x1e', '\x1f', - ' ', '!', '"', '#', '$', '%', '&', '’', - '(', ')', '*', '+', ',', '-', '.', '/', - '0', '1', '2', '3', '4', '5', '6', '7', - '8', '9', ':', ';', '<', '=', '>', '?', - '@', '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', '[', '\\', ']', '^', '_', - '‘', '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', '{', '|', '}', '~', '\x7f', - '\x80', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87', - '\x88', '\x89', '\x8a', '\x8b', '\x8c', '\x8d', '\x8e', '\x8f', - '\x90', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96', '\x97', - '\x98', '\x99', '\x9a', '\x9b', '\x9c', '\x9d', '\x9e', '\x9f', - '\xa0', '¡', '¢', '£', '⁄', '¥', 'ƒ', '§', - '¤', "'", '“', '«', '‹', '›', 'fi', 'fl', - '°', '–', '†', '‡', '·', 'µ', '¶', '•', - '‚', '„', '”', '»', '…', '‰', '¾', '¿', - 'À', '`', '´', 'ˆ', '˜', '¯', '˘', '˙', - '¨', 'É', '˚', '¸', 'Ì', '˝', '˛', 'ˇ', - '—', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', '×', - 'Ø', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'Þ', 'ß', - 'à', 'Æ', 'â', 'ª', 'ä', 'å', 'æ', 'ç', - 'Ł', 'Ø', 'Œ', 'º', 'ì', 'í', 'î', 'ï', - 'ð', 'æ', 'ò', 'ó', 'ô', 'ı', 'ö', '÷', - 'ł', 'ø', 'œ', 'ß', 'ü', 'ý', 'þ', 'ÿ'] - -def rev_encoding(enc : list ) -> Dict[str, int]: - rev : Dict[str, int] = {} +_std_encoding = [ + "\x00", + "\x01", + "\x02", + "\x03", + "\x04", + "\x05", + "\x06", + "\x07", + "\x08", + "\t", + "\n", + "\x0b", + "\x0c", + "\r", + "\x0e", + "\x0f", + "\x10", + "\x11", + "\x12", + "\x13", + "\x14", + "\x15", + "\x16", + "\x17", + "\x18", + "\x19", + "\x1a", + "\x1b", + "\x1c", + "\x1d", + "\x1e", + "\x1f", + " ", + "!", + '"', + "#", + "$", + "%", + "&", + "’", + "(", + ")", + "*", + "+", + ",", + "-", + ".", + "/", + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + ":", + ";", + "<", + "=", + ">", + "?", + "@", + "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", + "[", + "\\", + "]", + "^", + "_", + "‘", + "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", + "{", + "|", + "}", + "~", + "\x7f", + "\x80", + "\x81", + "\x82", + "\x83", + "\x84", + "\x85", + "\x86", + "\x87", + "\x88", + "\x89", + "\x8a", + "\x8b", + "\x8c", + "\x8d", + "\x8e", + "\x8f", + "\x90", + "\x91", + "\x92", + "\x93", + "\x94", + "\x95", + "\x96", + "\x97", + "\x98", + "\x99", + "\x9a", + "\x9b", + "\x9c", + "\x9d", + "\x9e", + "\x9f", + "\xa0", + "¡", + "¢", + "£", + "⁄", + "¥", + "ƒ", + "§", + "¤", + "'", + "“", + "«", + "‹", + "›", + "fi", + "fl", + "°", + "–", + "†", + "‡", + "·", + "µ", + "¶", + "•", + "‚", + "„", + "”", + "»", + "…", + "‰", + "¾", + "¿", + "À", + "`", + "´", + "ˆ", + "˜", + "¯", + "˘", + "˙", + "¨", + "É", + "˚", + "¸", + "Ì", + "˝", + "˛", + "ˇ", + "—", + "Ñ", + "Ò", + "Ó", + "Ô", + "Õ", + "Ö", + "×", + "Ø", + "Ù", + "Ú", + "Û", + "Ü", + "Ý", + "Þ", + "ß", + "à", + "Æ", + "â", + "ª", + "ä", + "å", + "æ", + "ç", + "Ł", + "Ø", + "Œ", + "º", + "ì", + "í", + "î", + "ï", + "ð", + "æ", + "ò", + "ó", + "ô", + "ı", + "ö", + "÷", + "ł", + "ø", + "œ", + "ß", + "ü", + "ý", + "þ", + "ÿ", +] + + +def rev_encoding(enc: list) -> Dict[str, int]: + rev: Dict[str, int] = {} for i in range(256): char = enc[i] if char == "\u0000": @@ -1886,12 +2121,14 @@ def rev_encoding(enc : list ) -> Dict[str, int]: rev[char] = i return rev + _pdfdoc_encoding_rev = rev_encoding(_pdfdoc_encoding) _win_encoding_rev = rev_encoding(_win_encoding) _mac_encoding_rev = rev_encoding(_mac_encoding) -charset_encoding = {"/StandardCoding":_std_encoding, - "/WinAnsiEncoding":_win_encoding, - "/MacRomanEncoding":_mac_encoding, - "/PDFDocEncoding":_pdfdoc_encoding - } +charset_encoding = { + "/StandardCoding": _std_encoding, + "/WinAnsiEncoding": _win_encoding, + "/MacRomanEncoding": _mac_encoding, + "/PDFDocEncoding": _pdfdoc_encoding, +} diff --git a/tests/test_workflows.py b/tests/test_workflows.py index 41dca700b..f4306a02c 100644 --- a/tests/test_workflows.py +++ b/tests/test_workflows.py @@ -2,6 +2,9 @@ import os import sys +from io import BytesIO +import urllib.request + import pytest from PyPDF2 import PdfFileReader @@ -100,3 +103,38 @@ def test_rotate_45(): with pytest.raises(ValueError) as exc: page.rotateCounterClockwise(45) assert exc.value.args[0] == "Rotation angle must be a multiple of 90" + + +@pytest.mark.parametrize( + ("enable", "url", "pages"), + [ + (True, "https://arxiv.org/pdf/2201.00214.pdf", [0, 1, 5, 10]), + ( + True, + "https://github.com/py-pdf/sample-files/raw/main/009-pdflatex-geotopo/GeoTopo.pdf", + [0, 1, 5, 10], + ), + (True, "https://arxiv.org/pdf/2201.00151.pdf", [0, 1, 5, 10]), + (True, "https://arxiv.org/pdf/1707.09725.pdf", [0, 1, 5, 10]), + (True, "https://arxiv.org/pdf/2201.00021.pdf", [0, 1, 5, 8]), + (True, "https://arxiv.org/pdf/2201.00037.pdf", [0, 1, 5, 10]), + (True, "https://arxiv.org/pdf/2201.00069.pdf", [0, 1, 5, 10]), + (True, "https://arxiv.org/pdf/2201.00178.pdf", [0, 1, 5, 10]), + (True, "https://arxiv.org/pdf/2201.00201.pdf", [0, 1, 5, 8]), + (True, "https://arxiv.org/pdf/1602.06541.pdf", [0, 1, 5, 10]), + (True, "https://arxiv.org/pdf/2201.00200.pdf", [0, 1, 5, 6]), + (True, "https://arxiv.org/pdf/2201.00022.pdf", [0, 1, 5, 10]), + (True, "https://arxiv.org/pdf/2201.00029.pdf", [0, 1, 5, 10]), + (True, "https://arxiv.org/pdf/1601.03642.pdf", [0, 1, 5, 7]), + ], +) +def test_extract_textbench(enable, url, pages, printResult=False): + if not enable: + return + p = PdfFileReader(BytesIO(urllib.request.urlopen(url).read())) + for n in pages: + if printResult: + print(f"**************** {url} / page {n} ****************") + rst = p.getPage(n).extractText() + if printResult: + print(f"{rst}\n*****************************\n") From 617176eab4cd31720ebb3417f078135c28cefa3c Mon Sep 17 00:00:00 2001 From: pubpub-zz <4083478+pubpub-zz@users.noreply.github.com> Date: Thu, 26 May 2022 00:46:53 +0200 Subject: [PATCH 06/27] 2.0.0 new API upgrade --- PyPDF2/_page.py | 9 +++++++-- PyPDF2/generic.py | 3 --- tests/test_workflows.py | 22 +++++++++++----------- 3 files changed, 18 insertions(+), 16 deletions(-) diff --git a/PyPDF2/_page.py b/PyPDF2/_page.py index 497beded3..d96fe3aac 100644 --- a/PyPDF2/_page.py +++ b/PyPDF2/_page.py @@ -1072,7 +1072,7 @@ def buildCharMap(pdf, font_name="/a"): encoding = [] fontType = self["/Resources"]["/Font"][font_name]["/Subtype"] if "/Encoding" in self["/Resources"]["/Font"][font_name]: - enc = self["/Resources"]["/Font"][font_name]["/Encoding"].getObject() + enc = self["/Resources"]["/Font"][font_name]["/Encoding"].get_object() if "/BaseEncoding" in enc: encoding = list(charset_encoding[enc["/BaseEncoding"]]) else: @@ -1140,6 +1140,10 @@ def buildCharMap(pdf, font_name="/a"): # ------- end of buildCharmap ------ text = "" output = "" + cmaps={} + if "/Font" in self["/Resources"]: + for f in self["/Resources"]["/Font"]: + cmaps[f] = buildCharMap(self.pdf, f) cmap = {} content = self[PG.CONTENTS].get_object() if not isinstance(content, ContentStream): @@ -1155,7 +1159,8 @@ def buildCharMap(pdf, font_name="/a"): if operator == b_("Tf"): if text != "": output += text.translate(cmap) - ft, cmap, cmap2 = buildCharMap(self.pdf, operands[0]) + #ft, cmap, cmap2 = buildCharMap(self.pdf, operands[0]) + cmap = cmaps[operands[0]][1] # print(ft,"\n",cmap,"\n--------------\n",cmap2) # charSize = operands[1] # reserved if output == "": diff --git a/PyPDF2/generic.py b/PyPDF2/generic.py index fd1171913..7c6c14977 100644 --- a/PyPDF2/generic.py +++ b/PyPDF2/generic.py @@ -139,9 +139,6 @@ def write_to_stream( stream.write(b_(" ]")) @staticmethod - def readFromStream( - stream: StreamType, pdf: Any, forcedEncoding: Union[None, str, list[int]] = None - ) -> "ArrayObject": # PdfFileReader def read_from_stream(stream: StreamType, pdf: Any, forcedEncoding: Union[None,str,list] = None) -> "ArrayObject": # PdfReader arr = ArrayObject() tmp = stream.read(1) diff --git a/tests/test_workflows.py b/tests/test_workflows.py index fd3438f44..86a6c1893 100644 --- a/tests/test_workflows.py +++ b/tests/test_workflows.py @@ -7,7 +7,7 @@ import pytest -from PyPDF2 import PdfReader +from PyPDF2 import PdfFileReader from PyPDF2.constants import PageAttributes as PG TESTS_ROOT = os.path.abspath(os.path.dirname(__file__)) @@ -25,7 +25,7 @@ def test_PdfReaderFileLoad(): with open(os.path.join(RESOURCE_ROOT, "crazyones.pdf"), "rb") as inputfile: # Load PDF file from file - reader = PdfReader(inputfile) + reader = PdfFileReader(inputfile) page = reader.pages[0] # Retrieve the text of the PDF @@ -52,7 +52,7 @@ def test_PdfReaderJpegImage(): with open(os.path.join(RESOURCE_ROOT, "jpeg.pdf"), "rb") as inputfile: # Load PDF file from file - reader = PdfReader(inputfile) + reader = PdfFileReader(inputfile) # Retrieve the text of the image with open(os.path.join(RESOURCE_ROOT, "jpeg.txt")) as pdftext_file: @@ -73,32 +73,32 @@ def test_decrypt(): with open( os.path.join(RESOURCE_ROOT, "libreoffice-writer-password.pdf"), "rb" ) as inputfile: - reader = PdfReader(inputfile) - assert reader.is_encrypted == True + reader = PdfFileReader(inputfile) + assert reader.isEncrypted == True reader.decrypt("openpassword") assert reader.numPages == 1 - assert reader.is_encrypted == True + assert reader.isEncrypted == True metadict = reader.getDocumentInfo() assert dict(metadict) == { "/CreationDate": "D:20220403203552+02'00'", "/Creator": "Writer", "/Producer": "LibreOffice 6.4", } - # Is extract_text() broken for encrypted files? - # assert reader.pages[0].extract_text().replace('\n', '') == "\n˘\n\u02c7\u02c6˙\n\n\n˘\u02c7\u02c6˙\n\n" + # Is extractText() broken for encrypted files? + # assert reader.pages(0).extractText().replace('\n', '') == "\n˘\n\u02c7\u02c6˙\n\n\n˘\u02c7\u02c6˙\n\n" @pytest.mark.parametrize("degree", [0, 90, 180, 270, 360, -90]) def test_rotate(degree): with open(os.path.join(RESOURCE_ROOT, "crazyones.pdf"), "rb") as inputfile: - reader = PdfReader(inputfile) + reader = PdfFileReader(inputfile) page = reader.pages[0] page.rotateCounterClockwise(degree) def test_rotate_45(): with open(os.path.join(RESOURCE_ROOT, "crazyones.pdf"), "rb") as inputfile: - reader = PdfReader(inputfile) + reader = PdfFileReader(inputfile) page = reader.pages[0] with pytest.raises(ValueError) as exc: page.rotateCounterClockwise(45) @@ -135,6 +135,6 @@ def test_extract_textbench(enable, url, pages, printResult=False): for n in pages: if printResult: print(f"**************** {url} / page {n} ****************") - rst = p.getPage(n).extractText() + rst = p.pages[n].extractText() if printResult: print(f"{rst}\n*****************************\n") From 8f470805edb32ce9b0ec1cb0538d52c6ebd14f86 Mon Sep 17 00:00:00 2001 From: pubpub-zz <4083478+pubpub-zz@users.noreply.github.com> Date: Thu, 26 May 2022 00:50:07 +0200 Subject: [PATCH 07/27] late fix --- PyPDF2/generic.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PyPDF2/generic.py b/PyPDF2/generic.py index 7c6c14977..a3a714084 100644 --- a/PyPDF2/generic.py +++ b/PyPDF2/generic.py @@ -1713,7 +1713,7 @@ def createStringObject( out = "" for x in string: try: - out += forceEncoding[x] + out += forcedEncoding[x] except Exception: out += x return x From 7eee1b711b6d928cfa0e2348d007db6953ec8f2f Mon Sep 17 00:00:00 2001 From: pubpub-zz <4083478+pubpub-zz@users.noreply.github.com> Date: Thu, 26 May 2022 00:54:41 +0200 Subject: [PATCH 08/27] Late Fix 2 --- PyPDF2/generic.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/PyPDF2/generic.py b/PyPDF2/generic.py index a3a714084..9827c013a 100644 --- a/PyPDF2/generic.py +++ b/PyPDF2/generic.py @@ -306,7 +306,7 @@ def readHexStringFromStream( def readStringFromStream( stream: StreamType, - forcedEncoding: Union[None, str, list[int]] = None, + forcedEncoding: Union[None, str, List[int]] = None, ) -> Union["TextStringObject", "ByteStringObject"]: tok = stream.read(1) parens = 1 @@ -920,7 +920,7 @@ def setData(self, data: Any) -> None: class ContentStream(DecodedStreamObject): def __init__( - self, stream: Any, pdf: Any, forcedEncoding: Union[None, str, list[int]] = None + self, stream: Any, pdf: Any, forcedEncoding: Union[None, str, List[int]] = None ) -> None: self.pdf = pdf @@ -1699,7 +1699,7 @@ def write_to_stream( def createStringObject( - string: Union[str, bytes], forcedEncoding: Union[None, str, list[int]] = None + string: Union[str, bytes], forcedEncoding: Union[None, str, List[int]] = None ) -> Union[TextStringObject, ByteStringObject]: """ Given a string, create a ByteStringObject or a TextStringObject to From 930eaac80cf1c8c7e7f5f3943ab12ec70fdb73d6 Mon Sep 17 00:00:00 2001 From: pubpub-zz <4083478+pubpub-zz@users.noreply.github.com> Date: Fri, 27 May 2022 14:24:50 +0200 Subject: [PATCH 09/27] make mypy happy also includes a little of rewrite --- PyPDF2/_page.py | 76 ++++++++++++++++++++++++++++++------------- PyPDF2/generic.py | 83 ++++++++++++++++++++++++----------------------- 2 files changed, 95 insertions(+), 64 deletions(-) diff --git a/PyPDF2/_page.py b/PyPDF2/_page.py index d96fe3aac..a2c4e721f 100644 --- a/PyPDF2/_page.py +++ b/PyPDF2/_page.py @@ -41,9 +41,11 @@ Optional, Tuple, Union, + List, cast, ) +from .errors import PdfReadWarning #,PdfReadError from ._utils import ( DEPR_MSG, DEPR_MSG_NO_REPLACEMENT, @@ -59,6 +61,7 @@ ArrayObject, ContentStream, DictionaryObject, + DecodedStreamObject, FloatObject, IndirectObject, NameObject, @@ -1065,21 +1068,41 @@ def extract_text(self, Tj_sep: str = "", TJ_sep: str = "") -> str: :return: a string object. """ # code freely inspired from @twiggy ; see #711 - def buildCharMap(pdf, font_name="/a"): - mapDict = {} - processRg = False - processChar = False - encoding = [] - fontType = self["/Resources"]["/Font"][font_name]["/Subtype"] - if "/Encoding" in self["/Resources"]["/Font"][font_name]: - enc = self["/Resources"]["/Font"][font_name]["/Encoding"].get_object() - if "/BaseEncoding" in enc: - encoding = list(charset_encoding[enc["/BaseEncoding"]]) + def buildCharMap(font_name : str)->tuple[str,Dict,Dict]: + mapDict : Any = {} + processRg : bool = False + processChar : bool = False + encoding : List[str] = [] + fontType :str = cast(NameObject, cast(DictionaryObject, + cast(DictionaryObject, + cast(DictionaryObject, self["/Resources"])["/Font"] + )[font_name] + )["/Subtype"]) + if "/Encoding" in cast(DictionaryObject, cast(DictionaryObject, cast(DictionaryObject, self["/Resources"])["/Font"])[font_name]): + enc = cast(DictionaryObject, + cast(DictionaryObject, + cast(DictionaryObject, + cast(DictionaryObject, self["/Resources"])["/Font"] + )[font_name] + )["/Encoding"] + ).get_object() + if isinstance(enc,str): + try: + encoding = charset_encoding[enc] + except: + warnings.warn(f"Advanced encoding {encoding} not implemented yet",PdfReadWarning) + encoding = charset_encoding["/StandardCoding"] + elif isinstance(enc, DictionaryObject) and "/BaseEncoding" in enc: + try: + encoding = charset_encoding[cast(str,enc["/BaseEncoding"])] + except: + warnings.warn(f"Advanced encoding {encoding} not implemented yet",PdfReadWarning) + encoding = charset_encoding["/StandardCoding"] else: - encoding = list(charset_encoding["/StandardCoding"]) - if "/Differences" in enc: + encoding = charset_encoding["/StandardCoding"] + if "/Differences" in cast(DictionaryObject,enc): x = 0 - for o in enc["/Differences"]: + for o in cast(DictionaryObject,cast(DictionaryObject,enc)["/Differences"]): if isinstance(o, int): x = o else: @@ -1088,9 +1111,17 @@ def buildCharMap(pdf, font_name="/a"): except Exception: encoding[x] = o x += 1 - if "/ToUnicode" in self["/Resources"]["/Font"][font_name]: + if "/ToUnicode" in cast(DictionaryObject, + cast(DictionaryObject, + cast(DictionaryObject,self["/Resources"])["/Font"] + )[font_name]): cm = ( - self["/Resources"]["/Font"][font_name]["/ToUnicode"] + cast(DecodedStreamObject, + cast(DictionaryObject, + cast(DictionaryObject, + cast(DictionaryObject,self["/Resources"])["/Font"] + )[font_name] + )["/ToUnicode"]) .getData() .decode("utf-8") ) @@ -1136,15 +1167,14 @@ def buildCharMap(pdf, font_name="/a"): a = int(lst[0], 16) mapDict[a] = unhexlify(lst[1]).decode("utf-16-be") return fontType, dict(zip(range(256), encoding)), "".maketrans(mapDict) - # ------- end of buildCharmap ------ - text = "" - output = "" - cmaps={} - if "/Font" in self["/Resources"]: - for f in self["/Resources"]["/Font"]: - cmaps[f] = buildCharMap(self.pdf, f) - cmap = {} + text: str = "" + output: str = "" + cmaps: Dict[str, tuple[str, Dict[int,str],Dict[str,str]]]={} + if "/Font" in cast(DictionaryObject,self["/Resources"]): + for f in cast(DictionaryObject,cast(DictionaryObject,self["/Resources"])["/Font"]): + cmaps[f] = buildCharMap(f) + cmap: Union[str, Dict[int,str]]= {} content = self[PG.CONTENTS].get_object() if not isinstance(content, ContentStream): content = ContentStream(content, self.pdf, "charmap") diff --git a/PyPDF2/generic.py b/PyPDF2/generic.py index 9827c013a..f331d96f1 100644 --- a/PyPDF2/generic.py +++ b/PyPDF2/generic.py @@ -139,7 +139,7 @@ def write_to_stream( stream.write(b_(" ]")) @staticmethod - def read_from_stream(stream: StreamType, pdf: Any, forcedEncoding: Union[None,str,list] = None) -> "ArrayObject": # PdfReader + def read_from_stream(stream: StreamType, pdf: Any, forcedEncoding: Union[None,str,List[str],dict[int,str]] = None) -> "ArrayObject": # PdfReader arr = ArrayObject() tmp = stream.read(1) if tmp != b_("["): @@ -306,7 +306,7 @@ def readHexStringFromStream( def readStringFromStream( stream: StreamType, - forcedEncoding: Union[None, str, List[int]] = None, + forcedEncoding: Union[None,str,List[str],dict[int,str]] = None, ) -> Union["TextStringObject", "ByteStringObject"]: tok = stream.read(1) parens = 1 @@ -564,7 +564,7 @@ def write_to_stream( @staticmethod def read_from_stream( stream: StreamType, pdf: Any, # PdfReader - forcedEncoding: Union[None,str,list] = None + forcedEncoding: Union[None,str,List[str],dict[int,str]] = None ) -> "DictionaryObject": def getNextObjPos( p: int, p1: int, remGens: List[int], pdf: Any @@ -920,7 +920,7 @@ def setData(self, data: Any) -> None: class ContentStream(DecodedStreamObject): def __init__( - self, stream: Any, pdf: Any, forcedEncoding: Union[None, str, List[int]] = None + self, stream: Any, pdf: Any, forcedEncoding: Union[None,str,List[str],dict[int,str]] = None ) -> None: self.pdf = pdf @@ -1061,7 +1061,7 @@ def _data(self, value: Union[str, bytes]) -> None: def read_object( stream: StreamType, pdf: Any, # PdfReader - forcedEncoding: Union[None,str,list] = None + forcedEncoding: Union[None,str,List[str],dict[int,str]] = None ) -> Union[PdfObject, int, str, ContentStream]: tok = stream.read(1) stream.seek(-1, 1) # reset to start @@ -1699,7 +1699,7 @@ def write_to_stream( def createStringObject( - string: Union[str, bytes], forcedEncoding: Union[None, str, List[int]] = None + string: Union[str, bytes], forcedEncoding: Union[None,str,List[str],dict[int,str]] = None ) -> Union[TextStringObject, ByteStringObject]: """ Given a string, create a ByteStringObject or a TextStringObject to @@ -1709,34 +1709,35 @@ def createStringObject( :raises TypeError: If string is not of type str or bytes. """ - if isinstance(forcedEncoding, list): - out = "" - for x in string: - try: - out += forcedEncoding[x] - except Exception: - out += x - return x - elif isinstance(forcedEncoding, str): - return TextStringObject(string.decode(forcedEncoding)) - elif isinstance(string, str): + if isinstance(string, str): return TextStringObject(string) elif isinstance(string, bytes_type): - try: - if string.startswith(codecs.BOM_UTF16_BE): - retval = TextStringObject(string.decode("utf-16")) - retval.autodetect_utf16 = True - return retval - else: - # This is probably a big performance hit here, but we need to - # convert string objects into the text/unicode-aware version if - # possible... and the only way to check if that's possible is - # to try. Some strings are strings, some are just byte arrays. - retval = TextStringObject(decode_pdfdocencoding(string)) - retval.autodetect_pdfdocencoding = True - return retval - except UnicodeDecodeError: - return ByteStringObject(string) + if isinstance(forcedEncoding, (list,dict)): + out = "" + for x in string: + try: + out += forcedEncoding[x] + except Exception: + out += bytes((x,)).decode("charmap") + return TextStringObject(out) + elif isinstance(forcedEncoding, str): + return TextStringObject(string.decode(forcedEncoding)) + else: + try: + if string.startswith(codecs.BOM_UTF16_BE): + retval = TextStringObject(string.decode("utf-16")) + retval.autodetect_utf16 = True + return retval + else: + # This is probably a big performance hit here, but we need to + # convert string objects into the text/unicode-aware version if + # possible... and the only way to check if that's possible is + # to try. Some strings are strings, some are just byte arrays. + retval = TextStringObject(decode_pdfdocencoding(string)) + retval.autodetect_pdfdocencoding = True + return retval + except UnicodeDecodeError: + return ByteStringObject(string) else: raise TypeError("createStringObject should have str or unicode arg") @@ -1773,7 +1774,7 @@ def decode_pdfdocencoding(byte_array: bytes) -> str: # C.1 Predefined encodings sorted by character name of another PDF reference # Some indices have '\u0000' although they should have something else: # 22: should be '\u0017' -_pdfdoc_encoding = ( +_pdfdoc_encoding = [ "\u0000", "\u0001", "\u0002", @@ -2030,13 +2031,13 @@ def decode_pdfdocencoding(byte_array: bytes) -> str: "\u00fd", "\u00fe", "\u00ff", # 248 - 255 -) +] assert len(_pdfdoc_encoding) == 256 -def fill_from_encoding(enc: str) -> list: - lst = () +def fill_from_encoding(enc: str) -> List[str]: + lst : List[str] = [] for x in range(256): try: lst+=(bytes((x,)).decode(enc),) @@ -2307,7 +2308,7 @@ def fill_from_encoding(enc: str) -> list: ] -def rev_encoding(enc: list) -> Dict[str, int]: +def rev_encoding(enc: List[str]) -> Dict[str, int]: rev: Dict[str, int] = {} for i in range(256): char = enc[i] @@ -2320,11 +2321,11 @@ def rev_encoding(enc: list) -> Dict[str, int]: return rev -_pdfdoc_encoding_rev = rev_encoding(_pdfdoc_encoding) -_win_encoding_rev = rev_encoding(_win_encoding) -_mac_encoding_rev = rev_encoding(_mac_encoding) +_pdfdoc_encoding_rev : dict[str,int] = rev_encoding(_pdfdoc_encoding) +_win_encoding_rev : dict[str,int] = rev_encoding(_win_encoding) +_mac_encoding_rev : dict[str,int] = rev_encoding(_mac_encoding) -charset_encoding = { +charset_encoding : dict[str, List[str] ] = { "/StandardCoding": _std_encoding, "/WinAnsiEncoding": _win_encoding, "/MacRomanEncoding": _mac_encoding, From 05d87a8d5e4260dab9e4a6ddb98da7052931c01b Mon Sep 17 00:00:00 2001 From: pubpub-zz <4083478+pubpub-zz@users.noreply.github.com> Date: Fri, 27 May 2022 14:32:34 +0200 Subject: [PATCH 10/27] fix flake8 --- PyPDF2/_page.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PyPDF2/_page.py b/PyPDF2/_page.py index d3f45fad9..19bf39ab4 100644 --- a/PyPDF2/_page.py +++ b/PyPDF2/_page.py @@ -1097,13 +1097,13 @@ def buildCharMap(font_name : str)->tuple[str,Dict,Dict]: if isinstance(enc,str): try: encoding = charset_encoding[enc] - except: + except Exception: warnings.warn(f"Advanced encoding {encoding} not implemented yet",PdfReadWarning) encoding = charset_encoding["/StandardCoding"] elif isinstance(enc, DictionaryObject) and "/BaseEncoding" in enc: try: encoding = charset_encoding[cast(str,enc["/BaseEncoding"])] - except: + except Exception: warnings.warn(f"Advanced encoding {encoding} not implemented yet",PdfReadWarning) encoding = charset_encoding["/StandardCoding"] else: From 5d017dfac6797b0b93c95ea1d1a8fde1f3c5b8b1 Mon Sep 17 00:00:00 2001 From: pubpub-zz <4083478+pubpub-zz@users.noreply.github.com> Date: Fri, 27 May 2022 16:21:18 +0200 Subject: [PATCH 11/27] fix Merging main --- PyPDF2/_page.py | 2 +- PyPDF2/generic.py | 4 ++-- tests/test_workflows.py | 22 +++++++++++----------- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/PyPDF2/_page.py b/PyPDF2/_page.py index 19bf39ab4..29a1e158f 100644 --- a/PyPDF2/_page.py +++ b/PyPDF2/_page.py @@ -1130,7 +1130,7 @@ def buildCharMap(font_name : str)->tuple[str,Dict,Dict]: cast(DictionaryObject,self["/Resources"])["/Font"] )[font_name] )["/ToUnicode"]) - .getData() + .get_data() .decode("utf-8") ) for l in ( diff --git a/PyPDF2/generic.py b/PyPDF2/generic.py index 2f0bf6300..daa5c7b2e 100644 --- a/PyPDF2/generic.py +++ b/PyPDF2/generic.py @@ -5,7 +5,7 @@ # modification, are permitted provided that the following conditions are # met: # -# * Redistri butions of source code must retain the above copyright notice, +# * Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation @@ -1221,7 +1221,7 @@ def __init__( data += b_(s.get_object().get_data()) stream = BytesIO(b_(data)) else: - stream = BytesIO(b_(stream.getData())) + stream = BytesIO(b_(stream.get_data())) # self.savstream = stream self.forcedEncoding = forcedEncoding self.__parseContentStream(stream) diff --git a/tests/test_workflows.py b/tests/test_workflows.py index 9da1f700f..e8abc05b9 100644 --- a/tests/test_workflows.py +++ b/tests/test_workflows.py @@ -7,7 +7,7 @@ import pytest -from PyPDF2 import PdfFileReader +from PyPDF2 import PdfReader from PyPDF2.constants import PageAttributes as PG TESTS_ROOT = os.path.abspath(os.path.dirname(__file__)) @@ -25,7 +25,7 @@ def test_PdfReaderFileLoad(): with open(os.path.join(RESOURCE_ROOT, "crazyones.pdf"), "rb") as inputfile: # Load PDF file from file - reader = PdfFileReader(inputfile) + reader = PdfReader(inputfile) page = reader.pages[0] # Retrieve the text of the PDF @@ -52,7 +52,7 @@ def test_PdfReaderJpegImage(): with open(os.path.join(RESOURCE_ROOT, "jpeg.pdf"), "rb") as inputfile: # Load PDF file from file - reader = PdfFileReader(inputfile) + reader = PdfReader(inputfile) # Retrieve the text of the image with open(os.path.join(RESOURCE_ROOT, "jpeg.txt")) as pdftext_file: @@ -73,8 +73,8 @@ def test_decrypt(): with open( os.path.join(RESOURCE_ROOT, "libreoffice-writer-password.pdf"), "rb" ) as inputfile: - reader = PdfFileReader(inputfile) - assert reader.isEncrypted == True + reader = PdfReader(inputfile) + assert reader.is_encrypted == True reader.decrypt("openpassword") assert len(reader.pages) == 1 assert reader.is_encrypted == True @@ -84,14 +84,14 @@ def test_decrypt(): "/Creator": "Writer", "/Producer": "LibreOffice 6.4", } - # Is extractText() broken for encrypted files? - # assert reader.pages(0).extractText().replace('\n', '') == "\n˘\n\u02c7\u02c6˙\n\n\n˘\u02c7\u02c6˙\n\n" + # Is extract_text() broken for encrypted files? + # assert reader.pages[0].extract_text().replace('\n', '') == "\n˘\n\u02c7\u02c6˙\n\n\n˘\u02c7\u02c6˙\n\n" @pytest.mark.parametrize("degree", [0, 90, 180, 270, 360, -90]) def test_rotate(degree): with open(os.path.join(RESOURCE_ROOT, "crazyones.pdf"), "rb") as inputfile: - reader = PdfFileReader(inputfile) + reader = PdfReader(inputfile) page = reader.pages[0] with pytest.warns(PendingDeprecationWarning): page.rotateCounterClockwise(degree) @@ -99,7 +99,7 @@ def test_rotate(degree): def test_rotate_45(): with open(os.path.join(RESOURCE_ROOT, "crazyones.pdf"), "rb") as inputfile: - reader = PdfFileReader(inputfile) + reader = PdfReader(inputfile) page = reader.pages[0] with pytest.raises(ValueError) as exc: with pytest.warns(PendingDeprecationWarning): @@ -133,10 +133,10 @@ def test_rotate_45(): def test_extract_textbench(enable, url, pages, printResult=False): if not enable: return - p = PdfFileReader(BytesIO(urllib.request.urlopen(url).read())) + p = PdfReader(BytesIO(urllib.request.urlopen(url).read())) for n in pages: if printResult: print(f"**************** {url} / page {n} ****************") - rst = p.pages[n].extractText() + rst = p.pages[n].extract_text() if printResult: print(f"{rst}\n*****************************\n") From 0a049d13779be6e44bea19db5454ba245c3dde8f Mon Sep 17 00:00:00 2001 From: pubpub-zz <4083478+pubpub-zz@users.noreply.github.com> Date: Fri, 27 May 2022 16:43:29 +0200 Subject: [PATCH 12/27] fix mypy 3.8 --- PyPDF2/generic.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/PyPDF2/generic.py b/PyPDF2/generic.py index daa5c7b2e..3d44a3c3b 100644 --- a/PyPDF2/generic.py +++ b/PyPDF2/generic.py @@ -200,7 +200,7 @@ def writeToStream( self.write_to_stream(stream, encryption_key) @staticmethod - def read_from_stream(stream: StreamType, pdf: Any, forcedEncoding: Union[None,str,List[str],dict[int,str]] = None) -> "ArrayObject": # PdfReader + def read_from_stream(stream: StreamType, pdf: Any, forcedEncoding: Union[None,str,List[str],Dict[int,str]] = None) -> "ArrayObject": # PdfReader arr = ArrayObject() tmp = stream.read(1) if tmp != b_("["): @@ -430,7 +430,7 @@ def readHexStringFromStream( def readStringFromStream( stream: StreamType, - forcedEncoding: Union[None,str,List[str],dict[int,str]] = None, + forcedEncoding: Union[None,str,List[str],Dict[int,str]] = None, ) -> Union["TextStringObject", "ByteStringObject"]: tok = stream.read(1) parens = 1 @@ -761,7 +761,7 @@ def writeToStream( @staticmethod def read_from_stream( stream: StreamType, pdf: Any, # PdfReader - forcedEncoding: Union[None,str,List[str],dict[int,str]] = None + forcedEncoding: Union[None,str,List[str],Dict[int,str]] = None ) -> "DictionaryObject": def getNextObjPos( p: int, p1: int, remGens: List[int], pdf: Any @@ -1203,7 +1203,7 @@ def set_data(self, data: Any) -> None: class ContentStream(DecodedStreamObject): def __init__( - self, stream: Any, pdf: Any, forcedEncoding: Union[None,str,List[str],dict[int,str]] = None + self, stream: Any, pdf: Any, forcedEncoding: Union[None,str,List[str],Dict[int,str]] = None ) -> None: self.pdf = pdf @@ -1344,7 +1344,7 @@ def _data(self, value: Union[str, bytes]) -> None: def read_object( stream: StreamType, pdf: Any, # PdfReader - forcedEncoding: Union[None,str,List[str],dict[int,str]] = None + forcedEncoding: Union[None,str,List[str],Dict[int,str]] = None ) -> Union[PdfObject, int, str, ContentStream]: tok = stream.read(1) stream.seek(-1, 1) # reset to start @@ -2079,7 +2079,7 @@ def write_to_stream( def createStringObject( - string: Union[str, bytes], forcedEncoding: Union[None,str,List[str],dict[int,str]] = None + string: Union[str, bytes], forcedEncoding: Union[None,str,List[str],Dict[int,str]] = None ) -> Union[TextStringObject, ByteStringObject]: """ Given a string, create a ByteStringObject or a TextStringObject to @@ -2701,11 +2701,11 @@ def rev_encoding(enc: List[str]) -> Dict[str, int]: return rev -_pdfdoc_encoding_rev : dict[str,int] = rev_encoding(_pdfdoc_encoding) -_win_encoding_rev : dict[str,int] = rev_encoding(_win_encoding) -_mac_encoding_rev : dict[str,int] = rev_encoding(_mac_encoding) +_pdfdoc_encoding_rev : Dict[str,int] = rev_encoding(_pdfdoc_encoding) +_win_encoding_rev : Dict[str,int] = rev_encoding(_win_encoding) +_mac_encoding_rev : Dict[str,int] = rev_encoding(_mac_encoding) -charset_encoding : dict[str, List[str] ] = { +charset_encoding : Dict[str, List[str] ] = { "/StandardCoding": _std_encoding, "/WinAnsiEncoding": _win_encoding, "/MacRomanEncoding": _mac_encoding, From 6feebf72120135dbb9bc8e57086a0d2026256776 Mon Sep 17 00:00:00 2001 From: pubpub-zz <4083478+pubpub-zz@users.noreply.github.com> Date: Fri, 27 May 2022 16:47:40 +0200 Subject: [PATCH 13/27] fix mypy 3.8 (2) --- PyPDF2/_page.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PyPDF2/_page.py b/PyPDF2/_page.py index 29a1e158f..8e9030763 100644 --- a/PyPDF2/_page.py +++ b/PyPDF2/_page.py @@ -1076,7 +1076,7 @@ def extract_text(self, Tj_sep: str = "", TJ_sep: str = "") -> str: :return: a string object. """ # code freely inspired from @twiggy ; see #711 - def buildCharMap(font_name : str)->tuple[str,Dict,Dict]: + def buildCharMap(font_name : str)->Tuple[str,Dict,Dict]: mapDict : Any = {} processRg : bool = False processChar : bool = False @@ -1178,7 +1178,7 @@ def buildCharMap(font_name : str)->tuple[str,Dict,Dict]: # ------- end of buildCharmap ------ text: str = "" output: str = "" - cmaps: Dict[str, tuple[str, Dict[int,str],Dict[str,str]]]={} + cmaps: Dict[str, Tuple[str, Dict[int,str],Dict[str,str]]]={} if "/Font" in cast(DictionaryObject,self["/Resources"]): for f in cast(DictionaryObject,cast(DictionaryObject,self["/Resources"])["/Font"]): cmaps[f] = buildCharMap(f) From 45bcbaf67798fa307634b4a12d26e73b07180a9a Mon Sep 17 00:00:00 2001 From: pubpub-zz <4083478+pubpub-zz@users.noreply.github.com> Date: Sat, 28 May 2022 13:23:04 +0200 Subject: [PATCH 14/27] Pypi fix review Co-authored-by: Martin Thoma --- PyPDF2/_page.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/PyPDF2/_page.py b/PyPDF2/_page.py index 8e9030763..03b59653a 100644 --- a/PyPDF2/_page.py +++ b/PyPDF2/_page.py @@ -1081,11 +1081,7 @@ def buildCharMap(font_name : str)->Tuple[str,Dict,Dict]: processRg : bool = False processChar : bool = False encoding : List[str] = [] - fontType :str = cast(NameObject, cast(DictionaryObject, - cast(DictionaryObject, - cast(DictionaryObject, self["/Resources"])["/Font"] - )[font_name] - )["/Subtype"]) + fontType :str = cast(NameObject, self["/Resources"]["/Font"][font_name]["/Subtype"]) if "/Encoding" in cast(DictionaryObject, cast(DictionaryObject, cast(DictionaryObject, self["/Resources"])["/Font"])[font_name]): enc = cast(DictionaryObject, cast(DictionaryObject, From 0cd298ac085b4939ca685673ef280990f4c1f5ce Mon Sep 17 00:00:00 2001 From: pubpub-zz <4083478+pubpub-zz@users.noreply.github.com> Date: Sat, 28 May 2022 13:25:19 +0200 Subject: [PATCH 15/27] Mypy improvment review Co-authored-by: Martin Thoma --- PyPDF2/_page.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/PyPDF2/_page.py b/PyPDF2/_page.py index 03b59653a..e37fc1a01 100644 --- a/PyPDF2/_page.py +++ b/PyPDF2/_page.py @@ -1175,8 +1175,9 @@ def buildCharMap(font_name : str)->Tuple[str,Dict,Dict]: text: str = "" output: str = "" cmaps: Dict[str, Tuple[str, Dict[int,str],Dict[str,str]]]={} - if "/Font" in cast(DictionaryObject,self["/Resources"]): - for f in cast(DictionaryObject,cast(DictionaryObject,self["/Resources"])["/Font"]): + resources_dict = cast(DictionaryObject,self["/Resources"]) + if "/Font" in resources_dict: + for f in cast(DictionaryObject, resources_dict["/Font"]): cmaps[f] = buildCharMap(f) cmap: Union[str, Dict[int,str]]= {} content = self[PG.CONTENTS].get_object() From 6fdffa6643217b937cb618335c2f819e9e028cd2 Mon Sep 17 00:00:00 2001 From: pubpub-zz <4083478+pubpub-zz@users.noreply.github.com> Date: Sun, 29 May 2022 11:50:08 +0200 Subject: [PATCH 16/27] rollback to fix mypy proposal not fixing change also includes snake_style rewriting --- PyPDF2/_page.py | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/PyPDF2/_page.py b/PyPDF2/_page.py index e37fc1a01..4cbf35046 100644 --- a/PyPDF2/_page.py +++ b/PyPDF2/_page.py @@ -1077,11 +1077,15 @@ def extract_text(self, Tj_sep: str = "", TJ_sep: str = "") -> str: """ # code freely inspired from @twiggy ; see #711 def buildCharMap(font_name : str)->Tuple[str,Dict,Dict]: - mapDict : Any = {} - processRg : bool = False - processChar : bool = False + map_dict : Any = {} + process_rg : bool = False + process_char : bool = False encoding : List[str] = [] - fontType :str = cast(NameObject, self["/Resources"]["/Font"][font_name]["/Subtype"]) + font_type: str = cast(NameObject, cast(DictionaryObject, + cast(DictionaryObject, + cast(DictionaryObject, self["/Resources"])["/Font"] + )[font_name] + )["/Subtype"]) if "/Encoding" in cast(DictionaryObject, cast(DictionaryObject, cast(DictionaryObject, self["/Resources"])["/Font"])[font_name]): enc = cast(DictionaryObject, cast(DictionaryObject, @@ -1140,14 +1144,14 @@ def buildCharMap(font_name : str)->Tuple[str,Dict,Dict]: if l == "": continue if "beginbfrange" in l: - processRg = True + process_rg = True elif "endbfrange" in l: - processRg = False + process_rg = False elif "beginbfchar" in l: - processChar = True + process_char = True elif "endbfchar" in l: - processChar = False - elif processRg: + process_char = False + elif process_rg: lst = [x for x in l.split(" ") if x] a = int(lst[0], 16) b = int(lst[1], 16) @@ -1156,21 +1160,21 @@ def buildCharMap(font_name : str)->Tuple[str,Dict,Dict]: for sq in lst[3:]: if "]": break - mapDict[a] = unhexlify(sq).decode("utf-16-be") + map_dict[a] = unhexlify(sq).decode("utf-16-be") a += 1 assert a > b else: c = int(lst[2], 16) fmt = b"%%0%dX" % len(lst[2]) while a <= b: - mapDict[a] = unhexlify(fmt % c).decode("utf-16-be") + map_dict[a] = unhexlify(fmt % c).decode("utf-16-be") a += 1 c += 1 - elif processChar: + elif process_char: lst = [x for x in l.split(" ") if x] a = int(lst[0], 16) - mapDict[a] = unhexlify(lst[1]).decode("utf-16-be") - return fontType, dict(zip(range(256), encoding)), "".maketrans(mapDict) + map_dict[a] = unhexlify(lst[1]).decode("utf-16-be") + return font_type, dict(zip(range(256), encoding)), "".maketrans(map_dict) # ------- end of buildCharmap ------ text: str = "" output: str = "" @@ -1189,7 +1193,7 @@ def buildCharMap(font_name : str)->Tuple[str,Dict,Dict]: # charSize = 1.0 # charScale = 0.0 - spaceScale = 1.0 + space_scale = 1.0 for operands, operator in content.operations: if operator == b_("Tf"): if text != "": @@ -1205,7 +1209,7 @@ def buildCharMap(font_name : str)->Tuple[str,Dict,Dict]: # elif operator == b_("Tc"): # charScale = 1.0 + float(operands[0]) elif operator == b_("Tw"): - spaceScale = 1.0 + float(operands[0]) + space_scale = 1.0 + float(operands[0]) elif operator == b_("Tj"): _text = operands[0] if isinstance(_text, TextStringObject): From a8321449d0638074660dc0b43b615a9c8386e2cf Mon Sep 17 00:00:00 2001 From: pubpub-zz <4083478+pubpub-zz@users.noreply.github.com> Date: Sun, 29 May 2022 11:51:07 +0200 Subject: [PATCH 17/27] add modifiable space size --- PyPDF2/_page.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/PyPDF2/_page.py b/PyPDF2/_page.py index 4cbf35046..97336560d 100644 --- a/PyPDF2/_page.py +++ b/PyPDF2/_page.py @@ -1064,7 +1064,7 @@ def compressContentStreams(self) -> None: ) self.compress_content_streams() - def extract_text(self, Tj_sep: str = "", TJ_sep: str = "") -> str: + def extract_text(self, Tj_sep: str = "", TJ_sep: str = "",space_width : float = 200.0) -> str: """ Locate all text drawing commands, in the order they are provided in the content stream, and extract the text. This works well for some PDF @@ -1224,10 +1224,10 @@ def buildCharMap(font_name : str)->Tuple[str,Dict,Dict]: output += text.translate(cmap) + "\n" text = "" elif (operator in [b_("Td")]) and (operands[1] == 0): - if operands[-1] > 0: - print("back ", operands[-1]) - elif operands[-1] < 0: - print("back ", operands[-1]) + if operands[0] > (space_scale * space_width): + text += " " + #elif operands[-1] < 0: + # print("back ", operands[-1]) elif operator == b_("'"): output += text.translate(cmap) + "\n" _text = operands[0] @@ -1247,9 +1247,9 @@ def buildCharMap(font_name : str)->Tuple[str,Dict,Dict]: elif isinstance(i, (NumberObject, FloatObject)): # a positive value decreases and the negative value increases # space - # if abs(i)>spaceScale*1000:print("TJ:",text,"*",i) + # if abs(i)>space_scale*1000:print("TJ:",text,"*",i) # print(text,i) - if int(i) < -spaceScale * 250: + if int(i) < -space_scale * space_width: if len(text) == 0 or text[-1] != " ": text += " " else: From 1b0034b0ba109f39fd686227ebfd1a85f230faef Mon Sep 17 00:00:00 2001 From: pubpub-zz <4083478+pubpub-zz@users.noreply.github.com> Date: Sun, 29 May 2022 12:08:29 +0200 Subject: [PATCH 18/27] after black --- PyPDF2/_adglyphs.py | 8566 +++++++++++++++++++++---------------------- PyPDF2/generic.py | 44 +- 2 files changed, 4310 insertions(+), 4300 deletions(-) diff --git a/PyPDF2/_adglyphs.py b/PyPDF2/_adglyphs.py index 778434184..5a3e17ab2 100644 --- a/PyPDF2/_adglyphs.py +++ b/PyPDF2/_adglyphs.py @@ -1,4 +1,4 @@ -#https://raw.githubusercontent.com/adobe-type-tools/agl-aglfn/master/glyphlist.txt +# https://raw.githubusercontent.com/adobe-type-tools/agl-aglfn/master/glyphlist.txt # converted manualy to python @@ -45,4286 +45,4286 @@ # (1) glyph name--upper/lowercase letters and digits # (2) Unicode scalar value--four uppercase hexadecimal digits # -adobe_glyphs={ - "/A":"\u0041", - "/AE":"\u00C6", - "/AEacute":"\u01FC", - "/AEmacron":"\u01E2", - "/AEsmall":"\uF7E6", - "/Aacute":"\u00C1", - "/Aacutesmall":"\uF7E1", - "/Abreve":"\u0102", - "/Abreveacute":"\u1EAE", - "/Abrevecyrillic":"\u04D0", - "/Abrevedotbelow":"\u1EB6", - "/Abrevegrave":"\u1EB0", - "/Abrevehookabove":"\u1EB2", - "/Abrevetilde":"\u1EB4", - "/Acaron":"\u01CD", - "/Acircle":"\u24B6", - "/Acircumflex":"\u00C2", - "/Acircumflexacute":"\u1EA4", - "/Acircumflexdotbelow":"\u1EAC", - "/Acircumflexgrave":"\u1EA6", - "/Acircumflexhookabove":"\u1EA8", - "/Acircumflexsmall":"\uF7E2", - "/Acircumflextilde":"\u1EAA", - "/Acute":"\uF6C9", - "/Acutesmall":"\uF7B4", - "/Acyrillic":"\u0410", - "/Adblgrave":"\u0200", - "/Adieresis":"\u00C4", - "/Adieresiscyrillic":"\u04D2", - "/Adieresismacron":"\u01DE", - "/Adieresissmall":"\uF7E4", - "/Adotbelow":"\u1EA0", - "/Adotmacron":"\u01E0", - "/Agrave":"\u00C0", - "/Agravesmall":"\uF7E0", - "/Ahookabove":"\u1EA2", - "/Aiecyrillic":"\u04D4", - "/Ainvertedbreve":"\u0202", - "/Alpha":"\u0391", - "/Alphatonos":"\u0386", - "/Amacron":"\u0100", - "/Amonospace":"\uFF21", - "/Aogonek":"\u0104", - "/Aring":"\u00C5", - "/Aringacute":"\u01FA", - "/Aringbelow":"\u1E00", - "/Aringsmall":"\uF7E5", - "/Asmall":"\uF761", - "/Atilde":"\u00C3", - "/Atildesmall":"\uF7E3", - "/Aybarmenian":"\u0531", - "/B":"\u0042", - "/Bcircle":"\u24B7", - "/Bdotaccent":"\u1E02", - "/Bdotbelow":"\u1E04", - "/Becyrillic":"\u0411", - "/Benarmenian":"\u0532", - "/Beta":"\u0392", - "/Bhook":"\u0181", - "/Blinebelow":"\u1E06", - "/Bmonospace":"\uFF22", - "/Brevesmall":"\uF6F4", - "/Bsmall":"\uF762", - "/Btopbar":"\u0182", - "/C":"\u0043", - "/Caarmenian":"\u053E", - "/Cacute":"\u0106", - "/Caron":"\uF6CA", - "/Caronsmall":"\uF6F5", - "/Ccaron":"\u010C", - "/Ccedilla":"\u00C7", - "/Ccedillaacute":"\u1E08", - "/Ccedillasmall":"\uF7E7", - "/Ccircle":"\u24B8", - "/Ccircumflex":"\u0108", - "/Cdot":"\u010A", - "/Cdotaccent":"\u010A", - "/Cedillasmall":"\uF7B8", - "/Chaarmenian":"\u0549", - "/Cheabkhasiancyrillic":"\u04BC", - "/Checyrillic":"\u0427", - "/Chedescenderabkhasiancyrillic":"\u04BE", - "/Chedescendercyrillic":"\u04B6", - "/Chedieresiscyrillic":"\u04F4", - "/Cheharmenian":"\u0543", - "/Chekhakassiancyrillic":"\u04CB", - "/Cheverticalstrokecyrillic":"\u04B8", - "/Chi":"\u03A7", - "/Chook":"\u0187", - "/Circumflexsmall":"\uF6F6", - "/Cmonospace":"\uFF23", - "/Coarmenian":"\u0551", - "/Csmall":"\uF763", - "/D":"\u0044", - "/DZ":"\u01F1", - "/DZcaron":"\u01C4", - "/Daarmenian":"\u0534", - "/Dafrican":"\u0189", - "/Dcaron":"\u010E", - "/Dcedilla":"\u1E10", - "/Dcircle":"\u24B9", - "/Dcircumflexbelow":"\u1E12", - "/Dcroat":"\u0110", - "/Ddotaccent":"\u1E0A", - "/Ddotbelow":"\u1E0C", - "/Decyrillic":"\u0414", - "/Deicoptic":"\u03EE", - "/Delta":"\u2206", - "/Deltagreek":"\u0394", - "/Dhook":"\u018A", - "/Dieresis":"\uF6CB", - "/DieresisAcute":"\uF6CC", - "/DieresisGrave":"\uF6CD", - "/Dieresissmall":"\uF7A8", - "/Digammagreek":"\u03DC", - "/Djecyrillic":"\u0402", - "/Dlinebelow":"\u1E0E", - "/Dmonospace":"\uFF24", - "/Dotaccentsmall":"\uF6F7", - "/Dslash":"\u0110", - "/Dsmall":"\uF764", - "/Dtopbar":"\u018B", - "/Dz":"\u01F2", - "/Dzcaron":"\u01C5", - "/Dzeabkhasiancyrillic":"\u04E0", - "/Dzecyrillic":"\u0405", - "/Dzhecyrillic":"\u040F", - "/E":"\u0045", - "/Eacute":"\u00C9", - "/Eacutesmall":"\uF7E9", - "/Ebreve":"\u0114", - "/Ecaron":"\u011A", - "/Ecedillabreve":"\u1E1C", - "/Echarmenian":"\u0535", - "/Ecircle":"\u24BA", - "/Ecircumflex":"\u00CA", - "/Ecircumflexacute":"\u1EBE", - "/Ecircumflexbelow":"\u1E18", - "/Ecircumflexdotbelow":"\u1EC6", - "/Ecircumflexgrave":"\u1EC0", - "/Ecircumflexhookabove":"\u1EC2", - "/Ecircumflexsmall":"\uF7EA", - "/Ecircumflextilde":"\u1EC4", - "/Ecyrillic":"\u0404", - "/Edblgrave":"\u0204", - "/Edieresis":"\u00CB", - "/Edieresissmall":"\uF7EB", - "/Edot":"\u0116", - "/Edotaccent":"\u0116", - "/Edotbelow":"\u1EB8", - "/Efcyrillic":"\u0424", - "/Egrave":"\u00C8", - "/Egravesmall":"\uF7E8", - "/Eharmenian":"\u0537", - "/Ehookabove":"\u1EBA", - "/Eightroman":"\u2167", - "/Einvertedbreve":"\u0206", - "/Eiotifiedcyrillic":"\u0464", - "/Elcyrillic":"\u041B", - "/Elevenroman":"\u216A", - "/Emacron":"\u0112", - "/Emacronacute":"\u1E16", - "/Emacrongrave":"\u1E14", - "/Emcyrillic":"\u041C", - "/Emonospace":"\uFF25", - "/Encyrillic":"\u041D", - "/Endescendercyrillic":"\u04A2", - "/Eng":"\u014A", - "/Enghecyrillic":"\u04A4", - "/Enhookcyrillic":"\u04C7", - "/Eogonek":"\u0118", - "/Eopen":"\u0190", - "/Epsilon":"\u0395", - "/Epsilontonos":"\u0388", - "/Ercyrillic":"\u0420", - "/Ereversed":"\u018E", - "/Ereversedcyrillic":"\u042D", - "/Escyrillic":"\u0421", - "/Esdescendercyrillic":"\u04AA", - "/Esh":"\u01A9", - "/Esmall":"\uF765", - "/Eta":"\u0397", - "/Etarmenian":"\u0538", - "/Etatonos":"\u0389", - "/Eth":"\u00D0", - "/Ethsmall":"\uF7F0", - "/Etilde":"\u1EBC", - "/Etildebelow":"\u1E1A", - "/Euro":"\u20AC", - "/Ezh":"\u01B7", - "/Ezhcaron":"\u01EE", - "/Ezhreversed":"\u01B8", - "/F":"\u0046", - "/Fcircle":"\u24BB", - "/Fdotaccent":"\u1E1E", - "/Feharmenian":"\u0556", - "/Feicoptic":"\u03E4", - "/Fhook":"\u0191", - "/Fitacyrillic":"\u0472", - "/Fiveroman":"\u2164", - "/Fmonospace":"\uFF26", - "/Fourroman":"\u2163", - "/Fsmall":"\uF766", - "/G":"\u0047", - "/GBsquare":"\u3387", - "/Gacute":"\u01F4", - "/Gamma":"\u0393", - "/Gammaafrican":"\u0194", - "/Gangiacoptic":"\u03EA", - "/Gbreve":"\u011E", - "/Gcaron":"\u01E6", - "/Gcedilla":"\u0122", - "/Gcircle":"\u24BC", - "/Gcircumflex":"\u011C", - "/Gcommaaccent":"\u0122", - "/Gdot":"\u0120", - "/Gdotaccent":"\u0120", - "/Gecyrillic":"\u0413", - "/Ghadarmenian":"\u0542", - "/Ghemiddlehookcyrillic":"\u0494", - "/Ghestrokecyrillic":"\u0492", - "/Gheupturncyrillic":"\u0490", - "/Ghook":"\u0193", - "/Gimarmenian":"\u0533", - "/Gjecyrillic":"\u0403", - "/Gmacron":"\u1E20", - "/Gmonospace":"\uFF27", - "/Grave":"\uF6CE", - "/Gravesmall":"\uF760", - "/Gsmall":"\uF767", - "/Gsmallhook":"\u029B", - "/Gstroke":"\u01E4", - "/H":"\u0048", - "/H18533":"\u25CF", - "/H18543":"\u25AA", - "/H18551":"\u25AB", - "/H22073":"\u25A1", - "/HPsquare":"\u33CB", - "/Haabkhasiancyrillic":"\u04A8", - "/Hadescendercyrillic":"\u04B2", - "/Hardsigncyrillic":"\u042A", - "/Hbar":"\u0126", - "/Hbrevebelow":"\u1E2A", - "/Hcedilla":"\u1E28", - "/Hcircle":"\u24BD", - "/Hcircumflex":"\u0124", - "/Hdieresis":"\u1E26", - "/Hdotaccent":"\u1E22", - "/Hdotbelow":"\u1E24", - "/Hmonospace":"\uFF28", - "/Hoarmenian":"\u0540", - "/Horicoptic":"\u03E8", - "/Hsmall":"\uF768", - "/Hungarumlaut":"\uF6CF", - "/Hungarumlautsmall":"\uF6F8", - "/Hzsquare":"\u3390", - "/I":"\u0049", - "/IAcyrillic":"\u042F", - "/IJ":"\u0132", - "/IUcyrillic":"\u042E", - "/Iacute":"\u00CD", - "/Iacutesmall":"\uF7ED", - "/Ibreve":"\u012C", - "/Icaron":"\u01CF", - "/Icircle":"\u24BE", - "/Icircumflex":"\u00CE", - "/Icircumflexsmall":"\uF7EE", - "/Icyrillic":"\u0406", - "/Idblgrave":"\u0208", - "/Idieresis":"\u00CF", - "/Idieresisacute":"\u1E2E", - "/Idieresiscyrillic":"\u04E4", - "/Idieresissmall":"\uF7EF", - "/Idot":"\u0130", - "/Idotaccent":"\u0130", - "/Idotbelow":"\u1ECA", - "/Iebrevecyrillic":"\u04D6", - "/Iecyrillic":"\u0415", - "/Ifraktur":"\u2111", - "/Igrave":"\u00CC", - "/Igravesmall":"\uF7EC", - "/Ihookabove":"\u1EC8", - "/Iicyrillic":"\u0418", - "/Iinvertedbreve":"\u020A", - "/Iishortcyrillic":"\u0419", - "/Imacron":"\u012A", - "/Imacroncyrillic":"\u04E2", - "/Imonospace":"\uFF29", - "/Iniarmenian":"\u053B", - "/Iocyrillic":"\u0401", - "/Iogonek":"\u012E", - "/Iota":"\u0399", - "/Iotaafrican":"\u0196", - "/Iotadieresis":"\u03AA", - "/Iotatonos":"\u038A", - "/Ismall":"\uF769", - "/Istroke":"\u0197", - "/Itilde":"\u0128", - "/Itildebelow":"\u1E2C", - "/Izhitsacyrillic":"\u0474", - "/Izhitsadblgravecyrillic":"\u0476", - "/J":"\u004A", - "/Jaarmenian":"\u0541", - "/Jcircle":"\u24BF", - "/Jcircumflex":"\u0134", - "/Jecyrillic":"\u0408", - "/Jheharmenian":"\u054B", - "/Jmonospace":"\uFF2A", - "/Jsmall":"\uF76A", - "/K":"\u004B", - "/KBsquare":"\u3385", - "/KKsquare":"\u33CD", - "/Kabashkircyrillic":"\u04A0", - "/Kacute":"\u1E30", - "/Kacyrillic":"\u041A", - "/Kadescendercyrillic":"\u049A", - "/Kahookcyrillic":"\u04C3", - "/Kappa":"\u039A", - "/Kastrokecyrillic":"\u049E", - "/Kaverticalstrokecyrillic":"\u049C", - "/Kcaron":"\u01E8", - "/Kcedilla":"\u0136", - "/Kcircle":"\u24C0", - "/Kcommaaccent":"\u0136", - "/Kdotbelow":"\u1E32", - "/Keharmenian":"\u0554", - "/Kenarmenian":"\u053F", - "/Khacyrillic":"\u0425", - "/Kheicoptic":"\u03E6", - "/Khook":"\u0198", - "/Kjecyrillic":"\u040C", - "/Klinebelow":"\u1E34", - "/Kmonospace":"\uFF2B", - "/Koppacyrillic":"\u0480", - "/Koppagreek":"\u03DE", - "/Ksicyrillic":"\u046E", - "/Ksmall":"\uF76B", - "/L":"\u004C", - "/LJ":"\u01C7", - "/LL":"\uF6BF", - "/Lacute":"\u0139", - "/Lambda":"\u039B", - "/Lcaron":"\u013D", - "/Lcedilla":"\u013B", - "/Lcircle":"\u24C1", - "/Lcircumflexbelow":"\u1E3C", - "/Lcommaaccent":"\u013B", - "/Ldot":"\u013F", - "/Ldotaccent":"\u013F", - "/Ldotbelow":"\u1E36", - "/Ldotbelowmacron":"\u1E38", - "/Liwnarmenian":"\u053C", - "/Lj":"\u01C8", - "/Ljecyrillic":"\u0409", - "/Llinebelow":"\u1E3A", - "/Lmonospace":"\uFF2C", - "/Lslash":"\u0141", - "/Lslashsmall":"\uF6F9", - "/Lsmall":"\uF76C", - "/M":"\u004D", - "/MBsquare":"\u3386", - "/Macron":"\uF6D0", - "/Macronsmall":"\uF7AF", - "/Macute":"\u1E3E", - "/Mcircle":"\u24C2", - "/Mdotaccent":"\u1E40", - "/Mdotbelow":"\u1E42", - "/Menarmenian":"\u0544", - "/Mmonospace":"\uFF2D", - "/Msmall":"\uF76D", - "/Mturned":"\u019C", - "/Mu":"\u039C", - "/N":"\u004E", - "/NJ":"\u01CA", - "/Nacute":"\u0143", - "/Ncaron":"\u0147", - "/Ncedilla":"\u0145", - "/Ncircle":"\u24C3", - "/Ncircumflexbelow":"\u1E4A", - "/Ncommaaccent":"\u0145", - "/Ndotaccent":"\u1E44", - "/Ndotbelow":"\u1E46", - "/Nhookleft":"\u019D", - "/Nineroman":"\u2168", - "/Nj":"\u01CB", - "/Njecyrillic":"\u040A", - "/Nlinebelow":"\u1E48", - "/Nmonospace":"\uFF2E", - "/Nowarmenian":"\u0546", - "/Nsmall":"\uF76E", - "/Ntilde":"\u00D1", - "/Ntildesmall":"\uF7F1", - "/Nu":"\u039D", - "/O":"\u004F", - "/OE":"\u0152", - "/OEsmall":"\uF6FA", - "/Oacute":"\u00D3", - "/Oacutesmall":"\uF7F3", - "/Obarredcyrillic":"\u04E8", - "/Obarreddieresiscyrillic":"\u04EA", - "/Obreve":"\u014E", - "/Ocaron":"\u01D1", - "/Ocenteredtilde":"\u019F", - "/Ocircle":"\u24C4", - "/Ocircumflex":"\u00D4", - "/Ocircumflexacute":"\u1ED0", - "/Ocircumflexdotbelow":"\u1ED8", - "/Ocircumflexgrave":"\u1ED2", - "/Ocircumflexhookabove":"\u1ED4", - "/Ocircumflexsmall":"\uF7F4", - "/Ocircumflextilde":"\u1ED6", - "/Ocyrillic":"\u041E", - "/Odblacute":"\u0150", - "/Odblgrave":"\u020C", - "/Odieresis":"\u00D6", - "/Odieresiscyrillic":"\u04E6", - "/Odieresissmall":"\uF7F6", - "/Odotbelow":"\u1ECC", - "/Ogoneksmall":"\uF6FB", - "/Ograve":"\u00D2", - "/Ogravesmall":"\uF7F2", - "/Oharmenian":"\u0555", - "/Ohm":"\u2126", - "/Ohookabove":"\u1ECE", - "/Ohorn":"\u01A0", - "/Ohornacute":"\u1EDA", - "/Ohorndotbelow":"\u1EE2", - "/Ohorngrave":"\u1EDC", - "/Ohornhookabove":"\u1EDE", - "/Ohorntilde":"\u1EE0", - "/Ohungarumlaut":"\u0150", - "/Oi":"\u01A2", - "/Oinvertedbreve":"\u020E", - "/Omacron":"\u014C", - "/Omacronacute":"\u1E52", - "/Omacrongrave":"\u1E50", - "/Omega":"\u2126", - "/Omegacyrillic":"\u0460", - "/Omegagreek":"\u03A9", - "/Omegaroundcyrillic":"\u047A", - "/Omegatitlocyrillic":"\u047C", - "/Omegatonos":"\u038F", - "/Omicron":"\u039F", - "/Omicrontonos":"\u038C", - "/Omonospace":"\uFF2F", - "/Oneroman":"\u2160", - "/Oogonek":"\u01EA", - "/Oogonekmacron":"\u01EC", - "/Oopen":"\u0186", - "/Oslash":"\u00D8", - "/Oslashacute":"\u01FE", - "/Oslashsmall":"\uF7F8", - "/Osmall":"\uF76F", - "/Ostrokeacute":"\u01FE", - "/Otcyrillic":"\u047E", - "/Otilde":"\u00D5", - "/Otildeacute":"\u1E4C", - "/Otildedieresis":"\u1E4E", - "/Otildesmall":"\uF7F5", - "/P":"\u0050", - "/Pacute":"\u1E54", - "/Pcircle":"\u24C5", - "/Pdotaccent":"\u1E56", - "/Pecyrillic":"\u041F", - "/Peharmenian":"\u054A", - "/Pemiddlehookcyrillic":"\u04A6", - "/Phi":"\u03A6", - "/Phook":"\u01A4", - "/Pi":"\u03A0", - "/Piwrarmenian":"\u0553", - "/Pmonospace":"\uFF30", - "/Psi":"\u03A8", - "/Psicyrillic":"\u0470", - "/Psmall":"\uF770", - "/Q":"\u0051", - "/Qcircle":"\u24C6", - "/Qmonospace":"\uFF31", - "/Qsmall":"\uF771", - "/R":"\u0052", - "/Raarmenian":"\u054C", - "/Racute":"\u0154", - "/Rcaron":"\u0158", - "/Rcedilla":"\u0156", - "/Rcircle":"\u24C7", - "/Rcommaaccent":"\u0156", - "/Rdblgrave":"\u0210", - "/Rdotaccent":"\u1E58", - "/Rdotbelow":"\u1E5A", - "/Rdotbelowmacron":"\u1E5C", - "/Reharmenian":"\u0550", - "/Rfraktur":"\u211C", - "/Rho":"\u03A1", - "/Ringsmall":"\uF6FC", - "/Rinvertedbreve":"\u0212", - "/Rlinebelow":"\u1E5E", - "/Rmonospace":"\uFF32", - "/Rsmall":"\uF772", - "/Rsmallinverted":"\u0281", - "/Rsmallinvertedsuperior":"\u02B6", - "/S":"\u0053", - "/SF010000":"\u250C", - "/SF020000":"\u2514", - "/SF030000":"\u2510", - "/SF040000":"\u2518", - "/SF050000":"\u253C", - "/SF060000":"\u252C", - "/SF070000":"\u2534", - "/SF080000":"\u251C", - "/SF090000":"\u2524", - "/SF100000":"\u2500", - "/SF110000":"\u2502", - "/SF190000":"\u2561", - "/SF200000":"\u2562", - "/SF210000":"\u2556", - "/SF220000":"\u2555", - "/SF230000":"\u2563", - "/SF240000":"\u2551", - "/SF250000":"\u2557", - "/SF260000":"\u255D", - "/SF270000":"\u255C", - "/SF280000":"\u255B", - "/SF360000":"\u255E", - "/SF370000":"\u255F", - "/SF380000":"\u255A", - "/SF390000":"\u2554", - "/SF400000":"\u2569", - "/SF410000":"\u2566", - "/SF420000":"\u2560", - "/SF430000":"\u2550", - "/SF440000":"\u256C", - "/SF450000":"\u2567", - "/SF460000":"\u2568", - "/SF470000":"\u2564", - "/SF480000":"\u2565", - "/SF490000":"\u2559", - "/SF500000":"\u2558", - "/SF510000":"\u2552", - "/SF520000":"\u2553", - "/SF530000":"\u256B", - "/SF540000":"\u256A", - "/Sacute":"\u015A", - "/Sacutedotaccent":"\u1E64", - "/Sampigreek":"\u03E0", - "/Scaron":"\u0160", - "/Scarondotaccent":"\u1E66", - "/Scaronsmall":"\uF6FD", - "/Scedilla":"\u015E", - "/Schwa":"\u018F", - "/Schwacyrillic":"\u04D8", - "/Schwadieresiscyrillic":"\u04DA", - "/Scircle":"\u24C8", - "/Scircumflex":"\u015C", - "/Scommaaccent":"\u0218", - "/Sdotaccent":"\u1E60", - "/Sdotbelow":"\u1E62", - "/Sdotbelowdotaccent":"\u1E68", - "/Seharmenian":"\u054D", - "/Sevenroman":"\u2166", - "/Shaarmenian":"\u0547", - "/Shacyrillic":"\u0428", - "/Shchacyrillic":"\u0429", - "/Sheicoptic":"\u03E2", - "/Shhacyrillic":"\u04BA", - "/Shimacoptic":"\u03EC", - "/Sigma":"\u03A3", - "/Sixroman":"\u2165", - "/Smonospace":"\uFF33", - "/Softsigncyrillic":"\u042C", - "/Ssmall":"\uF773", - "/Stigmagreek":"\u03DA", - "/T":"\u0054", - "/Tau":"\u03A4", - "/Tbar":"\u0166", - "/Tcaron":"\u0164", - "/Tcedilla":"\u0162", - "/Tcircle":"\u24C9", - "/Tcircumflexbelow":"\u1E70", - "/Tcommaaccent":"\u0162", - "/Tdotaccent":"\u1E6A", - "/Tdotbelow":"\u1E6C", - "/Tecyrillic":"\u0422", - "/Tedescendercyrillic":"\u04AC", - "/Tenroman":"\u2169", - "/Tetsecyrillic":"\u04B4", - "/Theta":"\u0398", - "/Thook":"\u01AC", - "/Thorn":"\u00DE", - "/Thornsmall":"\uF7FE", - "/Threeroman":"\u2162", - "/Tildesmall":"\uF6FE", - "/Tiwnarmenian":"\u054F", - "/Tlinebelow":"\u1E6E", - "/Tmonospace":"\uFF34", - "/Toarmenian":"\u0539", - "/Tonefive":"\u01BC", - "/Tonesix":"\u0184", - "/Tonetwo":"\u01A7", - "/Tretroflexhook":"\u01AE", - "/Tsecyrillic":"\u0426", - "/Tshecyrillic":"\u040B", - "/Tsmall":"\uF774", - "/Twelveroman":"\u216B", - "/Tworoman":"\u2161", - "/U":"\u0055", - "/Uacute":"\u00DA", - "/Uacutesmall":"\uF7FA", - "/Ubreve":"\u016C", - "/Ucaron":"\u01D3", - "/Ucircle":"\u24CA", - "/Ucircumflex":"\u00DB", - "/Ucircumflexbelow":"\u1E76", - "/Ucircumflexsmall":"\uF7FB", - "/Ucyrillic":"\u0423", - "/Udblacute":"\u0170", - "/Udblgrave":"\u0214", - "/Udieresis":"\u00DC", - "/Udieresisacute":"\u01D7", - "/Udieresisbelow":"\u1E72", - "/Udieresiscaron":"\u01D9", - "/Udieresiscyrillic":"\u04F0", - "/Udieresisgrave":"\u01DB", - "/Udieresismacron":"\u01D5", - "/Udieresissmall":"\uF7FC", - "/Udotbelow":"\u1EE4", - "/Ugrave":"\u00D9", - "/Ugravesmall":"\uF7F9", - "/Uhookabove":"\u1EE6", - "/Uhorn":"\u01AF", - "/Uhornacute":"\u1EE8", - "/Uhorndotbelow":"\u1EF0", - "/Uhorngrave":"\u1EEA", - "/Uhornhookabove":"\u1EEC", - "/Uhorntilde":"\u1EEE", - "/Uhungarumlaut":"\u0170", - "/Uhungarumlautcyrillic":"\u04F2", - "/Uinvertedbreve":"\u0216", - "/Ukcyrillic":"\u0478", - "/Umacron":"\u016A", - "/Umacroncyrillic":"\u04EE", - "/Umacrondieresis":"\u1E7A", - "/Umonospace":"\uFF35", - "/Uogonek":"\u0172", - "/Upsilon":"\u03A5", - "/Upsilon1":"\u03D2", - "/Upsilonacutehooksymbolgreek":"\u03D3", - "/Upsilonafrican":"\u01B1", - "/Upsilondieresis":"\u03AB", - "/Upsilondieresishooksymbolgreek":"\u03D4", - "/Upsilonhooksymbol":"\u03D2", - "/Upsilontonos":"\u038E", - "/Uring":"\u016E", - "/Ushortcyrillic":"\u040E", - "/Usmall":"\uF775", - "/Ustraightcyrillic":"\u04AE", - "/Ustraightstrokecyrillic":"\u04B0", - "/Utilde":"\u0168", - "/Utildeacute":"\u1E78", - "/Utildebelow":"\u1E74", - "/V":"\u0056", - "/Vcircle":"\u24CB", - "/Vdotbelow":"\u1E7E", - "/Vecyrillic":"\u0412", - "/Vewarmenian":"\u054E", - "/Vhook":"\u01B2", - "/Vmonospace":"\uFF36", - "/Voarmenian":"\u0548", - "/Vsmall":"\uF776", - "/Vtilde":"\u1E7C", - "/W":"\u0057", - "/Wacute":"\u1E82", - "/Wcircle":"\u24CC", - "/Wcircumflex":"\u0174", - "/Wdieresis":"\u1E84", - "/Wdotaccent":"\u1E86", - "/Wdotbelow":"\u1E88", - "/Wgrave":"\u1E80", - "/Wmonospace":"\uFF37", - "/Wsmall":"\uF777", - "/X":"\u0058", - "/Xcircle":"\u24CD", - "/Xdieresis":"\u1E8C", - "/Xdotaccent":"\u1E8A", - "/Xeharmenian":"\u053D", - "/Xi":"\u039E", - "/Xmonospace":"\uFF38", - "/Xsmall":"\uF778", - "/Y":"\u0059", - "/Yacute":"\u00DD", - "/Yacutesmall":"\uF7FD", - "/Yatcyrillic":"\u0462", - "/Ycircle":"\u24CE", - "/Ycircumflex":"\u0176", - "/Ydieresis":"\u0178", - "/Ydieresissmall":"\uF7FF", - "/Ydotaccent":"\u1E8E", - "/Ydotbelow":"\u1EF4", - "/Yericyrillic":"\u042B", - "/Yerudieresiscyrillic":"\u04F8", - "/Ygrave":"\u1EF2", - "/Yhook":"\u01B3", - "/Yhookabove":"\u1EF6", - "/Yiarmenian":"\u0545", - "/Yicyrillic":"\u0407", - "/Yiwnarmenian":"\u0552", - "/Ymonospace":"\uFF39", - "/Ysmall":"\uF779", - "/Ytilde":"\u1EF8", - "/Yusbigcyrillic":"\u046A", - "/Yusbigiotifiedcyrillic":"\u046C", - "/Yuslittlecyrillic":"\u0466", - "/Yuslittleiotifiedcyrillic":"\u0468", - "/Z":"\u005A", - "/Zaarmenian":"\u0536", - "/Zacute":"\u0179", - "/Zcaron":"\u017D", - "/Zcaronsmall":"\uF6FF", - "/Zcircle":"\u24CF", - "/Zcircumflex":"\u1E90", - "/Zdot":"\u017B", - "/Zdotaccent":"\u017B", - "/Zdotbelow":"\u1E92", - "/Zecyrillic":"\u0417", - "/Zedescendercyrillic":"\u0498", - "/Zedieresiscyrillic":"\u04DE", - "/Zeta":"\u0396", - "/Zhearmenian":"\u053A", - "/Zhebrevecyrillic":"\u04C1", - "/Zhecyrillic":"\u0416", - "/Zhedescendercyrillic":"\u0496", - "/Zhedieresiscyrillic":"\u04DC", - "/Zlinebelow":"\u1E94", - "/Zmonospace":"\uFF3A", - "/Zsmall":"\uF77A", - "/Zstroke":"\u01B5", - "/a":"\u0061", - "/aabengali":"\u0986", - "/aacute":"\u00E1", - "/aadeva":"\u0906", - "/aagujarati":"\u0A86", - "/aagurmukhi":"\u0A06", - "/aamatragurmukhi":"\u0A3E", - "/aarusquare":"\u3303", - "/aavowelsignbengali":"\u09BE", - "/aavowelsigndeva":"\u093E", - "/aavowelsigngujarati":"\u0ABE", - "/abbreviationmarkarmenian":"\u055F", - "/abbreviationsigndeva":"\u0970", - "/abengali":"\u0985", - "/abopomofo":"\u311A", - "/abreve":"\u0103", - "/abreveacute":"\u1EAF", - "/abrevecyrillic":"\u04D1", - "/abrevedotbelow":"\u1EB7", - "/abrevegrave":"\u1EB1", - "/abrevehookabove":"\u1EB3", - "/abrevetilde":"\u1EB5", - "/acaron":"\u01CE", - "/acircle":"\u24D0", - "/acircumflex":"\u00E2", - "/acircumflexacute":"\u1EA5", - "/acircumflexdotbelow":"\u1EAD", - "/acircumflexgrave":"\u1EA7", - "/acircumflexhookabove":"\u1EA9", - "/acircumflextilde":"\u1EAB", - "/acute":"\u00B4", - "/acutebelowcmb":"\u0317", - "/acutecmb":"\u0301", - "/acutecomb":"\u0301", - "/acutedeva":"\u0954", - "/acutelowmod":"\u02CF", - "/acutetonecmb":"\u0341", - "/acyrillic":"\u0430", - "/adblgrave":"\u0201", - "/addakgurmukhi":"\u0A71", - "/adeva":"\u0905", - "/adieresis":"\u00E4", - "/adieresiscyrillic":"\u04D3", - "/adieresismacron":"\u01DF", - "/adotbelow":"\u1EA1", - "/adotmacron":"\u01E1", - "/ae":"\u00E6", - "/aeacute":"\u01FD", - "/aekorean":"\u3150", - "/aemacron":"\u01E3", - "/afii00208":"\u2015", - "/afii08941":"\u20A4", - "/afii10017":"\u0410", - "/afii10018":"\u0411", - "/afii10019":"\u0412", - "/afii10020":"\u0413", - "/afii10021":"\u0414", - "/afii10022":"\u0415", - "/afii10023":"\u0401", - "/afii10024":"\u0416", - "/afii10025":"\u0417", - "/afii10026":"\u0418", - "/afii10027":"\u0419", - "/afii10028":"\u041A", - "/afii10029":"\u041B", - "/afii10030":"\u041C", - "/afii10031":"\u041D", - "/afii10032":"\u041E", - "/afii10033":"\u041F", - "/afii10034":"\u0420", - "/afii10035":"\u0421", - "/afii10036":"\u0422", - "/afii10037":"\u0423", - "/afii10038":"\u0424", - "/afii10039":"\u0425", - "/afii10040":"\u0426", - "/afii10041":"\u0427", - "/afii10042":"\u0428", - "/afii10043":"\u0429", - "/afii10044":"\u042A", - "/afii10045":"\u042B", - "/afii10046":"\u042C", - "/afii10047":"\u042D", - "/afii10048":"\u042E", - "/afii10049":"\u042F", - "/afii10050":"\u0490", - "/afii10051":"\u0402", - "/afii10052":"\u0403", - "/afii10053":"\u0404", - "/afii10054":"\u0405", - "/afii10055":"\u0406", - "/afii10056":"\u0407", - "/afii10057":"\u0408", - "/afii10058":"\u0409", - "/afii10059":"\u040A", - "/afii10060":"\u040B", - "/afii10061":"\u040C", - "/afii10062":"\u040E", - "/afii10063":"\uF6C4", - "/afii10064":"\uF6C5", - "/afii10065":"\u0430", - "/afii10066":"\u0431", - "/afii10067":"\u0432", - "/afii10068":"\u0433", - "/afii10069":"\u0434", - "/afii10070":"\u0435", - "/afii10071":"\u0451", - "/afii10072":"\u0436", - "/afii10073":"\u0437", - "/afii10074":"\u0438", - "/afii10075":"\u0439", - "/afii10076":"\u043A", - "/afii10077":"\u043B", - "/afii10078":"\u043C", - "/afii10079":"\u043D", - "/afii10080":"\u043E", - "/afii10081":"\u043F", - "/afii10082":"\u0440", - "/afii10083":"\u0441", - "/afii10084":"\u0442", - "/afii10085":"\u0443", - "/afii10086":"\u0444", - "/afii10087":"\u0445", - "/afii10088":"\u0446", - "/afii10089":"\u0447", - "/afii10090":"\u0448", - "/afii10091":"\u0449", - "/afii10092":"\u044A", - "/afii10093":"\u044B", - "/afii10094":"\u044C", - "/afii10095":"\u044D", - "/afii10096":"\u044E", - "/afii10097":"\u044F", - "/afii10098":"\u0491", - "/afii10099":"\u0452", - "/afii10100":"\u0453", - "/afii10101":"\u0454", - "/afii10102":"\u0455", - "/afii10103":"\u0456", - "/afii10104":"\u0457", - "/afii10105":"\u0458", - "/afii10106":"\u0459", - "/afii10107":"\u045A", - "/afii10108":"\u045B", - "/afii10109":"\u045C", - "/afii10110":"\u045E", - "/afii10145":"\u040F", - "/afii10146":"\u0462", - "/afii10147":"\u0472", - "/afii10148":"\u0474", - "/afii10192":"\uF6C6", - "/afii10193":"\u045F", - "/afii10194":"\u0463", - "/afii10195":"\u0473", - "/afii10196":"\u0475", - "/afii10831":"\uF6C7", - "/afii10832":"\uF6C8", - "/afii10846":"\u04D9", - "/afii299":"\u200E", - "/afii300":"\u200F", - "/afii301":"\u200D", - "/afii57381":"\u066A", - "/afii57388":"\u060C", - "/afii57392":"\u0660", - "/afii57393":"\u0661", - "/afii57394":"\u0662", - "/afii57395":"\u0663", - "/afii57396":"\u0664", - "/afii57397":"\u0665", - "/afii57398":"\u0666", - "/afii57399":"\u0667", - "/afii57400":"\u0668", - "/afii57401":"\u0669", - "/afii57403":"\u061B", - "/afii57407":"\u061F", - "/afii57409":"\u0621", - "/afii57410":"\u0622", - "/afii57411":"\u0623", - "/afii57412":"\u0624", - "/afii57413":"\u0625", - "/afii57414":"\u0626", - "/afii57415":"\u0627", - "/afii57416":"\u0628", - "/afii57417":"\u0629", - "/afii57418":"\u062A", - "/afii57419":"\u062B", - "/afii57420":"\u062C", - "/afii57421":"\u062D", - "/afii57422":"\u062E", - "/afii57423":"\u062F", - "/afii57424":"\u0630", - "/afii57425":"\u0631", - "/afii57426":"\u0632", - "/afii57427":"\u0633", - "/afii57428":"\u0634", - "/afii57429":"\u0635", - "/afii57430":"\u0636", - "/afii57431":"\u0637", - "/afii57432":"\u0638", - "/afii57433":"\u0639", - "/afii57434":"\u063A", - "/afii57440":"\u0640", - "/afii57441":"\u0641", - "/afii57442":"\u0642", - "/afii57443":"\u0643", - "/afii57444":"\u0644", - "/afii57445":"\u0645", - "/afii57446":"\u0646", - "/afii57448":"\u0648", - "/afii57449":"\u0649", - "/afii57450":"\u064A", - "/afii57451":"\u064B", - "/afii57452":"\u064C", - "/afii57453":"\u064D", - "/afii57454":"\u064E", - "/afii57455":"\u064F", - "/afii57456":"\u0650", - "/afii57457":"\u0651", - "/afii57458":"\u0652", - "/afii57470":"\u0647", - "/afii57505":"\u06A4", - "/afii57506":"\u067E", - "/afii57507":"\u0686", - "/afii57508":"\u0698", - "/afii57509":"\u06AF", - "/afii57511":"\u0679", - "/afii57512":"\u0688", - "/afii57513":"\u0691", - "/afii57514":"\u06BA", - "/afii57519":"\u06D2", - "/afii57534":"\u06D5", - "/afii57636":"\u20AA", - "/afii57645":"\u05BE", - "/afii57658":"\u05C3", - "/afii57664":"\u05D0", - "/afii57665":"\u05D1", - "/afii57666":"\u05D2", - "/afii57667":"\u05D3", - "/afii57668":"\u05D4", - "/afii57669":"\u05D5", - "/afii57670":"\u05D6", - "/afii57671":"\u05D7", - "/afii57672":"\u05D8", - "/afii57673":"\u05D9", - "/afii57674":"\u05DA", - "/afii57675":"\u05DB", - "/afii57676":"\u05DC", - "/afii57677":"\u05DD", - "/afii57678":"\u05DE", - "/afii57679":"\u05DF", - "/afii57680":"\u05E0", - "/afii57681":"\u05E1", - "/afii57682":"\u05E2", - "/afii57683":"\u05E3", - "/afii57684":"\u05E4", - "/afii57685":"\u05E5", - "/afii57686":"\u05E6", - "/afii57687":"\u05E7", - "/afii57688":"\u05E8", - "/afii57689":"\u05E9", - "/afii57690":"\u05EA", - "/afii57694":"\uFB2A", - "/afii57695":"\uFB2B", - "/afii57700":"\uFB4B", - "/afii57705":"\uFB1F", - "/afii57716":"\u05F0", - "/afii57717":"\u05F1", - "/afii57718":"\u05F2", - "/afii57723":"\uFB35", - "/afii57793":"\u05B4", - "/afii57794":"\u05B5", - "/afii57795":"\u05B6", - "/afii57796":"\u05BB", - "/afii57797":"\u05B8", - "/afii57798":"\u05B7", - "/afii57799":"\u05B0", - "/afii57800":"\u05B2", - "/afii57801":"\u05B1", - "/afii57802":"\u05B3", - "/afii57803":"\u05C2", - "/afii57804":"\u05C1", - "/afii57806":"\u05B9", - "/afii57807":"\u05BC", - "/afii57839":"\u05BD", - "/afii57841":"\u05BF", - "/afii57842":"\u05C0", - "/afii57929":"\u02BC", - "/afii61248":"\u2105", - "/afii61289":"\u2113", - "/afii61352":"\u2116", - "/afii61573":"\u202C", - "/afii61574":"\u202D", - "/afii61575":"\u202E", - "/afii61664":"\u200C", - "/afii63167":"\u066D", - "/afii64937":"\u02BD", - "/agrave":"\u00E0", - "/agujarati":"\u0A85", - "/agurmukhi":"\u0A05", - "/ahiragana":"\u3042", - "/ahookabove":"\u1EA3", - "/aibengali":"\u0990", - "/aibopomofo":"\u311E", - "/aideva":"\u0910", - "/aiecyrillic":"\u04D5", - "/aigujarati":"\u0A90", - "/aigurmukhi":"\u0A10", - "/aimatragurmukhi":"\u0A48", - "/ainarabic":"\u0639", - "/ainfinalarabic":"\uFECA", - "/aininitialarabic":"\uFECB", - "/ainmedialarabic":"\uFECC", - "/ainvertedbreve":"\u0203", - "/aivowelsignbengali":"\u09C8", - "/aivowelsigndeva":"\u0948", - "/aivowelsigngujarati":"\u0AC8", - "/akatakana":"\u30A2", - "/akatakanahalfwidth":"\uFF71", - "/akorean":"\u314F", - "/alef":"\u05D0", - "/alefarabic":"\u0627", - "/alefdageshhebrew":"\uFB30", - "/aleffinalarabic":"\uFE8E", - "/alefhamzaabovearabic":"\u0623", - "/alefhamzaabovefinalarabic":"\uFE84", - "/alefhamzabelowarabic":"\u0625", - "/alefhamzabelowfinalarabic":"\uFE88", - "/alefhebrew":"\u05D0", - "/aleflamedhebrew":"\uFB4F", - "/alefmaddaabovearabic":"\u0622", - "/alefmaddaabovefinalarabic":"\uFE82", - "/alefmaksuraarabic":"\u0649", - "/alefmaksurafinalarabic":"\uFEF0", - "/alefmaksurainitialarabic":"\uFEF3", - "/alefmaksuramedialarabic":"\uFEF4", - "/alefpatahhebrew":"\uFB2E", - "/alefqamatshebrew":"\uFB2F", - "/aleph":"\u2135", - "/allequal":"\u224C", - "/alpha":"\u03B1", - "/alphatonos":"\u03AC", - "/amacron":"\u0101", - "/amonospace":"\uFF41", - "/ampersand":"\u0026", - "/ampersandmonospace":"\uFF06", - "/ampersandsmall":"\uF726", - "/amsquare":"\u33C2", - "/anbopomofo":"\u3122", - "/angbopomofo":"\u3124", - "/angkhankhuthai":"\u0E5A", - "/angle":"\u2220", - "/anglebracketleft":"\u3008", - "/anglebracketleftvertical":"\uFE3F", - "/anglebracketright":"\u3009", - "/anglebracketrightvertical":"\uFE40", - "/angleleft":"\u2329", - "/angleright":"\u232A", - "/angstrom":"\u212B", - "/anoteleia":"\u0387", - "/anudattadeva":"\u0952", - "/anusvarabengali":"\u0982", - "/anusvaradeva":"\u0902", - "/anusvaragujarati":"\u0A82", - "/aogonek":"\u0105", - "/apaatosquare":"\u3300", - "/aparen":"\u249C", - "/apostrophearmenian":"\u055A", - "/apostrophemod":"\u02BC", - "/apple":"\uF8FF", - "/approaches":"\u2250", - "/approxequal":"\u2248", - "/approxequalorimage":"\u2252", - "/approximatelyequal":"\u2245", - "/araeaekorean":"\u318E", - "/araeakorean":"\u318D", - "/arc":"\u2312", - "/arighthalfring":"\u1E9A", - "/aring":"\u00E5", - "/aringacute":"\u01FB", - "/aringbelow":"\u1E01", - "/arrowboth":"\u2194", - "/arrowdashdown":"\u21E3", - "/arrowdashleft":"\u21E0", - "/arrowdashright":"\u21E2", - "/arrowdashup":"\u21E1", - "/arrowdblboth":"\u21D4", - "/arrowdbldown":"\u21D3", - "/arrowdblleft":"\u21D0", - "/arrowdblright":"\u21D2", - "/arrowdblup":"\u21D1", - "/arrowdown":"\u2193", - "/arrowdownleft":"\u2199", - "/arrowdownright":"\u2198", - "/arrowdownwhite":"\u21E9", - "/arrowheaddownmod":"\u02C5", - "/arrowheadleftmod":"\u02C2", - "/arrowheadrightmod":"\u02C3", - "/arrowheadupmod":"\u02C4", - "/arrowhorizex":"\uF8E7", - "/arrowleft":"\u2190", - "/arrowleftdbl":"\u21D0", - "/arrowleftdblstroke":"\u21CD", - "/arrowleftoverright":"\u21C6", - "/arrowleftwhite":"\u21E6", - "/arrowright":"\u2192", - "/arrowrightdblstroke":"\u21CF", - "/arrowrightheavy":"\u279E", - "/arrowrightoverleft":"\u21C4", - "/arrowrightwhite":"\u21E8", - "/arrowtableft":"\u21E4", - "/arrowtabright":"\u21E5", - "/arrowup":"\u2191", - "/arrowupdn":"\u2195", - "/arrowupdnbse":"\u21A8", - "/arrowupdownbase":"\u21A8", - "/arrowupleft":"\u2196", - "/arrowupleftofdown":"\u21C5", - "/arrowupright":"\u2197", - "/arrowupwhite":"\u21E7", - "/arrowvertex":"\uF8E6", - "/asciicircum":"\u005E", - "/asciicircummonospace":"\uFF3E", - "/asciitilde":"\u007E", - "/asciitildemonospace":"\uFF5E", - "/ascript":"\u0251", - "/ascriptturned":"\u0252", - "/asmallhiragana":"\u3041", - "/asmallkatakana":"\u30A1", - "/asmallkatakanahalfwidth":"\uFF67", - "/asterisk":"\u002A", - "/asteriskaltonearabic":"\u066D", - "/asteriskarabic":"\u066D", - "/asteriskmath":"\u2217", - "/asteriskmonospace":"\uFF0A", - "/asterisksmall":"\uFE61", - "/asterism":"\u2042", - "/asuperior":"\uF6E9", - "/asymptoticallyequal":"\u2243", - "/at":"\u0040", - "/atilde":"\u00E3", - "/atmonospace":"\uFF20", - "/atsmall":"\uFE6B", - "/aturned":"\u0250", - "/aubengali":"\u0994", - "/aubopomofo":"\u3120", - "/audeva":"\u0914", - "/augujarati":"\u0A94", - "/augurmukhi":"\u0A14", - "/aulengthmarkbengali":"\u09D7", - "/aumatragurmukhi":"\u0A4C", - "/auvowelsignbengali":"\u09CC", - "/auvowelsigndeva":"\u094C", - "/auvowelsigngujarati":"\u0ACC", - "/avagrahadeva":"\u093D", - "/aybarmenian":"\u0561", - "/ayin":"\u05E2", - "/ayinaltonehebrew":"\uFB20", - "/ayinhebrew":"\u05E2", - "/b":"\u0062", - "/babengali":"\u09AC", - "/backslash":"\u005C", - "/backslashmonospace":"\uFF3C", - "/badeva":"\u092C", - "/bagujarati":"\u0AAC", - "/bagurmukhi":"\u0A2C", - "/bahiragana":"\u3070", - "/bahtthai":"\u0E3F", - "/bakatakana":"\u30D0", - "/bar":"\u007C", - "/barmonospace":"\uFF5C", - "/bbopomofo":"\u3105", - "/bcircle":"\u24D1", - "/bdotaccent":"\u1E03", - "/bdotbelow":"\u1E05", - "/beamedsixteenthnotes":"\u266C", - "/because":"\u2235", - "/becyrillic":"\u0431", - "/beharabic":"\u0628", - "/behfinalarabic":"\uFE90", - "/behinitialarabic":"\uFE91", - "/behiragana":"\u3079", - "/behmedialarabic":"\uFE92", - "/behmeeminitialarabic":"\uFC9F", - "/behmeemisolatedarabic":"\uFC08", - "/behnoonfinalarabic":"\uFC6D", - "/bekatakana":"\u30D9", - "/benarmenian":"\u0562", - "/bet":"\u05D1", - "/beta":"\u03B2", - "/betasymbolgreek":"\u03D0", - "/betdagesh":"\uFB31", - "/betdageshhebrew":"\uFB31", - "/bethebrew":"\u05D1", - "/betrafehebrew":"\uFB4C", - "/bhabengali":"\u09AD", - "/bhadeva":"\u092D", - "/bhagujarati":"\u0AAD", - "/bhagurmukhi":"\u0A2D", - "/bhook":"\u0253", - "/bihiragana":"\u3073", - "/bikatakana":"\u30D3", - "/bilabialclick":"\u0298", - "/bindigurmukhi":"\u0A02", - "/birusquare":"\u3331", - "/blackcircle":"\u25CF", - "/blackdiamond":"\u25C6", - "/blackdownpointingtriangle":"\u25BC", - "/blackleftpointingpointer":"\u25C4", - "/blackleftpointingtriangle":"\u25C0", - "/blacklenticularbracketleft":"\u3010", - "/blacklenticularbracketleftvertical":"\uFE3B", - "/blacklenticularbracketright":"\u3011", - "/blacklenticularbracketrightvertical":"\uFE3C", - "/blacklowerlefttriangle":"\u25E3", - "/blacklowerrighttriangle":"\u25E2", - "/blackrectangle":"\u25AC", - "/blackrightpointingpointer":"\u25BA", - "/blackrightpointingtriangle":"\u25B6", - "/blacksmallsquare":"\u25AA", - "/blacksmilingface":"\u263B", - "/blacksquare":"\u25A0", - "/blackstar":"\u2605", - "/blackupperlefttriangle":"\u25E4", - "/blackupperrighttriangle":"\u25E5", - "/blackuppointingsmalltriangle":"\u25B4", - "/blackuppointingtriangle":"\u25B2", - "/blank":"\u2423", - "/blinebelow":"\u1E07", - "/block":"\u2588", - "/bmonospace":"\uFF42", - "/bobaimaithai":"\u0E1A", - "/bohiragana":"\u307C", - "/bokatakana":"\u30DC", - "/bparen":"\u249D", - "/bqsquare":"\u33C3", - "/braceex":"\uF8F4", - "/braceleft":"\u007B", - "/braceleftbt":"\uF8F3", - "/braceleftmid":"\uF8F2", - "/braceleftmonospace":"\uFF5B", - "/braceleftsmall":"\uFE5B", - "/bracelefttp":"\uF8F1", - "/braceleftvertical":"\uFE37", - "/braceright":"\u007D", - "/bracerightbt":"\uF8FE", - "/bracerightmid":"\uF8FD", - "/bracerightmonospace":"\uFF5D", - "/bracerightsmall":"\uFE5C", - "/bracerighttp":"\uF8FC", - "/bracerightvertical":"\uFE38", - "/bracketleft":"\u005B", - "/bracketleftbt":"\uF8F0", - "/bracketleftex":"\uF8EF", - "/bracketleftmonospace":"\uFF3B", - "/bracketlefttp":"\uF8EE", - "/bracketright":"\u005D", - "/bracketrightbt":"\uF8FB", - "/bracketrightex":"\uF8FA", - "/bracketrightmonospace":"\uFF3D", - "/bracketrighttp":"\uF8F9", - "/breve":"\u02D8", - "/brevebelowcmb":"\u032E", - "/brevecmb":"\u0306", - "/breveinvertedbelowcmb":"\u032F", - "/breveinvertedcmb":"\u0311", - "/breveinverteddoublecmb":"\u0361", - "/bridgebelowcmb":"\u032A", - "/bridgeinvertedbelowcmb":"\u033A", - "/brokenbar":"\u00A6", - "/bstroke":"\u0180", - "/bsuperior":"\uF6EA", - "/btopbar":"\u0183", - "/buhiragana":"\u3076", - "/bukatakana":"\u30D6", - "/bullet":"\u2022", - "/bulletinverse":"\u25D8", - "/bulletoperator":"\u2219", - "/bullseye":"\u25CE", - "/c":"\u0063", - "/caarmenian":"\u056E", - "/cabengali":"\u099A", - "/cacute":"\u0107", - "/cadeva":"\u091A", - "/cagujarati":"\u0A9A", - "/cagurmukhi":"\u0A1A", - "/calsquare":"\u3388", - "/candrabindubengali":"\u0981", - "/candrabinducmb":"\u0310", - "/candrabindudeva":"\u0901", - "/candrabindugujarati":"\u0A81", - "/capslock":"\u21EA", - "/careof":"\u2105", - "/caron":"\u02C7", - "/caronbelowcmb":"\u032C", - "/caroncmb":"\u030C", - "/carriagereturn":"\u21B5", - "/cbopomofo":"\u3118", - "/ccaron":"\u010D", - "/ccedilla":"\u00E7", - "/ccedillaacute":"\u1E09", - "/ccircle":"\u24D2", - "/ccircumflex":"\u0109", - "/ccurl":"\u0255", - "/cdot":"\u010B", - "/cdotaccent":"\u010B", - "/cdsquare":"\u33C5", - "/cedilla":"\u00B8", - "/cedillacmb":"\u0327", - "/cent":"\u00A2", - "/centigrade":"\u2103", - "/centinferior":"\uF6DF", - "/centmonospace":"\uFFE0", - "/centoldstyle":"\uF7A2", - "/centsuperior":"\uF6E0", - "/chaarmenian":"\u0579", - "/chabengali":"\u099B", - "/chadeva":"\u091B", - "/chagujarati":"\u0A9B", - "/chagurmukhi":"\u0A1B", - "/chbopomofo":"\u3114", - "/cheabkhasiancyrillic":"\u04BD", - "/checkmark":"\u2713", - "/checyrillic":"\u0447", - "/chedescenderabkhasiancyrillic":"\u04BF", - "/chedescendercyrillic":"\u04B7", - "/chedieresiscyrillic":"\u04F5", - "/cheharmenian":"\u0573", - "/chekhakassiancyrillic":"\u04CC", - "/cheverticalstrokecyrillic":"\u04B9", - "/chi":"\u03C7", - "/chieuchacirclekorean":"\u3277", - "/chieuchaparenkorean":"\u3217", - "/chieuchcirclekorean":"\u3269", - "/chieuchkorean":"\u314A", - "/chieuchparenkorean":"\u3209", - "/chochangthai":"\u0E0A", - "/chochanthai":"\u0E08", - "/chochingthai":"\u0E09", - "/chochoethai":"\u0E0C", - "/chook":"\u0188", - "/cieucacirclekorean":"\u3276", - "/cieucaparenkorean":"\u3216", - "/cieuccirclekorean":"\u3268", - "/cieuckorean":"\u3148", - "/cieucparenkorean":"\u3208", - "/cieucuparenkorean":"\u321C", - "/circle":"\u25CB", - "/circlemultiply":"\u2297", - "/circleot":"\u2299", - "/circleplus":"\u2295", - "/circlepostalmark":"\u3036", - "/circlewithlefthalfblack":"\u25D0", - "/circlewithrighthalfblack":"\u25D1", - "/circumflex":"\u02C6", - "/circumflexbelowcmb":"\u032D", - "/circumflexcmb":"\u0302", - "/clear":"\u2327", - "/clickalveolar":"\u01C2", - "/clickdental":"\u01C0", - "/clicklateral":"\u01C1", - "/clickretroflex":"\u01C3", - "/club":"\u2663", - "/clubsuitblack":"\u2663", - "/clubsuitwhite":"\u2667", - "/cmcubedsquare":"\u33A4", - "/cmonospace":"\uFF43", - "/cmsquaredsquare":"\u33A0", - "/coarmenian":"\u0581", - "/colon":"\u003A", - "/colonmonetary":"\u20A1", - "/colonmonospace":"\uFF1A", - "/colonsign":"\u20A1", - "/colonsmall":"\uFE55", - "/colontriangularhalfmod":"\u02D1", - "/colontriangularmod":"\u02D0", - "/comma":"\u002C", - "/commaabovecmb":"\u0313", - "/commaaboverightcmb":"\u0315", - "/commaaccent":"\uF6C3", - "/commaarabic":"\u060C", - "/commaarmenian":"\u055D", - "/commainferior":"\uF6E1", - "/commamonospace":"\uFF0C", - "/commareversedabovecmb":"\u0314", - "/commareversedmod":"\u02BD", - "/commasmall":"\uFE50", - "/commasuperior":"\uF6E2", - "/commaturnedabovecmb":"\u0312", - "/commaturnedmod":"\u02BB", - "/compass":"\u263C", - "/congruent":"\u2245", - "/contourintegral":"\u222E", - "/control":"\u2303", - "/controlACK":"\u0006", - "/controlBEL":"\u0007", - "/controlBS":"\u0008", - "/controlCAN":"\u0018", - "/controlCR":"\u000D", - "/controlDC1":"\u0011", - "/controlDC2":"\u0012", - "/controlDC3":"\u0013", - "/controlDC4":"\u0014", - "/controlDEL":"\u007F", - "/controlDLE":"\u0010", - "/controlEM":"\u0019", - "/controlENQ":"\u0005", - "/controlEOT":"\u0004", - "/controlESC":"\u001B", - "/controlETB":"\u0017", - "/controlETX":"\u0003", - "/controlFF":"\u000C", - "/controlFS":"\u001C", - "/controlGS":"\u001D", - "/controlHT":"\u0009", - "/controlLF":"\u000A", - "/controlNAK":"\u0015", - "/controlRS":"\u001E", - "/controlSI":"\u000F", - "/controlSO":"\u000E", - "/controlSOT":"\u0002", - "/controlSTX":"\u0001", - "/controlSUB":"\u001A", - "/controlSYN":"\u0016", - "/controlUS":"\u001F", - "/controlVT":"\u000B", - "/copyright":"\u00A9", - "/copyrightsans":"\uF8E9", - "/copyrightserif":"\uF6D9", - "/cornerbracketleft":"\u300C", - "/cornerbracketlefthalfwidth":"\uFF62", - "/cornerbracketleftvertical":"\uFE41", - "/cornerbracketright":"\u300D", - "/cornerbracketrighthalfwidth":"\uFF63", - "/cornerbracketrightvertical":"\uFE42", - "/corporationsquare":"\u337F", - "/cosquare":"\u33C7", - "/coverkgsquare":"\u33C6", - "/cparen":"\u249E", - "/cruzeiro":"\u20A2", - "/cstretched":"\u0297", - "/curlyand":"\u22CF", - "/curlyor":"\u22CE", - "/currency":"\u00A4", - "/cyrBreve":"\uF6D1", - "/cyrFlex":"\uF6D2", - "/cyrbreve":"\uF6D4", - "/cyrflex":"\uF6D5", - "/d":"\u0064", - "/daarmenian":"\u0564", - "/dabengali":"\u09A6", - "/dadarabic":"\u0636", - "/dadeva":"\u0926", - "/dadfinalarabic":"\uFEBE", - "/dadinitialarabic":"\uFEBF", - "/dadmedialarabic":"\uFEC0", - "/dagesh":"\u05BC", - "/dageshhebrew":"\u05BC", - "/dagger":"\u2020", - "/daggerdbl":"\u2021", - "/dagujarati":"\u0AA6", - "/dagurmukhi":"\u0A26", - "/dahiragana":"\u3060", - "/dakatakana":"\u30C0", - "/dalarabic":"\u062F", - "/dalet":"\u05D3", - "/daletdagesh":"\uFB33", - "/daletdageshhebrew":"\uFB33", - "/dalethatafpatah":"\u05D3 05B2", - "/dalethatafpatahhebrew":"\u05D3 05B2", - "/dalethatafsegol":"\u05D3 05B1", - "/dalethatafsegolhebrew":"\u05D3 05B1", - "/dalethebrew":"\u05D3", - "/dalethiriq":"\u05D3 05B4", - "/dalethiriqhebrew":"\u05D3 05B4", - "/daletholam":"\u05D3 05B9", - "/daletholamhebrew":"\u05D3 05B9", - "/daletpatah":"\u05D3 05B7", - "/daletpatahhebrew":"\u05D3 05B7", - "/daletqamats":"\u05D3 05B8", - "/daletqamatshebrew":"\u05D3 05B8", - "/daletqubuts":"\u05D3 05BB", - "/daletqubutshebrew":"\u05D3 05BB", - "/daletsegol":"\u05D3 05B6", - "/daletsegolhebrew":"\u05D3 05B6", - "/daletsheva":"\u05D3 05B0", - "/daletshevahebrew":"\u05D3 05B0", - "/dalettsere":"\u05D3 05B5", - "/dalettserehebrew":"\u05D3 05B5", - "/dalfinalarabic":"\uFEAA", - "/dammaarabic":"\u064F", - "/dammalowarabic":"\u064F", - "/dammatanaltonearabic":"\u064C", - "/dammatanarabic":"\u064C", - "/danda":"\u0964", - "/dargahebrew":"\u05A7", - "/dargalefthebrew":"\u05A7", - "/dasiapneumatacyrilliccmb":"\u0485", - "/dblGrave":"\uF6D3", - "/dblanglebracketleft":"\u300A", - "/dblanglebracketleftvertical":"\uFE3D", - "/dblanglebracketright":"\u300B", - "/dblanglebracketrightvertical":"\uFE3E", - "/dblarchinvertedbelowcmb":"\u032B", - "/dblarrowleft":"\u21D4", - "/dblarrowright":"\u21D2", - "/dbldanda":"\u0965", - "/dblgrave":"\uF6D6", - "/dblgravecmb":"\u030F", - "/dblintegral":"\u222C", - "/dbllowline":"\u2017", - "/dbllowlinecmb":"\u0333", - "/dbloverlinecmb":"\u033F", - "/dblprimemod":"\u02BA", - "/dblverticalbar":"\u2016", - "/dblverticallineabovecmb":"\u030E", - "/dbopomofo":"\u3109", - "/dbsquare":"\u33C8", - "/dcaron":"\u010F", - "/dcedilla":"\u1E11", - "/dcircle":"\u24D3", - "/dcircumflexbelow":"\u1E13", - "/dcroat":"\u0111", - "/ddabengali":"\u09A1", - "/ddadeva":"\u0921", - "/ddagujarati":"\u0AA1", - "/ddagurmukhi":"\u0A21", - "/ddalarabic":"\u0688", - "/ddalfinalarabic":"\uFB89", - "/dddhadeva":"\u095C", - "/ddhabengali":"\u09A2", - "/ddhadeva":"\u0922", - "/ddhagujarati":"\u0AA2", - "/ddhagurmukhi":"\u0A22", - "/ddotaccent":"\u1E0B", - "/ddotbelow":"\u1E0D", - "/decimalseparatorarabic":"\u066B", - "/decimalseparatorpersian":"\u066B", - "/decyrillic":"\u0434", - "/degree":"\u00B0", - "/dehihebrew":"\u05AD", - "/dehiragana":"\u3067", - "/deicoptic":"\u03EF", - "/dekatakana":"\u30C7", - "/deleteleft":"\u232B", - "/deleteright":"\u2326", - "/delta":"\u03B4", - "/deltaturned":"\u018D", - "/denominatorminusonenumeratorbengali":"\u09F8", - "/dezh":"\u02A4", - "/dhabengali":"\u09A7", - "/dhadeva":"\u0927", - "/dhagujarati":"\u0AA7", - "/dhagurmukhi":"\u0A27", - "/dhook":"\u0257", - "/dialytikatonos":"\u0385", - "/dialytikatonoscmb":"\u0344", - "/diamond":"\u2666", - "/diamondsuitwhite":"\u2662", - "/dieresis":"\u00A8", - "/dieresisacute":"\uF6D7", - "/dieresisbelowcmb":"\u0324", - "/dieresiscmb":"\u0308", - "/dieresisgrave":"\uF6D8", - "/dieresistonos":"\u0385", - "/dihiragana":"\u3062", - "/dikatakana":"\u30C2", - "/dittomark":"\u3003", - "/divide":"\u00F7", - "/divides":"\u2223", - "/divisionslash":"\u2215", - "/djecyrillic":"\u0452", - "/dkshade":"\u2593", - "/dlinebelow":"\u1E0F", - "/dlsquare":"\u3397", - "/dmacron":"\u0111", - "/dmonospace":"\uFF44", - "/dnblock":"\u2584", - "/dochadathai":"\u0E0E", - "/dodekthai":"\u0E14", - "/dohiragana":"\u3069", - "/dokatakana":"\u30C9", - "/dollar":"\u0024", - "/dollarinferior":"\uF6E3", - "/dollarmonospace":"\uFF04", - "/dollaroldstyle":"\uF724", - "/dollarsmall":"\uFE69", - "/dollarsuperior":"\uF6E4", - "/dong":"\u20AB", - "/dorusquare":"\u3326", - "/dotaccent":"\u02D9", - "/dotaccentcmb":"\u0307", - "/dotbelowcmb":"\u0323", - "/dotbelowcomb":"\u0323", - "/dotkatakana":"\u30FB", - "/dotlessi":"\u0131", - "/dotlessj":"\uF6BE", - "/dotlessjstrokehook":"\u0284", - "/dotmath":"\u22C5", - "/dottedcircle":"\u25CC", - "/doubleyodpatah":"\uFB1F", - "/doubleyodpatahhebrew":"\uFB1F", - "/downtackbelowcmb":"\u031E", - "/downtackmod":"\u02D5", - "/dparen":"\u249F", - "/dsuperior":"\uF6EB", - "/dtail":"\u0256", - "/dtopbar":"\u018C", - "/duhiragana":"\u3065", - "/dukatakana":"\u30C5", - "/dz":"\u01F3", - "/dzaltone":"\u02A3", - "/dzcaron":"\u01C6", - "/dzcurl":"\u02A5", - "/dzeabkhasiancyrillic":"\u04E1", - "/dzecyrillic":"\u0455", - "/dzhecyrillic":"\u045F", - "/e":"\u0065", - "/eacute":"\u00E9", - "/earth":"\u2641", - "/ebengali":"\u098F", - "/ebopomofo":"\u311C", - "/ebreve":"\u0115", - "/ecandradeva":"\u090D", - "/ecandragujarati":"\u0A8D", - "/ecandravowelsigndeva":"\u0945", - "/ecandravowelsigngujarati":"\u0AC5", - "/ecaron":"\u011B", - "/ecedillabreve":"\u1E1D", - "/echarmenian":"\u0565", - "/echyiwnarmenian":"\u0587", - "/ecircle":"\u24D4", - "/ecircumflex":"\u00EA", - "/ecircumflexacute":"\u1EBF", - "/ecircumflexbelow":"\u1E19", - "/ecircumflexdotbelow":"\u1EC7", - "/ecircumflexgrave":"\u1EC1", - "/ecircumflexhookabove":"\u1EC3", - "/ecircumflextilde":"\u1EC5", - "/ecyrillic":"\u0454", - "/edblgrave":"\u0205", - "/edeva":"\u090F", - "/edieresis":"\u00EB", - "/edot":"\u0117", - "/edotaccent":"\u0117", - "/edotbelow":"\u1EB9", - "/eegurmukhi":"\u0A0F", - "/eematragurmukhi":"\u0A47", - "/efcyrillic":"\u0444", - "/egrave":"\u00E8", - "/egujarati":"\u0A8F", - "/eharmenian":"\u0567", - "/ehbopomofo":"\u311D", - "/ehiragana":"\u3048", - "/ehookabove":"\u1EBB", - "/eibopomofo":"\u311F", - "/eight":"\u0038", - "/eightarabic":"\u0668", - "/eightbengali":"\u09EE", - "/eightcircle":"\u2467", - "/eightcircleinversesansserif":"\u2791", - "/eightdeva":"\u096E", - "/eighteencircle":"\u2471", - "/eighteenparen":"\u2485", - "/eighteenperiod":"\u2499", - "/eightgujarati":"\u0AEE", - "/eightgurmukhi":"\u0A6E", - "/eighthackarabic":"\u0668", - "/eighthangzhou":"\u3028", - "/eighthnotebeamed":"\u266B", - "/eightideographicparen":"\u3227", - "/eightinferior":"\u2088", - "/eightmonospace":"\uFF18", - "/eightoldstyle":"\uF738", - "/eightparen":"\u247B", - "/eightperiod":"\u248F", - "/eightpersian":"\u06F8", - "/eightroman":"\u2177", - "/eightsuperior":"\u2078", - "/eightthai":"\u0E58", - "/einvertedbreve":"\u0207", - "/eiotifiedcyrillic":"\u0465", - "/ekatakana":"\u30A8", - "/ekatakanahalfwidth":"\uFF74", - "/ekonkargurmukhi":"\u0A74", - "/ekorean":"\u3154", - "/elcyrillic":"\u043B", - "/element":"\u2208", - "/elevencircle":"\u246A", - "/elevenparen":"\u247E", - "/elevenperiod":"\u2492", - "/elevenroman":"\u217A", - "/ellipsis":"\u2026", - "/ellipsisvertical":"\u22EE", - "/emacron":"\u0113", - "/emacronacute":"\u1E17", - "/emacrongrave":"\u1E15", - "/emcyrillic":"\u043C", - "/emdash":"\u2014", - "/emdashvertical":"\uFE31", - "/emonospace":"\uFF45", - "/emphasismarkarmenian":"\u055B", - "/emptyset":"\u2205", - "/enbopomofo":"\u3123", - "/encyrillic":"\u043D", - "/endash":"\u2013", - "/endashvertical":"\uFE32", - "/endescendercyrillic":"\u04A3", - "/eng":"\u014B", - "/engbopomofo":"\u3125", - "/enghecyrillic":"\u04A5", - "/enhookcyrillic":"\u04C8", - "/enspace":"\u2002", - "/eogonek":"\u0119", - "/eokorean":"\u3153", - "/eopen":"\u025B", - "/eopenclosed":"\u029A", - "/eopenreversed":"\u025C", - "/eopenreversedclosed":"\u025E", - "/eopenreversedhook":"\u025D", - "/eparen":"\u24A0", - "/epsilon":"\u03B5", - "/epsilontonos":"\u03AD", - "/equal":"\u003D", - "/equalmonospace":"\uFF1D", - "/equalsmall":"\uFE66", - "/equalsuperior":"\u207C", - "/equivalence":"\u2261", - "/erbopomofo":"\u3126", - "/ercyrillic":"\u0440", - "/ereversed":"\u0258", - "/ereversedcyrillic":"\u044D", - "/escyrillic":"\u0441", - "/esdescendercyrillic":"\u04AB", - "/esh":"\u0283", - "/eshcurl":"\u0286", - "/eshortdeva":"\u090E", - "/eshortvowelsigndeva":"\u0946", - "/eshreversedloop":"\u01AA", - "/eshsquatreversed":"\u0285", - "/esmallhiragana":"\u3047", - "/esmallkatakana":"\u30A7", - "/esmallkatakanahalfwidth":"\uFF6A", - "/estimated":"\u212E", - "/esuperior":"\uF6EC", - "/eta":"\u03B7", - "/etarmenian":"\u0568", - "/etatonos":"\u03AE", - "/eth":"\u00F0", - "/etilde":"\u1EBD", - "/etildebelow":"\u1E1B", - "/etnahtafoukhhebrew":"\u0591", - "/etnahtafoukhlefthebrew":"\u0591", - "/etnahtahebrew":"\u0591", - "/etnahtalefthebrew":"\u0591", - "/eturned":"\u01DD", - "/eukorean":"\u3161", - "/euro":"\u20AC", - "/evowelsignbengali":"\u09C7", - "/evowelsigndeva":"\u0947", - "/evowelsigngujarati":"\u0AC7", - "/exclam":"\u0021", - "/exclamarmenian":"\u055C", - "/exclamdbl":"\u203C", - "/exclamdown":"\u00A1", - "/exclamdownsmall":"\uF7A1", - "/exclammonospace":"\uFF01", - "/exclamsmall":"\uF721", - "/existential":"\u2203", - "/ezh":"\u0292", - "/ezhcaron":"\u01EF", - "/ezhcurl":"\u0293", - "/ezhreversed":"\u01B9", - "/ezhtail":"\u01BA", - "/f":"\u0066", - "/fadeva":"\u095E", - "/fagurmukhi":"\u0A5E", - "/fahrenheit":"\u2109", - "/fathaarabic":"\u064E", - "/fathalowarabic":"\u064E", - "/fathatanarabic":"\u064B", - "/fbopomofo":"\u3108", - "/fcircle":"\u24D5", - "/fdotaccent":"\u1E1F", - "/feharabic":"\u0641", - "/feharmenian":"\u0586", - "/fehfinalarabic":"\uFED2", - "/fehinitialarabic":"\uFED3", - "/fehmedialarabic":"\uFED4", - "/feicoptic":"\u03E5", - "/female":"\u2640", - "/ff":"\uFB00", - "/ffi":"\uFB03", - "/ffl":"\uFB04", - "/fi":"\uFB01", - "/fifteencircle":"\u246E", - "/fifteenparen":"\u2482", - "/fifteenperiod":"\u2496", - "/figuredash":"\u2012", - "/filledbox":"\u25A0", - "/filledrect":"\u25AC", - "/finalkaf":"\u05DA", - "/finalkafdagesh":"\uFB3A", - "/finalkafdageshhebrew":"\uFB3A", - "/finalkafhebrew":"\u05DA", - "/finalkafqamats":"\u05DA 05B8", - "/finalkafqamatshebrew":"\u05DA 05B8", - "/finalkafsheva":"\u05DA 05B0", - "/finalkafshevahebrew":"\u05DA 05B0", - "/finalmem":"\u05DD", - "/finalmemhebrew":"\u05DD", - "/finalnun":"\u05DF", - "/finalnunhebrew":"\u05DF", - "/finalpe":"\u05E3", - "/finalpehebrew":"\u05E3", - "/finaltsadi":"\u05E5", - "/finaltsadihebrew":"\u05E5", - "/firsttonechinese":"\u02C9", - "/fisheye":"\u25C9", - "/fitacyrillic":"\u0473", - "/five":"\u0035", - "/fivearabic":"\u0665", - "/fivebengali":"\u09EB", - "/fivecircle":"\u2464", - "/fivecircleinversesansserif":"\u278E", - "/fivedeva":"\u096B", - "/fiveeighths":"\u215D", - "/fivegujarati":"\u0AEB", - "/fivegurmukhi":"\u0A6B", - "/fivehackarabic":"\u0665", - "/fivehangzhou":"\u3025", - "/fiveideographicparen":"\u3224", - "/fiveinferior":"\u2085", - "/fivemonospace":"\uFF15", - "/fiveoldstyle":"\uF735", - "/fiveparen":"\u2478", - "/fiveperiod":"\u248C", - "/fivepersian":"\u06F5", - "/fiveroman":"\u2174", - "/fivesuperior":"\u2075", - "/fivethai":"\u0E55", - "/fl":"\uFB02", - "/florin":"\u0192", - "/fmonospace":"\uFF46", - "/fmsquare":"\u3399", - "/fofanthai":"\u0E1F", - "/fofathai":"\u0E1D", - "/fongmanthai":"\u0E4F", - "/forall":"\u2200", - "/four":"\u0034", - "/fourarabic":"\u0664", - "/fourbengali":"\u09EA", - "/fourcircle":"\u2463", - "/fourcircleinversesansserif":"\u278D", - "/fourdeva":"\u096A", - "/fourgujarati":"\u0AEA", - "/fourgurmukhi":"\u0A6A", - "/fourhackarabic":"\u0664", - "/fourhangzhou":"\u3024", - "/fourideographicparen":"\u3223", - "/fourinferior":"\u2084", - "/fourmonospace":"\uFF14", - "/fournumeratorbengali":"\u09F7", - "/fouroldstyle":"\uF734", - "/fourparen":"\u2477", - "/fourperiod":"\u248B", - "/fourpersian":"\u06F4", - "/fourroman":"\u2173", - "/foursuperior":"\u2074", - "/fourteencircle":"\u246D", - "/fourteenparen":"\u2481", - "/fourteenperiod":"\u2495", - "/fourthai":"\u0E54", - "/fourthtonechinese":"\u02CB", - "/fparen":"\u24A1", - "/fraction":"\u2044", - "/franc":"\u20A3", - "/g":"\u0067", - "/gabengali":"\u0997", - "/gacute":"\u01F5", - "/gadeva":"\u0917", - "/gafarabic":"\u06AF", - "/gaffinalarabic":"\uFB93", - "/gafinitialarabic":"\uFB94", - "/gafmedialarabic":"\uFB95", - "/gagujarati":"\u0A97", - "/gagurmukhi":"\u0A17", - "/gahiragana":"\u304C", - "/gakatakana":"\u30AC", - "/gamma":"\u03B3", - "/gammalatinsmall":"\u0263", - "/gammasuperior":"\u02E0", - "/gangiacoptic":"\u03EB", - "/gbopomofo":"\u310D", - "/gbreve":"\u011F", - "/gcaron":"\u01E7", - "/gcedilla":"\u0123", - "/gcircle":"\u24D6", - "/gcircumflex":"\u011D", - "/gcommaaccent":"\u0123", - "/gdot":"\u0121", - "/gdotaccent":"\u0121", - "/gecyrillic":"\u0433", - "/gehiragana":"\u3052", - "/gekatakana":"\u30B2", - "/geometricallyequal":"\u2251", - "/gereshaccenthebrew":"\u059C", - "/gereshhebrew":"\u05F3", - "/gereshmuqdamhebrew":"\u059D", - "/germandbls":"\u00DF", - "/gershayimaccenthebrew":"\u059E", - "/gershayimhebrew":"\u05F4", - "/getamark":"\u3013", - "/ghabengali":"\u0998", - "/ghadarmenian":"\u0572", - "/ghadeva":"\u0918", - "/ghagujarati":"\u0A98", - "/ghagurmukhi":"\u0A18", - "/ghainarabic":"\u063A", - "/ghainfinalarabic":"\uFECE", - "/ghaininitialarabic":"\uFECF", - "/ghainmedialarabic":"\uFED0", - "/ghemiddlehookcyrillic":"\u0495", - "/ghestrokecyrillic":"\u0493", - "/gheupturncyrillic":"\u0491", - "/ghhadeva":"\u095A", - "/ghhagurmukhi":"\u0A5A", - "/ghook":"\u0260", - "/ghzsquare":"\u3393", - "/gihiragana":"\u304E", - "/gikatakana":"\u30AE", - "/gimarmenian":"\u0563", - "/gimel":"\u05D2", - "/gimeldagesh":"\uFB32", - "/gimeldageshhebrew":"\uFB32", - "/gimelhebrew":"\u05D2", - "/gjecyrillic":"\u0453", - "/glottalinvertedstroke":"\u01BE", - "/glottalstop":"\u0294", - "/glottalstopinverted":"\u0296", - "/glottalstopmod":"\u02C0", - "/glottalstopreversed":"\u0295", - "/glottalstopreversedmod":"\u02C1", - "/glottalstopreversedsuperior":"\u02E4", - "/glottalstopstroke":"\u02A1", - "/glottalstopstrokereversed":"\u02A2", - "/gmacron":"\u1E21", - "/gmonospace":"\uFF47", - "/gohiragana":"\u3054", - "/gokatakana":"\u30B4", - "/gparen":"\u24A2", - "/gpasquare":"\u33AC", - "/gradient":"\u2207", - "/grave":"\u0060", - "/gravebelowcmb":"\u0316", - "/gravecmb":"\u0300", - "/gravecomb":"\u0300", - "/gravedeva":"\u0953", - "/gravelowmod":"\u02CE", - "/gravemonospace":"\uFF40", - "/gravetonecmb":"\u0340", - "/greater":"\u003E", - "/greaterequal":"\u2265", - "/greaterequalorless":"\u22DB", - "/greatermonospace":"\uFF1E", - "/greaterorequivalent":"\u2273", - "/greaterorless":"\u2277", - "/greateroverequal":"\u2267", - "/greatersmall":"\uFE65", - "/gscript":"\u0261", - "/gstroke":"\u01E5", - "/guhiragana":"\u3050", - "/guillemotleft":"\u00AB", - "/guillemotright":"\u00BB", - "/guilsinglleft":"\u2039", - "/guilsinglright":"\u203A", - "/gukatakana":"\u30B0", - "/guramusquare":"\u3318", - "/gysquare":"\u33C9", - "/h":"\u0068", - "/haabkhasiancyrillic":"\u04A9", - "/haaltonearabic":"\u06C1", - "/habengali":"\u09B9", - "/hadescendercyrillic":"\u04B3", - "/hadeva":"\u0939", - "/hagujarati":"\u0AB9", - "/hagurmukhi":"\u0A39", - "/haharabic":"\u062D", - "/hahfinalarabic":"\uFEA2", - "/hahinitialarabic":"\uFEA3", - "/hahiragana":"\u306F", - "/hahmedialarabic":"\uFEA4", - "/haitusquare":"\u332A", - "/hakatakana":"\u30CF", - "/hakatakanahalfwidth":"\uFF8A", - "/halantgurmukhi":"\u0A4D", - "/hamzaarabic":"\u0621", - "/hamzadammaarabic":"\u0621 064F", - "/hamzadammatanarabic":"\u0621 064C", - "/hamzafathaarabic":"\u0621 064E", - "/hamzafathatanarabic":"\u0621 064B", - "/hamzalowarabic":"\u0621", - "/hamzalowkasraarabic":"\u0621 0650", - "/hamzalowkasratanarabic":"\u0621 064D", - "/hamzasukunarabic":"\u0621 0652", - "/hangulfiller":"\u3164", - "/hardsigncyrillic":"\u044A", - "/harpoonleftbarbup":"\u21BC", - "/harpoonrightbarbup":"\u21C0", - "/hasquare":"\u33CA", - "/hatafpatah":"\u05B2", - "/hatafpatah16":"\u05B2", - "/hatafpatah23":"\u05B2", - "/hatafpatah2f":"\u05B2", - "/hatafpatahhebrew":"\u05B2", - "/hatafpatahnarrowhebrew":"\u05B2", - "/hatafpatahquarterhebrew":"\u05B2", - "/hatafpatahwidehebrew":"\u05B2", - "/hatafqamats":"\u05B3", - "/hatafqamats1b":"\u05B3", - "/hatafqamats28":"\u05B3", - "/hatafqamats34":"\u05B3", - "/hatafqamatshebrew":"\u05B3", - "/hatafqamatsnarrowhebrew":"\u05B3", - "/hatafqamatsquarterhebrew":"\u05B3", - "/hatafqamatswidehebrew":"\u05B3", - "/hatafsegol":"\u05B1", - "/hatafsegol17":"\u05B1", - "/hatafsegol24":"\u05B1", - "/hatafsegol30":"\u05B1", - "/hatafsegolhebrew":"\u05B1", - "/hatafsegolnarrowhebrew":"\u05B1", - "/hatafsegolquarterhebrew":"\u05B1", - "/hatafsegolwidehebrew":"\u05B1", - "/hbar":"\u0127", - "/hbopomofo":"\u310F", - "/hbrevebelow":"\u1E2B", - "/hcedilla":"\u1E29", - "/hcircle":"\u24D7", - "/hcircumflex":"\u0125", - "/hdieresis":"\u1E27", - "/hdotaccent":"\u1E23", - "/hdotbelow":"\u1E25", - "/he":"\u05D4", - "/heart":"\u2665", - "/heartsuitblack":"\u2665", - "/heartsuitwhite":"\u2661", - "/hedagesh":"\uFB34", - "/hedageshhebrew":"\uFB34", - "/hehaltonearabic":"\u06C1", - "/heharabic":"\u0647", - "/hehebrew":"\u05D4", - "/hehfinalaltonearabic":"\uFBA7", - "/hehfinalalttwoarabic":"\uFEEA", - "/hehfinalarabic":"\uFEEA", - "/hehhamzaabovefinalarabic":"\uFBA5", - "/hehhamzaaboveisolatedarabic":"\uFBA4", - "/hehinitialaltonearabic":"\uFBA8", - "/hehinitialarabic":"\uFEEB", - "/hehiragana":"\u3078", - "/hehmedialaltonearabic":"\uFBA9", - "/hehmedialarabic":"\uFEEC", - "/heiseierasquare":"\u337B", - "/hekatakana":"\u30D8", - "/hekatakanahalfwidth":"\uFF8D", - "/hekutaarusquare":"\u3336", - "/henghook":"\u0267", - "/herutusquare":"\u3339", - "/het":"\u05D7", - "/hethebrew":"\u05D7", - "/hhook":"\u0266", - "/hhooksuperior":"\u02B1", - "/hieuhacirclekorean":"\u327B", - "/hieuhaparenkorean":"\u321B", - "/hieuhcirclekorean":"\u326D", - "/hieuhkorean":"\u314E", - "/hieuhparenkorean":"\u320D", - "/hihiragana":"\u3072", - "/hikatakana":"\u30D2", - "/hikatakanahalfwidth":"\uFF8B", - "/hiriq":"\u05B4", - "/hiriq14":"\u05B4", - "/hiriq21":"\u05B4", - "/hiriq2d":"\u05B4", - "/hiriqhebrew":"\u05B4", - "/hiriqnarrowhebrew":"\u05B4", - "/hiriqquarterhebrew":"\u05B4", - "/hiriqwidehebrew":"\u05B4", - "/hlinebelow":"\u1E96", - "/hmonospace":"\uFF48", - "/hoarmenian":"\u0570", - "/hohipthai":"\u0E2B", - "/hohiragana":"\u307B", - "/hokatakana":"\u30DB", - "/hokatakanahalfwidth":"\uFF8E", - "/holam":"\u05B9", - "/holam19":"\u05B9", - "/holam26":"\u05B9", - "/holam32":"\u05B9", - "/holamhebrew":"\u05B9", - "/holamnarrowhebrew":"\u05B9", - "/holamquarterhebrew":"\u05B9", - "/holamwidehebrew":"\u05B9", - "/honokhukthai":"\u0E2E", - "/hookabovecomb":"\u0309", - "/hookcmb":"\u0309", - "/hookpalatalizedbelowcmb":"\u0321", - "/hookretroflexbelowcmb":"\u0322", - "/hoonsquare":"\u3342", - "/horicoptic":"\u03E9", - "/horizontalbar":"\u2015", - "/horncmb":"\u031B", - "/hotsprings":"\u2668", - "/house":"\u2302", - "/hparen":"\u24A3", - "/hsuperior":"\u02B0", - "/hturned":"\u0265", - "/huhiragana":"\u3075", - "/huiitosquare":"\u3333", - "/hukatakana":"\u30D5", - "/hukatakanahalfwidth":"\uFF8C", - "/hungarumlaut":"\u02DD", - "/hungarumlautcmb":"\u030B", - "/hv":"\u0195", - "/hyphen":"\u002D", - "/hypheninferior":"\uF6E5", - "/hyphenmonospace":"\uFF0D", - "/hyphensmall":"\uFE63", - "/hyphensuperior":"\uF6E6", - "/hyphentwo":"\u2010", - "/i":"\u0069", - "/iacute":"\u00ED", - "/iacyrillic":"\u044F", - "/ibengali":"\u0987", - "/ibopomofo":"\u3127", - "/ibreve":"\u012D", - "/icaron":"\u01D0", - "/icircle":"\u24D8", - "/icircumflex":"\u00EE", - "/icyrillic":"\u0456", - "/idblgrave":"\u0209", - "/ideographearthcircle":"\u328F", - "/ideographfirecircle":"\u328B", - "/ideographicallianceparen":"\u323F", - "/ideographiccallparen":"\u323A", - "/ideographiccentrecircle":"\u32A5", - "/ideographicclose":"\u3006", - "/ideographiccomma":"\u3001", - "/ideographiccommaleft":"\uFF64", - "/ideographiccongratulationparen":"\u3237", - "/ideographiccorrectcircle":"\u32A3", - "/ideographicearthparen":"\u322F", - "/ideographicenterpriseparen":"\u323D", - "/ideographicexcellentcircle":"\u329D", - "/ideographicfestivalparen":"\u3240", - "/ideographicfinancialcircle":"\u3296", - "/ideographicfinancialparen":"\u3236", - "/ideographicfireparen":"\u322B", - "/ideographichaveparen":"\u3232", - "/ideographichighcircle":"\u32A4", - "/ideographiciterationmark":"\u3005", - "/ideographiclaborcircle":"\u3298", - "/ideographiclaborparen":"\u3238", - "/ideographicleftcircle":"\u32A7", - "/ideographiclowcircle":"\u32A6", - "/ideographicmedicinecircle":"\u32A9", - "/ideographicmetalparen":"\u322E", - "/ideographicmoonparen":"\u322A", - "/ideographicnameparen":"\u3234", - "/ideographicperiod":"\u3002", - "/ideographicprintcircle":"\u329E", - "/ideographicreachparen":"\u3243", - "/ideographicrepresentparen":"\u3239", - "/ideographicresourceparen":"\u323E", - "/ideographicrightcircle":"\u32A8", - "/ideographicsecretcircle":"\u3299", - "/ideographicselfparen":"\u3242", - "/ideographicsocietyparen":"\u3233", - "/ideographicspace":"\u3000", - "/ideographicspecialparen":"\u3235", - "/ideographicstockparen":"\u3231", - "/ideographicstudyparen":"\u323B", - "/ideographicsunparen":"\u3230", - "/ideographicsuperviseparen":"\u323C", - "/ideographicwaterparen":"\u322C", - "/ideographicwoodparen":"\u322D", - "/ideographiczero":"\u3007", - "/ideographmetalcircle":"\u328E", - "/ideographmooncircle":"\u328A", - "/ideographnamecircle":"\u3294", - "/ideographsuncircle":"\u3290", - "/ideographwatercircle":"\u328C", - "/ideographwoodcircle":"\u328D", - "/ideva":"\u0907", - "/idieresis":"\u00EF", - "/idieresisacute":"\u1E2F", - "/idieresiscyrillic":"\u04E5", - "/idotbelow":"\u1ECB", - "/iebrevecyrillic":"\u04D7", - "/iecyrillic":"\u0435", - "/ieungacirclekorean":"\u3275", - "/ieungaparenkorean":"\u3215", - "/ieungcirclekorean":"\u3267", - "/ieungkorean":"\u3147", - "/ieungparenkorean":"\u3207", - "/igrave":"\u00EC", - "/igujarati":"\u0A87", - "/igurmukhi":"\u0A07", - "/ihiragana":"\u3044", - "/ihookabove":"\u1EC9", - "/iibengali":"\u0988", - "/iicyrillic":"\u0438", - "/iideva":"\u0908", - "/iigujarati":"\u0A88", - "/iigurmukhi":"\u0A08", - "/iimatragurmukhi":"\u0A40", - "/iinvertedbreve":"\u020B", - "/iishortcyrillic":"\u0439", - "/iivowelsignbengali":"\u09C0", - "/iivowelsigndeva":"\u0940", - "/iivowelsigngujarati":"\u0AC0", - "/ij":"\u0133", - "/ikatakana":"\u30A4", - "/ikatakanahalfwidth":"\uFF72", - "/ikorean":"\u3163", - "/ilde":"\u02DC", - "/iluyhebrew":"\u05AC", - "/imacron":"\u012B", - "/imacroncyrillic":"\u04E3", - "/imageorapproximatelyequal":"\u2253", - "/imatragurmukhi":"\u0A3F", - "/imonospace":"\uFF49", - "/increment":"\u2206", - "/infinity":"\u221E", - "/iniarmenian":"\u056B", - "/integral":"\u222B", - "/integralbottom":"\u2321", - "/integralbt":"\u2321", - "/integralex":"\uF8F5", - "/integraltop":"\u2320", - "/integraltp":"\u2320", - "/intersection":"\u2229", - "/intisquare":"\u3305", - "/invbullet":"\u25D8", - "/invcircle":"\u25D9", - "/invsmileface":"\u263B", - "/iocyrillic":"\u0451", - "/iogonek":"\u012F", - "/iota":"\u03B9", - "/iotadieresis":"\u03CA", - "/iotadieresistonos":"\u0390", - "/iotalatin":"\u0269", - "/iotatonos":"\u03AF", - "/iparen":"\u24A4", - "/irigurmukhi":"\u0A72", - "/ismallhiragana":"\u3043", - "/ismallkatakana":"\u30A3", - "/ismallkatakanahalfwidth":"\uFF68", - "/issharbengali":"\u09FA", - "/istroke":"\u0268", - "/isuperior":"\uF6ED", - "/iterationhiragana":"\u309D", - "/iterationkatakana":"\u30FD", - "/itilde":"\u0129", - "/itildebelow":"\u1E2D", - "/iubopomofo":"\u3129", - "/iucyrillic":"\u044E", - "/ivowelsignbengali":"\u09BF", - "/ivowelsigndeva":"\u093F", - "/ivowelsigngujarati":"\u0ABF", - "/izhitsacyrillic":"\u0475", - "/izhitsadblgravecyrillic":"\u0477", - "/j":"\u006A", - "/jaarmenian":"\u0571", - "/jabengali":"\u099C", - "/jadeva":"\u091C", - "/jagujarati":"\u0A9C", - "/jagurmukhi":"\u0A1C", - "/jbopomofo":"\u3110", - "/jcaron":"\u01F0", - "/jcircle":"\u24D9", - "/jcircumflex":"\u0135", - "/jcrossedtail":"\u029D", - "/jdotlessstroke":"\u025F", - "/jecyrillic":"\u0458", - "/jeemarabic":"\u062C", - "/jeemfinalarabic":"\uFE9E", - "/jeeminitialarabic":"\uFE9F", - "/jeemmedialarabic":"\uFEA0", - "/jeharabic":"\u0698", - "/jehfinalarabic":"\uFB8B", - "/jhabengali":"\u099D", - "/jhadeva":"\u091D", - "/jhagujarati":"\u0A9D", - "/jhagurmukhi":"\u0A1D", - "/jheharmenian":"\u057B", - "/jis":"\u3004", - "/jmonospace":"\uFF4A", - "/jparen":"\u24A5", - "/jsuperior":"\u02B2", - "/k":"\u006B", - "/kabashkircyrillic":"\u04A1", - "/kabengali":"\u0995", - "/kacute":"\u1E31", - "/kacyrillic":"\u043A", - "/kadescendercyrillic":"\u049B", - "/kadeva":"\u0915", - "/kaf":"\u05DB", - "/kafarabic":"\u0643", - "/kafdagesh":"\uFB3B", - "/kafdageshhebrew":"\uFB3B", - "/kaffinalarabic":"\uFEDA", - "/kafhebrew":"\u05DB", - "/kafinitialarabic":"\uFEDB", - "/kafmedialarabic":"\uFEDC", - "/kafrafehebrew":"\uFB4D", - "/kagujarati":"\u0A95", - "/kagurmukhi":"\u0A15", - "/kahiragana":"\u304B", - "/kahookcyrillic":"\u04C4", - "/kakatakana":"\u30AB", - "/kakatakanahalfwidth":"\uFF76", - "/kappa":"\u03BA", - "/kappasymbolgreek":"\u03F0", - "/kapyeounmieumkorean":"\u3171", - "/kapyeounphieuphkorean":"\u3184", - "/kapyeounpieupkorean":"\u3178", - "/kapyeounssangpieupkorean":"\u3179", - "/karoriisquare":"\u330D", - "/kashidaautoarabic":"\u0640", - "/kashidaautonosidebearingarabic":"\u0640", - "/kasmallkatakana":"\u30F5", - "/kasquare":"\u3384", - "/kasraarabic":"\u0650", - "/kasratanarabic":"\u064D", - "/kastrokecyrillic":"\u049F", - "/katahiraprolongmarkhalfwidth":"\uFF70", - "/kaverticalstrokecyrillic":"\u049D", - "/kbopomofo":"\u310E", - "/kcalsquare":"\u3389", - "/kcaron":"\u01E9", - "/kcedilla":"\u0137", - "/kcircle":"\u24DA", - "/kcommaaccent":"\u0137", - "/kdotbelow":"\u1E33", - "/keharmenian":"\u0584", - "/kehiragana":"\u3051", - "/kekatakana":"\u30B1", - "/kekatakanahalfwidth":"\uFF79", - "/kenarmenian":"\u056F", - "/kesmallkatakana":"\u30F6", - "/kgreenlandic":"\u0138", - "/khabengali":"\u0996", - "/khacyrillic":"\u0445", - "/khadeva":"\u0916", - "/khagujarati":"\u0A96", - "/khagurmukhi":"\u0A16", - "/khaharabic":"\u062E", - "/khahfinalarabic":"\uFEA6", - "/khahinitialarabic":"\uFEA7", - "/khahmedialarabic":"\uFEA8", - "/kheicoptic":"\u03E7", - "/khhadeva":"\u0959", - "/khhagurmukhi":"\u0A59", - "/khieukhacirclekorean":"\u3278", - "/khieukhaparenkorean":"\u3218", - "/khieukhcirclekorean":"\u326A", - "/khieukhkorean":"\u314B", - "/khieukhparenkorean":"\u320A", - "/khokhaithai":"\u0E02", - "/khokhonthai":"\u0E05", - "/khokhuatthai":"\u0E03", - "/khokhwaithai":"\u0E04", - "/khomutthai":"\u0E5B", - "/khook":"\u0199", - "/khorakhangthai":"\u0E06", - "/khzsquare":"\u3391", - "/kihiragana":"\u304D", - "/kikatakana":"\u30AD", - "/kikatakanahalfwidth":"\uFF77", - "/kiroguramusquare":"\u3315", - "/kiromeetorusquare":"\u3316", - "/kirosquare":"\u3314", - "/kiyeokacirclekorean":"\u326E", - "/kiyeokaparenkorean":"\u320E", - "/kiyeokcirclekorean":"\u3260", - "/kiyeokkorean":"\u3131", - "/kiyeokparenkorean":"\u3200", - "/kiyeoksioskorean":"\u3133", - "/kjecyrillic":"\u045C", - "/klinebelow":"\u1E35", - "/klsquare":"\u3398", - "/kmcubedsquare":"\u33A6", - "/kmonospace":"\uFF4B", - "/kmsquaredsquare":"\u33A2", - "/kohiragana":"\u3053", - "/kohmsquare":"\u33C0", - "/kokaithai":"\u0E01", - "/kokatakana":"\u30B3", - "/kokatakanahalfwidth":"\uFF7A", - "/kooposquare":"\u331E", - "/koppacyrillic":"\u0481", - "/koreanstandardsymbol":"\u327F", - "/koroniscmb":"\u0343", - "/kparen":"\u24A6", - "/kpasquare":"\u33AA", - "/ksicyrillic":"\u046F", - "/ktsquare":"\u33CF", - "/kturned":"\u029E", - "/kuhiragana":"\u304F", - "/kukatakana":"\u30AF", - "/kukatakanahalfwidth":"\uFF78", - "/kvsquare":"\u33B8", - "/kwsquare":"\u33BE", - "/l":"\u006C", - "/labengali":"\u09B2", - "/lacute":"\u013A", - "/ladeva":"\u0932", - "/lagujarati":"\u0AB2", - "/lagurmukhi":"\u0A32", - "/lakkhangyaothai":"\u0E45", - "/lamaleffinalarabic":"\uFEFC", - "/lamalefhamzaabovefinalarabic":"\uFEF8", - "/lamalefhamzaaboveisolatedarabic":"\uFEF7", - "/lamalefhamzabelowfinalarabic":"\uFEFA", - "/lamalefhamzabelowisolatedarabic":"\uFEF9", - "/lamalefisolatedarabic":"\uFEFB", - "/lamalefmaddaabovefinalarabic":"\uFEF6", - "/lamalefmaddaaboveisolatedarabic":"\uFEF5", - "/lamarabic":"\u0644", - "/lambda":"\u03BB", - "/lambdastroke":"\u019B", - "/lamed":"\u05DC", - "/lameddagesh":"\uFB3C", - "/lameddageshhebrew":"\uFB3C", - "/lamedhebrew":"\u05DC", - "/lamedholam":"\u05DC 05B9", - "/lamedholamdagesh":"\u05DC 05B9 05BC", - "/lamedholamdageshhebrew":"\u05DC 05B9 05BC", - "/lamedholamhebrew":"\u05DC 05B9", - "/lamfinalarabic":"\uFEDE", - "/lamhahinitialarabic":"\uFCCA", - "/laminitialarabic":"\uFEDF", - "/lamjeeminitialarabic":"\uFCC9", - "/lamkhahinitialarabic":"\uFCCB", - "/lamlamhehisolatedarabic":"\uFDF2", - "/lammedialarabic":"\uFEE0", - "/lammeemhahinitialarabic":"\uFD88", - "/lammeeminitialarabic":"\uFCCC", - "/lammeemjeeminitialarabic":"\uFEDF FEE4 FEA0", - "/lammeemkhahinitialarabic":"\uFEDF FEE4 FEA8", - "/largecircle":"\u25EF", - "/lbar":"\u019A", - "/lbelt":"\u026C", - "/lbopomofo":"\u310C", - "/lcaron":"\u013E", - "/lcedilla":"\u013C", - "/lcircle":"\u24DB", - "/lcircumflexbelow":"\u1E3D", - "/lcommaaccent":"\u013C", - "/ldot":"\u0140", - "/ldotaccent":"\u0140", - "/ldotbelow":"\u1E37", - "/ldotbelowmacron":"\u1E39", - "/leftangleabovecmb":"\u031A", - "/lefttackbelowcmb":"\u0318", - "/less":"\u003C", - "/lessequal":"\u2264", - "/lessequalorgreater":"\u22DA", - "/lessmonospace":"\uFF1C", - "/lessorequivalent":"\u2272", - "/lessorgreater":"\u2276", - "/lessoverequal":"\u2266", - "/lesssmall":"\uFE64", - "/lezh":"\u026E", - "/lfblock":"\u258C", - "/lhookretroflex":"\u026D", - "/lira":"\u20A4", - "/liwnarmenian":"\u056C", - "/lj":"\u01C9", - "/ljecyrillic":"\u0459", - "/ll":"\uF6C0", - "/lladeva":"\u0933", - "/llagujarati":"\u0AB3", - "/llinebelow":"\u1E3B", - "/llladeva":"\u0934", - "/llvocalicbengali":"\u09E1", - "/llvocalicdeva":"\u0961", - "/llvocalicvowelsignbengali":"\u09E3", - "/llvocalicvowelsigndeva":"\u0963", - "/lmiddletilde":"\u026B", - "/lmonospace":"\uFF4C", - "/lmsquare":"\u33D0", - "/lochulathai":"\u0E2C", - "/logicaland":"\u2227", - "/logicalnot":"\u00AC", - "/logicalnotreversed":"\u2310", - "/logicalor":"\u2228", - "/lolingthai":"\u0E25", - "/longs":"\u017F", - "/lowlinecenterline":"\uFE4E", - "/lowlinecmb":"\u0332", - "/lowlinedashed":"\uFE4D", - "/lozenge":"\u25CA", - "/lparen":"\u24A7", - "/lslash":"\u0142", - "/lsquare":"\u2113", - "/lsuperior":"\uF6EE", - "/ltshade":"\u2591", - "/luthai":"\u0E26", - "/lvocalicbengali":"\u098C", - "/lvocalicdeva":"\u090C", - "/lvocalicvowelsignbengali":"\u09E2", - "/lvocalicvowelsigndeva":"\u0962", - "/lxsquare":"\u33D3", - "/m":"\u006D", - "/mabengali":"\u09AE", - "/macron":"\u00AF", - "/macronbelowcmb":"\u0331", - "/macroncmb":"\u0304", - "/macronlowmod":"\u02CD", - "/macronmonospace":"\uFFE3", - "/macute":"\u1E3F", - "/madeva":"\u092E", - "/magujarati":"\u0AAE", - "/magurmukhi":"\u0A2E", - "/mahapakhhebrew":"\u05A4", - "/mahapakhlefthebrew":"\u05A4", - "/mahiragana":"\u307E", - "/maichattawalowleftthai":"\uF895", - "/maichattawalowrightthai":"\uF894", - "/maichattawathai":"\u0E4B", - "/maichattawaupperleftthai":"\uF893", - "/maieklowleftthai":"\uF88C", - "/maieklowrightthai":"\uF88B", - "/maiekthai":"\u0E48", - "/maiekupperleftthai":"\uF88A", - "/maihanakatleftthai":"\uF884", - "/maihanakatthai":"\u0E31", - "/maitaikhuleftthai":"\uF889", - "/maitaikhuthai":"\u0E47", - "/maitholowleftthai":"\uF88F", - "/maitholowrightthai":"\uF88E", - "/maithothai":"\u0E49", - "/maithoupperleftthai":"\uF88D", - "/maitrilowleftthai":"\uF892", - "/maitrilowrightthai":"\uF891", - "/maitrithai":"\u0E4A", - "/maitriupperleftthai":"\uF890", - "/maiyamokthai":"\u0E46", - "/makatakana":"\u30DE", - "/makatakanahalfwidth":"\uFF8F", - "/male":"\u2642", - "/mansyonsquare":"\u3347", - "/maqafhebrew":"\u05BE", - "/mars":"\u2642", - "/masoracirclehebrew":"\u05AF", - "/masquare":"\u3383", - "/mbopomofo":"\u3107", - "/mbsquare":"\u33D4", - "/mcircle":"\u24DC", - "/mcubedsquare":"\u33A5", - "/mdotaccent":"\u1E41", - "/mdotbelow":"\u1E43", - "/meemarabic":"\u0645", - "/meemfinalarabic":"\uFEE2", - "/meeminitialarabic":"\uFEE3", - "/meemmedialarabic":"\uFEE4", - "/meemmeeminitialarabic":"\uFCD1", - "/meemmeemisolatedarabic":"\uFC48", - "/meetorusquare":"\u334D", - "/mehiragana":"\u3081", - "/meizierasquare":"\u337E", - "/mekatakana":"\u30E1", - "/mekatakanahalfwidth":"\uFF92", - "/mem":"\u05DE", - "/memdagesh":"\uFB3E", - "/memdageshhebrew":"\uFB3E", - "/memhebrew":"\u05DE", - "/menarmenian":"\u0574", - "/merkhahebrew":"\u05A5", - "/merkhakefulahebrew":"\u05A6", - "/merkhakefulalefthebrew":"\u05A6", - "/merkhalefthebrew":"\u05A5", - "/mhook":"\u0271", - "/mhzsquare":"\u3392", - "/middledotkatakanahalfwidth":"\uFF65", - "/middot":"\u00B7", - "/mieumacirclekorean":"\u3272", - "/mieumaparenkorean":"\u3212", - "/mieumcirclekorean":"\u3264", - "/mieumkorean":"\u3141", - "/mieumpansioskorean":"\u3170", - "/mieumparenkorean":"\u3204", - "/mieumpieupkorean":"\u316E", - "/mieumsioskorean":"\u316F", - "/mihiragana":"\u307F", - "/mikatakana":"\u30DF", - "/mikatakanahalfwidth":"\uFF90", - "/minus":"\u2212", - "/minusbelowcmb":"\u0320", - "/minuscircle":"\u2296", - "/minusmod":"\u02D7", - "/minusplus":"\u2213", - "/minute":"\u2032", - "/miribaarusquare":"\u334A", - "/mirisquare":"\u3349", - "/mlonglegturned":"\u0270", - "/mlsquare":"\u3396", - "/mmcubedsquare":"\u33A3", - "/mmonospace":"\uFF4D", - "/mmsquaredsquare":"\u339F", - "/mohiragana":"\u3082", - "/mohmsquare":"\u33C1", - "/mokatakana":"\u30E2", - "/mokatakanahalfwidth":"\uFF93", - "/molsquare":"\u33D6", - "/momathai":"\u0E21", - "/moverssquare":"\u33A7", - "/moverssquaredsquare":"\u33A8", - "/mparen":"\u24A8", - "/mpasquare":"\u33AB", - "/mssquare":"\u33B3", - "/msuperior":"\uF6EF", - "/mturned":"\u026F", - "/mu":"\u00B5", - "/mu1":"\u00B5", - "/muasquare":"\u3382", - "/muchgreater":"\u226B", - "/muchless":"\u226A", - "/mufsquare":"\u338C", - "/mugreek":"\u03BC", - "/mugsquare":"\u338D", - "/muhiragana":"\u3080", - "/mukatakana":"\u30E0", - "/mukatakanahalfwidth":"\uFF91", - "/mulsquare":"\u3395", - "/multiply":"\u00D7", - "/mumsquare":"\u339B", - "/munahhebrew":"\u05A3", - "/munahlefthebrew":"\u05A3", - "/musicalnote":"\u266A", - "/musicalnotedbl":"\u266B", - "/musicflatsign":"\u266D", - "/musicsharpsign":"\u266F", - "/mussquare":"\u33B2", - "/muvsquare":"\u33B6", - "/muwsquare":"\u33BC", - "/mvmegasquare":"\u33B9", - "/mvsquare":"\u33B7", - "/mwmegasquare":"\u33BF", - "/mwsquare":"\u33BD", - "/n":"\u006E", - "/nabengali":"\u09A8", - "/nabla":"\u2207", - "/nacute":"\u0144", - "/nadeva":"\u0928", - "/nagujarati":"\u0AA8", - "/nagurmukhi":"\u0A28", - "/nahiragana":"\u306A", - "/nakatakana":"\u30CA", - "/nakatakanahalfwidth":"\uFF85", - "/napostrophe":"\u0149", - "/nasquare":"\u3381", - "/nbopomofo":"\u310B", - "/nbspace":"\u00A0", - "/ncaron":"\u0148", - "/ncedilla":"\u0146", - "/ncircle":"\u24DD", - "/ncircumflexbelow":"\u1E4B", - "/ncommaaccent":"\u0146", - "/ndotaccent":"\u1E45", - "/ndotbelow":"\u1E47", - "/nehiragana":"\u306D", - "/nekatakana":"\u30CD", - "/nekatakanahalfwidth":"\uFF88", - "/newsheqelsign":"\u20AA", - "/nfsquare":"\u338B", - "/ngabengali":"\u0999", - "/ngadeva":"\u0919", - "/ngagujarati":"\u0A99", - "/ngagurmukhi":"\u0A19", - "/ngonguthai":"\u0E07", - "/nhiragana":"\u3093", - "/nhookleft":"\u0272", - "/nhookretroflex":"\u0273", - "/nieunacirclekorean":"\u326F", - "/nieunaparenkorean":"\u320F", - "/nieuncieuckorean":"\u3135", - "/nieuncirclekorean":"\u3261", - "/nieunhieuhkorean":"\u3136", - "/nieunkorean":"\u3134", - "/nieunpansioskorean":"\u3168", - "/nieunparenkorean":"\u3201", - "/nieunsioskorean":"\u3167", - "/nieuntikeutkorean":"\u3166", - "/nihiragana":"\u306B", - "/nikatakana":"\u30CB", - "/nikatakanahalfwidth":"\uFF86", - "/nikhahitleftthai":"\uF899", - "/nikhahitthai":"\u0E4D", - "/nine":"\u0039", - "/ninearabic":"\u0669", - "/ninebengali":"\u09EF", - "/ninecircle":"\u2468", - "/ninecircleinversesansserif":"\u2792", - "/ninedeva":"\u096F", - "/ninegujarati":"\u0AEF", - "/ninegurmukhi":"\u0A6F", - "/ninehackarabic":"\u0669", - "/ninehangzhou":"\u3029", - "/nineideographicparen":"\u3228", - "/nineinferior":"\u2089", - "/ninemonospace":"\uFF19", - "/nineoldstyle":"\uF739", - "/nineparen":"\u247C", - "/nineperiod":"\u2490", - "/ninepersian":"\u06F9", - "/nineroman":"\u2178", - "/ninesuperior":"\u2079", - "/nineteencircle":"\u2472", - "/nineteenparen":"\u2486", - "/nineteenperiod":"\u249A", - "/ninethai":"\u0E59", - "/nj":"\u01CC", - "/njecyrillic":"\u045A", - "/nkatakana":"\u30F3", - "/nkatakanahalfwidth":"\uFF9D", - "/nlegrightlong":"\u019E", - "/nlinebelow":"\u1E49", - "/nmonospace":"\uFF4E", - "/nmsquare":"\u339A", - "/nnabengali":"\u09A3", - "/nnadeva":"\u0923", - "/nnagujarati":"\u0AA3", - "/nnagurmukhi":"\u0A23", - "/nnnadeva":"\u0929", - "/nohiragana":"\u306E", - "/nokatakana":"\u30CE", - "/nokatakanahalfwidth":"\uFF89", - "/nonbreakingspace":"\u00A0", - "/nonenthai":"\u0E13", - "/nonuthai":"\u0E19", - "/noonarabic":"\u0646", - "/noonfinalarabic":"\uFEE6", - "/noonghunnaarabic":"\u06BA", - "/noonghunnafinalarabic":"\uFB9F", - "/noonhehinitialarabic":"\uFEE7 FEEC", - "/nooninitialarabic":"\uFEE7", - "/noonjeeminitialarabic":"\uFCD2", - "/noonjeemisolatedarabic":"\uFC4B", - "/noonmedialarabic":"\uFEE8", - "/noonmeeminitialarabic":"\uFCD5", - "/noonmeemisolatedarabic":"\uFC4E", - "/noonnoonfinalarabic":"\uFC8D", - "/notcontains":"\u220C", - "/notelement":"\u2209", - "/notelementof":"\u2209", - "/notequal":"\u2260", - "/notgreater":"\u226F", - "/notgreaternorequal":"\u2271", - "/notgreaternorless":"\u2279", - "/notidentical":"\u2262", - "/notless":"\u226E", - "/notlessnorequal":"\u2270", - "/notparallel":"\u2226", - "/notprecedes":"\u2280", - "/notsubset":"\u2284", - "/notsucceeds":"\u2281", - "/notsuperset":"\u2285", - "/nowarmenian":"\u0576", - "/nparen":"\u24A9", - "/nssquare":"\u33B1", - "/nsuperior":"\u207F", - "/ntilde":"\u00F1", - "/nu":"\u03BD", - "/nuhiragana":"\u306C", - "/nukatakana":"\u30CC", - "/nukatakanahalfwidth":"\uFF87", - "/nuktabengali":"\u09BC", - "/nuktadeva":"\u093C", - "/nuktagujarati":"\u0ABC", - "/nuktagurmukhi":"\u0A3C", - "/numbersign":"\u0023", - "/numbersignmonospace":"\uFF03", - "/numbersignsmall":"\uFE5F", - "/numeralsigngreek":"\u0374", - "/numeralsignlowergreek":"\u0375", - "/numero":"\u2116", - "/nun":"\u05E0", - "/nundagesh":"\uFB40", - "/nundageshhebrew":"\uFB40", - "/nunhebrew":"\u05E0", - "/nvsquare":"\u33B5", - "/nwsquare":"\u33BB", - "/nyabengali":"\u099E", - "/nyadeva":"\u091E", - "/nyagujarati":"\u0A9E", - "/nyagurmukhi":"\u0A1E", - "/o":"\u006F", - "/oacute":"\u00F3", - "/oangthai":"\u0E2D", - "/obarred":"\u0275", - "/obarredcyrillic":"\u04E9", - "/obarreddieresiscyrillic":"\u04EB", - "/obengali":"\u0993", - "/obopomofo":"\u311B", - "/obreve":"\u014F", - "/ocandradeva":"\u0911", - "/ocandragujarati":"\u0A91", - "/ocandravowelsigndeva":"\u0949", - "/ocandravowelsigngujarati":"\u0AC9", - "/ocaron":"\u01D2", - "/ocircle":"\u24DE", - "/ocircumflex":"\u00F4", - "/ocircumflexacute":"\u1ED1", - "/ocircumflexdotbelow":"\u1ED9", - "/ocircumflexgrave":"\u1ED3", - "/ocircumflexhookabove":"\u1ED5", - "/ocircumflextilde":"\u1ED7", - "/ocyrillic":"\u043E", - "/odblacute":"\u0151", - "/odblgrave":"\u020D", - "/odeva":"\u0913", - "/odieresis":"\u00F6", - "/odieresiscyrillic":"\u04E7", - "/odotbelow":"\u1ECD", - "/oe":"\u0153", - "/oekorean":"\u315A", - "/ogonek":"\u02DB", - "/ogonekcmb":"\u0328", - "/ograve":"\u00F2", - "/ogujarati":"\u0A93", - "/oharmenian":"\u0585", - "/ohiragana":"\u304A", - "/ohookabove":"\u1ECF", - "/ohorn":"\u01A1", - "/ohornacute":"\u1EDB", - "/ohorndotbelow":"\u1EE3", - "/ohorngrave":"\u1EDD", - "/ohornhookabove":"\u1EDF", - "/ohorntilde":"\u1EE1", - "/ohungarumlaut":"\u0151", - "/oi":"\u01A3", - "/oinvertedbreve":"\u020F", - "/okatakana":"\u30AA", - "/okatakanahalfwidth":"\uFF75", - "/okorean":"\u3157", - "/olehebrew":"\u05AB", - "/omacron":"\u014D", - "/omacronacute":"\u1E53", - "/omacrongrave":"\u1E51", - "/omdeva":"\u0950", - "/omega":"\u03C9", - "/omega1":"\u03D6", - "/omegacyrillic":"\u0461", - "/omegalatinclosed":"\u0277", - "/omegaroundcyrillic":"\u047B", - "/omegatitlocyrillic":"\u047D", - "/omegatonos":"\u03CE", - "/omgujarati":"\u0AD0", - "/omicron":"\u03BF", - "/omicrontonos":"\u03CC", - "/omonospace":"\uFF4F", - "/one":"\u0031", - "/onearabic":"\u0661", - "/onebengali":"\u09E7", - "/onecircle":"\u2460", - "/onecircleinversesansserif":"\u278A", - "/onedeva":"\u0967", - "/onedotenleader":"\u2024", - "/oneeighth":"\u215B", - "/onefitted":"\uF6DC", - "/onegujarati":"\u0AE7", - "/onegurmukhi":"\u0A67", - "/onehackarabic":"\u0661", - "/onehalf":"\u00BD", - "/onehangzhou":"\u3021", - "/oneideographicparen":"\u3220", - "/oneinferior":"\u2081", - "/onemonospace":"\uFF11", - "/onenumeratorbengali":"\u09F4", - "/oneoldstyle":"\uF731", - "/oneparen":"\u2474", - "/oneperiod":"\u2488", - "/onepersian":"\u06F1", - "/onequarter":"\u00BC", - "/oneroman":"\u2170", - "/onesuperior":"\u00B9", - "/onethai":"\u0E51", - "/onethird":"\u2153", - "/oogonek":"\u01EB", - "/oogonekmacron":"\u01ED", - "/oogurmukhi":"\u0A13", - "/oomatragurmukhi":"\u0A4B", - "/oopen":"\u0254", - "/oparen":"\u24AA", - "/openbullet":"\u25E6", - "/option":"\u2325", - "/ordfeminine":"\u00AA", - "/ordmasculine":"\u00BA", - "/orthogonal":"\u221F", - "/oshortdeva":"\u0912", - "/oshortvowelsigndeva":"\u094A", - "/oslash":"\u00F8", - "/oslashacute":"\u01FF", - "/osmallhiragana":"\u3049", - "/osmallkatakana":"\u30A9", - "/osmallkatakanahalfwidth":"\uFF6B", - "/ostrokeacute":"\u01FF", - "/osuperior":"\uF6F0", - "/otcyrillic":"\u047F", - "/otilde":"\u00F5", - "/otildeacute":"\u1E4D", - "/otildedieresis":"\u1E4F", - "/oubopomofo":"\u3121", - "/overline":"\u203E", - "/overlinecenterline":"\uFE4A", - "/overlinecmb":"\u0305", - "/overlinedashed":"\uFE49", - "/overlinedblwavy":"\uFE4C", - "/overlinewavy":"\uFE4B", - "/overscore":"\u00AF", - "/ovowelsignbengali":"\u09CB", - "/ovowelsigndeva":"\u094B", - "/ovowelsigngujarati":"\u0ACB", - "/p":"\u0070", - "/paampssquare":"\u3380", - "/paasentosquare":"\u332B", - "/pabengali":"\u09AA", - "/pacute":"\u1E55", - "/padeva":"\u092A", - "/pagedown":"\u21DF", - "/pageup":"\u21DE", - "/pagujarati":"\u0AAA", - "/pagurmukhi":"\u0A2A", - "/pahiragana":"\u3071", - "/paiyannoithai":"\u0E2F", - "/pakatakana":"\u30D1", - "/palatalizationcyrilliccmb":"\u0484", - "/palochkacyrillic":"\u04C0", - "/pansioskorean":"\u317F", - "/paragraph":"\u00B6", - "/parallel":"\u2225", - "/parenleft":"\u0028", - "/parenleftaltonearabic":"\uFD3E", - "/parenleftbt":"\uF8ED", - "/parenleftex":"\uF8EC", - "/parenleftinferior":"\u208D", - "/parenleftmonospace":"\uFF08", - "/parenleftsmall":"\uFE59", - "/parenleftsuperior":"\u207D", - "/parenlefttp":"\uF8EB", - "/parenleftvertical":"\uFE35", - "/parenright":"\u0029", - "/parenrightaltonearabic":"\uFD3F", - "/parenrightbt":"\uF8F8", - "/parenrightex":"\uF8F7", - "/parenrightinferior":"\u208E", - "/parenrightmonospace":"\uFF09", - "/parenrightsmall":"\uFE5A", - "/parenrightsuperior":"\u207E", - "/parenrighttp":"\uF8F6", - "/parenrightvertical":"\uFE36", - "/partialdiff":"\u2202", - "/paseqhebrew":"\u05C0", - "/pashtahebrew":"\u0599", - "/pasquare":"\u33A9", - "/patah":"\u05B7", - "/patah11":"\u05B7", - "/patah1d":"\u05B7", - "/patah2a":"\u05B7", - "/patahhebrew":"\u05B7", - "/patahnarrowhebrew":"\u05B7", - "/patahquarterhebrew":"\u05B7", - "/patahwidehebrew":"\u05B7", - "/pazerhebrew":"\u05A1", - "/pbopomofo":"\u3106", - "/pcircle":"\u24DF", - "/pdotaccent":"\u1E57", - "/pe":"\u05E4", - "/pecyrillic":"\u043F", - "/pedagesh":"\uFB44", - "/pedageshhebrew":"\uFB44", - "/peezisquare":"\u333B", - "/pefinaldageshhebrew":"\uFB43", - "/peharabic":"\u067E", - "/peharmenian":"\u057A", - "/pehebrew":"\u05E4", - "/pehfinalarabic":"\uFB57", - "/pehinitialarabic":"\uFB58", - "/pehiragana":"\u307A", - "/pehmedialarabic":"\uFB59", - "/pekatakana":"\u30DA", - "/pemiddlehookcyrillic":"\u04A7", - "/perafehebrew":"\uFB4E", - "/percent":"\u0025", - "/percentarabic":"\u066A", - "/percentmonospace":"\uFF05", - "/percentsmall":"\uFE6A", - "/period":"\u002E", - "/periodarmenian":"\u0589", - "/periodcentered":"\u00B7", - "/periodhalfwidth":"\uFF61", - "/periodinferior":"\uF6E7", - "/periodmonospace":"\uFF0E", - "/periodsmall":"\uFE52", - "/periodsuperior":"\uF6E8", - "/perispomenigreekcmb":"\u0342", - "/perpendicular":"\u22A5", - "/perthousand":"\u2030", - "/peseta":"\u20A7", - "/pfsquare":"\u338A", - "/phabengali":"\u09AB", - "/phadeva":"\u092B", - "/phagujarati":"\u0AAB", - "/phagurmukhi":"\u0A2B", - "/phi":"\u03C6", - "/phi1":"\u03D5", - "/phieuphacirclekorean":"\u327A", - "/phieuphaparenkorean":"\u321A", - "/phieuphcirclekorean":"\u326C", - "/phieuphkorean":"\u314D", - "/phieuphparenkorean":"\u320C", - "/philatin":"\u0278", - "/phinthuthai":"\u0E3A", - "/phisymbolgreek":"\u03D5", - "/phook":"\u01A5", - "/phophanthai":"\u0E1E", - "/phophungthai":"\u0E1C", - "/phosamphaothai":"\u0E20", - "/pi":"\u03C0", - "/pieupacirclekorean":"\u3273", - "/pieupaparenkorean":"\u3213", - "/pieupcieuckorean":"\u3176", - "/pieupcirclekorean":"\u3265", - "/pieupkiyeokkorean":"\u3172", - "/pieupkorean":"\u3142", - "/pieupparenkorean":"\u3205", - "/pieupsioskiyeokkorean":"\u3174", - "/pieupsioskorean":"\u3144", - "/pieupsiostikeutkorean":"\u3175", - "/pieupthieuthkorean":"\u3177", - "/pieuptikeutkorean":"\u3173", - "/pihiragana":"\u3074", - "/pikatakana":"\u30D4", - "/pisymbolgreek":"\u03D6", - "/piwrarmenian":"\u0583", - "/plus":"\u002B", - "/plusbelowcmb":"\u031F", - "/pluscircle":"\u2295", - "/plusminus":"\u00B1", - "/plusmod":"\u02D6", - "/plusmonospace":"\uFF0B", - "/plussmall":"\uFE62", - "/plussuperior":"\u207A", - "/pmonospace":"\uFF50", - "/pmsquare":"\u33D8", - "/pohiragana":"\u307D", - "/pointingindexdownwhite":"\u261F", - "/pointingindexleftwhite":"\u261C", - "/pointingindexrightwhite":"\u261E", - "/pointingindexupwhite":"\u261D", - "/pokatakana":"\u30DD", - "/poplathai":"\u0E1B", - "/postalmark":"\u3012", - "/postalmarkface":"\u3020", - "/pparen":"\u24AB", - "/precedes":"\u227A", - "/prescription":"\u211E", - "/primemod":"\u02B9", - "/primereversed":"\u2035", - "/product":"\u220F", - "/projective":"\u2305", - "/prolongedkana":"\u30FC", - "/propellor":"\u2318", - "/propersubset":"\u2282", - "/propersuperset":"\u2283", - "/proportion":"\u2237", - "/proportional":"\u221D", - "/psi":"\u03C8", - "/psicyrillic":"\u0471", - "/psilipneumatacyrilliccmb":"\u0486", - "/pssquare":"\u33B0", - "/puhiragana":"\u3077", - "/pukatakana":"\u30D7", - "/pvsquare":"\u33B4", - "/pwsquare":"\u33BA", - "/q":"\u0071", - "/qadeva":"\u0958", - "/qadmahebrew":"\u05A8", - "/qafarabic":"\u0642", - "/qaffinalarabic":"\uFED6", - "/qafinitialarabic":"\uFED7", - "/qafmedialarabic":"\uFED8", - "/qamats":"\u05B8", - "/qamats10":"\u05B8", - "/qamats1a":"\u05B8", - "/qamats1c":"\u05B8", - "/qamats27":"\u05B8", - "/qamats29":"\u05B8", - "/qamats33":"\u05B8", - "/qamatsde":"\u05B8", - "/qamatshebrew":"\u05B8", - "/qamatsnarrowhebrew":"\u05B8", - "/qamatsqatanhebrew":"\u05B8", - "/qamatsqatannarrowhebrew":"\u05B8", - "/qamatsqatanquarterhebrew":"\u05B8", - "/qamatsqatanwidehebrew":"\u05B8", - "/qamatsquarterhebrew":"\u05B8", - "/qamatswidehebrew":"\u05B8", - "/qarneyparahebrew":"\u059F", - "/qbopomofo":"\u3111", - "/qcircle":"\u24E0", - "/qhook":"\u02A0", - "/qmonospace":"\uFF51", - "/qof":"\u05E7", - "/qofdagesh":"\uFB47", - "/qofdageshhebrew":"\uFB47", - "/qofhatafpatah":"\u05E7 05B2", - "/qofhatafpatahhebrew":"\u05E7 05B2", - "/qofhatafsegol":"\u05E7 05B1", - "/qofhatafsegolhebrew":"\u05E7 05B1", - "/qofhebrew":"\u05E7", - "/qofhiriq":"\u05E7 05B4", - "/qofhiriqhebrew":"\u05E7 05B4", - "/qofholam":"\u05E7 05B9", - "/qofholamhebrew":"\u05E7 05B9", - "/qofpatah":"\u05E7 05B7", - "/qofpatahhebrew":"\u05E7 05B7", - "/qofqamats":"\u05E7 05B8", - "/qofqamatshebrew":"\u05E7 05B8", - "/qofqubuts":"\u05E7 05BB", - "/qofqubutshebrew":"\u05E7 05BB", - "/qofsegol":"\u05E7 05B6", - "/qofsegolhebrew":"\u05E7 05B6", - "/qofsheva":"\u05E7 05B0", - "/qofshevahebrew":"\u05E7 05B0", - "/qoftsere":"\u05E7 05B5", - "/qoftserehebrew":"\u05E7 05B5", - "/qparen":"\u24AC", - "/quarternote":"\u2669", - "/qubuts":"\u05BB", - "/qubuts18":"\u05BB", - "/qubuts25":"\u05BB", - "/qubuts31":"\u05BB", - "/qubutshebrew":"\u05BB", - "/qubutsnarrowhebrew":"\u05BB", - "/qubutsquarterhebrew":"\u05BB", - "/qubutswidehebrew":"\u05BB", - "/question":"\u003F", - "/questionarabic":"\u061F", - "/questionarmenian":"\u055E", - "/questiondown":"\u00BF", - "/questiondownsmall":"\uF7BF", - "/questiongreek":"\u037E", - "/questionmonospace":"\uFF1F", - "/questionsmall":"\uF73F", - "/quotedbl":"\u0022", - "/quotedblbase":"\u201E", - "/quotedblleft":"\u201C", - "/quotedblmonospace":"\uFF02", - "/quotedblprime":"\u301E", - "/quotedblprimereversed":"\u301D", - "/quotedblright":"\u201D", - "/quoteleft":"\u2018", - "/quoteleftreversed":"\u201B", - "/quotereversed":"\u201B", - "/quoteright":"\u2019", - "/quoterightn":"\u0149", - "/quotesinglbase":"\u201A", - "/quotesingle":"\u0027", - "/quotesinglemonospace":"\uFF07", - "/r":"\u0072", - "/raarmenian":"\u057C", - "/rabengali":"\u09B0", - "/racute":"\u0155", - "/radeva":"\u0930", - "/radical":"\u221A", - "/radicalex":"\uF8E5", - "/radoverssquare":"\u33AE", - "/radoverssquaredsquare":"\u33AF", - "/radsquare":"\u33AD", - "/rafe":"\u05BF", - "/rafehebrew":"\u05BF", - "/ragujarati":"\u0AB0", - "/ragurmukhi":"\u0A30", - "/rahiragana":"\u3089", - "/rakatakana":"\u30E9", - "/rakatakanahalfwidth":"\uFF97", - "/ralowerdiagonalbengali":"\u09F1", - "/ramiddlediagonalbengali":"\u09F0", - "/ramshorn":"\u0264", - "/ratio":"\u2236", - "/rbopomofo":"\u3116", - "/rcaron":"\u0159", - "/rcedilla":"\u0157", - "/rcircle":"\u24E1", - "/rcommaaccent":"\u0157", - "/rdblgrave":"\u0211", - "/rdotaccent":"\u1E59", - "/rdotbelow":"\u1E5B", - "/rdotbelowmacron":"\u1E5D", - "/referencemark":"\u203B", - "/reflexsubset":"\u2286", - "/reflexsuperset":"\u2287", - "/registered":"\u00AE", - "/registersans":"\uF8E8", - "/registerserif":"\uF6DA", - "/reharabic":"\u0631", - "/reharmenian":"\u0580", - "/rehfinalarabic":"\uFEAE", - "/rehiragana":"\u308C", - "/rehyehaleflamarabic":"\u0631 FEF3 FE8E 0644", - "/rekatakana":"\u30EC", - "/rekatakanahalfwidth":"\uFF9A", - "/resh":"\u05E8", - "/reshdageshhebrew":"\uFB48", - "/reshhatafpatah":"\u05E8 05B2", - "/reshhatafpatahhebrew":"\u05E8 05B2", - "/reshhatafsegol":"\u05E8 05B1", - "/reshhatafsegolhebrew":"\u05E8 05B1", - "/reshhebrew":"\u05E8", - "/reshhiriq":"\u05E8 05B4", - "/reshhiriqhebrew":"\u05E8 05B4", - "/reshholam":"\u05E8 05B9", - "/reshholamhebrew":"\u05E8 05B9", - "/reshpatah":"\u05E8 05B7", - "/reshpatahhebrew":"\u05E8 05B7", - "/reshqamats":"\u05E8 05B8", - "/reshqamatshebrew":"\u05E8 05B8", - "/reshqubuts":"\u05E8 05BB", - "/reshqubutshebrew":"\u05E8 05BB", - "/reshsegol":"\u05E8 05B6", - "/reshsegolhebrew":"\u05E8 05B6", - "/reshsheva":"\u05E8 05B0", - "/reshshevahebrew":"\u05E8 05B0", - "/reshtsere":"\u05E8 05B5", - "/reshtserehebrew":"\u05E8 05B5", - "/reversedtilde":"\u223D", - "/reviahebrew":"\u0597", - "/reviamugrashhebrew":"\u0597", - "/revlogicalnot":"\u2310", - "/rfishhook":"\u027E", - "/rfishhookreversed":"\u027F", - "/rhabengali":"\u09DD", - "/rhadeva":"\u095D", - "/rho":"\u03C1", - "/rhook":"\u027D", - "/rhookturned":"\u027B", - "/rhookturnedsuperior":"\u02B5", - "/rhosymbolgreek":"\u03F1", - "/rhotichookmod":"\u02DE", - "/rieulacirclekorean":"\u3271", - "/rieulaparenkorean":"\u3211", - "/rieulcirclekorean":"\u3263", - "/rieulhieuhkorean":"\u3140", - "/rieulkiyeokkorean":"\u313A", - "/rieulkiyeoksioskorean":"\u3169", - "/rieulkorean":"\u3139", - "/rieulmieumkorean":"\u313B", - "/rieulpansioskorean":"\u316C", - "/rieulparenkorean":"\u3203", - "/rieulphieuphkorean":"\u313F", - "/rieulpieupkorean":"\u313C", - "/rieulpieupsioskorean":"\u316B", - "/rieulsioskorean":"\u313D", - "/rieulthieuthkorean":"\u313E", - "/rieultikeutkorean":"\u316A", - "/rieulyeorinhieuhkorean":"\u316D", - "/rightangle":"\u221F", - "/righttackbelowcmb":"\u0319", - "/righttriangle":"\u22BF", - "/rihiragana":"\u308A", - "/rikatakana":"\u30EA", - "/rikatakanahalfwidth":"\uFF98", - "/ring":"\u02DA", - "/ringbelowcmb":"\u0325", - "/ringcmb":"\u030A", - "/ringhalfleft":"\u02BF", - "/ringhalfleftarmenian":"\u0559", - "/ringhalfleftbelowcmb":"\u031C", - "/ringhalfleftcentered":"\u02D3", - "/ringhalfright":"\u02BE", - "/ringhalfrightbelowcmb":"\u0339", - "/ringhalfrightcentered":"\u02D2", - "/rinvertedbreve":"\u0213", - "/rittorusquare":"\u3351", - "/rlinebelow":"\u1E5F", - "/rlongleg":"\u027C", - "/rlonglegturned":"\u027A", - "/rmonospace":"\uFF52", - "/rohiragana":"\u308D", - "/rokatakana":"\u30ED", - "/rokatakanahalfwidth":"\uFF9B", - "/roruathai":"\u0E23", - "/rparen":"\u24AD", - "/rrabengali":"\u09DC", - "/rradeva":"\u0931", - "/rragurmukhi":"\u0A5C", - "/rreharabic":"\u0691", - "/rrehfinalarabic":"\uFB8D", - "/rrvocalicbengali":"\u09E0", - "/rrvocalicdeva":"\u0960", - "/rrvocalicgujarati":"\u0AE0", - "/rrvocalicvowelsignbengali":"\u09C4", - "/rrvocalicvowelsigndeva":"\u0944", - "/rrvocalicvowelsigngujarati":"\u0AC4", - "/rsuperior":"\uF6F1", - "/rtblock":"\u2590", - "/rturned":"\u0279", - "/rturnedsuperior":"\u02B4", - "/ruhiragana":"\u308B", - "/rukatakana":"\u30EB", - "/rukatakanahalfwidth":"\uFF99", - "/rupeemarkbengali":"\u09F2", - "/rupeesignbengali":"\u09F3", - "/rupiah":"\uF6DD", - "/ruthai":"\u0E24", - "/rvocalicbengali":"\u098B", - "/rvocalicdeva":"\u090B", - "/rvocalicgujarati":"\u0A8B", - "/rvocalicvowelsignbengali":"\u09C3", - "/rvocalicvowelsigndeva":"\u0943", - "/rvocalicvowelsigngujarati":"\u0AC3", - "/s":"\u0073", - "/sabengali":"\u09B8", - "/sacute":"\u015B", - "/sacutedotaccent":"\u1E65", - "/sadarabic":"\u0635", - "/sadeva":"\u0938", - "/sadfinalarabic":"\uFEBA", - "/sadinitialarabic":"\uFEBB", - "/sadmedialarabic":"\uFEBC", - "/sagujarati":"\u0AB8", - "/sagurmukhi":"\u0A38", - "/sahiragana":"\u3055", - "/sakatakana":"\u30B5", - "/sakatakanahalfwidth":"\uFF7B", - "/sallallahoualayhewasallamarabic":"\uFDFA", - "/samekh":"\u05E1", - "/samekhdagesh":"\uFB41", - "/samekhdageshhebrew":"\uFB41", - "/samekhhebrew":"\u05E1", - "/saraaathai":"\u0E32", - "/saraaethai":"\u0E41", - "/saraaimaimalaithai":"\u0E44", - "/saraaimaimuanthai":"\u0E43", - "/saraamthai":"\u0E33", - "/saraathai":"\u0E30", - "/saraethai":"\u0E40", - "/saraiileftthai":"\uF886", - "/saraiithai":"\u0E35", - "/saraileftthai":"\uF885", - "/saraithai":"\u0E34", - "/saraothai":"\u0E42", - "/saraueeleftthai":"\uF888", - "/saraueethai":"\u0E37", - "/saraueleftthai":"\uF887", - "/sarauethai":"\u0E36", - "/sarauthai":"\u0E38", - "/sarauuthai":"\u0E39", - "/sbopomofo":"\u3119", - "/scaron":"\u0161", - "/scarondotaccent":"\u1E67", - "/scedilla":"\u015F", - "/schwa":"\u0259", - "/schwacyrillic":"\u04D9", - "/schwadieresiscyrillic":"\u04DB", - "/schwahook":"\u025A", - "/scircle":"\u24E2", - "/scircumflex":"\u015D", - "/scommaaccent":"\u0219", - "/sdotaccent":"\u1E61", - "/sdotbelow":"\u1E63", - "/sdotbelowdotaccent":"\u1E69", - "/seagullbelowcmb":"\u033C", - "/second":"\u2033", - "/secondtonechinese":"\u02CA", - "/section":"\u00A7", - "/seenarabic":"\u0633", - "/seenfinalarabic":"\uFEB2", - "/seeninitialarabic":"\uFEB3", - "/seenmedialarabic":"\uFEB4", - "/segol":"\u05B6", - "/segol13":"\u05B6", - "/segol1f":"\u05B6", - "/segol2c":"\u05B6", - "/segolhebrew":"\u05B6", - "/segolnarrowhebrew":"\u05B6", - "/segolquarterhebrew":"\u05B6", - "/segoltahebrew":"\u0592", - "/segolwidehebrew":"\u05B6", - "/seharmenian":"\u057D", - "/sehiragana":"\u305B", - "/sekatakana":"\u30BB", - "/sekatakanahalfwidth":"\uFF7E", - "/semicolon":"\u003B", - "/semicolonarabic":"\u061B", - "/semicolonmonospace":"\uFF1B", - "/semicolonsmall":"\uFE54", - "/semivoicedmarkkana":"\u309C", - "/semivoicedmarkkanahalfwidth":"\uFF9F", - "/sentisquare":"\u3322", - "/sentosquare":"\u3323", - "/seven":"\u0037", - "/sevenarabic":"\u0667", - "/sevenbengali":"\u09ED", - "/sevencircle":"\u2466", - "/sevencircleinversesansserif":"\u2790", - "/sevendeva":"\u096D", - "/seveneighths":"\u215E", - "/sevengujarati":"\u0AED", - "/sevengurmukhi":"\u0A6D", - "/sevenhackarabic":"\u0667", - "/sevenhangzhou":"\u3027", - "/sevenideographicparen":"\u3226", - "/seveninferior":"\u2087", - "/sevenmonospace":"\uFF17", - "/sevenoldstyle":"\uF737", - "/sevenparen":"\u247A", - "/sevenperiod":"\u248E", - "/sevenpersian":"\u06F7", - "/sevenroman":"\u2176", - "/sevensuperior":"\u2077", - "/seventeencircle":"\u2470", - "/seventeenparen":"\u2484", - "/seventeenperiod":"\u2498", - "/seventhai":"\u0E57", - "/sfthyphen":"\u00AD", - "/shaarmenian":"\u0577", - "/shabengali":"\u09B6", - "/shacyrillic":"\u0448", - "/shaddaarabic":"\u0651", - "/shaddadammaarabic":"\uFC61", - "/shaddadammatanarabic":"\uFC5E", - "/shaddafathaarabic":"\uFC60", - "/shaddafathatanarabic":"\u0651 064B", - "/shaddakasraarabic":"\uFC62", - "/shaddakasratanarabic":"\uFC5F", - "/shade":"\u2592", - "/shadedark":"\u2593", - "/shadelight":"\u2591", - "/shademedium":"\u2592", - "/shadeva":"\u0936", - "/shagujarati":"\u0AB6", - "/shagurmukhi":"\u0A36", - "/shalshelethebrew":"\u0593", - "/shbopomofo":"\u3115", - "/shchacyrillic":"\u0449", - "/sheenarabic":"\u0634", - "/sheenfinalarabic":"\uFEB6", - "/sheeninitialarabic":"\uFEB7", - "/sheenmedialarabic":"\uFEB8", - "/sheicoptic":"\u03E3", - "/sheqel":"\u20AA", - "/sheqelhebrew":"\u20AA", - "/sheva":"\u05B0", - "/sheva115":"\u05B0", - "/sheva15":"\u05B0", - "/sheva22":"\u05B0", - "/sheva2e":"\u05B0", - "/shevahebrew":"\u05B0", - "/shevanarrowhebrew":"\u05B0", - "/shevaquarterhebrew":"\u05B0", - "/shevawidehebrew":"\u05B0", - "/shhacyrillic":"\u04BB", - "/shimacoptic":"\u03ED", - "/shin":"\u05E9", - "/shindagesh":"\uFB49", - "/shindageshhebrew":"\uFB49", - "/shindageshshindot":"\uFB2C", - "/shindageshshindothebrew":"\uFB2C", - "/shindageshsindot":"\uFB2D", - "/shindageshsindothebrew":"\uFB2D", - "/shindothebrew":"\u05C1", - "/shinhebrew":"\u05E9", - "/shinshindot":"\uFB2A", - "/shinshindothebrew":"\uFB2A", - "/shinsindot":"\uFB2B", - "/shinsindothebrew":"\uFB2B", - "/shook":"\u0282", - "/sigma":"\u03C3", - "/sigma1":"\u03C2", - "/sigmafinal":"\u03C2", - "/sigmalunatesymbolgreek":"\u03F2", - "/sihiragana":"\u3057", - "/sikatakana":"\u30B7", - "/sikatakanahalfwidth":"\uFF7C", - "/siluqhebrew":"\u05BD", - "/siluqlefthebrew":"\u05BD", - "/similar":"\u223C", - "/sindothebrew":"\u05C2", - "/siosacirclekorean":"\u3274", - "/siosaparenkorean":"\u3214", - "/sioscieuckorean":"\u317E", - "/sioscirclekorean":"\u3266", - "/sioskiyeokkorean":"\u317A", - "/sioskorean":"\u3145", - "/siosnieunkorean":"\u317B", - "/siosparenkorean":"\u3206", - "/siospieupkorean":"\u317D", - "/siostikeutkorean":"\u317C", - "/six":"\u0036", - "/sixarabic":"\u0666", - "/sixbengali":"\u09EC", - "/sixcircle":"\u2465", - "/sixcircleinversesansserif":"\u278F", - "/sixdeva":"\u096C", - "/sixgujarati":"\u0AEC", - "/sixgurmukhi":"\u0A6C", - "/sixhackarabic":"\u0666", - "/sixhangzhou":"\u3026", - "/sixideographicparen":"\u3225", - "/sixinferior":"\u2086", - "/sixmonospace":"\uFF16", - "/sixoldstyle":"\uF736", - "/sixparen":"\u2479", - "/sixperiod":"\u248D", - "/sixpersian":"\u06F6", - "/sixroman":"\u2175", - "/sixsuperior":"\u2076", - "/sixteencircle":"\u246F", - "/sixteencurrencydenominatorbengali":"\u09F9", - "/sixteenparen":"\u2483", - "/sixteenperiod":"\u2497", - "/sixthai":"\u0E56", - "/slash":"\u002F", - "/slashmonospace":"\uFF0F", - "/slong":"\u017F", - "/slongdotaccent":"\u1E9B", - "/smileface":"\u263A", - "/smonospace":"\uFF53", - "/sofpasuqhebrew":"\u05C3", - "/softhyphen":"\u00AD", - "/softsigncyrillic":"\u044C", - "/sohiragana":"\u305D", - "/sokatakana":"\u30BD", - "/sokatakanahalfwidth":"\uFF7F", - "/soliduslongoverlaycmb":"\u0338", - "/solidusshortoverlaycmb":"\u0337", - "/sorusithai":"\u0E29", - "/sosalathai":"\u0E28", - "/sosothai":"\u0E0B", - "/sosuathai":"\u0E2A", - "/space":"\u0020", - "/spacehackarabic":"\u0020", - "/spade":"\u2660", - "/spadesuitblack":"\u2660", - "/spadesuitwhite":"\u2664", - "/sparen":"\u24AE", - "/squarebelowcmb":"\u033B", - "/squarecc":"\u33C4", - "/squarecm":"\u339D", - "/squarediagonalcrosshatchfill":"\u25A9", - "/squarehorizontalfill":"\u25A4", - "/squarekg":"\u338F", - "/squarekm":"\u339E", - "/squarekmcapital":"\u33CE", - "/squareln":"\u33D1", - "/squarelog":"\u33D2", - "/squaremg":"\u338E", - "/squaremil":"\u33D5", - "/squaremm":"\u339C", - "/squaremsquared":"\u33A1", - "/squareorthogonalcrosshatchfill":"\u25A6", - "/squareupperlefttolowerrightfill":"\u25A7", - "/squareupperrighttolowerleftfill":"\u25A8", - "/squareverticalfill":"\u25A5", - "/squarewhitewithsmallblack":"\u25A3", - "/srsquare":"\u33DB", - "/ssabengali":"\u09B7", - "/ssadeva":"\u0937", - "/ssagujarati":"\u0AB7", - "/ssangcieuckorean":"\u3149", - "/ssanghieuhkorean":"\u3185", - "/ssangieungkorean":"\u3180", - "/ssangkiyeokkorean":"\u3132", - "/ssangnieunkorean":"\u3165", - "/ssangpieupkorean":"\u3143", - "/ssangsioskorean":"\u3146", - "/ssangtikeutkorean":"\u3138", - "/ssuperior":"\uF6F2", - "/sterling":"\u00A3", - "/sterlingmonospace":"\uFFE1", - "/strokelongoverlaycmb":"\u0336", - "/strokeshortoverlaycmb":"\u0335", - "/subset":"\u2282", - "/subsetnotequal":"\u228A", - "/subsetorequal":"\u2286", - "/succeeds":"\u227B", - "/suchthat":"\u220B", - "/suhiragana":"\u3059", - "/sukatakana":"\u30B9", - "/sukatakanahalfwidth":"\uFF7D", - "/sukunarabic":"\u0652", - "/summation":"\u2211", - "/sun":"\u263C", - "/superset":"\u2283", - "/supersetnotequal":"\u228B", - "/supersetorequal":"\u2287", - "/svsquare":"\u33DC", - "/syouwaerasquare":"\u337C", - "/t":"\u0074", - "/tabengali":"\u09A4", - "/tackdown":"\u22A4", - "/tackleft":"\u22A3", - "/tadeva":"\u0924", - "/tagujarati":"\u0AA4", - "/tagurmukhi":"\u0A24", - "/taharabic":"\u0637", - "/tahfinalarabic":"\uFEC2", - "/tahinitialarabic":"\uFEC3", - "/tahiragana":"\u305F", - "/tahmedialarabic":"\uFEC4", - "/taisyouerasquare":"\u337D", - "/takatakana":"\u30BF", - "/takatakanahalfwidth":"\uFF80", - "/tatweelarabic":"\u0640", - "/tau":"\u03C4", - "/tav":"\u05EA", - "/tavdages":"\uFB4A", - "/tavdagesh":"\uFB4A", - "/tavdageshhebrew":"\uFB4A", - "/tavhebrew":"\u05EA", - "/tbar":"\u0167", - "/tbopomofo":"\u310A", - "/tcaron":"\u0165", - "/tccurl":"\u02A8", - "/tcedilla":"\u0163", - "/tcheharabic":"\u0686", - "/tchehfinalarabic":"\uFB7B", - "/tchehinitialarabic":"\uFB7C", - "/tchehmedialarabic":"\uFB7D", - "/tchehmeeminitialarabic":"\uFB7C FEE4", - "/tcircle":"\u24E3", - "/tcircumflexbelow":"\u1E71", - "/tcommaaccent":"\u0163", - "/tdieresis":"\u1E97", - "/tdotaccent":"\u1E6B", - "/tdotbelow":"\u1E6D", - "/tecyrillic":"\u0442", - "/tedescendercyrillic":"\u04AD", - "/teharabic":"\u062A", - "/tehfinalarabic":"\uFE96", - "/tehhahinitialarabic":"\uFCA2", - "/tehhahisolatedarabic":"\uFC0C", - "/tehinitialarabic":"\uFE97", - "/tehiragana":"\u3066", - "/tehjeeminitialarabic":"\uFCA1", - "/tehjeemisolatedarabic":"\uFC0B", - "/tehmarbutaarabic":"\u0629", - "/tehmarbutafinalarabic":"\uFE94", - "/tehmedialarabic":"\uFE98", - "/tehmeeminitialarabic":"\uFCA4", - "/tehmeemisolatedarabic":"\uFC0E", - "/tehnoonfinalarabic":"\uFC73", - "/tekatakana":"\u30C6", - "/tekatakanahalfwidth":"\uFF83", - "/telephone":"\u2121", - "/telephoneblack":"\u260E", - "/telishagedolahebrew":"\u05A0", - "/telishaqetanahebrew":"\u05A9", - "/tencircle":"\u2469", - "/tenideographicparen":"\u3229", - "/tenparen":"\u247D", - "/tenperiod":"\u2491", - "/tenroman":"\u2179", - "/tesh":"\u02A7", - "/tet":"\u05D8", - "/tetdagesh":"\uFB38", - "/tetdageshhebrew":"\uFB38", - "/tethebrew":"\u05D8", - "/tetsecyrillic":"\u04B5", - "/tevirhebrew":"\u059B", - "/tevirlefthebrew":"\u059B", - "/thabengali":"\u09A5", - "/thadeva":"\u0925", - "/thagujarati":"\u0AA5", - "/thagurmukhi":"\u0A25", - "/thalarabic":"\u0630", - "/thalfinalarabic":"\uFEAC", - "/thanthakhatlowleftthai":"\uF898", - "/thanthakhatlowrightthai":"\uF897", - "/thanthakhatthai":"\u0E4C", - "/thanthakhatupperleftthai":"\uF896", - "/theharabic":"\u062B", - "/thehfinalarabic":"\uFE9A", - "/thehinitialarabic":"\uFE9B", - "/thehmedialarabic":"\uFE9C", - "/thereexists":"\u2203", - "/therefore":"\u2234", - "/theta":"\u03B8", - "/theta1":"\u03D1", - "/thetasymbolgreek":"\u03D1", - "/thieuthacirclekorean":"\u3279", - "/thieuthaparenkorean":"\u3219", - "/thieuthcirclekorean":"\u326B", - "/thieuthkorean":"\u314C", - "/thieuthparenkorean":"\u320B", - "/thirteencircle":"\u246C", - "/thirteenparen":"\u2480", - "/thirteenperiod":"\u2494", - "/thonangmonthothai":"\u0E11", - "/thook":"\u01AD", - "/thophuthaothai":"\u0E12", - "/thorn":"\u00FE", - "/thothahanthai":"\u0E17", - "/thothanthai":"\u0E10", - "/thothongthai":"\u0E18", - "/thothungthai":"\u0E16", - "/thousandcyrillic":"\u0482", - "/thousandsseparatorarabic":"\u066C", - "/thousandsseparatorpersian":"\u066C", - "/three":"\u0033", - "/threearabic":"\u0663", - "/threebengali":"\u09E9", - "/threecircle":"\u2462", - "/threecircleinversesansserif":"\u278C", - "/threedeva":"\u0969", - "/threeeighths":"\u215C", - "/threegujarati":"\u0AE9", - "/threegurmukhi":"\u0A69", - "/threehackarabic":"\u0663", - "/threehangzhou":"\u3023", - "/threeideographicparen":"\u3222", - "/threeinferior":"\u2083", - "/threemonospace":"\uFF13", - "/threenumeratorbengali":"\u09F6", - "/threeoldstyle":"\uF733", - "/threeparen":"\u2476", - "/threeperiod":"\u248A", - "/threepersian":"\u06F3", - "/threequarters":"\u00BE", - "/threequartersemdash":"\uF6DE", - "/threeroman":"\u2172", - "/threesuperior":"\u00B3", - "/threethai":"\u0E53", - "/thzsquare":"\u3394", - "/tihiragana":"\u3061", - "/tikatakana":"\u30C1", - "/tikatakanahalfwidth":"\uFF81", - "/tikeutacirclekorean":"\u3270", - "/tikeutaparenkorean":"\u3210", - "/tikeutcirclekorean":"\u3262", - "/tikeutkorean":"\u3137", - "/tikeutparenkorean":"\u3202", - "/tilde":"\u02DC", - "/tildebelowcmb":"\u0330", - "/tildecmb":"\u0303", - "/tildecomb":"\u0303", - "/tildedoublecmb":"\u0360", - "/tildeoperator":"\u223C", - "/tildeoverlaycmb":"\u0334", - "/tildeverticalcmb":"\u033E", - "/timescircle":"\u2297", - "/tipehahebrew":"\u0596", - "/tipehalefthebrew":"\u0596", - "/tippigurmukhi":"\u0A70", - "/titlocyrilliccmb":"\u0483", - "/tiwnarmenian":"\u057F", - "/tlinebelow":"\u1E6F", - "/tmonospace":"\uFF54", - "/toarmenian":"\u0569", - "/tohiragana":"\u3068", - "/tokatakana":"\u30C8", - "/tokatakanahalfwidth":"\uFF84", - "/tonebarextrahighmod":"\u02E5", - "/tonebarextralowmod":"\u02E9", - "/tonebarhighmod":"\u02E6", - "/tonebarlowmod":"\u02E8", - "/tonebarmidmod":"\u02E7", - "/tonefive":"\u01BD", - "/tonesix":"\u0185", - "/tonetwo":"\u01A8", - "/tonos":"\u0384", - "/tonsquare":"\u3327", - "/topatakthai":"\u0E0F", - "/tortoiseshellbracketleft":"\u3014", - "/tortoiseshellbracketleftsmall":"\uFE5D", - "/tortoiseshellbracketleftvertical":"\uFE39", - "/tortoiseshellbracketright":"\u3015", - "/tortoiseshellbracketrightsmall":"\uFE5E", - "/tortoiseshellbracketrightvertical":"\uFE3A", - "/totaothai":"\u0E15", - "/tpalatalhook":"\u01AB", - "/tparen":"\u24AF", - "/trademark":"\u2122", - "/trademarksans":"\uF8EA", - "/trademarkserif":"\uF6DB", - "/tretroflexhook":"\u0288", - "/triagdn":"\u25BC", - "/triaglf":"\u25C4", - "/triagrt":"\u25BA", - "/triagup":"\u25B2", - "/ts":"\u02A6", - "/tsadi":"\u05E6", - "/tsadidagesh":"\uFB46", - "/tsadidageshhebrew":"\uFB46", - "/tsadihebrew":"\u05E6", - "/tsecyrillic":"\u0446", - "/tsere":"\u05B5", - "/tsere12":"\u05B5", - "/tsere1e":"\u05B5", - "/tsere2b":"\u05B5", - "/tserehebrew":"\u05B5", - "/tserenarrowhebrew":"\u05B5", - "/tserequarterhebrew":"\u05B5", - "/tserewidehebrew":"\u05B5", - "/tshecyrillic":"\u045B", - "/tsuperior":"\uF6F3", - "/ttabengali":"\u099F", - "/ttadeva":"\u091F", - "/ttagujarati":"\u0A9F", - "/ttagurmukhi":"\u0A1F", - "/tteharabic":"\u0679", - "/ttehfinalarabic":"\uFB67", - "/ttehinitialarabic":"\uFB68", - "/ttehmedialarabic":"\uFB69", - "/tthabengali":"\u09A0", - "/tthadeva":"\u0920", - "/tthagujarati":"\u0AA0", - "/tthagurmukhi":"\u0A20", - "/tturned":"\u0287", - "/tuhiragana":"\u3064", - "/tukatakana":"\u30C4", - "/tukatakanahalfwidth":"\uFF82", - "/tusmallhiragana":"\u3063", - "/tusmallkatakana":"\u30C3", - "/tusmallkatakanahalfwidth":"\uFF6F", - "/twelvecircle":"\u246B", - "/twelveparen":"\u247F", - "/twelveperiod":"\u2493", - "/twelveroman":"\u217B", - "/twentycircle":"\u2473", - "/twentyhangzhou":"\u5344", - "/twentyparen":"\u2487", - "/twentyperiod":"\u249B", - "/two":"\u0032", - "/twoarabic":"\u0662", - "/twobengali":"\u09E8", - "/twocircle":"\u2461", - "/twocircleinversesansserif":"\u278B", - "/twodeva":"\u0968", - "/twodotenleader":"\u2025", - "/twodotleader":"\u2025", - "/twodotleadervertical":"\uFE30", - "/twogujarati":"\u0AE8", - "/twogurmukhi":"\u0A68", - "/twohackarabic":"\u0662", - "/twohangzhou":"\u3022", - "/twoideographicparen":"\u3221", - "/twoinferior":"\u2082", - "/twomonospace":"\uFF12", - "/twonumeratorbengali":"\u09F5", - "/twooldstyle":"\uF732", - "/twoparen":"\u2475", - "/twoperiod":"\u2489", - "/twopersian":"\u06F2", - "/tworoman":"\u2171", - "/twostroke":"\u01BB", - "/twosuperior":"\u00B2", - "/twothai":"\u0E52", - "/twothirds":"\u2154", - "/u":"\u0075", - "/uacute":"\u00FA", - "/ubar":"\u0289", - "/ubengali":"\u0989", - "/ubopomofo":"\u3128", - "/ubreve":"\u016D", - "/ucaron":"\u01D4", - "/ucircle":"\u24E4", - "/ucircumflex":"\u00FB", - "/ucircumflexbelow":"\u1E77", - "/ucyrillic":"\u0443", - "/udattadeva":"\u0951", - "/udblacute":"\u0171", - "/udblgrave":"\u0215", - "/udeva":"\u0909", - "/udieresis":"\u00FC", - "/udieresisacute":"\u01D8", - "/udieresisbelow":"\u1E73", - "/udieresiscaron":"\u01DA", - "/udieresiscyrillic":"\u04F1", - "/udieresisgrave":"\u01DC", - "/udieresismacron":"\u01D6", - "/udotbelow":"\u1EE5", - "/ugrave":"\u00F9", - "/ugujarati":"\u0A89", - "/ugurmukhi":"\u0A09", - "/uhiragana":"\u3046", - "/uhookabove":"\u1EE7", - "/uhorn":"\u01B0", - "/uhornacute":"\u1EE9", - "/uhorndotbelow":"\u1EF1", - "/uhorngrave":"\u1EEB", - "/uhornhookabove":"\u1EED", - "/uhorntilde":"\u1EEF", - "/uhungarumlaut":"\u0171", - "/uhungarumlautcyrillic":"\u04F3", - "/uinvertedbreve":"\u0217", - "/ukatakana":"\u30A6", - "/ukatakanahalfwidth":"\uFF73", - "/ukcyrillic":"\u0479", - "/ukorean":"\u315C", - "/umacron":"\u016B", - "/umacroncyrillic":"\u04EF", - "/umacrondieresis":"\u1E7B", - "/umatragurmukhi":"\u0A41", - "/umonospace":"\uFF55", - "/underscore":"\u005F", - "/underscoredbl":"\u2017", - "/underscoremonospace":"\uFF3F", - "/underscorevertical":"\uFE33", - "/underscorewavy":"\uFE4F", - "/union":"\u222A", - "/universal":"\u2200", - "/uogonek":"\u0173", - "/uparen":"\u24B0", - "/upblock":"\u2580", - "/upperdothebrew":"\u05C4", - "/upsilon":"\u03C5", - "/upsilondieresis":"\u03CB", - "/upsilondieresistonos":"\u03B0", - "/upsilonlatin":"\u028A", - "/upsilontonos":"\u03CD", - "/uptackbelowcmb":"\u031D", - "/uptackmod":"\u02D4", - "/uragurmukhi":"\u0A73", - "/uring":"\u016F", - "/ushortcyrillic":"\u045E", - "/usmallhiragana":"\u3045", - "/usmallkatakana":"\u30A5", - "/usmallkatakanahalfwidth":"\uFF69", - "/ustraightcyrillic":"\u04AF", - "/ustraightstrokecyrillic":"\u04B1", - "/utilde":"\u0169", - "/utildeacute":"\u1E79", - "/utildebelow":"\u1E75", - "/uubengali":"\u098A", - "/uudeva":"\u090A", - "/uugujarati":"\u0A8A", - "/uugurmukhi":"\u0A0A", - "/uumatragurmukhi":"\u0A42", - "/uuvowelsignbengali":"\u09C2", - "/uuvowelsigndeva":"\u0942", - "/uuvowelsigngujarati":"\u0AC2", - "/uvowelsignbengali":"\u09C1", - "/uvowelsigndeva":"\u0941", - "/uvowelsigngujarati":"\u0AC1", - "/v":"\u0076", - "/vadeva":"\u0935", - "/vagujarati":"\u0AB5", - "/vagurmukhi":"\u0A35", - "/vakatakana":"\u30F7", - "/vav":"\u05D5", - "/vavdagesh":"\uFB35", - "/vavdagesh65":"\uFB35", - "/vavdageshhebrew":"\uFB35", - "/vavhebrew":"\u05D5", - "/vavholam":"\uFB4B", - "/vavholamhebrew":"\uFB4B", - "/vavvavhebrew":"\u05F0", - "/vavyodhebrew":"\u05F1", - "/vcircle":"\u24E5", - "/vdotbelow":"\u1E7F", - "/vecyrillic":"\u0432", - "/veharabic":"\u06A4", - "/vehfinalarabic":"\uFB6B", - "/vehinitialarabic":"\uFB6C", - "/vehmedialarabic":"\uFB6D", - "/vekatakana":"\u30F9", - "/venus":"\u2640", - "/verticalbar":"\u007C", - "/verticallineabovecmb":"\u030D", - "/verticallinebelowcmb":"\u0329", - "/verticallinelowmod":"\u02CC", - "/verticallinemod":"\u02C8", - "/vewarmenian":"\u057E", - "/vhook":"\u028B", - "/vikatakana":"\u30F8", - "/viramabengali":"\u09CD", - "/viramadeva":"\u094D", - "/viramagujarati":"\u0ACD", - "/visargabengali":"\u0983", - "/visargadeva":"\u0903", - "/visargagujarati":"\u0A83", - "/vmonospace":"\uFF56", - "/voarmenian":"\u0578", - "/voicediterationhiragana":"\u309E", - "/voicediterationkatakana":"\u30FE", - "/voicedmarkkana":"\u309B", - "/voicedmarkkanahalfwidth":"\uFF9E", - "/vokatakana":"\u30FA", - "/vparen":"\u24B1", - "/vtilde":"\u1E7D", - "/vturned":"\u028C", - "/vuhiragana":"\u3094", - "/vukatakana":"\u30F4", - "/w":"\u0077", - "/wacute":"\u1E83", - "/waekorean":"\u3159", - "/wahiragana":"\u308F", - "/wakatakana":"\u30EF", - "/wakatakanahalfwidth":"\uFF9C", - "/wakorean":"\u3158", - "/wasmallhiragana":"\u308E", - "/wasmallkatakana":"\u30EE", - "/wattosquare":"\u3357", - "/wavedash":"\u301C", - "/wavyunderscorevertical":"\uFE34", - "/wawarabic":"\u0648", - "/wawfinalarabic":"\uFEEE", - "/wawhamzaabovearabic":"\u0624", - "/wawhamzaabovefinalarabic":"\uFE86", - "/wbsquare":"\u33DD", - "/wcircle":"\u24E6", - "/wcircumflex":"\u0175", - "/wdieresis":"\u1E85", - "/wdotaccent":"\u1E87", - "/wdotbelow":"\u1E89", - "/wehiragana":"\u3091", - "/weierstrass":"\u2118", - "/wekatakana":"\u30F1", - "/wekorean":"\u315E", - "/weokorean":"\u315D", - "/wgrave":"\u1E81", - "/whitebullet":"\u25E6", - "/whitecircle":"\u25CB", - "/whitecircleinverse":"\u25D9", - "/whitecornerbracketleft":"\u300E", - "/whitecornerbracketleftvertical":"\uFE43", - "/whitecornerbracketright":"\u300F", - "/whitecornerbracketrightvertical":"\uFE44", - "/whitediamond":"\u25C7", - "/whitediamondcontainingblacksmalldiamond":"\u25C8", - "/whitedownpointingsmalltriangle":"\u25BF", - "/whitedownpointingtriangle":"\u25BD", - "/whiteleftpointingsmalltriangle":"\u25C3", - "/whiteleftpointingtriangle":"\u25C1", - "/whitelenticularbracketleft":"\u3016", - "/whitelenticularbracketright":"\u3017", - "/whiterightpointingsmalltriangle":"\u25B9", - "/whiterightpointingtriangle":"\u25B7", - "/whitesmallsquare":"\u25AB", - "/whitesmilingface":"\u263A", - "/whitesquare":"\u25A1", - "/whitestar":"\u2606", - "/whitetelephone":"\u260F", - "/whitetortoiseshellbracketleft":"\u3018", - "/whitetortoiseshellbracketright":"\u3019", - "/whiteuppointingsmalltriangle":"\u25B5", - "/whiteuppointingtriangle":"\u25B3", - "/wihiragana":"\u3090", - "/wikatakana":"\u30F0", - "/wikorean":"\u315F", - "/wmonospace":"\uFF57", - "/wohiragana":"\u3092", - "/wokatakana":"\u30F2", - "/wokatakanahalfwidth":"\uFF66", - "/won":"\u20A9", - "/wonmonospace":"\uFFE6", - "/wowaenthai":"\u0E27", - "/wparen":"\u24B2", - "/wring":"\u1E98", - "/wsuperior":"\u02B7", - "/wturned":"\u028D", - "/wynn":"\u01BF", - "/x":"\u0078", - "/xabovecmb":"\u033D", - "/xbopomofo":"\u3112", - "/xcircle":"\u24E7", - "/xdieresis":"\u1E8D", - "/xdotaccent":"\u1E8B", - "/xeharmenian":"\u056D", - "/xi":"\u03BE", - "/xmonospace":"\uFF58", - "/xparen":"\u24B3", - "/xsuperior":"\u02E3", - "/y":"\u0079", - "/yaadosquare":"\u334E", - "/yabengali":"\u09AF", - "/yacute":"\u00FD", - "/yadeva":"\u092F", - "/yaekorean":"\u3152", - "/yagujarati":"\u0AAF", - "/yagurmukhi":"\u0A2F", - "/yahiragana":"\u3084", - "/yakatakana":"\u30E4", - "/yakatakanahalfwidth":"\uFF94", - "/yakorean":"\u3151", - "/yamakkanthai":"\u0E4E", - "/yasmallhiragana":"\u3083", - "/yasmallkatakana":"\u30E3", - "/yasmallkatakanahalfwidth":"\uFF6C", - "/yatcyrillic":"\u0463", - "/ycircle":"\u24E8", - "/ycircumflex":"\u0177", - "/ydieresis":"\u00FF", - "/ydotaccent":"\u1E8F", - "/ydotbelow":"\u1EF5", - "/yeharabic":"\u064A", - "/yehbarreearabic":"\u06D2", - "/yehbarreefinalarabic":"\uFBAF", - "/yehfinalarabic":"\uFEF2", - "/yehhamzaabovearabic":"\u0626", - "/yehhamzaabovefinalarabic":"\uFE8A", - "/yehhamzaaboveinitialarabic":"\uFE8B", - "/yehhamzaabovemedialarabic":"\uFE8C", - "/yehinitialarabic":"\uFEF3", - "/yehmedialarabic":"\uFEF4", - "/yehmeeminitialarabic":"\uFCDD", - "/yehmeemisolatedarabic":"\uFC58", - "/yehnoonfinalarabic":"\uFC94", - "/yehthreedotsbelowarabic":"\u06D1", - "/yekorean":"\u3156", - "/yen":"\u00A5", - "/yenmonospace":"\uFFE5", - "/yeokorean":"\u3155", - "/yeorinhieuhkorean":"\u3186", - "/yerahbenyomohebrew":"\u05AA", - "/yerahbenyomolefthebrew":"\u05AA", - "/yericyrillic":"\u044B", - "/yerudieresiscyrillic":"\u04F9", - "/yesieungkorean":"\u3181", - "/yesieungpansioskorean":"\u3183", - "/yesieungsioskorean":"\u3182", - "/yetivhebrew":"\u059A", - "/ygrave":"\u1EF3", - "/yhook":"\u01B4", - "/yhookabove":"\u1EF7", - "/yiarmenian":"\u0575", - "/yicyrillic":"\u0457", - "/yikorean":"\u3162", - "/yinyang":"\u262F", - "/yiwnarmenian":"\u0582", - "/ymonospace":"\uFF59", - "/yod":"\u05D9", - "/yoddagesh":"\uFB39", - "/yoddageshhebrew":"\uFB39", - "/yodhebrew":"\u05D9", - "/yodyodhebrew":"\u05F2", - "/yodyodpatahhebrew":"\uFB1F", - "/yohiragana":"\u3088", - "/yoikorean":"\u3189", - "/yokatakana":"\u30E8", - "/yokatakanahalfwidth":"\uFF96", - "/yokorean":"\u315B", - "/yosmallhiragana":"\u3087", - "/yosmallkatakana":"\u30E7", - "/yosmallkatakanahalfwidth":"\uFF6E", - "/yotgreek":"\u03F3", - "/yoyaekorean":"\u3188", - "/yoyakorean":"\u3187", - "/yoyakthai":"\u0E22", - "/yoyingthai":"\u0E0D", - "/yparen":"\u24B4", - "/ypogegrammeni":"\u037A", - "/ypogegrammenigreekcmb":"\u0345", - "/yr":"\u01A6", - "/yring":"\u1E99", - "/ysuperior":"\u02B8", - "/ytilde":"\u1EF9", - "/yturned":"\u028E", - "/yuhiragana":"\u3086", - "/yuikorean":"\u318C", - "/yukatakana":"\u30E6", - "/yukatakanahalfwidth":"\uFF95", - "/yukorean":"\u3160", - "/yusbigcyrillic":"\u046B", - "/yusbigiotifiedcyrillic":"\u046D", - "/yuslittlecyrillic":"\u0467", - "/yuslittleiotifiedcyrillic":"\u0469", - "/yusmallhiragana":"\u3085", - "/yusmallkatakana":"\u30E5", - "/yusmallkatakanahalfwidth":"\uFF6D", - "/yuyekorean":"\u318B", - "/yuyeokorean":"\u318A", - "/yyabengali":"\u09DF", - "/yyadeva":"\u095F", - "/z":"\u007A", - "/zaarmenian":"\u0566", - "/zacute":"\u017A", - "/zadeva":"\u095B", - "/zagurmukhi":"\u0A5B", - "/zaharabic":"\u0638", - "/zahfinalarabic":"\uFEC6", - "/zahinitialarabic":"\uFEC7", - "/zahiragana":"\u3056", - "/zahmedialarabic":"\uFEC8", - "/zainarabic":"\u0632", - "/zainfinalarabic":"\uFEB0", - "/zakatakana":"\u30B6", - "/zaqefgadolhebrew":"\u0595", - "/zaqefqatanhebrew":"\u0594", - "/zarqahebrew":"\u0598", - "/zayin":"\u05D6", - "/zayindagesh":"\uFB36", - "/zayindageshhebrew":"\uFB36", - "/zayinhebrew":"\u05D6", - "/zbopomofo":"\u3117", - "/zcaron":"\u017E", - "/zcircle":"\u24E9", - "/zcircumflex":"\u1E91", - "/zcurl":"\u0291", - "/zdot":"\u017C", - "/zdotaccent":"\u017C", - "/zdotbelow":"\u1E93", - "/zecyrillic":"\u0437", - "/zedescendercyrillic":"\u0499", - "/zedieresiscyrillic":"\u04DF", - "/zehiragana":"\u305C", - "/zekatakana":"\u30BC", - "/zero":"\u0030", - "/zeroarabic":"\u0660", - "/zerobengali":"\u09E6", - "/zerodeva":"\u0966", - "/zerogujarati":"\u0AE6", - "/zerogurmukhi":"\u0A66", - "/zerohackarabic":"\u0660", - "/zeroinferior":"\u2080", - "/zeromonospace":"\uFF10", - "/zerooldstyle":"\uF730", - "/zeropersian":"\u06F0", - "/zerosuperior":"\u2070", - "/zerothai":"\u0E50", - "/zerowidthjoiner":"\uFEFF", - "/zerowidthnonjoiner":"\u200C", - "/zerowidthspace":"\u200B", - "/zeta":"\u03B6", - "/zhbopomofo":"\u3113", - "/zhearmenian":"\u056A", - "/zhebrevecyrillic":"\u04C2", - "/zhecyrillic":"\u0436", - "/zhedescendercyrillic":"\u0497", - "/zhedieresiscyrillic":"\u04DD", - "/zihiragana":"\u3058", - "/zikatakana":"\u30B8", - "/zinorhebrew":"\u05AE", - "/zlinebelow":"\u1E95", - "/zmonospace":"\uFF5A", - "/zohiragana":"\u305E", - "/zokatakana":"\u30BE", - "/zparen":"\u24B5", - "/zretroflexhook":"\u0290", - "/zstroke":"\u01B6", - "/zuhiragana":"\u305A", - "/zukatakana":"\u30BA", +adobe_glyphs = { + "/A": "\u0041", + "/AE": "\u00C6", + "/AEacute": "\u01FC", + "/AEmacron": "\u01E2", + "/AEsmall": "\uF7E6", + "/Aacute": "\u00C1", + "/Aacutesmall": "\uF7E1", + "/Abreve": "\u0102", + "/Abreveacute": "\u1EAE", + "/Abrevecyrillic": "\u04D0", + "/Abrevedotbelow": "\u1EB6", + "/Abrevegrave": "\u1EB0", + "/Abrevehookabove": "\u1EB2", + "/Abrevetilde": "\u1EB4", + "/Acaron": "\u01CD", + "/Acircle": "\u24B6", + "/Acircumflex": "\u00C2", + "/Acircumflexacute": "\u1EA4", + "/Acircumflexdotbelow": "\u1EAC", + "/Acircumflexgrave": "\u1EA6", + "/Acircumflexhookabove": "\u1EA8", + "/Acircumflexsmall": "\uF7E2", + "/Acircumflextilde": "\u1EAA", + "/Acute": "\uF6C9", + "/Acutesmall": "\uF7B4", + "/Acyrillic": "\u0410", + "/Adblgrave": "\u0200", + "/Adieresis": "\u00C4", + "/Adieresiscyrillic": "\u04D2", + "/Adieresismacron": "\u01DE", + "/Adieresissmall": "\uF7E4", + "/Adotbelow": "\u1EA0", + "/Adotmacron": "\u01E0", + "/Agrave": "\u00C0", + "/Agravesmall": "\uF7E0", + "/Ahookabove": "\u1EA2", + "/Aiecyrillic": "\u04D4", + "/Ainvertedbreve": "\u0202", + "/Alpha": "\u0391", + "/Alphatonos": "\u0386", + "/Amacron": "\u0100", + "/Amonospace": "\uFF21", + "/Aogonek": "\u0104", + "/Aring": "\u00C5", + "/Aringacute": "\u01FA", + "/Aringbelow": "\u1E00", + "/Aringsmall": "\uF7E5", + "/Asmall": "\uF761", + "/Atilde": "\u00C3", + "/Atildesmall": "\uF7E3", + "/Aybarmenian": "\u0531", + "/B": "\u0042", + "/Bcircle": "\u24B7", + "/Bdotaccent": "\u1E02", + "/Bdotbelow": "\u1E04", + "/Becyrillic": "\u0411", + "/Benarmenian": "\u0532", + "/Beta": "\u0392", + "/Bhook": "\u0181", + "/Blinebelow": "\u1E06", + "/Bmonospace": "\uFF22", + "/Brevesmall": "\uF6F4", + "/Bsmall": "\uF762", + "/Btopbar": "\u0182", + "/C": "\u0043", + "/Caarmenian": "\u053E", + "/Cacute": "\u0106", + "/Caron": "\uF6CA", + "/Caronsmall": "\uF6F5", + "/Ccaron": "\u010C", + "/Ccedilla": "\u00C7", + "/Ccedillaacute": "\u1E08", + "/Ccedillasmall": "\uF7E7", + "/Ccircle": "\u24B8", + "/Ccircumflex": "\u0108", + "/Cdot": "\u010A", + "/Cdotaccent": "\u010A", + "/Cedillasmall": "\uF7B8", + "/Chaarmenian": "\u0549", + "/Cheabkhasiancyrillic": "\u04BC", + "/Checyrillic": "\u0427", + "/Chedescenderabkhasiancyrillic": "\u04BE", + "/Chedescendercyrillic": "\u04B6", + "/Chedieresiscyrillic": "\u04F4", + "/Cheharmenian": "\u0543", + "/Chekhakassiancyrillic": "\u04CB", + "/Cheverticalstrokecyrillic": "\u04B8", + "/Chi": "\u03A7", + "/Chook": "\u0187", + "/Circumflexsmall": "\uF6F6", + "/Cmonospace": "\uFF23", + "/Coarmenian": "\u0551", + "/Csmall": "\uF763", + "/D": "\u0044", + "/DZ": "\u01F1", + "/DZcaron": "\u01C4", + "/Daarmenian": "\u0534", + "/Dafrican": "\u0189", + "/Dcaron": "\u010E", + "/Dcedilla": "\u1E10", + "/Dcircle": "\u24B9", + "/Dcircumflexbelow": "\u1E12", + "/Dcroat": "\u0110", + "/Ddotaccent": "\u1E0A", + "/Ddotbelow": "\u1E0C", + "/Decyrillic": "\u0414", + "/Deicoptic": "\u03EE", + "/Delta": "\u2206", + "/Deltagreek": "\u0394", + "/Dhook": "\u018A", + "/Dieresis": "\uF6CB", + "/DieresisAcute": "\uF6CC", + "/DieresisGrave": "\uF6CD", + "/Dieresissmall": "\uF7A8", + "/Digammagreek": "\u03DC", + "/Djecyrillic": "\u0402", + "/Dlinebelow": "\u1E0E", + "/Dmonospace": "\uFF24", + "/Dotaccentsmall": "\uF6F7", + "/Dslash": "\u0110", + "/Dsmall": "\uF764", + "/Dtopbar": "\u018B", + "/Dz": "\u01F2", + "/Dzcaron": "\u01C5", + "/Dzeabkhasiancyrillic": "\u04E0", + "/Dzecyrillic": "\u0405", + "/Dzhecyrillic": "\u040F", + "/E": "\u0045", + "/Eacute": "\u00C9", + "/Eacutesmall": "\uF7E9", + "/Ebreve": "\u0114", + "/Ecaron": "\u011A", + "/Ecedillabreve": "\u1E1C", + "/Echarmenian": "\u0535", + "/Ecircle": "\u24BA", + "/Ecircumflex": "\u00CA", + "/Ecircumflexacute": "\u1EBE", + "/Ecircumflexbelow": "\u1E18", + "/Ecircumflexdotbelow": "\u1EC6", + "/Ecircumflexgrave": "\u1EC0", + "/Ecircumflexhookabove": "\u1EC2", + "/Ecircumflexsmall": "\uF7EA", + "/Ecircumflextilde": "\u1EC4", + "/Ecyrillic": "\u0404", + "/Edblgrave": "\u0204", + "/Edieresis": "\u00CB", + "/Edieresissmall": "\uF7EB", + "/Edot": "\u0116", + "/Edotaccent": "\u0116", + "/Edotbelow": "\u1EB8", + "/Efcyrillic": "\u0424", + "/Egrave": "\u00C8", + "/Egravesmall": "\uF7E8", + "/Eharmenian": "\u0537", + "/Ehookabove": "\u1EBA", + "/Eightroman": "\u2167", + "/Einvertedbreve": "\u0206", + "/Eiotifiedcyrillic": "\u0464", + "/Elcyrillic": "\u041B", + "/Elevenroman": "\u216A", + "/Emacron": "\u0112", + "/Emacronacute": "\u1E16", + "/Emacrongrave": "\u1E14", + "/Emcyrillic": "\u041C", + "/Emonospace": "\uFF25", + "/Encyrillic": "\u041D", + "/Endescendercyrillic": "\u04A2", + "/Eng": "\u014A", + "/Enghecyrillic": "\u04A4", + "/Enhookcyrillic": "\u04C7", + "/Eogonek": "\u0118", + "/Eopen": "\u0190", + "/Epsilon": "\u0395", + "/Epsilontonos": "\u0388", + "/Ercyrillic": "\u0420", + "/Ereversed": "\u018E", + "/Ereversedcyrillic": "\u042D", + "/Escyrillic": "\u0421", + "/Esdescendercyrillic": "\u04AA", + "/Esh": "\u01A9", + "/Esmall": "\uF765", + "/Eta": "\u0397", + "/Etarmenian": "\u0538", + "/Etatonos": "\u0389", + "/Eth": "\u00D0", + "/Ethsmall": "\uF7F0", + "/Etilde": "\u1EBC", + "/Etildebelow": "\u1E1A", + "/Euro": "\u20AC", + "/Ezh": "\u01B7", + "/Ezhcaron": "\u01EE", + "/Ezhreversed": "\u01B8", + "/F": "\u0046", + "/Fcircle": "\u24BB", + "/Fdotaccent": "\u1E1E", + "/Feharmenian": "\u0556", + "/Feicoptic": "\u03E4", + "/Fhook": "\u0191", + "/Fitacyrillic": "\u0472", + "/Fiveroman": "\u2164", + "/Fmonospace": "\uFF26", + "/Fourroman": "\u2163", + "/Fsmall": "\uF766", + "/G": "\u0047", + "/GBsquare": "\u3387", + "/Gacute": "\u01F4", + "/Gamma": "\u0393", + "/Gammaafrican": "\u0194", + "/Gangiacoptic": "\u03EA", + "/Gbreve": "\u011E", + "/Gcaron": "\u01E6", + "/Gcedilla": "\u0122", + "/Gcircle": "\u24BC", + "/Gcircumflex": "\u011C", + "/Gcommaaccent": "\u0122", + "/Gdot": "\u0120", + "/Gdotaccent": "\u0120", + "/Gecyrillic": "\u0413", + "/Ghadarmenian": "\u0542", + "/Ghemiddlehookcyrillic": "\u0494", + "/Ghestrokecyrillic": "\u0492", + "/Gheupturncyrillic": "\u0490", + "/Ghook": "\u0193", + "/Gimarmenian": "\u0533", + "/Gjecyrillic": "\u0403", + "/Gmacron": "\u1E20", + "/Gmonospace": "\uFF27", + "/Grave": "\uF6CE", + "/Gravesmall": "\uF760", + "/Gsmall": "\uF767", + "/Gsmallhook": "\u029B", + "/Gstroke": "\u01E4", + "/H": "\u0048", + "/H18533": "\u25CF", + "/H18543": "\u25AA", + "/H18551": "\u25AB", + "/H22073": "\u25A1", + "/HPsquare": "\u33CB", + "/Haabkhasiancyrillic": "\u04A8", + "/Hadescendercyrillic": "\u04B2", + "/Hardsigncyrillic": "\u042A", + "/Hbar": "\u0126", + "/Hbrevebelow": "\u1E2A", + "/Hcedilla": "\u1E28", + "/Hcircle": "\u24BD", + "/Hcircumflex": "\u0124", + "/Hdieresis": "\u1E26", + "/Hdotaccent": "\u1E22", + "/Hdotbelow": "\u1E24", + "/Hmonospace": "\uFF28", + "/Hoarmenian": "\u0540", + "/Horicoptic": "\u03E8", + "/Hsmall": "\uF768", + "/Hungarumlaut": "\uF6CF", + "/Hungarumlautsmall": "\uF6F8", + "/Hzsquare": "\u3390", + "/I": "\u0049", + "/IAcyrillic": "\u042F", + "/IJ": "\u0132", + "/IUcyrillic": "\u042E", + "/Iacute": "\u00CD", + "/Iacutesmall": "\uF7ED", + "/Ibreve": "\u012C", + "/Icaron": "\u01CF", + "/Icircle": "\u24BE", + "/Icircumflex": "\u00CE", + "/Icircumflexsmall": "\uF7EE", + "/Icyrillic": "\u0406", + "/Idblgrave": "\u0208", + "/Idieresis": "\u00CF", + "/Idieresisacute": "\u1E2E", + "/Idieresiscyrillic": "\u04E4", + "/Idieresissmall": "\uF7EF", + "/Idot": "\u0130", + "/Idotaccent": "\u0130", + "/Idotbelow": "\u1ECA", + "/Iebrevecyrillic": "\u04D6", + "/Iecyrillic": "\u0415", + "/Ifraktur": "\u2111", + "/Igrave": "\u00CC", + "/Igravesmall": "\uF7EC", + "/Ihookabove": "\u1EC8", + "/Iicyrillic": "\u0418", + "/Iinvertedbreve": "\u020A", + "/Iishortcyrillic": "\u0419", + "/Imacron": "\u012A", + "/Imacroncyrillic": "\u04E2", + "/Imonospace": "\uFF29", + "/Iniarmenian": "\u053B", + "/Iocyrillic": "\u0401", + "/Iogonek": "\u012E", + "/Iota": "\u0399", + "/Iotaafrican": "\u0196", + "/Iotadieresis": "\u03AA", + "/Iotatonos": "\u038A", + "/Ismall": "\uF769", + "/Istroke": "\u0197", + "/Itilde": "\u0128", + "/Itildebelow": "\u1E2C", + "/Izhitsacyrillic": "\u0474", + "/Izhitsadblgravecyrillic": "\u0476", + "/J": "\u004A", + "/Jaarmenian": "\u0541", + "/Jcircle": "\u24BF", + "/Jcircumflex": "\u0134", + "/Jecyrillic": "\u0408", + "/Jheharmenian": "\u054B", + "/Jmonospace": "\uFF2A", + "/Jsmall": "\uF76A", + "/K": "\u004B", + "/KBsquare": "\u3385", + "/KKsquare": "\u33CD", + "/Kabashkircyrillic": "\u04A0", + "/Kacute": "\u1E30", + "/Kacyrillic": "\u041A", + "/Kadescendercyrillic": "\u049A", + "/Kahookcyrillic": "\u04C3", + "/Kappa": "\u039A", + "/Kastrokecyrillic": "\u049E", + "/Kaverticalstrokecyrillic": "\u049C", + "/Kcaron": "\u01E8", + "/Kcedilla": "\u0136", + "/Kcircle": "\u24C0", + "/Kcommaaccent": "\u0136", + "/Kdotbelow": "\u1E32", + "/Keharmenian": "\u0554", + "/Kenarmenian": "\u053F", + "/Khacyrillic": "\u0425", + "/Kheicoptic": "\u03E6", + "/Khook": "\u0198", + "/Kjecyrillic": "\u040C", + "/Klinebelow": "\u1E34", + "/Kmonospace": "\uFF2B", + "/Koppacyrillic": "\u0480", + "/Koppagreek": "\u03DE", + "/Ksicyrillic": "\u046E", + "/Ksmall": "\uF76B", + "/L": "\u004C", + "/LJ": "\u01C7", + "/LL": "\uF6BF", + "/Lacute": "\u0139", + "/Lambda": "\u039B", + "/Lcaron": "\u013D", + "/Lcedilla": "\u013B", + "/Lcircle": "\u24C1", + "/Lcircumflexbelow": "\u1E3C", + "/Lcommaaccent": "\u013B", + "/Ldot": "\u013F", + "/Ldotaccent": "\u013F", + "/Ldotbelow": "\u1E36", + "/Ldotbelowmacron": "\u1E38", + "/Liwnarmenian": "\u053C", + "/Lj": "\u01C8", + "/Ljecyrillic": "\u0409", + "/Llinebelow": "\u1E3A", + "/Lmonospace": "\uFF2C", + "/Lslash": "\u0141", + "/Lslashsmall": "\uF6F9", + "/Lsmall": "\uF76C", + "/M": "\u004D", + "/MBsquare": "\u3386", + "/Macron": "\uF6D0", + "/Macronsmall": "\uF7AF", + "/Macute": "\u1E3E", + "/Mcircle": "\u24C2", + "/Mdotaccent": "\u1E40", + "/Mdotbelow": "\u1E42", + "/Menarmenian": "\u0544", + "/Mmonospace": "\uFF2D", + "/Msmall": "\uF76D", + "/Mturned": "\u019C", + "/Mu": "\u039C", + "/N": "\u004E", + "/NJ": "\u01CA", + "/Nacute": "\u0143", + "/Ncaron": "\u0147", + "/Ncedilla": "\u0145", + "/Ncircle": "\u24C3", + "/Ncircumflexbelow": "\u1E4A", + "/Ncommaaccent": "\u0145", + "/Ndotaccent": "\u1E44", + "/Ndotbelow": "\u1E46", + "/Nhookleft": "\u019D", + "/Nineroman": "\u2168", + "/Nj": "\u01CB", + "/Njecyrillic": "\u040A", + "/Nlinebelow": "\u1E48", + "/Nmonospace": "\uFF2E", + "/Nowarmenian": "\u0546", + "/Nsmall": "\uF76E", + "/Ntilde": "\u00D1", + "/Ntildesmall": "\uF7F1", + "/Nu": "\u039D", + "/O": "\u004F", + "/OE": "\u0152", + "/OEsmall": "\uF6FA", + "/Oacute": "\u00D3", + "/Oacutesmall": "\uF7F3", + "/Obarredcyrillic": "\u04E8", + "/Obarreddieresiscyrillic": "\u04EA", + "/Obreve": "\u014E", + "/Ocaron": "\u01D1", + "/Ocenteredtilde": "\u019F", + "/Ocircle": "\u24C4", + "/Ocircumflex": "\u00D4", + "/Ocircumflexacute": "\u1ED0", + "/Ocircumflexdotbelow": "\u1ED8", + "/Ocircumflexgrave": "\u1ED2", + "/Ocircumflexhookabove": "\u1ED4", + "/Ocircumflexsmall": "\uF7F4", + "/Ocircumflextilde": "\u1ED6", + "/Ocyrillic": "\u041E", + "/Odblacute": "\u0150", + "/Odblgrave": "\u020C", + "/Odieresis": "\u00D6", + "/Odieresiscyrillic": "\u04E6", + "/Odieresissmall": "\uF7F6", + "/Odotbelow": "\u1ECC", + "/Ogoneksmall": "\uF6FB", + "/Ograve": "\u00D2", + "/Ogravesmall": "\uF7F2", + "/Oharmenian": "\u0555", + "/Ohm": "\u2126", + "/Ohookabove": "\u1ECE", + "/Ohorn": "\u01A0", + "/Ohornacute": "\u1EDA", + "/Ohorndotbelow": "\u1EE2", + "/Ohorngrave": "\u1EDC", + "/Ohornhookabove": "\u1EDE", + "/Ohorntilde": "\u1EE0", + "/Ohungarumlaut": "\u0150", + "/Oi": "\u01A2", + "/Oinvertedbreve": "\u020E", + "/Omacron": "\u014C", + "/Omacronacute": "\u1E52", + "/Omacrongrave": "\u1E50", + "/Omega": "\u2126", + "/Omegacyrillic": "\u0460", + "/Omegagreek": "\u03A9", + "/Omegaroundcyrillic": "\u047A", + "/Omegatitlocyrillic": "\u047C", + "/Omegatonos": "\u038F", + "/Omicron": "\u039F", + "/Omicrontonos": "\u038C", + "/Omonospace": "\uFF2F", + "/Oneroman": "\u2160", + "/Oogonek": "\u01EA", + "/Oogonekmacron": "\u01EC", + "/Oopen": "\u0186", + "/Oslash": "\u00D8", + "/Oslashacute": "\u01FE", + "/Oslashsmall": "\uF7F8", + "/Osmall": "\uF76F", + "/Ostrokeacute": "\u01FE", + "/Otcyrillic": "\u047E", + "/Otilde": "\u00D5", + "/Otildeacute": "\u1E4C", + "/Otildedieresis": "\u1E4E", + "/Otildesmall": "\uF7F5", + "/P": "\u0050", + "/Pacute": "\u1E54", + "/Pcircle": "\u24C5", + "/Pdotaccent": "\u1E56", + "/Pecyrillic": "\u041F", + "/Peharmenian": "\u054A", + "/Pemiddlehookcyrillic": "\u04A6", + "/Phi": "\u03A6", + "/Phook": "\u01A4", + "/Pi": "\u03A0", + "/Piwrarmenian": "\u0553", + "/Pmonospace": "\uFF30", + "/Psi": "\u03A8", + "/Psicyrillic": "\u0470", + "/Psmall": "\uF770", + "/Q": "\u0051", + "/Qcircle": "\u24C6", + "/Qmonospace": "\uFF31", + "/Qsmall": "\uF771", + "/R": "\u0052", + "/Raarmenian": "\u054C", + "/Racute": "\u0154", + "/Rcaron": "\u0158", + "/Rcedilla": "\u0156", + "/Rcircle": "\u24C7", + "/Rcommaaccent": "\u0156", + "/Rdblgrave": "\u0210", + "/Rdotaccent": "\u1E58", + "/Rdotbelow": "\u1E5A", + "/Rdotbelowmacron": "\u1E5C", + "/Reharmenian": "\u0550", + "/Rfraktur": "\u211C", + "/Rho": "\u03A1", + "/Ringsmall": "\uF6FC", + "/Rinvertedbreve": "\u0212", + "/Rlinebelow": "\u1E5E", + "/Rmonospace": "\uFF32", + "/Rsmall": "\uF772", + "/Rsmallinverted": "\u0281", + "/Rsmallinvertedsuperior": "\u02B6", + "/S": "\u0053", + "/SF010000": "\u250C", + "/SF020000": "\u2514", + "/SF030000": "\u2510", + "/SF040000": "\u2518", + "/SF050000": "\u253C", + "/SF060000": "\u252C", + "/SF070000": "\u2534", + "/SF080000": "\u251C", + "/SF090000": "\u2524", + "/SF100000": "\u2500", + "/SF110000": "\u2502", + "/SF190000": "\u2561", + "/SF200000": "\u2562", + "/SF210000": "\u2556", + "/SF220000": "\u2555", + "/SF230000": "\u2563", + "/SF240000": "\u2551", + "/SF250000": "\u2557", + "/SF260000": "\u255D", + "/SF270000": "\u255C", + "/SF280000": "\u255B", + "/SF360000": "\u255E", + "/SF370000": "\u255F", + "/SF380000": "\u255A", + "/SF390000": "\u2554", + "/SF400000": "\u2569", + "/SF410000": "\u2566", + "/SF420000": "\u2560", + "/SF430000": "\u2550", + "/SF440000": "\u256C", + "/SF450000": "\u2567", + "/SF460000": "\u2568", + "/SF470000": "\u2564", + "/SF480000": "\u2565", + "/SF490000": "\u2559", + "/SF500000": "\u2558", + "/SF510000": "\u2552", + "/SF520000": "\u2553", + "/SF530000": "\u256B", + "/SF540000": "\u256A", + "/Sacute": "\u015A", + "/Sacutedotaccent": "\u1E64", + "/Sampigreek": "\u03E0", + "/Scaron": "\u0160", + "/Scarondotaccent": "\u1E66", + "/Scaronsmall": "\uF6FD", + "/Scedilla": "\u015E", + "/Schwa": "\u018F", + "/Schwacyrillic": "\u04D8", + "/Schwadieresiscyrillic": "\u04DA", + "/Scircle": "\u24C8", + "/Scircumflex": "\u015C", + "/Scommaaccent": "\u0218", + "/Sdotaccent": "\u1E60", + "/Sdotbelow": "\u1E62", + "/Sdotbelowdotaccent": "\u1E68", + "/Seharmenian": "\u054D", + "/Sevenroman": "\u2166", + "/Shaarmenian": "\u0547", + "/Shacyrillic": "\u0428", + "/Shchacyrillic": "\u0429", + "/Sheicoptic": "\u03E2", + "/Shhacyrillic": "\u04BA", + "/Shimacoptic": "\u03EC", + "/Sigma": "\u03A3", + "/Sixroman": "\u2165", + "/Smonospace": "\uFF33", + "/Softsigncyrillic": "\u042C", + "/Ssmall": "\uF773", + "/Stigmagreek": "\u03DA", + "/T": "\u0054", + "/Tau": "\u03A4", + "/Tbar": "\u0166", + "/Tcaron": "\u0164", + "/Tcedilla": "\u0162", + "/Tcircle": "\u24C9", + "/Tcircumflexbelow": "\u1E70", + "/Tcommaaccent": "\u0162", + "/Tdotaccent": "\u1E6A", + "/Tdotbelow": "\u1E6C", + "/Tecyrillic": "\u0422", + "/Tedescendercyrillic": "\u04AC", + "/Tenroman": "\u2169", + "/Tetsecyrillic": "\u04B4", + "/Theta": "\u0398", + "/Thook": "\u01AC", + "/Thorn": "\u00DE", + "/Thornsmall": "\uF7FE", + "/Threeroman": "\u2162", + "/Tildesmall": "\uF6FE", + "/Tiwnarmenian": "\u054F", + "/Tlinebelow": "\u1E6E", + "/Tmonospace": "\uFF34", + "/Toarmenian": "\u0539", + "/Tonefive": "\u01BC", + "/Tonesix": "\u0184", + "/Tonetwo": "\u01A7", + "/Tretroflexhook": "\u01AE", + "/Tsecyrillic": "\u0426", + "/Tshecyrillic": "\u040B", + "/Tsmall": "\uF774", + "/Twelveroman": "\u216B", + "/Tworoman": "\u2161", + "/U": "\u0055", + "/Uacute": "\u00DA", + "/Uacutesmall": "\uF7FA", + "/Ubreve": "\u016C", + "/Ucaron": "\u01D3", + "/Ucircle": "\u24CA", + "/Ucircumflex": "\u00DB", + "/Ucircumflexbelow": "\u1E76", + "/Ucircumflexsmall": "\uF7FB", + "/Ucyrillic": "\u0423", + "/Udblacute": "\u0170", + "/Udblgrave": "\u0214", + "/Udieresis": "\u00DC", + "/Udieresisacute": "\u01D7", + "/Udieresisbelow": "\u1E72", + "/Udieresiscaron": "\u01D9", + "/Udieresiscyrillic": "\u04F0", + "/Udieresisgrave": "\u01DB", + "/Udieresismacron": "\u01D5", + "/Udieresissmall": "\uF7FC", + "/Udotbelow": "\u1EE4", + "/Ugrave": "\u00D9", + "/Ugravesmall": "\uF7F9", + "/Uhookabove": "\u1EE6", + "/Uhorn": "\u01AF", + "/Uhornacute": "\u1EE8", + "/Uhorndotbelow": "\u1EF0", + "/Uhorngrave": "\u1EEA", + "/Uhornhookabove": "\u1EEC", + "/Uhorntilde": "\u1EEE", + "/Uhungarumlaut": "\u0170", + "/Uhungarumlautcyrillic": "\u04F2", + "/Uinvertedbreve": "\u0216", + "/Ukcyrillic": "\u0478", + "/Umacron": "\u016A", + "/Umacroncyrillic": "\u04EE", + "/Umacrondieresis": "\u1E7A", + "/Umonospace": "\uFF35", + "/Uogonek": "\u0172", + "/Upsilon": "\u03A5", + "/Upsilon1": "\u03D2", + "/Upsilonacutehooksymbolgreek": "\u03D3", + "/Upsilonafrican": "\u01B1", + "/Upsilondieresis": "\u03AB", + "/Upsilondieresishooksymbolgreek": "\u03D4", + "/Upsilonhooksymbol": "\u03D2", + "/Upsilontonos": "\u038E", + "/Uring": "\u016E", + "/Ushortcyrillic": "\u040E", + "/Usmall": "\uF775", + "/Ustraightcyrillic": "\u04AE", + "/Ustraightstrokecyrillic": "\u04B0", + "/Utilde": "\u0168", + "/Utildeacute": "\u1E78", + "/Utildebelow": "\u1E74", + "/V": "\u0056", + "/Vcircle": "\u24CB", + "/Vdotbelow": "\u1E7E", + "/Vecyrillic": "\u0412", + "/Vewarmenian": "\u054E", + "/Vhook": "\u01B2", + "/Vmonospace": "\uFF36", + "/Voarmenian": "\u0548", + "/Vsmall": "\uF776", + "/Vtilde": "\u1E7C", + "/W": "\u0057", + "/Wacute": "\u1E82", + "/Wcircle": "\u24CC", + "/Wcircumflex": "\u0174", + "/Wdieresis": "\u1E84", + "/Wdotaccent": "\u1E86", + "/Wdotbelow": "\u1E88", + "/Wgrave": "\u1E80", + "/Wmonospace": "\uFF37", + "/Wsmall": "\uF777", + "/X": "\u0058", + "/Xcircle": "\u24CD", + "/Xdieresis": "\u1E8C", + "/Xdotaccent": "\u1E8A", + "/Xeharmenian": "\u053D", + "/Xi": "\u039E", + "/Xmonospace": "\uFF38", + "/Xsmall": "\uF778", + "/Y": "\u0059", + "/Yacute": "\u00DD", + "/Yacutesmall": "\uF7FD", + "/Yatcyrillic": "\u0462", + "/Ycircle": "\u24CE", + "/Ycircumflex": "\u0176", + "/Ydieresis": "\u0178", + "/Ydieresissmall": "\uF7FF", + "/Ydotaccent": "\u1E8E", + "/Ydotbelow": "\u1EF4", + "/Yericyrillic": "\u042B", + "/Yerudieresiscyrillic": "\u04F8", + "/Ygrave": "\u1EF2", + "/Yhook": "\u01B3", + "/Yhookabove": "\u1EF6", + "/Yiarmenian": "\u0545", + "/Yicyrillic": "\u0407", + "/Yiwnarmenian": "\u0552", + "/Ymonospace": "\uFF39", + "/Ysmall": "\uF779", + "/Ytilde": "\u1EF8", + "/Yusbigcyrillic": "\u046A", + "/Yusbigiotifiedcyrillic": "\u046C", + "/Yuslittlecyrillic": "\u0466", + "/Yuslittleiotifiedcyrillic": "\u0468", + "/Z": "\u005A", + "/Zaarmenian": "\u0536", + "/Zacute": "\u0179", + "/Zcaron": "\u017D", + "/Zcaronsmall": "\uF6FF", + "/Zcircle": "\u24CF", + "/Zcircumflex": "\u1E90", + "/Zdot": "\u017B", + "/Zdotaccent": "\u017B", + "/Zdotbelow": "\u1E92", + "/Zecyrillic": "\u0417", + "/Zedescendercyrillic": "\u0498", + "/Zedieresiscyrillic": "\u04DE", + "/Zeta": "\u0396", + "/Zhearmenian": "\u053A", + "/Zhebrevecyrillic": "\u04C1", + "/Zhecyrillic": "\u0416", + "/Zhedescendercyrillic": "\u0496", + "/Zhedieresiscyrillic": "\u04DC", + "/Zlinebelow": "\u1E94", + "/Zmonospace": "\uFF3A", + "/Zsmall": "\uF77A", + "/Zstroke": "\u01B5", + "/a": "\u0061", + "/aabengali": "\u0986", + "/aacute": "\u00E1", + "/aadeva": "\u0906", + "/aagujarati": "\u0A86", + "/aagurmukhi": "\u0A06", + "/aamatragurmukhi": "\u0A3E", + "/aarusquare": "\u3303", + "/aavowelsignbengali": "\u09BE", + "/aavowelsigndeva": "\u093E", + "/aavowelsigngujarati": "\u0ABE", + "/abbreviationmarkarmenian": "\u055F", + "/abbreviationsigndeva": "\u0970", + "/abengali": "\u0985", + "/abopomofo": "\u311A", + "/abreve": "\u0103", + "/abreveacute": "\u1EAF", + "/abrevecyrillic": "\u04D1", + "/abrevedotbelow": "\u1EB7", + "/abrevegrave": "\u1EB1", + "/abrevehookabove": "\u1EB3", + "/abrevetilde": "\u1EB5", + "/acaron": "\u01CE", + "/acircle": "\u24D0", + "/acircumflex": "\u00E2", + "/acircumflexacute": "\u1EA5", + "/acircumflexdotbelow": "\u1EAD", + "/acircumflexgrave": "\u1EA7", + "/acircumflexhookabove": "\u1EA9", + "/acircumflextilde": "\u1EAB", + "/acute": "\u00B4", + "/acutebelowcmb": "\u0317", + "/acutecmb": "\u0301", + "/acutecomb": "\u0301", + "/acutedeva": "\u0954", + "/acutelowmod": "\u02CF", + "/acutetonecmb": "\u0341", + "/acyrillic": "\u0430", + "/adblgrave": "\u0201", + "/addakgurmukhi": "\u0A71", + "/adeva": "\u0905", + "/adieresis": "\u00E4", + "/adieresiscyrillic": "\u04D3", + "/adieresismacron": "\u01DF", + "/adotbelow": "\u1EA1", + "/adotmacron": "\u01E1", + "/ae": "\u00E6", + "/aeacute": "\u01FD", + "/aekorean": "\u3150", + "/aemacron": "\u01E3", + "/afii00208": "\u2015", + "/afii08941": "\u20A4", + "/afii10017": "\u0410", + "/afii10018": "\u0411", + "/afii10019": "\u0412", + "/afii10020": "\u0413", + "/afii10021": "\u0414", + "/afii10022": "\u0415", + "/afii10023": "\u0401", + "/afii10024": "\u0416", + "/afii10025": "\u0417", + "/afii10026": "\u0418", + "/afii10027": "\u0419", + "/afii10028": "\u041A", + "/afii10029": "\u041B", + "/afii10030": "\u041C", + "/afii10031": "\u041D", + "/afii10032": "\u041E", + "/afii10033": "\u041F", + "/afii10034": "\u0420", + "/afii10035": "\u0421", + "/afii10036": "\u0422", + "/afii10037": "\u0423", + "/afii10038": "\u0424", + "/afii10039": "\u0425", + "/afii10040": "\u0426", + "/afii10041": "\u0427", + "/afii10042": "\u0428", + "/afii10043": "\u0429", + "/afii10044": "\u042A", + "/afii10045": "\u042B", + "/afii10046": "\u042C", + "/afii10047": "\u042D", + "/afii10048": "\u042E", + "/afii10049": "\u042F", + "/afii10050": "\u0490", + "/afii10051": "\u0402", + "/afii10052": "\u0403", + "/afii10053": "\u0404", + "/afii10054": "\u0405", + "/afii10055": "\u0406", + "/afii10056": "\u0407", + "/afii10057": "\u0408", + "/afii10058": "\u0409", + "/afii10059": "\u040A", + "/afii10060": "\u040B", + "/afii10061": "\u040C", + "/afii10062": "\u040E", + "/afii10063": "\uF6C4", + "/afii10064": "\uF6C5", + "/afii10065": "\u0430", + "/afii10066": "\u0431", + "/afii10067": "\u0432", + "/afii10068": "\u0433", + "/afii10069": "\u0434", + "/afii10070": "\u0435", + "/afii10071": "\u0451", + "/afii10072": "\u0436", + "/afii10073": "\u0437", + "/afii10074": "\u0438", + "/afii10075": "\u0439", + "/afii10076": "\u043A", + "/afii10077": "\u043B", + "/afii10078": "\u043C", + "/afii10079": "\u043D", + "/afii10080": "\u043E", + "/afii10081": "\u043F", + "/afii10082": "\u0440", + "/afii10083": "\u0441", + "/afii10084": "\u0442", + "/afii10085": "\u0443", + "/afii10086": "\u0444", + "/afii10087": "\u0445", + "/afii10088": "\u0446", + "/afii10089": "\u0447", + "/afii10090": "\u0448", + "/afii10091": "\u0449", + "/afii10092": "\u044A", + "/afii10093": "\u044B", + "/afii10094": "\u044C", + "/afii10095": "\u044D", + "/afii10096": "\u044E", + "/afii10097": "\u044F", + "/afii10098": "\u0491", + "/afii10099": "\u0452", + "/afii10100": "\u0453", + "/afii10101": "\u0454", + "/afii10102": "\u0455", + "/afii10103": "\u0456", + "/afii10104": "\u0457", + "/afii10105": "\u0458", + "/afii10106": "\u0459", + "/afii10107": "\u045A", + "/afii10108": "\u045B", + "/afii10109": "\u045C", + "/afii10110": "\u045E", + "/afii10145": "\u040F", + "/afii10146": "\u0462", + "/afii10147": "\u0472", + "/afii10148": "\u0474", + "/afii10192": "\uF6C6", + "/afii10193": "\u045F", + "/afii10194": "\u0463", + "/afii10195": "\u0473", + "/afii10196": "\u0475", + "/afii10831": "\uF6C7", + "/afii10832": "\uF6C8", + "/afii10846": "\u04D9", + "/afii299": "\u200E", + "/afii300": "\u200F", + "/afii301": "\u200D", + "/afii57381": "\u066A", + "/afii57388": "\u060C", + "/afii57392": "\u0660", + "/afii57393": "\u0661", + "/afii57394": "\u0662", + "/afii57395": "\u0663", + "/afii57396": "\u0664", + "/afii57397": "\u0665", + "/afii57398": "\u0666", + "/afii57399": "\u0667", + "/afii57400": "\u0668", + "/afii57401": "\u0669", + "/afii57403": "\u061B", + "/afii57407": "\u061F", + "/afii57409": "\u0621", + "/afii57410": "\u0622", + "/afii57411": "\u0623", + "/afii57412": "\u0624", + "/afii57413": "\u0625", + "/afii57414": "\u0626", + "/afii57415": "\u0627", + "/afii57416": "\u0628", + "/afii57417": "\u0629", + "/afii57418": "\u062A", + "/afii57419": "\u062B", + "/afii57420": "\u062C", + "/afii57421": "\u062D", + "/afii57422": "\u062E", + "/afii57423": "\u062F", + "/afii57424": "\u0630", + "/afii57425": "\u0631", + "/afii57426": "\u0632", + "/afii57427": "\u0633", + "/afii57428": "\u0634", + "/afii57429": "\u0635", + "/afii57430": "\u0636", + "/afii57431": "\u0637", + "/afii57432": "\u0638", + "/afii57433": "\u0639", + "/afii57434": "\u063A", + "/afii57440": "\u0640", + "/afii57441": "\u0641", + "/afii57442": "\u0642", + "/afii57443": "\u0643", + "/afii57444": "\u0644", + "/afii57445": "\u0645", + "/afii57446": "\u0646", + "/afii57448": "\u0648", + "/afii57449": "\u0649", + "/afii57450": "\u064A", + "/afii57451": "\u064B", + "/afii57452": "\u064C", + "/afii57453": "\u064D", + "/afii57454": "\u064E", + "/afii57455": "\u064F", + "/afii57456": "\u0650", + "/afii57457": "\u0651", + "/afii57458": "\u0652", + "/afii57470": "\u0647", + "/afii57505": "\u06A4", + "/afii57506": "\u067E", + "/afii57507": "\u0686", + "/afii57508": "\u0698", + "/afii57509": "\u06AF", + "/afii57511": "\u0679", + "/afii57512": "\u0688", + "/afii57513": "\u0691", + "/afii57514": "\u06BA", + "/afii57519": "\u06D2", + "/afii57534": "\u06D5", + "/afii57636": "\u20AA", + "/afii57645": "\u05BE", + "/afii57658": "\u05C3", + "/afii57664": "\u05D0", + "/afii57665": "\u05D1", + "/afii57666": "\u05D2", + "/afii57667": "\u05D3", + "/afii57668": "\u05D4", + "/afii57669": "\u05D5", + "/afii57670": "\u05D6", + "/afii57671": "\u05D7", + "/afii57672": "\u05D8", + "/afii57673": "\u05D9", + "/afii57674": "\u05DA", + "/afii57675": "\u05DB", + "/afii57676": "\u05DC", + "/afii57677": "\u05DD", + "/afii57678": "\u05DE", + "/afii57679": "\u05DF", + "/afii57680": "\u05E0", + "/afii57681": "\u05E1", + "/afii57682": "\u05E2", + "/afii57683": "\u05E3", + "/afii57684": "\u05E4", + "/afii57685": "\u05E5", + "/afii57686": "\u05E6", + "/afii57687": "\u05E7", + "/afii57688": "\u05E8", + "/afii57689": "\u05E9", + "/afii57690": "\u05EA", + "/afii57694": "\uFB2A", + "/afii57695": "\uFB2B", + "/afii57700": "\uFB4B", + "/afii57705": "\uFB1F", + "/afii57716": "\u05F0", + "/afii57717": "\u05F1", + "/afii57718": "\u05F2", + "/afii57723": "\uFB35", + "/afii57793": "\u05B4", + "/afii57794": "\u05B5", + "/afii57795": "\u05B6", + "/afii57796": "\u05BB", + "/afii57797": "\u05B8", + "/afii57798": "\u05B7", + "/afii57799": "\u05B0", + "/afii57800": "\u05B2", + "/afii57801": "\u05B1", + "/afii57802": "\u05B3", + "/afii57803": "\u05C2", + "/afii57804": "\u05C1", + "/afii57806": "\u05B9", + "/afii57807": "\u05BC", + "/afii57839": "\u05BD", + "/afii57841": "\u05BF", + "/afii57842": "\u05C0", + "/afii57929": "\u02BC", + "/afii61248": "\u2105", + "/afii61289": "\u2113", + "/afii61352": "\u2116", + "/afii61573": "\u202C", + "/afii61574": "\u202D", + "/afii61575": "\u202E", + "/afii61664": "\u200C", + "/afii63167": "\u066D", + "/afii64937": "\u02BD", + "/agrave": "\u00E0", + "/agujarati": "\u0A85", + "/agurmukhi": "\u0A05", + "/ahiragana": "\u3042", + "/ahookabove": "\u1EA3", + "/aibengali": "\u0990", + "/aibopomofo": "\u311E", + "/aideva": "\u0910", + "/aiecyrillic": "\u04D5", + "/aigujarati": "\u0A90", + "/aigurmukhi": "\u0A10", + "/aimatragurmukhi": "\u0A48", + "/ainarabic": "\u0639", + "/ainfinalarabic": "\uFECA", + "/aininitialarabic": "\uFECB", + "/ainmedialarabic": "\uFECC", + "/ainvertedbreve": "\u0203", + "/aivowelsignbengali": "\u09C8", + "/aivowelsigndeva": "\u0948", + "/aivowelsigngujarati": "\u0AC8", + "/akatakana": "\u30A2", + "/akatakanahalfwidth": "\uFF71", + "/akorean": "\u314F", + "/alef": "\u05D0", + "/alefarabic": "\u0627", + "/alefdageshhebrew": "\uFB30", + "/aleffinalarabic": "\uFE8E", + "/alefhamzaabovearabic": "\u0623", + "/alefhamzaabovefinalarabic": "\uFE84", + "/alefhamzabelowarabic": "\u0625", + "/alefhamzabelowfinalarabic": "\uFE88", + "/alefhebrew": "\u05D0", + "/aleflamedhebrew": "\uFB4F", + "/alefmaddaabovearabic": "\u0622", + "/alefmaddaabovefinalarabic": "\uFE82", + "/alefmaksuraarabic": "\u0649", + "/alefmaksurafinalarabic": "\uFEF0", + "/alefmaksurainitialarabic": "\uFEF3", + "/alefmaksuramedialarabic": "\uFEF4", + "/alefpatahhebrew": "\uFB2E", + "/alefqamatshebrew": "\uFB2F", + "/aleph": "\u2135", + "/allequal": "\u224C", + "/alpha": "\u03B1", + "/alphatonos": "\u03AC", + "/amacron": "\u0101", + "/amonospace": "\uFF41", + "/ampersand": "\u0026", + "/ampersandmonospace": "\uFF06", + "/ampersandsmall": "\uF726", + "/amsquare": "\u33C2", + "/anbopomofo": "\u3122", + "/angbopomofo": "\u3124", + "/angkhankhuthai": "\u0E5A", + "/angle": "\u2220", + "/anglebracketleft": "\u3008", + "/anglebracketleftvertical": "\uFE3F", + "/anglebracketright": "\u3009", + "/anglebracketrightvertical": "\uFE40", + "/angleleft": "\u2329", + "/angleright": "\u232A", + "/angstrom": "\u212B", + "/anoteleia": "\u0387", + "/anudattadeva": "\u0952", + "/anusvarabengali": "\u0982", + "/anusvaradeva": "\u0902", + "/anusvaragujarati": "\u0A82", + "/aogonek": "\u0105", + "/apaatosquare": "\u3300", + "/aparen": "\u249C", + "/apostrophearmenian": "\u055A", + "/apostrophemod": "\u02BC", + "/apple": "\uF8FF", + "/approaches": "\u2250", + "/approxequal": "\u2248", + "/approxequalorimage": "\u2252", + "/approximatelyequal": "\u2245", + "/araeaekorean": "\u318E", + "/araeakorean": "\u318D", + "/arc": "\u2312", + "/arighthalfring": "\u1E9A", + "/aring": "\u00E5", + "/aringacute": "\u01FB", + "/aringbelow": "\u1E01", + "/arrowboth": "\u2194", + "/arrowdashdown": "\u21E3", + "/arrowdashleft": "\u21E0", + "/arrowdashright": "\u21E2", + "/arrowdashup": "\u21E1", + "/arrowdblboth": "\u21D4", + "/arrowdbldown": "\u21D3", + "/arrowdblleft": "\u21D0", + "/arrowdblright": "\u21D2", + "/arrowdblup": "\u21D1", + "/arrowdown": "\u2193", + "/arrowdownleft": "\u2199", + "/arrowdownright": "\u2198", + "/arrowdownwhite": "\u21E9", + "/arrowheaddownmod": "\u02C5", + "/arrowheadleftmod": "\u02C2", + "/arrowheadrightmod": "\u02C3", + "/arrowheadupmod": "\u02C4", + "/arrowhorizex": "\uF8E7", + "/arrowleft": "\u2190", + "/arrowleftdbl": "\u21D0", + "/arrowleftdblstroke": "\u21CD", + "/arrowleftoverright": "\u21C6", + "/arrowleftwhite": "\u21E6", + "/arrowright": "\u2192", + "/arrowrightdblstroke": "\u21CF", + "/arrowrightheavy": "\u279E", + "/arrowrightoverleft": "\u21C4", + "/arrowrightwhite": "\u21E8", + "/arrowtableft": "\u21E4", + "/arrowtabright": "\u21E5", + "/arrowup": "\u2191", + "/arrowupdn": "\u2195", + "/arrowupdnbse": "\u21A8", + "/arrowupdownbase": "\u21A8", + "/arrowupleft": "\u2196", + "/arrowupleftofdown": "\u21C5", + "/arrowupright": "\u2197", + "/arrowupwhite": "\u21E7", + "/arrowvertex": "\uF8E6", + "/asciicircum": "\u005E", + "/asciicircummonospace": "\uFF3E", + "/asciitilde": "\u007E", + "/asciitildemonospace": "\uFF5E", + "/ascript": "\u0251", + "/ascriptturned": "\u0252", + "/asmallhiragana": "\u3041", + "/asmallkatakana": "\u30A1", + "/asmallkatakanahalfwidth": "\uFF67", + "/asterisk": "\u002A", + "/asteriskaltonearabic": "\u066D", + "/asteriskarabic": "\u066D", + "/asteriskmath": "\u2217", + "/asteriskmonospace": "\uFF0A", + "/asterisksmall": "\uFE61", + "/asterism": "\u2042", + "/asuperior": "\uF6E9", + "/asymptoticallyequal": "\u2243", + "/at": "\u0040", + "/atilde": "\u00E3", + "/atmonospace": "\uFF20", + "/atsmall": "\uFE6B", + "/aturned": "\u0250", + "/aubengali": "\u0994", + "/aubopomofo": "\u3120", + "/audeva": "\u0914", + "/augujarati": "\u0A94", + "/augurmukhi": "\u0A14", + "/aulengthmarkbengali": "\u09D7", + "/aumatragurmukhi": "\u0A4C", + "/auvowelsignbengali": "\u09CC", + "/auvowelsigndeva": "\u094C", + "/auvowelsigngujarati": "\u0ACC", + "/avagrahadeva": "\u093D", + "/aybarmenian": "\u0561", + "/ayin": "\u05E2", + "/ayinaltonehebrew": "\uFB20", + "/ayinhebrew": "\u05E2", + "/b": "\u0062", + "/babengali": "\u09AC", + "/backslash": "\u005C", + "/backslashmonospace": "\uFF3C", + "/badeva": "\u092C", + "/bagujarati": "\u0AAC", + "/bagurmukhi": "\u0A2C", + "/bahiragana": "\u3070", + "/bahtthai": "\u0E3F", + "/bakatakana": "\u30D0", + "/bar": "\u007C", + "/barmonospace": "\uFF5C", + "/bbopomofo": "\u3105", + "/bcircle": "\u24D1", + "/bdotaccent": "\u1E03", + "/bdotbelow": "\u1E05", + "/beamedsixteenthnotes": "\u266C", + "/because": "\u2235", + "/becyrillic": "\u0431", + "/beharabic": "\u0628", + "/behfinalarabic": "\uFE90", + "/behinitialarabic": "\uFE91", + "/behiragana": "\u3079", + "/behmedialarabic": "\uFE92", + "/behmeeminitialarabic": "\uFC9F", + "/behmeemisolatedarabic": "\uFC08", + "/behnoonfinalarabic": "\uFC6D", + "/bekatakana": "\u30D9", + "/benarmenian": "\u0562", + "/bet": "\u05D1", + "/beta": "\u03B2", + "/betasymbolgreek": "\u03D0", + "/betdagesh": "\uFB31", + "/betdageshhebrew": "\uFB31", + "/bethebrew": "\u05D1", + "/betrafehebrew": "\uFB4C", + "/bhabengali": "\u09AD", + "/bhadeva": "\u092D", + "/bhagujarati": "\u0AAD", + "/bhagurmukhi": "\u0A2D", + "/bhook": "\u0253", + "/bihiragana": "\u3073", + "/bikatakana": "\u30D3", + "/bilabialclick": "\u0298", + "/bindigurmukhi": "\u0A02", + "/birusquare": "\u3331", + "/blackcircle": "\u25CF", + "/blackdiamond": "\u25C6", + "/blackdownpointingtriangle": "\u25BC", + "/blackleftpointingpointer": "\u25C4", + "/blackleftpointingtriangle": "\u25C0", + "/blacklenticularbracketleft": "\u3010", + "/blacklenticularbracketleftvertical": "\uFE3B", + "/blacklenticularbracketright": "\u3011", + "/blacklenticularbracketrightvertical": "\uFE3C", + "/blacklowerlefttriangle": "\u25E3", + "/blacklowerrighttriangle": "\u25E2", + "/blackrectangle": "\u25AC", + "/blackrightpointingpointer": "\u25BA", + "/blackrightpointingtriangle": "\u25B6", + "/blacksmallsquare": "\u25AA", + "/blacksmilingface": "\u263B", + "/blacksquare": "\u25A0", + "/blackstar": "\u2605", + "/blackupperlefttriangle": "\u25E4", + "/blackupperrighttriangle": "\u25E5", + "/blackuppointingsmalltriangle": "\u25B4", + "/blackuppointingtriangle": "\u25B2", + "/blank": "\u2423", + "/blinebelow": "\u1E07", + "/block": "\u2588", + "/bmonospace": "\uFF42", + "/bobaimaithai": "\u0E1A", + "/bohiragana": "\u307C", + "/bokatakana": "\u30DC", + "/bparen": "\u249D", + "/bqsquare": "\u33C3", + "/braceex": "\uF8F4", + "/braceleft": "\u007B", + "/braceleftbt": "\uF8F3", + "/braceleftmid": "\uF8F2", + "/braceleftmonospace": "\uFF5B", + "/braceleftsmall": "\uFE5B", + "/bracelefttp": "\uF8F1", + "/braceleftvertical": "\uFE37", + "/braceright": "\u007D", + "/bracerightbt": "\uF8FE", + "/bracerightmid": "\uF8FD", + "/bracerightmonospace": "\uFF5D", + "/bracerightsmall": "\uFE5C", + "/bracerighttp": "\uF8FC", + "/bracerightvertical": "\uFE38", + "/bracketleft": "\u005B", + "/bracketleftbt": "\uF8F0", + "/bracketleftex": "\uF8EF", + "/bracketleftmonospace": "\uFF3B", + "/bracketlefttp": "\uF8EE", + "/bracketright": "\u005D", + "/bracketrightbt": "\uF8FB", + "/bracketrightex": "\uF8FA", + "/bracketrightmonospace": "\uFF3D", + "/bracketrighttp": "\uF8F9", + "/breve": "\u02D8", + "/brevebelowcmb": "\u032E", + "/brevecmb": "\u0306", + "/breveinvertedbelowcmb": "\u032F", + "/breveinvertedcmb": "\u0311", + "/breveinverteddoublecmb": "\u0361", + "/bridgebelowcmb": "\u032A", + "/bridgeinvertedbelowcmb": "\u033A", + "/brokenbar": "\u00A6", + "/bstroke": "\u0180", + "/bsuperior": "\uF6EA", + "/btopbar": "\u0183", + "/buhiragana": "\u3076", + "/bukatakana": "\u30D6", + "/bullet": "\u2022", + "/bulletinverse": "\u25D8", + "/bulletoperator": "\u2219", + "/bullseye": "\u25CE", + "/c": "\u0063", + "/caarmenian": "\u056E", + "/cabengali": "\u099A", + "/cacute": "\u0107", + "/cadeva": "\u091A", + "/cagujarati": "\u0A9A", + "/cagurmukhi": "\u0A1A", + "/calsquare": "\u3388", + "/candrabindubengali": "\u0981", + "/candrabinducmb": "\u0310", + "/candrabindudeva": "\u0901", + "/candrabindugujarati": "\u0A81", + "/capslock": "\u21EA", + "/careof": "\u2105", + "/caron": "\u02C7", + "/caronbelowcmb": "\u032C", + "/caroncmb": "\u030C", + "/carriagereturn": "\u21B5", + "/cbopomofo": "\u3118", + "/ccaron": "\u010D", + "/ccedilla": "\u00E7", + "/ccedillaacute": "\u1E09", + "/ccircle": "\u24D2", + "/ccircumflex": "\u0109", + "/ccurl": "\u0255", + "/cdot": "\u010B", + "/cdotaccent": "\u010B", + "/cdsquare": "\u33C5", + "/cedilla": "\u00B8", + "/cedillacmb": "\u0327", + "/cent": "\u00A2", + "/centigrade": "\u2103", + "/centinferior": "\uF6DF", + "/centmonospace": "\uFFE0", + "/centoldstyle": "\uF7A2", + "/centsuperior": "\uF6E0", + "/chaarmenian": "\u0579", + "/chabengali": "\u099B", + "/chadeva": "\u091B", + "/chagujarati": "\u0A9B", + "/chagurmukhi": "\u0A1B", + "/chbopomofo": "\u3114", + "/cheabkhasiancyrillic": "\u04BD", + "/checkmark": "\u2713", + "/checyrillic": "\u0447", + "/chedescenderabkhasiancyrillic": "\u04BF", + "/chedescendercyrillic": "\u04B7", + "/chedieresiscyrillic": "\u04F5", + "/cheharmenian": "\u0573", + "/chekhakassiancyrillic": "\u04CC", + "/cheverticalstrokecyrillic": "\u04B9", + "/chi": "\u03C7", + "/chieuchacirclekorean": "\u3277", + "/chieuchaparenkorean": "\u3217", + "/chieuchcirclekorean": "\u3269", + "/chieuchkorean": "\u314A", + "/chieuchparenkorean": "\u3209", + "/chochangthai": "\u0E0A", + "/chochanthai": "\u0E08", + "/chochingthai": "\u0E09", + "/chochoethai": "\u0E0C", + "/chook": "\u0188", + "/cieucacirclekorean": "\u3276", + "/cieucaparenkorean": "\u3216", + "/cieuccirclekorean": "\u3268", + "/cieuckorean": "\u3148", + "/cieucparenkorean": "\u3208", + "/cieucuparenkorean": "\u321C", + "/circle": "\u25CB", + "/circlemultiply": "\u2297", + "/circleot": "\u2299", + "/circleplus": "\u2295", + "/circlepostalmark": "\u3036", + "/circlewithlefthalfblack": "\u25D0", + "/circlewithrighthalfblack": "\u25D1", + "/circumflex": "\u02C6", + "/circumflexbelowcmb": "\u032D", + "/circumflexcmb": "\u0302", + "/clear": "\u2327", + "/clickalveolar": "\u01C2", + "/clickdental": "\u01C0", + "/clicklateral": "\u01C1", + "/clickretroflex": "\u01C3", + "/club": "\u2663", + "/clubsuitblack": "\u2663", + "/clubsuitwhite": "\u2667", + "/cmcubedsquare": "\u33A4", + "/cmonospace": "\uFF43", + "/cmsquaredsquare": "\u33A0", + "/coarmenian": "\u0581", + "/colon": "\u003A", + "/colonmonetary": "\u20A1", + "/colonmonospace": "\uFF1A", + "/colonsign": "\u20A1", + "/colonsmall": "\uFE55", + "/colontriangularhalfmod": "\u02D1", + "/colontriangularmod": "\u02D0", + "/comma": "\u002C", + "/commaabovecmb": "\u0313", + "/commaaboverightcmb": "\u0315", + "/commaaccent": "\uF6C3", + "/commaarabic": "\u060C", + "/commaarmenian": "\u055D", + "/commainferior": "\uF6E1", + "/commamonospace": "\uFF0C", + "/commareversedabovecmb": "\u0314", + "/commareversedmod": "\u02BD", + "/commasmall": "\uFE50", + "/commasuperior": "\uF6E2", + "/commaturnedabovecmb": "\u0312", + "/commaturnedmod": "\u02BB", + "/compass": "\u263C", + "/congruent": "\u2245", + "/contourintegral": "\u222E", + "/control": "\u2303", + "/controlACK": "\u0006", + "/controlBEL": "\u0007", + "/controlBS": "\u0008", + "/controlCAN": "\u0018", + "/controlCR": "\u000D", + "/controlDC1": "\u0011", + "/controlDC2": "\u0012", + "/controlDC3": "\u0013", + "/controlDC4": "\u0014", + "/controlDEL": "\u007F", + "/controlDLE": "\u0010", + "/controlEM": "\u0019", + "/controlENQ": "\u0005", + "/controlEOT": "\u0004", + "/controlESC": "\u001B", + "/controlETB": "\u0017", + "/controlETX": "\u0003", + "/controlFF": "\u000C", + "/controlFS": "\u001C", + "/controlGS": "\u001D", + "/controlHT": "\u0009", + "/controlLF": "\u000A", + "/controlNAK": "\u0015", + "/controlRS": "\u001E", + "/controlSI": "\u000F", + "/controlSO": "\u000E", + "/controlSOT": "\u0002", + "/controlSTX": "\u0001", + "/controlSUB": "\u001A", + "/controlSYN": "\u0016", + "/controlUS": "\u001F", + "/controlVT": "\u000B", + "/copyright": "\u00A9", + "/copyrightsans": "\uF8E9", + "/copyrightserif": "\uF6D9", + "/cornerbracketleft": "\u300C", + "/cornerbracketlefthalfwidth": "\uFF62", + "/cornerbracketleftvertical": "\uFE41", + "/cornerbracketright": "\u300D", + "/cornerbracketrighthalfwidth": "\uFF63", + "/cornerbracketrightvertical": "\uFE42", + "/corporationsquare": "\u337F", + "/cosquare": "\u33C7", + "/coverkgsquare": "\u33C6", + "/cparen": "\u249E", + "/cruzeiro": "\u20A2", + "/cstretched": "\u0297", + "/curlyand": "\u22CF", + "/curlyor": "\u22CE", + "/currency": "\u00A4", + "/cyrBreve": "\uF6D1", + "/cyrFlex": "\uF6D2", + "/cyrbreve": "\uF6D4", + "/cyrflex": "\uF6D5", + "/d": "\u0064", + "/daarmenian": "\u0564", + "/dabengali": "\u09A6", + "/dadarabic": "\u0636", + "/dadeva": "\u0926", + "/dadfinalarabic": "\uFEBE", + "/dadinitialarabic": "\uFEBF", + "/dadmedialarabic": "\uFEC0", + "/dagesh": "\u05BC", + "/dageshhebrew": "\u05BC", + "/dagger": "\u2020", + "/daggerdbl": "\u2021", + "/dagujarati": "\u0AA6", + "/dagurmukhi": "\u0A26", + "/dahiragana": "\u3060", + "/dakatakana": "\u30C0", + "/dalarabic": "\u062F", + "/dalet": "\u05D3", + "/daletdagesh": "\uFB33", + "/daletdageshhebrew": "\uFB33", + "/dalethatafpatah": "\u05D3 05B2", + "/dalethatafpatahhebrew": "\u05D3 05B2", + "/dalethatafsegol": "\u05D3 05B1", + "/dalethatafsegolhebrew": "\u05D3 05B1", + "/dalethebrew": "\u05D3", + "/dalethiriq": "\u05D3 05B4", + "/dalethiriqhebrew": "\u05D3 05B4", + "/daletholam": "\u05D3 05B9", + "/daletholamhebrew": "\u05D3 05B9", + "/daletpatah": "\u05D3 05B7", + "/daletpatahhebrew": "\u05D3 05B7", + "/daletqamats": "\u05D3 05B8", + "/daletqamatshebrew": "\u05D3 05B8", + "/daletqubuts": "\u05D3 05BB", + "/daletqubutshebrew": "\u05D3 05BB", + "/daletsegol": "\u05D3 05B6", + "/daletsegolhebrew": "\u05D3 05B6", + "/daletsheva": "\u05D3 05B0", + "/daletshevahebrew": "\u05D3 05B0", + "/dalettsere": "\u05D3 05B5", + "/dalettserehebrew": "\u05D3 05B5", + "/dalfinalarabic": "\uFEAA", + "/dammaarabic": "\u064F", + "/dammalowarabic": "\u064F", + "/dammatanaltonearabic": "\u064C", + "/dammatanarabic": "\u064C", + "/danda": "\u0964", + "/dargahebrew": "\u05A7", + "/dargalefthebrew": "\u05A7", + "/dasiapneumatacyrilliccmb": "\u0485", + "/dblGrave": "\uF6D3", + "/dblanglebracketleft": "\u300A", + "/dblanglebracketleftvertical": "\uFE3D", + "/dblanglebracketright": "\u300B", + "/dblanglebracketrightvertical": "\uFE3E", + "/dblarchinvertedbelowcmb": "\u032B", + "/dblarrowleft": "\u21D4", + "/dblarrowright": "\u21D2", + "/dbldanda": "\u0965", + "/dblgrave": "\uF6D6", + "/dblgravecmb": "\u030F", + "/dblintegral": "\u222C", + "/dbllowline": "\u2017", + "/dbllowlinecmb": "\u0333", + "/dbloverlinecmb": "\u033F", + "/dblprimemod": "\u02BA", + "/dblverticalbar": "\u2016", + "/dblverticallineabovecmb": "\u030E", + "/dbopomofo": "\u3109", + "/dbsquare": "\u33C8", + "/dcaron": "\u010F", + "/dcedilla": "\u1E11", + "/dcircle": "\u24D3", + "/dcircumflexbelow": "\u1E13", + "/dcroat": "\u0111", + "/ddabengali": "\u09A1", + "/ddadeva": "\u0921", + "/ddagujarati": "\u0AA1", + "/ddagurmukhi": "\u0A21", + "/ddalarabic": "\u0688", + "/ddalfinalarabic": "\uFB89", + "/dddhadeva": "\u095C", + "/ddhabengali": "\u09A2", + "/ddhadeva": "\u0922", + "/ddhagujarati": "\u0AA2", + "/ddhagurmukhi": "\u0A22", + "/ddotaccent": "\u1E0B", + "/ddotbelow": "\u1E0D", + "/decimalseparatorarabic": "\u066B", + "/decimalseparatorpersian": "\u066B", + "/decyrillic": "\u0434", + "/degree": "\u00B0", + "/dehihebrew": "\u05AD", + "/dehiragana": "\u3067", + "/deicoptic": "\u03EF", + "/dekatakana": "\u30C7", + "/deleteleft": "\u232B", + "/deleteright": "\u2326", + "/delta": "\u03B4", + "/deltaturned": "\u018D", + "/denominatorminusonenumeratorbengali": "\u09F8", + "/dezh": "\u02A4", + "/dhabengali": "\u09A7", + "/dhadeva": "\u0927", + "/dhagujarati": "\u0AA7", + "/dhagurmukhi": "\u0A27", + "/dhook": "\u0257", + "/dialytikatonos": "\u0385", + "/dialytikatonoscmb": "\u0344", + "/diamond": "\u2666", + "/diamondsuitwhite": "\u2662", + "/dieresis": "\u00A8", + "/dieresisacute": "\uF6D7", + "/dieresisbelowcmb": "\u0324", + "/dieresiscmb": "\u0308", + "/dieresisgrave": "\uF6D8", + "/dieresistonos": "\u0385", + "/dihiragana": "\u3062", + "/dikatakana": "\u30C2", + "/dittomark": "\u3003", + "/divide": "\u00F7", + "/divides": "\u2223", + "/divisionslash": "\u2215", + "/djecyrillic": "\u0452", + "/dkshade": "\u2593", + "/dlinebelow": "\u1E0F", + "/dlsquare": "\u3397", + "/dmacron": "\u0111", + "/dmonospace": "\uFF44", + "/dnblock": "\u2584", + "/dochadathai": "\u0E0E", + "/dodekthai": "\u0E14", + "/dohiragana": "\u3069", + "/dokatakana": "\u30C9", + "/dollar": "\u0024", + "/dollarinferior": "\uF6E3", + "/dollarmonospace": "\uFF04", + "/dollaroldstyle": "\uF724", + "/dollarsmall": "\uFE69", + "/dollarsuperior": "\uF6E4", + "/dong": "\u20AB", + "/dorusquare": "\u3326", + "/dotaccent": "\u02D9", + "/dotaccentcmb": "\u0307", + "/dotbelowcmb": "\u0323", + "/dotbelowcomb": "\u0323", + "/dotkatakana": "\u30FB", + "/dotlessi": "\u0131", + "/dotlessj": "\uF6BE", + "/dotlessjstrokehook": "\u0284", + "/dotmath": "\u22C5", + "/dottedcircle": "\u25CC", + "/doubleyodpatah": "\uFB1F", + "/doubleyodpatahhebrew": "\uFB1F", + "/downtackbelowcmb": "\u031E", + "/downtackmod": "\u02D5", + "/dparen": "\u249F", + "/dsuperior": "\uF6EB", + "/dtail": "\u0256", + "/dtopbar": "\u018C", + "/duhiragana": "\u3065", + "/dukatakana": "\u30C5", + "/dz": "\u01F3", + "/dzaltone": "\u02A3", + "/dzcaron": "\u01C6", + "/dzcurl": "\u02A5", + "/dzeabkhasiancyrillic": "\u04E1", + "/dzecyrillic": "\u0455", + "/dzhecyrillic": "\u045F", + "/e": "\u0065", + "/eacute": "\u00E9", + "/earth": "\u2641", + "/ebengali": "\u098F", + "/ebopomofo": "\u311C", + "/ebreve": "\u0115", + "/ecandradeva": "\u090D", + "/ecandragujarati": "\u0A8D", + "/ecandravowelsigndeva": "\u0945", + "/ecandravowelsigngujarati": "\u0AC5", + "/ecaron": "\u011B", + "/ecedillabreve": "\u1E1D", + "/echarmenian": "\u0565", + "/echyiwnarmenian": "\u0587", + "/ecircle": "\u24D4", + "/ecircumflex": "\u00EA", + "/ecircumflexacute": "\u1EBF", + "/ecircumflexbelow": "\u1E19", + "/ecircumflexdotbelow": "\u1EC7", + "/ecircumflexgrave": "\u1EC1", + "/ecircumflexhookabove": "\u1EC3", + "/ecircumflextilde": "\u1EC5", + "/ecyrillic": "\u0454", + "/edblgrave": "\u0205", + "/edeva": "\u090F", + "/edieresis": "\u00EB", + "/edot": "\u0117", + "/edotaccent": "\u0117", + "/edotbelow": "\u1EB9", + "/eegurmukhi": "\u0A0F", + "/eematragurmukhi": "\u0A47", + "/efcyrillic": "\u0444", + "/egrave": "\u00E8", + "/egujarati": "\u0A8F", + "/eharmenian": "\u0567", + "/ehbopomofo": "\u311D", + "/ehiragana": "\u3048", + "/ehookabove": "\u1EBB", + "/eibopomofo": "\u311F", + "/eight": "\u0038", + "/eightarabic": "\u0668", + "/eightbengali": "\u09EE", + "/eightcircle": "\u2467", + "/eightcircleinversesansserif": "\u2791", + "/eightdeva": "\u096E", + "/eighteencircle": "\u2471", + "/eighteenparen": "\u2485", + "/eighteenperiod": "\u2499", + "/eightgujarati": "\u0AEE", + "/eightgurmukhi": "\u0A6E", + "/eighthackarabic": "\u0668", + "/eighthangzhou": "\u3028", + "/eighthnotebeamed": "\u266B", + "/eightideographicparen": "\u3227", + "/eightinferior": "\u2088", + "/eightmonospace": "\uFF18", + "/eightoldstyle": "\uF738", + "/eightparen": "\u247B", + "/eightperiod": "\u248F", + "/eightpersian": "\u06F8", + "/eightroman": "\u2177", + "/eightsuperior": "\u2078", + "/eightthai": "\u0E58", + "/einvertedbreve": "\u0207", + "/eiotifiedcyrillic": "\u0465", + "/ekatakana": "\u30A8", + "/ekatakanahalfwidth": "\uFF74", + "/ekonkargurmukhi": "\u0A74", + "/ekorean": "\u3154", + "/elcyrillic": "\u043B", + "/element": "\u2208", + "/elevencircle": "\u246A", + "/elevenparen": "\u247E", + "/elevenperiod": "\u2492", + "/elevenroman": "\u217A", + "/ellipsis": "\u2026", + "/ellipsisvertical": "\u22EE", + "/emacron": "\u0113", + "/emacronacute": "\u1E17", + "/emacrongrave": "\u1E15", + "/emcyrillic": "\u043C", + "/emdash": "\u2014", + "/emdashvertical": "\uFE31", + "/emonospace": "\uFF45", + "/emphasismarkarmenian": "\u055B", + "/emptyset": "\u2205", + "/enbopomofo": "\u3123", + "/encyrillic": "\u043D", + "/endash": "\u2013", + "/endashvertical": "\uFE32", + "/endescendercyrillic": "\u04A3", + "/eng": "\u014B", + "/engbopomofo": "\u3125", + "/enghecyrillic": "\u04A5", + "/enhookcyrillic": "\u04C8", + "/enspace": "\u2002", + "/eogonek": "\u0119", + "/eokorean": "\u3153", + "/eopen": "\u025B", + "/eopenclosed": "\u029A", + "/eopenreversed": "\u025C", + "/eopenreversedclosed": "\u025E", + "/eopenreversedhook": "\u025D", + "/eparen": "\u24A0", + "/epsilon": "\u03B5", + "/epsilontonos": "\u03AD", + "/equal": "\u003D", + "/equalmonospace": "\uFF1D", + "/equalsmall": "\uFE66", + "/equalsuperior": "\u207C", + "/equivalence": "\u2261", + "/erbopomofo": "\u3126", + "/ercyrillic": "\u0440", + "/ereversed": "\u0258", + "/ereversedcyrillic": "\u044D", + "/escyrillic": "\u0441", + "/esdescendercyrillic": "\u04AB", + "/esh": "\u0283", + "/eshcurl": "\u0286", + "/eshortdeva": "\u090E", + "/eshortvowelsigndeva": "\u0946", + "/eshreversedloop": "\u01AA", + "/eshsquatreversed": "\u0285", + "/esmallhiragana": "\u3047", + "/esmallkatakana": "\u30A7", + "/esmallkatakanahalfwidth": "\uFF6A", + "/estimated": "\u212E", + "/esuperior": "\uF6EC", + "/eta": "\u03B7", + "/etarmenian": "\u0568", + "/etatonos": "\u03AE", + "/eth": "\u00F0", + "/etilde": "\u1EBD", + "/etildebelow": "\u1E1B", + "/etnahtafoukhhebrew": "\u0591", + "/etnahtafoukhlefthebrew": "\u0591", + "/etnahtahebrew": "\u0591", + "/etnahtalefthebrew": "\u0591", + "/eturned": "\u01DD", + "/eukorean": "\u3161", + "/euro": "\u20AC", + "/evowelsignbengali": "\u09C7", + "/evowelsigndeva": "\u0947", + "/evowelsigngujarati": "\u0AC7", + "/exclam": "\u0021", + "/exclamarmenian": "\u055C", + "/exclamdbl": "\u203C", + "/exclamdown": "\u00A1", + "/exclamdownsmall": "\uF7A1", + "/exclammonospace": "\uFF01", + "/exclamsmall": "\uF721", + "/existential": "\u2203", + "/ezh": "\u0292", + "/ezhcaron": "\u01EF", + "/ezhcurl": "\u0293", + "/ezhreversed": "\u01B9", + "/ezhtail": "\u01BA", + "/f": "\u0066", + "/fadeva": "\u095E", + "/fagurmukhi": "\u0A5E", + "/fahrenheit": "\u2109", + "/fathaarabic": "\u064E", + "/fathalowarabic": "\u064E", + "/fathatanarabic": "\u064B", + "/fbopomofo": "\u3108", + "/fcircle": "\u24D5", + "/fdotaccent": "\u1E1F", + "/feharabic": "\u0641", + "/feharmenian": "\u0586", + "/fehfinalarabic": "\uFED2", + "/fehinitialarabic": "\uFED3", + "/fehmedialarabic": "\uFED4", + "/feicoptic": "\u03E5", + "/female": "\u2640", + "/ff": "\uFB00", + "/ffi": "\uFB03", + "/ffl": "\uFB04", + "/fi": "\uFB01", + "/fifteencircle": "\u246E", + "/fifteenparen": "\u2482", + "/fifteenperiod": "\u2496", + "/figuredash": "\u2012", + "/filledbox": "\u25A0", + "/filledrect": "\u25AC", + "/finalkaf": "\u05DA", + "/finalkafdagesh": "\uFB3A", + "/finalkafdageshhebrew": "\uFB3A", + "/finalkafhebrew": "\u05DA", + "/finalkafqamats": "\u05DA 05B8", + "/finalkafqamatshebrew": "\u05DA 05B8", + "/finalkafsheva": "\u05DA 05B0", + "/finalkafshevahebrew": "\u05DA 05B0", + "/finalmem": "\u05DD", + "/finalmemhebrew": "\u05DD", + "/finalnun": "\u05DF", + "/finalnunhebrew": "\u05DF", + "/finalpe": "\u05E3", + "/finalpehebrew": "\u05E3", + "/finaltsadi": "\u05E5", + "/finaltsadihebrew": "\u05E5", + "/firsttonechinese": "\u02C9", + "/fisheye": "\u25C9", + "/fitacyrillic": "\u0473", + "/five": "\u0035", + "/fivearabic": "\u0665", + "/fivebengali": "\u09EB", + "/fivecircle": "\u2464", + "/fivecircleinversesansserif": "\u278E", + "/fivedeva": "\u096B", + "/fiveeighths": "\u215D", + "/fivegujarati": "\u0AEB", + "/fivegurmukhi": "\u0A6B", + "/fivehackarabic": "\u0665", + "/fivehangzhou": "\u3025", + "/fiveideographicparen": "\u3224", + "/fiveinferior": "\u2085", + "/fivemonospace": "\uFF15", + "/fiveoldstyle": "\uF735", + "/fiveparen": "\u2478", + "/fiveperiod": "\u248C", + "/fivepersian": "\u06F5", + "/fiveroman": "\u2174", + "/fivesuperior": "\u2075", + "/fivethai": "\u0E55", + "/fl": "\uFB02", + "/florin": "\u0192", + "/fmonospace": "\uFF46", + "/fmsquare": "\u3399", + "/fofanthai": "\u0E1F", + "/fofathai": "\u0E1D", + "/fongmanthai": "\u0E4F", + "/forall": "\u2200", + "/four": "\u0034", + "/fourarabic": "\u0664", + "/fourbengali": "\u09EA", + "/fourcircle": "\u2463", + "/fourcircleinversesansserif": "\u278D", + "/fourdeva": "\u096A", + "/fourgujarati": "\u0AEA", + "/fourgurmukhi": "\u0A6A", + "/fourhackarabic": "\u0664", + "/fourhangzhou": "\u3024", + "/fourideographicparen": "\u3223", + "/fourinferior": "\u2084", + "/fourmonospace": "\uFF14", + "/fournumeratorbengali": "\u09F7", + "/fouroldstyle": "\uF734", + "/fourparen": "\u2477", + "/fourperiod": "\u248B", + "/fourpersian": "\u06F4", + "/fourroman": "\u2173", + "/foursuperior": "\u2074", + "/fourteencircle": "\u246D", + "/fourteenparen": "\u2481", + "/fourteenperiod": "\u2495", + "/fourthai": "\u0E54", + "/fourthtonechinese": "\u02CB", + "/fparen": "\u24A1", + "/fraction": "\u2044", + "/franc": "\u20A3", + "/g": "\u0067", + "/gabengali": "\u0997", + "/gacute": "\u01F5", + "/gadeva": "\u0917", + "/gafarabic": "\u06AF", + "/gaffinalarabic": "\uFB93", + "/gafinitialarabic": "\uFB94", + "/gafmedialarabic": "\uFB95", + "/gagujarati": "\u0A97", + "/gagurmukhi": "\u0A17", + "/gahiragana": "\u304C", + "/gakatakana": "\u30AC", + "/gamma": "\u03B3", + "/gammalatinsmall": "\u0263", + "/gammasuperior": "\u02E0", + "/gangiacoptic": "\u03EB", + "/gbopomofo": "\u310D", + "/gbreve": "\u011F", + "/gcaron": "\u01E7", + "/gcedilla": "\u0123", + "/gcircle": "\u24D6", + "/gcircumflex": "\u011D", + "/gcommaaccent": "\u0123", + "/gdot": "\u0121", + "/gdotaccent": "\u0121", + "/gecyrillic": "\u0433", + "/gehiragana": "\u3052", + "/gekatakana": "\u30B2", + "/geometricallyequal": "\u2251", + "/gereshaccenthebrew": "\u059C", + "/gereshhebrew": "\u05F3", + "/gereshmuqdamhebrew": "\u059D", + "/germandbls": "\u00DF", + "/gershayimaccenthebrew": "\u059E", + "/gershayimhebrew": "\u05F4", + "/getamark": "\u3013", + "/ghabengali": "\u0998", + "/ghadarmenian": "\u0572", + "/ghadeva": "\u0918", + "/ghagujarati": "\u0A98", + "/ghagurmukhi": "\u0A18", + "/ghainarabic": "\u063A", + "/ghainfinalarabic": "\uFECE", + "/ghaininitialarabic": "\uFECF", + "/ghainmedialarabic": "\uFED0", + "/ghemiddlehookcyrillic": "\u0495", + "/ghestrokecyrillic": "\u0493", + "/gheupturncyrillic": "\u0491", + "/ghhadeva": "\u095A", + "/ghhagurmukhi": "\u0A5A", + "/ghook": "\u0260", + "/ghzsquare": "\u3393", + "/gihiragana": "\u304E", + "/gikatakana": "\u30AE", + "/gimarmenian": "\u0563", + "/gimel": "\u05D2", + "/gimeldagesh": "\uFB32", + "/gimeldageshhebrew": "\uFB32", + "/gimelhebrew": "\u05D2", + "/gjecyrillic": "\u0453", + "/glottalinvertedstroke": "\u01BE", + "/glottalstop": "\u0294", + "/glottalstopinverted": "\u0296", + "/glottalstopmod": "\u02C0", + "/glottalstopreversed": "\u0295", + "/glottalstopreversedmod": "\u02C1", + "/glottalstopreversedsuperior": "\u02E4", + "/glottalstopstroke": "\u02A1", + "/glottalstopstrokereversed": "\u02A2", + "/gmacron": "\u1E21", + "/gmonospace": "\uFF47", + "/gohiragana": "\u3054", + "/gokatakana": "\u30B4", + "/gparen": "\u24A2", + "/gpasquare": "\u33AC", + "/gradient": "\u2207", + "/grave": "\u0060", + "/gravebelowcmb": "\u0316", + "/gravecmb": "\u0300", + "/gravecomb": "\u0300", + "/gravedeva": "\u0953", + "/gravelowmod": "\u02CE", + "/gravemonospace": "\uFF40", + "/gravetonecmb": "\u0340", + "/greater": "\u003E", + "/greaterequal": "\u2265", + "/greaterequalorless": "\u22DB", + "/greatermonospace": "\uFF1E", + "/greaterorequivalent": "\u2273", + "/greaterorless": "\u2277", + "/greateroverequal": "\u2267", + "/greatersmall": "\uFE65", + "/gscript": "\u0261", + "/gstroke": "\u01E5", + "/guhiragana": "\u3050", + "/guillemotleft": "\u00AB", + "/guillemotright": "\u00BB", + "/guilsinglleft": "\u2039", + "/guilsinglright": "\u203A", + "/gukatakana": "\u30B0", + "/guramusquare": "\u3318", + "/gysquare": "\u33C9", + "/h": "\u0068", + "/haabkhasiancyrillic": "\u04A9", + "/haaltonearabic": "\u06C1", + "/habengali": "\u09B9", + "/hadescendercyrillic": "\u04B3", + "/hadeva": "\u0939", + "/hagujarati": "\u0AB9", + "/hagurmukhi": "\u0A39", + "/haharabic": "\u062D", + "/hahfinalarabic": "\uFEA2", + "/hahinitialarabic": "\uFEA3", + "/hahiragana": "\u306F", + "/hahmedialarabic": "\uFEA4", + "/haitusquare": "\u332A", + "/hakatakana": "\u30CF", + "/hakatakanahalfwidth": "\uFF8A", + "/halantgurmukhi": "\u0A4D", + "/hamzaarabic": "\u0621", + "/hamzadammaarabic": "\u0621 064F", + "/hamzadammatanarabic": "\u0621 064C", + "/hamzafathaarabic": "\u0621 064E", + "/hamzafathatanarabic": "\u0621 064B", + "/hamzalowarabic": "\u0621", + "/hamzalowkasraarabic": "\u0621 0650", + "/hamzalowkasratanarabic": "\u0621 064D", + "/hamzasukunarabic": "\u0621 0652", + "/hangulfiller": "\u3164", + "/hardsigncyrillic": "\u044A", + "/harpoonleftbarbup": "\u21BC", + "/harpoonrightbarbup": "\u21C0", + "/hasquare": "\u33CA", + "/hatafpatah": "\u05B2", + "/hatafpatah16": "\u05B2", + "/hatafpatah23": "\u05B2", + "/hatafpatah2f": "\u05B2", + "/hatafpatahhebrew": "\u05B2", + "/hatafpatahnarrowhebrew": "\u05B2", + "/hatafpatahquarterhebrew": "\u05B2", + "/hatafpatahwidehebrew": "\u05B2", + "/hatafqamats": "\u05B3", + "/hatafqamats1b": "\u05B3", + "/hatafqamats28": "\u05B3", + "/hatafqamats34": "\u05B3", + "/hatafqamatshebrew": "\u05B3", + "/hatafqamatsnarrowhebrew": "\u05B3", + "/hatafqamatsquarterhebrew": "\u05B3", + "/hatafqamatswidehebrew": "\u05B3", + "/hatafsegol": "\u05B1", + "/hatafsegol17": "\u05B1", + "/hatafsegol24": "\u05B1", + "/hatafsegol30": "\u05B1", + "/hatafsegolhebrew": "\u05B1", + "/hatafsegolnarrowhebrew": "\u05B1", + "/hatafsegolquarterhebrew": "\u05B1", + "/hatafsegolwidehebrew": "\u05B1", + "/hbar": "\u0127", + "/hbopomofo": "\u310F", + "/hbrevebelow": "\u1E2B", + "/hcedilla": "\u1E29", + "/hcircle": "\u24D7", + "/hcircumflex": "\u0125", + "/hdieresis": "\u1E27", + "/hdotaccent": "\u1E23", + "/hdotbelow": "\u1E25", + "/he": "\u05D4", + "/heart": "\u2665", + "/heartsuitblack": "\u2665", + "/heartsuitwhite": "\u2661", + "/hedagesh": "\uFB34", + "/hedageshhebrew": "\uFB34", + "/hehaltonearabic": "\u06C1", + "/heharabic": "\u0647", + "/hehebrew": "\u05D4", + "/hehfinalaltonearabic": "\uFBA7", + "/hehfinalalttwoarabic": "\uFEEA", + "/hehfinalarabic": "\uFEEA", + "/hehhamzaabovefinalarabic": "\uFBA5", + "/hehhamzaaboveisolatedarabic": "\uFBA4", + "/hehinitialaltonearabic": "\uFBA8", + "/hehinitialarabic": "\uFEEB", + "/hehiragana": "\u3078", + "/hehmedialaltonearabic": "\uFBA9", + "/hehmedialarabic": "\uFEEC", + "/heiseierasquare": "\u337B", + "/hekatakana": "\u30D8", + "/hekatakanahalfwidth": "\uFF8D", + "/hekutaarusquare": "\u3336", + "/henghook": "\u0267", + "/herutusquare": "\u3339", + "/het": "\u05D7", + "/hethebrew": "\u05D7", + "/hhook": "\u0266", + "/hhooksuperior": "\u02B1", + "/hieuhacirclekorean": "\u327B", + "/hieuhaparenkorean": "\u321B", + "/hieuhcirclekorean": "\u326D", + "/hieuhkorean": "\u314E", + "/hieuhparenkorean": "\u320D", + "/hihiragana": "\u3072", + "/hikatakana": "\u30D2", + "/hikatakanahalfwidth": "\uFF8B", + "/hiriq": "\u05B4", + "/hiriq14": "\u05B4", + "/hiriq21": "\u05B4", + "/hiriq2d": "\u05B4", + "/hiriqhebrew": "\u05B4", + "/hiriqnarrowhebrew": "\u05B4", + "/hiriqquarterhebrew": "\u05B4", + "/hiriqwidehebrew": "\u05B4", + "/hlinebelow": "\u1E96", + "/hmonospace": "\uFF48", + "/hoarmenian": "\u0570", + "/hohipthai": "\u0E2B", + "/hohiragana": "\u307B", + "/hokatakana": "\u30DB", + "/hokatakanahalfwidth": "\uFF8E", + "/holam": "\u05B9", + "/holam19": "\u05B9", + "/holam26": "\u05B9", + "/holam32": "\u05B9", + "/holamhebrew": "\u05B9", + "/holamnarrowhebrew": "\u05B9", + "/holamquarterhebrew": "\u05B9", + "/holamwidehebrew": "\u05B9", + "/honokhukthai": "\u0E2E", + "/hookabovecomb": "\u0309", + "/hookcmb": "\u0309", + "/hookpalatalizedbelowcmb": "\u0321", + "/hookretroflexbelowcmb": "\u0322", + "/hoonsquare": "\u3342", + "/horicoptic": "\u03E9", + "/horizontalbar": "\u2015", + "/horncmb": "\u031B", + "/hotsprings": "\u2668", + "/house": "\u2302", + "/hparen": "\u24A3", + "/hsuperior": "\u02B0", + "/hturned": "\u0265", + "/huhiragana": "\u3075", + "/huiitosquare": "\u3333", + "/hukatakana": "\u30D5", + "/hukatakanahalfwidth": "\uFF8C", + "/hungarumlaut": "\u02DD", + "/hungarumlautcmb": "\u030B", + "/hv": "\u0195", + "/hyphen": "\u002D", + "/hypheninferior": "\uF6E5", + "/hyphenmonospace": "\uFF0D", + "/hyphensmall": "\uFE63", + "/hyphensuperior": "\uF6E6", + "/hyphentwo": "\u2010", + "/i": "\u0069", + "/iacute": "\u00ED", + "/iacyrillic": "\u044F", + "/ibengali": "\u0987", + "/ibopomofo": "\u3127", + "/ibreve": "\u012D", + "/icaron": "\u01D0", + "/icircle": "\u24D8", + "/icircumflex": "\u00EE", + "/icyrillic": "\u0456", + "/idblgrave": "\u0209", + "/ideographearthcircle": "\u328F", + "/ideographfirecircle": "\u328B", + "/ideographicallianceparen": "\u323F", + "/ideographiccallparen": "\u323A", + "/ideographiccentrecircle": "\u32A5", + "/ideographicclose": "\u3006", + "/ideographiccomma": "\u3001", + "/ideographiccommaleft": "\uFF64", + "/ideographiccongratulationparen": "\u3237", + "/ideographiccorrectcircle": "\u32A3", + "/ideographicearthparen": "\u322F", + "/ideographicenterpriseparen": "\u323D", + "/ideographicexcellentcircle": "\u329D", + "/ideographicfestivalparen": "\u3240", + "/ideographicfinancialcircle": "\u3296", + "/ideographicfinancialparen": "\u3236", + "/ideographicfireparen": "\u322B", + "/ideographichaveparen": "\u3232", + "/ideographichighcircle": "\u32A4", + "/ideographiciterationmark": "\u3005", + "/ideographiclaborcircle": "\u3298", + "/ideographiclaborparen": "\u3238", + "/ideographicleftcircle": "\u32A7", + "/ideographiclowcircle": "\u32A6", + "/ideographicmedicinecircle": "\u32A9", + "/ideographicmetalparen": "\u322E", + "/ideographicmoonparen": "\u322A", + "/ideographicnameparen": "\u3234", + "/ideographicperiod": "\u3002", + "/ideographicprintcircle": "\u329E", + "/ideographicreachparen": "\u3243", + "/ideographicrepresentparen": "\u3239", + "/ideographicresourceparen": "\u323E", + "/ideographicrightcircle": "\u32A8", + "/ideographicsecretcircle": "\u3299", + "/ideographicselfparen": "\u3242", + "/ideographicsocietyparen": "\u3233", + "/ideographicspace": "\u3000", + "/ideographicspecialparen": "\u3235", + "/ideographicstockparen": "\u3231", + "/ideographicstudyparen": "\u323B", + "/ideographicsunparen": "\u3230", + "/ideographicsuperviseparen": "\u323C", + "/ideographicwaterparen": "\u322C", + "/ideographicwoodparen": "\u322D", + "/ideographiczero": "\u3007", + "/ideographmetalcircle": "\u328E", + "/ideographmooncircle": "\u328A", + "/ideographnamecircle": "\u3294", + "/ideographsuncircle": "\u3290", + "/ideographwatercircle": "\u328C", + "/ideographwoodcircle": "\u328D", + "/ideva": "\u0907", + "/idieresis": "\u00EF", + "/idieresisacute": "\u1E2F", + "/idieresiscyrillic": "\u04E5", + "/idotbelow": "\u1ECB", + "/iebrevecyrillic": "\u04D7", + "/iecyrillic": "\u0435", + "/ieungacirclekorean": "\u3275", + "/ieungaparenkorean": "\u3215", + "/ieungcirclekorean": "\u3267", + "/ieungkorean": "\u3147", + "/ieungparenkorean": "\u3207", + "/igrave": "\u00EC", + "/igujarati": "\u0A87", + "/igurmukhi": "\u0A07", + "/ihiragana": "\u3044", + "/ihookabove": "\u1EC9", + "/iibengali": "\u0988", + "/iicyrillic": "\u0438", + "/iideva": "\u0908", + "/iigujarati": "\u0A88", + "/iigurmukhi": "\u0A08", + "/iimatragurmukhi": "\u0A40", + "/iinvertedbreve": "\u020B", + "/iishortcyrillic": "\u0439", + "/iivowelsignbengali": "\u09C0", + "/iivowelsigndeva": "\u0940", + "/iivowelsigngujarati": "\u0AC0", + "/ij": "\u0133", + "/ikatakana": "\u30A4", + "/ikatakanahalfwidth": "\uFF72", + "/ikorean": "\u3163", + "/ilde": "\u02DC", + "/iluyhebrew": "\u05AC", + "/imacron": "\u012B", + "/imacroncyrillic": "\u04E3", + "/imageorapproximatelyequal": "\u2253", + "/imatragurmukhi": "\u0A3F", + "/imonospace": "\uFF49", + "/increment": "\u2206", + "/infinity": "\u221E", + "/iniarmenian": "\u056B", + "/integral": "\u222B", + "/integralbottom": "\u2321", + "/integralbt": "\u2321", + "/integralex": "\uF8F5", + "/integraltop": "\u2320", + "/integraltp": "\u2320", + "/intersection": "\u2229", + "/intisquare": "\u3305", + "/invbullet": "\u25D8", + "/invcircle": "\u25D9", + "/invsmileface": "\u263B", + "/iocyrillic": "\u0451", + "/iogonek": "\u012F", + "/iota": "\u03B9", + "/iotadieresis": "\u03CA", + "/iotadieresistonos": "\u0390", + "/iotalatin": "\u0269", + "/iotatonos": "\u03AF", + "/iparen": "\u24A4", + "/irigurmukhi": "\u0A72", + "/ismallhiragana": "\u3043", + "/ismallkatakana": "\u30A3", + "/ismallkatakanahalfwidth": "\uFF68", + "/issharbengali": "\u09FA", + "/istroke": "\u0268", + "/isuperior": "\uF6ED", + "/iterationhiragana": "\u309D", + "/iterationkatakana": "\u30FD", + "/itilde": "\u0129", + "/itildebelow": "\u1E2D", + "/iubopomofo": "\u3129", + "/iucyrillic": "\u044E", + "/ivowelsignbengali": "\u09BF", + "/ivowelsigndeva": "\u093F", + "/ivowelsigngujarati": "\u0ABF", + "/izhitsacyrillic": "\u0475", + "/izhitsadblgravecyrillic": "\u0477", + "/j": "\u006A", + "/jaarmenian": "\u0571", + "/jabengali": "\u099C", + "/jadeva": "\u091C", + "/jagujarati": "\u0A9C", + "/jagurmukhi": "\u0A1C", + "/jbopomofo": "\u3110", + "/jcaron": "\u01F0", + "/jcircle": "\u24D9", + "/jcircumflex": "\u0135", + "/jcrossedtail": "\u029D", + "/jdotlessstroke": "\u025F", + "/jecyrillic": "\u0458", + "/jeemarabic": "\u062C", + "/jeemfinalarabic": "\uFE9E", + "/jeeminitialarabic": "\uFE9F", + "/jeemmedialarabic": "\uFEA0", + "/jeharabic": "\u0698", + "/jehfinalarabic": "\uFB8B", + "/jhabengali": "\u099D", + "/jhadeva": "\u091D", + "/jhagujarati": "\u0A9D", + "/jhagurmukhi": "\u0A1D", + "/jheharmenian": "\u057B", + "/jis": "\u3004", + "/jmonospace": "\uFF4A", + "/jparen": "\u24A5", + "/jsuperior": "\u02B2", + "/k": "\u006B", + "/kabashkircyrillic": "\u04A1", + "/kabengali": "\u0995", + "/kacute": "\u1E31", + "/kacyrillic": "\u043A", + "/kadescendercyrillic": "\u049B", + "/kadeva": "\u0915", + "/kaf": "\u05DB", + "/kafarabic": "\u0643", + "/kafdagesh": "\uFB3B", + "/kafdageshhebrew": "\uFB3B", + "/kaffinalarabic": "\uFEDA", + "/kafhebrew": "\u05DB", + "/kafinitialarabic": "\uFEDB", + "/kafmedialarabic": "\uFEDC", + "/kafrafehebrew": "\uFB4D", + "/kagujarati": "\u0A95", + "/kagurmukhi": "\u0A15", + "/kahiragana": "\u304B", + "/kahookcyrillic": "\u04C4", + "/kakatakana": "\u30AB", + "/kakatakanahalfwidth": "\uFF76", + "/kappa": "\u03BA", + "/kappasymbolgreek": "\u03F0", + "/kapyeounmieumkorean": "\u3171", + "/kapyeounphieuphkorean": "\u3184", + "/kapyeounpieupkorean": "\u3178", + "/kapyeounssangpieupkorean": "\u3179", + "/karoriisquare": "\u330D", + "/kashidaautoarabic": "\u0640", + "/kashidaautonosidebearingarabic": "\u0640", + "/kasmallkatakana": "\u30F5", + "/kasquare": "\u3384", + "/kasraarabic": "\u0650", + "/kasratanarabic": "\u064D", + "/kastrokecyrillic": "\u049F", + "/katahiraprolongmarkhalfwidth": "\uFF70", + "/kaverticalstrokecyrillic": "\u049D", + "/kbopomofo": "\u310E", + "/kcalsquare": "\u3389", + "/kcaron": "\u01E9", + "/kcedilla": "\u0137", + "/kcircle": "\u24DA", + "/kcommaaccent": "\u0137", + "/kdotbelow": "\u1E33", + "/keharmenian": "\u0584", + "/kehiragana": "\u3051", + "/kekatakana": "\u30B1", + "/kekatakanahalfwidth": "\uFF79", + "/kenarmenian": "\u056F", + "/kesmallkatakana": "\u30F6", + "/kgreenlandic": "\u0138", + "/khabengali": "\u0996", + "/khacyrillic": "\u0445", + "/khadeva": "\u0916", + "/khagujarati": "\u0A96", + "/khagurmukhi": "\u0A16", + "/khaharabic": "\u062E", + "/khahfinalarabic": "\uFEA6", + "/khahinitialarabic": "\uFEA7", + "/khahmedialarabic": "\uFEA8", + "/kheicoptic": "\u03E7", + "/khhadeva": "\u0959", + "/khhagurmukhi": "\u0A59", + "/khieukhacirclekorean": "\u3278", + "/khieukhaparenkorean": "\u3218", + "/khieukhcirclekorean": "\u326A", + "/khieukhkorean": "\u314B", + "/khieukhparenkorean": "\u320A", + "/khokhaithai": "\u0E02", + "/khokhonthai": "\u0E05", + "/khokhuatthai": "\u0E03", + "/khokhwaithai": "\u0E04", + "/khomutthai": "\u0E5B", + "/khook": "\u0199", + "/khorakhangthai": "\u0E06", + "/khzsquare": "\u3391", + "/kihiragana": "\u304D", + "/kikatakana": "\u30AD", + "/kikatakanahalfwidth": "\uFF77", + "/kiroguramusquare": "\u3315", + "/kiromeetorusquare": "\u3316", + "/kirosquare": "\u3314", + "/kiyeokacirclekorean": "\u326E", + "/kiyeokaparenkorean": "\u320E", + "/kiyeokcirclekorean": "\u3260", + "/kiyeokkorean": "\u3131", + "/kiyeokparenkorean": "\u3200", + "/kiyeoksioskorean": "\u3133", + "/kjecyrillic": "\u045C", + "/klinebelow": "\u1E35", + "/klsquare": "\u3398", + "/kmcubedsquare": "\u33A6", + "/kmonospace": "\uFF4B", + "/kmsquaredsquare": "\u33A2", + "/kohiragana": "\u3053", + "/kohmsquare": "\u33C0", + "/kokaithai": "\u0E01", + "/kokatakana": "\u30B3", + "/kokatakanahalfwidth": "\uFF7A", + "/kooposquare": "\u331E", + "/koppacyrillic": "\u0481", + "/koreanstandardsymbol": "\u327F", + "/koroniscmb": "\u0343", + "/kparen": "\u24A6", + "/kpasquare": "\u33AA", + "/ksicyrillic": "\u046F", + "/ktsquare": "\u33CF", + "/kturned": "\u029E", + "/kuhiragana": "\u304F", + "/kukatakana": "\u30AF", + "/kukatakanahalfwidth": "\uFF78", + "/kvsquare": "\u33B8", + "/kwsquare": "\u33BE", + "/l": "\u006C", + "/labengali": "\u09B2", + "/lacute": "\u013A", + "/ladeva": "\u0932", + "/lagujarati": "\u0AB2", + "/lagurmukhi": "\u0A32", + "/lakkhangyaothai": "\u0E45", + "/lamaleffinalarabic": "\uFEFC", + "/lamalefhamzaabovefinalarabic": "\uFEF8", + "/lamalefhamzaaboveisolatedarabic": "\uFEF7", + "/lamalefhamzabelowfinalarabic": "\uFEFA", + "/lamalefhamzabelowisolatedarabic": "\uFEF9", + "/lamalefisolatedarabic": "\uFEFB", + "/lamalefmaddaabovefinalarabic": "\uFEF6", + "/lamalefmaddaaboveisolatedarabic": "\uFEF5", + "/lamarabic": "\u0644", + "/lambda": "\u03BB", + "/lambdastroke": "\u019B", + "/lamed": "\u05DC", + "/lameddagesh": "\uFB3C", + "/lameddageshhebrew": "\uFB3C", + "/lamedhebrew": "\u05DC", + "/lamedholam": "\u05DC 05B9", + "/lamedholamdagesh": "\u05DC 05B9 05BC", + "/lamedholamdageshhebrew": "\u05DC 05B9 05BC", + "/lamedholamhebrew": "\u05DC 05B9", + "/lamfinalarabic": "\uFEDE", + "/lamhahinitialarabic": "\uFCCA", + "/laminitialarabic": "\uFEDF", + "/lamjeeminitialarabic": "\uFCC9", + "/lamkhahinitialarabic": "\uFCCB", + "/lamlamhehisolatedarabic": "\uFDF2", + "/lammedialarabic": "\uFEE0", + "/lammeemhahinitialarabic": "\uFD88", + "/lammeeminitialarabic": "\uFCCC", + "/lammeemjeeminitialarabic": "\uFEDF FEE4 FEA0", + "/lammeemkhahinitialarabic": "\uFEDF FEE4 FEA8", + "/largecircle": "\u25EF", + "/lbar": "\u019A", + "/lbelt": "\u026C", + "/lbopomofo": "\u310C", + "/lcaron": "\u013E", + "/lcedilla": "\u013C", + "/lcircle": "\u24DB", + "/lcircumflexbelow": "\u1E3D", + "/lcommaaccent": "\u013C", + "/ldot": "\u0140", + "/ldotaccent": "\u0140", + "/ldotbelow": "\u1E37", + "/ldotbelowmacron": "\u1E39", + "/leftangleabovecmb": "\u031A", + "/lefttackbelowcmb": "\u0318", + "/less": "\u003C", + "/lessequal": "\u2264", + "/lessequalorgreater": "\u22DA", + "/lessmonospace": "\uFF1C", + "/lessorequivalent": "\u2272", + "/lessorgreater": "\u2276", + "/lessoverequal": "\u2266", + "/lesssmall": "\uFE64", + "/lezh": "\u026E", + "/lfblock": "\u258C", + "/lhookretroflex": "\u026D", + "/lira": "\u20A4", + "/liwnarmenian": "\u056C", + "/lj": "\u01C9", + "/ljecyrillic": "\u0459", + "/ll": "\uF6C0", + "/lladeva": "\u0933", + "/llagujarati": "\u0AB3", + "/llinebelow": "\u1E3B", + "/llladeva": "\u0934", + "/llvocalicbengali": "\u09E1", + "/llvocalicdeva": "\u0961", + "/llvocalicvowelsignbengali": "\u09E3", + "/llvocalicvowelsigndeva": "\u0963", + "/lmiddletilde": "\u026B", + "/lmonospace": "\uFF4C", + "/lmsquare": "\u33D0", + "/lochulathai": "\u0E2C", + "/logicaland": "\u2227", + "/logicalnot": "\u00AC", + "/logicalnotreversed": "\u2310", + "/logicalor": "\u2228", + "/lolingthai": "\u0E25", + "/longs": "\u017F", + "/lowlinecenterline": "\uFE4E", + "/lowlinecmb": "\u0332", + "/lowlinedashed": "\uFE4D", + "/lozenge": "\u25CA", + "/lparen": "\u24A7", + "/lslash": "\u0142", + "/lsquare": "\u2113", + "/lsuperior": "\uF6EE", + "/ltshade": "\u2591", + "/luthai": "\u0E26", + "/lvocalicbengali": "\u098C", + "/lvocalicdeva": "\u090C", + "/lvocalicvowelsignbengali": "\u09E2", + "/lvocalicvowelsigndeva": "\u0962", + "/lxsquare": "\u33D3", + "/m": "\u006D", + "/mabengali": "\u09AE", + "/macron": "\u00AF", + "/macronbelowcmb": "\u0331", + "/macroncmb": "\u0304", + "/macronlowmod": "\u02CD", + "/macronmonospace": "\uFFE3", + "/macute": "\u1E3F", + "/madeva": "\u092E", + "/magujarati": "\u0AAE", + "/magurmukhi": "\u0A2E", + "/mahapakhhebrew": "\u05A4", + "/mahapakhlefthebrew": "\u05A4", + "/mahiragana": "\u307E", + "/maichattawalowleftthai": "\uF895", + "/maichattawalowrightthai": "\uF894", + "/maichattawathai": "\u0E4B", + "/maichattawaupperleftthai": "\uF893", + "/maieklowleftthai": "\uF88C", + "/maieklowrightthai": "\uF88B", + "/maiekthai": "\u0E48", + "/maiekupperleftthai": "\uF88A", + "/maihanakatleftthai": "\uF884", + "/maihanakatthai": "\u0E31", + "/maitaikhuleftthai": "\uF889", + "/maitaikhuthai": "\u0E47", + "/maitholowleftthai": "\uF88F", + "/maitholowrightthai": "\uF88E", + "/maithothai": "\u0E49", + "/maithoupperleftthai": "\uF88D", + "/maitrilowleftthai": "\uF892", + "/maitrilowrightthai": "\uF891", + "/maitrithai": "\u0E4A", + "/maitriupperleftthai": "\uF890", + "/maiyamokthai": "\u0E46", + "/makatakana": "\u30DE", + "/makatakanahalfwidth": "\uFF8F", + "/male": "\u2642", + "/mansyonsquare": "\u3347", + "/maqafhebrew": "\u05BE", + "/mars": "\u2642", + "/masoracirclehebrew": "\u05AF", + "/masquare": "\u3383", + "/mbopomofo": "\u3107", + "/mbsquare": "\u33D4", + "/mcircle": "\u24DC", + "/mcubedsquare": "\u33A5", + "/mdotaccent": "\u1E41", + "/mdotbelow": "\u1E43", + "/meemarabic": "\u0645", + "/meemfinalarabic": "\uFEE2", + "/meeminitialarabic": "\uFEE3", + "/meemmedialarabic": "\uFEE4", + "/meemmeeminitialarabic": "\uFCD1", + "/meemmeemisolatedarabic": "\uFC48", + "/meetorusquare": "\u334D", + "/mehiragana": "\u3081", + "/meizierasquare": "\u337E", + "/mekatakana": "\u30E1", + "/mekatakanahalfwidth": "\uFF92", + "/mem": "\u05DE", + "/memdagesh": "\uFB3E", + "/memdageshhebrew": "\uFB3E", + "/memhebrew": "\u05DE", + "/menarmenian": "\u0574", + "/merkhahebrew": "\u05A5", + "/merkhakefulahebrew": "\u05A6", + "/merkhakefulalefthebrew": "\u05A6", + "/merkhalefthebrew": "\u05A5", + "/mhook": "\u0271", + "/mhzsquare": "\u3392", + "/middledotkatakanahalfwidth": "\uFF65", + "/middot": "\u00B7", + "/mieumacirclekorean": "\u3272", + "/mieumaparenkorean": "\u3212", + "/mieumcirclekorean": "\u3264", + "/mieumkorean": "\u3141", + "/mieumpansioskorean": "\u3170", + "/mieumparenkorean": "\u3204", + "/mieumpieupkorean": "\u316E", + "/mieumsioskorean": "\u316F", + "/mihiragana": "\u307F", + "/mikatakana": "\u30DF", + "/mikatakanahalfwidth": "\uFF90", + "/minus": "\u2212", + "/minusbelowcmb": "\u0320", + "/minuscircle": "\u2296", + "/minusmod": "\u02D7", + "/minusplus": "\u2213", + "/minute": "\u2032", + "/miribaarusquare": "\u334A", + "/mirisquare": "\u3349", + "/mlonglegturned": "\u0270", + "/mlsquare": "\u3396", + "/mmcubedsquare": "\u33A3", + "/mmonospace": "\uFF4D", + "/mmsquaredsquare": "\u339F", + "/mohiragana": "\u3082", + "/mohmsquare": "\u33C1", + "/mokatakana": "\u30E2", + "/mokatakanahalfwidth": "\uFF93", + "/molsquare": "\u33D6", + "/momathai": "\u0E21", + "/moverssquare": "\u33A7", + "/moverssquaredsquare": "\u33A8", + "/mparen": "\u24A8", + "/mpasquare": "\u33AB", + "/mssquare": "\u33B3", + "/msuperior": "\uF6EF", + "/mturned": "\u026F", + "/mu": "\u00B5", + "/mu1": "\u00B5", + "/muasquare": "\u3382", + "/muchgreater": "\u226B", + "/muchless": "\u226A", + "/mufsquare": "\u338C", + "/mugreek": "\u03BC", + "/mugsquare": "\u338D", + "/muhiragana": "\u3080", + "/mukatakana": "\u30E0", + "/mukatakanahalfwidth": "\uFF91", + "/mulsquare": "\u3395", + "/multiply": "\u00D7", + "/mumsquare": "\u339B", + "/munahhebrew": "\u05A3", + "/munahlefthebrew": "\u05A3", + "/musicalnote": "\u266A", + "/musicalnotedbl": "\u266B", + "/musicflatsign": "\u266D", + "/musicsharpsign": "\u266F", + "/mussquare": "\u33B2", + "/muvsquare": "\u33B6", + "/muwsquare": "\u33BC", + "/mvmegasquare": "\u33B9", + "/mvsquare": "\u33B7", + "/mwmegasquare": "\u33BF", + "/mwsquare": "\u33BD", + "/n": "\u006E", + "/nabengali": "\u09A8", + "/nabla": "\u2207", + "/nacute": "\u0144", + "/nadeva": "\u0928", + "/nagujarati": "\u0AA8", + "/nagurmukhi": "\u0A28", + "/nahiragana": "\u306A", + "/nakatakana": "\u30CA", + "/nakatakanahalfwidth": "\uFF85", + "/napostrophe": "\u0149", + "/nasquare": "\u3381", + "/nbopomofo": "\u310B", + "/nbspace": "\u00A0", + "/ncaron": "\u0148", + "/ncedilla": "\u0146", + "/ncircle": "\u24DD", + "/ncircumflexbelow": "\u1E4B", + "/ncommaaccent": "\u0146", + "/ndotaccent": "\u1E45", + "/ndotbelow": "\u1E47", + "/nehiragana": "\u306D", + "/nekatakana": "\u30CD", + "/nekatakanahalfwidth": "\uFF88", + "/newsheqelsign": "\u20AA", + "/nfsquare": "\u338B", + "/ngabengali": "\u0999", + "/ngadeva": "\u0919", + "/ngagujarati": "\u0A99", + "/ngagurmukhi": "\u0A19", + "/ngonguthai": "\u0E07", + "/nhiragana": "\u3093", + "/nhookleft": "\u0272", + "/nhookretroflex": "\u0273", + "/nieunacirclekorean": "\u326F", + "/nieunaparenkorean": "\u320F", + "/nieuncieuckorean": "\u3135", + "/nieuncirclekorean": "\u3261", + "/nieunhieuhkorean": "\u3136", + "/nieunkorean": "\u3134", + "/nieunpansioskorean": "\u3168", + "/nieunparenkorean": "\u3201", + "/nieunsioskorean": "\u3167", + "/nieuntikeutkorean": "\u3166", + "/nihiragana": "\u306B", + "/nikatakana": "\u30CB", + "/nikatakanahalfwidth": "\uFF86", + "/nikhahitleftthai": "\uF899", + "/nikhahitthai": "\u0E4D", + "/nine": "\u0039", + "/ninearabic": "\u0669", + "/ninebengali": "\u09EF", + "/ninecircle": "\u2468", + "/ninecircleinversesansserif": "\u2792", + "/ninedeva": "\u096F", + "/ninegujarati": "\u0AEF", + "/ninegurmukhi": "\u0A6F", + "/ninehackarabic": "\u0669", + "/ninehangzhou": "\u3029", + "/nineideographicparen": "\u3228", + "/nineinferior": "\u2089", + "/ninemonospace": "\uFF19", + "/nineoldstyle": "\uF739", + "/nineparen": "\u247C", + "/nineperiod": "\u2490", + "/ninepersian": "\u06F9", + "/nineroman": "\u2178", + "/ninesuperior": "\u2079", + "/nineteencircle": "\u2472", + "/nineteenparen": "\u2486", + "/nineteenperiod": "\u249A", + "/ninethai": "\u0E59", + "/nj": "\u01CC", + "/njecyrillic": "\u045A", + "/nkatakana": "\u30F3", + "/nkatakanahalfwidth": "\uFF9D", + "/nlegrightlong": "\u019E", + "/nlinebelow": "\u1E49", + "/nmonospace": "\uFF4E", + "/nmsquare": "\u339A", + "/nnabengali": "\u09A3", + "/nnadeva": "\u0923", + "/nnagujarati": "\u0AA3", + "/nnagurmukhi": "\u0A23", + "/nnnadeva": "\u0929", + "/nohiragana": "\u306E", + "/nokatakana": "\u30CE", + "/nokatakanahalfwidth": "\uFF89", + "/nonbreakingspace": "\u00A0", + "/nonenthai": "\u0E13", + "/nonuthai": "\u0E19", + "/noonarabic": "\u0646", + "/noonfinalarabic": "\uFEE6", + "/noonghunnaarabic": "\u06BA", + "/noonghunnafinalarabic": "\uFB9F", + "/noonhehinitialarabic": "\uFEE7 FEEC", + "/nooninitialarabic": "\uFEE7", + "/noonjeeminitialarabic": "\uFCD2", + "/noonjeemisolatedarabic": "\uFC4B", + "/noonmedialarabic": "\uFEE8", + "/noonmeeminitialarabic": "\uFCD5", + "/noonmeemisolatedarabic": "\uFC4E", + "/noonnoonfinalarabic": "\uFC8D", + "/notcontains": "\u220C", + "/notelement": "\u2209", + "/notelementof": "\u2209", + "/notequal": "\u2260", + "/notgreater": "\u226F", + "/notgreaternorequal": "\u2271", + "/notgreaternorless": "\u2279", + "/notidentical": "\u2262", + "/notless": "\u226E", + "/notlessnorequal": "\u2270", + "/notparallel": "\u2226", + "/notprecedes": "\u2280", + "/notsubset": "\u2284", + "/notsucceeds": "\u2281", + "/notsuperset": "\u2285", + "/nowarmenian": "\u0576", + "/nparen": "\u24A9", + "/nssquare": "\u33B1", + "/nsuperior": "\u207F", + "/ntilde": "\u00F1", + "/nu": "\u03BD", + "/nuhiragana": "\u306C", + "/nukatakana": "\u30CC", + "/nukatakanahalfwidth": "\uFF87", + "/nuktabengali": "\u09BC", + "/nuktadeva": "\u093C", + "/nuktagujarati": "\u0ABC", + "/nuktagurmukhi": "\u0A3C", + "/numbersign": "\u0023", + "/numbersignmonospace": "\uFF03", + "/numbersignsmall": "\uFE5F", + "/numeralsigngreek": "\u0374", + "/numeralsignlowergreek": "\u0375", + "/numero": "\u2116", + "/nun": "\u05E0", + "/nundagesh": "\uFB40", + "/nundageshhebrew": "\uFB40", + "/nunhebrew": "\u05E0", + "/nvsquare": "\u33B5", + "/nwsquare": "\u33BB", + "/nyabengali": "\u099E", + "/nyadeva": "\u091E", + "/nyagujarati": "\u0A9E", + "/nyagurmukhi": "\u0A1E", + "/o": "\u006F", + "/oacute": "\u00F3", + "/oangthai": "\u0E2D", + "/obarred": "\u0275", + "/obarredcyrillic": "\u04E9", + "/obarreddieresiscyrillic": "\u04EB", + "/obengali": "\u0993", + "/obopomofo": "\u311B", + "/obreve": "\u014F", + "/ocandradeva": "\u0911", + "/ocandragujarati": "\u0A91", + "/ocandravowelsigndeva": "\u0949", + "/ocandravowelsigngujarati": "\u0AC9", + "/ocaron": "\u01D2", + "/ocircle": "\u24DE", + "/ocircumflex": "\u00F4", + "/ocircumflexacute": "\u1ED1", + "/ocircumflexdotbelow": "\u1ED9", + "/ocircumflexgrave": "\u1ED3", + "/ocircumflexhookabove": "\u1ED5", + "/ocircumflextilde": "\u1ED7", + "/ocyrillic": "\u043E", + "/odblacute": "\u0151", + "/odblgrave": "\u020D", + "/odeva": "\u0913", + "/odieresis": "\u00F6", + "/odieresiscyrillic": "\u04E7", + "/odotbelow": "\u1ECD", + "/oe": "\u0153", + "/oekorean": "\u315A", + "/ogonek": "\u02DB", + "/ogonekcmb": "\u0328", + "/ograve": "\u00F2", + "/ogujarati": "\u0A93", + "/oharmenian": "\u0585", + "/ohiragana": "\u304A", + "/ohookabove": "\u1ECF", + "/ohorn": "\u01A1", + "/ohornacute": "\u1EDB", + "/ohorndotbelow": "\u1EE3", + "/ohorngrave": "\u1EDD", + "/ohornhookabove": "\u1EDF", + "/ohorntilde": "\u1EE1", + "/ohungarumlaut": "\u0151", + "/oi": "\u01A3", + "/oinvertedbreve": "\u020F", + "/okatakana": "\u30AA", + "/okatakanahalfwidth": "\uFF75", + "/okorean": "\u3157", + "/olehebrew": "\u05AB", + "/omacron": "\u014D", + "/omacronacute": "\u1E53", + "/omacrongrave": "\u1E51", + "/omdeva": "\u0950", + "/omega": "\u03C9", + "/omega1": "\u03D6", + "/omegacyrillic": "\u0461", + "/omegalatinclosed": "\u0277", + "/omegaroundcyrillic": "\u047B", + "/omegatitlocyrillic": "\u047D", + "/omegatonos": "\u03CE", + "/omgujarati": "\u0AD0", + "/omicron": "\u03BF", + "/omicrontonos": "\u03CC", + "/omonospace": "\uFF4F", + "/one": "\u0031", + "/onearabic": "\u0661", + "/onebengali": "\u09E7", + "/onecircle": "\u2460", + "/onecircleinversesansserif": "\u278A", + "/onedeva": "\u0967", + "/onedotenleader": "\u2024", + "/oneeighth": "\u215B", + "/onefitted": "\uF6DC", + "/onegujarati": "\u0AE7", + "/onegurmukhi": "\u0A67", + "/onehackarabic": "\u0661", + "/onehalf": "\u00BD", + "/onehangzhou": "\u3021", + "/oneideographicparen": "\u3220", + "/oneinferior": "\u2081", + "/onemonospace": "\uFF11", + "/onenumeratorbengali": "\u09F4", + "/oneoldstyle": "\uF731", + "/oneparen": "\u2474", + "/oneperiod": "\u2488", + "/onepersian": "\u06F1", + "/onequarter": "\u00BC", + "/oneroman": "\u2170", + "/onesuperior": "\u00B9", + "/onethai": "\u0E51", + "/onethird": "\u2153", + "/oogonek": "\u01EB", + "/oogonekmacron": "\u01ED", + "/oogurmukhi": "\u0A13", + "/oomatragurmukhi": "\u0A4B", + "/oopen": "\u0254", + "/oparen": "\u24AA", + "/openbullet": "\u25E6", + "/option": "\u2325", + "/ordfeminine": "\u00AA", + "/ordmasculine": "\u00BA", + "/orthogonal": "\u221F", + "/oshortdeva": "\u0912", + "/oshortvowelsigndeva": "\u094A", + "/oslash": "\u00F8", + "/oslashacute": "\u01FF", + "/osmallhiragana": "\u3049", + "/osmallkatakana": "\u30A9", + "/osmallkatakanahalfwidth": "\uFF6B", + "/ostrokeacute": "\u01FF", + "/osuperior": "\uF6F0", + "/otcyrillic": "\u047F", + "/otilde": "\u00F5", + "/otildeacute": "\u1E4D", + "/otildedieresis": "\u1E4F", + "/oubopomofo": "\u3121", + "/overline": "\u203E", + "/overlinecenterline": "\uFE4A", + "/overlinecmb": "\u0305", + "/overlinedashed": "\uFE49", + "/overlinedblwavy": "\uFE4C", + "/overlinewavy": "\uFE4B", + "/overscore": "\u00AF", + "/ovowelsignbengali": "\u09CB", + "/ovowelsigndeva": "\u094B", + "/ovowelsigngujarati": "\u0ACB", + "/p": "\u0070", + "/paampssquare": "\u3380", + "/paasentosquare": "\u332B", + "/pabengali": "\u09AA", + "/pacute": "\u1E55", + "/padeva": "\u092A", + "/pagedown": "\u21DF", + "/pageup": "\u21DE", + "/pagujarati": "\u0AAA", + "/pagurmukhi": "\u0A2A", + "/pahiragana": "\u3071", + "/paiyannoithai": "\u0E2F", + "/pakatakana": "\u30D1", + "/palatalizationcyrilliccmb": "\u0484", + "/palochkacyrillic": "\u04C0", + "/pansioskorean": "\u317F", + "/paragraph": "\u00B6", + "/parallel": "\u2225", + "/parenleft": "\u0028", + "/parenleftaltonearabic": "\uFD3E", + "/parenleftbt": "\uF8ED", + "/parenleftex": "\uF8EC", + "/parenleftinferior": "\u208D", + "/parenleftmonospace": "\uFF08", + "/parenleftsmall": "\uFE59", + "/parenleftsuperior": "\u207D", + "/parenlefttp": "\uF8EB", + "/parenleftvertical": "\uFE35", + "/parenright": "\u0029", + "/parenrightaltonearabic": "\uFD3F", + "/parenrightbt": "\uF8F8", + "/parenrightex": "\uF8F7", + "/parenrightinferior": "\u208E", + "/parenrightmonospace": "\uFF09", + "/parenrightsmall": "\uFE5A", + "/parenrightsuperior": "\u207E", + "/parenrighttp": "\uF8F6", + "/parenrightvertical": "\uFE36", + "/partialdiff": "\u2202", + "/paseqhebrew": "\u05C0", + "/pashtahebrew": "\u0599", + "/pasquare": "\u33A9", + "/patah": "\u05B7", + "/patah11": "\u05B7", + "/patah1d": "\u05B7", + "/patah2a": "\u05B7", + "/patahhebrew": "\u05B7", + "/patahnarrowhebrew": "\u05B7", + "/patahquarterhebrew": "\u05B7", + "/patahwidehebrew": "\u05B7", + "/pazerhebrew": "\u05A1", + "/pbopomofo": "\u3106", + "/pcircle": "\u24DF", + "/pdotaccent": "\u1E57", + "/pe": "\u05E4", + "/pecyrillic": "\u043F", + "/pedagesh": "\uFB44", + "/pedageshhebrew": "\uFB44", + "/peezisquare": "\u333B", + "/pefinaldageshhebrew": "\uFB43", + "/peharabic": "\u067E", + "/peharmenian": "\u057A", + "/pehebrew": "\u05E4", + "/pehfinalarabic": "\uFB57", + "/pehinitialarabic": "\uFB58", + "/pehiragana": "\u307A", + "/pehmedialarabic": "\uFB59", + "/pekatakana": "\u30DA", + "/pemiddlehookcyrillic": "\u04A7", + "/perafehebrew": "\uFB4E", + "/percent": "\u0025", + "/percentarabic": "\u066A", + "/percentmonospace": "\uFF05", + "/percentsmall": "\uFE6A", + "/period": "\u002E", + "/periodarmenian": "\u0589", + "/periodcentered": "\u00B7", + "/periodhalfwidth": "\uFF61", + "/periodinferior": "\uF6E7", + "/periodmonospace": "\uFF0E", + "/periodsmall": "\uFE52", + "/periodsuperior": "\uF6E8", + "/perispomenigreekcmb": "\u0342", + "/perpendicular": "\u22A5", + "/perthousand": "\u2030", + "/peseta": "\u20A7", + "/pfsquare": "\u338A", + "/phabengali": "\u09AB", + "/phadeva": "\u092B", + "/phagujarati": "\u0AAB", + "/phagurmukhi": "\u0A2B", + "/phi": "\u03C6", + "/phi1": "\u03D5", + "/phieuphacirclekorean": "\u327A", + "/phieuphaparenkorean": "\u321A", + "/phieuphcirclekorean": "\u326C", + "/phieuphkorean": "\u314D", + "/phieuphparenkorean": "\u320C", + "/philatin": "\u0278", + "/phinthuthai": "\u0E3A", + "/phisymbolgreek": "\u03D5", + "/phook": "\u01A5", + "/phophanthai": "\u0E1E", + "/phophungthai": "\u0E1C", + "/phosamphaothai": "\u0E20", + "/pi": "\u03C0", + "/pieupacirclekorean": "\u3273", + "/pieupaparenkorean": "\u3213", + "/pieupcieuckorean": "\u3176", + "/pieupcirclekorean": "\u3265", + "/pieupkiyeokkorean": "\u3172", + "/pieupkorean": "\u3142", + "/pieupparenkorean": "\u3205", + "/pieupsioskiyeokkorean": "\u3174", + "/pieupsioskorean": "\u3144", + "/pieupsiostikeutkorean": "\u3175", + "/pieupthieuthkorean": "\u3177", + "/pieuptikeutkorean": "\u3173", + "/pihiragana": "\u3074", + "/pikatakana": "\u30D4", + "/pisymbolgreek": "\u03D6", + "/piwrarmenian": "\u0583", + "/plus": "\u002B", + "/plusbelowcmb": "\u031F", + "/pluscircle": "\u2295", + "/plusminus": "\u00B1", + "/plusmod": "\u02D6", + "/plusmonospace": "\uFF0B", + "/plussmall": "\uFE62", + "/plussuperior": "\u207A", + "/pmonospace": "\uFF50", + "/pmsquare": "\u33D8", + "/pohiragana": "\u307D", + "/pointingindexdownwhite": "\u261F", + "/pointingindexleftwhite": "\u261C", + "/pointingindexrightwhite": "\u261E", + "/pointingindexupwhite": "\u261D", + "/pokatakana": "\u30DD", + "/poplathai": "\u0E1B", + "/postalmark": "\u3012", + "/postalmarkface": "\u3020", + "/pparen": "\u24AB", + "/precedes": "\u227A", + "/prescription": "\u211E", + "/primemod": "\u02B9", + "/primereversed": "\u2035", + "/product": "\u220F", + "/projective": "\u2305", + "/prolongedkana": "\u30FC", + "/propellor": "\u2318", + "/propersubset": "\u2282", + "/propersuperset": "\u2283", + "/proportion": "\u2237", + "/proportional": "\u221D", + "/psi": "\u03C8", + "/psicyrillic": "\u0471", + "/psilipneumatacyrilliccmb": "\u0486", + "/pssquare": "\u33B0", + "/puhiragana": "\u3077", + "/pukatakana": "\u30D7", + "/pvsquare": "\u33B4", + "/pwsquare": "\u33BA", + "/q": "\u0071", + "/qadeva": "\u0958", + "/qadmahebrew": "\u05A8", + "/qafarabic": "\u0642", + "/qaffinalarabic": "\uFED6", + "/qafinitialarabic": "\uFED7", + "/qafmedialarabic": "\uFED8", + "/qamats": "\u05B8", + "/qamats10": "\u05B8", + "/qamats1a": "\u05B8", + "/qamats1c": "\u05B8", + "/qamats27": "\u05B8", + "/qamats29": "\u05B8", + "/qamats33": "\u05B8", + "/qamatsde": "\u05B8", + "/qamatshebrew": "\u05B8", + "/qamatsnarrowhebrew": "\u05B8", + "/qamatsqatanhebrew": "\u05B8", + "/qamatsqatannarrowhebrew": "\u05B8", + "/qamatsqatanquarterhebrew": "\u05B8", + "/qamatsqatanwidehebrew": "\u05B8", + "/qamatsquarterhebrew": "\u05B8", + "/qamatswidehebrew": "\u05B8", + "/qarneyparahebrew": "\u059F", + "/qbopomofo": "\u3111", + "/qcircle": "\u24E0", + "/qhook": "\u02A0", + "/qmonospace": "\uFF51", + "/qof": "\u05E7", + "/qofdagesh": "\uFB47", + "/qofdageshhebrew": "\uFB47", + "/qofhatafpatah": "\u05E7 05B2", + "/qofhatafpatahhebrew": "\u05E7 05B2", + "/qofhatafsegol": "\u05E7 05B1", + "/qofhatafsegolhebrew": "\u05E7 05B1", + "/qofhebrew": "\u05E7", + "/qofhiriq": "\u05E7 05B4", + "/qofhiriqhebrew": "\u05E7 05B4", + "/qofholam": "\u05E7 05B9", + "/qofholamhebrew": "\u05E7 05B9", + "/qofpatah": "\u05E7 05B7", + "/qofpatahhebrew": "\u05E7 05B7", + "/qofqamats": "\u05E7 05B8", + "/qofqamatshebrew": "\u05E7 05B8", + "/qofqubuts": "\u05E7 05BB", + "/qofqubutshebrew": "\u05E7 05BB", + "/qofsegol": "\u05E7 05B6", + "/qofsegolhebrew": "\u05E7 05B6", + "/qofsheva": "\u05E7 05B0", + "/qofshevahebrew": "\u05E7 05B0", + "/qoftsere": "\u05E7 05B5", + "/qoftserehebrew": "\u05E7 05B5", + "/qparen": "\u24AC", + "/quarternote": "\u2669", + "/qubuts": "\u05BB", + "/qubuts18": "\u05BB", + "/qubuts25": "\u05BB", + "/qubuts31": "\u05BB", + "/qubutshebrew": "\u05BB", + "/qubutsnarrowhebrew": "\u05BB", + "/qubutsquarterhebrew": "\u05BB", + "/qubutswidehebrew": "\u05BB", + "/question": "\u003F", + "/questionarabic": "\u061F", + "/questionarmenian": "\u055E", + "/questiondown": "\u00BF", + "/questiondownsmall": "\uF7BF", + "/questiongreek": "\u037E", + "/questionmonospace": "\uFF1F", + "/questionsmall": "\uF73F", + "/quotedbl": "\u0022", + "/quotedblbase": "\u201E", + "/quotedblleft": "\u201C", + "/quotedblmonospace": "\uFF02", + "/quotedblprime": "\u301E", + "/quotedblprimereversed": "\u301D", + "/quotedblright": "\u201D", + "/quoteleft": "\u2018", + "/quoteleftreversed": "\u201B", + "/quotereversed": "\u201B", + "/quoteright": "\u2019", + "/quoterightn": "\u0149", + "/quotesinglbase": "\u201A", + "/quotesingle": "\u0027", + "/quotesinglemonospace": "\uFF07", + "/r": "\u0072", + "/raarmenian": "\u057C", + "/rabengali": "\u09B0", + "/racute": "\u0155", + "/radeva": "\u0930", + "/radical": "\u221A", + "/radicalex": "\uF8E5", + "/radoverssquare": "\u33AE", + "/radoverssquaredsquare": "\u33AF", + "/radsquare": "\u33AD", + "/rafe": "\u05BF", + "/rafehebrew": "\u05BF", + "/ragujarati": "\u0AB0", + "/ragurmukhi": "\u0A30", + "/rahiragana": "\u3089", + "/rakatakana": "\u30E9", + "/rakatakanahalfwidth": "\uFF97", + "/ralowerdiagonalbengali": "\u09F1", + "/ramiddlediagonalbengali": "\u09F0", + "/ramshorn": "\u0264", + "/ratio": "\u2236", + "/rbopomofo": "\u3116", + "/rcaron": "\u0159", + "/rcedilla": "\u0157", + "/rcircle": "\u24E1", + "/rcommaaccent": "\u0157", + "/rdblgrave": "\u0211", + "/rdotaccent": "\u1E59", + "/rdotbelow": "\u1E5B", + "/rdotbelowmacron": "\u1E5D", + "/referencemark": "\u203B", + "/reflexsubset": "\u2286", + "/reflexsuperset": "\u2287", + "/registered": "\u00AE", + "/registersans": "\uF8E8", + "/registerserif": "\uF6DA", + "/reharabic": "\u0631", + "/reharmenian": "\u0580", + "/rehfinalarabic": "\uFEAE", + "/rehiragana": "\u308C", + "/rehyehaleflamarabic": "\u0631 FEF3 FE8E 0644", + "/rekatakana": "\u30EC", + "/rekatakanahalfwidth": "\uFF9A", + "/resh": "\u05E8", + "/reshdageshhebrew": "\uFB48", + "/reshhatafpatah": "\u05E8 05B2", + "/reshhatafpatahhebrew": "\u05E8 05B2", + "/reshhatafsegol": "\u05E8 05B1", + "/reshhatafsegolhebrew": "\u05E8 05B1", + "/reshhebrew": "\u05E8", + "/reshhiriq": "\u05E8 05B4", + "/reshhiriqhebrew": "\u05E8 05B4", + "/reshholam": "\u05E8 05B9", + "/reshholamhebrew": "\u05E8 05B9", + "/reshpatah": "\u05E8 05B7", + "/reshpatahhebrew": "\u05E8 05B7", + "/reshqamats": "\u05E8 05B8", + "/reshqamatshebrew": "\u05E8 05B8", + "/reshqubuts": "\u05E8 05BB", + "/reshqubutshebrew": "\u05E8 05BB", + "/reshsegol": "\u05E8 05B6", + "/reshsegolhebrew": "\u05E8 05B6", + "/reshsheva": "\u05E8 05B0", + "/reshshevahebrew": "\u05E8 05B0", + "/reshtsere": "\u05E8 05B5", + "/reshtserehebrew": "\u05E8 05B5", + "/reversedtilde": "\u223D", + "/reviahebrew": "\u0597", + "/reviamugrashhebrew": "\u0597", + "/revlogicalnot": "\u2310", + "/rfishhook": "\u027E", + "/rfishhookreversed": "\u027F", + "/rhabengali": "\u09DD", + "/rhadeva": "\u095D", + "/rho": "\u03C1", + "/rhook": "\u027D", + "/rhookturned": "\u027B", + "/rhookturnedsuperior": "\u02B5", + "/rhosymbolgreek": "\u03F1", + "/rhotichookmod": "\u02DE", + "/rieulacirclekorean": "\u3271", + "/rieulaparenkorean": "\u3211", + "/rieulcirclekorean": "\u3263", + "/rieulhieuhkorean": "\u3140", + "/rieulkiyeokkorean": "\u313A", + "/rieulkiyeoksioskorean": "\u3169", + "/rieulkorean": "\u3139", + "/rieulmieumkorean": "\u313B", + "/rieulpansioskorean": "\u316C", + "/rieulparenkorean": "\u3203", + "/rieulphieuphkorean": "\u313F", + "/rieulpieupkorean": "\u313C", + "/rieulpieupsioskorean": "\u316B", + "/rieulsioskorean": "\u313D", + "/rieulthieuthkorean": "\u313E", + "/rieultikeutkorean": "\u316A", + "/rieulyeorinhieuhkorean": "\u316D", + "/rightangle": "\u221F", + "/righttackbelowcmb": "\u0319", + "/righttriangle": "\u22BF", + "/rihiragana": "\u308A", + "/rikatakana": "\u30EA", + "/rikatakanahalfwidth": "\uFF98", + "/ring": "\u02DA", + "/ringbelowcmb": "\u0325", + "/ringcmb": "\u030A", + "/ringhalfleft": "\u02BF", + "/ringhalfleftarmenian": "\u0559", + "/ringhalfleftbelowcmb": "\u031C", + "/ringhalfleftcentered": "\u02D3", + "/ringhalfright": "\u02BE", + "/ringhalfrightbelowcmb": "\u0339", + "/ringhalfrightcentered": "\u02D2", + "/rinvertedbreve": "\u0213", + "/rittorusquare": "\u3351", + "/rlinebelow": "\u1E5F", + "/rlongleg": "\u027C", + "/rlonglegturned": "\u027A", + "/rmonospace": "\uFF52", + "/rohiragana": "\u308D", + "/rokatakana": "\u30ED", + "/rokatakanahalfwidth": "\uFF9B", + "/roruathai": "\u0E23", + "/rparen": "\u24AD", + "/rrabengali": "\u09DC", + "/rradeva": "\u0931", + "/rragurmukhi": "\u0A5C", + "/rreharabic": "\u0691", + "/rrehfinalarabic": "\uFB8D", + "/rrvocalicbengali": "\u09E0", + "/rrvocalicdeva": "\u0960", + "/rrvocalicgujarati": "\u0AE0", + "/rrvocalicvowelsignbengali": "\u09C4", + "/rrvocalicvowelsigndeva": "\u0944", + "/rrvocalicvowelsigngujarati": "\u0AC4", + "/rsuperior": "\uF6F1", + "/rtblock": "\u2590", + "/rturned": "\u0279", + "/rturnedsuperior": "\u02B4", + "/ruhiragana": "\u308B", + "/rukatakana": "\u30EB", + "/rukatakanahalfwidth": "\uFF99", + "/rupeemarkbengali": "\u09F2", + "/rupeesignbengali": "\u09F3", + "/rupiah": "\uF6DD", + "/ruthai": "\u0E24", + "/rvocalicbengali": "\u098B", + "/rvocalicdeva": "\u090B", + "/rvocalicgujarati": "\u0A8B", + "/rvocalicvowelsignbengali": "\u09C3", + "/rvocalicvowelsigndeva": "\u0943", + "/rvocalicvowelsigngujarati": "\u0AC3", + "/s": "\u0073", + "/sabengali": "\u09B8", + "/sacute": "\u015B", + "/sacutedotaccent": "\u1E65", + "/sadarabic": "\u0635", + "/sadeva": "\u0938", + "/sadfinalarabic": "\uFEBA", + "/sadinitialarabic": "\uFEBB", + "/sadmedialarabic": "\uFEBC", + "/sagujarati": "\u0AB8", + "/sagurmukhi": "\u0A38", + "/sahiragana": "\u3055", + "/sakatakana": "\u30B5", + "/sakatakanahalfwidth": "\uFF7B", + "/sallallahoualayhewasallamarabic": "\uFDFA", + "/samekh": "\u05E1", + "/samekhdagesh": "\uFB41", + "/samekhdageshhebrew": "\uFB41", + "/samekhhebrew": "\u05E1", + "/saraaathai": "\u0E32", + "/saraaethai": "\u0E41", + "/saraaimaimalaithai": "\u0E44", + "/saraaimaimuanthai": "\u0E43", + "/saraamthai": "\u0E33", + "/saraathai": "\u0E30", + "/saraethai": "\u0E40", + "/saraiileftthai": "\uF886", + "/saraiithai": "\u0E35", + "/saraileftthai": "\uF885", + "/saraithai": "\u0E34", + "/saraothai": "\u0E42", + "/saraueeleftthai": "\uF888", + "/saraueethai": "\u0E37", + "/saraueleftthai": "\uF887", + "/sarauethai": "\u0E36", + "/sarauthai": "\u0E38", + "/sarauuthai": "\u0E39", + "/sbopomofo": "\u3119", + "/scaron": "\u0161", + "/scarondotaccent": "\u1E67", + "/scedilla": "\u015F", + "/schwa": "\u0259", + "/schwacyrillic": "\u04D9", + "/schwadieresiscyrillic": "\u04DB", + "/schwahook": "\u025A", + "/scircle": "\u24E2", + "/scircumflex": "\u015D", + "/scommaaccent": "\u0219", + "/sdotaccent": "\u1E61", + "/sdotbelow": "\u1E63", + "/sdotbelowdotaccent": "\u1E69", + "/seagullbelowcmb": "\u033C", + "/second": "\u2033", + "/secondtonechinese": "\u02CA", + "/section": "\u00A7", + "/seenarabic": "\u0633", + "/seenfinalarabic": "\uFEB2", + "/seeninitialarabic": "\uFEB3", + "/seenmedialarabic": "\uFEB4", + "/segol": "\u05B6", + "/segol13": "\u05B6", + "/segol1f": "\u05B6", + "/segol2c": "\u05B6", + "/segolhebrew": "\u05B6", + "/segolnarrowhebrew": "\u05B6", + "/segolquarterhebrew": "\u05B6", + "/segoltahebrew": "\u0592", + "/segolwidehebrew": "\u05B6", + "/seharmenian": "\u057D", + "/sehiragana": "\u305B", + "/sekatakana": "\u30BB", + "/sekatakanahalfwidth": "\uFF7E", + "/semicolon": "\u003B", + "/semicolonarabic": "\u061B", + "/semicolonmonospace": "\uFF1B", + "/semicolonsmall": "\uFE54", + "/semivoicedmarkkana": "\u309C", + "/semivoicedmarkkanahalfwidth": "\uFF9F", + "/sentisquare": "\u3322", + "/sentosquare": "\u3323", + "/seven": "\u0037", + "/sevenarabic": "\u0667", + "/sevenbengali": "\u09ED", + "/sevencircle": "\u2466", + "/sevencircleinversesansserif": "\u2790", + "/sevendeva": "\u096D", + "/seveneighths": "\u215E", + "/sevengujarati": "\u0AED", + "/sevengurmukhi": "\u0A6D", + "/sevenhackarabic": "\u0667", + "/sevenhangzhou": "\u3027", + "/sevenideographicparen": "\u3226", + "/seveninferior": "\u2087", + "/sevenmonospace": "\uFF17", + "/sevenoldstyle": "\uF737", + "/sevenparen": "\u247A", + "/sevenperiod": "\u248E", + "/sevenpersian": "\u06F7", + "/sevenroman": "\u2176", + "/sevensuperior": "\u2077", + "/seventeencircle": "\u2470", + "/seventeenparen": "\u2484", + "/seventeenperiod": "\u2498", + "/seventhai": "\u0E57", + "/sfthyphen": "\u00AD", + "/shaarmenian": "\u0577", + "/shabengali": "\u09B6", + "/shacyrillic": "\u0448", + "/shaddaarabic": "\u0651", + "/shaddadammaarabic": "\uFC61", + "/shaddadammatanarabic": "\uFC5E", + "/shaddafathaarabic": "\uFC60", + "/shaddafathatanarabic": "\u0651 064B", + "/shaddakasraarabic": "\uFC62", + "/shaddakasratanarabic": "\uFC5F", + "/shade": "\u2592", + "/shadedark": "\u2593", + "/shadelight": "\u2591", + "/shademedium": "\u2592", + "/shadeva": "\u0936", + "/shagujarati": "\u0AB6", + "/shagurmukhi": "\u0A36", + "/shalshelethebrew": "\u0593", + "/shbopomofo": "\u3115", + "/shchacyrillic": "\u0449", + "/sheenarabic": "\u0634", + "/sheenfinalarabic": "\uFEB6", + "/sheeninitialarabic": "\uFEB7", + "/sheenmedialarabic": "\uFEB8", + "/sheicoptic": "\u03E3", + "/sheqel": "\u20AA", + "/sheqelhebrew": "\u20AA", + "/sheva": "\u05B0", + "/sheva115": "\u05B0", + "/sheva15": "\u05B0", + "/sheva22": "\u05B0", + "/sheva2e": "\u05B0", + "/shevahebrew": "\u05B0", + "/shevanarrowhebrew": "\u05B0", + "/shevaquarterhebrew": "\u05B0", + "/shevawidehebrew": "\u05B0", + "/shhacyrillic": "\u04BB", + "/shimacoptic": "\u03ED", + "/shin": "\u05E9", + "/shindagesh": "\uFB49", + "/shindageshhebrew": "\uFB49", + "/shindageshshindot": "\uFB2C", + "/shindageshshindothebrew": "\uFB2C", + "/shindageshsindot": "\uFB2D", + "/shindageshsindothebrew": "\uFB2D", + "/shindothebrew": "\u05C1", + "/shinhebrew": "\u05E9", + "/shinshindot": "\uFB2A", + "/shinshindothebrew": "\uFB2A", + "/shinsindot": "\uFB2B", + "/shinsindothebrew": "\uFB2B", + "/shook": "\u0282", + "/sigma": "\u03C3", + "/sigma1": "\u03C2", + "/sigmafinal": "\u03C2", + "/sigmalunatesymbolgreek": "\u03F2", + "/sihiragana": "\u3057", + "/sikatakana": "\u30B7", + "/sikatakanahalfwidth": "\uFF7C", + "/siluqhebrew": "\u05BD", + "/siluqlefthebrew": "\u05BD", + "/similar": "\u223C", + "/sindothebrew": "\u05C2", + "/siosacirclekorean": "\u3274", + "/siosaparenkorean": "\u3214", + "/sioscieuckorean": "\u317E", + "/sioscirclekorean": "\u3266", + "/sioskiyeokkorean": "\u317A", + "/sioskorean": "\u3145", + "/siosnieunkorean": "\u317B", + "/siosparenkorean": "\u3206", + "/siospieupkorean": "\u317D", + "/siostikeutkorean": "\u317C", + "/six": "\u0036", + "/sixarabic": "\u0666", + "/sixbengali": "\u09EC", + "/sixcircle": "\u2465", + "/sixcircleinversesansserif": "\u278F", + "/sixdeva": "\u096C", + "/sixgujarati": "\u0AEC", + "/sixgurmukhi": "\u0A6C", + "/sixhackarabic": "\u0666", + "/sixhangzhou": "\u3026", + "/sixideographicparen": "\u3225", + "/sixinferior": "\u2086", + "/sixmonospace": "\uFF16", + "/sixoldstyle": "\uF736", + "/sixparen": "\u2479", + "/sixperiod": "\u248D", + "/sixpersian": "\u06F6", + "/sixroman": "\u2175", + "/sixsuperior": "\u2076", + "/sixteencircle": "\u246F", + "/sixteencurrencydenominatorbengali": "\u09F9", + "/sixteenparen": "\u2483", + "/sixteenperiod": "\u2497", + "/sixthai": "\u0E56", + "/slash": "\u002F", + "/slashmonospace": "\uFF0F", + "/slong": "\u017F", + "/slongdotaccent": "\u1E9B", + "/smileface": "\u263A", + "/smonospace": "\uFF53", + "/sofpasuqhebrew": "\u05C3", + "/softhyphen": "\u00AD", + "/softsigncyrillic": "\u044C", + "/sohiragana": "\u305D", + "/sokatakana": "\u30BD", + "/sokatakanahalfwidth": "\uFF7F", + "/soliduslongoverlaycmb": "\u0338", + "/solidusshortoverlaycmb": "\u0337", + "/sorusithai": "\u0E29", + "/sosalathai": "\u0E28", + "/sosothai": "\u0E0B", + "/sosuathai": "\u0E2A", + "/space": "\u0020", + "/spacehackarabic": "\u0020", + "/spade": "\u2660", + "/spadesuitblack": "\u2660", + "/spadesuitwhite": "\u2664", + "/sparen": "\u24AE", + "/squarebelowcmb": "\u033B", + "/squarecc": "\u33C4", + "/squarecm": "\u339D", + "/squarediagonalcrosshatchfill": "\u25A9", + "/squarehorizontalfill": "\u25A4", + "/squarekg": "\u338F", + "/squarekm": "\u339E", + "/squarekmcapital": "\u33CE", + "/squareln": "\u33D1", + "/squarelog": "\u33D2", + "/squaremg": "\u338E", + "/squaremil": "\u33D5", + "/squaremm": "\u339C", + "/squaremsquared": "\u33A1", + "/squareorthogonalcrosshatchfill": "\u25A6", + "/squareupperlefttolowerrightfill": "\u25A7", + "/squareupperrighttolowerleftfill": "\u25A8", + "/squareverticalfill": "\u25A5", + "/squarewhitewithsmallblack": "\u25A3", + "/srsquare": "\u33DB", + "/ssabengali": "\u09B7", + "/ssadeva": "\u0937", + "/ssagujarati": "\u0AB7", + "/ssangcieuckorean": "\u3149", + "/ssanghieuhkorean": "\u3185", + "/ssangieungkorean": "\u3180", + "/ssangkiyeokkorean": "\u3132", + "/ssangnieunkorean": "\u3165", + "/ssangpieupkorean": "\u3143", + "/ssangsioskorean": "\u3146", + "/ssangtikeutkorean": "\u3138", + "/ssuperior": "\uF6F2", + "/sterling": "\u00A3", + "/sterlingmonospace": "\uFFE1", + "/strokelongoverlaycmb": "\u0336", + "/strokeshortoverlaycmb": "\u0335", + "/subset": "\u2282", + "/subsetnotequal": "\u228A", + "/subsetorequal": "\u2286", + "/succeeds": "\u227B", + "/suchthat": "\u220B", + "/suhiragana": "\u3059", + "/sukatakana": "\u30B9", + "/sukatakanahalfwidth": "\uFF7D", + "/sukunarabic": "\u0652", + "/summation": "\u2211", + "/sun": "\u263C", + "/superset": "\u2283", + "/supersetnotequal": "\u228B", + "/supersetorequal": "\u2287", + "/svsquare": "\u33DC", + "/syouwaerasquare": "\u337C", + "/t": "\u0074", + "/tabengali": "\u09A4", + "/tackdown": "\u22A4", + "/tackleft": "\u22A3", + "/tadeva": "\u0924", + "/tagujarati": "\u0AA4", + "/tagurmukhi": "\u0A24", + "/taharabic": "\u0637", + "/tahfinalarabic": "\uFEC2", + "/tahinitialarabic": "\uFEC3", + "/tahiragana": "\u305F", + "/tahmedialarabic": "\uFEC4", + "/taisyouerasquare": "\u337D", + "/takatakana": "\u30BF", + "/takatakanahalfwidth": "\uFF80", + "/tatweelarabic": "\u0640", + "/tau": "\u03C4", + "/tav": "\u05EA", + "/tavdages": "\uFB4A", + "/tavdagesh": "\uFB4A", + "/tavdageshhebrew": "\uFB4A", + "/tavhebrew": "\u05EA", + "/tbar": "\u0167", + "/tbopomofo": "\u310A", + "/tcaron": "\u0165", + "/tccurl": "\u02A8", + "/tcedilla": "\u0163", + "/tcheharabic": "\u0686", + "/tchehfinalarabic": "\uFB7B", + "/tchehinitialarabic": "\uFB7C", + "/tchehmedialarabic": "\uFB7D", + "/tchehmeeminitialarabic": "\uFB7C FEE4", + "/tcircle": "\u24E3", + "/tcircumflexbelow": "\u1E71", + "/tcommaaccent": "\u0163", + "/tdieresis": "\u1E97", + "/tdotaccent": "\u1E6B", + "/tdotbelow": "\u1E6D", + "/tecyrillic": "\u0442", + "/tedescendercyrillic": "\u04AD", + "/teharabic": "\u062A", + "/tehfinalarabic": "\uFE96", + "/tehhahinitialarabic": "\uFCA2", + "/tehhahisolatedarabic": "\uFC0C", + "/tehinitialarabic": "\uFE97", + "/tehiragana": "\u3066", + "/tehjeeminitialarabic": "\uFCA1", + "/tehjeemisolatedarabic": "\uFC0B", + "/tehmarbutaarabic": "\u0629", + "/tehmarbutafinalarabic": "\uFE94", + "/tehmedialarabic": "\uFE98", + "/tehmeeminitialarabic": "\uFCA4", + "/tehmeemisolatedarabic": "\uFC0E", + "/tehnoonfinalarabic": "\uFC73", + "/tekatakana": "\u30C6", + "/tekatakanahalfwidth": "\uFF83", + "/telephone": "\u2121", + "/telephoneblack": "\u260E", + "/telishagedolahebrew": "\u05A0", + "/telishaqetanahebrew": "\u05A9", + "/tencircle": "\u2469", + "/tenideographicparen": "\u3229", + "/tenparen": "\u247D", + "/tenperiod": "\u2491", + "/tenroman": "\u2179", + "/tesh": "\u02A7", + "/tet": "\u05D8", + "/tetdagesh": "\uFB38", + "/tetdageshhebrew": "\uFB38", + "/tethebrew": "\u05D8", + "/tetsecyrillic": "\u04B5", + "/tevirhebrew": "\u059B", + "/tevirlefthebrew": "\u059B", + "/thabengali": "\u09A5", + "/thadeva": "\u0925", + "/thagujarati": "\u0AA5", + "/thagurmukhi": "\u0A25", + "/thalarabic": "\u0630", + "/thalfinalarabic": "\uFEAC", + "/thanthakhatlowleftthai": "\uF898", + "/thanthakhatlowrightthai": "\uF897", + "/thanthakhatthai": "\u0E4C", + "/thanthakhatupperleftthai": "\uF896", + "/theharabic": "\u062B", + "/thehfinalarabic": "\uFE9A", + "/thehinitialarabic": "\uFE9B", + "/thehmedialarabic": "\uFE9C", + "/thereexists": "\u2203", + "/therefore": "\u2234", + "/theta": "\u03B8", + "/theta1": "\u03D1", + "/thetasymbolgreek": "\u03D1", + "/thieuthacirclekorean": "\u3279", + "/thieuthaparenkorean": "\u3219", + "/thieuthcirclekorean": "\u326B", + "/thieuthkorean": "\u314C", + "/thieuthparenkorean": "\u320B", + "/thirteencircle": "\u246C", + "/thirteenparen": "\u2480", + "/thirteenperiod": "\u2494", + "/thonangmonthothai": "\u0E11", + "/thook": "\u01AD", + "/thophuthaothai": "\u0E12", + "/thorn": "\u00FE", + "/thothahanthai": "\u0E17", + "/thothanthai": "\u0E10", + "/thothongthai": "\u0E18", + "/thothungthai": "\u0E16", + "/thousandcyrillic": "\u0482", + "/thousandsseparatorarabic": "\u066C", + "/thousandsseparatorpersian": "\u066C", + "/three": "\u0033", + "/threearabic": "\u0663", + "/threebengali": "\u09E9", + "/threecircle": "\u2462", + "/threecircleinversesansserif": "\u278C", + "/threedeva": "\u0969", + "/threeeighths": "\u215C", + "/threegujarati": "\u0AE9", + "/threegurmukhi": "\u0A69", + "/threehackarabic": "\u0663", + "/threehangzhou": "\u3023", + "/threeideographicparen": "\u3222", + "/threeinferior": "\u2083", + "/threemonospace": "\uFF13", + "/threenumeratorbengali": "\u09F6", + "/threeoldstyle": "\uF733", + "/threeparen": "\u2476", + "/threeperiod": "\u248A", + "/threepersian": "\u06F3", + "/threequarters": "\u00BE", + "/threequartersemdash": "\uF6DE", + "/threeroman": "\u2172", + "/threesuperior": "\u00B3", + "/threethai": "\u0E53", + "/thzsquare": "\u3394", + "/tihiragana": "\u3061", + "/tikatakana": "\u30C1", + "/tikatakanahalfwidth": "\uFF81", + "/tikeutacirclekorean": "\u3270", + "/tikeutaparenkorean": "\u3210", + "/tikeutcirclekorean": "\u3262", + "/tikeutkorean": "\u3137", + "/tikeutparenkorean": "\u3202", + "/tilde": "\u02DC", + "/tildebelowcmb": "\u0330", + "/tildecmb": "\u0303", + "/tildecomb": "\u0303", + "/tildedoublecmb": "\u0360", + "/tildeoperator": "\u223C", + "/tildeoverlaycmb": "\u0334", + "/tildeverticalcmb": "\u033E", + "/timescircle": "\u2297", + "/tipehahebrew": "\u0596", + "/tipehalefthebrew": "\u0596", + "/tippigurmukhi": "\u0A70", + "/titlocyrilliccmb": "\u0483", + "/tiwnarmenian": "\u057F", + "/tlinebelow": "\u1E6F", + "/tmonospace": "\uFF54", + "/toarmenian": "\u0569", + "/tohiragana": "\u3068", + "/tokatakana": "\u30C8", + "/tokatakanahalfwidth": "\uFF84", + "/tonebarextrahighmod": "\u02E5", + "/tonebarextralowmod": "\u02E9", + "/tonebarhighmod": "\u02E6", + "/tonebarlowmod": "\u02E8", + "/tonebarmidmod": "\u02E7", + "/tonefive": "\u01BD", + "/tonesix": "\u0185", + "/tonetwo": "\u01A8", + "/tonos": "\u0384", + "/tonsquare": "\u3327", + "/topatakthai": "\u0E0F", + "/tortoiseshellbracketleft": "\u3014", + "/tortoiseshellbracketleftsmall": "\uFE5D", + "/tortoiseshellbracketleftvertical": "\uFE39", + "/tortoiseshellbracketright": "\u3015", + "/tortoiseshellbracketrightsmall": "\uFE5E", + "/tortoiseshellbracketrightvertical": "\uFE3A", + "/totaothai": "\u0E15", + "/tpalatalhook": "\u01AB", + "/tparen": "\u24AF", + "/trademark": "\u2122", + "/trademarksans": "\uF8EA", + "/trademarkserif": "\uF6DB", + "/tretroflexhook": "\u0288", + "/triagdn": "\u25BC", + "/triaglf": "\u25C4", + "/triagrt": "\u25BA", + "/triagup": "\u25B2", + "/ts": "\u02A6", + "/tsadi": "\u05E6", + "/tsadidagesh": "\uFB46", + "/tsadidageshhebrew": "\uFB46", + "/tsadihebrew": "\u05E6", + "/tsecyrillic": "\u0446", + "/tsere": "\u05B5", + "/tsere12": "\u05B5", + "/tsere1e": "\u05B5", + "/tsere2b": "\u05B5", + "/tserehebrew": "\u05B5", + "/tserenarrowhebrew": "\u05B5", + "/tserequarterhebrew": "\u05B5", + "/tserewidehebrew": "\u05B5", + "/tshecyrillic": "\u045B", + "/tsuperior": "\uF6F3", + "/ttabengali": "\u099F", + "/ttadeva": "\u091F", + "/ttagujarati": "\u0A9F", + "/ttagurmukhi": "\u0A1F", + "/tteharabic": "\u0679", + "/ttehfinalarabic": "\uFB67", + "/ttehinitialarabic": "\uFB68", + "/ttehmedialarabic": "\uFB69", + "/tthabengali": "\u09A0", + "/tthadeva": "\u0920", + "/tthagujarati": "\u0AA0", + "/tthagurmukhi": "\u0A20", + "/tturned": "\u0287", + "/tuhiragana": "\u3064", + "/tukatakana": "\u30C4", + "/tukatakanahalfwidth": "\uFF82", + "/tusmallhiragana": "\u3063", + "/tusmallkatakana": "\u30C3", + "/tusmallkatakanahalfwidth": "\uFF6F", + "/twelvecircle": "\u246B", + "/twelveparen": "\u247F", + "/twelveperiod": "\u2493", + "/twelveroman": "\u217B", + "/twentycircle": "\u2473", + "/twentyhangzhou": "\u5344", + "/twentyparen": "\u2487", + "/twentyperiod": "\u249B", + "/two": "\u0032", + "/twoarabic": "\u0662", + "/twobengali": "\u09E8", + "/twocircle": "\u2461", + "/twocircleinversesansserif": "\u278B", + "/twodeva": "\u0968", + "/twodotenleader": "\u2025", + "/twodotleader": "\u2025", + "/twodotleadervertical": "\uFE30", + "/twogujarati": "\u0AE8", + "/twogurmukhi": "\u0A68", + "/twohackarabic": "\u0662", + "/twohangzhou": "\u3022", + "/twoideographicparen": "\u3221", + "/twoinferior": "\u2082", + "/twomonospace": "\uFF12", + "/twonumeratorbengali": "\u09F5", + "/twooldstyle": "\uF732", + "/twoparen": "\u2475", + "/twoperiod": "\u2489", + "/twopersian": "\u06F2", + "/tworoman": "\u2171", + "/twostroke": "\u01BB", + "/twosuperior": "\u00B2", + "/twothai": "\u0E52", + "/twothirds": "\u2154", + "/u": "\u0075", + "/uacute": "\u00FA", + "/ubar": "\u0289", + "/ubengali": "\u0989", + "/ubopomofo": "\u3128", + "/ubreve": "\u016D", + "/ucaron": "\u01D4", + "/ucircle": "\u24E4", + "/ucircumflex": "\u00FB", + "/ucircumflexbelow": "\u1E77", + "/ucyrillic": "\u0443", + "/udattadeva": "\u0951", + "/udblacute": "\u0171", + "/udblgrave": "\u0215", + "/udeva": "\u0909", + "/udieresis": "\u00FC", + "/udieresisacute": "\u01D8", + "/udieresisbelow": "\u1E73", + "/udieresiscaron": "\u01DA", + "/udieresiscyrillic": "\u04F1", + "/udieresisgrave": "\u01DC", + "/udieresismacron": "\u01D6", + "/udotbelow": "\u1EE5", + "/ugrave": "\u00F9", + "/ugujarati": "\u0A89", + "/ugurmukhi": "\u0A09", + "/uhiragana": "\u3046", + "/uhookabove": "\u1EE7", + "/uhorn": "\u01B0", + "/uhornacute": "\u1EE9", + "/uhorndotbelow": "\u1EF1", + "/uhorngrave": "\u1EEB", + "/uhornhookabove": "\u1EED", + "/uhorntilde": "\u1EEF", + "/uhungarumlaut": "\u0171", + "/uhungarumlautcyrillic": "\u04F3", + "/uinvertedbreve": "\u0217", + "/ukatakana": "\u30A6", + "/ukatakanahalfwidth": "\uFF73", + "/ukcyrillic": "\u0479", + "/ukorean": "\u315C", + "/umacron": "\u016B", + "/umacroncyrillic": "\u04EF", + "/umacrondieresis": "\u1E7B", + "/umatragurmukhi": "\u0A41", + "/umonospace": "\uFF55", + "/underscore": "\u005F", + "/underscoredbl": "\u2017", + "/underscoremonospace": "\uFF3F", + "/underscorevertical": "\uFE33", + "/underscorewavy": "\uFE4F", + "/union": "\u222A", + "/universal": "\u2200", + "/uogonek": "\u0173", + "/uparen": "\u24B0", + "/upblock": "\u2580", + "/upperdothebrew": "\u05C4", + "/upsilon": "\u03C5", + "/upsilondieresis": "\u03CB", + "/upsilondieresistonos": "\u03B0", + "/upsilonlatin": "\u028A", + "/upsilontonos": "\u03CD", + "/uptackbelowcmb": "\u031D", + "/uptackmod": "\u02D4", + "/uragurmukhi": "\u0A73", + "/uring": "\u016F", + "/ushortcyrillic": "\u045E", + "/usmallhiragana": "\u3045", + "/usmallkatakana": "\u30A5", + "/usmallkatakanahalfwidth": "\uFF69", + "/ustraightcyrillic": "\u04AF", + "/ustraightstrokecyrillic": "\u04B1", + "/utilde": "\u0169", + "/utildeacute": "\u1E79", + "/utildebelow": "\u1E75", + "/uubengali": "\u098A", + "/uudeva": "\u090A", + "/uugujarati": "\u0A8A", + "/uugurmukhi": "\u0A0A", + "/uumatragurmukhi": "\u0A42", + "/uuvowelsignbengali": "\u09C2", + "/uuvowelsigndeva": "\u0942", + "/uuvowelsigngujarati": "\u0AC2", + "/uvowelsignbengali": "\u09C1", + "/uvowelsigndeva": "\u0941", + "/uvowelsigngujarati": "\u0AC1", + "/v": "\u0076", + "/vadeva": "\u0935", + "/vagujarati": "\u0AB5", + "/vagurmukhi": "\u0A35", + "/vakatakana": "\u30F7", + "/vav": "\u05D5", + "/vavdagesh": "\uFB35", + "/vavdagesh65": "\uFB35", + "/vavdageshhebrew": "\uFB35", + "/vavhebrew": "\u05D5", + "/vavholam": "\uFB4B", + "/vavholamhebrew": "\uFB4B", + "/vavvavhebrew": "\u05F0", + "/vavyodhebrew": "\u05F1", + "/vcircle": "\u24E5", + "/vdotbelow": "\u1E7F", + "/vecyrillic": "\u0432", + "/veharabic": "\u06A4", + "/vehfinalarabic": "\uFB6B", + "/vehinitialarabic": "\uFB6C", + "/vehmedialarabic": "\uFB6D", + "/vekatakana": "\u30F9", + "/venus": "\u2640", + "/verticalbar": "\u007C", + "/verticallineabovecmb": "\u030D", + "/verticallinebelowcmb": "\u0329", + "/verticallinelowmod": "\u02CC", + "/verticallinemod": "\u02C8", + "/vewarmenian": "\u057E", + "/vhook": "\u028B", + "/vikatakana": "\u30F8", + "/viramabengali": "\u09CD", + "/viramadeva": "\u094D", + "/viramagujarati": "\u0ACD", + "/visargabengali": "\u0983", + "/visargadeva": "\u0903", + "/visargagujarati": "\u0A83", + "/vmonospace": "\uFF56", + "/voarmenian": "\u0578", + "/voicediterationhiragana": "\u309E", + "/voicediterationkatakana": "\u30FE", + "/voicedmarkkana": "\u309B", + "/voicedmarkkanahalfwidth": "\uFF9E", + "/vokatakana": "\u30FA", + "/vparen": "\u24B1", + "/vtilde": "\u1E7D", + "/vturned": "\u028C", + "/vuhiragana": "\u3094", + "/vukatakana": "\u30F4", + "/w": "\u0077", + "/wacute": "\u1E83", + "/waekorean": "\u3159", + "/wahiragana": "\u308F", + "/wakatakana": "\u30EF", + "/wakatakanahalfwidth": "\uFF9C", + "/wakorean": "\u3158", + "/wasmallhiragana": "\u308E", + "/wasmallkatakana": "\u30EE", + "/wattosquare": "\u3357", + "/wavedash": "\u301C", + "/wavyunderscorevertical": "\uFE34", + "/wawarabic": "\u0648", + "/wawfinalarabic": "\uFEEE", + "/wawhamzaabovearabic": "\u0624", + "/wawhamzaabovefinalarabic": "\uFE86", + "/wbsquare": "\u33DD", + "/wcircle": "\u24E6", + "/wcircumflex": "\u0175", + "/wdieresis": "\u1E85", + "/wdotaccent": "\u1E87", + "/wdotbelow": "\u1E89", + "/wehiragana": "\u3091", + "/weierstrass": "\u2118", + "/wekatakana": "\u30F1", + "/wekorean": "\u315E", + "/weokorean": "\u315D", + "/wgrave": "\u1E81", + "/whitebullet": "\u25E6", + "/whitecircle": "\u25CB", + "/whitecircleinverse": "\u25D9", + "/whitecornerbracketleft": "\u300E", + "/whitecornerbracketleftvertical": "\uFE43", + "/whitecornerbracketright": "\u300F", + "/whitecornerbracketrightvertical": "\uFE44", + "/whitediamond": "\u25C7", + "/whitediamondcontainingblacksmalldiamond": "\u25C8", + "/whitedownpointingsmalltriangle": "\u25BF", + "/whitedownpointingtriangle": "\u25BD", + "/whiteleftpointingsmalltriangle": "\u25C3", + "/whiteleftpointingtriangle": "\u25C1", + "/whitelenticularbracketleft": "\u3016", + "/whitelenticularbracketright": "\u3017", + "/whiterightpointingsmalltriangle": "\u25B9", + "/whiterightpointingtriangle": "\u25B7", + "/whitesmallsquare": "\u25AB", + "/whitesmilingface": "\u263A", + "/whitesquare": "\u25A1", + "/whitestar": "\u2606", + "/whitetelephone": "\u260F", + "/whitetortoiseshellbracketleft": "\u3018", + "/whitetortoiseshellbracketright": "\u3019", + "/whiteuppointingsmalltriangle": "\u25B5", + "/whiteuppointingtriangle": "\u25B3", + "/wihiragana": "\u3090", + "/wikatakana": "\u30F0", + "/wikorean": "\u315F", + "/wmonospace": "\uFF57", + "/wohiragana": "\u3092", + "/wokatakana": "\u30F2", + "/wokatakanahalfwidth": "\uFF66", + "/won": "\u20A9", + "/wonmonospace": "\uFFE6", + "/wowaenthai": "\u0E27", + "/wparen": "\u24B2", + "/wring": "\u1E98", + "/wsuperior": "\u02B7", + "/wturned": "\u028D", + "/wynn": "\u01BF", + "/x": "\u0078", + "/xabovecmb": "\u033D", + "/xbopomofo": "\u3112", + "/xcircle": "\u24E7", + "/xdieresis": "\u1E8D", + "/xdotaccent": "\u1E8B", + "/xeharmenian": "\u056D", + "/xi": "\u03BE", + "/xmonospace": "\uFF58", + "/xparen": "\u24B3", + "/xsuperior": "\u02E3", + "/y": "\u0079", + "/yaadosquare": "\u334E", + "/yabengali": "\u09AF", + "/yacute": "\u00FD", + "/yadeva": "\u092F", + "/yaekorean": "\u3152", + "/yagujarati": "\u0AAF", + "/yagurmukhi": "\u0A2F", + "/yahiragana": "\u3084", + "/yakatakana": "\u30E4", + "/yakatakanahalfwidth": "\uFF94", + "/yakorean": "\u3151", + "/yamakkanthai": "\u0E4E", + "/yasmallhiragana": "\u3083", + "/yasmallkatakana": "\u30E3", + "/yasmallkatakanahalfwidth": "\uFF6C", + "/yatcyrillic": "\u0463", + "/ycircle": "\u24E8", + "/ycircumflex": "\u0177", + "/ydieresis": "\u00FF", + "/ydotaccent": "\u1E8F", + "/ydotbelow": "\u1EF5", + "/yeharabic": "\u064A", + "/yehbarreearabic": "\u06D2", + "/yehbarreefinalarabic": "\uFBAF", + "/yehfinalarabic": "\uFEF2", + "/yehhamzaabovearabic": "\u0626", + "/yehhamzaabovefinalarabic": "\uFE8A", + "/yehhamzaaboveinitialarabic": "\uFE8B", + "/yehhamzaabovemedialarabic": "\uFE8C", + "/yehinitialarabic": "\uFEF3", + "/yehmedialarabic": "\uFEF4", + "/yehmeeminitialarabic": "\uFCDD", + "/yehmeemisolatedarabic": "\uFC58", + "/yehnoonfinalarabic": "\uFC94", + "/yehthreedotsbelowarabic": "\u06D1", + "/yekorean": "\u3156", + "/yen": "\u00A5", + "/yenmonospace": "\uFFE5", + "/yeokorean": "\u3155", + "/yeorinhieuhkorean": "\u3186", + "/yerahbenyomohebrew": "\u05AA", + "/yerahbenyomolefthebrew": "\u05AA", + "/yericyrillic": "\u044B", + "/yerudieresiscyrillic": "\u04F9", + "/yesieungkorean": "\u3181", + "/yesieungpansioskorean": "\u3183", + "/yesieungsioskorean": "\u3182", + "/yetivhebrew": "\u059A", + "/ygrave": "\u1EF3", + "/yhook": "\u01B4", + "/yhookabove": "\u1EF7", + "/yiarmenian": "\u0575", + "/yicyrillic": "\u0457", + "/yikorean": "\u3162", + "/yinyang": "\u262F", + "/yiwnarmenian": "\u0582", + "/ymonospace": "\uFF59", + "/yod": "\u05D9", + "/yoddagesh": "\uFB39", + "/yoddageshhebrew": "\uFB39", + "/yodhebrew": "\u05D9", + "/yodyodhebrew": "\u05F2", + "/yodyodpatahhebrew": "\uFB1F", + "/yohiragana": "\u3088", + "/yoikorean": "\u3189", + "/yokatakana": "\u30E8", + "/yokatakanahalfwidth": "\uFF96", + "/yokorean": "\u315B", + "/yosmallhiragana": "\u3087", + "/yosmallkatakana": "\u30E7", + "/yosmallkatakanahalfwidth": "\uFF6E", + "/yotgreek": "\u03F3", + "/yoyaekorean": "\u3188", + "/yoyakorean": "\u3187", + "/yoyakthai": "\u0E22", + "/yoyingthai": "\u0E0D", + "/yparen": "\u24B4", + "/ypogegrammeni": "\u037A", + "/ypogegrammenigreekcmb": "\u0345", + "/yr": "\u01A6", + "/yring": "\u1E99", + "/ysuperior": "\u02B8", + "/ytilde": "\u1EF9", + "/yturned": "\u028E", + "/yuhiragana": "\u3086", + "/yuikorean": "\u318C", + "/yukatakana": "\u30E6", + "/yukatakanahalfwidth": "\uFF95", + "/yukorean": "\u3160", + "/yusbigcyrillic": "\u046B", + "/yusbigiotifiedcyrillic": "\u046D", + "/yuslittlecyrillic": "\u0467", + "/yuslittleiotifiedcyrillic": "\u0469", + "/yusmallhiragana": "\u3085", + "/yusmallkatakana": "\u30E5", + "/yusmallkatakanahalfwidth": "\uFF6D", + "/yuyekorean": "\u318B", + "/yuyeokorean": "\u318A", + "/yyabengali": "\u09DF", + "/yyadeva": "\u095F", + "/z": "\u007A", + "/zaarmenian": "\u0566", + "/zacute": "\u017A", + "/zadeva": "\u095B", + "/zagurmukhi": "\u0A5B", + "/zaharabic": "\u0638", + "/zahfinalarabic": "\uFEC6", + "/zahinitialarabic": "\uFEC7", + "/zahiragana": "\u3056", + "/zahmedialarabic": "\uFEC8", + "/zainarabic": "\u0632", + "/zainfinalarabic": "\uFEB0", + "/zakatakana": "\u30B6", + "/zaqefgadolhebrew": "\u0595", + "/zaqefqatanhebrew": "\u0594", + "/zarqahebrew": "\u0598", + "/zayin": "\u05D6", + "/zayindagesh": "\uFB36", + "/zayindageshhebrew": "\uFB36", + "/zayinhebrew": "\u05D6", + "/zbopomofo": "\u3117", + "/zcaron": "\u017E", + "/zcircle": "\u24E9", + "/zcircumflex": "\u1E91", + "/zcurl": "\u0291", + "/zdot": "\u017C", + "/zdotaccent": "\u017C", + "/zdotbelow": "\u1E93", + "/zecyrillic": "\u0437", + "/zedescendercyrillic": "\u0499", + "/zedieresiscyrillic": "\u04DF", + "/zehiragana": "\u305C", + "/zekatakana": "\u30BC", + "/zero": "\u0030", + "/zeroarabic": "\u0660", + "/zerobengali": "\u09E6", + "/zerodeva": "\u0966", + "/zerogujarati": "\u0AE6", + "/zerogurmukhi": "\u0A66", + "/zerohackarabic": "\u0660", + "/zeroinferior": "\u2080", + "/zeromonospace": "\uFF10", + "/zerooldstyle": "\uF730", + "/zeropersian": "\u06F0", + "/zerosuperior": "\u2070", + "/zerothai": "\u0E50", + "/zerowidthjoiner": "\uFEFF", + "/zerowidthnonjoiner": "\u200C", + "/zerowidthspace": "\u200B", + "/zeta": "\u03B6", + "/zhbopomofo": "\u3113", + "/zhearmenian": "\u056A", + "/zhebrevecyrillic": "\u04C2", + "/zhecyrillic": "\u0436", + "/zhedescendercyrillic": "\u0497", + "/zhedieresiscyrillic": "\u04DD", + "/zihiragana": "\u3058", + "/zikatakana": "\u30B8", + "/zinorhebrew": "\u05AE", + "/zlinebelow": "\u1E95", + "/zmonospace": "\uFF5A", + "/zohiragana": "\u305E", + "/zokatakana": "\u30BE", + "/zparen": "\u24B5", + "/zretroflexhook": "\u0290", + "/zstroke": "\u01B6", + "/zuhiragana": "\u305A", + "/zukatakana": "\u30BA", } diff --git a/PyPDF2/generic.py b/PyPDF2/generic.py index 3d44a3c3b..e88f09a02 100644 --- a/PyPDF2/generic.py +++ b/PyPDF2/generic.py @@ -200,7 +200,11 @@ def writeToStream( self.write_to_stream(stream, encryption_key) @staticmethod - def read_from_stream(stream: StreamType, pdf: Any, forcedEncoding: Union[None,str,List[str],Dict[int,str]] = None) -> "ArrayObject": # PdfReader + def read_from_stream( + stream: StreamType, + pdf: Any, + forcedEncoding: Union[None, str, List[str], Dict[int, str]] = None, + ) -> "ArrayObject": # PdfReader arr = ArrayObject() tmp = stream.read(1) if tmp != b_("["): @@ -430,7 +434,7 @@ def readHexStringFromStream( def readStringFromStream( stream: StreamType, - forcedEncoding: Union[None,str,List[str],Dict[int,str]] = None, + forcedEncoding: Union[None, str, List[str], Dict[int, str]] = None, ) -> Union["TextStringObject", "ByteStringObject"]: tok = stream.read(1) parens = 1 @@ -760,8 +764,9 @@ def writeToStream( @staticmethod def read_from_stream( - stream: StreamType, pdf: Any, # PdfReader - forcedEncoding: Union[None,str,List[str],Dict[int,str]] = None + stream: StreamType, + pdf: Any, # PdfReader + forcedEncoding: Union[None, str, List[str], Dict[int, str]] = None, ) -> "DictionaryObject": def getNextObjPos( p: int, p1: int, remGens: List[int], pdf: Any @@ -1203,7 +1208,10 @@ def set_data(self, data: Any) -> None: class ContentStream(DecodedStreamObject): def __init__( - self, stream: Any, pdf: Any, forcedEncoding: Union[None,str,List[str],Dict[int,str]] = None + self, + stream: Any, + pdf: Any, + forcedEncoding: Union[None, str, List[str], Dict[int, str]] = None, ) -> None: self.pdf = pdf @@ -1255,7 +1263,7 @@ def __parseContentStream(self, stream: StreamType) -> None: while peek not in (b_("\r"), b_("\n")): peek = stream.read(1) else: - operands.append(read_object(stream, None,self.forcedEncoding)) + operands.append(read_object(stream, None, self.forcedEncoding)) def _readInlineImage(self, stream: StreamType) -> Dict[str, Any]: # begin reading just after the "BI" - begin image @@ -1343,8 +1351,9 @@ def _data(self, value: Union[str, bytes]) -> None: def read_object( - stream: StreamType, pdf: Any, # PdfReader - forcedEncoding: Union[None,str,List[str],Dict[int,str]] = None + stream: StreamType, + pdf: Any, # PdfReader + forcedEncoding: Union[None, str, List[str], Dict[int, str]] = None, ) -> Union[PdfObject, int, str, ContentStream]: tok = stream.read(1) stream.seek(-1, 1) # reset to start @@ -2079,7 +2088,8 @@ def write_to_stream( def createStringObject( - string: Union[str, bytes], forcedEncoding: Union[None,str,List[str],Dict[int,str]] = None + string: Union[str, bytes], + forcedEncoding: Union[None, str, List[str], Dict[int, str]] = None, ) -> Union[TextStringObject, ByteStringObject]: """ Given a string, create a ByteStringObject or a TextStringObject to @@ -2092,7 +2102,7 @@ def createStringObject( if isinstance(string, str): return TextStringObject(string) elif isinstance(string, bytes_type): - if isinstance(forcedEncoding, (list,dict)): + if isinstance(forcedEncoding, (list, dict)): out = "" for x in string: try: @@ -2417,12 +2427,12 @@ def decode_pdfdocencoding(byte_array: bytes) -> str: def fill_from_encoding(enc: str) -> List[str]: - lst : List[str] = [] + lst: List[str] = [] for x in range(256): try: - lst+=(bytes((x,)).decode(enc),) + lst += (bytes((x,)).decode(enc),) except Exception: - lst+=(chr(x),) + lst += (chr(x),) return lst @@ -2701,11 +2711,11 @@ def rev_encoding(enc: List[str]) -> Dict[str, int]: return rev -_pdfdoc_encoding_rev : Dict[str,int] = rev_encoding(_pdfdoc_encoding) -_win_encoding_rev : Dict[str,int] = rev_encoding(_win_encoding) -_mac_encoding_rev : Dict[str,int] = rev_encoding(_mac_encoding) +_pdfdoc_encoding_rev: Dict[str, int] = rev_encoding(_pdfdoc_encoding) +_win_encoding_rev: Dict[str, int] = rev_encoding(_win_encoding) +_mac_encoding_rev: Dict[str, int] = rev_encoding(_mac_encoding) -charset_encoding : Dict[str, List[str] ] = { +charset_encoding: Dict[str, List[str]] = { "/StandardCoding": _std_encoding, "/WinAnsiEncoding": _win_encoding, "/MacRomanEncoding": _mac_encoding, From dae5dd3101ff50cb03ca9f7e7de64b9e5eafed94 Mon Sep 17 00:00:00 2001 From: pubpub-zz <4083478+pubpub-zz@users.noreply.github.com> Date: Sun, 29 May 2022 12:10:08 +0200 Subject: [PATCH 19/27] after black (2) --- PyPDF2/_page.py | 114 +++++++++++++++++++++++++++++++----------------- 1 file changed, 73 insertions(+), 41 deletions(-) diff --git a/PyPDF2/_page.py b/PyPDF2/_page.py index 97336560d..70779951b 100644 --- a/PyPDF2/_page.py +++ b/PyPDF2/_page.py @@ -45,7 +45,7 @@ cast, ) -from .errors import PdfReadWarning #,PdfReadError +from .errors import PdfReadWarning # ,PdfReadError from ._utils import ( DEPR_MSG, DEPR_MSG_NO_REPLACEMENT, @@ -1064,7 +1064,9 @@ def compressContentStreams(self) -> None: ) self.compress_content_streams() - def extract_text(self, Tj_sep: str = "", TJ_sep: str = "",space_width : float = 200.0) -> str: + def extract_text( + self, Tj_sep: str = "", TJ_sep: str = "", space_width: float = 200.0 + ) -> str: """ Locate all text drawing commands, in the order they are provided in the content stream, and extract the text. This works well for some PDF @@ -1076,41 +1078,63 @@ def extract_text(self, Tj_sep: str = "", TJ_sep: str = "",space_width : float = :return: a string object. """ # code freely inspired from @twiggy ; see #711 - def buildCharMap(font_name : str)->Tuple[str,Dict,Dict]: - map_dict : Any = {} - process_rg : bool = False - process_char : bool = False - encoding : List[str] = [] - font_type: str = cast(NameObject, cast(DictionaryObject, - cast(DictionaryObject, - cast(DictionaryObject, self["/Resources"])["/Font"] - )[font_name] - )["/Subtype"]) - if "/Encoding" in cast(DictionaryObject, cast(DictionaryObject, cast(DictionaryObject, self["/Resources"])["/Font"])[font_name]): - enc = cast(DictionaryObject, - cast(DictionaryObject, - cast(DictionaryObject, - cast(DictionaryObject, self["/Resources"])["/Font"] - )[font_name] - )["/Encoding"] - ).get_object() - if isinstance(enc,str): + def buildCharMap(font_name: str) -> Tuple[str, Dict, Dict]: + map_dict: Any = {} + process_rg: bool = False + process_char: bool = False + encoding: List[str] = [] + font_type: str = cast( + NameObject, + cast( + DictionaryObject, + cast( + DictionaryObject, + cast(DictionaryObject, self["/Resources"])["/Font"], + )[font_name], + )["/Subtype"], + ) + if "/Encoding" in cast( + DictionaryObject, + cast( + DictionaryObject, + cast(DictionaryObject, self["/Resources"])["/Font"], + )[font_name], + ): + enc = cast( + DictionaryObject, + cast( + DictionaryObject, + cast( + DictionaryObject, + cast(DictionaryObject, self["/Resources"])["/Font"], + )[font_name], + )["/Encoding"], + ).get_object() + if isinstance(enc, str): try: encoding = charset_encoding[enc] except Exception: - warnings.warn(f"Advanced encoding {encoding} not implemented yet",PdfReadWarning) + warnings.warn( + f"Advanced encoding {encoding} not implemented yet", + PdfReadWarning, + ) encoding = charset_encoding["/StandardCoding"] elif isinstance(enc, DictionaryObject) and "/BaseEncoding" in enc: try: - encoding = charset_encoding[cast(str,enc["/BaseEncoding"])] + encoding = charset_encoding[cast(str, enc["/BaseEncoding"])] except Exception: - warnings.warn(f"Advanced encoding {encoding} not implemented yet",PdfReadWarning) + warnings.warn( + f"Advanced encoding {encoding} not implemented yet", + PdfReadWarning, + ) encoding = charset_encoding["/StandardCoding"] else: encoding = charset_encoding["/StandardCoding"] - if "/Differences" in cast(DictionaryObject,enc): + if "/Differences" in cast(DictionaryObject, enc): x = 0 - for o in cast(DictionaryObject,cast(DictionaryObject,enc)["/Differences"]): + for o in cast( + DictionaryObject, cast(DictionaryObject, enc)["/Differences"] + ): if isinstance(o, int): x = o else: @@ -1119,17 +1143,24 @@ def buildCharMap(font_name : str)->Tuple[str,Dict,Dict]: except Exception: encoding[x] = o x += 1 - if "/ToUnicode" in cast(DictionaryObject, - cast(DictionaryObject, - cast(DictionaryObject,self["/Resources"])["/Font"] - )[font_name]): + if "/ToUnicode" in cast( + DictionaryObject, + cast( + DictionaryObject, + cast(DictionaryObject, self["/Resources"])["/Font"], + )[font_name], + ): cm = ( - cast(DecodedStreamObject, - cast(DictionaryObject, - cast(DictionaryObject, - cast(DictionaryObject,self["/Resources"])["/Font"] - )[font_name] - )["/ToUnicode"]) + cast( + DecodedStreamObject, + cast( + DictionaryObject, + cast( + DictionaryObject, + cast(DictionaryObject, self["/Resources"])["/Font"], + )[font_name], + )["/ToUnicode"], + ) .get_data() .decode("utf-8") ) @@ -1175,15 +1206,16 @@ def buildCharMap(font_name : str)->Tuple[str,Dict,Dict]: a = int(lst[0], 16) map_dict[a] = unhexlify(lst[1]).decode("utf-16-be") return font_type, dict(zip(range(256), encoding)), "".maketrans(map_dict) + # ------- end of buildCharmap ------ text: str = "" output: str = "" - cmaps: Dict[str, Tuple[str, Dict[int,str],Dict[str,str]]]={} - resources_dict = cast(DictionaryObject,self["/Resources"]) + cmaps: Dict[str, Tuple[str, Dict[int, str], Dict[str, str]]] = {} + resources_dict = cast(DictionaryObject, self["/Resources"]) if "/Font" in resources_dict: for f in cast(DictionaryObject, resources_dict["/Font"]): cmaps[f] = buildCharMap(f) - cmap: Union[str, Dict[int,str]]= {} + cmap: Union[str, Dict[int, str]] = {} content = self[PG.CONTENTS].get_object() if not isinstance(content, ContentStream): content = ContentStream(content, self.pdf, "charmap") @@ -1198,7 +1230,7 @@ def buildCharMap(font_name : str)->Tuple[str,Dict,Dict]: if operator == b_("Tf"): if text != "": output += text.translate(cmap) - #ft, cmap, cmap2 = buildCharMap(self.pdf, operands[0]) + # ft, cmap, cmap2 = buildCharMap(self.pdf, operands[0]) cmap = cmaps[operands[0]][1] # print(ft,"\n",cmap,"\n--------------\n",cmap2) # charSize = operands[1] # reserved @@ -1226,7 +1258,7 @@ def buildCharMap(font_name : str)->Tuple[str,Dict,Dict]: elif (operator in [b_("Td")]) and (operands[1] == 0): if operands[0] > (space_scale * space_width): text += " " - #elif operands[-1] < 0: + # elif operands[-1] < 0: # print("back ", operands[-1]) elif operator == b_("'"): output += text.translate(cmap) + "\n" From c4887349924127a46852e80397909c9dffa28c04 Mon Sep 17 00:00:00 2001 From: Martin Thoma Date: Sun, 29 May 2022 16:14:35 +0200 Subject: [PATCH 20/27] Simplify code; apply black formatter --- PyPDF2/{_adglyphs.py => _adobe_glyphs.py} | 0 PyPDF2/_page.py | 61 ++++++++--------------- PyPDF2/_utils.py | 2 +- tests/test_workflows.py | 3 +- 4 files changed, 24 insertions(+), 42 deletions(-) rename PyPDF2/{_adglyphs.py => _adobe_glyphs.py} (100%) diff --git a/PyPDF2/_adglyphs.py b/PyPDF2/_adobe_glyphs.py similarity index 100% rename from PyPDF2/_adglyphs.py rename to PyPDF2/_adobe_glyphs.py diff --git a/PyPDF2/_page.py b/PyPDF2/_page.py index 8dc95cf3b..a250500fa 100644 --- a/PyPDF2/_page.py +++ b/PyPDF2/_page.py @@ -30,22 +30,22 @@ import math import uuid import warnings -from decimal import Decimal from binascii import unhexlify +from decimal import Decimal from typing import ( Any, Callable, Dict, Iterable, Iterator, + List, Optional, Tuple, Union, - List, cast, ) -from .errors import PdfReadWarning # ,PdfReadError +from ._adobe_glyphs import adobe_glyphs from ._utils import ( DEPR_MSG, DEPR_MSG_NO_REPLACEMENT, @@ -56,12 +56,13 @@ ) from .constants import PageAttributes as PG from .constants import Ressources as RES +from .errors import PdfReadWarning # ,PdfReadError from .errors import PageSizeNotDefinedError from .generic import ( ArrayObject, ContentStream, - DictionaryObject, DecodedStreamObject, + DictionaryObject, FloatObject, IndirectObject, NameObject, @@ -71,7 +72,6 @@ TextStringObject, charset_encoding, ) -from ._adglyphs import adobe_glyphs def _get_rectangle(self: Any, name: str, defaults: Iterable[str]) -> RectangleObject: @@ -1087,33 +1087,28 @@ def buildCharMap(font_name: str) -> Tuple[str, Dict, Dict]: process_rg: bool = False process_char: bool = False encoding: List[str] = [] + resources_dict = cast(DictionaryObject, self["/Resources"]) + font_dict = cast( + DictionaryObject, + resources_dict["/Font"], + ) + selected_font_dict = cast( + DictionaryObject, + font_dict[font_name], + ) font_type: str = cast( NameObject, - cast( - DictionaryObject, - cast( - DictionaryObject, - cast(DictionaryObject, self["/Resources"])["/Font"], - )[font_name], - )["/Subtype"], + selected_font_dict["/Subtype"], ) if "/Encoding" in cast( DictionaryObject, - cast( - DictionaryObject, - cast(DictionaryObject, self["/Resources"])["/Font"], - )[font_name], + font_dict[font_name], ): - enc = cast( + enc_dict = cast( DictionaryObject, - cast( - DictionaryObject, - cast( - DictionaryObject, - cast(DictionaryObject, self["/Resources"])["/Font"], - )[font_name], - )["/Encoding"], - ).get_object() + selected_font_dict["/Encoding"], + ) + enc = enc_dict.get_object() if isinstance(enc, str): try: encoding = charset_encoding[enc] @@ -1147,23 +1142,11 @@ def buildCharMap(font_name: str) -> Tuple[str, Dict, Dict]: except Exception: encoding[x] = o x += 1 - if "/ToUnicode" in cast( - DictionaryObject, - cast( - DictionaryObject, - cast(DictionaryObject, self["/Resources"])["/Font"], - )[font_name], - ): + if "/ToUnicode" in selected_font_dict: cm = ( cast( DecodedStreamObject, - cast( - DictionaryObject, - cast( - DictionaryObject, - cast(DictionaryObject, self["/Resources"])["/Font"], - )[font_name], - )["/ToUnicode"], + selected_font_dict["/ToUnicode"], ) .get_data() .decode("utf-8") diff --git a/PyPDF2/_utils.py b/PyPDF2/_utils.py index 6376d7859..541594e59 100644 --- a/PyPDF2/_utils.py +++ b/PyPDF2/_utils.py @@ -31,10 +31,10 @@ __author__ = "Mathieu Fenniak" __author_email__ = "biziqe@mathieu.fenniak.net" +import warnings from codecs import getencoder from io import BufferedReader, BufferedWriter, BytesIO, FileIO from typing import Any, Dict, Optional, Tuple, Union, overload -import warnings try: # Python 3.10+: https://www.python.org/dev/peps/pep-0484/ diff --git a/tests/test_workflows.py b/tests/test_workflows.py index b2db98e68..357e5b629 100644 --- a/tests/test_workflows.py +++ b/tests/test_workflows.py @@ -1,9 +1,8 @@ import binascii import os import sys - -from io import BytesIO import urllib.request +from io import BytesIO import pytest From d957d4de297d1b76ee507838f239b7b44a1609f4 Mon Sep 17 00:00:00 2001 From: pubpub-zz <4083478+pubpub-zz@users.noreply.github.com> Date: Sun, 5 Jun 2022 11:56:40 +0200 Subject: [PATCH 21/27] ExtractText2 (#929) * New proposal for spacing/lining with deeper analysis of font data and text positionning Includes : * XObject Processing, * choice between encoding and tounicode fields * partial compliance with Identify-H/V encoding (missing processing on 2-bytes) *legacy conversion reintroduced as old for comparison increase test and refactory depreciation warning ignore in test * take into account Tm scale and improve space calculation --- PyPDF2/_page.py | 492 +++++++++++++++++++++++++------------ resources/PdfWithXForm.pdf | Bin 0 -> 62703 bytes resources/crazyones.txt | 5 +- tests/test_page.py | 46 ++-- tests/test_workflows.py | 4 +- 5 files changed, 362 insertions(+), 185 deletions(-) create mode 100644 resources/PdfWithXForm.pdf diff --git a/PyPDF2/_page.py b/PyPDF2/_page.py index a250500fa..1c2bd0ca9 100644 --- a/PyPDF2/_page.py +++ b/PyPDF2/_page.py @@ -30,38 +30,38 @@ import math import uuid import warnings -from binascii import unhexlify from decimal import Decimal +from math import sqrt +from binascii import unhexlify from typing import ( Any, Callable, Dict, Iterable, Iterator, - List, Optional, Tuple, Union, + List, cast, ) -from ._adobe_glyphs import adobe_glyphs +from .errors import PdfReadWarning # ,PdfReadError from ._utils import ( DEPR_MSG, DEPR_MSG_NO_REPLACEMENT, CompressedTransformationMatrix, TransformationMatrixType, - b_, matrix_multiply, ) from .constants import PageAttributes as PG from .constants import Ressources as RES -from .errors import PdfReadWarning # ,PdfReadError from .errors import PageSizeNotDefinedError from .generic import ( ArrayObject, ContentStream, DecodedStreamObject, + EncodedStreamObject, DictionaryObject, FloatObject, IndirectObject, @@ -72,6 +72,7 @@ TextStringObject, charset_encoding, ) +from ._adobe_glyphs import adobe_glyphs def _get_rectangle(self: Any, name: str, defaults: Iterable[str]) -> RectangleObject: @@ -324,16 +325,17 @@ def rotate(self, angle: float) -> "PageObject": """ if angle % 90 != 0: raise ValueError("Rotation angle must be a multiple of 90") - rotate_obj = self.get(PG.ROTATE, 0) - current_angle = ( - rotate_obj if isinstance(rotate_obj, int) else rotate_obj.get_object() - ) - self[NameObject(PG.ROTATE)] = NumberObject(current_angle + angle) + self._rotate(angle) return self def rotate_clockwise(self, angle: float) -> "PageObject": + """ + .. deprecated:: 1.28.0 + + Use :meth:`rotate_clockwise` instead. + """ warnings.warn( - DEPR_MSG.format("rotate_clockwise", "rotate"), + DEPR_MSG.format("rotateClockwise", "rotate_clockwise"), PendingDeprecationWarning, stacklevel=2, ) @@ -346,7 +348,7 @@ def rotateClockwise(self, angle: float) -> "PageObject": Use :meth:`rotate_clockwise` instead. """ warnings.warn( - DEPR_MSG.format("rotateClockwise", "rotate"), + DEPR_MSG.format("rotateClockwise", "rotate_clockwise"), PendingDeprecationWarning, stacklevel=2, ) @@ -359,11 +361,21 @@ def rotateCounterClockwise(self, angle: float) -> "PageObject": Use :meth:`rotate_clockwise` with a negative argument instead. """ warnings.warn( - DEPR_MSG.format("rotateCounterClockwise", "rotate"), + DEPR_MSG.format("rotateCounterClockwise", "rotate_clockwise"), PendingDeprecationWarning, stacklevel=2, ) - return self.rotate(-angle) + if angle % 90 != 0: + raise ValueError("Rotation angle must be a multiple of 90") + self._rotate(-angle) + return self + + def _rotate(self, angle: float) -> None: + rotate_obj = self.get(PG.ROTATE, 0) + current_angle = ( + rotate_obj if isinstance(rotate_obj, int) else rotate_obj.get_object() + ) + self[NameObject(PG.ROTATE)] = NumberObject(current_angle + angle) @staticmethod def _merge_resources( @@ -644,10 +656,8 @@ def mergeTransformedPage( Use :meth:`add_transformation` and :meth:`merge_page` instead. """ warnings.warn( - DEPR_MSG.format( - "page.mergeTransformedPage(page2, ctm)", - "page2.add_transformation(ctm); page.merge_page(page2)", - ), + "page.mergeTransformedPage(page2, ctm) will be removed in PyPDF 2.0.0. " + "Use page2.add_transformation(ctm); page.merge_page(page2) instead.", PendingDeprecationWarning, stacklevel=2, ) @@ -1068,9 +1078,7 @@ def compressContentStreams(self) -> None: ) self.compress_content_streams() - def extract_text( - self, Tj_sep: str = "", TJ_sep: str = "", space_width: float = 200.0 - ) -> str: + def extract_oldtext(self, Tj_sep: str = "", TJ_sep: str = "") -> str: """ Locate all text drawing commands, in the order they are provided in the content stream, and extract the text. This works well for some PDF @@ -1079,57 +1087,155 @@ def extract_text( this function, as it will change if this function is made more sophisticated. + :return: a string object. + """ + text = "" + content = self[PG.CONTENTS].get_object() + if not isinstance(content, ContentStream): + content = ContentStream(content, self.pdf) + # Note: we check all strings are TextStringObjects. ByteStringObjects + # are strings where the byte->string encoding was unknown, so adding + # them to the text here would be gibberish. + + space_scale = 1.0 + + for operands, operator in content.operations: + if operator == b"Tf": # text font + pass + elif operator == b"Tfs": # text font size + pass + elif operator == b"Tc": # character spacing + # See '5.2.1 Character Spacing' + pass + elif operator == b"Tw": # word spacing + # See '5.2.2 Word Spacing' + space_scale = 1.0 + float(operands[0]) + elif operator == b"Th": # horizontal scaling + # See '5.2.3 Horizontal Scaling' + pass + elif operator == b"Tl": # leading + # See '5.2.4 Leading' + pass + elif operator == b"Tmode": # text rendering mode + # See '5.2.5 Text Rendering Mode' + pass + elif operator == b"Trise": # text rise + # See '5.2.6 Text Rise' + pass + elif operator == b"Tj": + # See 'TABLE 5.6 Text-showing operators' + _text = operands[0] + if isinstance(_text, TextStringObject): + text += Tj_sep + text += _text + text += "\n" + elif operator == b"T*": + # See 'TABLE 5.5 Text-positioning operators' + text += "\n" + elif operator == b"'": + # See 'TABLE 5.6 Text-showing operators' + text += "\n" + _text = operands[0] + if isinstance(_text, TextStringObject): + text += operands[0] + elif operator == b'"': + # See 'TABLE 5.6 Text-showing operators' + _text = operands[2] + if isinstance(_text, TextStringObject): + text += "\n" + text += _text + elif operator == b"TJ": + # See 'TABLE 5.6 Text-showing operators' + for i in operands[0]: + if isinstance(i, TextStringObject): + text += TJ_sep + text += i + elif isinstance(i, (NumberObject, FloatObject)): + # a positive value decreases and the negative value increases + # space + if int(i) < -space_scale * 250: + if len(text) == 0 or text[-1] != " ": + text += " " + else: + if len(text) > 1 and text[-1] == " ": + text = text[:-1] + text += "\n" + return text + + def debug_for_extract(self)->str: + out="" + for ope,op in ContentStream(self["/Contents"].getObject(),self.pdf).operations: + if op==b'TJ': + s = [x for x in ope[0] if isinstance(x,str)] + else: + s =[] + out+= op.decode("utf-8")+" " +"".join(s) + ope.__repr__()+"\n" + out+="\n=============================\n" + try: + for fo in self["/Resources"]["/Font"]: #type:ignore + out+=fo+"\n" + out+=self["/Resources"]["/Font"][fo].__repr__()+"\n" #type:ignore + try: + out+=self["/Resources"]["/Font"][fo]["/Encoding"].__repr__()+"\n" #type:ignore + except Exception: + pass + except KeyError: + out+="No Font\n" + return out + + def _extract_text(self, obj:Any, pdf:Any, space_width: float = 200.0,content_key: Union[None,str] = PG.CONTENTS + )-> str: + """ + Locate all text drawing commands, in the order they are provided in the + content stream, and extract the text. This works well for some PDF + files, but poorly for others, depending on the generator used. This will + be refined in the future. Do not rely on the order of text coming out of + this function, as it will change if this function is made more + sophisticated. + space_width : float = force default space width (if not extracted from font (default 200) + content_key : None/str = indicate the default key where to extract data; + None = the opbject; this allow to reuse the function on XObject + default = "/Content" :return: a string object. """ # code freely inspired from @twiggy ; see #711 - def buildCharMap(font_name: str) -> Tuple[str, Dict, Dict]: + def buildCharMap(font_name: str) -> Tuple[str, float,Dict, Dict]: map_dict: Any = {} process_rg: bool = False process_char: bool = False encoding: List[str] = [] - resources_dict = cast(DictionaryObject, self["/Resources"]) - font_dict = cast( - DictionaryObject, - resources_dict["/Font"], - ) - selected_font_dict = cast( - DictionaryObject, - font_dict[font_name], - ) - font_type: str = cast( - NameObject, - selected_font_dict["/Subtype"], - ) - if "/Encoding" in cast( - DictionaryObject, - font_dict[font_name], - ): - enc_dict = cast( - DictionaryObject, - selected_font_dict["/Encoding"], - ) - enc = enc_dict.get_object() + ft : DictionaryObject = obj["/Resources"]["/Font"][font_name] # type: ignore + font_type: str = cast(str,ft["/Subtype"]) + sp_width : float = space_width*2 #default value + w = [] + #encoding + space_code = 32 + if "/Encoding" in ft: + enc: Union(str,DictionaryObject) = ft["/Encoding"].get_object() # type: ignore if isinstance(enc, str): try: - encoding = charset_encoding[enc] + if enc in ("/Identity-H","/Identity-V"): + encoding = [] + else: + encoding = charset_encoding[enc].copy() except Exception: warnings.warn( f"Advanced encoding {encoding} not implemented yet", PdfReadWarning, ) - encoding = charset_encoding["/StandardCoding"] + encoding = charset_encoding["/StandardCoding"].copy() elif isinstance(enc, DictionaryObject) and "/BaseEncoding" in enc: try: - encoding = charset_encoding[cast(str, enc["/BaseEncoding"])] + encoding = charset_encoding[cast(str, enc["/BaseEncoding"])].copy() except Exception: warnings.warn( f"Advanced encoding {encoding} not implemented yet", PdfReadWarning, ) - encoding = charset_encoding["/StandardCoding"] + encoding = charset_encoding["/StandardCoding"].copy() else: - encoding = charset_encoding["/StandardCoding"] - if "/Differences" in cast(DictionaryObject, enc): + encoding = charset_encoding["/StandardCoding"].copy() + if "/Differences" in enc: x = 0 for o in cast( DictionaryObject, cast(DictionaryObject, enc)["/Differences"] @@ -1141,16 +1247,11 @@ def buildCharMap(font_name: str) -> Tuple[str, Dict, Dict]: encoding[x] = adobe_glyphs[o] except Exception: encoding[x] = o + if o==" ": + space_code=x x += 1 - if "/ToUnicode" in selected_font_dict: - cm = ( - cast( - DecodedStreamObject, - selected_font_dict["/ToUnicode"], - ) - .get_data() - .decode("utf-8") - ) + if "/ToUnicode" in ft: + cm : str = cast(DecodedStreamObject,ft["/ToUnicode"]).get_data().decode("utf-8") for l in ( cm.strip() .replace("<", " ") @@ -1191,115 +1292,204 @@ def buildCharMap(font_name: str) -> Tuple[str, Dict, Dict]: elif process_char: lst = [x for x in l.split(" ") if x] a = int(lst[0], 16) - map_dict[a] = unhexlify(lst[1]).decode("utf-16-be") - return font_type, dict(zip(range(256), encoding)), "".maketrans(map_dict) + map_dict[a] = unhexlify("".join(lst[1:])).decode("utf-16-be") #join is here as some cases where the code was split + + # get + for a in map_dict: + if map_dict[a] == " ": + space_code = a + + #compute space width + st: int = 0 # declaration for mypy + if "/W" in ft: + if "/DW" in ft: + sp_width = cast(float, ft["/DW"]) + w = [x for x in ft["/W"]] #type: ignore + while(len(w)>0): + st = w[0] + second = w[1] + if isinstance(int, second): + if st<=space_code and space_code<=second: + sp_width = w[2] + break + w = w[3:] + if isinstance(list, second): + if st<=space_code and space_code<=st+len(second)-1: + sp_width = second[space_code-st] + w = w[2:] + else: + warnings.warn("unknown widths : \n"+(ft["/W"]).__repr__(), + PdfReadWarning) + break + if "/Widths" in ft: + w = [x for x in ft["/Widths"]] #type: ignore + try: + st = cast(int, ft["/FirstChar"]) + en: int = cast(int, ft["/LastChar"]) + if st>space_code or en0: + m += x + cpt += 1 + sp_width = m / max(1,cpt) / 2 + + return font_type, float(sp_width/2), dict(zip(range(256), encoding)), "".maketrans(map_dict) + # ------- end of buildCharmap ------ - # ------- end of buildCharmap ------ text: str = "" output: str = "" - cmaps: Dict[str, Tuple[str, Dict[int, str], Dict[str, str]]] = {} - resources_dict = cast(DictionaryObject, self["/Resources"]) + cmaps: Dict[str, Tuple[str, float, Dict[int, str], Dict[int, str]]] = {} + resources_dict = cast(DictionaryObject, obj["/Resources"]) + #####import pdb;pdb.set_trace() if "/Font" in resources_dict: for f in cast(DictionaryObject, resources_dict["/Font"]): cmaps[f] = buildCharMap(f) cmap: Union[str, Dict[int, str]] = {} - content = self[PG.CONTENTS].get_object() + content = obj[content_key].get_object() if isinstance(content_key, str) else obj; if not isinstance(content, ContentStream): - content = ContentStream(content, self.pdf, "charmap") + content = ContentStream(content, pdf, "charmap") # Note: we check all strings are TextStringObjects. ByteStringObjects # are strings where the byte->string encoding was unknown, so adding # them to the text here would be gibberish. - # charSize = 1.0 - # charScale = 0.0 + tm_matrix : List[float] = [1.0, 0.0, 0.0, 1.0, 0.0, 0.0] + tm_prev : List[float] = [1.0, 0.0, 0.0, 1.0, 0.0, 0.0] + char_scale = 1.0 space_scale = 1.0 - - for operands, operator in content.operations: - if operator == b_("Tf"): # text font - if text != "": - output += text.translate(cmap) - # ft, cmap, cmap2 = buildCharMap(self.pdf, operands[0]) - cmap = cmaps[operands[0]][1] - # print(ft,"\n",cmap,"\n--------------\n",cmap2) - # charSize = operands[1] # reserved - if output == "": - text = "" - else: - text = " " - elif operator == b_("Tfs"): # text font size - pass - elif operator == b_("Tc"): # character spacing - # See '5.2.1 Character Spacing' - # charScale = 1.0 + float(operands[0]) - pass - elif operator == b_("Tw"): # word spacing - # See '5.2.2 Word Spacing' + _space_width :float = 500.0 # will be set correctly at first Tf + TL = 0.0 + font_size = 12.0 #init just in case of + + ##tm_matrix: Tuple = tm_matrix, output: str = output, text: str = text, + ##char_scale: float = char_scale,space_scale : float = space_scale, _space_width: float = _space_width, + ##TL: float = TL, font_size: float = font_size, cmap = cmap + + def process_operation(operator: bytes, operands:List)-> None : + nonlocal tm_matrix, tm_prev, output, text,char_scale, space_scale,_space_width, TL, font_size,cmap + if tm_matrix[4] != 0 and tm_matrix[5] != 0: # o reuse of the + tm_prev = list(tm_matrix) + #### Table 5.4 page 405 #### + if operator == b"BT": + tm_matrix = [1.0, 0.0, 0.0, 1.0, 0.0, 0.0] + #tm_prev = tm_matrix + output += text + #based + #if output != "" and output[-1]!="\n": + # output += "\n" + text = "" + return None + elif (operator == b"ET"): + output += text + text="" + #### Table 5.2 page 398 #### + elif operator == b"Tz": + char_scale = float(operands[0])/100.0 + elif operator == b"Tw": space_scale = 1.0 + float(operands[0]) - elif operator == b_("Th"): # horizontal scaling - # See '5.2.3 Horizontal Scaling' - pass - elif operator == b_("Tl"): # leading - # See '5.2.4 Leading' - pass - elif operator == b_("Tmode"): # text rendering mode - # See '5.2.5 Text Rendering Mode' - pass - elif operator == b_("Trise"): # text rise - # See '5.2.6 Text Rise' - pass - elif operator == b_("Tj"): - # See 'TABLE 5.6 Text-showing operators' - _text = operands[0] - if isinstance(_text, TextStringObject): - text += Tj_sep - text += _text - # text += "\n" - # see Pdf Reference 1.7 page 406 - elif (operator in [b_("T*"), b_("ET")]) or ( - (operator in [b_("Td"), b_("TD")]) and operands[1] != 0 - ): - # See 'TABLE 5.5 Text-positioning operators' + elif operator == b"TL": + TL = float(operands[0]) + elif operator == b"Tf": if text != "": - output += text.translate(cmap) + "\n" - text = "" - elif (operator in [b_("Td")]) and (operands[1] == 0): - if operands[0] > (space_scale * space_width): - text += " " - # elif operands[-1] < 0: - # print("back ", operands[-1]) - elif operator == b_("'"): - # See 'TABLE 5.6 Text-showing operators' - output += text.translate(cmap) + "\n" - _text = operands[0] - if isinstance(_text, TextStringObject): - text = operands[0] - elif operator == b_('"'): - # See 'TABLE 5.6 Text-showing operators' - output += text.translate(cmap) + "\n" - _text = operands[2] - if isinstance(_text, TextStringObject): - text = _text - elif operator == b_("TJ"): - # See 'TABLE 5.6 Text-showing operators' - for i in operands[0]: - if isinstance(i, TextStringObject): - text += TJ_sep - text += i - elif isinstance(i, (NumberObject, FloatObject)): - # a positive value decreases and the negative value increases - # space - # if abs(i)>space_scale*1000:print("TJ:",text,"*",i) - # print(text,i) - if int(i) < -space_scale * space_width: - if len(text) == 0 or text[-1] != " ": - text += " " - else: - if len(text) > 1 and text[-1] == " ": - text = text[:-1] - # text += "\n" - output += text.translate(cmap) + output += text #.translate(cmap) + text = "" + _space_width= cmaps[operands[0]][1] + cmap = cmaps[operands[0]][2] if len(cmaps[operands[0]][2])>0 else cmaps[operands[0]][3] #type:ignore + try: + font_size = float(operands[1]) + except Exception: + pass # keep previous size + #### Table 5.5 page 406 #### + elif (operator == b"Td"): + tm_matrix[5] += float(operands[1]) + tm_matrix[4] += float(operands[0]) + elif operator == b"Tm": + tm_matrix = [float(operands[0]), float(operands[1]), + float(operands[2]), float(operands[3]), + float(operands[4]), float(operands[5])] + elif (operator == b"T*"): + tm_matrix[5] -= TL + elif operator == b"Tj": + text += operands[0].translate(cmap) + else: + return None + # process text changes due to positionchange: " " + if tm_matrix[5] <= (tm_prev[5] - font_size*sqrt(tm_matrix[2]**2+tm_matrix[3]**2)): # it means that we are moving down by one line + output += text + "\n" #.translate(cmap) + "\n" + text = "" + elif tm_matrix[4] >= (tm_prev[4] + space_scale * _space_width * char_scale): # it means that we are moving down by one line + text += " " + return None + # for clarity Operator in (b"g",b"G") : nothing to do + ###### end of process_operation ###### + + for operands, operator in content.operations: + #### multiple operators are define inhere #### + if operator == b"'": + process_operation(b"T*",[]) + process_operation(b"Tj",operands) + elif operator == b'"': + process_operation(b"T*",[]) + process_operation(b"TJ",operands) + elif operator == b"TJ": + for op in operands[0]: + if isinstance(op,str): + process_operation(b"Tj",[op]) + if isinstance(op,(int,float,NumberObject,FloatObject)): + process_operation(b"Td",[-op,0.0]) + elif operator == b'Do': + output += text + if output != "": + output += "\n" + try: + if self["/Resources"]["/XObject"][operands[0]]["/Subtype"] != "/Image": #type:ignore + text = self.extract_xform_text(self["/Resources"]["/XObject"][operands[0]], space_width) #type:ignore + output += text + except Exception: + warnings.warn(f" impossible to decode XFormObject {operands[0]}",PdfReadWarning) + finally: + text="" + else: + process_operation(operator,operands) + output += text #just in case of return output + def extract_text( + self, Tj_sep: str = "", TJ_sep: str = "", space_width: float = 200.0) -> str: + """ + Locate all text drawing commands, in the order they are provided in the + content stream, and extract the text. This works well for some PDF + files, but poorly for others, depending on the generator used. This will + be refined in the future. Do not rely on the order of text coming out of + this function, as it will change if this function is made more + sophisticated. + space_width : float = force default space width (if not extracted from font (default 200) + + :return: a string object. + """ + return self._extract_text(self,self.pdf,space_width, PG.CONTENTS) + + def extract_xform_text( self, xform:EncodedStreamObject, space_width: float = 200.0) -> str: + """ + Extraction tet from an XObject. + space_width : float = force default space width (if not extracted from font (default 200) + + :return: a string object. + """ + return self._extract_text(xform, self.pdf,space_width, None) + + + def extractText(self, Tj_sep: str = "", TJ_sep: str = "") -> str: """ .. deprecated:: 1.28.0 diff --git a/resources/PdfWithXForm.pdf b/resources/PdfWithXForm.pdf new file mode 100644 index 0000000000000000000000000000000000000000..0da3cd5c6becc6c173089af8c68b009e2a2f17b0 GIT binary patch literal 62703 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 literal 0 HcmV?d00001 diff --git a/resources/crazyones.txt b/resources/crazyones.txt index 3cc0eb9a5..c2cece6f5 100644 --- a/resources/crazyones.txt +++ b/resources/crazyones.txt @@ -1,6 +1,5 @@ -The Crazy Ones +The Crazy Ones October 14, 1998 - Heres to the crazy ones. The misfits. The rebels. The troublemakers. The round pegs in the square holes. The ones who see things differently. Theyre not fond of rules. And @@ -16,4 +15,4 @@ a red planet and see a laboratory on wheels? We make tools for these kinds of people. While some see them as the crazy ones, we see genius. Because the people who are crazy enough to think they can change the world, -are the ones who do. +are the ones who do. \ No newline at end of file diff --git a/tests/test_page.py b/tests/test_page.py index dcfc46f87..e756c1c1c 100644 --- a/tests/test_page.py +++ b/tests/test_page.py @@ -51,8 +51,10 @@ def test_read(meta): ("imagemagick-images.pdf", None), ("imagemagick-lzw.pdf", None), ("reportlab-inline-image.pdf", None), + ("PdfWithXForm.pdf", None), ], ) +@pytest.mark.filterwarnings('ignore::PendingDeprecationWarning') def test_page_operations(pdf_path, password): """ This test just checks if the operation throws an exception. @@ -67,24 +69,18 @@ def test_page_operations(pdf_path, password): reader.decrypt(password) page: PageObject = reader.pages[0] - with pytest.warns(PendingDeprecationWarning): - page.mergeRotatedScaledTranslatedPage( - page, 90, scale=1, tx=1, ty=1, expand=True - ) + page.mergeRotatedScaledTranslatedPage( page, 90, scale=1, tx=1, ty=1, expand=True ) page.add_transformation((1, 0, 0, 0, 0, 0)) page.scale(2, 2) page.scale_by(0.5) page.scale_to(100, 100) page.compress_content_streams() page.extract_text() - with pytest.warns(PendingDeprecationWarning): - page.scaleBy(0.5) - with pytest.warns(PendingDeprecationWarning): - page.scaleTo(100, 100) - with pytest.warns(PendingDeprecationWarning): - page.extractText() - + page.scaleBy(0.5) + page.scaleTo(100, 100) + page.extractText() +@pytest.mark.filterwarnings('ignore::PendingDeprecationWarning') def test_transformation_equivalence(): pdf_path = os.path.join(RESOURCE_ROOT, "labeled-edges-center-image.pdf") reader_base = PdfReader(pdf_path) @@ -105,8 +101,7 @@ def test_transformation_equivalence(): # Option 2: The old way page_box2 = deepcopy(page_box) page_base2 = deepcopy(page_base) - with pytest.warns(PendingDeprecationWarning): - page_base2.mergeTransformedPage(page_box2, op, expand=False) + page_base2.mergeTransformedPage(page_box2, op, expand=False) # Should be the smae assert page_base1[NameObject(PG.CONTENTS)] == page_base2[NameObject(PG.CONTENTS)] @@ -126,28 +121,19 @@ def compare_dict_objects(d1, d2): else: assert d1[k] == d2[k] - +@pytest.mark.filterwarnings('ignore::PendingDeprecationWarning') def test_page_transformations(): pdf_path = os.path.join(RESOURCE_ROOT, "crazyones.pdf") reader = PdfReader(pdf_path) page: PageObject = reader.pages[0] - with pytest.warns(PendingDeprecationWarning): - page.mergeRotatedPage(page, 90, expand=True) - with pytest.warns(PendingDeprecationWarning): - page.mergeRotatedScaledPage(page, 90, 1, expand=True) - with pytest.warns(PendingDeprecationWarning): - page.mergeRotatedScaledTranslatedPage( - page, 90, scale=1, tx=1, ty=1, expand=True - ) - with pytest.warns(PendingDeprecationWarning): - page.mergeRotatedTranslatedPage(page, 90, 100, 100, expand=False) - with pytest.warns(PendingDeprecationWarning): - page.mergeScaledPage(page, 2, expand=False) - with pytest.warns(PendingDeprecationWarning): - page.mergeScaledTranslatedPage(page, 1, 1, 1) - with pytest.warns(PendingDeprecationWarning): - page.mergeTranslatedPage(page, 100, 100, expand=False) + page.mergeRotatedPage(page, 90, expand=True) + page.mergeRotatedScaledPage(page, 90, 1, expand=True) + page.mergeRotatedScaledTranslatedPage(page, 90, scale=1, tx=1, ty=1, expand=True) + page.mergeRotatedTranslatedPage(page, 90, 100, 100, expand=False) + page.mergeScaledPage(page, 2, expand=False) + page.mergeScaledTranslatedPage(page, 1, 1, 1) + page.mergeTranslatedPage(page, 100, 100, expand=False) page.add_transformation((1, 0, 0, 0, 0, 0)) diff --git a/tests/test_workflows.py b/tests/test_workflows.py index 357e5b629..a278665fc 100644 --- a/tests/test_workflows.py +++ b/tests/test_workflows.py @@ -125,7 +125,9 @@ def test_rotate_45(): (True, "https://arxiv.org/pdf/1602.06541.pdf", [0, 1, 5, 10]), (True, "https://arxiv.org/pdf/2201.00200.pdf", [0, 1, 5, 6]), (True, "https://arxiv.org/pdf/2201.00022.pdf", [0, 1, 5, 10]), - (True, "https://arxiv.org/pdf/2201.00029.pdf", [0, 1, 5, 10]), + (True, "https://arxiv.org/pdf/2201.00029.pdf", [0, 1, 6, 10]), + # 6 instead of 5: as there is an issue in page 5 (missing objects) + #and too complex to handle the warning without hiding real regressions (True, "https://arxiv.org/pdf/1601.03642.pdf", [0, 1, 5, 7]), ], ) From 28feae760d663f2e6293696d12abc4c602fbb6c2 Mon Sep 17 00:00:00 2001 From: Martin Thoma Date: Sun, 5 Jun 2022 12:00:41 +0200 Subject: [PATCH 22/27] STY: Apply black --- PyPDF2/_page.py | 253 ++++++++++++++++++++++++---------------- tests/test_page.py | 10 +- tests/test_workflows.py | 2 +- 3 files changed, 158 insertions(+), 107 deletions(-) diff --git a/PyPDF2/_page.py b/PyPDF2/_page.py index 9bc46a08d..4ed08788d 100644 --- a/PyPDF2/_page.py +++ b/PyPDF2/_page.py @@ -29,23 +29,23 @@ import math import uuid +from binascii import unhexlify from decimal import Decimal from math import sqrt -from binascii import unhexlify from typing import ( Any, Callable, Dict, Iterable, Iterator, + List, Optional, Tuple, Union, - List, cast, ) -from .errors import PdfReadWarning # ,PdfReadError +from ._adobe_glyphs import adobe_glyphs from ._utils import ( CompressedTransformationMatrix, TransformationMatrixType, @@ -56,13 +56,14 @@ ) from .constants import PageAttributes as PG from .constants import Ressources as RES +from .errors import PdfReadWarning # ,PdfReadError from .errors import PageSizeNotDefinedError from .generic import ( ArrayObject, ContentStream, DecodedStreamObject, - EncodedStreamObject, DictionaryObject, + EncodedStreamObject, FloatObject, IndirectObject, NameObject, @@ -72,7 +73,6 @@ TextStringObject, charset_encoding, ) -from ._adobe_glyphs import adobe_glyphs def _get_rectangle(self: Any, name: str, defaults: Iterable[str]) -> RectangleObject: @@ -1070,30 +1070,38 @@ def extract_oldtext(self, Tj_sep: str = "", TJ_sep: str = "") -> str: text += "\n" return text - - def debug_for_extract(self)->str: - out="" - for ope,op in ContentStream(self["/Contents"].getObject(),self.pdf).operations: - if op==b'TJ': - s = [x for x in ope[0] if isinstance(x,str)] + def debug_for_extract(self) -> str: + out = "" + for ope, op in ContentStream( + self["/Contents"].getObject(), self.pdf + ).operations: + if op == b"TJ": + s = [x for x in ope[0] if isinstance(x, str)] else: - s =[] - out+= op.decode("utf-8")+" " +"".join(s) + ope.__repr__()+"\n" - out+="\n=============================\n" + s = [] + out += op.decode("utf-8") + " " + "".join(s) + ope.__repr__() + "\n" + out += "\n=============================\n" try: - for fo in self["/Resources"]["/Font"]: #type:ignore - out+=fo+"\n" - out+=self["/Resources"]["/Font"][fo].__repr__()+"\n" #type:ignore + for fo in self["/Resources"]["/Font"]: # type:ignore + out += fo + "\n" + out += self["/Resources"]["/Font"][fo].__repr__() + "\n" # type:ignore try: - out+=self["/Resources"]["/Font"][fo]["/Encoding"].__repr__()+"\n" #type:ignore + out += ( + self["/Resources"]["/Font"][fo]["/Encoding"].__repr__() + "\n" + ) # type:ignore except Exception: pass except KeyError: - out+="No Font\n" + out += "No Font\n" return out - def _extract_text(self, obj:Any, pdf:Any, space_width: float = 200.0,content_key: Union[None,str] = PG.CONTENTS - )-> str: + def _extract_text( + self, + obj: Any, + pdf: Any, + space_width: float = 200.0, + content_key: Union[None, str] = PG.CONTENTS, + ) -> str: """ Locate all text drawing commands, in the order they are provided in the content stream, and extract the text. This works well for some PDF @@ -1108,22 +1116,22 @@ def _extract_text(self, obj:Any, pdf:Any, space_width: float = 200.0,content_key :return: a string object. """ # code freely inspired from @twiggy ; see #711 - def buildCharMap(font_name: str) -> Tuple[str, float,Dict, Dict]: + def buildCharMap(font_name: str) -> Tuple[str, float, Dict, Dict]: map_dict: Any = {} process_rg: bool = False process_char: bool = False encoding: List[str] = [] - ft : DictionaryObject = obj["/Resources"]["/Font"][font_name] # type: ignore - font_type: str = cast(str,ft["/Subtype"]) - sp_width : float = space_width*2 #default value + ft: DictionaryObject = obj["/Resources"]["/Font"][font_name] # type: ignore + font_type: str = cast(str, ft["/Subtype"]) + sp_width: float = space_width * 2 # default value w = [] - #encoding + # encoding space_code = 32 if "/Encoding" in ft: - enc: Union(str,DictionaryObject) = ft["/Encoding"].get_object() # type: ignore + enc: Union(str, DictionaryObject) = ft["/Encoding"].get_object() # type: ignore if isinstance(enc, str): try: - if enc in ("/Identity-H","/Identity-V"): + if enc in ("/Identity-H", "/Identity-V"): encoding = [] else: encoding = charset_encoding[enc].copy() @@ -1135,7 +1143,9 @@ def buildCharMap(font_name: str) -> Tuple[str, float,Dict, Dict]: encoding = charset_encoding["/StandardCoding"].copy() elif isinstance(enc, DictionaryObject) and "/BaseEncoding" in enc: try: - encoding = charset_encoding[cast(str, enc["/BaseEncoding"])].copy() + encoding = charset_encoding[ + cast(str, enc["/BaseEncoding"]) + ].copy() except Exception: warnings.warn( f"Advanced encoding {encoding} not implemented yet", @@ -1156,11 +1166,15 @@ def buildCharMap(font_name: str) -> Tuple[str, float,Dict, Dict]: encoding[x] = adobe_glyphs[o] except Exception: encoding[x] = o - if o==" ": - space_code=x + if o == " ": + space_code = x x += 1 if "/ToUnicode" in ft: - cm : str = cast(DecodedStreamObject,ft["/ToUnicode"]).get_data().decode("utf-8") + cm: str = ( + cast(DecodedStreamObject, ft["/ToUnicode"]) + .get_data() + .decode("utf-8") + ) for l in ( cm.strip() .replace("<", " ") @@ -1201,59 +1215,70 @@ def buildCharMap(font_name: str) -> Tuple[str, float,Dict, Dict]: elif process_char: lst = [x for x in l.split(" ") if x] a = int(lst[0], 16) - map_dict[a] = unhexlify("".join(lst[1:])).decode("utf-16-be") #join is here as some cases where the code was split + map_dict[a] = unhexlify("".join(lst[1:])).decode( + "utf-16-be" + ) # join is here as some cases where the code was split # get for a in map_dict: if map_dict[a] == " ": space_code = a - #compute space width - st: int = 0 # declaration for mypy + # compute space width + st: int = 0 # declaration for mypy if "/W" in ft: if "/DW" in ft: sp_width = cast(float, ft["/DW"]) - w = [x for x in ft["/W"]] #type: ignore - while(len(w)>0): + w = [x for x in ft["/W"]] # type: ignore + while len(w) > 0: st = w[0] second = w[1] if isinstance(int, second): - if st<=space_code and space_code<=second: + if st <= space_code and space_code <= second: sp_width = w[2] break w = w[3:] if isinstance(list, second): - if st<=space_code and space_code<=st+len(second)-1: - sp_width = second[space_code-st] + if st <= space_code and space_code <= st + len(second) - 1: + sp_width = second[space_code - st] w = w[2:] else: - warnings.warn("unknown widths : \n"+(ft["/W"]).__repr__(), - PdfReadWarning) + warnings.warn( + "unknown widths : \n" + (ft["/W"]).__repr__(), + PdfReadWarning, + ) break if "/Widths" in ft: - w = [x for x in ft["/Widths"]] #type: ignore + w = [x for x in ft["/Widths"]] # type: ignore try: st = cast(int, ft["/FirstChar"]) en: int = cast(int, ft["/LastChar"]) - if st>space_code or en space_code or en < space_code: raise Exception("Not in range") - if w[space_code-st] == 0: + if w[space_code - st] == 0: raise Exception("null width") - sp_width = w[space_code-st] + sp_width = w[space_code - st] except Exception: - if "/FontDescriptor" in ft and "/MissingWidth" in cast(DictionaryObject,ft["/FontDescriptor"]): - sp_width = ft["/FontDescriptor"]["/MissingWidth"] # type: ignore + if "/FontDescriptor" in ft and "/MissingWidth" in cast( + DictionaryObject, ft["/FontDescriptor"] + ): + sp_width = ft["/FontDescriptor"]["/MissingWidth"] # type: ignore else: - #will consider width of char as avg(width)/2 - m=0 - cpt=0 + # will consider width of char as avg(width)/2 + m = 0 + cpt = 0 for x in w: - if x>0: + if x > 0: m += x cpt += 1 - sp_width = m / max(1,cpt) / 2 + sp_width = m / max(1, cpt) / 2 - return font_type, float(sp_width/2), dict(zip(range(256), encoding)), "".maketrans(map_dict) + return ( + font_type, + float(sp_width / 2), + dict(zip(range(256), encoding)), + "".maketrans(map_dict), + ) # ------- end of buildCharmap ------ text: str = "" @@ -1265,78 +1290,91 @@ def buildCharMap(font_name: str) -> Tuple[str, float,Dict, Dict]: for f in cast(DictionaryObject, resources_dict["/Font"]): cmaps[f] = buildCharMap(f) cmap: Union[str, Dict[int, str]] = {} - content = obj[content_key].get_object() if isinstance(content_key, str) else obj; + content = obj[content_key].get_object() if isinstance(content_key, str) else obj if not isinstance(content, ContentStream): content = ContentStream(content, pdf, "charmap") # Note: we check all strings are TextStringObjects. ByteStringObjects # are strings where the byte->string encoding was unknown, so adding # them to the text here would be gibberish. - tm_matrix : List[float] = [1.0, 0.0, 0.0, 1.0, 0.0, 0.0] - tm_prev : List[float] = [1.0, 0.0, 0.0, 1.0, 0.0, 0.0] + tm_matrix: List[float] = [1.0, 0.0, 0.0, 1.0, 0.0, 0.0] + tm_prev: List[float] = [1.0, 0.0, 0.0, 1.0, 0.0, 0.0] char_scale = 1.0 space_scale = 1.0 - _space_width :float = 500.0 # will be set correctly at first Tf + _space_width: float = 500.0 # will be set correctly at first Tf TL = 0.0 - font_size = 12.0 #init just in case of + font_size = 12.0 # init just in case of ##tm_matrix: Tuple = tm_matrix, output: str = output, text: str = text, ##char_scale: float = char_scale,space_scale : float = space_scale, _space_width: float = _space_width, ##TL: float = TL, font_size: float = font_size, cmap = cmap - def process_operation(operator: bytes, operands:List)-> None : - nonlocal tm_matrix, tm_prev, output, text,char_scale, space_scale,_space_width, TL, font_size,cmap - if tm_matrix[4] != 0 and tm_matrix[5] != 0: # o reuse of the + def process_operation(operator: bytes, operands: List) -> None: + nonlocal tm_matrix, tm_prev, output, text, char_scale, space_scale, _space_width, TL, font_size, cmap + if tm_matrix[4] != 0 and tm_matrix[5] != 0: # o reuse of the tm_prev = list(tm_matrix) #### Table 5.4 page 405 #### if operator == b"BT": tm_matrix = [1.0, 0.0, 0.0, 1.0, 0.0, 0.0] - #tm_prev = tm_matrix + # tm_prev = tm_matrix output += text - #based - #if output != "" and output[-1]!="\n": + # based + # if output != "" and output[-1]!="\n": # output += "\n" text = "" return None - elif (operator == b"ET"): + elif operator == b"ET": output += text - text="" + text = "" #### Table 5.2 page 398 #### elif operator == b"Tz": - char_scale = float(operands[0])/100.0 + char_scale = float(operands[0]) / 100.0 elif operator == b"Tw": space_scale = 1.0 + float(operands[0]) elif operator == b"TL": TL = float(operands[0]) elif operator == b"Tf": if text != "": - output += text #.translate(cmap) + output += text # .translate(cmap) text = "" - _space_width= cmaps[operands[0]][1] - cmap = cmaps[operands[0]][2] if len(cmaps[operands[0]][2])>0 else cmaps[operands[0]][3] #type:ignore + _space_width = cmaps[operands[0]][1] + cmap = ( + cmaps[operands[0]][2] + if len(cmaps[operands[0]][2]) > 0 + else cmaps[operands[0]][3] + ) # type:ignore try: font_size = float(operands[1]) except Exception: - pass # keep previous size + pass # keep previous size #### Table 5.5 page 406 #### - elif (operator == b"Td"): + elif operator == b"Td": tm_matrix[5] += float(operands[1]) tm_matrix[4] += float(operands[0]) elif operator == b"Tm": - tm_matrix = [float(operands[0]), float(operands[1]), - float(operands[2]), float(operands[3]), - float(operands[4]), float(operands[5])] - elif (operator == b"T*"): + tm_matrix = [ + float(operands[0]), + float(operands[1]), + float(operands[2]), + float(operands[3]), + float(operands[4]), + float(operands[5]), + ] + elif operator == b"T*": tm_matrix[5] -= TL elif operator == b"Tj": text += operands[0].translate(cmap) else: return None # process text changes due to positionchange: " " - if tm_matrix[5] <= (tm_prev[5] - font_size*sqrt(tm_matrix[2]**2+tm_matrix[3]**2)): # it means that we are moving down by one line - output += text + "\n" #.translate(cmap) + "\n" + if tm_matrix[5] <= ( + tm_prev[5] - font_size * sqrt(tm_matrix[2] ** 2 + tm_matrix[3] ** 2) + ): # it means that we are moving down by one line + output += text + "\n" # .translate(cmap) + "\n" text = "" - elif tm_matrix[4] >= (tm_prev[4] + space_scale * _space_width * char_scale): # it means that we are moving down by one line + elif tm_matrix[4] >= ( + tm_prev[4] + space_scale * _space_width * char_scale + ): # it means that we are moving down by one line text += " " return None # for clarity Operator in (b"g",b"G") : nothing to do @@ -1345,36 +1383,45 @@ def process_operation(operator: bytes, operands:List)-> None : for operands, operator in content.operations: #### multiple operators are define inhere #### if operator == b"'": - process_operation(b"T*",[]) - process_operation(b"Tj",operands) + process_operation(b"T*", []) + process_operation(b"Tj", operands) elif operator == b'"': - process_operation(b"T*",[]) - process_operation(b"TJ",operands) + process_operation(b"T*", []) + process_operation(b"TJ", operands) elif operator == b"TJ": for op in operands[0]: - if isinstance(op,str): - process_operation(b"Tj",[op]) - if isinstance(op,(int,float,NumberObject,FloatObject)): - process_operation(b"Td",[-op,0.0]) - elif operator == b'Do': + if isinstance(op, str): + process_operation(b"Tj", [op]) + if isinstance(op, (int, float, NumberObject, FloatObject)): + process_operation(b"Td", [-op, 0.0]) + elif operator == b"Do": output += text if output != "": output += "\n" try: - if self["/Resources"]["/XObject"][operands[0]]["/Subtype"] != "/Image": #type:ignore - text = self.extract_xform_text(self["/Resources"]["/XObject"][operands[0]], space_width) #type:ignore + if ( + self["/Resources"]["/XObject"][operands[0]]["/Subtype"] + != "/Image" + ): # type:ignore + text = self.extract_xform_text( + self["/Resources"]["/XObject"][operands[0]], space_width + ) # type:ignore output += text except Exception: - warnings.warn(f" impossible to decode XFormObject {operands[0]}",PdfReadWarning) + warnings.warn( + f" impossible to decode XFormObject {operands[0]}", + PdfReadWarning, + ) finally: - text="" + text = "" else: - process_operation(operator,operands) - output += text #just in case of + process_operation(operator, operands) + output += text # just in case of return output def extract_text( - self, Tj_sep: str = "", TJ_sep: str = "", space_width: float = 200.0) -> str: + self, Tj_sep: str = "", TJ_sep: str = "", space_width: float = 200.0 + ) -> str: """ Locate all text drawing commands, in the order they are provided in the content stream, and extract the text. This works well for some PDF @@ -1386,20 +1433,22 @@ def extract_text( :return: a string object. """ - return self._extract_text(self,self.pdf,space_width, PG.CONTENTS) + return self._extract_text(self, self.pdf, space_width, PG.CONTENTS) - def extract_xform_text( self, xform:EncodedStreamObject, space_width: float = 200.0) -> str: + def extract_xform_text( + self, xform: EncodedStreamObject, space_width: float = 200.0 + ) -> str: """ Extraction tet from an XObject. space_width : float = force default space width (if not extracted from font (default 200) :return: a string object. """ - return self._extract_text(xform, self.pdf,space_width, None) - - + return self._extract_text(xform, self.pdf, space_width, None) - def extractText(self, Tj_sep: str = "", TJ_sep: str = "") -> str:# pragma: no cover + def extractText( + self, Tj_sep: str = "", TJ_sep: str = "" + ) -> str: # pragma: no cover """ .. deprecated:: 1.28.0 diff --git a/tests/test_page.py b/tests/test_page.py index e756c1c1c..13933c853 100644 --- a/tests/test_page.py +++ b/tests/test_page.py @@ -54,7 +54,7 @@ def test_read(meta): ("PdfWithXForm.pdf", None), ], ) -@pytest.mark.filterwarnings('ignore::PendingDeprecationWarning') +@pytest.mark.filterwarnings("ignore::PendingDeprecationWarning") def test_page_operations(pdf_path, password): """ This test just checks if the operation throws an exception. @@ -69,7 +69,7 @@ def test_page_operations(pdf_path, password): reader.decrypt(password) page: PageObject = reader.pages[0] - page.mergeRotatedScaledTranslatedPage( page, 90, scale=1, tx=1, ty=1, expand=True ) + page.mergeRotatedScaledTranslatedPage(page, 90, scale=1, tx=1, ty=1, expand=True) page.add_transformation((1, 0, 0, 0, 0, 0)) page.scale(2, 2) page.scale_by(0.5) @@ -80,7 +80,8 @@ def test_page_operations(pdf_path, password): page.scaleTo(100, 100) page.extractText() -@pytest.mark.filterwarnings('ignore::PendingDeprecationWarning') + +@pytest.mark.filterwarnings("ignore::PendingDeprecationWarning") def test_transformation_equivalence(): pdf_path = os.path.join(RESOURCE_ROOT, "labeled-edges-center-image.pdf") reader_base = PdfReader(pdf_path) @@ -121,7 +122,8 @@ def compare_dict_objects(d1, d2): else: assert d1[k] == d2[k] -@pytest.mark.filterwarnings('ignore::PendingDeprecationWarning') + +@pytest.mark.filterwarnings("ignore::PendingDeprecationWarning") def test_page_transformations(): pdf_path = os.path.join(RESOURCE_ROOT, "crazyones.pdf") reader = PdfReader(pdf_path) diff --git a/tests/test_workflows.py b/tests/test_workflows.py index a278665fc..c9e9c2e85 100644 --- a/tests/test_workflows.py +++ b/tests/test_workflows.py @@ -127,7 +127,7 @@ def test_rotate_45(): (True, "https://arxiv.org/pdf/2201.00022.pdf", [0, 1, 5, 10]), (True, "https://arxiv.org/pdf/2201.00029.pdf", [0, 1, 6, 10]), # 6 instead of 5: as there is an issue in page 5 (missing objects) - #and too complex to handle the warning without hiding real regressions + # and too complex to handle the warning without hiding real regressions (True, "https://arxiv.org/pdf/1601.03642.pdf", [0, 1, 5, 7]), ], ) From d414f71177faf3ca32930169194105d0c9658e37 Mon Sep 17 00:00:00 2001 From: Martin Thoma Date: Sun, 5 Jun 2022 12:10:27 +0200 Subject: [PATCH 23/27] Reduce diff (fixes after merge conflict fixes) --- PyPDF2/_page.py | 35 ++++++++++++++++------------------- PyPDF2/generic.py | 45 ++++++++++++++++++++++++--------------------- tests/test_page.py | 38 ++++++++++++++++++++++++-------------- 3 files changed, 64 insertions(+), 54 deletions(-) diff --git a/PyPDF2/_page.py b/PyPDF2/_page.py index 4ed08788d..a24b7a351 100644 --- a/PyPDF2/_page.py +++ b/PyPDF2/_page.py @@ -29,6 +29,7 @@ import math import uuid +import warnings from binascii import unhexlify from decimal import Decimal from math import sqrt @@ -49,7 +50,6 @@ from ._utils import ( CompressedTransformationMatrix, TransformationMatrixType, - b_, deprecate_no_replacement, deprecate_with_replacement, matrix_multiply, @@ -305,15 +305,14 @@ def rotate(self, angle: float) -> "PageObject": """ if angle % 90 != 0: raise ValueError("Rotation angle must be a multiple of 90") - self._rotate(angle) + rotate_obj = self.get(PG.ROTATE, 0) + current_angle = ( + rotate_obj if isinstance(rotate_obj, int) else rotate_obj.get_object() + ) + self[NameObject(PG.ROTATE)] = NumberObject(current_angle + angle) return self - def rotate_clockwise(self, angle: float) -> "PageObject": - """ - .. deprecated:: 1.28.0 - - Use :meth:`rotate_clockwise` instead. - """ + def rotate_clockwise(self, angle: float) -> "PageObject": # pragma: no cover deprecate_with_replacement("rotate_clockwise", "rotate") return self.rotate(angle) @@ -986,7 +985,7 @@ def compressContentStreams(self) -> None: # pragma: no cover deprecate_with_replacement("compressContentStreams", "compress_content_streams") self.compress_content_streams() - def extract_oldtext(self, Tj_sep: str = "", TJ_sep: str = "") -> str: + def _extract_text_old(self, Tj_sep: str = "", TJ_sep: str = "") -> str: """ Locate all text drawing commands, in the order they are provided in the content stream, and extract the text. This works well for some PDF @@ -1279,13 +1278,11 @@ def buildCharMap(font_name: str) -> Tuple[str, float, Dict, Dict]: dict(zip(range(256), encoding)), "".maketrans(map_dict), ) - # ------- end of buildCharmap ------ text: str = "" output: str = "" cmaps: Dict[str, Tuple[str, float, Dict[int, str], Dict[int, str]]] = {} resources_dict = cast(DictionaryObject, obj["/Resources"]) - #####import pdb;pdb.set_trace() if "/Font" in resources_dict: for f in cast(DictionaryObject, resources_dict["/Font"]): cmaps[f] = buildCharMap(f) @@ -1305,15 +1302,15 @@ def buildCharMap(font_name: str) -> Tuple[str, float, Dict, Dict]: TL = 0.0 font_size = 12.0 # init just in case of - ##tm_matrix: Tuple = tm_matrix, output: str = output, text: str = text, - ##char_scale: float = char_scale,space_scale : float = space_scale, _space_width: float = _space_width, - ##TL: float = TL, font_size: float = font_size, cmap = cmap + # tm_matrix: Tuple = tm_matrix, output: str = output, text: str = text, + # char_scale: float = char_scale,space_scale : float = space_scale, _space_width: float = _space_width, + # TL: float = TL, font_size: float = font_size, cmap = cmap def process_operation(operator: bytes, operands: List) -> None: nonlocal tm_matrix, tm_prev, output, text, char_scale, space_scale, _space_width, TL, font_size, cmap if tm_matrix[4] != 0 and tm_matrix[5] != 0: # o reuse of the tm_prev = list(tm_matrix) - #### Table 5.4 page 405 #### + # Table 5.4 page 405 if operator == b"BT": tm_matrix = [1.0, 0.0, 0.0, 1.0, 0.0, 0.0] # tm_prev = tm_matrix @@ -1326,7 +1323,7 @@ def process_operation(operator: bytes, operands: List) -> None: elif operator == b"ET": output += text text = "" - #### Table 5.2 page 398 #### + # Table 5.2 page 398 elif operator == b"Tz": char_scale = float(operands[0]) / 100.0 elif operator == b"Tw": @@ -1347,7 +1344,7 @@ def process_operation(operator: bytes, operands: List) -> None: font_size = float(operands[1]) except Exception: pass # keep previous size - #### Table 5.5 page 406 #### + # Table 5.5 page 406 elif operator == b"Td": tm_matrix[5] += float(operands[1]) tm_matrix[4] += float(operands[0]) @@ -1378,10 +1375,10 @@ def process_operation(operator: bytes, operands: List) -> None: text += " " return None # for clarity Operator in (b"g",b"G") : nothing to do - ###### end of process_operation ###### + # end of process_operation ###### for operands, operator in content.operations: - #### multiple operators are define inhere #### + # multiple operators are defined in here #### if operator == b"'": process_operation(b"T*", []) process_operation(b"Tj", operands) diff --git a/PyPDF2/generic.py b/PyPDF2/generic.py index 627d36731..c81e6da5f 100644 --- a/PyPDF2/generic.py +++ b/PyPDF2/generic.py @@ -175,7 +175,7 @@ def writeToStream( def read_from_stream( stream: StreamType, pdf: Any, - forcedEncoding: Union[None, str, List[str], Dict[int, str]] = None, + forced_encoding: Union[None, str, List[str], Dict[int, str]] = None, ) -> "ArrayObject": # PdfReader arr = ArrayObject() tmp = stream.read(1) @@ -193,7 +193,7 @@ def read_from_stream( break stream.seek(-1, 1) # read and append obj - arr.append(read_object(stream, pdf, forcedEncoding)) + arr.append(read_object(stream, pdf, forced_encoding)) return arr @staticmethod @@ -382,7 +382,7 @@ def readHexStringFromStream( def readStringFromStream( stream: StreamType, - forcedEncoding: Union[None, str, List[str], Dict[int, str]] = None, + forced_encoding: Union[None, str, List[str], Dict[int, str]] = None, ) -> Union["TextStringObject", "ByteStringObject"]: tok = stream.read(1) parens = 1 @@ -453,7 +453,7 @@ def readStringFromStream( # if.strict: PdfReadError(msg) logger.warning(msg) txt += tok - return createStringObject(txt, forcedEncoding) + return createStringObject(txt, forced_encoding) class ByteStringObject(bytes_type, PdfObject): # type: ignore @@ -684,7 +684,7 @@ def writeToStream( def read_from_stream( stream: StreamType, pdf: Any, # PdfReader - forcedEncoding: Union[None, str, List[str], Dict[int, str]] = None, + forced_encoding: Union[None, str, List[str], Dict[int, str]] = None, ) -> "DictionaryObject": def get_next_obj_pos( p: int, p1: int, remGens: List[int], pdf: Any @@ -738,7 +738,7 @@ def read_unsized_from_steam(stream: StreamType, pdf: Any) -> bytes: # PdfReader key = read_object(stream, pdf) tok = read_non_whitespace(stream) stream.seek(-1, 1) - value = read_object(stream, pdf, forcedEncoding) + value = read_object(stream, pdf, forced_encoding) if not data.get(key): data[key] = value elif pdf.strict: @@ -1093,7 +1093,7 @@ def __init__( self, stream: Any, pdf: Any, - forcedEncoding: Union[None, str, List[str], Dict[int, str]] = None, + forced_encoding: Union[None, str, List[str], Dict[int, str]] = None, ) -> None: self.pdf = pdf @@ -1111,10 +1111,13 @@ def __init__( data += b_(s.get_object().get_data()) stream_bytes = BytesIO(b_(data)) else: - stream = BytesIO(b_(stream.get_data())) + stream_data = stream.get_data() + assert stream_data is not None + stream_data_bytes = b_(stream_data) + stream_bytes = BytesIO(stream_data_bytes) # self.savstream = stream - self.forcedEncoding = forcedEncoding - self.__parseContentStream(stream) + self.forced_encoding = forced_encoding + self.__parseContentStream(stream_bytes) def __parseContentStream(self, stream: StreamType) -> None: # file("f:\\tmp.txt", "w").write(stream.read()) @@ -1145,7 +1148,7 @@ def __parseContentStream(self, stream: StreamType) -> None: while peek not in (b_("\r"), b_("\n")): peek = stream.read(1) else: - operands.append(read_object(stream, None, self.forcedEncoding)) + operands.append(read_object(stream, None, self.forced_encoding)) def _readInlineImage(self, stream: StreamType) -> Dict[str, Any]: # begin reading just after the "BI" - begin image @@ -1235,7 +1238,7 @@ def _data(self, value: Union[str, bytes]) -> None: def read_object( stream: StreamType, pdf: Any, # PdfReader - forcedEncoding: Union[None, str, List[str], Dict[int, str]] = None, + forced_encoding: Union[None, str, List[str], Dict[int, str]] = None, ) -> Union[PdfObject, int, str, ContentStream]: tok = stream.read(1) stream.seek(-1, 1) # reset to start @@ -1248,15 +1251,15 @@ def read_object( stream.seek(-2, 1) # reset to start if peek == b_("<<"): - return DictionaryObject.read_from_stream(stream, pdf, forcedEncoding) + return DictionaryObject.read_from_stream(stream, pdf, forced_encoding) else: return readHexStringFromStream(stream) elif idx == 2: - return ArrayObject.read_from_stream(stream, pdf, forcedEncoding) + return ArrayObject.read_from_stream(stream, pdf, forced_encoding) elif idx == 3 or idx == 4: return BooleanObject.read_from_stream(stream) elif idx == 5: - return readStringFromStream(stream, forcedEncoding) + return readStringFromStream(stream, forced_encoding) elif idx == 6: return NullObject.read_from_stream(stream) elif idx == 7: @@ -1269,7 +1272,7 @@ def read_object( raise PdfStreamError("File ended unexpectedly.") tok = read_non_whitespace(stream) stream.seek(-1, 1) - return read_object(stream, pdf, forcedEncoding) + return read_object(stream, pdf, forced_encoding) else: # number object OR indirect reference peek = stream.read(20) @@ -1859,7 +1862,7 @@ def write_to_stream( def createStringObject( string: Union[str, bytes], - forcedEncoding: Union[None, str, List[str], Dict[int, str]] = None, + forced_encoding: Union[None, str, List[str], Dict[int, str]] = None, ) -> Union[TextStringObject, ByteStringObject]: """ Given a string, create a ByteStringObject or a TextStringObject to @@ -1872,16 +1875,16 @@ def createStringObject( if isinstance(string, str): return TextStringObject(string) elif isinstance(string, bytes_type): - if isinstance(forcedEncoding, (list, dict)): + if isinstance(forced_encoding, (list, dict)): out = "" for x in string: try: - out += forcedEncoding[x] + out += forced_encoding[x] except Exception: out += bytes((x,)).decode("charmap") return TextStringObject(out) - elif isinstance(forcedEncoding, str): - return TextStringObject(string.decode(forcedEncoding)) + elif isinstance(forced_encoding, str): + return TextStringObject(string.decode(forced_encoding)) else: try: if string.startswith(codecs.BOM_UTF16_BE): diff --git a/tests/test_page.py b/tests/test_page.py index 13933c853..caf428dc3 100644 --- a/tests/test_page.py +++ b/tests/test_page.py @@ -54,7 +54,6 @@ def test_read(meta): ("PdfWithXForm.pdf", None), ], ) -@pytest.mark.filterwarnings("ignore::PendingDeprecationWarning") def test_page_operations(pdf_path, password): """ This test just checks if the operation throws an exception. @@ -76,12 +75,14 @@ def test_page_operations(pdf_path, password): page.scale_to(100, 100) page.compress_content_streams() page.extract_text() - page.scaleBy(0.5) - page.scaleTo(100, 100) - page.extractText() + with pytest.warns(PendingDeprecationWarning): + page.scaleBy(0.5) + with pytest.warns(PendingDeprecationWarning): + page.scaleTo(100, 100) + with pytest.warns(PendingDeprecationWarning): + page.extractText() -@pytest.mark.filterwarnings("ignore::PendingDeprecationWarning") def test_transformation_equivalence(): pdf_path = os.path.join(RESOURCE_ROOT, "labeled-edges-center-image.pdf") reader_base = PdfReader(pdf_path) @@ -102,7 +103,8 @@ def test_transformation_equivalence(): # Option 2: The old way page_box2 = deepcopy(page_box) page_base2 = deepcopy(page_base) - page_base2.mergeTransformedPage(page_box2, op, expand=False) + with pytest.warns(PendingDeprecationWarning): + page_base2.mergeTransformedPage(page_box2, op, expand=False) # Should be the smae assert page_base1[NameObject(PG.CONTENTS)] == page_base2[NameObject(PG.CONTENTS)] @@ -123,19 +125,27 @@ def compare_dict_objects(d1, d2): assert d1[k] == d2[k] -@pytest.mark.filterwarnings("ignore::PendingDeprecationWarning") def test_page_transformations(): pdf_path = os.path.join(RESOURCE_ROOT, "crazyones.pdf") reader = PdfReader(pdf_path) page: PageObject = reader.pages[0] - page.mergeRotatedPage(page, 90, expand=True) - page.mergeRotatedScaledPage(page, 90, 1, expand=True) - page.mergeRotatedScaledTranslatedPage(page, 90, scale=1, tx=1, ty=1, expand=True) - page.mergeRotatedTranslatedPage(page, 90, 100, 100, expand=False) - page.mergeScaledPage(page, 2, expand=False) - page.mergeScaledTranslatedPage(page, 1, 1, 1) - page.mergeTranslatedPage(page, 100, 100, expand=False) + with pytest.warns(PendingDeprecationWarning): + page.mergeRotatedPage(page, 90, expand=True) + with pytest.warns(PendingDeprecationWarning): + page.mergeRotatedScaledPage(page, 90, 1, expand=True) + with pytest.warns(PendingDeprecationWarning): + page.mergeRotatedScaledTranslatedPage( + page, 90, scale=1, tx=1, ty=1, expand=True + ) + with pytest.warns(PendingDeprecationWarning): + page.mergeRotatedTranslatedPage(page, 90, 100, 100, expand=False) + with pytest.warns(PendingDeprecationWarning): + page.mergeScaledPage(page, 2, expand=False) + with pytest.warns(PendingDeprecationWarning): + page.mergeScaledTranslatedPage(page, 1, 1, 1) + with pytest.warns(PendingDeprecationWarning): + page.mergeTranslatedPage(page, 100, 100, expand=False) page.add_transformation((1, 0, 0, 0, 0, 0)) From bc7e153721a69be0037fce2dc6fb794c0e11d8b2 Mon Sep 17 00:00:00 2001 From: Martin Thoma Date: Sun, 5 Jun 2022 12:12:55 +0200 Subject: [PATCH 24/27] Reduce diff --- PyPDF2/_utils.py | 2 +- tests/test_page.py | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/PyPDF2/_utils.py b/PyPDF2/_utils.py index 61e864697..9ae1bb582 100644 --- a/PyPDF2/_utils.py +++ b/PyPDF2/_utils.py @@ -31,10 +31,10 @@ __author__ = "Mathieu Fenniak" __author_email__ = "biziqe@mathieu.fenniak.net" -import warnings from codecs import getencoder from io import BufferedReader, BufferedWriter, BytesIO, FileIO from typing import Any, Dict, Optional, Tuple, Union, overload +import warnings try: # Python 3.10+: https://www.python.org/dev/peps/pep-0484/ diff --git a/tests/test_page.py b/tests/test_page.py index caf428dc3..52c4b0e1c 100644 --- a/tests/test_page.py +++ b/tests/test_page.py @@ -68,7 +68,10 @@ def test_page_operations(pdf_path, password): reader.decrypt(password) page: PageObject = reader.pages[0] - page.mergeRotatedScaledTranslatedPage(page, 90, scale=1, tx=1, ty=1, expand=True) + with pytest.warns(PendingDeprecationWarning): + page.mergeRotatedScaledTranslatedPage( + page, 90, scale=1, tx=1, ty=1, expand=True + ) page.add_transformation((1, 0, 0, 0, 0, 0)) page.scale(2, 2) page.scale_by(0.5) From 2fcdc9a6d71f23d7fc4a8d1cf9d1ca92aeb01e18 Mon Sep 17 00:00:00 2001 From: Martin Thoma Date: Sun, 5 Jun 2022 12:18:10 +0200 Subject: [PATCH 25/27] Fix mypy --- PyPDF2/_page.py | 17 +++++++---------- tests/test_workflows.py | 14 +++++++------- 2 files changed, 14 insertions(+), 17 deletions(-) diff --git a/PyPDF2/_page.py b/PyPDF2/_page.py index a24b7a351..432e42a4f 100644 --- a/PyPDF2/_page.py +++ b/PyPDF2/_page.py @@ -1085,9 +1085,10 @@ def debug_for_extract(self) -> str: out += fo + "\n" out += self["/Resources"]["/Font"][fo].__repr__() + "\n" # type:ignore try: - out += ( - self["/Resources"]["/Font"][fo]["/Encoding"].__repr__() + "\n" - ) # type:ignore + enc_repr = self["/Resources"]["/Font"][fo][ # type:ignore + "/Encoding" + ].__repr__() + out += enc_repr + "\n" except Exception: pass except KeyError: @@ -1396,13 +1397,9 @@ def process_operation(operator: bytes, operands: List) -> None: if output != "": output += "\n" try: - if ( - self["/Resources"]["/XObject"][operands[0]]["/Subtype"] - != "/Image" - ): # type:ignore - text = self.extract_xform_text( - self["/Resources"]["/XObject"][operands[0]], space_width - ) # type:ignore + xobj = self["/Resources"]["/XObject"] # type: ignore + if xobj[operands[0]]["/Subtype"] != "/Image": + text = self.extract_xform_text(xobj[operands[0]], space_width) output += text except Exception: warnings.warn( diff --git a/tests/test_workflows.py b/tests/test_workflows.py index c9e9c2e85..296d65a53 100644 --- a/tests/test_workflows.py +++ b/tests/test_workflows.py @@ -131,13 +131,13 @@ def test_rotate_45(): (True, "https://arxiv.org/pdf/1601.03642.pdf", [0, 1, 5, 7]), ], ) -def test_extract_textbench(enable, url, pages, printResult=False): +def test_extract_textbench(enable, url, pages, print_result=False): if not enable: return - p = PdfReader(BytesIO(urllib.request.urlopen(url).read())) - for n in pages: - if printResult: - print(f"**************** {url} / page {n} ****************") - rst = p.pages[n].extract_text() - if printResult: + reader = PdfReader(BytesIO(urllib.request.urlopen(url).read())) + for page_number in pages: + if print_result: + print(f"**************** {url} / page {page_number} ****************") + rst = reader.pages[page_number].extract_text() + if print_result: print(f"{rst}\n*****************************\n") From aa5ec2113b855d3c91d29c74f86b1ba1ee3c086e Mon Sep 17 00:00:00 2001 From: Martin Thoma Date: Sun, 5 Jun 2022 12:35:28 +0200 Subject: [PATCH 26/27] STY: Minor changes --- PyPDF2/_page.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/PyPDF2/_page.py b/PyPDF2/_page.py index 432e42a4f..8b3367e1b 100644 --- a/PyPDF2/_page.py +++ b/PyPDF2/_page.py @@ -56,8 +56,7 @@ ) from .constants import PageAttributes as PG from .constants import Ressources as RES -from .errors import PdfReadWarning # ,PdfReadError -from .errors import PageSizeNotDefinedError +from .errors import PageSizeNotDefinedError, PdfReadWarning from .generic import ( ArrayObject, ContentStream, @@ -1069,7 +1068,7 @@ def _extract_text_old(self, Tj_sep: str = "", TJ_sep: str = "") -> str: text += "\n" return text - def debug_for_extract(self) -> str: + def _debug_for_extract(self) -> str: out = "" for ope, op in ContentStream( self["/Contents"].getObject(), self.pdf @@ -1100,7 +1099,7 @@ def _extract_text( obj: Any, pdf: Any, space_width: float = 200.0, - content_key: Union[None, str] = PG.CONTENTS, + content_key: Optional[str] = PG.CONTENTS, ) -> str: """ Locate all text drawing commands, in the order they are provided in the @@ -1109,10 +1108,12 @@ def _extract_text( be refined in the future. Do not rely on the order of text coming out of this function, as it will change if this function is made more sophisticated. - space_width : float = force default space width (if not extracted from font (default 200) - content_key : None/str = indicate the default key where to extract data; - None = the opbject; this allow to reuse the function on XObject - default = "/Content" + + :param float space_width: force default space width + (if not extracted from font (default 200) + :param Optional[str] content_key: indicate the default key where to extract data + None = the opbject; this allow to reuse the function on XObject + default = "/Content" :return: a string object. """ # code freely inspired from @twiggy ; see #711 From 7270fc3b9ad5a7e3320333e172322a966b076bcb Mon Sep 17 00:00:00 2001 From: Martin Thoma Date: Sun, 5 Jun 2022 12:56:18 +0200 Subject: [PATCH 27/27] Remove PdfWithXForm.pdf --- resources/PdfWithXForm.pdf | Bin 62703 -> 0 bytes tests/test_page.py | 9 +++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) delete mode 100644 resources/PdfWithXForm.pdf diff --git a/resources/PdfWithXForm.pdf b/resources/PdfWithXForm.pdf deleted file mode 100644 index 0da3cd5c6becc6c173089af8c68b009e2a2f17b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62703 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 diff --git a/tests/test_page.py b/tests/test_page.py index 52c4b0e1c..cd53d796e 100644 --- a/tests/test_page.py +++ b/tests/test_page.py @@ -1,6 +1,8 @@ import json import os +import urllib.request from copy import deepcopy +from io import BytesIO import pytest @@ -51,7 +53,7 @@ def test_read(meta): ("imagemagick-images.pdf", None), ("imagemagick-lzw.pdf", None), ("reportlab-inline-image.pdf", None), - ("PdfWithXForm.pdf", None), + ("https://arxiv.org/pdf/2201.00029.pdf", None), ], ) def test_page_operations(pdf_path, password): @@ -61,7 +63,10 @@ def test_page_operations(pdf_path, password): This should be done way more thoroughly: It should be checked if the output is as expected. """ - pdf_path = os.path.join(RESOURCE_ROOT, pdf_path) + if pdf_path.startswith("http"): + pdf_path = BytesIO(urllib.request.urlopen(pdf_path).read()) + else: + pdf_path = os.path.join(RESOURCE_ROOT, pdf_path) reader = PdfReader(pdf_path) if password: