// // unicode_helper.go // Copyright (C) 2023 tiglog // // Distributed under terms of the MIT license. // package helper import "encoding/json" var json_data = `[ { "en": "Basic Latin", "start_str": "0x0000", "end_str": "0x007F", "start": 0, "end": 127 }, { "en": "Latin-1 Supplement", "start_str": "0x0080", "end_str": "0x00FF", "start": 128, "end": 255 }, { "en": "Latin Extended-A", "start_str": "0x0100", "end_str": "0x017F", "start": 256, "end": 383 }, { "en": "Latin Extended-B", "start_str": "0x0180", "end_str": "0x024F", "start": 384, "end": 591 }, { "en": "IPA Extensions", "start_str": "0x0250", "end_str": "0x02AF", "start": 592, "end": 687 }, { "en": "Spacing Modifier Letters", "start_str": "0x02B0", "end_str": "0x02FF", "start": 688, "end": 767 }, { "en": "Combining Diacritical Marks", "start_str": "0x0300", "end_str": "0x036F", "start": 768, "end": 879 }, { "en": "Greek and Coptic", "start_str": "0x0370", "end_str": "0x03FF", "start": 880, "end": 1023 }, { "en": "Cyrillic", "start_str": "0x0400", "end_str": "0x04FF", "start": 1024, "end": 1279 }, { "en": "Cyrillic Supplement", "start_str": "0x0500", "end_str": "0x052F", "start": 1280, "end": 1327 }, { "en": "Armenian", "start_str": "0x0530", "end_str": "0x058F", "start": 1328, "end": 1423 }, { "en": "Hebrew", "start_str": "0x0590", "end_str": "0x05FF", "start": 1424, "end": 1535 }, { "en": "Arabic", "start_str": "0x0600", "end_str": "0x06FF", "start": 1536, "end": 1791 }, { "en": "Syriac", "start_str": "0x0700", "end_str": "0x074F", "start": 1792, "end": 1871 }, { "en": "Arabic Supplement", "start_str": "0x0750", "end_str": "0x077F", "start": 1872, "end": 1919 }, { "en": "Thaana", "start_str": "0x0780", "end_str": "0x07BF", "start": 1920, "end": 1983 }, { "en": "NKo", "start_str": "0x07C0", "end_str": "0x07FF", "start": 1984, "end": 2047 }, { "en": "Samaritan", "start_str": "0x0800", "end_str": "0x083F", "start": 2048, "end": 2111 }, { "en": "Mandaic", "start_str": "0x0840", "end_str": "0x085F", "start": 2112, "end": 2143 }, { "en": "Syriac Supplement", "start_str": "0x0860", "end_str": "0x086F", "start": 2144, "end": 2159 }, { "en": "Arabic Extended-B", "start_str": "0x0870", "end_str": "0x089F", "start": 2160, "end": 2207 }, { "en": "Arabic Extended-A", "start_str": "0x08A0", "end_str": "0x08FF", "start": 2208, "end": 2303 }, { "en": "Devanagari", "start_str": "0x0900", "end_str": "0x097F", "start": 2304, "end": 2431 }, { "en": "Bengali", "start_str": "0x0980", "end_str": "0x09FF", "start": 2432, "end": 2559 }, { "en": "Gurmukhi", "start_str": "0x0A00", "end_str": "0x0A7F", "start": 2560, "end": 2687 }, { "en": "Gujarati", "start_str": "0x0A80", "end_str": "0x0AFF", "start": 2688, "end": 2815 }, { "en": "Oriya", "start_str": "0x0B00", "end_str": "0x0B7F", "start": 2816, "end": 2943 }, { "en": "Tamil", "start_str": "0x0B80", "end_str": "0x0BFF", "start": 2944, "end": 3071 }, { "en": "Telugu", "start_str": "0x0C00", "end_str": "0x0C7F", "start": 3072, "end": 3199 }, { "en": "Kannada", "start_str": "0x0C80", "end_str": "0x0CFF", "start": 3200, "end": 3327 }, { "en": "Malayalam", "start_str": "0x0D00", "end_str": "0x0D7F", "start": 3328, "end": 3455 }, { "en": "Sinhala", "start_str": "0x0D80", "end_str": "0x0DFF", "start": 3456, "end": 3583 }, { "en": "Thai", "start_str": "0x0E00", "end_str": "0x0E7F", "start": 3584, "end": 3711 }, { "en": "Lao", "start_str": "0x0E80", "end_str": "0x0EFF", "start": 3712, "end": 3839 }, { "en": "Tibetan", "start_str": "0x0F00", "end_str": "0x0FFF", "start": 3840, "end": 4095 }, { "en": "Myanmar", "start_str": "0x1000", "end_str": "0x109F", "start": 4096, "end": 4255 }, { "en": "Georgian", "start_str": "0x10A0", "end_str": "0x10FF", "start": 4256, "end": 4351 }, { "en": "Hangul Jamo", "start_str": "0x1100", "end_str": "0x11FF", "start": 4352, "end": 4607 }, { "en": "Ethiopic", "start_str": "0x1200", "end_str": "0x137F", "start": 4608, "end": 4991 }, { "en": "Ethiopic Supplement", "start_str": "0x1380", "end_str": "0x139F", "start": 4992, "end": 5023 }, { "en": "Cherokee", "start_str": "0x13A0", "end_str": "0x13FF", "start": 5024, "end": 5119 }, { "en": "Unified Canadian Aboriginal Syllabics", "start_str": "0x1400", "end_str": "0x167F", "start": 5120, "end": 5759 }, { "en": "Ogham", "start_str": "0x1680", "end_str": "0x169F", "start": 5760, "end": 5791 }, { "en": "Runic", "start_str": "0x16A0", "end_str": "0x16FF", "start": 5792, "end": 5887 }, { "en": "Tagalog", "start_str": "0x1700", "end_str": "0x171F", "start": 5888, "end": 5919 }, { "en": "Hanunoo", "start_str": "0x1720", "end_str": "0x173F", "start": 5920, "end": 5951 }, { "en": "Buhid", "start_str": "0x1740", "end_str": "0x175F", "start": 5952, "end": 5983 }, { "en": "Tagbanwa", "start_str": "0x1760", "end_str": "0x177F", "start": 5984, "end": 6015 }, { "en": "Khmer", "start_str": "0x1780", "end_str": "0x17FF", "start": 6016, "end": 6143 }, { "en": "Mongolian", "start_str": "0x1800", "end_str": "0x18AF", "start": 6144, "end": 6319 }, { "en": "Unified Canadian Aboriginal Syllabics Extended", "start_str": "0x18B0", "end_str": "0x18FF", "start": 6320, "end": 6399 }, { "en": "Limbu", "start_str": "0x1900", "end_str": "0x194F", "start": 6400, "end": 6479 }, { "en": "Tai Le", "start_str": "0x1950", "end_str": "0x197F", "start": 6480, "end": 6527 }, { "en": "New Tai Lue", "start_str": "0x1980", "end_str": "0x19DF", "start": 6528, "end": 6623 }, { "en": "Khmer Symbols", "start_str": "0x19E0", "end_str": "0x19FF", "start": 6624, "end": 6655 }, { "en": "Buginese", "start_str": "0x1A00", "end_str": "0x1A1F", "start": 6656, "end": 6687 }, { "en": "Tai Tham", "start_str": "0x1A20", "end_str": "0x1AAF", "start": 6688, "end": 6831 }, { "en": "Combining Diacritical Marks Extended", "start_str": "0x1AB0", "end_str": "0x1AFF", "start": 6832, "end": 6911 }, { "en": "Balinese", "start_str": "0x1B00", "end_str": "0x1B7F", "start": 6912, "end": 7039 }, { "en": "Sundanese", "start_str": "0x1B80", "end_str": "0x1BBF", "start": 7040, "end": 7103 }, { "en": "Batak", "start_str": "0x1BC0", "end_str": "0x1BFF", "start": 7104, "end": 7167 }, { "en": "Lepcha", "start_str": "0x1C00", "end_str": "0x1C4F", "start": 7168, "end": 7247 }, { "en": "Ol Chiki", "start_str": "0x1C50", "end_str": "0x1C7F", "start": 7248, "end": 7295 }, { "en": "Cyrillic Extended-C", "start_str": "0x1C80", "end_str": "0x1C8F", "start": 7296, "end": 7311 }, { "en": "Georgian Extended", "start_str": "0x1C90", "end_str": "0x1CBF", "start": 7312, "end": 7359 }, { "en": "Sundanese Supplement", "start_str": "0x1CC0", "end_str": "0x1CCF", "start": 7360, "end": 7375 }, { "en": "Vedic Extensions", "start_str": "0x1CD0", "end_str": "0x1CFF", "start": 7376, "end": 7423 }, { "en": "Phonetic Extensions", "start_str": "0x1D00", "end_str": "0x1D7F", "start": 7424, "end": 7551 }, { "en": "Phonetic Extensions Supplement", "start_str": "0x1D80", "end_str": "0x1DBF", "start": 7552, "end": 7615 }, { "en": "Combining Diacritical Marks Supplement", "start_str": "0x1DC0", "end_str": "0x1DFF", "start": 7616, "end": 7679 }, { "en": "Latin Extended Additional", "start_str": "0x1E00", "end_str": "0x1EFF", "start": 7680, "end": 7935 }, { "en": "Greek Extended", "start_str": "0x1F00", "end_str": "0x1FFF", "start": 7936, "end": 8191 }, { "en": "General Punctuation", "start_str": "0x2000", "end_str": "0x206F", "start": 8192, "end": 8303 }, { "en": "Superscripts and Subscripts", "start_str": "0x2070", "end_str": "0x209F", "start": 8304, "end": 8351 }, { "en": "Currency Symbols", "start_str": "0x20A0", "end_str": "0x20CF", "start": 8352, "end": 8399 }, { "en": "Combining Diacritical Marks for Symbols", "start_str": "0x20D0", "end_str": "0x20FF", "start": 8400, "end": 8447 }, { "en": "Letterlike Symbols", "start_str": "0x2100", "end_str": "0x214F", "start": 8448, "end": 8527 }, { "en": "Number Forms", "start_str": "0x2150", "end_str": "0x218F", "start": 8528, "end": 8591 }, { "en": "Arrows", "start_str": "0x2190", "end_str": "0x21FF", "start": 8592, "end": 8703 }, { "en": "Mathematical Operators", "start_str": "0x2200", "end_str": "0x22FF", "start": 8704, "end": 8959 }, { "en": "Miscellaneous Technical", "start_str": "0x2300", "end_str": "0x23FF", "start": 8960, "end": 9215 }, { "en": "Control Pictures", "start_str": "0x2400", "end_str": "0x243F", "start": 9216, "end": 9279 }, { "en": "Optical Character Recognition", "start_str": "0x2440", "end_str": "0x245F", "start": 9280, "end": 9311 }, { "en": "Enclosed Alphanumerics", "start_str": "0x2460", "end_str": "0x24FF", "start": 9312, "end": 9471 }, { "en": "Box Drawing", "start_str": "0x2500", "end_str": "0x257F", "start": 9472, "end": 9599 }, { "en": "Block Elements", "start_str": "0x2580", "end_str": "0x259F", "start": 9600, "end": 9631 }, { "en": "Geometric Shapes", "start_str": "0x25A0", "end_str": "0x25FF", "start": 9632, "end": 9727 }, { "en": "Miscellaneous Symbols", "start_str": "0x2600", "end_str": "0x26FF", "start": 9728, "end": 9983 }, { "en": "Dingbats", "start_str": "0x2700", "end_str": "0x27BF", "start": 9984, "end": 10175 }, { "en": "Miscellaneous Mathematical Symbols-A", "start_str": "0x27C0", "end_str": "0x27EF", "start": 10176, "end": 10223 }, { "en": "Supplemental Arrows-A", "start_str": "0x27F0", "end_str": "0x27FF", "start": 10224, "end": 10239 }, { "en": "Braille Patterns", "start_str": "0x2800", "end_str": "0x28FF", "start": 10240, "end": 10495 }, { "en": "Supplemental Arrows-B", "start_str": "0x2900", "end_str": "0x297F", "start": 10496, "end": 10623 }, { "en": "Miscellaneous Mathematical Symbols-B", "start_str": "0x2980", "end_str": "0x29FF", "start": 10624, "end": 10751 }, { "en": "Supplemental Mathematical Operators", "start_str": "0x2A00", "end_str": "0x2AFF", "start": 10752, "end": 11007 }, { "en": "Miscellaneous Symbols and Arrows", "start_str": "0x2B00", "end_str": "0x2BFF", "start": 11008, "end": 11263 }, { "en": "Glagolitic", "start_str": "0x2C00", "end_str": "0x2C5F", "start": 11264, "end": 11359 }, { "en": "Latin Extended-C", "start_str": "0x2C60", "end_str": "0x2C7F", "start": 11360, "end": 11391 }, { "en": "Coptic", "start_str": "0x2C80", "end_str": "0x2CFF", "start": 11392, "end": 11519 }, { "en": "Georgian Supplement", "start_str": "0x2D00", "end_str": "0x2D2F", "start": 11520, "end": 11567 }, { "en": "Tifinagh", "start_str": "0x2D30", "end_str": "0x2D7F", "start": 11568, "end": 11647 }, { "en": "Ethiopic Extended", "start_str": "0x2D80", "end_str": "0x2DDF", "start": 11648, "end": 11743 }, { "en": "Cyrillic Extended-A", "start_str": "0x2DE0", "end_str": "0x2DFF", "start": 11744, "end": 11775 }, { "en": "Supplemental Punctuation", "start_str": "0x2E00", "end_str": "0x2E7F", "start": 11776, "end": 11903 }, { "en": "CJK Radicals Supplement", "zh": "CJK部首补充", "start_str": "0x2E80", "end_str": "0x2EFF", "start": 11904, "end": 12031 }, { "en": "Kangxi Radicals", "zh": "康熙部首", "start_str": "0x2F00", "end_str": "0x2FDF", "start": 12032, "end": 12255 }, { "en": "Ideographic Description Characters", "start_str": "0x2FF0", "end_str": "0x2FFF", "start": 12272, "end": 12287 }, { "en": "CJK Symbols and Punctuation", "start_str": "0x3000", "end_str": "0x303F", "start": 12288, "end": 12351 }, { "en": "Hiragana", "start_str": "0x3040", "end_str": "0x309F", "start": 12352, "end": 12447 }, { "en": "Katakana", "start_str": "0x30A0", "end_str": "0x30FF", "start": 12448, "end": 12543 }, { "en": "Bopomofo", "start_str": "0x3100", "end_str": "0x312F", "start": 12544, "end": 12591 }, { "en": "Hangul Compatibility Jamo", "start_str": "0x3130", "end_str": "0x318F", "start": 12592, "end": 12687 }, { "en": "Kanbun", "start_str": "0x3190", "end_str": "0x319F", "start": 12688, "end": 12703 }, { "en": "Bopomofo Extended", "start_str": "0x31A0", "end_str": "0x31BF", "start": 12704, "end": 12735 }, { "en": "CJK Strokes", "zh": "CJK笔画", "start_str": "0x31C0", "end_str": "0x31EF", "start": 12736, "end": 12783 }, { "en": "Katakana Phonetic Extensions", "start_str": "0x31F0", "end_str": "0x31FF", "start": 12784, "end": 12799 }, { "en": "Enclosed CJK Letters and Months", "zh": "特殊的字母和月份", "start_str": "0x3200", "end_str": "0x32FF", "start": 12800, "end": 13055 }, { "en": "CJK Compatibility", "zh": "CJK兼容", "start_str": "0x3300", "end_str": "0x33FF", "start": 13056, "end": 13311 }, { "en": "CJK Unified Ideographs Extension A", "zh": "CJK-A", "start_str": "0x3400", "end_str": "0x4DBF", "start": 13312, "end": 19903 }, { "en": "Yijing Hexagram Symbols", "start_str": "0x4DC0", "end_str": "0x4DFF", "start": 19904, "end": 19967 }, { "en": "CJK Unified Ideographs", "zh": "CJK", "start_str": "0x4E00", "end_str": "0x9FFF", "start": 19968, "end": 40959 }, { "en": "Yi Syllables", "start_str": "0xA000", "end_str": "0xA48F", "start": 40960, "end": 42127 }, { "en": "Yi Radicals", "start_str": "0xA490", "end_str": "0xA4CF", "start": 42128, "end": 42191 }, { "en": "Lisu", "start_str": "0xA4D0", "end_str": "0xA4FF", "start": 42192, "end": 42239 }, { "en": "Vai", "start_str": "0xA500", "end_str": "0xA63F", "start": 42240, "end": 42559 }, { "en": "Cyrillic Extended-B", "start_str": "0xA640", "end_str": "0xA69F", "start": 42560, "end": 42655 }, { "en": "Bamum", "start_str": "0xA6A0", "end_str": "0xA6FF", "start": 42656, "end": 42751 }, { "en": "Modifier Tone Letters", "start_str": "0xA700", "end_str": "0xA71F", "start": 42752, "end": 42783 }, { "en": "Latin Extended-D", "start_str": "0xA720", "end_str": "0xA7FF", "start": 42784, "end": 43007 }, { "en": "Syloti Nagri", "start_str": "0xA800", "end_str": "0xA82F", "start": 43008, "end": 43055 }, { "en": "Common Indic Number Forms", "start_str": "0xA830", "end_str": "0xA83F", "start": 43056, "end": 43071 }, { "en": "Phags-pa", "start_str": "0xA840", "end_str": "0xA87F", "start": 43072, "end": 43135 }, { "en": "Saurashtra", "start_str": "0xA880", "end_str": "0xA8DF", "start": 43136, "end": 43231 }, { "en": "Devanagari Extended", "start_str": "0xA8E0", "end_str": "0xA8FF", "start": 43232, "end": 43263 }, { "en": "Kayah Li", "start_str": "0xA900", "end_str": "0xA92F", "start": 43264, "end": 43311 }, { "en": "Rejang", "start_str": "0xA930", "end_str": "0xA95F", "start": 43312, "end": 43359 }, { "en": "Hangul Jamo Extended-A", "start_str": "0xA960", "end_str": "0xA97F", "start": 43360, "end": 43391 }, { "en": "Javanese", "start_str": "0xA980", "end_str": "0xA9DF", "start": 43392, "end": 43487 }, { "en": "Myanmar Extended-B", "start_str": "0xA9E0", "end_str": "0xA9FF", "start": 43488, "end": 43519 }, { "en": "Cham", "start_str": "0xAA00", "end_str": "0xAA5F", "start": 43520, "end": 43615 }, { "en": "Myanmar Extended-A", "start_str": "0xAA60", "end_str": "0xAA7F", "start": 43616, "end": 43647 }, { "en": "Tai Viet", "start_str": "0xAA80", "end_str": "0xAADF", "start": 43648, "end": 43743 }, { "en": "Meetei Mayek Extensions", "start_str": "0xAAE0", "end_str": "0xAAFF", "start": 43744, "end": 43775 }, { "en": "Ethiopic Extended-A", "start_str": "0xAB00", "end_str": "0xAB2F", "start": 43776, "end": 43823 }, { "en": "Latin Extended-E", "start_str": "0xAB30", "end_str": "0xAB6F", "start": 43824, "end": 43887 }, { "en": "Cherokee Supplement", "start_str": "0xAB70", "end_str": "0xABBF", "start": 43888, "end": 43967 }, { "en": "Meetei Mayek", "start_str": "0xABC0", "end_str": "0xABFF", "start": 43968, "end": 44031 }, { "en": "Hangul Syllables", "start_str": "0xAC00", "end_str": "0xD7AF", "start": 44032, "end": 55215 }, { "en": "Hangul Jamo Extended-B", "start_str": "0xD7B0", "end_str": "0xD7FF", "start": 55216, "end": 55295 }, { "en": "High Surrogates", "start_str": "0xD800", "end_str": "0xDB7F", "start": 55296, "end": 56191 }, { "en": "High Private Use Surrogates", "start_str": "0xDB80", "end_str": "0xDBFF", "start": 56192, "end": 56319 }, { "en": "Low Surrogates", "start_str": "0xDC00", "end_str": "0xDFFF", "start": 56320, "end": 57343 }, { "en": "Private Use Area", "start_str": "0xE000", "end_str": "0xF8FF", "start": 57344, "end": 63743 }, { "en": "CJK Compatibility Ideographs", "zh": "CJK兼容表意", "start_str": "0xF900", "end_str": "0xFAFF", "start": 63744, "end": 64255 }, { "en": "Alphabetic Presentation Forms", "start_str": "0xFB00", "end_str": "0xFB4F", "start": 64256, "end": 64335 }, { "en": "Arabic Presentation Forms-A", "start_str": "0xFB50", "end_str": "0xFDFF", "start": 64336, "end": 65023 }, { "en": "Variation Selectors", "start_str": "0xFE00", "end_str": "0xFE0F", "start": 65024, "end": 65039 }, { "en": "Vertical Forms", "start_str": "0xFE10", "end_str": "0xFE1F", "start": 65040, "end": 65055 }, { "en": "Combining Half Marks", "start_str": "0xFE20", "end_str": "0xFE2F", "start": 65056, "end": 65071 }, { "en": "CJK Compatibility Forms", "start_str": "0xFE30", "end_str": "0xFE4F", "start": 65072, "end": 65103 }, { "en": "Small Form Variants", "start_str": "0xFE50", "end_str": "0xFE6F", "start": 65104, "end": 65135 }, { "en": "Arabic Presentation Forms-B", "start_str": "0xFE70", "end_str": "0xFEFF", "start": 65136, "end": 65279 }, { "en": "Halfwidth and Fullwidth Forms", "start_str": "0xFF00", "end_str": "0xFFEF", "start": 65280, "end": 65519 }, { "en": "Specials", "start_str": "0xFFF0", "end_str": "0xFFFF", "start": 65520, "end": 65535 }, { "en": "Linear B Syllabary", "start_str": "0x10000", "end_str": "0x1007F", "start": 65536, "end": 65663 }, { "en": "Linear B Ideograms", "start_str": "0x10080", "end_str": "0x100FF", "start": 65664, "end": 65791 }, { "en": "Aegean Numbers", "start_str": "0x10100", "end_str": "0x1013F", "start": 65792, "end": 65855 }, { "en": "Ancient Greek Numbers", "start_str": "0x10140", "end_str": "0x1018F", "start": 65856, "end": 65935 }, { "en": "Ancient Symbols", "start_str": "0x10190", "end_str": "0x101CF", "start": 65936, "end": 65999 }, { "en": "Phaistos Disc", "start_str": "0x101D0", "end_str": "0x101FF", "start": 66000, "end": 66047 }, { "en": "Lycian", "start_str": "0x10280", "end_str": "0x1029F", "start": 66176, "end": 66207 }, { "en": "Carian", "start_str": "0x102A0", "end_str": "0x102DF", "start": 66208, "end": 66271 }, { "en": "Coptic Epact Numbers", "start_str": "0x102E0", "end_str": "0x102FF", "start": 66272, "end": 66303 }, { "en": "Old Italic", "start_str": "0x10300", "end_str": "0x1032F", "start": 66304, "end": 66351 }, { "en": "Gothic", "start_str": "0x10330", "end_str": "0x1034F", "start": 66352, "end": 66383 }, { "en": "Old Permic", "start_str": "0x10350", "end_str": "0x1037F", "start": 66384, "end": 66431 }, { "en": "Ugaritic", "start_str": "0x10380", "end_str": "0x1039F", "start": 66432, "end": 66463 }, { "en": "Old Persian", "start_str": "0x103A0", "end_str": "0x103DF", "start": 66464, "end": 66527 }, { "en": "Deseret", "start_str": "0x10400", "end_str": "0x1044F", "start": 66560, "end": 66639 }, { "en": "Shavian", "start_str": "0x10450", "end_str": "0x1047F", "start": 66640, "end": 66687 }, { "en": "Osmanya", "start_str": "0x10480", "end_str": "0x104AF", "start": 66688, "end": 66735 }, { "en": "Osage", "start_str": "0x104B0", "end_str": "0x104FF", "start": 66736, "end": 66815 }, { "en": "Elbasan", "start_str": "0x10500", "end_str": "0x1052F", "start": 66816, "end": 66863 }, { "en": "Caucasian Albanian", "start_str": "0x10530", "end_str": "0x1056F", "start": 66864, "end": 66927 }, { "en": "Vithkuqi", "start_str": "0x10570", "end_str": "0x105BF", "start": 66928, "end": 67007 }, { "en": "Linear A", "start_str": "0x10600", "end_str": "0x1077F", "start": 67072, "end": 67455 }, { "en": "Latin Extended-F", "start_str": "0x10780", "end_str": "0x107BF", "start": 67456, "end": 67519 }, { "en": "Cypriot Syllabary", "start_str": "0x10800", "end_str": "0x1083F", "start": 67584, "end": 67647 }, { "en": "Imperial Aramaic", "start_str": "0x10840", "end_str": "0x1085F", "start": 67648, "end": 67679 }, { "en": "Palmyrene", "start_str": "0x10860", "end_str": "0x1087F", "start": 67680, "end": 67711 }, { "en": "Nabataean", "start_str": "0x10880", "end_str": "0x108AF", "start": 67712, "end": 67759 }, { "en": "Hatran", "start_str": "0x108E0", "end_str": "0x108FF", "start": 67808, "end": 67839 }, { "en": "Phoenician", "start_str": "0x10900", "end_str": "0x1091F", "start": 67840, "end": 67871 }, { "en": "Lydian", "start_str": "0x10920", "end_str": "0x1093F", "start": 67872, "end": 67903 }, { "en": "Meroitic Hieroglyphs", "start_str": "0x10980", "end_str": "0x1099F", "start": 67968, "end": 67999 }, { "en": "Meroitic Cursive", "start_str": "0x109A0", "end_str": "0x109FF", "start": 68000, "end": 68095 }, { "en": "Kharoshthi", "start_str": "0x10A00", "end_str": "0x10A5F", "start": 68096, "end": 68191 }, { "en": "Old South Arabian", "start_str": "0x10A60", "end_str": "0x10A7F", "start": 68192, "end": 68223 }, { "en": "Old North Arabian", "start_str": "0x10A80", "end_str": "0x10A9F", "start": 68224, "end": 68255 }, { "en": "Manichaean", "start_str": "0x10AC0", "end_str": "0x10AFF", "start": 68288, "end": 68351 }, { "en": "Avestan", "start_str": "0x10B00", "end_str": "0x10B3F", "start": 68352, "end": 68415 }, { "en": "Inscriptional Parthian", "start_str": "0x10B40", "end_str": "0x10B5F", "start": 68416, "end": 68447 }, { "en": "Inscriptional Pahlavi", "start_str": "0x10B60", "end_str": "0x10B7F", "start": 68448, "end": 68479 }, { "en": "Psalter Pahlavi", "start_str": "0x10B80", "end_str": "0x10BAF", "start": 68480, "end": 68527 }, { "en": "Old Turkic", "start_str": "0x10C00", "end_str": "0x10C4F", "start": 68608, "end": 68687 }, { "en": "Old Hungarian", "start_str": "0x10C80", "end_str": "0x10CFF", "start": 68736, "end": 68863 }, { "en": "Hanifi Rohingya", "start_str": "0x10D00", "end_str": "0x10D3F", "start": 68864, "end": 68927 }, { "en": "Rumi Numeral Symbols", "start_str": "0x10E60", "end_str": "0x10E7F", "start": 69216, "end": 69247 }, { "en": "Yezidi", "start_str": "0x10E80", "end_str": "0x10EBF", "start": 69248, "end": 69311 }, { "en": "Arabic Extended-C", "start_str": "0x10EC0", "end_str": "0x10EFF", "start": 69312, "end": 69375 }, { "en": "Old Sogdian", "start_str": "0x10F00", "end_str": "0x10F2F", "start": 69376, "end": 69423 }, { "en": "Sogdian", "start_str": "0x10F30", "end_str": "0x10F6F", "start": 69424, "end": 69487 }, { "en": "Old Uyghur", "start_str": "0x10F70", "end_str": "0x10FAF", "start": 69488, "end": 69551 }, { "en": "Chorasmian", "start_str": "0x10FB0", "end_str": "0x10FDF", "start": 69552, "end": 69599 }, { "en": "Elymaic", "start_str": "0x10FE0", "end_str": "0x10FFF", "start": 69600, "end": 69631 }, { "en": "Brahmi", "start_str": "0x11000", "end_str": "0x1107F", "start": 69632, "end": 69759 }, { "en": "Kaithi", "start_str": "0x11080", "end_str": "0x110CF", "start": 69760, "end": 69839 }, { "en": "Sora Sompeng", "start_str": "0x110D0", "end_str": "0x110FF", "start": 69840, "end": 69887 }, { "en": "Chakma", "start_str": "0x11100", "end_str": "0x1114F", "start": 69888, "end": 69967 }, { "en": "Mahajani", "start_str": "0x11150", "end_str": "0x1117F", "start": 69968, "end": 70015 }, { "en": "Sharada", "start_str": "0x11180", "end_str": "0x111DF", "start": 70016, "end": 70111 }, { "en": "Sinhala Archaic Numbers", "start_str": "0x111E0", "end_str": "0x111FF", "start": 70112, "end": 70143 }, { "en": "Khojki", "start_str": "0x11200", "end_str": "0x1124F", "start": 70144, "end": 70223 }, { "en": "Multani", "start_str": "0x11280", "end_str": "0x112AF", "start": 70272, "end": 70319 }, { "en": "Khudawadi", "start_str": "0x112B0", "end_str": "0x112FF", "start": 70320, "end": 70399 }, { "en": "Grantha", "start_str": "0x11300", "end_str": "0x1137F", "start": 70400, "end": 70527 }, { "en": "Newa", "start_str": "0x11400", "end_str": "0x1147F", "start": 70656, "end": 70783 }, { "en": "Tirhuta", "start_str": "0x11480", "end_str": "0x114DF", "start": 70784, "end": 70879 }, { "en": "Siddham", "start_str": "0x11580", "end_str": "0x115FF", "start": 71040, "end": 71167 }, { "en": "Modi", "start_str": "0x11600", "end_str": "0x1165F", "start": 71168, "end": 71263 }, { "en": "Mongolian Supplement", "start_str": "0x11660", "end_str": "0x1167F", "start": 71264, "end": 71295 }, { "en": "Takri", "start_str": "0x11680", "end_str": "0x116CF", "start": 71296, "end": 71375 }, { "en": "Ahom", "start_str": "0x11700", "end_str": "0x1174F", "start": 71424, "end": 71503 }, { "en": "Dogra", "start_str": "0x11800", "end_str": "0x1184F", "start": 71680, "end": 71759 }, { "en": "Warang Citi", "start_str": "0x118A0", "end_str": "0x118FF", "start": 71840, "end": 71935 }, { "en": "Dives Akuru", "start_str": "0x11900", "end_str": "0x1195F", "start": 71936, "end": 72031 }, { "en": "Nandinagari", "start_str": "0x119A0", "end_str": "0x119FF", "start": 72096, "end": 72191 }, { "en": "Zanabazar Square", "start_str": "0x11A00", "end_str": "0x11A4F", "start": 72192, "end": 72271 }, { "en": "Soyombo", "start_str": "0x11A50", "end_str": "0x11AAF", "start": 72272, "end": 72367 }, { "en": "Unified Canadian Aboriginal Syllabics Extended-A", "start_str": "0x11AB0", "end_str": "0x11ABF", "start": 72368, "end": 72383 }, { "en": "Pau Cin Hau", "start_str": "0x11AC0", "end_str": "0x11AFF", "start": 72384, "end": 72447 }, { "en": "Devanagari Extended-A", "start_str": "0x11B00", "end_str": "0x11B5F", "start": 72448, "end": 72543 }, { "en": "Bhaiksuki", "start_str": "0x11C00", "end_str": "0x11C6F", "start": 72704, "end": 72815 }, { "en": "Marchen", "start_str": "0x11C70", "end_str": "0x11CBF", "start": 72816, "end": 72895 }, { "en": "Masaram Gondi", "start_str": "0x11D00", "end_str": "0x11D5F", "start": 72960, "end": 73055 }, { "en": "Gunjala Gondi", "start_str": "0x11D60", "end_str": "0x11DAF", "start": 73056, "end": 73135 }, { "en": "Makasar", "start_str": "0x11EE0", "end_str": "0x11EFF", "start": 73440, "end": 73471 }, { "en": "Kawi", "start_str": "0x11F00", "end_str": "0x11F5F", "start": 73472, "end": 73567 }, { "en": "Lisu Supplement", "start_str": "0x11FB0", "end_str": "0x11FBF", "start": 73648, "end": 73663 }, { "en": "Tamil Supplement", "start_str": "0x11FC0", "end_str": "0x11FFF", "start": 73664, "end": 73727 }, { "en": "Cuneiform", "start_str": "0x12000", "end_str": "0x123FF", "start": 73728, "end": 74751 }, { "en": "Cuneiform Numbers and Punctuation", "start_str": "0x12400", "end_str": "0x1247F", "start": 74752, "end": 74879 }, { "en": "Early Dynastic Cuneiform", "start_str": "0x12480", "end_str": "0x1254F", "start": 74880, "end": 75087 }, { "en": "Cypro-Minoan", "start_str": "0x12F90", "end_str": "0x12FFF", "start": 77712, "end": 77823 }, { "en": "Egyptian Hieroglyphs", "start_str": "0x13000", "end_str": "0x1342F", "start": 77824, "end": 78895 }, { "en": "Egyptian Hieroglyph Format Controls", "start_str": "0x13430", "end_str": "0x1345F", "start": 78896, "end": 78943 }, { "en": "Anatolian Hieroglyphs", "start_str": "0x14400", "end_str": "0x1467F", "start": 82944, "end": 83583 }, { "en": "Bamum Supplement", "start_str": "0x16800", "end_str": "0x16A3F", "start": 92160, "end": 92735 }, { "en": "Mro", "start_str": "0x16A40", "end_str": "0x16A6F", "start": 92736, "end": 92783 }, { "en": "Tangsa", "start_str": "0x16A70", "end_str": "0x16ACF", "start": 92784, "end": 92879 }, { "en": "Bassa Vah", "start_str": "0x16AD0", "end_str": "0x16AFF", "start": 92880, "end": 92927 }, { "en": "Pahawh Hmong", "start_str": "0x16B00", "end_str": "0x16B8F", "start": 92928, "end": 93071 }, { "en": "Medefaidrin", "start_str": "0x16E40", "end_str": "0x16E9F", "start": 93760, "end": 93855 }, { "en": "Miao", "start_str": "0x16F00", "end_str": "0x16F9F", "start": 93952, "end": 94111 }, { "en": "Ideographic Symbols and Punctuation", "start_str": "0x16FE0", "end_str": "0x16FFF", "start": 94176, "end": 94207 }, { "en": "Tangut", "zh": "西夏文", "start_str": "0x17000", "end_str": "0x187FF", "start": 94208, "end": 100351 }, { "en": "Tangut Components", "zh": "西夏文组件", "start_str": "0x18800", "end_str": "0x18AFF", "start": 100352, "end": 101119 }, { "en": "Khitan Small Script", "zh": "契丹文", "start_str": "0x18B00", "end_str": "0x18CFF", "start": 101120, "end": 101631 }, { "en": "Tangut Supplement", "zh": "西夏文补充", "start_str": "0x18D00", "end_str": "0x18D7F", "start": 101632, "end": 101759 }, { "en": "Kana Extended-B", "start_str": "0x1AFF0", "end_str": "0x1AFFF", "start": 110576, "end": 110591 }, { "en": "Kana Supplement", "start_str": "0x1B000", "end_str": "0x1B0FF", "start": 110592, "end": 110847 }, { "en": "Kana Extended-A", "start_str": "0x1B100", "end_str": "0x1B12F", "start": 110848, "end": 110895 }, { "en": "Small Kana Extension", "start_str": "0x1B130", "end_str": "0x1B16F", "start": 110896, "end": 110959 }, { "en": "Nushu", "start_str": "0x1B170", "end_str": "0x1B2FF", "start": 110960, "end": 111359 }, { "en": "Duployan", "start_str": "0x1BC00", "end_str": "0x1BC9F", "start": 113664, "end": 113823 }, { "en": "Shorthand Format Controls", "start_str": "0x1BCA0", "end_str": "0x1BCAF", "start": 113824, "end": 113839 }, { "en": "Znamenny Musical Notation", "start_str": "0x1CF00", "end_str": "0x1CFCF", "start": 118528, "end": 118735 }, { "en": "Byzantine Musical Symbols", "start_str": "0x1D000", "end_str": "0x1D0FF", "start": 118784, "end": 119039 }, { "en": "Musical Symbols", "start_str": "0x1D100", "end_str": "0x1D1FF", "start": 119040, "end": 119295 }, { "en": "Ancient Greek Musical Notation", "start_str": "0x1D200", "end_str": "0x1D24F", "start": 119296, "end": 119375 }, { "en": "Kaktovik Numerals", "start_str": "0x1D2C0", "end_str": "0x1D2DF", "start": 119488, "end": 119519 }, { "en": "Mayan Numerals", "start_str": "0x1D2E0", "end_str": "0x1D2FF", "start": 119520, "end": 119551 }, { "en": "Tai Xuan Jing Symbols", "start_str": "0x1D300", "end_str": "0x1D35F", "start": 119552, "end": 119647 }, { "en": "Counting Rod Numerals", "start_str": "0x1D360", "end_str": "0x1D37F", "start": 119648, "end": 119679 }, { "en": "Mathematical Alphanumeric Symbols", "start_str": "0x1D400", "end_str": "0x1D7FF", "start": 119808, "end": 120831 }, { "en": "Sutton SignWriting", "start_str": "0x1D800", "end_str": "0x1DAAF", "start": 120832, "end": 121519 }, { "en": "Latin Extended-G", "start_str": "0x1DF00", "end_str": "0x1DFFF", "start": 122624, "end": 122879 }, { "en": "Glagolitic Supplement", "start_str": "0x1E000", "end_str": "0x1E02F", "start": 122880, "end": 122927 }, { "en": "Cyrillic Extended-D", "start_str": "0x1E030", "end_str": "0x1E08F", "start": 122928, "end": 123023 }, { "en": "Nyiakeng Puachue Hmong", "start_str": "0x1E100", "end_str": "0x1E14F", "start": 123136, "end": 123215 }, { "en": "Toto", "start_str": "0x1E290", "end_str": "0x1E2BF", "start": 123536, "end": 123583 }, { "en": "Wancho", "start_str": "0x1E2C0", "end_str": "0x1E2FF", "start": 123584, "end": 123647 }, { "en": "Nag Mundari", "start_str": "0x1E4D0", "end_str": "0x1E4FF", "start": 124112, "end": 124159 }, { "en": "Ethiopic Extended-B", "start_str": "0x1E7E0", "end_str": "0x1E7FF", "start": 124896, "end": 124927 }, { "en": "Mende Kikakui", "start_str": "0x1E800", "end_str": "0x1E8DF", "start": 124928, "end": 125151 }, { "en": "Adlam", "start_str": "0x1E900", "end_str": "0x1E95F", "start": 125184, "end": 125279 }, { "en": "Indic Siyaq Numbers", "start_str": "0x1EC70", "end_str": "0x1ECBF", "start": 126064, "end": 126143 }, { "en": "Ottoman Siyaq Numbers", "start_str": "0x1ED00", "end_str": "0x1ED4F", "start": 126208, "end": 126287 }, { "en": "Arabic Mathematical Alphabetic Symbols", "start_str": "0x1EE00", "end_str": "0x1EEFF", "start": 126464, "end": 126719 }, { "en": "Mahjong Tiles", "zh": "麻将", "start_str": "0x1F000", "end_str": "0x1F02F", "start": 126976, "end": 127023 }, { "en": "Domino Tiles", "start_str": "0x1F030", "end_str": "0x1F09F", "start": 127024, "end": 127135 }, { "en": "Playing Cards", "zh": "扑克", "start_str": "0x1F0A0", "end_str": "0x1F0FF", "start": 127136, "end": 127231 }, { "en": "Enclosed Alphanumeric Supplement", "start_str": "0x1F100", "end_str": "0x1F1FF", "start": 127232, "end": 127487 }, { "en": "Enclosed Ideographic Supplement", "start_str": "0x1F200", "end_str": "0x1F2FF", "start": 127488, "end": 127743 }, { "en": "Miscellaneous Symbols and Pictographs", "start_str": "0x1F300", "end_str": "0x1F5FF", "start": 127744, "end": 128511 }, { "en": "Emoticons", "zh": "表情", "start_str": "0x1F600", "end_str": "0x1F64F", "start": 128512, "end": 128591 }, { "en": "Ornamental Dingbats", "start_str": "0x1F650", "end_str": "0x1F67F", "start": 128592, "end": 128639 }, { "en": "Transport and Map Symbols", "start_str": "0x1F680", "end_str": "0x1F6FF", "start": 128640, "end": 128767 }, { "en": "Alchemical Symbols", "start_str": "0x1F700", "end_str": "0x1F77F", "start": 128768, "end": 128895 }, { "en": "Geometric Shapes Extended", "start_str": "0x1F780", "end_str": "0x1F7FF", "start": 128896, "end": 129023 }, { "en": "Supplemental Arrows-C", "start_str": "0x1F800", "end_str": "0x1F8FF", "start": 129024, "end": 129279 }, { "en": "Supplemental Symbols and Pictographs", "start_str": "0x1F900", "end_str": "0x1F9FF", "start": 129280, "end": 129535 }, { "en": "Chess Symbols", "start_str": "0x1FA00", "end_str": "0x1FA6F", "start": 129536, "end": 129647 }, { "en": "Symbols and Pictographs Extended-A", "start_str": "0x1FA70", "end_str": "0x1FAFF", "start": 129648, "end": 129791 }, { "en": "Symbols for Legacy Computing", "start_str": "0x1FB00", "end_str": "0x1FBFF", "start": 129792, "end": 130047 }, { "en": "CJK Unified Ideographs Extension B", "zh": "CJK-B", "start_str": "0x20000", "end_str": "0x2A6DF", "start": 131072, "end": 173791 }, { "en": "CJK Unified Ideographs Extension C", "zh": "CJK-C", "start_str": "0x2A700", "end_str": "0x2B73F", "start": 173824, "end": 177983 }, { "en": "CJK Unified Ideographs Extension D", "zh": "CJK-D", "start_str": "0x2B740", "end_str": "0x2B81F", "start": 177984, "end": 178207 }, { "en": "CJK Unified Ideographs Extension E", "zh": "CJK-E", "start_str": "0x2B820", "end_str": "0x2CEAF", "start": 178208, "end": 183983 }, { "en": "CJK Unified Ideographs Extension F", "zh": "CJK-F", "start_str": "0x2CEB0", "end_str": "0x2EBEF", "start": 183984, "end": 191471 }, { "en": "CJK Unified Ideographs Extension I", "zh": "CJK-I", "start_str": "0x2EBF0", "end_str": "0x2EE5F", "start": 191472, "end": 192095 }, { "en": "CJK Compatibility Ideographs Supplement", "zh": "CJK兼容表意补充", "start_str": "0x2F800", "end_str": "0x2FA1F", "start": 194560, "end": 195103 }, { "en": "CJK Unified Ideographs Extension G", "zh": "CJK-G", "start_str": "0x30000", "end_str": "0x3134F", "start": 196608, "end": 201551 }, { "en": "CJK Unified Ideographs Extension H", "zh": "CJK-H", "start_str": "0x31350", "end_str": "0x323AF", "start": 201552, "end": 205743 }, { "en": "Tags", "start_str": "0xE0000", "end_str": "0xE007F", "start": 917504, "end": 917631 }, { "en": "Variation Selectors Supplement", "start_str": "0xE0100", "end_str": "0xE01EF", "start": 917760, "end": 917999 }, { "en": "Supplementary Private Use Area-A", "start_str": "0xF0000", "end_str": "0xFFFFF", "start": 983040, "end": 1048575 }, { "en": "Supplementary Private Use Area-B", "start_str": "0x100000", "end_str": "0x10FFFF", "start": 1048576, "end": 1114111 } ]` type UnicodeBlock struct { Zh string En string StartStr string `json:"start_str"` EndStr string `json:"end_str"` Start int End int } type UnicodeHelper struct { blocks []UnicodeBlock } func (uh *UnicodeHelper) GetRange(code int) string { for _, bl := range uh.blocks { if code >= bl.Start && code <= bl.End { return bl.Zh } } return "" } func (uh *UnicodeHelper) Init() error { return json.Unmarshal([]byte(json_data), &uh.blocks) } var unicode_helper *UnicodeHelper func NewUnicodeHelper() *UnicodeHelper { if unicode_helper == nil { unicode_helper = &UnicodeHelper{ blocks: make([]UnicodeBlock, 0), } unicode_helper.Init() } return unicode_helper }