aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2024-04-15 13:28:29 +0200
committerThomas Voss <mail@thomasvoss.com> 2024-04-15 13:28:29 +0200
commita7ca6ec2e70dd32ae83f725a93003b0cb147992e (patch)
tree2d049e71a338b3a0cc8d9a1c308a67bd961b2fd0
parentd8ebd9aa3f650101d81b51ca0aad1f65e21169cc (diff)
Add uprop_get_blk()
-rw-r--r--data/Blocks364
-rwxr-xr-xgen/data-files1
-rwxr-xr-xgen/prop/blk395
-rw-r--r--include/unicode/prop.h335
-rw-r--r--lib/unicode/prop/uprop_get_blk.c381
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);
+}