Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(476)

Side by Side Diff: chrome/browser/resources/chromeos/chromevox/common/math_semantic_attr.js

Issue 924083004: Shorten Closure template notation from Array.<*> to Array<*> in cvox. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * @fileoverview Semantic attributes of Math symbols and expressions. 6 * @fileoverview Semantic attributes of Math symbols and expressions.
7 * 7 *
8 * This file contains the basic functionality to lookup and assign semantic 8 * This file contains the basic functionality to lookup and assign semantic
9 * attributes for mathematical expressions. Since there is no such thing as a 9 * attributes for mathematical expressions. Since there is no such thing as a
10 * well-defined semantics for all of mathematics we compute a default semantics 10 * well-defined semantics for all of mathematics we compute a default semantics
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 * attributes. 48 * attributes.
49 * 49 *
50 * Observe that all characters are given as hex code number in order to ease the 50 * Observe that all characters are given as hex code number in order to ease the
51 * comparison with those in the JSON files that define speech rules per 51 * comparison with those in the JSON files that define speech rules per
52 * character. 52 * character.
53 * @constructor 53 * @constructor
54 */ 54 */
55 cvox.SemanticAttr = function() { 55 cvox.SemanticAttr = function() {
56 // Punctuation Characters. 56 // Punctuation Characters.
57 /** 57 /**
58 * @type {Array.<string>} 58 * @type {Array<string>}
59 */ 59 */
60 this.generalPunctuations = 60 this.generalPunctuations =
61 [ 61 [
62 '!', '"', '#', '%', '&', '\'', '*', ',', ':', ';', '?', '@', '\\', 62 '!', '"', '#', '%', '&', '\'', '*', ',', ':', ';', '?', '@', '\\',
63 '¡', '§', '¶', '·', '¿', '‗', '†', '‡', '•', '‣', '․', '‥', '‧', 63 '¡', '§', '¶', '·', '¿', '‗', '†', '‡', '•', '‣', '․', '‥', '‧',
64 '‰', '‱', '‸', '※', '‼', '‽', '‾', '⁁', '⁂', '⁃', '⁇', '⁈', '⁉', 64 '‰', '‱', '‸', '※', '‼', '‽', '‾', '⁁', '⁂', '⁃', '⁇', '⁈', '⁉',
65 '⁋', '⁌', '⁍', '⁎', '⁏', '⁐', '⁑', '⁓', '⁕', '⁖', '⁘', '⁙', '⁚', 65 '⁋', '⁌', '⁍', '⁎', '⁏', '⁐', '⁑', '⁓', '⁕', '⁖', '⁘', '⁙', '⁚',
66 '⁛', '⁜', '⁝', '⁞', '︐', '︓', '︔', '︕', '︖', '︰', '﹅', '﹆', 66 '⁛', '⁜', '⁝', '⁞', '︐', '︓', '︔', '︕', '︖', '︰', '﹅', '﹆',
67 '﹉', '﹊', '﹋', '﹌', '﹐', '﹔', '﹕', '﹖', '﹗', '﹟', '﹠', '﹡', '﹨', 67 '﹉', '﹊', '﹋', '﹌', '﹐', '﹔', '﹕', '﹖', '﹗', '﹟', '﹠', '﹡', '﹨',
68 '﹪', '﹫', '!', '"', '#', '%', '&', ''', '*', ',', '/', ':', 68 '﹪', '﹫', '!', '"', '#', '%', '&', ''', '*', ',', '/', ':',
69 ';', '?', '@', '\' 69 ';', '?', '@', '\'
70 ]; 70 ];
71 /** 71 /**
72 * @type {string} 72 * @type {string}
73 * @private 73 * @private
74 */ 74 */
75 this.invisibleComma_ = cvox.SemanticUtil.numberToUnicode(0x2063); 75 this.invisibleComma_ = cvox.SemanticUtil.numberToUnicode(0x2063);
76 this.generalPunctuations.push(this.invisibleComma_); 76 this.generalPunctuations.push(this.invisibleComma_);
77 /** 77 /**
78 * @type {Array.<string>} 78 * @type {Array<string>}
79 */ 79 */
80 this.ellipses = 80 this.ellipses =
81 [ 81 [
82 '…', '⋮', '⋯', '⋰', '⋱', '︙' 82 '…', '⋮', '⋯', '⋰', '⋱', '︙'
83 ]; 83 ];
84 /** 84 /**
85 * @type {Array.<string>} 85 * @type {Array<string>}
86 */ 86 */
87 this.fullStops = 87 this.fullStops =
88 [ 88 [
89 '.', '﹒', '.' 89 '.', '﹒', '.'
90 ]; 90 ];
91 /** 91 /**
92 * @type {Array.<string>} 92 * @type {Array<string>}
93 */ 93 */
94 this.dashes = 94 this.dashes =
95 [ 95 [
96 '‒', '–', '—', '―', '〜', '︱', '︲', '﹘' 96 '‒', '–', '—', '―', '〜', '︱', '︲', '﹘'
97 ]; 97 ];
98 /** 98 /**
99 * @type {Array.<string>} 99 * @type {Array<string>}
100 */ 100 */
101 this.primes = 101 this.primes =
102 [ 102 [
103 '′', '″', '‴', '‵', '‶', '‷', '⁗' 103 '′', '″', '‴', '‵', '‶', '‷', '⁗'
104 ]; 104 ];
105 105
106 // Fences. 106 // Fences.
107 // Fences are treated slightly differently from other symbols as we want to 107 // Fences are treated slightly differently from other symbols as we want to
108 // record pairs of opening/closing and top/bottom fences. 108 // record pairs of opening/closing and top/bottom fences.
109 /** 109 /**
110 * Mapping opening to closing fences. 110 * Mapping opening to closing fences.
111 * @type {Object.<string, string>} 111 * @type {Object<string, string>}
112 */ 112 */
113 this.openClosePairs = 113 this.openClosePairs =
114 { 114 {
115 // Unicode categories Ps and Pe. 115 // Unicode categories Ps and Pe.
116 // Observe that left quotation 301D could also be matched to 301F, 116 // Observe that left quotation 301D could also be matched to 301F,
117 // but is currently matched to 301E. 117 // but is currently matched to 301E.
118 '(': ')', '[': ']', '{': '}', '⁅': '⁆', '〈': '〉', '❨': '❩', 118 '(': ')', '[': ']', '{': '}', '⁅': '⁆', '〈': '〉', '❨': '❩',
119 '❪': '❫', '❬': '❭', '❮': '❯', '❰': '❱', '❲': '❳', '❴': '❵', 119 '❪': '❫', '❬': '❭', '❮': '❯', '❰': '❱', '❲': '❳', '❴': '❵',
120 '⟅': '⟆', '⟦': '⟧', '⟨': '⟩', '⟪': '⟫', '⟬': '⟭', '⟮': '⟯', 120 '⟅': '⟆', '⟦': '⟧', '⟨': '⟩', '⟪': '⟫', '⟬': '⟭', '⟮': '⟯',
121 '⦃': '⦄', '⦅': '⦆', '⦇': '⦈', '⦉': '⦊', '⦋': '⦌', '⦍': '⦎', 121 '⦃': '⦄', '⦅': '⦆', '⦇': '⦈', '⦉': '⦊', '⦋': '⦌', '⦍': '⦎',
122 '⦏': '⦐', '⦑': '⦒', '⦓': '⦔', '⦕': '⦖', '⦗': '⦘', '⧘': '⧙', 122 '⦏': '⦐', '⦑': '⦒', '⦓': '⦔', '⦕': '⦖', '⦗': '⦘', '⧘': '⧙',
123 '⧚': '⧛', '⧼': '⧽', '⸢': '⸣', '⸤': '⸥', '⸦': '⸧', '⸨': '⸩', 123 '⧚': '⧛', '⧼': '⧽', '⸢': '⸣', '⸤': '⸥', '⸦': '⸧', '⸨': '⸩',
124 '〈': '〉', '《': '》', '「': '」', '『': '』', '【': '】', 124 '〈': '〉', '《': '》', '「': '」', '『': '』', '【': '】',
125 '〔': '〕', '〖': '〗', '〘': '〙', '〚': '〛', '〝': '〞', 125 '〔': '〕', '〖': '〗', '〘': '〙', '〚': '〛', '〝': '〞',
126 '﴾': '﴿', '︗': '︘', '﹙': '﹚', '﹛': '﹜', '﹝': '﹞', '(': ')', 126 '﴾': '﴿', '︗': '︘', '﹙': '﹚', '﹛': '﹜', '﹝': '﹞', '(': ')',
127 '[': ']', '{': '}', '⦅': '⦆', '「': '」', 127 '[': ']', '{': '}', '⦅': '⦆', '「': '」',
128 // Unicode categories Sm and So. 128 // Unicode categories Sm and So.
129 '⌈': '⌉', '⌊': '⌋', '⌌': '⌍', '⌎': '⌏', '⌜': '⌝', '⌞': '⌟', 129 '⌈': '⌉', '⌊': '⌋', '⌌': '⌍', '⌎': '⌏', '⌜': '⌝', '⌞': '⌟',
130 // Extender fences. 130 // Extender fences.
131 // Parenthesis. 131 // Parenthesis.
132 '⎛': '⎞', '⎜': '⎟', '⎝': '⎠', 132 '⎛': '⎞', '⎜': '⎟', '⎝': '⎠',
133 // Square bracket. 133 // Square bracket.
134 '⎡': '⎤', '⎢': '⎥', '⎣': '⎦', 134 '⎡': '⎤', '⎢': '⎥', '⎣': '⎦',
135 // Curly bracket. 135 // Curly bracket.
136 '⎧': '⎫', '⎨': '⎬', '⎩': '⎭', '⎰': '⎱', '⎸': '⎹' 136 '⎧': '⎫', '⎨': '⎬', '⎩': '⎭', '⎰': '⎱', '⎸': '⎹'
137 }; 137 };
138 /** 138 /**
139 * Mapping top to bottom fences. 139 * Mapping top to bottom fences.
140 * @type {Object.<string, string>} 140 * @type {Object<string, string>}
141 */ 141 */
142 this.topBottomPairs = 142 this.topBottomPairs =
143 { 143 {
144 '⎴': '⎵', '⏜': '⏝', '⏞': '⏟', '⏠': '⏡', '︵': '︶', '︷': '︸', 144 '⎴': '⎵', '⏜': '⏝', '⏞': '⏟', '⏠': '⏡', '︵': '︶', '︷': '︸',
145 '︹': '︺', '︻': '︼', '︽': '︾', '︿': '﹀', '﹁': '﹂', 145 '︹': '︺', '︻': '︼', '︽': '︾', '︿': '﹀', '﹁': '﹂',
146 '﹃': '﹄', '﹇': '﹈' 146 '﹃': '﹄', '﹇': '﹈'
147 }; 147 };
148 /** 148 /**
149 * @type {Array.<string>} 149 * @type {Array<string>}
150 */ 150 */
151 this.leftFences = cvox.SemanticUtil.objectsToKeys(this.openClosePairs); 151 this.leftFences = cvox.SemanticUtil.objectsToKeys(this.openClosePairs);
152 /** 152 /**
153 * @type {Array.<string>} 153 * @type {Array<string>}
154 */ 154 */
155 this.rightFences = cvox.SemanticUtil.objectsToValues(this.openClosePairs); 155 this.rightFences = cvox.SemanticUtil.objectsToValues(this.openClosePairs);
156 this.rightFences.push('〟'); 156 this.rightFences.push('〟');
157 /** 157 /**
158 * @type {Array.<string>} 158 * @type {Array<string>}
159 */ 159 */
160 this.topFences = cvox.SemanticUtil.objectsToKeys(this.topBottomPairs); 160 this.topFences = cvox.SemanticUtil.objectsToKeys(this.topBottomPairs);
161 /** 161 /**
162 * @type {Array.<string>} 162 * @type {Array<string>}
163 */ 163 */
164 this.bottomFences = cvox.SemanticUtil.objectsToValues(this.topBottomPairs); 164 this.bottomFences = cvox.SemanticUtil.objectsToValues(this.topBottomPairs);
165 /** 165 /**
166 * @type {Array.<string>} 166 * @type {Array<string>}
167 */ 167 */
168 this.neutralFences = 168 this.neutralFences =
169 [ 169 [
170 '|', '¦', '‖', '❘', '⦀', '⫴', '¦', '|' 170 '|', '¦', '‖', '❘', '⦀', '⫴', '¦', '|'
171 ]; 171 ];
172 /** Array of all fences. 172 /** Array of all fences.
173 * @type {Array.<string>} 173 * @type {Array<string>}
174 */ 174 */
175 this.fences = this.neutralFences.concat( 175 this.fences = this.neutralFences.concat(
176 this.leftFences, this.rightFences, this.topFences, this.bottomFences); 176 this.leftFences, this.rightFences, this.topFences, this.bottomFences);
177 177
178 // Identifiers. 178 // Identifiers.
179 // Latin Alphabets. 179 // Latin Alphabets.
180 /** 180 /**
181 * @type {Array.<string>} 181 * @type {Array<string>}
182 */ 182 */
183 this.capitalLatin = 183 this.capitalLatin =
184 [ 184 [
185 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 185 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
186 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' 186 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
187 ]; 187 ];
188 /** 188 /**
189 * @type {Array.<string>} 189 * @type {Array<string>}
190 */ 190 */
191 this.smallLatin = 191 this.smallLatin =
192 [ 192 [
193 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 193 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
194 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 194 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
195 // dotless i and j. 195 // dotless i and j.
196 'ı', 'ȷ' 196 'ı', 'ȷ'
197 ]; 197 ];
198 /** 198 /**
199 * @type {Array.<string>} 199 * @type {Array<string>}
200 */ 200 */
201 this.capitalLatinFullWidth = 201 this.capitalLatinFullWidth =
202 [ 202 [
203 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 203 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
204 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' 204 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
205 ]; 205 ];
206 /** 206 /**
207 * @type {Array.<string>} 207 * @type {Array<string>}
208 */ 208 */
209 this.smallLatinFullWidth = 209 this.smallLatinFullWidth =
210 [ 210 [
211 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 211 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
212 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' 212 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'
213 ]; 213 ];
214 /** 214 /**
215 * @type {Array.<string>} 215 * @type {Array<string>}
216 */ 216 */
217 this.capitalLatinBold = 217 this.capitalLatinBold =
218 [ 218 [
219 '𝐀', '𝐁', '𝐂', '𝐃', '𝐄', '𝐅', '𝐆', '𝐇', '𝐈', '𝐉', '𝐊', '𝐋', '𝐌', 219 '𝐀', '𝐁', '𝐂', '𝐃', '𝐄', '𝐅', '𝐆', '𝐇', '𝐈', '𝐉', '𝐊', '𝐋', '𝐌',
220 '𝐍', '𝐎', '𝐏', '𝐐', '𝐑', '𝐒', '𝐓', '𝐔', '𝐕', '𝐖', '𝐗', '𝐘', '𝐙' 220 '𝐍', '𝐎', '𝐏', '𝐐', '𝐑', '𝐒', '𝐓', '𝐔', '𝐕', '𝐖', '𝐗', '𝐘', '𝐙'
221 ]; 221 ];
222 /** 222 /**
223 * @type {Array.<string>} 223 * @type {Array<string>}
224 */ 224 */
225 this.smallLatinBold = 225 this.smallLatinBold =
226 [ 226 [
227 '𝐚', '𝐛', '𝐜', '𝐝', '𝐞', '𝐟', '𝐠', '𝐡', '𝐢', '𝐣', '𝐤', '𝐥', '𝐦', 227 '𝐚', '𝐛', '𝐜', '𝐝', '𝐞', '𝐟', '𝐠', '𝐡', '𝐢', '𝐣', '𝐤', '𝐥', '𝐦',
228 '𝐧', '𝐨', '𝐩', '𝐪', '𝐫', '𝐬', '𝐭', '𝐮', '𝐯', '𝐰', '𝐱', '𝐲', '𝐳' 228 '𝐧', '𝐨', '𝐩', '𝐪', '𝐫', '𝐬', '𝐭', '𝐮', '𝐯', '𝐰', '𝐱', '𝐲', '𝐳'
229 ]; 229 ];
230 /** 230 /**
231 * @type {Array.<string>} 231 * @type {Array<string>}
232 */ 232 */
233 this.capitalLatinItalic = 233 this.capitalLatinItalic =
234 [ 234 [
235 '𝐴', '𝐵', '𝐶', '𝐷', '𝐸', '𝐹', '𝐺', '𝐻', '𝐼', '𝐽', '𝐾', '𝐿', '𝑀', 235 '𝐴', '𝐵', '𝐶', '𝐷', '𝐸', '𝐹', '𝐺', '𝐻', '𝐼', '𝐽', '𝐾', '𝐿', '𝑀',
236 '𝑁', '𝑂', '𝑃', '𝑄', '𝑅', '𝑆', '𝑇', '𝑈', '𝑉', '𝑊', '𝑋', '𝑌', '𝑍' 236 '𝑁', '𝑂', '𝑃', '𝑄', '𝑅', '𝑆', '𝑇', '𝑈', '𝑉', '𝑊', '𝑋', '𝑌', '𝑍'
237 ]; 237 ];
238 /** 238 /**
239 * @type {Array.<string>} 239 * @type {Array<string>}
240 */ 240 */
241 this.smallLatinItalic = 241 this.smallLatinItalic =
242 [ 242 [
243 '𝑎', '𝑏', '𝑐', '𝑑', '𝑒', '𝑓', '𝑔', 'ℎ', '𝑖', '𝑗', '𝑘', '𝑙', '𝑚', 243 '𝑎', '𝑏', '𝑐', '𝑑', '𝑒', '𝑓', '𝑔', 'ℎ', '𝑖', '𝑗', '𝑘', '𝑙', '𝑚',
244 '𝑛', '𝑜', '𝑝', '𝑞', '𝑟', '𝑠', '𝑡', '𝑢', '𝑣', '𝑤', '𝑥', '𝑦', '𝑧', 244 '𝑛', '𝑜', '𝑝', '𝑞', '𝑟', '𝑠', '𝑡', '𝑢', '𝑣', '𝑤', '𝑥', '𝑦', '𝑧',
245 // dotless i and j. 245 // dotless i and j.
246 '𝚤', '𝚥' 246 '𝚤', '𝚥'
247 ]; 247 ];
248 /** 248 /**
249 * @type {Array.<string>} 249 * @type {Array<string>}
250 */ 250 */
251 this.capitalLatinScript = 251 this.capitalLatinScript =
252 [ 252 [
253 '𝒜', 'ℬ', '𝒞', '𝒟', 'ℰ', 'ℱ', '𝒢', 'ℋ', 'ℐ', '𝒥', '𝒦', 'ℒ', 'ℳ', 253 '𝒜', 'ℬ', '𝒞', '𝒟', 'ℰ', 'ℱ', '𝒢', 'ℋ', 'ℐ', '𝒥', '𝒦', 'ℒ', 'ℳ',
254 '𝒩', '𝒪', '𝒫', '𝒬', 'ℛ', '𝒮', '𝒯', '𝒰', '𝒱', '𝒲', '𝒳', '𝒴', '𝒵', 254 '𝒩', '𝒪', '𝒫', '𝒬', 'ℛ', '𝒮', '𝒯', '𝒰', '𝒱', '𝒲', '𝒳', '𝒴', '𝒵',
255 // Powerset Cap P. 255 // Powerset Cap P.
256 '℘' 256 '℘'
257 ]; 257 ];
258 /** 258 /**
259 * @type {Array.<string>} 259 * @type {Array<string>}
260 */ 260 */
261 this.smallLatinScript = 261 this.smallLatinScript =
262 [ 262 [
263 '𝒶', '𝒷', '𝒸', '𝒹', 'ℯ', '𝒻', 'ℊ', '𝒽', '𝒾', '𝒿', '𝓀', '𝓁', '𝓂', 263 '𝒶', '𝒷', '𝒸', '𝒹', 'ℯ', '𝒻', 'ℊ', '𝒽', '𝒾', '𝒿', '𝓀', '𝓁', '𝓂',
264 '𝓃', 'ℴ', '𝓅', '𝓆', '𝓇', '𝓈', '𝓉', '𝓊', '𝓋', '𝓌', '𝓍', '𝓎', '𝓏', 264 '𝓃', 'ℴ', '𝓅', '𝓆', '𝓇', '𝓈', '𝓉', '𝓊', '𝓋', '𝓌', '𝓍', '𝓎', '𝓏',
265 // script small l 265 // script small l
266 'ℓ' 266 'ℓ'
267 ]; 267 ];
268 /** 268 /**
269 * @type {Array.<string>} 269 * @type {Array<string>}
270 */ 270 */
271 this.capitalLatinBoldScript = 271 this.capitalLatinBoldScript =
272 [ 272 [
273 '𝓐', '𝓑', '𝓒', '𝓓', '𝓔', '𝓕', '𝓖', '𝓗', '𝓘', '𝓙', '𝓚', '𝓛', '𝓜', 273 '𝓐', '𝓑', '𝓒', '𝓓', '𝓔', '𝓕', '𝓖', '𝓗', '𝓘', '𝓙', '𝓚', '𝓛', '𝓜',
274 '𝓝', '𝓞', '𝓟', '𝓠', '𝓡', '𝓢', '𝓣', '𝓤', '𝓥', '𝓦', '𝓧', '𝓨', '𝓩' 274 '𝓝', '𝓞', '𝓟', '𝓠', '𝓡', '𝓢', '𝓣', '𝓤', '𝓥', '𝓦', '𝓧', '𝓨', '𝓩'
275 ]; 275 ];
276 /** 276 /**
277 * @type {Array.<string>} 277 * @type {Array<string>}
278 */ 278 */
279 this.smallLatinBoldScript = 279 this.smallLatinBoldScript =
280 [ 280 [
281 '𝓪', '𝓫', '𝓬', '𝓭', '𝓮', '𝓯', '𝓰', '𝓱', '𝓲', '𝓳', '𝓴', '𝓵', '𝓶', 281 '𝓪', '𝓫', '𝓬', '𝓭', '𝓮', '𝓯', '𝓰', '𝓱', '𝓲', '𝓳', '𝓴', '𝓵', '𝓶',
282 '𝓷', '𝓸', '𝓹', '𝓺', '𝓻', '𝓼', '𝓽', '𝓾', '𝓿', '𝔀', '𝔁', '𝔂', '𝔃' 282 '𝓷', '𝓸', '𝓹', '𝓺', '𝓻', '𝓼', '𝓽', '𝓾', '𝓿', '𝔀', '𝔁', '𝔂', '𝔃'
283 ]; 283 ];
284 /** 284 /**
285 * @type {Array.<string>} 285 * @type {Array<string>}
286 */ 286 */
287 this.capitalLatinFraktur = 287 this.capitalLatinFraktur =
288 [ 288 [
289 '𝔄', '𝔅', 'ℭ', '𝔇', '𝔈', '𝔉', '𝔊', 'ℌ', 'ℑ', '𝔍', '𝔎', '𝔏', '𝔐', 289 '𝔄', '𝔅', 'ℭ', '𝔇', '𝔈', '𝔉', '𝔊', 'ℌ', 'ℑ', '𝔍', '𝔎', '𝔏', '𝔐',
290 '𝔑', '𝔒', '𝔓', '𝔔', 'ℜ', '𝔖', '𝔗', '𝔘', '𝔙', '𝔚', '𝔛', '𝔜', 'ℨ' 290 '𝔑', '𝔒', '𝔓', '𝔔', 'ℜ', '𝔖', '𝔗', '𝔘', '𝔙', '𝔚', '𝔛', '𝔜', 'ℨ'
291 ]; 291 ];
292 /** 292 /**
293 * @type {Array.<string>} 293 * @type {Array<string>}
294 */ 294 */
295 this.smallLatinFraktur = 295 this.smallLatinFraktur =
296 [ 296 [
297 '𝔞', '𝔟', '𝔠', '𝔡', '𝔢', '𝔣', '𝔤', '𝔥', '𝔦', '𝔧', '𝔨', '𝔩', '𝔪', 297 '𝔞', '𝔟', '𝔠', '𝔡', '𝔢', '𝔣', '𝔤', '𝔥', '𝔦', '𝔧', '𝔨', '𝔩', '𝔪',
298 '𝔫', '𝔬', '𝔭', '𝔮', '𝔯', '𝔰', '𝔱', '𝔲', '𝔳', '𝔴', '𝔵', '𝔶', '𝔷' 298 '𝔫', '𝔬', '𝔭', '𝔮', '𝔯', '𝔰', '𝔱', '𝔲', '𝔳', '𝔴', '𝔵', '𝔶', '𝔷'
299 ]; 299 ];
300 /** 300 /**
301 * @type {Array.<string>} 301 * @type {Array<string>}
302 */ 302 */
303 this.capitalLatinDoubleStruck = 303 this.capitalLatinDoubleStruck =
304 [ 304 [
305 '𝔸', '𝔹', 'ℂ', '𝔻', '𝔼', '𝔽', '𝔾', 'ℍ', '𝕀', '𝕁', '𝕂', '𝕃', '𝕄', 305 '𝔸', '𝔹', 'ℂ', '𝔻', '𝔼', '𝔽', '𝔾', 'ℍ', '𝕀', '𝕁', '𝕂', '𝕃', '𝕄',
306 'ℕ', '𝕆', 'ℙ', 'ℚ', 'ℝ', '𝕊', '𝕋', '𝕌', '𝕍', '𝕎', '𝕏', '𝕐', 'ℤ' 306 'ℕ', '𝕆', 'ℙ', 'ℚ', 'ℝ', '𝕊', '𝕋', '𝕌', '𝕍', '𝕎', '𝕏', '𝕐', 'ℤ'
307 ]; 307 ];
308 /** 308 /**
309 * @type {Array.<string>} 309 * @type {Array<string>}
310 */ 310 */
311 this.smallLatinDoubleStruck = 311 this.smallLatinDoubleStruck =
312 [ 312 [
313 '𝕒', '𝕓', '𝕔', '𝕕', '𝕖', '𝕗', '𝕘', '𝕙', '𝕚', '𝕛', '𝕜', '𝕝', '𝕞', 313 '𝕒', '𝕓', '𝕔', '𝕕', '𝕖', '𝕗', '𝕘', '𝕙', '𝕚', '𝕛', '𝕜', '𝕝', '𝕞',
314 '𝕟', '𝕠', '𝕡', '𝕢', '𝕣', '𝕤', '𝕥', '𝕦', '𝕧', '𝕨', '𝕩', '𝕪', '𝕫' 314 '𝕟', '𝕠', '𝕡', '𝕢', '𝕣', '𝕤', '𝕥', '𝕦', '𝕧', '𝕨', '𝕩', '𝕪', '𝕫'
315 ]; 315 ];
316 /** 316 /**
317 * @type {Array.<string>} 317 * @type {Array<string>}
318 */ 318 */
319 this.capitalLatinBoldFraktur = 319 this.capitalLatinBoldFraktur =
320 [ 320 [
321 '𝕬', '𝕭', '𝕮', '𝕯', '𝕰', '𝕱', '𝕲', '𝕳', '𝕴', '𝕵', '𝕶', '𝕷', '𝕸', 321 '𝕬', '𝕭', '𝕮', '𝕯', '𝕰', '𝕱', '𝕲', '𝕳', '𝕴', '𝕵', '𝕶', '𝕷', '𝕸',
322 '𝕹', '𝕺', '𝕻', '𝕼', '𝕽', '𝕾', '𝕿', '𝖀', '𝖁', '𝖂', '𝖃', '𝖄', '𝖅' 322 '𝕹', '𝕺', '𝕻', '𝕼', '𝕽', '𝕾', '𝕿', '𝖀', '𝖁', '𝖂', '𝖃', '𝖄', '𝖅'
323 ]; 323 ];
324 /** 324 /**
325 * @type {Array.<string>} 325 * @type {Array<string>}
326 */ 326 */
327 this.smallLatinBoldFraktur = 327 this.smallLatinBoldFraktur =
328 [ 328 [
329 '𝖆', '𝖇', '𝖈', '𝖉', '𝖊', '𝖋', '𝖌', '𝖍', '𝖎', '𝖏', '𝖐', '𝖑', '𝖒', 329 '𝖆', '𝖇', '𝖈', '𝖉', '𝖊', '𝖋', '𝖌', '𝖍', '𝖎', '𝖏', '𝖐', '𝖑', '𝖒',
330 '𝖓', '𝖔', '𝖕', '𝖖', '𝖗', '𝖘', '𝖙', '𝖚', '𝖛', '𝖜', '𝖝', '𝖞', '𝖟' 330 '𝖓', '𝖔', '𝖕', '𝖖', '𝖗', '𝖘', '𝖙', '𝖚', '𝖛', '𝖜', '𝖝', '𝖞', '𝖟'
331 ]; 331 ];
332 /** 332 /**
333 * @type {Array.<string>} 333 * @type {Array<string>}
334 */ 334 */
335 this.capitalLatinSansSerif = 335 this.capitalLatinSansSerif =
336 [ 336 [
337 '𝖠', '𝖡', '𝖢', '𝖣', '𝖤', '𝖥', '𝖦', '𝖧', '𝖨', '𝖩', '𝖪', '𝖫', '𝖬', 337 '𝖠', '𝖡', '𝖢', '𝖣', '𝖤', '𝖥', '𝖦', '𝖧', '𝖨', '𝖩', '𝖪', '𝖫', '𝖬',
338 '𝖭', '𝖮', '𝖯', '𝖰', '𝖱', '𝖲', '𝖳', '𝖴', '𝖵', '𝖶', '𝖷', '𝖸', '𝖹' 338 '𝖭', '𝖮', '𝖯', '𝖰', '𝖱', '𝖲', '𝖳', '𝖴', '𝖵', '𝖶', '𝖷', '𝖸', '𝖹'
339 ]; 339 ];
340 /** 340 /**
341 * @type {Array.<string>} 341 * @type {Array<string>}
342 */ 342 */
343 this.smallLatinSansSerif = 343 this.smallLatinSansSerif =
344 [ 344 [
345 '𝖺', '𝖻', '𝖼', '𝖽', '𝖾', '𝖿', '𝗀', '𝗁', '𝗂', '𝗃', '𝗄', '𝗅', '𝗆', 345 '𝖺', '𝖻', '𝖼', '𝖽', '𝖾', '𝖿', '𝗀', '𝗁', '𝗂', '𝗃', '𝗄', '𝗅', '𝗆',
346 '𝗇', '𝗈', '𝗉', '𝗊', '𝗋', '𝗌', '𝗍', '𝗎', '𝗏', '𝗐', '𝗑', '𝗒', '𝗓' 346 '𝗇', '𝗈', '𝗉', '𝗊', '𝗋', '𝗌', '𝗍', '𝗎', '𝗏', '𝗐', '𝗑', '𝗒', '𝗓'
347 ]; 347 ];
348 /** 348 /**
349 * @type {Array.<string>} 349 * @type {Array<string>}
350 */ 350 */
351 this.capitalLatinSansSerifBold = 351 this.capitalLatinSansSerifBold =
352 [ 352 [
353 '𝗔', '𝗕', '𝗖', '𝗗', '𝗘', '𝗙', '𝗚', '𝗛', '𝗜', '𝗝', '𝗞', '𝗟', '𝗠', 353 '𝗔', '𝗕', '𝗖', '𝗗', '𝗘', '𝗙', '𝗚', '𝗛', '𝗜', '𝗝', '𝗞', '𝗟', '𝗠',
354 '𝗡', '𝗢', '𝗣', '𝗤', '𝗥', '𝗦', '𝗧', '𝗨', '𝗩', '𝗪', '𝗫', '𝗬', '𝗭' 354 '𝗡', '𝗢', '𝗣', '𝗤', '𝗥', '𝗦', '𝗧', '𝗨', '𝗩', '𝗪', '𝗫', '𝗬', '𝗭'
355 ]; 355 ];
356 /** 356 /**
357 * @type {Array.<string>} 357 * @type {Array<string>}
358 */ 358 */
359 this.smallLatinSansSerifBold = 359 this.smallLatinSansSerifBold =
360 [ 360 [
361 '𝗮', '𝗯', '𝗰', '𝗱', '𝗲', '𝗳', '𝗴', '𝗵', '𝗶', '𝗷', '𝗸', '𝗹', '𝗺', 361 '𝗮', '𝗯', '𝗰', '𝗱', '𝗲', '𝗳', '𝗴', '𝗵', '𝗶', '𝗷', '𝗸', '𝗹', '𝗺',
362 '𝗻', '𝗼', '𝗽', '𝗾', '𝗿', '𝘀', '𝘁', '𝘂', '𝘃', '𝘄', '𝘅', '𝘆', '𝘇' 362 '𝗻', '𝗼', '𝗽', '𝗾', '𝗿', '𝘀', '𝘁', '𝘂', '𝘃', '𝘄', '𝘅', '𝘆', '𝘇'
363 ]; 363 ];
364 /** 364 /**
365 * @type {Array.<string>} 365 * @type {Array<string>}
366 */ 366 */
367 this.capitalLatinSansSerifItalic = 367 this.capitalLatinSansSerifItalic =
368 [ 368 [
369 '𝘈', '𝘉', '𝘊', '𝘋', '𝘌', '𝘍', '𝘎', '𝘏', '𝘐', '𝘑', '𝘒', '𝘓', '𝘔', 369 '𝘈', '𝘉', '𝘊', '𝘋', '𝘌', '𝘍', '𝘎', '𝘏', '𝘐', '𝘑', '𝘒', '𝘓', '𝘔',
370 '𝘕', '𝘖', '𝘗', '𝘘', '𝘙', '𝘚', '𝘛', '𝘜', '𝘝', '𝘞', '𝘟', '𝘠', '𝘡' 370 '𝘕', '𝘖', '𝘗', '𝘘', '𝘙', '𝘚', '𝘛', '𝘜', '𝘝', '𝘞', '𝘟', '𝘠', '𝘡'
371 ]; 371 ];
372 /** 372 /**
373 * @type {Array.<string>} 373 * @type {Array<string>}
374 */ 374 */
375 this.smallLatinSansSerifItalic = 375 this.smallLatinSansSerifItalic =
376 [ 376 [
377 '𝘢', '𝘣', '𝘤', '𝘥', '𝘦', '𝘧', '𝘨', '𝘩', '𝘪', '𝘫', '𝘬', '𝘭', '𝘮', 377 '𝘢', '𝘣', '𝘤', '𝘥', '𝘦', '𝘧', '𝘨', '𝘩', '𝘪', '𝘫', '𝘬', '𝘭', '𝘮',
378 '𝘯', '𝘰', '𝘱', '𝘲', '𝘳', '𝘴', '𝘵', '𝘶', '𝘷', '𝘸', '𝘹', '𝘺', '𝘻' 378 '𝘯', '𝘰', '𝘱', '𝘲', '𝘳', '𝘴', '𝘵', '𝘶', '𝘷', '𝘸', '𝘹', '𝘺', '𝘻'
379 ]; 379 ];
380 /** 380 /**
381 * @type {Array.<string>} 381 * @type {Array<string>}
382 */ 382 */
383 this.capitalLatinMonospace = 383 this.capitalLatinMonospace =
384 [ 384 [
385 '𝙰', '𝙱', '𝙲', '𝙳', '𝙴', '𝙵', '𝙶', '𝙷', '𝙸', '𝙹', '𝙺', '𝙻', '𝙼', 385 '𝙰', '𝙱', '𝙲', '𝙳', '𝙴', '𝙵', '𝙶', '𝙷', '𝙸', '𝙹', '𝙺', '𝙻', '𝙼',
386 '𝙽', '𝙾', '𝙿', '𝚀', '𝚁', '𝚂', '𝚃', '𝚄', '𝚅', '𝚆', '𝚇', '𝚈', '𝚉' 386 '𝙽', '𝙾', '𝙿', '𝚀', '𝚁', '𝚂', '𝚃', '𝚄', '𝚅', '𝚆', '𝚇', '𝚈', '𝚉'
387 ]; 387 ];
388 /** 388 /**
389 * @type {Array.<string>} 389 * @type {Array<string>}
390 */ 390 */
391 this.smallLatinMonospace = 391 this.smallLatinMonospace =
392 [ 392 [
393 '𝚊', '𝚋', '𝚌', '𝚍', '𝚎', '𝚏', '𝚐', '𝚑', '𝚒', '𝚓', '𝚔', '𝚕', '𝚖', 393 '𝚊', '𝚋', '𝚌', '𝚍', '𝚎', '𝚏', '𝚐', '𝚑', '𝚒', '𝚓', '𝚔', '𝚕', '𝚖',
394 '𝚗', '𝚘', '𝚙', '𝚚', '𝚛', '𝚜', '𝚝', '𝚞', '𝚟', '𝚠', '𝚡', '𝚢', '𝚣' 394 '𝚗', '𝚘', '𝚙', '𝚚', '𝚛', '𝚜', '𝚝', '𝚞', '𝚟', '𝚠', '𝚡', '𝚢', '𝚣'
395 ]; 395 ];
396 /** 396 /**
397 * @type {Array.<string>} 397 * @type {Array<string>}
398 */ 398 */
399 this.latinDoubleStruckItalic = 399 this.latinDoubleStruckItalic =
400 [ 400 [
401 'ⅅ', 'ⅆ', 'ⅇ', 'ⅈ', 'ⅉ' 401 'ⅅ', 'ⅆ', 'ⅇ', 'ⅈ', 'ⅉ'
402 ]; 402 ];
403 403
404 // Greek Alphabets 404 // Greek Alphabets
405 /** 405 /**
406 * @type {Array.<string>} 406 * @type {Array<string>}
407 */ 407 */
408 this.capitalGreek = 408 this.capitalGreek =
409 [ 409 [
410 'Α', 'Β', 'Γ', 'Δ', 'Ε', 'Ζ', 'Η', 'Θ', 'Ι', 'Κ', 'Λ', 'Μ', 'Ν', 410 'Α', 'Β', 'Γ', 'Δ', 'Ε', 'Ζ', 'Η', 'Θ', 'Ι', 'Κ', 'Λ', 'Μ', 'Ν',
411 'Ξ', 'Ο', 'Π', 'Ρ', 'Σ', 'Τ', 'Υ', 'Φ', 'Χ', 'Ψ', 'Ω' 411 'Ξ', 'Ο', 'Π', 'Ρ', 'Σ', 'Τ', 'Υ', 'Φ', 'Χ', 'Ψ', 'Ω'
412 ]; 412 ];
413 /** 413 /**
414 * @type {Array.<string>} 414 * @type {Array<string>}
415 */ 415 */
416 this.smallGreek = 416 this.smallGreek =
417 [ 417 [
418 'α', 'β', 'γ', 'δ', 'ε', 'ζ', 'η', 'θ', 'ι', 'κ', 'λ', 'μ', 'ν', 418 'α', 'β', 'γ', 'δ', 'ε', 'ζ', 'η', 'θ', 'ι', 'κ', 'λ', 'μ', 'ν',
419 'ξ', 'ο', 'π', 'ρ', 'ς', 'σ', 'τ', 'υ', 'φ', 'χ', 'ψ', 'ω' 419 'ξ', 'ο', 'π', 'ρ', 'ς', 'σ', 'τ', 'υ', 'φ', 'χ', 'ψ', 'ω'
420 ]; 420 ];
421 /** 421 /**
422 * @type {Array.<string>} 422 * @type {Array<string>}
423 */ 423 */
424 this.capitalGreekBold = 424 this.capitalGreekBold =
425 [ 425 [
426 '𝚨', '𝚩', '𝚪', '𝚫', '𝚬', '𝚭', '𝚮', '𝚯', '𝚰', '𝚱', '𝚲', '𝚳', '𝚴', 426 '𝚨', '𝚩', '𝚪', '𝚫', '𝚬', '𝚭', '𝚮', '𝚯', '𝚰', '𝚱', '𝚲', '𝚳', '𝚴',
427 '𝚵', '𝚶', '𝚷', '𝚸', '𝚺', '𝚻', '𝚼', '𝚽', '𝚾', '𝚿', '𝛀' 427 '𝚵', '𝚶', '𝚷', '𝚸', '𝚺', '𝚻', '𝚼', '𝚽', '𝚾', '𝚿', '𝛀'
428 ]; 428 ];
429 /** 429 /**
430 * @type {Array.<string>} 430 * @type {Array<string>}
431 */ 431 */
432 this.smallGreekBold = 432 this.smallGreekBold =
433 [ 433 [
434 '𝛂', '𝛃', '𝛄', '𝛅', '𝛆', '𝛇', '𝛈', '𝛉', '𝛊', '𝛋', '𝛌', '𝛍', '𝛎', 434 '𝛂', '𝛃', '𝛄', '𝛅', '𝛆', '𝛇', '𝛈', '𝛉', '𝛊', '𝛋', '𝛌', '𝛍', '𝛎',
435 '𝛏', '𝛐', '𝛑', '𝛒', '𝛓', '𝛔', '𝛕', '𝛖', '𝛗', '𝛘', '𝛙', '𝛚' 435 '𝛏', '𝛐', '𝛑', '𝛒', '𝛓', '𝛔', '𝛕', '𝛖', '𝛗', '𝛘', '𝛙', '𝛚'
436 ]; 436 ];
437 /** 437 /**
438 * @type {Array.<string>} 438 * @type {Array<string>}
439 */ 439 */
440 this.capitalGreekItalic = 440 this.capitalGreekItalic =
441 [ 441 [
442 '𝛢', '𝛣', '𝛤', '𝛥', '𝛦', '𝛧', '𝛨', '𝛩', '𝛪', '𝛫', '𝛬', '𝛭', '𝛮', 442 '𝛢', '𝛣', '𝛤', '𝛥', '𝛦', '𝛧', '𝛨', '𝛩', '𝛪', '𝛫', '𝛬', '𝛭', '𝛮',
443 '𝛯', '𝛰', '𝛱', '𝛲', '𝛴', '𝛵', '𝛶', '𝛷', '𝛸', '𝛹', '𝛺' 443 '𝛯', '𝛰', '𝛱', '𝛲', '𝛴', '𝛵', '𝛶', '𝛷', '𝛸', '𝛹', '𝛺'
444 ]; 444 ];
445 /** 445 /**
446 * @type {Array.<string>} 446 * @type {Array<string>}
447 */ 447 */
448 this.smallGreekItalic = 448 this.smallGreekItalic =
449 [ 449 [
450 '𝛼', '𝛽', '𝛾', '𝛿', '𝜀', '𝜁', '𝜂', '𝜃', '𝜄', '𝜅', '𝜆', '𝜇', '𝜈', 450 '𝛼', '𝛽', '𝛾', '𝛿', '𝜀', '𝜁', '𝜂', '𝜃', '𝜄', '𝜅', '𝜆', '𝜇', '𝜈',
451 '𝜉', '𝜊', '𝜋', '𝜌', '𝜍', '𝜎', '𝜏', '𝜐', '𝜑', '𝜒', '𝜓', '𝜔' 451 '𝜉', '𝜊', '𝜋', '𝜌', '𝜍', '𝜎', '𝜏', '𝜐', '𝜑', '𝜒', '𝜓', '𝜔'
452 ]; 452 ];
453 /** 453 /**
454 * @type {Array.<string>} 454 * @type {Array<string>}
455 */ 455 */
456 this.capitalGreekSansSerifBold = 456 this.capitalGreekSansSerifBold =
457 [ 457 [
458 '𝝖', '𝝗', '𝝘', '𝝙', '𝝚', '𝝛', '𝝜', '𝝝', '𝝞', '𝝟', '𝝠', '𝝡', '𝝢', 458 '𝝖', '𝝗', '𝝘', '𝝙', '𝝚', '𝝛', '𝝜', '𝝝', '𝝞', '𝝟', '𝝠', '𝝡', '𝝢',
459 '𝝣', '𝝤', '𝝥', '𝝦', '𝝨', '𝝩', '𝝪', '𝝫', '𝝬', '𝝭', '𝝮' 459 '𝝣', '𝝤', '𝝥', '𝝦', '𝝨', '𝝩', '𝝪', '𝝫', '𝝬', '𝝭', '𝝮'
460 ]; 460 ];
461 /** 461 /**
462 * @type {Array.<string>} 462 * @type {Array<string>}
463 */ 463 */
464 this.smallGreekSansSerifBold = 464 this.smallGreekSansSerifBold =
465 [ 465 [
466 '𝝰', '𝝱', '𝝲', '𝝳', '𝝴', '𝝵', '𝝶', '𝝷', '𝝸', '𝝹', '𝝺', '𝝻', '𝝼', 466 '𝝰', '𝝱', '𝝲', '𝝳', '𝝴', '𝝵', '𝝶', '𝝷', '𝝸', '𝝹', '𝝺', '𝝻', '𝝼',
467 '𝝽', '𝝾', '𝝿', '𝞀', '𝞁', '𝞂', '𝞃', '𝞄', '𝞅', '𝞆', '𝞇', '𝞈' 467 '𝝽', '𝝾', '𝝿', '𝞀', '𝞁', '𝞂', '𝞃', '𝞄', '𝞅', '𝞆', '𝞇', '𝞈'
468 ]; 468 ];
469 /** 469 /**
470 * @type {Array.<string>} 470 * @type {Array<string>}
471 */ 471 */
472 this.greekDoubleStruck = 472 this.greekDoubleStruck =
473 [ 473 [
474 'ℼ', 'ℽ', 'ℾ', 'ℿ' 474 'ℼ', 'ℽ', 'ℾ', 'ℿ'
475 ]; 475 ];
476 476
477 // Other alphabets. 477 // Other alphabets.
478 /** 478 /**
479 * @type {Array.<string>} 479 * @type {Array<string>}
480 */ 480 */
481 this.hebrewLetters = 481 this.hebrewLetters =
482 [ 482 [
483 'ℵ', 'ℶ', 'ℷ', 'ℸ' 483 'ℵ', 'ℶ', 'ℷ', 'ℸ'
484 ]; 484 ];
485 485
486 //Operator symbols 486 //Operator symbols
487 /** 487 /**
488 * @type {Array.<string>} 488 * @type {Array<string>}
489 */ 489 */
490 this.additions = 490 this.additions =
491 [ 491 [
492 '+', '±', '∓', '∔', '∧', '∨', '∩', '∪', '⊌', '⊓', '⊔', '⊝', '⊞', 492 '+', '±', '∓', '∔', '∧', '∨', '∩', '∪', '⊌', '⊓', '⊔', '⊝', '⊞',
493 '⊤', '⊥', '⊺', '⊻', '⊼', '⋄', '⋎', '⋏', '⋒', '⋓', '△', '▷', '▽', 493 '⊤', '⊥', '⊺', '⊻', '⊼', '⋄', '⋎', '⋏', '⋒', '⋓', '△', '▷', '▽',
494 '◁', '⩞', '⊕' 494 '◁', '⩞', '⊕'
495 ]; 495 ];
496 /** 496 /**
497 * @type {Array.<string>} 497 * @type {Array<string>}
498 */ 498 */
499 /** 499 /**
500 * Invisible operator for plus. 500 * Invisible operator for plus.
501 * @type {string} 501 * @type {string}
502 * @private 502 * @private
503 */ 503 */
504 this.invisiblePlus_ = cvox.SemanticUtil.numberToUnicode(0x2064); 504 this.invisiblePlus_ = cvox.SemanticUtil.numberToUnicode(0x2064);
505 this.additions.push(this.invisiblePlus_); 505 this.additions.push(this.invisiblePlus_);
506 /** 506 /**
507 * @type {Array.<string>} 507 * @type {Array<string>}
508 */ 508 */
509 this.multiplications = 509 this.multiplications =
510 [ 510 [
511 '†', '‡', '∐', '∗', '∘', '∙', '≀', '⊚', '⊛', '⊠', '⊡', '⋅', '⋆', '⋇', 511 '†', '‡', '∐', '∗', '∘', '∙', '≀', '⊚', '⊛', '⊠', '⊡', '⋅', '⋆', '⋇',
512 '⋉', '⋊', '⋋', '⋌', '○' 512 '⋉', '⋊', '⋋', '⋌', '○'
513 ]; 513 ];
514 /** 514 /**
515 * Invisible operator for multiplication. 515 * Invisible operator for multiplication.
516 * @type {string} 516 * @type {string}
517 * @private 517 * @private
518 */ 518 */
519 this.invisibleTimes_ = cvox.SemanticUtil.numberToUnicode(0x2062); 519 this.invisibleTimes_ = cvox.SemanticUtil.numberToUnicode(0x2062);
520 this.multiplications.push(this.invisibleTimes_); 520 this.multiplications.push(this.invisibleTimes_);
521 /** 521 /**
522 * @type {Array.<string>} 522 * @type {Array<string>}
523 */ 523 */
524 this.subtractions = 524 this.subtractions =
525 [ 525 [
526 '-', '⁒', '⁻', '₋', '−', '∖', '∸', '≂', '⊖', '⊟', '➖', '⨩', '⨪', 526 '-', '⁒', '⁻', '₋', '−', '∖', '∸', '≂', '⊖', '⊟', '➖', '⨩', '⨪',
527 '⨫', '⨬', '⨺', '⩁', '⩬', '﹣', '-', '‐', '‑' 527 '⨫', '⨬', '⨺', '⩁', '⩬', '﹣', '-', '‐', '‑'
528 ]; 528 ];
529 /** 529 /**
530 * @type {Array.<string>} 530 * @type {Array<string>}
531 */ 531 */
532 this.divisions = 532 this.divisions =
533 [ 533 [
534 '/', '÷', '⁄', '∕', '⊘', '⟌', '⦼', '⨸' 534 '/', '÷', '⁄', '∕', '⊘', '⟌', '⦼', '⨸'
535 ]; 535 ];
536 /** 536 /**
537 * Invisible operator for function application. 537 * Invisible operator for function application.
538 * @type {string} 538 * @type {string}
539 * @private 539 * @private
540 */ 540 */
541 this.functionApplication_ = cvox.SemanticUtil.numberToUnicode(0x2061); 541 this.functionApplication_ = cvox.SemanticUtil.numberToUnicode(0x2061);
542 542
543 //Relation symbols 543 //Relation symbols
544 /** 544 /**
545 * @type {Array.<string>} 545 * @type {Array<string>}
546 */ 546 */
547 this.equalities = 547 this.equalities =
548 [ 548 [
549 '=', '~', '⁼', '₌', '∼', '∽', '≃', '≅', '≈', '≊', '≋', '≌', '≍', 549 '=', '~', '⁼', '₌', '∼', '∽', '≃', '≅', '≈', '≊', '≋', '≌', '≍',
550 '≎', '≑', '≒', '≓', '≔', '≕', '≖', '≗', '≘', '≙', '≚', '≛', '≜', 550 '≎', '≑', '≒', '≓', '≔', '≕', '≖', '≗', '≘', '≙', '≚', '≛', '≜',
551 '≝', '≞', '≟', '≡', '≣', '⧤', '⩦', '⩮', '⩯', '⩰', '⩱', '⩲', '⩳', 551 '≝', '≞', '≟', '≡', '≣', '⧤', '⩦', '⩮', '⩯', '⩰', '⩱', '⩲', '⩳',
552 '⩴', '⩵', '⩶', '⩷', '⩸', '⋕', '⩭', '⩪', '⩫', '⩬', '﹦', '=' 552 '⩴', '⩵', '⩶', '⩷', '⩸', '⋕', '⩭', '⩪', '⩫', '⩬', '﹦', '='
553 ]; 553 ];
554 /** 554 /**
555 * @type {Array.<string>} 555 * @type {Array<string>}
556 */ 556 */
557 this.inequalities = 557 this.inequalities =
558 [ 558 [
559 '<', '>', '≁', '≂', '≄', '≆', '≇', '≉', '≏', '≐', '≠', '≢', '≤', 559 '<', '>', '≁', '≂', '≄', '≆', '≇', '≉', '≏', '≐', '≠', '≢', '≤',
560 '≥', '≦', '≧', '≨', '≩', '≪', '≫', '≬', '≭', '≮', '≯', '≰', '≱', 560 '≥', '≦', '≧', '≨', '≩', '≪', '≫', '≬', '≭', '≮', '≯', '≰', '≱',
561 '≲', '≳', '≴', '≵', '≶', '≷', '≸', '≹', '≺', '≻', '≼', '≽', '≾', 561 '≲', '≳', '≴', '≵', '≶', '≷', '≸', '≹', '≺', '≻', '≼', '≽', '≾',
562 '≿', '⊀', '⊁', '⋖', '⋗', '⋘', '⋙', '⋚', '⋛', '⋜', '⋝', '⋞', '⋟', 562 '≿', '⊀', '⊁', '⋖', '⋗', '⋘', '⋙', '⋚', '⋛', '⋜', '⋝', '⋞', '⋟',
563 '⋠', '⋡', '⋢', '⋣', '⋤', '⋥', '⋦', '⋧', '⋨', '⋩', '⩹', '⩺', '⩻', 563 '⋠', '⋡', '⋢', '⋣', '⋤', '⋥', '⋦', '⋧', '⋨', '⋩', '⩹', '⩺', '⩻',
564 '⩼', '⩽', '⩾', '⩿', '⪀', '⪁', '⪂', '⪃', '⪄', '⪅', '⪆', '⪇', '⪈', 564 '⩼', '⩽', '⩾', '⩿', '⪀', '⪁', '⪂', '⪃', '⪄', '⪅', '⪆', '⪇', '⪈',
565 '⪉', '⪊', '⪋', '⪌', '⪍', '⪎', '⪏', '⪐', '⪑', '⪒', '⪓', '⪔', '⪕', 565 '⪉', '⪊', '⪋', '⪌', '⪍', '⪎', '⪏', '⪐', '⪑', '⪒', '⪓', '⪔', '⪕',
566 '⪖', '⪗', '⪘', '⪙', '⪚', '⪛', '⪜', '⪝', '⪞', '⪟', '⪠', '⪡', '⪢', 566 '⪖', '⪗', '⪘', '⪙', '⪚', '⪛', '⪜', '⪝', '⪞', '⪟', '⪠', '⪡', '⪢',
567 '⪣', '⪤', '⪥', '⪦', '⪧', '⪨', '⪩', '⪪', '⪫', '⪬', '⪭', '⪮', '⪯', 567 '⪣', '⪤', '⪥', '⪦', '⪧', '⪨', '⪩', '⪪', '⪫', '⪬', '⪭', '⪮', '⪯',
568 '⪰', '⪱', '⪲', '⪳', '⪴', '⪵', '⪶', '⪷', '⪸', '⪹', '⪺', '⪻', '⪼', 568 '⪰', '⪱', '⪲', '⪳', '⪴', '⪵', '⪶', '⪷', '⪸', '⪹', '⪺', '⪻', '⪼',
569 '⫷', '⫸', '⫹', '⫺', '⧀', '⧁', '﹤', '﹥', '<', '>' 569 '⫷', '⫸', '⫹', '⫺', '⧀', '⧁', '﹤', '﹥', '<', '>'
570 ]; 570 ];
571 /** 571 /**
572 * @type {Array.<string>} 572 * @type {Array<string>}
573 */ 573 */
574 this.relations = 574 this.relations =
575 [ 575 [
576 // TODO (sorge): Add all the other relations. 576 // TODO (sorge): Add all the other relations.
577 ]; 577 ];
578 /** 578 /**
579 * @type {Array.<string>} 579 * @type {Array<string>}
580 */ 580 */
581 this.arrows = 581 this.arrows =
582 [ 582 [
583 '←', '↑', '→', '↓', '↔', '↕', '↖', '↗', '↘', '↙', '↚', '↛', '↜', 583 '←', '↑', '→', '↓', '↔', '↕', '↖', '↗', '↘', '↙', '↚', '↛', '↜',
584 '↝', '↞', '↟', '↠', '↡', '↢', '↣', '↤', '↥', '↦', '↧', '↨', '↩', 584 '↝', '↞', '↟', '↠', '↡', '↢', '↣', '↤', '↥', '↦', '↧', '↨', '↩',
585 '↪', '↫', '↬', '↭', '↮', '↯', '↰', '↱', '↲', '↳', '↴', '↵', '↶', 585 '↪', '↫', '↬', '↭', '↮', '↯', '↰', '↱', '↲', '↳', '↴', '↵', '↶',
586 '↷', '↸', '↹', '↺', '↻', '⇄', '⇅', '⇆', '⇇', '⇈', '⇉', '⇊', '⇍', 586 '↷', '↸', '↹', '↺', '↻', '⇄', '⇅', '⇆', '⇇', '⇈', '⇉', '⇊', '⇍',
587 '⇎', '⇏', '⇐', '⇑', '⇒', '⇓', '⇔', '⇕', '⇖', '⇗', '⇘', '⇙', '⇚', 587 '⇎', '⇏', '⇐', '⇑', '⇒', '⇓', '⇔', '⇕', '⇖', '⇗', '⇘', '⇙', '⇚',
588 '⇛', '⇜', '⇝', '⇞', '⇟', '⇠', '⇡', '⇢', '⇣', '⇤', '⇥', '⇦', '⇧', 588 '⇛', '⇜', '⇝', '⇞', '⇟', '⇠', '⇡', '⇢', '⇣', '⇤', '⇥', '⇦', '⇧',
589 '⇨', '⇩', '⇪', '⇫', '⇬', '⇭', '⇮', '⇯', '⇰', '⇱', '⇲', '⇳', '⇴', 589 '⇨', '⇩', '⇪', '⇫', '⇬', '⇭', '⇮', '⇯', '⇰', '⇱', '⇲', '⇳', '⇴',
(...skipping 16 matching lines...) Expand all
606 '⭌', '←', '↑', '→', '↓', 606 '⭌', '←', '↑', '→', '↓',
607 // Harpoons 607 // Harpoons
608 '↼', '↽', '↾', '↿', '⇀', '⇁', '⇂', '⇃', '⇋', '⇌', '⥊', '⥋', '⥌', 608 '↼', '↽', '↾', '↿', '⇀', '⇁', '⇂', '⇃', '⇋', '⇌', '⥊', '⥋', '⥌',
609 '⥍', '⥎', '⥏', '⥐', '⥑', '⥒', '⥓', '⥔', '⥕', '⥖', '⥗', '⥘', '⥙', 609 '⥍', '⥎', '⥏', '⥐', '⥑', '⥒', '⥓', '⥔', '⥕', '⥖', '⥗', '⥘', '⥙',
610 '⥚', '⥛', '⥜', '⥝', '⥞', '⥟', '⥠', '⥡', '⥢', '⥣', '⥤', '⥥', '⥦', 610 '⥚', '⥛', '⥜', '⥝', '⥞', '⥟', '⥠', '⥡', '⥢', '⥣', '⥤', '⥥', '⥦',
611 '⥧', '⥨', '⥩', '⥪', '⥫', '⥬', '⥭', '⥮', '⥯', '⥼', '⥽', '⥾', '⥿' 611 '⥧', '⥨', '⥩', '⥪', '⥫', '⥬', '⥭', '⥮', '⥯', '⥼', '⥽', '⥾', '⥿'
612 ]; 612 ];
613 613
614 //Big operation symbols 614 //Big operation symbols
615 /** 615 /**
616 * @type {Array.<string>} 616 * @type {Array<string>}
617 */ 617 */
618 this.sumOps = 618 this.sumOps =
619 [ 619 [
620 '⅀', // double struck 620 '⅀', // double struck
621 '∏', '∐', '∑', '⋀', '⋁', '⋂', '⋃', '⨀', '⨁', '⨂', '⨃', '⨄', '⨅', 621 '∏', '∐', '∑', '⋀', '⋁', '⋂', '⋃', '⨀', '⨁', '⨂', '⨃', '⨄', '⨅',
622 '⨆', '⨇', '⨈', '⨉', '⨊', '⨋', '⫼', '⫿' 622 '⨆', '⨇', '⨈', '⨉', '⨊', '⨋', '⫼', '⫿'
623 ]; 623 ];
624 /** 624 /**
625 * @type {Array.<string>} 625 * @type {Array<string>}
626 */ 626 */
627 this.intOps = 627 this.intOps =
628 [ 628 [
629 '∫', '∬', '∭', '∮', '∯', '∰', '∱', '∲', '∳', '⨌', '⨍', '⨎', '⨏', 629 '∫', '∬', '∭', '∮', '∯', '∰', '∱', '∲', '∳', '⨌', '⨍', '⨎', '⨏',
630 '⨐', '⨑', '⨒', '⨓', '⨔', '⨕', '⨖', '⨗', '⨘', '⨙', '⨚', '⨛', '⨜' 630 '⨐', '⨑', '⨒', '⨓', '⨔', '⨕', '⨖', '⨗', '⨘', '⨙', '⨚', '⨛', '⨜'
631 ]; 631 ];
632 /** 632 /**
633 * @type {Array.<string>} 633 * @type {Array<string>}
634 */ 634 */
635 this.prefixOps = 635 this.prefixOps =
636 // TODO (sorge) Insert nabla, differential operators etc. 636 // TODO (sorge) Insert nabla, differential operators etc.
637 [ 637 [
638 '∀', '∃' 638 '∀', '∃'
639 ]; 639 ];
640 /** 640 /**
641 * @type {Array.<string>} 641 * @type {Array<string>}
642 */ 642 */
643 this.operatorBits = 643 this.operatorBits =
644 // TODO (sorge) What to do if single glyphs of big ops occur on their own. 644 // TODO (sorge) What to do if single glyphs of big ops occur on their own.
645 [ 645 [
646 '⌠', '⌡', '⎶', '⎪', '⎮', '⎯', '⎲', '⎳', '⎷' 646 '⌠', '⌡', '⎶', '⎪', '⎮', '⎯', '⎲', '⎳', '⎷'
647 ]; 647 ];
648 648
649 // Accents. 649 // Accents.
650 // TODO (sorge) Add accented characters. 650 // TODO (sorge) Add accented characters.
651 651
652 // Numbers. 652 // Numbers.
653 // Digits. 653 // Digits.
654 /** 654 /**
655 * @type {Array.<string>} 655 * @type {Array<string>}
656 */ 656 */
657 this.digitsNormal = 657 this.digitsNormal =
658 [ 658 [
659 '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' 659 '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'
660 ]; 660 ];
661 /** 661 /**
662 * @type {Array.<string>} 662 * @type {Array<string>}
663 */ 663 */
664 this.digitsFullWidth = 664 this.digitsFullWidth =
665 [ 665 [
666 '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' 666 '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'
667 ]; 667 ];
668 /** 668 /**
669 * @type {Array.<string>} 669 * @type {Array<string>}
670 */ 670 */
671 this.digitsBold = 671 this.digitsBold =
672 [ 672 [
673 '𝟎', '𝟏', '𝟐', '𝟑', '𝟒', '𝟓', '𝟔', '𝟕', '𝟖', '𝟗' 673 '𝟎', '𝟏', '𝟐', '𝟑', '𝟒', '𝟓', '𝟔', '𝟕', '𝟖', '𝟗'
674 ]; 674 ];
675 /** 675 /**
676 * @type {Array.<string>} 676 * @type {Array<string>}
677 */ 677 */
678 this.digitsDoubleStruck = 678 this.digitsDoubleStruck =
679 [ 679 [
680 '𝟘', '𝟙', '𝟚', '𝟛', '𝟜', '𝟝', '𝟞', '𝟟', '𝟠', '𝟡' 680 '𝟘', '𝟙', '𝟚', '𝟛', '𝟜', '𝟝', '𝟞', '𝟟', '𝟠', '𝟡'
681 ]; 681 ];
682 /** 682 /**
683 * @type {Array.<string>} 683 * @type {Array<string>}
684 */ 684 */
685 this.digitsSansSerif = 685 this.digitsSansSerif =
686 [ 686 [
687 '𝟢', '𝟣', '𝟤', '𝟥', '𝟦', '𝟧', '𝟨', '𝟩', '𝟪', '𝟫' 687 '𝟢', '𝟣', '𝟤', '𝟥', '𝟦', '𝟧', '𝟨', '𝟩', '𝟪', '𝟫'
688 ]; 688 ];
689 /** 689 /**
690 * @type {Array.<string>} 690 * @type {Array<string>}
691 */ 691 */
692 this.digitsSansSerifBold = 692 this.digitsSansSerifBold =
693 [ 693 [
694 '𝟬', '𝟭', '𝟮', '𝟯', '𝟰', '𝟱', '𝟲', '𝟳', '𝟴', '𝟵' 694 '𝟬', '𝟭', '𝟮', '𝟯', '𝟰', '𝟱', '𝟲', '𝟳', '𝟴', '𝟵'
695 ]; 695 ];
696 /** 696 /**
697 * @type {Array.<string>} 697 * @type {Array<string>}
698 */ 698 */
699 this.digitsMonospace = 699 this.digitsMonospace =
700 [ 700 [
701 '𝟶', '𝟷', '𝟸', '𝟹', '𝟺', '𝟻', '𝟼', '𝟽', '𝟾', '𝟿' 701 '𝟶', '𝟷', '𝟸', '𝟹', '𝟺', '𝟻', '𝟼', '𝟽', '𝟾', '𝟿'
702 ]; 702 ];
703 /** 703 /**
704 * @type {Array.<string>} 704 * @type {Array<string>}
705 */ 705 */
706 this.digitsSuperscript = 706 this.digitsSuperscript =
707 [ 707 [
708 '²', '³', '¹', '⁰', '⁴', '⁵', '⁶', '⁷', '⁸', '⁹' 708 '²', '³', '¹', '⁰', '⁴', '⁵', '⁶', '⁷', '⁸', '⁹'
709 ]; 709 ];
710 /** 710 /**
711 * @type {Array.<string>} 711 * @type {Array<string>}
712 */ 712 */
713 this.digitsSubscript = 713 this.digitsSubscript =
714 [ 714 [
715 '₀', '₁', '₂', '₃', '₄', '₅', '₆', '₇', '₈', '₉' 715 '₀', '₁', '₂', '₃', '₄', '₅', '₆', '₇', '₈', '₉'
716 ]; 716 ];
717 /** 717 /**
718 * @type {Array.<string>} 718 * @type {Array<string>}
719 */ 719 */
720 this.fractions = 720 this.fractions =
721 [ 721 [
722 '¼', '½', '¾', '⅐', '⅑', '⅒', '⅓', '⅔', '⅕', '⅖', '⅗', '⅘', '⅙', 722 '¼', '½', '¾', '⅐', '⅑', '⅒', '⅓', '⅔', '⅕', '⅖', '⅗', '⅘', '⅙',
723 '⅚', '⅛', '⅜', '⅝', '⅞', '⅟', '↉' 723 '⅚', '⅛', '⅜', '⅝', '⅞', '⅟', '↉'
724 ]; 724 ];
725 /** 725 /**
726 * @type {Array.<string>} 726 * @type {Array<string>}
727 */ 727 */
728 this.enclosedNumbers = 728 this.enclosedNumbers =
729 // Encircled numbers. 729 // Encircled numbers.
730 [ 730 [
731 '①', '②', '③', '④', '⑤', '⑥', '⑦', '⑧', '⑨', '⑩', '⑪', '⑫', '⑬', 731 '①', '②', '③', '④', '⑤', '⑥', '⑦', '⑧', '⑨', '⑩', '⑪', '⑫', '⑬',
732 '⑭', '⑮', '⑯', '⑰', '⑱', '⑲', '⑳', '⓪', '⓫', '⓬', '⓭', '⓮', '⓯', 732 '⑭', '⑮', '⑯', '⑰', '⑱', '⑲', '⑳', '⓪', '⓫', '⓬', '⓭', '⓮', '⓯',
733 '⓰', '⓱', '⓲', '⓳', '⓴', '⓵', '⓶', '⓷', '⓸', '⓹', '⓺', '⓻', '⓼', 733 '⓰', '⓱', '⓲', '⓳', '⓴', '⓵', '⓶', '⓷', '⓸', '⓹', '⓺', '⓻', '⓼',
734 '⓽', '⓾', '⓿', '❶', '❷', '❸', '❹', '❺', '❻', '❼', '❽', '❾', '❿', 734 '⓽', '⓾', '⓿', '❶', '❷', '❸', '❹', '❺', '❻', '❼', '❽', '❾', '❿',
735 '➀', '➁', '➂', '➃', '➄', '➅', '➆', '➇', '➈', '➉', '➊', '➋', '➌', 735 '➀', '➁', '➂', '➃', '➄', '➅', '➆', '➇', '➈', '➉', '➊', '➋', '➌',
736 '➍', '➎', '➏', '➐', '➑', '➒', '➓', '㉈', '㉉', '㉊', '㉋', '㉌', 736 '➍', '➎', '➏', '➐', '➑', '➒', '➓', '㉈', '㉉', '㉊', '㉋', '㉌',
737 '㉍', '㉎', '㉏', '㉑', '㉒', '㉓', '㉔', '㉕', '㉖', '㉗', '㉘', 737 '㉍', '㉎', '㉏', '㉑', '㉒', '㉓', '㉔', '㉕', '㉖', '㉗', '㉘',
738 '㉙', '㉚', '㉛', '㉜', '㉝', '㉞', '㉟', '㊱', '㊲', '㊳', '㊴', 738 '㉙', '㉚', '㉛', '㉜', '㉝', '㉞', '㉟', '㊱', '㊲', '㊳', '㊴',
739 '㊵', '㊶', '㊷', '㊸', '㊹', '㊺', '㊻', '㊼', '㊽', '㊾', '㊿']; 739 '㊵', '㊶', '㊷', '㊸', '㊹', '㊺', '㊻', '㊼', '㊽', '㊾', '㊿'];
740 /** 740 /**
741 * @type {Array.<string>} 741 * @type {Array<string>}
742 */ 742 */
743 this.fencedNumbers = 743 this.fencedNumbers =
744 // Numbers in Parenthesis. 744 // Numbers in Parenthesis.
745 [ 745 [
746 '⑴', '⑵', '⑶', '⑷', '⑸', '⑹', '⑺', '⑻', '⑼', '⑽', '⑾', '⑿', '⒀', 746 '⑴', '⑵', '⑶', '⑷', '⑸', '⑹', '⑺', '⑻', '⑼', '⑽', '⑾', '⑿', '⒀',
747 '⒁', '⒂', '⒃', '⒄', '⒅', '⒆', '⒇' 747 '⒁', '⒂', '⒃', '⒄', '⒅', '⒆', '⒇'
748 ]; 748 ];
749 /** 749 /**
750 * @type {Array.<string>} 750 * @type {Array<string>}
751 */ 751 */
752 this.punctuatedNumbers = 752 this.punctuatedNumbers =
753 // Numbers with other punctuation. 753 // Numbers with other punctuation.
754 ['⒈', '⒉', '⒊', '⒋', '⒌', '⒍', '⒎', '⒏', '⒐', '⒑', '⒒', '⒓', '⒔', 754 ['⒈', '⒉', '⒊', '⒋', '⒌', '⒍', '⒎', '⒏', '⒐', '⒑', '⒒', '⒓', '⒔',
755 '⒕', '⒖', '⒗', '⒘', '⒙', '⒚', '⒛', // full stop. 755 '⒕', '⒖', '⒗', '⒘', '⒙', '⒚', '⒛', // full stop.
756 '🄀', '🄁', '🄂', '🄃', '🄄', '🄅', '🄆', '🄇', '🄈', '🄉', '🄊' // comma. 756 '🄀', '🄁', '🄂', '🄃', '🄄', '🄅', '🄆', '🄇', '🄈', '🄉', '🄊' // comma.
757 ]; 757 ];
758 /** Array of all single digits. 758 /** Array of all single digits.
759 * @type {Array.<string>} 759 * @type {Array<string>}
760 */ 760 */
761 this.digits = this.digitsNormal.concat( 761 this.digits = this.digitsNormal.concat(
762 this.digitsFullWidth, this.digitsBold, this.digitsDoubleStruck, 762 this.digitsFullWidth, this.digitsBold, this.digitsDoubleStruck,
763 this.digitsSansSerif, this.digitsSansSerifBold, this.digitsMonospace); 763 this.digitsSansSerif, this.digitsSansSerifBold, this.digitsMonospace);
764 /** Array of all non-digit number symbols. 764 /** Array of all non-digit number symbols.
765 * @type {Array.<string>} 765 * @type {Array<string>}
766 */ 766 */
767 this.numbers = this.fractions.concat( 767 this.numbers = this.fractions.concat(
768 this.digitsSuperscript, this.digitsSubscript, 768 this.digitsSuperscript, this.digitsSubscript,
769 this.enclosedNumbers, this.fencedNumbers, this.punctuatedNumbers); 769 this.enclosedNumbers, this.fencedNumbers, this.punctuatedNumbers);
770 /** Array of all number symbols. 770 /** Array of all number symbols.
771 * @type {Array.<string>} 771 * @type {Array<string>}
772 */ 772 */
773 this.allNumbers = this.digits.concat(this.numbers); 773 this.allNumbers = this.digits.concat(this.numbers);
774 774
775 // Functions. 775 // Functions.
776 /** 776 /**
777 * @type {Array.<string>} 777 * @type {Array<string>}
778 */ 778 */
779 this.trigonometricFunctions = 779 this.trigonometricFunctions =
780 [ 780 [
781 'cos', 'cot', 'csc', 'sec', 'sin', 'tan', 'arccos', 'arccot', 781 'cos', 'cot', 'csc', 'sec', 'sin', 'tan', 'arccos', 'arccot',
782 'arccsc', 'arcsec', 'arcsin', 'arctan' 782 'arccsc', 'arcsec', 'arcsin', 'arctan'
783 ]; 783 ];
784 /** 784 /**
785 * @type {Array.<string>} 785 * @type {Array<string>}
786 */ 786 */
787 this.hyperbolicFunctions = 787 this.hyperbolicFunctions =
788 [ 788 [
789 'cosh', 'coth', 'csch', 'sech', 'sinh', 'tanh', 789 'cosh', 'coth', 'csch', 'sech', 'sinh', 'tanh',
790 'arcosh', 'arcoth', 'arcsch', 'arsech', 'arsinh', 'artanh', 790 'arcosh', 'arcoth', 'arcsch', 'arsech', 'arsinh', 'artanh',
791 'arccosh', 'arccoth', 'arccsch', 'arcsech', 'arcsinh', 'arctanh' 791 'arccosh', 'arccoth', 'arccsch', 'arcsech', 'arcsinh', 'arctanh'
792 ]; 792 ];
793 /** 793 /**
794 * @type {Array.<string>} 794 * @type {Array<string>}
795 */ 795 */
796 this.algebraicFunctions = 796 this.algebraicFunctions =
797 [ 797 [
798 'deg', 'det', 'dim', 'hom', 'ker', 'Tr', 'tr' 798 'deg', 'det', 'dim', 'hom', 'ker', 'Tr', 'tr'
799 ]; 799 ];
800 /** 800 /**
801 * @type {Array.<string>} 801 * @type {Array<string>}
802 */ 802 */
803 this.elementaryFunctions = 803 this.elementaryFunctions =
804 [ 804 [
805 'log', 'ln', 'lg', 'exp', 'expt', 'gcd', 'gcd', 'arg', 'im', 're', 'Pr' 805 'log', 'ln', 'lg', 'exp', 'expt', 'gcd', 'gcd', 'arg', 'im', 're', 'Pr'
806 ]; 806 ];
807 /** All predefined prefix functions. 807 /** All predefined prefix functions.
808 * @type {Array.<string>} 808 * @type {Array<string>}
809 */ 809 */
810 this.prefixFunctions = this.trigonometricFunctions.concat( 810 this.prefixFunctions = this.trigonometricFunctions.concat(
811 this.hyperbolicFunctions, 811 this.hyperbolicFunctions,
812 this.algebraicFunctions, 812 this.algebraicFunctions,
813 this.elementaryFunctions 813 this.elementaryFunctions
814 ); 814 );
815 /** Limit functions are handled separately as they can have lower (and upper) 815 /** Limit functions are handled separately as they can have lower (and upper)
816 * limiting expressions. 816 * limiting expressions.
817 * @type {Array.<string>} 817 * @type {Array<string>}
818 */ 818 */
819 this.limitFunctions = 819 this.limitFunctions =
820 [ 820 [
821 'inf', 'lim', 'liminf', 'limsup', 'max', 'min', 'sup', 'injlim', 821 'inf', 'lim', 'liminf', 'limsup', 'max', 'min', 'sup', 'injlim',
822 'projlim' 822 'projlim'
823 ]; 823 ];
824 /** 824 /**
825 * @type {Array.<string>} 825 * @type {Array<string>}
826 */ 826 */
827 this.infixFunctions = 827 this.infixFunctions =
828 [ 828 [
829 'mod', 'rem' 829 'mod', 'rem'
830 ]; 830 ];
831 /** 831 /**
832 * Default assignments of semantic attributes. 832 * Default assignments of semantic attributes.
833 * @type {Array.<{set: Array.<string>, 833 * @type {Array<{set: Array<string>,
834 * role: cvox.SemanticAttr.Role, 834 * role: cvox.SemanticAttr.Role,
835 * type: cvox.SemanticAttr.Type, 835 * type: cvox.SemanticAttr.Type,
836 * font: cvox.SemanticAttr.Font}>} The semantic meaning of the symbol. 836 * font: cvox.SemanticAttr.Font}>} The semantic meaning of the symbol.
837 * @private 837 * @private
838 */ 838 */
839 this.symbolSetToSemantic_ = [ 839 this.symbolSetToSemantic_ = [
840 // Punctuation 840 // Punctuation
841 {set: this.generalPunctuations, 841 {set: this.generalPunctuations,
842 type: cvox.SemanticAttr.Type.PUNCTUATION, 842 type: cvox.SemanticAttr.Type.PUNCTUATION,
843 role: cvox.SemanticAttr.Role.UNKNOWN 843 role: cvox.SemanticAttr.Role.UNKNOWN
(...skipping 676 matching lines...) Expand 10 before | Expand all | Expand 10 after
1520 type: set.type || cvox.SemanticAttr.Type.UNKNOWN, 1520 type: set.type || cvox.SemanticAttr.Type.UNKNOWN,
1521 font: set.font || cvox.SemanticAttr.Font.UNKNOWN 1521 font: set.font || cvox.SemanticAttr.Font.UNKNOWN
1522 }; 1522 };
1523 } 1523 }
1524 } 1524 }
1525 return {role: cvox.SemanticAttr.Role.UNKNOWN, 1525 return {role: cvox.SemanticAttr.Role.UNKNOWN,
1526 type: cvox.SemanticAttr.Type.UNKNOWN, 1526 type: cvox.SemanticAttr.Type.UNKNOWN,
1527 font: cvox.SemanticAttr.Font.UNKNOWN 1527 font: cvox.SemanticAttr.Font.UNKNOWN
1528 }; 1528 };
1529 }; 1529 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698