• Skip to content
  • Skip to link menu
Trinity API Reference
  • Trinity API Reference
  • tdecore
 

tdecore

  • tdecore
tdeunicodedata_categories.cpp
1 // This is a data structure which contains all Unicode blocks/categories as defined by The Unicode Standard
2 // Downloaded and adapted from https://www.unicode.org/Public/UCD/latest/ucd/NamesList.txt
3 // --
4 // THIS FILE WAS AUTOMATICALLY GENERATED.
5 // Update this file using the `update_unicode_data.pl` script.
6 
7 #include "tdeunicodedata.h"
8 #include <tdelocale.h>
9 
10 // Category/subcategory arrays are sorted by codepoint so they can be
11 // searched with std::lower_bound/std::upper_bound. Each array is a
12 // plain array (no sentinel); its size is embedded in the parent
13 // Category struct (subcategories_size) or in categories_size.
14 //
15 // Names are wrapped in I18N_NOOP() to tag them for translation
16 // extraction; the actual translation is performed at the call site
17 // with i18n(name).
18 
19 constexpr 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") },
33 };
34 
35 constexpr 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") },
46 };
47 
48 constexpr TDEUnicodeData::Subcategory LatinExtendedA[] = {
49  { 0x0100, I18N_NOOP("European Latin") },
50  { 0x0149, I18N_NOOP("Deprecated letter") },
51  { 0x014A, I18N_NOOP("European Latin") },
52 };
53 
54 constexpr 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") },
70 };
71 
72 constexpr 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") },
80 };
81 
82 constexpr 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") },
92 };
93 
94 constexpr 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") },
107 };
108 
109 constexpr 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") },
132 };
133 
134 constexpr 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") },
144 };
145 
146 constexpr 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") },
159 };
160 
161 constexpr 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") },
168 };
169 
170 constexpr 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") },
179 };
180 
181 constexpr 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") },
221 };
222 
223 constexpr 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") },
231 };
232 
233 constexpr 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") },
239 };
240 
241 constexpr 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") },
246 };
247 
248 constexpr 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") },
260 };
261 
262 constexpr 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") },
268 };
269 
270 constexpr TDEUnicodeData::Subcategory Mandaic[] = {
271  { 0x0840, I18N_NOOP("Letters") },
272  { 0x0859, I18N_NOOP("Diacritics") },
273  { 0x085E, I18N_NOOP("Punctuation") },
274 };
275 
276 constexpr TDEUnicodeData::Subcategory SyriacSupplement[] = {
277  { 0x0860, I18N_NOOP("Syriac letters") },
278 };
279 
280 constexpr 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") },
289 };
290 
291 constexpr 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") },
312 };
313 
314 constexpr 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") },
340 };
341 
342 constexpr 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") },
362 };
363 
364 constexpr 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") },
378 };
379 
380 constexpr 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") },
395 };
396 
397 constexpr 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") },
414 };
415 
416 constexpr 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") },
431 };
432 
433 constexpr 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") },
451 };
452 
453 constexpr 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") },
468 };
469 
470 constexpr 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") },
493 };
494 
495 constexpr 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") },
506 };
507 
508 constexpr 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") },
521 };
522 
523 constexpr 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") },
537 };
538 
539 constexpr 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") },
567 };
568 
569 constexpr 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") },
593 };
594 
595 constexpr 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") },
606 };
607 
608 constexpr 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") },
615 };
616 
617 constexpr 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") },
623 };
624 
625 constexpr TDEUnicodeData::Subcategory EthiopicSupplement[] = {
626  { 0x1380, I18N_NOOP("Syllables for Gurage") },
627  { 0x1390, I18N_NOOP("Tonal marks") },
628 };
629 
630 constexpr 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") },
635 };
636 
637 constexpr 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") },
644 };
645 
646 constexpr 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") },
651 };
652 
653 constexpr 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") },
659 };
660 
661 constexpr 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") },
667 };
668 
669 constexpr 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") },
675 };
676 
677 constexpr TDEUnicodeData::Subcategory Buhid[] = {
678  { 0x1740, I18N_NOOP("Independent vowels") },
679  { 0x1743, I18N_NOOP("Consonants") },
680  { 0x1752, I18N_NOOP("Dependent vowel signs") },
681 };
682 
683 constexpr TDEUnicodeData::Subcategory Tagbanwa[] = {
684  { 0x1760, I18N_NOOP("Independent vowels") },
685  { 0x1763, I18N_NOOP("Consonants") },
686  { 0x1772, I18N_NOOP("Dependent vowel signs") },
687 };
688 
689 constexpr 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") },
707 };
708 
709 constexpr 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") },
719 };
720 
721 constexpr 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") },
727 };
728 
729 constexpr 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") },
736 };
737 
738 constexpr TDEUnicodeData::Subcategory TaiLe[] = {
739  { 0x1950, I18N_NOOP("Consonants") },
740  { 0x1963, I18N_NOOP("Vowels") },
741  { 0x1970, I18N_NOOP("Tone letters") },
742 };
743 
744 constexpr 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") },
751 };
752 
753 constexpr TDEUnicodeData::Subcategory KhmerSymbols[] = {
754  { 0x19E0, I18N_NOOP("Lunar date symbols") },
755 };
756 
757 constexpr TDEUnicodeData::Subcategory Buginese[] = {
758  { 0x1A00, I18N_NOOP("Consonants") },
759  { 0x1A17, I18N_NOOP("Vowels") },
760  { 0x1A1E, I18N_NOOP("Various signs") },
761 };
762 
763 constexpr 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") },
779 };
780 
781 constexpr 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") },
794 };
795 
796 constexpr 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") },
811 };
812 
813 constexpr 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") },
825 };
826 
827 constexpr 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") },
834 };
835 
836 constexpr 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") },
845 };
846 
847 constexpr TDEUnicodeData::Subcategory OlChiki[] = {
848  { 0x1C50, I18N_NOOP("Digits") },
849  { 0x1C5A, I18N_NOOP("Letters") },
850  { 0x1C78, I18N_NOOP("Modifier letters") },
851  { 0x1C7E, I18N_NOOP("Punctuation") },
852 };
853 
854 constexpr TDEUnicodeData::Subcategory CyrillicExtendedC[] = {
855  { 0x1C80, I18N_NOOP("Historic letter variants") },
856  { 0x1C89, I18N_NOOP("Khanty letters") },
857 };
858 
859 constexpr 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") },
865 };
866 
867 constexpr TDEUnicodeData::Subcategory SundaneseSupplement[] = {
868  { 0x1CC0, I18N_NOOP("Punctuation") },
869 };
870 
871 constexpr 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") },
885 };
886 
887 constexpr 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") },
899 };
900 
901 constexpr 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") },
905 };
906 
907 constexpr 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") },
923 };
924 
925 constexpr 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") },
933 };
934 
935 constexpr TDEUnicodeData::Subcategory GreekExtended[] = {
936  { 0x1F00, I18N_NOOP("Precomposed polytonic Greek") },
937 };
938 
939 constexpr 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") },
965 };
966 
967 constexpr TDEUnicodeData::Subcategory SuperscriptsandSubscripts[] = {
968  { 0x2070, I18N_NOOP("Superscripts") },
969  { 0x2080, I18N_NOOP("Subscripts") },
970  { 0x2095, I18N_NOOP("Subscripts for UPA") },
971 };
972 
973 constexpr TDEUnicodeData::Subcategory CurrencySymbols[] = {
974  { 0x20A0, I18N_NOOP("Currency symbols") },
975 };
976 
977 constexpr 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") },
983 };
984 
985 constexpr 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") },
995 };
996 
997 constexpr 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") },
1005 };
1006 
1007 constexpr 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") },
1018 };
1019 
1020 constexpr 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") },
1058 };
1059 
1060 constexpr 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") },
1103 };
1104 
1105 constexpr 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") },
1112 };
1113 
1114 constexpr TDEUnicodeData::Subcategory OpticalCharacterRecognition[] = {
1115  { 0x2440, I18N_NOOP("OCR-A") },
1116  { 0x2446, I18N_NOOP("MICR") },
1117  { 0x244A, I18N_NOOP("OCR") },
1118 };
1119 
1120 constexpr 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") },
1130 };
1131 
1132 constexpr 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") },
1143 };
1144 
1145 constexpr 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") },
1150 };
1151 
1152 constexpr TDEUnicodeData::Subcategory GeometricShapes[] = {
1153  { 0x25A0, I18N_NOOP("Geometric shapes") },
1154  { 0x25F0, I18N_NOOP("Control code graphics") },
1155  { 0x25F8, I18N_NOOP("Geometric shapes") },
1156 };
1157 
1158 constexpr 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") },
1207 };
1208 
1209 constexpr 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") },
1226 };
1227 
1228 constexpr 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") },
1244 };
1245 
1246 constexpr TDEUnicodeData::Subcategory SupplementalArrowsA[] = {
1247  { 0x27F0, I18N_NOOP("Arrows") },
1248  { 0x27F5, I18N_NOOP("Long arrows") },
1249 };
1250 
1251 constexpr TDEUnicodeData::Subcategory BraillePatterns[] = {
1252  { 0x2800, I18N_NOOP("Braille patterns") },
1253 };
1254 
1255 constexpr 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") },
1268 };
1269 
1270 constexpr 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") },
1292 };
1293 
1294 constexpr 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") },
1312 };
1313 
1314 constexpr 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") },
1364 };
1365 
1366 constexpr TDEUnicodeData::Subcategory Glagolitic[] = {
1367  { 0x2C00, I18N_NOOP("Capital letters") },
1368  { 0x2C30, I18N_NOOP("Small letters") },
1369 };
1370 
1371 constexpr 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") },
1378 };
1379 
1380 constexpr 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") },
1391 };
1392 
1393 constexpr TDEUnicodeData::Subcategory GeorgianSupplement[] = {
1394  { 0x2D00, I18N_NOOP("Small letters (Khutsuri)") },
1395  { 0x2D27, I18N_NOOP("Additional letter") },
1396  { 0x2D2D, I18N_NOOP("Additional letter for Ossetian") },
1397 };
1398 
1399 constexpr TDEUnicodeData::Subcategory Tifinagh[] = {
1400  { 0x2D30, I18N_NOOP("Letters") },
1401  { 0x2D6F, I18N_NOOP("Modifier letter") },
1402  { 0x2D70, I18N_NOOP("Punctuation") },
1403  { 0x2D7F, I18N_NOOP("Sign") },
1404 };
1405 
1406 constexpr 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") },
1411 };
1412 
1413 constexpr TDEUnicodeData::Subcategory CyrillicExtendedA[] = {
1414  { 0x2DE0, I18N_NOOP("Old Church Slavonic combining letters") },
1415 };
1416 
1417 constexpr 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") },
1443 };
1444 
1445 constexpr TDEUnicodeData::Subcategory CJKRadicalsSupplement[] = {
1446  { 0x2E80, I18N_NOOP("CJK radicals supplement") },
1447 };
1448 
1449 constexpr TDEUnicodeData::Subcategory KangxiRadicals[] = {
1450  { 0x2F00, I18N_NOOP("Kangxi radicals") },
1451 };
1452 
1453 constexpr TDEUnicodeData::Subcategory IdeographicDescriptionCharacters[] = {
1454  { 0x2FF0, I18N_NOOP("Ideographic description characters") },
1455 };
1456 
1457 constexpr 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") },
1474 };
1475 
1476 constexpr 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") },
1482 };
1483 
1484 constexpr 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") },
1490 };
1491 
1492 constexpr 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") },
1496 };
1497 
1498 constexpr 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") },
1504 };
1505 
1506 constexpr TDEUnicodeData::Subcategory Kanbun[] = {
1507  { 0x3190, I18N_NOOP("Tateten") },
1508  { 0x3191, I18N_NOOP("Kaeriten") },
1509 };
1510 
1511 constexpr 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") },
1516 };
1517 
1518 constexpr TDEUnicodeData::Subcategory CJKStrokes[] = {
1519  { 0x31C0, I18N_NOOP("CJK strokes") },
1520  { 0x31EF, I18N_NOOP("Ideographic description character") },
1521 };
1522 
1523 constexpr TDEUnicodeData::Subcategory KatakanaPhoneticExtensions[] = {
1524  { 0x31F0, I18N_NOOP("Phonetic extensions for Ainu") },
1525 };
1526 
1527 constexpr 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") },
1547 };
1548 
1549 constexpr 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") },
1560 };
1561 
1562 constexpr TDEUnicodeData::Subcategory CJKUnifiedIdeographsExtensionA[] = {
1563 };
1564 
1565 constexpr TDEUnicodeData::Subcategory YijingHexagramSymbols[] = {
1566  { 0x4DC0, I18N_NOOP("Yijing hexagram symbols") },
1567 };
1568 
1569 constexpr TDEUnicodeData::Subcategory CJKUnifiedIdeographs[] = {
1570 };
1571 
1572 constexpr TDEUnicodeData::Subcategory YiSyllables[] = {
1573  { 0xA000, I18N_NOOP("Syllables") },
1574  { 0xA015, I18N_NOOP("Syllable iteration mark") },
1575  { 0xA016, I18N_NOOP("Syllables") },
1576 };
1577 
1578 constexpr TDEUnicodeData::Subcategory YiRadicals[] = {
1579  { 0xA490, I18N_NOOP("Yi radicals") },
1580 };
1581 
1582 constexpr TDEUnicodeData::Subcategory Lisu[] = {
1583  { 0xA4D0, I18N_NOOP("Consonants") },
1584  { 0xA4EE, I18N_NOOP("Vowels") },
1585  { 0xA4F8, I18N_NOOP("Tones") },
1586  { 0xA4FE, I18N_NOOP("Punctuation") },
1587 };
1588 
1589 constexpr 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") },
1603 };
1604 
1605 constexpr 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") },
1617 };
1618 
1619 constexpr TDEUnicodeData::Subcategory Bamum[] = {
1620  { 0xA6A0, I18N_NOOP("Syllables") },
1621  { 0xA6F0, I18N_NOOP("Combining marks") },
1622  { 0xA6F2, I18N_NOOP("Punctuation") },
1623 };
1624 
1625 constexpr 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") },
1631 };
1632 
1633 constexpr 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") },
1674 };
1675 
1676 constexpr 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") },
1683 };
1684 
1685 constexpr 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") },
1690 };
1691 
1692 constexpr 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") },
1706 };
1707 
1708 constexpr 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") },
1717 };
1718 
1719 constexpr 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") },
1725 };
1726 
1727 constexpr 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") },
1733 };
1734 
1735 constexpr 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") },
1741 };
1742 
1743 constexpr TDEUnicodeData::Subcategory HangulJamoExtendedA[] = {
1744  { 0xA960, I18N_NOOP("Old initial consonants") },
1745 };
1746 
1747 constexpr 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") },
1758 };
1759 
1760 constexpr 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") },
1766 };
1767 
1768 constexpr 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") },
1776 };
1777 
1778 constexpr 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") },
1785 };
1786 
1787 constexpr 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") },
1794 };
1795 
1796 constexpr 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") },
1805 };
1806 
1807 constexpr TDEUnicodeData::Subcategory EthiopicExtendedA[] = {
1808  { 0xAB01, I18N_NOOP("Gamo-Gofa-Dawro and Basketo") },
1809  { 0xAB11, I18N_NOOP("Gamo-Gofa-Dawro") },
1810  { 0xAB20, I18N_NOOP("Gumuz") },
1811 };
1812 
1813 constexpr 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") },
1820 };
1821 
1822 constexpr TDEUnicodeData::Subcategory CherokeeSupplement[] = {
1823  { 0xAB70, I18N_NOOP("Lowercase syllables") },
1824 };
1825 
1826 constexpr 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") },
1832 };
1833 
1834 constexpr TDEUnicodeData::Subcategory HangulSyllables[] = {
1835 };
1836 
1837 constexpr TDEUnicodeData::Subcategory HangulJamoExtendedB[] = {
1838  { 0xD7B0, I18N_NOOP("Old medial vowels") },
1839  { 0xD7CB, I18N_NOOP("Old final consonants") },
1840 };
1841 
1842 constexpr TDEUnicodeData::Subcategory HighSurrogates[] = {
1843 };
1844 
1845 constexpr TDEUnicodeData::Subcategory HighPrivateUseSurrogates[] = {
1846 };
1847 
1848 constexpr TDEUnicodeData::Subcategory LowSurrogates[] = {
1849 };
1850 
1851 constexpr TDEUnicodeData::Subcategory PrivateUseArea[] = {
1852 };
1853 
1854 constexpr 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") },
1862 };
1863 
1864 constexpr TDEUnicodeData::Subcategory AlphabeticPresentationForms[] = {
1865  { 0xFB00, I18N_NOOP("Latin ligatures") },
1866  { 0xFB13, I18N_NOOP("Armenian ligatures") },
1867  { 0xFB1D, I18N_NOOP("Hebrew presentation forms") },
1868 };
1869 
1870 constexpr 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") },
1886 };
1887 
1888 constexpr TDEUnicodeData::Subcategory VariationSelectors[] = {
1889  { 0xFE00, I18N_NOOP("Variation selectors") },
1890  { 0xFE0E, I18N_NOOP("Emoji-specific variation selectors") },
1891 };
1892 
1893 constexpr TDEUnicodeData::Subcategory VerticalForms[] = {
1894  { 0xFE10, I18N_NOOP("Glyphs for vertical variants") },
1895 };
1896 
1897 constexpr 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") },
1902 };
1903 
1904 constexpr 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") },
1909 };
1910 
1911 constexpr TDEUnicodeData::Subcategory SmallFormVariants[] = {
1912  { 0xFE50, I18N_NOOP("Small form variants") },
1913 };
1914 
1915 constexpr 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") },
1921 };
1922 
1923 constexpr 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") },
1931 };
1932 
1933 constexpr TDEUnicodeData::Subcategory Specials[] = {
1934  { 0xFFF9, I18N_NOOP("Interlinear annotation") },
1935  { 0xFFFC, I18N_NOOP("Replacement characters") },
1936  { 0xFFFE, I18N_NOOP("Noncharacters") },
1937 };
1938 
1939 constexpr TDEUnicodeData::Subcategory LinearBSyllabary[] = {
1940  { 0x10000, I18N_NOOP("Basic syllables") },
1941  { 0x10040, I18N_NOOP("Supplementary signs") },
1942  { 0x10050, I18N_NOOP("Symbols") },
1943 };
1944 
1945 constexpr 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") },
1952 };
1953 
1954 constexpr TDEUnicodeData::Subcategory AegeanNumbers[] = {
1955  { 0x10100, I18N_NOOP("Punctuation") },
1956  { 0x10107, I18N_NOOP("Numbers") },
1957  { 0x10137, I18N_NOOP("Measures") },
1958 };
1959 
1960 constexpr 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") },
1964 };
1965 
1966 constexpr 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") },
1971 };
1972 
1973 constexpr TDEUnicodeData::Subcategory PhaistosDisc[] = {
1974  { 0x101D0, I18N_NOOP("Signs") },
1975  { 0x101FD, I18N_NOOP("Combining stroke") },
1976 };
1977 
1978 constexpr TDEUnicodeData::Subcategory Lycian[] = {
1979  { 0x10280, I18N_NOOP("Letters") },
1980 };
1981 
1982 constexpr TDEUnicodeData::Subcategory Carian[] = {
1983  { 0x102A0, I18N_NOOP("Letters") },
1984 };
1985 
1986 constexpr TDEUnicodeData::Subcategory CopticEpactNumbers[] = {
1987  { 0x102E0, I18N_NOOP("Sign") },
1988  { 0x102E1, I18N_NOOP("Digits") },
1989  { 0x102EA, I18N_NOOP("Numbers") },
1990 };
1991 
1992 constexpr 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") },
1999 };
2000 
2001 constexpr TDEUnicodeData::Subcategory Gothic[] = {
2002  { 0x10330, I18N_NOOP("Letters") },
2003 };
2004 
2005 constexpr TDEUnicodeData::Subcategory OldPermic[] = {
2006  { 0x10350, I18N_NOOP("Letters") },
2007  { 0x10376, I18N_NOOP("Combining letters") },
2008 };
2009 
2010 constexpr TDEUnicodeData::Subcategory Ugaritic[] = {
2011  { 0x10380, I18N_NOOP("Letters") },
2012  { 0x1039F, I18N_NOOP("Punctuation") },
2013 };
2014 
2015 constexpr 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") },
2021 };
2022 
2023 constexpr TDEUnicodeData::Subcategory Deseret[] = {
2024  { 0x10400, I18N_NOOP("Uppercase letters") },
2025  { 0x10428, I18N_NOOP("Lowercase letters") },
2026 };
2027 
2028 constexpr TDEUnicodeData::Subcategory Shavian[] = {
2029  { 0x10450, I18N_NOOP("Tall and deep letters (consonants)") },
2030  { 0x10464, I18N_NOOP("Short letters") },
2031  { 0x10478, I18N_NOOP("Ligatures") },
2032 };
2033 
2034 constexpr TDEUnicodeData::Subcategory Osmanya[] = {
2035  { 0x10480, I18N_NOOP("Letters") },
2036  { 0x104A0, I18N_NOOP("Digits") },
2037 };
2038 
2039 constexpr TDEUnicodeData::Subcategory Osage[] = {
2040  { 0x104B0, I18N_NOOP("Uppercase letters") },
2041  { 0x104D8, I18N_NOOP("Lowercase letters") },
2042 };
2043 
2044 constexpr TDEUnicodeData::Subcategory Elbasan[] = {
2045  { 0x10500, I18N_NOOP("Letters") },
2046 };
2047 
2048 constexpr TDEUnicodeData::Subcategory CaucasianAlbanian[] = {
2049  { 0x10530, I18N_NOOP("Letters") },
2050  { 0x1056F, I18N_NOOP("Punctuation") },
2051 };
2052 
2053 constexpr TDEUnicodeData::Subcategory Vithkuqi[] = {
2054  { 0x10570, I18N_NOOP("Capital letters") },
2055  { 0x10597, I18N_NOOP("Small letters") },
2056 };
2057 
2058 constexpr TDEUnicodeData::Subcategory Todhri[] = {
2059 };
2060 
2061 constexpr 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") },
2068 };
2069 
2070 constexpr TDEUnicodeData::Subcategory LatinExtendedF[] = {
2071  { 0x10780, I18N_NOOP("Modifier letter for VoQS") },
2072  { 0x10781, I18N_NOOP("Modifier letters for IPA") },
2073 };
2074 
2075 constexpr TDEUnicodeData::Subcategory CypriotSyllabary[] = {
2076  { 0x10800, I18N_NOOP("Syllables") },
2077 };
2078 
2079 constexpr TDEUnicodeData::Subcategory ImperialAramaic[] = {
2080  { 0x10840, I18N_NOOP("Letters") },
2081  { 0x10857, I18N_NOOP("Punctuation") },
2082  { 0x10858, I18N_NOOP("Numbers") },
2083 };
2084 
2085 constexpr TDEUnicodeData::Subcategory Palmyrene[] = {
2086  { 0x10860, I18N_NOOP("Letters") },
2087  { 0x10877, I18N_NOOP("Symbols") },
2088  { 0x10879, I18N_NOOP("Numbers") },
2089 };
2090 
2091 constexpr TDEUnicodeData::Subcategory Nabataean[] = {
2092  { 0x10880, I18N_NOOP("Letters") },
2093  { 0x108A7, I18N_NOOP("Numbers") },
2094 };
2095 
2096 constexpr TDEUnicodeData::Subcategory Hatran[] = {
2097  { 0x108E0, I18N_NOOP("Letters") },
2098  { 0x108FB, I18N_NOOP("Numbers") },
2099 };
2100 
2101 constexpr TDEUnicodeData::Subcategory Phoenician[] = {
2102  { 0x10900, I18N_NOOP("Letters") },
2103  { 0x10916, I18N_NOOP("Numbers") },
2104  { 0x1091F, I18N_NOOP("Punctuation") },
2105 };
2106 
2107 constexpr TDEUnicodeData::Subcategory Lydian[] = {
2108  { 0x10920, I18N_NOOP("Letters") },
2109  { 0x1093F, I18N_NOOP("Punctuation") },
2110 };
2111 
2112 constexpr TDEUnicodeData::Subcategory Sidetic[] = {
2113  { 0x10940, I18N_NOOP("Vowel and semivowel letters") },
2114  { 0x10947, I18N_NOOP("Consonant letters") },
2115 };
2116 
2117 constexpr TDEUnicodeData::Subcategory MeroiticHieroglyphs[] = {
2118  { 0x10980, I18N_NOOP("Vowel letters") },
2119  { 0x10984, I18N_NOOP("Consonant letters") },
2120  { 0x1099E, I18N_NOOP("Symbols") },
2121 };
2122 
2123 constexpr 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") },
2135 };
2136 
2137 constexpr 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") },
2147 };
2148 
2149 constexpr TDEUnicodeData::Subcategory OldSouthArabian[] = {
2150  { 0x10A60, I18N_NOOP("Letters") },
2151  { 0x10A7D, I18N_NOOP("Numbers") },
2152 };
2153 
2154 constexpr TDEUnicodeData::Subcategory OldNorthArabian[] = {
2155  { 0x10A80, I18N_NOOP("Letters") },
2156  { 0x10A9D, I18N_NOOP("Numbers") },
2157 };
2158 
2159 constexpr 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") },
2166 };
2167 
2168 constexpr TDEUnicodeData::Subcategory Avestan[] = {
2169  { 0x10B00, I18N_NOOP("Vowels") },
2170  { 0x10B10, I18N_NOOP("Consonants") },
2171  { 0x10B39, I18N_NOOP("Punctuation") },
2172 };
2173 
2174 constexpr TDEUnicodeData::Subcategory InscriptionalParthian[] = {
2175  { 0x10B40, I18N_NOOP("Letters") },
2176  { 0x10B58, I18N_NOOP("Numbers") },
2177 };
2178 
2179 constexpr TDEUnicodeData::Subcategory InscriptionalPahlavi[] = {
2180  { 0x10B60, I18N_NOOP("Letters") },
2181  { 0x10B78, I18N_NOOP("Numbers") },
2182 };
2183 
2184 constexpr TDEUnicodeData::Subcategory PsalterPahlavi[] = {
2185  { 0x10B80, I18N_NOOP("Letters") },
2186  { 0x10B99, I18N_NOOP("Punctuation") },
2187  { 0x10BA9, I18N_NOOP("Numbers") },
2188 };
2189 
2190 constexpr TDEUnicodeData::Subcategory OldTurkic[] = {
2191  { 0x10C00, I18N_NOOP("Vowels") },
2192  { 0x10C09, I18N_NOOP("Consonants") },
2193 };
2194 
2195 constexpr TDEUnicodeData::Subcategory OldHungarian[] = {
2196  { 0x10C80, I18N_NOOP("Uppercase letters") },
2197  { 0x10CC0, I18N_NOOP("Lowercase letters") },
2198  { 0x10CFA, I18N_NOOP("Numbers") },
2199 };
2200 
2201 constexpr 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") },
2210 };
2211 
2212 constexpr 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") },
2222 };
2223 
2224 constexpr TDEUnicodeData::Subcategory RumiNumeralSymbols[] = {
2225  { 0x10E60, I18N_NOOP("Digits") },
2226  { 0x10E69, I18N_NOOP("Numbers") },
2227  { 0x10E7B, I18N_NOOP("Fractions") },
2228 };
2229 
2230 constexpr 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") },
2235 };
2236 
2237 constexpr 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") },
2248 };
2249 
2250 constexpr TDEUnicodeData::Subcategory OldSogdian[] = {
2251  { 0x10F00, I18N_NOOP("Letters") },
2252  { 0x10F1D, I18N_NOOP("Numbers") },
2253  { 0x10F27, I18N_NOOP("Ligature") },
2254 };
2255 
2256 constexpr 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") },
2262 };
2263 
2264 constexpr TDEUnicodeData::Subcategory OldUyghur[] = {
2265  { 0x10F70, I18N_NOOP("Letters") },
2266  { 0x10F82, I18N_NOOP("Combining signs") },
2267  { 0x10F86, I18N_NOOP("Punctuation") },
2268 };
2269 
2270 constexpr TDEUnicodeData::Subcategory Chorasmian[] = {
2271  { 0x10FB0, I18N_NOOP("Letters") },
2272  { 0x10FC5, I18N_NOOP("Numbers") },
2273 };
2274 
2275 constexpr TDEUnicodeData::Subcategory Elymaic[] = {
2276  { 0x10FE0, I18N_NOOP("Letters") },
2277  { 0x10FF6, I18N_NOOP("Ligature") },
2278 };
2279 
2280 constexpr 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") },
2294 };
2295 
2296 constexpr 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") },
2306 };
2307 
2308 constexpr TDEUnicodeData::Subcategory SoraSompeng[] = {
2309  { 0x110D0, I18N_NOOP("Consonants") },
2310  { 0x110E2, I18N_NOOP("Vowels") },
2311  { 0x110E8, I18N_NOOP("Other letter") },
2312  { 0x110F0, I18N_NOOP("Digits") },
2313 };
2314 
2315 constexpr 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") },
2326 };
2327 
2328 constexpr 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") },
2334 };
2335 
2336 constexpr 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") },
2352 };
2353 
2354 constexpr TDEUnicodeData::Subcategory SinhalaArchaicNumbers[] = {
2355  { 0x111E1, I18N_NOOP("Historical digits") },
2356  { 0x111EA, I18N_NOOP("Historical numbers") },
2357 };
2358 
2359 constexpr 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") },
2369 };
2370 
2371 constexpr TDEUnicodeData::Subcategory Multani[] = {
2372  { 0x11280, I18N_NOOP("Vowels") },
2373  { 0x11284, I18N_NOOP("Consonants") },
2374  { 0x112A9, I18N_NOOP("Punctuation") },
2375 };
2376 
2377 constexpr 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") },
2384 };
2385 
2386 constexpr 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") },
2401 };
2402 
2403 constexpr 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") },
2412 };
2413 
2414 constexpr 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") },
2424 };
2425 
2426 constexpr 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") },
2433 };
2434 
2435 constexpr 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") },
2447 };
2448 
2449 constexpr 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") },
2457 };
2458 
2459 constexpr TDEUnicodeData::Subcategory MongolianSupplement[] = {
2460  { 0x11660, I18N_NOOP("Punctuation") },
2461 };
2462 
2463 constexpr 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") },
2473 };
2474 
2475 constexpr TDEUnicodeData::Subcategory MyanmarExtendedC[] = {
2476  { 0x116D0, I18N_NOOP("Pao digits") },
2477  { 0x116DA, I18N_NOOP("Eastern Pwo Karen digits") },
2478 };
2479 
2480 constexpr 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") },
2488 };
2489 
2490 constexpr 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") },
2496 };
2497 
2498 constexpr 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") },
2506 };
2507 
2508 constexpr 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") },
2518 };
2519 
2520 constexpr 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") },
2527 };
2528 
2529 constexpr 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") },
2544 };
2545 
2546 constexpr 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") },
2561 };
2562 
2563 constexpr TDEUnicodeData::Subcategory UnifiedCanadianAboriginalSyllabicsExtendedA[] = {
2564  { 0x11AB0, I18N_NOOP("Syllables for Nattilik") },
2565  { 0x11ABC, I18N_NOOP("Historic syllables for Cree and Ojibway") },
2566 };
2567 
2568 constexpr 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") },
2573 };
2574 
2575 constexpr TDEUnicodeData::Subcategory DevanagariExtendedA[] = {
2576  { 0x11B00, I18N_NOOP("Head marks") },
2577  { 0x11B02, I18N_NOOP("Auspicious signs") },
2578 };
2579 
2580 constexpr TDEUnicodeData::Subcategory SharadaSupplement[] = {
2581  { 0x11B60, I18N_NOOP("Kashmiri vowel signs") },
2582 };
2583 
2584 constexpr TDEUnicodeData::Subcategory Sunuwar[] = {
2585  { 0x11BC0, I18N_NOOP("Letters") },
2586  { 0x11BE1, I18N_NOOP("Punctuation") },
2587  { 0x11BF0, I18N_NOOP("Digits") },
2588 };
2589 
2590 constexpr 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") },
2599 };
2600 
2601 constexpr 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") },
2607 };
2608 
2609 constexpr 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") },
2618 };
2619 
2620 constexpr 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") },
2628 };
2629 
2630 constexpr 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") },
2636 };
2637 
2638 constexpr 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") },
2643 };
2644 
2645 constexpr 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") },
2654 };
2655 
2656 constexpr TDEUnicodeData::Subcategory LisuSupplement[] = {
2657  { 0x11FB0, I18N_NOOP("Letter") },
2658 };
2659 
2660 constexpr 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") },
2669 };
2670 
2671 constexpr TDEUnicodeData::Subcategory Cuneiform[] = {
2672  { 0x12000, I18N_NOOP("Signs") },
2673  { 0x1236F, I18N_NOOP("Elamite sign") },
2674  { 0x12370, I18N_NOOP("Signs") },
2675 };
2676 
2677 constexpr 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") },
2690 };
2691 
2692 constexpr TDEUnicodeData::Subcategory EarlyDynasticCuneiform[] = {
2693  { 0x12480, I18N_NOOP("Signs") },
2694 };
2695 
2696 constexpr TDEUnicodeData::Subcategory CyproMinoan[] = {
2697  { 0x12F90, I18N_NOOP("Signs") },
2698  { 0x12FF1, I18N_NOOP("Punctuation") },
2699 };
2700 
2701 constexpr 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") },
2731 };
2732 
2733 constexpr 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") },
2743 };
2744 
2745 constexpr 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") },
3199 };
3200 
3201 constexpr 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") },
3213 };
3214 
3215 constexpr 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") },
3223 };
3224 
3225 constexpr 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") },
3232 };
3233 
3234 constexpr TDEUnicodeData::Subcategory Mro[] = {
3235  { 0x16A40, I18N_NOOP("Letters") },
3236  { 0x16A60, I18N_NOOP("Digits") },
3237  { 0x16A6E, I18N_NOOP("Punctuation") },
3238 };
3239 
3240 constexpr TDEUnicodeData::Subcategory Tangsa[] = {
3241  { 0x16A70, I18N_NOOP("Vowels") },
3242  { 0x16AA0, I18N_NOOP("Consonants") },
3243  { 0x16AC0, I18N_NOOP("Digits") },
3244 };
3245 
3246 constexpr 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") },
3251 };
3252 
3253 constexpr 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") },
3265 };
3266 
3267 constexpr 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") },
3275 };
3276 
3277 constexpr 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") },
3285 };
3286 
3287 constexpr TDEUnicodeData::Subcategory BeriaErfe[] = {
3288  { 0x16EA0, I18N_NOOP("Uppercase letters") },
3289  { 0x16EBB, I18N_NOOP("Lowercase letters") },
3290 };
3291 
3292 constexpr 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") },
3299 };
3300 
3301 constexpr 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") },
3309 };
3310 
3311 constexpr TDEUnicodeData::Subcategory Tangut[] = {
3312 };
3313 
3314 constexpr 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") },
3332 };
3333 
3334 constexpr 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") },
3357 };
3358 
3359 constexpr TDEUnicodeData::Subcategory TangutSupplement[] = {
3360 };
3361 
3362 constexpr 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") },
3378 };
3379 
3380 constexpr TDEUnicodeData::Subcategory KanaExtendedB[] = {
3381  { 0x1AFF0, I18N_NOOP("Tone marks") },
3382  { 0x1AFF7, I18N_NOOP("Nasalized tone marks") },
3383 };
3384 
3385 constexpr TDEUnicodeData::Subcategory KanaSupplement[] = {
3386  { 0x1B000, I18N_NOOP("Historic Katakana") },
3387  { 0x1B001, I18N_NOOP("Historic Hiragana and Hentaigana") },
3388  { 0x1B002, I18N_NOOP("Hentaigana") },
3389 };
3390 
3391 constexpr TDEUnicodeData::Subcategory KanaExtendedA[] = {
3392  { 0x1B100, I18N_NOOP("Hentaigana") },
3393  { 0x1B11F, I18N_NOOP("Historic Hiragana") },
3394  { 0x1B120, I18N_NOOP("Historic Katakana") },
3395 };
3396 
3397 constexpr TDEUnicodeData::Subcategory SmallKanaExtension[] = {
3398  { 0x1B132, I18N_NOOP("Historic small hiragana letters") },
3399  { 0x1B155, I18N_NOOP("Historic small katakana letters") },
3400 };
3401 
3402 constexpr 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") },
3419 };
3420 
3421 constexpr 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") },
3443 };
3444 
3445 constexpr TDEUnicodeData::Subcategory ShorthandFormatControls[] = {
3446  { 0x1BCA0, I18N_NOOP("Shorthand format controls") },
3447 };
3448 
3449 constexpr 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") },
3481 };
3482 
3483 constexpr 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") },
3487 };
3488 
3489 constexpr 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") },
3494 };
3495 
3496 constexpr 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") },
3512 };
3513 
3514 constexpr 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") },
3554 };
3555 
3556 constexpr 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") },
3560 };
3561 
3562 constexpr TDEUnicodeData::Subcategory KaktovikNumerals[] = {
3563  { 0x1D2C0, I18N_NOOP("Numerals") },
3564 };
3565 
3566 constexpr TDEUnicodeData::Subcategory MayanNumerals[] = {
3567  { 0x1D2E0, I18N_NOOP("Mayan numerals") },
3568 };
3569 
3570 constexpr TDEUnicodeData::Subcategory TaiXuanJingSymbols[] = {
3571  { 0x1D300, I18N_NOOP("Monogram") },
3572  { 0x1D301, I18N_NOOP("Digrams") },
3573  { 0x1D306, I18N_NOOP("Tetragrams") },
3574 };
3575 
3576 constexpr TDEUnicodeData::Subcategory CountingRodNumerals[] = {
3577  { 0x1D360, I18N_NOOP("Counting rod units") },
3578  { 0x1D372, I18N_NOOP("Ideographic tally marks") },
3579  { 0x1D377, I18N_NOOP("Western tally marks") },
3580 };
3581 
3582 constexpr 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") },
3613 };
3614 
3615 constexpr 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") },
3636 };
3637 
3638 constexpr 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") },
3647 };
3648 
3649 constexpr TDEUnicodeData::Subcategory GlagoliticSupplement[] = {
3650  { 0x1E000, I18N_NOOP("Combining letters") },
3651 };
3652 
3653 constexpr 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") },
3658 };
3659 
3660 constexpr 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") },
3669 };
3670 
3671 constexpr TDEUnicodeData::Subcategory Toto[] = {
3672  { 0x1E290, I18N_NOOP("Basic consonants") },
3673  { 0x1E2A1, I18N_NOOP("Basic vowels") },
3674  { 0x1E2AE, I18N_NOOP("Sign") },
3675 };
3676 
3677 constexpr 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") },
3682 };
3683 
3684 constexpr TDEUnicodeData::Subcategory NagMundari[] = {
3685  { 0x1E4D0, I18N_NOOP("Letters") },
3686  { 0x1E4EB, I18N_NOOP("Various signs") },
3687  { 0x1E4F0, I18N_NOOP("Digits") },
3688 };
3689 
3690 constexpr 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") },
3695 };
3696 
3697 constexpr 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") },
3702 };
3703 
3704 constexpr TDEUnicodeData::Subcategory EthiopicExtendedB[] = {
3705  { 0x1E7E0, I18N_NOOP("Syllables for Gurage") },
3706 };
3707 
3708 constexpr 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") },
3738 };
3739 
3740 constexpr 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") },
3749 };
3750 
3751 constexpr 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") },
3764 };
3765 
3766 constexpr 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") },
3775 };
3776 
3777 constexpr 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") },
3785 };
3786 
3787 constexpr 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") },
3796 };
3797 
3798 constexpr 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") },
3815 };
3816 
3817 constexpr 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") },
3827 };
3828 
3829 constexpr 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") },
3847 };
3848 
3849 constexpr 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") },
3857 };
3858 
3859 constexpr 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") },
3934 };
3935 
3936 constexpr 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") },
3941 };
3942 
3943 constexpr 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") },
3950 };
3951 
3952 constexpr 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") },
3961 };
3962 
3963 constexpr 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") },
3983 };
3984 
3985 constexpr 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") },
4016 };
4017 
4018 constexpr 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") },
4038 };
4039 
4040 constexpr 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") },
4068 };
4069 
4070 constexpr 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") },
4084 };
4085 
4086 constexpr 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") },
4106 };
4107 
4108 constexpr 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") },
4132 };
4133 
4134 constexpr TDEUnicodeData::Subcategory Unassigned[] = {
4135  { 0x1FFFE, I18N_NOOP("Noncharacters") },
4136 };
4137 
4138 constexpr TDEUnicodeData::Subcategory CJKUnifiedIdeographsExtensionB[] = {
4139 };
4140 
4141 constexpr TDEUnicodeData::Subcategory CJKUnifiedIdeographsExtensionC[] = {
4142 };
4143 
4144 constexpr TDEUnicodeData::Subcategory CJKUnifiedIdeographsExtensionD[] = {
4145 };
4146 
4147 constexpr TDEUnicodeData::Subcategory CJKUnifiedIdeographsExtensionE[] = {
4148 };
4149 
4150 constexpr TDEUnicodeData::Subcategory CJKUnifiedIdeographsExtensionF[] = {
4151 };
4152 
4153 constexpr TDEUnicodeData::Subcategory CJKUnifiedIdeographsExtensionI[] = {
4154 };
4155 
4156 constexpr TDEUnicodeData::Subcategory CJKCompatibilityIdeographsSupplement[] = {
4157  { 0x2F800, I18N_NOOP("Duplicate characters from CNS 11643-1992") },
4158 };
4159 
4160 constexpr TDEUnicodeData::Subcategory Unassigned2[] = {
4161  { 0x2FFFE, I18N_NOOP("Noncharacters") },
4162 };
4163 
4164 constexpr TDEUnicodeData::Subcategory CJKUnifiedIdeographsExtensionG[] = {
4165 };
4166 
4167 constexpr TDEUnicodeData::Subcategory CJKUnifiedIdeographsExtensionH[] = {
4168 };
4169 
4170 constexpr TDEUnicodeData::Subcategory CJKUnifiedIdeographsExtensionJ[] = {
4171 };
4172 
4173 constexpr TDEUnicodeData::Subcategory Unassigned3[] = {
4174  { 0x3FFFE, I18N_NOOP("Noncharacters") },
4175 };
4176 
4177 constexpr TDEUnicodeData::Subcategory Unassigned4[] = {
4178  { 0x4FFFE, I18N_NOOP("Noncharacters") },
4179 };
4180 
4181 constexpr TDEUnicodeData::Subcategory Unassigned5[] = {
4182  { 0x5FFFE, I18N_NOOP("Noncharacters") },
4183 };
4184 
4185 constexpr TDEUnicodeData::Subcategory Unassigned6[] = {
4186  { 0x6FFFE, I18N_NOOP("Noncharacters") },
4187 };
4188 
4189 constexpr TDEUnicodeData::Subcategory Unassigned7[] = {
4190  { 0x7FFFE, I18N_NOOP("Noncharacters") },
4191 };
4192 
4193 constexpr TDEUnicodeData::Subcategory Unassigned8[] = {
4194  { 0x8FFFE, I18N_NOOP("Noncharacters") },
4195 };
4196 
4197 constexpr TDEUnicodeData::Subcategory Unassigned9[] = {
4198  { 0x9FFFE, I18N_NOOP("Noncharacters") },
4199 };
4200 
4201 constexpr TDEUnicodeData::Subcategory Unassigned10[] = {
4202  { 0xAFFFE, I18N_NOOP("Noncharacters") },
4203 };
4204 
4205 constexpr TDEUnicodeData::Subcategory Unassigned11[] = {
4206  { 0xBFFFE, I18N_NOOP("Noncharacters") },
4207 };
4208 
4209 constexpr TDEUnicodeData::Subcategory Unassigned12[] = {
4210  { 0xCFFFE, I18N_NOOP("Noncharacters") },
4211 };
4212 
4213 constexpr TDEUnicodeData::Subcategory Unassigned13[] = {
4214  { 0xDFFFE, I18N_NOOP("Noncharacters") },
4215 };
4216 
4217 constexpr TDEUnicodeData::Subcategory Tags[] = {
4218  { 0xE0001, I18N_NOOP("Tag identifiers") },
4219  { 0xE0020, I18N_NOOP("Tag components") },
4220  { 0xE007F, I18N_NOOP("Stateful tag terminator") },
4221 };
4222 
4223 constexpr TDEUnicodeData::Subcategory VariationSelectorsSupplement[] = {
4224  { 0xE0100, I18N_NOOP("Ideographic-specific variation selectors") },
4225 };
4226 
4227 constexpr TDEUnicodeData::Subcategory Unassigned14[] = {
4228  { 0xEFFFE, I18N_NOOP("Noncharacters") },
4229 };
4230 
4231 constexpr TDEUnicodeData::Subcategory SupplementaryPrivateUseAreaA[] = {
4232  { 0xFFFFE, I18N_NOOP("Noncharacters") },
4233 };
4234 
4235 constexpr TDEUnicodeData::Subcategory SupplementaryPrivateUseAreaB[] = {
4236  { 0x10FFFE, I18N_NOOP("Noncharacters") },
4237 };
4238 
4239 constexpr 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) },
4600 };
4601 
4602 constexpr size_t categories_size = sizeof(categories) / sizeof(*categories);
4603 
4604 // Generated on Sun Apr 5 13:42:59 2026
TDELocale::I18N_NOOP
#define I18N_NOOP(x)
Definition: tdelocale.h:51
tdelocale.h

tdecore

Skip menu "tdecore"
  • Main Page
  • Modules
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members
  • Related Pages

tdecore

Skip menu "tdecore"
  • arts
  • dcop
  • dnssd
  • interfaces
  •   kspeech
  •     interface
  •     library
  •   tdetexteditor
  • kate
  • kded
  • kdoctools
  • kimgio
  • kjs
  • libtdemid
  • libtdescreensaver
  • tdeabc
  • tdecmshell
  • tdecore
  • tdefx
  • tdehtml
  • tdeinit
  • tdeio
  •   bookmarks
  •   httpfilter
  •   kpasswdserver
  •   kssl
  •   tdefile
  •   tdeio
  •   tdeioexec
  • tdeioslave
  •   http
  • tdemdi
  •   tdemdi
  • tdenewstuff
  • tdeparts
  • tdeprint
  • tderandr
  • tderesources
  • tdespell2
  • tdesu
  • tdeui
  • tdeunittest
  • tdeutils
  • tdewallet
Generated for tdecore by doxygen 1.8.17
This website is maintained by Timothy Pearson.