diff options
| author | Thomas Voss <mail@thomasvoss.com> | 2024-04-15 13:28:29 +0200 | 
|---|---|---|
| committer | Thomas Voss <mail@thomasvoss.com> | 2024-04-15 13:28:29 +0200 | 
| commit | a7ca6ec2e70dd32ae83f725a93003b0cb147992e (patch) | |
| tree | 2d049e71a338b3a0cc8d9a1c308a67bd961b2fd0 | |
| parent | d8ebd9aa3f650101d81b51ca0aad1f65e21169cc (diff) | |
Add uprop_get_blk()
| -rw-r--r-- | data/Blocks | 364 | ||||
| -rwxr-xr-x | gen/data-files | 1 | ||||
| -rwxr-xr-x | gen/prop/blk | 395 | ||||
| -rw-r--r-- | include/unicode/prop.h | 335 | ||||
| -rw-r--r-- | lib/unicode/prop/uprop_get_blk.c | 381 | 
5 files changed, 1476 insertions, 0 deletions
| diff --git a/data/Blocks b/data/Blocks new file mode 100644 index 0000000..8fa3eaa --- /dev/null +++ b/data/Blocks @@ -0,0 +1,364 @@ +# Blocks-15.1.0.txt +# Date: 2023-07-28, 15:47:20 GMT +# © 2023 Unicode®, Inc. +# For terms of use, see https://www.unicode.org/terms_of_use.html +# +# Unicode Character Database +# For documentation, see https://www.unicode.org/reports/tr44/ +# +# Format: +# Start Code..End Code; Block Name + +# ================================================ + +# Note:   When comparing block names, casing, whitespace, hyphens, +#         and underbars are ignored. +#         For example, "Latin Extended-A" and "latin extended a" are equivalent. +#         For more information on the comparison of property values, +#            see UAX #44: https://www.unicode.org/reports/tr44/ +# +#  All block ranges start with a value where (cp MOD 16) = 0, +#  and end with a value where (cp MOD 16) = 15. In other words, +#  the last hexadecimal digit of the start of range is ...0 +#  and the last hexadecimal digit of the end of range is ...F. +#  This constraint on block ranges guarantees that allocations +#  are done in terms of whole columns, and that code chart display +#  never involves splitting columns in the charts. +# +#  All code points not explicitly listed for Block +#  have the value No_Block. + +# Property:	Block +# +# @missing: 0000..10FFFF; No_Block + +0000..007F; Basic Latin +0080..00FF; Latin-1 Supplement +0100..017F; Latin Extended-A +0180..024F; Latin Extended-B +0250..02AF; IPA Extensions +02B0..02FF; Spacing Modifier Letters +0300..036F; Combining Diacritical Marks +0370..03FF; Greek and Coptic +0400..04FF; Cyrillic +0500..052F; Cyrillic Supplement +0530..058F; Armenian +0590..05FF; Hebrew +0600..06FF; Arabic +0700..074F; Syriac +0750..077F; Arabic Supplement +0780..07BF; Thaana +07C0..07FF; NKo +0800..083F; Samaritan +0840..085F; Mandaic +0860..086F; Syriac Supplement +0870..089F; Arabic Extended-B +08A0..08FF; Arabic Extended-A +0900..097F; Devanagari +0980..09FF; Bengali +0A00..0A7F; Gurmukhi +0A80..0AFF; Gujarati +0B00..0B7F; Oriya +0B80..0BFF; Tamil +0C00..0C7F; Telugu +0C80..0CFF; Kannada +0D00..0D7F; Malayalam +0D80..0DFF; Sinhala +0E00..0E7F; Thai +0E80..0EFF; Lao +0F00..0FFF; Tibetan +1000..109F; Myanmar +10A0..10FF; Georgian +1100..11FF; Hangul Jamo +1200..137F; Ethiopic +1380..139F; Ethiopic Supplement +13A0..13FF; Cherokee +1400..167F; Unified Canadian Aboriginal Syllabics +1680..169F; Ogham +16A0..16FF; Runic +1700..171F; Tagalog +1720..173F; Hanunoo +1740..175F; Buhid +1760..177F; Tagbanwa +1780..17FF; Khmer +1800..18AF; Mongolian +18B0..18FF; Unified Canadian Aboriginal Syllabics Extended +1900..194F; Limbu +1950..197F; Tai Le +1980..19DF; New Tai Lue +19E0..19FF; Khmer Symbols +1A00..1A1F; Buginese +1A20..1AAF; Tai Tham +1AB0..1AFF; Combining Diacritical Marks Extended +1B00..1B7F; Balinese +1B80..1BBF; Sundanese +1BC0..1BFF; Batak +1C00..1C4F; Lepcha +1C50..1C7F; Ol Chiki +1C80..1C8F; Cyrillic Extended-C +1C90..1CBF; Georgian Extended +1CC0..1CCF; Sundanese Supplement +1CD0..1CFF; Vedic Extensions +1D00..1D7F; Phonetic Extensions +1D80..1DBF; Phonetic Extensions Supplement +1DC0..1DFF; Combining Diacritical Marks Supplement +1E00..1EFF; Latin Extended Additional +1F00..1FFF; Greek Extended +2000..206F; General Punctuation +2070..209F; Superscripts and Subscripts +20A0..20CF; Currency Symbols +20D0..20FF; Combining Diacritical Marks for Symbols +2100..214F; Letterlike Symbols +2150..218F; Number Forms +2190..21FF; Arrows +2200..22FF; Mathematical Operators +2300..23FF; Miscellaneous Technical +2400..243F; Control Pictures +2440..245F; Optical Character Recognition +2460..24FF; Enclosed Alphanumerics +2500..257F; Box Drawing +2580..259F; Block Elements +25A0..25FF; Geometric Shapes +2600..26FF; Miscellaneous Symbols +2700..27BF; Dingbats +27C0..27EF; Miscellaneous Mathematical Symbols-A +27F0..27FF; Supplemental Arrows-A +2800..28FF; Braille Patterns +2900..297F; Supplemental Arrows-B +2980..29FF; Miscellaneous Mathematical Symbols-B +2A00..2AFF; Supplemental Mathematical Operators +2B00..2BFF; Miscellaneous Symbols and Arrows +2C00..2C5F; Glagolitic +2C60..2C7F; Latin Extended-C +2C80..2CFF; Coptic +2D00..2D2F; Georgian Supplement +2D30..2D7F; Tifinagh +2D80..2DDF; Ethiopic Extended +2DE0..2DFF; Cyrillic Extended-A +2E00..2E7F; Supplemental Punctuation +2E80..2EFF; CJK Radicals Supplement +2F00..2FDF; Kangxi Radicals +2FF0..2FFF; Ideographic Description Characters +3000..303F; CJK Symbols and Punctuation +3040..309F; Hiragana +30A0..30FF; Katakana +3100..312F; Bopomofo +3130..318F; Hangul Compatibility Jamo +3190..319F; Kanbun +31A0..31BF; Bopomofo Extended +31C0..31EF; CJK Strokes +31F0..31FF; Katakana Phonetic Extensions +3200..32FF; Enclosed CJK Letters and Months +3300..33FF; CJK Compatibility +3400..4DBF; CJK Unified Ideographs Extension A +4DC0..4DFF; Yijing Hexagram Symbols +4E00..9FFF; CJK Unified Ideographs +A000..A48F; Yi Syllables +A490..A4CF; Yi Radicals +A4D0..A4FF; Lisu +A500..A63F; Vai +A640..A69F; Cyrillic Extended-B +A6A0..A6FF; Bamum +A700..A71F; Modifier Tone Letters +A720..A7FF; Latin Extended-D +A800..A82F; Syloti Nagri +A830..A83F; Common Indic Number Forms +A840..A87F; Phags-pa +A880..A8DF; Saurashtra +A8E0..A8FF; Devanagari Extended +A900..A92F; Kayah Li +A930..A95F; Rejang +A960..A97F; Hangul Jamo Extended-A +A980..A9DF; Javanese +A9E0..A9FF; Myanmar Extended-B +AA00..AA5F; Cham +AA60..AA7F; Myanmar Extended-A +AA80..AADF; Tai Viet +AAE0..AAFF; Meetei Mayek Extensions +AB00..AB2F; Ethiopic Extended-A +AB30..AB6F; Latin Extended-E +AB70..ABBF; Cherokee Supplement +ABC0..ABFF; Meetei Mayek +AC00..D7AF; Hangul Syllables +D7B0..D7FF; Hangul Jamo Extended-B +D800..DB7F; High Surrogates +DB80..DBFF; High Private Use Surrogates +DC00..DFFF; Low Surrogates +E000..F8FF; Private Use Area +F900..FAFF; CJK Compatibility Ideographs +FB00..FB4F; Alphabetic Presentation Forms +FB50..FDFF; Arabic Presentation Forms-A +FE00..FE0F; Variation Selectors +FE10..FE1F; Vertical Forms +FE20..FE2F; Combining Half Marks +FE30..FE4F; CJK Compatibility Forms +FE50..FE6F; Small Form Variants +FE70..FEFF; Arabic Presentation Forms-B +FF00..FFEF; Halfwidth and Fullwidth Forms +FFF0..FFFF; Specials +10000..1007F; Linear B Syllabary +10080..100FF; Linear B Ideograms +10100..1013F; Aegean Numbers +10140..1018F; Ancient Greek Numbers +10190..101CF; Ancient Symbols +101D0..101FF; Phaistos Disc +10280..1029F; Lycian +102A0..102DF; Carian +102E0..102FF; Coptic Epact Numbers +10300..1032F; Old Italic +10330..1034F; Gothic +10350..1037F; Old Permic +10380..1039F; Ugaritic +103A0..103DF; Old Persian +10400..1044F; Deseret +10450..1047F; Shavian +10480..104AF; Osmanya +104B0..104FF; Osage +10500..1052F; Elbasan +10530..1056F; Caucasian Albanian +10570..105BF; Vithkuqi +10600..1077F; Linear A +10780..107BF; Latin Extended-F +10800..1083F; Cypriot Syllabary +10840..1085F; Imperial Aramaic +10860..1087F; Palmyrene +10880..108AF; Nabataean +108E0..108FF; Hatran +10900..1091F; Phoenician +10920..1093F; Lydian +10980..1099F; Meroitic Hieroglyphs +109A0..109FF; Meroitic Cursive +10A00..10A5F; Kharoshthi +10A60..10A7F; Old South Arabian +10A80..10A9F; Old North Arabian +10AC0..10AFF; Manichaean +10B00..10B3F; Avestan +10B40..10B5F; Inscriptional Parthian +10B60..10B7F; Inscriptional Pahlavi +10B80..10BAF; Psalter Pahlavi +10C00..10C4F; Old Turkic +10C80..10CFF; Old Hungarian +10D00..10D3F; Hanifi Rohingya +10E60..10E7F; Rumi Numeral Symbols +10E80..10EBF; Yezidi +10EC0..10EFF; Arabic Extended-C +10F00..10F2F; Old Sogdian +10F30..10F6F; Sogdian +10F70..10FAF; Old Uyghur +10FB0..10FDF; Chorasmian +10FE0..10FFF; Elymaic +11000..1107F; Brahmi +11080..110CF; Kaithi +110D0..110FF; Sora Sompeng +11100..1114F; Chakma +11150..1117F; Mahajani +11180..111DF; Sharada +111E0..111FF; Sinhala Archaic Numbers +11200..1124F; Khojki +11280..112AF; Multani +112B0..112FF; Khudawadi +11300..1137F; Grantha +11400..1147F; Newa +11480..114DF; Tirhuta +11580..115FF; Siddham +11600..1165F; Modi +11660..1167F; Mongolian Supplement +11680..116CF; Takri +11700..1174F; Ahom +11800..1184F; Dogra +118A0..118FF; Warang Citi +11900..1195F; Dives Akuru +119A0..119FF; Nandinagari +11A00..11A4F; Zanabazar Square +11A50..11AAF; Soyombo +11AB0..11ABF; Unified Canadian Aboriginal Syllabics Extended-A +11AC0..11AFF; Pau Cin Hau +11B00..11B5F; Devanagari Extended-A +11C00..11C6F; Bhaiksuki +11C70..11CBF; Marchen +11D00..11D5F; Masaram Gondi +11D60..11DAF; Gunjala Gondi +11EE0..11EFF; Makasar +11F00..11F5F; Kawi +11FB0..11FBF; Lisu Supplement +11FC0..11FFF; Tamil Supplement +12000..123FF; Cuneiform +12400..1247F; Cuneiform Numbers and Punctuation +12480..1254F; Early Dynastic Cuneiform +12F90..12FFF; Cypro-Minoan +13000..1342F; Egyptian Hieroglyphs +13430..1345F; Egyptian Hieroglyph Format Controls +14400..1467F; Anatolian Hieroglyphs +16800..16A3F; Bamum Supplement +16A40..16A6F; Mro +16A70..16ACF; Tangsa +16AD0..16AFF; Bassa Vah +16B00..16B8F; Pahawh Hmong +16E40..16E9F; Medefaidrin +16F00..16F9F; Miao +16FE0..16FFF; Ideographic Symbols and Punctuation +17000..187FF; Tangut +18800..18AFF; Tangut Components +18B00..18CFF; Khitan Small Script +18D00..18D7F; Tangut Supplement +1AFF0..1AFFF; Kana Extended-B +1B000..1B0FF; Kana Supplement +1B100..1B12F; Kana Extended-A +1B130..1B16F; Small Kana Extension +1B170..1B2FF; Nushu +1BC00..1BC9F; Duployan +1BCA0..1BCAF; Shorthand Format Controls +1CF00..1CFCF; Znamenny Musical Notation +1D000..1D0FF; Byzantine Musical Symbols +1D100..1D1FF; Musical Symbols +1D200..1D24F; Ancient Greek Musical Notation +1D2C0..1D2DF; Kaktovik Numerals +1D2E0..1D2FF; Mayan Numerals +1D300..1D35F; Tai Xuan Jing Symbols +1D360..1D37F; Counting Rod Numerals +1D400..1D7FF; Mathematical Alphanumeric Symbols +1D800..1DAAF; Sutton SignWriting +1DF00..1DFFF; Latin Extended-G +1E000..1E02F; Glagolitic Supplement +1E030..1E08F; Cyrillic Extended-D +1E100..1E14F; Nyiakeng Puachue Hmong +1E290..1E2BF; Toto +1E2C0..1E2FF; Wancho +1E4D0..1E4FF; Nag Mundari +1E7E0..1E7FF; Ethiopic Extended-B +1E800..1E8DF; Mende Kikakui +1E900..1E95F; Adlam +1EC70..1ECBF; Indic Siyaq Numbers +1ED00..1ED4F; Ottoman Siyaq Numbers +1EE00..1EEFF; Arabic Mathematical Alphabetic Symbols +1F000..1F02F; Mahjong Tiles +1F030..1F09F; Domino Tiles +1F0A0..1F0FF; Playing Cards +1F100..1F1FF; Enclosed Alphanumeric Supplement +1F200..1F2FF; Enclosed Ideographic Supplement +1F300..1F5FF; Miscellaneous Symbols and Pictographs +1F600..1F64F; Emoticons +1F650..1F67F; Ornamental Dingbats +1F680..1F6FF; Transport and Map Symbols +1F700..1F77F; Alchemical Symbols +1F780..1F7FF; Geometric Shapes Extended +1F800..1F8FF; Supplemental Arrows-C +1F900..1F9FF; Supplemental Symbols and Pictographs +1FA00..1FA6F; Chess Symbols +1FA70..1FAFF; Symbols and Pictographs Extended-A +1FB00..1FBFF; Symbols for Legacy Computing +20000..2A6DF; CJK Unified Ideographs Extension B +2A700..2B73F; CJK Unified Ideographs Extension C +2B740..2B81F; CJK Unified Ideographs Extension D +2B820..2CEAF; CJK Unified Ideographs Extension E +2CEB0..2EBEF; CJK Unified Ideographs Extension F +2EBF0..2EE5F; CJK Unified Ideographs Extension I +2F800..2FA1F; CJK Compatibility Ideographs Supplement +30000..3134F; CJK Unified Ideographs Extension G +31350..323AF; CJK Unified Ideographs Extension H +E0000..E007F; Tags +E0100..E01EF; Variation Selectors Supplement +F0000..FFFFF; Supplementary Private Use Area-A +100000..10FFFF; Supplementary Private Use Area-B + +# EOF diff --git a/gen/data-files b/gen/data-files index 801f591..b2c4197 100755 --- a/gen/data-files +++ b/gen/data-files @@ -9,6 +9,7 @@ readonly BASE=https://www.unicode.org/Public/UCD/latest/ucd  readonly PATHS='  auxiliary/GraphemeBreakProperty  BidiBrackets +Blocks  DerivedAge  DerivedCoreProperties  DerivedNormalizationProps diff --git a/gen/prop/blk b/gen/prop/blk new file mode 100755 index 0000000..574f5af --- /dev/null +++ b/gen/prop/blk @@ -0,0 +1,395 @@ +#!/bin/sh + +set -e +cd "${0%/*}/../.." +exec >lib/unicode/prop/uprop_get_blk.c + +gawk ' +BEGIN { +	FS = " *(; *|#.*)" + +	map["adlam"]                                            = "ADLAM" +	map["aegean_numbers"]                                   = "AEGEAN_NUMBERS" +	map["ahom"]                                             = "AHOM" +	map["alchemical_symbols"]                               = "ALCHEMICAL" +	map["alphabetic_presentation_forms"]                    = "ALPHABETIC_PF" +	map["anatolian_hieroglyphs"]                            = "ANATOLIAN_HIEROGLYPHS" +	map["ancient_greek_musical_notation"]                   = "ANCIENT_GREEK_MUSIC" +	map["ancient_greek_numbers"]                            = "ANCIENT_GREEK_NUMBERS" +	map["ancient_symbols"]                                  = "ANCIENT_SYMBOLS" +	map["arabic"]                                           = "ARABIC" +	map["arabic_extended_a"]                                = "ARABIC_EXT_A" +	map["arabic_extended_b"]                                = "ARABIC_EXT_B" +	map["arabic_extended_c"]                                = "ARABIC_EXT_C" +	map["arabic_mathematical_alphabetic_symbols"]           = "ARABIC_MATH" +	map["arabic_presentation_forms_a"]                      = "ARABIC_PF_A" +	map["arabic_presentation_forms_b"]                      = "ARABIC_PF_B" +	map["arabic_supplement"]                                = "ARABIC_SUP" +	map["armenian"]                                         = "ARMENIAN" +	map["arrows"]                                           = "ARROWS" +	map["avestan"]                                          = "AVESTAN" +	map["balinese"]                                         = "BALINESE" +	map["bamum"]                                            = "BAMUM" +	map["bamum_supplement"]                                 = "BAMUM_SUP" +	map["basic_latin"]                                      = "ASCII" +	map["bassa_vah"]                                        = "BASSA_VAH" +	map["batak"]                                            = "BATAK" +	map["bengali"]                                          = "BENGALI" +	map["bhaiksuki"]                                        = "BHAIKSUKI" +	map["block_elements"]                                   = "BLOCK_ELEMENTS" +	map["bopomofo"]                                         = "BOPOMOFO" +	map["bopomofo_extended"]                                = "BOPOMOFO_EXT" +	map["box_drawing"]                                      = "BOX_DRAWING" +	map["brahmi"]                                           = "BRAHMI" +	map["braille_patterns"]                                 = "BRAILLE" +	map["buginese"]                                         = "BUGINESE" +	map["buhid"]                                            = "BUHID" +	map["byzantine_musical_symbols"]                        = "BYZANTINE_MUSIC" +	map["carian"]                                           = "CARIAN" +	map["caucasian_albanian"]                               = "CAUCASIAN_ALBANIAN" +	map["chakma"]                                           = "CHAKMA" +	map["cham"]                                             = "CHAM" +	map["cherokee"]                                         = "CHEROKEE" +	map["cherokee_supplement"]                              = "CHEROKEE_SUP" +	map["chess_symbols"]                                    = "CHESS_SYMBOLS" +	map["chorasmian"]                                       = "CHORASMIAN" +	map["cjk_compatibility"]                                = "CJK_COMPAT" +	map["cjk_compatibility_forms"]                          = "CJK_COMPAT_FORMS" +	map["cjk_compatibility_ideographs"]                     = "CJK_COMPAT_IDEOGRAPHS" +	map["cjk_compatibility_ideographs_supplement"]          = "CJK_COMPAT_IDEOGRAPHS_SUP" +	map["cjk_radicals_supplement"]                          = "CJK_RADICALS_SUP" +	map["cjk_strokes"]                                      = "CJK_STROKES" +	map["cjk_symbols_and_punctuation"]                      = "CJK_SYMBOLS" +	map["cjk_unified_ideographs"]                           = "CJK" +	map["cjk_unified_ideographs_extension_a"]               = "CJK_EXT_A" +	map["cjk_unified_ideographs_extension_b"]               = "CJK_EXT_B" +	map["cjk_unified_ideographs_extension_c"]               = "CJK_EXT_C" +	map["cjk_unified_ideographs_extension_d"]               = "CJK_EXT_D" +	map["cjk_unified_ideographs_extension_e"]               = "CJK_EXT_E" +	map["cjk_unified_ideographs_extension_f"]               = "CJK_EXT_F" +	map["cjk_unified_ideographs_extension_g"]               = "CJK_EXT_G" +	map["cjk_unified_ideographs_extension_h"]               = "CJK_EXT_H" +	map["cjk_unified_ideographs_extension_i"]               = "CJK_EXT_I" +	map["combining_diacritical_marks"]                      = "DIACRITICALS" +	map["combining_diacritical_marks_extended"]             = "DIACRITICALS_EXT" +	map["combining_diacritical_marks_for_symbols"]          = "DIACRITICALS_FOR_SYMBOLS" +	map["combining_diacritical_marks_supplement"]           = "DIACRITICALS_SUP" +	map["combining_half_marks"]                             = "HALF_MARKS" +	map["common_indic_number_forms"]                        = "INDIC_NUMBER_FORMS" +	map["control_pictures"]                                 = "CONTROL_PICTURES" +	map["coptic"]                                           = "COPTIC" +	map["coptic_epact_numbers"]                             = "COPTIC_EPACT_NUMBERS" +	map["counting_rod_numerals"]                            = "COUNTING_ROD" +	map["cuneiform"]                                        = "CUNEIFORM" +	map["cuneiform_numbers_and_punctuation"]                = "CUNEIFORM_NUMBERS" +	map["currency_symbols"]                                 = "CURRENCY_SYMBOLS" +	map["cypriot_syllabary"]                                = "CYPRIOT_SYLLABARY" +	map["cypro_minoan"]                                     = "CYPRO_MINOAN" +	map["cyrillic"]                                         = "CYRILLIC" +	map["cyrillic_extended_a"]                              = "CYRILLIC_EXT_A" +	map["cyrillic_extended_b"]                              = "CYRILLIC_EXT_B" +	map["cyrillic_extended_c"]                              = "CYRILLIC_EXT_C" +	map["cyrillic_extended_d"]                              = "CYRILLIC_EXT_D" +	map["cyrillic_supplement"]                              = "CYRILLIC_SUP" +	map["deseret"]                                          = "DESERET" +	map["devanagari"]                                       = "DEVANAGARI" +	map["devanagari_extended_a"]                            = "DEVANAGARI_EXT_A" +	map["devanagari_extended"]                              = "DEVANAGARI_EXT" +	map["dingbats"]                                         = "DINGBATS" +	map["dives_akuru"]                                      = "DIVES_AKURU" +	map["dogra"]                                            = "DOGRA" +	map["domino_tiles"]                                     = "DOMINO" +	map["duployan"]                                         = "DUPLOYAN" +	map["early_dynastic_cuneiform"]                         = "EARLY_DYNASTIC_CUNEIFORM" +	map["egyptian_hieroglyph_format_controls"]              = "EGYPTIAN_HIEROGLYPH_FORMAT_CONTROLS" +	map["egyptian_hieroglyphs"]                             = "EGYPTIAN_HIEROGLYPHS" +	map["elbasan"]                                          = "ELBASAN" +	map["elymaic"]                                          = "ELYMAIC" +	map["emoticons"]                                        = "EMOTICONS" +	map["enclosed_alphanumerics"]                           = "ENCLOSED_ALPHANUM" +	map["enclosed_alphanumeric_supplement"]                 = "ENCLOSED_ALPHANUM_SUP" +	map["enclosed_cjk_letters_and_months"]                  = "ENCLOSED_CJK" +	map["enclosed_ideographic_supplement"]                  = "ENCLOSED_IDEOGRAPHIC_SUP" +	map["ethiopic"]                                         = "ETHIOPIC" +	map["ethiopic_extended_a"]                              = "ETHIOPIC_EXT_A" +	map["ethiopic_extended_b"]                              = "ETHIOPIC_EXT_B" +	map["ethiopic_extended"]                                = "ETHIOPIC_EXT" +	map["ethiopic_supplement"]                              = "ETHIOPIC_SUP" +	map["general_punctuation"]                              = "PUNCTUATION" +	map["geometric_shapes_extended"]                        = "GEOMETRIC_SHAPES_EXT" +	map["geometric_shapes"]                                 = "GEOMETRIC_SHAPES" +	map["georgian_extended"]                                = "GEORGIAN_EXT" +	map["georgian"]                                         = "GEORGIAN" +	map["georgian_supplement"]                              = "GEORGIAN_SUP" +	map["glagolitic"]                                       = "GLAGOLITIC" +	map["glagolitic_supplement"]                            = "GLAGOLITIC_SUP" +	map["gothic"]                                           = "GOTHIC" +	map["grantha"]                                          = "GRANTHA" +	map["greek_and_coptic"]                                 = "GREEK" +	map["greek_extended"]                                   = "GREEK_EXT" +	map["gujarati"]                                         = "GUJARATI" +	map["gunjala_gondi"]                                    = "GUNJALA_GONDI" +	map["gurmukhi"]                                         = "GURMUKHI" +	map["halfwidth_and_fullwidth_forms"]                    = "HALF_AND_FULL_FORMS" +	map["hangul_compatibility_jamo"]                        = "COMPAT_JAMO" +	map["hangul_jamo_extended_a"]                           = "JAMO_EXT_A" +	map["hangul_jamo_extended_b"]                           = "JAMO_EXT_B" +	map["hangul_jamo"]                                      = "JAMO" +	map["hangul_syllables"]                                 = "HANGUL" +	map["hanifi_rohingya"]                                  = "HANIFI_ROHINGYA" +	map["hanunoo"]                                          = "HANUNOO" +	map["hatran"]                                           = "HATRAN" +	map["hebrew"]                                           = "HEBREW" +	map["high_private_use_surrogates"]                      = "HIGH_PU_SURROGATES" +	map["high_surrogates"]                                  = "HIGH_SURROGATES" +	map["hiragana"]                                         = "HIRAGANA" +	map["ideographic_description_characters"]               = "IDC" +	map["ideographic_symbols_and_punctuation"]              = "IDEOGRAPHIC_SYMBOLS" +	map["imperial_aramaic"]                                 = "IMPERIAL_ARAMAIC" +	map["indic_siyaq_numbers"]                              = "INDIC_SIYAQ_NUMBERS" +	map["inscriptional_pahlavi"]                            = "INSCRIPTIONAL_PAHLAVI" +	map["inscriptional_parthian"]                           = "INSCRIPTIONAL_PARTHIAN" +	map["ipa_extensions"]                                   = "IPA_EXT" +	map["javanese"]                                         = "JAVANESE" +	map["kaithi"]                                           = "KAITHI" +	map["kaktovik_numerals"]                                = "KAKTOVIK_NUMERALS" +	map["kana_extended_a"]                                  = "KANA_EXT_A" +	map["kana_extended_b"]                                  = "KANA_EXT_B" +	map["kana_supplement"]                                  = "KANA_SUP" +	map["kanbun"]                                           = "KANBUN" +	map["kangxi_radicals"]                                  = "KANGXI" +	map["kannada"]                                          = "KANNADA" +	map["katakana"]                                         = "KATAKANA" +	map["katakana_phonetic_extensions"]                     = "KATAKANA_EXT" +	map["kawi"]                                             = "KAWI" +	map["kayah_li"]                                         = "KAYAH_LI" +	map["kharoshthi"]                                       = "KHAROSHTHI" +	map["khitan_small_script"]                              = "KHITAN_SMALL_SCRIPT" +	map["khmer"]                                            = "KHMER" +	map["khmer_symbols"]                                    = "KHMER_SYMBOLS" +	map["khojki"]                                           = "KHOJKI" +	map["khudawadi"]                                        = "KHUDAWADI" +	map["lao"]                                              = "LAO" +	map["latin_1_supplement"]                               = "LATIN_1_SUP" +	map["latin_extended_additional"]                        = "LATIN_EXT_ADDITIONAL" +	map["latin_extended_a"]                                 = "LATIN_EXT_A" +	map["latin_extended_b"]                                 = "LATIN_EXT_B" +	map["latin_extended_c"]                                 = "LATIN_EXT_C" +	map["latin_extended_d"]                                 = "LATIN_EXT_D" +	map["latin_extended_e"]                                 = "LATIN_EXT_E" +	map["latin_extended_f"]                                 = "LATIN_EXT_F" +	map["latin_extended_g"]                                 = "LATIN_EXT_G" +	map["lepcha"]                                           = "LEPCHA" +	map["letterlike_symbols"]                               = "LETTERLIKE_SYMBOLS" +	map["limbu"]                                            = "LIMBU" +	map["linear_a"]                                         = "LINEAR_A" +	map["linear_b_ideograms"]                               = "LINEAR_B_IDEOGRAMS" +	map["linear_b_syllabary"]                               = "LINEAR_B_SYLLABARY" +	map["lisu"]                                             = "LISU" +	map["lisu_supplement"]                                  = "LISU_SUP" +	map["low_surrogates"]                                   = "LOW_SURROGATES" +	map["lycian"]                                           = "LYCIAN" +	map["lydian"]                                           = "LYDIAN" +	map["mahajani"]                                         = "MAHAJANI" +	map["mahjong_tiles"]                                    = "MAHJONG" +	map["makasar"]                                          = "MAKASAR" +	map["malayalam"]                                        = "MALAYALAM" +	map["mandaic"]                                          = "MANDAIC" +	map["manichaean"]                                       = "MANICHAEAN" +	map["marchen"]                                          = "MARCHEN" +	map["masaram_gondi"]                                    = "MASARAM_GONDI" +	map["mathematical_alphanumeric_symbols"]                = "MATH_ALPHANUM" +	map["mathematical_operators"]                           = "MATH_OPERATORS" +	map["mayan_numerals"]                                   = "MAYAN_NUMERALS" +	map["medefaidrin"]                                      = "MEDEFAIDRIN" +	map["meetei_mayek_extensions"]                          = "MEETEI_MAYEK_EXT" +	map["meetei_mayek"]                                     = "MEETEI_MAYEK" +	map["mende_kikakui"]                                    = "MENDE_KIKAKUI" +	map["meroitic_cursive"]                                 = "MEROITIC_CURSIVE" +	map["meroitic_hieroglyphs"]                             = "MEROITIC_HIEROGLYPHS" +	map["miao"]                                             = "MIAO" +	map["miscellaneous_mathematical_symbols_a"]             = "MISC_MATH_SYMBOLS_A" +	map["miscellaneous_mathematical_symbols_b"]             = "MISC_MATH_SYMBOLS_B" +	map["miscellaneous_symbols_and_arrows"]                 = "MISC_ARROWS" +	map["miscellaneous_symbols_and_pictographs"]            = "MISC_PICTOGRAPHS" +	map["miscellaneous_symbols"]                            = "MISC_SYMBOLS" +	map["miscellaneous_technical"]                          = "MISC_TECHNICAL" +	map["modifier_tone_letters"]                            = "MODIFIER_TONE_LETTERS" +	map["modi"]                                             = "MODI" +	map["mongolian"]                                        = "MONGOLIAN" +	map["mongolian_supplement"]                             = "MONGOLIAN_SUP" +	map["mro"]                                              = "MRO" +	map["multani"]                                          = "MULTANI" +	map["musical_symbols"]                                  = "MUSIC" +	map["myanmar_extended_a"]                               = "MYANMAR_EXT_A" +	map["myanmar_extended_b"]                               = "MYANMAR_EXT_B" +	map["myanmar"]                                          = "MYANMAR" +	map["nabataean"]                                        = "NABATAEAN" +	map["nag_mundari"]                                      = "NAG_MUNDARI" +	map["nandinagari"]                                      = "NANDINAGARI" +	map["newa"]                                             = "NEWA" +	map["new_tai_lue"]                                      = "NEW_TAI_LUE" +	map["nko"]                                              = "NKO" +	map["number_forms"]                                     = "NUMBER_FORMS" +	map["nushu"]                                            = "NUSHU" +	map["nyiakeng_puachue_hmong"]                           = "NYIAKENG_PUACHUE_HMONG" +	map["ogham"]                                            = "OGHAM" +	map["ol_chiki"]                                         = "OL_CHIKI" +	map["old_hungarian"]                                    = "OLD_HUNGARIAN" +	map["old_italic"]                                       = "OLD_ITALIC" +	map["old_north_arabian"]                                = "OLD_NORTH_ARABIAN" +	map["old_permic"]                                       = "OLD_PERMIC" +	map["old_persian"]                                      = "OLD_PERSIAN" +	map["old_sogdian"]                                      = "OLD_SOGDIAN" +	map["old_south_arabian"]                                = "OLD_SOUTH_ARABIAN" +	map["old_turkic"]                                       = "OLD_TURKIC" +	map["old_uyghur"]                                       = "OLD_UYGHUR" +	map["optical_character_recognition"]                    = "OCR" +	map["oriya"]                                            = "ORIYA" +	map["ornamental_dingbats"]                              = "ORNAMENTAL_DINGBATS" +	map["osage"]                                            = "OSAGE" +	map["osmanya"]                                          = "OSMANYA" +	map["ottoman_siyaq_numbers"]                            = "OTTOMAN_SIYAQ_NUMBERS" +	map["pahawh_hmong"]                                     = "PAHAWH_HMONG" +	map["palmyrene"]                                        = "PALMYRENE" +	map["pau_cin_hau"]                                      = "PAU_CIN_HAU" +	map["phags_pa"]                                         = "PHAGS_PA" +	map["phaistos_disc"]                                    = "PHAISTOS" +	map["phoenician"]                                       = "PHOENICIAN" +	map["phonetic_extensions"]                              = "PHONETIC_EXT" +	map["phonetic_extensions_supplement"]                   = "PHONETIC_EXT_SUP" +	map["playing_cards"]                                    = "PLAYING_CARDS" +	map["private_use_area"]                                 = "PUA" +	map["psalter_pahlavi"]                                  = "PSALTER_PAHLAVI" +	map["rejang"]                                           = "REJANG" +	map["rumi_numeral_symbols"]                             = "RUMI" +	map["runic"]                                            = "RUNIC" +	map["samaritan"]                                        = "SAMARITAN" +	map["saurashtra"]                                       = "SAURASHTRA" +	map["sharada"]                                          = "SHARADA" +	map["shavian"]                                          = "SHAVIAN" +	map["shorthand_format_controls"]                        = "SHORTHAND_FORMAT_CONTROLS" +	map["siddham"]                                          = "SIDDHAM" +	map["sinhala_archaic_numbers"]                          = "SINHALA_ARCHAIC_NUMBERS" +	map["sinhala"]                                          = "SINHALA" +	map["small_form_variants"]                              = "SMALL_FORMS" +	map["small_kana_extension"]                             = "SMALL_KANA_EXT" +	map["sogdian"]                                          = "SOGDIAN" +	map["sora_sompeng"]                                     = "SORA_SOMPENG" +	map["soyombo"]                                          = "SOYOMBO" +	map["spacing_modifier_letters"]                         = "MODIFIER_LETTERS" +	map["specials"]                                         = "SPECIALS" +	map["sundanese"]                                        = "SUNDANESE" +	map["sundanese_supplement"]                             = "SUNDANESE_SUP" +	map["superscripts_and_subscripts"]                      = "SUPER_AND_SUB" +	map["supplemental_arrows_a"]                            = "SUP_ARROWS_A" +	map["supplemental_arrows_b"]                            = "SUP_ARROWS_B" +	map["supplemental_arrows_c"]                            = "SUP_ARROWS_C" +	map["supplemental_mathematical_operators"]              = "SUP_MATH_OPERATORS" +	map["supplemental_punctuation"]                         = "SUP_PUNCTUATION" +	map["supplemental_symbols_and_pictographs"]             = "SUP_SYMBOLS_AND_PICTOGRAPHS" +	map["supplementary_private_use_area_a"]                 = "SUP_PUA_A" +	map["supplementary_private_use_area_b"]                 = "SUP_PUA_B" +	map["sutton_signwriting"]                               = "SUTTON_SIGNWRITING" +	map["syloti_nagri"]                                     = "SYLOTI_NAGRI" +	map["symbols_and_pictographs_extended_a"]               = "SYMBOLS_AND_PICTOGRAPHS_EXT_A" +	map["symbols_for_legacy_computing"]                     = "SYMBOLS_FOR_LEGACY_COMPUTING" +	map["syriac_supplement"]                                = "SYRIAC_SUP" +	map["syriac"]                                           = "SYRIAC" +	map["tagalog"]                                          = "TAGALOG" +	map["tagbanwa"]                                         = "TAGBANWA" +	map["tags"]                                             = "TAGS" +	map["tai_le"]                                           = "TAI_LE" +	map["tai_tham"]                                         = "TAI_THAM" +	map["tai_viet"]                                         = "TAI_VIET" +	map["tai_xuan_jing_symbols"]                            = "TAI_XUAN_JING" +	map["takri"]                                            = "TAKRI" +	map["tamil_supplement"]                                 = "TAMIL_SUP" +	map["tamil"]                                            = "TAMIL" +	map["tangsa"]                                           = "TANGSA" +	map["tangut_components"]                                = "TANGUT_COMPONENTS" +	map["tangut_supplement"]                                = "TANGUT_SUP" +	map["tangut"]                                           = "TANGUT" +	map["telugu"]                                           = "TELUGU" +	map["thaana"]                                           = "THAANA" +	map["thai"]                                             = "THAI" +	map["tibetan"]                                          = "TIBETAN" +	map["tifinagh"]                                         = "TIFINAGH" +	map["tirhuta"]                                          = "TIRHUTA" +	map["toto"]                                             = "TOTO" +	map["transport_and_map_symbols"]                        = "TRANSPORT_AND_MAP" +	map["ugaritic"]                                         = "UGARITIC" +	map["unified_canadian_aboriginal_syllabics_extended_a"] = "UCAS_EXT_A" +	map["unified_canadian_aboriginal_syllabics_extended"]   = "UCAS_EXT" +	map["unified_canadian_aboriginal_syllabics"]            = "UCAS" +	map["vai"]                                              = "VAI" +	map["variation_selectors_supplement"]                   = "VS_SUP" +	map["variation_selectors"]                              = "VS" +	map["vedic_extensions"]                                 = "VEDIC_EXT" +	map["vertical_forms"]                                   = "VERTICAL_FORMS" +	map["vithkuqi"]                                         = "VITHKUQI" +	map["wancho"]                                           = "WANCHO" +	map["warang_citi"]                                      = "WARANG_CITI" +	map["yezidi"]                                           = "YEZIDI" +	map["yijing_hexagram_symbols"]                          = "YIJING" +	map["yi_radicals"]                                      = "YI_RADICALS" +	map["yi_syllables"]                                     = "YI_SYLLABLES" +	map["zanabazar_square"]                                 = "ZANABAZAR_SQUARE" +	map["znamenny_musical_notation"]                        = "ZNAMENNY_MUSIC" + +	print "/* This file is autogenerated by gen/prop/blk; DO NOT EDIT. */" +	print "" +	print "#include \"__bsearch.h\"" +	print "#include \"macros.h\"" +	print "#include \"rune.h\"" +	print "#include \"unicode/prop.h\"" +	print "" +} + +/^[^#]/ { +	n = split($1, a, /\.\./) +	lo = strtonum("0X" a[1]) +	hi = strtonum("0X" a[n]) + +	for (i = lo; i <= hi; i++) { +		gsub(/^; /, "", $2) +		gsub(/[- ]/, "_", $2) +		props[i] = "BLK_" map[tolower($2)] +	} +} + +END { +	print "static constexpr enum uprop_blk lookup_lat1[] = {" +	for (i = 0; i < 0x100; i++) { +		if (i % 8 == 0) +			printf "\t" +		printf "%-15s,%s", props[i] ? props[i] : 0, i % 8 == 7 ? "\n" : " " +	} +	print "};" +	print "" + +	print "static const struct {" +	print "\trune lo, hi;" +	print "\tenum uprop_blk val;" +	print "} lookup[] = {" + +	for (i = 0x100; i <= 0x10FFFF; i++) { +		if (!props[i]) +			continue +		lo = i +		while (props[lo] == props[i + 1]) +			i++ +		printf "\t{RUNE_C(0x%06X), RUNE_C(0x%06X), %s},\n", lo, i, props[i] +	} + +	print "};" +	print "" +	print "__MLIB_DEFINE_BSEARCH(enum uprop_blk, lookup, BLK_NB)" +	print "" +	print "enum uprop_blk" +	print "uprop_get_blk(rune ch)" +	print "{" +	print "\treturn ch <= lengthof(lookup_lat1) ? lookup_lat1[ch] : mlib_lookup(ch);" +	print "}" +} +' data/Blocks | sed 's/\s*$//' diff --git a/include/unicode/prop.h b/include/unicode/prop.h index 98941f0..ee030ae 100644 --- a/include/unicode/prop.h +++ b/include/unicode/prop.h @@ -83,6 +83,340 @@ uprop_age_minor(enum uprop_age a)  	return a & 0xFF;  } +enum uprop_blk { +	BLK_NB = 0,                    /* No Block */ +	BLK_ADLAM,                     /* Adlam */ +	BLK_AEGEAN_NUMBERS,            /* Aegean Numbers */ +	BLK_AHOM,                      /* Ahom */ +	BLK_ALCHEMICAL,                /* Alchemical Symbols */ +	BLK_ALPHABETIC_PF,             /* Alphabetic Presentation Forms */ +	BLK_ANATOLIAN_HIEROGLYPHS,     /* Anatolian Hieroglyphs */ +	BLK_ANCIENT_GREEK_MUSIC,       /* Ancient Greek Musical Notation */ +	BLK_ANCIENT_GREEK_NUMBERS,     /* Ancient Greek Numbers */ +	BLK_ANCIENT_SYMBOLS,           /* Ancient Symbols */ +	BLK_ARABIC,                    /* Arabic */ +	BLK_ARABIC_EXT_A,              /* Arabic Extended A */ +	BLK_ARABIC_EXT_B,              /* Arabic Extended B */ +	BLK_ARABIC_EXT_C,              /* Arabic Extended C */ +	BLK_ARABIC_MATH,               /* Arabic Mathematical Alphabetic Symbols */ +	BLK_ARABIC_PF_A,               /* Arabic Presentation Forms_A */ +	BLK_ARABIC_PF_B,               /* Arabic Presentation Forms_B */ +	BLK_ARABIC_SUP,                /* Arabic Supplement */ +	BLK_ARMENIAN,                  /* Armenian */ +	BLK_ARROWS,                    /* Arrows */ +	BLK_ASCII,                     /* Basic Latin */ +	BLK_AVESTAN,                   /* Avestan */ +	BLK_BALINESE,                  /* Balinese */ +	BLK_BAMUM,                     /* Bamum */ +	BLK_BAMUM_SUP,                 /* Bamum Supplement */ +	BLK_BASSA_VAH,                 /* Bassa Vah */ +	BLK_BATAK,                     /* Batak */ +	BLK_BENGALI,                   /* Bengali */ +	BLK_BHAIKSUKI,                 /* Bhaiksuki */ +	BLK_BLOCK_ELEMENTS,            /* Block Elements */ +	BLK_BOPOMOFO,                  /* Bopomofo */ +	BLK_BOPOMOFO_EXT,              /* Bopomofo Extended */ +	BLK_BOX_DRAWING,               /* Box Drawing */ +	BLK_BRAHMI,                    /* Brahmi */ +	BLK_BRAILLE,                   /* Braille Patterns */ +	BLK_BUGINESE,                  /* Buginese */ +	BLK_BUHID,                     /* Buhid */ +	BLK_BYZANTINE_MUSIC,           /* Byzantine Musical Symbols */ +	BLK_CARIAN,                    /* Carian */ +	BLK_CAUCASIAN_ALBANIAN,        /* Caucasian Albanian */ +	BLK_CHAKMA,                    /* Chakma */ +	BLK_CHAM,                      /* Cham */ +	BLK_CHEROKEE,                  /* Cherokee */ +	BLK_CHEROKEE_SUP,              /* Cherokee Supplement */ +	BLK_CHESS_SYMBOLS,             /* Chess Symbols */ +	BLK_CHORASMIAN,                /* Chorasmian */ +	BLK_CJK,                       /* CJK Unified Ideographs */ +	BLK_CJK_COMPAT,                /* CJK Compatibility */ +	BLK_CJK_COMPAT_FORMS,          /* CJK Compatibility Forms */ +	BLK_CJK_COMPAT_IDEOGRAPHS,     /* CJK Compatibility Ideographs */ +	BLK_CJK_COMPAT_IDEOGRAPHS_SUP, /* CJK Compatibility Ideographs Supplement */ +	BLK_CJK_EXT_A,                 /* CJK Unified Ideographs Extension A */ +	BLK_CJK_EXT_B,                 /* CJK Unified Ideographs Extension B */ +	BLK_CJK_EXT_C,                 /* CJK Unified Ideographs Extension C */ +	BLK_CJK_EXT_D,                 /* CJK Unified Ideographs Extension D */ +	BLK_CJK_EXT_E,                 /* CJK Unified Ideographs Extension E */ +	BLK_CJK_EXT_F,                 /* CJK Unified Ideographs Extension F */ +	BLK_CJK_EXT_G,                 /* CJK Unified Ideographs Extension G */ +	BLK_CJK_EXT_H,                 /* CJK Unified Ideographs Extension H */ +	BLK_CJK_EXT_I,                 /* CJK Unified Ideographs Extension I */ +	BLK_CJK_RADICALS_SUP,          /* CJK Radicals Supplement */ +	BLK_CJK_STROKES,               /* CJK Strokes */ +	BLK_CJK_SYMBOLS,               /* CJK Symbols And Punctuation */ +	BLK_COMPAT_JAMO,               /* Hangul Compatibility Jamo */ +	BLK_CONTROL_PICTURES,          /* Control Pictures */ +	BLK_COPTIC,                    /* Coptic */ +	BLK_COPTIC_EPACT_NUMBERS,      /* Coptic Epact Numbers */ +	BLK_COUNTING_ROD,              /* Counting Rod Numerals */ +	BLK_CUNEIFORM,                 /* Cuneiform */ +	BLK_CUNEIFORM_NUMBERS,         /* Cuneiform Numbers And Punctuation */ +	BLK_CURRENCY_SYMBOLS,          /* Currency Symbols */ +	BLK_CYPRIOT_SYLLABARY,         /* Cypriot Syllabary */ +	BLK_CYPRO_MINOAN,              /* Cypro Minoan */ +	BLK_CYRILLIC,                  /* Cyrillic */ +	BLK_CYRILLIC_EXT_A,            /* Cyrillic Extended A */ +	BLK_CYRILLIC_EXT_B,            /* Cyrillic Extended B */ +	BLK_CYRILLIC_EXT_C,            /* Cyrillic Extended C */ +	BLK_CYRILLIC_EXT_D,            /* Cyrillic Extended D */ +	BLK_CYRILLIC_SUP,              /* Cyrillic Supplement */ +	BLK_DESERET,                   /* Deseret */ +	BLK_DEVANAGARI,                /* Devanagari */ +	BLK_DEVANAGARI_EXT,            /* Devanagari Extended */ +	BLK_DEVANAGARI_EXT_A,          /* Devanagari Extended A */ +	BLK_DIACRITICALS,              /* Combining Diacritical Marks */ +	BLK_DIACRITICALS_EXT,          /* Combining Diacritical Marks Extended */ +	BLK_DIACRITICALS_FOR_SYMBOLS,  /* Combining Diacritical Marks For Symbols */ +	BLK_DIACRITICALS_SUP,          /* Combining Diacritical Marks Supplement */ +	BLK_DINGBATS,                  /* Dingbats */ +	BLK_DIVES_AKURU,               /* Dives Akuru */ +	BLK_DOGRA,                     /* Dogra */ +	BLK_DOMINO,                    /* Domino Tiles */ +	BLK_DUPLOYAN,                  /* Duployan */ +	BLK_EARLY_DYNASTIC_CUNEIFORM,  /* Early Dynastic Cuneiform */ +	BLK_EGYPTIAN_HIEROGLYPH_FORMAT_CONTROLS, /* Egyptian Hieroglyph Format +	                                          * Controls +	                                          */ +	BLK_EGYPTIAN_HIEROGLYPHS,                /* Egyptian Hieroglyphs */ +	BLK_ELBASAN,                             /* Elbasan */ +	BLK_ELYMAIC,                             /* Elymaic */ +	BLK_EMOTICONS,                           /* Emoticons */ +	BLK_ENCLOSED_ALPHANUM,                   /* Enclosed Alphanumerics */ +	BLK_ENCLOSED_ALPHANUM_SUP,       /* Enclosed Alphanumeric Supplement */ +	BLK_ENCLOSED_CJK,                /* Enclosed CJK_Letters And Months */ +	BLK_ENCLOSED_IDEOGRAPHIC_SUP,    /* Enclosed Ideographic Supplement */ +	BLK_ETHIOPIC,                    /* Ethiopic */ +	BLK_ETHIOPIC_EXT,                /* Ethiopic Extended */ +	BLK_ETHIOPIC_EXT_A,              /* Ethiopic Extended A */ +	BLK_ETHIOPIC_EXT_B,              /* Ethiopic Extended B */ +	BLK_ETHIOPIC_SUP,                /* Ethiopic Supplement */ +	BLK_GEOMETRIC_SHAPES,            /* Geometric Shapes */ +	BLK_GEOMETRIC_SHAPES_EXT,        /* Geometric Shapes Extended */ +	BLK_GEORGIAN,                    /* Georgian */ +	BLK_GEORGIAN_EXT,                /* Georgian Extended */ +	BLK_GEORGIAN_SUP,                /* Georgian Supplement */ +	BLK_GLAGOLITIC,                  /* Glagolitic */ +	BLK_GLAGOLITIC_SUP,              /* Glagolitic Supplement */ +	BLK_GOTHIC,                      /* Gothic */ +	BLK_GRANTHA,                     /* Grantha */ +	BLK_GREEK,                       /* Greek And Coptic */ +	BLK_GREEK_EXT,                   /* Greek Extended */ +	BLK_GUJARATI,                    /* Gujarati */ +	BLK_GUNJALA_GONDI,               /* Gunjala Gondi */ +	BLK_GURMUKHI,                    /* Gurmukhi */ +	BLK_HALF_AND_FULL_FORMS,         /* Halfwidth And Fullwidth Forms */ +	BLK_HALF_MARKS,                  /* Combining Half Marks */ +	BLK_HANGUL,                      /* Hangul Syllables */ +	BLK_HANIFI_ROHINGYA,             /* Hanifi Rohingya */ +	BLK_HANUNOO,                     /* Hanunoo */ +	BLK_HATRAN,                      /* Hatran */ +	BLK_HEBREW,                      /* Hebrew */ +	BLK_HIGH_PU_SURROGATES,          /* High Private Use Surrogates */ +	BLK_HIGH_SURROGATES,             /* High Surrogates */ +	BLK_HIRAGANA,                    /* Hiragana */ +	BLK_IDC,                         /* Ideographic Description Characters */ +	BLK_IDEOGRAPHIC_SYMBOLS,         /* Ideographic Symbols And Punctuation */ +	BLK_IMPERIAL_ARAMAIC,            /* Imperial Aramaic */ +	BLK_INDIC_NUMBER_FORMS,          /* Common Indic Number Forms */ +	BLK_INDIC_SIYAQ_NUMBERS,         /* Indic Siyaq Numbers */ +	BLK_INSCRIPTIONAL_PAHLAVI,       /* Inscriptional Pahlavi */ +	BLK_INSCRIPTIONAL_PARTHIAN,      /* Inscriptional Parthian */ +	BLK_IPA_EXT,                     /* IPA Extensions */ +	BLK_JAMO,                        /* Hangul Jamo */ +	BLK_JAMO_EXT_A,                  /* Hangul Jamo Extended A */ +	BLK_JAMO_EXT_B,                  /* Hangul Jamo Extended B */ +	BLK_JAVANESE,                    /* Javanese */ +	BLK_KAITHI,                      /* Kaithi */ +	BLK_KAKTOVIK_NUMERALS,           /* Kaktovik Numerals */ +	BLK_KANA_EXT_A,                  /* Kana Extended A */ +	BLK_KANA_EXT_B,                  /* Kana Extended B */ +	BLK_KANA_SUP,                    /* Kana Supplement */ +	BLK_KANBUN,                      /* Kanbun */ +	BLK_KANGXI,                      /* Kangxi Radicals */ +	BLK_KANNADA,                     /* Kannada */ +	BLK_KATAKANA,                    /* Katakana */ +	BLK_KATAKANA_EXT,                /* Katakana Phonetic Extensions */ +	BLK_KAWI,                        /* Kawi */ +	BLK_KAYAH_LI,                    /* Kayah Li */ +	BLK_KHAROSHTHI,                  /* Kharoshthi */ +	BLK_KHITAN_SMALL_SCRIPT,         /* Khitan Small Script */ +	BLK_KHMER,                       /* Khmer */ +	BLK_KHMER_SYMBOLS,               /* Khmer Symbols */ +	BLK_KHOJKI,                      /* Khojki */ +	BLK_KHUDAWADI,                   /* Khudawadi */ +	BLK_LAO,                         /* Lao */ +	BLK_LATIN_1_SUP,                 /* Latin 1 Supplement */ +	BLK_LATIN_EXT_A,                 /* Latin Extended A */ +	BLK_LATIN_EXT_ADDITIONAL,        /* Latin Extended Additional */ +	BLK_LATIN_EXT_B,                 /* Latin Extended B */ +	BLK_LATIN_EXT_C,                 /* Latin Extended C */ +	BLK_LATIN_EXT_D,                 /* Latin Extended D */ +	BLK_LATIN_EXT_E,                 /* Latin Extended E */ +	BLK_LATIN_EXT_F,                 /* Latin Extended F */ +	BLK_LATIN_EXT_G,                 /* Latin Extended G */ +	BLK_LEPCHA,                      /* Lepcha */ +	BLK_LETTERLIKE_SYMBOLS,          /* Letterlike Symbols */ +	BLK_LIMBU,                       /* Limbu */ +	BLK_LINEAR_A,                    /* Linear A */ +	BLK_LINEAR_B_IDEOGRAMS,          /* Linear B Ideograms */ +	BLK_LINEAR_B_SYLLABARY,          /* Linear B Syllabary */ +	BLK_LISU,                        /* Lisu */ +	BLK_LISU_SUP,                    /* Lisu Supplement */ +	BLK_LOW_SURROGATES,              /* Low Surrogates */ +	BLK_LYCIAN,                      /* Lycian */ +	BLK_LYDIAN,                      /* Lydian */ +	BLK_MAHAJANI,                    /* Mahajani */ +	BLK_MAHJONG,                     /* Mahjong Tiles */ +	BLK_MAKASAR,                     /* Makasar */ +	BLK_MALAYALAM,                   /* Malayalam */ +	BLK_MANDAIC,                     /* Mandaic */ +	BLK_MANICHAEAN,                  /* Manichaean */ +	BLK_MARCHEN,                     /* Marchen */ +	BLK_MASARAM_GONDI,               /* Masaram Gondi */ +	BLK_MATH_ALPHANUM,               /* Mathematical Alphanumeric Symbols */ +	BLK_MATH_OPERATORS,              /* Mathematical Operators */ +	BLK_MAYAN_NUMERALS,              /* Mayan Numerals */ +	BLK_MEDEFAIDRIN,                 /* Medefaidrin */ +	BLK_MEETEI_MAYEK,                /* Meetei Mayek */ +	BLK_MEETEI_MAYEK_EXT,            /* Meetei Mayek Extensions */ +	BLK_MENDE_KIKAKUI,               /* Mende Kikakui */ +	BLK_MEROITIC_CURSIVE,            /* Meroitic Cursive */ +	BLK_MEROITIC_HIEROGLYPHS,        /* Meroitic Hieroglyphs */ +	BLK_MIAO,                        /* Miao */ +	BLK_MISC_ARROWS,                 /* Miscellaneous Symbols And Arrows */ +	BLK_MISC_MATH_SYMBOLS_A,         /* Miscellaneous Mathematical Symbols A */ +	BLK_MISC_MATH_SYMBOLS_B,         /* Miscellaneous Mathematical Symbols B */ +	BLK_MISC_PICTOGRAPHS,            /* Miscellaneous Symbols And Pictographs */ +	BLK_MISC_SYMBOLS,                /* Miscellaneous Symbols */ +	BLK_MISC_TECHNICAL,              /* Miscellaneous Technical */ +	BLK_MODI,                        /* Modi */ +	BLK_MODIFIER_LETTERS,            /* Spacing Modifier Letters */ +	BLK_MODIFIER_TONE_LETTERS,       /* Modifier Tone Letters */ +	BLK_MONGOLIAN,                   /* Mongolian */ +	BLK_MONGOLIAN_SUP,               /* Mongolian Supplement */ +	BLK_MRO,                         /* Mro */ +	BLK_MULTANI,                     /* Multani */ +	BLK_MUSIC,                       /* Musical Symbols */ +	BLK_MYANMAR,                     /* Myanmar */ +	BLK_MYANMAR_EXT_A,               /* Myanmar Extended A */ +	BLK_MYANMAR_EXT_B,               /* Myanmar Extended B */ +	BLK_NABATAEAN,                   /* Nabataean */ +	BLK_NAG_MUNDARI,                 /* Nag Mundari */ +	BLK_NANDINAGARI,                 /* Nandinagari */ +	BLK_NEW_TAI_LUE,                 /* New Tai Lue */ +	BLK_NEWA,                        /* Newa */ +	BLK_NKO,                         /* NKo */ +	BLK_NUMBER_FORMS,                /* Number Forms */ +	BLK_NUSHU,                       /* Nushu */ +	BLK_NYIAKENG_PUACHUE_HMONG,      /* Nyiakeng Puachue Hmong */ +	BLK_OCR,                         /* Optical Character Recognition */ +	BLK_OGHAM,                       /* Ogham */ +	BLK_OL_CHIKI,                    /* Ol Chiki */ +	BLK_OLD_HUNGARIAN,               /* Old Hungarian */ +	BLK_OLD_ITALIC,                  /* Old Italic */ +	BLK_OLD_NORTH_ARABIAN,           /* Old North Arabian */ +	BLK_OLD_PERMIC,                  /* Old Permic */ +	BLK_OLD_PERSIAN,                 /* Old Persian */ +	BLK_OLD_SOGDIAN,                 /* Old Sogdian */ +	BLK_OLD_SOUTH_ARABIAN,           /* Old South Arabian */ +	BLK_OLD_TURKIC,                  /* Old Turkic */ +	BLK_OLD_UYGHUR,                  /* Old Uyghur */ +	BLK_ORIYA,                       /* Oriya */ +	BLK_ORNAMENTAL_DINGBATS,         /* Ornamental Dingbats */ +	BLK_OSAGE,                       /* Osage */ +	BLK_OSMANYA,                     /* Osmanya */ +	BLK_OTTOMAN_SIYAQ_NUMBERS,       /* Ottoman Siyaq Numbers */ +	BLK_PAHAWH_HMONG,                /* Pahawh Hmong */ +	BLK_PALMYRENE,                   /* Palmyrene */ +	BLK_PAU_CIN_HAU,                 /* Pau Cin Hau */ +	BLK_PHAGS_PA,                    /* Phags Pa */ +	BLK_PHAISTOS,                    /* Phaistos Disc */ +	BLK_PHOENICIAN,                  /* Phoenician */ +	BLK_PHONETIC_EXT,                /* Phonetic Extensions */ +	BLK_PHONETIC_EXT_SUP,            /* Phonetic Extensions Supplement */ +	BLK_PLAYING_CARDS,               /* Playing Cards */ +	BLK_PSALTER_PAHLAVI,             /* Psalter Pahlavi */ +	BLK_PUA,                         /* Private Use Area */ +	BLK_PUNCTUATION,                 /* General Punctuation */ +	BLK_REJANG,                      /* Rejang */ +	BLK_RUMI,                        /* Rumi Numeral Symbols */ +	BLK_RUNIC,                       /* Runic */ +	BLK_SAMARITAN,                   /* Samaritan */ +	BLK_SAURASHTRA,                  /* Saurashtra */ +	BLK_SHARADA,                     /* Sharada */ +	BLK_SHAVIAN,                     /* Shavian */ +	BLK_SHORTHAND_FORMAT_CONTROLS,   /* Shorthand Format Controls */ +	BLK_SIDDHAM,                     /* Siddham */ +	BLK_SINHALA,                     /* Sinhala */ +	BLK_SINHALA_ARCHAIC_NUMBERS,     /* Sinhala Archaic Numbers */ +	BLK_SMALL_FORMS,                 /* Small Form Variants */ +	BLK_SMALL_KANA_EXT,              /* Small Kana Extension */ +	BLK_SOGDIAN,                     /* Sogdian */ +	BLK_SORA_SOMPENG,                /* Sora_Sompeng */ +	BLK_SOYOMBO,                     /* Soyombo */ +	BLK_SPECIALS,                    /* Specials */ +	BLK_SUNDANESE,                   /* Sundanese */ +	BLK_SUNDANESE_SUP,               /* Sundanese_Supplement */ +	BLK_SUP_ARROWS_A,                /* Supplemental Arrows A */ +	BLK_SUP_ARROWS_B,                /* Supplemental Arrows B */ +	BLK_SUP_ARROWS_C,                /* Supplemental Arrows C */ +	BLK_SUP_MATH_OPERATORS,          /* Supplemental Mathematical Operators */ +	BLK_SUP_PUA_A,                   /* Supplementary Private Use Area A */ +	BLK_SUP_PUA_B,                   /* Supplementary Private Use Area B */ +	BLK_SUP_PUNCTUATION,             /* Supplemental Punctuation */ +	BLK_SUP_SYMBOLS_AND_PICTOGRAPHS, /* Supplemental Symbols And Pictographs */ +	BLK_SUPER_AND_SUB,               /* Superscripts And Subscripts */ +	BLK_SUTTON_SIGNWRITING,          /* Sutton SignWriting */ +	BLK_SYLOTI_NAGRI,                /* Syloti Nagri */ +	BLK_SYMBOLS_AND_PICTOGRAPHS_EXT_A, /* Symbols And Pictographs Extended A */ +	BLK_SYMBOLS_FOR_LEGACY_COMPUTING,  /* Symbols For Legacy Computing */ +	BLK_SYRIAC,                        /* Syriac */ +	BLK_SYRIAC_SUP,                    /* Syriac Supplement */ +	BLK_TAGALOG,                       /* Tagalog */ +	BLK_TAGBANWA,                      /* Tagbanwa */ +	BLK_TAGS,                          /* Tags */ +	BLK_TAI_LE,                        /* Tai Le */ +	BLK_TAI_THAM,                      /* Tai Tham */ +	BLK_TAI_VIET,                      /* Tai Viet */ +	BLK_TAI_XUAN_JING,                 /* Tai Xuan Jing Symbols */ +	BLK_TAKRI,                         /* Takri */ +	BLK_TAMIL,                         /* Tamil */ +	BLK_TAMIL_SUP,                     /* Tamil Supplement */ +	BLK_TANGSA,                        /* Tangsa */ +	BLK_TANGUT,                        /* Tangut */ +	BLK_TANGUT_COMPONENTS,             /* Tangut Components */ +	BLK_TANGUT_SUP,                    /* Tangut Supplement */ +	BLK_TELUGU,                        /* Telugu */ +	BLK_THAANA,                        /* Thaana */ +	BLK_THAI,                          /* Thai */ +	BLK_TIBETAN,                       /* Tibetan */ +	BLK_TIFINAGH,                      /* Tifinagh */ +	BLK_TIRHUTA,                       /* Tirhuta */ +	BLK_TOTO,                          /* Toto */ +	BLK_TRANSPORT_AND_MAP,             /* Transport And Map Symbols */ +	BLK_UCAS,             /* Unified Canadian Aboriginal Syllabics */ +	BLK_UCAS_EXT,         /* Unified Canadian Aboriginal Syllabics Extended */ +	BLK_UCAS_EXT_A,       /* Unified Canadian Aboriginal Syllabics Extended A */ +	BLK_UGARITIC,         /* Ugaritic */ +	BLK_VAI,              /* Vai */ +	BLK_VEDIC_EXT,        /* Vedic Extensions */ +	BLK_VERTICAL_FORMS,   /* Vertical_Forms */ +	BLK_VITHKUQI,         /* Vithkuqi */ +	BLK_VS,               /* Variation Selectors */ +	BLK_VS_SUP,           /* Variation Selectors Supplement */ +	BLK_WANCHO,           /* Wancho */ +	BLK_WARANG_CITI,      /* Warang Citi */ +	BLK_YEZIDI,           /* Yezidi */ +	BLK_YI_RADICALS,      /* Yi Radicals */ +	BLK_YI_SYLLABLES,     /* Yi Syllables */ +	BLK_YIJING,           /* Yijing Hexagram Symbols */ +	BLK_ZANABAZAR_SQUARE, /* Zanabazar Square */ +	BLK_ZNAMENNY_MUSIC,   /* Znamenny Musical Notation */ +}; +  enum uprop_bpt {  	BPT_N, /* None */  	BPT_C, /* Close */ @@ -222,6 +556,7 @@ enum uprop_nt {  [[__mlib_uprop_attrs]] double uprop_get_nv(rune);  [[__mlib_uprop_attrs]] enum uprop_age uprop_get_age(rune); +[[__mlib_uprop_attrs]] enum uprop_blk uprop_get_blk(rune);  [[__mlib_uprop_attrs]] enum uprop_bpt uprop_get_bpt(rune);  [[__mlib_uprop_attrs]] enum uprop_dt uprop_get_dt(rune);  [[__mlib_uprop_attrs]] enum uprop_ea uprop_get_ea(rune); diff --git a/lib/unicode/prop/uprop_get_blk.c b/lib/unicode/prop/uprop_get_blk.c new file mode 100644 index 0000000..a1a6c39 --- /dev/null +++ b/lib/unicode/prop/uprop_get_blk.c @@ -0,0 +1,381 @@ +/* This file is autogenerated by gen/prop/blk; DO NOT EDIT. */ + +#include "__bsearch.h" +#include "macros.h" +#include "rune.h" +#include "unicode/prop.h" + +static constexpr enum uprop_blk lookup_lat1[] = { +	BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , +	BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , +	BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , +	BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , +	BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , +	BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , +	BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , +	BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , +	BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , +	BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , +	BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , +	BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , +	BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , +	BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , +	BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , +	BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , BLK_ASCII      , +	BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, +	BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, +	BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, +	BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, +	BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, +	BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, +	BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, +	BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, +	BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, +	BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, +	BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, +	BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, +	BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, +	BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, +	BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, +	BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, BLK_LATIN_1_SUP, +}; + +static const struct { +	rune lo, hi; +	enum uprop_blk val; +} lookup[] = { +	{RUNE_C(0x000100), RUNE_C(0x00017F), BLK_LATIN_EXT_A}, +	{RUNE_C(0x000180), RUNE_C(0x00024F), BLK_LATIN_EXT_B}, +	{RUNE_C(0x000250), RUNE_C(0x0002AF), BLK_IPA_EXT}, +	{RUNE_C(0x0002B0), RUNE_C(0x0002FF), BLK_MODIFIER_LETTERS}, +	{RUNE_C(0x000300), RUNE_C(0x00036F), BLK_DIACRITICALS}, +	{RUNE_C(0x000370), RUNE_C(0x0003FF), BLK_GREEK}, +	{RUNE_C(0x000400), RUNE_C(0x0004FF), BLK_CYRILLIC}, +	{RUNE_C(0x000500), RUNE_C(0x00052F), BLK_CYRILLIC_SUP}, +	{RUNE_C(0x000530), RUNE_C(0x00058F), BLK_ARMENIAN}, +	{RUNE_C(0x000590), RUNE_C(0x0005FF), BLK_HEBREW}, +	{RUNE_C(0x000600), RUNE_C(0x0006FF), BLK_ARABIC}, +	{RUNE_C(0x000700), RUNE_C(0x00074F), BLK_SYRIAC}, +	{RUNE_C(0x000750), RUNE_C(0x00077F), BLK_ARABIC_SUP}, +	{RUNE_C(0x000780), RUNE_C(0x0007BF), BLK_THAANA}, +	{RUNE_C(0x0007C0), RUNE_C(0x0007FF), BLK_NKO}, +	{RUNE_C(0x000800), RUNE_C(0x00083F), BLK_SAMARITAN}, +	{RUNE_C(0x000840), RUNE_C(0x00085F), BLK_MANDAIC}, +	{RUNE_C(0x000860), RUNE_C(0x00086F), BLK_SYRIAC_SUP}, +	{RUNE_C(0x000870), RUNE_C(0x00089F), BLK_ARABIC_EXT_B}, +	{RUNE_C(0x0008A0), RUNE_C(0x0008FF), BLK_ARABIC_EXT_A}, +	{RUNE_C(0x000900), RUNE_C(0x00097F), BLK_DEVANAGARI}, +	{RUNE_C(0x000980), RUNE_C(0x0009FF), BLK_BENGALI}, +	{RUNE_C(0x000A00), RUNE_C(0x000A7F), BLK_GURMUKHI}, +	{RUNE_C(0x000A80), RUNE_C(0x000AFF), BLK_GUJARATI}, +	{RUNE_C(0x000B00), RUNE_C(0x000B7F), BLK_ORIYA}, +	{RUNE_C(0x000B80), RUNE_C(0x000BFF), BLK_TAMIL}, +	{RUNE_C(0x000C00), RUNE_C(0x000C7F), BLK_TELUGU}, +	{RUNE_C(0x000C80), RUNE_C(0x000CFF), BLK_KANNADA}, +	{RUNE_C(0x000D00), RUNE_C(0x000D7F), BLK_MALAYALAM}, +	{RUNE_C(0x000D80), RUNE_C(0x000DFF), BLK_SINHALA}, +	{RUNE_C(0x000E00), RUNE_C(0x000E7F), BLK_THAI}, +	{RUNE_C(0x000E80), RUNE_C(0x000EFF), BLK_LAO}, +	{RUNE_C(0x000F00), RUNE_C(0x000FFF), BLK_TIBETAN}, +	{RUNE_C(0x001000), RUNE_C(0x00109F), BLK_MYANMAR}, +	{RUNE_C(0x0010A0), RUNE_C(0x0010FF), BLK_GEORGIAN}, +	{RUNE_C(0x001100), RUNE_C(0x0011FF), BLK_JAMO}, +	{RUNE_C(0x001200), RUNE_C(0x00137F), BLK_ETHIOPIC}, +	{RUNE_C(0x001380), RUNE_C(0x00139F), BLK_ETHIOPIC_SUP}, +	{RUNE_C(0x0013A0), RUNE_C(0x0013FF), BLK_CHEROKEE}, +	{RUNE_C(0x001400), RUNE_C(0x00167F), BLK_UCAS}, +	{RUNE_C(0x001680), RUNE_C(0x00169F), BLK_OGHAM}, +	{RUNE_C(0x0016A0), RUNE_C(0x0016FF), BLK_RUNIC}, +	{RUNE_C(0x001700), RUNE_C(0x00171F), BLK_TAGALOG}, +	{RUNE_C(0x001720), RUNE_C(0x00173F), BLK_HANUNOO}, +	{RUNE_C(0x001740), RUNE_C(0x00175F), BLK_BUHID}, +	{RUNE_C(0x001760), RUNE_C(0x00177F), BLK_TAGBANWA}, +	{RUNE_C(0x001780), RUNE_C(0x0017FF), BLK_KHMER}, +	{RUNE_C(0x001800), RUNE_C(0x0018AF), BLK_MONGOLIAN}, +	{RUNE_C(0x0018B0), RUNE_C(0x0018FF), BLK_UCAS_EXT}, +	{RUNE_C(0x001900), RUNE_C(0x00194F), BLK_LIMBU}, +	{RUNE_C(0x001950), RUNE_C(0x00197F), BLK_TAI_LE}, +	{RUNE_C(0x001980), RUNE_C(0x0019DF), BLK_NEW_TAI_LUE}, +	{RUNE_C(0x0019E0), RUNE_C(0x0019FF), BLK_KHMER_SYMBOLS}, +	{RUNE_C(0x001A00), RUNE_C(0x001A1F), BLK_BUGINESE}, +	{RUNE_C(0x001A20), RUNE_C(0x001AAF), BLK_TAI_THAM}, +	{RUNE_C(0x001AB0), RUNE_C(0x001AFF), BLK_DIACRITICALS_EXT}, +	{RUNE_C(0x001B00), RUNE_C(0x001B7F), BLK_BALINESE}, +	{RUNE_C(0x001B80), RUNE_C(0x001BBF), BLK_SUNDANESE}, +	{RUNE_C(0x001BC0), RUNE_C(0x001BFF), BLK_BATAK}, +	{RUNE_C(0x001C00), RUNE_C(0x001C4F), BLK_LEPCHA}, +	{RUNE_C(0x001C50), RUNE_C(0x001C7F), BLK_OL_CHIKI}, +	{RUNE_C(0x001C80), RUNE_C(0x001C8F), BLK_CYRILLIC_EXT_C}, +	{RUNE_C(0x001C90), RUNE_C(0x001CBF), BLK_GEORGIAN_EXT}, +	{RUNE_C(0x001CC0), RUNE_C(0x001CCF), BLK_SUNDANESE_SUP}, +	{RUNE_C(0x001CD0), RUNE_C(0x001CFF), BLK_VEDIC_EXT}, +	{RUNE_C(0x001D00), RUNE_C(0x001D7F), BLK_PHONETIC_EXT}, +	{RUNE_C(0x001D80), RUNE_C(0x001DBF), BLK_PHONETIC_EXT_SUP}, +	{RUNE_C(0x001DC0), RUNE_C(0x001DFF), BLK_DIACRITICALS_SUP}, +	{RUNE_C(0x001E00), RUNE_C(0x001EFF), BLK_LATIN_EXT_ADDITIONAL}, +	{RUNE_C(0x001F00), RUNE_C(0x001FFF), BLK_GREEK_EXT}, +	{RUNE_C(0x002000), RUNE_C(0x00206F), BLK_PUNCTUATION}, +	{RUNE_C(0x002070), RUNE_C(0x00209F), BLK_SUPER_AND_SUB}, +	{RUNE_C(0x0020A0), RUNE_C(0x0020CF), BLK_CURRENCY_SYMBOLS}, +	{RUNE_C(0x0020D0), RUNE_C(0x0020FF), BLK_DIACRITICALS_FOR_SYMBOLS}, +	{RUNE_C(0x002100), RUNE_C(0x00214F), BLK_LETTERLIKE_SYMBOLS}, +	{RUNE_C(0x002150), RUNE_C(0x00218F), BLK_NUMBER_FORMS}, +	{RUNE_C(0x002190), RUNE_C(0x0021FF), BLK_ARROWS}, +	{RUNE_C(0x002200), RUNE_C(0x0022FF), BLK_MATH_OPERATORS}, +	{RUNE_C(0x002300), RUNE_C(0x0023FF), BLK_MISC_TECHNICAL}, +	{RUNE_C(0x002400), RUNE_C(0x00243F), BLK_CONTROL_PICTURES}, +	{RUNE_C(0x002440), RUNE_C(0x00245F), BLK_OCR}, +	{RUNE_C(0x002460), RUNE_C(0x0024FF), BLK_ENCLOSED_ALPHANUM}, +	{RUNE_C(0x002500), RUNE_C(0x00257F), BLK_BOX_DRAWING}, +	{RUNE_C(0x002580), RUNE_C(0x00259F), BLK_BLOCK_ELEMENTS}, +	{RUNE_C(0x0025A0), RUNE_C(0x0025FF), BLK_GEOMETRIC_SHAPES}, +	{RUNE_C(0x002600), RUNE_C(0x0026FF), BLK_MISC_SYMBOLS}, +	{RUNE_C(0x002700), RUNE_C(0x0027BF), BLK_DINGBATS}, +	{RUNE_C(0x0027C0), RUNE_C(0x0027EF), BLK_MISC_MATH_SYMBOLS_A}, +	{RUNE_C(0x0027F0), RUNE_C(0x0027FF), BLK_SUP_ARROWS_A}, +	{RUNE_C(0x002800), RUNE_C(0x0028FF), BLK_BRAILLE}, +	{RUNE_C(0x002900), RUNE_C(0x00297F), BLK_SUP_ARROWS_B}, +	{RUNE_C(0x002980), RUNE_C(0x0029FF), BLK_MISC_MATH_SYMBOLS_B}, +	{RUNE_C(0x002A00), RUNE_C(0x002AFF), BLK_SUP_MATH_OPERATORS}, +	{RUNE_C(0x002B00), RUNE_C(0x002BFF), BLK_MISC_ARROWS}, +	{RUNE_C(0x002C00), RUNE_C(0x002C5F), BLK_GLAGOLITIC}, +	{RUNE_C(0x002C60), RUNE_C(0x002C7F), BLK_LATIN_EXT_C}, +	{RUNE_C(0x002C80), RUNE_C(0x002CFF), BLK_COPTIC}, +	{RUNE_C(0x002D00), RUNE_C(0x002D2F), BLK_GEORGIAN_SUP}, +	{RUNE_C(0x002D30), RUNE_C(0x002D7F), BLK_TIFINAGH}, +	{RUNE_C(0x002D80), RUNE_C(0x002DDF), BLK_ETHIOPIC_EXT}, +	{RUNE_C(0x002DE0), RUNE_C(0x002DFF), BLK_CYRILLIC_EXT_A}, +	{RUNE_C(0x002E00), RUNE_C(0x002E7F), BLK_SUP_PUNCTUATION}, +	{RUNE_C(0x002E80), RUNE_C(0x002EFF), BLK_CJK_RADICALS_SUP}, +	{RUNE_C(0x002F00), RUNE_C(0x002FDF), BLK_KANGXI}, +	{RUNE_C(0x002FF0), RUNE_C(0x002FFF), BLK_IDC}, +	{RUNE_C(0x003000), RUNE_C(0x00303F), BLK_CJK_SYMBOLS}, +	{RUNE_C(0x003040), RUNE_C(0x00309F), BLK_HIRAGANA}, +	{RUNE_C(0x0030A0), RUNE_C(0x0030FF), BLK_KATAKANA}, +	{RUNE_C(0x003100), RUNE_C(0x00312F), BLK_BOPOMOFO}, +	{RUNE_C(0x003130), RUNE_C(0x00318F), BLK_COMPAT_JAMO}, +	{RUNE_C(0x003190), RUNE_C(0x00319F), BLK_KANBUN}, +	{RUNE_C(0x0031A0), RUNE_C(0x0031BF), BLK_BOPOMOFO_EXT}, +	{RUNE_C(0x0031C0), RUNE_C(0x0031EF), BLK_CJK_STROKES}, +	{RUNE_C(0x0031F0), RUNE_C(0x0031FF), BLK_KATAKANA_EXT}, +	{RUNE_C(0x003200), RUNE_C(0x0032FF), BLK_ENCLOSED_CJK}, +	{RUNE_C(0x003300), RUNE_C(0x0033FF), BLK_CJK_COMPAT}, +	{RUNE_C(0x003400), RUNE_C(0x004DBF), BLK_CJK_EXT_A}, +	{RUNE_C(0x004DC0), RUNE_C(0x004DFF), BLK_YIJING}, +	{RUNE_C(0x004E00), RUNE_C(0x009FFF), BLK_CJK}, +	{RUNE_C(0x00A000), RUNE_C(0x00A48F), BLK_YI_SYLLABLES}, +	{RUNE_C(0x00A490), RUNE_C(0x00A4CF), BLK_YI_RADICALS}, +	{RUNE_C(0x00A4D0), RUNE_C(0x00A4FF), BLK_LISU}, +	{RUNE_C(0x00A500), RUNE_C(0x00A63F), BLK_VAI}, +	{RUNE_C(0x00A640), RUNE_C(0x00A69F), BLK_CYRILLIC_EXT_B}, +	{RUNE_C(0x00A6A0), RUNE_C(0x00A6FF), BLK_BAMUM}, +	{RUNE_C(0x00A700), RUNE_C(0x00A71F), BLK_MODIFIER_TONE_LETTERS}, +	{RUNE_C(0x00A720), RUNE_C(0x00A7FF), BLK_LATIN_EXT_D}, +	{RUNE_C(0x00A800), RUNE_C(0x00A82F), BLK_SYLOTI_NAGRI}, +	{RUNE_C(0x00A830), RUNE_C(0x00A83F), BLK_INDIC_NUMBER_FORMS}, +	{RUNE_C(0x00A840), RUNE_C(0x00A87F), BLK_PHAGS_PA}, +	{RUNE_C(0x00A880), RUNE_C(0x00A8DF), BLK_SAURASHTRA}, +	{RUNE_C(0x00A8E0), RUNE_C(0x00A8FF), BLK_DEVANAGARI_EXT}, +	{RUNE_C(0x00A900), RUNE_C(0x00A92F), BLK_KAYAH_LI}, +	{RUNE_C(0x00A930), RUNE_C(0x00A95F), BLK_REJANG}, +	{RUNE_C(0x00A960), RUNE_C(0x00A97F), BLK_JAMO_EXT_A}, +	{RUNE_C(0x00A980), RUNE_C(0x00A9DF), BLK_JAVANESE}, +	{RUNE_C(0x00A9E0), RUNE_C(0x00A9FF), BLK_MYANMAR_EXT_B}, +	{RUNE_C(0x00AA00), RUNE_C(0x00AA5F), BLK_CHAM}, +	{RUNE_C(0x00AA60), RUNE_C(0x00AA7F), BLK_MYANMAR_EXT_A}, +	{RUNE_C(0x00AA80), RUNE_C(0x00AADF), BLK_TAI_VIET}, +	{RUNE_C(0x00AAE0), RUNE_C(0x00AAFF), BLK_MEETEI_MAYEK_EXT}, +	{RUNE_C(0x00AB00), RUNE_C(0x00AB2F), BLK_ETHIOPIC_EXT_A}, +	{RUNE_C(0x00AB30), RUNE_C(0x00AB6F), BLK_LATIN_EXT_E}, +	{RUNE_C(0x00AB70), RUNE_C(0x00ABBF), BLK_CHEROKEE_SUP}, +	{RUNE_C(0x00ABC0), RUNE_C(0x00ABFF), BLK_MEETEI_MAYEK}, +	{RUNE_C(0x00AC00), RUNE_C(0x00D7AF), BLK_HANGUL}, +	{RUNE_C(0x00D7B0), RUNE_C(0x00D7FF), BLK_JAMO_EXT_B}, +	{RUNE_C(0x00D800), RUNE_C(0x00DB7F), BLK_HIGH_SURROGATES}, +	{RUNE_C(0x00DB80), RUNE_C(0x00DBFF), BLK_HIGH_PU_SURROGATES}, +	{RUNE_C(0x00DC00), RUNE_C(0x00DFFF), BLK_LOW_SURROGATES}, +	{RUNE_C(0x00E000), RUNE_C(0x00F8FF), BLK_PUA}, +	{RUNE_C(0x00F900), RUNE_C(0x00FAFF), BLK_CJK_COMPAT_IDEOGRAPHS}, +	{RUNE_C(0x00FB00), RUNE_C(0x00FB4F), BLK_ALPHABETIC_PF}, +	{RUNE_C(0x00FB50), RUNE_C(0x00FDFF), BLK_ARABIC_PF_A}, +	{RUNE_C(0x00FE00), RUNE_C(0x00FE0F), BLK_VS}, +	{RUNE_C(0x00FE10), RUNE_C(0x00FE1F), BLK_VERTICAL_FORMS}, +	{RUNE_C(0x00FE20), RUNE_C(0x00FE2F), BLK_HALF_MARKS}, +	{RUNE_C(0x00FE30), RUNE_C(0x00FE4F), BLK_CJK_COMPAT_FORMS}, +	{RUNE_C(0x00FE50), RUNE_C(0x00FE6F), BLK_SMALL_FORMS}, +	{RUNE_C(0x00FE70), RUNE_C(0x00FEFF), BLK_ARABIC_PF_B}, +	{RUNE_C(0x00FF00), RUNE_C(0x00FFEF), BLK_HALF_AND_FULL_FORMS}, +	{RUNE_C(0x00FFF0), RUNE_C(0x00FFFF), BLK_SPECIALS}, +	{RUNE_C(0x010000), RUNE_C(0x01007F), BLK_LINEAR_B_SYLLABARY}, +	{RUNE_C(0x010080), RUNE_C(0x0100FF), BLK_LINEAR_B_IDEOGRAMS}, +	{RUNE_C(0x010100), RUNE_C(0x01013F), BLK_AEGEAN_NUMBERS}, +	{RUNE_C(0x010140), RUNE_C(0x01018F), BLK_ANCIENT_GREEK_NUMBERS}, +	{RUNE_C(0x010190), RUNE_C(0x0101CF), BLK_ANCIENT_SYMBOLS}, +	{RUNE_C(0x0101D0), RUNE_C(0x0101FF), BLK_PHAISTOS}, +	{RUNE_C(0x010280), RUNE_C(0x01029F), BLK_LYCIAN}, +	{RUNE_C(0x0102A0), RUNE_C(0x0102DF), BLK_CARIAN}, +	{RUNE_C(0x0102E0), RUNE_C(0x0102FF), BLK_COPTIC_EPACT_NUMBERS}, +	{RUNE_C(0x010300), RUNE_C(0x01032F), BLK_OLD_ITALIC}, +	{RUNE_C(0x010330), RUNE_C(0x01034F), BLK_GOTHIC}, +	{RUNE_C(0x010350), RUNE_C(0x01037F), BLK_OLD_PERMIC}, +	{RUNE_C(0x010380), RUNE_C(0x01039F), BLK_UGARITIC}, +	{RUNE_C(0x0103A0), RUNE_C(0x0103DF), BLK_OLD_PERSIAN}, +	{RUNE_C(0x010400), RUNE_C(0x01044F), BLK_DESERET}, +	{RUNE_C(0x010450), RUNE_C(0x01047F), BLK_SHAVIAN}, +	{RUNE_C(0x010480), RUNE_C(0x0104AF), BLK_OSMANYA}, +	{RUNE_C(0x0104B0), RUNE_C(0x0104FF), BLK_OSAGE}, +	{RUNE_C(0x010500), RUNE_C(0x01052F), BLK_ELBASAN}, +	{RUNE_C(0x010530), RUNE_C(0x01056F), BLK_CAUCASIAN_ALBANIAN}, +	{RUNE_C(0x010570), RUNE_C(0x0105BF), BLK_VITHKUQI}, +	{RUNE_C(0x010600), RUNE_C(0x01077F), BLK_LINEAR_A}, +	{RUNE_C(0x010780), RUNE_C(0x0107BF), BLK_LATIN_EXT_F}, +	{RUNE_C(0x010800), RUNE_C(0x01083F), BLK_CYPRIOT_SYLLABARY}, +	{RUNE_C(0x010840), RUNE_C(0x01085F), BLK_IMPERIAL_ARAMAIC}, +	{RUNE_C(0x010860), RUNE_C(0x01087F), BLK_PALMYRENE}, +	{RUNE_C(0x010880), RUNE_C(0x0108AF), BLK_NABATAEAN}, +	{RUNE_C(0x0108E0), RUNE_C(0x0108FF), BLK_HATRAN}, +	{RUNE_C(0x010900), RUNE_C(0x01091F), BLK_PHOENICIAN}, +	{RUNE_C(0x010920), RUNE_C(0x01093F), BLK_LYDIAN}, +	{RUNE_C(0x010980), RUNE_C(0x01099F), BLK_MEROITIC_HIEROGLYPHS}, +	{RUNE_C(0x0109A0), RUNE_C(0x0109FF), BLK_MEROITIC_CURSIVE}, +	{RUNE_C(0x010A00), RUNE_C(0x010A5F), BLK_KHAROSHTHI}, +	{RUNE_C(0x010A60), RUNE_C(0x010A7F), BLK_OLD_SOUTH_ARABIAN}, +	{RUNE_C(0x010A80), RUNE_C(0x010A9F), BLK_OLD_NORTH_ARABIAN}, +	{RUNE_C(0x010AC0), RUNE_C(0x010AFF), BLK_MANICHAEAN}, +	{RUNE_C(0x010B00), RUNE_C(0x010B3F), BLK_AVESTAN}, +	{RUNE_C(0x010B40), RUNE_C(0x010B5F), BLK_INSCRIPTIONAL_PARTHIAN}, +	{RUNE_C(0x010B60), RUNE_C(0x010B7F), BLK_INSCRIPTIONAL_PAHLAVI}, +	{RUNE_C(0x010B80), RUNE_C(0x010BAF), BLK_PSALTER_PAHLAVI}, +	{RUNE_C(0x010C00), RUNE_C(0x010C4F), BLK_OLD_TURKIC}, +	{RUNE_C(0x010C80), RUNE_C(0x010CFF), BLK_OLD_HUNGARIAN}, +	{RUNE_C(0x010D00), RUNE_C(0x010D3F), BLK_HANIFI_ROHINGYA}, +	{RUNE_C(0x010E60), RUNE_C(0x010E7F), BLK_RUMI}, +	{RUNE_C(0x010E80), RUNE_C(0x010EBF), BLK_YEZIDI}, +	{RUNE_C(0x010EC0), RUNE_C(0x010EFF), BLK_ARABIC_EXT_C}, +	{RUNE_C(0x010F00), RUNE_C(0x010F2F), BLK_OLD_SOGDIAN}, +	{RUNE_C(0x010F30), RUNE_C(0x010F6F), BLK_SOGDIAN}, +	{RUNE_C(0x010F70), RUNE_C(0x010FAF), BLK_OLD_UYGHUR}, +	{RUNE_C(0x010FB0), RUNE_C(0x010FDF), BLK_CHORASMIAN}, +	{RUNE_C(0x010FE0), RUNE_C(0x010FFF), BLK_ELYMAIC}, +	{RUNE_C(0x011000), RUNE_C(0x01107F), BLK_BRAHMI}, +	{RUNE_C(0x011080), RUNE_C(0x0110CF), BLK_KAITHI}, +	{RUNE_C(0x0110D0), RUNE_C(0x0110FF), BLK_SORA_SOMPENG}, +	{RUNE_C(0x011100), RUNE_C(0x01114F), BLK_CHAKMA}, +	{RUNE_C(0x011150), RUNE_C(0x01117F), BLK_MAHAJANI}, +	{RUNE_C(0x011180), RUNE_C(0x0111DF), BLK_SHARADA}, +	{RUNE_C(0x0111E0), RUNE_C(0x0111FF), BLK_SINHALA_ARCHAIC_NUMBERS}, +	{RUNE_C(0x011200), RUNE_C(0x01124F), BLK_KHOJKI}, +	{RUNE_C(0x011280), RUNE_C(0x0112AF), BLK_MULTANI}, +	{RUNE_C(0x0112B0), RUNE_C(0x0112FF), BLK_KHUDAWADI}, +	{RUNE_C(0x011300), RUNE_C(0x01137F), BLK_GRANTHA}, +	{RUNE_C(0x011400), RUNE_C(0x01147F), BLK_NEWA}, +	{RUNE_C(0x011480), RUNE_C(0x0114DF), BLK_TIRHUTA}, +	{RUNE_C(0x011580), RUNE_C(0x0115FF), BLK_SIDDHAM}, +	{RUNE_C(0x011600), RUNE_C(0x01165F), BLK_MODI}, +	{RUNE_C(0x011660), RUNE_C(0x01167F), BLK_MONGOLIAN_SUP}, +	{RUNE_C(0x011680), RUNE_C(0x0116CF), BLK_TAKRI}, +	{RUNE_C(0x011700), RUNE_C(0x01174F), BLK_AHOM}, +	{RUNE_C(0x011800), RUNE_C(0x01184F), BLK_DOGRA}, +	{RUNE_C(0x0118A0), RUNE_C(0x0118FF), BLK_WARANG_CITI}, +	{RUNE_C(0x011900), RUNE_C(0x01195F), BLK_DIVES_AKURU}, +	{RUNE_C(0x0119A0), RUNE_C(0x0119FF), BLK_NANDINAGARI}, +	{RUNE_C(0x011A00), RUNE_C(0x011A4F), BLK_ZANABAZAR_SQUARE}, +	{RUNE_C(0x011A50), RUNE_C(0x011AAF), BLK_SOYOMBO}, +	{RUNE_C(0x011AB0), RUNE_C(0x011ABF), BLK_UCAS_EXT_A}, +	{RUNE_C(0x011AC0), RUNE_C(0x011AFF), BLK_PAU_CIN_HAU}, +	{RUNE_C(0x011B00), RUNE_C(0x011B5F), BLK_DEVANAGARI_EXT_A}, +	{RUNE_C(0x011C00), RUNE_C(0x011C6F), BLK_BHAIKSUKI}, +	{RUNE_C(0x011C70), RUNE_C(0x011CBF), BLK_MARCHEN}, +	{RUNE_C(0x011D00), RUNE_C(0x011D5F), BLK_MASARAM_GONDI}, +	{RUNE_C(0x011D60), RUNE_C(0x011DAF), BLK_GUNJALA_GONDI}, +	{RUNE_C(0x011EE0), RUNE_C(0x011EFF), BLK_MAKASAR}, +	{RUNE_C(0x011F00), RUNE_C(0x011F5F), BLK_KAWI}, +	{RUNE_C(0x011FB0), RUNE_C(0x011FBF), BLK_LISU_SUP}, +	{RUNE_C(0x011FC0), RUNE_C(0x011FFF), BLK_TAMIL_SUP}, +	{RUNE_C(0x012000), RUNE_C(0x0123FF), BLK_CUNEIFORM}, +	{RUNE_C(0x012400), RUNE_C(0x01247F), BLK_CUNEIFORM_NUMBERS}, +	{RUNE_C(0x012480), RUNE_C(0x01254F), BLK_EARLY_DYNASTIC_CUNEIFORM}, +	{RUNE_C(0x012F90), RUNE_C(0x012FFF), BLK_CYPRO_MINOAN}, +	{RUNE_C(0x013000), RUNE_C(0x01342F), BLK_EGYPTIAN_HIEROGLYPHS}, +	{RUNE_C(0x013430), RUNE_C(0x01345F), BLK_EGYPTIAN_HIEROGLYPH_FORMAT_CONTROLS}, +	{RUNE_C(0x014400), RUNE_C(0x01467F), BLK_ANATOLIAN_HIEROGLYPHS}, +	{RUNE_C(0x016800), RUNE_C(0x016A3F), BLK_BAMUM_SUP}, +	{RUNE_C(0x016A40), RUNE_C(0x016A6F), BLK_MRO}, +	{RUNE_C(0x016A70), RUNE_C(0x016ACF), BLK_TANGSA}, +	{RUNE_C(0x016AD0), RUNE_C(0x016AFF), BLK_BASSA_VAH}, +	{RUNE_C(0x016B00), RUNE_C(0x016B8F), BLK_PAHAWH_HMONG}, +	{RUNE_C(0x016E40), RUNE_C(0x016E9F), BLK_MEDEFAIDRIN}, +	{RUNE_C(0x016F00), RUNE_C(0x016F9F), BLK_MIAO}, +	{RUNE_C(0x016FE0), RUNE_C(0x016FFF), BLK_IDEOGRAPHIC_SYMBOLS}, +	{RUNE_C(0x017000), RUNE_C(0x0187FF), BLK_TANGUT}, +	{RUNE_C(0x018800), RUNE_C(0x018AFF), BLK_TANGUT_COMPONENTS}, +	{RUNE_C(0x018B00), RUNE_C(0x018CFF), BLK_KHITAN_SMALL_SCRIPT}, +	{RUNE_C(0x018D00), RUNE_C(0x018D7F), BLK_TANGUT_SUP}, +	{RUNE_C(0x01AFF0), RUNE_C(0x01AFFF), BLK_KANA_EXT_B}, +	{RUNE_C(0x01B000), RUNE_C(0x01B0FF), BLK_KANA_SUP}, +	{RUNE_C(0x01B100), RUNE_C(0x01B12F), BLK_KANA_EXT_A}, +	{RUNE_C(0x01B130), RUNE_C(0x01B16F), BLK_SMALL_KANA_EXT}, +	{RUNE_C(0x01B170), RUNE_C(0x01B2FF), BLK_NUSHU}, +	{RUNE_C(0x01BC00), RUNE_C(0x01BC9F), BLK_DUPLOYAN}, +	{RUNE_C(0x01BCA0), RUNE_C(0x01BCAF), BLK_SHORTHAND_FORMAT_CONTROLS}, +	{RUNE_C(0x01CF00), RUNE_C(0x01CFCF), BLK_ZNAMENNY_MUSIC}, +	{RUNE_C(0x01D000), RUNE_C(0x01D0FF), BLK_BYZANTINE_MUSIC}, +	{RUNE_C(0x01D100), RUNE_C(0x01D1FF), BLK_MUSIC}, +	{RUNE_C(0x01D200), RUNE_C(0x01D24F), BLK_ANCIENT_GREEK_MUSIC}, +	{RUNE_C(0x01D2C0), RUNE_C(0x01D2DF), BLK_KAKTOVIK_NUMERALS}, +	{RUNE_C(0x01D2E0), RUNE_C(0x01D2FF), BLK_MAYAN_NUMERALS}, +	{RUNE_C(0x01D300), RUNE_C(0x01D35F), BLK_TAI_XUAN_JING}, +	{RUNE_C(0x01D360), RUNE_C(0x01D37F), BLK_COUNTING_ROD}, +	{RUNE_C(0x01D400), RUNE_C(0x01D7FF), BLK_MATH_ALPHANUM}, +	{RUNE_C(0x01D800), RUNE_C(0x01DAAF), BLK_SUTTON_SIGNWRITING}, +	{RUNE_C(0x01DF00), RUNE_C(0x01DFFF), BLK_LATIN_EXT_G}, +	{RUNE_C(0x01E000), RUNE_C(0x01E02F), BLK_GLAGOLITIC_SUP}, +	{RUNE_C(0x01E030), RUNE_C(0x01E08F), BLK_CYRILLIC_EXT_D}, +	{RUNE_C(0x01E100), RUNE_C(0x01E14F), BLK_NYIAKENG_PUACHUE_HMONG}, +	{RUNE_C(0x01E290), RUNE_C(0x01E2BF), BLK_TOTO}, +	{RUNE_C(0x01E2C0), RUNE_C(0x01E2FF), BLK_WANCHO}, +	{RUNE_C(0x01E4D0), RUNE_C(0x01E4FF), BLK_NAG_MUNDARI}, +	{RUNE_C(0x01E7E0), RUNE_C(0x01E7FF), BLK_ETHIOPIC_EXT_B}, +	{RUNE_C(0x01E800), RUNE_C(0x01E8DF), BLK_MENDE_KIKAKUI}, +	{RUNE_C(0x01E900), RUNE_C(0x01E95F), BLK_ADLAM}, +	{RUNE_C(0x01EC70), RUNE_C(0x01ECBF), BLK_INDIC_SIYAQ_NUMBERS}, +	{RUNE_C(0x01ED00), RUNE_C(0x01ED4F), BLK_OTTOMAN_SIYAQ_NUMBERS}, +	{RUNE_C(0x01EE00), RUNE_C(0x01EEFF), BLK_ARABIC_MATH}, +	{RUNE_C(0x01F000), RUNE_C(0x01F02F), BLK_MAHJONG}, +	{RUNE_C(0x01F030), RUNE_C(0x01F09F), BLK_DOMINO}, +	{RUNE_C(0x01F0A0), RUNE_C(0x01F0FF), BLK_PLAYING_CARDS}, +	{RUNE_C(0x01F100), RUNE_C(0x01F1FF), BLK_ENCLOSED_ALPHANUM_SUP}, +	{RUNE_C(0x01F200), RUNE_C(0x01F2FF), BLK_ENCLOSED_IDEOGRAPHIC_SUP}, +	{RUNE_C(0x01F300), RUNE_C(0x01F5FF), BLK_MISC_PICTOGRAPHS}, +	{RUNE_C(0x01F600), RUNE_C(0x01F64F), BLK_EMOTICONS}, +	{RUNE_C(0x01F650), RUNE_C(0x01F67F), BLK_ORNAMENTAL_DINGBATS}, +	{RUNE_C(0x01F680), RUNE_C(0x01F6FF), BLK_TRANSPORT_AND_MAP}, +	{RUNE_C(0x01F700), RUNE_C(0x01F77F), BLK_ALCHEMICAL}, +	{RUNE_C(0x01F780), RUNE_C(0x01F7FF), BLK_GEOMETRIC_SHAPES_EXT}, +	{RUNE_C(0x01F800), RUNE_C(0x01F8FF), BLK_SUP_ARROWS_C}, +	{RUNE_C(0x01F900), RUNE_C(0x01F9FF), BLK_SUP_SYMBOLS_AND_PICTOGRAPHS}, +	{RUNE_C(0x01FA00), RUNE_C(0x01FA6F), BLK_CHESS_SYMBOLS}, +	{RUNE_C(0x01FA70), RUNE_C(0x01FAFF), BLK_SYMBOLS_AND_PICTOGRAPHS_EXT_A}, +	{RUNE_C(0x01FB00), RUNE_C(0x01FBFF), BLK_SYMBOLS_FOR_LEGACY_COMPUTING}, +	{RUNE_C(0x020000), RUNE_C(0x02A6DF), BLK_CJK_EXT_B}, +	{RUNE_C(0x02A700), RUNE_C(0x02B73F), BLK_CJK_EXT_C}, +	{RUNE_C(0x02B740), RUNE_C(0x02B81F), BLK_CJK_EXT_D}, +	{RUNE_C(0x02B820), RUNE_C(0x02CEAF), BLK_CJK_EXT_E}, +	{RUNE_C(0x02CEB0), RUNE_C(0x02EBEF), BLK_CJK_EXT_F}, +	{RUNE_C(0x02EBF0), RUNE_C(0x02EE5F), BLK_CJK_EXT_I}, +	{RUNE_C(0x02F800), RUNE_C(0x02FA1F), BLK_CJK_COMPAT_IDEOGRAPHS_SUP}, +	{RUNE_C(0x030000), RUNE_C(0x03134F), BLK_CJK_EXT_G}, +	{RUNE_C(0x031350), RUNE_C(0x0323AF), BLK_CJK_EXT_H}, +	{RUNE_C(0x0E0000), RUNE_C(0x0E007F), BLK_TAGS}, +	{RUNE_C(0x0E0100), RUNE_C(0x0E01EF), BLK_VS_SUP}, +	{RUNE_C(0x0F0000), RUNE_C(0x0FFFFF), BLK_SUP_PUA_A}, +	{RUNE_C(0x100000), RUNE_C(0x10FFFF), BLK_SUP_PUA_B}, +}; + +__MLIB_DEFINE_BSEARCH(enum uprop_blk, lookup, BLK_NB) + +enum uprop_blk +uprop_get_blk(rune ch) +{ +	return ch <= lengthof(lookup_lat1) ? lookup_lat1[ch] : mlib_lookup(ch); +} |