trenni 1.7.0 → 2.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/.travis.yml +7 -3
  4. data/Gemfile +4 -0
  5. data/README.md +72 -10
  6. data/Rakefile +85 -0
  7. data/benchmark/call_vs_yield.rb +51 -0
  8. data/benchmark/interpolation_vs_concat.rb +29 -0
  9. data/benchmark/io_vs_string.rb +14 -4
  10. data/entities.json +2233 -0
  11. data/ext/trenni/extconf.rb +13 -0
  12. data/ext/trenni/markup.c +1981 -0
  13. data/ext/trenni/markup.h +6 -0
  14. data/ext/trenni/markup.rl +223 -0
  15. data/ext/trenni/template.c +1113 -0
  16. data/ext/trenni/template.h +6 -0
  17. data/ext/trenni/template.rl +77 -0
  18. data/ext/trenni/trenni.c +64 -0
  19. data/ext/trenni/trenni.h +28 -0
  20. data/lib/trenni.rb +1 -0
  21. data/lib/trenni/buffer.rb +13 -2
  22. data/lib/trenni/builder.rb +54 -47
  23. data/lib/trenni/entities.rb +2154 -0
  24. data/lib/trenni/entities.trenni +34 -0
  25. data/lib/trenni/fallback/markup.rb +1648 -0
  26. data/lib/trenni/fallback/markup.rl +236 -0
  27. data/lib/trenni/fallback/template.rb +843 -0
  28. data/lib/trenni/fallback/template.rl +97 -0
  29. data/lib/trenni/markup.rb +76 -0
  30. data/lib/trenni/native.rb +28 -0
  31. data/lib/trenni/parse_delegate.rb +34 -0
  32. data/lib/trenni/{scanner.rb → parse_error.rb} +9 -54
  33. data/lib/trenni/parsers.rb +12 -0
  34. data/lib/trenni/substitutions.rb +45 -0
  35. data/lib/trenni/template.rb +52 -135
  36. data/lib/trenni/version.rb +1 -1
  37. data/parsers/trenni/entities.rl +11 -0
  38. data/parsers/trenni/markup.rl +43 -0
  39. data/parsers/trenni/template.rl +60 -0
  40. data/spec/trenni/builder_spec.rb +37 -62
  41. data/spec/trenni/corpus/large.rb +4605 -0
  42. data/spec/trenni/corpus/large.xhtml +726 -0
  43. data/spec/trenni/markup_parser_spec.rb +233 -0
  44. data/spec/trenni/markup_spec.rb +48 -0
  45. data/spec/trenni/parsers_performance_spec.rb +44 -0
  46. data/spec/trenni/template_error_spec.rb +36 -0
  47. data/spec/trenni/template_performance_spec.rb +102 -0
  48. data/spec/trenni/template_spec.rb +90 -64
  49. data/spec/trenni/template_spec/basic.trenni +1 -0
  50. data/spec/trenni/template_spec/capture.trenni +2 -2
  51. data/spec/trenni/template_spec/error.trenni +4 -0
  52. data/trenni.gemspec +9 -6
  53. metadata +57 -15
  54. data/lib/trenni/parser.rb +0 -153
  55. data/spec/trenni/parser_spec.rb +0 -144
@@ -0,0 +1,6 @@
1
+
2
+ #pragma once
3
+
4
+ #include "trenni.h"
5
+
6
+ VALUE Trenni_Native_parse_template(VALUE self, VALUE buffer, VALUE delegate);
@@ -0,0 +1,77 @@
1
+
2
+ #include "template.h"
3
+
4
+ %%{
5
+ machine Trenni_template_parser;
6
+
7
+ action instruction_begin {
8
+ instruction.begin = p;
9
+ }
10
+
11
+ action instruction_end {
12
+ instruction.end = p;
13
+ }
14
+
15
+ action emit_instruction {
16
+ rb_funcall(delegate, id_instruction, 1, Trenni_token(instruction, encoding));
17
+ }
18
+
19
+ action emit_instruction_line {
20
+ rb_funcall(delegate, id_instruction, 2, Trenni_token(instruction, encoding), newline);
21
+ }
22
+
23
+ action instruction_error {
24
+ Trenni_raise_error("failed to parse instruction", buffer, p-s);
25
+ }
26
+
27
+ action expression_begin {
28
+ expression.begin = p;
29
+ }
30
+
31
+ action expression_end {
32
+ expression.end = p;
33
+ }
34
+
35
+ action emit_expression {
36
+ rb_funcall(delegate, id_expression, 1, Trenni_token(expression, encoding));
37
+ }
38
+
39
+ action expression_error {
40
+ Trenni_raise_error("failed to parse expression", buffer, p-s);
41
+ }
42
+
43
+ action emit_text {
44
+ rb_funcall(delegate, id_text, 1, Trenni_string(ts, te, encoding));
45
+ }
46
+
47
+ include template "trenni/template.rl";
48
+
49
+ write data;
50
+ }%%
51
+
52
+ VALUE Trenni_Native_parse_template(VALUE self, VALUE buffer, VALUE delegate) {
53
+ VALUE string = rb_funcall(buffer, id_read, 0);
54
+
55
+ rb_encoding *encoding = rb_enc_get(string);
56
+
57
+ VALUE newline = rb_obj_freeze(rb_enc_str_new("\n", 1, encoding));
58
+
59
+ const char *s, *p, *pe, *eof, *ts, *te;
60
+ unsigned long cs, act, top = 0, stack[32] = {0};
61
+
62
+ Token expression = {0}, instruction = {0};
63
+
64
+ s = p = RSTRING_PTR(string);
65
+ eof = pe = p + RSTRING_LEN(string);
66
+
67
+ %%{
68
+ write init;
69
+ write exec;
70
+ }%%
71
+
72
+ if (p != eof) {
73
+ Trenni_raise_error("could not parse all input", buffer, p-s);
74
+ }
75
+
76
+ return Qnil;
77
+ }
@@ -0,0 +1,64 @@
1
+
2
+ #include "trenni.h"
3
+
4
+ #include "markup.h"
5
+ #include "template.h"
6
+
7
+ VALUE rb_Trenni = Qnil, rb_Trenni_Native = Qnil, rb_Trenni_ParseError = Qnil;
8
+ ID id_cdata, id_open_tag_begin, id_open_tag_end, id_attribute, id_close_tag, id_text, id_doctype, id_comment, id_instruction, id_read, id_expression;
9
+
10
+ void Trenni_raise_error(const char * message, VALUE buffer, size_t offset) {
11
+ VALUE exception = rb_funcall(rb_Trenni_ParseError, rb_intern("new"), 3, rb_str_new_cstr(message), buffer, ULONG2NUM(offset));
12
+
13
+ rb_exc_raise(exception);
14
+ }
15
+
16
+ void Trenni_append_string(VALUE * buffer, rb_encoding * encoding, VALUE string) {
17
+ if (*buffer == Qnil) {
18
+ *buffer = rb_enc_str_new("", 0, encoding);
19
+ }
20
+
21
+ rb_str_concat(*buffer, string);
22
+ }
23
+
24
+ void Trenni_append_token(VALUE * buffer, rb_encoding * encoding, Token token) {
25
+ if (*buffer == Qnil) {
26
+ // Allocate a buffer exactly the right size:
27
+ *buffer = rb_enc_str_new(token.begin, token.end - token.begin, encoding);
28
+ } else {
29
+ // Append the characters to the existing buffer:
30
+ rb_str_buf_cat(*buffer, token.begin, token.end - token.begin);
31
+ }
32
+ }
33
+
34
+ void Trenni_append_codepoint(VALUE * buffer, rb_encoding * encoding, unsigned long codepoint) {
35
+ if (*buffer == Qnil) {
36
+ *buffer = rb_enc_str_new("", 0, encoding);
37
+ }
38
+
39
+ rb_str_concat(*buffer, ULONG2NUM(codepoint));
40
+ }
41
+
42
+ void Init_trenni() {
43
+ id_open_tag_begin = rb_intern("open_tag_begin");
44
+ id_open_tag_end = rb_intern("open_tag_end");
45
+ id_close_tag = rb_intern("close_tag");
46
+
47
+ id_cdata = rb_intern("cdata");
48
+ id_attribute = rb_intern("attribute");
49
+ id_comment = rb_intern("comment");
50
+ id_text = rb_intern("text");
51
+ id_doctype = rb_intern("doctype");
52
+ id_instruction = rb_intern("instruction");
53
+ id_expression = rb_intern("expression");
54
+
55
+ id_read = rb_intern("read");
56
+
57
+ rb_Trenni = rb_define_module("Trenni");
58
+ rb_Trenni_Native = rb_define_module_under(rb_Trenni, "Native");
59
+
60
+ rb_Trenni_ParseError = rb_const_get_at(rb_Trenni, rb_intern("ParseError"));
61
+
62
+ rb_define_module_function(rb_Trenni_Native, "parse_markup", Trenni_Native_parse_markup, 3);
63
+ rb_define_module_function(rb_Trenni_Native, "parse_template", Trenni_Native_parse_template, 2);
64
+ }
@@ -0,0 +1,28 @@
1
+
2
+ #pragma once
3
+
4
+ #include "ruby.h"
5
+ #include <ruby/encoding.h>
6
+
7
+ extern VALUE rb_Trenni, rb_Trenni_Native, rb_Trenni_ParseError;
8
+
9
+ extern ID id_cdata, id_open_tag_begin, id_open_tag_end, id_attribute, id_close_tag, id_text, id_doctype, id_comment, id_instruction, id_read, id_expression;
10
+
11
+ typedef struct {
12
+ const char * begin;
13
+ const char * end;
14
+ } Token;
15
+
16
+ static inline VALUE Trenni_token(Token token, rb_encoding * encoding) {
17
+ return rb_enc_str_new(token.begin, token.end - token.begin, encoding);
18
+ }
19
+
20
+ static inline VALUE Trenni_string(const char * begin, const char * end, rb_encoding * encoding) {
21
+ return rb_enc_str_new(begin, end - begin, encoding);
22
+ }
23
+
24
+ void Trenni_raise_error(const char * message, VALUE buffer, size_t offset);
25
+
26
+ void Trenni_append_string(VALUE * buffer, rb_encoding * encoding, VALUE string);
27
+ void Trenni_append_token(VALUE * buffer, rb_encoding * encoding, Token token);
28
+ void Trenni_append_codepoint(VALUE * buffer, rb_encoding * encoding, unsigned long codepoint);
data/lib/trenni.rb CHANGED
@@ -18,5 +18,6 @@
18
18
  # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
19
  # THE SOFTWARE.
20
20
 
21
+ require_relative 'trenni/native'
21
22
  require_relative 'trenni/builder'
22
23
  require_relative 'trenni/template'
data/lib/trenni/buffer.rb CHANGED
@@ -52,7 +52,7 @@ module Trenni
52
52
  attr :path
53
53
 
54
54
  def read
55
- @buffer ||= File.read(@path)
55
+ @cache ||= File.read(@path)
56
56
  end
57
57
 
58
58
  def to_buffer
@@ -69,11 +69,22 @@ module Trenni
69
69
  attr :path
70
70
 
71
71
  def read
72
- @io.read
72
+ @cache ||= @io.read
73
73
  end
74
74
 
75
75
  def to_buffer
76
76
  Buffer.new(self.read, path: @path)
77
77
  end
78
78
  end
79
+
80
+ def self.Buffer(value)
81
+ case value
82
+ when String
83
+ Buffer.new(value)
84
+ when Buffer, FileBuffer, IOBuffer
85
+ value
86
+ else
87
+ value.to_buffer
88
+ end
89
+ end
79
90
  end
@@ -18,7 +18,7 @@
18
18
  # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
19
  # THE SOFTWARE.
20
20
 
21
- require_relative 'strings'
21
+ require_relative 'markup'
22
22
 
23
23
  module Trenni
24
24
  INSTRUCT_ATTRIBUTES = [
@@ -26,35 +26,39 @@ module Trenni
26
26
  ['encoding', 'UTF-8']
27
27
  ].freeze
28
28
 
29
+ # Build markup quickly and efficiently.
29
30
  class Builder
30
- DEFAULT_INDENTATION = "\t".freeze
31
+ include Markup
32
+
33
+ INDENT = "\t".freeze
31
34
 
32
35
  # A helper to generate fragments of markup.
33
36
  def self.fragment(builder = nil, &block)
34
37
  if builder
35
38
  yield builder
36
-
37
- return nil
38
39
  else
39
- builder = Builder.new
40
+ builder = self.new
40
41
 
41
42
  yield builder
42
-
43
- return builder.output
44
43
  end
44
+
45
+ return builder
45
46
  end
46
47
 
47
- def initialize(strict: false, indent: true, indentation: DEFAULT_INDENTATION, escape: false, output: String.new)
48
- @strict = strict
49
-
50
- @indent = indent
51
-
52
- @indentation = indentation
48
+ def self.tag(name, content, **attributes)
49
+ self.fragment do |builder|
50
+ builder.inline(name, attributes) do
51
+ builder.text content
52
+ end
53
+ end
54
+ end
55
+
56
+ def initialize(output = nil, indent: true, encoding: Encoding::UTF_8)
53
57
  # This field gets togged in #inline so we keep track of it separately from @indentation.
58
+ @indent = indent
54
59
 
55
- @escape = escape
56
-
57
- @output = output
60
+ # We don't need to use MarkupString here as Builder itself is considered markup and should be inserted directly into the output stream.
61
+ @output = output || MarkupString.new.force_encoding(encoding)
58
62
 
59
63
  @level = [0]
60
64
  @children = [0]
@@ -62,20 +66,25 @@ module Trenni
62
66
 
63
67
  attr :output
64
68
 
69
+ # Required for output to buffer.
70
+ def to_str
71
+ @output
72
+ end
73
+
74
+ alias to_s to_str
75
+
76
+ def == other
77
+ @output == String(other)
78
+ end
79
+
65
80
  def indentation
66
81
  if @indent
67
- @indentation * (@level.size - 1)
82
+ INDENT * (@level.size - 1)
68
83
  else
69
84
  ''
70
85
  end
71
86
  end
72
87
 
73
- def instruct(attributes = nil)
74
- attributes ||= INSTRUCT_ATTRIBUTES
75
-
76
- @output << "<?xml#{tag_attributes(attributes)}?>\n"
77
- end
78
-
79
88
  def doctype(attributes = 'html')
80
89
  @output << "<!DOCTYPE #{attributes}>\n"
81
90
  end
@@ -97,7 +106,7 @@ module Trenni
97
106
  end
98
107
 
99
108
  def text(data)
100
- append to_html(data)
109
+ append escape(data)
101
110
  end
102
111
 
103
112
  # Append pre-existing markup:
@@ -116,31 +125,26 @@ module Trenni
116
125
  end
117
126
  end
118
127
 
128
+ protected
129
+
119
130
  # Convert a set of attributes into a string suitable for use within a <tag>.
120
- def tag_attributes(attributes, buffer = [], prefix = nil)
131
+ def tag_attributes(attributes, prefix = nil)
132
+ return if attributes.empty?
133
+
121
134
  attributes.each do |key, value|
135
+ next unless value
136
+
122
137
  attribute_key = prefix ? "#{prefix}-#{key}" : key
123
138
 
124
- if value == true
125
- buffer << Strings::to_simple_attribute(attribute_key, @strict)
126
- elsif value.is_a? Hash
127
- tag_attributes(value, buffer, attribute_key)
128
- elsif value
129
- buffer << Strings::to_attribute(attribute_key, to_html(value))
139
+ case value
140
+ when Hash
141
+ tag_attributes(value, attribute_key)
142
+ when TrueClass
143
+ @output << ' ' << attribute_key.to_s
144
+ else
145
+ @output << ' ' << attribute_key.to_s << '="' << escape(value.to_s) << '"'
130
146
  end
131
147
  end
132
-
133
- if buffer.size > 0
134
- return ' ' + buffer.join(' ')
135
- else
136
- return ''
137
- end
138
- end
139
-
140
- protected
141
-
142
- def to_html(data)
143
- @escape ? Strings::to_html(data) : data
144
148
  end
145
149
 
146
150
  # A normal block level/container tag.
@@ -151,7 +155,9 @@ module Trenni
151
155
  @output << indentation
152
156
  end
153
157
 
154
- @output << "<#{name}#{tag_attributes(attributes)}>"
158
+ @output << "<" << name.to_s
159
+ tag_attributes(attributes)
160
+ @output << ">"
155
161
  @output << "\n" if indent_inner
156
162
 
157
163
  # The parent has one more child:
@@ -168,14 +174,15 @@ module Trenni
168
174
  @output << indentation
169
175
  end
170
176
 
171
- @output << "</#{name}>"
177
+ @output << "</" << name.to_s << ">"
172
178
  else
173
179
  # The parent has one more child:
174
180
  @level[-1] += 1
175
181
 
176
- @output << indentation + "<#{name}#{tag_attributes(attributes)}/>"
182
+ @output << indentation + "<" << name.to_s
183
+ tag_attributes(attributes)
184
+ @output << "/>"
177
185
  end
178
186
  end
179
187
  end
180
-
181
188
  end
@@ -0,0 +1,2154 @@
1
+ # Copyright, 2016, by Samuel G. D. Williams. <http://www.codeotaku.com>
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ # of this software and associated documentation files (the "Software"), to deal
5
+ # in the Software without restriction, including without limitation the rights
6
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ # copies of the Software, and to permit persons to whom the Software is
8
+ # furnished to do so, subject to the following conditions:
9
+ #
10
+ # The above copyright notice and this permission notice shall be included in
11
+ # all copies or substantial portions of the Software.
12
+ #
13
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ # THE SOFTWARE.
20
+
21
+ require_relative 'substitutions'
22
+
23
+ module Trenni
24
+ # We only support a small subset of markup entities.
25
+ module Entities
26
+ HTML5 = {
27
+ "Aacute" => "Á", # "Á"
28
+ "aacute" => "á", # "á"
29
+ "Abreve" => "Ă", # "Ă"
30
+ "abreve" => "ă", # "ă"
31
+ "ac" => "∾", # "∾"
32
+ "acd" => "∿", # "∿"
33
+ "acE" => "∾̳", # "∾̳"
34
+ "Acirc" => "Â", # "Â"
35
+ "acirc" => "â", # "â"
36
+ "acute" => "´", # "´"
37
+ "Acy" => "А", # "А"
38
+ "acy" => "а", # "а"
39
+ "AElig" => "Æ", # "Æ"
40
+ "aelig" => "æ", # "æ"
41
+ "af" => "⁡", # "⁡"
42
+ "Afr" => "𝔄", # "𝔄"
43
+ "afr" => "𝔞", # "𝔞"
44
+ "Agrave" => "À", # "À"
45
+ "agrave" => "à", # "à"
46
+ "alefsym" => "ℵ", # "ℵ"
47
+ "aleph" => "ℵ", # "ℵ"
48
+ "Alpha" => "Α", # "Α"
49
+ "alpha" => "α", # "α"
50
+ "Amacr" => "Ā", # "Ā"
51
+ "amacr" => "ā", # "ā"
52
+ "amalg" => "⨿", # "⨿"
53
+ "AMP" => "&", # ""
54
+ "amp" => "&", # ""
55
+ "And" => "⩓", # "⩓"
56
+ "and" => "∧", # "∧"
57
+ "andand" => "⩕", # "⩕"
58
+ "andd" => "⩜", # "⩜"
59
+ "andslope" => "⩘", # "⩘"
60
+ "andv" => "⩚", # "⩚"
61
+ "ang" => "∠", # "∠"
62
+ "ange" => "⦤", # "⦤"
63
+ "angle" => "∠", # "∠"
64
+ "angmsd" => "∡", # "∡"
65
+ "angmsdaa" => "⦨", # "⦨"
66
+ "angmsdab" => "⦩", # "⦩"
67
+ "angmsdac" => "⦪", # "⦪"
68
+ "angmsdad" => "⦫", # "⦫"
69
+ "angmsdae" => "⦬", # "⦬"
70
+ "angmsdaf" => "⦭", # "⦭"
71
+ "angmsdag" => "⦮", # "⦮"
72
+ "angmsdah" => "⦯", # "⦯"
73
+ "angrt" => "∟", # "∟"
74
+ "angrtvb" => "⊾", # "⊾"
75
+ "angrtvbd" => "⦝", # "⦝"
76
+ "angsph" => "∢", # "∢"
77
+ "angst" => "Å", # "Å"
78
+ "angzarr" => "⍼", # "⍼"
79
+ "Aogon" => "Ą", # "Ą"
80
+ "aogon" => "ą", # "ą"
81
+ "Aopf" => "𝔸", # "𝔸"
82
+ "aopf" => "𝕒", # "𝕒"
83
+ "ap" => "≈", # "≈"
84
+ "apacir" => "⩯", # "⩯"
85
+ "apE" => "⩰", # "⩰"
86
+ "ape" => "≊", # "≊"
87
+ "apid" => "≋", # "≋"
88
+ "apos" => "'", # "'"
89
+ "ApplyFunction" => "⁡", # "⁡"
90
+ "approx" => "≈", # "≈"
91
+ "approxeq" => "≊", # "≊"
92
+ "Aring" => "Å", # "Å"
93
+ "aring" => "å", # "å"
94
+ "Ascr" => "𝒜", # "𝒜"
95
+ "ascr" => "𝒶", # "𝒶"
96
+ "Assign" => "≔", # "≔"
97
+ "ast" => "*", # "*"
98
+ "asymp" => "≈", # "≈"
99
+ "asympeq" => "≍", # "≍"
100
+ "Atilde" => "Ã", # "Ã"
101
+ "atilde" => "ã", # "ã"
102
+ "Auml" => "Ä", # "Ä"
103
+ "auml" => "ä", # "ä"
104
+ "awconint" => "∳", # "∳"
105
+ "awint" => "⨑", # "⨑"
106
+ "backcong" => "≌", # "≌"
107
+ "backepsilon" => "϶", # "϶"
108
+ "backprime" => "‵", # "‵"
109
+ "backsim" => "∽", # "∽"
110
+ "backsimeq" => "⋍", # "⋍"
111
+ "Backslash" => "∖", # "∖"
112
+ "Barv" => "⫧", # "⫧"
113
+ "barvee" => "⊽", # "⊽"
114
+ "Barwed" => "⌆", # "⌆"
115
+ "barwed" => "⌅", # "⌅"
116
+ "barwedge" => "⌅", # "⌅"
117
+ "bbrk" => "⎵", # "⎵"
118
+ "bbrktbrk" => "⎶", # "⎶"
119
+ "bcong" => "≌", # "≌"
120
+ "Bcy" => "Б", # "Б"
121
+ "bcy" => "б", # "б"
122
+ "bdquo" => "„", # "„"
123
+ "becaus" => "∵", # "∵"
124
+ "Because" => "∵", # "∵"
125
+ "because" => "∵", # "∵"
126
+ "bemptyv" => "⦰", # "⦰"
127
+ "bepsi" => "϶", # "϶"
128
+ "bernou" => "ℬ", # "ℬ"
129
+ "Bernoullis" => "ℬ", # "ℬ"
130
+ "Beta" => "Β", # "Β"
131
+ "beta" => "β", # "β"
132
+ "beth" => "ℶ", # "ℶ"
133
+ "between" => "≬", # "≬"
134
+ "Bfr" => "𝔅", # "𝔅"
135
+ "bfr" => "𝔟", # "𝔟"
136
+ "bigcap" => "⋂", # "⋂"
137
+ "bigcirc" => "◯", # "◯"
138
+ "bigcup" => "⋃", # "⋃"
139
+ "bigodot" => "⨀", # "⨀"
140
+ "bigoplus" => "⨁", # "⨁"
141
+ "bigotimes" => "⨂", # "⨂"
142
+ "bigsqcup" => "⨆", # "⨆"
143
+ "bigstar" => "★", # "★"
144
+ "bigtriangledown" => "▽", # "▽"
145
+ "bigtriangleup" => "△", # "△"
146
+ "biguplus" => "⨄", # "⨄"
147
+ "bigvee" => "⋁", # "⋁"
148
+ "bigwedge" => "⋀", # "⋀"
149
+ "bkarow" => "⤍", # "⤍"
150
+ "blacklozenge" => "⧫", # "⧫"
151
+ "blacksquare" => "▪", # "▪"
152
+ "blacktriangle" => "▴", # "▴"
153
+ "blacktriangledown" => "▾", # "▾"
154
+ "blacktriangleleft" => "◂", # "◂"
155
+ "blacktriangleright" => "▸", # "▸"
156
+ "blank" => "␣", # "␣"
157
+ "blk12" => "▒", # "▒"
158
+ "blk14" => "░", # "░"
159
+ "blk34" => "▓", # "▓"
160
+ "block" => "█", # "█"
161
+ "bne" => "=⃥", # "=⃥"
162
+ "bnequiv" => "≡⃥", # "≡⃥"
163
+ "bNot" => "⫭", # "⫭"
164
+ "bnot" => "⌐", # "⌐"
165
+ "Bopf" => "𝔹", # "𝔹"
166
+ "bopf" => "𝕓", # "𝕓"
167
+ "bot" => "⊥", # "⊥"
168
+ "bottom" => "⊥", # "⊥"
169
+ "bowtie" => "⋈", # "⋈"
170
+ "boxbox" => "⧉", # "⧉"
171
+ "boxDL" => "╗", # "╗"
172
+ "boxDl" => "╖", # "╖"
173
+ "boxdL" => "╕", # "╕"
174
+ "boxdl" => "┐", # "┐"
175
+ "boxDR" => "╔", # "╔"
176
+ "boxDr" => "╓", # "╓"
177
+ "boxdR" => "╒", # "╒"
178
+ "boxdr" => "┌", # "┌"
179
+ "boxH" => "═", # "═"
180
+ "boxh" => "─", # "─"
181
+ "boxHD" => "╦", # "╦"
182
+ "boxHd" => "╤", # "╤"
183
+ "boxhD" => "╥", # "╥"
184
+ "boxhd" => "┬", # "┬"
185
+ "boxHU" => "╩", # "╩"
186
+ "boxHu" => "╧", # "╧"
187
+ "boxhU" => "╨", # "╨"
188
+ "boxhu" => "┴", # "┴"
189
+ "boxminus" => "⊟", # "⊟"
190
+ "boxplus" => "⊞", # "⊞"
191
+ "boxtimes" => "⊠", # "⊠"
192
+ "boxUL" => "╝", # "╝"
193
+ "boxUl" => "╜", # "╜"
194
+ "boxuL" => "╛", # "╛"
195
+ "boxul" => "┘", # "┘"
196
+ "boxUR" => "╚", # "╚"
197
+ "boxUr" => "╙", # "╙"
198
+ "boxuR" => "╘", # "╘"
199
+ "boxur" => "└", # "└"
200
+ "boxV" => "║", # "║"
201
+ "boxv" => "│", # "│"
202
+ "boxVH" => "╬", # "╬"
203
+ "boxVh" => "╫", # "╫"
204
+ "boxvH" => "╪", # "╪"
205
+ "boxvh" => "┼", # "┼"
206
+ "boxVL" => "╣", # "╣"
207
+ "boxVl" => "╢", # "╢"
208
+ "boxvL" => "╡", # "╡"
209
+ "boxvl" => "┤", # "┤"
210
+ "boxVR" => "╠", # "╠"
211
+ "boxVr" => "╟", # "╟"
212
+ "boxvR" => "╞", # "╞"
213
+ "boxvr" => "├", # "├"
214
+ "bprime" => "‵", # "‵"
215
+ "Breve" => "˘", # "˘"
216
+ "breve" => "˘", # "˘"
217
+ "brvbar" => "¦", # "¦"
218
+ "Bscr" => "ℬ", # "ℬ"
219
+ "bscr" => "𝒷", # "𝒷"
220
+ "bsemi" => "⁏", # "⁏"
221
+ "bsim" => "∽", # "∽"
222
+ "bsime" => "⋍", # "⋍"
223
+ "bsol" => "\\", # "\\"
224
+ "bsolb" => "⧅", # "⧅"
225
+ "bsolhsub" => "⟈", # "⟈"
226
+ "bull" => "•", # "•"
227
+ "bullet" => "•", # "•"
228
+ "bump" => "≎", # "≎"
229
+ "bumpE" => "⪮", # "⪮"
230
+ "bumpe" => "≏", # "≏"
231
+ "Bumpeq" => "≎", # "≎"
232
+ "bumpeq" => "≏", # "≏"
233
+ "Cacute" => "Ć", # "Ć"
234
+ "cacute" => "ć", # "ć"
235
+ "Cap" => "⋒", # "⋒"
236
+ "cap" => "∩", # "∩"
237
+ "capand" => "⩄", # "⩄"
238
+ "capbrcup" => "⩉", # "⩉"
239
+ "capcap" => "⩋", # "⩋"
240
+ "capcup" => "⩇", # "⩇"
241
+ "capdot" => "⩀", # "⩀"
242
+ "CapitalDifferentialD" => "ⅅ", # "ⅅ"
243
+ "caps" => "∩︀", # "∩︀"
244
+ "caret" => "⁁", # "⁁"
245
+ "caron" => "ˇ", # "ˇ"
246
+ "Cayleys" => "ℭ", # "ℭ"
247
+ "ccaps" => "⩍", # "⩍"
248
+ "Ccaron" => "Č", # "Č"
249
+ "ccaron" => "č", # "č"
250
+ "Ccedil" => "Ç", # "Ç"
251
+ "ccedil" => "ç", # "ç"
252
+ "Ccirc" => "Ĉ", # "Ĉ"
253
+ "ccirc" => "ĉ", # "ĉ"
254
+ "Cconint" => "∰", # "∰"
255
+ "ccups" => "⩌", # "⩌"
256
+ "ccupssm" => "⩐", # "⩐"
257
+ "Cdot" => "Ċ", # "Ċ"
258
+ "cdot" => "ċ", # "ċ"
259
+ "cedil" => "¸", # "¸"
260
+ "Cedilla" => "¸", # "¸"
261
+ "cemptyv" => "⦲", # "⦲"
262
+ "cent" => "¢", # "¢"
263
+ "CenterDot" => "·", # "·"
264
+ "centerdot" => "·", # "·"
265
+ "Cfr" => "ℭ", # "ℭ"
266
+ "cfr" => "𝔠", # "𝔠"
267
+ "CHcy" => "Ч", # "Ч"
268
+ "chcy" => "ч", # "ч"
269
+ "check" => "✓", # "✓"
270
+ "checkmark" => "✓", # "✓"
271
+ "Chi" => "Χ", # "Χ"
272
+ "chi" => "χ", # "χ"
273
+ "cir" => "○", # "○"
274
+ "circ" => "ˆ", # "ˆ"
275
+ "circeq" => "≗", # "≗"
276
+ "circlearrowleft" => "↺", # "↺"
277
+ "circlearrowright" => "↻", # "↻"
278
+ "circledast" => "⊛", # "⊛"
279
+ "circledcirc" => "⊚", # "⊚"
280
+ "circleddash" => "⊝", # "⊝"
281
+ "CircleDot" => "⊙", # "⊙"
282
+ "circledR" => "®", # "®"
283
+ "circledS" => "Ⓢ", # "Ⓢ"
284
+ "CircleMinus" => "⊖", # "⊖"
285
+ "CirclePlus" => "⊕", # "⊕"
286
+ "CircleTimes" => "⊗", # "⊗"
287
+ "cirE" => "⧃", # "⧃"
288
+ "cire" => "≗", # "≗"
289
+ "cirfnint" => "⨐", # "⨐"
290
+ "cirmid" => "⫯", # "⫯"
291
+ "cirscir" => "⧂", # "⧂"
292
+ "ClockwiseContourIntegral" => "∲", # "∲"
293
+ "CloseCurlyDoubleQuote" => "”", # "”"
294
+ "CloseCurlyQuote" => "’", # "’"
295
+ "clubs" => "♣", # "♣"
296
+ "clubsuit" => "♣", # "♣"
297
+ "Colon" => "∷", # "∷"
298
+ "colon" => ":", # ":"
299
+ "Colone" => "⩴", # "⩴"
300
+ "colone" => "≔", # "≔"
301
+ "coloneq" => "≔", # "≔"
302
+ "comma" => ",", # ","
303
+ "commat" => "@", # "@"
304
+ "comp" => "∁", # "∁"
305
+ "compfn" => "∘", # "∘"
306
+ "complement" => "∁", # "∁"
307
+ "complexes" => "ℂ", # "ℂ"
308
+ "cong" => "≅", # "≅"
309
+ "congdot" => "⩭", # "⩭"
310
+ "Congruent" => "≡", # "≡"
311
+ "Conint" => "∯", # "∯"
312
+ "conint" => "∮", # "∮"
313
+ "ContourIntegral" => "∮", # "∮"
314
+ "Copf" => "ℂ", # "ℂ"
315
+ "copf" => "𝕔", # "𝕔"
316
+ "coprod" => "∐", # "∐"
317
+ "Coproduct" => "∐", # "∐"
318
+ "COPY" => "©", # "©"
319
+ "copy" => "©", # "©"
320
+ "copysr" => "℗", # "℗"
321
+ "CounterClockwiseContourIntegral" => "∳", # "∳"
322
+ "crarr" => "↵", # "↵"
323
+ "Cross" => "⨯", # "⨯"
324
+ "cross" => "✗", # "✗"
325
+ "Cscr" => "𝒞", # "𝒞"
326
+ "cscr" => "𝒸", # "𝒸"
327
+ "csub" => "⫏", # "⫏"
328
+ "csube" => "⫑", # "⫑"
329
+ "csup" => "⫐", # "⫐"
330
+ "csupe" => "⫒", # "⫒"
331
+ "ctdot" => "⋯", # "⋯"
332
+ "cudarrl" => "⤸", # "⤸"
333
+ "cudarrr" => "⤵", # "⤵"
334
+ "cuepr" => "⋞", # "⋞"
335
+ "cuesc" => "⋟", # "⋟"
336
+ "cularr" => "↶", # "↶"
337
+ "cularrp" => "⤽", # "⤽"
338
+ "Cup" => "⋓", # "⋓"
339
+ "cup" => "∪", # "∪"
340
+ "cupbrcap" => "⩈", # "⩈"
341
+ "CupCap" => "≍", # "≍"
342
+ "cupcap" => "⩆", # "⩆"
343
+ "cupcup" => "⩊", # "⩊"
344
+ "cupdot" => "⊍", # "⊍"
345
+ "cupor" => "⩅", # "⩅"
346
+ "cups" => "∪︀", # "∪︀"
347
+ "curarr" => "↷", # "↷"
348
+ "curarrm" => "⤼", # "⤼"
349
+ "curlyeqprec" => "⋞", # "⋞"
350
+ "curlyeqsucc" => "⋟", # "⋟"
351
+ "curlyvee" => "⋎", # "⋎"
352
+ "curlywedge" => "⋏", # "⋏"
353
+ "curren" => "¤", # "¤"
354
+ "curvearrowleft" => "↶", # "↶"
355
+ "curvearrowright" => "↷", # "↷"
356
+ "cuvee" => "⋎", # "⋎"
357
+ "cuwed" => "⋏", # "⋏"
358
+ "cwconint" => "∲", # "∲"
359
+ "cwint" => "∱", # "∱"
360
+ "cylcty" => "⌭", # "⌭"
361
+ "Dagger" => "‡", # "‡"
362
+ "dagger" => "†", # "†"
363
+ "daleth" => "ℸ", # "ℸ"
364
+ "Darr" => "↡", # "↡"
365
+ "dArr" => "⇓", # "⇓"
366
+ "darr" => "↓", # "↓"
367
+ "dash" => "‐", # "‐"
368
+ "Dashv" => "⫤", # "⫤"
369
+ "dashv" => "⊣", # "⊣"
370
+ "dbkarow" => "⤏", # "⤏"
371
+ "dblac" => "˝", # "˝"
372
+ "Dcaron" => "Ď", # "Ď"
373
+ "dcaron" => "ď", # "ď"
374
+ "Dcy" => "Д", # "Д"
375
+ "dcy" => "д", # "д"
376
+ "DD" => "ⅅ", # "ⅅ"
377
+ "dd" => "ⅆ", # "ⅆ"
378
+ "ddagger" => "‡", # "‡"
379
+ "ddarr" => "⇊", # "⇊"
380
+ "DDotrahd" => "⤑", # "⤑"
381
+ "ddotseq" => "⩷", # "⩷"
382
+ "deg" => "°", # "°"
383
+ "Del" => "∇", # "∇"
384
+ "Delta" => "Δ", # "Δ"
385
+ "delta" => "δ", # "δ"
386
+ "demptyv" => "⦱", # "⦱"
387
+ "dfisht" => "⥿", # "⥿"
388
+ "Dfr" => "𝔇", # "𝔇"
389
+ "dfr" => "𝔡", # "𝔡"
390
+ "dHar" => "⥥", # "⥥"
391
+ "dharl" => "⇃", # "⇃"
392
+ "dharr" => "⇂", # "⇂"
393
+ "DiacriticalAcute" => "´", # "´"
394
+ "DiacriticalDot" => "˙", # "˙"
395
+ "DiacriticalDoubleAcute" => "˝", # "˝"
396
+ "DiacriticalGrave" => "`", # "`"
397
+ "DiacriticalTilde" => "˜", # "˜"
398
+ "diam" => "⋄", # "⋄"
399
+ "Diamond" => "⋄", # "⋄"
400
+ "diamond" => "⋄", # "⋄"
401
+ "diamondsuit" => "♦", # "♦"
402
+ "diams" => "♦", # "♦"
403
+ "die" => "¨", # "¨"
404
+ "DifferentialD" => "ⅆ", # "ⅆ"
405
+ "digamma" => "ϝ", # "ϝ"
406
+ "disin" => "⋲", # "⋲"
407
+ "div" => "÷", # "÷"
408
+ "divide" => "÷", # "÷"
409
+ "divideontimes" => "⋇", # "⋇"
410
+ "divonx" => "⋇", # "⋇"
411
+ "DJcy" => "Ђ", # "Ђ"
412
+ "djcy" => "ђ", # "ђ"
413
+ "dlcorn" => "⌞", # "⌞"
414
+ "dlcrop" => "⌍", # "⌍"
415
+ "dollar" => "$", # "$"
416
+ "Dopf" => "𝔻", # "𝔻"
417
+ "dopf" => "𝕕", # "𝕕"
418
+ "Dot" => "¨", # "¨"
419
+ "dot" => "˙", # "˙"
420
+ "DotDot" => "⃜", # "⃜"
421
+ "doteq" => "≐", # "≐"
422
+ "doteqdot" => "≑", # "≑"
423
+ "DotEqual" => "≐", # "≐"
424
+ "dotminus" => "∸", # "∸"
425
+ "dotplus" => "∔", # "∔"
426
+ "dotsquare" => "⊡", # "⊡"
427
+ "doublebarwedge" => "⌆", # "⌆"
428
+ "DoubleContourIntegral" => "∯", # "∯"
429
+ "DoubleDot" => "¨", # "¨"
430
+ "DoubleDownArrow" => "⇓", # "⇓"
431
+ "DoubleLeftArrow" => "⇐", # "⇐"
432
+ "DoubleLeftRightArrow" => "⇔", # "⇔"
433
+ "DoubleLeftTee" => "⫤", # "⫤"
434
+ "DoubleLongLeftArrow" => "⟸", # "⟸"
435
+ "DoubleLongLeftRightArrow" => "⟺", # "⟺"
436
+ "DoubleLongRightArrow" => "⟹", # "⟹"
437
+ "DoubleRightArrow" => "⇒", # "⇒"
438
+ "DoubleRightTee" => "⊨", # "⊨"
439
+ "DoubleUpArrow" => "⇑", # "⇑"
440
+ "DoubleUpDownArrow" => "⇕", # "⇕"
441
+ "DoubleVerticalBar" => "∥", # "∥"
442
+ "DownArrow" => "↓", # "↓"
443
+ "Downarrow" => "⇓", # "⇓"
444
+ "downarrow" => "↓", # "↓"
445
+ "DownArrowBar" => "⤓", # "⤓"
446
+ "DownArrowUpArrow" => "⇵", # "⇵"
447
+ "DownBreve" => "̑", # "̑"
448
+ "downdownarrows" => "⇊", # "⇊"
449
+ "downharpoonleft" => "⇃", # "⇃"
450
+ "downharpoonright" => "⇂", # "⇂"
451
+ "DownLeftRightVector" => "⥐", # "⥐"
452
+ "DownLeftTeeVector" => "⥞", # "⥞"
453
+ "DownLeftVector" => "↽", # "↽"
454
+ "DownLeftVectorBar" => "⥖", # "⥖"
455
+ "DownRightTeeVector" => "⥟", # "⥟"
456
+ "DownRightVector" => "⇁", # "⇁"
457
+ "DownRightVectorBar" => "⥗", # "⥗"
458
+ "DownTee" => "⊤", # "⊤"
459
+ "DownTeeArrow" => "↧", # "↧"
460
+ "drbkarow" => "⤐", # "⤐"
461
+ "drcorn" => "⌟", # "⌟"
462
+ "drcrop" => "⌌", # "⌌"
463
+ "Dscr" => "𝒟", # "𝒟"
464
+ "dscr" => "𝒹", # "𝒹"
465
+ "DScy" => "Ѕ", # "Ѕ"
466
+ "dscy" => "ѕ", # "ѕ"
467
+ "dsol" => "⧶", # "⧶"
468
+ "Dstrok" => "Đ", # "Đ"
469
+ "dstrok" => "đ", # "đ"
470
+ "dtdot" => "⋱", # "⋱"
471
+ "dtri" => "▿", # "▿"
472
+ "dtrif" => "▾", # "▾"
473
+ "duarr" => "⇵", # "⇵"
474
+ "duhar" => "⥯", # "⥯"
475
+ "dwangle" => "⦦", # "⦦"
476
+ "DZcy" => "Џ", # "Џ"
477
+ "dzcy" => "џ", # "џ"
478
+ "dzigrarr" => "⟿", # "⟿"
479
+ "Eacute" => "É", # "É"
480
+ "eacute" => "é", # "é"
481
+ "easter" => "⩮", # "⩮"
482
+ "Ecaron" => "Ě", # "Ě"
483
+ "ecaron" => "ě", # "ě"
484
+ "ecir" => "≖", # "≖"
485
+ "Ecirc" => "Ê", # "Ê"
486
+ "ecirc" => "ê", # "ê"
487
+ "ecolon" => "≕", # "≕"
488
+ "Ecy" => "Э", # "Э"
489
+ "ecy" => "э", # "э"
490
+ "eDDot" => "⩷", # "⩷"
491
+ "Edot" => "Ė", # "Ė"
492
+ "eDot" => "≑", # "≑"
493
+ "edot" => "ė", # "ė"
494
+ "ee" => "ⅇ", # "ⅇ"
495
+ "efDot" => "≒", # "≒"
496
+ "Efr" => "𝔈", # "𝔈"
497
+ "efr" => "𝔢", # "𝔢"
498
+ "eg" => "⪚", # "⪚"
499
+ "Egrave" => "È", # "È"
500
+ "egrave" => "è", # "è"
501
+ "egs" => "⪖", # "⪖"
502
+ "egsdot" => "⪘", # "⪘"
503
+ "el" => "⪙", # "⪙"
504
+ "Element" => "∈", # "∈"
505
+ "elinters" => "⏧", # "⏧"
506
+ "ell" => "ℓ", # "ℓ"
507
+ "els" => "⪕", # "⪕"
508
+ "elsdot" => "⪗", # "⪗"
509
+ "Emacr" => "Ē", # "Ē"
510
+ "emacr" => "ē", # "ē"
511
+ "empty" => "∅", # "∅"
512
+ "emptyset" => "∅", # "∅"
513
+ "EmptySmallSquare" => "◻", # "◻"
514
+ "emptyv" => "∅", # "∅"
515
+ "EmptyVerySmallSquare" => "▫", # "▫"
516
+ "emsp" => " ", # " "
517
+ "emsp13" => " ", # " "
518
+ "emsp14" => " ", # " "
519
+ "ENG" => "Ŋ", # "Ŋ"
520
+ "eng" => "ŋ", # "ŋ"
521
+ "ensp" => " ", # " "
522
+ "Eogon" => "Ę", # "Ę"
523
+ "eogon" => "ę", # "ę"
524
+ "Eopf" => "𝔼", # "𝔼"
525
+ "eopf" => "𝕖", # "𝕖"
526
+ "epar" => "⋕", # "⋕"
527
+ "eparsl" => "⧣", # "⧣"
528
+ "eplus" => "⩱", # "⩱"
529
+ "epsi" => "ε", # "ε"
530
+ "Epsilon" => "Ε", # "Ε"
531
+ "epsilon" => "ε", # "ε"
532
+ "epsiv" => "ϵ", # "ϵ"
533
+ "eqcirc" => "≖", # "≖"
534
+ "eqcolon" => "≕", # "≕"
535
+ "eqsim" => "≂", # "≂"
536
+ "eqslantgtr" => "⪖", # "⪖"
537
+ "eqslantless" => "⪕", # "⪕"
538
+ "Equal" => "⩵", # "⩵"
539
+ "equals" => "=", # "="
540
+ "EqualTilde" => "≂", # "≂"
541
+ "equest" => "≟", # "≟"
542
+ "Equilibrium" => "⇌", # "⇌"
543
+ "equiv" => "≡", # "≡"
544
+ "equivDD" => "⩸", # "⩸"
545
+ "eqvparsl" => "⧥", # "⧥"
546
+ "erarr" => "⥱", # "⥱"
547
+ "erDot" => "≓", # "≓"
548
+ "Escr" => "ℰ", # "ℰ"
549
+ "escr" => "ℯ", # "ℯ"
550
+ "esdot" => "≐", # "≐"
551
+ "Esim" => "⩳", # "⩳"
552
+ "esim" => "≂", # "≂"
553
+ "Eta" => "Η", # "Η"
554
+ "eta" => "η", # "η"
555
+ "ETH" => "Ð", # "Ð"
556
+ "eth" => "ð", # "ð"
557
+ "Euml" => "Ë", # "Ë"
558
+ "euml" => "ë", # "ë"
559
+ "euro" => "€", # "€"
560
+ "excl" => "!", # "!"
561
+ "exist" => "∃", # "∃"
562
+ "Exists" => "∃", # "∃"
563
+ "expectation" => "ℰ", # "ℰ"
564
+ "ExponentialE" => "ⅇ", # "ⅇ"
565
+ "exponentiale" => "ⅇ", # "ⅇ"
566
+ "fallingdotseq" => "≒", # "≒"
567
+ "Fcy" => "Ф", # "Ф"
568
+ "fcy" => "ф", # "ф"
569
+ "female" => "♀", # "♀"
570
+ "ffilig" => "ffi", # "ffi"
571
+ "fflig" => "ff", # "ff"
572
+ "ffllig" => "ffl", # "ffl"
573
+ "Ffr" => "𝔉", # "𝔉"
574
+ "ffr" => "𝔣", # "𝔣"
575
+ "filig" => "fi", # "fi"
576
+ "FilledSmallSquare" => "◼", # "◼"
577
+ "FilledVerySmallSquare" => "▪", # "▪"
578
+ "fjlig" => "fj", # "fj"
579
+ "flat" => "♭", # "♭"
580
+ "fllig" => "fl", # "fl"
581
+ "fltns" => "▱", # "▱"
582
+ "fnof" => "ƒ", # "ƒ"
583
+ "Fopf" => "𝔽", # "𝔽"
584
+ "fopf" => "𝕗", # "𝕗"
585
+ "ForAll" => "∀", # "∀"
586
+ "forall" => "∀", # "∀"
587
+ "fork" => "⋔", # "⋔"
588
+ "forkv" => "⫙", # "⫙"
589
+ "Fouriertrf" => "ℱ", # "ℱ"
590
+ "fpartint" => "⨍", # "⨍"
591
+ "frac12" => "½", # "½"
592
+ "frac13" => "⅓", # "⅓"
593
+ "frac14" => "¼", # "¼"
594
+ "frac15" => "⅕", # "⅕"
595
+ "frac16" => "⅙", # "⅙"
596
+ "frac18" => "⅛", # "⅛"
597
+ "frac23" => "⅔", # "⅔"
598
+ "frac25" => "⅖", # "⅖"
599
+ "frac34" => "¾", # "¾"
600
+ "frac35" => "⅗", # "⅗"
601
+ "frac38" => "⅜", # "⅜"
602
+ "frac45" => "⅘", # "⅘"
603
+ "frac56" => "⅚", # "⅚"
604
+ "frac58" => "⅝", # "⅝"
605
+ "frac78" => "⅞", # "⅞"
606
+ "frasl" => "⁄", # "⁄"
607
+ "frown" => "⌢", # "⌢"
608
+ "Fscr" => "ℱ", # "ℱ"
609
+ "fscr" => "𝒻", # "𝒻"
610
+ "gacute" => "ǵ", # "ǵ"
611
+ "Gamma" => "Γ", # "Γ"
612
+ "gamma" => "γ", # "γ"
613
+ "Gammad" => "Ϝ", # "Ϝ"
614
+ "gammad" => "ϝ", # "ϝ"
615
+ "gap" => "⪆", # "⪆"
616
+ "Gbreve" => "Ğ", # "Ğ"
617
+ "gbreve" => "ğ", # "ğ"
618
+ "Gcedil" => "Ģ", # "Ģ"
619
+ "Gcirc" => "Ĝ", # "Ĝ"
620
+ "gcirc" => "ĝ", # "ĝ"
621
+ "Gcy" => "Г", # "Г"
622
+ "gcy" => "г", # "г"
623
+ "Gdot" => "Ġ", # "Ġ"
624
+ "gdot" => "ġ", # "ġ"
625
+ "gE" => "≧", # "≧"
626
+ "ge" => "≥", # "≥"
627
+ "gEl" => "⪌", # "⪌"
628
+ "gel" => "⋛", # "⋛"
629
+ "geq" => "≥", # "≥"
630
+ "geqq" => "≧", # "≧"
631
+ "geqslant" => "⩾", # "⩾"
632
+ "ges" => "⩾", # "⩾"
633
+ "gescc" => "⪩", # "⪩"
634
+ "gesdot" => "⪀", # "⪀"
635
+ "gesdoto" => "⪂", # "⪂"
636
+ "gesdotol" => "⪄", # "⪄"
637
+ "gesl" => "⋛︀", # "⋛︀"
638
+ "gesles" => "⪔", # "⪔"
639
+ "Gfr" => "𝔊", # "𝔊"
640
+ "gfr" => "𝔤", # "𝔤"
641
+ "Gg" => "⋙", # "⋙"
642
+ "gg" => "≫", # "≫"
643
+ "ggg" => "⋙", # "⋙"
644
+ "gimel" => "ℷ", # "ℷ"
645
+ "GJcy" => "Ѓ", # "Ѓ"
646
+ "gjcy" => "ѓ", # "ѓ"
647
+ "gl" => "≷", # "≷"
648
+ "gla" => "⪥", # "⪥"
649
+ "glE" => "⪒", # "⪒"
650
+ "glj" => "⪤", # "⪤"
651
+ "gnap" => "⪊", # "⪊"
652
+ "gnapprox" => "⪊", # "⪊"
653
+ "gnE" => "≩", # "≩"
654
+ "gne" => "⪈", # "⪈"
655
+ "gneq" => "⪈", # "⪈"
656
+ "gneqq" => "≩", # "≩"
657
+ "gnsim" => "⋧", # "⋧"
658
+ "Gopf" => "𝔾", # "𝔾"
659
+ "gopf" => "𝕘", # "𝕘"
660
+ "grave" => "`", # "`"
661
+ "GreaterEqual" => "≥", # "≥"
662
+ "GreaterEqualLess" => "⋛", # "⋛"
663
+ "GreaterFullEqual" => "≧", # "≧"
664
+ "GreaterGreater" => "⪢", # "⪢"
665
+ "GreaterLess" => "≷", # "≷"
666
+ "GreaterSlantEqual" => "⩾", # "⩾"
667
+ "GreaterTilde" => "≳", # "≳"
668
+ "Gscr" => "𝒢", # "𝒢"
669
+ "gscr" => "ℊ", # "ℊ"
670
+ "gsim" => "≳", # "≳"
671
+ "gsime" => "⪎", # "⪎"
672
+ "gsiml" => "⪐", # "⪐"
673
+ "GT" => ">", # ">"
674
+ "Gt" => "≫", # "≫"
675
+ "gt" => ">", # ">"
676
+ "gtcc" => "⪧", # "⪧"
677
+ "gtcir" => "⩺", # "⩺"
678
+ "gtdot" => "⋗", # "⋗"
679
+ "gtlPar" => "⦕", # "⦕"
680
+ "gtquest" => "⩼", # "⩼"
681
+ "gtrapprox" => "⪆", # "⪆"
682
+ "gtrarr" => "⥸", # "⥸"
683
+ "gtrdot" => "⋗", # "⋗"
684
+ "gtreqless" => "⋛", # "⋛"
685
+ "gtreqqless" => "⪌", # "⪌"
686
+ "gtrless" => "≷", # "≷"
687
+ "gtrsim" => "≳", # "≳"
688
+ "gvertneqq" => "≩︀", # "≩︀"
689
+ "gvnE" => "≩︀", # "≩︀"
690
+ "Hacek" => "ˇ", # "ˇ"
691
+ "hairsp" => " ", # " "
692
+ "half" => "½", # "½"
693
+ "hamilt" => "ℋ", # "ℋ"
694
+ "HARDcy" => "Ъ", # "Ъ"
695
+ "hardcy" => "ъ", # "ъ"
696
+ "hArr" => "⇔", # "⇔"
697
+ "harr" => "↔", # "↔"
698
+ "harrcir" => "⥈", # "⥈"
699
+ "harrw" => "↭", # "↭"
700
+ "Hat" => "^", # "^"
701
+ "hbar" => "ℏ", # "ℏ"
702
+ "Hcirc" => "Ĥ", # "Ĥ"
703
+ "hcirc" => "ĥ", # "ĥ"
704
+ "hearts" => "♥", # "♥"
705
+ "heartsuit" => "♥", # "♥"
706
+ "hellip" => "…", # "…"
707
+ "hercon" => "⊹", # "⊹"
708
+ "Hfr" => "ℌ", # "ℌ"
709
+ "hfr" => "𝔥", # "𝔥"
710
+ "HilbertSpace" => "ℋ", # "ℋ"
711
+ "hksearow" => "⤥", # "⤥"
712
+ "hkswarow" => "⤦", # "⤦"
713
+ "hoarr" => "⇿", # "⇿"
714
+ "homtht" => "∻", # "∻"
715
+ "hookleftarrow" => "↩", # "↩"
716
+ "hookrightarrow" => "↪", # "↪"
717
+ "Hopf" => "ℍ", # "ℍ"
718
+ "hopf" => "𝕙", # "𝕙"
719
+ "horbar" => "―", # "―"
720
+ "HorizontalLine" => "─", # "─"
721
+ "Hscr" => "ℋ", # "ℋ"
722
+ "hscr" => "𝒽", # "𝒽"
723
+ "hslash" => "ℏ", # "ℏ"
724
+ "Hstrok" => "Ħ", # "Ħ"
725
+ "hstrok" => "ħ", # "ħ"
726
+ "HumpDownHump" => "≎", # "≎"
727
+ "HumpEqual" => "≏", # "≏"
728
+ "hybull" => "⁃", # "⁃"
729
+ "hyphen" => "‐", # "‐"
730
+ "Iacute" => "Í", # "Í"
731
+ "iacute" => "í", # "í"
732
+ "ic" => "⁣", # "⁣"
733
+ "Icirc" => "Î", # "Î"
734
+ "icirc" => "î", # "î"
735
+ "Icy" => "И", # "И"
736
+ "icy" => "и", # "и"
737
+ "Idot" => "İ", # "İ"
738
+ "IEcy" => "Е", # "Е"
739
+ "iecy" => "е", # "е"
740
+ "iexcl" => "¡", # "¡"
741
+ "iff" => "⇔", # "⇔"
742
+ "Ifr" => "ℑ", # "ℑ"
743
+ "ifr" => "𝔦", # "𝔦"
744
+ "Igrave" => "Ì", # "Ì"
745
+ "igrave" => "ì", # "ì"
746
+ "ii" => "ⅈ", # "ⅈ"
747
+ "iiiint" => "⨌", # "⨌"
748
+ "iiint" => "∭", # "∭"
749
+ "iinfin" => "⧜", # "⧜"
750
+ "iiota" => "℩", # "℩"
751
+ "IJlig" => "IJ", # "IJ"
752
+ "ijlig" => "ij", # "ij"
753
+ "Im" => "ℑ", # "ℑ"
754
+ "Imacr" => "Ī", # "Ī"
755
+ "imacr" => "ī", # "ī"
756
+ "image" => "ℑ", # "ℑ"
757
+ "ImaginaryI" => "ⅈ", # "ⅈ"
758
+ "imagline" => "ℐ", # "ℐ"
759
+ "imagpart" => "ℑ", # "ℑ"
760
+ "imath" => "ı", # "ı"
761
+ "imof" => "⊷", # "⊷"
762
+ "imped" => "Ƶ", # "Ƶ"
763
+ "Implies" => "⇒", # "⇒"
764
+ "in" => "∈", # "∈"
765
+ "incare" => "℅", # "℅"
766
+ "infin" => "∞", # "∞"
767
+ "infintie" => "⧝", # "⧝"
768
+ "inodot" => "ı", # "ı"
769
+ "Int" => "∬", # "∬"
770
+ "int" => "∫", # "∫"
771
+ "intcal" => "⊺", # "⊺"
772
+ "integers" => "ℤ", # "ℤ"
773
+ "Integral" => "∫", # "∫"
774
+ "intercal" => "⊺", # "⊺"
775
+ "Intersection" => "⋂", # "⋂"
776
+ "intlarhk" => "⨗", # "⨗"
777
+ "intprod" => "⨼", # "⨼"
778
+ "InvisibleComma" => "⁣", # "⁣"
779
+ "InvisibleTimes" => "⁢", # "⁢"
780
+ "IOcy" => "Ё", # "Ё"
781
+ "iocy" => "ё", # "ё"
782
+ "Iogon" => "Į", # "Į"
783
+ "iogon" => "į", # "į"
784
+ "Iopf" => "𝕀", # "𝕀"
785
+ "iopf" => "𝕚", # "𝕚"
786
+ "Iota" => "Ι", # "Ι"
787
+ "iota" => "ι", # "ι"
788
+ "iprod" => "⨼", # "⨼"
789
+ "iquest" => "¿", # "¿"
790
+ "Iscr" => "ℐ", # "ℐ"
791
+ "iscr" => "𝒾", # "𝒾"
792
+ "isin" => "∈", # "∈"
793
+ "isindot" => "⋵", # "⋵"
794
+ "isinE" => "⋹", # "⋹"
795
+ "isins" => "⋴", # "⋴"
796
+ "isinsv" => "⋳", # "⋳"
797
+ "isinv" => "∈", # "∈"
798
+ "it" => "⁢", # "⁢"
799
+ "Itilde" => "Ĩ", # "Ĩ"
800
+ "itilde" => "ĩ", # "ĩ"
801
+ "Iukcy" => "І", # "І"
802
+ "iukcy" => "і", # "і"
803
+ "Iuml" => "Ï", # "Ï"
804
+ "iuml" => "ï", # "ï"
805
+ "Jcirc" => "Ĵ", # "Ĵ"
806
+ "jcirc" => "ĵ", # "ĵ"
807
+ "Jcy" => "Й", # "Й"
808
+ "jcy" => "й", # "й"
809
+ "Jfr" => "𝔍", # "𝔍"
810
+ "jfr" => "𝔧", # "𝔧"
811
+ "jmath" => "ȷ", # "ȷ"
812
+ "Jopf" => "𝕁", # "𝕁"
813
+ "jopf" => "𝕛", # "𝕛"
814
+ "Jscr" => "𝒥", # "𝒥"
815
+ "jscr" => "𝒿", # "𝒿"
816
+ "Jsercy" => "Ј", # "Ј"
817
+ "jsercy" => "ј", # "ј"
818
+ "Jukcy" => "Є", # "Є"
819
+ "jukcy" => "є", # "є"
820
+ "Kappa" => "Κ", # "Κ"
821
+ "kappa" => "κ", # "κ"
822
+ "kappav" => "ϰ", # "ϰ"
823
+ "Kcedil" => "Ķ", # "Ķ"
824
+ "kcedil" => "ķ", # "ķ"
825
+ "Kcy" => "К", # "К"
826
+ "kcy" => "к", # "к"
827
+ "Kfr" => "𝔎", # "𝔎"
828
+ "kfr" => "𝔨", # "𝔨"
829
+ "kgreen" => "ĸ", # "ĸ"
830
+ "KHcy" => "Х", # "Х"
831
+ "khcy" => "х", # "х"
832
+ "KJcy" => "Ќ", # "Ќ"
833
+ "kjcy" => "ќ", # "ќ"
834
+ "Kopf" => "𝕂", # "𝕂"
835
+ "kopf" => "𝕜", # "𝕜"
836
+ "Kscr" => "𝒦", # "𝒦"
837
+ "kscr" => "𝓀", # "𝓀"
838
+ "lAarr" => "⇚", # "⇚"
839
+ "Lacute" => "Ĺ", # "Ĺ"
840
+ "lacute" => "ĺ", # "ĺ"
841
+ "laemptyv" => "⦴", # "⦴"
842
+ "lagran" => "ℒ", # "ℒ"
843
+ "Lambda" => "Λ", # "Λ"
844
+ "lambda" => "λ", # "λ"
845
+ "Lang" => "⟪", # "⟪"
846
+ "lang" => "⟨", # "⟨"
847
+ "langd" => "⦑", # "⦑"
848
+ "langle" => "⟨", # "⟨"
849
+ "lap" => "⪅", # "⪅"
850
+ "Laplacetrf" => "ℒ", # "ℒ"
851
+ "laquo" => "«", # "«"
852
+ "Larr" => "↞", # "↞"
853
+ "lArr" => "⇐", # "⇐"
854
+ "larr" => "←", # "←"
855
+ "larrb" => "⇤", # "⇤"
856
+ "larrbfs" => "⤟", # "⤟"
857
+ "larrfs" => "⤝", # "⤝"
858
+ "larrhk" => "↩", # "↩"
859
+ "larrlp" => "↫", # "↫"
860
+ "larrpl" => "⤹", # "⤹"
861
+ "larrsim" => "⥳", # "⥳"
862
+ "larrtl" => "↢", # "↢"
863
+ "lat" => "⪫", # "⪫"
864
+ "lAtail" => "⤛", # "⤛"
865
+ "latail" => "⤙", # "⤙"
866
+ "late" => "⪭", # "⪭"
867
+ "lates" => "⪭︀", # "⪭︀"
868
+ "lBarr" => "⤎", # "⤎"
869
+ "lbarr" => "⤌", # "⤌"
870
+ "lbbrk" => "❲", # "❲"
871
+ "lbrace" => "{", # "{"
872
+ "lbrack" => "[", # "["
873
+ "lbrke" => "⦋", # "⦋"
874
+ "lbrksld" => "⦏", # "⦏"
875
+ "lbrkslu" => "⦍", # "⦍"
876
+ "Lcaron" => "Ľ", # "Ľ"
877
+ "lcaron" => "ľ", # "ľ"
878
+ "Lcedil" => "Ļ", # "Ļ"
879
+ "lcedil" => "ļ", # "ļ"
880
+ "lceil" => "⌈", # "⌈"
881
+ "lcub" => "{", # "{"
882
+ "Lcy" => "Л", # "Л"
883
+ "lcy" => "л", # "л"
884
+ "ldca" => "⤶", # "⤶"
885
+ "ldquo" => "“", # "“"
886
+ "ldquor" => "„", # "„"
887
+ "ldrdhar" => "⥧", # "⥧"
888
+ "ldrushar" => "⥋", # "⥋"
889
+ "ldsh" => "↲", # "↲"
890
+ "lE" => "≦", # "≦"
891
+ "le" => "≤", # "≤"
892
+ "LeftAngleBracket" => "⟨", # "⟨"
893
+ "LeftArrow" => "←", # "←"
894
+ "Leftarrow" => "⇐", # "⇐"
895
+ "leftarrow" => "←", # "←"
896
+ "LeftArrowBar" => "⇤", # "⇤"
897
+ "LeftArrowRightArrow" => "⇆", # "⇆"
898
+ "leftarrowtail" => "↢", # "↢"
899
+ "LeftCeiling" => "⌈", # "⌈"
900
+ "LeftDoubleBracket" => "⟦", # "⟦"
901
+ "LeftDownTeeVector" => "⥡", # "⥡"
902
+ "LeftDownVector" => "⇃", # "⇃"
903
+ "LeftDownVectorBar" => "⥙", # "⥙"
904
+ "LeftFloor" => "⌊", # "⌊"
905
+ "leftharpoondown" => "↽", # "↽"
906
+ "leftharpoonup" => "↼", # "↼"
907
+ "leftleftarrows" => "⇇", # "⇇"
908
+ "LeftRightArrow" => "↔", # "↔"
909
+ "Leftrightarrow" => "⇔", # "⇔"
910
+ "leftrightarrow" => "↔", # "↔"
911
+ "leftrightarrows" => "⇆", # "⇆"
912
+ "leftrightharpoons" => "⇋", # "⇋"
913
+ "leftrightsquigarrow" => "↭", # "↭"
914
+ "LeftRightVector" => "⥎", # "⥎"
915
+ "LeftTee" => "⊣", # "⊣"
916
+ "LeftTeeArrow" => "↤", # "↤"
917
+ "LeftTeeVector" => "⥚", # "⥚"
918
+ "leftthreetimes" => "⋋", # "⋋"
919
+ "LeftTriangle" => "⊲", # "⊲"
920
+ "LeftTriangleBar" => "⧏", # "⧏"
921
+ "LeftTriangleEqual" => "⊴", # "⊴"
922
+ "LeftUpDownVector" => "⥑", # "⥑"
923
+ "LeftUpTeeVector" => "⥠", # "⥠"
924
+ "LeftUpVector" => "↿", # "↿"
925
+ "LeftUpVectorBar" => "⥘", # "⥘"
926
+ "LeftVector" => "↼", # "↼"
927
+ "LeftVectorBar" => "⥒", # "⥒"
928
+ "lEg" => "⪋", # "⪋"
929
+ "leg" => "⋚", # "⋚"
930
+ "leq" => "≤", # "≤"
931
+ "leqq" => "≦", # "≦"
932
+ "leqslant" => "⩽", # "⩽"
933
+ "les" => "⩽", # "⩽"
934
+ "lescc" => "⪨", # "⪨"
935
+ "lesdot" => "⩿", # "⩿"
936
+ "lesdoto" => "⪁", # "⪁"
937
+ "lesdotor" => "⪃", # "⪃"
938
+ "lesg" => "⋚︀", # "⋚︀"
939
+ "lesges" => "⪓", # "⪓"
940
+ "lessapprox" => "⪅", # "⪅"
941
+ "lessdot" => "⋖", # "⋖"
942
+ "lesseqgtr" => "⋚", # "⋚"
943
+ "lesseqqgtr" => "⪋", # "⪋"
944
+ "LessEqualGreater" => "⋚", # "⋚"
945
+ "LessFullEqual" => "≦", # "≦"
946
+ "LessGreater" => "≶", # "≶"
947
+ "lessgtr" => "≶", # "≶"
948
+ "LessLess" => "⪡", # "⪡"
949
+ "lesssim" => "≲", # "≲"
950
+ "LessSlantEqual" => "⩽", # "⩽"
951
+ "LessTilde" => "≲", # "≲"
952
+ "lfisht" => "⥼", # "⥼"
953
+ "lfloor" => "⌊", # "⌊"
954
+ "Lfr" => "𝔏", # "𝔏"
955
+ "lfr" => "𝔩", # "𝔩"
956
+ "lg" => "≶", # "≶"
957
+ "lgE" => "⪑", # "⪑"
958
+ "lHar" => "⥢", # "⥢"
959
+ "lhard" => "↽", # "↽"
960
+ "lharu" => "↼", # "↼"
961
+ "lharul" => "⥪", # "⥪"
962
+ "lhblk" => "▄", # "▄"
963
+ "LJcy" => "Љ", # "Љ"
964
+ "ljcy" => "љ", # "љ"
965
+ "Ll" => "⋘", # "⋘"
966
+ "ll" => "≪", # "≪"
967
+ "llarr" => "⇇", # "⇇"
968
+ "llcorner" => "⌞", # "⌞"
969
+ "Lleftarrow" => "⇚", # "⇚"
970
+ "llhard" => "⥫", # "⥫"
971
+ "lltri" => "◺", # "◺"
972
+ "Lmidot" => "Ŀ", # "Ŀ"
973
+ "lmidot" => "ŀ", # "ŀ"
974
+ "lmoust" => "⎰", # "⎰"
975
+ "lmoustache" => "⎰", # "⎰"
976
+ "lnap" => "⪉", # "⪉"
977
+ "lnapprox" => "⪉", # "⪉"
978
+ "lnE" => "≨", # "≨"
979
+ "lne" => "⪇", # "⪇"
980
+ "lneq" => "⪇", # "⪇"
981
+ "lneqq" => "≨", # "≨"
982
+ "lnsim" => "⋦", # "⋦"
983
+ "loang" => "⟬", # "⟬"
984
+ "loarr" => "⇽", # "⇽"
985
+ "lobrk" => "⟦", # "⟦"
986
+ "LongLeftArrow" => "⟵", # "⟵"
987
+ "Longleftarrow" => "⟸", # "⟸"
988
+ "longleftarrow" => "⟵", # "⟵"
989
+ "LongLeftRightArrow" => "⟷", # "⟷"
990
+ "Longleftrightarrow" => "⟺", # "⟺"
991
+ "longleftrightarrow" => "⟷", # "⟷"
992
+ "longmapsto" => "⟼", # "⟼"
993
+ "LongRightArrow" => "⟶", # "⟶"
994
+ "Longrightarrow" => "⟹", # "⟹"
995
+ "longrightarrow" => "⟶", # "⟶"
996
+ "looparrowleft" => "↫", # "↫"
997
+ "looparrowright" => "↬", # "↬"
998
+ "lopar" => "⦅", # "⦅"
999
+ "Lopf" => "𝕃", # "𝕃"
1000
+ "lopf" => "𝕝", # "𝕝"
1001
+ "loplus" => "⨭", # "⨭"
1002
+ "lotimes" => "⨴", # "⨴"
1003
+ "lowast" => "∗", # "∗"
1004
+ "lowbar" => "_", # "_"
1005
+ "LowerLeftArrow" => "↙", # "↙"
1006
+ "LowerRightArrow" => "↘", # "↘"
1007
+ "loz" => "◊", # "◊"
1008
+ "lozenge" => "◊", # "◊"
1009
+ "lozf" => "⧫", # "⧫"
1010
+ "lpar" => "(", # "("
1011
+ "lparlt" => "⦓", # "⦓"
1012
+ "lrarr" => "⇆", # "⇆"
1013
+ "lrcorner" => "⌟", # "⌟"
1014
+ "lrhar" => "⇋", # "⇋"
1015
+ "lrhard" => "⥭", # "⥭"
1016
+ "lrm" => "‎", # "‎"
1017
+ "lrtri" => "⊿", # "⊿"
1018
+ "lsaquo" => "‹", # "‹"
1019
+ "Lscr" => "ℒ", # "ℒ"
1020
+ "lscr" => "𝓁", # "𝓁"
1021
+ "Lsh" => "↰", # "↰"
1022
+ "lsh" => "↰", # "↰"
1023
+ "lsim" => "≲", # "≲"
1024
+ "lsime" => "⪍", # "⪍"
1025
+ "lsimg" => "⪏", # "⪏"
1026
+ "lsqb" => "[", # "["
1027
+ "lsquo" => "‘", # "‘"
1028
+ "lsquor" => "‚", # "‚"
1029
+ "Lstrok" => "Ł", # "Ł"
1030
+ "lstrok" => "ł", # "ł"
1031
+ "LT" => "<", # "<"
1032
+ "Lt" => "≪", # "≪"
1033
+ "lt" => "<", # "<"
1034
+ "ltcc" => "⪦", # "⪦"
1035
+ "ltcir" => "⩹", # "⩹"
1036
+ "ltdot" => "⋖", # "⋖"
1037
+ "lthree" => "⋋", # "⋋"
1038
+ "ltimes" => "⋉", # "⋉"
1039
+ "ltlarr" => "⥶", # "⥶"
1040
+ "ltquest" => "⩻", # "⩻"
1041
+ "ltri" => "◃", # "◃"
1042
+ "ltrie" => "⊴", # "⊴"
1043
+ "ltrif" => "◂", # "◂"
1044
+ "ltrPar" => "⦖", # "⦖"
1045
+ "lurdshar" => "⥊", # "⥊"
1046
+ "luruhar" => "⥦", # "⥦"
1047
+ "lvertneqq" => "≨︀", # "≨︀"
1048
+ "lvnE" => "≨︀", # "≨︀"
1049
+ "macr" => "¯", # "¯"
1050
+ "male" => "♂", # "♂"
1051
+ "malt" => "✠", # "✠"
1052
+ "maltese" => "✠", # "✠"
1053
+ "Map" => "⤅", # "⤅"
1054
+ "map" => "↦", # "↦"
1055
+ "mapsto" => "↦", # "↦"
1056
+ "mapstodown" => "↧", # "↧"
1057
+ "mapstoleft" => "↤", # "↤"
1058
+ "mapstoup" => "↥", # "↥"
1059
+ "marker" => "▮", # "▮"
1060
+ "mcomma" => "⨩", # "⨩"
1061
+ "Mcy" => "М", # "М"
1062
+ "mcy" => "м", # "м"
1063
+ "mdash" => "—", # "—"
1064
+ "mDDot" => "∺", # "∺"
1065
+ "measuredangle" => "∡", # "∡"
1066
+ "MediumSpace" => " ", # " "
1067
+ "Mellintrf" => "ℳ", # "ℳ"
1068
+ "Mfr" => "𝔐", # "𝔐"
1069
+ "mfr" => "𝔪", # "𝔪"
1070
+ "mho" => "℧", # "℧"
1071
+ "micro" => "µ", # "µ"
1072
+ "mid" => "∣", # "∣"
1073
+ "midast" => "*", # "*"
1074
+ "midcir" => "⫰", # "⫰"
1075
+ "middot" => "·", # "·"
1076
+ "minus" => "−", # "−"
1077
+ "minusb" => "⊟", # "⊟"
1078
+ "minusd" => "∸", # "∸"
1079
+ "minusdu" => "⨪", # "⨪"
1080
+ "MinusPlus" => "∓", # "∓"
1081
+ "mlcp" => "⫛", # "⫛"
1082
+ "mldr" => "…", # "…"
1083
+ "mnplus" => "∓", # "∓"
1084
+ "models" => "⊧", # "⊧"
1085
+ "Mopf" => "𝕄", # "𝕄"
1086
+ "mopf" => "𝕞", # "𝕞"
1087
+ "mp" => "∓", # "∓"
1088
+ "Mscr" => "ℳ", # "ℳ"
1089
+ "mscr" => "𝓂", # "𝓂"
1090
+ "mstpos" => "∾", # "∾"
1091
+ "Mu" => "Μ", # "Μ"
1092
+ "mu" => "μ", # "μ"
1093
+ "multimap" => "⊸", # "⊸"
1094
+ "mumap" => "⊸", # "⊸"
1095
+ "nabla" => "∇", # "∇"
1096
+ "Nacute" => "Ń", # "Ń"
1097
+ "nacute" => "ń", # "ń"
1098
+ "nang" => "∠⃒", # "∠⃒"
1099
+ "nap" => "≉", # "≉"
1100
+ "napE" => "⩰̸", # "⩰̸"
1101
+ "napid" => "≋̸", # "≋̸"
1102
+ "napos" => "ʼn", # "ʼn"
1103
+ "napprox" => "≉", # "≉"
1104
+ "natur" => "♮", # "♮"
1105
+ "natural" => "♮", # "♮"
1106
+ "naturals" => "ℕ", # "ℕ"
1107
+ "nbsp" => " ", # " "
1108
+ "nbump" => "≎̸", # "≎̸"
1109
+ "nbumpe" => "≏̸", # "≏̸"
1110
+ "ncap" => "⩃", # "⩃"
1111
+ "Ncaron" => "Ň", # "Ň"
1112
+ "ncaron" => "ň", # "ň"
1113
+ "Ncedil" => "Ņ", # "Ņ"
1114
+ "ncedil" => "ņ", # "ņ"
1115
+ "ncong" => "≇", # "≇"
1116
+ "ncongdot" => "⩭̸", # "⩭̸"
1117
+ "ncup" => "⩂", # "⩂"
1118
+ "Ncy" => "Н", # "Н"
1119
+ "ncy" => "н", # "н"
1120
+ "ndash" => "–", # "–"
1121
+ "ne" => "≠", # "≠"
1122
+ "nearhk" => "⤤", # "⤤"
1123
+ "neArr" => "⇗", # "⇗"
1124
+ "nearr" => "↗", # "↗"
1125
+ "nearrow" => "↗", # "↗"
1126
+ "nedot" => "≐̸", # "≐̸"
1127
+ "NegativeMediumSpace" => "​", # "​"
1128
+ "NegativeThickSpace" => "​", # "​"
1129
+ "NegativeThinSpace" => "​", # "​"
1130
+ "NegativeVeryThinSpace" => "​", # "​"
1131
+ "nequiv" => "≢", # "≢"
1132
+ "nesear" => "⤨", # "⤨"
1133
+ "nesim" => "≂̸", # "≂̸"
1134
+ "NestedGreaterGreater" => "≫", # "≫"
1135
+ "NestedLessLess" => "≪", # "≪"
1136
+ "NewLine" => "\n", # "\n"
1137
+ "nexist" => "∄", # "∄"
1138
+ "nexists" => "∄", # "∄"
1139
+ "Nfr" => "𝔑", # "𝔑"
1140
+ "nfr" => "𝔫", # "𝔫"
1141
+ "ngE" => "≧̸", # "≧̸"
1142
+ "nge" => "≱", # "≱"
1143
+ "ngeq" => "≱", # "≱"
1144
+ "ngeqq" => "≧̸", # "≧̸"
1145
+ "ngeqslant" => "⩾̸", # "⩾̸"
1146
+ "nges" => "⩾̸", # "⩾̸"
1147
+ "nGg" => "⋙̸", # "⋙̸"
1148
+ "ngsim" => "≵", # "≵"
1149
+ "nGt" => "≫⃒", # "≫⃒"
1150
+ "ngt" => "≯", # "≯"
1151
+ "ngtr" => "≯", # "≯"
1152
+ "nGtv" => "≫̸", # "≫̸"
1153
+ "nhArr" => "⇎", # "⇎"
1154
+ "nharr" => "↮", # "↮"
1155
+ "nhpar" => "⫲", # "⫲"
1156
+ "ni" => "∋", # "∋"
1157
+ "nis" => "⋼", # "⋼"
1158
+ "nisd" => "⋺", # "⋺"
1159
+ "niv" => "∋", # "∋"
1160
+ "NJcy" => "Њ", # "Њ"
1161
+ "njcy" => "њ", # "њ"
1162
+ "nlArr" => "⇍", # "⇍"
1163
+ "nlarr" => "↚", # "↚"
1164
+ "nldr" => "‥", # "‥"
1165
+ "nlE" => "≦̸", # "≦̸"
1166
+ "nle" => "≰", # "≰"
1167
+ "nLeftarrow" => "⇍", # "⇍"
1168
+ "nleftarrow" => "↚", # "↚"
1169
+ "nLeftrightarrow" => "⇎", # "⇎"
1170
+ "nleftrightarrow" => "↮", # "↮"
1171
+ "nleq" => "≰", # "≰"
1172
+ "nleqq" => "≦̸", # "≦̸"
1173
+ "nleqslant" => "⩽̸", # "⩽̸"
1174
+ "nles" => "⩽̸", # "⩽̸"
1175
+ "nless" => "≮", # "≮"
1176
+ "nLl" => "⋘̸", # "⋘̸"
1177
+ "nlsim" => "≴", # "≴"
1178
+ "nLt" => "≪⃒", # "≪⃒"
1179
+ "nlt" => "≮", # "≮"
1180
+ "nltri" => "⋪", # "⋪"
1181
+ "nltrie" => "⋬", # "⋬"
1182
+ "nLtv" => "≪̸", # "≪̸"
1183
+ "nmid" => "∤", # "∤"
1184
+ "NoBreak" => "⁠", # "⁠"
1185
+ "NonBreakingSpace" => " ", # " "
1186
+ "Nopf" => "ℕ", # "ℕ"
1187
+ "nopf" => "𝕟", # "𝕟"
1188
+ "Not" => "⫬", # "⫬"
1189
+ "not" => "¬", # "¬"
1190
+ "NotCongruent" => "≢", # "≢"
1191
+ "NotCupCap" => "≭", # "≭"
1192
+ "NotDoubleVerticalBar" => "∦", # "∦"
1193
+ "NotElement" => "∉", # "∉"
1194
+ "NotEqual" => "≠", # "≠"
1195
+ "NotEqualTilde" => "≂̸", # "≂̸"
1196
+ "NotExists" => "∄", # "∄"
1197
+ "NotGreater" => "≯", # "≯"
1198
+ "NotGreaterEqual" => "≱", # "≱"
1199
+ "NotGreaterFullEqual" => "≧̸", # "≧̸"
1200
+ "NotGreaterGreater" => "≫̸", # "≫̸"
1201
+ "NotGreaterLess" => "≹", # "≹"
1202
+ "NotGreaterSlantEqual" => "⩾̸", # "⩾̸"
1203
+ "NotGreaterTilde" => "≵", # "≵"
1204
+ "NotHumpDownHump" => "≎̸", # "≎̸"
1205
+ "NotHumpEqual" => "≏̸", # "≏̸"
1206
+ "notin" => "∉", # "∉"
1207
+ "notindot" => "⋵̸", # "⋵̸"
1208
+ "notinE" => "⋹̸", # "⋹̸"
1209
+ "notinva" => "∉", # "∉"
1210
+ "notinvb" => "⋷", # "⋷"
1211
+ "notinvc" => "⋶", # "⋶"
1212
+ "NotLeftTriangle" => "⋪", # "⋪"
1213
+ "NotLeftTriangleBar" => "⧏̸", # "⧏̸"
1214
+ "NotLeftTriangleEqual" => "⋬", # "⋬"
1215
+ "NotLess" => "≮", # "≮"
1216
+ "NotLessEqual" => "≰", # "≰"
1217
+ "NotLessGreater" => "≸", # "≸"
1218
+ "NotLessLess" => "≪̸", # "≪̸"
1219
+ "NotLessSlantEqual" => "⩽̸", # "⩽̸"
1220
+ "NotLessTilde" => "≴", # "≴"
1221
+ "NotNestedGreaterGreater" => "⪢̸", # "⪢̸"
1222
+ "NotNestedLessLess" => "⪡̸", # "⪡̸"
1223
+ "notni" => "∌", # "∌"
1224
+ "notniva" => "∌", # "∌"
1225
+ "notnivb" => "⋾", # "⋾"
1226
+ "notnivc" => "⋽", # "⋽"
1227
+ "NotPrecedes" => "⊀", # "⊀"
1228
+ "NotPrecedesEqual" => "⪯̸", # "⪯̸"
1229
+ "NotPrecedesSlantEqual" => "⋠", # "⋠"
1230
+ "NotReverseElement" => "∌", # "∌"
1231
+ "NotRightTriangle" => "⋫", # "⋫"
1232
+ "NotRightTriangleBar" => "⧐̸", # "⧐̸"
1233
+ "NotRightTriangleEqual" => "⋭", # "⋭"
1234
+ "NotSquareSubset" => "⊏̸", # "⊏̸"
1235
+ "NotSquareSubsetEqual" => "⋢", # "⋢"
1236
+ "NotSquareSuperset" => "⊐̸", # "⊐̸"
1237
+ "NotSquareSupersetEqual" => "⋣", # "⋣"
1238
+ "NotSubset" => "⊂⃒", # "⊂⃒"
1239
+ "NotSubsetEqual" => "⊈", # "⊈"
1240
+ "NotSucceeds" => "⊁", # "⊁"
1241
+ "NotSucceedsEqual" => "⪰̸", # "⪰̸"
1242
+ "NotSucceedsSlantEqual" => "⋡", # "⋡"
1243
+ "NotSucceedsTilde" => "≿̸", # "≿̸"
1244
+ "NotSuperset" => "⊃⃒", # "⊃⃒"
1245
+ "NotSupersetEqual" => "⊉", # "⊉"
1246
+ "NotTilde" => "≁", # "≁"
1247
+ "NotTildeEqual" => "≄", # "≄"
1248
+ "NotTildeFullEqual" => "≇", # "≇"
1249
+ "NotTildeTilde" => "≉", # "≉"
1250
+ "NotVerticalBar" => "∤", # "∤"
1251
+ "npar" => "∦", # "∦"
1252
+ "nparallel" => "∦", # "∦"
1253
+ "nparsl" => "⫽⃥", # "⫽⃥"
1254
+ "npart" => "∂̸", # "∂̸"
1255
+ "npolint" => "⨔", # "⨔"
1256
+ "npr" => "⊀", # "⊀"
1257
+ "nprcue" => "⋠", # "⋠"
1258
+ "npre" => "⪯̸", # "⪯̸"
1259
+ "nprec" => "⊀", # "⊀"
1260
+ "npreceq" => "⪯̸", # "⪯̸"
1261
+ "nrArr" => "⇏", # "⇏"
1262
+ "nrarr" => "↛", # "↛"
1263
+ "nrarrc" => "⤳̸", # "⤳̸"
1264
+ "nrarrw" => "↝̸", # "↝̸"
1265
+ "nRightarrow" => "⇏", # "⇏"
1266
+ "nrightarrow" => "↛", # "↛"
1267
+ "nrtri" => "⋫", # "⋫"
1268
+ "nrtrie" => "⋭", # "⋭"
1269
+ "nsc" => "⊁", # "⊁"
1270
+ "nsccue" => "⋡", # "⋡"
1271
+ "nsce" => "⪰̸", # "⪰̸"
1272
+ "Nscr" => "𝒩", # "𝒩"
1273
+ "nscr" => "𝓃", # "𝓃"
1274
+ "nshortmid" => "∤", # "∤"
1275
+ "nshortparallel" => "∦", # "∦"
1276
+ "nsim" => "≁", # "≁"
1277
+ "nsime" => "≄", # "≄"
1278
+ "nsimeq" => "≄", # "≄"
1279
+ "nsmid" => "∤", # "∤"
1280
+ "nspar" => "∦", # "∦"
1281
+ "nsqsube" => "⋢", # "⋢"
1282
+ "nsqsupe" => "⋣", # "⋣"
1283
+ "nsub" => "⊄", # "⊄"
1284
+ "nsubE" => "⫅̸", # "⫅̸"
1285
+ "nsube" => "⊈", # "⊈"
1286
+ "nsubset" => "⊂⃒", # "⊂⃒"
1287
+ "nsubseteq" => "⊈", # "⊈"
1288
+ "nsubseteqq" => "⫅̸", # "⫅̸"
1289
+ "nsucc" => "⊁", # "⊁"
1290
+ "nsucceq" => "⪰̸", # "⪰̸"
1291
+ "nsup" => "⊅", # "⊅"
1292
+ "nsupE" => "⫆̸", # "⫆̸"
1293
+ "nsupe" => "⊉", # "⊉"
1294
+ "nsupset" => "⊃⃒", # "⊃⃒"
1295
+ "nsupseteq" => "⊉", # "⊉"
1296
+ "nsupseteqq" => "⫆̸", # "⫆̸"
1297
+ "ntgl" => "≹", # "≹"
1298
+ "Ntilde" => "Ñ", # "Ñ"
1299
+ "ntilde" => "ñ", # "ñ"
1300
+ "ntlg" => "≸", # "≸"
1301
+ "ntriangleleft" => "⋪", # "⋪"
1302
+ "ntrianglelefteq" => "⋬", # "⋬"
1303
+ "ntriangleright" => "⋫", # "⋫"
1304
+ "ntrianglerighteq" => "⋭", # "⋭"
1305
+ "Nu" => "Ν", # "Ν"
1306
+ "nu" => "ν", # "ν"
1307
+ "num" => "#", # "#"
1308
+ "numero" => "№", # "№"
1309
+ "numsp" => " ", # " "
1310
+ "nvap" => "≍⃒", # "≍⃒"
1311
+ "nVDash" => "⊯", # "⊯"
1312
+ "nVdash" => "⊮", # "⊮"
1313
+ "nvDash" => "⊭", # "⊭"
1314
+ "nvdash" => "⊬", # "⊬"
1315
+ "nvge" => "≥⃒", # "≥⃒"
1316
+ "nvgt" => ">⃒", # ">⃒"
1317
+ "nvHarr" => "⤄", # "⤄"
1318
+ "nvinfin" => "⧞", # "⧞"
1319
+ "nvlArr" => "⤂", # "⤂"
1320
+ "nvle" => "≤⃒", # "≤⃒"
1321
+ "nvlt" => "<⃒", # "<⃒"
1322
+ "nvltrie" => "⊴⃒", # "⊴⃒"
1323
+ "nvrArr" => "⤃", # "⤃"
1324
+ "nvrtrie" => "⊵⃒", # "⊵⃒"
1325
+ "nvsim" => "∼⃒", # "∼⃒"
1326
+ "nwarhk" => "⤣", # "⤣"
1327
+ "nwArr" => "⇖", # "⇖"
1328
+ "nwarr" => "↖", # "↖"
1329
+ "nwarrow" => "↖", # "↖"
1330
+ "nwnear" => "⤧", # "⤧"
1331
+ "Oacute" => "Ó", # "Ó"
1332
+ "oacute" => "ó", # "ó"
1333
+ "oast" => "⊛", # "⊛"
1334
+ "ocir" => "⊚", # "⊚"
1335
+ "Ocirc" => "Ô", # "Ô"
1336
+ "ocirc" => "ô", # "ô"
1337
+ "Ocy" => "О", # "О"
1338
+ "ocy" => "о", # "о"
1339
+ "odash" => "⊝", # "⊝"
1340
+ "Odblac" => "Ő", # "Ő"
1341
+ "odblac" => "ő", # "ő"
1342
+ "odiv" => "⨸", # "⨸"
1343
+ "odot" => "⊙", # "⊙"
1344
+ "odsold" => "⦼", # "⦼"
1345
+ "OElig" => "Œ", # "Œ"
1346
+ "oelig" => "œ", # "œ"
1347
+ "ofcir" => "⦿", # "⦿"
1348
+ "Ofr" => "𝔒", # "𝔒"
1349
+ "ofr" => "𝔬", # "𝔬"
1350
+ "ogon" => "˛", # "˛"
1351
+ "Ograve" => "Ò", # "Ò"
1352
+ "ograve" => "ò", # "ò"
1353
+ "ogt" => "⧁", # "⧁"
1354
+ "ohbar" => "⦵", # "⦵"
1355
+ "ohm" => "Ω", # "Ω"
1356
+ "oint" => "∮", # "∮"
1357
+ "olarr" => "↺", # "↺"
1358
+ "olcir" => "⦾", # "⦾"
1359
+ "olcross" => "⦻", # "⦻"
1360
+ "oline" => "‾", # "‾"
1361
+ "olt" => "⧀", # "⧀"
1362
+ "Omacr" => "Ō", # "Ō"
1363
+ "omacr" => "ō", # "ō"
1364
+ "Omega" => "Ω", # "Ω"
1365
+ "omega" => "ω", # "ω"
1366
+ "Omicron" => "Ο", # "Ο"
1367
+ "omicron" => "ο", # "ο"
1368
+ "omid" => "⦶", # "⦶"
1369
+ "ominus" => "⊖", # "⊖"
1370
+ "Oopf" => "𝕆", # "𝕆"
1371
+ "oopf" => "𝕠", # "𝕠"
1372
+ "opar" => "⦷", # "⦷"
1373
+ "OpenCurlyDoubleQuote" => "“", # "“"
1374
+ "OpenCurlyQuote" => "‘", # "‘"
1375
+ "operp" => "⦹", # "⦹"
1376
+ "oplus" => "⊕", # "⊕"
1377
+ "Or" => "⩔", # "⩔"
1378
+ "or" => "∨", # "∨"
1379
+ "orarr" => "↻", # "↻"
1380
+ "ord" => "⩝", # "⩝"
1381
+ "order" => "ℴ", # "ℴ"
1382
+ "orderof" => "ℴ", # "ℴ"
1383
+ "ordf" => "ª", # "ª"
1384
+ "ordm" => "º", # "º"
1385
+ "origof" => "⊶", # "⊶"
1386
+ "oror" => "⩖", # "⩖"
1387
+ "orslope" => "⩗", # "⩗"
1388
+ "orv" => "⩛", # "⩛"
1389
+ "oS" => "Ⓢ", # "Ⓢ"
1390
+ "Oscr" => "𝒪", # "𝒪"
1391
+ "oscr" => "ℴ", # "ℴ"
1392
+ "Oslash" => "Ø", # "Ø"
1393
+ "oslash" => "ø", # "ø"
1394
+ "osol" => "⊘", # "⊘"
1395
+ "Otilde" => "Õ", # "Õ"
1396
+ "otilde" => "õ", # "õ"
1397
+ "Otimes" => "⨷", # "⨷"
1398
+ "otimes" => "⊗", # "⊗"
1399
+ "otimesas" => "⨶", # "⨶"
1400
+ "Ouml" => "Ö", # "Ö"
1401
+ "ouml" => "ö", # "ö"
1402
+ "ovbar" => "⌽", # "⌽"
1403
+ "OverBar" => "‾", # "‾"
1404
+ "OverBrace" => "⏞", # "⏞"
1405
+ "OverBracket" => "⎴", # "⎴"
1406
+ "OverParenthesis" => "⏜", # "⏜"
1407
+ "par" => "∥", # "∥"
1408
+ "para" => "¶", # "¶"
1409
+ "parallel" => "∥", # "∥"
1410
+ "parsim" => "⫳", # "⫳"
1411
+ "parsl" => "⫽", # "⫽"
1412
+ "part" => "∂", # "∂"
1413
+ "PartialD" => "∂", # "∂"
1414
+ "Pcy" => "П", # "П"
1415
+ "pcy" => "п", # "п"
1416
+ "percnt" => "%", # "%"
1417
+ "period" => ".", # "."
1418
+ "permil" => "‰", # "‰"
1419
+ "perp" => "⊥", # "⊥"
1420
+ "pertenk" => "‱", # "‱"
1421
+ "Pfr" => "𝔓", # "𝔓"
1422
+ "pfr" => "𝔭", # "𝔭"
1423
+ "Phi" => "Φ", # "Φ"
1424
+ "phi" => "φ", # "φ"
1425
+ "phiv" => "ϕ", # "ϕ"
1426
+ "phmmat" => "ℳ", # "ℳ"
1427
+ "phone" => "☎", # "☎"
1428
+ "Pi" => "Π", # "Π"
1429
+ "pi" => "π", # "π"
1430
+ "pitchfork" => "⋔", # "⋔"
1431
+ "piv" => "ϖ", # "ϖ"
1432
+ "planck" => "ℏ", # "ℏ"
1433
+ "planckh" => "ℎ", # "ℎ"
1434
+ "plankv" => "ℏ", # "ℏ"
1435
+ "plus" => "+", # "+"
1436
+ "plusacir" => "⨣", # "⨣"
1437
+ "plusb" => "⊞", # "⊞"
1438
+ "pluscir" => "⨢", # "⨢"
1439
+ "plusdo" => "∔", # "∔"
1440
+ "plusdu" => "⨥", # "⨥"
1441
+ "pluse" => "⩲", # "⩲"
1442
+ "PlusMinus" => "±", # "±"
1443
+ "plusmn" => "±", # "±"
1444
+ "plussim" => "⨦", # "⨦"
1445
+ "plustwo" => "⨧", # "⨧"
1446
+ "pm" => "±", # "±"
1447
+ "Poincareplane" => "ℌ", # "ℌ"
1448
+ "pointint" => "⨕", # "⨕"
1449
+ "Popf" => "ℙ", # "ℙ"
1450
+ "popf" => "𝕡", # "𝕡"
1451
+ "pound" => "£", # "£"
1452
+ "Pr" => "⪻", # "⪻"
1453
+ "pr" => "≺", # "≺"
1454
+ "prap" => "⪷", # "⪷"
1455
+ "prcue" => "≼", # "≼"
1456
+ "prE" => "⪳", # "⪳"
1457
+ "pre" => "⪯", # "⪯"
1458
+ "prec" => "≺", # "≺"
1459
+ "precapprox" => "⪷", # "⪷"
1460
+ "preccurlyeq" => "≼", # "≼"
1461
+ "Precedes" => "≺", # "≺"
1462
+ "PrecedesEqual" => "⪯", # "⪯"
1463
+ "PrecedesSlantEqual" => "≼", # "≼"
1464
+ "PrecedesTilde" => "≾", # "≾"
1465
+ "preceq" => "⪯", # "⪯"
1466
+ "precnapprox" => "⪹", # "⪹"
1467
+ "precneqq" => "⪵", # "⪵"
1468
+ "precnsim" => "⋨", # "⋨"
1469
+ "precsim" => "≾", # "≾"
1470
+ "Prime" => "″", # "″"
1471
+ "prime" => "′", # "′"
1472
+ "primes" => "ℙ", # "ℙ"
1473
+ "prnap" => "⪹", # "⪹"
1474
+ "prnE" => "⪵", # "⪵"
1475
+ "prnsim" => "⋨", # "⋨"
1476
+ "prod" => "∏", # "∏"
1477
+ "Product" => "∏", # "∏"
1478
+ "profalar" => "⌮", # "⌮"
1479
+ "profline" => "⌒", # "⌒"
1480
+ "profsurf" => "⌓", # "⌓"
1481
+ "prop" => "∝", # "∝"
1482
+ "Proportion" => "∷", # "∷"
1483
+ "Proportional" => "∝", # "∝"
1484
+ "propto" => "∝", # "∝"
1485
+ "prsim" => "≾", # "≾"
1486
+ "prurel" => "⊰", # "⊰"
1487
+ "Pscr" => "𝒫", # "𝒫"
1488
+ "pscr" => "𝓅", # "𝓅"
1489
+ "Psi" => "Ψ", # "Ψ"
1490
+ "psi" => "ψ", # "ψ"
1491
+ "puncsp" => " ", # " "
1492
+ "Qfr" => "𝔔", # "𝔔"
1493
+ "qfr" => "𝔮", # "𝔮"
1494
+ "qint" => "⨌", # "⨌"
1495
+ "Qopf" => "ℚ", # "ℚ"
1496
+ "qopf" => "𝕢", # "𝕢"
1497
+ "qprime" => "⁗", # "⁗"
1498
+ "Qscr" => "𝒬", # "𝒬"
1499
+ "qscr" => "𝓆", # "𝓆"
1500
+ "quaternions" => "ℍ", # "ℍ"
1501
+ "quatint" => "⨖", # "⨖"
1502
+ "quest" => "?", # "?"
1503
+ "questeq" => "≟", # "≟"
1504
+ "QUOT" => "\"", # "\""
1505
+ "quot" => "\"", # "\""
1506
+ "rAarr" => "⇛", # "⇛"
1507
+ "race" => "∽̱", # "∽̱"
1508
+ "Racute" => "Ŕ", # "Ŕ"
1509
+ "racute" => "ŕ", # "ŕ"
1510
+ "radic" => "√", # "√"
1511
+ "raemptyv" => "⦳", # "⦳"
1512
+ "Rang" => "⟫", # "⟫"
1513
+ "rang" => "⟩", # "⟩"
1514
+ "rangd" => "⦒", # "⦒"
1515
+ "range" => "⦥", # "⦥"
1516
+ "rangle" => "⟩", # "⟩"
1517
+ "raquo" => "»", # "»"
1518
+ "Rarr" => "↠", # "↠"
1519
+ "rArr" => "⇒", # "⇒"
1520
+ "rarr" => "→", # "→"
1521
+ "rarrap" => "⥵", # "⥵"
1522
+ "rarrb" => "⇥", # "⇥"
1523
+ "rarrbfs" => "⤠", # "⤠"
1524
+ "rarrc" => "⤳", # "⤳"
1525
+ "rarrfs" => "⤞", # "⤞"
1526
+ "rarrhk" => "↪", # "↪"
1527
+ "rarrlp" => "↬", # "↬"
1528
+ "rarrpl" => "⥅", # "⥅"
1529
+ "rarrsim" => "⥴", # "⥴"
1530
+ "Rarrtl" => "⤖", # "⤖"
1531
+ "rarrtl" => "↣", # "↣"
1532
+ "rarrw" => "↝", # "↝"
1533
+ "rAtail" => "⤜", # "⤜"
1534
+ "ratail" => "⤚", # "⤚"
1535
+ "ratio" => "∶", # "∶"
1536
+ "rationals" => "ℚ", # "ℚ"
1537
+ "RBarr" => "⤐", # "⤐"
1538
+ "rBarr" => "⤏", # "⤏"
1539
+ "rbarr" => "⤍", # "⤍"
1540
+ "rbbrk" => "❳", # "❳"
1541
+ "rbrace" => "}", # "}"
1542
+ "rbrack" => "]", # "]"
1543
+ "rbrke" => "⦌", # "⦌"
1544
+ "rbrksld" => "⦎", # "⦎"
1545
+ "rbrkslu" => "⦐", # "⦐"
1546
+ "Rcaron" => "Ř", # "Ř"
1547
+ "rcaron" => "ř", # "ř"
1548
+ "Rcedil" => "Ŗ", # "Ŗ"
1549
+ "rcedil" => "ŗ", # "ŗ"
1550
+ "rceil" => "⌉", # "⌉"
1551
+ "rcub" => "}", # "}"
1552
+ "Rcy" => "Р", # "Р"
1553
+ "rcy" => "р", # "р"
1554
+ "rdca" => "⤷", # "⤷"
1555
+ "rdldhar" => "⥩", # "⥩"
1556
+ "rdquo" => "”", # "”"
1557
+ "rdquor" => "”", # "”"
1558
+ "rdsh" => "↳", # "↳"
1559
+ "Re" => "ℜ", # "ℜ"
1560
+ "real" => "ℜ", # "ℜ"
1561
+ "realine" => "ℛ", # "ℛ"
1562
+ "realpart" => "ℜ", # "ℜ"
1563
+ "reals" => "ℝ", # "ℝ"
1564
+ "rect" => "▭", # "▭"
1565
+ "REG" => "®", # "®"
1566
+ "reg" => "®", # "®"
1567
+ "ReverseElement" => "∋", # "∋"
1568
+ "ReverseEquilibrium" => "⇋", # "⇋"
1569
+ "ReverseUpEquilibrium" => "⥯", # "⥯"
1570
+ "rfisht" => "⥽", # "⥽"
1571
+ "rfloor" => "⌋", # "⌋"
1572
+ "Rfr" => "ℜ", # "ℜ"
1573
+ "rfr" => "𝔯", # "𝔯"
1574
+ "rHar" => "⥤", # "⥤"
1575
+ "rhard" => "⇁", # "⇁"
1576
+ "rharu" => "⇀", # "⇀"
1577
+ "rharul" => "⥬", # "⥬"
1578
+ "Rho" => "Ρ", # "Ρ"
1579
+ "rho" => "ρ", # "ρ"
1580
+ "rhov" => "ϱ", # "ϱ"
1581
+ "RightAngleBracket" => "⟩", # "⟩"
1582
+ "RightArrow" => "→", # "→"
1583
+ "Rightarrow" => "⇒", # "⇒"
1584
+ "rightarrow" => "→", # "→"
1585
+ "RightArrowBar" => "⇥", # "⇥"
1586
+ "RightArrowLeftArrow" => "⇄", # "⇄"
1587
+ "rightarrowtail" => "↣", # "↣"
1588
+ "RightCeiling" => "⌉", # "⌉"
1589
+ "RightDoubleBracket" => "⟧", # "⟧"
1590
+ "RightDownTeeVector" => "⥝", # "⥝"
1591
+ "RightDownVector" => "⇂", # "⇂"
1592
+ "RightDownVectorBar" => "⥕", # "⥕"
1593
+ "RightFloor" => "⌋", # "⌋"
1594
+ "rightharpoondown" => "⇁", # "⇁"
1595
+ "rightharpoonup" => "⇀", # "⇀"
1596
+ "rightleftarrows" => "⇄", # "⇄"
1597
+ "rightleftharpoons" => "⇌", # "⇌"
1598
+ "rightrightarrows" => "⇉", # "⇉"
1599
+ "rightsquigarrow" => "↝", # "↝"
1600
+ "RightTee" => "⊢", # "⊢"
1601
+ "RightTeeArrow" => "↦", # "↦"
1602
+ "RightTeeVector" => "⥛", # "⥛"
1603
+ "rightthreetimes" => "⋌", # "⋌"
1604
+ "RightTriangle" => "⊳", # "⊳"
1605
+ "RightTriangleBar" => "⧐", # "⧐"
1606
+ "RightTriangleEqual" => "⊵", # "⊵"
1607
+ "RightUpDownVector" => "⥏", # "⥏"
1608
+ "RightUpTeeVector" => "⥜", # "⥜"
1609
+ "RightUpVector" => "↾", # "↾"
1610
+ "RightUpVectorBar" => "⥔", # "⥔"
1611
+ "RightVector" => "⇀", # "⇀"
1612
+ "RightVectorBar" => "⥓", # "⥓"
1613
+ "ring" => "˚", # "˚"
1614
+ "risingdotseq" => "≓", # "≓"
1615
+ "rlarr" => "⇄", # "⇄"
1616
+ "rlhar" => "⇌", # "⇌"
1617
+ "rlm" => "‏", # "‏"
1618
+ "rmoust" => "⎱", # "⎱"
1619
+ "rmoustache" => "⎱", # "⎱"
1620
+ "rnmid" => "⫮", # "⫮"
1621
+ "roang" => "⟭", # "⟭"
1622
+ "roarr" => "⇾", # "⇾"
1623
+ "robrk" => "⟧", # "⟧"
1624
+ "ropar" => "⦆", # "⦆"
1625
+ "Ropf" => "ℝ", # "ℝ"
1626
+ "ropf" => "𝕣", # "𝕣"
1627
+ "roplus" => "⨮", # "⨮"
1628
+ "rotimes" => "⨵", # "⨵"
1629
+ "RoundImplies" => "⥰", # "⥰"
1630
+ "rpar" => ")", # ")"
1631
+ "rpargt" => "⦔", # "⦔"
1632
+ "rppolint" => "⨒", # "⨒"
1633
+ "rrarr" => "⇉", # "⇉"
1634
+ "Rrightarrow" => "⇛", # "⇛"
1635
+ "rsaquo" => "›", # "›"
1636
+ "Rscr" => "ℛ", # "ℛ"
1637
+ "rscr" => "𝓇", # "𝓇"
1638
+ "Rsh" => "↱", # "↱"
1639
+ "rsh" => "↱", # "↱"
1640
+ "rsqb" => "]", # "]"
1641
+ "rsquo" => "’", # "’"
1642
+ "rsquor" => "’", # "’"
1643
+ "rthree" => "⋌", # "⋌"
1644
+ "rtimes" => "⋊", # "⋊"
1645
+ "rtri" => "▹", # "▹"
1646
+ "rtrie" => "⊵", # "⊵"
1647
+ "rtrif" => "▸", # "▸"
1648
+ "rtriltri" => "⧎", # "⧎"
1649
+ "RuleDelayed" => "⧴", # "⧴"
1650
+ "ruluhar" => "⥨", # "⥨"
1651
+ "rx" => "℞", # "℞"
1652
+ "Sacute" => "Ś", # "Ś"
1653
+ "sacute" => "ś", # "ś"
1654
+ "sbquo" => "‚", # "‚"
1655
+ "Sc" => "⪼", # "⪼"
1656
+ "sc" => "≻", # "≻"
1657
+ "scap" => "⪸", # "⪸"
1658
+ "Scaron" => "Š", # "Š"
1659
+ "scaron" => "š", # "š"
1660
+ "sccue" => "≽", # "≽"
1661
+ "scE" => "⪴", # "⪴"
1662
+ "sce" => "⪰", # "⪰"
1663
+ "Scedil" => "Ş", # "Ş"
1664
+ "scedil" => "ş", # "ş"
1665
+ "Scirc" => "Ŝ", # "Ŝ"
1666
+ "scirc" => "ŝ", # "ŝ"
1667
+ "scnap" => "⪺", # "⪺"
1668
+ "scnE" => "⪶", # "⪶"
1669
+ "scnsim" => "⋩", # "⋩"
1670
+ "scpolint" => "⨓", # "⨓"
1671
+ "scsim" => "≿", # "≿"
1672
+ "Scy" => "С", # "С"
1673
+ "scy" => "с", # "с"
1674
+ "sdot" => "⋅", # "⋅"
1675
+ "sdotb" => "⊡", # "⊡"
1676
+ "sdote" => "⩦", # "⩦"
1677
+ "searhk" => "⤥", # "⤥"
1678
+ "seArr" => "⇘", # "⇘"
1679
+ "searr" => "↘", # "↘"
1680
+ "searrow" => "↘", # "↘"
1681
+ "sect" => "§", # "§"
1682
+ "semi" => "", # ""
1683
+ "seswar" => "⤩", # "⤩"
1684
+ "setminus" => "∖", # "∖"
1685
+ "setmn" => "∖", # "∖"
1686
+ "sext" => "✶", # "✶"
1687
+ "Sfr" => "𝔖", # "𝔖"
1688
+ "sfr" => "𝔰", # "𝔰"
1689
+ "sfrown" => "⌢", # "⌢"
1690
+ "sharp" => "♯", # "♯"
1691
+ "SHCHcy" => "Щ", # "Щ"
1692
+ "shchcy" => "щ", # "щ"
1693
+ "SHcy" => "Ш", # "Ш"
1694
+ "shcy" => "ш", # "ш"
1695
+ "ShortDownArrow" => "↓", # "↓"
1696
+ "ShortLeftArrow" => "←", # "←"
1697
+ "shortmid" => "∣", # "∣"
1698
+ "shortparallel" => "∥", # "∥"
1699
+ "ShortRightArrow" => "→", # "→"
1700
+ "ShortUpArrow" => "↑", # "↑"
1701
+ "shy" => "­", # "­"
1702
+ "Sigma" => "Σ", # "Σ"
1703
+ "sigma" => "σ", # "σ"
1704
+ "sigmaf" => "ς", # "ς"
1705
+ "sigmav" => "ς", # "ς"
1706
+ "sim" => "∼", # "∼"
1707
+ "simdot" => "⩪", # "⩪"
1708
+ "sime" => "≃", # "≃"
1709
+ "simeq" => "≃", # "≃"
1710
+ "simg" => "⪞", # "⪞"
1711
+ "simgE" => "⪠", # "⪠"
1712
+ "siml" => "⪝", # "⪝"
1713
+ "simlE" => "⪟", # "⪟"
1714
+ "simne" => "≆", # "≆"
1715
+ "simplus" => "⨤", # "⨤"
1716
+ "simrarr" => "⥲", # "⥲"
1717
+ "slarr" => "←", # "←"
1718
+ "SmallCircle" => "∘", # "∘"
1719
+ "smallsetminus" => "∖", # "∖"
1720
+ "smashp" => "⨳", # "⨳"
1721
+ "smeparsl" => "⧤", # "⧤"
1722
+ "smid" => "∣", # "∣"
1723
+ "smile" => "⌣", # "⌣"
1724
+ "smt" => "⪪", # "⪪"
1725
+ "smte" => "⪬", # "⪬"
1726
+ "smtes" => "⪬︀", # "⪬︀"
1727
+ "SOFTcy" => "Ь", # "Ь"
1728
+ "softcy" => "ь", # "ь"
1729
+ "sol" => "/", # "/"
1730
+ "solb" => "⧄", # "⧄"
1731
+ "solbar" => "⌿", # "⌿"
1732
+ "Sopf" => "𝕊", # "𝕊"
1733
+ "sopf" => "𝕤", # "𝕤"
1734
+ "spades" => "♠", # "♠"
1735
+ "spadesuit" => "♠", # "♠"
1736
+ "spar" => "∥", # "∥"
1737
+ "sqcap" => "⊓", # "⊓"
1738
+ "sqcaps" => "⊓︀", # "⊓︀"
1739
+ "sqcup" => "⊔", # "⊔"
1740
+ "sqcups" => "⊔︀", # "⊔︀"
1741
+ "Sqrt" => "√", # "√"
1742
+ "sqsub" => "⊏", # "⊏"
1743
+ "sqsube" => "⊑", # "⊑"
1744
+ "sqsubset" => "⊏", # "⊏"
1745
+ "sqsubseteq" => "⊑", # "⊑"
1746
+ "sqsup" => "⊐", # "⊐"
1747
+ "sqsupe" => "⊒", # "⊒"
1748
+ "sqsupset" => "⊐", # "⊐"
1749
+ "sqsupseteq" => "⊒", # "⊒"
1750
+ "squ" => "□", # "□"
1751
+ "Square" => "□", # "□"
1752
+ "square" => "□", # "□"
1753
+ "SquareIntersection" => "⊓", # "⊓"
1754
+ "SquareSubset" => "⊏", # "⊏"
1755
+ "SquareSubsetEqual" => "⊑", # "⊑"
1756
+ "SquareSuperset" => "⊐", # "⊐"
1757
+ "SquareSupersetEqual" => "⊒", # "⊒"
1758
+ "SquareUnion" => "⊔", # "⊔"
1759
+ "squarf" => "▪", # "▪"
1760
+ "squf" => "▪", # "▪"
1761
+ "srarr" => "→", # "→"
1762
+ "Sscr" => "𝒮", # "𝒮"
1763
+ "sscr" => "𝓈", # "𝓈"
1764
+ "ssetmn" => "∖", # "∖"
1765
+ "ssmile" => "⌣", # "⌣"
1766
+ "sstarf" => "⋆", # "⋆"
1767
+ "Star" => "⋆", # "⋆"
1768
+ "star" => "☆", # "☆"
1769
+ "starf" => "★", # "★"
1770
+ "straightepsilon" => "ϵ", # "ϵ"
1771
+ "straightphi" => "ϕ", # "ϕ"
1772
+ "strns" => "¯", # "¯"
1773
+ "Sub" => "⋐", # "⋐"
1774
+ "sub" => "⊂", # "⊂"
1775
+ "subdot" => "⪽", # "⪽"
1776
+ "subE" => "⫅", # "⫅"
1777
+ "sube" => "⊆", # "⊆"
1778
+ "subedot" => "⫃", # "⫃"
1779
+ "submult" => "⫁", # "⫁"
1780
+ "subnE" => "⫋", # "⫋"
1781
+ "subne" => "⊊", # "⊊"
1782
+ "subplus" => "⪿", # "⪿"
1783
+ "subrarr" => "⥹", # "⥹"
1784
+ "Subset" => "⋐", # "⋐"
1785
+ "subset" => "⊂", # "⊂"
1786
+ "subseteq" => "⊆", # "⊆"
1787
+ "subseteqq" => "⫅", # "⫅"
1788
+ "SubsetEqual" => "⊆", # "⊆"
1789
+ "subsetneq" => "⊊", # "⊊"
1790
+ "subsetneqq" => "⫋", # "⫋"
1791
+ "subsim" => "⫇", # "⫇"
1792
+ "subsub" => "⫕", # "⫕"
1793
+ "subsup" => "⫓", # "⫓"
1794
+ "succ" => "≻", # "≻"
1795
+ "succapprox" => "⪸", # "⪸"
1796
+ "succcurlyeq" => "≽", # "≽"
1797
+ "Succeeds" => "≻", # "≻"
1798
+ "SucceedsEqual" => "⪰", # "⪰"
1799
+ "SucceedsSlantEqual" => "≽", # "≽"
1800
+ "SucceedsTilde" => "≿", # "≿"
1801
+ "succeq" => "⪰", # "⪰"
1802
+ "succnapprox" => "⪺", # "⪺"
1803
+ "succneqq" => "⪶", # "⪶"
1804
+ "succnsim" => "⋩", # "⋩"
1805
+ "succsim" => "≿", # "≿"
1806
+ "SuchThat" => "∋", # "∋"
1807
+ "Sum" => "∑", # "∑"
1808
+ "sum" => "∑", # "∑"
1809
+ "sung" => "♪", # "♪"
1810
+ "Sup" => "⋑", # "⋑"
1811
+ "sup" => "⊃", # "⊃"
1812
+ "sup1" => "¹", # "¹"
1813
+ "sup2" => "²", # "²"
1814
+ "sup3" => "³", # "³"
1815
+ "supdot" => "⪾", # "⪾"
1816
+ "supdsub" => "⫘", # "⫘"
1817
+ "supE" => "⫆", # "⫆"
1818
+ "supe" => "⊇", # "⊇"
1819
+ "supedot" => "⫄", # "⫄"
1820
+ "Superset" => "⊃", # "⊃"
1821
+ "SupersetEqual" => "⊇", # "⊇"
1822
+ "suphsol" => "⟉", # "⟉"
1823
+ "suphsub" => "⫗", # "⫗"
1824
+ "suplarr" => "⥻", # "⥻"
1825
+ "supmult" => "⫂", # "⫂"
1826
+ "supnE" => "⫌", # "⫌"
1827
+ "supne" => "⊋", # "⊋"
1828
+ "supplus" => "⫀", # "⫀"
1829
+ "Supset" => "⋑", # "⋑"
1830
+ "supset" => "⊃", # "⊃"
1831
+ "supseteq" => "⊇", # "⊇"
1832
+ "supseteqq" => "⫆", # "⫆"
1833
+ "supsetneq" => "⊋", # "⊋"
1834
+ "supsetneqq" => "⫌", # "⫌"
1835
+ "supsim" => "⫈", # "⫈"
1836
+ "supsub" => "⫔", # "⫔"
1837
+ "supsup" => "⫖", # "⫖"
1838
+ "swarhk" => "⤦", # "⤦"
1839
+ "swArr" => "⇙", # "⇙"
1840
+ "swarr" => "↙", # "↙"
1841
+ "swarrow" => "↙", # "↙"
1842
+ "swnwar" => "⤪", # "⤪"
1843
+ "szlig" => "ß", # "ß"
1844
+ "Tab" => "\t", # "\t"
1845
+ "target" => "⌖", # "⌖"
1846
+ "Tau" => "Τ", # "Τ"
1847
+ "tau" => "τ", # "τ"
1848
+ "tbrk" => "⎴", # "⎴"
1849
+ "Tcaron" => "Ť", # "Ť"
1850
+ "tcaron" => "ť", # "ť"
1851
+ "Tcedil" => "Ţ", # "Ţ"
1852
+ "tcedil" => "ţ", # "ţ"
1853
+ "Tcy" => "Т", # "Т"
1854
+ "tcy" => "т", # "т"
1855
+ "tdot" => "⃛", # "⃛"
1856
+ "telrec" => "⌕", # "⌕"
1857
+ "Tfr" => "𝔗", # "𝔗"
1858
+ "tfr" => "𝔱", # "𝔱"
1859
+ "there4" => "∴", # "∴"
1860
+ "Therefore" => "∴", # "∴"
1861
+ "therefore" => "∴", # "∴"
1862
+ "Theta" => "Θ", # "Θ"
1863
+ "theta" => "θ", # "θ"
1864
+ "thetasym" => "ϑ", # "ϑ"
1865
+ "thetav" => "ϑ", # "ϑ"
1866
+ "thickapprox" => "≈", # "≈"
1867
+ "thicksim" => "∼", # "∼"
1868
+ "ThickSpace" => "  ", # "  "
1869
+ "thinsp" => " ", # " "
1870
+ "ThinSpace" => " ", # " "
1871
+ "thkap" => "≈", # "≈"
1872
+ "thksim" => "∼", # "∼"
1873
+ "THORN" => "Þ", # "Þ"
1874
+ "thorn" => "þ", # "þ"
1875
+ "Tilde" => "∼", # "∼"
1876
+ "tilde" => "˜", # "˜"
1877
+ "TildeEqual" => "≃", # "≃"
1878
+ "TildeFullEqual" => "≅", # "≅"
1879
+ "TildeTilde" => "≈", # "≈"
1880
+ "times" => "×", # "×"
1881
+ "timesb" => "⊠", # "⊠"
1882
+ "timesbar" => "⨱", # "⨱"
1883
+ "timesd" => "⨰", # "⨰"
1884
+ "tint" => "∭", # "∭"
1885
+ "toea" => "⤨", # "⤨"
1886
+ "top" => "⊤", # "⊤"
1887
+ "topbot" => "⌶", # "⌶"
1888
+ "topcir" => "⫱", # "⫱"
1889
+ "Topf" => "𝕋", # "𝕋"
1890
+ "topf" => "𝕥", # "𝕥"
1891
+ "topfork" => "⫚", # "⫚"
1892
+ "tosa" => "⤩", # "⤩"
1893
+ "tprime" => "‴", # "‴"
1894
+ "TRADE" => "™", # "™"
1895
+ "trade" => "™", # "™"
1896
+ "triangle" => "▵", # "▵"
1897
+ "triangledown" => "▿", # "▿"
1898
+ "triangleleft" => "◃", # "◃"
1899
+ "trianglelefteq" => "⊴", # "⊴"
1900
+ "triangleq" => "≜", # "≜"
1901
+ "triangleright" => "▹", # "▹"
1902
+ "trianglerighteq" => "⊵", # "⊵"
1903
+ "tridot" => "◬", # "◬"
1904
+ "trie" => "≜", # "≜"
1905
+ "triminus" => "⨺", # "⨺"
1906
+ "TripleDot" => "⃛", # "⃛"
1907
+ "triplus" => "⨹", # "⨹"
1908
+ "trisb" => "⧍", # "⧍"
1909
+ "tritime" => "⨻", # "⨻"
1910
+ "trpezium" => "⏢", # "⏢"
1911
+ "Tscr" => "𝒯", # "𝒯"
1912
+ "tscr" => "𝓉", # "𝓉"
1913
+ "TScy" => "Ц", # "Ц"
1914
+ "tscy" => "ц", # "ц"
1915
+ "TSHcy" => "Ћ", # "Ћ"
1916
+ "tshcy" => "ћ", # "ћ"
1917
+ "Tstrok" => "Ŧ", # "Ŧ"
1918
+ "tstrok" => "ŧ", # "ŧ"
1919
+ "twixt" => "≬", # "≬"
1920
+ "twoheadleftarrow" => "↞", # "↞"
1921
+ "twoheadrightarrow" => "↠", # "↠"
1922
+ "Uacute" => "Ú", # "Ú"
1923
+ "uacute" => "ú", # "ú"
1924
+ "Uarr" => "↟", # "↟"
1925
+ "uArr" => "⇑", # "⇑"
1926
+ "uarr" => "↑", # "↑"
1927
+ "Uarrocir" => "⥉", # "⥉"
1928
+ "Ubrcy" => "Ў", # "Ў"
1929
+ "ubrcy" => "ў", # "ў"
1930
+ "Ubreve" => "Ŭ", # "Ŭ"
1931
+ "ubreve" => "ŭ", # "ŭ"
1932
+ "Ucirc" => "Û", # "Û"
1933
+ "ucirc" => "û", # "û"
1934
+ "Ucy" => "У", # "У"
1935
+ "ucy" => "у", # "у"
1936
+ "udarr" => "⇅", # "⇅"
1937
+ "Udblac" => "Ű", # "Ű"
1938
+ "udblac" => "ű", # "ű"
1939
+ "udhar" => "⥮", # "⥮"
1940
+ "ufisht" => "⥾", # "⥾"
1941
+ "Ufr" => "𝔘", # "𝔘"
1942
+ "ufr" => "𝔲", # "𝔲"
1943
+ "Ugrave" => "Ù", # "Ù"
1944
+ "ugrave" => "ù", # "ù"
1945
+ "uHar" => "⥣", # "⥣"
1946
+ "uharl" => "↿", # "↿"
1947
+ "uharr" => "↾", # "↾"
1948
+ "uhblk" => "▀", # "▀"
1949
+ "ulcorn" => "⌜", # "⌜"
1950
+ "ulcorner" => "⌜", # "⌜"
1951
+ "ulcrop" => "⌏", # "⌏"
1952
+ "ultri" => "◸", # "◸"
1953
+ "Umacr" => "Ū", # "Ū"
1954
+ "umacr" => "ū", # "ū"
1955
+ "uml" => "¨", # "¨"
1956
+ "UnderBar" => "_", # "_"
1957
+ "UnderBrace" => "⏟", # "⏟"
1958
+ "UnderBracket" => "⎵", # "⎵"
1959
+ "UnderParenthesis" => "⏝", # "⏝"
1960
+ "Union" => "⋃", # "⋃"
1961
+ "UnionPlus" => "⊎", # "⊎"
1962
+ "Uogon" => "Ų", # "Ų"
1963
+ "uogon" => "ų", # "ų"
1964
+ "Uopf" => "𝕌", # "𝕌"
1965
+ "uopf" => "𝕦", # "𝕦"
1966
+ "UpArrow" => "↑", # "↑"
1967
+ "Uparrow" => "⇑", # "⇑"
1968
+ "uparrow" => "↑", # "↑"
1969
+ "UpArrowBar" => "⤒", # "⤒"
1970
+ "UpArrowDownArrow" => "⇅", # "⇅"
1971
+ "UpDownArrow" => "↕", # "↕"
1972
+ "Updownarrow" => "⇕", # "⇕"
1973
+ "updownarrow" => "↕", # "↕"
1974
+ "UpEquilibrium" => "⥮", # "⥮"
1975
+ "upharpoonleft" => "↿", # "↿"
1976
+ "upharpoonright" => "↾", # "↾"
1977
+ "uplus" => "⊎", # "⊎"
1978
+ "UpperLeftArrow" => "↖", # "↖"
1979
+ "UpperRightArrow" => "↗", # "↗"
1980
+ "Upsi" => "ϒ", # "ϒ"
1981
+ "upsi" => "υ", # "υ"
1982
+ "upsih" => "ϒ", # "ϒ"
1983
+ "Upsilon" => "Υ", # "Υ"
1984
+ "upsilon" => "υ", # "υ"
1985
+ "UpTee" => "⊥", # "⊥"
1986
+ "UpTeeArrow" => "↥", # "↥"
1987
+ "upuparrows" => "⇈", # "⇈"
1988
+ "urcorn" => "⌝", # "⌝"
1989
+ "urcorner" => "⌝", # "⌝"
1990
+ "urcrop" => "⌎", # "⌎"
1991
+ "Uring" => "Ů", # "Ů"
1992
+ "uring" => "ů", # "ů"
1993
+ "urtri" => "◹", # "◹"
1994
+ "Uscr" => "𝒰", # "𝒰"
1995
+ "uscr" => "𝓊", # "𝓊"
1996
+ "utdot" => "⋰", # "⋰"
1997
+ "Utilde" => "Ũ", # "Ũ"
1998
+ "utilde" => "ũ", # "ũ"
1999
+ "utri" => "▵", # "▵"
2000
+ "utrif" => "▴", # "▴"
2001
+ "uuarr" => "⇈", # "⇈"
2002
+ "Uuml" => "Ü", # "Ü"
2003
+ "uuml" => "ü", # "ü"
2004
+ "uwangle" => "⦧", # "⦧"
2005
+ "vangrt" => "⦜", # "⦜"
2006
+ "varepsilon" => "ϵ", # "ϵ"
2007
+ "varkappa" => "ϰ", # "ϰ"
2008
+ "varnothing" => "∅", # "∅"
2009
+ "varphi" => "ϕ", # "ϕ"
2010
+ "varpi" => "ϖ", # "ϖ"
2011
+ "varpropto" => "∝", # "∝"
2012
+ "vArr" => "⇕", # "⇕"
2013
+ "varr" => "↕", # "↕"
2014
+ "varrho" => "ϱ", # "ϱ"
2015
+ "varsigma" => "ς", # "ς"
2016
+ "varsubsetneq" => "⊊︀", # "⊊︀"
2017
+ "varsubsetneqq" => "⫋︀", # "⫋︀"
2018
+ "varsupsetneq" => "⊋︀", # "⊋︀"
2019
+ "varsupsetneqq" => "⫌︀", # "⫌︀"
2020
+ "vartheta" => "ϑ", # "ϑ"
2021
+ "vartriangleleft" => "⊲", # "⊲"
2022
+ "vartriangleright" => "⊳", # "⊳"
2023
+ "Vbar" => "⫫", # "⫫"
2024
+ "vBar" => "⫨", # "⫨"
2025
+ "vBarv" => "⫩", # "⫩"
2026
+ "Vcy" => "В", # "В"
2027
+ "vcy" => "в", # "в"
2028
+ "VDash" => "⊫", # "⊫"
2029
+ "Vdash" => "⊩", # "⊩"
2030
+ "vDash" => "⊨", # "⊨"
2031
+ "vdash" => "⊢", # "⊢"
2032
+ "Vdashl" => "⫦", # "⫦"
2033
+ "Vee" => "⋁", # "⋁"
2034
+ "vee" => "∨", # "∨"
2035
+ "veebar" => "⊻", # "⊻"
2036
+ "veeeq" => "≚", # "≚"
2037
+ "vellip" => "⋮", # "⋮"
2038
+ "Verbar" => "‖", # "‖"
2039
+ "verbar" => "|", # "|"
2040
+ "Vert" => "‖", # "‖"
2041
+ "vert" => "|", # "|"
2042
+ "VerticalBar" => "∣", # "∣"
2043
+ "VerticalLine" => "|", # "|"
2044
+ "VerticalSeparator" => "❘", # "❘"
2045
+ "VerticalTilde" => "≀", # "≀"
2046
+ "VeryThinSpace" => " ", # " "
2047
+ "Vfr" => "𝔙", # "𝔙"
2048
+ "vfr" => "𝔳", # "𝔳"
2049
+ "vltri" => "⊲", # "⊲"
2050
+ "vnsub" => "⊂⃒", # "⊂⃒"
2051
+ "vnsup" => "⊃⃒", # "⊃⃒"
2052
+ "Vopf" => "𝕍", # "𝕍"
2053
+ "vopf" => "𝕧", # "𝕧"
2054
+ "vprop" => "∝", # "∝"
2055
+ "vrtri" => "⊳", # "⊳"
2056
+ "Vscr" => "𝒱", # "𝒱"
2057
+ "vscr" => "𝓋", # "𝓋"
2058
+ "vsubnE" => "⫋︀", # "⫋︀"
2059
+ "vsubne" => "⊊︀", # "⊊︀"
2060
+ "vsupnE" => "⫌︀", # "⫌︀"
2061
+ "vsupne" => "⊋︀", # "⊋︀"
2062
+ "Vvdash" => "⊪", # "⊪"
2063
+ "vzigzag" => "⦚", # "⦚"
2064
+ "Wcirc" => "Ŵ", # "Ŵ"
2065
+ "wcirc" => "ŵ", # "ŵ"
2066
+ "wedbar" => "⩟", # "⩟"
2067
+ "Wedge" => "⋀", # "⋀"
2068
+ "wedge" => "∧", # "∧"
2069
+ "wedgeq" => "≙", # "≙"
2070
+ "weierp" => "℘", # "℘"
2071
+ "Wfr" => "𝔚", # "𝔚"
2072
+ "wfr" => "𝔴", # "𝔴"
2073
+ "Wopf" => "𝕎", # "𝕎"
2074
+ "wopf" => "𝕨", # "𝕨"
2075
+ "wp" => "℘", # "℘"
2076
+ "wr" => "≀", # "≀"
2077
+ "wreath" => "≀", # "≀"
2078
+ "Wscr" => "𝒲", # "𝒲"
2079
+ "wscr" => "𝓌", # "𝓌"
2080
+ "xcap" => "⋂", # "⋂"
2081
+ "xcirc" => "◯", # "◯"
2082
+ "xcup" => "⋃", # "⋃"
2083
+ "xdtri" => "▽", # "▽"
2084
+ "Xfr" => "𝔛", # "𝔛"
2085
+ "xfr" => "𝔵", # "𝔵"
2086
+ "xhArr" => "⟺", # "⟺"
2087
+ "xharr" => "⟷", # "⟷"
2088
+ "Xi" => "Ξ", # "Ξ"
2089
+ "xi" => "ξ", # "ξ"
2090
+ "xlArr" => "⟸", # "⟸"
2091
+ "xlarr" => "⟵", # "⟵"
2092
+ "xmap" => "⟼", # "⟼"
2093
+ "xnis" => "⋻", # "⋻"
2094
+ "xodot" => "⨀", # "⨀"
2095
+ "Xopf" => "𝕏", # "𝕏"
2096
+ "xopf" => "𝕩", # "𝕩"
2097
+ "xoplus" => "⨁", # "⨁"
2098
+ "xotime" => "⨂", # "⨂"
2099
+ "xrArr" => "⟹", # "⟹"
2100
+ "xrarr" => "⟶", # "⟶"
2101
+ "Xscr" => "𝒳", # "𝒳"
2102
+ "xscr" => "𝓍", # "𝓍"
2103
+ "xsqcup" => "⨆", # "⨆"
2104
+ "xuplus" => "⨄", # "⨄"
2105
+ "xutri" => "△", # "△"
2106
+ "xvee" => "⋁", # "⋁"
2107
+ "xwedge" => "⋀", # "⋀"
2108
+ "Yacute" => "Ý", # "Ý"
2109
+ "yacute" => "ý", # "ý"
2110
+ "YAcy" => "Я", # "Я"
2111
+ "yacy" => "я", # "я"
2112
+ "Ycirc" => "Ŷ", # "Ŷ"
2113
+ "ycirc" => "ŷ", # "ŷ"
2114
+ "Ycy" => "Ы", # "Ы"
2115
+ "ycy" => "ы", # "ы"
2116
+ "yen" => "¥", # "¥"
2117
+ "Yfr" => "𝔜", # "𝔜"
2118
+ "yfr" => "𝔶", # "𝔶"
2119
+ "YIcy" => "Ї", # "Ї"
2120
+ "yicy" => "ї", # "ї"
2121
+ "Yopf" => "𝕐", # "𝕐"
2122
+ "yopf" => "𝕪", # "𝕪"
2123
+ "Yscr" => "𝒴", # "𝒴"
2124
+ "yscr" => "𝓎", # "𝓎"
2125
+ "YUcy" => "Ю", # "Ю"
2126
+ "yucy" => "ю", # "ю"
2127
+ "Yuml" => "Ÿ", # "Ÿ"
2128
+ "yuml" => "ÿ", # "ÿ"
2129
+ "Zacute" => "Ź", # "Ź"
2130
+ "zacute" => "ź", # "ź"
2131
+ "Zcaron" => "Ž", # "Ž"
2132
+ "zcaron" => "ž", # "ž"
2133
+ "Zcy" => "З", # "З"
2134
+ "zcy" => "з", # "з"
2135
+ "Zdot" => "Ż", # "Ż"
2136
+ "zdot" => "ż", # "ż"
2137
+ "zeetrf" => "ℨ", # "ℨ"
2138
+ "ZeroWidthSpace" => "​", # "​"
2139
+ "Zeta" => "Ζ", # "Ζ"
2140
+ "zeta" => "ζ", # "ζ"
2141
+ "Zfr" => "ℨ", # "ℨ"
2142
+ "zfr" => "𝔷", # "𝔷"
2143
+ "ZHcy" => "Ж", # "Ж"
2144
+ "zhcy" => "ж", # "ж"
2145
+ "zigrarr" => "⇝", # "⇝"
2146
+ "Zopf" => "ℤ", # "ℤ"
2147
+ "zopf" => "𝕫", # "𝕫"
2148
+ "Zscr" => "𝒵", # "𝒵"
2149
+ "zscr" => "𝓏", # "𝓏"
2150
+ "zwj" => "‍", # "‍"
2151
+ "zwnj" => "‌", # "‌"
2152
+ }
2153
+ end
2154
+ end