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

tdecore

Skip menu "tdecore"
  • Main Page
  • 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.9.8
This website is maintained by Timothy Pearson.