7#include "tdeunicodedata.h"
19constexpr TDEUnicodeData::Subcategory BasicLatin[] = {
20 { 0x0000, I18N_NOOP(
"C0 controls") },
21 { 0x0020, I18N_NOOP(
"ASCII punctuation and symbols") },
22 { 0x002B, I18N_NOOP(
"ASCII math operator") },
23 { 0x002C, I18N_NOOP(
"ASCII punctuation") },
24 { 0x0030, I18N_NOOP(
"ASCII digits") },
25 { 0x003A, I18N_NOOP(
"ASCII punctuation") },
26 { 0x003C, I18N_NOOP(
"ASCII mathematical operators") },
27 { 0x003F, I18N_NOOP(
"ASCII punctuation") },
28 { 0x0041, I18N_NOOP(
"Uppercase Latin alphabet") },
29 { 0x005B, I18N_NOOP(
"ASCII punctuation and symbols") },
30 { 0x0061, I18N_NOOP(
"Lowercase Latin alphabet") },
31 { 0x007B, I18N_NOOP(
"ASCII punctuation and symbols") },
32 { 0x007F, I18N_NOOP(
"Control character") },
35constexpr TDEUnicodeData::Subcategory Latin1Supplement[] = {
36 { 0x0080, I18N_NOOP(
"C1 controls") },
37 { 0x00A0, I18N_NOOP(
"Latin-1 punctuation and symbols") },
38 { 0x00BC, I18N_NOOP(
"Vulgar fractions") },
39 { 0x00BF, I18N_NOOP(
"Punctuation") },
40 { 0x00C0, I18N_NOOP(
"Uppercase letters") },
41 { 0x00D7, I18N_NOOP(
"Mathematical operator") },
42 { 0x00D8, I18N_NOOP(
"Uppercase letters") },
43 { 0x00DF, I18N_NOOP(
"Lowercase letters") },
44 { 0x00F7, I18N_NOOP(
"Mathematical operator") },
45 { 0x00F8, I18N_NOOP(
"Lowercase letters") },
48constexpr TDEUnicodeData::Subcategory LatinExtendedA[] = {
49 { 0x0100, I18N_NOOP(
"European Latin") },
50 { 0x0149, I18N_NOOP(
"Deprecated letter") },
51 { 0x014A, I18N_NOOP(
"European Latin") },
54constexpr TDEUnicodeData::Subcategory LatinExtendedB[] = {
55 { 0x0180, I18N_NOOP(
"Non-European and historic Latin") },
56 { 0x01C0, I18N_NOOP(
"African letters for clicks") },
57 { 0x01C4, I18N_NOOP(
"Latin digraphs matching Serbian Cyrillic letters") },
58 { 0x01CD, I18N_NOOP(
"Pinyin diacritic-vowel combinations") },
59 { 0x01DD, I18N_NOOP(
"Phonetic and historic letters") },
60 { 0x0200, I18N_NOOP(
"Additions for Slovenian") },
61 { 0x0218, I18N_NOOP(
"Additions for Romanian") },
62 { 0x021C, I18N_NOOP(
"Miscellaneous additions") },
63 { 0x022A, I18N_NOOP(
"Additions for Livonian") },
64 { 0x0234, I18N_NOOP(
"Additions for Sinology") },
65 { 0x0237, I18N_NOOP(
"Miscellaneous addition") },
66 { 0x0238, I18N_NOOP(
"Additions for Africanist linguistics") },
67 { 0x023A, I18N_NOOP(
"Additions for Sencoten") },
68 { 0x023F, I18N_NOOP(
"Additions for Africanist linguistics") },
69 { 0x0241, I18N_NOOP(
"Miscellaneous additions") },
72constexpr TDEUnicodeData::Subcategory IPAExtensions[] = {
73 { 0x0250, I18N_NOOP(
"IPA extensions") },
74 { 0x027F, I18N_NOOP(
"Sinological extension") },
75 { 0x0280, I18N_NOOP(
"IPA extensions") },
76 { 0x0285, I18N_NOOP(
"Sinological extension") },
77 { 0x0286, I18N_NOOP(
"IPA extensions") },
78 { 0x02A9, I18N_NOOP(
"IPA characters for disordered speech") },
79 { 0x02AE, I18N_NOOP(
"Sinological extensions") },
82constexpr TDEUnicodeData::Subcategory SpacingModifierLetters[] = {
83 { 0x02B0, I18N_NOOP(
"Latin superscript modifier letters") },
84 { 0x02B9, I18N_NOOP(
"Miscellaneous phonetic modifiers") },
85 { 0x02D8, I18N_NOOP(
"Spacing clones of diacritics") },
86 { 0x02DE, I18N_NOOP(
"Additions based on 1989 IPA") },
87 { 0x02E5, I18N_NOOP(
"Tone letters") },
88 { 0x02EA, I18N_NOOP(
"Extended Bopomofo tone marks") },
89 { 0x02EC, I18N_NOOP(
"IPA modifiers") },
90 { 0x02EE, I18N_NOOP(
"Other modifier letter") },
91 { 0x02EF, I18N_NOOP(
"UPA modifiers") },
94constexpr TDEUnicodeData::Subcategory CombiningDiacriticalMarks[] = {
95 { 0x0300, I18N_NOOP(
"Ordinary diacritics") },
96 { 0x0334, I18N_NOOP(
"Overstruck diacritics") },
97 { 0x0339, I18N_NOOP(
"Miscellaneous additions") },
98 { 0x0340, I18N_NOOP(
"Vietnamese tone marks") },
99 { 0x0342, I18N_NOOP(
"Additions for Greek") },
100 { 0x0346, I18N_NOOP(
"Additions for IPA") },
101 { 0x034B, I18N_NOOP(
"IPA diacritics for disordered speech") },
102 { 0x034F, I18N_NOOP(
"Miscellaneous addition") },
103 { 0x0350, I18N_NOOP(
"Additions for the Uralic Phonetic Alphabet") },
104 { 0x0358, I18N_NOOP(
"Miscellaneous additions") },
105 { 0x035C, I18N_NOOP(
"Double diacritics") },
106 { 0x0363, I18N_NOOP(
"Medieval superscript letter diacritics") },
109constexpr TDEUnicodeData::Subcategory GreekandCoptic[] = {
110 { 0x0370, I18N_NOOP(
"Archaic letters") },
111 { 0x0374, I18N_NOOP(
"Numeral signs") },
112 { 0x0376, I18N_NOOP(
"Archaic letters") },
113 { 0x037A, I18N_NOOP(
"Iota subscript") },
114 { 0x037B, I18N_NOOP(
"Lowercase of editorial symbols") },
115 { 0x037E, I18N_NOOP(
"Punctuation") },
116 { 0x037F, I18N_NOOP(
"Additional letter") },
117 { 0x0384, I18N_NOOP(
"Spacing accent marks") },
118 { 0x0386, I18N_NOOP(
"Letter") },
119 { 0x0387, I18N_NOOP(
"Punctuation") },
120 { 0x0388, I18N_NOOP(
"Letters") },
121 { 0x03CF, I18N_NOOP(
"Variant letterforms") },
122 { 0x03D8, I18N_NOOP(
"Archaic letters") },
123 { 0x03E2, I18N_NOOP(
"Coptic letters derived from Demotic") },
124 { 0x03F0, I18N_NOOP(
"Variant letterforms") },
125 { 0x03F3, I18N_NOOP(
"Additional letter") },
126 { 0x03F4, I18N_NOOP(
"Variant letterforms and symbols") },
127 { 0x03F7, I18N_NOOP(
"Additional archaic letters for Bactrian") },
128 { 0x03F9, I18N_NOOP(
"Variant letterform") },
129 { 0x03FA, I18N_NOOP(
"Archaic letters") },
130 { 0x03FC, I18N_NOOP(
"Symbol") },
131 { 0x03FD, I18N_NOOP(
"Editorial symbols") },
134constexpr TDEUnicodeData::Subcategory Cyrillic[] = {
135 { 0x0400, I18N_NOOP(
"Cyrillic extensions") },
136 { 0x0410, I18N_NOOP(
"Basic Russian alphabet") },
137 { 0x0450, I18N_NOOP(
"Cyrillic extensions") },
138 { 0x0460, I18N_NOOP(
"Historic letters") },
139 { 0x0478, I18N_NOOP(
"Historic digraphs") },
140 { 0x047A, I18N_NOOP(
"Historic letters") },
141 { 0x0482, I18N_NOOP(
"Historic miscellaneous") },
142 { 0x048A, I18N_NOOP(
"Extended Cyrillic") },
143 { 0x04FA, I18N_NOOP(
"Additions for Nivkh") },
146constexpr TDEUnicodeData::Subcategory CyrillicSupplement[] = {
147 { 0x0500, I18N_NOOP(
"Komi letters") },
148 { 0x0510, I18N_NOOP(
"Khanty letters") },
149 { 0x0512, I18N_NOOP(
"Chukchi letters") },
150 { 0x0514, I18N_NOOP(
"Mordvin letters") },
151 { 0x051A, I18N_NOOP(
"Kurdish letters") },
152 { 0x051E, I18N_NOOP(
"Aleut letters") },
153 { 0x0520, I18N_NOOP(
"Chuvash letters") },
154 { 0x0524, I18N_NOOP(
"Abkhaz letters") },
155 { 0x0526, I18N_NOOP(
"Azerbaijani letters") },
156 { 0x0528, I18N_NOOP(
"Orok letters") },
157 { 0x052A, I18N_NOOP(
"Komi letters") },
158 { 0x052E, I18N_NOOP(
"Khanty letters") },
161constexpr TDEUnicodeData::Subcategory Armenian[] = {
162 { 0x0531, I18N_NOOP(
"Uppercase letters") },
163 { 0x0559, I18N_NOOP(
"Modifier letters") },
164 { 0x0560, I18N_NOOP(
"Lowercase letters") },
165 { 0x0589, I18N_NOOP(
"Punctuation") },
166 { 0x058D, I18N_NOOP(
"Religious symbols") },
167 { 0x058F, I18N_NOOP(
"Currency symbol") },
170constexpr TDEUnicodeData::Subcategory Hebrew[] = {
171 { 0x0591, I18N_NOOP(
"Cantillation marks") },
172 { 0x05B0, I18N_NOOP(
"Points and punctuation") },
173 { 0x05C4, I18N_NOOP(
"Puncta extraordinaria") },
174 { 0x05C6, I18N_NOOP(
"Points and punctuation") },
175 { 0x05D0, I18N_NOOP(
"Based on ISO 8859-8") },
176 { 0x05EF, I18N_NOOP(
"Sign") },
177 { 0x05F0, I18N_NOOP(
"Yiddish digraphs") },
178 { 0x05F3, I18N_NOOP(
"Additional punctuation") },
181constexpr TDEUnicodeData::Subcategory Arabic[] = {
182 { 0x0600, I18N_NOOP(
"Subtending marks") },
183 { 0x0605, I18N_NOOP(
"Supertending mark") },
184 { 0x0606, I18N_NOOP(
"Radix symbols") },
185 { 0x0608, I18N_NOOP(
"Letterlike symbol") },
186 { 0x0609, I18N_NOOP(
"Punctuation") },
187 { 0x060B, I18N_NOOP(
"Currency symbol") },
188 { 0x060C, I18N_NOOP(
"Punctuation") },
189 { 0x060E, I18N_NOOP(
"Poetic marks") },
190 { 0x0610, I18N_NOOP(
"Honorifics") },
191 { 0x0615, I18N_NOOP(
"Quranic annotation sign") },
192 { 0x0616, I18N_NOOP(
"Extended Arabic mark") },
193 { 0x0617, I18N_NOOP(
"Quranic annotation signs") },
194 { 0x061B, I18N_NOOP(
"Punctuation") },
195 { 0x061C, I18N_NOOP(
"Format character") },
196 { 0x061D, I18N_NOOP(
"Punctuation") },
197 { 0x0620, I18N_NOOP(
"Addition for Kashmiri") },
198 { 0x0621, I18N_NOOP(
"Based on ISO 8859-6") },
199 { 0x063B, I18N_NOOP(
"Additions for early Persian and Azerbaijani") },
200 { 0x0640, I18N_NOOP(
"Based on ISO 8859-6") },
201 { 0x064B, I18N_NOOP(
"Tashkil from ISO 8859-6") },
202 { 0x0653, I18N_NOOP(
"Combining maddah and hamza") },
203 { 0x0656, I18N_NOOP(
"Other combining marks") },
204 { 0x0660, I18N_NOOP(
"Arabic-Indic digits") },
205 { 0x066A, I18N_NOOP(
"Punctuation") },
206 { 0x066E, I18N_NOOP(
"Archaic letters") },
207 { 0x0670, I18N_NOOP(
"Tashkil") },
208 { 0x0671, I18N_NOOP(
"Extended Arabic letters") },
209 { 0x0673, I18N_NOOP(
"Deprecated letter") },
210 { 0x0674, I18N_NOOP(
"High hamza") },
211 { 0x0675, I18N_NOOP(
"Digraphic letters for Kazakh") },
212 { 0x0679, I18N_NOOP(
"Extended Arabic letters") },
213 { 0x06D4, I18N_NOOP(
"Punctuation") },
214 { 0x06D5, I18N_NOOP(
"Extended Arabic letter") },
215 { 0x06D6, I18N_NOOP(
"Quranic annotation signs") },
216 { 0x06EE, I18N_NOOP(
"Extended Arabic letters for Parkari") },
217 { 0x06F0, I18N_NOOP(
"Eastern Arabic-Indic digits") },
218 { 0x06FA, I18N_NOOP(
"Extended Arabic letters") },
219 { 0x06FD, I18N_NOOP(
"Signs for Sindhi") },
220 { 0x06FF, I18N_NOOP(
"Extended Arabic letter for Parkari") },
223constexpr TDEUnicodeData::Subcategory Syriac[] = {
224 { 0x0700, I18N_NOOP(
"Syriac punctuation and signs") },
225 { 0x070F, I18N_NOOP(
"Syriac format control character") },
226 { 0x0710, I18N_NOOP(
"Syriac letters") },
227 { 0x072D, I18N_NOOP(
"Persian letters") },
228 { 0x0730, I18N_NOOP(
"Syriac points (vowels)") },
229 { 0x0740, I18N_NOOP(
"Syriac marks") },
230 { 0x074D, I18N_NOOP(
"Sogdian letters") },
233constexpr TDEUnicodeData::Subcategory ArabicSupplement[] = {
234 { 0x0750, I18N_NOOP(
"Extended Arabic letters") },
235 { 0x076E, I18N_NOOP(
"Additions for Khowar") },
236 { 0x0772, I18N_NOOP(
"Addition for Torwali") },
237 { 0x0773, I18N_NOOP(
"Additions for Burushaski") },
238 { 0x077E, I18N_NOOP(
"Additions for early Persian") },
241constexpr TDEUnicodeData::Subcategory Thaana[] = {
242 { 0x0780, I18N_NOOP(
"Basic consonants") },
243 { 0x0798, I18N_NOOP(
"Extensions for Arabic") },
244 { 0x07A6, I18N_NOOP(
"Vowels") },
245 { 0x07B1, I18N_NOOP(
"Consonant for Addu dialect") },
248constexpr TDEUnicodeData::Subcategory NKo[] = {
249 { 0x07C0, I18N_NOOP(
"Digits") },
250 { 0x07CA, I18N_NOOP(
"Letters") },
251 { 0x07E8, I18N_NOOP(
"Archaic letters") },
252 { 0x07EB, I18N_NOOP(
"Tone marks") },
253 { 0x07F2, I18N_NOOP(
"Other diacritics") },
254 { 0x07F4, I18N_NOOP(
"Tonal apostrophes") },
255 { 0x07F6, I18N_NOOP(
"Symbol") },
256 { 0x07F7, I18N_NOOP(
"Punctuation") },
257 { 0x07FA, I18N_NOOP(
"Letter extender") },
258 { 0x07FD, I18N_NOOP(
"Abbreviation sign") },
259 { 0x07FE, I18N_NOOP(
"Currency symbols") },
262constexpr TDEUnicodeData::Subcategory Samaritan[] = {
263 { 0x0800, I18N_NOOP(
"Letters") },
264 { 0x0816, I18N_NOOP(
"Consonant modifiers") },
265 { 0x081C, I18N_NOOP(
"Vowel signs") },
266 { 0x082D, I18N_NOOP(
"Variant reading sign") },
267 { 0x0830, I18N_NOOP(
"Punctuation") },
270constexpr TDEUnicodeData::Subcategory Mandaic[] = {
271 { 0x0840, I18N_NOOP(
"Letters") },
272 { 0x0859, I18N_NOOP(
"Diacritics") },
273 { 0x085E, I18N_NOOP(
"Punctuation") },
276constexpr TDEUnicodeData::Subcategory SyriacSupplement[] = {
277 { 0x0860, I18N_NOOP(
"Syriac letters") },
280constexpr TDEUnicodeData::Subcategory ArabicExtendedB[] = {
281 { 0x0870, I18N_NOOP(
"Additions for Quranic orthographies") },
282 { 0x0889, I18N_NOOP(
"Additions for Bosnian orthographies") },
283 { 0x088B, I18N_NOOP(
"Additions for Pegon orthographies") },
284 { 0x088E, I18N_NOOP(
"Abbreviation mark") },
285 { 0x088F, I18N_NOOP(
"Addition for Eastern Punjabi orthographies") },
286 { 0x0890, I18N_NOOP(
"Supertending currency symbols") },
287 { 0x0897, I18N_NOOP(
"Vowel sign for Pegon") },
288 { 0x0898, I18N_NOOP(
"Additions for Quranic orthographies") },
291constexpr TDEUnicodeData::Subcategory ArabicExtendedA[] = {
292 { 0x08A0, I18N_NOOP(
"Arabic letters for African languages") },
293 { 0x08AA, I18N_NOOP(
"Dependent consonants for Rohingya") },
294 { 0x08AD, I18N_NOOP(
"Arabic letters for European and Central Asian languages") },
295 { 0x08B2, I18N_NOOP(
"Arabic letter for Berber") },
296 { 0x08B3, I18N_NOOP(
"Arabic letters for Arwi") },
297 { 0x08B5, I18N_NOOP(
"Early Arabic letter") },
298 { 0x08B6, I18N_NOOP(
"Arabic letters for Bravanese") },
299 { 0x08BB, I18N_NOOP(
"Arabic letters for Warsh orthography") },
300 { 0x08BE, I18N_NOOP(
"Arabic letters for Hindko") },
301 { 0x08C3, I18N_NOOP(
"Arabic letters for Hausa, Wolof and other African orthographies") },
302 { 0x08C7, I18N_NOOP(
"Arabic letter for Punjabi") },
303 { 0x08C8, I18N_NOOP(
"Arabic letter for Balti") },
304 { 0x08C9, I18N_NOOP(
"Additions for Quranic orthographies") },
305 { 0x08D3, I18N_NOOP(
"Quranic annotation signs") },
306 { 0x08E3, I18N_NOOP(
"Extended vowel sign for Arwi") },
307 { 0x08E4, I18N_NOOP(
"Extended vowel signs for Rohingya") },
308 { 0x08EA, I18N_NOOP(
"Tone marks for Rohingya") },
309 { 0x08F0, I18N_NOOP(
"Quranic annotation signs") },
310 { 0x08F4, I18N_NOOP(
"Extended vowel signs for African languages") },
311 { 0x08FE, I18N_NOOP(
"Extended vowel signs") },
314constexpr TDEUnicodeData::Subcategory Devanagari[] = {
315 { 0x0900, I18N_NOOP(
"Various signs") },
316 { 0x0904, I18N_NOOP(
"Independent vowels") },
317 { 0x0915, I18N_NOOP(
"Consonants") },
318 { 0x093A, I18N_NOOP(
"Dependent vowel signs") },
319 { 0x093C, I18N_NOOP(
"Various signs") },
320 { 0x093E, I18N_NOOP(
"Dependent vowel signs") },
321 { 0x094D, I18N_NOOP(
"Virama") },
322 { 0x094E, I18N_NOOP(
"Dependent vowel signs") },
323 { 0x0950, I18N_NOOP(
"Sign") },
324 { 0x0951, I18N_NOOP(
"Vedic tone marks") },
325 { 0x0953, I18N_NOOP(
"Accent marks") },
326 { 0x0955, I18N_NOOP(
"Dependent vowel sign") },
327 { 0x0956, I18N_NOOP(
"Dependent vowel signs for Kashmiri") },
328 { 0x0958, I18N_NOOP(
"Additional consonants") },
329 { 0x0960, I18N_NOOP(
"Additional vowels for Sanskrit") },
330 { 0x0964, I18N_NOOP(
"Generic punctuation for scripts of India") },
331 { 0x0966, I18N_NOOP(
"Digits") },
332 { 0x0970, I18N_NOOP(
"Additional signs") },
333 { 0x0972, I18N_NOOP(
"Independent vowel for Marathi") },
334 { 0x0973, I18N_NOOP(
"Independent vowels") },
335 { 0x0976, I18N_NOOP(
"Independent vowels for Kashmiri") },
336 { 0x0978, I18N_NOOP(
"Additional consonants") },
337 { 0x097B, I18N_NOOP(
"Sindhi implosives") },
338 { 0x097D, I18N_NOOP(
"Glottal stop") },
339 { 0x097E, I18N_NOOP(
"Sindhi implosives") },
342constexpr TDEUnicodeData::Subcategory Bengali[] = {
343 { 0x0980, I18N_NOOP(
"Various signs") },
344 { 0x0985, I18N_NOOP(
"Independent vowels") },
345 { 0x0995, I18N_NOOP(
"Consonants") },
346 { 0x09BC, I18N_NOOP(
"Various signs") },
347 { 0x09BE, I18N_NOOP(
"Dependent vowel signs") },
348 { 0x09CB, I18N_NOOP(
"Two-part dependent vowel signs") },
349 { 0x09CD, I18N_NOOP(
"Virama") },
350 { 0x09CE, I18N_NOOP(
"Additional consonant") },
351 { 0x09D7, I18N_NOOP(
"Sign") },
352 { 0x09DC, I18N_NOOP(
"Additional consonants") },
353 { 0x09E0, I18N_NOOP(
"Additional vowels for Sanskrit") },
354 { 0x09E4, I18N_NOOP(
"Reserved") },
355 { 0x09E6, I18N_NOOP(
"Digits") },
356 { 0x09F0, I18N_NOOP(
"Additions for Assamese") },
357 { 0x09F2, I18N_NOOP(
"Currency symbols") },
358 { 0x09F4, I18N_NOOP(
"Historic symbols for fractional values") },
359 { 0x09FA, I18N_NOOP(
"Sign") },
360 { 0x09FB, I18N_NOOP(
"Historic currency sign") },
361 { 0x09FC, I18N_NOOP(
"Signs") },
364constexpr TDEUnicodeData::Subcategory Gurmukhi[] = {
365 { 0x0A01, I18N_NOOP(
"Various signs") },
366 { 0x0A05, I18N_NOOP(
"Independent vowels") },
367 { 0x0A15, I18N_NOOP(
"Consonants") },
368 { 0x0A3C, I18N_NOOP(
"Various signs") },
369 { 0x0A3E, I18N_NOOP(
"Dependent vowel signs") },
370 { 0x0A4D, I18N_NOOP(
"Virama") },
371 { 0x0A51, I18N_NOOP(
"Sign") },
372 { 0x0A59, I18N_NOOP(
"Additional consonants") },
373 { 0x0A64, I18N_NOOP(
"Reserved") },
374 { 0x0A66, I18N_NOOP(
"Digits") },
375 { 0x0A70, I18N_NOOP(
"Signs") },
376 { 0x0A72, I18N_NOOP(
"Vowel bases") },
377 { 0x0A74, I18N_NOOP(
"Signs") },
380constexpr TDEUnicodeData::Subcategory Gujarati[] = {
381 { 0x0A81, I18N_NOOP(
"Various signs") },
382 { 0x0A85, I18N_NOOP(
"Independent vowels") },
383 { 0x0A95, I18N_NOOP(
"Consonants") },
384 { 0x0ABC, I18N_NOOP(
"Various signs") },
385 { 0x0ABE, I18N_NOOP(
"Dependent vowel signs") },
386 { 0x0ACD, I18N_NOOP(
"Virama") },
387 { 0x0AD0, I18N_NOOP(
"Various signs") },
388 { 0x0AE0, I18N_NOOP(
"Additional vowels for Sanskrit") },
389 { 0x0AE4, I18N_NOOP(
"Reserved") },
390 { 0x0AE6, I18N_NOOP(
"Digits") },
391 { 0x0AF0, I18N_NOOP(
"Abbreviation sign") },
392 { 0x0AF1, I18N_NOOP(
"Currency symbol") },
393 { 0x0AF9, I18N_NOOP(
"Additional consonant") },
394 { 0x0AFA, I18N_NOOP(
"Transliteration signs") },
397constexpr TDEUnicodeData::Subcategory Oriya[] = {
398 { 0x0B01, I18N_NOOP(
"Various signs") },
399 { 0x0B05, I18N_NOOP(
"Independent vowels") },
400 { 0x0B15, I18N_NOOP(
"Consonants") },
401 { 0x0B3C, I18N_NOOP(
"Various signs") },
402 { 0x0B3E, I18N_NOOP(
"Dependent vowel signs") },
403 { 0x0B4B, I18N_NOOP(
"Two-part dependent vowel signs") },
404 { 0x0B4D, I18N_NOOP(
"Virama") },
405 { 0x0B55, I18N_NOOP(
"Various signs") },
406 { 0x0B5C, I18N_NOOP(
"Additional consonants") },
407 { 0x0B60, I18N_NOOP(
"Additional vowels for Sanskrit") },
408 { 0x0B62, I18N_NOOP(
"Dependent vowels") },
409 { 0x0B64, I18N_NOOP(
"Reserved") },
410 { 0x0B66, I18N_NOOP(
"Digits") },
411 { 0x0B70, I18N_NOOP(
"Sign") },
412 { 0x0B71, I18N_NOOP(
"Additional consonant") },
413 { 0x0B72, I18N_NOOP(
"Fraction signs") },
416constexpr TDEUnicodeData::Subcategory Tamil[] = {
417 { 0x0B82, I18N_NOOP(
"Various signs") },
418 { 0x0B85, I18N_NOOP(
"Independent vowels") },
419 { 0x0B95, I18N_NOOP(
"Consonants") },
420 { 0x0BBE, I18N_NOOP(
"Dependent vowel signs") },
421 { 0x0BCA, I18N_NOOP(
"Two-part dependent vowel signs") },
422 { 0x0BCD, I18N_NOOP(
"Virama") },
423 { 0x0BD0, I18N_NOOP(
"Various signs") },
424 { 0x0BE4, I18N_NOOP(
"Reserved") },
425 { 0x0BE6, I18N_NOOP(
"Digits") },
426 { 0x0BF0, I18N_NOOP(
"Tamil numerics") },
427 { 0x0BF3, I18N_NOOP(
"Tamil calendrical symbols") },
428 { 0x0BF6, I18N_NOOP(
"Tamil clerical symbols") },
429 { 0x0BF9, I18N_NOOP(
"Currency symbol") },
430 { 0x0BFA, I18N_NOOP(
"Tamil clerical symbol") },
433constexpr TDEUnicodeData::Subcategory Telugu[] = {
434 { 0x0C00, I18N_NOOP(
"Various signs") },
435 { 0x0C05, I18N_NOOP(
"Independent vowels") },
436 { 0x0C15, I18N_NOOP(
"Consonants") },
437 { 0x0C3C, I18N_NOOP(
"Sign") },
438 { 0x0C3D, I18N_NOOP(
"Addition for Sanskrit") },
439 { 0x0C3E, I18N_NOOP(
"Dependent vowel signs") },
440 { 0x0C4D, I18N_NOOP(
"Virama") },
441 { 0x0C55, I18N_NOOP(
"Various signs") },
442 { 0x0C58, I18N_NOOP(
"Historic phonetic variants") },
443 { 0x0C5C, I18N_NOOP(
"Ligature") },
444 { 0x0C5D, I18N_NOOP(
"Consonant") },
445 { 0x0C60, I18N_NOOP(
"Additional vowels for Sanskrit") },
446 { 0x0C62, I18N_NOOP(
"Dependent vowels") },
447 { 0x0C64, I18N_NOOP(
"Reserved") },
448 { 0x0C66, I18N_NOOP(
"Digits") },
449 { 0x0C77, I18N_NOOP(
"Sign") },
450 { 0x0C78, I18N_NOOP(
"Telugu fractions and weights") },
453constexpr TDEUnicodeData::Subcategory Kannada[] = {
454 { 0x0C80, I18N_NOOP(
"Various signs") },
455 { 0x0C85, I18N_NOOP(
"Independent vowels") },
456 { 0x0C95, I18N_NOOP(
"Consonants") },
457 { 0x0CBC, I18N_NOOP(
"Various signs") },
458 { 0x0CBE, I18N_NOOP(
"Dependent vowel signs") },
459 { 0x0CCD, I18N_NOOP(
"Virama") },
460 { 0x0CD5, I18N_NOOP(
"Various signs") },
461 { 0x0CDC, I18N_NOOP(
"Ligature") },
462 { 0x0CDD, I18N_NOOP(
"Additional consonants") },
463 { 0x0CE0, I18N_NOOP(
"Additional vowels for Sanskrit") },
464 { 0x0CE2, I18N_NOOP(
"Dependent vowels") },
465 { 0x0CE4, I18N_NOOP(
"Reserved") },
466 { 0x0CE6, I18N_NOOP(
"Digits") },
467 { 0x0CF1, I18N_NOOP(
"Signs used in Sanskrit") },
470constexpr TDEUnicodeData::Subcategory Malayalam[] = {
471 { 0x0D00, I18N_NOOP(
"Various signs") },
472 { 0x0D05, I18N_NOOP(
"Independent vowels") },
473 { 0x0D15, I18N_NOOP(
"Consonants") },
474 { 0x0D3B, I18N_NOOP(
"Variant shape viramas") },
475 { 0x0D3D, I18N_NOOP(
"Addition for Sanskrit") },
476 { 0x0D3E, I18N_NOOP(
"Dependent vowel signs") },
477 { 0x0D4A, I18N_NOOP(
"Two-part dependent vowel signs") },
478 { 0x0D4D, I18N_NOOP(
"Virama") },
479 { 0x0D4E, I18N_NOOP(
"Dot reph") },
480 { 0x0D4F, I18N_NOOP(
"Measurement symbol") },
481 { 0x0D54, I18N_NOOP(
"Additional historic chillu letters") },
482 { 0x0D57, I18N_NOOP(
"Dependent vowel sign") },
483 { 0x0D58, I18N_NOOP(
"Minor fractions") },
484 { 0x0D5F, I18N_NOOP(
"Additional historic vowel") },
485 { 0x0D60, I18N_NOOP(
"Additional vowels for Sanskrit") },
486 { 0x0D62, I18N_NOOP(
"Dependent vowels") },
487 { 0x0D64, I18N_NOOP(
"Reserved") },
488 { 0x0D66, I18N_NOOP(
"Digits") },
489 { 0x0D70, I18N_NOOP(
"Malayalam numerics") },
490 { 0x0D73, I18N_NOOP(
"Fractions") },
491 { 0x0D79, I18N_NOOP(
"Date mark") },
492 { 0x0D7A, I18N_NOOP(
"Chillu letters") },
495constexpr TDEUnicodeData::Subcategory Sinhala[] = {
496 { 0x0D81, I18N_NOOP(
"Various signs") },
497 { 0x0D85, I18N_NOOP(
"Independent vowels") },
498 { 0x0D9A, I18N_NOOP(
"Consonants") },
499 { 0x0DCA, I18N_NOOP(
"Sign") },
500 { 0x0DCF, I18N_NOOP(
"Dependent vowel signs") },
501 { 0x0DDC, I18N_NOOP(
"Two-part dependent vowel signs") },
502 { 0x0DDF, I18N_NOOP(
"Dependent vowel sign") },
503 { 0x0DE6, I18N_NOOP(
"Astrological digits") },
504 { 0x0DF2, I18N_NOOP(
"Additional dependent vowel signs") },
505 { 0x0DF4, I18N_NOOP(
"Punctuation") },
508constexpr TDEUnicodeData::Subcategory Thai[] = {
509 { 0x0E01, I18N_NOOP(
"Consonants") },
510 { 0x0E2F, I18N_NOOP(
"Sign") },
511 { 0x0E30, I18N_NOOP(
"Vowels") },
512 { 0x0E3F, I18N_NOOP(
"Currency symbol") },
513 { 0x0E40, I18N_NOOP(
"Vowels") },
514 { 0x0E45, I18N_NOOP(
"Vowel length sign") },
515 { 0x0E46, I18N_NOOP(
"Repetition mark") },
516 { 0x0E47, I18N_NOOP(
"Vowel") },
517 { 0x0E48, I18N_NOOP(
"Tone marks") },
518 { 0x0E4C, I18N_NOOP(
"Signs") },
519 { 0x0E50, I18N_NOOP(
"Digits") },
520 { 0x0E5A, I18N_NOOP(
"Signs") },
523constexpr TDEUnicodeData::Subcategory Lao[] = {
524 { 0x0E81, I18N_NOOP(
"Consonants") },
525 { 0x0EAF, I18N_NOOP(
"Sign") },
526 { 0x0EB0, I18N_NOOP(
"Vowels") },
527 { 0x0EBA, I18N_NOOP(
"Virama") },
528 { 0x0EBB, I18N_NOOP(
"Vowel") },
529 { 0x0EBC, I18N_NOOP(
"Signs") },
530 { 0x0EC0, I18N_NOOP(
"Vowels") },
531 { 0x0EC6, I18N_NOOP(
"Repetition mark") },
532 { 0x0EC8, I18N_NOOP(
"Tone marks") },
533 { 0x0ECC, I18N_NOOP(
"Signs") },
534 { 0x0ED0, I18N_NOOP(
"Digits") },
535 { 0x0EDC, I18N_NOOP(
"Digraphs") },
536 { 0x0EDE, I18N_NOOP(
"Consonants for Khmu") },
539constexpr TDEUnicodeData::Subcategory Tibetan[] = {
540 { 0x0F00, I18N_NOOP(
"Syllable") },
541 { 0x0F01, I18N_NOOP(
"Head marks") },
542 { 0x0F08, I18N_NOOP(
"Marks and signs") },
543 { 0x0F15, I18N_NOOP(
"Astrological signs") },
544 { 0x0F20, I18N_NOOP(
"Digits") },
545 { 0x0F2A, I18N_NOOP(
"Digits minus half") },
546 { 0x0F34, I18N_NOOP(
"Marks and signs") },
547 { 0x0F3A, I18N_NOOP(
"Paired punctuation") },
548 { 0x0F3E, I18N_NOOP(
"Astrological signs") },
549 { 0x0F40, I18N_NOOP(
"Consonants") },
550 { 0x0F6B, I18N_NOOP(
"Extensions for Balti") },
551 { 0x0F71, I18N_NOOP(
"Dependent vowel signs") },
552 { 0x0F7E, I18N_NOOP(
"Vocalic modification") },
553 { 0x0F80, I18N_NOOP(
"Dependent vowel signs") },
554 { 0x0F82, I18N_NOOP(
"Marks and signs") },
555 { 0x0F88, I18N_NOOP(
"Transliteration head letters") },
556 { 0x0F8D, I18N_NOOP(
"Transliteration subjoined signs") },
557 { 0x0F90, I18N_NOOP(
"Subjoined consonants") },
558 { 0x0FBA, I18N_NOOP(
"Fixed-form subjoined consonants") },
559 { 0x0FBE, I18N_NOOP(
"Signs") },
560 { 0x0FC0, I18N_NOOP(
"Cantillation signs") },
561 { 0x0FC4, I18N_NOOP(
"Symbols") },
562 { 0x0FCE, I18N_NOOP(
"Astrological signs") },
563 { 0x0FD0, I18N_NOOP(
"Marks") },
564 { 0x0FD3, I18N_NOOP(
"Head marks") },
565 { 0x0FD5, I18N_NOOP(
"Religious symbols") },
566 { 0x0FD9, I18N_NOOP(
"Annotation marks") },
569constexpr TDEUnicodeData::Subcategory Myanmar[] = {
570 { 0x1000, I18N_NOOP(
"Consonants") },
571 { 0x1021, I18N_NOOP(
"Independent vowels") },
572 { 0x102B, I18N_NOOP(
"Dependent vowel signs") },
573 { 0x1036, I18N_NOOP(
"Various signs") },
574 { 0x1039, I18N_NOOP(
"Virama and killer") },
575 { 0x103B, I18N_NOOP(
"Dependent consonant signs") },
576 { 0x103F, I18N_NOOP(
"Consonant") },
577 { 0x1040, I18N_NOOP(
"Digits") },
578 { 0x104A, I18N_NOOP(
"Punctuation") },
579 { 0x104C, I18N_NOOP(
"Various signs") },
580 { 0x1050, I18N_NOOP(
"Pali and Sanskrit extensions") },
581 { 0x105A, I18N_NOOP(
"Extensions for Mon") },
582 { 0x1061, I18N_NOOP(
"Extensions for S'gaw Karen") },
583 { 0x1065, I18N_NOOP(
"Extensions for Western Pwo Karen") },
584 { 0x106E, I18N_NOOP(
"Extensions for Eastern Pwo Karen") },
585 { 0x1071, I18N_NOOP(
"Extension for Geba Karen") },
586 { 0x1072, I18N_NOOP(
"Extensions for Kayah") },
587 { 0x1075, I18N_NOOP(
"Extensions for Shan") },
588 { 0x108E, I18N_NOOP(
"Extensions for Rumai Palaung") },
589 { 0x1090, I18N_NOOP(
"Shan digits") },
590 { 0x109A, I18N_NOOP(
"Extensions for Khamti Shan") },
591 { 0x109C, I18N_NOOP(
"Extensions for Aiton and Phake") },
592 { 0x109E, I18N_NOOP(
"Shan symbols") },
595constexpr TDEUnicodeData::Subcategory Georgian[] = {
596 { 0x10A0, I18N_NOOP(
"Capital letters (Khutsuri)") },
597 { 0x10C7, I18N_NOOP(
"Additional letter") },
598 { 0x10CD, I18N_NOOP(
"Additional letter for Ossetian") },
599 { 0x10D0, I18N_NOOP(
"Mkhedruli") },
600 { 0x10F1, I18N_NOOP(
"Archaic letters") },
601 { 0x10F7, I18N_NOOP(
"Additional letters for Mingrelian and Svan") },
602 { 0x10F9, I18N_NOOP(
"Additional letters") },
603 { 0x10FB, I18N_NOOP(
"Punctuation") },
604 { 0x10FC, I18N_NOOP(
"Modifier letter") },
605 { 0x10FD, I18N_NOOP(
"Additional letters for Ossetian and Abkhaz") },
608constexpr TDEUnicodeData::Subcategory HangulJamo[] = {
609 { 0x1100, I18N_NOOP(
"Initial consonants") },
610 { 0x1113, I18N_NOOP(
"Old initial consonants") },
611 { 0x1160, I18N_NOOP(
"Medial vowels") },
612 { 0x1176, I18N_NOOP(
"Old medial vowels") },
613 { 0x11A8, I18N_NOOP(
"Final consonants") },
614 { 0x11C3, I18N_NOOP(
"Old final consonants") },
617constexpr TDEUnicodeData::Subcategory Ethiopic[] = {
618 { 0x1200, I18N_NOOP(
"Syllables") },
619 { 0x135D, I18N_NOOP(
"Combining marks") },
620 { 0x1360, I18N_NOOP(
"Punctuation") },
621 { 0x1369, I18N_NOOP(
"Digits") },
622 { 0x1372, I18N_NOOP(
"Numbers") },
625constexpr TDEUnicodeData::Subcategory EthiopicSupplement[] = {
626 { 0x1380, I18N_NOOP(
"Syllables for Gurage") },
627 { 0x1390, I18N_NOOP(
"Tonal marks") },
630constexpr TDEUnicodeData::Subcategory Cherokee[] = {
631 { 0x13A0, I18N_NOOP(
"Uppercase syllables") },
632 { 0x13F5, I18N_NOOP(
"Archaic uppercase syllable") },
633 { 0x13F8, I18N_NOOP(
"Lowercase syllables") },
634 { 0x13FD, I18N_NOOP(
"Archaic lowercase syllable") },
637constexpr TDEUnicodeData::Subcategory UnifiedCanadianAboriginalSyllabics[] = {
638 { 0x1400, I18N_NOOP(
"Punctuation") },
639 { 0x1401, I18N_NOOP(
"Syllables") },
640 { 0x15C4, I18N_NOOP(
"Syllables for Carrier") },
641 { 0x166D, I18N_NOOP(
"Symbol") },
642 { 0x166E, I18N_NOOP(
"Punctuation") },
643 { 0x166F, I18N_NOOP(
"Syllables") },
646constexpr TDEUnicodeData::Subcategory Ogham[] = {
647 { 0x1680, I18N_NOOP(
"Space") },
648 { 0x1681, I18N_NOOP(
"Traditional letters") },
649 { 0x1695, I18N_NOOP(
"Forfeda (supplementary letters)") },
650 { 0x169B, I18N_NOOP(
"Punctuation") },
653constexpr TDEUnicodeData::Subcategory Runic[] = {
654 { 0x16A0, I18N_NOOP(
"Letters") },
655 { 0x16EB, I18N_NOOP(
"Punctuation") },
656 { 0x16EE, I18N_NOOP(
"Golden number runes") },
657 { 0x16F1, I18N_NOOP(
"Tolkienian extensions") },
658 { 0x16F4, I18N_NOOP(
"Cryptogrammic letters") },
661constexpr TDEUnicodeData::Subcategory Tagalog[] = {
662 { 0x1700, I18N_NOOP(
"Independent vowels") },
663 { 0x1703, I18N_NOOP(
"Consonants") },
664 { 0x1712, I18N_NOOP(
"Dependent vowel signs") },
665 { 0x1714, I18N_NOOP(
"Viramas") },
666 { 0x171F, I18N_NOOP(
"Archaic letter") },
669constexpr TDEUnicodeData::Subcategory Hanunoo[] = {
670 { 0x1720, I18N_NOOP(
"Independent vowels") },
671 { 0x1723, I18N_NOOP(
"Consonants") },
672 { 0x1732, I18N_NOOP(
"Dependent vowel signs") },
673 { 0x1734, I18N_NOOP(
"Virama") },
674 { 0x1735, I18N_NOOP(
"Generic punctuation for Philippine scripts") },
677constexpr TDEUnicodeData::Subcategory Buhid[] = {
678 { 0x1740, I18N_NOOP(
"Independent vowels") },
679 { 0x1743, I18N_NOOP(
"Consonants") },
680 { 0x1752, I18N_NOOP(
"Dependent vowel signs") },
683constexpr TDEUnicodeData::Subcategory Tagbanwa[] = {
684 { 0x1760, I18N_NOOP(
"Independent vowels") },
685 { 0x1763, I18N_NOOP(
"Consonants") },
686 { 0x1772, I18N_NOOP(
"Dependent vowel signs") },
689constexpr TDEUnicodeData::Subcategory Khmer[] = {
690 { 0x1780, I18N_NOOP(
"Consonants") },
691 { 0x17A3, I18N_NOOP(
"Deprecated independent vowels for transliteration") },
692 { 0x17A5, I18N_NOOP(
"Independent vowels") },
693 { 0x17B4, I18N_NOOP(
"Inherent vowels") },
694 { 0x17B6, I18N_NOOP(
"Dependent vowel signs") },
695 { 0x17BE, I18N_NOOP(
"Two-part dependent vowel signs") },
696 { 0x17C1, I18N_NOOP(
"Dependent vowel signs") },
697 { 0x17C4, I18N_NOOP(
"Two-part dependent vowel signs") },
698 { 0x17C6, I18N_NOOP(
"Various signs") },
699 { 0x17C9, I18N_NOOP(
"Consonant shifters") },
700 { 0x17CB, I18N_NOOP(
"Various signs") },
701 { 0x17D3, I18N_NOOP(
"Lunar date sign") },
702 { 0x17D4, I18N_NOOP(
"Various signs") },
703 { 0x17DB, I18N_NOOP(
"Currency symbol") },
704 { 0x17DC, I18N_NOOP(
"Various signs") },
705 { 0x17E0, I18N_NOOP(
"Digits") },
706 { 0x17F0, I18N_NOOP(
"Numeric symbols for divination lore") },
709constexpr TDEUnicodeData::Subcategory Mongolian[] = {
710 { 0x1800, I18N_NOOP(
"Punctuation") },
711 { 0x180B, I18N_NOOP(
"Format controls") },
712 { 0x1810, I18N_NOOP(
"Digits") },
713 { 0x1820, I18N_NOOP(
"Basic letters") },
714 { 0x1843, I18N_NOOP(
"Todo letters") },
715 { 0x185D, I18N_NOOP(
"Sibe letters") },
716 { 0x1873, I18N_NOOP(
"Manchu letters") },
717 { 0x1878, I18N_NOOP(
"Buryat letter") },
718 { 0x1880, I18N_NOOP(
"Extensions for Sanskrit and Tibetan") },
721constexpr TDEUnicodeData::Subcategory UnifiedCanadianAboriginalSyllabicsExtended[] = {
722 { 0x18B0, I18N_NOOP(
"Syllables for Moose Cree") },
723 { 0x18C6, I18N_NOOP(
"Syllables for Cree and Ojibway") },
724 { 0x18D4, I18N_NOOP(
"Finals for Cree and Ojibway") },
725 { 0x18E0, I18N_NOOP(
"Syllables for Beaver Dene, Hare Dene, and Chipewyan Dene") },
726 { 0x18F3, I18N_NOOP(
"Finals for Dene and Carrier") },
729constexpr TDEUnicodeData::Subcategory Limbu[] = {
730 { 0x1900, I18N_NOOP(
"Consonants") },
731 { 0x1920, I18N_NOOP(
"Dependent vowel signs") },
732 { 0x1929, I18N_NOOP(
"Subjoined consonants") },
733 { 0x1930, I18N_NOOP(
"Final consonants") },
734 { 0x1939, I18N_NOOP(
"Various signs") },
735 { 0x1946, I18N_NOOP(
"Digits") },
738constexpr TDEUnicodeData::Subcategory TaiLe[] = {
739 { 0x1950, I18N_NOOP(
"Consonants") },
740 { 0x1963, I18N_NOOP(
"Vowels") },
741 { 0x1970, I18N_NOOP(
"Tone letters") },
744constexpr TDEUnicodeData::Subcategory NewTaiLue[] = {
745 { 0x1980, I18N_NOOP(
"Consonants") },
746 { 0x19B0, I18N_NOOP(
"Vowels") },
747 { 0x19C1, I18N_NOOP(
"Final consonants") },
748 { 0x19C8, I18N_NOOP(
"Tone marks") },
749 { 0x19D0, I18N_NOOP(
"Digits") },
750 { 0x19DE, I18N_NOOP(
"Various signs") },
753constexpr TDEUnicodeData::Subcategory KhmerSymbols[] = {
754 { 0x19E0, I18N_NOOP(
"Lunar date symbols") },
757constexpr TDEUnicodeData::Subcategory Buginese[] = {
758 { 0x1A00, I18N_NOOP(
"Consonants") },
759 { 0x1A17, I18N_NOOP(
"Vowels") },
760 { 0x1A1E, I18N_NOOP(
"Various signs") },
763constexpr TDEUnicodeData::Subcategory TaiTham[] = {
764 { 0x1A20, I18N_NOOP(
"Consonants") },
765 { 0x1A4D, I18N_NOOP(
"Independent vowels") },
766 { 0x1A53, I18N_NOOP(
"Consonants") },
767 { 0x1A55, I18N_NOOP(
"Consonant signs") },
768 { 0x1A60, I18N_NOOP(
"Sign") },
769 { 0x1A61, I18N_NOOP(
"Dependent vowel signs") },
770 { 0x1A75, I18N_NOOP(
"Tone marks") },
771 { 0x1A7A, I18N_NOOP(
"Other marks") },
772 { 0x1A7F, I18N_NOOP(
"Cryptogrammic mark") },
773 { 0x1A80, I18N_NOOP(
"Hora digits") },
774 { 0x1A90, I18N_NOOP(
"Tham digits") },
775 { 0x1AA0, I18N_NOOP(
"Logographs") },
776 { 0x1AA3, I18N_NOOP(
"Punctuation") },
777 { 0x1AA7, I18N_NOOP(
"Sign") },
778 { 0x1AA8, I18N_NOOP(
"Punctuation") },
781constexpr TDEUnicodeData::Subcategory CombiningDiacriticalMarksExtended[] = {
782 { 0x1AB0, I18N_NOOP(
"Used in German dialectology") },
783 { 0x1ABB, I18N_NOOP(
"Marks surrounding other diacritics or letters") },
784 { 0x1ABF, I18N_NOOP(
"Used in Scots dialectology") },
785 { 0x1AC1, I18N_NOOP(
"Marks next to or surrounding other diacritics") },
786 { 0x1AC6, I18N_NOOP(
"Phonetic sign") },
787 { 0x1AC7, I18N_NOOP(
"Used in extended IPA") },
788 { 0x1ACB, I18N_NOOP(
"Used in Middle English Ormulum") },
789 { 0x1ACF, I18N_NOOP(
"Compound tone diacritics") },
790 { 0x1AD9, I18N_NOOP(
"J.P. Harrington diacritics") },
791 { 0x1AE0, I18N_NOOP(
"IPA positional variants") },
792 { 0x1AE6, I18N_NOOP(
"Historical IPA") },
793 { 0x1AE8, I18N_NOOP(
"Extended IPA positional variants") },
796constexpr TDEUnicodeData::Subcategory Balinese[] = {
797 { 0x1B00, I18N_NOOP(
"Various signs") },
798 { 0x1B05, I18N_NOOP(
"Independent vowels") },
799 { 0x1B13, I18N_NOOP(
"Consonants") },
800 { 0x1B34, I18N_NOOP(
"Sign") },
801 { 0x1B35, I18N_NOOP(
"Dependent vowel signs") },
802 { 0x1B44, I18N_NOOP(
"Sign") },
803 { 0x1B45, I18N_NOOP(
"Additional consonants") },
804 { 0x1B4E, I18N_NOOP(
"Punctuation") },
805 { 0x1B50, I18N_NOOP(
"Digits") },
806 { 0x1B5A, I18N_NOOP(
"Punctuation") },
807 { 0x1B61, I18N_NOOP(
"Musical symbols for notes") },
808 { 0x1B6B, I18N_NOOP(
"Diacritical marks for musical symbols") },
809 { 0x1B74, I18N_NOOP(
"Musical symbols") },
810 { 0x1B7D, I18N_NOOP(
"Punctuation") },
813constexpr TDEUnicodeData::Subcategory Sundanese[] = {
814 { 0x1B80, I18N_NOOP(
"Various signs") },
815 { 0x1B83, I18N_NOOP(
"Vowels") },
816 { 0x1B8A, I18N_NOOP(
"Consonants") },
817 { 0x1BA1, I18N_NOOP(
"Consonant signs") },
818 { 0x1BA4, I18N_NOOP(
"Vowel signs") },
819 { 0x1BAA, I18N_NOOP(
"Viramas") },
820 { 0x1BAC, I18N_NOOP(
"Consonant signs") },
821 { 0x1BAE, I18N_NOOP(
"Additional consonants") },
822 { 0x1BB0, I18N_NOOP(
"Digits") },
823 { 0x1BBA, I18N_NOOP(
"Sign") },
824 { 0x1BBB, I18N_NOOP(
"Historic letters") },
827constexpr TDEUnicodeData::Subcategory Batak[] = {
828 { 0x1BC0, I18N_NOOP(
"Letters") },
829 { 0x1BE6, I18N_NOOP(
"Sign") },
830 { 0x1BE7, I18N_NOOP(
"Dependent vowel signs") },
831 { 0x1BF0, I18N_NOOP(
"Dependent consonant signs") },
832 { 0x1BF2, I18N_NOOP(
"Signs") },
833 { 0x1BFC, I18N_NOOP(
"Punctuation") },
836constexpr TDEUnicodeData::Subcategory Lepcha[] = {
837 { 0x1C00, I18N_NOOP(
"Consonants") },
838 { 0x1C24, I18N_NOOP(
"Subjoined consonants") },
839 { 0x1C26, I18N_NOOP(
"Dependent vowels") },
840 { 0x1C2D, I18N_NOOP(
"Consonant signs") },
841 { 0x1C36, I18N_NOOP(
"Various signs") },
842 { 0x1C3B, I18N_NOOP(
"Punctuation") },
843 { 0x1C40, I18N_NOOP(
"Digits") },
844 { 0x1C4D, I18N_NOOP(
"Additional letters") },
847constexpr TDEUnicodeData::Subcategory OlChiki[] = {
848 { 0x1C50, I18N_NOOP(
"Digits") },
849 { 0x1C5A, I18N_NOOP(
"Letters") },
850 { 0x1C78, I18N_NOOP(
"Modifier letters") },
851 { 0x1C7E, I18N_NOOP(
"Punctuation") },
854constexpr TDEUnicodeData::Subcategory CyrillicExtendedC[] = {
855 { 0x1C80, I18N_NOOP(
"Historic letter variants") },
856 { 0x1C89, I18N_NOOP(
"Khanty letters") },
859constexpr TDEUnicodeData::Subcategory GeorgianExtended[] = {
860 { 0x1C90, I18N_NOOP(
"Capital letters (Mtavruli)") },
861 { 0x1CB1, I18N_NOOP(
"Archaic letters") },
862 { 0x1CB7, I18N_NOOP(
"Additional letters for Mingrelian and Svan") },
863 { 0x1CB9, I18N_NOOP(
"Additional letters") },
864 { 0x1CBD, I18N_NOOP(
"Additional letters for Ossetian and Abkhaz") },
867constexpr TDEUnicodeData::Subcategory SundaneseSupplement[] = {
868 { 0x1CC0, I18N_NOOP(
"Punctuation") },
871constexpr TDEUnicodeData::Subcategory VedicExtensions[] = {
872 { 0x1CD0, I18N_NOOP(
"Tone marks for the Samaveda") },
873 { 0x1CD3, I18N_NOOP(
"Breathing mark for the Samaveda") },
874 { 0x1CD4, I18N_NOOP(
"Signs for Yajurvedic") },
875 { 0x1CDE, I18N_NOOP(
"Tone marks for the Satapathabrahmana") },
876 { 0x1CE0, I18N_NOOP(
"Tone mark for the Rigveda") },
877 { 0x1CE1, I18N_NOOP(
"Tone mark for the Atharvaveda") },
878 { 0x1CE2, I18N_NOOP(
"Diacritics for visarga") },
879 { 0x1CE9, I18N_NOOP(
"Nasalization signs") },
880 { 0x1CF2, I18N_NOOP(
"Ardhavisarga") },
881 { 0x1CF4, I18N_NOOP(
"Sign for Yajurvedic") },
882 { 0x1CF5, I18N_NOOP(
"Signs") },
883 { 0x1CF8, I18N_NOOP(
"Signs for Jaiminiya Sama Veda") },
884 { 0x1CFA, I18N_NOOP(
"Nasalization sign") },
887constexpr TDEUnicodeData::Subcategory PhoneticExtensions[] = {
888 { 0x1D00, I18N_NOOP(
"Latin letters") },
889 { 0x1D26, I18N_NOOP(
"Greek letters") },
890 { 0x1D2B, I18N_NOOP(
"Cyrillic letter") },
891 { 0x1D2C, I18N_NOOP(
"Latin superscript modifier letters") },
892 { 0x1D5D, I18N_NOOP(
"Greek superscript modifier letters") },
893 { 0x1D62, I18N_NOOP(
"Latin subscript modifier letters") },
894 { 0x1D66, I18N_NOOP(
"Greek subscript modifier letters") },
895 { 0x1D6B, I18N_NOOP(
"Latin letter for American lexicography") },
896 { 0x1D6C, I18N_NOOP(
"Latin letters with middle tilde") },
897 { 0x1D77, I18N_NOOP(
"Letters for Caucasian linguistics") },
898 { 0x1D79, I18N_NOOP(
"Other phonetic symbols") },
901constexpr TDEUnicodeData::Subcategory PhoneticExtensionsSupplement[] = {
902 { 0x1D80, I18N_NOOP(
"Latin letters with palatal hook") },
903 { 0x1D8F, I18N_NOOP(
"Latin letters with retroflex hook") },
904 { 0x1D9B, I18N_NOOP(
"Modifier letters") },
907constexpr TDEUnicodeData::Subcategory CombiningDiacriticalMarksSupplement[] = {
908 { 0x1DC0, I18N_NOOP(
"Used for Ancient Greek") },
909 { 0x1DC2, I18N_NOOP(
"Miscellaneous marks") },
910 { 0x1DC4, I18N_NOOP(
"Contour tone marks") },
911 { 0x1DCA, I18N_NOOP(
"Miscellaneous mark") },
912 { 0x1DCB, I18N_NOOP(
"Contour tone marks") },
913 { 0x1DCD, I18N_NOOP(
"Double diacritic") },
914 { 0x1DCE, I18N_NOOP(
"Medievalist additions") },
915 { 0x1DD3, I18N_NOOP(
"Medieval superscript letter diacritics") },
916 { 0x1DE7, I18N_NOOP(
"Superscript letter diacritics for German dialectology") },
917 { 0x1DF5, I18N_NOOP(
"Diacritic for American lexicography") },
918 { 0x1DF6, I18N_NOOP(
"Typicon marks") },
919 { 0x1DF8, I18N_NOOP(
"Miscellaneous marks") },
920 { 0x1DFC, I18N_NOOP(
"Double diacritic mark for UPA") },
921 { 0x1DFD, I18N_NOOP(
"Miscellaneous mark") },
922 { 0x1DFE, I18N_NOOP(
"Additional marks for UPA") },
925constexpr TDEUnicodeData::Subcategory LatinExtendedAdditional[] = {
926 { 0x1E00, I18N_NOOP(
"Latin general use extensions") },
927 { 0x1E9C, I18N_NOOP(
"Medievalist additions") },
928 { 0x1E9E, I18N_NOOP(
"Addition for German typography") },
929 { 0x1E9F, I18N_NOOP(
"Medievalist addition") },
930 { 0x1EA0, I18N_NOOP(
"Latin extensions for Vietnamese") },
931 { 0x1EF2, I18N_NOOP(
"Latin general extensions") },
932 { 0x1EFA, I18N_NOOP(
"Medievalist additions") },
935constexpr TDEUnicodeData::Subcategory GreekExtended[] = {
936 { 0x1F00, I18N_NOOP(
"Precomposed polytonic Greek") },
939constexpr TDEUnicodeData::Subcategory GeneralPunctuation[] = {
940 { 0x2000, I18N_NOOP(
"Spaces") },
941 { 0x200B, I18N_NOOP(
"Format characters") },
942 { 0x2010, I18N_NOOP(
"Dashes") },
943 { 0x2016, I18N_NOOP(
"General punctuation") },
944 { 0x2018, I18N_NOOP(
"Quotation marks and apostrophe") },
945 { 0x2020, I18N_NOOP(
"General punctuation") },
946 { 0x2028, I18N_NOOP(
"Separators") },
947 { 0x202A, I18N_NOOP(
"Format characters") },
948 { 0x202F, I18N_NOOP(
"Space") },
949 { 0x2030, I18N_NOOP(
"General punctuation") },
950 { 0x2039, I18N_NOOP(
"Quotation marks") },
951 { 0x203B, I18N_NOOP(
"General punctuation") },
952 { 0x203C, I18N_NOOP(
"Double punctuation for vertical text") },
953 { 0x203D, I18N_NOOP(
"General punctuation") },
954 { 0x2045, I18N_NOOP(
"Brackets") },
955 { 0x2047, I18N_NOOP(
"Double punctuation for vertical text") },
956 { 0x204A, I18N_NOOP(
"General punctuation") },
957 { 0x2056, I18N_NOOP(
"Archaic punctuation") },
958 { 0x2057, I18N_NOOP(
"General punctuation") },
959 { 0x2058, I18N_NOOP(
"Archaic punctuation") },
960 { 0x205F, I18N_NOOP(
"Space") },
961 { 0x2060, I18N_NOOP(
"Format character") },
962 { 0x2061, I18N_NOOP(
"Invisible operators") },
963 { 0x2066, I18N_NOOP(
"Format characters") },
964 { 0x206A, I18N_NOOP(
"Deprecated") },
967constexpr TDEUnicodeData::Subcategory SuperscriptsandSubscripts[] = {
968 { 0x2070, I18N_NOOP(
"Superscripts") },
969 { 0x2080, I18N_NOOP(
"Subscripts") },
970 { 0x2095, I18N_NOOP(
"Subscripts for UPA") },
973constexpr TDEUnicodeData::Subcategory CurrencySymbols[] = {
974 { 0x20A0, I18N_NOOP(
"Currency symbols") },
977constexpr TDEUnicodeData::Subcategory CombiningDiacriticalMarksforSymbols[] = {
978 { 0x20D0, I18N_NOOP(
"Combining diacritical marks for symbols") },
979 { 0x20DD, I18N_NOOP(
"Enclosing diacritics") },
980 { 0x20E1, I18N_NOOP(
"Additional diacritical mark for symbols") },
981 { 0x20E2, I18N_NOOP(
"Additional enclosing diacritics") },
982 { 0x20E5, I18N_NOOP(
"Additional diacritical marks for symbols") },
985constexpr TDEUnicodeData::Subcategory LetterlikeSymbols[] = {
986 { 0x2100, I18N_NOOP(
"Letterlike symbols") },
987 { 0x2135, I18N_NOOP(
"Hebrew letterlike math symbols") },
988 { 0x2139, I18N_NOOP(
"Additional letterlike symbols") },
989 { 0x2140, I18N_NOOP(
"Double-struck large operator") },
990 { 0x2141, I18N_NOOP(
"Additional letterlike symbols") },
991 { 0x2145, I18N_NOOP(
"Double-struck italic math symbols") },
992 { 0x214A, I18N_NOOP(
"Additional letterlike symbols") },
993 { 0x214E, I18N_NOOP(
"Lowercase Claudian letter") },
994 { 0x214F, I18N_NOOP(
"Biblical editorial symbol") },
997constexpr TDEUnicodeData::Subcategory NumberForms[] = {
998 { 0x2150, I18N_NOOP(
"Fractions") },
999 { 0x2160, I18N_NOOP(
"Roman numerals") },
1000 { 0x2180, I18N_NOOP(
"Archaic Roman numerals") },
1001 { 0x2184, I18N_NOOP(
"Lowercase Claudian letter") },
1002 { 0x2185, I18N_NOOP(
"Archaic Roman numerals") },
1003 { 0x2189, I18N_NOOP(
"Fraction") },
1004 { 0x218A, I18N_NOOP(
"Turned digits") },
1007constexpr TDEUnicodeData::Subcategory Arrows[] = {
1008 { 0x2190, I18N_NOOP(
"Simple arrows") },
1009 { 0x219A, I18N_NOOP(
"Arrows with modifications") },
1010 { 0x21B0, I18N_NOOP(
"Arrows with bent tips") },
1011 { 0x21B4, I18N_NOOP(
"Keyboard symbols and circle arrows") },
1012 { 0x21BC, I18N_NOOP(
"Harpoons") },
1013 { 0x21C4, I18N_NOOP(
"Paired arrows and harpoons") },
1014 { 0x21CD, I18N_NOOP(
"Double arrows") },
1015 { 0x21DA, I18N_NOOP(
"Miscellaneous arrows and keyboard symbols") },
1016 { 0x21E6, I18N_NOOP(
"White arrows and keyboard symbols") },
1017 { 0x21F4, I18N_NOOP(
"Miscellaneous arrows") },
1020constexpr TDEUnicodeData::Subcategory MathematicalOperators[] = {
1021 { 0x2200, I18N_NOOP(
"Miscellaneous mathematical symbols") },
1022 { 0x2208, I18N_NOOP(
"Set membership") },
1023 { 0x220E, I18N_NOOP(
"Miscellaneous mathematical symbol") },
1024 { 0x220F, I18N_NOOP(
"N-ary operators") },
1025 { 0x2212, I18N_NOOP(
"Operators") },
1026 { 0x221E, I18N_NOOP(
"Miscellaneous mathematical symbol") },
1027 { 0x221F, I18N_NOOP(
"Angles") },
1028 { 0x2223, I18N_NOOP(
"Relations") },
1029 { 0x2227, I18N_NOOP(
"Logical and set operators") },
1030 { 0x222B, I18N_NOOP(
"Integrals") },
1031 { 0x2234, I18N_NOOP(
"Miscellaneous mathematical symbols") },
1032 { 0x2236, I18N_NOOP(
"Relations") },
1033 { 0x2238, I18N_NOOP(
"Operator") },
1034 { 0x2239, I18N_NOOP(
"Relation") },
1035 { 0x223A, I18N_NOOP(
"Operator") },
1036 { 0x223B, I18N_NOOP(
"Relations") },
1037 { 0x223F, I18N_NOOP(
"Miscellaneous mathematical symbol") },
1038 { 0x2240, I18N_NOOP(
"Operator") },
1039 { 0x2241, I18N_NOOP(
"Relations") },
1040 { 0x228C, I18N_NOOP(
"Operators") },
1041 { 0x228F, I18N_NOOP(
"Relations") },
1042 { 0x2293, I18N_NOOP(
"Operators") },
1043 { 0x22A4, I18N_NOOP(
"Miscellaneous mathematical symbols") },
1044 { 0x22A6, I18N_NOOP(
"Relations") },
1045 { 0x22BA, I18N_NOOP(
"Operators") },
1046 { 0x22BE, I18N_NOOP(
"Miscellaneous mathematical symbols") },
1047 { 0x22C0, I18N_NOOP(
"N-ary operators") },
1048 { 0x22C4, I18N_NOOP(
"Operators") },
1049 { 0x22C8, I18N_NOOP(
"Relation") },
1050 { 0x22C9, I18N_NOOP(
"Operators") },
1051 { 0x22CD, I18N_NOOP(
"Relation") },
1052 { 0x22CE, I18N_NOOP(
"Logical operators") },
1053 { 0x22D0, I18N_NOOP(
"Relations") },
1054 { 0x22D2, I18N_NOOP(
"Operators") },
1055 { 0x22D4, I18N_NOOP(
"Relations") },
1056 { 0x22EE, I18N_NOOP(
"Matrix ellipses") },
1057 { 0x22F2, I18N_NOOP(
"Relations") },
1060constexpr TDEUnicodeData::Subcategory MiscellaneousTechnical[] = {
1061 { 0x2300, I18N_NOOP(
"Miscellaneous technical") },
1062 { 0x2308, I18N_NOOP(
"Ceilings and floors") },
1063 { 0x230C, I18N_NOOP(
"Crops") },
1064 { 0x2310, I18N_NOOP(
"Miscellaneous technical") },
1065 { 0x231A, I18N_NOOP(
"User interface symbols") },
1066 { 0x231C, I18N_NOOP(
"Quine corners") },
1067 { 0x2320, I18N_NOOP(
"Integral pieces") },
1068 { 0x2322, I18N_NOOP(
"Frown and smile") },
1069 { 0x2324, I18N_NOOP(
"Keyboard symbols") },
1070 { 0x2329, I18N_NOOP(
"Deprecated angle brackets") },
1071 { 0x232B, I18N_NOOP(
"Keyboard symbol") },
1072 { 0x232C, I18N_NOOP(
"Chemistry symbol") },
1073 { 0x232D, I18N_NOOP(
"Drafting symbols") },
1074 { 0x2336, I18N_NOOP(
"APL") },
1075 { 0x237B, I18N_NOOP(
"Graphics for control codes") },
1076 { 0x237C, I18N_NOOP(
"Miscellaneous technical") },
1077 { 0x237D, I18N_NOOP(
"Graphics for control codes") },
1078 { 0x2380, I18N_NOOP(
"Keyboard symbols from ISO 9995-7") },
1079 { 0x238D, I18N_NOOP(
"Electrotechnical symbols from IR 181") },
1080 { 0x2395, I18N_NOOP(
"APL") },
1081 { 0x2396, I18N_NOOP(
"Keyboard symbols from ISO 9995-7") },
1082 { 0x239B, I18N_NOOP(
"Bracket pieces") },
1083 { 0x23AE, I18N_NOOP(
"Special character extensions") },
1084 { 0x23B0, I18N_NOOP(
"Bracket pieces") },
1085 { 0x23B2, I18N_NOOP(
"Summation sign parts") },
1086 { 0x23B4, I18N_NOOP(
"Horizontal brackets") },
1087 { 0x23B7, I18N_NOOP(
"Terminal graphic characters") },
1088 { 0x23BA, I18N_NOOP(
"Scan lines for terminal graphics") },
1089 { 0x23BE, I18N_NOOP(
"Dentistry notation symbols") },
1090 { 0x23CD, I18N_NOOP(
"Miscellaneous technical") },
1091 { 0x23CE, I18N_NOOP(
"Keyboard and UI symbols") },
1092 { 0x23D0, I18N_NOOP(
"Special character extension") },
1093 { 0x23D1, I18N_NOOP(
"Metrical symbols") },
1094 { 0x23DA, I18N_NOOP(
"Electrotechnical symbols") },
1095 { 0x23DC, I18N_NOOP(
"Horizontal brackets") },
1096 { 0x23E2, I18N_NOOP(
"Miscellaneous technical") },
1097 { 0x23E3, I18N_NOOP(
"Chemistry symbol") },
1098 { 0x23E4, I18N_NOOP(
"Miscellaneous technical") },
1099 { 0x23E9, I18N_NOOP(
"User interface symbols") },
1100 { 0x23FB, I18N_NOOP(
"Power symbols from ISO 7000:2012") },
1101 { 0x23FE, I18N_NOOP(
"Power symbol from IEEE 1621-2004") },
1102 { 0x23FF, I18N_NOOP(
"Miscellaneous symbol") },
1105constexpr TDEUnicodeData::Subcategory ControlPictures[] = {
1106 { 0x2400, I18N_NOOP(
"Graphic pictures for control codes") },
1107 { 0x2422, I18N_NOOP(
"Specific symbols for space") },
1108 { 0x2424, I18N_NOOP(
"Graphic picture for control code") },
1109 { 0x2425, I18N_NOOP(
"Keyboard symbol") },
1110 { 0x2426, I18N_NOOP(
"Specific symbol for control code") },
1111 { 0x2427, I18N_NOOP(
"Legacy computer symbols for delete") },
1114constexpr TDEUnicodeData::Subcategory OpticalCharacterRecognition[] = {
1115 { 0x2440, I18N_NOOP(
"OCR-A") },
1116 { 0x2446, I18N_NOOP(
"MICR") },
1117 { 0x244A, I18N_NOOP(
"OCR") },
1120constexpr TDEUnicodeData::Subcategory EnclosedAlphanumerics[] = {
1121 { 0x2460, I18N_NOOP(
"Circled numbers") },
1122 { 0x2474, I18N_NOOP(
"Parenthesized numbers") },
1123 { 0x2488, I18N_NOOP(
"Numbers period") },
1124 { 0x249C, I18N_NOOP(
"Parenthesized Latin letters") },
1125 { 0x24B6, I18N_NOOP(
"Circled Latin letters") },
1126 { 0x24EA, I18N_NOOP(
"Additional circled number") },
1127 { 0x24EB, I18N_NOOP(
"White on black circled numbers") },
1128 { 0x24F5, I18N_NOOP(
"Double circled numbers") },
1129 { 0x24FF, I18N_NOOP(
"Additional white on black circled number") },
1132constexpr TDEUnicodeData::Subcategory BoxDrawing[] = {
1133 { 0x2500, I18N_NOOP(
"Light and heavy solid lines") },
1134 { 0x2504, I18N_NOOP(
"Light and heavy dashed lines") },
1135 { 0x250C, I18N_NOOP(
"Light and heavy line box components") },
1136 { 0x254C, I18N_NOOP(
"Light and heavy dashed lines") },
1137 { 0x2550, I18N_NOOP(
"Double lines") },
1138 { 0x2552, I18N_NOOP(
"Light and double line box components") },
1139 { 0x256D, I18N_NOOP(
"Character cell arcs") },
1140 { 0x2571, I18N_NOOP(
"Character cell diagonals") },
1141 { 0x2574, I18N_NOOP(
"Light and heavy half lines") },
1142 { 0x257C, I18N_NOOP(
"Mixed light and heavy lines") },
1145constexpr TDEUnicodeData::Subcategory BlockElements[] = {
1146 { 0x2580, I18N_NOOP(
"Block elements") },
1147 { 0x2591, I18N_NOOP(
"Shade characters") },
1148 { 0x2594, I18N_NOOP(
"Block elements") },
1149 { 0x2596, I18N_NOOP(
"Terminal graphic characters") },
1152constexpr TDEUnicodeData::Subcategory GeometricShapes[] = {
1153 { 0x25A0, I18N_NOOP(
"Geometric shapes") },
1154 { 0x25F0, I18N_NOOP(
"Control code graphics") },
1155 { 0x25F8, I18N_NOOP(
"Geometric shapes") },
1158constexpr TDEUnicodeData::Subcategory MiscellaneousSymbols[] = {
1159 { 0x2600, I18N_NOOP(
"Weather and astrological symbols") },
1160 { 0x260E, I18N_NOOP(
"Miscellaneous symbols") },
1161 { 0x2614, I18N_NOOP(
"Weather symbol") },
1162 { 0x2615, I18N_NOOP(
"Miscellaneous symbol") },
1163 { 0x2616, I18N_NOOP(
"Japanese chess symbols") },
1164 { 0x2618, I18N_NOOP(
"Miscellaneous symbols") },
1165 { 0x261A, I18N_NOOP(
"Pointing hand symbols") },
1166 { 0x2620, I18N_NOOP(
"Warning signs") },
1167 { 0x2624, I18N_NOOP(
"Medical and healing symbols") },
1168 { 0x2626, I18N_NOOP(
"Religious and political symbols") },
1169 { 0x2630, I18N_NOOP(
"Yijing trigram symbols") },
1170 { 0x2638, I18N_NOOP(
"Miscellaneous symbol") },
1171 { 0x2639, I18N_NOOP(
"Emoticons") },
1172 { 0x263C, I18N_NOOP(
"Miscellaneous symbol") },
1173 { 0x263D, I18N_NOOP(
"Astrological symbols") },
1174 { 0x2648, I18N_NOOP(
"Zodiacal symbols") },
1175 { 0x2654, I18N_NOOP(
"Chess symbols") },
1176 { 0x2660, I18N_NOOP(
"Playing card symbols") },
1177 { 0x2668, I18N_NOOP(
"Miscellaneous symbol") },
1178 { 0x2669, I18N_NOOP(
"Musical symbols") },
1179 { 0x2670, I18N_NOOP(
"Syriac cross symbols") },
1180 { 0x2672, I18N_NOOP(
"Recycling symbols") },
1181 { 0x267E, I18N_NOOP(
"Miscellaneous symbols") },
1182 { 0x2680, I18N_NOOP(
"Dice") },
1183 { 0x2686, I18N_NOOP(
"Go markers") },
1184 { 0x268A, I18N_NOOP(
"Yijing monogram and digram symbols") },
1185 { 0x2690, I18N_NOOP(
"Dictionary and map symbols") },
1186 { 0x269C, I18N_NOOP(
"Miscellaneous symbols") },
1187 { 0x269E, I18N_NOOP(
"Symbols for closed captioning from ARIB STD B24") },
1188 { 0x26A0, I18N_NOOP(
"Miscellaneous symbols") },
1189 { 0x26A2, I18N_NOOP(
"Gender symbols") },
1190 { 0x26AA, I18N_NOOP(
"Circles") },
1191 { 0x26AD, I18N_NOOP(
"Genealogical symbols") },
1192 { 0x26B2, I18N_NOOP(
"Gender symbol") },
1193 { 0x26B3, I18N_NOOP(
"Astrological signs") },
1194 { 0x26B9, I18N_NOOP(
"Astrological aspects") },
1195 { 0x26BD, I18N_NOOP(
"Sport symbols") },
1196 { 0x26BF, I18N_NOOP(
"Miscellaneous symbol from ARIB STD B24") },
1197 { 0x26C0, I18N_NOOP(
"Symbols for draughts and checkers") },
1198 { 0x26C4, I18N_NOOP(
"Weather symbols from ARIB STD B24") },
1199 { 0x26C9, I18N_NOOP(
"Game symbols from ARIB STD B24") },
1200 { 0x26CC, I18N_NOOP(
"Traffic signs from ARIB STD B24") },
1201 { 0x26CE, I18N_NOOP(
"Zodiacal symbol") },
1202 { 0x26CF, I18N_NOOP(
"Traffic signs from ARIB STD B24") },
1203 { 0x26E2, I18N_NOOP(
"Astronomical symbol") },
1204 { 0x26E3, I18N_NOOP(
"Map symbol from ARIB STD B24") },
1205 { 0x26E4, I18N_NOOP(
"Pentagram symbols") },
1206 { 0x26E8, I18N_NOOP(
"Map symbols from ARIB STD B24") },
1209constexpr TDEUnicodeData::Subcategory Dingbats[] = {
1210 { 0x2700, I18N_NOOP(
"Miscellaneous") },
1211 { 0x2719, I18N_NOOP(
"Crosses") },
1212 { 0x2721, I18N_NOOP(
"Stars and asterisks") },
1213 { 0x273E, I18N_NOOP(
"Fleurons") },
1214 { 0x2742, I18N_NOOP(
"Stars, asterisks and snowflakes") },
1215 { 0x274C, I18N_NOOP(
"Miscellaneous") },
1216 { 0x275B, I18N_NOOP(
"Punctuation mark ornaments") },
1217 { 0x2766, I18N_NOOP(
"Fleurons") },
1218 { 0x2768, I18N_NOOP(
"Ornamental brackets") },
1219 { 0x2776, I18N_NOOP(
"Dingbat circled digits") },
1220 { 0x2794, I18N_NOOP(
"Dingbat arrow") },
1221 { 0x2795, I18N_NOOP(
"Heavy variants of arithmetic symbols") },
1222 { 0x2798, I18N_NOOP(
"Dingbat arrows") },
1223 { 0x27B0, I18N_NOOP(
"Miscellaneous") },
1224 { 0x27B1, I18N_NOOP(
"Dingbat arrows") },
1225 { 0x27BF, I18N_NOOP(
"Miscellaneous") },
1228constexpr TDEUnicodeData::Subcategory MiscellaneousMathematicalSymbolsA[] = {
1229 { 0x27C0, I18N_NOOP(
"Miscellaneous symbols") },
1230 { 0x27C5, I18N_NOOP(
"Paired punctuation") },
1231 { 0x27C7, I18N_NOOP(
"Operator") },
1232 { 0x27C8, I18N_NOOP(
"Miscellaneous symbols") },
1233 { 0x27CA, I18N_NOOP(
"Vertical line operator") },
1234 { 0x27CB, I18N_NOOP(
"Miscellaneous symbol") },
1235 { 0x27CC, I18N_NOOP(
"Division operator") },
1236 { 0x27CD, I18N_NOOP(
"Miscellaneous symbol") },
1237 { 0x27CE, I18N_NOOP(
"Operators") },
1238 { 0x27D0, I18N_NOOP(
"Miscellaneous symbol") },
1239 { 0x27D1, I18N_NOOP(
"Operators") },
1240 { 0x27D5, I18N_NOOP(
"Database theory operators") },
1241 { 0x27D8, I18N_NOOP(
"Tacks and turnstiles") },
1242 { 0x27E0, I18N_NOOP(
"Modal logic operators") },
1243 { 0x27E6, I18N_NOOP(
"Mathematical brackets") },
1246constexpr TDEUnicodeData::Subcategory SupplementalArrowsA[] = {
1247 { 0x27F0, I18N_NOOP(
"Arrows") },
1248 { 0x27F5, I18N_NOOP(
"Long arrows") },
1251constexpr TDEUnicodeData::Subcategory BraillePatterns[] = {
1252 { 0x2800, I18N_NOOP(
"Braille patterns") },
1255constexpr TDEUnicodeData::Subcategory SupplementalArrowsB[] = {
1256 { 0x2900, I18N_NOOP(
"Miscellaneous arrows") },
1257 { 0x2919, I18N_NOOP(
"Arrow tails") },
1258 { 0x291D, I18N_NOOP(
"Miscellaneous arrows") },
1259 { 0x2927, I18N_NOOP(
"Crossing arrows for knot theory") },
1260 { 0x2933, I18N_NOOP(
"Miscellaneous curved arrows") },
1261 { 0x2942, I18N_NOOP(
"Arrows combined with operators") },
1262 { 0x294A, I18N_NOOP(
"Double-barbed harpoons") },
1263 { 0x2952, I18N_NOOP(
"Modified harpoons") },
1264 { 0x2962, I18N_NOOP(
"Paired harpoons") },
1265 { 0x2970, I18N_NOOP(
"Miscellaneous arrow") },
1266 { 0x2971, I18N_NOOP(
"Arrows combined with relations") },
1267 { 0x297C, I18N_NOOP(
"Fish tails") },
1270constexpr TDEUnicodeData::Subcategory MiscellaneousMathematicalSymbolsB[] = {
1271 { 0x2980, I18N_NOOP(
"Miscellaneous mathematical symbols") },
1272 { 0x2983, I18N_NOOP(
"Brackets") },
1273 { 0x298D, I18N_NOOP(
"Brackets with ticks") },
1274 { 0x2991, I18N_NOOP(
"Brackets") },
1275 { 0x2999, I18N_NOOP(
"Fences") },
1276 { 0x299B, I18N_NOOP(
"Angles") },
1277 { 0x29B0, I18N_NOOP(
"Empty sets") },
1278 { 0x29B5, I18N_NOOP(
"Circle symbols") },
1279 { 0x29C4, I18N_NOOP(
"Square symbols") },
1280 { 0x29CA, I18N_NOOP(
"Triangle symbols") },
1281 { 0x29D1, I18N_NOOP(
"Bowtie symbols") },
1282 { 0x29D8, I18N_NOOP(
"Fences") },
1283 { 0x29DC, I18N_NOOP(
"Miscellaneous mathematical symbols") },
1284 { 0x29E3, I18N_NOOP(
"Relations") },
1285 { 0x29E7, I18N_NOOP(
"Miscellaneous mathematical symbols") },
1286 { 0x29EE, I18N_NOOP(
"Error bar symbols") },
1287 { 0x29F4, I18N_NOOP(
"Miscellaneous mathematical symbols") },
1288 { 0x29F8, I18N_NOOP(
"Large operators") },
1289 { 0x29FA, I18N_NOOP(
"Specialized plus sign operators") },
1290 { 0x29FC, I18N_NOOP(
"Brackets") },
1291 { 0x29FE, I18N_NOOP(
"Symbols used in game theory") },
1294constexpr TDEUnicodeData::Subcategory SupplementalMathematicalOperators[] = {
1295 { 0x2A00, I18N_NOOP(
"N-ary operators") },
1296 { 0x2A0A, I18N_NOOP(
"Summations and integrals") },
1297 { 0x2A1D, I18N_NOOP(
"Miscellaneous large operators") },
1298 { 0x2A22, I18N_NOOP(
"Plus and minus sign operators") },
1299 { 0x2A2F, I18N_NOOP(
"Multiplication and division sign operators") },
1300 { 0x2A39, I18N_NOOP(
"Miscellaneous mathematical operators") },
1301 { 0x2A40, I18N_NOOP(
"Intersections and unions") },
1302 { 0x2A51, I18N_NOOP(
"Logical ands and ors") },
1303 { 0x2A64, I18N_NOOP(
"Miscellaneous mathematical operators") },
1304 { 0x2A66, I18N_NOOP(
"Relational operators") },
1305 { 0x2ABD, I18N_NOOP(
"Subset and superset relations") },
1306 { 0x2AD9, I18N_NOOP(
"Forks") },
1307 { 0x2ADE, I18N_NOOP(
"Tacks and turnstiles") },
1308 { 0x2AEE, I18N_NOOP(
"Vertical line operators") },
1309 { 0x2AF6, I18N_NOOP(
"Miscellaneous mathematical operator") },
1310 { 0x2AF7, I18N_NOOP(
"Relations") },
1311 { 0x2AFC, I18N_NOOP(
"Operators") },
1314constexpr TDEUnicodeData::Subcategory MiscellaneousSymbolsandArrows[] = {
1315 { 0x2B00, I18N_NOOP(
"White and black arrows") },
1316 { 0x2B0E, I18N_NOOP(
"Arrows with bent tips") },
1317 { 0x2B12, I18N_NOOP(
"Squares") },
1318 { 0x2B16, I18N_NOOP(
"Diamonds") },
1319 { 0x2B1A, I18N_NOOP(
"Squares") },
1320 { 0x2B1F, I18N_NOOP(
"Pentagons") },
1321 { 0x2B21, I18N_NOOP(
"Hexagons") },
1322 { 0x2B24, I18N_NOOP(
"Circle") },
1323 { 0x2B25, I18N_NOOP(
"Diamonds and lozenges") },
1324 { 0x2B2C, I18N_NOOP(
"Ellipses") },
1325 { 0x2B30, I18N_NOOP(
"Mathematical arrows") },
1326 { 0x2B4D, I18N_NOOP(
"Miscellaneous arrow") },
1327 { 0x2B4E, I18N_NOOP(
"Intonation marks for Lithuanian dialectology") },
1328 { 0x2B50, I18N_NOOP(
"Stars") },
1329 { 0x2B53, I18N_NOOP(
"Pentagons") },
1330 { 0x2B55, I18N_NOOP(
"Traffic sign from ARIB STD B24") },
1331 { 0x2B56, I18N_NOOP(
"Dictionary and map symbols from ARIB STD B24") },
1332 { 0x2B5A, I18N_NOOP(
"Intonation marks for Lithuanian dialectology") },
1333 { 0x2B60, I18N_NOOP(
"Triangle-headed arrows") },
1334 { 0x2B7E, I18N_NOOP(
"Keyboard symbols") },
1335 { 0x2B80, I18N_NOOP(
"Paired triangle-headed arrows") },
1336 { 0x2B88, I18N_NOOP(
"Circled arrows") },
1337 { 0x2B8C, I18N_NOOP(
"Triangle-headed u-shaped arrows") },
1338 { 0x2B90, I18N_NOOP(
"Keyboard symbols") },
1339 { 0x2B94, I18N_NOOP(
"Miscellaneous arrow symbol") },
1340 { 0x2B95, I18N_NOOP(
"Black arrow") },
1341 { 0x2B96, I18N_NOOP(
"Symbol used in chess notation") },
1342 { 0x2B97, I18N_NOOP(
"Miscellaneous symbol") },
1343 { 0x2B98, I18N_NOOP(
"Arrowheads") },
1344 { 0x2BA0, I18N_NOOP(
"Triangle-headed arrows with bent tips") },
1345 { 0x2BA8, I18N_NOOP(
"Black curved arrows") },
1346 { 0x2BB0, I18N_NOOP(
"Ribbon arrows") },
1347 { 0x2BB8, I18N_NOOP(
"Keyboard symbols") },
1348 { 0x2BBA, I18N_NOOP(
"Symbols used in chess notation") },
1349 { 0x2BBD, I18N_NOOP(
"Geometric symbols") },
1350 { 0x2BC0, I18N_NOOP(
"Centred geometric shapes") },
1351 { 0x2BC9, I18N_NOOP(
"Astronomical symbol") },
1352 { 0x2BCA, I18N_NOOP(
"Half circles") },
1353 { 0x2BCC, I18N_NOOP(
"Cusp shapes") },
1354 { 0x2BD0, I18N_NOOP(
"Miscellaneous symbols") },
1355 { 0x2BD3, I18N_NOOP(
"Astrological symbols for Pluto") },
1356 { 0x2BD7, I18N_NOOP(
"Miscellaneous astrological symbols") },
1357 { 0x2BE0, I18N_NOOP(
"Uranian astrological symbols") },
1358 { 0x2BE8, I18N_NOOP(
"Half star characters") },
1359 { 0x2BEC, I18N_NOOP(
"Two-headed arrow symbols") },
1360 { 0x2BF0, I18N_NOOP(
"Astrological symbols for Eris and Sedna") },
1361 { 0x2BF3, I18N_NOOP(
"Russian astrological aspects") },
1362 { 0x2BF9, I18N_NOOP(
"Symbols used in chess notation") },
1363 { 0x2BFF, I18N_NOOP(
"Miscellaneous symbol") },
1366constexpr TDEUnicodeData::Subcategory Glagolitic[] = {
1367 { 0x2C00, I18N_NOOP(
"Capital letters") },
1368 { 0x2C30, I18N_NOOP(
"Small letters") },
1371constexpr TDEUnicodeData::Subcategory LatinExtendedC[] = {
1372 { 0x2C60, I18N_NOOP(
"Orthographic Latin additions") },
1373 { 0x2C67, I18N_NOOP(
"Additions for Uyghur") },
1374 { 0x2C6D, I18N_NOOP(
"Miscellaneous additions") },
1375 { 0x2C75, I18N_NOOP(
"Claudian letters") },
1376 { 0x2C77, I18N_NOOP(
"Additions for UPA") },
1377 { 0x2C7E, I18N_NOOP(
"Additions for Shona") },
1380constexpr TDEUnicodeData::Subcategory Coptic[] = {
1381 { 0x2C80, I18N_NOOP(
"Bohairic Coptic letters") },
1382 { 0x2CB2, I18N_NOOP(
"Old Coptic and dialect letters") },
1383 { 0x2CDC, I18N_NOOP(
"Old Nubian letters") },
1384 { 0x2CE4, I18N_NOOP(
"Symbols") },
1385 { 0x2CEB, I18N_NOOP(
"Cryptogrammic letters") },
1386 { 0x2CEF, I18N_NOOP(
"Combining marks") },
1387 { 0x2CF2, I18N_NOOP(
"Bohairic Coptic letters") },
1388 { 0x2CF9, I18N_NOOP(
"Old Nubian punctuation") },
1389 { 0x2CFD, I18N_NOOP(
"Numeric character") },
1390 { 0x2CFE, I18N_NOOP(
"Punctuation") },
1393constexpr TDEUnicodeData::Subcategory GeorgianSupplement[] = {
1394 { 0x2D00, I18N_NOOP(
"Small letters (Khutsuri)") },
1395 { 0x2D27, I18N_NOOP(
"Additional letter") },
1396 { 0x2D2D, I18N_NOOP(
"Additional letter for Ossetian") },
1399constexpr TDEUnicodeData::Subcategory Tifinagh[] = {
1400 { 0x2D30, I18N_NOOP(
"Letters") },
1401 { 0x2D6F, I18N_NOOP(
"Modifier letter") },
1402 { 0x2D70, I18N_NOOP(
"Punctuation") },
1403 { 0x2D7F, I18N_NOOP(
"Sign") },
1406constexpr TDEUnicodeData::Subcategory EthiopicExtended[] = {
1407 { 0x2D80, I18N_NOOP(
"Syllables for Me'en") },
1408 { 0x2D93, I18N_NOOP(
"Syllables for Blin") },
1409 { 0x2DA0, I18N_NOOP(
"Syllables for Bench") },
1410 { 0x2DC0, I18N_NOOP(
"Syllables for Gurage") },
1413constexpr TDEUnicodeData::Subcategory CyrillicExtendedA[] = {
1414 { 0x2DE0, I18N_NOOP(
"Old Church Slavonic combining letters") },
1417constexpr TDEUnicodeData::Subcategory SupplementalPunctuation[] = {
1418 { 0x2E00, I18N_NOOP(
"New Testament editorial symbols") },
1419 { 0x2E0E, I18N_NOOP(
"Ancient Greek textual symbols") },
1420 { 0x2E17, I18N_NOOP(
"Ancient Near-Eastern linguistic symbol") },
1421 { 0x2E18, I18N_NOOP(
"General punctuation") },
1422 { 0x2E1A, I18N_NOOP(
"Dictionary punctuation") },
1423 { 0x2E1C, I18N_NOOP(
"Brackets") },
1424 { 0x2E1E, I18N_NOOP(
"Dictionary punctuation") },
1425 { 0x2E20, I18N_NOOP(
"Brackets") },
1426 { 0x2E22, I18N_NOOP(
"Half brackets") },
1427 { 0x2E26, I18N_NOOP(
"Brackets") },
1428 { 0x2E2A, I18N_NOOP(
"Historic punctuation") },
1429 { 0x2E32, I18N_NOOP(
"Palaeotype transliteration symbol") },
1430 { 0x2E33, I18N_NOOP(
"Historic punctuation") },
1431 { 0x2E35, I18N_NOOP(
"Palaeotype transliteration symbols") },
1432 { 0x2E3A, I18N_NOOP(
"Dashes") },
1433 { 0x2E3C, I18N_NOOP(
"Alternate forms of punctuation") },
1434 { 0x2E3F, I18N_NOOP(
"Historic punctuation") },
1435 { 0x2E40, I18N_NOOP(
"Double hyphen") },
1436 { 0x2E41, I18N_NOOP(
"Reversed punctuation") },
1437 { 0x2E43, I18N_NOOP(
"Miscellaneous punctuation") },
1438 { 0x2E45, I18N_NOOP(
"Typicon punctuation") },
1439 { 0x2E4A, I18N_NOOP(
"Historic punctuation") },
1440 { 0x2E55, I18N_NOOP(
"Brackets") },
1441 { 0x2E59, I18N_NOOP(
"Parentheses top and bottom halves") },
1442 { 0x2E5D, I18N_NOOP(
"Oblique hyphen") },
1445constexpr TDEUnicodeData::Subcategory CJKRadicalsSupplement[] = {
1446 { 0x2E80, I18N_NOOP(
"CJK radicals supplement") },
1449constexpr TDEUnicodeData::Subcategory KangxiRadicals[] = {
1450 { 0x2F00, I18N_NOOP(
"Kangxi radicals") },
1453constexpr TDEUnicodeData::Subcategory IdeographicDescriptionCharacters[] = {
1454 { 0x2FF0, I18N_NOOP(
"Ideographic description characters") },
1457constexpr TDEUnicodeData::Subcategory CJKSymbolsandPunctuation[] = {
1458 { 0x3000, I18N_NOOP(
"CJK symbols and punctuation") },
1459 { 0x3008, I18N_NOOP(
"CJK angle brackets") },
1460 { 0x300C, I18N_NOOP(
"CJK corner brackets") },
1461 { 0x3010, I18N_NOOP(
"CJK brackets") },
1462 { 0x3012, I18N_NOOP(
"CJK symbols") },
1463 { 0x3014, I18N_NOOP(
"CJK brackets") },
1464 { 0x301C, I18N_NOOP(
"CJK punctuation") },
1465 { 0x3020, I18N_NOOP(
"CJK symbol") },
1466 { 0x3021, I18N_NOOP(
"Suzhou numerals") },
1467 { 0x302A, I18N_NOOP(
"Combining tone marks") },
1468 { 0x3030, I18N_NOOP(
"Other CJK punctuation") },
1469 { 0x3031, I18N_NOOP(
"Kana repeat marks") },
1470 { 0x3036, I18N_NOOP(
"Other CJK symbols") },
1471 { 0x3038, I18N_NOOP(
"Additional Suzhou numerals") },
1472 { 0x303B, I18N_NOOP(
"Other CJK punctuation") },
1473 { 0x303E, I18N_NOOP(
"Special CJK indicators") },
1476constexpr TDEUnicodeData::Subcategory Hiragana[] = {
1477 { 0x3041, I18N_NOOP(
"Hiragana letters") },
1478 { 0x3095, I18N_NOOP(
"Small letters") },
1479 { 0x3099, I18N_NOOP(
"Voicing marks") },
1480 { 0x309D, I18N_NOOP(
"Iteration marks") },
1481 { 0x309F, I18N_NOOP(
"Hiragana digraph") },
1484constexpr TDEUnicodeData::Subcategory Katakana[] = {
1485 { 0x30A0, I18N_NOOP(
"Katakana punctuation") },
1486 { 0x30A1, I18N_NOOP(
"Katakana letters") },
1487 { 0x30FB, I18N_NOOP(
"Conjunction and length marks") },
1488 { 0x30FD, I18N_NOOP(
"Iteration marks") },
1489 { 0x30FF, I18N_NOOP(
"Katakana digraph") },
1492constexpr TDEUnicodeData::Subcategory Bopomofo[] = {
1493 { 0x3105, I18N_NOOP(
"Based on GB 2312") },
1494 { 0x312A, I18N_NOOP(
"Dialect (non-Mandarin) letters") },
1495 { 0x312D, I18N_NOOP(
"Miscellaneous additions") },
1498constexpr TDEUnicodeData::Subcategory HangulCompatibilityJamo[] = {
1499 { 0x3131, I18N_NOOP(
"Consonant letters") },
1500 { 0x314F, I18N_NOOP(
"Vowel letters") },
1501 { 0x3164, I18N_NOOP(
"Special character") },
1502 { 0x3165, I18N_NOOP(
"Old consonant letters") },
1503 { 0x3187, I18N_NOOP(
"Old vowel letters") },
1506constexpr TDEUnicodeData::Subcategory Kanbun[] = {
1507 { 0x3190, I18N_NOOP(
"Tateten") },
1508 { 0x3191, I18N_NOOP(
"Kaeriten") },
1511constexpr TDEUnicodeData::Subcategory BopomofoExtended[] = {
1512 { 0x31A0, I18N_NOOP(
"Extended Bopomofo for Minnan and Hakka") },
1513 { 0x31B8, I18N_NOOP(
"Extended Bopomofo for Hmu and Ge") },
1514 { 0x31BB, I18N_NOOP(
"Extended Bopomofo for Minnan and Hakka") },
1515 { 0x31BC, I18N_NOOP(
"Extended Bopomofo for Cantonese") },
1518constexpr TDEUnicodeData::Subcategory CJKStrokes[] = {
1519 { 0x31C0, I18N_NOOP(
"CJK strokes") },
1520 { 0x31EF, I18N_NOOP(
"Ideographic description character") },
1523constexpr TDEUnicodeData::Subcategory KatakanaPhoneticExtensions[] = {
1524 { 0x31F0, I18N_NOOP(
"Phonetic extensions for Ainu") },
1527constexpr TDEUnicodeData::Subcategory EnclosedCJKLettersandMonths[] = {
1528 { 0x3200, I18N_NOOP(
"Parenthesized Hangul letters") },
1529 { 0x320E, I18N_NOOP(
"Parenthesized Hangul syllables") },
1530 { 0x321D, I18N_NOOP(
"Parenthesized Korean words") },
1531 { 0x3220, I18N_NOOP(
"Parenthesized ideographs") },
1532 { 0x3244, I18N_NOOP(
"Circled ideographs from ARIB STD B24") },
1533 { 0x3248, I18N_NOOP(
"Circled numbers on black squares from ARIB STD B24") },
1534 { 0x3250, I18N_NOOP(
"Squared Latin abbreviation") },
1535 { 0x3251, I18N_NOOP(
"Circled numbers") },
1536 { 0x3260, I18N_NOOP(
"Circled Hangul letters") },
1537 { 0x326E, I18N_NOOP(
"Circled Hangul syllables") },
1538 { 0x327C, I18N_NOOP(
"Circled Korean words") },
1539 { 0x327E, I18N_NOOP(
"Circled Hangul syllable") },
1540 { 0x327F, I18N_NOOP(
"Symbol") },
1541 { 0x3280, I18N_NOOP(
"Circled ideographs") },
1542 { 0x32B1, I18N_NOOP(
"Circled numbers") },
1543 { 0x32C0, I18N_NOOP(
"Telegraph symbols for months") },
1544 { 0x32CC, I18N_NOOP(
"Squared Latin abbreviations") },
1545 { 0x32D0, I18N_NOOP(
"Circled Katakana") },
1546 { 0x32FF, I18N_NOOP(
"Japanese era name") },
1549constexpr TDEUnicodeData::Subcategory CJKCompatibility[] = {
1550 { 0x3300, I18N_NOOP(
"Squared Katakana words") },
1551 { 0x3358, I18N_NOOP(
"Telegraph symbols for hours") },
1552 { 0x3371, I18N_NOOP(
"Squared Latin abbreviations") },
1553 { 0x337B, I18N_NOOP(
"Japanese era names") },
1554 { 0x337F, I18N_NOOP(
"Japanese corporation") },
1555 { 0x3380, I18N_NOOP(
"Squared Latin abbreviations") },
1556 { 0x3395, I18N_NOOP(
"Abbreviations involving liter symbols") },
1557 { 0x3399, I18N_NOOP(
"Squared Latin abbreviations") },
1558 { 0x33E0, I18N_NOOP(
"Telegraph symbols for days") },
1559 { 0x33FF, I18N_NOOP(
"Squared Latin abbreviation") },
1562constexpr TDEUnicodeData::Subcategory CJKUnifiedIdeographsExtensionA[] = {
1565constexpr TDEUnicodeData::Subcategory YijingHexagramSymbols[] = {
1566 { 0x4DC0, I18N_NOOP(
"Yijing hexagram symbols") },
1569constexpr TDEUnicodeData::Subcategory CJKUnifiedIdeographs[] = {
1572constexpr TDEUnicodeData::Subcategory YiSyllables[] = {
1573 { 0xA000, I18N_NOOP(
"Syllables") },
1574 { 0xA015, I18N_NOOP(
"Syllable iteration mark") },
1575 { 0xA016, I18N_NOOP(
"Syllables") },
1578constexpr TDEUnicodeData::Subcategory YiRadicals[] = {
1579 { 0xA490, I18N_NOOP(
"Yi radicals") },
1582constexpr TDEUnicodeData::Subcategory Lisu[] = {
1583 { 0xA4D0, I18N_NOOP(
"Consonants") },
1584 { 0xA4EE, I18N_NOOP(
"Vowels") },
1585 { 0xA4F8, I18N_NOOP(
"Tones") },
1586 { 0xA4FE, I18N_NOOP(
"Punctuation") },
1589constexpr TDEUnicodeData::Subcategory Vai[] = {
1590 { 0xA500, I18N_NOOP(
"Syllables in -ee") },
1591 { 0xA524, I18N_NOOP(
"Syllables in -i") },
1592 { 0xA549, I18N_NOOP(
"Syllables in -a") },
1593 { 0xA571, I18N_NOOP(
"Syllables in -oo") },
1594 { 0xA595, I18N_NOOP(
"Syllables in -u") },
1595 { 0xA5BA, I18N_NOOP(
"Syllables in -o") },
1596 { 0xA5E1, I18N_NOOP(
"Syllables in -e") },
1597 { 0xA60B, I18N_NOOP(
"Syllable finals") },
1598 { 0xA60D, I18N_NOOP(
"Punctuation") },
1599 { 0xA610, I18N_NOOP(
"Historic syllables") },
1600 { 0xA613, I18N_NOOP(
"Logograms") },
1601 { 0xA620, I18N_NOOP(
"Digits") },
1602 { 0xA62A, I18N_NOOP(
"Historic syllables") },
1605constexpr TDEUnicodeData::Subcategory CyrillicExtendedB[] = {
1606 { 0xA640, I18N_NOOP(
"Letters for Old Cyrillic") },
1607 { 0xA66F, I18N_NOOP(
"Abbreviation mark") },
1608 { 0xA670, I18N_NOOP(
"Combining numeric signs") },
1609 { 0xA673, I18N_NOOP(
"Punctuation mark") },
1610 { 0xA674, I18N_NOOP(
"Combining marks for Old Cyrillic") },
1611 { 0xA67E, I18N_NOOP(
"Punctuation mark") },
1612 { 0xA67F, I18N_NOOP(
"Modifier letter") },
1613 { 0xA680, I18N_NOOP(
"Letters for Old Abkhasian orthography") },
1614 { 0xA698, I18N_NOOP(
"Letters for Old Cyrillic") },
1615 { 0xA69C, I18N_NOOP(
"Intonation marks for Lithuanian dialectology") },
1616 { 0xA69E, I18N_NOOP(
"Combining marks for Old Cyrillic") },
1619constexpr TDEUnicodeData::Subcategory Bamum[] = {
1620 { 0xA6A0, I18N_NOOP(
"Syllables") },
1621 { 0xA6F0, I18N_NOOP(
"Combining marks") },
1622 { 0xA6F2, I18N_NOOP(
"Punctuation") },
1625constexpr TDEUnicodeData::Subcategory ModifierToneLetters[] = {
1626 { 0xA700, I18N_NOOP(
"Corner tone marks for Chinese") },
1627 { 0xA708, I18N_NOOP(
"Dotted tone letters") },
1628 { 0xA712, I18N_NOOP(
"Left-stem tone letters") },
1629 { 0xA717, I18N_NOOP(
"Chinantec tone marks") },
1630 { 0xA71B, I18N_NOOP(
"Africanist tone letters") },
1633constexpr TDEUnicodeData::Subcategory LatinExtendedD[] = {
1634 { 0xA720, I18N_NOOP(
"Additions for UPA") },
1635 { 0xA722, I18N_NOOP(
"Egyptological additions") },
1636 { 0xA726, I18N_NOOP(
"Mayanist additions") },
1637 { 0xA730, I18N_NOOP(
"Medievalist additions") },
1638 { 0xA779, I18N_NOOP(
"Insular and Celticist letters") },
1639 { 0xA788, I18N_NOOP(
"Modifier letters") },
1640 { 0xA78B, I18N_NOOP(
"Orthographic letters for glottals") },
1641 { 0xA78D, I18N_NOOP(
"Additional letter") },
1642 { 0xA78E, I18N_NOOP(
"Phonetic symbol") },
1643 { 0xA78F, I18N_NOOP(
"Transliteration letter for sinology") },
1644 { 0xA790, I18N_NOOP(
"Additional letters") },
1645 { 0xA794, I18N_NOOP(
"Additions for Lithuanian dialectology") },
1646 { 0xA796, I18N_NOOP(
"Letters for Middle Vietnamese") },
1647 { 0xA798, I18N_NOOP(
"Archaic letters for Ewe") },
1648 { 0xA79A, I18N_NOOP(
"Archaic letters for Volapük") },
1649 { 0xA7A0, I18N_NOOP(
"Letters for pre-1921 Latvian orthography") },
1650 { 0xA7AA, I18N_NOOP(
"Additional letters") },
1651 { 0xA7AE, I18N_NOOP(
"Letter for West African languages") },
1652 { 0xA7AF, I18N_NOOP(
"Letter for Japanese phonemic transcription") },
1653 { 0xA7B0, I18N_NOOP(
"Letters for Americanist orthographies") },
1654 { 0xA7B2, I18N_NOOP(
"Letter for African languages") },
1655 { 0xA7B3, I18N_NOOP(
"Letter for German dialectology") },
1656 { 0xA7B4, I18N_NOOP(
"Letters for African languages") },
1657 { 0xA7B8, I18N_NOOP(
"Letters for Mazahua (México)") },
1658 { 0xA7BA, I18N_NOOP(
"Letters for Ugaritic and Egyptological transliteration") },
1659 { 0xA7C0, I18N_NOOP(
"Additional medieval letters") },
1660 { 0xA7C4, I18N_NOOP(
"Letters used in early Pinyin romanization") },
1661 { 0xA7C7, I18N_NOOP(
"Additional letters for Gaulish") },
1662 { 0xA7CB, I18N_NOOP(
"Letter for Eastern Dan") },
1663 { 0xA7CC, I18N_NOOP(
"Letters for Luiseño") },
1664 { 0xA7CE, I18N_NOOP(
"Cased voiced pharyngeal letters") },
1665 { 0xA7D0, I18N_NOOP(
"Letters used in the Middle English Ormulum") },
1666 { 0xA7D6, I18N_NOOP(
"Letters used in medieval palaeography") },
1667 { 0xA7DA, I18N_NOOP(
"Letters used in Wakashan and Salishan languages") },
1668 { 0xA7F1, I18N_NOOP(
"Modifier letters for Chatino (México)") },
1669 { 0xA7F4, I18N_NOOP(
"Modifier letter for Japanese phonemic transcription") },
1670 { 0xA7F5, I18N_NOOP(
"Ancient Gaulish and Celtic epigraphic letters") },
1671 { 0xA7F8, I18N_NOOP(
"Additions for Extended IPA") },
1672 { 0xA7FA, I18N_NOOP(
"Addition for UPA") },
1673 { 0xA7FB, I18N_NOOP(
"Ancient Roman epigraphic letters") },
1676constexpr TDEUnicodeData::Subcategory SylotiNagri[] = {
1677 { 0xA800, I18N_NOOP(
"Independent vowels and dvisvara") },
1678 { 0xA806, I18N_NOOP(
"Sign") },
1679 { 0xA807, I18N_NOOP(
"Consonants and consonant signs") },
1680 { 0xA823, I18N_NOOP(
"Dependent vowel signs") },
1681 { 0xA828, I18N_NOOP(
"Poetry marks") },
1682 { 0xA82C, I18N_NOOP(
"Sign") },
1685constexpr TDEUnicodeData::Subcategory CommonIndicNumberForms[] = {
1686 { 0xA830, I18N_NOOP(
"Number forms") },
1687 { 0xA837, I18N_NOOP(
"Miscellaneous sign") },
1688 { 0xA838, I18N_NOOP(
"Currency symbol") },
1689 { 0xA839, I18N_NOOP(
"Miscellaneous sign") },
1692constexpr TDEUnicodeData::Subcategory Phagspa[] = {
1693 { 0xA840, I18N_NOOP(
"Consonants") },
1694 { 0xA85D, I18N_NOOP(
"Letter A") },
1695 { 0xA85E, I18N_NOOP(
"Vowels") },
1696 { 0xA862, I18N_NOOP(
"Consonants") },
1697 { 0xA866, I18N_NOOP(
"Vowel") },
1698 { 0xA867, I18N_NOOP(
"Subjoined consonants") },
1699 { 0xA869, I18N_NOOP(
"Consonant additions for Sanskrit") },
1700 { 0xA86D, I18N_NOOP(
"Alternate consonant forms for Chinese") },
1701 { 0xA871, I18N_NOOP(
"Subjoined consonant") },
1702 { 0xA872, I18N_NOOP(
"Consonant addition for Tibetan") },
1703 { 0xA873, I18N_NOOP(
"Candrabindu") },
1704 { 0xA874, I18N_NOOP(
"Head marks for Tibetan") },
1705 { 0xA876, I18N_NOOP(
"Punctuation for Tibetan") },
1708constexpr TDEUnicodeData::Subcategory Saurashtra[] = {
1709 { 0xA880, I18N_NOOP(
"Various signs") },
1710 { 0xA882, I18N_NOOP(
"Independent vowels") },
1711 { 0xA892, I18N_NOOP(
"Consonants") },
1712 { 0xA8B5, I18N_NOOP(
"Dependent vowel signs") },
1713 { 0xA8C4, I18N_NOOP(
"Virama") },
1714 { 0xA8C5, I18N_NOOP(
"Sign") },
1715 { 0xA8CE, I18N_NOOP(
"Punctuation") },
1716 { 0xA8D0, I18N_NOOP(
"Digits") },
1719constexpr TDEUnicodeData::Subcategory DevanagariExtended[] = {
1720 { 0xA8E0, I18N_NOOP(
"Cantillation marks (svara) for the Samaveda") },
1721 { 0xA8F2, I18N_NOOP(
"Marks of nasalization") },
1722 { 0xA8F8, I18N_NOOP(
"Editorial marks") },
1723 { 0xA8FC, I18N_NOOP(
"Signs") },
1724 { 0xA8FE, I18N_NOOP(
"Additional vowel and vowel sign") },
1727constexpr TDEUnicodeData::Subcategory KayahLi[] = {
1728 { 0xA900, I18N_NOOP(
"Digits") },
1729 { 0xA90A, I18N_NOOP(
"Consonants") },
1730 { 0xA922, I18N_NOOP(
"Vowels") },
1731 { 0xA92B, I18N_NOOP(
"Tone marks") },
1732 { 0xA92E, I18N_NOOP(
"Punctuation") },
1735constexpr TDEUnicodeData::Subcategory Rejang[] = {
1736 { 0xA930, I18N_NOOP(
"Consonants") },
1737 { 0xA947, I18N_NOOP(
"Vowel signs") },
1738 { 0xA94F, I18N_NOOP(
"Consonant signs") },
1739 { 0xA953, I18N_NOOP(
"Virama") },
1740 { 0xA95F, I18N_NOOP(
"Punctuation") },
1743constexpr TDEUnicodeData::Subcategory HangulJamoExtendedA[] = {
1744 { 0xA960, I18N_NOOP(
"Old initial consonants") },
1747constexpr TDEUnicodeData::Subcategory Javanese[] = {
1748 { 0xA980, I18N_NOOP(
"Various signs") },
1749 { 0xA984, I18N_NOOP(
"Letters") },
1750 { 0xA9B3, I18N_NOOP(
"Sign") },
1751 { 0xA9B4, I18N_NOOP(
"Dependent vowel signs") },
1752 { 0xA9BD, I18N_NOOP(
"Dependent consonant signs") },
1753 { 0xA9C0, I18N_NOOP(
"Sign") },
1754 { 0xA9C1, I18N_NOOP(
"Punctuation") },
1755 { 0xA9CF, I18N_NOOP(
"Syllable reduplicator") },
1756 { 0xA9D0, I18N_NOOP(
"Digits") },
1757 { 0xA9DE, I18N_NOOP(
"Ellipsis marks") },
1760constexpr TDEUnicodeData::Subcategory MyanmarExtendedB[] = {
1761 { 0xA9E0, I18N_NOOP(
"Additions for Shan Pali") },
1762 { 0xA9E6, I18N_NOOP(
"Reduplication mark") },
1763 { 0xA9E7, I18N_NOOP(
"Tai Laing consonants") },
1764 { 0xA9F0, I18N_NOOP(
"Tai Laing digits") },
1765 { 0xA9FA, I18N_NOOP(
"Tai Laing consonants") },
1768constexpr TDEUnicodeData::Subcategory Cham[] = {
1769 { 0xAA00, I18N_NOOP(
"Independent vowels") },
1770 { 0xAA06, I18N_NOOP(
"Consonants") },
1771 { 0xAA29, I18N_NOOP(
"Dependent vowel signs") },
1772 { 0xAA33, I18N_NOOP(
"Consonant signs") },
1773 { 0xAA40, I18N_NOOP(
"Final consonants") },
1774 { 0xAA50, I18N_NOOP(
"Digits") },
1775 { 0xAA5C, I18N_NOOP(
"Punctuation") },
1778constexpr TDEUnicodeData::Subcategory MyanmarExtendedA[] = {
1779 { 0xAA60, I18N_NOOP(
"Khamti Shan consonants") },
1780 { 0xAA74, I18N_NOOP(
"Khamti Shan logograms") },
1781 { 0xAA77, I18N_NOOP(
"Aiton symbols and letters") },
1782 { 0xAA7B, I18N_NOOP(
"Pa'o Karen tone mark") },
1783 { 0xAA7C, I18N_NOOP(
"Tai Laing tone marks") },
1784 { 0xAA7E, I18N_NOOP(
"Shwe Palaung letters") },
1787constexpr TDEUnicodeData::Subcategory TaiViet[] = {
1788 { 0xAA80, I18N_NOOP(
"Consonants") },
1789 { 0xAAB0, I18N_NOOP(
"Vowels and finals") },
1790 { 0xAABF, I18N_NOOP(
"Tones") },
1791 { 0xAADB, I18N_NOOP(
"Word ligature symbols") },
1792 { 0xAADD, I18N_NOOP(
"Repetition mark") },
1793 { 0xAADE, I18N_NOOP(
"Punctuation") },
1796constexpr TDEUnicodeData::Subcategory MeeteiMayekExtensions[] = {
1797 { 0xAAE0, I18N_NOOP(
"Independent vowel signs") },
1798 { 0xAAE2, I18N_NOOP(
"Consonants") },
1799 { 0xAAEB, I18N_NOOP(
"Dependent vowel signs") },
1800 { 0xAAF0, I18N_NOOP(
"Punctuation") },
1801 { 0xAAF2, I18N_NOOP(
"Sign") },
1802 { 0xAAF3, I18N_NOOP(
"Repetition marks") },
1803 { 0xAAF5, I18N_NOOP(
"Sign") },
1804 { 0xAAF6, I18N_NOOP(
"Virama") },
1807constexpr TDEUnicodeData::Subcategory EthiopicExtendedA[] = {
1808 { 0xAB01, I18N_NOOP(
"Gamo-Gofa-Dawro and Basketo") },
1809 { 0xAB11, I18N_NOOP(
"Gamo-Gofa-Dawro") },
1810 { 0xAB20, I18N_NOOP(
"Gumuz") },
1813constexpr TDEUnicodeData::Subcategory LatinExtendedE[] = {
1814 { 0xAB30, I18N_NOOP(
"Letters for German dialectology") },
1815 { 0xAB5B, I18N_NOOP(
"Modifier letters for German dialectology") },
1816 { 0xAB60, I18N_NOOP(
"Historic letters for Sakha (Yakut)") },
1817 { 0xAB64, I18N_NOOP(
"Letters for Americanist orthographies") },
1818 { 0xAB66, I18N_NOOP(
"Letters for sinological and Tibetanist phonetic transcription") },
1819 { 0xAB68, I18N_NOOP(
"Letters for Scots dialectology") },
1822constexpr TDEUnicodeData::Subcategory CherokeeSupplement[] = {
1823 { 0xAB70, I18N_NOOP(
"Lowercase syllables") },
1826constexpr TDEUnicodeData::Subcategory MeeteiMayek[] = {
1827 { 0xABC0, I18N_NOOP(
"Letters") },
1828 { 0xABDB, I18N_NOOP(
"Final consonants") },
1829 { 0xABE3, I18N_NOOP(
"Dependent vowel signs") },
1830 { 0xABEB, I18N_NOOP(
"Punctuation") },
1831 { 0xABF0, I18N_NOOP(
"Digits") },
1834constexpr TDEUnicodeData::Subcategory HangulSyllables[] = {
1837constexpr TDEUnicodeData::Subcategory HangulJamoExtendedB[] = {
1838 { 0xD7B0, I18N_NOOP(
"Old medial vowels") },
1839 { 0xD7CB, I18N_NOOP(
"Old final consonants") },
1842constexpr TDEUnicodeData::Subcategory HighSurrogates[] = {
1845constexpr TDEUnicodeData::Subcategory HighPrivateUseSurrogates[] = {
1848constexpr TDEUnicodeData::Subcategory LowSurrogates[] = {
1851constexpr TDEUnicodeData::Subcategory PrivateUseArea[] = {
1854constexpr TDEUnicodeData::Subcategory CJKCompatibilityIdeographs[] = {
1855 { 0xF900, I18N_NOOP(
"Pronunciation variants from KS X 1001:1998") },
1856 { 0xFA0C, I18N_NOOP(
"Duplicate characters from Big 5") },
1857 { 0xFA0E, I18N_NOOP(
"The IBM 32 compatibility ideographs") },
1858 { 0xFA2E, I18N_NOOP(
"Korean compatibility ideographs") },
1859 { 0xFA30, I18N_NOOP(
"JIS X 0213 compatibility ideographs") },
1860 { 0xFA6B, I18N_NOOP(
"ARIB compatibility ideographs") },
1861 { 0xFA70, I18N_NOOP(
"DPRK compatibility ideographs") },
1864constexpr TDEUnicodeData::Subcategory AlphabeticPresentationForms[] = {
1865 { 0xFB00, I18N_NOOP(
"Latin ligatures") },
1866 { 0xFB13, I18N_NOOP(
"Armenian ligatures") },
1867 { 0xFB1D, I18N_NOOP(
"Hebrew presentation forms") },
1870constexpr TDEUnicodeData::Subcategory ArabicPresentationFormsA[] = {
1871 { 0xFB50, I18N_NOOP(
"Glyphs for contextual forms of letters for Persian, Urdu, Sindhi, etc.") },
1872 { 0xFBB2, I18N_NOOP(
"Arabic pedagogical symbols") },
1873 { 0xFBC3, I18N_NOOP(
"Honorific word ligatures") },
1874 { 0xFBD3, I18N_NOOP(
"Glyphs for contextual forms of letters for Central Asian languages") },
1875 { 0xFBEA, I18N_NOOP(
"Ligatures (two elements)") },
1876 { 0xFD3E, I18N_NOOP(
"Punctuation") },
1877 { 0xFD40, I18N_NOOP(
"Honorific word ligatures") },
1878 { 0xFD50, I18N_NOOP(
"Ligatures (three elements)") },
1879 { 0xFD90, I18N_NOOP(
"Honorific word ligatures") },
1880 { 0xFD92, I18N_NOOP(
"Ligatures (three elements)") },
1881 { 0xFDC8, I18N_NOOP(
"Honorific word ligatures") },
1882 { 0xFDD0, I18N_NOOP(
"Noncharacters") },
1883 { 0xFDF0, I18N_NOOP(
"Word ligatures") },
1884 { 0xFDFC, I18N_NOOP(
"Currency symbol") },
1885 { 0xFDFD, I18N_NOOP(
"Honorific word ligatures") },
1888constexpr TDEUnicodeData::Subcategory VariationSelectors[] = {
1889 { 0xFE00, I18N_NOOP(
"Variation selectors") },
1890 { 0xFE0E, I18N_NOOP(
"Emoji-specific variation selectors") },
1893constexpr TDEUnicodeData::Subcategory VerticalForms[] = {
1894 { 0xFE10, I18N_NOOP(
"Glyphs for vertical variants") },
1897constexpr TDEUnicodeData::Subcategory CombiningHalfMarks[] = {
1898 { 0xFE20, I18N_NOOP(
"Combining half marks") },
1899 { 0xFE24, I18N_NOOP(
"Continuous macrons for Coptic") },
1900 { 0xFE27, I18N_NOOP(
"Combining half marks below") },
1901 { 0xFE2E, I18N_NOOP(
"Combining half marks") },
1904constexpr TDEUnicodeData::Subcategory CJKCompatibilityForms[] = {
1905 { 0xFE30, I18N_NOOP(
"Glyphs for vertical variants") },
1906 { 0xFE45, I18N_NOOP(
"Sidelining emphasis marks") },
1907 { 0xFE47, I18N_NOOP(
"Glyphs for vertical variants") },
1908 { 0xFE49, I18N_NOOP(
"Overscores and underscores") },
1911constexpr TDEUnicodeData::Subcategory SmallFormVariants[] = {
1912 { 0xFE50, I18N_NOOP(
"Small form variants") },
1915constexpr TDEUnicodeData::Subcategory ArabicPresentationFormsB[] = {
1916 { 0xFE70, I18N_NOOP(
"Glyphs for spacing forms of Arabic points") },
1917 { 0xFE73, I18N_NOOP(
"Glyph part") },
1918 { 0xFE74, I18N_NOOP(
"Glyphs for spacing forms of Arabic points") },
1919 { 0xFE80, I18N_NOOP(
"Basic glyphs for Arabic language contextual forms") },
1920 { 0xFEFF, I18N_NOOP(
"Special") },
1923constexpr TDEUnicodeData::Subcategory HalfwidthandFullwidthForms[] = {
1924 { 0xFF01, I18N_NOOP(
"Fullwidth ASCII variants") },
1925 { 0xFF5F, I18N_NOOP(
"Fullwidth brackets") },
1926 { 0xFF61, I18N_NOOP(
"Halfwidth CJK punctuation") },
1927 { 0xFF65, I18N_NOOP(
"Halfwidth Katakana variants") },
1928 { 0xFFA0, I18N_NOOP(
"Halfwidth Hangul variants") },
1929 { 0xFFE0, I18N_NOOP(
"Fullwidth symbol variants") },
1930 { 0xFFE8, I18N_NOOP(
"Halfwidth symbol variants") },
1933constexpr TDEUnicodeData::Subcategory Specials[] = {
1934 { 0xFFF9, I18N_NOOP(
"Interlinear annotation") },
1935 { 0xFFFC, I18N_NOOP(
"Replacement characters") },
1936 { 0xFFFE, I18N_NOOP(
"Noncharacters") },
1939constexpr TDEUnicodeData::Subcategory LinearBSyllabary[] = {
1940 { 0x10000, I18N_NOOP(
"Basic syllables") },
1941 { 0x10040, I18N_NOOP(
"Supplementary signs") },
1942 { 0x10050, I18N_NOOP(
"Symbols") },
1945constexpr TDEUnicodeData::Subcategory LinearBIdeograms[] = {
1946 { 0x10080, I18N_NOOP(
"People and animals") },
1947 { 0x1008E, I18N_NOOP(
"Cereals and plants") },
1948 { 0x10095, I18N_NOOP(
"Extracts") },
1949 { 0x1009A, I18N_NOOP(
"Metals") },
1950 { 0x1009D, I18N_NOOP(
"Other materials") },
1951 { 0x100DE, I18N_NOOP(
"Vessels") },
1954constexpr TDEUnicodeData::Subcategory AegeanNumbers[] = {
1955 { 0x10100, I18N_NOOP(
"Punctuation") },
1956 { 0x10107, I18N_NOOP(
"Numbers") },
1957 { 0x10137, I18N_NOOP(
"Measures") },
1960constexpr TDEUnicodeData::Subcategory AncientGreekNumbers[] = {
1961 { 0x10140, I18N_NOOP(
"Ancient Greek acrophonic numerals") },
1962 { 0x10175, I18N_NOOP(
"Ancient Greek papyrological numbers") },
1963 { 0x1018C, I18N_NOOP(
"Ancient Greek symbols") },
1966constexpr TDEUnicodeData::Subcategory AncientSymbols[] = {
1967 { 0x10190, I18N_NOOP(
"Roman weights and measures") },
1968 { 0x10196, I18N_NOOP(
"Roman coin symbols") },
1969 { 0x1019B, I18N_NOOP(
"Other Roman epigraphic symbols") },
1970 { 0x101A0, I18N_NOOP(
"Greek symbol") },
1973constexpr TDEUnicodeData::Subcategory PhaistosDisc[] = {
1974 { 0x101D0, I18N_NOOP(
"Signs") },
1975 { 0x101FD, I18N_NOOP(
"Combining stroke") },
1978constexpr TDEUnicodeData::Subcategory Lycian[] = {
1979 { 0x10280, I18N_NOOP(
"Letters") },
1982constexpr TDEUnicodeData::Subcategory Carian[] = {
1983 { 0x102A0, I18N_NOOP(
"Letters") },
1986constexpr TDEUnicodeData::Subcategory CopticEpactNumbers[] = {
1987 { 0x102E0, I18N_NOOP(
"Sign") },
1988 { 0x102E1, I18N_NOOP(
"Digits") },
1989 { 0x102EA, I18N_NOOP(
"Numbers") },
1992constexpr TDEUnicodeData::Subcategory OldItalic[] = {
1993 { 0x10300, I18N_NOOP(
"Letters") },
1994 { 0x1031B, I18N_NOOP(
"Umbrian letters") },
1995 { 0x1031D, I18N_NOOP(
"Oscan letters") },
1996 { 0x1031F, I18N_NOOP(
"South Picene letter") },
1997 { 0x10320, I18N_NOOP(
"Numerals") },
1998 { 0x1032D, I18N_NOOP(
"North Italic letters") },
2001constexpr TDEUnicodeData::Subcategory Gothic[] = {
2002 { 0x10330, I18N_NOOP(
"Letters") },
2005constexpr TDEUnicodeData::Subcategory OldPermic[] = {
2006 { 0x10350, I18N_NOOP(
"Letters") },
2007 { 0x10376, I18N_NOOP(
"Combining letters") },
2010constexpr TDEUnicodeData::Subcategory Ugaritic[] = {
2011 { 0x10380, I18N_NOOP(
"Letters") },
2012 { 0x1039F, I18N_NOOP(
"Punctuation") },
2015constexpr TDEUnicodeData::Subcategory OldPersian[] = {
2016 { 0x103A0, I18N_NOOP(
"Independent vowels") },
2017 { 0x103A3, I18N_NOOP(
"Consonants") },
2018 { 0x103C8, I18N_NOOP(
"Various signs") },
2019 { 0x103D0, I18N_NOOP(
"Punctuation") },
2020 { 0x103D1, I18N_NOOP(
"Numbers") },
2023constexpr TDEUnicodeData::Subcategory Deseret[] = {
2024 { 0x10400, I18N_NOOP(
"Uppercase letters") },
2025 { 0x10428, I18N_NOOP(
"Lowercase letters") },
2028constexpr TDEUnicodeData::Subcategory Shavian[] = {
2029 { 0x10450, I18N_NOOP(
"Tall and deep letters (consonants)") },
2030 { 0x10464, I18N_NOOP(
"Short letters") },
2031 { 0x10478, I18N_NOOP(
"Ligatures") },
2034constexpr TDEUnicodeData::Subcategory Osmanya[] = {
2035 { 0x10480, I18N_NOOP(
"Letters") },
2036 { 0x104A0, I18N_NOOP(
"Digits") },
2039constexpr TDEUnicodeData::Subcategory Osage[] = {
2040 { 0x104B0, I18N_NOOP(
"Uppercase letters") },
2041 { 0x104D8, I18N_NOOP(
"Lowercase letters") },
2044constexpr TDEUnicodeData::Subcategory Elbasan[] = {
2045 { 0x10500, I18N_NOOP(
"Letters") },
2048constexpr TDEUnicodeData::Subcategory CaucasianAlbanian[] = {
2049 { 0x10530, I18N_NOOP(
"Letters") },
2050 { 0x1056F, I18N_NOOP(
"Punctuation") },
2053constexpr TDEUnicodeData::Subcategory Vithkuqi[] = {
2054 { 0x10570, I18N_NOOP(
"Capital letters") },
2055 { 0x10597, I18N_NOOP(
"Small letters") },
2058constexpr TDEUnicodeData::Subcategory Todhri[] = {
2061constexpr TDEUnicodeData::Subcategory LinearA[] = {
2062 { 0x10600, I18N_NOOP(
"Simple signs") },
2063 { 0x106A0, I18N_NOOP(
"Vase shapes") },
2064 { 0x106B3, I18N_NOOP(
"Complex signs") },
2065 { 0x10727, I18N_NOOP(
"Complex signs with vase shapes") },
2066 { 0x10740, I18N_NOOP(
"Fractions and compound fractions") },
2067 { 0x10760, I18N_NOOP(
"Additional signs") },
2070constexpr TDEUnicodeData::Subcategory LatinExtendedF[] = {
2071 { 0x10780, I18N_NOOP(
"Modifier letter for VoQS") },
2072 { 0x10781, I18N_NOOP(
"Modifier letters for IPA") },
2075constexpr TDEUnicodeData::Subcategory CypriotSyllabary[] = {
2076 { 0x10800, I18N_NOOP(
"Syllables") },
2079constexpr TDEUnicodeData::Subcategory ImperialAramaic[] = {
2080 { 0x10840, I18N_NOOP(
"Letters") },
2081 { 0x10857, I18N_NOOP(
"Punctuation") },
2082 { 0x10858, I18N_NOOP(
"Numbers") },
2085constexpr TDEUnicodeData::Subcategory Palmyrene[] = {
2086 { 0x10860, I18N_NOOP(
"Letters") },
2087 { 0x10877, I18N_NOOP(
"Symbols") },
2088 { 0x10879, I18N_NOOP(
"Numbers") },
2091constexpr TDEUnicodeData::Subcategory Nabataean[] = {
2092 { 0x10880, I18N_NOOP(
"Letters") },
2093 { 0x108A7, I18N_NOOP(
"Numbers") },
2096constexpr TDEUnicodeData::Subcategory Hatran[] = {
2097 { 0x108E0, I18N_NOOP(
"Letters") },
2098 { 0x108FB, I18N_NOOP(
"Numbers") },
2101constexpr TDEUnicodeData::Subcategory Phoenician[] = {
2102 { 0x10900, I18N_NOOP(
"Letters") },
2103 { 0x10916, I18N_NOOP(
"Numbers") },
2104 { 0x1091F, I18N_NOOP(
"Punctuation") },
2107constexpr TDEUnicodeData::Subcategory Lydian[] = {
2108 { 0x10920, I18N_NOOP(
"Letters") },
2109 { 0x1093F, I18N_NOOP(
"Punctuation") },
2112constexpr TDEUnicodeData::Subcategory Sidetic[] = {
2113 { 0x10940, I18N_NOOP(
"Vowel and semivowel letters") },
2114 { 0x10947, I18N_NOOP(
"Consonant letters") },
2117constexpr TDEUnicodeData::Subcategory MeroiticHieroglyphs[] = {
2118 { 0x10980, I18N_NOOP(
"Vowel letters") },
2119 { 0x10984, I18N_NOOP(
"Consonant letters") },
2120 { 0x1099E, I18N_NOOP(
"Symbols") },
2123constexpr TDEUnicodeData::Subcategory MeroiticCursive[] = {
2124 { 0x109A0, I18N_NOOP(
"Vowel letters") },
2125 { 0x109A4, I18N_NOOP(
"Consonant letters") },
2126 { 0x109BC, I18N_NOOP(
"Fractions") },
2127 { 0x109BE, I18N_NOOP(
"Logograms") },
2128 { 0x109C0, I18N_NOOP(
"Digits") },
2129 { 0x109C9, I18N_NOOP(
"Tens") },
2130 { 0x109D2, I18N_NOOP(
"Hundreds") },
2131 { 0x109DB, I18N_NOOP(
"Thousands") },
2132 { 0x109E4, I18N_NOOP(
"Ten thousands") },
2133 { 0x109ED, I18N_NOOP(
"Hundred thousands") },
2134 { 0x109F6, I18N_NOOP(
"Fractions") },
2137constexpr TDEUnicodeData::Subcategory Kharoshthi[] = {
2138 { 0x10A00, I18N_NOOP(
"Vowels") },
2139 { 0x10A0C, I18N_NOOP(
"Length mark") },
2140 { 0x10A0D, I18N_NOOP(
"Various signs") },
2141 { 0x10A10, I18N_NOOP(
"Consonants") },
2142 { 0x10A38, I18N_NOOP(
"Various signs") },
2143 { 0x10A3F, I18N_NOOP(
"Virama") },
2144 { 0x10A40, I18N_NOOP(
"Digits") },
2145 { 0x10A44, I18N_NOOP(
"Numbers and fractions") },
2146 { 0x10A50, I18N_NOOP(
"Punctuation") },
2149constexpr TDEUnicodeData::Subcategory OldSouthArabian[] = {
2150 { 0x10A60, I18N_NOOP(
"Letters") },
2151 { 0x10A7D, I18N_NOOP(
"Numbers") },
2154constexpr TDEUnicodeData::Subcategory OldNorthArabian[] = {
2155 { 0x10A80, I18N_NOOP(
"Letters") },
2156 { 0x10A9D, I18N_NOOP(
"Numbers") },
2159constexpr TDEUnicodeData::Subcategory Manichaean[] = {
2160 { 0x10AC0, I18N_NOOP(
"Letters") },
2161 { 0x10AC8, I18N_NOOP(
"Logogram") },
2162 { 0x10AC9, I18N_NOOP(
"Letters") },
2163 { 0x10AE5, I18N_NOOP(
"Combining marks") },
2164 { 0x10AEB, I18N_NOOP(
"Numbers") },
2165 { 0x10AF0, I18N_NOOP(
"Punctuation") },
2168constexpr TDEUnicodeData::Subcategory Avestan[] = {
2169 { 0x10B00, I18N_NOOP(
"Vowels") },
2170 { 0x10B10, I18N_NOOP(
"Consonants") },
2171 { 0x10B39, I18N_NOOP(
"Punctuation") },
2174constexpr TDEUnicodeData::Subcategory InscriptionalParthian[] = {
2175 { 0x10B40, I18N_NOOP(
"Letters") },
2176 { 0x10B58, I18N_NOOP(
"Numbers") },
2179constexpr TDEUnicodeData::Subcategory InscriptionalPahlavi[] = {
2180 { 0x10B60, I18N_NOOP(
"Letters") },
2181 { 0x10B78, I18N_NOOP(
"Numbers") },
2184constexpr TDEUnicodeData::Subcategory PsalterPahlavi[] = {
2185 { 0x10B80, I18N_NOOP(
"Letters") },
2186 { 0x10B99, I18N_NOOP(
"Punctuation") },
2187 { 0x10BA9, I18N_NOOP(
"Numbers") },
2190constexpr TDEUnicodeData::Subcategory OldTurkic[] = {
2191 { 0x10C00, I18N_NOOP(
"Vowels") },
2192 { 0x10C09, I18N_NOOP(
"Consonants") },
2195constexpr TDEUnicodeData::Subcategory OldHungarian[] = {
2196 { 0x10C80, I18N_NOOP(
"Uppercase letters") },
2197 { 0x10CC0, I18N_NOOP(
"Lowercase letters") },
2198 { 0x10CFA, I18N_NOOP(
"Numbers") },
2201constexpr TDEUnicodeData::Subcategory HanifiRohingya[] = {
2202 { 0x10D00, I18N_NOOP(
"Letters") },
2203 { 0x10D1C, I18N_NOOP(
"Additional letter") },
2204 { 0x10D1D, I18N_NOOP(
"Vowels") },
2205 { 0x10D22, I18N_NOOP(
"Vowel silencer") },
2206 { 0x10D23, I18N_NOOP(
"Nasalization mark") },
2207 { 0x10D24, I18N_NOOP(
"Tone signs") },
2208 { 0x10D27, I18N_NOOP(
"Gemination sign") },
2209 { 0x10D30, I18N_NOOP(
"Digits") },
2212constexpr TDEUnicodeData::Subcategory Garay[] = {
2213 { 0x10D40, I18N_NOOP(
"Digits") },
2214 { 0x10D4A, I18N_NOOP(
"Vowel signs") },
2215 { 0x10D4E, I18N_NOOP(
"Vowel modifiers") },
2216 { 0x10D50, I18N_NOOP(
"Uppercase consonant letters") },
2217 { 0x10D69, I18N_NOOP(
"Vowel sign") },
2218 { 0x10D6A, I18N_NOOP(
"Marks") },
2219 { 0x10D6E, I18N_NOOP(
"Punctuation and reduplication mark") },
2220 { 0x10D70, I18N_NOOP(
"Lowercase consonant letters") },
2221 { 0x10D8E, I18N_NOOP(
"Mathematical symbols") },
2224constexpr TDEUnicodeData::Subcategory RumiNumeralSymbols[] = {
2225 { 0x10E60, I18N_NOOP(
"Digits") },
2226 { 0x10E69, I18N_NOOP(
"Numbers") },
2227 { 0x10E7B, I18N_NOOP(
"Fractions") },
2230constexpr TDEUnicodeData::Subcategory Yezidi[] = {
2231 { 0x10E80, I18N_NOOP(
"Letters") },
2232 { 0x10EAB, I18N_NOOP(
"Combining marks") },
2233 { 0x10EAD, I18N_NOOP(
"Punctuation") },
2234 { 0x10EB0, I18N_NOOP(
"Historical letters with diacritics") },
2237constexpr TDEUnicodeData::Subcategory ArabicExtendedC[] = {
2238 { 0x10EC2, I18N_NOOP(
"Letters for Pegon") },
2239 { 0x10EC5, I18N_NOOP(
"Quranic letter used in Indonesia") },
2240 { 0x10EC6, I18N_NOOP(
"Quranic letter used in Warsh orthography") },
2241 { 0x10EC7, I18N_NOOP(
"Letter used for Swahili") },
2242 { 0x10ED0, I18N_NOOP(
"Biblical punctuation mark") },
2243 { 0x10ED1, I18N_NOOP(
"Honorific word ligatures") },
2244 { 0x10EFA, I18N_NOOP(
"Tanween mark used in Old Sindhi") },
2245 { 0x10EFB, I18N_NOOP(
"Quranic mark used in Indonesia") },
2246 { 0x10EFC, I18N_NOOP(
"Quranic mark used in Libya") },
2247 { 0x10EFD, I18N_NOOP(
"Quranic marks used in Turkey") },
2250constexpr TDEUnicodeData::Subcategory OldSogdian[] = {
2251 { 0x10F00, I18N_NOOP(
"Letters") },
2252 { 0x10F1D, I18N_NOOP(
"Numbers") },
2253 { 0x10F27, I18N_NOOP(
"Ligature") },
2256constexpr TDEUnicodeData::Subcategory Sogdian[] = {
2257 { 0x10F30, I18N_NOOP(
"Letters") },
2258 { 0x10F45, I18N_NOOP(
"Phonogram") },
2259 { 0x10F46, I18N_NOOP(
"Combining marks") },
2260 { 0x10F51, I18N_NOOP(
"Numbers") },
2261 { 0x10F55, I18N_NOOP(
"Punctuation") },
2264constexpr TDEUnicodeData::Subcategory OldUyghur[] = {
2265 { 0x10F70, I18N_NOOP(
"Letters") },
2266 { 0x10F82, I18N_NOOP(
"Combining signs") },
2267 { 0x10F86, I18N_NOOP(
"Punctuation") },
2270constexpr TDEUnicodeData::Subcategory Chorasmian[] = {
2271 { 0x10FB0, I18N_NOOP(
"Letters") },
2272 { 0x10FC5, I18N_NOOP(
"Numbers") },
2275constexpr TDEUnicodeData::Subcategory Elymaic[] = {
2276 { 0x10FE0, I18N_NOOP(
"Letters") },
2277 { 0x10FF6, I18N_NOOP(
"Ligature") },
2280constexpr TDEUnicodeData::Subcategory Brahmi[] = {
2281 { 0x11000, I18N_NOOP(
"Various signs") },
2282 { 0x11005, I18N_NOOP(
"Independent vowels") },
2283 { 0x11013, I18N_NOOP(
"Consonants") },
2284 { 0x11038, I18N_NOOP(
"Dependent vowel signs") },
2285 { 0x11046, I18N_NOOP(
"Virama") },
2286 { 0x11047, I18N_NOOP(
"Punctuation") },
2287 { 0x11052, I18N_NOOP(
"Numbers") },
2288 { 0x11066, I18N_NOOP(
"Digits") },
2289 { 0x11070, I18N_NOOP(
"Virama") },
2290 { 0x11071, I18N_NOOP(
"Independent vowels") },
2291 { 0x11073, I18N_NOOP(
"Dependent vowel signs") },
2292 { 0x11075, I18N_NOOP(
"Consonant") },
2293 { 0x1107F, I18N_NOOP(
"Number joiner") },
2296constexpr TDEUnicodeData::Subcategory Kaithi[] = {
2297 { 0x11080, I18N_NOOP(
"Various signs") },
2298 { 0x11083, I18N_NOOP(
"Independent vowels") },
2299 { 0x1108D, I18N_NOOP(
"Consonants") },
2300 { 0x110B0, I18N_NOOP(
"Dependent vowel signs") },
2301 { 0x110B9, I18N_NOOP(
"Virama") },
2302 { 0x110BA, I18N_NOOP(
"Various signs") },
2303 { 0x110BE, I18N_NOOP(
"Punctuation") },
2304 { 0x110C2, I18N_NOOP(
"Vowel sign") },
2305 { 0x110CD, I18N_NOOP(
"Sign") },
2308constexpr TDEUnicodeData::Subcategory SoraSompeng[] = {
2309 { 0x110D0, I18N_NOOP(
"Consonants") },
2310 { 0x110E2, I18N_NOOP(
"Vowels") },
2311 { 0x110E8, I18N_NOOP(
"Other letter") },
2312 { 0x110F0, I18N_NOOP(
"Digits") },
2315constexpr TDEUnicodeData::Subcategory Chakma[] = {
2316 { 0x11100, I18N_NOOP(
"Various signs") },
2317 { 0x11103, I18N_NOOP(
"Independent vowels") },
2318 { 0x11107, I18N_NOOP(
"Consonants") },
2319 { 0x11127, I18N_NOOP(
"Dependent vowel signs") },
2320 { 0x11133, I18N_NOOP(
"Various signs") },
2321 { 0x11136, I18N_NOOP(
"Digits") },
2322 { 0x11140, I18N_NOOP(
"Punctuation") },
2323 { 0x11144, I18N_NOOP(
"Consonant") },
2324 { 0x11145, I18N_NOOP(
"Dependent vowel signs") },
2325 { 0x11147, I18N_NOOP(
"Consonant") },
2328constexpr TDEUnicodeData::Subcategory Mahajani[] = {
2329 { 0x11150, I18N_NOOP(
"Vowels") },
2330 { 0x11155, I18N_NOOP(
"Consonants") },
2331 { 0x11173, I18N_NOOP(
"Sign") },
2332 { 0x11174, I18N_NOOP(
"Punctuation") },
2333 { 0x11176, I18N_NOOP(
"Word ligature") },
2336constexpr TDEUnicodeData::Subcategory Sharada[] = {
2337 { 0x11180, I18N_NOOP(
"Various signs") },
2338 { 0x11183, I18N_NOOP(
"Independent vowels") },
2339 { 0x11191, I18N_NOOP(
"Consonants") },
2340 { 0x111B3, I18N_NOOP(
"Dependent vowel signs") },
2341 { 0x111C0, I18N_NOOP(
"Virama") },
2342 { 0x111C1, I18N_NOOP(
"Various signs") },
2343 { 0x111C5, I18N_NOOP(
"Punctuation") },
2344 { 0x111C9, I18N_NOOP(
"Sign") },
2345 { 0x111CA, I18N_NOOP(
"Signs for Kashmiri") },
2346 { 0x111CD, I18N_NOOP(
"Punctuation") },
2347 { 0x111CE, I18N_NOOP(
"Historic vowel sign") },
2348 { 0x111CF, I18N_NOOP(
"Sign") },
2349 { 0x111D0, I18N_NOOP(
"Digits") },
2350 { 0x111DA, I18N_NOOP(
"Punctuation") },
2351 { 0x111DE, I18N_NOOP(
"Section marks") },
2354constexpr TDEUnicodeData::Subcategory SinhalaArchaicNumbers[] = {
2355 { 0x111E1, I18N_NOOP(
"Historical digits") },
2356 { 0x111EA, I18N_NOOP(
"Historical numbers") },
2359constexpr TDEUnicodeData::Subcategory Khojki[] = {
2360 { 0x11200, I18N_NOOP(
"Independent vowels") },
2361 { 0x11208, I18N_NOOP(
"Consonants") },
2362 { 0x1122C, I18N_NOOP(
"Dependent vowel signs") },
2363 { 0x11234, I18N_NOOP(
"Various signs") },
2364 { 0x11238, I18N_NOOP(
"Punctuation") },
2365 { 0x1123E, I18N_NOOP(
"Sign") },
2366 { 0x1123F, I18N_NOOP(
"Consonant") },
2367 { 0x11240, I18N_NOOP(
"Independent vowel") },
2368 { 0x11241, I18N_NOOP(
"Dependent vowel sign") },
2371constexpr TDEUnicodeData::Subcategory Multani[] = {
2372 { 0x11280, I18N_NOOP(
"Vowels") },
2373 { 0x11284, I18N_NOOP(
"Consonants") },
2374 { 0x112A9, I18N_NOOP(
"Punctuation") },
2377constexpr TDEUnicodeData::Subcategory Khudawadi[] = {
2378 { 0x112B0, I18N_NOOP(
"Independent vowels") },
2379 { 0x112BA, I18N_NOOP(
"Consonants") },
2380 { 0x112DF, I18N_NOOP(
"Sign") },
2381 { 0x112E0, I18N_NOOP(
"Dependent vowel signs") },
2382 { 0x112E9, I18N_NOOP(
"Various signs") },
2383 { 0x112F0, I18N_NOOP(
"Digits") },
2386constexpr TDEUnicodeData::Subcategory Grantha[] = {
2387 { 0x11300, I18N_NOOP(
"Various signs") },
2388 { 0x11305, I18N_NOOP(
"Independent vowels") },
2389 { 0x11315, I18N_NOOP(
"Consonants") },
2390 { 0x1133B, I18N_NOOP(
"Various signs") },
2391 { 0x1133E, I18N_NOOP(
"Dependent vowel signs") },
2392 { 0x1134B, I18N_NOOP(
"Two-part dependent vowel signs") },
2393 { 0x1134D, I18N_NOOP(
"Virama") },
2394 { 0x11350, I18N_NOOP(
"Sign") },
2395 { 0x11357, I18N_NOOP(
"Dependent vowel sign") },
2396 { 0x1135D, I18N_NOOP(
"Sign") },
2397 { 0x1135E, I18N_NOOP(
"Anusvaras") },
2398 { 0x11360, I18N_NOOP(
"Independent vowels") },
2399 { 0x11362, I18N_NOOP(
"Dependent vowel signs") },
2400 { 0x11366, I18N_NOOP(
"Cantillation marks (svara) for the Samaveda") },
2403constexpr TDEUnicodeData::Subcategory TuluTigalari[] = {
2404 { 0x11380, I18N_NOOP(
"Independent vowels") },
2405 { 0x11392, I18N_NOOP(
"Consonants") },
2406 { 0x113B7, I18N_NOOP(
"Avagraha") },
2407 { 0x113B8, I18N_NOOP(
"Vowel signs") },
2408 { 0x113C9, I18N_NOOP(
"Various signs") },
2409 { 0x113D3, I18N_NOOP(
"Vowel length mark") },
2410 { 0x113D4, I18N_NOOP(
"Punctuation") },
2411 { 0x113E1, I18N_NOOP(
"Vedic tone marks") },
2414constexpr TDEUnicodeData::Subcategory Newa[] = {
2415 { 0x11400, I18N_NOOP(
"Independent vowels") },
2416 { 0x1140E, I18N_NOOP(
"Consonants") },
2417 { 0x11435, I18N_NOOP(
"Dependent vowel signs") },
2418 { 0x11442, I18N_NOOP(
"Various signs") },
2419 { 0x11449, I18N_NOOP(
"Invocation signs") },
2420 { 0x1144B, I18N_NOOP(
"Punctuation") },
2421 { 0x11450, I18N_NOOP(
"Digits") },
2422 { 0x1145A, I18N_NOOP(
"Punctuation") },
2423 { 0x1145B, I18N_NOOP(
"Various signs") },
2426constexpr TDEUnicodeData::Subcategory Tirhuta[] = {
2427 { 0x11480, I18N_NOOP(
"Sign") },
2428 { 0x11481, I18N_NOOP(
"Independent vowels") },
2429 { 0x1148F, I18N_NOOP(
"Consonants") },
2430 { 0x114B0, I18N_NOOP(
"Dependent vowel signs") },
2431 { 0x114BF, I18N_NOOP(
"Various signs") },
2432 { 0x114D0, I18N_NOOP(
"Digits") },
2435constexpr TDEUnicodeData::Subcategory Siddham[] = {
2436 { 0x11580, I18N_NOOP(
"Independent vowels") },
2437 { 0x1158E, I18N_NOOP(
"Consonants") },
2438 { 0x115AF, I18N_NOOP(
"Dependent vowel signs") },
2439 { 0x115BC, I18N_NOOP(
"Various signs") },
2440 { 0x115C1, I18N_NOOP(
"Head mark") },
2441 { 0x115C2, I18N_NOOP(
"Punctuation") },
2442 { 0x115C6, I18N_NOOP(
"Repetition marks") },
2443 { 0x115C9, I18N_NOOP(
"Terminal mark") },
2444 { 0x115CA, I18N_NOOP(
"Section marks") },
2445 { 0x115D8, I18N_NOOP(
"Alternate letters") },
2446 { 0x115DC, I18N_NOOP(
"Alternate vowel signs") },
2449constexpr TDEUnicodeData::Subcategory Modi[] = {
2450 { 0x11600, I18N_NOOP(
"Independent vowels") },
2451 { 0x1160E, I18N_NOOP(
"Consonants") },
2452 { 0x11630, I18N_NOOP(
"Dependent vowel signs") },
2453 { 0x1163D, I18N_NOOP(
"Various signs") },
2454 { 0x11641, I18N_NOOP(
"Punctuation") },
2455 { 0x11644, I18N_NOOP(
"Sign") },
2456 { 0x11650, I18N_NOOP(
"Digits") },
2459constexpr TDEUnicodeData::Subcategory MongolianSupplement[] = {
2460 { 0x11660, I18N_NOOP(
"Punctuation") },
2463constexpr TDEUnicodeData::Subcategory Takri[] = {
2464 { 0x11680, I18N_NOOP(
"Independent vowels") },
2465 { 0x1168A, I18N_NOOP(
"Consonants") },
2466 { 0x116AB, I18N_NOOP(
"Various signs") },
2467 { 0x116AD, I18N_NOOP(
"Dependent vowel signs") },
2468 { 0x116B6, I18N_NOOP(
"Virama") },
2469 { 0x116B7, I18N_NOOP(
"Nukta") },
2470 { 0x116B8, I18N_NOOP(
"Consonant") },
2471 { 0x116B9, I18N_NOOP(
"Punctuation") },
2472 { 0x116C0, I18N_NOOP(
"Digits") },
2475constexpr TDEUnicodeData::Subcategory MyanmarExtendedC[] = {
2476 { 0x116D0, I18N_NOOP(
"Pao digits") },
2477 { 0x116DA, I18N_NOOP(
"Eastern Pwo Karen digits") },
2480constexpr TDEUnicodeData::Subcategory Ahom[] = {
2481 { 0x11700, I18N_NOOP(
"Consonants") },
2482 { 0x1171D, I18N_NOOP(
"Medials") },
2483 { 0x11720, I18N_NOOP(
"Vowel signs") },
2484 { 0x11730, I18N_NOOP(
"Digits") },
2485 { 0x1173A, I18N_NOOP(
"Numbers") },
2486 { 0x1173C, I18N_NOOP(
"Punctuation") },
2487 { 0x11740, I18N_NOOP(
"Additional consonants") },
2490constexpr TDEUnicodeData::Subcategory Dogra[] = {
2491 { 0x11800, I18N_NOOP(
"Independent vowels") },
2492 { 0x1180A, I18N_NOOP(
"Consonants") },
2493 { 0x1182C, I18N_NOOP(
"Dependent vowel signs") },
2494 { 0x11837, I18N_NOOP(
"Various signs") },
2495 { 0x1183B, I18N_NOOP(
"Punctuation") },
2498constexpr TDEUnicodeData::Subcategory WarangCiti[] = {
2499 { 0x118A0, I18N_NOOP(
"Uppercase vowels") },
2500 { 0x118AA, I18N_NOOP(
"Uppercase consonants") },
2501 { 0x118C0, I18N_NOOP(
"Lowercase vowels") },
2502 { 0x118CA, I18N_NOOP(
"Lowercase consonants") },
2503 { 0x118E0, I18N_NOOP(
"Digits") },
2504 { 0x118EA, I18N_NOOP(
"Numbers") },
2505 { 0x118FF, I18N_NOOP(
"Sign") },
2508constexpr TDEUnicodeData::Subcategory DivesAkuru[] = {
2509 { 0x11900, I18N_NOOP(
"Independent vowels") },
2510 { 0x1190C, I18N_NOOP(
"Consonants") },
2511 { 0x11930, I18N_NOOP(
"Dependent vowel signs") },
2512 { 0x1193B, I18N_NOOP(
"Nasalization signs") },
2513 { 0x1193D, I18N_NOOP(
"Signs") },
2514 { 0x11940, I18N_NOOP(
"Conjunct-specific letters") },
2515 { 0x11943, I18N_NOOP(
"Nukta") },
2516 { 0x11944, I18N_NOOP(
"Punctuation") },
2517 { 0x11950, I18N_NOOP(
"Digits") },
2520constexpr TDEUnicodeData::Subcategory Nandinagari[] = {
2521 { 0x119A0, I18N_NOOP(
"Independent vowels") },
2522 { 0x119AE, I18N_NOOP(
"Consonants") },
2523 { 0x119D1, I18N_NOOP(
"Dependent vowel signs") },
2524 { 0x119DE, I18N_NOOP(
"Various signs") },
2525 { 0x119E3, I18N_NOOP(
"Punctuation") },
2526 { 0x119E4, I18N_NOOP(
"Dependent vowel sign") },
2529constexpr TDEUnicodeData::Subcategory ZanabazarSquare[] = {
2530 { 0x11A00, I18N_NOOP(
"Vowel letter") },
2531 { 0x11A01, I18N_NOOP(
"Vowel signs") },
2532 { 0x11A0A, I18N_NOOP(
"Vowel length mark") },
2533 { 0x11A0B, I18N_NOOP(
"Consonants") },
2534 { 0x11A33, I18N_NOOP(
"Final consonant mark") },
2535 { 0x11A34, I18N_NOOP(
"Virama") },
2536 { 0x11A35, I18N_NOOP(
"Candrabindu and candra ornaments") },
2537 { 0x11A38, I18N_NOOP(
"Signs for Sanskrit") },
2538 { 0x11A3A, I18N_NOOP(
"Cluster-initial consonant") },
2539 { 0x11A3B, I18N_NOOP(
"Cluster-final consonants") },
2540 { 0x11A3F, I18N_NOOP(
"Head marks") },
2541 { 0x11A41, I18N_NOOP(
"Punctuation") },
2542 { 0x11A45, I18N_NOOP(
"Head marks") },
2543 { 0x11A47, I18N_NOOP(
"Subjoiner") },
2546constexpr TDEUnicodeData::Subcategory Soyombo[] = {
2547 { 0x11A50, I18N_NOOP(
"Vowel letter") },
2548 { 0x11A51, I18N_NOOP(
"Vowel signs") },
2549 { 0x11A5B, I18N_NOOP(
"Vowel length mark") },
2550 { 0x11A5C, I18N_NOOP(
"Consonants") },
2551 { 0x11A84, I18N_NOOP(
"Alternate visarga signs") },
2552 { 0x11A86, I18N_NOOP(
"Cluster-initial letters") },
2553 { 0x11A8A, I18N_NOOP(
"Final consonant signs") },
2554 { 0x11A96, I18N_NOOP(
"Various signs") },
2555 { 0x11A98, I18N_NOOP(
"Gemination mark") },
2556 { 0x11A99, I18N_NOOP(
"Subjoiner") },
2557 { 0x11A9A, I18N_NOOP(
"Punctuation") },
2558 { 0x11A9D, I18N_NOOP(
"Elongation mark") },
2559 { 0x11A9E, I18N_NOOP(
"Head marks") },
2560 { 0x11AA1, I18N_NOOP(
"Terminal marks") },
2563constexpr TDEUnicodeData::Subcategory UnifiedCanadianAboriginalSyllabicsExtendedA[] = {
2564 { 0x11AB0, I18N_NOOP(
"Syllables for Nattilik") },
2565 { 0x11ABC, I18N_NOOP(
"Historic syllables for Cree and Ojibway") },
2568constexpr TDEUnicodeData::Subcategory PauCinHau[] = {
2569 { 0x11AC0, I18N_NOOP(
"Consonants") },
2570 { 0x11AD5, I18N_NOOP(
"Vowels") },
2571 { 0x11ADC, I18N_NOOP(
"Final consonants") },
2572 { 0x11AE5, I18N_NOOP(
"Tone marks") },
2575constexpr TDEUnicodeData::Subcategory DevanagariExtendedA[] = {
2576 { 0x11B00, I18N_NOOP(
"Head marks") },
2577 { 0x11B02, I18N_NOOP(
"Auspicious signs") },
2580constexpr TDEUnicodeData::Subcategory SharadaSupplement[] = {
2581 { 0x11B60, I18N_NOOP(
"Kashmiri vowel signs") },
2584constexpr TDEUnicodeData::Subcategory Sunuwar[] = {
2585 { 0x11BC0, I18N_NOOP(
"Letters") },
2586 { 0x11BE1, I18N_NOOP(
"Punctuation") },
2587 { 0x11BF0, I18N_NOOP(
"Digits") },
2590constexpr TDEUnicodeData::Subcategory Bhaiksuki[] = {
2591 { 0x11C00, I18N_NOOP(
"Independent vowels") },
2592 { 0x11C0E, I18N_NOOP(
"Consonants") },
2593 { 0x11C2F, I18N_NOOP(
"Dependent vowel signs") },
2594 { 0x11C3C, I18N_NOOP(
"Various signs") },
2595 { 0x11C41, I18N_NOOP(
"Punctuation") },
2596 { 0x11C44, I18N_NOOP(
"Gap fillers") },
2597 { 0x11C50, I18N_NOOP(
"Digits") },
2598 { 0x11C5A, I18N_NOOP(
"Numbers") },
2601constexpr TDEUnicodeData::Subcategory Marchen[] = {
2602 { 0x11C70, I18N_NOOP(
"Punctuation") },
2603 { 0x11C72, I18N_NOOP(
"Letters") },
2604 { 0x11C92, I18N_NOOP(
"Subjoined letters") },
2605 { 0x11CB0, I18N_NOOP(
"Dependent vowel signs") },
2606 { 0x11CB5, I18N_NOOP(
"Various signs") },
2609constexpr TDEUnicodeData::Subcategory MasaramGondi[] = {
2610 { 0x11D00, I18N_NOOP(
"Vowels") },
2611 { 0x11D0C, I18N_NOOP(
"Consonants") },
2612 { 0x11D2E, I18N_NOOP(
"Conjunct letters") },
2613 { 0x11D31, I18N_NOOP(
"Dependent vowel signs") },
2614 { 0x11D40, I18N_NOOP(
"Various signs") },
2615 { 0x11D45, I18N_NOOP(
"Virama") },
2616 { 0x11D46, I18N_NOOP(
"Cluster-specific consonant forms") },
2617 { 0x11D50, I18N_NOOP(
"Digits") },
2620constexpr TDEUnicodeData::Subcategory GunjalaGondi[] = {
2621 { 0x11D60, I18N_NOOP(
"Independent vowels") },
2622 { 0x11D6C, I18N_NOOP(
"Consonants") },
2623 { 0x11D8A, I18N_NOOP(
"Dependent vowel signs") },
2624 { 0x11D95, I18N_NOOP(
"Various signs") },
2625 { 0x11D97, I18N_NOOP(
"Virama") },
2626 { 0x11D98, I18N_NOOP(
"Symbol") },
2627 { 0x11DA0, I18N_NOOP(
"Digits") },
2630constexpr TDEUnicodeData::Subcategory TolongSiki[] = {
2631 { 0x11DB0, I18N_NOOP(
"Vowel letters") },
2632 { 0x11DB6, I18N_NOOP(
"Consonant letters") },
2633 { 0x11DD9, I18N_NOOP(
"Signs") },
2634 { 0x11DDB, I18N_NOOP(
"Auspicious sign") },
2635 { 0x11DE0, I18N_NOOP(
"Digits") },
2638constexpr TDEUnicodeData::Subcategory Makasar[] = {
2639 { 0x11EE0, I18N_NOOP(
"Consonants") },
2640 { 0x11EF2, I18N_NOOP(
"Consonant reduplicator") },
2641 { 0x11EF3, I18N_NOOP(
"Vowel signs") },
2642 { 0x11EF7, I18N_NOOP(
"Punctuation") },
2645constexpr TDEUnicodeData::Subcategory Kawi[] = {
2646 { 0x11F00, I18N_NOOP(
"Signs") },
2647 { 0x11F04, I18N_NOOP(
"Independent vowels") },
2648 { 0x11F12, I18N_NOOP(
"Consonants") },
2649 { 0x11F34, I18N_NOOP(
"Dependent vowel signs") },
2650 { 0x11F41, I18N_NOOP(
"Viramas") },
2651 { 0x11F43, I18N_NOOP(
"Punctuation") },
2652 { 0x11F50, I18N_NOOP(
"Digits") },
2653 { 0x11F5A, I18N_NOOP(
"Nukta") },
2656constexpr TDEUnicodeData::Subcategory LisuSupplement[] = {
2657 { 0x11FB0, I18N_NOOP(
"Letter") },
2660constexpr TDEUnicodeData::Subcategory TamilSupplement[] = {
2661 { 0x11FC0, I18N_NOOP(
"Fractions") },
2662 { 0x11FD5, I18N_NOOP(
"Measures of grain") },
2663 { 0x11FDD, I18N_NOOP(
"Old currency symbols") },
2664 { 0x11FE1, I18N_NOOP(
"Symbols of weight, length, and area") },
2665 { 0x11FE4, I18N_NOOP(
"Agricultural symbols") },
2666 { 0x11FE8, I18N_NOOP(
"Clerical symbols") },
2667 { 0x11FEE, I18N_NOOP(
"Other symbols and abbreviations") },
2668 { 0x11FFF, I18N_NOOP(
"Punctuation") },
2671constexpr TDEUnicodeData::Subcategory Cuneiform[] = {
2672 { 0x12000, I18N_NOOP(
"Signs") },
2673 { 0x1236F, I18N_NOOP(
"Elamite sign") },
2674 { 0x12370, I18N_NOOP(
"Signs") },
2677constexpr TDEUnicodeData::Subcategory CuneiformNumbersandPunctuation[] = {
2678 { 0x12400, I18N_NOOP(
"Common numeric signs") },
2679 { 0x12434, I18N_NOOP(
"Area measures") },
2680 { 0x1243A, I18N_NOOP(
"Variant stacking patterns") },
2681 { 0x1244A, I18N_NOOP(
"Slanted numerals") },
2682 { 0x1244F, I18N_NOOP(
"Capacity measures") },
2683 { 0x12458, I18N_NOOP(
"Area measures") },
2684 { 0x1245A, I18N_NOOP(
"Fractions") },
2685 { 0x12463, I18N_NOOP(
"Capacity measures") },
2686 { 0x12465, I18N_NOOP(
"Elamite fractions") },
2687 { 0x12467, I18N_NOOP(
"Elamite numeric signs") },
2688 { 0x12469, I18N_NOOP(
"Variant stacking patterns") },
2689 { 0x12470, I18N_NOOP(
"Punctuation") },
2692constexpr TDEUnicodeData::Subcategory EarlyDynasticCuneiform[] = {
2693 { 0x12480, I18N_NOOP(
"Signs") },
2696constexpr TDEUnicodeData::Subcategory CyproMinoan[] = {
2697 { 0x12F90, I18N_NOOP(
"Signs") },
2698 { 0x12FF1, I18N_NOOP(
"Punctuation") },
2701constexpr TDEUnicodeData::Subcategory EgyptianHieroglyphs[] = {
2702 { 0x13000, I18N_NOOP(
"A. Man and his occupations") },
2703 { 0x13050, I18N_NOOP(
"B. Woman and her occupations") },
2704 { 0x1305A, I18N_NOOP(
"C. Anthropomorphic deities") },
2705 { 0x13076, I18N_NOOP(
"D. Parts of the human body") },
2706 { 0x130D2, I18N_NOOP(
"E. Mammals") },
2707 { 0x130FE, I18N_NOOP(
"F. Parts of mammals") },
2708 { 0x1313F, I18N_NOOP(
"G. Birds") },
2709 { 0x1317F, I18N_NOOP(
"H. Parts of birds") },
2710 { 0x13188, I18N_NOOP(
"I. Amphibious animals, reptiles, etc.") },
2711 { 0x1319B, I18N_NOOP(
"K. Fishes and parts of fishes") },
2712 { 0x131A3, I18N_NOOP(
"L. Invertebrata and lesser animals") },
2713 { 0x131AD, I18N_NOOP(
"M. Trees and plants") },
2714 { 0x131EF, I18N_NOOP(
"N. Sky, earth, water") },
2715 { 0x13220, I18N_NOOP(
"NL. Nomes of Lower Egypt") },
2716 { 0x13236, I18N_NOOP(
"NU. Nomes of Upper Egypt") },
2717 { 0x13250, I18N_NOOP(
"O. Buildings, parts of buildings, etc.") },
2718 { 0x1329B, I18N_NOOP(
"P. Ships and parts of ships") },
2719 { 0x132A8, I18N_NOOP(
"Q. Domestic and funerary furniture") },
2720 { 0x132AF, I18N_NOOP(
"R. Temple furniture and sacred emblems") },
2721 { 0x132D1, I18N_NOOP(
"S. Crowns, dress, staves, etc.") },
2722 { 0x13307, I18N_NOOP(
"T. Warfare, hunting, butchery") },
2723 { 0x13333, I18N_NOOP(
"U. Agriculture, crafts, and professions") },
2724 { 0x13362, I18N_NOOP(
"V. Rope, fiber, baskets, bags, etc.") },
2725 { 0x133AF, I18N_NOOP(
"W. Vessels of stone and earthenware") },
2726 { 0x133CF, I18N_NOOP(
"X. Loaves and cakes") },
2727 { 0x133DB, I18N_NOOP(
"Y. Writings, games, music") },
2728 { 0x133E4, I18N_NOOP(
"Z. Strokes, signs derived from Hieratic, geometrical figures") },
2729 { 0x1340D, I18N_NOOP(
"Aa. Unclassified") },
2730 { 0x1342F, I18N_NOOP(
"Addition to group V") },
2733constexpr TDEUnicodeData::Subcategory EgyptianHieroglyphFormatControls[] = {
2734 { 0x13430, I18N_NOOP(
"Joiners") },
2735 { 0x13432, I18N_NOOP(
"Sign insertion controls") },
2736 { 0x13436, I18N_NOOP(
"Sign stacking control") },
2737 { 0x13437, I18N_NOOP(
"Segment scoping delimiters") },
2738 { 0x13439, I18N_NOOP(
"Sign insertion controls") },
2739 { 0x1343C, I18N_NOOP(
"Enclosure controls") },
2740 { 0x13440, I18N_NOOP(
"Mirror control") },
2741 { 0x13441, I18N_NOOP(
"Blank and lost signs") },
2742 { 0x13447, I18N_NOOP(
"Damage modifiers") },
2745constexpr TDEUnicodeData::Subcategory EgyptianHieroglyphsExtendedA[] = {
2746 { 0x13460, I18N_NOOP(
"A01. Man seated or kneeling empty handed") },
2747 { 0x13488, I18N_NOOP(
"A02. Man standing empty handed") },
2748 { 0x134A5, I18N_NOOP(
"A04. Man adoring or bent") },
2749 { 0x134B0, I18N_NOOP(
"A05. Man on the ground or in water") },
2750 { 0x134C6, I18N_NOOP(
"A06. Man or god standing, holding a staff") },
2751 { 0x134DB, I18N_NOOP(
"A07. Man seated or kneeling, holding something") },
2752 { 0x134FD, I18N_NOOP(
"A08. Man standing, holding something") },
2753 { 0x13510, I18N_NOOP(
"A09. Man seated, pouring water") },
2754 { 0x1351F, I18N_NOOP(
"A10. Man standing, pouring water, spreading powder") },
2755 { 0x13527, I18N_NOOP(
"A11. Man hiding") },
2756 { 0x1352B, I18N_NOOP(
"A12. Man working") },
2757 { 0x1354E, I18N_NOOP(
"A13. Shepherd and porter") },
2758 { 0x13563, I18N_NOOP(
"A14. Man carrying a bundle") },
2759 { 0x1356B, I18N_NOOP(
"A15. Man or god standing, composed with a hieroglyphic sign") },
2760 { 0x1358E, I18N_NOOP(
"A16. Man or god holding a weapon") },
2761 { 0x135A5, I18N_NOOP(
"A17. Soldier, seated") },
2762 { 0x135AF, I18N_NOOP(
"A18. Prisoner and enemy") },
2763 { 0x135DE, I18N_NOOP(
"A19. Dancer and acrobat") },
2764 { 0x135EB, I18N_NOOP(
"A20. Musician") },
2765 { 0x13604, I18N_NOOP(
"A21. Man and animal") },
2766 { 0x1361C, I18N_NOOP(
"A22. Man in a boat") },
2767 { 0x1361D, I18N_NOOP(
"A23. Child") },
2768 { 0x1363D, I18N_NOOP(
"A24. Dwarf") },
2769 { 0x1363E, I18N_NOOP(
"A25. King or noble seated on a chair") },
2770 { 0x13652, I18N_NOOP(
"A26. King or god seated without crown") },
2771 { 0x13662, I18N_NOOP(
"A27. King or god standing without crown") },
2772 { 0x1366F, I18N_NOOP(
"A28. King or god wearing the white crown") },
2773 { 0x1368A, I18N_NOOP(
"A29. King or god wearing the red crown") },
2774 { 0x13698, I18N_NOOP(
"A30. King or god wearing another crown") },
2775 { 0x136B0, I18N_NOOP(
"A31. Dead person kneeling") },
2776 { 0x136B5, I18N_NOOP(
"A32. Mummy") },
2777 { 0x136B9, I18N_NOOP(
"A33. Statue") },
2778 { 0x136C3, I18N_NOOP(
"A34. Man, varia") },
2779 { 0x136D4, I18N_NOOP(
"B01. Woman seated") },
2780 { 0x136F0, I18N_NOOP(
"B02. Woman kneeling") },
2781 { 0x136F6, I18N_NOOP(
"B03. Woman kneeling with visible arms") },
2782 { 0x13700, I18N_NOOP(
"B04. Woman seated on a chair") },
2783 { 0x1370F, I18N_NOOP(
"B05. Woman, standing") },
2784 { 0x1372A, I18N_NOOP(
"B06. Queen or goddess, seated, wearing a crown") },
2785 { 0x1372D, I18N_NOOP(
"B07. Queen or goddess, standing, wearing a crown") },
2786 { 0x13732, I18N_NOOP(
"B08. Woman, musician") },
2787 { 0x13737, I18N_NOOP(
"B09. Woman, queen or goddess pregnant, giving birth, breastfeeding") },
2788 { 0x13744, I18N_NOOP(
"B10. Woman, varia") },
2789 { 0x13749, I18N_NOOP(
"C01. God, seated, various headsets") },
2790 { 0x1375E, I18N_NOOP(
"C02. God, various, with animal heads") },
2791 { 0x13763, I18N_NOOP(
"C03. Amon") },
2792 { 0x1376E, I18N_NOOP(
"C04. Anubis and canides gods") },
2793 { 0x1378D, I18N_NOOP(
"C05. Apis and bull head gods") },
2794 { 0x13792, I18N_NOOP(
"C07. Bes") },
2795 { 0x13793, I18N_NOOP(
"C08. Chou") },
2796 { 0x13796, I18N_NOOP(
"C09. Falcon, seated") },
2797 { 0x137CC, I18N_NOOP(
"C10. Falcon, standing") },
2798 { 0x137DF, I18N_NOOP(
"C11. Falcon, slaying an animal") },
2799 { 0x137E7, I18N_NOOP(
"C12. Geb") },
2800 { 0x137E8, I18N_NOOP(
"C13. Heh") },
2801 { 0x13804, I18N_NOOP(
"C14. Ihy and children gods") },
2802 { 0x1380B, I18N_NOOP(
"C15. Khnoum and ram gods") },
2803 { 0x1381B, I18N_NOOP(
"C16. Gods with lion head") },
2804 { 0x1381E, I18N_NOOP(
"C17. Min") },
2805 { 0x13821, I18N_NOOP(
"C18. Nefertoum") },
2806 { 0x13822, I18N_NOOP(
"C19. Nil") },
2807 { 0x1382B, I18N_NOOP(
"C20. Onouris") },
2808 { 0x1382E, I18N_NOOP(
"C21. Orion") },
2809 { 0x13830, I18N_NOOP(
"C22. Osiris") },
2810 { 0x13839, I18N_NOOP(
"C23. Ptah") },
2811 { 0x13843, I18N_NOOP(
"C24. Re") },
2812 { 0x13848, I18N_NOOP(
"C25. Rechep") },
2813 { 0x13849, I18N_NOOP(
"C26. Seth") },
2814 { 0x13851, I18N_NOOP(
"C27. Sobek") },
2815 { 0x13856, I18N_NOOP(
"C28. Soped") },
2816 { 0x13857, I18N_NOOP(
"C29. Gods with monkey head") },
2817 { 0x1385B, I18N_NOOP(
"C30. Tatenen") },
2818 { 0x13864, I18N_NOOP(
"C31. Thot") },
2819 { 0x13871, I18N_NOOP(
"C32. Gods, varia") },
2820 { 0x13876, I18N_NOOP(
"C33. Anoukis") },
2821 { 0x13878, I18N_NOOP(
"C34. Ermouthis and snake goddesses") },
2822 { 0x1387D, I18N_NOOP(
"C35. Hathor/Isis") },
2823 { 0x138AE, I18N_NOOP(
"C36. Lion gods and goddesses") },
2824 { 0x138C8, I18N_NOOP(
"C37. Maat") },
2825 { 0x138D7, I18N_NOOP(
"C38. Meret") },
2826 { 0x138DE, I18N_NOOP(
"C39. Mut") },
2827 { 0x138E5, I18N_NOOP(
"C40. Neith") },
2828 { 0x138F0, I18N_NOOP(
"C41. Nekhbet") },
2829 { 0x138F1, I18N_NOOP(
"C42. Nephthys") },
2830 { 0x138F5, I18N_NOOP(
"C43. Nout") },
2831 { 0x138FF, I18N_NOOP(
"C44. Satis") },
2832 { 0x13900, I18N_NOOP(
"C45. Seshat") },
2833 { 0x13905, I18N_NOOP(
"C46. Sothis") },
2834 { 0x13907, I18N_NOOP(
"C47. Goddesses, varia") },
2835 { 0x13923, I18N_NOOP(
"C48. Goddesses, gods group") },
2836 { 0x1392D, I18N_NOOP(
"D01. Head, sideways") },
2837 { 0x13935, I18N_NOOP(
"D02. Head, front") },
2838 { 0x13937, I18N_NOOP(
"D03. Head and arms") },
2839 { 0x1396A, I18N_NOOP(
"D04. Hairs") },
2840 { 0x13973, I18N_NOOP(
"D05. Eye") },
2841 { 0x13976, I18N_NOOP(
"D06. Eye made up") },
2842 { 0x13986, I18N_NOOP(
"D07. Eye crying") },
2843 { 0x1398C, I18N_NOOP(
"D08. Udjat eye") },
2844 { 0x1398F, I18N_NOOP(
"D09. Udjat eye components") },
2845 { 0x13990, I18N_NOOP(
"D10. Ear") },
2846 { 0x13991, I18N_NOOP(
"D11. Face sideways") },
2847 { 0x13994, I18N_NOOP(
"D12. Mouth") },
2848 { 0x13997, I18N_NOOP(
"D13. Lips") },
2849 { 0x13999, I18N_NOOP(
"D14. Mouth spitting") },
2850 { 0x1399E, I18N_NOOP(
"D15. Beard") },
2851 { 0x1399F, I18N_NOOP(
"D17. Lower part of kneeling or sitting man") },
2852 { 0x139A0, I18N_NOOP(
"D18. Arms (straight)") },
2853 { 0x139A6, I18N_NOOP(
"D19. Arms (bent)") },
2854 { 0x139B0, I18N_NOOP(
"D20. Arm or arms holding an oar") },
2855 { 0x139B7, I18N_NOOP(
"D21. Arm holding shield and weapons") },
2856 { 0x139C2, I18N_NOOP(
"D22. Arm flat") },
2857 { 0x139C3, I18N_NOOP(
"D23. Forearm (empty handed, palm up)") },
2858 { 0x139C5, I18N_NOOP(
"D24. Forearm (holding loaf of bread or round vase with rim)") },
2859 { 0x139C7, I18N_NOOP(
"D25. Forearm (holding stick, varia)") },
2860 { 0x139DB, I18N_NOOP(
"D26. Arm bent") },
2861 { 0x139F0, I18N_NOOP(
"D27. Arms bent, holding an object") },
2862 { 0x139F7, I18N_NOOP(
"D28. Hand") },
2863 { 0x13A00, I18N_NOOP(
"D29. Fist") },
2864 { 0x13A05, I18N_NOOP(
"D30. Finger") },
2865 { 0x13A07, I18N_NOOP(
"D31. Male genitals") },
2866 { 0x13A0D, I18N_NOOP(
"D32. Female genitals") },
2867 { 0x13A12, I18N_NOOP(
"D34. Legs") },
2868 { 0x13A19, I18N_NOOP(
"D35. Leg") },
2869 { 0x13A21, I18N_NOOP(
"D36. Toes") },
2870 { 0x13A30, I18N_NOOP(
"D37. Sole") },
2871 { 0x13A32, I18N_NOOP(
"D39. Human parts, varia") },
2872 { 0x13A36, I18N_NOOP(
"E01. Donkey") },
2873 { 0x13A4C, I18N_NOOP(
"E02. Sethian animal") },
2874 { 0x13A5A, I18N_NOOP(
"E03. Antelope") },
2875 { 0x13A67, I18N_NOOP(
"E04. Ram and ewe") },
2876 { 0x13A75, I18N_NOOP(
"E05. Bubale") },
2877 { 0x13A7C, I18N_NOOP(
"E06. Dog, jackal standing") },
2878 { 0x13A86, I18N_NOOP(
"E07. Dog, jackal sitting") },
2879 { 0x13A99, I18N_NOOP(
"E08. Cat") },
2880 { 0x13AA5, I18N_NOOP(
"E09. Horse") },
2881 { 0x13AAA, I18N_NOOP(
"E10. Goat and kid") },
2882 { 0x13AAE, I18N_NOOP(
"E13. Griffin") },
2883 { 0x13AB0, I18N_NOOP(
"E14. Hippopotamus") },
2884 { 0x13ABB, I18N_NOOP(
"E15. Hyena") },
2885 { 0x13ABD, I18N_NOOP(
"E16. Hare") },
2886 { 0x13AC1, I18N_NOOP(
"E17. Lion") },
2887 { 0x13AE5, I18N_NOOP(
"E18. Panther") },
2888 { 0x13AE7, I18N_NOOP(
"E19. Pig") },
2889 { 0x13AE8, I18N_NOOP(
"E20. Monkey") },
2890 { 0x13B14, I18N_NOOP(
"E21. Mouse") },
2891 { 0x13B15, I18N_NOOP(
"E22. Sphinx") },
2892 { 0x13B29, I18N_NOOP(
"E23. Bovid") },
2893 { 0x13B57, I18N_NOOP(
"E25. Calf") },
2894 { 0x13B59, I18N_NOOP(
"E26. Mammals, varia") },
2895 { 0x13B5C, I18N_NOOP(
"F01. Donkey head") },
2896 { 0x13B60, I18N_NOOP(
"F02. Ram head") },
2897 { 0x13B6A, I18N_NOOP(
"F03. Bovidae heads") },
2898 { 0x13B76, I18N_NOOP(
"F04. Dog head") },
2899 { 0x13B81, I18N_NOOP(
"F05. Animal heads on stick or leg") },
2900 { 0x13B87, I18N_NOOP(
"F06. Cervidae heads") },
2901 { 0x13B8F, I18N_NOOP(
"F07. Hippopotamus head") },
2902 { 0x13B90, I18N_NOOP(
"F08. Lion head and protome") },
2903 { 0x13B97, I18N_NOOP(
"F09. Donkey and horse protomes") },
2904 { 0x13BA1, I18N_NOOP(
"F10. Animal head, varia") },
2905 { 0x13BA4, I18N_NOOP(
"F11. Bovidae horns") },
2906 { 0x13BAA, I18N_NOOP(
"F12. Ram horns") },
2907 { 0x13BAC, I18N_NOOP(
"F14. Elephant tusk") },
2908 { 0x13BB2, I18N_NOOP(
"F15. Jaws") },
2909 { 0x13BB3, I18N_NOOP(
"F16. Tongue") },
2910 { 0x13BB6, I18N_NOOP(
"F17. Ear") },
2911 { 0x13BB7, I18N_NOOP(
"F18. Hindquarter") },
2912 { 0x13BB8, I18N_NOOP(
"F19. Leg") },
2913 { 0x13BC5, I18N_NOOP(
"F20. Skin") },
2914 { 0x13BD4, I18N_NOOP(
"F21. Teat") },
2915 { 0x13BD6, I18N_NOOP(
"F22. Tail") },
2916 { 0x13BD7, I18N_NOOP(
"F23. Heart") },
2917 { 0x13BDD, I18N_NOOP(
"F24. Heart and lungs") },
2918 { 0x13BE3, I18N_NOOP(
"F25. Spine") },
2919 { 0x13BF0, I18N_NOOP(
"F26. Vertebrae and ribs") },
2920 { 0x13BF7, I18N_NOOP(
"F27. Haunch") },
2921 { 0x13BFD, I18N_NOOP(
"F28. Intestines") },
2922 { 0x13C01, I18N_NOOP(
"F30. Excrements, pustule") },
2923 { 0x13C03, I18N_NOOP(
"F31. Placenta") },
2924 { 0x13C05, I18N_NOOP(
"F32. Mammal parts, varia") },
2925 { 0x13C0B, I18N_NOOP(
"G01. Ostrich") },
2926 { 0x13C0D, I18N_NOOP(
"G02. Buzzard") },
2927 { 0x13C0E, I18N_NOOP(
"G04. Duck") },
2928 { 0x13C15, I18N_NOOP(
"G05. Duck, flying") },
2929 { 0x13C21, I18N_NOOP(
"G06. Duck tied to a pole") },
2930 { 0x13C25, I18N_NOOP(
"G08. Goose") },
2931 { 0x13C2C, I18N_NOOP(
"G09. Owl") },
2932 { 0x13C31, I18N_NOOP(
"G10. Cormorant") },
2933 { 0x13C32, I18N_NOOP(
"G11. Wader: ibis, flamingo, stork, heron, egret") },
2934 { 0x13C6B, I18N_NOOP(
"G12. Falcon") },
2935 { 0x13CAD, I18N_NOOP(
"G13. Falcon opening his wings") },
2936 { 0x13CBF, I18N_NOOP(
"G14. Falcon legs bent") },
2937 { 0x13CC3, I18N_NOOP(
"G15. Falcon mummified or emblem of falcon") },
2938 { 0x13CCF, I18N_NOOP(
"G16. Swallow, sparrow") },
2939 { 0x13CD2, I18N_NOOP(
"G17. Hoopoe") },
2940 { 0x13CD5, I18N_NOOP(
"G18. Bird, human-headed") },
2941 { 0x13CDE, I18N_NOOP(
"G19. Bird, dog- or ram-headed") },
2942 { 0x13CE0, I18N_NOOP(
"G20. Chick or sitting duck") },
2943 { 0x13CF0, I18N_NOOP(
"G21. Pelican") },
2944 { 0x13CF1, I18N_NOOP(
"G22. Guinea fowl") },
2945 { 0x13CF7, I18N_NOOP(
"G23. Peewit, lapwing") },
2946 { 0x13CFC, I18N_NOOP(
"G24. Vulture") },
2947 { 0x13D09, I18N_NOOP(
"G25. Vulture, with open wings") },
2948 { 0x13D0D, I18N_NOOP(
"G26. Vulture (Neophron percnopterus)") },
2949 { 0x13D0F, I18N_NOOP(
"G27. Bird, varia") },
2950 { 0x13D10, I18N_NOOP(
"H01. Falcon head") },
2951 { 0x13D17, I18N_NOOP(
"H02. Falcon eye") },
2952 { 0x13D19, I18N_NOOP(
"H03. Duck/goose head") },
2953 { 0x13D1D, I18N_NOOP(
"H04. Crested bird head") },
2954 { 0x13D1F, I18N_NOOP(
"H06. Vulture head") },
2955 { 0x13D20, I18N_NOOP(
"H07. Wing") },
2956 { 0x13D22, I18N_NOOP(
"H08. Feather") },
2957 { 0x13D26, I18N_NOOP(
"H09. Leg") },
2958 { 0x13D29, I18N_NOOP(
"H10. Egg") },
2959 { 0x13D2B, I18N_NOOP(
"H11. Bird part, varia") },
2960 { 0x13D2F, I18N_NOOP(
"I01. Lizard") },
2961 { 0x13D31, I18N_NOOP(
"I02. Turtle") },
2962 { 0x13D32, I18N_NOOP(
"I03. Crocodile") },
2963 { 0x13D4A, I18N_NOOP(
"I04. Crocodile parts") },
2964 { 0x13D51, I18N_NOOP(
"I05. Frog, tadpole") },
2965 { 0x13D54, I18N_NOOP(
"I06. Viper") },
2966 { 0x13D5C, I18N_NOOP(
"I07. Horned viper") },
2967 { 0x13D65, I18N_NOOP(
"I08. Snake wrt hk.w") },
2968 { 0x13D66, I18N_NOOP(
"I09. Cobra type 1 (I10)") },
2969 { 0x13D73, I18N_NOOP(
"I10. Cobra type 2 (I40)") },
2970 { 0x13D79, I18N_NOOP(
"I11. Cobra type 3 (I64)") },
2971 { 0x13DAB, I18N_NOOP(
"I12. Cobra type 4 (I80)") },
2972 { 0x13DB1, I18N_NOOP(
"I13. Cobra type 5 (I14/I15)") },
2973 { 0x13DC9, I18N_NOOP(
"I14. Snake head") },
2974 { 0x13DCA, I18N_NOOP(
"I15. Snake, varia") },
2975 { 0x13DCC, I18N_NOOP(
"K01. Fishes") },
2976 { 0x13DDB, I18N_NOOP(
"K02. Fish parts") },
2977 { 0x13DE1, I18N_NOOP(
"L01. Scarab") },
2978 { 0x13DEE, I18N_NOOP(
"L02. Bee, fly and wasp") },
2979 { 0x13DF0, I18N_NOOP(
"L03. Grasshopper, locust") },
2980 { 0x13DF1, I18N_NOOP(
"L04. Praying mantis") },
2981 { 0x13DF2, I18N_NOOP(
"L06. Scorpion and water bug") },
2982 { 0x13DF7, I18N_NOOP(
"L07. Insects, varia") },
2983 { 0x13DFA, I18N_NOOP(
"M01. Tree") },
2984 { 0x13E08, I18N_NOOP(
"M02. Palm tree") },
2985 { 0x13E0B, I18N_NOOP(
"M03. Clump type 1") },
2986 { 0x13E0F, I18N_NOOP(
"M04. Branch") },
2987 { 0x13E18, I18N_NOOP(
"M05. Stripped palm branch") },
2988 { 0x13E29, I18N_NOOP(
"M06. Lotus on a pond") },
2989 { 0x13E38, I18N_NOOP(
"M07. Lotus bud") },
2990 { 0x13E3C, I18N_NOOP(
"M08. Lotus flower") },
2991 { 0x13E4F, I18N_NOOP(
"M09. Composite flower bunch") },
2992 { 0x13E59, I18N_NOOP(
"M10. Lotus with bent stem") },
2993 { 0x13E5C, I18N_NOOP(
"M11. Lotus leaf") },
2994 { 0x13E66, I18N_NOOP(
"M12. Papyrus stem") },
2995 { 0x13E73, I18N_NOOP(
"M13. Clump of papyrus and lily") },
2996 { 0x13E84, I18N_NOOP(
"M14. Reed leaf") },
2997 { 0x13E8A, I18N_NOOP(
"M15. Clump of reeds") },
2998 { 0x13E8C, I18N_NOOP(
"M16. Rush with shoots") },
2999 { 0x13E9E, I18N_NOOP(
"M17. Carob pod") },
3000 { 0x13E9F, I18N_NOOP(
"M18. Root") },
3001 { 0x13EA3, I18N_NOOP(
"M19. Rhizome") },
3002 { 0x13EA5, I18N_NOOP(
"M20. Grains") },
3003 { 0x13EA6, I18N_NOOP(
"M21. Ear") },
3004 { 0x13EA8, I18N_NOOP(
"M22. Sheaf (flax bundle)") },
3005 { 0x13EB1, I18N_NOOP(
"M23. Basket of fruits or grains") },
3006 { 0x13EB3, I18N_NOOP(
"M24. Reed bundle") },
3007 { 0x13EB7, I18N_NOOP(
"M26. Vine arbor (grape vines on props)") },
3008 { 0x13EB9, I18N_NOOP(
"M28. Vegetal elements, varia") },
3009 { 0x13EC2, I18N_NOOP(
"N01. Sky") },
3010 { 0x13ED2, I18N_NOOP(
"N02. Sun") },
3011 { 0x13ED3, I18N_NOOP(
"N03. Sun with uraeus") },
3012 { 0x13EDB, I18N_NOOP(
"N04. Sun, radiant, with rays") },
3013 { 0x13EE7, I18N_NOOP(
"N05. Sun with wings") },
3014 { 0x13EF3, I18N_NOOP(
"N06. Moon") },
3015 { 0x13EF6, I18N_NOOP(
"N08. Star") },
3016 { 0x13EF7, I18N_NOOP(
"N09. Flat land") },
3017 { 0x13F01, I18N_NOOP(
"N10. Tongue of land") },
3018 { 0x13F02, I18N_NOOP(
"N11. Canal, irrigated land") },
3019 { 0x13F14, I18N_NOOP(
"N13. Mountain range (desert)") },
3020 { 0x13F1F, I18N_NOOP(
"N14. Sand") },
3021 { 0x13F20, I18N_NOOP(
"N15. Sunrise over mountain (horizon)") },
3022 { 0x13F24, I18N_NOOP(
"N16. Rising sun") },
3023 { 0x13F25, I18N_NOOP(
"N17. Sand slope, hill with shrubs (mound)") },
3024 { 0x13F29, I18N_NOOP(
"N18. Road bordered with shrubs (road)") },
3025 { 0x13F30, I18N_NOOP(
"N19. Water") },
3026 { 0x13F34, I18N_NOOP(
"N20. Canal and pool") },
3027 { 0x13F44, I18N_NOOP(
"N21. Well") },
3028 { 0x13F46, I18N_NOOP(
"N22. Sky, ground, earth, varia") },
3029 { 0x13F4C, I18N_NOOP(
"O01. House") },
3030 { 0x13F53, I18N_NOOP(
"O02. Reed shelter, winding wall (enclosure)") },
3031 { 0x13F55, I18N_NOOP(
"O03. Plan of rectangular enclosure") },
3032 { 0x13F62, I18N_NOOP(
"O04. Palace with battlements") },
3033 { 0x13F6A, I18N_NOOP(
"O05. Enclosure with battlements") },
3034 { 0x13F7B, I18N_NOOP(
"O06. Palace or tomb façade") },
3035 { 0x13F88, I18N_NOOP(
"O07. Shrine façade") },
3036 { 0x13F92, I18N_NOOP(
"O08. Door and gateway with snake") },
3037 { 0x13F9B, I18N_NOOP(
"O09. Shrine") },
3038 { 0x13FB7, I18N_NOOP(
"O10. Open shelter") },
3039 { 0x13FC0, I18N_NOOP(
"O11. Double platform (sed-festival)") },
3040 { 0x13FD8, I18N_NOOP(
"O12. Pyramid") },
3041 { 0x13FDA, I18N_NOOP(
"O13. Obelisk") },
3042 { 0x13FDD, I18N_NOOP(
"O14. Stela") },
3043 { 0x13FDF, I18N_NOOP(
"O16. Column (support)") },
3044 { 0x13FEE, I18N_NOOP(
"O18. Door bolt") },
3045 { 0x13FF3, I18N_NOOP(
"O19. Building angle") },
3046 { 0x13FF4, I18N_NOOP(
"O20. Stairway") },
3047 { 0x13FF5, I18N_NOOP(
"O21. Fence") },
3048 { 0x13FFF, I18N_NOOP(
"O22. Grain mound on mud floor") },
3049 { 0x14006, I18N_NOOP(
"O23. Frieze elements") },
3050 { 0x14008, I18N_NOOP(
"O24. Architecture elements") },
3051 { 0x1401A, I18N_NOOP(
"P01. Boat") },
3052 { 0x1403D, I18N_NOOP(
"P02. Sailboat") },
3053 { 0x14043, I18N_NOOP(
"P03. Sacred boat") },
3054 { 0x14076, I18N_NOOP(
"P04. Boat with net") },
3055 { 0x1407A, I18N_NOOP(
"P05. Boat, varia") },
3056 { 0x1407B, I18N_NOOP(
"P06. Sail") },
3057 { 0x1408B, I18N_NOOP(
"P07. Mast") },
3058 { 0x14091, I18N_NOOP(
"P08. Oar") },
3059 { 0x14092, I18N_NOOP(
"P09. Steering oar") },
3060 { 0x14094, I18N_NOOP(
"P10. Mooring post") },
3061 { 0x14095, I18N_NOOP(
"P11. Steering gear") },
3062 { 0x14098, I18N_NOOP(
"P13. Boat parts, varia") },
3063 { 0x14099, I18N_NOOP(
"Q01. Seat") },
3064 { 0x140A6, I18N_NOOP(
"Q02. Headrest") },
3065 { 0x140A8, I18N_NOOP(
"Q03. Bed") },
3066 { 0x140B0, I18N_NOOP(
"Q04. Mirror and base") },
3067 { 0x140B2, I18N_NOOP(
"Q05. Chest and coffin") },
3068 { 0x140C6, I18N_NOOP(
"Q06. Brazier") },
3069 { 0x140CB, I18N_NOOP(
"Q07. Furniture, varia") },
3070 { 0x140CF, I18N_NOOP(
"R01. Table for offerings") },
3071 { 0x140D4, I18N_NOOP(
"R02. Low table (dresser)") },
3072 { 0x140E7, I18N_NOOP(
"R03. Altar") },
3073 { 0x140F2, I18N_NOOP(
"R04. Bread loaf on a mat") },
3074 { 0x140F3, I18N_NOOP(
"R05. Censer") },
3075 { 0x140F9, I18N_NOOP(
"R06. Incense bowl") },
3076 { 0x140FC, I18N_NOOP(
"R07. Flag") },
3077 { 0x14112, I18N_NOOP(
"R08. Reed column") },
3078 { 0x14115, I18N_NOOP(
"R09. Standard") },
3079 { 0x1411F, I18N_NOOP(
"R11. West or right side emblem") },
3080 { 0x14128, I18N_NOOP(
"R12. East or left side emblem") },
3081 { 0x14133, I18N_NOOP(
"R13. Emblem type R80") },
3082 { 0x14134, I18N_NOOP(
"R14. Emblem of eighth nome of Upper Egypt") },
3083 { 0x1413E, I18N_NOOP(
"R15. Nefertoum emblem") },
3084 { 0x14141, I18N_NOOP(
"R16. Seth emblem") },
3085 { 0x14144, I18N_NOOP(
"R17. Seshat emblem") },
3086 { 0x14145, I18N_NOOP(
"R18. Min emblem") },
3087 { 0x14148, I18N_NOOP(
"R20. Sign mks") },
3088 { 0x14149, I18N_NOOP(
"R22. Shedet emblem") },
3089 { 0x1414A, I18N_NOOP(
"R23. Temple furniture, varia") },
3090 { 0x1414D, I18N_NOOP(
"S01. White crown of Upper Egypt") },
3091 { 0x14157, I18N_NOOP(
"S02. Red crown of Lower Egypt") },
3092 { 0x1415B, I18N_NOOP(
"S03. Union of red crown of Lower Egypt and white crown of Upper Egypt") },
3093 { 0x1415C, I18N_NOOP(
"S04. Blue crown") },
3094 { 0x1415D, I18N_NOOP(
"S05. Head cloth") },
3095 { 0x14164, I18N_NOOP(
"S06. Band of head cloth with loop and ties at the back") },
3096 { 0x14166, I18N_NOOP(
"S07. Atef crown") },
3097 { 0x1416B, I18N_NOOP(
"S08. Hemhem crown") },
3098 { 0x1416E, I18N_NOOP(
"S09. Double plumes headdress") },
3099 { 0x14182, I18N_NOOP(
"S10. Headband") },
3100 { 0x14187, I18N_NOOP(
"S11. Collar") },
3101 { 0x141A8, I18N_NOOP(
"S12. Seal") },
3102 { 0x141AA, I18N_NOOP(
"S13. Knots, bracelets, garment with knots") },
3103 { 0x141AF, I18N_NOOP(
"S14. Loincloth, apron") },
3104 { 0x141B1, I18N_NOOP(
"S15. Cloth") },
3105 { 0x141C5, I18N_NOOP(
"S17. Sandal strap, ankh") },
3106 { 0x141CA, I18N_NOOP(
"S20. Sunshade type 2 (S36)") },
3107 { 0x141CF, I18N_NOOP(
"S21. Sunshade type 3 (S37D)") },
3108 { 0x141D3, I18N_NOOP(
"S22. Sceptre type 1 (crook)") },
3109 { 0x141D4, I18N_NOOP(
"S23. Sceptre type 2 (Seth animal)") },
3110 { 0x141D8, I18N_NOOP(
"S24. Sceptre type 3 (S42)") },
3111 { 0x141DB, I18N_NOOP(
"S25. Sticks, other sceptres") },
3112 { 0x141E3, I18N_NOOP(
"S26. Flabellum") },
3113 { 0x141E5, I18N_NOOP(
"S27. Seth tool") },
3114 { 0x141E9, I18N_NOOP(
"S28. Collar counterweight, bag of clothes") },
3115 { 0x141F1, I18N_NOOP(
"S29. S category, varia") },
3116 { 0x141F7, I18N_NOOP(
"T01. Mace") },
3117 { 0x14201, I18N_NOOP(
"T02. Shield") },
3118 { 0x14204, I18N_NOOP(
"T03. Axe") },
3119 { 0x14206, I18N_NOOP(
"T04. Axe head") },
3120 { 0x14207, I18N_NOOP(
"T05. Dagger") },
3121 { 0x14208, I18N_NOOP(
"T06. Bow") },
3122 { 0x1420C, I18N_NOOP(
"T07. Arrow, quiver, cover of a quiver") },
3123 { 0x14224, I18N_NOOP(
"T08. Bowstring") },
3124 { 0x14229, I18N_NOOP(
"T09. Throwing stick") },
3125 { 0x1422F, I18N_NOOP(
"T10. Scimitar") },
3126 { 0x14235, I18N_NOOP(
"T12. Crook with package") },
3127 { 0x14238, I18N_NOOP(
"T13. Harpoon") },
3128 { 0x14258, I18N_NOOP(
"T14. Fishing net (sideways)") },
3129 { 0x14261, I18N_NOOP(
"T15. Reed float") },
3130 { 0x14266, I18N_NOOP(
"T16. Trap") },
3131 { 0x14274, I18N_NOOP(
"T18. Knife") },
3132 { 0x14287, I18N_NOOP(
"T19. Sharpener, butcher's knife") },
3133 { 0x14289, I18N_NOOP(
"T20. Knife pesesh-kaf") },
3134 { 0x1428A, I18N_NOOP(
"T21. T category, varia") },
3135 { 0x1428F, I18N_NOOP(
"U01. Sickle") },
3136 { 0x14290, I18N_NOOP(
"U02. Hoe") },
3137 { 0x14295, I18N_NOOP(
"U03. Grain measure") },
3138 { 0x1429C, I18N_NOOP(
"U05. Plow") },
3139 { 0x142A3, I18N_NOOP(
"U06. Sled (protome)") },
3140 { 0x142A9, I18N_NOOP(
"U07. Planted Pick") },
3141 { 0x142AB, I18N_NOOP(
"U08. Adze") },
3142 { 0x142B1, I18N_NOOP(
"U09. Chisel and Drill") },
3143 { 0x142D8, I18N_NOOP(
"U11. Kiln and ingot") },
3144 { 0x142DA, I18N_NOOP(
"U12. Pestle") },
3145 { 0x142DE, I18N_NOOP(
"U13. Spindle (stopper)") },
3146 { 0x142DF, I18N_NOOP(
"U15. Razor") },
3147 { 0x142E2, I18N_NOOP(
"U16. Scale, measuring instrument") },
3148 { 0x142FB, I18N_NOOP(
"U17. Potter's wheel") },
3149 { 0x14301, I18N_NOOP(
"U18. Press (wine, oil), warp extended between poles") },
3150 { 0x14313, I18N_NOOP(
"U19. Riddle (coarse sieve)") },
3151 { 0x14316, I18N_NOOP(
"U21. Mill tool") },
3152 { 0x14319, I18N_NOOP(
"U22. U category, varia") },
3153 { 0x1431E, I18N_NOOP(
"V01. Rope and rope coils") },
3154 { 0x14324, I18N_NOOP(
"V02. Round cartouche, knot") },
3155 { 0x14325, I18N_NOOP(
"V03. Cartouche") },
3156 { 0x14326, I18N_NOOP(
"V04. String, tethering rope, hobble") },
3157 { 0x14333, I18N_NOOP(
"V05. Whip") },
3158 { 0x14335, I18N_NOOP(
"V06. Cord on stick") },
3159 { 0x14336, I18N_NOOP(
"V07. Spool with thread") },
3160 { 0x14337, I18N_NOOP(
"V08. Wick and swab") },
3161 { 0x14343, I18N_NOOP(
"V09. Basket") },
3162 { 0x14346, I18N_NOOP(
"V10. Woven basket") },
3163 { 0x14347, I18N_NOOP(
"V11. Wicker satchel") },
3164 { 0x1434A, I18N_NOOP(
"V14. Receptacle, bunch") },
3165 { 0x14352, I18N_NOOP(
"V15. Bandage, receptacle") },
3166 { 0x14356, I18N_NOOP(
"V16. Bushel") },
3167 { 0x14357, I18N_NOOP(
"V17. Net") },
3168 { 0x14359, I18N_NOOP(
"W01. Oil vessel") },
3169 { 0x14363, I18N_NOOP(
"W02. Alabaster basin") },
3170 { 0x14367, I18N_NOOP(
"W03. Stone jug (hnm)") },
3171 { 0x1436C, I18N_NOOP(
"W04. Cup") },
3172 { 0x1436D, I18N_NOOP(
"W05. Stand") },
3173 { 0x1436E, I18N_NOOP(
"W06. Tall jar") },
3174 { 0x1437F, I18N_NOOP(
"W07. Milk jug") },
3175 { 0x14383, I18N_NOOP(
"W08. Situla") },
3176 { 0x14386, I18N_NOOP(
"W09. Jug pouring liquid") },
3177 { 0x14389, I18N_NOOP(
"W10. Wine jars (twin jars)") },
3178 { 0x1438E, I18N_NOOP(
"W11. Receptacles, varia") },
3179 { 0x143BC, I18N_NOOP(
"X02. Tall bread loaf") },
3180 { 0x143C0, I18N_NOOP(
"X03. Bread type 1 (X3)") },
3181 { 0x143C3, I18N_NOOP(
"X04. Bread roll type 2") },
3182 { 0x143C9, I18N_NOOP(
"X05. Bread roll type 3 (X5)") },
3183 { 0x143CA, I18N_NOOP(
"X06. Bread type 4 (X6)") },
3184 { 0x143CD, I18N_NOOP(
"X08. Other breads") },
3185 { 0x143CF, I18N_NOOP(
"Y01. Papyrus scroll") },
3186 { 0x143D1, I18N_NOOP(
"Y02. Scribal kit, graver") },
3187 { 0x143D8, I18N_NOOP(
"Y03. Game board and piece (senet)") },
3188 { 0x143D9, I18N_NOOP(
"Y04. Harp") },
3189 { 0x143DE, I18N_NOOP(
"Y05. Tambourine and ball") },
3190 { 0x143E1, I18N_NOOP(
"Y06. Sistrum") },
3191 { 0x143E7, I18N_NOOP(
"Z01. Strokes") },
3192 { 0x143E9, I18N_NOOP(
"Z02. Cross") },
3193 { 0x143EB, I18N_NOOP(
"Z03. Squares and rectangles") },
3194 { 0x143EC, I18N_NOOP(
"Z04. Triangles, lozenges") },
3195 { 0x143EE, I18N_NOOP(
"Z06. Geometric shapes, varia") },
3196 { 0x143F3, I18N_NOOP(
"Z07. Hieratic signs") },
3197 { 0x143F7, I18N_NOOP(
"AA08. Sign type 8") },
3198 { 0x143F8, I18N_NOOP(
"AA22. Unclassified signs, varia") },
3201constexpr TDEUnicodeData::Subcategory AnatolianHieroglyphs[] = {
3202 { 0x14400, I18N_NOOP(
"A. The human body and clothing") },
3203 { 0x1446A, I18N_NOOP(
"B. Animals") },
3204 { 0x144B0, I18N_NOOP(
"C. Plants") },
3205 { 0x144D1, I18N_NOOP(
"D. Nature") },
3206 { 0x14502, I18N_NOOP(
"E. Buildings") },
3207 { 0x14530, I18N_NOOP(
"F. Arms, tools, furniture, and other instruments") },
3208 { 0x14577, I18N_NOOP(
"G. Vases and receptacles") },
3209 { 0x14596, I18N_NOOP(
"H. Symbols") },
3210 { 0x145AD, I18N_NOOP(
"J. Lines, numbers, and geometric shapes") },
3211 { 0x145E6, I18N_NOOP(
"K. Varia") },
3212 { 0x14629, I18N_NOOP(
"M. Additional signs") },
3215constexpr TDEUnicodeData::Subcategory GurungKhema[] = {
3216 { 0x16100, I18N_NOOP(
"Vowel carrier") },
3217 { 0x16101, I18N_NOOP(
"Consonants") },
3218 { 0x1611E, I18N_NOOP(
"Vowel signs") },
3219 { 0x16129, I18N_NOOP(
"Vowel length mark") },
3220 { 0x1612A, I18N_NOOP(
"Medial consonant signs") },
3221 { 0x1612D, I18N_NOOP(
"Various signs") },
3222 { 0x16130, I18N_NOOP(
"Digits") },
3225constexpr TDEUnicodeData::Subcategory BamumSupplement[] = {
3226 { 0x16800, I18N_NOOP(
"Characters found through Phase A") },
3227 { 0x16857, I18N_NOOP(
"Characters found through Phase B") },
3228 { 0x1688F, I18N_NOOP(
"Characters found through Phase C") },
3229 { 0x168F1, I18N_NOOP(
"Characters found through Phase D") },
3230 { 0x16966, I18N_NOOP(
"Characters found through Phase E") },
3231 { 0x16A03, I18N_NOOP(
"Characters found through Phase F") },
3234constexpr TDEUnicodeData::Subcategory Mro[] = {
3235 { 0x16A40, I18N_NOOP(
"Letters") },
3236 { 0x16A60, I18N_NOOP(
"Digits") },
3237 { 0x16A6E, I18N_NOOP(
"Punctuation") },
3240constexpr TDEUnicodeData::Subcategory Tangsa[] = {
3241 { 0x16A70, I18N_NOOP(
"Vowels") },
3242 { 0x16AA0, I18N_NOOP(
"Consonants") },
3243 { 0x16AC0, I18N_NOOP(
"Digits") },
3246constexpr TDEUnicodeData::Subcategory BassaVah[] = {
3247 { 0x16AD0, I18N_NOOP(
"Consonant letters") },
3248 { 0x16AE7, I18N_NOOP(
"Vowel letters") },
3249 { 0x16AF0, I18N_NOOP(
"Combining tone marks") },
3250 { 0x16AF5, I18N_NOOP(
"Punctuation") },
3253constexpr TDEUnicodeData::Subcategory PahawhHmong[] = {
3254 { 0x16B00, I18N_NOOP(
"Vowel rimes") },
3255 { 0x16B1C, I18N_NOOP(
"Consonant onsets") },
3256 { 0x16B30, I18N_NOOP(
"Combining diacritical marks") },
3257 { 0x16B37, I18N_NOOP(
"Punctuation") },
3258 { 0x16B3C, I18N_NOOP(
"Mathematical operators") },
3259 { 0x16B40, I18N_NOOP(
"Modifier letters") },
3260 { 0x16B44, I18N_NOOP(
"Punctuation") },
3261 { 0x16B50, I18N_NOOP(
"Digits") },
3262 { 0x16B5B, I18N_NOOP(
"Numbers") },
3263 { 0x16B63, I18N_NOOP(
"Logographs") },
3264 { 0x16B7D, I18N_NOOP(
"Logographs for clan names") },
3267constexpr TDEUnicodeData::Subcategory KiratRai[] = {
3268 { 0x16D40, I18N_NOOP(
"Various signs") },
3269 { 0x16D43, I18N_NOOP(
"Independent vowel") },
3270 { 0x16D44, I18N_NOOP(
"Consonants") },
3271 { 0x16D63, I18N_NOOP(
"Vowel signs") },
3272 { 0x16D6B, I18N_NOOP(
"Various signs") },
3273 { 0x16D6E, I18N_NOOP(
"Punctuation") },
3274 { 0x16D70, I18N_NOOP(
"Digits") },
3277constexpr TDEUnicodeData::Subcategory Medefaidrin[] = {
3278 { 0x16E40, I18N_NOOP(
"Uppercase letters") },
3279 { 0x16E60, I18N_NOOP(
"Lowercase letters") },
3280 { 0x16E80, I18N_NOOP(
"Digits") },
3281 { 0x16E8A, I18N_NOOP(
"Numbers") },
3282 { 0x16E94, I18N_NOOP(
"Alternate digits") },
3283 { 0x16E97, I18N_NOOP(
"Punctuation") },
3284 { 0x16E99, I18N_NOOP(
"Symbols") },
3287constexpr TDEUnicodeData::Subcategory BeriaErfe[] = {
3288 { 0x16EA0, I18N_NOOP(
"Uppercase letters") },
3289 { 0x16EBB, I18N_NOOP(
"Lowercase letters") },
3292constexpr TDEUnicodeData::Subcategory Miao[] = {
3293 { 0x16F00, I18N_NOOP(
"Consonant onsets") },
3294 { 0x16F4F, I18N_NOOP(
"Modifiers") },
3295 { 0x16F54, I18N_NOOP(
"Vowels and finals") },
3296 { 0x16F8F, I18N_NOOP(
"Positioning tone marks") },
3297 { 0x16F93, I18N_NOOP(
"Baseline tone marks") },
3298 { 0x16F9A, I18N_NOOP(
"Archaic baseline tone marks") },
3301constexpr TDEUnicodeData::Subcategory IdeographicSymbolsandPunctuation[] = {
3302 { 0x16FE0, I18N_NOOP(
"Tangut mark") },
3303 { 0x16FE1, I18N_NOOP(
"Nushu mark") },
3304 { 0x16FE2, I18N_NOOP(
"Marks used in ancient Chinese texts") },
3305 { 0x16FE4, I18N_NOOP(
"Small Khitan format character") },
3306 { 0x16FF0, I18N_NOOP(
"Combining diacritics for CJK ideographs") },
3307 { 0x16FF2, I18N_NOOP(
"Characters used for rhotacization") },
3308 { 0x16FF4, I18N_NOOP(
"Characters used for Cantonese music") },
3311constexpr TDEUnicodeData::Subcategory Tangut[] = {
3314constexpr TDEUnicodeData::Subcategory TangutComponents[] = {
3315 { 0x18800, I18N_NOOP(
"One-stroke components") },
3316 { 0x1880A, I18N_NOOP(
"Two-stroke components") },
3317 { 0x18826, I18N_NOOP(
"Three-stroke components") },
3318 { 0x18860, I18N_NOOP(
"Four-stroke components") },
3319 { 0x188CC, I18N_NOOP(
"Five-stroke components") },
3320 { 0x18959, I18N_NOOP(
"Six-stroke components") },
3321 { 0x189DB, I18N_NOOP(
"Seven-stroke components") },
3322 { 0x18A41, I18N_NOOP(
"Eight-stroke components") },
3323 { 0x18A99, I18N_NOOP(
"Nine-stroke components") },
3324 { 0x18AA4, I18N_NOOP(
"Ten-stroke component") },
3325 { 0x18AA5, I18N_NOOP(
"Nine-stroke components") },
3326 { 0x18AC1, I18N_NOOP(
"Ten-stroke components") },
3327 { 0x18AD5, I18N_NOOP(
"Eleven-stroke components") },
3328 { 0x18AE3, I18N_NOOP(
"Twelve-stroke components") },
3329 { 0x18AEC, I18N_NOOP(
"Thirteen-stroke components") },
3330 { 0x18AF2, I18N_NOOP(
"Sixteen-stroke component") },
3331 { 0x18AF3, I18N_NOOP(
"Additional components") },
3334constexpr TDEUnicodeData::Subcategory KhitanSmallScript[] = {
3335 { 0x18B00, I18N_NOOP(
"Iteration mark") },
3336 { 0x18B01, I18N_NOOP(
"Radical-01") },
3337 { 0x18B36, I18N_NOOP(
"Radical-02") },
3338 { 0x18B6A, I18N_NOOP(
"Radical-03") },
3339 { 0x18B94, I18N_NOOP(
"Radical-04") },
3340 { 0x18BAD, I18N_NOOP(
"Radical-05") },
3341 { 0x18BD2, I18N_NOOP(
"Radical-06") },
3342 { 0x18C01, I18N_NOOP(
"Radical-07") },
3343 { 0x18C13, I18N_NOOP(
"Radical-08") },
3344 { 0x18C28, I18N_NOOP(
"Radical-09") },
3345 { 0x18C2F, I18N_NOOP(
"Radical-10") },
3346 { 0x18C37, I18N_NOOP(
"Radical-11") },
3347 { 0x18C4C, I18N_NOOP(
"Radical-12") },
3348 { 0x18C52, I18N_NOOP(
"Radical-13") },
3349 { 0x18C64, I18N_NOOP(
"Radical-14") },
3350 { 0x18C7F, I18N_NOOP(
"Radical-15") },
3351 { 0x18C8C, I18N_NOOP(
"Radical-16") },
3352 { 0x18C95, I18N_NOOP(
"Radical-17") },
3353 { 0x18CC0, I18N_NOOP(
"Radical-18") },
3354 { 0x18CCC, I18N_NOOP(
"Radical-19") },
3355 { 0x18CD3, I18N_NOOP(
"Radical-20") },
3356 { 0x18CFF, I18N_NOOP(
"Indication of missing character") },
3359constexpr TDEUnicodeData::Subcategory TangutSupplement[] = {
3362constexpr TDEUnicodeData::Subcategory TangutComponentsSupplement[] = {
3363 { 0x18D80, I18N_NOOP(
"Miscellaneous components") },
3364 { 0x18D82, I18N_NOOP(
"One-stroke components") },
3365 { 0x18D84, I18N_NOOP(
"Two-stroke component") },
3366 { 0x18D85, I18N_NOOP(
"Three-stroke component") },
3367 { 0x18D86, I18N_NOOP(
"Four-stroke components") },
3368 { 0x18D89, I18N_NOOP(
"Five-stroke components") },
3369 { 0x18D91, I18N_NOOP(
"Six-stroke components") },
3370 { 0x18D9D, I18N_NOOP(
"Seven-stroke components") },
3371 { 0x18DAE, I18N_NOOP(
"Eight-stroke components") },
3372 { 0x18DC4, I18N_NOOP(
"Nine-stroke components") },
3373 { 0x18DD9, I18N_NOOP(
"Ten-stroke components") },
3374 { 0x18DE7, I18N_NOOP(
"Eleven-stroke components") },
3375 { 0x18DEB, I18N_NOOP(
"Twelve-stroke components") },
3376 { 0x18DEF, I18N_NOOP(
"Thirteen-stroke components") },
3377 { 0x18DF2, I18N_NOOP(
"Fourteen-stroke component") },
3380constexpr TDEUnicodeData::Subcategory KanaExtendedB[] = {
3381 { 0x1AFF0, I18N_NOOP(
"Tone marks") },
3382 { 0x1AFF7, I18N_NOOP(
"Nasalized tone marks") },
3385constexpr TDEUnicodeData::Subcategory KanaSupplement[] = {
3386 { 0x1B000, I18N_NOOP(
"Historic Katakana") },
3387 { 0x1B001, I18N_NOOP(
"Historic Hiragana and Hentaigana") },
3388 { 0x1B002, I18N_NOOP(
"Hentaigana") },
3391constexpr TDEUnicodeData::Subcategory KanaExtendedA[] = {
3392 { 0x1B100, I18N_NOOP(
"Hentaigana") },
3393 { 0x1B11F, I18N_NOOP(
"Historic Hiragana") },
3394 { 0x1B120, I18N_NOOP(
"Historic Katakana") },
3397constexpr TDEUnicodeData::Subcategory SmallKanaExtension[] = {
3398 { 0x1B132, I18N_NOOP(
"Historic small hiragana letters") },
3399 { 0x1B155, I18N_NOOP(
"Historic small katakana letters") },
3402constexpr TDEUnicodeData::Subcategory Nushu[] = {
3403 { 0x1B170, I18N_NOOP(
"One-stroke character") },
3404 { 0x1B171, I18N_NOOP(
"Two-stroke characters") },
3405 { 0x1B178, I18N_NOOP(
"Three-stroke characters") },
3406 { 0x1B18B, I18N_NOOP(
"Four-stroke characters") },
3407 { 0x1B1A8, I18N_NOOP(
"Five-stroke characters") },
3408 { 0x1B1DE, I18N_NOOP(
"Six-stroke characters") },
3409 { 0x1B216, I18N_NOOP(
"Seven-stroke characters") },
3410 { 0x1B244, I18N_NOOP(
"Eight-stroke characters") },
3411 { 0x1B284, I18N_NOOP(
"Nine-stroke characters") },
3412 { 0x1B2B0, I18N_NOOP(
"Ten-stroke characters") },
3413 { 0x1B2CE, I18N_NOOP(
"Eleven-stroke characters") },
3414 { 0x1B2E1, I18N_NOOP(
"Twelve-stroke characters") },
3415 { 0x1B2EE, I18N_NOOP(
"Thirteen-stroke characters") },
3416 { 0x1B2F4, I18N_NOOP(
"Fourteen-stroke characters") },
3417 { 0x1B2F7, I18N_NOOP(
"Fifteen-stroke characters") },
3418 { 0x1B2FA, I18N_NOOP(
"Sixteen-stroke characters") },
3421constexpr TDEUnicodeData::Subcategory Duployan[] = {
3422 { 0x1BC00, I18N_NOOP(
"Non-joining consonants") },
3423 { 0x1BC02, I18N_NOOP(
"Line consonants") },
3424 { 0x1BC19, I18N_NOOP(
"Arc consonants") },
3425 { 0x1BC32, I18N_NOOP(
"Quarter-arc consonants written downwards") },
3426 { 0x1BC3B, I18N_NOOP(
"Quarter-arc consonants written upwards") },
3427 { 0x1BC41, I18N_NOOP(
"Circle vowels") },
3428 { 0x1BC46, I18N_NOOP(
"Semi-circle vowels") },
3429 { 0x1BC4F, I18N_NOOP(
"Diagonal-line vowels") },
3430 { 0x1BC51, I18N_NOOP(
"Quarter-circle vowels") },
3431 { 0x1BC55, I18N_NOOP(
"Other vowels") },
3432 { 0x1BC5A, I18N_NOOP(
"Dotted-circle vowels") },
3433 { 0x1BC5C, I18N_NOOP(
"Compound vowels") },
3434 { 0x1BC61, I18N_NOOP(
"Basic nasal vowels") },
3435 { 0x1BC65, I18N_NOOP(
"Additional nasal vowels") },
3436 { 0x1BC70, I18N_NOOP(
"Attached affixes") },
3437 { 0x1BC80, I18N_NOOP(
"High affixes") },
3438 { 0x1BC90, I18N_NOOP(
"Low affixes") },
3439 { 0x1BC9C, I18N_NOOP(
"Miscellaneous sign") },
3440 { 0x1BC9D, I18N_NOOP(
"Sloan R-form selector") },
3441 { 0x1BC9E, I18N_NOOP(
"Shorthand double mark") },
3442 { 0x1BC9F, I18N_NOOP(
"Chinook punctuation") },
3445constexpr TDEUnicodeData::Subcategory ShorthandFormatControls[] = {
3446 { 0x1BCA0, I18N_NOOP(
"Shorthand format controls") },
3449constexpr TDEUnicodeData::Subcategory SymbolsforLegacyComputingSupplement[] = {
3450 { 0x1CC00, I18N_NOOP(
"Game sprites") },
3451 { 0x1CC05, I18N_NOOP(
"Rule segments") },
3452 { 0x1CC08, I18N_NOOP(
"Schematic symbols") },
3453 { 0x1CC1B, I18N_NOOP(
"Box drawing characters") },
3454 { 0x1CC21, I18N_NOOP(
"Separated mosaic terminal graphic characters") },
3455 { 0x1CC30, I18N_NOOP(
"Circle segments") },
3456 { 0x1CC40, I18N_NOOP(
"Fill characters") },
3457 { 0x1CC48, I18N_NOOP(
"Game sprites") },
3458 { 0x1CC6F, I18N_NOOP(
"Emoticon") },
3459 { 0x1CC70, I18N_NOOP(
"Game sprites") },
3460 { 0x1CC86, I18N_NOOP(
"Terminal graphic characters") },
3461 { 0x1CC90, I18N_NOOP(
"Lines with tick marks") },
3462 { 0x1CC92, I18N_NOOP(
"Game sprites") },
3463 { 0x1CCA6, I18N_NOOP(
"Faces") },
3464 { 0x1CCB2, I18N_NOOP(
"Icons") },
3465 { 0x1CCBA, I18N_NOOP(
"Chess symbols") },
3466 { 0x1CCD2, I18N_NOOP(
"Icons") },
3467 { 0x1CCD6, I18N_NOOP(
"Outlined uppercase Latin alphabet") },
3468 { 0x1CCF0, I18N_NOOP(
"Outlined digits") },
3469 { 0x1CCFA, I18N_NOOP(
"Terminal graphic characters") },
3470 { 0x1CD00, I18N_NOOP(
"Block mosaic terminal graphic characters") },
3471 { 0x1CDE6, I18N_NOOP(
"Game sprites") },
3472 { 0x1CE00, I18N_NOOP(
"Terminal graphic characters") },
3473 { 0x1CE0D, I18N_NOOP(
"Dashed lines") },
3474 { 0x1CE0F, I18N_NOOP(
"Lines with tick marks") },
3475 { 0x1CE16, I18N_NOOP(
"Box drawing characters") },
3476 { 0x1CE1A, I18N_NOOP(
"Large type pieces") },
3477 { 0x1CE51, I18N_NOOP(
"Separated mosaic terminal graphic characters") },
3478 { 0x1CE90, I18N_NOOP(
"Block elements") },
3479 { 0x1CEB0, I18N_NOOP(
"Smalltalk symbols") },
3480 { 0x1CEBA, I18N_NOOP(
"Terminal graphic characters") },
3483constexpr TDEUnicodeData::Subcategory MiscellaneousSymbolsSupplement[] = {
3484 { 0x1CEC0, I18N_NOOP(
"Astronomical symbols for asteroids") },
3485 { 0x1CEE0, I18N_NOOP(
"Symbols for geomantic figures") },
3486 { 0x1CEF0, I18N_NOOP(
"Miscellaneous symbol") },
3489constexpr TDEUnicodeData::Subcategory ZnamennyMusicalNotation[] = {
3490 { 0x1CF00, I18N_NOOP(
"Combining red marks") },
3491 { 0x1CF30, I18N_NOOP(
"Combining black marks") },
3492 { 0x1CF42, I18N_NOOP(
"Modifying marks for priznaki") },
3493 { 0x1CF50, I18N_NOOP(
"Znamenny neumes") },
3496constexpr TDEUnicodeData::Subcategory ByzantineMusicalSymbols[] = {
3497 { 0x1D000, I18N_NOOP(
"Prosodies (Prosodics)") },
3498 { 0x1D003, I18N_NOOP(
"Ekfonetika") },
3499 { 0x1D015, I18N_NOOP(
"Melodimata (Melodics)") },
3500 { 0x1D046, I18N_NOOP(
"Fonitika (Vocals)") },
3501 { 0x1D057, I18N_NOOP(
"Afona or Ypostaseis (Mutes or Hypostases)") },
3502 { 0x1D07F, I18N_NOOP(
"Argies (Retards)") },
3503 { 0x1D08A, I18N_NOOP(
"Leimmata or Siopes (Leimmas or Silencers)") },
3504 { 0x1D08F, I18N_NOOP(
"Synagmata or Gorgotites (Synagmas or Quickeners)") },
3505 { 0x1D09A, I18N_NOOP(
"Agogika (Conduits)") },
3506 { 0x1D0A2, I18N_NOOP(
"Ichimata and Martyrika (Ichimas and Evidentials)") },
3507 { 0x1D0B6, I18N_NOOP(
"Fthores (Destroyers)") },
3508 { 0x1D0CB, I18N_NOOP(
"Alloioseis (Differentiators)") },
3509 { 0x1D0DA, I18N_NOOP(
"Rythmika (Rhythmics)") },
3510 { 0x1D0E6, I18N_NOOP(
"Grammata (Letters)") },
3511 { 0x1D0F0, I18N_NOOP(
"Specials") },
3514constexpr TDEUnicodeData::Subcategory MusicalSymbols[] = {
3515 { 0x1D100, I18N_NOOP(
"Bars") },
3516 { 0x1D106, I18N_NOOP(
"Codas") },
3517 { 0x1D10D, I18N_NOOP(
"Figure repetitions") },
3518 { 0x1D110, I18N_NOOP(
"Holds and pauses") },
3519 { 0x1D114, I18N_NOOP(
"Staff brackets") },
3520 { 0x1D116, I18N_NOOP(
"Staves") },
3521 { 0x1D11C, I18N_NOOP(
"Tablature") },
3522 { 0x1D11E, I18N_NOOP(
"Clefs") },
3523 { 0x1D129, I18N_NOOP(
"Rest") },
3524 { 0x1D12A, I18N_NOOP(
"Pitch modifiers") },
3525 { 0x1D134, I18N_NOOP(
"Time signatures") },
3526 { 0x1D136, I18N_NOOP(
"Octaves") },
3527 { 0x1D13A, I18N_NOOP(
"Rests") },
3528 { 0x1D143, I18N_NOOP(
"Noteheads") },
3529 { 0x1D15C, I18N_NOOP(
"Notes") },
3530 { 0x1D165, I18N_NOOP(
"Stems") },
3531 { 0x1D167, I18N_NOOP(
"Tremolos") },
3532 { 0x1D16D, I18N_NOOP(
"Augmentation dot") },
3533 { 0x1D16E, I18N_NOOP(
"Flags") },
3534 { 0x1D173, I18N_NOOP(
"Beams and slurs") },
3535 { 0x1D17B, I18N_NOOP(
"Articulation") },
3536 { 0x1D18F, I18N_NOOP(
"Dynamics") },
3537 { 0x1D194, I18N_NOOP(
"Ornaments") },
3538 { 0x1D1A6, I18N_NOOP(
"Analytics") },
3539 { 0x1D1AA, I18N_NOOP(
"Instrumentation") },
3540 { 0x1D1AE, I18N_NOOP(
"Pedals") },
3541 { 0x1D1B1, I18N_NOOP(
"Miscellaneous symbols") },
3542 { 0x1D1B6, I18N_NOOP(
"Mensural notes") },
3543 { 0x1D1C1, I18N_NOOP(
"Mensural rests") },
3544 { 0x1D1C7, I18N_NOOP(
"Mensural prolations") },
3545 { 0x1D1CF, I18N_NOOP(
"Miscellaneous symbol") },
3546 { 0x1D1D0, I18N_NOOP(
"Clefs") },
3547 { 0x1D1D2, I18N_NOOP(
"Accidental") },
3548 { 0x1D1D3, I18N_NOOP(
"Notes") },
3549 { 0x1D1DE, I18N_NOOP(
"Clef") },
3550 { 0x1D1DF, I18N_NOOP(
"Ornamentation") },
3551 { 0x1D1E0, I18N_NOOP(
"Notes") },
3552 { 0x1D1E8, I18N_NOOP(
"Accidental") },
3553 { 0x1D1E9, I18N_NOOP(
"Accidentals for quarter tones") },
3556constexpr TDEUnicodeData::Subcategory AncientGreekMusicalNotation[] = {
3557 { 0x1D200, I18N_NOOP(
"Ancient Greek vocalic notation") },
3558 { 0x1D21D, I18N_NOOP(
"Ancient Greek instrumental notation") },
3559 { 0x1D242, I18N_NOOP(
"Further Greek musical notation symbols") },
3562constexpr TDEUnicodeData::Subcategory KaktovikNumerals[] = {
3563 { 0x1D2C0, I18N_NOOP(
"Numerals") },
3566constexpr TDEUnicodeData::Subcategory MayanNumerals[] = {
3567 { 0x1D2E0, I18N_NOOP(
"Mayan numerals") },
3570constexpr TDEUnicodeData::Subcategory TaiXuanJingSymbols[] = {
3571 { 0x1D300, I18N_NOOP(
"Monogram") },
3572 { 0x1D301, I18N_NOOP(
"Digrams") },
3573 { 0x1D306, I18N_NOOP(
"Tetragrams") },
3576constexpr TDEUnicodeData::Subcategory CountingRodNumerals[] = {
3577 { 0x1D360, I18N_NOOP(
"Counting rod units") },
3578 { 0x1D372, I18N_NOOP(
"Ideographic tally marks") },
3579 { 0x1D377, I18N_NOOP(
"Western tally marks") },
3582constexpr TDEUnicodeData::Subcategory MathematicalAlphanumericSymbols[] = {
3583 { 0x1D400, I18N_NOOP(
"Bold symbols") },
3584 { 0x1D434, I18N_NOOP(
"Italic symbols") },
3585 { 0x1D468, I18N_NOOP(
"Bold italic symbols") },
3586 { 0x1D49C, I18N_NOOP(
"Script symbols") },
3587 { 0x1D4D0, I18N_NOOP(
"Bold script symbols") },
3588 { 0x1D504, I18N_NOOP(
"Fraktur symbols") },
3589 { 0x1D538, I18N_NOOP(
"Double-struck symbols") },
3590 { 0x1D56C, I18N_NOOP(
"Bold Fraktur symbols") },
3591 { 0x1D5A0, I18N_NOOP(
"Sans-serif symbols") },
3592 { 0x1D5D4, I18N_NOOP(
"Sans-serif bold symbols") },
3593 { 0x1D608, I18N_NOOP(
"Sans-serif italic symbols") },
3594 { 0x1D63C, I18N_NOOP(
"Sans-serif bold italic symbols") },
3595 { 0x1D670, I18N_NOOP(
"Monospace symbols") },
3596 { 0x1D6A4, I18N_NOOP(
"Dotless symbols") },
3597 { 0x1D6A8, I18N_NOOP(
"Bold Greek symbols") },
3598 { 0x1D6DB, I18N_NOOP(
"Additional bold Greek symbols") },
3599 { 0x1D6E2, I18N_NOOP(
"Italic Greek symbols") },
3600 { 0x1D715, I18N_NOOP(
"Additional italic Greek symbols") },
3601 { 0x1D71C, I18N_NOOP(
"Bold italic Greek symbols") },
3602 { 0x1D74F, I18N_NOOP(
"Additional bold italic Greek symbols") },
3603 { 0x1D756, I18N_NOOP(
"Sans-serif bold Greek symbols") },
3604 { 0x1D789, I18N_NOOP(
"Additional sans-serif bold Greek symbols") },
3605 { 0x1D790, I18N_NOOP(
"Sans-serif bold italic Greek symbols") },
3606 { 0x1D7C3, I18N_NOOP(
"Additional sans-serif bold italic Greek symbols") },
3607 { 0x1D7CA, I18N_NOOP(
"Additional bold Greek symbols") },
3608 { 0x1D7CE, I18N_NOOP(
"Bold digits") },
3609 { 0x1D7D8, I18N_NOOP(
"Double-struck digits") },
3610 { 0x1D7E2, I18N_NOOP(
"Sans-serif digits") },
3611 { 0x1D7EC, I18N_NOOP(
"Sans-serif bold digits") },
3612 { 0x1D7F6, I18N_NOOP(
"Monospace digits") },
3615constexpr TDEUnicodeData::Subcategory SuttonSignWriting[] = {
3616 { 0x1D800, I18N_NOOP(
"Hand shapes with index finger") },
3617 { 0x1D80E, I18N_NOOP(
"Hand shapes with index and middle fingers") },
3618 { 0x1D81E, I18N_NOOP(
"Hand shapes with index and middle fingers and thumb") },
3619 { 0x1D844, I18N_NOOP(
"Hand shapes with four fingers") },
3620 { 0x1D84C, I18N_NOOP(
"Hand shapes with five fingers") },
3621 { 0x1D886, I18N_NOOP(
"Hand shapes with little finger") },
3622 { 0x1D8A4, I18N_NOOP(
"Hand shapes with ring finger") },
3623 { 0x1D8BA, I18N_NOOP(
"Hand shapes with middle finger") },
3624 { 0x1D8CD, I18N_NOOP(
"Hand shapes with index finger and thumb") },
3625 { 0x1D8F5, I18N_NOOP(
"Hand shapes with thumb") },
3626 { 0x1D905, I18N_NOOP(
"Contact movement indicators") },
3627 { 0x1D916, I18N_NOOP(
"Finger movement indicators") },
3628 { 0x1D92A, I18N_NOOP(
"Movement indicators") },
3629 { 0x1D9F5, I18N_NOOP(
"Dynamics indicators") },
3630 { 0x1D9FF, I18N_NOOP(
"Head shapes") },
3631 { 0x1DA6D, I18N_NOOP(
"Body shapes") },
3632 { 0x1DA7F, I18N_NOOP(
"Location bases") },
3633 { 0x1DA87, I18N_NOOP(
"Punctuation") },
3634 { 0x1DA9B, I18N_NOOP(
"Fill modifiers") },
3635 { 0x1DAA1, I18N_NOOP(
"Rotation modifiers") },
3638constexpr TDEUnicodeData::Subcategory LatinExtendedG[] = {
3639 { 0x1DF00, I18N_NOOP(
"Extended IPA for disordered speech") },
3640 { 0x1DF08, I18N_NOOP(
"IPA extensions") },
3641 { 0x1DF0B, I18N_NOOP(
"Clicks") },
3642 { 0x1DF11, I18N_NOOP(
"Lateral") },
3643 { 0x1DF12, I18N_NOOP(
"Letters with palatal hooks") },
3644 { 0x1DF19, I18N_NOOP(
"Letters with retroflex hooks") },
3645 { 0x1DF1E, I18N_NOOP(
"IPA extension") },
3646 { 0x1DF25, I18N_NOOP(
"Letters for Malayalam transliteration") },
3649constexpr TDEUnicodeData::Subcategory GlagoliticSupplement[] = {
3650 { 0x1E000, I18N_NOOP(
"Combining letters") },
3653constexpr TDEUnicodeData::Subcategory CyrillicExtendedD[] = {
3654 { 0x1E030, I18N_NOOP(
"Superscript modifier letters") },
3655 { 0x1E051, I18N_NOOP(
"Subscript modifier letters") },
3656 { 0x1E06B, I18N_NOOP(
"Superscript modifier letters") },
3657 { 0x1E08F, I18N_NOOP(
"Diacritical mark") },
3660constexpr TDEUnicodeData::Subcategory NyiakengPuachueHmong[] = {
3661 { 0x1E100, I18N_NOOP(
"Consonant onsets") },
3662 { 0x1E124, I18N_NOOP(
"Vowel rimes") },
3663 { 0x1E130, I18N_NOOP(
"Tone marks") },
3664 { 0x1E137, I18N_NOOP(
"Determinatives") },
3665 { 0x1E13C, I18N_NOOP(
"Repetition mark") },
3666 { 0x1E13D, I18N_NOOP(
"Syllable lengthener") },
3667 { 0x1E140, I18N_NOOP(
"Digits") },
3668 { 0x1E14E, I18N_NOOP(
"Symbols") },
3671constexpr TDEUnicodeData::Subcategory Toto[] = {
3672 { 0x1E290, I18N_NOOP(
"Basic consonants") },
3673 { 0x1E2A1, I18N_NOOP(
"Basic vowels") },
3674 { 0x1E2AE, I18N_NOOP(
"Sign") },
3677constexpr TDEUnicodeData::Subcategory Wancho[] = {
3678 { 0x1E2C0, I18N_NOOP(
"Letters") },
3679 { 0x1E2EC, I18N_NOOP(
"Tone marks") },
3680 { 0x1E2F0, I18N_NOOP(
"Digits") },
3681 { 0x1E2FF, I18N_NOOP(
"Currency symbol") },
3684constexpr TDEUnicodeData::Subcategory NagMundari[] = {
3685 { 0x1E4D0, I18N_NOOP(
"Letters") },
3686 { 0x1E4EB, I18N_NOOP(
"Various signs") },
3687 { 0x1E4F0, I18N_NOOP(
"Digits") },
3690constexpr TDEUnicodeData::Subcategory OlOnal[] = {
3691 { 0x1E5D0, I18N_NOOP(
"Letters") },
3692 { 0x1E5EE, I18N_NOOP(
"Various signs") },
3693 { 0x1E5F1, I18N_NOOP(
"Digits") },
3694 { 0x1E5FF, I18N_NOOP(
"Abbreviation sign") },
3697constexpr TDEUnicodeData::Subcategory TaiYo[] = {
3698 { 0x1E6C0, I18N_NOOP(
"Letters") },
3699 { 0x1E6E0, I18N_NOOP(
"Vowel letters and rhyme signs") },
3700 { 0x1E6EE, I18N_NOOP(
"Finals") },
3701 { 0x1E6FE, I18N_NOOP(
"Symbols") },
3704constexpr TDEUnicodeData::Subcategory EthiopicExtendedB[] = {
3705 { 0x1E7E0, I18N_NOOP(
"Syllables for Gurage") },
3708constexpr TDEUnicodeData::Subcategory MendeKikakui[] = {
3709 { 0x1E800, I18N_NOOP(
"Syllables in k-") },
3710 { 0x1E808, I18N_NOOP(
"Syllables in w-") },
3711 { 0x1E811, I18N_NOOP(
"Syllables in wv-") },
3712 { 0x1E814, I18N_NOOP(
"Syllables in m-") },
3713 { 0x1E81B, I18N_NOOP(
"Syllables in b-") },
3714 { 0x1E822, I18N_NOOP(
"Vowels") },
3715 { 0x1E82E, I18N_NOOP(
"Syllables in s-") },
3716 { 0x1E836, I18N_NOOP(
"Syllables in l-") },
3717 { 0x1E83E, I18N_NOOP(
"Syllables in d-") },
3718 { 0x1E844, I18N_NOOP(
"Syllables in t-") },
3719 { 0x1E84B, I18N_NOOP(
"Syllables in j-") },
3720 { 0x1E853, I18N_NOOP(
"Syllables in y-") },
3721 { 0x1E85A, I18N_NOOP(
"Syllables in f-") },
3722 { 0x1E863, I18N_NOOP(
"Syllables in n-") },
3723 { 0x1E868, I18N_NOOP(
"Syllables in h-") },
3724 { 0x1E877, I18N_NOOP(
"Syllables in ngg-") },
3725 { 0x1E883, I18N_NOOP(
"Syllables in g-") },
3726 { 0x1E889, I18N_NOOP(
"Syllables in ng-") },
3727 { 0x1E88C, I18N_NOOP(
"Syllables in p-") },
3728 { 0x1E893, I18N_NOOP(
"Syllables in mb-") },
3729 { 0x1E89F, I18N_NOOP(
"Syllables in kp-") },
3730 { 0x1E8A6, I18N_NOOP(
"Syllables in gb-") },
3731 { 0x1E8AD, I18N_NOOP(
"Syllable in r-") },
3732 { 0x1E8AE, I18N_NOOP(
"Syllables in nd-") },
3733 { 0x1E8B5, I18N_NOOP(
"Syllables in nj-") },
3734 { 0x1E8B9, I18N_NOOP(
"Syllables in v-") },
3735 { 0x1E8C0, I18N_NOOP(
"Syllables in ny-") },
3736 { 0x1E8C7, I18N_NOOP(
"Digits") },
3737 { 0x1E8D0, I18N_NOOP(
"Combining number bases") },
3740constexpr TDEUnicodeData::Subcategory Adlam[] = {
3741 { 0x1E900, I18N_NOOP(
"Capital letters") },
3742 { 0x1E91C, I18N_NOOP(
"Supplementary capital letters") },
3743 { 0x1E922, I18N_NOOP(
"Small letters") },
3744 { 0x1E93E, I18N_NOOP(
"Supplementary small letters") },
3745 { 0x1E944, I18N_NOOP(
"Diacritical marks") },
3746 { 0x1E94B, I18N_NOOP(
"Modifier letter") },
3747 { 0x1E950, I18N_NOOP(
"Digits") },
3748 { 0x1E95E, I18N_NOOP(
"Punctuation") },
3751constexpr TDEUnicodeData::Subcategory IndicSiyaqNumbers[] = {
3752 { 0x1EC71, I18N_NOOP(
"Primary numbers") },
3753 { 0x1EC7A, I18N_NOOP(
"Tens") },
3754 { 0x1EC83, I18N_NOOP(
"Hundreds") },
3755 { 0x1EC8C, I18N_NOOP(
"Thousands") },
3756 { 0x1EC95, I18N_NOOP(
"Ten thousands") },
3757 { 0x1EC9E, I18N_NOOP(
"Lakhs") },
3758 { 0x1ECA1, I18N_NOOP(
"Crores") },
3759 { 0x1ECA3, I18N_NOOP(
"Prefixed forms of primary numbers") },
3760 { 0x1ECAC, I18N_NOOP(
"Placeholder") },
3761 { 0x1ECAD, I18N_NOOP(
"Fractions") },
3762 { 0x1ECB0, I18N_NOOP(
"Currency symbol") },
3763 { 0x1ECB1, I18N_NOOP(
"Alternate forms") },
3766constexpr TDEUnicodeData::Subcategory OttomanSiyaqNumbers[] = {
3767 { 0x1ED01, I18N_NOOP(
"Primary numbers") },
3768 { 0x1ED0A, I18N_NOOP(
"Tens") },
3769 { 0x1ED13, I18N_NOOP(
"Hundreds") },
3770 { 0x1ED1C, I18N_NOOP(
"Thousands") },
3771 { 0x1ED25, I18N_NOOP(
"Ten thousands") },
3772 { 0x1ED2E, I18N_NOOP(
"Multiplier") },
3773 { 0x1ED2F, I18N_NOOP(
"Alternate forms") },
3774 { 0x1ED3C, I18N_NOOP(
"Fractions") },
3777constexpr TDEUnicodeData::Subcategory ArabicMathematicalAlphabeticSymbols[] = {
3778 { 0x1EE00, I18N_NOOP(
"Isolated symbols") },
3779 { 0x1EE21, I18N_NOOP(
"Initial symbols") },
3780 { 0x1EE42, I18N_NOOP(
"Tailed symbols") },
3781 { 0x1EE61, I18N_NOOP(
"Stretched symbols") },
3782 { 0x1EE80, I18N_NOOP(
"Looped symbols") },
3783 { 0x1EEA1, I18N_NOOP(
"Double-struck symbols") },
3784 { 0x1EEF0, I18N_NOOP(
"Stretching operators") },
3787constexpr TDEUnicodeData::Subcategory MahjongTiles[] = {
3788 { 0x1F000, I18N_NOOP(
"Prevailing wind tiles") },
3789 { 0x1F004, I18N_NOOP(
"Dragon tiles") },
3790 { 0x1F007, I18N_NOOP(
"Character suit tiles") },
3791 { 0x1F010, I18N_NOOP(
"Bamboo suit tiles") },
3792 { 0x1F019, I18N_NOOP(
"Circle suit tiles") },
3793 { 0x1F022, I18N_NOOP(
"Flower tiles") },
3794 { 0x1F026, I18N_NOOP(
"Season tiles") },
3795 { 0x1F02A, I18N_NOOP(
"Miscellaneous tiles") },
3798constexpr TDEUnicodeData::Subcategory DominoTiles[] = {
3799 { 0x1F030, I18N_NOOP(
"Horizontal tiles") },
3800 { 0x1F031, I18N_NOOP(
"Zeroes") },
3801 { 0x1F038, I18N_NOOP(
"Ones") },
3802 { 0x1F03F, I18N_NOOP(
"Twos") },
3803 { 0x1F046, I18N_NOOP(
"Threes") },
3804 { 0x1F04D, I18N_NOOP(
"Fours") },
3805 { 0x1F054, I18N_NOOP(
"Fives") },
3806 { 0x1F05B, I18N_NOOP(
"Sixes") },
3807 { 0x1F062, I18N_NOOP(
"Vertical tiles") },
3808 { 0x1F063, I18N_NOOP(
"Zeroes") },
3809 { 0x1F06A, I18N_NOOP(
"Ones") },
3810 { 0x1F071, I18N_NOOP(
"Twos") },
3811 { 0x1F078, I18N_NOOP(
"Threes") },
3812 { 0x1F07F, I18N_NOOP(
"Fours") },
3813 { 0x1F086, I18N_NOOP(
"Fives") },
3814 { 0x1F08D, I18N_NOOP(
"Sixes") },
3817constexpr TDEUnicodeData::Subcategory PlayingCards[] = {
3818 { 0x1F0A0, I18N_NOOP(
"Back of card") },
3819 { 0x1F0A1, I18N_NOOP(
"Spades or swords") },
3820 { 0x1F0B1, I18N_NOOP(
"Hearts or cups") },
3821 { 0x1F0BF, I18N_NOOP(
"Joker") },
3822 { 0x1F0C1, I18N_NOOP(
"Diamonds or pentacles") },
3823 { 0x1F0CF, I18N_NOOP(
"Joker") },
3824 { 0x1F0D1, I18N_NOOP(
"Clubs or wands") },
3825 { 0x1F0DF, I18N_NOOP(
"Joker") },
3826 { 0x1F0E0, I18N_NOOP(
"Trumps") },
3829constexpr TDEUnicodeData::Subcategory EnclosedAlphanumericSupplement[] = {
3830 { 0x1F100, I18N_NOOP(
"Number with full stop") },
3831 { 0x1F101, I18N_NOOP(
"Numbers with comma") },
3832 { 0x1F10B, I18N_NOOP(
"Circled sans-serif digits") },
3833 { 0x1F10D, I18N_NOOP(
"Creative Commons symbols") },
3834 { 0x1F110, I18N_NOOP(
"Parenthesized Latin letters") },
3835 { 0x1F12A, I18N_NOOP(
"Latin letter with tortoise shell brackets") },
3836 { 0x1F12B, I18N_NOOP(
"Circled italic Latin letters") },
3837 { 0x1F12D, I18N_NOOP(
"Circled Latin letters or letter sequences") },
3838 { 0x1F130, I18N_NOOP(
"Squared Latin letters") },
3839 { 0x1F150, I18N_NOOP(
"White on black circled Latin letters") },
3840 { 0x1F16A, I18N_NOOP(
"Raised squared Latin sequences") },
3841 { 0x1F16D, I18N_NOOP(
"Creative Commons symbols") },
3842 { 0x1F170, I18N_NOOP(
"White on black squared Latin letters") },
3843 { 0x1F190, I18N_NOOP(
"Squared Latin letter sequences") },
3844 { 0x1F19B, I18N_NOOP(
"Squared Latin letter sequences from ARIB STD B62") },
3845 { 0x1F1AD, I18N_NOOP(
"Miscellaneous symbol") },
3846 { 0x1F1E6, I18N_NOOP(
"Regional indicator symbols") },
3849constexpr TDEUnicodeData::Subcategory EnclosedIdeographicSupplement[] = {
3850 { 0x1F200, I18N_NOOP(
"Squared hiragana from ARIB STD B24") },
3851 { 0x1F201, I18N_NOOP(
"Squared katakana") },
3852 { 0x1F210, I18N_NOOP(
"Squared ideographs and kana from ARIB STD B24") },
3853 { 0x1F232, I18N_NOOP(
"Squared ideographs") },
3854 { 0x1F240, I18N_NOOP(
"Ideographs with tortoise shell brackets from ARIB STD B24") },
3855 { 0x1F250, I18N_NOOP(
"Circled ideographs") },
3856 { 0x1F260, I18N_NOOP(
"Symbols for Chinese folk religion") },
3859constexpr TDEUnicodeData::Subcategory MiscellaneousSymbolsandPictographs[] = {
3860 { 0x1F300, I18N_NOOP(
"Weather, landscape, and sky symbols") },
3861 { 0x1F30D, I18N_NOOP(
"Globe symbols") },
3862 { 0x1F311, I18N_NOOP(
"Moon, sun, and star symbols") },
3863 { 0x1F321, I18N_NOOP(
"Weather symbols") },
3864 { 0x1F32D, I18N_NOOP(
"Food symbols") },
3865 { 0x1F330, I18N_NOOP(
"Plant symbols") },
3866 { 0x1F345, I18N_NOOP(
"Fruit and vegetable symbols") },
3867 { 0x1F354, I18N_NOOP(
"Food symbols") },
3868 { 0x1F375, I18N_NOOP(
"Beverage symbols") },
3869 { 0x1F37D, I18N_NOOP(
"Accommodation symbol") },
3870 { 0x1F37E, I18N_NOOP(
"Beverage and food symbols") },
3871 { 0x1F380, I18N_NOOP(
"Celebration symbols") },
3872 { 0x1F398, I18N_NOOP(
"Musical symbols") },
3873 { 0x1F39E, I18N_NOOP(
"Entertainment symbols") },
3874 { 0x1F3AE, I18N_NOOP(
"Game symbols") },
3875 { 0x1F3B5, I18N_NOOP(
"Musical symbols") },
3876 { 0x1F3BD, I18N_NOOP(
"Sport symbols") },
3877 { 0x1F3D4, I18N_NOOP(
"Building and map symbols") },
3878 { 0x1F3F1, I18N_NOOP(
"Flag symbols") },
3879 { 0x1F3F5, I18N_NOOP(
"Rosettes") },
3880 { 0x1F3F7, I18N_NOOP(
"Miscellaneous symbol") },
3881 { 0x1F3F8, I18N_NOOP(
"Sport symbols") },
3882 { 0x1F3FA, I18N_NOOP(
"Miscellaneous symbol") },
3883 { 0x1F3FB, I18N_NOOP(
"Emoji modifiers") },
3884 { 0x1F400, I18N_NOOP(
"Animal symbols") },
3885 { 0x1F42D, I18N_NOOP(
"Animal faces") },
3886 { 0x1F43E, I18N_NOOP(
"Animal symbols") },
3887 { 0x1F440, I18N_NOOP(
"Facial parts symbols") },
3888 { 0x1F446, I18N_NOOP(
"Hand symbols") },
3889 { 0x1F451, I18N_NOOP(
"Clothing and accessories") },
3890 { 0x1F464, I18N_NOOP(
"Portrait and role symbols") },
3891 { 0x1F478, I18N_NOOP(
"Fairy tale symbols") },
3892 { 0x1F481, I18N_NOOP(
"Role symbols") },
3893 { 0x1F484, I18N_NOOP(
"Personal care symbols") },
3894 { 0x1F489, I18N_NOOP(
"Medical symbols") },
3895 { 0x1F48B, I18N_NOOP(
"Romance symbols") },
3896 { 0x1F493, I18N_NOOP(
"Heart symbols") },
3897 { 0x1F4A0, I18N_NOOP(
"Comic style symbols") },
3898 { 0x1F4AE, I18N_NOOP(
"Japanese school grade symbols") },
3899 { 0x1F4B0, I18N_NOOP(
"Money symbols") },
3900 { 0x1F4BA, I18N_NOOP(
"Office symbols") },
3901 { 0x1F4DD, I18N_NOOP(
"Communication symbols") },
3902 { 0x1F4F7, I18N_NOOP(
"Audio and video symbols") },
3903 { 0x1F4FF, I18N_NOOP(
"Religious symbol") },
3904 { 0x1F500, I18N_NOOP(
"User interface symbols") },
3905 { 0x1F519, I18N_NOOP(
"Words with arrows") },
3906 { 0x1F51E, I18N_NOOP(
"Enclosed alphanumeric symbols") },
3907 { 0x1F520, I18N_NOOP(
"User interface input status symbols") },
3908 { 0x1F525, I18N_NOOP(
"Tool symbols") },
3909 { 0x1F52F, I18N_NOOP(
"Miscellaneous symbols") },
3910 { 0x1F532, I18N_NOOP(
"Geometric shapes") },
3911 { 0x1F53A, I18N_NOOP(
"User interface symbols") },
3912 { 0x1F53E, I18N_NOOP(
"Shadowed geometric shapes") },
3913 { 0x1F540, I18N_NOOP(
"Religious symbols") },
3914 { 0x1F54F, I18N_NOOP(
"Miscellaneous symbol") },
3915 { 0x1F550, I18N_NOOP(
"Clock face symbols") },
3916 { 0x1F568, I18N_NOOP(
"Communication symbols") },
3917 { 0x1F56D, I18N_NOOP(
"Miscellaneous symbols") },
3918 { 0x1F577, I18N_NOOP(
"Animal symbols") },
3919 { 0x1F579, I18N_NOOP(
"Game symbol") },
3920 { 0x1F57A, I18N_NOOP(
"Role symbol") },
3921 { 0x1F57B, I18N_NOOP(
"Communication symbols") },
3922 { 0x1F58E, I18N_NOOP(
"Hand symbols") },
3923 { 0x1F5A4, I18N_NOOP(
"Heart symbol") },
3924 { 0x1F5A5, I18N_NOOP(
"Computer symbols") },
3925 { 0x1F5B9, I18N_NOOP(
"Office symbols") },
3926 { 0x1F5BF, I18N_NOOP(
"User interface symbols") },
3927 { 0x1F5DE, I18N_NOOP(
"Miscellaneous symbols") },
3928 { 0x1F5E1, I18N_NOOP(
"Rating symbols") },
3929 { 0x1F5E4, I18N_NOOP(
"Sound symbols") },
3930 { 0x1F5E8, I18N_NOOP(
"Bubble symbols") },
3931 { 0x1F5F3, I18N_NOOP(
"Ballot symbols") },
3932 { 0x1F5FA, I18N_NOOP(
"Map symbol") },
3933 { 0x1F5FB, I18N_NOOP(
"Cultural symbols") },
3936constexpr TDEUnicodeData::Subcategory Emoticons[] = {
3937 { 0x1F600, I18N_NOOP(
"Faces") },
3938 { 0x1F638, I18N_NOOP(
"Cat faces") },
3939 { 0x1F641, I18N_NOOP(
"Faces") },
3940 { 0x1F645, I18N_NOOP(
"Gesture symbols") },
3943constexpr TDEUnicodeData::Subcategory OrnamentalDingbats[] = {
3944 { 0x1F650, I18N_NOOP(
"Fleurons") },
3945 { 0x1F668, I18N_NOOP(
"Quilt square ornaments") },
3946 { 0x1F66C, I18N_NOOP(
"Rocket ornaments") },
3947 { 0x1F670, I18N_NOOP(
"Ampersand and ligature et ornaments") },
3948 { 0x1F676, I18N_NOOP(
"Punctuation mark ornaments") },
3949 { 0x1F67E, I18N_NOOP(
"Miscellaneous symbols") },
3952constexpr TDEUnicodeData::Subcategory TransportandMapSymbols[] = {
3953 { 0x1F680, I18N_NOOP(
"Vehicles") },
3954 { 0x1F6A5, I18N_NOOP(
"Traffic signs") },
3955 { 0x1F6A9, I18N_NOOP(
"Signage and other symbols") },
3956 { 0x1F6CB, I18N_NOOP(
"Accommodation symbols") },
3957 { 0x1F6D0, I18N_NOOP(
"Signage and other symbols") },
3958 { 0x1F6D3, I18N_NOOP(
"Map symbols") },
3959 { 0x1F6DC, I18N_NOOP(
"Miscellaneous symbols") },
3960 { 0x1F6E5, I18N_NOOP(
"Vehicles") },
3963constexpr TDEUnicodeData::Subcategory AlchemicalSymbols[] = {
3964 { 0x1F700, I18N_NOOP(
"Symbols for Aristotelian elements") },
3965 { 0x1F705, I18N_NOOP(
"Symbols for important solvents") },
3966 { 0x1F70D, I18N_NOOP(
"Symbols for sulfur and mercury") },
3967 { 0x1F714, I18N_NOOP(
"Symbols for salt, vitriol, and nitre") },
3968 { 0x1F71A, I18N_NOOP(
"Symbols for gold and silver") },
3969 { 0x1F71C, I18N_NOOP(
"Symbols for iron, iron ore and derivatives") },
3970 { 0x1F720, I18N_NOOP(
"Symbols for copper, copper ore and derivatives") },
3971 { 0x1F729, I18N_NOOP(
"Symbols for tin and lead ore") },
3972 { 0x1F72B, I18N_NOOP(
"Symbols for antimony, antimony ore and derivatives") },
3973 { 0x1F736, I18N_NOOP(
"Symbols for other substances") },
3974 { 0x1F75B, I18N_NOOP(
"Composition") },
3975 { 0x1F75E, I18N_NOOP(
"Processes") },
3976 { 0x1F765, I18N_NOOP(
"Apparatus") },
3977 { 0x1F76E, I18N_NOOP(
"Time") },
3978 { 0x1F772, I18N_NOOP(
"Measures") },
3979 { 0x1F774, I18N_NOOP(
"Other symbol") },
3980 { 0x1F775, I18N_NOOP(
"Eclipse symbols") },
3981 { 0x1F777, I18N_NOOP(
"Historical symbols for asteroids") },
3982 { 0x1F77B, I18N_NOOP(
"Symbols for dwarf planets") },
3985constexpr TDEUnicodeData::Subcategory GeometricShapesExtended[] = {
3986 { 0x1F780, I18N_NOOP(
"Isosceles right triangles") },
3987 { 0x1F784, I18N_NOOP(
"Black circles") },
3988 { 0x1F785, I18N_NOOP(
"White circles") },
3989 { 0x1F78A, I18N_NOOP(
"White circles containing another black circle") },
3990 { 0x1F78B, I18N_NOOP(
"Target symbol") },
3991 { 0x1F78C, I18N_NOOP(
"Black squares") },
3992 { 0x1F78E, I18N_NOOP(
"White squares") },
3993 { 0x1F794, I18N_NOOP(
"White squares containing another black square") },
3994 { 0x1F796, I18N_NOOP(
"Target symbol") },
3995 { 0x1F797, I18N_NOOP(
"Black diamonds") },
3996 { 0x1F79A, I18N_NOOP(
"White diamonds containing another black diamond") },
3997 { 0x1F79C, I18N_NOOP(
"Target symbol") },
3998 { 0x1F79D, I18N_NOOP(
"Black lozenges") },
3999 { 0x1F7A0, I18N_NOOP(
"White lozenge containing another black lozenge") },
4000 { 0x1F7A1, I18N_NOOP(
"Greek crosses") },
4001 { 0x1F7A8, I18N_NOOP(
"Saltires") },
4002 { 0x1F7AF, I18N_NOOP(
"Five spoked asterisks") },
4003 { 0x1F7B5, I18N_NOOP(
"Six spoked asterisks") },
4004 { 0x1F7BB, I18N_NOOP(
"Eight spoked asterisks") },
4005 { 0x1F7C0, I18N_NOOP(
"Three pointed stars") },
4006 { 0x1F7C4, I18N_NOOP(
"Four pointed stars") },
4007 { 0x1F7C9, I18N_NOOP(
"Five pointed stars") },
4008 { 0x1F7CB, I18N_NOOP(
"Six pointed stars") },
4009 { 0x1F7CE, I18N_NOOP(
"Eight pointed stars") },
4010 { 0x1F7D2, I18N_NOOP(
"Twelve pointed stars") },
4011 { 0x1F7D5, I18N_NOOP(
"Go stone markers") },
4012 { 0x1F7D9, I18N_NOOP(
"Nine pointed star") },
4013 { 0x1F7E0, I18N_NOOP(
"Colored circles") },
4014 { 0x1F7E5, I18N_NOOP(
"Colored squares") },
4015 { 0x1F7F0, I18N_NOOP(
"Miscellaneous symbol") },
4018constexpr TDEUnicodeData::Subcategory SupplementalArrowsC[] = {
4019 { 0x1F800, I18N_NOOP(
"Arrows with triangle arrowheads") },
4020 { 0x1F810, I18N_NOOP(
"Arrows with equilateral triangle arrowheads") },
4021 { 0x1F820, I18N_NOOP(
"Triangle headed arrows with different shaft weights") },
4022 { 0x1F834, I18N_NOOP(
"Finger-post arrows") },
4023 { 0x1F838, I18N_NOOP(
"Squared arrows") },
4024 { 0x1F83C, I18N_NOOP(
"Compressed arrows") },
4025 { 0x1F844, I18N_NOOP(
"Heavy arrows") },
4026 { 0x1F850, I18N_NOOP(
"Sans-serif arrows") },
4027 { 0x1F860, I18N_NOOP(
"Wide-headed barb arrows") },
4028 { 0x1F890, I18N_NOOP(
"Arrowheads") },
4029 { 0x1F898, I18N_NOOP(
"Notched arrows") },
4030 { 0x1F89C, I18N_NOOP(
"Heavy arrow shafts") },
4031 { 0x1F8A0, I18N_NOOP(
"Shaded white arrows") },
4032 { 0x1F8AC, I18N_NOOP(
"White arrow shafts") },
4033 { 0x1F8B0, I18N_NOOP(
"Arrows for legacy computing") },
4034 { 0x1F8C0, I18N_NOOP(
"Arrows for Egyptology") },
4035 { 0x1F8D0, I18N_NOOP(
"Reaction arrows for chemistry") },
4036 { 0x1F8D6, I18N_NOOP(
"Unsuccessful reaction arrows for chemistry") },
4037 { 0x1F8D8, I18N_NOOP(
"Isolobal arrow") },
4040constexpr TDEUnicodeData::Subcategory SupplementalSymbolsandPictographs[] = {
4041 { 0x1F900, I18N_NOOP(
"Typicon symbols") },
4042 { 0x1F90C, I18N_NOOP(
"Hand symbol") },
4043 { 0x1F90D, I18N_NOOP(
"Colored heart symbols") },
4044 { 0x1F90F, I18N_NOOP(
"Hand symbol") },
4045 { 0x1F910, I18N_NOOP(
"Emoticon faces") },
4046 { 0x1F918, I18N_NOOP(
"Hand symbols") },
4047 { 0x1F920, I18N_NOOP(
"Emoticon faces") },
4048 { 0x1F930, I18N_NOOP(
"Portrait and role symbols") },
4049 { 0x1F938, I18N_NOOP(
"Sport symbols") },
4050 { 0x1F940, I18N_NOOP(
"Miscellaneous symbols") },
4051 { 0x1F950, I18N_NOOP(
"Food symbols") },
4052 { 0x1F970, I18N_NOOP(
"Faces") },
4053 { 0x1F97B, I18N_NOOP(
"Clothing") },
4054 { 0x1F980, I18N_NOOP(
"Animal symbols") },
4055 { 0x1F9AE, I18N_NOOP(
"Accessibility symbols") },
4056 { 0x1F9B0, I18N_NOOP(
"Emoji components") },
4057 { 0x1F9B4, I18N_NOOP(
"Body parts") },
4058 { 0x1F9B8, I18N_NOOP(
"Role symbols") },
4059 { 0x1F9BA, I18N_NOOP(
"Accessibility symbols") },
4060 { 0x1F9C0, I18N_NOOP(
"Food symbols") },
4061 { 0x1F9CC, I18N_NOOP(
"Fantasy being") },
4062 { 0x1F9CD, I18N_NOOP(
"Portrait and accessibility symbols") },
4063 { 0x1F9D0, I18N_NOOP(
"Portrait and role symbols") },
4064 { 0x1F9D9, I18N_NOOP(
"Fantasy beings") },
4065 { 0x1F9E0, I18N_NOOP(
"Miscellaneous symbols") },
4066 { 0x1F9E7, I18N_NOOP(
"Activities") },
4067 { 0x1F9EA, I18N_NOOP(
"Objects") },
4070constexpr TDEUnicodeData::Subcategory ChessSymbols[] = {
4071 { 0x1FA00, I18N_NOOP(
"Neutral chess symbols") },
4072 { 0x1FA06, I18N_NOOP(
"Chess symbols rotated 45 degrees") },
4073 { 0x1FA09, I18N_NOOP(
"Chess symbols rotated 90 degrees") },
4074 { 0x1FA1B, I18N_NOOP(
"Chess symbols rotated 135 degrees") },
4075 { 0x1FA1E, I18N_NOOP(
"Chess symbols rotated 180 degrees (turned)") },
4076 { 0x1FA30, I18N_NOOP(
"Chess symbols rotated 225 degrees") },
4077 { 0x1FA33, I18N_NOOP(
"Chess symbols rotated 270 degrees") },
4078 { 0x1FA45, I18N_NOOP(
"Chess symbols rotated 315 degrees") },
4079 { 0x1FA48, I18N_NOOP(
"Chess equihoppers") },
4080 { 0x1FA4B, I18N_NOOP(
"Chess equihoppers rotated 90 degrees") },
4081 { 0x1FA4E, I18N_NOOP(
"Hybrid chess symbols") },
4082 { 0x1FA54, I18N_NOOP(
"Shatranj chess symbols") },
4083 { 0x1FA60, I18N_NOOP(
"Xiangqi symbols") },
4086constexpr TDEUnicodeData::Subcategory SymbolsandPictographsExtendedA[] = {
4087 { 0x1FA70, I18N_NOOP(
"Clothing") },
4088 { 0x1FA75, I18N_NOOP(
"Colored heart symbols") },
4089 { 0x1FA78, I18N_NOOP(
"Medical symbols") },
4090 { 0x1FA80, I18N_NOOP(
"Toys and sport symbols") },
4091 { 0x1FA87, I18N_NOOP(
"Musical instruments") },
4092 { 0x1FA8E, I18N_NOOP(
"Miscellaneous objects") },
4093 { 0x1FAAF, I18N_NOOP(
"Religious symbol") },
4094 { 0x1FAB0, I18N_NOOP(
"Animals and nature") },
4095 { 0x1FAC0, I18N_NOOP(
"Body parts") },
4096 { 0x1FAC2, I18N_NOOP(
"People") },
4097 { 0x1FAC6, I18N_NOOP(
"Miscellaneous") },
4098 { 0x1FAC8, I18N_NOOP(
"Animals and nature") },
4099 { 0x1FAD0, I18N_NOOP(
"Food and drink") },
4100 { 0x1FADF, I18N_NOOP(
"Miscellaneous") },
4101 { 0x1FAE0, I18N_NOOP(
"Faces") },
4102 { 0x1FAE6, I18N_NOOP(
"Emotion") },
4103 { 0x1FAE8, I18N_NOOP(
"Faces") },
4104 { 0x1FAEF, I18N_NOOP(
"Emotion") },
4105 { 0x1FAF0, I18N_NOOP(
"Hand symbols") },
4108constexpr TDEUnicodeData::Subcategory SymbolsforLegacyComputing[] = {
4109 { 0x1FB00, I18N_NOOP(
"Block mosaic terminal graphic characters") },
4110 { 0x1FB3C, I18N_NOOP(
"Smooth mosaic terminal graphic characters") },
4111 { 0x1FB70, I18N_NOOP(
"Block elements") },
4112 { 0x1FB81, I18N_NOOP(
"Window title bar") },
4113 { 0x1FB82, I18N_NOOP(
"Block elements") },
4114 { 0x1FB8C, I18N_NOOP(
"Rectangular shade characters") },
4115 { 0x1FB95, I18N_NOOP(
"Fill characters") },
4116 { 0x1FB98, I18N_NOOP(
"Diagonal fill characters") },
4117 { 0x1FB9A, I18N_NOOP(
"Smooth mosaic terminal graphic characters") },
4118 { 0x1FB9C, I18N_NOOP(
"Triangular shade characters") },
4119 { 0x1FBA0, I18N_NOOP(
"Character cell diagonals") },
4120 { 0x1FBAF, I18N_NOOP(
"Light solid line with stroke") },
4121 { 0x1FBB0, I18N_NOOP(
"Terminal graphic characters") },
4122 { 0x1FBB4, I18N_NOOP(
"Arrows") },
4123 { 0x1FBB9, I18N_NOOP(
"Terminal graphic characters") },
4124 { 0x1FBBD, I18N_NOOP(
"Negative terminal graphic characters") },
4125 { 0x1FBC0, I18N_NOOP(
"Terminal graphic characters") },
4126 { 0x1FBCB, I18N_NOOP(
"Terminal graphic characters") },
4127 { 0x1FBCE, I18N_NOOP(
"Block elements") },
4128 { 0x1FBD0, I18N_NOOP(
"Character cell diagonals") },
4129 { 0x1FBE0, I18N_NOOP(
"Geometric shapes") },
4130 { 0x1FBF0, I18N_NOOP(
"Segmented digits") },
4131 { 0x1FBFA, I18N_NOOP(
"Terminal graphic character") },
4134constexpr TDEUnicodeData::Subcategory Unassigned[] = {
4135 { 0x1FFFE, I18N_NOOP(
"Noncharacters") },
4138constexpr TDEUnicodeData::Subcategory CJKUnifiedIdeographsExtensionB[] = {
4141constexpr TDEUnicodeData::Subcategory CJKUnifiedIdeographsExtensionC[] = {
4144constexpr TDEUnicodeData::Subcategory CJKUnifiedIdeographsExtensionD[] = {
4147constexpr TDEUnicodeData::Subcategory CJKUnifiedIdeographsExtensionE[] = {
4150constexpr TDEUnicodeData::Subcategory CJKUnifiedIdeographsExtensionF[] = {
4153constexpr TDEUnicodeData::Subcategory CJKUnifiedIdeographsExtensionI[] = {
4156constexpr TDEUnicodeData::Subcategory CJKCompatibilityIdeographsSupplement[] = {
4157 { 0x2F800, I18N_NOOP(
"Duplicate characters from CNS 11643-1992") },
4160constexpr TDEUnicodeData::Subcategory Unassigned2[] = {
4161 { 0x2FFFE, I18N_NOOP(
"Noncharacters") },
4164constexpr TDEUnicodeData::Subcategory CJKUnifiedIdeographsExtensionG[] = {
4167constexpr TDEUnicodeData::Subcategory CJKUnifiedIdeographsExtensionH[] = {
4170constexpr TDEUnicodeData::Subcategory CJKUnifiedIdeographsExtensionJ[] = {
4173constexpr TDEUnicodeData::Subcategory Unassigned3[] = {
4174 { 0x3FFFE, I18N_NOOP(
"Noncharacters") },
4177constexpr TDEUnicodeData::Subcategory Unassigned4[] = {
4178 { 0x4FFFE, I18N_NOOP(
"Noncharacters") },
4181constexpr TDEUnicodeData::Subcategory Unassigned5[] = {
4182 { 0x5FFFE, I18N_NOOP(
"Noncharacters") },
4185constexpr TDEUnicodeData::Subcategory Unassigned6[] = {
4186 { 0x6FFFE, I18N_NOOP(
"Noncharacters") },
4189constexpr TDEUnicodeData::Subcategory Unassigned7[] = {
4190 { 0x7FFFE, I18N_NOOP(
"Noncharacters") },
4193constexpr TDEUnicodeData::Subcategory Unassigned8[] = {
4194 { 0x8FFFE, I18N_NOOP(
"Noncharacters") },
4197constexpr TDEUnicodeData::Subcategory Unassigned9[] = {
4198 { 0x9FFFE, I18N_NOOP(
"Noncharacters") },
4201constexpr TDEUnicodeData::Subcategory Unassigned10[] = {
4202 { 0xAFFFE, I18N_NOOP(
"Noncharacters") },
4205constexpr TDEUnicodeData::Subcategory Unassigned11[] = {
4206 { 0xBFFFE, I18N_NOOP(
"Noncharacters") },
4209constexpr TDEUnicodeData::Subcategory Unassigned12[] = {
4210 { 0xCFFFE, I18N_NOOP(
"Noncharacters") },
4213constexpr TDEUnicodeData::Subcategory Unassigned13[] = {
4214 { 0xDFFFE, I18N_NOOP(
"Noncharacters") },
4217constexpr TDEUnicodeData::Subcategory Tags[] = {
4218 { 0xE0001, I18N_NOOP(
"Tag identifiers") },
4219 { 0xE0020, I18N_NOOP(
"Tag components") },
4220 { 0xE007F, I18N_NOOP(
"Stateful tag terminator") },
4223constexpr TDEUnicodeData::Subcategory VariationSelectorsSupplement[] = {
4224 { 0xE0100, I18N_NOOP(
"Ideographic-specific variation selectors") },
4227constexpr TDEUnicodeData::Subcategory Unassigned14[] = {
4228 { 0xEFFFE, I18N_NOOP(
"Noncharacters") },
4231constexpr TDEUnicodeData::Subcategory SupplementaryPrivateUseAreaA[] = {
4232 { 0xFFFFE, I18N_NOOP(
"Noncharacters") },
4235constexpr TDEUnicodeData::Subcategory SupplementaryPrivateUseAreaB[] = {
4236 { 0x10FFFE, I18N_NOOP(
"Noncharacters") },
4239constexpr TDEUnicodeData::Category categories[] = {
4240 { 0x0000, I18N_NOOP(
"Basic Latin"), BasicLatin,
sizeof(BasicLatin) /
sizeof(*BasicLatin) },
4241 { 0x0080, I18N_NOOP(
"Latin-1 Supplement"), Latin1Supplement,
sizeof(Latin1Supplement) /
sizeof(*Latin1Supplement) },
4242 { 0x0100, I18N_NOOP(
"Latin Extended-A"), LatinExtendedA,
sizeof(LatinExtendedA) /
sizeof(*LatinExtendedA) },
4243 { 0x0180, I18N_NOOP(
"Latin Extended-B"), LatinExtendedB,
sizeof(LatinExtendedB) /
sizeof(*LatinExtendedB) },
4244 { 0x0250, I18N_NOOP(
"IPA Extensions"), IPAExtensions,
sizeof(IPAExtensions) /
sizeof(*IPAExtensions) },
4245 { 0x02B0, I18N_NOOP(
"Spacing Modifier Letters"), SpacingModifierLetters,
sizeof(SpacingModifierLetters) /
sizeof(*SpacingModifierLetters) },
4246 { 0x0300, I18N_NOOP(
"Combining Diacritical Marks"), CombiningDiacriticalMarks,
sizeof(CombiningDiacriticalMarks) /
sizeof(*CombiningDiacriticalMarks) },
4247 { 0x0370, I18N_NOOP(
"Greek and Coptic"), GreekandCoptic,
sizeof(GreekandCoptic) /
sizeof(*GreekandCoptic) },
4248 { 0x0400, I18N_NOOP(
"Cyrillic"), Cyrillic,
sizeof(Cyrillic) /
sizeof(*Cyrillic) },
4249 { 0x0500, I18N_NOOP(
"Cyrillic Supplement"), CyrillicSupplement,
sizeof(CyrillicSupplement) /
sizeof(*CyrillicSupplement) },
4250 { 0x0530, I18N_NOOP(
"Armenian"), Armenian,
sizeof(Armenian) /
sizeof(*Armenian) },
4251 { 0x0590, I18N_NOOP(
"Hebrew"), Hebrew,
sizeof(Hebrew) /
sizeof(*Hebrew) },
4252 { 0x0600, I18N_NOOP(
"Arabic"), Arabic,
sizeof(Arabic) /
sizeof(*Arabic) },
4253 { 0x0700, I18N_NOOP(
"Syriac"), Syriac,
sizeof(Syriac) /
sizeof(*Syriac) },
4254 { 0x0750, I18N_NOOP(
"Arabic Supplement"), ArabicSupplement,
sizeof(ArabicSupplement) /
sizeof(*ArabicSupplement) },
4255 { 0x0780, I18N_NOOP(
"Thaana"), Thaana,
sizeof(Thaana) /
sizeof(*Thaana) },
4256 { 0x07C0, I18N_NOOP(
"NKo"), NKo,
sizeof(NKo) /
sizeof(*NKo) },
4257 { 0x0800, I18N_NOOP(
"Samaritan"), Samaritan,
sizeof(Samaritan) /
sizeof(*Samaritan) },
4258 { 0x0840, I18N_NOOP(
"Mandaic"), Mandaic,
sizeof(Mandaic) /
sizeof(*Mandaic) },
4259 { 0x0860, I18N_NOOP(
"Syriac Supplement"), SyriacSupplement,
sizeof(SyriacSupplement) /
sizeof(*SyriacSupplement) },
4260 { 0x0870, I18N_NOOP(
"Arabic Extended-B"), ArabicExtendedB,
sizeof(ArabicExtendedB) /
sizeof(*ArabicExtendedB) },
4261 { 0x08A0, I18N_NOOP(
"Arabic Extended-A"), ArabicExtendedA,
sizeof(ArabicExtendedA) /
sizeof(*ArabicExtendedA) },
4262 { 0x0900, I18N_NOOP(
"Devanagari"), Devanagari,
sizeof(Devanagari) /
sizeof(*Devanagari) },
4263 { 0x0980, I18N_NOOP(
"Bengali"), Bengali,
sizeof(Bengali) /
sizeof(*Bengali) },
4264 { 0x0A00, I18N_NOOP(
"Gurmukhi"), Gurmukhi,
sizeof(Gurmukhi) /
sizeof(*Gurmukhi) },
4265 { 0x0A80, I18N_NOOP(
"Gujarati"), Gujarati,
sizeof(Gujarati) /
sizeof(*Gujarati) },
4266 { 0x0B00, I18N_NOOP(
"Oriya"), Oriya,
sizeof(Oriya) /
sizeof(*Oriya) },
4267 { 0x0B80, I18N_NOOP(
"Tamil"), Tamil,
sizeof(Tamil) /
sizeof(*Tamil) },
4268 { 0x0C00, I18N_NOOP(
"Telugu"), Telugu,
sizeof(Telugu) /
sizeof(*Telugu) },
4269 { 0x0C80, I18N_NOOP(
"Kannada"), Kannada,
sizeof(Kannada) /
sizeof(*Kannada) },
4270 { 0x0D00, I18N_NOOP(
"Malayalam"), Malayalam,
sizeof(Malayalam) /
sizeof(*Malayalam) },
4271 { 0x0D80, I18N_NOOP(
"Sinhala"), Sinhala,
sizeof(Sinhala) /
sizeof(*Sinhala) },
4272 { 0x0E00, I18N_NOOP(
"Thai"), Thai,
sizeof(Thai) /
sizeof(*Thai) },
4273 { 0x0E80, I18N_NOOP(
"Lao"), Lao,
sizeof(Lao) /
sizeof(*Lao) },
4274 { 0x0F00, I18N_NOOP(
"Tibetan"), Tibetan,
sizeof(Tibetan) /
sizeof(*Tibetan) },
4275 { 0x1000, I18N_NOOP(
"Myanmar"), Myanmar,
sizeof(Myanmar) /
sizeof(*Myanmar) },
4276 { 0x10A0, I18N_NOOP(
"Georgian"), Georgian,
sizeof(Georgian) /
sizeof(*Georgian) },
4277 { 0x1100, I18N_NOOP(
"Hangul Jamo"), HangulJamo,
sizeof(HangulJamo) /
sizeof(*HangulJamo) },
4278 { 0x1200, I18N_NOOP(
"Ethiopic"), Ethiopic,
sizeof(Ethiopic) /
sizeof(*Ethiopic) },
4279 { 0x1380, I18N_NOOP(
"Ethiopic Supplement"), EthiopicSupplement,
sizeof(EthiopicSupplement) /
sizeof(*EthiopicSupplement) },
4280 { 0x13A0, I18N_NOOP(
"Cherokee"), Cherokee,
sizeof(Cherokee) /
sizeof(*Cherokee) },
4281 { 0x1400, I18N_NOOP(
"Unified Canadian Aboriginal Syllabics"), UnifiedCanadianAboriginalSyllabics,
sizeof(UnifiedCanadianAboriginalSyllabics) /
sizeof(*UnifiedCanadianAboriginalSyllabics) },
4282 { 0x1680, I18N_NOOP(
"Ogham"), Ogham,
sizeof(Ogham) /
sizeof(*Ogham) },
4283 { 0x16A0, I18N_NOOP(
"Runic"), Runic,
sizeof(Runic) /
sizeof(*Runic) },
4284 { 0x1700, I18N_NOOP(
"Tagalog"), Tagalog,
sizeof(Tagalog) /
sizeof(*Tagalog) },
4285 { 0x1720, I18N_NOOP(
"Hanunoo"), Hanunoo,
sizeof(Hanunoo) /
sizeof(*Hanunoo) },
4286 { 0x1740, I18N_NOOP(
"Buhid"), Buhid,
sizeof(Buhid) /
sizeof(*Buhid) },
4287 { 0x1760, I18N_NOOP(
"Tagbanwa"), Tagbanwa,
sizeof(Tagbanwa) /
sizeof(*Tagbanwa) },
4288 { 0x1780, I18N_NOOP(
"Khmer"), Khmer,
sizeof(Khmer) /
sizeof(*Khmer) },
4289 { 0x1800, I18N_NOOP(
"Mongolian"), Mongolian,
sizeof(Mongolian) /
sizeof(*Mongolian) },
4290 { 0x18B0, I18N_NOOP(
"Unified Canadian Aboriginal Syllabics Extended"), UnifiedCanadianAboriginalSyllabicsExtended,
sizeof(UnifiedCanadianAboriginalSyllabicsExtended) /
sizeof(*UnifiedCanadianAboriginalSyllabicsExtended) },
4291 { 0x1900, I18N_NOOP(
"Limbu"), Limbu,
sizeof(Limbu) /
sizeof(*Limbu) },
4292 { 0x1950, I18N_NOOP(
"Tai Le"), TaiLe,
sizeof(TaiLe) /
sizeof(*TaiLe) },
4293 { 0x1980, I18N_NOOP(
"New Tai Lue"), NewTaiLue,
sizeof(NewTaiLue) /
sizeof(*NewTaiLue) },
4294 { 0x19E0, I18N_NOOP(
"Khmer Symbols"), KhmerSymbols,
sizeof(KhmerSymbols) /
sizeof(*KhmerSymbols) },
4295 { 0x1A00, I18N_NOOP(
"Buginese"), Buginese,
sizeof(Buginese) /
sizeof(*Buginese) },
4296 { 0x1A20, I18N_NOOP(
"Tai Tham"), TaiTham,
sizeof(TaiTham) /
sizeof(*TaiTham) },
4297 { 0x1AB0, I18N_NOOP(
"Combining Diacritical Marks Extended"), CombiningDiacriticalMarksExtended,
sizeof(CombiningDiacriticalMarksExtended) /
sizeof(*CombiningDiacriticalMarksExtended) },
4298 { 0x1B00, I18N_NOOP(
"Balinese"), Balinese,
sizeof(Balinese) /
sizeof(*Balinese) },
4299 { 0x1B80, I18N_NOOP(
"Sundanese"), Sundanese,
sizeof(Sundanese) /
sizeof(*Sundanese) },
4300 { 0x1BC0, I18N_NOOP(
"Batak"), Batak,
sizeof(Batak) /
sizeof(*Batak) },
4301 { 0x1C00, I18N_NOOP(
"Lepcha"), Lepcha,
sizeof(Lepcha) /
sizeof(*Lepcha) },
4302 { 0x1C50, I18N_NOOP(
"Ol Chiki"), OlChiki,
sizeof(OlChiki) /
sizeof(*OlChiki) },
4303 { 0x1C80, I18N_NOOP(
"Cyrillic Extended-C"), CyrillicExtendedC,
sizeof(CyrillicExtendedC) /
sizeof(*CyrillicExtendedC) },
4304 { 0x1C90, I18N_NOOP(
"Georgian Extended"), GeorgianExtended,
sizeof(GeorgianExtended) /
sizeof(*GeorgianExtended) },
4305 { 0x1CC0, I18N_NOOP(
"Sundanese Supplement"), SundaneseSupplement,
sizeof(SundaneseSupplement) /
sizeof(*SundaneseSupplement) },
4306 { 0x1CD0, I18N_NOOP(
"Vedic Extensions"), VedicExtensions,
sizeof(VedicExtensions) /
sizeof(*VedicExtensions) },
4307 { 0x1D00, I18N_NOOP(
"Phonetic Extensions"), PhoneticExtensions,
sizeof(PhoneticExtensions) /
sizeof(*PhoneticExtensions) },
4308 { 0x1D80, I18N_NOOP(
"Phonetic Extensions Supplement"), PhoneticExtensionsSupplement,
sizeof(PhoneticExtensionsSupplement) /
sizeof(*PhoneticExtensionsSupplement) },
4309 { 0x1DC0, I18N_NOOP(
"Combining Diacritical Marks Supplement"), CombiningDiacriticalMarksSupplement,
sizeof(CombiningDiacriticalMarksSupplement) /
sizeof(*CombiningDiacriticalMarksSupplement) },
4310 { 0x1E00, I18N_NOOP(
"Latin Extended Additional"), LatinExtendedAdditional,
sizeof(LatinExtendedAdditional) /
sizeof(*LatinExtendedAdditional) },
4311 { 0x1F00, I18N_NOOP(
"Greek Extended"), GreekExtended,
sizeof(GreekExtended) /
sizeof(*GreekExtended) },
4312 { 0x2000, I18N_NOOP(
"General Punctuation"), GeneralPunctuation,
sizeof(GeneralPunctuation) /
sizeof(*GeneralPunctuation) },
4313 { 0x2070, I18N_NOOP(
"Superscripts and Subscripts"), SuperscriptsandSubscripts,
sizeof(SuperscriptsandSubscripts) /
sizeof(*SuperscriptsandSubscripts) },
4314 { 0x20A0, I18N_NOOP(
"Currency Symbols"), CurrencySymbols,
sizeof(CurrencySymbols) /
sizeof(*CurrencySymbols) },
4315 { 0x20D0, I18N_NOOP(
"Combining Diacritical Marks for Symbols"), CombiningDiacriticalMarksforSymbols,
sizeof(CombiningDiacriticalMarksforSymbols) /
sizeof(*CombiningDiacriticalMarksforSymbols) },
4316 { 0x2100, I18N_NOOP(
"Letterlike Symbols"), LetterlikeSymbols,
sizeof(LetterlikeSymbols) /
sizeof(*LetterlikeSymbols) },
4317 { 0x2150, I18N_NOOP(
"Number Forms"), NumberForms,
sizeof(NumberForms) /
sizeof(*NumberForms) },
4318 { 0x2190, I18N_NOOP(
"Arrows"), Arrows,
sizeof(Arrows) /
sizeof(*Arrows) },
4319 { 0x2200, I18N_NOOP(
"Mathematical Operators"), MathematicalOperators,
sizeof(MathematicalOperators) /
sizeof(*MathematicalOperators) },
4320 { 0x2300, I18N_NOOP(
"Miscellaneous Technical"), MiscellaneousTechnical,
sizeof(MiscellaneousTechnical) /
sizeof(*MiscellaneousTechnical) },
4321 { 0x2400, I18N_NOOP(
"Control Pictures"), ControlPictures,
sizeof(ControlPictures) /
sizeof(*ControlPictures) },
4322 { 0x2440, I18N_NOOP(
"Optical Character Recognition"), OpticalCharacterRecognition,
sizeof(OpticalCharacterRecognition) /
sizeof(*OpticalCharacterRecognition) },
4323 { 0x2460, I18N_NOOP(
"Enclosed Alphanumerics"), EnclosedAlphanumerics,
sizeof(EnclosedAlphanumerics) /
sizeof(*EnclosedAlphanumerics) },
4324 { 0x2500, I18N_NOOP(
"Box Drawing"), BoxDrawing,
sizeof(BoxDrawing) /
sizeof(*BoxDrawing) },
4325 { 0x2580, I18N_NOOP(
"Block Elements"), BlockElements,
sizeof(BlockElements) /
sizeof(*BlockElements) },
4326 { 0x25A0, I18N_NOOP(
"Geometric Shapes"), GeometricShapes,
sizeof(GeometricShapes) /
sizeof(*GeometricShapes) },
4327 { 0x2600, I18N_NOOP(
"Miscellaneous Symbols"), MiscellaneousSymbols,
sizeof(MiscellaneousSymbols) /
sizeof(*MiscellaneousSymbols) },
4328 { 0x2700, I18N_NOOP(
"Dingbats"), Dingbats,
sizeof(Dingbats) /
sizeof(*Dingbats) },
4329 { 0x27C0, I18N_NOOP(
"Miscellaneous Mathematical Symbols-A"), MiscellaneousMathematicalSymbolsA,
sizeof(MiscellaneousMathematicalSymbolsA) /
sizeof(*MiscellaneousMathematicalSymbolsA) },
4330 { 0x27F0, I18N_NOOP(
"Supplemental Arrows-A"), SupplementalArrowsA,
sizeof(SupplementalArrowsA) /
sizeof(*SupplementalArrowsA) },
4331 { 0x2800, I18N_NOOP(
"Braille Patterns"), BraillePatterns,
sizeof(BraillePatterns) /
sizeof(*BraillePatterns) },
4332 { 0x2900, I18N_NOOP(
"Supplemental Arrows-B"), SupplementalArrowsB,
sizeof(SupplementalArrowsB) /
sizeof(*SupplementalArrowsB) },
4333 { 0x2980, I18N_NOOP(
"Miscellaneous Mathematical Symbols-B"), MiscellaneousMathematicalSymbolsB,
sizeof(MiscellaneousMathematicalSymbolsB) /
sizeof(*MiscellaneousMathematicalSymbolsB) },
4334 { 0x2A00, I18N_NOOP(
"Supplemental Mathematical Operators"), SupplementalMathematicalOperators,
sizeof(SupplementalMathematicalOperators) /
sizeof(*SupplementalMathematicalOperators) },
4335 { 0x2B00, I18N_NOOP(
"Miscellaneous Symbols and Arrows"), MiscellaneousSymbolsandArrows,
sizeof(MiscellaneousSymbolsandArrows) /
sizeof(*MiscellaneousSymbolsandArrows) },
4336 { 0x2C00, I18N_NOOP(
"Glagolitic"), Glagolitic,
sizeof(Glagolitic) /
sizeof(*Glagolitic) },
4337 { 0x2C60, I18N_NOOP(
"Latin Extended-C"), LatinExtendedC,
sizeof(LatinExtendedC) /
sizeof(*LatinExtendedC) },
4338 { 0x2C80, I18N_NOOP(
"Coptic"), Coptic,
sizeof(Coptic) /
sizeof(*Coptic) },
4339 { 0x2D00, I18N_NOOP(
"Georgian Supplement"), GeorgianSupplement,
sizeof(GeorgianSupplement) /
sizeof(*GeorgianSupplement) },
4340 { 0x2D30, I18N_NOOP(
"Tifinagh"), Tifinagh,
sizeof(Tifinagh) /
sizeof(*Tifinagh) },
4341 { 0x2D80, I18N_NOOP(
"Ethiopic Extended"), EthiopicExtended,
sizeof(EthiopicExtended) /
sizeof(*EthiopicExtended) },
4342 { 0x2DE0, I18N_NOOP(
"Cyrillic Extended-A"), CyrillicExtendedA,
sizeof(CyrillicExtendedA) /
sizeof(*CyrillicExtendedA) },
4343 { 0x2E00, I18N_NOOP(
"Supplemental Punctuation"), SupplementalPunctuation,
sizeof(SupplementalPunctuation) /
sizeof(*SupplementalPunctuation) },
4344 { 0x2E80, I18N_NOOP(
"CJK Radicals Supplement"), CJKRadicalsSupplement,
sizeof(CJKRadicalsSupplement) /
sizeof(*CJKRadicalsSupplement) },
4345 { 0x2F00, I18N_NOOP(
"Kangxi Radicals"), KangxiRadicals,
sizeof(KangxiRadicals) /
sizeof(*KangxiRadicals) },
4346 { 0x2FF0, I18N_NOOP(
"Ideographic Description Characters"), IdeographicDescriptionCharacters,
sizeof(IdeographicDescriptionCharacters) /
sizeof(*IdeographicDescriptionCharacters) },
4347 { 0x3000, I18N_NOOP(
"CJK Symbols and Punctuation"), CJKSymbolsandPunctuation,
sizeof(CJKSymbolsandPunctuation) /
sizeof(*CJKSymbolsandPunctuation) },
4348 { 0x3040, I18N_NOOP(
"Hiragana"), Hiragana,
sizeof(Hiragana) /
sizeof(*Hiragana) },
4349 { 0x30A0, I18N_NOOP(
"Katakana"), Katakana,
sizeof(Katakana) /
sizeof(*Katakana) },
4350 { 0x3100, I18N_NOOP(
"Bopomofo"), Bopomofo,
sizeof(Bopomofo) /
sizeof(*Bopomofo) },
4351 { 0x3130, I18N_NOOP(
"Hangul Compatibility Jamo"), HangulCompatibilityJamo,
sizeof(HangulCompatibilityJamo) /
sizeof(*HangulCompatibilityJamo) },
4352 { 0x3190, I18N_NOOP(
"Kanbun"), Kanbun,
sizeof(Kanbun) /
sizeof(*Kanbun) },
4353 { 0x31A0, I18N_NOOP(
"Bopomofo Extended"), BopomofoExtended,
sizeof(BopomofoExtended) /
sizeof(*BopomofoExtended) },
4354 { 0x31C0, I18N_NOOP(
"CJK Strokes"), CJKStrokes,
sizeof(CJKStrokes) /
sizeof(*CJKStrokes) },
4355 { 0x31F0, I18N_NOOP(
"Katakana Phonetic Extensions"), KatakanaPhoneticExtensions,
sizeof(KatakanaPhoneticExtensions) /
sizeof(*KatakanaPhoneticExtensions) },
4356 { 0x3200, I18N_NOOP(
"Enclosed CJK Letters and Months"), EnclosedCJKLettersandMonths,
sizeof(EnclosedCJKLettersandMonths) /
sizeof(*EnclosedCJKLettersandMonths) },
4357 { 0x3300, I18N_NOOP(
"CJK Compatibility"), CJKCompatibility,
sizeof(CJKCompatibility) /
sizeof(*CJKCompatibility) },
4358 { 0x3400, I18N_NOOP(
"CJK Unified Ideographs Extension A"), CJKUnifiedIdeographsExtensionA,
sizeof(CJKUnifiedIdeographsExtensionA) /
sizeof(*CJKUnifiedIdeographsExtensionA) },
4359 { 0x4DC0, I18N_NOOP(
"Yijing Hexagram Symbols"), YijingHexagramSymbols,
sizeof(YijingHexagramSymbols) /
sizeof(*YijingHexagramSymbols) },
4360 { 0x4E00, I18N_NOOP(
"CJK Unified Ideographs"), CJKUnifiedIdeographs,
sizeof(CJKUnifiedIdeographs) /
sizeof(*CJKUnifiedIdeographs) },
4361 { 0xA000, I18N_NOOP(
"Yi Syllables"), YiSyllables,
sizeof(YiSyllables) /
sizeof(*YiSyllables) },
4362 { 0xA490, I18N_NOOP(
"Yi Radicals"), YiRadicals,
sizeof(YiRadicals) /
sizeof(*YiRadicals) },
4363 { 0xA4D0, I18N_NOOP(
"Lisu"), Lisu,
sizeof(Lisu) /
sizeof(*Lisu) },
4364 { 0xA500, I18N_NOOP(
"Vai"), Vai,
sizeof(Vai) /
sizeof(*Vai) },
4365 { 0xA640, I18N_NOOP(
"Cyrillic Extended-B"), CyrillicExtendedB,
sizeof(CyrillicExtendedB) /
sizeof(*CyrillicExtendedB) },
4366 { 0xA6A0, I18N_NOOP(
"Bamum"), Bamum,
sizeof(Bamum) /
sizeof(*Bamum) },
4367 { 0xA700, I18N_NOOP(
"Modifier Tone Letters"), ModifierToneLetters,
sizeof(ModifierToneLetters) /
sizeof(*ModifierToneLetters) },
4368 { 0xA720, I18N_NOOP(
"Latin Extended-D"), LatinExtendedD,
sizeof(LatinExtendedD) /
sizeof(*LatinExtendedD) },
4369 { 0xA800, I18N_NOOP(
"Syloti Nagri"), SylotiNagri,
sizeof(SylotiNagri) /
sizeof(*SylotiNagri) },
4370 { 0xA830, I18N_NOOP(
"Common Indic Number Forms"), CommonIndicNumberForms,
sizeof(CommonIndicNumberForms) /
sizeof(*CommonIndicNumberForms) },
4371 { 0xA840, I18N_NOOP(
"Phags-pa"), Phagspa,
sizeof(Phagspa) /
sizeof(*Phagspa) },
4372 { 0xA880, I18N_NOOP(
"Saurashtra"), Saurashtra,
sizeof(Saurashtra) /
sizeof(*Saurashtra) },
4373 { 0xA8E0, I18N_NOOP(
"Devanagari Extended"), DevanagariExtended,
sizeof(DevanagariExtended) /
sizeof(*DevanagariExtended) },
4374 { 0xA900, I18N_NOOP(
"Kayah Li"), KayahLi,
sizeof(KayahLi) /
sizeof(*KayahLi) },
4375 { 0xA930, I18N_NOOP(
"Rejang"), Rejang,
sizeof(Rejang) /
sizeof(*Rejang) },
4376 { 0xA960, I18N_NOOP(
"Hangul Jamo Extended-A"), HangulJamoExtendedA,
sizeof(HangulJamoExtendedA) /
sizeof(*HangulJamoExtendedA) },
4377 { 0xA980, I18N_NOOP(
"Javanese"), Javanese,
sizeof(Javanese) /
sizeof(*Javanese) },
4378 { 0xA9E0, I18N_NOOP(
"Myanmar Extended-B"), MyanmarExtendedB,
sizeof(MyanmarExtendedB) /
sizeof(*MyanmarExtendedB) },
4379 { 0xAA00, I18N_NOOP(
"Cham"), Cham,
sizeof(Cham) /
sizeof(*Cham) },
4380 { 0xAA60, I18N_NOOP(
"Myanmar Extended-A"), MyanmarExtendedA,
sizeof(MyanmarExtendedA) /
sizeof(*MyanmarExtendedA) },
4381 { 0xAA80, I18N_NOOP(
"Tai Viet"), TaiViet,
sizeof(TaiViet) /
sizeof(*TaiViet) },
4382 { 0xAAE0, I18N_NOOP(
"Meetei Mayek Extensions"), MeeteiMayekExtensions,
sizeof(MeeteiMayekExtensions) /
sizeof(*MeeteiMayekExtensions) },
4383 { 0xAB00, I18N_NOOP(
"Ethiopic Extended-A"), EthiopicExtendedA,
sizeof(EthiopicExtendedA) /
sizeof(*EthiopicExtendedA) },
4384 { 0xAB30, I18N_NOOP(
"Latin Extended-E"), LatinExtendedE,
sizeof(LatinExtendedE) /
sizeof(*LatinExtendedE) },
4385 { 0xAB70, I18N_NOOP(
"Cherokee Supplement"), CherokeeSupplement,
sizeof(CherokeeSupplement) /
sizeof(*CherokeeSupplement) },
4386 { 0xABC0, I18N_NOOP(
"Meetei Mayek"), MeeteiMayek,
sizeof(MeeteiMayek) /
sizeof(*MeeteiMayek) },
4387 { 0xAC00, I18N_NOOP(
"Hangul Syllables"), HangulSyllables,
sizeof(HangulSyllables) /
sizeof(*HangulSyllables) },
4388 { 0xD7B0, I18N_NOOP(
"Hangul Jamo Extended-B"), HangulJamoExtendedB,
sizeof(HangulJamoExtendedB) /
sizeof(*HangulJamoExtendedB) },
4389 { 0xD800, I18N_NOOP(
"High Surrogates"), HighSurrogates,
sizeof(HighSurrogates) /
sizeof(*HighSurrogates) },
4390 { 0xDB80, I18N_NOOP(
"High Private Use Surrogates"), HighPrivateUseSurrogates,
sizeof(HighPrivateUseSurrogates) /
sizeof(*HighPrivateUseSurrogates) },
4391 { 0xDC00, I18N_NOOP(
"Low Surrogates"), LowSurrogates,
sizeof(LowSurrogates) /
sizeof(*LowSurrogates) },
4392 { 0xE000, I18N_NOOP(
"Private Use Area"), PrivateUseArea,
sizeof(PrivateUseArea) /
sizeof(*PrivateUseArea) },
4393 { 0xF900, I18N_NOOP(
"CJK Compatibility Ideographs"), CJKCompatibilityIdeographs,
sizeof(CJKCompatibilityIdeographs) /
sizeof(*CJKCompatibilityIdeographs) },
4394 { 0xFB00, I18N_NOOP(
"Alphabetic Presentation Forms"), AlphabeticPresentationForms,
sizeof(AlphabeticPresentationForms) /
sizeof(*AlphabeticPresentationForms) },
4395 { 0xFB50, I18N_NOOP(
"Arabic Presentation Forms-A"), ArabicPresentationFormsA,
sizeof(ArabicPresentationFormsA) /
sizeof(*ArabicPresentationFormsA) },
4396 { 0xFE00, I18N_NOOP(
"Variation Selectors"), VariationSelectors,
sizeof(VariationSelectors) /
sizeof(*VariationSelectors) },
4397 { 0xFE10, I18N_NOOP(
"Vertical Forms"), VerticalForms,
sizeof(VerticalForms) /
sizeof(*VerticalForms) },
4398 { 0xFE20, I18N_NOOP(
"Combining Half Marks"), CombiningHalfMarks,
sizeof(CombiningHalfMarks) /
sizeof(*CombiningHalfMarks) },
4399 { 0xFE30, I18N_NOOP(
"CJK Compatibility Forms"), CJKCompatibilityForms,
sizeof(CJKCompatibilityForms) /
sizeof(*CJKCompatibilityForms) },
4400 { 0xFE50, I18N_NOOP(
"Small Form Variants"), SmallFormVariants,
sizeof(SmallFormVariants) /
sizeof(*SmallFormVariants) },
4401 { 0xFE70, I18N_NOOP(
"Arabic Presentation Forms-B"), ArabicPresentationFormsB,
sizeof(ArabicPresentationFormsB) /
sizeof(*ArabicPresentationFormsB) },
4402 { 0xFF00, I18N_NOOP(
"Halfwidth and Fullwidth Forms"), HalfwidthandFullwidthForms,
sizeof(HalfwidthandFullwidthForms) /
sizeof(*HalfwidthandFullwidthForms) },
4403 { 0xFFF0, I18N_NOOP(
"Specials"), Specials,
sizeof(Specials) /
sizeof(*Specials) },
4404 { 0x10000, I18N_NOOP(
"Linear B Syllabary"), LinearBSyllabary,
sizeof(LinearBSyllabary) /
sizeof(*LinearBSyllabary) },
4405 { 0x10080, I18N_NOOP(
"Linear B Ideograms"), LinearBIdeograms,
sizeof(LinearBIdeograms) /
sizeof(*LinearBIdeograms) },
4406 { 0x10100, I18N_NOOP(
"Aegean Numbers"), AegeanNumbers,
sizeof(AegeanNumbers) /
sizeof(*AegeanNumbers) },
4407 { 0x10140, I18N_NOOP(
"Ancient Greek Numbers"), AncientGreekNumbers,
sizeof(AncientGreekNumbers) /
sizeof(*AncientGreekNumbers) },
4408 { 0x10190, I18N_NOOP(
"Ancient Symbols"), AncientSymbols,
sizeof(AncientSymbols) /
sizeof(*AncientSymbols) },
4409 { 0x101D0, I18N_NOOP(
"Phaistos Disc"), PhaistosDisc,
sizeof(PhaistosDisc) /
sizeof(*PhaistosDisc) },
4410 { 0x10280, I18N_NOOP(
"Lycian"), Lycian,
sizeof(Lycian) /
sizeof(*Lycian) },
4411 { 0x102A0, I18N_NOOP(
"Carian"), Carian,
sizeof(Carian) /
sizeof(*Carian) },
4412 { 0x102E0, I18N_NOOP(
"Coptic Epact Numbers"), CopticEpactNumbers,
sizeof(CopticEpactNumbers) /
sizeof(*CopticEpactNumbers) },
4413 { 0x10300, I18N_NOOP(
"Old Italic"), OldItalic,
sizeof(OldItalic) /
sizeof(*OldItalic) },
4414 { 0x10330, I18N_NOOP(
"Gothic"), Gothic,
sizeof(Gothic) /
sizeof(*Gothic) },
4415 { 0x10350, I18N_NOOP(
"Old Permic"), OldPermic,
sizeof(OldPermic) /
sizeof(*OldPermic) },
4416 { 0x10380, I18N_NOOP(
"Ugaritic"), Ugaritic,
sizeof(Ugaritic) /
sizeof(*Ugaritic) },
4417 { 0x103A0, I18N_NOOP(
"Old Persian"), OldPersian,
sizeof(OldPersian) /
sizeof(*OldPersian) },
4418 { 0x10400, I18N_NOOP(
"Deseret"), Deseret,
sizeof(Deseret) /
sizeof(*Deseret) },
4419 { 0x10450, I18N_NOOP(
"Shavian"), Shavian,
sizeof(Shavian) /
sizeof(*Shavian) },
4420 { 0x10480, I18N_NOOP(
"Osmanya"), Osmanya,
sizeof(Osmanya) /
sizeof(*Osmanya) },
4421 { 0x104B0, I18N_NOOP(
"Osage"), Osage,
sizeof(Osage) /
sizeof(*Osage) },
4422 { 0x10500, I18N_NOOP(
"Elbasan"), Elbasan,
sizeof(Elbasan) /
sizeof(*Elbasan) },
4423 { 0x10530, I18N_NOOP(
"Caucasian Albanian"), CaucasianAlbanian,
sizeof(CaucasianAlbanian) /
sizeof(*CaucasianAlbanian) },
4424 { 0x10570, I18N_NOOP(
"Vithkuqi"), Vithkuqi,
sizeof(Vithkuqi) /
sizeof(*Vithkuqi) },
4425 { 0x105C0, I18N_NOOP(
"Todhri"), Todhri,
sizeof(Todhri) /
sizeof(*Todhri) },
4426 { 0x10600, I18N_NOOP(
"Linear A"), LinearA,
sizeof(LinearA) /
sizeof(*LinearA) },
4427 { 0x10780, I18N_NOOP(
"Latin Extended-F"), LatinExtendedF,
sizeof(LatinExtendedF) /
sizeof(*LatinExtendedF) },
4428 { 0x10800, I18N_NOOP(
"Cypriot Syllabary"), CypriotSyllabary,
sizeof(CypriotSyllabary) /
sizeof(*CypriotSyllabary) },
4429 { 0x10840, I18N_NOOP(
"Imperial Aramaic"), ImperialAramaic,
sizeof(ImperialAramaic) /
sizeof(*ImperialAramaic) },
4430 { 0x10860, I18N_NOOP(
"Palmyrene"), Palmyrene,
sizeof(Palmyrene) /
sizeof(*Palmyrene) },
4431 { 0x10880, I18N_NOOP(
"Nabataean"), Nabataean,
sizeof(Nabataean) /
sizeof(*Nabataean) },
4432 { 0x108E0, I18N_NOOP(
"Hatran"), Hatran,
sizeof(Hatran) /
sizeof(*Hatran) },
4433 { 0x10900, I18N_NOOP(
"Phoenician"), Phoenician,
sizeof(Phoenician) /
sizeof(*Phoenician) },
4434 { 0x10920, I18N_NOOP(
"Lydian"), Lydian,
sizeof(Lydian) /
sizeof(*Lydian) },
4435 { 0x10940, I18N_NOOP(
"Sidetic"), Sidetic,
sizeof(Sidetic) /
sizeof(*Sidetic) },
4436 { 0x10980, I18N_NOOP(
"Meroitic Hieroglyphs"), MeroiticHieroglyphs,
sizeof(MeroiticHieroglyphs) /
sizeof(*MeroiticHieroglyphs) },
4437 { 0x109A0, I18N_NOOP(
"Meroitic Cursive"), MeroiticCursive,
sizeof(MeroiticCursive) /
sizeof(*MeroiticCursive) },
4438 { 0x10A00, I18N_NOOP(
"Kharoshthi"), Kharoshthi,
sizeof(Kharoshthi) /
sizeof(*Kharoshthi) },
4439 { 0x10A60, I18N_NOOP(
"Old South Arabian"), OldSouthArabian,
sizeof(OldSouthArabian) /
sizeof(*OldSouthArabian) },
4440 { 0x10A80, I18N_NOOP(
"Old North Arabian"), OldNorthArabian,
sizeof(OldNorthArabian) /
sizeof(*OldNorthArabian) },
4441 { 0x10AC0, I18N_NOOP(
"Manichaean"), Manichaean,
sizeof(Manichaean) /
sizeof(*Manichaean) },
4442 { 0x10B00, I18N_NOOP(
"Avestan"), Avestan,
sizeof(Avestan) /
sizeof(*Avestan) },
4443 { 0x10B40, I18N_NOOP(
"Inscriptional Parthian"), InscriptionalParthian,
sizeof(InscriptionalParthian) /
sizeof(*InscriptionalParthian) },
4444 { 0x10B60, I18N_NOOP(
"Inscriptional Pahlavi"), InscriptionalPahlavi,
sizeof(InscriptionalPahlavi) /
sizeof(*InscriptionalPahlavi) },
4445 { 0x10B80, I18N_NOOP(
"Psalter Pahlavi"), PsalterPahlavi,
sizeof(PsalterPahlavi) /
sizeof(*PsalterPahlavi) },
4446 { 0x10C00, I18N_NOOP(
"Old Turkic"), OldTurkic,
sizeof(OldTurkic) /
sizeof(*OldTurkic) },
4447 { 0x10C80, I18N_NOOP(
"Old Hungarian"), OldHungarian,
sizeof(OldHungarian) /
sizeof(*OldHungarian) },
4448 { 0x10D00, I18N_NOOP(
"Hanifi Rohingya"), HanifiRohingya,
sizeof(HanifiRohingya) /
sizeof(*HanifiRohingya) },
4449 { 0x10D40, I18N_NOOP(
"Garay"), Garay,
sizeof(Garay) /
sizeof(*Garay) },
4450 { 0x10E60, I18N_NOOP(
"Rumi Numeral Symbols"), RumiNumeralSymbols,
sizeof(RumiNumeralSymbols) /
sizeof(*RumiNumeralSymbols) },
4451 { 0x10E80, I18N_NOOP(
"Yezidi"), Yezidi,
sizeof(Yezidi) /
sizeof(*Yezidi) },
4452 { 0x10EC0, I18N_NOOP(
"Arabic Extended-C"), ArabicExtendedC,
sizeof(ArabicExtendedC) /
sizeof(*ArabicExtendedC) },
4453 { 0x10F00, I18N_NOOP(
"Old Sogdian"), OldSogdian,
sizeof(OldSogdian) /
sizeof(*OldSogdian) },
4454 { 0x10F30, I18N_NOOP(
"Sogdian"), Sogdian,
sizeof(Sogdian) /
sizeof(*Sogdian) },
4455 { 0x10F70, I18N_NOOP(
"Old Uyghur"), OldUyghur,
sizeof(OldUyghur) /
sizeof(*OldUyghur) },
4456 { 0x10FB0, I18N_NOOP(
"Chorasmian"), Chorasmian,
sizeof(Chorasmian) /
sizeof(*Chorasmian) },
4457 { 0x10FE0, I18N_NOOP(
"Elymaic"), Elymaic,
sizeof(Elymaic) /
sizeof(*Elymaic) },
4458 { 0x11000, I18N_NOOP(
"Brahmi"), Brahmi,
sizeof(Brahmi) /
sizeof(*Brahmi) },
4459 { 0x11080, I18N_NOOP(
"Kaithi"), Kaithi,
sizeof(Kaithi) /
sizeof(*Kaithi) },
4460 { 0x110D0, I18N_NOOP(
"Sora Sompeng"), SoraSompeng,
sizeof(SoraSompeng) /
sizeof(*SoraSompeng) },
4461 { 0x11100, I18N_NOOP(
"Chakma"), Chakma,
sizeof(Chakma) /
sizeof(*Chakma) },
4462 { 0x11150, I18N_NOOP(
"Mahajani"), Mahajani,
sizeof(Mahajani) /
sizeof(*Mahajani) },
4463 { 0x11180, I18N_NOOP(
"Sharada"), Sharada,
sizeof(Sharada) /
sizeof(*Sharada) },
4464 { 0x111E0, I18N_NOOP(
"Sinhala Archaic Numbers"), SinhalaArchaicNumbers,
sizeof(SinhalaArchaicNumbers) /
sizeof(*SinhalaArchaicNumbers) },
4465 { 0x11200, I18N_NOOP(
"Khojki"), Khojki,
sizeof(Khojki) /
sizeof(*Khojki) },
4466 { 0x11280, I18N_NOOP(
"Multani"), Multani,
sizeof(Multani) /
sizeof(*Multani) },
4467 { 0x112B0, I18N_NOOP(
"Khudawadi"), Khudawadi,
sizeof(Khudawadi) /
sizeof(*Khudawadi) },
4468 { 0x11300, I18N_NOOP(
"Grantha"), Grantha,
sizeof(Grantha) /
sizeof(*Grantha) },
4469 { 0x11380, I18N_NOOP(
"Tulu-Tigalari"), TuluTigalari,
sizeof(TuluTigalari) /
sizeof(*TuluTigalari) },
4470 { 0x11400, I18N_NOOP(
"Newa"), Newa,
sizeof(Newa) /
sizeof(*Newa) },
4471 { 0x11480, I18N_NOOP(
"Tirhuta"), Tirhuta,
sizeof(Tirhuta) /
sizeof(*Tirhuta) },
4472 { 0x11580, I18N_NOOP(
"Siddham"), Siddham,
sizeof(Siddham) /
sizeof(*Siddham) },
4473 { 0x11600, I18N_NOOP(
"Modi"), Modi,
sizeof(Modi) /
sizeof(*Modi) },
4474 { 0x11660, I18N_NOOP(
"Mongolian Supplement"), MongolianSupplement,
sizeof(MongolianSupplement) /
sizeof(*MongolianSupplement) },
4475 { 0x11680, I18N_NOOP(
"Takri"), Takri,
sizeof(Takri) /
sizeof(*Takri) },
4476 { 0x116D0, I18N_NOOP(
"Myanmar Extended-C"), MyanmarExtendedC,
sizeof(MyanmarExtendedC) /
sizeof(*MyanmarExtendedC) },
4477 { 0x11700, I18N_NOOP(
"Ahom"), Ahom,
sizeof(Ahom) /
sizeof(*Ahom) },
4478 { 0x11800, I18N_NOOP(
"Dogra"), Dogra,
sizeof(Dogra) /
sizeof(*Dogra) },
4479 { 0x118A0, I18N_NOOP(
"Warang Citi"), WarangCiti,
sizeof(WarangCiti) /
sizeof(*WarangCiti) },
4480 { 0x11900, I18N_NOOP(
"Dives Akuru"), DivesAkuru,
sizeof(DivesAkuru) /
sizeof(*DivesAkuru) },
4481 { 0x119A0, I18N_NOOP(
"Nandinagari"), Nandinagari,
sizeof(Nandinagari) /
sizeof(*Nandinagari) },
4482 { 0x11A00, I18N_NOOP(
"Zanabazar Square"), ZanabazarSquare,
sizeof(ZanabazarSquare) /
sizeof(*ZanabazarSquare) },
4483 { 0x11A50, I18N_NOOP(
"Soyombo"), Soyombo,
sizeof(Soyombo) /
sizeof(*Soyombo) },
4484 { 0x11AB0, I18N_NOOP(
"Unified Canadian Aboriginal Syllabics Extended-A"), UnifiedCanadianAboriginalSyllabicsExtendedA,
sizeof(UnifiedCanadianAboriginalSyllabicsExtendedA) /
sizeof(*UnifiedCanadianAboriginalSyllabicsExtendedA) },
4485 { 0x11AC0, I18N_NOOP(
"Pau Cin Hau"), PauCinHau,
sizeof(PauCinHau) /
sizeof(*PauCinHau) },
4486 { 0x11B00, I18N_NOOP(
"Devanagari Extended-A"), DevanagariExtendedA,
sizeof(DevanagariExtendedA) /
sizeof(*DevanagariExtendedA) },
4487 { 0x11B60, I18N_NOOP(
"Sharada Supplement"), SharadaSupplement,
sizeof(SharadaSupplement) /
sizeof(*SharadaSupplement) },
4488 { 0x11BC0, I18N_NOOP(
"Sunuwar"), Sunuwar,
sizeof(Sunuwar) /
sizeof(*Sunuwar) },
4489 { 0x11C00, I18N_NOOP(
"Bhaiksuki"), Bhaiksuki,
sizeof(Bhaiksuki) /
sizeof(*Bhaiksuki) },
4490 { 0x11C70, I18N_NOOP(
"Marchen"), Marchen,
sizeof(Marchen) /
sizeof(*Marchen) },
4491 { 0x11D00, I18N_NOOP(
"Masaram Gondi"), MasaramGondi,
sizeof(MasaramGondi) /
sizeof(*MasaramGondi) },
4492 { 0x11D60, I18N_NOOP(
"Gunjala Gondi"), GunjalaGondi,
sizeof(GunjalaGondi) /
sizeof(*GunjalaGondi) },
4493 { 0x11DB0, I18N_NOOP(
"Tolong Siki"), TolongSiki,
sizeof(TolongSiki) /
sizeof(*TolongSiki) },
4494 { 0x11EE0, I18N_NOOP(
"Makasar"), Makasar,
sizeof(Makasar) /
sizeof(*Makasar) },
4495 { 0x11F00, I18N_NOOP(
"Kawi"), Kawi,
sizeof(Kawi) /
sizeof(*Kawi) },
4496 { 0x11FB0, I18N_NOOP(
"Lisu Supplement"), LisuSupplement,
sizeof(LisuSupplement) /
sizeof(*LisuSupplement) },
4497 { 0x11FC0, I18N_NOOP(
"Tamil Supplement"), TamilSupplement,
sizeof(TamilSupplement) /
sizeof(*TamilSupplement) },
4498 { 0x12000, I18N_NOOP(
"Cuneiform"), Cuneiform,
sizeof(Cuneiform) /
sizeof(*Cuneiform) },
4499 { 0x12400, I18N_NOOP(
"Cuneiform Numbers and Punctuation"), CuneiformNumbersandPunctuation,
sizeof(CuneiformNumbersandPunctuation) /
sizeof(*CuneiformNumbersandPunctuation) },
4500 { 0x12480, I18N_NOOP(
"Early Dynastic Cuneiform"), EarlyDynasticCuneiform,
sizeof(EarlyDynasticCuneiform) /
sizeof(*EarlyDynasticCuneiform) },
4501 { 0x12F90, I18N_NOOP(
"Cypro-Minoan"), CyproMinoan,
sizeof(CyproMinoan) /
sizeof(*CyproMinoan) },
4502 { 0x13000, I18N_NOOP(
"Egyptian Hieroglyphs"), EgyptianHieroglyphs,
sizeof(EgyptianHieroglyphs) /
sizeof(*EgyptianHieroglyphs) },
4503 { 0x13430, I18N_NOOP(
"Egyptian Hieroglyph Format Controls"), EgyptianHieroglyphFormatControls,
sizeof(EgyptianHieroglyphFormatControls) /
sizeof(*EgyptianHieroglyphFormatControls) },
4504 { 0x13460, I18N_NOOP(
"Egyptian Hieroglyphs Extended-A"), EgyptianHieroglyphsExtendedA,
sizeof(EgyptianHieroglyphsExtendedA) /
sizeof(*EgyptianHieroglyphsExtendedA) },
4505 { 0x14400, I18N_NOOP(
"Anatolian Hieroglyphs"), AnatolianHieroglyphs,
sizeof(AnatolianHieroglyphs) /
sizeof(*AnatolianHieroglyphs) },
4506 { 0x16100, I18N_NOOP(
"Gurung Khema"), GurungKhema,
sizeof(GurungKhema) /
sizeof(*GurungKhema) },
4507 { 0x16800, I18N_NOOP(
"Bamum Supplement"), BamumSupplement,
sizeof(BamumSupplement) /
sizeof(*BamumSupplement) },
4508 { 0x16A40, I18N_NOOP(
"Mro"), Mro,
sizeof(Mro) /
sizeof(*Mro) },
4509 { 0x16A70, I18N_NOOP(
"Tangsa"), Tangsa,
sizeof(Tangsa) /
sizeof(*Tangsa) },
4510 { 0x16AD0, I18N_NOOP(
"Bassa Vah"), BassaVah,
sizeof(BassaVah) /
sizeof(*BassaVah) },
4511 { 0x16B00, I18N_NOOP(
"Pahawh Hmong"), PahawhHmong,
sizeof(PahawhHmong) /
sizeof(*PahawhHmong) },
4512 { 0x16D40, I18N_NOOP(
"Kirat Rai"), KiratRai,
sizeof(KiratRai) /
sizeof(*KiratRai) },
4513 { 0x16E40, I18N_NOOP(
"Medefaidrin"), Medefaidrin,
sizeof(Medefaidrin) /
sizeof(*Medefaidrin) },
4514 { 0x16EA0, I18N_NOOP(
"Beria Erfe"), BeriaErfe,
sizeof(BeriaErfe) /
sizeof(*BeriaErfe) },
4515 { 0x16F00, I18N_NOOP(
"Miao"), Miao,
sizeof(Miao) /
sizeof(*Miao) },
4516 { 0x16FE0, I18N_NOOP(
"Ideographic Symbols and Punctuation"), IdeographicSymbolsandPunctuation,
sizeof(IdeographicSymbolsandPunctuation) /
sizeof(*IdeographicSymbolsandPunctuation) },
4517 { 0x17000, I18N_NOOP(
"Tangut"), Tangut,
sizeof(Tangut) /
sizeof(*Tangut) },
4518 { 0x18800, I18N_NOOP(
"Tangut Components"), TangutComponents,
sizeof(TangutComponents) /
sizeof(*TangutComponents) },
4519 { 0x18B00, I18N_NOOP(
"Khitan Small Script"), KhitanSmallScript,
sizeof(KhitanSmallScript) /
sizeof(*KhitanSmallScript) },
4520 { 0x18D00, I18N_NOOP(
"Tangut Supplement"), TangutSupplement,
sizeof(TangutSupplement) /
sizeof(*TangutSupplement) },
4521 { 0x18D80, I18N_NOOP(
"Tangut Components Supplement"), TangutComponentsSupplement,
sizeof(TangutComponentsSupplement) /
sizeof(*TangutComponentsSupplement) },
4522 { 0x1AFF0, I18N_NOOP(
"Kana Extended-B"), KanaExtendedB,
sizeof(KanaExtendedB) /
sizeof(*KanaExtendedB) },
4523 { 0x1B000, I18N_NOOP(
"Kana Supplement"), KanaSupplement,
sizeof(KanaSupplement) /
sizeof(*KanaSupplement) },
4524 { 0x1B100, I18N_NOOP(
"Kana Extended-A"), KanaExtendedA,
sizeof(KanaExtendedA) /
sizeof(*KanaExtendedA) },
4525 { 0x1B130, I18N_NOOP(
"Small Kana Extension"), SmallKanaExtension,
sizeof(SmallKanaExtension) /
sizeof(*SmallKanaExtension) },
4526 { 0x1B170, I18N_NOOP(
"Nushu"), Nushu,
sizeof(Nushu) /
sizeof(*Nushu) },
4527 { 0x1BC00, I18N_NOOP(
"Duployan"), Duployan,
sizeof(Duployan) /
sizeof(*Duployan) },
4528 { 0x1BCA0, I18N_NOOP(
"Shorthand Format Controls"), ShorthandFormatControls,
sizeof(ShorthandFormatControls) /
sizeof(*ShorthandFormatControls) },
4529 { 0x1CC00, I18N_NOOP(
"Symbols for Legacy Computing Supplement"), SymbolsforLegacyComputingSupplement,
sizeof(SymbolsforLegacyComputingSupplement) /
sizeof(*SymbolsforLegacyComputingSupplement) },
4530 { 0x1CEC0, I18N_NOOP(
"Miscellaneous Symbols Supplement"), MiscellaneousSymbolsSupplement,
sizeof(MiscellaneousSymbolsSupplement) /
sizeof(*MiscellaneousSymbolsSupplement) },
4531 { 0x1CF00, I18N_NOOP(
"Znamenny Musical Notation"), ZnamennyMusicalNotation,
sizeof(ZnamennyMusicalNotation) /
sizeof(*ZnamennyMusicalNotation) },
4532 { 0x1D000, I18N_NOOP(
"Byzantine Musical Symbols"), ByzantineMusicalSymbols,
sizeof(ByzantineMusicalSymbols) /
sizeof(*ByzantineMusicalSymbols) },
4533 { 0x1D100, I18N_NOOP(
"Musical Symbols"), MusicalSymbols,
sizeof(MusicalSymbols) /
sizeof(*MusicalSymbols) },
4534 { 0x1D200, I18N_NOOP(
"Ancient Greek Musical Notation"), AncientGreekMusicalNotation,
sizeof(AncientGreekMusicalNotation) /
sizeof(*AncientGreekMusicalNotation) },
4535 { 0x1D2C0, I18N_NOOP(
"Kaktovik Numerals"), KaktovikNumerals,
sizeof(KaktovikNumerals) /
sizeof(*KaktovikNumerals) },
4536 { 0x1D2E0, I18N_NOOP(
"Mayan Numerals"), MayanNumerals,
sizeof(MayanNumerals) /
sizeof(*MayanNumerals) },
4537 { 0x1D300, I18N_NOOP(
"Tai Xuan Jing Symbols"), TaiXuanJingSymbols,
sizeof(TaiXuanJingSymbols) /
sizeof(*TaiXuanJingSymbols) },
4538 { 0x1D360, I18N_NOOP(
"Counting Rod Numerals"), CountingRodNumerals,
sizeof(CountingRodNumerals) /
sizeof(*CountingRodNumerals) },
4539 { 0x1D400, I18N_NOOP(
"Mathematical Alphanumeric Symbols"), MathematicalAlphanumericSymbols,
sizeof(MathematicalAlphanumericSymbols) /
sizeof(*MathematicalAlphanumericSymbols) },
4540 { 0x1D800, I18N_NOOP(
"Sutton SignWriting"), SuttonSignWriting,
sizeof(SuttonSignWriting) /
sizeof(*SuttonSignWriting) },
4541 { 0x1DF00, I18N_NOOP(
"Latin Extended-G"), LatinExtendedG,
sizeof(LatinExtendedG) /
sizeof(*LatinExtendedG) },
4542 { 0x1E000, I18N_NOOP(
"Glagolitic Supplement"), GlagoliticSupplement,
sizeof(GlagoliticSupplement) /
sizeof(*GlagoliticSupplement) },
4543 { 0x1E030, I18N_NOOP(
"Cyrillic Extended-D"), CyrillicExtendedD,
sizeof(CyrillicExtendedD) /
sizeof(*CyrillicExtendedD) },
4544 { 0x1E100, I18N_NOOP(
"Nyiakeng Puachue Hmong"), NyiakengPuachueHmong,
sizeof(NyiakengPuachueHmong) /
sizeof(*NyiakengPuachueHmong) },
4545 { 0x1E290, I18N_NOOP(
"Toto"), Toto,
sizeof(Toto) /
sizeof(*Toto) },
4546 { 0x1E2C0, I18N_NOOP(
"Wancho"), Wancho,
sizeof(Wancho) /
sizeof(*Wancho) },
4547 { 0x1E4D0, I18N_NOOP(
"Nag Mundari"), NagMundari,
sizeof(NagMundari) /
sizeof(*NagMundari) },
4548 { 0x1E5D0, I18N_NOOP(
"Ol Onal"), OlOnal,
sizeof(OlOnal) /
sizeof(*OlOnal) },
4549 { 0x1E6C0, I18N_NOOP(
"Tai Yo"), TaiYo,
sizeof(TaiYo) /
sizeof(*TaiYo) },
4550 { 0x1E7E0, I18N_NOOP(
"Ethiopic Extended-B"), EthiopicExtendedB,
sizeof(EthiopicExtendedB) /
sizeof(*EthiopicExtendedB) },
4551 { 0x1E800, I18N_NOOP(
"Mende Kikakui"), MendeKikakui,
sizeof(MendeKikakui) /
sizeof(*MendeKikakui) },
4552 { 0x1E900, I18N_NOOP(
"Adlam"), Adlam,
sizeof(Adlam) /
sizeof(*Adlam) },
4553 { 0x1EC70, I18N_NOOP(
"Indic Siyaq Numbers"), IndicSiyaqNumbers,
sizeof(IndicSiyaqNumbers) /
sizeof(*IndicSiyaqNumbers) },
4554 { 0x1ED00, I18N_NOOP(
"Ottoman Siyaq Numbers"), OttomanSiyaqNumbers,
sizeof(OttomanSiyaqNumbers) /
sizeof(*OttomanSiyaqNumbers) },
4555 { 0x1EE00, I18N_NOOP(
"Arabic Mathematical Alphabetic Symbols"), ArabicMathematicalAlphabeticSymbols,
sizeof(ArabicMathematicalAlphabeticSymbols) /
sizeof(*ArabicMathematicalAlphabeticSymbols) },
4556 { 0x1F000, I18N_NOOP(
"Mahjong Tiles"), MahjongTiles,
sizeof(MahjongTiles) /
sizeof(*MahjongTiles) },
4557 { 0x1F030, I18N_NOOP(
"Domino Tiles"), DominoTiles,
sizeof(DominoTiles) /
sizeof(*DominoTiles) },
4558 { 0x1F0A0, I18N_NOOP(
"Playing Cards"), PlayingCards,
sizeof(PlayingCards) /
sizeof(*PlayingCards) },
4559 { 0x1F100, I18N_NOOP(
"Enclosed Alphanumeric Supplement"), EnclosedAlphanumericSupplement,
sizeof(EnclosedAlphanumericSupplement) /
sizeof(*EnclosedAlphanumericSupplement) },
4560 { 0x1F200, I18N_NOOP(
"Enclosed Ideographic Supplement"), EnclosedIdeographicSupplement,
sizeof(EnclosedIdeographicSupplement) /
sizeof(*EnclosedIdeographicSupplement) },
4561 { 0x1F300, I18N_NOOP(
"Miscellaneous Symbols and Pictographs"), MiscellaneousSymbolsandPictographs,
sizeof(MiscellaneousSymbolsandPictographs) /
sizeof(*MiscellaneousSymbolsandPictographs) },
4562 { 0x1F600, I18N_NOOP(
"Emoticons"), Emoticons,
sizeof(Emoticons) /
sizeof(*Emoticons) },
4563 { 0x1F650, I18N_NOOP(
"Ornamental Dingbats"), OrnamentalDingbats,
sizeof(OrnamentalDingbats) /
sizeof(*OrnamentalDingbats) },
4564 { 0x1F680, I18N_NOOP(
"Transport and Map Symbols"), TransportandMapSymbols,
sizeof(TransportandMapSymbols) /
sizeof(*TransportandMapSymbols) },
4565 { 0x1F700, I18N_NOOP(
"Alchemical Symbols"), AlchemicalSymbols,
sizeof(AlchemicalSymbols) /
sizeof(*AlchemicalSymbols) },
4566 { 0x1F780, I18N_NOOP(
"Geometric Shapes Extended"), GeometricShapesExtended,
sizeof(GeometricShapesExtended) /
sizeof(*GeometricShapesExtended) },
4567 { 0x1F800, I18N_NOOP(
"Supplemental Arrows-C"), SupplementalArrowsC,
sizeof(SupplementalArrowsC) /
sizeof(*SupplementalArrowsC) },
4568 { 0x1F900, I18N_NOOP(
"Supplemental Symbols and Pictographs"), SupplementalSymbolsandPictographs,
sizeof(SupplementalSymbolsandPictographs) /
sizeof(*SupplementalSymbolsandPictographs) },
4569 { 0x1FA00, I18N_NOOP(
"Chess Symbols"), ChessSymbols,
sizeof(ChessSymbols) /
sizeof(*ChessSymbols) },
4570 { 0x1FA70, I18N_NOOP(
"Symbols and Pictographs Extended-A"), SymbolsandPictographsExtendedA,
sizeof(SymbolsandPictographsExtendedA) /
sizeof(*SymbolsandPictographsExtendedA) },
4571 { 0x1FB00, I18N_NOOP(
"Symbols for Legacy Computing"), SymbolsforLegacyComputing,
sizeof(SymbolsforLegacyComputing) /
sizeof(*SymbolsforLegacyComputing) },
4572 { 0x1FF80, I18N_NOOP(
"Unassigned1"), Unassigned,
sizeof(Unassigned) /
sizeof(*Unassigned) },
4573 { 0x20000, I18N_NOOP(
"CJK Unified Ideographs Extension B"), CJKUnifiedIdeographsExtensionB,
sizeof(CJKUnifiedIdeographsExtensionB) /
sizeof(*CJKUnifiedIdeographsExtensionB) },
4574 { 0x2A700, I18N_NOOP(
"CJK Unified Ideographs Extension C"), CJKUnifiedIdeographsExtensionC,
sizeof(CJKUnifiedIdeographsExtensionC) /
sizeof(*CJKUnifiedIdeographsExtensionC) },
4575 { 0x2B740, I18N_NOOP(
"CJK Unified Ideographs Extension D"), CJKUnifiedIdeographsExtensionD,
sizeof(CJKUnifiedIdeographsExtensionD) /
sizeof(*CJKUnifiedIdeographsExtensionD) },
4576 { 0x2B820, I18N_NOOP(
"CJK Unified Ideographs Extension E"), CJKUnifiedIdeographsExtensionE,
sizeof(CJKUnifiedIdeographsExtensionE) /
sizeof(*CJKUnifiedIdeographsExtensionE) },
4577 { 0x2CEB0, I18N_NOOP(
"CJK Unified Ideographs Extension F"), CJKUnifiedIdeographsExtensionF,
sizeof(CJKUnifiedIdeographsExtensionF) /
sizeof(*CJKUnifiedIdeographsExtensionF) },
4578 { 0x2EBF0, I18N_NOOP(
"CJK Unified Ideographs Extension I"), CJKUnifiedIdeographsExtensionI,
sizeof(CJKUnifiedIdeographsExtensionI) /
sizeof(*CJKUnifiedIdeographsExtensionI) },
4579 { 0x2F800, I18N_NOOP(
"CJK Compatibility Ideographs Supplement"), CJKCompatibilityIdeographsSupplement,
sizeof(CJKCompatibilityIdeographsSupplement) /
sizeof(*CJKCompatibilityIdeographsSupplement) },
4580 { 0x2FF80, I18N_NOOP(
"Unassigned"), Unassigned2,
sizeof(Unassigned2) /
sizeof(*Unassigned2) },
4581 { 0x30000, I18N_NOOP(
"CJK Unified Ideographs Extension G"), CJKUnifiedIdeographsExtensionG,
sizeof(CJKUnifiedIdeographsExtensionG) /
sizeof(*CJKUnifiedIdeographsExtensionG) },
4582 { 0x31350, I18N_NOOP(
"CJK Unified Ideographs Extension H"), CJKUnifiedIdeographsExtensionH,
sizeof(CJKUnifiedIdeographsExtensionH) /
sizeof(*CJKUnifiedIdeographsExtensionH) },
4583 { 0x323B0, I18N_NOOP(
"CJK Unified Ideographs Extension J"), CJKUnifiedIdeographsExtensionJ,
sizeof(CJKUnifiedIdeographsExtensionJ) /
sizeof(*CJKUnifiedIdeographsExtensionJ) },
4584 { 0x3FF80, I18N_NOOP(
"Unassigned"), Unassigned3,
sizeof(Unassigned3) /
sizeof(*Unassigned3) },
4585 { 0x4FF80, I18N_NOOP(
"Unassigned"), Unassigned4,
sizeof(Unassigned4) /
sizeof(*Unassigned4) },
4586 { 0x5FF80, I18N_NOOP(
"Unassigned"), Unassigned5,
sizeof(Unassigned5) /
sizeof(*Unassigned5) },
4587 { 0x6FF80, I18N_NOOP(
"Unassigned"), Unassigned6,
sizeof(Unassigned6) /
sizeof(*Unassigned6) },
4588 { 0x7FF80, I18N_NOOP(
"Unassigned"), Unassigned7,
sizeof(Unassigned7) /
sizeof(*Unassigned7) },
4589 { 0x8FF80, I18N_NOOP(
"Unassigned"), Unassigned8,
sizeof(Unassigned8) /
sizeof(*Unassigned8) },
4590 { 0x9FF80, I18N_NOOP(
"Unassigned"), Unassigned9,
sizeof(Unassigned9) /
sizeof(*Unassigned9) },
4591 { 0xAFF80, I18N_NOOP(
"Unassigned"), Unassigned10,
sizeof(Unassigned10) /
sizeof(*Unassigned10) },
4592 { 0xBFF80, I18N_NOOP(
"Unassigned"), Unassigned11,
sizeof(Unassigned11) /
sizeof(*Unassigned11) },
4593 { 0xCFF80, I18N_NOOP(
"Unassigned"), Unassigned12,
sizeof(Unassigned12) /
sizeof(*Unassigned12) },
4594 { 0xDFF80, I18N_NOOP(
"Unassigned"), Unassigned13,
sizeof(Unassigned13) /
sizeof(*Unassigned13) },
4595 { 0xE0000, I18N_NOOP(
"Tags"), Tags,
sizeof(Tags) /
sizeof(*Tags) },
4596 { 0xE0100, I18N_NOOP(
"Variation Selectors Supplement"), VariationSelectorsSupplement,
sizeof(VariationSelectorsSupplement) /
sizeof(*VariationSelectorsSupplement) },
4597 { 0xEFF80, I18N_NOOP(
"Unassigned"), Unassigned14,
sizeof(Unassigned14) /
sizeof(*Unassigned14) },
4598 { 0xFFF80, I18N_NOOP(
"Supplementary Private Use Area-A"), SupplementaryPrivateUseAreaA,
sizeof(SupplementaryPrivateUseAreaA) /
sizeof(*SupplementaryPrivateUseAreaA) },
4599 { 0x10FF80, I18N_NOOP(
"Supplementary Private Use Area-B"), SupplementaryPrivateUseAreaB,
sizeof(SupplementaryPrivateUseAreaB) /
sizeof(*SupplementaryPrivateUseAreaB) },
4602constexpr size_t categories_size =
sizeof(categories) /
sizeof(*categories);