43 static std::map<GUnicodeScript, Glib::ustring>
mappings;
46 mappings[G_UNICODE_SCRIPT_INVALID_CODE] = _(
"all");
47 mappings[G_UNICODE_SCRIPT_COMMON] = _(
"common");
48 mappings[G_UNICODE_SCRIPT_INHERITED] = _(
"inherited");
49 mappings[G_UNICODE_SCRIPT_ARABIC] = _(
"Arabic");
50 mappings[G_UNICODE_SCRIPT_ARMENIAN] = _(
"Armenian");
51 mappings[G_UNICODE_SCRIPT_BENGALI] = _(
"Bengali");
52 mappings[G_UNICODE_SCRIPT_BOPOMOFO] = _(
"Bopomofo");
53 mappings[G_UNICODE_SCRIPT_CHEROKEE] = _(
"Cherokee");
54 mappings[G_UNICODE_SCRIPT_COPTIC] = _(
"Coptic");
55 mappings[G_UNICODE_SCRIPT_CYRILLIC] = _(
"Cyrillic");
56 mappings[G_UNICODE_SCRIPT_DESERET] = _(
"Deseret");
57 mappings[G_UNICODE_SCRIPT_DEVANAGARI] = _(
"Devanagari");
58 mappings[G_UNICODE_SCRIPT_ETHIOPIC] = _(
"Ethiopic");
59 mappings[G_UNICODE_SCRIPT_GEORGIAN] = _(
"Georgian");
60 mappings[G_UNICODE_SCRIPT_GOTHIC] = _(
"Gothic");
61 mappings[G_UNICODE_SCRIPT_GREEK] = _(
"Greek");
62 mappings[G_UNICODE_SCRIPT_GUJARATI] = _(
"Gujarati");
63 mappings[G_UNICODE_SCRIPT_GURMUKHI] = _(
"Gurmukhi");
64 mappings[G_UNICODE_SCRIPT_HAN] = _(
"Han");
65 mappings[G_UNICODE_SCRIPT_HANGUL] = _(
"Hangul");
66 mappings[G_UNICODE_SCRIPT_HEBREW] = _(
"Hebrew");
67 mappings[G_UNICODE_SCRIPT_HIRAGANA] = _(
"Hiragana");
68 mappings[G_UNICODE_SCRIPT_KANNADA] = _(
"Kannada");
69 mappings[G_UNICODE_SCRIPT_KATAKANA] = _(
"Katakana");
70 mappings[G_UNICODE_SCRIPT_KHMER] = _(
"Khmer");
71 mappings[G_UNICODE_SCRIPT_LAO] = _(
"Lao");
72 mappings[G_UNICODE_SCRIPT_LATIN] = _(
"Latin");
73 mappings[G_UNICODE_SCRIPT_MALAYALAM] = _(
"Malayalam");
74 mappings[G_UNICODE_SCRIPT_MONGOLIAN] = _(
"Mongolian");
75 mappings[G_UNICODE_SCRIPT_MYANMAR] = _(
"Myanmar");
76 mappings[G_UNICODE_SCRIPT_OGHAM] = _(
"Ogham");
77 mappings[G_UNICODE_SCRIPT_OLD_ITALIC] = _(
"Old Italic");
78 mappings[G_UNICODE_SCRIPT_ORIYA] = _(
"Oriya");
79 mappings[G_UNICODE_SCRIPT_RUNIC] = _(
"Runic");
80 mappings[G_UNICODE_SCRIPT_SINHALA] = _(
"Sinhala");
81 mappings[G_UNICODE_SCRIPT_SYRIAC] = _(
"Syriac");
82 mappings[G_UNICODE_SCRIPT_TAMIL] = _(
"Tamil");
83 mappings[G_UNICODE_SCRIPT_TELUGU] = _(
"Telugu");
84 mappings[G_UNICODE_SCRIPT_THAANA] = _(
"Thaana");
85 mappings[G_UNICODE_SCRIPT_THAI] = _(
"Thai");
86 mappings[G_UNICODE_SCRIPT_TIBETAN] = _(
"Tibetan");
87 mappings[G_UNICODE_SCRIPT_CANADIAN_ABORIGINAL] = _(
"Canadian Aboriginal");
88 mappings[G_UNICODE_SCRIPT_YI] = _(
"Yi");
89 mappings[G_UNICODE_SCRIPT_TAGALOG] = _(
"Tagalog");
90 mappings[G_UNICODE_SCRIPT_HANUNOO] = _(
"Hanunoo");
91 mappings[G_UNICODE_SCRIPT_BUHID] = _(
"Buhid");
92 mappings[G_UNICODE_SCRIPT_TAGBANWA] = _(
"Tagbanwa");
93 mappings[G_UNICODE_SCRIPT_BRAILLE] = _(
"Braille");
94 mappings[G_UNICODE_SCRIPT_CYPRIOT] = _(
"Cypriot");
95 mappings[G_UNICODE_SCRIPT_LIMBU] = _(
"Limbu");
96 mappings[G_UNICODE_SCRIPT_OSMANYA] = _(
"Osmanya");
97 mappings[G_UNICODE_SCRIPT_SHAVIAN] = _(
"Shavian");
98 mappings[G_UNICODE_SCRIPT_LINEAR_B] = _(
"Linear B");
99 mappings[G_UNICODE_SCRIPT_TAI_LE] = _(
"Tai Le");
100 mappings[G_UNICODE_SCRIPT_UGARITIC] = _(
"Ugaritic");
101 mappings[G_UNICODE_SCRIPT_NEW_TAI_LUE] = _(
"New Tai Lue");
102 mappings[G_UNICODE_SCRIPT_BUGINESE] = _(
"Buginese");
103 mappings[G_UNICODE_SCRIPT_GLAGOLITIC] = _(
"Glagolitic");
104 mappings[G_UNICODE_SCRIPT_TIFINAGH] = _(
"Tifinagh");
105 mappings[G_UNICODE_SCRIPT_SYLOTI_NAGRI] = _(
"Syloti Nagri");
106 mappings[G_UNICODE_SCRIPT_OLD_PERSIAN] = _(
"Old Persian");
107 mappings[G_UNICODE_SCRIPT_KHAROSHTHI] = _(
"Kharoshthi");
108 mappings[G_UNICODE_SCRIPT_UNKNOWN] = _(
"unassigned");
109 mappings[G_UNICODE_SCRIPT_BALINESE] = _(
"Balinese");
110 mappings[G_UNICODE_SCRIPT_CUNEIFORM] = _(
"Cuneiform");
111 mappings[G_UNICODE_SCRIPT_PHOENICIAN] = _(
"Phoenician");
112 mappings[G_UNICODE_SCRIPT_PHAGS_PA] = _(
"Phags-pa");
113 mappings[G_UNICODE_SCRIPT_NKO] = _(
"N'Ko");
114 mappings[G_UNICODE_SCRIPT_KAYAH_LI] = _(
"Kayah Li");
115 mappings[G_UNICODE_SCRIPT_LEPCHA] = _(
"Lepcha");
116 mappings[G_UNICODE_SCRIPT_REJANG] = _(
"Rejang");
117 mappings[G_UNICODE_SCRIPT_SUNDANESE] = _(
"Sundanese");
118 mappings[G_UNICODE_SCRIPT_SAURASHTRA] = _(
"Saurashtra");
119 mappings[G_UNICODE_SCRIPT_CHAM] = _(
"Cham");
120 mappings[G_UNICODE_SCRIPT_OL_CHIKI] = _(
"Ol Chiki");
121 mappings[G_UNICODE_SCRIPT_VAI] = _(
"Vai");
122 mappings[G_UNICODE_SCRIPT_CARIAN] = _(
"Carian");
123 mappings[G_UNICODE_SCRIPT_LYCIAN] = _(
"Lycian");
124 mappings[G_UNICODE_SCRIPT_LYDIAN] = _(
"Lydian");
125 mappings[G_UNICODE_SCRIPT_AVESTAN] = _(
"Avestan");
126 mappings[G_UNICODE_SCRIPT_BAMUM] = _(
"Bamum");
127 mappings[G_UNICODE_SCRIPT_EGYPTIAN_HIEROGLYPHS] = _(
"Egyptian Hieroglpyhs");
128 mappings[G_UNICODE_SCRIPT_IMPERIAL_ARAMAIC] = _(
"Imperial Aramaic");
129 mappings[G_UNICODE_SCRIPT_INSCRIPTIONAL_PAHLAVI]= _(
"Inscriptional Pahlavi");
130 mappings[G_UNICODE_SCRIPT_INSCRIPTIONAL_PARTHIAN]= _(
"Inscriptional Parthian");
131 mappings[G_UNICODE_SCRIPT_JAVANESE] = _(
"Javanese");
132 mappings[G_UNICODE_SCRIPT_KAITHI] = _(
"Kaithi");
133 mappings[G_UNICODE_SCRIPT_LISU] = _(
"Lisu");
134 mappings[G_UNICODE_SCRIPT_MEETEI_MAYEK] = _(
"Meetei Mayek");
135 mappings[G_UNICODE_SCRIPT_OLD_SOUTH_ARABIAN] = _(
"Old South Arabian");
136 mappings[G_UNICODE_SCRIPT_OLD_TURKIC] = _(
"Old Turkic");
137 mappings[G_UNICODE_SCRIPT_SAMARITAN] = _(
"Samaritan");
138 mappings[G_UNICODE_SCRIPT_TAI_THAM] = _(
"Tai Tham");
139 mappings[G_UNICODE_SCRIPT_TAI_VIET] = _(
"Tai Viet");
140 mappings[G_UNICODE_SCRIPT_BATAK] = _(
"Batak");
141 mappings[G_UNICODE_SCRIPT_BRAHMI] = _(
"Brahmi");
142 mappings[G_UNICODE_SCRIPT_MANDAIC] = _(
"Mandaic");
143 mappings[G_UNICODE_SCRIPT_CHAKMA] = _(
"Chakma");
144 mappings[G_UNICODE_SCRIPT_MEROITIC_CURSIVE] = _(
"Meroitic Cursive");
145 mappings[G_UNICODE_SCRIPT_MEROITIC_HIEROGLYPHS] = _(
"Meroitic Hieroglyphs");
146 mappings[G_UNICODE_SCRIPT_MIAO] = _(
"Miao");
147 mappings[G_UNICODE_SCRIPT_SHARADA] = _(
"Sharada");
148 mappings[G_UNICODE_SCRIPT_SORA_SOMPENG] = _(
"Sora Sompeng");
149 mappings[G_UNICODE_SCRIPT_TAKRI] = _(
"Takri");
150 mappings[G_UNICODE_SCRIPT_BASSA_VAH] = _(
"Bassa");
151 mappings[G_UNICODE_SCRIPT_CAUCASIAN_ALBANIAN] = _(
"Caucasian Albanian");
152 mappings[G_UNICODE_SCRIPT_DUPLOYAN] = _(
"Duployan");
153 mappings[G_UNICODE_SCRIPT_ELBASAN] = _(
"Elbasan");
154 mappings[G_UNICODE_SCRIPT_GRANTHA] = _(
"Grantha");
155 mappings[G_UNICODE_SCRIPT_KHOJKI] = _(
"Khojki");
156 mappings[G_UNICODE_SCRIPT_KHUDAWADI] = _(
"Khudawadi, Sindhi");
157 mappings[G_UNICODE_SCRIPT_LINEAR_A] = _(
"Linear A");
158 mappings[G_UNICODE_SCRIPT_MAHAJANI] = _(
"Mahajani");
159 mappings[G_UNICODE_SCRIPT_MANICHAEAN] = _(
"Manichaean");
160 mappings[G_UNICODE_SCRIPT_MENDE_KIKAKUI] = _(
"Mende Kikakui");
161 mappings[G_UNICODE_SCRIPT_MODI] = _(
"Modi");
162 mappings[G_UNICODE_SCRIPT_MRO] = _(
"Mro");
163 mappings[G_UNICODE_SCRIPT_NABATAEAN] = _(
"Nabataean");
164 mappings[G_UNICODE_SCRIPT_OLD_NORTH_ARABIAN] = _(
"Old North Arabian");
165 mappings[G_UNICODE_SCRIPT_OLD_PERMIC] = _(
"Old Permic");
166 mappings[G_UNICODE_SCRIPT_PAHAWH_HMONG] = _(
"Pahawh Hmong");
167 mappings[G_UNICODE_SCRIPT_PALMYRENE] = _(
"Palmyrene");
168 mappings[G_UNICODE_SCRIPT_PAU_CIN_HAU] = _(
"Pau Cin Hau");
169 mappings[G_UNICODE_SCRIPT_PSALTER_PAHLAVI] = _(
"Psalter Pahlavi");
170 mappings[G_UNICODE_SCRIPT_SIDDHAM] = _(
"Siddham");
171 mappings[G_UNICODE_SCRIPT_TIRHUTA] = _(
"Tirhuta");
172 mappings[G_UNICODE_SCRIPT_WARANG_CITI] = _(
"Warang Citi");
173 mappings[G_UNICODE_SCRIPT_AHOM] = _(
"Ahom");
174 mappings[G_UNICODE_SCRIPT_ANATOLIAN_HIEROGLYPHS]= _(
"Anatolian Hieroglyphs");
175 mappings[G_UNICODE_SCRIPT_HATRAN] = _(
"Hatran");
176 mappings[G_UNICODE_SCRIPT_MULTANI] = _(
"Multani");
177 mappings[G_UNICODE_SCRIPT_OLD_HUNGARIAN] = _(
"Old Hungarian");
178 mappings[G_UNICODE_SCRIPT_SIGNWRITING] = _(
"Signwriting");
210 static std::vector<NamedRange> ranges;
211 if (!ranges.empty())
return ranges;
213 ranges.emplace_back(std::make_pair(0x00000, 0x2FFFF), _(
"all"));
214 ranges.emplace_back(std::make_pair(0x00000, 0x0FFFF), _(
"Basic Plane"));
215 ranges.emplace_back(std::make_pair(0x10000, 0x1FFFF), _(
"Extended Multilingual Plane"));
216 ranges.emplace_back(std::make_pair(0x20000, 0x2FFFF), _(
"Supplementary Ideographic Plane"));
217 ranges.emplace_back(std::make_pair(0x0000, 0x007F), _(
"Basic Latin"));
218 ranges.emplace_back(std::make_pair(0x0080, 0x00FF), _(
"Latin-1 Supplement"));
219 ranges.emplace_back(std::make_pair(0x0100, 0x017F), _(
"Latin Extended-A"));
220 ranges.emplace_back(std::make_pair(0x0180, 0x024F), _(
"Latin Extended-B"));
221 ranges.emplace_back(std::make_pair(0x0250, 0x02AF), _(
"IPA Extensions"));
222 ranges.emplace_back(std::make_pair(0x02B0, 0x02FF), _(
"Spacing Modifier Letters"));
223 ranges.emplace_back(std::make_pair(0x0300, 0x036F), _(
"Combining Diacritical Marks"));
224 ranges.emplace_back(std::make_pair(0x0370, 0x03FF), _(
"Greek and Coptic"));
225 ranges.emplace_back(std::make_pair(0x0400, 0x04FF), _(
"Cyrillic"));
226 ranges.emplace_back(std::make_pair(0x0500, 0x052F), _(
"Cyrillic Supplement"));
227 ranges.emplace_back(std::make_pair(0x0530, 0x058F), _(
"Armenian"));
228 ranges.emplace_back(std::make_pair(0x0590, 0x05FF), _(
"Hebrew"));
229 ranges.emplace_back(std::make_pair(0x0600, 0x06FF), _(
"Arabic"));
230 ranges.emplace_back(std::make_pair(0x0700, 0x074F), _(
"Syriac"));
231 ranges.emplace_back(std::make_pair(0x0750, 0x077F), _(
"Arabic Supplement"));
232 ranges.emplace_back(std::make_pair(0x0780, 0x07BF), _(
"Thaana"));
233 ranges.emplace_back(std::make_pair(0x07C0, 0x07FF), _(
"NKo"));
234 ranges.emplace_back(std::make_pair(0x0800, 0x083F), _(
"Samaritan"));
235 ranges.emplace_back(std::make_pair(0x0900, 0x097F), _(
"Devanagari"));
236 ranges.emplace_back(std::make_pair(0x0980, 0x09FF), _(
"Bengali"));
237 ranges.emplace_back(std::make_pair(0x0A00, 0x0A7F), _(
"Gurmukhi"));
238 ranges.emplace_back(std::make_pair(0x0A80, 0x0AFF), _(
"Gujarati"));
239 ranges.emplace_back(std::make_pair(0x0B00, 0x0B7F), _(
"Oriya"));
240 ranges.emplace_back(std::make_pair(0x0B80, 0x0BFF), _(
"Tamil"));
241 ranges.emplace_back(std::make_pair(0x0C00, 0x0C7F), _(
"Telugu"));
242 ranges.emplace_back(std::make_pair(0x0C80, 0x0CFF), _(
"Kannada"));
243 ranges.emplace_back(std::make_pair(0x0D00, 0x0D7F), _(
"Malayalam"));
244 ranges.emplace_back(std::make_pair(0x0D80, 0x0DFF), _(
"Sinhala"));
245 ranges.emplace_back(std::make_pair(0x0E00, 0x0E7F), _(
"Thai"));
246 ranges.emplace_back(std::make_pair(0x0E80, 0x0EFF), _(
"Lao"));
247 ranges.emplace_back(std::make_pair(0x0F00, 0x0FFF), _(
"Tibetan"));
248 ranges.emplace_back(std::make_pair(0x1000, 0x109F), _(
"Myanmar"));
249 ranges.emplace_back(std::make_pair(0x10A0, 0x10FF), _(
"Georgian"));
250 ranges.emplace_back(std::make_pair(0x1100, 0x11FF), _(
"Hangul Jamo"));
251 ranges.emplace_back(std::make_pair(0x1200, 0x137F), _(
"Ethiopic"));
252 ranges.emplace_back(std::make_pair(0x1380, 0x139F), _(
"Ethiopic Supplement"));
253 ranges.emplace_back(std::make_pair(0x13A0, 0x13FF), _(
"Cherokee"));
254 ranges.emplace_back(std::make_pair(0x1400, 0x167F), _(
"Unified Canadian Aboriginal Syllabics"));
255 ranges.emplace_back(std::make_pair(0x1680, 0x169F), _(
"Ogham"));
256 ranges.emplace_back(std::make_pair(0x16A0, 0x16FF), _(
"Runic"));
257 ranges.emplace_back(std::make_pair(0x1700, 0x171F), _(
"Tagalog"));
258 ranges.emplace_back(std::make_pair(0x1720, 0x173F), _(
"Hanunoo"));
259 ranges.emplace_back(std::make_pair(0x1740, 0x175F), _(
"Buhid"));
260 ranges.emplace_back(std::make_pair(0x1760, 0x177F), _(
"Tagbanwa"));
261 ranges.emplace_back(std::make_pair(0x1780, 0x17FF), _(
"Khmer"));
262 ranges.emplace_back(std::make_pair(0x1800, 0x18AF), _(
"Mongolian"));
263 ranges.emplace_back(std::make_pair(0x18B0, 0x18FF), _(
"Unified Canadian Aboriginal Syllabics Extended"));
264 ranges.emplace_back(std::make_pair(0x1900, 0x194F), _(
"Limbu"));
265 ranges.emplace_back(std::make_pair(0x1950, 0x197F), _(
"Tai Le"));
266 ranges.emplace_back(std::make_pair(0x1980, 0x19DF), _(
"New Tai Lue"));
267 ranges.emplace_back(std::make_pair(0x19E0, 0x19FF), _(
"Khmer Symbols"));
268 ranges.emplace_back(std::make_pair(0x1A00, 0x1A1F), _(
"Buginese"));
269 ranges.emplace_back(std::make_pair(0x1A20, 0x1AAF), _(
"Tai Tham"));
270 ranges.emplace_back(std::make_pair(0x1B00, 0x1B7F), _(
"Balinese"));
271 ranges.emplace_back(std::make_pair(0x1B80, 0x1BBF), _(
"Sundanese"));
272 ranges.emplace_back(std::make_pair(0x1C00, 0x1C4F), _(
"Lepcha"));
273 ranges.emplace_back(std::make_pair(0x1C50, 0x1C7F), _(
"Ol Chiki"));
274 ranges.emplace_back(std::make_pair(0x1CD0, 0x1CFF), _(
"Vedic Extensions"));
275 ranges.emplace_back(std::make_pair(0x1D00, 0x1D7F), _(
"Phonetic Extensions"));
276 ranges.emplace_back(std::make_pair(0x1D80, 0x1DBF), _(
"Phonetic Extensions Supplement"));
277 ranges.emplace_back(std::make_pair(0x1DC0, 0x1DFF), _(
"Combining Diacritical Marks Supplement"));
278 ranges.emplace_back(std::make_pair(0x1E00, 0x1EFF), _(
"Latin Extended Additional"));
279 ranges.emplace_back(std::make_pair(0x1F00, 0x1FFF), _(
"Greek Extended"));
280 ranges.emplace_back(std::make_pair(0x2000, 0x206F), _(
"General Punctuation"));
281 ranges.emplace_back(std::make_pair(0x2070, 0x209F), _(
"Superscripts and Subscripts"));
282 ranges.emplace_back(std::make_pair(0x20A0, 0x20CF), _(
"Currency Symbols"));
283 ranges.emplace_back(std::make_pair(0x20D0, 0x20FF), _(
"Combining Diacritical Marks for Symbols"));
284 ranges.emplace_back(std::make_pair(0x2100, 0x214F), _(
"Letterlike Symbols"));
285 ranges.emplace_back(std::make_pair(0x2150, 0x218F), _(
"Number Forms"));
286 ranges.emplace_back(std::make_pair(0x2190, 0x21FF), _(
"Arrows"));
287 ranges.emplace_back(std::make_pair(0x2200, 0x22FF), _(
"Mathematical Operators"));
288 ranges.emplace_back(std::make_pair(0x2300, 0x23FF), _(
"Miscellaneous Technical"));
289 ranges.emplace_back(std::make_pair(0x2400, 0x243F), _(
"Control Pictures"));
290 ranges.emplace_back(std::make_pair(0x2440, 0x245F), _(
"Optical Character Recognition"));
291 ranges.emplace_back(std::make_pair(0x2460, 0x24FF), _(
"Enclosed Alphanumerics"));
292 ranges.emplace_back(std::make_pair(0x2500, 0x257F), _(
"Box Drawing"));
293 ranges.emplace_back(std::make_pair(0x2580, 0x259F), _(
"Block Elements"));
294 ranges.emplace_back(std::make_pair(0x25A0, 0x25FF), _(
"Geometric Shapes"));
295 ranges.emplace_back(std::make_pair(0x2600, 0x26FF), _(
"Miscellaneous Symbols"));
296 ranges.emplace_back(std::make_pair(0x2700, 0x27BF), _(
"Dingbats"));
297 ranges.emplace_back(std::make_pair(0x27C0, 0x27EF), _(
"Miscellaneous Mathematical Symbols-A"));
298 ranges.emplace_back(std::make_pair(0x27F0, 0x27FF), _(
"Supplemental Arrows-A"));
299 ranges.emplace_back(std::make_pair(0x2800, 0x28FF), _(
"Braille Patterns"));
300 ranges.emplace_back(std::make_pair(0x2900, 0x297F), _(
"Supplemental Arrows-B"));
301 ranges.emplace_back(std::make_pair(0x2980, 0x29FF), _(
"Miscellaneous Mathematical Symbols-B"));
302 ranges.emplace_back(std::make_pair(0x2A00, 0x2AFF), _(
"Supplemental Mathematical Operators"));
303 ranges.emplace_back(std::make_pair(0x2B00, 0x2BFF), _(
"Miscellaneous Symbols and Arrows"));
304 ranges.emplace_back(std::make_pair(0x2C00, 0x2C5F), _(
"Glagolitic"));
305 ranges.emplace_back(std::make_pair(0x2C60, 0x2C7F), _(
"Latin Extended-C"));
306 ranges.emplace_back(std::make_pair(0x2C80, 0x2CFF), _(
"Coptic"));
307 ranges.emplace_back(std::make_pair(0x2D00, 0x2D2F), _(
"Georgian Supplement"));
308 ranges.emplace_back(std::make_pair(0x2D30, 0x2D7F), _(
"Tifinagh"));
309 ranges.emplace_back(std::make_pair(0x2D80, 0x2DDF), _(
"Ethiopic Extended"));
310 ranges.emplace_back(std::make_pair(0x2DE0, 0x2DFF), _(
"Cyrillic Extended-A"));
311 ranges.emplace_back(std::make_pair(0x2E00, 0x2E7F), _(
"Supplemental Punctuation"));
312 ranges.emplace_back(std::make_pair(0x2E80, 0x2EFF), _(
"CJK Radicals Supplement"));
313 ranges.emplace_back(std::make_pair(0x2F00, 0x2FDF), _(
"Kangxi Radicals"));
314 ranges.emplace_back(std::make_pair(0x2FF0, 0x2FFF), _(
"Ideographic Description Characters"));
315 ranges.emplace_back(std::make_pair(0x3000, 0x303F), _(
"CJK Symbols and Punctuation"));
316 ranges.emplace_back(std::make_pair(0x3040, 0x309F), _(
"Hiragana"));
317 ranges.emplace_back(std::make_pair(0x30A0, 0x30FF), _(
"Katakana"));
318 ranges.emplace_back(std::make_pair(0x3100, 0x312F), _(
"Bopomofo"));
319 ranges.emplace_back(std::make_pair(0x3130, 0x318F), _(
"Hangul Compatibility Jamo"));
320 ranges.emplace_back(std::make_pair(0x3190, 0x319F), _(
"Kanbun"));
321 ranges.emplace_back(std::make_pair(0x31A0, 0x31BF), _(
"Bopomofo Extended"));
322 ranges.emplace_back(std::make_pair(0x31C0, 0x31EF), _(
"CJK Strokes"));
323 ranges.emplace_back(std::make_pair(0x31F0, 0x31FF), _(
"Katakana Phonetic Extensions"));
324 ranges.emplace_back(std::make_pair(0x3200, 0x32FF), _(
"Enclosed CJK Letters and Months"));
325 ranges.emplace_back(std::make_pair(0x3300, 0x33FF), _(
"CJK Compatibility"));
326 ranges.emplace_back(std::make_pair(0x3400, 0x4DBF), _(
"CJK Unified Ideographs Extension A"));
327 ranges.emplace_back(std::make_pair(0x4DC0, 0x4DFF), _(
"Yijing Hexagram Symbols"));
328 ranges.emplace_back(std::make_pair(0x4E00, 0x9FFF), _(
"CJK Unified Ideographs"));
329 ranges.emplace_back(std::make_pair(0xA000, 0xA48F), _(
"Yi Syllables"));
330 ranges.emplace_back(std::make_pair(0xA490, 0xA4CF), _(
"Yi Radicals"));
331 ranges.emplace_back(std::make_pair(0xA4D0, 0xA4FF), _(
"Lisu"));
332 ranges.emplace_back(std::make_pair(0xA500, 0xA63F), _(
"Vai"));
333 ranges.emplace_back(std::make_pair(0xA640, 0xA69F), _(
"Cyrillic Extended-B"));
334 ranges.emplace_back(std::make_pair(0xA6A0, 0xA6FF), _(
"Bamum"));
335 ranges.emplace_back(std::make_pair(0xA700, 0xA71F), _(
"Modifier Tone Letters"));
336 ranges.emplace_back(std::make_pair(0xA720, 0xA7FF), _(
"Latin Extended-D"));
337 ranges.emplace_back(std::make_pair(0xA800, 0xA82F), _(
"Syloti Nagri"));
338 ranges.emplace_back(std::make_pair(0xA830, 0xA83F), _(
"Common Indic Number Forms"));
339 ranges.emplace_back(std::make_pair(0xA840, 0xA87F), _(
"Phags-pa"));
340 ranges.emplace_back(std::make_pair(0xA880, 0xA8DF), _(
"Saurashtra"));
341 ranges.emplace_back(std::make_pair(0xA8E0, 0xA8FF), _(
"Devanagari Extended"));
342 ranges.emplace_back(std::make_pair(0xA900, 0xA92F), _(
"Kayah Li"));
343 ranges.emplace_back(std::make_pair(0xA930, 0xA95F), _(
"Rejang"));
344 ranges.emplace_back(std::make_pair(0xA960, 0xA97F), _(
"Hangul Jamo Extended-A"));
345 ranges.emplace_back(std::make_pair(0xA980, 0xA9DF), _(
"Javanese"));
346 ranges.emplace_back(std::make_pair(0xAA00, 0xAA5F), _(
"Cham"));
347 ranges.emplace_back(std::make_pair(0xAA60, 0xAA7F), _(
"Myanmar Extended-A"));
348 ranges.emplace_back(std::make_pair(0xAA80, 0xAADF), _(
"Tai Viet"));
349 ranges.emplace_back(std::make_pair(0xABC0, 0xABFF), _(
"Meetei Mayek"));
350 ranges.emplace_back(std::make_pair(0xAC00, 0xD7AF), _(
"Hangul Syllables"));
351 ranges.emplace_back(std::make_pair(0xD7B0, 0xD7FF), _(
"Hangul Jamo Extended-B"));
352 ranges.emplace_back(std::make_pair(0xD800, 0xDB7F), _(
"High Surrogates"));
353 ranges.emplace_back(std::make_pair(0xDB80, 0xDBFF), _(
"High Private Use Surrogates"));
354 ranges.emplace_back(std::make_pair(0xDC00, 0xDFFF), _(
"Low Surrogates"));
355 ranges.emplace_back(std::make_pair(0xE000, 0xF8FF), _(
"Private Use Area"));
356 ranges.emplace_back(std::make_pair(0xF900, 0xFAFF), _(
"CJK Compatibility Ideographs"));
357 ranges.emplace_back(std::make_pair(0xFB00, 0xFB4F), _(
"Alphabetic Presentation Forms"));
358 ranges.emplace_back(std::make_pair(0xFB50, 0xFDFF), _(
"Arabic Presentation Forms-A"));
359 ranges.emplace_back(std::make_pair(0xFE00, 0xFE0F), _(
"Variation Selectors"));
360 ranges.emplace_back(std::make_pair(0xFE10, 0xFE1F), _(
"Vertical Forms"));
361 ranges.emplace_back(std::make_pair(0xFE20, 0xFE2F), _(
"Combining Half Marks"));
362 ranges.emplace_back(std::make_pair(0xFE30, 0xFE4F), _(
"CJK Compatibility Forms"));
363 ranges.emplace_back(std::make_pair(0xFE50, 0xFE6F), _(
"Small Form Variants"));
364 ranges.emplace_back(std::make_pair(0xFE70, 0xFEFF), _(
"Arabic Presentation Forms-B"));
365 ranges.emplace_back(std::make_pair(0xFF00, 0xFFEF), _(
"Halfwidth and Fullwidth Forms"));
366 ranges.emplace_back(std::make_pair(0xFFF0, 0xFFFF), _(
"Specials"));
368 ranges.emplace_back(std::make_pair(0x1F300, 0x1F5FF), _(
"Miscellaneous Symbols and Pictographs"));
369 ranges.emplace_back(std::make_pair(0x1F600, 0x1F64F), _(
"Emoticons"));
370 ranges.emplace_back(std::make_pair(0x1F650, 0x1F67F), _(
"Ornamental Dingbats"));
371 ranges.emplace_back(std::make_pair(0x1F680, 0x1F6FF), _(
"Transport and Map Symbols"));
372 ranges.emplace_back(std::make_pair(0x1F700, 0x1F77F), _(
"Alchemical Symbols"));
373 ranges.emplace_back(std::make_pair(0x1F780, 0x1F7FF), _(
"Geometric Shapes Extended"));
374 ranges.emplace_back(std::make_pair(0x1F800, 0x1F8FF), _(
"Supplemental Arrows-C"));
375 ranges.emplace_back(std::make_pair(0x1F900, 0x1F9FF), _(
"Supplemental Symbols and Pictographs"));
376 ranges.emplace_back(std::make_pair(0x1FA00, 0x1FA7F), _(
"Chess Symbols"));
377 ranges.emplace_back(std::make_pair(0x1FA80, 0x1FAFF), _(
"Symbols and Pictographs Extended-A"));