1use 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}