diff options
| -rw-r--r-- | kcharselect/categories.h | 1769 | ||||
| -rw-r--r-- | kcharselect/kcharselectdia.cpp | 177 | ||||
| -rw-r--r-- | kcharselect/kcharselectdia.h | 19 | ||||
| -rw-r--r-- | kcharselect/kcharselectui.rc | 6 |
4 files changed, 1962 insertions, 9 deletions
diff --git a/kcharselect/categories.h b/kcharselect/categories.h new file mode 100644 index 0000000..1f3e348 --- /dev/null +++ b/kcharselect/categories.h @@ -0,0 +1,1769 @@ +#define SUBCATEGORY_1(codepoint) mCategories[codepoint] = category; +#define SUBCATEGORY_2(codepoint, subcategory) mCategories[codepoint] = TQString("%1|%2").arg(category, subcategory); + +TQString category; + +category = i18n("Basic Latin"); // 0000 +SUBCATEGORY_2(0x0000, i18n("C0 controls")); +SUBCATEGORY_2(0x0020, i18n("ASCII punctuation and symbols")); +SUBCATEGORY_2(0x002B, i18n("ASCII math operator")); +SUBCATEGORY_2(0x002C, i18n("ASCII punctuation")); +SUBCATEGORY_2(0x0030, i18n("ASCII digits")); +SUBCATEGORY_2(0x003A, i18n("ASCII punctuation")); +SUBCATEGORY_2(0x003C, i18n("ASCII mathematical operators")); +SUBCATEGORY_2(0x003F, i18n("ASCII punctuation")); +SUBCATEGORY_2(0x0041, i18n("Uppercase Latin alphabet")); +SUBCATEGORY_2(0x005B, i18n("ASCII punctuation and symbols")); +SUBCATEGORY_2(0x0061, i18n("Lowercase Latin alphabet")); +SUBCATEGORY_2(0x007B, i18n("ASCII punctuation and symbols")); +SUBCATEGORY_2(0x007F, i18n("Control character")); + +category = i18n("Latin-1 Supplement"); // 0080 +SUBCATEGORY_2(0x0080, i18n("C1 controls")); +SUBCATEGORY_2(0x00A0, i18n("Latin-1 punctuation and symbols")); +SUBCATEGORY_2(0x00BC, i18n("Vulgar fractions")); +SUBCATEGORY_2(0x00BF, i18n("Punctuation")); +SUBCATEGORY_2(0x00C0, i18n("Uppercase letters")); +SUBCATEGORY_2(0x00D7, i18n("Mathematical operator")); +SUBCATEGORY_2(0x00D8, i18n("Uppercase letters")); +SUBCATEGORY_2(0x00DF, i18n("Lowercase letters")); +SUBCATEGORY_2(0x00F7, i18n("Mathematical operator")); +SUBCATEGORY_2(0x00F8, i18n("Lowercase letters")); + +category = i18n("Latin Extended-A"); // 0100 +SUBCATEGORY_2(0x0100, i18n("European Latin")); +SUBCATEGORY_2(0x0149, i18n("Deprecated letter")); +SUBCATEGORY_2(0x014A, i18n("European Latin")); + +category = i18n("Latin Extended-B"); // 0180 +SUBCATEGORY_2(0x0180, i18n("Non-European and historic Latin")); +SUBCATEGORY_2(0x01C0, i18n("African letters for clicks")); +SUBCATEGORY_2(0x01C4, i18n("Latin digraphs matching Serbian Cyrillic letters")); +SUBCATEGORY_2(0x01CD, i18n("Pinyin diacritic-vowel combinations")); +SUBCATEGORY_2(0x01DD, i18n("Phonetic and historic letters")); +SUBCATEGORY_2(0x0200, i18n("Additions for Slovenian")); +SUBCATEGORY_2(0x0218, i18n("Additions for Romanian")); +SUBCATEGORY_2(0x021C, i18n("Miscellaneous additions")); +SUBCATEGORY_2(0x022A, i18n("Additions for Livonian")); +SUBCATEGORY_2(0x0234, i18n("Additions for Sinology")); +SUBCATEGORY_2(0x0237, i18n("Miscellaneous addition")); +SUBCATEGORY_2(0x0238, i18n("Additions for Africanist linguistics")); +SUBCATEGORY_2(0x023A, i18n("Additions for Sencoten")); +SUBCATEGORY_2(0x023F, i18n("Additions for Africanist linguistics")); +SUBCATEGORY_2(0x0241, i18n("Miscellaneous additions")); + +category = i18n("IPA Extensions"); // 0250 +SUBCATEGORY_2(0x0250, i18n("IPA extensions")); +SUBCATEGORY_2(0x027F, i18n("Sinological extension")); +SUBCATEGORY_2(0x0280, i18n("IPA extensions")); +SUBCATEGORY_2(0x0285, i18n("Sinological extension")); +SUBCATEGORY_2(0x0286, i18n("IPA extensions")); +SUBCATEGORY_2(0x02A9, i18n("IPA characters for disordered speech")); +SUBCATEGORY_2(0x02AE, i18n("Sinological extensions")); + +category = i18n("Spacing Modifier Letters"); // 02B0 +SUBCATEGORY_2(0x02B0, i18n("Latin superscript modifier letters")); +SUBCATEGORY_2(0x02B9, i18n("Miscellaneous phonetic modifiers")); +SUBCATEGORY_2(0x02D8, i18n("Spacing clones of diacritics")); +SUBCATEGORY_2(0x02DE, i18n("Additions based on 1989 IPA")); +SUBCATEGORY_2(0x02E5, i18n("Tone letters")); +SUBCATEGORY_2(0x02EA, i18n("Extended Bopomofo tone marks")); +SUBCATEGORY_2(0x02EC, i18n("IPA modifiers")); +SUBCATEGORY_2(0x02EE, i18n("Other modifier letter")); +SUBCATEGORY_2(0x02EF, i18n("UPA modifiers")); + +category = i18n("Combining Diacritical Marks"); // 0300 +SUBCATEGORY_2(0x0300, i18n("Ordinary diacritics")); +SUBCATEGORY_2(0x0334, i18n("Overstruck diacritics")); +SUBCATEGORY_2(0x0339, i18n("Miscellaneous additions")); +SUBCATEGORY_2(0x0340, i18n("Vietnamese tone marks")); +SUBCATEGORY_2(0x0342, i18n("Additions for Greek")); +SUBCATEGORY_2(0x0346, i18n("Additions for IPA")); +SUBCATEGORY_2(0x034B, i18n("IPA diacritics for disordered speech")); +SUBCATEGORY_2(0x034F, i18n("Miscellaneous addition")); +SUBCATEGORY_2(0x0350, i18n("Additions for the Uralic Phonetic Alphabet")); +SUBCATEGORY_2(0x0358, i18n("Miscellaneous additions")); +SUBCATEGORY_2(0x035C, i18n("Double diacritics")); +SUBCATEGORY_2(0x0363, i18n("Medieval superscript letter diacritics")); + +category = i18n("Greek and Coptic"); // 0370 +SUBCATEGORY_2(0x0370, i18n("Archaic letters")); +SUBCATEGORY_2(0x0374, i18n("Numeral signs")); +SUBCATEGORY_2(0x0376, i18n("Archaic letters")); +SUBCATEGORY_2(0x037A, i18n("Iota subscript")); +SUBCATEGORY_2(0x037B, i18n("Lowercase of editorial symbols")); +SUBCATEGORY_2(0x037E, i18n("Punctuation")); +SUBCATEGORY_2(0x037F, i18n("Additional letter")); +SUBCATEGORY_2(0x0384, i18n("Spacing accent marks")); +SUBCATEGORY_2(0x0386, i18n("Letter")); +SUBCATEGORY_2(0x0387, i18n("Punctuation")); +SUBCATEGORY_2(0x0388, i18n("Letters")); +SUBCATEGORY_2(0x03CF, i18n("Variant letterforms")); +SUBCATEGORY_2(0x03D8, i18n("Archaic letters")); +SUBCATEGORY_2(0x03E2, i18n("Coptic letters derived from Demotic")); +SUBCATEGORY_2(0x03F0, i18n("Variant letterforms")); +SUBCATEGORY_2(0x03F3, i18n("Additional letter")); +SUBCATEGORY_2(0x03F4, i18n("Variant letterforms and symbols")); +SUBCATEGORY_2(0x03F7, i18n("Additional archaic letters for Bactrian")); +SUBCATEGORY_2(0x03F9, i18n("Variant letterform")); +SUBCATEGORY_2(0x03FA, i18n("Archaic letters")); +SUBCATEGORY_2(0x03FC, i18n("Symbol")); +SUBCATEGORY_2(0x03FD, i18n("Editorial symbols")); + +category = i18n("Cyrillic"); // 0400 +SUBCATEGORY_2(0x0400, i18n("Cyrillic extensions")); +SUBCATEGORY_2(0x0410, i18n("Basic Russian alphabet")); +SUBCATEGORY_2(0x0450, i18n("Cyrillic extensions")); +SUBCATEGORY_2(0x0460, i18n("Historic letters")); +SUBCATEGORY_2(0x0478, i18n("Historic digraphs")); +SUBCATEGORY_2(0x047A, i18n("Historic letters")); +SUBCATEGORY_2(0x0482, i18n("Historic miscellaneous")); +SUBCATEGORY_2(0x048A, i18n("Extended Cyrillic")); +SUBCATEGORY_2(0x04FA, i18n("Additions for Nivkh")); + +category = i18n("Cyrillic Supplement"); // 0500 +SUBCATEGORY_2(0x0500, i18n("Komi letters")); +SUBCATEGORY_2(0x0510, i18n("Khanty letters")); +SUBCATEGORY_2(0x0512, i18n("Chukchi letters")); +SUBCATEGORY_2(0x0514, i18n("Mordvin letters")); +SUBCATEGORY_2(0x051A, i18n("Kurdish letters")); +SUBCATEGORY_2(0x051E, i18n("Aleut letters")); +SUBCATEGORY_2(0x0520, i18n("Chuvash letters")); +SUBCATEGORY_2(0x0524, i18n("Abkhaz letters")); +SUBCATEGORY_2(0x0526, i18n("Azerbaijani letters")); +SUBCATEGORY_2(0x0528, i18n("Orok letters")); +SUBCATEGORY_2(0x052A, i18n("Komi letters")); +SUBCATEGORY_2(0x052E, i18n("Khanty letters")); + +category = i18n("Armenian"); // 0530 +SUBCATEGORY_2(0x0531, i18n("Uppercase letters")); +SUBCATEGORY_2(0x0559, i18n("Modifier letters")); +SUBCATEGORY_2(0x0560, i18n("Lowercase letters")); +SUBCATEGORY_2(0x0589, i18n("Punctuation")); +SUBCATEGORY_2(0x058D, i18n("Religious symbols")); +SUBCATEGORY_2(0x058F, i18n("Currency symbol")); + +category = i18n("Hebrew"); // 0590 +SUBCATEGORY_2(0x0591, i18n("Cantillation marks")); +SUBCATEGORY_2(0x05B0, i18n("Points and punctuation")); +SUBCATEGORY_2(0x05C4, i18n("Puncta extraordinaria")); +SUBCATEGORY_2(0x05C6, i18n("Points and punctuation")); +SUBCATEGORY_2(0x05D0, i18n("Based on ISO 8859-8")); +SUBCATEGORY_2(0x05EF, i18n("Sign")); +SUBCATEGORY_2(0x05F0, i18n("Yiddish digraphs")); +SUBCATEGORY_2(0x05F3, i18n("Additional punctuation")); + +category = i18n("Arabic"); // 0600 +SUBCATEGORY_2(0x0600, i18n("Subtending marks")); +SUBCATEGORY_2(0x0605, i18n("Supertending mark")); +SUBCATEGORY_2(0x0606, i18n("Radix symbols")); +SUBCATEGORY_2(0x0608, i18n("Letterlike symbol")); +SUBCATEGORY_2(0x0609, i18n("Punctuation")); +SUBCATEGORY_2(0x060B, i18n("Currency symbol")); +SUBCATEGORY_2(0x060C, i18n("Punctuation")); +SUBCATEGORY_2(0x060E, i18n("Poetic marks")); +SUBCATEGORY_2(0x0610, i18n("Honorifics")); +SUBCATEGORY_2(0x0615, i18n("Quranic annotation sign")); +SUBCATEGORY_2(0x0616, i18n("Extended Arabic mark")); +SUBCATEGORY_2(0x0617, i18n("Quranic annotation signs")); +SUBCATEGORY_2(0x061B, i18n("Punctuation")); +SUBCATEGORY_2(0x061C, i18n("Format character")); +SUBCATEGORY_2(0x061D, i18n("Punctuation")); +SUBCATEGORY_2(0x0620, i18n("Addition for Kashmiri")); +SUBCATEGORY_2(0x0621, i18n("Based on ISO 8859-6")); +SUBCATEGORY_2(0x063B, i18n("Additions for early Persian and Azerbaijani")); +SUBCATEGORY_2(0x0640, i18n("Based on ISO 8859-6")); +SUBCATEGORY_2(0x064B, i18n("Tashkil from ISO 8859-6")); +SUBCATEGORY_2(0x0653, i18n("Combining maddah and hamza")); +SUBCATEGORY_2(0x0656, i18n("Other combining marks")); +SUBCATEGORY_2(0x0660, i18n("Arabic-Indic digits")); +SUBCATEGORY_2(0x066A, i18n("Punctuation")); +SUBCATEGORY_2(0x066E, i18n("Archaic letters")); +SUBCATEGORY_2(0x0670, i18n("Tashkil")); +SUBCATEGORY_2(0x0671, i18n("Extended Arabic letters")); +SUBCATEGORY_2(0x0673, i18n("Deprecated letter")); +SUBCATEGORY_2(0x0674, i18n("High hamza")); +SUBCATEGORY_2(0x0675, i18n("Digraphic letters for Kazakh")); +SUBCATEGORY_2(0x0679, i18n("Extended Arabic letters")); +SUBCATEGORY_2(0x06D4, i18n("Punctuation")); +SUBCATEGORY_2(0x06D5, i18n("Extended Arabic letter")); +SUBCATEGORY_2(0x06D6, i18n("Quranic annotation signs")); +SUBCATEGORY_2(0x06EE, i18n("Extended Arabic letters for Parkari")); +SUBCATEGORY_2(0x06F0, i18n("Eastern Arabic-Indic digits")); +SUBCATEGORY_2(0x06FA, i18n("Extended Arabic letters")); +SUBCATEGORY_2(0x06FD, i18n("Signs for Sindhi")); +SUBCATEGORY_2(0x06FF, i18n("Extended Arabic letter for Parkari")); + +category = i18n("Syriac"); // 0700 +SUBCATEGORY_2(0x0700, i18n("Syriac punctuation and signs")); +SUBCATEGORY_2(0x070F, i18n("Syriac format control character")); +SUBCATEGORY_2(0x0710, i18n("Syriac letters")); +SUBCATEGORY_2(0x072D, i18n("Persian letters")); +SUBCATEGORY_2(0x0730, i18n("Syriac points (vowels)")); +SUBCATEGORY_2(0x0740, i18n("Syriac marks")); +SUBCATEGORY_2(0x074D, i18n("Sogdian letters")); + +category = i18n("Arabic Supplement"); // 0750 +SUBCATEGORY_2(0x0750, i18n("Extended Arabic letters")); +SUBCATEGORY_2(0x076E, i18n("Additions for Khowar")); +SUBCATEGORY_2(0x0772, i18n("Addition for Torwali")); +SUBCATEGORY_2(0x0773, i18n("Additions for Burushaski")); +SUBCATEGORY_2(0x077E, i18n("Additions for early Persian")); + +category = i18n("Thaana"); // 0780 +SUBCATEGORY_2(0x0780, i18n("Basic consonants")); +SUBCATEGORY_2(0x0798, i18n("Extensions for Arabic")); +SUBCATEGORY_2(0x07A6, i18n("Vowels")); +SUBCATEGORY_2(0x07B1, i18n("Consonant for Addu dialect")); + +category = i18n("NKo"); // 07C0 +SUBCATEGORY_2(0x07C0, i18n("Digits")); +SUBCATEGORY_2(0x07CA, i18n("Letters")); +SUBCATEGORY_2(0x07E8, i18n("Archaic letters")); +SUBCATEGORY_2(0x07EB, i18n("Tone marks")); +SUBCATEGORY_2(0x07F2, i18n("Other diacritics")); +SUBCATEGORY_2(0x07F4, i18n("Tonal apostrophes")); +SUBCATEGORY_2(0x07F6, i18n("Symbol")); +SUBCATEGORY_2(0x07F7, i18n("Punctuation")); +SUBCATEGORY_2(0x07FA, i18n("Letter extender")); +SUBCATEGORY_2(0x07FD, i18n("Abbreviation sign")); +SUBCATEGORY_2(0x07FE, i18n("Currency symbols")); + +category = i18n("Samaritan"); // 0800 +SUBCATEGORY_2(0x0800, i18n("Letters")); +SUBCATEGORY_2(0x0816, i18n("Consonant modifiers")); +SUBCATEGORY_2(0x081C, i18n("Vowel signs")); +SUBCATEGORY_2(0x082D, i18n("Variant reading sign")); +SUBCATEGORY_2(0x0830, i18n("Punctuation")); + +category = i18n("Mandaic"); // 0840 +SUBCATEGORY_2(0x0840, i18n("Letters")); +SUBCATEGORY_2(0x0859, i18n("Diacritics")); +SUBCATEGORY_2(0x085E, i18n("Punctuation")); + +category = i18n("Syriac Supplement"); // 0860 +SUBCATEGORY_2(0x0860, i18n("Syriac letters")); + +category = i18n("Arabic Extended-B"); // 0870 +SUBCATEGORY_2(0x0870, i18n("Additions for Quranic orthographies")); +SUBCATEGORY_2(0x0889, i18n("Additions for Bosnian orthographies")); +SUBCATEGORY_2(0x088B, i18n("Additions for Pegon orthographies")); +SUBCATEGORY_2(0x088E, i18n("Abbreviation mark")); +SUBCATEGORY_2(0x088F, i18n("Addition for Eastern Punjabi orthographies")); +SUBCATEGORY_2(0x0890, i18n("Supertending currency symbols")); +SUBCATEGORY_2(0x0897, i18n("Vowel sign for Pegon")); +SUBCATEGORY_2(0x0898, i18n("Additions for Quranic orthographies")); + +category = i18n("Arabic Extended-A"); // 08A0 +SUBCATEGORY_2(0x08A0, i18n("Arabic letters for African languages")); +SUBCATEGORY_2(0x08AA, i18n("Dependent consonants for Rohingya")); +SUBCATEGORY_2(0x08AD, i18n("Arabic letters for European and Central Asian languages")); +SUBCATEGORY_2(0x08B2, i18n("Arabic letter for Berber")); +SUBCATEGORY_2(0x08B3, i18n("Arabic letters for Arwi")); +SUBCATEGORY_2(0x08B5, i18n("Early Arabic letter")); +SUBCATEGORY_2(0x08B6, i18n("Arabic letters for Bravanese")); +SUBCATEGORY_2(0x08BB, i18n("Arabic letters for Warsh orthography")); +SUBCATEGORY_2(0x08BE, i18n("Arabic letters for Hindko")); +SUBCATEGORY_2(0x08C3, i18n("Arabic letters for Hausa, Wolof and other African orthographies")); +SUBCATEGORY_2(0x08C7, i18n("Arabic letter for Punjabi")); +SUBCATEGORY_2(0x08C8, i18n("Arabic letter for Balti")); +SUBCATEGORY_2(0x08C9, i18n("Additions for Quranic orthographies")); +SUBCATEGORY_2(0x08D3, i18n("Quranic annotation signs")); +SUBCATEGORY_2(0x08E3, i18n("Extended vowel sign for Arwi")); +SUBCATEGORY_2(0x08E4, i18n("Extended vowel signs for Rohingya")); +SUBCATEGORY_2(0x08EA, i18n("Tone marks for Rohingya")); +SUBCATEGORY_2(0x08F0, i18n("Quranic annotation signs")); +SUBCATEGORY_2(0x08F4, i18n("Extended vowel signs for African languages")); +SUBCATEGORY_2(0x08FE, i18n("Extended vowel signs")); + +category = i18n("Devanagari"); // 0900 +SUBCATEGORY_2(0x0900, i18n("Various signs")); +SUBCATEGORY_2(0x0904, i18n("Independent vowels")); +SUBCATEGORY_2(0x0915, i18n("Consonants")); +SUBCATEGORY_2(0x093A, i18n("Dependent vowel signs")); +SUBCATEGORY_2(0x093C, i18n("Various signs")); +SUBCATEGORY_2(0x093E, i18n("Dependent vowel signs")); +SUBCATEGORY_2(0x094D, i18n("Virama")); +SUBCATEGORY_2(0x094E, i18n("Dependent vowel signs")); +SUBCATEGORY_2(0x0950, i18n("Sign")); +SUBCATEGORY_2(0x0951, i18n("Vedic tone marks")); +SUBCATEGORY_2(0x0953, i18n("Accent marks")); +SUBCATEGORY_2(0x0955, i18n("Dependent vowel sign")); +SUBCATEGORY_2(0x0956, i18n("Dependent vowel signs for Kashmiri")); +SUBCATEGORY_2(0x0958, i18n("Additional consonants")); +SUBCATEGORY_2(0x0960, i18n("Additional vowels for Sanskrit")); +SUBCATEGORY_2(0x0964, i18n("Generic punctuation for scripts of India")); +SUBCATEGORY_2(0x0966, i18n("Digits")); +SUBCATEGORY_2(0x0970, i18n("Additional signs")); +SUBCATEGORY_2(0x0972, i18n("Independent vowel for Marathi")); +SUBCATEGORY_2(0x0973, i18n("Independent vowels")); +SUBCATEGORY_2(0x0976, i18n("Independent vowels for Kashmiri")); +SUBCATEGORY_2(0x0978, i18n("Additional consonants")); +SUBCATEGORY_2(0x097B, i18n("Sindhi implosives")); +SUBCATEGORY_2(0x097D, i18n("Glottal stop")); +SUBCATEGORY_2(0x097E, i18n("Sindhi implosives")); + +category = i18n("Bengali"); // 0980 +SUBCATEGORY_2(0x0980, i18n("Various signs")); +SUBCATEGORY_2(0x0985, i18n("Independent vowels")); +SUBCATEGORY_2(0x0995, i18n("Consonants")); +SUBCATEGORY_2(0x09BC, i18n("Various signs")); +SUBCATEGORY_2(0x09BE, i18n("Dependent vowel signs")); +SUBCATEGORY_2(0x09CB, i18n("Two-part dependent vowel signs")); +SUBCATEGORY_2(0x09CD, i18n("Virama")); +SUBCATEGORY_2(0x09CE, i18n("Additional consonant")); +SUBCATEGORY_2(0x09D7, i18n("Sign")); +SUBCATEGORY_2(0x09DC, i18n("Additional consonants")); +SUBCATEGORY_2(0x09E0, i18n("Additional vowels for Sanskrit")); +SUBCATEGORY_2(0x09E4, i18n("Reserved")); +SUBCATEGORY_2(0x09E6, i18n("Digits")); +SUBCATEGORY_2(0x09F0, i18n("Additions for Assamese")); +SUBCATEGORY_2(0x09F2, i18n("Currency symbols")); +SUBCATEGORY_2(0x09F4, i18n("Historic symbols for fractional values")); +SUBCATEGORY_2(0x09FA, i18n("Sign")); +SUBCATEGORY_2(0x09FB, i18n("Historic currency sign")); +SUBCATEGORY_2(0x09FC, i18n("Signs")); + +category = i18n("Gurmukhi"); // 0A00 +SUBCATEGORY_2(0x0A01, i18n("Various signs")); +SUBCATEGORY_2(0x0A05, i18n("Independent vowels")); +SUBCATEGORY_2(0x0A15, i18n("Consonants")); +SUBCATEGORY_2(0x0A3C, i18n("Various signs")); +SUBCATEGORY_2(0x0A3E, i18n("Dependent vowel signs")); +SUBCATEGORY_2(0x0A4D, i18n("Virama")); +SUBCATEGORY_2(0x0A51, i18n("Sign")); +SUBCATEGORY_2(0x0A59, i18n("Additional consonants")); +SUBCATEGORY_2(0x0A64, i18n("Reserved")); +SUBCATEGORY_2(0x0A66, i18n("Digits")); +SUBCATEGORY_2(0x0A70, i18n("Signs")); +SUBCATEGORY_2(0x0A72, i18n("Vowel bases")); +SUBCATEGORY_2(0x0A74, i18n("Signs")); + +category = i18n("Gujarati"); // 0A80 +SUBCATEGORY_2(0x0A81, i18n("Various signs")); +SUBCATEGORY_2(0x0A85, i18n("Independent vowels")); +SUBCATEGORY_2(0x0A95, i18n("Consonants")); +SUBCATEGORY_2(0x0ABC, i18n("Various signs")); +SUBCATEGORY_2(0x0ABE, i18n("Dependent vowel signs")); +SUBCATEGORY_2(0x0ACD, i18n("Virama")); +SUBCATEGORY_2(0x0AD0, i18n("Various signs")); +SUBCATEGORY_2(0x0AE0, i18n("Additional vowels for Sanskrit")); +SUBCATEGORY_2(0x0AE4, i18n("Reserved")); +SUBCATEGORY_2(0x0AE6, i18n("Digits")); +SUBCATEGORY_2(0x0AF0, i18n("Abbreviation sign")); +SUBCATEGORY_2(0x0AF1, i18n("Currency symbol")); +SUBCATEGORY_2(0x0AF9, i18n("Additional consonant")); +SUBCATEGORY_2(0x0AFA, i18n("Transliteration signs")); + +category = i18n("Oriya"); // 0B00 +SUBCATEGORY_2(0x0B01, i18n("Various signs")); +SUBCATEGORY_2(0x0B05, i18n("Independent vowels")); +SUBCATEGORY_2(0x0B15, i18n("Consonants")); +SUBCATEGORY_2(0x0B3C, i18n("Various signs")); +SUBCATEGORY_2(0x0B3E, i18n("Dependent vowel signs")); +SUBCATEGORY_2(0x0B4B, i18n("Two-part dependent vowel signs")); +SUBCATEGORY_2(0x0B4D, i18n("Virama")); +SUBCATEGORY_2(0x0B55, i18n("Various signs")); +SUBCATEGORY_2(0x0B5C, i18n("Additional consonants")); +SUBCATEGORY_2(0x0B60, i18n("Additional vowels for Sanskrit")); +SUBCATEGORY_2(0x0B62, i18n("Dependent vowels")); +SUBCATEGORY_2(0x0B64, i18n("Reserved")); +SUBCATEGORY_2(0x0B66, i18n("Digits")); +SUBCATEGORY_2(0x0B70, i18n("Sign")); +SUBCATEGORY_2(0x0B71, i18n("Additional consonant")); +SUBCATEGORY_2(0x0B72, i18n("Fraction signs")); + +category = i18n("Tamil"); // 0B80 +SUBCATEGORY_2(0x0B82, i18n("Various signs")); +SUBCATEGORY_2(0x0B85, i18n("Independent vowels")); +SUBCATEGORY_2(0x0B95, i18n("Consonants")); +SUBCATEGORY_2(0x0BBE, i18n("Dependent vowel signs")); +SUBCATEGORY_2(0x0BCA, i18n("Two-part dependent vowel signs")); +SUBCATEGORY_2(0x0BCD, i18n("Virama")); +SUBCATEGORY_2(0x0BD0, i18n("Various signs")); +SUBCATEGORY_2(0x0BE4, i18n("Reserved")); +SUBCATEGORY_2(0x0BE6, i18n("Digits")); +SUBCATEGORY_2(0x0BF0, i18n("Tamil numerics")); +SUBCATEGORY_2(0x0BF3, i18n("Tamil calendrical symbols")); +SUBCATEGORY_2(0x0BF6, i18n("Tamil clerical symbols")); +SUBCATEGORY_2(0x0BF9, i18n("Currency symbol")); +SUBCATEGORY_2(0x0BFA, i18n("Tamil clerical symbol")); + +category = i18n("Telugu"); // 0C00 +SUBCATEGORY_2(0x0C00, i18n("Various signs")); +SUBCATEGORY_2(0x0C05, i18n("Independent vowels")); +SUBCATEGORY_2(0x0C15, i18n("Consonants")); +SUBCATEGORY_2(0x0C3C, i18n("Sign")); +SUBCATEGORY_2(0x0C3D, i18n("Addition for Sanskrit")); +SUBCATEGORY_2(0x0C3E, i18n("Dependent vowel signs")); +SUBCATEGORY_2(0x0C4D, i18n("Virama")); +SUBCATEGORY_2(0x0C55, i18n("Various signs")); +SUBCATEGORY_2(0x0C58, i18n("Historic phonetic variants")); +SUBCATEGORY_2(0x0C5C, i18n("Ligature")); +SUBCATEGORY_2(0x0C5D, i18n("Consonant")); +SUBCATEGORY_2(0x0C60, i18n("Additional vowels for Sanskrit")); +SUBCATEGORY_2(0x0C62, i18n("Dependent vowels")); +SUBCATEGORY_2(0x0C64, i18n("Reserved")); +SUBCATEGORY_2(0x0C66, i18n("Digits")); +SUBCATEGORY_2(0x0C77, i18n("Sign")); +SUBCATEGORY_2(0x0C78, i18n("Telugu fractions and weights")); + +category = i18n("Kannada"); // 0C80 +SUBCATEGORY_2(0x0C80, i18n("Various signs")); +SUBCATEGORY_2(0x0C85, i18n("Independent vowels")); +SUBCATEGORY_2(0x0C95, i18n("Consonants")); +SUBCATEGORY_2(0x0CBC, i18n("Various signs")); +SUBCATEGORY_2(0x0CBE, i18n("Dependent vowel signs")); +SUBCATEGORY_2(0x0CCD, i18n("Virama")); +SUBCATEGORY_2(0x0CD5, i18n("Various signs")); +SUBCATEGORY_2(0x0CDC, i18n("Ligature")); +SUBCATEGORY_2(0x0CDD, i18n("Additional consonants")); +SUBCATEGORY_2(0x0CE0, i18n("Additional vowels for Sanskrit")); +SUBCATEGORY_2(0x0CE2, i18n("Dependent vowels")); +SUBCATEGORY_2(0x0CE4, i18n("Reserved")); +SUBCATEGORY_2(0x0CE6, i18n("Digits")); +SUBCATEGORY_2(0x0CF1, i18n("Signs used in Sanskrit")); + +category = i18n("Malayalam"); // 0D00 +SUBCATEGORY_2(0x0D00, i18n("Various signs")); +SUBCATEGORY_2(0x0D05, i18n("Independent vowels")); +SUBCATEGORY_2(0x0D15, i18n("Consonants")); +SUBCATEGORY_2(0x0D3B, i18n("Variant shape viramas")); +SUBCATEGORY_2(0x0D3D, i18n("Addition for Sanskrit")); +SUBCATEGORY_2(0x0D3E, i18n("Dependent vowel signs")); +SUBCATEGORY_2(0x0D4A, i18n("Two-part dependent vowel signs")); +SUBCATEGORY_2(0x0D4D, i18n("Virama")); +SUBCATEGORY_2(0x0D4E, i18n("Dot reph")); +SUBCATEGORY_2(0x0D4F, i18n("Measurement symbol")); +SUBCATEGORY_2(0x0D54, i18n("Additional historic chillu letters")); +SUBCATEGORY_2(0x0D57, i18n("Dependent vowel sign")); +SUBCATEGORY_2(0x0D58, i18n("Minor fractions")); +SUBCATEGORY_2(0x0D5F, i18n("Additional historic vowel")); +SUBCATEGORY_2(0x0D60, i18n("Additional vowels for Sanskrit")); +SUBCATEGORY_2(0x0D62, i18n("Dependent vowels")); +SUBCATEGORY_2(0x0D64, i18n("Reserved")); +SUBCATEGORY_2(0x0D66, i18n("Digits")); +SUBCATEGORY_2(0x0D70, i18n("Malayalam numerics")); +SUBCATEGORY_2(0x0D73, i18n("Fractions")); +SUBCATEGORY_2(0x0D79, i18n("Date mark")); +SUBCATEGORY_2(0x0D7A, i18n("Chillu letters")); + +category = i18n("Sinhala"); // 0D80 +SUBCATEGORY_2(0x0D81, i18n("Various signs")); +SUBCATEGORY_2(0x0D85, i18n("Independent vowels")); +SUBCATEGORY_2(0x0D9A, i18n("Consonants")); +SUBCATEGORY_2(0x0DCA, i18n("Sign")); +SUBCATEGORY_2(0x0DCF, i18n("Dependent vowel signs")); +SUBCATEGORY_2(0x0DDC, i18n("Two-part dependent vowel signs")); +SUBCATEGORY_2(0x0DDF, i18n("Dependent vowel sign")); +SUBCATEGORY_2(0x0DE6, i18n("Astrological digits")); +SUBCATEGORY_2(0x0DF2, i18n("Additional dependent vowel signs")); +SUBCATEGORY_2(0x0DF4, i18n("Punctuation")); + +category = i18n("Thai"); // 0E00 +SUBCATEGORY_2(0x0E01, i18n("Consonants")); +SUBCATEGORY_2(0x0E2F, i18n("Sign")); +SUBCATEGORY_2(0x0E30, i18n("Vowels")); +SUBCATEGORY_2(0x0E3F, i18n("Currency symbol")); +SUBCATEGORY_2(0x0E40, i18n("Vowels")); +SUBCATEGORY_2(0x0E45, i18n("Vowel length sign")); +SUBCATEGORY_2(0x0E46, i18n("Repetition mark")); +SUBCATEGORY_2(0x0E47, i18n("Vowel")); +SUBCATEGORY_2(0x0E48, i18n("Tone marks")); +SUBCATEGORY_2(0x0E4C, i18n("Signs")); +SUBCATEGORY_2(0x0E50, i18n("Digits")); +SUBCATEGORY_2(0x0E5A, i18n("Signs")); + +category = i18n("Lao"); // 0E80 +SUBCATEGORY_2(0x0E81, i18n("Consonants")); +SUBCATEGORY_2(0x0EAF, i18n("Sign")); +SUBCATEGORY_2(0x0EB0, i18n("Vowels")); +SUBCATEGORY_2(0x0EBA, i18n("Virama")); +SUBCATEGORY_2(0x0EBB, i18n("Vowel")); +SUBCATEGORY_2(0x0EBC, i18n("Signs")); +SUBCATEGORY_2(0x0EC0, i18n("Vowels")); +SUBCATEGORY_2(0x0EC6, i18n("Repetition mark")); +SUBCATEGORY_2(0x0EC8, i18n("Tone marks")); +SUBCATEGORY_2(0x0ECC, i18n("Signs")); +SUBCATEGORY_2(0x0ED0, i18n("Digits")); +SUBCATEGORY_2(0x0EDC, i18n("Digraphs")); +SUBCATEGORY_2(0x0EDE, i18n("Consonants for Khmu")); + +category = i18n("Tibetan"); // 0F00 +SUBCATEGORY_2(0x0F00, i18n("Syllable")); +SUBCATEGORY_2(0x0F01, i18n("Head marks")); +SUBCATEGORY_2(0x0F08, i18n("Marks and signs")); +SUBCATEGORY_2(0x0F15, i18n("Astrological signs")); +SUBCATEGORY_2(0x0F20, i18n("Digits")); +SUBCATEGORY_2(0x0F2A, i18n("Digits minus half")); +SUBCATEGORY_2(0x0F34, i18n("Marks and signs")); +SUBCATEGORY_2(0x0F3A, i18n("Paired punctuation")); +SUBCATEGORY_2(0x0F3E, i18n("Astrological signs")); +SUBCATEGORY_2(0x0F40, i18n("Consonants")); +SUBCATEGORY_2(0x0F6B, i18n("Extensions for Balti")); +SUBCATEGORY_2(0x0F71, i18n("Dependent vowel signs")); +SUBCATEGORY_2(0x0F7E, i18n("Vocalic modification")); +SUBCATEGORY_2(0x0F80, i18n("Dependent vowel signs")); +SUBCATEGORY_2(0x0F82, i18n("Marks and signs")); +SUBCATEGORY_2(0x0F88, i18n("Transliteration head letters")); +SUBCATEGORY_2(0x0F8D, i18n("Transliteration subjoined signs")); +SUBCATEGORY_2(0x0F90, i18n("Subjoined consonants")); +SUBCATEGORY_2(0x0FBA, i18n("Fixed-form subjoined consonants")); +SUBCATEGORY_2(0x0FBE, i18n("Signs")); +SUBCATEGORY_2(0x0FC0, i18n("Cantillation signs")); +SUBCATEGORY_2(0x0FC4, i18n("Symbols")); +SUBCATEGORY_2(0x0FCE, i18n("Astrological signs")); +SUBCATEGORY_2(0x0FD0, i18n("Marks")); +SUBCATEGORY_2(0x0FD3, i18n("Head marks")); +SUBCATEGORY_2(0x0FD5, i18n("Religious symbols")); +SUBCATEGORY_2(0x0FD9, i18n("Annotation marks")); + +category = i18n("Myanmar"); // 1000 +SUBCATEGORY_2(0x1000, i18n("Consonants")); +SUBCATEGORY_2(0x1021, i18n("Independent vowels")); +SUBCATEGORY_2(0x102B, i18n("Dependent vowel signs")); +SUBCATEGORY_2(0x1036, i18n("Various signs")); +SUBCATEGORY_2(0x1039, i18n("Virama and killer")); +SUBCATEGORY_2(0x103B, i18n("Dependent consonant signs")); +SUBCATEGORY_2(0x103F, i18n("Consonant")); +SUBCATEGORY_2(0x1040, i18n("Digits")); +SUBCATEGORY_2(0x104A, i18n("Punctuation")); +SUBCATEGORY_2(0x104C, i18n("Various signs")); +SUBCATEGORY_2(0x1050, i18n("Pali and Sanskrit extensions")); +SUBCATEGORY_2(0x105A, i18n("Extensions for Mon")); +SUBCATEGORY_2(0x1061, i18n("Extensions for S'gaw Karen")); +SUBCATEGORY_2(0x1065, i18n("Extensions for Western Pwo Karen")); +SUBCATEGORY_2(0x106E, i18n("Extensions for Eastern Pwo Karen")); +SUBCATEGORY_2(0x1071, i18n("Extension for Geba Karen")); +SUBCATEGORY_2(0x1072, i18n("Extensions for Kayah")); +SUBCATEGORY_2(0x1075, i18n("Extensions for Shan")); +SUBCATEGORY_2(0x108E, i18n("Extensions for Rumai Palaung")); +SUBCATEGORY_2(0x1090, i18n("Shan digits")); +SUBCATEGORY_2(0x109A, i18n("Extensions for Khamti Shan")); +SUBCATEGORY_2(0x109C, i18n("Extensions for Aiton and Phake")); +SUBCATEGORY_2(0x109E, i18n("Shan symbols")); + +category = i18n("Georgian"); // 10A0 +SUBCATEGORY_2(0x10A0, i18n("Capital letters (Khutsuri)")); +SUBCATEGORY_2(0x10C7, i18n("Additional letter")); +SUBCATEGORY_2(0x10CD, i18n("Additional letter for Ossetian")); +SUBCATEGORY_2(0x10D0, i18n("Mkhedruli")); +SUBCATEGORY_2(0x10F1, i18n("Archaic letters")); +SUBCATEGORY_2(0x10F7, i18n("Additional letters for Mingrelian and Svan")); +SUBCATEGORY_2(0x10F9, i18n("Additional letters")); +SUBCATEGORY_2(0x10FB, i18n("Punctuation")); +SUBCATEGORY_2(0x10FC, i18n("Modifier letter")); +SUBCATEGORY_2(0x10FD, i18n("Additional letters for Ossetian and Abkhaz")); + +category = i18n("Hangul Jamo"); // 1100 +SUBCATEGORY_2(0x1100, i18n("Initial consonants")); +SUBCATEGORY_2(0x1113, i18n("Old initial consonants")); +SUBCATEGORY_2(0x1160, i18n("Medial vowels")); +SUBCATEGORY_2(0x1176, i18n("Old medial vowels")); +SUBCATEGORY_2(0x11A8, i18n("Final consonants")); +SUBCATEGORY_2(0x11C3, i18n("Old final consonants")); + +category = i18n("Ethiopic"); // 1200 +SUBCATEGORY_2(0x1200, i18n("Syllables")); +SUBCATEGORY_2(0x135D, i18n("Combining marks")); +SUBCATEGORY_2(0x1360, i18n("Punctuation")); +SUBCATEGORY_2(0x1369, i18n("Digits")); +SUBCATEGORY_2(0x1372, i18n("Numbers")); + +category = i18n("Ethiopic Supplement"); // 1380 +SUBCATEGORY_2(0x1380, i18n("Syllables for Gurage")); +SUBCATEGORY_2(0x1390, i18n("Tonal marks")); + +category = i18n("Cherokee"); // 13A0 +SUBCATEGORY_2(0x13A0, i18n("Uppercase syllables")); +SUBCATEGORY_2(0x13F5, i18n("Archaic uppercase syllable")); +SUBCATEGORY_2(0x13F8, i18n("Lowercase syllables")); +SUBCATEGORY_2(0x13FD, i18n("Archaic lowercase syllable")); + +category = i18n("Unified Canadian Aboriginal Syllabics"); // 1400 +SUBCATEGORY_2(0x1400, i18n("Punctuation")); +SUBCATEGORY_2(0x1401, i18n("Syllables")); +SUBCATEGORY_2(0x15C4, i18n("Syllables for Carrier")); +SUBCATEGORY_2(0x166D, i18n("Symbol")); +SUBCATEGORY_2(0x166E, i18n("Punctuation")); +SUBCATEGORY_2(0x166F, i18n("Syllables")); + +category = i18n("Ogham"); // 1680 +SUBCATEGORY_2(0x1680, i18n("Space")); +SUBCATEGORY_2(0x1681, i18n("Traditional letters")); +SUBCATEGORY_2(0x1695, i18n("Forfeda (supplementary letters)")); +SUBCATEGORY_2(0x169B, i18n("Punctuation")); + +category = i18n("Runic"); // 16A0 +SUBCATEGORY_2(0x16A0, i18n("Letters")); +SUBCATEGORY_2(0x16EB, i18n("Punctuation")); +SUBCATEGORY_2(0x16EE, i18n("Golden number runes")); +SUBCATEGORY_2(0x16F1, i18n("Tolkienian extensions")); +SUBCATEGORY_2(0x16F4, i18n("Cryptogrammic letters")); + +category = i18n("Tagalog"); // 1700 +SUBCATEGORY_2(0x1700, i18n("Independent vowels")); +SUBCATEGORY_2(0x1703, i18n("Consonants")); +SUBCATEGORY_2(0x1712, i18n("Dependent vowel signs")); +SUBCATEGORY_2(0x1714, i18n("Viramas")); +SUBCATEGORY_2(0x171F, i18n("Archaic letter")); + +category = i18n("Hanunoo"); // 1720 +SUBCATEGORY_2(0x1720, i18n("Independent vowels")); +SUBCATEGORY_2(0x1723, i18n("Consonants")); +SUBCATEGORY_2(0x1732, i18n("Dependent vowel signs")); +SUBCATEGORY_2(0x1734, i18n("Virama")); +SUBCATEGORY_2(0x1735, i18n("Generic punctuation for Philippine scripts")); + +category = i18n("Buhid"); // 1740 +SUBCATEGORY_2(0x1740, i18n("Independent vowels")); +SUBCATEGORY_2(0x1743, i18n("Consonants")); +SUBCATEGORY_2(0x1752, i18n("Dependent vowel signs")); + +category = i18n("Tagbanwa"); // 1760 +SUBCATEGORY_2(0x1760, i18n("Independent vowels")); +SUBCATEGORY_2(0x1763, i18n("Consonants")); +SUBCATEGORY_2(0x1772, i18n("Dependent vowel signs")); + +category = i18n("Khmer"); // 1780 +SUBCATEGORY_2(0x1780, i18n("Consonants")); +SUBCATEGORY_2(0x17A3, i18n("Deprecated independent vowels for transliteration")); +SUBCATEGORY_2(0x17A5, i18n("Independent vowels")); +SUBCATEGORY_2(0x17B4, i18n("Inherent vowels")); +SUBCATEGORY_2(0x17B6, i18n("Dependent vowel signs")); +SUBCATEGORY_2(0x17BE, i18n("Two-part dependent vowel signs")); +SUBCATEGORY_2(0x17C1, i18n("Dependent vowel signs")); +SUBCATEGORY_2(0x17C4, i18n("Two-part dependent vowel signs")); +SUBCATEGORY_2(0x17C6, i18n("Various signs")); +SUBCATEGORY_2(0x17C9, i18n("Consonant shifters")); +SUBCATEGORY_2(0x17CB, i18n("Various signs")); +SUBCATEGORY_2(0x17D3, i18n("Lunar date sign")); +SUBCATEGORY_2(0x17D4, i18n("Various signs")); +SUBCATEGORY_2(0x17DB, i18n("Currency symbol")); +SUBCATEGORY_2(0x17DC, i18n("Various signs")); +SUBCATEGORY_2(0x17E0, i18n("Digits")); +SUBCATEGORY_2(0x17F0, i18n("Numeric symbols for divination lore")); + +category = i18n("Mongolian"); // 1800 +SUBCATEGORY_2(0x1800, i18n("Punctuation")); +SUBCATEGORY_2(0x180B, i18n("Format controls")); +SUBCATEGORY_2(0x1810, i18n("Digits")); +SUBCATEGORY_2(0x1820, i18n("Basic letters")); +SUBCATEGORY_2(0x1843, i18n("Todo letters")); +SUBCATEGORY_2(0x185D, i18n("Sibe letters")); +SUBCATEGORY_2(0x1873, i18n("Manchu letters")); +SUBCATEGORY_2(0x1878, i18n("Buryat letter")); +SUBCATEGORY_2(0x1880, i18n("Extensions for Sanskrit and Tibetan")); + +category = i18n("Unified Canadian Aboriginal Syllabics Extended"); // 18B0 +SUBCATEGORY_2(0x18B0, i18n("Syllables for Moose Cree")); +SUBCATEGORY_2(0x18C6, i18n("Syllables for Cree and Ojibway")); +SUBCATEGORY_2(0x18D4, i18n("Finals for Cree and Ojibway")); +SUBCATEGORY_2(0x18E0, i18n("Syllables for Beaver Dene, Hare Dene, and Chipewyan Dene")); +SUBCATEGORY_2(0x18F3, i18n("Finals for Dene and Carrier")); + +category = i18n("Limbu"); // 1900 +SUBCATEGORY_2(0x1900, i18n("Consonants")); +SUBCATEGORY_2(0x1920, i18n("Dependent vowel signs")); +SUBCATEGORY_2(0x1929, i18n("Subjoined consonants")); +SUBCATEGORY_2(0x1930, i18n("Final consonants")); +SUBCATEGORY_2(0x1939, i18n("Various signs")); +SUBCATEGORY_2(0x1946, i18n("Digits")); + +category = i18n("Tai Le"); // 1950 +SUBCATEGORY_2(0x1950, i18n("Consonants")); +SUBCATEGORY_2(0x1963, i18n("Vowels")); +SUBCATEGORY_2(0x1970, i18n("Tone letters")); + +category = i18n("New Tai Lue"); // 1980 +SUBCATEGORY_2(0x1980, i18n("Consonants")); +SUBCATEGORY_2(0x19B0, i18n("Vowels")); +SUBCATEGORY_2(0x19C1, i18n("Final consonants")); +SUBCATEGORY_2(0x19C8, i18n("Tone marks")); +SUBCATEGORY_2(0x19D0, i18n("Digits")); +SUBCATEGORY_2(0x19DE, i18n("Various signs")); + +category = i18n("Khmer Symbols"); // 19E0 +SUBCATEGORY_2(0x19E0, i18n("Lunar date symbols")); + +category = i18n("Buginese"); // 1A00 +SUBCATEGORY_2(0x1A00, i18n("Consonants")); +SUBCATEGORY_2(0x1A17, i18n("Vowels")); +SUBCATEGORY_2(0x1A1E, i18n("Various signs")); + +category = i18n("Tai Tham"); // 1A20 +SUBCATEGORY_2(0x1A20, i18n("Consonants")); +SUBCATEGORY_2(0x1A4D, i18n("Independent vowels")); +SUBCATEGORY_2(0x1A53, i18n("Consonants")); +SUBCATEGORY_2(0x1A55, i18n("Consonant signs")); +SUBCATEGORY_2(0x1A60, i18n("Sign")); +SUBCATEGORY_2(0x1A61, i18n("Dependent vowel signs")); +SUBCATEGORY_2(0x1A75, i18n("Tone marks")); +SUBCATEGORY_2(0x1A7A, i18n("Other marks")); +SUBCATEGORY_2(0x1A7F, i18n("Cryptogrammic mark")); +SUBCATEGORY_2(0x1A80, i18n("Hora digits")); +SUBCATEGORY_2(0x1A90, i18n("Tham digits")); +SUBCATEGORY_2(0x1AA0, i18n("Logographs")); +SUBCATEGORY_2(0x1AA3, i18n("Punctuation")); +SUBCATEGORY_2(0x1AA7, i18n("Sign")); +SUBCATEGORY_2(0x1AA8, i18n("Punctuation")); + +category = i18n("Combining Diacritical Marks Extended"); // 1AB0 +SUBCATEGORY_2(0x1AB0, i18n("Used in German dialectology")); +SUBCATEGORY_2(0x1ABB, i18n("Marks surrounding other diacritics or letters")); +SUBCATEGORY_2(0x1ABF, i18n("Used in Scots dialectology")); +SUBCATEGORY_2(0x1AC1, i18n("Marks next to or surrounding other diacritics")); +SUBCATEGORY_2(0x1AC6, i18n("Phonetic sign")); +SUBCATEGORY_2(0x1AC7, i18n("Used in extended IPA")); +SUBCATEGORY_2(0x1ACB, i18n("Used in Middle English Ormulum")); +SUBCATEGORY_2(0x1ACF, i18n("Compound tone diacritics")); +SUBCATEGORY_2(0x1AD9, i18n("J.P. Harrington diacritics")); +SUBCATEGORY_2(0x1AE0, i18n("IPA positional variants")); +SUBCATEGORY_2(0x1AE6, i18n("Historical IPA")); +SUBCATEGORY_2(0x1AE8, i18n("Extended IPA positional variants")); + +category = i18n("Balinese"); // 1B00 +SUBCATEGORY_2(0x1B00, i18n("Various signs")); +SUBCATEGORY_2(0x1B05, i18n("Independent vowels")); +SUBCATEGORY_2(0x1B13, i18n("Consonants")); +SUBCATEGORY_2(0x1B34, i18n("Sign")); +SUBCATEGORY_2(0x1B35, i18n("Dependent vowel signs")); +SUBCATEGORY_2(0x1B44, i18n("Sign")); +SUBCATEGORY_2(0x1B45, i18n("Additional consonants")); +SUBCATEGORY_2(0x1B4E, i18n("Punctuation")); +SUBCATEGORY_2(0x1B50, i18n("Digits")); +SUBCATEGORY_2(0x1B5A, i18n("Punctuation")); +SUBCATEGORY_2(0x1B61, i18n("Musical symbols for notes")); +SUBCATEGORY_2(0x1B6B, i18n("Diacritical marks for musical symbols")); +SUBCATEGORY_2(0x1B74, i18n("Musical symbols")); +SUBCATEGORY_2(0x1B7D, i18n("Punctuation")); + +category = i18n("Sundanese"); // 1B80 +SUBCATEGORY_2(0x1B80, i18n("Various signs")); +SUBCATEGORY_2(0x1B83, i18n("Vowels")); +SUBCATEGORY_2(0x1B8A, i18n("Consonants")); +SUBCATEGORY_2(0x1BA1, i18n("Consonant signs")); +SUBCATEGORY_2(0x1BA4, i18n("Vowel signs")); +SUBCATEGORY_2(0x1BAA, i18n("Viramas")); +SUBCATEGORY_2(0x1BAC, i18n("Consonant signs")); +SUBCATEGORY_2(0x1BAE, i18n("Additional consonants")); +SUBCATEGORY_2(0x1BB0, i18n("Digits")); +SUBCATEGORY_2(0x1BBA, i18n("Sign")); +SUBCATEGORY_2(0x1BBB, i18n("Historic letters")); + +category = i18n("Batak"); // 1BC0 +SUBCATEGORY_2(0x1BC0, i18n("Letters")); +SUBCATEGORY_2(0x1BE6, i18n("Sign")); +SUBCATEGORY_2(0x1BE7, i18n("Dependent vowel signs")); +SUBCATEGORY_2(0x1BF0, i18n("Dependent consonant signs")); +SUBCATEGORY_2(0x1BF2, i18n("Signs")); +SUBCATEGORY_2(0x1BFC, i18n("Punctuation")); + +category = i18n("Lepcha"); // 1C00 +SUBCATEGORY_2(0x1C00, i18n("Consonants")); +SUBCATEGORY_2(0x1C24, i18n("Subjoined consonants")); +SUBCATEGORY_2(0x1C26, i18n("Dependent vowels")); +SUBCATEGORY_2(0x1C2D, i18n("Consonant signs")); +SUBCATEGORY_2(0x1C36, i18n("Various signs")); +SUBCATEGORY_2(0x1C3B, i18n("Punctuation")); +SUBCATEGORY_2(0x1C40, i18n("Digits")); +SUBCATEGORY_2(0x1C4D, i18n("Additional letters")); + +category = i18n("Ol Chiki"); // 1C50 +SUBCATEGORY_2(0x1C50, i18n("Digits")); +SUBCATEGORY_2(0x1C5A, i18n("Letters")); +SUBCATEGORY_2(0x1C78, i18n("Modifier letters")); +SUBCATEGORY_2(0x1C7E, i18n("Punctuation")); + +category = i18n("Cyrillic Extended-C"); // 1C80 +SUBCATEGORY_2(0x1C80, i18n("Historic letter variants")); +SUBCATEGORY_2(0x1C89, i18n("Khanty letters")); + +category = i18n("Georgian Extended"); // 1C90 +SUBCATEGORY_2(0x1C90, i18n("Capital letters (Mtavruli)")); +SUBCATEGORY_2(0x1CB1, i18n("Archaic letters")); +SUBCATEGORY_2(0x1CB7, i18n("Additional letters for Mingrelian and Svan")); +SUBCATEGORY_2(0x1CB9, i18n("Additional letters")); +SUBCATEGORY_2(0x1CBD, i18n("Additional letters for Ossetian and Abkhaz")); + +category = i18n("Sundanese Supplement"); // 1CC0 +SUBCATEGORY_2(0x1CC0, i18n("Punctuation")); + +category = i18n("Vedic Extensions"); // 1CD0 +SUBCATEGORY_2(0x1CD0, i18n("Tone marks for the Samaveda")); +SUBCATEGORY_2(0x1CD3, i18n("Breathing mark for the Samaveda")); +SUBCATEGORY_2(0x1CD4, i18n("Signs for Yajurvedic")); +SUBCATEGORY_2(0x1CDE, i18n("Tone marks for the Satapathabrahmana")); +SUBCATEGORY_2(0x1CE0, i18n("Tone mark for the Rigveda")); +SUBCATEGORY_2(0x1CE1, i18n("Tone mark for the Atharvaveda")); +SUBCATEGORY_2(0x1CE2, i18n("Diacritics for visarga")); +SUBCATEGORY_2(0x1CE9, i18n("Nasalization signs")); +SUBCATEGORY_2(0x1CF2, i18n("Ardhavisarga")); +SUBCATEGORY_2(0x1CF4, i18n("Sign for Yajurvedic")); +SUBCATEGORY_2(0x1CF5, i18n("Signs")); +SUBCATEGORY_2(0x1CF8, i18n("Signs for Jaiminiya Sama Veda")); +SUBCATEGORY_2(0x1CFA, i18n("Nasalization sign")); + +category = i18n("Phonetic Extensions"); // 1D00 +SUBCATEGORY_2(0x1D00, i18n("Latin letters")); +SUBCATEGORY_2(0x1D26, i18n("Greek letters")); +SUBCATEGORY_2(0x1D2B, i18n("Cyrillic letter")); +SUBCATEGORY_2(0x1D2C, i18n("Latin superscript modifier letters")); +SUBCATEGORY_2(0x1D5D, i18n("Greek superscript modifier letters")); +SUBCATEGORY_2(0x1D62, i18n("Latin subscript modifier letters")); +SUBCATEGORY_2(0x1D66, i18n("Greek subscript modifier letters")); +SUBCATEGORY_2(0x1D6B, i18n("Latin letter for American lexicography")); +SUBCATEGORY_2(0x1D6C, i18n("Latin letters with middle tilde")); +SUBCATEGORY_2(0x1D77, i18n("Letters for Caucasian linguistics")); +SUBCATEGORY_2(0x1D79, i18n("Other phonetic symbols")); + +category = i18n("Phonetic Extensions Supplement"); // 1D80 +SUBCATEGORY_2(0x1D80, i18n("Latin letters with palatal hook")); +SUBCATEGORY_2(0x1D8F, i18n("Latin letters with retroflex hook")); +SUBCATEGORY_2(0x1D9B, i18n("Modifier letters")); + +category = i18n("Combining Diacritical Marks Supplement"); // 1DC0 +SUBCATEGORY_2(0x1DC0, i18n("Used for Ancient Greek")); +SUBCATEGORY_2(0x1DC2, i18n("Miscellaneous marks")); +SUBCATEGORY_2(0x1DC4, i18n("Contour tone marks")); +SUBCATEGORY_2(0x1DCA, i18n("Miscellaneous mark")); +SUBCATEGORY_2(0x1DCB, i18n("Contour tone marks")); +SUBCATEGORY_2(0x1DCD, i18n("Double diacritic")); +SUBCATEGORY_2(0x1DCE, i18n("Medievalist additions")); +SUBCATEGORY_2(0x1DD3, i18n("Medieval superscript letter diacritics")); +SUBCATEGORY_2(0x1DE7, i18n("Superscript letter diacritics for German dialectology")); +SUBCATEGORY_2(0x1DF5, i18n("Diacritic for American lexicography")); +SUBCATEGORY_2(0x1DF6, i18n("Typicon marks")); +SUBCATEGORY_2(0x1DF8, i18n("Miscellaneous marks")); +SUBCATEGORY_2(0x1DFC, i18n("Double diacritic mark for UPA")); +SUBCATEGORY_2(0x1DFD, i18n("Miscellaneous mark")); +SUBCATEGORY_2(0x1DFE, i18n("Additional marks for UPA")); + +category = i18n("Latin Extended Additional"); // 1E00 +SUBCATEGORY_2(0x1E00, i18n("Latin general use extensions")); +SUBCATEGORY_2(0x1E9C, i18n("Medievalist additions")); +SUBCATEGORY_2(0x1E9E, i18n("Addition for German typography")); +SUBCATEGORY_2(0x1E9F, i18n("Medievalist addition")); +SUBCATEGORY_2(0x1EA0, i18n("Latin extensions for Vietnamese")); +SUBCATEGORY_2(0x1EF2, i18n("Latin general extensions")); +SUBCATEGORY_2(0x1EFA, i18n("Medievalist additions")); + +category = i18n("Greek Extended"); // 1F00 +SUBCATEGORY_2(0x1F00, i18n("Precomposed polytonic Greek")); + +category = i18n("General Punctuation"); // 2000 +SUBCATEGORY_2(0x2000, i18n("Spaces")); +SUBCATEGORY_2(0x200B, i18n("Format characters")); +SUBCATEGORY_2(0x2010, i18n("Dashes")); +SUBCATEGORY_2(0x2016, i18n("General punctuation")); +SUBCATEGORY_2(0x2018, i18n("Quotation marks and apostrophe")); +SUBCATEGORY_2(0x2020, i18n("General punctuation")); +SUBCATEGORY_2(0x2028, i18n("Separators")); +SUBCATEGORY_2(0x202A, i18n("Format characters")); +SUBCATEGORY_2(0x202F, i18n("Space")); +SUBCATEGORY_2(0x2030, i18n("General punctuation")); +SUBCATEGORY_2(0x2039, i18n("Quotation marks")); +SUBCATEGORY_2(0x203B, i18n("General punctuation")); +SUBCATEGORY_2(0x203C, i18n("Double punctuation for vertical text")); +SUBCATEGORY_2(0x203D, i18n("General punctuation")); +SUBCATEGORY_2(0x2045, i18n("Brackets")); +SUBCATEGORY_2(0x2047, i18n("Double punctuation for vertical text")); +SUBCATEGORY_2(0x204A, i18n("General punctuation")); +SUBCATEGORY_2(0x2056, i18n("Archaic punctuation")); +SUBCATEGORY_2(0x2057, i18n("General punctuation")); +SUBCATEGORY_2(0x2058, i18n("Archaic punctuation")); +SUBCATEGORY_2(0x205F, i18n("Space")); +SUBCATEGORY_2(0x2060, i18n("Format character")); +SUBCATEGORY_2(0x2061, i18n("Invisible operators")); +SUBCATEGORY_2(0x2066, i18n("Format characters")); +SUBCATEGORY_2(0x206A, i18n("Deprecated")); + +category = i18n("Superscripts and Subscripts"); // 2070 +SUBCATEGORY_2(0x2070, i18n("Superscripts")); +SUBCATEGORY_2(0x2080, i18n("Subscripts")); +SUBCATEGORY_2(0x2095, i18n("Subscripts for UPA")); + +category = i18n("Currency Symbols"); // 20A0 +SUBCATEGORY_2(0x20A0, i18n("Currency symbols")); + +category = i18n("Combining Diacritical Marks for Symbols"); // 20D0 +SUBCATEGORY_2(0x20D0, i18n("Combining diacritical marks for symbols")); +SUBCATEGORY_2(0x20DD, i18n("Enclosing diacritics")); +SUBCATEGORY_2(0x20E1, i18n("Additional diacritical mark for symbols")); +SUBCATEGORY_2(0x20E2, i18n("Additional enclosing diacritics")); +SUBCATEGORY_2(0x20E5, i18n("Additional diacritical marks for symbols")); + +category = i18n("Letterlike Symbols"); // 2100 +SUBCATEGORY_2(0x2100, i18n("Letterlike symbols")); +SUBCATEGORY_2(0x2135, i18n("Hebrew letterlike math symbols")); +SUBCATEGORY_2(0x2139, i18n("Additional letterlike symbols")); +SUBCATEGORY_2(0x2140, i18n("Double-struck large operator")); +SUBCATEGORY_2(0x2141, i18n("Additional letterlike symbols")); +SUBCATEGORY_2(0x2145, i18n("Double-struck italic math symbols")); +SUBCATEGORY_2(0x214A, i18n("Additional letterlike symbols")); +SUBCATEGORY_2(0x214E, i18n("Lowercase Claudian letter")); +SUBCATEGORY_2(0x214F, i18n("Biblical editorial symbol")); + +category = i18n("Number Forms"); // 2150 +SUBCATEGORY_2(0x2150, i18n("Fractions")); +SUBCATEGORY_2(0x2160, i18n("Roman numerals")); +SUBCATEGORY_2(0x2180, i18n("Archaic Roman numerals")); +SUBCATEGORY_2(0x2184, i18n("Lowercase Claudian letter")); +SUBCATEGORY_2(0x2185, i18n("Archaic Roman numerals")); +SUBCATEGORY_2(0x2189, i18n("Fraction")); +SUBCATEGORY_2(0x218A, i18n("Turned digits")); + +category = i18n("Arrows"); // 2190 +SUBCATEGORY_2(0x2190, i18n("Simple arrows")); +SUBCATEGORY_2(0x219A, i18n("Arrows with modifications")); +SUBCATEGORY_2(0x21B0, i18n("Arrows with bent tips")); +SUBCATEGORY_2(0x21B4, i18n("Keyboard symbols and circle arrows")); +SUBCATEGORY_2(0x21BC, i18n("Harpoons")); +SUBCATEGORY_2(0x21C4, i18n("Paired arrows and harpoons")); +SUBCATEGORY_2(0x21CD, i18n("Double arrows")); +SUBCATEGORY_2(0x21DA, i18n("Miscellaneous arrows and keyboard symbols")); +SUBCATEGORY_2(0x21E6, i18n("White arrows and keyboard symbols")); +SUBCATEGORY_2(0x21F4, i18n("Miscellaneous arrows")); + +category = i18n("Mathematical Operators"); // 2200 +SUBCATEGORY_2(0x2200, i18n("Miscellaneous mathematical symbols")); +SUBCATEGORY_2(0x2208, i18n("Set membership")); +SUBCATEGORY_2(0x220E, i18n("Miscellaneous mathematical symbol")); +SUBCATEGORY_2(0x220F, i18n("N-ary operators")); +SUBCATEGORY_2(0x2212, i18n("Operators")); +SUBCATEGORY_2(0x221E, i18n("Miscellaneous mathematical symbol")); +SUBCATEGORY_2(0x221F, i18n("Angles")); +SUBCATEGORY_2(0x2223, i18n("Relations")); +SUBCATEGORY_2(0x2227, i18n("Logical and set operators")); +SUBCATEGORY_2(0x222B, i18n("Integrals")); +SUBCATEGORY_2(0x2234, i18n("Miscellaneous mathematical symbols")); +SUBCATEGORY_2(0x2236, i18n("Relations")); +SUBCATEGORY_2(0x2238, i18n("Operator")); +SUBCATEGORY_2(0x2239, i18n("Relation")); +SUBCATEGORY_2(0x223A, i18n("Operator")); +SUBCATEGORY_2(0x223B, i18n("Relations")); +SUBCATEGORY_2(0x223F, i18n("Miscellaneous mathematical symbol")); +SUBCATEGORY_2(0x2240, i18n("Operator")); +SUBCATEGORY_2(0x2241, i18n("Relations")); +SUBCATEGORY_2(0x228C, i18n("Operators")); +SUBCATEGORY_2(0x228F, i18n("Relations")); +SUBCATEGORY_2(0x2293, i18n("Operators")); +SUBCATEGORY_2(0x22A4, i18n("Miscellaneous mathematical symbols")); +SUBCATEGORY_2(0x22A6, i18n("Relations")); +SUBCATEGORY_2(0x22BA, i18n("Operators")); +SUBCATEGORY_2(0x22BE, i18n("Miscellaneous mathematical symbols")); +SUBCATEGORY_2(0x22C0, i18n("N-ary operators")); +SUBCATEGORY_2(0x22C4, i18n("Operators")); +SUBCATEGORY_2(0x22C8, i18n("Relation")); +SUBCATEGORY_2(0x22C9, i18n("Operators")); +SUBCATEGORY_2(0x22CD, i18n("Relation")); +SUBCATEGORY_2(0x22CE, i18n("Logical operators")); +SUBCATEGORY_2(0x22D0, i18n("Relations")); +SUBCATEGORY_2(0x22D2, i18n("Operators")); +SUBCATEGORY_2(0x22D4, i18n("Relations")); +SUBCATEGORY_2(0x22EE, i18n("Matrix ellipses")); +SUBCATEGORY_2(0x22F2, i18n("Relations")); + +category = i18n("Miscellaneous Technical"); // 2300 +SUBCATEGORY_2(0x2300, i18n("Miscellaneous technical")); +SUBCATEGORY_2(0x2308, i18n("Ceilings and floors")); +SUBCATEGORY_2(0x230C, i18n("Crops")); +SUBCATEGORY_2(0x2310, i18n("Miscellaneous technical")); +SUBCATEGORY_2(0x231A, i18n("User interface symbols")); +SUBCATEGORY_2(0x231C, i18n("Quine corners")); +SUBCATEGORY_2(0x2320, i18n("Integral pieces")); +SUBCATEGORY_2(0x2322, i18n("Frown and smile")); +SUBCATEGORY_2(0x2324, i18n("Keyboard symbols")); +SUBCATEGORY_2(0x2329, i18n("Deprecated angle brackets")); +SUBCATEGORY_2(0x232B, i18n("Keyboard symbol")); +SUBCATEGORY_2(0x232C, i18n("Chemistry symbol")); +SUBCATEGORY_2(0x232D, i18n("Drafting symbols")); +SUBCATEGORY_2(0x2336, i18n("APL")); +SUBCATEGORY_2(0x237B, i18n("Graphics for control codes")); +SUBCATEGORY_2(0x237C, i18n("Miscellaneous technical")); +SUBCATEGORY_2(0x237D, i18n("Graphics for control codes")); +SUBCATEGORY_2(0x2380, i18n("Keyboard symbols from ISO 9995-7")); +SUBCATEGORY_2(0x238D, i18n("Electrotechnical symbols from IR 181")); +SUBCATEGORY_2(0x2395, i18n("APL")); +SUBCATEGORY_2(0x2396, i18n("Keyboard symbols from ISO 9995-7")); +SUBCATEGORY_2(0x239B, i18n("Bracket pieces")); +SUBCATEGORY_2(0x23AE, i18n("Special character extensions")); +SUBCATEGORY_2(0x23B0, i18n("Bracket pieces")); +SUBCATEGORY_2(0x23B2, i18n("Summation sign parts")); +SUBCATEGORY_2(0x23B4, i18n("Horizontal brackets")); +SUBCATEGORY_2(0x23B7, i18n("Terminal graphic characters")); +SUBCATEGORY_2(0x23BA, i18n("Scan lines for terminal graphics")); +SUBCATEGORY_2(0x23BE, i18n("Dentistry notation symbols")); +SUBCATEGORY_2(0x23CD, i18n("Miscellaneous technical")); +SUBCATEGORY_2(0x23CE, i18n("Keyboard and UI symbols")); +SUBCATEGORY_2(0x23D0, i18n("Special character extension")); +SUBCATEGORY_2(0x23D1, i18n("Metrical symbols")); +SUBCATEGORY_2(0x23DA, i18n("Electrotechnical symbols")); +SUBCATEGORY_2(0x23DC, i18n("Horizontal brackets")); +SUBCATEGORY_2(0x23E2, i18n("Miscellaneous technical")); +SUBCATEGORY_2(0x23E3, i18n("Chemistry symbol")); +SUBCATEGORY_2(0x23E4, i18n("Miscellaneous technical")); +SUBCATEGORY_2(0x23E9, i18n("User interface symbols")); +SUBCATEGORY_2(0x23FB, i18n("Power symbols from ISO 7000:2012")); +SUBCATEGORY_2(0x23FE, i18n("Power symbol from IEEE 1621-2004")); +SUBCATEGORY_2(0x23FF, i18n("Miscellaneous symbol")); + +category = i18n("Control Pictures"); // 2400 +SUBCATEGORY_2(0x2400, i18n("Graphic pictures for control codes")); +SUBCATEGORY_2(0x2422, i18n("Specific symbols for space")); +SUBCATEGORY_2(0x2424, i18n("Graphic picture for control code")); +SUBCATEGORY_2(0x2425, i18n("Keyboard symbol")); +SUBCATEGORY_2(0x2426, i18n("Specific symbol for control code")); +SUBCATEGORY_2(0x2427, i18n("Legacy computer symbols for delete")); + +category = i18n("Optical Character Recognition"); // 2440 +SUBCATEGORY_2(0x2440, i18n("OCR-A")); +SUBCATEGORY_2(0x2446, i18n("MICR")); +SUBCATEGORY_2(0x244A, i18n("OCR")); + +category = i18n("Enclosed Alphanumerics"); // 2460 +SUBCATEGORY_2(0x2460, i18n("Circled numbers")); +SUBCATEGORY_2(0x2474, i18n("Parenthesized numbers")); +SUBCATEGORY_2(0x2488, i18n("Numbers period")); +SUBCATEGORY_2(0x249C, i18n("Parenthesized Latin letters")); +SUBCATEGORY_2(0x24B6, i18n("Circled Latin letters")); +SUBCATEGORY_2(0x24EA, i18n("Additional circled number")); +SUBCATEGORY_2(0x24EB, i18n("White on black circled numbers")); +SUBCATEGORY_2(0x24F5, i18n("Double circled numbers")); +SUBCATEGORY_2(0x24FF, i18n("Additional white on black circled number")); + +category = i18n("Box Drawing"); // 2500 +SUBCATEGORY_2(0x2500, i18n("Light and heavy solid lines")); +SUBCATEGORY_2(0x2504, i18n("Light and heavy dashed lines")); +SUBCATEGORY_2(0x250C, i18n("Light and heavy line box components")); +SUBCATEGORY_2(0x254C, i18n("Light and heavy dashed lines")); +SUBCATEGORY_2(0x2550, i18n("Double lines")); +SUBCATEGORY_2(0x2552, i18n("Light and double line box components")); +SUBCATEGORY_2(0x256D, i18n("Character cell arcs")); +SUBCATEGORY_2(0x2571, i18n("Character cell diagonals")); +SUBCATEGORY_2(0x2574, i18n("Light and heavy half lines")); +SUBCATEGORY_2(0x257C, i18n("Mixed light and heavy lines")); + +category = i18n("Block Elements"); // 2580 +SUBCATEGORY_2(0x2580, i18n("Block elements")); +SUBCATEGORY_2(0x2591, i18n("Shade characters")); +SUBCATEGORY_2(0x2594, i18n("Block elements")); +SUBCATEGORY_2(0x2596, i18n("Terminal graphic characters")); + +category = i18n("Geometric Shapes"); // 25A0 +SUBCATEGORY_2(0x25A0, i18n("Geometric shapes")); +SUBCATEGORY_2(0x25F0, i18n("Control code graphics")); +SUBCATEGORY_2(0x25F8, i18n("Geometric shapes")); + +category = i18n("Miscellaneous Symbols"); // 2600 +SUBCATEGORY_2(0x2600, i18n("Weather and astrological symbols")); +SUBCATEGORY_2(0x260E, i18n("Miscellaneous symbols")); +SUBCATEGORY_2(0x2614, i18n("Weather symbol")); +SUBCATEGORY_2(0x2615, i18n("Miscellaneous symbol")); +SUBCATEGORY_2(0x2616, i18n("Japanese chess symbols")); +SUBCATEGORY_2(0x2618, i18n("Miscellaneous symbols")); +SUBCATEGORY_2(0x261A, i18n("Pointing hand symbols")); +SUBCATEGORY_2(0x2620, i18n("Warning signs")); +SUBCATEGORY_2(0x2624, i18n("Medical and healing symbols")); +SUBCATEGORY_2(0x2626, i18n("Religious and political symbols")); +SUBCATEGORY_2(0x2630, i18n("Yijing trigram symbols")); +SUBCATEGORY_2(0x2638, i18n("Miscellaneous symbol")); +SUBCATEGORY_2(0x2639, i18n("Emoticons")); +SUBCATEGORY_2(0x263C, i18n("Miscellaneous symbol")); +SUBCATEGORY_2(0x263D, i18n("Astrological symbols")); +SUBCATEGORY_2(0x2648, i18n("Zodiacal symbols")); +SUBCATEGORY_2(0x2654, i18n("Chess symbols")); +SUBCATEGORY_2(0x2660, i18n("Playing card symbols")); +SUBCATEGORY_2(0x2668, i18n("Miscellaneous symbol")); +SUBCATEGORY_2(0x2669, i18n("Musical symbols")); +SUBCATEGORY_2(0x2670, i18n("Syriac cross symbols")); +SUBCATEGORY_2(0x2672, i18n("Recycling symbols")); +SUBCATEGORY_2(0x267E, i18n("Miscellaneous symbols")); +SUBCATEGORY_2(0x2680, i18n("Dice")); +SUBCATEGORY_2(0x2686, i18n("Go markers")); +SUBCATEGORY_2(0x268A, i18n("Yijing monogram and digram symbols")); +SUBCATEGORY_2(0x2690, i18n("Dictionary and map symbols")); +SUBCATEGORY_2(0x269C, i18n("Miscellaneous symbols")); +SUBCATEGORY_2(0x269E, i18n("Symbols for closed captioning from ARIB STD B24")); +SUBCATEGORY_2(0x26A0, i18n("Miscellaneous symbols")); +SUBCATEGORY_2(0x26A2, i18n("Gender symbols")); +SUBCATEGORY_2(0x26AA, i18n("Circles")); +SUBCATEGORY_2(0x26AD, i18n("Genealogical symbols")); +SUBCATEGORY_2(0x26B2, i18n("Gender symbol")); +SUBCATEGORY_2(0x26B3, i18n("Astrological signs")); +SUBCATEGORY_2(0x26B9, i18n("Astrological aspects")); +SUBCATEGORY_2(0x26BD, i18n("Sport symbols")); +SUBCATEGORY_2(0x26BF, i18n("Miscellaneous symbol from ARIB STD B24")); +SUBCATEGORY_2(0x26C0, i18n("Symbols for draughts and checkers")); +SUBCATEGORY_2(0x26C4, i18n("Weather symbols from ARIB STD B24")); +SUBCATEGORY_2(0x26C9, i18n("Game symbols from ARIB STD B24")); +SUBCATEGORY_2(0x26CC, i18n("Traffic signs from ARIB STD B24")); +SUBCATEGORY_2(0x26CE, i18n("Zodiacal symbol")); +SUBCATEGORY_2(0x26CF, i18n("Traffic signs from ARIB STD B24")); +SUBCATEGORY_2(0x26E2, i18n("Astronomical symbol")); +SUBCATEGORY_2(0x26E3, i18n("Map symbol from ARIB STD B24")); +SUBCATEGORY_2(0x26E4, i18n("Pentagram symbols")); +SUBCATEGORY_2(0x26E8, i18n("Map symbols from ARIB STD B24")); + +category = i18n("Dingbats"); // 2700 +SUBCATEGORY_2(0x2700, i18n("Miscellaneous")); +SUBCATEGORY_2(0x2719, i18n("Crosses")); +SUBCATEGORY_2(0x2721, i18n("Stars and asterisks")); +SUBCATEGORY_2(0x273E, i18n("Fleurons")); +SUBCATEGORY_2(0x2742, i18n("Stars, asterisks and snowflakes")); +SUBCATEGORY_2(0x274C, i18n("Miscellaneous")); +SUBCATEGORY_2(0x275B, i18n("Punctuation mark ornaments")); +SUBCATEGORY_2(0x2766, i18n("Fleurons")); +SUBCATEGORY_2(0x2768, i18n("Ornamental brackets")); +SUBCATEGORY_2(0x2776, i18n("Dingbat circled digits")); +SUBCATEGORY_2(0x2794, i18n("Dingbat arrow")); +SUBCATEGORY_2(0x2795, i18n("Heavy variants of arithmetic symbols")); +SUBCATEGORY_2(0x2798, i18n("Dingbat arrows")); +SUBCATEGORY_2(0x27B0, i18n("Miscellaneous")); +SUBCATEGORY_2(0x27B1, i18n("Dingbat arrows")); +SUBCATEGORY_2(0x27BF, i18n("Miscellaneous")); + +category = i18n("Miscellaneous Mathematical Symbols-A"); // 27C0 +SUBCATEGORY_2(0x27C0, i18n("Miscellaneous symbols")); +SUBCATEGORY_2(0x27C5, i18n("Paired punctuation")); +SUBCATEGORY_2(0x27C7, i18n("Operator")); +SUBCATEGORY_2(0x27C8, i18n("Miscellaneous symbols")); +SUBCATEGORY_2(0x27CA, i18n("Vertical line operator")); +SUBCATEGORY_2(0x27CB, i18n("Miscellaneous symbol")); +SUBCATEGORY_2(0x27CC, i18n("Division operator")); +SUBCATEGORY_2(0x27CD, i18n("Miscellaneous symbol")); +SUBCATEGORY_2(0x27CE, i18n("Operators")); +SUBCATEGORY_2(0x27D0, i18n("Miscellaneous symbol")); +SUBCATEGORY_2(0x27D1, i18n("Operators")); +SUBCATEGORY_2(0x27D5, i18n("Database theory operators")); +SUBCATEGORY_2(0x27D8, i18n("Tacks and turnstiles")); +SUBCATEGORY_2(0x27E0, i18n("Modal logic operators")); +SUBCATEGORY_2(0x27E6, i18n("Mathematical brackets")); + +category = i18n("Supplemental Arrows-A"); // 27F0 +SUBCATEGORY_2(0x27F0, i18n("Arrows")); +SUBCATEGORY_2(0x27F5, i18n("Long arrows")); + +category = i18n("Braille Patterns"); // 2800 +SUBCATEGORY_2(0x2800, i18n("Braille patterns")); + +category = i18n("Supplemental Arrows-B"); // 2900 +SUBCATEGORY_2(0x2900, i18n("Miscellaneous arrows")); +SUBCATEGORY_2(0x2919, i18n("Arrow tails")); +SUBCATEGORY_2(0x291D, i18n("Miscellaneous arrows")); +SUBCATEGORY_2(0x2927, i18n("Crossing arrows for knot theory")); +SUBCATEGORY_2(0x2933, i18n("Miscellaneous curved arrows")); +SUBCATEGORY_2(0x2942, i18n("Arrows combined with operators")); +SUBCATEGORY_2(0x294A, i18n("Double-barbed harpoons")); +SUBCATEGORY_2(0x2952, i18n("Modified harpoons")); +SUBCATEGORY_2(0x2962, i18n("Paired harpoons")); +SUBCATEGORY_2(0x2970, i18n("Miscellaneous arrow")); +SUBCATEGORY_2(0x2971, i18n("Arrows combined with relations")); +SUBCATEGORY_2(0x297C, i18n("Fish tails")); + +category = i18n("Miscellaneous Mathematical Symbols-B"); // 2980 +SUBCATEGORY_2(0x2980, i18n("Miscellaneous mathematical symbols")); +SUBCATEGORY_2(0x2983, i18n("Brackets")); +SUBCATEGORY_2(0x298D, i18n("Brackets with ticks")); +SUBCATEGORY_2(0x2991, i18n("Brackets")); +SUBCATEGORY_2(0x2999, i18n("Fences")); +SUBCATEGORY_2(0x299B, i18n("Angles")); +SUBCATEGORY_2(0x29B0, i18n("Empty sets")); +SUBCATEGORY_2(0x29B5, i18n("Circle symbols")); +SUBCATEGORY_2(0x29C4, i18n("Square symbols")); +SUBCATEGORY_2(0x29CA, i18n("Triangle symbols")); +SUBCATEGORY_2(0x29D1, i18n("Bowtie symbols")); +SUBCATEGORY_2(0x29D8, i18n("Fences")); +SUBCATEGORY_2(0x29DC, i18n("Miscellaneous mathematical symbols")); +SUBCATEGORY_2(0x29E3, i18n("Relations")); +SUBCATEGORY_2(0x29E7, i18n("Miscellaneous mathematical symbols")); +SUBCATEGORY_2(0x29EE, i18n("Error bar symbols")); +SUBCATEGORY_2(0x29F4, i18n("Miscellaneous mathematical symbols")); +SUBCATEGORY_2(0x29F8, i18n("Large operators")); +SUBCATEGORY_2(0x29FA, i18n("Specialized plus sign operators")); +SUBCATEGORY_2(0x29FC, i18n("Brackets")); +SUBCATEGORY_2(0x29FE, i18n("Symbols used in game theory")); + +category = i18n("Supplemental Mathematical Operators"); // 2A00 +SUBCATEGORY_2(0x2A00, i18n("N-ary operators")); +SUBCATEGORY_2(0x2A0A, i18n("Summations and integrals")); +SUBCATEGORY_2(0x2A1D, i18n("Miscellaneous large operators")); +SUBCATEGORY_2(0x2A22, i18n("Plus and minus sign operators")); +SUBCATEGORY_2(0x2A2F, i18n("Multiplication and division sign operators")); +SUBCATEGORY_2(0x2A39, i18n("Miscellaneous mathematical operators")); +SUBCATEGORY_2(0x2A40, i18n("Intersections and unions")); +SUBCATEGORY_2(0x2A51, i18n("Logical ands and ors")); +SUBCATEGORY_2(0x2A64, i18n("Miscellaneous mathematical operators")); +SUBCATEGORY_2(0x2A66, i18n("Relational operators")); +SUBCATEGORY_2(0x2ABD, i18n("Subset and superset relations")); +SUBCATEGORY_2(0x2AD9, i18n("Forks")); +SUBCATEGORY_2(0x2ADE, i18n("Tacks and turnstiles")); +SUBCATEGORY_2(0x2AEE, i18n("Vertical line operators")); +SUBCATEGORY_2(0x2AF6, i18n("Miscellaneous mathematical operator")); +SUBCATEGORY_2(0x2AF7, i18n("Relations")); +SUBCATEGORY_2(0x2AFC, i18n("Operators")); + +category = i18n("Miscellaneous Symbols and Arrows"); // 2B00 +SUBCATEGORY_2(0x2B00, i18n("White and black arrows")); +SUBCATEGORY_2(0x2B0E, i18n("Arrows with bent tips")); +SUBCATEGORY_2(0x2B12, i18n("Squares")); +SUBCATEGORY_2(0x2B16, i18n("Diamonds")); +SUBCATEGORY_2(0x2B1A, i18n("Squares")); +SUBCATEGORY_2(0x2B1F, i18n("Pentagons")); +SUBCATEGORY_2(0x2B21, i18n("Hexagons")); +SUBCATEGORY_2(0x2B24, i18n("Circle")); +SUBCATEGORY_2(0x2B25, i18n("Diamonds and lozenges")); +SUBCATEGORY_2(0x2B2C, i18n("Ellipses")); +SUBCATEGORY_2(0x2B30, i18n("Mathematical arrows")); +SUBCATEGORY_2(0x2B4D, i18n("Miscellaneous arrow")); +SUBCATEGORY_2(0x2B4E, i18n("Intonation marks for Lithuanian dialectology")); +SUBCATEGORY_2(0x2B50, i18n("Stars")); +SUBCATEGORY_2(0x2B53, i18n("Pentagons")); +SUBCATEGORY_2(0x2B55, i18n("Traffic sign from ARIB STD B24")); +SUBCATEGORY_2(0x2B56, i18n("Dictionary and map symbols from ARIB STD B24")); +SUBCATEGORY_2(0x2B5A, i18n("Intonation marks for Lithuanian dialectology")); +SUBCATEGORY_2(0x2B60, i18n("Triangle-headed arrows")); +SUBCATEGORY_2(0x2B7E, i18n("Keyboard symbols")); +SUBCATEGORY_2(0x2B80, i18n("Paired triangle-headed arrows")); +SUBCATEGORY_2(0x2B88, i18n("Circled arrows")); +SUBCATEGORY_2(0x2B8C, i18n("Triangle-headed u-shaped arrows")); +SUBCATEGORY_2(0x2B90, i18n("Keyboard symbols")); +SUBCATEGORY_2(0x2B94, i18n("Miscellaneous arrow symbol")); +SUBCATEGORY_2(0x2B95, i18n("Black arrow")); +SUBCATEGORY_2(0x2B96, i18n("Symbol used in chess notation")); +SUBCATEGORY_2(0x2B97, i18n("Miscellaneous symbol")); +SUBCATEGORY_2(0x2B98, i18n("Arrowheads")); +SUBCATEGORY_2(0x2BA0, i18n("Triangle-headed arrows with bent tips")); +SUBCATEGORY_2(0x2BA8, i18n("Black curved arrows")); +SUBCATEGORY_2(0x2BB0, i18n("Ribbon arrows")); +SUBCATEGORY_2(0x2BB8, i18n("Keyboard symbols")); +SUBCATEGORY_2(0x2BBA, i18n("Symbols used in chess notation")); +SUBCATEGORY_2(0x2BBD, i18n("Geometric symbols")); +SUBCATEGORY_2(0x2BC0, i18n("Centred geometric shapes")); +SUBCATEGORY_2(0x2BC9, i18n("Astronomical symbol")); +SUBCATEGORY_2(0x2BCA, i18n("Half circles")); +SUBCATEGORY_2(0x2BCC, i18n("Cusp shapes")); +SUBCATEGORY_2(0x2BD0, i18n("Miscellaneous symbols")); +SUBCATEGORY_2(0x2BD3, i18n("Astrological symbols for Pluto")); +SUBCATEGORY_2(0x2BD7, i18n("Miscellaneous astrological symbols")); +SUBCATEGORY_2(0x2BE0, i18n("Uranian astrological symbols")); +SUBCATEGORY_2(0x2BE8, i18n("Half star characters")); +SUBCATEGORY_2(0x2BEC, i18n("Two-headed arrow symbols")); +SUBCATEGORY_2(0x2BF0, i18n("Astrological symbols for Eris and Sedna")); +SUBCATEGORY_2(0x2BF3, i18n("Russian astrological aspects")); +SUBCATEGORY_2(0x2BF9, i18n("Symbols used in chess notation")); +SUBCATEGORY_2(0x2BFF, i18n("Miscellaneous symbol")); + +category = i18n("Glagolitic"); // 2C00 +SUBCATEGORY_2(0x2C00, i18n("Capital letters")); +SUBCATEGORY_2(0x2C30, i18n("Small letters")); + +category = i18n("Latin Extended-C"); // 2C60 +SUBCATEGORY_2(0x2C60, i18n("Orthographic Latin additions")); +SUBCATEGORY_2(0x2C67, i18n("Additions for Uyghur")); +SUBCATEGORY_2(0x2C6D, i18n("Miscellaneous additions")); +SUBCATEGORY_2(0x2C75, i18n("Claudian letters")); +SUBCATEGORY_2(0x2C77, i18n("Additions for UPA")); +SUBCATEGORY_2(0x2C7E, i18n("Additions for Shona")); + +category = i18n("Coptic"); // 2C80 +SUBCATEGORY_2(0x2C80, i18n("Bohairic Coptic letters")); +SUBCATEGORY_2(0x2CB2, i18n("Old Coptic and dialect letters")); +SUBCATEGORY_2(0x2CDC, i18n("Old Nubian letters")); +SUBCATEGORY_2(0x2CE4, i18n("Symbols")); +SUBCATEGORY_2(0x2CEB, i18n("Cryptogrammic letters")); +SUBCATEGORY_2(0x2CEF, i18n("Combining marks")); +SUBCATEGORY_2(0x2CF2, i18n("Bohairic Coptic letters")); +SUBCATEGORY_2(0x2CF9, i18n("Old Nubian punctuation")); +SUBCATEGORY_2(0x2CFD, i18n("Numeric character")); +SUBCATEGORY_2(0x2CFE, i18n("Punctuation")); + +category = i18n("Georgian Supplement"); // 2D00 +SUBCATEGORY_2(0x2D00, i18n("Small letters (Khutsuri)")); +SUBCATEGORY_2(0x2D27, i18n("Additional letter")); +SUBCATEGORY_2(0x2D2D, i18n("Additional letter for Ossetian")); + +category = i18n("Tifinagh"); // 2D30 +SUBCATEGORY_2(0x2D30, i18n("Letters")); +SUBCATEGORY_2(0x2D6F, i18n("Modifier letter")); +SUBCATEGORY_2(0x2D70, i18n("Punctuation")); +SUBCATEGORY_2(0x2D7F, i18n("Sign")); + +category = i18n("Ethiopic Extended"); // 2D80 +SUBCATEGORY_2(0x2D80, i18n("Syllables for Me'en")); +SUBCATEGORY_2(0x2D93, i18n("Syllables for Blin")); +SUBCATEGORY_2(0x2DA0, i18n("Syllables for Bench")); +SUBCATEGORY_2(0x2DC0, i18n("Syllables for Gurage")); + +category = i18n("Cyrillic Extended-A"); // 2DE0 +SUBCATEGORY_2(0x2DE0, i18n("Old Church Slavonic combining letters")); + +category = i18n("Supplemental Punctuation"); // 2E00 +SUBCATEGORY_2(0x2E00, i18n("New Testament editorial symbols")); +SUBCATEGORY_2(0x2E0E, i18n("Ancient Greek textual symbols")); +SUBCATEGORY_2(0x2E17, i18n("Ancient Near-Eastern linguistic symbol")); +SUBCATEGORY_2(0x2E18, i18n("General punctuation")); +SUBCATEGORY_2(0x2E1A, i18n("Dictionary punctuation")); +SUBCATEGORY_2(0x2E1C, i18n("Brackets")); +SUBCATEGORY_2(0x2E1E, i18n("Dictionary punctuation")); +SUBCATEGORY_2(0x2E20, i18n("Brackets")); +SUBCATEGORY_2(0x2E22, i18n("Half brackets")); +SUBCATEGORY_2(0x2E26, i18n("Brackets")); +SUBCATEGORY_2(0x2E2A, i18n("Historic punctuation")); +SUBCATEGORY_2(0x2E32, i18n("Palaeotype transliteration symbol")); +SUBCATEGORY_2(0x2E33, i18n("Historic punctuation")); +SUBCATEGORY_2(0x2E35, i18n("Palaeotype transliteration symbols")); +SUBCATEGORY_2(0x2E3A, i18n("Dashes")); +SUBCATEGORY_2(0x2E3C, i18n("Alternate forms of punctuation")); +SUBCATEGORY_2(0x2E3F, i18n("Historic punctuation")); +SUBCATEGORY_2(0x2E40, i18n("Double hyphen")); +SUBCATEGORY_2(0x2E41, i18n("Reversed punctuation")); +SUBCATEGORY_2(0x2E43, i18n("Miscellaneous punctuation")); +SUBCATEGORY_2(0x2E45, i18n("Typicon punctuation")); +SUBCATEGORY_2(0x2E4A, i18n("Historic punctuation")); +SUBCATEGORY_2(0x2E55, i18n("Brackets")); +SUBCATEGORY_2(0x2E59, i18n("Parentheses top and bottom halves")); +SUBCATEGORY_2(0x2E5D, i18n("Oblique hyphen")); + +category = i18n("CJK Radicals Supplement"); // 2E80 +SUBCATEGORY_1(0x2E80); + +category = i18n("Kangxi Radicals"); // 2F00 +SUBCATEGORY_1(0x2F00); + +category = i18n("Ideographic Description Characters"); // 2FF0 +SUBCATEGORY_1(0x2FF0); + +category = i18n("CJK Symbols and Punctuation"); // 3000 +SUBCATEGORY_2(0x3000, i18n("CJK symbols and punctuation")); +SUBCATEGORY_2(0x3008, i18n("CJK angle brackets")); +SUBCATEGORY_2(0x300C, i18n("CJK corner brackets")); +SUBCATEGORY_2(0x3010, i18n("CJK brackets")); +SUBCATEGORY_2(0x3012, i18n("CJK symbols")); +SUBCATEGORY_2(0x3014, i18n("CJK brackets")); +SUBCATEGORY_2(0x301C, i18n("CJK punctuation")); +SUBCATEGORY_2(0x3020, i18n("CJK symbol")); +SUBCATEGORY_2(0x3021, i18n("Suzhou numerals")); +SUBCATEGORY_2(0x302A, i18n("Combining tone marks")); +SUBCATEGORY_2(0x3030, i18n("Other CJK punctuation")); +SUBCATEGORY_2(0x3031, i18n("Kana repeat marks")); +SUBCATEGORY_2(0x3036, i18n("Other CJK symbols")); +SUBCATEGORY_2(0x3038, i18n("Additional Suzhou numerals")); +SUBCATEGORY_2(0x303B, i18n("Other CJK punctuation")); +SUBCATEGORY_2(0x303E, i18n("Special CJK indicators")); + +category = i18n("Hiragana"); // 3040 +SUBCATEGORY_2(0x3041, i18n("Hiragana letters")); +SUBCATEGORY_2(0x3095, i18n("Small letters")); +SUBCATEGORY_2(0x3099, i18n("Voicing marks")); +SUBCATEGORY_2(0x309D, i18n("Iteration marks")); +SUBCATEGORY_2(0x309F, i18n("Hiragana digraph")); + +category = i18n("Katakana"); // 30A0 +SUBCATEGORY_2(0x30A0, i18n("Katakana punctuation")); +SUBCATEGORY_2(0x30A1, i18n("Katakana letters")); +SUBCATEGORY_2(0x30FB, i18n("Conjunction and length marks")); +SUBCATEGORY_2(0x30FD, i18n("Iteration marks")); +SUBCATEGORY_2(0x30FF, i18n("Katakana digraph")); + +category = i18n("Bopomofo"); // 3100 +SUBCATEGORY_2(0x3105, i18n("Based on GB 2312")); +SUBCATEGORY_2(0x312A, i18n("Dialect (non-Mandarin) letters")); +SUBCATEGORY_2(0x312D, i18n("Miscellaneous additions")); + +category = i18n("Hangul Compatibility Jamo"); // 3130 +SUBCATEGORY_2(0x3131, i18n("Consonant letters")); +SUBCATEGORY_2(0x314F, i18n("Vowel letters")); +SUBCATEGORY_2(0x3164, i18n("Special character")); +SUBCATEGORY_2(0x3165, i18n("Old consonant letters")); +SUBCATEGORY_2(0x3187, i18n("Old vowel letters")); + +category = i18n("Kanbun"); // 3190 +SUBCATEGORY_2(0x3190, i18n("Tateten")); +SUBCATEGORY_2(0x3191, i18n("Kaeriten")); + +category = i18n("Bopomofo Extended"); // 31A0 +SUBCATEGORY_2(0x31A0, i18n("Extended Bopomofo for Minnan and Hakka")); +SUBCATEGORY_2(0x31B8, i18n("Extended Bopomofo for Hmu and Ge")); +SUBCATEGORY_2(0x31BB, i18n("Extended Bopomofo for Minnan and Hakka")); +SUBCATEGORY_2(0x31BC, i18n("Extended Bopomofo for Cantonese")); + +category = i18n("CJK Strokes"); // 31C0 +SUBCATEGORY_2(0x31C0, i18n("CJK strokes")); +SUBCATEGORY_2(0x31EF, i18n("Ideographic description character")); + +category = i18n("Katakana Phonetic Extensions"); // 31F0 +SUBCATEGORY_2(0x31F0, i18n("Phonetic extensions for Ainu")); + +category = i18n("Enclosed CJK Letters and Months"); // 3200 +SUBCATEGORY_2(0x3200, i18n("Parenthesized Hangul letters")); +SUBCATEGORY_2(0x320E, i18n("Parenthesized Hangul syllables")); +SUBCATEGORY_2(0x321D, i18n("Parenthesized Korean words")); +SUBCATEGORY_2(0x3220, i18n("Parenthesized ideographs")); +SUBCATEGORY_2(0x3244, i18n("Circled ideographs from ARIB STD B24")); +SUBCATEGORY_2(0x3248, i18n("Circled numbers on black squares from ARIB STD B24")); +SUBCATEGORY_2(0x3250, i18n("Squared Latin abbreviation")); +SUBCATEGORY_2(0x3251, i18n("Circled numbers")); +SUBCATEGORY_2(0x3260, i18n("Circled Hangul letters")); +SUBCATEGORY_2(0x326E, i18n("Circled Hangul syllables")); +SUBCATEGORY_2(0x327C, i18n("Circled Korean words")); +SUBCATEGORY_2(0x327E, i18n("Circled Hangul syllable")); +SUBCATEGORY_2(0x327F, i18n("Symbol")); +SUBCATEGORY_2(0x3280, i18n("Circled ideographs")); +SUBCATEGORY_2(0x32B1, i18n("Circled numbers")); +SUBCATEGORY_2(0x32C0, i18n("Telegraph symbols for months")); +SUBCATEGORY_2(0x32CC, i18n("Squared Latin abbreviations")); +SUBCATEGORY_2(0x32D0, i18n("Circled Katakana")); +SUBCATEGORY_2(0x32FF, i18n("Japanese era name")); + +category = i18n("CJK Compatibility"); // 3300 +SUBCATEGORY_2(0x3300, i18n("Squared Katakana words")); +SUBCATEGORY_2(0x3358, i18n("Telegraph symbols for hours")); +SUBCATEGORY_2(0x3371, i18n("Squared Latin abbreviations")); +SUBCATEGORY_2(0x337B, i18n("Japanese era names")); +SUBCATEGORY_2(0x337F, i18n("Japanese corporation")); +SUBCATEGORY_2(0x3380, i18n("Squared Latin abbreviations")); +SUBCATEGORY_2(0x3395, i18n("Abbreviations involving liter symbols")); +SUBCATEGORY_2(0x3399, i18n("Squared Latin abbreviations")); +SUBCATEGORY_2(0x33E0, i18n("Telegraph symbols for days")); +SUBCATEGORY_2(0x33FF, i18n("Squared Latin abbreviation")); + +category = i18n("CJK Unified Ideographs Extension A"); // 3400 + +category = i18n("Yijing Hexagram Symbols"); // 4DC0 +SUBCATEGORY_2(0x4DC0, i18n("Yijing hexagram symbols")); + +category = i18n("CJK Unified Ideographs"); // 4E00 +SUBCATEGORY_1(0x4E00); + +category = i18n("Yi Syllables"); // A000 +SUBCATEGORY_2(0xA000, i18n("Syllables")); +SUBCATEGORY_2(0xA015, i18n("Syllable iteration mark")); +SUBCATEGORY_2(0xA016, i18n("Syllables")); + +category = i18n("Yi Radicals"); // A490 +SUBCATEGORY_2(0xA490, i18n("Yi radicals")); + +category = i18n("Lisu"); // A4D0 +SUBCATEGORY_2(0xA4D0, i18n("Consonants")); +SUBCATEGORY_2(0xA4EE, i18n("Vowels")); +SUBCATEGORY_2(0xA4F8, i18n("Tones")); +SUBCATEGORY_2(0xA4FE, i18n("Punctuation")); + +category = i18n("Vai"); // A500 +SUBCATEGORY_2(0xA500, i18n("Syllables in -ee")); +SUBCATEGORY_2(0xA524, i18n("Syllables in -i")); +SUBCATEGORY_2(0xA549, i18n("Syllables in -a")); +SUBCATEGORY_2(0xA571, i18n("Syllables in -oo")); +SUBCATEGORY_2(0xA595, i18n("Syllables in -u")); +SUBCATEGORY_2(0xA5BA, i18n("Syllables in -o")); +SUBCATEGORY_2(0xA5E1, i18n("Syllables in -e")); +SUBCATEGORY_2(0xA60B, i18n("Syllable finals")); +SUBCATEGORY_2(0xA60D, i18n("Punctuation")); +SUBCATEGORY_2(0xA610, i18n("Historic syllables")); +SUBCATEGORY_2(0xA613, i18n("Logograms")); +SUBCATEGORY_2(0xA620, i18n("Digits")); +SUBCATEGORY_2(0xA62A, i18n("Historic syllables")); + +category = i18n("Cyrillic Extended-B"); // A640 +SUBCATEGORY_2(0xA640, i18n("Letters for Old Cyrillic")); +SUBCATEGORY_2(0xA66F, i18n("Abbreviation mark")); +SUBCATEGORY_2(0xA670, i18n("Combining numeric signs")); +SUBCATEGORY_2(0xA673, i18n("Punctuation mark")); +SUBCATEGORY_2(0xA674, i18n("Combining marks for Old Cyrillic")); +SUBCATEGORY_2(0xA67E, i18n("Punctuation mark")); +SUBCATEGORY_2(0xA67F, i18n("Modifier letter")); +SUBCATEGORY_2(0xA680, i18n("Letters for Old Abkhasian orthography")); +SUBCATEGORY_2(0xA698, i18n("Letters for Old Cyrillic")); +SUBCATEGORY_2(0xA69C, i18n("Intonation marks for Lithuanian dialectology")); +SUBCATEGORY_2(0xA69E, i18n("Combining marks for Old Cyrillic")); + +category = i18n("Bamum"); // A6A0 +SUBCATEGORY_2(0xA6A0, i18n("Syllables")); +SUBCATEGORY_2(0xA6F0, i18n("Combining marks")); +SUBCATEGORY_2(0xA6F2, i18n("Punctuation")); + +category = i18n("Modifier Tone Letters"); // A700 +SUBCATEGORY_2(0xA700, i18n("Corner tone marks for Chinese")); +SUBCATEGORY_2(0xA708, i18n("Dotted tone letters")); +SUBCATEGORY_2(0xA712, i18n("Left-stem tone letters")); +SUBCATEGORY_2(0xA717, i18n("Chinantec tone marks")); +SUBCATEGORY_2(0xA71B, i18n("Africanist tone letters")); + +category = i18n("Latin Extended-D"); // A720 +SUBCATEGORY_2(0xA720, i18n("Additions for UPA")); +SUBCATEGORY_2(0xA722, i18n("Egyptological additions")); +SUBCATEGORY_2(0xA726, i18n("Mayanist additions")); +SUBCATEGORY_2(0xA730, i18n("Medievalist additions")); +SUBCATEGORY_2(0xA779, i18n("Insular and Celticist letters")); +SUBCATEGORY_2(0xA788, i18n("Modifier letters")); +SUBCATEGORY_2(0xA78B, i18n("Orthographic letters for glottals")); +SUBCATEGORY_2(0xA78D, i18n("Additional letter")); +SUBCATEGORY_2(0xA78E, i18n("Phonetic symbol")); +SUBCATEGORY_2(0xA78F, i18n("Transliteration letter for sinology")); +SUBCATEGORY_2(0xA790, i18n("Additional letters")); +SUBCATEGORY_2(0xA794, i18n("Additions for Lithuanian dialectology")); +SUBCATEGORY_2(0xA796, i18n("Letters for Middle Vietnamese")); +SUBCATEGORY_2(0xA798, i18n("Archaic letters for Ewe")); +SUBCATEGORY_2(0xA79A, i18n("Archaic letters for Volapük")); +SUBCATEGORY_2(0xA7A0, i18n("Letters for pre-1921 Latvian orthography")); +SUBCATEGORY_2(0xA7AA, i18n("Additional letters")); +SUBCATEGORY_2(0xA7AE, i18n("Letter for West African languages")); +SUBCATEGORY_2(0xA7AF, i18n("Letter for Japanese phonemic transcription")); +SUBCATEGORY_2(0xA7B0, i18n("Letters for Americanist orthographies")); +SUBCATEGORY_2(0xA7B2, i18n("Letter for African languages")); +SUBCATEGORY_2(0xA7B3, i18n("Letter for German dialectology")); +SUBCATEGORY_2(0xA7B4, i18n("Letters for African languages")); +SUBCATEGORY_2(0xA7B8, i18n("Letters for Mazahua (México)")); +SUBCATEGORY_2(0xA7BA, i18n("Letters for Ugaritic and Egyptological transliteration")); +SUBCATEGORY_2(0xA7C0, i18n("Additional medieval letters")); +SUBCATEGORY_2(0xA7C4, i18n("Letters used in early Pinyin romanization")); +SUBCATEGORY_2(0xA7C7, i18n("Additional letters for Gaulish")); +SUBCATEGORY_2(0xA7CB, i18n("Letter for Eastern Dan")); +SUBCATEGORY_2(0xA7CC, i18n("Letters for Luiseño")); +SUBCATEGORY_2(0xA7CE, i18n("Cased voiced pharyngeal letters")); +SUBCATEGORY_2(0xA7D0, i18n("Letters used in the Middle English Ormulum")); +SUBCATEGORY_2(0xA7D6, i18n("Letters used in medieval palaeography")); +SUBCATEGORY_2(0xA7DA, i18n("Letters used in Wakashan and Salishan languages")); +SUBCATEGORY_2(0xA7F1, i18n("Modifier letters for Chatino (México)")); +SUBCATEGORY_2(0xA7F4, i18n("Modifier letter for Japanese phonemic transcription")); +SUBCATEGORY_2(0xA7F5, i18n("Ancient Gaulish and Celtic epigraphic letters")); +SUBCATEGORY_2(0xA7F8, i18n("Additions for Extended IPA")); +SUBCATEGORY_2(0xA7FA, i18n("Addition for UPA")); +SUBCATEGORY_2(0xA7FB, i18n("Ancient Roman epigraphic letters")); + +category = i18n("Syloti Nagri"); // A800 +SUBCATEGORY_2(0xA800, i18n("Independent vowels and dvisvara")); +SUBCATEGORY_2(0xA806, i18n("Sign")); +SUBCATEGORY_2(0xA807, i18n("Consonants and consonant signs")); +SUBCATEGORY_2(0xA823, i18n("Dependent vowel signs")); +SUBCATEGORY_2(0xA828, i18n("Poetry marks")); +SUBCATEGORY_2(0xA82C, i18n("Sign")); + +category = i18n("Common Indic Number Forms"); // A830 +SUBCATEGORY_2(0xA830, i18n("Number forms")); +SUBCATEGORY_2(0xA837, i18n("Miscellaneous sign")); +SUBCATEGORY_2(0xA838, i18n("Currency symbol")); +SUBCATEGORY_2(0xA839, i18n("Miscellaneous sign")); + +category = i18n("Phags-pa"); // A840 +SUBCATEGORY_2(0xA840, i18n("Consonants")); +SUBCATEGORY_2(0xA85D, i18n("Letter A")); +SUBCATEGORY_2(0xA85E, i18n("Vowels")); +SUBCATEGORY_2(0xA862, i18n("Consonants")); +SUBCATEGORY_2(0xA866, i18n("Vowel")); +SUBCATEGORY_2(0xA867, i18n("Subjoined consonants")); +SUBCATEGORY_2(0xA869, i18n("Consonant additions for Sanskrit")); +SUBCATEGORY_2(0xA86D, i18n("Alternate consonant forms for Chinese")); +SUBCATEGORY_2(0xA871, i18n("Subjoined consonant")); +SUBCATEGORY_2(0xA872, i18n("Consonant addition for Tibetan")); +SUBCATEGORY_2(0xA873, i18n("Candrabindu")); +SUBCATEGORY_2(0xA874, i18n("Head marks for Tibetan")); +SUBCATEGORY_2(0xA876, i18n("Punctuation for Tibetan")); + +category = i18n("Saurashtra"); // A880 +SUBCATEGORY_2(0xA880, i18n("Various signs")); +SUBCATEGORY_2(0xA882, i18n("Independent vowels")); +SUBCATEGORY_2(0xA892, i18n("Consonants")); +SUBCATEGORY_2(0xA8B5, i18n("Dependent vowel signs")); +SUBCATEGORY_2(0xA8C4, i18n("Virama")); +SUBCATEGORY_2(0xA8C5, i18n("Sign")); +SUBCATEGORY_2(0xA8CE, i18n("Punctuation")); +SUBCATEGORY_2(0xA8D0, i18n("Digits")); + +category = i18n("Devanagari Extended"); // A8E0 +SUBCATEGORY_2(0xA8E0, i18n("Cantillation marks (svara) for the Samaveda")); +SUBCATEGORY_2(0xA8F2, i18n("Marks of nasalization")); +SUBCATEGORY_2(0xA8F8, i18n("Editorial marks")); +SUBCATEGORY_2(0xA8FC, i18n("Signs")); +SUBCATEGORY_2(0xA8FE, i18n("Additional vowel and vowel sign")); + +category = i18n("Kayah Li"); // A900 +SUBCATEGORY_2(0xA900, i18n("Digits")); +SUBCATEGORY_2(0xA90A, i18n("Consonants")); +SUBCATEGORY_2(0xA922, i18n("Vowels")); +SUBCATEGORY_2(0xA92B, i18n("Tone marks")); +SUBCATEGORY_2(0xA92E, i18n("Punctuation")); + +category = i18n("Rejang"); // A930 +SUBCATEGORY_2(0xA930, i18n("Consonants")); +SUBCATEGORY_2(0xA947, i18n("Vowel signs")); +SUBCATEGORY_2(0xA94F, i18n("Consonant signs")); +SUBCATEGORY_2(0xA953, i18n("Virama")); +SUBCATEGORY_2(0xA95F, i18n("Punctuation")); + +category = i18n("Hangul Jamo Extended-A"); // A960 +SUBCATEGORY_2(0xA960, i18n("Old initial consonants")); + +category = i18n("Javanese"); // A980 +SUBCATEGORY_2(0xA980, i18n("Various signs")); +SUBCATEGORY_2(0xA984, i18n("Letters")); +SUBCATEGORY_2(0xA9B3, i18n("Sign")); +SUBCATEGORY_2(0xA9B4, i18n("Dependent vowel signs")); +SUBCATEGORY_2(0xA9BD, i18n("Dependent consonant signs")); +SUBCATEGORY_2(0xA9C0, i18n("Sign")); +SUBCATEGORY_2(0xA9C1, i18n("Punctuation")); +SUBCATEGORY_2(0xA9CF, i18n("Syllable reduplicator")); +SUBCATEGORY_2(0xA9D0, i18n("Digits")); +SUBCATEGORY_2(0xA9DE, i18n("Ellipsis marks")); + +category = i18n("Myanmar Extended-B"); // A9E0 +SUBCATEGORY_2(0xA9E0, i18n("Additions for Shan Pali")); +SUBCATEGORY_2(0xA9E6, i18n("Reduplication mark")); +SUBCATEGORY_2(0xA9E7, i18n("Tai Laing consonants")); +SUBCATEGORY_2(0xA9F0, i18n("Tai Laing digits")); +SUBCATEGORY_2(0xA9FA, i18n("Tai Laing consonants")); + +category = i18n("Cham"); // AA00 +SUBCATEGORY_2(0xAA00, i18n("Independent vowels")); +SUBCATEGORY_2(0xAA06, i18n("Consonants")); +SUBCATEGORY_2(0xAA29, i18n("Dependent vowel signs")); +SUBCATEGORY_2(0xAA33, i18n("Consonant signs")); +SUBCATEGORY_2(0xAA40, i18n("Final consonants")); +SUBCATEGORY_2(0xAA50, i18n("Digits")); +SUBCATEGORY_2(0xAA5C, i18n("Punctuation")); + +category = i18n("Myanmar Extended-A"); // AA60 +SUBCATEGORY_2(0xAA60, i18n("Khamti Shan consonants")); +SUBCATEGORY_2(0xAA74, i18n("Khamti Shan logograms")); +SUBCATEGORY_2(0xAA77, i18n("Aiton symbols and letters")); +SUBCATEGORY_2(0xAA7B, i18n("Pa'o Karen tone mark")); +SUBCATEGORY_2(0xAA7C, i18n("Tai Laing tone marks")); +SUBCATEGORY_2(0xAA7E, i18n("Shwe Palaung letters")); + +category = i18n("Tai Viet"); // AA80 +SUBCATEGORY_2(0xAA80, i18n("Consonants")); +SUBCATEGORY_2(0xAAB0, i18n("Vowels and finals")); +SUBCATEGORY_2(0xAABF, i18n("Tones")); +SUBCATEGORY_2(0xAADB, i18n("Word ligature symbols")); +SUBCATEGORY_2(0xAADD, i18n("Repetition mark")); +SUBCATEGORY_2(0xAADE, i18n("Punctuation")); + +category = i18n("Meetei Mayek Extensions"); // AAE0 +SUBCATEGORY_2(0xAAE0, i18n("Independent vowel signs")); +SUBCATEGORY_2(0xAAE2, i18n("Consonants")); +SUBCATEGORY_2(0xAAEB, i18n("Dependent vowel signs")); +SUBCATEGORY_2(0xAAF0, i18n("Punctuation")); +SUBCATEGORY_2(0xAAF2, i18n("Sign")); +SUBCATEGORY_2(0xAAF3, i18n("Repetition marks")); +SUBCATEGORY_2(0xAAF5, i18n("Sign")); +SUBCATEGORY_2(0xAAF6, i18n("Virama")); + +category = i18n("Ethiopic Extended-A"); // AB00 +SUBCATEGORY_2(0xAB01, i18n("Gamo-Gofa-Dawro and Basketo")); +SUBCATEGORY_2(0xAB11, i18n("Gamo-Gofa-Dawro")); +SUBCATEGORY_2(0xAB20, i18n("Gumuz")); + +category = i18n("Latin Extended-E"); // AB30 +SUBCATEGORY_2(0xAB30, i18n("Letters for German dialectology")); +SUBCATEGORY_2(0xAB5B, i18n("Modifier letters for German dialectology")); +SUBCATEGORY_2(0xAB60, i18n("Historic letters for Sakha (Yakut)")); +SUBCATEGORY_2(0xAB64, i18n("Letters for Americanist orthographies")); +SUBCATEGORY_2(0xAB66, i18n("Letters for sinological and Tibetanist phonetic transcription")); +SUBCATEGORY_2(0xAB68, i18n("Letters for Scots dialectology")); + +category = i18n("Cherokee Supplement"); // AB70 +SUBCATEGORY_2(0xAB70, i18n("Lowercase syllables")); + +category = i18n("Meetei Mayek"); // ABC0 +SUBCATEGORY_2(0xABC0, i18n("Letters")); +SUBCATEGORY_2(0xABDB, i18n("Final consonants")); +SUBCATEGORY_2(0xABE3, i18n("Dependent vowel signs")); +SUBCATEGORY_2(0xABEB, i18n("Punctuation")); +SUBCATEGORY_2(0xABF0, i18n("Digits")); + +category = i18n("Hangul Syllables"); // AC00 +SUBCATEGORY_1(0xAC00); + +category = i18n("Hangul Jamo Extended-B"); // D7B0 +SUBCATEGORY_2(0xD7B0, i18n("Old medial vowels")); +SUBCATEGORY_2(0xD7CB, i18n("Old final consonants")); + +category = i18n("High Surrogates"); // D800 +SUBCATEGORY_1(0xD800); + +category = i18n("High Private Use Surrogates"); // DB80 +SUBCATEGORY_1(0xDB80); + +category = i18n("Low Surrogates"); // DC00 +SUBCATEGORY_1(0xDC00); + +category = i18n("Private Use Area"); // E000 +SUBCATEGORY_1(0xE000); + +category = i18n("CJK Compatibility Ideographs"); // F900 +SUBCATEGORY_2(0xF900, i18n("Pronunciation variants from KS X 1001:1998")); +SUBCATEGORY_2(0xFA0C, i18n("Duplicate characters from Big 5")); +SUBCATEGORY_2(0xFA0E, i18n("The IBM 32 compatibility ideographs")); +SUBCATEGORY_2(0xFA2E, i18n("Korean compatibility ideographs")); +SUBCATEGORY_2(0xFA30, i18n("JIS X 0213 compatibility ideographs")); +SUBCATEGORY_2(0xFA6B, i18n("ARIB compatibility ideographs")); +SUBCATEGORY_2(0xFA70, i18n("DPRK compatibility ideographs")); + +category = i18n("Alphabetic Presentation Forms"); // FB00 +SUBCATEGORY_2(0xFB00, i18n("Latin ligatures")); +SUBCATEGORY_2(0xFB13, i18n("Armenian ligatures")); +SUBCATEGORY_2(0xFB1D, i18n("Hebrew presentation forms")); + +category = i18n("Arabic Presentation Forms-A"); // FB50 +SUBCATEGORY_2(0xFB50, i18n("Glyphs for contextual forms of letters for Persian, Urdu, Sindhi, etc.")); +SUBCATEGORY_2(0xFBB2, i18n("Arabic pedagogical symbols")); +SUBCATEGORY_2(0xFBC3, i18n("Honorific word ligatures")); +SUBCATEGORY_2(0xFBD3, i18n("Glyphs for contextual forms of letters for Central Asian languages")); +SUBCATEGORY_2(0xFBEA, i18n("Ligatures (two elements)")); +SUBCATEGORY_2(0xFD3E, i18n("Punctuation")); +SUBCATEGORY_2(0xFD40, i18n("Honorific word ligatures")); +SUBCATEGORY_2(0xFD50, i18n("Ligatures (three elements)")); +SUBCATEGORY_2(0xFD90, i18n("Honorific word ligatures")); +SUBCATEGORY_2(0xFD92, i18n("Ligatures (three elements)")); +SUBCATEGORY_2(0xFDC8, i18n("Honorific word ligatures")); +SUBCATEGORY_2(0xFDD0, i18n("Noncharacters")); +SUBCATEGORY_2(0xFDF0, i18n("Word ligatures")); +SUBCATEGORY_2(0xFDFC, i18n("Currency symbol")); +SUBCATEGORY_2(0xFDFD, i18n("Honorific word ligatures")); + +category = i18n("Variation Selectors"); // FE00 +SUBCATEGORY_2(0xFE00, i18n("Variation selectors")); +SUBCATEGORY_2(0xFE0E, i18n("Emoji-specific variation selectors")); + +category = i18n("Vertical Forms"); // FE10 +SUBCATEGORY_2(0xFE10, i18n("Glyphs for vertical variants")); + +category = i18n("Combining Half Marks"); // FE20 +SUBCATEGORY_2(0xFE20, i18n("Combining half marks")); +SUBCATEGORY_2(0xFE24, i18n("Continuous macrons for Coptic")); +SUBCATEGORY_2(0xFE27, i18n("Combining half marks below")); +SUBCATEGORY_2(0xFE2E, i18n("Combining half marks")); + +category = i18n("CJK Compatibility Forms"); // FE30 +SUBCATEGORY_2(0xFE30, i18n("Glyphs for vertical variants")); +SUBCATEGORY_2(0xFE45, i18n("Sidelining emphasis marks")); +SUBCATEGORY_2(0xFE47, i18n("Glyphs for vertical variants")); +SUBCATEGORY_2(0xFE49, i18n("Overscores and underscores")); + +category = i18n("Small Form Variants"); // FE50 +SUBCATEGORY_1(0xFE50); + +category = i18n("Arabic Presentation Forms-B"); // FE70 +SUBCATEGORY_2(0xFE70, i18n("Glyphs for spacing forms of Arabic points")); +SUBCATEGORY_2(0xFE73, i18n("Glyph part")); +SUBCATEGORY_2(0xFE74, i18n("Glyphs for spacing forms of Arabic points")); +SUBCATEGORY_2(0xFE80, i18n("Basic glyphs for Arabic language contextual forms")); +SUBCATEGORY_2(0xFEFF, i18n("Special")); + +category = i18n("Halfwidth and Fullwidth Forms"); // FF00 +SUBCATEGORY_2(0xFF01, i18n("Fullwidth ASCII variants")); +SUBCATEGORY_2(0xFF5F, i18n("Fullwidth brackets")); +SUBCATEGORY_2(0xFF61, i18n("Halfwidth CJK punctuation")); +SUBCATEGORY_2(0xFF65, i18n("Halfwidth Katakana variants")); +SUBCATEGORY_2(0xFFA0, i18n("Halfwidth Hangul variants")); +SUBCATEGORY_2(0xFFE0, i18n("Fullwidth symbol variants")); +SUBCATEGORY_2(0xFFE8, i18n("Halfwidth symbol variants")); + +category = i18n("Specials"); // FFF0 +SUBCATEGORY_2(0xFFF9, i18n("Interlinear annotation")); +SUBCATEGORY_2(0xFFFC, i18n("Replacement characters")); +SUBCATEGORY_2(0xFFFE, i18n("Noncharacters")); + +#undef SUBCATEGORY_1 +#undef SUBCATEGORY_2
\ No newline at end of file diff --git a/kcharselect/kcharselectdia.cpp b/kcharselect/kcharselectdia.cpp index d5232a8..33ed2c0 100644 --- a/kcharselect/kcharselectdia.cpp +++ b/kcharselect/kcharselectdia.cpp @@ -9,10 +9,15 @@ #include <stdlib.h> +#include <tqcursor.h> +#include <tqtimer.h> + #include <kdialog.h> #include <tdeapplication.h> #include <tdeaccel.h> #include <tdeconfig.h> +#include <tdelistview.h> +#include <tdelistviewsearchline.h> #include <tdelocale.h> #include <tdeaction.h> @@ -44,6 +49,62 @@ KCharSelectDia::KCharSelectDia(TQWidget *parent,const char *name, TQ_SLOT(fontSelected(const TQString &))); grid->addMultiCellWidget(charSelect, 0, 0, 0, 3); + // Add category browser dock widget + dCategories = new TQDockWindow(this, "categories"); + + TQVBox *cvbox = new TQVBox(dCategories); + + categories = new TDEListView(cvbox, "dock_categories"); + categories->addColumn(i18n("Codepoint")); + categories->addColumn(i18n("Name")); + categories->setRootIsDecorated(true); + categories->setResizeMode(TQListView::LastColumn); + categories->setAllColumnsShowFocus(true); + connect(categories, TQ_SIGNAL(currentChanged(TQListViewItem*)), this, TQ_SLOT(categorySelected(TQListViewItem*))); + + TDEListViewSearchLineWidget *lvsw = new TDEListViewSearchLineWidget(categories, cvbox); + + dCategories->setWidget(cvbox); + dCategories->setCaption(i18n("Categories")); + dCategories->setHorizontallyStretchable(true); + dCategories->setVerticallyStretchable(true); + dCategories->setResizeEnabled(true); + dCategories->setCloseMode(TQDockWindow::Always); + + // BUG TDEMainWindow::saveMainWindowSettings() does not save TQDockWindow settings + TDEConfig *config = tdeApp->config(); + config->setGroup("Docks"); + TQt::Dock categoriesDock = (TQt::Dock)config->readNumEntry("Categories dock", TQt::DockLeft); + int categoriesIndex = config->readNumEntry("Categories index", 0); + bool categoriesNewline = config->readBoolEntry("Categories nl", false); + int categoriesOffset = config->readNumEntry("Categories offset", 0); + int categoriesSize = config->readNumEntry("Categories size", -1); + bool categoriesShown = config->readBoolEntry("Categories shown", true); + + addDockWindow(dCategories, i18n("Categories"), categoriesDock); + moveDockWindow(dCategories, categoriesDock, categoriesNewline, categoriesIndex, categoriesOffset); + if (categoriesSize >= 0) + { + if (dCategories->orientation() == TQt::Horizontal) + { + dCategories->setFixedExtentHeight(categoriesSize); + } + else + { + dCategories->setFixedExtentWidth(categoriesSize); + } + } + + TDEToggleAction *tCategories = new TDEToggleAction(i18n("Show categories dock"), 0, + this, TQ_SLOT(toggleCategoriesDock()), actionCollection(), "show_categories"); + + tCategories->setChecked(categoriesShown); + dCategories->setShown(categoriesShown); + +#include "categories.h" + + TQTimer::singleShot(0, this, TQ_SLOT(populateCategories())); + // Build line editor lined = new TQLineEdit(mainWidget); lined->resize(lined->sizeHint()); @@ -78,7 +139,7 @@ KCharSelectDia::KCharSelectDia(TQWidget *parent,const char *name, // Build menu KStdAction::quit( this, TQ_SLOT(_exit()), actionCollection() ); - + new TDEAction(i18n("&To Clipboard"), "edit-copy", TDEStdAccel::shortcut(TDEStdAccel::Copy), this, TQ_SLOT(toClip()), actionCollection(), "copy_clip" ); @@ -86,20 +147,20 @@ KCharSelectDia::KCharSelectDia(TQWidget *parent,const char *name, TQ_SLOT(toClipUTF8()), actionCollection(), "copy_utf_8" ); (void)new TDEAction(i18n("To Clipboard &HTML"), 0, this, TQ_SLOT(toClipHTML()), actionCollection(), "copy_html" ); - + new TDEAction(i18n("&From Clipboard"), "edit-paste", TDEStdAccel::shortcut(TDEStdAccel::Paste), this, TQ_SLOT(fromClip()), actionCollection(), "from_clip" ); (void)new TDEAction(i18n("From Clipboard UTF-8"), 0, this, TQ_SLOT(fromClipUTF8()), actionCollection(), "from_clip_utf8" ); - + i18n("From Clipboard HTML"); // Intended for future use - + KStdAction::clear(this, TQ_SLOT(clear()), actionCollection(), "clear"); (void)new TDEAction(i18n("&Flip"), 0, this, TQ_SLOT(flipText()), actionCollection(), "flip" ); (void)new TDEAction(i18n("&Alignment"), 0, this, TQ_SLOT(toggleEntryDirection()), actionCollection(), "alignment" ); - + charSelect->setFocus(); entryDirection = direction; @@ -114,7 +175,9 @@ KCharSelectDia::KCharSelectDia(TQWidget *parent,const char *name, //================================================================== void KCharSelectDia::charChanged(const TQChar &_chr) { + if (vChr == _chr) return; vChr = _chr; + updateCurrentCategory(); } //================================================================== @@ -269,6 +332,27 @@ void KCharSelectDia::_exit() config->writeEntry("char",static_cast<int>(vChr.unicode())); config->writeEntry("table",charSelect->tableNum()); config->writeEntry("entryDirection",entryDirection); + + // BUG TDEMainWindow::saveMainWindowSettings() does not save TQDockWindow settings + TQt::Dock dock; int index, offset; bool nl; + if (getLocation(dCategories, dock, index, nl, offset)) + { + config->setGroup("Docks"); + config->writeEntry("Categories dock", dock); + config->writeEntry("Categories index", index); + config->writeEntry("Categories nl", nl); + config->writeEntry("Categories offset", offset); + config->writeEntry("Categories shown", dCategories->isShown()); + + if (dCategories->orientation() == TQt::Horizontal) + { + config->writeEntry("Categories size", dCategories->height()); + } + else + { + config->writeEntry("Categories size", dCategories->width()); + } + } config->sync(); delete this; @@ -287,3 +371,86 @@ void KCharSelectDia::help() tdeApp->invokeHelp(); } +//================================================================== +void KCharSelectDia::populateCategories() +{ + categories->setCursor(TQCursor(TQt::BusyCursor)); + categories->setEnabled(false); + + TQMap<int, TQString>::iterator cit; + for (cit = mCategories.begin(); cit != mCategories.end(); ++cit) + { + TQString uc = TQString("%1").arg(cit.key(), 4, 16).replace(' ', '0'); + TQStringList cdata = TQStringList::split("|", cit.data()); + TQString category = cdata[0]; + TQListViewItem *cItem = categories->findItem(category, 1); + if (!cItem) + { + cItem = new TQListViewItem(categories, uc, category); + } + + if (cdata.count() > 1) + { + TQString subcategory = cdata[1]; + new TQListViewItem(cItem, uc, subcategory); + } + + tqApp->processEvents(); + } + + categories->setEnabled(true); + categories->setCursor(TQCursor(TQt::ArrowCursor)); + updateCurrentCategory(); +} + +//================================================================== +void KCharSelectDia::categorySelected(TQListViewItem *category) +{ + bool ok; + const int uc = category->text(0).toInt(&ok, 16); + if (!ok) return; + + const int table = uc / 256; + charSelect->setTableNum(table); + + const TQChar ch(uc); + charSelect->setChar(ch); +} + +//================================================================== +// Returns the category index corresponding to _chr +int KCharSelectDia::categoryIndex(TQChar &_chr) +{ + TQMap<int, TQString>::iterator cit; + int uc = -1; + for (cit = mCategories.begin(); cit != mCategories.end(); ++cit) + { + if (cit.key() > vChr.unicode()) break; + uc = cit.key(); + } + return uc; +} + +//================================================================== +// Updates category dock to reflect the category of the currently selected character +void KCharSelectDia::updateCurrentCategory() +{ + int uc = categoryIndex(vChr); + if (uc < 0) return; + + TQString codepoint = TQString("%1").arg(uc, 4, 16).replace(' ', '0'); + + TQListViewItem *lvi = categories->findItem(codepoint, 0); + if (!lvi) return; + + categories->blockSignals(true); + categories->setCurrentItem(lvi); + categories->ensureItemVisible(lvi); + categories->blockSignals(false); +} + +//================================================================== +void KCharSelectDia::toggleCategoriesDock() +{ + dCategories->setShown(static_cast<const TDEToggleAction*>(TQObject::sender())->isChecked()); +}
\ No newline at end of file diff --git a/kcharselect/kcharselectdia.h b/kcharselect/kcharselectdia.h index c2b3742..24053b1 100644 --- a/kcharselect/kcharselectdia.h +++ b/kcharselect/kcharselectdia.h @@ -7,7 +7,7 @@ #ifndef kcharselectdia_h #define kcharselectdia_h - +#include <tqmap.h> #include <tqlayout.h> #include <tqlineedit.h> #include <tqclipboard.h> @@ -16,7 +16,11 @@ #include <kcharselect.h> #include <tdemainwindow.h> -static const char *version = "v1.1"; +static const char *version = "v1.1"; + +class TQDockWindow; +class TDEListView; +class TQListViewItem; /******************************************************************/ /* class KCharSelectDia */ @@ -25,7 +29,7 @@ static const char *version = "v1.1"; class KCharSelectDia : public TDEMainWindow { TQ_OBJECT - + public: KCharSelectDia(TQWidget *parent,const char *name,const TQChar &_chr,const TQString &_font,int _tableNum, bool direction); @@ -35,6 +39,8 @@ public: int chr() { return vChr; } TQString font() { return vFont; } + int categoryIndex(TQChar &_chr); + protected: void closeEvent(TQCloseEvent *) { _exit(); } @@ -43,11 +49,14 @@ protected: TQLineEdit *lined; KPushButton *bClip,*bClear; KPushButton *bHelp; + TQDockWindow *dCategories; + TDEListView *categories; TQChar vChr; TQString vFont; int pointSize; bool entryDirection; + TQMap <int, TQString> mCategories; protected slots: void charChanged(const TQChar &_chr); @@ -66,6 +75,10 @@ protected slots: void _exit(); void clear(); void help(); + void populateCategories(); + void categorySelected(TQListViewItem*); + void updateCurrentCategory(); + void toggleCategoriesDock(); }; diff --git a/kcharselect/kcharselectui.rc b/kcharselect/kcharselectui.rc index 7768293..f27e98f 100644 --- a/kcharselect/kcharselectui.rc +++ b/kcharselect/kcharselectui.rc @@ -11,6 +11,10 @@ <Action name="clear"/> <Action name="flip"/> <Action name="alignment"/> - </Menu> + </Menu> + <Menu name="settings"><text>&Settings</text> + <Action name="show_categories"/> + <Separator/> + </Menu> </MenuBar> </kpartgui> |
