From 5ce423ffcd9677536e9fc0876507540a9994e83f Mon Sep 17 00:00:00 2001 From: Gunnsteinn Hall Date: Mon, 10 Jul 2017 15:17:46 +0000 Subject: [PATCH] Cleaned up text encoding interface and rune<->glyph conversions. Added test example for Symbol and ZapfDingbats font/encodings. Closes #59. --- pdf/creator/creator_test.go | 8 +- pdf/creator/paragraph.go | 8 +- pdf/model/font.go | 2 +- pdf/model/fonts/zapfdingbats.go | 6 +- pdf/model/textencoding/encoder.go | 27 +- .../textencoding/glyphlist/encoding-list.go | 113 + .../textencoding/glyphlist/glyphlist.txt | 4327 +++++++++ .../textencoding/glyphlist/glyphparser.go | 223 + pdf/model/textencoding/glyphlist/macroman.txt | 32 + pdf/model/textencoding/glyphlist/symbol.txt | 189 + pdf/model/textencoding/glyphlist/winansi.txt | 28 + .../textencoding/glyphlist/zapfdingbats.txt | 247 + pdf/model/textencoding/glyphs_glyphlist.go | 8578 +++++++++++++++++ pdf/model/textencoding/glyphs_zapfdingbats.go | 418 + pdf/model/textencoding/symbol.go | 457 +- pdf/model/textencoding/utils.go | 56 + pdf/model/textencoding/winansi.go | 815 +- pdf/model/textencoding/winansi_test.go | 4 +- pdf/model/textencoding/zapfdingbats.go | 542 ++ 19 files changed, 15119 insertions(+), 961 deletions(-) create mode 100644 pdf/model/textencoding/glyphlist/encoding-list.go create mode 100644 pdf/model/textencoding/glyphlist/glyphlist.txt create mode 100644 pdf/model/textencoding/glyphlist/glyphparser.go create mode 100644 pdf/model/textencoding/glyphlist/macroman.txt create mode 100644 pdf/model/textencoding/glyphlist/symbol.txt create mode 100644 pdf/model/textencoding/glyphlist/winansi.txt create mode 100644 pdf/model/textencoding/glyphlist/zapfdingbats.txt create mode 100644 pdf/model/textencoding/glyphs_glyphlist.go create mode 100644 pdf/model/textencoding/glyphs_zapfdingbats.go create mode 100644 pdf/model/textencoding/utils.go create mode 100644 pdf/model/textencoding/zapfdingbats.go diff --git a/pdf/creator/creator_test.go b/pdf/creator/creator_test.go index e39cd5fd..d11bdcbf 100644 --- a/pdf/creator/creator_test.go +++ b/pdf/creator/creator_test.go @@ -359,7 +359,7 @@ func TestParagraphStandardFonts(t *testing.T) { "Times-BoldItalic: Lorem ipsum dolor sit amet, consectetur adipiscing elit...", "Times-Italic: Lorem ipsum dolor sit amet, consectetur adipiscing elit...", "\u2206\u0393\u0020\u2192\u0020\u0030", // Delta Gamma space arrowright space zero (demonstrate Symbol font) - "", + "\u2702\u0020\u2709\u261e\u2711\u2714", // a2 (scissors) space a117 (mail) a12 (finger) a17 (pen) a20 (checkmark) } for idx, font := range fonts { @@ -369,9 +369,13 @@ func TestParagraphStandardFonts(t *testing.T) { p.SetLineHeight(1.2) p.SetMargins(0, 0, 5, 0) + fmt.Printf("%s\n", names[idx]) if names[idx] == "Symbol" { - // For symbol font, need to use Symbol Encoder. + // For Symbol font, need to use Symbol encoder. p.SetEncoder(textencoding.NewSymbolEncoder()) + } else if names[idx] == "ZapfDingbats" { + // Font ZapfDingbats font, need to use ZapfDingbats encoder. + p.SetEncoder(textencoding.NewZapfDingbatsEncoder()) } err := creator.Draw(p) diff --git a/pdf/creator/paragraph.go b/pdf/creator/paragraph.go index a08f4ef6..7a63f716 100644 --- a/pdf/creator/paragraph.go +++ b/pdf/creator/paragraph.go @@ -198,7 +198,7 @@ func (p *paragraph) getTextWidth() float64 { w := float64(0.0) for _, rune := range p.text { - glyph, found := p.encoder.RuneToGlyphName(rune) + glyph, found := p.encoder.RuneToGlyph(rune) if !found { common.Log.Debug("Error! Glyph not found for rune: %s\n", rune) return -1 // XXX/FIXME: return error. @@ -232,7 +232,7 @@ func (p *paragraph) wrapText() error { widths := []float64{} for _, val := range runes { - glyph, found := p.encoder.RuneToGlyphName(val) + glyph, found := p.encoder.RuneToGlyph(val) if !found { common.Log.Debug("Error! Glyph not found for rune: %v\n", val) return errors.New("Glyph not found for rune") // XXX/FIXME: return error. @@ -401,7 +401,7 @@ func drawParagraphOnBlock(blk *Block, p *paragraph, ctx DrawContext) (DrawContex w := float64(0) spaces := 0 for _, runeVal := range runes { - glyph, found := p.encoder.RuneToGlyphName(runeVal) + glyph, found := p.encoder.RuneToGlyph(runeVal) if !found { common.Log.Debug("Rune 0x%x not supported by text encoder", runeVal) return ctx, errors.New("Unsupported rune in text encoding") @@ -444,7 +444,7 @@ func drawParagraphOnBlock(blk *Block, p *paragraph, ctx DrawContext) (DrawContex encStr := "" for _, runeVal := range runes { //creator.Add_Tj(core.PdfObjectString(tb.Encoder.Encode(line))) - glyph, found := p.encoder.RuneToGlyphName(runeVal) + glyph, found := p.encoder.RuneToGlyph(runeVal) if !found { common.Log.Debug("Rune 0x%x not supported by text encoder", runeVal) return ctx, errors.New("Unsupported rune in text encoding") diff --git a/pdf/model/font.go b/pdf/model/font.go index a90e45de..03b81d5c 100644 --- a/pdf/model/font.go +++ b/pdf/model/font.go @@ -135,7 +135,7 @@ func (font pdfFontTrueType) SetEncoder(encoder textencoding.TextEncoder) { func (font pdfFontTrueType) GetGlyphCharMetrics(glyph string) (fonts.CharMetrics, bool) { metrics := fonts.CharMetrics{} - code, found := font.Encoder.GlyphNameToCharcode(glyph) + code, found := font.Encoder.GlyphToCharcode(glyph) if !found { return metrics, false } diff --git a/pdf/model/fonts/zapfdingbats.go b/pdf/model/fonts/zapfdingbats.go index c5f6520d..176411bc 100644 --- a/pdf/model/fonts/zapfdingbats.go +++ b/pdf/model/fonts/zapfdingbats.go @@ -17,12 +17,12 @@ import ( // Font ZapfDingbats. Implements Font interface. // This is a built-in font and it is assumed that every reader has access to it. type fontZapfDingbats struct { + // By default encoder is not set, which means that we use the font's built in encoding. encoder textencoding.TextEncoder } func NewFontZapfDingbats() fontZapfDingbats { font := fontZapfDingbats{} - font.encoder = textencoding.NewWinAnsiTextEncoder() // Default return font } @@ -46,7 +46,9 @@ func (font fontZapfDingbats) ToPdfObject() core.PdfObject { fontDict.Set("Type", core.MakeName("Font")) fontDict.Set("Subtype", core.MakeName("Type1")) fontDict.Set("BaseFont", core.MakeName("ZapfDingbats")) - fontDict.Set("Encoding", font.encoder.ToPdfObject()) + if font.encoder != nil { + fontDict.Set("Encoding", font.encoder.ToPdfObject()) + } obj.PdfObject = fontDict return obj diff --git a/pdf/model/textencoding/encoder.go b/pdf/model/textencoding/encoder.go index afb17c29..bc102779 100644 --- a/pdf/model/textencoding/encoder.go +++ b/pdf/model/textencoding/encoder.go @@ -8,11 +8,32 @@ package textencoding import "github.com/unidoc/unidoc/pdf/core" type TextEncoder interface { + // Convert a raw utf8 string (series of runes) to an encoded string (series of character codes) to be used in PDF. Encode(raw string) string - CharcodeToGlyphName(code byte) (string, bool) + + // Conversion between character code and glyph name. + // The bool return flag is true if there was a match, and false otherwise. + CharcodeToGlyph(code byte) (string, bool) + + // Conversion between glyph name and character code. + // The bool return flag is true if there was a match, and false otherwise. + GlyphToCharcode(glyph string) (byte, bool) + + // Convert rune to character code. + // The bool return flag is true if there was a match, and false otherwise. RuneToCharcode(val rune) (byte, bool) - RuneToGlyphName(val rune) (string, bool) - GlyphNameToCharcode(glyph string) (byte, bool) + + // Convert character code to rune. + // The bool return flag is true if there was a match, and false otherwise. CharcodeToRune(charcode byte) (rune, bool) + + // Convert rune to glyph name. + // The bool return flag is true if there was a match, and false otherwise. + RuneToGlyph(val rune) (string, bool) + + // Convert glyph to rune. + // The bool return flag is true if there was a match, and false otherwise. + GlyphToRune(glyph string) (rune, bool) + ToPdfObject() core.PdfObject } diff --git a/pdf/model/textencoding/glyphlist/encoding-list.go b/pdf/model/textencoding/glyphlist/encoding-list.go new file mode 100644 index 00000000..c79add0b --- /dev/null +++ b/pdf/model/textencoding/glyphlist/encoding-list.go @@ -0,0 +1,113 @@ +package main + +// Utility to generate static maps of glyph <-> character codes for text encoding. + +import ( + "bufio" + "flag" + "fmt" + "io" + "os" + "strings" +) + +func main() { + + encodingfile := flag.String("encodingfile", "", "Encoding glyph list file") + method := flag.String("method", "charcode-to-glyph", "charcode-to-glyph/glyph-to-charcode") + + flag.Parse() + + if len(*encodingfile) == 0 { + fmt.Printf("Please specify an encoding file, see -h for options\n") + os.Exit(1) + } + + var err error + switch *method { + case "charcode-to-glyph": + err = charcodeToGlyphListPath(*encodingfile) + case "glyph-to-charcode": + err = glyphToCharcodeListPath(*encodingfile) + default: + fmt.Printf("Unsupported method, see -h for options\n") + os.Exit(1) + } + + if err != nil { + fmt.Printf("Error: %v\n", err) + os.Exit(1) + } +} + +func charcodeToGlyphListPath(filename string) error { + f, err := os.Open(filename) + if err != nil { + return err + } + defer f.Close() + + reader := bufio.NewReader(f) + + index := -1 + for { + line, err := reader.ReadString('\n') + if err != nil { + if err == io.EOF { + break + } + return err + } + + line = strings.Trim(line, " \r\n") + + //fmt.Printf("%s\n", line) + + parts := strings.Split(line, " ") + for _, part := range parts { + index++ + if part == "notdef" { + continue + } + fmt.Printf("\t%d: \"%s\",\n", index, part) + } + } + + return nil +} + +func glyphToCharcodeListPath(filename string) error { + f, err := os.Open(filename) + if err != nil { + return err + } + defer f.Close() + + reader := bufio.NewReader(f) + + index := -1 + for { + line, err := reader.ReadString('\n') + if err != nil { + if err == io.EOF { + break + } + return err + } + + line = strings.Trim(line, " \r\n") + + //fmt.Printf("%s\n", line) + + parts := strings.Split(line, " ") + for _, part := range parts { + index++ + if part == "notdef" { + continue + } + fmt.Printf("\t\"%s\": %d,\n", part, index) + } + } + + return nil +} diff --git a/pdf/model/textencoding/glyphlist/glyphlist.txt b/pdf/model/textencoding/glyphlist/glyphlist.txt new file mode 100644 index 00000000..f5bc9552 --- /dev/null +++ b/pdf/model/textencoding/glyphlist/glyphlist.txt @@ -0,0 +1,4327 @@ +# ----------------------------------------------------------- +# Copyright 2002, 2010, 2015 Adobe Systems Incorporated. +# All rights reserved. +# +# 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 Systems Incorporated 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 +# +A;0041 +AE;00C6 +AEacute;01FC +AEmacron;01E2 +AEsmall;F7E6 +Aacute;00C1 +Aacutesmall;F7E1 +Abreve;0102 +Abreveacute;1EAE +Abrevecyrillic;04D0 +Abrevedotbelow;1EB6 +Abrevegrave;1EB0 +Abrevehookabove;1EB2 +Abrevetilde;1EB4 +Acaron;01CD +Acircle;24B6 +Acircumflex;00C2 +Acircumflexacute;1EA4 +Acircumflexdotbelow;1EAC +Acircumflexgrave;1EA6 +Acircumflexhookabove;1EA8 +Acircumflexsmall;F7E2 +Acircumflextilde;1EAA +Acute;F6C9 +Acutesmall;F7B4 +Acyrillic;0410 +Adblgrave;0200 +Adieresis;00C4 +Adieresiscyrillic;04D2 +Adieresismacron;01DE +Adieresissmall;F7E4 +Adotbelow;1EA0 +Adotmacron;01E0 +Agrave;00C0 +Agravesmall;F7E0 +Ahookabove;1EA2 +Aiecyrillic;04D4 +Ainvertedbreve;0202 +Alpha;0391 +Alphatonos;0386 +Amacron;0100 +Amonospace;FF21 +Aogonek;0104 +Aring;00C5 +Aringacute;01FA +Aringbelow;1E00 +Aringsmall;F7E5 +Asmall;F761 +Atilde;00C3 +Atildesmall;F7E3 +Aybarmenian;0531 +B;0042 +Bcircle;24B7 +Bdotaccent;1E02 +Bdotbelow;1E04 +Becyrillic;0411 +Benarmenian;0532 +Beta;0392 +Bhook;0181 +Blinebelow;1E06 +Bmonospace;FF22 +Brevesmall;F6F4 +Bsmall;F762 +Btopbar;0182 +C;0043 +Caarmenian;053E +Cacute;0106 +Caron;F6CA +Caronsmall;F6F5 +Ccaron;010C +Ccedilla;00C7 +Ccedillaacute;1E08 +Ccedillasmall;F7E7 +Ccircle;24B8 +Ccircumflex;0108 +Cdot;010A +Cdotaccent;010A +Cedillasmall;F7B8 +Chaarmenian;0549 +Cheabkhasiancyrillic;04BC +Checyrillic;0427 +Chedescenderabkhasiancyrillic;04BE +Chedescendercyrillic;04B6 +Chedieresiscyrillic;04F4 +Cheharmenian;0543 +Chekhakassiancyrillic;04CB +Cheverticalstrokecyrillic;04B8 +Chi;03A7 +Chook;0187 +Circumflexsmall;F6F6 +Cmonospace;FF23 +Coarmenian;0551 +Csmall;F763 +D;0044 +DZ;01F1 +DZcaron;01C4 +Daarmenian;0534 +Dafrican;0189 +Dcaron;010E +Dcedilla;1E10 +Dcircle;24B9 +Dcircumflexbelow;1E12 +Dcroat;0110 +Ddotaccent;1E0A +Ddotbelow;1E0C +Decyrillic;0414 +Deicoptic;03EE +Delta;2206 +Deltagreek;0394 +Dhook;018A +Dieresis;F6CB +DieresisAcute;F6CC +DieresisGrave;F6CD +Dieresissmall;F7A8 +Digammagreek;03DC +Djecyrillic;0402 +Dlinebelow;1E0E +Dmonospace;FF24 +Dotaccentsmall;F6F7 +Dslash;0110 +Dsmall;F764 +Dtopbar;018B +Dz;01F2 +Dzcaron;01C5 +Dzeabkhasiancyrillic;04E0 +Dzecyrillic;0405 +Dzhecyrillic;040F +E;0045 +Eacute;00C9 +Eacutesmall;F7E9 +Ebreve;0114 +Ecaron;011A +Ecedillabreve;1E1C +Echarmenian;0535 +Ecircle;24BA +Ecircumflex;00CA +Ecircumflexacute;1EBE +Ecircumflexbelow;1E18 +Ecircumflexdotbelow;1EC6 +Ecircumflexgrave;1EC0 +Ecircumflexhookabove;1EC2 +Ecircumflexsmall;F7EA +Ecircumflextilde;1EC4 +Ecyrillic;0404 +Edblgrave;0204 +Edieresis;00CB +Edieresissmall;F7EB +Edot;0116 +Edotaccent;0116 +Edotbelow;1EB8 +Efcyrillic;0424 +Egrave;00C8 +Egravesmall;F7E8 +Eharmenian;0537 +Ehookabove;1EBA +Eightroman;2167 +Einvertedbreve;0206 +Eiotifiedcyrillic;0464 +Elcyrillic;041B +Elevenroman;216A +Emacron;0112 +Emacronacute;1E16 +Emacrongrave;1E14 +Emcyrillic;041C +Emonospace;FF25 +Encyrillic;041D +Endescendercyrillic;04A2 +Eng;014A +Enghecyrillic;04A4 +Enhookcyrillic;04C7 +Eogonek;0118 +Eopen;0190 +Epsilon;0395 +Epsilontonos;0388 +Ercyrillic;0420 +Ereversed;018E +Ereversedcyrillic;042D +Escyrillic;0421 +Esdescendercyrillic;04AA +Esh;01A9 +Esmall;F765 +Eta;0397 +Etarmenian;0538 +Etatonos;0389 +Eth;00D0 +Ethsmall;F7F0 +Etilde;1EBC +Etildebelow;1E1A +Euro;20AC +Ezh;01B7 +Ezhcaron;01EE +Ezhreversed;01B8 +F;0046 +Fcircle;24BB +Fdotaccent;1E1E +Feharmenian;0556 +Feicoptic;03E4 +Fhook;0191 +Fitacyrillic;0472 +Fiveroman;2164 +Fmonospace;FF26 +Fourroman;2163 +Fsmall;F766 +G;0047 +GBsquare;3387 +Gacute;01F4 +Gamma;0393 +Gammaafrican;0194 +Gangiacoptic;03EA +Gbreve;011E +Gcaron;01E6 +Gcedilla;0122 +Gcircle;24BC +Gcircumflex;011C +Gcommaaccent;0122 +Gdot;0120 +Gdotaccent;0120 +Gecyrillic;0413 +Ghadarmenian;0542 +Ghemiddlehookcyrillic;0494 +Ghestrokecyrillic;0492 +Gheupturncyrillic;0490 +Ghook;0193 +Gimarmenian;0533 +Gjecyrillic;0403 +Gmacron;1E20 +Gmonospace;FF27 +Grave;F6CE +Gravesmall;F760 +Gsmall;F767 +Gsmallhook;029B +Gstroke;01E4 +H;0048 +H18533;25CF +H18543;25AA +H18551;25AB +H22073;25A1 +HPsquare;33CB +Haabkhasiancyrillic;04A8 +Hadescendercyrillic;04B2 +Hardsigncyrillic;042A +Hbar;0126 +Hbrevebelow;1E2A +Hcedilla;1E28 +Hcircle;24BD +Hcircumflex;0124 +Hdieresis;1E26 +Hdotaccent;1E22 +Hdotbelow;1E24 +Hmonospace;FF28 +Hoarmenian;0540 +Horicoptic;03E8 +Hsmall;F768 +Hungarumlaut;F6CF +Hungarumlautsmall;F6F8 +Hzsquare;3390 +I;0049 +IAcyrillic;042F +IJ;0132 +IUcyrillic;042E +Iacute;00CD +Iacutesmall;F7ED +Ibreve;012C +Icaron;01CF +Icircle;24BE +Icircumflex;00CE +Icircumflexsmall;F7EE +Icyrillic;0406 +Idblgrave;0208 +Idieresis;00CF +Idieresisacute;1E2E +Idieresiscyrillic;04E4 +Idieresissmall;F7EF +Idot;0130 +Idotaccent;0130 +Idotbelow;1ECA +Iebrevecyrillic;04D6 +Iecyrillic;0415 +Ifraktur;2111 +Igrave;00CC +Igravesmall;F7EC +Ihookabove;1EC8 +Iicyrillic;0418 +Iinvertedbreve;020A +Iishortcyrillic;0419 +Imacron;012A +Imacroncyrillic;04E2 +Imonospace;FF29 +Iniarmenian;053B +Iocyrillic;0401 +Iogonek;012E +Iota;0399 +Iotaafrican;0196 +Iotadieresis;03AA +Iotatonos;038A +Ismall;F769 +Istroke;0197 +Itilde;0128 +Itildebelow;1E2C +Izhitsacyrillic;0474 +Izhitsadblgravecyrillic;0476 +J;004A +Jaarmenian;0541 +Jcircle;24BF +Jcircumflex;0134 +Jecyrillic;0408 +Jheharmenian;054B +Jmonospace;FF2A +Jsmall;F76A +K;004B +KBsquare;3385 +KKsquare;33CD +Kabashkircyrillic;04A0 +Kacute;1E30 +Kacyrillic;041A +Kadescendercyrillic;049A +Kahookcyrillic;04C3 +Kappa;039A +Kastrokecyrillic;049E +Kaverticalstrokecyrillic;049C +Kcaron;01E8 +Kcedilla;0136 +Kcircle;24C0 +Kcommaaccent;0136 +Kdotbelow;1E32 +Keharmenian;0554 +Kenarmenian;053F +Khacyrillic;0425 +Kheicoptic;03E6 +Khook;0198 +Kjecyrillic;040C +Klinebelow;1E34 +Kmonospace;FF2B +Koppacyrillic;0480 +Koppagreek;03DE +Ksicyrillic;046E +Ksmall;F76B +L;004C +LJ;01C7 +LL;F6BF +Lacute;0139 +Lambda;039B +Lcaron;013D +Lcedilla;013B +Lcircle;24C1 +Lcircumflexbelow;1E3C +Lcommaaccent;013B +Ldot;013F +Ldotaccent;013F +Ldotbelow;1E36 +Ldotbelowmacron;1E38 +Liwnarmenian;053C +Lj;01C8 +Ljecyrillic;0409 +Llinebelow;1E3A +Lmonospace;FF2C +Lslash;0141 +Lslashsmall;F6F9 +Lsmall;F76C +M;004D +MBsquare;3386 +Macron;F6D0 +Macronsmall;F7AF +Macute;1E3E +Mcircle;24C2 +Mdotaccent;1E40 +Mdotbelow;1E42 +Menarmenian;0544 +Mmonospace;FF2D +Msmall;F76D +Mturned;019C +Mu;039C +N;004E +NJ;01CA +Nacute;0143 +Ncaron;0147 +Ncedilla;0145 +Ncircle;24C3 +Ncircumflexbelow;1E4A +Ncommaaccent;0145 +Ndotaccent;1E44 +Ndotbelow;1E46 +Nhookleft;019D +Nineroman;2168 +Nj;01CB +Njecyrillic;040A +Nlinebelow;1E48 +Nmonospace;FF2E +Nowarmenian;0546 +Nsmall;F76E +Ntilde;00D1 +Ntildesmall;F7F1 +Nu;039D +O;004F +OE;0152 +OEsmall;F6FA +Oacute;00D3 +Oacutesmall;F7F3 +Obarredcyrillic;04E8 +Obarreddieresiscyrillic;04EA +Obreve;014E +Ocaron;01D1 +Ocenteredtilde;019F +Ocircle;24C4 +Ocircumflex;00D4 +Ocircumflexacute;1ED0 +Ocircumflexdotbelow;1ED8 +Ocircumflexgrave;1ED2 +Ocircumflexhookabove;1ED4 +Ocircumflexsmall;F7F4 +Ocircumflextilde;1ED6 +Ocyrillic;041E +Odblacute;0150 +Odblgrave;020C +Odieresis;00D6 +Odieresiscyrillic;04E6 +Odieresissmall;F7F6 +Odotbelow;1ECC +Ogoneksmall;F6FB +Ograve;00D2 +Ogravesmall;F7F2 +Oharmenian;0555 +Ohm;2126 +Ohookabove;1ECE +Ohorn;01A0 +Ohornacute;1EDA +Ohorndotbelow;1EE2 +Ohorngrave;1EDC +Ohornhookabove;1EDE +Ohorntilde;1EE0 +Ohungarumlaut;0150 +Oi;01A2 +Oinvertedbreve;020E +Omacron;014C +Omacronacute;1E52 +Omacrongrave;1E50 +Omega;2126 +Omegacyrillic;0460 +Omegagreek;03A9 +Omegaroundcyrillic;047A +Omegatitlocyrillic;047C +Omegatonos;038F +Omicron;039F +Omicrontonos;038C +Omonospace;FF2F +Oneroman;2160 +Oogonek;01EA +Oogonekmacron;01EC +Oopen;0186 +Oslash;00D8 +Oslashacute;01FE +Oslashsmall;F7F8 +Osmall;F76F +Ostrokeacute;01FE +Otcyrillic;047E +Otilde;00D5 +Otildeacute;1E4C +Otildedieresis;1E4E +Otildesmall;F7F5 +P;0050 +Pacute;1E54 +Pcircle;24C5 +Pdotaccent;1E56 +Pecyrillic;041F +Peharmenian;054A +Pemiddlehookcyrillic;04A6 +Phi;03A6 +Phook;01A4 +Pi;03A0 +Piwrarmenian;0553 +Pmonospace;FF30 +Psi;03A8 +Psicyrillic;0470 +Psmall;F770 +Q;0051 +Qcircle;24C6 +Qmonospace;FF31 +Qsmall;F771 +R;0052 +Raarmenian;054C +Racute;0154 +Rcaron;0158 +Rcedilla;0156 +Rcircle;24C7 +Rcommaaccent;0156 +Rdblgrave;0210 +Rdotaccent;1E58 +Rdotbelow;1E5A +Rdotbelowmacron;1E5C +Reharmenian;0550 +Rfraktur;211C +Rho;03A1 +Ringsmall;F6FC +Rinvertedbreve;0212 +Rlinebelow;1E5E +Rmonospace;FF32 +Rsmall;F772 +Rsmallinverted;0281 +Rsmallinvertedsuperior;02B6 +S;0053 +SF010000;250C +SF020000;2514 +SF030000;2510 +SF040000;2518 +SF050000;253C +SF060000;252C +SF070000;2534 +SF080000;251C +SF090000;2524 +SF100000;2500 +SF110000;2502 +SF190000;2561 +SF200000;2562 +SF210000;2556 +SF220000;2555 +SF230000;2563 +SF240000;2551 +SF250000;2557 +SF260000;255D +SF270000;255C +SF280000;255B +SF360000;255E +SF370000;255F +SF380000;255A +SF390000;2554 +SF400000;2569 +SF410000;2566 +SF420000;2560 +SF430000;2550 +SF440000;256C +SF450000;2567 +SF460000;2568 +SF470000;2564 +SF480000;2565 +SF490000;2559 +SF500000;2558 +SF510000;2552 +SF520000;2553 +SF530000;256B +SF540000;256A +Sacute;015A +Sacutedotaccent;1E64 +Sampigreek;03E0 +Scaron;0160 +Scarondotaccent;1E66 +Scaronsmall;F6FD +Scedilla;015E +Schwa;018F +Schwacyrillic;04D8 +Schwadieresiscyrillic;04DA +Scircle;24C8 +Scircumflex;015C +Scommaaccent;0218 +Sdotaccent;1E60 +Sdotbelow;1E62 +Sdotbelowdotaccent;1E68 +Seharmenian;054D +Sevenroman;2166 +Shaarmenian;0547 +Shacyrillic;0428 +Shchacyrillic;0429 +Sheicoptic;03E2 +Shhacyrillic;04BA +Shimacoptic;03EC +Sigma;03A3 +Sixroman;2165 +Smonospace;FF33 +Softsigncyrillic;042C +Ssmall;F773 +Stigmagreek;03DA +T;0054 +Tau;03A4 +Tbar;0166 +Tcaron;0164 +Tcedilla;0162 +Tcircle;24C9 +Tcircumflexbelow;1E70 +Tcommaaccent;0162 +Tdotaccent;1E6A +Tdotbelow;1E6C +Tecyrillic;0422 +Tedescendercyrillic;04AC +Tenroman;2169 +Tetsecyrillic;04B4 +Theta;0398 +Thook;01AC +Thorn;00DE +Thornsmall;F7FE +Threeroman;2162 +Tildesmall;F6FE +Tiwnarmenian;054F +Tlinebelow;1E6E +Tmonospace;FF34 +Toarmenian;0539 +Tonefive;01BC +Tonesix;0184 +Tonetwo;01A7 +Tretroflexhook;01AE +Tsecyrillic;0426 +Tshecyrillic;040B +Tsmall;F774 +Twelveroman;216B +Tworoman;2161 +U;0055 +Uacute;00DA +Uacutesmall;F7FA +Ubreve;016C +Ucaron;01D3 +Ucircle;24CA +Ucircumflex;00DB +Ucircumflexbelow;1E76 +Ucircumflexsmall;F7FB +Ucyrillic;0423 +Udblacute;0170 +Udblgrave;0214 +Udieresis;00DC +Udieresisacute;01D7 +Udieresisbelow;1E72 +Udieresiscaron;01D9 +Udieresiscyrillic;04F0 +Udieresisgrave;01DB +Udieresismacron;01D5 +Udieresissmall;F7FC +Udotbelow;1EE4 +Ugrave;00D9 +Ugravesmall;F7F9 +Uhookabove;1EE6 +Uhorn;01AF +Uhornacute;1EE8 +Uhorndotbelow;1EF0 +Uhorngrave;1EEA +Uhornhookabove;1EEC +Uhorntilde;1EEE +Uhungarumlaut;0170 +Uhungarumlautcyrillic;04F2 +Uinvertedbreve;0216 +Ukcyrillic;0478 +Umacron;016A +Umacroncyrillic;04EE +Umacrondieresis;1E7A +Umonospace;FF35 +Uogonek;0172 +Upsilon;03A5 +Upsilon1;03D2 +Upsilonacutehooksymbolgreek;03D3 +Upsilonafrican;01B1 +Upsilondieresis;03AB +Upsilondieresishooksymbolgreek;03D4 +Upsilonhooksymbol;03D2 +Upsilontonos;038E +Uring;016E +Ushortcyrillic;040E +Usmall;F775 +Ustraightcyrillic;04AE +Ustraightstrokecyrillic;04B0 +Utilde;0168 +Utildeacute;1E78 +Utildebelow;1E74 +V;0056 +Vcircle;24CB +Vdotbelow;1E7E +Vecyrillic;0412 +Vewarmenian;054E +Vhook;01B2 +Vmonospace;FF36 +Voarmenian;0548 +Vsmall;F776 +Vtilde;1E7C +W;0057 +Wacute;1E82 +Wcircle;24CC +Wcircumflex;0174 +Wdieresis;1E84 +Wdotaccent;1E86 +Wdotbelow;1E88 +Wgrave;1E80 +Wmonospace;FF37 +Wsmall;F777 +X;0058 +Xcircle;24CD +Xdieresis;1E8C +Xdotaccent;1E8A +Xeharmenian;053D +Xi;039E +Xmonospace;FF38 +Xsmall;F778 +Y;0059 +Yacute;00DD +Yacutesmall;F7FD +Yatcyrillic;0462 +Ycircle;24CE +Ycircumflex;0176 +Ydieresis;0178 +Ydieresissmall;F7FF +Ydotaccent;1E8E +Ydotbelow;1EF4 +Yericyrillic;042B +Yerudieresiscyrillic;04F8 +Ygrave;1EF2 +Yhook;01B3 +Yhookabove;1EF6 +Yiarmenian;0545 +Yicyrillic;0407 +Yiwnarmenian;0552 +Ymonospace;FF39 +Ysmall;F779 +Ytilde;1EF8 +Yusbigcyrillic;046A +Yusbigiotifiedcyrillic;046C +Yuslittlecyrillic;0466 +Yuslittleiotifiedcyrillic;0468 +Z;005A +Zaarmenian;0536 +Zacute;0179 +Zcaron;017D +Zcaronsmall;F6FF +Zcircle;24CF +Zcircumflex;1E90 +Zdot;017B +Zdotaccent;017B +Zdotbelow;1E92 +Zecyrillic;0417 +Zedescendercyrillic;0498 +Zedieresiscyrillic;04DE +Zeta;0396 +Zhearmenian;053A +Zhebrevecyrillic;04C1 +Zhecyrillic;0416 +Zhedescendercyrillic;0496 +Zhedieresiscyrillic;04DC +Zlinebelow;1E94 +Zmonospace;FF3A +Zsmall;F77A +Zstroke;01B5 +a;0061 +aabengali;0986 +aacute;00E1 +aadeva;0906 +aagujarati;0A86 +aagurmukhi;0A06 +aamatragurmukhi;0A3E +aarusquare;3303 +aavowelsignbengali;09BE +aavowelsigndeva;093E +aavowelsigngujarati;0ABE +abbreviationmarkarmenian;055F +abbreviationsigndeva;0970 +abengali;0985 +abopomofo;311A +abreve;0103 +abreveacute;1EAF +abrevecyrillic;04D1 +abrevedotbelow;1EB7 +abrevegrave;1EB1 +abrevehookabove;1EB3 +abrevetilde;1EB5 +acaron;01CE +acircle;24D0 +acircumflex;00E2 +acircumflexacute;1EA5 +acircumflexdotbelow;1EAD +acircumflexgrave;1EA7 +acircumflexhookabove;1EA9 +acircumflextilde;1EAB +acute;00B4 +acutebelowcmb;0317 +acutecmb;0301 +acutecomb;0301 +acutedeva;0954 +acutelowmod;02CF +acutetonecmb;0341 +acyrillic;0430 +adblgrave;0201 +addakgurmukhi;0A71 +adeva;0905 +adieresis;00E4 +adieresiscyrillic;04D3 +adieresismacron;01DF +adotbelow;1EA1 +adotmacron;01E1 +ae;00E6 +aeacute;01FD +aekorean;3150 +aemacron;01E3 +afii00208;2015 +afii08941;20A4 +afii10017;0410 +afii10018;0411 +afii10019;0412 +afii10020;0413 +afii10021;0414 +afii10022;0415 +afii10023;0401 +afii10024;0416 +afii10025;0417 +afii10026;0418 +afii10027;0419 +afii10028;041A +afii10029;041B +afii10030;041C +afii10031;041D +afii10032;041E +afii10033;041F +afii10034;0420 +afii10035;0421 +afii10036;0422 +afii10037;0423 +afii10038;0424 +afii10039;0425 +afii10040;0426 +afii10041;0427 +afii10042;0428 +afii10043;0429 +afii10044;042A +afii10045;042B +afii10046;042C +afii10047;042D +afii10048;042E +afii10049;042F +afii10050;0490 +afii10051;0402 +afii10052;0403 +afii10053;0404 +afii10054;0405 +afii10055;0406 +afii10056;0407 +afii10057;0408 +afii10058;0409 +afii10059;040A +afii10060;040B +afii10061;040C +afii10062;040E +afii10063;F6C4 +afii10064;F6C5 +afii10065;0430 +afii10066;0431 +afii10067;0432 +afii10068;0433 +afii10069;0434 +afii10070;0435 +afii10071;0451 +afii10072;0436 +afii10073;0437 +afii10074;0438 +afii10075;0439 +afii10076;043A +afii10077;043B +afii10078;043C +afii10079;043D +afii10080;043E +afii10081;043F +afii10082;0440 +afii10083;0441 +afii10084;0442 +afii10085;0443 +afii10086;0444 +afii10087;0445 +afii10088;0446 +afii10089;0447 +afii10090;0448 +afii10091;0449 +afii10092;044A +afii10093;044B +afii10094;044C +afii10095;044D +afii10096;044E +afii10097;044F +afii10098;0491 +afii10099;0452 +afii10100;0453 +afii10101;0454 +afii10102;0455 +afii10103;0456 +afii10104;0457 +afii10105;0458 +afii10106;0459 +afii10107;045A +afii10108;045B +afii10109;045C +afii10110;045E +afii10145;040F +afii10146;0462 +afii10147;0472 +afii10148;0474 +afii10192;F6C6 +afii10193;045F +afii10194;0463 +afii10195;0473 +afii10196;0475 +afii10831;F6C7 +afii10832;F6C8 +afii10846;04D9 +afii299;200E +afii300;200F +afii301;200D +afii57381;066A +afii57388;060C +afii57392;0660 +afii57393;0661 +afii57394;0662 +afii57395;0663 +afii57396;0664 +afii57397;0665 +afii57398;0666 +afii57399;0667 +afii57400;0668 +afii57401;0669 +afii57403;061B +afii57407;061F +afii57409;0621 +afii57410;0622 +afii57411;0623 +afii57412;0624 +afii57413;0625 +afii57414;0626 +afii57415;0627 +afii57416;0628 +afii57417;0629 +afii57418;062A +afii57419;062B +afii57420;062C +afii57421;062D +afii57422;062E +afii57423;062F +afii57424;0630 +afii57425;0631 +afii57426;0632 +afii57427;0633 +afii57428;0634 +afii57429;0635 +afii57430;0636 +afii57431;0637 +afii57432;0638 +afii57433;0639 +afii57434;063A +afii57440;0640 +afii57441;0641 +afii57442;0642 +afii57443;0643 +afii57444;0644 +afii57445;0645 +afii57446;0646 +afii57448;0648 +afii57449;0649 +afii57450;064A +afii57451;064B +afii57452;064C +afii57453;064D +afii57454;064E +afii57455;064F +afii57456;0650 +afii57457;0651 +afii57458;0652 +afii57470;0647 +afii57505;06A4 +afii57506;067E +afii57507;0686 +afii57508;0698 +afii57509;06AF +afii57511;0679 +afii57512;0688 +afii57513;0691 +afii57514;06BA +afii57519;06D2 +afii57534;06D5 +afii57636;20AA +afii57645;05BE +afii57658;05C3 +afii57664;05D0 +afii57665;05D1 +afii57666;05D2 +afii57667;05D3 +afii57668;05D4 +afii57669;05D5 +afii57670;05D6 +afii57671;05D7 +afii57672;05D8 +afii57673;05D9 +afii57674;05DA +afii57675;05DB +afii57676;05DC +afii57677;05DD +afii57678;05DE +afii57679;05DF +afii57680;05E0 +afii57681;05E1 +afii57682;05E2 +afii57683;05E3 +afii57684;05E4 +afii57685;05E5 +afii57686;05E6 +afii57687;05E7 +afii57688;05E8 +afii57689;05E9 +afii57690;05EA +afii57694;FB2A +afii57695;FB2B +afii57700;FB4B +afii57705;FB1F +afii57716;05F0 +afii57717;05F1 +afii57718;05F2 +afii57723;FB35 +afii57793;05B4 +afii57794;05B5 +afii57795;05B6 +afii57796;05BB +afii57797;05B8 +afii57798;05B7 +afii57799;05B0 +afii57800;05B2 +afii57801;05B1 +afii57802;05B3 +afii57803;05C2 +afii57804;05C1 +afii57806;05B9 +afii57807;05BC +afii57839;05BD +afii57841;05BF +afii57842;05C0 +afii57929;02BC +afii61248;2105 +afii61289;2113 +afii61352;2116 +afii61573;202C +afii61574;202D +afii61575;202E +afii61664;200C +afii63167;066D +afii64937;02BD +agrave;00E0 +agujarati;0A85 +agurmukhi;0A05 +ahiragana;3042 +ahookabove;1EA3 +aibengali;0990 +aibopomofo;311E +aideva;0910 +aiecyrillic;04D5 +aigujarati;0A90 +aigurmukhi;0A10 +aimatragurmukhi;0A48 +ainarabic;0639 +ainfinalarabic;FECA +aininitialarabic;FECB +ainmedialarabic;FECC +ainvertedbreve;0203 +aivowelsignbengali;09C8 +aivowelsigndeva;0948 +aivowelsigngujarati;0AC8 +akatakana;30A2 +akatakanahalfwidth;FF71 +akorean;314F +alef;05D0 +alefarabic;0627 +alefdageshhebrew;FB30 +aleffinalarabic;FE8E +alefhamzaabovearabic;0623 +alefhamzaabovefinalarabic;FE84 +alefhamzabelowarabic;0625 +alefhamzabelowfinalarabic;FE88 +alefhebrew;05D0 +aleflamedhebrew;FB4F +alefmaddaabovearabic;0622 +alefmaddaabovefinalarabic;FE82 +alefmaksuraarabic;0649 +alefmaksurafinalarabic;FEF0 +alefmaksurainitialarabic;FEF3 +alefmaksuramedialarabic;FEF4 +alefpatahhebrew;FB2E +alefqamatshebrew;FB2F +aleph;2135 +allequal;224C +alpha;03B1 +alphatonos;03AC +amacron;0101 +amonospace;FF41 +ampersand;0026 +ampersandmonospace;FF06 +ampersandsmall;F726 +amsquare;33C2 +anbopomofo;3122 +angbopomofo;3124 +angkhankhuthai;0E5A +angle;2220 +anglebracketleft;3008 +anglebracketleftvertical;FE3F +anglebracketright;3009 +anglebracketrightvertical;FE40 +angleleft;2329 +angleright;232A +angstrom;212B +anoteleia;0387 +anudattadeva;0952 +anusvarabengali;0982 +anusvaradeva;0902 +anusvaragujarati;0A82 +aogonek;0105 +apaatosquare;3300 +aparen;249C +apostrophearmenian;055A +apostrophemod;02BC +apple;F8FF +approaches;2250 +approxequal;2248 +approxequalorimage;2252 +approximatelyequal;2245 +araeaekorean;318E +araeakorean;318D +arc;2312 +arighthalfring;1E9A +aring;00E5 +aringacute;01FB +aringbelow;1E01 +arrowboth;2194 +arrowdashdown;21E3 +arrowdashleft;21E0 +arrowdashright;21E2 +arrowdashup;21E1 +arrowdblboth;21D4 +arrowdbldown;21D3 +arrowdblleft;21D0 +arrowdblright;21D2 +arrowdblup;21D1 +arrowdown;2193 +arrowdownleft;2199 +arrowdownright;2198 +arrowdownwhite;21E9 +arrowheaddownmod;02C5 +arrowheadleftmod;02C2 +arrowheadrightmod;02C3 +arrowheadupmod;02C4 +arrowhorizex;F8E7 +arrowleft;2190 +arrowleftdbl;21D0 +arrowleftdblstroke;21CD +arrowleftoverright;21C6 +arrowleftwhite;21E6 +arrowright;2192 +arrowrightdblstroke;21CF +arrowrightheavy;279E +arrowrightoverleft;21C4 +arrowrightwhite;21E8 +arrowtableft;21E4 +arrowtabright;21E5 +arrowup;2191 +arrowupdn;2195 +arrowupdnbse;21A8 +arrowupdownbase;21A8 +arrowupleft;2196 +arrowupleftofdown;21C5 +arrowupright;2197 +arrowupwhite;21E7 +arrowvertex;F8E6 +asciicircum;005E +asciicircummonospace;FF3E +asciitilde;007E +asciitildemonospace;FF5E +ascript;0251 +ascriptturned;0252 +asmallhiragana;3041 +asmallkatakana;30A1 +asmallkatakanahalfwidth;FF67 +asterisk;002A +asteriskaltonearabic;066D +asteriskarabic;066D +asteriskmath;2217 +asteriskmonospace;FF0A +asterisksmall;FE61 +asterism;2042 +asuperior;F6E9 +asymptoticallyequal;2243 +at;0040 +atilde;00E3 +atmonospace;FF20 +atsmall;FE6B +aturned;0250 +aubengali;0994 +aubopomofo;3120 +audeva;0914 +augujarati;0A94 +augurmukhi;0A14 +aulengthmarkbengali;09D7 +aumatragurmukhi;0A4C +auvowelsignbengali;09CC +auvowelsigndeva;094C +auvowelsigngujarati;0ACC +avagrahadeva;093D +aybarmenian;0561 +ayin;05E2 +ayinaltonehebrew;FB20 +ayinhebrew;05E2 +b;0062 +babengali;09AC +backslash;005C +backslashmonospace;FF3C +badeva;092C +bagujarati;0AAC +bagurmukhi;0A2C +bahiragana;3070 +bahtthai;0E3F +bakatakana;30D0 +bar;007C +barmonospace;FF5C +bbopomofo;3105 +bcircle;24D1 +bdotaccent;1E03 +bdotbelow;1E05 +beamedsixteenthnotes;266C +because;2235 +becyrillic;0431 +beharabic;0628 +behfinalarabic;FE90 +behinitialarabic;FE91 +behiragana;3079 +behmedialarabic;FE92 +behmeeminitialarabic;FC9F +behmeemisolatedarabic;FC08 +behnoonfinalarabic;FC6D +bekatakana;30D9 +benarmenian;0562 +bet;05D1 +beta;03B2 +betasymbolgreek;03D0 +betdagesh;FB31 +betdageshhebrew;FB31 +bethebrew;05D1 +betrafehebrew;FB4C +bhabengali;09AD +bhadeva;092D +bhagujarati;0AAD +bhagurmukhi;0A2D +bhook;0253 +bihiragana;3073 +bikatakana;30D3 +bilabialclick;0298 +bindigurmukhi;0A02 +birusquare;3331 +blackcircle;25CF +blackdiamond;25C6 +blackdownpointingtriangle;25BC +blackleftpointingpointer;25C4 +blackleftpointingtriangle;25C0 +blacklenticularbracketleft;3010 +blacklenticularbracketleftvertical;FE3B +blacklenticularbracketright;3011 +blacklenticularbracketrightvertical;FE3C +blacklowerlefttriangle;25E3 +blacklowerrighttriangle;25E2 +blackrectangle;25AC +blackrightpointingpointer;25BA +blackrightpointingtriangle;25B6 +blacksmallsquare;25AA +blacksmilingface;263B +blacksquare;25A0 +blackstar;2605 +blackupperlefttriangle;25E4 +blackupperrighttriangle;25E5 +blackuppointingsmalltriangle;25B4 +blackuppointingtriangle;25B2 +blank;2423 +blinebelow;1E07 +block;2588 +bmonospace;FF42 +bobaimaithai;0E1A +bohiragana;307C +bokatakana;30DC +bparen;249D +bqsquare;33C3 +braceex;F8F4 +braceleft;007B +braceleftbt;F8F3 +braceleftmid;F8F2 +braceleftmonospace;FF5B +braceleftsmall;FE5B +bracelefttp;F8F1 +braceleftvertical;FE37 +braceright;007D +bracerightbt;F8FE +bracerightmid;F8FD +bracerightmonospace;FF5D +bracerightsmall;FE5C +bracerighttp;F8FC +bracerightvertical;FE38 +bracketleft;005B +bracketleftbt;F8F0 +bracketleftex;F8EF +bracketleftmonospace;FF3B +bracketlefttp;F8EE +bracketright;005D +bracketrightbt;F8FB +bracketrightex;F8FA +bracketrightmonospace;FF3D +bracketrighttp;F8F9 +breve;02D8 +brevebelowcmb;032E +brevecmb;0306 +breveinvertedbelowcmb;032F +breveinvertedcmb;0311 +breveinverteddoublecmb;0361 +bridgebelowcmb;032A +bridgeinvertedbelowcmb;033A +brokenbar;00A6 +bstroke;0180 +bsuperior;F6EA +btopbar;0183 +buhiragana;3076 +bukatakana;30D6 +bullet;2022 +bulletinverse;25D8 +bulletoperator;2219 +bullseye;25CE +c;0063 +caarmenian;056E +cabengali;099A +cacute;0107 +cadeva;091A +cagujarati;0A9A +cagurmukhi;0A1A +calsquare;3388 +candrabindubengali;0981 +candrabinducmb;0310 +candrabindudeva;0901 +candrabindugujarati;0A81 +capslock;21EA +careof;2105 +caron;02C7 +caronbelowcmb;032C +caroncmb;030C +carriagereturn;21B5 +cbopomofo;3118 +ccaron;010D +ccedilla;00E7 +ccedillaacute;1E09 +ccircle;24D2 +ccircumflex;0109 +ccurl;0255 +cdot;010B +cdotaccent;010B +cdsquare;33C5 +cedilla;00B8 +cedillacmb;0327 +cent;00A2 +centigrade;2103 +centinferior;F6DF +centmonospace;FFE0 +centoldstyle;F7A2 +centsuperior;F6E0 +chaarmenian;0579 +chabengali;099B +chadeva;091B +chagujarati;0A9B +chagurmukhi;0A1B +chbopomofo;3114 +cheabkhasiancyrillic;04BD +checkmark;2713 +checyrillic;0447 +chedescenderabkhasiancyrillic;04BF +chedescendercyrillic;04B7 +chedieresiscyrillic;04F5 +cheharmenian;0573 +chekhakassiancyrillic;04CC +cheverticalstrokecyrillic;04B9 +chi;03C7 +chieuchacirclekorean;3277 +chieuchaparenkorean;3217 +chieuchcirclekorean;3269 +chieuchkorean;314A +chieuchparenkorean;3209 +chochangthai;0E0A +chochanthai;0E08 +chochingthai;0E09 +chochoethai;0E0C +chook;0188 +cieucacirclekorean;3276 +cieucaparenkorean;3216 +cieuccirclekorean;3268 +cieuckorean;3148 +cieucparenkorean;3208 +cieucuparenkorean;321C +circle;25CB +circlemultiply;2297 +circleot;2299 +circleplus;2295 +circlepostalmark;3036 +circlewithlefthalfblack;25D0 +circlewithrighthalfblack;25D1 +circumflex;02C6 +circumflexbelowcmb;032D +circumflexcmb;0302 +clear;2327 +clickalveolar;01C2 +clickdental;01C0 +clicklateral;01C1 +clickretroflex;01C3 +club;2663 +clubsuitblack;2663 +clubsuitwhite;2667 +cmcubedsquare;33A4 +cmonospace;FF43 +cmsquaredsquare;33A0 +coarmenian;0581 +colon;003A +colonmonetary;20A1 +colonmonospace;FF1A +colonsign;20A1 +colonsmall;FE55 +colontriangularhalfmod;02D1 +colontriangularmod;02D0 +comma;002C +commaabovecmb;0313 +commaaboverightcmb;0315 +commaaccent;F6C3 +commaarabic;060C +commaarmenian;055D +commainferior;F6E1 +commamonospace;FF0C +commareversedabovecmb;0314 +commareversedmod;02BD +commasmall;FE50 +commasuperior;F6E2 +commaturnedabovecmb;0312 +commaturnedmod;02BB +compass;263C +congruent;2245 +contourintegral;222E +control;2303 +controlACK;0006 +controlBEL;0007 +controlBS;0008 +controlCAN;0018 +controlCR;000D +controlDC1;0011 +controlDC2;0012 +controlDC3;0013 +controlDC4;0014 +controlDEL;007F +controlDLE;0010 +controlEM;0019 +controlENQ;0005 +controlEOT;0004 +controlESC;001B +controlETB;0017 +controlETX;0003 +controlFF;000C +controlFS;001C +controlGS;001D +controlHT;0009 +controlLF;000A +controlNAK;0015 +controlRS;001E +controlSI;000F +controlSO;000E +controlSOT;0002 +controlSTX;0001 +controlSUB;001A +controlSYN;0016 +controlUS;001F +controlVT;000B +copyright;00A9 +copyrightsans;F8E9 +copyrightserif;F6D9 +cornerbracketleft;300C +cornerbracketlefthalfwidth;FF62 +cornerbracketleftvertical;FE41 +cornerbracketright;300D +cornerbracketrighthalfwidth;FF63 +cornerbracketrightvertical;FE42 +corporationsquare;337F +cosquare;33C7 +coverkgsquare;33C6 +cparen;249E +cruzeiro;20A2 +cstretched;0297 +curlyand;22CF +curlyor;22CE +currency;00A4 +cyrBreve;F6D1 +cyrFlex;F6D2 +cyrbreve;F6D4 +cyrflex;F6D5 +d;0064 +daarmenian;0564 +dabengali;09A6 +dadarabic;0636 +dadeva;0926 +dadfinalarabic;FEBE +dadinitialarabic;FEBF +dadmedialarabic;FEC0 +dagesh;05BC +dageshhebrew;05BC +dagger;2020 +daggerdbl;2021 +dagujarati;0AA6 +dagurmukhi;0A26 +dahiragana;3060 +dakatakana;30C0 +dalarabic;062F +dalet;05D3 +daletdagesh;FB33 +daletdageshhebrew;FB33 +dalethatafpatah;05D3 05B2 +dalethatafpatahhebrew;05D3 05B2 +dalethatafsegol;05D3 05B1 +dalethatafsegolhebrew;05D3 05B1 +dalethebrew;05D3 +dalethiriq;05D3 05B4 +dalethiriqhebrew;05D3 05B4 +daletholam;05D3 05B9 +daletholamhebrew;05D3 05B9 +daletpatah;05D3 05B7 +daletpatahhebrew;05D3 05B7 +daletqamats;05D3 05B8 +daletqamatshebrew;05D3 05B8 +daletqubuts;05D3 05BB +daletqubutshebrew;05D3 05BB +daletsegol;05D3 05B6 +daletsegolhebrew;05D3 05B6 +daletsheva;05D3 05B0 +daletshevahebrew;05D3 05B0 +dalettsere;05D3 05B5 +dalettserehebrew;05D3 05B5 +dalfinalarabic;FEAA +dammaarabic;064F +dammalowarabic;064F +dammatanaltonearabic;064C +dammatanarabic;064C +danda;0964 +dargahebrew;05A7 +dargalefthebrew;05A7 +dasiapneumatacyrilliccmb;0485 +dblGrave;F6D3 +dblanglebracketleft;300A +dblanglebracketleftvertical;FE3D +dblanglebracketright;300B +dblanglebracketrightvertical;FE3E +dblarchinvertedbelowcmb;032B +dblarrowleft;21D4 +dblarrowright;21D2 +dbldanda;0965 +dblgrave;F6D6 +dblgravecmb;030F +dblintegral;222C +dbllowline;2017 +dbllowlinecmb;0333 +dbloverlinecmb;033F +dblprimemod;02BA +dblverticalbar;2016 +dblverticallineabovecmb;030E +dbopomofo;3109 +dbsquare;33C8 +dcaron;010F +dcedilla;1E11 +dcircle;24D3 +dcircumflexbelow;1E13 +dcroat;0111 +ddabengali;09A1 +ddadeva;0921 +ddagujarati;0AA1 +ddagurmukhi;0A21 +ddalarabic;0688 +ddalfinalarabic;FB89 +dddhadeva;095C +ddhabengali;09A2 +ddhadeva;0922 +ddhagujarati;0AA2 +ddhagurmukhi;0A22 +ddotaccent;1E0B +ddotbelow;1E0D +decimalseparatorarabic;066B +decimalseparatorpersian;066B +decyrillic;0434 +degree;00B0 +dehihebrew;05AD +dehiragana;3067 +deicoptic;03EF +dekatakana;30C7 +deleteleft;232B +deleteright;2326 +delta;03B4 +deltaturned;018D +denominatorminusonenumeratorbengali;09F8 +dezh;02A4 +dhabengali;09A7 +dhadeva;0927 +dhagujarati;0AA7 +dhagurmukhi;0A27 +dhook;0257 +dialytikatonos;0385 +dialytikatonoscmb;0344 +diamond;2666 +diamondsuitwhite;2662 +dieresis;00A8 +dieresisacute;F6D7 +dieresisbelowcmb;0324 +dieresiscmb;0308 +dieresisgrave;F6D8 +dieresistonos;0385 +dihiragana;3062 +dikatakana;30C2 +dittomark;3003 +divide;00F7 +divides;2223 +divisionslash;2215 +djecyrillic;0452 +dkshade;2593 +dlinebelow;1E0F +dlsquare;3397 +dmacron;0111 +dmonospace;FF44 +dnblock;2584 +dochadathai;0E0E +dodekthai;0E14 +dohiragana;3069 +dokatakana;30C9 +dollar;0024 +dollarinferior;F6E3 +dollarmonospace;FF04 +dollaroldstyle;F724 +dollarsmall;FE69 +dollarsuperior;F6E4 +dong;20AB +dorusquare;3326 +dotaccent;02D9 +dotaccentcmb;0307 +dotbelowcmb;0323 +dotbelowcomb;0323 +dotkatakana;30FB +dotlessi;0131 +dotlessj;F6BE +dotlessjstrokehook;0284 +dotmath;22C5 +dottedcircle;25CC +doubleyodpatah;FB1F +doubleyodpatahhebrew;FB1F +downtackbelowcmb;031E +downtackmod;02D5 +dparen;249F +dsuperior;F6EB +dtail;0256 +dtopbar;018C +duhiragana;3065 +dukatakana;30C5 +dz;01F3 +dzaltone;02A3 +dzcaron;01C6 +dzcurl;02A5 +dzeabkhasiancyrillic;04E1 +dzecyrillic;0455 +dzhecyrillic;045F +e;0065 +eacute;00E9 +earth;2641 +ebengali;098F +ebopomofo;311C +ebreve;0115 +ecandradeva;090D +ecandragujarati;0A8D +ecandravowelsigndeva;0945 +ecandravowelsigngujarati;0AC5 +ecaron;011B +ecedillabreve;1E1D +echarmenian;0565 +echyiwnarmenian;0587 +ecircle;24D4 +ecircumflex;00EA +ecircumflexacute;1EBF +ecircumflexbelow;1E19 +ecircumflexdotbelow;1EC7 +ecircumflexgrave;1EC1 +ecircumflexhookabove;1EC3 +ecircumflextilde;1EC5 +ecyrillic;0454 +edblgrave;0205 +edeva;090F +edieresis;00EB +edot;0117 +edotaccent;0117 +edotbelow;1EB9 +eegurmukhi;0A0F +eematragurmukhi;0A47 +efcyrillic;0444 +egrave;00E8 +egujarati;0A8F +eharmenian;0567 +ehbopomofo;311D +ehiragana;3048 +ehookabove;1EBB +eibopomofo;311F +eight;0038 +eightarabic;0668 +eightbengali;09EE +eightcircle;2467 +eightcircleinversesansserif;2791 +eightdeva;096E +eighteencircle;2471 +eighteenparen;2485 +eighteenperiod;2499 +eightgujarati;0AEE +eightgurmukhi;0A6E +eighthackarabic;0668 +eighthangzhou;3028 +eighthnotebeamed;266B +eightideographicparen;3227 +eightinferior;2088 +eightmonospace;FF18 +eightoldstyle;F738 +eightparen;247B +eightperiod;248F +eightpersian;06F8 +eightroman;2177 +eightsuperior;2078 +eightthai;0E58 +einvertedbreve;0207 +eiotifiedcyrillic;0465 +ekatakana;30A8 +ekatakanahalfwidth;FF74 +ekonkargurmukhi;0A74 +ekorean;3154 +elcyrillic;043B +element;2208 +elevencircle;246A +elevenparen;247E +elevenperiod;2492 +elevenroman;217A +ellipsis;2026 +ellipsisvertical;22EE +emacron;0113 +emacronacute;1E17 +emacrongrave;1E15 +emcyrillic;043C +emdash;2014 +emdashvertical;FE31 +emonospace;FF45 +emphasismarkarmenian;055B +emptyset;2205 +enbopomofo;3123 +encyrillic;043D +endash;2013 +endashvertical;FE32 +endescendercyrillic;04A3 +eng;014B +engbopomofo;3125 +enghecyrillic;04A5 +enhookcyrillic;04C8 +enspace;2002 +eogonek;0119 +eokorean;3153 +eopen;025B +eopenclosed;029A +eopenreversed;025C +eopenreversedclosed;025E +eopenreversedhook;025D +eparen;24A0 +epsilon;03B5 +epsilontonos;03AD +equal;003D +equalmonospace;FF1D +equalsmall;FE66 +equalsuperior;207C +equivalence;2261 +erbopomofo;3126 +ercyrillic;0440 +ereversed;0258 +ereversedcyrillic;044D +escyrillic;0441 +esdescendercyrillic;04AB +esh;0283 +eshcurl;0286 +eshortdeva;090E +eshortvowelsigndeva;0946 +eshreversedloop;01AA +eshsquatreversed;0285 +esmallhiragana;3047 +esmallkatakana;30A7 +esmallkatakanahalfwidth;FF6A +estimated;212E +esuperior;F6EC +eta;03B7 +etarmenian;0568 +etatonos;03AE +eth;00F0 +etilde;1EBD +etildebelow;1E1B +etnahtafoukhhebrew;0591 +etnahtafoukhlefthebrew;0591 +etnahtahebrew;0591 +etnahtalefthebrew;0591 +eturned;01DD +eukorean;3161 +euro;20AC +evowelsignbengali;09C7 +evowelsigndeva;0947 +evowelsigngujarati;0AC7 +exclam;0021 +exclamarmenian;055C +exclamdbl;203C +exclamdown;00A1 +exclamdownsmall;F7A1 +exclammonospace;FF01 +exclamsmall;F721 +existential;2203 +ezh;0292 +ezhcaron;01EF +ezhcurl;0293 +ezhreversed;01B9 +ezhtail;01BA +f;0066 +fadeva;095E +fagurmukhi;0A5E +fahrenheit;2109 +fathaarabic;064E +fathalowarabic;064E +fathatanarabic;064B +fbopomofo;3108 +fcircle;24D5 +fdotaccent;1E1F +feharabic;0641 +feharmenian;0586 +fehfinalarabic;FED2 +fehinitialarabic;FED3 +fehmedialarabic;FED4 +feicoptic;03E5 +female;2640 +ff;FB00 +ffi;FB03 +ffl;FB04 +fi;FB01 +fifteencircle;246E +fifteenparen;2482 +fifteenperiod;2496 +figuredash;2012 +filledbox;25A0 +filledrect;25AC +finalkaf;05DA +finalkafdagesh;FB3A +finalkafdageshhebrew;FB3A +finalkafhebrew;05DA +finalkafqamats;05DA 05B8 +finalkafqamatshebrew;05DA 05B8 +finalkafsheva;05DA 05B0 +finalkafshevahebrew;05DA 05B0 +finalmem;05DD +finalmemhebrew;05DD +finalnun;05DF +finalnunhebrew;05DF +finalpe;05E3 +finalpehebrew;05E3 +finaltsadi;05E5 +finaltsadihebrew;05E5 +firsttonechinese;02C9 +fisheye;25C9 +fitacyrillic;0473 +five;0035 +fivearabic;0665 +fivebengali;09EB +fivecircle;2464 +fivecircleinversesansserif;278E +fivedeva;096B +fiveeighths;215D +fivegujarati;0AEB +fivegurmukhi;0A6B +fivehackarabic;0665 +fivehangzhou;3025 +fiveideographicparen;3224 +fiveinferior;2085 +fivemonospace;FF15 +fiveoldstyle;F735 +fiveparen;2478 +fiveperiod;248C +fivepersian;06F5 +fiveroman;2174 +fivesuperior;2075 +fivethai;0E55 +fl;FB02 +florin;0192 +fmonospace;FF46 +fmsquare;3399 +fofanthai;0E1F +fofathai;0E1D +fongmanthai;0E4F +forall;2200 +four;0034 +fourarabic;0664 +fourbengali;09EA +fourcircle;2463 +fourcircleinversesansserif;278D +fourdeva;096A +fourgujarati;0AEA +fourgurmukhi;0A6A +fourhackarabic;0664 +fourhangzhou;3024 +fourideographicparen;3223 +fourinferior;2084 +fourmonospace;FF14 +fournumeratorbengali;09F7 +fouroldstyle;F734 +fourparen;2477 +fourperiod;248B +fourpersian;06F4 +fourroman;2173 +foursuperior;2074 +fourteencircle;246D +fourteenparen;2481 +fourteenperiod;2495 +fourthai;0E54 +fourthtonechinese;02CB +fparen;24A1 +fraction;2044 +franc;20A3 +g;0067 +gabengali;0997 +gacute;01F5 +gadeva;0917 +gafarabic;06AF +gaffinalarabic;FB93 +gafinitialarabic;FB94 +gafmedialarabic;FB95 +gagujarati;0A97 +gagurmukhi;0A17 +gahiragana;304C +gakatakana;30AC +gamma;03B3 +gammalatinsmall;0263 +gammasuperior;02E0 +gangiacoptic;03EB +gbopomofo;310D +gbreve;011F +gcaron;01E7 +gcedilla;0123 +gcircle;24D6 +gcircumflex;011D +gcommaaccent;0123 +gdot;0121 +gdotaccent;0121 +gecyrillic;0433 +gehiragana;3052 +gekatakana;30B2 +geometricallyequal;2251 +gereshaccenthebrew;059C +gereshhebrew;05F3 +gereshmuqdamhebrew;059D +germandbls;00DF +gershayimaccenthebrew;059E +gershayimhebrew;05F4 +getamark;3013 +ghabengali;0998 +ghadarmenian;0572 +ghadeva;0918 +ghagujarati;0A98 +ghagurmukhi;0A18 +ghainarabic;063A +ghainfinalarabic;FECE +ghaininitialarabic;FECF +ghainmedialarabic;FED0 +ghemiddlehookcyrillic;0495 +ghestrokecyrillic;0493 +gheupturncyrillic;0491 +ghhadeva;095A +ghhagurmukhi;0A5A +ghook;0260 +ghzsquare;3393 +gihiragana;304E +gikatakana;30AE +gimarmenian;0563 +gimel;05D2 +gimeldagesh;FB32 +gimeldageshhebrew;FB32 +gimelhebrew;05D2 +gjecyrillic;0453 +glottalinvertedstroke;01BE +glottalstop;0294 +glottalstopinverted;0296 +glottalstopmod;02C0 +glottalstopreversed;0295 +glottalstopreversedmod;02C1 +glottalstopreversedsuperior;02E4 +glottalstopstroke;02A1 +glottalstopstrokereversed;02A2 +gmacron;1E21 +gmonospace;FF47 +gohiragana;3054 +gokatakana;30B4 +gparen;24A2 +gpasquare;33AC +gradient;2207 +grave;0060 +gravebelowcmb;0316 +gravecmb;0300 +gravecomb;0300 +gravedeva;0953 +gravelowmod;02CE +gravemonospace;FF40 +gravetonecmb;0340 +greater;003E +greaterequal;2265 +greaterequalorless;22DB +greatermonospace;FF1E +greaterorequivalent;2273 +greaterorless;2277 +greateroverequal;2267 +greatersmall;FE65 +gscript;0261 +gstroke;01E5 +guhiragana;3050 +guillemotleft;00AB +guillemotright;00BB +guilsinglleft;2039 +guilsinglright;203A +gukatakana;30B0 +guramusquare;3318 +gysquare;33C9 +h;0068 +haabkhasiancyrillic;04A9 +haaltonearabic;06C1 +habengali;09B9 +hadescendercyrillic;04B3 +hadeva;0939 +hagujarati;0AB9 +hagurmukhi;0A39 +haharabic;062D +hahfinalarabic;FEA2 +hahinitialarabic;FEA3 +hahiragana;306F +hahmedialarabic;FEA4 +haitusquare;332A +hakatakana;30CF +hakatakanahalfwidth;FF8A +halantgurmukhi;0A4D +hamzaarabic;0621 +hamzadammaarabic;0621 064F +hamzadammatanarabic;0621 064C +hamzafathaarabic;0621 064E +hamzafathatanarabic;0621 064B +hamzalowarabic;0621 +hamzalowkasraarabic;0621 0650 +hamzalowkasratanarabic;0621 064D +hamzasukunarabic;0621 0652 +hangulfiller;3164 +hardsigncyrillic;044A +harpoonleftbarbup;21BC +harpoonrightbarbup;21C0 +hasquare;33CA +hatafpatah;05B2 +hatafpatah16;05B2 +hatafpatah23;05B2 +hatafpatah2f;05B2 +hatafpatahhebrew;05B2 +hatafpatahnarrowhebrew;05B2 +hatafpatahquarterhebrew;05B2 +hatafpatahwidehebrew;05B2 +hatafqamats;05B3 +hatafqamats1b;05B3 +hatafqamats28;05B3 +hatafqamats34;05B3 +hatafqamatshebrew;05B3 +hatafqamatsnarrowhebrew;05B3 +hatafqamatsquarterhebrew;05B3 +hatafqamatswidehebrew;05B3 +hatafsegol;05B1 +hatafsegol17;05B1 +hatafsegol24;05B1 +hatafsegol30;05B1 +hatafsegolhebrew;05B1 +hatafsegolnarrowhebrew;05B1 +hatafsegolquarterhebrew;05B1 +hatafsegolwidehebrew;05B1 +hbar;0127 +hbopomofo;310F +hbrevebelow;1E2B +hcedilla;1E29 +hcircle;24D7 +hcircumflex;0125 +hdieresis;1E27 +hdotaccent;1E23 +hdotbelow;1E25 +he;05D4 +heart;2665 +heartsuitblack;2665 +heartsuitwhite;2661 +hedagesh;FB34 +hedageshhebrew;FB34 +hehaltonearabic;06C1 +heharabic;0647 +hehebrew;05D4 +hehfinalaltonearabic;FBA7 +hehfinalalttwoarabic;FEEA +hehfinalarabic;FEEA +hehhamzaabovefinalarabic;FBA5 +hehhamzaaboveisolatedarabic;FBA4 +hehinitialaltonearabic;FBA8 +hehinitialarabic;FEEB +hehiragana;3078 +hehmedialaltonearabic;FBA9 +hehmedialarabic;FEEC +heiseierasquare;337B +hekatakana;30D8 +hekatakanahalfwidth;FF8D +hekutaarusquare;3336 +henghook;0267 +herutusquare;3339 +het;05D7 +hethebrew;05D7 +hhook;0266 +hhooksuperior;02B1 +hieuhacirclekorean;327B +hieuhaparenkorean;321B +hieuhcirclekorean;326D +hieuhkorean;314E +hieuhparenkorean;320D +hihiragana;3072 +hikatakana;30D2 +hikatakanahalfwidth;FF8B +hiriq;05B4 +hiriq14;05B4 +hiriq21;05B4 +hiriq2d;05B4 +hiriqhebrew;05B4 +hiriqnarrowhebrew;05B4 +hiriqquarterhebrew;05B4 +hiriqwidehebrew;05B4 +hlinebelow;1E96 +hmonospace;FF48 +hoarmenian;0570 +hohipthai;0E2B +hohiragana;307B +hokatakana;30DB +hokatakanahalfwidth;FF8E +holam;05B9 +holam19;05B9 +holam26;05B9 +holam32;05B9 +holamhebrew;05B9 +holamnarrowhebrew;05B9 +holamquarterhebrew;05B9 +holamwidehebrew;05B9 +honokhukthai;0E2E +hookabovecomb;0309 +hookcmb;0309 +hookpalatalizedbelowcmb;0321 +hookretroflexbelowcmb;0322 +hoonsquare;3342 +horicoptic;03E9 +horizontalbar;2015 +horncmb;031B +hotsprings;2668 +house;2302 +hparen;24A3 +hsuperior;02B0 +hturned;0265 +huhiragana;3075 +huiitosquare;3333 +hukatakana;30D5 +hukatakanahalfwidth;FF8C +hungarumlaut;02DD +hungarumlautcmb;030B +hv;0195 +hyphen;002D +hypheninferior;F6E5 +hyphenmonospace;FF0D +hyphensmall;FE63 +hyphensuperior;F6E6 +hyphentwo;2010 +i;0069 +iacute;00ED +iacyrillic;044F +ibengali;0987 +ibopomofo;3127 +ibreve;012D +icaron;01D0 +icircle;24D8 +icircumflex;00EE +icyrillic;0456 +idblgrave;0209 +ideographearthcircle;328F +ideographfirecircle;328B +ideographicallianceparen;323F +ideographiccallparen;323A +ideographiccentrecircle;32A5 +ideographicclose;3006 +ideographiccomma;3001 +ideographiccommaleft;FF64 +ideographiccongratulationparen;3237 +ideographiccorrectcircle;32A3 +ideographicearthparen;322F +ideographicenterpriseparen;323D +ideographicexcellentcircle;329D +ideographicfestivalparen;3240 +ideographicfinancialcircle;3296 +ideographicfinancialparen;3236 +ideographicfireparen;322B +ideographichaveparen;3232 +ideographichighcircle;32A4 +ideographiciterationmark;3005 +ideographiclaborcircle;3298 +ideographiclaborparen;3238 +ideographicleftcircle;32A7 +ideographiclowcircle;32A6 +ideographicmedicinecircle;32A9 +ideographicmetalparen;322E +ideographicmoonparen;322A +ideographicnameparen;3234 +ideographicperiod;3002 +ideographicprintcircle;329E +ideographicreachparen;3243 +ideographicrepresentparen;3239 +ideographicresourceparen;323E +ideographicrightcircle;32A8 +ideographicsecretcircle;3299 +ideographicselfparen;3242 +ideographicsocietyparen;3233 +ideographicspace;3000 +ideographicspecialparen;3235 +ideographicstockparen;3231 +ideographicstudyparen;323B +ideographicsunparen;3230 +ideographicsuperviseparen;323C +ideographicwaterparen;322C +ideographicwoodparen;322D +ideographiczero;3007 +ideographmetalcircle;328E +ideographmooncircle;328A +ideographnamecircle;3294 +ideographsuncircle;3290 +ideographwatercircle;328C +ideographwoodcircle;328D +ideva;0907 +idieresis;00EF +idieresisacute;1E2F +idieresiscyrillic;04E5 +idotbelow;1ECB +iebrevecyrillic;04D7 +iecyrillic;0435 +ieungacirclekorean;3275 +ieungaparenkorean;3215 +ieungcirclekorean;3267 +ieungkorean;3147 +ieungparenkorean;3207 +igrave;00EC +igujarati;0A87 +igurmukhi;0A07 +ihiragana;3044 +ihookabove;1EC9 +iibengali;0988 +iicyrillic;0438 +iideva;0908 +iigujarati;0A88 +iigurmukhi;0A08 +iimatragurmukhi;0A40 +iinvertedbreve;020B +iishortcyrillic;0439 +iivowelsignbengali;09C0 +iivowelsigndeva;0940 +iivowelsigngujarati;0AC0 +ij;0133 +ikatakana;30A4 +ikatakanahalfwidth;FF72 +ikorean;3163 +ilde;02DC +iluyhebrew;05AC +imacron;012B +imacroncyrillic;04E3 +imageorapproximatelyequal;2253 +imatragurmukhi;0A3F +imonospace;FF49 +increment;2206 +infinity;221E +iniarmenian;056B +integral;222B +integralbottom;2321 +integralbt;2321 +integralex;F8F5 +integraltop;2320 +integraltp;2320 +intersection;2229 +intisquare;3305 +invbullet;25D8 +invcircle;25D9 +invsmileface;263B +iocyrillic;0451 +iogonek;012F +iota;03B9 +iotadieresis;03CA +iotadieresistonos;0390 +iotalatin;0269 +iotatonos;03AF +iparen;24A4 +irigurmukhi;0A72 +ismallhiragana;3043 +ismallkatakana;30A3 +ismallkatakanahalfwidth;FF68 +issharbengali;09FA +istroke;0268 +isuperior;F6ED +iterationhiragana;309D +iterationkatakana;30FD +itilde;0129 +itildebelow;1E2D +iubopomofo;3129 +iucyrillic;044E +ivowelsignbengali;09BF +ivowelsigndeva;093F +ivowelsigngujarati;0ABF +izhitsacyrillic;0475 +izhitsadblgravecyrillic;0477 +j;006A +jaarmenian;0571 +jabengali;099C +jadeva;091C +jagujarati;0A9C +jagurmukhi;0A1C +jbopomofo;3110 +jcaron;01F0 +jcircle;24D9 +jcircumflex;0135 +jcrossedtail;029D +jdotlessstroke;025F +jecyrillic;0458 +jeemarabic;062C +jeemfinalarabic;FE9E +jeeminitialarabic;FE9F +jeemmedialarabic;FEA0 +jeharabic;0698 +jehfinalarabic;FB8B +jhabengali;099D +jhadeva;091D +jhagujarati;0A9D +jhagurmukhi;0A1D +jheharmenian;057B +jis;3004 +jmonospace;FF4A +jparen;24A5 +jsuperior;02B2 +k;006B +kabashkircyrillic;04A1 +kabengali;0995 +kacute;1E31 +kacyrillic;043A +kadescendercyrillic;049B +kadeva;0915 +kaf;05DB +kafarabic;0643 +kafdagesh;FB3B +kafdageshhebrew;FB3B +kaffinalarabic;FEDA +kafhebrew;05DB +kafinitialarabic;FEDB +kafmedialarabic;FEDC +kafrafehebrew;FB4D +kagujarati;0A95 +kagurmukhi;0A15 +kahiragana;304B +kahookcyrillic;04C4 +kakatakana;30AB +kakatakanahalfwidth;FF76 +kappa;03BA +kappasymbolgreek;03F0 +kapyeounmieumkorean;3171 +kapyeounphieuphkorean;3184 +kapyeounpieupkorean;3178 +kapyeounssangpieupkorean;3179 +karoriisquare;330D +kashidaautoarabic;0640 +kashidaautonosidebearingarabic;0640 +kasmallkatakana;30F5 +kasquare;3384 +kasraarabic;0650 +kasratanarabic;064D +kastrokecyrillic;049F +katahiraprolongmarkhalfwidth;FF70 +kaverticalstrokecyrillic;049D +kbopomofo;310E +kcalsquare;3389 +kcaron;01E9 +kcedilla;0137 +kcircle;24DA +kcommaaccent;0137 +kdotbelow;1E33 +keharmenian;0584 +kehiragana;3051 +kekatakana;30B1 +kekatakanahalfwidth;FF79 +kenarmenian;056F +kesmallkatakana;30F6 +kgreenlandic;0138 +khabengali;0996 +khacyrillic;0445 +khadeva;0916 +khagujarati;0A96 +khagurmukhi;0A16 +khaharabic;062E +khahfinalarabic;FEA6 +khahinitialarabic;FEA7 +khahmedialarabic;FEA8 +kheicoptic;03E7 +khhadeva;0959 +khhagurmukhi;0A59 +khieukhacirclekorean;3278 +khieukhaparenkorean;3218 +khieukhcirclekorean;326A +khieukhkorean;314B +khieukhparenkorean;320A +khokhaithai;0E02 +khokhonthai;0E05 +khokhuatthai;0E03 +khokhwaithai;0E04 +khomutthai;0E5B +khook;0199 +khorakhangthai;0E06 +khzsquare;3391 +kihiragana;304D +kikatakana;30AD +kikatakanahalfwidth;FF77 +kiroguramusquare;3315 +kiromeetorusquare;3316 +kirosquare;3314 +kiyeokacirclekorean;326E +kiyeokaparenkorean;320E +kiyeokcirclekorean;3260 +kiyeokkorean;3131 +kiyeokparenkorean;3200 +kiyeoksioskorean;3133 +kjecyrillic;045C +klinebelow;1E35 +klsquare;3398 +kmcubedsquare;33A6 +kmonospace;FF4B +kmsquaredsquare;33A2 +kohiragana;3053 +kohmsquare;33C0 +kokaithai;0E01 +kokatakana;30B3 +kokatakanahalfwidth;FF7A +kooposquare;331E +koppacyrillic;0481 +koreanstandardsymbol;327F +koroniscmb;0343 +kparen;24A6 +kpasquare;33AA +ksicyrillic;046F +ktsquare;33CF +kturned;029E +kuhiragana;304F +kukatakana;30AF +kukatakanahalfwidth;FF78 +kvsquare;33B8 +kwsquare;33BE +l;006C +labengali;09B2 +lacute;013A +ladeva;0932 +lagujarati;0AB2 +lagurmukhi;0A32 +lakkhangyaothai;0E45 +lamaleffinalarabic;FEFC +lamalefhamzaabovefinalarabic;FEF8 +lamalefhamzaaboveisolatedarabic;FEF7 +lamalefhamzabelowfinalarabic;FEFA +lamalefhamzabelowisolatedarabic;FEF9 +lamalefisolatedarabic;FEFB +lamalefmaddaabovefinalarabic;FEF6 +lamalefmaddaaboveisolatedarabic;FEF5 +lamarabic;0644 +lambda;03BB +lambdastroke;019B +lamed;05DC +lameddagesh;FB3C +lameddageshhebrew;FB3C +lamedhebrew;05DC +lamedholam;05DC 05B9 +lamedholamdagesh;05DC 05B9 05BC +lamedholamdageshhebrew;05DC 05B9 05BC +lamedholamhebrew;05DC 05B9 +lamfinalarabic;FEDE +lamhahinitialarabic;FCCA +laminitialarabic;FEDF +lamjeeminitialarabic;FCC9 +lamkhahinitialarabic;FCCB +lamlamhehisolatedarabic;FDF2 +lammedialarabic;FEE0 +lammeemhahinitialarabic;FD88 +lammeeminitialarabic;FCCC +lammeemjeeminitialarabic;FEDF FEE4 FEA0 +lammeemkhahinitialarabic;FEDF FEE4 FEA8 +largecircle;25EF +lbar;019A +lbelt;026C +lbopomofo;310C +lcaron;013E +lcedilla;013C +lcircle;24DB +lcircumflexbelow;1E3D +lcommaaccent;013C +ldot;0140 +ldotaccent;0140 +ldotbelow;1E37 +ldotbelowmacron;1E39 +leftangleabovecmb;031A +lefttackbelowcmb;0318 +less;003C +lessequal;2264 +lessequalorgreater;22DA +lessmonospace;FF1C +lessorequivalent;2272 +lessorgreater;2276 +lessoverequal;2266 +lesssmall;FE64 +lezh;026E +lfblock;258C +lhookretroflex;026D +lira;20A4 +liwnarmenian;056C +lj;01C9 +ljecyrillic;0459 +ll;F6C0 +lladeva;0933 +llagujarati;0AB3 +llinebelow;1E3B +llladeva;0934 +llvocalicbengali;09E1 +llvocalicdeva;0961 +llvocalicvowelsignbengali;09E3 +llvocalicvowelsigndeva;0963 +lmiddletilde;026B +lmonospace;FF4C +lmsquare;33D0 +lochulathai;0E2C +logicaland;2227 +logicalnot;00AC +logicalnotreversed;2310 +logicalor;2228 +lolingthai;0E25 +longs;017F +lowlinecenterline;FE4E +lowlinecmb;0332 +lowlinedashed;FE4D +lozenge;25CA +lparen;24A7 +lslash;0142 +lsquare;2113 +lsuperior;F6EE +ltshade;2591 +luthai;0E26 +lvocalicbengali;098C +lvocalicdeva;090C +lvocalicvowelsignbengali;09E2 +lvocalicvowelsigndeva;0962 +lxsquare;33D3 +m;006D +mabengali;09AE +macron;00AF +macronbelowcmb;0331 +macroncmb;0304 +macronlowmod;02CD +macronmonospace;FFE3 +macute;1E3F +madeva;092E +magujarati;0AAE +magurmukhi;0A2E +mahapakhhebrew;05A4 +mahapakhlefthebrew;05A4 +mahiragana;307E +maichattawalowleftthai;F895 +maichattawalowrightthai;F894 +maichattawathai;0E4B +maichattawaupperleftthai;F893 +maieklowleftthai;F88C +maieklowrightthai;F88B +maiekthai;0E48 +maiekupperleftthai;F88A +maihanakatleftthai;F884 +maihanakatthai;0E31 +maitaikhuleftthai;F889 +maitaikhuthai;0E47 +maitholowleftthai;F88F +maitholowrightthai;F88E +maithothai;0E49 +maithoupperleftthai;F88D +maitrilowleftthai;F892 +maitrilowrightthai;F891 +maitrithai;0E4A +maitriupperleftthai;F890 +maiyamokthai;0E46 +makatakana;30DE +makatakanahalfwidth;FF8F +male;2642 +mansyonsquare;3347 +maqafhebrew;05BE +mars;2642 +masoracirclehebrew;05AF +masquare;3383 +mbopomofo;3107 +mbsquare;33D4 +mcircle;24DC +mcubedsquare;33A5 +mdotaccent;1E41 +mdotbelow;1E43 +meemarabic;0645 +meemfinalarabic;FEE2 +meeminitialarabic;FEE3 +meemmedialarabic;FEE4 +meemmeeminitialarabic;FCD1 +meemmeemisolatedarabic;FC48 +meetorusquare;334D +mehiragana;3081 +meizierasquare;337E +mekatakana;30E1 +mekatakanahalfwidth;FF92 +mem;05DE +memdagesh;FB3E +memdageshhebrew;FB3E +memhebrew;05DE +menarmenian;0574 +merkhahebrew;05A5 +merkhakefulahebrew;05A6 +merkhakefulalefthebrew;05A6 +merkhalefthebrew;05A5 +mhook;0271 +mhzsquare;3392 +middledotkatakanahalfwidth;FF65 +middot;00B7 +mieumacirclekorean;3272 +mieumaparenkorean;3212 +mieumcirclekorean;3264 +mieumkorean;3141 +mieumpansioskorean;3170 +mieumparenkorean;3204 +mieumpieupkorean;316E +mieumsioskorean;316F +mihiragana;307F +mikatakana;30DF +mikatakanahalfwidth;FF90 +minus;2212 +minusbelowcmb;0320 +minuscircle;2296 +minusmod;02D7 +minusplus;2213 +minute;2032 +miribaarusquare;334A +mirisquare;3349 +mlonglegturned;0270 +mlsquare;3396 +mmcubedsquare;33A3 +mmonospace;FF4D +mmsquaredsquare;339F +mohiragana;3082 +mohmsquare;33C1 +mokatakana;30E2 +mokatakanahalfwidth;FF93 +molsquare;33D6 +momathai;0E21 +moverssquare;33A7 +moverssquaredsquare;33A8 +mparen;24A8 +mpasquare;33AB +mssquare;33B3 +msuperior;F6EF +mturned;026F +mu;00B5 +mu1;00B5 +muasquare;3382 +muchgreater;226B +muchless;226A +mufsquare;338C +mugreek;03BC +mugsquare;338D +muhiragana;3080 +mukatakana;30E0 +mukatakanahalfwidth;FF91 +mulsquare;3395 +multiply;00D7 +mumsquare;339B +munahhebrew;05A3 +munahlefthebrew;05A3 +musicalnote;266A +musicalnotedbl;266B +musicflatsign;266D +musicsharpsign;266F +mussquare;33B2 +muvsquare;33B6 +muwsquare;33BC +mvmegasquare;33B9 +mvsquare;33B7 +mwmegasquare;33BF +mwsquare;33BD +n;006E +nabengali;09A8 +nabla;2207 +nacute;0144 +nadeva;0928 +nagujarati;0AA8 +nagurmukhi;0A28 +nahiragana;306A +nakatakana;30CA +nakatakanahalfwidth;FF85 +napostrophe;0149 +nasquare;3381 +nbopomofo;310B +nbspace;00A0 +ncaron;0148 +ncedilla;0146 +ncircle;24DD +ncircumflexbelow;1E4B +ncommaaccent;0146 +ndotaccent;1E45 +ndotbelow;1E47 +nehiragana;306D +nekatakana;30CD +nekatakanahalfwidth;FF88 +newsheqelsign;20AA +nfsquare;338B +ngabengali;0999 +ngadeva;0919 +ngagujarati;0A99 +ngagurmukhi;0A19 +ngonguthai;0E07 +nhiragana;3093 +nhookleft;0272 +nhookretroflex;0273 +nieunacirclekorean;326F +nieunaparenkorean;320F +nieuncieuckorean;3135 +nieuncirclekorean;3261 +nieunhieuhkorean;3136 +nieunkorean;3134 +nieunpansioskorean;3168 +nieunparenkorean;3201 +nieunsioskorean;3167 +nieuntikeutkorean;3166 +nihiragana;306B +nikatakana;30CB +nikatakanahalfwidth;FF86 +nikhahitleftthai;F899 +nikhahitthai;0E4D +nine;0039 +ninearabic;0669 +ninebengali;09EF +ninecircle;2468 +ninecircleinversesansserif;2792 +ninedeva;096F +ninegujarati;0AEF +ninegurmukhi;0A6F +ninehackarabic;0669 +ninehangzhou;3029 +nineideographicparen;3228 +nineinferior;2089 +ninemonospace;FF19 +nineoldstyle;F739 +nineparen;247C +nineperiod;2490 +ninepersian;06F9 +nineroman;2178 +ninesuperior;2079 +nineteencircle;2472 +nineteenparen;2486 +nineteenperiod;249A +ninethai;0E59 +nj;01CC +njecyrillic;045A +nkatakana;30F3 +nkatakanahalfwidth;FF9D +nlegrightlong;019E +nlinebelow;1E49 +nmonospace;FF4E +nmsquare;339A +nnabengali;09A3 +nnadeva;0923 +nnagujarati;0AA3 +nnagurmukhi;0A23 +nnnadeva;0929 +nohiragana;306E +nokatakana;30CE +nokatakanahalfwidth;FF89 +nonbreakingspace;00A0 +nonenthai;0E13 +nonuthai;0E19 +noonarabic;0646 +noonfinalarabic;FEE6 +noonghunnaarabic;06BA +noonghunnafinalarabic;FB9F +noonhehinitialarabic;FEE7 FEEC +nooninitialarabic;FEE7 +noonjeeminitialarabic;FCD2 +noonjeemisolatedarabic;FC4B +noonmedialarabic;FEE8 +noonmeeminitialarabic;FCD5 +noonmeemisolatedarabic;FC4E +noonnoonfinalarabic;FC8D +notcontains;220C +notelement;2209 +notelementof;2209 +notequal;2260 +notgreater;226F +notgreaternorequal;2271 +notgreaternorless;2279 +notidentical;2262 +notless;226E +notlessnorequal;2270 +notparallel;2226 +notprecedes;2280 +notsubset;2284 +notsucceeds;2281 +notsuperset;2285 +nowarmenian;0576 +nparen;24A9 +nssquare;33B1 +nsuperior;207F +ntilde;00F1 +nu;03BD +nuhiragana;306C +nukatakana;30CC +nukatakanahalfwidth;FF87 +nuktabengali;09BC +nuktadeva;093C +nuktagujarati;0ABC +nuktagurmukhi;0A3C +numbersign;0023 +numbersignmonospace;FF03 +numbersignsmall;FE5F +numeralsigngreek;0374 +numeralsignlowergreek;0375 +numero;2116 +nun;05E0 +nundagesh;FB40 +nundageshhebrew;FB40 +nunhebrew;05E0 +nvsquare;33B5 +nwsquare;33BB +nyabengali;099E +nyadeva;091E +nyagujarati;0A9E +nyagurmukhi;0A1E +o;006F +oacute;00F3 +oangthai;0E2D +obarred;0275 +obarredcyrillic;04E9 +obarreddieresiscyrillic;04EB +obengali;0993 +obopomofo;311B +obreve;014F +ocandradeva;0911 +ocandragujarati;0A91 +ocandravowelsigndeva;0949 +ocandravowelsigngujarati;0AC9 +ocaron;01D2 +ocircle;24DE +ocircumflex;00F4 +ocircumflexacute;1ED1 +ocircumflexdotbelow;1ED9 +ocircumflexgrave;1ED3 +ocircumflexhookabove;1ED5 +ocircumflextilde;1ED7 +ocyrillic;043E +odblacute;0151 +odblgrave;020D +odeva;0913 +odieresis;00F6 +odieresiscyrillic;04E7 +odotbelow;1ECD +oe;0153 +oekorean;315A +ogonek;02DB +ogonekcmb;0328 +ograve;00F2 +ogujarati;0A93 +oharmenian;0585 +ohiragana;304A +ohookabove;1ECF +ohorn;01A1 +ohornacute;1EDB +ohorndotbelow;1EE3 +ohorngrave;1EDD +ohornhookabove;1EDF +ohorntilde;1EE1 +ohungarumlaut;0151 +oi;01A3 +oinvertedbreve;020F +okatakana;30AA +okatakanahalfwidth;FF75 +okorean;3157 +olehebrew;05AB +omacron;014D +omacronacute;1E53 +omacrongrave;1E51 +omdeva;0950 +omega;03C9 +omega1;03D6 +omegacyrillic;0461 +omegalatinclosed;0277 +omegaroundcyrillic;047B +omegatitlocyrillic;047D +omegatonos;03CE +omgujarati;0AD0 +omicron;03BF +omicrontonos;03CC +omonospace;FF4F +one;0031 +onearabic;0661 +onebengali;09E7 +onecircle;2460 +onecircleinversesansserif;278A +onedeva;0967 +onedotenleader;2024 +oneeighth;215B +onefitted;F6DC +onegujarati;0AE7 +onegurmukhi;0A67 +onehackarabic;0661 +onehalf;00BD +onehangzhou;3021 +oneideographicparen;3220 +oneinferior;2081 +onemonospace;FF11 +onenumeratorbengali;09F4 +oneoldstyle;F731 +oneparen;2474 +oneperiod;2488 +onepersian;06F1 +onequarter;00BC +oneroman;2170 +onesuperior;00B9 +onethai;0E51 +onethird;2153 +oogonek;01EB +oogonekmacron;01ED +oogurmukhi;0A13 +oomatragurmukhi;0A4B +oopen;0254 +oparen;24AA +openbullet;25E6 +option;2325 +ordfeminine;00AA +ordmasculine;00BA +orthogonal;221F +oshortdeva;0912 +oshortvowelsigndeva;094A +oslash;00F8 +oslashacute;01FF +osmallhiragana;3049 +osmallkatakana;30A9 +osmallkatakanahalfwidth;FF6B +ostrokeacute;01FF +osuperior;F6F0 +otcyrillic;047F +otilde;00F5 +otildeacute;1E4D +otildedieresis;1E4F +oubopomofo;3121 +overline;203E +overlinecenterline;FE4A +overlinecmb;0305 +overlinedashed;FE49 +overlinedblwavy;FE4C +overlinewavy;FE4B +overscore;00AF +ovowelsignbengali;09CB +ovowelsigndeva;094B +ovowelsigngujarati;0ACB +p;0070 +paampssquare;3380 +paasentosquare;332B +pabengali;09AA +pacute;1E55 +padeva;092A +pagedown;21DF +pageup;21DE +pagujarati;0AAA +pagurmukhi;0A2A +pahiragana;3071 +paiyannoithai;0E2F +pakatakana;30D1 +palatalizationcyrilliccmb;0484 +palochkacyrillic;04C0 +pansioskorean;317F +paragraph;00B6 +parallel;2225 +parenleft;0028 +parenleftaltonearabic;FD3E +parenleftbt;F8ED +parenleftex;F8EC +parenleftinferior;208D +parenleftmonospace;FF08 +parenleftsmall;FE59 +parenleftsuperior;207D +parenlefttp;F8EB +parenleftvertical;FE35 +parenright;0029 +parenrightaltonearabic;FD3F +parenrightbt;F8F8 +parenrightex;F8F7 +parenrightinferior;208E +parenrightmonospace;FF09 +parenrightsmall;FE5A +parenrightsuperior;207E +parenrighttp;F8F6 +parenrightvertical;FE36 +partialdiff;2202 +paseqhebrew;05C0 +pashtahebrew;0599 +pasquare;33A9 +patah;05B7 +patah11;05B7 +patah1d;05B7 +patah2a;05B7 +patahhebrew;05B7 +patahnarrowhebrew;05B7 +patahquarterhebrew;05B7 +patahwidehebrew;05B7 +pazerhebrew;05A1 +pbopomofo;3106 +pcircle;24DF +pdotaccent;1E57 +pe;05E4 +pecyrillic;043F +pedagesh;FB44 +pedageshhebrew;FB44 +peezisquare;333B +pefinaldageshhebrew;FB43 +peharabic;067E +peharmenian;057A +pehebrew;05E4 +pehfinalarabic;FB57 +pehinitialarabic;FB58 +pehiragana;307A +pehmedialarabic;FB59 +pekatakana;30DA +pemiddlehookcyrillic;04A7 +perafehebrew;FB4E +percent;0025 +percentarabic;066A +percentmonospace;FF05 +percentsmall;FE6A +period;002E +periodarmenian;0589 +periodcentered;00B7 +periodhalfwidth;FF61 +periodinferior;F6E7 +periodmonospace;FF0E +periodsmall;FE52 +periodsuperior;F6E8 +perispomenigreekcmb;0342 +perpendicular;22A5 +perthousand;2030 +peseta;20A7 +pfsquare;338A +phabengali;09AB +phadeva;092B +phagujarati;0AAB +phagurmukhi;0A2B +phi;03C6 +phi1;03D5 +phieuphacirclekorean;327A +phieuphaparenkorean;321A +phieuphcirclekorean;326C +phieuphkorean;314D +phieuphparenkorean;320C +philatin;0278 +phinthuthai;0E3A +phisymbolgreek;03D5 +phook;01A5 +phophanthai;0E1E +phophungthai;0E1C +phosamphaothai;0E20 +pi;03C0 +pieupacirclekorean;3273 +pieupaparenkorean;3213 +pieupcieuckorean;3176 +pieupcirclekorean;3265 +pieupkiyeokkorean;3172 +pieupkorean;3142 +pieupparenkorean;3205 +pieupsioskiyeokkorean;3174 +pieupsioskorean;3144 +pieupsiostikeutkorean;3175 +pieupthieuthkorean;3177 +pieuptikeutkorean;3173 +pihiragana;3074 +pikatakana;30D4 +pisymbolgreek;03D6 +piwrarmenian;0583 +plus;002B +plusbelowcmb;031F +pluscircle;2295 +plusminus;00B1 +plusmod;02D6 +plusmonospace;FF0B +plussmall;FE62 +plussuperior;207A +pmonospace;FF50 +pmsquare;33D8 +pohiragana;307D +pointingindexdownwhite;261F +pointingindexleftwhite;261C +pointingindexrightwhite;261E +pointingindexupwhite;261D +pokatakana;30DD +poplathai;0E1B +postalmark;3012 +postalmarkface;3020 +pparen;24AB +precedes;227A +prescription;211E +primemod;02B9 +primereversed;2035 +product;220F +projective;2305 +prolongedkana;30FC +propellor;2318 +propersubset;2282 +propersuperset;2283 +proportion;2237 +proportional;221D +psi;03C8 +psicyrillic;0471 +psilipneumatacyrilliccmb;0486 +pssquare;33B0 +puhiragana;3077 +pukatakana;30D7 +pvsquare;33B4 +pwsquare;33BA +q;0071 +qadeva;0958 +qadmahebrew;05A8 +qafarabic;0642 +qaffinalarabic;FED6 +qafinitialarabic;FED7 +qafmedialarabic;FED8 +qamats;05B8 +qamats10;05B8 +qamats1a;05B8 +qamats1c;05B8 +qamats27;05B8 +qamats29;05B8 +qamats33;05B8 +qamatsde;05B8 +qamatshebrew;05B8 +qamatsnarrowhebrew;05B8 +qamatsqatanhebrew;05B8 +qamatsqatannarrowhebrew;05B8 +qamatsqatanquarterhebrew;05B8 +qamatsqatanwidehebrew;05B8 +qamatsquarterhebrew;05B8 +qamatswidehebrew;05B8 +qarneyparahebrew;059F +qbopomofo;3111 +qcircle;24E0 +qhook;02A0 +qmonospace;FF51 +qof;05E7 +qofdagesh;FB47 +qofdageshhebrew;FB47 +qofhatafpatah;05E7 05B2 +qofhatafpatahhebrew;05E7 05B2 +qofhatafsegol;05E7 05B1 +qofhatafsegolhebrew;05E7 05B1 +qofhebrew;05E7 +qofhiriq;05E7 05B4 +qofhiriqhebrew;05E7 05B4 +qofholam;05E7 05B9 +qofholamhebrew;05E7 05B9 +qofpatah;05E7 05B7 +qofpatahhebrew;05E7 05B7 +qofqamats;05E7 05B8 +qofqamatshebrew;05E7 05B8 +qofqubuts;05E7 05BB +qofqubutshebrew;05E7 05BB +qofsegol;05E7 05B6 +qofsegolhebrew;05E7 05B6 +qofsheva;05E7 05B0 +qofshevahebrew;05E7 05B0 +qoftsere;05E7 05B5 +qoftserehebrew;05E7 05B5 +qparen;24AC +quarternote;2669 +qubuts;05BB +qubuts18;05BB +qubuts25;05BB +qubuts31;05BB +qubutshebrew;05BB +qubutsnarrowhebrew;05BB +qubutsquarterhebrew;05BB +qubutswidehebrew;05BB +question;003F +questionarabic;061F +questionarmenian;055E +questiondown;00BF +questiondownsmall;F7BF +questiongreek;037E +questionmonospace;FF1F +questionsmall;F73F +quotedbl;0022 +quotedblbase;201E +quotedblleft;201C +quotedblmonospace;FF02 +quotedblprime;301E +quotedblprimereversed;301D +quotedblright;201D +quoteleft;2018 +quoteleftreversed;201B +quotereversed;201B +quoteright;2019 +quoterightn;0149 +quotesinglbase;201A +quotesingle;0027 +quotesinglemonospace;FF07 +r;0072 +raarmenian;057C +rabengali;09B0 +racute;0155 +radeva;0930 +radical;221A +radicalex;F8E5 +radoverssquare;33AE +radoverssquaredsquare;33AF +radsquare;33AD +rafe;05BF +rafehebrew;05BF +ragujarati;0AB0 +ragurmukhi;0A30 +rahiragana;3089 +rakatakana;30E9 +rakatakanahalfwidth;FF97 +ralowerdiagonalbengali;09F1 +ramiddlediagonalbengali;09F0 +ramshorn;0264 +ratio;2236 +rbopomofo;3116 +rcaron;0159 +rcedilla;0157 +rcircle;24E1 +rcommaaccent;0157 +rdblgrave;0211 +rdotaccent;1E59 +rdotbelow;1E5B +rdotbelowmacron;1E5D +referencemark;203B +reflexsubset;2286 +reflexsuperset;2287 +registered;00AE +registersans;F8E8 +registerserif;F6DA +reharabic;0631 +reharmenian;0580 +rehfinalarabic;FEAE +rehiragana;308C +rehyehaleflamarabic;0631 FEF3 FE8E 0644 +rekatakana;30EC +rekatakanahalfwidth;FF9A +resh;05E8 +reshdageshhebrew;FB48 +reshhatafpatah;05E8 05B2 +reshhatafpatahhebrew;05E8 05B2 +reshhatafsegol;05E8 05B1 +reshhatafsegolhebrew;05E8 05B1 +reshhebrew;05E8 +reshhiriq;05E8 05B4 +reshhiriqhebrew;05E8 05B4 +reshholam;05E8 05B9 +reshholamhebrew;05E8 05B9 +reshpatah;05E8 05B7 +reshpatahhebrew;05E8 05B7 +reshqamats;05E8 05B8 +reshqamatshebrew;05E8 05B8 +reshqubuts;05E8 05BB +reshqubutshebrew;05E8 05BB +reshsegol;05E8 05B6 +reshsegolhebrew;05E8 05B6 +reshsheva;05E8 05B0 +reshshevahebrew;05E8 05B0 +reshtsere;05E8 05B5 +reshtserehebrew;05E8 05B5 +reversedtilde;223D +reviahebrew;0597 +reviamugrashhebrew;0597 +revlogicalnot;2310 +rfishhook;027E +rfishhookreversed;027F +rhabengali;09DD +rhadeva;095D +rho;03C1 +rhook;027D +rhookturned;027B +rhookturnedsuperior;02B5 +rhosymbolgreek;03F1 +rhotichookmod;02DE +rieulacirclekorean;3271 +rieulaparenkorean;3211 +rieulcirclekorean;3263 +rieulhieuhkorean;3140 +rieulkiyeokkorean;313A +rieulkiyeoksioskorean;3169 +rieulkorean;3139 +rieulmieumkorean;313B +rieulpansioskorean;316C +rieulparenkorean;3203 +rieulphieuphkorean;313F +rieulpieupkorean;313C +rieulpieupsioskorean;316B +rieulsioskorean;313D +rieulthieuthkorean;313E +rieultikeutkorean;316A +rieulyeorinhieuhkorean;316D +rightangle;221F +righttackbelowcmb;0319 +righttriangle;22BF +rihiragana;308A +rikatakana;30EA +rikatakanahalfwidth;FF98 +ring;02DA +ringbelowcmb;0325 +ringcmb;030A +ringhalfleft;02BF +ringhalfleftarmenian;0559 +ringhalfleftbelowcmb;031C +ringhalfleftcentered;02D3 +ringhalfright;02BE +ringhalfrightbelowcmb;0339 +ringhalfrightcentered;02D2 +rinvertedbreve;0213 +rittorusquare;3351 +rlinebelow;1E5F +rlongleg;027C +rlonglegturned;027A +rmonospace;FF52 +rohiragana;308D +rokatakana;30ED +rokatakanahalfwidth;FF9B +roruathai;0E23 +rparen;24AD +rrabengali;09DC +rradeva;0931 +rragurmukhi;0A5C +rreharabic;0691 +rrehfinalarabic;FB8D +rrvocalicbengali;09E0 +rrvocalicdeva;0960 +rrvocalicgujarati;0AE0 +rrvocalicvowelsignbengali;09C4 +rrvocalicvowelsigndeva;0944 +rrvocalicvowelsigngujarati;0AC4 +rsuperior;F6F1 +rtblock;2590 +rturned;0279 +rturnedsuperior;02B4 +ruhiragana;308B +rukatakana;30EB +rukatakanahalfwidth;FF99 +rupeemarkbengali;09F2 +rupeesignbengali;09F3 +rupiah;F6DD +ruthai;0E24 +rvocalicbengali;098B +rvocalicdeva;090B +rvocalicgujarati;0A8B +rvocalicvowelsignbengali;09C3 +rvocalicvowelsigndeva;0943 +rvocalicvowelsigngujarati;0AC3 +s;0073 +sabengali;09B8 +sacute;015B +sacutedotaccent;1E65 +sadarabic;0635 +sadeva;0938 +sadfinalarabic;FEBA +sadinitialarabic;FEBB +sadmedialarabic;FEBC +sagujarati;0AB8 +sagurmukhi;0A38 +sahiragana;3055 +sakatakana;30B5 +sakatakanahalfwidth;FF7B +sallallahoualayhewasallamarabic;FDFA +samekh;05E1 +samekhdagesh;FB41 +samekhdageshhebrew;FB41 +samekhhebrew;05E1 +saraaathai;0E32 +saraaethai;0E41 +saraaimaimalaithai;0E44 +saraaimaimuanthai;0E43 +saraamthai;0E33 +saraathai;0E30 +saraethai;0E40 +saraiileftthai;F886 +saraiithai;0E35 +saraileftthai;F885 +saraithai;0E34 +saraothai;0E42 +saraueeleftthai;F888 +saraueethai;0E37 +saraueleftthai;F887 +sarauethai;0E36 +sarauthai;0E38 +sarauuthai;0E39 +sbopomofo;3119 +scaron;0161 +scarondotaccent;1E67 +scedilla;015F +schwa;0259 +schwacyrillic;04D9 +schwadieresiscyrillic;04DB +schwahook;025A +scircle;24E2 +scircumflex;015D +scommaaccent;0219 +sdotaccent;1E61 +sdotbelow;1E63 +sdotbelowdotaccent;1E69 +seagullbelowcmb;033C +second;2033 +secondtonechinese;02CA +section;00A7 +seenarabic;0633 +seenfinalarabic;FEB2 +seeninitialarabic;FEB3 +seenmedialarabic;FEB4 +segol;05B6 +segol13;05B6 +segol1f;05B6 +segol2c;05B6 +segolhebrew;05B6 +segolnarrowhebrew;05B6 +segolquarterhebrew;05B6 +segoltahebrew;0592 +segolwidehebrew;05B6 +seharmenian;057D +sehiragana;305B +sekatakana;30BB +sekatakanahalfwidth;FF7E +semicolon;003B +semicolonarabic;061B +semicolonmonospace;FF1B +semicolonsmall;FE54 +semivoicedmarkkana;309C +semivoicedmarkkanahalfwidth;FF9F +sentisquare;3322 +sentosquare;3323 +seven;0037 +sevenarabic;0667 +sevenbengali;09ED +sevencircle;2466 +sevencircleinversesansserif;2790 +sevendeva;096D +seveneighths;215E +sevengujarati;0AED +sevengurmukhi;0A6D +sevenhackarabic;0667 +sevenhangzhou;3027 +sevenideographicparen;3226 +seveninferior;2087 +sevenmonospace;FF17 +sevenoldstyle;F737 +sevenparen;247A +sevenperiod;248E +sevenpersian;06F7 +sevenroman;2176 +sevensuperior;2077 +seventeencircle;2470 +seventeenparen;2484 +seventeenperiod;2498 +seventhai;0E57 +sfthyphen;00AD +shaarmenian;0577 +shabengali;09B6 +shacyrillic;0448 +shaddaarabic;0651 +shaddadammaarabic;FC61 +shaddadammatanarabic;FC5E +shaddafathaarabic;FC60 +shaddafathatanarabic;0651 064B +shaddakasraarabic;FC62 +shaddakasratanarabic;FC5F +shade;2592 +shadedark;2593 +shadelight;2591 +shademedium;2592 +shadeva;0936 +shagujarati;0AB6 +shagurmukhi;0A36 +shalshelethebrew;0593 +shbopomofo;3115 +shchacyrillic;0449 +sheenarabic;0634 +sheenfinalarabic;FEB6 +sheeninitialarabic;FEB7 +sheenmedialarabic;FEB8 +sheicoptic;03E3 +sheqel;20AA +sheqelhebrew;20AA +sheva;05B0 +sheva115;05B0 +sheva15;05B0 +sheva22;05B0 +sheva2e;05B0 +shevahebrew;05B0 +shevanarrowhebrew;05B0 +shevaquarterhebrew;05B0 +shevawidehebrew;05B0 +shhacyrillic;04BB +shimacoptic;03ED +shin;05E9 +shindagesh;FB49 +shindageshhebrew;FB49 +shindageshshindot;FB2C +shindageshshindothebrew;FB2C +shindageshsindot;FB2D +shindageshsindothebrew;FB2D +shindothebrew;05C1 +shinhebrew;05E9 +shinshindot;FB2A +shinshindothebrew;FB2A +shinsindot;FB2B +shinsindothebrew;FB2B +shook;0282 +sigma;03C3 +sigma1;03C2 +sigmafinal;03C2 +sigmalunatesymbolgreek;03F2 +sihiragana;3057 +sikatakana;30B7 +sikatakanahalfwidth;FF7C +siluqhebrew;05BD +siluqlefthebrew;05BD +similar;223C +sindothebrew;05C2 +siosacirclekorean;3274 +siosaparenkorean;3214 +sioscieuckorean;317E +sioscirclekorean;3266 +sioskiyeokkorean;317A +sioskorean;3145 +siosnieunkorean;317B +siosparenkorean;3206 +siospieupkorean;317D +siostikeutkorean;317C +six;0036 +sixarabic;0666 +sixbengali;09EC +sixcircle;2465 +sixcircleinversesansserif;278F +sixdeva;096C +sixgujarati;0AEC +sixgurmukhi;0A6C +sixhackarabic;0666 +sixhangzhou;3026 +sixideographicparen;3225 +sixinferior;2086 +sixmonospace;FF16 +sixoldstyle;F736 +sixparen;2479 +sixperiod;248D +sixpersian;06F6 +sixroman;2175 +sixsuperior;2076 +sixteencircle;246F +sixteencurrencydenominatorbengali;09F9 +sixteenparen;2483 +sixteenperiod;2497 +sixthai;0E56 +slash;002F +slashmonospace;FF0F +slong;017F +slongdotaccent;1E9B +smileface;263A +smonospace;FF53 +sofpasuqhebrew;05C3 +softhyphen;00AD +softsigncyrillic;044C +sohiragana;305D +sokatakana;30BD +sokatakanahalfwidth;FF7F +soliduslongoverlaycmb;0338 +solidusshortoverlaycmb;0337 +sorusithai;0E29 +sosalathai;0E28 +sosothai;0E0B +sosuathai;0E2A +space;0020 +spacehackarabic;0020 +spade;2660 +spadesuitblack;2660 +spadesuitwhite;2664 +sparen;24AE +squarebelowcmb;033B +squarecc;33C4 +squarecm;339D +squarediagonalcrosshatchfill;25A9 +squarehorizontalfill;25A4 +squarekg;338F +squarekm;339E +squarekmcapital;33CE +squareln;33D1 +squarelog;33D2 +squaremg;338E +squaremil;33D5 +squaremm;339C +squaremsquared;33A1 +squareorthogonalcrosshatchfill;25A6 +squareupperlefttolowerrightfill;25A7 +squareupperrighttolowerleftfill;25A8 +squareverticalfill;25A5 +squarewhitewithsmallblack;25A3 +srsquare;33DB +ssabengali;09B7 +ssadeva;0937 +ssagujarati;0AB7 +ssangcieuckorean;3149 +ssanghieuhkorean;3185 +ssangieungkorean;3180 +ssangkiyeokkorean;3132 +ssangnieunkorean;3165 +ssangpieupkorean;3143 +ssangsioskorean;3146 +ssangtikeutkorean;3138 +ssuperior;F6F2 +sterling;00A3 +sterlingmonospace;FFE1 +strokelongoverlaycmb;0336 +strokeshortoverlaycmb;0335 +subset;2282 +subsetnotequal;228A +subsetorequal;2286 +succeeds;227B +suchthat;220B +suhiragana;3059 +sukatakana;30B9 +sukatakanahalfwidth;FF7D +sukunarabic;0652 +summation;2211 +sun;263C +superset;2283 +supersetnotequal;228B +supersetorequal;2287 +svsquare;33DC +syouwaerasquare;337C +t;0074 +tabengali;09A4 +tackdown;22A4 +tackleft;22A3 +tadeva;0924 +tagujarati;0AA4 +tagurmukhi;0A24 +taharabic;0637 +tahfinalarabic;FEC2 +tahinitialarabic;FEC3 +tahiragana;305F +tahmedialarabic;FEC4 +taisyouerasquare;337D +takatakana;30BF +takatakanahalfwidth;FF80 +tatweelarabic;0640 +tau;03C4 +tav;05EA +tavdages;FB4A +tavdagesh;FB4A +tavdageshhebrew;FB4A +tavhebrew;05EA +tbar;0167 +tbopomofo;310A +tcaron;0165 +tccurl;02A8 +tcedilla;0163 +tcheharabic;0686 +tchehfinalarabic;FB7B +tchehinitialarabic;FB7C +tchehmedialarabic;FB7D +tchehmeeminitialarabic;FB7C FEE4 +tcircle;24E3 +tcircumflexbelow;1E71 +tcommaaccent;0163 +tdieresis;1E97 +tdotaccent;1E6B +tdotbelow;1E6D +tecyrillic;0442 +tedescendercyrillic;04AD +teharabic;062A +tehfinalarabic;FE96 +tehhahinitialarabic;FCA2 +tehhahisolatedarabic;FC0C +tehinitialarabic;FE97 +tehiragana;3066 +tehjeeminitialarabic;FCA1 +tehjeemisolatedarabic;FC0B +tehmarbutaarabic;0629 +tehmarbutafinalarabic;FE94 +tehmedialarabic;FE98 +tehmeeminitialarabic;FCA4 +tehmeemisolatedarabic;FC0E +tehnoonfinalarabic;FC73 +tekatakana;30C6 +tekatakanahalfwidth;FF83 +telephone;2121 +telephoneblack;260E +telishagedolahebrew;05A0 +telishaqetanahebrew;05A9 +tencircle;2469 +tenideographicparen;3229 +tenparen;247D +tenperiod;2491 +tenroman;2179 +tesh;02A7 +tet;05D8 +tetdagesh;FB38 +tetdageshhebrew;FB38 +tethebrew;05D8 +tetsecyrillic;04B5 +tevirhebrew;059B +tevirlefthebrew;059B +thabengali;09A5 +thadeva;0925 +thagujarati;0AA5 +thagurmukhi;0A25 +thalarabic;0630 +thalfinalarabic;FEAC +thanthakhatlowleftthai;F898 +thanthakhatlowrightthai;F897 +thanthakhatthai;0E4C +thanthakhatupperleftthai;F896 +theharabic;062B +thehfinalarabic;FE9A +thehinitialarabic;FE9B +thehmedialarabic;FE9C +thereexists;2203 +therefore;2234 +theta;03B8 +theta1;03D1 +thetasymbolgreek;03D1 +thieuthacirclekorean;3279 +thieuthaparenkorean;3219 +thieuthcirclekorean;326B +thieuthkorean;314C +thieuthparenkorean;320B +thirteencircle;246C +thirteenparen;2480 +thirteenperiod;2494 +thonangmonthothai;0E11 +thook;01AD +thophuthaothai;0E12 +thorn;00FE +thothahanthai;0E17 +thothanthai;0E10 +thothongthai;0E18 +thothungthai;0E16 +thousandcyrillic;0482 +thousandsseparatorarabic;066C +thousandsseparatorpersian;066C +three;0033 +threearabic;0663 +threebengali;09E9 +threecircle;2462 +threecircleinversesansserif;278C +threedeva;0969 +threeeighths;215C +threegujarati;0AE9 +threegurmukhi;0A69 +threehackarabic;0663 +threehangzhou;3023 +threeideographicparen;3222 +threeinferior;2083 +threemonospace;FF13 +threenumeratorbengali;09F6 +threeoldstyle;F733 +threeparen;2476 +threeperiod;248A +threepersian;06F3 +threequarters;00BE +threequartersemdash;F6DE +threeroman;2172 +threesuperior;00B3 +threethai;0E53 +thzsquare;3394 +tihiragana;3061 +tikatakana;30C1 +tikatakanahalfwidth;FF81 +tikeutacirclekorean;3270 +tikeutaparenkorean;3210 +tikeutcirclekorean;3262 +tikeutkorean;3137 +tikeutparenkorean;3202 +tilde;02DC +tildebelowcmb;0330 +tildecmb;0303 +tildecomb;0303 +tildedoublecmb;0360 +tildeoperator;223C +tildeoverlaycmb;0334 +tildeverticalcmb;033E +timescircle;2297 +tipehahebrew;0596 +tipehalefthebrew;0596 +tippigurmukhi;0A70 +titlocyrilliccmb;0483 +tiwnarmenian;057F +tlinebelow;1E6F +tmonospace;FF54 +toarmenian;0569 +tohiragana;3068 +tokatakana;30C8 +tokatakanahalfwidth;FF84 +tonebarextrahighmod;02E5 +tonebarextralowmod;02E9 +tonebarhighmod;02E6 +tonebarlowmod;02E8 +tonebarmidmod;02E7 +tonefive;01BD +tonesix;0185 +tonetwo;01A8 +tonos;0384 +tonsquare;3327 +topatakthai;0E0F +tortoiseshellbracketleft;3014 +tortoiseshellbracketleftsmall;FE5D +tortoiseshellbracketleftvertical;FE39 +tortoiseshellbracketright;3015 +tortoiseshellbracketrightsmall;FE5E +tortoiseshellbracketrightvertical;FE3A +totaothai;0E15 +tpalatalhook;01AB +tparen;24AF +trademark;2122 +trademarksans;F8EA +trademarkserif;F6DB +tretroflexhook;0288 +triagdn;25BC +triaglf;25C4 +triagrt;25BA +triagup;25B2 +ts;02A6 +tsadi;05E6 +tsadidagesh;FB46 +tsadidageshhebrew;FB46 +tsadihebrew;05E6 +tsecyrillic;0446 +tsere;05B5 +tsere12;05B5 +tsere1e;05B5 +tsere2b;05B5 +tserehebrew;05B5 +tserenarrowhebrew;05B5 +tserequarterhebrew;05B5 +tserewidehebrew;05B5 +tshecyrillic;045B +tsuperior;F6F3 +ttabengali;099F +ttadeva;091F +ttagujarati;0A9F +ttagurmukhi;0A1F +tteharabic;0679 +ttehfinalarabic;FB67 +ttehinitialarabic;FB68 +ttehmedialarabic;FB69 +tthabengali;09A0 +tthadeva;0920 +tthagujarati;0AA0 +tthagurmukhi;0A20 +tturned;0287 +tuhiragana;3064 +tukatakana;30C4 +tukatakanahalfwidth;FF82 +tusmallhiragana;3063 +tusmallkatakana;30C3 +tusmallkatakanahalfwidth;FF6F +twelvecircle;246B +twelveparen;247F +twelveperiod;2493 +twelveroman;217B +twentycircle;2473 +twentyhangzhou;5344 +twentyparen;2487 +twentyperiod;249B +two;0032 +twoarabic;0662 +twobengali;09E8 +twocircle;2461 +twocircleinversesansserif;278B +twodeva;0968 +twodotenleader;2025 +twodotleader;2025 +twodotleadervertical;FE30 +twogujarati;0AE8 +twogurmukhi;0A68 +twohackarabic;0662 +twohangzhou;3022 +twoideographicparen;3221 +twoinferior;2082 +twomonospace;FF12 +twonumeratorbengali;09F5 +twooldstyle;F732 +twoparen;2475 +twoperiod;2489 +twopersian;06F2 +tworoman;2171 +twostroke;01BB +twosuperior;00B2 +twothai;0E52 +twothirds;2154 +u;0075 +uacute;00FA +ubar;0289 +ubengali;0989 +ubopomofo;3128 +ubreve;016D +ucaron;01D4 +ucircle;24E4 +ucircumflex;00FB +ucircumflexbelow;1E77 +ucyrillic;0443 +udattadeva;0951 +udblacute;0171 +udblgrave;0215 +udeva;0909 +udieresis;00FC +udieresisacute;01D8 +udieresisbelow;1E73 +udieresiscaron;01DA +udieresiscyrillic;04F1 +udieresisgrave;01DC +udieresismacron;01D6 +udotbelow;1EE5 +ugrave;00F9 +ugujarati;0A89 +ugurmukhi;0A09 +uhiragana;3046 +uhookabove;1EE7 +uhorn;01B0 +uhornacute;1EE9 +uhorndotbelow;1EF1 +uhorngrave;1EEB +uhornhookabove;1EED +uhorntilde;1EEF +uhungarumlaut;0171 +uhungarumlautcyrillic;04F3 +uinvertedbreve;0217 +ukatakana;30A6 +ukatakanahalfwidth;FF73 +ukcyrillic;0479 +ukorean;315C +umacron;016B +umacroncyrillic;04EF +umacrondieresis;1E7B +umatragurmukhi;0A41 +umonospace;FF55 +underscore;005F +underscoredbl;2017 +underscoremonospace;FF3F +underscorevertical;FE33 +underscorewavy;FE4F +union;222A +universal;2200 +uogonek;0173 +uparen;24B0 +upblock;2580 +upperdothebrew;05C4 +upsilon;03C5 +upsilondieresis;03CB +upsilondieresistonos;03B0 +upsilonlatin;028A +upsilontonos;03CD +uptackbelowcmb;031D +uptackmod;02D4 +uragurmukhi;0A73 +uring;016F +ushortcyrillic;045E +usmallhiragana;3045 +usmallkatakana;30A5 +usmallkatakanahalfwidth;FF69 +ustraightcyrillic;04AF +ustraightstrokecyrillic;04B1 +utilde;0169 +utildeacute;1E79 +utildebelow;1E75 +uubengali;098A +uudeva;090A +uugujarati;0A8A +uugurmukhi;0A0A +uumatragurmukhi;0A42 +uuvowelsignbengali;09C2 +uuvowelsigndeva;0942 +uuvowelsigngujarati;0AC2 +uvowelsignbengali;09C1 +uvowelsigndeva;0941 +uvowelsigngujarati;0AC1 +v;0076 +vadeva;0935 +vagujarati;0AB5 +vagurmukhi;0A35 +vakatakana;30F7 +vav;05D5 +vavdagesh;FB35 +vavdagesh65;FB35 +vavdageshhebrew;FB35 +vavhebrew;05D5 +vavholam;FB4B +vavholamhebrew;FB4B +vavvavhebrew;05F0 +vavyodhebrew;05F1 +vcircle;24E5 +vdotbelow;1E7F +vecyrillic;0432 +veharabic;06A4 +vehfinalarabic;FB6B +vehinitialarabic;FB6C +vehmedialarabic;FB6D +vekatakana;30F9 +venus;2640 +verticalbar;007C +verticallineabovecmb;030D +verticallinebelowcmb;0329 +verticallinelowmod;02CC +verticallinemod;02C8 +vewarmenian;057E +vhook;028B +vikatakana;30F8 +viramabengali;09CD +viramadeva;094D +viramagujarati;0ACD +visargabengali;0983 +visargadeva;0903 +visargagujarati;0A83 +vmonospace;FF56 +voarmenian;0578 +voicediterationhiragana;309E +voicediterationkatakana;30FE +voicedmarkkana;309B +voicedmarkkanahalfwidth;FF9E +vokatakana;30FA +vparen;24B1 +vtilde;1E7D +vturned;028C +vuhiragana;3094 +vukatakana;30F4 +w;0077 +wacute;1E83 +waekorean;3159 +wahiragana;308F +wakatakana;30EF +wakatakanahalfwidth;FF9C +wakorean;3158 +wasmallhiragana;308E +wasmallkatakana;30EE +wattosquare;3357 +wavedash;301C +wavyunderscorevertical;FE34 +wawarabic;0648 +wawfinalarabic;FEEE +wawhamzaabovearabic;0624 +wawhamzaabovefinalarabic;FE86 +wbsquare;33DD +wcircle;24E6 +wcircumflex;0175 +wdieresis;1E85 +wdotaccent;1E87 +wdotbelow;1E89 +wehiragana;3091 +weierstrass;2118 +wekatakana;30F1 +wekorean;315E +weokorean;315D +wgrave;1E81 +whitebullet;25E6 +whitecircle;25CB +whitecircleinverse;25D9 +whitecornerbracketleft;300E +whitecornerbracketleftvertical;FE43 +whitecornerbracketright;300F +whitecornerbracketrightvertical;FE44 +whitediamond;25C7 +whitediamondcontainingblacksmalldiamond;25C8 +whitedownpointingsmalltriangle;25BF +whitedownpointingtriangle;25BD +whiteleftpointingsmalltriangle;25C3 +whiteleftpointingtriangle;25C1 +whitelenticularbracketleft;3016 +whitelenticularbracketright;3017 +whiterightpointingsmalltriangle;25B9 +whiterightpointingtriangle;25B7 +whitesmallsquare;25AB +whitesmilingface;263A +whitesquare;25A1 +whitestar;2606 +whitetelephone;260F +whitetortoiseshellbracketleft;3018 +whitetortoiseshellbracketright;3019 +whiteuppointingsmalltriangle;25B5 +whiteuppointingtriangle;25B3 +wihiragana;3090 +wikatakana;30F0 +wikorean;315F +wmonospace;FF57 +wohiragana;3092 +wokatakana;30F2 +wokatakanahalfwidth;FF66 +won;20A9 +wonmonospace;FFE6 +wowaenthai;0E27 +wparen;24B2 +wring;1E98 +wsuperior;02B7 +wturned;028D +wynn;01BF +x;0078 +xabovecmb;033D +xbopomofo;3112 +xcircle;24E7 +xdieresis;1E8D +xdotaccent;1E8B +xeharmenian;056D +xi;03BE +xmonospace;FF58 +xparen;24B3 +xsuperior;02E3 +y;0079 +yaadosquare;334E +yabengali;09AF +yacute;00FD +yadeva;092F +yaekorean;3152 +yagujarati;0AAF +yagurmukhi;0A2F +yahiragana;3084 +yakatakana;30E4 +yakatakanahalfwidth;FF94 +yakorean;3151 +yamakkanthai;0E4E +yasmallhiragana;3083 +yasmallkatakana;30E3 +yasmallkatakanahalfwidth;FF6C +yatcyrillic;0463 +ycircle;24E8 +ycircumflex;0177 +ydieresis;00FF +ydotaccent;1E8F +ydotbelow;1EF5 +yeharabic;064A +yehbarreearabic;06D2 +yehbarreefinalarabic;FBAF +yehfinalarabic;FEF2 +yehhamzaabovearabic;0626 +yehhamzaabovefinalarabic;FE8A +yehhamzaaboveinitialarabic;FE8B +yehhamzaabovemedialarabic;FE8C +yehinitialarabic;FEF3 +yehmedialarabic;FEF4 +yehmeeminitialarabic;FCDD +yehmeemisolatedarabic;FC58 +yehnoonfinalarabic;FC94 +yehthreedotsbelowarabic;06D1 +yekorean;3156 +yen;00A5 +yenmonospace;FFE5 +yeokorean;3155 +yeorinhieuhkorean;3186 +yerahbenyomohebrew;05AA +yerahbenyomolefthebrew;05AA +yericyrillic;044B +yerudieresiscyrillic;04F9 +yesieungkorean;3181 +yesieungpansioskorean;3183 +yesieungsioskorean;3182 +yetivhebrew;059A +ygrave;1EF3 +yhook;01B4 +yhookabove;1EF7 +yiarmenian;0575 +yicyrillic;0457 +yikorean;3162 +yinyang;262F +yiwnarmenian;0582 +ymonospace;FF59 +yod;05D9 +yoddagesh;FB39 +yoddageshhebrew;FB39 +yodhebrew;05D9 +yodyodhebrew;05F2 +yodyodpatahhebrew;FB1F +yohiragana;3088 +yoikorean;3189 +yokatakana;30E8 +yokatakanahalfwidth;FF96 +yokorean;315B +yosmallhiragana;3087 +yosmallkatakana;30E7 +yosmallkatakanahalfwidth;FF6E +yotgreek;03F3 +yoyaekorean;3188 +yoyakorean;3187 +yoyakthai;0E22 +yoyingthai;0E0D +yparen;24B4 +ypogegrammeni;037A +ypogegrammenigreekcmb;0345 +yr;01A6 +yring;1E99 +ysuperior;02B8 +ytilde;1EF9 +yturned;028E +yuhiragana;3086 +yuikorean;318C +yukatakana;30E6 +yukatakanahalfwidth;FF95 +yukorean;3160 +yusbigcyrillic;046B +yusbigiotifiedcyrillic;046D +yuslittlecyrillic;0467 +yuslittleiotifiedcyrillic;0469 +yusmallhiragana;3085 +yusmallkatakana;30E5 +yusmallkatakanahalfwidth;FF6D +yuyekorean;318B +yuyeokorean;318A +yyabengali;09DF +yyadeva;095F +z;007A +zaarmenian;0566 +zacute;017A +zadeva;095B +zagurmukhi;0A5B +zaharabic;0638 +zahfinalarabic;FEC6 +zahinitialarabic;FEC7 +zahiragana;3056 +zahmedialarabic;FEC8 +zainarabic;0632 +zainfinalarabic;FEB0 +zakatakana;30B6 +zaqefgadolhebrew;0595 +zaqefqatanhebrew;0594 +zarqahebrew;0598 +zayin;05D6 +zayindagesh;FB36 +zayindageshhebrew;FB36 +zayinhebrew;05D6 +zbopomofo;3117 +zcaron;017E +zcircle;24E9 +zcircumflex;1E91 +zcurl;0291 +zdot;017C +zdotaccent;017C +zdotbelow;1E93 +zecyrillic;0437 +zedescendercyrillic;0499 +zedieresiscyrillic;04DF +zehiragana;305C +zekatakana;30BC +zero;0030 +zeroarabic;0660 +zerobengali;09E6 +zerodeva;0966 +zerogujarati;0AE6 +zerogurmukhi;0A66 +zerohackarabic;0660 +zeroinferior;2080 +zeromonospace;FF10 +zerooldstyle;F730 +zeropersian;06F0 +zerosuperior;2070 +zerothai;0E50 +zerowidthjoiner;FEFF +zerowidthnonjoiner;200C +zerowidthspace;200B +zeta;03B6 +zhbopomofo;3113 +zhearmenian;056A +zhebrevecyrillic;04C2 +zhecyrillic;0436 +zhedescendercyrillic;0497 +zhedieresiscyrillic;04DD +zihiragana;3058 +zikatakana;30B8 +zinorhebrew;05AE +zlinebelow;1E95 +zmonospace;FF5A +zohiragana;305E +zokatakana;30BE +zparen;24B5 +zretroflexhook;0290 +zstroke;01B6 +zuhiragana;305A +zukatakana;30BA +#END diff --git a/pdf/model/textencoding/glyphlist/glyphparser.go b/pdf/model/textencoding/glyphlist/glyphparser.go new file mode 100644 index 00000000..abd711c9 --- /dev/null +++ b/pdf/model/textencoding/glyphlist/glyphparser.go @@ -0,0 +1,223 @@ +package main + +// Utility to generate static maps of glyph <-> rune conversions for a glyphlist. + +import ( + "bufio" + "errors" + "flag" + "fmt" + "io" + "os" + "sort" + "strings" +) + +func main() { + glyphlistFile := flag.String("glyphfile", "", "Glyph file to parse") + method := flag.String("method", "glyph-to-rune", "glyph-to-rune/rune-to-glyph") + + flag.Parse() + + if len(*glyphlistFile) == 0 { + fmt.Printf("Need to specify glyph list file via glyphfile, see -h for options\n") + os.Exit(1) + } + + glyphToUnicodeMap, err := parseGlyphList(*glyphlistFile) + if err != nil { + fmt.Printf("Failed: %v\n", err) + os.Exit(1) + } + + switch *method { + case "glyph-to-rune": + printGlyphToRuneList(glyphToUnicodeMap) + case "rune-to-glyph": + printRuneToGlyphList(glyphToUnicodeMap) + default: + fmt.Printf("Unsupported method: %s, see -h for options\n", *method) + } + + /* + glyphs, err := loadGlyphlist("symbol.txt") + if err != nil { + fmt.Printf("Failed: %v\n", err) + os.Exit(1) + } + _ = glyphs + */ + + //printGlyphList(glyphToUnicodeMap) + //printEncodingGlyphToRuneMap(glyphs, glyphToUnicodeMap) + //printEncodingRuneToGlyphMap(glyphs, glyphToUnicodeMap) + +} + +func printGlyphToRuneList(glyphToUnicodeMap map[string]string) { + keys := []string{} + for k, _ := range glyphToUnicodeMap { + keys = append(keys, k) + } + sort.Strings(keys) + + fmt.Printf("var glyphlistGlyphToRuneMap = map[string]rune{\n") + for _, glyph := range keys { + ucode := glyphToUnicodeMap[glyph] + fmt.Printf("\t\"%s\":\t'\\u%s',\n", glyph, strings.ToLower(ucode)) + } + fmt.Printf("}\n") +} + +func printRuneToGlyphList(glyphToUnicodeMap map[string]string) { + keys := []string{} + for k, _ := range glyphToUnicodeMap { + keys = append(keys, k) + } + sort.Strings(keys) + + uniqueList := map[string]bool{} + + fmt.Printf("var glyphlistRuneToGlyphMap = map[rune]string{\n") + for _, glyph := range keys { + ucode := glyphToUnicodeMap[glyph] + ucode = strings.ToLower(ucode) + + _, duplicate := uniqueList[ucode] + if !duplicate { + fmt.Printf("\t'\\u%s':\t\"%s\",\n", ucode, glyph) + uniqueList[ucode] = true + } else { + fmt.Printf("//\t'\\u%s':\t\"%s\", // duplicate\n", ucode, glyph) + } + } + fmt.Printf("}\n") +} + +func printEncodingGlyphToRuneMap(glyphs []string, glyphToUnicodeMap map[string]string) { + fmt.Printf("var nameEncodingGlyphToRuneMap map[string]rune = map[string]rune{\n") + for _, glyph := range glyphs { + ucode, has := glyphToUnicodeMap[glyph] + if has { + fmt.Printf("\t\"%s\":\t'\\u%s',\n", glyph, strings.ToLower(ucode)) + } else { + fmt.Printf("'%s' - NOT FOUND\n", glyph) + } + + } + fmt.Printf("}\n") +} + +func printEncodingRuneToGlyphMap(glyphs []string, glyphToUnicodeMap map[string]string) { + fmt.Printf("var nameEncodingRuneToGlyphMap map[rune]string = map[rune]string{\n") + for _, glyph := range glyphs { + ucode, has := glyphToUnicodeMap[glyph] + if has { + fmt.Printf("\t'\\u%s':\t\"%s\",\n", strings.ToLower(ucode), glyph) + } else { + fmt.Printf("'%s' - NOT FOUND\n", glyph) + } + + } + fmt.Printf("}\n") +} + +func parseGlyphList(filename string) (map[string]string, error) { + f, err := os.Open(filename) + if err != nil { + return nil, err + } + defer f.Close() + + reader := bufio.NewReader(f) + + gmap := map[string]bool{} + glyphToUnicodeMap := map[string]string{} + + for { + line, err := reader.ReadString('\n') + if err != nil { + if err == io.EOF { + break + } + return nil, err + } + + line = strings.Trim(line, " \r\n") + + if line[0] == '#' { + continue + } + + parts := strings.Split(line, ";") + if len(parts) != 2 { + return nil, errors.New("Invalid part") + } + + if len(parts[1]) > 4 { + subparts := strings.Split(parts[1], " ") + for _, subpart := range subparts { + //fmt.Printf("\"%s\": '\\u%s', //%s (non unique)\n", parts[0], parts[1][0:4], parts[1][4:]) + if _, has := gmap[subpart]; !has { + //fmt.Printf("'\\u%s': \"%s\",\n", subpart, parts[0]) + gmap[subpart] = true + glyphToUnicodeMap[parts[0]] = subpart + } else { + //fmt.Printf("// '\\u%s': \"%s\", (duplicate)\n", subpart, parts[0]) + glyphToUnicodeMap[parts[0]] = subpart + } + } + } else { + //fmt.Printf("\"%s\": '\\u%s',\n", parts[0], parts[1]) + + if _, has := gmap[parts[1]]; !has { + //fmt.Printf("'\\u%s': \"%s\",\n", parts[1], parts[0]) + gmap[parts[1]] = true + glyphToUnicodeMap[parts[0]] = parts[1] + } else { + //fmt.Printf("// '\\u%s': \"%s\", (duplicate)\n", parts[1], parts[0]) + glyphToUnicodeMap[parts[0]] = parts[1] + } + } + } + + return glyphToUnicodeMap, nil +} + +func loadGlyphlist(filename string) ([]string, error) { + f, err := os.Open(filename) + if err != nil { + return nil, err + } + defer f.Close() + + glyphs := []string{} + reader := bufio.NewReader(f) + + index := -1 + for { + line, err := reader.ReadString('\n') + if err != nil { + if err == io.EOF { + break + } + return nil, err + } + + line = strings.Trim(line, " \r\n") + + //fmt.Printf("%s\n", line) + + parts := strings.Split(line, " ") + for _, part := range parts { + index++ + if part == "notdef" { + continue + } + //fmt.Printf("%d: \"%s\",\n", index, part) + glyphs = append(glyphs, part) + } + } + + return glyphs, nil +} diff --git a/pdf/model/textencoding/glyphlist/macroman.txt b/pdf/model/textencoding/glyphlist/macroman.txt new file mode 100644 index 00000000..4c566d7c --- /dev/null +++ b/pdf/model/textencoding/glyphlist/macroman.txt @@ -0,0 +1,32 @@ +notdef notdef notdef notdef notdef notdef notdef notdef +notdef notdef notdef notdef notdef notdef notdef notdef +notdef notdef notdef notdef notdef notdef notdef notdef +notdef notdef notdef notdef notdef notdef notdef notdef +space exclam quotedbl numbersign dollar percent ampersand quotesingle +parenleft parenright asterisk plus comma minus period slash +zero one two three four five six seven +eight nine colon semicolon less equal greater question +at A B C D E F G +H I J K L M N O +P Q R S T U V W +X Y Z bracketleft backslash bracketright asciicircum underscore +grave a b c d e f g +h i j k l m n o +p q r s t u v w +x y z braceleft bar braceright asciitilde notdef +Adieresis Aring Ccedilla Eacute Ntilde Odieresis Udieresis aacute +agrave acircumflex adieresis atilde aring ccedilla eacute egrave +ecircumflex edieresis iacute igrave icircumflex idieresis ntilde oacute +ograve ocircumflex odieresis otilde uacute ugrave ucircumflex udieresis +dagger degree cent sterling section bullet paragraph germandbls +registered copyright trademark acute dieresis notequal AE Oslash +infinity plusminus lessequal greaterequal yen mu partialdiff summation +Pi pi integral ordfeminine ordmasculine Omega ae oslash +questiondown exclamdown logicalnot radical florin approxequal delta guillemotleft +guillemotright ellipsis space Agrave Atilde Otilde OE oe +endash emdash quotedblleft quotedblright quoteleft quoteright divide lozenge +ydieresis Ydieresis fraction currency guilsinglleft guilsinglright fi fl +daggerdbl periodcentered quotesinglbase quotedblbase perthousand Acircumflex Ecircumflex Aacute +Edieresis Egrave Iacute Icircumflex Idieresis Igrave Oacute Ocircumflex +heart Ograve Uacute Ucircumflex Ugrave dotlessi circumflex tilde +macron breve dotaccent ring cedilla hungarumlaut ogonek caron diff --git a/pdf/model/textencoding/glyphlist/symbol.txt b/pdf/model/textencoding/glyphlist/symbol.txt new file mode 100644 index 00000000..0b9b8461 --- /dev/null +++ b/pdf/model/textencoding/glyphlist/symbol.txt @@ -0,0 +1,189 @@ +space +exclam +universal +numbersign +existential +percent +ampersand +suchthat +parenleft +parenright +asteriskmath +plus +comma +minus +period +slash +zero +one +two +three +four +five +six +seven +eight +nine +colon +semicolon +less +equal +greater +question +congruent +Alpha +Beta +Chi +Delta +Epsilon +Phi +Gamma +Eta +Iota +theta1 +Kappa +Lambda +Mu +Nu +Omicron +Pi +Theta +Rho +Sigma +Tau +Upsilon +sigma1 +Omega +Xi +Psi +Zeta +bracketleft +therefore +bracketright +perpendicular +underscore +radicalex +alpha +beta +chi +delta +epsilon +phi +gamma +eta +iota +phi1 +kappa +lambda +mu +nu +omicron +pi +theta +rho +sigma +tau +upsilon +omega1 +omega +xi +psi +zeta +braceleft +bar +braceright +similar +Euro +Upsilon1 +minute +lessequal +fraction +infinity +florin +club +diamond +heart +spade +arrowboth +arrowleft +arrowup +arrowright +arrowdown +degree +plusminus +second +greaterequal +multiply +proportional +partialdiff +bullet +divide +notequal +equivalence +approxequal +ellipsis +arrowvertex +arrowhorizex +carriagereturn +aleph +Ifraktur +Rfraktur +weierstrass +circlemultiply +circleplus +emptyset +intersection +union +propersuperset +reflexsuperset +notsubset +propersubset +reflexsubset +element +notelement +angle +gradient +registerserif +copyrightserif +trademarkserif +product +radical +dotmath +logicalnot +logicaland +logicalor +arrowdblboth +arrowdblleft +arrowdblup +arrowdblright +arrowdbldown +lozenge +angleleft +registersans +copyrightsans +trademarksans +summation +parenlefttp +parenleftex +parenleftbt +bracketlefttp +bracketleftex +bracketleftbt +bracelefttp +braceleftmid +braceleftbt +braceex +angleright +integral +integraltp +integralex +integralbt +parenrighttp +parenrightex +parenrightbt +bracketrighttp +bracketrightex +bracketrightbt +bracerighttp +bracerightmid +bracerightbt diff --git a/pdf/model/textencoding/glyphlist/winansi.txt b/pdf/model/textencoding/glyphlist/winansi.txt new file mode 100644 index 00000000..6fda88d2 --- /dev/null +++ b/pdf/model/textencoding/glyphlist/winansi.txt @@ -0,0 +1,28 @@ +notdef notdef notdef notdef notdef notdef notdef notdef +notdef notdef notdef notdef notdef notdef notdef notdef +notdef notdef notdef notdef notdef notdef notdef notdef +notdef notdef notdef notdef notdef notdef notdef notdef +space exclam quotedbl numbersign dollar percent ampersand quotesingle +parenleft parenright asterisk plus comma hyphen period slash zero one +two three four five six seven eight nine colon semicolon less equal +greater question at A B C D E F G H I J K L M N O P Q R S T U V W X +Y Z bracketleft backslash bracketright asciicircum underscore +grave a b c d e f g h i j k l m n o p q r s t u v w x y z +braceleft bar braceright asciitilde bullet Euro bullet quotesinglbase +florin quotedblbase ellipsis dagger daggerdbl circumflex perthousand +Scaron guilsinglleft OE bullet Zcaron bullet bullet quoteleft quoteright +quotedblleft quotedblright bullet endash emdash tilde trademark scaron +guilsinglright oe bullet zcaron Ydieresis space exclamdown cent +sterling currency yen brokenbar section dieresis copyright +ordfeminine guillemotleft logicalnot hyphen registered macron degree +plusminus twosuperior threesuperior acute mu paragraph +periodcentered cedilla onesuperior ordmasculine guillemotright +onequarter onehalf threequarters questiondown Agrave Aacute +Acircumflex Atilde Adieresis Aring AE Ccedilla Egrave Eacute +Ecircumflex Edieresis Igrave Iacute Icircumflex Idieresis Eth Ntilde +Ograve Oacute Ocircumflex Otilde Odieresis multiply Oslash Ugrave +Uacute Ucircumflex Udieresis Yacute Thorn germandbls agrave aacute +acircumflex atilde adieresis aring ae ccedilla egrave eacute +ecircumflex edieresis igrave iacute icircumflex idieresis eth ntilde +ograve oacute ocircumflex otilde odieresis divide oslash ugrave +uacute ucircumflex udieresis yacute thorn ydieresis diff --git a/pdf/model/textencoding/glyphlist/zapfdingbats.txt b/pdf/model/textencoding/glyphlist/zapfdingbats.txt new file mode 100644 index 00000000..2fc60ba9 --- /dev/null +++ b/pdf/model/textencoding/glyphlist/zapfdingbats.txt @@ -0,0 +1,247 @@ +# ----------------------------------------------------------- +# Copyright 2002, 2010, 2015 Adobe Systems Incorporated. +# All rights reserved. +# +# 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 Systems Incorporated 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: ITC Zapf Dingbats 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 +# +a100;275E +a101;2761 +a102;2762 +a103;2763 +a104;2764 +a105;2710 +a106;2765 +a107;2766 +a108;2767 +a109;2660 +a10;2721 +a110;2665 +a111;2666 +a112;2663 +a117;2709 +a118;2708 +a119;2707 +a11;261B +a120;2460 +a121;2461 +a122;2462 +a123;2463 +a124;2464 +a125;2465 +a126;2466 +a127;2467 +a128;2468 +a129;2469 +a12;261E +a130;2776 +a131;2777 +a132;2778 +a133;2779 +a134;277A +a135;277B +a136;277C +a137;277D +a138;277E +a139;277F +a13;270C +a140;2780 +a141;2781 +a142;2782 +a143;2783 +a144;2784 +a145;2785 +a146;2786 +a147;2787 +a148;2788 +a149;2789 +a14;270D +a150;278A +a151;278B +a152;278C +a153;278D +a154;278E +a155;278F +a156;2790 +a157;2791 +a158;2792 +a159;2793 +a15;270E +a160;2794 +a161;2192 +a162;27A3 +a163;2194 +a164;2195 +a165;2799 +a166;279B +a167;279C +a168;279D +a169;279E +a16;270F +a170;279F +a171;27A0 +a172;27A1 +a173;27A2 +a174;27A4 +a175;27A5 +a176;27A6 +a177;27A7 +a178;27A8 +a179;27A9 +a17;2711 +a180;27AB +a181;27AD +a182;27AF +a183;27B2 +a184;27B3 +a185;27B5 +a186;27B8 +a187;27BA +a188;27BB +a189;27BC +a18;2712 +a190;27BD +a191;27BE +a192;279A +a193;27AA +a194;27B6 +a195;27B9 +a196;2798 +a197;27B4 +a198;27B7 +a199;27AC +a19;2713 +a1;2701 +a200;27AE +a201;27B1 +a202;2703 +a203;2750 +a204;2752 +a205;276E +a206;2770 +a20;2714 +a21;2715 +a22;2716 +a23;2717 +a24;2718 +a25;2719 +a26;271A +a27;271B +a28;271C +a29;2722 +a2;2702 +a30;2723 +a31;2724 +a32;2725 +a33;2726 +a34;2727 +a35;2605 +a36;2729 +a37;272A +a38;272B +a39;272C +a3;2704 +a40;272D +a41;272E +a42;272F +a43;2730 +a44;2731 +a45;2732 +a46;2733 +a47;2734 +a48;2735 +a49;2736 +a4;260E +a50;2737 +a51;2738 +a52;2739 +a53;273A +a54;273B +a55;273C +a56;273D +a57;273E +a58;273F +a59;2740 +a5;2706 +a60;2741 +a61;2742 +a62;2743 +a63;2744 +a64;2745 +a65;2746 +a66;2747 +a67;2748 +a68;2749 +a69;274A +a6;271D +a70;274B +a71;25CF +a72;274D +a73;25A0 +a74;274F +a75;2751 +a76;25B2 +a77;25BC +a78;25C6 +a79;2756 +a7;271E +a81;25D7 +a82;2758 +a83;2759 +a84;275A +a85;276F +a86;2771 +a87;2772 +a88;2773 +a89;2768 +a8;271F +a90;2769 +a91;276C +a92;276D +a93;276A +a94;276B +a95;2774 +a96;2775 +a97;275B +a98;275C +a99;275D +a9;2720 +#END diff --git a/pdf/model/textencoding/glyphs_glyphlist.go b/pdf/model/textencoding/glyphs_glyphlist.go new file mode 100644 index 00000000..c3417f4f --- /dev/null +++ b/pdf/model/textencoding/glyphs_glyphlist.go @@ -0,0 +1,8578 @@ +/* + * This file is subject to the terms and conditions defined in + * file 'LICENSE.md', which is part of this source code package. + */ +/* + * The embedded glyph to unicode mappings specified in this file are distributed under the terms listed in + * ./glyphlist/glyphlist.txt. + */ + +package textencoding + +var glyphlistGlyphToRuneMap = map[string]rune{ + "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": '\u05b2', + "dalethatafpatahhebrew": '\u05b2', + "dalethatafsegol": '\u05b1', + "dalethatafsegolhebrew": '\u05b1', + "dalethebrew": '\u05d3', + "dalethiriq": '\u05b4', + "dalethiriqhebrew": '\u05b4', + "daletholam": '\u05b9', + "daletholamhebrew": '\u05b9', + "daletpatah": '\u05b7', + "daletpatahhebrew": '\u05b7', + "daletqamats": '\u05b8', + "daletqamatshebrew": '\u05b8', + "daletqubuts": '\u05bb', + "daletqubutshebrew": '\u05bb', + "daletsegol": '\u05b6', + "daletsegolhebrew": '\u05b6', + "daletsheva": '\u05b0', + "daletshevahebrew": '\u05b0', + "dalettsere": '\u05b5', + "dalettserehebrew": '\u05b5', + "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": '\u05b8', + "finalkafqamatshebrew": '\u05b8', + "finalkafsheva": '\u05b0', + "finalkafshevahebrew": '\u05b0', + "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": '\u064f', + "hamzadammatanarabic": '\u064c', + "hamzafathaarabic": '\u064e', + "hamzafathatanarabic": '\u064b', + "hamzalowarabic": '\u0621', + "hamzalowkasraarabic": '\u0650', + "hamzalowkasratanarabic": '\u064d', + "hamzasukunarabic": '\u0652', + "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": '\u05b9', + "lamedholamdagesh": '\u05bc', + "lamedholamdageshhebrew": '\u05bc', + "lamedholamhebrew": '\u05b9', + "lamfinalarabic": '\ufede', + "lamhahinitialarabic": '\ufcca', + "laminitialarabic": '\ufedf', + "lamjeeminitialarabic": '\ufcc9', + "lamkhahinitialarabic": '\ufccb', + "lamlamhehisolatedarabic": '\ufdf2', + "lammedialarabic": '\ufee0', + "lammeemhahinitialarabic": '\ufd88', + "lammeeminitialarabic": '\ufccc', + "lammeemjeeminitialarabic": '\ufea0', + "lammeemkhahinitialarabic": '\ufea8', + "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": '\ufeec', + "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": '\u05b2', + "qofhatafpatahhebrew": '\u05b2', + "qofhatafsegol": '\u05b1', + "qofhatafsegolhebrew": '\u05b1', + "qofhebrew": '\u05e7', + "qofhiriq": '\u05b4', + "qofhiriqhebrew": '\u05b4', + "qofholam": '\u05b9', + "qofholamhebrew": '\u05b9', + "qofpatah": '\u05b7', + "qofpatahhebrew": '\u05b7', + "qofqamats": '\u05b8', + "qofqamatshebrew": '\u05b8', + "qofqubuts": '\u05bb', + "qofqubutshebrew": '\u05bb', + "qofsegol": '\u05b6', + "qofsegolhebrew": '\u05b6', + "qofsheva": '\u05b0', + "qofshevahebrew": '\u05b0', + "qoftsere": '\u05b5', + "qoftserehebrew": '\u05b5', + "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": '\u0644', + "rekatakana": '\u30ec', + "rekatakanahalfwidth": '\uff9a', + "resh": '\u05e8', + "reshdageshhebrew": '\ufb48', + "reshhatafpatah": '\u05b2', + "reshhatafpatahhebrew": '\u05b2', + "reshhatafsegol": '\u05b1', + "reshhatafsegolhebrew": '\u05b1', + "reshhebrew": '\u05e8', + "reshhiriq": '\u05b4', + "reshhiriqhebrew": '\u05b4', + "reshholam": '\u05b9', + "reshholamhebrew": '\u05b9', + "reshpatah": '\u05b7', + "reshpatahhebrew": '\u05b7', + "reshqamats": '\u05b8', + "reshqamatshebrew": '\u05b8', + "reshqubuts": '\u05bb', + "reshqubutshebrew": '\u05bb', + "reshsegol": '\u05b6', + "reshsegolhebrew": '\u05b6', + "reshsheva": '\u05b0', + "reshshevahebrew": '\u05b0', + "reshtsere": '\u05b5', + "reshtserehebrew": '\u05b5', + "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": '\u064b', + "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": '\ufee4', + "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', +} + +var glyphlistRuneToGlyphMap = map[rune]string{ + '\u0041': "A", + '\u00c6': "AE", + '\u01fc': "AEacute", + '\u01e2': "AEmacron", + '\uf7e6': "AEsmall", + '\u00c1': "Aacute", + '\uf7e1': "Aacutesmall", + '\u0102': "Abreve", + '\u1eae': "Abreveacute", + '\u04d0': "Abrevecyrillic", + '\u1eb6': "Abrevedotbelow", + '\u1eb0': "Abrevegrave", + '\u1eb2': "Abrevehookabove", + '\u1eb4': "Abrevetilde", + '\u01cd': "Acaron", + '\u24b6': "Acircle", + '\u00c2': "Acircumflex", + '\u1ea4': "Acircumflexacute", + '\u1eac': "Acircumflexdotbelow", + '\u1ea6': "Acircumflexgrave", + '\u1ea8': "Acircumflexhookabove", + '\uf7e2': "Acircumflexsmall", + '\u1eaa': "Acircumflextilde", + '\uf6c9': "Acute", + '\uf7b4': "Acutesmall", + '\u0410': "Acyrillic", + '\u0200': "Adblgrave", + '\u00c4': "Adieresis", + '\u04d2': "Adieresiscyrillic", + '\u01de': "Adieresismacron", + '\uf7e4': "Adieresissmall", + '\u1ea0': "Adotbelow", + '\u01e0': "Adotmacron", + '\u00c0': "Agrave", + '\uf7e0': "Agravesmall", + '\u1ea2': "Ahookabove", + '\u04d4': "Aiecyrillic", + '\u0202': "Ainvertedbreve", + '\u0391': "Alpha", + '\u0386': "Alphatonos", + '\u0100': "Amacron", + '\uff21': "Amonospace", + '\u0104': "Aogonek", + '\u00c5': "Aring", + '\u01fa': "Aringacute", + '\u1e00': "Aringbelow", + '\uf7e5': "Aringsmall", + '\uf761': "Asmall", + '\u00c3': "Atilde", + '\uf7e3': "Atildesmall", + '\u0531': "Aybarmenian", + '\u0042': "B", + '\u24b7': "Bcircle", + '\u1e02': "Bdotaccent", + '\u1e04': "Bdotbelow", + '\u0411': "Becyrillic", + '\u0532': "Benarmenian", + '\u0392': "Beta", + '\u0181': "Bhook", + '\u1e06': "Blinebelow", + '\uff22': "Bmonospace", + '\uf6f4': "Brevesmall", + '\uf762': "Bsmall", + '\u0182': "Btopbar", + '\u0043': "C", + '\u053e': "Caarmenian", + '\u0106': "Cacute", + '\uf6ca': "Caron", + '\uf6f5': "Caronsmall", + '\u010c': "Ccaron", + '\u00c7': "Ccedilla", + '\u1e08': "Ccedillaacute", + '\uf7e7': "Ccedillasmall", + '\u24b8': "Ccircle", + '\u0108': "Ccircumflex", + '\u010a': "Cdot", + // '\u010a': "Cdotaccent", // duplicate + '\uf7b8': "Cedillasmall", + '\u0549': "Chaarmenian", + '\u04bc': "Cheabkhasiancyrillic", + '\u0427': "Checyrillic", + '\u04be': "Chedescenderabkhasiancyrillic", + '\u04b6': "Chedescendercyrillic", + '\u04f4': "Chedieresiscyrillic", + '\u0543': "Cheharmenian", + '\u04cb': "Chekhakassiancyrillic", + '\u04b8': "Cheverticalstrokecyrillic", + '\u03a7': "Chi", + '\u0187': "Chook", + '\uf6f6': "Circumflexsmall", + '\uff23': "Cmonospace", + '\u0551': "Coarmenian", + '\uf763': "Csmall", + '\u0044': "D", + '\u01f1': "DZ", + '\u01c4': "DZcaron", + '\u0534': "Daarmenian", + '\u0189': "Dafrican", + '\u010e': "Dcaron", + '\u1e10': "Dcedilla", + '\u24b9': "Dcircle", + '\u1e12': "Dcircumflexbelow", + '\u0110': "Dcroat", + '\u1e0a': "Ddotaccent", + '\u1e0c': "Ddotbelow", + '\u0414': "Decyrillic", + '\u03ee': "Deicoptic", + '\u2206': "Delta", + '\u0394': "Deltagreek", + '\u018a': "Dhook", + '\uf6cb': "Dieresis", + '\uf6cc': "DieresisAcute", + '\uf6cd': "DieresisGrave", + '\uf7a8': "Dieresissmall", + '\u03dc': "Digammagreek", + '\u0402': "Djecyrillic", + '\u1e0e': "Dlinebelow", + '\uff24': "Dmonospace", + '\uf6f7': "Dotaccentsmall", + // '\u0110': "Dslash", // duplicate + '\uf764': "Dsmall", + '\u018b': "Dtopbar", + '\u01f2': "Dz", + '\u01c5': "Dzcaron", + '\u04e0': "Dzeabkhasiancyrillic", + '\u0405': "Dzecyrillic", + '\u040f': "Dzhecyrillic", + '\u0045': "E", + '\u00c9': "Eacute", + '\uf7e9': "Eacutesmall", + '\u0114': "Ebreve", + '\u011a': "Ecaron", + '\u1e1c': "Ecedillabreve", + '\u0535': "Echarmenian", + '\u24ba': "Ecircle", + '\u00ca': "Ecircumflex", + '\u1ebe': "Ecircumflexacute", + '\u1e18': "Ecircumflexbelow", + '\u1ec6': "Ecircumflexdotbelow", + '\u1ec0': "Ecircumflexgrave", + '\u1ec2': "Ecircumflexhookabove", + '\uf7ea': "Ecircumflexsmall", + '\u1ec4': "Ecircumflextilde", + '\u0404': "Ecyrillic", + '\u0204': "Edblgrave", + '\u00cb': "Edieresis", + '\uf7eb': "Edieresissmall", + '\u0116': "Edot", + // '\u0116': "Edotaccent", // duplicate + '\u1eb8': "Edotbelow", + '\u0424': "Efcyrillic", + '\u00c8': "Egrave", + '\uf7e8': "Egravesmall", + '\u0537': "Eharmenian", + '\u1eba': "Ehookabove", + '\u2167': "Eightroman", + '\u0206': "Einvertedbreve", + '\u0464': "Eiotifiedcyrillic", + '\u041b': "Elcyrillic", + '\u216a': "Elevenroman", + '\u0112': "Emacron", + '\u1e16': "Emacronacute", + '\u1e14': "Emacrongrave", + '\u041c': "Emcyrillic", + '\uff25': "Emonospace", + '\u041d': "Encyrillic", + '\u04a2': "Endescendercyrillic", + '\u014a': "Eng", + '\u04a4': "Enghecyrillic", + '\u04c7': "Enhookcyrillic", + '\u0118': "Eogonek", + '\u0190': "Eopen", + '\u0395': "Epsilon", + '\u0388': "Epsilontonos", + '\u0420': "Ercyrillic", + '\u018e': "Ereversed", + '\u042d': "Ereversedcyrillic", + '\u0421': "Escyrillic", + '\u04aa': "Esdescendercyrillic", + '\u01a9': "Esh", + '\uf765': "Esmall", + '\u0397': "Eta", + '\u0538': "Etarmenian", + '\u0389': "Etatonos", + '\u00d0': "Eth", + '\uf7f0': "Ethsmall", + '\u1ebc': "Etilde", + '\u1e1a': "Etildebelow", + '\u20ac': "Euro", + '\u01b7': "Ezh", + '\u01ee': "Ezhcaron", + '\u01b8': "Ezhreversed", + '\u0046': "F", + '\u24bb': "Fcircle", + '\u1e1e': "Fdotaccent", + '\u0556': "Feharmenian", + '\u03e4': "Feicoptic", + '\u0191': "Fhook", + '\u0472': "Fitacyrillic", + '\u2164': "Fiveroman", + '\uff26': "Fmonospace", + '\u2163': "Fourroman", + '\uf766': "Fsmall", + '\u0047': "G", + '\u3387': "GBsquare", + '\u01f4': "Gacute", + '\u0393': "Gamma", + '\u0194': "Gammaafrican", + '\u03ea': "Gangiacoptic", + '\u011e': "Gbreve", + '\u01e6': "Gcaron", + '\u0122': "Gcedilla", + '\u24bc': "Gcircle", + '\u011c': "Gcircumflex", + // '\u0122': "Gcommaaccent", // duplicate + '\u0120': "Gdot", + // '\u0120': "Gdotaccent", // duplicate + '\u0413': "Gecyrillic", + '\u0542': "Ghadarmenian", + '\u0494': "Ghemiddlehookcyrillic", + '\u0492': "Ghestrokecyrillic", + '\u0490': "Gheupturncyrillic", + '\u0193': "Ghook", + '\u0533': "Gimarmenian", + '\u0403': "Gjecyrillic", + '\u1e20': "Gmacron", + '\uff27': "Gmonospace", + '\uf6ce': "Grave", + '\uf760': "Gravesmall", + '\uf767': "Gsmall", + '\u029b': "Gsmallhook", + '\u01e4': "Gstroke", + '\u0048': "H", + '\u25cf': "H18533", + '\u25aa': "H18543", + '\u25ab': "H18551", + '\u25a1': "H22073", + '\u33cb': "HPsquare", + '\u04a8': "Haabkhasiancyrillic", + '\u04b2': "Hadescendercyrillic", + '\u042a': "Hardsigncyrillic", + '\u0126': "Hbar", + '\u1e2a': "Hbrevebelow", + '\u1e28': "Hcedilla", + '\u24bd': "Hcircle", + '\u0124': "Hcircumflex", + '\u1e26': "Hdieresis", + '\u1e22': "Hdotaccent", + '\u1e24': "Hdotbelow", + '\uff28': "Hmonospace", + '\u0540': "Hoarmenian", + '\u03e8': "Horicoptic", + '\uf768': "Hsmall", + '\uf6cf': "Hungarumlaut", + '\uf6f8': "Hungarumlautsmall", + '\u3390': "Hzsquare", + '\u0049': "I", + '\u042f': "IAcyrillic", + '\u0132': "IJ", + '\u042e': "IUcyrillic", + '\u00cd': "Iacute", + '\uf7ed': "Iacutesmall", + '\u012c': "Ibreve", + '\u01cf': "Icaron", + '\u24be': "Icircle", + '\u00ce': "Icircumflex", + '\uf7ee': "Icircumflexsmall", + '\u0406': "Icyrillic", + '\u0208': "Idblgrave", + '\u00cf': "Idieresis", + '\u1e2e': "Idieresisacute", + '\u04e4': "Idieresiscyrillic", + '\uf7ef': "Idieresissmall", + '\u0130': "Idot", + // '\u0130': "Idotaccent", // duplicate + '\u1eca': "Idotbelow", + '\u04d6': "Iebrevecyrillic", + '\u0415': "Iecyrillic", + '\u2111': "Ifraktur", + '\u00cc': "Igrave", + '\uf7ec': "Igravesmall", + '\u1ec8': "Ihookabove", + '\u0418': "Iicyrillic", + '\u020a': "Iinvertedbreve", + '\u0419': "Iishortcyrillic", + '\u012a': "Imacron", + '\u04e2': "Imacroncyrillic", + '\uff29': "Imonospace", + '\u053b': "Iniarmenian", + '\u0401': "Iocyrillic", + '\u012e': "Iogonek", + '\u0399': "Iota", + '\u0196': "Iotaafrican", + '\u03aa': "Iotadieresis", + '\u038a': "Iotatonos", + '\uf769': "Ismall", + '\u0197': "Istroke", + '\u0128': "Itilde", + '\u1e2c': "Itildebelow", + '\u0474': "Izhitsacyrillic", + '\u0476': "Izhitsadblgravecyrillic", + '\u004a': "J", + '\u0541': "Jaarmenian", + '\u24bf': "Jcircle", + '\u0134': "Jcircumflex", + '\u0408': "Jecyrillic", + '\u054b': "Jheharmenian", + '\uff2a': "Jmonospace", + '\uf76a': "Jsmall", + '\u004b': "K", + '\u3385': "KBsquare", + '\u33cd': "KKsquare", + '\u04a0': "Kabashkircyrillic", + '\u1e30': "Kacute", + '\u041a': "Kacyrillic", + '\u049a': "Kadescendercyrillic", + '\u04c3': "Kahookcyrillic", + '\u039a': "Kappa", + '\u049e': "Kastrokecyrillic", + '\u049c': "Kaverticalstrokecyrillic", + '\u01e8': "Kcaron", + '\u0136': "Kcedilla", + '\u24c0': "Kcircle", + // '\u0136': "Kcommaaccent", // duplicate + '\u1e32': "Kdotbelow", + '\u0554': "Keharmenian", + '\u053f': "Kenarmenian", + '\u0425': "Khacyrillic", + '\u03e6': "Kheicoptic", + '\u0198': "Khook", + '\u040c': "Kjecyrillic", + '\u1e34': "Klinebelow", + '\uff2b': "Kmonospace", + '\u0480': "Koppacyrillic", + '\u03de': "Koppagreek", + '\u046e': "Ksicyrillic", + '\uf76b': "Ksmall", + '\u004c': "L", + '\u01c7': "LJ", + '\uf6bf': "LL", + '\u0139': "Lacute", + '\u039b': "Lambda", + '\u013d': "Lcaron", + '\u013b': "Lcedilla", + '\u24c1': "Lcircle", + '\u1e3c': "Lcircumflexbelow", + // '\u013b': "Lcommaaccent", // duplicate + '\u013f': "Ldot", + // '\u013f': "Ldotaccent", // duplicate + '\u1e36': "Ldotbelow", + '\u1e38': "Ldotbelowmacron", + '\u053c': "Liwnarmenian", + '\u01c8': "Lj", + '\u0409': "Ljecyrillic", + '\u1e3a': "Llinebelow", + '\uff2c': "Lmonospace", + '\u0141': "Lslash", + '\uf6f9': "Lslashsmall", + '\uf76c': "Lsmall", + '\u004d': "M", + '\u3386': "MBsquare", + '\uf6d0': "Macron", + '\uf7af': "Macronsmall", + '\u1e3e': "Macute", + '\u24c2': "Mcircle", + '\u1e40': "Mdotaccent", + '\u1e42': "Mdotbelow", + '\u0544': "Menarmenian", + '\uff2d': "Mmonospace", + '\uf76d': "Msmall", + '\u019c': "Mturned", + '\u039c': "Mu", + '\u004e': "N", + '\u01ca': "NJ", + '\u0143': "Nacute", + '\u0147': "Ncaron", + '\u0145': "Ncedilla", + '\u24c3': "Ncircle", + '\u1e4a': "Ncircumflexbelow", + // '\u0145': "Ncommaaccent", // duplicate + '\u1e44': "Ndotaccent", + '\u1e46': "Ndotbelow", + '\u019d': "Nhookleft", + '\u2168': "Nineroman", + '\u01cb': "Nj", + '\u040a': "Njecyrillic", + '\u1e48': "Nlinebelow", + '\uff2e': "Nmonospace", + '\u0546': "Nowarmenian", + '\uf76e': "Nsmall", + '\u00d1': "Ntilde", + '\uf7f1': "Ntildesmall", + '\u039d': "Nu", + '\u004f': "O", + '\u0152': "OE", + '\uf6fa': "OEsmall", + '\u00d3': "Oacute", + '\uf7f3': "Oacutesmall", + '\u04e8': "Obarredcyrillic", + '\u04ea': "Obarreddieresiscyrillic", + '\u014e': "Obreve", + '\u01d1': "Ocaron", + '\u019f': "Ocenteredtilde", + '\u24c4': "Ocircle", + '\u00d4': "Ocircumflex", + '\u1ed0': "Ocircumflexacute", + '\u1ed8': "Ocircumflexdotbelow", + '\u1ed2': "Ocircumflexgrave", + '\u1ed4': "Ocircumflexhookabove", + '\uf7f4': "Ocircumflexsmall", + '\u1ed6': "Ocircumflextilde", + '\u041e': "Ocyrillic", + '\u0150': "Odblacute", + '\u020c': "Odblgrave", + '\u00d6': "Odieresis", + '\u04e6': "Odieresiscyrillic", + '\uf7f6': "Odieresissmall", + '\u1ecc': "Odotbelow", + '\uf6fb': "Ogoneksmall", + '\u00d2': "Ograve", + '\uf7f2': "Ogravesmall", + '\u0555': "Oharmenian", + '\u2126': "Ohm", + '\u1ece': "Ohookabove", + '\u01a0': "Ohorn", + '\u1eda': "Ohornacute", + '\u1ee2': "Ohorndotbelow", + '\u1edc': "Ohorngrave", + '\u1ede': "Ohornhookabove", + '\u1ee0': "Ohorntilde", + // '\u0150': "Ohungarumlaut", // duplicate + '\u01a2': "Oi", + '\u020e': "Oinvertedbreve", + '\u014c': "Omacron", + '\u1e52': "Omacronacute", + '\u1e50': "Omacrongrave", + // '\u2126': "Omega", // duplicate + '\u0460': "Omegacyrillic", + '\u03a9': "Omegagreek", + '\u047a': "Omegaroundcyrillic", + '\u047c': "Omegatitlocyrillic", + '\u038f': "Omegatonos", + '\u039f': "Omicron", + '\u038c': "Omicrontonos", + '\uff2f': "Omonospace", + '\u2160': "Oneroman", + '\u01ea': "Oogonek", + '\u01ec': "Oogonekmacron", + '\u0186': "Oopen", + '\u00d8': "Oslash", + '\u01fe': "Oslashacute", + '\uf7f8': "Oslashsmall", + '\uf76f': "Osmall", + // '\u01fe': "Ostrokeacute", // duplicate + '\u047e': "Otcyrillic", + '\u00d5': "Otilde", + '\u1e4c': "Otildeacute", + '\u1e4e': "Otildedieresis", + '\uf7f5': "Otildesmall", + '\u0050': "P", + '\u1e54': "Pacute", + '\u24c5': "Pcircle", + '\u1e56': "Pdotaccent", + '\u041f': "Pecyrillic", + '\u054a': "Peharmenian", + '\u04a6': "Pemiddlehookcyrillic", + '\u03a6': "Phi", + '\u01a4': "Phook", + '\u03a0': "Pi", + '\u0553': "Piwrarmenian", + '\uff30': "Pmonospace", + '\u03a8': "Psi", + '\u0470': "Psicyrillic", + '\uf770': "Psmall", + '\u0051': "Q", + '\u24c6': "Qcircle", + '\uff31': "Qmonospace", + '\uf771': "Qsmall", + '\u0052': "R", + '\u054c': "Raarmenian", + '\u0154': "Racute", + '\u0158': "Rcaron", + '\u0156': "Rcedilla", + '\u24c7': "Rcircle", + // '\u0156': "Rcommaaccent", // duplicate + '\u0210': "Rdblgrave", + '\u1e58': "Rdotaccent", + '\u1e5a': "Rdotbelow", + '\u1e5c': "Rdotbelowmacron", + '\u0550': "Reharmenian", + '\u211c': "Rfraktur", + '\u03a1': "Rho", + '\uf6fc': "Ringsmall", + '\u0212': "Rinvertedbreve", + '\u1e5e': "Rlinebelow", + '\uff32': "Rmonospace", + '\uf772': "Rsmall", + '\u0281': "Rsmallinverted", + '\u02b6': "Rsmallinvertedsuperior", + '\u0053': "S", + '\u250c': "SF010000", + '\u2514': "SF020000", + '\u2510': "SF030000", + '\u2518': "SF040000", + '\u253c': "SF050000", + '\u252c': "SF060000", + '\u2534': "SF070000", + '\u251c': "SF080000", + '\u2524': "SF090000", + '\u2500': "SF100000", + '\u2502': "SF110000", + '\u2561': "SF190000", + '\u2562': "SF200000", + '\u2556': "SF210000", + '\u2555': "SF220000", + '\u2563': "SF230000", + '\u2551': "SF240000", + '\u2557': "SF250000", + '\u255d': "SF260000", + '\u255c': "SF270000", + '\u255b': "SF280000", + '\u255e': "SF360000", + '\u255f': "SF370000", + '\u255a': "SF380000", + '\u2554': "SF390000", + '\u2569': "SF400000", + '\u2566': "SF410000", + '\u2560': "SF420000", + '\u2550': "SF430000", + '\u256c': "SF440000", + '\u2567': "SF450000", + '\u2568': "SF460000", + '\u2564': "SF470000", + '\u2565': "SF480000", + '\u2559': "SF490000", + '\u2558': "SF500000", + '\u2552': "SF510000", + '\u2553': "SF520000", + '\u256b': "SF530000", + '\u256a': "SF540000", + '\u015a': "Sacute", + '\u1e64': "Sacutedotaccent", + '\u03e0': "Sampigreek", + '\u0160': "Scaron", + '\u1e66': "Scarondotaccent", + '\uf6fd': "Scaronsmall", + '\u015e': "Scedilla", + '\u018f': "Schwa", + '\u04d8': "Schwacyrillic", + '\u04da': "Schwadieresiscyrillic", + '\u24c8': "Scircle", + '\u015c': "Scircumflex", + '\u0218': "Scommaaccent", + '\u1e60': "Sdotaccent", + '\u1e62': "Sdotbelow", + '\u1e68': "Sdotbelowdotaccent", + '\u054d': "Seharmenian", + '\u2166': "Sevenroman", + '\u0547': "Shaarmenian", + '\u0428': "Shacyrillic", + '\u0429': "Shchacyrillic", + '\u03e2': "Sheicoptic", + '\u04ba': "Shhacyrillic", + '\u03ec': "Shimacoptic", + '\u03a3': "Sigma", + '\u2165': "Sixroman", + '\uff33': "Smonospace", + '\u042c': "Softsigncyrillic", + '\uf773': "Ssmall", + '\u03da': "Stigmagreek", + '\u0054': "T", + '\u03a4': "Tau", + '\u0166': "Tbar", + '\u0164': "Tcaron", + '\u0162': "Tcedilla", + '\u24c9': "Tcircle", + '\u1e70': "Tcircumflexbelow", + // '\u0162': "Tcommaaccent", // duplicate + '\u1e6a': "Tdotaccent", + '\u1e6c': "Tdotbelow", + '\u0422': "Tecyrillic", + '\u04ac': "Tedescendercyrillic", + '\u2169': "Tenroman", + '\u04b4': "Tetsecyrillic", + '\u0398': "Theta", + '\u01ac': "Thook", + '\u00de': "Thorn", + '\uf7fe': "Thornsmall", + '\u2162': "Threeroman", + '\uf6fe': "Tildesmall", + '\u054f': "Tiwnarmenian", + '\u1e6e': "Tlinebelow", + '\uff34': "Tmonospace", + '\u0539': "Toarmenian", + '\u01bc': "Tonefive", + '\u0184': "Tonesix", + '\u01a7': "Tonetwo", + '\u01ae': "Tretroflexhook", + '\u0426': "Tsecyrillic", + '\u040b': "Tshecyrillic", + '\uf774': "Tsmall", + '\u216b': "Twelveroman", + '\u2161': "Tworoman", + '\u0055': "U", + '\u00da': "Uacute", + '\uf7fa': "Uacutesmall", + '\u016c': "Ubreve", + '\u01d3': "Ucaron", + '\u24ca': "Ucircle", + '\u00db': "Ucircumflex", + '\u1e76': "Ucircumflexbelow", + '\uf7fb': "Ucircumflexsmall", + '\u0423': "Ucyrillic", + '\u0170': "Udblacute", + '\u0214': "Udblgrave", + '\u00dc': "Udieresis", + '\u01d7': "Udieresisacute", + '\u1e72': "Udieresisbelow", + '\u01d9': "Udieresiscaron", + '\u04f0': "Udieresiscyrillic", + '\u01db': "Udieresisgrave", + '\u01d5': "Udieresismacron", + '\uf7fc': "Udieresissmall", + '\u1ee4': "Udotbelow", + '\u00d9': "Ugrave", + '\uf7f9': "Ugravesmall", + '\u1ee6': "Uhookabove", + '\u01af': "Uhorn", + '\u1ee8': "Uhornacute", + '\u1ef0': "Uhorndotbelow", + '\u1eea': "Uhorngrave", + '\u1eec': "Uhornhookabove", + '\u1eee': "Uhorntilde", + // '\u0170': "Uhungarumlaut", // duplicate + '\u04f2': "Uhungarumlautcyrillic", + '\u0216': "Uinvertedbreve", + '\u0478': "Ukcyrillic", + '\u016a': "Umacron", + '\u04ee': "Umacroncyrillic", + '\u1e7a': "Umacrondieresis", + '\uff35': "Umonospace", + '\u0172': "Uogonek", + '\u03a5': "Upsilon", + '\u03d2': "Upsilon1", + '\u03d3': "Upsilonacutehooksymbolgreek", + '\u01b1': "Upsilonafrican", + '\u03ab': "Upsilondieresis", + '\u03d4': "Upsilondieresishooksymbolgreek", + // '\u03d2': "Upsilonhooksymbol", // duplicate + '\u038e': "Upsilontonos", + '\u016e': "Uring", + '\u040e': "Ushortcyrillic", + '\uf775': "Usmall", + '\u04ae': "Ustraightcyrillic", + '\u04b0': "Ustraightstrokecyrillic", + '\u0168': "Utilde", + '\u1e78': "Utildeacute", + '\u1e74': "Utildebelow", + '\u0056': "V", + '\u24cb': "Vcircle", + '\u1e7e': "Vdotbelow", + '\u0412': "Vecyrillic", + '\u054e': "Vewarmenian", + '\u01b2': "Vhook", + '\uff36': "Vmonospace", + '\u0548': "Voarmenian", + '\uf776': "Vsmall", + '\u1e7c': "Vtilde", + '\u0057': "W", + '\u1e82': "Wacute", + '\u24cc': "Wcircle", + '\u0174': "Wcircumflex", + '\u1e84': "Wdieresis", + '\u1e86': "Wdotaccent", + '\u1e88': "Wdotbelow", + '\u1e80': "Wgrave", + '\uff37': "Wmonospace", + '\uf777': "Wsmall", + '\u0058': "X", + '\u24cd': "Xcircle", + '\u1e8c': "Xdieresis", + '\u1e8a': "Xdotaccent", + '\u053d': "Xeharmenian", + '\u039e': "Xi", + '\uff38': "Xmonospace", + '\uf778': "Xsmall", + '\u0059': "Y", + '\u00dd': "Yacute", + '\uf7fd': "Yacutesmall", + '\u0462': "Yatcyrillic", + '\u24ce': "Ycircle", + '\u0176': "Ycircumflex", + '\u0178': "Ydieresis", + '\uf7ff': "Ydieresissmall", + '\u1e8e': "Ydotaccent", + '\u1ef4': "Ydotbelow", + '\u042b': "Yericyrillic", + '\u04f8': "Yerudieresiscyrillic", + '\u1ef2': "Ygrave", + '\u01b3': "Yhook", + '\u1ef6': "Yhookabove", + '\u0545': "Yiarmenian", + '\u0407': "Yicyrillic", + '\u0552': "Yiwnarmenian", + '\uff39': "Ymonospace", + '\uf779': "Ysmall", + '\u1ef8': "Ytilde", + '\u046a': "Yusbigcyrillic", + '\u046c': "Yusbigiotifiedcyrillic", + '\u0466': "Yuslittlecyrillic", + '\u0468': "Yuslittleiotifiedcyrillic", + '\u005a': "Z", + '\u0536': "Zaarmenian", + '\u0179': "Zacute", + '\u017d': "Zcaron", + '\uf6ff': "Zcaronsmall", + '\u24cf': "Zcircle", + '\u1e90': "Zcircumflex", + '\u017b': "Zdot", + // '\u017b': "Zdotaccent", // duplicate + '\u1e92': "Zdotbelow", + '\u0417': "Zecyrillic", + '\u0498': "Zedescendercyrillic", + '\u04de': "Zedieresiscyrillic", + '\u0396': "Zeta", + '\u053a': "Zhearmenian", + '\u04c1': "Zhebrevecyrillic", + '\u0416': "Zhecyrillic", + '\u0496': "Zhedescendercyrillic", + '\u04dc': "Zhedieresiscyrillic", + '\u1e94': "Zlinebelow", + '\uff3a': "Zmonospace", + '\uf77a': "Zsmall", + '\u01b5': "Zstroke", + '\u0061': "a", + '\u0986': "aabengali", + '\u00e1': "aacute", + '\u0906': "aadeva", + '\u0a86': "aagujarati", + '\u0a06': "aagurmukhi", + '\u0a3e': "aamatragurmukhi", + '\u3303': "aarusquare", + '\u09be': "aavowelsignbengali", + '\u093e': "aavowelsigndeva", + '\u0abe': "aavowelsigngujarati", + '\u055f': "abbreviationmarkarmenian", + '\u0970': "abbreviationsigndeva", + '\u0985': "abengali", + '\u311a': "abopomofo", + '\u0103': "abreve", + '\u1eaf': "abreveacute", + '\u04d1': "abrevecyrillic", + '\u1eb7': "abrevedotbelow", + '\u1eb1': "abrevegrave", + '\u1eb3': "abrevehookabove", + '\u1eb5': "abrevetilde", + '\u01ce': "acaron", + '\u24d0': "acircle", + '\u00e2': "acircumflex", + '\u1ea5': "acircumflexacute", + '\u1ead': "acircumflexdotbelow", + '\u1ea7': "acircumflexgrave", + '\u1ea9': "acircumflexhookabove", + '\u1eab': "acircumflextilde", + '\u00b4': "acute", + '\u0317': "acutebelowcmb", + '\u0301': "acutecmb", + // '\u0301': "acutecomb", // duplicate + '\u0954': "acutedeva", + '\u02cf': "acutelowmod", + '\u0341': "acutetonecmb", + '\u0430': "acyrillic", + '\u0201': "adblgrave", + '\u0a71': "addakgurmukhi", + '\u0905': "adeva", + '\u00e4': "adieresis", + '\u04d3': "adieresiscyrillic", + '\u01df': "adieresismacron", + '\u1ea1': "adotbelow", + '\u01e1': "adotmacron", + '\u00e6': "ae", + '\u01fd': "aeacute", + '\u3150': "aekorean", + '\u01e3': "aemacron", + '\u2015': "afii00208", + '\u20a4': "afii08941", + // '\u0410': "afii10017", // duplicate + // '\u0411': "afii10018", // duplicate + // '\u0412': "afii10019", // duplicate + // '\u0413': "afii10020", // duplicate + // '\u0414': "afii10021", // duplicate + // '\u0415': "afii10022", // duplicate + // '\u0401': "afii10023", // duplicate + // '\u0416': "afii10024", // duplicate + // '\u0417': "afii10025", // duplicate + // '\u0418': "afii10026", // duplicate + // '\u0419': "afii10027", // duplicate + // '\u041a': "afii10028", // duplicate + // '\u041b': "afii10029", // duplicate + // '\u041c': "afii10030", // duplicate + // '\u041d': "afii10031", // duplicate + // '\u041e': "afii10032", // duplicate + // '\u041f': "afii10033", // duplicate + // '\u0420': "afii10034", // duplicate + // '\u0421': "afii10035", // duplicate + // '\u0422': "afii10036", // duplicate + // '\u0423': "afii10037", // duplicate + // '\u0424': "afii10038", // duplicate + // '\u0425': "afii10039", // duplicate + // '\u0426': "afii10040", // duplicate + // '\u0427': "afii10041", // duplicate + // '\u0428': "afii10042", // duplicate + // '\u0429': "afii10043", // duplicate + // '\u042a': "afii10044", // duplicate + // '\u042b': "afii10045", // duplicate + // '\u042c': "afii10046", // duplicate + // '\u042d': "afii10047", // duplicate + // '\u042e': "afii10048", // duplicate + // '\u042f': "afii10049", // duplicate + // '\u0490': "afii10050", // duplicate + // '\u0402': "afii10051", // duplicate + // '\u0403': "afii10052", // duplicate + // '\u0404': "afii10053", // duplicate + // '\u0405': "afii10054", // duplicate + // '\u0406': "afii10055", // duplicate + // '\u0407': "afii10056", // duplicate + // '\u0408': "afii10057", // duplicate + // '\u0409': "afii10058", // duplicate + // '\u040a': "afii10059", // duplicate + // '\u040b': "afii10060", // duplicate + // '\u040c': "afii10061", // duplicate + // '\u040e': "afii10062", // duplicate + '\uf6c4': "afii10063", + '\uf6c5': "afii10064", + // '\u0430': "afii10065", // duplicate + '\u0431': "afii10066", + '\u0432': "afii10067", + '\u0433': "afii10068", + '\u0434': "afii10069", + '\u0435': "afii10070", + '\u0451': "afii10071", + '\u0436': "afii10072", + '\u0437': "afii10073", + '\u0438': "afii10074", + '\u0439': "afii10075", + '\u043a': "afii10076", + '\u043b': "afii10077", + '\u043c': "afii10078", + '\u043d': "afii10079", + '\u043e': "afii10080", + '\u043f': "afii10081", + '\u0440': "afii10082", + '\u0441': "afii10083", + '\u0442': "afii10084", + '\u0443': "afii10085", + '\u0444': "afii10086", + '\u0445': "afii10087", + '\u0446': "afii10088", + '\u0447': "afii10089", + '\u0448': "afii10090", + '\u0449': "afii10091", + '\u044a': "afii10092", + '\u044b': "afii10093", + '\u044c': "afii10094", + '\u044d': "afii10095", + '\u044e': "afii10096", + '\u044f': "afii10097", + '\u0491': "afii10098", + '\u0452': "afii10099", + '\u0453': "afii10100", + '\u0454': "afii10101", + '\u0455': "afii10102", + '\u0456': "afii10103", + '\u0457': "afii10104", + '\u0458': "afii10105", + '\u0459': "afii10106", + '\u045a': "afii10107", + '\u045b': "afii10108", + '\u045c': "afii10109", + '\u045e': "afii10110", + // '\u040f': "afii10145", // duplicate + // '\u0462': "afii10146", // duplicate + // '\u0472': "afii10147", // duplicate + // '\u0474': "afii10148", // duplicate + '\uf6c6': "afii10192", + '\u045f': "afii10193", + '\u0463': "afii10194", + '\u0473': "afii10195", + '\u0475': "afii10196", + '\uf6c7': "afii10831", + '\uf6c8': "afii10832", + '\u04d9': "afii10846", + '\u200e': "afii299", + '\u200f': "afii300", + '\u200d': "afii301", + '\u066a': "afii57381", + '\u060c': "afii57388", + '\u0660': "afii57392", + '\u0661': "afii57393", + '\u0662': "afii57394", + '\u0663': "afii57395", + '\u0664': "afii57396", + '\u0665': "afii57397", + '\u0666': "afii57398", + '\u0667': "afii57399", + '\u0668': "afii57400", + '\u0669': "afii57401", + '\u061b': "afii57403", + '\u061f': "afii57407", + '\u0621': "afii57409", + '\u0622': "afii57410", + '\u0623': "afii57411", + '\u0624': "afii57412", + '\u0625': "afii57413", + '\u0626': "afii57414", + '\u0627': "afii57415", + '\u0628': "afii57416", + '\u0629': "afii57417", + '\u062a': "afii57418", + '\u062b': "afii57419", + '\u062c': "afii57420", + '\u062d': "afii57421", + '\u062e': "afii57422", + '\u062f': "afii57423", + '\u0630': "afii57424", + '\u0631': "afii57425", + '\u0632': "afii57426", + '\u0633': "afii57427", + '\u0634': "afii57428", + '\u0635': "afii57429", + '\u0636': "afii57430", + '\u0637': "afii57431", + '\u0638': "afii57432", + '\u0639': "afii57433", + '\u063a': "afii57434", + '\u0640': "afii57440", + '\u0641': "afii57441", + '\u0642': "afii57442", + '\u0643': "afii57443", + '\u0644': "afii57444", + '\u0645': "afii57445", + '\u0646': "afii57446", + '\u0648': "afii57448", + '\u0649': "afii57449", + '\u064a': "afii57450", + '\u064b': "afii57451", + '\u064c': "afii57452", + '\u064d': "afii57453", + '\u064e': "afii57454", + '\u064f': "afii57455", + '\u0650': "afii57456", + '\u0651': "afii57457", + '\u0652': "afii57458", + '\u0647': "afii57470", + '\u06a4': "afii57505", + '\u067e': "afii57506", + '\u0686': "afii57507", + '\u0698': "afii57508", + '\u06af': "afii57509", + '\u0679': "afii57511", + '\u0688': "afii57512", + '\u0691': "afii57513", + '\u06ba': "afii57514", + '\u06d2': "afii57519", + '\u06d5': "afii57534", + '\u20aa': "afii57636", + '\u05be': "afii57645", + '\u05c3': "afii57658", + '\u05d0': "afii57664", + '\u05d1': "afii57665", + '\u05d2': "afii57666", + '\u05d3': "afii57667", + '\u05d4': "afii57668", + '\u05d5': "afii57669", + '\u05d6': "afii57670", + '\u05d7': "afii57671", + '\u05d8': "afii57672", + '\u05d9': "afii57673", + '\u05da': "afii57674", + '\u05db': "afii57675", + '\u05dc': "afii57676", + '\u05dd': "afii57677", + '\u05de': "afii57678", + '\u05df': "afii57679", + '\u05e0': "afii57680", + '\u05e1': "afii57681", + '\u05e2': "afii57682", + '\u05e3': "afii57683", + '\u05e4': "afii57684", + '\u05e5': "afii57685", + '\u05e6': "afii57686", + '\u05e7': "afii57687", + '\u05e8': "afii57688", + '\u05e9': "afii57689", + '\u05ea': "afii57690", + '\ufb2a': "afii57694", + '\ufb2b': "afii57695", + '\ufb4b': "afii57700", + '\ufb1f': "afii57705", + '\u05f0': "afii57716", + '\u05f1': "afii57717", + '\u05f2': "afii57718", + '\ufb35': "afii57723", + '\u05b4': "afii57793", + '\u05b5': "afii57794", + '\u05b6': "afii57795", + '\u05bb': "afii57796", + '\u05b8': "afii57797", + '\u05b7': "afii57798", + '\u05b0': "afii57799", + '\u05b2': "afii57800", + '\u05b1': "afii57801", + '\u05b3': "afii57802", + '\u05c2': "afii57803", + '\u05c1': "afii57804", + '\u05b9': "afii57806", + '\u05bc': "afii57807", + '\u05bd': "afii57839", + '\u05bf': "afii57841", + '\u05c0': "afii57842", + '\u02bc': "afii57929", + '\u2105': "afii61248", + '\u2113': "afii61289", + '\u2116': "afii61352", + '\u202c': "afii61573", + '\u202d': "afii61574", + '\u202e': "afii61575", + '\u200c': "afii61664", + '\u066d': "afii63167", + '\u02bd': "afii64937", + '\u00e0': "agrave", + '\u0a85': "agujarati", + '\u0a05': "agurmukhi", + '\u3042': "ahiragana", + '\u1ea3': "ahookabove", + '\u0990': "aibengali", + '\u311e': "aibopomofo", + '\u0910': "aideva", + '\u04d5': "aiecyrillic", + '\u0a90': "aigujarati", + '\u0a10': "aigurmukhi", + '\u0a48': "aimatragurmukhi", + // '\u0639': "ainarabic", // duplicate + '\ufeca': "ainfinalarabic", + '\ufecb': "aininitialarabic", + '\ufecc': "ainmedialarabic", + '\u0203': "ainvertedbreve", + '\u09c8': "aivowelsignbengali", + '\u0948': "aivowelsigndeva", + '\u0ac8': "aivowelsigngujarati", + '\u30a2': "akatakana", + '\uff71': "akatakanahalfwidth", + '\u314f': "akorean", + // '\u05d0': "alef", // duplicate + // '\u0627': "alefarabic", // duplicate + '\ufb30': "alefdageshhebrew", + '\ufe8e': "aleffinalarabic", + // '\u0623': "alefhamzaabovearabic", // duplicate + '\ufe84': "alefhamzaabovefinalarabic", + // '\u0625': "alefhamzabelowarabic", // duplicate + '\ufe88': "alefhamzabelowfinalarabic", + // '\u05d0': "alefhebrew", // duplicate + '\ufb4f': "aleflamedhebrew", + // '\u0622': "alefmaddaabovearabic", // duplicate + '\ufe82': "alefmaddaabovefinalarabic", + // '\u0649': "alefmaksuraarabic", // duplicate + '\ufef0': "alefmaksurafinalarabic", + '\ufef3': "alefmaksurainitialarabic", + '\ufef4': "alefmaksuramedialarabic", + '\ufb2e': "alefpatahhebrew", + '\ufb2f': "alefqamatshebrew", + '\u2135': "aleph", + '\u224c': "allequal", + '\u03b1': "alpha", + '\u03ac': "alphatonos", + '\u0101': "amacron", + '\uff41': "amonospace", + '\u0026': "ampersand", + '\uff06': "ampersandmonospace", + '\uf726': "ampersandsmall", + '\u33c2': "amsquare", + '\u3122': "anbopomofo", + '\u3124': "angbopomofo", + '\u0e5a': "angkhankhuthai", + '\u2220': "angle", + '\u3008': "anglebracketleft", + '\ufe3f': "anglebracketleftvertical", + '\u3009': "anglebracketright", + '\ufe40': "anglebracketrightvertical", + '\u2329': "angleleft", + '\u232a': "angleright", + '\u212b': "angstrom", + '\u0387': "anoteleia", + '\u0952': "anudattadeva", + '\u0982': "anusvarabengali", + '\u0902': "anusvaradeva", + '\u0a82': "anusvaragujarati", + '\u0105': "aogonek", + '\u3300': "apaatosquare", + '\u249c': "aparen", + '\u055a': "apostrophearmenian", + // '\u02bc': "apostrophemod", // duplicate + '\uf8ff': "apple", + '\u2250': "approaches", + '\u2248': "approxequal", + '\u2252': "approxequalorimage", + '\u2245': "approximatelyequal", + '\u318e': "araeaekorean", + '\u318d': "araeakorean", + '\u2312': "arc", + '\u1e9a': "arighthalfring", + '\u00e5': "aring", + '\u01fb': "aringacute", + '\u1e01': "aringbelow", + '\u2194': "arrowboth", + '\u21e3': "arrowdashdown", + '\u21e0': "arrowdashleft", + '\u21e2': "arrowdashright", + '\u21e1': "arrowdashup", + '\u21d4': "arrowdblboth", + '\u21d3': "arrowdbldown", + '\u21d0': "arrowdblleft", + '\u21d2': "arrowdblright", + '\u21d1': "arrowdblup", + '\u2193': "arrowdown", + '\u2199': "arrowdownleft", + '\u2198': "arrowdownright", + '\u21e9': "arrowdownwhite", + '\u02c5': "arrowheaddownmod", + '\u02c2': "arrowheadleftmod", + '\u02c3': "arrowheadrightmod", + '\u02c4': "arrowheadupmod", + '\uf8e7': "arrowhorizex", + '\u2190': "arrowleft", + // '\u21d0': "arrowleftdbl", // duplicate + '\u21cd': "arrowleftdblstroke", + '\u21c6': "arrowleftoverright", + '\u21e6': "arrowleftwhite", + '\u2192': "arrowright", + '\u21cf': "arrowrightdblstroke", + '\u279e': "arrowrightheavy", + '\u21c4': "arrowrightoverleft", + '\u21e8': "arrowrightwhite", + '\u21e4': "arrowtableft", + '\u21e5': "arrowtabright", + '\u2191': "arrowup", + '\u2195': "arrowupdn", + '\u21a8': "arrowupdnbse", + // '\u21a8': "arrowupdownbase", // duplicate + '\u2196': "arrowupleft", + '\u21c5': "arrowupleftofdown", + '\u2197': "arrowupright", + '\u21e7': "arrowupwhite", + '\uf8e6': "arrowvertex", + '\u005e': "asciicircum", + '\uff3e': "asciicircummonospace", + '\u007e': "asciitilde", + '\uff5e': "asciitildemonospace", + '\u0251': "ascript", + '\u0252': "ascriptturned", + '\u3041': "asmallhiragana", + '\u30a1': "asmallkatakana", + '\uff67': "asmallkatakanahalfwidth", + '\u002a': "asterisk", + // '\u066d': "asteriskaltonearabic", // duplicate + // '\u066d': "asteriskarabic", // duplicate + '\u2217': "asteriskmath", + '\uff0a': "asteriskmonospace", + '\ufe61': "asterisksmall", + '\u2042': "asterism", + '\uf6e9': "asuperior", + '\u2243': "asymptoticallyequal", + '\u0040': "at", + '\u00e3': "atilde", + '\uff20': "atmonospace", + '\ufe6b': "atsmall", + '\u0250': "aturned", + '\u0994': "aubengali", + '\u3120': "aubopomofo", + '\u0914': "audeva", + '\u0a94': "augujarati", + '\u0a14': "augurmukhi", + '\u09d7': "aulengthmarkbengali", + '\u0a4c': "aumatragurmukhi", + '\u09cc': "auvowelsignbengali", + '\u094c': "auvowelsigndeva", + '\u0acc': "auvowelsigngujarati", + '\u093d': "avagrahadeva", + '\u0561': "aybarmenian", + // '\u05e2': "ayin", // duplicate + '\ufb20': "ayinaltonehebrew", + // '\u05e2': "ayinhebrew", // duplicate + '\u0062': "b", + '\u09ac': "babengali", + '\u005c': "backslash", + '\uff3c': "backslashmonospace", + '\u092c': "badeva", + '\u0aac': "bagujarati", + '\u0a2c': "bagurmukhi", + '\u3070': "bahiragana", + '\u0e3f': "bahtthai", + '\u30d0': "bakatakana", + '\u007c': "bar", + '\uff5c': "barmonospace", + '\u3105': "bbopomofo", + '\u24d1': "bcircle", + '\u1e03': "bdotaccent", + '\u1e05': "bdotbelow", + '\u266c': "beamedsixteenthnotes", + '\u2235': "because", + // '\u0431': "becyrillic", // duplicate + // '\u0628': "beharabic", // duplicate + '\ufe90': "behfinalarabic", + '\ufe91': "behinitialarabic", + '\u3079': "behiragana", + '\ufe92': "behmedialarabic", + '\ufc9f': "behmeeminitialarabic", + '\ufc08': "behmeemisolatedarabic", + '\ufc6d': "behnoonfinalarabic", + '\u30d9': "bekatakana", + '\u0562': "benarmenian", + // '\u05d1': "bet", // duplicate + '\u03b2': "beta", + '\u03d0': "betasymbolgreek", + '\ufb31': "betdagesh", + // '\ufb31': "betdageshhebrew", // duplicate + // '\u05d1': "bethebrew", // duplicate + '\ufb4c': "betrafehebrew", + '\u09ad': "bhabengali", + '\u092d': "bhadeva", + '\u0aad': "bhagujarati", + '\u0a2d': "bhagurmukhi", + '\u0253': "bhook", + '\u3073': "bihiragana", + '\u30d3': "bikatakana", + '\u0298': "bilabialclick", + '\u0a02': "bindigurmukhi", + '\u3331': "birusquare", + // '\u25cf': "blackcircle", // duplicate + '\u25c6': "blackdiamond", + '\u25bc': "blackdownpointingtriangle", + '\u25c4': "blackleftpointingpointer", + '\u25c0': "blackleftpointingtriangle", + '\u3010': "blacklenticularbracketleft", + '\ufe3b': "blacklenticularbracketleftvertical", + '\u3011': "blacklenticularbracketright", + '\ufe3c': "blacklenticularbracketrightvertical", + '\u25e3': "blacklowerlefttriangle", + '\u25e2': "blacklowerrighttriangle", + '\u25ac': "blackrectangle", + '\u25ba': "blackrightpointingpointer", + '\u25b6': "blackrightpointingtriangle", + // '\u25aa': "blacksmallsquare", // duplicate + '\u263b': "blacksmilingface", + '\u25a0': "blacksquare", + '\u2605': "blackstar", + '\u25e4': "blackupperlefttriangle", + '\u25e5': "blackupperrighttriangle", + '\u25b4': "blackuppointingsmalltriangle", + '\u25b2': "blackuppointingtriangle", + '\u2423': "blank", + '\u1e07': "blinebelow", + '\u2588': "block", + '\uff42': "bmonospace", + '\u0e1a': "bobaimaithai", + '\u307c': "bohiragana", + '\u30dc': "bokatakana", + '\u249d': "bparen", + '\u33c3': "bqsquare", + '\uf8f4': "braceex", + '\u007b': "braceleft", + '\uf8f3': "braceleftbt", + '\uf8f2': "braceleftmid", + '\uff5b': "braceleftmonospace", + '\ufe5b': "braceleftsmall", + '\uf8f1': "bracelefttp", + '\ufe37': "braceleftvertical", + '\u007d': "braceright", + '\uf8fe': "bracerightbt", + '\uf8fd': "bracerightmid", + '\uff5d': "bracerightmonospace", + '\ufe5c': "bracerightsmall", + '\uf8fc': "bracerighttp", + '\ufe38': "bracerightvertical", + '\u005b': "bracketleft", + '\uf8f0': "bracketleftbt", + '\uf8ef': "bracketleftex", + '\uff3b': "bracketleftmonospace", + '\uf8ee': "bracketlefttp", + '\u005d': "bracketright", + '\uf8fb': "bracketrightbt", + '\uf8fa': "bracketrightex", + '\uff3d': "bracketrightmonospace", + '\uf8f9': "bracketrighttp", + '\u02d8': "breve", + '\u032e': "brevebelowcmb", + '\u0306': "brevecmb", + '\u032f': "breveinvertedbelowcmb", + '\u0311': "breveinvertedcmb", + '\u0361': "breveinverteddoublecmb", + '\u032a': "bridgebelowcmb", + '\u033a': "bridgeinvertedbelowcmb", + '\u00a6': "brokenbar", + '\u0180': "bstroke", + '\uf6ea': "bsuperior", + '\u0183': "btopbar", + '\u3076': "buhiragana", + '\u30d6': "bukatakana", + '\u2022': "bullet", + '\u25d8': "bulletinverse", + '\u2219': "bulletoperator", + '\u25ce': "bullseye", + '\u0063': "c", + '\u056e': "caarmenian", + '\u099a': "cabengali", + '\u0107': "cacute", + '\u091a': "cadeva", + '\u0a9a': "cagujarati", + '\u0a1a': "cagurmukhi", + '\u3388': "calsquare", + '\u0981': "candrabindubengali", + '\u0310': "candrabinducmb", + '\u0901': "candrabindudeva", + '\u0a81': "candrabindugujarati", + '\u21ea': "capslock", + // '\u2105': "careof", // duplicate + '\u02c7': "caron", + '\u032c': "caronbelowcmb", + '\u030c': "caroncmb", + '\u21b5': "carriagereturn", + '\u3118': "cbopomofo", + '\u010d': "ccaron", + '\u00e7': "ccedilla", + '\u1e09': "ccedillaacute", + '\u24d2': "ccircle", + '\u0109': "ccircumflex", + '\u0255': "ccurl", + '\u010b': "cdot", + // '\u010b': "cdotaccent", // duplicate + '\u33c5': "cdsquare", + '\u00b8': "cedilla", + '\u0327': "cedillacmb", + '\u00a2': "cent", + '\u2103': "centigrade", + '\uf6df': "centinferior", + '\uffe0': "centmonospace", + '\uf7a2': "centoldstyle", + '\uf6e0': "centsuperior", + '\u0579': "chaarmenian", + '\u099b': "chabengali", + '\u091b': "chadeva", + '\u0a9b': "chagujarati", + '\u0a1b': "chagurmukhi", + '\u3114': "chbopomofo", + '\u04bd': "cheabkhasiancyrillic", + '\u2713': "checkmark", + // '\u0447': "checyrillic", // duplicate + '\u04bf': "chedescenderabkhasiancyrillic", + '\u04b7': "chedescendercyrillic", + '\u04f5': "chedieresiscyrillic", + '\u0573': "cheharmenian", + '\u04cc': "chekhakassiancyrillic", + '\u04b9': "cheverticalstrokecyrillic", + '\u03c7': "chi", + '\u3277': "chieuchacirclekorean", + '\u3217': "chieuchaparenkorean", + '\u3269': "chieuchcirclekorean", + '\u314a': "chieuchkorean", + '\u3209': "chieuchparenkorean", + '\u0e0a': "chochangthai", + '\u0e08': "chochanthai", + '\u0e09': "chochingthai", + '\u0e0c': "chochoethai", + '\u0188': "chook", + '\u3276': "cieucacirclekorean", + '\u3216': "cieucaparenkorean", + '\u3268': "cieuccirclekorean", + '\u3148': "cieuckorean", + '\u3208': "cieucparenkorean", + '\u321c': "cieucuparenkorean", + '\u25cb': "circle", + '\u2297': "circlemultiply", + '\u2299': "circleot", + '\u2295': "circleplus", + '\u3036': "circlepostalmark", + '\u25d0': "circlewithlefthalfblack", + '\u25d1': "circlewithrighthalfblack", + '\u02c6': "circumflex", + '\u032d': "circumflexbelowcmb", + '\u0302': "circumflexcmb", + '\u2327': "clear", + '\u01c2': "clickalveolar", + '\u01c0': "clickdental", + '\u01c1': "clicklateral", + '\u01c3': "clickretroflex", + '\u2663': "club", + // '\u2663': "clubsuitblack", // duplicate + '\u2667': "clubsuitwhite", + '\u33a4': "cmcubedsquare", + '\uff43': "cmonospace", + '\u33a0': "cmsquaredsquare", + '\u0581': "coarmenian", + '\u003a': "colon", + '\u20a1': "colonmonetary", + '\uff1a': "colonmonospace", + // '\u20a1': "colonsign", // duplicate + '\ufe55': "colonsmall", + '\u02d1': "colontriangularhalfmod", + '\u02d0': "colontriangularmod", + '\u002c': "comma", + '\u0313': "commaabovecmb", + '\u0315': "commaaboverightcmb", + '\uf6c3': "commaaccent", + // '\u060c': "commaarabic", // duplicate + '\u055d': "commaarmenian", + '\uf6e1': "commainferior", + '\uff0c': "commamonospace", + '\u0314': "commareversedabovecmb", + // '\u02bd': "commareversedmod", // duplicate + '\ufe50': "commasmall", + '\uf6e2': "commasuperior", + '\u0312': "commaturnedabovecmb", + '\u02bb': "commaturnedmod", + '\u263c': "compass", + // '\u2245': "congruent", // duplicate + '\u222e': "contourintegral", + '\u2303': "control", + '\u0006': "controlACK", + '\u0007': "controlBEL", + '\u0008': "controlBS", + '\u0018': "controlCAN", + '\u000d': "controlCR", + '\u0011': "controlDC1", + '\u0012': "controlDC2", + '\u0013': "controlDC3", + '\u0014': "controlDC4", + '\u007f': "controlDEL", + '\u0010': "controlDLE", + '\u0019': "controlEM", + '\u0005': "controlENQ", + '\u0004': "controlEOT", + '\u001b': "controlESC", + '\u0017': "controlETB", + '\u0003': "controlETX", + '\u000c': "controlFF", + '\u001c': "controlFS", + '\u001d': "controlGS", + '\u0009': "controlHT", + '\u000a': "controlLF", + '\u0015': "controlNAK", + '\u001e': "controlRS", + '\u000f': "controlSI", + '\u000e': "controlSO", + '\u0002': "controlSOT", + '\u0001': "controlSTX", + '\u001a': "controlSUB", + '\u0016': "controlSYN", + '\u001f': "controlUS", + '\u000b': "controlVT", + '\u00a9': "copyright", + '\uf8e9': "copyrightsans", + '\uf6d9': "copyrightserif", + '\u300c': "cornerbracketleft", + '\uff62': "cornerbracketlefthalfwidth", + '\ufe41': "cornerbracketleftvertical", + '\u300d': "cornerbracketright", + '\uff63': "cornerbracketrighthalfwidth", + '\ufe42': "cornerbracketrightvertical", + '\u337f': "corporationsquare", + '\u33c7': "cosquare", + '\u33c6': "coverkgsquare", + '\u249e': "cparen", + '\u20a2': "cruzeiro", + '\u0297': "cstretched", + '\u22cf': "curlyand", + '\u22ce': "curlyor", + '\u00a4': "currency", + '\uf6d1': "cyrBreve", + '\uf6d2': "cyrFlex", + '\uf6d4': "cyrbreve", + '\uf6d5': "cyrflex", + '\u0064': "d", + '\u0564': "daarmenian", + '\u09a6': "dabengali", + // '\u0636': "dadarabic", // duplicate + '\u0926': "dadeva", + '\ufebe': "dadfinalarabic", + '\ufebf': "dadinitialarabic", + '\ufec0': "dadmedialarabic", + // '\u05bc': "dagesh", // duplicate + // '\u05bc': "dageshhebrew", // duplicate + '\u2020': "dagger", + '\u2021': "daggerdbl", + '\u0aa6': "dagujarati", + '\u0a26': "dagurmukhi", + '\u3060': "dahiragana", + '\u30c0': "dakatakana", + // '\u062f': "dalarabic", // duplicate + // '\u05d3': "dalet", // duplicate + '\ufb33': "daletdagesh", + // '\ufb33': "daletdageshhebrew", // duplicate + // '\u05b2': "dalethatafpatah", // duplicate + // '\u05b2': "dalethatafpatahhebrew", // duplicate + // '\u05b1': "dalethatafsegol", // duplicate + // '\u05b1': "dalethatafsegolhebrew", // duplicate + // '\u05d3': "dalethebrew", // duplicate + // '\u05b4': "dalethiriq", // duplicate + // '\u05b4': "dalethiriqhebrew", // duplicate + // '\u05b9': "daletholam", // duplicate + // '\u05b9': "daletholamhebrew", // duplicate + // '\u05b7': "daletpatah", // duplicate + // '\u05b7': "daletpatahhebrew", // duplicate + // '\u05b8': "daletqamats", // duplicate + // '\u05b8': "daletqamatshebrew", // duplicate + // '\u05bb': "daletqubuts", // duplicate + // '\u05bb': "daletqubutshebrew", // duplicate + // '\u05b6': "daletsegol", // duplicate + // '\u05b6': "daletsegolhebrew", // duplicate + // '\u05b0': "daletsheva", // duplicate + // '\u05b0': "daletshevahebrew", // duplicate + // '\u05b5': "dalettsere", // duplicate + // '\u05b5': "dalettserehebrew", // duplicate + '\ufeaa': "dalfinalarabic", + // '\u064f': "dammaarabic", // duplicate + // '\u064f': "dammalowarabic", // duplicate + // '\u064c': "dammatanaltonearabic", // duplicate + // '\u064c': "dammatanarabic", // duplicate + '\u0964': "danda", + '\u05a7': "dargahebrew", + // '\u05a7': "dargalefthebrew", // duplicate + '\u0485': "dasiapneumatacyrilliccmb", + '\uf6d3': "dblGrave", + '\u300a': "dblanglebracketleft", + '\ufe3d': "dblanglebracketleftvertical", + '\u300b': "dblanglebracketright", + '\ufe3e': "dblanglebracketrightvertical", + '\u032b': "dblarchinvertedbelowcmb", + // '\u21d4': "dblarrowleft", // duplicate + // '\u21d2': "dblarrowright", // duplicate + '\u0965': "dbldanda", + '\uf6d6': "dblgrave", + '\u030f': "dblgravecmb", + '\u222c': "dblintegral", + '\u2017': "dbllowline", + '\u0333': "dbllowlinecmb", + '\u033f': "dbloverlinecmb", + '\u02ba': "dblprimemod", + '\u2016': "dblverticalbar", + '\u030e': "dblverticallineabovecmb", + '\u3109': "dbopomofo", + '\u33c8': "dbsquare", + '\u010f': "dcaron", + '\u1e11': "dcedilla", + '\u24d3': "dcircle", + '\u1e13': "dcircumflexbelow", + '\u0111': "dcroat", + '\u09a1': "ddabengali", + '\u0921': "ddadeva", + '\u0aa1': "ddagujarati", + '\u0a21': "ddagurmukhi", + // '\u0688': "ddalarabic", // duplicate + '\ufb89': "ddalfinalarabic", + '\u095c': "dddhadeva", + '\u09a2': "ddhabengali", + '\u0922': "ddhadeva", + '\u0aa2': "ddhagujarati", + '\u0a22': "ddhagurmukhi", + '\u1e0b': "ddotaccent", + '\u1e0d': "ddotbelow", + '\u066b': "decimalseparatorarabic", + // '\u066b': "decimalseparatorpersian", // duplicate + // '\u0434': "decyrillic", // duplicate + '\u00b0': "degree", + '\u05ad': "dehihebrew", + '\u3067': "dehiragana", + '\u03ef': "deicoptic", + '\u30c7': "dekatakana", + '\u232b': "deleteleft", + '\u2326': "deleteright", + '\u03b4': "delta", + '\u018d': "deltaturned", + '\u09f8': "denominatorminusonenumeratorbengali", + '\u02a4': "dezh", + '\u09a7': "dhabengali", + '\u0927': "dhadeva", + '\u0aa7': "dhagujarati", + '\u0a27': "dhagurmukhi", + '\u0257': "dhook", + '\u0385': "dialytikatonos", + '\u0344': "dialytikatonoscmb", + '\u2666': "diamond", + '\u2662': "diamondsuitwhite", + '\u00a8': "dieresis", + '\uf6d7': "dieresisacute", + '\u0324': "dieresisbelowcmb", + '\u0308': "dieresiscmb", + '\uf6d8': "dieresisgrave", + // '\u0385': "dieresistonos", // duplicate + '\u3062': "dihiragana", + '\u30c2': "dikatakana", + '\u3003': "dittomark", + '\u00f7': "divide", + '\u2223': "divides", + '\u2215': "divisionslash", + // '\u0452': "djecyrillic", // duplicate + '\u2593': "dkshade", + '\u1e0f': "dlinebelow", + '\u3397': "dlsquare", + // '\u0111': "dmacron", // duplicate + '\uff44': "dmonospace", + '\u2584': "dnblock", + '\u0e0e': "dochadathai", + '\u0e14': "dodekthai", + '\u3069': "dohiragana", + '\u30c9': "dokatakana", + '\u0024': "dollar", + '\uf6e3': "dollarinferior", + '\uff04': "dollarmonospace", + '\uf724': "dollaroldstyle", + '\ufe69': "dollarsmall", + '\uf6e4': "dollarsuperior", + '\u20ab': "dong", + '\u3326': "dorusquare", + '\u02d9': "dotaccent", + '\u0307': "dotaccentcmb", + '\u0323': "dotbelowcmb", + // '\u0323': "dotbelowcomb", // duplicate + '\u30fb': "dotkatakana", + '\u0131': "dotlessi", + '\uf6be': "dotlessj", + '\u0284': "dotlessjstrokehook", + '\u22c5': "dotmath", + '\u25cc': "dottedcircle", + // '\ufb1f': "doubleyodpatah", // duplicate + // '\ufb1f': "doubleyodpatahhebrew", // duplicate + '\u031e': "downtackbelowcmb", + '\u02d5': "downtackmod", + '\u249f': "dparen", + '\uf6eb': "dsuperior", + '\u0256': "dtail", + '\u018c': "dtopbar", + '\u3065': "duhiragana", + '\u30c5': "dukatakana", + '\u01f3': "dz", + '\u02a3': "dzaltone", + '\u01c6': "dzcaron", + '\u02a5': "dzcurl", + '\u04e1': "dzeabkhasiancyrillic", + // '\u0455': "dzecyrillic", // duplicate + // '\u045f': "dzhecyrillic", // duplicate + '\u0065': "e", + '\u00e9': "eacute", + '\u2641': "earth", + '\u098f': "ebengali", + '\u311c': "ebopomofo", + '\u0115': "ebreve", + '\u090d': "ecandradeva", + '\u0a8d': "ecandragujarati", + '\u0945': "ecandravowelsigndeva", + '\u0ac5': "ecandravowelsigngujarati", + '\u011b': "ecaron", + '\u1e1d': "ecedillabreve", + '\u0565': "echarmenian", + '\u0587': "echyiwnarmenian", + '\u24d4': "ecircle", + '\u00ea': "ecircumflex", + '\u1ebf': "ecircumflexacute", + '\u1e19': "ecircumflexbelow", + '\u1ec7': "ecircumflexdotbelow", + '\u1ec1': "ecircumflexgrave", + '\u1ec3': "ecircumflexhookabove", + '\u1ec5': "ecircumflextilde", + // '\u0454': "ecyrillic", // duplicate + '\u0205': "edblgrave", + '\u090f': "edeva", + '\u00eb': "edieresis", + '\u0117': "edot", + // '\u0117': "edotaccent", // duplicate + '\u1eb9': "edotbelow", + '\u0a0f': "eegurmukhi", + '\u0a47': "eematragurmukhi", + // '\u0444': "efcyrillic", // duplicate + '\u00e8': "egrave", + '\u0a8f': "egujarati", + '\u0567': "eharmenian", + '\u311d': "ehbopomofo", + '\u3048': "ehiragana", + '\u1ebb': "ehookabove", + '\u311f': "eibopomofo", + '\u0038': "eight", + // '\u0668': "eightarabic", // duplicate + '\u09ee': "eightbengali", + '\u2467': "eightcircle", + '\u2791': "eightcircleinversesansserif", + '\u096e': "eightdeva", + '\u2471': "eighteencircle", + '\u2485': "eighteenparen", + '\u2499': "eighteenperiod", + '\u0aee': "eightgujarati", + '\u0a6e': "eightgurmukhi", + // '\u0668': "eighthackarabic", // duplicate + '\u3028': "eighthangzhou", + '\u266b': "eighthnotebeamed", + '\u3227': "eightideographicparen", + '\u2088': "eightinferior", + '\uff18': "eightmonospace", + '\uf738': "eightoldstyle", + '\u247b': "eightparen", + '\u248f': "eightperiod", + '\u06f8': "eightpersian", + '\u2177': "eightroman", + '\u2078': "eightsuperior", + '\u0e58': "eightthai", + '\u0207': "einvertedbreve", + '\u0465': "eiotifiedcyrillic", + '\u30a8': "ekatakana", + '\uff74': "ekatakanahalfwidth", + '\u0a74': "ekonkargurmukhi", + '\u3154': "ekorean", + // '\u043b': "elcyrillic", // duplicate + '\u2208': "element", + '\u246a': "elevencircle", + '\u247e': "elevenparen", + '\u2492': "elevenperiod", + '\u217a': "elevenroman", + '\u2026': "ellipsis", + '\u22ee': "ellipsisvertical", + '\u0113': "emacron", + '\u1e17': "emacronacute", + '\u1e15': "emacrongrave", + // '\u043c': "emcyrillic", // duplicate + '\u2014': "emdash", + '\ufe31': "emdashvertical", + '\uff45': "emonospace", + '\u055b': "emphasismarkarmenian", + '\u2205': "emptyset", + '\u3123': "enbopomofo", + // '\u043d': "encyrillic", // duplicate + '\u2013': "endash", + '\ufe32': "endashvertical", + '\u04a3': "endescendercyrillic", + '\u014b': "eng", + '\u3125': "engbopomofo", + '\u04a5': "enghecyrillic", + '\u04c8': "enhookcyrillic", + '\u2002': "enspace", + '\u0119': "eogonek", + '\u3153': "eokorean", + '\u025b': "eopen", + '\u029a': "eopenclosed", + '\u025c': "eopenreversed", + '\u025e': "eopenreversedclosed", + '\u025d': "eopenreversedhook", + '\u24a0': "eparen", + '\u03b5': "epsilon", + '\u03ad': "epsilontonos", + '\u003d': "equal", + '\uff1d': "equalmonospace", + '\ufe66': "equalsmall", + '\u207c': "equalsuperior", + '\u2261': "equivalence", + '\u3126': "erbopomofo", + // '\u0440': "ercyrillic", // duplicate + '\u0258': "ereversed", + // '\u044d': "ereversedcyrillic", // duplicate + // '\u0441': "escyrillic", // duplicate + '\u04ab': "esdescendercyrillic", + '\u0283': "esh", + '\u0286': "eshcurl", + '\u090e': "eshortdeva", + '\u0946': "eshortvowelsigndeva", + '\u01aa': "eshreversedloop", + '\u0285': "eshsquatreversed", + '\u3047': "esmallhiragana", + '\u30a7': "esmallkatakana", + '\uff6a': "esmallkatakanahalfwidth", + '\u212e': "estimated", + '\uf6ec': "esuperior", + '\u03b7': "eta", + '\u0568': "etarmenian", + '\u03ae': "etatonos", + '\u00f0': "eth", + '\u1ebd': "etilde", + '\u1e1b': "etildebelow", + '\u0591': "etnahtafoukhhebrew", + // '\u0591': "etnahtafoukhlefthebrew", // duplicate + // '\u0591': "etnahtahebrew", // duplicate + // '\u0591': "etnahtalefthebrew", // duplicate + '\u01dd': "eturned", + '\u3161': "eukorean", + // '\u20ac': "euro", // duplicate + '\u09c7': "evowelsignbengali", + '\u0947': "evowelsigndeva", + '\u0ac7': "evowelsigngujarati", + '\u0021': "exclam", + '\u055c': "exclamarmenian", + '\u203c': "exclamdbl", + '\u00a1': "exclamdown", + '\uf7a1': "exclamdownsmall", + '\uff01': "exclammonospace", + '\uf721': "exclamsmall", + '\u2203': "existential", + '\u0292': "ezh", + '\u01ef': "ezhcaron", + '\u0293': "ezhcurl", + '\u01b9': "ezhreversed", + '\u01ba': "ezhtail", + '\u0066': "f", + '\u095e': "fadeva", + '\u0a5e': "fagurmukhi", + '\u2109': "fahrenheit", + // '\u064e': "fathaarabic", // duplicate + // '\u064e': "fathalowarabic", // duplicate + // '\u064b': "fathatanarabic", // duplicate + '\u3108': "fbopomofo", + '\u24d5': "fcircle", + '\u1e1f': "fdotaccent", + // '\u0641': "feharabic", // duplicate + '\u0586': "feharmenian", + '\ufed2': "fehfinalarabic", + '\ufed3': "fehinitialarabic", + '\ufed4': "fehmedialarabic", + '\u03e5': "feicoptic", + '\u2640': "female", + '\ufb00': "ff", + '\ufb03': "ffi", + '\ufb04': "ffl", + '\ufb01': "fi", + '\u246e': "fifteencircle", + '\u2482': "fifteenparen", + '\u2496': "fifteenperiod", + '\u2012': "figuredash", + // '\u25a0': "filledbox", // duplicate + // '\u25ac': "filledrect", // duplicate + // '\u05da': "finalkaf", // duplicate + '\ufb3a': "finalkafdagesh", + // '\ufb3a': "finalkafdageshhebrew", // duplicate + // '\u05da': "finalkafhebrew", // duplicate + // '\u05b8': "finalkafqamats", // duplicate + // '\u05b8': "finalkafqamatshebrew", // duplicate + // '\u05b0': "finalkafsheva", // duplicate + // '\u05b0': "finalkafshevahebrew", // duplicate + // '\u05dd': "finalmem", // duplicate + // '\u05dd': "finalmemhebrew", // duplicate + // '\u05df': "finalnun", // duplicate + // '\u05df': "finalnunhebrew", // duplicate + // '\u05e3': "finalpe", // duplicate + // '\u05e3': "finalpehebrew", // duplicate + // '\u05e5': "finaltsadi", // duplicate + // '\u05e5': "finaltsadihebrew", // duplicate + '\u02c9': "firsttonechinese", + '\u25c9': "fisheye", + // '\u0473': "fitacyrillic", // duplicate + '\u0035': "five", + // '\u0665': "fivearabic", // duplicate + '\u09eb': "fivebengali", + '\u2464': "fivecircle", + '\u278e': "fivecircleinversesansserif", + '\u096b': "fivedeva", + '\u215d': "fiveeighths", + '\u0aeb': "fivegujarati", + '\u0a6b': "fivegurmukhi", + // '\u0665': "fivehackarabic", // duplicate + '\u3025': "fivehangzhou", + '\u3224': "fiveideographicparen", + '\u2085': "fiveinferior", + '\uff15': "fivemonospace", + '\uf735': "fiveoldstyle", + '\u2478': "fiveparen", + '\u248c': "fiveperiod", + '\u06f5': "fivepersian", + '\u2174': "fiveroman", + '\u2075': "fivesuperior", + '\u0e55': "fivethai", + '\ufb02': "fl", + '\u0192': "florin", + '\uff46': "fmonospace", + '\u3399': "fmsquare", + '\u0e1f': "fofanthai", + '\u0e1d': "fofathai", + '\u0e4f': "fongmanthai", + '\u2200': "forall", + '\u0034': "four", + // '\u0664': "fourarabic", // duplicate + '\u09ea': "fourbengali", + '\u2463': "fourcircle", + '\u278d': "fourcircleinversesansserif", + '\u096a': "fourdeva", + '\u0aea': "fourgujarati", + '\u0a6a': "fourgurmukhi", + // '\u0664': "fourhackarabic", // duplicate + '\u3024': "fourhangzhou", + '\u3223': "fourideographicparen", + '\u2084': "fourinferior", + '\uff14': "fourmonospace", + '\u09f7': "fournumeratorbengali", + '\uf734': "fouroldstyle", + '\u2477': "fourparen", + '\u248b': "fourperiod", + '\u06f4': "fourpersian", + '\u2173': "fourroman", + '\u2074': "foursuperior", + '\u246d': "fourteencircle", + '\u2481': "fourteenparen", + '\u2495': "fourteenperiod", + '\u0e54': "fourthai", + '\u02cb': "fourthtonechinese", + '\u24a1': "fparen", + '\u2044': "fraction", + '\u20a3': "franc", + '\u0067': "g", + '\u0997': "gabengali", + '\u01f5': "gacute", + '\u0917': "gadeva", + // '\u06af': "gafarabic", // duplicate + '\ufb93': "gaffinalarabic", + '\ufb94': "gafinitialarabic", + '\ufb95': "gafmedialarabic", + '\u0a97': "gagujarati", + '\u0a17': "gagurmukhi", + '\u304c': "gahiragana", + '\u30ac': "gakatakana", + '\u03b3': "gamma", + '\u0263': "gammalatinsmall", + '\u02e0': "gammasuperior", + '\u03eb': "gangiacoptic", + '\u310d': "gbopomofo", + '\u011f': "gbreve", + '\u01e7': "gcaron", + '\u0123': "gcedilla", + '\u24d6': "gcircle", + '\u011d': "gcircumflex", + // '\u0123': "gcommaaccent", // duplicate + '\u0121': "gdot", + // '\u0121': "gdotaccent", // duplicate + // '\u0433': "gecyrillic", // duplicate + '\u3052': "gehiragana", + '\u30b2': "gekatakana", + '\u2251': "geometricallyequal", + '\u059c': "gereshaccenthebrew", + '\u05f3': "gereshhebrew", + '\u059d': "gereshmuqdamhebrew", + '\u00df': "germandbls", + '\u059e': "gershayimaccenthebrew", + '\u05f4': "gershayimhebrew", + '\u3013': "getamark", + '\u0998': "ghabengali", + '\u0572': "ghadarmenian", + '\u0918': "ghadeva", + '\u0a98': "ghagujarati", + '\u0a18': "ghagurmukhi", + // '\u063a': "ghainarabic", // duplicate + '\ufece': "ghainfinalarabic", + '\ufecf': "ghaininitialarabic", + '\ufed0': "ghainmedialarabic", + '\u0495': "ghemiddlehookcyrillic", + '\u0493': "ghestrokecyrillic", + // '\u0491': "gheupturncyrillic", // duplicate + '\u095a': "ghhadeva", + '\u0a5a': "ghhagurmukhi", + '\u0260': "ghook", + '\u3393': "ghzsquare", + '\u304e': "gihiragana", + '\u30ae': "gikatakana", + '\u0563': "gimarmenian", + // '\u05d2': "gimel", // duplicate + '\ufb32': "gimeldagesh", + // '\ufb32': "gimeldageshhebrew", // duplicate + // '\u05d2': "gimelhebrew", // duplicate + // '\u0453': "gjecyrillic", // duplicate + '\u01be': "glottalinvertedstroke", + '\u0294': "glottalstop", + '\u0296': "glottalstopinverted", + '\u02c0': "glottalstopmod", + '\u0295': "glottalstopreversed", + '\u02c1': "glottalstopreversedmod", + '\u02e4': "glottalstopreversedsuperior", + '\u02a1': "glottalstopstroke", + '\u02a2': "glottalstopstrokereversed", + '\u1e21': "gmacron", + '\uff47': "gmonospace", + '\u3054': "gohiragana", + '\u30b4': "gokatakana", + '\u24a2': "gparen", + '\u33ac': "gpasquare", + '\u2207': "gradient", + '\u0060': "grave", + '\u0316': "gravebelowcmb", + '\u0300': "gravecmb", + // '\u0300': "gravecomb", // duplicate + '\u0953': "gravedeva", + '\u02ce': "gravelowmod", + '\uff40': "gravemonospace", + '\u0340': "gravetonecmb", + '\u003e': "greater", + '\u2265': "greaterequal", + '\u22db': "greaterequalorless", + '\uff1e': "greatermonospace", + '\u2273': "greaterorequivalent", + '\u2277': "greaterorless", + '\u2267': "greateroverequal", + '\ufe65': "greatersmall", + '\u0261': "gscript", + '\u01e5': "gstroke", + '\u3050': "guhiragana", + '\u00ab': "guillemotleft", + '\u00bb': "guillemotright", + '\u2039': "guilsinglleft", + '\u203a': "guilsinglright", + '\u30b0': "gukatakana", + '\u3318': "guramusquare", + '\u33c9': "gysquare", + '\u0068': "h", + '\u04a9': "haabkhasiancyrillic", + '\u06c1': "haaltonearabic", + '\u09b9': "habengali", + '\u04b3': "hadescendercyrillic", + '\u0939': "hadeva", + '\u0ab9': "hagujarati", + '\u0a39': "hagurmukhi", + // '\u062d': "haharabic", // duplicate + '\ufea2': "hahfinalarabic", + '\ufea3': "hahinitialarabic", + '\u306f': "hahiragana", + '\ufea4': "hahmedialarabic", + '\u332a': "haitusquare", + '\u30cf': "hakatakana", + '\uff8a': "hakatakanahalfwidth", + '\u0a4d': "halantgurmukhi", + // '\u0621': "hamzaarabic", // duplicate + // '\u064f': "hamzadammaarabic", // duplicate + // '\u064c': "hamzadammatanarabic", // duplicate + // '\u064e': "hamzafathaarabic", // duplicate + // '\u064b': "hamzafathatanarabic", // duplicate + // '\u0621': "hamzalowarabic", // duplicate + // '\u0650': "hamzalowkasraarabic", // duplicate + // '\u064d': "hamzalowkasratanarabic", // duplicate + // '\u0652': "hamzasukunarabic", // duplicate + '\u3164': "hangulfiller", + // '\u044a': "hardsigncyrillic", // duplicate + '\u21bc': "harpoonleftbarbup", + '\u21c0': "harpoonrightbarbup", + '\u33ca': "hasquare", + // '\u05b2': "hatafpatah", // duplicate + // '\u05b2': "hatafpatah16", // duplicate + // '\u05b2': "hatafpatah23", // duplicate + // '\u05b2': "hatafpatah2f", // duplicate + // '\u05b2': "hatafpatahhebrew", // duplicate + // '\u05b2': "hatafpatahnarrowhebrew", // duplicate + // '\u05b2': "hatafpatahquarterhebrew", // duplicate + // '\u05b2': "hatafpatahwidehebrew", // duplicate + // '\u05b3': "hatafqamats", // duplicate + // '\u05b3': "hatafqamats1b", // duplicate + // '\u05b3': "hatafqamats28", // duplicate + // '\u05b3': "hatafqamats34", // duplicate + // '\u05b3': "hatafqamatshebrew", // duplicate + // '\u05b3': "hatafqamatsnarrowhebrew", // duplicate + // '\u05b3': "hatafqamatsquarterhebrew", // duplicate + // '\u05b3': "hatafqamatswidehebrew", // duplicate + // '\u05b1': "hatafsegol", // duplicate + // '\u05b1': "hatafsegol17", // duplicate + // '\u05b1': "hatafsegol24", // duplicate + // '\u05b1': "hatafsegol30", // duplicate + // '\u05b1': "hatafsegolhebrew", // duplicate + // '\u05b1': "hatafsegolnarrowhebrew", // duplicate + // '\u05b1': "hatafsegolquarterhebrew", // duplicate + // '\u05b1': "hatafsegolwidehebrew", // duplicate + '\u0127': "hbar", + '\u310f': "hbopomofo", + '\u1e2b': "hbrevebelow", + '\u1e29': "hcedilla", + '\u24d7': "hcircle", + '\u0125': "hcircumflex", + '\u1e27': "hdieresis", + '\u1e23': "hdotaccent", + '\u1e25': "hdotbelow", + // '\u05d4': "he", // duplicate + '\u2665': "heart", + // '\u2665': "heartsuitblack", // duplicate + '\u2661': "heartsuitwhite", + '\ufb34': "hedagesh", + // '\ufb34': "hedageshhebrew", // duplicate + // '\u06c1': "hehaltonearabic", // duplicate + // '\u0647': "heharabic", // duplicate + // '\u05d4': "hehebrew", // duplicate + '\ufba7': "hehfinalaltonearabic", + '\ufeea': "hehfinalalttwoarabic", + // '\ufeea': "hehfinalarabic", // duplicate + '\ufba5': "hehhamzaabovefinalarabic", + '\ufba4': "hehhamzaaboveisolatedarabic", + '\ufba8': "hehinitialaltonearabic", + '\ufeeb': "hehinitialarabic", + '\u3078': "hehiragana", + '\ufba9': "hehmedialaltonearabic", + '\ufeec': "hehmedialarabic", + '\u337b': "heiseierasquare", + '\u30d8': "hekatakana", + '\uff8d': "hekatakanahalfwidth", + '\u3336': "hekutaarusquare", + '\u0267': "henghook", + '\u3339': "herutusquare", + // '\u05d7': "het", // duplicate + // '\u05d7': "hethebrew", // duplicate + '\u0266': "hhook", + '\u02b1': "hhooksuperior", + '\u327b': "hieuhacirclekorean", + '\u321b': "hieuhaparenkorean", + '\u326d': "hieuhcirclekorean", + '\u314e': "hieuhkorean", + '\u320d': "hieuhparenkorean", + '\u3072': "hihiragana", + '\u30d2': "hikatakana", + '\uff8b': "hikatakanahalfwidth", + // '\u05b4': "hiriq", // duplicate + // '\u05b4': "hiriq14", // duplicate + // '\u05b4': "hiriq21", // duplicate + // '\u05b4': "hiriq2d", // duplicate + // '\u05b4': "hiriqhebrew", // duplicate + // '\u05b4': "hiriqnarrowhebrew", // duplicate + // '\u05b4': "hiriqquarterhebrew", // duplicate + // '\u05b4': "hiriqwidehebrew", // duplicate + '\u1e96': "hlinebelow", + '\uff48': "hmonospace", + '\u0570': "hoarmenian", + '\u0e2b': "hohipthai", + '\u307b': "hohiragana", + '\u30db': "hokatakana", + '\uff8e': "hokatakanahalfwidth", + // '\u05b9': "holam", // duplicate + // '\u05b9': "holam19", // duplicate + // '\u05b9': "holam26", // duplicate + // '\u05b9': "holam32", // duplicate + // '\u05b9': "holamhebrew", // duplicate + // '\u05b9': "holamnarrowhebrew", // duplicate + // '\u05b9': "holamquarterhebrew", // duplicate + // '\u05b9': "holamwidehebrew", // duplicate + '\u0e2e': "honokhukthai", + '\u0309': "hookabovecomb", + // '\u0309': "hookcmb", // duplicate + '\u0321': "hookpalatalizedbelowcmb", + '\u0322': "hookretroflexbelowcmb", + '\u3342': "hoonsquare", + '\u03e9': "horicoptic", + // '\u2015': "horizontalbar", // duplicate + '\u031b': "horncmb", + '\u2668': "hotsprings", + '\u2302': "house", + '\u24a3': "hparen", + '\u02b0': "hsuperior", + '\u0265': "hturned", + '\u3075': "huhiragana", + '\u3333': "huiitosquare", + '\u30d5': "hukatakana", + '\uff8c': "hukatakanahalfwidth", + '\u02dd': "hungarumlaut", + '\u030b': "hungarumlautcmb", + '\u0195': "hv", + '\u002d': "hyphen", + '\uf6e5': "hypheninferior", + '\uff0d': "hyphenmonospace", + '\ufe63': "hyphensmall", + '\uf6e6': "hyphensuperior", + '\u2010': "hyphentwo", + '\u0069': "i", + '\u00ed': "iacute", + // '\u044f': "iacyrillic", // duplicate + '\u0987': "ibengali", + '\u3127': "ibopomofo", + '\u012d': "ibreve", + '\u01d0': "icaron", + '\u24d8': "icircle", + '\u00ee': "icircumflex", + // '\u0456': "icyrillic", // duplicate + '\u0209': "idblgrave", + '\u328f': "ideographearthcircle", + '\u328b': "ideographfirecircle", + '\u323f': "ideographicallianceparen", + '\u323a': "ideographiccallparen", + '\u32a5': "ideographiccentrecircle", + '\u3006': "ideographicclose", + '\u3001': "ideographiccomma", + '\uff64': "ideographiccommaleft", + '\u3237': "ideographiccongratulationparen", + '\u32a3': "ideographiccorrectcircle", + '\u322f': "ideographicearthparen", + '\u323d': "ideographicenterpriseparen", + '\u329d': "ideographicexcellentcircle", + '\u3240': "ideographicfestivalparen", + '\u3296': "ideographicfinancialcircle", + '\u3236': "ideographicfinancialparen", + '\u322b': "ideographicfireparen", + '\u3232': "ideographichaveparen", + '\u32a4': "ideographichighcircle", + '\u3005': "ideographiciterationmark", + '\u3298': "ideographiclaborcircle", + '\u3238': "ideographiclaborparen", + '\u32a7': "ideographicleftcircle", + '\u32a6': "ideographiclowcircle", + '\u32a9': "ideographicmedicinecircle", + '\u322e': "ideographicmetalparen", + '\u322a': "ideographicmoonparen", + '\u3234': "ideographicnameparen", + '\u3002': "ideographicperiod", + '\u329e': "ideographicprintcircle", + '\u3243': "ideographicreachparen", + '\u3239': "ideographicrepresentparen", + '\u323e': "ideographicresourceparen", + '\u32a8': "ideographicrightcircle", + '\u3299': "ideographicsecretcircle", + '\u3242': "ideographicselfparen", + '\u3233': "ideographicsocietyparen", + '\u3000': "ideographicspace", + '\u3235': "ideographicspecialparen", + '\u3231': "ideographicstockparen", + '\u323b': "ideographicstudyparen", + '\u3230': "ideographicsunparen", + '\u323c': "ideographicsuperviseparen", + '\u322c': "ideographicwaterparen", + '\u322d': "ideographicwoodparen", + '\u3007': "ideographiczero", + '\u328e': "ideographmetalcircle", + '\u328a': "ideographmooncircle", + '\u3294': "ideographnamecircle", + '\u3290': "ideographsuncircle", + '\u328c': "ideographwatercircle", + '\u328d': "ideographwoodcircle", + '\u0907': "ideva", + '\u00ef': "idieresis", + '\u1e2f': "idieresisacute", + '\u04e5': "idieresiscyrillic", + '\u1ecb': "idotbelow", + '\u04d7': "iebrevecyrillic", + // '\u0435': "iecyrillic", // duplicate + '\u3275': "ieungacirclekorean", + '\u3215': "ieungaparenkorean", + '\u3267': "ieungcirclekorean", + '\u3147': "ieungkorean", + '\u3207': "ieungparenkorean", + '\u00ec': "igrave", + '\u0a87': "igujarati", + '\u0a07': "igurmukhi", + '\u3044': "ihiragana", + '\u1ec9': "ihookabove", + '\u0988': "iibengali", + // '\u0438': "iicyrillic", // duplicate + '\u0908': "iideva", + '\u0a88': "iigujarati", + '\u0a08': "iigurmukhi", + '\u0a40': "iimatragurmukhi", + '\u020b': "iinvertedbreve", + // '\u0439': "iishortcyrillic", // duplicate + '\u09c0': "iivowelsignbengali", + '\u0940': "iivowelsigndeva", + '\u0ac0': "iivowelsigngujarati", + '\u0133': "ij", + '\u30a4': "ikatakana", + '\uff72': "ikatakanahalfwidth", + '\u3163': "ikorean", + '\u02dc': "ilde", + '\u05ac': "iluyhebrew", + '\u012b': "imacron", + '\u04e3': "imacroncyrillic", + '\u2253': "imageorapproximatelyequal", + '\u0a3f': "imatragurmukhi", + '\uff49': "imonospace", + // '\u2206': "increment", // duplicate + '\u221e': "infinity", + '\u056b': "iniarmenian", + '\u222b': "integral", + '\u2321': "integralbottom", + // '\u2321': "integralbt", // duplicate + '\uf8f5': "integralex", + '\u2320': "integraltop", + // '\u2320': "integraltp", // duplicate + '\u2229': "intersection", + '\u3305': "intisquare", + // '\u25d8': "invbullet", // duplicate + '\u25d9': "invcircle", + // '\u263b': "invsmileface", // duplicate + // '\u0451': "iocyrillic", // duplicate + '\u012f': "iogonek", + '\u03b9': "iota", + '\u03ca': "iotadieresis", + '\u0390': "iotadieresistonos", + '\u0269': "iotalatin", + '\u03af': "iotatonos", + '\u24a4': "iparen", + '\u0a72': "irigurmukhi", + '\u3043': "ismallhiragana", + '\u30a3': "ismallkatakana", + '\uff68': "ismallkatakanahalfwidth", + '\u09fa': "issharbengali", + '\u0268': "istroke", + '\uf6ed': "isuperior", + '\u309d': "iterationhiragana", + '\u30fd': "iterationkatakana", + '\u0129': "itilde", + '\u1e2d': "itildebelow", + '\u3129': "iubopomofo", + // '\u044e': "iucyrillic", // duplicate + '\u09bf': "ivowelsignbengali", + '\u093f': "ivowelsigndeva", + '\u0abf': "ivowelsigngujarati", + // '\u0475': "izhitsacyrillic", // duplicate + '\u0477': "izhitsadblgravecyrillic", + '\u006a': "j", + '\u0571': "jaarmenian", + '\u099c': "jabengali", + '\u091c': "jadeva", + '\u0a9c': "jagujarati", + '\u0a1c': "jagurmukhi", + '\u3110': "jbopomofo", + '\u01f0': "jcaron", + '\u24d9': "jcircle", + '\u0135': "jcircumflex", + '\u029d': "jcrossedtail", + '\u025f': "jdotlessstroke", + // '\u0458': "jecyrillic", // duplicate + // '\u062c': "jeemarabic", // duplicate + '\ufe9e': "jeemfinalarabic", + '\ufe9f': "jeeminitialarabic", + '\ufea0': "jeemmedialarabic", + // '\u0698': "jeharabic", // duplicate + '\ufb8b': "jehfinalarabic", + '\u099d': "jhabengali", + '\u091d': "jhadeva", + '\u0a9d': "jhagujarati", + '\u0a1d': "jhagurmukhi", + '\u057b': "jheharmenian", + '\u3004': "jis", + '\uff4a': "jmonospace", + '\u24a5': "jparen", + '\u02b2': "jsuperior", + '\u006b': "k", + '\u04a1': "kabashkircyrillic", + '\u0995': "kabengali", + '\u1e31': "kacute", + // '\u043a': "kacyrillic", // duplicate + '\u049b': "kadescendercyrillic", + '\u0915': "kadeva", + // '\u05db': "kaf", // duplicate + // '\u0643': "kafarabic", // duplicate + '\ufb3b': "kafdagesh", + // '\ufb3b': "kafdageshhebrew", // duplicate + '\ufeda': "kaffinalarabic", + // '\u05db': "kafhebrew", // duplicate + '\ufedb': "kafinitialarabic", + '\ufedc': "kafmedialarabic", + '\ufb4d': "kafrafehebrew", + '\u0a95': "kagujarati", + '\u0a15': "kagurmukhi", + '\u304b': "kahiragana", + '\u04c4': "kahookcyrillic", + '\u30ab': "kakatakana", + '\uff76': "kakatakanahalfwidth", + '\u03ba': "kappa", + '\u03f0': "kappasymbolgreek", + '\u3171': "kapyeounmieumkorean", + '\u3184': "kapyeounphieuphkorean", + '\u3178': "kapyeounpieupkorean", + '\u3179': "kapyeounssangpieupkorean", + '\u330d': "karoriisquare", + // '\u0640': "kashidaautoarabic", // duplicate + // '\u0640': "kashidaautonosidebearingarabic", // duplicate + '\u30f5': "kasmallkatakana", + '\u3384': "kasquare", + // '\u0650': "kasraarabic", // duplicate + // '\u064d': "kasratanarabic", // duplicate + '\u049f': "kastrokecyrillic", + '\uff70': "katahiraprolongmarkhalfwidth", + '\u049d': "kaverticalstrokecyrillic", + '\u310e': "kbopomofo", + '\u3389': "kcalsquare", + '\u01e9': "kcaron", + '\u0137': "kcedilla", + '\u24da': "kcircle", + // '\u0137': "kcommaaccent", // duplicate + '\u1e33': "kdotbelow", + '\u0584': "keharmenian", + '\u3051': "kehiragana", + '\u30b1': "kekatakana", + '\uff79': "kekatakanahalfwidth", + '\u056f': "kenarmenian", + '\u30f6': "kesmallkatakana", + '\u0138': "kgreenlandic", + '\u0996': "khabengali", + // '\u0445': "khacyrillic", // duplicate + '\u0916': "khadeva", + '\u0a96': "khagujarati", + '\u0a16': "khagurmukhi", + // '\u062e': "khaharabic", // duplicate + '\ufea6': "khahfinalarabic", + '\ufea7': "khahinitialarabic", + '\ufea8': "khahmedialarabic", + '\u03e7': "kheicoptic", + '\u0959': "khhadeva", + '\u0a59': "khhagurmukhi", + '\u3278': "khieukhacirclekorean", + '\u3218': "khieukhaparenkorean", + '\u326a': "khieukhcirclekorean", + '\u314b': "khieukhkorean", + '\u320a': "khieukhparenkorean", + '\u0e02': "khokhaithai", + '\u0e05': "khokhonthai", + '\u0e03': "khokhuatthai", + '\u0e04': "khokhwaithai", + '\u0e5b': "khomutthai", + '\u0199': "khook", + '\u0e06': "khorakhangthai", + '\u3391': "khzsquare", + '\u304d': "kihiragana", + '\u30ad': "kikatakana", + '\uff77': "kikatakanahalfwidth", + '\u3315': "kiroguramusquare", + '\u3316': "kiromeetorusquare", + '\u3314': "kirosquare", + '\u326e': "kiyeokacirclekorean", + '\u320e': "kiyeokaparenkorean", + '\u3260': "kiyeokcirclekorean", + '\u3131': "kiyeokkorean", + '\u3200': "kiyeokparenkorean", + '\u3133': "kiyeoksioskorean", + // '\u045c': "kjecyrillic", // duplicate + '\u1e35': "klinebelow", + '\u3398': "klsquare", + '\u33a6': "kmcubedsquare", + '\uff4b': "kmonospace", + '\u33a2': "kmsquaredsquare", + '\u3053': "kohiragana", + '\u33c0': "kohmsquare", + '\u0e01': "kokaithai", + '\u30b3': "kokatakana", + '\uff7a': "kokatakanahalfwidth", + '\u331e': "kooposquare", + '\u0481': "koppacyrillic", + '\u327f': "koreanstandardsymbol", + '\u0343': "koroniscmb", + '\u24a6': "kparen", + '\u33aa': "kpasquare", + '\u046f': "ksicyrillic", + '\u33cf': "ktsquare", + '\u029e': "kturned", + '\u304f': "kuhiragana", + '\u30af': "kukatakana", + '\uff78': "kukatakanahalfwidth", + '\u33b8': "kvsquare", + '\u33be': "kwsquare", + '\u006c': "l", + '\u09b2': "labengali", + '\u013a': "lacute", + '\u0932': "ladeva", + '\u0ab2': "lagujarati", + '\u0a32': "lagurmukhi", + '\u0e45': "lakkhangyaothai", + '\ufefc': "lamaleffinalarabic", + '\ufef8': "lamalefhamzaabovefinalarabic", + '\ufef7': "lamalefhamzaaboveisolatedarabic", + '\ufefa': "lamalefhamzabelowfinalarabic", + '\ufef9': "lamalefhamzabelowisolatedarabic", + '\ufefb': "lamalefisolatedarabic", + '\ufef6': "lamalefmaddaabovefinalarabic", + '\ufef5': "lamalefmaddaaboveisolatedarabic", + // '\u0644': "lamarabic", // duplicate + '\u03bb': "lambda", + '\u019b': "lambdastroke", + // '\u05dc': "lamed", // duplicate + '\ufb3c': "lameddagesh", + // '\ufb3c': "lameddageshhebrew", // duplicate + // '\u05dc': "lamedhebrew", // duplicate + // '\u05b9': "lamedholam", // duplicate + // '\u05bc': "lamedholamdagesh", // duplicate + // '\u05bc': "lamedholamdageshhebrew", // duplicate + // '\u05b9': "lamedholamhebrew", // duplicate + '\ufede': "lamfinalarabic", + '\ufcca': "lamhahinitialarabic", + '\ufedf': "laminitialarabic", + '\ufcc9': "lamjeeminitialarabic", + '\ufccb': "lamkhahinitialarabic", + '\ufdf2': "lamlamhehisolatedarabic", + '\ufee0': "lammedialarabic", + '\ufd88': "lammeemhahinitialarabic", + '\ufccc': "lammeeminitialarabic", + // '\ufea0': "lammeemjeeminitialarabic", // duplicate + // '\ufea8': "lammeemkhahinitialarabic", // duplicate + '\u25ef': "largecircle", + '\u019a': "lbar", + '\u026c': "lbelt", + '\u310c': "lbopomofo", + '\u013e': "lcaron", + '\u013c': "lcedilla", + '\u24db': "lcircle", + '\u1e3d': "lcircumflexbelow", + // '\u013c': "lcommaaccent", // duplicate + '\u0140': "ldot", + // '\u0140': "ldotaccent", // duplicate + '\u1e37': "ldotbelow", + '\u1e39': "ldotbelowmacron", + '\u031a': "leftangleabovecmb", + '\u0318': "lefttackbelowcmb", + '\u003c': "less", + '\u2264': "lessequal", + '\u22da': "lessequalorgreater", + '\uff1c': "lessmonospace", + '\u2272': "lessorequivalent", + '\u2276': "lessorgreater", + '\u2266': "lessoverequal", + '\ufe64': "lesssmall", + '\u026e': "lezh", + '\u258c': "lfblock", + '\u026d': "lhookretroflex", + // '\u20a4': "lira", // duplicate + '\u056c': "liwnarmenian", + '\u01c9': "lj", + // '\u0459': "ljecyrillic", // duplicate + '\uf6c0': "ll", + '\u0933': "lladeva", + '\u0ab3': "llagujarati", + '\u1e3b': "llinebelow", + '\u0934': "llladeva", + '\u09e1': "llvocalicbengali", + '\u0961': "llvocalicdeva", + '\u09e3': "llvocalicvowelsignbengali", + '\u0963': "llvocalicvowelsigndeva", + '\u026b': "lmiddletilde", + '\uff4c': "lmonospace", + '\u33d0': "lmsquare", + '\u0e2c': "lochulathai", + '\u2227': "logicaland", + '\u00ac': "logicalnot", + '\u2310': "logicalnotreversed", + '\u2228': "logicalor", + '\u0e25': "lolingthai", + '\u017f': "longs", + '\ufe4e': "lowlinecenterline", + '\u0332': "lowlinecmb", + '\ufe4d': "lowlinedashed", + '\u25ca': "lozenge", + '\u24a7': "lparen", + '\u0142': "lslash", + // '\u2113': "lsquare", // duplicate + '\uf6ee': "lsuperior", + '\u2591': "ltshade", + '\u0e26': "luthai", + '\u098c': "lvocalicbengali", + '\u090c': "lvocalicdeva", + '\u09e2': "lvocalicvowelsignbengali", + '\u0962': "lvocalicvowelsigndeva", + '\u33d3': "lxsquare", + '\u006d': "m", + '\u09ae': "mabengali", + '\u00af': "macron", + '\u0331': "macronbelowcmb", + '\u0304': "macroncmb", + '\u02cd': "macronlowmod", + '\uffe3': "macronmonospace", + '\u1e3f': "macute", + '\u092e': "madeva", + '\u0aae': "magujarati", + '\u0a2e': "magurmukhi", + '\u05a4': "mahapakhhebrew", + // '\u05a4': "mahapakhlefthebrew", // duplicate + '\u307e': "mahiragana", + '\uf895': "maichattawalowleftthai", + '\uf894': "maichattawalowrightthai", + '\u0e4b': "maichattawathai", + '\uf893': "maichattawaupperleftthai", + '\uf88c': "maieklowleftthai", + '\uf88b': "maieklowrightthai", + '\u0e48': "maiekthai", + '\uf88a': "maiekupperleftthai", + '\uf884': "maihanakatleftthai", + '\u0e31': "maihanakatthai", + '\uf889': "maitaikhuleftthai", + '\u0e47': "maitaikhuthai", + '\uf88f': "maitholowleftthai", + '\uf88e': "maitholowrightthai", + '\u0e49': "maithothai", + '\uf88d': "maithoupperleftthai", + '\uf892': "maitrilowleftthai", + '\uf891': "maitrilowrightthai", + '\u0e4a': "maitrithai", + '\uf890': "maitriupperleftthai", + '\u0e46': "maiyamokthai", + '\u30de': "makatakana", + '\uff8f': "makatakanahalfwidth", + '\u2642': "male", + '\u3347': "mansyonsquare", + // '\u05be': "maqafhebrew", // duplicate + // '\u2642': "mars", // duplicate + '\u05af': "masoracirclehebrew", + '\u3383': "masquare", + '\u3107': "mbopomofo", + '\u33d4': "mbsquare", + '\u24dc': "mcircle", + '\u33a5': "mcubedsquare", + '\u1e41': "mdotaccent", + '\u1e43': "mdotbelow", + // '\u0645': "meemarabic", // duplicate + '\ufee2': "meemfinalarabic", + '\ufee3': "meeminitialarabic", + '\ufee4': "meemmedialarabic", + '\ufcd1': "meemmeeminitialarabic", + '\ufc48': "meemmeemisolatedarabic", + '\u334d': "meetorusquare", + '\u3081': "mehiragana", + '\u337e': "meizierasquare", + '\u30e1': "mekatakana", + '\uff92': "mekatakanahalfwidth", + // '\u05de': "mem", // duplicate + '\ufb3e': "memdagesh", + // '\ufb3e': "memdageshhebrew", // duplicate + // '\u05de': "memhebrew", // duplicate + '\u0574': "menarmenian", + '\u05a5': "merkhahebrew", + '\u05a6': "merkhakefulahebrew", + // '\u05a6': "merkhakefulalefthebrew", // duplicate + // '\u05a5': "merkhalefthebrew", // duplicate + '\u0271': "mhook", + '\u3392': "mhzsquare", + '\uff65': "middledotkatakanahalfwidth", + '\u00b7': "middot", + '\u3272': "mieumacirclekorean", + '\u3212': "mieumaparenkorean", + '\u3264': "mieumcirclekorean", + '\u3141': "mieumkorean", + '\u3170': "mieumpansioskorean", + '\u3204': "mieumparenkorean", + '\u316e': "mieumpieupkorean", + '\u316f': "mieumsioskorean", + '\u307f': "mihiragana", + '\u30df': "mikatakana", + '\uff90': "mikatakanahalfwidth", + '\u2212': "minus", + '\u0320': "minusbelowcmb", + '\u2296': "minuscircle", + '\u02d7': "minusmod", + '\u2213': "minusplus", + '\u2032': "minute", + '\u334a': "miribaarusquare", + '\u3349': "mirisquare", + '\u0270': "mlonglegturned", + '\u3396': "mlsquare", + '\u33a3': "mmcubedsquare", + '\uff4d': "mmonospace", + '\u339f': "mmsquaredsquare", + '\u3082': "mohiragana", + '\u33c1': "mohmsquare", + '\u30e2': "mokatakana", + '\uff93': "mokatakanahalfwidth", + '\u33d6': "molsquare", + '\u0e21': "momathai", + '\u33a7': "moverssquare", + '\u33a8': "moverssquaredsquare", + '\u24a8': "mparen", + '\u33ab': "mpasquare", + '\u33b3': "mssquare", + '\uf6ef': "msuperior", + '\u026f': "mturned", + '\u00b5': "mu", + // '\u00b5': "mu1", // duplicate + '\u3382': "muasquare", + '\u226b': "muchgreater", + '\u226a': "muchless", + '\u338c': "mufsquare", + '\u03bc': "mugreek", + '\u338d': "mugsquare", + '\u3080': "muhiragana", + '\u30e0': "mukatakana", + '\uff91': "mukatakanahalfwidth", + '\u3395': "mulsquare", + '\u00d7': "multiply", + '\u339b': "mumsquare", + '\u05a3': "munahhebrew", + // '\u05a3': "munahlefthebrew", // duplicate + '\u266a': "musicalnote", + // '\u266b': "musicalnotedbl", // duplicate + '\u266d': "musicflatsign", + '\u266f': "musicsharpsign", + '\u33b2': "mussquare", + '\u33b6': "muvsquare", + '\u33bc': "muwsquare", + '\u33b9': "mvmegasquare", + '\u33b7': "mvsquare", + '\u33bf': "mwmegasquare", + '\u33bd': "mwsquare", + '\u006e': "n", + '\u09a8': "nabengali", + // '\u2207': "nabla", // duplicate + '\u0144': "nacute", + '\u0928': "nadeva", + '\u0aa8': "nagujarati", + '\u0a28': "nagurmukhi", + '\u306a': "nahiragana", + '\u30ca': "nakatakana", + '\uff85': "nakatakanahalfwidth", + '\u0149': "napostrophe", + '\u3381': "nasquare", + '\u310b': "nbopomofo", + '\u00a0': "nbspace", + '\u0148': "ncaron", + '\u0146': "ncedilla", + '\u24dd': "ncircle", + '\u1e4b': "ncircumflexbelow", + // '\u0146': "ncommaaccent", // duplicate + '\u1e45': "ndotaccent", + '\u1e47': "ndotbelow", + '\u306d': "nehiragana", + '\u30cd': "nekatakana", + '\uff88': "nekatakanahalfwidth", + // '\u20aa': "newsheqelsign", // duplicate + '\u338b': "nfsquare", + '\u0999': "ngabengali", + '\u0919': "ngadeva", + '\u0a99': "ngagujarati", + '\u0a19': "ngagurmukhi", + '\u0e07': "ngonguthai", + '\u3093': "nhiragana", + '\u0272': "nhookleft", + '\u0273': "nhookretroflex", + '\u326f': "nieunacirclekorean", + '\u320f': "nieunaparenkorean", + '\u3135': "nieuncieuckorean", + '\u3261': "nieuncirclekorean", + '\u3136': "nieunhieuhkorean", + '\u3134': "nieunkorean", + '\u3168': "nieunpansioskorean", + '\u3201': "nieunparenkorean", + '\u3167': "nieunsioskorean", + '\u3166': "nieuntikeutkorean", + '\u306b': "nihiragana", + '\u30cb': "nikatakana", + '\uff86': "nikatakanahalfwidth", + '\uf899': "nikhahitleftthai", + '\u0e4d': "nikhahitthai", + '\u0039': "nine", + // '\u0669': "ninearabic", // duplicate + '\u09ef': "ninebengali", + '\u2468': "ninecircle", + '\u2792': "ninecircleinversesansserif", + '\u096f': "ninedeva", + '\u0aef': "ninegujarati", + '\u0a6f': "ninegurmukhi", + // '\u0669': "ninehackarabic", // duplicate + '\u3029': "ninehangzhou", + '\u3228': "nineideographicparen", + '\u2089': "nineinferior", + '\uff19': "ninemonospace", + '\uf739': "nineoldstyle", + '\u247c': "nineparen", + '\u2490': "nineperiod", + '\u06f9': "ninepersian", + '\u2178': "nineroman", + '\u2079': "ninesuperior", + '\u2472': "nineteencircle", + '\u2486': "nineteenparen", + '\u249a': "nineteenperiod", + '\u0e59': "ninethai", + '\u01cc': "nj", + // '\u045a': "njecyrillic", // duplicate + '\u30f3': "nkatakana", + '\uff9d': "nkatakanahalfwidth", + '\u019e': "nlegrightlong", + '\u1e49': "nlinebelow", + '\uff4e': "nmonospace", + '\u339a': "nmsquare", + '\u09a3': "nnabengali", + '\u0923': "nnadeva", + '\u0aa3': "nnagujarati", + '\u0a23': "nnagurmukhi", + '\u0929': "nnnadeva", + '\u306e': "nohiragana", + '\u30ce': "nokatakana", + '\uff89': "nokatakanahalfwidth", + // '\u00a0': "nonbreakingspace", // duplicate + '\u0e13': "nonenthai", + '\u0e19': "nonuthai", + // '\u0646': "noonarabic", // duplicate + '\ufee6': "noonfinalarabic", + // '\u06ba': "noonghunnaarabic", // duplicate + '\ufb9f': "noonghunnafinalarabic", + // '\ufeec': "noonhehinitialarabic", // duplicate + '\ufee7': "nooninitialarabic", + '\ufcd2': "noonjeeminitialarabic", + '\ufc4b': "noonjeemisolatedarabic", + '\ufee8': "noonmedialarabic", + '\ufcd5': "noonmeeminitialarabic", + '\ufc4e': "noonmeemisolatedarabic", + '\ufc8d': "noonnoonfinalarabic", + '\u220c': "notcontains", + '\u2209': "notelement", + // '\u2209': "notelementof", // duplicate + '\u2260': "notequal", + '\u226f': "notgreater", + '\u2271': "notgreaternorequal", + '\u2279': "notgreaternorless", + '\u2262': "notidentical", + '\u226e': "notless", + '\u2270': "notlessnorequal", + '\u2226': "notparallel", + '\u2280': "notprecedes", + '\u2284': "notsubset", + '\u2281': "notsucceeds", + '\u2285': "notsuperset", + '\u0576': "nowarmenian", + '\u24a9': "nparen", + '\u33b1': "nssquare", + '\u207f': "nsuperior", + '\u00f1': "ntilde", + '\u03bd': "nu", + '\u306c': "nuhiragana", + '\u30cc': "nukatakana", + '\uff87': "nukatakanahalfwidth", + '\u09bc': "nuktabengali", + '\u093c': "nuktadeva", + '\u0abc': "nuktagujarati", + '\u0a3c': "nuktagurmukhi", + '\u0023': "numbersign", + '\uff03': "numbersignmonospace", + '\ufe5f': "numbersignsmall", + '\u0374': "numeralsigngreek", + '\u0375': "numeralsignlowergreek", + // '\u2116': "numero", // duplicate + // '\u05e0': "nun", // duplicate + '\ufb40': "nundagesh", + // '\ufb40': "nundageshhebrew", // duplicate + // '\u05e0': "nunhebrew", // duplicate + '\u33b5': "nvsquare", + '\u33bb': "nwsquare", + '\u099e': "nyabengali", + '\u091e': "nyadeva", + '\u0a9e': "nyagujarati", + '\u0a1e': "nyagurmukhi", + '\u006f': "o", + '\u00f3': "oacute", + '\u0e2d': "oangthai", + '\u0275': "obarred", + '\u04e9': "obarredcyrillic", + '\u04eb': "obarreddieresiscyrillic", + '\u0993': "obengali", + '\u311b': "obopomofo", + '\u014f': "obreve", + '\u0911': "ocandradeva", + '\u0a91': "ocandragujarati", + '\u0949': "ocandravowelsigndeva", + '\u0ac9': "ocandravowelsigngujarati", + '\u01d2': "ocaron", + '\u24de': "ocircle", + '\u00f4': "ocircumflex", + '\u1ed1': "ocircumflexacute", + '\u1ed9': "ocircumflexdotbelow", + '\u1ed3': "ocircumflexgrave", + '\u1ed5': "ocircumflexhookabove", + '\u1ed7': "ocircumflextilde", + // '\u043e': "ocyrillic", // duplicate + '\u0151': "odblacute", + '\u020d': "odblgrave", + '\u0913': "odeva", + '\u00f6': "odieresis", + '\u04e7': "odieresiscyrillic", + '\u1ecd': "odotbelow", + '\u0153': "oe", + '\u315a': "oekorean", + '\u02db': "ogonek", + '\u0328': "ogonekcmb", + '\u00f2': "ograve", + '\u0a93': "ogujarati", + '\u0585': "oharmenian", + '\u304a': "ohiragana", + '\u1ecf': "ohookabove", + '\u01a1': "ohorn", + '\u1edb': "ohornacute", + '\u1ee3': "ohorndotbelow", + '\u1edd': "ohorngrave", + '\u1edf': "ohornhookabove", + '\u1ee1': "ohorntilde", + // '\u0151': "ohungarumlaut", // duplicate + '\u01a3': "oi", + '\u020f': "oinvertedbreve", + '\u30aa': "okatakana", + '\uff75': "okatakanahalfwidth", + '\u3157': "okorean", + '\u05ab': "olehebrew", + '\u014d': "omacron", + '\u1e53': "omacronacute", + '\u1e51': "omacrongrave", + '\u0950': "omdeva", + '\u03c9': "omega", + '\u03d6': "omega1", + '\u0461': "omegacyrillic", + '\u0277': "omegalatinclosed", + '\u047b': "omegaroundcyrillic", + '\u047d': "omegatitlocyrillic", + '\u03ce': "omegatonos", + '\u0ad0': "omgujarati", + '\u03bf': "omicron", + '\u03cc': "omicrontonos", + '\uff4f': "omonospace", + '\u0031': "one", + // '\u0661': "onearabic", // duplicate + '\u09e7': "onebengali", + '\u2460': "onecircle", + '\u278a': "onecircleinversesansserif", + '\u0967': "onedeva", + '\u2024': "onedotenleader", + '\u215b': "oneeighth", + '\uf6dc': "onefitted", + '\u0ae7': "onegujarati", + '\u0a67': "onegurmukhi", + // '\u0661': "onehackarabic", // duplicate + '\u00bd': "onehalf", + '\u3021': "onehangzhou", + '\u3220': "oneideographicparen", + '\u2081': "oneinferior", + '\uff11': "onemonospace", + '\u09f4': "onenumeratorbengali", + '\uf731': "oneoldstyle", + '\u2474': "oneparen", + '\u2488': "oneperiod", + '\u06f1': "onepersian", + '\u00bc': "onequarter", + '\u2170': "oneroman", + '\u00b9': "onesuperior", + '\u0e51': "onethai", + '\u2153': "onethird", + '\u01eb': "oogonek", + '\u01ed': "oogonekmacron", + '\u0a13': "oogurmukhi", + '\u0a4b': "oomatragurmukhi", + '\u0254': "oopen", + '\u24aa': "oparen", + '\u25e6': "openbullet", + '\u2325': "option", + '\u00aa': "ordfeminine", + '\u00ba': "ordmasculine", + '\u221f': "orthogonal", + '\u0912': "oshortdeva", + '\u094a': "oshortvowelsigndeva", + '\u00f8': "oslash", + '\u01ff': "oslashacute", + '\u3049': "osmallhiragana", + '\u30a9': "osmallkatakana", + '\uff6b': "osmallkatakanahalfwidth", + // '\u01ff': "ostrokeacute", // duplicate + '\uf6f0': "osuperior", + '\u047f': "otcyrillic", + '\u00f5': "otilde", + '\u1e4d': "otildeacute", + '\u1e4f': "otildedieresis", + '\u3121': "oubopomofo", + '\u203e': "overline", + '\ufe4a': "overlinecenterline", + '\u0305': "overlinecmb", + '\ufe49': "overlinedashed", + '\ufe4c': "overlinedblwavy", + '\ufe4b': "overlinewavy", + // '\u00af': "overscore", // duplicate + '\u09cb': "ovowelsignbengali", + '\u094b': "ovowelsigndeva", + '\u0acb': "ovowelsigngujarati", + '\u0070': "p", + '\u3380': "paampssquare", + '\u332b': "paasentosquare", + '\u09aa': "pabengali", + '\u1e55': "pacute", + '\u092a': "padeva", + '\u21df': "pagedown", + '\u21de': "pageup", + '\u0aaa': "pagujarati", + '\u0a2a': "pagurmukhi", + '\u3071': "pahiragana", + '\u0e2f': "paiyannoithai", + '\u30d1': "pakatakana", + '\u0484': "palatalizationcyrilliccmb", + '\u04c0': "palochkacyrillic", + '\u317f': "pansioskorean", + '\u00b6': "paragraph", + '\u2225': "parallel", + '\u0028': "parenleft", + '\ufd3e': "parenleftaltonearabic", + '\uf8ed': "parenleftbt", + '\uf8ec': "parenleftex", + '\u208d': "parenleftinferior", + '\uff08': "parenleftmonospace", + '\ufe59': "parenleftsmall", + '\u207d': "parenleftsuperior", + '\uf8eb': "parenlefttp", + '\ufe35': "parenleftvertical", + '\u0029': "parenright", + '\ufd3f': "parenrightaltonearabic", + '\uf8f8': "parenrightbt", + '\uf8f7': "parenrightex", + '\u208e': "parenrightinferior", + '\uff09': "parenrightmonospace", + '\ufe5a': "parenrightsmall", + '\u207e': "parenrightsuperior", + '\uf8f6': "parenrighttp", + '\ufe36': "parenrightvertical", + '\u2202': "partialdiff", + // '\u05c0': "paseqhebrew", // duplicate + '\u0599': "pashtahebrew", + '\u33a9': "pasquare", + // '\u05b7': "patah", // duplicate + // '\u05b7': "patah11", // duplicate + // '\u05b7': "patah1d", // duplicate + // '\u05b7': "patah2a", // duplicate + // '\u05b7': "patahhebrew", // duplicate + // '\u05b7': "patahnarrowhebrew", // duplicate + // '\u05b7': "patahquarterhebrew", // duplicate + // '\u05b7': "patahwidehebrew", // duplicate + '\u05a1': "pazerhebrew", + '\u3106': "pbopomofo", + '\u24df': "pcircle", + '\u1e57': "pdotaccent", + // '\u05e4': "pe", // duplicate + // '\u043f': "pecyrillic", // duplicate + '\ufb44': "pedagesh", + // '\ufb44': "pedageshhebrew", // duplicate + '\u333b': "peezisquare", + '\ufb43': "pefinaldageshhebrew", + // '\u067e': "peharabic", // duplicate + '\u057a': "peharmenian", + // '\u05e4': "pehebrew", // duplicate + '\ufb57': "pehfinalarabic", + '\ufb58': "pehinitialarabic", + '\u307a': "pehiragana", + '\ufb59': "pehmedialarabic", + '\u30da': "pekatakana", + '\u04a7': "pemiddlehookcyrillic", + '\ufb4e': "perafehebrew", + '\u0025': "percent", + // '\u066a': "percentarabic", // duplicate + '\uff05': "percentmonospace", + '\ufe6a': "percentsmall", + '\u002e': "period", + '\u0589': "periodarmenian", + // '\u00b7': "periodcentered", // duplicate + '\uff61': "periodhalfwidth", + '\uf6e7': "periodinferior", + '\uff0e': "periodmonospace", + '\ufe52': "periodsmall", + '\uf6e8': "periodsuperior", + '\u0342': "perispomenigreekcmb", + '\u22a5': "perpendicular", + '\u2030': "perthousand", + '\u20a7': "peseta", + '\u338a': "pfsquare", + '\u09ab': "phabengali", + '\u092b': "phadeva", + '\u0aab': "phagujarati", + '\u0a2b': "phagurmukhi", + '\u03c6': "phi", + '\u03d5': "phi1", + '\u327a': "phieuphacirclekorean", + '\u321a': "phieuphaparenkorean", + '\u326c': "phieuphcirclekorean", + '\u314d': "phieuphkorean", + '\u320c': "phieuphparenkorean", + '\u0278': "philatin", + '\u0e3a': "phinthuthai", + // '\u03d5': "phisymbolgreek", // duplicate + '\u01a5': "phook", + '\u0e1e': "phophanthai", + '\u0e1c': "phophungthai", + '\u0e20': "phosamphaothai", + '\u03c0': "pi", + '\u3273': "pieupacirclekorean", + '\u3213': "pieupaparenkorean", + '\u3176': "pieupcieuckorean", + '\u3265': "pieupcirclekorean", + '\u3172': "pieupkiyeokkorean", + '\u3142': "pieupkorean", + '\u3205': "pieupparenkorean", + '\u3174': "pieupsioskiyeokkorean", + '\u3144': "pieupsioskorean", + '\u3175': "pieupsiostikeutkorean", + '\u3177': "pieupthieuthkorean", + '\u3173': "pieuptikeutkorean", + '\u3074': "pihiragana", + '\u30d4': "pikatakana", + // '\u03d6': "pisymbolgreek", // duplicate + '\u0583': "piwrarmenian", + '\u002b': "plus", + '\u031f': "plusbelowcmb", + // '\u2295': "pluscircle", // duplicate + '\u00b1': "plusminus", + '\u02d6': "plusmod", + '\uff0b': "plusmonospace", + '\ufe62': "plussmall", + '\u207a': "plussuperior", + '\uff50': "pmonospace", + '\u33d8': "pmsquare", + '\u307d': "pohiragana", + '\u261f': "pointingindexdownwhite", + '\u261c': "pointingindexleftwhite", + '\u261e': "pointingindexrightwhite", + '\u261d': "pointingindexupwhite", + '\u30dd': "pokatakana", + '\u0e1b': "poplathai", + '\u3012': "postalmark", + '\u3020': "postalmarkface", + '\u24ab': "pparen", + '\u227a': "precedes", + '\u211e': "prescription", + '\u02b9': "primemod", + '\u2035': "primereversed", + '\u220f': "product", + '\u2305': "projective", + '\u30fc': "prolongedkana", + '\u2318': "propellor", + '\u2282': "propersubset", + '\u2283': "propersuperset", + '\u2237': "proportion", + '\u221d': "proportional", + '\u03c8': "psi", + '\u0471': "psicyrillic", + '\u0486': "psilipneumatacyrilliccmb", + '\u33b0': "pssquare", + '\u3077': "puhiragana", + '\u30d7': "pukatakana", + '\u33b4': "pvsquare", + '\u33ba': "pwsquare", + '\u0071': "q", + '\u0958': "qadeva", + '\u05a8': "qadmahebrew", + // '\u0642': "qafarabic", // duplicate + '\ufed6': "qaffinalarabic", + '\ufed7': "qafinitialarabic", + '\ufed8': "qafmedialarabic", + // '\u05b8': "qamats", // duplicate + // '\u05b8': "qamats10", // duplicate + // '\u05b8': "qamats1a", // duplicate + // '\u05b8': "qamats1c", // duplicate + // '\u05b8': "qamats27", // duplicate + // '\u05b8': "qamats29", // duplicate + // '\u05b8': "qamats33", // duplicate + // '\u05b8': "qamatsde", // duplicate + // '\u05b8': "qamatshebrew", // duplicate + // '\u05b8': "qamatsnarrowhebrew", // duplicate + // '\u05b8': "qamatsqatanhebrew", // duplicate + // '\u05b8': "qamatsqatannarrowhebrew", // duplicate + // '\u05b8': "qamatsqatanquarterhebrew", // duplicate + // '\u05b8': "qamatsqatanwidehebrew", // duplicate + // '\u05b8': "qamatsquarterhebrew", // duplicate + // '\u05b8': "qamatswidehebrew", // duplicate + '\u059f': "qarneyparahebrew", + '\u3111': "qbopomofo", + '\u24e0': "qcircle", + '\u02a0': "qhook", + '\uff51': "qmonospace", + // '\u05e7': "qof", // duplicate + '\ufb47': "qofdagesh", + // '\ufb47': "qofdageshhebrew", // duplicate + // '\u05b2': "qofhatafpatah", // duplicate + // '\u05b2': "qofhatafpatahhebrew", // duplicate + // '\u05b1': "qofhatafsegol", // duplicate + // '\u05b1': "qofhatafsegolhebrew", // duplicate + // '\u05e7': "qofhebrew", // duplicate + // '\u05b4': "qofhiriq", // duplicate + // '\u05b4': "qofhiriqhebrew", // duplicate + // '\u05b9': "qofholam", // duplicate + // '\u05b9': "qofholamhebrew", // duplicate + // '\u05b7': "qofpatah", // duplicate + // '\u05b7': "qofpatahhebrew", // duplicate + // '\u05b8': "qofqamats", // duplicate + // '\u05b8': "qofqamatshebrew", // duplicate + // '\u05bb': "qofqubuts", // duplicate + // '\u05bb': "qofqubutshebrew", // duplicate + // '\u05b6': "qofsegol", // duplicate + // '\u05b6': "qofsegolhebrew", // duplicate + // '\u05b0': "qofsheva", // duplicate + // '\u05b0': "qofshevahebrew", // duplicate + // '\u05b5': "qoftsere", // duplicate + // '\u05b5': "qoftserehebrew", // duplicate + '\u24ac': "qparen", + '\u2669': "quarternote", + // '\u05bb': "qubuts", // duplicate + // '\u05bb': "qubuts18", // duplicate + // '\u05bb': "qubuts25", // duplicate + // '\u05bb': "qubuts31", // duplicate + // '\u05bb': "qubutshebrew", // duplicate + // '\u05bb': "qubutsnarrowhebrew", // duplicate + // '\u05bb': "qubutsquarterhebrew", // duplicate + // '\u05bb': "qubutswidehebrew", // duplicate + '\u003f': "question", + // '\u061f': "questionarabic", // duplicate + '\u055e': "questionarmenian", + '\u00bf': "questiondown", + '\uf7bf': "questiondownsmall", + '\u037e': "questiongreek", + '\uff1f': "questionmonospace", + '\uf73f': "questionsmall", + '\u0022': "quotedbl", + '\u201e': "quotedblbase", + '\u201c': "quotedblleft", + '\uff02': "quotedblmonospace", + '\u301e': "quotedblprime", + '\u301d': "quotedblprimereversed", + '\u201d': "quotedblright", + '\u2018': "quoteleft", + '\u201b': "quoteleftreversed", + // '\u201b': "quotereversed", // duplicate + '\u2019': "quoteright", + // '\u0149': "quoterightn", // duplicate + '\u201a': "quotesinglbase", + '\u0027': "quotesingle", + '\uff07': "quotesinglemonospace", + '\u0072': "r", + '\u057c': "raarmenian", + '\u09b0': "rabengali", + '\u0155': "racute", + '\u0930': "radeva", + '\u221a': "radical", + '\uf8e5': "radicalex", + '\u33ae': "radoverssquare", + '\u33af': "radoverssquaredsquare", + '\u33ad': "radsquare", + // '\u05bf': "rafe", // duplicate + // '\u05bf': "rafehebrew", // duplicate + '\u0ab0': "ragujarati", + '\u0a30': "ragurmukhi", + '\u3089': "rahiragana", + '\u30e9': "rakatakana", + '\uff97': "rakatakanahalfwidth", + '\u09f1': "ralowerdiagonalbengali", + '\u09f0': "ramiddlediagonalbengali", + '\u0264': "ramshorn", + '\u2236': "ratio", + '\u3116': "rbopomofo", + '\u0159': "rcaron", + '\u0157': "rcedilla", + '\u24e1': "rcircle", + // '\u0157': "rcommaaccent", // duplicate + '\u0211': "rdblgrave", + '\u1e59': "rdotaccent", + '\u1e5b': "rdotbelow", + '\u1e5d': "rdotbelowmacron", + '\u203b': "referencemark", + '\u2286': "reflexsubset", + '\u2287': "reflexsuperset", + '\u00ae': "registered", + '\uf8e8': "registersans", + '\uf6da': "registerserif", + // '\u0631': "reharabic", // duplicate + '\u0580': "reharmenian", + '\ufeae': "rehfinalarabic", + '\u308c': "rehiragana", + // '\u0644': "rehyehaleflamarabic", // duplicate + '\u30ec': "rekatakana", + '\uff9a': "rekatakanahalfwidth", + // '\u05e8': "resh", // duplicate + '\ufb48': "reshdageshhebrew", + // '\u05b2': "reshhatafpatah", // duplicate + // '\u05b2': "reshhatafpatahhebrew", // duplicate + // '\u05b1': "reshhatafsegol", // duplicate + // '\u05b1': "reshhatafsegolhebrew", // duplicate + // '\u05e8': "reshhebrew", // duplicate + // '\u05b4': "reshhiriq", // duplicate + // '\u05b4': "reshhiriqhebrew", // duplicate + // '\u05b9': "reshholam", // duplicate + // '\u05b9': "reshholamhebrew", // duplicate + // '\u05b7': "reshpatah", // duplicate + // '\u05b7': "reshpatahhebrew", // duplicate + // '\u05b8': "reshqamats", // duplicate + // '\u05b8': "reshqamatshebrew", // duplicate + // '\u05bb': "reshqubuts", // duplicate + // '\u05bb': "reshqubutshebrew", // duplicate + // '\u05b6': "reshsegol", // duplicate + // '\u05b6': "reshsegolhebrew", // duplicate + // '\u05b0': "reshsheva", // duplicate + // '\u05b0': "reshshevahebrew", // duplicate + // '\u05b5': "reshtsere", // duplicate + // '\u05b5': "reshtserehebrew", // duplicate + '\u223d': "reversedtilde", + '\u0597': "reviahebrew", + // '\u0597': "reviamugrashhebrew", // duplicate + // '\u2310': "revlogicalnot", // duplicate + '\u027e': "rfishhook", + '\u027f': "rfishhookreversed", + '\u09dd': "rhabengali", + '\u095d': "rhadeva", + '\u03c1': "rho", + '\u027d': "rhook", + '\u027b': "rhookturned", + '\u02b5': "rhookturnedsuperior", + '\u03f1': "rhosymbolgreek", + '\u02de': "rhotichookmod", + '\u3271': "rieulacirclekorean", + '\u3211': "rieulaparenkorean", + '\u3263': "rieulcirclekorean", + '\u3140': "rieulhieuhkorean", + '\u313a': "rieulkiyeokkorean", + '\u3169': "rieulkiyeoksioskorean", + '\u3139': "rieulkorean", + '\u313b': "rieulmieumkorean", + '\u316c': "rieulpansioskorean", + '\u3203': "rieulparenkorean", + '\u313f': "rieulphieuphkorean", + '\u313c': "rieulpieupkorean", + '\u316b': "rieulpieupsioskorean", + '\u313d': "rieulsioskorean", + '\u313e': "rieulthieuthkorean", + '\u316a': "rieultikeutkorean", + '\u316d': "rieulyeorinhieuhkorean", + // '\u221f': "rightangle", // duplicate + '\u0319': "righttackbelowcmb", + '\u22bf': "righttriangle", + '\u308a': "rihiragana", + '\u30ea': "rikatakana", + '\uff98': "rikatakanahalfwidth", + '\u02da': "ring", + '\u0325': "ringbelowcmb", + '\u030a': "ringcmb", + '\u02bf': "ringhalfleft", + '\u0559': "ringhalfleftarmenian", + '\u031c': "ringhalfleftbelowcmb", + '\u02d3': "ringhalfleftcentered", + '\u02be': "ringhalfright", + '\u0339': "ringhalfrightbelowcmb", + '\u02d2': "ringhalfrightcentered", + '\u0213': "rinvertedbreve", + '\u3351': "rittorusquare", + '\u1e5f': "rlinebelow", + '\u027c': "rlongleg", + '\u027a': "rlonglegturned", + '\uff52': "rmonospace", + '\u308d': "rohiragana", + '\u30ed': "rokatakana", + '\uff9b': "rokatakanahalfwidth", + '\u0e23': "roruathai", + '\u24ad': "rparen", + '\u09dc': "rrabengali", + '\u0931': "rradeva", + '\u0a5c': "rragurmukhi", + // '\u0691': "rreharabic", // duplicate + '\ufb8d': "rrehfinalarabic", + '\u09e0': "rrvocalicbengali", + '\u0960': "rrvocalicdeva", + '\u0ae0': "rrvocalicgujarati", + '\u09c4': "rrvocalicvowelsignbengali", + '\u0944': "rrvocalicvowelsigndeva", + '\u0ac4': "rrvocalicvowelsigngujarati", + '\uf6f1': "rsuperior", + '\u2590': "rtblock", + '\u0279': "rturned", + '\u02b4': "rturnedsuperior", + '\u308b': "ruhiragana", + '\u30eb': "rukatakana", + '\uff99': "rukatakanahalfwidth", + '\u09f2': "rupeemarkbengali", + '\u09f3': "rupeesignbengali", + '\uf6dd': "rupiah", + '\u0e24': "ruthai", + '\u098b': "rvocalicbengali", + '\u090b': "rvocalicdeva", + '\u0a8b': "rvocalicgujarati", + '\u09c3': "rvocalicvowelsignbengali", + '\u0943': "rvocalicvowelsigndeva", + '\u0ac3': "rvocalicvowelsigngujarati", + '\u0073': "s", + '\u09b8': "sabengali", + '\u015b': "sacute", + '\u1e65': "sacutedotaccent", + // '\u0635': "sadarabic", // duplicate + '\u0938': "sadeva", + '\ufeba': "sadfinalarabic", + '\ufebb': "sadinitialarabic", + '\ufebc': "sadmedialarabic", + '\u0ab8': "sagujarati", + '\u0a38': "sagurmukhi", + '\u3055': "sahiragana", + '\u30b5': "sakatakana", + '\uff7b': "sakatakanahalfwidth", + '\ufdfa': "sallallahoualayhewasallamarabic", + // '\u05e1': "samekh", // duplicate + '\ufb41': "samekhdagesh", + // '\ufb41': "samekhdageshhebrew", // duplicate + // '\u05e1': "samekhhebrew", // duplicate + '\u0e32': "saraaathai", + '\u0e41': "saraaethai", + '\u0e44': "saraaimaimalaithai", + '\u0e43': "saraaimaimuanthai", + '\u0e33': "saraamthai", + '\u0e30': "saraathai", + '\u0e40': "saraethai", + '\uf886': "saraiileftthai", + '\u0e35': "saraiithai", + '\uf885': "saraileftthai", + '\u0e34': "saraithai", + '\u0e42': "saraothai", + '\uf888': "saraueeleftthai", + '\u0e37': "saraueethai", + '\uf887': "saraueleftthai", + '\u0e36': "sarauethai", + '\u0e38': "sarauthai", + '\u0e39': "sarauuthai", + '\u3119': "sbopomofo", + '\u0161': "scaron", + '\u1e67': "scarondotaccent", + '\u015f': "scedilla", + '\u0259': "schwa", + // '\u04d9': "schwacyrillic", // duplicate + '\u04db': "schwadieresiscyrillic", + '\u025a': "schwahook", + '\u24e2': "scircle", + '\u015d': "scircumflex", + '\u0219': "scommaaccent", + '\u1e61': "sdotaccent", + '\u1e63': "sdotbelow", + '\u1e69': "sdotbelowdotaccent", + '\u033c': "seagullbelowcmb", + '\u2033': "second", + '\u02ca': "secondtonechinese", + '\u00a7': "section", + // '\u0633': "seenarabic", // duplicate + '\ufeb2': "seenfinalarabic", + '\ufeb3': "seeninitialarabic", + '\ufeb4': "seenmedialarabic", + // '\u05b6': "segol", // duplicate + // '\u05b6': "segol13", // duplicate + // '\u05b6': "segol1f", // duplicate + // '\u05b6': "segol2c", // duplicate + // '\u05b6': "segolhebrew", // duplicate + // '\u05b6': "segolnarrowhebrew", // duplicate + // '\u05b6': "segolquarterhebrew", // duplicate + '\u0592': "segoltahebrew", + // '\u05b6': "segolwidehebrew", // duplicate + '\u057d': "seharmenian", + '\u305b': "sehiragana", + '\u30bb': "sekatakana", + '\uff7e': "sekatakanahalfwidth", + '\u003b': "semicolon", + // '\u061b': "semicolonarabic", // duplicate + '\uff1b': "semicolonmonospace", + '\ufe54': "semicolonsmall", + '\u309c': "semivoicedmarkkana", + '\uff9f': "semivoicedmarkkanahalfwidth", + '\u3322': "sentisquare", + '\u3323': "sentosquare", + '\u0037': "seven", + // '\u0667': "sevenarabic", // duplicate + '\u09ed': "sevenbengali", + '\u2466': "sevencircle", + '\u2790': "sevencircleinversesansserif", + '\u096d': "sevendeva", + '\u215e': "seveneighths", + '\u0aed': "sevengujarati", + '\u0a6d': "sevengurmukhi", + // '\u0667': "sevenhackarabic", // duplicate + '\u3027': "sevenhangzhou", + '\u3226': "sevenideographicparen", + '\u2087': "seveninferior", + '\uff17': "sevenmonospace", + '\uf737': "sevenoldstyle", + '\u247a': "sevenparen", + '\u248e': "sevenperiod", + '\u06f7': "sevenpersian", + '\u2176': "sevenroman", + '\u2077': "sevensuperior", + '\u2470': "seventeencircle", + '\u2484': "seventeenparen", + '\u2498': "seventeenperiod", + '\u0e57': "seventhai", + '\u00ad': "sfthyphen", + '\u0577': "shaarmenian", + '\u09b6': "shabengali", + // '\u0448': "shacyrillic", // duplicate + // '\u0651': "shaddaarabic", // duplicate + '\ufc61': "shaddadammaarabic", + '\ufc5e': "shaddadammatanarabic", + '\ufc60': "shaddafathaarabic", + // '\u064b': "shaddafathatanarabic", // duplicate + '\ufc62': "shaddakasraarabic", + '\ufc5f': "shaddakasratanarabic", + '\u2592': "shade", + // '\u2593': "shadedark", // duplicate + // '\u2591': "shadelight", // duplicate + // '\u2592': "shademedium", // duplicate + '\u0936': "shadeva", + '\u0ab6': "shagujarati", + '\u0a36': "shagurmukhi", + '\u0593': "shalshelethebrew", + '\u3115': "shbopomofo", + // '\u0449': "shchacyrillic", // duplicate + // '\u0634': "sheenarabic", // duplicate + '\ufeb6': "sheenfinalarabic", + '\ufeb7': "sheeninitialarabic", + '\ufeb8': "sheenmedialarabic", + '\u03e3': "sheicoptic", + // '\u20aa': "sheqel", // duplicate + // '\u20aa': "sheqelhebrew", // duplicate + // '\u05b0': "sheva", // duplicate + // '\u05b0': "sheva115", // duplicate + // '\u05b0': "sheva15", // duplicate + // '\u05b0': "sheva22", // duplicate + // '\u05b0': "sheva2e", // duplicate + // '\u05b0': "shevahebrew", // duplicate + // '\u05b0': "shevanarrowhebrew", // duplicate + // '\u05b0': "shevaquarterhebrew", // duplicate + // '\u05b0': "shevawidehebrew", // duplicate + '\u04bb': "shhacyrillic", + '\u03ed': "shimacoptic", + // '\u05e9': "shin", // duplicate + '\ufb49': "shindagesh", + // '\ufb49': "shindageshhebrew", // duplicate + '\ufb2c': "shindageshshindot", + // '\ufb2c': "shindageshshindothebrew", // duplicate + '\ufb2d': "shindageshsindot", + // '\ufb2d': "shindageshsindothebrew", // duplicate + // '\u05c1': "shindothebrew", // duplicate + // '\u05e9': "shinhebrew", // duplicate + // '\ufb2a': "shinshindot", // duplicate + // '\ufb2a': "shinshindothebrew", // duplicate + // '\ufb2b': "shinsindot", // duplicate + // '\ufb2b': "shinsindothebrew", // duplicate + '\u0282': "shook", + '\u03c3': "sigma", + '\u03c2': "sigma1", + // '\u03c2': "sigmafinal", // duplicate + '\u03f2': "sigmalunatesymbolgreek", + '\u3057': "sihiragana", + '\u30b7': "sikatakana", + '\uff7c': "sikatakanahalfwidth", + // '\u05bd': "siluqhebrew", // duplicate + // '\u05bd': "siluqlefthebrew", // duplicate + '\u223c': "similar", + // '\u05c2': "sindothebrew", // duplicate + '\u3274': "siosacirclekorean", + '\u3214': "siosaparenkorean", + '\u317e': "sioscieuckorean", + '\u3266': "sioscirclekorean", + '\u317a': "sioskiyeokkorean", + '\u3145': "sioskorean", + '\u317b': "siosnieunkorean", + '\u3206': "siosparenkorean", + '\u317d': "siospieupkorean", + '\u317c': "siostikeutkorean", + '\u0036': "six", + // '\u0666': "sixarabic", // duplicate + '\u09ec': "sixbengali", + '\u2465': "sixcircle", + '\u278f': "sixcircleinversesansserif", + '\u096c': "sixdeva", + '\u0aec': "sixgujarati", + '\u0a6c': "sixgurmukhi", + // '\u0666': "sixhackarabic", // duplicate + '\u3026': "sixhangzhou", + '\u3225': "sixideographicparen", + '\u2086': "sixinferior", + '\uff16': "sixmonospace", + '\uf736': "sixoldstyle", + '\u2479': "sixparen", + '\u248d': "sixperiod", + '\u06f6': "sixpersian", + '\u2175': "sixroman", + '\u2076': "sixsuperior", + '\u246f': "sixteencircle", + '\u09f9': "sixteencurrencydenominatorbengali", + '\u2483': "sixteenparen", + '\u2497': "sixteenperiod", + '\u0e56': "sixthai", + '\u002f': "slash", + '\uff0f': "slashmonospace", + // '\u017f': "slong", // duplicate + '\u1e9b': "slongdotaccent", + '\u263a': "smileface", + '\uff53': "smonospace", + // '\u05c3': "sofpasuqhebrew", // duplicate + // '\u00ad': "softhyphen", // duplicate + // '\u044c': "softsigncyrillic", // duplicate + '\u305d': "sohiragana", + '\u30bd': "sokatakana", + '\uff7f': "sokatakanahalfwidth", + '\u0338': "soliduslongoverlaycmb", + '\u0337': "solidusshortoverlaycmb", + '\u0e29': "sorusithai", + '\u0e28': "sosalathai", + '\u0e0b': "sosothai", + '\u0e2a': "sosuathai", + '\u0020': "space", + // '\u0020': "spacehackarabic", // duplicate + '\u2660': "spade", + // '\u2660': "spadesuitblack", // duplicate + '\u2664': "spadesuitwhite", + '\u24ae': "sparen", + '\u033b': "squarebelowcmb", + '\u33c4': "squarecc", + '\u339d': "squarecm", + '\u25a9': "squarediagonalcrosshatchfill", + '\u25a4': "squarehorizontalfill", + '\u338f': "squarekg", + '\u339e': "squarekm", + '\u33ce': "squarekmcapital", + '\u33d1': "squareln", + '\u33d2': "squarelog", + '\u338e': "squaremg", + '\u33d5': "squaremil", + '\u339c': "squaremm", + '\u33a1': "squaremsquared", + '\u25a6': "squareorthogonalcrosshatchfill", + '\u25a7': "squareupperlefttolowerrightfill", + '\u25a8': "squareupperrighttolowerleftfill", + '\u25a5': "squareverticalfill", + '\u25a3': "squarewhitewithsmallblack", + '\u33db': "srsquare", + '\u09b7': "ssabengali", + '\u0937': "ssadeva", + '\u0ab7': "ssagujarati", + '\u3149': "ssangcieuckorean", + '\u3185': "ssanghieuhkorean", + '\u3180': "ssangieungkorean", + '\u3132': "ssangkiyeokkorean", + '\u3165': "ssangnieunkorean", + '\u3143': "ssangpieupkorean", + '\u3146': "ssangsioskorean", + '\u3138': "ssangtikeutkorean", + '\uf6f2': "ssuperior", + '\u00a3': "sterling", + '\uffe1': "sterlingmonospace", + '\u0336': "strokelongoverlaycmb", + '\u0335': "strokeshortoverlaycmb", + // '\u2282': "subset", // duplicate + '\u228a': "subsetnotequal", + // '\u2286': "subsetorequal", // duplicate + '\u227b': "succeeds", + '\u220b': "suchthat", + '\u3059': "suhiragana", + '\u30b9': "sukatakana", + '\uff7d': "sukatakanahalfwidth", + // '\u0652': "sukunarabic", // duplicate + '\u2211': "summation", + // '\u263c': "sun", // duplicate + // '\u2283': "superset", // duplicate + '\u228b': "supersetnotequal", + // '\u2287': "supersetorequal", // duplicate + '\u33dc': "svsquare", + '\u337c': "syouwaerasquare", + '\u0074': "t", + '\u09a4': "tabengali", + '\u22a4': "tackdown", + '\u22a3': "tackleft", + '\u0924': "tadeva", + '\u0aa4': "tagujarati", + '\u0a24': "tagurmukhi", + // '\u0637': "taharabic", // duplicate + '\ufec2': "tahfinalarabic", + '\ufec3': "tahinitialarabic", + '\u305f': "tahiragana", + '\ufec4': "tahmedialarabic", + '\u337d': "taisyouerasquare", + '\u30bf': "takatakana", + '\uff80': "takatakanahalfwidth", + // '\u0640': "tatweelarabic", // duplicate + '\u03c4': "tau", + // '\u05ea': "tav", // duplicate + '\ufb4a': "tavdages", + // '\ufb4a': "tavdagesh", // duplicate + // '\ufb4a': "tavdageshhebrew", // duplicate + // '\u05ea': "tavhebrew", // duplicate + '\u0167': "tbar", + '\u310a': "tbopomofo", + '\u0165': "tcaron", + '\u02a8': "tccurl", + '\u0163': "tcedilla", + // '\u0686': "tcheharabic", // duplicate + '\ufb7b': "tchehfinalarabic", + '\ufb7c': "tchehinitialarabic", + '\ufb7d': "tchehmedialarabic", + // '\ufee4': "tchehmeeminitialarabic", // duplicate + '\u24e3': "tcircle", + '\u1e71': "tcircumflexbelow", + // '\u0163': "tcommaaccent", // duplicate + '\u1e97': "tdieresis", + '\u1e6b': "tdotaccent", + '\u1e6d': "tdotbelow", + // '\u0442': "tecyrillic", // duplicate + '\u04ad': "tedescendercyrillic", + // '\u062a': "teharabic", // duplicate + '\ufe96': "tehfinalarabic", + '\ufca2': "tehhahinitialarabic", + '\ufc0c': "tehhahisolatedarabic", + '\ufe97': "tehinitialarabic", + '\u3066': "tehiragana", + '\ufca1': "tehjeeminitialarabic", + '\ufc0b': "tehjeemisolatedarabic", + // '\u0629': "tehmarbutaarabic", // duplicate + '\ufe94': "tehmarbutafinalarabic", + '\ufe98': "tehmedialarabic", + '\ufca4': "tehmeeminitialarabic", + '\ufc0e': "tehmeemisolatedarabic", + '\ufc73': "tehnoonfinalarabic", + '\u30c6': "tekatakana", + '\uff83': "tekatakanahalfwidth", + '\u2121': "telephone", + '\u260e': "telephoneblack", + '\u05a0': "telishagedolahebrew", + '\u05a9': "telishaqetanahebrew", + '\u2469': "tencircle", + '\u3229': "tenideographicparen", + '\u247d': "tenparen", + '\u2491': "tenperiod", + '\u2179': "tenroman", + '\u02a7': "tesh", + // '\u05d8': "tet", // duplicate + '\ufb38': "tetdagesh", + // '\ufb38': "tetdageshhebrew", // duplicate + // '\u05d8': "tethebrew", // duplicate + '\u04b5': "tetsecyrillic", + '\u059b': "tevirhebrew", + // '\u059b': "tevirlefthebrew", // duplicate + '\u09a5': "thabengali", + '\u0925': "thadeva", + '\u0aa5': "thagujarati", + '\u0a25': "thagurmukhi", + // '\u0630': "thalarabic", // duplicate + '\ufeac': "thalfinalarabic", + '\uf898': "thanthakhatlowleftthai", + '\uf897': "thanthakhatlowrightthai", + '\u0e4c': "thanthakhatthai", + '\uf896': "thanthakhatupperleftthai", + // '\u062b': "theharabic", // duplicate + '\ufe9a': "thehfinalarabic", + '\ufe9b': "thehinitialarabic", + '\ufe9c': "thehmedialarabic", + // '\u2203': "thereexists", // duplicate + '\u2234': "therefore", + '\u03b8': "theta", + '\u03d1': "theta1", + // '\u03d1': "thetasymbolgreek", // duplicate + '\u3279': "thieuthacirclekorean", + '\u3219': "thieuthaparenkorean", + '\u326b': "thieuthcirclekorean", + '\u314c': "thieuthkorean", + '\u320b': "thieuthparenkorean", + '\u246c': "thirteencircle", + '\u2480': "thirteenparen", + '\u2494': "thirteenperiod", + '\u0e11': "thonangmonthothai", + '\u01ad': "thook", + '\u0e12': "thophuthaothai", + '\u00fe': "thorn", + '\u0e17': "thothahanthai", + '\u0e10': "thothanthai", + '\u0e18': "thothongthai", + '\u0e16': "thothungthai", + '\u0482': "thousandcyrillic", + '\u066c': "thousandsseparatorarabic", + // '\u066c': "thousandsseparatorpersian", // duplicate + '\u0033': "three", + // '\u0663': "threearabic", // duplicate + '\u09e9': "threebengali", + '\u2462': "threecircle", + '\u278c': "threecircleinversesansserif", + '\u0969': "threedeva", + '\u215c': "threeeighths", + '\u0ae9': "threegujarati", + '\u0a69': "threegurmukhi", + // '\u0663': "threehackarabic", // duplicate + '\u3023': "threehangzhou", + '\u3222': "threeideographicparen", + '\u2083': "threeinferior", + '\uff13': "threemonospace", + '\u09f6': "threenumeratorbengali", + '\uf733': "threeoldstyle", + '\u2476': "threeparen", + '\u248a': "threeperiod", + '\u06f3': "threepersian", + '\u00be': "threequarters", + '\uf6de': "threequartersemdash", + '\u2172': "threeroman", + '\u00b3': "threesuperior", + '\u0e53': "threethai", + '\u3394': "thzsquare", + '\u3061': "tihiragana", + '\u30c1': "tikatakana", + '\uff81': "tikatakanahalfwidth", + '\u3270': "tikeutacirclekorean", + '\u3210': "tikeutaparenkorean", + '\u3262': "tikeutcirclekorean", + '\u3137': "tikeutkorean", + '\u3202': "tikeutparenkorean", + // '\u02dc': "tilde", // duplicate + '\u0330': "tildebelowcmb", + '\u0303': "tildecmb", + // '\u0303': "tildecomb", // duplicate + '\u0360': "tildedoublecmb", + // '\u223c': "tildeoperator", // duplicate + '\u0334': "tildeoverlaycmb", + '\u033e': "tildeverticalcmb", + // '\u2297': "timescircle", // duplicate + '\u0596': "tipehahebrew", + // '\u0596': "tipehalefthebrew", // duplicate + '\u0a70': "tippigurmukhi", + '\u0483': "titlocyrilliccmb", + '\u057f': "tiwnarmenian", + '\u1e6f': "tlinebelow", + '\uff54': "tmonospace", + '\u0569': "toarmenian", + '\u3068': "tohiragana", + '\u30c8': "tokatakana", + '\uff84': "tokatakanahalfwidth", + '\u02e5': "tonebarextrahighmod", + '\u02e9': "tonebarextralowmod", + '\u02e6': "tonebarhighmod", + '\u02e8': "tonebarlowmod", + '\u02e7': "tonebarmidmod", + '\u01bd': "tonefive", + '\u0185': "tonesix", + '\u01a8': "tonetwo", + '\u0384': "tonos", + '\u3327': "tonsquare", + '\u0e0f': "topatakthai", + '\u3014': "tortoiseshellbracketleft", + '\ufe5d': "tortoiseshellbracketleftsmall", + '\ufe39': "tortoiseshellbracketleftvertical", + '\u3015': "tortoiseshellbracketright", + '\ufe5e': "tortoiseshellbracketrightsmall", + '\ufe3a': "tortoiseshellbracketrightvertical", + '\u0e15': "totaothai", + '\u01ab': "tpalatalhook", + '\u24af': "tparen", + '\u2122': "trademark", + '\uf8ea': "trademarksans", + '\uf6db': "trademarkserif", + '\u0288': "tretroflexhook", + // '\u25bc': "triagdn", // duplicate + // '\u25c4': "triaglf", // duplicate + // '\u25ba': "triagrt", // duplicate + // '\u25b2': "triagup", // duplicate + '\u02a6': "ts", + // '\u05e6': "tsadi", // duplicate + '\ufb46': "tsadidagesh", + // '\ufb46': "tsadidageshhebrew", // duplicate + // '\u05e6': "tsadihebrew", // duplicate + // '\u0446': "tsecyrillic", // duplicate + // '\u05b5': "tsere", // duplicate + // '\u05b5': "tsere12", // duplicate + // '\u05b5': "tsere1e", // duplicate + // '\u05b5': "tsere2b", // duplicate + // '\u05b5': "tserehebrew", // duplicate + // '\u05b5': "tserenarrowhebrew", // duplicate + // '\u05b5': "tserequarterhebrew", // duplicate + // '\u05b5': "tserewidehebrew", // duplicate + // '\u045b': "tshecyrillic", // duplicate + '\uf6f3': "tsuperior", + '\u099f': "ttabengali", + '\u091f': "ttadeva", + '\u0a9f': "ttagujarati", + '\u0a1f': "ttagurmukhi", + // '\u0679': "tteharabic", // duplicate + '\ufb67': "ttehfinalarabic", + '\ufb68': "ttehinitialarabic", + '\ufb69': "ttehmedialarabic", + '\u09a0': "tthabengali", + '\u0920': "tthadeva", + '\u0aa0': "tthagujarati", + '\u0a20': "tthagurmukhi", + '\u0287': "tturned", + '\u3064': "tuhiragana", + '\u30c4': "tukatakana", + '\uff82': "tukatakanahalfwidth", + '\u3063': "tusmallhiragana", + '\u30c3': "tusmallkatakana", + '\uff6f': "tusmallkatakanahalfwidth", + '\u246b': "twelvecircle", + '\u247f': "twelveparen", + '\u2493': "twelveperiod", + '\u217b': "twelveroman", + '\u2473': "twentycircle", + '\u5344': "twentyhangzhou", + '\u2487': "twentyparen", + '\u249b': "twentyperiod", + '\u0032': "two", + // '\u0662': "twoarabic", // duplicate + '\u09e8': "twobengali", + '\u2461': "twocircle", + '\u278b': "twocircleinversesansserif", + '\u0968': "twodeva", + '\u2025': "twodotenleader", + // '\u2025': "twodotleader", // duplicate + '\ufe30': "twodotleadervertical", + '\u0ae8': "twogujarati", + '\u0a68': "twogurmukhi", + // '\u0662': "twohackarabic", // duplicate + '\u3022': "twohangzhou", + '\u3221': "twoideographicparen", + '\u2082': "twoinferior", + '\uff12': "twomonospace", + '\u09f5': "twonumeratorbengali", + '\uf732': "twooldstyle", + '\u2475': "twoparen", + '\u2489': "twoperiod", + '\u06f2': "twopersian", + '\u2171': "tworoman", + '\u01bb': "twostroke", + '\u00b2': "twosuperior", + '\u0e52': "twothai", + '\u2154': "twothirds", + '\u0075': "u", + '\u00fa': "uacute", + '\u0289': "ubar", + '\u0989': "ubengali", + '\u3128': "ubopomofo", + '\u016d': "ubreve", + '\u01d4': "ucaron", + '\u24e4': "ucircle", + '\u00fb': "ucircumflex", + '\u1e77': "ucircumflexbelow", + // '\u0443': "ucyrillic", // duplicate + '\u0951': "udattadeva", + '\u0171': "udblacute", + '\u0215': "udblgrave", + '\u0909': "udeva", + '\u00fc': "udieresis", + '\u01d8': "udieresisacute", + '\u1e73': "udieresisbelow", + '\u01da': "udieresiscaron", + '\u04f1': "udieresiscyrillic", + '\u01dc': "udieresisgrave", + '\u01d6': "udieresismacron", + '\u1ee5': "udotbelow", + '\u00f9': "ugrave", + '\u0a89': "ugujarati", + '\u0a09': "ugurmukhi", + '\u3046': "uhiragana", + '\u1ee7': "uhookabove", + '\u01b0': "uhorn", + '\u1ee9': "uhornacute", + '\u1ef1': "uhorndotbelow", + '\u1eeb': "uhorngrave", + '\u1eed': "uhornhookabove", + '\u1eef': "uhorntilde", + // '\u0171': "uhungarumlaut", // duplicate + '\u04f3': "uhungarumlautcyrillic", + '\u0217': "uinvertedbreve", + '\u30a6': "ukatakana", + '\uff73': "ukatakanahalfwidth", + '\u0479': "ukcyrillic", + '\u315c': "ukorean", + '\u016b': "umacron", + '\u04ef': "umacroncyrillic", + '\u1e7b': "umacrondieresis", + '\u0a41': "umatragurmukhi", + '\uff55': "umonospace", + '\u005f': "underscore", + // '\u2017': "underscoredbl", // duplicate + '\uff3f': "underscoremonospace", + '\ufe33': "underscorevertical", + '\ufe4f': "underscorewavy", + '\u222a': "union", + // '\u2200': "universal", // duplicate + '\u0173': "uogonek", + '\u24b0': "uparen", + '\u2580': "upblock", + '\u05c4': "upperdothebrew", + '\u03c5': "upsilon", + '\u03cb': "upsilondieresis", + '\u03b0': "upsilondieresistonos", + '\u028a': "upsilonlatin", + '\u03cd': "upsilontonos", + '\u031d': "uptackbelowcmb", + '\u02d4': "uptackmod", + '\u0a73': "uragurmukhi", + '\u016f': "uring", + // '\u045e': "ushortcyrillic", // duplicate + '\u3045': "usmallhiragana", + '\u30a5': "usmallkatakana", + '\uff69': "usmallkatakanahalfwidth", + '\u04af': "ustraightcyrillic", + '\u04b1': "ustraightstrokecyrillic", + '\u0169': "utilde", + '\u1e79': "utildeacute", + '\u1e75': "utildebelow", + '\u098a': "uubengali", + '\u090a': "uudeva", + '\u0a8a': "uugujarati", + '\u0a0a': "uugurmukhi", + '\u0a42': "uumatragurmukhi", + '\u09c2': "uuvowelsignbengali", + '\u0942': "uuvowelsigndeva", + '\u0ac2': "uuvowelsigngujarati", + '\u09c1': "uvowelsignbengali", + '\u0941': "uvowelsigndeva", + '\u0ac1': "uvowelsigngujarati", + '\u0076': "v", + '\u0935': "vadeva", + '\u0ab5': "vagujarati", + '\u0a35': "vagurmukhi", + '\u30f7': "vakatakana", + // '\u05d5': "vav", // duplicate + // '\ufb35': "vavdagesh", // duplicate + // '\ufb35': "vavdagesh65", // duplicate + // '\ufb35': "vavdageshhebrew", // duplicate + // '\u05d5': "vavhebrew", // duplicate + // '\ufb4b': "vavholam", // duplicate + // '\ufb4b': "vavholamhebrew", // duplicate + // '\u05f0': "vavvavhebrew", // duplicate + // '\u05f1': "vavyodhebrew", // duplicate + '\u24e5': "vcircle", + '\u1e7f': "vdotbelow", + // '\u0432': "vecyrillic", // duplicate + // '\u06a4': "veharabic", // duplicate + '\ufb6b': "vehfinalarabic", + '\ufb6c': "vehinitialarabic", + '\ufb6d': "vehmedialarabic", + '\u30f9': "vekatakana", + // '\u2640': "venus", // duplicate + // '\u007c': "verticalbar", // duplicate + '\u030d': "verticallineabovecmb", + '\u0329': "verticallinebelowcmb", + '\u02cc': "verticallinelowmod", + '\u02c8': "verticallinemod", + '\u057e': "vewarmenian", + '\u028b': "vhook", + '\u30f8': "vikatakana", + '\u09cd': "viramabengali", + '\u094d': "viramadeva", + '\u0acd': "viramagujarati", + '\u0983': "visargabengali", + '\u0903': "visargadeva", + '\u0a83': "visargagujarati", + '\uff56': "vmonospace", + '\u0578': "voarmenian", + '\u309e': "voicediterationhiragana", + '\u30fe': "voicediterationkatakana", + '\u309b': "voicedmarkkana", + '\uff9e': "voicedmarkkanahalfwidth", + '\u30fa': "vokatakana", + '\u24b1': "vparen", + '\u1e7d': "vtilde", + '\u028c': "vturned", + '\u3094': "vuhiragana", + '\u30f4': "vukatakana", + '\u0077': "w", + '\u1e83': "wacute", + '\u3159': "waekorean", + '\u308f': "wahiragana", + '\u30ef': "wakatakana", + '\uff9c': "wakatakanahalfwidth", + '\u3158': "wakorean", + '\u308e': "wasmallhiragana", + '\u30ee': "wasmallkatakana", + '\u3357': "wattosquare", + '\u301c': "wavedash", + '\ufe34': "wavyunderscorevertical", + // '\u0648': "wawarabic", // duplicate + '\ufeee': "wawfinalarabic", + // '\u0624': "wawhamzaabovearabic", // duplicate + '\ufe86': "wawhamzaabovefinalarabic", + '\u33dd': "wbsquare", + '\u24e6': "wcircle", + '\u0175': "wcircumflex", + '\u1e85': "wdieresis", + '\u1e87': "wdotaccent", + '\u1e89': "wdotbelow", + '\u3091': "wehiragana", + '\u2118': "weierstrass", + '\u30f1': "wekatakana", + '\u315e': "wekorean", + '\u315d': "weokorean", + '\u1e81': "wgrave", + // '\u25e6': "whitebullet", // duplicate + // '\u25cb': "whitecircle", // duplicate + // '\u25d9': "whitecircleinverse", // duplicate + '\u300e': "whitecornerbracketleft", + '\ufe43': "whitecornerbracketleftvertical", + '\u300f': "whitecornerbracketright", + '\ufe44': "whitecornerbracketrightvertical", + '\u25c7': "whitediamond", + '\u25c8': "whitediamondcontainingblacksmalldiamond", + '\u25bf': "whitedownpointingsmalltriangle", + '\u25bd': "whitedownpointingtriangle", + '\u25c3': "whiteleftpointingsmalltriangle", + '\u25c1': "whiteleftpointingtriangle", + '\u3016': "whitelenticularbracketleft", + '\u3017': "whitelenticularbracketright", + '\u25b9': "whiterightpointingsmalltriangle", + '\u25b7': "whiterightpointingtriangle", + // '\u25ab': "whitesmallsquare", // duplicate + // '\u263a': "whitesmilingface", // duplicate + // '\u25a1': "whitesquare", // duplicate + '\u2606': "whitestar", + '\u260f': "whitetelephone", + '\u3018': "whitetortoiseshellbracketleft", + '\u3019': "whitetortoiseshellbracketright", + '\u25b5': "whiteuppointingsmalltriangle", + '\u25b3': "whiteuppointingtriangle", + '\u3090': "wihiragana", + '\u30f0': "wikatakana", + '\u315f': "wikorean", + '\uff57': "wmonospace", + '\u3092': "wohiragana", + '\u30f2': "wokatakana", + '\uff66': "wokatakanahalfwidth", + '\u20a9': "won", + '\uffe6': "wonmonospace", + '\u0e27': "wowaenthai", + '\u24b2': "wparen", + '\u1e98': "wring", + '\u02b7': "wsuperior", + '\u028d': "wturned", + '\u01bf': "wynn", + '\u0078': "x", + '\u033d': "xabovecmb", + '\u3112': "xbopomofo", + '\u24e7': "xcircle", + '\u1e8d': "xdieresis", + '\u1e8b': "xdotaccent", + '\u056d': "xeharmenian", + '\u03be': "xi", + '\uff58': "xmonospace", + '\u24b3': "xparen", + '\u02e3': "xsuperior", + '\u0079': "y", + '\u334e': "yaadosquare", + '\u09af': "yabengali", + '\u00fd': "yacute", + '\u092f': "yadeva", + '\u3152': "yaekorean", + '\u0aaf': "yagujarati", + '\u0a2f': "yagurmukhi", + '\u3084': "yahiragana", + '\u30e4': "yakatakana", + '\uff94': "yakatakanahalfwidth", + '\u3151': "yakorean", + '\u0e4e': "yamakkanthai", + '\u3083': "yasmallhiragana", + '\u30e3': "yasmallkatakana", + '\uff6c': "yasmallkatakanahalfwidth", + // '\u0463': "yatcyrillic", // duplicate + '\u24e8': "ycircle", + '\u0177': "ycircumflex", + '\u00ff': "ydieresis", + '\u1e8f': "ydotaccent", + '\u1ef5': "ydotbelow", + // '\u064a': "yeharabic", // duplicate + // '\u06d2': "yehbarreearabic", // duplicate + '\ufbaf': "yehbarreefinalarabic", + '\ufef2': "yehfinalarabic", + // '\u0626': "yehhamzaabovearabic", // duplicate + '\ufe8a': "yehhamzaabovefinalarabic", + '\ufe8b': "yehhamzaaboveinitialarabic", + '\ufe8c': "yehhamzaabovemedialarabic", + // '\ufef3': "yehinitialarabic", // duplicate + // '\ufef4': "yehmedialarabic", // duplicate + '\ufcdd': "yehmeeminitialarabic", + '\ufc58': "yehmeemisolatedarabic", + '\ufc94': "yehnoonfinalarabic", + '\u06d1': "yehthreedotsbelowarabic", + '\u3156': "yekorean", + '\u00a5': "yen", + '\uffe5': "yenmonospace", + '\u3155': "yeokorean", + '\u3186': "yeorinhieuhkorean", + '\u05aa': "yerahbenyomohebrew", + // '\u05aa': "yerahbenyomolefthebrew", // duplicate + // '\u044b': "yericyrillic", // duplicate + '\u04f9': "yerudieresiscyrillic", + '\u3181': "yesieungkorean", + '\u3183': "yesieungpansioskorean", + '\u3182': "yesieungsioskorean", + '\u059a': "yetivhebrew", + '\u1ef3': "ygrave", + '\u01b4': "yhook", + '\u1ef7': "yhookabove", + '\u0575': "yiarmenian", + // '\u0457': "yicyrillic", // duplicate + '\u3162': "yikorean", + '\u262f': "yinyang", + '\u0582': "yiwnarmenian", + '\uff59': "ymonospace", + // '\u05d9': "yod", // duplicate + '\ufb39': "yoddagesh", + // '\ufb39': "yoddageshhebrew", // duplicate + // '\u05d9': "yodhebrew", // duplicate + // '\u05f2': "yodyodhebrew", // duplicate + // '\ufb1f': "yodyodpatahhebrew", // duplicate + '\u3088': "yohiragana", + '\u3189': "yoikorean", + '\u30e8': "yokatakana", + '\uff96': "yokatakanahalfwidth", + '\u315b': "yokorean", + '\u3087': "yosmallhiragana", + '\u30e7': "yosmallkatakana", + '\uff6e': "yosmallkatakanahalfwidth", + '\u03f3': "yotgreek", + '\u3188': "yoyaekorean", + '\u3187': "yoyakorean", + '\u0e22': "yoyakthai", + '\u0e0d': "yoyingthai", + '\u24b4': "yparen", + '\u037a': "ypogegrammeni", + '\u0345': "ypogegrammenigreekcmb", + '\u01a6': "yr", + '\u1e99': "yring", + '\u02b8': "ysuperior", + '\u1ef9': "ytilde", + '\u028e': "yturned", + '\u3086': "yuhiragana", + '\u318c': "yuikorean", + '\u30e6': "yukatakana", + '\uff95': "yukatakanahalfwidth", + '\u3160': "yukorean", + '\u046b': "yusbigcyrillic", + '\u046d': "yusbigiotifiedcyrillic", + '\u0467': "yuslittlecyrillic", + '\u0469': "yuslittleiotifiedcyrillic", + '\u3085': "yusmallhiragana", + '\u30e5': "yusmallkatakana", + '\uff6d': "yusmallkatakanahalfwidth", + '\u318b': "yuyekorean", + '\u318a': "yuyeokorean", + '\u09df': "yyabengali", + '\u095f': "yyadeva", + '\u007a': "z", + '\u0566': "zaarmenian", + '\u017a': "zacute", + '\u095b': "zadeva", + '\u0a5b': "zagurmukhi", + // '\u0638': "zaharabic", // duplicate + '\ufec6': "zahfinalarabic", + '\ufec7': "zahinitialarabic", + '\u3056': "zahiragana", + '\ufec8': "zahmedialarabic", + // '\u0632': "zainarabic", // duplicate + '\ufeb0': "zainfinalarabic", + '\u30b6': "zakatakana", + '\u0595': "zaqefgadolhebrew", + '\u0594': "zaqefqatanhebrew", + '\u0598': "zarqahebrew", + // '\u05d6': "zayin", // duplicate + '\ufb36': "zayindagesh", + // '\ufb36': "zayindageshhebrew", // duplicate + // '\u05d6': "zayinhebrew", // duplicate + '\u3117': "zbopomofo", + '\u017e': "zcaron", + '\u24e9': "zcircle", + '\u1e91': "zcircumflex", + '\u0291': "zcurl", + '\u017c': "zdot", + // '\u017c': "zdotaccent", // duplicate + '\u1e93': "zdotbelow", + // '\u0437': "zecyrillic", // duplicate + '\u0499': "zedescendercyrillic", + '\u04df': "zedieresiscyrillic", + '\u305c': "zehiragana", + '\u30bc': "zekatakana", + '\u0030': "zero", + // '\u0660': "zeroarabic", // duplicate + '\u09e6': "zerobengali", + '\u0966': "zerodeva", + '\u0ae6': "zerogujarati", + '\u0a66': "zerogurmukhi", + // '\u0660': "zerohackarabic", // duplicate + '\u2080': "zeroinferior", + '\uff10': "zeromonospace", + '\uf730': "zerooldstyle", + '\u06f0': "zeropersian", + '\u2070': "zerosuperior", + '\u0e50': "zerothai", + '\ufeff': "zerowidthjoiner", + // '\u200c': "zerowidthnonjoiner", // duplicate + '\u200b': "zerowidthspace", + '\u03b6': "zeta", + '\u3113': "zhbopomofo", + '\u056a': "zhearmenian", + '\u04c2': "zhebrevecyrillic", + // '\u0436': "zhecyrillic", // duplicate + '\u0497': "zhedescendercyrillic", + '\u04dd': "zhedieresiscyrillic", + '\u3058': "zihiragana", + '\u30b8': "zikatakana", + '\u05ae': "zinorhebrew", + '\u1e95': "zlinebelow", + '\uff5a': "zmonospace", + '\u305e': "zohiragana", + '\u30be': "zokatakana", + '\u24b5': "zparen", + '\u0290': "zretroflexhook", + '\u01b6': "zstroke", + '\u305a': "zuhiragana", + '\u30ba': "zukatakana", +} diff --git a/pdf/model/textencoding/glyphs_zapfdingbats.go b/pdf/model/textencoding/glyphs_zapfdingbats.go new file mode 100644 index 00000000..15de908b --- /dev/null +++ b/pdf/model/textencoding/glyphs_zapfdingbats.go @@ -0,0 +1,418 @@ +/* + * This file is subject to the terms and conditions defined in + * file 'LICENSE.md', which is part of this source code package. + */ +/* + * The embedded glyph to unicode mappings specified in this file are distributed under the terms listed in + * ./glyphlist/zapfdingbats.txt. + */ + +package textencoding + +var zapfdingbatsGlyphToRuneMap = map[string]rune{ + "a1": '\u2701', + "a10": '\u2721', + "a100": '\u275e', + "a101": '\u2761', + "a102": '\u2762', + "a103": '\u2763', + "a104": '\u2764', + "a105": '\u2710', + "a106": '\u2765', + "a107": '\u2766', + "a108": '\u2767', + "a109": '\u2660', + "a11": '\u261b', + "a110": '\u2665', + "a111": '\u2666', + "a112": '\u2663', + "a117": '\u2709', + "a118": '\u2708', + "a119": '\u2707', + "a12": '\u261e', + "a120": '\u2460', + "a121": '\u2461', + "a122": '\u2462', + "a123": '\u2463', + "a124": '\u2464', + "a125": '\u2465', + "a126": '\u2466', + "a127": '\u2467', + "a128": '\u2468', + "a129": '\u2469', + "a13": '\u270c', + "a130": '\u2776', + "a131": '\u2777', + "a132": '\u2778', + "a133": '\u2779', + "a134": '\u277a', + "a135": '\u277b', + "a136": '\u277c', + "a137": '\u277d', + "a138": '\u277e', + "a139": '\u277f', + "a14": '\u270d', + "a140": '\u2780', + "a141": '\u2781', + "a142": '\u2782', + "a143": '\u2783', + "a144": '\u2784', + "a145": '\u2785', + "a146": '\u2786', + "a147": '\u2787', + "a148": '\u2788', + "a149": '\u2789', + "a15": '\u270e', + "a150": '\u278a', + "a151": '\u278b', + "a152": '\u278c', + "a153": '\u278d', + "a154": '\u278e', + "a155": '\u278f', + "a156": '\u2790', + "a157": '\u2791', + "a158": '\u2792', + "a159": '\u2793', + "a16": '\u270f', + "a160": '\u2794', + "a161": '\u2192', + "a162": '\u27a3', + "a163": '\u2194', + "a164": '\u2195', + "a165": '\u2799', + "a166": '\u279b', + "a167": '\u279c', + "a168": '\u279d', + "a169": '\u279e', + "a17": '\u2711', + "a170": '\u279f', + "a171": '\u27a0', + "a172": '\u27a1', + "a173": '\u27a2', + "a174": '\u27a4', + "a175": '\u27a5', + "a176": '\u27a6', + "a177": '\u27a7', + "a178": '\u27a8', + "a179": '\u27a9', + "a18": '\u2712', + "a180": '\u27ab', + "a181": '\u27ad', + "a182": '\u27af', + "a183": '\u27b2', + "a184": '\u27b3', + "a185": '\u27b5', + "a186": '\u27b8', + "a187": '\u27ba', + "a188": '\u27bb', + "a189": '\u27bc', + "a19": '\u2713', + "a190": '\u27bd', + "a191": '\u27be', + "a192": '\u279a', + "a193": '\u27aa', + "a194": '\u27b6', + "a195": '\u27b9', + "a196": '\u2798', + "a197": '\u27b4', + "a198": '\u27b7', + "a199": '\u27ac', + "a2": '\u2702', + "a20": '\u2714', + "a200": '\u27ae', + "a201": '\u27b1', + "a202": '\u2703', + "a203": '\u2750', + "a204": '\u2752', + "a205": '\u276e', + "a206": '\u2770', + "a21": '\u2715', + "a22": '\u2716', + "a23": '\u2717', + "a24": '\u2718', + "a25": '\u2719', + "a26": '\u271a', + "a27": '\u271b', + "a28": '\u271c', + "a29": '\u2722', + "a3": '\u2704', + "a30": '\u2723', + "a31": '\u2724', + "a32": '\u2725', + "a33": '\u2726', + "a34": '\u2727', + "a35": '\u2605', + "a36": '\u2729', + "a37": '\u272a', + "a38": '\u272b', + "a39": '\u272c', + "a4": '\u260e', + "a40": '\u272d', + "a41": '\u272e', + "a42": '\u272f', + "a43": '\u2730', + "a44": '\u2731', + "a45": '\u2732', + "a46": '\u2733', + "a47": '\u2734', + "a48": '\u2735', + "a49": '\u2736', + "a5": '\u2706', + "a50": '\u2737', + "a51": '\u2738', + "a52": '\u2739', + "a53": '\u273a', + "a54": '\u273b', + "a55": '\u273c', + "a56": '\u273d', + "a57": '\u273e', + "a58": '\u273f', + "a59": '\u2740', + "a6": '\u271d', + "a60": '\u2741', + "a61": '\u2742', + "a62": '\u2743', + "a63": '\u2744', + "a64": '\u2745', + "a65": '\u2746', + "a66": '\u2747', + "a67": '\u2748', + "a68": '\u2749', + "a69": '\u274a', + "a7": '\u271e', + "a70": '\u274b', + "a71": '\u25cf', + "a72": '\u274d', + "a73": '\u25a0', + "a74": '\u274f', + "a75": '\u2751', + "a76": '\u25b2', + "a77": '\u25bc', + "a78": '\u25c6', + "a79": '\u2756', + "a8": '\u271f', + "a81": '\u25d7', + "a82": '\u2758', + "a83": '\u2759', + "a84": '\u275a', + "a85": '\u276f', + "a86": '\u2771', + "a87": '\u2772', + "a88": '\u2773', + "a89": '\u2768', + "a9": '\u2720', + "a90": '\u2769', + "a91": '\u276c', + "a92": '\u276d', + "a93": '\u276a', + "a94": '\u276b', + "a95": '\u2774', + "a96": '\u2775', + "a97": '\u275b', + "a98": '\u275c', + "a99": '\u275d', +} + +var zapfdingbatsRuneToGlyphMap = map[rune]string{ + '\u2701': "a1", + '\u2721': "a10", + '\u275e': "a100", + '\u2761': "a101", + '\u2762': "a102", + '\u2763': "a103", + '\u2764': "a104", + '\u2710': "a105", + '\u2765': "a106", + '\u2766': "a107", + '\u2767': "a108", + '\u2660': "a109", + '\u261b': "a11", + '\u2665': "a110", + '\u2666': "a111", + '\u2663': "a112", + '\u2709': "a117", + '\u2708': "a118", + '\u2707': "a119", + '\u261e': "a12", + '\u2460': "a120", + '\u2461': "a121", + '\u2462': "a122", + '\u2463': "a123", + '\u2464': "a124", + '\u2465': "a125", + '\u2466': "a126", + '\u2467': "a127", + '\u2468': "a128", + '\u2469': "a129", + '\u270c': "a13", + '\u2776': "a130", + '\u2777': "a131", + '\u2778': "a132", + '\u2779': "a133", + '\u277a': "a134", + '\u277b': "a135", + '\u277c': "a136", + '\u277d': "a137", + '\u277e': "a138", + '\u277f': "a139", + '\u270d': "a14", + '\u2780': "a140", + '\u2781': "a141", + '\u2782': "a142", + '\u2783': "a143", + '\u2784': "a144", + '\u2785': "a145", + '\u2786': "a146", + '\u2787': "a147", + '\u2788': "a148", + '\u2789': "a149", + '\u270e': "a15", + '\u278a': "a150", + '\u278b': "a151", + '\u278c': "a152", + '\u278d': "a153", + '\u278e': "a154", + '\u278f': "a155", + '\u2790': "a156", + '\u2791': "a157", + '\u2792': "a158", + '\u2793': "a159", + '\u270f': "a16", + '\u2794': "a160", + '\u2192': "a161", + '\u27a3': "a162", + '\u2194': "a163", + '\u2195': "a164", + '\u2799': "a165", + '\u279b': "a166", + '\u279c': "a167", + '\u279d': "a168", + '\u279e': "a169", + '\u2711': "a17", + '\u279f': "a170", + '\u27a0': "a171", + '\u27a1': "a172", + '\u27a2': "a173", + '\u27a4': "a174", + '\u27a5': "a175", + '\u27a6': "a176", + '\u27a7': "a177", + '\u27a8': "a178", + '\u27a9': "a179", + '\u2712': "a18", + '\u27ab': "a180", + '\u27ad': "a181", + '\u27af': "a182", + '\u27b2': "a183", + '\u27b3': "a184", + '\u27b5': "a185", + '\u27b8': "a186", + '\u27ba': "a187", + '\u27bb': "a188", + '\u27bc': "a189", + '\u2713': "a19", + '\u27bd': "a190", + '\u27be': "a191", + '\u279a': "a192", + '\u27aa': "a193", + '\u27b6': "a194", + '\u27b9': "a195", + '\u2798': "a196", + '\u27b4': "a197", + '\u27b7': "a198", + '\u27ac': "a199", + '\u2702': "a2", + '\u2714': "a20", + '\u27ae': "a200", + '\u27b1': "a201", + '\u2703': "a202", + '\u2750': "a203", + '\u2752': "a204", + '\u276e': "a205", + '\u2770': "a206", + '\u2715': "a21", + '\u2716': "a22", + '\u2717': "a23", + '\u2718': "a24", + '\u2719': "a25", + '\u271a': "a26", + '\u271b': "a27", + '\u271c': "a28", + '\u2722': "a29", + '\u2704': "a3", + '\u2723': "a30", + '\u2724': "a31", + '\u2725': "a32", + '\u2726': "a33", + '\u2727': "a34", + '\u2605': "a35", + '\u2729': "a36", + '\u272a': "a37", + '\u272b': "a38", + '\u272c': "a39", + '\u260e': "a4", + '\u272d': "a40", + '\u272e': "a41", + '\u272f': "a42", + '\u2730': "a43", + '\u2731': "a44", + '\u2732': "a45", + '\u2733': "a46", + '\u2734': "a47", + '\u2735': "a48", + '\u2736': "a49", + '\u2706': "a5", + '\u2737': "a50", + '\u2738': "a51", + '\u2739': "a52", + '\u273a': "a53", + '\u273b': "a54", + '\u273c': "a55", + '\u273d': "a56", + '\u273e': "a57", + '\u273f': "a58", + '\u2740': "a59", + '\u271d': "a6", + '\u2741': "a60", + '\u2742': "a61", + '\u2743': "a62", + '\u2744': "a63", + '\u2745': "a64", + '\u2746': "a65", + '\u2747': "a66", + '\u2748': "a67", + '\u2749': "a68", + '\u274a': "a69", + '\u271e': "a7", + '\u274b': "a70", + '\u25cf': "a71", + '\u274d': "a72", + '\u25a0': "a73", + '\u274f': "a74", + '\u2751': "a75", + '\u25b2': "a76", + '\u25bc': "a77", + '\u25c6': "a78", + '\u2756': "a79", + '\u271f': "a8", + '\u25d7': "a81", + '\u2758': "a82", + '\u2759': "a83", + '\u275a': "a84", + '\u276f': "a85", + '\u2771': "a86", + '\u2772': "a87", + '\u2773': "a88", + '\u2768': "a89", + '\u2720': "a9", + '\u2769': "a90", + '\u276c': "a91", + '\u276d': "a92", + '\u276a': "a93", + '\u276b': "a94", + '\u2774': "a95", + '\u2775': "a96", + '\u275b': "a97", + '\u275c': "a98", + '\u275d': "a99", +} diff --git a/pdf/model/textencoding/symbol.go b/pdf/model/textencoding/symbol.go index 83c36d48..e5334a83 100644 --- a/pdf/model/textencoding/symbol.go +++ b/pdf/model/textencoding/symbol.go @@ -1,3 +1,8 @@ +/* + * This file is subject to the terms and conditions defined in + * file 'LICENSE.md', which is part of this source code package. + */ + package textencoding import ( @@ -14,12 +19,10 @@ func NewSymbolEncoder() SymbolEncoder { return encoder } -// Raw utf-8 rune string -> encoded string for use in PDF. +// Convert a raw utf8 string (series of runes) to an encoded string (series of character codes) to be used in PDF. func (enc SymbolEncoder) Encode(raw string) string { encoded := []byte{} for _, rune := range raw { - // rune -> glyph -> code ?: - code, found := enc.RuneToCharcode(rune) if !found { continue @@ -31,8 +34,9 @@ func (enc SymbolEncoder) Encode(raw string) string { return string(encoded) } -// Symbol char code -> glyph name. Returns the glyph and a bool to indicate whether or not it was found. -func (enc SymbolEncoder) CharcodeToGlyphName(code byte) (string, bool) { +// Conversion between character code and glyph name. +// The bool return flag is true if there was a match, and false otherwise. +func (enc SymbolEncoder) CharcodeToGlyph(code byte) (string, bool) { glyph, has := symbolEncodingCharcodeToGlyphMap[code] if !has { common.Log.Debug("Symbol encoding error: unable to find charcode->glyph entry (%v)", code) @@ -41,9 +45,22 @@ func (enc SymbolEncoder) CharcodeToGlyphName(code byte) (string, bool) { return glyph, true } -// Convert utf-8 input rune to a charcode. +// Conversion between glyph name and character code. +// The bool return flag is true if there was a match, and false otherwise. +func (enc SymbolEncoder) GlyphToCharcode(glyph string) (byte, bool) { + code, found := symbolEncodingGlyphToCharcodeMap[glyph] + if !found { + common.Log.Debug("Symbol encoding error: unable to find glyph->charcode entry (%s)", glyph) + return 0, false + } + + return code, found +} + +// Convert rune to character code. +// The bool return flag is true if there was a match, and false otherwise. func (enc SymbolEncoder) RuneToCharcode(val rune) (byte, bool) { - glyph, found := symbolEncodingRuneToGlyphMap[val] + glyph, found := runeToGlyph(val, glyphlistRuneToGlyphMap) if !found { common.Log.Debug("Symbol encoding error: unable to find rune->glyph entry (%v)", val) return 0, false @@ -58,29 +75,8 @@ func (enc SymbolEncoder) RuneToCharcode(val rune) (byte, bool) { return code, true } -// Convert utf-8 input rune to glyph name. -func (enc SymbolEncoder) RuneToGlyphName(val rune) (string, bool) { - glyph, found := symbolEncodingRuneToGlyphMap[val] - if !found { - common.Log.Debug("Symbol encoding error: unable to find rune->glyph entry (%v)", val) - return "", false - } - - return glyph, true -} - -// Convert glyph name to char code in this encoding. -func (enc SymbolEncoder) GlyphNameToCharcode(glyph string) (byte, bool) { - code, found := symbolEncodingGlyphToCharcodeMap[glyph] - if !found { - common.Log.Debug("Symbol encoding error: unable to find glyph->charcode entry (%s)", glyph) - return 0, false - } - - return code, found -} - -// Convert charcode to utf-8 rune. +// Convert character code to rune. +// The bool return flag is true if there was a match, and false otherwise. func (enc SymbolEncoder) CharcodeToRune(charcode byte) (rune, bool) { glyph, found := symbolEncodingCharcodeToGlyphMap[charcode] if !found { @@ -88,15 +84,26 @@ func (enc SymbolEncoder) CharcodeToRune(charcode byte) (rune, bool) { return 0, false } - val, found := symbolEncodingGlyphToRuneMap[glyph] + val, found := glyphToRune(glyph, glyphlistGlyphToRuneMap) if !found { - common.Log.Debug("Symbol encoding error: unable to find glyph->rune entry (%v)", glyph) return 0, false } return val, true } +// Convert rune to glyph name. +// The bool return flag is true if there was a match, and false otherwise. +func (enc SymbolEncoder) RuneToGlyph(val rune) (string, bool) { + return runeToGlyph(val, glyphlistRuneToGlyphMap) +} + +// Convert glyph to rune. +// The bool return flag is true if there was a match, and false otherwise. +func (enc SymbolEncoder) GlyphToRune(glyph string) (rune, bool) { + return glyphToRune(glyph, glyphlistGlyphToRuneMap) +} + // Convert to PDF Object. func (enc SymbolEncoder) ToPdfObject() core.PdfObject { dict := core.MakeDict() @@ -107,6 +114,7 @@ func (enc SymbolEncoder) ToPdfObject() core.PdfObject { return core.MakeIndirectObject(dict) } +// Charcode to Glyph map (Symbol encoding) var symbolEncodingCharcodeToGlyphMap map[byte]string = map[byte]string{ 32: "space", 33: "exclam", @@ -299,390 +307,7 @@ var symbolEncodingCharcodeToGlyphMap map[byte]string = map[byte]string{ 254: "bracerightbt", } -var symbolEncodingGlyphToRuneMap map[string]rune = map[string]rune{ - "space": '\u0020', - "exclam": '\u0021', - "universal": '\u2200', - "numbersign": '\u0023', - "existential": '\u2203', - "percent": '\u0025', - "ampersand": '\u0026', - "suchthat": '\u220b', - "parenleft": '\u0028', - "parenright": '\u0029', - "asteriskmath": '\u2217', - "plus": '\u002b', - "comma": '\u002c', - "minus": '\u2212', - "period": '\u002e', - "slash": '\u002f', - "zero": '\u0030', - "one": '\u0031', - "two": '\u0032', - "three": '\u0033', - "four": '\u0034', - "five": '\u0035', - "six": '\u0036', - "seven": '\u0037', - "eight": '\u0038', - "nine": '\u0039', - "colon": '\u003a', - "semicolon": '\u003b', - "less": '\u003c', - "equal": '\u003d', - "greater": '\u003e', - "question": '\u003f', - "congruent": '\u2245', - "Alpha": '\u0391', - "Beta": '\u0392', - "Chi": '\u03a7', - "Delta": '\u2206', - "Epsilon": '\u0395', - "Phi": '\u03a6', - "Gamma": '\u0393', - "Eta": '\u0397', - "Iota": '\u0399', - "theta1": '\u03d1', - "Kappa": '\u039a', - "Lambda": '\u039b', - "Mu": '\u039c', - "Nu": '\u039d', - "Omicron": '\u039f', - "Pi": '\u03a0', - "Theta": '\u0398', - "Rho": '\u03a1', - "Sigma": '\u03a3', - "Tau": '\u03a4', - "Upsilon": '\u03a5', - "sigma1": '\u03c2', - "Omega": '\u2126', - "Xi": '\u039e', - "Psi": '\u03a8', - "Zeta": '\u0396', - "bracketleft": '\u005b', - "therefore": '\u2234', - "bracketright": '\u005d', - "perpendicular": '\u22a5', - "underscore": '\u005f', - "radicalex": '\uf8e5', - "alpha": '\u03b1', - "beta": '\u03b2', - "chi": '\u03c7', - "delta": '\u03b4', - "epsilon": '\u03b5', - "phi": '\u03c6', - "gamma": '\u03b3', - "eta": '\u03b7', - "iota": '\u03b9', - "phi1": '\u03d5', - "kappa": '\u03ba', - "lambda": '\u03bb', - "mu": '\u00b5', - "nu": '\u03bd', - "omicron": '\u03bf', - "pi": '\u03c0', - "theta": '\u03b8', - "rho": '\u03c1', - "sigma": '\u03c3', - "tau": '\u03c4', - "upsilon": '\u03c5', - "omega1": '\u03d6', - "omega": '\u03c9', - "xi": '\u03be', - "psi": '\u03c8', - "zeta": '\u03b6', - "braceleft": '\u007b', - "bar": '\u007c', - "braceright": '\u007d', - "similar": '\u223c', - "Euro": '\u20ac', - "Upsilon1": '\u03d2', - "minute": '\u2032', - "lessequal": '\u2264', - "fraction": '\u2044', - "infinity": '\u221e', - "florin": '\u0192', - "club": '\u2663', - "diamond": '\u2666', - "heart": '\u2665', - "spade": '\u2660', - "arrowboth": '\u2194', - "arrowleft": '\u2190', - "arrowup": '\u2191', - "arrowright": '\u2192', - "arrowdown": '\u2193', - "degree": '\u00b0', - "plusminus": '\u00b1', - "second": '\u2033', - "greaterequal": '\u2265', - "multiply": '\u00d7', - "proportional": '\u221d', - "partialdiff": '\u2202', - "bullet": '\u2022', - "divide": '\u00f7', - "notequal": '\u2260', - "equivalence": '\u2261', - "approxequal": '\u2248', - "ellipsis": '\u2026', - "arrowvertex": '\uf8e6', - "arrowhorizex": '\uf8e7', - "carriagereturn": '\u21b5', - "aleph": '\u2135', - "Ifraktur": '\u2111', - "Rfraktur": '\u211c', - "weierstrass": '\u2118', - "circlemultiply": '\u2297', - "circleplus": '\u2295', - "emptyset": '\u2205', - "intersection": '\u2229', - "union": '\u222a', - "propersuperset": '\u2283', - "reflexsuperset": '\u2287', - "notsubset": '\u2284', - "propersubset": '\u2282', - "reflexsubset": '\u2286', - "element": '\u2208', - "notelement": '\u2209', - "angle": '\u2220', - "gradient": '\u2207', - "registerserif": '\uf6da', - "copyrightserif": '\uf6d9', - "trademarkserif": '\uf6db', - "product": '\u220f', - "radical": '\u221a', - "dotmath": '\u22c5', - "logicalnot": '\u00ac', - "logicaland": '\u2227', - "logicalor": '\u2228', - "arrowdblboth": '\u21d4', - "arrowdblleft": '\u21d0', - "arrowdblup": '\u21d1', - "arrowdblright": '\u21d2', - "arrowdbldown": '\u21d3', - "lozenge": '\u25ca', - "angleleft": '\u2329', - "registersans": '\uf8e8', - "copyrightsans": '\uf8e9', - "trademarksans": '\uf8ea', - "summation": '\u2211', - "parenlefttp": '\uf8eb', - "parenleftex": '\uf8ec', - "parenleftbt": '\uf8ed', - "bracketlefttp": '\uf8ee', - "bracketleftex": '\uf8ef', - "bracketleftbt": '\uf8f0', - "bracelefttp": '\uf8f1', - "braceleftmid": '\uf8f2', - "braceleftbt": '\uf8f3', - "braceex": '\uf8f4', - "angleright": '\u232a', - "integral": '\u222b', - "integraltp": '\u2320', - "integralex": '\uf8f5', - "integralbt": '\u2321', - "parenrighttp": '\uf8f6', - "parenrightex": '\uf8f7', - "parenrightbt": '\uf8f8', - "bracketrighttp": '\uf8f9', - "bracketrightex": '\uf8fa', - "bracketrightbt": '\uf8fb', - "bracerighttp": '\uf8fc', - "bracerightmid": '\uf8fd', - "bracerightbt": '\uf8fe', -} - -var symbolEncodingRuneToGlyphMap map[rune]string = map[rune]string{ - '\u0020': "space", - '\u0021': "exclam", - '\u2200': "universal", - '\u0023': "numbersign", - '\u2203': "existential", - '\u0025': "percent", - '\u0026': "ampersand", - '\u220b': "suchthat", - '\u0028': "parenleft", - '\u0029': "parenright", - '\u2217': "asteriskmath", - '\u002b': "plus", - '\u002c': "comma", - '\u2212': "minus", - '\u002e': "period", - '\u002f': "slash", - '\u0030': "zero", - '\u0031': "one", - '\u0032': "two", - '\u0033': "three", - '\u0034': "four", - '\u0035': "five", - '\u0036': "six", - '\u0037': "seven", - '\u0038': "eight", - '\u0039': "nine", - '\u003a': "colon", - '\u003b': "semicolon", - '\u003c': "less", - '\u003d': "equal", - '\u003e': "greater", - '\u003f': "question", - '\u2245': "congruent", - '\u0391': "Alpha", - '\u0392': "Beta", - '\u03a7': "Chi", - '\u2206': "Delta", - '\u0395': "Epsilon", - '\u03a6': "Phi", - '\u0393': "Gamma", - '\u0397': "Eta", - '\u0399': "Iota", - '\u03d1': "theta1", - '\u039a': "Kappa", - '\u039b': "Lambda", - '\u039c': "Mu", - '\u039d': "Nu", - '\u039f': "Omicron", - '\u03a0': "Pi", - '\u0398': "Theta", - '\u03a1': "Rho", - '\u03a3': "Sigma", - '\u03a4': "Tau", - '\u03a5': "Upsilon", - '\u03c2': "sigma1", - '\u2126': "Omega", - '\u039e': "Xi", - '\u03a8': "Psi", - '\u0396': "Zeta", - '\u005b': "bracketleft", - '\u2234': "therefore", - '\u005d': "bracketright", - '\u22a5': "perpendicular", - '\u005f': "underscore", - '\uf8e5': "radicalex", - '\u03b1': "alpha", - '\u03b2': "beta", - '\u03c7': "chi", - '\u03b4': "delta", - '\u03b5': "epsilon", - '\u03c6': "phi", - '\u03b3': "gamma", - '\u03b7': "eta", - '\u03b9': "iota", - '\u03d5': "phi1", - '\u03ba': "kappa", - '\u03bb': "lambda", - '\u00b5': "mu", - '\u03bd': "nu", - '\u03bf': "omicron", - '\u03c0': "pi", - '\u03b8': "theta", - '\u03c1': "rho", - '\u03c3': "sigma", - '\u03c4': "tau", - '\u03c5': "upsilon", - '\u03d6': "omega1", - '\u03c9': "omega", - '\u03be': "xi", - '\u03c8': "psi", - '\u03b6': "zeta", - '\u007b': "braceleft", - '\u007c': "bar", - '\u007d': "braceright", - '\u223c': "similar", - '\u20ac': "Euro", - '\u03d2': "Upsilon1", - '\u2032': "minute", - '\u2264': "lessequal", - '\u2044': "fraction", - '\u221e': "infinity", - '\u0192': "florin", - '\u2663': "club", - '\u2666': "diamond", - '\u2665': "heart", - '\u2660': "spade", - '\u2194': "arrowboth", - '\u2190': "arrowleft", - '\u2191': "arrowup", - '\u2192': "arrowright", - '\u2193': "arrowdown", - '\u00b0': "degree", - '\u00b1': "plusminus", - '\u2033': "second", - '\u2265': "greaterequal", - '\u00d7': "multiply", - '\u221d': "proportional", - '\u2202': "partialdiff", - '\u2022': "bullet", - '\u00f7': "divide", - '\u2260': "notequal", - '\u2261': "equivalence", - '\u2248': "approxequal", - '\u2026': "ellipsis", - '\uf8e6': "arrowvertex", - '\uf8e7': "arrowhorizex", - '\u21b5': "carriagereturn", - '\u2135': "aleph", - '\u2111': "Ifraktur", - '\u211c': "Rfraktur", - '\u2118': "weierstrass", - '\u2297': "circlemultiply", - '\u2295': "circleplus", - '\u2205': "emptyset", - '\u2229': "intersection", - '\u222a': "union", - '\u2283': "propersuperset", - '\u2287': "reflexsuperset", - '\u2284': "notsubset", - '\u2282': "propersubset", - '\u2286': "reflexsubset", - '\u2208': "element", - '\u2209': "notelement", - '\u2220': "angle", - '\u2207': "gradient", - '\uf6da': "registerserif", - '\uf6d9': "copyrightserif", - '\uf6db': "trademarkserif", - '\u220f': "product", - '\u221a': "radical", - '\u22c5': "dotmath", - '\u00ac': "logicalnot", - '\u2227': "logicaland", - '\u2228': "logicalor", - '\u21d4': "arrowdblboth", - '\u21d0': "arrowdblleft", - '\u21d1': "arrowdblup", - '\u21d2': "arrowdblright", - '\u21d3': "arrowdbldown", - '\u25ca': "lozenge", - '\u2329': "angleleft", - '\uf8e8': "registersans", - '\uf8e9': "copyrightsans", - '\uf8ea': "trademarksans", - '\u2211': "summation", - '\uf8eb': "parenlefttp", - '\uf8ec': "parenleftex", - '\uf8ed': "parenleftbt", - '\uf8ee': "bracketlefttp", - '\uf8ef': "bracketleftex", - '\uf8f0': "bracketleftbt", - '\uf8f1': "bracelefttp", - '\uf8f2': "braceleftmid", - '\uf8f3': "braceleftbt", - '\uf8f4': "braceex", - '\u232a': "angleright", - '\u222b': "integral", - '\u2320': "integraltp", - '\uf8f5': "integralex", - '\u2321': "integralbt", - '\uf8f6': "parenrighttp", - '\uf8f7': "parenrightex", - '\uf8f8': "parenrightbt", - '\uf8f9': "bracketrighttp", - '\uf8fa': "bracketrightex", - '\uf8fb': "bracketrightbt", - '\uf8fc': "bracerighttp", - '\uf8fd': "bracerightmid", - '\uf8fe': "bracerightbt", -} - +// Glyph to charcode map (Symbol encoding). var symbolEncodingGlyphToCharcodeMap map[string]byte = map[string]byte{ "space": 32, "exclam": 33, diff --git a/pdf/model/textencoding/utils.go b/pdf/model/textencoding/utils.go new file mode 100644 index 00000000..a9badb8d --- /dev/null +++ b/pdf/model/textencoding/utils.go @@ -0,0 +1,56 @@ +/* + * This file is subject to the terms and conditions defined in + * file 'LICENSE.md', which is part of this source code package. + */ + +package textencoding + +import "github.com/unidoc/unidoc/common" + +func glyphToRune(glyph string, glyphToRuneMap map[string]rune) (rune, bool) { + ucode, found := glyphToRuneMap[glyph] + if found { + return ucode, true + } + + //common.Log.Debug("Glyph->Rune ERROR: Unable to find glyph %s", glyph) + return 0, false +} + +func runeToGlyph(ucode rune, runeToGlyphMap map[rune]string) (string, bool) { + glyph, found := runeToGlyphMap[ucode] + if found { + return glyph, true + } + + //common.Log.Debug("Rune->Glyph ERROR: Unable to find rune %v", ucode) + return "", false +} + +func splitWords(raw string, encoder TextEncoder) []string { + runes := []rune(raw) + + words := []string{} + + startsAt := 0 + for idx, code := range runes { + glyph, found := encoder.RuneToGlyph(code) + if !found { + common.Log.Debug("Glyph not found for code: %s\n", string(code)) + continue + } + + if glyph == "space" { + word := runes[startsAt:idx] + words = append(words, string(word)) + startsAt = idx + 1 + } + } + + word := runes[startsAt:] + if len(word) > 0 { + words = append(words, string(word)) + } + + return words +} diff --git a/pdf/model/textencoding/winansi.go b/pdf/model/textencoding/winansi.go index ebd18920..1bd02074 100644 --- a/pdf/model/textencoding/winansi.go +++ b/pdf/model/textencoding/winansi.go @@ -10,34 +10,7 @@ import ( "github.com/unidoc/unidoc/pdf/core" ) -func splitWords(raw string, encoder TextEncoder) []string { - runes := []rune(raw) - - words := []string{} - - startsAt := 0 - for idx, code := range runes { - glyph, found := encoder.RuneToGlyphName(code) - if !found { - common.Log.Debug("Glyph not found for code: %s\n", string(code)) - continue - } - - if glyph == "space" { - word := runes[startsAt:idx] - words = append(words, string(word)) - startsAt = idx + 1 - } - } - - word := runes[startsAt:] - if len(word) > 0 { - words = append(words, string(word)) - } - - return words -} - +// WinAnsiEncoding. type WinAnsiEncoder struct { } @@ -50,11 +23,12 @@ func (winenc WinAnsiEncoder) ToPdfObject() core.PdfObject { return core.MakeName("WinAnsiEncoding") } -// Convert utf8 runes to WinAnsiEncoded encoded string (series of char codes). +// Convert a raw utf8 string (series of runes) to an encoded string (series of character codes) to be used in PDF. func (winenc WinAnsiEncoder) Encode(raw string) string { encoded := []byte{} for _, rune := range raw { - if code, has := utf8ToWinAnsiEncodingMap[rune]; has { + code, has := winenc.RuneToCharcode(rune) + if has { encoded = append(encoded, code) } } @@ -62,72 +36,77 @@ func (winenc WinAnsiEncoder) Encode(raw string) string { return string(encoded) } -func (winenc WinAnsiEncoder) RuneToGlyphName(val rune) (string, bool) { - code, found := winenc.RuneToCharcode(val) - if !found { - return "", false - } - - glyph, found := winenc.CharcodeToGlyphName(code) - if !found { - return "", false - } - - return glyph, true -} - -func (winenc WinAnsiEncoder) CharcodeToGlyphName(code byte) (string, bool) { - glyph, has := winAnsiEncodingGlyphMap[code] +// Conversion between character code and glyph name. +// The bool return flag is true if there was a match, and false otherwise. +func (winenc WinAnsiEncoder) CharcodeToGlyph(code byte) (string, bool) { + glyph, has := winansiEncodingCharcodeToGlyphMap[code] if !has { + common.Log.Debug("Charcode -> Glyph error: charcode not found: %d\n", code) return "", false } return glyph, true } -func (winenc WinAnsiEncoder) GlyphNameToCharcode(glyph string) (byte, bool) { - for code, name := range winAnsiEncodingGlyphMap { - if name == glyph { - return code, true - } - } - - // Not found. - return 0, false -} - -// Convert UTF-8 rune to character code. If applicable. -func (winenc WinAnsiEncoder) RuneToCharcode(val rune) (byte, bool) { - code, has := utf8ToWinAnsiEncodingMap[val] - if !has { +// Conversion between glyph name and character code. +// The bool return flag is true if there was a match, and false otherwise. +func (winenc WinAnsiEncoder) GlyphToCharcode(glyph string) (byte, bool) { + code, found := winansiEncodingGlyphToCharcodeMap[glyph] + if !found { + common.Log.Debug("Glyph -> Charcode error: glyph not found: %s\n", glyph) return 0, false } + return code, true } -func (winenc WinAnsiEncoder) CharcodeToRune(charcode byte) (rune, bool) { - val, has := winAnsiEncodingToUtf8Map[charcode] - if !has { +// Convert rune to character code. +// The bool return flag is true if there was a match, and false otherwise. +func (winenc WinAnsiEncoder) RuneToCharcode(val rune) (byte, bool) { + glyph, found := winenc.RuneToGlyph(val) + if !found { return 0, false } - return val, true -} - -// WinAnsiEncoding. - -// Convert a UTF8 string to WinAnsiEncoding byte string. -func utf8ToWinAnsiEncoding(strUtf8 string) string { - encoded := []byte{} - for _, rune := range strUtf8 { - if code, has := utf8ToWinAnsiEncodingMap[rune]; has { - encoded = append(encoded, code) - } + code, found := winansiEncodingGlyphToCharcodeMap[glyph] + if !found { + common.Log.Debug("Glyph -> Charcode error: glyph not found %s\n", glyph) + return 0, false } - return string(encoded) + + return code, true } -// Maps to enable conversion of WinAnsiEncoding character codes to glyphs, utf8 and vice versa. -var winAnsiEncodingGlyphMap = map[byte]string{ +// Convert character code to rune. +// The bool return flag is true if there was a match, and false otherwise. +func (winenc WinAnsiEncoder) CharcodeToRune(charcode byte) (rune, bool) { + glyph, found := winansiEncodingCharcodeToGlyphMap[charcode] + if !found { + common.Log.Debug("Charcode -> Glyph error: charcode not found: %d\n", charcode) + return 0, false + } + + ucode, found := glyphToRune(glyph, glyphlistGlyphToRuneMap) + if !found { + return 0, false + } + + return ucode, true +} + +// Convert rune to glyph name. +// The bool return flag is true if there was a match, and false otherwise. +func (winenc WinAnsiEncoder) RuneToGlyph(val rune) (string, bool) { + return runeToGlyph(val, glyphlistRuneToGlyphMap) +} + +// Convert glyph to rune. +// The bool return flag is true if there was a match, and false otherwise. +func (winenc WinAnsiEncoder) GlyphToRune(glyph string) (rune, bool) { + return glyphToRune(glyph, glyphlistGlyphToRuneMap) +} + +// Charcode to glyph name map (WinAnsiEncoding). +var winansiEncodingCharcodeToGlyphMap = map[byte]string{ 32: "space", 33: "exclam", 34: "quotedbl", @@ -354,456 +333,230 @@ var winAnsiEncodingGlyphMap = map[byte]string{ 255: "ydieresis", } -var winAnsiEncodingToUtf8Map = map[byte]rune{ - 32: '\u0020', - 33: '\u0021', - 34: '\u0022', - 35: '\u0023', - 36: '\u0024', - 37: '\u0025', - 38: '\u0026', - 39: '\u0027', - 40: '\u0028', - 41: '\u0029', - 42: '\u002a', - 43: '\u002b', - 44: '\u002c', - 45: '\u002d', - 46: '\u002e', - 47: '\u002f', - 48: '\u0030', - 49: '\u0031', - 50: '\u0032', - 51: '\u0033', - 52: '\u0034', - 53: '\u0035', - 54: '\u0036', - 55: '\u0037', - 56: '\u0038', - 57: '\u0039', - 58: '\u003a', - 59: '\u003b', - 60: '\u003c', - 61: '\u003d', - 62: '\u003e', - 63: '\u003f', - 64: '\u0040', - 65: '\u0041', - 66: '\u0042', - 67: '\u0043', - 68: '\u0044', - 69: '\u0045', - 70: '\u0046', - 71: '\u0047', - 72: '\u0048', - 73: '\u0049', - 74: '\u004a', - 75: '\u004b', - 76: '\u004c', - 77: '\u004d', - 78: '\u004e', - 79: '\u004f', - 80: '\u0050', - 81: '\u0051', - 82: '\u0052', - 83: '\u0053', - 84: '\u0054', - 85: '\u0055', - 86: '\u0056', - 87: '\u0057', - 88: '\u0058', - 89: '\u0059', - 90: '\u005a', - 91: '\u005b', - 92: '\u005c', - 93: '\u005d', - 94: '\u005e', - 95: '\u005f', - 96: '\u0060', - 97: '\u0061', - 98: '\u0062', - 99: '\u0063', - 100: '\u0064', - 101: '\u0065', - 102: '\u0066', - 103: '\u0067', - 104: '\u0068', - 105: '\u0069', - 106: '\u006a', - 107: '\u006b', - 108: '\u006c', - 109: '\u006d', - 110: '\u006e', - 111: '\u006f', - 112: '\u0070', - 113: '\u0071', - 114: '\u0072', - 115: '\u0073', - 116: '\u0074', - 117: '\u0075', - 118: '\u0076', - 119: '\u0077', - 120: '\u0078', - 121: '\u0079', - 122: '\u007a', - 123: '\u007b', - 124: '\u007c', - 125: '\u007d', - 126: '\u007e', - 127: '\u2022', - 128: '\u20ac', - 129: '\u2022', - 130: '\u201a', - 131: '\u0192', - 132: '\u201e', - 133: '\u2026', - 134: '\u2020', - 135: '\u2021', - 136: '\u02c6', - 137: '\u2030', - 138: '\u0160', - 139: '\u2039', - 140: '\u0152', - 141: '\u2022', - 142: '\u017d', - 143: '\u2022', - 144: '\u2022', - 145: '\u2018', - 146: '\u2019', - 147: '\u201c', - 148: '\u201d', - 149: '\u2022', - 150: '\u2013', - 151: '\u2014', - 152: '\u02dc', - 153: '\u2122', - 154: '\u0161', - 155: '\u203a', - 156: '\u0153', - 157: '\u2022', - 158: '\u017e', - 159: '\u0178', - 160: '\u0020', - 161: '\u00a1', - 162: '\u00a2', - 163: '\u00a3', - 164: '\u00a4', - 165: '\u00a5', - 166: '\u00a6', - 167: '\u00a7', - 168: '\u00a8', - 169: '\u00a9', - 170: '\u00aa', - 171: '\u00ab', - 172: '\u00ac', - 173: '\u002d', - 174: '\u00ae', - 175: '\u00af', - 176: '\u00b0', - 177: '\u00b1', - 178: '\u00b2', - 179: '\u00b3', - 180: '\u00b4', - 181: '\u00b5', - 182: '\u00b6', - 183: '\u00b7', - 184: '\u00b8', - 185: '\u00b9', - 186: '\u00ba', - 187: '\u00bb', - 188: '\u00bc', - 189: '\u00bd', - 190: '\u00be', - 191: '\u00bf', - 192: '\u00c0', - 193: '\u00c1', - 194: '\u00c2', - 195: '\u00c3', - 196: '\u00c4', - 197: '\u00c5', - 198: '\u00c6', - 199: '\u00c7', - 200: '\u00c8', - 201: '\u00c9', - 202: '\u00ca', - 203: '\u00cb', - 204: '\u00cc', - 205: '\u00cd', - 206: '\u00ce', - 207: '\u00cf', - 208: '\u00d0', - 209: '\u00d1', - 210: '\u00d2', - 211: '\u00d3', - 212: '\u00d4', - 213: '\u00d5', - 214: '\u00d6', - 215: '\u00d7', - 216: '\u00d8', - 217: '\u00d9', - 218: '\u00da', - 219: '\u00db', - 220: '\u00dc', - 221: '\u00dd', - 222: '\u00de', - 223: '\u00df', - 224: '\u00e0', - 225: '\u00e1', - 226: '\u00e2', - 227: '\u00e3', - 228: '\u00e4', - 229: '\u00e5', - 230: '\u00e6', - 231: '\u00e7', - 232: '\u00e8', - 233: '\u00e9', - 234: '\u00ea', - 235: '\u00eb', - 236: '\u00ec', - 237: '\u00ed', - 238: '\u00ee', - 239: '\u00ef', - 240: '\u00f0', - 241: '\u00f1', - 242: '\u00f2', - 243: '\u00f3', - 244: '\u00f4', - 245: '\u00f5', - 246: '\u00f6', - 247: '\u00f7', - 248: '\u00f8', - 249: '\u00f9', - 250: '\u00fa', - 251: '\u00fb', - 252: '\u00fc', - 253: '\u00fd', - 254: '\u00fe', - 255: '\u00ff', -} - -var utf8ToWinAnsiEncodingMap = map[rune]byte{ - '\u0020': 32, - '\u0021': 33, - '\u0022': 34, - '\u0023': 35, - '\u0024': 36, - '\u0025': 37, - '\u0026': 38, - '\u0027': 39, - '\u0028': 40, - '\u0029': 41, - '\u002a': 42, - '\u002b': 43, - '\u002c': 44, - '\u002d': 45, - '\u002e': 46, - '\u002f': 47, - '\u0030': 48, - '\u0031': 49, - '\u0032': 50, - '\u0033': 51, - '\u0034': 52, - '\u0035': 53, - '\u0036': 54, - '\u0037': 55, - '\u0038': 56, - '\u0039': 57, - '\u003a': 58, - '\u003b': 59, - '\u003c': 60, - '\u003d': 61, - '\u003e': 62, - '\u003f': 63, - '\u0040': 64, - '\u0041': 65, - '\u0042': 66, - '\u0043': 67, - '\u0044': 68, - '\u0045': 69, - '\u0046': 70, - '\u0047': 71, - '\u0048': 72, - '\u0049': 73, - '\u004a': 74, - '\u004b': 75, - '\u004c': 76, - '\u004d': 77, - '\u004e': 78, - '\u004f': 79, - '\u0050': 80, - '\u0051': 81, - '\u0052': 82, - '\u0053': 83, - '\u0054': 84, - '\u0055': 85, - '\u0056': 86, - '\u0057': 87, - '\u0058': 88, - '\u0059': 89, - '\u005a': 90, - '\u005b': 91, - '\u005c': 92, - '\u005d': 93, - '\u005e': 94, - '\u005f': 95, - '\u0060': 96, - '\u0061': 97, - '\u0062': 98, - '\u0063': 99, - '\u0064': 100, - '\u0065': 101, - '\u0066': 102, - '\u0067': 103, - '\u0068': 104, - '\u0069': 105, - '\u006a': 106, - '\u006b': 107, - '\u006c': 108, - '\u006d': 109, - '\u006e': 110, - '\u006f': 111, - '\u0070': 112, - '\u0071': 113, - '\u0072': 114, - '\u0073': 115, - '\u0074': 116, - '\u0075': 117, - '\u0076': 118, - '\u0077': 119, - '\u0078': 120, - '\u0079': 121, - '\u007a': 122, - '\u007b': 123, - '\u007c': 124, - '\u007d': 125, - '\u007e': 126, - '\u2022': 127, - '\u20ac': 128, - // '\u2022': 129, // duplicate - '\u201a': 130, - '\u0192': 131, - '\u201e': 132, - '\u2026': 133, - '\u2020': 134, - '\u2021': 135, - '\u02c6': 136, - '\u2030': 137, - '\u0160': 138, - '\u2039': 139, - '\u0152': 140, - //'\u2022': 141, // duplicate - '\u017d': 142, - //'\u2022': 143, // duplicate - // '\u2022': 144, // duplicate - '\u2018': 145, - '\u2019': 146, - '\u201c': 147, - '\u201d': 148, - //'\u2022': 149, // duplicate - '\u2013': 150, - '\u2014': 151, - '\u02dc': 152, - '\u2122': 153, - '\u0161': 154, - '\u203a': 155, - '\u0153': 156, - //'\u2022': 157, // duplicate - '\u017e': 158, - '\u0178': 159, - //'\u0020': 160, // duplicate - '\u00a1': 161, - '\u00a2': 162, - '\u00a3': 163, - '\u00a4': 164, - '\u00a5': 165, - '\u00a6': 166, - '\u00a7': 167, - '\u00a8': 168, - '\u00a9': 169, - '\u00aa': 170, - '\u00ab': 171, - '\u00ac': 172, - //'\u002d': 173, // duplicate - '\u00ae': 174, - '\u00af': 175, - '\u00b0': 176, - '\u00b1': 177, - '\u00b2': 178, - '\u00b3': 179, - '\u00b4': 180, - '\u00b5': 181, - '\u00b6': 182, - '\u00b7': 183, - '\u00b8': 184, - '\u00b9': 185, - '\u00ba': 186, - '\u00bb': 187, - '\u00bc': 188, - '\u00bd': 189, - '\u00be': 190, - '\u00bf': 191, - '\u00c0': 192, - '\u00c1': 193, - '\u00c2': 194, - '\u00c3': 195, - '\u00c4': 196, - '\u00c5': 197, - '\u00c6': 198, - '\u00c7': 199, - '\u00c8': 200, - '\u00c9': 201, - '\u00ca': 202, - '\u00cb': 203, - '\u00cc': 204, - '\u00cd': 205, - '\u00ce': 206, - '\u00cf': 207, - '\u00d0': 208, - '\u00d1': 209, - '\u00d2': 210, - '\u00d3': 211, - '\u00d4': 212, - '\u00d5': 213, - '\u00d6': 214, - '\u00d7': 215, - '\u00d8': 216, - '\u00d9': 217, - '\u00da': 218, - '\u00db': 219, - '\u00dc': 220, - '\u00dd': 221, - '\u00de': 222, - '\u00df': 223, - '\u00e0': 224, - '\u00e1': 225, - '\u00e2': 226, - '\u00e3': 227, - '\u00e4': 228, - '\u00e5': 229, - '\u00e6': 230, - '\u00e7': 231, - '\u00e8': 232, - '\u00e9': 233, - '\u00ea': 234, - '\u00eb': 235, - '\u00ec': 236, - '\u00ed': 237, - '\u00ee': 238, - '\u00ef': 239, - '\u00f0': 240, - '\u00f1': 241, - '\u00f2': 242, - '\u00f3': 243, - '\u00f4': 244, - '\u00f5': 245, - '\u00f6': 246, - '\u00f7': 247, - '\u00f8': 248, - '\u00f9': 249, - '\u00fa': 250, - '\u00fb': 251, - '\u00fc': 252, - '\u00fd': 253, - '\u00fe': 254, - '\u00ff': 255, +// Glyph to charcode map (WinAnsiEncoding). +var winansiEncodingGlyphToCharcodeMap = map[string]byte{ + "space": 32, + "exclam": 33, + "quotedbl": 34, + "numbersign": 35, + "dollar": 36, + "percent": 37, + "ampersand": 38, + "quotesingle": 39, + "parenleft": 40, + "parenright": 41, + "asterisk": 42, + "plus": 43, + "comma": 44, + //"hyphen": 45, + "period": 46, + "slash": 47, + "zero": 48, + "one": 49, + "two": 50, + "three": 51, + "four": 52, + "five": 53, + "six": 54, + "seven": 55, + "eight": 56, + "nine": 57, + "colon": 58, + "semicolon": 59, + "less": 60, + "equal": 61, + "greater": 62, + "question": 63, + "at": 64, + "A": 65, + "B": 66, + "C": 67, + "D": 68, + "E": 69, + "F": 70, + "G": 71, + "H": 72, + "I": 73, + "J": 74, + "K": 75, + "L": 76, + "M": 77, + "N": 78, + "O": 79, + "P": 80, + "Q": 81, + "R": 82, + "S": 83, + "T": 84, + "U": 85, + "V": 86, + "W": 87, + "X": 88, + "Y": 89, + "Z": 90, + "bracketleft": 91, + "backslash": 92, + "bracketright": 93, + "asciicircum": 94, + "underscore": 95, + "grave": 96, + "a": 97, + "b": 98, + "c": 99, + "d": 100, + "e": 101, + "f": 102, + "g": 103, + "h": 104, + "i": 105, + "j": 106, + "k": 107, + "l": 108, + "m": 109, + "n": 110, + "o": 111, + "p": 112, + "q": 113, + "r": 114, + "s": 115, + "t": 116, + "u": 117, + "v": 118, + "w": 119, + "x": 120, + "y": 121, + "z": 122, + "braceleft": 123, + "bar": 124, + "braceright": 125, + "asciitilde": 126, + "bullet": 127, + "Euro": 128, + //"bullet": 129, + "quotesinglbase": 130, + "florin": 131, + "quotedblbase": 132, + "ellipsis": 133, + "dagger": 134, + "daggerdbl": 135, + "circumflex": 136, + "perthousand": 137, + "Scaron": 138, + "guilsinglleft": 139, + "OE": 140, + //"bullet": 141, + "Zcaron": 142, + //"bullet": 143, + //"bullet": 144, + "quoteleft": 145, + "quoteright": 146, + "quotedblleft": 147, + "quotedblright": 148, + //"bullet": 149, + "endash": 150, + "emdash": 151, + "tilde": 152, + "trademark": 153, + "scaron": 154, + "guilsinglright": 155, + "oe": 156, + //"bullet": 157, + "zcaron": 158, + "Ydieresis": 159, + //"space": 160, + "exclamdown": 161, + "cent": 162, + "sterling": 163, + "currency": 164, + "yen": 165, + "brokenbar": 166, + "section": 167, + "dieresis": 168, + "copyright": 169, + "ordfeminine": 170, + "guillemotleft": 171, + "logicalnot": 172, + "hyphen": 173, + "registered": 174, + "macron": 175, + "degree": 176, + "plusminus": 177, + "twosuperior": 178, + "threesuperior": 179, + "acute": 180, + "mu": 181, + "paragraph": 182, + "periodcentered": 183, + "cedilla": 184, + "onesuperior": 185, + "ordmasculine": 186, + "guillemotright": 187, + "onequarter": 188, + "onehalf": 189, + "threequarters": 190, + "questiondown": 191, + "Agrave": 192, + "Aacute": 193, + "Acircumflex": 194, + "Atilde": 195, + "Adieresis": 196, + "Aring": 197, + "AE": 198, + "Ccedilla": 199, + "Egrave": 200, + "Eacute": 201, + "Ecircumflex": 202, + "Edieresis": 203, + "Igrave": 204, + "Iacute": 205, + "Icircumflex": 206, + "Idieresis": 207, + "Eth": 208, + "Ntilde": 209, + "Ograve": 210, + "Oacute": 211, + "Ocircumflex": 212, + "Otilde": 213, + "Odieresis": 214, + "multiply": 215, + "Oslash": 216, + "Ugrave": 217, + "Uacute": 218, + "Ucircumflex": 219, + "Udieresis": 220, + "Yacute": 221, + "Thorn": 222, + "germandbls": 223, + "agrave": 224, + "aacute": 225, + "acircumflex": 226, + "atilde": 227, + "adieresis": 228, + "aring": 229, + "ae": 230, + "ccedilla": 231, + "egrave": 232, + "eacute": 233, + "ecircumflex": 234, + "edieresis": 235, + "igrave": 236, + "iacute": 237, + "icircumflex": 238, + "idieresis": 239, + "eth": 240, + "ntilde": 241, + "ograve": 242, + "oacute": 243, + "ocircumflex": 244, + "otilde": 245, + "odieresis": 246, + "divide": 247, + "oslash": 248, + "ugrave": 249, + "uacute": 250, + "ucircumflex": 251, + "udieresis": 252, + "yacute": 253, + "thorn": 254, + "ydieresis": 255, } diff --git a/pdf/model/textencoding/winansi_test.go b/pdf/model/textencoding/winansi_test.go index 70352a52..8eac31b8 100644 --- a/pdf/model/textencoding/winansi_test.go +++ b/pdf/model/textencoding/winansi_test.go @@ -10,13 +10,13 @@ import "testing" func TestWinAnsiEncoder(t *testing.T) { enc := NewWinAnsiTextEncoder() - glyph, found := enc.CharcodeToGlyphName(32) + glyph, found := enc.CharcodeToGlyph(32) if !found || glyph != "space" { t.Errorf("Glyph != space") return } - glyph, found = enc.RuneToGlyphName('þ') + glyph, found = enc.RuneToGlyph('þ') if !found || glyph != "thorn" { t.Errorf("Glyph != thorn") return diff --git a/pdf/model/textencoding/zapfdingbats.go b/pdf/model/textencoding/zapfdingbats.go new file mode 100644 index 00000000..ebaeebdd --- /dev/null +++ b/pdf/model/textencoding/zapfdingbats.go @@ -0,0 +1,542 @@ +/* + * This file is subject to the terms and conditions defined in + * file 'LICENSE.md', which is part of this source code package. + */ + +package textencoding + +import ( + "github.com/unidoc/unidoc/common" + "github.com/unidoc/unidoc/pdf/core" +) + +// Encoding for ZapfDingbats font. +type ZapfDingbatsEncoder struct { +} + +func NewZapfDingbatsEncoder() ZapfDingbatsEncoder { + encoder := ZapfDingbatsEncoder{} + return encoder +} + +// Convert a raw utf8 string (series of runes) to an encoded string (series of character codes) to be used in PDF. +func (enc ZapfDingbatsEncoder) Encode(raw string) string { + encoded := []byte{} + for _, rune := range raw { + code, found := enc.RuneToCharcode(rune) + if !found { + continue + } + + encoded = append(encoded, code) + } + + return string(encoded) +} + +// Conversion between character code and glyph name. +// The bool return flag is true if there was a match, and false otherwise. +func (enc ZapfDingbatsEncoder) CharcodeToGlyph(code byte) (string, bool) { + glyph, has := zapfDingbatsEncodingCharcodeToGlyphMap[code] + if !has { + common.Log.Debug("ZapfDingbats encoding error: unable to find charcode->glyph entry (%v)", code) + return "", false + } + return glyph, true +} + +// Conversion between glyph name and character code. +// The bool return flag is true if there was a match, and false otherwise. +func (enc ZapfDingbatsEncoder) GlyphToCharcode(glyph string) (byte, bool) { + code, found := zapfDingbatsEncodingGlyphToCharcodeMap[glyph] + if !found { + common.Log.Debug("ZapfDingbats encoding error: unable to find glyph->charcode entry (%s)", glyph) + return 0, false + } + + return code, found +} + +// Convert rune to character code. +// The bool return flag is true if there was a match, and false otherwise. +func (enc ZapfDingbatsEncoder) RuneToCharcode(val rune) (byte, bool) { + glyph, found := enc.RuneToGlyph(val) + if !found { + common.Log.Debug("ZapfDingbats encoding error: unable to find rune->glyph entry (%v)", val) + return 0, false + } + + code, found := zapfDingbatsEncodingGlyphToCharcodeMap[glyph] + if !found { + common.Log.Debug("ZapfDingbats encoding error: unable to find glyph->charcode entry (%s)", glyph) + return 0, false + } + + return code, true +} + +// Convert character code to rune. +// The bool return flag is true if there was a match, and false otherwise. +func (enc ZapfDingbatsEncoder) CharcodeToRune(charcode byte) (rune, bool) { + glyph, found := zapfDingbatsEncodingCharcodeToGlyphMap[charcode] + if !found { + common.Log.Debug("ZapfDingbats encoding error: unable to find charcode->glyph entry (%d)", charcode) + return 0, false + } + + return enc.GlyphToRune(glyph) +} + +// Convert rune to glyph name. +// The bool return flag is true if there was a match, and false otherwise. +func (enc ZapfDingbatsEncoder) RuneToGlyph(val rune) (string, bool) { + // Seek in the zapfdingbats list first. + glyph, found := runeToGlyph(val, zapfdingbatsRuneToGlyphMap) + if !found { + // Then revert to glyphlist if not found. + glyph, found = runeToGlyph(val, glyphlistRuneToGlyphMap) + if !found { + common.Log.Debug("ZapfDingbats encoding error: unable to find rune->glyph entry (%v)", val) + return "", false + } + } + + return glyph, true +} + +// Convert glyph to rune. +// The bool return flag is true if there was a match, and false otherwise. +func (enc ZapfDingbatsEncoder) GlyphToRune(glyph string) (rune, bool) { + // Seek in the zapfdingbats list first. + val, found := glyphToRune(glyph, zapfdingbatsGlyphToRuneMap) + if !found { + // Then revert to glyphlist if not found. + val, found = glyphToRune(glyph, glyphlistGlyphToRuneMap) + if !found { + common.Log.Debug("Symbol encoding error: unable to find glyph->rune entry (%v)", glyph) + return 0, false + } + } + + return val, true +} + +// Convert to PDF Object. +func (enc ZapfDingbatsEncoder) ToPdfObject() core.PdfObject { + dict := core.MakeDict() + dict.Set("Type", core.MakeName("Encoding")) + + // Returning an empty Encoding object with no differences. Indicates that we are using the font's built-in + // encoding. + return core.MakeIndirectObject(dict) +} + +var zapfDingbatsEncodingCharcodeToGlyphMap = map[byte]string{ + 32: "space", + 33: "a1", + 34: "a2", + 35: "a202", + 36: "a3", + 37: "a4", + 38: "a5", + 39: "a119", + 40: "a118", + 41: "a117", + 42: "a11", + 43: "a12", + 44: "a13", + 45: "a14", + 46: "a15", + 47: "a16", + 48: "a105", + 49: "a17", + 50: "a18", + 51: "a19", + 52: "a20", + 53: "a21", + 54: "a22", + 55: "a23", + 56: "a24", + 57: "a25", + 58: "a26", + 59: "a27", + 60: "a28", + 61: "a6", + 62: "a7", + 63: "a8", + 64: "a9", + 65: "a10", + 66: "a29", + 67: "a30", + 68: "a31", + 69: "a32", + 70: "a33", + 71: "a34", + 72: "a35", + 73: "a36", + 74: "a37", + 75: "a38", + 76: "a39", + 77: "a40", + 78: "a41", + 79: "a42", + 80: "a43", + 81: "a44", + 82: "a45", + 83: "a46", + 84: "a47", + 85: "a48", + 86: "a49", + 87: "a50", + 88: "a51", + 89: "a52", + 90: "a53", + 91: "a54", + 92: "a55", + 93: "a56", + 94: "a57", + 95: "a58", + 96: "a59", + 97: "a60", + 98: "a61", + 99: "a62", + 100: "a63", + 101: "a64", + 102: "a65", + 103: "a66", + 104: "a67", + 105: "a68", + 106: "a69", + 107: "a70", + 108: "a71", + 109: "a72", + 110: "a73", + 111: "a74", + 112: "a203", + 113: "a75", + 114: "a204", + 115: "a76", + 116: "a77", + 117: "a78", + 118: "a79", + 119: "a81", + 120: "a82", + 121: "a83", + 122: "a84", + 123: "a97", + 124: "a98", + 125: "a99", + 126: "a100", + 128: "a89", + 129: "a90", + 130: "a93", + 131: "a94", + 132: "a91", + 133: "a92", + 134: "a205", + 135: "a85", + 136: "a206", + 137: "a86", + 138: "a87", + 139: "a88", + 140: "a95", + 141: "a96", + 161: "a101", + 162: "a102", + 163: "a103", + 164: "a104", + 165: "a106", + 166: "a107", + 167: "a108", + 168: "a112", + 169: "a111", + 170: "a110", + 171: "a109", + 172: "a120", + 173: "a121", + 174: "a122", + 175: "a123", + 176: "a124", + 177: "a125", + 178: "a126", + 179: "a127", + 180: "a128", + 181: "a129", + 182: "a130", + 183: "a131", + 184: "a132", + 185: "a133", + 186: "a134", + 187: "a135", + 188: "a136", + 189: "a137", + 190: "a138", + 191: "a139", + 192: "a140", + 193: "a141", + 194: "a142", + 195: "a143", + 196: "a144", + 197: "a145", + 198: "a146", + 199: "a147", + 200: "a148", + 201: "a149", + 202: "a150", + 203: "a151", + 204: "a152", + 205: "a153", + 206: "a154", + 207: "a155", + 208: "a156", + 209: "a157", + 210: "a158", + 211: "a159", + 212: "a160", + 213: "a161", + 214: "a163", + 215: "a164", + 216: "a196", + 217: "a165", + 218: "a192", + 219: "a166", + 220: "a167", + 221: "a168", + 222: "a169", + 223: "a170", + 224: "a171", + 225: "a172", + 226: "a173", + 227: "a162", + 228: "a174", + 229: "a175", + 230: "a176", + 231: "a177", + 232: "a178", + 233: "a179", + 234: "a193", + 235: "a180", + 236: "a199", + 237: "a181", + 238: "a200", + 239: "a182", + 241: "a201", + 242: "a183", + 243: "a184", + 244: "a197", + 245: "a185", + 246: "a194", + 247: "a198", + 248: "a186", + 249: "a195", + 250: "a187", + 251: "a188", + 252: "a189", + 253: "a190", + 254: "a191", +} + +var zapfDingbatsEncodingGlyphToCharcodeMap = map[string]byte{ + "space": 32, + "a1": 33, + "a2": 34, + "a202": 35, + "a3": 36, + "a4": 37, + "a5": 38, + "a119": 39, + "a118": 40, + "a117": 41, + "a11": 42, + "a12": 43, + "a13": 44, + "a14": 45, + "a15": 46, + "a16": 47, + "a105": 48, + "a17": 49, + "a18": 50, + "a19": 51, + "a20": 52, + "a21": 53, + "a22": 54, + "a23": 55, + "a24": 56, + "a25": 57, + "a26": 58, + "a27": 59, + "a28": 60, + "a6": 61, + "a7": 62, + "a8": 63, + "a9": 64, + "a10": 65, + "a29": 66, + "a30": 67, + "a31": 68, + "a32": 69, + "a33": 70, + "a34": 71, + "a35": 72, + "a36": 73, + "a37": 74, + "a38": 75, + "a39": 76, + "a40": 77, + "a41": 78, + "a42": 79, + "a43": 80, + "a44": 81, + "a45": 82, + "a46": 83, + "a47": 84, + "a48": 85, + "a49": 86, + "a50": 87, + "a51": 88, + "a52": 89, + "a53": 90, + "a54": 91, + "a55": 92, + "a56": 93, + "a57": 94, + "a58": 95, + "a59": 96, + "a60": 97, + "a61": 98, + "a62": 99, + "a63": 100, + "a64": 101, + "a65": 102, + "a66": 103, + "a67": 104, + "a68": 105, + "a69": 106, + "a70": 107, + "a71": 108, + "a72": 109, + "a73": 110, + "a74": 111, + "a203": 112, + "a75": 113, + "a204": 114, + "a76": 115, + "a77": 116, + "a78": 117, + "a79": 118, + "a81": 119, + "a82": 120, + "a83": 121, + "a84": 122, + "a97": 123, + "a98": 124, + "a99": 125, + "a100": 126, + "a89": 128, + "a90": 129, + "a93": 130, + "a94": 131, + "a91": 132, + "a92": 133, + "a205": 134, + "a85": 135, + "a206": 136, + "a86": 137, + "a87": 138, + "a88": 139, + "a95": 140, + "a96": 141, + "a101": 161, + "a102": 162, + "a103": 163, + "a104": 164, + "a106": 165, + "a107": 166, + "a108": 167, + "a112": 168, + "a111": 169, + "a110": 170, + "a109": 171, + "a120": 172, + "a121": 173, + "a122": 174, + "a123": 175, + "a124": 176, + "a125": 177, + "a126": 178, + "a127": 179, + "a128": 180, + "a129": 181, + "a130": 182, + "a131": 183, + "a132": 184, + "a133": 185, + "a134": 186, + "a135": 187, + "a136": 188, + "a137": 189, + "a138": 190, + "a139": 191, + "a140": 192, + "a141": 193, + "a142": 194, + "a143": 195, + "a144": 196, + "a145": 197, + "a146": 198, + "a147": 199, + "a148": 200, + "a149": 201, + "a150": 202, + "a151": 203, + "a152": 204, + "a153": 205, + "a154": 206, + "a155": 207, + "a156": 208, + "a157": 209, + "a158": 210, + "a159": 211, + "a160": 212, + "a161": 213, + "a163": 214, + "a164": 215, + "a196": 216, + "a165": 217, + "a192": 218, + "a166": 219, + "a167": 220, + "a168": 221, + "a169": 222, + "a170": 223, + "a171": 224, + "a172": 225, + "a173": 226, + "a162": 227, + "a174": 228, + "a175": 229, + "a176": 230, + "a177": 231, + "a178": 232, + "a179": 233, + "a193": 234, + "a180": 235, + "a199": 236, + "a181": 237, + "a200": 238, + "a182": 239, + "a201": 241, + "a183": 242, + "a184": 243, + "a197": 244, + "a185": 245, + "a194": 246, + "a198": 247, + "a186": 248, + "a195": 249, + "a187": 250, + "a188": 251, + "a189": 252, + "a190": 253, + "a191": 254, +}