adva 0.1.4 → 0.2.1

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