From 88fa260c9da971f3d953233f5175147374cef3d9 Mon Sep 17 00:00:00 2001 From: jyelon Date: Sat, 28 Mar 2026 19:29:15 -0400 Subject: [PATCH] Tokenizer is now done, we also have the new InternalizeID and ExternalizeID --- .../UEWingman/Handlers/Test_Sanitizer.h | 32 + .../UEWingman/Handlers/Test_Tokenizer.h | 33 + .../UEWingman/Handlers/Test_Unsanitize.h | 41 + .../Source/UEWingman/Private/WingEntities.cpp | 1917 ++++++++++++++ .../UEWingman/Private/WingTokenizer.cpp | 302 +++ .../Source/UEWingman/Private/WingUtils.cpp | 6 + .../Source/UEWingman/Public/WingTokenizer.h | 169 ++ entities.json | 2233 +++++++++++++++++ tools/font-glyphs.py | 96 + tools/gen-entities.py | 54 + 10 files changed, 4883 insertions(+) create mode 100644 Plugins/UEWingman/Source/UEWingman/Handlers/Test_Sanitizer.h create mode 100644 Plugins/UEWingman/Source/UEWingman/Handlers/Test_Tokenizer.h create mode 100644 Plugins/UEWingman/Source/UEWingman/Handlers/Test_Unsanitize.h create mode 100644 Plugins/UEWingman/Source/UEWingman/Private/WingEntities.cpp create mode 100644 Plugins/UEWingman/Source/UEWingman/Private/WingTokenizer.cpp create mode 100644 Plugins/UEWingman/Source/UEWingman/Public/WingTokenizer.h create mode 100644 entities.json create mode 100755 tools/font-glyphs.py create mode 100644 tools/gen-entities.py diff --git a/Plugins/UEWingman/Source/UEWingman/Handlers/Test_Sanitizer.h b/Plugins/UEWingman/Source/UEWingman/Handlers/Test_Sanitizer.h new file mode 100644 index 00000000..5fe04776 --- /dev/null +++ b/Plugins/UEWingman/Source/UEWingman/Handlers/Test_Sanitizer.h @@ -0,0 +1,32 @@ +#pragma once + +#include "CoreMinimal.h" +#include "WingServer.h" +#include "WingHandler.h" +#include "WingTokenizer.h" +#include "Test_Sanitizer.generated.h" + + +// --------------------------------------------------------------------------- +// --------------------------------------------------------------------------- +// --------------------------------------------------------------------------- + +UCLASS() +class UWing_Test_Sanitizer : public UObject, public IWingHandler +{ + GENERATED_BODY() + +public: + UPROPERTY(meta=(Description="The string to sanitize")) + FString Input; + + virtual FString GetDescription() const override + { + return TEXT("Test the sanitizer by sanitizing a string and printing the result."); + } + + virtual void Handle() override + { + UWingServer::Printf(TEXT("%s\n"), *WingTokenizer::ExternalizeID(Input)); + } +}; diff --git a/Plugins/UEWingman/Source/UEWingman/Handlers/Test_Tokenizer.h b/Plugins/UEWingman/Source/UEWingman/Handlers/Test_Tokenizer.h new file mode 100644 index 00000000..794f98b7 --- /dev/null +++ b/Plugins/UEWingman/Source/UEWingman/Handlers/Test_Tokenizer.h @@ -0,0 +1,33 @@ +#pragma once + +#include "CoreMinimal.h" +#include "WingServer.h" +#include "WingHandler.h" +#include "WingTokenizer.h" +#include "Test_Tokenizer.generated.h" + + +// --------------------------------------------------------------------------- +// --------------------------------------------------------------------------- +// --------------------------------------------------------------------------- + +UCLASS() +class UWing_Test_Tokenizer : public UObject, public IWingHandler +{ + GENERATED_BODY() + +public: + UPROPERTY(meta=(Description="The string to tokenize")) + FString Input; + + virtual FString GetDescription() const override + { + return TEXT("Test the tokenizer by tokenizing a string and printing the result."); + } + + virtual void Handle() override + { + WingTokenizer T(Input); + T.PrintEverything(); + } +}; diff --git a/Plugins/UEWingman/Source/UEWingman/Handlers/Test_Unsanitize.h b/Plugins/UEWingman/Source/UEWingman/Handlers/Test_Unsanitize.h new file mode 100644 index 00000000..ce77e8d3 --- /dev/null +++ b/Plugins/UEWingman/Source/UEWingman/Handlers/Test_Unsanitize.h @@ -0,0 +1,41 @@ +#pragma once + +#include "CoreMinimal.h" +#include "WingServer.h" +#include "WingHandler.h" +#include "WingTokenizer.h" +#include "Test_Unsanitize.generated.h" + + +// --------------------------------------------------------------------------- +// --------------------------------------------------------------------------- +// --------------------------------------------------------------------------- + +UCLASS() +class UWing_Test_Unsanitize : public UObject, public IWingHandler +{ + GENERATED_BODY() + +public: + UPROPERTY(meta=(Description="The sanitized identifier to unsanitize")) + FString Input; + + virtual FString GetDescription() const override + { + return TEXT("Test the unsanitizer by unsanitizing a string and printing the result."); + } + + virtual void Handle() override + { + FString Error; + FString Result = WingTokenizer::TryInternalizeID(Input, Error); + if (!Error.IsEmpty()) + { + UWingServer::Printf(TEXT("Error: %s\n"), *Error); + } + if (!Result.IsEmpty()) + { + UWingServer::Printf(TEXT("Result: %s\n"), *Result); + } + } +}; diff --git a/Plugins/UEWingman/Source/UEWingman/Private/WingEntities.cpp b/Plugins/UEWingman/Source/UEWingman/Private/WingEntities.cpp new file mode 100644 index 00000000..ca791110 --- /dev/null +++ b/Plugins/UEWingman/Source/UEWingman/Private/WingEntities.cpp @@ -0,0 +1,1917 @@ +// Auto-generated by tools/gen-entities.py — do not edit by hand. +// Source: WHATWG HTML named character references (entities.json) + +#include "WingTokenizer.h" + + +WingEntityList::WingEntityList(std::initializer_list Data) +{ + for (const Raw& Entry : Data) + { + FString XName((const ANSICHAR*)Entry.Name); + CharToName.Add(Entry.Codepoint, XName); + NameToChar.Add(XName, Entry.Codepoint); + } +} + +WingEntityList WingEntityList::TheList({ + { "AElig", 198 }, + { "AMP", 38 }, + { "Aacute", 193 }, + { "Abreve", 258 }, + { "Acirc", 194 }, + { "Acy", 1040 }, + { "Agrave", 192 }, + { "Alpha", 913 }, + { "Amacr", 256 }, + { "And", 10835 }, + { "Aogon", 260 }, + { "ApplyFunction", 8289 }, + { "Aring", 197 }, + { "Assign", 8788 }, + { "Atilde", 195 }, + { "Auml", 196 }, + { "Backslash", 8726 }, + { "Barv", 10983 }, + { "Barwed", 8966 }, + { "Bcy", 1041 }, + { "Because", 8757 }, + { "Bernoullis", 8492 }, + { "Beta", 914 }, + { "Breve", 728 }, + { "Bscr", 8492 }, + { "Bumpeq", 8782 }, + { "CHcy", 1063 }, + { "COPY", 169 }, + { "Cacute", 262 }, + { "Cap", 8914 }, + { "CapitalDifferentialD", 8517 }, + { "Cayleys", 8493 }, + { "Ccaron", 268 }, + { "Ccedil", 199 }, + { "Ccirc", 264 }, + { "Cconint", 8752 }, + { "Cdot", 266 }, + { "Cedilla", 184 }, + { "CenterDot", 183 }, + { "Cfr", 8493 }, + { "Chi", 935 }, + { "CircleDot", 8857 }, + { "CircleMinus", 8854 }, + { "CirclePlus", 8853 }, + { "CircleTimes", 8855 }, + { "ClockwiseContourIntegral", 8754 }, + { "CloseCurlyDoubleQuote", 8221 }, + { "CloseCurlyQuote", 8217 }, + { "Colon", 8759 }, + { "Colone", 10868 }, + { "Congruent", 8801 }, + { "Conint", 8751 }, + { "ContourIntegral", 8750 }, + { "Copf", 8450 }, + { "Coproduct", 8720 }, + { "CounterClockwiseContourIntegral", 8755 }, + { "Cross", 10799 }, + { "Cup", 8915 }, + { "CupCap", 8781 }, + { "DD", 8517 }, + { "DDotrahd", 10513 }, + { "DJcy", 1026 }, + { "DScy", 1029 }, + { "DZcy", 1039 }, + { "Dagger", 8225 }, + { "Darr", 8609 }, + { "Dashv", 10980 }, + { "Dcaron", 270 }, + { "Dcy", 1044 }, + { "Del", 8711 }, + { "Delta", 916 }, + { "DiacriticalAcute", 180 }, + { "DiacriticalDot", 729 }, + { "DiacriticalDoubleAcute", 733 }, + { "DiacriticalGrave", 96 }, + { "DiacriticalTilde", 732 }, + { "Diamond", 8900 }, + { "DifferentialD", 8518 }, + { "Dot", 168 }, + { "DotDot", 8412 }, + { "DotEqual", 8784 }, + { "DoubleContourIntegral", 8751 }, + { "DoubleDot", 168 }, + { "DoubleDownArrow", 8659 }, + { "DoubleLeftArrow", 8656 }, + { "DoubleLeftRightArrow", 8660 }, + { "DoubleLeftTee", 10980 }, + { "DoubleLongLeftArrow", 10232 }, + { "DoubleLongLeftRightArrow", 10234 }, + { "DoubleLongRightArrow", 10233 }, + { "DoubleRightArrow", 8658 }, + { "DoubleRightTee", 8872 }, + { "DoubleUpArrow", 8657 }, + { "DoubleUpDownArrow", 8661 }, + { "DoubleVerticalBar", 8741 }, + { "DownArrow", 8595 }, + { "DownArrowBar", 10515 }, + { "DownArrowUpArrow", 8693 }, + { "DownBreve", 785 }, + { "DownLeftRightVector", 10576 }, + { "DownLeftTeeVector", 10590 }, + { "DownLeftVector", 8637 }, + { "DownLeftVectorBar", 10582 }, + { "DownRightTeeVector", 10591 }, + { "DownRightVector", 8641 }, + { "DownRightVectorBar", 10583 }, + { "DownTee", 8868 }, + { "DownTeeArrow", 8615 }, + { "Downarrow", 8659 }, + { "Dstrok", 272 }, + { "ENG", 330 }, + { "ETH", 208 }, + { "Eacute", 201 }, + { "Ecaron", 282 }, + { "Ecirc", 202 }, + { "Ecy", 1069 }, + { "Edot", 278 }, + { "Egrave", 200 }, + { "Element", 8712 }, + { "Emacr", 274 }, + { "EmptySmallSquare", 9723 }, + { "EmptyVerySmallSquare", 9643 }, + { "Eogon", 280 }, + { "Epsilon", 917 }, + { "Equal", 10869 }, + { "EqualTilde", 8770 }, + { "Equilibrium", 8652 }, + { "Escr", 8496 }, + { "Esim", 10867 }, + { "Eta", 919 }, + { "Euml", 203 }, + { "Exists", 8707 }, + { "ExponentialE", 8519 }, + { "Fcy", 1060 }, + { "FilledSmallSquare", 9724 }, + { "FilledVerySmallSquare", 9642 }, + { "ForAll", 8704 }, + { "Fouriertrf", 8497 }, + { "Fscr", 8497 }, + { "GJcy", 1027 }, + { "GT", 62 }, + { "Gamma", 915 }, + { "Gammad", 988 }, + { "Gbreve", 286 }, + { "Gcedil", 290 }, + { "Gcirc", 284 }, + { "Gcy", 1043 }, + { "Gdot", 288 }, + { "Gg", 8921 }, + { "GreaterEqual", 8805 }, + { "GreaterEqualLess", 8923 }, + { "GreaterFullEqual", 8807 }, + { "GreaterGreater", 10914 }, + { "GreaterLess", 8823 }, + { "GreaterSlantEqual", 10878 }, + { "GreaterTilde", 8819 }, + { "Gt", 8811 }, + { "HARDcy", 1066 }, + { "Hacek", 711 }, + { "Hat", 94 }, + { "Hcirc", 292 }, + { "Hfr", 8460 }, + { "HilbertSpace", 8459 }, + { "Hopf", 8461 }, + { "HorizontalLine", 9472 }, + { "Hscr", 8459 }, + { "Hstrok", 294 }, + { "HumpDownHump", 8782 }, + { "HumpEqual", 8783 }, + { "IEcy", 1045 }, + { "IJlig", 306 }, + { "IOcy", 1025 }, + { "Iacute", 205 }, + { "Icirc", 206 }, + { "Icy", 1048 }, + { "Idot", 304 }, + { "Ifr", 8465 }, + { "Igrave", 204 }, + { "Im", 8465 }, + { "Imacr", 298 }, + { "ImaginaryI", 8520 }, + { "Implies", 8658 }, + { "Int", 8748 }, + { "Integral", 8747 }, + { "Intersection", 8898 }, + { "InvisibleComma", 8291 }, + { "InvisibleTimes", 8290 }, + { "Iogon", 302 }, + { "Iota", 921 }, + { "Iscr", 8464 }, + { "Itilde", 296 }, + { "Iukcy", 1030 }, + { "Iuml", 207 }, + { "Jcirc", 308 }, + { "Jcy", 1049 }, + { "Jsercy", 1032 }, + { "Jukcy", 1028 }, + { "KHcy", 1061 }, + { "KJcy", 1036 }, + { "Kappa", 922 }, + { "Kcedil", 310 }, + { "Kcy", 1050 }, + { "LJcy", 1033 }, + { "LT", 60 }, + { "Lacute", 313 }, + { "Lambda", 923 }, + { "Lang", 10218 }, + { "Laplacetrf", 8466 }, + { "Larr", 8606 }, + { "Lcaron", 317 }, + { "Lcedil", 315 }, + { "Lcy", 1051 }, + { "LeftAngleBracket", 10216 }, + { "LeftArrow", 8592 }, + { "LeftArrowBar", 8676 }, + { "LeftArrowRightArrow", 8646 }, + { "LeftCeiling", 8968 }, + { "LeftDoubleBracket", 10214 }, + { "LeftDownTeeVector", 10593 }, + { "LeftDownVector", 8643 }, + { "LeftDownVectorBar", 10585 }, + { "LeftFloor", 8970 }, + { "LeftRightArrow", 8596 }, + { "LeftRightVector", 10574 }, + { "LeftTee", 8867 }, + { "LeftTeeArrow", 8612 }, + { "LeftTeeVector", 10586 }, + { "LeftTriangle", 8882 }, + { "LeftTriangleBar", 10703 }, + { "LeftTriangleEqual", 8884 }, + { "LeftUpDownVector", 10577 }, + { "LeftUpTeeVector", 10592 }, + { "LeftUpVector", 8639 }, + { "LeftUpVectorBar", 10584 }, + { "LeftVector", 8636 }, + { "LeftVectorBar", 10578 }, + { "Leftarrow", 8656 }, + { "Leftrightarrow", 8660 }, + { "LessEqualGreater", 8922 }, + { "LessFullEqual", 8806 }, + { "LessGreater", 8822 }, + { "LessLess", 10913 }, + { "LessSlantEqual", 10877 }, + { "LessTilde", 8818 }, + { "Ll", 8920 }, + { "Lleftarrow", 8666 }, + { "Lmidot", 319 }, + { "LongLeftArrow", 10229 }, + { "LongLeftRightArrow", 10231 }, + { "LongRightArrow", 10230 }, + { "Longleftarrow", 10232 }, + { "Longleftrightarrow", 10234 }, + { "Longrightarrow", 10233 }, + { "LowerLeftArrow", 8601 }, + { "LowerRightArrow", 8600 }, + { "Lscr", 8466 }, + { "Lsh", 8624 }, + { "Lstrok", 321 }, + { "Lt", 8810 }, + { "Map", 10501 }, + { "Mcy", 1052 }, + { "MediumSpace", 8287 }, + { "Mellintrf", 8499 }, + { "MinusPlus", 8723 }, + { "Mscr", 8499 }, + { "Mu", 924 }, + { "NJcy", 1034 }, + { "Nacute", 323 }, + { "Ncaron", 327 }, + { "Ncedil", 325 }, + { "Ncy", 1053 }, + { "NegativeMediumSpace", 8203 }, + { "NegativeThickSpace", 8203 }, + { "NegativeThinSpace", 8203 }, + { "NegativeVeryThinSpace", 8203 }, + { "NestedGreaterGreater", 8811 }, + { "NestedLessLess", 8810 }, + { "NewLine", 10 }, + { "NoBreak", 8288 }, + { "NonBreakingSpace", 160 }, + { "Nopf", 8469 }, + { "Not", 10988 }, + { "NotCongruent", 8802 }, + { "NotCupCap", 8813 }, + { "NotDoubleVerticalBar", 8742 }, + { "NotElement", 8713 }, + { "NotEqual", 8800 }, + { "NotExists", 8708 }, + { "NotGreater", 8815 }, + { "NotGreaterEqual", 8817 }, + { "NotGreaterLess", 8825 }, + { "NotGreaterTilde", 8821 }, + { "NotLeftTriangle", 8938 }, + { "NotLeftTriangleEqual", 8940 }, + { "NotLess", 8814 }, + { "NotLessEqual", 8816 }, + { "NotLessGreater", 8824 }, + { "NotLessTilde", 8820 }, + { "NotPrecedes", 8832 }, + { "NotPrecedesSlantEqual", 8928 }, + { "NotReverseElement", 8716 }, + { "NotRightTriangle", 8939 }, + { "NotRightTriangleEqual", 8941 }, + { "NotSquareSubsetEqual", 8930 }, + { "NotSquareSupersetEqual", 8931 }, + { "NotSubsetEqual", 8840 }, + { "NotSucceeds", 8833 }, + { "NotSucceedsSlantEqual", 8929 }, + { "NotSupersetEqual", 8841 }, + { "NotTilde", 8769 }, + { "NotTildeEqual", 8772 }, + { "NotTildeFullEqual", 8775 }, + { "NotTildeTilde", 8777 }, + { "NotVerticalBar", 8740 }, + { "Ntilde", 209 }, + { "Nu", 925 }, + { "OElig", 338 }, + { "Oacute", 211 }, + { "Ocirc", 212 }, + { "Ocy", 1054 }, + { "Odblac", 336 }, + { "Ograve", 210 }, + { "Omacr", 332 }, + { "Omega", 937 }, + { "Omicron", 927 }, + { "OpenCurlyDoubleQuote", 8220 }, + { "OpenCurlyQuote", 8216 }, + { "Or", 10836 }, + { "Oslash", 216 }, + { "Otilde", 213 }, + { "Otimes", 10807 }, + { "Ouml", 214 }, + { "OverBar", 8254 }, + { "OverBrace", 9182 }, + { "OverBracket", 9140 }, + { "OverParenthesis", 9180 }, + { "PartialD", 8706 }, + { "Pcy", 1055 }, + { "Phi", 934 }, + { "Pi", 928 }, + { "PlusMinus", 177 }, + { "Poincareplane", 8460 }, + { "Popf", 8473 }, + { "Pr", 10939 }, + { "Precedes", 8826 }, + { "PrecedesEqual", 10927 }, + { "PrecedesSlantEqual", 8828 }, + { "PrecedesTilde", 8830 }, + { "Prime", 8243 }, + { "Product", 8719 }, + { "Proportion", 8759 }, + { "Proportional", 8733 }, + { "Psi", 936 }, + { "QUOT", 34 }, + { "Qopf", 8474 }, + { "RBarr", 10512 }, + { "REG", 174 }, + { "Racute", 340 }, + { "Rang", 10219 }, + { "Rarr", 8608 }, + { "Rarrtl", 10518 }, + { "Rcaron", 344 }, + { "Rcedil", 342 }, + { "Rcy", 1056 }, + { "Re", 8476 }, + { "ReverseElement", 8715 }, + { "ReverseEquilibrium", 8651 }, + { "ReverseUpEquilibrium", 10607 }, + { "Rfr", 8476 }, + { "Rho", 929 }, + { "RightAngleBracket", 10217 }, + { "RightArrow", 8594 }, + { "RightArrowBar", 8677 }, + { "RightArrowLeftArrow", 8644 }, + { "RightCeiling", 8969 }, + { "RightDoubleBracket", 10215 }, + { "RightDownTeeVector", 10589 }, + { "RightDownVector", 8642 }, + { "RightDownVectorBar", 10581 }, + { "RightFloor", 8971 }, + { "RightTee", 8866 }, + { "RightTeeArrow", 8614 }, + { "RightTeeVector", 10587 }, + { "RightTriangle", 8883 }, + { "RightTriangleBar", 10704 }, + { "RightTriangleEqual", 8885 }, + { "RightUpDownVector", 10575 }, + { "RightUpTeeVector", 10588 }, + { "RightUpVector", 8638 }, + { "RightUpVectorBar", 10580 }, + { "RightVector", 8640 }, + { "RightVectorBar", 10579 }, + { "Rightarrow", 8658 }, + { "Ropf", 8477 }, + { "RoundImplies", 10608 }, + { "Rrightarrow", 8667 }, + { "Rscr", 8475 }, + { "Rsh", 8625 }, + { "RuleDelayed", 10740 }, + { "SHCHcy", 1065 }, + { "SHcy", 1064 }, + { "SOFTcy", 1068 }, + { "Sacute", 346 }, + { "Sc", 10940 }, + { "Scaron", 352 }, + { "Scedil", 350 }, + { "Scirc", 348 }, + { "Scy", 1057 }, + { "ShortDownArrow", 8595 }, + { "ShortLeftArrow", 8592 }, + { "ShortRightArrow", 8594 }, + { "ShortUpArrow", 8593 }, + { "Sigma", 931 }, + { "SmallCircle", 8728 }, + { "Sqrt", 8730 }, + { "Square", 9633 }, + { "SquareIntersection", 8851 }, + { "SquareSubset", 8847 }, + { "SquareSubsetEqual", 8849 }, + { "SquareSuperset", 8848 }, + { "SquareSupersetEqual", 8850 }, + { "SquareUnion", 8852 }, + { "Star", 8902 }, + { "Sub", 8912 }, + { "Subset", 8912 }, + { "SubsetEqual", 8838 }, + { "Succeeds", 8827 }, + { "SucceedsEqual", 10928 }, + { "SucceedsSlantEqual", 8829 }, + { "SucceedsTilde", 8831 }, + { "SuchThat", 8715 }, + { "Sum", 8721 }, + { "Sup", 8913 }, + { "Superset", 8835 }, + { "SupersetEqual", 8839 }, + { "Supset", 8913 }, + { "THORN", 222 }, + { "TRADE", 8482 }, + { "TSHcy", 1035 }, + { "TScy", 1062 }, + { "Tab", 9 }, + { "Tau", 932 }, + { "Tcaron", 356 }, + { "Tcedil", 354 }, + { "Tcy", 1058 }, + { "Therefore", 8756 }, + { "Theta", 920 }, + { "ThinSpace", 8201 }, + { "Tilde", 8764 }, + { "TildeEqual", 8771 }, + { "TildeFullEqual", 8773 }, + { "TildeTilde", 8776 }, + { "TripleDot", 8411 }, + { "Tstrok", 358 }, + { "Uacute", 218 }, + { "Uarr", 8607 }, + { "Uarrocir", 10569 }, + { "Ubrcy", 1038 }, + { "Ubreve", 364 }, + { "Ucirc", 219 }, + { "Ucy", 1059 }, + { "Udblac", 368 }, + { "Ugrave", 217 }, + { "Umacr", 362 }, + { "UnderBar", 95 }, + { "UnderBrace", 9183 }, + { "UnderBracket", 9141 }, + { "UnderParenthesis", 9181 }, + { "Union", 8899 }, + { "UnionPlus", 8846 }, + { "Uogon", 370 }, + { "UpArrow", 8593 }, + { "UpArrowBar", 10514 }, + { "UpArrowDownArrow", 8645 }, + { "UpDownArrow", 8597 }, + { "UpEquilibrium", 10606 }, + { "UpTee", 8869 }, + { "UpTeeArrow", 8613 }, + { "Uparrow", 8657 }, + { "Updownarrow", 8661 }, + { "UpperLeftArrow", 8598 }, + { "UpperRightArrow", 8599 }, + { "Upsi", 978 }, + { "Upsilon", 933 }, + { "Uring", 366 }, + { "Utilde", 360 }, + { "Uuml", 220 }, + { "VDash", 8875 }, + { "Vbar", 10987 }, + { "Vcy", 1042 }, + { "Vdash", 8873 }, + { "Vdashl", 10982 }, + { "Vee", 8897 }, + { "Verbar", 8214 }, + { "Vert", 8214 }, + { "VerticalBar", 8739 }, + { "VerticalLine", 124 }, + { "VerticalSeparator", 10072 }, + { "VerticalTilde", 8768 }, + { "VeryThinSpace", 8202 }, + { "Vvdash", 8874 }, + { "Wcirc", 372 }, + { "Wedge", 8896 }, + { "Xi", 926 }, + { "YAcy", 1071 }, + { "YIcy", 1031 }, + { "YUcy", 1070 }, + { "Yacute", 221 }, + { "Ycirc", 374 }, + { "Ycy", 1067 }, + { "Yuml", 376 }, + { "ZHcy", 1046 }, + { "Zacute", 377 }, + { "Zcaron", 381 }, + { "Zcy", 1047 }, + { "Zdot", 379 }, + { "ZeroWidthSpace", 8203 }, + { "Zeta", 918 }, + { "Zfr", 8488 }, + { "Zopf", 8484 }, + { "aacute", 225 }, + { "abreve", 259 }, + { "ac", 8766 }, + { "acd", 8767 }, + { "acirc", 226 }, + { "acute", 180 }, + { "acy", 1072 }, + { "aelig", 230 }, + { "af", 8289 }, + { "agrave", 224 }, + { "alefsym", 8501 }, + { "aleph", 8501 }, + { "alpha", 945 }, + { "amacr", 257 }, + { "amalg", 10815 }, + { "amp", 38 }, + { "and", 8743 }, + { "andand", 10837 }, + { "andd", 10844 }, + { "andslope", 10840 }, + { "andv", 10842 }, + { "ang", 8736 }, + { "ange", 10660 }, + { "angle", 8736 }, + { "angmsd", 8737 }, + { "angmsdaa", 10664 }, + { "angmsdab", 10665 }, + { "angmsdac", 10666 }, + { "angmsdad", 10667 }, + { "angmsdae", 10668 }, + { "angmsdaf", 10669 }, + { "angmsdag", 10670 }, + { "angmsdah", 10671 }, + { "angrt", 8735 }, + { "angrtvb", 8894 }, + { "angrtvbd", 10653 }, + { "angsph", 8738 }, + { "angst", 197 }, + { "angzarr", 9084 }, + { "aogon", 261 }, + { "ap", 8776 }, + { "apE", 10864 }, + { "apacir", 10863 }, + { "ape", 8778 }, + { "apid", 8779 }, + { "apos", 39 }, + { "approx", 8776 }, + { "approxeq", 8778 }, + { "aring", 229 }, + { "ast", 42 }, + { "asymp", 8776 }, + { "asympeq", 8781 }, + { "atilde", 227 }, + { "auml", 228 }, + { "awconint", 8755 }, + { "awint", 10769 }, + { "bNot", 10989 }, + { "backcong", 8780 }, + { "backepsilon", 1014 }, + { "backprime", 8245 }, + { "backsim", 8765 }, + { "backsimeq", 8909 }, + { "barvee", 8893 }, + { "barwed", 8965 }, + { "barwedge", 8965 }, + { "bbrk", 9141 }, + { "bbrktbrk", 9142 }, + { "bcong", 8780 }, + { "bcy", 1073 }, + { "bdquo", 8222 }, + { "becaus", 8757 }, + { "because", 8757 }, + { "bemptyv", 10672 }, + { "bepsi", 1014 }, + { "bernou", 8492 }, + { "beta", 946 }, + { "beth", 8502 }, + { "between", 8812 }, + { "bigcap", 8898 }, + { "bigcirc", 9711 }, + { "bigcup", 8899 }, + { "bigodot", 10752 }, + { "bigoplus", 10753 }, + { "bigotimes", 10754 }, + { "bigsqcup", 10758 }, + { "bigstar", 9733 }, + { "bigtriangledown", 9661 }, + { "bigtriangleup", 9651 }, + { "biguplus", 10756 }, + { "bigvee", 8897 }, + { "bigwedge", 8896 }, + { "bkarow", 10509 }, + { "blacklozenge", 10731 }, + { "blacksquare", 9642 }, + { "blacktriangle", 9652 }, + { "blacktriangledown", 9662 }, + { "blacktriangleleft", 9666 }, + { "blacktriangleright", 9656 }, + { "blank", 9251 }, + { "blk12", 9618 }, + { "blk14", 9617 }, + { "blk34", 9619 }, + { "block", 9608 }, + { "bnot", 8976 }, + { "bot", 8869 }, + { "bottom", 8869 }, + { "bowtie", 8904 }, + { "boxDL", 9559 }, + { "boxDR", 9556 }, + { "boxDl", 9558 }, + { "boxDr", 9555 }, + { "boxH", 9552 }, + { "boxHD", 9574 }, + { "boxHU", 9577 }, + { "boxHd", 9572 }, + { "boxHu", 9575 }, + { "boxUL", 9565 }, + { "boxUR", 9562 }, + { "boxUl", 9564 }, + { "boxUr", 9561 }, + { "boxV", 9553 }, + { "boxVH", 9580 }, + { "boxVL", 9571 }, + { "boxVR", 9568 }, + { "boxVh", 9579 }, + { "boxVl", 9570 }, + { "boxVr", 9567 }, + { "boxbox", 10697 }, + { "boxdL", 9557 }, + { "boxdR", 9554 }, + { "boxdl", 9488 }, + { "boxdr", 9484 }, + { "boxh", 9472 }, + { "boxhD", 9573 }, + { "boxhU", 9576 }, + { "boxhd", 9516 }, + { "boxhu", 9524 }, + { "boxminus", 8863 }, + { "boxplus", 8862 }, + { "boxtimes", 8864 }, + { "boxuL", 9563 }, + { "boxuR", 9560 }, + { "boxul", 9496 }, + { "boxur", 9492 }, + { "boxv", 9474 }, + { "boxvH", 9578 }, + { "boxvL", 9569 }, + { "boxvR", 9566 }, + { "boxvh", 9532 }, + { "boxvl", 9508 }, + { "boxvr", 9500 }, + { "bprime", 8245 }, + { "breve", 728 }, + { "brvbar", 166 }, + { "bsemi", 8271 }, + { "bsim", 8765 }, + { "bsime", 8909 }, + { "bsol", 92 }, + { "bsolb", 10693 }, + { "bsolhsub", 10184 }, + { "bull", 8226 }, + { "bullet", 8226 }, + { "bump", 8782 }, + { "bumpE", 10926 }, + { "bumpe", 8783 }, + { "bumpeq", 8783 }, + { "cacute", 263 }, + { "cap", 8745 }, + { "capand", 10820 }, + { "capbrcup", 10825 }, + { "capcap", 10827 }, + { "capcup", 10823 }, + { "capdot", 10816 }, + { "caret", 8257 }, + { "caron", 711 }, + { "ccaps", 10829 }, + { "ccaron", 269 }, + { "ccedil", 231 }, + { "ccirc", 265 }, + { "ccups", 10828 }, + { "ccupssm", 10832 }, + { "cdot", 267 }, + { "cedil", 184 }, + { "cemptyv", 10674 }, + { "cent", 162 }, + { "centerdot", 183 }, + { "chcy", 1095 }, + { "check", 10003 }, + { "checkmark", 10003 }, + { "chi", 967 }, + { "cir", 9675 }, + { "cirE", 10691 }, + { "circ", 710 }, + { "circeq", 8791 }, + { "circlearrowleft", 8634 }, + { "circlearrowright", 8635 }, + { "circledR", 174 }, + { "circledS", 9416 }, + { "circledast", 8859 }, + { "circledcirc", 8858 }, + { "circleddash", 8861 }, + { "cire", 8791 }, + { "cirfnint", 10768 }, + { "cirmid", 10991 }, + { "cirscir", 10690 }, + { "clubs", 9827 }, + { "clubsuit", 9827 }, + { "colon", 58 }, + { "colone", 8788 }, + { "coloneq", 8788 }, + { "comma", 44 }, + { "commat", 64 }, + { "comp", 8705 }, + { "compfn", 8728 }, + { "complement", 8705 }, + { "complexes", 8450 }, + { "cong", 8773 }, + { "congdot", 10861 }, + { "conint", 8750 }, + { "coprod", 8720 }, + { "copy", 169 }, + { "copysr", 8471 }, + { "crarr", 8629 }, + { "cross", 10007 }, + { "csub", 10959 }, + { "csube", 10961 }, + { "csup", 10960 }, + { "csupe", 10962 }, + { "ctdot", 8943 }, + { "cudarrl", 10552 }, + { "cudarrr", 10549 }, + { "cuepr", 8926 }, + { "cuesc", 8927 }, + { "cularr", 8630 }, + { "cularrp", 10557 }, + { "cup", 8746 }, + { "cupbrcap", 10824 }, + { "cupcap", 10822 }, + { "cupcup", 10826 }, + { "cupdot", 8845 }, + { "cupor", 10821 }, + { "curarr", 8631 }, + { "curarrm", 10556 }, + { "curlyeqprec", 8926 }, + { "curlyeqsucc", 8927 }, + { "curlyvee", 8910 }, + { "curlywedge", 8911 }, + { "curren", 164 }, + { "curvearrowleft", 8630 }, + { "curvearrowright", 8631 }, + { "cuvee", 8910 }, + { "cuwed", 8911 }, + { "cwconint", 8754 }, + { "cwint", 8753 }, + { "cylcty", 9005 }, + { "dArr", 8659 }, + { "dHar", 10597 }, + { "dagger", 8224 }, + { "daleth", 8504 }, + { "darr", 8595 }, + { "dash", 8208 }, + { "dashv", 8867 }, + { "dbkarow", 10511 }, + { "dblac", 733 }, + { "dcaron", 271 }, + { "dcy", 1076 }, + { "dd", 8518 }, + { "ddagger", 8225 }, + { "ddarr", 8650 }, + { "ddotseq", 10871 }, + { "deg", 176 }, + { "delta", 948 }, + { "demptyv", 10673 }, + { "dfisht", 10623 }, + { "dharl", 8643 }, + { "dharr", 8642 }, + { "diam", 8900 }, + { "diamond", 8900 }, + { "diamondsuit", 9830 }, + { "diams", 9830 }, + { "die", 168 }, + { "digamma", 989 }, + { "disin", 8946 }, + { "div", 247 }, + { "divide", 247 }, + { "divideontimes", 8903 }, + { "divonx", 8903 }, + { "djcy", 1106 }, + { "dlcorn", 8990 }, + { "dlcrop", 8973 }, + { "dollar", 36 }, + { "dot", 729 }, + { "doteq", 8784 }, + { "doteqdot", 8785 }, + { "dotminus", 8760 }, + { "dotplus", 8724 }, + { "dotsquare", 8865 }, + { "doublebarwedge", 8966 }, + { "downarrow", 8595 }, + { "downdownarrows", 8650 }, + { "downharpoonleft", 8643 }, + { "downharpoonright", 8642 }, + { "drbkarow", 10512 }, + { "drcorn", 8991 }, + { "drcrop", 8972 }, + { "dscy", 1109 }, + { "dsol", 10742 }, + { "dstrok", 273 }, + { "dtdot", 8945 }, + { "dtri", 9663 }, + { "dtrif", 9662 }, + { "duarr", 8693 }, + { "duhar", 10607 }, + { "dwangle", 10662 }, + { "dzcy", 1119 }, + { "dzigrarr", 10239 }, + { "eDDot", 10871 }, + { "eDot", 8785 }, + { "eacute", 233 }, + { "easter", 10862 }, + { "ecaron", 283 }, + { "ecir", 8790 }, + { "ecirc", 234 }, + { "ecolon", 8789 }, + { "ecy", 1101 }, + { "edot", 279 }, + { "ee", 8519 }, + { "efDot", 8786 }, + { "eg", 10906 }, + { "egrave", 232 }, + { "egs", 10902 }, + { "egsdot", 10904 }, + { "el", 10905 }, + { "elinters", 9191 }, + { "ell", 8467 }, + { "els", 10901 }, + { "elsdot", 10903 }, + { "emacr", 275 }, + { "empty", 8709 }, + { "emptyset", 8709 }, + { "emptyv", 8709 }, + { "emsp13", 8196 }, + { "emsp14", 8197 }, + { "emsp", 8195 }, + { "eng", 331 }, + { "ensp", 8194 }, + { "eogon", 281 }, + { "epar", 8917 }, + { "eparsl", 10723 }, + { "eplus", 10865 }, + { "epsi", 949 }, + { "epsilon", 949 }, + { "epsiv", 1013 }, + { "eqcirc", 8790 }, + { "eqcolon", 8789 }, + { "eqsim", 8770 }, + { "eqslantgtr", 10902 }, + { "eqslantless", 10901 }, + { "equals", 61 }, + { "equest", 8799 }, + { "equiv", 8801 }, + { "equivDD", 10872 }, + { "eqvparsl", 10725 }, + { "erDot", 8787 }, + { "erarr", 10609 }, + { "escr", 8495 }, + { "esdot", 8784 }, + { "esim", 8770 }, + { "eta", 951 }, + { "eth", 240 }, + { "euml", 235 }, + { "euro", 8364 }, + { "excl", 33 }, + { "exist", 8707 }, + { "expectation", 8496 }, + { "exponentiale", 8519 }, + { "fallingdotseq", 8786 }, + { "fcy", 1092 }, + { "female", 9792 }, + { "ffilig", 64259 }, + { "fflig", 64256 }, + { "ffllig", 64260 }, + { "filig", 64257 }, + { "flat", 9837 }, + { "fllig", 64258 }, + { "fltns", 9649 }, + { "fnof", 402 }, + { "forall", 8704 }, + { "fork", 8916 }, + { "forkv", 10969 }, + { "fpartint", 10765 }, + { "frac12", 189 }, + { "frac13", 8531 }, + { "frac14", 188 }, + { "frac15", 8533 }, + { "frac16", 8537 }, + { "frac18", 8539 }, + { "frac23", 8532 }, + { "frac25", 8534 }, + { "frac34", 190 }, + { "frac35", 8535 }, + { "frac38", 8540 }, + { "frac45", 8536 }, + { "frac56", 8538 }, + { "frac58", 8541 }, + { "frac78", 8542 }, + { "frasl", 8260 }, + { "frown", 8994 }, + { "gE", 8807 }, + { "gEl", 10892 }, + { "gacute", 501 }, + { "gamma", 947 }, + { "gammad", 989 }, + { "gap", 10886 }, + { "gbreve", 287 }, + { "gcirc", 285 }, + { "gcy", 1075 }, + { "gdot", 289 }, + { "ge", 8805 }, + { "gel", 8923 }, + { "geq", 8805 }, + { "geqq", 8807 }, + { "geqslant", 10878 }, + { "ges", 10878 }, + { "gescc", 10921 }, + { "gesdot", 10880 }, + { "gesdoto", 10882 }, + { "gesdotol", 10884 }, + { "gesles", 10900 }, + { "gg", 8811 }, + { "ggg", 8921 }, + { "gimel", 8503 }, + { "gjcy", 1107 }, + { "gl", 8823 }, + { "glE", 10898 }, + { "gla", 10917 }, + { "glj", 10916 }, + { "gnE", 8809 }, + { "gnap", 10890 }, + { "gnapprox", 10890 }, + { "gne", 10888 }, + { "gneq", 10888 }, + { "gneqq", 8809 }, + { "gnsim", 8935 }, + { "grave", 96 }, + { "gscr", 8458 }, + { "gsim", 8819 }, + { "gsime", 10894 }, + { "gsiml", 10896 }, + { "gt", 62 }, + { "gtcc", 10919 }, + { "gtcir", 10874 }, + { "gtdot", 8919 }, + { "gtlPar", 10645 }, + { "gtquest", 10876 }, + { "gtrapprox", 10886 }, + { "gtrarr", 10616 }, + { "gtrdot", 8919 }, + { "gtreqless", 8923 }, + { "gtreqqless", 10892 }, + { "gtrless", 8823 }, + { "gtrsim", 8819 }, + { "hArr", 8660 }, + { "hairsp", 8202 }, + { "half", 189 }, + { "hamilt", 8459 }, + { "hardcy", 1098 }, + { "harr", 8596 }, + { "harrcir", 10568 }, + { "harrw", 8621 }, + { "hbar", 8463 }, + { "hcirc", 293 }, + { "hearts", 9829 }, + { "heartsuit", 9829 }, + { "hellip", 8230 }, + { "hercon", 8889 }, + { "hksearow", 10533 }, + { "hkswarow", 10534 }, + { "hoarr", 8703 }, + { "homtht", 8763 }, + { "hookleftarrow", 8617 }, + { "hookrightarrow", 8618 }, + { "horbar", 8213 }, + { "hslash", 8463 }, + { "hstrok", 295 }, + { "hybull", 8259 }, + { "hyphen", 8208 }, + { "iacute", 237 }, + { "ic", 8291 }, + { "icirc", 238 }, + { "icy", 1080 }, + { "iecy", 1077 }, + { "iexcl", 161 }, + { "iff", 8660 }, + { "igrave", 236 }, + { "ii", 8520 }, + { "iiiint", 10764 }, + { "iiint", 8749 }, + { "iinfin", 10716 }, + { "iiota", 8489 }, + { "ijlig", 307 }, + { "imacr", 299 }, + { "image", 8465 }, + { "imagline", 8464 }, + { "imagpart", 8465 }, + { "imath", 305 }, + { "imof", 8887 }, + { "imped", 437 }, + { "in", 8712 }, + { "incare", 8453 }, + { "infin", 8734 }, + { "infintie", 10717 }, + { "inodot", 305 }, + { "int", 8747 }, + { "intcal", 8890 }, + { "integers", 8484 }, + { "intercal", 8890 }, + { "intlarhk", 10775 }, + { "intprod", 10812 }, + { "iocy", 1105 }, + { "iogon", 303 }, + { "iota", 953 }, + { "iprod", 10812 }, + { "iquest", 191 }, + { "isin", 8712 }, + { "isinE", 8953 }, + { "isindot", 8949 }, + { "isins", 8948 }, + { "isinsv", 8947 }, + { "isinv", 8712 }, + { "it", 8290 }, + { "itilde", 297 }, + { "iukcy", 1110 }, + { "iuml", 239 }, + { "jcirc", 309 }, + { "jcy", 1081 }, + { "jmath", 567 }, + { "jsercy", 1112 }, + { "jukcy", 1108 }, + { "kappa", 954 }, + { "kappav", 1008 }, + { "kcedil", 311 }, + { "kcy", 1082 }, + { "kgreen", 312 }, + { "khcy", 1093 }, + { "kjcy", 1116 }, + { "lAarr", 8666 }, + { "lArr", 8656 }, + { "lAtail", 10523 }, + { "lBarr", 10510 }, + { "lE", 8806 }, + { "lEg", 10891 }, + { "lHar", 10594 }, + { "lacute", 314 }, + { "laemptyv", 10676 }, + { "lagran", 8466 }, + { "lambda", 955 }, + { "lang", 10216 }, + { "langd", 10641 }, + { "langle", 10216 }, + { "lap", 10885 }, + { "laquo", 171 }, + { "larr", 8592 }, + { "larrb", 8676 }, + { "larrbfs", 10527 }, + { "larrfs", 10525 }, + { "larrhk", 8617 }, + { "larrlp", 8619 }, + { "larrpl", 10553 }, + { "larrsim", 10611 }, + { "larrtl", 8610 }, + { "lat", 10923 }, + { "latail", 10521 }, + { "late", 10925 }, + { "lbarr", 10508 }, + { "lbbrk", 10098 }, + { "lbrace", 123 }, + { "lbrack", 91 }, + { "lbrke", 10635 }, + { "lbrksld", 10639 }, + { "lbrkslu", 10637 }, + { "lcaron", 318 }, + { "lcedil", 316 }, + { "lceil", 8968 }, + { "lcub", 123 }, + { "lcy", 1083 }, + { "ldca", 10550 }, + { "ldquo", 8220 }, + { "ldquor", 8222 }, + { "ldrdhar", 10599 }, + { "ldrushar", 10571 }, + { "ldsh", 8626 }, + { "le", 8804 }, + { "leftarrow", 8592 }, + { "leftarrowtail", 8610 }, + { "leftharpoondown", 8637 }, + { "leftharpoonup", 8636 }, + { "leftleftarrows", 8647 }, + { "leftrightarrow", 8596 }, + { "leftrightarrows", 8646 }, + { "leftrightharpoons", 8651 }, + { "leftrightsquigarrow", 8621 }, + { "leftthreetimes", 8907 }, + { "leg", 8922 }, + { "leq", 8804 }, + { "leqq", 8806 }, + { "leqslant", 10877 }, + { "les", 10877 }, + { "lescc", 10920 }, + { "lesdot", 10879 }, + { "lesdoto", 10881 }, + { "lesdotor", 10883 }, + { "lesges", 10899 }, + { "lessapprox", 10885 }, + { "lessdot", 8918 }, + { "lesseqgtr", 8922 }, + { "lesseqqgtr", 10891 }, + { "lessgtr", 8822 }, + { "lesssim", 8818 }, + { "lfisht", 10620 }, + { "lfloor", 8970 }, + { "lg", 8822 }, + { "lgE", 10897 }, + { "lhard", 8637 }, + { "lharu", 8636 }, + { "lharul", 10602 }, + { "lhblk", 9604 }, + { "ljcy", 1113 }, + { "ll", 8810 }, + { "llarr", 8647 }, + { "llcorner", 8990 }, + { "llhard", 10603 }, + { "lltri", 9722 }, + { "lmidot", 320 }, + { "lmoust", 9136 }, + { "lmoustache", 9136 }, + { "lnE", 8808 }, + { "lnap", 10889 }, + { "lnapprox", 10889 }, + { "lne", 10887 }, + { "lneq", 10887 }, + { "lneqq", 8808 }, + { "lnsim", 8934 }, + { "loang", 10220 }, + { "loarr", 8701 }, + { "lobrk", 10214 }, + { "longleftarrow", 10229 }, + { "longleftrightarrow", 10231 }, + { "longmapsto", 10236 }, + { "longrightarrow", 10230 }, + { "looparrowleft", 8619 }, + { "looparrowright", 8620 }, + { "lopar", 10629 }, + { "loplus", 10797 }, + { "lotimes", 10804 }, + { "lowast", 8727 }, + { "lowbar", 95 }, + { "loz", 9674 }, + { "lozenge", 9674 }, + { "lozf", 10731 }, + { "lpar", 40 }, + { "lparlt", 10643 }, + { "lrarr", 8646 }, + { "lrcorner", 8991 }, + { "lrhar", 8651 }, + { "lrhard", 10605 }, + { "lrm", 8206 }, + { "lrtri", 8895 }, + { "lsaquo", 8249 }, + { "lsh", 8624 }, + { "lsim", 8818 }, + { "lsime", 10893 }, + { "lsimg", 10895 }, + { "lsqb", 91 }, + { "lsquo", 8216 }, + { "lsquor", 8218 }, + { "lstrok", 322 }, + { "lt", 60 }, + { "ltcc", 10918 }, + { "ltcir", 10873 }, + { "ltdot", 8918 }, + { "lthree", 8907 }, + { "ltimes", 8905 }, + { "ltlarr", 10614 }, + { "ltquest", 10875 }, + { "ltrPar", 10646 }, + { "ltri", 9667 }, + { "ltrie", 8884 }, + { "ltrif", 9666 }, + { "lurdshar", 10570 }, + { "luruhar", 10598 }, + { "mDDot", 8762 }, + { "macr", 175 }, + { "male", 9794 }, + { "malt", 10016 }, + { "maltese", 10016 }, + { "map", 8614 }, + { "mapsto", 8614 }, + { "mapstodown", 8615 }, + { "mapstoleft", 8612 }, + { "mapstoup", 8613 }, + { "marker", 9646 }, + { "mcomma", 10793 }, + { "mcy", 1084 }, + { "mdash", 8212 }, + { "measuredangle", 8737 }, + { "mho", 8487 }, + { "micro", 181 }, + { "mid", 8739 }, + { "midast", 42 }, + { "midcir", 10992 }, + { "middot", 183 }, + { "minus", 8722 }, + { "minusb", 8863 }, + { "minusd", 8760 }, + { "minusdu", 10794 }, + { "mlcp", 10971 }, + { "mldr", 8230 }, + { "mnplus", 8723 }, + { "models", 8871 }, + { "mp", 8723 }, + { "mstpos", 8766 }, + { "mu", 956 }, + { "multimap", 8888 }, + { "mumap", 8888 }, + { "nLeftarrow", 8653 }, + { "nLeftrightarrow", 8654 }, + { "nRightarrow", 8655 }, + { "nVDash", 8879 }, + { "nVdash", 8878 }, + { "nabla", 8711 }, + { "nacute", 324 }, + { "nap", 8777 }, + { "napos", 329 }, + { "napprox", 8777 }, + { "natur", 9838 }, + { "natural", 9838 }, + { "naturals", 8469 }, + { "nbsp", 160 }, + { "ncap", 10819 }, + { "ncaron", 328 }, + { "ncedil", 326 }, + { "ncong", 8775 }, + { "ncup", 10818 }, + { "ncy", 1085 }, + { "ndash", 8211 }, + { "ne", 8800 }, + { "neArr", 8663 }, + { "nearhk", 10532 }, + { "nearr", 8599 }, + { "nearrow", 8599 }, + { "nequiv", 8802 }, + { "nesear", 10536 }, + { "nexist", 8708 }, + { "nexists", 8708 }, + { "nge", 8817 }, + { "ngeq", 8817 }, + { "ngsim", 8821 }, + { "ngt", 8815 }, + { "ngtr", 8815 }, + { "nhArr", 8654 }, + { "nharr", 8622 }, + { "nhpar", 10994 }, + { "ni", 8715 }, + { "nis", 8956 }, + { "nisd", 8954 }, + { "niv", 8715 }, + { "njcy", 1114 }, + { "nlArr", 8653 }, + { "nlarr", 8602 }, + { "nldr", 8229 }, + { "nle", 8816 }, + { "nleftarrow", 8602 }, + { "nleftrightarrow", 8622 }, + { "nleq", 8816 }, + { "nless", 8814 }, + { "nlsim", 8820 }, + { "nlt", 8814 }, + { "nltri", 8938 }, + { "nltrie", 8940 }, + { "nmid", 8740 }, + { "not", 172 }, + { "notin", 8713 }, + { "notinva", 8713 }, + { "notinvb", 8951 }, + { "notinvc", 8950 }, + { "notni", 8716 }, + { "notniva", 8716 }, + { "notnivb", 8958 }, + { "notnivc", 8957 }, + { "npar", 8742 }, + { "nparallel", 8742 }, + { "npolint", 10772 }, + { "npr", 8832 }, + { "nprcue", 8928 }, + { "nprec", 8832 }, + { "nrArr", 8655 }, + { "nrarr", 8603 }, + { "nrightarrow", 8603 }, + { "nrtri", 8939 }, + { "nrtrie", 8941 }, + { "nsc", 8833 }, + { "nsccue", 8929 }, + { "nshortmid", 8740 }, + { "nshortparallel", 8742 }, + { "nsim", 8769 }, + { "nsime", 8772 }, + { "nsimeq", 8772 }, + { "nsmid", 8740 }, + { "nspar", 8742 }, + { "nsqsube", 8930 }, + { "nsqsupe", 8931 }, + { "nsub", 8836 }, + { "nsube", 8840 }, + { "nsubseteq", 8840 }, + { "nsucc", 8833 }, + { "nsup", 8837 }, + { "nsupe", 8841 }, + { "nsupseteq", 8841 }, + { "ntgl", 8825 }, + { "ntilde", 241 }, + { "ntlg", 8824 }, + { "ntriangleleft", 8938 }, + { "ntrianglelefteq", 8940 }, + { "ntriangleright", 8939 }, + { "ntrianglerighteq", 8941 }, + { "nu", 957 }, + { "num", 35 }, + { "numero", 8470 }, + { "numsp", 8199 }, + { "nvDash", 8877 }, + { "nvHarr", 10500 }, + { "nvdash", 8876 }, + { "nvinfin", 10718 }, + { "nvlArr", 10498 }, + { "nvrArr", 10499 }, + { "nwArr", 8662 }, + { "nwarhk", 10531 }, + { "nwarr", 8598 }, + { "nwarrow", 8598 }, + { "nwnear", 10535 }, + { "oS", 9416 }, + { "oacute", 243 }, + { "oast", 8859 }, + { "ocir", 8858 }, + { "ocirc", 244 }, + { "ocy", 1086 }, + { "odash", 8861 }, + { "odblac", 337 }, + { "odiv", 10808 }, + { "odot", 8857 }, + { "odsold", 10684 }, + { "oelig", 339 }, + { "ofcir", 10687 }, + { "ogon", 731 }, + { "ograve", 242 }, + { "ogt", 10689 }, + { "ohbar", 10677 }, + { "ohm", 937 }, + { "oint", 8750 }, + { "olarr", 8634 }, + { "olcir", 10686 }, + { "olcross", 10683 }, + { "oline", 8254 }, + { "olt", 10688 }, + { "omacr", 333 }, + { "omega", 969 }, + { "omicron", 959 }, + { "omid", 10678 }, + { "ominus", 8854 }, + { "opar", 10679 }, + { "operp", 10681 }, + { "oplus", 8853 }, + { "or", 8744 }, + { "orarr", 8635 }, + { "ord", 10845 }, + { "order", 8500 }, + { "orderof", 8500 }, + { "ordf", 170 }, + { "ordm", 186 }, + { "origof", 8886 }, + { "oror", 10838 }, + { "orslope", 10839 }, + { "orv", 10843 }, + { "oscr", 8500 }, + { "oslash", 248 }, + { "osol", 8856 }, + { "otilde", 245 }, + { "otimes", 8855 }, + { "otimesas", 10806 }, + { "ouml", 246 }, + { "ovbar", 9021 }, + { "par", 8741 }, + { "para", 182 }, + { "parallel", 8741 }, + { "parsim", 10995 }, + { "parsl", 11005 }, + { "part", 8706 }, + { "pcy", 1087 }, + { "percnt", 37 }, + { "period", 46 }, + { "permil", 8240 }, + { "perp", 8869 }, + { "pertenk", 8241 }, + { "phi", 966 }, + { "phiv", 981 }, + { "phmmat", 8499 }, + { "phone", 9742 }, + { "pi", 960 }, + { "pitchfork", 8916 }, + { "piv", 982 }, + { "planck", 8463 }, + { "planckh", 8462 }, + { "plankv", 8463 }, + { "plus", 43 }, + { "plusacir", 10787 }, + { "plusb", 8862 }, + { "pluscir", 10786 }, + { "plusdo", 8724 }, + { "plusdu", 10789 }, + { "pluse", 10866 }, + { "plusmn", 177 }, + { "plussim", 10790 }, + { "plustwo", 10791 }, + { "pm", 177 }, + { "pointint", 10773 }, + { "pound", 163 }, + { "pr", 8826 }, + { "prE", 10931 }, + { "prap", 10935 }, + { "prcue", 8828 }, + { "pre", 10927 }, + { "prec", 8826 }, + { "precapprox", 10935 }, + { "preccurlyeq", 8828 }, + { "preceq", 10927 }, + { "precnapprox", 10937 }, + { "precneqq", 10933 }, + { "precnsim", 8936 }, + { "precsim", 8830 }, + { "prime", 8242 }, + { "primes", 8473 }, + { "prnE", 10933 }, + { "prnap", 10937 }, + { "prnsim", 8936 }, + { "prod", 8719 }, + { "profalar", 9006 }, + { "profline", 8978 }, + { "profsurf", 8979 }, + { "prop", 8733 }, + { "propto", 8733 }, + { "prsim", 8830 }, + { "prurel", 8880 }, + { "psi", 968 }, + { "puncsp", 8200 }, + { "qint", 10764 }, + { "qprime", 8279 }, + { "quaternions", 8461 }, + { "quatint", 10774 }, + { "quest", 63 }, + { "questeq", 8799 }, + { "quot", 34 }, + { "rAarr", 8667 }, + { "rArr", 8658 }, + { "rAtail", 10524 }, + { "rBarr", 10511 }, + { "rHar", 10596 }, + { "racute", 341 }, + { "radic", 8730 }, + { "raemptyv", 10675 }, + { "rang", 10217 }, + { "rangd", 10642 }, + { "range", 10661 }, + { "rangle", 10217 }, + { "raquo", 187 }, + { "rarr", 8594 }, + { "rarrap", 10613 }, + { "rarrb", 8677 }, + { "rarrbfs", 10528 }, + { "rarrc", 10547 }, + { "rarrfs", 10526 }, + { "rarrhk", 8618 }, + { "rarrlp", 8620 }, + { "rarrpl", 10565 }, + { "rarrsim", 10612 }, + { "rarrtl", 8611 }, + { "rarrw", 8605 }, + { "ratail", 10522 }, + { "ratio", 8758 }, + { "rationals", 8474 }, + { "rbarr", 10509 }, + { "rbbrk", 10099 }, + { "rbrace", 125 }, + { "rbrack", 93 }, + { "rbrke", 10636 }, + { "rbrksld", 10638 }, + { "rbrkslu", 10640 }, + { "rcaron", 345 }, + { "rcedil", 343 }, + { "rceil", 8969 }, + { "rcub", 125 }, + { "rcy", 1088 }, + { "rdca", 10551 }, + { "rdldhar", 10601 }, + { "rdquo", 8221 }, + { "rdquor", 8221 }, + { "rdsh", 8627 }, + { "real", 8476 }, + { "realine", 8475 }, + { "realpart", 8476 }, + { "reals", 8477 }, + { "rect", 9645 }, + { "reg", 174 }, + { "rfisht", 10621 }, + { "rfloor", 8971 }, + { "rhard", 8641 }, + { "rharu", 8640 }, + { "rharul", 10604 }, + { "rho", 961 }, + { "rhov", 1009 }, + { "rightarrow", 8594 }, + { "rightarrowtail", 8611 }, + { "rightharpoondown", 8641 }, + { "rightharpoonup", 8640 }, + { "rightleftarrows", 8644 }, + { "rightleftharpoons", 8652 }, + { "rightrightarrows", 8649 }, + { "rightsquigarrow", 8605 }, + { "rightthreetimes", 8908 }, + { "ring", 730 }, + { "risingdotseq", 8787 }, + { "rlarr", 8644 }, + { "rlhar", 8652 }, + { "rlm", 8207 }, + { "rmoust", 9137 }, + { "rmoustache", 9137 }, + { "rnmid", 10990 }, + { "roang", 10221 }, + { "roarr", 8702 }, + { "robrk", 10215 }, + { "ropar", 10630 }, + { "roplus", 10798 }, + { "rotimes", 10805 }, + { "rpar", 41 }, + { "rpargt", 10644 }, + { "rppolint", 10770 }, + { "rrarr", 8649 }, + { "rsaquo", 8250 }, + { "rsh", 8625 }, + { "rsqb", 93 }, + { "rsquo", 8217 }, + { "rsquor", 8217 }, + { "rthree", 8908 }, + { "rtimes", 8906 }, + { "rtri", 9657 }, + { "rtrie", 8885 }, + { "rtrif", 9656 }, + { "rtriltri", 10702 }, + { "ruluhar", 10600 }, + { "rx", 8478 }, + { "sacute", 347 }, + { "sbquo", 8218 }, + { "sc", 8827 }, + { "scE", 10932 }, + { "scap", 10936 }, + { "scaron", 353 }, + { "sccue", 8829 }, + { "sce", 10928 }, + { "scedil", 351 }, + { "scirc", 349 }, + { "scnE", 10934 }, + { "scnap", 10938 }, + { "scnsim", 8937 }, + { "scpolint", 10771 }, + { "scsim", 8831 }, + { "scy", 1089 }, + { "sdot", 8901 }, + { "sdotb", 8865 }, + { "sdote", 10854 }, + { "seArr", 8664 }, + { "searhk", 10533 }, + { "searr", 8600 }, + { "searrow", 8600 }, + { "sect", 167 }, + { "semi", 59 }, + { "seswar", 10537 }, + { "setminus", 8726 }, + { "setmn", 8726 }, + { "sext", 10038 }, + { "sfrown", 8994 }, + { "sharp", 9839 }, + { "shchcy", 1097 }, + { "shcy", 1096 }, + { "shortmid", 8739 }, + { "shortparallel", 8741 }, + { "shy", 173 }, + { "sigma", 963 }, + { "sigmaf", 962 }, + { "sigmav", 962 }, + { "sim", 8764 }, + { "simdot", 10858 }, + { "sime", 8771 }, + { "simeq", 8771 }, + { "simg", 10910 }, + { "simgE", 10912 }, + { "siml", 10909 }, + { "simlE", 10911 }, + { "simne", 8774 }, + { "simplus", 10788 }, + { "simrarr", 10610 }, + { "slarr", 8592 }, + { "smallsetminus", 8726 }, + { "smashp", 10803 }, + { "smeparsl", 10724 }, + { "smid", 8739 }, + { "smile", 8995 }, + { "smt", 10922 }, + { "smte", 10924 }, + { "softcy", 1100 }, + { "sol", 47 }, + { "solb", 10692 }, + { "solbar", 9023 }, + { "spades", 9824 }, + { "spadesuit", 9824 }, + { "spar", 8741 }, + { "sqcap", 8851 }, + { "sqcup", 8852 }, + { "sqsub", 8847 }, + { "sqsube", 8849 }, + { "sqsubset", 8847 }, + { "sqsubseteq", 8849 }, + { "sqsup", 8848 }, + { "sqsupe", 8850 }, + { "sqsupset", 8848 }, + { "sqsupseteq", 8850 }, + { "squ", 9633 }, + { "square", 9633 }, + { "squarf", 9642 }, + { "squf", 9642 }, + { "srarr", 8594 }, + { "ssetmn", 8726 }, + { "ssmile", 8995 }, + { "sstarf", 8902 }, + { "star", 9734 }, + { "starf", 9733 }, + { "straightepsilon", 1013 }, + { "straightphi", 981 }, + { "strns", 175 }, + { "sub", 8834 }, + { "subE", 10949 }, + { "subdot", 10941 }, + { "sube", 8838 }, + { "subedot", 10947 }, + { "submult", 10945 }, + { "subnE", 10955 }, + { "subne", 8842 }, + { "subplus", 10943 }, + { "subrarr", 10617 }, + { "subset", 8834 }, + { "subseteq", 8838 }, + { "subseteqq", 10949 }, + { "subsetneq", 8842 }, + { "subsetneqq", 10955 }, + { "subsim", 10951 }, + { "subsub", 10965 }, + { "subsup", 10963 }, + { "succ", 8827 }, + { "succapprox", 10936 }, + { "succcurlyeq", 8829 }, + { "succeq", 10928 }, + { "succnapprox", 10938 }, + { "succneqq", 10934 }, + { "succnsim", 8937 }, + { "succsim", 8831 }, + { "sum", 8721 }, + { "sung", 9834 }, + { "sup1", 185 }, + { "sup2", 178 }, + { "sup3", 179 }, + { "sup", 8835 }, + { "supE", 10950 }, + { "supdot", 10942 }, + { "supdsub", 10968 }, + { "supe", 8839 }, + { "supedot", 10948 }, + { "suphsol", 10185 }, + { "suphsub", 10967 }, + { "suplarr", 10619 }, + { "supmult", 10946 }, + { "supnE", 10956 }, + { "supne", 8843 }, + { "supplus", 10944 }, + { "supset", 8835 }, + { "supseteq", 8839 }, + { "supseteqq", 10950 }, + { "supsetneq", 8843 }, + { "supsetneqq", 10956 }, + { "supsim", 10952 }, + { "supsub", 10964 }, + { "supsup", 10966 }, + { "swArr", 8665 }, + { "swarhk", 10534 }, + { "swarr", 8601 }, + { "swarrow", 8601 }, + { "swnwar", 10538 }, + { "szlig", 223 }, + { "target", 8982 }, + { "tau", 964 }, + { "tbrk", 9140 }, + { "tcaron", 357 }, + { "tcedil", 355 }, + { "tcy", 1090 }, + { "tdot", 8411 }, + { "telrec", 8981 }, + { "there4", 8756 }, + { "therefore", 8756 }, + { "theta", 952 }, + { "thetasym", 977 }, + { "thetav", 977 }, + { "thickapprox", 8776 }, + { "thicksim", 8764 }, + { "thinsp", 8201 }, + { "thkap", 8776 }, + { "thksim", 8764 }, + { "thorn", 254 }, + { "tilde", 732 }, + { "times", 215 }, + { "timesb", 8864 }, + { "timesbar", 10801 }, + { "timesd", 10800 }, + { "tint", 8749 }, + { "toea", 10536 }, + { "top", 8868 }, + { "topbot", 9014 }, + { "topcir", 10993 }, + { "topfork", 10970 }, + { "tosa", 10537 }, + { "tprime", 8244 }, + { "trade", 8482 }, + { "triangle", 9653 }, + { "triangledown", 9663 }, + { "triangleleft", 9667 }, + { "trianglelefteq", 8884 }, + { "triangleq", 8796 }, + { "triangleright", 9657 }, + { "trianglerighteq", 8885 }, + { "tridot", 9708 }, + { "trie", 8796 }, + { "triminus", 10810 }, + { "triplus", 10809 }, + { "trisb", 10701 }, + { "tritime", 10811 }, + { "trpezium", 9186 }, + { "tscy", 1094 }, + { "tshcy", 1115 }, + { "tstrok", 359 }, + { "twixt", 8812 }, + { "twoheadleftarrow", 8606 }, + { "twoheadrightarrow", 8608 }, + { "uArr", 8657 }, + { "uHar", 10595 }, + { "uacute", 250 }, + { "uarr", 8593 }, + { "ubrcy", 1118 }, + { "ubreve", 365 }, + { "ucirc", 251 }, + { "ucy", 1091 }, + { "udarr", 8645 }, + { "udblac", 369 }, + { "udhar", 10606 }, + { "ufisht", 10622 }, + { "ugrave", 249 }, + { "uharl", 8639 }, + { "uharr", 8638 }, + { "uhblk", 9600 }, + { "ulcorn", 8988 }, + { "ulcorner", 8988 }, + { "ulcrop", 8975 }, + { "ultri", 9720 }, + { "umacr", 363 }, + { "uml", 168 }, + { "uogon", 371 }, + { "uparrow", 8593 }, + { "updownarrow", 8597 }, + { "upharpoonleft", 8639 }, + { "upharpoonright", 8638 }, + { "uplus", 8846 }, + { "upsi", 965 }, + { "upsih", 978 }, + { "upsilon", 965 }, + { "upuparrows", 8648 }, + { "urcorn", 8989 }, + { "urcorner", 8989 }, + { "urcrop", 8974 }, + { "uring", 367 }, + { "urtri", 9721 }, + { "utdot", 8944 }, + { "utilde", 361 }, + { "utri", 9653 }, + { "utrif", 9652 }, + { "uuarr", 8648 }, + { "uuml", 252 }, + { "uwangle", 10663 }, + { "vArr", 8661 }, + { "vBar", 10984 }, + { "vBarv", 10985 }, + { "vDash", 8872 }, + { "vangrt", 10652 }, + { "varepsilon", 1013 }, + { "varkappa", 1008 }, + { "varnothing", 8709 }, + { "varphi", 981 }, + { "varpi", 982 }, + { "varpropto", 8733 }, + { "varr", 8597 }, + { "varrho", 1009 }, + { "varsigma", 962 }, + { "vartheta", 977 }, + { "vartriangleleft", 8882 }, + { "vartriangleright", 8883 }, + { "vcy", 1074 }, + { "vdash", 8866 }, + { "vee", 8744 }, + { "veebar", 8891 }, + { "veeeq", 8794 }, + { "vellip", 8942 }, + { "verbar", 124 }, + { "vert", 124 }, + { "vltri", 8882 }, + { "vprop", 8733 }, + { "vrtri", 8883 }, + { "vzigzag", 10650 }, + { "wcirc", 373 }, + { "wedbar", 10847 }, + { "wedge", 8743 }, + { "wedgeq", 8793 }, + { "weierp", 8472 }, + { "wp", 8472 }, + { "wr", 8768 }, + { "wreath", 8768 }, + { "xcap", 8898 }, + { "xcirc", 9711 }, + { "xcup", 8899 }, + { "xdtri", 9661 }, + { "xhArr", 10234 }, + { "xharr", 10231 }, + { "xi", 958 }, + { "xlArr", 10232 }, + { "xlarr", 10229 }, + { "xmap", 10236 }, + { "xnis", 8955 }, + { "xodot", 10752 }, + { "xoplus", 10753 }, + { "xotime", 10754 }, + { "xrArr", 10233 }, + { "xrarr", 10230 }, + { "xsqcup", 10758 }, + { "xuplus", 10756 }, + { "xutri", 9651 }, + { "xvee", 8897 }, + { "xwedge", 8896 }, + { "yacute", 253 }, + { "yacy", 1103 }, + { "ycirc", 375 }, + { "ycy", 1099 }, + { "yen", 165 }, + { "yicy", 1111 }, + { "yucy", 1102 }, + { "yuml", 255 }, + { "zacute", 378 }, + { "zcaron", 382 }, + { "zcy", 1079 }, + { "zdot", 380 }, + { "zeetrf", 8488 }, + { "zeta", 950 }, + { "zhcy", 1078 }, + { "zigrarr", 8669 }, + { "zwj", 8205 }, + { "zwnj", 8204 }, +}); diff --git a/Plugins/UEWingman/Source/UEWingman/Private/WingTokenizer.cpp b/Plugins/UEWingman/Source/UEWingman/Private/WingTokenizer.cpp new file mode 100644 index 00000000..3384e3c2 --- /dev/null +++ b/Plugins/UEWingman/Source/UEWingman/Private/WingTokenizer.cpp @@ -0,0 +1,302 @@ +#include "WingTokenizer.h" +#include "WingServer.h" + + +void WingCharacterClasses::Assign(Cat Category, FStringView String) +{ + int32 OldSize = CharCategory.Num(); + int32 NewSize = 0; + for (TCHAR Ch : String) if (Ch >= NewSize) NewSize = Ch + 1; + if (NewSize > OldSize) + { + CharCategory.SetNum(NewSize); + for (int i = OldSize; i < NewSize; i++) CharCategory[i] = Cat::Other; + } + for (TCHAR Ch : String) CharCategory[Ch] = Category; +} + +WingCharacterClasses::WingCharacterClasses() +{ + // This is the set of printable, visible, non-whitespace characters that + // appear in most ubuntu default fonts. I initially map all of these as + // 'Identifier' characters, but later I swap some of them over to punctuation. + Assign(Cat::Identifier, TEXT( + "!#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefgh" + "ijklmnopqrstuvwxyz{|}~¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐ" + "ÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖ" + "ėĘęĚěĜĝĞğĠġĢģĤĥĦħĨĩĪīĬĭĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀŁłŃńŅņŇňʼnŊŋŌōŎŏŐőŒœŔŕŖŗŘřŚśŜ" + "ŝŞşŠšŢţŤťŦŧŨũŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽžſƀƁƂƃƄƅƆƇƈƉƊƋƌƍƎƏƐƑƒƓƔƕƖƗƘƙƚƛƜƝƞƟƠơƢ" + "ƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƾƿǀǁǂǃǍǎǏǐǑǒǓǔǕǖǗǘǙǚǛǜǝǞǟǠǡǢǣǦǧǨǩǪǫǬǭǮǯǰǴǵǸǹǼ" + "ǽǾǿȀȁȂȃȄȅȆȇȈȉȊȋȌȍȎȏȐȑȒȓȔȕȖȗȘșȚțȜȝȞȟȤȥȦȧȨȩȪȫȬȭȮȯȰȱȲȳȷʒʼˆˇˉ˘˙˚˛˜˝΄΅ΆΈΉΊ" + "ΌΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώЀЁЂЃЄ" + "ЅІЇЈЉЊЋЌЍЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъ" + "ыьэюяѐёђѓєѕіїјљњћќѝўџѲҐґҒғҔҕҖҗҘҙҚқҢңҤҥҪҫҬҭҮүҰұҲҳҺһӀӁӂӃӄӇӈӋӌӏӐӑӒӓӔӕӖӗӘә" + "ӚӛӜӝӞӟӠӡӢӣӤӥӦӧӨөӪӫӬӭӮӯӰӱӲӳӴӵӶӷӸӹẀẁẂẃẄẅỲỳ–—―‘’‚“”„†‡•…‰‹›⁰⁴⁵⁶⁷⁸⁹₀₁₂₃₄₅₆" + "₇₈₉€₹№™Ω⅓⅔⅕⅖⅗⅘⅙⅚⅛⅜⅝⅞∂∆∏∑−∕∙√∞∫≈≠≤≥◊fifl\"\\" + )); + + // All the punctuation marks that we do anything interesting with. + Assign(Cat::Punctuation, PunctuationString); + + // Control characters. + for (int i = 0; i < 32; i++) CharCategory[i] = Cat::Control; + CharCategory[0x7F] = Cat::Control; +} + +WingCharacterClasses WingCharacterClasses::TheSet; + +void WingTokenizer::Add(TCHAR Type, FString InternalID) +{ + Token T; + T.Type = Type; + T.InternalID = MoveTemp(InternalID); + Tokens.Add(T); +} + +TCHAR WingTokenizer::FromHex(FStringView Digits, FString &Error) +{ + if (Digits.Len() < 1) { Error = "Empty hex escape sequence"; return 0; } + int32 Value = 0; + for (TCHAR Ch : Digits) + { + if (Ch >= '0' && Ch <= '9') Value = Value * 16 + (Ch - '0'); + else if (Ch >= 'a' && Ch <= 'f') Value = Value * 16 + (Ch - 'a' + 10); + else if (Ch >= 'A' && Ch <= 'F') Value = Value * 16 + (Ch - 'A' + 10); + else { Error = "Invalid hex digit in escape sequence"; return 0; } + if (Value > 0xFFFF) { Error = "Escape sequence value out of range"; return 0; } + } + return (TCHAR)Value; +} + +TCHAR WingTokenizer::FromDecimal(FStringView Digits, FString &Error) +{ + if (Digits.Len() < 1) { Error = "Empty decimal escape sequence"; return 0; } + int32 Value = 0; + for (TCHAR Ch : Digits) + { + if (Ch >= '0' && Ch <= '9') Value = Value * 10 + (Ch - '0'); + else { Error = "Invalid decimal digit in escape sequence"; return 0; } + if (Value > 0xFFFF) { Error = "Escape sequence value out of range"; return 0; } + } + return (TCHAR)Value; +} + +TCHAR WingTokenizer::TokenizeEscapeSequence(FStringView &Rest, FString &Error) +{ + if (!Error.IsEmpty()) return 0; + // Search for the semicolon. + int32 SemiPos; + if (!Rest.FindChar(';', SemiPos)) + { + Error = "Ampersand escape sequence doesn't end in semicolon"; + return 0; + } + if (SemiPos < 3) + { + Error = "Ampersand escape sequence too short"; + return 0; + } + TCHAR Result = 0; + if (Rest[1] == '#') + { + if ((Rest[2] == 'x') || (Rest[2] == 'X')) + Result = FromHex(Rest.Mid(3, SemiPos - 3), Error); + else + Result = FromDecimal(Rest.Mid(2, SemiPos - 2), Error); + } + else + { + FString Name(Rest.Mid(1, SemiPos - 1)); + Result = WingEntityList::GetChar(Name); + if (Result == 0) + { + Error = FString::Printf(TEXT("Unknown HTML entity: &%s;"), *Name); + return 0; + } + } + Rest = Rest.RightChop(SemiPos + 1); + return Result; +} + +FString WingTokenizer::TokenizeIdentifier(FStringView &Rest, FString &Error) +{ + if (!Error.IsEmpty()) return FString(); + TStringBuilder<512> Decoded; + while (!Rest.IsEmpty() && Error.IsEmpty()) + { + TCHAR Ch = Rest[0]; + if (Ch == ' ') break; + if (Ch == '.') + { + Decoded.AppendChar(' '); + Rest = Rest.RightChop(1); + continue; + } + if (Ch == '&') + { + Decoded.AppendChar(TokenizeEscapeSequence(Rest, Error)); + continue; + } + Cat Category = WingCharacterClasses::GetCat(Ch); + if ((Category == Cat::Identifier) || (Category == Cat::Other)) + { + // We accept other characters in case the LLM sends unicode + // that isn't on the whitelist. This is intentional. + Decoded.AppendChar(Ch); + Rest = Rest.RightChop(1); + } + else break; + } + if (!Error.IsEmpty()) return FString(); + // We deliberately do not produce an error message for empty identifiers, + // because we can't generate a good message here. We leave it to others + // to deal with that case. + return Decoded.ToString(); +} + +WingTokenizer::WingTokenizer(const FString& Input) +{ + FStringView Rest(Input); + while (!Rest.IsEmpty() && Error.IsEmpty()) + { + TCHAR Ch = Rest[0]; + if ((Ch == ' ') || (Ch == '\t')) + { + Rest = Rest.RightChop(1); + continue; + } + if (Ch == '=') + { + Add(RestOfLine, FString(Rest.RightChop(1))); + break; + } + if ((Ch == '.') || (Ch == '&')) + { + Add(Identifier, TokenizeIdentifier(Rest, Error)); + continue; + } + Cat Category = WingCharacterClasses::GetCat(Ch); + if (Category == Cat::Punctuation) + { + Add(Ch, FString()); + Rest = Rest.RightChop(1); + continue; + } + if (Category == Cat::Control) + { + Error = "Control characters in input, not allowed"; + break; + } + Add(Identifier, TokenizeIdentifier(Rest, Error)); + continue; + } + if (!Error.IsEmpty()) Tokens.Empty(); +} + +void WingTokenizer::PrintEverything() const +{ + if (!Error.IsEmpty()) + { + UWingServer::Printf(TEXT("Error: %s\n"), *Error); + } + for (const Token& T : Tokens) + { + TStringBuilder<512> ExtraStr; + for (TCHAR Ch : T.InternalID) + { + if (Ch >= 0x20 && Ch <= 0x7E) + { + ExtraStr.AppendChar(Ch); + ExtraStr.AppendChar(' '); + } + else + { + ExtraStr.Appendf(TEXT("%04X "), (int32)Ch); + } + } + if (T.Type >= 0x20 && T.Type <= 0x7E) + UWingServer::Printf(TEXT("Token '%c': %s\n"), T.Type, *ExtraStr); + else + UWingServer::Printf(TEXT("Token %04X: %s\n"), (int32)T.Type, *ExtraStr); + } +} + +FString WingTokenizer::ExternalizeID(const FString &S) +{ + TStringBuilder<512> Result; + for (TCHAR Ch : S) + { + if (Ch == ' ') Result.AppendChar('.'); + else if (WingCharacterClasses::GetCat(Ch) == Cat::Identifier) Result.AppendChar(Ch); + else + { + Result.AppendChar('&'); + FStringView Name = WingEntityList::GetName(Ch); + if (Name.IsEmpty()) + { + Result.AppendChar('#'); + Result.Appendf(TEXT("%d"), (int32)Ch); + } + else + { + Result.Append(Name); + } + Result.AppendChar(';'); + } + } + return Result.ToString(); +} + +FString WingTokenizer::TryInternalizeID(const FString &S, FString &Error) +{ + FStringView Input(S); + Error.Empty(); + FString Result = TokenizeIdentifier(Input, Error); + // If there's already an error, annotate with context + if (!Error.IsEmpty()) + { + Error = FString::Printf(TEXT("ERROR parsing id %s: %s"), *S, *Error); + return FString(); + } + // If the identifier tokenizer stops before consuming the whole + // input, then we need to generate an error message. We do our best + // to generate the most informative error possible. + if (!Input.IsEmpty()) + { + Cat Category = WingCharacterClasses::GetCat(Input[0]); + if (Input[0] == ' ') + { + Error = FString::Printf(TEXT("ERROR parsing id %s: in ids, spaces must be escaped"), *S); + } + else if (Category == Cat::Punctuation) + { + Error = FString::Printf(TEXT("ERROR parsing id %s: in ids, these marks must be escaped: %s"), + *S, WingCharacterClasses::PunctuationString); + } + else if (Category == Cat::Control) + { + Error = FString::Printf(TEXT("ERROR parsing id %s: in ids, control characters must be escaped"), *S); + } + else Error = FString::Printf(TEXT("ERROR parsing id %s: unparseable character in id"), *S); + return FString(); + } + // One last error case: empty input + if (Result.IsEmpty()) + { + Error = TEXT("ERROR: Empty identifiers are not allowed"); + return FString(); + } + return Result; +} + +FString WingTokenizer::CheckInternalizeID(const FString &S) +{ + FString Error; + FString Result = TryInternalizeID(S, Error); + if (!Error.IsEmpty()) + { + UWingServer::Printf(TEXT("%s\n"), *Error); + UWingServer::SuggestManual(WingManual::Section::IdentifierSanitization); + } + return Result; +} diff --git a/Plugins/UEWingman/Source/UEWingman/Private/WingUtils.cpp b/Plugins/UEWingman/Source/UEWingman/Private/WingUtils.cpp index 6ed6e6bf..47d5b462 100644 --- a/Plugins/UEWingman/Source/UEWingman/Private/WingUtils.cpp +++ b/Plugins/UEWingman/Source/UEWingman/Private/WingUtils.cpp @@ -65,6 +65,9 @@ FString WingUtils::SanitizeName(const FString &InName) if (c == ' ') c=L'·'; if (c == '<') c=L'◁'; if (c == '>') c=L'▷'; + if (c == '(') c=L'❨'; + if (c == ')') c=L'❩'; + if (c == '=') c=L'≡'; if (c == ',') c=L'▾'; Name[Dst++] = c; } @@ -84,6 +87,9 @@ FString WingUtils::UnsanitizeName(const FString &InName) if (c == L'·') c=' '; if (c == L'◁') c='<'; if (c == L'▷') c='>'; + if (c == L'❨') c='('; + if (c == L'❩') c=')'; + if (c == L'≡') c='='; if (c == L'▾') c=','; Name[Dst++] = c; } diff --git a/Plugins/UEWingman/Source/UEWingman/Public/WingTokenizer.h b/Plugins/UEWingman/Source/UEWingman/Public/WingTokenizer.h new file mode 100644 index 00000000..f6904368 --- /dev/null +++ b/Plugins/UEWingman/Source/UEWingman/Public/WingTokenizer.h @@ -0,0 +1,169 @@ +#pragma once + +#include "CoreMinimal.h" + +// ----------------------------------------------------------------- +// +// WingCharacterClasses +// +// We recognize these disjoint classes of characters: +// +// Punctuation. A small hardwired list of punctuation marks +// that we want to escape, specifically \"'(),.:;<=>& +// These particular punctuation marks were chosen because they +// either need to be escaped for json's sake, or for our +// parser's sake. Any other punctuation is just classified as +// an identifier character. +// +// Identifier characters. A whitelist of about a thousand +// ascii and unicode characters that can be used directly in +// identifiers without any kind of escaping. To get on the list, +// you need the following: to not be an ascii punctuation mark, +// to be printable and visible and not whitespace, and to be +// easily rendered by all of the default ubuntu fonts. +// +// Control Characters. Ascii control characters, including DEL. +// +// Other Characters. Anything else. +// +// ----------------------------------------------------------------- + +struct WingCharacterClasses +{ + enum class Cat : uint8 + { + Identifier, + Punctuation, + Control, + Other, + }; + + static Cat GetCat(TCHAR Ch) + { + int32 Cp = (int32)Ch; + if (Cp < 0 || Cp >= TheSet.CharCategory.Num()) return Cat::Other; + return TheSet.CharCategory[Cp]; + } + + static constexpr const TCHAR *PunctuationString = TEXT("\\\"'(),.:;<=>&"); + +private: + TArray CharCategory; + WingCharacterClasses(); + void Assign(Cat Category, FStringView String); + static WingCharacterClasses TheSet; +}; + +// ----------------------------------------------------------------- +// +// The HTML Entity List. +// +// When escaping identifiers, we use HTML escapes like < +// These work well because they have no conflict with the json +// parser (MCP protocol is json), they are also easy to deal +// with in the tokenizer, and the LLM is already familiar with +// that kind of escaping. The names stored in this table do not +// include the ampersand or the semicolon. +// +// This class doesn't handle hex character codes, this is just +// a lookup table from character to name and back. +// +// ----------------------------------------------------------------- + +struct WingEntityList +{ + static TCHAR GetChar(const FString &Name) + { + TCHAR *Result = TheList.NameToChar.Find(Name); + if (Result == nullptr) return 0; + return *Result; + } + + static FStringView GetName(TCHAR Ch) + { + FString *Result = TheList.CharToName.Find(Ch); + if (Result == nullptr) return FStringView(); + return *Result; + } + +private: + TMap CharToName; + TMap NameToChar; + struct Raw { const char *Name; TCHAR Codepoint; }; + WingEntityList(std::initializer_list Data); + static WingEntityList TheList; +}; + + +struct WingTokenizer +{ + using Cat = WingCharacterClasses::Cat; + const TCHAR Identifier = 'i'; + const TCHAR RestOfLine = 'r'; + + // A token has a token type which can be Identifier, + // RestOfLine, or a single-character punctuation mark. + // The InternalID field contains the result of converting + // the token from an external ID to an internal ID. + struct Token + { + TCHAR Type; + FString InternalID; + }; + + // The string that we tokenized. + FString Input; + + // If the tokenization failed, an error message. + FString Error; + + // The result, an array of tokens. + TArray Tokens; + + // Tokenize a line of input. The tokens are stored in + // the token array. If there's an error, the error is + // stored in the error field, and the token array is + // cleared. If the tokens contain identifiers, + WingTokenizer(const FString& Input); + + // Convert an internal ID into an external ID. + // Spaces are converted to periods. Any other + // non-identifier character is HTML escaped. + static FString ExternalizeID(const FString &S); + + // Convert an external ID into an internal ID. + // Periods are converted back to spaces. HTML escapes + // are converted back to raw characters. This could + // fail, for example, if the external name contains an + // invalid HTML escape. If it does, returns empty + // string and sets the error message. + static FString TryInternalizeID(const FString &S, FString &Error); + + // Calls TryInternalizeName. If this generates an + // error, prints the error message, suggests the manual + // entry on identifier sanitization, and returns empty + // string. + static FString CheckInternalizeID(const FString &S); + + // Print all tokens to the log for debugging. + void PrintEverything() const; + +private: + // Add a token to the token array. + void Add(TCHAR Type, FString InternalID); + + // Convert numbers to TCHAR. If there's an error, set the error + // message and return zero. + static TCHAR FromHex(FStringView Digits, FString &Error); + static TCHAR FromDecimal(FStringView Digits, FString &Error); + + // Tokenize an escape sequence. Attempts to consume a valid escape + // sequence from rest, and return the character indicated. On error, + // sets the error message and returns zero. + static TCHAR TokenizeEscapeSequence(FStringView &Rest, FString &Error); + + // Tokenize an identifier. Attempts to consume a valid identifier + // from rest, and return the identifier. On error, sets the error + // message and returns empty string. + static FString TokenizeIdentifier(FStringView &Rest, FString &Error); +}; diff --git a/entities.json b/entities.json new file mode 100644 index 00000000..557170b4 --- /dev/null +++ b/entities.json @@ -0,0 +1,2233 @@ +{ + "Æ": { "codepoints": [198], "characters": "\u00C6" }, + "Æ": { "codepoints": [198], "characters": "\u00C6" }, + "&": { "codepoints": [38], "characters": "\u0026" }, + "&": { "codepoints": [38], "characters": "\u0026" }, + "Á": { "codepoints": [193], "characters": "\u00C1" }, + "Á": { "codepoints": [193], "characters": "\u00C1" }, + "Ă": { "codepoints": [258], "characters": "\u0102" }, + "Â": { "codepoints": [194], "characters": "\u00C2" }, + "Â": { "codepoints": [194], "characters": "\u00C2" }, + "А": { "codepoints": [1040], "characters": "\u0410" }, + "𝔄": { "codepoints": [120068], "characters": "\uD835\uDD04" }, + "À": { "codepoints": [192], "characters": "\u00C0" }, + "À": { "codepoints": [192], "characters": "\u00C0" }, + "Α": { "codepoints": [913], "characters": "\u0391" }, + "Ā": { "codepoints": [256], "characters": "\u0100" }, + "⩓": { "codepoints": [10835], "characters": "\u2A53" }, + "Ą": { "codepoints": [260], "characters": "\u0104" }, + "𝔸": { "codepoints": [120120], "characters": "\uD835\uDD38" }, + "⁡": { "codepoints": [8289], "characters": "\u2061" }, + "Å": { "codepoints": [197], "characters": "\u00C5" }, + "Å": { "codepoints": [197], "characters": "\u00C5" }, + "𝒜": { "codepoints": [119964], "characters": "\uD835\uDC9C" }, + "≔": { "codepoints": [8788], "characters": "\u2254" }, + "Ã": { "codepoints": [195], "characters": "\u00C3" }, + "Ã": { "codepoints": [195], "characters": "\u00C3" }, + "Ä": { "codepoints": [196], "characters": "\u00C4" }, + "Ä": { "codepoints": [196], "characters": "\u00C4" }, + "∖": { "codepoints": [8726], "characters": "\u2216" }, + "⫧": { "codepoints": [10983], "characters": "\u2AE7" }, + "⌆": { "codepoints": [8966], "characters": "\u2306" }, + "Б": { "codepoints": [1041], "characters": "\u0411" }, + "∵": { "codepoints": [8757], "characters": "\u2235" }, + "ℬ": { "codepoints": [8492], "characters": "\u212C" }, + "Β": { "codepoints": [914], "characters": "\u0392" }, + "𝔅": { "codepoints": [120069], "characters": "\uD835\uDD05" }, + "𝔹": { "codepoints": [120121], "characters": "\uD835\uDD39" }, + "˘": { "codepoints": [728], "characters": "\u02D8" }, + "ℬ": { "codepoints": [8492], "characters": "\u212C" }, + "≎": { "codepoints": [8782], "characters": "\u224E" }, + "Ч": { "codepoints": [1063], "characters": "\u0427" }, + "©": { "codepoints": [169], "characters": "\u00A9" }, + "©": { "codepoints": [169], "characters": "\u00A9" }, + "Ć": { "codepoints": [262], "characters": "\u0106" }, + "⋒": { "codepoints": [8914], "characters": "\u22D2" }, + "ⅅ": { "codepoints": [8517], "characters": "\u2145" }, + "ℭ": { "codepoints": [8493], "characters": "\u212D" }, + "Č": { "codepoints": [268], "characters": "\u010C" }, + "Ç": { "codepoints": [199], "characters": "\u00C7" }, + "Ç": { "codepoints": [199], "characters": "\u00C7" }, + "Ĉ": { "codepoints": [264], "characters": "\u0108" }, + "∰": { "codepoints": [8752], "characters": "\u2230" }, + "Ċ": { "codepoints": [266], "characters": "\u010A" }, + "¸": { "codepoints": [184], "characters": "\u00B8" }, + "·": { "codepoints": [183], "characters": "\u00B7" }, + "ℭ": { "codepoints": [8493], "characters": "\u212D" }, + "Χ": { "codepoints": [935], "characters": "\u03A7" }, + "⊙": { "codepoints": [8857], "characters": "\u2299" }, + "⊖": { "codepoints": [8854], "characters": "\u2296" }, + "⊕": { "codepoints": [8853], "characters": "\u2295" }, + "⊗": { "codepoints": [8855], "characters": "\u2297" }, + "∲": { "codepoints": [8754], "characters": "\u2232" }, + "”": { "codepoints": [8221], "characters": "\u201D" }, + "’": { "codepoints": [8217], "characters": "\u2019" }, + "∷": { "codepoints": [8759], "characters": "\u2237" }, + "⩴": { "codepoints": [10868], "characters": "\u2A74" }, + "≡": { "codepoints": [8801], "characters": "\u2261" }, + "∯": { "codepoints": [8751], "characters": "\u222F" }, + "∮": { "codepoints": [8750], "characters": "\u222E" }, + "ℂ": { "codepoints": [8450], "characters": "\u2102" }, + "∐": { "codepoints": [8720], "characters": "\u2210" }, + "∳": { "codepoints": [8755], "characters": "\u2233" }, + "⨯": { "codepoints": [10799], "characters": "\u2A2F" }, + "𝒞": { "codepoints": [119966], "characters": "\uD835\uDC9E" }, + "⋓": { "codepoints": [8915], "characters": "\u22D3" }, + "≍": { "codepoints": [8781], "characters": "\u224D" }, + "ⅅ": { "codepoints": [8517], "characters": "\u2145" }, + "⤑": { "codepoints": [10513], "characters": "\u2911" }, + "Ђ": { "codepoints": [1026], "characters": "\u0402" }, + "Ѕ": { "codepoints": [1029], "characters": "\u0405" }, + "Џ": { "codepoints": [1039], "characters": "\u040F" }, + "‡": { "codepoints": [8225], "characters": "\u2021" }, + "↡": { "codepoints": [8609], "characters": "\u21A1" }, + "⫤": { "codepoints": [10980], "characters": "\u2AE4" }, + "Ď": { "codepoints": [270], "characters": "\u010E" }, + "Д": { "codepoints": [1044], "characters": "\u0414" }, + "∇": { "codepoints": [8711], "characters": "\u2207" }, + "Δ": { "codepoints": [916], "characters": "\u0394" }, + "𝔇": { "codepoints": [120071], "characters": "\uD835\uDD07" }, + "´": { "codepoints": [180], "characters": "\u00B4" }, + "˙": { "codepoints": [729], "characters": "\u02D9" }, + "˝": { "codepoints": [733], "characters": "\u02DD" }, + "`": { "codepoints": [96], "characters": "\u0060" }, + "˜": { "codepoints": [732], "characters": "\u02DC" }, + "⋄": { "codepoints": [8900], "characters": "\u22C4" }, + "ⅆ": { "codepoints": [8518], "characters": "\u2146" }, + "𝔻": { "codepoints": [120123], "characters": "\uD835\uDD3B" }, + "¨": { "codepoints": [168], "characters": "\u00A8" }, + "⃜": { "codepoints": [8412], "characters": "\u20DC" }, + "≐": { "codepoints": [8784], "characters": "\u2250" }, + "∯": { "codepoints": [8751], "characters": "\u222F" }, + "¨": { "codepoints": [168], "characters": "\u00A8" }, + "⇓": { "codepoints": [8659], "characters": "\u21D3" }, + "⇐": { "codepoints": [8656], "characters": "\u21D0" }, + "⇔": { "codepoints": [8660], "characters": "\u21D4" }, + "⫤": { "codepoints": [10980], "characters": "\u2AE4" }, + "⟸": { "codepoints": [10232], "characters": "\u27F8" }, + "⟺": { "codepoints": [10234], "characters": "\u27FA" }, + "⟹": { "codepoints": [10233], "characters": "\u27F9" }, + "⇒": { "codepoints": [8658], "characters": "\u21D2" }, + "⊨": { "codepoints": [8872], "characters": "\u22A8" }, + "⇑": { "codepoints": [8657], "characters": "\u21D1" }, + "⇕": { "codepoints": [8661], "characters": "\u21D5" }, + "∥": { "codepoints": [8741], "characters": "\u2225" }, + "↓": { "codepoints": [8595], "characters": "\u2193" }, + "⤓": { "codepoints": [10515], "characters": "\u2913" }, + "⇵": { "codepoints": [8693], "characters": "\u21F5" }, + "̑": { "codepoints": [785], "characters": "\u0311" }, + "⥐": { "codepoints": [10576], "characters": "\u2950" }, + "⥞": { "codepoints": [10590], "characters": "\u295E" }, + "↽": { "codepoints": [8637], "characters": "\u21BD" }, + "⥖": { "codepoints": [10582], "characters": "\u2956" }, + "⥟": { "codepoints": [10591], "characters": "\u295F" }, + "⇁": { "codepoints": [8641], "characters": "\u21C1" }, + "⥗": { "codepoints": [10583], "characters": "\u2957" }, + "⊤": { "codepoints": [8868], "characters": "\u22A4" }, + "↧": { "codepoints": [8615], "characters": "\u21A7" }, + "⇓": { "codepoints": [8659], "characters": "\u21D3" }, + "𝒟": { "codepoints": [119967], "characters": "\uD835\uDC9F" }, + "Đ": { "codepoints": [272], "characters": "\u0110" }, + "Ŋ": { "codepoints": [330], "characters": "\u014A" }, + "Ð": { "codepoints": [208], "characters": "\u00D0" }, + "Ð": { "codepoints": [208], "characters": "\u00D0" }, + "É": { "codepoints": [201], "characters": "\u00C9" }, + "É": { "codepoints": [201], "characters": "\u00C9" }, + "Ě": { "codepoints": [282], "characters": "\u011A" }, + "Ê": { "codepoints": [202], "characters": "\u00CA" }, + "Ê": { "codepoints": [202], "characters": "\u00CA" }, + "Э": { "codepoints": [1069], "characters": "\u042D" }, + "Ė": { "codepoints": [278], "characters": "\u0116" }, + "𝔈": { "codepoints": [120072], "characters": "\uD835\uDD08" }, + "È": { "codepoints": [200], "characters": "\u00C8" }, + "È": { "codepoints": [200], "characters": "\u00C8" }, + "∈": { "codepoints": [8712], "characters": "\u2208" }, + "Ē": { "codepoints": [274], "characters": "\u0112" }, + "◻": { "codepoints": [9723], "characters": "\u25FB" }, + "▫": { "codepoints": [9643], "characters": "\u25AB" }, + "Ę": { "codepoints": [280], "characters": "\u0118" }, + "𝔼": { "codepoints": [120124], "characters": "\uD835\uDD3C" }, + "Ε": { "codepoints": [917], "characters": "\u0395" }, + "⩵": { "codepoints": [10869], "characters": "\u2A75" }, + "≂": { "codepoints": [8770], "characters": "\u2242" }, + "⇌": { "codepoints": [8652], "characters": "\u21CC" }, + "ℰ": { "codepoints": [8496], "characters": "\u2130" }, + "⩳": { "codepoints": [10867], "characters": "\u2A73" }, + "Η": { "codepoints": [919], "characters": "\u0397" }, + "Ë": { "codepoints": [203], "characters": "\u00CB" }, + "Ë": { "codepoints": [203], "characters": "\u00CB" }, + "∃": { "codepoints": [8707], "characters": "\u2203" }, + "ⅇ": { "codepoints": [8519], "characters": "\u2147" }, + "Ф": { "codepoints": [1060], "characters": "\u0424" }, + "𝔉": { "codepoints": [120073], "characters": "\uD835\uDD09" }, + "◼": { "codepoints": [9724], "characters": "\u25FC" }, + "▪": { "codepoints": [9642], "characters": "\u25AA" }, + "𝔽": { "codepoints": [120125], "characters": "\uD835\uDD3D" }, + "∀": { "codepoints": [8704], "characters": "\u2200" }, + "ℱ": { "codepoints": [8497], "characters": "\u2131" }, + "ℱ": { "codepoints": [8497], "characters": "\u2131" }, + "Ѓ": { "codepoints": [1027], "characters": "\u0403" }, + ">": { "codepoints": [62], "characters": "\u003E" }, + ">": { "codepoints": [62], "characters": "\u003E" }, + "Γ": { "codepoints": [915], "characters": "\u0393" }, + "Ϝ": { "codepoints": [988], "characters": "\u03DC" }, + "Ğ": { "codepoints": [286], "characters": "\u011E" }, + "Ģ": { "codepoints": [290], "characters": "\u0122" }, + "Ĝ": { "codepoints": [284], "characters": "\u011C" }, + "Г": { "codepoints": [1043], "characters": "\u0413" }, + "Ġ": { "codepoints": [288], "characters": "\u0120" }, + "𝔊": { "codepoints": [120074], "characters": "\uD835\uDD0A" }, + "⋙": { "codepoints": [8921], "characters": "\u22D9" }, + "𝔾": { "codepoints": [120126], "characters": "\uD835\uDD3E" }, + "≥": { "codepoints": [8805], "characters": "\u2265" }, + "⋛": { "codepoints": [8923], "characters": "\u22DB" }, + "≧": { "codepoints": [8807], "characters": "\u2267" }, + "⪢": { "codepoints": [10914], "characters": "\u2AA2" }, + "≷": { "codepoints": [8823], "characters": "\u2277" }, + "⩾": { "codepoints": [10878], "characters": "\u2A7E" }, + "≳": { "codepoints": [8819], "characters": "\u2273" }, + "𝒢": { "codepoints": [119970], "characters": "\uD835\uDCA2" }, + "≫": { "codepoints": [8811], "characters": "\u226B" }, + "Ъ": { "codepoints": [1066], "characters": "\u042A" }, + "ˇ": { "codepoints": [711], "characters": "\u02C7" }, + "^": { "codepoints": [94], "characters": "\u005E" }, + "Ĥ": { "codepoints": [292], "characters": "\u0124" }, + "ℌ": { "codepoints": [8460], "characters": "\u210C" }, + "ℋ": { "codepoints": [8459], "characters": "\u210B" }, + "ℍ": { "codepoints": [8461], "characters": "\u210D" }, + "─": { "codepoints": [9472], "characters": "\u2500" }, + "ℋ": { "codepoints": [8459], "characters": "\u210B" }, + "Ħ": { "codepoints": [294], "characters": "\u0126" }, + "≎": { "codepoints": [8782], "characters": "\u224E" }, + "≏": { "codepoints": [8783], "characters": "\u224F" }, + "Е": { "codepoints": [1045], "characters": "\u0415" }, + "IJ": { "codepoints": [306], "characters": "\u0132" }, + "Ё": { "codepoints": [1025], "characters": "\u0401" }, + "Í": { "codepoints": [205], "characters": "\u00CD" }, + "Í": { "codepoints": [205], "characters": "\u00CD" }, + "Î": { "codepoints": [206], "characters": "\u00CE" }, + "Î": { "codepoints": [206], "characters": "\u00CE" }, + "И": { "codepoints": [1048], "characters": "\u0418" }, + "İ": { "codepoints": [304], "characters": "\u0130" }, + "ℑ": { "codepoints": [8465], "characters": "\u2111" }, + "Ì": { "codepoints": [204], "characters": "\u00CC" }, + "Ì": { "codepoints": [204], "characters": "\u00CC" }, + "ℑ": { "codepoints": [8465], "characters": "\u2111" }, + "Ī": { "codepoints": [298], "characters": "\u012A" }, + "ⅈ": { "codepoints": [8520], "characters": "\u2148" }, + "⇒": { "codepoints": [8658], "characters": "\u21D2" }, + "∬": { "codepoints": [8748], "characters": "\u222C" }, + "∫": { "codepoints": [8747], "characters": "\u222B" }, + "⋂": { "codepoints": [8898], "characters": "\u22C2" }, + "⁣": { "codepoints": [8291], "characters": "\u2063" }, + "⁢": { "codepoints": [8290], "characters": "\u2062" }, + "Į": { "codepoints": [302], "characters": "\u012E" }, + "𝕀": { "codepoints": [120128], "characters": "\uD835\uDD40" }, + "Ι": { "codepoints": [921], "characters": "\u0399" }, + "ℐ": { "codepoints": [8464], "characters": "\u2110" }, + "Ĩ": { "codepoints": [296], "characters": "\u0128" }, + "І": { "codepoints": [1030], "characters": "\u0406" }, + "Ï": { "codepoints": [207], "characters": "\u00CF" }, + "Ï": { "codepoints": [207], "characters": "\u00CF" }, + "Ĵ": { "codepoints": [308], "characters": "\u0134" }, + "Й": { "codepoints": [1049], "characters": "\u0419" }, + "𝔍": { "codepoints": [120077], "characters": "\uD835\uDD0D" }, + "𝕁": { "codepoints": [120129], "characters": "\uD835\uDD41" }, + "𝒥": { "codepoints": [119973], "characters": "\uD835\uDCA5" }, + "Ј": { "codepoints": [1032], "characters": "\u0408" }, + "Є": { "codepoints": [1028], "characters": "\u0404" }, + "Х": { "codepoints": [1061], "characters": "\u0425" }, + "Ќ": { "codepoints": [1036], "characters": "\u040C" }, + "Κ": { "codepoints": [922], "characters": "\u039A" }, + "Ķ": { "codepoints": [310], "characters": "\u0136" }, + "К": { "codepoints": [1050], "characters": "\u041A" }, + "𝔎": { "codepoints": [120078], "characters": "\uD835\uDD0E" }, + "𝕂": { "codepoints": [120130], "characters": "\uD835\uDD42" }, + "𝒦": { "codepoints": [119974], "characters": "\uD835\uDCA6" }, + "Љ": { "codepoints": [1033], "characters": "\u0409" }, + "<": { "codepoints": [60], "characters": "\u003C" }, + "<": { "codepoints": [60], "characters": "\u003C" }, + "Ĺ": { "codepoints": [313], "characters": "\u0139" }, + "Λ": { "codepoints": [923], "characters": "\u039B" }, + "⟪": { "codepoints": [10218], "characters": "\u27EA" }, + "ℒ": { "codepoints": [8466], "characters": "\u2112" }, + "↞": { "codepoints": [8606], "characters": "\u219E" }, + "Ľ": { "codepoints": [317], "characters": "\u013D" }, + "Ļ": { "codepoints": [315], "characters": "\u013B" }, + "Л": { "codepoints": [1051], "characters": "\u041B" }, + "⟨": { "codepoints": [10216], "characters": "\u27E8" }, + "←": { "codepoints": [8592], "characters": "\u2190" }, + "⇤": { "codepoints": [8676], "characters": "\u21E4" }, + "⇆": { "codepoints": [8646], "characters": "\u21C6" }, + "⌈": { "codepoints": [8968], "characters": "\u2308" }, + "⟦": { "codepoints": [10214], "characters": "\u27E6" }, + "⥡": { "codepoints": [10593], "characters": "\u2961" }, + "⇃": { "codepoints": [8643], "characters": "\u21C3" }, + "⥙": { "codepoints": [10585], "characters": "\u2959" }, + "⌊": { "codepoints": [8970], "characters": "\u230A" }, + "↔": { "codepoints": [8596], "characters": "\u2194" }, + "⥎": { "codepoints": [10574], "characters": "\u294E" }, + "⊣": { "codepoints": [8867], "characters": "\u22A3" }, + "↤": { "codepoints": [8612], "characters": "\u21A4" }, + "⥚": { "codepoints": [10586], "characters": "\u295A" }, + "⊲": { "codepoints": [8882], "characters": "\u22B2" }, + "⧏": { "codepoints": [10703], "characters": "\u29CF" }, + "⊴": { "codepoints": [8884], "characters": "\u22B4" }, + "⥑": { "codepoints": [10577], "characters": "\u2951" }, + "⥠": { "codepoints": [10592], "characters": "\u2960" }, + "↿": { "codepoints": [8639], "characters": "\u21BF" }, + "⥘": { "codepoints": [10584], "characters": "\u2958" }, + "↼": { "codepoints": [8636], "characters": "\u21BC" }, + "⥒": { "codepoints": [10578], "characters": "\u2952" }, + "⇐": { "codepoints": [8656], "characters": "\u21D0" }, + "⇔": { "codepoints": [8660], "characters": "\u21D4" }, + "⋚": { "codepoints": [8922], "characters": "\u22DA" }, + "≦": { "codepoints": [8806], "characters": "\u2266" }, + "≶": { "codepoints": [8822], "characters": "\u2276" }, + "⪡": { "codepoints": [10913], "characters": "\u2AA1" }, + "⩽": { "codepoints": [10877], "characters": "\u2A7D" }, + "≲": { "codepoints": [8818], "characters": "\u2272" }, + "𝔏": { "codepoints": [120079], "characters": "\uD835\uDD0F" }, + "⋘": { "codepoints": [8920], "characters": "\u22D8" }, + "⇚": { "codepoints": [8666], "characters": "\u21DA" }, + "Ŀ": { "codepoints": [319], "characters": "\u013F" }, + "⟵": { "codepoints": [10229], "characters": "\u27F5" }, + "⟷": { "codepoints": [10231], "characters": "\u27F7" }, + "⟶": { "codepoints": [10230], "characters": "\u27F6" }, + "⟸": { "codepoints": [10232], "characters": "\u27F8" }, + "⟺": { "codepoints": [10234], "characters": "\u27FA" }, + "⟹": { "codepoints": [10233], "characters": "\u27F9" }, + "𝕃": { "codepoints": [120131], "characters": "\uD835\uDD43" }, + "↙": { "codepoints": [8601], "characters": "\u2199" }, + "↘": { "codepoints": [8600], "characters": "\u2198" }, + "ℒ": { "codepoints": [8466], "characters": "\u2112" }, + "↰": { "codepoints": [8624], "characters": "\u21B0" }, + "Ł": { "codepoints": [321], "characters": "\u0141" }, + "≪": { "codepoints": [8810], "characters": "\u226A" }, + "⤅": { "codepoints": [10501], "characters": "\u2905" }, + "М": { "codepoints": [1052], "characters": "\u041C" }, + " ": { "codepoints": [8287], "characters": "\u205F" }, + "ℳ": { "codepoints": [8499], "characters": "\u2133" }, + "𝔐": { "codepoints": [120080], "characters": "\uD835\uDD10" }, + "∓": { "codepoints": [8723], "characters": "\u2213" }, + "𝕄": { "codepoints": [120132], "characters": "\uD835\uDD44" }, + "ℳ": { "codepoints": [8499], "characters": "\u2133" }, + "Μ": { "codepoints": [924], "characters": "\u039C" }, + "Њ": { "codepoints": [1034], "characters": "\u040A" }, + "Ń": { "codepoints": [323], "characters": "\u0143" }, + "Ň": { "codepoints": [327], "characters": "\u0147" }, + "Ņ": { "codepoints": [325], "characters": "\u0145" }, + "Н": { "codepoints": [1053], "characters": "\u041D" }, + "​": { "codepoints": [8203], "characters": "\u200B" }, + "​": { "codepoints": [8203], "characters": "\u200B" }, + "​": { "codepoints": [8203], "characters": "\u200B" }, + "​": { "codepoints": [8203], "characters": "\u200B" }, + "≫": { "codepoints": [8811], "characters": "\u226B" }, + "≪": { "codepoints": [8810], "characters": "\u226A" }, + " ": { "codepoints": [10], "characters": "\u000A" }, + "𝔑": { "codepoints": [120081], "characters": "\uD835\uDD11" }, + "⁠": { "codepoints": [8288], "characters": "\u2060" }, + " ": { "codepoints": [160], "characters": "\u00A0" }, + "ℕ": { "codepoints": [8469], "characters": "\u2115" }, + "⫬": { "codepoints": [10988], "characters": "\u2AEC" }, + "≢": { "codepoints": [8802], "characters": "\u2262" }, + "≭": { "codepoints": [8813], "characters": "\u226D" }, + "∦": { "codepoints": [8742], "characters": "\u2226" }, + "∉": { "codepoints": [8713], "characters": "\u2209" }, + "≠": { "codepoints": [8800], "characters": "\u2260" }, + "≂̸": { "codepoints": [8770, 824], "characters": "\u2242\u0338" }, + "∄": { "codepoints": [8708], "characters": "\u2204" }, + "≯": { "codepoints": [8815], "characters": "\u226F" }, + "≱": { "codepoints": [8817], "characters": "\u2271" }, + "≧̸": { "codepoints": [8807, 824], "characters": "\u2267\u0338" }, + "≫̸": { "codepoints": [8811, 824], "characters": "\u226B\u0338" }, + "≹": { "codepoints": [8825], "characters": "\u2279" }, + "⩾̸": { "codepoints": [10878, 824], "characters": "\u2A7E\u0338" }, + "≵": { "codepoints": [8821], "characters": "\u2275" }, + "≎̸": { "codepoints": [8782, 824], "characters": "\u224E\u0338" }, + "≏̸": { "codepoints": [8783, 824], "characters": "\u224F\u0338" }, + "⋪": { "codepoints": [8938], "characters": "\u22EA" }, + "⧏̸": { "codepoints": [10703, 824], "characters": "\u29CF\u0338" }, + "⋬": { "codepoints": [8940], "characters": "\u22EC" }, + "≮": { "codepoints": [8814], "characters": "\u226E" }, + "≰": { "codepoints": [8816], "characters": "\u2270" }, + "≸": { "codepoints": [8824], "characters": "\u2278" }, + "≪̸": { "codepoints": [8810, 824], "characters": "\u226A\u0338" }, + "⩽̸": { "codepoints": [10877, 824], "characters": "\u2A7D\u0338" }, + "≴": { "codepoints": [8820], "characters": "\u2274" }, + "⪢̸": { "codepoints": [10914, 824], "characters": "\u2AA2\u0338" }, + "⪡̸": { "codepoints": [10913, 824], "characters": "\u2AA1\u0338" }, + "⊀": { "codepoints": [8832], "characters": "\u2280" }, + "⪯̸": { "codepoints": [10927, 824], "characters": "\u2AAF\u0338" }, + "⋠": { "codepoints": [8928], "characters": "\u22E0" }, + "∌": { "codepoints": [8716], "characters": "\u220C" }, + "⋫": { "codepoints": [8939], "characters": "\u22EB" }, + "⧐̸": { "codepoints": [10704, 824], "characters": "\u29D0\u0338" }, + "⋭": { "codepoints": [8941], "characters": "\u22ED" }, + "⊏̸": { "codepoints": [8847, 824], "characters": "\u228F\u0338" }, + "⋢": { "codepoints": [8930], "characters": "\u22E2" }, + "⊐̸": { "codepoints": [8848, 824], "characters": "\u2290\u0338" }, + "⋣": { "codepoints": [8931], "characters": "\u22E3" }, + "⊂⃒": { "codepoints": [8834, 8402], "characters": "\u2282\u20D2" }, + "⊈": { "codepoints": [8840], "characters": "\u2288" }, + "⊁": { "codepoints": [8833], "characters": "\u2281" }, + "⪰̸": { "codepoints": [10928, 824], "characters": "\u2AB0\u0338" }, + "⋡": { "codepoints": [8929], "characters": "\u22E1" }, + "≿̸": { "codepoints": [8831, 824], "characters": "\u227F\u0338" }, + "⊃⃒": { "codepoints": [8835, 8402], "characters": "\u2283\u20D2" }, + "⊉": { "codepoints": [8841], "characters": "\u2289" }, + "≁": { "codepoints": [8769], "characters": "\u2241" }, + "≄": { "codepoints": [8772], "characters": "\u2244" }, + "≇": { "codepoints": [8775], "characters": "\u2247" }, + "≉": { "codepoints": [8777], "characters": "\u2249" }, + "∤": { "codepoints": [8740], "characters": "\u2224" }, + "𝒩": { "codepoints": [119977], "characters": "\uD835\uDCA9" }, + "Ñ": { "codepoints": [209], "characters": "\u00D1" }, + "Ñ": { "codepoints": [209], "characters": "\u00D1" }, + "Ν": { "codepoints": [925], "characters": "\u039D" }, + "Œ": { "codepoints": [338], "characters": "\u0152" }, + "Ó": { "codepoints": [211], "characters": "\u00D3" }, + "Ó": { "codepoints": [211], "characters": "\u00D3" }, + "Ô": { "codepoints": [212], "characters": "\u00D4" }, + "Ô": { "codepoints": [212], "characters": "\u00D4" }, + "О": { "codepoints": [1054], "characters": "\u041E" }, + "Ő": { "codepoints": [336], "characters": "\u0150" }, + "𝔒": { "codepoints": [120082], "characters": "\uD835\uDD12" }, + "Ò": { "codepoints": [210], "characters": "\u00D2" }, + "Ò": { "codepoints": [210], "characters": "\u00D2" }, + "Ō": { "codepoints": [332], "characters": "\u014C" }, + "Ω": { "codepoints": [937], "characters": "\u03A9" }, + "Ο": { "codepoints": [927], "characters": "\u039F" }, + "𝕆": { "codepoints": [120134], "characters": "\uD835\uDD46" }, + "“": { "codepoints": [8220], "characters": "\u201C" }, + "‘": { "codepoints": [8216], "characters": "\u2018" }, + "⩔": { "codepoints": [10836], "characters": "\u2A54" }, + "𝒪": { "codepoints": [119978], "characters": "\uD835\uDCAA" }, + "Ø": { "codepoints": [216], "characters": "\u00D8" }, + "Ø": { "codepoints": [216], "characters": "\u00D8" }, + "Õ": { "codepoints": [213], "characters": "\u00D5" }, + "Õ": { "codepoints": [213], "characters": "\u00D5" }, + "⨷": { "codepoints": [10807], "characters": "\u2A37" }, + "Ö": { "codepoints": [214], "characters": "\u00D6" }, + "Ö": { "codepoints": [214], "characters": "\u00D6" }, + "‾": { "codepoints": [8254], "characters": "\u203E" }, + "⏞": { "codepoints": [9182], "characters": "\u23DE" }, + "⎴": { "codepoints": [9140], "characters": "\u23B4" }, + "⏜": { "codepoints": [9180], "characters": "\u23DC" }, + "∂": { "codepoints": [8706], "characters": "\u2202" }, + "П": { "codepoints": [1055], "characters": "\u041F" }, + "𝔓": { "codepoints": [120083], "characters": "\uD835\uDD13" }, + "Φ": { "codepoints": [934], "characters": "\u03A6" }, + "Π": { "codepoints": [928], "characters": "\u03A0" }, + "±": { "codepoints": [177], "characters": "\u00B1" }, + "ℌ": { "codepoints": [8460], "characters": "\u210C" }, + "ℙ": { "codepoints": [8473], "characters": "\u2119" }, + "⪻": { "codepoints": [10939], "characters": "\u2ABB" }, + "≺": { "codepoints": [8826], "characters": "\u227A" }, + "⪯": { "codepoints": [10927], "characters": "\u2AAF" }, + "≼": { "codepoints": [8828], "characters": "\u227C" }, + "≾": { "codepoints": [8830], "characters": "\u227E" }, + "″": { "codepoints": [8243], "characters": "\u2033" }, + "∏": { "codepoints": [8719], "characters": "\u220F" }, + "∷": { "codepoints": [8759], "characters": "\u2237" }, + "∝": { "codepoints": [8733], "characters": "\u221D" }, + "𝒫": { "codepoints": [119979], "characters": "\uD835\uDCAB" }, + "Ψ": { "codepoints": [936], "characters": "\u03A8" }, + """: { "codepoints": [34], "characters": "\u0022" }, + """: { "codepoints": [34], "characters": "\u0022" }, + "𝔔": { "codepoints": [120084], "characters": "\uD835\uDD14" }, + "ℚ": { "codepoints": [8474], "characters": "\u211A" }, + "𝒬": { "codepoints": [119980], "characters": "\uD835\uDCAC" }, + "⤐": { "codepoints": [10512], "characters": "\u2910" }, + "®": { "codepoints": [174], "characters": "\u00AE" }, + "®": { "codepoints": [174], "characters": "\u00AE" }, + "Ŕ": { "codepoints": [340], "characters": "\u0154" }, + "⟫": { "codepoints": [10219], "characters": "\u27EB" }, + "↠": { "codepoints": [8608], "characters": "\u21A0" }, + "⤖": { "codepoints": [10518], "characters": "\u2916" }, + "Ř": { "codepoints": [344], "characters": "\u0158" }, + "Ŗ": { "codepoints": [342], "characters": "\u0156" }, + "Р": { "codepoints": [1056], "characters": "\u0420" }, + "ℜ": { "codepoints": [8476], "characters": "\u211C" }, + "∋": { "codepoints": [8715], "characters": "\u220B" }, + "⇋": { "codepoints": [8651], "characters": "\u21CB" }, + "⥯": { "codepoints": [10607], "characters": "\u296F" }, + "ℜ": { "codepoints": [8476], "characters": "\u211C" }, + "Ρ": { "codepoints": [929], "characters": "\u03A1" }, + "⟩": { "codepoints": [10217], "characters": "\u27E9" }, + "→": { "codepoints": [8594], "characters": "\u2192" }, + "⇥": { "codepoints": [8677], "characters": "\u21E5" }, + "⇄": { "codepoints": [8644], "characters": "\u21C4" }, + "⌉": { "codepoints": [8969], "characters": "\u2309" }, + "⟧": { "codepoints": [10215], "characters": "\u27E7" }, + "⥝": { "codepoints": [10589], "characters": "\u295D" }, + "⇂": { "codepoints": [8642], "characters": "\u21C2" }, + "⥕": { "codepoints": [10581], "characters": "\u2955" }, + "⌋": { "codepoints": [8971], "characters": "\u230B" }, + "⊢": { "codepoints": [8866], "characters": "\u22A2" }, + "↦": { "codepoints": [8614], "characters": "\u21A6" }, + "⥛": { "codepoints": [10587], "characters": "\u295B" }, + "⊳": { "codepoints": [8883], "characters": "\u22B3" }, + "⧐": { "codepoints": [10704], "characters": "\u29D0" }, + "⊵": { "codepoints": [8885], "characters": "\u22B5" }, + "⥏": { "codepoints": [10575], "characters": "\u294F" }, + "⥜": { "codepoints": [10588], "characters": "\u295C" }, + "↾": { "codepoints": [8638], "characters": "\u21BE" }, + "⥔": { "codepoints": [10580], "characters": "\u2954" }, + "⇀": { "codepoints": [8640], "characters": "\u21C0" }, + "⥓": { "codepoints": [10579], "characters": "\u2953" }, + "⇒": { "codepoints": [8658], "characters": "\u21D2" }, + "ℝ": { "codepoints": [8477], "characters": "\u211D" }, + "⥰": { "codepoints": [10608], "characters": "\u2970" }, + "⇛": { "codepoints": [8667], "characters": "\u21DB" }, + "ℛ": { "codepoints": [8475], "characters": "\u211B" }, + "↱": { "codepoints": [8625], "characters": "\u21B1" }, + "⧴": { "codepoints": [10740], "characters": "\u29F4" }, + "Щ": { "codepoints": [1065], "characters": "\u0429" }, + "Ш": { "codepoints": [1064], "characters": "\u0428" }, + "Ь": { "codepoints": [1068], "characters": "\u042C" }, + "Ś": { "codepoints": [346], "characters": "\u015A" }, + "⪼": { "codepoints": [10940], "characters": "\u2ABC" }, + "Š": { "codepoints": [352], "characters": "\u0160" }, + "Ş": { "codepoints": [350], "characters": "\u015E" }, + "Ŝ": { "codepoints": [348], "characters": "\u015C" }, + "С": { "codepoints": [1057], "characters": "\u0421" }, + "𝔖": { "codepoints": [120086], "characters": "\uD835\uDD16" }, + "↓": { "codepoints": [8595], "characters": "\u2193" }, + "←": { "codepoints": [8592], "characters": "\u2190" }, + "→": { "codepoints": [8594], "characters": "\u2192" }, + "↑": { "codepoints": [8593], "characters": "\u2191" }, + "Σ": { "codepoints": [931], "characters": "\u03A3" }, + "∘": { "codepoints": [8728], "characters": "\u2218" }, + "𝕊": { "codepoints": [120138], "characters": "\uD835\uDD4A" }, + "√": { "codepoints": [8730], "characters": "\u221A" }, + "□": { "codepoints": [9633], "characters": "\u25A1" }, + "⊓": { "codepoints": [8851], "characters": "\u2293" }, + "⊏": { "codepoints": [8847], "characters": "\u228F" }, + "⊑": { "codepoints": [8849], "characters": "\u2291" }, + "⊐": { "codepoints": [8848], "characters": "\u2290" }, + "⊒": { "codepoints": [8850], "characters": "\u2292" }, + "⊔": { "codepoints": [8852], "characters": "\u2294" }, + "𝒮": { "codepoints": [119982], "characters": "\uD835\uDCAE" }, + "⋆": { "codepoints": [8902], "characters": "\u22C6" }, + "⋐": { "codepoints": [8912], "characters": "\u22D0" }, + "⋐": { "codepoints": [8912], "characters": "\u22D0" }, + "⊆": { "codepoints": [8838], "characters": "\u2286" }, + "≻": { "codepoints": [8827], "characters": "\u227B" }, + "⪰": { "codepoints": [10928], "characters": "\u2AB0" }, + "≽": { "codepoints": [8829], "characters": "\u227D" }, + "≿": { "codepoints": [8831], "characters": "\u227F" }, + "∋": { "codepoints": [8715], "characters": "\u220B" }, + "∑": { "codepoints": [8721], "characters": "\u2211" }, + "⋑": { "codepoints": [8913], "characters": "\u22D1" }, + "⊃": { "codepoints": [8835], "characters": "\u2283" }, + "⊇": { "codepoints": [8839], "characters": "\u2287" }, + "⋑": { "codepoints": [8913], "characters": "\u22D1" }, + "Þ": { "codepoints": [222], "characters": "\u00DE" }, + "Þ": { "codepoints": [222], "characters": "\u00DE" }, + "™": { "codepoints": [8482], "characters": "\u2122" }, + "Ћ": { "codepoints": [1035], "characters": "\u040B" }, + "Ц": { "codepoints": [1062], "characters": "\u0426" }, + " ": { "codepoints": [9], "characters": "\u0009" }, + "Τ": { "codepoints": [932], "characters": "\u03A4" }, + "Ť": { "codepoints": [356], "characters": "\u0164" }, + "Ţ": { "codepoints": [354], "characters": "\u0162" }, + "Т": { "codepoints": [1058], "characters": "\u0422" }, + "𝔗": { "codepoints": [120087], "characters": "\uD835\uDD17" }, + "∴": { "codepoints": [8756], "characters": "\u2234" }, + "Θ": { "codepoints": [920], "characters": "\u0398" }, + "  ": { "codepoints": [8287, 8202], "characters": "\u205F\u200A" }, + " ": { "codepoints": [8201], "characters": "\u2009" }, + "∼": { "codepoints": [8764], "characters": "\u223C" }, + "≃": { "codepoints": [8771], "characters": "\u2243" }, + "≅": { "codepoints": [8773], "characters": "\u2245" }, + "≈": { "codepoints": [8776], "characters": "\u2248" }, + "𝕋": { "codepoints": [120139], "characters": "\uD835\uDD4B" }, + "⃛": { "codepoints": [8411], "characters": "\u20DB" }, + "𝒯": { "codepoints": [119983], "characters": "\uD835\uDCAF" }, + "Ŧ": { "codepoints": [358], "characters": "\u0166" }, + "Ú": { "codepoints": [218], "characters": "\u00DA" }, + "Ú": { "codepoints": [218], "characters": "\u00DA" }, + "↟": { "codepoints": [8607], "characters": "\u219F" }, + "⥉": { "codepoints": [10569], "characters": "\u2949" }, + "Ў": { "codepoints": [1038], "characters": "\u040E" }, + "Ŭ": { "codepoints": [364], "characters": "\u016C" }, + "Û": { "codepoints": [219], "characters": "\u00DB" }, + "Û": { "codepoints": [219], "characters": "\u00DB" }, + "У": { "codepoints": [1059], "characters": "\u0423" }, + "Ű": { "codepoints": [368], "characters": "\u0170" }, + "𝔘": { "codepoints": [120088], "characters": "\uD835\uDD18" }, + "Ù": { "codepoints": [217], "characters": "\u00D9" }, + "Ù": { "codepoints": [217], "characters": "\u00D9" }, + "Ū": { "codepoints": [362], "characters": "\u016A" }, + "_": { "codepoints": [95], "characters": "\u005F" }, + "⏟": { "codepoints": [9183], "characters": "\u23DF" }, + "⎵": { "codepoints": [9141], "characters": "\u23B5" }, + "⏝": { "codepoints": [9181], "characters": "\u23DD" }, + "⋃": { "codepoints": [8899], "characters": "\u22C3" }, + "⊎": { "codepoints": [8846], "characters": "\u228E" }, + "Ų": { "codepoints": [370], "characters": "\u0172" }, + "𝕌": { "codepoints": [120140], "characters": "\uD835\uDD4C" }, + "↑": { "codepoints": [8593], "characters": "\u2191" }, + "⤒": { "codepoints": [10514], "characters": "\u2912" }, + "⇅": { "codepoints": [8645], "characters": "\u21C5" }, + "↕": { "codepoints": [8597], "characters": "\u2195" }, + "⥮": { "codepoints": [10606], "characters": "\u296E" }, + "⊥": { "codepoints": [8869], "characters": "\u22A5" }, + "↥": { "codepoints": [8613], "characters": "\u21A5" }, + "⇑": { "codepoints": [8657], "characters": "\u21D1" }, + "⇕": { "codepoints": [8661], "characters": "\u21D5" }, + "↖": { "codepoints": [8598], "characters": "\u2196" }, + "↗": { "codepoints": [8599], "characters": "\u2197" }, + "ϒ": { "codepoints": [978], "characters": "\u03D2" }, + "Υ": { "codepoints": [933], "characters": "\u03A5" }, + "Ů": { "codepoints": [366], "characters": "\u016E" }, + "𝒰": { "codepoints": [119984], "characters": "\uD835\uDCB0" }, + "Ũ": { "codepoints": [360], "characters": "\u0168" }, + "Ü": { "codepoints": [220], "characters": "\u00DC" }, + "Ü": { "codepoints": [220], "characters": "\u00DC" }, + "⊫": { "codepoints": [8875], "characters": "\u22AB" }, + "⫫": { "codepoints": [10987], "characters": "\u2AEB" }, + "В": { "codepoints": [1042], "characters": "\u0412" }, + "⊩": { "codepoints": [8873], "characters": "\u22A9" }, + "⫦": { "codepoints": [10982], "characters": "\u2AE6" }, + "⋁": { "codepoints": [8897], "characters": "\u22C1" }, + "‖": { "codepoints": [8214], "characters": "\u2016" }, + "‖": { "codepoints": [8214], "characters": "\u2016" }, + "∣": { "codepoints": [8739], "characters": "\u2223" }, + "|": { "codepoints": [124], "characters": "\u007C" }, + "❘": { "codepoints": [10072], "characters": "\u2758" }, + "≀": { "codepoints": [8768], "characters": "\u2240" }, + " ": { "codepoints": [8202], "characters": "\u200A" }, + "𝔙": { "codepoints": [120089], "characters": "\uD835\uDD19" }, + "𝕍": { "codepoints": [120141], "characters": "\uD835\uDD4D" }, + "𝒱": { "codepoints": [119985], "characters": "\uD835\uDCB1" }, + "⊪": { "codepoints": [8874], "characters": "\u22AA" }, + "Ŵ": { "codepoints": [372], "characters": "\u0174" }, + "⋀": { "codepoints": [8896], "characters": "\u22C0" }, + "𝔚": { "codepoints": [120090], "characters": "\uD835\uDD1A" }, + "𝕎": { "codepoints": [120142], "characters": "\uD835\uDD4E" }, + "𝒲": { "codepoints": [119986], "characters": "\uD835\uDCB2" }, + "𝔛": { "codepoints": [120091], "characters": "\uD835\uDD1B" }, + "Ξ": { "codepoints": [926], "characters": "\u039E" }, + "𝕏": { "codepoints": [120143], "characters": "\uD835\uDD4F" }, + "𝒳": { "codepoints": [119987], "characters": "\uD835\uDCB3" }, + "Я": { "codepoints": [1071], "characters": "\u042F" }, + "Ї": { "codepoints": [1031], "characters": "\u0407" }, + "Ю": { "codepoints": [1070], "characters": "\u042E" }, + "Ý": { "codepoints": [221], "characters": "\u00DD" }, + "Ý": { "codepoints": [221], "characters": "\u00DD" }, + "Ŷ": { "codepoints": [374], "characters": "\u0176" }, + "Ы": { "codepoints": [1067], "characters": "\u042B" }, + "𝔜": { "codepoints": [120092], "characters": "\uD835\uDD1C" }, + "𝕐": { "codepoints": [120144], "characters": "\uD835\uDD50" }, + "𝒴": { "codepoints": [119988], "characters": "\uD835\uDCB4" }, + "Ÿ": { "codepoints": [376], "characters": "\u0178" }, + "Ж": { "codepoints": [1046], "characters": "\u0416" }, + "Ź": { "codepoints": [377], "characters": "\u0179" }, + "Ž": { "codepoints": [381], "characters": "\u017D" }, + "З": { "codepoints": [1047], "characters": "\u0417" }, + "Ż": { "codepoints": [379], "characters": "\u017B" }, + "​": { "codepoints": [8203], "characters": "\u200B" }, + "Ζ": { "codepoints": [918], "characters": "\u0396" }, + "ℨ": { "codepoints": [8488], "characters": "\u2128" }, + "ℤ": { "codepoints": [8484], "characters": "\u2124" }, + "𝒵": { "codepoints": [119989], "characters": "\uD835\uDCB5" }, + "á": { "codepoints": [225], "characters": "\u00E1" }, + "á": { "codepoints": [225], "characters": "\u00E1" }, + "ă": { "codepoints": [259], "characters": "\u0103" }, + "∾": { "codepoints": [8766], "characters": "\u223E" }, + "∾̳": { "codepoints": [8766, 819], "characters": "\u223E\u0333" }, + "∿": { "codepoints": [8767], "characters": "\u223F" }, + "â": { "codepoints": [226], "characters": "\u00E2" }, + "â": { "codepoints": [226], "characters": "\u00E2" }, + "´": { "codepoints": [180], "characters": "\u00B4" }, + "´": { "codepoints": [180], "characters": "\u00B4" }, + "а": { "codepoints": [1072], "characters": "\u0430" }, + "æ": { "codepoints": [230], "characters": "\u00E6" }, + "æ": { "codepoints": [230], "characters": "\u00E6" }, + "⁡": { "codepoints": [8289], "characters": "\u2061" }, + "𝔞": { "codepoints": [120094], "characters": "\uD835\uDD1E" }, + "à": { "codepoints": [224], "characters": "\u00E0" }, + "à": { "codepoints": [224], "characters": "\u00E0" }, + "ℵ": { "codepoints": [8501], "characters": "\u2135" }, + "ℵ": { "codepoints": [8501], "characters": "\u2135" }, + "α": { "codepoints": [945], "characters": "\u03B1" }, + "ā": { "codepoints": [257], "characters": "\u0101" }, + "⨿": { "codepoints": [10815], "characters": "\u2A3F" }, + "&": { "codepoints": [38], "characters": "\u0026" }, + "&": { "codepoints": [38], "characters": "\u0026" }, + "∧": { "codepoints": [8743], "characters": "\u2227" }, + "⩕": { "codepoints": [10837], "characters": "\u2A55" }, + "⩜": { "codepoints": [10844], "characters": "\u2A5C" }, + "⩘": { "codepoints": [10840], "characters": "\u2A58" }, + "⩚": { "codepoints": [10842], "characters": "\u2A5A" }, + "∠": { "codepoints": [8736], "characters": "\u2220" }, + "⦤": { "codepoints": [10660], "characters": "\u29A4" }, + "∠": { "codepoints": [8736], "characters": "\u2220" }, + "∡": { "codepoints": [8737], "characters": "\u2221" }, + "⦨": { "codepoints": [10664], "characters": "\u29A8" }, + "⦩": { "codepoints": [10665], "characters": "\u29A9" }, + "⦪": { "codepoints": [10666], "characters": "\u29AA" }, + "⦫": { "codepoints": [10667], "characters": "\u29AB" }, + "⦬": { "codepoints": [10668], "characters": "\u29AC" }, + "⦭": { "codepoints": [10669], "characters": "\u29AD" }, + "⦮": { "codepoints": [10670], "characters": "\u29AE" }, + "⦯": { "codepoints": [10671], "characters": "\u29AF" }, + "∟": { "codepoints": [8735], "characters": "\u221F" }, + "⊾": { "codepoints": [8894], "characters": "\u22BE" }, + "⦝": { "codepoints": [10653], "characters": "\u299D" }, + "∢": { "codepoints": [8738], "characters": "\u2222" }, + "Å": { "codepoints": [197], "characters": "\u00C5" }, + "⍼": { "codepoints": [9084], "characters": "\u237C" }, + "ą": { "codepoints": [261], "characters": "\u0105" }, + "𝕒": { "codepoints": [120146], "characters": "\uD835\uDD52" }, + "≈": { "codepoints": [8776], "characters": "\u2248" }, + "⩰": { "codepoints": [10864], "characters": "\u2A70" }, + "⩯": { "codepoints": [10863], "characters": "\u2A6F" }, + "≊": { "codepoints": [8778], "characters": "\u224A" }, + "≋": { "codepoints": [8779], "characters": "\u224B" }, + "'": { "codepoints": [39], "characters": "\u0027" }, + "≈": { "codepoints": [8776], "characters": "\u2248" }, + "≊": { "codepoints": [8778], "characters": "\u224A" }, + "å": { "codepoints": [229], "characters": "\u00E5" }, + "å": { "codepoints": [229], "characters": "\u00E5" }, + "𝒶": { "codepoints": [119990], "characters": "\uD835\uDCB6" }, + "*": { "codepoints": [42], "characters": "\u002A" }, + "≈": { "codepoints": [8776], "characters": "\u2248" }, + "≍": { "codepoints": [8781], "characters": "\u224D" }, + "ã": { "codepoints": [227], "characters": "\u00E3" }, + "ã": { "codepoints": [227], "characters": "\u00E3" }, + "ä": { "codepoints": [228], "characters": "\u00E4" }, + "ä": { "codepoints": [228], "characters": "\u00E4" }, + "∳": { "codepoints": [8755], "characters": "\u2233" }, + "⨑": { "codepoints": [10769], "characters": "\u2A11" }, + "⫭": { "codepoints": [10989], "characters": "\u2AED" }, + "≌": { "codepoints": [8780], "characters": "\u224C" }, + "϶": { "codepoints": [1014], "characters": "\u03F6" }, + "‵": { "codepoints": [8245], "characters": "\u2035" }, + "∽": { "codepoints": [8765], "characters": "\u223D" }, + "⋍": { "codepoints": [8909], "characters": "\u22CD" }, + "⊽": { "codepoints": [8893], "characters": "\u22BD" }, + "⌅": { "codepoints": [8965], "characters": "\u2305" }, + "⌅": { "codepoints": [8965], "characters": "\u2305" }, + "⎵": { "codepoints": [9141], "characters": "\u23B5" }, + "⎶": { "codepoints": [9142], "characters": "\u23B6" }, + "≌": { "codepoints": [8780], "characters": "\u224C" }, + "б": { "codepoints": [1073], "characters": "\u0431" }, + "„": { "codepoints": [8222], "characters": "\u201E" }, + "∵": { "codepoints": [8757], "characters": "\u2235" }, + "∵": { "codepoints": [8757], "characters": "\u2235" }, + "⦰": { "codepoints": [10672], "characters": "\u29B0" }, + "϶": { "codepoints": [1014], "characters": "\u03F6" }, + "ℬ": { "codepoints": [8492], "characters": "\u212C" }, + "β": { "codepoints": [946], "characters": "\u03B2" }, + "ℶ": { "codepoints": [8502], "characters": "\u2136" }, + "≬": { "codepoints": [8812], "characters": "\u226C" }, + "𝔟": { "codepoints": [120095], "characters": "\uD835\uDD1F" }, + "⋂": { "codepoints": [8898], "characters": "\u22C2" }, + "◯": { "codepoints": [9711], "characters": "\u25EF" }, + "⋃": { "codepoints": [8899], "characters": "\u22C3" }, + "⨀": { "codepoints": [10752], "characters": "\u2A00" }, + "⨁": { "codepoints": [10753], "characters": "\u2A01" }, + "⨂": { "codepoints": [10754], "characters": "\u2A02" }, + "⨆": { "codepoints": [10758], "characters": "\u2A06" }, + "★": { "codepoints": [9733], "characters": "\u2605" }, + "▽": { "codepoints": [9661], "characters": "\u25BD" }, + "△": { "codepoints": [9651], "characters": "\u25B3" }, + "⨄": { "codepoints": [10756], "characters": "\u2A04" }, + "⋁": { "codepoints": [8897], "characters": "\u22C1" }, + "⋀": { "codepoints": [8896], "characters": "\u22C0" }, + "⤍": { "codepoints": [10509], "characters": "\u290D" }, + "⧫": { "codepoints": [10731], "characters": "\u29EB" }, + "▪": { "codepoints": [9642], "characters": "\u25AA" }, + "▴": { "codepoints": [9652], "characters": "\u25B4" }, + "▾": { "codepoints": [9662], "characters": "\u25BE" }, + "◂": { "codepoints": [9666], "characters": "\u25C2" }, + "▸": { "codepoints": [9656], "characters": "\u25B8" }, + "␣": { "codepoints": [9251], "characters": "\u2423" }, + "▒": { "codepoints": [9618], "characters": "\u2592" }, + "░": { "codepoints": [9617], "characters": "\u2591" }, + "▓": { "codepoints": [9619], "characters": "\u2593" }, + "█": { "codepoints": [9608], "characters": "\u2588" }, + "=⃥": { "codepoints": [61, 8421], "characters": "\u003D\u20E5" }, + "≡⃥": { "codepoints": [8801, 8421], "characters": "\u2261\u20E5" }, + "⌐": { "codepoints": [8976], "characters": "\u2310" }, + "𝕓": { "codepoints": [120147], "characters": "\uD835\uDD53" }, + "⊥": { "codepoints": [8869], "characters": "\u22A5" }, + "⊥": { "codepoints": [8869], "characters": "\u22A5" }, + "⋈": { "codepoints": [8904], "characters": "\u22C8" }, + "╗": { "codepoints": [9559], "characters": "\u2557" }, + "╔": { "codepoints": [9556], "characters": "\u2554" }, + "╖": { "codepoints": [9558], "characters": "\u2556" }, + "╓": { "codepoints": [9555], "characters": "\u2553" }, + "═": { "codepoints": [9552], "characters": "\u2550" }, + "╦": { "codepoints": [9574], "characters": "\u2566" }, + "╩": { "codepoints": [9577], "characters": "\u2569" }, + "╤": { "codepoints": [9572], "characters": "\u2564" }, + "╧": { "codepoints": [9575], "characters": "\u2567" }, + "╝": { "codepoints": [9565], "characters": "\u255D" }, + "╚": { "codepoints": [9562], "characters": "\u255A" }, + "╜": { "codepoints": [9564], "characters": "\u255C" }, + "╙": { "codepoints": [9561], "characters": "\u2559" }, + "║": { "codepoints": [9553], "characters": "\u2551" }, + "╬": { "codepoints": [9580], "characters": "\u256C" }, + "╣": { "codepoints": [9571], "characters": "\u2563" }, + "╠": { "codepoints": [9568], "characters": "\u2560" }, + "╫": { "codepoints": [9579], "characters": "\u256B" }, + "╢": { "codepoints": [9570], "characters": "\u2562" }, + "╟": { "codepoints": [9567], "characters": "\u255F" }, + "⧉": { "codepoints": [10697], "characters": "\u29C9" }, + "╕": { "codepoints": [9557], "characters": "\u2555" }, + "╒": { "codepoints": [9554], "characters": "\u2552" }, + "┐": { "codepoints": [9488], "characters": "\u2510" }, + "┌": { "codepoints": [9484], "characters": "\u250C" }, + "─": { "codepoints": [9472], "characters": "\u2500" }, + "╥": { "codepoints": [9573], "characters": "\u2565" }, + "╨": { "codepoints": [9576], "characters": "\u2568" }, + "┬": { "codepoints": [9516], "characters": "\u252C" }, + "┴": { "codepoints": [9524], "characters": "\u2534" }, + "⊟": { "codepoints": [8863], "characters": "\u229F" }, + "⊞": { "codepoints": [8862], "characters": "\u229E" }, + "⊠": { "codepoints": [8864], "characters": "\u22A0" }, + "╛": { "codepoints": [9563], "characters": "\u255B" }, + "╘": { "codepoints": [9560], "characters": "\u2558" }, + "┘": { "codepoints": [9496], "characters": "\u2518" }, + "└": { "codepoints": [9492], "characters": "\u2514" }, + "│": { "codepoints": [9474], "characters": "\u2502" }, + "╪": { "codepoints": [9578], "characters": "\u256A" }, + "╡": { "codepoints": [9569], "characters": "\u2561" }, + "╞": { "codepoints": [9566], "characters": "\u255E" }, + "┼": { "codepoints": [9532], "characters": "\u253C" }, + "┤": { "codepoints": [9508], "characters": "\u2524" }, + "├": { "codepoints": [9500], "characters": "\u251C" }, + "‵": { "codepoints": [8245], "characters": "\u2035" }, + "˘": { "codepoints": [728], "characters": "\u02D8" }, + "¦": { "codepoints": [166], "characters": "\u00A6" }, + "¦": { "codepoints": [166], "characters": "\u00A6" }, + "𝒷": { "codepoints": [119991], "characters": "\uD835\uDCB7" }, + "⁏": { "codepoints": [8271], "characters": "\u204F" }, + "∽": { "codepoints": [8765], "characters": "\u223D" }, + "⋍": { "codepoints": [8909], "characters": "\u22CD" }, + "\": { "codepoints": [92], "characters": "\u005C" }, + "⧅": { "codepoints": [10693], "characters": "\u29C5" }, + "⟈": { "codepoints": [10184], "characters": "\u27C8" }, + "•": { "codepoints": [8226], "characters": "\u2022" }, + "•": { "codepoints": [8226], "characters": "\u2022" }, + "≎": { "codepoints": [8782], "characters": "\u224E" }, + "⪮": { "codepoints": [10926], "characters": "\u2AAE" }, + "≏": { "codepoints": [8783], "characters": "\u224F" }, + "≏": { "codepoints": [8783], "characters": "\u224F" }, + "ć": { "codepoints": [263], "characters": "\u0107" }, + "∩": { "codepoints": [8745], "characters": "\u2229" }, + "⩄": { "codepoints": [10820], "characters": "\u2A44" }, + "⩉": { "codepoints": [10825], "characters": "\u2A49" }, + "⩋": { "codepoints": [10827], "characters": "\u2A4B" }, + "⩇": { "codepoints": [10823], "characters": "\u2A47" }, + "⩀": { "codepoints": [10816], "characters": "\u2A40" }, + "∩︀": { "codepoints": [8745, 65024], "characters": "\u2229\uFE00" }, + "⁁": { "codepoints": [8257], "characters": "\u2041" }, + "ˇ": { "codepoints": [711], "characters": "\u02C7" }, + "⩍": { "codepoints": [10829], "characters": "\u2A4D" }, + "č": { "codepoints": [269], "characters": "\u010D" }, + "ç": { "codepoints": [231], "characters": "\u00E7" }, + "ç": { "codepoints": [231], "characters": "\u00E7" }, + "ĉ": { "codepoints": [265], "characters": "\u0109" }, + "⩌": { "codepoints": [10828], "characters": "\u2A4C" }, + "⩐": { "codepoints": [10832], "characters": "\u2A50" }, + "ċ": { "codepoints": [267], "characters": "\u010B" }, + "¸": { "codepoints": [184], "characters": "\u00B8" }, + "¸": { "codepoints": [184], "characters": "\u00B8" }, + "⦲": { "codepoints": [10674], "characters": "\u29B2" }, + "¢": { "codepoints": [162], "characters": "\u00A2" }, + "¢": { "codepoints": [162], "characters": "\u00A2" }, + "·": { "codepoints": [183], "characters": "\u00B7" }, + "𝔠": { "codepoints": [120096], "characters": "\uD835\uDD20" }, + "ч": { "codepoints": [1095], "characters": "\u0447" }, + "✓": { "codepoints": [10003], "characters": "\u2713" }, + "✓": { "codepoints": [10003], "characters": "\u2713" }, + "χ": { "codepoints": [967], "characters": "\u03C7" }, + "○": { "codepoints": [9675], "characters": "\u25CB" }, + "⧃": { "codepoints": [10691], "characters": "\u29C3" }, + "ˆ": { "codepoints": [710], "characters": "\u02C6" }, + "≗": { "codepoints": [8791], "characters": "\u2257" }, + "↺": { "codepoints": [8634], "characters": "\u21BA" }, + "↻": { "codepoints": [8635], "characters": "\u21BB" }, + "®": { "codepoints": [174], "characters": "\u00AE" }, + "Ⓢ": { "codepoints": [9416], "characters": "\u24C8" }, + "⊛": { "codepoints": [8859], "characters": "\u229B" }, + "⊚": { "codepoints": [8858], "characters": "\u229A" }, + "⊝": { "codepoints": [8861], "characters": "\u229D" }, + "≗": { "codepoints": [8791], "characters": "\u2257" }, + "⨐": { "codepoints": [10768], "characters": "\u2A10" }, + "⫯": { "codepoints": [10991], "characters": "\u2AEF" }, + "⧂": { "codepoints": [10690], "characters": "\u29C2" }, + "♣": { "codepoints": [9827], "characters": "\u2663" }, + "♣": { "codepoints": [9827], "characters": "\u2663" }, + ":": { "codepoints": [58], "characters": "\u003A" }, + "≔": { "codepoints": [8788], "characters": "\u2254" }, + "≔": { "codepoints": [8788], "characters": "\u2254" }, + ",": { "codepoints": [44], "characters": "\u002C" }, + "@": { "codepoints": [64], "characters": "\u0040" }, + "∁": { "codepoints": [8705], "characters": "\u2201" }, + "∘": { "codepoints": [8728], "characters": "\u2218" }, + "∁": { "codepoints": [8705], "characters": "\u2201" }, + "ℂ": { "codepoints": [8450], "characters": "\u2102" }, + "≅": { "codepoints": [8773], "characters": "\u2245" }, + "⩭": { "codepoints": [10861], "characters": "\u2A6D" }, + "∮": { "codepoints": [8750], "characters": "\u222E" }, + "𝕔": { "codepoints": [120148], "characters": "\uD835\uDD54" }, + "∐": { "codepoints": [8720], "characters": "\u2210" }, + "©": { "codepoints": [169], "characters": "\u00A9" }, + "©": { "codepoints": [169], "characters": "\u00A9" }, + "℗": { "codepoints": [8471], "characters": "\u2117" }, + "↵": { "codepoints": [8629], "characters": "\u21B5" }, + "✗": { "codepoints": [10007], "characters": "\u2717" }, + "𝒸": { "codepoints": [119992], "characters": "\uD835\uDCB8" }, + "⫏": { "codepoints": [10959], "characters": "\u2ACF" }, + "⫑": { "codepoints": [10961], "characters": "\u2AD1" }, + "⫐": { "codepoints": [10960], "characters": "\u2AD0" }, + "⫒": { "codepoints": [10962], "characters": "\u2AD2" }, + "⋯": { "codepoints": [8943], "characters": "\u22EF" }, + "⤸": { "codepoints": [10552], "characters": "\u2938" }, + "⤵": { "codepoints": [10549], "characters": "\u2935" }, + "⋞": { "codepoints": [8926], "characters": "\u22DE" }, + "⋟": { "codepoints": [8927], "characters": "\u22DF" }, + "↶": { "codepoints": [8630], "characters": "\u21B6" }, + "⤽": { "codepoints": [10557], "characters": "\u293D" }, + "∪": { "codepoints": [8746], "characters": "\u222A" }, + "⩈": { "codepoints": [10824], "characters": "\u2A48" }, + "⩆": { "codepoints": [10822], "characters": "\u2A46" }, + "⩊": { "codepoints": [10826], "characters": "\u2A4A" }, + "⊍": { "codepoints": [8845], "characters": "\u228D" }, + "⩅": { "codepoints": [10821], "characters": "\u2A45" }, + "∪︀": { "codepoints": [8746, 65024], "characters": "\u222A\uFE00" }, + "↷": { "codepoints": [8631], "characters": "\u21B7" }, + "⤼": { "codepoints": [10556], "characters": "\u293C" }, + "⋞": { "codepoints": [8926], "characters": "\u22DE" }, + "⋟": { "codepoints": [8927], "characters": "\u22DF" }, + "⋎": { "codepoints": [8910], "characters": "\u22CE" }, + "⋏": { "codepoints": [8911], "characters": "\u22CF" }, + "¤": { "codepoints": [164], "characters": "\u00A4" }, + "¤": { "codepoints": [164], "characters": "\u00A4" }, + "↶": { "codepoints": [8630], "characters": "\u21B6" }, + "↷": { "codepoints": [8631], "characters": "\u21B7" }, + "⋎": { "codepoints": [8910], "characters": "\u22CE" }, + "⋏": { "codepoints": [8911], "characters": "\u22CF" }, + "∲": { "codepoints": [8754], "characters": "\u2232" }, + "∱": { "codepoints": [8753], "characters": "\u2231" }, + "⌭": { "codepoints": [9005], "characters": "\u232D" }, + "⇓": { "codepoints": [8659], "characters": "\u21D3" }, + "⥥": { "codepoints": [10597], "characters": "\u2965" }, + "†": { "codepoints": [8224], "characters": "\u2020" }, + "ℸ": { "codepoints": [8504], "characters": "\u2138" }, + "↓": { "codepoints": [8595], "characters": "\u2193" }, + "‐": { "codepoints": [8208], "characters": "\u2010" }, + "⊣": { "codepoints": [8867], "characters": "\u22A3" }, + "⤏": { "codepoints": [10511], "characters": "\u290F" }, + "˝": { "codepoints": [733], "characters": "\u02DD" }, + "ď": { "codepoints": [271], "characters": "\u010F" }, + "д": { "codepoints": [1076], "characters": "\u0434" }, + "ⅆ": { "codepoints": [8518], "characters": "\u2146" }, + "‡": { "codepoints": [8225], "characters": "\u2021" }, + "⇊": { "codepoints": [8650], "characters": "\u21CA" }, + "⩷": { "codepoints": [10871], "characters": "\u2A77" }, + "°": { "codepoints": [176], "characters": "\u00B0" }, + "°": { "codepoints": [176], "characters": "\u00B0" }, + "δ": { "codepoints": [948], "characters": "\u03B4" }, + "⦱": { "codepoints": [10673], "characters": "\u29B1" }, + "⥿": { "codepoints": [10623], "characters": "\u297F" }, + "𝔡": { "codepoints": [120097], "characters": "\uD835\uDD21" }, + "⇃": { "codepoints": [8643], "characters": "\u21C3" }, + "⇂": { "codepoints": [8642], "characters": "\u21C2" }, + "⋄": { "codepoints": [8900], "characters": "\u22C4" }, + "⋄": { "codepoints": [8900], "characters": "\u22C4" }, + "♦": { "codepoints": [9830], "characters": "\u2666" }, + "♦": { "codepoints": [9830], "characters": "\u2666" }, + "¨": { "codepoints": [168], "characters": "\u00A8" }, + "ϝ": { "codepoints": [989], "characters": "\u03DD" }, + "⋲": { "codepoints": [8946], "characters": "\u22F2" }, + "÷": { "codepoints": [247], "characters": "\u00F7" }, + "÷": { "codepoints": [247], "characters": "\u00F7" }, + "÷": { "codepoints": [247], "characters": "\u00F7" }, + "⋇": { "codepoints": [8903], "characters": "\u22C7" }, + "⋇": { "codepoints": [8903], "characters": "\u22C7" }, + "ђ": { "codepoints": [1106], "characters": "\u0452" }, + "⌞": { "codepoints": [8990], "characters": "\u231E" }, + "⌍": { "codepoints": [8973], "characters": "\u230D" }, + "$": { "codepoints": [36], "characters": "\u0024" }, + "𝕕": { "codepoints": [120149], "characters": "\uD835\uDD55" }, + "˙": { "codepoints": [729], "characters": "\u02D9" }, + "≐": { "codepoints": [8784], "characters": "\u2250" }, + "≑": { "codepoints": [8785], "characters": "\u2251" }, + "∸": { "codepoints": [8760], "characters": "\u2238" }, + "∔": { "codepoints": [8724], "characters": "\u2214" }, + "⊡": { "codepoints": [8865], "characters": "\u22A1" }, + "⌆": { "codepoints": [8966], "characters": "\u2306" }, + "↓": { "codepoints": [8595], "characters": "\u2193" }, + "⇊": { "codepoints": [8650], "characters": "\u21CA" }, + "⇃": { "codepoints": [8643], "characters": "\u21C3" }, + "⇂": { "codepoints": [8642], "characters": "\u21C2" }, + "⤐": { "codepoints": [10512], "characters": "\u2910" }, + "⌟": { "codepoints": [8991], "characters": "\u231F" }, + "⌌": { "codepoints": [8972], "characters": "\u230C" }, + "𝒹": { "codepoints": [119993], "characters": "\uD835\uDCB9" }, + "ѕ": { "codepoints": [1109], "characters": "\u0455" }, + "⧶": { "codepoints": [10742], "characters": "\u29F6" }, + "đ": { "codepoints": [273], "characters": "\u0111" }, + "⋱": { "codepoints": [8945], "characters": "\u22F1" }, + "▿": { "codepoints": [9663], "characters": "\u25BF" }, + "▾": { "codepoints": [9662], "characters": "\u25BE" }, + "⇵": { "codepoints": [8693], "characters": "\u21F5" }, + "⥯": { "codepoints": [10607], "characters": "\u296F" }, + "⦦": { "codepoints": [10662], "characters": "\u29A6" }, + "џ": { "codepoints": [1119], "characters": "\u045F" }, + "⟿": { "codepoints": [10239], "characters": "\u27FF" }, + "⩷": { "codepoints": [10871], "characters": "\u2A77" }, + "≑": { "codepoints": [8785], "characters": "\u2251" }, + "é": { "codepoints": [233], "characters": "\u00E9" }, + "é": { "codepoints": [233], "characters": "\u00E9" }, + "⩮": { "codepoints": [10862], "characters": "\u2A6E" }, + "ě": { "codepoints": [283], "characters": "\u011B" }, + "≖": { "codepoints": [8790], "characters": "\u2256" }, + "ê": { "codepoints": [234], "characters": "\u00EA" }, + "ê": { "codepoints": [234], "characters": "\u00EA" }, + "≕": { "codepoints": [8789], "characters": "\u2255" }, + "э": { "codepoints": [1101], "characters": "\u044D" }, + "ė": { "codepoints": [279], "characters": "\u0117" }, + "ⅇ": { "codepoints": [8519], "characters": "\u2147" }, + "≒": { "codepoints": [8786], "characters": "\u2252" }, + "𝔢": { "codepoints": [120098], "characters": "\uD835\uDD22" }, + "⪚": { "codepoints": [10906], "characters": "\u2A9A" }, + "è": { "codepoints": [232], "characters": "\u00E8" }, + "è": { "codepoints": [232], "characters": "\u00E8" }, + "⪖": { "codepoints": [10902], "characters": "\u2A96" }, + "⪘": { "codepoints": [10904], "characters": "\u2A98" }, + "⪙": { "codepoints": [10905], "characters": "\u2A99" }, + "⏧": { "codepoints": [9191], "characters": "\u23E7" }, + "ℓ": { "codepoints": [8467], "characters": "\u2113" }, + "⪕": { "codepoints": [10901], "characters": "\u2A95" }, + "⪗": { "codepoints": [10903], "characters": "\u2A97" }, + "ē": { "codepoints": [275], "characters": "\u0113" }, + "∅": { "codepoints": [8709], "characters": "\u2205" }, + "∅": { "codepoints": [8709], "characters": "\u2205" }, + "∅": { "codepoints": [8709], "characters": "\u2205" }, + " ": { "codepoints": [8196], "characters": "\u2004" }, + " ": { "codepoints": [8197], "characters": "\u2005" }, + " ": { "codepoints": [8195], "characters": "\u2003" }, + "ŋ": { "codepoints": [331], "characters": "\u014B" }, + " ": { "codepoints": [8194], "characters": "\u2002" }, + "ę": { "codepoints": [281], "characters": "\u0119" }, + "𝕖": { "codepoints": [120150], "characters": "\uD835\uDD56" }, + "⋕": { "codepoints": [8917], "characters": "\u22D5" }, + "⧣": { "codepoints": [10723], "characters": "\u29E3" }, + "⩱": { "codepoints": [10865], "characters": "\u2A71" }, + "ε": { "codepoints": [949], "characters": "\u03B5" }, + "ε": { "codepoints": [949], "characters": "\u03B5" }, + "ϵ": { "codepoints": [1013], "characters": "\u03F5" }, + "≖": { "codepoints": [8790], "characters": "\u2256" }, + "≕": { "codepoints": [8789], "characters": "\u2255" }, + "≂": { "codepoints": [8770], "characters": "\u2242" }, + "⪖": { "codepoints": [10902], "characters": "\u2A96" }, + "⪕": { "codepoints": [10901], "characters": "\u2A95" }, + "=": { "codepoints": [61], "characters": "\u003D" }, + "≟": { "codepoints": [8799], "characters": "\u225F" }, + "≡": { "codepoints": [8801], "characters": "\u2261" }, + "⩸": { "codepoints": [10872], "characters": "\u2A78" }, + "⧥": { "codepoints": [10725], "characters": "\u29E5" }, + "≓": { "codepoints": [8787], "characters": "\u2253" }, + "⥱": { "codepoints": [10609], "characters": "\u2971" }, + "ℯ": { "codepoints": [8495], "characters": "\u212F" }, + "≐": { "codepoints": [8784], "characters": "\u2250" }, + "≂": { "codepoints": [8770], "characters": "\u2242" }, + "η": { "codepoints": [951], "characters": "\u03B7" }, + "ð": { "codepoints": [240], "characters": "\u00F0" }, + "ð": { "codepoints": [240], "characters": "\u00F0" }, + "ë": { "codepoints": [235], "characters": "\u00EB" }, + "ë": { "codepoints": [235], "characters": "\u00EB" }, + "€": { "codepoints": [8364], "characters": "\u20AC" }, + "!": { "codepoints": [33], "characters": "\u0021" }, + "∃": { "codepoints": [8707], "characters": "\u2203" }, + "ℰ": { "codepoints": [8496], "characters": "\u2130" }, + "ⅇ": { "codepoints": [8519], "characters": "\u2147" }, + "≒": { "codepoints": [8786], "characters": "\u2252" }, + "ф": { "codepoints": [1092], "characters": "\u0444" }, + "♀": { "codepoints": [9792], "characters": "\u2640" }, + "ffi": { "codepoints": [64259], "characters": "\uFB03" }, + "ff": { "codepoints": [64256], "characters": "\uFB00" }, + "ffl": { "codepoints": [64260], "characters": "\uFB04" }, + "𝔣": { "codepoints": [120099], "characters": "\uD835\uDD23" }, + "fi": { "codepoints": [64257], "characters": "\uFB01" }, + "fj": { "codepoints": [102, 106], "characters": "\u0066\u006A" }, + "♭": { "codepoints": [9837], "characters": "\u266D" }, + "fl": { "codepoints": [64258], "characters": "\uFB02" }, + "▱": { "codepoints": [9649], "characters": "\u25B1" }, + "ƒ": { "codepoints": [402], "characters": "\u0192" }, + "𝕗": { "codepoints": [120151], "characters": "\uD835\uDD57" }, + "∀": { "codepoints": [8704], "characters": "\u2200" }, + "⋔": { "codepoints": [8916], "characters": "\u22D4" }, + "⫙": { "codepoints": [10969], "characters": "\u2AD9" }, + "⨍": { "codepoints": [10765], "characters": "\u2A0D" }, + "½": { "codepoints": [189], "characters": "\u00BD" }, + "½": { "codepoints": [189], "characters": "\u00BD" }, + "⅓": { "codepoints": [8531], "characters": "\u2153" }, + "¼": { "codepoints": [188], "characters": "\u00BC" }, + "¼": { "codepoints": [188], "characters": "\u00BC" }, + "⅕": { "codepoints": [8533], "characters": "\u2155" }, + "⅙": { "codepoints": [8537], "characters": "\u2159" }, + "⅛": { "codepoints": [8539], "characters": "\u215B" }, + "⅔": { "codepoints": [8532], "characters": "\u2154" }, + "⅖": { "codepoints": [8534], "characters": "\u2156" }, + "¾": { "codepoints": [190], "characters": "\u00BE" }, + "¾": { "codepoints": [190], "characters": "\u00BE" }, + "⅗": { "codepoints": [8535], "characters": "\u2157" }, + "⅜": { "codepoints": [8540], "characters": "\u215C" }, + "⅘": { "codepoints": [8536], "characters": "\u2158" }, + "⅚": { "codepoints": [8538], "characters": "\u215A" }, + "⅝": { "codepoints": [8541], "characters": "\u215D" }, + "⅞": { "codepoints": [8542], "characters": "\u215E" }, + "⁄": { "codepoints": [8260], "characters": "\u2044" }, + "⌢": { "codepoints": [8994], "characters": "\u2322" }, + "𝒻": { "codepoints": [119995], "characters": "\uD835\uDCBB" }, + "≧": { "codepoints": [8807], "characters": "\u2267" }, + "⪌": { "codepoints": [10892], "characters": "\u2A8C" }, + "ǵ": { "codepoints": [501], "characters": "\u01F5" }, + "γ": { "codepoints": [947], "characters": "\u03B3" }, + "ϝ": { "codepoints": [989], "characters": "\u03DD" }, + "⪆": { "codepoints": [10886], "characters": "\u2A86" }, + "ğ": { "codepoints": [287], "characters": "\u011F" }, + "ĝ": { "codepoints": [285], "characters": "\u011D" }, + "г": { "codepoints": [1075], "characters": "\u0433" }, + "ġ": { "codepoints": [289], "characters": "\u0121" }, + "≥": { "codepoints": [8805], "characters": "\u2265" }, + "⋛": { "codepoints": [8923], "characters": "\u22DB" }, + "≥": { "codepoints": [8805], "characters": "\u2265" }, + "≧": { "codepoints": [8807], "characters": "\u2267" }, + "⩾": { "codepoints": [10878], "characters": "\u2A7E" }, + "⩾": { "codepoints": [10878], "characters": "\u2A7E" }, + "⪩": { "codepoints": [10921], "characters": "\u2AA9" }, + "⪀": { "codepoints": [10880], "characters": "\u2A80" }, + "⪂": { "codepoints": [10882], "characters": "\u2A82" }, + "⪄": { "codepoints": [10884], "characters": "\u2A84" }, + "⋛︀": { "codepoints": [8923, 65024], "characters": "\u22DB\uFE00" }, + "⪔": { "codepoints": [10900], "characters": "\u2A94" }, + "𝔤": { "codepoints": [120100], "characters": "\uD835\uDD24" }, + "≫": { "codepoints": [8811], "characters": "\u226B" }, + "⋙": { "codepoints": [8921], "characters": "\u22D9" }, + "ℷ": { "codepoints": [8503], "characters": "\u2137" }, + "ѓ": { "codepoints": [1107], "characters": "\u0453" }, + "≷": { "codepoints": [8823], "characters": "\u2277" }, + "⪒": { "codepoints": [10898], "characters": "\u2A92" }, + "⪥": { "codepoints": [10917], "characters": "\u2AA5" }, + "⪤": { "codepoints": [10916], "characters": "\u2AA4" }, + "≩": { "codepoints": [8809], "characters": "\u2269" }, + "⪊": { "codepoints": [10890], "characters": "\u2A8A" }, + "⪊": { "codepoints": [10890], "characters": "\u2A8A" }, + "⪈": { "codepoints": [10888], "characters": "\u2A88" }, + "⪈": { "codepoints": [10888], "characters": "\u2A88" }, + "≩": { "codepoints": [8809], "characters": "\u2269" }, + "⋧": { "codepoints": [8935], "characters": "\u22E7" }, + "𝕘": { "codepoints": [120152], "characters": "\uD835\uDD58" }, + "`": { "codepoints": [96], "characters": "\u0060" }, + "ℊ": { "codepoints": [8458], "characters": "\u210A" }, + "≳": { "codepoints": [8819], "characters": "\u2273" }, + "⪎": { "codepoints": [10894], "characters": "\u2A8E" }, + "⪐": { "codepoints": [10896], "characters": "\u2A90" }, + ">": { "codepoints": [62], "characters": "\u003E" }, + ">": { "codepoints": [62], "characters": "\u003E" }, + "⪧": { "codepoints": [10919], "characters": "\u2AA7" }, + "⩺": { "codepoints": [10874], "characters": "\u2A7A" }, + "⋗": { "codepoints": [8919], "characters": "\u22D7" }, + "⦕": { "codepoints": [10645], "characters": "\u2995" }, + "⩼": { "codepoints": [10876], "characters": "\u2A7C" }, + "⪆": { "codepoints": [10886], "characters": "\u2A86" }, + "⥸": { "codepoints": [10616], "characters": "\u2978" }, + "⋗": { "codepoints": [8919], "characters": "\u22D7" }, + "⋛": { "codepoints": [8923], "characters": "\u22DB" }, + "⪌": { "codepoints": [10892], "characters": "\u2A8C" }, + "≷": { "codepoints": [8823], "characters": "\u2277" }, + "≳": { "codepoints": [8819], "characters": "\u2273" }, + "≩︀": { "codepoints": [8809, 65024], "characters": "\u2269\uFE00" }, + "≩︀": { "codepoints": [8809, 65024], "characters": "\u2269\uFE00" }, + "⇔": { "codepoints": [8660], "characters": "\u21D4" }, + " ": { "codepoints": [8202], "characters": "\u200A" }, + "½": { "codepoints": [189], "characters": "\u00BD" }, + "ℋ": { "codepoints": [8459], "characters": "\u210B" }, + "ъ": { "codepoints": [1098], "characters": "\u044A" }, + "↔": { "codepoints": [8596], "characters": "\u2194" }, + "⥈": { "codepoints": [10568], "characters": "\u2948" }, + "↭": { "codepoints": [8621], "characters": "\u21AD" }, + "ℏ": { "codepoints": [8463], "characters": "\u210F" }, + "ĥ": { "codepoints": [293], "characters": "\u0125" }, + "♥": { "codepoints": [9829], "characters": "\u2665" }, + "♥": { "codepoints": [9829], "characters": "\u2665" }, + "…": { "codepoints": [8230], "characters": "\u2026" }, + "⊹": { "codepoints": [8889], "characters": "\u22B9" }, + "𝔥": { "codepoints": [120101], "characters": "\uD835\uDD25" }, + "⤥": { "codepoints": [10533], "characters": "\u2925" }, + "⤦": { "codepoints": [10534], "characters": "\u2926" }, + "⇿": { "codepoints": [8703], "characters": "\u21FF" }, + "∻": { "codepoints": [8763], "characters": "\u223B" }, + "↩": { "codepoints": [8617], "characters": "\u21A9" }, + "↪": { "codepoints": [8618], "characters": "\u21AA" }, + "𝕙": { "codepoints": [120153], "characters": "\uD835\uDD59" }, + "―": { "codepoints": [8213], "characters": "\u2015" }, + "𝒽": { "codepoints": [119997], "characters": "\uD835\uDCBD" }, + "ℏ": { "codepoints": [8463], "characters": "\u210F" }, + "ħ": { "codepoints": [295], "characters": "\u0127" }, + "⁃": { "codepoints": [8259], "characters": "\u2043" }, + "‐": { "codepoints": [8208], "characters": "\u2010" }, + "í": { "codepoints": [237], "characters": "\u00ED" }, + "í": { "codepoints": [237], "characters": "\u00ED" }, + "⁣": { "codepoints": [8291], "characters": "\u2063" }, + "î": { "codepoints": [238], "characters": "\u00EE" }, + "î": { "codepoints": [238], "characters": "\u00EE" }, + "и": { "codepoints": [1080], "characters": "\u0438" }, + "е": { "codepoints": [1077], "characters": "\u0435" }, + "¡": { "codepoints": [161], "characters": "\u00A1" }, + "¡": { "codepoints": [161], "characters": "\u00A1" }, + "⇔": { "codepoints": [8660], "characters": "\u21D4" }, + "𝔦": { "codepoints": [120102], "characters": "\uD835\uDD26" }, + "ì": { "codepoints": [236], "characters": "\u00EC" }, + "ì": { "codepoints": [236], "characters": "\u00EC" }, + "ⅈ": { "codepoints": [8520], "characters": "\u2148" }, + "⨌": { "codepoints": [10764], "characters": "\u2A0C" }, + "∭": { "codepoints": [8749], "characters": "\u222D" }, + "⧜": { "codepoints": [10716], "characters": "\u29DC" }, + "℩": { "codepoints": [8489], "characters": "\u2129" }, + "ij": { "codepoints": [307], "characters": "\u0133" }, + "ī": { "codepoints": [299], "characters": "\u012B" }, + "ℑ": { "codepoints": [8465], "characters": "\u2111" }, + "ℐ": { "codepoints": [8464], "characters": "\u2110" }, + "ℑ": { "codepoints": [8465], "characters": "\u2111" }, + "ı": { "codepoints": [305], "characters": "\u0131" }, + "⊷": { "codepoints": [8887], "characters": "\u22B7" }, + "Ƶ": { "codepoints": [437], "characters": "\u01B5" }, + "∈": { "codepoints": [8712], "characters": "\u2208" }, + "℅": { "codepoints": [8453], "characters": "\u2105" }, + "∞": { "codepoints": [8734], "characters": "\u221E" }, + "⧝": { "codepoints": [10717], "characters": "\u29DD" }, + "ı": { "codepoints": [305], "characters": "\u0131" }, + "∫": { "codepoints": [8747], "characters": "\u222B" }, + "⊺": { "codepoints": [8890], "characters": "\u22BA" }, + "ℤ": { "codepoints": [8484], "characters": "\u2124" }, + "⊺": { "codepoints": [8890], "characters": "\u22BA" }, + "⨗": { "codepoints": [10775], "characters": "\u2A17" }, + "⨼": { "codepoints": [10812], "characters": "\u2A3C" }, + "ё": { "codepoints": [1105], "characters": "\u0451" }, + "į": { "codepoints": [303], "characters": "\u012F" }, + "𝕚": { "codepoints": [120154], "characters": "\uD835\uDD5A" }, + "ι": { "codepoints": [953], "characters": "\u03B9" }, + "⨼": { "codepoints": [10812], "characters": "\u2A3C" }, + "¿": { "codepoints": [191], "characters": "\u00BF" }, + "¿": { "codepoints": [191], "characters": "\u00BF" }, + "𝒾": { "codepoints": [119998], "characters": "\uD835\uDCBE" }, + "∈": { "codepoints": [8712], "characters": "\u2208" }, + "⋹": { "codepoints": [8953], "characters": "\u22F9" }, + "⋵": { "codepoints": [8949], "characters": "\u22F5" }, + "⋴": { "codepoints": [8948], "characters": "\u22F4" }, + "⋳": { "codepoints": [8947], "characters": "\u22F3" }, + "∈": { "codepoints": [8712], "characters": "\u2208" }, + "⁢": { "codepoints": [8290], "characters": "\u2062" }, + "ĩ": { "codepoints": [297], "characters": "\u0129" }, + "і": { "codepoints": [1110], "characters": "\u0456" }, + "ï": { "codepoints": [239], "characters": "\u00EF" }, + "ï": { "codepoints": [239], "characters": "\u00EF" }, + "ĵ": { "codepoints": [309], "characters": "\u0135" }, + "й": { "codepoints": [1081], "characters": "\u0439" }, + "𝔧": { "codepoints": [120103], "characters": "\uD835\uDD27" }, + "ȷ": { "codepoints": [567], "characters": "\u0237" }, + "𝕛": { "codepoints": [120155], "characters": "\uD835\uDD5B" }, + "𝒿": { "codepoints": [119999], "characters": "\uD835\uDCBF" }, + "ј": { "codepoints": [1112], "characters": "\u0458" }, + "є": { "codepoints": [1108], "characters": "\u0454" }, + "κ": { "codepoints": [954], "characters": "\u03BA" }, + "ϰ": { "codepoints": [1008], "characters": "\u03F0" }, + "ķ": { "codepoints": [311], "characters": "\u0137" }, + "к": { "codepoints": [1082], "characters": "\u043A" }, + "𝔨": { "codepoints": [120104], "characters": "\uD835\uDD28" }, + "ĸ": { "codepoints": [312], "characters": "\u0138" }, + "х": { "codepoints": [1093], "characters": "\u0445" }, + "ќ": { "codepoints": [1116], "characters": "\u045C" }, + "𝕜": { "codepoints": [120156], "characters": "\uD835\uDD5C" }, + "𝓀": { "codepoints": [120000], "characters": "\uD835\uDCC0" }, + "⇚": { "codepoints": [8666], "characters": "\u21DA" }, + "⇐": { "codepoints": [8656], "characters": "\u21D0" }, + "⤛": { "codepoints": [10523], "characters": "\u291B" }, + "⤎": { "codepoints": [10510], "characters": "\u290E" }, + "≦": { "codepoints": [8806], "characters": "\u2266" }, + "⪋": { "codepoints": [10891], "characters": "\u2A8B" }, + "⥢": { "codepoints": [10594], "characters": "\u2962" }, + "ĺ": { "codepoints": [314], "characters": "\u013A" }, + "⦴": { "codepoints": [10676], "characters": "\u29B4" }, + "ℒ": { "codepoints": [8466], "characters": "\u2112" }, + "λ": { "codepoints": [955], "characters": "\u03BB" }, + "⟨": { "codepoints": [10216], "characters": "\u27E8" }, + "⦑": { "codepoints": [10641], "characters": "\u2991" }, + "⟨": { "codepoints": [10216], "characters": "\u27E8" }, + "⪅": { "codepoints": [10885], "characters": "\u2A85" }, + "«": { "codepoints": [171], "characters": "\u00AB" }, + "«": { "codepoints": [171], "characters": "\u00AB" }, + "←": { "codepoints": [8592], "characters": "\u2190" }, + "⇤": { "codepoints": [8676], "characters": "\u21E4" }, + "⤟": { "codepoints": [10527], "characters": "\u291F" }, + "⤝": { "codepoints": [10525], "characters": "\u291D" }, + "↩": { "codepoints": [8617], "characters": "\u21A9" }, + "↫": { "codepoints": [8619], "characters": "\u21AB" }, + "⤹": { "codepoints": [10553], "characters": "\u2939" }, + "⥳": { "codepoints": [10611], "characters": "\u2973" }, + "↢": { "codepoints": [8610], "characters": "\u21A2" }, + "⪫": { "codepoints": [10923], "characters": "\u2AAB" }, + "⤙": { "codepoints": [10521], "characters": "\u2919" }, + "⪭": { "codepoints": [10925], "characters": "\u2AAD" }, + "⪭︀": { "codepoints": [10925, 65024], "characters": "\u2AAD\uFE00" }, + "⤌": { "codepoints": [10508], "characters": "\u290C" }, + "❲": { "codepoints": [10098], "characters": "\u2772" }, + "{": { "codepoints": [123], "characters": "\u007B" }, + "[": { "codepoints": [91], "characters": "\u005B" }, + "⦋": { "codepoints": [10635], "characters": "\u298B" }, + "⦏": { "codepoints": [10639], "characters": "\u298F" }, + "⦍": { "codepoints": [10637], "characters": "\u298D" }, + "ľ": { "codepoints": [318], "characters": "\u013E" }, + "ļ": { "codepoints": [316], "characters": "\u013C" }, + "⌈": { "codepoints": [8968], "characters": "\u2308" }, + "{": { "codepoints": [123], "characters": "\u007B" }, + "л": { "codepoints": [1083], "characters": "\u043B" }, + "⤶": { "codepoints": [10550], "characters": "\u2936" }, + "“": { "codepoints": [8220], "characters": "\u201C" }, + "„": { "codepoints": [8222], "characters": "\u201E" }, + "⥧": { "codepoints": [10599], "characters": "\u2967" }, + "⥋": { "codepoints": [10571], "characters": "\u294B" }, + "↲": { "codepoints": [8626], "characters": "\u21B2" }, + "≤": { "codepoints": [8804], "characters": "\u2264" }, + "←": { "codepoints": [8592], "characters": "\u2190" }, + "↢": { "codepoints": [8610], "characters": "\u21A2" }, + "↽": { "codepoints": [8637], "characters": "\u21BD" }, + "↼": { "codepoints": [8636], "characters": "\u21BC" }, + "⇇": { "codepoints": [8647], "characters": "\u21C7" }, + "↔": { "codepoints": [8596], "characters": "\u2194" }, + "⇆": { "codepoints": [8646], "characters": "\u21C6" }, + "⇋": { "codepoints": [8651], "characters": "\u21CB" }, + "↭": { "codepoints": [8621], "characters": "\u21AD" }, + "⋋": { "codepoints": [8907], "characters": "\u22CB" }, + "⋚": { "codepoints": [8922], "characters": "\u22DA" }, + "≤": { "codepoints": [8804], "characters": "\u2264" }, + "≦": { "codepoints": [8806], "characters": "\u2266" }, + "⩽": { "codepoints": [10877], "characters": "\u2A7D" }, + "⩽": { "codepoints": [10877], "characters": "\u2A7D" }, + "⪨": { "codepoints": [10920], "characters": "\u2AA8" }, + "⩿": { "codepoints": [10879], "characters": "\u2A7F" }, + "⪁": { "codepoints": [10881], "characters": "\u2A81" }, + "⪃": { "codepoints": [10883], "characters": "\u2A83" }, + "⋚︀": { "codepoints": [8922, 65024], "characters": "\u22DA\uFE00" }, + "⪓": { "codepoints": [10899], "characters": "\u2A93" }, + "⪅": { "codepoints": [10885], "characters": "\u2A85" }, + "⋖": { "codepoints": [8918], "characters": "\u22D6" }, + "⋚": { "codepoints": [8922], "characters": "\u22DA" }, + "⪋": { "codepoints": [10891], "characters": "\u2A8B" }, + "≶": { "codepoints": [8822], "characters": "\u2276" }, + "≲": { "codepoints": [8818], "characters": "\u2272" }, + "⥼": { "codepoints": [10620], "characters": "\u297C" }, + "⌊": { "codepoints": [8970], "characters": "\u230A" }, + "𝔩": { "codepoints": [120105], "characters": "\uD835\uDD29" }, + "≶": { "codepoints": [8822], "characters": "\u2276" }, + "⪑": { "codepoints": [10897], "characters": "\u2A91" }, + "↽": { "codepoints": [8637], "characters": "\u21BD" }, + "↼": { "codepoints": [8636], "characters": "\u21BC" }, + "⥪": { "codepoints": [10602], "characters": "\u296A" }, + "▄": { "codepoints": [9604], "characters": "\u2584" }, + "љ": { "codepoints": [1113], "characters": "\u0459" }, + "≪": { "codepoints": [8810], "characters": "\u226A" }, + "⇇": { "codepoints": [8647], "characters": "\u21C7" }, + "⌞": { "codepoints": [8990], "characters": "\u231E" }, + "⥫": { "codepoints": [10603], "characters": "\u296B" }, + "◺": { "codepoints": [9722], "characters": "\u25FA" }, + "ŀ": { "codepoints": [320], "characters": "\u0140" }, + "⎰": { "codepoints": [9136], "characters": "\u23B0" }, + "⎰": { "codepoints": [9136], "characters": "\u23B0" }, + "≨": { "codepoints": [8808], "characters": "\u2268" }, + "⪉": { "codepoints": [10889], "characters": "\u2A89" }, + "⪉": { "codepoints": [10889], "characters": "\u2A89" }, + "⪇": { "codepoints": [10887], "characters": "\u2A87" }, + "⪇": { "codepoints": [10887], "characters": "\u2A87" }, + "≨": { "codepoints": [8808], "characters": "\u2268" }, + "⋦": { "codepoints": [8934], "characters": "\u22E6" }, + "⟬": { "codepoints": [10220], "characters": "\u27EC" }, + "⇽": { "codepoints": [8701], "characters": "\u21FD" }, + "⟦": { "codepoints": [10214], "characters": "\u27E6" }, + "⟵": { "codepoints": [10229], "characters": "\u27F5" }, + "⟷": { "codepoints": [10231], "characters": "\u27F7" }, + "⟼": { "codepoints": [10236], "characters": "\u27FC" }, + "⟶": { "codepoints": [10230], "characters": "\u27F6" }, + "↫": { "codepoints": [8619], "characters": "\u21AB" }, + "↬": { "codepoints": [8620], "characters": "\u21AC" }, + "⦅": { "codepoints": [10629], "characters": "\u2985" }, + "𝕝": { "codepoints": [120157], "characters": "\uD835\uDD5D" }, + "⨭": { "codepoints": [10797], "characters": "\u2A2D" }, + "⨴": { "codepoints": [10804], "characters": "\u2A34" }, + "∗": { "codepoints": [8727], "characters": "\u2217" }, + "_": { "codepoints": [95], "characters": "\u005F" }, + "◊": { "codepoints": [9674], "characters": "\u25CA" }, + "◊": { "codepoints": [9674], "characters": "\u25CA" }, + "⧫": { "codepoints": [10731], "characters": "\u29EB" }, + "(": { "codepoints": [40], "characters": "\u0028" }, + "⦓": { "codepoints": [10643], "characters": "\u2993" }, + "⇆": { "codepoints": [8646], "characters": "\u21C6" }, + "⌟": { "codepoints": [8991], "characters": "\u231F" }, + "⇋": { "codepoints": [8651], "characters": "\u21CB" }, + "⥭": { "codepoints": [10605], "characters": "\u296D" }, + "‎": { "codepoints": [8206], "characters": "\u200E" }, + "⊿": { "codepoints": [8895], "characters": "\u22BF" }, + "‹": { "codepoints": [8249], "characters": "\u2039" }, + "𝓁": { "codepoints": [120001], "characters": "\uD835\uDCC1" }, + "↰": { "codepoints": [8624], "characters": "\u21B0" }, + "≲": { "codepoints": [8818], "characters": "\u2272" }, + "⪍": { "codepoints": [10893], "characters": "\u2A8D" }, + "⪏": { "codepoints": [10895], "characters": "\u2A8F" }, + "[": { "codepoints": [91], "characters": "\u005B" }, + "‘": { "codepoints": [8216], "characters": "\u2018" }, + "‚": { "codepoints": [8218], "characters": "\u201A" }, + "ł": { "codepoints": [322], "characters": "\u0142" }, + "<": { "codepoints": [60], "characters": "\u003C" }, + "<": { "codepoints": [60], "characters": "\u003C" }, + "⪦": { "codepoints": [10918], "characters": "\u2AA6" }, + "⩹": { "codepoints": [10873], "characters": "\u2A79" }, + "⋖": { "codepoints": [8918], "characters": "\u22D6" }, + "⋋": { "codepoints": [8907], "characters": "\u22CB" }, + "⋉": { "codepoints": [8905], "characters": "\u22C9" }, + "⥶": { "codepoints": [10614], "characters": "\u2976" }, + "⩻": { "codepoints": [10875], "characters": "\u2A7B" }, + "⦖": { "codepoints": [10646], "characters": "\u2996" }, + "◃": { "codepoints": [9667], "characters": "\u25C3" }, + "⊴": { "codepoints": [8884], "characters": "\u22B4" }, + "◂": { "codepoints": [9666], "characters": "\u25C2" }, + "⥊": { "codepoints": [10570], "characters": "\u294A" }, + "⥦": { "codepoints": [10598], "characters": "\u2966" }, + "≨︀": { "codepoints": [8808, 65024], "characters": "\u2268\uFE00" }, + "≨︀": { "codepoints": [8808, 65024], "characters": "\u2268\uFE00" }, + "∺": { "codepoints": [8762], "characters": "\u223A" }, + "¯": { "codepoints": [175], "characters": "\u00AF" }, + "¯": { "codepoints": [175], "characters": "\u00AF" }, + "♂": { "codepoints": [9794], "characters": "\u2642" }, + "✠": { "codepoints": [10016], "characters": "\u2720" }, + "✠": { "codepoints": [10016], "characters": "\u2720" }, + "↦": { "codepoints": [8614], "characters": "\u21A6" }, + "↦": { "codepoints": [8614], "characters": "\u21A6" }, + "↧": { "codepoints": [8615], "characters": "\u21A7" }, + "↤": { "codepoints": [8612], "characters": "\u21A4" }, + "↥": { "codepoints": [8613], "characters": "\u21A5" }, + "▮": { "codepoints": [9646], "characters": "\u25AE" }, + "⨩": { "codepoints": [10793], "characters": "\u2A29" }, + "м": { "codepoints": [1084], "characters": "\u043C" }, + "—": { "codepoints": [8212], "characters": "\u2014" }, + "∡": { "codepoints": [8737], "characters": "\u2221" }, + "𝔪": { "codepoints": [120106], "characters": "\uD835\uDD2A" }, + "℧": { "codepoints": [8487], "characters": "\u2127" }, + "µ": { "codepoints": [181], "characters": "\u00B5" }, + "µ": { "codepoints": [181], "characters": "\u00B5" }, + "∣": { "codepoints": [8739], "characters": "\u2223" }, + "*": { "codepoints": [42], "characters": "\u002A" }, + "⫰": { "codepoints": [10992], "characters": "\u2AF0" }, + "·": { "codepoints": [183], "characters": "\u00B7" }, + "·": { "codepoints": [183], "characters": "\u00B7" }, + "−": { "codepoints": [8722], "characters": "\u2212" }, + "⊟": { "codepoints": [8863], "characters": "\u229F" }, + "∸": { "codepoints": [8760], "characters": "\u2238" }, + "⨪": { "codepoints": [10794], "characters": "\u2A2A" }, + "⫛": { "codepoints": [10971], "characters": "\u2ADB" }, + "…": { "codepoints": [8230], "characters": "\u2026" }, + "∓": { "codepoints": [8723], "characters": "\u2213" }, + "⊧": { "codepoints": [8871], "characters": "\u22A7" }, + "𝕞": { "codepoints": [120158], "characters": "\uD835\uDD5E" }, + "∓": { "codepoints": [8723], "characters": "\u2213" }, + "𝓂": { "codepoints": [120002], "characters": "\uD835\uDCC2" }, + "∾": { "codepoints": [8766], "characters": "\u223E" }, + "μ": { "codepoints": [956], "characters": "\u03BC" }, + "⊸": { "codepoints": [8888], "characters": "\u22B8" }, + "⊸": { "codepoints": [8888], "characters": "\u22B8" }, + "⋙̸": { "codepoints": [8921, 824], "characters": "\u22D9\u0338" }, + "≫⃒": { "codepoints": [8811, 8402], "characters": "\u226B\u20D2" }, + "≫̸": { "codepoints": [8811, 824], "characters": "\u226B\u0338" }, + "⇍": { "codepoints": [8653], "characters": "\u21CD" }, + "⇎": { "codepoints": [8654], "characters": "\u21CE" }, + "⋘̸": { "codepoints": [8920, 824], "characters": "\u22D8\u0338" }, + "≪⃒": { "codepoints": [8810, 8402], "characters": "\u226A\u20D2" }, + "≪̸": { "codepoints": [8810, 824], "characters": "\u226A\u0338" }, + "⇏": { "codepoints": [8655], "characters": "\u21CF" }, + "⊯": { "codepoints": [8879], "characters": "\u22AF" }, + "⊮": { "codepoints": [8878], "characters": "\u22AE" }, + "∇": { "codepoints": [8711], "characters": "\u2207" }, + "ń": { "codepoints": [324], "characters": "\u0144" }, + "∠⃒": { "codepoints": [8736, 8402], "characters": "\u2220\u20D2" }, + "≉": { "codepoints": [8777], "characters": "\u2249" }, + "⩰̸": { "codepoints": [10864, 824], "characters": "\u2A70\u0338" }, + "≋̸": { "codepoints": [8779, 824], "characters": "\u224B\u0338" }, + "ʼn": { "codepoints": [329], "characters": "\u0149" }, + "≉": { "codepoints": [8777], "characters": "\u2249" }, + "♮": { "codepoints": [9838], "characters": "\u266E" }, + "♮": { "codepoints": [9838], "characters": "\u266E" }, + "ℕ": { "codepoints": [8469], "characters": "\u2115" }, + " ": { "codepoints": [160], "characters": "\u00A0" }, + " ": { "codepoints": [160], "characters": "\u00A0" }, + "≎̸": { "codepoints": [8782, 824], "characters": "\u224E\u0338" }, + "≏̸": { "codepoints": [8783, 824], "characters": "\u224F\u0338" }, + "⩃": { "codepoints": [10819], "characters": "\u2A43" }, + "ň": { "codepoints": [328], "characters": "\u0148" }, + "ņ": { "codepoints": [326], "characters": "\u0146" }, + "≇": { "codepoints": [8775], "characters": "\u2247" }, + "⩭̸": { "codepoints": [10861, 824], "characters": "\u2A6D\u0338" }, + "⩂": { "codepoints": [10818], "characters": "\u2A42" }, + "н": { "codepoints": [1085], "characters": "\u043D" }, + "–": { "codepoints": [8211], "characters": "\u2013" }, + "≠": { "codepoints": [8800], "characters": "\u2260" }, + "⇗": { "codepoints": [8663], "characters": "\u21D7" }, + "⤤": { "codepoints": [10532], "characters": "\u2924" }, + "↗": { "codepoints": [8599], "characters": "\u2197" }, + "↗": { "codepoints": [8599], "characters": "\u2197" }, + "≐̸": { "codepoints": [8784, 824], "characters": "\u2250\u0338" }, + "≢": { "codepoints": [8802], "characters": "\u2262" }, + "⤨": { "codepoints": [10536], "characters": "\u2928" }, + "≂̸": { "codepoints": [8770, 824], "characters": "\u2242\u0338" }, + "∄": { "codepoints": [8708], "characters": "\u2204" }, + "∄": { "codepoints": [8708], "characters": "\u2204" }, + "𝔫": { "codepoints": [120107], "characters": "\uD835\uDD2B" }, + "≧̸": { "codepoints": [8807, 824], "characters": "\u2267\u0338" }, + "≱": { "codepoints": [8817], "characters": "\u2271" }, + "≱": { "codepoints": [8817], "characters": "\u2271" }, + "≧̸": { "codepoints": [8807, 824], "characters": "\u2267\u0338" }, + "⩾̸": { "codepoints": [10878, 824], "characters": "\u2A7E\u0338" }, + "⩾̸": { "codepoints": [10878, 824], "characters": "\u2A7E\u0338" }, + "≵": { "codepoints": [8821], "characters": "\u2275" }, + "≯": { "codepoints": [8815], "characters": "\u226F" }, + "≯": { "codepoints": [8815], "characters": "\u226F" }, + "⇎": { "codepoints": [8654], "characters": "\u21CE" }, + "↮": { "codepoints": [8622], "characters": "\u21AE" }, + "⫲": { "codepoints": [10994], "characters": "\u2AF2" }, + "∋": { "codepoints": [8715], "characters": "\u220B" }, + "⋼": { "codepoints": [8956], "characters": "\u22FC" }, + "⋺": { "codepoints": [8954], "characters": "\u22FA" }, + "∋": { "codepoints": [8715], "characters": "\u220B" }, + "њ": { "codepoints": [1114], "characters": "\u045A" }, + "⇍": { "codepoints": [8653], "characters": "\u21CD" }, + "≦̸": { "codepoints": [8806, 824], "characters": "\u2266\u0338" }, + "↚": { "codepoints": [8602], "characters": "\u219A" }, + "‥": { "codepoints": [8229], "characters": "\u2025" }, + "≰": { "codepoints": [8816], "characters": "\u2270" }, + "↚": { "codepoints": [8602], "characters": "\u219A" }, + "↮": { "codepoints": [8622], "characters": "\u21AE" }, + "≰": { "codepoints": [8816], "characters": "\u2270" }, + "≦̸": { "codepoints": [8806, 824], "characters": "\u2266\u0338" }, + "⩽̸": { "codepoints": [10877, 824], "characters": "\u2A7D\u0338" }, + "⩽̸": { "codepoints": [10877, 824], "characters": "\u2A7D\u0338" }, + "≮": { "codepoints": [8814], "characters": "\u226E" }, + "≴": { "codepoints": [8820], "characters": "\u2274" }, + "≮": { "codepoints": [8814], "characters": "\u226E" }, + "⋪": { "codepoints": [8938], "characters": "\u22EA" }, + "⋬": { "codepoints": [8940], "characters": "\u22EC" }, + "∤": { "codepoints": [8740], "characters": "\u2224" }, + "𝕟": { "codepoints": [120159], "characters": "\uD835\uDD5F" }, + "¬": { "codepoints": [172], "characters": "\u00AC" }, + "¬": { "codepoints": [172], "characters": "\u00AC" }, + "∉": { "codepoints": [8713], "characters": "\u2209" }, + "⋹̸": { "codepoints": [8953, 824], "characters": "\u22F9\u0338" }, + "⋵̸": { "codepoints": [8949, 824], "characters": "\u22F5\u0338" }, + "∉": { "codepoints": [8713], "characters": "\u2209" }, + "⋷": { "codepoints": [8951], "characters": "\u22F7" }, + "⋶": { "codepoints": [8950], "characters": "\u22F6" }, + "∌": { "codepoints": [8716], "characters": "\u220C" }, + "∌": { "codepoints": [8716], "characters": "\u220C" }, + "⋾": { "codepoints": [8958], "characters": "\u22FE" }, + "⋽": { "codepoints": [8957], "characters": "\u22FD" }, + "∦": { "codepoints": [8742], "characters": "\u2226" }, + "∦": { "codepoints": [8742], "characters": "\u2226" }, + "⫽⃥": { "codepoints": [11005, 8421], "characters": "\u2AFD\u20E5" }, + "∂̸": { "codepoints": [8706, 824], "characters": "\u2202\u0338" }, + "⨔": { "codepoints": [10772], "characters": "\u2A14" }, + "⊀": { "codepoints": [8832], "characters": "\u2280" }, + "⋠": { "codepoints": [8928], "characters": "\u22E0" }, + "⪯̸": { "codepoints": [10927, 824], "characters": "\u2AAF\u0338" }, + "⊀": { "codepoints": [8832], "characters": "\u2280" }, + "⪯̸": { "codepoints": [10927, 824], "characters": "\u2AAF\u0338" }, + "⇏": { "codepoints": [8655], "characters": "\u21CF" }, + "↛": { "codepoints": [8603], "characters": "\u219B" }, + "⤳̸": { "codepoints": [10547, 824], "characters": "\u2933\u0338" }, + "↝̸": { "codepoints": [8605, 824], "characters": "\u219D\u0338" }, + "↛": { "codepoints": [8603], "characters": "\u219B" }, + "⋫": { "codepoints": [8939], "characters": "\u22EB" }, + "⋭": { "codepoints": [8941], "characters": "\u22ED" }, + "⊁": { "codepoints": [8833], "characters": "\u2281" }, + "⋡": { "codepoints": [8929], "characters": "\u22E1" }, + "⪰̸": { "codepoints": [10928, 824], "characters": "\u2AB0\u0338" }, + "𝓃": { "codepoints": [120003], "characters": "\uD835\uDCC3" }, + "∤": { "codepoints": [8740], "characters": "\u2224" }, + "∦": { "codepoints": [8742], "characters": "\u2226" }, + "≁": { "codepoints": [8769], "characters": "\u2241" }, + "≄": { "codepoints": [8772], "characters": "\u2244" }, + "≄": { "codepoints": [8772], "characters": "\u2244" }, + "∤": { "codepoints": [8740], "characters": "\u2224" }, + "∦": { "codepoints": [8742], "characters": "\u2226" }, + "⋢": { "codepoints": [8930], "characters": "\u22E2" }, + "⋣": { "codepoints": [8931], "characters": "\u22E3" }, + "⊄": { "codepoints": [8836], "characters": "\u2284" }, + "⫅̸": { "codepoints": [10949, 824], "characters": "\u2AC5\u0338" }, + "⊈": { "codepoints": [8840], "characters": "\u2288" }, + "⊂⃒": { "codepoints": [8834, 8402], "characters": "\u2282\u20D2" }, + "⊈": { "codepoints": [8840], "characters": "\u2288" }, + "⫅̸": { "codepoints": [10949, 824], "characters": "\u2AC5\u0338" }, + "⊁": { "codepoints": [8833], "characters": "\u2281" }, + "⪰̸": { "codepoints": [10928, 824], "characters": "\u2AB0\u0338" }, + "⊅": { "codepoints": [8837], "characters": "\u2285" }, + "⫆̸": { "codepoints": [10950, 824], "characters": "\u2AC6\u0338" }, + "⊉": { "codepoints": [8841], "characters": "\u2289" }, + "⊃⃒": { "codepoints": [8835, 8402], "characters": "\u2283\u20D2" }, + "⊉": { "codepoints": [8841], "characters": "\u2289" }, + "⫆̸": { "codepoints": [10950, 824], "characters": "\u2AC6\u0338" }, + "≹": { "codepoints": [8825], "characters": "\u2279" }, + "ñ": { "codepoints": [241], "characters": "\u00F1" }, + "ñ": { "codepoints": [241], "characters": "\u00F1" }, + "≸": { "codepoints": [8824], "characters": "\u2278" }, + "⋪": { "codepoints": [8938], "characters": "\u22EA" }, + "⋬": { "codepoints": [8940], "characters": "\u22EC" }, + "⋫": { "codepoints": [8939], "characters": "\u22EB" }, + "⋭": { "codepoints": [8941], "characters": "\u22ED" }, + "ν": { "codepoints": [957], "characters": "\u03BD" }, + "#": { "codepoints": [35], "characters": "\u0023" }, + "№": { "codepoints": [8470], "characters": "\u2116" }, + " ": { "codepoints": [8199], "characters": "\u2007" }, + "⊭": { "codepoints": [8877], "characters": "\u22AD" }, + "⤄": { "codepoints": [10500], "characters": "\u2904" }, + "≍⃒": { "codepoints": [8781, 8402], "characters": "\u224D\u20D2" }, + "⊬": { "codepoints": [8876], "characters": "\u22AC" }, + "≥⃒": { "codepoints": [8805, 8402], "characters": "\u2265\u20D2" }, + ">⃒": { "codepoints": [62, 8402], "characters": "\u003E\u20D2" }, + "⧞": { "codepoints": [10718], "characters": "\u29DE" }, + "⤂": { "codepoints": [10498], "characters": "\u2902" }, + "≤⃒": { "codepoints": [8804, 8402], "characters": "\u2264\u20D2" }, + "<⃒": { "codepoints": [60, 8402], "characters": "\u003C\u20D2" }, + "⊴⃒": { "codepoints": [8884, 8402], "characters": "\u22B4\u20D2" }, + "⤃": { "codepoints": [10499], "characters": "\u2903" }, + "⊵⃒": { "codepoints": [8885, 8402], "characters": "\u22B5\u20D2" }, + "∼⃒": { "codepoints": [8764, 8402], "characters": "\u223C\u20D2" }, + "⇖": { "codepoints": [8662], "characters": "\u21D6" }, + "⤣": { "codepoints": [10531], "characters": "\u2923" }, + "↖": { "codepoints": [8598], "characters": "\u2196" }, + "↖": { "codepoints": [8598], "characters": "\u2196" }, + "⤧": { "codepoints": [10535], "characters": "\u2927" }, + "Ⓢ": { "codepoints": [9416], "characters": "\u24C8" }, + "ó": { "codepoints": [243], "characters": "\u00F3" }, + "ó": { "codepoints": [243], "characters": "\u00F3" }, + "⊛": { "codepoints": [8859], "characters": "\u229B" }, + "⊚": { "codepoints": [8858], "characters": "\u229A" }, + "ô": { "codepoints": [244], "characters": "\u00F4" }, + "ô": { "codepoints": [244], "characters": "\u00F4" }, + "о": { "codepoints": [1086], "characters": "\u043E" }, + "⊝": { "codepoints": [8861], "characters": "\u229D" }, + "ő": { "codepoints": [337], "characters": "\u0151" }, + "⨸": { "codepoints": [10808], "characters": "\u2A38" }, + "⊙": { "codepoints": [8857], "characters": "\u2299" }, + "⦼": { "codepoints": [10684], "characters": "\u29BC" }, + "œ": { "codepoints": [339], "characters": "\u0153" }, + "⦿": { "codepoints": [10687], "characters": "\u29BF" }, + "𝔬": { "codepoints": [120108], "characters": "\uD835\uDD2C" }, + "˛": { "codepoints": [731], "characters": "\u02DB" }, + "ò": { "codepoints": [242], "characters": "\u00F2" }, + "ò": { "codepoints": [242], "characters": "\u00F2" }, + "⧁": { "codepoints": [10689], "characters": "\u29C1" }, + "⦵": { "codepoints": [10677], "characters": "\u29B5" }, + "Ω": { "codepoints": [937], "characters": "\u03A9" }, + "∮": { "codepoints": [8750], "characters": "\u222E" }, + "↺": { "codepoints": [8634], "characters": "\u21BA" }, + "⦾": { "codepoints": [10686], "characters": "\u29BE" }, + "⦻": { "codepoints": [10683], "characters": "\u29BB" }, + "‾": { "codepoints": [8254], "characters": "\u203E" }, + "⧀": { "codepoints": [10688], "characters": "\u29C0" }, + "ō": { "codepoints": [333], "characters": "\u014D" }, + "ω": { "codepoints": [969], "characters": "\u03C9" }, + "ο": { "codepoints": [959], "characters": "\u03BF" }, + "⦶": { "codepoints": [10678], "characters": "\u29B6" }, + "⊖": { "codepoints": [8854], "characters": "\u2296" }, + "𝕠": { "codepoints": [120160], "characters": "\uD835\uDD60" }, + "⦷": { "codepoints": [10679], "characters": "\u29B7" }, + "⦹": { "codepoints": [10681], "characters": "\u29B9" }, + "⊕": { "codepoints": [8853], "characters": "\u2295" }, + "∨": { "codepoints": [8744], "characters": "\u2228" }, + "↻": { "codepoints": [8635], "characters": "\u21BB" }, + "⩝": { "codepoints": [10845], "characters": "\u2A5D" }, + "ℴ": { "codepoints": [8500], "characters": "\u2134" }, + "ℴ": { "codepoints": [8500], "characters": "\u2134" }, + "ª": { "codepoints": [170], "characters": "\u00AA" }, + "ª": { "codepoints": [170], "characters": "\u00AA" }, + "º": { "codepoints": [186], "characters": "\u00BA" }, + "º": { "codepoints": [186], "characters": "\u00BA" }, + "⊶": { "codepoints": [8886], "characters": "\u22B6" }, + "⩖": { "codepoints": [10838], "characters": "\u2A56" }, + "⩗": { "codepoints": [10839], "characters": "\u2A57" }, + "⩛": { "codepoints": [10843], "characters": "\u2A5B" }, + "ℴ": { "codepoints": [8500], "characters": "\u2134" }, + "ø": { "codepoints": [248], "characters": "\u00F8" }, + "ø": { "codepoints": [248], "characters": "\u00F8" }, + "⊘": { "codepoints": [8856], "characters": "\u2298" }, + "õ": { "codepoints": [245], "characters": "\u00F5" }, + "õ": { "codepoints": [245], "characters": "\u00F5" }, + "⊗": { "codepoints": [8855], "characters": "\u2297" }, + "⨶": { "codepoints": [10806], "characters": "\u2A36" }, + "ö": { "codepoints": [246], "characters": "\u00F6" }, + "ö": { "codepoints": [246], "characters": "\u00F6" }, + "⌽": { "codepoints": [9021], "characters": "\u233D" }, + "∥": { "codepoints": [8741], "characters": "\u2225" }, + "¶": { "codepoints": [182], "characters": "\u00B6" }, + "¶": { "codepoints": [182], "characters": "\u00B6" }, + "∥": { "codepoints": [8741], "characters": "\u2225" }, + "⫳": { "codepoints": [10995], "characters": "\u2AF3" }, + "⫽": { "codepoints": [11005], "characters": "\u2AFD" }, + "∂": { "codepoints": [8706], "characters": "\u2202" }, + "п": { "codepoints": [1087], "characters": "\u043F" }, + "%": { "codepoints": [37], "characters": "\u0025" }, + ".": { "codepoints": [46], "characters": "\u002E" }, + "‰": { "codepoints": [8240], "characters": "\u2030" }, + "⊥": { "codepoints": [8869], "characters": "\u22A5" }, + "‱": { "codepoints": [8241], "characters": "\u2031" }, + "𝔭": { "codepoints": [120109], "characters": "\uD835\uDD2D" }, + "φ": { "codepoints": [966], "characters": "\u03C6" }, + "ϕ": { "codepoints": [981], "characters": "\u03D5" }, + "ℳ": { "codepoints": [8499], "characters": "\u2133" }, + "☎": { "codepoints": [9742], "characters": "\u260E" }, + "π": { "codepoints": [960], "characters": "\u03C0" }, + "⋔": { "codepoints": [8916], "characters": "\u22D4" }, + "ϖ": { "codepoints": [982], "characters": "\u03D6" }, + "ℏ": { "codepoints": [8463], "characters": "\u210F" }, + "ℎ": { "codepoints": [8462], "characters": "\u210E" }, + "ℏ": { "codepoints": [8463], "characters": "\u210F" }, + "+": { "codepoints": [43], "characters": "\u002B" }, + "⨣": { "codepoints": [10787], "characters": "\u2A23" }, + "⊞": { "codepoints": [8862], "characters": "\u229E" }, + "⨢": { "codepoints": [10786], "characters": "\u2A22" }, + "∔": { "codepoints": [8724], "characters": "\u2214" }, + "⨥": { "codepoints": [10789], "characters": "\u2A25" }, + "⩲": { "codepoints": [10866], "characters": "\u2A72" }, + "±": { "codepoints": [177], "characters": "\u00B1" }, + "±": { "codepoints": [177], "characters": "\u00B1" }, + "⨦": { "codepoints": [10790], "characters": "\u2A26" }, + "⨧": { "codepoints": [10791], "characters": "\u2A27" }, + "±": { "codepoints": [177], "characters": "\u00B1" }, + "⨕": { "codepoints": [10773], "characters": "\u2A15" }, + "𝕡": { "codepoints": [120161], "characters": "\uD835\uDD61" }, + "£": { "codepoints": [163], "characters": "\u00A3" }, + "£": { "codepoints": [163], "characters": "\u00A3" }, + "≺": { "codepoints": [8826], "characters": "\u227A" }, + "⪳": { "codepoints": [10931], "characters": "\u2AB3" }, + "⪷": { "codepoints": [10935], "characters": "\u2AB7" }, + "≼": { "codepoints": [8828], "characters": "\u227C" }, + "⪯": { "codepoints": [10927], "characters": "\u2AAF" }, + "≺": { "codepoints": [8826], "characters": "\u227A" }, + "⪷": { "codepoints": [10935], "characters": "\u2AB7" }, + "≼": { "codepoints": [8828], "characters": "\u227C" }, + "⪯": { "codepoints": [10927], "characters": "\u2AAF" }, + "⪹": { "codepoints": [10937], "characters": "\u2AB9" }, + "⪵": { "codepoints": [10933], "characters": "\u2AB5" }, + "⋨": { "codepoints": [8936], "characters": "\u22E8" }, + "≾": { "codepoints": [8830], "characters": "\u227E" }, + "′": { "codepoints": [8242], "characters": "\u2032" }, + "ℙ": { "codepoints": [8473], "characters": "\u2119" }, + "⪵": { "codepoints": [10933], "characters": "\u2AB5" }, + "⪹": { "codepoints": [10937], "characters": "\u2AB9" }, + "⋨": { "codepoints": [8936], "characters": "\u22E8" }, + "∏": { "codepoints": [8719], "characters": "\u220F" }, + "⌮": { "codepoints": [9006], "characters": "\u232E" }, + "⌒": { "codepoints": [8978], "characters": "\u2312" }, + "⌓": { "codepoints": [8979], "characters": "\u2313" }, + "∝": { "codepoints": [8733], "characters": "\u221D" }, + "∝": { "codepoints": [8733], "characters": "\u221D" }, + "≾": { "codepoints": [8830], "characters": "\u227E" }, + "⊰": { "codepoints": [8880], "characters": "\u22B0" }, + "𝓅": { "codepoints": [120005], "characters": "\uD835\uDCC5" }, + "ψ": { "codepoints": [968], "characters": "\u03C8" }, + " ": { "codepoints": [8200], "characters": "\u2008" }, + "𝔮": { "codepoints": [120110], "characters": "\uD835\uDD2E" }, + "⨌": { "codepoints": [10764], "characters": "\u2A0C" }, + "𝕢": { "codepoints": [120162], "characters": "\uD835\uDD62" }, + "⁗": { "codepoints": [8279], "characters": "\u2057" }, + "𝓆": { "codepoints": [120006], "characters": "\uD835\uDCC6" }, + "ℍ": { "codepoints": [8461], "characters": "\u210D" }, + "⨖": { "codepoints": [10774], "characters": "\u2A16" }, + "?": { "codepoints": [63], "characters": "\u003F" }, + "≟": { "codepoints": [8799], "characters": "\u225F" }, + """: { "codepoints": [34], "characters": "\u0022" }, + """: { "codepoints": [34], "characters": "\u0022" }, + "⇛": { "codepoints": [8667], "characters": "\u21DB" }, + "⇒": { "codepoints": [8658], "characters": "\u21D2" }, + "⤜": { "codepoints": [10524], "characters": "\u291C" }, + "⤏": { "codepoints": [10511], "characters": "\u290F" }, + "⥤": { "codepoints": [10596], "characters": "\u2964" }, + "∽̱": { "codepoints": [8765, 817], "characters": "\u223D\u0331" }, + "ŕ": { "codepoints": [341], "characters": "\u0155" }, + "√": { "codepoints": [8730], "characters": "\u221A" }, + "⦳": { "codepoints": [10675], "characters": "\u29B3" }, + "⟩": { "codepoints": [10217], "characters": "\u27E9" }, + "⦒": { "codepoints": [10642], "characters": "\u2992" }, + "⦥": { "codepoints": [10661], "characters": "\u29A5" }, + "⟩": { "codepoints": [10217], "characters": "\u27E9" }, + "»": { "codepoints": [187], "characters": "\u00BB" }, + "»": { "codepoints": [187], "characters": "\u00BB" }, + "→": { "codepoints": [8594], "characters": "\u2192" }, + "⥵": { "codepoints": [10613], "characters": "\u2975" }, + "⇥": { "codepoints": [8677], "characters": "\u21E5" }, + "⤠": { "codepoints": [10528], "characters": "\u2920" }, + "⤳": { "codepoints": [10547], "characters": "\u2933" }, + "⤞": { "codepoints": [10526], "characters": "\u291E" }, + "↪": { "codepoints": [8618], "characters": "\u21AA" }, + "↬": { "codepoints": [8620], "characters": "\u21AC" }, + "⥅": { "codepoints": [10565], "characters": "\u2945" }, + "⥴": { "codepoints": [10612], "characters": "\u2974" }, + "↣": { "codepoints": [8611], "characters": "\u21A3" }, + "↝": { "codepoints": [8605], "characters": "\u219D" }, + "⤚": { "codepoints": [10522], "characters": "\u291A" }, + "∶": { "codepoints": [8758], "characters": "\u2236" }, + "ℚ": { "codepoints": [8474], "characters": "\u211A" }, + "⤍": { "codepoints": [10509], "characters": "\u290D" }, + "❳": { "codepoints": [10099], "characters": "\u2773" }, + "}": { "codepoints": [125], "characters": "\u007D" }, + "]": { "codepoints": [93], "characters": "\u005D" }, + "⦌": { "codepoints": [10636], "characters": "\u298C" }, + "⦎": { "codepoints": [10638], "characters": "\u298E" }, + "⦐": { "codepoints": [10640], "characters": "\u2990" }, + "ř": { "codepoints": [345], "characters": "\u0159" }, + "ŗ": { "codepoints": [343], "characters": "\u0157" }, + "⌉": { "codepoints": [8969], "characters": "\u2309" }, + "}": { "codepoints": [125], "characters": "\u007D" }, + "р": { "codepoints": [1088], "characters": "\u0440" }, + "⤷": { "codepoints": [10551], "characters": "\u2937" }, + "⥩": { "codepoints": [10601], "characters": "\u2969" }, + "”": { "codepoints": [8221], "characters": "\u201D" }, + "”": { "codepoints": [8221], "characters": "\u201D" }, + "↳": { "codepoints": [8627], "characters": "\u21B3" }, + "ℜ": { "codepoints": [8476], "characters": "\u211C" }, + "ℛ": { "codepoints": [8475], "characters": "\u211B" }, + "ℜ": { "codepoints": [8476], "characters": "\u211C" }, + "ℝ": { "codepoints": [8477], "characters": "\u211D" }, + "▭": { "codepoints": [9645], "characters": "\u25AD" }, + "®": { "codepoints": [174], "characters": "\u00AE" }, + "®": { "codepoints": [174], "characters": "\u00AE" }, + "⥽": { "codepoints": [10621], "characters": "\u297D" }, + "⌋": { "codepoints": [8971], "characters": "\u230B" }, + "𝔯": { "codepoints": [120111], "characters": "\uD835\uDD2F" }, + "⇁": { "codepoints": [8641], "characters": "\u21C1" }, + "⇀": { "codepoints": [8640], "characters": "\u21C0" }, + "⥬": { "codepoints": [10604], "characters": "\u296C" }, + "ρ": { "codepoints": [961], "characters": "\u03C1" }, + "ϱ": { "codepoints": [1009], "characters": "\u03F1" }, + "→": { "codepoints": [8594], "characters": "\u2192" }, + "↣": { "codepoints": [8611], "characters": "\u21A3" }, + "⇁": { "codepoints": [8641], "characters": "\u21C1" }, + "⇀": { "codepoints": [8640], "characters": "\u21C0" }, + "⇄": { "codepoints": [8644], "characters": "\u21C4" }, + "⇌": { "codepoints": [8652], "characters": "\u21CC" }, + "⇉": { "codepoints": [8649], "characters": "\u21C9" }, + "↝": { "codepoints": [8605], "characters": "\u219D" }, + "⋌": { "codepoints": [8908], "characters": "\u22CC" }, + "˚": { "codepoints": [730], "characters": "\u02DA" }, + "≓": { "codepoints": [8787], "characters": "\u2253" }, + "⇄": { "codepoints": [8644], "characters": "\u21C4" }, + "⇌": { "codepoints": [8652], "characters": "\u21CC" }, + "‏": { "codepoints": [8207], "characters": "\u200F" }, + "⎱": { "codepoints": [9137], "characters": "\u23B1" }, + "⎱": { "codepoints": [9137], "characters": "\u23B1" }, + "⫮": { "codepoints": [10990], "characters": "\u2AEE" }, + "⟭": { "codepoints": [10221], "characters": "\u27ED" }, + "⇾": { "codepoints": [8702], "characters": "\u21FE" }, + "⟧": { "codepoints": [10215], "characters": "\u27E7" }, + "⦆": { "codepoints": [10630], "characters": "\u2986" }, + "𝕣": { "codepoints": [120163], "characters": "\uD835\uDD63" }, + "⨮": { "codepoints": [10798], "characters": "\u2A2E" }, + "⨵": { "codepoints": [10805], "characters": "\u2A35" }, + ")": { "codepoints": [41], "characters": "\u0029" }, + "⦔": { "codepoints": [10644], "characters": "\u2994" }, + "⨒": { "codepoints": [10770], "characters": "\u2A12" }, + "⇉": { "codepoints": [8649], "characters": "\u21C9" }, + "›": { "codepoints": [8250], "characters": "\u203A" }, + "𝓇": { "codepoints": [120007], "characters": "\uD835\uDCC7" }, + "↱": { "codepoints": [8625], "characters": "\u21B1" }, + "]": { "codepoints": [93], "characters": "\u005D" }, + "’": { "codepoints": [8217], "characters": "\u2019" }, + "’": { "codepoints": [8217], "characters": "\u2019" }, + "⋌": { "codepoints": [8908], "characters": "\u22CC" }, + "⋊": { "codepoints": [8906], "characters": "\u22CA" }, + "▹": { "codepoints": [9657], "characters": "\u25B9" }, + "⊵": { "codepoints": [8885], "characters": "\u22B5" }, + "▸": { "codepoints": [9656], "characters": "\u25B8" }, + "⧎": { "codepoints": [10702], "characters": "\u29CE" }, + "⥨": { "codepoints": [10600], "characters": "\u2968" }, + "℞": { "codepoints": [8478], "characters": "\u211E" }, + "ś": { "codepoints": [347], "characters": "\u015B" }, + "‚": { "codepoints": [8218], "characters": "\u201A" }, + "≻": { "codepoints": [8827], "characters": "\u227B" }, + "⪴": { "codepoints": [10932], "characters": "\u2AB4" }, + "⪸": { "codepoints": [10936], "characters": "\u2AB8" }, + "š": { "codepoints": [353], "characters": "\u0161" }, + "≽": { "codepoints": [8829], "characters": "\u227D" }, + "⪰": { "codepoints": [10928], "characters": "\u2AB0" }, + "ş": { "codepoints": [351], "characters": "\u015F" }, + "ŝ": { "codepoints": [349], "characters": "\u015D" }, + "⪶": { "codepoints": [10934], "characters": "\u2AB6" }, + "⪺": { "codepoints": [10938], "characters": "\u2ABA" }, + "⋩": { "codepoints": [8937], "characters": "\u22E9" }, + "⨓": { "codepoints": [10771], "characters": "\u2A13" }, + "≿": { "codepoints": [8831], "characters": "\u227F" }, + "с": { "codepoints": [1089], "characters": "\u0441" }, + "⋅": { "codepoints": [8901], "characters": "\u22C5" }, + "⊡": { "codepoints": [8865], "characters": "\u22A1" }, + "⩦": { "codepoints": [10854], "characters": "\u2A66" }, + "⇘": { "codepoints": [8664], "characters": "\u21D8" }, + "⤥": { "codepoints": [10533], "characters": "\u2925" }, + "↘": { "codepoints": [8600], "characters": "\u2198" }, + "↘": { "codepoints": [8600], "characters": "\u2198" }, + "§": { "codepoints": [167], "characters": "\u00A7" }, + "§": { "codepoints": [167], "characters": "\u00A7" }, + ";": { "codepoints": [59], "characters": "\u003B" }, + "⤩": { "codepoints": [10537], "characters": "\u2929" }, + "∖": { "codepoints": [8726], "characters": "\u2216" }, + "∖": { "codepoints": [8726], "characters": "\u2216" }, + "✶": { "codepoints": [10038], "characters": "\u2736" }, + "𝔰": { "codepoints": [120112], "characters": "\uD835\uDD30" }, + "⌢": { "codepoints": [8994], "characters": "\u2322" }, + "♯": { "codepoints": [9839], "characters": "\u266F" }, + "щ": { "codepoints": [1097], "characters": "\u0449" }, + "ш": { "codepoints": [1096], "characters": "\u0448" }, + "∣": { "codepoints": [8739], "characters": "\u2223" }, + "∥": { "codepoints": [8741], "characters": "\u2225" }, + "­": { "codepoints": [173], "characters": "\u00AD" }, + "­": { "codepoints": [173], "characters": "\u00AD" }, + "σ": { "codepoints": [963], "characters": "\u03C3" }, + "ς": { "codepoints": [962], "characters": "\u03C2" }, + "ς": { "codepoints": [962], "characters": "\u03C2" }, + "∼": { "codepoints": [8764], "characters": "\u223C" }, + "⩪": { "codepoints": [10858], "characters": "\u2A6A" }, + "≃": { "codepoints": [8771], "characters": "\u2243" }, + "≃": { "codepoints": [8771], "characters": "\u2243" }, + "⪞": { "codepoints": [10910], "characters": "\u2A9E" }, + "⪠": { "codepoints": [10912], "characters": "\u2AA0" }, + "⪝": { "codepoints": [10909], "characters": "\u2A9D" }, + "⪟": { "codepoints": [10911], "characters": "\u2A9F" }, + "≆": { "codepoints": [8774], "characters": "\u2246" }, + "⨤": { "codepoints": [10788], "characters": "\u2A24" }, + "⥲": { "codepoints": [10610], "characters": "\u2972" }, + "←": { "codepoints": [8592], "characters": "\u2190" }, + "∖": { "codepoints": [8726], "characters": "\u2216" }, + "⨳": { "codepoints": [10803], "characters": "\u2A33" }, + "⧤": { "codepoints": [10724], "characters": "\u29E4" }, + "∣": { "codepoints": [8739], "characters": "\u2223" }, + "⌣": { "codepoints": [8995], "characters": "\u2323" }, + "⪪": { "codepoints": [10922], "characters": "\u2AAA" }, + "⪬": { "codepoints": [10924], "characters": "\u2AAC" }, + "⪬︀": { "codepoints": [10924, 65024], "characters": "\u2AAC\uFE00" }, + "ь": { "codepoints": [1100], "characters": "\u044C" }, + "/": { "codepoints": [47], "characters": "\u002F" }, + "⧄": { "codepoints": [10692], "characters": "\u29C4" }, + "⌿": { "codepoints": [9023], "characters": "\u233F" }, + "𝕤": { "codepoints": [120164], "characters": "\uD835\uDD64" }, + "♠": { "codepoints": [9824], "characters": "\u2660" }, + "♠": { "codepoints": [9824], "characters": "\u2660" }, + "∥": { "codepoints": [8741], "characters": "\u2225" }, + "⊓": { "codepoints": [8851], "characters": "\u2293" }, + "⊓︀": { "codepoints": [8851, 65024], "characters": "\u2293\uFE00" }, + "⊔": { "codepoints": [8852], "characters": "\u2294" }, + "⊔︀": { "codepoints": [8852, 65024], "characters": "\u2294\uFE00" }, + "⊏": { "codepoints": [8847], "characters": "\u228F" }, + "⊑": { "codepoints": [8849], "characters": "\u2291" }, + "⊏": { "codepoints": [8847], "characters": "\u228F" }, + "⊑": { "codepoints": [8849], "characters": "\u2291" }, + "⊐": { "codepoints": [8848], "characters": "\u2290" }, + "⊒": { "codepoints": [8850], "characters": "\u2292" }, + "⊐": { "codepoints": [8848], "characters": "\u2290" }, + "⊒": { "codepoints": [8850], "characters": "\u2292" }, + "□": { "codepoints": [9633], "characters": "\u25A1" }, + "□": { "codepoints": [9633], "characters": "\u25A1" }, + "▪": { "codepoints": [9642], "characters": "\u25AA" }, + "▪": { "codepoints": [9642], "characters": "\u25AA" }, + "→": { "codepoints": [8594], "characters": "\u2192" }, + "𝓈": { "codepoints": [120008], "characters": "\uD835\uDCC8" }, + "∖": { "codepoints": [8726], "characters": "\u2216" }, + "⌣": { "codepoints": [8995], "characters": "\u2323" }, + "⋆": { "codepoints": [8902], "characters": "\u22C6" }, + "☆": { "codepoints": [9734], "characters": "\u2606" }, + "★": { "codepoints": [9733], "characters": "\u2605" }, + "ϵ": { "codepoints": [1013], "characters": "\u03F5" }, + "ϕ": { "codepoints": [981], "characters": "\u03D5" }, + "¯": { "codepoints": [175], "characters": "\u00AF" }, + "⊂": { "codepoints": [8834], "characters": "\u2282" }, + "⫅": { "codepoints": [10949], "characters": "\u2AC5" }, + "⪽": { "codepoints": [10941], "characters": "\u2ABD" }, + "⊆": { "codepoints": [8838], "characters": "\u2286" }, + "⫃": { "codepoints": [10947], "characters": "\u2AC3" }, + "⫁": { "codepoints": [10945], "characters": "\u2AC1" }, + "⫋": { "codepoints": [10955], "characters": "\u2ACB" }, + "⊊": { "codepoints": [8842], "characters": "\u228A" }, + "⪿": { "codepoints": [10943], "characters": "\u2ABF" }, + "⥹": { "codepoints": [10617], "characters": "\u2979" }, + "⊂": { "codepoints": [8834], "characters": "\u2282" }, + "⊆": { "codepoints": [8838], "characters": "\u2286" }, + "⫅": { "codepoints": [10949], "characters": "\u2AC5" }, + "⊊": { "codepoints": [8842], "characters": "\u228A" }, + "⫋": { "codepoints": [10955], "characters": "\u2ACB" }, + "⫇": { "codepoints": [10951], "characters": "\u2AC7" }, + "⫕": { "codepoints": [10965], "characters": "\u2AD5" }, + "⫓": { "codepoints": [10963], "characters": "\u2AD3" }, + "≻": { "codepoints": [8827], "characters": "\u227B" }, + "⪸": { "codepoints": [10936], "characters": "\u2AB8" }, + "≽": { "codepoints": [8829], "characters": "\u227D" }, + "⪰": { "codepoints": [10928], "characters": "\u2AB0" }, + "⪺": { "codepoints": [10938], "characters": "\u2ABA" }, + "⪶": { "codepoints": [10934], "characters": "\u2AB6" }, + "⋩": { "codepoints": [8937], "characters": "\u22E9" }, + "≿": { "codepoints": [8831], "characters": "\u227F" }, + "∑": { "codepoints": [8721], "characters": "\u2211" }, + "♪": { "codepoints": [9834], "characters": "\u266A" }, + "¹": { "codepoints": [185], "characters": "\u00B9" }, + "¹": { "codepoints": [185], "characters": "\u00B9" }, + "²": { "codepoints": [178], "characters": "\u00B2" }, + "²": { "codepoints": [178], "characters": "\u00B2" }, + "³": { "codepoints": [179], "characters": "\u00B3" }, + "³": { "codepoints": [179], "characters": "\u00B3" }, + "⊃": { "codepoints": [8835], "characters": "\u2283" }, + "⫆": { "codepoints": [10950], "characters": "\u2AC6" }, + "⪾": { "codepoints": [10942], "characters": "\u2ABE" }, + "⫘": { "codepoints": [10968], "characters": "\u2AD8" }, + "⊇": { "codepoints": [8839], "characters": "\u2287" }, + "⫄": { "codepoints": [10948], "characters": "\u2AC4" }, + "⟉": { "codepoints": [10185], "characters": "\u27C9" }, + "⫗": { "codepoints": [10967], "characters": "\u2AD7" }, + "⥻": { "codepoints": [10619], "characters": "\u297B" }, + "⫂": { "codepoints": [10946], "characters": "\u2AC2" }, + "⫌": { "codepoints": [10956], "characters": "\u2ACC" }, + "⊋": { "codepoints": [8843], "characters": "\u228B" }, + "⫀": { "codepoints": [10944], "characters": "\u2AC0" }, + "⊃": { "codepoints": [8835], "characters": "\u2283" }, + "⊇": { "codepoints": [8839], "characters": "\u2287" }, + "⫆": { "codepoints": [10950], "characters": "\u2AC6" }, + "⊋": { "codepoints": [8843], "characters": "\u228B" }, + "⫌": { "codepoints": [10956], "characters": "\u2ACC" }, + "⫈": { "codepoints": [10952], "characters": "\u2AC8" }, + "⫔": { "codepoints": [10964], "characters": "\u2AD4" }, + "⫖": { "codepoints": [10966], "characters": "\u2AD6" }, + "⇙": { "codepoints": [8665], "characters": "\u21D9" }, + "⤦": { "codepoints": [10534], "characters": "\u2926" }, + "↙": { "codepoints": [8601], "characters": "\u2199" }, + "↙": { "codepoints": [8601], "characters": "\u2199" }, + "⤪": { "codepoints": [10538], "characters": "\u292A" }, + "ß": { "codepoints": [223], "characters": "\u00DF" }, + "ß": { "codepoints": [223], "characters": "\u00DF" }, + "⌖": { "codepoints": [8982], "characters": "\u2316" }, + "τ": { "codepoints": [964], "characters": "\u03C4" }, + "⎴": { "codepoints": [9140], "characters": "\u23B4" }, + "ť": { "codepoints": [357], "characters": "\u0165" }, + "ţ": { "codepoints": [355], "characters": "\u0163" }, + "т": { "codepoints": [1090], "characters": "\u0442" }, + "⃛": { "codepoints": [8411], "characters": "\u20DB" }, + "⌕": { "codepoints": [8981], "characters": "\u2315" }, + "𝔱": { "codepoints": [120113], "characters": "\uD835\uDD31" }, + "∴": { "codepoints": [8756], "characters": "\u2234" }, + "∴": { "codepoints": [8756], "characters": "\u2234" }, + "θ": { "codepoints": [952], "characters": "\u03B8" }, + "ϑ": { "codepoints": [977], "characters": "\u03D1" }, + "ϑ": { "codepoints": [977], "characters": "\u03D1" }, + "≈": { "codepoints": [8776], "characters": "\u2248" }, + "∼": { "codepoints": [8764], "characters": "\u223C" }, + " ": { "codepoints": [8201], "characters": "\u2009" }, + "≈": { "codepoints": [8776], "characters": "\u2248" }, + "∼": { "codepoints": [8764], "characters": "\u223C" }, + "þ": { "codepoints": [254], "characters": "\u00FE" }, + "þ": { "codepoints": [254], "characters": "\u00FE" }, + "˜": { "codepoints": [732], "characters": "\u02DC" }, + "×": { "codepoints": [215], "characters": "\u00D7" }, + "×": { "codepoints": [215], "characters": "\u00D7" }, + "⊠": { "codepoints": [8864], "characters": "\u22A0" }, + "⨱": { "codepoints": [10801], "characters": "\u2A31" }, + "⨰": { "codepoints": [10800], "characters": "\u2A30" }, + "∭": { "codepoints": [8749], "characters": "\u222D" }, + "⤨": { "codepoints": [10536], "characters": "\u2928" }, + "⊤": { "codepoints": [8868], "characters": "\u22A4" }, + "⌶": { "codepoints": [9014], "characters": "\u2336" }, + "⫱": { "codepoints": [10993], "characters": "\u2AF1" }, + "𝕥": { "codepoints": [120165], "characters": "\uD835\uDD65" }, + "⫚": { "codepoints": [10970], "characters": "\u2ADA" }, + "⤩": { "codepoints": [10537], "characters": "\u2929" }, + "‴": { "codepoints": [8244], "characters": "\u2034" }, + "™": { "codepoints": [8482], "characters": "\u2122" }, + "▵": { "codepoints": [9653], "characters": "\u25B5" }, + "▿": { "codepoints": [9663], "characters": "\u25BF" }, + "◃": { "codepoints": [9667], "characters": "\u25C3" }, + "⊴": { "codepoints": [8884], "characters": "\u22B4" }, + "≜": { "codepoints": [8796], "characters": "\u225C" }, + "▹": { "codepoints": [9657], "characters": "\u25B9" }, + "⊵": { "codepoints": [8885], "characters": "\u22B5" }, + "◬": { "codepoints": [9708], "characters": "\u25EC" }, + "≜": { "codepoints": [8796], "characters": "\u225C" }, + "⨺": { "codepoints": [10810], "characters": "\u2A3A" }, + "⨹": { "codepoints": [10809], "characters": "\u2A39" }, + "⧍": { "codepoints": [10701], "characters": "\u29CD" }, + "⨻": { "codepoints": [10811], "characters": "\u2A3B" }, + "⏢": { "codepoints": [9186], "characters": "\u23E2" }, + "𝓉": { "codepoints": [120009], "characters": "\uD835\uDCC9" }, + "ц": { "codepoints": [1094], "characters": "\u0446" }, + "ћ": { "codepoints": [1115], "characters": "\u045B" }, + "ŧ": { "codepoints": [359], "characters": "\u0167" }, + "≬": { "codepoints": [8812], "characters": "\u226C" }, + "↞": { "codepoints": [8606], "characters": "\u219E" }, + "↠": { "codepoints": [8608], "characters": "\u21A0" }, + "⇑": { "codepoints": [8657], "characters": "\u21D1" }, + "⥣": { "codepoints": [10595], "characters": "\u2963" }, + "ú": { "codepoints": [250], "characters": "\u00FA" }, + "ú": { "codepoints": [250], "characters": "\u00FA" }, + "↑": { "codepoints": [8593], "characters": "\u2191" }, + "ў": { "codepoints": [1118], "characters": "\u045E" }, + "ŭ": { "codepoints": [365], "characters": "\u016D" }, + "û": { "codepoints": [251], "characters": "\u00FB" }, + "û": { "codepoints": [251], "characters": "\u00FB" }, + "у": { "codepoints": [1091], "characters": "\u0443" }, + "⇅": { "codepoints": [8645], "characters": "\u21C5" }, + "ű": { "codepoints": [369], "characters": "\u0171" }, + "⥮": { "codepoints": [10606], "characters": "\u296E" }, + "⥾": { "codepoints": [10622], "characters": "\u297E" }, + "𝔲": { "codepoints": [120114], "characters": "\uD835\uDD32" }, + "ù": { "codepoints": [249], "characters": "\u00F9" }, + "ù": { "codepoints": [249], "characters": "\u00F9" }, + "↿": { "codepoints": [8639], "characters": "\u21BF" }, + "↾": { "codepoints": [8638], "characters": "\u21BE" }, + "▀": { "codepoints": [9600], "characters": "\u2580" }, + "⌜": { "codepoints": [8988], "characters": "\u231C" }, + "⌜": { "codepoints": [8988], "characters": "\u231C" }, + "⌏": { "codepoints": [8975], "characters": "\u230F" }, + "◸": { "codepoints": [9720], "characters": "\u25F8" }, + "ū": { "codepoints": [363], "characters": "\u016B" }, + "¨": { "codepoints": [168], "characters": "\u00A8" }, + "¨": { "codepoints": [168], "characters": "\u00A8" }, + "ų": { "codepoints": [371], "characters": "\u0173" }, + "𝕦": { "codepoints": [120166], "characters": "\uD835\uDD66" }, + "↑": { "codepoints": [8593], "characters": "\u2191" }, + "↕": { "codepoints": [8597], "characters": "\u2195" }, + "↿": { "codepoints": [8639], "characters": "\u21BF" }, + "↾": { "codepoints": [8638], "characters": "\u21BE" }, + "⊎": { "codepoints": [8846], "characters": "\u228E" }, + "υ": { "codepoints": [965], "characters": "\u03C5" }, + "ϒ": { "codepoints": [978], "characters": "\u03D2" }, + "υ": { "codepoints": [965], "characters": "\u03C5" }, + "⇈": { "codepoints": [8648], "characters": "\u21C8" }, + "⌝": { "codepoints": [8989], "characters": "\u231D" }, + "⌝": { "codepoints": [8989], "characters": "\u231D" }, + "⌎": { "codepoints": [8974], "characters": "\u230E" }, + "ů": { "codepoints": [367], "characters": "\u016F" }, + "◹": { "codepoints": [9721], "characters": "\u25F9" }, + "𝓊": { "codepoints": [120010], "characters": "\uD835\uDCCA" }, + "⋰": { "codepoints": [8944], "characters": "\u22F0" }, + "ũ": { "codepoints": [361], "characters": "\u0169" }, + "▵": { "codepoints": [9653], "characters": "\u25B5" }, + "▴": { "codepoints": [9652], "characters": "\u25B4" }, + "⇈": { "codepoints": [8648], "characters": "\u21C8" }, + "ü": { "codepoints": [252], "characters": "\u00FC" }, + "ü": { "codepoints": [252], "characters": "\u00FC" }, + "⦧": { "codepoints": [10663], "characters": "\u29A7" }, + "⇕": { "codepoints": [8661], "characters": "\u21D5" }, + "⫨": { "codepoints": [10984], "characters": "\u2AE8" }, + "⫩": { "codepoints": [10985], "characters": "\u2AE9" }, + "⊨": { "codepoints": [8872], "characters": "\u22A8" }, + "⦜": { "codepoints": [10652], "characters": "\u299C" }, + "ϵ": { "codepoints": [1013], "characters": "\u03F5" }, + "ϰ": { "codepoints": [1008], "characters": "\u03F0" }, + "∅": { "codepoints": [8709], "characters": "\u2205" }, + "ϕ": { "codepoints": [981], "characters": "\u03D5" }, + "ϖ": { "codepoints": [982], "characters": "\u03D6" }, + "∝": { "codepoints": [8733], "characters": "\u221D" }, + "↕": { "codepoints": [8597], "characters": "\u2195" }, + "ϱ": { "codepoints": [1009], "characters": "\u03F1" }, + "ς": { "codepoints": [962], "characters": "\u03C2" }, + "⊊︀": { "codepoints": [8842, 65024], "characters": "\u228A\uFE00" }, + "⫋︀": { "codepoints": [10955, 65024], "characters": "\u2ACB\uFE00" }, + "⊋︀": { "codepoints": [8843, 65024], "characters": "\u228B\uFE00" }, + "⫌︀": { "codepoints": [10956, 65024], "characters": "\u2ACC\uFE00" }, + "ϑ": { "codepoints": [977], "characters": "\u03D1" }, + "⊲": { "codepoints": [8882], "characters": "\u22B2" }, + "⊳": { "codepoints": [8883], "characters": "\u22B3" }, + "в": { "codepoints": [1074], "characters": "\u0432" }, + "⊢": { "codepoints": [8866], "characters": "\u22A2" }, + "∨": { "codepoints": [8744], "characters": "\u2228" }, + "⊻": { "codepoints": [8891], "characters": "\u22BB" }, + "≚": { "codepoints": [8794], "characters": "\u225A" }, + "⋮": { "codepoints": [8942], "characters": "\u22EE" }, + "|": { "codepoints": [124], "characters": "\u007C" }, + "|": { "codepoints": [124], "characters": "\u007C" }, + "𝔳": { "codepoints": [120115], "characters": "\uD835\uDD33" }, + "⊲": { "codepoints": [8882], "characters": "\u22B2" }, + "⊂⃒": { "codepoints": [8834, 8402], "characters": "\u2282\u20D2" }, + "⊃⃒": { "codepoints": [8835, 8402], "characters": "\u2283\u20D2" }, + "𝕧": { "codepoints": [120167], "characters": "\uD835\uDD67" }, + "∝": { "codepoints": [8733], "characters": "\u221D" }, + "⊳": { "codepoints": [8883], "characters": "\u22B3" }, + "𝓋": { "codepoints": [120011], "characters": "\uD835\uDCCB" }, + "⫋︀": { "codepoints": [10955, 65024], "characters": "\u2ACB\uFE00" }, + "⊊︀": { "codepoints": [8842, 65024], "characters": "\u228A\uFE00" }, + "⫌︀": { "codepoints": [10956, 65024], "characters": "\u2ACC\uFE00" }, + "⊋︀": { "codepoints": [8843, 65024], "characters": "\u228B\uFE00" }, + "⦚": { "codepoints": [10650], "characters": "\u299A" }, + "ŵ": { "codepoints": [373], "characters": "\u0175" }, + "⩟": { "codepoints": [10847], "characters": "\u2A5F" }, + "∧": { "codepoints": [8743], "characters": "\u2227" }, + "≙": { "codepoints": [8793], "characters": "\u2259" }, + "℘": { "codepoints": [8472], "characters": "\u2118" }, + "𝔴": { "codepoints": [120116], "characters": "\uD835\uDD34" }, + "𝕨": { "codepoints": [120168], "characters": "\uD835\uDD68" }, + "℘": { "codepoints": [8472], "characters": "\u2118" }, + "≀": { "codepoints": [8768], "characters": "\u2240" }, + "≀": { "codepoints": [8768], "characters": "\u2240" }, + "𝓌": { "codepoints": [120012], "characters": "\uD835\uDCCC" }, + "⋂": { "codepoints": [8898], "characters": "\u22C2" }, + "◯": { "codepoints": [9711], "characters": "\u25EF" }, + "⋃": { "codepoints": [8899], "characters": "\u22C3" }, + "▽": { "codepoints": [9661], "characters": "\u25BD" }, + "𝔵": { "codepoints": [120117], "characters": "\uD835\uDD35" }, + "⟺": { "codepoints": [10234], "characters": "\u27FA" }, + "⟷": { "codepoints": [10231], "characters": "\u27F7" }, + "ξ": { "codepoints": [958], "characters": "\u03BE" }, + "⟸": { "codepoints": [10232], "characters": "\u27F8" }, + "⟵": { "codepoints": [10229], "characters": "\u27F5" }, + "⟼": { "codepoints": [10236], "characters": "\u27FC" }, + "⋻": { "codepoints": [8955], "characters": "\u22FB" }, + "⨀": { "codepoints": [10752], "characters": "\u2A00" }, + "𝕩": { "codepoints": [120169], "characters": "\uD835\uDD69" }, + "⨁": { "codepoints": [10753], "characters": "\u2A01" }, + "⨂": { "codepoints": [10754], "characters": "\u2A02" }, + "⟹": { "codepoints": [10233], "characters": "\u27F9" }, + "⟶": { "codepoints": [10230], "characters": "\u27F6" }, + "𝓍": { "codepoints": [120013], "characters": "\uD835\uDCCD" }, + "⨆": { "codepoints": [10758], "characters": "\u2A06" }, + "⨄": { "codepoints": [10756], "characters": "\u2A04" }, + "△": { "codepoints": [9651], "characters": "\u25B3" }, + "⋁": { "codepoints": [8897], "characters": "\u22C1" }, + "⋀": { "codepoints": [8896], "characters": "\u22C0" }, + "ý": { "codepoints": [253], "characters": "\u00FD" }, + "ý": { "codepoints": [253], "characters": "\u00FD" }, + "я": { "codepoints": [1103], "characters": "\u044F" }, + "ŷ": { "codepoints": [375], "characters": "\u0177" }, + "ы": { "codepoints": [1099], "characters": "\u044B" }, + "¥": { "codepoints": [165], "characters": "\u00A5" }, + "¥": { "codepoints": [165], "characters": "\u00A5" }, + "𝔶": { "codepoints": [120118], "characters": "\uD835\uDD36" }, + "ї": { "codepoints": [1111], "characters": "\u0457" }, + "𝕪": { "codepoints": [120170], "characters": "\uD835\uDD6A" }, + "𝓎": { "codepoints": [120014], "characters": "\uD835\uDCCE" }, + "ю": { "codepoints": [1102], "characters": "\u044E" }, + "ÿ": { "codepoints": [255], "characters": "\u00FF" }, + "ÿ": { "codepoints": [255], "characters": "\u00FF" }, + "ź": { "codepoints": [378], "characters": "\u017A" }, + "ž": { "codepoints": [382], "characters": "\u017E" }, + "з": { "codepoints": [1079], "characters": "\u0437" }, + "ż": { "codepoints": [380], "characters": "\u017C" }, + "ℨ": { "codepoints": [8488], "characters": "\u2128" }, + "ζ": { "codepoints": [950], "characters": "\u03B6" }, + "𝔷": { "codepoints": [120119], "characters": "\uD835\uDD37" }, + "ж": { "codepoints": [1078], "characters": "\u0436" }, + "⇝": { "codepoints": [8669], "characters": "\u21DD" }, + "𝕫": { "codepoints": [120171], "characters": "\uD835\uDD6B" }, + "𝓏": { "codepoints": [120015], "characters": "\uD835\uDCCF" }, + "‍": { "codepoints": [8205], "characters": "\u200D" }, + "‌": { "codepoints": [8204], "characters": "\u200C" } +} diff --git a/tools/font-glyphs.py b/tools/font-glyphs.py new file mode 100755 index 00000000..4842e951 --- /dev/null +++ b/tools/font-glyphs.py @@ -0,0 +1,96 @@ +#!/usr/bin/env python3 +""" +Report which Unicode code points have vector outlines in ALL of the given font files. + +Usage: python3 font-glyphs.py font1.ttf font2.ttf ... +""" + +import sys +import unicodedata +from fontTools.ttLib import TTFont +from fontTools.pens.statisticsPen import StatisticsPen + + +def get_vector_codepoints(path): + """Return the set of code points that have actual vector outlines in the font.""" + font = TTFont(path) + cmap = font.getBestCmap() + if cmap is None: + print(f"WARNING: {path} has no cmap table", file=sys.stderr) + return set() + + glyf = font.get("glyf") # TrueType outlines + cff = font.get("CFF ") # CFF outlines + + result = set() + for codepoint, glyph_name in cmap.items(): + has_outline = False + if glyf is not None: + g = glyf.get(glyph_name) + if g is not None and g.numberOfContours != 0: + has_outline = True + if cff is not None: + # CFF fonts store outlines in charstrings. + try: + cs = cff.cff.topDictIndex[0].CharStrings[glyph_name] + pen = StatisticsPen(glyphset=font.getGlyphSet()) + cs.draw(pen) + if pen.area != 0: + has_outline = True + except (KeyError, AttributeError): + pass + if has_outline: + result.add(codepoint) + + font.close() + return result + + +def main(): + if len(sys.argv) < 2: + print(f"Usage: {sys.argv[0]} font1.ttf [font2.ttf ...]", file=sys.stderr) + sys.exit(1) + + paths = sys.argv[1:] + + # Process each font and intersect. + common = None + for path in paths: + cps = get_vector_codepoints(path) + print(f"{len(cps):6d} glyphs {path}") + if common is None: + common = cps + else: + common &= cps + + if len(paths) > 1: + print(f"{len(common):6d} glyphs common to all {len(paths)} fonts", file=sys.stderr) + + # Build the character string, excluding quote and backslash. + chars = [] + for cp in sorted(common): + if cp == ord('"') or cp == ord('\\'): + continue + chars.append(chr(cp)) + + # Emit C++ file. + print("// Auto-generated by tools/font-glyphs.py — do not edit by hand.") + print(f"// {len(chars)} characters common to all {len(paths)} font(s).") + print() + print("const TCHAR *CommonChars = TEXT(") + + # Break into lines of ~70 chars for readability. + line = "" + for ch in chars: + line += ch + if len(line) >= 70: + print(f'\t"{line}"') + line = "" + if line: + print(f'\t"{line}"') + + print(");") + + +if __name__ == "__main__": + main() diff --git a/tools/gen-entities.py b/tools/gen-entities.py new file mode 100644 index 00000000..b236d369 --- /dev/null +++ b/tools/gen-entities.py @@ -0,0 +1,54 @@ +#!/usr/bin/env python3 +"""Read entities.json (WHATWG HTML named character references) and generate +WingEntities.cpp with a lookup table of { "name", codepoint } rows. + +Rules: + - Only entries whose key ends with ';' (skip legacy semicolon-less forms). + - Only entries with exactly one codepoint. + - Codepoint must be <= 0xFFFF (Unreal uses 16-bit TCHAR). +""" + +import json, os + +script_dir = os.path.dirname(os.path.abspath(__file__)) +project_dir = os.path.dirname(script_dir) +input_path = os.path.join(project_dir, "entities.json") +output_path = os.path.join(project_dir, + "Plugins", "UEWingman", "Source", "UEWingman", "Private", "WingEntities.cpp") + +with open(input_path) as f: + data = json.load(f) + +rows = [] +for key, val in sorted(data.items()): + if not key.endswith(";"): + continue + cps = val["codepoints"] + if len(cps) != 1: + continue + cp = cps[0] + if cp > 0xFFFF: + continue + # Strip leading '&' and trailing ';' + name = key[1:-1] + rows.append((name, cp)) + +with open(output_path, "w") as f: + f.write("// Auto-generated by tools/gen-entities.py — do not edit by hand.\n") + f.write("// Source: WHATWG HTML named character references (entities.json)\n\n") + f.write('#include "WingTokenizer.h"\n\n\n') + f.write("WingEntityList::WingEntityList(std::initializer_list Data)\n") + f.write("{\n") + f.write("\tfor (const Raw& Entry : Data)\n") + f.write("\t{\n") + f.write('\t\tFString XName((const ANSICHAR*)Entry.Name);\n') + f.write("\t\tCharToName.Add(Entry.Codepoint, XName);\n") + f.write("\t\tNameToChar.Add(XName, Entry.Codepoint);\n") + f.write("\t}\n") + f.write("}\n\n") + f.write("WingEntityList WingEntityList::TheList({\n") + for name, cp in rows: + f.write(f'\t{{ "{name}", {cp} }},\n') + f.write("});\n") + +print(f"Generated {len(rows)} entities -> {output_path}")