Last active
May 4, 2017 06:43
-
-
Save Bak-Jin-Hyeong/cf8d3ff817b6dce5c8e0648f51a193c5 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <cstring> | |
#include <algorithm> | |
#include <utility> | |
#include <string> | |
#include <regex> | |
template<typename C> class EncodeCodePointToUTF { | |
public: | |
C encoded[(4 / sizeof(C)) + 1] = {}; | |
int length = 1; | |
explicit EncodeCodePointToUTF(unsigned int codePoint) { | |
EncodeImpl<sizeof(C)>(codePoint); | |
} | |
private: | |
template<size_t> void EncodeImpl(unsigned int codePoint); | |
template<> void EncodeImpl<4>(unsigned int codePoint) { | |
encoded[0] = static_cast<C>(codePoint); | |
encoded[1] = '\0'; | |
length = 1; | |
} | |
template<> void EncodeImpl<2>(unsigned int codePoint) { | |
if (codePoint <= 0xFFFF) { | |
encoded[0] = static_cast<C>(codePoint); | |
encoded[1] = '\0'; | |
length = 1; | |
} | |
else if (codePoint <= 0x10FFFF) { | |
const auto x = codePoint - 0x10000; | |
encoded[0] = static_cast<C>(0xD800 + ((x >> 10) & 0x3FF)); | |
encoded[1] = static_cast<C>(0xDC00 + (x & 0x3FF)); | |
encoded[2] = '\0'; | |
length = 2; | |
} | |
else { | |
encoded[0] = '\0'; | |
length = 0; | |
} | |
} | |
template<> void EncodeImpl<1>(unsigned int codePoint) { | |
if (codePoint <= 0x7F) { | |
encoded[0] = static_cast<C>(codePoint); | |
encoded[1] = '\0'; | |
length = 1; | |
} | |
else if (codePoint <= 0x7FF) { | |
encoded[0] = static_cast<C>(0xC0 + ((codePoint >> 6) & 0x1F)); | |
encoded[1] = static_cast<C>(0x80 + (codePoint & 0x3F)); | |
encoded[2] = '\0'; | |
length = 2; | |
} | |
else if (codePoint <= 0xFFFF) { | |
encoded[0] = static_cast<C>(0xE0 + ((codePoint >> 12) & 0xF)); | |
encoded[1] = static_cast<C>(0x80 + ((codePoint >> 6) & 0x3F)); | |
encoded[2] = static_cast<C>(0x80 + (codePoint & 0x3F)); | |
encoded[3] = '\0'; | |
length = 3; | |
} | |
else if (codePoint <= 0x10FFFF) { | |
encoded[0] = static_cast<C>(0xF0 + ((codePoint >> 18) & 0x7)); | |
encoded[1] = static_cast<C>(0x80 + ((codePoint >> 12) & 0x3F)); | |
encoded[2] = static_cast<C>(0x80 + ((codePoint >> 6) & 0x3F)); | |
encoded[3] = static_cast<C>(0x80 + (codePoint & 0x3F)); | |
encoded[4] = '\0'; | |
length = 4; | |
} | |
else { | |
encoded[0] = '\0'; | |
length = 0; | |
} | |
} | |
}; | |
inline int HTMLEntityNameToCodePoint(const char* name) { | |
struct Lookup { | |
const char* name; | |
int code; | |
}; | |
struct Compare { | |
bool operator()(const Lookup& lhs, const Lookup& rhs) const { | |
return strcmp(lhs.name, rhs.name) < 0; | |
} | |
bool operator()(const Lookup& lhs, const char* rhs) const { | |
return strcmp(lhs.name, rhs) < 0; | |
} | |
bool operator()(const char* lhs, const Lookup& rhs) const { | |
return strcmp(lhs, rhs.name) < 0; | |
} | |
}; | |
// CAUTION: Alphabetical ordering should be maintained. | |
// NOTE: scrabbed from https://dev.w3.org/html5/html-author/charref | |
static const Lookup lookup_[] = { | |
{ "AElig", 0x000C6 }, | |
{ "AMP", 0x00026 }, | |
{ "Aacute", 0x000C1 }, | |
{ "Abreve", 0x00102 }, | |
{ "Acirc", 0x000C2 }, | |
{ "Acy", 0x00410 }, | |
{ "Afr", 0x1D504 }, | |
{ "Agrave", 0x000C0 }, | |
{ "Alpha", 0x00391 }, | |
{ "Amacr", 0x00100 }, | |
{ "And", 0x02A53 }, | |
{ "Aogon", 0x00104 }, | |
{ "Aopf", 0x1D538 }, | |
{ "ApplyFunction", 0x02061 }, | |
{ "Aring", 0x000C5 }, | |
{ "Ascr", 0x1D49C }, | |
{ "Assign", 0x02254 }, | |
{ "Atilde", 0x000C3 }, | |
{ "Aum", 0x000C4 }, | |
{ "Backslash", 0x02216 }, | |
{ "Barv", 0x02AE7 }, | |
{ "Barwed", 0x02306 }, | |
{ "Bcy", 0x00411 }, | |
{ "Because", 0x02235 }, | |
{ "Bernoullis", 0x0212C }, | |
{ "Beta", 0x00392 }, | |
{ "Bfr", 0x1D505 }, | |
{ "Bopf", 0x1D539 }, | |
{ "Breve", 0x002D8 }, | |
{ "Bscr", 0x0212C }, | |
{ "Bumpeq", 0x0224E }, | |
{ "CHcy", 0x00427 }, | |
{ "COPY", 0x000A9 }, | |
{ "Cacute", 0x00106 }, | |
{ "Cap", 0x022D2 }, | |
{ "CapitalDifferentialD", 0x02145 }, | |
{ "Cayleys", 0x0212D }, | |
{ "Ccaron", 0x0010C }, | |
{ "Ccedi", 0x000C7 }, | |
{ "Ccirc", 0x00108 }, | |
{ "Cconint", 0x02230 }, | |
{ "Cdot", 0x0010A }, | |
{ "Cedilla", 0x000B8 }, | |
{ "CenterDot", 0x000B7 }, | |
{ "Cfr", 0x0212D }, | |
{ "Chi", 0x003A7 }, | |
{ "CircleDot", 0x02299 }, | |
{ "CircleMinus", 0x02296 }, | |
{ "CirclePlus", 0x02295 }, | |
{ "CircleTimes", 0x02297 }, | |
{ "ClockwiseContourIntegra", 0x02232 }, | |
{ "CloseCurlyDoubleQuote", 0x0201D }, | |
{ "CloseCurlyQuote", 0x02019 }, | |
{ "Colon", 0x02237 }, | |
{ "Colone", 0x02A74 }, | |
{ "Congruent", 0x02261 }, | |
{ "Conint", 0x0222F }, | |
{ "ContourIntegra", 0x0222E }, | |
{ "Copf", 0x02102 }, | |
{ "Coproduct", 0x02210 }, | |
{ "CounterClockwiseContourIntegra", 0x02233 }, | |
{ "Cross", 0x02A2F }, | |
{ "Cscr", 0x1D49E }, | |
{ "Cup", 0x022D3 }, | |
{ "CupCap", 0x0224D }, | |
{ "DD", 0x02145 }, | |
{ "DDotrahd", 0x02911 }, | |
{ "DJcy", 0x00402 }, | |
{ "DScy", 0x00405 }, | |
{ "DZcy", 0x0040F }, | |
{ "Dagger", 0x02021 }, | |
{ "Darr", 0x021A1 }, | |
{ "Dashv", 0x02AE4 }, | |
{ "Dcaron", 0x0010E }, | |
{ "Dcy", 0x00414 }, | |
{ "De", 0x02207 }, | |
{ "Delta", 0x00394 }, | |
{ "Dfr", 0x1D507 }, | |
{ "DiacriticalAcute", 0x000B4 }, | |
{ "DiacriticalDot", 0x002D9 }, | |
{ "DiacriticalDoubleAcute", 0x002DD }, | |
{ "DiacriticalGrave", 0x00060 }, | |
{ "DiacriticalTilde", 0x002DC }, | |
{ "Diamond", 0x022C4 }, | |
{ "DifferentialD", 0x02146 }, | |
{ "Dopf", 0x1D53B }, | |
{ "Dot", 0x000A8 }, | |
{ "DotDot", 0x020DC }, | |
{ "DotEqua", 0x02250 }, | |
{ "DoubleContourIntegra", 0x0222F }, | |
{ "DoubleDot", 0x000A8 }, | |
{ "DoubleDownArrow", 0x021D3 }, | |
{ "DoubleLeftArrow", 0x021D0 }, | |
{ "DoubleLeftRightArrow", 0x021D4 }, | |
{ "DoubleLeftTee", 0x02AE4 }, | |
{ "DoubleLongLeftArrow", 0x027F8 }, | |
{ "DoubleLongLeftRightArrow", 0x027FA }, | |
{ "DoubleLongRightArrow", 0x027F9 }, | |
{ "DoubleRightArrow", 0x021D2 }, | |
{ "DoubleRightTee", 0x022A8 }, | |
{ "DoubleUpArrow", 0x021D1 }, | |
{ "DoubleUpDownArrow", 0x021D5 }, | |
{ "DoubleVerticalBar", 0x02225 }, | |
{ "DownArrow", 0x02193 }, | |
{ "DownArrowBar", 0x02913 }, | |
{ "DownArrowUpArrow", 0x021F5 }, | |
{ "DownBreve", 0x00311 }, | |
{ "DownLeftRightVector", 0x02950 }, | |
{ "DownLeftTeeVector", 0x0295E }, | |
{ "DownLeftVector", 0x021BD }, | |
{ "DownLeftVectorBar", 0x02956 }, | |
{ "DownRightTeeVector", 0x0295F }, | |
{ "DownRightVector", 0x021C1 }, | |
{ "DownRightVectorBar", 0x02957 }, | |
{ "DownTee", 0x022A4 }, | |
{ "DownTeeArrow", 0x021A7 }, | |
{ "Downarrow", 0x021D3 }, | |
{ "Dscr", 0x1D49F }, | |
{ "Dstrok", 0x00110 }, | |
{ "ENG", 0x0014A }, | |
{ "ETH", 0x000D0 }, | |
{ "Eacute", 0x000C9 }, | |
{ "Ecaron", 0x0011A }, | |
{ "Ecirc", 0x000CA }, | |
{ "Ecy", 0x0042D }, | |
{ "Edot", 0x00116 }, | |
{ "Efr", 0x1D508 }, | |
{ "Egrave", 0x000C8 }, | |
{ "Element", 0x02208 }, | |
{ "Emacr", 0x00112 }, | |
{ "EmptySmallSquare", 0x025FB }, | |
{ "EmptyVerySmallSquare", 0x025AB }, | |
{ "Eogon", 0x00118 }, | |
{ "Eopf", 0x1D53C }, | |
{ "Epsilon", 0x00395 }, | |
{ "Equa", 0x02A75 }, | |
{ "EqualTilde", 0x02242 }, | |
{ "Equilibrium", 0x021CC }, | |
{ "Escr", 0x02130 }, | |
{ "Esim", 0x02A73 }, | |
{ "Eta", 0x00397 }, | |
{ "Eum", 0x000CB }, | |
{ "Exists", 0x02203 }, | |
{ "ExponentialE", 0x02147 }, | |
{ "Fcy", 0x00424 }, | |
{ "Ffr", 0x1D509 }, | |
{ "FilledSmallSquare", 0x025FC }, | |
{ "FilledVerySmallSquare", 0x025AA }, | |
{ "Fopf", 0x1D53D }, | |
{ "ForAl", 0x02200 }, | |
{ "Fouriertrf", 0x02131 }, | |
{ "Fscr", 0x02131 }, | |
{ "GJcy", 0x00403 }, | |
{ "GT", 0x0003E }, | |
{ "Gamma", 0x00393 }, | |
{ "Gammad", 0x003DC }, | |
{ "Gbreve", 0x0011E }, | |
{ "Gcedi", 0x00122 }, | |
{ "Gcirc", 0x0011C }, | |
{ "Gcy", 0x00413 }, | |
{ "Gdot", 0x00120 }, | |
{ "Gfr", 0x1D50A }, | |
{ "Gg", 0x022D9 }, | |
{ "Gopf", 0x1D53E }, | |
{ "GreaterEqua", 0x02265 }, | |
{ "GreaterEqualLess", 0x022DB }, | |
{ "GreaterFullEqua", 0x02267 }, | |
{ "GreaterGreater", 0x02AA2 }, | |
{ "GreaterLess", 0x02277 }, | |
{ "GreaterSlantEqua", 0x02A7E }, | |
{ "GreaterTilde", 0x02273 }, | |
{ "Gscr", 0x1D4A2 }, | |
{ "Gt", 0x0226B }, | |
{ "HARDcy", 0x0042A }, | |
{ "Hacek", 0x002C7 }, | |
{ "Hat", 0x0005E }, | |
{ "Hcirc", 0x00124 }, | |
{ "Hfr", 0x0210C }, | |
{ "HilbertSpace", 0x0210B }, | |
{ "Hopf", 0x0210D }, | |
{ "HorizontalLine", 0x02500 }, | |
{ "Hscr", 0x0210B }, | |
{ "Hstrok", 0x00126 }, | |
{ "HumpDownHump", 0x0224E }, | |
{ "HumpEqua", 0x0224F }, | |
{ "IEcy", 0x00415 }, | |
{ "IJlig", 0x00132 }, | |
{ "IOcy", 0x00401 }, | |
{ "Iacute", 0x000CD }, | |
{ "Icirc", 0x000CE }, | |
{ "Icy", 0x00418 }, | |
{ "Idot", 0x00130 }, | |
{ "Ifr", 0x02111 }, | |
{ "Igrave", 0x000CC }, | |
{ "Im", 0x02111 }, | |
{ "Imacr", 0x0012A }, | |
{ "ImaginaryI", 0x02148 }, | |
{ "Implies", 0x021D2 }, | |
{ "Int", 0x0222C }, | |
{ "Integra", 0x0222B }, | |
{ "Intersection", 0x022C2 }, | |
{ "InvisibleComma", 0x02063 }, | |
{ "InvisibleTimes", 0x02062 }, | |
{ "Iogon", 0x0012E }, | |
{ "Iopf", 0x1D540 }, | |
{ "Iota", 0x00399 }, | |
{ "Iscr", 0x02110 }, | |
{ "Itilde", 0x00128 }, | |
{ "Iukcy", 0x00406 }, | |
{ "Ium", 0x000CF }, | |
{ "Jcirc", 0x00134 }, | |
{ "Jcy", 0x00419 }, | |
{ "Jfr", 0x1D50D }, | |
{ "Jopf", 0x1D541 }, | |
{ "Jscr", 0x1D4A5 }, | |
{ "Jsercy", 0x00408 }, | |
{ "Jukcy", 0x00404 }, | |
{ "KHcy", 0x00425 }, | |
{ "KJcy", 0x0040C }, | |
{ "Kappa", 0x0039A }, | |
{ "Kcedi", 0x00136 }, | |
{ "Kcy", 0x0041A }, | |
{ "Kfr", 0x1D50E }, | |
{ "Kopf", 0x1D542 }, | |
{ "Kscr", 0x1D4A6 }, | |
{ "LJcy", 0x00409 }, | |
{ "LT", 0x0003C }, | |
{ "Lacute", 0x00139 }, | |
{ "Lambda", 0x0039B }, | |
{ "Lang", 0x027EA }, | |
{ "Laplacetrf", 0x02112 }, | |
{ "Larr", 0x0219E }, | |
{ "Lcaron", 0x0013D }, | |
{ "Lcedi", 0x0013B }, | |
{ "Lcy", 0x0041B }, | |
{ "LeftAngleBracket", 0x027E8 }, | |
{ "LeftArrow", 0x02190 }, | |
{ "LeftArrowBar", 0x021E4 }, | |
{ "LeftArrowRightArrow", 0x021C6 }, | |
{ "LeftCeiling", 0x02308 }, | |
{ "LeftDoubleBracket", 0x027E6 }, | |
{ "LeftDownTeeVector", 0x02961 }, | |
{ "LeftDownVector", 0x021C3 }, | |
{ "LeftDownVectorBar", 0x02959 }, | |
{ "LeftFloor", 0x0230A }, | |
{ "LeftRightArrow", 0x02194 }, | |
{ "LeftRightVector", 0x0294E }, | |
{ "LeftTee", 0x022A3 }, | |
{ "LeftTeeArrow", 0x021A4 }, | |
{ "LeftTeeVector", 0x0295A }, | |
{ "LeftTriangle", 0x022B2 }, | |
{ "LeftTriangleBar", 0x029CF }, | |
{ "LeftTriangleEqua", 0x022B4 }, | |
{ "LeftUpDownVector", 0x02951 }, | |
{ "LeftUpTeeVector", 0x02960 }, | |
{ "LeftUpVector", 0x021BF }, | |
{ "LeftUpVectorBar", 0x02958 }, | |
{ "LeftVector", 0x021BC }, | |
{ "LeftVectorBar", 0x02952 }, | |
{ "Leftarrow", 0x021D0 }, | |
{ "Leftrightarrow", 0x021D4 }, | |
{ "LessEqualGreater", 0x022DA }, | |
{ "LessFullEqua", 0x02266 }, | |
{ "LessGreater", 0x02276 }, | |
{ "LessLess", 0x02AA1 }, | |
{ "LessSlantEqua", 0x02A7D }, | |
{ "LessTilde", 0x02272 }, | |
{ "Lfr", 0x1D50F }, | |
{ "L", 0x022D8 }, | |
{ "Lleftarrow", 0x021DA }, | |
{ "Lmidot", 0x0013F }, | |
{ "LongLeftArrow", 0x027F5 }, | |
{ "LongLeftRightArrow", 0x027F7 }, | |
{ "LongRightArrow", 0x027F6 }, | |
{ "Longleftarrow", 0x027F8 }, | |
{ "Longleftrightarrow", 0x027FA }, | |
{ "Longrightarrow", 0x027F9 }, | |
{ "Lopf", 0x1D543 }, | |
{ "LowerLeftArrow", 0x02199 }, | |
{ "LowerRightArrow", 0x02198 }, | |
{ "Lscr", 0x02112 }, | |
{ "Lsh", 0x021B0 }, | |
{ "Lstrok", 0x00141 }, | |
{ "Lt", 0x0226A }, | |
{ "Map", 0x02905 }, | |
{ "Mcy", 0x0041C }, | |
{ "MediumSpace", 0x0205F }, | |
{ "Mellintrf", 0x02133 }, | |
{ "Mfr", 0x1D510 }, | |
{ "MinusPlus", 0x02213 }, | |
{ "Mopf", 0x1D544 }, | |
{ "Mscr", 0x02133 }, | |
{ "Mu", 0x0039C }, | |
{ "NJcy", 0x0040A }, | |
{ "Nacute", 0x00143 }, | |
{ "Ncaron", 0x00147 }, | |
{ "Ncedi", 0x00145 }, | |
{ "Ncy", 0x0041D }, | |
{ "NegativeMediumSpace", 0x0200B }, | |
{ "NegativeThickSpace", 0x0200B }, | |
{ "NegativeThinSpace", 0x0200B }, | |
{ "NegativeVeryThinSpace", 0x0200B }, | |
{ "NestedGreaterGreater", 0x0226B }, | |
{ "NestedLessLess", 0x0226A }, | |
{ "NewLine", 0x0000A }, | |
{ "Nfr", 0x1D511 }, | |
{ "NoBreak", 0x02060 }, | |
{ "NonBreakingSpace", 0x000A0 }, | |
{ "Nopf", 0x02115 }, | |
{ "Not", 0x02AEC }, | |
{ "NotCongruent", 0x02262 }, | |
{ "NotCupCap", 0x0226D }, | |
{ "NotDoubleVerticalBar", 0x02226 }, | |
{ "NotElement", 0x02209 }, | |
{ "NotEqua", 0x02260 }, | |
{ "NotExists", 0x02204 }, | |
{ "NotGreater", 0x0226F }, | |
{ "NotGreaterEqua", 0x02271 }, | |
{ "NotGreaterLess", 0x02279 }, | |
{ "NotGreaterTilde", 0x02275 }, | |
{ "NotLeftTriangle", 0x022EA }, | |
{ "NotLeftTriangleEqua", 0x022EC }, | |
{ "NotLess", 0x0226E }, | |
{ "NotLessEqua", 0x02270 }, | |
{ "NotLessGreater", 0x02278 }, | |
{ "NotLessTilde", 0x02274 }, | |
{ "NotPrecedes", 0x02280 }, | |
{ "NotPrecedesSlantEqua", 0x022E0 }, | |
{ "NotReverseElement", 0x0220C }, | |
{ "NotRightTriangle", 0x022EB }, | |
{ "NotRightTriangleEqua", 0x022ED }, | |
{ "NotSquareSubsetEqua", 0x022E2 }, | |
{ "NotSquareSupersetEqua", 0x022E3 }, | |
{ "NotSubsetEqua", 0x02288 }, | |
{ "NotSucceeds", 0x02281 }, | |
{ "NotSucceedsSlantEqua", 0x022E1 }, | |
{ "NotSupersetEqua", 0x02289 }, | |
{ "NotTilde", 0x02241 }, | |
{ "NotTildeEqua", 0x02244 }, | |
{ "NotTildeFullEqua", 0x02247 }, | |
{ "NotTildeTilde", 0x02249 }, | |
{ "NotVerticalBar", 0x02224 }, | |
{ "Nscr", 0x1D4A9 }, | |
{ "Ntilde", 0x000D1 }, | |
{ "Nu", 0x0039D }, | |
{ "OElig", 0x00152 }, | |
{ "Oacute", 0x000D3 }, | |
{ "Ocirc", 0x000D4 }, | |
{ "Ocy", 0x0041E }, | |
{ "Odblac", 0x00150 }, | |
{ "Ofr", 0x1D512 }, | |
{ "Ograve", 0x000D2 }, | |
{ "Omacr", 0x0014C }, | |
{ "Omega", 0x003A9 }, | |
{ "Omicron", 0x0039F }, | |
{ "Oopf", 0x1D546 }, | |
{ "OpenCurlyDoubleQuote", 0x0201C }, | |
{ "OpenCurlyQuote", 0x02018 }, | |
{ "Or", 0x02A54 }, | |
{ "Oscr", 0x1D4AA }, | |
{ "Oslash", 0x000D8 }, | |
{ "Otilde", 0x000D5 }, | |
{ "Otimes", 0x02A37 }, | |
{ "Oum", 0x000D6 }, | |
{ "OverBar", 0x000AF }, | |
{ "OverBrace", 0x023DE }, | |
{ "OverBracket", 0x023B4 }, | |
{ "OverParenthesis", 0x023DC }, | |
{ "PartialD", 0x02202 }, | |
{ "Pcy", 0x0041F }, | |
{ "Pfr", 0x1D513 }, | |
{ "Phi", 0x003A6 }, | |
{ "Pi", 0x003A0 }, | |
{ "PlusMinus", 0x000B1 }, | |
{ "Poincareplane", 0x0210C }, | |
{ "Popf", 0x02119 }, | |
{ "Pr", 0x02ABB }, | |
{ "Precedes", 0x0227A }, | |
{ "PrecedesEqua", 0x02AAF }, | |
{ "PrecedesSlantEqua", 0x0227C }, | |
{ "PrecedesTilde", 0x0227E }, | |
{ "Prime", 0x02033 }, | |
{ "Product", 0x0220F }, | |
{ "Proportion", 0x02237 }, | |
{ "Proportiona", 0x0221D }, | |
{ "Pscr", 0x1D4AB }, | |
{ "Psi", 0x003A8 }, | |
{ "QUOT", 0x00022 }, | |
{ "Qfr", 0x1D514 }, | |
{ "Qopf", 0x0211A }, | |
{ "Qscr", 0x1D4AC }, | |
{ "RBarr", 0x02910 }, | |
{ "REG", 0x000AE }, | |
{ "Racute", 0x00154 }, | |
{ "Rang", 0x027EB }, | |
{ "Rarr", 0x021A0 }, | |
{ "Rarrt", 0x02916 }, | |
{ "Rcaron", 0x00158 }, | |
{ "Rcedi", 0x00156 }, | |
{ "Rcy", 0x00420 }, | |
{ "Re", 0x0211C }, | |
{ "ReverseElement", 0x0220B }, | |
{ "ReverseEquilibrium", 0x021CB }, | |
{ "ReverseUpEquilibrium", 0x0296F }, | |
{ "Rfr", 0x0211C }, | |
{ "Rho", 0x003A1 }, | |
{ "RightAngleBracket", 0x027E9 }, | |
{ "RightArrow", 0x02192 }, | |
{ "RightArrowBar", 0x021E5 }, | |
{ "RightArrowLeftArrow", 0x021C4 }, | |
{ "RightCeiling", 0x02309 }, | |
{ "RightDoubleBracket", 0x027E7 }, | |
{ "RightDownTeeVector", 0x0295D }, | |
{ "RightDownVector", 0x021C2 }, | |
{ "RightDownVectorBar", 0x02955 }, | |
{ "RightFloor", 0x0230B }, | |
{ "RightTee", 0x022A2 }, | |
{ "RightTeeArrow", 0x021A6 }, | |
{ "RightTeeVector", 0x0295B }, | |
{ "RightTriangle", 0x022B3 }, | |
{ "RightTriangleBar", 0x029D0 }, | |
{ "RightTriangleEqua", 0x022B5 }, | |
{ "RightUpDownVector", 0x0294F }, | |
{ "RightUpTeeVector", 0x0295C }, | |
{ "RightUpVector", 0x021BE }, | |
{ "RightUpVectorBar", 0x02954 }, | |
{ "RightVector", 0x021C0 }, | |
{ "RightVectorBar", 0x02953 }, | |
{ "Rightarrow", 0x021D2 }, | |
{ "Ropf", 0x0211D }, | |
{ "RoundImplies", 0x02970 }, | |
{ "Rrightarrow", 0x021DB }, | |
{ "Rscr", 0x0211B }, | |
{ "Rsh", 0x021B1 }, | |
{ "RuleDelayed", 0x029F4 }, | |
{ "SHCHcy", 0x00429 }, | |
{ "SHcy", 0x00428 }, | |
{ "SOFTcy", 0x0042C }, | |
{ "Sacute", 0x0015A }, | |
{ "Sc", 0x02ABC }, | |
{ "Scaron", 0x00160 }, | |
{ "Scedi", 0x0015E }, | |
{ "Scirc", 0x0015C }, | |
{ "Scy", 0x00421 }, | |
{ "Sfr", 0x1D516 }, | |
{ "ShortDownArrow", 0x02193 }, | |
{ "ShortLeftArrow", 0x02190 }, | |
{ "ShortRightArrow", 0x02192 }, | |
{ "ShortUpArrow", 0x02191 }, | |
{ "Sigma", 0x003A3 }, | |
{ "SmallCircle", 0x02218 }, | |
{ "Sopf", 0x1D54A }, | |
{ "Sqrt", 0x0221A }, | |
{ "Square", 0x025A1 }, | |
{ "SquareIntersection", 0x02293 }, | |
{ "SquareSubset", 0x0228F }, | |
{ "SquareSubsetEqua", 0x02291 }, | |
{ "SquareSuperset", 0x02290 }, | |
{ "SquareSupersetEqua", 0x02292 }, | |
{ "SquareUnion", 0x02294 }, | |
{ "Sscr", 0x1D4AE }, | |
{ "Star", 0x022C6 }, | |
{ "Sub", 0x022D0 }, | |
{ "Subset", 0x022D0 }, | |
{ "SubsetEqua", 0x02286 }, | |
{ "Succeeds", 0x0227B }, | |
{ "SucceedsEqua", 0x02AB0 }, | |
{ "SucceedsSlantEqua", 0x0227D }, | |
{ "SucceedsTilde", 0x0227F }, | |
{ "SuchThat", 0x0220B }, | |
{ "Sum", 0x02211 }, | |
{ "Sup", 0x022D1 }, | |
{ "Superset", 0x02283 }, | |
{ "SupersetEqua", 0x02287 }, | |
{ "Supset", 0x022D1 }, | |
{ "THORN", 0x000DE }, | |
{ "TRADE", 0x02122 }, | |
{ "TSHcy", 0x0040B }, | |
{ "TScy", 0x00426 }, | |
{ "Tab", 0x00009 }, | |
{ "Tau", 0x003A4 }, | |
{ "Tcaron", 0x00164 }, | |
{ "Tcedi", 0x00162 }, | |
{ "Tcy", 0x00422 }, | |
{ "Tfr", 0x1D517 }, | |
{ "Therefore", 0x02234 }, | |
{ "Theta", 0x00398 }, | |
{ "ThinSpace", 0x02009 }, | |
{ "Tilde", 0x0223C }, | |
{ "TildeEqua", 0x02243 }, | |
{ "TildeFullEqua", 0x02245 }, | |
{ "TildeTilde", 0x02248 }, | |
{ "Topf", 0x1D54B }, | |
{ "TripleDot", 0x020DB }, | |
{ "Tscr", 0x1D4AF }, | |
{ "Tstrok", 0x00166 }, | |
{ "Uacute", 0x000DA }, | |
{ "Uarr", 0x0219F }, | |
{ "Uarrocir", 0x02949 }, | |
{ "Ubrcy", 0x0040E }, | |
{ "Ubreve", 0x0016C }, | |
{ "Ucirc", 0x000DB }, | |
{ "Ucy", 0x00423 }, | |
{ "Udblac", 0x00170 }, | |
{ "Ufr", 0x1D518 }, | |
{ "Ugrave", 0x000D9 }, | |
{ "Umacr", 0x0016A }, | |
{ "UnderBar", 0x00332 }, | |
{ "UnderBrace", 0x023DF }, | |
{ "UnderBracket", 0x023B5 }, | |
{ "UnderParenthesis", 0x023DD }, | |
{ "Union", 0x022C3 }, | |
{ "UnionPlus", 0x0228E }, | |
{ "Uogon", 0x00172 }, | |
{ "Uopf", 0x1D54C }, | |
{ "UpArrow", 0x02191 }, | |
{ "UpArrowBar", 0x02912 }, | |
{ "UpArrowDownArrow", 0x021C5 }, | |
{ "UpDownArrow", 0x02195 }, | |
{ "UpEquilibrium", 0x0296E }, | |
{ "UpTee", 0x022A5 }, | |
{ "UpTeeArrow", 0x021A5 }, | |
{ "Uparrow", 0x021D1 }, | |
{ "Updownarrow", 0x021D5 }, | |
{ "UpperLeftArrow", 0x02196 }, | |
{ "UpperRightArrow", 0x02197 }, | |
{ "Upsi", 0x003D2 }, | |
{ "Upsilon", 0x003A5 }, | |
{ "Uring", 0x0016E }, | |
{ "Uscr", 0x1D4B0 }, | |
{ "Utilde", 0x00168 }, | |
{ "Uum", 0x000DC }, | |
{ "VDash", 0x022AB }, | |
{ "Vbar", 0x02AEB }, | |
{ "Vcy", 0x00412 }, | |
{ "Vdash", 0x022A9 }, | |
{ "Vdash", 0x02AE6 }, | |
{ "Vee", 0x022C1 }, | |
{ "Verbar", 0x02016 }, | |
{ "Vert", 0x02016 }, | |
{ "VerticalBar", 0x02223 }, | |
{ "VerticalLine", 0x0007C }, | |
{ "VerticalSeparator", 0x02758 }, | |
{ "VerticalTilde", 0x02240 }, | |
{ "VeryThinSpace", 0x0200A }, | |
{ "Vfr", 0x1D519 }, | |
{ "Vopf", 0x1D54D }, | |
{ "Vscr", 0x1D4B1 }, | |
{ "Vvdash", 0x022AA }, | |
{ "Wcirc", 0x00174 }, | |
{ "Wedge", 0x022C0 }, | |
{ "Wfr", 0x1D51A }, | |
{ "Wopf", 0x1D54E }, | |
{ "Wscr", 0x1D4B2 }, | |
{ "Xfr", 0x1D51B }, | |
{ "Xi", 0x0039E }, | |
{ "Xopf", 0x1D54F }, | |
{ "Xscr", 0x1D4B3 }, | |
{ "YAcy", 0x0042F }, | |
{ "YIcy", 0x00407 }, | |
{ "YUcy", 0x0042E }, | |
{ "Yacute", 0x000DD }, | |
{ "Ycirc", 0x00176 }, | |
{ "Ycy", 0x0042B }, | |
{ "Yfr", 0x1D51C }, | |
{ "Yopf", 0x1D550 }, | |
{ "Yscr", 0x1D4B4 }, | |
{ "Yum", 0x00178 }, | |
{ "ZHcy", 0x00416 }, | |
{ "Zacute", 0x00179 }, | |
{ "Zcaron", 0x0017D }, | |
{ "Zcy", 0x00417 }, | |
{ "Zdot", 0x0017B }, | |
{ "ZeroWidthSpace", 0x0200B }, | |
{ "Zeta", 0x00396 }, | |
{ "Zfr", 0x02128 }, | |
{ "Zopf", 0x02124 }, | |
{ "Zscr", 0x1D4B5 }, | |
{ "aacute", 0x000E1 }, | |
{ "abreve", 0x00103 }, | |
{ "ac", 0x0223E }, | |
{ "acd", 0x0223F }, | |
{ "acirc", 0x000E2 }, | |
{ "acute", 0x000B4 }, | |
{ "acy", 0x00430 }, | |
{ "aelig", 0x000E6 }, | |
{ "af", 0x02061 }, | |
{ "afr", 0x1D51E }, | |
{ "agrave", 0x000E0 }, | |
{ "alefsym", 0x02135 }, | |
{ "aleph", 0x02135 }, | |
{ "alpha", 0x003B1 }, | |
{ "amacr", 0x00101 }, | |
{ "amalg", 0x02A3F }, | |
{ "amp", 0x00026 }, | |
{ "and", 0x02227 }, | |
{ "andand", 0x02A55 }, | |
{ "andd", 0x02A5C }, | |
{ "andslope", 0x02A58 }, | |
{ "andv", 0x02A5A }, | |
{ "ang", 0x02220 }, | |
{ "ange", 0x029A4 }, | |
{ "angle", 0x02220 }, | |
{ "angmsd", 0x02221 }, | |
{ "angmsdaa", 0x029A8 }, | |
{ "angmsdab", 0x029A9 }, | |
{ "angmsdac", 0x029AA }, | |
{ "angmsdad", 0x029AB }, | |
{ "angmsdae", 0x029AC }, | |
{ "angmsdaf", 0x029AD }, | |
{ "angmsdag", 0x029AE }, | |
{ "angmsdah", 0x029AF }, | |
{ "angrt", 0x0221F }, | |
{ "angrtvb", 0x022BE }, | |
{ "angrtvbd", 0x0299D }, | |
{ "angsph", 0x02222 }, | |
{ "angst", 0x0212B }, | |
{ "angzarr", 0x0237C }, | |
{ "aogon", 0x00105 }, | |
{ "aopf", 0x1D552 }, | |
{ "ap", 0x02248 }, | |
{ "apE", 0x02A70 }, | |
{ "apacir", 0x02A6F }, | |
{ "ape", 0x0224A }, | |
{ "apid", 0x0224B }, | |
{ "apos", 0x00027 }, | |
{ "approx", 0x02248 }, | |
{ "approxeq", 0x0224A }, | |
{ "aring", 0x000E5 }, | |
{ "ascr", 0x1D4B6 }, | |
{ "ast", 0x0002A }, | |
{ "asymp", 0x02248 }, | |
{ "asympeq", 0x0224D }, | |
{ "atilde", 0x000E3 }, | |
{ "aum", 0x000E4 }, | |
{ "awconint", 0x02233 }, | |
{ "awint", 0x02A11 }, | |
{ "bNot", 0x02AED }, | |
{ "backcong", 0x0224C }, | |
{ "backepsilon", 0x003F6 }, | |
{ "backprime", 0x02035 }, | |
{ "backsim", 0x0223D }, | |
{ "backsimeq", 0x022CD }, | |
{ "barvee", 0x022BD }, | |
{ "barwed", 0x02305 }, | |
{ "barwedge", 0x02305 }, | |
{ "bbrk", 0x023B5 }, | |
{ "bbrktbrk", 0x023B6 }, | |
{ "bcong", 0x0224C }, | |
{ "bcy", 0x00431 }, | |
{ "bdquo", 0x0201E }, | |
{ "becaus", 0x02235 }, | |
{ "because", 0x02235 }, | |
{ "bemptyv", 0x029B0 }, | |
{ "bepsi", 0x003F6 }, | |
{ "bernou", 0x0212C }, | |
{ "beta", 0x003B2 }, | |
{ "beth", 0x02136 }, | |
{ "between", 0x0226C }, | |
{ "bfr", 0x1D51F }, | |
{ "bigcap", 0x022C2 }, | |
{ "bigcirc", 0x025EF }, | |
{ "bigcup", 0x022C3 }, | |
{ "bigodot", 0x02A00 }, | |
{ "bigoplus", 0x02A01 }, | |
{ "bigotimes", 0x02A02 }, | |
{ "bigsqcup", 0x02A06 }, | |
{ "bigstar", 0x02605 }, | |
{ "bigtriangledown", 0x025BD }, | |
{ "bigtriangleup", 0x025B3 }, | |
{ "biguplus", 0x02A04 }, | |
{ "bigvee", 0x022C1 }, | |
{ "bigwedge", 0x022C0 }, | |
{ "bkarow", 0x0290D }, | |
{ "blacklozenge", 0x029EB }, | |
{ "blacksquare", 0x025AA }, | |
{ "blacktriangle", 0x025B4 }, | |
{ "blacktriangledown", 0x025BE }, | |
{ "blacktriangleleft", 0x025C2 }, | |
{ "blacktriangleright", 0x025B8 }, | |
{ "blank", 0x02423 }, | |
{ "blk12", 0x02592 }, | |
{ "blk14", 0x02591 }, | |
{ "blk34", 0x02593 }, | |
{ "block", 0x02588 }, | |
{ "bnot", 0x02310 }, | |
{ "bopf", 0x1D553 }, | |
{ "bot", 0x022A5 }, | |
{ "bottom", 0x022A5 }, | |
{ "bowtie", 0x022C8 }, | |
{ "boxD", 0x02557 }, | |
{ "boxDR", 0x02554 }, | |
{ "boxD", 0x02556 }, | |
{ "boxDr", 0x02553 }, | |
{ "boxH", 0x02550 }, | |
{ "boxHD", 0x02566 }, | |
{ "boxHU", 0x02569 }, | |
{ "boxHd", 0x02564 }, | |
{ "boxHu", 0x02567 }, | |
{ "boxU", 0x0255D }, | |
{ "boxUR", 0x0255A }, | |
{ "boxU", 0x0255C }, | |
{ "boxUr", 0x02559 }, | |
{ "boxV", 0x02551 }, | |
{ "boxVH", 0x0256C }, | |
{ "boxV", 0x02563 }, | |
{ "boxVR", 0x02560 }, | |
{ "boxVh", 0x0256B }, | |
{ "boxV", 0x02562 }, | |
{ "boxVr", 0x0255F }, | |
{ "boxbox", 0x029C9 }, | |
{ "boxd", 0x02555 }, | |
{ "boxdR", 0x02552 }, | |
{ "boxd", 0x02510 }, | |
{ "boxdr", 0x0250C }, | |
{ "boxh", 0x02500 }, | |
{ "boxhD", 0x02565 }, | |
{ "boxhU", 0x02568 }, | |
{ "boxhd", 0x0252C }, | |
{ "boxhu", 0x02534 }, | |
{ "boxminus", 0x0229F }, | |
{ "boxplus", 0x0229E }, | |
{ "boxtimes", 0x022A0 }, | |
{ "boxu", 0x0255B }, | |
{ "boxuR", 0x02558 }, | |
{ "boxu", 0x02518 }, | |
{ "boxur", 0x02514 }, | |
{ "boxv", 0x02502 }, | |
{ "boxvH", 0x0256A }, | |
{ "boxv", 0x02561 }, | |
{ "boxvR", 0x0255E }, | |
{ "boxvh", 0x0253C }, | |
{ "boxv", 0x02524 }, | |
{ "boxvr", 0x0251C }, | |
{ "bprime", 0x02035 }, | |
{ "breve", 0x002D8 }, | |
{ "brvbar", 0x000A6 }, | |
{ "bscr", 0x1D4B7 }, | |
{ "bsemi", 0x0204F }, | |
{ "bsim", 0x0223D }, | |
{ "bsime", 0x022CD }, | |
{ "bso", 0x0005C }, | |
{ "bsolb", 0x029C5 }, | |
{ "bul", 0x02022 }, | |
{ "bullet", 0x02022 }, | |
{ "bump", 0x0224E }, | |
{ "bumpE", 0x02AAE }, | |
{ "bumpe", 0x0224F }, | |
{ "bumpeq", 0x0224F }, | |
{ "cacute", 0x00107 }, | |
{ "cap", 0x02229 }, | |
{ "capand", 0x02A44 }, | |
{ "capbrcup", 0x02A49 }, | |
{ "capcap", 0x02A4B }, | |
{ "capcup", 0x02A47 }, | |
{ "capdot", 0x02A40 }, | |
{ "caret", 0x02041 }, | |
{ "caron", 0x002C7 }, | |
{ "ccaps", 0x02A4D }, | |
{ "ccaron", 0x0010D }, | |
{ "ccedi", 0x000E7 }, | |
{ "ccirc", 0x00109 }, | |
{ "ccups", 0x02A4C }, | |
{ "ccupssm", 0x02A50 }, | |
{ "cdot", 0x0010B }, | |
{ "cedi", 0x000B8 }, | |
{ "cemptyv", 0x029B2 }, | |
{ "cent", 0x000A2 }, | |
{ "centerdot", 0x000B7 }, | |
{ "cfr", 0x1D520 }, | |
{ "chcy", 0x00447 }, | |
{ "check", 0x02713 }, | |
{ "checkmark", 0x02713 }, | |
{ "chi", 0x003C7 }, | |
{ "cir", 0x025CB }, | |
{ "cirE", 0x029C3 }, | |
{ "circ", 0x002C6 }, | |
{ "circeq", 0x02257 }, | |
{ "circlearrowleft", 0x021BA }, | |
{ "circlearrowright", 0x021BB }, | |
{ "circledR", 0x000AE }, | |
{ "circledS", 0x024C8 }, | |
{ "circledast", 0x0229B }, | |
{ "circledcirc", 0x0229A }, | |
{ "circleddash", 0x0229D }, | |
{ "cire", 0x02257 }, | |
{ "cirfnint", 0x02A10 }, | |
{ "cirmid", 0x02AEF }, | |
{ "cirscir", 0x029C2 }, | |
{ "clubs", 0x02663 }, | |
{ "clubsuit", 0x02663 }, | |
{ "colon", 0x0003A }, | |
{ "colone", 0x02254 }, | |
{ "coloneq", 0x02254 }, | |
{ "comma", 0x0002C }, | |
{ "commat", 0x00040 }, | |
{ "comp", 0x02201 }, | |
{ "compfn", 0x02218 }, | |
{ "complement", 0x02201 }, | |
{ "complexes", 0x02102 }, | |
{ "cong", 0x02245 }, | |
{ "congdot", 0x02A6D }, | |
{ "conint", 0x0222E }, | |
{ "copf", 0x1D554 }, | |
{ "coprod", 0x02210 }, | |
{ "copy", 0x000A9 }, | |
{ "copysr", 0x02117 }, | |
{ "crarr", 0x021B5 }, | |
{ "cross", 0x02717 }, | |
{ "cscr", 0x1D4B8 }, | |
{ "csub", 0x02ACF }, | |
{ "csube", 0x02AD1 }, | |
{ "csup", 0x02AD0 }, | |
{ "csupe", 0x02AD2 }, | |
{ "ctdot", 0x022EF }, | |
{ "cudarr", 0x02938 }, | |
{ "cudarrr", 0x02935 }, | |
{ "cuepr", 0x022DE }, | |
{ "cuesc", 0x022DF }, | |
{ "cularr", 0x021B6 }, | |
{ "cularrp", 0x0293D }, | |
{ "cup", 0x0222A }, | |
{ "cupbrcap", 0x02A48 }, | |
{ "cupcap", 0x02A46 }, | |
{ "cupcup", 0x02A4A }, | |
{ "cupdot", 0x0228D }, | |
{ "cupor", 0x02A45 }, | |
{ "curarr", 0x021B7 }, | |
{ "curarrm", 0x0293C }, | |
{ "curlyeqprec", 0x022DE }, | |
{ "curlyeqsucc", 0x022DF }, | |
{ "curlyvee", 0x022CE }, | |
{ "curlywedge", 0x022CF }, | |
{ "curren", 0x000A4 }, | |
{ "curvearrowleft", 0x021B6 }, | |
{ "curvearrowright", 0x021B7 }, | |
{ "cuvee", 0x022CE }, | |
{ "cuwed", 0x022CF }, | |
{ "cwconint", 0x02232 }, | |
{ "cwint", 0x02231 }, | |
{ "cylcty", 0x0232D }, | |
{ "dArr", 0x021D3 }, | |
{ "dHar", 0x02965 }, | |
{ "dagger", 0x02020 }, | |
{ "daleth", 0x02138 }, | |
{ "darr", 0x02193 }, | |
{ "dash", 0x02010 }, | |
{ "dashv", 0x022A3 }, | |
{ "dbkarow", 0x0290F }, | |
{ "dblac", 0x002DD }, | |
{ "dcaron", 0x0010F }, | |
{ "dcy", 0x00434 }, | |
{ "dd", 0x02146 }, | |
{ "ddagger", 0x02021 }, | |
{ "ddarr", 0x021CA }, | |
{ "ddotseq", 0x02A77 }, | |
{ "deg", 0x000B0 }, | |
{ "delta", 0x003B4 }, | |
{ "demptyv", 0x029B1 }, | |
{ "dfisht", 0x0297F }, | |
{ "dfr", 0x1D521 }, | |
{ "dhar", 0x021C3 }, | |
{ "dharr", 0x021C2 }, | |
{ "diam", 0x022C4 }, | |
{ "diamond", 0x022C4 }, | |
{ "diamondsuit", 0x02666 }, | |
{ "diams", 0x02666 }, | |
{ "die", 0x000A8 }, | |
{ "digamma", 0x003DD }, | |
{ "disin", 0x022F2 }, | |
{ "div", 0x000F7 }, | |
{ "divide", 0x000F7 }, | |
{ "divideontimes", 0x022C7 }, | |
{ "divonx", 0x022C7 }, | |
{ "djcy", 0x00452 }, | |
{ "dlcorn", 0x0231E }, | |
{ "dlcrop", 0x0230D }, | |
{ "dollar", 0x00024 }, | |
{ "dopf", 0x1D555 }, | |
{ "dot", 0x002D9 }, | |
{ "doteq", 0x02250 }, | |
{ "doteqdot", 0x02251 }, | |
{ "dotminus", 0x02238 }, | |
{ "dotplus", 0x02214 }, | |
{ "dotsquare", 0x022A1 }, | |
{ "doublebarwedge", 0x02306 }, | |
{ "downarrow", 0x02193 }, | |
{ "downdownarrows", 0x021CA }, | |
{ "downharpoonleft", 0x021C3 }, | |
{ "downharpoonright", 0x021C2 }, | |
{ "drbkarow", 0x02910 }, | |
{ "drcorn", 0x0231F }, | |
{ "drcrop", 0x0230C }, | |
{ "dscr", 0x1D4B9 }, | |
{ "dscy", 0x00455 }, | |
{ "dso", 0x029F6 }, | |
{ "dstrok", 0x00111 }, | |
{ "dtdot", 0x022F1 }, | |
{ "dtri", 0x025BF }, | |
{ "dtrif", 0x025BE }, | |
{ "duarr", 0x021F5 }, | |
{ "duhar", 0x0296F }, | |
{ "dwangle", 0x029A6 }, | |
{ "dzcy", 0x0045F }, | |
{ "dzigrarr", 0x027FF }, | |
{ "eDDot", 0x02A77 }, | |
{ "eDot", 0x02251 }, | |
{ "eacute", 0x000E9 }, | |
{ "easter", 0x02A6E }, | |
{ "ecaron", 0x0011B }, | |
{ "ecir", 0x02256 }, | |
{ "ecirc", 0x000EA }, | |
{ "ecolon", 0x02255 }, | |
{ "ecy", 0x0044D }, | |
{ "edot", 0x00117 }, | |
{ "ee", 0x02147 }, | |
{ "efDot", 0x02252 }, | |
{ "efr", 0x1D522 }, | |
{ "eg", 0x02A9A }, | |
{ "egrave", 0x000E8 }, | |
{ "egs", 0x02A96 }, | |
{ "egsdot", 0x02A98 }, | |
{ "e", 0x02A99 }, | |
{ "elinters", 0x023E7 }, | |
{ "el", 0x02113 }, | |
{ "els", 0x02A95 }, | |
{ "elsdot", 0x02A97 }, | |
{ "emacr", 0x00113 }, | |
{ "empty", 0x02205 }, | |
{ "emptyset", 0x02205 }, | |
{ "emptyv", 0x02205 }, | |
{ "emsp", 0x02003 }, | |
{ "emsp13", 0x02004 }, | |
{ "emsp14", 0x02005 }, | |
{ "eng", 0x0014B }, | |
{ "ensp", 0x02002 }, | |
{ "eogon", 0x00119 }, | |
{ "eopf", 0x1D556 }, | |
{ "epar", 0x022D5 }, | |
{ "epars", 0x029E3 }, | |
{ "eplus", 0x02A71 }, | |
{ "epsi", 0x003F5 }, | |
{ "epsilon", 0x003B5 }, | |
{ "epsiv", 0x003B5 }, | |
{ "eqcirc", 0x02256 }, | |
{ "eqcolon", 0x02255 }, | |
{ "eqsim", 0x02242 }, | |
{ "eqslantgtr", 0x02A96 }, | |
{ "eqslantless", 0x02A95 }, | |
{ "equals", 0x0003D }, | |
{ "equest", 0x0225F }, | |
{ "equiv", 0x02261 }, | |
{ "equivDD", 0x02A78 }, | |
{ "eqvpars", 0x029E5 }, | |
{ "erDot", 0x02253 }, | |
{ "erarr", 0x02971 }, | |
{ "escr", 0x0212F }, | |
{ "esdot", 0x02250 }, | |
{ "esim", 0x02242 }, | |
{ "eta", 0x003B7 }, | |
{ "eth", 0x000F0 }, | |
{ "eum", 0x000EB }, | |
{ "euro", 0x020AC }, | |
{ "exc", 0x00021 }, | |
{ "exist", 0x02203 }, | |
{ "expectation", 0x02130 }, | |
{ "exponentiale", 0x02147 }, | |
{ "fallingdotseq", 0x02252 }, | |
{ "fcy", 0x00444 }, | |
{ "female", 0x02640 }, | |
{ "ffilig", 0x0FB03 }, | |
{ "fflig", 0x0FB00 }, | |
{ "ffllig", 0x0FB04 }, | |
{ "ffr", 0x1D523 }, | |
{ "filig", 0x0FB01 }, | |
{ "flat", 0x0266D }, | |
{ "fllig", 0x0FB02 }, | |
{ "fltns", 0x025B1 }, | |
{ "fnof", 0x00192 }, | |
{ "fopf", 0x1D557 }, | |
{ "foral", 0x02200 }, | |
{ "fork", 0x022D4 }, | |
{ "forkv", 0x02AD9 }, | |
{ "fpartint", 0x02A0D }, | |
{ "frac12", 0x000BD }, | |
{ "frac13", 0x02153 }, | |
{ "frac14", 0x000BC }, | |
{ "frac15", 0x02155 }, | |
{ "frac16", 0x02159 }, | |
{ "frac18", 0x0215B }, | |
{ "frac23", 0x02154 }, | |
{ "frac25", 0x02156 }, | |
{ "frac34", 0x000BE }, | |
{ "frac35", 0x02157 }, | |
{ "frac38", 0x0215C }, | |
{ "frac45", 0x02158 }, | |
{ "frac56", 0x0215A }, | |
{ "frac58", 0x0215D }, | |
{ "frac78", 0x0215E }, | |
{ "fras", 0x02044 }, | |
{ "frown", 0x02322 }, | |
{ "fscr", 0x1D4BB }, | |
{ "gE", 0x02267 }, | |
{ "gE", 0x02A8C }, | |
{ "gacute", 0x001F5 }, | |
{ "gamma", 0x003B3 }, | |
{ "gammad", 0x003DD }, | |
{ "gap", 0x02A86 }, | |
{ "gbreve", 0x0011F }, | |
{ "gcirc", 0x0011D }, | |
{ "gcy", 0x00433 }, | |
{ "gdot", 0x00121 }, | |
{ "ge", 0x02265 }, | |
{ "ge", 0x022DB }, | |
{ "geq", 0x02265 }, | |
{ "geqq", 0x02267 }, | |
{ "geqslant", 0x02A7E }, | |
{ "ges", 0x02A7E }, | |
{ "gescc", 0x02AA9 }, | |
{ "gesdot", 0x02A80 }, | |
{ "gesdoto", 0x02A82 }, | |
{ "gesdoto", 0x02A84 }, | |
{ "gesles", 0x02A94 }, | |
{ "gfr", 0x1D524 }, | |
{ "gg", 0x0226B }, | |
{ "ggg", 0x022D9 }, | |
{ "gime", 0x02137 }, | |
{ "gjcy", 0x00453 }, | |
{ "g", 0x02277 }, | |
{ "glE", 0x02A92 }, | |
{ "gla", 0x02AA5 }, | |
{ "glj", 0x02AA4 }, | |
{ "gnE", 0x02269 }, | |
{ "gnap", 0x02A8A }, | |
{ "gnapprox", 0x02A8A }, | |
{ "gne", 0x02A88 }, | |
{ "gneq", 0x02A88 }, | |
{ "gneqq", 0x02269 }, | |
{ "gnsim", 0x022E7 }, | |
{ "gopf", 0x1D558 }, | |
{ "grave", 0x00060 }, | |
{ "gscr", 0x0210A }, | |
{ "gsim", 0x02273 }, | |
{ "gsime", 0x02A8E }, | |
{ "gsim", 0x02A90 }, | |
{ "gt", 0x0003E }, | |
{ "gtcc", 0x02AA7 }, | |
{ "gtcir", 0x02A7A }, | |
{ "gtdot", 0x022D7 }, | |
{ "gtlPar", 0x02995 }, | |
{ "gtquest", 0x02A7C }, | |
{ "gtrapprox", 0x02A86 }, | |
{ "gtrarr", 0x02978 }, | |
{ "gtrdot", 0x022D7 }, | |
{ "gtreqless", 0x022DB }, | |
{ "gtreqqless", 0x02A8C }, | |
{ "gtrless", 0x02277 }, | |
{ "gtrsim", 0x02273 }, | |
{ "hArr", 0x021D4 }, | |
{ "hairsp", 0x0200A }, | |
{ "half", 0x000BD }, | |
{ "hamilt", 0x0210B }, | |
{ "hardcy", 0x0044A }, | |
{ "harr", 0x02194 }, | |
{ "harrcir", 0x02948 }, | |
{ "harrw", 0x021AD }, | |
{ "hbar", 0x0210F }, | |
{ "hcirc", 0x00125 }, | |
{ "hearts", 0x02665 }, | |
{ "heartsuit", 0x02665 }, | |
{ "hellip", 0x02026 }, | |
{ "hercon", 0x022B9 }, | |
{ "hfr", 0x1D525 }, | |
{ "hksearow", 0x02925 }, | |
{ "hkswarow", 0x02926 }, | |
{ "hoarr", 0x021FF }, | |
{ "homtht", 0x0223B }, | |
{ "hookleftarrow", 0x021A9 }, | |
{ "hookrightarrow", 0x021AA }, | |
{ "hopf", 0x1D559 }, | |
{ "horbar", 0x02015 }, | |
{ "hscr", 0x1D4BD }, | |
{ "hslash", 0x0210F }, | |
{ "hstrok", 0x00127 }, | |
{ "hybul", 0x02043 }, | |
{ "hyphen", 0x02010 }, | |
{ "iacute", 0x000ED }, | |
{ "ic", 0x02063 }, | |
{ "icirc", 0x000EE }, | |
{ "icy", 0x00438 }, | |
{ "iecy", 0x00435 }, | |
{ "iexc", 0x000A1 }, | |
{ "iff", 0x021D4 }, | |
{ "ifr", 0x1D526 }, | |
{ "igrave", 0x000EC }, | |
{ "ii", 0x02148 }, | |
{ "iiiint", 0x02A0C }, | |
{ "iiint", 0x0222D }, | |
{ "iinfin", 0x029DC }, | |
{ "iiota", 0x02129 }, | |
{ "ijlig", 0x00133 }, | |
{ "imacr", 0x0012B }, | |
{ "image", 0x02111 }, | |
{ "imagline", 0x02110 }, | |
{ "imagpart", 0x02111 }, | |
{ "imath", 0x00131 }, | |
{ "imof", 0x022B7 }, | |
{ "imped", 0x001B5 }, | |
{ "in", 0x02208 }, | |
{ "incare", 0x02105 }, | |
{ "infin", 0x0221E }, | |
{ "infintie", 0x029DD }, | |
{ "inodot", 0x00131 }, | |
{ "int", 0x0222B }, | |
{ "intca", 0x022BA }, | |
{ "integers", 0x02124 }, | |
{ "interca", 0x022BA }, | |
{ "intlarhk", 0x02A17 }, | |
{ "intprod", 0x02A3C }, | |
{ "iocy", 0x00451 }, | |
{ "iogon", 0x0012F }, | |
{ "iopf", 0x1D55A }, | |
{ "iota", 0x003B9 }, | |
{ "iprod", 0x02A3C }, | |
{ "iquest", 0x000BF }, | |
{ "iscr", 0x1D4BE }, | |
{ "isin", 0x02208 }, | |
{ "isinE", 0x022F9 }, | |
{ "isindot", 0x022F5 }, | |
{ "isins", 0x022F4 }, | |
{ "isinsv", 0x022F3 }, | |
{ "isinv", 0x02208 }, | |
{ "it", 0x02062 }, | |
{ "itilde", 0x00129 }, | |
{ "iukcy", 0x00456 }, | |
{ "ium", 0x000EF }, | |
{ "jcirc", 0x00135 }, | |
{ "jcy", 0x00439 }, | |
{ "jfr", 0x1D527 }, | |
{ "jmath", 0x00237 }, | |
{ "jopf", 0x1D55B }, | |
{ "jscr", 0x1D4BF }, | |
{ "jsercy", 0x00458 }, | |
{ "jukcy", 0x00454 }, | |
{ "kappa", 0x003BA }, | |
{ "kappav", 0x003F0 }, | |
{ "kcedi", 0x00137 }, | |
{ "kcy", 0x0043A }, | |
{ "kfr", 0x1D528 }, | |
{ "kgreen", 0x00138 }, | |
{ "khcy", 0x00445 }, | |
{ "kjcy", 0x0045C }, | |
{ "kopf", 0x1D55C }, | |
{ "kscr", 0x1D4C0 }, | |
{ "lAarr", 0x021DA }, | |
{ "lArr", 0x021D0 }, | |
{ "lAtai", 0x0291B }, | |
{ "lBarr", 0x0290E }, | |
{ "lE", 0x02266 }, | |
{ "lEg", 0x02A8B }, | |
{ "lHar", 0x02962 }, | |
{ "lacute", 0x0013A }, | |
{ "laemptyv", 0x029B4 }, | |
{ "lagran", 0x02112 }, | |
{ "lambda", 0x003BB }, | |
{ "lang", 0x027E8 }, | |
{ "langd", 0x02991 }, | |
{ "langle", 0x027E8 }, | |
{ "lap", 0x02A85 }, | |
{ "laquo", 0x000AB }, | |
{ "larr", 0x02190 }, | |
{ "larrb", 0x021E4 }, | |
{ "larrbfs", 0x0291F }, | |
{ "larrfs", 0x0291D }, | |
{ "larrhk", 0x021A9 }, | |
{ "larrlp", 0x021AB }, | |
{ "larrp", 0x02939 }, | |
{ "larrsim", 0x02973 }, | |
{ "larrt", 0x021A2 }, | |
{ "lat", 0x02AAB }, | |
{ "latai", 0x02919 }, | |
{ "late", 0x02AAD }, | |
{ "lbarr", 0x0290C }, | |
{ "lbbrk", 0x02772 }, | |
{ "lbrace", 0x0007B }, | |
{ "lbrack", 0x0005B }, | |
{ "lbrke", 0x0298B }, | |
{ "lbrksld", 0x0298F }, | |
{ "lbrkslu", 0x0298D }, | |
{ "lcaron", 0x0013E }, | |
{ "lcedi", 0x0013C }, | |
{ "lcei", 0x02308 }, | |
{ "lcub", 0x0007B }, | |
{ "lcy", 0x0043B }, | |
{ "ldca", 0x02936 }, | |
{ "ldquo", 0x0201C }, | |
{ "ldquor", 0x0201E }, | |
{ "ldrdhar", 0x02967 }, | |
{ "ldrushar", 0x0294B }, | |
{ "ldsh", 0x021B2 }, | |
{ "le", 0x02264 }, | |
{ "leftarrow", 0x02190 }, | |
{ "leftarrowtai", 0x021A2 }, | |
{ "leftharpoondown", 0x021BD }, | |
{ "leftharpoonup", 0x021BC }, | |
{ "leftleftarrows", 0x021C7 }, | |
{ "leftrightarrow", 0x02194 }, | |
{ "leftrightarrows", 0x021C6 }, | |
{ "leftrightharpoons", 0x021CB }, | |
{ "leftrightsquigarrow", 0x021AD }, | |
{ "leftthreetimes", 0x022CB }, | |
{ "leg", 0x022DA }, | |
{ "leq", 0x02264 }, | |
{ "leqq", 0x02266 }, | |
{ "leqslant", 0x02A7D }, | |
{ "les", 0x02A7D }, | |
{ "lescc", 0x02AA8 }, | |
{ "lesdot", 0x02A7F }, | |
{ "lesdoto", 0x02A81 }, | |
{ "lesdotor", 0x02A83 }, | |
{ "lesges", 0x02A93 }, | |
{ "lessapprox", 0x02A85 }, | |
{ "lessdot", 0x022D6 }, | |
{ "lesseqgtr", 0x022DA }, | |
{ "lesseqqgtr", 0x02A8B }, | |
{ "lessgtr", 0x02276 }, | |
{ "lesssim", 0x02272 }, | |
{ "lfisht", 0x0297C }, | |
{ "lfloor", 0x0230A }, | |
{ "lfr", 0x1D529 }, | |
{ "lg", 0x02276 }, | |
{ "lgE", 0x02A91 }, | |
{ "lhard", 0x021BD }, | |
{ "lharu", 0x021BC }, | |
{ "lharu", 0x0296A }, | |
{ "lhblk", 0x02584 }, | |
{ "ljcy", 0x00459 }, | |
{ "l", 0x0226A }, | |
{ "llarr", 0x021C7 }, | |
{ "llcorner", 0x0231E }, | |
{ "llhard", 0x0296B }, | |
{ "lltri", 0x025FA }, | |
{ "lmidot", 0x00140 }, | |
{ "lmoust", 0x023B0 }, | |
{ "lmoustache", 0x023B0 }, | |
{ "lnE", 0x02268 }, | |
{ "lnap", 0x02A89 }, | |
{ "lnapprox", 0x02A89 }, | |
{ "lne", 0x02A87 }, | |
{ "lneq", 0x02A87 }, | |
{ "lneqq", 0x02268 }, | |
{ "lnsim", 0x022E6 }, | |
{ "loang", 0x027EC }, | |
{ "loarr", 0x021FD }, | |
{ "lobrk", 0x027E6 }, | |
{ "longleftarrow", 0x027F5 }, | |
{ "longleftrightarrow", 0x027F7 }, | |
{ "longmapsto", 0x027FC }, | |
{ "longrightarrow", 0x027F6 }, | |
{ "looparrowleft", 0x021AB }, | |
{ "looparrowright", 0x021AC }, | |
{ "lopar", 0x02985 }, | |
{ "lopf", 0x1D55D }, | |
{ "loplus", 0x02A2D }, | |
{ "lotimes", 0x02A34 }, | |
{ "lowast", 0x02217 }, | |
{ "lowbar", 0x0005F }, | |
{ "loz", 0x025CA }, | |
{ "lozenge", 0x025CA }, | |
{ "lozf", 0x029EB }, | |
{ "lpar", 0x00028 }, | |
{ "lparlt", 0x02993 }, | |
{ "lrarr", 0x021C6 }, | |
{ "lrcorner", 0x0231F }, | |
{ "lrhar", 0x021CB }, | |
{ "lrhard", 0x0296D }, | |
{ "lrm", 0x0200E }, | |
{ "lrtri", 0x022BF }, | |
{ "lsaquo", 0x02039 }, | |
{ "lscr", 0x1D4C1 }, | |
{ "lsh", 0x021B0 }, | |
{ "lsim", 0x02272 }, | |
{ "lsime", 0x02A8D }, | |
{ "lsimg", 0x02A8F }, | |
{ "lsqb", 0x0005B }, | |
{ "lsquo", 0x02018 }, | |
{ "lsquor", 0x0201A }, | |
{ "lstrok", 0x00142 }, | |
{ "lt", 0x0003C }, | |
{ "ltcc", 0x02AA6 }, | |
{ "ltcir", 0x02A79 }, | |
{ "ltdot", 0x022D6 }, | |
{ "lthree", 0x022CB }, | |
{ "ltimes", 0x022C9 }, | |
{ "ltlarr", 0x02976 }, | |
{ "ltquest", 0x02A7B }, | |
{ "ltrPar", 0x02996 }, | |
{ "ltri", 0x025C3 }, | |
{ "ltrie", 0x022B4 }, | |
{ "ltrif", 0x025C2 }, | |
{ "lurdshar", 0x0294A }, | |
{ "luruhar", 0x02966 }, | |
{ "mDDot", 0x0223A }, | |
{ "macr", 0x000AF }, | |
{ "male", 0x02642 }, | |
{ "malt", 0x02720 }, | |
{ "maltese", 0x02720 }, | |
{ "map", 0x021A6 }, | |
{ "mapsto", 0x021A6 }, | |
{ "mapstodown", 0x021A7 }, | |
{ "mapstoleft", 0x021A4 }, | |
{ "mapstoup", 0x021A5 }, | |
{ "marker", 0x025AE }, | |
{ "mcomma", 0x02A29 }, | |
{ "mcy", 0x0043C }, | |
{ "mdash", 0x02014 }, | |
{ "measuredangle", 0x02221 }, | |
{ "mfr", 0x1D52A }, | |
{ "mho", 0x02127 }, | |
{ "micro", 0x000B5 }, | |
{ "mid", 0x02223 }, | |
{ "midast", 0x0002A }, | |
{ "midcir", 0x02AF0 }, | |
{ "middot", 0x000B7 }, | |
{ "minus", 0x02212 }, | |
{ "minusb", 0x0229F }, | |
{ "minusd", 0x02238 }, | |
{ "minusdu", 0x02A2A }, | |
{ "mlcp", 0x02ADB }, | |
{ "mldr", 0x02026 }, | |
{ "mnplus", 0x02213 }, | |
{ "models", 0x022A7 }, | |
{ "mopf", 0x1D55E }, | |
{ "mp", 0x02213 }, | |
{ "mscr", 0x1D4C2 }, | |
{ "mstpos", 0x0223E }, | |
{ "mu", 0x003BC }, | |
{ "multimap", 0x022B8 }, | |
{ "mumap", 0x022B8 }, | |
{ "nLeftarrow", 0x021CD }, | |
{ "nLeftrightarrow", 0x021CE }, | |
{ "nRightarrow", 0x021CF }, | |
{ "nVDash", 0x022AF }, | |
{ "nVdash", 0x022AE }, | |
{ "nabla", 0x02207 }, | |
{ "nacute", 0x00144 }, | |
{ "nap", 0x02249 }, | |
{ "napos", 0x00149 }, | |
{ "napprox", 0x02249 }, | |
{ "natur", 0x0266E }, | |
{ "natura", 0x0266E }, | |
{ "naturals", 0x02115 }, | |
{ "nbsp", 0x000A0 }, | |
{ "ncap", 0x02A43 }, | |
{ "ncaron", 0x00148 }, | |
{ "ncedi", 0x00146 }, | |
{ "ncong", 0x02247 }, | |
{ "ncup", 0x02A42 }, | |
{ "ncy", 0x0043D }, | |
{ "ndash", 0x02013 }, | |
{ "ne", 0x02260 }, | |
{ "neArr", 0x021D7 }, | |
{ "nearhk", 0x02924 }, | |
{ "nearr", 0x02197 }, | |
{ "nearrow", 0x02197 }, | |
{ "nequiv", 0x02262 }, | |
{ "nesear", 0x02928 }, | |
{ "nexist", 0x02204 }, | |
{ "nexists", 0x02204 }, | |
{ "nfr", 0x1D52B }, | |
{ "nge", 0x02271 }, | |
{ "ngeq", 0x02271 }, | |
{ "ngsim", 0x02275 }, | |
{ "ngt", 0x0226F }, | |
{ "ngtr", 0x0226F }, | |
{ "nhArr", 0x021CE }, | |
{ "nharr", 0x021AE }, | |
{ "nhpar", 0x02AF2 }, | |
{ "ni", 0x0220B }, | |
{ "nis", 0x022FC }, | |
{ "nisd", 0x022FA }, | |
{ "niv", 0x0220B }, | |
{ "njcy", 0x0045A }, | |
{ "nlArr", 0x021CD }, | |
{ "nlarr", 0x0219A }, | |
{ "nldr", 0x02025 }, | |
{ "nle", 0x02270 }, | |
{ "nleftarrow", 0x0219A }, | |
{ "nleftrightarrow", 0x021AE }, | |
{ "nleq", 0x02270 }, | |
{ "nless", 0x0226E }, | |
{ "nlsim", 0x02274 }, | |
{ "nlt", 0x0226E }, | |
{ "nltri", 0x022EA }, | |
{ "nltrie", 0x022EC }, | |
{ "nmid", 0x02224 }, | |
{ "nopf", 0x1D55F }, | |
{ "not", 0x000AC }, | |
{ "notin", 0x02209 }, | |
{ "notinva", 0x02209 }, | |
{ "notinvb", 0x022F7 }, | |
{ "notinvc", 0x022F6 }, | |
{ "notni", 0x0220C }, | |
{ "notniva", 0x0220C }, | |
{ "notnivb", 0x022FE }, | |
{ "notnivc", 0x022FD }, | |
{ "npar", 0x02226 }, | |
{ "nparalle", 0x02226 }, | |
{ "npolint", 0x02A14 }, | |
{ "npr", 0x02280 }, | |
{ "nprcue", 0x022E0 }, | |
{ "nprec", 0x02280 }, | |
{ "nrArr", 0x021CF }, | |
{ "nrarr", 0x0219B }, | |
{ "nrightarrow", 0x0219B }, | |
{ "nrtri", 0x022EB }, | |
{ "nrtrie", 0x022ED }, | |
{ "nsc", 0x02281 }, | |
{ "nsccue", 0x022E1 }, | |
{ "nscr", 0x1D4C3 }, | |
{ "nshortmid", 0x02224 }, | |
{ "nshortparalle", 0x02226 }, | |
{ "nsim", 0x02241 }, | |
{ "nsime", 0x02244 }, | |
{ "nsimeq", 0x02244 }, | |
{ "nsmid", 0x02224 }, | |
{ "nspar", 0x02226 }, | |
{ "nsqsube", 0x022E2 }, | |
{ "nsqsupe", 0x022E3 }, | |
{ "nsub", 0x02284 }, | |
{ "nsube", 0x02288 }, | |
{ "nsubseteq", 0x02288 }, | |
{ "nsucc", 0x02281 }, | |
{ "nsup", 0x02285 }, | |
{ "nsupe", 0x02289 }, | |
{ "nsupseteq", 0x02289 }, | |
{ "ntg", 0x02279 }, | |
{ "ntilde", 0x000F1 }, | |
{ "ntlg", 0x02278 }, | |
{ "ntriangleleft", 0x022EA }, | |
{ "ntrianglelefteq", 0x022EC }, | |
{ "ntriangleright", 0x022EB }, | |
{ "ntrianglerighteq", 0x022ED }, | |
{ "nu", 0x003BD }, | |
{ "num", 0x00023 }, | |
{ "numero", 0x02116 }, | |
{ "numsp", 0x02007 }, | |
{ "nvDash", 0x022AD }, | |
{ "nvHarr", 0x02904 }, | |
{ "nvdash", 0x022AC }, | |
{ "nvinfin", 0x029DE }, | |
{ "nvlArr", 0x02902 }, | |
{ "nvrArr", 0x02903 }, | |
{ "nwArr", 0x021D6 }, | |
{ "nwarhk", 0x02923 }, | |
{ "nwarr", 0x02196 }, | |
{ "nwarrow", 0x02196 }, | |
{ "nwnear", 0x02927 }, | |
{ "oS", 0x024C8 }, | |
{ "oacute", 0x000F3 }, | |
{ "oast", 0x0229B }, | |
{ "ocir", 0x0229A }, | |
{ "ocirc", 0x000F4 }, | |
{ "ocy", 0x0043E }, | |
{ "odash", 0x0229D }, | |
{ "odblac", 0x00151 }, | |
{ "odiv", 0x02A38 }, | |
{ "odot", 0x02299 }, | |
{ "odsold", 0x029BC }, | |
{ "oelig", 0x00153 }, | |
{ "ofcir", 0x029BF }, | |
{ "ofr", 0x1D52C }, | |
{ "ogon", 0x002DB }, | |
{ "ograve", 0x000F2 }, | |
{ "ogt", 0x029C1 }, | |
{ "ohbar", 0x029B5 }, | |
{ "ohm", 0x02126 }, | |
{ "oint", 0x0222E }, | |
{ "olarr", 0x021BA }, | |
{ "olcir", 0x029BE }, | |
{ "olcross", 0x029BB }, | |
{ "oline", 0x0203E }, | |
{ "olt", 0x029C0 }, | |
{ "omacr", 0x0014D }, | |
{ "omega", 0x003C9 }, | |
{ "omicron", 0x003BF }, | |
{ "omid", 0x029B6 }, | |
{ "ominus", 0x02296 }, | |
{ "oopf", 0x1D560 }, | |
{ "opar", 0x029B7 }, | |
{ "operp", 0x029B9 }, | |
{ "oplus", 0x02295 }, | |
{ "or", 0x02228 }, | |
{ "orarr", 0x021BB }, | |
{ "ord", 0x02A5D }, | |
{ "order", 0x02134 }, | |
{ "orderof", 0x02134 }, | |
{ "ordf", 0x000AA }, | |
{ "ordm", 0x000BA }, | |
{ "origof", 0x022B6 }, | |
{ "oror", 0x02A56 }, | |
{ "orslope", 0x02A57 }, | |
{ "orv", 0x02A5B }, | |
{ "oscr", 0x02134 }, | |
{ "oslash", 0x000F8 }, | |
{ "oso", 0x02298 }, | |
{ "otilde", 0x000F5 }, | |
{ "otimes", 0x02297 }, | |
{ "otimesas", 0x02A36 }, | |
{ "oum", 0x000F6 }, | |
{ "ovbar", 0x0233D }, | |
{ "par", 0x02225 }, | |
{ "para", 0x000B6 }, | |
{ "paralle", 0x02225 }, | |
{ "parsim", 0x02AF3 }, | |
{ "pars", 0x02AFD }, | |
{ "part", 0x02202 }, | |
{ "pcy", 0x0043F }, | |
{ "percnt", 0x00025 }, | |
{ "period", 0x0002E }, | |
{ "permi", 0x02030 }, | |
{ "perp", 0x022A5 }, | |
{ "pertenk", 0x02031 }, | |
{ "pfr", 0x1D52D }, | |
{ "phi", 0x003C6 }, | |
{ "phiv", 0x003C6 }, | |
{ "phmmat", 0x02133 }, | |
{ "phone", 0x0260E }, | |
{ "pi", 0x003C0 }, | |
{ "pitchfork", 0x022D4 }, | |
{ "piv", 0x003D6 }, | |
{ "planck", 0x0210F }, | |
{ "planckh", 0x0210E }, | |
{ "plankv", 0x0210F }, | |
{ "plus", 0x0002B }, | |
{ "plusacir", 0x02A23 }, | |
{ "plusb", 0x0229E }, | |
{ "pluscir", 0x02A22 }, | |
{ "plusdo", 0x02214 }, | |
{ "plusdu", 0x02A25 }, | |
{ "pluse", 0x02A72 }, | |
{ "plusmn", 0x000B1 }, | |
{ "plussim", 0x02A26 }, | |
{ "plustwo", 0x02A27 }, | |
{ "pm", 0x000B1 }, | |
{ "pointint", 0x02A15 }, | |
{ "popf", 0x1D561 }, | |
{ "pound", 0x000A3 }, | |
{ "pr", 0x0227A }, | |
{ "prE", 0x02AB3 }, | |
{ "prap", 0x02AB7 }, | |
{ "prcue", 0x0227C }, | |
{ "pre", 0x02AAF }, | |
{ "prec", 0x0227A }, | |
{ "precapprox", 0x02AB7 }, | |
{ "preccurlyeq", 0x0227C }, | |
{ "preceq", 0x02AAF }, | |
{ "precnapprox", 0x02AB9 }, | |
{ "precneqq", 0x02AB5 }, | |
{ "precnsim", 0x022E8 }, | |
{ "precsim", 0x0227E }, | |
{ "prime", 0x02032 }, | |
{ "primes", 0x02119 }, | |
{ "prnE", 0x02AB5 }, | |
{ "prnap", 0x02AB9 }, | |
{ "prnsim", 0x022E8 }, | |
{ "prod", 0x0220F }, | |
{ "profalar", 0x0232E }, | |
{ "profline", 0x02312 }, | |
{ "profsurf", 0x02313 }, | |
{ "prop", 0x0221D }, | |
{ "propto", 0x0221D }, | |
{ "prsim", 0x0227E }, | |
{ "prure", 0x022B0 }, | |
{ "pscr", 0x1D4C5 }, | |
{ "psi", 0x003C8 }, | |
{ "puncsp", 0x02008 }, | |
{ "qfr", 0x1D52E }, | |
{ "qint", 0x02A0C }, | |
{ "qopf", 0x1D562 }, | |
{ "qprime", 0x02057 }, | |
{ "qscr", 0x1D4C6 }, | |
{ "quaternions", 0x0210D }, | |
{ "quatint", 0x02A16 }, | |
{ "quest", 0x0003F }, | |
{ "questeq", 0x0225F }, | |
{ "quot", 0x00022 }, | |
{ "rAarr", 0x021DB }, | |
{ "rArr", 0x021D2 }, | |
{ "rAtai", 0x0291C }, | |
{ "rBarr", 0x0290F }, | |
{ "rHar", 0x02964 }, | |
{ "race", 0x029DA }, | |
{ "racute", 0x00155 }, | |
{ "radic", 0x0221A }, | |
{ "raemptyv", 0x029B3 }, | |
{ "rang", 0x027E9 }, | |
{ "rangd", 0x02992 }, | |
{ "range", 0x029A5 }, | |
{ "rangle", 0x027E9 }, | |
{ "raquo", 0x000BB }, | |
{ "rarr", 0x02192 }, | |
{ "rarrap", 0x02975 }, | |
{ "rarrb", 0x021E5 }, | |
{ "rarrbfs", 0x02920 }, | |
{ "rarrc", 0x02933 }, | |
{ "rarrfs", 0x0291E }, | |
{ "rarrhk", 0x021AA }, | |
{ "rarrlp", 0x021AC }, | |
{ "rarrp", 0x02945 }, | |
{ "rarrsim", 0x02974 }, | |
{ "rarrt", 0x021A3 }, | |
{ "rarrw", 0x0219D }, | |
{ "ratai", 0x0291A }, | |
{ "ratio", 0x02236 }, | |
{ "rationals", 0x0211A }, | |
{ "rbarr", 0x0290D }, | |
{ "rbbrk", 0x02773 }, | |
{ "rbrace", 0x0007D }, | |
{ "rbrack", 0x0005D }, | |
{ "rbrke", 0x0298C }, | |
{ "rbrksld", 0x0298E }, | |
{ "rbrkslu", 0x02990 }, | |
{ "rcaron", 0x00159 }, | |
{ "rcedi", 0x00157 }, | |
{ "rcei", 0x02309 }, | |
{ "rcub", 0x0007D }, | |
{ "rcy", 0x00440 }, | |
{ "rdca", 0x02937 }, | |
{ "rdldhar", 0x02969 }, | |
{ "rdquo", 0x0201D }, | |
{ "rdquor", 0x0201D }, | |
{ "rdsh", 0x021B3 }, | |
{ "rea", 0x0211C }, | |
{ "realine", 0x0211B }, | |
{ "realpart", 0x0211C }, | |
{ "reals", 0x0211D }, | |
{ "rect", 0x025AD }, | |
{ "reg", 0x000AE }, | |
{ "rfisht", 0x0297D }, | |
{ "rfloor", 0x0230B }, | |
{ "rfr", 0x1D52F }, | |
{ "rhard", 0x021C1 }, | |
{ "rharu", 0x021C0 }, | |
{ "rharu", 0x0296C }, | |
{ "rho", 0x003C1 }, | |
{ "rhov", 0x003F1 }, | |
{ "rightarrow", 0x02192 }, | |
{ "rightarrowtai", 0x021A3 }, | |
{ "rightharpoondown", 0x021C1 }, | |
{ "rightharpoonup", 0x021C0 }, | |
{ "rightleftarrows", 0x021C4 }, | |
{ "rightleftharpoons", 0x021CC }, | |
{ "rightrightarrows", 0x021C9 }, | |
{ "rightsquigarrow", 0x0219D }, | |
{ "rightthreetimes", 0x022CC }, | |
{ "ring", 0x002DA }, | |
{ "risingdotseq", 0x02253 }, | |
{ "rlarr", 0x021C4 }, | |
{ "rlhar", 0x021CC }, | |
{ "rlm", 0x0200F }, | |
{ "rmoust", 0x023B1 }, | |
{ "rmoustache", 0x023B1 }, | |
{ "rnmid", 0x02AEE }, | |
{ "roang", 0x027ED }, | |
{ "roarr", 0x021FE }, | |
{ "robrk", 0x027E7 }, | |
{ "ropar", 0x02986 }, | |
{ "ropf", 0x1D563 }, | |
{ "roplus", 0x02A2E }, | |
{ "rotimes", 0x02A35 }, | |
{ "rpar", 0x00029 }, | |
{ "rpargt", 0x02994 }, | |
{ "rppolint", 0x02A12 }, | |
{ "rrarr", 0x021C9 }, | |
{ "rsaquo", 0x0203A }, | |
{ "rscr", 0x1D4C7 }, | |
{ "rsh", 0x021B1 }, | |
{ "rsqb", 0x0005D }, | |
{ "rsquo", 0x02019 }, | |
{ "rsquor", 0x02019 }, | |
{ "rthree", 0x022CC }, | |
{ "rtimes", 0x022CA }, | |
{ "rtri", 0x025B9 }, | |
{ "rtrie", 0x022B5 }, | |
{ "rtrif", 0x025B8 }, | |
{ "rtriltri", 0x029CE }, | |
{ "ruluhar", 0x02968 }, | |
{ "rx", 0x0211E }, | |
{ "sacute", 0x0015B }, | |
{ "sbquo", 0x0201A }, | |
{ "sc", 0x0227B }, | |
{ "scE", 0x02AB4 }, | |
{ "scap", 0x02AB8 }, | |
{ "scaron", 0x00161 }, | |
{ "sccue", 0x0227D }, | |
{ "sce", 0x02AB0 }, | |
{ "scedi", 0x0015F }, | |
{ "scirc", 0x0015D }, | |
{ "scnE", 0x02AB6 }, | |
{ "scnap", 0x02ABA }, | |
{ "scnsim", 0x022E9 }, | |
{ "scpolint", 0x02A13 }, | |
{ "scsim", 0x0227F }, | |
{ "scy", 0x00441 }, | |
{ "sdot", 0x022C5 }, | |
{ "sdotb", 0x022A1 }, | |
{ "sdote", 0x02A66 }, | |
{ "seArr", 0x021D8 }, | |
{ "searhk", 0x02925 }, | |
{ "searr", 0x02198 }, | |
{ "searrow", 0x02198 }, | |
{ "sect", 0x000A7 }, | |
{ "semi", 0x0003B }, | |
{ "seswar", 0x02929 }, | |
{ "setminus", 0x02216 }, | |
{ "setmn", 0x02216 }, | |
{ "sext", 0x02736 }, | |
{ "sfr", 0x1D530 }, | |
{ "sfrown", 0x02322 }, | |
{ "sharp", 0x0266F }, | |
{ "shchcy", 0x00449 }, | |
{ "shcy", 0x00448 }, | |
{ "shortmid", 0x02223 }, | |
{ "shortparalle", 0x02225 }, | |
{ "shy", 0x000AD }, | |
{ "sigma", 0x003C3 }, | |
{ "sigmaf", 0x003C2 }, | |
{ "sigmav", 0x003C2 }, | |
{ "sim", 0x0223C }, | |
{ "simdot", 0x02A6A }, | |
{ "sime", 0x02243 }, | |
{ "simeq", 0x02243 }, | |
{ "simg", 0x02A9E }, | |
{ "simgE", 0x02AA0 }, | |
{ "sim", 0x02A9D }, | |
{ "simlE", 0x02A9F }, | |
{ "simne", 0x02246 }, | |
{ "simplus", 0x02A24 }, | |
{ "simrarr", 0x02972 }, | |
{ "slarr", 0x02190 }, | |
{ "smallsetminus", 0x02216 }, | |
{ "smashp", 0x02A33 }, | |
{ "smepars", 0x029E4 }, | |
{ "smid", 0x02223 }, | |
{ "smile", 0x02323 }, | |
{ "smt", 0x02AAA }, | |
{ "smte", 0x02AAC }, | |
{ "softcy", 0x0044C }, | |
{ "so", 0x0002F }, | |
{ "solb", 0x029C4 }, | |
{ "solbar", 0x0233F }, | |
{ "sopf", 0x1D564 }, | |
{ "spades", 0x02660 }, | |
{ "spadesuit", 0x02660 }, | |
{ "spar", 0x02225 }, | |
{ "sqcap", 0x02293 }, | |
{ "sqcup", 0x02294 }, | |
{ "sqsub", 0x0228F }, | |
{ "sqsube", 0x02291 }, | |
{ "sqsubset", 0x0228F }, | |
{ "sqsubseteq", 0x02291 }, | |
{ "sqsup", 0x02290 }, | |
{ "sqsupe", 0x02292 }, | |
{ "sqsupset", 0x02290 }, | |
{ "sqsupseteq", 0x02292 }, | |
{ "squ", 0x025A1 }, | |
{ "square", 0x025A1 }, | |
{ "squarf", 0x025AA }, | |
{ "squf", 0x025AA }, | |
{ "srarr", 0x02192 }, | |
{ "sscr", 0x1D4C8 }, | |
{ "ssetmn", 0x02216 }, | |
{ "ssmile", 0x02323 }, | |
{ "sstarf", 0x022C6 }, | |
{ "star", 0x02606 }, | |
{ "starf", 0x02605 }, | |
{ "straightepsilon", 0x003F5 }, | |
{ "straightphi", 0x003D5 }, | |
{ "strns", 0x000AF }, | |
{ "sub", 0x02282 }, | |
{ "subE", 0x02AC5 }, | |
{ "subdot", 0x02ABD }, | |
{ "sube", 0x02286 }, | |
{ "subedot", 0x02AC3 }, | |
{ "submult", 0x02AC1 }, | |
{ "subnE", 0x02ACB }, | |
{ "subne", 0x0228A }, | |
{ "subplus", 0x02ABF }, | |
{ "subrarr", 0x02979 }, | |
{ "subset", 0x02282 }, | |
{ "subseteq", 0x02286 }, | |
{ "subseteqq", 0x02AC5 }, | |
{ "subsetneq", 0x0228A }, | |
{ "subsetneqq", 0x02ACB }, | |
{ "subsim", 0x02AC7 }, | |
{ "subsub", 0x02AD5 }, | |
{ "subsup", 0x02AD3 }, | |
{ "succ", 0x0227B }, | |
{ "succapprox", 0x02AB8 }, | |
{ "succcurlyeq", 0x0227D }, | |
{ "succeq", 0x02AB0 }, | |
{ "succnapprox", 0x02ABA }, | |
{ "succneqq", 0x02AB6 }, | |
{ "succnsim", 0x022E9 }, | |
{ "succsim", 0x0227F }, | |
{ "sum", 0x02211 }, | |
{ "sung", 0x0266A }, | |
{ "sup", 0x02283 }, | |
{ "sup1", 0x000B9 }, | |
{ "sup2", 0x000B2 }, | |
{ "sup3", 0x000B3 }, | |
{ "supE", 0x02AC6 }, | |
{ "supdot", 0x02ABE }, | |
{ "supdsub", 0x02AD8 }, | |
{ "supe", 0x02287 }, | |
{ "supedot", 0x02AC4 }, | |
{ "suphsub", 0x02AD7 }, | |
{ "suplarr", 0x0297B }, | |
{ "supmult", 0x02AC2 }, | |
{ "supnE", 0x02ACC }, | |
{ "supne", 0x0228B }, | |
{ "supplus", 0x02AC0 }, | |
{ "supset", 0x02283 }, | |
{ "supseteq", 0x02287 }, | |
{ "supseteqq", 0x02AC6 }, | |
{ "supsetneq", 0x0228B }, | |
{ "supsetneqq", 0x02ACC }, | |
{ "supsim", 0x02AC8 }, | |
{ "supsub", 0x02AD4 }, | |
{ "supsup", 0x02AD6 }, | |
{ "swArr", 0x021D9 }, | |
{ "swarhk", 0x02926 }, | |
{ "swarr", 0x02199 }, | |
{ "swarrow", 0x02199 }, | |
{ "swnwar", 0x0292A }, | |
{ "szlig", 0x000DF }, | |
{ "target", 0x02316 }, | |
{ "tau", 0x003C4 }, | |
{ "tbrk", 0x023B4 }, | |
{ "tcaron", 0x00165 }, | |
{ "tcedi", 0x00163 }, | |
{ "tcy", 0x00442 }, | |
{ "tdot", 0x020DB }, | |
{ "telrec", 0x02315 }, | |
{ "tfr", 0x1D531 }, | |
{ "there4", 0x02234 }, | |
{ "therefore", 0x02234 }, | |
{ "theta", 0x003B8 }, | |
{ "thetasym", 0x003D1 }, | |
{ "thetav", 0x003D1 }, | |
{ "thickapprox", 0x02248 }, | |
{ "thicksim", 0x0223C }, | |
{ "thinsp", 0x02009 }, | |
{ "thkap", 0x02248 }, | |
{ "thksim", 0x0223C }, | |
{ "thorn", 0x000FE }, | |
{ "tilde", 0x002DC }, | |
{ "times", 0x000D7 }, | |
{ "timesb", 0x022A0 }, | |
{ "timesbar", 0x02A31 }, | |
{ "timesd", 0x02A30 }, | |
{ "tint", 0x0222D }, | |
{ "toea", 0x02928 }, | |
{ "top", 0x022A4 }, | |
{ "topbot", 0x02336 }, | |
{ "topcir", 0x02AF1 }, | |
{ "topf", 0x1D565 }, | |
{ "topfork", 0x02ADA }, | |
{ "tosa", 0x02929 }, | |
{ "tprime", 0x02034 }, | |
{ "trade", 0x02122 }, | |
{ "triangle", 0x025B5 }, | |
{ "triangledown", 0x025BF }, | |
{ "triangleleft", 0x025C3 }, | |
{ "trianglelefteq", 0x022B4 }, | |
{ "triangleq", 0x0225C }, | |
{ "triangleright", 0x025B9 }, | |
{ "trianglerighteq", 0x022B5 }, | |
{ "tridot", 0x025EC }, | |
{ "trie", 0x0225C }, | |
{ "triminus", 0x02A3A }, | |
{ "triplus", 0x02A39 }, | |
{ "trisb", 0x029CD }, | |
{ "tritime", 0x02A3B }, | |
{ "trpezium", 0x023E2 }, | |
{ "tscr", 0x1D4C9 }, | |
{ "tscy", 0x00446 }, | |
{ "tshcy", 0x0045B }, | |
{ "tstrok", 0x00167 }, | |
{ "twixt", 0x0226C }, | |
{ "twoheadleftarrow", 0x0219E }, | |
{ "twoheadrightarrow", 0x021A0 }, | |
{ "uArr", 0x021D1 }, | |
{ "uHar", 0x02963 }, | |
{ "uacute", 0x000FA }, | |
{ "uarr", 0x02191 }, | |
{ "ubrcy", 0x0045E }, | |
{ "ubreve", 0x0016D }, | |
{ "ucirc", 0x000FB }, | |
{ "ucy", 0x00443 }, | |
{ "udarr", 0x021C5 }, | |
{ "udblac", 0x00171 }, | |
{ "udhar", 0x0296E }, | |
{ "ufisht", 0x0297E }, | |
{ "ufr", 0x1D532 }, | |
{ "ugrave", 0x000F9 }, | |
{ "uhar", 0x021BF }, | |
{ "uharr", 0x021BE }, | |
{ "uhblk", 0x02580 }, | |
{ "ulcorn", 0x0231C }, | |
{ "ulcorner", 0x0231C }, | |
{ "ulcrop", 0x0230F }, | |
{ "ultri", 0x025F8 }, | |
{ "umacr", 0x0016B }, | |
{ "um", 0x000A8 }, | |
{ "uogon", 0x00173 }, | |
{ "uopf", 0x1D566 }, | |
{ "uparrow", 0x02191 }, | |
{ "updownarrow", 0x02195 }, | |
{ "upharpoonleft", 0x021BF }, | |
{ "upharpoonright", 0x021BE }, | |
{ "uplus", 0x0228E }, | |
{ "upsi", 0x003C5 }, | |
{ "upsih", 0x003D2 }, | |
{ "upsilon", 0x003C5 }, | |
{ "upuparrows", 0x021C8 }, | |
{ "urcorn", 0x0231D }, | |
{ "urcorner", 0x0231D }, | |
{ "urcrop", 0x0230E }, | |
{ "uring", 0x0016F }, | |
{ "urtri", 0x025F9 }, | |
{ "uscr", 0x1D4CA }, | |
{ "utdot", 0x022F0 }, | |
{ "utilde", 0x00169 }, | |
{ "utri", 0x025B5 }, | |
{ "utrif", 0x025B4 }, | |
{ "uuarr", 0x021C8 }, | |
{ "uum", 0x000FC }, | |
{ "uwangle", 0x029A7 }, | |
{ "vArr", 0x021D5 }, | |
{ "vBar", 0x02AE8 }, | |
{ "vBarv", 0x02AE9 }, | |
{ "vDash", 0x022A8 }, | |
{ "vangrt", 0x0299C }, | |
{ "varepsilon", 0x003B5 }, | |
{ "varkappa", 0x003F0 }, | |
{ "varnothing", 0x02205 }, | |
{ "varphi", 0x003C6 }, | |
{ "varpi", 0x003D6 }, | |
{ "varpropto", 0x0221D }, | |
{ "varr", 0x02195 }, | |
{ "varrho", 0x003F1 }, | |
{ "varsigma", 0x003C2 }, | |
{ "vartheta", 0x003D1 }, | |
{ "vartriangleleft", 0x022B2 }, | |
{ "vartriangleright", 0x022B3 }, | |
{ "vcy", 0x00432 }, | |
{ "vdash", 0x022A2 }, | |
{ "vee", 0x02228 }, | |
{ "veebar", 0x022BB }, | |
{ "veeeq", 0x0225A }, | |
{ "vellip", 0x022EE }, | |
{ "verbar", 0x0007C }, | |
{ "vert", 0x0007C }, | |
{ "vfr", 0x1D533 }, | |
{ "vltri", 0x022B2 }, | |
{ "vopf", 0x1D567 }, | |
{ "vprop", 0x0221D }, | |
{ "vrtri", 0x022B3 }, | |
{ "vscr", 0x1D4CB }, | |
{ "vzigzag", 0x0299A }, | |
{ "wcirc", 0x00175 }, | |
{ "wedbar", 0x02A5F }, | |
{ "wedge", 0x02227 }, | |
{ "wedgeq", 0x02259 }, | |
{ "weierp", 0x02118 }, | |
{ "wfr", 0x1D534 }, | |
{ "wopf", 0x1D568 }, | |
{ "wp", 0x02118 }, | |
{ "wr", 0x02240 }, | |
{ "wreath", 0x02240 }, | |
{ "wscr", 0x1D4CC }, | |
{ "xcap", 0x022C2 }, | |
{ "xcirc", 0x025EF }, | |
{ "xcup", 0x022C3 }, | |
{ "xdtri", 0x025BD }, | |
{ "xfr", 0x1D535 }, | |
{ "xhArr", 0x027FA }, | |
{ "xharr", 0x027F7 }, | |
{ "xi", 0x003BE }, | |
{ "xlArr", 0x027F8 }, | |
{ "xlarr", 0x027F5 }, | |
{ "xmap", 0x027FC }, | |
{ "xnis", 0x022FB }, | |
{ "xodot", 0x02A00 }, | |
{ "xopf", 0x1D569 }, | |
{ "xoplus", 0x02A01 }, | |
{ "xotime", 0x02A02 }, | |
{ "xrArr", 0x027F9 }, | |
{ "xrarr", 0x027F6 }, | |
{ "xscr", 0x1D4CD }, | |
{ "xsqcup", 0x02A06 }, | |
{ "xuplus", 0x02A04 }, | |
{ "xutri", 0x025B3 }, | |
{ "xvee", 0x022C1 }, | |
{ "xwedge", 0x022C0 }, | |
{ "yacute", 0x000FD }, | |
{ "yacy", 0x0044F }, | |
{ "ycirc", 0x00177 }, | |
{ "ycy", 0x0044B }, | |
{ "yen", 0x000A5 }, | |
{ "yfr", 0x1D536 }, | |
{ "yicy", 0x00457 }, | |
{ "yopf", 0x1D56A }, | |
{ "yscr", 0x1D4CE }, | |
{ "yucy", 0x0044E }, | |
{ "yum", 0x000FF }, | |
{ "zacute", 0x0017A }, | |
{ "zcaron", 0x0017E }, | |
{ "zcy", 0x00437 }, | |
{ "zdot", 0x0017C }, | |
{ "zeetrf", 0x02128 }, | |
{ "zeta", 0x003B6 }, | |
{ "zfr", 0x1D537 }, | |
{ "zhcy", 0x00436 }, | |
{ "zigrarr", 0x021DD }, | |
{ "zopf", 0x1D56B }, | |
{ "zscr", 0x1D4CF }, | |
{ "zwj", 0x0200D }, | |
{ "zwnj", 0x0200C }, | |
}; | |
if (!name || name[0] == '\0') { | |
return -1; | |
} | |
const auto e = std::end(lookup_); | |
const auto i = std::lower_bound(std::begin(lookup_), e, name, Compare{}); | |
if (i != e && strcmp((*i).name, name) == 0) { | |
return (*i).code; | |
} | |
return -1; | |
} | |
inline int HTMLEntityNameToCodePoint(const wchar_t* name) { | |
if (!name || name[0] == '\0') { | |
return -1; | |
} | |
char narrow[32]; | |
// longest entity name : strlen("CounterClockwiseContourIntegral") == 31; | |
int i = 0; | |
for (; i < 31; ++i) { | |
const auto c = name[i]; | |
if (c == '\0' || c < 0 || c >= 0x7F) { | |
break; | |
} | |
narrow[i] = static_cast<char>(name[i]); | |
} | |
if (name[i] != '\0') { | |
return -1; | |
} | |
narrow[i] = '\0'; | |
return HTMLEntityNameToCodePoint(narrow); | |
} | |
template<typename Char> | |
inline int HTMLEntityToCodePoint(const Char* entity) { | |
if (!entity || entity[0] == L'\0') { | |
return -1; | |
} | |
while (*entity == '[' || *entity == '&') { | |
++entity; | |
} | |
if (*entity == '#') { | |
struct ToULong { | |
static auto Convert( | |
const wchar_t* s, wchar_t** endptr, int radix) { | |
return wcstoul(s, endptr, radix); | |
} | |
static auto Convert( | |
const char* s, char** endptr, int radix) { | |
return strtoul(s, endptr, radix); | |
} | |
}; | |
++entity; | |
int radix = 10; | |
if (*entity == 'x') { | |
++entity; | |
radix = 16; | |
} | |
Char* end = nullptr; | |
const auto code = ToULong::Convert(entity, &end, radix); | |
if (end && *end == ';' && code <= 0x10FFFF) { | |
return static_cast<int>(code); | |
} | |
else { | |
return -1; | |
} | |
} | |
else { | |
static const size_t max_entity_length = 32; | |
Char buffer[max_entity_length + 1] = {}; | |
for (size_t i = 0; i < max_entity_length; ++i) { | |
if (entity[i] == '\0' || entity[i] == ';') { | |
break; | |
} | |
buffer[i] = entity[i]; | |
} | |
return HTMLEntityNameToCodePoint(buffer); | |
} | |
} | |
template<typename C> | |
struct HTMLEntityPatterns; | |
template<> struct HTMLEntityPatterns<char> { | |
static const std::regex pattern; | |
}; | |
template<> struct HTMLEntityPatterns<wchar_t> { | |
static const std::wregex pattern; | |
}; | |
const std::regex HTMLEntityPatterns<char>::pattern{ | |
"&[a-zA-Z]+?;|" | |
"&#x[\\da-fA-F]+?;|" | |
"&#\\d+?;" | |
}; | |
const std::wregex HTMLEntityPatterns<wchar_t>::pattern{ | |
L"&[a-zA-Z]+?;|" | |
L"&#x[\\da-fA-F]+?;|" | |
L"&#\\d+?;" | |
}; | |
template<typename InIt> | |
inline auto ConvertHTMLEntities(InIt first, InIt last) { | |
using C = std::decay<decltype(*first)>::type; | |
const auto& pattern = HTMLEntityPatterns<C>::pattern; | |
auto it = std::regex_iterator<InIt>(first, last, pattern); | |
auto end = std::regex_iterator<InIt>(); | |
std::basic_string<C> result; | |
result.reserve(std::distance(first, last)); | |
auto last_appended = first; | |
C temp[64] = {}; | |
const size_t temp_capacity = _countof(temp); | |
for (; it != end; ++it) { | |
const auto& match = *it; | |
for (auto& sub : match) { | |
if (!sub.matched || sub.length() >= temp_capacity) { | |
continue; | |
} | |
auto z = std::copy(sub.first, sub.second, temp); | |
*z = '\0'; | |
auto code = HTMLEntityToCodePoint(temp); | |
if (code >= 0 && code <= 0x10FFFF) { | |
auto utf = EncodeCodePointToUTF<C>(code); | |
result.append(last_appended, sub.first); | |
result.append(utf.encoded); | |
last_appended = sub.second; | |
break; | |
} | |
} | |
} | |
result.append(last_appended, last); | |
return result; | |
} | |
template<typename C> | |
inline auto ConvertHTMLEntities(const std::basic_string<C>& source) { | |
return ConvertHTMLEntities(source.cbegin(), source.cend()); | |
} | |
inline auto ConvertHTMLEntities(const char* source) { | |
if (!source) return std::string{}; | |
return ConvertHTMLEntities(source, source + strlen(source)); | |
} | |
inline auto ConvertHTMLEntities(const wchar_t* source) { | |
if (!source) return std::wstring{}; | |
return ConvertHTMLEntities(source, source + wcslen(source)); | |
} | |
template <typename InIt> | |
inline auto UnescapeJsonString(InIt first, InIt last) { | |
using C = std::decay<decltype(*first)>::type; | |
auto replacement = [](auto c) -> C { | |
switch (c) { | |
case 'b': return '\b'; | |
case 'f': return '\f'; | |
case 'n': return '\n'; | |
case 'r': return '\r'; | |
case 't': return '\t'; | |
default: return c; | |
} | |
}; | |
struct CodePointConversion { | |
int codePoint = -1; | |
int advance = 0; | |
CodePointConversion(InIt first, InIt last) { | |
char temp[16]; | |
size_t i = 0; | |
for (; i < 15 && first != last; ++i, ++first) { | |
auto c = *first; | |
if ((c >= '0' && c <= '9') || | |
(c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F')) { | |
temp[i] = static_cast<char>(*first); | |
} | |
else { | |
break; | |
} | |
} | |
temp[i] = '\0'; | |
char* end = nullptr; | |
auto result = strtoul(temp, &end, 16); | |
while (end - temp > 0 && result > 0x10FFFF) { | |
--end; | |
*end = '\0'; | |
end = nullptr; | |
result = strtoul(temp, &end, 16); | |
} | |
codePoint = result; | |
advance = static_cast<int>(end - temp); | |
} | |
}; | |
std::basic_string<C> result; | |
result.reserve(std::distance(first, last)); | |
auto last_appended = first; | |
for (auto it = std::find(first, last, '\\'); it != last;) { | |
auto next = it; | |
++next; | |
if (next == last) { | |
break; | |
} | |
auto next_next = next; | |
++next_next; | |
auto c = *next; | |
switch (c) { | |
case '"': case '\\': case '/': | |
case 'b': case 'f': case 'n': case 'r': case 't': | |
result.append(last_appended, it); | |
result.push_back(replacement(c)); | |
++next; | |
last_appended = next; | |
break; | |
case 'u': | |
if (next_next != last) { | |
auto cp = CodePointConversion{next_next, last}; | |
if (cp.advance > 0 && cp.codePoint >= 0 && cp.codePoint <= 0x10FFFF) { | |
auto utf = EncodeCodePointToUTF<C>(cp.codePoint); | |
result.append(last_appended, it); | |
result.append(utf.encoded, utf.encoded + utf.length); | |
next = next_next; | |
std::advance(next, cp.advance); | |
last_appended = next; | |
} | |
} | |
break; | |
default: | |
break; | |
} | |
it = std::find(next, last, '\\'); | |
} | |
result.append(last_appended, last); | |
return result; | |
} | |
template <typename Char> | |
inline auto UnescapeJsonString(const std::basic_string<Char>& source) { | |
return UnescapeJsonString(source.cbegin(), source.cend()); | |
} | |
inline auto UnescapeJsonString(const char* source) { | |
if (!source) return std::string{}; | |
return UnescapeJsonString(source, source + strlen(source)); | |
} | |
inline auto UnescapeJsonString(const wchar_t* source) { | |
if (!source) return std::wstring{}; | |
return UnescapeJsonString(source, source + wcslen(source)); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment