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