Skip to main content

unicode_blocks/
unicode_blocks.rs

1// The dataset is from https://www.unicode.org/Public/UNIDATA/Blocks.txt
2
3use crate::UnicodeBlock;
4
5pub const VERSION: &str = "17.0.0";
6pub const BASIC_LATIN: UnicodeBlock = UnicodeBlock {
7    name: "Basic Latin", start: 0, end: 127
8};
9pub const LATIN_1_SUPPLEMENT: UnicodeBlock =
10    UnicodeBlock {
11        name: "Latin-1 Supplement", start: 128, end: 255
12    };
13pub const LATIN_EXTENDED_A: UnicodeBlock =
14    UnicodeBlock {
15        name: "Latin Extended-A", start: 256, end: 383
16    };
17pub const LATIN_EXTENDED_B: UnicodeBlock =
18    UnicodeBlock {
19        name: "Latin Extended-B", start: 384, end: 591
20    };
21pub const IPA_EXTENSIONS: UnicodeBlock =
22    UnicodeBlock {
23        name: "IPA Extensions", start: 592, end: 687
24    };
25pub const SPACING_MODIFIER_LETTERS: UnicodeBlock =
26    UnicodeBlock {
27        name: "Spacing Modifier Letters", start: 688, end: 767
28    };
29pub const COMBINING_DIACRITICAL_MARKS: UnicodeBlock =
30    UnicodeBlock {
31        name: "Combining Diacritical Marks", start: 768, end: 879
32    };
33pub const GREEK_AND_COPTIC: UnicodeBlock =
34    UnicodeBlock {
35        name: "Greek and Coptic", start: 880, end: 1023
36    };
37pub const CYRILLIC: UnicodeBlock = UnicodeBlock {
38    name: "Cyrillic", start: 1024, end: 1279
39};
40pub const CYRILLIC_SUPPLEMENT: UnicodeBlock =
41    UnicodeBlock {
42        name: "Cyrillic Supplement", start: 1280, end: 1327
43    };
44pub const ARMENIAN: UnicodeBlock = UnicodeBlock {
45    name: "Armenian", start: 1328, end: 1423
46};
47pub const HEBREW: UnicodeBlock = UnicodeBlock {
48    name: "Hebrew", start: 1424, end: 1535
49};
50pub const ARABIC: UnicodeBlock = UnicodeBlock {
51    name: "Arabic", start: 1536, end: 1791
52};
53pub const SYRIAC: UnicodeBlock = UnicodeBlock {
54    name: "Syriac", start: 1792, end: 1871
55};
56pub const ARABIC_SUPPLEMENT: UnicodeBlock =
57    UnicodeBlock {
58        name: "Arabic Supplement", start: 1872, end: 1919
59    };
60pub const THAANA: UnicodeBlock = UnicodeBlock {
61    name: "Thaana", start: 1920, end: 1983
62};
63pub const NKO: UnicodeBlock = UnicodeBlock {
64    name: "NKo", start: 1984, end: 2047
65};
66pub const SAMARITAN: UnicodeBlock = UnicodeBlock {
67    name: "Samaritan", start: 2048, end: 2111
68};
69pub const MANDAIC: UnicodeBlock = UnicodeBlock {
70    name: "Mandaic", start: 2112, end: 2143
71};
72pub const SYRIAC_SUPPLEMENT: UnicodeBlock =
73    UnicodeBlock {
74        name: "Syriac Supplement", start: 2144, end: 2159
75    };
76pub const ARABIC_EXTENDED_B: UnicodeBlock =
77    UnicodeBlock {
78        name: "Arabic Extended-B", start: 2160, end: 2207
79    };
80pub const ARABIC_EXTENDED_A: UnicodeBlock =
81    UnicodeBlock {
82        name: "Arabic Extended-A", start: 2208, end: 2303
83    };
84pub const DEVANAGARI: UnicodeBlock = UnicodeBlock {
85    name: "Devanagari", start: 2304, end: 2431
86};
87pub const BENGALI: UnicodeBlock = UnicodeBlock {
88    name: "Bengali", start: 2432, end: 2559
89};
90pub const GURMUKHI: UnicodeBlock = UnicodeBlock {
91    name: "Gurmukhi", start: 2560, end: 2687
92};
93pub const GUJARATI: UnicodeBlock = UnicodeBlock {
94    name: "Gujarati", start: 2688, end: 2815
95};
96pub const ORIYA: UnicodeBlock = UnicodeBlock {
97    name: "Oriya", start: 2816, end: 2943
98};
99pub const TAMIL: UnicodeBlock = UnicodeBlock {
100    name: "Tamil", start: 2944, end: 3071
101};
102pub const TELUGU: UnicodeBlock = UnicodeBlock {
103    name: "Telugu", start: 3072, end: 3199
104};
105pub const KANNADA: UnicodeBlock = UnicodeBlock {
106    name: "Kannada", start: 3200, end: 3327
107};
108pub const MALAYALAM: UnicodeBlock = UnicodeBlock {
109    name: "Malayalam", start: 3328, end: 3455
110};
111pub const SINHALA: UnicodeBlock = UnicodeBlock {
112    name: "Sinhala", start: 3456, end: 3583
113};
114pub const THAI: UnicodeBlock = UnicodeBlock {
115    name: "Thai", start: 3584, end: 3711
116};
117pub const LAO: UnicodeBlock = UnicodeBlock {
118    name: "Lao", start: 3712, end: 3839
119};
120pub const TIBETAN: UnicodeBlock = UnicodeBlock {
121    name: "Tibetan", start: 3840, end: 4095
122};
123pub const MYANMAR: UnicodeBlock = UnicodeBlock {
124    name: "Myanmar", start: 4096, end: 4255
125};
126pub const GEORGIAN: UnicodeBlock = UnicodeBlock {
127    name: "Georgian", start: 4256, end: 4351
128};
129pub const HANGUL_JAMO: UnicodeBlock =
130    UnicodeBlock {
131        name: "Hangul Jamo", start: 4352, end: 4607
132    };
133pub const ETHIOPIC: UnicodeBlock = UnicodeBlock {
134    name: "Ethiopic", start: 4608, end: 4991
135};
136pub const ETHIOPIC_SUPPLEMENT: UnicodeBlock =
137    UnicodeBlock {
138        name: "Ethiopic Supplement", start: 4992, end: 5023
139    };
140pub const CHEROKEE: UnicodeBlock = UnicodeBlock {
141    name: "Cherokee", start: 5024, end: 5119
142};
143pub const UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS: UnicodeBlock =
144    UnicodeBlock {
145        name: "Unified Canadian Aboriginal Syllabics", start: 5120, end: 5759
146    };
147pub const OGHAM: UnicodeBlock = UnicodeBlock {
148    name: "Ogham", start: 5760, end: 5791
149};
150pub const RUNIC: UnicodeBlock = UnicodeBlock {
151    name: "Runic", start: 5792, end: 5887
152};
153pub const TAGALOG: UnicodeBlock = UnicodeBlock {
154    name: "Tagalog", start: 5888, end: 5919
155};
156pub const HANUNOO: UnicodeBlock = UnicodeBlock {
157    name: "Hanunoo", start: 5920, end: 5951
158};
159pub const BUHID: UnicodeBlock = UnicodeBlock {
160    name: "Buhid", start: 5952, end: 5983
161};
162pub const TAGBANWA: UnicodeBlock = UnicodeBlock {
163    name: "Tagbanwa", start: 5984, end: 6015
164};
165pub const KHMER: UnicodeBlock = UnicodeBlock {
166    name: "Khmer", start: 6016, end: 6143
167};
168pub const MONGOLIAN: UnicodeBlock = UnicodeBlock {
169    name: "Mongolian", start: 6144, end: 6319
170};
171pub const UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED: UnicodeBlock = UnicodeBlock {
172    name:  "Unified Canadian Aboriginal Syllabics Extended",
173    start: 6320,
174    end:   6399,
175};
176pub const LIMBU: UnicodeBlock = UnicodeBlock {
177    name: "Limbu", start: 6400, end: 6479
178};
179pub const TAI_LE: UnicodeBlock = UnicodeBlock {
180    name: "Tai Le", start: 6480, end: 6527
181};
182pub const NEW_TAI_LUE: UnicodeBlock =
183    UnicodeBlock {
184        name: "New Tai Lue", start: 6528, end: 6623
185    };
186pub const KHMER_SYMBOLS: UnicodeBlock =
187    UnicodeBlock {
188        name: "Khmer Symbols", start: 6624, end: 6655
189    };
190pub const BUGINESE: UnicodeBlock = UnicodeBlock {
191    name: "Buginese", start: 6656, end: 6687
192};
193pub const TAI_THAM: UnicodeBlock = UnicodeBlock {
194    name: "Tai Tham", start: 6688, end: 6831
195};
196pub const COMBINING_DIACRITICAL_MARKS_EXTENDED: UnicodeBlock =
197    UnicodeBlock {
198        name: "Combining Diacritical Marks Extended", start: 6832, end: 6911
199    };
200pub const BALINESE: UnicodeBlock = UnicodeBlock {
201    name: "Balinese", start: 6912, end: 7039
202};
203pub const SUNDANESE: UnicodeBlock = UnicodeBlock {
204    name: "Sundanese", start: 7040, end: 7103
205};
206pub const BATAK: UnicodeBlock = UnicodeBlock {
207    name: "Batak", start: 7104, end: 7167
208};
209pub const LEPCHA: UnicodeBlock = UnicodeBlock {
210    name: "Lepcha", start: 7168, end: 7247
211};
212pub const OL_CHIKI: UnicodeBlock = UnicodeBlock {
213    name: "Ol Chiki", start: 7248, end: 7295
214};
215pub const CYRILLIC_EXTENDED_C: UnicodeBlock =
216    UnicodeBlock {
217        name: "Cyrillic Extended-C", start: 7296, end: 7311
218    };
219pub const GEORGIAN_EXTENDED: UnicodeBlock =
220    UnicodeBlock {
221        name: "Georgian Extended", start: 7312, end: 7359
222    };
223pub const SUNDANESE_SUPPLEMENT: UnicodeBlock =
224    UnicodeBlock {
225        name: "Sundanese Supplement", start: 7360, end: 7375
226    };
227pub const VEDIC_EXTENSIONS: UnicodeBlock =
228    UnicodeBlock {
229        name: "Vedic Extensions", start: 7376, end: 7423
230    };
231pub const PHONETIC_EXTENSIONS: UnicodeBlock =
232    UnicodeBlock {
233        name: "Phonetic Extensions", start: 7424, end: 7551
234    };
235pub const PHONETIC_EXTENSIONS_SUPPLEMENT: UnicodeBlock =
236    UnicodeBlock {
237        name: "Phonetic Extensions Supplement", start: 7552, end: 7615
238    };
239pub const COMBINING_DIACRITICAL_MARKS_SUPPLEMENT: UnicodeBlock =
240    UnicodeBlock {
241        name: "Combining Diacritical Marks Supplement", start: 7616, end: 7679
242    };
243pub const LATIN_EXTENDED_ADDITIONAL: UnicodeBlock =
244    UnicodeBlock {
245        name: "Latin Extended Additional", start: 7680, end: 7935
246    };
247pub const GREEK_EXTENDED: UnicodeBlock =
248    UnicodeBlock {
249        name: "Greek Extended", start: 7936, end: 8191
250    };
251pub const GENERAL_PUNCTUATION: UnicodeBlock =
252    UnicodeBlock {
253        name: "General Punctuation", start: 8192, end: 8303
254    };
255pub const SUPERSCRIPTS_AND_SUBSCRIPTS: UnicodeBlock =
256    UnicodeBlock {
257        name: "Superscripts and Subscripts", start: 8304, end: 8351
258    };
259pub const CURRENCY_SYMBOLS: UnicodeBlock =
260    UnicodeBlock {
261        name: "Currency Symbols", start: 8352, end: 8399
262    };
263pub const COMBINING_DIACRITICAL_MARKS_FOR_SYMBOLS: UnicodeBlock =
264    UnicodeBlock {
265        name: "Combining Diacritical Marks for Symbols", start: 8400, end: 8447
266    };
267pub const LETTERLIKE_SYMBOLS: UnicodeBlock =
268    UnicodeBlock {
269        name: "Letterlike Symbols", start: 8448, end: 8527
270    };
271pub const NUMBER_FORMS: UnicodeBlock =
272    UnicodeBlock {
273        name: "Number Forms", start: 8528, end: 8591
274    };
275pub const ARROWS: UnicodeBlock = UnicodeBlock {
276    name: "Arrows", start: 8592, end: 8703
277};
278pub const MATHEMATICAL_OPERATORS: UnicodeBlock =
279    UnicodeBlock {
280        name: "Mathematical Operators", start: 8704, end: 8959
281    };
282pub const MISCELLANEOUS_TECHNICAL: UnicodeBlock =
283    UnicodeBlock {
284        name: "Miscellaneous Technical", start: 8960, end: 9215
285    };
286pub const CONTROL_PICTURES: UnicodeBlock =
287    UnicodeBlock {
288        name: "Control Pictures", start: 9216, end: 9279
289    };
290pub const OPTICAL_CHARACTER_RECOGNITION: UnicodeBlock =
291    UnicodeBlock {
292        name: "Optical Character Recognition", start: 9280, end: 9311
293    };
294pub const ENCLOSED_ALPHANUMERICS: UnicodeBlock =
295    UnicodeBlock {
296        name: "Enclosed Alphanumerics", start: 9312, end: 9471
297    };
298pub const BOX_DRAWING: UnicodeBlock =
299    UnicodeBlock {
300        name: "Box Drawing", start: 9472, end: 9599
301    };
302pub const BLOCK_ELEMENTS: UnicodeBlock =
303    UnicodeBlock {
304        name: "Block Elements", start: 9600, end: 9631
305    };
306pub const GEOMETRIC_SHAPES: UnicodeBlock =
307    UnicodeBlock {
308        name: "Geometric Shapes", start: 9632, end: 9727
309    };
310pub const MISCELLANEOUS_SYMBOLS: UnicodeBlock =
311    UnicodeBlock {
312        name: "Miscellaneous Symbols", start: 9728, end: 9983
313    };
314pub const DINGBATS: UnicodeBlock = UnicodeBlock {
315    name: "Dingbats", start: 9984, end: 10175
316};
317pub const MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A: UnicodeBlock =
318    UnicodeBlock {
319        name: "Miscellaneous Mathematical Symbols-A", start: 10176, end: 10223
320    };
321pub const SUPPLEMENTAL_ARROWS_A: UnicodeBlock =
322    UnicodeBlock {
323        name: "Supplemental Arrows-A", start: 10224, end: 10239
324    };
325pub const BRAILLE_PATTERNS: UnicodeBlock =
326    UnicodeBlock {
327        name: "Braille Patterns", start: 10240, end: 10495
328    };
329pub const SUPPLEMENTAL_ARROWS_B: UnicodeBlock =
330    UnicodeBlock {
331        name: "Supplemental Arrows-B", start: 10496, end: 10623
332    };
333pub const MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B: UnicodeBlock =
334    UnicodeBlock {
335        name: "Miscellaneous Mathematical Symbols-B", start: 10624, end: 10751
336    };
337pub const SUPPLEMENTAL_MATHEMATICAL_OPERATORS: UnicodeBlock =
338    UnicodeBlock {
339        name: "Supplemental Mathematical Operators", start: 10752, end: 11007
340    };
341pub const MISCELLANEOUS_SYMBOLS_AND_ARROWS: UnicodeBlock =
342    UnicodeBlock {
343        name: "Miscellaneous Symbols and Arrows", start: 11008, end: 11263
344    };
345pub const GLAGOLITIC: UnicodeBlock =
346    UnicodeBlock {
347        name: "Glagolitic", start: 11264, end: 11359
348    };
349pub const LATIN_EXTENDED_C: UnicodeBlock =
350    UnicodeBlock {
351        name: "Latin Extended-C", start: 11360, end: 11391
352    };
353pub const COPTIC: UnicodeBlock = UnicodeBlock {
354    name: "Coptic", start: 11392, end: 11519
355};
356pub const GEORGIAN_SUPPLEMENT: UnicodeBlock =
357    UnicodeBlock {
358        name: "Georgian Supplement", start: 11520, end: 11567
359    };
360pub const TIFINAGH: UnicodeBlock = UnicodeBlock {
361    name: "Tifinagh", start: 11568, end: 11647
362};
363pub const ETHIOPIC_EXTENDED: UnicodeBlock =
364    UnicodeBlock {
365        name: "Ethiopic Extended", start: 11648, end: 11743
366    };
367pub const CYRILLIC_EXTENDED_A: UnicodeBlock =
368    UnicodeBlock {
369        name: "Cyrillic Extended-A", start: 11744, end: 11775
370    };
371pub const SUPPLEMENTAL_PUNCTUATION: UnicodeBlock =
372    UnicodeBlock {
373        name: "Supplemental Punctuation", start: 11776, end: 11903
374    };
375pub const CJK_RADICALS_SUPPLEMENT: UnicodeBlock =
376    UnicodeBlock {
377        name: "CJK Radicals Supplement", start: 11904, end: 12031
378    };
379pub const KANGXI_RADICALS: UnicodeBlock =
380    UnicodeBlock {
381        name: "Kangxi Radicals", start: 12032, end: 12255
382    };
383pub const IDEOGRAPHIC_DESCRIPTION_CHARACTERS: UnicodeBlock =
384    UnicodeBlock {
385        name: "Ideographic Description Characters", start: 12272, end: 12287
386    };
387pub const CJK_SYMBOLS_AND_PUNCTUATION: UnicodeBlock =
388    UnicodeBlock {
389        name: "CJK Symbols and Punctuation", start: 12288, end: 12351
390    };
391pub const HIRAGANA: UnicodeBlock = UnicodeBlock {
392    name: "Hiragana", start: 12352, end: 12447
393};
394pub const KATAKANA: UnicodeBlock = UnicodeBlock {
395    name: "Katakana", start: 12448, end: 12543
396};
397pub const BOPOMOFO: UnicodeBlock = UnicodeBlock {
398    name: "Bopomofo", start: 12544, end: 12591
399};
400pub const HANGUL_COMPATIBILITY_JAMO: UnicodeBlock =
401    UnicodeBlock {
402        name: "Hangul Compatibility Jamo", start: 12592, end: 12687
403    };
404pub const KANBUN: UnicodeBlock = UnicodeBlock {
405    name: "Kanbun", start: 12688, end: 12703
406};
407pub const BOPOMOFO_EXTENDED: UnicodeBlock =
408    UnicodeBlock {
409        name: "Bopomofo Extended", start: 12704, end: 12735
410    };
411pub const CJK_STROKES: UnicodeBlock =
412    UnicodeBlock {
413        name: "CJK Strokes", start: 12736, end: 12783
414    };
415pub const KATAKANA_PHONETIC_EXTENSIONS: UnicodeBlock =
416    UnicodeBlock {
417        name: "Katakana Phonetic Extensions", start: 12784, end: 12799
418    };
419pub const ENCLOSED_CJK_LETTERS_AND_MONTHS: UnicodeBlock =
420    UnicodeBlock {
421        name: "Enclosed CJK Letters and Months", start: 12800, end: 13055
422    };
423pub const CJK_COMPATIBILITY: UnicodeBlock =
424    UnicodeBlock {
425        name: "CJK Compatibility", start: 13056, end: 13311
426    };
427pub const CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A: UnicodeBlock =
428    UnicodeBlock {
429        name: "CJK Unified Ideographs Extension A", start: 13312, end: 19903
430    };
431pub const YIJING_HEXAGRAM_SYMBOLS: UnicodeBlock =
432    UnicodeBlock {
433        name: "Yijing Hexagram Symbols", start: 19904, end: 19967
434    };
435pub const CJK_UNIFIED_IDEOGRAPHS: UnicodeBlock =
436    UnicodeBlock {
437        name: "CJK Unified Ideographs", start: 19968, end: 40959
438    };
439pub const YI_SYLLABLES: UnicodeBlock =
440    UnicodeBlock {
441        name: "Yi Syllables", start: 40960, end: 42127
442    };
443pub const YI_RADICALS: UnicodeBlock =
444    UnicodeBlock {
445        name: "Yi Radicals", start: 42128, end: 42191
446    };
447pub const LISU: UnicodeBlock = UnicodeBlock {
448    name: "Lisu", start: 42192, end: 42239
449};
450pub const VAI: UnicodeBlock = UnicodeBlock {
451    name: "Vai", start: 42240, end: 42559
452};
453pub const CYRILLIC_EXTENDED_B: UnicodeBlock =
454    UnicodeBlock {
455        name: "Cyrillic Extended-B", start: 42560, end: 42655
456    };
457pub const BAMUM: UnicodeBlock = UnicodeBlock {
458    name: "Bamum", start: 42656, end: 42751
459};
460pub const MODIFIER_TONE_LETTERS: UnicodeBlock =
461    UnicodeBlock {
462        name: "Modifier Tone Letters", start: 42752, end: 42783
463    };
464pub const LATIN_EXTENDED_D: UnicodeBlock =
465    UnicodeBlock {
466        name: "Latin Extended-D", start: 42784, end: 43007
467    };
468pub const SYLOTI_NAGRI: UnicodeBlock =
469    UnicodeBlock {
470        name: "Syloti Nagri", start: 43008, end: 43055
471    };
472pub const COMMON_INDIC_NUMBER_FORMS: UnicodeBlock =
473    UnicodeBlock {
474        name: "Common Indic Number Forms", start: 43056, end: 43071
475    };
476pub const PHAGS_PA: UnicodeBlock = UnicodeBlock {
477    name: "Phags-pa", start: 43072, end: 43135
478};
479pub const SAURASHTRA: UnicodeBlock =
480    UnicodeBlock {
481        name: "Saurashtra", start: 43136, end: 43231
482    };
483pub const DEVANAGARI_EXTENDED: UnicodeBlock =
484    UnicodeBlock {
485        name: "Devanagari Extended", start: 43232, end: 43263
486    };
487pub const KAYAH_LI: UnicodeBlock = UnicodeBlock {
488    name: "Kayah Li", start: 43264, end: 43311
489};
490pub const REJANG: UnicodeBlock = UnicodeBlock {
491    name: "Rejang", start: 43312, end: 43359
492};
493pub const HANGUL_JAMO_EXTENDED_A: UnicodeBlock =
494    UnicodeBlock {
495        name: "Hangul Jamo Extended-A", start: 43360, end: 43391
496    };
497pub const JAVANESE: UnicodeBlock = UnicodeBlock {
498    name: "Javanese", start: 43392, end: 43487
499};
500pub const MYANMAR_EXTENDED_B: UnicodeBlock =
501    UnicodeBlock {
502        name: "Myanmar Extended-B", start: 43488, end: 43519
503    };
504pub const CHAM: UnicodeBlock = UnicodeBlock {
505    name: "Cham", start: 43520, end: 43615
506};
507pub const MYANMAR_EXTENDED_A: UnicodeBlock =
508    UnicodeBlock {
509        name: "Myanmar Extended-A", start: 43616, end: 43647
510    };
511pub const TAI_VIET: UnicodeBlock = UnicodeBlock {
512    name: "Tai Viet", start: 43648, end: 43743
513};
514pub const MEETEI_MAYEK_EXTENSIONS: UnicodeBlock =
515    UnicodeBlock {
516        name: "Meetei Mayek Extensions", start: 43744, end: 43775
517    };
518pub const ETHIOPIC_EXTENDED_A: UnicodeBlock =
519    UnicodeBlock {
520        name: "Ethiopic Extended-A", start: 43776, end: 43823
521    };
522pub const LATIN_EXTENDED_E: UnicodeBlock =
523    UnicodeBlock {
524        name: "Latin Extended-E", start: 43824, end: 43887
525    };
526pub const CHEROKEE_SUPPLEMENT: UnicodeBlock =
527    UnicodeBlock {
528        name: "Cherokee Supplement", start: 43888, end: 43967
529    };
530pub const MEETEI_MAYEK: UnicodeBlock =
531    UnicodeBlock {
532        name: "Meetei Mayek", start: 43968, end: 44031
533    };
534pub const HANGUL_SYLLABLES: UnicodeBlock =
535    UnicodeBlock {
536        name: "Hangul Syllables", start: 44032, end: 55215
537    };
538pub const HANGUL_JAMO_EXTENDED_B: UnicodeBlock =
539    UnicodeBlock {
540        name: "Hangul Jamo Extended-B", start: 55216, end: 55295
541    };
542pub const HIGH_SURROGATES: UnicodeBlock =
543    UnicodeBlock {
544        name: "High Surrogates", start: 55296, end: 56191
545    };
546pub const HIGH_PRIVATE_USE_SURROGATES: UnicodeBlock =
547    UnicodeBlock {
548        name: "High Private Use Surrogates", start: 56192, end: 56319
549    };
550pub const LOW_SURROGATES: UnicodeBlock =
551    UnicodeBlock {
552        name: "Low Surrogates", start: 56320, end: 57343
553    };
554pub const PRIVATE_USE_AREA: UnicodeBlock =
555    UnicodeBlock {
556        name: "Private Use Area", start: 57344, end: 63743
557    };
558pub const CJK_COMPATIBILITY_IDEOGRAPHS: UnicodeBlock =
559    UnicodeBlock {
560        name: "CJK Compatibility Ideographs", start: 63744, end: 64255
561    };
562pub const ALPHABETIC_PRESENTATION_FORMS: UnicodeBlock =
563    UnicodeBlock {
564        name: "Alphabetic Presentation Forms", start: 64256, end: 64335
565    };
566pub const ARABIC_PRESENTATION_FORMS_A: UnicodeBlock =
567    UnicodeBlock {
568        name: "Arabic Presentation Forms-A", start: 64336, end: 65023
569    };
570pub const VARIATION_SELECTORS: UnicodeBlock =
571    UnicodeBlock {
572        name: "Variation Selectors", start: 65024, end: 65039
573    };
574pub const VERTICAL_FORMS: UnicodeBlock =
575    UnicodeBlock {
576        name: "Vertical Forms", start: 65040, end: 65055
577    };
578pub const COMBINING_HALF_MARKS: UnicodeBlock =
579    UnicodeBlock {
580        name: "Combining Half Marks", start: 65056, end: 65071
581    };
582pub const CJK_COMPATIBILITY_FORMS: UnicodeBlock =
583    UnicodeBlock {
584        name: "CJK Compatibility Forms", start: 65072, end: 65103
585    };
586pub const SMALL_FORM_VARIANTS: UnicodeBlock =
587    UnicodeBlock {
588        name: "Small Form Variants", start: 65104, end: 65135
589    };
590pub const ARABIC_PRESENTATION_FORMS_B: UnicodeBlock =
591    UnicodeBlock {
592        name: "Arabic Presentation Forms-B", start: 65136, end: 65279
593    };
594pub const HALFWIDTH_AND_FULLWIDTH_FORMS: UnicodeBlock =
595    UnicodeBlock {
596        name: "Halfwidth and Fullwidth Forms", start: 65280, end: 65519
597    };
598pub const SPECIALS: UnicodeBlock = UnicodeBlock {
599    name: "Specials", start: 65520, end: 65535
600};
601pub const LINEAR_B_SYLLABARY: UnicodeBlock =
602    UnicodeBlock {
603        name: "Linear B Syllabary", start: 65536, end: 65663
604    };
605pub const LINEAR_B_IDEOGRAMS: UnicodeBlock =
606    UnicodeBlock {
607        name: "Linear B Ideograms", start: 65664, end: 65791
608    };
609pub const AEGEAN_NUMBERS: UnicodeBlock =
610    UnicodeBlock {
611        name: "Aegean Numbers", start: 65792, end: 65855
612    };
613pub const ANCIENT_GREEK_NUMBERS: UnicodeBlock =
614    UnicodeBlock {
615        name: "Ancient Greek Numbers", start: 65856, end: 65935
616    };
617pub const ANCIENT_SYMBOLS: UnicodeBlock =
618    UnicodeBlock {
619        name: "Ancient Symbols", start: 65936, end: 65999
620    };
621pub const PHAISTOS_DISC: UnicodeBlock =
622    UnicodeBlock {
623        name: "Phaistos Disc", start: 66000, end: 66047
624    };
625pub const LYCIAN: UnicodeBlock = UnicodeBlock {
626    name: "Lycian", start: 66176, end: 66207
627};
628pub const CARIAN: UnicodeBlock = UnicodeBlock {
629    name: "Carian", start: 66208, end: 66271
630};
631pub const COPTIC_EPACT_NUMBERS: UnicodeBlock =
632    UnicodeBlock {
633        name: "Coptic Epact Numbers", start: 66272, end: 66303
634    };
635pub const OLD_ITALIC: UnicodeBlock =
636    UnicodeBlock {
637        name: "Old Italic", start: 66304, end: 66351
638    };
639pub const GOTHIC: UnicodeBlock = UnicodeBlock {
640    name: "Gothic", start: 66352, end: 66383
641};
642pub const OLD_PERMIC: UnicodeBlock =
643    UnicodeBlock {
644        name: "Old Permic", start: 66384, end: 66431
645    };
646pub const UGARITIC: UnicodeBlock = UnicodeBlock {
647    name: "Ugaritic", start: 66432, end: 66463
648};
649pub const OLD_PERSIAN: UnicodeBlock =
650    UnicodeBlock {
651        name: "Old Persian", start: 66464, end: 66527
652    };
653pub const DESERET: UnicodeBlock = UnicodeBlock {
654    name: "Deseret", start: 66560, end: 66639
655};
656pub const SHAVIAN: UnicodeBlock = UnicodeBlock {
657    name: "Shavian", start: 66640, end: 66687
658};
659pub const OSMANYA: UnicodeBlock = UnicodeBlock {
660    name: "Osmanya", start: 66688, end: 66735
661};
662pub const OSAGE: UnicodeBlock = UnicodeBlock {
663    name: "Osage", start: 66736, end: 66815
664};
665pub const ELBASAN: UnicodeBlock = UnicodeBlock {
666    name: "Elbasan", start: 66816, end: 66863
667};
668pub const CAUCASIAN_ALBANIAN: UnicodeBlock =
669    UnicodeBlock {
670        name: "Caucasian Albanian", start: 66864, end: 66927
671    };
672pub const VITHKUQI: UnicodeBlock = UnicodeBlock {
673    name: "Vithkuqi", start: 66928, end: 67007
674};
675pub const TODHRI: UnicodeBlock = UnicodeBlock {
676    name: "Todhri", start: 67008, end: 67071
677};
678pub const LINEAR_A: UnicodeBlock = UnicodeBlock {
679    name: "Linear A", start: 67072, end: 67455
680};
681pub const LATIN_EXTENDED_F: UnicodeBlock =
682    UnicodeBlock {
683        name: "Latin Extended-F", start: 67456, end: 67519
684    };
685pub const CYPRIOT_SYLLABARY: UnicodeBlock =
686    UnicodeBlock {
687        name: "Cypriot Syllabary", start: 67584, end: 67647
688    };
689pub const IMPERIAL_ARAMAIC: UnicodeBlock =
690    UnicodeBlock {
691        name: "Imperial Aramaic", start: 67648, end: 67679
692    };
693pub const PALMYRENE: UnicodeBlock = UnicodeBlock {
694    name: "Palmyrene", start: 67680, end: 67711
695};
696pub const NABATAEAN: UnicodeBlock = UnicodeBlock {
697    name: "Nabataean", start: 67712, end: 67759
698};
699pub const HATRAN: UnicodeBlock = UnicodeBlock {
700    name: "Hatran", start: 67808, end: 67839
701};
702pub const PHOENICIAN: UnicodeBlock =
703    UnicodeBlock {
704        name: "Phoenician", start: 67840, end: 67871
705    };
706pub const LYDIAN: UnicodeBlock = UnicodeBlock {
707    name: "Lydian", start: 67872, end: 67903
708};
709pub const SIDETIC: UnicodeBlock = UnicodeBlock {
710    name: "Sidetic", start: 67904, end: 67935
711};
712pub const MEROITIC_HIEROGLYPHS: UnicodeBlock =
713    UnicodeBlock {
714        name: "Meroitic Hieroglyphs", start: 67968, end: 67999
715    };
716pub const MEROITIC_CURSIVE: UnicodeBlock =
717    UnicodeBlock {
718        name: "Meroitic Cursive", start: 68000, end: 68095
719    };
720pub const KHAROSHTHI: UnicodeBlock =
721    UnicodeBlock {
722        name: "Kharoshthi", start: 68096, end: 68191
723    };
724pub const OLD_SOUTH_ARABIAN: UnicodeBlock =
725    UnicodeBlock {
726        name: "Old South Arabian", start: 68192, end: 68223
727    };
728pub const OLD_NORTH_ARABIAN: UnicodeBlock =
729    UnicodeBlock {
730        name: "Old North Arabian", start: 68224, end: 68255
731    };
732pub const MANICHAEAN: UnicodeBlock =
733    UnicodeBlock {
734        name: "Manichaean", start: 68288, end: 68351
735    };
736pub const AVESTAN: UnicodeBlock = UnicodeBlock {
737    name: "Avestan", start: 68352, end: 68415
738};
739pub const INSCRIPTIONAL_PARTHIAN: UnicodeBlock =
740    UnicodeBlock {
741        name: "Inscriptional Parthian", start: 68416, end: 68447
742    };
743pub const INSCRIPTIONAL_PAHLAVI: UnicodeBlock =
744    UnicodeBlock {
745        name: "Inscriptional Pahlavi", start: 68448, end: 68479
746    };
747pub const PSALTER_PAHLAVI: UnicodeBlock =
748    UnicodeBlock {
749        name: "Psalter Pahlavi", start: 68480, end: 68527
750    };
751pub const OLD_TURKIC: UnicodeBlock =
752    UnicodeBlock {
753        name: "Old Turkic", start: 68608, end: 68687
754    };
755pub const OLD_HUNGARIAN: UnicodeBlock =
756    UnicodeBlock {
757        name: "Old Hungarian", start: 68736, end: 68863
758    };
759pub const HANIFI_ROHINGYA: UnicodeBlock =
760    UnicodeBlock {
761        name: "Hanifi Rohingya", start: 68864, end: 68927
762    };
763pub const GARAY: UnicodeBlock = UnicodeBlock {
764    name: "Garay", start: 68928, end: 69007
765};
766pub const RUMI_NUMERAL_SYMBOLS: UnicodeBlock =
767    UnicodeBlock {
768        name: "Rumi Numeral Symbols", start: 69216, end: 69247
769    };
770pub const YEZIDI: UnicodeBlock = UnicodeBlock {
771    name: "Yezidi", start: 69248, end: 69311
772};
773pub const ARABIC_EXTENDED_C: UnicodeBlock =
774    UnicodeBlock {
775        name: "Arabic Extended-C", start: 69312, end: 69375
776    };
777pub const OLD_SOGDIAN: UnicodeBlock =
778    UnicodeBlock {
779        name: "Old Sogdian", start: 69376, end: 69423
780    };
781pub const SOGDIAN: UnicodeBlock = UnicodeBlock {
782    name: "Sogdian", start: 69424, end: 69487
783};
784pub const OLD_UYGHUR: UnicodeBlock =
785    UnicodeBlock {
786        name: "Old Uyghur", start: 69488, end: 69551
787    };
788pub const CHORASMIAN: UnicodeBlock =
789    UnicodeBlock {
790        name: "Chorasmian", start: 69552, end: 69599
791    };
792pub const ELYMAIC: UnicodeBlock = UnicodeBlock {
793    name: "Elymaic", start: 69600, end: 69631
794};
795pub const BRAHMI: UnicodeBlock = UnicodeBlock {
796    name: "Brahmi", start: 69632, end: 69759
797};
798pub const KAITHI: UnicodeBlock = UnicodeBlock {
799    name: "Kaithi", start: 69760, end: 69839
800};
801pub const SORA_SOMPENG: UnicodeBlock =
802    UnicodeBlock {
803        name: "Sora Sompeng", start: 69840, end: 69887
804    };
805pub const CHAKMA: UnicodeBlock = UnicodeBlock {
806    name: "Chakma", start: 69888, end: 69967
807};
808pub const MAHAJANI: UnicodeBlock = UnicodeBlock {
809    name: "Mahajani", start: 69968, end: 70015
810};
811pub const SHARADA: UnicodeBlock = UnicodeBlock {
812    name: "Sharada", start: 70016, end: 70111
813};
814pub const SINHALA_ARCHAIC_NUMBERS: UnicodeBlock =
815    UnicodeBlock {
816        name: "Sinhala Archaic Numbers", start: 70112, end: 70143
817    };
818pub const KHOJKI: UnicodeBlock = UnicodeBlock {
819    name: "Khojki", start: 70144, end: 70223
820};
821pub const MULTANI: UnicodeBlock = UnicodeBlock {
822    name: "Multani", start: 70272, end: 70319
823};
824pub const KHUDAWADI: UnicodeBlock = UnicodeBlock {
825    name: "Khudawadi", start: 70320, end: 70399
826};
827pub const GRANTHA: UnicodeBlock = UnicodeBlock {
828    name: "Grantha", start: 70400, end: 70527
829};
830pub const TULU_TIGALARI: UnicodeBlock =
831    UnicodeBlock {
832        name: "Tulu-Tigalari", start: 70528, end: 70655
833    };
834pub const NEWA: UnicodeBlock = UnicodeBlock {
835    name: "Newa", start: 70656, end: 70783
836};
837pub const TIRHUTA: UnicodeBlock = UnicodeBlock {
838    name: "Tirhuta", start: 70784, end: 70879
839};
840pub const SIDDHAM: UnicodeBlock = UnicodeBlock {
841    name: "Siddham", start: 71040, end: 71167
842};
843pub const MODI: UnicodeBlock = UnicodeBlock {
844    name: "Modi", start: 71168, end: 71263
845};
846pub const MONGOLIAN_SUPPLEMENT: UnicodeBlock =
847    UnicodeBlock {
848        name: "Mongolian Supplement", start: 71264, end: 71295
849    };
850pub const TAKRI: UnicodeBlock = UnicodeBlock {
851    name: "Takri", start: 71296, end: 71375
852};
853pub const MYANMAR_EXTENDED_C: UnicodeBlock =
854    UnicodeBlock {
855        name: "Myanmar Extended-C", start: 71376, end: 71423
856    };
857pub const AHOM: UnicodeBlock = UnicodeBlock {
858    name: "Ahom", start: 71424, end: 71503
859};
860pub const DOGRA: UnicodeBlock = UnicodeBlock {
861    name: "Dogra", start: 71680, end: 71759
862};
863pub const WARANG_CITI: UnicodeBlock =
864    UnicodeBlock {
865        name: "Warang Citi", start: 71840, end: 71935
866    };
867pub const DIVES_AKURU: UnicodeBlock =
868    UnicodeBlock {
869        name: "Dives Akuru", start: 71936, end: 72031
870    };
871pub const NANDINAGARI: UnicodeBlock =
872    UnicodeBlock {
873        name: "Nandinagari", start: 72096, end: 72191
874    };
875pub const ZANABAZAR_SQUARE: UnicodeBlock =
876    UnicodeBlock {
877        name: "Zanabazar Square", start: 72192, end: 72271
878    };
879pub const SOYOMBO: UnicodeBlock = UnicodeBlock {
880    name: "Soyombo", start: 72272, end: 72367
881};
882pub const UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED_A: UnicodeBlock = UnicodeBlock {
883    name:  "Unified Canadian Aboriginal Syllabics Extended-A",
884    start: 72368,
885    end:   72383,
886};
887pub const PAU_CIN_HAU: UnicodeBlock =
888    UnicodeBlock {
889        name: "Pau Cin Hau", start: 72384, end: 72447
890    };
891pub const DEVANAGARI_EXTENDED_A: UnicodeBlock =
892    UnicodeBlock {
893        name: "Devanagari Extended-A", start: 72448, end: 72543
894    };
895pub const SHARADA_SUPPLEMENT: UnicodeBlock =
896    UnicodeBlock {
897        name: "Sharada Supplement", start: 72544, end: 72575
898    };
899pub const SUNUWAR: UnicodeBlock = UnicodeBlock {
900    name: "Sunuwar", start: 72640, end: 72703
901};
902pub const BHAIKSUKI: UnicodeBlock = UnicodeBlock {
903    name: "Bhaiksuki", start: 72704, end: 72815
904};
905pub const MARCHEN: UnicodeBlock = UnicodeBlock {
906    name: "Marchen", start: 72816, end: 72895
907};
908pub const MASARAM_GONDI: UnicodeBlock =
909    UnicodeBlock {
910        name: "Masaram Gondi", start: 72960, end: 73055
911    };
912pub const GUNJALA_GONDI: UnicodeBlock =
913    UnicodeBlock {
914        name: "Gunjala Gondi", start: 73056, end: 73135
915    };
916pub const TOLONG_SIKI: UnicodeBlock =
917    UnicodeBlock {
918        name: "Tolong Siki", start: 73136, end: 73199
919    };
920pub const MAKASAR: UnicodeBlock = UnicodeBlock {
921    name: "Makasar", start: 73440, end: 73471
922};
923pub const KAWI: UnicodeBlock = UnicodeBlock {
924    name: "Kawi", start: 73472, end: 73567
925};
926pub const LISU_SUPPLEMENT: UnicodeBlock =
927    UnicodeBlock {
928        name: "Lisu Supplement", start: 73648, end: 73663
929    };
930pub const TAMIL_SUPPLEMENT: UnicodeBlock =
931    UnicodeBlock {
932        name: "Tamil Supplement", start: 73664, end: 73727
933    };
934pub const CUNEIFORM: UnicodeBlock = UnicodeBlock {
935    name: "Cuneiform", start: 73728, end: 74751
936};
937pub const CUNEIFORM_NUMBERS_AND_PUNCTUATION: UnicodeBlock =
938    UnicodeBlock {
939        name: "Cuneiform Numbers and Punctuation", start: 74752, end: 74879
940    };
941pub const EARLY_DYNASTIC_CUNEIFORM: UnicodeBlock =
942    UnicodeBlock {
943        name: "Early Dynastic Cuneiform", start: 74880, end: 75087
944    };
945pub const CYPRO_MINOAN: UnicodeBlock =
946    UnicodeBlock {
947        name: "Cypro-Minoan", start: 77712, end: 77823
948    };
949pub const EGYPTIAN_HIEROGLYPHS: UnicodeBlock =
950    UnicodeBlock {
951        name: "Egyptian Hieroglyphs", start: 77824, end: 78895
952    };
953pub const EGYPTIAN_HIEROGLYPH_FORMAT_CONTROLS: UnicodeBlock =
954    UnicodeBlock {
955        name: "Egyptian Hieroglyph Format Controls", start: 78896, end: 78943
956    };
957pub const EGYPTIAN_HIEROGLYPHS_EXTENDED_A: UnicodeBlock =
958    UnicodeBlock {
959        name: "Egyptian Hieroglyphs Extended-A", start: 78944, end: 82943
960    };
961pub const ANATOLIAN_HIEROGLYPHS: UnicodeBlock =
962    UnicodeBlock {
963        name: "Anatolian Hieroglyphs", start: 82944, end: 83583
964    };
965pub const GURUNG_KHEMA: UnicodeBlock =
966    UnicodeBlock {
967        name: "Gurung Khema", start: 90368, end: 90431
968    };
969pub const BAMUM_SUPPLEMENT: UnicodeBlock =
970    UnicodeBlock {
971        name: "Bamum Supplement", start: 92160, end: 92735
972    };
973pub const MRO: UnicodeBlock = UnicodeBlock {
974    name: "Mro", start: 92736, end: 92783
975};
976pub const TANGSA: UnicodeBlock = UnicodeBlock {
977    name: "Tangsa", start: 92784, end: 92879
978};
979pub const BASSA_VAH: UnicodeBlock = UnicodeBlock {
980    name: "Bassa Vah", start: 92880, end: 92927
981};
982pub const PAHAWH_HMONG: UnicodeBlock =
983    UnicodeBlock {
984        name: "Pahawh Hmong", start: 92928, end: 93071
985    };
986pub const KIRAT_RAI: UnicodeBlock = UnicodeBlock {
987    name: "Kirat Rai", start: 93504, end: 93567
988};
989pub const MEDEFAIDRIN: UnicodeBlock =
990    UnicodeBlock {
991        name: "Medefaidrin", start: 93760, end: 93855
992    };
993pub const BERIA_ERFE: UnicodeBlock =
994    UnicodeBlock {
995        name: "Beria Erfe", start: 93856, end: 93919
996    };
997pub const MIAO: UnicodeBlock = UnicodeBlock {
998    name: "Miao", start: 93952, end: 94111
999};
1000pub const IDEOGRAPHIC_SYMBOLS_AND_PUNCTUATION: UnicodeBlock =
1001    UnicodeBlock {
1002        name: "Ideographic Symbols and Punctuation", start: 94176, end: 94207
1003    };
1004pub const TANGUT: UnicodeBlock = UnicodeBlock {
1005    name: "Tangut", start: 94208, end: 100351
1006};
1007pub const TANGUT_COMPONENTS: UnicodeBlock =
1008    UnicodeBlock {
1009        name: "Tangut Components", start: 100352, end: 101119
1010    };
1011pub const KHITAN_SMALL_SCRIPT: UnicodeBlock =
1012    UnicodeBlock {
1013        name: "Khitan Small Script", start: 101120, end: 101631
1014    };
1015pub const TANGUT_SUPPLEMENT: UnicodeBlock =
1016    UnicodeBlock {
1017        name: "Tangut Supplement", start: 101632, end: 101759
1018    };
1019pub const TANGUT_COMPONENTS_SUPPLEMENT: UnicodeBlock =
1020    UnicodeBlock {
1021        name: "Tangut Components Supplement", start: 101760, end: 101887
1022    };
1023pub const KANA_EXTENDED_B: UnicodeBlock =
1024    UnicodeBlock {
1025        name: "Kana Extended-B", start: 110576, end: 110591
1026    };
1027pub const KANA_SUPPLEMENT: UnicodeBlock =
1028    UnicodeBlock {
1029        name: "Kana Supplement", start: 110592, end: 110847
1030    };
1031pub const KANA_EXTENDED_A: UnicodeBlock =
1032    UnicodeBlock {
1033        name: "Kana Extended-A", start: 110848, end: 110895
1034    };
1035pub const SMALL_KANA_EXTENSION: UnicodeBlock =
1036    UnicodeBlock {
1037        name: "Small Kana Extension", start: 110896, end: 110959
1038    };
1039pub const NUSHU: UnicodeBlock = UnicodeBlock {
1040    name: "Nushu", start: 110960, end: 111359
1041};
1042pub const DUPLOYAN: UnicodeBlock = UnicodeBlock {
1043    name: "Duployan", start: 113664, end: 113823
1044};
1045pub const SHORTHAND_FORMAT_CONTROLS: UnicodeBlock =
1046    UnicodeBlock {
1047        name: "Shorthand Format Controls", start: 113824, end: 113839
1048    };
1049pub const SYMBOLS_FOR_LEGACY_COMPUTING_SUPPLEMENT: UnicodeBlock =
1050    UnicodeBlock {
1051        name: "Symbols for Legacy Computing Supplement", start: 117760, end: 118463
1052    };
1053pub const MISCELLANEOUS_SYMBOLS_SUPPLEMENT: UnicodeBlock =
1054    UnicodeBlock {
1055        name: "Miscellaneous Symbols Supplement", start: 118464, end: 118527
1056    };
1057pub const ZNAMENNY_MUSICAL_NOTATION: UnicodeBlock =
1058    UnicodeBlock {
1059        name: "Znamenny Musical Notation", start: 118528, end: 118735
1060    };
1061pub const BYZANTINE_MUSICAL_SYMBOLS: UnicodeBlock =
1062    UnicodeBlock {
1063        name: "Byzantine Musical Symbols", start: 118784, end: 119039
1064    };
1065pub const MUSICAL_SYMBOLS: UnicodeBlock =
1066    UnicodeBlock {
1067        name: "Musical Symbols", start: 119040, end: 119295
1068    };
1069pub const ANCIENT_GREEK_MUSICAL_NOTATION: UnicodeBlock =
1070    UnicodeBlock {
1071        name: "Ancient Greek Musical Notation", start: 119296, end: 119375
1072    };
1073pub const KAKTOVIK_NUMERALS: UnicodeBlock =
1074    UnicodeBlock {
1075        name: "Kaktovik Numerals", start: 119488, end: 119519
1076    };
1077pub const MAYAN_NUMERALS: UnicodeBlock =
1078    UnicodeBlock {
1079        name: "Mayan Numerals", start: 119520, end: 119551
1080    };
1081pub const TAI_XUAN_JING_SYMBOLS: UnicodeBlock =
1082    UnicodeBlock {
1083        name: "Tai Xuan Jing Symbols", start: 119552, end: 119647
1084    };
1085pub const COUNTING_ROD_NUMERALS: UnicodeBlock =
1086    UnicodeBlock {
1087        name: "Counting Rod Numerals", start: 119648, end: 119679
1088    };
1089pub const MATHEMATICAL_ALPHANUMERIC_SYMBOLS: UnicodeBlock =
1090    UnicodeBlock {
1091        name: "Mathematical Alphanumeric Symbols", start: 119808, end: 120831
1092    };
1093pub const SUTTON_SIGNWRITING: UnicodeBlock =
1094    UnicodeBlock {
1095        name: "Sutton SignWriting", start: 120832, end: 121519
1096    };
1097pub const LATIN_EXTENDED_G: UnicodeBlock =
1098    UnicodeBlock {
1099        name: "Latin Extended-G", start: 122624, end: 122879
1100    };
1101pub const GLAGOLITIC_SUPPLEMENT: UnicodeBlock =
1102    UnicodeBlock {
1103        name: "Glagolitic Supplement", start: 122880, end: 122927
1104    };
1105pub const CYRILLIC_EXTENDED_D: UnicodeBlock =
1106    UnicodeBlock {
1107        name: "Cyrillic Extended-D", start: 122928, end: 123023
1108    };
1109pub const NYIAKENG_PUACHUE_HMONG: UnicodeBlock =
1110    UnicodeBlock {
1111        name: "Nyiakeng Puachue Hmong", start: 123136, end: 123215
1112    };
1113pub const TOTO: UnicodeBlock = UnicodeBlock {
1114    name: "Toto", start: 123536, end: 123583
1115};
1116pub const WANCHO: UnicodeBlock = UnicodeBlock {
1117    name: "Wancho", start: 123584, end: 123647
1118};
1119pub const NAG_MUNDARI: UnicodeBlock =
1120    UnicodeBlock {
1121        name: "Nag Mundari", start: 124112, end: 124159
1122    };
1123pub const OL_ONAL: UnicodeBlock = UnicodeBlock {
1124    name: "Ol Onal", start: 124368, end: 124415
1125};
1126pub const TAI_YO: UnicodeBlock = UnicodeBlock {
1127    name: "Tai Yo", start: 124608, end: 124671
1128};
1129pub const ETHIOPIC_EXTENDED_B: UnicodeBlock =
1130    UnicodeBlock {
1131        name: "Ethiopic Extended-B", start: 124896, end: 124927
1132    };
1133pub const MENDE_KIKAKUI: UnicodeBlock =
1134    UnicodeBlock {
1135        name: "Mende Kikakui", start: 124928, end: 125151
1136    };
1137pub const ADLAM: UnicodeBlock = UnicodeBlock {
1138    name: "Adlam", start: 125184, end: 125279
1139};
1140pub const INDIC_SIYAQ_NUMBERS: UnicodeBlock =
1141    UnicodeBlock {
1142        name: "Indic Siyaq Numbers", start: 126064, end: 126143
1143    };
1144pub const OTTOMAN_SIYAQ_NUMBERS: UnicodeBlock =
1145    UnicodeBlock {
1146        name: "Ottoman Siyaq Numbers", start: 126208, end: 126287
1147    };
1148pub const ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS: UnicodeBlock =
1149    UnicodeBlock {
1150        name: "Arabic Mathematical Alphabetic Symbols", start: 126464, end: 126719
1151    };
1152pub const MAHJONG_TILES: UnicodeBlock =
1153    UnicodeBlock {
1154        name: "Mahjong Tiles", start: 126976, end: 127023
1155    };
1156pub const DOMINO_TILES: UnicodeBlock =
1157    UnicodeBlock {
1158        name: "Domino Tiles", start: 127024, end: 127135
1159    };
1160pub const PLAYING_CARDS: UnicodeBlock =
1161    UnicodeBlock {
1162        name: "Playing Cards", start: 127136, end: 127231
1163    };
1164pub const ENCLOSED_ALPHANUMERIC_SUPPLEMENT: UnicodeBlock =
1165    UnicodeBlock {
1166        name: "Enclosed Alphanumeric Supplement", start: 127232, end: 127487
1167    };
1168pub const ENCLOSED_IDEOGRAPHIC_SUPPLEMENT: UnicodeBlock =
1169    UnicodeBlock {
1170        name: "Enclosed Ideographic Supplement", start: 127488, end: 127743
1171    };
1172pub const MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS: UnicodeBlock =
1173    UnicodeBlock {
1174        name: "Miscellaneous Symbols and Pictographs", start: 127744, end: 128511
1175    };
1176pub const EMOTICONS: UnicodeBlock =
1177    UnicodeBlock {
1178        name: "Emoticons", start: 128512, end: 128591
1179    };
1180pub const ORNAMENTAL_DINGBATS: UnicodeBlock =
1181    UnicodeBlock {
1182        name: "Ornamental Dingbats", start: 128592, end: 128639
1183    };
1184pub const TRANSPORT_AND_MAP_SYMBOLS: UnicodeBlock =
1185    UnicodeBlock {
1186        name: "Transport and Map Symbols", start: 128640, end: 128767
1187    };
1188pub const ALCHEMICAL_SYMBOLS: UnicodeBlock =
1189    UnicodeBlock {
1190        name: "Alchemical Symbols", start: 128768, end: 128895
1191    };
1192pub const GEOMETRIC_SHAPES_EXTENDED: UnicodeBlock =
1193    UnicodeBlock {
1194        name: "Geometric Shapes Extended", start: 128896, end: 129023
1195    };
1196pub const SUPPLEMENTAL_ARROWS_C: UnicodeBlock =
1197    UnicodeBlock {
1198        name: "Supplemental Arrows-C", start: 129024, end: 129279
1199    };
1200pub const SUPPLEMENTAL_SYMBOLS_AND_PICTOGRAPHS: UnicodeBlock =
1201    UnicodeBlock {
1202        name: "Supplemental Symbols and Pictographs", start: 129280, end: 129535
1203    };
1204pub const CHESS_SYMBOLS: UnicodeBlock =
1205    UnicodeBlock {
1206        name: "Chess Symbols", start: 129536, end: 129647
1207    };
1208pub const SYMBOLS_AND_PICTOGRAPHS_EXTENDED_A: UnicodeBlock =
1209    UnicodeBlock {
1210        name: "Symbols and Pictographs Extended-A", start: 129648, end: 129791
1211    };
1212pub const SYMBOLS_FOR_LEGACY_COMPUTING: UnicodeBlock =
1213    UnicodeBlock {
1214        name: "Symbols for Legacy Computing", start: 129792, end: 130047
1215    };
1216pub const CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B: UnicodeBlock =
1217    UnicodeBlock {
1218        name: "CJK Unified Ideographs Extension B", start: 131072, end: 173791
1219    };
1220pub const CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C: UnicodeBlock =
1221    UnicodeBlock {
1222        name: "CJK Unified Ideographs Extension C", start: 173824, end: 177983
1223    };
1224pub const CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D: UnicodeBlock =
1225    UnicodeBlock {
1226        name: "CJK Unified Ideographs Extension D", start: 177984, end: 178207
1227    };
1228pub const CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E: UnicodeBlock =
1229    UnicodeBlock {
1230        name: "CJK Unified Ideographs Extension E", start: 178208, end: 183983
1231    };
1232pub const CJK_UNIFIED_IDEOGRAPHS_EXTENSION_F: UnicodeBlock =
1233    UnicodeBlock {
1234        name: "CJK Unified Ideographs Extension F", start: 183984, end: 191471
1235    };
1236pub const CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I: UnicodeBlock =
1237    UnicodeBlock {
1238        name: "CJK Unified Ideographs Extension I", start: 191472, end: 192095
1239    };
1240pub const CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT: UnicodeBlock =
1241    UnicodeBlock {
1242        name: "CJK Compatibility Ideographs Supplement", start: 194560, end: 195103
1243    };
1244pub const CJK_UNIFIED_IDEOGRAPHS_EXTENSION_G: UnicodeBlock =
1245    UnicodeBlock {
1246        name: "CJK Unified Ideographs Extension G", start: 196608, end: 201551
1247    };
1248pub const CJK_UNIFIED_IDEOGRAPHS_EXTENSION_H: UnicodeBlock =
1249    UnicodeBlock {
1250        name: "CJK Unified Ideographs Extension H", start: 201552, end: 205743
1251    };
1252pub const CJK_UNIFIED_IDEOGRAPHS_EXTENSION_J: UnicodeBlock =
1253    UnicodeBlock {
1254        name: "CJK Unified Ideographs Extension J", start: 205744, end: 210047
1255    };
1256pub const TAGS: UnicodeBlock = UnicodeBlock {
1257    name: "Tags", start: 917504, end: 917631
1258};
1259pub const VARIATION_SELECTORS_SUPPLEMENT: UnicodeBlock =
1260    UnicodeBlock {
1261        name: "Variation Selectors Supplement", start: 917760, end: 917999
1262    };
1263pub const SUPPLEMENTARY_PRIVATE_USE_AREA_A: UnicodeBlock =
1264    UnicodeBlock {
1265        name: "Supplementary Private Use Area-A", start: 983040, end: 1048575
1266    };
1267pub const SUPPLEMENTARY_PRIVATE_USE_AREA_B: UnicodeBlock =
1268    UnicodeBlock {
1269        name: "Supplementary Private Use Area-B", start: 1048576, end: 1114111
1270    };
1271
1272/// Given a character, determine what unicode block contains it.
1273pub fn find_unicode_block(c: char) -> Option<UnicodeBlock> {
1274    match c {
1275        '\u{000000}'..='\u{00007F}' => Some(BASIC_LATIN),
1276        '\u{000080}'..='\u{0000FF}' => Some(LATIN_1_SUPPLEMENT),
1277        '\u{000100}'..='\u{00017F}' => Some(LATIN_EXTENDED_A),
1278        '\u{000180}'..='\u{00024F}' => Some(LATIN_EXTENDED_B),
1279        '\u{000250}'..='\u{0002AF}' => Some(IPA_EXTENSIONS),
1280        '\u{0002B0}'..='\u{0002FF}' => Some(SPACING_MODIFIER_LETTERS),
1281        '\u{000300}'..='\u{00036F}' => Some(COMBINING_DIACRITICAL_MARKS),
1282        '\u{000370}'..='\u{0003FF}' => Some(GREEK_AND_COPTIC),
1283        '\u{000400}'..='\u{0004FF}' => Some(CYRILLIC),
1284        '\u{000500}'..='\u{00052F}' => Some(CYRILLIC_SUPPLEMENT),
1285        '\u{000530}'..='\u{00058F}' => Some(ARMENIAN),
1286        '\u{000590}'..='\u{0005FF}' => Some(HEBREW),
1287        '\u{000600}'..='\u{0006FF}' => Some(ARABIC),
1288        '\u{000700}'..='\u{00074F}' => Some(SYRIAC),
1289        '\u{000750}'..='\u{00077F}' => Some(ARABIC_SUPPLEMENT),
1290        '\u{000780}'..='\u{0007BF}' => Some(THAANA),
1291        '\u{0007C0}'..='\u{0007FF}' => Some(NKO),
1292        '\u{000800}'..='\u{00083F}' => Some(SAMARITAN),
1293        '\u{000840}'..='\u{00085F}' => Some(MANDAIC),
1294        '\u{000860}'..='\u{00086F}' => Some(SYRIAC_SUPPLEMENT),
1295        '\u{000870}'..='\u{00089F}' => Some(ARABIC_EXTENDED_B),
1296        '\u{0008A0}'..='\u{0008FF}' => Some(ARABIC_EXTENDED_A),
1297        '\u{000900}'..='\u{00097F}' => Some(DEVANAGARI),
1298        '\u{000980}'..='\u{0009FF}' => Some(BENGALI),
1299        '\u{000A00}'..='\u{000A7F}' => Some(GURMUKHI),
1300        '\u{000A80}'..='\u{000AFF}' => Some(GUJARATI),
1301        '\u{000B00}'..='\u{000B7F}' => Some(ORIYA),
1302        '\u{000B80}'..='\u{000BFF}' => Some(TAMIL),
1303        '\u{000C00}'..='\u{000C7F}' => Some(TELUGU),
1304        '\u{000C80}'..='\u{000CFF}' => Some(KANNADA),
1305        '\u{000D00}'..='\u{000D7F}' => Some(MALAYALAM),
1306        '\u{000D80}'..='\u{000DFF}' => Some(SINHALA),
1307        '\u{000E00}'..='\u{000E7F}' => Some(THAI),
1308        '\u{000E80}'..='\u{000EFF}' => Some(LAO),
1309        '\u{000F00}'..='\u{000FFF}' => Some(TIBETAN),
1310        '\u{001000}'..='\u{00109F}' => Some(MYANMAR),
1311        '\u{0010A0}'..='\u{0010FF}' => Some(GEORGIAN),
1312        '\u{001100}'..='\u{0011FF}' => Some(HANGUL_JAMO),
1313        '\u{001200}'..='\u{00137F}' => Some(ETHIOPIC),
1314        '\u{001380}'..='\u{00139F}' => Some(ETHIOPIC_SUPPLEMENT),
1315        '\u{0013A0}'..='\u{0013FF}' => Some(CHEROKEE),
1316        '\u{001400}'..='\u{00167F}' => Some(UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS),
1317        '\u{001680}'..='\u{00169F}' => Some(OGHAM),
1318        '\u{0016A0}'..='\u{0016FF}' => Some(RUNIC),
1319        '\u{001700}'..='\u{00171F}' => Some(TAGALOG),
1320        '\u{001720}'..='\u{00173F}' => Some(HANUNOO),
1321        '\u{001740}'..='\u{00175F}' => Some(BUHID),
1322        '\u{001760}'..='\u{00177F}' => Some(TAGBANWA),
1323        '\u{001780}'..='\u{0017FF}' => Some(KHMER),
1324        '\u{001800}'..='\u{0018AF}' => Some(MONGOLIAN),
1325        '\u{0018B0}'..='\u{0018FF}' => Some(UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED),
1326        '\u{001900}'..='\u{00194F}' => Some(LIMBU),
1327        '\u{001950}'..='\u{00197F}' => Some(TAI_LE),
1328        '\u{001980}'..='\u{0019DF}' => Some(NEW_TAI_LUE),
1329        '\u{0019E0}'..='\u{0019FF}' => Some(KHMER_SYMBOLS),
1330        '\u{001A00}'..='\u{001A1F}' => Some(BUGINESE),
1331        '\u{001A20}'..='\u{001AAF}' => Some(TAI_THAM),
1332        '\u{001AB0}'..='\u{001AFF}' => Some(COMBINING_DIACRITICAL_MARKS_EXTENDED),
1333        '\u{001B00}'..='\u{001B7F}' => Some(BALINESE),
1334        '\u{001B80}'..='\u{001BBF}' => Some(SUNDANESE),
1335        '\u{001BC0}'..='\u{001BFF}' => Some(BATAK),
1336        '\u{001C00}'..='\u{001C4F}' => Some(LEPCHA),
1337        '\u{001C50}'..='\u{001C7F}' => Some(OL_CHIKI),
1338        '\u{001C80}'..='\u{001C8F}' => Some(CYRILLIC_EXTENDED_C),
1339        '\u{001C90}'..='\u{001CBF}' => Some(GEORGIAN_EXTENDED),
1340        '\u{001CC0}'..='\u{001CCF}' => Some(SUNDANESE_SUPPLEMENT),
1341        '\u{001CD0}'..='\u{001CFF}' => Some(VEDIC_EXTENSIONS),
1342        '\u{001D00}'..='\u{001D7F}' => Some(PHONETIC_EXTENSIONS),
1343        '\u{001D80}'..='\u{001DBF}' => Some(PHONETIC_EXTENSIONS_SUPPLEMENT),
1344        '\u{001DC0}'..='\u{001DFF}' => Some(COMBINING_DIACRITICAL_MARKS_SUPPLEMENT),
1345        '\u{001E00}'..='\u{001EFF}' => Some(LATIN_EXTENDED_ADDITIONAL),
1346        '\u{001F00}'..='\u{001FFF}' => Some(GREEK_EXTENDED),
1347        '\u{002000}'..='\u{00206F}' => Some(GENERAL_PUNCTUATION),
1348        '\u{002070}'..='\u{00209F}' => Some(SUPERSCRIPTS_AND_SUBSCRIPTS),
1349        '\u{0020A0}'..='\u{0020CF}' => Some(CURRENCY_SYMBOLS),
1350        '\u{0020D0}'..='\u{0020FF}' => Some(COMBINING_DIACRITICAL_MARKS_FOR_SYMBOLS),
1351        '\u{002100}'..='\u{00214F}' => Some(LETTERLIKE_SYMBOLS),
1352        '\u{002150}'..='\u{00218F}' => Some(NUMBER_FORMS),
1353        '\u{002190}'..='\u{0021FF}' => Some(ARROWS),
1354        '\u{002200}'..='\u{0022FF}' => Some(MATHEMATICAL_OPERATORS),
1355        '\u{002300}'..='\u{0023FF}' => Some(MISCELLANEOUS_TECHNICAL),
1356        '\u{002400}'..='\u{00243F}' => Some(CONTROL_PICTURES),
1357        '\u{002440}'..='\u{00245F}' => Some(OPTICAL_CHARACTER_RECOGNITION),
1358        '\u{002460}'..='\u{0024FF}' => Some(ENCLOSED_ALPHANUMERICS),
1359        '\u{002500}'..='\u{00257F}' => Some(BOX_DRAWING),
1360        '\u{002580}'..='\u{00259F}' => Some(BLOCK_ELEMENTS),
1361        '\u{0025A0}'..='\u{0025FF}' => Some(GEOMETRIC_SHAPES),
1362        '\u{002600}'..='\u{0026FF}' => Some(MISCELLANEOUS_SYMBOLS),
1363        '\u{002700}'..='\u{0027BF}' => Some(DINGBATS),
1364        '\u{0027C0}'..='\u{0027EF}' => Some(MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A),
1365        '\u{0027F0}'..='\u{0027FF}' => Some(SUPPLEMENTAL_ARROWS_A),
1366        '\u{002800}'..='\u{0028FF}' => Some(BRAILLE_PATTERNS),
1367        '\u{002900}'..='\u{00297F}' => Some(SUPPLEMENTAL_ARROWS_B),
1368        '\u{002980}'..='\u{0029FF}' => Some(MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B),
1369        '\u{002A00}'..='\u{002AFF}' => Some(SUPPLEMENTAL_MATHEMATICAL_OPERATORS),
1370        '\u{002B00}'..='\u{002BFF}' => Some(MISCELLANEOUS_SYMBOLS_AND_ARROWS),
1371        '\u{002C00}'..='\u{002C5F}' => Some(GLAGOLITIC),
1372        '\u{002C60}'..='\u{002C7F}' => Some(LATIN_EXTENDED_C),
1373        '\u{002C80}'..='\u{002CFF}' => Some(COPTIC),
1374        '\u{002D00}'..='\u{002D2F}' => Some(GEORGIAN_SUPPLEMENT),
1375        '\u{002D30}'..='\u{002D7F}' => Some(TIFINAGH),
1376        '\u{002D80}'..='\u{002DDF}' => Some(ETHIOPIC_EXTENDED),
1377        '\u{002DE0}'..='\u{002DFF}' => Some(CYRILLIC_EXTENDED_A),
1378        '\u{002E00}'..='\u{002E7F}' => Some(SUPPLEMENTAL_PUNCTUATION),
1379        '\u{002E80}'..='\u{002EFF}' => Some(CJK_RADICALS_SUPPLEMENT),
1380        '\u{002F00}'..='\u{002FDF}' => Some(KANGXI_RADICALS),
1381        '\u{002FF0}'..='\u{002FFF}' => Some(IDEOGRAPHIC_DESCRIPTION_CHARACTERS),
1382        '\u{003000}'..='\u{00303F}' => Some(CJK_SYMBOLS_AND_PUNCTUATION),
1383        '\u{003040}'..='\u{00309F}' => Some(HIRAGANA),
1384        '\u{0030A0}'..='\u{0030FF}' => Some(KATAKANA),
1385        '\u{003100}'..='\u{00312F}' => Some(BOPOMOFO),
1386        '\u{003130}'..='\u{00318F}' => Some(HANGUL_COMPATIBILITY_JAMO),
1387        '\u{003190}'..='\u{00319F}' => Some(KANBUN),
1388        '\u{0031A0}'..='\u{0031BF}' => Some(BOPOMOFO_EXTENDED),
1389        '\u{0031C0}'..='\u{0031EF}' => Some(CJK_STROKES),
1390        '\u{0031F0}'..='\u{0031FF}' => Some(KATAKANA_PHONETIC_EXTENSIONS),
1391        '\u{003200}'..='\u{0032FF}' => Some(ENCLOSED_CJK_LETTERS_AND_MONTHS),
1392        '\u{003300}'..='\u{0033FF}' => Some(CJK_COMPATIBILITY),
1393        '\u{003400}'..='\u{004DBF}' => Some(CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A),
1394        '\u{004DC0}'..='\u{004DFF}' => Some(YIJING_HEXAGRAM_SYMBOLS),
1395        '\u{004E00}'..='\u{009FFF}' => Some(CJK_UNIFIED_IDEOGRAPHS),
1396        '\u{00A000}'..='\u{00A48F}' => Some(YI_SYLLABLES),
1397        '\u{00A490}'..='\u{00A4CF}' => Some(YI_RADICALS),
1398        '\u{00A4D0}'..='\u{00A4FF}' => Some(LISU),
1399        '\u{00A500}'..='\u{00A63F}' => Some(VAI),
1400        '\u{00A640}'..='\u{00A69F}' => Some(CYRILLIC_EXTENDED_B),
1401        '\u{00A6A0}'..='\u{00A6FF}' => Some(BAMUM),
1402        '\u{00A700}'..='\u{00A71F}' => Some(MODIFIER_TONE_LETTERS),
1403        '\u{00A720}'..='\u{00A7FF}' => Some(LATIN_EXTENDED_D),
1404        '\u{00A800}'..='\u{00A82F}' => Some(SYLOTI_NAGRI),
1405        '\u{00A830}'..='\u{00A83F}' => Some(COMMON_INDIC_NUMBER_FORMS),
1406        '\u{00A840}'..='\u{00A87F}' => Some(PHAGS_PA),
1407        '\u{00A880}'..='\u{00A8DF}' => Some(SAURASHTRA),
1408        '\u{00A8E0}'..='\u{00A8FF}' => Some(DEVANAGARI_EXTENDED),
1409        '\u{00A900}'..='\u{00A92F}' => Some(KAYAH_LI),
1410        '\u{00A930}'..='\u{00A95F}' => Some(REJANG),
1411        '\u{00A960}'..='\u{00A97F}' => Some(HANGUL_JAMO_EXTENDED_A),
1412        '\u{00A980}'..='\u{00A9DF}' => Some(JAVANESE),
1413        '\u{00A9E0}'..='\u{00A9FF}' => Some(MYANMAR_EXTENDED_B),
1414        '\u{00AA00}'..='\u{00AA5F}' => Some(CHAM),
1415        '\u{00AA60}'..='\u{00AA7F}' => Some(MYANMAR_EXTENDED_A),
1416        '\u{00AA80}'..='\u{00AADF}' => Some(TAI_VIET),
1417        '\u{00AAE0}'..='\u{00AAFF}' => Some(MEETEI_MAYEK_EXTENSIONS),
1418        '\u{00AB00}'..='\u{00AB2F}' => Some(ETHIOPIC_EXTENDED_A),
1419        '\u{00AB30}'..='\u{00AB6F}' => Some(LATIN_EXTENDED_E),
1420        '\u{00AB70}'..='\u{00ABBF}' => Some(CHEROKEE_SUPPLEMENT),
1421        '\u{00ABC0}'..='\u{00ABFF}' => Some(MEETEI_MAYEK),
1422        '\u{00AC00}'..='\u{00D7AF}' => Some(HANGUL_SYLLABLES),
1423        '\u{00D7B0}'..='\u{00D7FF}' => Some(HANGUL_JAMO_EXTENDED_B),
1424        '\u{00E000}'..='\u{00F8FF}' => Some(PRIVATE_USE_AREA),
1425        '\u{00F900}'..='\u{00FAFF}' => Some(CJK_COMPATIBILITY_IDEOGRAPHS),
1426        '\u{00FB00}'..='\u{00FB4F}' => Some(ALPHABETIC_PRESENTATION_FORMS),
1427        '\u{00FB50}'..='\u{00FDFF}' => Some(ARABIC_PRESENTATION_FORMS_A),
1428        '\u{00FE00}'..='\u{00FE0F}' => Some(VARIATION_SELECTORS),
1429        '\u{00FE10}'..='\u{00FE1F}' => Some(VERTICAL_FORMS),
1430        '\u{00FE20}'..='\u{00FE2F}' => Some(COMBINING_HALF_MARKS),
1431        '\u{00FE30}'..='\u{00FE4F}' => Some(CJK_COMPATIBILITY_FORMS),
1432        '\u{00FE50}'..='\u{00FE6F}' => Some(SMALL_FORM_VARIANTS),
1433        '\u{00FE70}'..='\u{00FEFF}' => Some(ARABIC_PRESENTATION_FORMS_B),
1434        '\u{00FF00}'..='\u{00FFEF}' => Some(HALFWIDTH_AND_FULLWIDTH_FORMS),
1435        '\u{00FFF0}'..='\u{00FFFF}' => Some(SPECIALS),
1436        '\u{010000}'..='\u{01007F}' => Some(LINEAR_B_SYLLABARY),
1437        '\u{010080}'..='\u{0100FF}' => Some(LINEAR_B_IDEOGRAMS),
1438        '\u{010100}'..='\u{01013F}' => Some(AEGEAN_NUMBERS),
1439        '\u{010140}'..='\u{01018F}' => Some(ANCIENT_GREEK_NUMBERS),
1440        '\u{010190}'..='\u{0101CF}' => Some(ANCIENT_SYMBOLS),
1441        '\u{0101D0}'..='\u{0101FF}' => Some(PHAISTOS_DISC),
1442        '\u{010280}'..='\u{01029F}' => Some(LYCIAN),
1443        '\u{0102A0}'..='\u{0102DF}' => Some(CARIAN),
1444        '\u{0102E0}'..='\u{0102FF}' => Some(COPTIC_EPACT_NUMBERS),
1445        '\u{010300}'..='\u{01032F}' => Some(OLD_ITALIC),
1446        '\u{010330}'..='\u{01034F}' => Some(GOTHIC),
1447        '\u{010350}'..='\u{01037F}' => Some(OLD_PERMIC),
1448        '\u{010380}'..='\u{01039F}' => Some(UGARITIC),
1449        '\u{0103A0}'..='\u{0103DF}' => Some(OLD_PERSIAN),
1450        '\u{010400}'..='\u{01044F}' => Some(DESERET),
1451        '\u{010450}'..='\u{01047F}' => Some(SHAVIAN),
1452        '\u{010480}'..='\u{0104AF}' => Some(OSMANYA),
1453        '\u{0104B0}'..='\u{0104FF}' => Some(OSAGE),
1454        '\u{010500}'..='\u{01052F}' => Some(ELBASAN),
1455        '\u{010530}'..='\u{01056F}' => Some(CAUCASIAN_ALBANIAN),
1456        '\u{010570}'..='\u{0105BF}' => Some(VITHKUQI),
1457        '\u{0105C0}'..='\u{0105FF}' => Some(TODHRI),
1458        '\u{010600}'..='\u{01077F}' => Some(LINEAR_A),
1459        '\u{010780}'..='\u{0107BF}' => Some(LATIN_EXTENDED_F),
1460        '\u{010800}'..='\u{01083F}' => Some(CYPRIOT_SYLLABARY),
1461        '\u{010840}'..='\u{01085F}' => Some(IMPERIAL_ARAMAIC),
1462        '\u{010860}'..='\u{01087F}' => Some(PALMYRENE),
1463        '\u{010880}'..='\u{0108AF}' => Some(NABATAEAN),
1464        '\u{0108E0}'..='\u{0108FF}' => Some(HATRAN),
1465        '\u{010900}'..='\u{01091F}' => Some(PHOENICIAN),
1466        '\u{010920}'..='\u{01093F}' => Some(LYDIAN),
1467        '\u{010940}'..='\u{01095F}' => Some(SIDETIC),
1468        '\u{010980}'..='\u{01099F}' => Some(MEROITIC_HIEROGLYPHS),
1469        '\u{0109A0}'..='\u{0109FF}' => Some(MEROITIC_CURSIVE),
1470        '\u{010A00}'..='\u{010A5F}' => Some(KHAROSHTHI),
1471        '\u{010A60}'..='\u{010A7F}' => Some(OLD_SOUTH_ARABIAN),
1472        '\u{010A80}'..='\u{010A9F}' => Some(OLD_NORTH_ARABIAN),
1473        '\u{010AC0}'..='\u{010AFF}' => Some(MANICHAEAN),
1474        '\u{010B00}'..='\u{010B3F}' => Some(AVESTAN),
1475        '\u{010B40}'..='\u{010B5F}' => Some(INSCRIPTIONAL_PARTHIAN),
1476        '\u{010B60}'..='\u{010B7F}' => Some(INSCRIPTIONAL_PAHLAVI),
1477        '\u{010B80}'..='\u{010BAF}' => Some(PSALTER_PAHLAVI),
1478        '\u{010C00}'..='\u{010C4F}' => Some(OLD_TURKIC),
1479        '\u{010C80}'..='\u{010CFF}' => Some(OLD_HUNGARIAN),
1480        '\u{010D00}'..='\u{010D3F}' => Some(HANIFI_ROHINGYA),
1481        '\u{010D40}'..='\u{010D8F}' => Some(GARAY),
1482        '\u{010E60}'..='\u{010E7F}' => Some(RUMI_NUMERAL_SYMBOLS),
1483        '\u{010E80}'..='\u{010EBF}' => Some(YEZIDI),
1484        '\u{010EC0}'..='\u{010EFF}' => Some(ARABIC_EXTENDED_C),
1485        '\u{010F00}'..='\u{010F2F}' => Some(OLD_SOGDIAN),
1486        '\u{010F30}'..='\u{010F6F}' => Some(SOGDIAN),
1487        '\u{010F70}'..='\u{010FAF}' => Some(OLD_UYGHUR),
1488        '\u{010FB0}'..='\u{010FDF}' => Some(CHORASMIAN),
1489        '\u{010FE0}'..='\u{010FFF}' => Some(ELYMAIC),
1490        '\u{011000}'..='\u{01107F}' => Some(BRAHMI),
1491        '\u{011080}'..='\u{0110CF}' => Some(KAITHI),
1492        '\u{0110D0}'..='\u{0110FF}' => Some(SORA_SOMPENG),
1493        '\u{011100}'..='\u{01114F}' => Some(CHAKMA),
1494        '\u{011150}'..='\u{01117F}' => Some(MAHAJANI),
1495        '\u{011180}'..='\u{0111DF}' => Some(SHARADA),
1496        '\u{0111E0}'..='\u{0111FF}' => Some(SINHALA_ARCHAIC_NUMBERS),
1497        '\u{011200}'..='\u{01124F}' => Some(KHOJKI),
1498        '\u{011280}'..='\u{0112AF}' => Some(MULTANI),
1499        '\u{0112B0}'..='\u{0112FF}' => Some(KHUDAWADI),
1500        '\u{011300}'..='\u{01137F}' => Some(GRANTHA),
1501        '\u{011380}'..='\u{0113FF}' => Some(TULU_TIGALARI),
1502        '\u{011400}'..='\u{01147F}' => Some(NEWA),
1503        '\u{011480}'..='\u{0114DF}' => Some(TIRHUTA),
1504        '\u{011580}'..='\u{0115FF}' => Some(SIDDHAM),
1505        '\u{011600}'..='\u{01165F}' => Some(MODI),
1506        '\u{011660}'..='\u{01167F}' => Some(MONGOLIAN_SUPPLEMENT),
1507        '\u{011680}'..='\u{0116CF}' => Some(TAKRI),
1508        '\u{0116D0}'..='\u{0116FF}' => Some(MYANMAR_EXTENDED_C),
1509        '\u{011700}'..='\u{01174F}' => Some(AHOM),
1510        '\u{011800}'..='\u{01184F}' => Some(DOGRA),
1511        '\u{0118A0}'..='\u{0118FF}' => Some(WARANG_CITI),
1512        '\u{011900}'..='\u{01195F}' => Some(DIVES_AKURU),
1513        '\u{0119A0}'..='\u{0119FF}' => Some(NANDINAGARI),
1514        '\u{011A00}'..='\u{011A4F}' => Some(ZANABAZAR_SQUARE),
1515        '\u{011A50}'..='\u{011AAF}' => Some(SOYOMBO),
1516        '\u{011AB0}'..='\u{011ABF}' => Some(UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED_A),
1517        '\u{011AC0}'..='\u{011AFF}' => Some(PAU_CIN_HAU),
1518        '\u{011B00}'..='\u{011B5F}' => Some(DEVANAGARI_EXTENDED_A),
1519        '\u{011B60}'..='\u{011B7F}' => Some(SHARADA_SUPPLEMENT),
1520        '\u{011BC0}'..='\u{011BFF}' => Some(SUNUWAR),
1521        '\u{011C00}'..='\u{011C6F}' => Some(BHAIKSUKI),
1522        '\u{011C70}'..='\u{011CBF}' => Some(MARCHEN),
1523        '\u{011D00}'..='\u{011D5F}' => Some(MASARAM_GONDI),
1524        '\u{011D60}'..='\u{011DAF}' => Some(GUNJALA_GONDI),
1525        '\u{011DB0}'..='\u{011DEF}' => Some(TOLONG_SIKI),
1526        '\u{011EE0}'..='\u{011EFF}' => Some(MAKASAR),
1527        '\u{011F00}'..='\u{011F5F}' => Some(KAWI),
1528        '\u{011FB0}'..='\u{011FBF}' => Some(LISU_SUPPLEMENT),
1529        '\u{011FC0}'..='\u{011FFF}' => Some(TAMIL_SUPPLEMENT),
1530        '\u{012000}'..='\u{0123FF}' => Some(CUNEIFORM),
1531        '\u{012400}'..='\u{01247F}' => Some(CUNEIFORM_NUMBERS_AND_PUNCTUATION),
1532        '\u{012480}'..='\u{01254F}' => Some(EARLY_DYNASTIC_CUNEIFORM),
1533        '\u{012F90}'..='\u{012FFF}' => Some(CYPRO_MINOAN),
1534        '\u{013000}'..='\u{01342F}' => Some(EGYPTIAN_HIEROGLYPHS),
1535        '\u{013430}'..='\u{01345F}' => Some(EGYPTIAN_HIEROGLYPH_FORMAT_CONTROLS),
1536        '\u{013460}'..='\u{0143FF}' => Some(EGYPTIAN_HIEROGLYPHS_EXTENDED_A),
1537        '\u{014400}'..='\u{01467F}' => Some(ANATOLIAN_HIEROGLYPHS),
1538        '\u{016100}'..='\u{01613F}' => Some(GURUNG_KHEMA),
1539        '\u{016800}'..='\u{016A3F}' => Some(BAMUM_SUPPLEMENT),
1540        '\u{016A40}'..='\u{016A6F}' => Some(MRO),
1541        '\u{016A70}'..='\u{016ACF}' => Some(TANGSA),
1542        '\u{016AD0}'..='\u{016AFF}' => Some(BASSA_VAH),
1543        '\u{016B00}'..='\u{016B8F}' => Some(PAHAWH_HMONG),
1544        '\u{016D40}'..='\u{016D7F}' => Some(KIRAT_RAI),
1545        '\u{016E40}'..='\u{016E9F}' => Some(MEDEFAIDRIN),
1546        '\u{016EA0}'..='\u{016EDF}' => Some(BERIA_ERFE),
1547        '\u{016F00}'..='\u{016F9F}' => Some(MIAO),
1548        '\u{016FE0}'..='\u{016FFF}' => Some(IDEOGRAPHIC_SYMBOLS_AND_PUNCTUATION),
1549        '\u{017000}'..='\u{0187FF}' => Some(TANGUT),
1550        '\u{018800}'..='\u{018AFF}' => Some(TANGUT_COMPONENTS),
1551        '\u{018B00}'..='\u{018CFF}' => Some(KHITAN_SMALL_SCRIPT),
1552        '\u{018D00}'..='\u{018D7F}' => Some(TANGUT_SUPPLEMENT),
1553        '\u{018D80}'..='\u{018DFF}' => Some(TANGUT_COMPONENTS_SUPPLEMENT),
1554        '\u{01AFF0}'..='\u{01AFFF}' => Some(KANA_EXTENDED_B),
1555        '\u{01B000}'..='\u{01B0FF}' => Some(KANA_SUPPLEMENT),
1556        '\u{01B100}'..='\u{01B12F}' => Some(KANA_EXTENDED_A),
1557        '\u{01B130}'..='\u{01B16F}' => Some(SMALL_KANA_EXTENSION),
1558        '\u{01B170}'..='\u{01B2FF}' => Some(NUSHU),
1559        '\u{01BC00}'..='\u{01BC9F}' => Some(DUPLOYAN),
1560        '\u{01BCA0}'..='\u{01BCAF}' => Some(SHORTHAND_FORMAT_CONTROLS),
1561        '\u{01CC00}'..='\u{01CEBF}' => Some(SYMBOLS_FOR_LEGACY_COMPUTING_SUPPLEMENT),
1562        '\u{01CEC0}'..='\u{01CEFF}' => Some(MISCELLANEOUS_SYMBOLS_SUPPLEMENT),
1563        '\u{01CF00}'..='\u{01CFCF}' => Some(ZNAMENNY_MUSICAL_NOTATION),
1564        '\u{01D000}'..='\u{01D0FF}' => Some(BYZANTINE_MUSICAL_SYMBOLS),
1565        '\u{01D100}'..='\u{01D1FF}' => Some(MUSICAL_SYMBOLS),
1566        '\u{01D200}'..='\u{01D24F}' => Some(ANCIENT_GREEK_MUSICAL_NOTATION),
1567        '\u{01D2C0}'..='\u{01D2DF}' => Some(KAKTOVIK_NUMERALS),
1568        '\u{01D2E0}'..='\u{01D2FF}' => Some(MAYAN_NUMERALS),
1569        '\u{01D300}'..='\u{01D35F}' => Some(TAI_XUAN_JING_SYMBOLS),
1570        '\u{01D360}'..='\u{01D37F}' => Some(COUNTING_ROD_NUMERALS),
1571        '\u{01D400}'..='\u{01D7FF}' => Some(MATHEMATICAL_ALPHANUMERIC_SYMBOLS),
1572        '\u{01D800}'..='\u{01DAAF}' => Some(SUTTON_SIGNWRITING),
1573        '\u{01DF00}'..='\u{01DFFF}' => Some(LATIN_EXTENDED_G),
1574        '\u{01E000}'..='\u{01E02F}' => Some(GLAGOLITIC_SUPPLEMENT),
1575        '\u{01E030}'..='\u{01E08F}' => Some(CYRILLIC_EXTENDED_D),
1576        '\u{01E100}'..='\u{01E14F}' => Some(NYIAKENG_PUACHUE_HMONG),
1577        '\u{01E290}'..='\u{01E2BF}' => Some(TOTO),
1578        '\u{01E2C0}'..='\u{01E2FF}' => Some(WANCHO),
1579        '\u{01E4D0}'..='\u{01E4FF}' => Some(NAG_MUNDARI),
1580        '\u{01E5D0}'..='\u{01E5FF}' => Some(OL_ONAL),
1581        '\u{01E6C0}'..='\u{01E6FF}' => Some(TAI_YO),
1582        '\u{01E7E0}'..='\u{01E7FF}' => Some(ETHIOPIC_EXTENDED_B),
1583        '\u{01E800}'..='\u{01E8DF}' => Some(MENDE_KIKAKUI),
1584        '\u{01E900}'..='\u{01E95F}' => Some(ADLAM),
1585        '\u{01EC70}'..='\u{01ECBF}' => Some(INDIC_SIYAQ_NUMBERS),
1586        '\u{01ED00}'..='\u{01ED4F}' => Some(OTTOMAN_SIYAQ_NUMBERS),
1587        '\u{01EE00}'..='\u{01EEFF}' => Some(ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS),
1588        '\u{01F000}'..='\u{01F02F}' => Some(MAHJONG_TILES),
1589        '\u{01F030}'..='\u{01F09F}' => Some(DOMINO_TILES),
1590        '\u{01F0A0}'..='\u{01F0FF}' => Some(PLAYING_CARDS),
1591        '\u{01F100}'..='\u{01F1FF}' => Some(ENCLOSED_ALPHANUMERIC_SUPPLEMENT),
1592        '\u{01F200}'..='\u{01F2FF}' => Some(ENCLOSED_IDEOGRAPHIC_SUPPLEMENT),
1593        '\u{01F300}'..='\u{01F5FF}' => Some(MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS),
1594        '\u{01F600}'..='\u{01F64F}' => Some(EMOTICONS),
1595        '\u{01F650}'..='\u{01F67F}' => Some(ORNAMENTAL_DINGBATS),
1596        '\u{01F680}'..='\u{01F6FF}' => Some(TRANSPORT_AND_MAP_SYMBOLS),
1597        '\u{01F700}'..='\u{01F77F}' => Some(ALCHEMICAL_SYMBOLS),
1598        '\u{01F780}'..='\u{01F7FF}' => Some(GEOMETRIC_SHAPES_EXTENDED),
1599        '\u{01F800}'..='\u{01F8FF}' => Some(SUPPLEMENTAL_ARROWS_C),
1600        '\u{01F900}'..='\u{01F9FF}' => Some(SUPPLEMENTAL_SYMBOLS_AND_PICTOGRAPHS),
1601        '\u{01FA00}'..='\u{01FA6F}' => Some(CHESS_SYMBOLS),
1602        '\u{01FA70}'..='\u{01FAFF}' => Some(SYMBOLS_AND_PICTOGRAPHS_EXTENDED_A),
1603        '\u{01FB00}'..='\u{01FBFF}' => Some(SYMBOLS_FOR_LEGACY_COMPUTING),
1604        '\u{020000}'..='\u{02A6DF}' => Some(CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B),
1605        '\u{02A700}'..='\u{02B73F}' => Some(CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C),
1606        '\u{02B740}'..='\u{02B81F}' => Some(CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D),
1607        '\u{02B820}'..='\u{02CEAF}' => Some(CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E),
1608        '\u{02CEB0}'..='\u{02EBEF}' => Some(CJK_UNIFIED_IDEOGRAPHS_EXTENSION_F),
1609        '\u{02EBF0}'..='\u{02EE5F}' => Some(CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I),
1610        '\u{02F800}'..='\u{02FA1F}' => Some(CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT),
1611        '\u{030000}'..='\u{03134F}' => Some(CJK_UNIFIED_IDEOGRAPHS_EXTENSION_G),
1612        '\u{031350}'..='\u{0323AF}' => Some(CJK_UNIFIED_IDEOGRAPHS_EXTENSION_H),
1613        '\u{0323B0}'..='\u{03347F}' => Some(CJK_UNIFIED_IDEOGRAPHS_EXTENSION_J),
1614        '\u{0E0000}'..='\u{0E007F}' => Some(TAGS),
1615        '\u{0E0100}'..='\u{0E01EF}' => Some(VARIATION_SELECTORS_SUPPLEMENT),
1616        '\u{0F0000}'..='\u{0FFFFF}' => Some(SUPPLEMENTARY_PRIVATE_USE_AREA_A),
1617        '\u{100000}'..='\u{10FFFF}' => Some(SUPPLEMENTARY_PRIVATE_USE_AREA_B),
1618        _ => None,
1619    }
1620}