From a4ecbee86766b35d25d41d1a178806e1688485df Mon Sep 17 00:00:00 2001 From: Dimitri van Heesch Date: Mon, 22 Mar 2021 20:02:06 +0100 Subject: issue #8375: Lowercase search does not find non-ASCII uppercase pages and vice versa --- src/CMakeLists.txt | 1 + src/caseconvert.h | 2903 ++++++++++++++++++++++++++++++++++++++++++++++ src/caseconvert.py | 56 + src/clangparser.cpp | 15 +- src/definition.cpp | 22 +- src/htmlgen.cpp | 3 +- src/index.cpp | 39 +- src/latexgen.cpp | 18 +- src/mangen.cpp | 3 +- src/markdown.cpp | 19 +- src/rtfgen.cpp | 3 +- src/searchindex.cpp | 68 +- src/template.cpp | 6 +- src/utf8.cpp | 208 ++++ src/utf8.h | 71 ++ src/util.cpp | 81 +- src/util.h | 17 +- src/xmlgen.cpp | 3 +- templates/html/search.js | 6 +- 19 files changed, 3334 insertions(+), 208 deletions(-) create mode 100644 src/caseconvert.h create mode 100644 src/caseconvert.py create mode 100644 src/utf8.cpp create mode 100644 src/utf8.h diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index aaf1978..12efd52 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -301,6 +301,7 @@ add_library(doxymain STATIC template.cpp textdocvisitor.cpp tooltip.cpp + utf8.cpp util.cpp vhdldocgen.cpp vhdljjparser.cpp diff --git a/src/caseconvert.h b/src/caseconvert.h new file mode 100644 index 0000000..e2159bc --- /dev/null +++ b/src/caseconvert.h @@ -0,0 +1,2903 @@ +/** This file is generated by python3 caseconvert.py. DO NOT EDIT! */ + +#ifndef CASECONVERT_H +#define CASECONVERT_H + +#include +#include + +inline const char *convertUnicodeToUpper(uint32_t code) +{ + switch(code) + { + case 0x61 /* a */: return u8"A" /* 0x41 */; + case 0x62 /* b */: return u8"B" /* 0x42 */; + case 0x63 /* c */: return u8"C" /* 0x43 */; + case 0x64 /* d */: return u8"D" /* 0x44 */; + case 0x65 /* e */: return u8"E" /* 0x45 */; + case 0x66 /* f */: return u8"F" /* 0x46 */; + case 0x67 /* g */: return u8"G" /* 0x47 */; + case 0x68 /* h */: return u8"H" /* 0x48 */; + case 0x69 /* i */: return u8"I" /* 0x49 */; + case 0x6a /* j */: return u8"J" /* 0x4a */; + case 0x6b /* k */: return u8"K" /* 0x4b */; + case 0x6c /* l */: return u8"L" /* 0x4c */; + case 0x6d /* m */: return u8"M" /* 0x4d */; + case 0x6e /* n */: return u8"N" /* 0x4e */; + case 0x6f /* o */: return u8"O" /* 0x4f */; + case 0x70 /* p */: return u8"P" /* 0x50 */; + case 0x71 /* q */: return u8"Q" /* 0x51 */; + case 0x72 /* r */: return u8"R" /* 0x52 */; + case 0x73 /* s */: return u8"S" /* 0x53 */; + case 0x74 /* t */: return u8"T" /* 0x54 */; + case 0x75 /* u */: return u8"U" /* 0x55 */; + case 0x76 /* v */: return u8"V" /* 0x56 */; + case 0x77 /* w */: return u8"W" /* 0x57 */; + case 0x78 /* x */: return u8"X" /* 0x58 */; + case 0x79 /* y */: return u8"Y" /* 0x59 */; + case 0x7a /* z */: return u8"Z" /* 0x5a */; + case 0xb5 /* µ */: return u8"Μ" /* 0x39c */; + case 0xdf /* ß */: return u8"SS" /* 0x53,0x53 */; + case 0xe0 /* à */: return u8"À" /* 0xc0 */; + case 0xe1 /* á */: return u8"Á" /* 0xc1 */; + case 0xe2 /* â */: return u8"Â" /* 0xc2 */; + case 0xe3 /* ã */: return u8"Ã" /* 0xc3 */; + case 0xe4 /* ä */: return u8"Ä" /* 0xc4 */; + case 0xe5 /* å */: return u8"Å" /* 0xc5 */; + case 0xe6 /* æ */: return u8"Æ" /* 0xc6 */; + case 0xe7 /* ç */: return u8"Ç" /* 0xc7 */; + case 0xe8 /* è */: return u8"È" /* 0xc8 */; + case 0xe9 /* é */: return u8"É" /* 0xc9 */; + case 0xea /* ê */: return u8"Ê" /* 0xca */; + case 0xeb /* ë */: return u8"Ë" /* 0xcb */; + case 0xec /* ì */: return u8"Ì" /* 0xcc */; + case 0xed /* í */: return u8"Í" /* 0xcd */; + case 0xee /* î */: return u8"Î" /* 0xce */; + case 0xef /* ï */: return u8"Ï" /* 0xcf */; + case 0xf0 /* ð */: return u8"Ð" /* 0xd0 */; + case 0xf1 /* ñ */: return u8"Ñ" /* 0xd1 */; + case 0xf2 /* ò */: return u8"Ò" /* 0xd2 */; + case 0xf3 /* ó */: return u8"Ó" /* 0xd3 */; + case 0xf4 /* ô */: return u8"Ô" /* 0xd4 */; + case 0xf5 /* õ */: return u8"Õ" /* 0xd5 */; + case 0xf6 /* ö */: return u8"Ö" /* 0xd6 */; + case 0xf8 /* ø */: return u8"Ø" /* 0xd8 */; + case 0xf9 /* ù */: return u8"Ù" /* 0xd9 */; + case 0xfa /* ú */: return u8"Ú" /* 0xda */; + case 0xfb /* û */: return u8"Û" /* 0xdb */; + case 0xfc /* ü */: return u8"Ü" /* 0xdc */; + case 0xfd /* ý */: return u8"Ý" /* 0xdd */; + case 0xfe /* þ */: return u8"Þ" /* 0xde */; + case 0xff /* ÿ */: return u8"Ÿ" /* 0x178 */; + case 0x101 /* ā */: return u8"Ā" /* 0x100 */; + case 0x103 /* ă */: return u8"Ă" /* 0x102 */; + case 0x105 /* ą */: return u8"Ą" /* 0x104 */; + case 0x107 /* ć */: return u8"Ć" /* 0x106 */; + case 0x109 /* ĉ */: return u8"Ĉ" /* 0x108 */; + case 0x10b /* ċ */: return u8"Ċ" /* 0x10a */; + case 0x10d /* č */: return u8"Č" /* 0x10c */; + case 0x10f /* ď */: return u8"Ď" /* 0x10e */; + case 0x111 /* đ */: return u8"Đ" /* 0x110 */; + case 0x113 /* ē */: return u8"Ē" /* 0x112 */; + case 0x115 /* ĕ */: return u8"Ĕ" /* 0x114 */; + case 0x117 /* ė */: return u8"Ė" /* 0x116 */; + case 0x119 /* ę */: return u8"Ę" /* 0x118 */; + case 0x11b /* ě */: return u8"Ě" /* 0x11a */; + case 0x11d /* ĝ */: return u8"Ĝ" /* 0x11c */; + case 0x11f /* ğ */: return u8"Ğ" /* 0x11e */; + case 0x121 /* ġ */: return u8"Ġ" /* 0x120 */; + case 0x123 /* ģ */: return u8"Ģ" /* 0x122 */; + case 0x125 /* ĥ */: return u8"Ĥ" /* 0x124 */; + case 0x127 /* ħ */: return u8"Ħ" /* 0x126 */; + case 0x129 /* ĩ */: return u8"Ĩ" /* 0x128 */; + case 0x12b /* ī */: return u8"Ī" /* 0x12a */; + case 0x12d /* ĭ */: return u8"Ĭ" /* 0x12c */; + case 0x12f /* į */: return u8"Į" /* 0x12e */; + case 0x131 /* ı */: return u8"I" /* 0x49 */; + case 0x133 /* ij */: return u8"IJ" /* 0x132 */; + case 0x135 /* ĵ */: return u8"Ĵ" /* 0x134 */; + case 0x137 /* ķ */: return u8"Ķ" /* 0x136 */; + case 0x13a /* ĺ */: return u8"Ĺ" /* 0x139 */; + case 0x13c /* ļ */: return u8"Ļ" /* 0x13b */; + case 0x13e /* ľ */: return u8"Ľ" /* 0x13d */; + case 0x140 /* ŀ */: return u8"Ŀ" /* 0x13f */; + case 0x142 /* ł */: return u8"Ł" /* 0x141 */; + case 0x144 /* ń */: return u8"Ń" /* 0x143 */; + case 0x146 /* ņ */: return u8"Ņ" /* 0x145 */; + case 0x148 /* ň */: return u8"Ň" /* 0x147 */; + case 0x149 /* ʼn */: return u8"ʼN" /* 0x2bc,0x4e */; + case 0x14b /* ŋ */: return u8"Ŋ" /* 0x14a */; + case 0x14d /* ō */: return u8"Ō" /* 0x14c */; + case 0x14f /* ŏ */: return u8"Ŏ" /* 0x14e */; + case 0x151 /* ő */: return u8"Ő" /* 0x150 */; + case 0x153 /* œ */: return u8"Œ" /* 0x152 */; + case 0x155 /* ŕ */: return u8"Ŕ" /* 0x154 */; + case 0x157 /* ŗ */: return u8"Ŗ" /* 0x156 */; + case 0x159 /* ř */: return u8"Ř" /* 0x158 */; + case 0x15b /* ś */: return u8"Ś" /* 0x15a */; + case 0x15d /* ŝ */: return u8"Ŝ" /* 0x15c */; + case 0x15f /* ş */: return u8"Ş" /* 0x15e */; + case 0x161 /* š */: return u8"Š" /* 0x160 */; + case 0x163 /* ţ */: return u8"Ţ" /* 0x162 */; + case 0x165 /* ť */: return u8"Ť" /* 0x164 */; + case 0x167 /* ŧ */: return u8"Ŧ" /* 0x166 */; + case 0x169 /* ũ */: return u8"Ũ" /* 0x168 */; + case 0x16b /* ū */: return u8"Ū" /* 0x16a */; + case 0x16d /* ŭ */: return u8"Ŭ" /* 0x16c */; + case 0x16f /* ů */: return u8"Ů" /* 0x16e */; + case 0x171 /* ű */: return u8"Ű" /* 0x170 */; + case 0x173 /* ų */: return u8"Ų" /* 0x172 */; + case 0x175 /* ŵ */: return u8"Ŵ" /* 0x174 */; + case 0x177 /* ŷ */: return u8"Ŷ" /* 0x176 */; + case 0x17a /* ź */: return u8"Ź" /* 0x179 */; + case 0x17c /* ż */: return u8"Ż" /* 0x17b */; + case 0x17e /* ž */: return u8"Ž" /* 0x17d */; + case 0x17f /* ſ */: return u8"S" /* 0x53 */; + case 0x180 /* ƀ */: return u8"Ƀ" /* 0x243 */; + case 0x183 /* ƃ */: return u8"Ƃ" /* 0x182 */; + case 0x185 /* ƅ */: return u8"Ƅ" /* 0x184 */; + case 0x188 /* ƈ */: return u8"Ƈ" /* 0x187 */; + case 0x18c /* ƌ */: return u8"Ƌ" /* 0x18b */; + case 0x192 /* ƒ */: return u8"Ƒ" /* 0x191 */; + case 0x195 /* ƕ */: return u8"Ƕ" /* 0x1f6 */; + case 0x199 /* ƙ */: return u8"Ƙ" /* 0x198 */; + case 0x19a /* ƚ */: return u8"Ƚ" /* 0x23d */; + case 0x19e /* ƞ */: return u8"Ƞ" /* 0x220 */; + case 0x1a1 /* ơ */: return u8"Ơ" /* 0x1a0 */; + case 0x1a3 /* ƣ */: return u8"Ƣ" /* 0x1a2 */; + case 0x1a5 /* ƥ */: return u8"Ƥ" /* 0x1a4 */; + case 0x1a8 /* ƨ */: return u8"Ƨ" /* 0x1a7 */; + case 0x1ad /* ƭ */: return u8"Ƭ" /* 0x1ac */; + case 0x1b0 /* ư */: return u8"Ư" /* 0x1af */; + case 0x1b4 /* ƴ */: return u8"Ƴ" /* 0x1b3 */; + case 0x1b6 /* ƶ */: return u8"Ƶ" /* 0x1b5 */; + case 0x1b9 /* ƹ */: return u8"Ƹ" /* 0x1b8 */; + case 0x1bd /* ƽ */: return u8"Ƽ" /* 0x1bc */; + case 0x1bf /* ƿ */: return u8"Ƿ" /* 0x1f7 */; + case 0x1c5 /* Dž */: return u8"DŽ" /* 0x1c4 */; + case 0x1c6 /* dž */: return u8"DŽ" /* 0x1c4 */; + case 0x1c8 /* Lj */: return u8"LJ" /* 0x1c7 */; + case 0x1c9 /* lj */: return u8"LJ" /* 0x1c7 */; + case 0x1cb /* Nj */: return u8"NJ" /* 0x1ca */; + case 0x1cc /* nj */: return u8"NJ" /* 0x1ca */; + case 0x1ce /* ǎ */: return u8"Ǎ" /* 0x1cd */; + case 0x1d0 /* ǐ */: return u8"Ǐ" /* 0x1cf */; + case 0x1d2 /* ǒ */: return u8"Ǒ" /* 0x1d1 */; + case 0x1d4 /* ǔ */: return u8"Ǔ" /* 0x1d3 */; + case 0x1d6 /* ǖ */: return u8"Ǖ" /* 0x1d5 */; + case 0x1d8 /* ǘ */: return u8"Ǘ" /* 0x1d7 */; + case 0x1da /* ǚ */: return u8"Ǚ" /* 0x1d9 */; + case 0x1dc /* ǜ */: return u8"Ǜ" /* 0x1db */; + case 0x1dd /* ǝ */: return u8"Ǝ" /* 0x18e */; + case 0x1df /* ǟ */: return u8"Ǟ" /* 0x1de */; + case 0x1e1 /* ǡ */: return u8"Ǡ" /* 0x1e0 */; + case 0x1e3 /* ǣ */: return u8"Ǣ" /* 0x1e2 */; + case 0x1e5 /* ǥ */: return u8"Ǥ" /* 0x1e4 */; + case 0x1e7 /* ǧ */: return u8"Ǧ" /* 0x1e6 */; + case 0x1e9 /* ǩ */: return u8"Ǩ" /* 0x1e8 */; + case 0x1eb /* ǫ */: return u8"Ǫ" /* 0x1ea */; + case 0x1ed /* ǭ */: return u8"Ǭ" /* 0x1ec */; + case 0x1ef /* ǯ */: return u8"Ǯ" /* 0x1ee */; + case 0x1f0 /* ǰ */: return u8"J̌" /* 0x4a,0x30c */; + case 0x1f2 /* Dz */: return u8"DZ" /* 0x1f1 */; + case 0x1f3 /* dz */: return u8"DZ" /* 0x1f1 */; + case 0x1f5 /* ǵ */: return u8"Ǵ" /* 0x1f4 */; + case 0x1f9 /* ǹ */: return u8"Ǹ" /* 0x1f8 */; + case 0x1fb /* ǻ */: return u8"Ǻ" /* 0x1fa */; + case 0x1fd /* ǽ */: return u8"Ǽ" /* 0x1fc */; + case 0x1ff /* ǿ */: return u8"Ǿ" /* 0x1fe */; + case 0x201 /* ȁ */: return u8"Ȁ" /* 0x200 */; + case 0x203 /* ȃ */: return u8"Ȃ" /* 0x202 */; + case 0x205 /* ȅ */: return u8"Ȅ" /* 0x204 */; + case 0x207 /* ȇ */: return u8"Ȇ" /* 0x206 */; + case 0x209 /* ȉ */: return u8"Ȉ" /* 0x208 */; + case 0x20b /* ȋ */: return u8"Ȋ" /* 0x20a */; + case 0x20d /* ȍ */: return u8"Ȍ" /* 0x20c */; + case 0x20f /* ȏ */: return u8"Ȏ" /* 0x20e */; + case 0x211 /* ȑ */: return u8"Ȑ" /* 0x210 */; + case 0x213 /* ȓ */: return u8"Ȓ" /* 0x212 */; + case 0x215 /* ȕ */: return u8"Ȕ" /* 0x214 */; + case 0x217 /* ȗ */: return u8"Ȗ" /* 0x216 */; + case 0x219 /* ș */: return u8"Ș" /* 0x218 */; + case 0x21b /* ț */: return u8"Ț" /* 0x21a */; + case 0x21d /* ȝ */: return u8"Ȝ" /* 0x21c */; + case 0x21f /* ȟ */: return u8"Ȟ" /* 0x21e */; + case 0x223 /* ȣ */: return u8"Ȣ" /* 0x222 */; + case 0x225 /* ȥ */: return u8"Ȥ" /* 0x224 */; + case 0x227 /* ȧ */: return u8"Ȧ" /* 0x226 */; + case 0x229 /* ȩ */: return u8"Ȩ" /* 0x228 */; + case 0x22b /* ȫ */: return u8"Ȫ" /* 0x22a */; + case 0x22d /* ȭ */: return u8"Ȭ" /* 0x22c */; + case 0x22f /* ȯ */: return u8"Ȯ" /* 0x22e */; + case 0x231 /* ȱ */: return u8"Ȱ" /* 0x230 */; + case 0x233 /* ȳ */: return u8"Ȳ" /* 0x232 */; + case 0x23c /* ȼ */: return u8"Ȼ" /* 0x23b */; + case 0x23f /* ȿ */: return u8"Ȿ" /* 0x2c7e */; + case 0x240 /* ɀ */: return u8"Ɀ" /* 0x2c7f */; + case 0x242 /* ɂ */: return u8"Ɂ" /* 0x241 */; + case 0x247 /* ɇ */: return u8"Ɇ" /* 0x246 */; + case 0x249 /* ɉ */: return u8"Ɉ" /* 0x248 */; + case 0x24b /* ɋ */: return u8"Ɋ" /* 0x24a */; + case 0x24d /* ɍ */: return u8"Ɍ" /* 0x24c */; + case 0x24f /* ɏ */: return u8"Ɏ" /* 0x24e */; + case 0x250 /* ɐ */: return u8"Ɐ" /* 0x2c6f */; + case 0x251 /* ɑ */: return u8"Ɑ" /* 0x2c6d */; + case 0x252 /* ɒ */: return u8"Ɒ" /* 0x2c70 */; + case 0x253 /* ɓ */: return u8"Ɓ" /* 0x181 */; + case 0x254 /* ɔ */: return u8"Ɔ" /* 0x186 */; + case 0x256 /* ɖ */: return u8"Ɖ" /* 0x189 */; + case 0x257 /* ɗ */: return u8"Ɗ" /* 0x18a */; + case 0x259 /* ə */: return u8"Ə" /* 0x18f */; + case 0x25b /* ɛ */: return u8"Ɛ" /* 0x190 */; + case 0x25c /* ɜ */: return u8"Ɜ" /* 0xa7ab */; + case 0x260 /* ɠ */: return u8"Ɠ" /* 0x193 */; + case 0x261 /* ɡ */: return u8"Ɡ" /* 0xa7ac */; + case 0x263 /* ɣ */: return u8"Ɣ" /* 0x194 */; + case 0x265 /* ɥ */: return u8"Ɥ" /* 0xa78d */; + case 0x266 /* ɦ */: return u8"Ɦ" /* 0xa7aa */; + case 0x268 /* ɨ */: return u8"Ɨ" /* 0x197 */; + case 0x269 /* ɩ */: return u8"Ɩ" /* 0x196 */; + case 0x26a /* ɪ */: return u8"Ɪ" /* 0xa7ae */; + case 0x26b /* ɫ */: return u8"Ɫ" /* 0x2c62 */; + case 0x26c /* ɬ */: return u8"Ɬ" /* 0xa7ad */; + case 0x26f /* ɯ */: return u8"Ɯ" /* 0x19c */; + case 0x271 /* ɱ */: return u8"Ɱ" /* 0x2c6e */; + case 0x272 /* ɲ */: return u8"Ɲ" /* 0x19d */; + case 0x275 /* ɵ */: return u8"Ɵ" /* 0x19f */; + case 0x27d /* ɽ */: return u8"Ɽ" /* 0x2c64 */; + case 0x280 /* ʀ */: return u8"Ʀ" /* 0x1a6 */; + case 0x282 /* ʂ */: return u8"Ʂ" /* 0xa7c5 */; + case 0x283 /* ʃ */: return u8"Ʃ" /* 0x1a9 */; + case 0x287 /* ʇ */: return u8"Ʇ" /* 0xa7b1 */; + case 0x288 /* ʈ */: return u8"Ʈ" /* 0x1ae */; + case 0x289 /* ʉ */: return u8"Ʉ" /* 0x244 */; + case 0x28a /* ʊ */: return u8"Ʊ" /* 0x1b1 */; + case 0x28b /* ʋ */: return u8"Ʋ" /* 0x1b2 */; + case 0x28c /* ʌ */: return u8"Ʌ" /* 0x245 */; + case 0x292 /* ʒ */: return u8"Ʒ" /* 0x1b7 */; + case 0x29d /* ʝ */: return u8"Ʝ" /* 0xa7b2 */; + case 0x29e /* ʞ */: return u8"Ʞ" /* 0xa7b0 */; + case 0x345 /* ͅ */: return u8"Ι" /* 0x399 */; + case 0x371 /* ͱ */: return u8"Ͱ" /* 0x370 */; + case 0x373 /* ͳ */: return u8"Ͳ" /* 0x372 */; + case 0x377 /* ͷ */: return u8"Ͷ" /* 0x376 */; + case 0x37b /* ͻ */: return u8"Ͻ" /* 0x3fd */; + case 0x37c /* ͼ */: return u8"Ͼ" /* 0x3fe */; + case 0x37d /* ͽ */: return u8"Ͽ" /* 0x3ff */; + case 0x390 /* ΐ */: return u8"Ϊ́" /* 0x399,0x308,0x301 */; + case 0x3ac /* ά */: return u8"Ά" /* 0x386 */; + case 0x3ad /* έ */: return u8"Έ" /* 0x388 */; + case 0x3ae /* ή */: return u8"Ή" /* 0x389 */; + case 0x3af /* ί */: return u8"Ί" /* 0x38a */; + case 0x3b0 /* ΰ */: return u8"Ϋ́" /* 0x3a5,0x308,0x301 */; + case 0x3b1 /* α */: return u8"Α" /* 0x391 */; + case 0x3b2 /* β */: return u8"Β" /* 0x392 */; + case 0x3b3 /* γ */: return u8"Γ" /* 0x393 */; + case 0x3b4 /* δ */: return u8"Δ" /* 0x394 */; + case 0x3b5 /* ε */: return u8"Ε" /* 0x395 */; + case 0x3b6 /* ζ */: return u8"Ζ" /* 0x396 */; + case 0x3b7 /* η */: return u8"Η" /* 0x397 */; + case 0x3b8 /* θ */: return u8"Θ" /* 0x398 */; + case 0x3b9 /* ι */: return u8"Ι" /* 0x399 */; + case 0x3ba /* κ */: return u8"Κ" /* 0x39a */; + case 0x3bb /* λ */: return u8"Λ" /* 0x39b */; + case 0x3bc /* μ */: return u8"Μ" /* 0x39c */; + case 0x3bd /* ν */: return u8"Ν" /* 0x39d */; + case 0x3be /* ξ */: return u8"Ξ" /* 0x39e */; + case 0x3bf /* ο */: return u8"Ο" /* 0x39f */; + case 0x3c0 /* π */: return u8"Π" /* 0x3a0 */; + case 0x3c1 /* ρ */: return u8"Ρ" /* 0x3a1 */; + case 0x3c2 /* ς */: return u8"Σ" /* 0x3a3 */; + case 0x3c3 /* σ */: return u8"Σ" /* 0x3a3 */; + case 0x3c4 /* τ */: return u8"Τ" /* 0x3a4 */; + case 0x3c5 /* υ */: return u8"Υ" /* 0x3a5 */; + case 0x3c6 /* φ */: return u8"Φ" /* 0x3a6 */; + case 0x3c7 /* χ */: return u8"Χ" /* 0x3a7 */; + case 0x3c8 /* ψ */: return u8"Ψ" /* 0x3a8 */; + case 0x3c9 /* ω */: return u8"Ω" /* 0x3a9 */; + case 0x3ca /* ϊ */: return u8"Ϊ" /* 0x3aa */; + case 0x3cb /* ϋ */: return u8"Ϋ" /* 0x3ab */; + case 0x3cc /* ό */: return u8"Ό" /* 0x38c */; + case 0x3cd /* ύ */: return u8"Ύ" /* 0x38e */; + case 0x3ce /* ώ */: return u8"Ώ" /* 0x38f */; + case 0x3d0 /* ϐ */: return u8"Β" /* 0x392 */; + case 0x3d1 /* ϑ */: return u8"Θ" /* 0x398 */; + case 0x3d5 /* ϕ */: return u8"Φ" /* 0x3a6 */; + case 0x3d6 /* ϖ */: return u8"Π" /* 0x3a0 */; + case 0x3d7 /* ϗ */: return u8"Ϗ" /* 0x3cf */; + case 0x3d9 /* ϙ */: return u8"Ϙ" /* 0x3d8 */; + case 0x3db /* ϛ */: return u8"Ϛ" /* 0x3da */; + case 0x3dd /* ϝ */: return u8"Ϝ" /* 0x3dc */; + case 0x3df /* ϟ */: return u8"Ϟ" /* 0x3de */; + case 0x3e1 /* ϡ */: return u8"Ϡ" /* 0x3e0 */; + case 0x3e3 /* ϣ */: return u8"Ϣ" /* 0x3e2 */; + case 0x3e5 /* ϥ */: return u8"Ϥ" /* 0x3e4 */; + case 0x3e7 /* ϧ */: return u8"Ϧ" /* 0x3e6 */; + case 0x3e9 /* ϩ */: return u8"Ϩ" /* 0x3e8 */; + case 0x3eb /* ϫ */: return u8"Ϫ" /* 0x3ea */; + case 0x3ed /* ϭ */: return u8"Ϭ" /* 0x3ec */; + case 0x3ef /* ϯ */: return u8"Ϯ" /* 0x3ee */; + case 0x3f0 /* ϰ */: return u8"Κ" /* 0x39a */; + case 0x3f1 /* ϱ */: return u8"Ρ" /* 0x3a1 */; + case 0x3f2 /* ϲ */: return u8"Ϲ" /* 0x3f9 */; + case 0x3f3 /* ϳ */: return u8"Ϳ" /* 0x37f */; + case 0x3f5 /* ϵ */: return u8"Ε" /* 0x395 */; + case 0x3f8 /* ϸ */: return u8"Ϸ" /* 0x3f7 */; + case 0x3fb /* ϻ */: return u8"Ϻ" /* 0x3fa */; + case 0x430 /* а */: return u8"А" /* 0x410 */; + case 0x431 /* б */: return u8"Б" /* 0x411 */; + case 0x432 /* в */: return u8"В" /* 0x412 */; + case 0x433 /* г */: return u8"Г" /* 0x413 */; + case 0x434 /* д */: return u8"Д" /* 0x414 */; + case 0x435 /* е */: return u8"Е" /* 0x415 */; + case 0x436 /* ж */: return u8"Ж" /* 0x416 */; + case 0x437 /* з */: return u8"З" /* 0x417 */; + case 0x438 /* и */: return u8"И" /* 0x418 */; + case 0x439 /* й */: return u8"Й" /* 0x419 */; + case 0x43a /* к */: return u8"К" /* 0x41a */; + case 0x43b /* л */: return u8"Л" /* 0x41b */; + case 0x43c /* м */: return u8"М" /* 0x41c */; + case 0x43d /* н */: return u8"Н" /* 0x41d */; + case 0x43e /* о */: return u8"О" /* 0x41e */; + case 0x43f /* п */: return u8"П" /* 0x41f */; + case 0x440 /* р */: return u8"Р" /* 0x420 */; + case 0x441 /* с */: return u8"С" /* 0x421 */; + case 0x442 /* т */: return u8"Т" /* 0x422 */; + case 0x443 /* у */: return u8"У" /* 0x423 */; + case 0x444 /* ф */: return u8"Ф" /* 0x424 */; + case 0x445 /* х */: return u8"Х" /* 0x425 */; + case 0x446 /* ц */: return u8"Ц" /* 0x426 */; + case 0x447 /* ч */: return u8"Ч" /* 0x427 */; + case 0x448 /* ш */: return u8"Ш" /* 0x428 */; + case 0x449 /* щ */: return u8"Щ" /* 0x429 */; + case 0x44a /* ъ */: return u8"Ъ" /* 0x42a */; + case 0x44b /* ы */: return u8"Ы" /* 0x42b */; + case 0x44c /* ь */: return u8"Ь" /* 0x42c */; + case 0x44d /* э */: return u8"Э" /* 0x42d */; + case 0x44e /* ю */: return u8"Ю" /* 0x42e */; + case 0x44f /* я */: return u8"Я" /* 0x42f */; + case 0x450 /* ѐ */: return u8"Ѐ" /* 0x400 */; + case 0x451 /* ё */: return u8"Ё" /* 0x401 */; + case 0x452 /* ђ */: return u8"Ђ" /* 0x402 */; + case 0x453 /* ѓ */: return u8"Ѓ" /* 0x403 */; + case 0x454 /* є */: return u8"Є" /* 0x404 */; + case 0x455 /* ѕ */: return u8"Ѕ" /* 0x405 */; + case 0x456 /* і */: return u8"І" /* 0x406 */; + case 0x457 /* ї */: return u8"Ї" /* 0x407 */; + case 0x458 /* ј */: return u8"Ј" /* 0x408 */; + case 0x459 /* љ */: return u8"Љ" /* 0x409 */; + case 0x45a /* њ */: return u8"Њ" /* 0x40a */; + case 0x45b /* ћ */: return u8"Ћ" /* 0x40b */; + case 0x45c /* ќ */: return u8"Ќ" /* 0x40c */; + case 0x45d /* ѝ */: return u8"Ѝ" /* 0x40d */; + case 0x45e /* ў */: return u8"Ў" /* 0x40e */; + case 0x45f /* џ */: return u8"Џ" /* 0x40f */; + case 0x461 /* ѡ */: return u8"Ѡ" /* 0x460 */; + case 0x463 /* ѣ */: return u8"Ѣ" /* 0x462 */; + case 0x465 /* ѥ */: return u8"Ѥ" /* 0x464 */; + case 0x467 /* ѧ */: return u8"Ѧ" /* 0x466 */; + case 0x469 /* ѩ */: return u8"Ѩ" /* 0x468 */; + case 0x46b /* ѫ */: return u8"Ѫ" /* 0x46a */; + case 0x46d /* ѭ */: return u8"Ѭ" /* 0x46c */; + case 0x46f /* ѯ */: return u8"Ѯ" /* 0x46e */; + case 0x471 /* ѱ */: return u8"Ѱ" /* 0x470 */; + case 0x473 /* ѳ */: return u8"Ѳ" /* 0x472 */; + case 0x475 /* ѵ */: return u8"Ѵ" /* 0x474 */; + case 0x477 /* ѷ */: return u8"Ѷ" /* 0x476 */; + case 0x479 /* ѹ */: return u8"Ѹ" /* 0x478 */; + case 0x47b /* ѻ */: return u8"Ѻ" /* 0x47a */; + case 0x47d /* ѽ */: return u8"Ѽ" /* 0x47c */; + case 0x47f /* ѿ */: return u8"Ѿ" /* 0x47e */; + case 0x481 /* ҁ */: return u8"Ҁ" /* 0x480 */; + case 0x48b /* ҋ */: return u8"Ҋ" /* 0x48a */; + case 0x48d /* ҍ */: return u8"Ҍ" /* 0x48c */; + case 0x48f /* ҏ */: return u8"Ҏ" /* 0x48e */; + case 0x491 /* ґ */: return u8"Ґ" /* 0x490 */; + case 0x493 /* ғ */: return u8"Ғ" /* 0x492 */; + case 0x495 /* ҕ */: return u8"Ҕ" /* 0x494 */; + case 0x497 /* җ */: return u8"Җ" /* 0x496 */; + case 0x499 /* ҙ */: return u8"Ҙ" /* 0x498 */; + case 0x49b /* қ */: return u8"Қ" /* 0x49a */; + case 0x49d /* ҝ */: return u8"Ҝ" /* 0x49c */; + case 0x49f /* ҟ */: return u8"Ҟ" /* 0x49e */; + case 0x4a1 /* ҡ */: return u8"Ҡ" /* 0x4a0 */; + case 0x4a3 /* ң */: return u8"Ң" /* 0x4a2 */; + case 0x4a5 /* ҥ */: return u8"Ҥ" /* 0x4a4 */; + case 0x4a7 /* ҧ */: return u8"Ҧ" /* 0x4a6 */; + case 0x4a9 /* ҩ */: return u8"Ҩ" /* 0x4a8 */; + case 0x4ab /* ҫ */: return u8"Ҫ" /* 0x4aa */; + case 0x4ad /* ҭ */: return u8"Ҭ" /* 0x4ac */; + case 0x4af /* ү */: return u8"Ү" /* 0x4ae */; + case 0x4b1 /* ұ */: return u8"Ұ" /* 0x4b0 */; + case 0x4b3 /* ҳ */: return u8"Ҳ" /* 0x4b2 */; + case 0x4b5 /* ҵ */: return u8"Ҵ" /* 0x4b4 */; + case 0x4b7 /* ҷ */: return u8"Ҷ" /* 0x4b6 */; + case 0x4b9 /* ҹ */: return u8"Ҹ" /* 0x4b8 */; + case 0x4bb /* һ */: return u8"Һ" /* 0x4ba */; + case 0x4bd /* ҽ */: return u8"Ҽ" /* 0x4bc */; + case 0x4bf /* ҿ */: return u8"Ҿ" /* 0x4be */; + case 0x4c2 /* ӂ */: return u8"Ӂ" /* 0x4c1 */; + case 0x4c4 /* ӄ */: return u8"Ӄ" /* 0x4c3 */; + case 0x4c6 /* ӆ */: return u8"Ӆ" /* 0x4c5 */; + case 0x4c8 /* ӈ */: return u8"Ӈ" /* 0x4c7 */; + case 0x4ca /* ӊ */: return u8"Ӊ" /* 0x4c9 */; + case 0x4cc /* ӌ */: return u8"Ӌ" /* 0x4cb */; + case 0x4ce /* ӎ */: return u8"Ӎ" /* 0x4cd */; + case 0x4cf /* ӏ */: return u8"Ӏ" /* 0x4c0 */; + case 0x4d1 /* ӑ */: return u8"Ӑ" /* 0x4d0 */; + case 0x4d3 /* ӓ */: return u8"Ӓ" /* 0x4d2 */; + case 0x4d5 /* ӕ */: return u8"Ӕ" /* 0x4d4 */; + case 0x4d7 /* ӗ */: return u8"Ӗ" /* 0x4d6 */; + case 0x4d9 /* ә */: return u8"Ә" /* 0x4d8 */; + case 0x4db /* ӛ */: return u8"Ӛ" /* 0x4da */; + case 0x4dd /* ӝ */: return u8"Ӝ" /* 0x4dc */; + case 0x4df /* ӟ */: return u8"Ӟ" /* 0x4de */; + case 0x4e1 /* ӡ */: return u8"Ӡ" /* 0x4e0 */; + case 0x4e3 /* ӣ */: return u8"Ӣ" /* 0x4e2 */; + case 0x4e5 /* ӥ */: return u8"Ӥ" /* 0x4e4 */; + case 0x4e7 /* ӧ */: return u8"Ӧ" /* 0x4e6 */; + case 0x4e9 /* ө */: return u8"Ө" /* 0x4e8 */; + case 0x4eb /* ӫ */: return u8"Ӫ" /* 0x4ea */; + case 0x4ed /* ӭ */: return u8"Ӭ" /* 0x4ec */; + case 0x4ef /* ӯ */: return u8"Ӯ" /* 0x4ee */; + case 0x4f1 /* ӱ */: return u8"Ӱ" /* 0x4f0 */; + case 0x4f3 /* ӳ */: return u8"Ӳ" /* 0x4f2 */; + case 0x4f5 /* ӵ */: return u8"Ӵ" /* 0x4f4 */; + case 0x4f7 /* ӷ */: return u8"Ӷ" /* 0x4f6 */; + case 0x4f9 /* ӹ */: return u8"Ӹ" /* 0x4f8 */; + case 0x4fb /* ӻ */: return u8"Ӻ" /* 0x4fa */; + case 0x4fd /* ӽ */: return u8"Ӽ" /* 0x4fc */; + case 0x4ff /* ӿ */: return u8"Ӿ" /* 0x4fe */; + case 0x501 /* ԁ */: return u8"Ԁ" /* 0x500 */; + case 0x503 /* ԃ */: return u8"Ԃ" /* 0x502 */; + case 0x505 /* ԅ */: return u8"Ԅ" /* 0x504 */; + case 0x507 /* ԇ */: return u8"Ԇ" /* 0x506 */; + case 0x509 /* ԉ */: return u8"Ԉ" /* 0x508 */; + case 0x50b /* ԋ */: return u8"Ԋ" /* 0x50a */; + case 0x50d /* ԍ */: return u8"Ԍ" /* 0x50c */; + case 0x50f /* ԏ */: return u8"Ԏ" /* 0x50e */; + case 0x511 /* ԑ */: return u8"Ԑ" /* 0x510 */; + case 0x513 /* ԓ */: return u8"Ԓ" /* 0x512 */; + case 0x515 /* ԕ */: return u8"Ԕ" /* 0x514 */; + case 0x517 /* ԗ */: return u8"Ԗ" /* 0x516 */; + case 0x519 /* ԙ */: return u8"Ԙ" /* 0x518 */; + case 0x51b /* ԛ */: return u8"Ԛ" /* 0x51a */; + case 0x51d /* ԝ */: return u8"Ԝ" /* 0x51c */; + case 0x51f /* ԟ */: return u8"Ԟ" /* 0x51e */; + case 0x521 /* ԡ */: return u8"Ԡ" /* 0x520 */; + case 0x523 /* ԣ */: return u8"Ԣ" /* 0x522 */; + case 0x525 /* ԥ */: return u8"Ԥ" /* 0x524 */; + case 0x527 /* ԧ */: return u8"Ԧ" /* 0x526 */; + case 0x529 /* ԩ */: return u8"Ԩ" /* 0x528 */; + case 0x52b /* ԫ */: return u8"Ԫ" /* 0x52a */; + case 0x52d /* ԭ */: return u8"Ԭ" /* 0x52c */; + case 0x52f /* ԯ */: return u8"Ԯ" /* 0x52e */; + case 0x561 /* ա */: return u8"Ա" /* 0x531 */; + case 0x562 /* բ */: return u8"Բ" /* 0x532 */; + case 0x563 /* գ */: return u8"Գ" /* 0x533 */; + case 0x564 /* դ */: return u8"Դ" /* 0x534 */; + case 0x565 /* ե */: return u8"Ե" /* 0x535 */; + case 0x566 /* զ */: return u8"Զ" /* 0x536 */; + case 0x567 /* է */: return u8"Է" /* 0x537 */; + case 0x568 /* ը */: return u8"Ը" /* 0x538 */; + case 0x569 /* թ */: return u8"Թ" /* 0x539 */; + case 0x56a /* ժ */: return u8"Ժ" /* 0x53a */; + case 0x56b /* ի */: return u8"Ի" /* 0x53b */; + case 0x56c /* լ */: return u8"Լ" /* 0x53c */; + case 0x56d /* խ */: return u8"Խ" /* 0x53d */; + case 0x56e /* ծ */: return u8"Ծ" /* 0x53e */; + case 0x56f /* կ */: return u8"Կ" /* 0x53f */; + case 0x570 /* հ */: return u8"Հ" /* 0x540 */; + case 0x571 /* ձ */: return u8"Ձ" /* 0x541 */; + case 0x572 /* ղ */: return u8"Ղ" /* 0x542 */; + case 0x573 /* ճ */: return u8"Ճ" /* 0x543 */; + case 0x574 /* մ */: return u8"Մ" /* 0x544 */; + case 0x575 /* յ */: return u8"Յ" /* 0x545 */; + case 0x576 /* ն */: return u8"Ն" /* 0x546 */; + case 0x577 /* շ */: return u8"Շ" /* 0x547 */; + case 0x578 /* ո */: return u8"Ո" /* 0x548 */; + case 0x579 /* չ */: return u8"Չ" /* 0x549 */; + case 0x57a /* պ */: return u8"Պ" /* 0x54a */; + case 0x57b /* ջ */: return u8"Ջ" /* 0x54b */; + case 0x57c /* ռ */: return u8"Ռ" /* 0x54c */; + case 0x57d /* ս */: return u8"Ս" /* 0x54d */; + case 0x57e /* վ */: return u8"Վ" /* 0x54e */; + case 0x57f /* տ */: return u8"Տ" /* 0x54f */; + case 0x580 /* ր */: return u8"Ր" /* 0x550 */; + case 0x581 /* ց */: return u8"Ց" /* 0x551 */; + case 0x582 /* ւ */: return u8"Ւ" /* 0x552 */; + case 0x583 /* փ */: return u8"Փ" /* 0x553 */; + case 0x584 /* ք */: return u8"Ք" /* 0x554 */; + case 0x585 /* օ */: return u8"Օ" /* 0x555 */; + case 0x586 /* ֆ */: return u8"Ֆ" /* 0x556 */; + case 0x587 /* և */: return u8"ԵՒ" /* 0x535,0x552 */; + case 0x10d0 /* ა */: return u8"Ა" /* 0x1c90 */; + case 0x10d1 /* ბ */: return u8"Ბ" /* 0x1c91 */; + case 0x10d2 /* გ */: return u8"Გ" /* 0x1c92 */; + case 0x10d3 /* დ */: return u8"Დ" /* 0x1c93 */; + case 0x10d4 /* ე */: return u8"Ე" /* 0x1c94 */; + case 0x10d5 /* ვ */: return u8"Ვ" /* 0x1c95 */; + case 0x10d6 /* ზ */: return u8"Ზ" /* 0x1c96 */; + case 0x10d7 /* თ */: return u8"Თ" /* 0x1c97 */; + case 0x10d8 /* ი */: return u8"Ი" /* 0x1c98 */; + case 0x10d9 /* კ */: return u8"Კ" /* 0x1c99 */; + case 0x10da /* ლ */: return u8"Ლ" /* 0x1c9a */; + case 0x10db /* მ */: return u8"Მ" /* 0x1c9b */; + case 0x10dc /* ნ */: return u8"Ნ" /* 0x1c9c */; + case 0x10dd /* ო */: return u8"Ო" /* 0x1c9d */; + case 0x10de /* პ */: return u8"Პ" /* 0x1c9e */; + case 0x10df /* ჟ */: return u8"Ჟ" /* 0x1c9f */; + case 0x10e0 /* რ */: return u8"Რ" /* 0x1ca0 */; + case 0x10e1 /* ს */: return u8"Ს" /* 0x1ca1 */; + case 0x10e2 /* ტ */: return u8"Ტ" /* 0x1ca2 */; + case 0x10e3 /* უ */: return u8"Უ" /* 0x1ca3 */; + case 0x10e4 /* ფ */: return u8"Ფ" /* 0x1ca4 */; + case 0x10e5 /* ქ */: return u8"Ქ" /* 0x1ca5 */; + case 0x10e6 /* ღ */: return u8"Ღ" /* 0x1ca6 */; + case 0x10e7 /* ყ */: return u8"Ყ" /* 0x1ca7 */; + case 0x10e8 /* შ */: return u8"Შ" /* 0x1ca8 */; + case 0x10e9 /* ჩ */: return u8"Ჩ" /* 0x1ca9 */; + case 0x10ea /* ც */: return u8"Ც" /* 0x1caa */; + case 0x10eb /* ძ */: return u8"Ძ" /* 0x1cab */; + case 0x10ec /* წ */: return u8"Წ" /* 0x1cac */; + case 0x10ed /* ჭ */: return u8"Ჭ" /* 0x1cad */; + case 0x10ee /* ხ */: return u8"Ხ" /* 0x1cae */; + case 0x10ef /* ჯ */: return u8"Ჯ" /* 0x1caf */; + case 0x10f0 /* ჰ */: return u8"Ჰ" /* 0x1cb0 */; + case 0x10f1 /* ჱ */: return u8"Ჱ" /* 0x1cb1 */; + case 0x10f2 /* ჲ */: return u8"Ჲ" /* 0x1cb2 */; + case 0x10f3 /* ჳ */: return u8"Ჳ" /* 0x1cb3 */; + case 0x10f4 /* ჴ */: return u8"Ჴ" /* 0x1cb4 */; + case 0x10f5 /* ჵ */: return u8"Ჵ" /* 0x1cb5 */; + case 0x10f6 /* ჶ */: return u8"Ჶ" /* 0x1cb6 */; + case 0x10f7 /* ჷ */: return u8"Ჷ" /* 0x1cb7 */; + case 0x10f8 /* ჸ */: return u8"Ჸ" /* 0x1cb8 */; + case 0x10f9 /* ჹ */: return u8"Ჹ" /* 0x1cb9 */; + case 0x10fa /* ჺ */: return u8"Ჺ" /* 0x1cba */; + case 0x10fd /* ჽ */: return u8"Ჽ" /* 0x1cbd */; + case 0x10fe /* ჾ */: return u8"Ჾ" /* 0x1cbe */; + case 0x10ff /* ჿ */: return u8"Ჿ" /* 0x1cbf */; + case 0x13f8 /* ᏸ */: return u8"Ᏸ" /* 0x13f0 */; + case 0x13f9 /* ᏹ */: return u8"Ᏹ" /* 0x13f1 */; + case 0x13fa /* ᏺ */: return u8"Ᏺ" /* 0x13f2 */; + case 0x13fb /* ᏻ */: return u8"Ᏻ" /* 0x13f3 */; + case 0x13fc /* ᏼ */: return u8"Ᏼ" /* 0x13f4 */; + case 0x13fd /* ᏽ */: return u8"Ᏽ" /* 0x13f5 */; + case 0x1c80 /* ᲀ */: return u8"В" /* 0x412 */; + case 0x1c81 /* ᲁ */: return u8"Д" /* 0x414 */; + case 0x1c82 /* ᲂ */: return u8"О" /* 0x41e */; + case 0x1c83 /* ᲃ */: return u8"С" /* 0x421 */; + case 0x1c84 /* ᲄ */: return u8"Т" /* 0x422 */; + case 0x1c85 /* ᲅ */: return u8"Т" /* 0x422 */; + case 0x1c86 /* ᲆ */: return u8"Ъ" /* 0x42a */; + case 0x1c87 /* ᲇ */: return u8"Ѣ" /* 0x462 */; + case 0x1c88 /* ᲈ */: return u8"Ꙋ" /* 0xa64a */; + case 0x1d79 /* ᵹ */: return u8"Ᵹ" /* 0xa77d */; + case 0x1d7d /* ᵽ */: return u8"Ᵽ" /* 0x2c63 */; + case 0x1d8e /* ᶎ */: return u8"Ᶎ" /* 0xa7c6 */; + case 0x1e01 /* ḁ */: return u8"Ḁ" /* 0x1e00 */; + case 0x1e03 /* ḃ */: return u8"Ḃ" /* 0x1e02 */; + case 0x1e05 /* ḅ */: return u8"Ḅ" /* 0x1e04 */; + case 0x1e07 /* ḇ */: return u8"Ḇ" /* 0x1e06 */; + case 0x1e09 /* ḉ */: return u8"Ḉ" /* 0x1e08 */; + case 0x1e0b /* ḋ */: return u8"Ḋ" /* 0x1e0a */; + case 0x1e0d /* ḍ */: return u8"Ḍ" /* 0x1e0c */; + case 0x1e0f /* ḏ */: return u8"Ḏ" /* 0x1e0e */; + case 0x1e11 /* ḑ */: return u8"Ḑ" /* 0x1e10 */; + case 0x1e13 /* ḓ */: return u8"Ḓ" /* 0x1e12 */; + case 0x1e15 /* ḕ */: return u8"Ḕ" /* 0x1e14 */; + case 0x1e17 /* ḗ */: return u8"Ḗ" /* 0x1e16 */; + case 0x1e19 /* ḙ */: return u8"Ḙ" /* 0x1e18 */; + case 0x1e1b /* ḛ */: return u8"Ḛ" /* 0x1e1a */; + case 0x1e1d /* ḝ */: return u8"Ḝ" /* 0x1e1c */; + case 0x1e1f /* ḟ */: return u8"Ḟ" /* 0x1e1e */; + case 0x1e21 /* ḡ */: return u8"Ḡ" /* 0x1e20 */; + case 0x1e23 /* ḣ */: return u8"Ḣ" /* 0x1e22 */; + case 0x1e25 /* ḥ */: return u8"Ḥ" /* 0x1e24 */; + case 0x1e27 /* ḧ */: return u8"Ḧ" /* 0x1e26 */; + case 0x1e29 /* ḩ */: return u8"Ḩ" /* 0x1e28 */; + case 0x1e2b /* ḫ */: return u8"Ḫ" /* 0x1e2a */; + case 0x1e2d /* ḭ */: return u8"Ḭ" /* 0x1e2c */; + case 0x1e2f /* ḯ */: return u8"Ḯ" /* 0x1e2e */; + case 0x1e31 /* ḱ */: return u8"Ḱ" /* 0x1e30 */; + case 0x1e33 /* ḳ */: return u8"Ḳ" /* 0x1e32 */; + case 0x1e35 /* ḵ */: return u8"Ḵ" /* 0x1e34 */; + case 0x1e37 /* ḷ */: return u8"Ḷ" /* 0x1e36 */; + case 0x1e39 /* ḹ */: return u8"Ḹ" /* 0x1e38 */; + case 0x1e3b /* ḻ */: return u8"Ḻ" /* 0x1e3a */; + case 0x1e3d /* ḽ */: return u8"Ḽ" /* 0x1e3c */; + case 0x1e3f /* ḿ */: return u8"Ḿ" /* 0x1e3e */; + case 0x1e41 /* ṁ */: return u8"Ṁ" /* 0x1e40 */; + case 0x1e43 /* ṃ */: return u8"Ṃ" /* 0x1e42 */; + case 0x1e45 /* ṅ */: return u8"Ṅ" /* 0x1e44 */; + case 0x1e47 /* ṇ */: return u8"Ṇ" /* 0x1e46 */; + case 0x1e49 /* ṉ */: return u8"Ṉ" /* 0x1e48 */; + case 0x1e4b /* ṋ */: return u8"Ṋ" /* 0x1e4a */; + case 0x1e4d /* ṍ */: return u8"Ṍ" /* 0x1e4c */; + case 0x1e4f /* ṏ */: return u8"Ṏ" /* 0x1e4e */; + case 0x1e51 /* ṑ */: return u8"Ṑ" /* 0x1e50 */; + case 0x1e53 /* ṓ */: return u8"Ṓ" /* 0x1e52 */; + case 0x1e55 /* ṕ */: return u8"Ṕ" /* 0x1e54 */; + case 0x1e57 /* ṗ */: return u8"Ṗ" /* 0x1e56 */; + case 0x1e59 /* ṙ */: return u8"Ṙ" /* 0x1e58 */; + case 0x1e5b /* ṛ */: return u8"Ṛ" /* 0x1e5a */; + case 0x1e5d /* ṝ */: return u8"Ṝ" /* 0x1e5c */; + case 0x1e5f /* ṟ */: return u8"Ṟ" /* 0x1e5e */; + case 0x1e61 /* ṡ */: return u8"Ṡ" /* 0x1e60 */; + case 0x1e63 /* ṣ */: return u8"Ṣ" /* 0x1e62 */; + case 0x1e65 /* ṥ */: return u8"Ṥ" /* 0x1e64 */; + case 0x1e67 /* ṧ */: return u8"Ṧ" /* 0x1e66 */; + case 0x1e69 /* ṩ */: return u8"Ṩ" /* 0x1e68 */; + case 0x1e6b /* ṫ */: return u8"Ṫ" /* 0x1e6a */; + case 0x1e6d /* ṭ */: return u8"Ṭ" /* 0x1e6c */; + case 0x1e6f /* ṯ */: return u8"Ṯ" /* 0x1e6e */; + case 0x1e71 /* ṱ */: return u8"Ṱ" /* 0x1e70 */; + case 0x1e73 /* ṳ */: return u8"Ṳ" /* 0x1e72 */; + case 0x1e75 /* ṵ */: return u8"Ṵ" /* 0x1e74 */; + case 0x1e77 /* ṷ */: return u8"Ṷ" /* 0x1e76 */; + case 0x1e79 /* ṹ */: return u8"Ṹ" /* 0x1e78 */; + case 0x1e7b /* ṻ */: return u8"Ṻ" /* 0x1e7a */; + case 0x1e7d /* ṽ */: return u8"Ṽ" /* 0x1e7c */; + case 0x1e7f /* ṿ */: return u8"Ṿ" /* 0x1e7e */; + case 0x1e81 /* ẁ */: return u8"Ẁ" /* 0x1e80 */; + case 0x1e83 /* ẃ */: return u8"Ẃ" /* 0x1e82 */; + case 0x1e85 /* ẅ */: return u8"Ẅ" /* 0x1e84 */; + case 0x1e87 /* ẇ */: return u8"Ẇ" /* 0x1e86 */; + case 0x1e89 /* ẉ */: return u8"Ẉ" /* 0x1e88 */; + case 0x1e8b /* ẋ */: return u8"Ẋ" /* 0x1e8a */; + case 0x1e8d /* ẍ */: return u8"Ẍ" /* 0x1e8c */; + case 0x1e8f /* ẏ */: return u8"Ẏ" /* 0x1e8e */; + case 0x1e91 /* ẑ */: return u8"Ẑ" /* 0x1e90 */; + case 0x1e93 /* ẓ */: return u8"Ẓ" /* 0x1e92 */; + case 0x1e95 /* ẕ */: return u8"Ẕ" /* 0x1e94 */; + case 0x1e96 /* ẖ */: return u8"H̱" /* 0x48,0x331 */; + case 0x1e97 /* ẗ */: return u8"T̈" /* 0x54,0x308 */; + case 0x1e98 /* ẘ */: return u8"W̊" /* 0x57,0x30a */; + case 0x1e99 /* ẙ */: return u8"Y̊" /* 0x59,0x30a */; + case 0x1e9a /* ẚ */: return u8"Aʾ" /* 0x41,0x2be */; + case 0x1e9b /* ẛ */: return u8"Ṡ" /* 0x1e60 */; + case 0x1ea1 /* ạ */: return u8"Ạ" /* 0x1ea0 */; + case 0x1ea3 /* ả */: return u8"Ả" /* 0x1ea2 */; + case 0x1ea5 /* ấ */: return u8"Ấ" /* 0x1ea4 */; + case 0x1ea7 /* ầ */: return u8"Ầ" /* 0x1ea6 */; + case 0x1ea9 /* ẩ */: return u8"Ẩ" /* 0x1ea8 */; + case 0x1eab /* ẫ */: return u8"Ẫ" /* 0x1eaa */; + case 0x1ead /* ậ */: return u8"Ậ" /* 0x1eac */; + case 0x1eaf /* ắ */: return u8"Ắ" /* 0x1eae */; + case 0x1eb1 /* ằ */: return u8"Ằ" /* 0x1eb0 */; + case 0x1eb3 /* ẳ */: return u8"Ẳ" /* 0x1eb2 */; + case 0x1eb5 /* ẵ */: return u8"Ẵ" /* 0x1eb4 */; + case 0x1eb7 /* ặ */: return u8"Ặ" /* 0x1eb6 */; + case 0x1eb9 /* ẹ */: return u8"Ẹ" /* 0x1eb8 */; + case 0x1ebb /* ẻ */: return u8"Ẻ" /* 0x1eba */; + case 0x1ebd /* ẽ */: return u8"Ẽ" /* 0x1ebc */; + case 0x1ebf /* ế */: return u8"Ế" /* 0x1ebe */; + case 0x1ec1 /* ề */: return u8"Ề" /* 0x1ec0 */; + case 0x1ec3 /* ể */: return u8"Ể" /* 0x1ec2 */; + case 0x1ec5 /* ễ */: return u8"Ễ" /* 0x1ec4 */; + case 0x1ec7 /* ệ */: return u8"Ệ" /* 0x1ec6 */; + case 0x1ec9 /* ỉ */: return u8"Ỉ" /* 0x1ec8 */; + case 0x1ecb /* ị */: return u8"Ị" /* 0x1eca */; + case 0x1ecd /* ọ */: return u8"Ọ" /* 0x1ecc */; + case 0x1ecf /* ỏ */: return u8"Ỏ" /* 0x1ece */; + case 0x1ed1 /* ố */: return u8"Ố" /* 0x1ed0 */; + case 0x1ed3 /* ồ */: return u8"Ồ" /* 0x1ed2 */; + case 0x1ed5 /* ổ */: return u8"Ổ" /* 0x1ed4 */; + case 0x1ed7 /* ỗ */: return u8"Ỗ" /* 0x1ed6 */; + case 0x1ed9 /* ộ */: return u8"Ộ" /* 0x1ed8 */; + case 0x1edb /* ớ */: return u8"Ớ" /* 0x1eda */; + case 0x1edd /* ờ */: return u8"Ờ" /* 0x1edc */; + case 0x1edf /* ở */: return u8"Ở" /* 0x1ede */; + case 0x1ee1 /* ỡ */: return u8"Ỡ" /* 0x1ee0 */; + case 0x1ee3 /* ợ */: return u8"Ợ" /* 0x1ee2 */; + case 0x1ee5 /* ụ */: return u8"Ụ" /* 0x1ee4 */; + case 0x1ee7 /* ủ */: return u8"Ủ" /* 0x1ee6 */; + case 0x1ee9 /* ứ */: return u8"Ứ" /* 0x1ee8 */; + case 0x1eeb /* ừ */: return u8"Ừ" /* 0x1eea */; + case 0x1eed /* ử */: return u8"Ử" /* 0x1eec */; + case 0x1eef /* ữ */: return u8"Ữ" /* 0x1eee */; + case 0x1ef1 /* ự */: return u8"Ự" /* 0x1ef0 */; + case 0x1ef3 /* ỳ */: return u8"Ỳ" /* 0x1ef2 */; + case 0x1ef5 /* ỵ */: return u8"Ỵ" /* 0x1ef4 */; + case 0x1ef7 /* ỷ */: return u8"Ỷ" /* 0x1ef6 */; + case 0x1ef9 /* ỹ */: return u8"Ỹ" /* 0x1ef8 */; + case 0x1efb /* ỻ */: return u8"Ỻ" /* 0x1efa */; + case 0x1efd /* ỽ */: return u8"Ỽ" /* 0x1efc */; + case 0x1eff /* ỿ */: return u8"Ỿ" /* 0x1efe */; + case 0x1f00 /* ἀ */: return u8"Ἀ" /* 0x1f08 */; + case 0x1f01 /* ἁ */: return u8"Ἁ" /* 0x1f09 */; + case 0x1f02 /* ἂ */: return u8"Ἂ" /* 0x1f0a */; + case 0x1f03 /* ἃ */: return u8"Ἃ" /* 0x1f0b */; + case 0x1f04 /* ἄ */: return u8"Ἄ" /* 0x1f0c */; + case 0x1f05 /* ἅ */: return u8"Ἅ" /* 0x1f0d */; + case 0x1f06 /* ἆ */: return u8"Ἆ" /* 0x1f0e */; + case 0x1f07 /* ἇ */: return u8"Ἇ" /* 0x1f0f */; + case 0x1f10 /* ἐ */: return u8"Ἐ" /* 0x1f18 */; + case 0x1f11 /* ἑ */: return u8"Ἑ" /* 0x1f19 */; + case 0x1f12 /* ἒ */: return u8"Ἒ" /* 0x1f1a */; + case 0x1f13 /* ἓ */: return u8"Ἓ" /* 0x1f1b */; + case 0x1f14 /* ἔ */: return u8"Ἔ" /* 0x1f1c */; + case 0x1f15 /* ἕ */: return u8"Ἕ" /* 0x1f1d */; + case 0x1f20 /* ἠ */: return u8"Ἠ" /* 0x1f28 */; + case 0x1f21 /* ἡ */: return u8"Ἡ" /* 0x1f29 */; + case 0x1f22 /* ἢ */: return u8"Ἢ" /* 0x1f2a */; + case 0x1f23 /* ἣ */: return u8"Ἣ" /* 0x1f2b */; + case 0x1f24 /* ἤ */: return u8"Ἤ" /* 0x1f2c */; + case 0x1f25 /* ἥ */: return u8"Ἥ" /* 0x1f2d */; + case 0x1f26 /* ἦ */: return u8"Ἦ" /* 0x1f2e */; + case 0x1f27 /* ἧ */: return u8"Ἧ" /* 0x1f2f */; + case 0x1f30 /* ἰ */: return u8"Ἰ" /* 0x1f38 */; + case 0x1f31 /* ἱ */: return u8"Ἱ" /* 0x1f39 */; + case 0x1f32 /* ἲ */: return u8"Ἲ" /* 0x1f3a */; + case 0x1f33 /* ἳ */: return u8"Ἳ" /* 0x1f3b */; + case 0x1f34 /* ἴ */: return u8"Ἴ" /* 0x1f3c */; + case 0x1f35 /* ἵ */: return u8"Ἵ" /* 0x1f3d */; + case 0x1f36 /* ἶ */: return u8"Ἶ" /* 0x1f3e */; + case 0x1f37 /* ἷ */: return u8"Ἷ" /* 0x1f3f */; + case 0x1f40 /* ὀ */: return u8"Ὀ" /* 0x1f48 */; + case 0x1f41 /* ὁ */: return u8"Ὁ" /* 0x1f49 */; + case 0x1f42 /* ὂ */: return u8"Ὂ" /* 0x1f4a */; + case 0x1f43 /* ὃ */: return u8"Ὃ" /* 0x1f4b */; + case 0x1f44 /* ὄ */: return u8"Ὄ" /* 0x1f4c */; + case 0x1f45 /* ὅ */: return u8"Ὅ" /* 0x1f4d */; + case 0x1f50 /* ὐ */: return u8"Υ̓" /* 0x3a5,0x313 */; + case 0x1f51 /* ὑ */: return u8"Ὑ" /* 0x1f59 */; + case 0x1f52 /* ὒ */: return u8"Υ̓̀" /* 0x3a5,0x313,0x300 */; + case 0x1f53 /* ὓ */: return u8"Ὓ" /* 0x1f5b */; + case 0x1f54 /* ὔ */: return u8"Υ̓́" /* 0x3a5,0x313,0x301 */; + case 0x1f55 /* ὕ */: return u8"Ὕ" /* 0x1f5d */; + case 0x1f56 /* ὖ */: return u8"Υ̓͂" /* 0x3a5,0x313,0x342 */; + case 0x1f57 /* ὗ */: return u8"Ὗ" /* 0x1f5f */; + case 0x1f60 /* ὠ */: return u8"Ὠ" /* 0x1f68 */; + case 0x1f61 /* ὡ */: return u8"Ὡ" /* 0x1f69 */; + case 0x1f62 /* ὢ */: return u8"Ὢ" /* 0x1f6a */; + case 0x1f63 /* ὣ */: return u8"Ὣ" /* 0x1f6b */; + case 0x1f64 /* ὤ */: return u8"Ὤ" /* 0x1f6c */; + case 0x1f65 /* ὥ */: return u8"Ὥ" /* 0x1f6d */; + case 0x1f66 /* ὦ */: return u8"Ὦ" /* 0x1f6e */; + case 0x1f67 /* ὧ */: return u8"Ὧ" /* 0x1f6f */; + case 0x1f70 /* ὰ */: return u8"Ὰ" /* 0x1fba */; + case 0x1f71 /* ά */: return u8"Ά" /* 0x1fbb */; + case 0x1f72 /* ὲ */: return u8"Ὲ" /* 0x1fc8 */; + case 0x1f73 /* έ */: return u8"Έ" /* 0x1fc9 */; + case 0x1f74 /* ὴ */: return u8"Ὴ" /* 0x1fca */; + case 0x1f75 /* ή */: return u8"Ή" /* 0x1fcb */; + case 0x1f76 /* ὶ */: return u8"Ὶ" /* 0x1fda */; + case 0x1f77 /* ί */: return u8"Ί" /* 0x1fdb */; + case 0x1f78 /* ὸ */: return u8"Ὸ" /* 0x1ff8 */; + case 0x1f79 /* ό */: return u8"Ό" /* 0x1ff9 */; + case 0x1f7a /* ὺ */: return u8"Ὺ" /* 0x1fea */; + case 0x1f7b /* ύ */: return u8"Ύ" /* 0x1feb */; + case 0x1f7c /* ὼ */: return u8"Ὼ" /* 0x1ffa */; + case 0x1f7d /* ώ */: return u8"Ώ" /* 0x1ffb */; + case 0x1f80 /* ᾀ */: return u8"ἈΙ" /* 0x1f08,0x399 */; + case 0x1f81 /* ᾁ */: return u8"ἉΙ" /* 0x1f09,0x399 */; + case 0x1f82 /* ᾂ */: return u8"ἊΙ" /* 0x1f0a,0x399 */; + case 0x1f83 /* ᾃ */: return u8"ἋΙ" /* 0x1f0b,0x399 */; + case 0x1f84 /* ᾄ */: return u8"ἌΙ" /* 0x1f0c,0x399 */; + case 0x1f85 /* ᾅ */: return u8"ἍΙ" /* 0x1f0d,0x399 */; + case 0x1f86 /* ᾆ */: return u8"ἎΙ" /* 0x1f0e,0x399 */; + case 0x1f87 /* ᾇ */: return u8"ἏΙ" /* 0x1f0f,0x399 */; + case 0x1f88 /* ᾈ */: return u8"ἈΙ" /* 0x1f08,0x399 */; + case 0x1f89 /* ᾉ */: return u8"ἉΙ" /* 0x1f09,0x399 */; + case 0x1f8a /* ᾊ */: return u8"ἊΙ" /* 0x1f0a,0x399 */; + case 0x1f8b /* ᾋ */: return u8"ἋΙ" /* 0x1f0b,0x399 */; + case 0x1f8c /* ᾌ */: return u8"ἌΙ" /* 0x1f0c,0x399 */; + case 0x1f8d /* ᾍ */: return u8"ἍΙ" /* 0x1f0d,0x399 */; + case 0x1f8e /* ᾎ */: return u8"ἎΙ" /* 0x1f0e,0x399 */; + case 0x1f8f /* ᾏ */: return u8"ἏΙ" /* 0x1f0f,0x399 */; + case 0x1f90 /* ᾐ */: return u8"ἨΙ" /* 0x1f28,0x399 */; + case 0x1f91 /* ᾑ */: return u8"ἩΙ" /* 0x1f29,0x399 */; + case 0x1f92 /* ᾒ */: return u8"ἪΙ" /* 0x1f2a,0x399 */; + case 0x1f93 /* ᾓ */: return u8"ἫΙ" /* 0x1f2b,0x399 */; + case 0x1f94 /* ᾔ */: return u8"ἬΙ" /* 0x1f2c,0x399 */; + case 0x1f95 /* ᾕ */: return u8"ἭΙ" /* 0x1f2d,0x399 */; + case 0x1f96 /* ᾖ */: return u8"ἮΙ" /* 0x1f2e,0x399 */; + case 0x1f97 /* ᾗ */: return u8"ἯΙ" /* 0x1f2f,0x399 */; + case 0x1f98 /* ᾘ */: return u8"ἨΙ" /* 0x1f28,0x399 */; + case 0x1f99 /* ᾙ */: return u8"ἩΙ" /* 0x1f29,0x399 */; + case 0x1f9a /* ᾚ */: return u8"ἪΙ" /* 0x1f2a,0x399 */; + case 0x1f9b /* ᾛ */: return u8"ἫΙ" /* 0x1f2b,0x399 */; + case 0x1f9c /* ᾜ */: return u8"ἬΙ" /* 0x1f2c,0x399 */; + case 0x1f9d /* ᾝ */: return u8"ἭΙ" /* 0x1f2d,0x399 */; + case 0x1f9e /* ᾞ */: return u8"ἮΙ" /* 0x1f2e,0x399 */; + case 0x1f9f /* ᾟ */: return u8"ἯΙ" /* 0x1f2f,0x399 */; + case 0x1fa0 /* ᾠ */: return u8"ὨΙ" /* 0x1f68,0x399 */; + case 0x1fa1 /* ᾡ */: return u8"ὩΙ" /* 0x1f69,0x399 */; + case 0x1fa2 /* ᾢ */: return u8"ὪΙ" /* 0x1f6a,0x399 */; + case 0x1fa3 /* ᾣ */: return u8"ὫΙ" /* 0x1f6b,0x399 */; + case 0x1fa4 /* ᾤ */: return u8"ὬΙ" /* 0x1f6c,0x399 */; + case 0x1fa5 /* ᾥ */: return u8"ὭΙ" /* 0x1f6d,0x399 */; + case 0x1fa6 /* ᾦ */: return u8"ὮΙ" /* 0x1f6e,0x399 */; + case 0x1fa7 /* ᾧ */: return u8"ὯΙ" /* 0x1f6f,0x399 */; + case 0x1fa8 /* ᾨ */: return u8"ὨΙ" /* 0x1f68,0x399 */; + case 0x1fa9 /* ᾩ */: return u8"ὩΙ" /* 0x1f69,0x399 */; + case 0x1faa /* ᾪ */: return u8"ὪΙ" /* 0x1f6a,0x399 */; + case 0x1fab /* ᾫ */: return u8"ὫΙ" /* 0x1f6b,0x399 */; + case 0x1fac /* ᾬ */: return u8"ὬΙ" /* 0x1f6c,0x399 */; + case 0x1fad /* ᾭ */: return u8"ὭΙ" /* 0x1f6d,0x399 */; + case 0x1fae /* ᾮ */: return u8"ὮΙ" /* 0x1f6e,0x399 */; + case 0x1faf /* ᾯ */: return u8"ὯΙ" /* 0x1f6f,0x399 */; + case 0x1fb0 /* ᾰ */: return u8"Ᾰ" /* 0x1fb8 */; + case 0x1fb1 /* ᾱ */: return u8"Ᾱ" /* 0x1fb9 */; + case 0x1fb2 /* ᾲ */: return u8"ᾺΙ" /* 0x1fba,0x399 */; + case 0x1fb3 /* ᾳ */: return u8"ΑΙ" /* 0x391,0x399 */; + case 0x1fb4 /* ᾴ */: return u8"ΆΙ" /* 0x386,0x399 */; + case 0x1fb6 /* ᾶ */: return u8"Α͂" /* 0x391,0x342 */; + case 0x1fb7 /* ᾷ */: return u8"Α͂Ι" /* 0x391,0x342,0x399 */; + case 0x1fbc /* ᾼ */: return u8"ΑΙ" /* 0x391,0x399 */; + case 0x1fbe /* ι */: return u8"Ι" /* 0x399 */; + case 0x1fc2 /* ῂ */: return u8"ῊΙ" /* 0x1fca,0x399 */; + case 0x1fc3 /* ῃ */: return u8"ΗΙ" /* 0x397,0x399 */; + case 0x1fc4 /* ῄ */: return u8"ΉΙ" /* 0x389,0x399 */; + case 0x1fc6 /* ῆ */: return u8"Η͂" /* 0x397,0x342 */; + case 0x1fc7 /* ῇ */: return u8"Η͂Ι" /* 0x397,0x342,0x399 */; + case 0x1fcc /* ῌ */: return u8"ΗΙ" /* 0x397,0x399 */; + case 0x1fd0 /* ῐ */: return u8"Ῐ" /* 0x1fd8 */; + case 0x1fd1 /* ῑ */: return u8"Ῑ" /* 0x1fd9 */; + case 0x1fd2 /* ῒ */: return u8"Ϊ̀" /* 0x399,0x308,0x300 */; + case 0x1fd3 /* ΐ */: return u8"Ϊ́" /* 0x399,0x308,0x301 */; + case 0x1fd6 /* ῖ */: return u8"Ι͂" /* 0x399,0x342 */; + case 0x1fd7 /* ῗ */: return u8"Ϊ͂" /* 0x399,0x308,0x342 */; + case 0x1fe0 /* ῠ */: return u8"Ῠ" /* 0x1fe8 */; + case 0x1fe1 /* ῡ */: return u8"Ῡ" /* 0x1fe9 */; + case 0x1fe2 /* ῢ */: return u8"Ϋ̀" /* 0x3a5,0x308,0x300 */; + case 0x1fe3 /* ΰ */: return u8"Ϋ́" /* 0x3a5,0x308,0x301 */; + case 0x1fe4 /* ῤ */: return u8"Ρ̓" /* 0x3a1,0x313 */; + case 0x1fe5 /* ῥ */: return u8"Ῥ" /* 0x1fec */; + case 0x1fe6 /* ῦ */: return u8"Υ͂" /* 0x3a5,0x342 */; + case 0x1fe7 /* ῧ */: return u8"Ϋ͂" /* 0x3a5,0x308,0x342 */; + case 0x1ff2 /* ῲ */: return u8"ῺΙ" /* 0x1ffa,0x399 */; + case 0x1ff3 /* ῳ */: return u8"ΩΙ" /* 0x3a9,0x399 */; + case 0x1ff4 /* ῴ */: return u8"ΏΙ" /* 0x38f,0x399 */; + case 0x1ff6 /* ῶ */: return u8"Ω͂" /* 0x3a9,0x342 */; + case 0x1ff7 /* ῷ */: return u8"Ω͂Ι" /* 0x3a9,0x342,0x399 */; + case 0x1ffc /* ῼ */: return u8"ΩΙ" /* 0x3a9,0x399 */; + case 0x214e /* ⅎ */: return u8"Ⅎ" /* 0x2132 */; + case 0x2170 /* ⅰ */: return u8"Ⅰ" /* 0x2160 */; + case 0x2171 /* ⅱ */: return u8"Ⅱ" /* 0x2161 */; + case 0x2172 /* ⅲ */: return u8"Ⅲ" /* 0x2162 */; + case 0x2173 /* ⅳ */: return u8"Ⅳ" /* 0x2163 */; + case 0x2174 /* ⅴ */: return u8"Ⅴ" /* 0x2164 */; + case 0x2175 /* ⅵ */: return u8"Ⅵ" /* 0x2165 */; + case 0x2176 /* ⅶ */: return u8"Ⅶ" /* 0x2166 */; + case 0x2177 /* ⅷ */: return u8"Ⅷ" /* 0x2167 */; + case 0x2178 /* ⅸ */: return u8"Ⅸ" /* 0x2168 */; + case 0x2179 /* ⅹ */: return u8"Ⅹ" /* 0x2169 */; + case 0x217a /* ⅺ */: return u8"Ⅺ" /* 0x216a */; + case 0x217b /* ⅻ */: return u8"Ⅻ" /* 0x216b */; + case 0x217c /* ⅼ */: return u8"Ⅼ" /* 0x216c */; + case 0x217d /* ⅽ */: return u8"Ⅽ" /* 0x216d */; + case 0x217e /* ⅾ */: return u8"Ⅾ" /* 0x216e */; + case 0x217f /* ⅿ */: return u8"Ⅿ" /* 0x216f */; + case 0x2184 /* ↄ */: return u8"Ↄ" /* 0x2183 */; + case 0x24d0 /* ⓐ */: return u8"Ⓐ" /* 0x24b6 */; + case 0x24d1 /* ⓑ */: return u8"Ⓑ" /* 0x24b7 */; + case 0x24d2 /* ⓒ */: return u8"Ⓒ" /* 0x24b8 */; + case 0x24d3 /* ⓓ */: return u8"Ⓓ" /* 0x24b9 */; + case 0x24d4 /* ⓔ */: return u8"Ⓔ" /* 0x24ba */; + case 0x24d5 /* ⓕ */: return u8"Ⓕ" /* 0x24bb */; + case 0x24d6 /* ⓖ */: return u8"Ⓖ" /* 0x24bc */; + case 0x24d7 /* ⓗ */: return u8"Ⓗ" /* 0x24bd */; + case 0x24d8 /* ⓘ */: return u8"Ⓘ" /* 0x24be */; + case 0x24d9 /* ⓙ */: return u8"Ⓙ" /* 0x24bf */; + case 0x24da /* ⓚ */: return u8"Ⓚ" /* 0x24c0 */; + case 0x24db /* ⓛ */: return u8"Ⓛ" /* 0x24c1 */; + case 0x24dc /* ⓜ */: return u8"Ⓜ" /* 0x24c2 */; + case 0x24dd /* ⓝ */: return u8"Ⓝ" /* 0x24c3 */; + case 0x24de /* ⓞ */: return u8"Ⓞ" /* 0x24c4 */; + case 0x24df /* ⓟ */: return u8"Ⓟ" /* 0x24c5 */; + case 0x24e0 /* ⓠ */: return u8"Ⓠ" /* 0x24c6 */; + case 0x24e1 /* ⓡ */: return u8"Ⓡ" /* 0x24c7 */; + case 0x24e2 /* ⓢ */: return u8"Ⓢ" /* 0x24c8 */; + case 0x24e3 /* ⓣ */: return u8"Ⓣ" /* 0x24c9 */; + case 0x24e4 /* ⓤ */: return u8"Ⓤ" /* 0x24ca */; + case 0x24e5 /* ⓥ */: return u8"Ⓥ" /* 0x24cb */; + case 0x24e6 /* ⓦ */: return u8"Ⓦ" /* 0x24cc */; + case 0x24e7 /* ⓧ */: return u8"Ⓧ" /* 0x24cd */; + case 0x24e8 /* ⓨ */: return u8"Ⓨ" /* 0x24ce */; + case 0x24e9 /* ⓩ */: return u8"Ⓩ" /* 0x24cf */; + case 0x2c30 /* ⰰ */: return u8"Ⰰ" /* 0x2c00 */; + case 0x2c31 /* ⰱ */: return u8"Ⰱ" /* 0x2c01 */; + case 0x2c32 /* ⰲ */: return u8"Ⰲ" /* 0x2c02 */; + case 0x2c33 /* ⰳ */: return u8"Ⰳ" /* 0x2c03 */; + case 0x2c34 /* ⰴ */: return u8"Ⰴ" /* 0x2c04 */; + case 0x2c35 /* ⰵ */: return u8"Ⰵ" /* 0x2c05 */; + case 0x2c36 /* ⰶ */: return u8"Ⰶ" /* 0x2c06 */; + case 0x2c37 /* ⰷ */: return u8"Ⰷ" /* 0x2c07 */; + case 0x2c38 /* ⰸ */: return u8"Ⰸ" /* 0x2c08 */; + case 0x2c39 /* ⰹ */: return u8"Ⰹ" /* 0x2c09 */; + case 0x2c3a /* ⰺ */: return u8"Ⰺ" /* 0x2c0a */; + case 0x2c3b /* ⰻ */: return u8"Ⰻ" /* 0x2c0b */; + case 0x2c3c /* ⰼ */: return u8"Ⰼ" /* 0x2c0c */; + case 0x2c3d /* ⰽ */: return u8"Ⰽ" /* 0x2c0d */; + case 0x2c3e /* ⰾ */: return u8"Ⰾ" /* 0x2c0e */; + case 0x2c3f /* ⰿ */: return u8"Ⰿ" /* 0x2c0f */; + case 0x2c40 /* ⱀ */: return u8"Ⱀ" /* 0x2c10 */; + case 0x2c41 /* ⱁ */: return u8"Ⱁ" /* 0x2c11 */; + case 0x2c42 /* ⱂ */: return u8"Ⱂ" /* 0x2c12 */; + case 0x2c43 /* ⱃ */: return u8"Ⱃ" /* 0x2c13 */; + case 0x2c44 /* ⱄ */: return u8"Ⱄ" /* 0x2c14 */; + case 0x2c45 /* ⱅ */: return u8"Ⱅ" /* 0x2c15 */; + case 0x2c46 /* ⱆ */: return u8"Ⱆ" /* 0x2c16 */; + case 0x2c47 /* ⱇ */: return u8"Ⱇ" /* 0x2c17 */; + case 0x2c48 /* ⱈ */: return u8"Ⱈ" /* 0x2c18 */; + case 0x2c49 /* ⱉ */: return u8"Ⱉ" /* 0x2c19 */; + case 0x2c4a /* ⱊ */: return u8"Ⱊ" /* 0x2c1a */; + case 0x2c4b /* ⱋ */: return u8"Ⱋ" /* 0x2c1b */; + case 0x2c4c /* ⱌ */: return u8"Ⱌ" /* 0x2c1c */; + case 0x2c4d /* ⱍ */: return u8"Ⱍ" /* 0x2c1d */; + case 0x2c4e /* ⱎ */: return u8"Ⱎ" /* 0x2c1e */; + case 0x2c4f /* ⱏ */: return u8"Ⱏ" /* 0x2c1f */; + case 0x2c50 /* ⱐ */: return u8"Ⱐ" /* 0x2c20 */; + case 0x2c51 /* ⱑ */: return u8"Ⱑ" /* 0x2c21 */; + case 0x2c52 /* ⱒ */: return u8"Ⱒ" /* 0x2c22 */; + case 0x2c53 /* ⱓ */: return u8"Ⱓ" /* 0x2c23 */; + case 0x2c54 /* ⱔ */: return u8"Ⱔ" /* 0x2c24 */; + case 0x2c55 /* ⱕ */: return u8"Ⱕ" /* 0x2c25 */; + case 0x2c56 /* ⱖ */: return u8"Ⱖ" /* 0x2c26 */; + case 0x2c57 /* ⱗ */: return u8"Ⱗ" /* 0x2c27 */; + case 0x2c58 /* ⱘ */: return u8"Ⱘ" /* 0x2c28 */; + case 0x2c59 /* ⱙ */: return u8"Ⱙ" /* 0x2c29 */; + case 0x2c5a /* ⱚ */: return u8"Ⱚ" /* 0x2c2a */; + case 0x2c5b /* ⱛ */: return u8"Ⱛ" /* 0x2c2b */; + case 0x2c5c /* ⱜ */: return u8"Ⱜ" /* 0x2c2c */; + case 0x2c5d /* ⱝ */: return u8"Ⱝ" /* 0x2c2d */; + case 0x2c5e /* ⱞ */: return u8"Ⱞ" /* 0x2c2e */; + case 0x2c61 /* ⱡ */: return u8"Ⱡ" /* 0x2c60 */; + case 0x2c65 /* ⱥ */: return u8"Ⱥ" /* 0x23a */; + case 0x2c66 /* ⱦ */: return u8"Ⱦ" /* 0x23e */; + case 0x2c68 /* ⱨ */: return u8"Ⱨ" /* 0x2c67 */; + case 0x2c6a /* ⱪ */: return u8"Ⱪ" /* 0x2c69 */; + case 0x2c6c /* ⱬ */: return u8"Ⱬ" /* 0x2c6b */; + case 0x2c73 /* ⱳ */: return u8"Ⱳ" /* 0x2c72 */; + case 0x2c76 /* ⱶ */: return u8"Ⱶ" /* 0x2c75 */; + case 0x2c81 /* ⲁ */: return u8"Ⲁ" /* 0x2c80 */; + case 0x2c83 /* ⲃ */: return u8"Ⲃ" /* 0x2c82 */; + case 0x2c85 /* ⲅ */: return u8"Ⲅ" /* 0x2c84 */; + case 0x2c87 /* ⲇ */: return u8"Ⲇ" /* 0x2c86 */; + case 0x2c89 /* ⲉ */: return u8"Ⲉ" /* 0x2c88 */; + case 0x2c8b /* ⲋ */: return u8"Ⲋ" /* 0x2c8a */; + case 0x2c8d /* ⲍ */: return u8"Ⲍ" /* 0x2c8c */; + case 0x2c8f /* ⲏ */: return u8"Ⲏ" /* 0x2c8e */; + case 0x2c91 /* ⲑ */: return u8"Ⲑ" /* 0x2c90 */; + case 0x2c93 /* ⲓ */: return u8"Ⲓ" /* 0x2c92 */; + case 0x2c95 /* ⲕ */: return u8"Ⲕ" /* 0x2c94 */; + case 0x2c97 /* ⲗ */: return u8"Ⲗ" /* 0x2c96 */; + case 0x2c99 /* ⲙ */: return u8"Ⲙ" /* 0x2c98 */; + case 0x2c9b /* ⲛ */: return u8"Ⲛ" /* 0x2c9a */; + case 0x2c9d /* ⲝ */: return u8"Ⲝ" /* 0x2c9c */; + case 0x2c9f /* ⲟ */: return u8"Ⲟ" /* 0x2c9e */; + case 0x2ca1 /* ⲡ */: return u8"Ⲡ" /* 0x2ca0 */; + case 0x2ca3 /* ⲣ */: return u8"Ⲣ" /* 0x2ca2 */; + case 0x2ca5 /* ⲥ */: return u8"Ⲥ" /* 0x2ca4 */; + case 0x2ca7 /* ⲧ */: return u8"Ⲧ" /* 0x2ca6 */; + case 0x2ca9 /* ⲩ */: return u8"Ⲩ" /* 0x2ca8 */; + case 0x2cab /* ⲫ */: return u8"Ⲫ" /* 0x2caa */; + case 0x2cad /* ⲭ */: return u8"Ⲭ" /* 0x2cac */; + case 0x2caf /* ⲯ */: return u8"Ⲯ" /* 0x2cae */; + case 0x2cb1 /* ⲱ */: return u8"Ⲱ" /* 0x2cb0 */; + case 0x2cb3 /* ⲳ */: return u8"Ⲳ" /* 0x2cb2 */; + case 0x2cb5 /* ⲵ */: return u8"Ⲵ" /* 0x2cb4 */; + case 0x2cb7 /* ⲷ */: return u8"Ⲷ" /* 0x2cb6 */; + case 0x2cb9 /* ⲹ */: return u8"Ⲹ" /* 0x2cb8 */; + case 0x2cbb /* ⲻ */: return u8"Ⲻ" /* 0x2cba */; + case 0x2cbd /* ⲽ */: return u8"Ⲽ" /* 0x2cbc */; + case 0x2cbf /* ⲿ */: return u8"Ⲿ" /* 0x2cbe */; + case 0x2cc1 /* ⳁ */: return u8"Ⳁ" /* 0x2cc0 */; + case 0x2cc3 /* ⳃ */: return u8"Ⳃ" /* 0x2cc2 */; + case 0x2cc5 /* ⳅ */: return u8"Ⳅ" /* 0x2cc4 */; + case 0x2cc7 /* ⳇ */: return u8"Ⳇ" /* 0x2cc6 */; + case 0x2cc9 /* ⳉ */: return u8"Ⳉ" /* 0x2cc8 */; + case 0x2ccb /* ⳋ */: return u8"Ⳋ" /* 0x2cca */; + case 0x2ccd /* ⳍ */: return u8"Ⳍ" /* 0x2ccc */; + case 0x2ccf /* ⳏ */: return u8"Ⳏ" /* 0x2cce */; + case 0x2cd1 /* ⳑ */: return u8"Ⳑ" /* 0x2cd0 */; + case 0x2cd3 /* ⳓ */: return u8"Ⳓ" /* 0x2cd2 */; + case 0x2cd5 /* ⳕ */: return u8"Ⳕ" /* 0x2cd4 */; + case 0x2cd7 /* ⳗ */: return u8"Ⳗ" /* 0x2cd6 */; + case 0x2cd9 /* ⳙ */: return u8"Ⳙ" /* 0x2cd8 */; + case 0x2cdb /* ⳛ */: return u8"Ⳛ" /* 0x2cda */; + case 0x2cdd /* ⳝ */: return u8"Ⳝ" /* 0x2cdc */; + case 0x2cdf /* ⳟ */: return u8"Ⳟ" /* 0x2cde */; + case 0x2ce1 /* ⳡ */: return u8"Ⳡ" /* 0x2ce0 */; + case 0x2ce3 /* ⳣ */: return u8"Ⳣ" /* 0x2ce2 */; + case 0x2cec /* ⳬ */: return u8"Ⳬ" /* 0x2ceb */; + case 0x2cee /* ⳮ */: return u8"Ⳮ" /* 0x2ced */; + case 0x2cf3 /* ⳳ */: return u8"Ⳳ" /* 0x2cf2 */; + case 0x2d00 /* ⴀ */: return u8"Ⴀ" /* 0x10a0 */; + case 0x2d01 /* ⴁ */: return u8"Ⴁ" /* 0x10a1 */; + case 0x2d02 /* ⴂ */: return u8"Ⴂ" /* 0x10a2 */; + case 0x2d03 /* ⴃ */: return u8"Ⴃ" /* 0x10a3 */; + case 0x2d04 /* ⴄ */: return u8"Ⴄ" /* 0x10a4 */; + case 0x2d05 /* ⴅ */: return u8"Ⴅ" /* 0x10a5 */; + case 0x2d06 /* ⴆ */: return u8"Ⴆ" /* 0x10a6 */; + case 0x2d07 /* ⴇ */: return u8"Ⴇ" /* 0x10a7 */; + case 0x2d08 /* ⴈ */: return u8"Ⴈ" /* 0x10a8 */; + case 0x2d09 /* ⴉ */: return u8"Ⴉ" /* 0x10a9 */; + case 0x2d0a /* ⴊ */: return u8"Ⴊ" /* 0x10aa */; + case 0x2d0b /* ⴋ */: return u8"Ⴋ" /* 0x10ab */; + case 0x2d0c /* ⴌ */: return u8"Ⴌ" /* 0x10ac */; + case 0x2d0d /* ⴍ */: return u8"Ⴍ" /* 0x10ad */; + case 0x2d0e /* ⴎ */: return u8"Ⴎ" /* 0x10ae */; + case 0x2d0f /* ⴏ */: return u8"Ⴏ" /* 0x10af */; + case 0x2d10 /* ⴐ */: return u8"Ⴐ" /* 0x10b0 */; + case 0x2d11 /* ⴑ */: return u8"Ⴑ" /* 0x10b1 */; + case 0x2d12 /* ⴒ */: return u8"Ⴒ" /* 0x10b2 */; + case 0x2d13 /* ⴓ */: return u8"Ⴓ" /* 0x10b3 */; + case 0x2d14 /* ⴔ */: return u8"Ⴔ" /* 0x10b4 */; + case 0x2d15 /* ⴕ */: return u8"Ⴕ" /* 0x10b5 */; + case 0x2d16 /* ⴖ */: return u8"Ⴖ" /* 0x10b6 */; + case 0x2d17 /* ⴗ */: return u8"Ⴗ" /* 0x10b7 */; + case 0x2d18 /* ⴘ */: return u8"Ⴘ" /* 0x10b8 */; + case 0x2d19 /* ⴙ */: return u8"Ⴙ" /* 0x10b9 */; + case 0x2d1a /* ⴚ */: return u8"Ⴚ" /* 0x10ba */; + case 0x2d1b /* ⴛ */: return u8"Ⴛ" /* 0x10bb */; + case 0x2d1c /* ⴜ */: return u8"Ⴜ" /* 0x10bc */; + case 0x2d1d /* ⴝ */: return u8"Ⴝ" /* 0x10bd */; + case 0x2d1e /* ⴞ */: return u8"Ⴞ" /* 0x10be */; + case 0x2d1f /* ⴟ */: return u8"Ⴟ" /* 0x10bf */; + case 0x2d20 /* ⴠ */: return u8"Ⴠ" /* 0x10c0 */; + case 0x2d21 /* ⴡ */: return u8"Ⴡ" /* 0x10c1 */; + case 0x2d22 /* ⴢ */: return u8"Ⴢ" /* 0x10c2 */; + case 0x2d23 /* ⴣ */: return u8"Ⴣ" /* 0x10c3 */; + case 0x2d24 /* ⴤ */: return u8"Ⴤ" /* 0x10c4 */; + case 0x2d25 /* ⴥ */: return u8"Ⴥ" /* 0x10c5 */; + case 0x2d27 /* ⴧ */: return u8"Ⴧ" /* 0x10c7 */; + case 0x2d2d /* ⴭ */: return u8"Ⴭ" /* 0x10cd */; + case 0xa641 /* ꙁ */: return u8"Ꙁ" /* 0xa640 */; + case 0xa643 /* ꙃ */: return u8"Ꙃ" /* 0xa642 */; + case 0xa645 /* ꙅ */: return u8"Ꙅ" /* 0xa644 */; + case 0xa647 /* ꙇ */: return u8"Ꙇ" /* 0xa646 */; + case 0xa649 /* ꙉ */: return u8"Ꙉ" /* 0xa648 */; + case 0xa64b /* ꙋ */: return u8"Ꙋ" /* 0xa64a */; + case 0xa64d /* ꙍ */: return u8"Ꙍ" /* 0xa64c */; + case 0xa64f /* ꙏ */: return u8"Ꙏ" /* 0xa64e */; + case 0xa651 /* ꙑ */: return u8"Ꙑ" /* 0xa650 */; + case 0xa653 /* ꙓ */: return u8"Ꙓ" /* 0xa652 */; + case 0xa655 /* ꙕ */: return u8"Ꙕ" /* 0xa654 */; + case 0xa657 /* ꙗ */: return u8"Ꙗ" /* 0xa656 */; + case 0xa659 /* ꙙ */: return u8"Ꙙ" /* 0xa658 */; + case 0xa65b /* ꙛ */: return u8"Ꙛ" /* 0xa65a */; + case 0xa65d /* ꙝ */: return u8"Ꙝ" /* 0xa65c */; + case 0xa65f /* ꙟ */: return u8"Ꙟ" /* 0xa65e */; + case 0xa661 /* ꙡ */: return u8"Ꙡ" /* 0xa660 */; + case 0xa663 /* ꙣ */: return u8"Ꙣ" /* 0xa662 */; + case 0xa665 /* ꙥ */: return u8"Ꙥ" /* 0xa664 */; + case 0xa667 /* ꙧ */: return u8"Ꙧ" /* 0xa666 */; + case 0xa669 /* ꙩ */: return u8"Ꙩ" /* 0xa668 */; + case 0xa66b /* ꙫ */: return u8"Ꙫ" /* 0xa66a */; + case 0xa66d /* ꙭ */: return u8"Ꙭ" /* 0xa66c */; + case 0xa681 /* ꚁ */: return u8"Ꚁ" /* 0xa680 */; + case 0xa683 /* ꚃ */: return u8"Ꚃ" /* 0xa682 */; + case 0xa685 /* ꚅ */: return u8"Ꚅ" /* 0xa684 */; + case 0xa687 /* ꚇ */: return u8"Ꚇ" /* 0xa686 */; + case 0xa689 /* ꚉ */: return u8"Ꚉ" /* 0xa688 */; + case 0xa68b /* ꚋ */: return u8"Ꚋ" /* 0xa68a */; + case 0xa68d /* ꚍ */: return u8"Ꚍ" /* 0xa68c */; + case 0xa68f /* ꚏ */: return u8"Ꚏ" /* 0xa68e */; + case 0xa691 /* ꚑ */: return u8"Ꚑ" /* 0xa690 */; + case 0xa693 /* ꚓ */: return u8"Ꚓ" /* 0xa692 */; + case 0xa695 /* ꚕ */: return u8"Ꚕ" /* 0xa694 */; + case 0xa697 /* ꚗ */: return u8"Ꚗ" /* 0xa696 */; + case 0xa699 /* ꚙ */: return u8"Ꚙ" /* 0xa698 */; + case 0xa69b /* ꚛ */: return u8"Ꚛ" /* 0xa69a */; + case 0xa723 /* ꜣ */: return u8"Ꜣ" /* 0xa722 */; + case 0xa725 /* ꜥ */: return u8"Ꜥ" /* 0xa724 */; + case 0xa727 /* ꜧ */: return u8"Ꜧ" /* 0xa726 */; + case 0xa729 /* ꜩ */: return u8"Ꜩ" /* 0xa728 */; + case 0xa72b /* ꜫ */: return u8"Ꜫ" /* 0xa72a */; + case 0xa72d /* ꜭ */: return u8"Ꜭ" /* 0xa72c */; + case 0xa72f /* ꜯ */: return u8"Ꜯ" /* 0xa72e */; + case 0xa733 /* ꜳ */: return u8"Ꜳ" /* 0xa732 */; + case 0xa735 /* ꜵ */: return u8"Ꜵ" /* 0xa734 */; + case 0xa737 /* ꜷ */: return u8"Ꜷ" /* 0xa736 */; + case 0xa739 /* ꜹ */: return u8"Ꜹ" /* 0xa738 */; + case 0xa73b /* ꜻ */: return u8"Ꜻ" /* 0xa73a */; + case 0xa73d /* ꜽ */: return u8"Ꜽ" /* 0xa73c */; + case 0xa73f /* ꜿ */: return u8"Ꜿ" /* 0xa73e */; + case 0xa741 /* ꝁ */: return u8"Ꝁ" /* 0xa740 */; + case 0xa743 /* ꝃ */: return u8"Ꝃ" /* 0xa742 */; + case 0xa745 /* ꝅ */: return u8"Ꝅ" /* 0xa744 */; + case 0xa747 /* ꝇ */: return u8"Ꝇ" /* 0xa746 */; + case 0xa749 /* ꝉ */: return u8"Ꝉ" /* 0xa748 */; + case 0xa74b /* ꝋ */: return u8"Ꝋ" /* 0xa74a */; + case 0xa74d /* ꝍ */: return u8"Ꝍ" /* 0xa74c */; + case 0xa74f /* ꝏ */: return u8"Ꝏ" /* 0xa74e */; + case 0xa751 /* ꝑ */: return u8"Ꝑ" /* 0xa750 */; + case 0xa753 /* ꝓ */: return u8"Ꝓ" /* 0xa752 */; + case 0xa755 /* ꝕ */: return u8"Ꝕ" /* 0xa754 */; + case 0xa757 /* ꝗ */: return u8"Ꝗ" /* 0xa756 */; + case 0xa759 /* ꝙ */: return u8"Ꝙ" /* 0xa758 */; + case 0xa75b /* ꝛ */: return u8"Ꝛ" /* 0xa75a */; + case 0xa75d /* ꝝ */: return u8"Ꝝ" /* 0xa75c */; + case 0xa75f /* ꝟ */: return u8"Ꝟ" /* 0xa75e */; + case 0xa761 /* ꝡ */: return u8"Ꝡ" /* 0xa760 */; + case 0xa763 /* ꝣ */: return u8"Ꝣ" /* 0xa762 */; + case 0xa765 /* ꝥ */: return u8"Ꝥ" /* 0xa764 */; + case 0xa767 /* ꝧ */: return u8"Ꝧ" /* 0xa766 */; + case 0xa769 /* ꝩ */: return u8"Ꝩ" /* 0xa768 */; + case 0xa76b /* ꝫ */: return u8"Ꝫ" /* 0xa76a */; + case 0xa76d /* ꝭ */: return u8"Ꝭ" /* 0xa76c */; + case 0xa76f /* ꝯ */: return u8"Ꝯ" /* 0xa76e */; + case 0xa77a /* ꝺ */: return u8"Ꝺ" /* 0xa779 */; + case 0xa77c /* ꝼ */: return u8"Ꝼ" /* 0xa77b */; + case 0xa77f /* ꝿ */: return u8"Ꝿ" /* 0xa77e */; + case 0xa781 /* ꞁ */: return u8"Ꞁ" /* 0xa780 */; + case 0xa783 /* ꞃ */: return u8"Ꞃ" /* 0xa782 */; + case 0xa785 /* ꞅ */: return u8"Ꞅ" /* 0xa784 */; + case 0xa787 /* ꞇ */: return u8"Ꞇ" /* 0xa786 */; + case 0xa78c /* ꞌ */: return u8"Ꞌ" /* 0xa78b */; + case 0xa791 /* ꞑ */: return u8"Ꞑ" /* 0xa790 */; + case 0xa793 /* ꞓ */: return u8"Ꞓ" /* 0xa792 */; + case 0xa794 /* ꞔ */: return u8"Ꞔ" /* 0xa7c4 */; + case 0xa797 /* ꞗ */: return u8"Ꞗ" /* 0xa796 */; + case 0xa799 /* ꞙ */: return u8"Ꞙ" /* 0xa798 */; + case 0xa79b /* ꞛ */: return u8"Ꞛ" /* 0xa79a */; + case 0xa79d /* ꞝ */: return u8"Ꞝ" /* 0xa79c */; + case 0xa79f /* ꞟ */: return u8"Ꞟ" /* 0xa79e */; + case 0xa7a1 /* ꞡ */: return u8"Ꞡ" /* 0xa7a0 */; + case 0xa7a3 /* ꞣ */: return u8"Ꞣ" /* 0xa7a2 */; + case 0xa7a5 /* ꞥ */: return u8"Ꞥ" /* 0xa7a4 */; + case 0xa7a7 /* ꞧ */: return u8"Ꞧ" /* 0xa7a6 */; + case 0xa7a9 /* ꞩ */: return u8"Ꞩ" /* 0xa7a8 */; + case 0xa7b5 /* ꞵ */: return u8"Ꞵ" /* 0xa7b4 */; + case 0xa7b7 /* ꞷ */: return u8"Ꞷ" /* 0xa7b6 */; + case 0xa7b9 /* ꞹ */: return u8"Ꞹ" /* 0xa7b8 */; + case 0xa7bb /* ꞻ */: return u8"Ꞻ" /* 0xa7ba */; + case 0xa7bd /* ꞽ */: return u8"Ꞽ" /* 0xa7bc */; + case 0xa7bf /* ꞿ */: return u8"Ꞿ" /* 0xa7be */; + case 0xa7c3 /* ꟃ */: return u8"Ꟃ" /* 0xa7c2 */; + case 0xa7c8 /* ꟈ */: return u8"Ꟈ" /* 0xa7c7 */; + case 0xa7ca /* ꟊ */: return u8"Ꟊ" /* 0xa7c9 */; + case 0xa7f6 /* ꟶ */: return u8"Ꟶ" /* 0xa7f5 */; + case 0xab53 /* ꭓ */: return u8"Ꭓ" /* 0xa7b3 */; + case 0xab70 /* ꭰ */: return u8"Ꭰ" /* 0x13a0 */; + case 0xab71 /* ꭱ */: return u8"Ꭱ" /* 0x13a1 */; + case 0xab72 /* ꭲ */: return u8"Ꭲ" /* 0x13a2 */; + case 0xab73 /* ꭳ */: return u8"Ꭳ" /* 0x13a3 */; + case 0xab74 /* ꭴ */: return u8"Ꭴ" /* 0x13a4 */; + case 0xab75 /* ꭵ */: return u8"Ꭵ" /* 0x13a5 */; + case 0xab76 /* ꭶ */: return u8"Ꭶ" /* 0x13a6 */; + case 0xab77 /* ꭷ */: return u8"Ꭷ" /* 0x13a7 */; + case 0xab78 /* ꭸ */: return u8"Ꭸ" /* 0x13a8 */; + case 0xab79 /* ꭹ */: return u8"Ꭹ" /* 0x13a9 */; + case 0xab7a /* ꭺ */: return u8"Ꭺ" /* 0x13aa */; + case 0xab7b /* ꭻ */: return u8"Ꭻ" /* 0x13ab */; + case 0xab7c /* ꭼ */: return u8"Ꭼ" /* 0x13ac */; + case 0xab7d /* ꭽ */: return u8"Ꭽ" /* 0x13ad */; + case 0xab7e /* ꭾ */: return u8"Ꭾ" /* 0x13ae */; + case 0xab7f /* ꭿ */: return u8"Ꭿ" /* 0x13af */; + case 0xab80 /* ꮀ */: return u8"Ꮀ" /* 0x13b0 */; + case 0xab81 /* ꮁ */: return u8"Ꮁ" /* 0x13b1 */; + case 0xab82 /* ꮂ */: return u8"Ꮂ" /* 0x13b2 */; + case 0xab83 /* ꮃ */: return u8"Ꮃ" /* 0x13b3 */; + case 0xab84 /* ꮄ */: return u8"Ꮄ" /* 0x13b4 */; + case 0xab85 /* ꮅ */: return u8"Ꮅ" /* 0x13b5 */; + case 0xab86 /* ꮆ */: return u8"Ꮆ" /* 0x13b6 */; + case 0xab87 /* ꮇ */: return u8"Ꮇ" /* 0x13b7 */; + case 0xab88 /* ꮈ */: return u8"Ꮈ" /* 0x13b8 */; + case 0xab89 /* ꮉ */: return u8"Ꮉ" /* 0x13b9 */; + case 0xab8a /* ꮊ */: return u8"Ꮊ" /* 0x13ba */; + case 0xab8b /* ꮋ */: return u8"Ꮋ" /* 0x13bb */; + case 0xab8c /* ꮌ */: return u8"Ꮌ" /* 0x13bc */; + case 0xab8d /* ꮍ */: return u8"Ꮍ" /* 0x13bd */; + case 0xab8e /* ꮎ */: return u8"Ꮎ" /* 0x13be */; + case 0xab8f /* ꮏ */: return u8"Ꮏ" /* 0x13bf */; + case 0xab90 /* ꮐ */: return u8"Ꮐ" /* 0x13c0 */; + case 0xab91 /* ꮑ */: return u8"Ꮑ" /* 0x13c1 */; + case 0xab92 /* ꮒ */: return u8"Ꮒ" /* 0x13c2 */; + case 0xab93 /* ꮓ */: return u8"Ꮓ" /* 0x13c3 */; + case 0xab94 /* ꮔ */: return u8"Ꮔ" /* 0x13c4 */; + case 0xab95 /* ꮕ */: return u8"Ꮕ" /* 0x13c5 */; + case 0xab96 /* ꮖ */: return u8"Ꮖ" /* 0x13c6 */; + case 0xab97 /* ꮗ */: return u8"Ꮗ" /* 0x13c7 */; + case 0xab98 /* ꮘ */: return u8"Ꮘ" /* 0x13c8 */; + case 0xab99 /* ꮙ */: return u8"Ꮙ" /* 0x13c9 */; + case 0xab9a /* ꮚ */: return u8"Ꮚ" /* 0x13ca */; + case 0xab9b /* ꮛ */: return u8"Ꮛ" /* 0x13cb */; + case 0xab9c /* ꮜ */: return u8"Ꮜ" /* 0x13cc */; + case 0xab9d /* ꮝ */: return u8"Ꮝ" /* 0x13cd */; + case 0xab9e /* ꮞ */: return u8"Ꮞ" /* 0x13ce */; + case 0xab9f /* ꮟ */: return u8"Ꮟ" /* 0x13cf */; + case 0xaba0 /* ꮠ */: return u8"Ꮠ" /* 0x13d0 */; + case 0xaba1 /* ꮡ */: return u8"Ꮡ" /* 0x13d1 */; + case 0xaba2 /* ꮢ */: return u8"Ꮢ" /* 0x13d2 */; + case 0xaba3 /* ꮣ */: return u8"Ꮣ" /* 0x13d3 */; + case 0xaba4 /* ꮤ */: return u8"Ꮤ" /* 0x13d4 */; + case 0xaba5 /* ꮥ */: return u8"Ꮥ" /* 0x13d5 */; + case 0xaba6 /* ꮦ */: return u8"Ꮦ" /* 0x13d6 */; + case 0xaba7 /* ꮧ */: return u8"Ꮧ" /* 0x13d7 */; + case 0xaba8 /* ꮨ */: return u8"Ꮨ" /* 0x13d8 */; + case 0xaba9 /* ꮩ */: return u8"Ꮩ" /* 0x13d9 */; + case 0xabaa /* ꮪ */: return u8"Ꮪ" /* 0x13da */; + case 0xabab /* ꮫ */: return u8"Ꮫ" /* 0x13db */; + case 0xabac /* ꮬ */: return u8"Ꮬ" /* 0x13dc */; + case 0xabad /* ꮭ */: return u8"Ꮭ" /* 0x13dd */; + case 0xabae /* ꮮ */: return u8"Ꮮ" /* 0x13de */; + case 0xabaf /* ꮯ */: return u8"Ꮯ" /* 0x13df */; + case 0xabb0 /* ꮰ */: return u8"Ꮰ" /* 0x13e0 */; + case 0xabb1 /* ꮱ */: return u8"Ꮱ" /* 0x13e1 */; + case 0xabb2 /* ꮲ */: return u8"Ꮲ" /* 0x13e2 */; + case 0xabb3 /* ꮳ */: return u8"Ꮳ" /* 0x13e3 */; + case 0xabb4 /* ꮴ */: return u8"Ꮴ" /* 0x13e4 */; + case 0xabb5 /* ꮵ */: return u8"Ꮵ" /* 0x13e5 */; + case 0xabb6 /* ꮶ */: return u8"Ꮶ" /* 0x13e6 */; + case 0xabb7 /* ꮷ */: return u8"Ꮷ" /* 0x13e7 */; + case 0xabb8 /* ꮸ */: return u8"Ꮸ" /* 0x13e8 */; + case 0xabb9 /* ꮹ */: return u8"Ꮹ" /* 0x13e9 */; + case 0xabba /* ꮺ */: return u8"Ꮺ" /* 0x13ea */; + case 0xabbb /* ꮻ */: return u8"Ꮻ" /* 0x13eb */; + case 0xabbc /* ꮼ */: return u8"Ꮼ" /* 0x13ec */; + case 0xabbd /* ꮽ */: return u8"Ꮽ" /* 0x13ed */; + case 0xabbe /* ꮾ */: return u8"Ꮾ" /* 0x13ee */; + case 0xabbf /* ꮿ */: return u8"Ꮿ" /* 0x13ef */; + case 0xfb00 /* ff */: return u8"FF" /* 0x46,0x46 */; + case 0xfb01 /* fi */: return u8"FI" /* 0x46,0x49 */; + case 0xfb02 /* fl */: return u8"FL" /* 0x46,0x4c */; + case 0xfb03 /* ffi */: return u8"FFI" /* 0x46,0x46,0x49 */; + case 0xfb04 /* ffl */: return u8"FFL" /* 0x46,0x46,0x4c */; + case 0xfb05 /* ſt */: return u8"ST" /* 0x53,0x54 */; + case 0xfb06 /* st */: return u8"ST" /* 0x53,0x54 */; + case 0xfb13 /* ﬓ */: return u8"ՄՆ" /* 0x544,0x546 */; + case 0xfb14 /* ﬔ */: return u8"ՄԵ" /* 0x544,0x535 */; + case 0xfb15 /* ﬕ */: return u8"ՄԻ" /* 0x544,0x53b */; + case 0xfb16 /* ﬖ */: return u8"ՎՆ" /* 0x54e,0x546 */; + case 0xfb17 /* ﬗ */: return u8"ՄԽ" /* 0x544,0x53d */; + case 0xff41 /* a */: return u8"A" /* 0xff21 */; + case 0xff42 /* b */: return u8"B" /* 0xff22 */; + case 0xff43 /* c */: return u8"C" /* 0xff23 */; + case 0xff44 /* d */: return u8"D" /* 0xff24 */; + case 0xff45 /* e */: return u8"E" /* 0xff25 */; + case 0xff46 /* f */: return u8"F" /* 0xff26 */; + case 0xff47 /* g */: return u8"G" /* 0xff27 */; + case 0xff48 /* h */: return u8"H" /* 0xff28 */; + case 0xff49 /* i */: return u8"I" /* 0xff29 */; + case 0xff4a /* j */: return u8"J" /* 0xff2a */; + case 0xff4b /* k */: return u8"K" /* 0xff2b */; + case 0xff4c /* l */: return u8"L" /* 0xff2c */; + case 0xff4d /* m */: return u8"M" /* 0xff2d */; + case 0xff4e /* n */: return u8"N" /* 0xff2e */; + case 0xff4f /* o */: return u8"O" /* 0xff2f */; + case 0xff50 /* p */: return u8"P" /* 0xff30 */; + case 0xff51 /* q */: return u8"Q" /* 0xff31 */; + case 0xff52 /* r */: return u8"R" /* 0xff32 */; + case 0xff53 /* s */: return u8"S" /* 0xff33 */; + case 0xff54 /* t */: return u8"T" /* 0xff34 */; + case 0xff55 /* u */: return u8"U" /* 0xff35 */; + case 0xff56 /* v */: return u8"V" /* 0xff36 */; + case 0xff57 /* w */: return u8"W" /* 0xff37 */; + case 0xff58 /* x */: return u8"X" /* 0xff38 */; + case 0xff59 /* y */: return u8"Y" /* 0xff39 */; + case 0xff5a /* z */: return u8"Z" /* 0xff3a */; + case 0x10428 /* 𐐨 */: return u8"𐐀" /* 0x10400 */; + case 0x10429 /* 𐐩 */: return u8"𐐁" /* 0x10401 */; + case 0x1042a /* 𐐪 */: return u8"𐐂" /* 0x10402 */; + case 0x1042b /* 𐐫 */: return u8"𐐃" /* 0x10403 */; + case 0x1042c /* 𐐬 */: return u8"𐐄" /* 0x10404 */; + case 0x1042d /* 𐐭 */: return u8"𐐅" /* 0x10405 */; + case 0x1042e /* 𐐮 */: return u8"𐐆" /* 0x10406 */; + case 0x1042f /* 𐐯 */: return u8"𐐇" /* 0x10407 */; + case 0x10430 /* 𐐰 */: return u8"𐐈" /* 0x10408 */; + case 0x10431 /* 𐐱 */: return u8"𐐉" /* 0x10409 */; + case 0x10432 /* 𐐲 */: return u8"𐐊" /* 0x1040a */; + case 0x10433 /* 𐐳 */: return u8"𐐋" /* 0x1040b */; + case 0x10434 /* 𐐴 */: return u8"𐐌" /* 0x1040c */; + case 0x10435 /* 𐐵 */: return u8"𐐍" /* 0x1040d */; + case 0x10436 /* 𐐶 */: return u8"𐐎" /* 0x1040e */; + case 0x10437 /* 𐐷 */: return u8"𐐏" /* 0x1040f */; + case 0x10438 /* 𐐸 */: return u8"𐐐" /* 0x10410 */; + case 0x10439 /* 𐐹 */: return u8"𐐑" /* 0x10411 */; + case 0x1043a /* 𐐺 */: return u8"𐐒" /* 0x10412 */; + case 0x1043b /* 𐐻 */: return u8"𐐓" /* 0x10413 */; + case 0x1043c /* 𐐼 */: return u8"𐐔" /* 0x10414 */; + case 0x1043d /* 𐐽 */: return u8"𐐕" /* 0x10415 */; + case 0x1043e /* 𐐾 */: return u8"𐐖" /* 0x10416 */; + case 0x1043f /* 𐐿 */: return u8"𐐗" /* 0x10417 */; + case 0x10440 /* 𐑀 */: return u8"𐐘" /* 0x10418 */; + case 0x10441 /* 𐑁 */: return u8"𐐙" /* 0x10419 */; + case 0x10442 /* 𐑂 */: return u8"𐐚" /* 0x1041a */; + case 0x10443 /* 𐑃 */: return u8"𐐛" /* 0x1041b */; + case 0x10444 /* 𐑄 */: return u8"𐐜" /* 0x1041c */; + case 0x10445 /* 𐑅 */: return u8"𐐝" /* 0x1041d */; + case 0x10446 /* 𐑆 */: return u8"𐐞" /* 0x1041e */; + case 0x10447 /* 𐑇 */: return u8"𐐟" /* 0x1041f */; + case 0x10448 /* 𐑈 */: return u8"𐐠" /* 0x10420 */; + case 0x10449 /* 𐑉 */: return u8"𐐡" /* 0x10421 */; + case 0x1044a /* 𐑊 */: return u8"𐐢" /* 0x10422 */; + case 0x1044b /* 𐑋 */: return u8"𐐣" /* 0x10423 */; + case 0x1044c /* 𐑌 */: return u8"𐐤" /* 0x10424 */; + case 0x1044d /* 𐑍 */: return u8"𐐥" /* 0x10425 */; + case 0x1044e /* 𐑎 */: return u8"𐐦" /* 0x10426 */; + case 0x1044f /* 𐑏 */: return u8"𐐧" /* 0x10427 */; + case 0x104d8 /* 𐓘 */: return u8"𐒰" /* 0x104b0 */; + case 0x104d9 /* 𐓙 */: return u8"𐒱" /* 0x104b1 */; + case 0x104da /* 𐓚 */: return u8"𐒲" /* 0x104b2 */; + case 0x104db /* 𐓛 */: return u8"𐒳" /* 0x104b3 */; + case 0x104dc /* 𐓜 */: return u8"𐒴" /* 0x104b4 */; + case 0x104dd /* 𐓝 */: return u8"𐒵" /* 0x104b5 */; + case 0x104de /* 𐓞 */: return u8"𐒶" /* 0x104b6 */; + case 0x104df /* 𐓟 */: return u8"𐒷" /* 0x104b7 */; + case 0x104e0 /* 𐓠 */: return u8"𐒸" /* 0x104b8 */; + case 0x104e1 /* 𐓡 */: return u8"𐒹" /* 0x104b9 */; + case 0x104e2 /* 𐓢 */: return u8"𐒺" /* 0x104ba */; + case 0x104e3 /* 𐓣 */: return u8"𐒻" /* 0x104bb */; + case 0x104e4 /* 𐓤 */: return u8"𐒼" /* 0x104bc */; + case 0x104e5 /* 𐓥 */: return u8"𐒽" /* 0x104bd */; + case 0x104e6 /* 𐓦 */: return u8"𐒾" /* 0x104be */; + case 0x104e7 /* 𐓧 */: return u8"𐒿" /* 0x104bf */; + case 0x104e8 /* 𐓨 */: return u8"𐓀" /* 0x104c0 */; + case 0x104e9 /* 𐓩 */: return u8"𐓁" /* 0x104c1 */; + case 0x104ea /* 𐓪 */: return u8"𐓂" /* 0x104c2 */; + case 0x104eb /* 𐓫 */: return u8"𐓃" /* 0x104c3 */; + case 0x104ec /* 𐓬 */: return u8"𐓄" /* 0x104c4 */; + case 0x104ed /* 𐓭 */: return u8"𐓅" /* 0x104c5 */; + case 0x104ee /* 𐓮 */: return u8"𐓆" /* 0x104c6 */; + case 0x104ef /* 𐓯 */: return u8"𐓇" /* 0x104c7 */; + case 0x104f0 /* 𐓰 */: return u8"𐓈" /* 0x104c8 */; + case 0x104f1 /* 𐓱 */: return u8"𐓉" /* 0x104c9 */; + case 0x104f2 /* 𐓲 */: return u8"𐓊" /* 0x104ca */; + case 0x104f3 /* 𐓳 */: return u8"𐓋" /* 0x104cb */; + case 0x104f4 /* 𐓴 */: return u8"𐓌" /* 0x104cc */; + case 0x104f5 /* 𐓵 */: return u8"𐓍" /* 0x104cd */; + case 0x104f6 /* 𐓶 */: return u8"𐓎" /* 0x104ce */; + case 0x104f7 /* 𐓷 */: return u8"𐓏" /* 0x104cf */; + case 0x104f8 /* 𐓸 */: return u8"𐓐" /* 0x104d0 */; + case 0x104f9 /* 𐓹 */: return u8"𐓑" /* 0x104d1 */; + case 0x104fa /* 𐓺 */: return u8"𐓒" /* 0x104d2 */; + case 0x104fb /* 𐓻 */: return u8"𐓓" /* 0x104d3 */; + case 0x10cc0 /* 𐳀 */: return u8"𐲀" /* 0x10c80 */; + case 0x10cc1 /* 𐳁 */: return u8"𐲁" /* 0x10c81 */; + case 0x10cc2 /* 𐳂 */: return u8"𐲂" /* 0x10c82 */; + case 0x10cc3 /* 𐳃 */: return u8"𐲃" /* 0x10c83 */; + case 0x10cc4 /* 𐳄 */: return u8"𐲄" /* 0x10c84 */; + case 0x10cc5 /* 𐳅 */: return u8"𐲅" /* 0x10c85 */; + case 0x10cc6 /* 𐳆 */: return u8"𐲆" /* 0x10c86 */; + case 0x10cc7 /* 𐳇 */: return u8"𐲇" /* 0x10c87 */; + case 0x10cc8 /* 𐳈 */: return u8"𐲈" /* 0x10c88 */; + case 0x10cc9 /* 𐳉 */: return u8"𐲉" /* 0x10c89 */; + case 0x10cca /* 𐳊 */: return u8"𐲊" /* 0x10c8a */; + case 0x10ccb /* 𐳋 */: return u8"𐲋" /* 0x10c8b */; + case 0x10ccc /* 𐳌 */: return u8"𐲌" /* 0x10c8c */; + case 0x10ccd /* 𐳍 */: return u8"𐲍" /* 0x10c8d */; + case 0x10cce /* 𐳎 */: return u8"𐲎" /* 0x10c8e */; + case 0x10ccf /* 𐳏 */: return u8"𐲏" /* 0x10c8f */; + case 0x10cd0 /* 𐳐 */: return u8"𐲐" /* 0x10c90 */; + case 0x10cd1 /* 𐳑 */: return u8"𐲑" /* 0x10c91 */; + case 0x10cd2 /* 𐳒 */: return u8"𐲒" /* 0x10c92 */; + case 0x10cd3 /* 𐳓 */: return u8"𐲓" /* 0x10c93 */; + case 0x10cd4 /* 𐳔 */: return u8"𐲔" /* 0x10c94 */; + case 0x10cd5 /* 𐳕 */: return u8"𐲕" /* 0x10c95 */; + case 0x10cd6 /* 𐳖 */: return u8"𐲖" /* 0x10c96 */; + case 0x10cd7 /* 𐳗 */: return u8"𐲗" /* 0x10c97 */; + case 0x10cd8 /* 𐳘 */: return u8"𐲘" /* 0x10c98 */; + case 0x10cd9 /* 𐳙 */: return u8"𐲙" /* 0x10c99 */; + case 0x10cda /* 𐳚 */: return u8"𐲚" /* 0x10c9a */; + case 0x10cdb /* 𐳛 */: return u8"𐲛" /* 0x10c9b */; + case 0x10cdc /* 𐳜 */: return u8"𐲜" /* 0x10c9c */; + case 0x10cdd /* 𐳝 */: return u8"𐲝" /* 0x10c9d */; + case 0x10cde /* 𐳞 */: return u8"𐲞" /* 0x10c9e */; + case 0x10cdf /* 𐳟 */: return u8"𐲟" /* 0x10c9f */; + case 0x10ce0 /* 𐳠 */: return u8"𐲠" /* 0x10ca0 */; + case 0x10ce1 /* 𐳡 */: return u8"𐲡" /* 0x10ca1 */; + case 0x10ce2 /* 𐳢 */: return u8"𐲢" /* 0x10ca2 */; + case 0x10ce3 /* 𐳣 */: return u8"𐲣" /* 0x10ca3 */; + case 0x10ce4 /* 𐳤 */: return u8"𐲤" /* 0x10ca4 */; + case 0x10ce5 /* 𐳥 */: return u8"𐲥" /* 0x10ca5 */; + case 0x10ce6 /* 𐳦 */: return u8"𐲦" /* 0x10ca6 */; + case 0x10ce7 /* 𐳧 */: return u8"𐲧" /* 0x10ca7 */; + case 0x10ce8 /* 𐳨 */: return u8"𐲨" /* 0x10ca8 */; + case 0x10ce9 /* 𐳩 */: return u8"𐲩" /* 0x10ca9 */; + case 0x10cea /* 𐳪 */: return u8"𐲪" /* 0x10caa */; + case 0x10ceb /* 𐳫 */: return u8"𐲫" /* 0x10cab */; + case 0x10cec /* 𐳬 */: return u8"𐲬" /* 0x10cac */; + case 0x10ced /* 𐳭 */: return u8"𐲭" /* 0x10cad */; + case 0x10cee /* 𐳮 */: return u8"𐲮" /* 0x10cae */; + case 0x10cef /* 𐳯 */: return u8"𐲯" /* 0x10caf */; + case 0x10cf0 /* 𐳰 */: return u8"𐲰" /* 0x10cb0 */; + case 0x10cf1 /* 𐳱 */: return u8"𐲱" /* 0x10cb1 */; + case 0x10cf2 /* 𐳲 */: return u8"𐲲" /* 0x10cb2 */; + case 0x118c0 /* 𑣀 */: return u8"𑢠" /* 0x118a0 */; + case 0x118c1 /* 𑣁 */: return u8"𑢡" /* 0x118a1 */; + case 0x118c2 /* 𑣂 */: return u8"𑢢" /* 0x118a2 */; + case 0x118c3 /* 𑣃 */: return u8"𑢣" /* 0x118a3 */; + case 0x118c4 /* 𑣄 */: return u8"𑢤" /* 0x118a4 */; + case 0x118c5 /* 𑣅 */: return u8"𑢥" /* 0x118a5 */; + case 0x118c6 /* 𑣆 */: return u8"𑢦" /* 0x118a6 */; + case 0x118c7 /* 𑣇 */: return u8"𑢧" /* 0x118a7 */; + case 0x118c8 /* 𑣈 */: return u8"𑢨" /* 0x118a8 */; + case 0x118c9 /* 𑣉 */: return u8"𑢩" /* 0x118a9 */; + case 0x118ca /* 𑣊 */: return u8"𑢪" /* 0x118aa */; + case 0x118cb /* 𑣋 */: return u8"𑢫" /* 0x118ab */; + case 0x118cc /* 𑣌 */: return u8"𑢬" /* 0x118ac */; + case 0x118cd /* 𑣍 */: return u8"𑢭" /* 0x118ad */; + case 0x118ce /* 𑣎 */: return u8"𑢮" /* 0x118ae */; + case 0x118cf /* 𑣏 */: return u8"𑢯" /* 0x118af */; + case 0x118d0 /* 𑣐 */: return u8"𑢰" /* 0x118b0 */; + case 0x118d1 /* 𑣑 */: return u8"𑢱" /* 0x118b1 */; + case 0x118d2 /* 𑣒 */: return u8"𑢲" /* 0x118b2 */; + case 0x118d3 /* 𑣓 */: return u8"𑢳" /* 0x118b3 */; + case 0x118d4 /* 𑣔 */: return u8"𑢴" /* 0x118b4 */; + case 0x118d5 /* 𑣕 */: return u8"𑢵" /* 0x118b5 */; + case 0x118d6 /* 𑣖 */: return u8"𑢶" /* 0x118b6 */; + case 0x118d7 /* 𑣗 */: return u8"𑢷" /* 0x118b7 */; + case 0x118d8 /* 𑣘 */: return u8"𑢸" /* 0x118b8 */; + case 0x118d9 /* 𑣙 */: return u8"𑢹" /* 0x118b9 */; + case 0x118da /* 𑣚 */: return u8"𑢺" /* 0x118ba */; + case 0x118db /* 𑣛 */: return u8"𑢻" /* 0x118bb */; + case 0x118dc /* 𑣜 */: return u8"𑢼" /* 0x118bc */; + case 0x118dd /* 𑣝 */: return u8"𑢽" /* 0x118bd */; + case 0x118de /* 𑣞 */: return u8"𑢾" /* 0x118be */; + case 0x118df /* 𑣟 */: return u8"𑢿" /* 0x118bf */; + case 0x16e60 /* 𖹠 */: return u8"𖹀" /* 0x16e40 */; + case 0x16e61 /* 𖹡 */: return u8"𖹁" /* 0x16e41 */; + case 0x16e62 /* 𖹢 */: return u8"𖹂" /* 0x16e42 */; + case 0x16e63 /* 𖹣 */: return u8"𖹃" /* 0x16e43 */; + case 0x16e64 /* 𖹤 */: return u8"𖹄" /* 0x16e44 */; + case 0x16e65 /* 𖹥 */: return u8"𖹅" /* 0x16e45 */; + case 0x16e66 /* 𖹦 */: return u8"𖹆" /* 0x16e46 */; + case 0x16e67 /* 𖹧 */: return u8"𖹇" /* 0x16e47 */; + case 0x16e68 /* 𖹨 */: return u8"𖹈" /* 0x16e48 */; + case 0x16e69 /* 𖹩 */: return u8"𖹉" /* 0x16e49 */; + case 0x16e6a /* 𖹪 */: return u8"𖹊" /* 0x16e4a */; + case 0x16e6b /* 𖹫 */: return u8"𖹋" /* 0x16e4b */; + case 0x16e6c /* 𖹬 */: return u8"𖹌" /* 0x16e4c */; + case 0x16e6d /* 𖹭 */: return u8"𖹍" /* 0x16e4d */; + case 0x16e6e /* 𖹮 */: return u8"𖹎" /* 0x16e4e */; + case 0x16e6f /* 𖹯 */: return u8"𖹏" /* 0x16e4f */; + case 0x16e70 /* 𖹰 */: return u8"𖹐" /* 0x16e50 */; + case 0x16e71 /* 𖹱 */: return u8"𖹑" /* 0x16e51 */; + case 0x16e72 /* 𖹲 */: return u8"𖹒" /* 0x16e52 */; + case 0x16e73 /* 𖹳 */: return u8"𖹓" /* 0x16e53 */; + case 0x16e74 /* 𖹴 */: return u8"𖹔" /* 0x16e54 */; + case 0x16e75 /* 𖹵 */: return u8"𖹕" /* 0x16e55 */; + case 0x16e76 /* 𖹶 */: return u8"𖹖" /* 0x16e56 */; + case 0x16e77 /* 𖹷 */: return u8"𖹗" /* 0x16e57 */; + case 0x16e78 /* 𖹸 */: return u8"𖹘" /* 0x16e58 */; + case 0x16e79 /* 𖹹 */: return u8"𖹙" /* 0x16e59 */; + case 0x16e7a /* 𖹺 */: return u8"𖹚" /* 0x16e5a */; + case 0x16e7b /* 𖹻 */: return u8"𖹛" /* 0x16e5b */; + case 0x16e7c /* 𖹼 */: return u8"𖹜" /* 0x16e5c */; + case 0x16e7d /* 𖹽 */: return u8"𖹝" /* 0x16e5d */; + case 0x16e7e /* 𖹾 */: return u8"𖹞" /* 0x16e5e */; + case 0x16e7f /* 𖹿 */: return u8"𖹟" /* 0x16e5f */; + case 0x1e922 /* 𞤢 */: return u8"𞤀" /* 0x1e900 */; + case 0x1e923 /* 𞤣 */: return u8"𞤁" /* 0x1e901 */; + case 0x1e924 /* 𞤤 */: return u8"𞤂" /* 0x1e902 */; + case 0x1e925 /* 𞤥 */: return u8"𞤃" /* 0x1e903 */; + case 0x1e926 /* 𞤦 */: return u8"𞤄" /* 0x1e904 */; + case 0x1e927 /* 𞤧 */: return u8"𞤅" /* 0x1e905 */; + case 0x1e928 /* 𞤨 */: return u8"𞤆" /* 0x1e906 */; + case 0x1e929 /* 𞤩 */: return u8"𞤇" /* 0x1e907 */; + case 0x1e92a /* 𞤪 */: return u8"𞤈" /* 0x1e908 */; + case 0x1e92b /* 𞤫 */: return u8"𞤉" /* 0x1e909 */; + case 0x1e92c /* 𞤬 */: return u8"𞤊" /* 0x1e90a */; + case 0x1e92d /* 𞤭 */: return u8"𞤋" /* 0x1e90b */; + case 0x1e92e /* 𞤮 */: return u8"𞤌" /* 0x1e90c */; + case 0x1e92f /* 𞤯 */: return u8"𞤍" /* 0x1e90d */; + case 0x1e930 /* 𞤰 */: return u8"𞤎" /* 0x1e90e */; + case 0x1e931 /* 𞤱 */: return u8"𞤏" /* 0x1e90f */; + case 0x1e932 /* 𞤲 */: return u8"𞤐" /* 0x1e910 */; + case 0x1e933 /* 𞤳 */: return u8"𞤑" /* 0x1e911 */; + case 0x1e934 /* 𞤴 */: return u8"𞤒" /* 0x1e912 */; + case 0x1e935 /* 𞤵 */: return u8"𞤓" /* 0x1e913 */; + case 0x1e936 /* 𞤶 */: return u8"𞤔" /* 0x1e914 */; + case 0x1e937 /* 𞤷 */: return u8"𞤕" /* 0x1e915 */; + case 0x1e938 /* 𞤸 */: return u8"𞤖" /* 0x1e916 */; + case 0x1e939 /* 𞤹 */: return u8"𞤗" /* 0x1e917 */; + case 0x1e93a /* 𞤺 */: return u8"𞤘" /* 0x1e918 */; + case 0x1e93b /* 𞤻 */: return u8"𞤙" /* 0x1e919 */; + case 0x1e93c /* 𞤼 */: return u8"𞤚" /* 0x1e91a */; + case 0x1e93d /* 𞤽 */: return u8"𞤛" /* 0x1e91b */; + case 0x1e93e /* 𞤾 */: return u8"𞤜" /* 0x1e91c */; + case 0x1e93f /* 𞤿 */: return u8"𞤝" /* 0x1e91d */; + case 0x1e940 /* 𞥀 */: return u8"𞤞" /* 0x1e91e */; + case 0x1e941 /* 𞥁 */: return u8"𞤟" /* 0x1e91f */; + case 0x1e942 /* 𞥂 */: return u8"𞤠" /* 0x1e920 */; + case 0x1e943 /* 𞥃 */: return u8"𞤡" /* 0x1e921 */; + default: return nullptr; + } +} + +inline const char *convertUnicodeToLower(uint32_t code) +{ + switch(code) + { + case 0x41 /* A */: return u8"a" /* 0x61 */; + case 0x42 /* B */: return u8"b" /* 0x62 */; + case 0x43 /* C */: return u8"c" /* 0x63 */; + case 0x44 /* D */: return u8"d" /* 0x64 */; + case 0x45 /* E */: return u8"e" /* 0x65 */; + case 0x46 /* F */: return u8"f" /* 0x66 */; + case 0x47 /* G */: return u8"g" /* 0x67 */; + case 0x48 /* H */: return u8"h" /* 0x68 */; + case 0x49 /* I */: return u8"i" /* 0x69 */; + case 0x4a /* J */: return u8"j" /* 0x6a */; + case 0x4b /* K */: return u8"k" /* 0x6b */; + case 0x4c /* L */: return u8"l" /* 0x6c */; + case 0x4d /* M */: return u8"m" /* 0x6d */; + case 0x4e /* N */: return u8"n" /* 0x6e */; + case 0x4f /* O */: return u8"o" /* 0x6f */; + case 0x50 /* P */: return u8"p" /* 0x70 */; + case 0x51 /* Q */: return u8"q" /* 0x71 */; + case 0x52 /* R */: return u8"r" /* 0x72 */; + case 0x53 /* S */: return u8"s" /* 0x73 */; + case 0x54 /* T */: return u8"t" /* 0x74 */; + case 0x55 /* U */: return u8"u" /* 0x75 */; + case 0x56 /* V */: return u8"v" /* 0x76 */; + case 0x57 /* W */: return u8"w" /* 0x77 */; + case 0x58 /* X */: return u8"x" /* 0x78 */; + case 0x59 /* Y */: return u8"y" /* 0x79 */; + case 0x5a /* Z */: return u8"z" /* 0x7a */; + case 0xc0 /* À */: return u8"à" /* 0xe0 */; + case 0xc1 /* Á */: return u8"á" /* 0xe1 */; + case 0xc2 /*  */: return u8"â" /* 0xe2 */; + case 0xc3 /* à */: return u8"ã" /* 0xe3 */; + case 0xc4 /* Ä */: return u8"ä" /* 0xe4 */; + case 0xc5 /* Å */: return u8"å" /* 0xe5 */; + case 0xc6 /* Æ */: return u8"æ" /* 0xe6 */; + case 0xc7 /* Ç */: return u8"ç" /* 0xe7 */; + case 0xc8 /* È */: return u8"è" /* 0xe8 */; + case 0xc9 /* É */: return u8"é" /* 0xe9 */; + case 0xca /* Ê */: return u8"ê" /* 0xea */; + case 0xcb /* Ë */: return u8"ë" /* 0xeb */; + case 0xcc /* Ì */: return u8"ì" /* 0xec */; + case 0xcd /* Í */: return u8"í" /* 0xed */; + case 0xce /* Î */: return u8"î" /* 0xee */; + case 0xcf /* Ï */: return u8"ï" /* 0xef */; + case 0xd0 /* Ð */: return u8"ð" /* 0xf0 */; + case 0xd1 /* Ñ */: return u8"ñ" /* 0xf1 */; + case 0xd2 /* Ò */: return u8"ò" /* 0xf2 */; + case 0xd3 /* Ó */: return u8"ó" /* 0xf3 */; + case 0xd4 /* Ô */: return u8"ô" /* 0xf4 */; + case 0xd5 /* Õ */: return u8"õ" /* 0xf5 */; + case 0xd6 /* Ö */: return u8"ö" /* 0xf6 */; + case 0xd8 /* Ø */: return u8"ø" /* 0xf8 */; + case 0xd9 /* Ù */: return u8"ù" /* 0xf9 */; + case 0xda /* Ú */: return u8"ú" /* 0xfa */; + case 0xdb /* Û */: return u8"û" /* 0xfb */; + case 0xdc /* Ü */: return u8"ü" /* 0xfc */; + case 0xdd /* Ý */: return u8"ý" /* 0xfd */; + case 0xde /* Þ */: return u8"þ" /* 0xfe */; + case 0x100 /* Ā */: return u8"ā" /* 0x101 */; + case 0x102 /* Ă */: return u8"ă" /* 0x103 */; + case 0x104 /* Ą */: return u8"ą" /* 0x105 */; + case 0x106 /* Ć */: return u8"ć" /* 0x107 */; + case 0x108 /* Ĉ */: return u8"ĉ" /* 0x109 */; + case 0x10a /* Ċ */: return u8"ċ" /* 0x10b */; + case 0x10c /* Č */: return u8"č" /* 0x10d */; + case 0x10e /* Ď */: return u8"ď" /* 0x10f */; + case 0x110 /* Đ */: return u8"đ" /* 0x111 */; + case 0x112 /* Ē */: return u8"ē" /* 0x113 */; + case 0x114 /* Ĕ */: return u8"ĕ" /* 0x115 */; + case 0x116 /* Ė */: return u8"ė" /* 0x117 */; + case 0x118 /* Ę */: return u8"ę" /* 0x119 */; + case 0x11a /* Ě */: return u8"ě" /* 0x11b */; + case 0x11c /* Ĝ */: return u8"ĝ" /* 0x11d */; + case 0x11e /* Ğ */: return u8"ğ" /* 0x11f */; + case 0x120 /* Ġ */: return u8"ġ" /* 0x121 */; + case 0x122 /* Ģ */: return u8"ģ" /* 0x123 */; + case 0x124 /* Ĥ */: return u8"ĥ" /* 0x125 */; + case 0x126 /* Ħ */: return u8"ħ" /* 0x127 */; + case 0x128 /* Ĩ */: return u8"ĩ" /* 0x129 */; + case 0x12a /* Ī */: return u8"ī" /* 0x12b */; + case 0x12c /* Ĭ */: return u8"ĭ" /* 0x12d */; + case 0x12e /* Į */: return u8"į" /* 0x12f */; + case 0x130 /* İ */: return u8"i̇" /* 0x69,0x307 */; + case 0x132 /* IJ */: return u8"ij" /* 0x133 */; + case 0x134 /* Ĵ */: return u8"ĵ" /* 0x135 */; + case 0x136 /* Ķ */: return u8"ķ" /* 0x137 */; + case 0x139 /* Ĺ */: return u8"ĺ" /* 0x13a */; + case 0x13b /* Ļ */: return u8"ļ" /* 0x13c */; + case 0x13d /* Ľ */: return u8"ľ" /* 0x13e */; + case 0x13f /* Ŀ */: return u8"ŀ" /* 0x140 */; + case 0x141 /* Ł */: return u8"ł" /* 0x142 */; + case 0x143 /* Ń */: return u8"ń" /* 0x144 */; + case 0x145 /* Ņ */: return u8"ņ" /* 0x146 */; + case 0x147 /* Ň */: return u8"ň" /* 0x148 */; + case 0x14a /* Ŋ */: return u8"ŋ" /* 0x14b */; + case 0x14c /* Ō */: return u8"ō" /* 0x14d */; + case 0x14e /* Ŏ */: return u8"ŏ" /* 0x14f */; + case 0x150 /* Ő */: return u8"ő" /* 0x151 */; + case 0x152 /* Œ */: return u8"œ" /* 0x153 */; + case 0x154 /* Ŕ */: return u8"ŕ" /* 0x155 */; + case 0x156 /* Ŗ */: return u8"ŗ" /* 0x157 */; + case 0x158 /* Ř */: return u8"ř" /* 0x159 */; + case 0x15a /* Ś */: return u8"ś" /* 0x15b */; + case 0x15c /* Ŝ */: return u8"ŝ" /* 0x15d */; + case 0x15e /* Ş */: return u8"ş" /* 0x15f */; + case 0x160 /* Š */: return u8"š" /* 0x161 */; + case 0x162 /* Ţ */: return u8"ţ" /* 0x163 */; + case 0x164 /* Ť */: return u8"ť" /* 0x165 */; + case 0x166 /* Ŧ */: return u8"ŧ" /* 0x167 */; + case 0x168 /* Ũ */: return u8"ũ" /* 0x169 */; + case 0x16a /* Ū */: return u8"ū" /* 0x16b */; + case 0x16c /* Ŭ */: return u8"ŭ" /* 0x16d */; + case 0x16e /* Ů */: return u8"ů" /* 0x16f */; + case 0x170 /* Ű */: return u8"ű" /* 0x171 */; + case 0x172 /* Ų */: return u8"ų" /* 0x173 */; + case 0x174 /* Ŵ */: return u8"ŵ" /* 0x175 */; + case 0x176 /* Ŷ */: return u8"ŷ" /* 0x177 */; + case 0x178 /* Ÿ */: return u8"ÿ" /* 0xff */; + case 0x179 /* Ź */: return u8"ź" /* 0x17a */; + case 0x17b /* Ż */: return u8"ż" /* 0x17c */; + case 0x17d /* Ž */: return u8"ž" /* 0x17e */; + case 0x181 /* Ɓ */: return u8"ɓ" /* 0x253 */; + case 0x182 /* Ƃ */: return u8"ƃ" /* 0x183 */; + case 0x184 /* Ƅ */: return u8"ƅ" /* 0x185 */; + case 0x186 /* Ɔ */: return u8"ɔ" /* 0x254 */; + case 0x187 /* Ƈ */: return u8"ƈ" /* 0x188 */; + case 0x189 /* Ɖ */: return u8"ɖ" /* 0x256 */; + case 0x18a /* Ɗ */: return u8"ɗ" /* 0x257 */; + case 0x18b /* Ƌ */: return u8"ƌ" /* 0x18c */; + case 0x18e /* Ǝ */: return u8"ǝ" /* 0x1dd */; + case 0x18f /* Ə */: return u8"ə" /* 0x259 */; + case 0x190 /* Ɛ */: return u8"ɛ" /* 0x25b */; + case 0x191 /* Ƒ */: return u8"ƒ" /* 0x192 */; + case 0x193 /* Ɠ */: return u8"ɠ" /* 0x260 */; + case 0x194 /* Ɣ */: return u8"ɣ" /* 0x263 */; + case 0x196 /* Ɩ */: return u8"ɩ" /* 0x269 */; + case 0x197 /* Ɨ */: return u8"ɨ" /* 0x268 */; + case 0x198 /* Ƙ */: return u8"ƙ" /* 0x199 */; + case 0x19c /* Ɯ */: return u8"ɯ" /* 0x26f */; + case 0x19d /* Ɲ */: return u8"ɲ" /* 0x272 */; + case 0x19f /* Ɵ */: return u8"ɵ" /* 0x275 */; + case 0x1a0 /* Ơ */: return u8"ơ" /* 0x1a1 */; + case 0x1a2 /* Ƣ */: return u8"ƣ" /* 0x1a3 */; + case 0x1a4 /* Ƥ */: return u8"ƥ" /* 0x1a5 */; + case 0x1a6 /* Ʀ */: return u8"ʀ" /* 0x280 */; + case 0x1a7 /* Ƨ */: return u8"ƨ" /* 0x1a8 */; + case 0x1a9 /* Ʃ */: return u8"ʃ" /* 0x283 */; + case 0x1ac /* Ƭ */: return u8"ƭ" /* 0x1ad */; + case 0x1ae /* Ʈ */: return u8"ʈ" /* 0x288 */; + case 0x1af /* Ư */: return u8"ư" /* 0x1b0 */; + case 0x1b1 /* Ʊ */: return u8"ʊ" /* 0x28a */; + case 0x1b2 /* Ʋ */: return u8"ʋ" /* 0x28b */; + case 0x1b3 /* Ƴ */: return u8"ƴ" /* 0x1b4 */; + case 0x1b5 /* Ƶ */: return u8"ƶ" /* 0x1b6 */; + case 0x1b7 /* Ʒ */: return u8"ʒ" /* 0x292 */; + case 0x1b8 /* Ƹ */: return u8"ƹ" /* 0x1b9 */; + case 0x1bc /* Ƽ */: return u8"ƽ" /* 0x1bd */; + case 0x1c4 /* DŽ */: return u8"dž" /* 0x1c6 */; + case 0x1c5 /* Dž */: return u8"dž" /* 0x1c6 */; + case 0x1c7 /* LJ */: return u8"lj" /* 0x1c9 */; + case 0x1c8 /* Lj */: return u8"lj" /* 0x1c9 */; + case 0x1ca /* NJ */: return u8"nj" /* 0x1cc */; + case 0x1cb /* Nj */: return u8"nj" /* 0x1cc */; + case 0x1cd /* Ǎ */: return u8"ǎ" /* 0x1ce */; + case 0x1cf /* Ǐ */: return u8"ǐ" /* 0x1d0 */; + case 0x1d1 /* Ǒ */: return u8"ǒ" /* 0x1d2 */; + case 0x1d3 /* Ǔ */: return u8"ǔ" /* 0x1d4 */; + case 0x1d5 /* Ǖ */: return u8"ǖ" /* 0x1d6 */; + case 0x1d7 /* Ǘ */: return u8"ǘ" /* 0x1d8 */; + case 0x1d9 /* Ǚ */: return u8"ǚ" /* 0x1da */; + case 0x1db /* Ǜ */: return u8"ǜ" /* 0x1dc */; + case 0x1de /* Ǟ */: return u8"ǟ" /* 0x1df */; + case 0x1e0 /* Ǡ */: return u8"ǡ" /* 0x1e1 */; + case 0x1e2 /* Ǣ */: return u8"ǣ" /* 0x1e3 */; + case 0x1e4 /* Ǥ */: return u8"ǥ" /* 0x1e5 */; + case 0x1e6 /* Ǧ */: return u8"ǧ" /* 0x1e7 */; + case 0x1e8 /* Ǩ */: return u8"ǩ" /* 0x1e9 */; + case 0x1ea /* Ǫ */: return u8"ǫ" /* 0x1eb */; + case 0x1ec /* Ǭ */: return u8"ǭ" /* 0x1ed */; + case 0x1ee /* Ǯ */: return u8"ǯ" /* 0x1ef */; + case 0x1f1 /* DZ */: return u8"dz" /* 0x1f3 */; + case 0x1f2 /* Dz */: return u8"dz" /* 0x1f3 */; + case 0x1f4 /* Ǵ */: return u8"ǵ" /* 0x1f5 */; + case 0x1f6 /* Ƕ */: return u8"ƕ" /* 0x195 */; + case 0x1f7 /* Ƿ */: return u8"ƿ" /* 0x1bf */; + case 0x1f8 /* Ǹ */: return u8"ǹ" /* 0x1f9 */; + case 0x1fa /* Ǻ */: return u8"ǻ" /* 0x1fb */; + case 0x1fc /* Ǽ */: return u8"ǽ" /* 0x1fd */; + case 0x1fe /* Ǿ */: return u8"ǿ" /* 0x1ff */; + case 0x200 /* Ȁ */: return u8"ȁ" /* 0x201 */; + case 0x202 /* Ȃ */: return u8"ȃ" /* 0x203 */; + case 0x204 /* Ȅ */: return u8"ȅ" /* 0x205 */; + case 0x206 /* Ȇ */: return u8"ȇ" /* 0x207 */; + case 0x208 /* Ȉ */: return u8"ȉ" /* 0x209 */; + case 0x20a /* Ȋ */: return u8"ȋ" /* 0x20b */; + case 0x20c /* Ȍ */: return u8"ȍ" /* 0x20d */; + case 0x20e /* Ȏ */: return u8"ȏ" /* 0x20f */; + case 0x210 /* Ȑ */: return u8"ȑ" /* 0x211 */; + case 0x212 /* Ȓ */: return u8"ȓ" /* 0x213 */; + case 0x214 /* Ȕ */: return u8"ȕ" /* 0x215 */; + case 0x216 /* Ȗ */: return u8"ȗ" /* 0x217 */; + case 0x218 /* Ș */: return u8"ș" /* 0x219 */; + case 0x21a /* Ț */: return u8"ț" /* 0x21b */; + case 0x21c /* Ȝ */: return u8"ȝ" /* 0x21d */; + case 0x21e /* Ȟ */: return u8"ȟ" /* 0x21f */; + case 0x220 /* Ƞ */: return u8"ƞ" /* 0x19e */; + case 0x222 /* Ȣ */: return u8"ȣ" /* 0x223 */; + case 0x224 /* Ȥ */: return u8"ȥ" /* 0x225 */; + case 0x226 /* Ȧ */: return u8"ȧ" /* 0x227 */; + case 0x228 /* Ȩ */: return u8"ȩ" /* 0x229 */; + case 0x22a /* Ȫ */: return u8"ȫ" /* 0x22b */; + case 0x22c /* Ȭ */: return u8"ȭ" /* 0x22d */; + case 0x22e /* Ȯ */: return u8"ȯ" /* 0x22f */; + case 0x230 /* Ȱ */: return u8"ȱ" /* 0x231 */; + case 0x232 /* Ȳ */: return u8"ȳ" /* 0x233 */; + case 0x23a /* Ⱥ */: return u8"ⱥ" /* 0x2c65 */; + case 0x23b /* Ȼ */: return u8"ȼ" /* 0x23c */; + case 0x23d /* Ƚ */: return u8"ƚ" /* 0x19a */; + case 0x23e /* Ⱦ */: return u8"ⱦ" /* 0x2c66 */; + case 0x241 /* Ɂ */: return u8"ɂ" /* 0x242 */; + case 0x243 /* Ƀ */: return u8"ƀ" /* 0x180 */; + case 0x244 /* Ʉ */: return u8"ʉ" /* 0x289 */; + case 0x245 /* Ʌ */: return u8"ʌ" /* 0x28c */; + case 0x246 /* Ɇ */: return u8"ɇ" /* 0x247 */; + case 0x248 /* Ɉ */: return u8"ɉ" /* 0x249 */; + case 0x24a /* Ɋ */: return u8"ɋ" /* 0x24b */; + case 0x24c /* Ɍ */: return u8"ɍ" /* 0x24d */; + case 0x24e /* Ɏ */: return u8"ɏ" /* 0x24f */; + case 0x370 /* Ͱ */: return u8"ͱ" /* 0x371 */; + case 0x372 /* Ͳ */: return u8"ͳ" /* 0x373 */; + case 0x376 /* Ͷ */: return u8"ͷ" /* 0x377 */; + case 0x37f /* Ϳ */: return u8"ϳ" /* 0x3f3 */; + case 0x386 /* Ά */: return u8"ά" /* 0x3ac */; + case 0x388 /* Έ */: return u8"έ" /* 0x3ad */; + case 0x389 /* Ή */: return u8"ή" /* 0x3ae */; + case 0x38a /* Ί */: return u8"ί" /* 0x3af */; + case 0x38c /* Ό */: return u8"ό" /* 0x3cc */; + case 0x38e /* Ύ */: return u8"ύ" /* 0x3cd */; + case 0x38f /* Ώ */: return u8"ώ" /* 0x3ce */; + case 0x391 /* Α */: return u8"α" /* 0x3b1 */; + case 0x392 /* Β */: return u8"β" /* 0x3b2 */; + case 0x393 /* Γ */: return u8"γ" /* 0x3b3 */; + case 0x394 /* Δ */: return u8"δ" /* 0x3b4 */; + case 0x395 /* Ε */: return u8"ε" /* 0x3b5 */; + case 0x396 /* Ζ */: return u8"ζ" /* 0x3b6 */; + case 0x397 /* Η */: return u8"η" /* 0x3b7 */; + case 0x398 /* Θ */: return u8"θ" /* 0x3b8 */; + case 0x399 /* Ι */: return u8"ι" /* 0x3b9 */; + case 0x39a /* Κ */: return u8"κ" /* 0x3ba */; + case 0x39b /* Λ */: return u8"λ" /* 0x3bb */; + case 0x39c /* Μ */: return u8"μ" /* 0x3bc */; + case 0x39d /* Ν */: return u8"ν" /* 0x3bd */; + case 0x39e /* Ξ */: return u8"ξ" /* 0x3be */; + case 0x39f /* Ο */: return u8"ο" /* 0x3bf */; + case 0x3a0 /* Π */: return u8"π" /* 0x3c0 */; + case 0x3a1 /* Ρ */: return u8"ρ" /* 0x3c1 */; + case 0x3a3 /* Σ */: return u8"σ" /* 0x3c3 */; + case 0x3a4 /* Τ */: return u8"τ" /* 0x3c4 */; + case 0x3a5 /* Υ */: return u8"υ" /* 0x3c5 */; + case 0x3a6 /* Φ */: return u8"φ" /* 0x3c6 */; + case 0x3a7 /* Χ */: return u8"χ" /* 0x3c7 */; + case 0x3a8 /* Ψ */: return u8"ψ" /* 0x3c8 */; + case 0x3a9 /* Ω */: return u8"ω" /* 0x3c9 */; + case 0x3aa /* Ϊ */: return u8"ϊ" /* 0x3ca */; + case 0x3ab /* Ϋ */: return u8"ϋ" /* 0x3cb */; + case 0x3cf /* Ϗ */: return u8"ϗ" /* 0x3d7 */; + case 0x3d8 /* Ϙ */: return u8"ϙ" /* 0x3d9 */; + case 0x3da /* Ϛ */: return u8"ϛ" /* 0x3db */; + case 0x3dc /* Ϝ */: return u8"ϝ" /* 0x3dd */; + case 0x3de /* Ϟ */: return u8"ϟ" /* 0x3df */; + case 0x3e0 /* Ϡ */: return u8"ϡ" /* 0x3e1 */; + case 0x3e2 /* Ϣ */: return u8"ϣ" /* 0x3e3 */; + case 0x3e4 /* Ϥ */: return u8"ϥ" /* 0x3e5 */; + case 0x3e6 /* Ϧ */: return u8"ϧ" /* 0x3e7 */; + case 0x3e8 /* Ϩ */: return u8"ϩ" /* 0x3e9 */; + case 0x3ea /* Ϫ */: return u8"ϫ" /* 0x3eb */; + case 0x3ec /* Ϭ */: return u8"ϭ" /* 0x3ed */; + case 0x3ee /* Ϯ */: return u8"ϯ" /* 0x3ef */; + case 0x3f4 /* ϴ */: return u8"θ" /* 0x3b8 */; + case 0x3f7 /* Ϸ */: return u8"ϸ" /* 0x3f8 */; + case 0x3f9 /* Ϲ */: return u8"ϲ" /* 0x3f2 */; + case 0x3fa /* Ϻ */: return u8"ϻ" /* 0x3fb */; + case 0x3fd /* Ͻ */: return u8"ͻ" /* 0x37b */; + case 0x3fe /* Ͼ */: return u8"ͼ" /* 0x37c */; + case 0x3ff /* Ͽ */: return u8"ͽ" /* 0x37d */; + case 0x400 /* Ѐ */: return u8"ѐ" /* 0x450 */; + case 0x401 /* Ё */: return u8"ё" /* 0x451 */; + case 0x402 /* Ђ */: return u8"ђ" /* 0x452 */; + case 0x403 /* Ѓ */: return u8"ѓ" /* 0x453 */; + case 0x404 /* Є */: return u8"є" /* 0x454 */; + case 0x405 /* Ѕ */: return u8"ѕ" /* 0x455 */; + case 0x406 /* І */: return u8"і" /* 0x456 */; + case 0x407 /* Ї */: return u8"ї" /* 0x457 */; + case 0x408 /* Ј */: return u8"ј" /* 0x458 */; + case 0x409 /* Љ */: return u8"љ" /* 0x459 */; + case 0x40a /* Њ */: return u8"њ" /* 0x45a */; + case 0x40b /* Ћ */: return u8"ћ" /* 0x45b */; + case 0x40c /* Ќ */: return u8"ќ" /* 0x45c */; + case 0x40d /* Ѝ */: return u8"ѝ" /* 0x45d */; + case 0x40e /* Ў */: return u8"ў" /* 0x45e */; + case 0x40f /* Џ */: return u8"џ" /* 0x45f */; + case 0x410 /* А */: return u8"а" /* 0x430 */; + case 0x411 /* Б */: return u8"б" /* 0x431 */; + case 0x412 /* В */: return u8"в" /* 0x432 */; + case 0x413 /* Г */: return u8"г" /* 0x433 */; + case 0x414 /* Д */: return u8"д" /* 0x434 */; + case 0x415 /* Е */: return u8"е" /* 0x435 */; + case 0x416 /* Ж */: return u8"ж" /* 0x436 */; + case 0x417 /* З */: return u8"з" /* 0x437 */; + case 0x418 /* И */: return u8"и" /* 0x438 */; + case 0x419 /* Й */: return u8"й" /* 0x439 */; + case 0x41a /* К */: return u8"к" /* 0x43a */; + case 0x41b /* Л */: return u8"л" /* 0x43b */; + case 0x41c /* М */: return u8"м" /* 0x43c */; + case 0x41d /* Н */: return u8"н" /* 0x43d */; + case 0x41e /* О */: return u8"о" /* 0x43e */; + case 0x41f /* П */: return u8"п" /* 0x43f */; + case 0x420 /* Р */: return u8"р" /* 0x440 */; + case 0x421 /* С */: return u8"с" /* 0x441 */; + case 0x422 /* Т */: return u8"т" /* 0x442 */; + case 0x423 /* У */: return u8"у" /* 0x443 */; + case 0x424 /* Ф */: return u8"ф" /* 0x444 */; + case 0x425 /* Х */: return u8"х" /* 0x445 */; + case 0x426 /* Ц */: return u8"ц" /* 0x446 */; + case 0x427 /* Ч */: return u8"ч" /* 0x447 */; + case 0x428 /* Ш */: return u8"ш" /* 0x448 */; + case 0x429 /* Щ */: return u8"щ" /* 0x449 */; + case 0x42a /* Ъ */: return u8"ъ" /* 0x44a */; + case 0x42b /* Ы */: return u8"ы" /* 0x44b */; + case 0x42c /* Ь */: return u8"ь" /* 0x44c */; + case 0x42d /* Э */: return u8"э" /* 0x44d */; + case 0x42e /* Ю */: return u8"ю" /* 0x44e */; + case 0x42f /* Я */: return u8"я" /* 0x44f */; + case 0x460 /* Ѡ */: return u8"ѡ" /* 0x461 */; + case 0x462 /* Ѣ */: return u8"ѣ" /* 0x463 */; + case 0x464 /* Ѥ */: return u8"ѥ" /* 0x465 */; + case 0x466 /* Ѧ */: return u8"ѧ" /* 0x467 */; + case 0x468 /* Ѩ */: return u8"ѩ" /* 0x469 */; + case 0x46a /* Ѫ */: return u8"ѫ" /* 0x46b */; + case 0x46c /* Ѭ */: return u8"ѭ" /* 0x46d */; + case 0x46e /* Ѯ */: return u8"ѯ" /* 0x46f */; + case 0x470 /* Ѱ */: return u8"ѱ" /* 0x471 */; + case 0x472 /* Ѳ */: return u8"ѳ" /* 0x473 */; + case 0x474 /* Ѵ */: return u8"ѵ" /* 0x475 */; + case 0x476 /* Ѷ */: return u8"ѷ" /* 0x477 */; + case 0x478 /* Ѹ */: return u8"ѹ" /* 0x479 */; + case 0x47a /* Ѻ */: return u8"ѻ" /* 0x47b */; + case 0x47c /* Ѽ */: return u8"ѽ" /* 0x47d */; + case 0x47e /* Ѿ */: return u8"ѿ" /* 0x47f */; + case 0x480 /* Ҁ */: return u8"ҁ" /* 0x481 */; + case 0x48a /* Ҋ */: return u8"ҋ" /* 0x48b */; + case 0x48c /* Ҍ */: return u8"ҍ" /* 0x48d */; + case 0x48e /* Ҏ */: return u8"ҏ" /* 0x48f */; + case 0x490 /* Ґ */: return u8"ґ" /* 0x491 */; + case 0x492 /* Ғ */: return u8"ғ" /* 0x493 */; + case 0x494 /* Ҕ */: return u8"ҕ" /* 0x495 */; + case 0x496 /* Җ */: return u8"җ" /* 0x497 */; + case 0x498 /* Ҙ */: return u8"ҙ" /* 0x499 */; + case 0x49a /* Қ */: return u8"қ" /* 0x49b */; + case 0x49c /* Ҝ */: return u8"ҝ" /* 0x49d */; + case 0x49e /* Ҟ */: return u8"ҟ" /* 0x49f */; + case 0x4a0 /* Ҡ */: return u8"ҡ" /* 0x4a1 */; + case 0x4a2 /* Ң */: return u8"ң" /* 0x4a3 */; + case 0x4a4 /* Ҥ */: return u8"ҥ" /* 0x4a5 */; + case 0x4a6 /* Ҧ */: return u8"ҧ" /* 0x4a7 */; + case 0x4a8 /* Ҩ */: return u8"ҩ" /* 0x4a9 */; + case 0x4aa /* Ҫ */: return u8"ҫ" /* 0x4ab */; + case 0x4ac /* Ҭ */: return u8"ҭ" /* 0x4ad */; + case 0x4ae /* Ү */: return u8"ү" /* 0x4af */; + case 0x4b0 /* Ұ */: return u8"ұ" /* 0x4b1 */; + case 0x4b2 /* Ҳ */: return u8"ҳ" /* 0x4b3 */; + case 0x4b4 /* Ҵ */: return u8"ҵ" /* 0x4b5 */; + case 0x4b6 /* Ҷ */: return u8"ҷ" /* 0x4b7 */; + case 0x4b8 /* Ҹ */: return u8"ҹ" /* 0x4b9 */; + case 0x4ba /* Һ */: return u8"һ" /* 0x4bb */; + case 0x4bc /* Ҽ */: return u8"ҽ" /* 0x4bd */; + case 0x4be /* Ҿ */: return u8"ҿ" /* 0x4bf */; + case 0x4c0 /* Ӏ */: return u8"ӏ" /* 0x4cf */; + case 0x4c1 /* Ӂ */: return u8"ӂ" /* 0x4c2 */; + case 0x4c3 /* Ӄ */: return u8"ӄ" /* 0x4c4 */; + case 0x4c5 /* Ӆ */: return u8"ӆ" /* 0x4c6 */; + case 0x4c7 /* Ӈ */: return u8"ӈ" /* 0x4c8 */; + case 0x4c9 /* Ӊ */: return u8"ӊ" /* 0x4ca */; + case 0x4cb /* Ӌ */: return u8"ӌ" /* 0x4cc */; + case 0x4cd /* Ӎ */: return u8"ӎ" /* 0x4ce */; + case 0x4d0 /* Ӑ */: return u8"ӑ" /* 0x4d1 */; + case 0x4d2 /* Ӓ */: return u8"ӓ" /* 0x4d3 */; + case 0x4d4 /* Ӕ */: return u8"ӕ" /* 0x4d5 */; + case 0x4d6 /* Ӗ */: return u8"ӗ" /* 0x4d7 */; + case 0x4d8 /* Ә */: return u8"ә" /* 0x4d9 */; + case 0x4da /* Ӛ */: return u8"ӛ" /* 0x4db */; + case 0x4dc /* Ӝ */: return u8"ӝ" /* 0x4dd */; + case 0x4de /* Ӟ */: return u8"ӟ" /* 0x4df */; + case 0x4e0 /* Ӡ */: return u8"ӡ" /* 0x4e1 */; + case 0x4e2 /* Ӣ */: return u8"ӣ" /* 0x4e3 */; + case 0x4e4 /* Ӥ */: return u8"ӥ" /* 0x4e5 */; + case 0x4e6 /* Ӧ */: return u8"ӧ" /* 0x4e7 */; + case 0x4e8 /* Ө */: return u8"ө" /* 0x4e9 */; + case 0x4ea /* Ӫ */: return u8"ӫ" /* 0x4eb */; + case 0x4ec /* Ӭ */: return u8"ӭ" /* 0x4ed */; + case 0x4ee /* Ӯ */: return u8"ӯ" /* 0x4ef */; + case 0x4f0 /* Ӱ */: return u8"ӱ" /* 0x4f1 */; + case 0x4f2 /* Ӳ */: return u8"ӳ" /* 0x4f3 */; + case 0x4f4 /* Ӵ */: return u8"ӵ" /* 0x4f5 */; + case 0x4f6 /* Ӷ */: return u8"ӷ" /* 0x4f7 */; + case 0x4f8 /* Ӹ */: return u8"ӹ" /* 0x4f9 */; + case 0x4fa /* Ӻ */: return u8"ӻ" /* 0x4fb */; + case 0x4fc /* Ӽ */: return u8"ӽ" /* 0x4fd */; + case 0x4fe /* Ӿ */: return u8"ӿ" /* 0x4ff */; + case 0x500 /* Ԁ */: return u8"ԁ" /* 0x501 */; + case 0x502 /* Ԃ */: return u8"ԃ" /* 0x503 */; + case 0x504 /* Ԅ */: return u8"ԅ" /* 0x505 */; + case 0x506 /* Ԇ */: return u8"ԇ" /* 0x507 */; + case 0x508 /* Ԉ */: return u8"ԉ" /* 0x509 */; + case 0x50a /* Ԋ */: return u8"ԋ" /* 0x50b */; + case 0x50c /* Ԍ */: return u8"ԍ" /* 0x50d */; + case 0x50e /* Ԏ */: return u8"ԏ" /* 0x50f */; + case 0x510 /* Ԑ */: return u8"ԑ" /* 0x511 */; + case 0x512 /* Ԓ */: return u8"ԓ" /* 0x513 */; + case 0x514 /* Ԕ */: return u8"ԕ" /* 0x515 */; + case 0x516 /* Ԗ */: return u8"ԗ" /* 0x517 */; + case 0x518 /* Ԙ */: return u8"ԙ" /* 0x519 */; + case 0x51a /* Ԛ */: return u8"ԛ" /* 0x51b */; + case 0x51c /* Ԝ */: return u8"ԝ" /* 0x51d */; + case 0x51e /* Ԟ */: return u8"ԟ" /* 0x51f */; + case 0x520 /* Ԡ */: return u8"ԡ" /* 0x521 */; + case 0x522 /* Ԣ */: return u8"ԣ" /* 0x523 */; + case 0x524 /* Ԥ */: return u8"ԥ" /* 0x525 */; + case 0x526 /* Ԧ */: return u8"ԧ" /* 0x527 */; + case 0x528 /* Ԩ */: return u8"ԩ" /* 0x529 */; + case 0x52a /* Ԫ */: return u8"ԫ" /* 0x52b */; + case 0x52c /* Ԭ */: return u8"ԭ" /* 0x52d */; + case 0x52e /* Ԯ */: return u8"ԯ" /* 0x52f */; + case 0x531 /* Ա */: return u8"ա" /* 0x561 */; + case 0x532 /* Բ */: return u8"բ" /* 0x562 */; + case 0x533 /* Գ */: return u8"գ" /* 0x563 */; + case 0x534 /* Դ */: return u8"դ" /* 0x564 */; + case 0x535 /* Ե */: return u8"ե" /* 0x565 */; + case 0x536 /* Զ */: return u8"զ" /* 0x566 */; + case 0x537 /* Է */: return u8"է" /* 0x567 */; + case 0x538 /* Ը */: return u8"ը" /* 0x568 */; + case 0x539 /* Թ */: return u8"թ" /* 0x569 */; + case 0x53a /* Ժ */: return u8"ժ" /* 0x56a */; + case 0x53b /* Ի */: return u8"ի" /* 0x56b */; + case 0x53c /* Լ */: return u8"լ" /* 0x56c */; + case 0x53d /* Խ */: return u8"խ" /* 0x56d */; + case 0x53e /* Ծ */: return u8"ծ" /* 0x56e */; + case 0x53f /* Կ */: return u8"կ" /* 0x56f */; + case 0x540 /* Հ */: return u8"հ" /* 0x570 */; + case 0x541 /* Ձ */: return u8"ձ" /* 0x571 */; + case 0x542 /* Ղ */: return u8"ղ" /* 0x572 */; + case 0x543 /* Ճ */: return u8"ճ" /* 0x573 */; + case 0x544 /* Մ */: return u8"մ" /* 0x574 */; + case 0x545 /* Յ */: return u8"յ" /* 0x575 */; + case 0x546 /* Ն */: return u8"ն" /* 0x576 */; + case 0x547 /* Շ */: return u8"շ" /* 0x577 */; + case 0x548 /* Ո */: return u8"ո" /* 0x578 */; + case 0x549 /* Չ */: return u8"չ" /* 0x579 */; + case 0x54a /* Պ */: return u8"պ" /* 0x57a */; + case 0x54b /* Ջ */: return u8"ջ" /* 0x57b */; + case 0x54c /* Ռ */: return u8"ռ" /* 0x57c */; + case 0x54d /* Ս */: return u8"ս" /* 0x57d */; + case 0x54e /* Վ */: return u8"վ" /* 0x57e */; + case 0x54f /* Տ */: return u8"տ" /* 0x57f */; + case 0x550 /* Ր */: return u8"ր" /* 0x580 */; + case 0x551 /* Ց */: return u8"ց" /* 0x581 */; + case 0x552 /* Ւ */: return u8"ւ" /* 0x582 */; + case 0x553 /* Փ */: return u8"փ" /* 0x583 */; + case 0x554 /* Ք */: return u8"ք" /* 0x584 */; + case 0x555 /* Օ */: return u8"օ" /* 0x585 */; + case 0x556 /* Ֆ */: return u8"ֆ" /* 0x586 */; + case 0x10a0 /* Ⴀ */: return u8"ⴀ" /* 0x2d00 */; + case 0x10a1 /* Ⴁ */: return u8"ⴁ" /* 0x2d01 */; + case 0x10a2 /* Ⴂ */: return u8"ⴂ" /* 0x2d02 */; + case 0x10a3 /* Ⴃ */: return u8"ⴃ" /* 0x2d03 */; + case 0x10a4 /* Ⴄ */: return u8"ⴄ" /* 0x2d04 */; + case 0x10a5 /* Ⴅ */: return u8"ⴅ" /* 0x2d05 */; + case 0x10a6 /* Ⴆ */: return u8"ⴆ" /* 0x2d06 */; + case 0x10a7 /* Ⴇ */: return u8"ⴇ" /* 0x2d07 */; + case 0x10a8 /* Ⴈ */: return u8"ⴈ" /* 0x2d08 */; + case 0x10a9 /* Ⴉ */: return u8"ⴉ" /* 0x2d09 */; + case 0x10aa /* Ⴊ */: return u8"ⴊ" /* 0x2d0a */; + case 0x10ab /* Ⴋ */: return u8"ⴋ" /* 0x2d0b */; + case 0x10ac /* Ⴌ */: return u8"ⴌ" /* 0x2d0c */; + case 0x10ad /* Ⴍ */: return u8"ⴍ" /* 0x2d0d */; + case 0x10ae /* Ⴎ */: return u8"ⴎ" /* 0x2d0e */; + case 0x10af /* Ⴏ */: return u8"ⴏ" /* 0x2d0f */; + case 0x10b0 /* Ⴐ */: return u8"ⴐ" /* 0x2d10 */; + case 0x10b1 /* Ⴑ */: return u8"ⴑ" /* 0x2d11 */; + case 0x10b2 /* Ⴒ */: return u8"ⴒ" /* 0x2d12 */; + case 0x10b3 /* Ⴓ */: return u8"ⴓ" /* 0x2d13 */; + case 0x10b4 /* Ⴔ */: return u8"ⴔ" /* 0x2d14 */; + case 0x10b5 /* Ⴕ */: return u8"ⴕ" /* 0x2d15 */; + case 0x10b6 /* Ⴖ */: return u8"ⴖ" /* 0x2d16 */; + case 0x10b7 /* Ⴗ */: return u8"ⴗ" /* 0x2d17 */; + case 0x10b8 /* Ⴘ */: return u8"ⴘ" /* 0x2d18 */; + case 0x10b9 /* Ⴙ */: return u8"ⴙ" /* 0x2d19 */; + case 0x10ba /* Ⴚ */: return u8"ⴚ" /* 0x2d1a */; + case 0x10bb /* Ⴛ */: return u8"ⴛ" /* 0x2d1b */; + case 0x10bc /* Ⴜ */: return u8"ⴜ" /* 0x2d1c */; + case 0x10bd /* Ⴝ */: return u8"ⴝ" /* 0x2d1d */; + case 0x10be /* Ⴞ */: return u8"ⴞ" /* 0x2d1e */; + case 0x10bf /* Ⴟ */: return u8"ⴟ" /* 0x2d1f */; + case 0x10c0 /* Ⴠ */: return u8"ⴠ" /* 0x2d20 */; + case 0x10c1 /* Ⴡ */: return u8"ⴡ" /* 0x2d21 */; + case 0x10c2 /* Ⴢ */: return u8"ⴢ" /* 0x2d22 */; + case 0x10c3 /* Ⴣ */: return u8"ⴣ" /* 0x2d23 */; + case 0x10c4 /* Ⴤ */: return u8"ⴤ" /* 0x2d24 */; + case 0x10c5 /* Ⴥ */: return u8"ⴥ" /* 0x2d25 */; + case 0x10c7 /* Ⴧ */: return u8"ⴧ" /* 0x2d27 */; + case 0x10cd /* Ⴭ */: return u8"ⴭ" /* 0x2d2d */; + case 0x13a0 /* Ꭰ */: return u8"ꭰ" /* 0xab70 */; + case 0x13a1 /* Ꭱ */: return u8"ꭱ" /* 0xab71 */; + case 0x13a2 /* Ꭲ */: return u8"ꭲ" /* 0xab72 */; + case 0x13a3 /* Ꭳ */: return u8"ꭳ" /* 0xab73 */; + case 0x13a4 /* Ꭴ */: return u8"ꭴ" /* 0xab74 */; + case 0x13a5 /* Ꭵ */: return u8"ꭵ" /* 0xab75 */; + case 0x13a6 /* Ꭶ */: return u8"ꭶ" /* 0xab76 */; + case 0x13a7 /* Ꭷ */: return u8"ꭷ" /* 0xab77 */; + case 0x13a8 /* Ꭸ */: return u8"ꭸ" /* 0xab78 */; + case 0x13a9 /* Ꭹ */: return u8"ꭹ" /* 0xab79 */; + case 0x13aa /* Ꭺ */: return u8"ꭺ" /* 0xab7a */; + case 0x13ab /* Ꭻ */: return u8"ꭻ" /* 0xab7b */; + case 0x13ac /* Ꭼ */: return u8"ꭼ" /* 0xab7c */; + case 0x13ad /* Ꭽ */: return u8"ꭽ" /* 0xab7d */; + case 0x13ae /* Ꭾ */: return u8"ꭾ" /* 0xab7e */; + case 0x13af /* Ꭿ */: return u8"ꭿ" /* 0xab7f */; + case 0x13b0 /* Ꮀ */: return u8"ꮀ" /* 0xab80 */; + case 0x13b1 /* Ꮁ */: return u8"ꮁ" /* 0xab81 */; + case 0x13b2 /* Ꮂ */: return u8"ꮂ" /* 0xab82 */; + case 0x13b3 /* Ꮃ */: return u8"ꮃ" /* 0xab83 */; + case 0x13b4 /* Ꮄ */: return u8"ꮄ" /* 0xab84 */; + case 0x13b5 /* Ꮅ */: return u8"ꮅ" /* 0xab85 */; + case 0x13b6 /* Ꮆ */: return u8"ꮆ" /* 0xab86 */; + case 0x13b7 /* Ꮇ */: return u8"ꮇ" /* 0xab87 */; + case 0x13b8 /* Ꮈ */: return u8"ꮈ" /* 0xab88 */; + case 0x13b9 /* Ꮉ */: return u8"ꮉ" /* 0xab89 */; + case 0x13ba /* Ꮊ */: return u8"ꮊ" /* 0xab8a */; + case 0x13bb /* Ꮋ */: return u8"ꮋ" /* 0xab8b */; + case 0x13bc /* Ꮌ */: return u8"ꮌ" /* 0xab8c */; + case 0x13bd /* Ꮍ */: return u8"ꮍ" /* 0xab8d */; + case 0x13be /* Ꮎ */: return u8"ꮎ" /* 0xab8e */; + case 0x13bf /* Ꮏ */: return u8"ꮏ" /* 0xab8f */; + case 0x13c0 /* Ꮐ */: return u8"ꮐ" /* 0xab90 */; + case 0x13c1 /* Ꮑ */: return u8"ꮑ" /* 0xab91 */; + case 0x13c2 /* Ꮒ */: return u8"ꮒ" /* 0xab92 */; + case 0x13c3 /* Ꮓ */: return u8"ꮓ" /* 0xab93 */; + case 0x13c4 /* Ꮔ */: return u8"ꮔ" /* 0xab94 */; + case 0x13c5 /* Ꮕ */: return u8"ꮕ" /* 0xab95 */; + case 0x13c6 /* Ꮖ */: return u8"ꮖ" /* 0xab96 */; + case 0x13c7 /* Ꮗ */: return u8"ꮗ" /* 0xab97 */; + case 0x13c8 /* Ꮘ */: return u8"ꮘ" /* 0xab98 */; + case 0x13c9 /* Ꮙ */: return u8"ꮙ" /* 0xab99 */; + case 0x13ca /* Ꮚ */: return u8"ꮚ" /* 0xab9a */; + case 0x13cb /* Ꮛ */: return u8"ꮛ" /* 0xab9b */; + case 0x13cc /* Ꮜ */: return u8"ꮜ" /* 0xab9c */; + case 0x13cd /* Ꮝ */: return u8"ꮝ" /* 0xab9d */; + case 0x13ce /* Ꮞ */: return u8"ꮞ" /* 0xab9e */; + case 0x13cf /* Ꮟ */: return u8"ꮟ" /* 0xab9f */; + case 0x13d0 /* Ꮠ */: return u8"ꮠ" /* 0xaba0 */; + case 0x13d1 /* Ꮡ */: return u8"ꮡ" /* 0xaba1 */; + case 0x13d2 /* Ꮢ */: return u8"ꮢ" /* 0xaba2 */; + case 0x13d3 /* Ꮣ */: return u8"ꮣ" /* 0xaba3 */; + case 0x13d4 /* Ꮤ */: return u8"ꮤ" /* 0xaba4 */; + case 0x13d5 /* Ꮥ */: return u8"ꮥ" /* 0xaba5 */; + case 0x13d6 /* Ꮦ */: return u8"ꮦ" /* 0xaba6 */; + case 0x13d7 /* Ꮧ */: return u8"ꮧ" /* 0xaba7 */; + case 0x13d8 /* Ꮨ */: return u8"ꮨ" /* 0xaba8 */; + case 0x13d9 /* Ꮩ */: return u8"ꮩ" /* 0xaba9 */; + case 0x13da /* Ꮪ */: return u8"ꮪ" /* 0xabaa */; + case 0x13db /* Ꮫ */: return u8"ꮫ" /* 0xabab */; + case 0x13dc /* Ꮬ */: return u8"ꮬ" /* 0xabac */; + case 0x13dd /* Ꮭ */: return u8"ꮭ" /* 0xabad */; + case 0x13de /* Ꮮ */: return u8"ꮮ" /* 0xabae */; + case 0x13df /* Ꮯ */: return u8"ꮯ" /* 0xabaf */; + case 0x13e0 /* Ꮰ */: return u8"ꮰ" /* 0xabb0 */; + case 0x13e1 /* Ꮱ */: return u8"ꮱ" /* 0xabb1 */; + case 0x13e2 /* Ꮲ */: return u8"ꮲ" /* 0xabb2 */; + case 0x13e3 /* Ꮳ */: return u8"ꮳ" /* 0xabb3 */; + case 0x13e4 /* Ꮴ */: return u8"ꮴ" /* 0xabb4 */; + case 0x13e5 /* Ꮵ */: return u8"ꮵ" /* 0xabb5 */; + case 0x13e6 /* Ꮶ */: return u8"ꮶ" /* 0xabb6 */; + case 0x13e7 /* Ꮷ */: return u8"ꮷ" /* 0xabb7 */; + case 0x13e8 /* Ꮸ */: return u8"ꮸ" /* 0xabb8 */; + case 0x13e9 /* Ꮹ */: return u8"ꮹ" /* 0xabb9 */; + case 0x13ea /* Ꮺ */: return u8"ꮺ" /* 0xabba */; + case 0x13eb /* Ꮻ */: return u8"ꮻ" /* 0xabbb */; + case 0x13ec /* Ꮼ */: return u8"ꮼ" /* 0xabbc */; + case 0x13ed /* Ꮽ */: return u8"ꮽ" /* 0xabbd */; + case 0x13ee /* Ꮾ */: return u8"ꮾ" /* 0xabbe */; + case 0x13ef /* Ꮿ */: return u8"ꮿ" /* 0xabbf */; + case 0x13f0 /* Ᏸ */: return u8"ᏸ" /* 0x13f8 */; + case 0x13f1 /* Ᏹ */: return u8"ᏹ" /* 0x13f9 */; + case 0x13f2 /* Ᏺ */: return u8"ᏺ" /* 0x13fa */; + case 0x13f3 /* Ᏻ */: return u8"ᏻ" /* 0x13fb */; + case 0x13f4 /* Ᏼ */: return u8"ᏼ" /* 0x13fc */; + case 0x13f5 /* Ᏽ */: return u8"ᏽ" /* 0x13fd */; + case 0x1c90 /* Ა */: return u8"ა" /* 0x10d0 */; + case 0x1c91 /* Ბ */: return u8"ბ" /* 0x10d1 */; + case 0x1c92 /* Გ */: return u8"გ" /* 0x10d2 */; + case 0x1c93 /* Დ */: return u8"დ" /* 0x10d3 */; + case 0x1c94 /* Ე */: return u8"ე" /* 0x10d4 */; + case 0x1c95 /* Ვ */: return u8"ვ" /* 0x10d5 */; + case 0x1c96 /* Ზ */: return u8"ზ" /* 0x10d6 */; + case 0x1c97 /* Თ */: return u8"თ" /* 0x10d7 */; + case 0x1c98 /* Ი */: return u8"ი" /* 0x10d8 */; + case 0x1c99 /* Კ */: return u8"კ" /* 0x10d9 */; + case 0x1c9a /* Ლ */: return u8"ლ" /* 0x10da */; + case 0x1c9b /* Მ */: return u8"მ" /* 0x10db */; + case 0x1c9c /* Ნ */: return u8"ნ" /* 0x10dc */; + case 0x1c9d /* Ო */: return u8"ო" /* 0x10dd */; + case 0x1c9e /* Პ */: return u8"პ" /* 0x10de */; + case 0x1c9f /* Ჟ */: return u8"ჟ" /* 0x10df */; + case 0x1ca0 /* Რ */: return u8"რ" /* 0x10e0 */; + case 0x1ca1 /* Ს */: return u8"ს" /* 0x10e1 */; + case 0x1ca2 /* Ტ */: return u8"ტ" /* 0x10e2 */; + case 0x1ca3 /* Უ */: return u8"უ" /* 0x10e3 */; + case 0x1ca4 /* Ფ */: return u8"ფ" /* 0x10e4 */; + case 0x1ca5 /* Ქ */: return u8"ქ" /* 0x10e5 */; + case 0x1ca6 /* Ღ */: return u8"ღ" /* 0x10e6 */; + case 0x1ca7 /* Ყ */: return u8"ყ" /* 0x10e7 */; + case 0x1ca8 /* Შ */: return u8"შ" /* 0x10e8 */; + case 0x1ca9 /* Ჩ */: return u8"ჩ" /* 0x10e9 */; + case 0x1caa /* Ც */: return u8"ც" /* 0x10ea */; + case 0x1cab /* Ძ */: return u8"ძ" /* 0x10eb */; + case 0x1cac /* Წ */: return u8"წ" /* 0x10ec */; + case 0x1cad /* Ჭ */: return u8"ჭ" /* 0x10ed */; + case 0x1cae /* Ხ */: return u8"ხ" /* 0x10ee */; + case 0x1caf /* Ჯ */: return u8"ჯ" /* 0x10ef */; + case 0x1cb0 /* Ჰ */: return u8"ჰ" /* 0x10f0 */; + case 0x1cb1 /* Ჱ */: return u8"ჱ" /* 0x10f1 */; + case 0x1cb2 /* Ჲ */: return u8"ჲ" /* 0x10f2 */; + case 0x1cb3 /* Ჳ */: return u8"ჳ" /* 0x10f3 */; + case 0x1cb4 /* Ჴ */: return u8"ჴ" /* 0x10f4 */; + case 0x1cb5 /* Ჵ */: return u8"ჵ" /* 0x10f5 */; + case 0x1cb6 /* Ჶ */: return u8"ჶ" /* 0x10f6 */; + case 0x1cb7 /* Ჷ */: return u8"ჷ" /* 0x10f7 */; + case 0x1cb8 /* Ჸ */: return u8"ჸ" /* 0x10f8 */; + case 0x1cb9 /* Ჹ */: return u8"ჹ" /* 0x10f9 */; + case 0x1cba /* Ჺ */: return u8"ჺ" /* 0x10fa */; + case 0x1cbd /* Ჽ */: return u8"ჽ" /* 0x10fd */; + case 0x1cbe /* Ჾ */: return u8"ჾ" /* 0x10fe */; + case 0x1cbf /* Ჿ */: return u8"ჿ" /* 0x10ff */; + case 0x1e00 /* Ḁ */: return u8"ḁ" /* 0x1e01 */; + case 0x1e02 /* Ḃ */: return u8"ḃ" /* 0x1e03 */; + case 0x1e04 /* Ḅ */: return u8"ḅ" /* 0x1e05 */; + case 0x1e06 /* Ḇ */: return u8"ḇ" /* 0x1e07 */; + case 0x1e08 /* Ḉ */: return u8"ḉ" /* 0x1e09 */; + case 0x1e0a /* Ḋ */: return u8"ḋ" /* 0x1e0b */; + case 0x1e0c /* Ḍ */: return u8"ḍ" /* 0x1e0d */; + case 0x1e0e /* Ḏ */: return u8"ḏ" /* 0x1e0f */; + case 0x1e10 /* Ḑ */: return u8"ḑ" /* 0x1e11 */; + case 0x1e12 /* Ḓ */: return u8"ḓ" /* 0x1e13 */; + case 0x1e14 /* Ḕ */: return u8"ḕ" /* 0x1e15 */; + case 0x1e16 /* Ḗ */: return u8"ḗ" /* 0x1e17 */; + case 0x1e18 /* Ḙ */: return u8"ḙ" /* 0x1e19 */; + case 0x1e1a /* Ḛ */: return u8"ḛ" /* 0x1e1b */; + case 0x1e1c /* Ḝ */: return u8"ḝ" /* 0x1e1d */; + case 0x1e1e /* Ḟ */: return u8"ḟ" /* 0x1e1f */; + case 0x1e20 /* Ḡ */: return u8"ḡ" /* 0x1e21 */; + case 0x1e22 /* Ḣ */: return u8"ḣ" /* 0x1e23 */; + case 0x1e24 /* Ḥ */: return u8"ḥ" /* 0x1e25 */; + case 0x1e26 /* Ḧ */: return u8"ḧ" /* 0x1e27 */; + case 0x1e28 /* Ḩ */: return u8"ḩ" /* 0x1e29 */; + case 0x1e2a /* Ḫ */: return u8"ḫ" /* 0x1e2b */; + case 0x1e2c /* Ḭ */: return u8"ḭ" /* 0x1e2d */; + case 0x1e2e /* Ḯ */: return u8"ḯ" /* 0x1e2f */; + case 0x1e30 /* Ḱ */: return u8"ḱ" /* 0x1e31 */; + case 0x1e32 /* Ḳ */: return u8"ḳ" /* 0x1e33 */; + case 0x1e34 /* Ḵ */: return u8"ḵ" /* 0x1e35 */; + case 0x1e36 /* Ḷ */: return u8"ḷ" /* 0x1e37 */; + case 0x1e38 /* Ḹ */: return u8"ḹ" /* 0x1e39 */; + case 0x1e3a /* Ḻ */: return u8"ḻ" /* 0x1e3b */; + case 0x1e3c /* Ḽ */: return u8"ḽ" /* 0x1e3d */; + case 0x1e3e /* Ḿ */: return u8"ḿ" /* 0x1e3f */; + case 0x1e40 /* Ṁ */: return u8"ṁ" /* 0x1e41 */; + case 0x1e42 /* Ṃ */: return u8"ṃ" /* 0x1e43 */; + case 0x1e44 /* Ṅ */: return u8"ṅ" /* 0x1e45 */; + case 0x1e46 /* Ṇ */: return u8"ṇ" /* 0x1e47 */; + case 0x1e48 /* Ṉ */: return u8"ṉ" /* 0x1e49 */; + case 0x1e4a /* Ṋ */: return u8"ṋ" /* 0x1e4b */; + case 0x1e4c /* Ṍ */: return u8"ṍ" /* 0x1e4d */; + case 0x1e4e /* Ṏ */: return u8"ṏ" /* 0x1e4f */; + case 0x1e50 /* Ṑ */: return u8"ṑ" /* 0x1e51 */; + case 0x1e52 /* Ṓ */: return u8"ṓ" /* 0x1e53 */; + case 0x1e54 /* Ṕ */: return u8"ṕ" /* 0x1e55 */; + case 0x1e56 /* Ṗ */: return u8"ṗ" /* 0x1e57 */; + case 0x1e58 /* Ṙ */: return u8"ṙ" /* 0x1e59 */; + case 0x1e5a /* Ṛ */: return u8"ṛ" /* 0x1e5b */; + case 0x1e5c /* Ṝ */: return u8"ṝ" /* 0x1e5d */; + case 0x1e5e /* Ṟ */: return u8"ṟ" /* 0x1e5f */; + case 0x1e60 /* Ṡ */: return u8"ṡ" /* 0x1e61 */; + case 0x1e62 /* Ṣ */: return u8"ṣ" /* 0x1e63 */; + case 0x1e64 /* Ṥ */: return u8"ṥ" /* 0x1e65 */; + case 0x1e66 /* Ṧ */: return u8"ṧ" /* 0x1e67 */; + case 0x1e68 /* Ṩ */: return u8"ṩ" /* 0x1e69 */; + case 0x1e6a /* Ṫ */: return u8"ṫ" /* 0x1e6b */; + case 0x1e6c /* Ṭ */: return u8"ṭ" /* 0x1e6d */; + case 0x1e6e /* Ṯ */: return u8"ṯ" /* 0x1e6f */; + case 0x1e70 /* Ṱ */: return u8"ṱ" /* 0x1e71 */; + case 0x1e72 /* Ṳ */: return u8"ṳ" /* 0x1e73 */; + case 0x1e74 /* Ṵ */: return u8"ṵ" /* 0x1e75 */; + case 0x1e76 /* Ṷ */: return u8"ṷ" /* 0x1e77 */; + case 0x1e78 /* Ṹ */: return u8"ṹ" /* 0x1e79 */; + case 0x1e7a /* Ṻ */: return u8"ṻ" /* 0x1e7b */; + case 0x1e7c /* Ṽ */: return u8"ṽ" /* 0x1e7d */; + case 0x1e7e /* Ṿ */: return u8"ṿ" /* 0x1e7f */; + case 0x1e80 /* Ẁ */: return u8"ẁ" /* 0x1e81 */; + case 0x1e82 /* Ẃ */: return u8"ẃ" /* 0x1e83 */; + case 0x1e84 /* Ẅ */: return u8"ẅ" /* 0x1e85 */; + case 0x1e86 /* Ẇ */: return u8"ẇ" /* 0x1e87 */; + case 0x1e88 /* Ẉ */: return u8"ẉ" /* 0x1e89 */; + case 0x1e8a /* Ẋ */: return u8"ẋ" /* 0x1e8b */; + case 0x1e8c /* Ẍ */: return u8"ẍ" /* 0x1e8d */; + case 0x1e8e /* Ẏ */: return u8"ẏ" /* 0x1e8f */; + case 0x1e90 /* Ẑ */: return u8"ẑ" /* 0x1e91 */; + case 0x1e92 /* Ẓ */: return u8"ẓ" /* 0x1e93 */; + case 0x1e94 /* Ẕ */: return u8"ẕ" /* 0x1e95 */; + case 0x1e9e /* ẞ */: return u8"ß" /* 0xdf */; + case 0x1ea0 /* Ạ */: return u8"ạ" /* 0x1ea1 */; + case 0x1ea2 /* Ả */: return u8"ả" /* 0x1ea3 */; + case 0x1ea4 /* Ấ */: return u8"ấ" /* 0x1ea5 */; + case 0x1ea6 /* Ầ */: return u8"ầ" /* 0x1ea7 */; + case 0x1ea8 /* Ẩ */: return u8"ẩ" /* 0x1ea9 */; + case 0x1eaa /* Ẫ */: return u8"ẫ" /* 0x1eab */; + case 0x1eac /* Ậ */: return u8"ậ" /* 0x1ead */; + case 0x1eae /* Ắ */: return u8"ắ" /* 0x1eaf */; + case 0x1eb0 /* Ằ */: return u8"ằ" /* 0x1eb1 */; + case 0x1eb2 /* Ẳ */: return u8"ẳ" /* 0x1eb3 */; + case 0x1eb4 /* Ẵ */: return u8"ẵ" /* 0x1eb5 */; + case 0x1eb6 /* Ặ */: return u8"ặ" /* 0x1eb7 */; + case 0x1eb8 /* Ẹ */: return u8"ẹ" /* 0x1eb9 */; + case 0x1eba /* Ẻ */: return u8"ẻ" /* 0x1ebb */; + case 0x1ebc /* Ẽ */: return u8"ẽ" /* 0x1ebd */; + case 0x1ebe /* Ế */: return u8"ế" /* 0x1ebf */; + case 0x1ec0 /* Ề */: return u8"ề" /* 0x1ec1 */; + case 0x1ec2 /* Ể */: return u8"ể" /* 0x1ec3 */; + case 0x1ec4 /* Ễ */: return u8"ễ" /* 0x1ec5 */; + case 0x1ec6 /* Ệ */: return u8"ệ" /* 0x1ec7 */; + case 0x1ec8 /* Ỉ */: return u8"ỉ" /* 0x1ec9 */; + case 0x1eca /* Ị */: return u8"ị" /* 0x1ecb */; + case 0x1ecc /* Ọ */: return u8"ọ" /* 0x1ecd */; + case 0x1ece /* Ỏ */: return u8"ỏ" /* 0x1ecf */; + case 0x1ed0 /* Ố */: return u8"ố" /* 0x1ed1 */; + case 0x1ed2 /* Ồ */: return u8"ồ" /* 0x1ed3 */; + case 0x1ed4 /* Ổ */: return u8"ổ" /* 0x1ed5 */; + case 0x1ed6 /* Ỗ */: return u8"ỗ" /* 0x1ed7 */; + case 0x1ed8 /* Ộ */: return u8"ộ" /* 0x1ed9 */; + case 0x1eda /* Ớ */: return u8"ớ" /* 0x1edb */; + case 0x1edc /* Ờ */: return u8"ờ" /* 0x1edd */; + case 0x1ede /* Ở */: return u8"ở" /* 0x1edf */; + case 0x1ee0 /* Ỡ */: return u8"ỡ" /* 0x1ee1 */; + case 0x1ee2 /* Ợ */: return u8"ợ" /* 0x1ee3 */; + case 0x1ee4 /* Ụ */: return u8"ụ" /* 0x1ee5 */; + case 0x1ee6 /* Ủ */: return u8"ủ" /* 0x1ee7 */; + case 0x1ee8 /* Ứ */: return u8"ứ" /* 0x1ee9 */; + case 0x1eea /* Ừ */: return u8"ừ" /* 0x1eeb */; + case 0x1eec /* Ử */: return u8"ử" /* 0x1eed */; + case 0x1eee /* Ữ */: return u8"ữ" /* 0x1eef */; + case 0x1ef0 /* Ự */: return u8"ự" /* 0x1ef1 */; + case 0x1ef2 /* Ỳ */: return u8"ỳ" /* 0x1ef3 */; + case 0x1ef4 /* Ỵ */: return u8"ỵ" /* 0x1ef5 */; + case 0x1ef6 /* Ỷ */: return u8"ỷ" /* 0x1ef7 */; + case 0x1ef8 /* Ỹ */: return u8"ỹ" /* 0x1ef9 */; + case 0x1efa /* Ỻ */: return u8"ỻ" /* 0x1efb */; + case 0x1efc /* Ỽ */: return u8"ỽ" /* 0x1efd */; + case 0x1efe /* Ỿ */: return u8"ỿ" /* 0x1eff */; + case 0x1f08 /* Ἀ */: return u8"ἀ" /* 0x1f00 */; + case 0x1f09 /* Ἁ */: return u8"ἁ" /* 0x1f01 */; + case 0x1f0a /* Ἂ */: return u8"ἂ" /* 0x1f02 */; + case 0x1f0b /* Ἃ */: return u8"ἃ" /* 0x1f03 */; + case 0x1f0c /* Ἄ */: return u8"ἄ" /* 0x1f04 */; + case 0x1f0d /* Ἅ */: return u8"ἅ" /* 0x1f05 */; + case 0x1f0e /* Ἆ */: return u8"ἆ" /* 0x1f06 */; + case 0x1f0f /* Ἇ */: return u8"ἇ" /* 0x1f07 */; + case 0x1f18 /* Ἐ */: return u8"ἐ" /* 0x1f10 */; + case 0x1f19 /* Ἑ */: return u8"ἑ" /* 0x1f11 */; + case 0x1f1a /* Ἒ */: return u8"ἒ" /* 0x1f12 */; + case 0x1f1b /* Ἓ */: return u8"ἓ" /* 0x1f13 */; + case 0x1f1c /* Ἔ */: return u8"ἔ" /* 0x1f14 */; + case 0x1f1d /* Ἕ */: return u8"ἕ" /* 0x1f15 */; + case 0x1f28 /* Ἠ */: return u8"ἠ" /* 0x1f20 */; + case 0x1f29 /* Ἡ */: return u8"ἡ" /* 0x1f21 */; + case 0x1f2a /* Ἢ */: return u8"ἢ" /* 0x1f22 */; + case 0x1f2b /* Ἣ */: return u8"ἣ" /* 0x1f23 */; + case 0x1f2c /* Ἤ */: return u8"ἤ" /* 0x1f24 */; + case 0x1f2d /* Ἥ */: return u8"ἥ" /* 0x1f25 */; + case 0x1f2e /* Ἦ */: return u8"ἦ" /* 0x1f26 */; + case 0x1f2f /* Ἧ */: return u8"ἧ" /* 0x1f27 */; + case 0x1f38 /* Ἰ */: return u8"ἰ" /* 0x1f30 */; + case 0x1f39 /* Ἱ */: return u8"ἱ" /* 0x1f31 */; + case 0x1f3a /* Ἲ */: return u8"ἲ" /* 0x1f32 */; + case 0x1f3b /* Ἳ */: return u8"ἳ" /* 0x1f33 */; + case 0x1f3c /* Ἴ */: return u8"ἴ" /* 0x1f34 */; + case 0x1f3d /* Ἵ */: return u8"ἵ" /* 0x1f35 */; + case 0x1f3e /* Ἶ */: return u8"ἶ" /* 0x1f36 */; + case 0x1f3f /* Ἷ */: return u8"ἷ" /* 0x1f37 */; + case 0x1f48 /* Ὀ */: return u8"ὀ" /* 0x1f40 */; + case 0x1f49 /* Ὁ */: return u8"ὁ" /* 0x1f41 */; + case 0x1f4a /* Ὂ */: return u8"ὂ" /* 0x1f42 */; + case 0x1f4b /* Ὃ */: return u8"ὃ" /* 0x1f43 */; + case 0x1f4c /* Ὄ */: return u8"ὄ" /* 0x1f44 */; + case 0x1f4d /* Ὅ */: return u8"ὅ" /* 0x1f45 */; + case 0x1f59 /* Ὑ */: return u8"ὑ" /* 0x1f51 */; + case 0x1f5b /* Ὓ */: return u8"ὓ" /* 0x1f53 */; + case 0x1f5d /* Ὕ */: return u8"ὕ" /* 0x1f55 */; + case 0x1f5f /* Ὗ */: return u8"ὗ" /* 0x1f57 */; + case 0x1f68 /* Ὠ */: return u8"ὠ" /* 0x1f60 */; + case 0x1f69 /* Ὡ */: return u8"ὡ" /* 0x1f61 */; + case 0x1f6a /* Ὢ */: return u8"ὢ" /* 0x1f62 */; + case 0x1f6b /* Ὣ */: return u8"ὣ" /* 0x1f63 */; + case 0x1f6c /* Ὤ */: return u8"ὤ" /* 0x1f64 */; + case 0x1f6d /* Ὥ */: return u8"ὥ" /* 0x1f65 */; + case 0x1f6e /* Ὦ */: return u8"ὦ" /* 0x1f66 */; + case 0x1f6f /* Ὧ */: return u8"ὧ" /* 0x1f67 */; + case 0x1f88 /* ᾈ */: return u8"ᾀ" /* 0x1f80 */; + case 0x1f89 /* ᾉ */: return u8"ᾁ" /* 0x1f81 */; + case 0x1f8a /* ᾊ */: return u8"ᾂ" /* 0x1f82 */; + case 0x1f8b /* ᾋ */: return u8"ᾃ" /* 0x1f83 */; + case 0x1f8c /* ᾌ */: return u8"ᾄ" /* 0x1f84 */; + case 0x1f8d /* ᾍ */: return u8"ᾅ" /* 0x1f85 */; + case 0x1f8e /* ᾎ */: return u8"ᾆ" /* 0x1f86 */; + case 0x1f8f /* ᾏ */: return u8"ᾇ" /* 0x1f87 */; + case 0x1f98 /* ᾘ */: return u8"ᾐ" /* 0x1f90 */; + case 0x1f99 /* ᾙ */: return u8"ᾑ" /* 0x1f91 */; + case 0x1f9a /* ᾚ */: return u8"ᾒ" /* 0x1f92 */; + case 0x1f9b /* ᾛ */: return u8"ᾓ" /* 0x1f93 */; + case 0x1f9c /* ᾜ */: return u8"ᾔ" /* 0x1f94 */; + case 0x1f9d /* ᾝ */: return u8"ᾕ" /* 0x1f95 */; + case 0x1f9e /* ᾞ */: return u8"ᾖ" /* 0x1f96 */; + case 0x1f9f /* ᾟ */: return u8"ᾗ" /* 0x1f97 */; + case 0x1fa8 /* ᾨ */: return u8"ᾠ" /* 0x1fa0 */; + case 0x1fa9 /* ᾩ */: return u8"ᾡ" /* 0x1fa1 */; + case 0x1faa /* ᾪ */: return u8"ᾢ" /* 0x1fa2 */; + case 0x1fab /* ᾫ */: return u8"ᾣ" /* 0x1fa3 */; + case 0x1fac /* ᾬ */: return u8"ᾤ" /* 0x1fa4 */; + case 0x1fad /* ᾭ */: return u8"ᾥ" /* 0x1fa5 */; + case 0x1fae /* ᾮ */: return u8"ᾦ" /* 0x1fa6 */; + case 0x1faf /* ᾯ */: return u8"ᾧ" /* 0x1fa7 */; + case 0x1fb8 /* Ᾰ */: return u8"ᾰ" /* 0x1fb0 */; + case 0x1fb9 /* Ᾱ */: return u8"ᾱ" /* 0x1fb1 */; + case 0x1fba /* Ὰ */: return u8"ὰ" /* 0x1f70 */; + case 0x1fbb /* Ά */: return u8"ά" /* 0x1f71 */; + case 0x1fbc /* ᾼ */: return u8"ᾳ" /* 0x1fb3 */; + case 0x1fc8 /* Ὲ */: return u8"ὲ" /* 0x1f72 */; + case 0x1fc9 /* Έ */: return u8"έ" /* 0x1f73 */; + case 0x1fca /* Ὴ */: return u8"ὴ" /* 0x1f74 */; + case 0x1fcb /* Ή */: return u8"ή" /* 0x1f75 */; + case 0x1fcc /* ῌ */: return u8"ῃ" /* 0x1fc3 */; + case 0x1fd8 /* Ῐ */: return u8"ῐ" /* 0x1fd0 */; + case 0x1fd9 /* Ῑ */: return u8"ῑ" /* 0x1fd1 */; + case 0x1fda /* Ὶ */: return u8"ὶ" /* 0x1f76 */; + case 0x1fdb /* Ί */: return u8"ί" /* 0x1f77 */; + case 0x1fe8 /* Ῠ */: return u8"ῠ" /* 0x1fe0 */; + case 0x1fe9 /* Ῡ */: return u8"ῡ" /* 0x1fe1 */; + case 0x1fea /* Ὺ */: return u8"ὺ" /* 0x1f7a */; + case 0x1feb /* Ύ */: return u8"ύ" /* 0x1f7b */; + case 0x1fec /* Ῥ */: return u8"ῥ" /* 0x1fe5 */; + case 0x1ff8 /* Ὸ */: return u8"ὸ" /* 0x1f78 */; + case 0x1ff9 /* Ό */: return u8"ό" /* 0x1f79 */; + case 0x1ffa /* Ὼ */: return u8"ὼ" /* 0x1f7c */; + case 0x1ffb /* Ώ */: return u8"ώ" /* 0x1f7d */; + case 0x1ffc /* ῼ */: return u8"ῳ" /* 0x1ff3 */; + case 0x2126 /* Ω */: return u8"ω" /* 0x3c9 */; + case 0x212a /* K */: return u8"k" /* 0x6b */; + case 0x212b /* Å */: return u8"å" /* 0xe5 */; + case 0x2132 /* Ⅎ */: return u8"ⅎ" /* 0x214e */; + case 0x2160 /* Ⅰ */: return u8"ⅰ" /* 0x2170 */; + case 0x2161 /* Ⅱ */: return u8"ⅱ" /* 0x2171 */; + case 0x2162 /* Ⅲ */: return u8"ⅲ" /* 0x2172 */; + case 0x2163 /* Ⅳ */: return u8"ⅳ" /* 0x2173 */; + case 0x2164 /* Ⅴ */: return u8"ⅴ" /* 0x2174 */; + case 0x2165 /* Ⅵ */: return u8"ⅵ" /* 0x2175 */; + case 0x2166 /* Ⅶ */: return u8"ⅶ" /* 0x2176 */; + case 0x2167 /* Ⅷ */: return u8"ⅷ" /* 0x2177 */; + case 0x2168 /* Ⅸ */: return u8"ⅸ" /* 0x2178 */; + case 0x2169 /* Ⅹ */: return u8"ⅹ" /* 0x2179 */; + case 0x216a /* Ⅺ */: return u8"ⅺ" /* 0x217a */; + case 0x216b /* Ⅻ */: return u8"ⅻ" /* 0x217b */; + case 0x216c /* Ⅼ */: return u8"ⅼ" /* 0x217c */; + case 0x216d /* Ⅽ */: return u8"ⅽ" /* 0x217d */; + case 0x216e /* Ⅾ */: return u8"ⅾ" /* 0x217e */; + case 0x216f /* Ⅿ */: return u8"ⅿ" /* 0x217f */; + case 0x2183 /* Ↄ */: return u8"ↄ" /* 0x2184 */; + case 0x24b6 /* Ⓐ */: return u8"ⓐ" /* 0x24d0 */; + case 0x24b7 /* Ⓑ */: return u8"ⓑ" /* 0x24d1 */; + case 0x24b8 /* Ⓒ */: return u8"ⓒ" /* 0x24d2 */; + case 0x24b9 /* Ⓓ */: return u8"ⓓ" /* 0x24d3 */; + case 0x24ba /* Ⓔ */: return u8"ⓔ" /* 0x24d4 */; + case 0x24bb /* Ⓕ */: return u8"ⓕ" /* 0x24d5 */; + case 0x24bc /* Ⓖ */: return u8"ⓖ" /* 0x24d6 */; + case 0x24bd /* Ⓗ */: return u8"ⓗ" /* 0x24d7 */; + case 0x24be /* Ⓘ */: return u8"ⓘ" /* 0x24d8 */; + case 0x24bf /* Ⓙ */: return u8"ⓙ" /* 0x24d9 */; + case 0x24c0 /* Ⓚ */: return u8"ⓚ" /* 0x24da */; + case 0x24c1 /* Ⓛ */: return u8"ⓛ" /* 0x24db */; + case 0x24c2 /* Ⓜ */: return u8"ⓜ" /* 0x24dc */; + case 0x24c3 /* Ⓝ */: return u8"ⓝ" /* 0x24dd */; + case 0x24c4 /* Ⓞ */: return u8"ⓞ" /* 0x24de */; + case 0x24c5 /* Ⓟ */: return u8"ⓟ" /* 0x24df */; + case 0x24c6 /* Ⓠ */: return u8"ⓠ" /* 0x24e0 */; + case 0x24c7 /* Ⓡ */: return u8"ⓡ" /* 0x24e1 */; + case 0x24c8 /* Ⓢ */: return u8"ⓢ" /* 0x24e2 */; + case 0x24c9 /* Ⓣ */: return u8"ⓣ" /* 0x24e3 */; + case 0x24ca /* Ⓤ */: return u8"ⓤ" /* 0x24e4 */; + case 0x24cb /* Ⓥ */: return u8"ⓥ" /* 0x24e5 */; + case 0x24cc /* Ⓦ */: return u8"ⓦ" /* 0x24e6 */; + case 0x24cd /* Ⓧ */: return u8"ⓧ" /* 0x24e7 */; + case 0x24ce /* Ⓨ */: return u8"ⓨ" /* 0x24e8 */; + case 0x24cf /* Ⓩ */: return u8"ⓩ" /* 0x24e9 */; + case 0x2c00 /* Ⰰ */: return u8"ⰰ" /* 0x2c30 */; + case 0x2c01 /* Ⰱ */: return u8"ⰱ" /* 0x2c31 */; + case 0x2c02 /* Ⰲ */: return u8"ⰲ" /* 0x2c32 */; + case 0x2c03 /* Ⰳ */: return u8"ⰳ" /* 0x2c33 */; + case 0x2c04 /* Ⰴ */: return u8"ⰴ" /* 0x2c34 */; + case 0x2c05 /* Ⰵ */: return u8"ⰵ" /* 0x2c35 */; + case 0x2c06 /* Ⰶ */: return u8"ⰶ" /* 0x2c36 */; + case 0x2c07 /* Ⰷ */: return u8"ⰷ" /* 0x2c37 */; + case 0x2c08 /* Ⰸ */: return u8"ⰸ" /* 0x2c38 */; + case 0x2c09 /* Ⰹ */: return u8"ⰹ" /* 0x2c39 */; + case 0x2c0a /* Ⰺ */: return u8"ⰺ" /* 0x2c3a */; + case 0x2c0b /* Ⰻ */: return u8"ⰻ" /* 0x2c3b */; + case 0x2c0c /* Ⰼ */: return u8"ⰼ" /* 0x2c3c */; + case 0x2c0d /* Ⰽ */: return u8"ⰽ" /* 0x2c3d */; + case 0x2c0e /* Ⰾ */: return u8"ⰾ" /* 0x2c3e */; + case 0x2c0f /* Ⰿ */: return u8"ⰿ" /* 0x2c3f */; + case 0x2c10 /* Ⱀ */: return u8"ⱀ" /* 0x2c40 */; + case 0x2c11 /* Ⱁ */: return u8"ⱁ" /* 0x2c41 */; + case 0x2c12 /* Ⱂ */: return u8"ⱂ" /* 0x2c42 */; + case 0x2c13 /* Ⱃ */: return u8"ⱃ" /* 0x2c43 */; + case 0x2c14 /* Ⱄ */: return u8"ⱄ" /* 0x2c44 */; + case 0x2c15 /* Ⱅ */: return u8"ⱅ" /* 0x2c45 */; + case 0x2c16 /* Ⱆ */: return u8"ⱆ" /* 0x2c46 */; + case 0x2c17 /* Ⱇ */: return u8"ⱇ" /* 0x2c47 */; + case 0x2c18 /* Ⱈ */: return u8"ⱈ" /* 0x2c48 */; + case 0x2c19 /* Ⱉ */: return u8"ⱉ" /* 0x2c49 */; + case 0x2c1a /* Ⱊ */: return u8"ⱊ" /* 0x2c4a */; + case 0x2c1b /* Ⱋ */: return u8"ⱋ" /* 0x2c4b */; + case 0x2c1c /* Ⱌ */: return u8"ⱌ" /* 0x2c4c */; + case 0x2c1d /* Ⱍ */: return u8"ⱍ" /* 0x2c4d */; + case 0x2c1e /* Ⱎ */: return u8"ⱎ" /* 0x2c4e */; + case 0x2c1f /* Ⱏ */: return u8"ⱏ" /* 0x2c4f */; + case 0x2c20 /* Ⱐ */: return u8"ⱐ" /* 0x2c50 */; + case 0x2c21 /* Ⱑ */: return u8"ⱑ" /* 0x2c51 */; + case 0x2c22 /* Ⱒ */: return u8"ⱒ" /* 0x2c52 */; + case 0x2c23 /* Ⱓ */: return u8"ⱓ" /* 0x2c53 */; + case 0x2c24 /* Ⱔ */: return u8"ⱔ" /* 0x2c54 */; + case 0x2c25 /* Ⱕ */: return u8"ⱕ" /* 0x2c55 */; + case 0x2c26 /* Ⱖ */: return u8"ⱖ" /* 0x2c56 */; + case 0x2c27 /* Ⱗ */: return u8"ⱗ" /* 0x2c57 */; + case 0x2c28 /* Ⱘ */: return u8"ⱘ" /* 0x2c58 */; + case 0x2c29 /* Ⱙ */: return u8"ⱙ" /* 0x2c59 */; + case 0x2c2a /* Ⱚ */: return u8"ⱚ" /* 0x2c5a */; + case 0x2c2b /* Ⱛ */: return u8"ⱛ" /* 0x2c5b */; + case 0x2c2c /* Ⱜ */: return u8"ⱜ" /* 0x2c5c */; + case 0x2c2d /* Ⱝ */: return u8"ⱝ" /* 0x2c5d */; + case 0x2c2e /* Ⱞ */: return u8"ⱞ" /* 0x2c5e */; + case 0x2c60 /* Ⱡ */: return u8"ⱡ" /* 0x2c61 */; + case 0x2c62 /* Ɫ */: return u8"ɫ" /* 0x26b */; + case 0x2c63 /* Ᵽ */: return u8"ᵽ" /* 0x1d7d */; + case 0x2c64 /* Ɽ */: return u8"ɽ" /* 0x27d */; + case 0x2c67 /* Ⱨ */: return u8"ⱨ" /* 0x2c68 */; + case 0x2c69 /* Ⱪ */: return u8"ⱪ" /* 0x2c6a */; + case 0x2c6b /* Ⱬ */: return u8"ⱬ" /* 0x2c6c */; + case 0x2c6d /* Ɑ */: return u8"ɑ" /* 0x251 */; + case 0x2c6e /* Ɱ */: return u8"ɱ" /* 0x271 */; + case 0x2c6f /* Ɐ */: return u8"ɐ" /* 0x250 */; + case 0x2c70 /* Ɒ */: return u8"ɒ" /* 0x252 */; + case 0x2c72 /* Ⱳ */: return u8"ⱳ" /* 0x2c73 */; + case 0x2c75 /* Ⱶ */: return u8"ⱶ" /* 0x2c76 */; + case 0x2c7e /* Ȿ */: return u8"ȿ" /* 0x23f */; + case 0x2c7f /* Ɀ */: return u8"ɀ" /* 0x240 */; + case 0x2c80 /* Ⲁ */: return u8"ⲁ" /* 0x2c81 */; + case 0x2c82 /* Ⲃ */: return u8"ⲃ" /* 0x2c83 */; + case 0x2c84 /* Ⲅ */: return u8"ⲅ" /* 0x2c85 */; + case 0x2c86 /* Ⲇ */: return u8"ⲇ" /* 0x2c87 */; + case 0x2c88 /* Ⲉ */: return u8"ⲉ" /* 0x2c89 */; + case 0x2c8a /* Ⲋ */: return u8"ⲋ" /* 0x2c8b */; + case 0x2c8c /* Ⲍ */: return u8"ⲍ" /* 0x2c8d */; + case 0x2c8e /* Ⲏ */: return u8"ⲏ" /* 0x2c8f */; + case 0x2c90 /* Ⲑ */: return u8"ⲑ" /* 0x2c91 */; + case 0x2c92 /* Ⲓ */: return u8"ⲓ" /* 0x2c93 */; + case 0x2c94 /* Ⲕ */: return u8"ⲕ" /* 0x2c95 */; + case 0x2c96 /* Ⲗ */: return u8"ⲗ" /* 0x2c97 */; + case 0x2c98 /* Ⲙ */: return u8"ⲙ" /* 0x2c99 */; + case 0x2c9a /* Ⲛ */: return u8"ⲛ" /* 0x2c9b */; + case 0x2c9c /* Ⲝ */: return u8"ⲝ" /* 0x2c9d */; + case 0x2c9e /* Ⲟ */: return u8"ⲟ" /* 0x2c9f */; + case 0x2ca0 /* Ⲡ */: return u8"ⲡ" /* 0x2ca1 */; + case 0x2ca2 /* Ⲣ */: return u8"ⲣ" /* 0x2ca3 */; + case 0x2ca4 /* Ⲥ */: return u8"ⲥ" /* 0x2ca5 */; + case 0x2ca6 /* Ⲧ */: return u8"ⲧ" /* 0x2ca7 */; + case 0x2ca8 /* Ⲩ */: return u8"ⲩ" /* 0x2ca9 */; + case 0x2caa /* Ⲫ */: return u8"ⲫ" /* 0x2cab */; + case 0x2cac /* Ⲭ */: return u8"ⲭ" /* 0x2cad */; + case 0x2cae /* Ⲯ */: return u8"ⲯ" /* 0x2caf */; + case 0x2cb0 /* Ⲱ */: return u8"ⲱ" /* 0x2cb1 */; + case 0x2cb2 /* Ⲳ */: return u8"ⲳ" /* 0x2cb3 */; + case 0x2cb4 /* Ⲵ */: return u8"ⲵ" /* 0x2cb5 */; + case 0x2cb6 /* Ⲷ */: return u8"ⲷ" /* 0x2cb7 */; + case 0x2cb8 /* Ⲹ */: return u8"ⲹ" /* 0x2cb9 */; + case 0x2cba /* Ⲻ */: return u8"ⲻ" /* 0x2cbb */; + case 0x2cbc /* Ⲽ */: return u8"ⲽ" /* 0x2cbd */; + case 0x2cbe /* Ⲿ */: return u8"ⲿ" /* 0x2cbf */; + case 0x2cc0 /* Ⳁ */: return u8"ⳁ" /* 0x2cc1 */; + case 0x2cc2 /* Ⳃ */: return u8"ⳃ" /* 0x2cc3 */; + case 0x2cc4 /* Ⳅ */: return u8"ⳅ" /* 0x2cc5 */; + case 0x2cc6 /* Ⳇ */: return u8"ⳇ" /* 0x2cc7 */; + case 0x2cc8 /* Ⳉ */: return u8"ⳉ" /* 0x2cc9 */; + case 0x2cca /* Ⳋ */: return u8"ⳋ" /* 0x2ccb */; + case 0x2ccc /* Ⳍ */: return u8"ⳍ" /* 0x2ccd */; + case 0x2cce /* Ⳏ */: return u8"ⳏ" /* 0x2ccf */; + case 0x2cd0 /* Ⳑ */: return u8"ⳑ" /* 0x2cd1 */; + case 0x2cd2 /* Ⳓ */: return u8"ⳓ" /* 0x2cd3 */; + case 0x2cd4 /* Ⳕ */: return u8"ⳕ" /* 0x2cd5 */; + case 0x2cd6 /* Ⳗ */: return u8"ⳗ" /* 0x2cd7 */; + case 0x2cd8 /* Ⳙ */: return u8"ⳙ" /* 0x2cd9 */; + case 0x2cda /* Ⳛ */: return u8"ⳛ" /* 0x2cdb */; + case 0x2cdc /* Ⳝ */: return u8"ⳝ" /* 0x2cdd */; + case 0x2cde /* Ⳟ */: return u8"ⳟ" /* 0x2cdf */; + case 0x2ce0 /* Ⳡ */: return u8"ⳡ" /* 0x2ce1 */; + case 0x2ce2 /* Ⳣ */: return u8"ⳣ" /* 0x2ce3 */; + case 0x2ceb /* Ⳬ */: return u8"ⳬ" /* 0x2cec */; + case 0x2ced /* Ⳮ */: return u8"ⳮ" /* 0x2cee */; + case 0x2cf2 /* Ⳳ */: return u8"ⳳ" /* 0x2cf3 */; + case 0xa640 /* Ꙁ */: return u8"ꙁ" /* 0xa641 */; + case 0xa642 /* Ꙃ */: return u8"ꙃ" /* 0xa643 */; + case 0xa644 /* Ꙅ */: return u8"ꙅ" /* 0xa645 */; + case 0xa646 /* Ꙇ */: return u8"ꙇ" /* 0xa647 */; + case 0xa648 /* Ꙉ */: return u8"ꙉ" /* 0xa649 */; + case 0xa64a /* Ꙋ */: return u8"ꙋ" /* 0xa64b */; + case 0xa64c /* Ꙍ */: return u8"ꙍ" /* 0xa64d */; + case 0xa64e /* Ꙏ */: return u8"ꙏ" /* 0xa64f */; + case 0xa650 /* Ꙑ */: return u8"ꙑ" /* 0xa651 */; + case 0xa652 /* Ꙓ */: return u8"ꙓ" /* 0xa653 */; + case 0xa654 /* Ꙕ */: return u8"ꙕ" /* 0xa655 */; + case 0xa656 /* Ꙗ */: return u8"ꙗ" /* 0xa657 */; + case 0xa658 /* Ꙙ */: return u8"ꙙ" /* 0xa659 */; + case 0xa65a /* Ꙛ */: return u8"ꙛ" /* 0xa65b */; + case 0xa65c /* Ꙝ */: return u8"ꙝ" /* 0xa65d */; + case 0xa65e /* Ꙟ */: return u8"ꙟ" /* 0xa65f */; + case 0xa660 /* Ꙡ */: return u8"ꙡ" /* 0xa661 */; + case 0xa662 /* Ꙣ */: return u8"ꙣ" /* 0xa663 */; + case 0xa664 /* Ꙥ */: return u8"ꙥ" /* 0xa665 */; + case 0xa666 /* Ꙧ */: return u8"ꙧ" /* 0xa667 */; + case 0xa668 /* Ꙩ */: return u8"ꙩ" /* 0xa669 */; + case 0xa66a /* Ꙫ */: return u8"ꙫ" /* 0xa66b */; + case 0xa66c /* Ꙭ */: return u8"ꙭ" /* 0xa66d */; + case 0xa680 /* Ꚁ */: return u8"ꚁ" /* 0xa681 */; + case 0xa682 /* Ꚃ */: return u8"ꚃ" /* 0xa683 */; + case 0xa684 /* Ꚅ */: return u8"ꚅ" /* 0xa685 */; + case 0xa686 /* Ꚇ */: return u8"ꚇ" /* 0xa687 */; + case 0xa688 /* Ꚉ */: return u8"ꚉ" /* 0xa689 */; + case 0xa68a /* Ꚋ */: return u8"ꚋ" /* 0xa68b */; + case 0xa68c /* Ꚍ */: return u8"ꚍ" /* 0xa68d */; + case 0xa68e /* Ꚏ */: return u8"ꚏ" /* 0xa68f */; + case 0xa690 /* Ꚑ */: return u8"ꚑ" /* 0xa691 */; + case 0xa692 /* Ꚓ */: return u8"ꚓ" /* 0xa693 */; + case 0xa694 /* Ꚕ */: return u8"ꚕ" /* 0xa695 */; + case 0xa696 /* Ꚗ */: return u8"ꚗ" /* 0xa697 */; + case 0xa698 /* Ꚙ */: return u8"ꚙ" /* 0xa699 */; + case 0xa69a /* Ꚛ */: return u8"ꚛ" /* 0xa69b */; + case 0xa722 /* Ꜣ */: return u8"ꜣ" /* 0xa723 */; + case 0xa724 /* Ꜥ */: return u8"ꜥ" /* 0xa725 */; + case 0xa726 /* Ꜧ */: return u8"ꜧ" /* 0xa727 */; + case 0xa728 /* Ꜩ */: return u8"ꜩ" /* 0xa729 */; + case 0xa72a /* Ꜫ */: return u8"ꜫ" /* 0xa72b */; + case 0xa72c /* Ꜭ */: return u8"ꜭ" /* 0xa72d */; + case 0xa72e /* Ꜯ */: return u8"ꜯ" /* 0xa72f */; + case 0xa732 /* Ꜳ */: return u8"ꜳ" /* 0xa733 */; + case 0xa734 /* Ꜵ */: return u8"ꜵ" /* 0xa735 */; + case 0xa736 /* Ꜷ */: return u8"ꜷ" /* 0xa737 */; + case 0xa738 /* Ꜹ */: return u8"ꜹ" /* 0xa739 */; + case 0xa73a /* Ꜻ */: return u8"ꜻ" /* 0xa73b */; + case 0xa73c /* Ꜽ */: return u8"ꜽ" /* 0xa73d */; + case 0xa73e /* Ꜿ */: return u8"ꜿ" /* 0xa73f */; + case 0xa740 /* Ꝁ */: return u8"ꝁ" /* 0xa741 */; + case 0xa742 /* Ꝃ */: return u8"ꝃ" /* 0xa743 */; + case 0xa744 /* Ꝅ */: return u8"ꝅ" /* 0xa745 */; + case 0xa746 /* Ꝇ */: return u8"ꝇ" /* 0xa747 */; + case 0xa748 /* Ꝉ */: return u8"ꝉ" /* 0xa749 */; + case 0xa74a /* Ꝋ */: return u8"ꝋ" /* 0xa74b */; + case 0xa74c /* Ꝍ */: return u8"ꝍ" /* 0xa74d */; + case 0xa74e /* Ꝏ */: return u8"ꝏ" /* 0xa74f */; + case 0xa750 /* Ꝑ */: return u8"ꝑ" /* 0xa751 */; + case 0xa752 /* Ꝓ */: return u8"ꝓ" /* 0xa753 */; + case 0xa754 /* Ꝕ */: return u8"ꝕ" /* 0xa755 */; + case 0xa756 /* Ꝗ */: return u8"ꝗ" /* 0xa757 */; + case 0xa758 /* Ꝙ */: return u8"ꝙ" /* 0xa759 */; + case 0xa75a /* Ꝛ */: return u8"ꝛ" /* 0xa75b */; + case 0xa75c /* Ꝝ */: return u8"ꝝ" /* 0xa75d */; + case 0xa75e /* Ꝟ */: return u8"ꝟ" /* 0xa75f */; + case 0xa760 /* Ꝡ */: return u8"ꝡ" /* 0xa761 */; + case 0xa762 /* Ꝣ */: return u8"ꝣ" /* 0xa763 */; + case 0xa764 /* Ꝥ */: return u8"ꝥ" /* 0xa765 */; + case 0xa766 /* Ꝧ */: return u8"ꝧ" /* 0xa767 */; + case 0xa768 /* Ꝩ */: return u8"ꝩ" /* 0xa769 */; + case 0xa76a /* Ꝫ */: return u8"ꝫ" /* 0xa76b */; + case 0xa76c /* Ꝭ */: return u8"ꝭ" /* 0xa76d */; + case 0xa76e /* Ꝯ */: return u8"ꝯ" /* 0xa76f */; + case 0xa779 /* Ꝺ */: return u8"ꝺ" /* 0xa77a */; + case 0xa77b /* Ꝼ */: return u8"ꝼ" /* 0xa77c */; + case 0xa77d /* Ᵹ */: return u8"ᵹ" /* 0x1d79 */; + case 0xa77e /* Ꝿ */: return u8"ꝿ" /* 0xa77f */; + case 0xa780 /* Ꞁ */: return u8"ꞁ" /* 0xa781 */; + case 0xa782 /* Ꞃ */: return u8"ꞃ" /* 0xa783 */; + case 0xa784 /* Ꞅ */: return u8"ꞅ" /* 0xa785 */; + case 0xa786 /* Ꞇ */: return u8"ꞇ" /* 0xa787 */; + case 0xa78b /* Ꞌ */: return u8"ꞌ" /* 0xa78c */; + case 0xa78d /* Ɥ */: return u8"ɥ" /* 0x265 */; + case 0xa790 /* Ꞑ */: return u8"ꞑ" /* 0xa791 */; + case 0xa792 /* Ꞓ */: return u8"ꞓ" /* 0xa793 */; + case 0xa796 /* Ꞗ */: return u8"ꞗ" /* 0xa797 */; + case 0xa798 /* Ꞙ */: return u8"ꞙ" /* 0xa799 */; + case 0xa79a /* Ꞛ */: return u8"ꞛ" /* 0xa79b */; + case 0xa79c /* Ꞝ */: return u8"ꞝ" /* 0xa79d */; + case 0xa79e /* Ꞟ */: return u8"ꞟ" /* 0xa79f */; + case 0xa7a0 /* Ꞡ */: return u8"ꞡ" /* 0xa7a1 */; + case 0xa7a2 /* Ꞣ */: return u8"ꞣ" /* 0xa7a3 */; + case 0xa7a4 /* Ꞥ */: return u8"ꞥ" /* 0xa7a5 */; + case 0xa7a6 /* Ꞧ */: return u8"ꞧ" /* 0xa7a7 */; + case 0xa7a8 /* Ꞩ */: return u8"ꞩ" /* 0xa7a9 */; + case 0xa7aa /* Ɦ */: return u8"ɦ" /* 0x266 */; + case 0xa7ab /* Ɜ */: return u8"ɜ" /* 0x25c */; + case 0xa7ac /* Ɡ */: return u8"ɡ" /* 0x261 */; + case 0xa7ad /* Ɬ */: return u8"ɬ" /* 0x26c */; + case 0xa7ae /* Ɪ */: return u8"ɪ" /* 0x26a */; + case 0xa7b0 /* Ʞ */: return u8"ʞ" /* 0x29e */; + case 0xa7b1 /* Ʇ */: return u8"ʇ" /* 0x287 */; + case 0xa7b2 /* Ʝ */: return u8"ʝ" /* 0x29d */; + case 0xa7b3 /* Ꭓ */: return u8"ꭓ" /* 0xab53 */; + case 0xa7b4 /* Ꞵ */: return u8"ꞵ" /* 0xa7b5 */; + case 0xa7b6 /* Ꞷ */: return u8"ꞷ" /* 0xa7b7 */; + case 0xa7b8 /* Ꞹ */: return u8"ꞹ" /* 0xa7b9 */; + case 0xa7ba /* Ꞻ */: return u8"ꞻ" /* 0xa7bb */; + case 0xa7bc /* Ꞽ */: return u8"ꞽ" /* 0xa7bd */; + case 0xa7be /* Ꞿ */: return u8"ꞿ" /* 0xa7bf */; + case 0xa7c2 /* Ꟃ */: return u8"ꟃ" /* 0xa7c3 */; + case 0xa7c4 /* Ꞔ */: return u8"ꞔ" /* 0xa794 */; + case 0xa7c5 /* Ʂ */: return u8"ʂ" /* 0x282 */; + case 0xa7c6 /* Ᶎ */: return u8"ᶎ" /* 0x1d8e */; + case 0xa7c7 /* Ꟈ */: return u8"ꟈ" /* 0xa7c8 */; + case 0xa7c9 /* Ꟊ */: return u8"ꟊ" /* 0xa7ca */; + case 0xa7f5 /* Ꟶ */: return u8"ꟶ" /* 0xa7f6 */; + case 0xff21 /* A */: return u8"a" /* 0xff41 */; + case 0xff22 /* B */: return u8"b" /* 0xff42 */; + case 0xff23 /* C */: return u8"c" /* 0xff43 */; + case 0xff24 /* D */: return u8"d" /* 0xff44 */; + case 0xff25 /* E */: return u8"e" /* 0xff45 */; + case 0xff26 /* F */: return u8"f" /* 0xff46 */; + case 0xff27 /* G */: return u8"g" /* 0xff47 */; + case 0xff28 /* H */: return u8"h" /* 0xff48 */; + case 0xff29 /* I */: return u8"i" /* 0xff49 */; + case 0xff2a /* J */: return u8"j" /* 0xff4a */; + case 0xff2b /* K */: return u8"k" /* 0xff4b */; + case 0xff2c /* L */: return u8"l" /* 0xff4c */; + case 0xff2d /* M */: return u8"m" /* 0xff4d */; + case 0xff2e /* N */: return u8"n" /* 0xff4e */; + case 0xff2f /* O */: return u8"o" /* 0xff4f */; + case 0xff30 /* P */: return u8"p" /* 0xff50 */; + case 0xff31 /* Q */: return u8"q" /* 0xff51 */; + case 0xff32 /* R */: return u8"r" /* 0xff52 */; + case 0xff33 /* S */: return u8"s" /* 0xff53 */; + case 0xff34 /* T */: return u8"t" /* 0xff54 */; + case 0xff35 /* U */: return u8"u" /* 0xff55 */; + case 0xff36 /* V */: return u8"v" /* 0xff56 */; + case 0xff37 /* W */: return u8"w" /* 0xff57 */; + case 0xff38 /* X */: return u8"x" /* 0xff58 */; + case 0xff39 /* Y */: return u8"y" /* 0xff59 */; + case 0xff3a /* Z */: return u8"z" /* 0xff5a */; + case 0x10400 /* 𐐀 */: return u8"𐐨" /* 0x10428 */; + case 0x10401 /* 𐐁 */: return u8"𐐩" /* 0x10429 */; + case 0x10402 /* 𐐂 */: return u8"𐐪" /* 0x1042a */; + case 0x10403 /* 𐐃 */: return u8"𐐫" /* 0x1042b */; + case 0x10404 /* 𐐄 */: return u8"𐐬" /* 0x1042c */; + case 0x10405 /* 𐐅 */: return u8"𐐭" /* 0x1042d */; + case 0x10406 /* 𐐆 */: return u8"𐐮" /* 0x1042e */; + case 0x10407 /* 𐐇 */: return u8"𐐯" /* 0x1042f */; + case 0x10408 /* 𐐈 */: return u8"𐐰" /* 0x10430 */; + case 0x10409 /* 𐐉 */: return u8"𐐱" /* 0x10431 */; + case 0x1040a /* 𐐊 */: return u8"𐐲" /* 0x10432 */; + case 0x1040b /* 𐐋 */: return u8"𐐳" /* 0x10433 */; + case 0x1040c /* 𐐌 */: return u8"𐐴" /* 0x10434 */; + case 0x1040d /* 𐐍 */: return u8"𐐵" /* 0x10435 */; + case 0x1040e /* 𐐎 */: return u8"𐐶" /* 0x10436 */; + case 0x1040f /* 𐐏 */: return u8"𐐷" /* 0x10437 */; + case 0x10410 /* 𐐐 */: return u8"𐐸" /* 0x10438 */; + case 0x10411 /* 𐐑 */: return u8"𐐹" /* 0x10439 */; + case 0x10412 /* 𐐒 */: return u8"𐐺" /* 0x1043a */; + case 0x10413 /* 𐐓 */: return u8"𐐻" /* 0x1043b */; + case 0x10414 /* 𐐔 */: return u8"𐐼" /* 0x1043c */; + case 0x10415 /* 𐐕 */: return u8"𐐽" /* 0x1043d */; + case 0x10416 /* 𐐖 */: return u8"𐐾" /* 0x1043e */; + case 0x10417 /* 𐐗 */: return u8"𐐿" /* 0x1043f */; + case 0x10418 /* 𐐘 */: return u8"𐑀" /* 0x10440 */; + case 0x10419 /* 𐐙 */: return u8"𐑁" /* 0x10441 */; + case 0x1041a /* 𐐚 */: return u8"𐑂" /* 0x10442 */; + case 0x1041b /* 𐐛 */: return u8"𐑃" /* 0x10443 */; + case 0x1041c /* 𐐜 */: return u8"𐑄" /* 0x10444 */; + case 0x1041d /* 𐐝 */: return u8"𐑅" /* 0x10445 */; + case 0x1041e /* 𐐞 */: return u8"𐑆" /* 0x10446 */; + case 0x1041f /* 𐐟 */: return u8"𐑇" /* 0x10447 */; + case 0x10420 /* 𐐠 */: return u8"𐑈" /* 0x10448 */; + case 0x10421 /* 𐐡 */: return u8"𐑉" /* 0x10449 */; + case 0x10422 /* 𐐢 */: return u8"𐑊" /* 0x1044a */; + case 0x10423 /* 𐐣 */: return u8"𐑋" /* 0x1044b */; + case 0x10424 /* 𐐤 */: return u8"𐑌" /* 0x1044c */; + case 0x10425 /* 𐐥 */: return u8"𐑍" /* 0x1044d */; + case 0x10426 /* 𐐦 */: return u8"𐑎" /* 0x1044e */; + case 0x10427 /* 𐐧 */: return u8"𐑏" /* 0x1044f */; + case 0x104b0 /* 𐒰 */: return u8"𐓘" /* 0x104d8 */; + case 0x104b1 /* 𐒱 */: return u8"𐓙" /* 0x104d9 */; + case 0x104b2 /* 𐒲 */: return u8"𐓚" /* 0x104da */; + case 0x104b3 /* 𐒳 */: return u8"𐓛" /* 0x104db */; + case 0x104b4 /* 𐒴 */: return u8"𐓜" /* 0x104dc */; + case 0x104b5 /* 𐒵 */: return u8"𐓝" /* 0x104dd */; + case 0x104b6 /* 𐒶 */: return u8"𐓞" /* 0x104de */; + case 0x104b7 /* 𐒷 */: return u8"𐓟" /* 0x104df */; + case 0x104b8 /* 𐒸 */: return u8"𐓠" /* 0x104e0 */; + case 0x104b9 /* 𐒹 */: return u8"𐓡" /* 0x104e1 */; + case 0x104ba /* 𐒺 */: return u8"𐓢" /* 0x104e2 */; + case 0x104bb /* 𐒻 */: return u8"𐓣" /* 0x104e3 */; + case 0x104bc /* 𐒼 */: return u8"𐓤" /* 0x104e4 */; + case 0x104bd /* 𐒽 */: return u8"𐓥" /* 0x104e5 */; + case 0x104be /* 𐒾 */: return u8"𐓦" /* 0x104e6 */; + case 0x104bf /* 𐒿 */: return u8"𐓧" /* 0x104e7 */; + case 0x104c0 /* 𐓀 */: return u8"𐓨" /* 0x104e8 */; + case 0x104c1 /* 𐓁 */: return u8"𐓩" /* 0x104e9 */; + case 0x104c2 /* 𐓂 */: return u8"𐓪" /* 0x104ea */; + case 0x104c3 /* 𐓃 */: return u8"𐓫" /* 0x104eb */; + case 0x104c4 /* 𐓄 */: return u8"𐓬" /* 0x104ec */; + case 0x104c5 /* 𐓅 */: return u8"𐓭" /* 0x104ed */; + case 0x104c6 /* 𐓆 */: return u8"𐓮" /* 0x104ee */; + case 0x104c7 /* 𐓇 */: return u8"𐓯" /* 0x104ef */; + case 0x104c8 /* 𐓈 */: return u8"𐓰" /* 0x104f0 */; + case 0x104c9 /* 𐓉 */: return u8"𐓱" /* 0x104f1 */; + case 0x104ca /* 𐓊 */: return u8"𐓲" /* 0x104f2 */; + case 0x104cb /* 𐓋 */: return u8"𐓳" /* 0x104f3 */; + case 0x104cc /* 𐓌 */: return u8"𐓴" /* 0x104f4 */; + case 0x104cd /* 𐓍 */: return u8"𐓵" /* 0x104f5 */; + case 0x104ce /* 𐓎 */: return u8"𐓶" /* 0x104f6 */; + case 0x104cf /* 𐓏 */: return u8"𐓷" /* 0x104f7 */; + case 0x104d0 /* 𐓐 */: return u8"𐓸" /* 0x104f8 */; + case 0x104d1 /* 𐓑 */: return u8"𐓹" /* 0x104f9 */; + case 0x104d2 /* 𐓒 */: return u8"𐓺" /* 0x104fa */; + case 0x104d3 /* 𐓓 */: return u8"𐓻" /* 0x104fb */; + case 0x10c80 /* 𐲀 */: return u8"𐳀" /* 0x10cc0 */; + case 0x10c81 /* 𐲁 */: return u8"𐳁" /* 0x10cc1 */; + case 0x10c82 /* 𐲂 */: return u8"𐳂" /* 0x10cc2 */; + case 0x10c83 /* 𐲃 */: return u8"𐳃" /* 0x10cc3 */; + case 0x10c84 /* 𐲄 */: return u8"𐳄" /* 0x10cc4 */; + case 0x10c85 /* 𐲅 */: return u8"𐳅" /* 0x10cc5 */; + case 0x10c86 /* 𐲆 */: return u8"𐳆" /* 0x10cc6 */; + case 0x10c87 /* 𐲇 */: return u8"𐳇" /* 0x10cc7 */; + case 0x10c88 /* 𐲈 */: return u8"𐳈" /* 0x10cc8 */; + case 0x10c89 /* 𐲉 */: return u8"𐳉" /* 0x10cc9 */; + case 0x10c8a /* 𐲊 */: return u8"𐳊" /* 0x10cca */; + case 0x10c8b /* 𐲋 */: return u8"𐳋" /* 0x10ccb */; + case 0x10c8c /* 𐲌 */: return u8"𐳌" /* 0x10ccc */; + case 0x10c8d /* 𐲍 */: return u8"𐳍" /* 0x10ccd */; + case 0x10c8e /* 𐲎 */: return u8"𐳎" /* 0x10cce */; + case 0x10c8f /* 𐲏 */: return u8"𐳏" /* 0x10ccf */; + case 0x10c90 /* 𐲐 */: return u8"𐳐" /* 0x10cd0 */; + case 0x10c91 /* 𐲑 */: return u8"𐳑" /* 0x10cd1 */; + case 0x10c92 /* 𐲒 */: return u8"𐳒" /* 0x10cd2 */; + case 0x10c93 /* 𐲓 */: return u8"𐳓" /* 0x10cd3 */; + case 0x10c94 /* 𐲔 */: return u8"𐳔" /* 0x10cd4 */; + case 0x10c95 /* 𐲕 */: return u8"𐳕" /* 0x10cd5 */; + case 0x10c96 /* 𐲖 */: return u8"𐳖" /* 0x10cd6 */; + case 0x10c97 /* 𐲗 */: return u8"𐳗" /* 0x10cd7 */; + case 0x10c98 /* 𐲘 */: return u8"𐳘" /* 0x10cd8 */; + case 0x10c99 /* 𐲙 */: return u8"𐳙" /* 0x10cd9 */; + case 0x10c9a /* 𐲚 */: return u8"𐳚" /* 0x10cda */; + case 0x10c9b /* 𐲛 */: return u8"𐳛" /* 0x10cdb */; + case 0x10c9c /* 𐲜 */: return u8"𐳜" /* 0x10cdc */; + case 0x10c9d /* 𐲝 */: return u8"𐳝" /* 0x10cdd */; + case 0x10c9e /* 𐲞 */: return u8"𐳞" /* 0x10cde */; + case 0x10c9f /* 𐲟 */: return u8"𐳟" /* 0x10cdf */; + case 0x10ca0 /* 𐲠 */: return u8"𐳠" /* 0x10ce0 */; + case 0x10ca1 /* 𐲡 */: return u8"𐳡" /* 0x10ce1 */; + case 0x10ca2 /* 𐲢 */: return u8"𐳢" /* 0x10ce2 */; + case 0x10ca3 /* 𐲣 */: return u8"𐳣" /* 0x10ce3 */; + case 0x10ca4 /* 𐲤 */: return u8"𐳤" /* 0x10ce4 */; + case 0x10ca5 /* 𐲥 */: return u8"𐳥" /* 0x10ce5 */; + case 0x10ca6 /* 𐲦 */: return u8"𐳦" /* 0x10ce6 */; + case 0x10ca7 /* 𐲧 */: return u8"𐳧" /* 0x10ce7 */; + case 0x10ca8 /* 𐲨 */: return u8"𐳨" /* 0x10ce8 */; + case 0x10ca9 /* 𐲩 */: return u8"𐳩" /* 0x10ce9 */; + case 0x10caa /* 𐲪 */: return u8"𐳪" /* 0x10cea */; + case 0x10cab /* 𐲫 */: return u8"𐳫" /* 0x10ceb */; + case 0x10cac /* 𐲬 */: return u8"𐳬" /* 0x10cec */; + case 0x10cad /* 𐲭 */: return u8"𐳭" /* 0x10ced */; + case 0x10cae /* 𐲮 */: return u8"𐳮" /* 0x10cee */; + case 0x10caf /* 𐲯 */: return u8"𐳯" /* 0x10cef */; + case 0x10cb0 /* 𐲰 */: return u8"𐳰" /* 0x10cf0 */; + case 0x10cb1 /* 𐲱 */: return u8"𐳱" /* 0x10cf1 */; + case 0x10cb2 /* 𐲲 */: return u8"𐳲" /* 0x10cf2 */; + case 0x118a0 /* 𑢠 */: return u8"𑣀" /* 0x118c0 */; + case 0x118a1 /* 𑢡 */: return u8"𑣁" /* 0x118c1 */; + case 0x118a2 /* 𑢢 */: return u8"𑣂" /* 0x118c2 */; + case 0x118a3 /* 𑢣 */: return u8"𑣃" /* 0x118c3 */; + case 0x118a4 /* 𑢤 */: return u8"𑣄" /* 0x118c4 */; + case 0x118a5 /* 𑢥 */: return u8"𑣅" /* 0x118c5 */; + case 0x118a6 /* 𑢦 */: return u8"𑣆" /* 0x118c6 */; + case 0x118a7 /* 𑢧 */: return u8"𑣇" /* 0x118c7 */; + case 0x118a8 /* 𑢨 */: return u8"𑣈" /* 0x118c8 */; + case 0x118a9 /* 𑢩 */: return u8"𑣉" /* 0x118c9 */; + case 0x118aa /* 𑢪 */: return u8"𑣊" /* 0x118ca */; + case 0x118ab /* 𑢫 */: return u8"𑣋" /* 0x118cb */; + case 0x118ac /* 𑢬 */: return u8"𑣌" /* 0x118cc */; + case 0x118ad /* 𑢭 */: return u8"𑣍" /* 0x118cd */; + case 0x118ae /* 𑢮 */: return u8"𑣎" /* 0x118ce */; + case 0x118af /* 𑢯 */: return u8"𑣏" /* 0x118cf */; + case 0x118b0 /* 𑢰 */: return u8"𑣐" /* 0x118d0 */; + case 0x118b1 /* 𑢱 */: return u8"𑣑" /* 0x118d1 */; + case 0x118b2 /* 𑢲 */: return u8"𑣒" /* 0x118d2 */; + case 0x118b3 /* 𑢳 */: return u8"𑣓" /* 0x118d3 */; + case 0x118b4 /* 𑢴 */: return u8"𑣔" /* 0x118d4 */; + case 0x118b5 /* 𑢵 */: return u8"𑣕" /* 0x118d5 */; + case 0x118b6 /* 𑢶 */: return u8"𑣖" /* 0x118d6 */; + case 0x118b7 /* 𑢷 */: return u8"𑣗" /* 0x118d7 */; + case 0x118b8 /* 𑢸 */: return u8"𑣘" /* 0x118d8 */; + case 0x118b9 /* 𑢹 */: return u8"𑣙" /* 0x118d9 */; + case 0x118ba /* 𑢺 */: return u8"𑣚" /* 0x118da */; + case 0x118bb /* 𑢻 */: return u8"𑣛" /* 0x118db */; + case 0x118bc /* 𑢼 */: return u8"𑣜" /* 0x118dc */; + case 0x118bd /* 𑢽 */: return u8"𑣝" /* 0x118dd */; + case 0x118be /* 𑢾 */: return u8"𑣞" /* 0x118de */; + case 0x118bf /* 𑢿 */: return u8"𑣟" /* 0x118df */; + case 0x16e40 /* 𖹀 */: return u8"𖹠" /* 0x16e60 */; + case 0x16e41 /* 𖹁 */: return u8"𖹡" /* 0x16e61 */; + case 0x16e42 /* 𖹂 */: return u8"𖹢" /* 0x16e62 */; + case 0x16e43 /* 𖹃 */: return u8"𖹣" /* 0x16e63 */; + case 0x16e44 /* 𖹄 */: return u8"𖹤" /* 0x16e64 */; + case 0x16e45 /* 𖹅 */: return u8"𖹥" /* 0x16e65 */; + case 0x16e46 /* 𖹆 */: return u8"𖹦" /* 0x16e66 */; + case 0x16e47 /* 𖹇 */: return u8"𖹧" /* 0x16e67 */; + case 0x16e48 /* 𖹈 */: return u8"𖹨" /* 0x16e68 */; + case 0x16e49 /* 𖹉 */: return u8"𖹩" /* 0x16e69 */; + case 0x16e4a /* 𖹊 */: return u8"𖹪" /* 0x16e6a */; + case 0x16e4b /* 𖹋 */: return u8"𖹫" /* 0x16e6b */; + case 0x16e4c /* 𖹌 */: return u8"𖹬" /* 0x16e6c */; + case 0x16e4d /* 𖹍 */: return u8"𖹭" /* 0x16e6d */; + case 0x16e4e /* 𖹎 */: return u8"𖹮" /* 0x16e6e */; + case 0x16e4f /* 𖹏 */: return u8"𖹯" /* 0x16e6f */; + case 0x16e50 /* 𖹐 */: return u8"𖹰" /* 0x16e70 */; + case 0x16e51 /* 𖹑 */: return u8"𖹱" /* 0x16e71 */; + case 0x16e52 /* 𖹒 */: return u8"𖹲" /* 0x16e72 */; + case 0x16e53 /* 𖹓 */: return u8"𖹳" /* 0x16e73 */; + case 0x16e54 /* 𖹔 */: return u8"𖹴" /* 0x16e74 */; + case 0x16e55 /* 𖹕 */: return u8"𖹵" /* 0x16e75 */; + case 0x16e56 /* 𖹖 */: return u8"𖹶" /* 0x16e76 */; + case 0x16e57 /* 𖹗 */: return u8"𖹷" /* 0x16e77 */; + case 0x16e58 /* 𖹘 */: return u8"𖹸" /* 0x16e78 */; + case 0x16e59 /* 𖹙 */: return u8"𖹹" /* 0x16e79 */; + case 0x16e5a /* 𖹚 */: return u8"𖹺" /* 0x16e7a */; + case 0x16e5b /* 𖹛 */: return u8"𖹻" /* 0x16e7b */; + case 0x16e5c /* 𖹜 */: return u8"𖹼" /* 0x16e7c */; + case 0x16e5d /* 𖹝 */: return u8"𖹽" /* 0x16e7d */; + case 0x16e5e /* 𖹞 */: return u8"𖹾" /* 0x16e7e */; + case 0x16e5f /* 𖹟 */: return u8"𖹿" /* 0x16e7f */; + case 0x1e900 /* 𞤀 */: return u8"𞤢" /* 0x1e922 */; + case 0x1e901 /* 𞤁 */: return u8"𞤣" /* 0x1e923 */; + case 0x1e902 /* 𞤂 */: return u8"𞤤" /* 0x1e924 */; + case 0x1e903 /* 𞤃 */: return u8"𞤥" /* 0x1e925 */; + case 0x1e904 /* 𞤄 */: return u8"𞤦" /* 0x1e926 */; + case 0x1e905 /* 𞤅 */: return u8"𞤧" /* 0x1e927 */; + case 0x1e906 /* 𞤆 */: return u8"𞤨" /* 0x1e928 */; + case 0x1e907 /* 𞤇 */: return u8"𞤩" /* 0x1e929 */; + case 0x1e908 /* 𞤈 */: return u8"𞤪" /* 0x1e92a */; + case 0x1e909 /* 𞤉 */: return u8"𞤫" /* 0x1e92b */; + case 0x1e90a /* 𞤊 */: return u8"𞤬" /* 0x1e92c */; + case 0x1e90b /* 𞤋 */: return u8"𞤭" /* 0x1e92d */; + case 0x1e90c /* 𞤌 */: return u8"𞤮" /* 0x1e92e */; + case 0x1e90d /* 𞤍 */: return u8"𞤯" /* 0x1e92f */; + case 0x1e90e /* 𞤎 */: return u8"𞤰" /* 0x1e930 */; + case 0x1e90f /* 𞤏 */: return u8"𞤱" /* 0x1e931 */; + case 0x1e910 /* 𞤐 */: return u8"𞤲" /* 0x1e932 */; + case 0x1e911 /* 𞤑 */: return u8"𞤳" /* 0x1e933 */; + case 0x1e912 /* 𞤒 */: return u8"𞤴" /* 0x1e934 */; + case 0x1e913 /* 𞤓 */: return u8"𞤵" /* 0x1e935 */; + case 0x1e914 /* 𞤔 */: return u8"𞤶" /* 0x1e936 */; + case 0x1e915 /* 𞤕 */: return u8"𞤷" /* 0x1e937 */; + case 0x1e916 /* 𞤖 */: return u8"𞤸" /* 0x1e938 */; + case 0x1e917 /* 𞤗 */: return u8"𞤹" /* 0x1e939 */; + case 0x1e918 /* 𞤘 */: return u8"𞤺" /* 0x1e93a */; + case 0x1e919 /* 𞤙 */: return u8"𞤻" /* 0x1e93b */; + case 0x1e91a /* 𞤚 */: return u8"𞤼" /* 0x1e93c */; + case 0x1e91b /* 𞤛 */: return u8"𞤽" /* 0x1e93d */; + case 0x1e91c /* 𞤜 */: return u8"𞤾" /* 0x1e93e */; + case 0x1e91d /* 𞤝 */: return u8"𞤿" /* 0x1e93f */; + case 0x1e91e /* 𞤞 */: return u8"𞥀" /* 0x1e940 */; + case 0x1e91f /* 𞤟 */: return u8"𞥁" /* 0x1e941 */; + case 0x1e920 /* 𞤠 */: return u8"𞥂" /* 0x1e942 */; + case 0x1e921 /* 𞤡 */: return u8"𞥃" /* 0x1e943 */; + default: return nullptr; + } +} + +#endif diff --git a/src/caseconvert.py b/src/caseconvert.py new file mode 100644 index 0000000..0b0b57b --- /dev/null +++ b/src/caseconvert.py @@ -0,0 +1,56 @@ +# python3 script to generate caseconvert.h. +# It uses difference in lower() and upper() on a character to make a mapping +# that maps a given unicode point to either a lower or upper case UTF-8 character. +# this also include multi-byte characters. + +import codecs + +toupper = {} +tolower = {} + +def writeMapping(file,mapping): + for k,v in sorted(mapping.items()): + file.write(u" case %s /* %s */: return u8\"%s\" /* %s */;\n" % + (hex(ord(k[0])),k,v,",".join("0x{:02x}".format(ord(c)) for c in v))) + +# create mappings of characters whose upper and lower case differs +for codeValue in range(0,0x1FFFF): + s = chr(codeValue) + sl = s.lower() + su = s.upper() + if ord(s[0])!=ord(sl[0]): + tolower[s]=sl + if ord(s[0])!=ord(su[0]): + toupper[s]=su + +file = codecs.open("caseconvert.h", "w", "utf-8") +file.write(r'''/** This file is generated by python3 caseconvert.py. DO NOT EDIT! */ + +#ifndef CASECONVERT_H +#define CASECONVERT_H + +#include +#include + +inline const char *convertUnicodeToUpper(uint32_t code) +{ + switch(code) + { +'''); +writeMapping(file,toupper); +file.write(r''' default: return nullptr; + } +} + +inline const char *convertUnicodeToLower(uint32_t code) +{ + switch(code) + { +'''); +writeMapping(file,tolower); +file.write(r''' default: return nullptr; + } +} + +#endif +'''); diff --git a/src/clangparser.cpp b/src/clangparser.cpp index 045b0aa..431215b 100644 --- a/src/clangparser.cpp +++ b/src/clangparser.cpp @@ -19,6 +19,7 @@ #include "membername.h" #include "filename.h" #include "tooltip.h" +#include "utf8.h" #endif //-------------------------------------------------------------------------- @@ -73,18 +74,14 @@ static QCString detab(const QCString &s) col++; break; default: // non-whitespace => update minIndent - out.addChar(c); - if (c<0 && i= 2 bytes - if (((uchar)c&0xE0)==0xE0 && i': case ':': case ')': break; default: - if (uni_isupper(brief.at(0)) && !lastCharIsMultibyte(brief)) brief+='.'; + if (isUTF8CharUpperCase(brief.str(),0) && !lastUTF8CharIsMultibyte(brief.str())) brief+='.'; break; } } diff --git a/src/htmlgen.cpp b/src/htmlgen.cpp index 2a7155a..59d4868 100644 --- a/src/htmlgen.cpp +++ b/src/htmlgen.cpp @@ -51,6 +51,7 @@ #include "growbuf.h" #include "fileinfo.h" #include "dir.h" +#include "utf8.h" //#define DBG_HTML(x) x; #define DBG_HTML(x) @@ -585,7 +586,7 @@ void HtmlCodeGenerator::codify(const char *str) } else { - p=writeUtf8Char(m_t,p-1); + p=writeUTF8Char(m_t,p-1); m_col++; } } diff --git a/src/index.cpp b/src/index.cpp index 9e91b3a..ded45a9 100644 --- a/src/index.cpp +++ b/src/index.cpp @@ -47,6 +47,7 @@ #include "namespacedef.h" #include "filename.h" #include "tooltip.h" +#include "utf8.h" #define MAX_ITEMS_BEFORE_MULTIPAGE_INDEX 200 #define MAX_ITEMS_BEFORE_QUICK_INDEX 30 @@ -2052,13 +2053,12 @@ static void writeAlphabeticalClassList(OutputList &ol, ClassDef::CompoundType ct if (cd->getLanguage()==SrcLangExt_VHDL && !((VhdlDocGen::VhdlClasses)cd->protection()==VhdlDocGen::ENTITYCLASS ))// no architecture continue; + // get the first UTF8 character (after the part that should be ignored) int index = getPrefixIndex(cd->className()); - //printf("name=%s index=%d %d\n",cd->className().data(),index,cd->protection()); - char charStr[MAX_UTF8_CHAR_SIZE]; - if (getUtf8Char(cd->className().data()+index,charStr,CaseModifier::ToUpper)>0) - // get the first UTF8 character (after the part that should be ignored) + std::string letter = getUTF8CharAt(cd->className().str(),index); + if (!letter.empty()) { - indexLettersUsed.insert(charStr); + indexLettersUsed.insert(convertUTF8ToUpper(letter)); } } } @@ -2092,12 +2092,13 @@ static void writeAlphabeticalClassList(OutputList &ol, ClassDef::CompoundType ct if (cd->isLinkableInProject() && cd->templateMaster()==0) { - int index = getPrefixIndex(cd->className()); - char charStr[MAX_UTF8_CHAR_SIZE]; - if (getUtf8Char(cd->className().data()+index,charStr,CaseModifier::ToUpper)>0) - // get the first UTF8 character (after the part that should be ignored) + QCString className = cd->className(); + int index = getPrefixIndex(className); + std::string letter = getUTF8CharAt(className.str(),index); + if (!letter.empty()) { - auto it = classesByLetter.find(charStr); + letter = convertUTF8ToUpper(letter); + auto it = classesByLetter.find(letter); if (it!=classesByLetter.end()) // add class to the existing list { it->second.push_back(cd.get()); @@ -2105,8 +2106,7 @@ static void writeAlphabeticalClassList(OutputList &ol, ClassDef::CompoundType ct else // new entry { classesByLetter.insert( - std::make_pair(std::string(charStr), - std::vector({ cd.get() }))); + std::make_pair(letter, std::vector({ cd.get() }))); } } } @@ -2633,9 +2633,10 @@ void addClassMemberNameToIndex(const MemberDef *md) { QCString n = md->name(); int index = getPrefixIndex(n); - char letter[MAX_UTF8_CHAR_SIZE]; - if (getUtf8Char(n.data()+index,letter,CaseModifier::ToLower)>0) + std::string letter = getUTF8CharAt(n.str(),index); + if (!letter.empty()) { + letter = convertUTF8ToLower(letter); bool isFriendToHide = hideFriendCompounds && (QCString(md->typeString())=="friend class" || QCString(md->typeString())=="friend struct" || @@ -2711,9 +2712,10 @@ void addNamespaceMemberNameToIndex(const MemberDef *md) { QCString n = md->name(); int index = getPrefixIndex(n); - char letter[MAX_UTF8_CHAR_SIZE]; - if (getUtf8Char(n.data()+index,letter,CaseModifier::ToLower)>0) + std::string letter = getUTF8CharAt(n.str(),index); + if (!letter.empty()) { + letter = convertUTF8ToLower(letter); if (!md->isEnumValue() || (md->getEnumScope() && !md->getEnumScope()->isStrong())) { MemberIndexMap_add(g_namespaceIndexLetterUsed[NMHL_All],letter,md); @@ -2778,9 +2780,10 @@ void addFileMemberNameToIndex(const MemberDef *md) { QCString n = md->name(); int index = getPrefixIndex(n); - char letter[MAX_UTF8_CHAR_SIZE]; - if (getUtf8Char(n.data()+index,letter,CaseModifier::ToLower)>0) + std::string letter = getUTF8CharAt(n.str(),index); + if (!letter.empty()) { + letter = convertUTF8ToLower(letter); if (!md->isEnumValue() || (md->getEnumScope() && !md->getEnumScope()->isStrong())) { MemberIndexMap_add(g_fileIndexLetterUsed[FMHL_All],letter,md); diff --git a/src/latexgen.cpp b/src/latexgen.cpp index f9b78f0..300af19 100644 --- a/src/latexgen.cpp +++ b/src/latexgen.cpp @@ -44,6 +44,7 @@ #include "resourcemgr.h" #include "portable.h" #include "fileinfo.h" +#include "utf8.h" static QCString g_header; static QCString g_footer; @@ -117,26 +118,15 @@ void LatexCodeGenerator::codify(const char *str) #undef COPYCHAR // helper macro to copy a single utf8 character, dealing with multibyte chars. #define COPYCHAR() do { \ - if (lresult < (i + 5)) \ + int bytes = getUTF8CharNumBytes(c); \ + if (lresult < (i + bytes + 1)) \ { \ lresult += 512; \ result = (signed char *)realloc(result, lresult); \ } \ - result[i++]=c; p++; \ - if (c<0) /* multibyte utf-8 character */ \ + for (int j=0; j=2 byte character */ \ result[i++]=*p++; \ - if (((uchar)c&0xE0)==0xE0) \ - { \ - /* 111x.xxxx: >=3 byte character */ \ - result[i++]=*p++; \ - } \ - if (((uchar)c&0xF0)==0xF0) \ - { \ - /* 1111.xxxx: 4 byte character */ \ - result[i++]=*p++; \ - } \ } \ m_col++; \ } while(0) diff --git a/src/mangen.cpp b/src/mangen.cpp index 51fc598..2c26553 100644 --- a/src/mangen.cpp +++ b/src/mangen.cpp @@ -30,6 +30,7 @@ #include "mandocvisitor.h" #include "language.h" #include "dir.h" +#include "utf8.h" static QCString getExtension() { @@ -332,7 +333,7 @@ void ManGenerator::codify(const char *str) case '\n': t << "\n"; m_firstCol=TRUE; m_col=0; break; case '\\': t << "\\"; m_col++; break; case '\"': // no break! - default: p=writeUtf8Char(t,p-1); m_firstCol=FALSE; m_col++; break; + default: p=writeUTF8Char(t,p-1); m_firstCol=FALSE; m_col++; break; } } //printf("%s",str);fflush(stdout); diff --git a/src/markdown.cpp b/src/markdown.cpp index ceba79d..277777a 100644 --- a/src/markdown.cpp +++ b/src/markdown.cpp @@ -50,6 +50,7 @@ #include "portable.h" #include "regex.h" #include "fileinfo.h" +#include "utf8.h" #if !defined(NDEBUG) #define ENABLE_TRACING @@ -2657,23 +2658,21 @@ QCString Markdown::detab(const QCString &s,int &refIndent) if (c<0 && i0) { m_out.addStr(g_doxy_nsbp); - i++; + i+=nb-1; } else { - m_out.addChar(c); - m_out.addChar(data[i++]); // >= 2 bytes - if (((uchar)c&0xE0)==0xE0 && i0x7f || c<0) // part of multibyte character - { - result+=(char)c; - } - else if (isalnum(c)) // simply alpha numerical character - { - result+=(char)tolower(c); - } - else // other 'unprintable' characters - { - char val[4]; - sprintf(val,"_%02x",(uchar)c); - result+=val; - } - } - return result; + return convertUTF8ToLower(s.str()); } @@ -642,11 +622,10 @@ static void addMemberToSearchIndex(const MemberDef *md) ) ) { - QCString n = md->name(); - if (!n.isEmpty()) + std::string n = md->name().str(); + if (!n.empty()) { - char letter[MAX_UTF8_CHAR_SIZE]; - getUtf8Char(n,letter,CaseModifier::ToLower); + std::string letter = convertUTF8ToLower(getUTF8CharAt(n,0)); bool isFriendToHide = hideFriendCompounds && (QCString(md->typeString())=="friend class" || QCString(md->typeString())=="friend struct" || @@ -704,11 +683,10 @@ static void addMemberToSearchIndex(const MemberDef *md) ) ) { - QCString n = md->name(); - if (!n.isEmpty()) + std::string n = md->name().str(); + if (!n.empty()) { - char letter[MAX_UTF8_CHAR_SIZE]; - getUtf8Char(n,letter,CaseModifier::ToLower); + std::string letter = convertUTF8ToLower(getUTF8CharAt(n,0)); g_searchIndexInfo[SEARCH_INDEX_ALL].add(letter,md); if (md->isFunction()) @@ -754,8 +732,7 @@ void createJavaScriptSearchIndex() // index classes for (const auto &cd : *Doxygen::classLinkedMap) { - char letter[MAX_UTF8_CHAR_SIZE]; - getUtf8Char(cd->localName(),letter,CaseModifier::ToLower); + std::string letter = convertUTF8ToLower(getUTF8CharAt(cd->localName().str(),0)); if (cd->isLinkable()) { g_searchIndexInfo[SEARCH_INDEX_ALL].add(letter,cd.get()); @@ -788,8 +765,7 @@ void createJavaScriptSearchIndex() // index namespaces for (const auto &nd : *Doxygen::namespaceLinkedMap) { - char letter[MAX_UTF8_CHAR_SIZE]; - getUtf8Char(nd->name(),letter,CaseModifier::ToLower); + std::string letter = convertUTF8ToLower(getUTF8CharAt(nd->name().str(),0)); if (nd->isLinkable()) { g_searchIndexInfo[SEARCH_INDEX_ALL].add(letter,nd.get()); @@ -802,8 +778,7 @@ void createJavaScriptSearchIndex() { for (const auto &fd : *fn) { - char letter[MAX_UTF8_CHAR_SIZE]; - getUtf8Char(fd->name(),letter,CaseModifier::ToLower); + std::string letter = convertUTF8ToLower(getUTF8CharAt(fd->name().str(),0)); if (fd->isLinkable()) { g_searchIndexInfo[SEARCH_INDEX_ALL].add(letter,fd.get()); @@ -843,11 +818,10 @@ void createJavaScriptSearchIndex() { if (gd->isLinkable()) { - QCString title = gd->groupTitle(); - if (!title.isEmpty()) // TODO: able searching for all word in the title + std::string title = gd->groupTitle(); + if (!title.empty()) // TODO: able searching for all word in the title { - char letter[MAX_UTF8_CHAR_SIZE]; - getUtf8Char(title,letter,CaseModifier::ToLower); + std::string letter = convertUTF8ToLower(getUTF8CharAt(title,0)); g_searchIndexInfo[SEARCH_INDEX_ALL].add(letter,gd.get()); g_searchIndexInfo[SEARCH_INDEX_GROUPS].add(letter,gd.get()); } @@ -859,11 +833,10 @@ void createJavaScriptSearchIndex() { if (pd->isLinkable()) { - QCString title = pd->title(); - if (!title.isEmpty()) + std::string title = pd->title().str(); + if (!title.empty()) { - char letter[MAX_UTF8_CHAR_SIZE]; - getUtf8Char(title,letter,CaseModifier::ToLower); + std::string letter = convertUTF8ToLower(getUTF8CharAt(title,0)); g_searchIndexInfo[SEARCH_INDEX_ALL].add(letter,pd.get()); g_searchIndexInfo[SEARCH_INDEX_PAGES].add(letter,pd.get()); } @@ -871,11 +844,10 @@ void createJavaScriptSearchIndex() } if (Doxygen::mainPage) { - QCString title = Doxygen::mainPage->title(); - if (!title.isEmpty()) + std::string title = Doxygen::mainPage->title().str(); + if (!title.empty()) { - char letter[MAX_UTF8_CHAR_SIZE]; - getUtf8Char(title,letter,CaseModifier::ToLower); + std::string letter = convertUTF8ToLower(getUTF8CharAt(title,0)); g_searchIndexInfo[SEARCH_INDEX_ALL].add(letter,Doxygen::mainPage.get()); g_searchIndexInfo[SEARCH_INDEX_PAGES].add(letter,Doxygen::mainPage.get()); } diff --git a/src/template.cpp b/src/template.cpp index 9bfeb23..9af1d60 100644 --- a/src/template.cpp +++ b/src/template.cpp @@ -30,6 +30,7 @@ #include "regex.h" #include "fileinfo.h" #include "dir.h" +#include "utf8.h" #define ENABLE_TRACING 0 @@ -1106,7 +1107,10 @@ class FilterAlphaIndex { TemplateVariant v = s->get(attribName); int index = getPrefixIndex(v.toString()); - return getUtf8CodeToUpper(v.toString(),index); + return getUnicodeForUTF8CharAt( + convertUTF8ToUpper( + getUTF8CharAt(v.toString().str(),index) + ),0); } public: diff --git a/src/utf8.cpp b/src/utf8.cpp new file mode 100644 index 0000000..a71ede8 --- /dev/null +++ b/src/utf8.cpp @@ -0,0 +1,208 @@ +/****************************************************************************** + * + * Copyright (C) 1997-2021 by Dimitri van Heesch. + * + * Permission to use, copy, modify, and distribute this software and its + * documentation under the terms of the GNU General Public License is hereby + * granted. No representations are made about the suitability of this software + * for any purpose. It is provided "as is" without express or implied warranty. + * See the GNU General Public License for more details. + * + * Documents produced by Doxygen are derivative works derived from the + * input used in their production; they are not affected by this license. + * + */ + +#include + +#include "utf8.h" +#include "caseconvert.h" + +int getUTF8CharNumBytes(char c) +{ + int num=1; + unsigned char uc = static_cast(c); + if (uc>=0x80u) // multibyte character + { + if ((uc&0xE0u)==0xC0u) + { + num=2; // 110x.xxxx: 2 byte character + } + if ((uc&0xF0u)==0xE0u) + { + num=3; // 1110.xxxx: 3 byte character + } + if ((uc&0xF8u)==0xF0u) + { + num=4; // 1111.0xxx: 4 byte character + } + if ((uc&0xFCu)==0xF8u) + { + num=5; // 1111.10xx: 5 byte character + } + if ((uc&0xFEu)==0xFCu) + { + num=6; // 1111.110x: 6 byte character + } + } + return num; +} + +//! Decodes a given input of utf8 data to a unicode code point +//! given the number of bytes it's made of +static inline uint32_t decode_utf8( const char* data , int numBytes ) noexcept +{ + uint32_t cp = (unsigned char)*data; + if (numBytes>1) + { + cp &= 0x7F >> numBytes; // Mask out the header bits + for (int i=1 ; i(*s); + switch (bytesLeft) + { + default: + if ((uc&0xFEu)==0xFCu)// 1111110X six bytes + { + len=6; + return decode_utf8(s,len); + } + // fall through + case 5: + if ((uc&0xFCu)==0xF8u) // 111110XX five bytes + { + len=5; + return decode_utf8(s,len); + } + // fall through + case 4: + if ((uc&0xF8u)==0xF0u) // 11110XXX four bytes + { + len=4; + return decode_utf8(s,len); + } + // fall through + case 3: + if ((uc&0xF0u)==0xE0u) // 1110XXXX three bytes + { + len=3; + return decode_utf8(s,len); + } + // fall through + case 2: + if ((uc&0xE0u)==0xC0u) // 110XXXXX two bytes + { + len=2; + return decode_utf8(s,len); + } + // fall through + case 1: + { + len=1; + return uc; + } + } + len=0; + return 0; +} + +std::string getUTF8CharAt(const std::string &input,size_t pos) +{ + if (input.length()<=pos) return std::string(); + int numBytes=getUTF8CharNumBytes(input[pos]); + if (input.length()(input[0])==0xC2 && + static_cast(input[1])==0xA0) ? 2 : 0; +} + diff --git a/src/utf8.h b/src/utf8.h new file mode 100644 index 0000000..c4c8aad --- /dev/null +++ b/src/utf8.h @@ -0,0 +1,71 @@ +/****************************************************************************** + * + * Copyright (C) 1997-2021 by Dimitri van Heesch. + * + * Permission to use, copy, modify, and distribute this software and its + * documentation under the terms of the GNU General Public License is hereby + * granted. No representations are made about the suitability of this software + * for any purpose. It is provided "as is" without express or implied warranty. + * See the GNU General Public License for more details. + * + * Documents produced by Doxygen are derivative works derived from the + * input used in their production; they are not affected by this license. + * + */ + +#ifndef UTF8_H +#define UTF8_H + +#include +#include +#include + +/** @file + * @brief Various UTF8 related helper functions. + * + * See https://en.wikipedia.org/wiki/UTF-8 for details on UTF8 encoding. + */ + + +/** Converts the input string into a lower case version, also taking into account + * non-ASCII characters that has a lower case variant. + */ +std::string convertUTF8ToLower(const std::string &input); + +/** Converts the input string into a upper case version, also taking into account + * non-ASCII characters that has a upper case variant. + */ +std::string convertUTF8ToUpper(const std::string &input); + +/** Returns the UTF8 character found at byte position pos in the input string. + * The resulting string can be a multi byte sequence. + */ +std::string getUTF8CharAt(const std::string &input,size_t pos); + +/** Returns the 32bit Unicode value matching character at byte position pos in + * the UTF8 encoded input. + */ +uint32_t getUnicodeForUTF8CharAt(const std::string &input,size_t pos); + +/** Returns the number of bytes making up a single UTF8 character given the first byte + * in the sequence. + */ +int getUTF8CharNumBytes(char firstByte); + +/** Writes the UTF8 character pointed to by s to stream t and returns a pointer + * to the next character. + */ +const char *writeUTF8Char(std::ostream &t,const char *s); + +/** Returns true iff the last character in input is a multibyte character. */ +bool lastUTF8CharIsMultibyte(const std::string &input); + +/** Returns true iff the input string at byte position pos holds an upper case character. */ +bool isUTF8CharUpperCase(const std::string &input,size_t pos); + +/** Check if the first character pointed at by input is a non-breakable whitespace character. + * Returns the byte size of the character if there is match or 0 if not. + */ +int isUTF8NonBreakableSpace(const char *input); + +#endif diff --git a/src/util.cpp b/src/util.cpp index b2f8e56..ccae0de 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -71,6 +71,7 @@ #include "symbolresolver.h" #include "fileinfo.h" #include "dir.h" +#include "utf8.h" #define ENABLE_TRACINGSUPPORT 0 @@ -3474,6 +3475,7 @@ bool hasVisibleRoot(const BaseClassList &bcl) //---------------------------------------------------------------------- +#if 0 // copies the next UTF8 character from input stream into buffer ids // returns the size of the character in bytes (or 0 if it is invalid) // the character itself will be copied as a UTF-8 encoded string to ids. @@ -3533,7 +3535,7 @@ int getUtf8Char(const char *input,char ids[MAX_UTF8_CHAR_SIZE],CaseModifier modi } return inputLen; } - +#endif // note that this function is not reentrant due to the use of static growBuf! QCString escapeCharsInString(const char *name,bool allowDots,bool allowUnderscore) @@ -3579,20 +3581,20 @@ QCString escapeCharsInString(const char *name,bool allowDots,bool allowUnderscor default: if (c<0) { - char ids[MAX_UTF8_CHAR_SIZE]; bool doEscape = true; if (allowUnicodeNames) { - int charLen = getUtf8Char(p-1,ids); + int charLen = getUTF8CharNumBytes(c); if (charLen>0) { - growBuf.addStr(ids); - p+=charLen-1; + growBuf.addStr(p-1,charLen); + p+=charLen; doEscape = false; } } if (doEscape) // not a valid unicode char or escaping needed { + char ids[5]; unsigned char id = (unsigned char)c; ids[0]='_'; ids[1]='x'; @@ -5695,67 +5697,14 @@ bool checkIfTypedef(const Definition *scope,const FileDef *fileScope,const char return FALSE; } -const char *writeUtf8Char(std::ostream &t,const char *s) -{ - const char *p = s; - uchar c=(uchar)*s++; - if (c>=0x80) // multibyte character - { - if (((uchar)c&0xE0)==0xC0) - { - s++; // 11xx.xxxx: >=2 byte character - } - if (((uchar)c&0xF0)==0xE0) - { - s++; // 111x.xxxx: >=3 byte character - } - if (((uchar)c&0xF8)==0xF0) - { - s++; // 1111.xxxx: >=4 byte character - } - if (((uchar)c&0xFC)==0xF8) - { - s++; // 1111.1xxx: >=5 byte character - } - if (((uchar)c&0xFE)==0xFC) - { - s++; // 1111.1xxx: 6 byte character - } - } - t.write(p,s-p); - return s; -} - -int nextUtf8CharPosition(const QCString &utf8Str,uint len,uint startPos) +static int nextUTF8CharPosition(const QCString &utf8Str,uint len,uint startPos) { - int bytes=1; if (startPos>=len) return len; uchar c = (uchar)utf8Str[startPos]; - if (c>=0x80) // multibyte utf-8 character - { - if (((uchar)c&0xE0)==0xC0) - { - bytes+=1; // 11xx.xxxx: >=2 byte character - } - if (((uchar)c&0xF0)==0xE0) - { - bytes+=2; // 111x.xxxx: >=3 byte character - } - if (((uchar)c&0xF8)==0xF0) - { - bytes+=3; // 1111.xxxx: >=4 byte character - } - if (((uchar)c&0xFC)==0xF8) - { - bytes+=4; // 1111.1xxx: >=5 byte character - } - if (((uchar)c&0xFE)==0xFC) - { - bytes+=5; // 1111.1xxx: 6 byte character - } - } - else if (c=='&') // skip over character entities + int bytes=getUTF8CharNumBytes(c); + if (c=='&') // skip over character entities { + bytes=1; int (*matcher)(int) = 0; c = (uchar)utf8Str[startPos+bytes]; if (c=='#') // numerical entity? @@ -5809,14 +5758,14 @@ QCString parseCommentAsText(const Definition *scope,const MemberDef *md, int i=0; int charCnt=0; int l=result.length(); - while ((i=nextUtf8CharPosition(result,l,i))=80) break; } if (charCnt>=80) // try to truncate the string { - while ((i=nextUtf8CharPosition(result,l,i))"; break; - default: s=writeUtf8Char(t,s-1); col++; break; + default: s=writeUTF8Char(t,s-1); col++; break; } } } diff --git a/templates/html/search.js b/templates/html/search.js index 08d1c06..fb226f7 100644 --- a/templates/html/search.js +++ b/templates/html/search.js @@ -335,15 +335,11 @@ function SearchBox(name, resultsPath, inFrame, label, extension) var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); var code = searchValue.toLowerCase().charCodeAt(0); - var idxChar = searchValue.substr(0, 1); + var idxChar = searchValue.substr(0, 1).toLowerCase(); if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair { idxChar = searchValue.substr(0, 2); } - else if (code <128) - { - idxChar = idxChar.toLowerCase(); - } var resultsPage; var resultsPageWithSearch; -- cgit v0.12