1#[rustfmt::skip]
6pub(super) const SCRIPT_CLASSES: &[ScriptClass] = &[
7 ScriptClass {
8 name: "Adlam",
9 group: ScriptGroup::Default,
10 tag: Tag::new(b"Adlm"),
11 hint_top_to_bottom: false,
12 std_chars: "𞤌 𞤮",
13 blues: &[
14 ("𞤌 𞤅 𞤈 𞤏 𞤔 𞤚", BlueZones::TOP),
15 ("𞤂 𞤖", BlueZones::NONE),
16 ("𞤬 𞤮 𞤻 𞤼 𞤾", BlueZones::TOP.union(BlueZones::X_HEIGHT)),
17 ("𞤤 𞤨 𞤩 𞤭 𞤴 𞤸 𞤺 𞥀", BlueZones::NONE),
18 ],
19 },
20 ScriptClass {
21 name: "Arabic",
22 group: ScriptGroup::Default,
23 tag: Tag::new(b"Arab"),
24 hint_top_to_bottom: false,
25 std_chars: "ل ح ـ",
26 blues: &[
27 ("ا إ ل ك ط ظ", BlueZones::TOP),
28 ("ت ث ط ظ ك", BlueZones::NONE),
29 ("ـ", BlueZones::NEUTRAL),
30 ],
31 },
32 ScriptClass {
33 name: "Armenian",
34 group: ScriptGroup::Default,
35 tag: Tag::new(b"Armn"),
36 hint_top_to_bottom: false,
37 std_chars: "ս Ս",
38 blues: &[
39 ("Ա Մ Ւ Ս Բ Գ Դ Օ", BlueZones::TOP),
40 ("Ւ Ո Դ Ճ Շ Ս Տ Օ", BlueZones::NONE),
41 ("ե է ի մ վ ֆ ճ", BlueZones::TOP),
42 ("ա յ ւ ս գ շ ր օ", BlueZones::TOP.union(BlueZones::X_HEIGHT)),
43 ("հ ո ճ ա ե ծ ս օ", BlueZones::NONE),
44 ("բ ը ի լ ղ պ փ ց", BlueZones::NONE),
45 ],
46 },
47 ScriptClass {
48 name: "Avestan",
49 group: ScriptGroup::Default,
50 tag: Tag::new(b"Avst"),
51 hint_top_to_bottom: false,
52 std_chars: "𐬚",
53 blues: &[
54 ("𐬀 𐬁 𐬐 𐬛", BlueZones::TOP),
55 ("𐬀 𐬁", BlueZones::NONE),
56 ],
57 },
58 ScriptClass {
59 name: "Bamum",
60 group: ScriptGroup::Default,
61 tag: Tag::new(b"Bamu"),
62 hint_top_to_bottom: false,
63 std_chars: "ꛁ ꛯ",
64 blues: &[
65 ("ꚧ ꚨ ꛛ ꛉ ꛁ ꛈ ꛫ ꛯ", BlueZones::TOP),
66 ("ꚭ ꚳ ꚶ ꛬ ꚢ ꚽ ꛯ ꛲", BlueZones::NONE),
67 ],
68 },
69 ScriptClass {
70 name: "Bengali",
71 group: ScriptGroup::Default,
72 tag: Tag::new(b"Beng"),
73 hint_top_to_bottom: true,
74 std_chars: "০ ৪",
75 blues: &[
76 ("ই ট ঠ ি ী ৈ ৗ", BlueZones::TOP),
77 ("ও এ ড ত ন ব ল ক", BlueZones::TOP),
78 ("অ ড ত ন ব ভ ল ক", BlueZones::TOP.union(BlueZones::NEUTRAL).union(BlueZones::X_HEIGHT)),
79 ("অ ড ত ন ব ভ ল ক", BlueZones::NONE),
80 ],
81 },
82 ScriptClass {
83 name: "Buhid",
84 group: ScriptGroup::Default,
85 tag: Tag::new(b"Buhd"),
86 hint_top_to_bottom: false,
87 std_chars: "ᝋ ᝏ",
88 blues: &[
89 ("ᝐ ᝈ", BlueZones::TOP),
90 ("ᝅ ᝊ ᝎ", BlueZones::TOP),
91 ("ᝂ ᝃ ᝉ ᝌ", BlueZones::TOP.union(BlueZones::X_HEIGHT)),
92 ("ᝀ ᝃ ᝆ ᝉ ᝋ ᝏ ᝑ", BlueZones::NONE),
93 ],
94 },
95 ScriptClass {
96 name: "Chakma",
97 group: ScriptGroup::Default,
98 tag: Tag::new(b"Cakm"),
99 hint_top_to_bottom: false,
100 std_chars: "𑄤 𑄉 𑄛",
101 blues: &[
102 ("𑄃 𑄅 𑄉 𑄙 𑄗", BlueZones::TOP),
103 ("𑄅 𑄛 𑄝 𑄗 𑄓", BlueZones::NONE),
104 ("𑄖𑄳𑄢 𑄘𑄳𑄢 𑄙𑄳𑄢 𑄤𑄳𑄢 𑄥𑄳𑄢", BlueZones::NONE),
105 ],
106 },
107 ScriptClass {
108 name: "Canadian Syllabics",
109 group: ScriptGroup::Default,
110 tag: Tag::new(b"Cans"),
111 hint_top_to_bottom: false,
112 std_chars: "ᑌ ᓚ",
113 blues: &[
114 ("ᗜ ᖴ ᐁ ᒣ ᑫ ᑎ ᔑ ᗰ", BlueZones::TOP),
115 ("ᗶ ᖵ ᒧ ᐃ ᑌ ᒍ ᔑ ᗢ", BlueZones::NONE),
116 ("ᓓ ᓕ ᓀ ᓂ ᓄ ᕄ ᕆ ᘣ", BlueZones::TOP.union(BlueZones::X_HEIGHT)),
117 ("ᕃ ᓂ ᓀ ᕂ ᓗ ᓚ ᕆ ᘣ", BlueZones::NONE),
118 ("ᐪ ᙆ ᣘ ᐢ ᒾ ᣗ ᔆ", BlueZones::TOP),
119 ("ᙆ ᗮ ᒻ ᐞ ᔆ ᒡ ᒢ ᓑ", BlueZones::NONE),
120 ],
121 },
122 ScriptClass {
123 name: "Carian",
124 group: ScriptGroup::Default,
125 tag: Tag::new(b"Cari"),
126 hint_top_to_bottom: false,
127 std_chars: "𐊫 𐋉",
128 blues: &[
129 ("𐊧 𐊫 𐊬 𐊭 𐊱 𐊺 𐊼 𐊿", BlueZones::TOP),
130 ("𐊣 𐊧 𐊷 𐋀 𐊫 𐊸 𐋉", BlueZones::NONE),
131 ],
132 },
133 ScriptClass {
134 name: "Cherokee",
135 group: ScriptGroup::Default,
136 tag: Tag::new(b"Cher"),
137 hint_top_to_bottom: false,
138 std_chars: "Ꭴ Ꮕ ꮕ",
139 blues: &[
140 ("Ꮖ Ꮋ Ꭼ Ꮓ Ꭴ Ꮳ Ꭶ Ꮥ", BlueZones::TOP),
141 ("Ꮖ Ꮋ Ꭼ Ꮓ Ꭴ Ꮳ Ꭶ Ꮥ", BlueZones::NONE),
142 ("ꮒ ꮤ ꮶ ꭴ ꭾ ꮗ ꮝ ꮿ", BlueZones::TOP),
143 ("ꮖ ꭼ ꮓ ꮠ ꮳ ꭶ ꮥ ꮻ", BlueZones::TOP.union(BlueZones::X_HEIGHT)),
144 ("ꮖ ꭼ ꮓ ꮠ ꮳ ꭶ ꮥ ꮻ", BlueZones::NONE),
145 ("ᏸ ꮐ ꭹ ꭻ", BlueZones::NONE),
146 ],
147 },
148 ScriptClass {
149 name: "Coptic",
150 group: ScriptGroup::Default,
151 tag: Tag::new(b"Copt"),
152 hint_top_to_bottom: false,
153 std_chars: "Ⲟ ⲟ",
154 blues: &[
155 ("Ⲍ Ⲏ Ⲡ Ⳟ Ⲟ Ⲑ Ⲥ Ⳋ", BlueZones::TOP),
156 ("Ⳑ Ⳙ Ⳟ Ⲏ Ⲟ Ⲑ Ⳝ Ⲱ", BlueZones::NONE),
157 ("ⲍ ⲏ ⲡ ⳟ ⲟ ⲑ ⲥ ⳋ", BlueZones::TOP.union(BlueZones::X_HEIGHT)),
158 ("ⳑ ⳙ ⳟ ⲏ ⲟ ⲑ ⳝ Ⳓ", BlueZones::NONE),
159 ],
160 },
161 ScriptClass {
162 name: "Cypriot",
163 group: ScriptGroup::Default,
164 tag: Tag::new(b"Cprt"),
165 hint_top_to_bottom: false,
166 std_chars: "𐠅 𐠣",
167 blues: &[
168 ("𐠍 𐠙 𐠳 𐠱 𐠅 𐠓 𐠣 𐠦", BlueZones::TOP),
169 ("𐠃 𐠊 𐠛 𐠣 𐠳 𐠵 𐠐", BlueZones::NONE),
170 ("𐠈 𐠏 𐠖", BlueZones::TOP),
171 ("𐠈 𐠏 𐠖", BlueZones::NONE),
172 ],
173 },
174 ScriptClass {
175 name: "Cyrillic",
176 group: ScriptGroup::Default,
177 tag: Tag::new(b"Cyrl"),
178 hint_top_to_bottom: false,
179 std_chars: "о О",
180 blues: &[
181 ("Б В Е П З О С Э", BlueZones::TOP),
182 ("Б В Е Ш З О С Э", BlueZones::NONE),
183 ("х п н ш е з о с", BlueZones::TOP.union(BlueZones::X_HEIGHT)),
184 ("х п н ш е з о с", BlueZones::NONE),
185 ("р у ф", BlueZones::NONE),
186 ],
187 },
188 ScriptClass {
189 name: "Devanagari",
190 group: ScriptGroup::Default,
191 tag: Tag::new(b"Deva"),
192 hint_top_to_bottom: true,
193 std_chars: "ठ व ट",
194 blues: &[
195 ("ई ऐ ओ औ ि ी ो ौ", BlueZones::TOP),
196 ("क म अ आ थ ध भ श", BlueZones::TOP),
197 ("क न म उ छ ट ठ ड", BlueZones::TOP.union(BlueZones::NEUTRAL).union(BlueZones::X_HEIGHT)),
198 ("क न म उ छ ट ठ ड", BlueZones::NONE),
199 ("ु ृ", BlueZones::NONE),
200 ],
201 },
202 ScriptClass {
203 name: "Deseret",
204 group: ScriptGroup::Default,
205 tag: Tag::new(b"Dsrt"),
206 hint_top_to_bottom: false,
207 std_chars: "𐐄 𐐬",
208 blues: &[
209 ("𐐂 𐐄 𐐋 𐐗 𐐑", BlueZones::TOP),
210 ("𐐀 𐐂 𐐄 𐐗 𐐛", BlueZones::NONE),
211 ("𐐪 𐐬 𐐳 𐐿 𐐹", BlueZones::TOP.union(BlueZones::X_HEIGHT)),
212 ("𐐨 𐐪 𐐬 𐐿 𐑃", BlueZones::NONE),
213 ],
214 },
215 ScriptClass {
216 name: "Ethiopic",
217 group: ScriptGroup::Default,
218 tag: Tag::new(b"Ethi"),
219 hint_top_to_bottom: false,
220 std_chars: "ዐ",
221 blues: &[
222 ("ሀ ሃ ዘ ፐ ማ በ ዋ ዐ", BlueZones::TOP),
223 ("ለ ሐ በ ዘ ሀ ሪ ዐ ጨ", BlueZones::NONE),
224 ],
225 },
226 ScriptClass {
227 name: "Georgian (Mkhedruli)",
228 group: ScriptGroup::Default,
229 tag: Tag::new(b"Geor"),
230 hint_top_to_bottom: false,
231 std_chars: "ი ე ა Ჿ",
232 blues: &[
233 ("გ დ ე ვ თ ი ო ღ", BlueZones::TOP.union(BlueZones::X_HEIGHT)),
234 ("ა ზ მ ს შ ძ ხ პ", BlueZones::NONE),
235 ("ს ხ ქ ზ მ შ ჩ წ", BlueZones::TOP),
236 ("ე ვ ჟ ტ უ ფ ქ ყ", BlueZones::NONE),
237 ("Ნ Ჟ Ჳ Ჸ Გ Ე Ო Ჴ", BlueZones::TOP),
238 ("Ი Ჲ Ო Ჩ Მ Შ Ჯ Ჽ", BlueZones::NONE),
239 ],
240 },
241 ScriptClass {
242 name: "Georgian (Khutsuri)",
243 group: ScriptGroup::Default,
244 tag: Tag::new(b"Geok"),
245 hint_top_to_bottom: false,
246 std_chars: "Ⴖ Ⴑ ⴙ",
247 blues: &[
248 ("Ⴑ Ⴇ Ⴙ Ⴜ Ⴄ Ⴅ Ⴓ Ⴚ", BlueZones::TOP),
249 ("Ⴄ Ⴅ Ⴇ Ⴈ Ⴆ Ⴑ Ⴊ Ⴋ", BlueZones::NONE),
250 ("ⴁ ⴗ ⴂ ⴄ ⴅ ⴇ ⴔ ⴖ", BlueZones::TOP.union(BlueZones::X_HEIGHT)),
251 ("ⴈ ⴌ ⴖ ⴎ ⴃ ⴆ ⴋ ⴢ", BlueZones::NONE),
252 ("ⴐ ⴑ ⴓ ⴕ ⴙ ⴛ ⴡ ⴣ", BlueZones::TOP),
253 ("ⴄ ⴅ ⴔ ⴕ ⴁ ⴂ ⴘ ⴝ", BlueZones::NONE),
254 ],
255 },
256 ScriptClass {
257 name: "Glagolitic",
258 group: ScriptGroup::Default,
259 tag: Tag::new(b"Glag"),
260 hint_top_to_bottom: false,
261 std_chars: "Ⱅ ⱅ",
262 blues: &[
263 ("Ⰵ Ⱄ Ⱚ Ⰴ Ⰲ Ⰺ Ⱛ Ⰻ", BlueZones::TOP),
264 ("Ⰵ Ⰴ Ⰲ Ⱚ Ⱎ Ⱑ Ⰺ Ⱄ", BlueZones::NONE),
265 ("ⰵ ⱄ ⱚ ⰴ ⰲ ⰺ ⱛ ⰻ", BlueZones::TOP.union(BlueZones::X_HEIGHT)),
266 ("ⰵ ⰴ ⰲ ⱚ ⱎ ⱑ ⰺ ⱄ", BlueZones::NONE),
267 ],
268 },
269 ScriptClass {
270 name: "Gothic",
271 group: ScriptGroup::Default,
272 tag: Tag::new(b"Goth"),
273 hint_top_to_bottom: true,
274 std_chars: "𐌴 𐌾 𐍃",
275 blues: &[
276 ("𐌲 𐌶 𐍀 𐍄 𐌴 𐍃 𐍈 𐌾", BlueZones::TOP),
277 ("𐌶 𐌴 𐍃 𐍈", BlueZones::NONE),
278 ],
279 },
280 ScriptClass {
281 name: "Greek",
282 group: ScriptGroup::Default,
283 tag: Tag::new(b"Grek"),
284 hint_top_to_bottom: false,
285 std_chars: "ο Ο",
286 blues: &[
287 ("Γ Β Ε Ζ Θ Ο Ω", BlueZones::TOP),
288 ("Β Δ Ζ Ξ Θ Ο", BlueZones::NONE),
289 ("β θ δ ζ λ ξ", BlueZones::TOP),
290 ("α ε ι ο π σ τ ω", BlueZones::TOP.union(BlueZones::X_HEIGHT)),
291 ("α ε ι ο π σ τ ω", BlueZones::NONE),
292 ("β γ η μ ρ φ χ ψ", BlueZones::NONE),
293 ],
294 },
295 ScriptClass {
296 name: "Gujarati",
297 group: ScriptGroup::Default,
298 tag: Tag::new(b"Gujr"),
299 hint_top_to_bottom: false,
300 std_chars: "ટ ૦",
301 blues: &[
302 ("ત ન ઋ ઌ છ ટ ર ૦", BlueZones::TOP.union(BlueZones::X_HEIGHT)),
303 ("ખ ગ ઘ ઞ ઇ ઈ ઠ જ", BlueZones::NONE),
304 ("ઈ ઊ િ ી લી શ્ચિ જિ સી", BlueZones::TOP),
305 ("ુ ૃ ૄ ખુ છૃ છૄ", BlueZones::NONE),
306 ("૦ ૧ ૨ ૩ ૭", BlueZones::TOP),
307 ],
308 },
309 ScriptClass {
310 name: "Gurmukhi",
311 group: ScriptGroup::Default,
312 tag: Tag::new(b"Guru"),
313 hint_top_to_bottom: true,
314 std_chars: "ਠ ਰ ੦",
315 blues: &[
316 ("ਇ ਈ ਉ ਏ ਓ ੳ ਿ ੀ", BlueZones::TOP),
317 ("ਕ ਗ ਙ ਚ ਜ ਤ ਧ ਸ", BlueZones::TOP),
318 ("ਕ ਗ ਙ ਚ ਜ ਤ ਧ ਸ", BlueZones::TOP.union(BlueZones::NEUTRAL).union(BlueZones::X_HEIGHT)),
319 ("ਅ ਏ ਓ ਗ ਜ ਠ ਰ ਸ", BlueZones::NONE),
320 ("੦ ੧ ੨ ੩ ੭", BlueZones::TOP),
321 ],
322 },
323 ScriptClass {
324 name: "Hebrew",
325 group: ScriptGroup::Default,
326 tag: Tag::new(b"Hebr"),
327 hint_top_to_bottom: false,
328 std_chars: "ם",
329 blues: &[
330 ("ב ד ה ח ך כ ם ס", BlueZones::TOP.union(BlueZones::LONG)),
331 ("ב ט כ ם ס צ", BlueZones::NONE),
332 ("ק ך ן ף ץ", BlueZones::NONE),
333 ],
334 },
335 ScriptClass {
336 name: "Kayah Li",
337 group: ScriptGroup::Default,
338 tag: Tag::new(b"Kali"),
339 hint_top_to_bottom: false,
340 std_chars: "ꤍ ꤀",
341 blues: &[
342 ("꤅ ꤏ ꤁ ꤋ ꤀ ꤍ", BlueZones::TOP.union(BlueZones::X_HEIGHT)),
343 ("꤈ ꤘ ꤀ ꤍ ꤢ", BlueZones::NONE),
344 ("ꤖ ꤡ", BlueZones::TOP),
345 ("ꤑ ꤜ ꤞ", BlueZones::NONE),
346 ("ꤑ꤬ ꤜ꤭ ꤔ꤬", BlueZones::NONE),
347 ],
348 },
349 ScriptClass {
350 name: "Khmer",
351 group: ScriptGroup::Default,
352 tag: Tag::new(b"Khmr"),
353 hint_top_to_bottom: false,
354 std_chars: "០",
355 blues: &[
356 ("ខ ទ ន ឧ ឩ ា", BlueZones::TOP.union(BlueZones::X_HEIGHT)),
357 ("ក្ក ក្ខ ក្គ ក្ថ", BlueZones::SUB_TOP),
358 ("ខ ឃ ច ឋ ប ម យ ឲ", BlueZones::NONE),
359 ("ត្រ រៀ ឲ្យ អឿ", BlueZones::NONE),
360 ("ន្ត្រៃ ង្ខ្យ ក្បៀ ច្រៀ ន្តឿ ល្បឿ", BlueZones::NONE),
361 ],
362 },
363 ScriptClass {
364 name: "Khmer Symbols",
365 group: ScriptGroup::Default,
366 tag: Tag::new(b"Khms"),
367 hint_top_to_bottom: false,
368 std_chars: "᧡ ᧪",
369 blues: &[
370 ("᧠ ᧡", BlueZones::TOP.union(BlueZones::X_HEIGHT)),
371 ("᧶ ᧹", BlueZones::NONE),
372 ],
373 },
374 ScriptClass {
375 name: "Kannada",
376 group: ScriptGroup::Default,
377 tag: Tag::new(b"Knda"),
378 hint_top_to_bottom: false,
379 std_chars: "೦ ಬ",
380 blues: &[
381 ("ಇ ಊ ಐ ಣ ಸಾ ನಾ ದಾ ರಾ", BlueZones::TOP),
382 ("ಅ ಉ ಎ ಲ ೦ ೨ ೬ ೭", BlueZones::NONE),
383 ],
384 },
385 ScriptClass {
386 name: "Lao",
387 group: ScriptGroup::Default,
388 tag: Tag::new(b"Laoo"),
389 hint_top_to_bottom: false,
390 std_chars: "໐",
391 blues: &[
392 ("າ ດ ອ ມ ລ ວ ຣ ງ", BlueZones::TOP.union(BlueZones::X_HEIGHT)),
393 ("າ ອ ບ ຍ ຣ ຮ ວ ຢ", BlueZones::NONE),
394 ("ປ ຢ ຟ ຝ", BlueZones::TOP),
395 ("ໂ ໄ ໃ", BlueZones::TOP),
396 ("ງ ຊ ຖ ຽ ໆ ຯ", BlueZones::NONE),
397 ],
398 },
399 ScriptClass {
400 name: "Latin",
401 group: ScriptGroup::Default,
402 tag: Tag::new(b"Latn"),
403 hint_top_to_bottom: false,
404 std_chars: "o O 0",
405 blues: &[
406 ("T H E Z O C Q S", BlueZones::TOP),
407 ("H E Z L O C U S", BlueZones::NONE),
408 ("f i j k d b h", BlueZones::TOP),
409 ("u v x z o e s c", BlueZones::TOP.union(BlueZones::X_HEIGHT)),
410 ("n r x z o e s c", BlueZones::NONE),
411 ("p q g j y", BlueZones::NONE),
412 ],
413 },
414 ScriptClass {
415 name: "Latin Subscript Fallback",
416 group: ScriptGroup::Default,
417 tag: Tag::new(b"Latb"),
418 hint_top_to_bottom: false,
419 std_chars: "ₒ ₀",
420 blues: &[
421 ("₀ ₃ ₅ ₇ ₈", BlueZones::TOP),
422 ("₀ ₁ ₂ ₃ ₈", BlueZones::NONE),
423 ("ᵢ ⱼ ₕ ₖ ₗ", BlueZones::TOP),
424 ("ₐ ₑ ₒ ₓ ₙ ₛ ᵥ ᵤ ᵣ", BlueZones::TOP.union(BlueZones::X_HEIGHT)),
425 ("ₐ ₑ ₒ ₓ ₙ ₛ ᵥ ᵤ ᵣ", BlueZones::NONE),
426 ("ᵦ ᵧ ᵨ ᵩ ₚ", BlueZones::NONE),
427 ],
428 },
429 ScriptClass {
430 name: "Latin Superscript Fallback",
431 group: ScriptGroup::Default,
432 tag: Tag::new(b"Latp"),
433 hint_top_to_bottom: false,
434 std_chars: "ᵒ ᴼ ⁰",
435 blues: &[
436 ("⁰ ³ ⁵ ⁷ ᵀ ᴴ ᴱ ᴼ", BlueZones::TOP),
437 ("⁰ ¹ ² ³ ᴱ ᴸ ᴼ ᵁ", BlueZones::NONE),
438 ("ᵇ ᵈ ᵏ ʰ ʲ ᶠ ⁱ", BlueZones::TOP),
439 ("ᵉ ᵒ ʳ ˢ ˣ ᶜ ᶻ", BlueZones::TOP.union(BlueZones::X_HEIGHT)),
440 ("ᵉ ᵒ ʳ ˢ ˣ ᶜ ᶻ", BlueZones::NONE),
441 ("ᵖ ʸ ᵍ", BlueZones::NONE),
442 ],
443 },
444 ScriptClass {
445 name: "Lisu",
446 group: ScriptGroup::Default,
447 tag: Tag::new(b"Lisu"),
448 hint_top_to_bottom: false,
449 std_chars: "ꓳ",
450 blues: &[
451 ("ꓡ ꓧ ꓱ ꓶ ꓩ ꓚ ꓵ ꓳ", BlueZones::TOP),
452 ("ꓕ ꓜ ꓞ ꓡ ꓛ ꓢ ꓳ ꓴ", BlueZones::NONE),
453 ],
454 },
455 ScriptClass {
456 name: "Malayalam",
457 group: ScriptGroup::Default,
458 tag: Tag::new(b"Mlym"),
459 hint_top_to_bottom: false,
460 std_chars: "ഠ റ",
461 blues: &[
462 ("ഒ ട ഠ റ ച പ ച്ച പ്പ", BlueZones::TOP),
463 ("ട ഠ ധ ശ ഘ ച ഥ ല", BlueZones::NONE),
464 ],
465 },
466 ScriptClass {
467 name: "Medefaidrin",
468 group: ScriptGroup::Default,
469 tag: Tag::new(b"Medf"),
470 hint_top_to_bottom: false,
471 std_chars: "𖹡 𖹛 𖹯",
472 blues: &[
473 ("𖹀 𖹁 𖹂 𖹃 𖹏 𖹚 𖹟", BlueZones::TOP),
474 ("𖹀 𖹁 𖹂 𖹃 𖹏 𖹚 𖹒 𖹓", BlueZones::NONE),
475 ("𖹤 𖹬 𖹧 𖹴 𖹶 𖹾", BlueZones::TOP),
476 ("𖹠 𖹡 𖹢 𖹹 𖹳 𖹮", BlueZones::TOP.union(BlueZones::X_HEIGHT)),
477 ("𖹠 𖹡 𖹢 𖹳 𖹭 𖹽", BlueZones::NONE),
478 ("𖹥 𖹨 𖹩", BlueZones::NONE),
479 ("𖺀 𖺅 𖺈 𖺄 𖺍", BlueZones::TOP),
480 ],
481 },
482 ScriptClass {
483 name: "Mongolian",
484 group: ScriptGroup::Default,
485 tag: Tag::new(b"Mong"),
486 hint_top_to_bottom: true,
487 std_chars: "ᡂ ᠪ",
488 blues: &[
489 ("ᠳ ᠴ ᠶ ᠽ ᡂ ᡊ \u{200d}ᡡ\u{200d} \u{200d}ᡳ\u{200d}", BlueZones::TOP),
490 ("ᡃ", BlueZones::NONE),
491 ],
492 },
493 ScriptClass {
494 name: "Myanmar",
495 group: ScriptGroup::Default,
496 tag: Tag::new(b"Mymr"),
497 hint_top_to_bottom: false,
498 std_chars: "ဝ င ဂ",
499 blues: &[
500 ("ခ ဂ င ဒ ဝ ၥ ၊ ။", BlueZones::TOP.union(BlueZones::X_HEIGHT)),
501 ("င ဎ ဒ ပ ဗ ဝ ၊ ။", BlueZones::NONE),
502 ("ဩ ြ ၍ ၏ ၆ ါ ိ", BlueZones::TOP),
503 ("ဉ ည ဥ ဩ ဨ ၂ ၅ ၉", BlueZones::NONE),
504 ],
505 },
506 ScriptClass {
507 name: "N'Ko",
508 group: ScriptGroup::Default,
509 tag: Tag::new(b"Nkoo"),
510 hint_top_to_bottom: false,
511 std_chars: "ߋ ߀",
512 blues: &[
513 ("ߐ ߉ ߒ ߟ ߖ ߜ ߠ ߥ", BlueZones::TOP),
514 ("߀ ߘ ߡ ߠ ߥ", BlueZones::NONE),
515 ("ߏ ߛ ߋ", BlueZones::TOP.union(BlueZones::X_HEIGHT)),
516 ("ߎ ߏ ߛ ߋ", BlueZones::NONE),
517 ],
518 },
519 ScriptClass {
520 name: "no script",
521 group: ScriptGroup::Default,
522 tag: Tag::new(b"None"),
523 hint_top_to_bottom: false,
524 std_chars: "",
525 blues: &[],
526 },
527 ScriptClass {
528 name: "Ol Chiki",
529 group: ScriptGroup::Default,
530 tag: Tag::new(b"Olck"),
531 hint_top_to_bottom: false,
532 std_chars: "ᱛ",
533 blues: &[
534 ("ᱛ ᱜ ᱝ ᱡ ᱢ ᱥ", BlueZones::TOP),
535 ("ᱛ ᱜ ᱝ ᱡ ᱢ ᱥ", BlueZones::NONE),
536 ],
537 },
538 ScriptClass {
539 name: "Old Turkic",
540 group: ScriptGroup::Default,
541 tag: Tag::new(b"Orkh"),
542 hint_top_to_bottom: false,
543 std_chars: "𐰗",
544 blues: &[
545 ("𐰗 𐰘 𐰧", BlueZones::TOP),
546 ("𐰉 𐰗 𐰦 𐰧", BlueZones::NONE),
547 ],
548 },
549 ScriptClass {
550 name: "Osage",
551 group: ScriptGroup::Default,
552 tag: Tag::new(b"Osge"),
553 hint_top_to_bottom: false,
554 std_chars: "𐓂 𐓪",
555 blues: &[
556 ("𐒾 𐓍 𐓒 𐓓 𐒻 𐓂 𐒵 𐓆", BlueZones::TOP),
557 ("𐒰 𐓍 𐓂 𐒿 𐓎 𐒹", BlueZones::NONE),
558 ("𐒼 𐒽 𐒾", BlueZones::NONE),
559 ("𐓵 𐓶 𐓺 𐓻 𐓝 𐓣 𐓪 𐓮", BlueZones::TOP.union(BlueZones::X_HEIGHT)),
560 ("𐓘 𐓚 𐓣 𐓵 𐓡 𐓧 𐓪 𐓶", BlueZones::NONE),
561 ("𐓤 𐓦 𐓸 𐓹 𐓛", BlueZones::TOP),
562 ("𐓤 𐓥 𐓦", BlueZones::NONE),
563 ],
564 },
565 ScriptClass {
566 name: "Osmanya",
567 group: ScriptGroup::Default,
568 tag: Tag::new(b"Osma"),
569 hint_top_to_bottom: false,
570 std_chars: "𐒆 𐒠",
571 blues: &[
572 ("𐒆 𐒉 𐒐 𐒒 𐒘 𐒛 𐒠 𐒣", BlueZones::TOP),
573 ("𐒀 𐒂 𐒆 𐒈 𐒊 𐒒 𐒠 𐒩", BlueZones::NONE),
574 ],
575 },
576 ScriptClass {
577 name: "Hanifi Rohingya",
578 group: ScriptGroup::Default,
579 tag: Tag::new(b"Rohg"),
580 hint_top_to_bottom: false,
581 std_chars: "𐴰",
582 blues: &[
583 ("𐴃 𐴀 𐴆 𐴖 𐴕", BlueZones::TOP),
584 ("𐴔 𐴖 𐴕 𐴑 𐴐", BlueZones::NONE),
585 ("ـ", BlueZones::NEUTRAL),
586 ],
587 },
588 ScriptClass {
589 name: "Saurashtra",
590 group: ScriptGroup::Default,
591 tag: Tag::new(b"Saur"),
592 hint_top_to_bottom: false,
593 std_chars: "ꢝ ꣐",
594 blues: &[
595 ("ꢜ ꢞ ꢳ ꢂ ꢖ ꢒ ꢝ ꢛ", BlueZones::TOP),
596 ("ꢂ ꢨ ꢺ ꢤ ꢎ", BlueZones::NONE),
597 ],
598 },
599 ScriptClass {
600 name: "Shavian",
601 group: ScriptGroup::Default,
602 tag: Tag::new(b"Shaw"),
603 hint_top_to_bottom: false,
604 std_chars: "𐑴",
605 blues: &[
606 ("𐑕 𐑙", BlueZones::TOP),
607 ("𐑔 𐑖 𐑗 𐑹 𐑻", BlueZones::NONE),
608 ("𐑟 𐑣", BlueZones::NONE),
609 ("𐑱 𐑲 𐑳 𐑴 𐑸 𐑺 𐑼", BlueZones::TOP.union(BlueZones::X_HEIGHT)),
610 ("𐑴 𐑻 𐑹", BlueZones::NONE),
611 ],
612 },
613 ScriptClass {
614 name: "Sinhala",
615 group: ScriptGroup::Default,
616 tag: Tag::new(b"Sinh"),
617 hint_top_to_bottom: false,
618 std_chars: "ට",
619 blues: &[
620 ("ඉ ක ඝ ඳ ප ය ල ෆ", BlueZones::TOP),
621 ("එ ඔ ඝ ජ ට ථ ධ ර", BlueZones::NONE),
622 ("ද ඳ උ ල තූ තු බු දු", BlueZones::NONE),
623 ],
624 },
625 ScriptClass {
626 name: "Sundanese",
627 group: ScriptGroup::Default,
628 tag: Tag::new(b"Sund"),
629 hint_top_to_bottom: false,
630 std_chars: "᮰",
631 blues: &[
632 ("ᮋ ᮞ ᮮ ᮽ ᮰ ᮈ", BlueZones::TOP),
633 ("ᮄ ᮔ ᮕ ᮗ ᮰ ᮆ ᮈ ᮉ", BlueZones::NONE),
634 ("ᮼ ᳄", BlueZones::NONE),
635 ],
636 },
637 ScriptClass {
638 name: "Tamil",
639 group: ScriptGroup::Default,
640 tag: Tag::new(b"Taml"),
641 hint_top_to_bottom: false,
642 std_chars: "௦",
643 blues: &[
644 ("உ ஒ ஓ ற ஈ க ங ச", BlueZones::TOP),
645 ("க ச ல ஶ உ ங ட ப", BlueZones::NONE),
646 ],
647 },
648 ScriptClass {
649 name: "Tai Viet",
650 group: ScriptGroup::Default,
651 tag: Tag::new(b"Tavt"),
652 hint_top_to_bottom: false,
653 std_chars: "ꪒ ꪫ",
654 blues: &[
655 ("ꪆ ꪔ ꪒ ꪖ ꪫ", BlueZones::TOP),
656 ("ꪉ ꪫ ꪮ", BlueZones::NONE),
657 ],
658 },
659 ScriptClass {
660 name: "Telugu",
661 group: ScriptGroup::Default,
662 tag: Tag::new(b"Telu"),
663 hint_top_to_bottom: false,
664 std_chars: "౦ ౧",
665 blues: &[
666 ("ఇ ఌ ఙ ఞ ణ ఱ ౯", BlueZones::TOP),
667 ("అ క చ ర ఽ ౨ ౬", BlueZones::NONE),
668 ],
669 },
670 ScriptClass {
671 name: "Tifinagh",
672 group: ScriptGroup::Default,
673 tag: Tag::new(b"Tfng"),
674 hint_top_to_bottom: false,
675 std_chars: "ⵔ",
676 blues: &[
677 ("ⵔ ⵙ ⵛ ⵞ ⴵ ⴼ ⴹ ⵎ", BlueZones::TOP),
678 ("ⵔ ⵙ ⵛ ⵞ ⴵ ⴼ ⴹ ⵎ", BlueZones::NONE),
679 ],
680 },
681 ScriptClass {
682 name: "Thai",
683 group: ScriptGroup::Default,
684 tag: Tag::new(b"Thai"),
685 hint_top_to_bottom: false,
686 std_chars: "า ๅ ๐",
687 blues: &[
688 ("บ เ แ อ ก า", BlueZones::TOP.union(BlueZones::X_HEIGHT)),
689 ("บ ป ษ ฯ อ ย ฮ", BlueZones::NONE),
690 ("ป ฝ ฟ", BlueZones::TOP),
691 ("โ ใ ไ", BlueZones::TOP),
692 ("ฎ ฏ ฤ ฦ", BlueZones::NONE),
693 ("ญ ฐ", BlueZones::NONE),
694 ("๐ ๑ ๓", BlueZones::NONE),
695 ],
696 },
697 ScriptClass {
698 name: "Vai",
699 group: ScriptGroup::Default,
700 tag: Tag::new(b"Vaii"),
701 hint_top_to_bottom: false,
702 std_chars: "ꘓ ꖜ ꖴ",
703 blues: &[
704 ("ꗍ ꘖ ꘙ ꘜ ꖜ ꖝ ꔅ ꕢ", BlueZones::TOP),
705 ("ꗍ ꘖ ꘙ ꗞ ꔅ ꕢ ꖜ ꔆ", BlueZones::NONE),
706 ],
707 },
708 ScriptClass {
709 name: "Limbu",
710 group: ScriptGroup::Indic,
711 tag: Tag::new(b"Limb"),
712 hint_top_to_bottom: false,
713 std_chars: "o",
714 blues: &[],
715 },
716 ScriptClass {
717 name: "Oriya",
718 group: ScriptGroup::Indic,
719 tag: Tag::new(b"Orya"),
720 hint_top_to_bottom: false,
721 std_chars: "o",
722 blues: &[],
723 },
724 ScriptClass {
725 name: "Syloti Nagri",
726 group: ScriptGroup::Indic,
727 tag: Tag::new(b"Sylo"),
728 hint_top_to_bottom: false,
729 std_chars: "o",
730 blues: &[],
731 },
732 ScriptClass {
733 name: "Tibetan",
734 group: ScriptGroup::Indic,
735 tag: Tag::new(b"Tibt"),
736 hint_top_to_bottom: false,
737 std_chars: "o",
738 blues: &[],
739 },
740 ScriptClass {
741 name: "CJKV ideographs",
742 group: ScriptGroup::Cjk,
743 tag: Tag::new(b"Hani"),
744 hint_top_to_bottom: false,
745 std_chars: "田 囗",
746 blues: &[
747 ("他 们 你 來 們 到 和 地 对 對 就 席 我 时 時 會 来 為 能 舰 說 说 这 這 齊 | 军 同 已 愿 既 星 是 景 民 照 现 現 理 用 置 要 軍 那 配 里 開 雷 露 面 顾", BlueZones::TOP),
748 ("个 为 人 他 以 们 你 來 個 們 到 和 大 对 對 就 我 时 時 有 来 為 要 說 说 | 主 些 因 它 想 意 理 生 當 看 着 置 者 自 著 裡 过 还 进 進 過 道 還 里 面", BlueZones::NONE),
749 (" 些 们 你 來 們 到 和 地 她 将 將 就 年 得 情 最 样 樣 理 能 說 说 这 這 通 | 即 吗 吧 听 呢 品 响 嗎 师 師 收 断 斷 明 眼 間 间 际 陈 限 除 陳 随 際 隨", BlueZones::HORIZONTAL),
750 ("事 前 學 将 將 情 想 或 政 斯 新 样 樣 民 沒 没 然 特 现 現 球 第 經 谁 起 | 例 別 别 制 动 動 吗 嗎 增 指 明 朝 期 构 物 确 种 調 调 費 费 那 都 間 间", BlueZones::HORIZONTAL.union(BlueZones::RIGHT)),
751 ],
752 },
753];
754
755#[allow(unused)]impl ScriptClass {
756 pub const ADLM: usize = 0;
757 pub const ARAB: usize = 1;
758 pub const ARMN: usize = 2;
759 pub const AVST: usize = 3;
760 pub const BAMU: usize = 4;
761 pub const BENG: usize = 5;
762 pub const BUHD: usize = 6;
763 pub const CAKM: usize = 7;
764 pub const CANS: usize = 8;
765 pub const CARI: usize = 9;
766 pub const CHER: usize = 10;
767 pub const COPT: usize = 11;
768 pub const CPRT: usize = 12;
769 pub const CYRL: usize = 13;
770 pub const DEVA: usize = 14;
771 pub const DSRT: usize = 15;
772 pub const ETHI: usize = 16;
773 pub const GEOR: usize = 17;
774 pub const GEOK: usize = 18;
775 pub const GLAG: usize = 19;
776 pub const GOTH: usize = 20;
777 pub const GREK: usize = 21;
778 pub const GUJR: usize = 22;
779 pub const GURU: usize = 23;
780 pub const HEBR: usize = 24;
781 pub const KALI: usize = 25;
782 pub const KHMR: usize = 26;
783 pub const KHMS: usize = 27;
784 pub const KNDA: usize = 28;
785 pub const LAOO: usize = 29;
786 pub const LATN: usize = 30;
787 pub const LATB: usize = 31;
788 pub const LATP: usize = 32;
789 pub const LISU: usize = 33;
790 pub const MLYM: usize = 34;
791 pub const MEDF: usize = 35;
792 pub const MONG: usize = 36;
793 pub const MYMR: usize = 37;
794 pub const NKOO: usize = 38;
795 pub const NONE: usize = 39;
796 pub const OLCK: usize = 40;
797 pub const ORKH: usize = 41;
798 pub const OSGE: usize = 42;
799 pub const OSMA: usize = 43;
800 pub const ROHG: usize = 44;
801 pub const SAUR: usize = 45;
802 pub const SHAW: usize = 46;
803 pub const SINH: usize = 47;
804 pub const SUND: usize = 48;
805 pub const TAML: usize = 49;
806 pub const TAVT: usize = 50;
807 pub const TELU: usize = 51;
808 pub const TFNG: usize = 52;
809 pub const THAI: usize = 53;
810 pub const VAII: usize = 54;
811 pub const LIMB: usize = 55;
812 pub const ORYA: usize = 56;
813 pub const SYLO: usize = 57;
814 pub const TIBT: usize = 58;
815 pub const HANI: usize = 59;
816}
817
818#[rustfmt::skip]
819pub(super) const STYLE_CLASSES: &[StyleClass] = &[
820 StyleClass { name: "Adlam", index: 0, script: &SCRIPT_CLASSES[0], feature: None },
821 StyleClass { name: "Arabic", index: 1, script: &SCRIPT_CLASSES[1], feature: None },
822 StyleClass { name: "Armenian", index: 2, script: &SCRIPT_CLASSES[2], feature: None },
823 StyleClass { name: "Avestan", index: 3, script: &SCRIPT_CLASSES[3], feature: None },
824 StyleClass { name: "Bamum", index: 4, script: &SCRIPT_CLASSES[4], feature: None },
825 StyleClass { name: "Bengali", index: 5, script: &SCRIPT_CLASSES[5], feature: None },
826 StyleClass { name: "Buhid", index: 6, script: &SCRIPT_CLASSES[6], feature: None },
827 StyleClass { name: "Chakma", index: 7, script: &SCRIPT_CLASSES[7], feature: None },
828 StyleClass { name: "Canadian Syllabics", index: 8, script: &SCRIPT_CLASSES[8], feature: None },
829 StyleClass { name: "Carian", index: 9, script: &SCRIPT_CLASSES[9], feature: None },
830 StyleClass { name: "Cherokee", index: 10, script: &SCRIPT_CLASSES[10], feature: None },
831 StyleClass { name: "Coptic", index: 11, script: &SCRIPT_CLASSES[11], feature: None },
832 StyleClass { name: "Cypriot", index: 12, script: &SCRIPT_CLASSES[12], feature: None },
833 StyleClass { name: "Cyrillic petite capitals from capitals", index: 13, script: &SCRIPT_CLASSES[13], feature: Some(Tag::new(b"c2cp")) },
834 StyleClass { name: "Cyrillic small capitals from capitals", index: 14, script: &SCRIPT_CLASSES[13], feature: Some(Tag::new(b"c2sc")) },
835 StyleClass { name: "Cyrillic ordinals", index: 15, script: &SCRIPT_CLASSES[13], feature: Some(Tag::new(b"ordn")) },
836 StyleClass { name: "Cyrillic petite capitals", index: 16, script: &SCRIPT_CLASSES[13], feature: Some(Tag::new(b"pcap")) },
837 StyleClass { name: "Cyrillic ruby", index: 17, script: &SCRIPT_CLASSES[13], feature: Some(Tag::new(b"ruby")) },
838 StyleClass { name: "Cyrillic scientific inferiors", index: 18, script: &SCRIPT_CLASSES[13], feature: Some(Tag::new(b"sinf")) },
839 StyleClass { name: "Cyrillic small capitals", index: 19, script: &SCRIPT_CLASSES[13], feature: Some(Tag::new(b"smcp")) },
840 StyleClass { name: "Cyrillic subscript", index: 20, script: &SCRIPT_CLASSES[13], feature: Some(Tag::new(b"subs")) },
841 StyleClass { name: "Cyrillic superscript", index: 21, script: &SCRIPT_CLASSES[13], feature: Some(Tag::new(b"sups")) },
842 StyleClass { name: "Cyrillic titling", index: 22, script: &SCRIPT_CLASSES[13], feature: Some(Tag::new(b"titl")) },
843 StyleClass { name: "Cyrillic", index: 23, script: &SCRIPT_CLASSES[13], feature: None },
844 StyleClass { name: "Devanagari", index: 24, script: &SCRIPT_CLASSES[14], feature: None },
845 StyleClass { name: "Deseret", index: 25, script: &SCRIPT_CLASSES[15], feature: None },
846 StyleClass { name: "Ethiopic", index: 26, script: &SCRIPT_CLASSES[16], feature: None },
847 StyleClass { name: "Georgian (Mkhedruli)", index: 27, script: &SCRIPT_CLASSES[17], feature: None },
848 StyleClass { name: "Georgian (Khutsuri)", index: 28, script: &SCRIPT_CLASSES[18], feature: None },
849 StyleClass { name: "Glagolitic", index: 29, script: &SCRIPT_CLASSES[19], feature: None },
850 StyleClass { name: "Gothic", index: 30, script: &SCRIPT_CLASSES[20], feature: None },
851 StyleClass { name: "Greek petite capitals from capitals", index: 31, script: &SCRIPT_CLASSES[21], feature: Some(Tag::new(b"c2cp")) },
852 StyleClass { name: "Greek small capitals from capitals", index: 32, script: &SCRIPT_CLASSES[21], feature: Some(Tag::new(b"c2sc")) },
853 StyleClass { name: "Greek ordinals", index: 33, script: &SCRIPT_CLASSES[21], feature: Some(Tag::new(b"ordn")) },
854 StyleClass { name: "Greek petite capitals", index: 34, script: &SCRIPT_CLASSES[21], feature: Some(Tag::new(b"pcap")) },
855 StyleClass { name: "Greek ruby", index: 35, script: &SCRIPT_CLASSES[21], feature: Some(Tag::new(b"ruby")) },
856 StyleClass { name: "Greek scientific inferiors", index: 36, script: &SCRIPT_CLASSES[21], feature: Some(Tag::new(b"sinf")) },
857 StyleClass { name: "Greek small capitals", index: 37, script: &SCRIPT_CLASSES[21], feature: Some(Tag::new(b"smcp")) },
858 StyleClass { name: "Greek subscript", index: 38, script: &SCRIPT_CLASSES[21], feature: Some(Tag::new(b"subs")) },
859 StyleClass { name: "Greek superscript", index: 39, script: &SCRIPT_CLASSES[21], feature: Some(Tag::new(b"sups")) },
860 StyleClass { name: "Greek titling", index: 40, script: &SCRIPT_CLASSES[21], feature: Some(Tag::new(b"titl")) },
861 StyleClass { name: "Greek", index: 41, script: &SCRIPT_CLASSES[21], feature: None },
862 StyleClass { name: "Gujarati", index: 42, script: &SCRIPT_CLASSES[22], feature: None },
863 StyleClass { name: "Gurmukhi", index: 43, script: &SCRIPT_CLASSES[23], feature: None },
864 StyleClass { name: "Hebrew", index: 44, script: &SCRIPT_CLASSES[24], feature: None },
865 StyleClass { name: "Kayah Li", index: 45, script: &SCRIPT_CLASSES[25], feature: None },
866 StyleClass { name: "Khmer", index: 46, script: &SCRIPT_CLASSES[26], feature: None },
867 StyleClass { name: "Khmer Symbols", index: 47, script: &SCRIPT_CLASSES[27], feature: None },
868 StyleClass { name: "Kannada", index: 48, script: &SCRIPT_CLASSES[28], feature: None },
869 StyleClass { name: "Lao", index: 49, script: &SCRIPT_CLASSES[29], feature: None },
870 StyleClass { name: "Latin petite capitals from capitals", index: 50, script: &SCRIPT_CLASSES[30], feature: Some(Tag::new(b"c2cp")) },
871 StyleClass { name: "Latin small capitals from capitals", index: 51, script: &SCRIPT_CLASSES[30], feature: Some(Tag::new(b"c2sc")) },
872 StyleClass { name: "Latin ordinals", index: 52, script: &SCRIPT_CLASSES[30], feature: Some(Tag::new(b"ordn")) },
873 StyleClass { name: "Latin petite capitals", index: 53, script: &SCRIPT_CLASSES[30], feature: Some(Tag::new(b"pcap")) },
874 StyleClass { name: "Latin ruby", index: 54, script: &SCRIPT_CLASSES[30], feature: Some(Tag::new(b"ruby")) },
875 StyleClass { name: "Latin scientific inferiors", index: 55, script: &SCRIPT_CLASSES[30], feature: Some(Tag::new(b"sinf")) },
876 StyleClass { name: "Latin small capitals", index: 56, script: &SCRIPT_CLASSES[30], feature: Some(Tag::new(b"smcp")) },
877 StyleClass { name: "Latin subscript", index: 57, script: &SCRIPT_CLASSES[30], feature: Some(Tag::new(b"subs")) },
878 StyleClass { name: "Latin superscript", index: 58, script: &SCRIPT_CLASSES[30], feature: Some(Tag::new(b"sups")) },
879 StyleClass { name: "Latin titling", index: 59, script: &SCRIPT_CLASSES[30], feature: Some(Tag::new(b"titl")) },
880 StyleClass { name: "Latin", index: 60, script: &SCRIPT_CLASSES[30], feature: None },
881 StyleClass { name: "Latin Subscript Fallback", index: 61, script: &SCRIPT_CLASSES[31], feature: None },
882 StyleClass { name: "Latin Superscript Fallback", index: 62, script: &SCRIPT_CLASSES[32], feature: None },
883 StyleClass { name: "Lisu", index: 63, script: &SCRIPT_CLASSES[33], feature: None },
884 StyleClass { name: "Malayalam", index: 64, script: &SCRIPT_CLASSES[34], feature: None },
885 StyleClass { name: "Medefaidrin", index: 65, script: &SCRIPT_CLASSES[35], feature: None },
886 StyleClass { name: "Mongolian", index: 66, script: &SCRIPT_CLASSES[36], feature: None },
887 StyleClass { name: "Myanmar", index: 67, script: &SCRIPT_CLASSES[37], feature: None },
888 StyleClass { name: "N'Ko", index: 68, script: &SCRIPT_CLASSES[38], feature: None },
889 StyleClass { name: "no script", index: 69, script: &SCRIPT_CLASSES[39], feature: None },
890 StyleClass { name: "Ol Chiki", index: 70, script: &SCRIPT_CLASSES[40], feature: None },
891 StyleClass { name: "Old Turkic", index: 71, script: &SCRIPT_CLASSES[41], feature: None },
892 StyleClass { name: "Osage", index: 72, script: &SCRIPT_CLASSES[42], feature: None },
893 StyleClass { name: "Osmanya", index: 73, script: &SCRIPT_CLASSES[43], feature: None },
894 StyleClass { name: "Hanifi Rohingya", index: 74, script: &SCRIPT_CLASSES[44], feature: None },
895 StyleClass { name: "Saurashtra", index: 75, script: &SCRIPT_CLASSES[45], feature: None },
896 StyleClass { name: "Shavian", index: 76, script: &SCRIPT_CLASSES[46], feature: None },
897 StyleClass { name: "Sinhala", index: 77, script: &SCRIPT_CLASSES[47], feature: None },
898 StyleClass { name: "Sundanese", index: 78, script: &SCRIPT_CLASSES[48], feature: None },
899 StyleClass { name: "Tamil", index: 79, script: &SCRIPT_CLASSES[49], feature: None },
900 StyleClass { name: "Tai Viet", index: 80, script: &SCRIPT_CLASSES[50], feature: None },
901 StyleClass { name: "Telugu", index: 81, script: &SCRIPT_CLASSES[51], feature: None },
902 StyleClass { name: "Tifinagh", index: 82, script: &SCRIPT_CLASSES[52], feature: None },
903 StyleClass { name: "Thai", index: 83, script: &SCRIPT_CLASSES[53], feature: None },
904 StyleClass { name: "Vai", index: 84, script: &SCRIPT_CLASSES[54], feature: None },
905 StyleClass { name: "Limbu", index: 85, script: &SCRIPT_CLASSES[55], feature: None },
906 StyleClass { name: "Oriya", index: 86, script: &SCRIPT_CLASSES[56], feature: None },
907 StyleClass { name: "Syloti Nagri", index: 87, script: &SCRIPT_CLASSES[57], feature: None },
908 StyleClass { name: "Tibetan", index: 88, script: &SCRIPT_CLASSES[58], feature: None },
909 StyleClass { name: "CJKV ideographs", index: 89, script: &SCRIPT_CLASSES[59], feature: None },
910];
911
912#[allow(unused)]impl StyleClass {
913 pub const ADLM: usize = 0;
914 pub const ARAB: usize = 1;
915 pub const ARMN: usize = 2;
916 pub const AVST: usize = 3;
917 pub const BAMU: usize = 4;
918 pub const BENG: usize = 5;
919 pub const BUHD: usize = 6;
920 pub const CAKM: usize = 7;
921 pub const CANS: usize = 8;
922 pub const CARI: usize = 9;
923 pub const CHER: usize = 10;
924 pub const COPT: usize = 11;
925 pub const CPRT: usize = 12;
926 pub const CYRL_C2CP: usize = 13;
927 pub const CYRL_C2SC: usize = 14;
928 pub const CYRL_ORDN: usize = 15;
929 pub const CYRL_PCAP: usize = 16;
930 pub const CYRL_RUBY: usize = 17;
931 pub const CYRL_SINF: usize = 18;
932 pub const CYRL_SMCP: usize = 19;
933 pub const CYRL_SUBS: usize = 20;
934 pub const CYRL_SUPS: usize = 21;
935 pub const CYRL_TITL: usize = 22;
936 pub const CYRL: usize = 23;
937 pub const DEVA: usize = 24;
938 pub const DSRT: usize = 25;
939 pub const ETHI: usize = 26;
940 pub const GEOR: usize = 27;
941 pub const GEOK: usize = 28;
942 pub const GLAG: usize = 29;
943 pub const GOTH: usize = 30;
944 pub const GREK_C2CP: usize = 31;
945 pub const GREK_C2SC: usize = 32;
946 pub const GREK_ORDN: usize = 33;
947 pub const GREK_PCAP: usize = 34;
948 pub const GREK_RUBY: usize = 35;
949 pub const GREK_SINF: usize = 36;
950 pub const GREK_SMCP: usize = 37;
951 pub const GREK_SUBS: usize = 38;
952 pub const GREK_SUPS: usize = 39;
953 pub const GREK_TITL: usize = 40;
954 pub const GREK: usize = 41;
955 pub const GUJR: usize = 42;
956 pub const GURU: usize = 43;
957 pub const HEBR: usize = 44;
958 pub const KALI: usize = 45;
959 pub const KHMR: usize = 46;
960 pub const KHMS: usize = 47;
961 pub const KNDA: usize = 48;
962 pub const LAOO: usize = 49;
963 pub const LATN_C2CP: usize = 50;
964 pub const LATN_C2SC: usize = 51;
965 pub const LATN_ORDN: usize = 52;
966 pub const LATN_PCAP: usize = 53;
967 pub const LATN_RUBY: usize = 54;
968 pub const LATN_SINF: usize = 55;
969 pub const LATN_SMCP: usize = 56;
970 pub const LATN_SUBS: usize = 57;
971 pub const LATN_SUPS: usize = 58;
972 pub const LATN_TITL: usize = 59;
973 pub const LATN: usize = 60;
974 pub const LATB: usize = 61;
975 pub const LATP: usize = 62;
976 pub const LISU: usize = 63;
977 pub const MLYM: usize = 64;
978 pub const MEDF: usize = 65;
979 pub const MONG: usize = 66;
980 pub const MYMR: usize = 67;
981 pub const NKOO: usize = 68;
982 pub const NONE: usize = 69;
983 pub const OLCK: usize = 70;
984 pub const ORKH: usize = 71;
985 pub const OSGE: usize = 72;
986 pub const OSMA: usize = 73;
987 pub const ROHG: usize = 74;
988 pub const SAUR: usize = 75;
989 pub const SHAW: usize = 76;
990 pub const SINH: usize = 77;
991 pub const SUND: usize = 78;
992 pub const TAML: usize = 79;
993 pub const TAVT: usize = 80;
994 pub const TELU: usize = 81;
995 pub const TFNG: usize = 82;
996 pub const THAI: usize = 83;
997 pub const VAII: usize = 84;
998 pub const LIMB: usize = 85;
999 pub const ORYA: usize = 86;
1000 pub const SYLO: usize = 87;
1001 pub const TIBT: usize = 88;
1002 pub const HANI: usize = 89;
1003}
1004
1005#[rustfmt::skip]
1006pub(super) const STYLE_RANGES: &[StyleRange] = &[
1007 base_range(32, 93, 60),
1008 non_base_range(94, 96, 60),
1009 base_range(97, 125, 60),
1010 non_base_range(126, 126, 60),
1011 base_range(127, 127, 60),
1012 base_range(160, 167, 60),
1013 non_base_range(168, 169, 60),
1014 base_range(170, 170, 62),
1015 base_range(171, 173, 60),
1016 non_base_range(174, 176, 60),
1017 base_range(177, 177, 60),
1018 base_range(178, 179, 62),
1019 non_base_range(180, 180, 60),
1020 base_range(181, 183, 60),
1021 non_base_range(184, 184, 60),
1022 base_range(185, 186, 62),
1023 base_range(187, 187, 60),
1024 non_base_range(188, 190, 60),
1025 base_range(191, 687, 60),
1026 base_range(688, 696, 62),
1027 non_base_range(697, 735, 60),
1028 base_range(736, 740, 62),
1029 non_base_range(741, 879, 60),
1030 base_range(880, 889, 41),
1031 non_base_range(890, 890, 41),
1032 base_range(891, 899, 41),
1033 non_base_range(900, 901, 41),
1034 base_range(902, 1023, 41),
1035 base_range(1024, 1154, 23),
1036 non_base_range(1155, 1161, 23),
1037 base_range(1162, 1327, 23),
1038 base_range(1328, 1368, 2),
1039 non_base_range(1369, 1375, 2),
1040 base_range(1376, 1423, 2),
1041 base_range(1424, 1424, 44),
1042 non_base_range(1425, 1471, 44),
1043 base_range(1472, 1472, 44),
1044 non_base_range(1473, 1474, 44),
1045 base_range(1475, 1475, 44),
1046 non_base_range(1476, 1477, 44),
1047 base_range(1478, 1478, 44),
1048 non_base_range(1479, 1479, 44),
1049 base_range(1480, 1535, 44),
1050 non_base_range(1536, 1541, 1),
1051 base_range(1542, 1551, 1),
1052 non_base_range(1552, 1562, 1),
1053 base_range(1563, 1610, 1),
1054 non_base_range(1611, 1631, 1),
1055 base_range(1632, 1647, 1),
1056 non_base_range(1648, 1648, 1),
1057 base_range(1649, 1749, 1),
1058 non_base_range(1750, 1756, 1),
1059 base_range(1757, 1758, 1),
1060 non_base_range(1759, 1764, 1),
1061 base_range(1765, 1766, 1),
1062 non_base_range(1767, 1768, 1),
1063 base_range(1769, 1769, 1),
1064 non_base_range(1770, 1773, 1),
1065 base_range(1774, 1791, 1),
1066 base_range(1872, 2047, 1),
1067 base_range(2208, 2258, 1),
1068 non_base_range(2259, 2303, 1),
1069 non_base_range(2304, 2306, 24),
1070 base_range(2307, 2361, 24),
1071 non_base_range(2362, 2362, 24),
1072 base_range(2363, 2363, 24),
1073 base_range(2365, 2368, 24),
1074 non_base_range(2369, 2376, 24),
1075 base_range(2377, 2380, 24),
1076 non_base_range(2381, 2381, 24),
1077 base_range(2382, 2384, 24),
1078 non_base_range(2387, 2391, 24),
1079 base_range(2392, 2401, 24),
1080 non_base_range(2402, 2403, 24),
1081 base_range(2406, 2431, 24),
1082 base_range(2432, 2432, 5),
1083 non_base_range(2433, 2433, 5),
1084 base_range(2434, 2491, 5),
1085 non_base_range(2492, 2492, 5),
1086 base_range(2493, 2496, 5),
1087 non_base_range(2497, 2500, 5),
1088 base_range(2501, 2508, 5),
1089 non_base_range(2509, 2509, 5),
1090 base_range(2510, 2529, 5),
1091 non_base_range(2530, 2531, 5),
1092 base_range(2532, 2557, 5),
1093 non_base_range(2558, 2558, 5),
1094 base_range(2559, 2559, 5),
1095 base_range(2560, 2560, 43),
1096 non_base_range(2561, 2562, 43),
1097 base_range(2563, 2619, 43),
1098 non_base_range(2620, 2620, 43),
1099 base_range(2621, 2624, 43),
1100 non_base_range(2625, 2641, 43),
1101 base_range(2642, 2671, 43),
1102 non_base_range(2672, 2673, 43),
1103 base_range(2674, 2676, 43),
1104 non_base_range(2677, 2677, 43),
1105 base_range(2678, 2687, 43),
1106 base_range(2688, 2688, 42),
1107 non_base_range(2689, 2690, 42),
1108 base_range(2691, 2747, 42),
1109 non_base_range(2748, 2748, 42),
1110 base_range(2749, 2752, 42),
1111 non_base_range(2753, 2760, 42),
1112 base_range(2761, 2764, 42),
1113 non_base_range(2765, 2765, 42),
1114 base_range(2766, 2785, 42),
1115 non_base_range(2786, 2787, 42),
1116 base_range(2788, 2809, 42),
1117 non_base_range(2810, 2815, 42),
1118 base_range(2816, 2816, 86),
1119 non_base_range(2817, 2818, 86),
1120 base_range(2819, 2875, 86),
1121 non_base_range(2876, 2876, 86),
1122 base_range(2877, 2878, 86),
1123 non_base_range(2879, 2879, 86),
1124 base_range(2880, 2880, 86),
1125 non_base_range(2881, 2884, 86),
1126 base_range(2885, 2892, 86),
1127 non_base_range(2893, 2902, 86),
1128 base_range(2903, 2913, 86),
1129 non_base_range(2914, 2915, 86),
1130 base_range(2916, 2943, 86),
1131 base_range(2944, 2945, 79),
1132 non_base_range(2946, 2946, 79),
1133 base_range(2947, 3007, 79),
1134 non_base_range(3008, 3010, 79),
1135 base_range(3011, 3020, 79),
1136 non_base_range(3021, 3021, 79),
1137 base_range(3022, 3071, 79),
1138 non_base_range(3072, 3072, 81),
1139 base_range(3073, 3075, 81),
1140 non_base_range(3076, 3076, 81),
1141 base_range(3077, 3133, 81),
1142 non_base_range(3134, 3136, 81),
1143 base_range(3137, 3141, 81),
1144 non_base_range(3142, 3158, 81),
1145 base_range(3159, 3169, 81),
1146 non_base_range(3170, 3171, 81),
1147 base_range(3172, 3199, 81),
1148 base_range(3200, 3200, 48),
1149 non_base_range(3201, 3201, 48),
1150 base_range(3202, 3259, 48),
1151 non_base_range(3260, 3260, 48),
1152 base_range(3261, 3262, 48),
1153 non_base_range(3263, 3263, 48),
1154 base_range(3264, 3269, 48),
1155 non_base_range(3270, 3270, 48),
1156 base_range(3271, 3275, 48),
1157 non_base_range(3276, 3277, 48),
1158 base_range(3278, 3297, 48),
1159 non_base_range(3298, 3299, 48),
1160 base_range(3300, 3327, 48),
1161 non_base_range(3328, 3329, 64),
1162 base_range(3330, 3386, 64),
1163 non_base_range(3387, 3388, 64),
1164 base_range(3389, 3404, 64),
1165 non_base_range(3405, 3406, 64),
1166 base_range(3407, 3425, 64),
1167 non_base_range(3426, 3427, 64),
1168 base_range(3428, 3455, 64),
1169 base_range(3456, 3529, 77),
1170 non_base_range(3530, 3530, 77),
1171 base_range(3531, 3537, 77),
1172 non_base_range(3538, 3542, 77),
1173 base_range(3543, 3583, 77),
1174 base_range(3584, 3632, 83),
1175 non_base_range(3633, 3633, 83),
1176 base_range(3634, 3635, 83),
1177 non_base_range(3636, 3642, 83),
1178 base_range(3643, 3654, 83),
1179 non_base_range(3655, 3662, 83),
1180 base_range(3663, 3711, 83),
1181 base_range(3712, 3760, 49),
1182 non_base_range(3761, 3761, 49),
1183 base_range(3762, 3763, 49),
1184 non_base_range(3764, 3772, 49),
1185 base_range(3773, 3783, 49),
1186 non_base_range(3784, 3789, 49),
1187 base_range(3790, 3839, 49),
1188 base_range(3840, 3863, 88),
1189 non_base_range(3864, 3865, 88),
1190 base_range(3866, 3892, 88),
1191 non_base_range(3893, 3893, 88),
1192 base_range(3894, 3894, 88),
1193 non_base_range(3895, 3895, 88),
1194 base_range(3896, 3896, 88),
1195 non_base_range(3897, 3897, 88),
1196 base_range(3898, 3901, 88),
1197 non_base_range(3902, 3903, 88),
1198 base_range(3904, 3952, 88),
1199 non_base_range(3953, 3966, 88),
1200 base_range(3967, 3967, 88),
1201 non_base_range(3968, 3972, 88),
1202 base_range(3973, 3973, 88),
1203 non_base_range(3974, 3975, 88),
1204 base_range(3976, 3980, 88),
1205 non_base_range(3981, 4028, 88),
1206 base_range(4029, 4095, 88),
1207 base_range(4096, 4140, 67),
1208 non_base_range(4141, 4144, 67),
1209 base_range(4145, 4145, 67),
1210 non_base_range(4146, 4151, 67),
1211 base_range(4152, 4153, 67),
1212 non_base_range(4154, 4154, 67),
1213 base_range(4155, 4156, 67),
1214 non_base_range(4157, 4158, 67),
1215 base_range(4159, 4183, 67),
1216 non_base_range(4184, 4185, 67),
1217 base_range(4186, 4189, 67),
1218 non_base_range(4190, 4192, 67),
1219 base_range(4193, 4208, 67),
1220 non_base_range(4209, 4212, 67),
1221 base_range(4213, 4225, 67),
1222 non_base_range(4226, 4226, 67),
1223 base_range(4227, 4228, 67),
1224 non_base_range(4229, 4230, 67),
1225 base_range(4231, 4236, 67),
1226 non_base_range(4237, 4237, 67),
1227 base_range(4238, 4255, 67),
1228 base_range(4256, 4301, 28),
1229 base_range(4304, 4351, 27),
1230 base_range(4352, 4607, 89),
1231 base_range(4608, 4956, 26),
1232 non_base_range(4957, 4959, 26),
1233 base_range(4960, 5023, 26),
1234 base_range(5024, 5119, 10),
1235 base_range(5120, 5759, 8),
1236 base_range(5952, 5969, 6),
1237 non_base_range(5970, 5971, 6),
1238 base_range(5972, 5983, 6),
1239 base_range(6016, 6070, 46),
1240 non_base_range(6071, 6077, 46),
1241 base_range(6078, 6085, 46),
1242 non_base_range(6086, 6086, 46),
1243 base_range(6087, 6088, 46),
1244 non_base_range(6089, 6099, 46),
1245 base_range(6100, 6108, 46),
1246 non_base_range(6109, 6109, 46),
1247 base_range(6110, 6143, 46),
1248 base_range(6144, 6276, 66),
1249 non_base_range(6277, 6278, 66),
1250 base_range(6279, 6312, 66),
1251 non_base_range(6313, 6313, 66),
1252 base_range(6314, 6319, 66),
1253 base_range(6320, 6399, 8),
1254 base_range(6400, 6431, 85),
1255 non_base_range(6432, 6434, 85),
1256 base_range(6435, 6438, 85),
1257 non_base_range(6439, 6452, 85),
1258 base_range(6453, 6454, 85),
1259 non_base_range(6455, 6459, 85),
1260 base_range(6460, 6479, 85),
1261 base_range(6624, 6655, 47),
1262 non_base_range(6832, 6846, 60),
1263 non_base_range(7040, 7042, 78),
1264 base_range(7043, 7072, 78),
1265 non_base_range(7073, 7085, 78),
1266 base_range(7086, 7103, 78),
1267 base_range(7248, 7295, 70),
1268 base_range(7296, 7311, 23),
1269 base_range(7312, 7359, 27),
1270 base_range(7360, 7375, 78),
1271 base_range(7424, 7467, 60),
1272 base_range(7468, 7521, 62),
1273 base_range(7522, 7530, 61),
1274 base_range(7531, 7543, 60),
1275 base_range(7544, 7544, 62),
1276 base_range(7545, 7578, 60),
1277 base_range(7579, 7615, 62),
1278 non_base_range(7616, 7679, 60),
1279 base_range(7680, 7935, 60),
1280 base_range(7936, 8124, 41),
1281 non_base_range(8125, 8129, 41),
1282 base_range(8130, 8140, 41),
1283 non_base_range(8141, 8143, 41),
1284 base_range(8144, 8156, 41),
1285 non_base_range(8157, 8159, 41),
1286 base_range(8160, 8172, 41),
1287 non_base_range(8173, 8175, 41),
1288 base_range(8176, 8188, 41),
1289 non_base_range(8189, 8190, 41),
1290 base_range(8191, 8191, 41),
1291 base_range(8192, 8214, 60),
1292 non_base_range(8215, 8215, 60),
1293 base_range(8216, 8253, 60),
1294 non_base_range(8254, 8254, 60),
1295 base_range(8255, 8303, 60),
1296 base_range(8304, 8319, 62),
1297 base_range(8320, 8348, 61),
1298 base_range(8352, 8376, 60),
1299 base_range(8377, 8377, 24),
1300 base_range(8378, 8399, 60),
1301 base_range(8528, 8591, 60),
1302 base_range(11264, 11359, 29),
1303 base_range(11360, 11387, 60),
1304 base_range(11388, 11388, 61),
1305 base_range(11389, 11389, 62),
1306 base_range(11390, 11391, 60),
1307 base_range(11392, 11502, 11),
1308 non_base_range(11503, 11505, 11),
1309 base_range(11506, 11519, 11),
1310 base_range(11520, 11565, 28),
1311 base_range(11568, 11647, 82),
1312 base_range(11648, 11743, 26),
1313 non_base_range(11744, 11775, 23),
1314 base_range(11776, 11903, 60),
1315 base_range(11904, 12255, 89),
1316 base_range(12272, 12329, 89),
1317 non_base_range(12330, 12335, 89),
1318 base_range(12336, 12687, 89),
1319 non_base_range(12688, 12703, 89),
1320 base_range(12704, 12799, 89),
1321 base_range(13056, 40959, 89),
1322 base_range(42192, 42239, 63),
1323 base_range(42240, 42559, 84),
1324 base_range(42560, 42606, 23),
1325 non_base_range(42607, 42623, 23),
1326 base_range(42624, 42653, 23),
1327 non_base_range(42654, 42655, 23),
1328 base_range(42656, 42735, 4),
1329 non_base_range(42736, 42737, 4),
1330 base_range(42738, 42751, 4),
1331 base_range(42784, 42863, 60),
1332 base_range(42864, 42864, 62),
1333 base_range(42865, 42887, 60),
1334 non_base_range(42888, 42888, 60),
1335 base_range(42889, 42999, 60),
1336 base_range(43000, 43001, 62),
1337 non_base_range(43002, 43002, 60),
1338 base_range(43003, 43007, 60),
1339 base_range(43008, 43009, 87),
1340 non_base_range(43010, 43010, 87),
1341 base_range(43011, 43013, 87),
1342 non_base_range(43014, 43014, 87),
1343 base_range(43015, 43018, 87),
1344 non_base_range(43019, 43019, 87),
1345 base_range(43020, 43044, 87),
1346 non_base_range(43045, 43046, 87),
1347 base_range(43047, 43055, 87),
1348 non_base_range(43136, 43137, 75),
1349 base_range(43138, 43187, 75),
1350 non_base_range(43188, 43205, 75),
1351 base_range(43206, 43231, 75),
1352 non_base_range(43232, 43249, 24),
1353 base_range(43250, 43262, 24),
1354 non_base_range(43263, 43263, 24),
1355 base_range(43264, 43301, 45),
1356 non_base_range(43302, 43309, 45),
1357 base_range(43310, 43311, 45),
1358 base_range(43360, 43391, 89),
1359 base_range(43488, 43492, 67),
1360 non_base_range(43493, 43493, 67),
1361 base_range(43494, 43519, 67),
1362 base_range(43616, 43643, 67),
1363 non_base_range(43644, 43644, 67),
1364 base_range(43645, 43647, 67),
1365 base_range(43648, 43695, 80),
1366 non_base_range(43696, 43696, 80),
1367 base_range(43697, 43697, 80),
1368 non_base_range(43698, 43700, 80),
1369 base_range(43701, 43702, 80),
1370 non_base_range(43703, 43704, 80),
1371 base_range(43705, 43709, 80),
1372 non_base_range(43710, 43711, 80),
1373 base_range(43712, 43712, 80),
1374 non_base_range(43713, 43713, 80),
1375 base_range(43714, 43743, 80),
1376 base_range(43776, 43823, 26),
1377 base_range(43824, 43867, 60),
1378 base_range(43868, 43871, 62),
1379 base_range(43872, 43887, 60),
1380 base_range(43888, 43967, 10),
1381 base_range(44032, 55295, 89),
1382 base_range(63744, 64255, 89),
1383 base_range(64256, 64262, 60),
1384 base_range(64275, 64279, 2),
1385 base_range(64285, 64285, 44),
1386 non_base_range(64286, 64286, 44),
1387 base_range(64287, 64335, 44),
1388 base_range(64336, 64433, 1),
1389 non_base_range(64434, 64449, 1),
1390 base_range(64450, 65023, 1),
1391 base_range(65040, 65055, 89),
1392 base_range(65072, 65103, 89),
1393 non_base_range(65136, 65136, 1),
1394 base_range(65137, 65137, 1),
1395 non_base_range(65138, 65138, 1),
1396 base_range(65139, 65139, 1),
1397 non_base_range(65140, 65140, 1),
1398 base_range(65141, 65141, 1),
1399 non_base_range(65142, 65142, 1),
1400 base_range(65143, 65143, 1),
1401 non_base_range(65144, 65144, 1),
1402 base_range(65145, 65145, 1),
1403 non_base_range(65146, 65146, 1),
1404 base_range(65147, 65147, 1),
1405 non_base_range(65148, 65148, 1),
1406 base_range(65149, 65149, 1),
1407 non_base_range(65150, 65150, 1),
1408 base_range(65151, 65279, 1),
1409 base_range(65280, 65519, 89),
1410 base_range(66208, 66271, 9),
1411 base_range(66352, 66383, 30),
1412 base_range(66560, 66639, 25),
1413 base_range(66640, 66687, 76),
1414 base_range(66688, 66735, 73),
1415 base_range(66736, 66815, 72),
1416 base_range(67584, 67647, 12),
1417 base_range(68352, 68408, 3),
1418 non_base_range(68409, 68415, 3),
1419 base_range(68608, 68687, 71),
1420 base_range(68864, 68927, 74),
1421 non_base_range(69888, 69890, 7),
1422 base_range(69891, 69926, 7),
1423 non_base_range(69927, 69940, 7),
1424 base_range(69941, 69957, 7),
1425 non_base_range(69958, 69958, 7),
1426 base_range(69959, 69967, 7),
1427 base_range(71264, 71295, 66),
1428 base_range(93760, 93855, 65),
1429 base_range(110592, 110895, 89),
1430 base_range(119552, 119647, 89),
1431 base_range(119808, 120831, 60),
1432 non_base_range(122880, 122927, 29),
1433 non_base_range(125184, 125258, 0),
1434 base_range(125259, 125279, 0),
1435 base_range(126464, 126719, 1),
1436 base_range(131072, 173791, 89),
1437 base_range(173824, 191471, 89),
1438 base_range(194560, 195103, 89),
1439];
1440