Skip to main content

skrifa/generated/
generated_autohint_styles.rs

1// THIS FILE IS AUTOGENERATED.
2// Any changes to this file will be overwritten.
3// Use ../scripts/gen_autohint_scripts.py to regenerate.
4
5#[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: "Nyiakeng Puachue Hmong",
337        group: ScriptGroup::Default,
338        tag: Tag::new(b"Hmnp"),
339        hint_top_to_bottom: false,
340        std_chars: "𞄨",
341        blues: &[
342            ("𞄀 𞄁 𞄈 𞄑 𞄧 𞄬", BlueZones::TOP),
343            ("𞄁 𞄜 𞄠 𞄡 𞄤 𞅂", BlueZones::NONE),
344        ],
345    },
346    ScriptClass {
347        name: "Kayah Li",
348        group: ScriptGroup::Default,
349        tag: Tag::new(b"Kali"),
350        hint_top_to_bottom: false,
351        std_chars: "ꤍ ꤀",
352        blues: &[
353            ("꤅ ꤏ ꤁ ꤋ ꤀ ꤍ", BlueZones::TOP.union(BlueZones::X_HEIGHT)),
354            ("꤈ ꤘ ꤀ ꤍ ꤢ", BlueZones::NONE),
355            ("ꤖ ꤡ", BlueZones::TOP),
356            ("ꤑ ꤜ ꤞ", BlueZones::NONE),
357            ("ꤑ꤬ ꤜ꤭ ꤔ꤬", BlueZones::NONE),
358        ],
359    },
360    ScriptClass {
361        name: "Khmer",
362        group: ScriptGroup::Default,
363        tag: Tag::new(b"Khmr"),
364        hint_top_to_bottom: false,
365        std_chars: "០",
366        blues: &[
367            ("ខ ទ ន ឧ ឩ ា", BlueZones::TOP.union(BlueZones::X_HEIGHT)),
368            ("ក្ក ក្ខ ក្គ ក្ថ", BlueZones::SUB_TOP),
369            ("ខ ឃ ច ឋ ប ម យ ឲ", BlueZones::NONE),
370            ("ត្រ រៀ ឲ្យ អឿ", BlueZones::NONE),
371            ("ន្ត្រៃ ង្ខ្យ ក្បៀ ច្រៀ ន្តឿ ល្បឿ", BlueZones::NONE),
372        ],
373    },
374    ScriptClass {
375        name: "Khmer Symbols",
376        group: ScriptGroup::Default,
377        tag: Tag::new(b"Khms"),
378        hint_top_to_bottom: false,
379        std_chars: "᧡ ᧪",
380        blues: &[
381            ("᧠ ᧡", BlueZones::TOP.union(BlueZones::X_HEIGHT)),
382            ("᧶ ᧹", BlueZones::NONE),
383        ],
384    },
385    ScriptClass {
386        name: "Kannada",
387        group: ScriptGroup::Default,
388        tag: Tag::new(b"Knda"),
389        hint_top_to_bottom: false,
390        std_chars: "೦ ಬ",
391        blues: &[
392            ("ಇ ಊ ಐ ಣ ಸಾ ನಾ ದಾ ರಾ", BlueZones::TOP),
393            ("ಅ ಉ ಎ ಲ ೦ ೨ ೬ ೭", BlueZones::NONE),
394        ],
395    },
396    ScriptClass {
397        name: "Lao",
398        group: ScriptGroup::Default,
399        tag: Tag::new(b"Laoo"),
400        hint_top_to_bottom: false,
401        std_chars: "໐",
402        blues: &[
403            ("າ ດ ອ ມ ລ ວ ຣ ງ", BlueZones::TOP.union(BlueZones::X_HEIGHT)),
404            ("າ ອ ບ ຍ ຣ ຮ ວ ຢ", BlueZones::NONE),
405            ("ປ ຢ ຟ ຝ", BlueZones::TOP),
406            ("ໂ ໄ ໃ", BlueZones::TOP),
407            ("ງ ຊ ຖ ຽ ໆ ຯ", BlueZones::NONE),
408        ],
409    },
410    ScriptClass {
411        name: "Latin",
412        group: ScriptGroup::Default,
413        tag: Tag::new(b"Latn"),
414        hint_top_to_bottom: false,
415        std_chars: "o O 0",
416        blues: &[
417            ("T H E Z O C Q S", BlueZones::TOP),
418            ("H E Z L O C U S", BlueZones::NONE),
419            ("f i j k d b h", BlueZones::TOP),
420            ("u v x z o e s c", BlueZones::TOP.union(BlueZones::X_HEIGHT)),
421            ("n r x z o e s c", BlueZones::NONE),
422            ("p q g j y", BlueZones::NONE),
423        ],
424    },
425    ScriptClass {
426        name: "Latin Subscript Fallback",
427        group: ScriptGroup::Default,
428        tag: Tag::new(b"Latb"),
429        hint_top_to_bottom: false,
430        std_chars: "ₒ ₀",
431        blues: &[
432            ("₀ ₃ ₅ ₇ ₈", BlueZones::TOP),
433            ("₀ ₁ ₂ ₃ ₈", BlueZones::NONE),
434            ("ᵢ ⱼ ₕ ₖ ₗ", BlueZones::TOP),
435            ("ₐ ₑ ₒ ₓ ₙ ₛ ᵥ ᵤ ᵣ", BlueZones::TOP.union(BlueZones::X_HEIGHT)),
436            ("ₐ ₑ ₒ ₓ ₙ ₛ ᵥ ᵤ ᵣ", BlueZones::NONE),
437            ("ᵦ ᵧ ᵨ ᵩ ₚ", BlueZones::NONE),
438        ],
439    },
440    ScriptClass {
441        name: "Latin Superscript Fallback",
442        group: ScriptGroup::Default,
443        tag: Tag::new(b"Latp"),
444        hint_top_to_bottom: false,
445        std_chars: "ᵒ ᴼ ⁰",
446        blues: &[
447            ("⁰ ³ ⁵ ⁷ ᵀ ᴴ ᴱ ᴼ", BlueZones::TOP),
448            ("⁰ ¹ ² ³ ᴱ ᴸ ᴼ ᵁ", BlueZones::NONE),
449            ("ᵇ ᵈ ᵏ ʰ ʲ ᶠ ⁱ", BlueZones::TOP),
450            ("ᵉ ᵒ ʳ ˢ ˣ ᶜ ᶻ", BlueZones::TOP.union(BlueZones::X_HEIGHT)),
451            ("ᵉ ᵒ ʳ ˢ ˣ ᶜ ᶻ", BlueZones::NONE),
452            ("ᵖ ʸ ᵍ", BlueZones::NONE),
453        ],
454    },
455    ScriptClass {
456        name: "Lisu",
457        group: ScriptGroup::Default,
458        tag: Tag::new(b"Lisu"),
459        hint_top_to_bottom: false,
460        std_chars: "ꓳ",
461        blues: &[
462            ("ꓡ ꓧ ꓱ ꓶ ꓩ ꓚ ꓵ ꓳ", BlueZones::TOP),
463            ("ꓕ ꓜ ꓞ ꓡ ꓛ ꓢ ꓳ ꓴ", BlueZones::NONE),
464        ],
465    },
466    ScriptClass {
467        name: "Malayalam",
468        group: ScriptGroup::Default,
469        tag: Tag::new(b"Mlym"),
470        hint_top_to_bottom: false,
471        std_chars: "ഠ റ",
472        blues: &[
473            ("ഒ ട ഠ റ ച പ ച്ച പ്പ", BlueZones::TOP),
474            ("ട ഠ ധ ശ ഘ ച ഥ ല", BlueZones::NONE),
475        ],
476    },
477    ScriptClass {
478        name: "Medefaidrin",
479        group: ScriptGroup::Default,
480        tag: Tag::new(b"Medf"),
481        hint_top_to_bottom: false,
482        std_chars: "𖹡 𖹛 𖹯",
483        blues: &[
484            ("𖹀 𖹁 𖹂 𖹃 𖹏 𖹚 𖹟", BlueZones::TOP),
485            ("𖹀 𖹁 𖹂 𖹃 𖹏 𖹚 𖹒 𖹓", BlueZones::NONE),
486            ("𖹤 𖹬 𖹧 𖹴 𖹶 𖹾", BlueZones::TOP),
487            ("𖹠 𖹡 𖹢 𖹹 𖹳 𖹮", BlueZones::TOP.union(BlueZones::X_HEIGHT)),
488            ("𖹠 𖹡 𖹢 𖹳 𖹭 𖹽", BlueZones::NONE),
489            ("𖹥 𖹨 𖹩", BlueZones::NONE),
490            ("𖺀 𖺅 𖺈 𖺄 𖺍", BlueZones::TOP),
491        ],
492    },
493    ScriptClass {
494        name: "Mongolian",
495        group: ScriptGroup::Default,
496        tag: Tag::new(b"Mong"),
497        hint_top_to_bottom: true,
498        std_chars: "ᡂ ᠪ",
499        blues: &[
500            ("ᠳ ᠴ ᠶ ᠽ ᡂ ᡊ \u{200d}ᡡ\u{200d} \u{200d}ᡳ\u{200d}", BlueZones::TOP),
501            ("ᡃ", BlueZones::NONE),
502        ],
503    },
504    ScriptClass {
505        name: "Myanmar",
506        group: ScriptGroup::Default,
507        tag: Tag::new(b"Mymr"),
508        hint_top_to_bottom: false,
509        std_chars: "ဝ င ဂ",
510        blues: &[
511            ("ခ ဂ င ဒ ဝ ၥ ၊ ။", BlueZones::TOP.union(BlueZones::X_HEIGHT)),
512            ("င ဎ ဒ ပ ဗ ဝ ၊ ။", BlueZones::NONE),
513            ("ဩ ြ ၍ ၏ ၆ ါ ိ", BlueZones::TOP),
514            ("ဉ ည ဥ ဩ ဨ ၂ ၅ ၉", BlueZones::NONE),
515        ],
516    },
517    ScriptClass {
518        name: "N'Ko",
519        group: ScriptGroup::Default,
520        tag: Tag::new(b"Nkoo"),
521        hint_top_to_bottom: false,
522        std_chars: "ߋ ߀",
523        blues: &[
524            ("ߐ ߉ ߒ ߟ ߖ ߜ ߠ ߥ", BlueZones::TOP),
525            ("߀ ߘ ߡ ߠ ߥ", BlueZones::NONE),
526            ("ߏ ߛ ߋ", BlueZones::TOP.union(BlueZones::X_HEIGHT)),
527            ("ߎ ߏ ߛ ߋ", BlueZones::NONE),
528        ],
529    },
530    ScriptClass {
531        name: "no script",
532        group: ScriptGroup::Default,
533        tag: Tag::new(b"None"),
534        hint_top_to_bottom: false,
535        std_chars: "",
536        blues: &[],
537    },
538    ScriptClass {
539        name: "Ol Chiki",
540        group: ScriptGroup::Default,
541        tag: Tag::new(b"Olck"),
542        hint_top_to_bottom: false,
543        std_chars: "ᱛ",
544        blues: &[
545            ("ᱛ ᱜ ᱝ ᱡ ᱢ ᱥ", BlueZones::TOP),
546            ("ᱛ ᱜ ᱝ ᱡ ᱢ ᱥ", BlueZones::NONE),
547        ],
548    },
549    ScriptClass {
550        name: "Old Turkic",
551        group: ScriptGroup::Default,
552        tag: Tag::new(b"Orkh"),
553        hint_top_to_bottom: false,
554        std_chars: "𐰗",
555        blues: &[
556            ("𐰗 𐰘 𐰧", BlueZones::TOP),
557            ("𐰉 𐰗 𐰦 𐰧", BlueZones::NONE),
558        ],
559    },
560    ScriptClass {
561        name: "Osage",
562        group: ScriptGroup::Default,
563        tag: Tag::new(b"Osge"),
564        hint_top_to_bottom: false,
565        std_chars: "𐓂 𐓪",
566        blues: &[
567            ("𐒾 𐓍 𐓒 𐓓 𐒻 𐓂 𐒵 𐓆", BlueZones::TOP),
568            ("𐒰 𐓍 𐓂 𐒿 𐓎 𐒹", BlueZones::NONE),
569            ("𐒼 𐒽 𐒾", BlueZones::NONE),
570            ("𐓵 𐓶 𐓺 𐓻 𐓝 𐓣 𐓪 𐓮", BlueZones::TOP.union(BlueZones::X_HEIGHT)),
571            ("𐓘 𐓚 𐓣 𐓵 𐓡 𐓧 𐓪 𐓶", BlueZones::NONE),
572            ("𐓤 𐓦 𐓸 𐓹 𐓛", BlueZones::TOP),
573            ("𐓤 𐓥 𐓦", BlueZones::NONE),
574        ],
575    },
576    ScriptClass {
577        name: "Osmanya",
578        group: ScriptGroup::Default,
579        tag: Tag::new(b"Osma"),
580        hint_top_to_bottom: false,
581        std_chars: "𐒆 𐒠",
582        blues: &[
583            ("𐒆 𐒉 𐒐 𐒒 𐒘 𐒛 𐒠 𐒣", BlueZones::TOP),
584            ("𐒀 𐒂 𐒆 𐒈 𐒊 𐒒 𐒠 𐒩", BlueZones::NONE),
585        ],
586    },
587    ScriptClass {
588        name: "Hanifi Rohingya",
589        group: ScriptGroup::Default,
590        tag: Tag::new(b"Rohg"),
591        hint_top_to_bottom: false,
592        std_chars: "𐴰",
593        blues: &[
594            ("𐴃 𐴀 𐴆 𐴖 𐴕", BlueZones::TOP),
595            ("𐴔 𐴖 𐴕 𐴑 𐴐", BlueZones::NONE),
596            ("ـ", BlueZones::NEUTRAL),
597        ],
598    },
599    ScriptClass {
600        name: "Saurashtra",
601        group: ScriptGroup::Default,
602        tag: Tag::new(b"Saur"),
603        hint_top_to_bottom: false,
604        std_chars: "ꢝ ꣐",
605        blues: &[
606            ("ꢜ ꢞ ꢳ ꢂ ꢖ ꢒ ꢝ ꢛ", BlueZones::TOP),
607            ("ꢂ ꢨ ꢺ ꢤ ꢎ", BlueZones::NONE),
608        ],
609    },
610    ScriptClass {
611        name: "Shavian",
612        group: ScriptGroup::Default,
613        tag: Tag::new(b"Shaw"),
614        hint_top_to_bottom: false,
615        std_chars: "𐑴",
616        blues: &[
617            ("𐑕 𐑙", BlueZones::TOP),
618            ("𐑔 𐑖 𐑗 𐑹 𐑻", BlueZones::NONE),
619            ("𐑟 𐑣", BlueZones::NONE),
620            ("𐑱 𐑲 𐑳 𐑴 𐑸 𐑺 𐑼", BlueZones::TOP.union(BlueZones::X_HEIGHT)),
621            ("𐑴 𐑻 𐑹", BlueZones::NONE),
622        ],
623    },
624    ScriptClass {
625        name: "Sinhala",
626        group: ScriptGroup::Default,
627        tag: Tag::new(b"Sinh"),
628        hint_top_to_bottom: false,
629        std_chars: "ට",
630        blues: &[
631            ("ඉ ක ඝ ඳ ප ය ල ෆ", BlueZones::TOP),
632            ("එ ඔ ඝ ජ ට ථ ධ ර", BlueZones::NONE),
633            ("ද ඳ උ ල තූ තු බු දු", BlueZones::NONE),
634        ],
635    },
636    ScriptClass {
637        name: "Sundanese",
638        group: ScriptGroup::Default,
639        tag: Tag::new(b"Sund"),
640        hint_top_to_bottom: false,
641        std_chars: "᮰",
642        blues: &[
643            ("ᮋ ᮞ ᮮ ᮽ ᮰ ᮈ", BlueZones::TOP),
644            ("ᮄ ᮔ ᮕ ᮗ ᮰ ᮆ ᮈ ᮉ", BlueZones::NONE),
645            ("ᮼ ᳄", BlueZones::NONE),
646        ],
647    },
648    ScriptClass {
649        name: "Tamil",
650        group: ScriptGroup::Default,
651        tag: Tag::new(b"Taml"),
652        hint_top_to_bottom: false,
653        std_chars: "௦",
654        blues: &[
655            ("உ ஒ ஓ ற ஈ க ங ச", BlueZones::TOP),
656            ("க ச ல ஶ உ ங ட ப", BlueZones::NONE),
657        ],
658    },
659    ScriptClass {
660        name: "Tai Viet",
661        group: ScriptGroup::Default,
662        tag: Tag::new(b"Tavt"),
663        hint_top_to_bottom: false,
664        std_chars: "ꪒ ꪫ",
665        blues: &[
666            ("ꪆ ꪔ ꪒ ꪖ ꪫ", BlueZones::TOP),
667            ("ꪉ ꪫ ꪮ", BlueZones::NONE),
668        ],
669    },
670    ScriptClass {
671        name: "Telugu",
672        group: ScriptGroup::Default,
673        tag: Tag::new(b"Telu"),
674        hint_top_to_bottom: false,
675        std_chars: "౦ ౧",
676        blues: &[
677            ("ఇ ఌ ఙ ఞ ణ ఱ ౯", BlueZones::TOP),
678            ("అ క చ ర ఽ ౨ ౬", BlueZones::NONE),
679        ],
680    },
681    ScriptClass {
682        name: "Tifinagh",
683        group: ScriptGroup::Default,
684        tag: Tag::new(b"Tfng"),
685        hint_top_to_bottom: false,
686        std_chars: "ⵔ",
687        blues: &[
688            ("ⵔ ⵙ ⵛ ⵞ ⴵ ⴼ ⴹ ⵎ", BlueZones::TOP),
689            ("ⵔ ⵙ ⵛ ⵞ ⴵ ⴼ ⴹ ⵎ", BlueZones::NONE),
690        ],
691    },
692    ScriptClass {
693        name: "Thai",
694        group: ScriptGroup::Default,
695        tag: Tag::new(b"Thai"),
696        hint_top_to_bottom: false,
697        std_chars: "า ๅ ๐",
698        blues: &[
699            ("บ เ แ อ ก า", BlueZones::TOP.union(BlueZones::X_HEIGHT)),
700            ("บ ป ษ ฯ อ ย ฮ", BlueZones::NONE),
701            ("ป ฝ ฟ", BlueZones::TOP),
702            ("โ ใ ไ", BlueZones::TOP),
703            ("ฎ ฏ ฤ ฦ", BlueZones::NONE),
704            ("ญ ฐ", BlueZones::NONE),
705            ("๐ ๑ ๓", BlueZones::NONE),
706        ],
707    },
708    ScriptClass {
709        name: "Vai",
710        group: ScriptGroup::Default,
711        tag: Tag::new(b"Vaii"),
712        hint_top_to_bottom: false,
713        std_chars: "ꘓ ꖜ ꖴ",
714        blues: &[
715            ("ꗍ ꘖ ꘙ ꘜ ꖜ ꖝ ꔅ ꕢ", BlueZones::TOP),
716            ("ꗍ ꘖ ꘙ ꗞ ꔅ ꕢ ꖜ ꔆ", BlueZones::NONE),
717        ],
718    },
719    ScriptClass {
720        name: "Limbu",
721        group: ScriptGroup::Indic,
722        tag: Tag::new(b"Limb"),
723        hint_top_to_bottom: false,
724        std_chars: "o",
725        blues: &[],
726    },
727    ScriptClass {
728        name: "Oriya",
729        group: ScriptGroup::Indic,
730        tag: Tag::new(b"Orya"),
731        hint_top_to_bottom: false,
732        std_chars: "o",
733        blues: &[],
734    },
735    ScriptClass {
736        name: "Syloti Nagri",
737        group: ScriptGroup::Indic,
738        tag: Tag::new(b"Sylo"),
739        hint_top_to_bottom: false,
740        std_chars: "o",
741        blues: &[],
742    },
743    ScriptClass {
744        name: "Tibetan",
745        group: ScriptGroup::Indic,
746        tag: Tag::new(b"Tibt"),
747        hint_top_to_bottom: false,
748        std_chars: "o",
749        blues: &[],
750    },
751    ScriptClass {
752        name: "CJKV ideographs",
753        group: ScriptGroup::Cjk,
754        tag: Tag::new(b"Hani"),
755        hint_top_to_bottom: false,
756        std_chars: "田 囗",
757        blues: &[
758            ("他 们 你 來 們 到 和 地 对 對 就 席 我 时 時 會 来 為 能 舰 說 说 这 這 齊 | 军 同 已 愿 既 星 是 景 民 照 现 現 理 用 置 要 軍 那 配 里 開 雷 露 面 顾", BlueZones::TOP),
759            ("个 为 人 他 以 们 你 來 個 們 到 和 大 对 對 就 我 时 時 有 来 為 要 說 说 | 主 些 因 它 想 意 理 生 當 看 着 置 者 自 著 裡 过 还 进 進 過 道 還 里 面", BlueZones::NONE),
760            (" 些 们 你 來 們 到 和 地 她 将 將 就 年 得 情 最 样 樣 理 能 說 说 这 這 通 | 即 吗 吧 听 呢 品 响 嗎 师 師 收 断 斷 明 眼 間 间 际 陈 限 除 陳 随 際 隨", BlueZones::HORIZONTAL),
761            ("事 前 學 将 將 情 想 或 政 斯 新 样 樣 民 沒 没 然 特 现 現 球 第 經 谁 起 | 例 別 别 制 动 動 吗 嗎 增 指 明 朝 期 构 物 确 种 調 调 費 费 那 都 間 间", BlueZones::HORIZONTAL.union(BlueZones::RIGHT)),
762        ],
763    },
764];
765
766#[allow(unused)]impl ScriptClass {
767    pub const ADLM: usize = 0;
768    pub const ARAB: usize = 1;
769    pub const ARMN: usize = 2;
770    pub const AVST: usize = 3;
771    pub const BAMU: usize = 4;
772    pub const BENG: usize = 5;
773    pub const BUHD: usize = 6;
774    pub const CAKM: usize = 7;
775    pub const CANS: usize = 8;
776    pub const CARI: usize = 9;
777    pub const CHER: usize = 10;
778    pub const COPT: usize = 11;
779    pub const CPRT: usize = 12;
780    pub const CYRL: usize = 13;
781    pub const DEVA: usize = 14;
782    pub const DSRT: usize = 15;
783    pub const ETHI: usize = 16;
784    pub const GEOR: usize = 17;
785    pub const GEOK: usize = 18;
786    pub const GLAG: usize = 19;
787    pub const GOTH: usize = 20;
788    pub const GREK: usize = 21;
789    pub const GUJR: usize = 22;
790    pub const GURU: usize = 23;
791    pub const HEBR: usize = 24;
792    pub const HMNP: usize = 25;
793    pub const KALI: usize = 26;
794    pub const KHMR: usize = 27;
795    pub const KHMS: usize = 28;
796    pub const KNDA: usize = 29;
797    pub const LAOO: usize = 30;
798    pub const LATN: usize = 31;
799    pub const LATB: usize = 32;
800    pub const LATP: usize = 33;
801    pub const LISU: usize = 34;
802    pub const MLYM: usize = 35;
803    pub const MEDF: usize = 36;
804    pub const MONG: usize = 37;
805    pub const MYMR: usize = 38;
806    pub const NKOO: usize = 39;
807    pub const NONE: usize = 40;
808    pub const OLCK: usize = 41;
809    pub const ORKH: usize = 42;
810    pub const OSGE: usize = 43;
811    pub const OSMA: usize = 44;
812    pub const ROHG: usize = 45;
813    pub const SAUR: usize = 46;
814    pub const SHAW: usize = 47;
815    pub const SINH: usize = 48;
816    pub const SUND: usize = 49;
817    pub const TAML: usize = 50;
818    pub const TAVT: usize = 51;
819    pub const TELU: usize = 52;
820    pub const TFNG: usize = 53;
821    pub const THAI: usize = 54;
822    pub const VAII: usize = 55;
823    pub const LIMB: usize = 56;
824    pub const ORYA: usize = 57;
825    pub const SYLO: usize = 58;
826    pub const TIBT: usize = 59;
827    pub const HANI: usize = 60;
828}
829
830#[rustfmt::skip]
831pub(super) const STYLE_CLASSES: &[StyleClass] = &[
832    StyleClass { name: "Adlam", index: 0, script: &SCRIPT_CLASSES[0], feature: None },
833    StyleClass { name: "Arabic", index: 1, script: &SCRIPT_CLASSES[1], feature: None },
834    StyleClass { name: "Armenian", index: 2, script: &SCRIPT_CLASSES[2], feature: None },
835    StyleClass { name: "Avestan", index: 3, script: &SCRIPT_CLASSES[3], feature: None },
836    StyleClass { name: "Bamum", index: 4, script: &SCRIPT_CLASSES[4], feature: None },
837    StyleClass { name: "Bengali", index: 5, script: &SCRIPT_CLASSES[5], feature: None },
838    StyleClass { name: "Buhid", index: 6, script: &SCRIPT_CLASSES[6], feature: None },
839    StyleClass { name: "Chakma", index: 7, script: &SCRIPT_CLASSES[7], feature: None },
840    StyleClass { name: "Canadian Syllabics", index: 8, script: &SCRIPT_CLASSES[8], feature: None },
841    StyleClass { name: "Carian", index: 9, script: &SCRIPT_CLASSES[9], feature: None },
842    StyleClass { name: "Cherokee", index: 10, script: &SCRIPT_CLASSES[10], feature: None },
843    StyleClass { name: "Coptic", index: 11, script: &SCRIPT_CLASSES[11], feature: None },
844    StyleClass { name: "Cypriot", index: 12, script: &SCRIPT_CLASSES[12], feature: None },
845    StyleClass { name: "Cyrillic petite capitals from capitals", index: 13, script: &SCRIPT_CLASSES[13], feature: Some(Tag::new(b"c2cp")) },
846    StyleClass { name: "Cyrillic small capitals from capitals", index: 14, script: &SCRIPT_CLASSES[13], feature: Some(Tag::new(b"c2sc")) },
847    StyleClass { name: "Cyrillic ordinals", index: 15, script: &SCRIPT_CLASSES[13], feature: Some(Tag::new(b"ordn")) },
848    StyleClass { name: "Cyrillic petite capitals", index: 16, script: &SCRIPT_CLASSES[13], feature: Some(Tag::new(b"pcap")) },
849    StyleClass { name: "Cyrillic ruby", index: 17, script: &SCRIPT_CLASSES[13], feature: Some(Tag::new(b"ruby")) },
850    StyleClass { name: "Cyrillic scientific inferiors", index: 18, script: &SCRIPT_CLASSES[13], feature: Some(Tag::new(b"sinf")) },
851    StyleClass { name: "Cyrillic small capitals", index: 19, script: &SCRIPT_CLASSES[13], feature: Some(Tag::new(b"smcp")) },
852    StyleClass { name: "Cyrillic subscript", index: 20, script: &SCRIPT_CLASSES[13], feature: Some(Tag::new(b"subs")) },
853    StyleClass { name: "Cyrillic superscript", index: 21, script: &SCRIPT_CLASSES[13], feature: Some(Tag::new(b"sups")) },
854    StyleClass { name: "Cyrillic titling", index: 22, script: &SCRIPT_CLASSES[13], feature: Some(Tag::new(b"titl")) },
855    StyleClass { name: "Cyrillic", index: 23, script: &SCRIPT_CLASSES[13], feature: None },
856    StyleClass { name: "Devanagari", index: 24, script: &SCRIPT_CLASSES[14], feature: None },
857    StyleClass { name: "Deseret", index: 25, script: &SCRIPT_CLASSES[15], feature: None },
858    StyleClass { name: "Ethiopic", index: 26, script: &SCRIPT_CLASSES[16], feature: None },
859    StyleClass { name: "Georgian (Mkhedruli)", index: 27, script: &SCRIPT_CLASSES[17], feature: None },
860    StyleClass { name: "Georgian (Khutsuri)", index: 28, script: &SCRIPT_CLASSES[18], feature: None },
861    StyleClass { name: "Glagolitic", index: 29, script: &SCRIPT_CLASSES[19], feature: None },
862    StyleClass { name: "Gothic", index: 30, script: &SCRIPT_CLASSES[20], feature: None },
863    StyleClass { name: "Greek petite capitals from capitals", index: 31, script: &SCRIPT_CLASSES[21], feature: Some(Tag::new(b"c2cp")) },
864    StyleClass { name: "Greek small capitals from capitals", index: 32, script: &SCRIPT_CLASSES[21], feature: Some(Tag::new(b"c2sc")) },
865    StyleClass { name: "Greek ordinals", index: 33, script: &SCRIPT_CLASSES[21], feature: Some(Tag::new(b"ordn")) },
866    StyleClass { name: "Greek petite capitals", index: 34, script: &SCRIPT_CLASSES[21], feature: Some(Tag::new(b"pcap")) },
867    StyleClass { name: "Greek ruby", index: 35, script: &SCRIPT_CLASSES[21], feature: Some(Tag::new(b"ruby")) },
868    StyleClass { name: "Greek scientific inferiors", index: 36, script: &SCRIPT_CLASSES[21], feature: Some(Tag::new(b"sinf")) },
869    StyleClass { name: "Greek small capitals", index: 37, script: &SCRIPT_CLASSES[21], feature: Some(Tag::new(b"smcp")) },
870    StyleClass { name: "Greek subscript", index: 38, script: &SCRIPT_CLASSES[21], feature: Some(Tag::new(b"subs")) },
871    StyleClass { name: "Greek superscript", index: 39, script: &SCRIPT_CLASSES[21], feature: Some(Tag::new(b"sups")) },
872    StyleClass { name: "Greek titling", index: 40, script: &SCRIPT_CLASSES[21], feature: Some(Tag::new(b"titl")) },
873    StyleClass { name: "Greek", index: 41, script: &SCRIPT_CLASSES[21], feature: None },
874    StyleClass { name: "Gujarati", index: 42, script: &SCRIPT_CLASSES[22], feature: None },
875    StyleClass { name: "Gurmukhi", index: 43, script: &SCRIPT_CLASSES[23], feature: None },
876    StyleClass { name: "Hebrew", index: 44, script: &SCRIPT_CLASSES[24], feature: None },
877    StyleClass { name: "Nyiakeng Puachue Hmong", index: 45, script: &SCRIPT_CLASSES[25], feature: None },
878    StyleClass { name: "Kayah Li", index: 46, script: &SCRIPT_CLASSES[26], feature: None },
879    StyleClass { name: "Khmer", index: 47, script: &SCRIPT_CLASSES[27], feature: None },
880    StyleClass { name: "Khmer Symbols", index: 48, script: &SCRIPT_CLASSES[28], feature: None },
881    StyleClass { name: "Kannada", index: 49, script: &SCRIPT_CLASSES[29], feature: None },
882    StyleClass { name: "Lao", index: 50, script: &SCRIPT_CLASSES[30], feature: None },
883    StyleClass { name: "Latin petite capitals from capitals", index: 51, script: &SCRIPT_CLASSES[31], feature: Some(Tag::new(b"c2cp")) },
884    StyleClass { name: "Latin small capitals from capitals", index: 52, script: &SCRIPT_CLASSES[31], feature: Some(Tag::new(b"c2sc")) },
885    StyleClass { name: "Latin ordinals", index: 53, script: &SCRIPT_CLASSES[31], feature: Some(Tag::new(b"ordn")) },
886    StyleClass { name: "Latin petite capitals", index: 54, script: &SCRIPT_CLASSES[31], feature: Some(Tag::new(b"pcap")) },
887    StyleClass { name: "Latin ruby", index: 55, script: &SCRIPT_CLASSES[31], feature: Some(Tag::new(b"ruby")) },
888    StyleClass { name: "Latin scientific inferiors", index: 56, script: &SCRIPT_CLASSES[31], feature: Some(Tag::new(b"sinf")) },
889    StyleClass { name: "Latin small capitals", index: 57, script: &SCRIPT_CLASSES[31], feature: Some(Tag::new(b"smcp")) },
890    StyleClass { name: "Latin subscript", index: 58, script: &SCRIPT_CLASSES[31], feature: Some(Tag::new(b"subs")) },
891    StyleClass { name: "Latin superscript", index: 59, script: &SCRIPT_CLASSES[31], feature: Some(Tag::new(b"sups")) },
892    StyleClass { name: "Latin titling", index: 60, script: &SCRIPT_CLASSES[31], feature: Some(Tag::new(b"titl")) },
893    StyleClass { name: "Latin", index: 61, script: &SCRIPT_CLASSES[31], feature: None },
894    StyleClass { name: "Latin Subscript Fallback", index: 62, script: &SCRIPT_CLASSES[32], feature: None },
895    StyleClass { name: "Latin Superscript Fallback", index: 63, script: &SCRIPT_CLASSES[33], feature: None },
896    StyleClass { name: "Lisu", index: 64, script: &SCRIPT_CLASSES[34], feature: None },
897    StyleClass { name: "Malayalam", index: 65, script: &SCRIPT_CLASSES[35], feature: None },
898    StyleClass { name: "Medefaidrin", index: 66, script: &SCRIPT_CLASSES[36], feature: None },
899    StyleClass { name: "Mongolian", index: 67, script: &SCRIPT_CLASSES[37], feature: None },
900    StyleClass { name: "Myanmar", index: 68, script: &SCRIPT_CLASSES[38], feature: None },
901    StyleClass { name: "N'Ko", index: 69, script: &SCRIPT_CLASSES[39], feature: None },
902    StyleClass { name: "no script", index: 70, script: &SCRIPT_CLASSES[40], feature: None },
903    StyleClass { name: "Ol Chiki", index: 71, script: &SCRIPT_CLASSES[41], feature: None },
904    StyleClass { name: "Old Turkic", index: 72, script: &SCRIPT_CLASSES[42], feature: None },
905    StyleClass { name: "Osage", index: 73, script: &SCRIPT_CLASSES[43], feature: None },
906    StyleClass { name: "Osmanya", index: 74, script: &SCRIPT_CLASSES[44], feature: None },
907    StyleClass { name: "Hanifi Rohingya", index: 75, script: &SCRIPT_CLASSES[45], feature: None },
908    StyleClass { name: "Saurashtra", index: 76, script: &SCRIPT_CLASSES[46], feature: None },
909    StyleClass { name: "Shavian", index: 77, script: &SCRIPT_CLASSES[47], feature: None },
910    StyleClass { name: "Sinhala", index: 78, script: &SCRIPT_CLASSES[48], feature: None },
911    StyleClass { name: "Sundanese", index: 79, script: &SCRIPT_CLASSES[49], feature: None },
912    StyleClass { name: "Tamil", index: 80, script: &SCRIPT_CLASSES[50], feature: None },
913    StyleClass { name: "Tai Viet", index: 81, script: &SCRIPT_CLASSES[51], feature: None },
914    StyleClass { name: "Telugu", index: 82, script: &SCRIPT_CLASSES[52], feature: None },
915    StyleClass { name: "Tifinagh", index: 83, script: &SCRIPT_CLASSES[53], feature: None },
916    StyleClass { name: "Thai", index: 84, script: &SCRIPT_CLASSES[54], feature: None },
917    StyleClass { name: "Vai", index: 85, script: &SCRIPT_CLASSES[55], feature: None },
918    StyleClass { name: "Limbu", index: 86, script: &SCRIPT_CLASSES[56], feature: None },
919    StyleClass { name: "Oriya", index: 87, script: &SCRIPT_CLASSES[57], feature: None },
920    StyleClass { name: "Syloti Nagri", index: 88, script: &SCRIPT_CLASSES[58], feature: None },
921    StyleClass { name: "Tibetan", index: 89, script: &SCRIPT_CLASSES[59], feature: None },
922    StyleClass { name: "CJKV ideographs", index: 90, script: &SCRIPT_CLASSES[60], feature: None },
923];
924
925#[allow(unused)]impl StyleClass {
926    pub const ADLM: usize = 0;
927    pub const ARAB: usize = 1;
928    pub const ARMN: usize = 2;
929    pub const AVST: usize = 3;
930    pub const BAMU: usize = 4;
931    pub const BENG: usize = 5;
932    pub const BUHD: usize = 6;
933    pub const CAKM: usize = 7;
934    pub const CANS: usize = 8;
935    pub const CARI: usize = 9;
936    pub const CHER: usize = 10;
937    pub const COPT: usize = 11;
938    pub const CPRT: usize = 12;
939    pub const CYRL_C2CP: usize = 13;
940    pub const CYRL_C2SC: usize = 14;
941    pub const CYRL_ORDN: usize = 15;
942    pub const CYRL_PCAP: usize = 16;
943    pub const CYRL_RUBY: usize = 17;
944    pub const CYRL_SINF: usize = 18;
945    pub const CYRL_SMCP: usize = 19;
946    pub const CYRL_SUBS: usize = 20;
947    pub const CYRL_SUPS: usize = 21;
948    pub const CYRL_TITL: usize = 22;
949    pub const CYRL: usize = 23;
950    pub const DEVA: usize = 24;
951    pub const DSRT: usize = 25;
952    pub const ETHI: usize = 26;
953    pub const GEOR: usize = 27;
954    pub const GEOK: usize = 28;
955    pub const GLAG: usize = 29;
956    pub const GOTH: usize = 30;
957    pub const GREK_C2CP: usize = 31;
958    pub const GREK_C2SC: usize = 32;
959    pub const GREK_ORDN: usize = 33;
960    pub const GREK_PCAP: usize = 34;
961    pub const GREK_RUBY: usize = 35;
962    pub const GREK_SINF: usize = 36;
963    pub const GREK_SMCP: usize = 37;
964    pub const GREK_SUBS: usize = 38;
965    pub const GREK_SUPS: usize = 39;
966    pub const GREK_TITL: usize = 40;
967    pub const GREK: usize = 41;
968    pub const GUJR: usize = 42;
969    pub const GURU: usize = 43;
970    pub const HEBR: usize = 44;
971    pub const HMNP: usize = 45;
972    pub const KALI: usize = 46;
973    pub const KHMR: usize = 47;
974    pub const KHMS: usize = 48;
975    pub const KNDA: usize = 49;
976    pub const LAOO: usize = 50;
977    pub const LATN_C2CP: usize = 51;
978    pub const LATN_C2SC: usize = 52;
979    pub const LATN_ORDN: usize = 53;
980    pub const LATN_PCAP: usize = 54;
981    pub const LATN_RUBY: usize = 55;
982    pub const LATN_SINF: usize = 56;
983    pub const LATN_SMCP: usize = 57;
984    pub const LATN_SUBS: usize = 58;
985    pub const LATN_SUPS: usize = 59;
986    pub const LATN_TITL: usize = 60;
987    pub const LATN: usize = 61;
988    pub const LATB: usize = 62;
989    pub const LATP: usize = 63;
990    pub const LISU: usize = 64;
991    pub const MLYM: usize = 65;
992    pub const MEDF: usize = 66;
993    pub const MONG: usize = 67;
994    pub const MYMR: usize = 68;
995    pub const NKOO: usize = 69;
996    pub const NONE: usize = 70;
997    pub const OLCK: usize = 71;
998    pub const ORKH: usize = 72;
999    pub const OSGE: usize = 73;
1000    pub const OSMA: usize = 74;
1001    pub const ROHG: usize = 75;
1002    pub const SAUR: usize = 76;
1003    pub const SHAW: usize = 77;
1004    pub const SINH: usize = 78;
1005    pub const SUND: usize = 79;
1006    pub const TAML: usize = 80;
1007    pub const TAVT: usize = 81;
1008    pub const TELU: usize = 82;
1009    pub const TFNG: usize = 83;
1010    pub const THAI: usize = 84;
1011    pub const VAII: usize = 85;
1012    pub const LIMB: usize = 86;
1013    pub const ORYA: usize = 87;
1014    pub const SYLO: usize = 88;
1015    pub const TIBT: usize = 89;
1016    pub const HANI: usize = 90;
1017}
1018
1019#[rustfmt::skip]
1020pub(super) const STYLE_RANGES: &[StyleRange] = &[
1021    base_range(32, 93, 61),
1022    non_base_range(94, 96, 61),
1023    base_range(97, 125, 61),
1024    non_base_range(126, 126, 61),
1025    base_range(127, 127, 61),
1026    base_range(160, 167, 61),
1027    non_base_range(168, 169, 61),
1028    base_range(170, 170, 63),
1029    base_range(171, 173, 61),
1030    non_base_range(174, 176, 61),
1031    base_range(177, 177, 61),
1032    base_range(178, 179, 63),
1033    non_base_range(180, 180, 61),
1034    base_range(181, 183, 61),
1035    non_base_range(184, 184, 61),
1036    base_range(185, 186, 63),
1037    base_range(187, 187, 61),
1038    non_base_range(188, 190, 61),
1039    base_range(191, 687, 61),
1040    base_range(688, 696, 63),
1041    non_base_range(697, 735, 61),
1042    base_range(736, 740, 63),
1043    non_base_range(741, 879, 61),
1044    base_range(880, 889, 41),
1045    non_base_range(890, 890, 41),
1046    base_range(891, 899, 41),
1047    non_base_range(900, 901, 41),
1048    base_range(902, 1023, 41),
1049    base_range(1024, 1154, 23),
1050    non_base_range(1155, 1161, 23),
1051    base_range(1162, 1327, 23),
1052    base_range(1328, 1368, 2),
1053    non_base_range(1369, 1375, 2),
1054    base_range(1376, 1423, 2),
1055    base_range(1424, 1424, 44),
1056    non_base_range(1425, 1471, 44),
1057    base_range(1472, 1472, 44),
1058    non_base_range(1473, 1474, 44),
1059    base_range(1475, 1475, 44),
1060    non_base_range(1476, 1477, 44),
1061    base_range(1478, 1478, 44),
1062    non_base_range(1479, 1479, 44),
1063    base_range(1480, 1535, 44),
1064    non_base_range(1536, 1541, 1),
1065    base_range(1542, 1551, 1),
1066    non_base_range(1552, 1562, 1),
1067    base_range(1563, 1610, 1),
1068    non_base_range(1611, 1631, 1),
1069    base_range(1632, 1647, 1),
1070    non_base_range(1648, 1648, 1),
1071    base_range(1649, 1749, 1),
1072    non_base_range(1750, 1756, 1),
1073    base_range(1757, 1758, 1),
1074    non_base_range(1759, 1764, 1),
1075    base_range(1765, 1766, 1),
1076    non_base_range(1767, 1768, 1),
1077    base_range(1769, 1769, 1),
1078    non_base_range(1770, 1773, 1),
1079    base_range(1774, 1791, 1),
1080    base_range(1872, 2047, 1),
1081    base_range(2208, 2258, 1),
1082    non_base_range(2259, 2303, 1),
1083    non_base_range(2304, 2306, 24),
1084    base_range(2307, 2361, 24),
1085    non_base_range(2362, 2362, 24),
1086    base_range(2363, 2363, 24),
1087    base_range(2365, 2368, 24),
1088    non_base_range(2369, 2376, 24),
1089    base_range(2377, 2380, 24),
1090    non_base_range(2381, 2381, 24),
1091    base_range(2382, 2384, 24),
1092    non_base_range(2387, 2391, 24),
1093    base_range(2392, 2401, 24),
1094    non_base_range(2402, 2403, 24),
1095    base_range(2406, 2431, 24),
1096    base_range(2432, 2432, 5),
1097    non_base_range(2433, 2433, 5),
1098    base_range(2434, 2491, 5),
1099    non_base_range(2492, 2492, 5),
1100    base_range(2493, 2496, 5),
1101    non_base_range(2497, 2500, 5),
1102    base_range(2501, 2508, 5),
1103    non_base_range(2509, 2509, 5),
1104    base_range(2510, 2529, 5),
1105    non_base_range(2530, 2531, 5),
1106    base_range(2532, 2557, 5),
1107    non_base_range(2558, 2558, 5),
1108    base_range(2559, 2559, 5),
1109    base_range(2560, 2560, 43),
1110    non_base_range(2561, 2562, 43),
1111    base_range(2563, 2619, 43),
1112    non_base_range(2620, 2620, 43),
1113    base_range(2621, 2624, 43),
1114    non_base_range(2625, 2641, 43),
1115    base_range(2642, 2671, 43),
1116    non_base_range(2672, 2673, 43),
1117    base_range(2674, 2676, 43),
1118    non_base_range(2677, 2677, 43),
1119    base_range(2678, 2687, 43),
1120    base_range(2688, 2688, 42),
1121    non_base_range(2689, 2690, 42),
1122    base_range(2691, 2747, 42),
1123    non_base_range(2748, 2748, 42),
1124    base_range(2749, 2752, 42),
1125    non_base_range(2753, 2760, 42),
1126    base_range(2761, 2764, 42),
1127    non_base_range(2765, 2765, 42),
1128    base_range(2766, 2785, 42),
1129    non_base_range(2786, 2787, 42),
1130    base_range(2788, 2809, 42),
1131    non_base_range(2810, 2815, 42),
1132    base_range(2816, 2816, 87),
1133    non_base_range(2817, 2818, 87),
1134    base_range(2819, 2875, 87),
1135    non_base_range(2876, 2876, 87),
1136    base_range(2877, 2878, 87),
1137    non_base_range(2879, 2879, 87),
1138    base_range(2880, 2880, 87),
1139    non_base_range(2881, 2884, 87),
1140    base_range(2885, 2892, 87),
1141    non_base_range(2893, 2902, 87),
1142    base_range(2903, 2913, 87),
1143    non_base_range(2914, 2915, 87),
1144    base_range(2916, 2943, 87),
1145    base_range(2944, 2945, 80),
1146    non_base_range(2946, 2946, 80),
1147    base_range(2947, 3007, 80),
1148    non_base_range(3008, 3010, 80),
1149    base_range(3011, 3020, 80),
1150    non_base_range(3021, 3021, 80),
1151    base_range(3022, 3071, 80),
1152    non_base_range(3072, 3072, 82),
1153    base_range(3073, 3075, 82),
1154    non_base_range(3076, 3076, 82),
1155    base_range(3077, 3133, 82),
1156    non_base_range(3134, 3136, 82),
1157    base_range(3137, 3141, 82),
1158    non_base_range(3142, 3158, 82),
1159    base_range(3159, 3169, 82),
1160    non_base_range(3170, 3171, 82),
1161    base_range(3172, 3199, 82),
1162    base_range(3200, 3200, 49),
1163    non_base_range(3201, 3201, 49),
1164    base_range(3202, 3259, 49),
1165    non_base_range(3260, 3260, 49),
1166    base_range(3261, 3262, 49),
1167    non_base_range(3263, 3263, 49),
1168    base_range(3264, 3269, 49),
1169    non_base_range(3270, 3270, 49),
1170    base_range(3271, 3275, 49),
1171    non_base_range(3276, 3277, 49),
1172    base_range(3278, 3297, 49),
1173    non_base_range(3298, 3299, 49),
1174    base_range(3300, 3327, 49),
1175    non_base_range(3328, 3329, 65),
1176    base_range(3330, 3386, 65),
1177    non_base_range(3387, 3388, 65),
1178    base_range(3389, 3404, 65),
1179    non_base_range(3405, 3406, 65),
1180    base_range(3407, 3425, 65),
1181    non_base_range(3426, 3427, 65),
1182    base_range(3428, 3455, 65),
1183    base_range(3456, 3529, 78),
1184    non_base_range(3530, 3530, 78),
1185    base_range(3531, 3537, 78),
1186    non_base_range(3538, 3542, 78),
1187    base_range(3543, 3583, 78),
1188    base_range(3584, 3632, 84),
1189    non_base_range(3633, 3633, 84),
1190    base_range(3634, 3635, 84),
1191    non_base_range(3636, 3642, 84),
1192    base_range(3643, 3654, 84),
1193    non_base_range(3655, 3662, 84),
1194    base_range(3663, 3711, 84),
1195    base_range(3712, 3760, 50),
1196    non_base_range(3761, 3761, 50),
1197    base_range(3762, 3763, 50),
1198    non_base_range(3764, 3772, 50),
1199    base_range(3773, 3783, 50),
1200    non_base_range(3784, 3789, 50),
1201    base_range(3790, 3839, 50),
1202    base_range(3840, 3863, 89),
1203    non_base_range(3864, 3865, 89),
1204    base_range(3866, 3892, 89),
1205    non_base_range(3893, 3893, 89),
1206    base_range(3894, 3894, 89),
1207    non_base_range(3895, 3895, 89),
1208    base_range(3896, 3896, 89),
1209    non_base_range(3897, 3897, 89),
1210    base_range(3898, 3901, 89),
1211    non_base_range(3902, 3903, 89),
1212    base_range(3904, 3952, 89),
1213    non_base_range(3953, 3966, 89),
1214    base_range(3967, 3967, 89),
1215    non_base_range(3968, 3972, 89),
1216    base_range(3973, 3973, 89),
1217    non_base_range(3974, 3975, 89),
1218    base_range(3976, 3980, 89),
1219    non_base_range(3981, 4028, 89),
1220    base_range(4029, 4095, 89),
1221    base_range(4096, 4140, 68),
1222    non_base_range(4141, 4144, 68),
1223    base_range(4145, 4145, 68),
1224    non_base_range(4146, 4151, 68),
1225    base_range(4152, 4153, 68),
1226    non_base_range(4154, 4154, 68),
1227    base_range(4155, 4156, 68),
1228    non_base_range(4157, 4158, 68),
1229    base_range(4159, 4183, 68),
1230    non_base_range(4184, 4185, 68),
1231    base_range(4186, 4189, 68),
1232    non_base_range(4190, 4192, 68),
1233    base_range(4193, 4208, 68),
1234    non_base_range(4209, 4212, 68),
1235    base_range(4213, 4225, 68),
1236    non_base_range(4226, 4226, 68),
1237    base_range(4227, 4228, 68),
1238    non_base_range(4229, 4230, 68),
1239    base_range(4231, 4236, 68),
1240    non_base_range(4237, 4237, 68),
1241    base_range(4238, 4255, 68),
1242    base_range(4256, 4301, 28),
1243    base_range(4304, 4351, 27),
1244    base_range(4352, 4607, 90),
1245    base_range(4608, 4956, 26),
1246    non_base_range(4957, 4959, 26),
1247    base_range(4960, 5023, 26),
1248    base_range(5024, 5119, 10),
1249    base_range(5120, 5759, 8),
1250    base_range(5952, 5969, 6),
1251    non_base_range(5970, 5971, 6),
1252    base_range(5972, 5983, 6),
1253    base_range(6016, 6070, 47),
1254    non_base_range(6071, 6077, 47),
1255    base_range(6078, 6085, 47),
1256    non_base_range(6086, 6086, 47),
1257    base_range(6087, 6088, 47),
1258    non_base_range(6089, 6099, 47),
1259    base_range(6100, 6108, 47),
1260    non_base_range(6109, 6109, 47),
1261    base_range(6110, 6143, 47),
1262    base_range(6144, 6276, 67),
1263    non_base_range(6277, 6278, 67),
1264    base_range(6279, 6312, 67),
1265    non_base_range(6313, 6313, 67),
1266    base_range(6314, 6319, 67),
1267    base_range(6320, 6399, 8),
1268    base_range(6400, 6431, 86),
1269    non_base_range(6432, 6434, 86),
1270    base_range(6435, 6438, 86),
1271    non_base_range(6439, 6452, 86),
1272    base_range(6453, 6454, 86),
1273    non_base_range(6455, 6459, 86),
1274    base_range(6460, 6479, 86),
1275    base_range(6624, 6655, 48),
1276    non_base_range(6832, 6846, 61),
1277    non_base_range(7040, 7042, 79),
1278    base_range(7043, 7072, 79),
1279    non_base_range(7073, 7085, 79),
1280    base_range(7086, 7103, 79),
1281    base_range(7248, 7295, 71),
1282    base_range(7296, 7311, 23),
1283    base_range(7312, 7359, 27),
1284    base_range(7360, 7375, 79),
1285    base_range(7424, 7467, 61),
1286    base_range(7468, 7521, 63),
1287    base_range(7522, 7530, 62),
1288    base_range(7531, 7543, 61),
1289    base_range(7544, 7544, 63),
1290    base_range(7545, 7578, 61),
1291    base_range(7579, 7615, 63),
1292    non_base_range(7616, 7679, 61),
1293    base_range(7680, 7935, 61),
1294    base_range(7936, 8124, 41),
1295    non_base_range(8125, 8129, 41),
1296    base_range(8130, 8140, 41),
1297    non_base_range(8141, 8143, 41),
1298    base_range(8144, 8156, 41),
1299    non_base_range(8157, 8159, 41),
1300    base_range(8160, 8172, 41),
1301    non_base_range(8173, 8175, 41),
1302    base_range(8176, 8188, 41),
1303    non_base_range(8189, 8190, 41),
1304    base_range(8191, 8191, 41),
1305    base_range(8192, 8214, 61),
1306    non_base_range(8215, 8215, 61),
1307    base_range(8216, 8253, 61),
1308    non_base_range(8254, 8254, 61),
1309    base_range(8255, 8303, 61),
1310    base_range(8304, 8319, 63),
1311    base_range(8320, 8348, 62),
1312    base_range(8352, 8376, 61),
1313    base_range(8377, 8377, 24),
1314    base_range(8378, 8399, 61),
1315    base_range(8528, 8591, 61),
1316    base_range(11264, 11359, 29),
1317    base_range(11360, 11387, 61),
1318    base_range(11388, 11388, 62),
1319    base_range(11389, 11389, 63),
1320    base_range(11390, 11391, 61),
1321    base_range(11392, 11502, 11),
1322    non_base_range(11503, 11505, 11),
1323    base_range(11506, 11519, 11),
1324    base_range(11520, 11565, 28),
1325    base_range(11568, 11647, 83),
1326    base_range(11648, 11743, 26),
1327    non_base_range(11744, 11775, 23),
1328    base_range(11776, 11903, 61),
1329    base_range(11904, 12255, 90),
1330    base_range(12272, 12329, 90),
1331    non_base_range(12330, 12335, 90),
1332    base_range(12336, 12687, 90),
1333    non_base_range(12688, 12703, 90),
1334    base_range(12704, 12799, 90),
1335    base_range(13056, 40959, 90),
1336    base_range(42192, 42239, 64),
1337    base_range(42240, 42559, 85),
1338    base_range(42560, 42606, 23),
1339    non_base_range(42607, 42623, 23),
1340    base_range(42624, 42653, 23),
1341    non_base_range(42654, 42655, 23),
1342    base_range(42656, 42735, 4),
1343    non_base_range(42736, 42737, 4),
1344    base_range(42738, 42751, 4),
1345    base_range(42784, 42863, 61),
1346    base_range(42864, 42864, 63),
1347    base_range(42865, 42887, 61),
1348    non_base_range(42888, 42888, 61),
1349    base_range(42889, 42999, 61),
1350    base_range(43000, 43001, 63),
1351    non_base_range(43002, 43002, 61),
1352    base_range(43003, 43007, 61),
1353    base_range(43008, 43009, 88),
1354    non_base_range(43010, 43010, 88),
1355    base_range(43011, 43013, 88),
1356    non_base_range(43014, 43014, 88),
1357    base_range(43015, 43018, 88),
1358    non_base_range(43019, 43019, 88),
1359    base_range(43020, 43044, 88),
1360    non_base_range(43045, 43046, 88),
1361    base_range(43047, 43055, 88),
1362    non_base_range(43136, 43137, 76),
1363    base_range(43138, 43187, 76),
1364    non_base_range(43188, 43205, 76),
1365    base_range(43206, 43231, 76),
1366    non_base_range(43232, 43249, 24),
1367    base_range(43250, 43262, 24),
1368    non_base_range(43263, 43263, 24),
1369    base_range(43264, 43301, 46),
1370    non_base_range(43302, 43309, 46),
1371    base_range(43310, 43311, 46),
1372    base_range(43360, 43391, 90),
1373    base_range(43488, 43492, 68),
1374    non_base_range(43493, 43493, 68),
1375    base_range(43494, 43519, 68),
1376    base_range(43616, 43643, 68),
1377    non_base_range(43644, 43644, 68),
1378    base_range(43645, 43647, 68),
1379    base_range(43648, 43695, 81),
1380    non_base_range(43696, 43696, 81),
1381    base_range(43697, 43697, 81),
1382    non_base_range(43698, 43700, 81),
1383    base_range(43701, 43702, 81),
1384    non_base_range(43703, 43704, 81),
1385    base_range(43705, 43709, 81),
1386    non_base_range(43710, 43711, 81),
1387    base_range(43712, 43712, 81),
1388    non_base_range(43713, 43713, 81),
1389    base_range(43714, 43743, 81),
1390    base_range(43776, 43823, 26),
1391    base_range(43824, 43867, 61),
1392    base_range(43868, 43871, 63),
1393    base_range(43872, 43887, 61),
1394    base_range(43888, 43967, 10),
1395    base_range(44032, 55295, 90),
1396    base_range(63744, 64255, 90),
1397    base_range(64256, 64262, 61),
1398    base_range(64275, 64279, 2),
1399    base_range(64285, 64285, 44),
1400    non_base_range(64286, 64286, 44),
1401    base_range(64287, 64335, 44),
1402    base_range(64336, 64433, 1),
1403    non_base_range(64434, 64449, 1),
1404    base_range(64450, 65023, 1),
1405    base_range(65040, 65055, 90),
1406    base_range(65072, 65103, 90),
1407    non_base_range(65136, 65136, 1),
1408    base_range(65137, 65137, 1),
1409    non_base_range(65138, 65138, 1),
1410    base_range(65139, 65139, 1),
1411    non_base_range(65140, 65140, 1),
1412    base_range(65141, 65141, 1),
1413    non_base_range(65142, 65142, 1),
1414    base_range(65143, 65143, 1),
1415    non_base_range(65144, 65144, 1),
1416    base_range(65145, 65145, 1),
1417    non_base_range(65146, 65146, 1),
1418    base_range(65147, 65147, 1),
1419    non_base_range(65148, 65148, 1),
1420    base_range(65149, 65149, 1),
1421    non_base_range(65150, 65150, 1),
1422    base_range(65151, 65279, 1),
1423    base_range(65280, 65519, 90),
1424    base_range(66208, 66271, 9),
1425    base_range(66352, 66383, 30),
1426    base_range(66560, 66639, 25),
1427    base_range(66640, 66687, 77),
1428    base_range(66688, 66735, 74),
1429    base_range(66736, 66815, 73),
1430    base_range(67584, 67647, 12),
1431    base_range(68352, 68408, 3),
1432    non_base_range(68409, 68415, 3),
1433    base_range(68608, 68687, 72),
1434    base_range(68864, 68927, 75),
1435    non_base_range(69888, 69890, 7),
1436    base_range(69891, 69926, 7),
1437    non_base_range(69927, 69940, 7),
1438    base_range(69941, 69957, 7),
1439    non_base_range(69958, 69958, 7),
1440    base_range(69959, 69967, 7),
1441    base_range(71264, 71295, 67),
1442    base_range(93760, 93855, 66),
1443    base_range(110592, 110895, 90),
1444    base_range(119552, 119647, 90),
1445    base_range(119808, 120831, 61),
1446    non_base_range(122880, 122927, 29),
1447    base_range(123136, 123215, 45),
1448    non_base_range(125184, 125258, 0),
1449    base_range(125259, 125279, 0),
1450    base_range(126464, 126719, 1),
1451    base_range(131072, 173791, 90),
1452    base_range(173824, 191471, 90),
1453    base_range(194560, 195103, 90),
1454];
1455