base/
unicode_block.rs

1/* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
5// Do not edit:
6// Generated via: https://www.unicode.org/Public/UNIDATA/Blocks.txt.
7// $ ./generate-unicode-block.py Blocks.txt > unicode_block.rs
8
9use malloc_size_of_derive::MallocSizeOf;
10
11#[derive(Clone, Copy, Debug, Eq, Hash, MallocSizeOf, PartialEq)]
12pub enum UnicodeBlock {
13    BasicLatin,
14    Latin1Supplement,
15    LatinExtendedA,
16    LatinExtendedB,
17    IPAExtensions,
18    SpacingModifierLetters,
19    CombiningDiacriticalMarks,
20    GreekandCoptic,
21    Cyrillic,
22    CyrillicSupplement,
23    Armenian,
24    Hebrew,
25    Arabic,
26    Syriac,
27    ArabicSupplement,
28    Thaana,
29    NKo,
30    Samaritan,
31    Mandaic,
32    SyriacSupplement,
33    ArabicExtendedB,
34    ArabicExtendedA,
35    Devanagari,
36    Bengali,
37    Gurmukhi,
38    Gujarati,
39    Oriya,
40    Tamil,
41    Telugu,
42    Kannada,
43    Malayalam,
44    Sinhala,
45    Thai,
46    Lao,
47    Tibetan,
48    Myanmar,
49    Georgian,
50    HangulJamo,
51    Ethiopic,
52    EthiopicSupplement,
53    Cherokee,
54    UnifiedCanadianAboriginalSyllabics,
55    Ogham,
56    Runic,
57    Tagalog,
58    Hanunoo,
59    Buhid,
60    Tagbanwa,
61    Khmer,
62    Mongolian,
63    UnifiedCanadianAboriginalSyllabicsExtended,
64    Limbu,
65    TaiLe,
66    NewTaiLue,
67    KhmerSymbols,
68    Buginese,
69    TaiTham,
70    CombiningDiacriticalMarksExtended,
71    Balinese,
72    Sundanese,
73    Batak,
74    Lepcha,
75    OlChiki,
76    CyrillicExtendedC,
77    GeorgianExtended,
78    SundaneseSupplement,
79    VedicExtensions,
80    PhoneticExtensions,
81    PhoneticExtensionsSupplement,
82    CombiningDiacriticalMarksSupplement,
83    LatinExtendedAdditional,
84    GreekExtended,
85    GeneralPunctuation,
86    SuperscriptsandSubscripts,
87    CurrencySymbols,
88    CombiningDiacriticalMarksforSymbols,
89    LetterlikeSymbols,
90    NumberForms,
91    Arrows,
92    MathematicalOperators,
93    MiscellaneousTechnical,
94    ControlPictures,
95    OpticalCharacterRecognition,
96    EnclosedAlphanumerics,
97    BoxDrawing,
98    BlockElements,
99    GeometricShapes,
100    MiscellaneousSymbols,
101    Dingbats,
102    MiscellaneousMathematicalSymbolsA,
103    SupplementalArrowsA,
104    BraillePatterns,
105    SupplementalArrowsB,
106    MiscellaneousMathematicalSymbolsB,
107    SupplementalMathematicalOperators,
108    MiscellaneousSymbolsandArrows,
109    Glagolitic,
110    LatinExtendedC,
111    Coptic,
112    GeorgianSupplement,
113    Tifinagh,
114    EthiopicExtended,
115    CyrillicExtendedA,
116    SupplementalPunctuation,
117    CJKRadicalsSupplement,
118    KangxiRadicals,
119    IdeographicDescriptionCharacters,
120    CJKSymbolsandPunctuation,
121    Hiragana,
122    Katakana,
123    Bopomofo,
124    HangulCompatibilityJamo,
125    Kanbun,
126    BopomofoExtended,
127    CJKStrokes,
128    KatakanaPhoneticExtensions,
129    EnclosedCJKLettersandMonths,
130    CJKCompatibility,
131    CJKUnifiedIdeographsExtensionA,
132    YijingHexagramSymbols,
133    CJKUnifiedIdeographs,
134    YiSyllables,
135    YiRadicals,
136    Lisu,
137    Vai,
138    CyrillicExtendedB,
139    Bamum,
140    ModifierToneLetters,
141    LatinExtendedD,
142    SylotiNagri,
143    CommonIndicNumberForms,
144    Phagspa,
145    Saurashtra,
146    DevanagariExtended,
147    KayahLi,
148    Rejang,
149    HangulJamoExtendedA,
150    Javanese,
151    MyanmarExtendedB,
152    Cham,
153    MyanmarExtendedA,
154    TaiViet,
155    MeeteiMayekExtensions,
156    EthiopicExtendedA,
157    LatinExtendedE,
158    CherokeeSupplement,
159    MeeteiMayek,
160    HangulSyllables,
161    HangulJamoExtendedB,
162    HighSurrogates,
163    HighPrivateUseSurrogates,
164    LowSurrogates,
165    PrivateUseArea,
166    CJKCompatibilityIdeographs,
167    AlphabeticPresentationForms,
168    ArabicPresentationFormsA,
169    VariationSelectors,
170    VerticalForms,
171    CombiningHalfMarks,
172    CJKCompatibilityForms,
173    SmallFormVariants,
174    ArabicPresentationFormsB,
175    HalfwidthandFullwidthForms,
176    Specials,
177    LinearBSyllabary,
178    LinearBIdeograms,
179    AegeanNumbers,
180    AncientGreekNumbers,
181    AncientSymbols,
182    PhaistosDisc,
183    Lycian,
184    Carian,
185    CopticEpactNumbers,
186    OldItalic,
187    Gothic,
188    OldPermic,
189    Ugaritic,
190    OldPersian,
191    Deseret,
192    Shavian,
193    Osmanya,
194    Osage,
195    Elbasan,
196    CaucasianAlbanian,
197    Vithkuqi,
198    LinearA,
199    LatinExtendedF,
200    CypriotSyllabary,
201    ImperialAramaic,
202    Palmyrene,
203    Nabataean,
204    Hatran,
205    Phoenician,
206    Lydian,
207    MeroiticHieroglyphs,
208    MeroiticCursive,
209    Kharoshthi,
210    OldSouthArabian,
211    OldNorthArabian,
212    Manichaean,
213    Avestan,
214    InscriptionalParthian,
215    InscriptionalPahlavi,
216    PsalterPahlavi,
217    OldTurkic,
218    OldHungarian,
219    HanifiRohingya,
220    RumiNumeralSymbols,
221    Yezidi,
222    ArabicExtendedC,
223    OldSogdian,
224    Sogdian,
225    OldUyghur,
226    Chorasmian,
227    Elymaic,
228    Brahmi,
229    Kaithi,
230    SoraSompeng,
231    Chakma,
232    Mahajani,
233    Sharada,
234    SinhalaArchaicNumbers,
235    Khojki,
236    Multani,
237    Khudawadi,
238    Grantha,
239    Newa,
240    Tirhuta,
241    Siddham,
242    Modi,
243    MongolianSupplement,
244    Takri,
245    Ahom,
246    Dogra,
247    WarangCiti,
248    DivesAkuru,
249    Nandinagari,
250    ZanabazarSquare,
251    Soyombo,
252    UnifiedCanadianAboriginalSyllabicsExtendedA,
253    PauCinHau,
254    DevanagariExtendedA,
255    Bhaiksuki,
256    Marchen,
257    MasaramGondi,
258    GunjalaGondi,
259    Makasar,
260    Kawi,
261    LisuSupplement,
262    TamilSupplement,
263    Cuneiform,
264    CuneiformNumbersandPunctuation,
265    EarlyDynasticCuneiform,
266    CyproMinoan,
267    EgyptianHieroglyphs,
268    EgyptianHieroglyphFormatControls,
269    AnatolianHieroglyphs,
270    BamumSupplement,
271    Mro,
272    Tangsa,
273    BassaVah,
274    PahawhHmong,
275    Medefaidrin,
276    Miao,
277    IdeographicSymbolsandPunctuation,
278    Tangut,
279    TangutComponents,
280    KhitanSmallScript,
281    TangutSupplement,
282    KanaExtendedB,
283    KanaSupplement,
284    KanaExtendedA,
285    SmallKanaExtension,
286    Nushu,
287    Duployan,
288    ShorthandFormatControls,
289    ZnamennyMusicalNotation,
290    ByzantineMusicalSymbols,
291    MusicalSymbols,
292    AncientGreekMusicalNotation,
293    KaktovikNumerals,
294    MayanNumerals,
295    TaiXuanJingSymbols,
296    CountingRodNumerals,
297    MathematicalAlphanumericSymbols,
298    SuttonSignWriting,
299    LatinExtendedG,
300    GlagoliticSupplement,
301    CyrillicExtendedD,
302    NyiakengPuachueHmong,
303    Toto,
304    Wancho,
305    NagMundari,
306    EthiopicExtendedB,
307    MendeKikakui,
308    Adlam,
309    IndicSiyaqNumbers,
310    OttomanSiyaqNumbers,
311    ArabicMathematicalAlphabeticSymbols,
312    MahjongTiles,
313    DominoTiles,
314    PlayingCards,
315    EnclosedAlphanumericSupplement,
316    EnclosedIdeographicSupplement,
317    MiscellaneousSymbolsandPictographs,
318    Emoticons,
319    OrnamentalDingbats,
320    TransportandMapSymbols,
321    AlchemicalSymbols,
322    GeometricShapesExtended,
323    SupplementalArrowsC,
324    SupplementalSymbolsandPictographs,
325    ChessSymbols,
326    SymbolsandPictographsExtendedA,
327    SymbolsforLegacyComputing,
328    CJKUnifiedIdeographsExtensionB,
329    CJKUnifiedIdeographsExtensionC,
330    CJKUnifiedIdeographsExtensionD,
331    CJKUnifiedIdeographsExtensionE,
332    CJKUnifiedIdeographsExtensionF,
333    CJKUnifiedIdeographsExtensionI,
334    CJKCompatibilityIdeographsSupplement,
335    CJKUnifiedIdeographsExtensionG,
336    CJKUnifiedIdeographsExtensionH,
337    Tags,
338    VariationSelectorsSupplement,
339    SupplementaryPrivateUseAreaA,
340    SupplementaryPrivateUseAreaB,
341}
342
343pub trait UnicodeBlockMethod {
344    fn block(&self) -> Option<UnicodeBlock>;
345}
346
347impl UnicodeBlockMethod for char {
348    fn block(&self) -> Option<UnicodeBlock> {
349        match *self as u32 {
350            0x000000..=0x00007F => Some(UnicodeBlock::BasicLatin),
351            0x000080..=0x0000FF => Some(UnicodeBlock::Latin1Supplement),
352            0x000100..=0x00017F => Some(UnicodeBlock::LatinExtendedA),
353            0x000180..=0x00024F => Some(UnicodeBlock::LatinExtendedB),
354            0x000250..=0x0002AF => Some(UnicodeBlock::IPAExtensions),
355            0x0002B0..=0x0002FF => Some(UnicodeBlock::SpacingModifierLetters),
356            0x000300..=0x00036F => Some(UnicodeBlock::CombiningDiacriticalMarks),
357            0x000370..=0x0003FF => Some(UnicodeBlock::GreekandCoptic),
358            0x000400..=0x0004FF => Some(UnicodeBlock::Cyrillic),
359            0x000500..=0x00052F => Some(UnicodeBlock::CyrillicSupplement),
360            0x000530..=0x00058F => Some(UnicodeBlock::Armenian),
361            0x000590..=0x0005FF => Some(UnicodeBlock::Hebrew),
362            0x000600..=0x0006FF => Some(UnicodeBlock::Arabic),
363            0x000700..=0x00074F => Some(UnicodeBlock::Syriac),
364            0x000750..=0x00077F => Some(UnicodeBlock::ArabicSupplement),
365            0x000780..=0x0007BF => Some(UnicodeBlock::Thaana),
366            0x0007C0..=0x0007FF => Some(UnicodeBlock::NKo),
367            0x000800..=0x00083F => Some(UnicodeBlock::Samaritan),
368            0x000840..=0x00085F => Some(UnicodeBlock::Mandaic),
369            0x000860..=0x00086F => Some(UnicodeBlock::SyriacSupplement),
370            0x000870..=0x00089F => Some(UnicodeBlock::ArabicExtendedB),
371            0x0008A0..=0x0008FF => Some(UnicodeBlock::ArabicExtendedA),
372            0x000900..=0x00097F => Some(UnicodeBlock::Devanagari),
373            0x000980..=0x0009FF => Some(UnicodeBlock::Bengali),
374            0x000A00..=0x000A7F => Some(UnicodeBlock::Gurmukhi),
375            0x000A80..=0x000AFF => Some(UnicodeBlock::Gujarati),
376            0x000B00..=0x000B7F => Some(UnicodeBlock::Oriya),
377            0x000B80..=0x000BFF => Some(UnicodeBlock::Tamil),
378            0x000C00..=0x000C7F => Some(UnicodeBlock::Telugu),
379            0x000C80..=0x000CFF => Some(UnicodeBlock::Kannada),
380            0x000D00..=0x000D7F => Some(UnicodeBlock::Malayalam),
381            0x000D80..=0x000DFF => Some(UnicodeBlock::Sinhala),
382            0x000E00..=0x000E7F => Some(UnicodeBlock::Thai),
383            0x000E80..=0x000EFF => Some(UnicodeBlock::Lao),
384            0x000F00..=0x000FFF => Some(UnicodeBlock::Tibetan),
385            0x001000..=0x00109F => Some(UnicodeBlock::Myanmar),
386            0x0010A0..=0x0010FF => Some(UnicodeBlock::Georgian),
387            0x001100..=0x0011FF => Some(UnicodeBlock::HangulJamo),
388            0x001200..=0x00137F => Some(UnicodeBlock::Ethiopic),
389            0x001380..=0x00139F => Some(UnicodeBlock::EthiopicSupplement),
390            0x0013A0..=0x0013FF => Some(UnicodeBlock::Cherokee),
391            0x001400..=0x00167F => Some(UnicodeBlock::UnifiedCanadianAboriginalSyllabics),
392            0x001680..=0x00169F => Some(UnicodeBlock::Ogham),
393            0x0016A0..=0x0016FF => Some(UnicodeBlock::Runic),
394            0x001700..=0x00171F => Some(UnicodeBlock::Tagalog),
395            0x001720..=0x00173F => Some(UnicodeBlock::Hanunoo),
396            0x001740..=0x00175F => Some(UnicodeBlock::Buhid),
397            0x001760..=0x00177F => Some(UnicodeBlock::Tagbanwa),
398            0x001780..=0x0017FF => Some(UnicodeBlock::Khmer),
399            0x001800..=0x0018AF => Some(UnicodeBlock::Mongolian),
400            0x0018B0..=0x0018FF => Some(UnicodeBlock::UnifiedCanadianAboriginalSyllabicsExtended),
401            0x001900..=0x00194F => Some(UnicodeBlock::Limbu),
402            0x001950..=0x00197F => Some(UnicodeBlock::TaiLe),
403            0x001980..=0x0019DF => Some(UnicodeBlock::NewTaiLue),
404            0x0019E0..=0x0019FF => Some(UnicodeBlock::KhmerSymbols),
405            0x001A00..=0x001A1F => Some(UnicodeBlock::Buginese),
406            0x001A20..=0x001AAF => Some(UnicodeBlock::TaiTham),
407            0x001AB0..=0x001AFF => Some(UnicodeBlock::CombiningDiacriticalMarksExtended),
408            0x001B00..=0x001B7F => Some(UnicodeBlock::Balinese),
409            0x001B80..=0x001BBF => Some(UnicodeBlock::Sundanese),
410            0x001BC0..=0x001BFF => Some(UnicodeBlock::Batak),
411            0x001C00..=0x001C4F => Some(UnicodeBlock::Lepcha),
412            0x001C50..=0x001C7F => Some(UnicodeBlock::OlChiki),
413            0x001C80..=0x001C8F => Some(UnicodeBlock::CyrillicExtendedC),
414            0x001C90..=0x001CBF => Some(UnicodeBlock::GeorgianExtended),
415            0x001CC0..=0x001CCF => Some(UnicodeBlock::SundaneseSupplement),
416            0x001CD0..=0x001CFF => Some(UnicodeBlock::VedicExtensions),
417            0x001D00..=0x001D7F => Some(UnicodeBlock::PhoneticExtensions),
418            0x001D80..=0x001DBF => Some(UnicodeBlock::PhoneticExtensionsSupplement),
419            0x001DC0..=0x001DFF => Some(UnicodeBlock::CombiningDiacriticalMarksSupplement),
420            0x001E00..=0x001EFF => Some(UnicodeBlock::LatinExtendedAdditional),
421            0x001F00..=0x001FFF => Some(UnicodeBlock::GreekExtended),
422            0x002000..=0x00206F => Some(UnicodeBlock::GeneralPunctuation),
423            0x002070..=0x00209F => Some(UnicodeBlock::SuperscriptsandSubscripts),
424            0x0020A0..=0x0020CF => Some(UnicodeBlock::CurrencySymbols),
425            0x0020D0..=0x0020FF => Some(UnicodeBlock::CombiningDiacriticalMarksforSymbols),
426            0x002100..=0x00214F => Some(UnicodeBlock::LetterlikeSymbols),
427            0x002150..=0x00218F => Some(UnicodeBlock::NumberForms),
428            0x002190..=0x0021FF => Some(UnicodeBlock::Arrows),
429            0x002200..=0x0022FF => Some(UnicodeBlock::MathematicalOperators),
430            0x002300..=0x0023FF => Some(UnicodeBlock::MiscellaneousTechnical),
431            0x002400..=0x00243F => Some(UnicodeBlock::ControlPictures),
432            0x002440..=0x00245F => Some(UnicodeBlock::OpticalCharacterRecognition),
433            0x002460..=0x0024FF => Some(UnicodeBlock::EnclosedAlphanumerics),
434            0x002500..=0x00257F => Some(UnicodeBlock::BoxDrawing),
435            0x002580..=0x00259F => Some(UnicodeBlock::BlockElements),
436            0x0025A0..=0x0025FF => Some(UnicodeBlock::GeometricShapes),
437            0x002600..=0x0026FF => Some(UnicodeBlock::MiscellaneousSymbols),
438            0x002700..=0x0027BF => Some(UnicodeBlock::Dingbats),
439            0x0027C0..=0x0027EF => Some(UnicodeBlock::MiscellaneousMathematicalSymbolsA),
440            0x0027F0..=0x0027FF => Some(UnicodeBlock::SupplementalArrowsA),
441            0x002800..=0x0028FF => Some(UnicodeBlock::BraillePatterns),
442            0x002900..=0x00297F => Some(UnicodeBlock::SupplementalArrowsB),
443            0x002980..=0x0029FF => Some(UnicodeBlock::MiscellaneousMathematicalSymbolsB),
444            0x002A00..=0x002AFF => Some(UnicodeBlock::SupplementalMathematicalOperators),
445            0x002B00..=0x002BFF => Some(UnicodeBlock::MiscellaneousSymbolsandArrows),
446            0x002C00..=0x002C5F => Some(UnicodeBlock::Glagolitic),
447            0x002C60..=0x002C7F => Some(UnicodeBlock::LatinExtendedC),
448            0x002C80..=0x002CFF => Some(UnicodeBlock::Coptic),
449            0x002D00..=0x002D2F => Some(UnicodeBlock::GeorgianSupplement),
450            0x002D30..=0x002D7F => Some(UnicodeBlock::Tifinagh),
451            0x002D80..=0x002DDF => Some(UnicodeBlock::EthiopicExtended),
452            0x002DE0..=0x002DFF => Some(UnicodeBlock::CyrillicExtendedA),
453            0x002E00..=0x002E7F => Some(UnicodeBlock::SupplementalPunctuation),
454            0x002E80..=0x002EFF => Some(UnicodeBlock::CJKRadicalsSupplement),
455            0x002F00..=0x002FDF => Some(UnicodeBlock::KangxiRadicals),
456            0x002FF0..=0x002FFF => Some(UnicodeBlock::IdeographicDescriptionCharacters),
457            0x003000..=0x00303F => Some(UnicodeBlock::CJKSymbolsandPunctuation),
458            0x003040..=0x00309F => Some(UnicodeBlock::Hiragana),
459            0x0030A0..=0x0030FF => Some(UnicodeBlock::Katakana),
460            0x003100..=0x00312F => Some(UnicodeBlock::Bopomofo),
461            0x003130..=0x00318F => Some(UnicodeBlock::HangulCompatibilityJamo),
462            0x003190..=0x00319F => Some(UnicodeBlock::Kanbun),
463            0x0031A0..=0x0031BF => Some(UnicodeBlock::BopomofoExtended),
464            0x0031C0..=0x0031EF => Some(UnicodeBlock::CJKStrokes),
465            0x0031F0..=0x0031FF => Some(UnicodeBlock::KatakanaPhoneticExtensions),
466            0x003200..=0x0032FF => Some(UnicodeBlock::EnclosedCJKLettersandMonths),
467            0x003300..=0x0033FF => Some(UnicodeBlock::CJKCompatibility),
468            0x003400..=0x004DBF => Some(UnicodeBlock::CJKUnifiedIdeographsExtensionA),
469            0x004DC0..=0x004DFF => Some(UnicodeBlock::YijingHexagramSymbols),
470            0x004E00..=0x009FFF => Some(UnicodeBlock::CJKUnifiedIdeographs),
471            0x00A000..=0x00A48F => Some(UnicodeBlock::YiSyllables),
472            0x00A490..=0x00A4CF => Some(UnicodeBlock::YiRadicals),
473            0x00A4D0..=0x00A4FF => Some(UnicodeBlock::Lisu),
474            0x00A500..=0x00A63F => Some(UnicodeBlock::Vai),
475            0x00A640..=0x00A69F => Some(UnicodeBlock::CyrillicExtendedB),
476            0x00A6A0..=0x00A6FF => Some(UnicodeBlock::Bamum),
477            0x00A700..=0x00A71F => Some(UnicodeBlock::ModifierToneLetters),
478            0x00A720..=0x00A7FF => Some(UnicodeBlock::LatinExtendedD),
479            0x00A800..=0x00A82F => Some(UnicodeBlock::SylotiNagri),
480            0x00A830..=0x00A83F => Some(UnicodeBlock::CommonIndicNumberForms),
481            0x00A840..=0x00A87F => Some(UnicodeBlock::Phagspa),
482            0x00A880..=0x00A8DF => Some(UnicodeBlock::Saurashtra),
483            0x00A8E0..=0x00A8FF => Some(UnicodeBlock::DevanagariExtended),
484            0x00A900..=0x00A92F => Some(UnicodeBlock::KayahLi),
485            0x00A930..=0x00A95F => Some(UnicodeBlock::Rejang),
486            0x00A960..=0x00A97F => Some(UnicodeBlock::HangulJamoExtendedA),
487            0x00A980..=0x00A9DF => Some(UnicodeBlock::Javanese),
488            0x00A9E0..=0x00A9FF => Some(UnicodeBlock::MyanmarExtendedB),
489            0x00AA00..=0x00AA5F => Some(UnicodeBlock::Cham),
490            0x00AA60..=0x00AA7F => Some(UnicodeBlock::MyanmarExtendedA),
491            0x00AA80..=0x00AADF => Some(UnicodeBlock::TaiViet),
492            0x00AAE0..=0x00AAFF => Some(UnicodeBlock::MeeteiMayekExtensions),
493            0x00AB00..=0x00AB2F => Some(UnicodeBlock::EthiopicExtendedA),
494            0x00AB30..=0x00AB6F => Some(UnicodeBlock::LatinExtendedE),
495            0x00AB70..=0x00ABBF => Some(UnicodeBlock::CherokeeSupplement),
496            0x00ABC0..=0x00ABFF => Some(UnicodeBlock::MeeteiMayek),
497            0x00AC00..=0x00D7AF => Some(UnicodeBlock::HangulSyllables),
498            0x00D7B0..=0x00D7FF => Some(UnicodeBlock::HangulJamoExtendedB),
499            0x00D800..=0x00DB7F => Some(UnicodeBlock::HighSurrogates),
500            0x00DB80..=0x00DBFF => Some(UnicodeBlock::HighPrivateUseSurrogates),
501            0x00DC00..=0x00DFFF => Some(UnicodeBlock::LowSurrogates),
502            0x00E000..=0x00F8FF => Some(UnicodeBlock::PrivateUseArea),
503            0x00F900..=0x00FAFF => Some(UnicodeBlock::CJKCompatibilityIdeographs),
504            0x00FB00..=0x00FB4F => Some(UnicodeBlock::AlphabeticPresentationForms),
505            0x00FB50..=0x00FDFF => Some(UnicodeBlock::ArabicPresentationFormsA),
506            0x00FE00..=0x00FE0F => Some(UnicodeBlock::VariationSelectors),
507            0x00FE10..=0x00FE1F => Some(UnicodeBlock::VerticalForms),
508            0x00FE20..=0x00FE2F => Some(UnicodeBlock::CombiningHalfMarks),
509            0x00FE30..=0x00FE4F => Some(UnicodeBlock::CJKCompatibilityForms),
510            0x00FE50..=0x00FE6F => Some(UnicodeBlock::SmallFormVariants),
511            0x00FE70..=0x00FEFF => Some(UnicodeBlock::ArabicPresentationFormsB),
512            0x00FF00..=0x00FFEF => Some(UnicodeBlock::HalfwidthandFullwidthForms),
513            0x00FFF0..=0x00FFFF => Some(UnicodeBlock::Specials),
514            0x010000..=0x01007F => Some(UnicodeBlock::LinearBSyllabary),
515            0x010080..=0x0100FF => Some(UnicodeBlock::LinearBIdeograms),
516            0x010100..=0x01013F => Some(UnicodeBlock::AegeanNumbers),
517            0x010140..=0x01018F => Some(UnicodeBlock::AncientGreekNumbers),
518            0x010190..=0x0101CF => Some(UnicodeBlock::AncientSymbols),
519            0x0101D0..=0x0101FF => Some(UnicodeBlock::PhaistosDisc),
520            0x010280..=0x01029F => Some(UnicodeBlock::Lycian),
521            0x0102A0..=0x0102DF => Some(UnicodeBlock::Carian),
522            0x0102E0..=0x0102FF => Some(UnicodeBlock::CopticEpactNumbers),
523            0x010300..=0x01032F => Some(UnicodeBlock::OldItalic),
524            0x010330..=0x01034F => Some(UnicodeBlock::Gothic),
525            0x010350..=0x01037F => Some(UnicodeBlock::OldPermic),
526            0x010380..=0x01039F => Some(UnicodeBlock::Ugaritic),
527            0x0103A0..=0x0103DF => Some(UnicodeBlock::OldPersian),
528            0x010400..=0x01044F => Some(UnicodeBlock::Deseret),
529            0x010450..=0x01047F => Some(UnicodeBlock::Shavian),
530            0x010480..=0x0104AF => Some(UnicodeBlock::Osmanya),
531            0x0104B0..=0x0104FF => Some(UnicodeBlock::Osage),
532            0x010500..=0x01052F => Some(UnicodeBlock::Elbasan),
533            0x010530..=0x01056F => Some(UnicodeBlock::CaucasianAlbanian),
534            0x010570..=0x0105BF => Some(UnicodeBlock::Vithkuqi),
535            0x010600..=0x01077F => Some(UnicodeBlock::LinearA),
536            0x010780..=0x0107BF => Some(UnicodeBlock::LatinExtendedF),
537            0x010800..=0x01083F => Some(UnicodeBlock::CypriotSyllabary),
538            0x010840..=0x01085F => Some(UnicodeBlock::ImperialAramaic),
539            0x010860..=0x01087F => Some(UnicodeBlock::Palmyrene),
540            0x010880..=0x0108AF => Some(UnicodeBlock::Nabataean),
541            0x0108E0..=0x0108FF => Some(UnicodeBlock::Hatran),
542            0x010900..=0x01091F => Some(UnicodeBlock::Phoenician),
543            0x010920..=0x01093F => Some(UnicodeBlock::Lydian),
544            0x010980..=0x01099F => Some(UnicodeBlock::MeroiticHieroglyphs),
545            0x0109A0..=0x0109FF => Some(UnicodeBlock::MeroiticCursive),
546            0x010A00..=0x010A5F => Some(UnicodeBlock::Kharoshthi),
547            0x010A60..=0x010A7F => Some(UnicodeBlock::OldSouthArabian),
548            0x010A80..=0x010A9F => Some(UnicodeBlock::OldNorthArabian),
549            0x010AC0..=0x010AFF => Some(UnicodeBlock::Manichaean),
550            0x010B00..=0x010B3F => Some(UnicodeBlock::Avestan),
551            0x010B40..=0x010B5F => Some(UnicodeBlock::InscriptionalParthian),
552            0x010B60..=0x010B7F => Some(UnicodeBlock::InscriptionalPahlavi),
553            0x010B80..=0x010BAF => Some(UnicodeBlock::PsalterPahlavi),
554            0x010C00..=0x010C4F => Some(UnicodeBlock::OldTurkic),
555            0x010C80..=0x010CFF => Some(UnicodeBlock::OldHungarian),
556            0x010D00..=0x010D3F => Some(UnicodeBlock::HanifiRohingya),
557            0x010E60..=0x010E7F => Some(UnicodeBlock::RumiNumeralSymbols),
558            0x010E80..=0x010EBF => Some(UnicodeBlock::Yezidi),
559            0x010EC0..=0x010EFF => Some(UnicodeBlock::ArabicExtendedC),
560            0x010F00..=0x010F2F => Some(UnicodeBlock::OldSogdian),
561            0x010F30..=0x010F6F => Some(UnicodeBlock::Sogdian),
562            0x010F70..=0x010FAF => Some(UnicodeBlock::OldUyghur),
563            0x010FB0..=0x010FDF => Some(UnicodeBlock::Chorasmian),
564            0x010FE0..=0x010FFF => Some(UnicodeBlock::Elymaic),
565            0x011000..=0x01107F => Some(UnicodeBlock::Brahmi),
566            0x011080..=0x0110CF => Some(UnicodeBlock::Kaithi),
567            0x0110D0..=0x0110FF => Some(UnicodeBlock::SoraSompeng),
568            0x011100..=0x01114F => Some(UnicodeBlock::Chakma),
569            0x011150..=0x01117F => Some(UnicodeBlock::Mahajani),
570            0x011180..=0x0111DF => Some(UnicodeBlock::Sharada),
571            0x0111E0..=0x0111FF => Some(UnicodeBlock::SinhalaArchaicNumbers),
572            0x011200..=0x01124F => Some(UnicodeBlock::Khojki),
573            0x011280..=0x0112AF => Some(UnicodeBlock::Multani),
574            0x0112B0..=0x0112FF => Some(UnicodeBlock::Khudawadi),
575            0x011300..=0x01137F => Some(UnicodeBlock::Grantha),
576            0x011400..=0x01147F => Some(UnicodeBlock::Newa),
577            0x011480..=0x0114DF => Some(UnicodeBlock::Tirhuta),
578            0x011580..=0x0115FF => Some(UnicodeBlock::Siddham),
579            0x011600..=0x01165F => Some(UnicodeBlock::Modi),
580            0x011660..=0x01167F => Some(UnicodeBlock::MongolianSupplement),
581            0x011680..=0x0116CF => Some(UnicodeBlock::Takri),
582            0x011700..=0x01174F => Some(UnicodeBlock::Ahom),
583            0x011800..=0x01184F => Some(UnicodeBlock::Dogra),
584            0x0118A0..=0x0118FF => Some(UnicodeBlock::WarangCiti),
585            0x011900..=0x01195F => Some(UnicodeBlock::DivesAkuru),
586            0x0119A0..=0x0119FF => Some(UnicodeBlock::Nandinagari),
587            0x011A00..=0x011A4F => Some(UnicodeBlock::ZanabazarSquare),
588            0x011A50..=0x011AAF => Some(UnicodeBlock::Soyombo),
589            0x011AB0..=0x011ABF => Some(UnicodeBlock::UnifiedCanadianAboriginalSyllabicsExtendedA),
590            0x011AC0..=0x011AFF => Some(UnicodeBlock::PauCinHau),
591            0x011B00..=0x011B5F => Some(UnicodeBlock::DevanagariExtendedA),
592            0x011C00..=0x011C6F => Some(UnicodeBlock::Bhaiksuki),
593            0x011C70..=0x011CBF => Some(UnicodeBlock::Marchen),
594            0x011D00..=0x011D5F => Some(UnicodeBlock::MasaramGondi),
595            0x011D60..=0x011DAF => Some(UnicodeBlock::GunjalaGondi),
596            0x011EE0..=0x011EFF => Some(UnicodeBlock::Makasar),
597            0x011F00..=0x011F5F => Some(UnicodeBlock::Kawi),
598            0x011FB0..=0x011FBF => Some(UnicodeBlock::LisuSupplement),
599            0x011FC0..=0x011FFF => Some(UnicodeBlock::TamilSupplement),
600            0x012000..=0x0123FF => Some(UnicodeBlock::Cuneiform),
601            0x012400..=0x01247F => Some(UnicodeBlock::CuneiformNumbersandPunctuation),
602            0x012480..=0x01254F => Some(UnicodeBlock::EarlyDynasticCuneiform),
603            0x012F90..=0x012FFF => Some(UnicodeBlock::CyproMinoan),
604            0x013000..=0x01342F => Some(UnicodeBlock::EgyptianHieroglyphs),
605            0x013430..=0x01345F => Some(UnicodeBlock::EgyptianHieroglyphFormatControls),
606            0x014400..=0x01467F => Some(UnicodeBlock::AnatolianHieroglyphs),
607            0x016800..=0x016A3F => Some(UnicodeBlock::BamumSupplement),
608            0x016A40..=0x016A6F => Some(UnicodeBlock::Mro),
609            0x016A70..=0x016ACF => Some(UnicodeBlock::Tangsa),
610            0x016AD0..=0x016AFF => Some(UnicodeBlock::BassaVah),
611            0x016B00..=0x016B8F => Some(UnicodeBlock::PahawhHmong),
612            0x016E40..=0x016E9F => Some(UnicodeBlock::Medefaidrin),
613            0x016F00..=0x016F9F => Some(UnicodeBlock::Miao),
614            0x016FE0..=0x016FFF => Some(UnicodeBlock::IdeographicSymbolsandPunctuation),
615            0x017000..=0x0187FF => Some(UnicodeBlock::Tangut),
616            0x018800..=0x018AFF => Some(UnicodeBlock::TangutComponents),
617            0x018B00..=0x018CFF => Some(UnicodeBlock::KhitanSmallScript),
618            0x018D00..=0x018D7F => Some(UnicodeBlock::TangutSupplement),
619            0x01AFF0..=0x01AFFF => Some(UnicodeBlock::KanaExtendedB),
620            0x01B000..=0x01B0FF => Some(UnicodeBlock::KanaSupplement),
621            0x01B100..=0x01B12F => Some(UnicodeBlock::KanaExtendedA),
622            0x01B130..=0x01B16F => Some(UnicodeBlock::SmallKanaExtension),
623            0x01B170..=0x01B2FF => Some(UnicodeBlock::Nushu),
624            0x01BC00..=0x01BC9F => Some(UnicodeBlock::Duployan),
625            0x01BCA0..=0x01BCAF => Some(UnicodeBlock::ShorthandFormatControls),
626            0x01CF00..=0x01CFCF => Some(UnicodeBlock::ZnamennyMusicalNotation),
627            0x01D000..=0x01D0FF => Some(UnicodeBlock::ByzantineMusicalSymbols),
628            0x01D100..=0x01D1FF => Some(UnicodeBlock::MusicalSymbols),
629            0x01D200..=0x01D24F => Some(UnicodeBlock::AncientGreekMusicalNotation),
630            0x01D2C0..=0x01D2DF => Some(UnicodeBlock::KaktovikNumerals),
631            0x01D2E0..=0x01D2FF => Some(UnicodeBlock::MayanNumerals),
632            0x01D300..=0x01D35F => Some(UnicodeBlock::TaiXuanJingSymbols),
633            0x01D360..=0x01D37F => Some(UnicodeBlock::CountingRodNumerals),
634            0x01D400..=0x01D7FF => Some(UnicodeBlock::MathematicalAlphanumericSymbols),
635            0x01D800..=0x01DAAF => Some(UnicodeBlock::SuttonSignWriting),
636            0x01DF00..=0x01DFFF => Some(UnicodeBlock::LatinExtendedG),
637            0x01E000..=0x01E02F => Some(UnicodeBlock::GlagoliticSupplement),
638            0x01E030..=0x01E08F => Some(UnicodeBlock::CyrillicExtendedD),
639            0x01E100..=0x01E14F => Some(UnicodeBlock::NyiakengPuachueHmong),
640            0x01E290..=0x01E2BF => Some(UnicodeBlock::Toto),
641            0x01E2C0..=0x01E2FF => Some(UnicodeBlock::Wancho),
642            0x01E4D0..=0x01E4FF => Some(UnicodeBlock::NagMundari),
643            0x01E7E0..=0x01E7FF => Some(UnicodeBlock::EthiopicExtendedB),
644            0x01E800..=0x01E8DF => Some(UnicodeBlock::MendeKikakui),
645            0x01E900..=0x01E95F => Some(UnicodeBlock::Adlam),
646            0x01EC70..=0x01ECBF => Some(UnicodeBlock::IndicSiyaqNumbers),
647            0x01ED00..=0x01ED4F => Some(UnicodeBlock::OttomanSiyaqNumbers),
648            0x01EE00..=0x01EEFF => Some(UnicodeBlock::ArabicMathematicalAlphabeticSymbols),
649            0x01F000..=0x01F02F => Some(UnicodeBlock::MahjongTiles),
650            0x01F030..=0x01F09F => Some(UnicodeBlock::DominoTiles),
651            0x01F0A0..=0x01F0FF => Some(UnicodeBlock::PlayingCards),
652            0x01F100..=0x01F1FF => Some(UnicodeBlock::EnclosedAlphanumericSupplement),
653            0x01F200..=0x01F2FF => Some(UnicodeBlock::EnclosedIdeographicSupplement),
654            0x01F300..=0x01F5FF => Some(UnicodeBlock::MiscellaneousSymbolsandPictographs),
655            0x01F600..=0x01F64F => Some(UnicodeBlock::Emoticons),
656            0x01F650..=0x01F67F => Some(UnicodeBlock::OrnamentalDingbats),
657            0x01F680..=0x01F6FF => Some(UnicodeBlock::TransportandMapSymbols),
658            0x01F700..=0x01F77F => Some(UnicodeBlock::AlchemicalSymbols),
659            0x01F780..=0x01F7FF => Some(UnicodeBlock::GeometricShapesExtended),
660            0x01F800..=0x01F8FF => Some(UnicodeBlock::SupplementalArrowsC),
661            0x01F900..=0x01F9FF => Some(UnicodeBlock::SupplementalSymbolsandPictographs),
662            0x01FA00..=0x01FA6F => Some(UnicodeBlock::ChessSymbols),
663            0x01FA70..=0x01FAFF => Some(UnicodeBlock::SymbolsandPictographsExtendedA),
664            0x01FB00..=0x01FBFF => Some(UnicodeBlock::SymbolsforLegacyComputing),
665            0x020000..=0x02A6DF => Some(UnicodeBlock::CJKUnifiedIdeographsExtensionB),
666            0x02A700..=0x02B73F => Some(UnicodeBlock::CJKUnifiedIdeographsExtensionC),
667            0x02B740..=0x02B81F => Some(UnicodeBlock::CJKUnifiedIdeographsExtensionD),
668            0x02B820..=0x02CEAF => Some(UnicodeBlock::CJKUnifiedIdeographsExtensionE),
669            0x02CEB0..=0x02EBEF => Some(UnicodeBlock::CJKUnifiedIdeographsExtensionF),
670            0x02EBF0..=0x02EE5F => Some(UnicodeBlock::CJKUnifiedIdeographsExtensionI),
671            0x02F800..=0x02FA1F => Some(UnicodeBlock::CJKCompatibilityIdeographsSupplement),
672            0x030000..=0x03134F => Some(UnicodeBlock::CJKUnifiedIdeographsExtensionG),
673            0x031350..=0x0323AF => Some(UnicodeBlock::CJKUnifiedIdeographsExtensionH),
674            0x0E0000..=0x0E007F => Some(UnicodeBlock::Tags),
675            0x0E0100..=0x0E01EF => Some(UnicodeBlock::VariationSelectorsSupplement),
676            0x0F0000..=0x0FFFFF => Some(UnicodeBlock::SupplementaryPrivateUseAreaA),
677            0x100000..=0x10FFFF => Some(UnicodeBlock::SupplementaryPrivateUseAreaB),
678            _ => None,
679        }
680    }
681}