/* This software is licensed by the MIT License, see LICENSE file */ /* Copyright © 2022 Gregory Lirent */ #include "../build.h" static unsigned int toupper_00d0_00ff(unsigned int uc) __attribute__((noinline)); static unsigned int toupper_0100_01ff(unsigned int uc) __attribute__((noinline)); static unsigned int toupper_0200_029f(unsigned int uc) __attribute__((noinline)); static unsigned int toupper_0370_03ff(unsigned int uc) __attribute__((noinline)); static unsigned int toupper_0450_04ff(unsigned int uc) __attribute__((noinline)); static unsigned int toupper_0500_058f(unsigned int uc) __attribute__((noinline)); static unsigned int toupper_10d0_10ff(unsigned int uc) __attribute__((noinline)); static unsigned int toupper_13f0_13ff(unsigned int uc) __attribute__((noinline)); static unsigned int toupper_1c80_1c8f(unsigned int uc) __attribute__((noinline)); static unsigned int toupper_1d70_1d7f(unsigned int uc) __attribute__((noinline)); static unsigned int toupper_1e00_1eff(unsigned int uc) __attribute__((noinline)); static unsigned int toupper_1f00_1fff(unsigned int uc) __attribute__((noinline)); static unsigned int toupper_2c30_2cff(unsigned int uc) __attribute__((noinline)); static unsigned int toupper_2d00_2d2f(unsigned int uc) __attribute__((noinline)); static unsigned int toupper_a640_a69f(unsigned int uc) __attribute__((noinline)); static unsigned int toupper_a720_a7cf(unsigned int uc) __attribute__((noinline)); static unsigned int toupper_ab70_abbf(unsigned int uc) __attribute__((noinline)); static unsigned int toupper_010420_0104ff(unsigned int uc) __attribute__((noinline)); static unsigned int toupper_010cc0_010cff(unsigned int uc) __attribute__((noinline)); static unsigned int toupper_0118c0_0118df(unsigned int uc) __attribute__((noinline)); static unsigned int toupper_00d0_00ff(unsigned int uc) { if (uc <= 0x00fe) { if (uc >= 0x00e0 && uc != 0x00f7) return uc ^ 0x20; #ifndef LATIN_EXTENDED_ADDITIONAL_DISABLE if (uc == 0x00df) return 0x1e9e; #endif return uc; } return (uc == 0x00ff) ? 0x0178 : uc; } static unsigned int toupper_0100_01ff(unsigned int uc) { static unsigned char table[] = { /* 0x000100 - 0x000107 */ 0x00, 0x01, 0x00, 0x03, 0x00, 0x05, 0x00, 0x07, /* 0x000108 - 0x00010f */ 0x00, 0x09, 0x00, 0x0b, 0x00, 0x0d, 0x00, 0x0f, /* 0x000110 - 0x000117 */ 0x00, 0x11, 0x00, 0x13, 0x00, 0x15, 0x00, 0x17, /* 0x000118 - 0x00011f */ 0x00, 0x19, 0x00, 0x1b, 0x00, 0x1d, 0x00, 0x1f, /* 0x000120 - 0x000127 */ 0x00, 0x21, 0x00, 0x23, 0x00, 0x25, 0x00, 0x27, /* 0x000128 - 0x00012f */ 0x00, 0x29, 0x00, 0x2b, 0x00, 0x2d, 0x00, 0x2f, /* 0x000130 - 0x000137 */ 0x00, 0x31, 0x00, 0x33, 0x00, 0x35, 0x00, 0x37, /* 0x000138 - 0x00013f */ 0x00, 0x00, 0x3a, 0x00, 0x3c, 0x00, 0x3e, 0x00, /* 0x000140 - 0x000147 */ 0x40, 0x00, 0x42, 0x00, 0x44, 0x00, 0x46, 0x00, /* 0x000148 - 0x00014f */ 0x48, 0x00, 0x00, 0x4b, 0x00, 0x4d, 0x00, 0x4f, /* 0x000150 - 0x000157 */ 0x00, 0x51, 0x00, 0x53, 0x00, 0x55, 0x00, 0x57, /* 0x000158 - 0x00015f */ 0x00, 0x59, 0x00, 0x5b, 0x00, 0x5d, 0x00, 0x5f, /* 0x000160 - 0x000167 */ 0x00, 0x61, 0x00, 0x63, 0x00, 0x65, 0x00, 0x67, /* 0x000168 - 0x00016f */ 0x00, 0x69, 0x00, 0x6b, 0x00, 0x6d, 0x00, 0x6f, /* 0x000170 - 0x000177 */ 0x00, 0x71, 0x00, 0x73, 0x00, 0x75, 0x00, 0x77, /* 0x000178 - 0x00017f */ 0x00, 0x00, 0x7a, 0x00, 0x7c, 0x00, 0x7e, 0x00, #ifndef LATIN_EXTENDED_B_DISABLE /* 0x000180 - 0x000187 */ 0x00, 0x00, 0x00, 0x83, 0x00, 0x85, 0x00, 0x00, /* 0x000188 - 0x00018f */ 0x88, 0x00, 0x8a, 0x00, 0x8c, 0x00, 0x8e, 0x00, /* 0x000190 - 0x000197 */ 0x90, 0x00, 0x92, 0x00, 0x00, 0xf7, 0x00, 0x00, /* 0x000198 - 0x00019f */ 0x00, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0001a0 - 0x0001a7 */ 0x00, 0xa1, 0x00, 0xa3, 0x00, 0xa5, 0x00, 0xa7, /* 0x0001a8 - 0x0001af */ 0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, /* 0x0001b0 - 0x0001b7 */ 0xb0, 0x00, 0x00, 0x00, 0xb4, 0x00, 0xb6, 0x00, /* 0x0001b8 - 0x0001bf */ 0x00, 0xb9, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, /* 0x0001c0 - 0x0001c7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc5, 0x00, /* 0x0001c8 - 0x0001cf */ 0x00, 0xc8, 0x00, 0x00, 0xcb, 0x00, 0xce, 0x00, /* 0x0001d0 - 0x0001d7 */ 0xd0, 0x00, 0xd2, 0x00, 0xd4, 0x00, 0xd6, 0x00, /* 0x0001d8 - 0x0001df */ 0xd8, 0x00, 0xda, 0x00, 0xdc, 0x8f, 0x00, 0xdf, /* 0x0001e0 - 0x0001e7 */ 0x00, 0xe1, 0x00, 0xe3, 0x00, 0xe5, 0x00, 0xe7, /* 0x0001e8 - 0x0001ef */ 0x00, 0xe9, 0x00, 0xeb, 0x00, 0xed, 0x00, 0xef, /* 0x0001f0 - 0x0001f7 */ 0x00, 0x00, 0x00, 0xf2, 0x00, 0xf5, 0x00, 0x00, /* 0x0001f8 - 0x0001ff */ 0x00, 0xf9, 0x00, 0xfb, 0x00, 0xfd, 0x00, 0xff, #endif }; #ifdef LATIN_EXTENDED_B_DISABLE if (uc >= 0x0180) return uc; #endif unsigned char v = uc - 0x0100; if (table[v]) return 0x0100 | (table[v]-1); #ifndef LATIN_EXTENDED_B_DISABLE if (v == 0x80) return 0x0243; if (v == 0x9a) return 0x023d; if (v == 0x9e) return 0x0220; #endif return uc; } static unsigned int toupper_0200_029f(unsigned int uc) { #if !defined(LATIN_EXTENDED_B_DISABLE) || !defined(IPA_EXTENSIONS_DISABLE) static unsigned short table[] = { # ifndef LATIN_EXTENDED_B_DISABLE /* 0x000200 - 0x000207 */ 0x0000, 0x0200, 0x0000, 0x0202, 0x0000, 0x0204, 0x0000, 0x0206, /* 0x000208 - 0x00020f */ 0x0000, 0x0208, 0x0000, 0x020a, 0x0000, 0x020c, 0x0000, 0x020e, /* 0x000210 - 0x000217 */ 0x0000, 0x0210, 0x0000, 0x0212, 0x0000, 0x0214, 0x0000, 0x0216, /* 0x000218 - 0x00021f */ 0x0000, 0x0218, 0x0000, 0x021a, 0x0000, 0x021c, 0x0000, 0x021e, /* 0x000220 - 0x000227 */ 0x0000, 0x0000, 0x0000, 0x0222, 0x0000, 0x0224, 0x0000, 0x0226, /* 0x000228 - 0x00022f */ 0x0000, 0x0228, 0x0000, 0x022a, 0x0000, 0x022c, 0x0000, 0x022e, /* 0x000230 - 0x000237 */ 0x0000, 0x0230, 0x0000, 0x0232, 0x0000, 0x0000, 0x0000, 0x0000, # ifndef LATIN_EXTENDED_C_DISABLE /* 0x000238 - 0x00023f */ 0x0000, 0x0000, 0x0000, 0x0000, 0x023b, 0x023c, 0x0000, 0x2c7e, /* 0x000240 - 0x000247 */ 0x2c7f, 0x0000, 0x0241, 0x0000, 0x0000, 0x0000, 0x0000, 0x0246, # else /* 0x000238 - 0x00023f */ 0x0000, 0x0000, 0x0000, 0x0000, 0x023b, 0x023c, 0x0000, 0x0000, /* 0x000240 - 0x000247 */ 0x0000, 0x0000, 0x0241, 0x0000, 0x0000, 0x0000, 0x0000, 0x0246, # endif /* 0x000248 - 0x00024f */ 0x0000, 0x0248, 0x0000, 0x024a, 0x0000, 0x024c, 0x0000, 0x024e, # endif # ifndef IPA_EXTENSIONS_DISABLE # ifndef LATIN_EXTENDED_C_DISABLE /* 0x000250 - 0x000257 */ 0x2c6f, 0x2c6d, 0x2c70, 0x0181, 0x0186, 0x0000, 0x0000, 0x0000, # else /* 0x000250 - 0x000257 */ 0x0000, 0x0000, 0x0000, 0x0181, 0x0186, 0x0000, 0x0000, 0x0000, # endif # ifndef LATIN_EXTENDED_D_DISABLE /* 0x000258 - 0x00025f */ 0x0000, 0x01bf, 0x0000, 0x0190, 0xa7ab, 0x0000, 0x0000, 0x0000, /* 0x000260 - 0x000267 */ 0x0193, 0xa7ac, 0x0000, 0x0194, 0x0000, 0xa78d, 0xa7aa, 0x0000, # ifndef LATIN_EXTENDED_C_DISABLE /* 0x000268 - 0x00026f */ 0x0197, 0x0196, 0xa7ae, 0x2c62, 0xa7ad, 0x0000, 0x0000, 0x019c, # else /* 0x000268 - 0x00026f */ 0x0197, 0x0196, 0xa7ae, 0x0000, 0xa7ad, 0x0000, 0x0000, 0x019c, # endif # else /* 0x000258 - 0x00025f */ 0x0000, 0x01bf, 0x0000, 0x0190, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x000260 - 0x000267 */ 0x0193, 0x0000, 0x0000, 0x0194, 0x0000, 0x0000, 0x0000, 0x0000, # ifndef LATIN_EXTENDED_C_DISABLE /* 0x000268 - 0x00026f */ 0x0197, 0x0196, 0x0000, 0x2c62, 0x0000, 0x0000, 0x0000, 0x019c, # else /* 0x000268 - 0x00026f */ 0x0197, 0x0196, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x019c, # endif # endif # ifndef LATIN_EXTENDED_C_DISABLE /* 0x000270 - 0x000277 */ 0x0000, 0x2c6e, 0x019d, 0x0000, 0x0000, 0x019f, 0x0000, 0x0000, /* 0x000278 - 0x00027f */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2c64, 0x0000, 0x0000, # else /* 0x000270 - 0x000277 */ 0x0000, 0x0000, 0x019d, 0x0000, 0x0000, 0x019f, 0x0000, 0x0000, /* 0x000278 - 0x00027f */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, # endif # ifndef LATIN_EXTENDED_D_DISABLE /* 0x000280 - 0x000287 */ 0x01a6, 0x0000, 0x0000, 0x01a9, 0x0000, 0x0000, 0x0000, 0xa7b1, # else /* 0x000280 - 0x000287 */ 0x01a6, 0x0000, 0x0000, 0x01a9, 0x0000, 0x0000, 0x0000, 0x0000, # endif /* 0x000288 - 0x00028f */ 0x01ae, 0x0244, 0x01b1, 0x01b2, 0x0245, 0x0000, 0x0000, 0x0000, /* 0x000290 - 0x000297 */ 0x0000, 0x0000, 0x01b7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, # ifndef LATIN_EXTENDED_D_DISABLE /* 0x000298 - 0x00029f */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa7b2, 0xa7b0, 0x0000, # else /* 0x000298 - 0x00029f */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, # endif # endif }; # if defined(LATIN_EXTENDED_B_DISABLE) if (uc <= 0x024f) return uc; # elif defined(IPA_EXTENSIONS_DISABLE) if (uc >= 0x0250) return uc; # endif unsigned char v = uc - 0x0200; if (table[v]) return table[v]; #endif return uc; } static unsigned int toupper_0370_03ff(unsigned int uc) { static unsigned char table[] = { /* 0x000370 - 0x000377 */ 0x00, 0x70, 0x00, 0x72, 0x00, 0x00, 0x00, 0x76, /* 0x000378 - 0x00037f */ 0x00, 0x00, 0x00, 0xfd, 0xfe, 0xff, 0x00, 0x00, /* 0x000380 - 0x000387 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x000388 - 0x00038f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x000390 - 0x000397 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x000398 - 0x00039f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0003a0 - 0x0003a7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0003a8 - 0x0003af */ 0x00, 0x00, 0x00, 0x00, 0x86, 0x88, 0x89, 0x8a, /* 0x0003b0 - 0x0003b7 */ 0x00, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, /* 0x0003b8 - 0x0003bf */ 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, /* 0x0003c0 - 0x0003c7 */ 0xa0, 0xa1, 0xa3, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0x0003c8 - 0x0003cf */ 0xa8, 0xa9, 0xaa, 0xab, 0x8c, 0x8e, 0x8f, 0x00, /* 0x0003d0 - 0x0003d7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0003d8 - 0x0003df */ 0x00, 0xd8, 0x00, 0xda, 0x00, 0xdc, 0x00, 0xde, /* 0x0003e0 - 0x0003e7 */ 0x00, 0xe0, 0x00, 0xe2, 0x00, 0xe4, 0x00, 0xe6, /* 0x0003e8 - 0x0003ef */ 0x00, 0xe8, 0x00, 0xea, 0x00, 0xec, 0x00, 0xee, /* 0x0003f0 - 0x0003f7 */ 0x9a, 0xa1, 0xf9, 0x7f, 0x00, 0x95, 0x00, 0x00, /* 0x0003f8 - 0x0003ff */ 0xf7, 0x00, 0x00, 0xfa, 0x00, 0x00, 0x00, 0x00, }; unsigned char v = uc - 0x0370; if (table[v]) return 0x0300 | table[v]; return uc; } static unsigned int toupper_0450_04ff(unsigned int uc) { static unsigned char table[] = { /* 0x0450 - 0x0457 */ 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, /* 0x0458 - 0x045f */ 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, /* 0x0460 - 0x0467 */ 0x00, 0x61, 0x00, 0x63, 0x00, 0x65, 0x00, 0x67, /* 0x0468 - 0x046f */ 0x00, 0x69, 0x00, 0x6b, 0x00, 0x6d, 0x00, 0x6f, /* 0x0470 - 0x0477 */ 0x00, 0x71, 0x00, 0x73, 0x00, 0x75, 0x00, 0x77, /* 0x0478 - 0x047f */ 0x00, 0x79, 0x00, 0x7b, 0x00, 0x7d, 0x00, 0x7f, /* 0x0480 - 0x0487 */ 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0488 - 0x048f */ 0x00, 0x00, 0x00, 0x8b, 0x00, 0x8d, 0x00, 0x8f, /* 0x0490 - 0x0497 */ 0x00, 0x91, 0x00, 0x93, 0x00, 0x95, 0x00, 0x97, /* 0x0498 - 0x049f */ 0x00, 0x99, 0x00, 0x9b, 0x00, 0x9d, 0x00, 0x9f, /* 0x04a0 - 0x04a7 */ 0x00, 0xa1, 0x00, 0xa3, 0x00, 0xa5, 0x00, 0xa7, /* 0x04a8 - 0x04af */ 0x00, 0xa9, 0x00, 0xab, 0x00, 0xad, 0x00, 0xaf, /* 0x04b0 - 0x04b7 */ 0x00, 0xb1, 0x00, 0xb3, 0x00, 0xb5, 0x00, 0xb7, /* 0x04b8 - 0x04bf */ 0x00, 0xb9, 0x00, 0xbb, 0x00, 0xbd, 0x00, 0xbf, /* 0x04c0 - 0x04c7 */ 0x00, 0x00, 0xc2, 0x00, 0xc4, 0x00, 0xc6, 0x00, /* 0x04c8 - 0x04cf */ 0xc8, 0x00, 0xca, 0x00, 0xcc, 0x00, 0xce, 0xc1, /* 0x04d0 - 0x04d7 */ 0x00, 0xd1, 0x00, 0xd3, 0x00, 0xd5, 0x00, 0xd7, /* 0x04d8 - 0x04df */ 0x00, 0xd9, 0x00, 0xdb, 0x00, 0xdd, 0x00, 0xdf, /* 0x04e0 - 0x04e7 */ 0x00, 0xe1, 0x00, 0xe3, 0x00, 0xe5, 0x00, 0xe7, /* 0x04e8 - 0x04ef */ 0x00, 0xe9, 0x00, 0xeb, 0x00, 0xed, 0x00, 0xef, /* 0x04f0 - 0x04f7 */ 0x00, 0xf1, 0x00, 0xf3, 0x00, 0xf5, 0x00, 0xf7, /* 0x04f8 - 0x04ff */ 0x00, 0xf9, 0x00, 0xfb, 0x00, 0xfd, 0x00, 0xff, }; unsigned char v = uc - 0x0450; if (table[v]) return 0x0400 | (table[v]-1); return uc; } static unsigned int toupper_0500_058f(unsigned int uc) { #ifndef CYRILLIC_SUPLEMENT_DISABLE static unsigned char table_0500[] = { /* 0x0500 - 0x0507 */ 0x00, 0x01, 0x00, 0x03, 0x00, 0x05, 0x00, 0x07, /* 0x0508 - 0x050f */ 0x00, 0x09, 0x00, 0x0b, 0x00, 0x0d, 0x00, 0x0f, /* 0x0510 - 0x0517 */ 0x00, 0x11, 0x00, 0x13, 0x00, 0x15, 0x00, 0x17, /* 0x0518 - 0x051f */ 0x00, 0x19, 0x00, 0x1b, 0x00, 0x1d, 0x00, 0x1f, /* 0x0520 - 0x0527 */ 0x00, 0x21, 0x00, 0x23, 0x00, 0x25, 0x00, 0x27, /* 0x0528 - 0x052f */ 0x00, 0x29, 0x00, 0x2b, 0x00, 0x2d, 0x00, 0x2f, }; #endif static unsigned char table_0560[] = { /* 0x0560 - 0x0567 */ 0x00, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, /* 0x0568 - 0x056f */ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, /* 0x0570 - 0x0577 */ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, /* 0x0578 - 0x057f */ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, /* 0x0580 - 0x0587 */ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x00, /* 0x0588 - 0x058f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; unsigned char v = uc - 0x0500; #ifndef CYRILLIC_SUPLEMENT_DISABLE if (v < 0x30 && table_0500[v ]) return 0x0500 | (table_0500[v]-1); #endif if (v > 0x60 && table_0560[v -= 0x60]) return 0x0500 | table_0560[v]; return uc; } static unsigned int toupper_10d0_10ff(unsigned int uc) { static unsigned char table[] = { /* 0x0010d0 - 0x0010d7 */ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, /* 0x0010d8 - 0x0010df */ 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, /* 0x0010e0 - 0x0010e7 */ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0x0010e8 - 0x0010ef */ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0x0010f0 - 0x0010f7 */ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x0010f8 - 0x0010ff */ 0xb8, 0xb9, 0xba, 0x00, 0x00, 0xbd, 0xbe, 0xbf, }; unsigned char v = uc - 0x10d0; if (table[v]) return 0x1c00 | table[v]; return uc; } static unsigned int toupper_13f0_13ff(unsigned int uc) { #ifndef CHEROKEE_DISABLE static unsigned char table[] = { /* 0x0013f0 - 0x0013f7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0013f8 - 0x0013ff */ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0x00, 0x00, }; unsigned char v = uc - 0x13f0; if (table[v]) return 0x1300 | table[v]; #endif return uc; } static unsigned int toupper_1c80_1c8f(unsigned int uc) { #ifndef CYRILLIC_EXTENDED_C_DISABLE static unsigned char table[] = { /* 0x001c80 - 0x001c87 */ 0x12, 0x14, 0x1e, 0x21, 0x22, 0x22, 0x2a, 0x62, }; if (uc <= 0x1c87) return 0x0400 | table[uc-0x1c80]; #ifndef CYRILLIC_EXTENDED_B_DISABLE if (uc == 0x1c88) return 0xa64a; #endif #endif return uc; } static unsigned int toupper_1d70_1d7f(unsigned int uc) { #ifndef PHONETIC_EXTENSIONS_DISABLE if (uc == 0x1d79) return 0xa77d; if (uc == 0x1d7d) return 0x2c63; #endif return uc; } static unsigned int toupper_1e00_1eff(unsigned int uc) { #ifndef LATIN_EXTENDED_ADDITIONAL_DISABLE static unsigned char table[] = { /* 0x001e00 - 0x001e07 */ 0x00, 0x01, 0x00, 0x03, 0x00, 0x05, 0x00, 0x07, /* 0x001e08 - 0x001e0f */ 0x00, 0x09, 0x00, 0x0b, 0x00, 0x0d, 0x00, 0x0f, /* 0x001e10 - 0x001e17 */ 0x00, 0x11, 0x00, 0x13, 0x00, 0x15, 0x00, 0x17, /* 0x001e18 - 0x001e1f */ 0x00, 0x19, 0x00, 0x1b, 0x00, 0x1d, 0x00, 0x1f, /* 0x001e20 - 0x001e27 */ 0x00, 0x21, 0x00, 0x23, 0x00, 0x25, 0x00, 0x27, /* 0x001e28 - 0x001e2f */ 0x00, 0x29, 0x00, 0x2b, 0x00, 0x2d, 0x00, 0x2f, /* 0x001e30 - 0x001e37 */ 0x00, 0x31, 0x00, 0x33, 0x00, 0x35, 0x00, 0x37, /* 0x001e38 - 0x001e3f */ 0x00, 0x39, 0x00, 0x3b, 0x00, 0x3d, 0x00, 0x3f, /* 0x001e40 - 0x001e47 */ 0x00, 0x41, 0x00, 0x43, 0x00, 0x45, 0x00, 0x47, /* 0x001e48 - 0x001e4f */ 0x00, 0x49, 0x00, 0x4b, 0x00, 0x4d, 0x00, 0x4f, /* 0x001e50 - 0x001e57 */ 0x00, 0x51, 0x00, 0x53, 0x00, 0x55, 0x00, 0x57, /* 0x001e58 - 0x001e5f */ 0x00, 0x59, 0x00, 0x5b, 0x00, 0x5d, 0x00, 0x5f, /* 0x001e60 - 0x001e67 */ 0x00, 0x61, 0x00, 0x63, 0x00, 0x65, 0x00, 0x67, /* 0x001e68 - 0x001e6f */ 0x00, 0x69, 0x00, 0x6b, 0x00, 0x6d, 0x00, 0x6f, /* 0x001e70 - 0x001e77 */ 0x00, 0x71, 0x00, 0x73, 0x00, 0x75, 0x00, 0x77, /* 0x001e78 - 0x001e7f */ 0x00, 0x79, 0x00, 0x7b, 0x00, 0x7d, 0x00, 0x7f, /* 0x001e80 - 0x001e87 */ 0x00, 0x81, 0x00, 0x83, 0x00, 0x85, 0x00, 0x87, /* 0x001e88 - 0x001e8f */ 0x00, 0x89, 0x00, 0x8b, 0x00, 0x8d, 0x00, 0x8f, /* 0x001e90 - 0x001e97 */ 0x00, 0x91, 0x00, 0x93, 0x00, 0x95, 0x00, 0x00, /* 0x001e98 - 0x001e9f */ 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x00, /* 0x001ea0 - 0x001ea7 */ 0x00, 0xa1, 0x00, 0xa3, 0x00, 0xa5, 0x00, 0xa7, /* 0x001ea8 - 0x001eaf */ 0x00, 0xa9, 0x00, 0xab, 0x00, 0xad, 0x00, 0xaf, /* 0x001eb0 - 0x001eb7 */ 0x00, 0xb1, 0x00, 0xb3, 0x00, 0xb5, 0x00, 0xb7, /* 0x001eb8 - 0x001ebf */ 0x00, 0xb9, 0x00, 0xbb, 0x00, 0xbd, 0x00, 0xbf, /* 0x001ec0 - 0x001ec7 */ 0x00, 0xc1, 0x00, 0xc3, 0x00, 0xc5, 0x00, 0xc7, /* 0x001ec8 - 0x001ecf */ 0x00, 0xc9, 0x00, 0xcb, 0x00, 0xcd, 0x00, 0xcf, /* 0x001ed0 - 0x001ed7 */ 0x00, 0xd1, 0x00, 0xd3, 0x00, 0xd5, 0x00, 0xd7, /* 0x001ed8 - 0x001edf */ 0x00, 0xd9, 0x00, 0xdb, 0x00, 0xdd, 0x00, 0xdf, /* 0x001ee0 - 0x001ee7 */ 0x00, 0xe1, 0x00, 0xe3, 0x00, 0xe5, 0x00, 0xe7, /* 0x001ee8 - 0x001eef */ 0x00, 0xe9, 0x00, 0xeb, 0x00, 0xed, 0x00, 0xef, /* 0x001ef0 - 0x001ef7 */ 0x00, 0xf1, 0x00, 0xf3, 0x00, 0xf5, 0x00, 0xf7, /* 0x001ef8 - 0x001eff */ 0x00, 0xf9, 0x00, 0xfb, 0x00, 0xfd, 0x00, 0xff, }; unsigned char v = uc - 0x1e00; if (table[v]) return 0x1e00 | (table[v]-1); #endif return uc; } static unsigned int toupper_1f00_1fff(unsigned int uc) { #ifndef GREEK_EXTENDED_DISABLE static unsigned char table[] = { /* 0x001f00 - 0x001f07 */ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x001f08 - 0x001f0f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x001f10 - 0x001f17 */ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x00, 0x00, /* 0x001f18 - 0x001f1f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x001f20 - 0x001f27 */ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, /* 0x001f28 - 0x001f2f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x001f30 - 0x001f37 */ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, /* 0x001f38 - 0x001f3f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x001f40 - 0x001f47 */ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x00, 0x00, /* 0x001f48 - 0x001f4f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x001f50 - 0x001f57 */ 0x00, 0x59, 0x00, 0x5b, 0x00, 0x5d, 0x00, 0x5f, /* 0x001f58 - 0x001f5f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x001f60 - 0x001f67 */ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, /* 0x001f68 - 0x001f6f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x001f70 - 0x001f77 */ 0xba, 0xbb, 0xc8, 0xc9, 0xca, 0xcb, 0xda, 0xdb, /* 0x001f78 - 0x001f7f */ 0xf8, 0xf9, 0xfa, 0xfb, 0xfa, 0xfb, 0x00, 0x00, /* 0x001f80 - 0x001f87 */ 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, /* 0x001f88 - 0x001f8f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x001f90 - 0x001f97 */ 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, /* 0x001f98 - 0x001f9f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x001fa0 - 0x001fa7 */ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0x001fa8 - 0x001faf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x001fb0 - 0x001fb7 */ 0xb8, 0xb9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x001fb8 - 0x001fbf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x001fc0 - 0x001fc7 */ 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x00, /* 0x001fc8 - 0x001fcf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x001fd0 - 0x001fd7 */ 0xd8, 0xd9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x001fd8 - 0x001fdf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x001fe0 - 0x001fe7 */ 0xe8, 0xe9, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, /* 0x001fe8 - 0x001fef */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x001ff0 - 0x001ff7 */ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, /* 0x001ff8 - 0x001fff */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; unsigned char v = uc - 0x1f00; if (table[v]) return 0x1f00 | table[v]; switch (v) { default: break; case 0xbe: return 0x0399; } #endif return uc; } static unsigned int toupper_2c30_2cff(unsigned int uc) { #if !defined(GLAGOLITIC_DISABLE) || !defined(LATIN_EXTENDED_C_DISABLE) || !defined(COPTIC_DISABLE) static unsigned char table[] = { #ifndef GLAGOLITIC_DISABLE /* 0x002c30 - 0x002c37 */ 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, /* 0x002c38 - 0x002c3f */ 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, /* 0x002c40 - 0x002c47 */ 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, /* 0x002c48 - 0x002c4f */ 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, /* 0x002c50 - 0x002c57 */ 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, /* 0x002c58 - 0x002c5f */ 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x00, #endif #ifndef LATIN_EXTENDED_C_DISABLE /* 0x002c60 - 0x002c67 */ 0x00, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x002c68 - 0x002c6f */ 0x68, 0x00, 0x6a, 0x00, 0x6c, 0x00, 0x00, 0x00, /* 0x002c70 - 0x002c77 */ 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x00, /* 0x002c78 - 0x002c7f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, #endif #ifndef COPTIC_DISABLE /* 0x002c80 - 0x002c87 */ 0x00, 0x81, 0x00, 0x83, 0x00, 0x85, 0x00, 0x87, /* 0x002c88 - 0x002c8f */ 0x00, 0x89, 0x00, 0x8b, 0x00, 0x8d, 0x00, 0x8f, /* 0x002c90 - 0x002c97 */ 0x00, 0x91, 0x00, 0x93, 0x00, 0x95, 0x00, 0x97, /* 0x002c98 - 0x002c9f */ 0x00, 0x99, 0x00, 0x9b, 0x00, 0x9d, 0x00, 0x9f, /* 0x002ca0 - 0x002ca7 */ 0x00, 0xa1, 0x00, 0xa3, 0x00, 0xa5, 0x00, 0xa7, /* 0x002ca8 - 0x002caf */ 0x00, 0xa9, 0x00, 0xab, 0x00, 0xad, 0x00, 0xaf, /* 0x002cb0 - 0x002cb7 */ 0x00, 0xb1, 0x00, 0xb3, 0x00, 0xb5, 0x00, 0xb7, /* 0x002cb8 - 0x002cbf */ 0x00, 0xb9, 0x00, 0xbb, 0x00, 0xbd, 0x00, 0xbf, /* 0x002cc0 - 0x002cc7 */ 0x00, 0xc1, 0x00, 0xc3, 0x00, 0xc5, 0x00, 0xc7, /* 0x002cc8 - 0x002ccf */ 0x00, 0xc9, 0x00, 0xcb, 0x00, 0xcd, 0x00, 0xcf, /* 0x002cd0 - 0x002cd7 */ 0x00, 0xd1, 0x00, 0xd3, 0x00, 0xd5, 0x00, 0xd7, /* 0x002cd8 - 0x002cdf */ 0x00, 0xd9, 0x00, 0xdb, 0x00, 0xdd, 0x00, 0xdf, /* 0x002ce0 - 0x002ce7 */ 0x00, 0xe1, 0x00, 0xe3, 0x00, 0x00, 0x00, 0x00, /* 0x002ce8 - 0x002cef */ 0x00, 0x00, 0x00, 0x00, 0xec, 0x00, 0xee, 0x00, /* 0x002cf0 - 0x002cf7 */ 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, 0x00, /* 0x002cf8 - 0x002cff */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, #endif }; #ifndef GLAGOLITIC_DISABLE unsigned char v = uc - 0x2c30; # if !defined(LATIN_EXTENDED_C_DISABLE) if (v == 0x35) return 0x023a; # endif # if defined(LATIN_EXTENDED_C_DISABLE) && !defined(COPTIC_DISABLE) if (uc <= 0x2c5f && table[v]) return 0x2c00 | (table[v]-1); if (uc <= 0x2c7f) else return uc; v -= 0x20; # elif !defined(LATIN_EXTENDED_C_DISABLE) && defined(COPTIC_DISABLE) if (uc >= 0x2c80) return uc; # elif defined(LATIN_EXTENDED_C_DISABLE) && defined(COPTIC_DISABLE) if (uc >= 0x2c60) return uc; # endif #elif !defined(LATIN_EXTENDED_C_DISABLE) unsigned char v = uc - 0x2c60; if (uc <= 0x2c5f) return uc; if (v == 0x35) return 0x023a; #if defined(COPTIC_DISABLE) if (uc >= 0x2c80) return uc; #endif #else unsigned char v = uc - 0x2c80; if (uc <= 0x2c7f) return uc; #endif if (table[v]) return 0x2c00 | (table[v]-1); #endif return uc; } static unsigned int toupper_2d00_2d2f(unsigned int uc) { #ifndef GEORGIAN_SUPPLEMENT_DISABLE static unsigned char table[] = { /* 0x002d00 - 0x002d07 */ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0x002d08 - 0x002d0f */ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0x002d10 - 0x002d17 */ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x002d18 - 0x002d1f */ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0x002d20 - 0x002d27 */ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0x00, 0xc7, /* 0x002d28 - 0x002d2f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, }; unsigned char v = uc - 0x2d00; if (table[v]) return 0x1000 | table[v]; #endif return uc; } static unsigned int toupper_a640_a69f(unsigned int uc) { #ifndef CYRILLIC_EXTENDED_B_DISABLE static unsigned char table[] = { /* 0x00a640 - 0x00a647 */ 0x00, 0x40, 0x00, 0x42, 0x00, 0x44, 0x00, 0x46, /* 0x00a648 - 0x00a64f */ 0x00, 0x48, 0x00, 0x4a, 0x00, 0x4c, 0x00, 0x4e, /* 0x00a650 - 0x00a657 */ 0x00, 0x50, 0x00, 0x52, 0x00, 0x54, 0x00, 0x56, /* 0x00a658 - 0x00a65f */ 0x00, 0x58, 0x00, 0x5a, 0x00, 0x5c, 0x00, 0x5e, /* 0x00a660 - 0x00a667 */ 0x00, 0x60, 0x00, 0x62, 0x00, 0x64, 0x00, 0x66, /* 0x00a668 - 0x00a66f */ 0x00, 0x68, 0x00, 0x6a, 0x00, 0x6c, 0x00, 0x00, /* 0x00a670 - 0x00a677 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00a678 - 0x00a67f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00a680 - 0x00a687 */ 0x00, 0x80, 0x00, 0x82, 0x00, 0x84, 0x00, 0x86, /* 0x00a688 - 0x00a68f */ 0x00, 0x88, 0x00, 0x8a, 0x00, 0x8c, 0x00, 0x8e, /* 0x00a690 - 0x00a697 */ 0x00, 0x90, 0x00, 0x92, 0x00, 0x94, 0x00, 0x96, /* 0x00a698 - 0x00a69f */ 0x00, 0x98, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x00, }; unsigned char v = uc - 0xa640; if (table[v]) return 0xa600 | table[v]; #endif return uc; } static unsigned int toupper_a720_a7cf(unsigned int uc) { #ifndef LATIN_EXTENDED_D_DISABLE static unsigned char table[] = { /* 0x00a720 - 0x00a727 */ 0x00, 0x00, 0x00, 0x22, 0x00, 0x24, 0x00, 0x26, /* 0x00a728 - 0x00a72f */ 0x00, 0x28, 0x00, 0x2a, 0x00, 0x2c, 0x00, 0x2e, /* 0x00a730 - 0x00a737 */ 0x00, 0x00, 0x00, 0x32, 0x00, 0x34, 0x00, 0x36, /* 0x00a738 - 0x00a73f */ 0x00, 0x38, 0x00, 0x3a, 0x00, 0x3c, 0x00, 0x3e, /* 0x00a740 - 0x00a747 */ 0x00, 0x40, 0x00, 0x42, 0x00, 0x44, 0x00, 0x46, /* 0x00a748 - 0x00a74f */ 0x00, 0x48, 0x00, 0x4a, 0x00, 0x4c, 0x00, 0x4e, /* 0x00a750 - 0x00a757 */ 0x00, 0x50, 0x00, 0x52, 0x00, 0x54, 0x00, 0x56, /* 0x00a758 - 0x00a75f */ 0x00, 0x58, 0x00, 0x5a, 0x00, 0x5c, 0x00, 0x5e, /* 0x00a760 - 0x00a767 */ 0x00, 0x60, 0x00, 0x62, 0x00, 0x64, 0x00, 0x66, /* 0x00a768 - 0x00a76f */ 0x00, 0x68, 0x00, 0x6a, 0x00, 0x6c, 0x00, 0x6e, /* 0x00a770 - 0x00a777 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00a778 - 0x00a77f */ 0x00, 0x00, 0x79, 0x00, 0x7b, 0x00, 0x00, 0x7e, /* 0x00a780 - 0x00a787 */ 0x00, 0x80, 0x00, 0x82, 0x00, 0x84, 0x00, 0x86, /* 0x00a788 - 0x00a78f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00a790 - 0x00a797 */ 0x00, 0x90, 0x00, 0x92, 0x00, 0x00, 0x00, 0x96, /* 0x00a798 - 0x00a79f */ 0x00, 0x98, 0x00, 0x9a, 0x00, 0x9c, 0x00, 0x9e, /* 0x00a7a0 - 0x00a7a7 */ 0x00, 0xa0, 0x00, 0xa2, 0x00, 0xa4, 0x00, 0xa6, /* 0x00a7a8 - 0x00a7af */ 0x00, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00a7b0 - 0x00a7b7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x00, 0xb6, /* 0x00a7b8 - 0x00a7bf */ 0x00, 0xb8, 0x00, 0xba, 0x00, 0xbc, 0x00, 0xbe, /* 0x00a7c0 - 0x00a7c7 */ 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x00, /* 0x00a7c8 - 0x00a7cf */ 0xc7, 0x00, 0xc9, 0x00, 0x00, 0x00, 0x00, 0x00, }; unsigned char v = uc - 0xa720; if (table[v]) return 0xa700 | table[v]; #endif return uc; } static unsigned int toupper_ab70_abbf(unsigned int uc) { #ifndef CHEROKEE_DISABLE static unsigned char table[] = { /* 0x00ab70 - 0x00ab77 */ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0x00ab78 - 0x00ab7f */ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0x00ab80 - 0x00ab87 */ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x00ab88 - 0x00ab8f */ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0x00ab90 - 0x00ab97 */ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x00ab98 - 0x00ab9f */ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x00aba0 - 0x00aba7 */ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x00aba8 - 0x00abaf */ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0x00abb0 - 0x00abb7 */ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x00abb8 - 0x00abbf */ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, }; if (uc < 0xab70) return (uc == 0xab53) ? 0xa7b3 : uc; unsigned char v = uc - 0xab70; if (table[v]) return 0x1300 | table[v]; #endif return uc; } static unsigned int toupper_010420_0104ff(unsigned int uc) { #ifndef DESERET_DISABLE static unsigned char table_0428[] = { /* 0x010428 - 0x01042f */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, /* 0x010430 - 0x010437 */ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x010438 - 0x01043f */ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, /* 0x010440 - 0x010447 */ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x010448 - 0x01044f */ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, }; static unsigned char table_04d8[] = { /* 0x0104d8 - 0x0104df */ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x0104e0 - 0x0104e7 */ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0x0104e8 - 0x0104ef */ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x0104f0 - 0x0104f7 */ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x0104f8 - 0x0104ff */ 0xd0, 0xd1, 0xd2, 0xd3, 0x00, 0x00, 0x00, 0x00, }; if (uc >= 0x010428) { unsigned char v = uc - 0x010428; if (v <= 0x27) return 0x010400 | table_0428[v]; if (v >= 0xb0 && table_04d8[v -= 0xb0]) return 0x010400 | table_04d8[v]; } #endif return uc; } static unsigned int toupper_010cc0_010cff(unsigned int uc) { #ifndef OLD_HUNGARIAN_DISABLE static unsigned char table[] = { /* 0x010cc0 - 0x010cc7 */ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x010cc8 - 0x010ccf */ 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, /* 0x010cd0 - 0x010cd7 */ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, /* 0x010cd8 - 0x010cdf */ 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, /* 0x010ce0 - 0x010ce7 */ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0x010ce8 - 0x010cef */ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0x010cf0 - 0x010cf7 */ 0xb0, 0xb1, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, }; if (uc <= 0x010cf7) { unsigned char v = uc - 0x010cc0; if (table[v]) return 0x010c00 | table[v]; } #endif return uc; } static unsigned int toupper_0118c0_0118df(unsigned int uc) { #ifndef WARANG_CITI_DISABLE static unsigned char table[] = { /* 0x0118c0 - 0x0118c7 */ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0x0118c8 - 0x0118cf */ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0x0118d0 - 0x0118d7 */ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x0118d8 - 0x0118df */ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, }; unsigned char v = uc - 0x0118c0; if (table[v]) return 0x011800 | table[v]; #endif return uc; } unsigned int toupper_unicode(unsigned int uc) { if (uc <= 0x007a) return (uc >= 0x0061) ? uc ^ 0x20 : uc; if (uc <= 0x044f) { if (uc >= 0x0430) return uc - 0x20; if (uc <= 0x00ff) return (uc >= 0x00d0) ? toupper_00d0_00ff(uc) : uc; if (uc <= 0x01ff) return (uc >= 0x0100) ? toupper_0100_01ff(uc) : uc; if (uc <= 0x029f) return (uc >= 0x0200) ? toupper_0200_029f(uc) : uc; if (uc <= 0x03ff) return (uc >= 0x0370) ? toupper_0370_03ff(uc) : uc; return uc; } if (uc <= 0x04ff && uc >= 0x0450) return toupper_0450_04ff(uc); if (uc <= 0x058f && uc >= 0x0500) return toupper_0500_058f(uc); if (uc <= 0x10ff && uc >= 0x10d0) return toupper_10d0_10ff(uc); if (uc <= 0x13ff && uc >= 0x13f0) return toupper_13f0_13ff(uc); if (uc <= 0x1c8f && uc >= 0x1c80) return toupper_1c80_1c8f(uc); if (uc <= 0x1d7f && uc >= 0x1d70) return toupper_1d70_1d7f(uc); if (uc <= 0x1eff && uc >= 0x1e00) return toupper_1e00_1eff(uc); if (uc <= 0x1fff && uc >= 0x1f00) return toupper_1f00_1fff(uc); if (uc <= 0x2cff && uc >= 0x2c30) return toupper_2c30_2cff(uc); if (uc <= 0x2d2f && uc >= 0x2d00) return toupper_2d00_2d2f(uc); if (uc <= 0xa69f && uc >= 0xa640) return toupper_a640_a69f(uc); if (uc <= 0xa7cf && uc >= 0xa720) return toupper_a720_a7cf(uc); if (uc <= 0xabbf && uc >= 0xab50) return toupper_ab70_abbf(uc); if (uc <= 0x0104ff && uc >= 0x010420) return toupper_010420_0104ff(uc); if (uc <= 0x010cff && uc >= 0x010cc0) return toupper_010cc0_010cff(uc); if (uc <= 0x0118df && uc >= 0x0118c0) return toupper_0118c0_0118df(uc); return uc; }