You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
wttr.in/lib/fmt/unicodedata2.py

1847 lines
57 KiB

# downloaded from https://gist.github.com/2204527
# described/recommended here:
#
# http://stackoverflow.com/questions/9868792/find-out-the-unicode-script-of-a-character
#
from __future__ import print_function
from unicodedata import *
script_data = {
"names": [
"Common",
"Latin",
"Greek",
"Cyrillic",
"Armenian",
"Hebrew",
"Arabic",
"Syriac",
"Thaana",
"Devanagari",
"Bengali",
"Gurmukhi",
"Gujarati",
"Oriya",
"Tamil",
"Telugu",
"Kannada",
"Malayalam",
"Sinhala",
"Thai",
"Lao",
"Tibetan",
"Myanmar",
"Georgian",
"Hangul",
"Ethiopic",
"Cherokee",
"Canadian_Aboriginal",
"Ogham",
"Runic",
"Khmer",
"Mongolian",
"Hiragana",
"Katakana",
"Bopomofo",
"Han",
"Yi",
"Old_Italic",
"Gothic",
"Deseret",
"Inherited",
"Tagalog",
"Hanunoo",
"Buhid",
"Tagbanwa",
"Limbu",
"Tai_Le",
"Linear_B",
"Ugaritic",
"Shavian",
"Osmanya",
"Cypriot",
"Braille",
"Buginese",
"Coptic",
"New_Tai_Lue",
"Glagolitic",
"Tifinagh",
"Syloti_Nagri",
"Old_Persian",
"Kharoshthi",
"Balinese",
"Cuneiform",
"Phoenician",
"Phags_Pa",
"Nko",
"Sundanese",
"Lepcha",
"Ol_Chiki",
"Vai",
"Saurashtra",
"Kayah_Li",
"Rejang",
"Lycian",
"Carian",
"Lydian",
"Cham",
"Tai_Tham",
"Tai_Viet",
"Avestan",
"Egyptian_Hieroglyphs",
"Samaritan",
"Lisu",
"Bamum",
"Javanese",
"Meetei_Mayek",
"Imperial_Aramaic",
"Old_South_Arabian",
"Inscriptional_Parthian",
"Inscriptional_Pahlavi",
"Old_Turkic",
"Kaithi",
"Batak",
"Brahmi",
"Mandaic",
"Chakma",
"Meroitic_Cursive",
"Meroitic_Hieroglyphs",
"Miao",
"Sharada",
"Sora_Sompeng",
"Takri",
],
"cats": [
"Cc",
"Zs",
"Po",
"Sc",
"Ps",
"Pe",
"Sm",
"Pd",
"Nd",
"Sk",
"Pc",
"So",
"Pi",
"Cf",
"No",
"L",
"Pf",
"Lm",
"Mc",
"Lo",
"Zl",
"Zp",
"Nl",
"Mn",
"Me",
],
"idx": [
(0x0, 0x1F, 0, 0),
(0x20, 0x20, 0, 1),
(0x21, 0x23, 0, 2),
(0x24, 0x24, 0, 3),
(0x25, 0x27, 0, 2),
(0x28, 0x28, 0, 4),
(0x29, 0x29, 0, 5),
(0x2A, 0x2A, 0, 2),
(0x2B, 0x2B, 0, 6),
(0x2C, 0x2C, 0, 2),
(0x2D, 0x2D, 0, 7),
(0x2E, 0x2F, 0, 2),
(0x30, 0x39, 0, 8),
(0x3A, 0x3B, 0, 2),
(0x3C, 0x3E, 0, 6),
(0x3F, 0x40, 0, 2),
(0x41, 0x5A, 1, 15),
(0x5B, 0x5B, 0, 4),
(0x5C, 0x5C, 0, 2),
(0x5D, 0x5D, 0, 5),
(0x5E, 0x5E, 0, 9),
(0x5F, 0x5F, 0, 10),
(0x60, 0x60, 0, 9),
(0x61, 0x7A, 1, 15),
(0x7B, 0x7B, 0, 4),
(0x7C, 0x7C, 0, 6),
(0x7D, 0x7D, 0, 5),
(0x7E, 0x7E, 0, 6),
(0x7F, 0x9F, 0, 0),
(0xA0, 0xA0, 0, 1),
(0xA1, 0xA1, 0, 2),
(0xA2, 0xA5, 0, 3),
(0xA6, 0xA6, 0, 11),
(0xA7, 0xA7, 0, 2),
(0xA8, 0xA8, 0, 9),
(0xA9, 0xA9, 0, 11),
(0xAA, 0xAA, 1, 19),
(0xAB, 0xAB, 0, 12),
(0xAC, 0xAC, 0, 6),
(0xAD, 0xAD, 0, 13),
(0xAE, 0xAE, 0, 11),
(0xAF, 0xAF, 0, 9),
(0xB0, 0xB0, 0, 11),
(0xB1, 0xB1, 0, 6),
(0xB2, 0xB3, 0, 14),
(0xB4, 0xB4, 0, 9),
(0xB5, 0xB5, 0, 15),
(0xB6, 0xB7, 0, 2),
(0xB8, 0xB8, 0, 9),
(0xB9, 0xB9, 0, 14),
(0xBA, 0xBA, 1, 19),
(0xBB, 0xBB, 0, 16),
(0xBC, 0xBE, 0, 14),
(0xBF, 0xBF, 0, 2),
(0xC0, 0xD6, 1, 15),
(0xD7, 0xD7, 0, 6),
(0xD8, 0xF6, 1, 15),
(0xF7, 0xF7, 0, 6),
(0xF8, 0x1BA, 1, 15),
(0x1BB, 0x1BB, 1, 19),
(0x1BC, 0x1BF, 1, 15),
(0x1C0, 0x1C3, 1, 19),
(0x1C4, 0x293, 1, 15),
(0x294, 0x294, 1, 19),
(0x295, 0x2AF, 1, 15),
(0x2B0, 0x2B8, 1, 17),
(0x2B9, 0x2C1, 0, 17),
(0x2C2, 0x2C5, 0, 9),
(0x2C6, 0x2D1, 0, 17),
(0x2D2, 0x2DF, 0, 9),
(0x2E0, 0x2E4, 1, 17),
(0x2E5, 0x2E9, 0, 9),
(0x2EA, 0x2EB, 34, 9),
(0x2EC, 0x2EC, 0, 17),
(0x2ED, 0x2ED, 0, 9),
(0x2EE, 0x2EE, 0, 17),
(0x2EF, 0x2FF, 0, 9),
(0x300, 0x36F, 40, 23),
(0x370, 0x373, 2, 15),
(0x374, 0x374, 0, 17),
(0x375, 0x375, 2, 9),
(0x376, 0x377, 2, 15),
(0x37A, 0x37A, 2, 17),
(0x37B, 0x37D, 2, 15),
(0x37E, 0x37E, 0, 2),
(0x384, 0x384, 2, 9),
(0x385, 0x385, 0, 9),
(0x386, 0x386, 2, 15),
(0x387, 0x387, 0, 2),
(0x388, 0x38A, 2, 15),
(0x38C, 0x38C, 2, 15),
(0x38E, 0x3A1, 2, 15),
(0x3A3, 0x3E1, 2, 15),
(0x3E2, 0x3EF, 54, 15),
(0x3F0, 0x3F5, 2, 15),
(0x3F6, 0x3F6, 2, 6),
(0x3F7, 0x3FF, 2, 15),
(0x400, 0x481, 3, 15),
(0x482, 0x482, 3, 11),
(0x483, 0x484, 3, 23),
(0x485, 0x486, 40, 23),
(0x487, 0x487, 3, 23),
(0x488, 0x489, 3, 24),
(0x48A, 0x527, 3, 15),
(0x531, 0x556, 4, 15),
(0x559, 0x559, 4, 17),
(0x55A, 0x55F, 4, 2),
(0x561, 0x587, 4, 15),
(0x589, 0x589, 0, 2),
(0x58A, 0x58A, 4, 7),
(0x58F, 0x58F, 4, 3),
(0x591, 0x5BD, 5, 23),
(0x5BE, 0x5BE, 5, 7),
(0x5BF, 0x5BF, 5, 23),
(0x5C0, 0x5C0, 5, 2),
(0x5C1, 0x5C2, 5, 23),
(0x5C3, 0x5C3, 5, 2),
(0x5C4, 0x5C5, 5, 23),
(0x5C6, 0x5C6, 5, 2),
(0x5C7, 0x5C7, 5, 23),
(0x5D0, 0x5EA, 5, 19),
(0x5F0, 0x5F2, 5, 19),
(0x5F3, 0x5F4, 5, 2),
(0x600, 0x604, 6, 13),
(0x606, 0x608, 6, 6),
(0x609, 0x60A, 6, 2),
(0x60B, 0x60B, 6, 3),
(0x60C, 0x60C, 0, 2),
(0x60D, 0x60D, 6, 2),
(0x60E, 0x60F, 6, 11),
(0x610, 0x61A, 6, 23),
(0x61B, 0x61B, 0, 2),
(0x61E, 0x61E, 6, 2),
(0x61F, 0x61F, 0, 2),
(0x620, 0x63F, 6, 19),
(0x640, 0x640, 0, 17),
(0x641, 0x64A, 6, 19),
(0x64B, 0x655, 40, 23),
(0x656, 0x65E, 6, 23),
(0x65F, 0x65F, 40, 23),
(0x660, 0x669, 0, 8),
(0x66A, 0x66D, 6, 2),
(0x66E, 0x66F, 6, 19),
(0x670, 0x670, 40, 23),
(0x671, 0x6D3, 6, 19),
(0x6D4, 0x6D4, 6, 2),
(0x6D5, 0x6D5, 6, 19),
(0x6D6, 0x6DC, 6, 23),
(0x6DD, 0x6DD, 0, 13),
(0x6DE, 0x6DE, 6, 11),
(0x6DF, 0x6E4, 6, 23),
(0x6E5, 0x6E6, 6, 17),
(0x6E7, 0x6E8, 6, 23),
(0x6E9, 0x6E9, 6, 11),
(0x6EA, 0x6ED, 6, 23),
(0x6EE, 0x6EF, 6, 19),
(0x6F0, 0x6F9, 6, 8),
(0x6FA, 0x6FC, 6, 19),
(0x6FD, 0x6FE, 6, 11),
(0x6FF, 0x6FF, 6, 19),
(0x700, 0x70D, 7, 2),
(0x70F, 0x70F, 7, 13),
(0x710, 0x710, 7, 19),
(0x711, 0x711, 7, 23),
(0x712, 0x72F, 7, 19),
(0x730, 0x74A, 7, 23),
(0x74D, 0x74F, 7, 19),
(0x750, 0x77F, 6, 19),
(0x780, 0x7A5, 8, 19),
(0x7A6, 0x7B0, 8, 23),
(0x7B1, 0x7B1, 8, 19),
(0x7C0, 0x7C9, 65, 8),
(0x7CA, 0x7EA, 65, 19),
(0x7EB, 0x7F3, 65, 23),
(0x7F4, 0x7F5, 65, 17),
(0x7F6, 0x7F6, 65, 11),
(0x7F7, 0x7F9, 65, 2),
(0x7FA, 0x7FA, 65, 17),
(0x800, 0x815, 81, 19),
(0x816, 0x819, 81, 23),
(0x81A, 0x81A, 81, 17),
(0x81B, 0x823, 81, 23),
(0x824, 0x824, 81, 17),
(0x825, 0x827, 81, 23),
(0x828, 0x828, 81, 17),
(0x829, 0x82D, 81, 23),
(0x830, 0x83E, 81, 2),
(0x840, 0x858, 94, 19),
(0x859, 0x85B, 94, 23),
(0x85E, 0x85E, 94, 2),
(0x8A0, 0x8A0, 6, 19),
(0x8A2, 0x8AC, 6, 19),
(0x8E4, 0x8FE, 6, 23),
(0x900, 0x902, 9, 23),
(0x903, 0x903, 9, 18),
(0x904, 0x939, 9, 19),
(0x93A, 0x93A, 9, 23),
(0x93B, 0x93B, 9, 18),
(0x93C, 0x93C, 9, 23),
(0x93D, 0x93D, 9, 19),
(0x93E, 0x940, 9, 18),
(0x941, 0x948, 9, 23),
(0x949, 0x94C, 9, 18),
(0x94D, 0x94D, 9, 23),
(0x94E, 0x94F, 9, 18),
(0x950, 0x950, 9, 19),
(0x951, 0x952, 40, 23),
(0x953, 0x957, 9, 23),
(0x958, 0x961, 9, 19),
(0x962, 0x963, 9, 23),
(0x964, 0x965, 0, 2),
(0x966, 0x96F, 9, 8),
(0x970, 0x970, 9, 2),
(0x971, 0x971, 9, 17),
(0x972, 0x977, 9, 19),
(0x979, 0x97F, 9, 19),
(0x981, 0x981, 10, 23),
(0x982, 0x983, 10, 18),
(0x985, 0x98C, 10, 19),
(0x98F, 0x990, 10, 19),
(0x993, 0x9A8, 10, 19),
(0x9AA, 0x9B0, 10, 19),
(0x9B2, 0x9B2, 10, 19),
(0x9B6, 0x9B9, 10, 19),
(0x9BC, 0x9BC, 10, 23),
(0x9BD, 0x9BD, 10, 19),
(0x9BE, 0x9C0, 10, 18),
(0x9C1, 0x9C4, 10, 23),
(0x9C7, 0x9C8, 10, 18),
(0x9CB, 0x9CC, 10, 18),
(0x9CD, 0x9CD, 10, 23),
(0x9CE, 0x9CE, 10, 19),
(0x9D7, 0x9D7, 10, 18),
(0x9DC, 0x9DD, 10, 19),
(0x9DF, 0x9E1, 10, 19),
(0x9E2, 0x9E3, 10, 23),
(0x9E6, 0x9EF, 10, 8),
(0x9F0, 0x9F1, 10, 19),
(0x9F2, 0x9F3, 10, 3),
(0x9F4, 0x9F9, 10, 14),
(0x9FA, 0x9FA, 10, 11),
(0x9FB, 0x9FB, 10, 3),
(0xA01, 0xA02, 11, 23),
(0xA03, 0xA03, 11, 18),
(0xA05, 0xA0A, 11, 19),
(0xA0F, 0xA10, 11, 19),
(0xA13, 0xA28, 11, 19),
(0xA2A, 0xA30, 11, 19),
(0xA32, 0xA33, 11, 19),
(0xA35, 0xA36, 11, 19),
(0xA38, 0xA39, 11, 19),
(0xA3C, 0xA3C, 11, 23),
(0xA3E, 0xA40, 11, 18),
(0xA41, 0xA42, 11, 23),
(0xA47, 0xA48, 11, 23),
(0xA4B, 0xA4D, 11, 23),
(0xA51, 0xA51, 11, 23),
(0xA59, 0xA5C, 11, 19),
(0xA5E, 0xA5E, 11, 19),
(0xA66, 0xA6F, 11, 8),
(0xA70, 0xA71, 11, 23),
(0xA72, 0xA74, 11, 19),
(0xA75, 0xA75, 11, 23),
(0xA81, 0xA82, 12, 23),
(0xA83, 0xA83, 12, 18),
(0xA85, 0xA8D, 12, 19),
(0xA8F, 0xA91, 12, 19),
(0xA93, 0xAA8, 12, 19),
(0xAAA, 0xAB0, 12, 19),
(0xAB2, 0xAB3, 12, 19),
(0xAB5, 0xAB9, 12, 19),
(0xABC, 0xABC, 12, 23),
(0xABD, 0xABD, 12, 19),
(0xABE, 0xAC0, 12, 18),
(0xAC1, 0xAC5, 12, 23),
(0xAC7, 0xAC8, 12, 23),
(0xAC9, 0xAC9, 12, 18),
(0xACB, 0xACC, 12, 18),
(0xACD, 0xACD, 12, 23),
(0xAD0, 0xAD0, 12, 19),
(0xAE0, 0xAE1, 12, 19),
(0xAE2, 0xAE3, 12, 23),
(0xAE6, 0xAEF, 12, 8),
(0xAF0, 0xAF0, 12, 2),
(0xAF1, 0xAF1, 12, 3),
(0xB01, 0xB01, 13, 23),
(0xB02, 0xB03, 13, 18),
(0xB05, 0xB0C, 13, 19),
(0xB0F, 0xB10, 13, 19),
(0xB13, 0xB28, 13, 19),
(0xB2A, 0xB30, 13, 19),
(0xB32, 0xB33, 13, 19),
(0xB35, 0xB39, 13, 19),
(0xB3C, 0xB3C, 13, 23),
(0xB3D, 0xB3D, 13, 19),
(0xB3E, 0xB3E, 13, 18),
(0xB3F, 0xB3F, 13, 23),
(0xB40, 0xB40, 13, 18),
(0xB41, 0xB44, 13, 23),
(0xB47, 0xB48, 13, 18),
(0xB4B, 0xB4C, 13, 18),
(0xB4D, 0xB4D, 13, 23),
(0xB56, 0xB56, 13, 23),
(0xB57, 0xB57, 13, 18),
(0xB5C, 0xB5D, 13, 19),
(0xB5F, 0xB61, 13, 19),
(0xB62, 0xB63, 13, 23),
(0xB66, 0xB6F, 13, 8),
(0xB70, 0xB70, 13, 11),
(0xB71, 0xB71, 13, 19),
(0xB72, 0xB77, 13, 14),
(0xB82, 0xB82, 14, 23),
(0xB83, 0xB83, 14, 19),
(0xB85, 0xB8A, 14, 19),
(0xB8E, 0xB90, 14, 19),
(0xB92, 0xB95, 14, 19),
(0xB99, 0xB9A, 14, 19),
(0xB9C, 0xB9C, 14, 19),
(0xB9E, 0xB9F, 14, 19),
(0xBA3, 0xBA4, 14, 19),
(0xBA8, 0xBAA, 14, 19),
(0xBAE, 0xBB9, 14, 19),
(0xBBE, 0xBBF, 14, 18),
(0xBC0, 0xBC0, 14, 23),
(0xBC1, 0xBC2, 14, 18),
(0xBC6, 0xBC8, 14, 18),
(0xBCA, 0xBCC, 14, 18),
(0xBCD, 0xBCD, 14, 23),
(0xBD0, 0xBD0, 14, 19),
(0xBD7, 0xBD7, 14, 18),
(0xBE6, 0xBEF, 14, 8),
(0xBF0, 0xBF2, 14, 14),
(0xBF3, 0xBF8, 14, 11),
(0xBF9, 0xBF9, 14, 3),
(0xBFA, 0xBFA, 14, 11),
(0xC01, 0xC03, 15, 18),
(0xC05, 0xC0C, 15, 19),
(0xC0E, 0xC10, 15, 19),
(0xC12, 0xC28, 15, 19),
(0xC2A, 0xC33, 15, 19),
(0xC35, 0xC39, 15, 19),
(0xC3D, 0xC3D, 15, 19),
(0xC3E, 0xC40, 15, 23),
(0xC41, 0xC44, 15, 18),
(0xC46, 0xC48, 15, 23),
(0xC4A, 0xC4D, 15, 23),
(0xC55, 0xC56, 15, 23),
(0xC58, 0xC59, 15, 19),
(0xC60, 0xC61, 15, 19),
(0xC62, 0xC63, 15, 23),
(0xC66, 0xC6F, 15, 8),
(0xC78, 0xC7E, 15, 14),
(0xC7F, 0xC7F, 15, 11),
(0xC82, 0xC83, 16, 18),
(0xC85, 0xC8C, 16, 19),
(0xC8E, 0xC90, 16, 19),
(0xC92, 0xCA8, 16, 19),
(0xCAA, 0xCB3, 16, 19),
(0xCB5, 0xCB9, 16, 19),
(0xCBC, 0xCBC, 16, 23),
(0xCBD, 0xCBD, 16, 19),
(0xCBE, 0xCBE, 16, 18),
(0xCBF, 0xCBF, 16, 23),
(0xCC0, 0xCC4, 16, 18),
(0xCC6, 0xCC6, 16, 23),
(0xCC7, 0xCC8, 16, 18),
(0xCCA, 0xCCB, 16, 18),
(0xCCC, 0xCCD, 16, 23),
(0xCD5, 0xCD6, 16, 18),
(0xCDE, 0xCDE, 16, 19),
(0xCE0, 0xCE1, 16, 19),
(0xCE2, 0xCE3, 16, 23),
(0xCE6, 0xCEF, 16, 8),
(0xCF1, 0xCF2, 16, 19),
(0xD02, 0xD03, 17, 18),
(0xD05, 0xD0C, 17, 19),
(0xD0E, 0xD10, 17, 19),
(0xD12, 0xD3A, 17, 19),
(0xD3D, 0xD3D, 17, 19),
(0xD3E, 0xD40, 17, 18),
(0xD41, 0xD44, 17, 23),
(0xD46, 0xD48, 17, 18),
(0xD4A, 0xD4C, 17, 18),
(0xD4D, 0xD4D, 17, 23),
(0xD4E, 0xD4E, 17, 19),
(0xD57, 0xD57, 17, 18),
(0xD60, 0xD61, 17, 19),
(0xD62, 0xD63, 17, 23),
(0xD66, 0xD6F, 17, 8),
(0xD70, 0xD75, 17, 14),
(0xD79, 0xD79, 17, 11),
(0xD7A, 0xD7F, 17, 19),
(0xD82, 0xD83, 18, 18),
(0xD85, 0xD96, 18, 19),
(0xD9A, 0xDB1, 18, 19),
(0xDB3, 0xDBB, 18, 19),
(0xDBD, 0xDBD, 18, 19),
(0xDC0, 0xDC6, 18, 19),
(0xDCA, 0xDCA, 18, 23),
(0xDCF, 0xDD1, 18, 18),
(0xDD2, 0xDD4, 18, 23),
(0xDD6, 0xDD6, 18, 23),
(0xDD8, 0xDDF, 18, 18),
(0xDF2, 0xDF3, 18, 18),
(0xDF4, 0xDF4, 18, 2),
(0xE01, 0xE30, 19, 19),
(0xE31, 0xE31, 19, 23),
(0xE32, 0xE33, 19, 19),
(0xE34, 0xE3A, 19, 23),
(0xE3F, 0xE3F, 0, 3),
(0xE40, 0xE45, 19, 19),
(0xE46, 0xE46, 19, 17),
(0xE47, 0xE4E, 19, 23),
(0xE4F, 0xE4F, 19, 2),
(0xE50, 0xE59, 19, 8),
(0xE5A, 0xE5B, 19, 2),
(0xE81, 0xE82, 20, 19),
(0xE84, 0xE84, 20, 19),
(0xE87, 0xE88, 20, 19),
(0xE8A, 0xE8A, 20, 19),
(0xE8D, 0xE8D, 20, 19),
(0xE94, 0xE97, 20, 19),
(0xE99, 0xE9F, 20, 19),
(0xEA1, 0xEA3, 20, 19),
(0xEA5, 0xEA5, 20, 19),
(0xEA7, 0xEA7, 20, 19),
(0xEAA, 0xEAB, 20, 19),
(0xEAD, 0xEB0, 20, 19),
(0xEB1, 0xEB1, 20, 23),
(0xEB2, 0xEB3, 20, 19),
(0xEB4, 0xEB9, 20, 23),
(0xEBB, 0xEBC, 20, 23),
(0xEBD, 0xEBD, 20, 19),
(0xEC0, 0xEC4, 20, 19),
(0xEC6, 0xEC6, 20, 17),
(0xEC8, 0xECD, 20, 23),
(0xED0, 0xED9, 20, 8),
(0xEDC, 0xEDF, 20, 19),
(0xF00, 0xF00, 21, 19),
(0xF01, 0xF03, 21, 11),
(0xF04, 0xF12, 21, 2),
(0xF13, 0xF13, 21, 11),
(0xF14, 0xF14, 21, 2),
(0xF15, 0xF17, 21, 11),
(0xF18, 0xF19, 21, 23),
(0xF1A, 0xF1F, 21, 11),
(0xF20, 0xF29, 21, 8),
(0xF2A, 0xF33, 21, 14),
(0xF34, 0xF34, 21, 11),
(0xF35, 0xF35, 21, 23),
(0xF36, 0xF36, 21, 11),
(0xF37, 0xF37, 21, 23),
(0xF38, 0xF38, 21, 11),
(0xF39, 0xF39, 21, 23),
(0xF3A, 0xF3A, 21, 4),
(0xF3B, 0xF3B, 21, 5),
(0xF3C, 0xF3C, 21, 4),
(0xF3D, 0xF3D, 21, 5),
(0xF3E, 0xF3F, 21, 18),
(0xF40, 0xF47, 21, 19),
(0xF49, 0xF6C, 21, 19),
(0xF71, 0xF7E, 21, 23),
(0xF7F, 0xF7F, 21, 18),
(0xF80, 0xF84, 21, 23),
(0xF85, 0xF85, 21, 2),
(0xF86, 0xF87, 21, 23),
(0xF88, 0xF8C, 21, 19),
(0xF8D, 0xF97, 21, 23),
(0xF99, 0xFBC, 21, 23),
(0xFBE, 0xFC5, 21, 11),
(0xFC6, 0xFC6, 21, 23),
(0xFC7, 0xFCC, 21, 11),
(0xFCE, 0xFCF, 21, 11),
(0xFD0, 0xFD4, 21, 2),
(0xFD5, 0xFD8, 0, 11),
(0xFD9, 0xFDA, 21, 2),
(0x1000, 0x102A, 22, 19),
(0x102B, 0x102C, 22, 18),
(0x102D, 0x1030, 22, 23),
(0x1031, 0x1031, 22, 18),
(0x1032, 0x1037, 22, 23),
(0x1038, 0x1038, 22, 18),
(0x1039, 0x103A, 22, 23),
(0x103B, 0x103C, 22, 18),
(0x103D, 0x103E, 22, 23),
(0x103F, 0x103F, 22, 19),
(0x1040, 0x1049, 22, 8),
(0x104A, 0x104F, 22, 2),
(0x1050, 0x1055, 22, 19),
(0x1056, 0x1057, 22, 18),
(0x1058, 0x1059, 22, 23),
(0x105A, 0x105D, 22, 19),
(0x105E, 0x1060, 22, 23),
(0x1061, 0x1061, 22, 19),
(0x1062, 0x1064, 22, 18),
(0x1065, 0x1066, 22, 19),
(0x1067, 0x106D, 22, 18),
(0x106E, 0x1070, 22, 19),
(0x1071, 0x1074, 22, 23),
(0x1075, 0x1081, 22, 19),
(0x1082, 0x1082, 22, 23),
(0x1083, 0x1084, 22, 18),
(0x1085, 0x1086, 22, 23),
(0x1087, 0x108C, 22, 18),
(0x108D, 0x108D, 22, 23),
(0x108E, 0x108E, 22, 19),
(0x108F, 0x108F, 22, 18),
(0x1090, 0x1099, 22, 8),
(0x109A, 0x109C, 22, 18),
(0x109D, 0x109D, 22, 23),
(0x109E, 0x109F, 22, 11),
(0x10A0, 0x10C5, 23, 15),
(0x10C7, 0x10C7, 23, 15),
(0x10CD, 0x10CD, 23, 15),
(0x10D0, 0x10FA, 23, 19),
(0x10FB, 0x10FB, 0, 2),
(0x10FC, 0x10FC, 23, 17),
(0x10FD, 0x10FF, 23, 19),
(0x1100, 0x11FF, 24, 19),
(0x1200, 0x1248, 25, 19),
(0x124A, 0x124D, 25, 19),
(0x1250, 0x1256, 25, 19),
(0x1258, 0x1258, 25, 19),
(0x125A, 0x125D, 25, 19),
(0x1260, 0x1288, 25, 19),
(0x128A, 0x128D, 25, 19),
(0x1290, 0x12B0, 25, 19),
(0x12B2, 0x12B5, 25, 19),
(0x12B8, 0x12BE, 25, 19),
(0x12C0, 0x12C0, 25, 19),
(0x12C2, 0x12C5, 25, 19),
(0x12C8, 0x12D6, 25, 19),
(0x12D8, 0x1310, 25, 19),
(0x1312, 0x1315, 25, 19),
(0x1318, 0x135A, 25, 19),
(0x135D, 0x135F, 25, 23),
(0x1360, 0x1368, 25, 2),
(0x1369, 0x137C, 25, 14),
(0x1380, 0x138F, 25, 19),
(0x1390, 0x1399, 25, 11),
(0x13A0, 0x13F4, 26, 19),
(0x1400, 0x1400, 27, 7),
(0x1401, 0x166C, 27, 19),
(0x166D, 0x166E, 27, 2),
(0x166F, 0x167F, 27, 19),
(0x1680, 0x1680, 28, 1),
(0x1681, 0x169A, 28, 19),
(0x169B, 0x169B, 28, 4),
(0x169C, 0x169C, 28, 5),
(0x16A0, 0x16EA, 29, 19),
(0x16EB, 0x16ED, 0, 2),
(0x16EE, 0x16F0, 29, 22),
(0x1700, 0x170C, 41, 19),
(0x170E, 0x1711, 41, 19),
(0x1712, 0x1714, 41, 23),
(0x1720, 0x1731, 42, 19),
(0x1732, 0x1734, 42, 23),
(0x1735, 0x1736, 0, 2),
(0x1740, 0x1751, 43, 19),
(0x1752, 0x1753, 43, 23),
(0x1760, 0x176C, 44, 19),
(0x176E, 0x1770, 44, 19),
(0x1772, 0x1773, 44, 23),
(0x1780, 0x17B3, 30, 19),
(0x17B4, 0x17B5, 30, 23),
(0x17B6, 0x17B6, 30, 18),
(0x17B7, 0x17BD, 30, 23),
(0x17BE, 0x17C5, 30, 18),
(0x17C6, 0x17C6, 30, 23),
(0x17C7, 0x17C8, 30, 18),
(0x17C9, 0x17D3, 30, 23),
(0x17D4, 0x17D6, 30, 2),
(0x17D7, 0x17D7, 30, 17),
(0x17D8, 0x17DA, 30, 2),
(0x17DB, 0x17DB, 30, 3),
(0x17DC, 0x17DC, 30, 19),
(0x17DD, 0x17DD, 30, 23),
(0x17E0, 0x17E9, 30, 8),
(0x17F0, 0x17F9, 30, 14),
(0x1800, 0x1801, 31, 2),
(0x1802, 0x1803, 0, 2),
(0x1804, 0x1804, 31, 2),
(0x1805, 0x1805, 0, 2),
(0x1806, 0x1806, 31, 7),
(0x1807, 0x180A, 31, 2),
(0x180B, 0x180D, 31, 23),
(0x180E, 0x180E, 31, 1),
(0x1810, 0x1819, 31, 8),
(0x1820, 0x1842, 31, 19),
(0x1843, 0x1843, 31, 17),
(0x1844, 0x1877, 31, 19),
(0x1880, 0x18A8, 31, 19),
(0x18A9, 0x18A9, 31, 23),
(0x18AA, 0x18AA, 31, 19),
(0x18B0, 0x18F5, 27, 19),
(0x1900, 0x191C, 45, 19),
(0x1920, 0x1922, 45, 23),
(0x1923, 0x1926, 45, 18),
(0x1927, 0x1928, 45, 23),
(0x1929, 0x192B, 45, 18),
(0x1930, 0x1931, 45, 18),
(0x1932, 0x1932, 45, 23),
(0x1933, 0x1938, 45, 18),
(0x1939, 0x193B, 45, 23),
(0x1940, 0x1940, 45, 11),
(0x1944, 0x1945, 45, 2),
(0x1946, 0x194F, 45, 8),
(0x1950, 0x196D, 46, 19),
(0x1970, 0x1974, 46, 19),
(0x1980, 0x19AB, 55, 19),
(0x19B0, 0x19C0, 55, 18),
(0x19C1, 0x19C7, 55, 19),
(0x19C8, 0x19C9, 55, 18),
(0x19D0, 0x19D9, 55, 8),
(0x19DA, 0x19DA, 55, 14),
(0x19DE, 0x19DF, 55, 11),
(0x19E0, 0x19FF, 30, 11),
(0x1A00, 0x1A16, 53, 19),
(0x1A17, 0x1A18, 53, 23),
(0x1A19, 0x1A1B, 53, 18),
(0x1A1E, 0x1A1F, 53, 2),
(0x1A20, 0x1A54, 77, 19),
(0x1A55, 0x1A55, 77, 18),
(0x1A56, 0x1A56, 77, 23),
(0x1A57, 0x1A57, 77, 18),
(0x1A58, 0x1A5E, 77, 23),
(0x1A60, 0x1A60, 77, 23),
(0x1A61, 0x1A61, 77, 18),
(0x1A62, 0x1A62, 77, 23),
(0x1A63, 0x1A64, 77, 18),
(0x1A65, 0x1A6C, 77, 23),
(0x1A6D, 0x1A72, 77, 18),
(0x1A73, 0x1A7C, 77, 23),
(0x1A7F, 0x1A7F, 77, 23),
(0x1A80, 0x1A89, 77, 8),
(0x1A90, 0x1A99, 77, 8),
(0x1AA0, 0x1AA6, 77, 2),
(0x1AA7, 0x1AA7, 77, 17),
(0x1AA8, 0x1AAD, 77, 2),
(0x1B00, 0x1B03, 61, 23),
(0x1B04, 0x1B04, 61, 18),
(0x1B05, 0x1B33, 61, 19),
(0x1B34, 0x1B34, 61, 23),
(0x1B35, 0x1B35, 61, 18),
(0x1B36, 0x1B3A, 61, 23),
(0x1B3B, 0x1B3B, 61, 18),
(0x1B3C, 0x1B3C, 61, 23),
(0x1B3D, 0x1B41, 61, 18),
(0x1B42, 0x1B42, 61, 23),
(0x1B43, 0x1B44, 61, 18),
(0x1B45, 0x1B4B, 61, 19),
(0x1B50, 0x1B59, 61, 8),
(0x1B5A, 0x1B60, 61, 2),
(0x1B61, 0x1B6A, 61, 11),
(0x1B6B, 0x1B73, 61, 23),
(0x1B74, 0x1B7C, 61, 11),
(0x1B80, 0x1B81, 66, 23),
(0x1B82, 0x1B82, 66, 18),
(0x1B83, 0x1BA0, 66, 19),
(0x1BA1, 0x1BA1, 66, 18),
(0x1BA2, 0x1BA5, 66, 23),
(0x1BA6, 0x1BA7, 66, 18),
(0x1BA8, 0x1BA9, 66, 23),
(0x1BAA, 0x1BAA, 66, 18),
(0x1BAB, 0x1BAB, 66, 23),
(0x1BAC, 0x1BAD, 66, 18),
(0x1BAE, 0x1BAF, 66, 19),
(0x1BB0, 0x1BB9, 66, 8),
(0x1BBA, 0x1BBF, 66, 19),
(0x1BC0, 0x1BE5, 92, 19),
(0x1BE6, 0x1BE6, 92, 23),
(0x1BE7, 0x1BE7, 92, 18),
(0x1BE8, 0x1BE9, 92, 23),
(0x1BEA, 0x1BEC, 92, 18),
(0x1BED, 0x1BED, 92, 23),
(0x1BEE, 0x1BEE, 92, 18),
(0x1BEF, 0x1BF1, 92, 23),
(0x1BF2, 0x1BF3, 92, 18),
(0x1BFC, 0x1BFF, 92, 2),
(0x1C00, 0x1C23, 67, 19),
(0x1C24, 0x1C2B, 67, 18),
(0x1C2C, 0x1C33, 67, 23),
(0x1C34, 0x1C35, 67, 18),
(0x1C36, 0x1C37, 67, 23),
(0x1C3B, 0x1C3F, 67, 2),
(0x1C40, 0x1C49, 67, 8),
(0x1C4D, 0x1C4F, 67, 19),
(0x1C50, 0x1C59, 68, 8),
(0x1C5A, 0x1C77, 68, 19),
(0x1C78, 0x1C7D, 68, 17),
(0x1C7E, 0x1C7F, 68, 2),
(0x1CC0, 0x1CC7, 66, 2),
(0x1CD0, 0x1CD2, 40, 23),
(0x1CD3, 0x1CD3, 0, 2),
(0x1CD4, 0x1CE0, 40, 23),
(0x1CE1, 0x1CE1, 0, 18),
(0x1CE2, 0x1CE8, 40, 23),
(0x1CE9, 0x1CEC, 0, 19),
(0x1CED, 0x1CED, 40, 23),
(0x1CEE, 0x1CF1, 0, 19),
(0x1CF2, 0x1CF3, 0, 18),
(0x1CF4, 0x1CF4, 40, 23),
(0x1CF5, 0x1CF6, 0, 19),
(0x1D00, 0x1D25, 1, 15),
(0x1D26, 0x1D2A, 2, 15),
(0x1D2B, 0x1D2B, 3, 15),
(0x1D2C, 0x1D5C, 1, 17),
(0x1D5D, 0x1D61, 2, 17),
(0x1D62, 0x1D65, 1, 17),
(0x1D66, 0x1D6A, 2, 17),
(0x1D6B, 0x1D77, 1, 15),
(0x1D78, 0x1D78, 3, 17),
(0x1D79, 0x1D9A, 1, 15),
(0x1D9B, 0x1DBE, 1, 17),
(0x1DBF, 0x1DBF, 2, 17),
(0x1DC0, 0x1DE6, 40, 23),
(0x1DFC, 0x1DFF, 40, 23),
(0x1E00, 0x1EFF, 1, 15),
(0x1F00, 0x1F15, 2, 15),
(0x1F18, 0x1F1D, 2, 15),
(0x1F20, 0x1F45, 2, 15),
(0x1F48, 0x1F4D, 2, 15),
(0x1F50, 0x1F57, 2, 15),
(0x1F59, 0x1F59, 2, 15),
(0x1F5B, 0x1F5B, 2, 15),
(0x1F5D, 0x1F5D, 2, 15),
(0x1F5F, 0x1F7D, 2, 15),
(0x1F80, 0x1FB4, 2, 15),
(0x1FB6, 0x1FBC, 2, 15),
(0x1FBD, 0x1FBD, 2, 9),
(0x1FBE, 0x1FBE, 2, 15),
(0x1FBF, 0x1FC1, 2, 9),
(0x1FC2, 0x1FC4, 2, 15),
(0x1FC6, 0x1FCC, 2, 15),
(0x1FCD, 0x1FCF, 2, 9),
(0x1FD0, 0x1FD3, 2, 15),
(0x1FD6, 0x1FDB, 2, 15),
(0x1FDD, 0x1FDF, 2, 9),
(0x1FE0, 0x1FEC, 2, 15),
(0x1FED, 0x1FEF, 2, 9),
(0x1FF2, 0x1FF4, 2, 15),
(0x1FF6, 0x1FFC, 2, 15),
(0x1FFD, 0x1FFE, 2, 9),
(0x2000, 0x200A, 0, 1),
(0x200B, 0x200B, 0, 13),
(0x200C, 0x200D, 40, 13),
(0x200E, 0x200F, 0, 13),
(0x2010, 0x2015, 0, 7),
(0x2016, 0x2017, 0, 2),
(0x2018, 0x2018, 0, 12),
(0x2019, 0x2019, 0, 16),
(0x201A, 0x201A, 0, 4),
(0x201B, 0x201C, 0, 12),
(0x201D, 0x201D, 0, 16),
(0x201E, 0x201E, 0, 4),
(0x201F, 0x201F, 0, 12),
(0x2020, 0x2027, 0, 2),
(0x2028, 0x2028, 0, 20),
(0x2029, 0x2029, 0, 21),
(0x202A, 0x202E, 0, 13),
(0x202F, 0x202F, 0, 1),
(0x2030, 0x2038, 0, 2),
(0x2039, 0x2039, 0, 12),
(0x203A, 0x203A, 0, 16),
(0x203B, 0x203E, 0, 2),
(0x203F, 0x2040, 0, 10),
(0x2041, 0x2043, 0, 2),
(0x2044, 0x2044, 0, 6),
(0x2045, 0x2045, 0, 4),
(0x2046, 0x2046, 0, 5),
(0x2047, 0x2051, 0, 2),
(0x2052, 0x2052, 0, 6),
(0x2053, 0x2053, 0, 2),
(0x2054, 0x2054, 0, 10),
(0x2055, 0x205E, 0, 2),
(0x205F, 0x205F, 0, 1),
(0x2060, 0x2064, 0, 13),
(0x206A, 0x206F, 0, 13),
(0x2070, 0x2070, 0, 14),
(0x2071, 0x2071, 1, 17),
(0x2074, 0x2079, 0, 14),
(0x207A, 0x207C, 0, 6),
(0x207D, 0x207D, 0, 4),
(0x207E, 0x207E, 0, 5),
(0x207F, 0x207F, 1, 17),
(0x2080, 0x2089, 0, 14),
(0x208A, 0x208C, 0, 6),
(0x208D, 0x208D, 0, 4),
(0x208E, 0x208E, 0, 5),
(0x2090, 0x209C, 1, 17),
(0x20A0, 0x20B9, 0, 3),
(0x20D0, 0x20DC, 40, 23),
(0x20DD, 0x20E0, 40, 24),
(0x20E1, 0x20E1, 40, 23),
(0x20E2, 0x20E4, 40, 24),
(0x20E5, 0x20F0, 40, 23),
(0x2100, 0x2101, 0, 11),
(0x2102, 0x2102, 0, 15),
(0x2103, 0x2106, 0, 11),
(0x2107, 0x2107, 0, 15),
(0x2108, 0x2109, 0, 11),
(0x210A, 0x2113, 0, 15),
(0x2114, 0x2114, 0, 11),
(0x2115, 0x2115, 0, 15),
(0x2116, 0x2117, 0, 11),
(0x2118, 0x2118, 0, 6),
(0x2119, 0x211D, 0, 15),
(0x211E, 0x2123, 0, 11),
(0x2124, 0x2124, 0, 15),
(0x2125, 0x2125, 0, 11),
(0x2126, 0x2126, 2, 15),
(0x2127, 0x2127, 0, 11),
(0x2128, 0x2128, 0, 15),
(0x2129, 0x2129, 0, 11),
(0x212A, 0x212B, 1, 15),
(0x212C, 0x212D, 0, 15),
(0x212E, 0x212E, 0, 11),
(0x212F, 0x2131, 0, 15),
(0x2132, 0x2132, 1, 15),
(0x2133, 0x2134, 0, 15),
(0x2135, 0x2138, 0, 19),
(0x2139, 0x2139, 0, 15),
(0x213A, 0x213B, 0, 11),
(0x213C, 0x213F, 0, 15),
(0x2140, 0x2144, 0, 6),
(0x2145, 0x2149, 0, 15),
(0x214A, 0x214A, 0, 11),
(0x214B, 0x214B, 0, 6),
(0x214C, 0x214D, 0, 11),
(0x214E, 0x214E, 1, 15),
(0x214F, 0x214F, 0, 11),
(0x2150, 0x215F, 0, 14),
(0x2160, 0x2182, 1, 22),
(0x2183, 0x2184, 1, 15),
(0x2185, 0x2188, 1, 22),
(0x2189, 0x2189, 0, 14),
(0x2190, 0x2194, 0, 6),
(0x2195, 0x2199, 0, 11),
(0x219A, 0x219B, 0, 6),
(0x219C, 0x219F, 0, 11),
(0x21A0, 0x21A0, 0, 6),
(0x21A1, 0x21A2, 0, 11),
(0x21A3, 0x21A3, 0, 6),
(0x21A4, 0x21A5, 0, 11),
(0x21A6, 0x21A6, 0, 6),
(0x21A7, 0x21AD, 0, 11),
(0x21AE, 0x21AE, 0, 6),
(0x21AF, 0x21CD, 0, 11),
(0x21CE, 0x21CF, 0, 6),
(0x21D0, 0x21D1, 0, 11),
(0x21D2, 0x21D2, 0, 6),
(0x21D3, 0x21D3, 0, 11),
(0x21D4, 0x21D4, 0, 6),
(0x21D5, 0x21F3, 0, 11),
(0x21F4, 0x22FF, 0, 6),
(0x2300, 0x2307, 0, 11),
(0x2308, 0x230B, 0, 6),
(0x230C, 0x231F, 0, 11),
(0x2320, 0x2321, 0, 6),
(0x2322, 0x2328, 0, 11),
(0x2329, 0x2329, 0, 4),
(0x232A, 0x232A, 0, 5),
(0x232B, 0x237B, 0, 11),
(0x237C, 0x237C, 0, 6),
(0x237D, 0x239A, 0, 11),
(0x239B, 0x23B3, 0, 6),
(0x23B4, 0x23DB, 0, 11),
(0x23DC, 0x23E1, 0, 6),
(0x23E2, 0x23F3, 0, 11),
(0x2400, 0x2426, 0, 11),
(0x2440, 0x244A, 0, 11),
(0x2460, 0x249B, 0, 14),
(0x249C, 0x24E9, 0, 11),
(0x24EA, 0x24FF, 0, 14),
(0x2500, 0x25B6, 0, 11),
(0x25B7, 0x25B7, 0, 6),
(0x25B8, 0x25C0, 0, 11),
(0x25C1, 0x25C1, 0, 6),
(0x25C2, 0x25F7, 0, 11),
(0x25F8, 0x25FF, 0, 6),
(0x2600, 0x266E, 0, 11),
(0x266F, 0x266F, 0, 6),
(0x2670, 0x26FF, 0, 11),
(0x2701, 0x2767, 0, 11),
(0x2768, 0x2768, 0, 4),
(0x2769, 0x2769, 0, 5),
(0x276A, 0x276A, 0, 4),
(0x276B, 0x276B, 0, 5),
(0x276C, 0x276C, 0, 4),
(0x276D, 0x276D, 0, 5),
(0x276E, 0x276E, 0, 4),
(0x276F, 0x276F, 0, 5),
(0x2770, 0x2770, 0, 4),
(0x2771, 0x2771, 0, 5),
(0x2772, 0x2772, 0, 4),
(0x2773, 0x2773, 0, 5),
(0x2774, 0x2774, 0, 4),
(0x2775, 0x2775, 0, 5),
(0x2776, 0x2793, 0, 14),
(0x2794, 0x27BF, 0, 11),
(0x27C0, 0x27C4, 0, 6),
(0x27C5, 0x27C5, 0, 4),
(0x27C6, 0x27C6, 0, 5),
(0x27C7, 0x27E5, 0, 6),
(0x27E6, 0x27E6, 0, 4),
(0x27E7, 0x27E7, 0, 5),
(0x27E8, 0x27E8, 0, 4),
(0x27E9, 0x27E9, 0, 5),
(0x27EA, 0x27EA, 0, 4),
(0x27EB, 0x27EB, 0, 5),
(0x27EC, 0x27EC, 0, 4),
(0x27ED, 0x27ED, 0, 5),
(0x27EE, 0x27EE, 0, 4),
(0x27EF, 0x27EF, 0, 5),
(0x27F0, 0x27FF, 0, 6),
(0x2800, 0x28FF, 52, 11),
(0x2900, 0x2982, 0, 6),
(0x2983, 0x2983, 0, 4),
(0x2984, 0x2984, 0, 5),
(0x2985, 0x2985, 0, 4),
(0x2986, 0x2986, 0, 5),
(0x2987, 0x2987, 0, 4),
(0x2988, 0x2988, 0, 5),
(0x2989, 0x2989, 0, 4),
(0x298A, 0x298A, 0, 5),
(0x298B, 0x298B, 0, 4),
(0x298C, 0x298C, 0, 5),
(0x298D, 0x298D, 0, 4),
(0x298E, 0x298E, 0, 5),
(0x298F, 0x298F, 0, 4),
(0x2990, 0x2990, 0, 5),
(0x2991, 0x2991, 0, 4),
(0x2992, 0x2992, 0, 5),
(0x2993, 0x2993, 0, 4),
(0x2994, 0x2994, 0, 5),
(0x2995, 0x2995, 0, 4),
(0x2996, 0x2996, 0, 5),
(0x2997, 0x2997, 0, 4),
(0x2998, 0x2998, 0, 5),
(0x2999, 0x29D7, 0, 6),
(0x29D8, 0x29D8, 0, 4),
(0x29D9, 0x29D9, 0, 5),
(0x29DA, 0x29DA, 0, 4),
(0x29DB, 0x29DB, 0, 5),
(0x29DC, 0x29FB, 0, 6),
(0x29FC, 0x29FC, 0, 4),
(0x29FD, 0x29FD, 0, 5),
(0x29FE, 0x2AFF, 0, 6),
(0x2B00, 0x2B2F, 0, 11),
(0x2B30, 0x2B44, 0, 6),
(0x2B45, 0x2B46, 0, 11),
(0x2B47, 0x2B4C, 0, 6),
(0x2B50, 0x2B59, 0, 11),
(0x2C00, 0x2C2E, 56, 15),
(0x2C30, 0x2C5E, 56, 15),
(0x2C60, 0x2C7B, 1, 15),
(0x2C7C, 0x2C7D, 1, 17),
(0x2C7E, 0x2C7F, 1, 15),
(0x2C80, 0x2CE4, 54, 15),
(0x2CE5, 0x2CEA, 54, 11),
(0x2CEB, 0x2CEE, 54, 15),
(0x2CEF, 0x2CF1, 54, 23),
(0x2CF2, 0x2CF3, 54, 15),
(0x2CF9, 0x2CFC, 54, 2),
(0x2CFD, 0x2CFD, 54, 14),
(0x2CFE, 0x2CFF, 54, 2),
(0x2D00, 0x2D25, 23, 15),
(0x2D27, 0x2D27, 23, 15),
(0x2D2D, 0x2D2D, 23, 15),
(0x2D30, 0x2D67, 57, 19),
(0x2D6F, 0x2D6F, 57, 17),
(0x2D70, 0x2D70, 57, 2),
(0x2D7F, 0x2D7F, 57, 23),
(0x2D80, 0x2D96, 25, 19),
(0x2DA0, 0x2DA6, 25, 19),
(0x2DA8, 0x2DAE, 25, 19),
(0x2DB0, 0x2DB6, 25, 19),
(0x2DB8, 0x2DBE, 25, 19),
(0x2DC0, 0x2DC6, 25, 19),
(0x2DC8, 0x2DCE, 25, 19),
(0x2DD0, 0x2DD6, 25, 19),
(0x2DD8, 0x2DDE, 25, 19),
(0x2DE0, 0x2DFF, 3, 23),
(0x2E00, 0x2E01, 0, 2),
(0x2E02, 0x2E02, 0, 12),
(0x2E03, 0x2E03, 0, 16),
(0x2E04, 0x2E04, 0, 12),
(0x2E05, 0x2E05, 0, 16),
(0x2E06, 0x2E08, 0, 2),
(0x2E09, 0x2E09, 0, 12),
(0x2E0A, 0x2E0A, 0, 16),
(0x2E0B, 0x2E0B, 0, 2),
(0x2E0C, 0x2E0C, 0, 12),
(0x2E0D, 0x2E0D, 0, 16),
(0x2E0E, 0x2E16, 0, 2),
(0x2E17, 0x2E17, 0, 7),
(0x2E18, 0x2E19, 0, 2),
(0x2E1A, 0x2E1A, 0, 7),
(0x2E1B, 0x2E1B, 0, 2),
(0x2E1C, 0x2E1C, 0, 12),
(0x2E1D, 0x2E1D, 0, 16),
(0x2E1E, 0x2E1F, 0, 2),
(0x2E20, 0x2E20, 0, 12),
(0x2E21, 0x2E21, 0, 16),
(0x2E22, 0x2E22, 0, 4),
(0x2E23, 0x2E23, 0, 5),
(0x2E24, 0x2E24, 0, 4),
(0x2E25, 0x2E25, 0, 5),
(0x2E26, 0x2E26, 0, 4),
(0x2E27, 0x2E27, 0, 5),
(0x2E28, 0x2E28, 0, 4),
(0x2E29, 0x2E29, 0, 5),
(0x2E2A, 0x2E2E, 0, 2),
(0x2E2F, 0x2E2F, 0, 17),
(0x2E30, 0x2E39, 0, 2),
(0x2E3A, 0x2E3B, 0, 7),
(0x2E80, 0x2E99, 35, 11),
(0x2E9B, 0x2EF3, 35, 11),
(0x2F00, 0x2FD5, 35, 11),
(0x2FF0, 0x2FFB, 0, 11),
(0x3000, 0x3000, 0, 1),
(0x3001, 0x3003, 0, 2),
(0x3004, 0x3004, 0, 11),
(0x3005, 0x3005, 35, 17),
(0x3006, 0x3006, 0, 19),
(0x3007, 0x3007, 35, 22),
(0x3008, 0x3008, 0, 4),
(0x3009, 0x3009, 0, 5),
(0x300A, 0x300A, 0, 4),
(0x300B, 0x300B, 0, 5),
(0x300C, 0x300C, 0, 4),
(0x300D, 0x300D, 0, 5),
(0x300E, 0x300E, 0, 4),
(0x300F, 0x300F, 0, 5),
(0x3010, 0x3010, 0, 4),
(0x3011, 0x3011, 0, 5),
(0x3012, 0x3013, 0, 11),
(0x3014, 0x3014, 0, 4),
(0x3015, 0x3015, 0, 5),
(0x3016, 0x3016, 0, 4),
(0x3017, 0x3017, 0, 5),
(0x3018, 0x3018, 0, 4),
(0x3019, 0x3019, 0, 5),
(0x301A, 0x301A, 0, 4),
(0x301B, 0x301B, 0, 5),
(0x301C, 0x301C, 0, 7),
(0x301D, 0x301D, 0, 4),
(0x301E, 0x301F, 0, 5),
(0x3020, 0x3020, 0, 11),
(0x3021, 0x3029, 35, 22),
(0x302A, 0x302D, 40, 23),
(0x302E, 0x302F, 24, 18),
(0x3030, 0x3030, 0, 7),
(0x3031, 0x3035, 0, 17),
(0x3036, 0x3037, 0, 11),
(0x3038, 0x303A, 35, 22),
(0x303B, 0x303B, 35, 17),
(0x303C, 0x303C, 0, 19),
(0x303D, 0x303D, 0, 2),
(0x303E, 0x303F, 0, 11),
(0x3041, 0x3096, 32, 19),
(0x3099, 0x309A, 40, 23),
(0x309B, 0x309C, 0, 9),
(0x309D, 0x309E, 32, 17),
(0x309F, 0x309F, 32, 19),
(0x30A0, 0x30A0, 0, 7),
(0x30A1, 0x30FA, 33, 19),
(0x30FB, 0x30FB, 0, 2),
(0x30FC, 0x30FC, 0, 17),
(0x30FD, 0x30FE, 33, 17),
(0x30FF, 0x30FF, 33, 19),
(0x3105, 0x312D, 34, 19),
(0x3131, 0x318E, 24, 19),
(0x3190, 0x3191, 0, 11),
(0x3192, 0x3195, 0, 14),
(0x3196, 0x319F, 0, 11),
(0x31A0, 0x31BA, 34, 19),
(0x31C0, 0x31E3, 0, 11),
(0x31F0, 0x31FF, 33, 19),
(0x3200, 0x321E, 24, 11),
(0x3220, 0x3229, 0, 14),
(0x322A, 0x3247, 0, 11),
(0x3248, 0x324F, 0, 14),
(0x3250, 0x3250, 0, 11),
(0x3251, 0x325F, 0, 14),
(0x3260, 0x327E, 24, 11),
(0x327F, 0x327F, 0, 11),
(0x3280, 0x3289, 0, 14),
(0x328A, 0x32B0, 0, 11),
(0x32B1, 0x32BF, 0, 14),
(0x32C0, 0x32CF, 0, 11),
(0x32D0, 0x32FE, 33, 11),
(0x3300, 0x3357, 33, 11),
(0x3358, 0x33FF, 0, 11),
(0x3400, 0x4DB5, 35, 19),
(0x4DC0, 0x4DFF, 0, 11),
(0x4E00, 0x9FCC, 35, 19),
(0xA000, 0xA014, 36, 19),
(0xA015, 0xA015, 36, 17),
(0xA016, 0xA48C, 36, 19),
(0xA490, 0xA4C6, 36, 11),
(0xA4D0, 0xA4F7, 82, 19),
(0xA4F8, 0xA4FD, 82, 17),
(0xA4FE, 0xA4FF, 82, 2),
(0xA500, 0xA60B, 69, 19),
(0xA60C, 0xA60C, 69, 17),
(0xA60D, 0xA60F, 69, 2),
(0xA610, 0xA61F, 69, 19),
(0xA620, 0xA629, 69, 8),
(0xA62A, 0xA62B, 69, 19),
(0xA640, 0xA66D, 3, 15),
(0xA66E, 0xA66E, 3, 19),
(0xA66F, 0xA66F, 3, 23),
(0xA670, 0xA672, 3, 24),
(0xA673, 0xA673, 3, 2),
(0xA674, 0xA67D, 3, 23),
(0xA67E, 0xA67E, 3, 2),
(0xA67F, 0xA67F, 3, 17),
(0xA680, 0xA697, 3, 15),
(0xA69F, 0xA69F, 3, 23),
(0xA6A0, 0xA6E5, 83, 19),
(0xA6E6, 0xA6EF, 83, 22),
(0xA6F0, 0xA6F1, 83, 23),
(0xA6F2, 0xA6F7, 83, 2),
(0xA700, 0xA716, 0, 9),
(0xA717, 0xA71F, 0, 17),
(0xA720, 0xA721, 0, 9),
(0xA722, 0xA76F, 1, 15),
(0xA770, 0xA770, 1, 17),
(0xA771, 0xA787, 1, 15),
(0xA788, 0xA788, 0, 17),
(0xA789, 0xA78A, 0, 9),
(0xA78B, 0xA78E, 1, 15),
(0xA790, 0xA793, 1, 15),
(0xA7A0, 0xA7AA, 1, 15),
(0xA7F8, 0xA7F9, 1, 17),
(0xA7FA, 0xA7FA, 1, 15),
(0xA7FB, 0xA7FF, 1, 19),
(0xA800, 0xA801, 58, 19),
(0xA802, 0xA802, 58, 23),
(0xA803, 0xA805, 58, 19),
(0xA806, 0xA806, 58, 23),
(0xA807, 0xA80A, 58, 19),
(0xA80B, 0xA80B, 58, 23),
(0xA80C, 0xA822, 58, 19),
(0xA823, 0xA824, 58, 18),
(0xA825, 0xA826, 58, 23),
(0xA827, 0xA827, 58, 18),
(0xA828, 0xA82B, 58, 11),
(0xA830, 0xA835, 0, 14),
(0xA836, 0xA837, 0, 11),
(0xA838, 0xA838, 0, 3),
(0xA839, 0xA839, 0, 11),
(0xA840, 0xA873, 64, 19),
(0xA874, 0xA877, 64, 2),
(0xA880, 0xA881, 70, 18),
(0xA882, 0xA8B3, 70, 19),
(0xA8B4, 0xA8C3, 70, 18),
(0xA8C4, 0xA8C4, 70, 23),
(0xA8CE, 0xA8CF, 70, 2),
(0xA8D0, 0xA8D9, 70, 8),
(0xA8E0, 0xA8F1, 9, 23),
(0xA8F2, 0xA8F7, 9, 19),
(0xA8F8, 0xA8FA, 9, 2),
(0xA8FB, 0xA8FB, 9, 19),
(0xA900, 0xA909, 71, 8),
(0xA90A, 0xA925, 71, 19),
(0xA926, 0xA92D, 71, 23),
(0xA92E, 0xA92F, 71, 2),
(0xA930, 0xA946, 72, 19),
(0xA947, 0xA951, 72, 23),
(0xA952, 0xA953, 72, 18),
(0xA95F, 0xA95F, 72, 2),
(0xA960, 0xA97C, 24, 19),
(0xA980, 0xA982, 84, 23),
(0xA983, 0xA983, 84, 18),
(0xA984, 0xA9B2, 84, 19),
(0xA9B3, 0xA9B3, 84, 23),
(0xA9B4, 0xA9B5, 84, 18),
(0xA9B6, 0xA9B9, 84, 23),
(0xA9BA, 0xA9BB, 84, 18),
(0xA9BC, 0xA9BC, 84, 23),
(0xA9BD, 0xA9C0, 84, 18),
(0xA9C1, 0xA9CD, 84, 2),
(0xA9CF, 0xA9CF, 84, 17),
(0xA9D0, 0xA9D9, 84, 8),
(0xA9DE, 0xA9DF, 84, 2),
(0xAA00, 0xAA28, 76, 19),
(0xAA29, 0xAA2E, 76, 23),
(0xAA2F, 0xAA30, 76, 18),
(0xAA31, 0xAA32, 76, 23),
(0xAA33, 0xAA34, 76, 18),
(0xAA35, 0xAA36, 76, 23),
(0xAA40, 0xAA42, 76, 19),
(0xAA43, 0xAA43, 76, 23),
(0xAA44, 0xAA4B, 76, 19),
(0xAA4C, 0xAA4C, 76, 23),
(0xAA4D, 0xAA4D, 76, 18),
(0xAA50, 0xAA59, 76, 8),
(0xAA5C, 0xAA5F, 76, 2),
(0xAA60, 0xAA6F, 22, 19),
(0xAA70, 0xAA70, 22, 17),
(0xAA71, 0xAA76, 22, 19),
(0xAA77, 0xAA79, 22, 11),
(0xAA7A, 0xAA7A, 22, 19),
(0xAA7B, 0xAA7B, 22, 18),
(0xAA80, 0xAAAF, 78, 19),
(0xAAB0, 0xAAB0, 78, 23),
(0xAAB1, 0xAAB1, 78, 19),
(0xAAB2, 0xAAB4, 78, 23),
(0xAAB5, 0xAAB6, 78, 19),
(0xAAB7, 0xAAB8, 78, 23),
(0xAAB9, 0xAABD, 78, 19),
(0xAABE, 0xAABF, 78, 23),
(0xAAC0, 0xAAC0, 78, 19),
(0xAAC1, 0xAAC1, 78, 23),
(0xAAC2, 0xAAC2, 78, 19),
(0xAADB, 0xAADC, 78, 19),
(0xAADD, 0xAADD, 78, 17),
(0xAADE, 0xAADF, 78, 2),
(0xAAE0, 0xAAEA, 85, 19),
(0xAAEB, 0xAAEB, 85, 18),
(0xAAEC, 0xAAED, 85, 23),
(0xAAEE, 0xAAEF, 85, 18),
(0xAAF0, 0xAAF1, 85, 2),
(0xAAF2, 0xAAF2, 85, 19),
(0xAAF3, 0xAAF4, 85, 17),
(0xAAF5, 0xAAF5, 85, 18),
(0xAAF6, 0xAAF6, 85, 23),
(0xAB01, 0xAB06, 25, 19),
(0xAB09, 0xAB0E, 25, 19),
(0xAB11, 0xAB16, 25, 19),
(0xAB20, 0xAB26, 25, 19),
(0xAB28, 0xAB2E, 25, 19),
(0xABC0, 0xABE2, 85, 19),
(0xABE3, 0xABE4, 85, 18),
(0xABE5, 0xABE5, 85, 23),
(0xABE6, 0xABE7, 85, 18),
(0xABE8, 0xABE8, 85, 23),
(0xABE9, 0xABEA, 85, 18),
(0xABEB, 0xABEB, 85, 2),
(0xABEC, 0xABEC, 85, 18),
(0xABED, 0xABED, 85, 23),
(0xABF0, 0xABF9, 85, 8),
(0xAC00, 0xD7A3, 24, 19),
(0xD7B0, 0xD7C6, 24, 19),
(0xD7CB, 0xD7FB, 24, 19),
(0xF900, 0xFA6D, 35, 19),
(0xFA70, 0xFAD9, 35, 19),
(0xFB00, 0xFB06, 1, 15),
(0xFB13, 0xFB17, 4, 15),
(0xFB1D, 0xFB1D, 5, 19),
(0xFB1E, 0xFB1E, 5, 23),
(0xFB1F, 0xFB28, 5, 19),
(0xFB29, 0xFB29, 5, 6),
(0xFB2A, 0xFB36, 5, 19),
(0xFB38, 0xFB3C, 5, 19),
(0xFB3E, 0xFB3E, 5, 19),
(0xFB40, 0xFB41, 5, 19),
(0xFB43, 0xFB44, 5, 19),
(0xFB46, 0xFB4F, 5, 19),
(0xFB50, 0xFBB1, 6, 19),
(0xFBB2, 0xFBC1, 6, 9),
(0xFBD3, 0xFD3D, 6, 19),
(0xFD3E, 0xFD3E, 0, 4),
(0xFD3F, 0xFD3F, 0, 5),
(0xFD50, 0xFD8F, 6, 19),
(0xFD92, 0xFDC7, 6, 19),
(0xFDF0, 0xFDFB, 6, 19),
(0xFDFC, 0xFDFC, 6, 3),
(0xFDFD, 0xFDFD, 0, 11),
(0xFE00, 0xFE0F, 40, 23),
(0xFE10, 0xFE16, 0, 2),
(0xFE17, 0xFE17, 0, 4),
(0xFE18, 0xFE18, 0, 5),
(0xFE19, 0xFE19, 0, 2),
(0xFE20, 0xFE26, 40, 23),
(0xFE30, 0xFE30, 0, 2),
(0xFE31, 0xFE32, 0, 7),
(0xFE33, 0xFE34, 0, 10),
(0xFE35, 0xFE35, 0, 4),
(0xFE36, 0xFE36, 0, 5),
(0xFE37, 0xFE37, 0, 4),
(0xFE38, 0xFE38, 0, 5),
(0xFE39, 0xFE39, 0, 4),
(0xFE3A, 0xFE3A, 0, 5),
(0xFE3B, 0xFE3B, 0, 4),
(0xFE3C, 0xFE3C, 0, 5),
(0xFE3D, 0xFE3D, 0, 4),
(0xFE3E, 0xFE3E, 0, 5),
(0xFE3F, 0xFE3F, 0, 4),
(0xFE40, 0xFE40, 0, 5),
(0xFE41, 0xFE41, 0, 4),
(0xFE42, 0xFE42, 0, 5),
(0xFE43, 0xFE43, 0, 4),
(0xFE44, 0xFE44, 0, 5),
(0xFE45, 0xFE46, 0, 2),
(0xFE47, 0xFE47, 0, 4),
(0xFE48, 0xFE48, 0, 5),
(0xFE49, 0xFE4C, 0, 2),
(0xFE4D, 0xFE4F, 0, 10),
(0xFE50, 0xFE52, 0, 2),
(0xFE54, 0xFE57, 0, 2),
(0xFE58, 0xFE58, 0, 7),
(0xFE59, 0xFE59, 0, 4),
(0xFE5A, 0xFE5A, 0, 5),
(0xFE5B, 0xFE5B, 0, 4),
(0xFE5C, 0xFE5C, 0, 5),
(0xFE5D, 0xFE5D, 0, 4),
(0xFE5E, 0xFE5E, 0, 5),
(0xFE5F, 0xFE61, 0, 2),
(0xFE62, 0xFE62, 0, 6),
(0xFE63, 0xFE63, 0, 7),
(0xFE64, 0xFE66, 0, 6),
(0xFE68, 0xFE68, 0, 2),
(0xFE69, 0xFE69, 0, 3),
(0xFE6A, 0xFE6B, 0, 2),
(0xFE70, 0xFE74, 6, 19),
(0xFE76, 0xFEFC, 6, 19),
(0xFEFF, 0xFEFF, 0, 13),
(0xFF01, 0xFF03, 0, 2),
(0xFF04, 0xFF04, 0, 3),
(0xFF05, 0xFF07, 0, 2),
(0xFF08, 0xFF08, 0, 4),
(0xFF09, 0xFF09, 0, 5),
(0xFF0A, 0xFF0A, 0, 2),
(0xFF0B, 0xFF0B, 0, 6),
(0xFF0C, 0xFF0C, 0, 2),
(0xFF0D, 0xFF0D, 0, 7),
(0xFF0E, 0xFF0F, 0, 2),
(0xFF10, 0xFF19, 0, 8),
(0xFF1A, 0xFF1B, 0, 2),
(0xFF1C, 0xFF1E, 0, 6),
(0xFF1F, 0xFF20, 0, 2),
(0xFF21, 0xFF3A, 1, 15),
(0xFF3B, 0xFF3B, 0, 4),
(0xFF3C, 0xFF3C, 0, 2),
(0xFF3D, 0xFF3D, 0, 5),
(0xFF3E, 0xFF3E, 0, 9),
(0xFF3F, 0xFF3F, 0, 10),
(0xFF40, 0xFF40, 0, 9),
(0xFF41, 0xFF5A, 1, 15),
(0xFF5B, 0xFF5B, 0, 4),
(0xFF5C, 0xFF5C, 0, 6),
(0xFF5D, 0xFF5D, 0, 5),
(0xFF5E, 0xFF5E, 0, 6),
(0xFF5F, 0xFF5F, 0, 4),
(0xFF60, 0xFF60, 0, 5),
(0xFF61, 0xFF61, 0, 2),
(0xFF62, 0xFF62, 0, 4),
(0xFF63, 0xFF63, 0, 5),
(0xFF64, 0xFF65, 0, 2),
(0xFF66, 0xFF6F, 33, 19),
(0xFF70, 0xFF70, 0, 17),
(0xFF71, 0xFF9D, 33, 19),
(0xFF9E, 0xFF9F, 0, 17),
(0xFFA0, 0xFFBE, 24, 19),
(0xFFC2, 0xFFC7, 24, 19),
(0xFFCA, 0xFFCF, 24, 19),
(0xFFD2, 0xFFD7, 24, 19),
(0xFFDA, 0xFFDC, 24, 19),
(0xFFE0, 0xFFE1, 0, 3),
(0xFFE2, 0xFFE2, 0, 6),
(0xFFE3, 0xFFE3, 0, 9),
(0xFFE4, 0xFFE4, 0, 11),
(0xFFE5, 0xFFE6, 0, 3),
(0xFFE8, 0xFFE8, 0, 11),
(0xFFE9, 0xFFEC, 0, 6),
(0xFFED, 0xFFEE, 0, 11),
(0xFFF9, 0xFFFB, 0, 13),
(0xFFFC, 0xFFFD, 0, 11),
(0x10000, 0x1000B, 47, 19),
(0x1000D, 0x10026, 47, 19),
(0x10028, 0x1003A, 47, 19),
(0x1003C, 0x1003D, 47, 19),
(0x1003F, 0x1004D, 47, 19),
(0x10050, 0x1005D, 47, 19),
(0x10080, 0x100FA, 47, 19),
(0x10100, 0x10102, 0, 2),
(0x10107, 0x10133, 0, 14),
(0x10137, 0x1013F, 0, 11),
(0x10140, 0x10174, 2, 22),
(0x10175, 0x10178, 2, 14),
(0x10179, 0x10189, 2, 11),
(0x1018A, 0x1018A, 2, 14),
(0x10190, 0x1019B, 0, 11),
(0x101D0, 0x101FC, 0, 11),
(0x101FD, 0x101FD, 40, 23),
(0x10280, 0x1029C, 73, 19),
(0x102A0, 0x102D0, 74, 19),
(0x10300, 0x1031E, 37, 19),
(0x10320, 0x10323, 37, 14),
(0x10330, 0x10340, 38, 19),
(0x10341, 0x10341, 38, 22),
(0x10342, 0x10349, 38, 19),
(0x1034A, 0x1034A, 38, 22),
(0x10380, 0x1039D, 48, 19),
(0x1039F, 0x1039F, 48, 2),
(0x103A0, 0x103C3, 59, 19),
(0x103C8, 0x103CF, 59, 19),
(0x103D0, 0x103D0, 59, 2),
(0x103D1, 0x103D5, 59, 22),
(0x10400, 0x1044F, 39, 15),
(0x10450, 0x1047F, 49, 19),
(0x10480, 0x1049D, 50, 19),
(0x104A0, 0x104A9, 50, 8),
(0x10800, 0x10805, 51, 19),
(0x10808, 0x10808, 51, 19),
(0x1080A, 0x10835, 51, 19),
(0x10837, 0x10838, 51, 19),
(0x1083C, 0x1083C, 51, 19),
(0x1083F, 0x1083F, 51, 19),
(0x10840, 0x10855, 86, 19),
(0x10857, 0x10857, 86, 2),
(0x10858, 0x1085F, 86, 14),
(0x10900, 0x10915, 63, 19),
(0x10916, 0x1091B, 63, 14),
(0x1091F, 0x1091F, 63, 2),
(0x10920, 0x10939, 75, 19),
(0x1093F, 0x1093F, 75, 2),
(0x10980, 0x1099F, 97, 19),
(0x109A0, 0x109B7, 96, 19),
(0x109BE, 0x109BF, 96, 19),
(0x10A00, 0x10A00, 60, 19),
(0x10A01, 0x10A03, 60, 23),
(0x10A05, 0x10A06, 60, 23),
(0x10A0C, 0x10A0F, 60, 23),
(0x10A10, 0x10A13, 60, 19),
(0x10A15, 0x10A17, 60, 19),
(0x10A19, 0x10A33, 60, 19),
(0x10A38, 0x10A3A, 60, 23),
(0x10A3F, 0x10A3F, 60, 23),
(0x10A40, 0x10A47, 60, 14),
(0x10A50, 0x10A58, 60, 2),
(0x10A60, 0x10A7C, 87, 19),
(0x10A7D, 0x10A7E, 87, 14),
(0x10A7F, 0x10A7F, 87, 2),
(0x10B00, 0x10B35, 79, 19),
(0x10B39, 0x10B3F, 79, 2),
(0x10B40, 0x10B55, 88, 19),
(0x10B58, 0x10B5F, 88, 14),
(0x10B60, 0x10B72, 89, 19),
(0x10B78, 0x10B7F, 89, 14),
(0x10C00, 0x10C48, 90, 19),
(0x10E60, 0x10E7E, 6, 14),
(0x11000, 0x11000, 93, 18),
(0x11001, 0x11001, 93, 23),
(0x11002, 0x11002, 93, 18),
(0x11003, 0x11037, 93, 19),
(0x11038, 0x11046, 93, 23),
(0x11047, 0x1104D, 93, 2),
(0x11052, 0x11065, 93, 14),
(0x11066, 0x1106F, 93, 8),
(0x11080, 0x11081, 91, 23),
(0x11082, 0x11082, 91, 18),
(0x11083, 0x110AF, 91, 19),
(0x110B0, 0x110B2, 91, 18),
(0x110B3, 0x110B6, 91, 23),
(0x110B7, 0x110B8, 91, 18),
(0x110B9, 0x110BA, 91, 23),
(0x110BB, 0x110BC, 91, 2),
(0x110BD, 0x110BD, 91, 13),
(0x110BE, 0x110C1, 91, 2),
(0x110D0, 0x110E8, 100, 19),
(0x110F0, 0x110F9, 100, 8),
(0x11100, 0x11102, 95, 23),
(0x11103, 0x11126, 95, 19),
(0x11127, 0x1112B, 95, 23),
(0x1112C, 0x1112C, 95, 18),
(0x1112D, 0x11134, 95, 23),
(0x11136, 0x1113F, 95, 8),
(0x11140, 0x11143, 95, 2),
(0x11180, 0x11181, 99, 23),
(0x11182, 0x11182, 99, 18),
(0x11183, 0x111B2, 99, 19),
(0x111B3, 0x111B5, 99, 18),
(0x111B6, 0x111BE, 99, 23),
(0x111BF, 0x111C0, 99, 18),
(0x111C1, 0x111C4, 99, 19),
(0x111C5, 0x111C8, 99, 2),
(0x111D0, 0x111D9, 99, 8),
(0x11680, 0x116AA, 101, 19),
(0x116AB, 0x116AB, 101, 23),
(0x116AC, 0x116AC, 101, 18),
(0x116AD, 0x116AD, 101, 23),
(0x116AE, 0x116AF, 101, 18),
(0x116B0, 0x116B5, 101, 23),
(0x116B6, 0x116B6, 101, 18),
(0x116B7, 0x116B7, 101, 23),
(0x116C0, 0x116C9, 101, 8),
(0x12000, 0x1236E, 62, 19),
(0x12400, 0x12462, 62, 22),
(0x12470, 0x12473, 62, 2),
(0x13000, 0x1342E, 80, 19),
(0x16800, 0x16A38, 83, 19),
(0x16F00, 0x16F44, 98, 19),
(0x16F50, 0x16F50, 98, 19),
(0x16F51, 0x16F7E, 98, 18),
(0x16F8F, 0x16F92, 98, 23),
(0x16F93, 0x16F9F, 98, 17),
(0x1B000, 0x1B000, 33, 19),
(0x1B001, 0x1B001, 32, 19),
(0x1D000, 0x1D0F5, 0, 11),
(0x1D100, 0x1D126, 0, 11),
(0x1D129, 0x1D164, 0, 11),
(0x1D165, 0x1D166, 0, 18),
(0x1D167, 0x1D169, 40, 23),
(0x1D16A, 0x1D16C, 0, 11),
(0x1D16D, 0x1D172, 0, 18),
(0x1D173, 0x1D17A, 0, 13),
(0x1D17B, 0x1D182, 40, 23),
(0x1D183, 0x1D184, 0, 11),
(0x1D185, 0x1D18B, 40, 23),
(0x1D18C, 0x1D1A9, 0, 11),
(0x1D1AA, 0x1D1AD, 40, 23),
(0x1D1AE, 0x1D1DD, 0, 11),
(0x1D200, 0x1D241, 2, 11),
(0x1D242, 0x1D244, 2, 23),
(0x1D245, 0x1D245, 2, 11),
(0x1D300, 0x1D356, 0, 11),
(0x1D360, 0x1D371, 0, 14),
(0x1D400, 0x1D454, 0, 15),
(0x1D456, 0x1D49C, 0, 15),
(0x1D49E, 0x1D49F, 0, 15),
(0x1D4A2, 0x1D4A2, 0, 15),
(0x1D4A5, 0x1D4A6, 0, 15),
(0x1D4A9, 0x1D4AC, 0, 15),
(0x1D4AE, 0x1D4B9, 0, 15),
(0x1D4BB, 0x1D4BB, 0, 15),
(0x1D4BD, 0x1D4C3, 0, 15),
(0x1D4C5, 0x1D505, 0, 15),
(0x1D507, 0x1D50A, 0, 15),
(0x1D50D, 0x1D514, 0, 15),
(0x1D516, 0x1D51C, 0, 15),
(0x1D51E, 0x1D539, 0, 15),
(0x1D53B, 0x1D53E, 0, 15),
(0x1D540, 0x1D544, 0, 15),
(0x1D546, 0x1D546, 0, 15),
(0x1D54A, 0x1D550, 0, 15),
(0x1D552, 0x1D6A5, 0, 15),
(0x1D6A8, 0x1D6C0, 0, 15),
(0x1D6C1, 0x1D6C1, 0, 6),
(0x1D6C2, 0x1D6DA, 0, 15),
(0x1D6DB, 0x1D6DB, 0, 6),
(0x1D6DC, 0x1D6FA, 0, 15),
(0x1D6FB, 0x1D6FB, 0, 6),
(0x1D6FC, 0x1D714, 0, 15),
(0x1D715, 0x1D715, 0, 6),
(0x1D716, 0x1D734, 0, 15),
(0x1D735, 0x1D735, 0, 6),
(0x1D736, 0x1D74E, 0, 15),
(0x1D74F, 0x1D74F, 0, 6),
(0x1D750, 0x1D76E, 0, 15),
(0x1D76F, 0x1D76F, 0, 6),
(0x1D770, 0x1D788, 0, 15),
(0x1D789, 0x1D789, 0, 6),
(0x1D78A, 0x1D7A8, 0, 15),
(0x1D7A9, 0x1D7A9, 0, 6),
(0x1D7AA, 0x1D7C2, 0, 15),
(0x1D7C3, 0x1D7C3, 0, 6),
(0x1D7C4, 0x1D7CB, 0, 15),
(0x1D7CE, 0x1D7FF, 0, 8),
(0x1EE00, 0x1EE03, 6, 19),
(0x1EE05, 0x1EE1F, 6, 19),
(0x1EE21, 0x1EE22, 6, 19),
(0x1EE24, 0x1EE24, 6, 19),
(0x1EE27, 0x1EE27, 6, 19),
(0x1EE29, 0x1EE32, 6, 19),
(0x1EE34, 0x1EE37, 6, 19),
(0x1EE39, 0x1EE39, 6, 19),
(0x1EE3B, 0x1EE3B, 6, 19),
(0x1EE42, 0x1EE42, 6, 19),
(0x1EE47, 0x1EE47, 6, 19),
(0x1EE49, 0x1EE49, 6, 19),
(0x1EE4B, 0x1EE4B, 6, 19),
(0x1EE4D, 0x1EE4F, 6, 19),
(0x1EE51, 0x1EE52, 6, 19),
(0x1EE54, 0x1EE54, 6, 19),
(0x1EE57, 0x1EE57, 6, 19),
(0x1EE59, 0x1EE59, 6, 19),
(0x1EE5B, 0x1EE5B, 6, 19),
(0x1EE5D, 0x1EE5D, 6, 19),
(0x1EE5F, 0x1EE5F, 6, 19),
(0x1EE61, 0x1EE62, 6, 19),
(0x1EE64, 0x1EE64, 6, 19),
(0x1EE67, 0x1EE6A, 6, 19),
(0x1EE6C, 0x1EE72, 6, 19),
(0x1EE74, 0x1EE77, 6, 19),
(0x1EE79, 0x1EE7C, 6, 19),
(0x1EE7E, 0x1EE7E, 6, 19),
(0x1EE80, 0x1EE89, 6, 19),
(0x1EE8B, 0x1EE9B, 6, 19),
(0x1EEA1, 0x1EEA3, 6, 19),
(0x1EEA5, 0x1EEA9, 6, 19),
(0x1EEAB, 0x1EEBB, 6, 19),
(0x1EEF0, 0x1EEF1, 6, 6),
(0x1F000, 0x1F02B, 0, 11),
(0x1F030, 0x1F093, 0, 11),
(0x1F0A0, 0x1F0AE, 0, 11),
(0x1F0B1, 0x1F0BE, 0, 11),
(0x1F0C1, 0x1F0CF, 0, 11),
(0x1F0D1, 0x1F0DF, 0, 11),
(0x1F100, 0x1F10A, 0, 14),
(0x1F110, 0x1F12E, 0, 11),
(0x1F130, 0x1F16B, 0, 11),
(0x1F170, 0x1F19A, 0, 11),
(0x1F1E6, 0x1F1FF, 0, 11),
(0x1F200, 0x1F200, 32, 11),
(0x1F201, 0x1F202, 0, 11),
(0x1F210, 0x1F23A, 0, 11),
(0x1F240, 0x1F248, 0, 11),
(0x1F250, 0x1F251, 0, 11),
(0x1F300, 0x1F320, 0, 11),
(0x1F330, 0x1F335, 0, 11),
(0x1F337, 0x1F37C, 0, 11),
(0x1F380, 0x1F393, 0, 11),
(0x1F3A0, 0x1F3C4, 0, 11),
(0x1F3C6, 0x1F3CA, 0, 11),
(0x1F3E0, 0x1F3F0, 0, 11),
(0x1F400, 0x1F43E, 0, 11),
(0x1F440, 0x1F440, 0, 11),
(0x1F442, 0x1F4F7, 0, 11),
(0x1F4F9, 0x1F4FC, 0, 11),
(0x1F500, 0x1F53D, 0, 11),
(0x1F540, 0x1F543, 0, 11),
(0x1F550, 0x1F567, 0, 11),
(0x1F5FB, 0x1F640, 0, 11),
(0x1F645, 0x1F64F, 0, 11),
(0x1F680, 0x1F6C5, 0, 11),
(0x1F700, 0x1F773, 0, 11),
(0x20000, 0x2A6D6, 35, 19),
(0x2A700, 0x2B734, 35, 19),
(0x2B740, 0x2B81D, 35, 19),
(0x2F800, 0x2FA1D, 35, 19),
(0xE0001, 0xE0001, 0, 13),
(0xE0020, 0xE007F, 0, 13),
(0xE0100, 0xE01EF, 40, 23),
],
}
def script_cat(chr):
"""For the unicode character chr return a tuple (Scriptname, Category)."""
l = 0
r = len(script_data["idx"]) - 1
c = ord(chr)
while r >= l:
m = (l + r) >> 1
if c < script_data["idx"][m][0]:
r = m - 1
elif c > script_data["idx"][m][1]:
l = m + 1
else:
return (
script_data["names"][script_data["idx"][m][2]],
script_data["cats"][script_data["idx"][m][3]],
)
return "Unknown", "Zzzz"
def script(chr):
a, _ = script_cat(chr)
return a
def category(chr):
_, a = script_cat(chr)
return a
def _compile_scripts_txt():
# build indexes from 'scripts.txt'
idx = []
names = []
cats = []
import urllib2, re, textwrap
url = "http://www.unicode.org/Public/UNIDATA/Scripts.txt"
f = urllib2.urlopen(url)
for ln in f:
p = re.findall(r"([0-9A-F]+)(?:\.\.([0-9A-F]+))?\W+(\w+)\s*#\s*(\w+)", ln)
if p:
a, b, name, cat = p[0]
if name not in names:
names.append(name)
if cat not in cats:
cats.append(cat)
idx.append(
(int(a, 16), int(b or a, 16), names.index(name), cats.index(cat))
)
idx.sort()
print(
'script_data = {\n"names":%s,\n"cats":%s,\n"idx":[\n%s\n]}'
% (
"\n".join(textwrap.wrap(repr(names), 80)),
"\n".join(textwrap.wrap(repr(cats), 80)),
"\n".join(
textwrap.wrap(", ".join("(0x%x,0x%x,%d,%d)" % c for c in idx), 80)
),
)
)