update CaseFolding.txt and generate inc_case_folding.hh

This commit is contained in:
YiFang Xiao 2023-04-10 00:36:07 -04:00 committed by xiaoyifang
parent 7402dcdd6a
commit bb1e0de74a
4 changed files with 1322 additions and 124 deletions

View file

@ -241,6 +241,7 @@ size_t foldCase( wchar in, wchar * out )
case 0x370: *out = 0x371; return 1; case 0x370: *out = 0x371; return 1;
case 0x372: *out = 0x373; return 1; case 0x372: *out = 0x373; return 1;
case 0x376: *out = 0x377; return 1; case 0x376: *out = 0x377; return 1;
case 0x37f: *out = 0x3f3; return 1;
case 0x386: *out = 0x3ac; return 1; case 0x386: *out = 0x3ac; return 1;
case 0x388: *out = 0x3ad; return 1; case 0x388: *out = 0x3ad; return 1;
case 0x389: *out = 0x3ae; return 1; case 0x389: *out = 0x3ae; return 1;
@ -447,6 +448,11 @@ size_t foldCase( wchar in, wchar * out )
case 0x520: *out = 0x521; return 1; case 0x520: *out = 0x521; return 1;
case 0x522: *out = 0x523; return 1; case 0x522: *out = 0x523; return 1;
case 0x524: *out = 0x525; return 1; case 0x524: *out = 0x525; return 1;
case 0x526: *out = 0x527; return 1;
case 0x528: *out = 0x529; return 1;
case 0x52a: *out = 0x52b; return 1;
case 0x52c: *out = 0x52d; return 1;
case 0x52e: *out = 0x52f; return 1;
case 0x531: *out = 0x561; return 1; case 0x531: *out = 0x561; return 1;
case 0x532: *out = 0x562; return 1; case 0x532: *out = 0x562; return 1;
case 0x533: *out = 0x563; return 1; case 0x533: *out = 0x563; return 1;
@ -524,6 +530,69 @@ size_t foldCase( wchar in, wchar * out )
case 0x10c3: *out = 0x2d23; return 1; case 0x10c3: *out = 0x2d23; return 1;
case 0x10c4: *out = 0x2d24; return 1; case 0x10c4: *out = 0x2d24; return 1;
case 0x10c5: *out = 0x2d25; return 1; case 0x10c5: *out = 0x2d25; return 1;
case 0x10c7: *out = 0x2d27; return 1;
case 0x10cd: *out = 0x2d2d; return 1;
case 0x13f8: *out = 0x13f0; return 1;
case 0x13f9: *out = 0x13f1; return 1;
case 0x13fa: *out = 0x13f2; return 1;
case 0x13fb: *out = 0x13f3; return 1;
case 0x13fc: *out = 0x13f4; return 1;
case 0x13fd: *out = 0x13f5; return 1;
case 0x1c80: *out = 0x432; return 1;
case 0x1c81: *out = 0x434; return 1;
case 0x1c82: *out = 0x43e; return 1;
case 0x1c83: *out = 0x441; return 1;
case 0x1c84: *out = 0x442; return 1;
case 0x1c85: *out = 0x442; return 1;
case 0x1c86: *out = 0x44a; return 1;
case 0x1c87: *out = 0x463; return 1;
case 0x1c88: *out = 0xa64b; return 1;
case 0x1c90: *out = 0x10d0; return 1;
case 0x1c91: *out = 0x10d1; return 1;
case 0x1c92: *out = 0x10d2; return 1;
case 0x1c93: *out = 0x10d3; return 1;
case 0x1c94: *out = 0x10d4; return 1;
case 0x1c95: *out = 0x10d5; return 1;
case 0x1c96: *out = 0x10d6; return 1;
case 0x1c97: *out = 0x10d7; return 1;
case 0x1c98: *out = 0x10d8; return 1;
case 0x1c99: *out = 0x10d9; return 1;
case 0x1c9a: *out = 0x10da; return 1;
case 0x1c9b: *out = 0x10db; return 1;
case 0x1c9c: *out = 0x10dc; return 1;
case 0x1c9d: *out = 0x10dd; return 1;
case 0x1c9e: *out = 0x10de; return 1;
case 0x1c9f: *out = 0x10df; return 1;
case 0x1ca0: *out = 0x10e0; return 1;
case 0x1ca1: *out = 0x10e1; return 1;
case 0x1ca2: *out = 0x10e2; return 1;
case 0x1ca3: *out = 0x10e3; return 1;
case 0x1ca4: *out = 0x10e4; return 1;
case 0x1ca5: *out = 0x10e5; return 1;
case 0x1ca6: *out = 0x10e6; return 1;
case 0x1ca7: *out = 0x10e7; return 1;
case 0x1ca8: *out = 0x10e8; return 1;
case 0x1ca9: *out = 0x10e9; return 1;
case 0x1caa: *out = 0x10ea; return 1;
case 0x1cab: *out = 0x10eb; return 1;
case 0x1cac: *out = 0x10ec; return 1;
case 0x1cad: *out = 0x10ed; return 1;
case 0x1cae: *out = 0x10ee; return 1;
case 0x1caf: *out = 0x10ef; return 1;
case 0x1cb0: *out = 0x10f0; return 1;
case 0x1cb1: *out = 0x10f1; return 1;
case 0x1cb2: *out = 0x10f2; return 1;
case 0x1cb3: *out = 0x10f3; return 1;
case 0x1cb4: *out = 0x10f4; return 1;
case 0x1cb5: *out = 0x10f5; return 1;
case 0x1cb6: *out = 0x10f6; return 1;
case 0x1cb7: *out = 0x10f7; return 1;
case 0x1cb8: *out = 0x10f8; return 1;
case 0x1cb9: *out = 0x10f9; return 1;
case 0x1cba: *out = 0x10fa; return 1;
case 0x1cbd: *out = 0x10fd; return 1;
case 0x1cbe: *out = 0x10fe; return 1;
case 0x1cbf: *out = 0x10ff; return 1;
case 0x1e00: *out = 0x1e01; return 1; case 0x1e00: *out = 0x1e01; return 1;
case 0x1e02: *out = 0x1e03; return 1; case 0x1e02: *out = 0x1e03; return 1;
case 0x1e04: *out = 0x1e05; return 1; case 0x1e04: *out = 0x1e05; return 1;
@ -897,6 +966,7 @@ size_t foldCase( wchar in, wchar * out )
case 0x2c2c: *out = 0x2c5c; return 1; case 0x2c2c: *out = 0x2c5c; return 1;
case 0x2c2d: *out = 0x2c5d; return 1; case 0x2c2d: *out = 0x2c5d; return 1;
case 0x2c2e: *out = 0x2c5e; return 1; case 0x2c2e: *out = 0x2c5e; return 1;
case 0x2c2f: *out = 0x2c5f; return 1;
case 0x2c60: *out = 0x2c61; return 1; case 0x2c60: *out = 0x2c61; return 1;
case 0x2c62: *out = 0x26b; return 1; case 0x2c62: *out = 0x26b; return 1;
case 0x2c63: *out = 0x1d7d; return 1; case 0x2c63: *out = 0x1d7d; return 1;
@ -964,6 +1034,7 @@ size_t foldCase( wchar in, wchar * out )
case 0x2ce2: *out = 0x2ce3; return 1; case 0x2ce2: *out = 0x2ce3; return 1;
case 0x2ceb: *out = 0x2cec; return 1; case 0x2ceb: *out = 0x2cec; return 1;
case 0x2ced: *out = 0x2cee; return 1; case 0x2ced: *out = 0x2cee; return 1;
case 0x2cf2: *out = 0x2cf3; return 1;
case 0xa640: *out = 0xa641; return 1; case 0xa640: *out = 0xa641; return 1;
case 0xa642: *out = 0xa643; return 1; case 0xa642: *out = 0xa643; return 1;
case 0xa644: *out = 0xa645; return 1; case 0xa644: *out = 0xa645; return 1;
@ -980,6 +1051,7 @@ size_t foldCase( wchar in, wchar * out )
case 0xa65a: *out = 0xa65b; return 1; case 0xa65a: *out = 0xa65b; return 1;
case 0xa65c: *out = 0xa65d; return 1; case 0xa65c: *out = 0xa65d; return 1;
case 0xa65e: *out = 0xa65f; return 1; case 0xa65e: *out = 0xa65f; return 1;
case 0xa660: *out = 0xa661; return 1;
case 0xa662: *out = 0xa663; return 1; case 0xa662: *out = 0xa663; return 1;
case 0xa664: *out = 0xa665; return 1; case 0xa664: *out = 0xa665; return 1;
case 0xa666: *out = 0xa667; return 1; case 0xa666: *out = 0xa667; return 1;
@ -998,6 +1070,8 @@ size_t foldCase( wchar in, wchar * out )
case 0xa692: *out = 0xa693; return 1; case 0xa692: *out = 0xa693; return 1;
case 0xa694: *out = 0xa695; return 1; case 0xa694: *out = 0xa695; return 1;
case 0xa696: *out = 0xa697; return 1; case 0xa696: *out = 0xa697; return 1;
case 0xa698: *out = 0xa699; return 1;
case 0xa69a: *out = 0xa69b; return 1;
case 0xa722: *out = 0xa723; return 1; case 0xa722: *out = 0xa723; return 1;
case 0xa724: *out = 0xa725; return 1; case 0xa724: *out = 0xa725; return 1;
case 0xa726: *out = 0xa727; return 1; case 0xa726: *out = 0xa727; return 1;
@ -1045,6 +1119,125 @@ size_t foldCase( wchar in, wchar * out )
case 0xa784: *out = 0xa785; return 1; case 0xa784: *out = 0xa785; return 1;
case 0xa786: *out = 0xa787; return 1; case 0xa786: *out = 0xa787; return 1;
case 0xa78b: *out = 0xa78c; return 1; case 0xa78b: *out = 0xa78c; return 1;
case 0xa78d: *out = 0x265; return 1;
case 0xa790: *out = 0xa791; return 1;
case 0xa792: *out = 0xa793; return 1;
case 0xa796: *out = 0xa797; return 1;
case 0xa798: *out = 0xa799; return 1;
case 0xa79a: *out = 0xa79b; return 1;
case 0xa79c: *out = 0xa79d; return 1;
case 0xa79e: *out = 0xa79f; return 1;
case 0xa7a0: *out = 0xa7a1; return 1;
case 0xa7a2: *out = 0xa7a3; return 1;
case 0xa7a4: *out = 0xa7a5; return 1;
case 0xa7a6: *out = 0xa7a7; return 1;
case 0xa7a8: *out = 0xa7a9; return 1;
case 0xa7aa: *out = 0x266; return 1;
case 0xa7ab: *out = 0x25c; return 1;
case 0xa7ac: *out = 0x261; return 1;
case 0xa7ad: *out = 0x26c; return 1;
case 0xa7ae: *out = 0x26a; return 1;
case 0xa7b0: *out = 0x29e; return 1;
case 0xa7b1: *out = 0x287; return 1;
case 0xa7b2: *out = 0x29d; return 1;
case 0xa7b3: *out = 0xab53; return 1;
case 0xa7b4: *out = 0xa7b5; return 1;
case 0xa7b6: *out = 0xa7b7; return 1;
case 0xa7b8: *out = 0xa7b9; return 1;
case 0xa7ba: *out = 0xa7bb; return 1;
case 0xa7bc: *out = 0xa7bd; return 1;
case 0xa7be: *out = 0xa7bf; return 1;
case 0xa7c0: *out = 0xa7c1; return 1;
case 0xa7c2: *out = 0xa7c3; return 1;
case 0xa7c4: *out = 0xa794; return 1;
case 0xa7c5: *out = 0x282; return 1;
case 0xa7c6: *out = 0x1d8e; return 1;
case 0xa7c7: *out = 0xa7c8; return 1;
case 0xa7c9: *out = 0xa7ca; return 1;
case 0xa7d0: *out = 0xa7d1; return 1;
case 0xa7d6: *out = 0xa7d7; return 1;
case 0xa7d8: *out = 0xa7d9; return 1;
case 0xa7f5: *out = 0xa7f6; return 1;
case 0xab70: *out = 0x13a0; return 1;
case 0xab71: *out = 0x13a1; return 1;
case 0xab72: *out = 0x13a2; return 1;
case 0xab73: *out = 0x13a3; return 1;
case 0xab74: *out = 0x13a4; return 1;
case 0xab75: *out = 0x13a5; return 1;
case 0xab76: *out = 0x13a6; return 1;
case 0xab77: *out = 0x13a7; return 1;
case 0xab78: *out = 0x13a8; return 1;
case 0xab79: *out = 0x13a9; return 1;
case 0xab7a: *out = 0x13aa; return 1;
case 0xab7b: *out = 0x13ab; return 1;
case 0xab7c: *out = 0x13ac; return 1;
case 0xab7d: *out = 0x13ad; return 1;
case 0xab7e: *out = 0x13ae; return 1;
case 0xab7f: *out = 0x13af; return 1;
case 0xab80: *out = 0x13b0; return 1;
case 0xab81: *out = 0x13b1; return 1;
case 0xab82: *out = 0x13b2; return 1;
case 0xab83: *out = 0x13b3; return 1;
case 0xab84: *out = 0x13b4; return 1;
case 0xab85: *out = 0x13b5; return 1;
case 0xab86: *out = 0x13b6; return 1;
case 0xab87: *out = 0x13b7; return 1;
case 0xab88: *out = 0x13b8; return 1;
case 0xab89: *out = 0x13b9; return 1;
case 0xab8a: *out = 0x13ba; return 1;
case 0xab8b: *out = 0x13bb; return 1;
case 0xab8c: *out = 0x13bc; return 1;
case 0xab8d: *out = 0x13bd; return 1;
case 0xab8e: *out = 0x13be; return 1;
case 0xab8f: *out = 0x13bf; return 1;
case 0xab90: *out = 0x13c0; return 1;
case 0xab91: *out = 0x13c1; return 1;
case 0xab92: *out = 0x13c2; return 1;
case 0xab93: *out = 0x13c3; return 1;
case 0xab94: *out = 0x13c4; return 1;
case 0xab95: *out = 0x13c5; return 1;
case 0xab96: *out = 0x13c6; return 1;
case 0xab97: *out = 0x13c7; return 1;
case 0xab98: *out = 0x13c8; return 1;
case 0xab99: *out = 0x13c9; return 1;
case 0xab9a: *out = 0x13ca; return 1;
case 0xab9b: *out = 0x13cb; return 1;
case 0xab9c: *out = 0x13cc; return 1;
case 0xab9d: *out = 0x13cd; return 1;
case 0xab9e: *out = 0x13ce; return 1;
case 0xab9f: *out = 0x13cf; return 1;
case 0xaba0: *out = 0x13d0; return 1;
case 0xaba1: *out = 0x13d1; return 1;
case 0xaba2: *out = 0x13d2; return 1;
case 0xaba3: *out = 0x13d3; return 1;
case 0xaba4: *out = 0x13d4; return 1;
case 0xaba5: *out = 0x13d5; return 1;
case 0xaba6: *out = 0x13d6; return 1;
case 0xaba7: *out = 0x13d7; return 1;
case 0xaba8: *out = 0x13d8; return 1;
case 0xaba9: *out = 0x13d9; return 1;
case 0xabaa: *out = 0x13da; return 1;
case 0xabab: *out = 0x13db; return 1;
case 0xabac: *out = 0x13dc; return 1;
case 0xabad: *out = 0x13dd; return 1;
case 0xabae: *out = 0x13de; return 1;
case 0xabaf: *out = 0x13df; return 1;
case 0xabb0: *out = 0x13e0; return 1;
case 0xabb1: *out = 0x13e1; return 1;
case 0xabb2: *out = 0x13e2; return 1;
case 0xabb3: *out = 0x13e3; return 1;
case 0xabb4: *out = 0x13e4; return 1;
case 0xabb5: *out = 0x13e5; return 1;
case 0xabb6: *out = 0x13e6; return 1;
case 0xabb7: *out = 0x13e7; return 1;
case 0xabb8: *out = 0x13e8; return 1;
case 0xabb9: *out = 0x13e9; return 1;
case 0xabba: *out = 0x13ea; return 1;
case 0xabbb: *out = 0x13eb; return 1;
case 0xabbc: *out = 0x13ec; return 1;
case 0xabbd: *out = 0x13ed; return 1;
case 0xabbe: *out = 0x13ee; return 1;
case 0xabbf: *out = 0x13ef; return 1;
case 0xfb00: out[ 0 ] = 0x66; out[ 1 ] = 0x66; return 2; case 0xfb00: out[ 0 ] = 0x66; out[ 1 ] = 0x66; return 2;
case 0xfb01: out[ 0 ] = 0x66; out[ 1 ] = 0x69; return 2; case 0xfb01: out[ 0 ] = 0x66; out[ 1 ] = 0x69; return 2;
case 0xfb02: out[ 0 ] = 0x66; out[ 1 ] = 0x6c; return 2; case 0xfb02: out[ 0 ] = 0x66; out[ 1 ] = 0x6c; return 2;
@ -1123,6 +1316,226 @@ size_t foldCase( wchar in, wchar * out )
case 0x10425: *out = 0x1044d; return 1; case 0x10425: *out = 0x1044d; return 1;
case 0x10426: *out = 0x1044e; return 1; case 0x10426: *out = 0x1044e; return 1;
case 0x10427: *out = 0x1044f; return 1; case 0x10427: *out = 0x1044f; return 1;
case 0x104b0: *out = 0x104d8; return 1;
case 0x104b1: *out = 0x104d9; return 1;
case 0x104b2: *out = 0x104da; return 1;
case 0x104b3: *out = 0x104db; return 1;
case 0x104b4: *out = 0x104dc; return 1;
case 0x104b5: *out = 0x104dd; return 1;
case 0x104b6: *out = 0x104de; return 1;
case 0x104b7: *out = 0x104df; return 1;
case 0x104b8: *out = 0x104e0; return 1;
case 0x104b9: *out = 0x104e1; return 1;
case 0x104ba: *out = 0x104e2; return 1;
case 0x104bb: *out = 0x104e3; return 1;
case 0x104bc: *out = 0x104e4; return 1;
case 0x104bd: *out = 0x104e5; return 1;
case 0x104be: *out = 0x104e6; return 1;
case 0x104bf: *out = 0x104e7; return 1;
case 0x104c0: *out = 0x104e8; return 1;
case 0x104c1: *out = 0x104e9; return 1;
case 0x104c2: *out = 0x104ea; return 1;
case 0x104c3: *out = 0x104eb; return 1;
case 0x104c4: *out = 0x104ec; return 1;
case 0x104c5: *out = 0x104ed; return 1;
case 0x104c6: *out = 0x104ee; return 1;
case 0x104c7: *out = 0x104ef; return 1;
case 0x104c8: *out = 0x104f0; return 1;
case 0x104c9: *out = 0x104f1; return 1;
case 0x104ca: *out = 0x104f2; return 1;
case 0x104cb: *out = 0x104f3; return 1;
case 0x104cc: *out = 0x104f4; return 1;
case 0x104cd: *out = 0x104f5; return 1;
case 0x104ce: *out = 0x104f6; return 1;
case 0x104cf: *out = 0x104f7; return 1;
case 0x104d0: *out = 0x104f8; return 1;
case 0x104d1: *out = 0x104f9; return 1;
case 0x104d2: *out = 0x104fa; return 1;
case 0x104d3: *out = 0x104fb; return 1;
case 0x10570: *out = 0x10597; return 1;
case 0x10571: *out = 0x10598; return 1;
case 0x10572: *out = 0x10599; return 1;
case 0x10573: *out = 0x1059a; return 1;
case 0x10574: *out = 0x1059b; return 1;
case 0x10575: *out = 0x1059c; return 1;
case 0x10576: *out = 0x1059d; return 1;
case 0x10577: *out = 0x1059e; return 1;
case 0x10578: *out = 0x1059f; return 1;
case 0x10579: *out = 0x105a0; return 1;
case 0x1057a: *out = 0x105a1; return 1;
case 0x1057c: *out = 0x105a3; return 1;
case 0x1057d: *out = 0x105a4; return 1;
case 0x1057e: *out = 0x105a5; return 1;
case 0x1057f: *out = 0x105a6; return 1;
case 0x10580: *out = 0x105a7; return 1;
case 0x10581: *out = 0x105a8; return 1;
case 0x10582: *out = 0x105a9; return 1;
case 0x10583: *out = 0x105aa; return 1;
case 0x10584: *out = 0x105ab; return 1;
case 0x10585: *out = 0x105ac; return 1;
case 0x10586: *out = 0x105ad; return 1;
case 0x10587: *out = 0x105ae; return 1;
case 0x10588: *out = 0x105af; return 1;
case 0x10589: *out = 0x105b0; return 1;
case 0x1058a: *out = 0x105b1; return 1;
case 0x1058c: *out = 0x105b3; return 1;
case 0x1058d: *out = 0x105b4; return 1;
case 0x1058e: *out = 0x105b5; return 1;
case 0x1058f: *out = 0x105b6; return 1;
case 0x10590: *out = 0x105b7; return 1;
case 0x10591: *out = 0x105b8; return 1;
case 0x10592: *out = 0x105b9; return 1;
case 0x10594: *out = 0x105bb; return 1;
case 0x10595: *out = 0x105bc; return 1;
case 0x10c80: *out = 0x10cc0; return 1;
case 0x10c81: *out = 0x10cc1; return 1;
case 0x10c82: *out = 0x10cc2; return 1;
case 0x10c83: *out = 0x10cc3; return 1;
case 0x10c84: *out = 0x10cc4; return 1;
case 0x10c85: *out = 0x10cc5; return 1;
case 0x10c86: *out = 0x10cc6; return 1;
case 0x10c87: *out = 0x10cc7; return 1;
case 0x10c88: *out = 0x10cc8; return 1;
case 0x10c89: *out = 0x10cc9; return 1;
case 0x10c8a: *out = 0x10cca; return 1;
case 0x10c8b: *out = 0x10ccb; return 1;
case 0x10c8c: *out = 0x10ccc; return 1;
case 0x10c8d: *out = 0x10ccd; return 1;
case 0x10c8e: *out = 0x10cce; return 1;
case 0x10c8f: *out = 0x10ccf; return 1;
case 0x10c90: *out = 0x10cd0; return 1;
case 0x10c91: *out = 0x10cd1; return 1;
case 0x10c92: *out = 0x10cd2; return 1;
case 0x10c93: *out = 0x10cd3; return 1;
case 0x10c94: *out = 0x10cd4; return 1;
case 0x10c95: *out = 0x10cd5; return 1;
case 0x10c96: *out = 0x10cd6; return 1;
case 0x10c97: *out = 0x10cd7; return 1;
case 0x10c98: *out = 0x10cd8; return 1;
case 0x10c99: *out = 0x10cd9; return 1;
case 0x10c9a: *out = 0x10cda; return 1;
case 0x10c9b: *out = 0x10cdb; return 1;
case 0x10c9c: *out = 0x10cdc; return 1;
case 0x10c9d: *out = 0x10cdd; return 1;
case 0x10c9e: *out = 0x10cde; return 1;
case 0x10c9f: *out = 0x10cdf; return 1;
case 0x10ca0: *out = 0x10ce0; return 1;
case 0x10ca1: *out = 0x10ce1; return 1;
case 0x10ca2: *out = 0x10ce2; return 1;
case 0x10ca3: *out = 0x10ce3; return 1;
case 0x10ca4: *out = 0x10ce4; return 1;
case 0x10ca5: *out = 0x10ce5; return 1;
case 0x10ca6: *out = 0x10ce6; return 1;
case 0x10ca7: *out = 0x10ce7; return 1;
case 0x10ca8: *out = 0x10ce8; return 1;
case 0x10ca9: *out = 0x10ce9; return 1;
case 0x10caa: *out = 0x10cea; return 1;
case 0x10cab: *out = 0x10ceb; return 1;
case 0x10cac: *out = 0x10cec; return 1;
case 0x10cad: *out = 0x10ced; return 1;
case 0x10cae: *out = 0x10cee; return 1;
case 0x10caf: *out = 0x10cef; return 1;
case 0x10cb0: *out = 0x10cf0; return 1;
case 0x10cb1: *out = 0x10cf1; return 1;
case 0x10cb2: *out = 0x10cf2; return 1;
case 0x118a0: *out = 0x118c0; return 1;
case 0x118a1: *out = 0x118c1; return 1;
case 0x118a2: *out = 0x118c2; return 1;
case 0x118a3: *out = 0x118c3; return 1;
case 0x118a4: *out = 0x118c4; return 1;
case 0x118a5: *out = 0x118c5; return 1;
case 0x118a6: *out = 0x118c6; return 1;
case 0x118a7: *out = 0x118c7; return 1;
case 0x118a8: *out = 0x118c8; return 1;
case 0x118a9: *out = 0x118c9; return 1;
case 0x118aa: *out = 0x118ca; return 1;
case 0x118ab: *out = 0x118cb; return 1;
case 0x118ac: *out = 0x118cc; return 1;
case 0x118ad: *out = 0x118cd; return 1;
case 0x118ae: *out = 0x118ce; return 1;
case 0x118af: *out = 0x118cf; return 1;
case 0x118b0: *out = 0x118d0; return 1;
case 0x118b1: *out = 0x118d1; return 1;
case 0x118b2: *out = 0x118d2; return 1;
case 0x118b3: *out = 0x118d3; return 1;
case 0x118b4: *out = 0x118d4; return 1;
case 0x118b5: *out = 0x118d5; return 1;
case 0x118b6: *out = 0x118d6; return 1;
case 0x118b7: *out = 0x118d7; return 1;
case 0x118b8: *out = 0x118d8; return 1;
case 0x118b9: *out = 0x118d9; return 1;
case 0x118ba: *out = 0x118da; return 1;
case 0x118bb: *out = 0x118db; return 1;
case 0x118bc: *out = 0x118dc; return 1;
case 0x118bd: *out = 0x118dd; return 1;
case 0x118be: *out = 0x118de; return 1;
case 0x118bf: *out = 0x118df; return 1;
case 0x16e40: *out = 0x16e60; return 1;
case 0x16e41: *out = 0x16e61; return 1;
case 0x16e42: *out = 0x16e62; return 1;
case 0x16e43: *out = 0x16e63; return 1;
case 0x16e44: *out = 0x16e64; return 1;
case 0x16e45: *out = 0x16e65; return 1;
case 0x16e46: *out = 0x16e66; return 1;
case 0x16e47: *out = 0x16e67; return 1;
case 0x16e48: *out = 0x16e68; return 1;
case 0x16e49: *out = 0x16e69; return 1;
case 0x16e4a: *out = 0x16e6a; return 1;
case 0x16e4b: *out = 0x16e6b; return 1;
case 0x16e4c: *out = 0x16e6c; return 1;
case 0x16e4d: *out = 0x16e6d; return 1;
case 0x16e4e: *out = 0x16e6e; return 1;
case 0x16e4f: *out = 0x16e6f; return 1;
case 0x16e50: *out = 0x16e70; return 1;
case 0x16e51: *out = 0x16e71; return 1;
case 0x16e52: *out = 0x16e72; return 1;
case 0x16e53: *out = 0x16e73; return 1;
case 0x16e54: *out = 0x16e74; return 1;
case 0x16e55: *out = 0x16e75; return 1;
case 0x16e56: *out = 0x16e76; return 1;
case 0x16e57: *out = 0x16e77; return 1;
case 0x16e58: *out = 0x16e78; return 1;
case 0x16e59: *out = 0x16e79; return 1;
case 0x16e5a: *out = 0x16e7a; return 1;
case 0x16e5b: *out = 0x16e7b; return 1;
case 0x16e5c: *out = 0x16e7c; return 1;
case 0x16e5d: *out = 0x16e7d; return 1;
case 0x16e5e: *out = 0x16e7e; return 1;
case 0x16e5f: *out = 0x16e7f; return 1;
case 0x1e900: *out = 0x1e922; return 1;
case 0x1e901: *out = 0x1e923; return 1;
case 0x1e902: *out = 0x1e924; return 1;
case 0x1e903: *out = 0x1e925; return 1;
case 0x1e904: *out = 0x1e926; return 1;
case 0x1e905: *out = 0x1e927; return 1;
case 0x1e906: *out = 0x1e928; return 1;
case 0x1e907: *out = 0x1e929; return 1;
case 0x1e908: *out = 0x1e92a; return 1;
case 0x1e909: *out = 0x1e92b; return 1;
case 0x1e90a: *out = 0x1e92c; return 1;
case 0x1e90b: *out = 0x1e92d; return 1;
case 0x1e90c: *out = 0x1e92e; return 1;
case 0x1e90d: *out = 0x1e92f; return 1;
case 0x1e90e: *out = 0x1e930; return 1;
case 0x1e90f: *out = 0x1e931; return 1;
case 0x1e910: *out = 0x1e932; return 1;
case 0x1e911: *out = 0x1e933; return 1;
case 0x1e912: *out = 0x1e934; return 1;
case 0x1e913: *out = 0x1e935; return 1;
case 0x1e914: *out = 0x1e936; return 1;
case 0x1e915: *out = 0x1e937; return 1;
case 0x1e916: *out = 0x1e938; return 1;
case 0x1e917: *out = 0x1e939; return 1;
case 0x1e918: *out = 0x1e93a; return 1;
case 0x1e919: *out = 0x1e93b; return 1;
case 0x1e91a: *out = 0x1e93c; return 1;
case 0x1e91b: *out = 0x1e93d; return 1;
case 0x1e91c: *out = 0x1e93e; return 1;
case 0x1e91d: *out = 0x1e93f; return 1;
case 0x1e91e: *out = 0x1e940; return 1;
case 0x1e91f: *out = 0x1e941; return 1;
case 0x1e920: *out = 0x1e942; return 1;
case 0x1e921: *out = 0x1e943; return 1;
default: *out = in; return 1; default: *out = in; return 1;
} }
} }
@ -1362,6 +1775,7 @@ wchar foldCaseSimple( wchar in )
case 0x370: return 0x371; case 0x370: return 0x371;
case 0x372: return 0x373; case 0x372: return 0x373;
case 0x376: return 0x377; case 0x376: return 0x377;
case 0x37f: return 0x3f3;
case 0x386: return 0x3ac; case 0x386: return 0x3ac;
case 0x388: return 0x3ad; case 0x388: return 0x3ad;
case 0x389: return 0x3ae; case 0x389: return 0x3ae;
@ -1566,6 +1980,11 @@ wchar foldCaseSimple( wchar in )
case 0x520: return 0x521; case 0x520: return 0x521;
case 0x522: return 0x523; case 0x522: return 0x523;
case 0x524: return 0x525; case 0x524: return 0x525;
case 0x526: return 0x527;
case 0x528: return 0x529;
case 0x52a: return 0x52b;
case 0x52c: return 0x52d;
case 0x52e: return 0x52f;
case 0x531: return 0x561; case 0x531: return 0x561;
case 0x532: return 0x562; case 0x532: return 0x562;
case 0x533: return 0x563; case 0x533: return 0x563;
@ -1642,6 +2061,69 @@ wchar foldCaseSimple( wchar in )
case 0x10c3: return 0x2d23; case 0x10c3: return 0x2d23;
case 0x10c4: return 0x2d24; case 0x10c4: return 0x2d24;
case 0x10c5: return 0x2d25; case 0x10c5: return 0x2d25;
case 0x10c7: return 0x2d27;
case 0x10cd: return 0x2d2d;
case 0x13f8: return 0x13f0;
case 0x13f9: return 0x13f1;
case 0x13fa: return 0x13f2;
case 0x13fb: return 0x13f3;
case 0x13fc: return 0x13f4;
case 0x13fd: return 0x13f5;
case 0x1c80: return 0x432;
case 0x1c81: return 0x434;
case 0x1c82: return 0x43e;
case 0x1c83: return 0x441;
case 0x1c84: return 0x442;
case 0x1c85: return 0x442;
case 0x1c86: return 0x44a;
case 0x1c87: return 0x463;
case 0x1c88: return 0xa64b;
case 0x1c90: return 0x10d0;
case 0x1c91: return 0x10d1;
case 0x1c92: return 0x10d2;
case 0x1c93: return 0x10d3;
case 0x1c94: return 0x10d4;
case 0x1c95: return 0x10d5;
case 0x1c96: return 0x10d6;
case 0x1c97: return 0x10d7;
case 0x1c98: return 0x10d8;
case 0x1c99: return 0x10d9;
case 0x1c9a: return 0x10da;
case 0x1c9b: return 0x10db;
case 0x1c9c: return 0x10dc;
case 0x1c9d: return 0x10dd;
case 0x1c9e: return 0x10de;
case 0x1c9f: return 0x10df;
case 0x1ca0: return 0x10e0;
case 0x1ca1: return 0x10e1;
case 0x1ca2: return 0x10e2;
case 0x1ca3: return 0x10e3;
case 0x1ca4: return 0x10e4;
case 0x1ca5: return 0x10e5;
case 0x1ca6: return 0x10e6;
case 0x1ca7: return 0x10e7;
case 0x1ca8: return 0x10e8;
case 0x1ca9: return 0x10e9;
case 0x1caa: return 0x10ea;
case 0x1cab: return 0x10eb;
case 0x1cac: return 0x10ec;
case 0x1cad: return 0x10ed;
case 0x1cae: return 0x10ee;
case 0x1caf: return 0x10ef;
case 0x1cb0: return 0x10f0;
case 0x1cb1: return 0x10f1;
case 0x1cb2: return 0x10f2;
case 0x1cb3: return 0x10f3;
case 0x1cb4: return 0x10f4;
case 0x1cb5: return 0x10f5;
case 0x1cb6: return 0x10f6;
case 0x1cb7: return 0x10f7;
case 0x1cb8: return 0x10f8;
case 0x1cb9: return 0x10f9;
case 0x1cba: return 0x10fa;
case 0x1cbd: return 0x10fd;
case 0x1cbe: return 0x10fe;
case 0x1cbf: return 0x10ff;
case 0x1e00: return 0x1e01; case 0x1e00: return 0x1e01;
case 0x1e02: return 0x1e03; case 0x1e02: return 0x1e03;
case 0x1e04: return 0x1e05; case 0x1e04: return 0x1e05;
@ -1958,6 +2440,7 @@ wchar foldCaseSimple( wchar in )
case 0x2c2c: return 0x2c5c; case 0x2c2c: return 0x2c5c;
case 0x2c2d: return 0x2c5d; case 0x2c2d: return 0x2c5d;
case 0x2c2e: return 0x2c5e; case 0x2c2e: return 0x2c5e;
case 0x2c2f: return 0x2c5f;
case 0x2c60: return 0x2c61; case 0x2c60: return 0x2c61;
case 0x2c62: return 0x26b; case 0x2c62: return 0x26b;
case 0x2c63: return 0x1d7d; case 0x2c63: return 0x1d7d;
@ -2025,6 +2508,7 @@ wchar foldCaseSimple( wchar in )
case 0x2ce2: return 0x2ce3; case 0x2ce2: return 0x2ce3;
case 0x2ceb: return 0x2cec; case 0x2ceb: return 0x2cec;
case 0x2ced: return 0x2cee; case 0x2ced: return 0x2cee;
case 0x2cf2: return 0x2cf3;
case 0xa640: return 0xa641; case 0xa640: return 0xa641;
case 0xa642: return 0xa643; case 0xa642: return 0xa643;
case 0xa644: return 0xa645; case 0xa644: return 0xa645;
@ -2041,6 +2525,7 @@ wchar foldCaseSimple( wchar in )
case 0xa65a: return 0xa65b; case 0xa65a: return 0xa65b;
case 0xa65c: return 0xa65d; case 0xa65c: return 0xa65d;
case 0xa65e: return 0xa65f; case 0xa65e: return 0xa65f;
case 0xa660: return 0xa661;
case 0xa662: return 0xa663; case 0xa662: return 0xa663;
case 0xa664: return 0xa665; case 0xa664: return 0xa665;
case 0xa666: return 0xa667; case 0xa666: return 0xa667;
@ -2059,6 +2544,8 @@ wchar foldCaseSimple( wchar in )
case 0xa692: return 0xa693; case 0xa692: return 0xa693;
case 0xa694: return 0xa695; case 0xa694: return 0xa695;
case 0xa696: return 0xa697; case 0xa696: return 0xa697;
case 0xa698: return 0xa699;
case 0xa69a: return 0xa69b;
case 0xa722: return 0xa723; case 0xa722: return 0xa723;
case 0xa724: return 0xa725; case 0xa724: return 0xa725;
case 0xa726: return 0xa727; case 0xa726: return 0xa727;
@ -2106,6 +2593,125 @@ wchar foldCaseSimple( wchar in )
case 0xa784: return 0xa785; case 0xa784: return 0xa785;
case 0xa786: return 0xa787; case 0xa786: return 0xa787;
case 0xa78b: return 0xa78c; case 0xa78b: return 0xa78c;
case 0xa78d: return 0x265;
case 0xa790: return 0xa791;
case 0xa792: return 0xa793;
case 0xa796: return 0xa797;
case 0xa798: return 0xa799;
case 0xa79a: return 0xa79b;
case 0xa79c: return 0xa79d;
case 0xa79e: return 0xa79f;
case 0xa7a0: return 0xa7a1;
case 0xa7a2: return 0xa7a3;
case 0xa7a4: return 0xa7a5;
case 0xa7a6: return 0xa7a7;
case 0xa7a8: return 0xa7a9;
case 0xa7aa: return 0x266;
case 0xa7ab: return 0x25c;
case 0xa7ac: return 0x261;
case 0xa7ad: return 0x26c;
case 0xa7ae: return 0x26a;
case 0xa7b0: return 0x29e;
case 0xa7b1: return 0x287;
case 0xa7b2: return 0x29d;
case 0xa7b3: return 0xab53;
case 0xa7b4: return 0xa7b5;
case 0xa7b6: return 0xa7b7;
case 0xa7b8: return 0xa7b9;
case 0xa7ba: return 0xa7bb;
case 0xa7bc: return 0xa7bd;
case 0xa7be: return 0xa7bf;
case 0xa7c0: return 0xa7c1;
case 0xa7c2: return 0xa7c3;
case 0xa7c4: return 0xa794;
case 0xa7c5: return 0x282;
case 0xa7c6: return 0x1d8e;
case 0xa7c7: return 0xa7c8;
case 0xa7c9: return 0xa7ca;
case 0xa7d0: return 0xa7d1;
case 0xa7d6: return 0xa7d7;
case 0xa7d8: return 0xa7d9;
case 0xa7f5: return 0xa7f6;
case 0xab70: return 0x13a0;
case 0xab71: return 0x13a1;
case 0xab72: return 0x13a2;
case 0xab73: return 0x13a3;
case 0xab74: return 0x13a4;
case 0xab75: return 0x13a5;
case 0xab76: return 0x13a6;
case 0xab77: return 0x13a7;
case 0xab78: return 0x13a8;
case 0xab79: return 0x13a9;
case 0xab7a: return 0x13aa;
case 0xab7b: return 0x13ab;
case 0xab7c: return 0x13ac;
case 0xab7d: return 0x13ad;
case 0xab7e: return 0x13ae;
case 0xab7f: return 0x13af;
case 0xab80: return 0x13b0;
case 0xab81: return 0x13b1;
case 0xab82: return 0x13b2;
case 0xab83: return 0x13b3;
case 0xab84: return 0x13b4;
case 0xab85: return 0x13b5;
case 0xab86: return 0x13b6;
case 0xab87: return 0x13b7;
case 0xab88: return 0x13b8;
case 0xab89: return 0x13b9;
case 0xab8a: return 0x13ba;
case 0xab8b: return 0x13bb;
case 0xab8c: return 0x13bc;
case 0xab8d: return 0x13bd;
case 0xab8e: return 0x13be;
case 0xab8f: return 0x13bf;
case 0xab90: return 0x13c0;
case 0xab91: return 0x13c1;
case 0xab92: return 0x13c2;
case 0xab93: return 0x13c3;
case 0xab94: return 0x13c4;
case 0xab95: return 0x13c5;
case 0xab96: return 0x13c6;
case 0xab97: return 0x13c7;
case 0xab98: return 0x13c8;
case 0xab99: return 0x13c9;
case 0xab9a: return 0x13ca;
case 0xab9b: return 0x13cb;
case 0xab9c: return 0x13cc;
case 0xab9d: return 0x13cd;
case 0xab9e: return 0x13ce;
case 0xab9f: return 0x13cf;
case 0xaba0: return 0x13d0;
case 0xaba1: return 0x13d1;
case 0xaba2: return 0x13d2;
case 0xaba3: return 0x13d3;
case 0xaba4: return 0x13d4;
case 0xaba5: return 0x13d5;
case 0xaba6: return 0x13d6;
case 0xaba7: return 0x13d7;
case 0xaba8: return 0x13d8;
case 0xaba9: return 0x13d9;
case 0xabaa: return 0x13da;
case 0xabab: return 0x13db;
case 0xabac: return 0x13dc;
case 0xabad: return 0x13dd;
case 0xabae: return 0x13de;
case 0xabaf: return 0x13df;
case 0xabb0: return 0x13e0;
case 0xabb1: return 0x13e1;
case 0xabb2: return 0x13e2;
case 0xabb3: return 0x13e3;
case 0xabb4: return 0x13e4;
case 0xabb5: return 0x13e5;
case 0xabb6: return 0x13e6;
case 0xabb7: return 0x13e7;
case 0xabb8: return 0x13e8;
case 0xabb9: return 0x13e9;
case 0xabba: return 0x13ea;
case 0xabbb: return 0x13eb;
case 0xabbc: return 0x13ec;
case 0xabbd: return 0x13ed;
case 0xabbe: return 0x13ee;
case 0xabbf: return 0x13ef;
case 0xff21: return 0xff41; case 0xff21: return 0xff41;
case 0xff22: return 0xff42; case 0xff22: return 0xff42;
case 0xff23: return 0xff43; case 0xff23: return 0xff43;
@ -2172,6 +2778,226 @@ wchar foldCaseSimple( wchar in )
case 0x10425: return 0x1044d; case 0x10425: return 0x1044d;
case 0x10426: return 0x1044e; case 0x10426: return 0x1044e;
case 0x10427: return 0x1044f; case 0x10427: return 0x1044f;
case 0x104b0: return 0x104d8;
case 0x104b1: return 0x104d9;
case 0x104b2: return 0x104da;
case 0x104b3: return 0x104db;
case 0x104b4: return 0x104dc;
case 0x104b5: return 0x104dd;
case 0x104b6: return 0x104de;
case 0x104b7: return 0x104df;
case 0x104b8: return 0x104e0;
case 0x104b9: return 0x104e1;
case 0x104ba: return 0x104e2;
case 0x104bb: return 0x104e3;
case 0x104bc: return 0x104e4;
case 0x104bd: return 0x104e5;
case 0x104be: return 0x104e6;
case 0x104bf: return 0x104e7;
case 0x104c0: return 0x104e8;
case 0x104c1: return 0x104e9;
case 0x104c2: return 0x104ea;
case 0x104c3: return 0x104eb;
case 0x104c4: return 0x104ec;
case 0x104c5: return 0x104ed;
case 0x104c6: return 0x104ee;
case 0x104c7: return 0x104ef;
case 0x104c8: return 0x104f0;
case 0x104c9: return 0x104f1;
case 0x104ca: return 0x104f2;
case 0x104cb: return 0x104f3;
case 0x104cc: return 0x104f4;
case 0x104cd: return 0x104f5;
case 0x104ce: return 0x104f6;
case 0x104cf: return 0x104f7;
case 0x104d0: return 0x104f8;
case 0x104d1: return 0x104f9;
case 0x104d2: return 0x104fa;
case 0x104d3: return 0x104fb;
case 0x10570: return 0x10597;
case 0x10571: return 0x10598;
case 0x10572: return 0x10599;
case 0x10573: return 0x1059a;
case 0x10574: return 0x1059b;
case 0x10575: return 0x1059c;
case 0x10576: return 0x1059d;
case 0x10577: return 0x1059e;
case 0x10578: return 0x1059f;
case 0x10579: return 0x105a0;
case 0x1057a: return 0x105a1;
case 0x1057c: return 0x105a3;
case 0x1057d: return 0x105a4;
case 0x1057e: return 0x105a5;
case 0x1057f: return 0x105a6;
case 0x10580: return 0x105a7;
case 0x10581: return 0x105a8;
case 0x10582: return 0x105a9;
case 0x10583: return 0x105aa;
case 0x10584: return 0x105ab;
case 0x10585: return 0x105ac;
case 0x10586: return 0x105ad;
case 0x10587: return 0x105ae;
case 0x10588: return 0x105af;
case 0x10589: return 0x105b0;
case 0x1058a: return 0x105b1;
case 0x1058c: return 0x105b3;
case 0x1058d: return 0x105b4;
case 0x1058e: return 0x105b5;
case 0x1058f: return 0x105b6;
case 0x10590: return 0x105b7;
case 0x10591: return 0x105b8;
case 0x10592: return 0x105b9;
case 0x10594: return 0x105bb;
case 0x10595: return 0x105bc;
case 0x10c80: return 0x10cc0;
case 0x10c81: return 0x10cc1;
case 0x10c82: return 0x10cc2;
case 0x10c83: return 0x10cc3;
case 0x10c84: return 0x10cc4;
case 0x10c85: return 0x10cc5;
case 0x10c86: return 0x10cc6;
case 0x10c87: return 0x10cc7;
case 0x10c88: return 0x10cc8;
case 0x10c89: return 0x10cc9;
case 0x10c8a: return 0x10cca;
case 0x10c8b: return 0x10ccb;
case 0x10c8c: return 0x10ccc;
case 0x10c8d: return 0x10ccd;
case 0x10c8e: return 0x10cce;
case 0x10c8f: return 0x10ccf;
case 0x10c90: return 0x10cd0;
case 0x10c91: return 0x10cd1;
case 0x10c92: return 0x10cd2;
case 0x10c93: return 0x10cd3;
case 0x10c94: return 0x10cd4;
case 0x10c95: return 0x10cd5;
case 0x10c96: return 0x10cd6;
case 0x10c97: return 0x10cd7;
case 0x10c98: return 0x10cd8;
case 0x10c99: return 0x10cd9;
case 0x10c9a: return 0x10cda;
case 0x10c9b: return 0x10cdb;
case 0x10c9c: return 0x10cdc;
case 0x10c9d: return 0x10cdd;
case 0x10c9e: return 0x10cde;
case 0x10c9f: return 0x10cdf;
case 0x10ca0: return 0x10ce0;
case 0x10ca1: return 0x10ce1;
case 0x10ca2: return 0x10ce2;
case 0x10ca3: return 0x10ce3;
case 0x10ca4: return 0x10ce4;
case 0x10ca5: return 0x10ce5;
case 0x10ca6: return 0x10ce6;
case 0x10ca7: return 0x10ce7;
case 0x10ca8: return 0x10ce8;
case 0x10ca9: return 0x10ce9;
case 0x10caa: return 0x10cea;
case 0x10cab: return 0x10ceb;
case 0x10cac: return 0x10cec;
case 0x10cad: return 0x10ced;
case 0x10cae: return 0x10cee;
case 0x10caf: return 0x10cef;
case 0x10cb0: return 0x10cf0;
case 0x10cb1: return 0x10cf1;
case 0x10cb2: return 0x10cf2;
case 0x118a0: return 0x118c0;
case 0x118a1: return 0x118c1;
case 0x118a2: return 0x118c2;
case 0x118a3: return 0x118c3;
case 0x118a4: return 0x118c4;
case 0x118a5: return 0x118c5;
case 0x118a6: return 0x118c6;
case 0x118a7: return 0x118c7;
case 0x118a8: return 0x118c8;
case 0x118a9: return 0x118c9;
case 0x118aa: return 0x118ca;
case 0x118ab: return 0x118cb;
case 0x118ac: return 0x118cc;
case 0x118ad: return 0x118cd;
case 0x118ae: return 0x118ce;
case 0x118af: return 0x118cf;
case 0x118b0: return 0x118d0;
case 0x118b1: return 0x118d1;
case 0x118b2: return 0x118d2;
case 0x118b3: return 0x118d3;
case 0x118b4: return 0x118d4;
case 0x118b5: return 0x118d5;
case 0x118b6: return 0x118d6;
case 0x118b7: return 0x118d7;
case 0x118b8: return 0x118d8;
case 0x118b9: return 0x118d9;
case 0x118ba: return 0x118da;
case 0x118bb: return 0x118db;
case 0x118bc: return 0x118dc;
case 0x118bd: return 0x118dd;
case 0x118be: return 0x118de;
case 0x118bf: return 0x118df;
case 0x16e40: return 0x16e60;
case 0x16e41: return 0x16e61;
case 0x16e42: return 0x16e62;
case 0x16e43: return 0x16e63;
case 0x16e44: return 0x16e64;
case 0x16e45: return 0x16e65;
case 0x16e46: return 0x16e66;
case 0x16e47: return 0x16e67;
case 0x16e48: return 0x16e68;
case 0x16e49: return 0x16e69;
case 0x16e4a: return 0x16e6a;
case 0x16e4b: return 0x16e6b;
case 0x16e4c: return 0x16e6c;
case 0x16e4d: return 0x16e6d;
case 0x16e4e: return 0x16e6e;
case 0x16e4f: return 0x16e6f;
case 0x16e50: return 0x16e70;
case 0x16e51: return 0x16e71;
case 0x16e52: return 0x16e72;
case 0x16e53: return 0x16e73;
case 0x16e54: return 0x16e74;
case 0x16e55: return 0x16e75;
case 0x16e56: return 0x16e76;
case 0x16e57: return 0x16e77;
case 0x16e58: return 0x16e78;
case 0x16e59: return 0x16e79;
case 0x16e5a: return 0x16e7a;
case 0x16e5b: return 0x16e7b;
case 0x16e5c: return 0x16e7c;
case 0x16e5d: return 0x16e7d;
case 0x16e5e: return 0x16e7e;
case 0x16e5f: return 0x16e7f;
case 0x1e900: return 0x1e922;
case 0x1e901: return 0x1e923;
case 0x1e902: return 0x1e924;
case 0x1e903: return 0x1e925;
case 0x1e904: return 0x1e926;
case 0x1e905: return 0x1e927;
case 0x1e906: return 0x1e928;
case 0x1e907: return 0x1e929;
case 0x1e908: return 0x1e92a;
case 0x1e909: return 0x1e92b;
case 0x1e90a: return 0x1e92c;
case 0x1e90b: return 0x1e92d;
case 0x1e90c: return 0x1e92e;
case 0x1e90d: return 0x1e92f;
case 0x1e90e: return 0x1e930;
case 0x1e90f: return 0x1e931;
case 0x1e910: return 0x1e932;
case 0x1e911: return 0x1e933;
case 0x1e912: return 0x1e934;
case 0x1e913: return 0x1e935;
case 0x1e914: return 0x1e936;
case 0x1e915: return 0x1e937;
case 0x1e916: return 0x1e938;
case 0x1e917: return 0x1e939;
case 0x1e918: return 0x1e93a;
case 0x1e919: return 0x1e93b;
case 0x1e91a: return 0x1e93c;
case 0x1e91b: return 0x1e93d;
case 0x1e91c: return 0x1e93e;
case 0x1e91d: return 0x1e93f;
case 0x1e91e: return 0x1e940;
case 0x1e91f: return 0x1e941;
case 0x1e920: return 0x1e942;
case 0x1e921: return 0x1e943;
default: return in; default: return in;
} }
} }

View file

@ -1,10 +1,11 @@
# CaseFolding-5.2.0.txt # CaseFolding-15.0.0.txt
# Date: 2009-05-28, 23:02:34 GMT [MD] # Date: 2022-02-02, 23:35:35 GMT
# © 2022 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use, see https://www.unicode.org/terms_of_use.html
# #
# Unicode Character Database # Unicode Character Database
# Copyright (c) 1991-2009 Unicode, Inc. # For documentation, see https://www.unicode.org/reports/tr44/
# For terms of use, see http://www.unicode.org/terms_of_use.html
# For documentation, see http://www.unicode.org/reports/tr44/
# #
# Case Folding Properties # Case Folding Properties
# #
@ -23,9 +24,9 @@
# #
# NOTE: case folding does not preserve normalization formats! # NOTE: case folding does not preserve normalization formats!
# #
# For information on case folding, including how to have case folding # For information on case folding, including how to have case folding
# preserve normalization formats, see Section 3.13 Default Case Algorithms in # preserve normalization formats, see Section 3.13 Default Case Algorithms in
# The Unicode Standard, Version 5.0. # The Unicode Standard.
# #
# ================================================================================ # ================================================================================
# Format # Format
@ -52,7 +53,13 @@
# behavior. (The default option is to exclude them.) # behavior. (The default option is to exclude them.)
# #
# ================================================================= # =================================================================
# @missing 0000..10FFFF; <codepoint> #
# Property: Case_Folding
#
# All code points not explicitly listed for Case_Folding
# have the value C for the status field, and the code point itself for the mapping field.
#
# =================================================================
0041; C; 0061; # LATIN CAPITAL LETTER A 0041; C; 0061; # LATIN CAPITAL LETTER A
0042; C; 0062; # LATIN CAPITAL LETTER B 0042; C; 0062; # LATIN CAPITAL LETTER B
0043; C; 0063; # LATIN CAPITAL LETTER C 0043; C; 0063; # LATIN CAPITAL LETTER C
@ -290,6 +297,7 @@
0370; C; 0371; # GREEK CAPITAL LETTER HETA 0370; C; 0371; # GREEK CAPITAL LETTER HETA
0372; C; 0373; # GREEK CAPITAL LETTER ARCHAIC SAMPI 0372; C; 0373; # GREEK CAPITAL LETTER ARCHAIC SAMPI
0376; C; 0377; # GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA 0376; C; 0377; # GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA
037F; C; 03F3; # GREEK CAPITAL LETTER YOT
0386; C; 03AC; # GREEK CAPITAL LETTER ALPHA WITH TONOS 0386; C; 03AC; # GREEK CAPITAL LETTER ALPHA WITH TONOS
0388; C; 03AD; # GREEK CAPITAL LETTER EPSILON WITH TONOS 0388; C; 03AD; # GREEK CAPITAL LETTER EPSILON WITH TONOS
0389; C; 03AE; # GREEK CAPITAL LETTER ETA WITH TONOS 0389; C; 03AE; # GREEK CAPITAL LETTER ETA WITH TONOS
@ -496,6 +504,11 @@
0520; C; 0521; # CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK 0520; C; 0521; # CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK
0522; C; 0523; # CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK 0522; C; 0523; # CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK
0524; C; 0525; # CYRILLIC CAPITAL LETTER PE WITH DESCENDER 0524; C; 0525; # CYRILLIC CAPITAL LETTER PE WITH DESCENDER
0526; C; 0527; # CYRILLIC CAPITAL LETTER SHHA WITH DESCENDER
0528; C; 0529; # CYRILLIC CAPITAL LETTER EN WITH LEFT HOOK
052A; C; 052B; # CYRILLIC CAPITAL LETTER DZZHE
052C; C; 052D; # CYRILLIC CAPITAL LETTER DCHE
052E; C; 052F; # CYRILLIC CAPITAL LETTER EL WITH DESCENDER
0531; C; 0561; # ARMENIAN CAPITAL LETTER AYB 0531; C; 0561; # ARMENIAN CAPITAL LETTER AYB
0532; C; 0562; # ARMENIAN CAPITAL LETTER BEN 0532; C; 0562; # ARMENIAN CAPITAL LETTER BEN
0533; C; 0563; # ARMENIAN CAPITAL LETTER GIM 0533; C; 0563; # ARMENIAN CAPITAL LETTER GIM
@ -573,6 +586,69 @@
10C3; C; 2D23; # GEORGIAN CAPITAL LETTER WE 10C3; C; 2D23; # GEORGIAN CAPITAL LETTER WE
10C4; C; 2D24; # GEORGIAN CAPITAL LETTER HAR 10C4; C; 2D24; # GEORGIAN CAPITAL LETTER HAR
10C5; C; 2D25; # GEORGIAN CAPITAL LETTER HOE 10C5; C; 2D25; # GEORGIAN CAPITAL LETTER HOE
10C7; C; 2D27; # GEORGIAN CAPITAL LETTER YN
10CD; C; 2D2D; # GEORGIAN CAPITAL LETTER AEN
13F8; C; 13F0; # CHEROKEE SMALL LETTER YE
13F9; C; 13F1; # CHEROKEE SMALL LETTER YI
13FA; C; 13F2; # CHEROKEE SMALL LETTER YO
13FB; C; 13F3; # CHEROKEE SMALL LETTER YU
13FC; C; 13F4; # CHEROKEE SMALL LETTER YV
13FD; C; 13F5; # CHEROKEE SMALL LETTER MV
1C80; C; 0432; # CYRILLIC SMALL LETTER ROUNDED VE
1C81; C; 0434; # CYRILLIC SMALL LETTER LONG-LEGGED DE
1C82; C; 043E; # CYRILLIC SMALL LETTER NARROW O
1C83; C; 0441; # CYRILLIC SMALL LETTER WIDE ES
1C84; C; 0442; # CYRILLIC SMALL LETTER TALL TE
1C85; C; 0442; # CYRILLIC SMALL LETTER THREE-LEGGED TE
1C86; C; 044A; # CYRILLIC SMALL LETTER TALL HARD SIGN
1C87; C; 0463; # CYRILLIC SMALL LETTER TALL YAT
1C88; C; A64B; # CYRILLIC SMALL LETTER UNBLENDED UK
1C90; C; 10D0; # GEORGIAN MTAVRULI CAPITAL LETTER AN
1C91; C; 10D1; # GEORGIAN MTAVRULI CAPITAL LETTER BAN
1C92; C; 10D2; # GEORGIAN MTAVRULI CAPITAL LETTER GAN
1C93; C; 10D3; # GEORGIAN MTAVRULI CAPITAL LETTER DON
1C94; C; 10D4; # GEORGIAN MTAVRULI CAPITAL LETTER EN
1C95; C; 10D5; # GEORGIAN MTAVRULI CAPITAL LETTER VIN
1C96; C; 10D6; # GEORGIAN MTAVRULI CAPITAL LETTER ZEN
1C97; C; 10D7; # GEORGIAN MTAVRULI CAPITAL LETTER TAN
1C98; C; 10D8; # GEORGIAN MTAVRULI CAPITAL LETTER IN
1C99; C; 10D9; # GEORGIAN MTAVRULI CAPITAL LETTER KAN
1C9A; C; 10DA; # GEORGIAN MTAVRULI CAPITAL LETTER LAS
1C9B; C; 10DB; # GEORGIAN MTAVRULI CAPITAL LETTER MAN
1C9C; C; 10DC; # GEORGIAN MTAVRULI CAPITAL LETTER NAR
1C9D; C; 10DD; # GEORGIAN MTAVRULI CAPITAL LETTER ON
1C9E; C; 10DE; # GEORGIAN MTAVRULI CAPITAL LETTER PAR
1C9F; C; 10DF; # GEORGIAN MTAVRULI CAPITAL LETTER ZHAR
1CA0; C; 10E0; # GEORGIAN MTAVRULI CAPITAL LETTER RAE
1CA1; C; 10E1; # GEORGIAN MTAVRULI CAPITAL LETTER SAN
1CA2; C; 10E2; # GEORGIAN MTAVRULI CAPITAL LETTER TAR
1CA3; C; 10E3; # GEORGIAN MTAVRULI CAPITAL LETTER UN
1CA4; C; 10E4; # GEORGIAN MTAVRULI CAPITAL LETTER PHAR
1CA5; C; 10E5; # GEORGIAN MTAVRULI CAPITAL LETTER KHAR
1CA6; C; 10E6; # GEORGIAN MTAVRULI CAPITAL LETTER GHAN
1CA7; C; 10E7; # GEORGIAN MTAVRULI CAPITAL LETTER QAR
1CA8; C; 10E8; # GEORGIAN MTAVRULI CAPITAL LETTER SHIN
1CA9; C; 10E9; # GEORGIAN MTAVRULI CAPITAL LETTER CHIN
1CAA; C; 10EA; # GEORGIAN MTAVRULI CAPITAL LETTER CAN
1CAB; C; 10EB; # GEORGIAN MTAVRULI CAPITAL LETTER JIL
1CAC; C; 10EC; # GEORGIAN MTAVRULI CAPITAL LETTER CIL
1CAD; C; 10ED; # GEORGIAN MTAVRULI CAPITAL LETTER CHAR
1CAE; C; 10EE; # GEORGIAN MTAVRULI CAPITAL LETTER XAN
1CAF; C; 10EF; # GEORGIAN MTAVRULI CAPITAL LETTER JHAN
1CB0; C; 10F0; # GEORGIAN MTAVRULI CAPITAL LETTER HAE
1CB1; C; 10F1; # GEORGIAN MTAVRULI CAPITAL LETTER HE
1CB2; C; 10F2; # GEORGIAN MTAVRULI CAPITAL LETTER HIE
1CB3; C; 10F3; # GEORGIAN MTAVRULI CAPITAL LETTER WE
1CB4; C; 10F4; # GEORGIAN MTAVRULI CAPITAL LETTER HAR
1CB5; C; 10F5; # GEORGIAN MTAVRULI CAPITAL LETTER HOE
1CB6; C; 10F6; # GEORGIAN MTAVRULI CAPITAL LETTER FI
1CB7; C; 10F7; # GEORGIAN MTAVRULI CAPITAL LETTER YN
1CB8; C; 10F8; # GEORGIAN MTAVRULI CAPITAL LETTER ELIFI
1CB9; C; 10F9; # GEORGIAN MTAVRULI CAPITAL LETTER TURNED GAN
1CBA; C; 10FA; # GEORGIAN MTAVRULI CAPITAL LETTER AIN
1CBD; C; 10FD; # GEORGIAN MTAVRULI CAPITAL LETTER AEN
1CBE; C; 10FE; # GEORGIAN MTAVRULI CAPITAL LETTER HARD SIGN
1CBF; C; 10FF; # GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN
1E00; C; 1E01; # LATIN CAPITAL LETTER A WITH RING BELOW 1E00; C; 1E01; # LATIN CAPITAL LETTER A WITH RING BELOW
1E02; C; 1E03; # LATIN CAPITAL LETTER B WITH DOT ABOVE 1E02; C; 1E03; # LATIN CAPITAL LETTER B WITH DOT ABOVE
1E04; C; 1E05; # LATIN CAPITAL LETTER B WITH DOT BELOW 1E04; C; 1E05; # LATIN CAPITAL LETTER B WITH DOT BELOW
@ -974,6 +1050,7 @@
2C2C; C; 2C5C; # GLAGOLITIC CAPITAL LETTER SHTAPIC 2C2C; C; 2C5C; # GLAGOLITIC CAPITAL LETTER SHTAPIC
2C2D; C; 2C5D; # GLAGOLITIC CAPITAL LETTER TROKUTASTI A 2C2D; C; 2C5D; # GLAGOLITIC CAPITAL LETTER TROKUTASTI A
2C2E; C; 2C5E; # GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE 2C2E; C; 2C5E; # GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE
2C2F; C; 2C5F; # GLAGOLITIC CAPITAL LETTER CAUDATE CHRIVI
2C60; C; 2C61; # LATIN CAPITAL LETTER L WITH DOUBLE BAR 2C60; C; 2C61; # LATIN CAPITAL LETTER L WITH DOUBLE BAR
2C62; C; 026B; # LATIN CAPITAL LETTER L WITH MIDDLE TILDE 2C62; C; 026B; # LATIN CAPITAL LETTER L WITH MIDDLE TILDE
2C63; C; 1D7D; # LATIN CAPITAL LETTER P WITH STROKE 2C63; C; 1D7D; # LATIN CAPITAL LETTER P WITH STROKE
@ -1041,6 +1118,7 @@
2CE2; C; 2CE3; # COPTIC CAPITAL LETTER OLD NUBIAN WAU 2CE2; C; 2CE3; # COPTIC CAPITAL LETTER OLD NUBIAN WAU
2CEB; C; 2CEC; # COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI 2CEB; C; 2CEC; # COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI
2CED; C; 2CEE; # COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA 2CED; C; 2CEE; # COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA
2CF2; C; 2CF3; # COPTIC CAPITAL LETTER BOHAIRIC KHEI
A640; C; A641; # CYRILLIC CAPITAL LETTER ZEMLYA A640; C; A641; # CYRILLIC CAPITAL LETTER ZEMLYA
A642; C; A643; # CYRILLIC CAPITAL LETTER DZELO A642; C; A643; # CYRILLIC CAPITAL LETTER DZELO
A644; C; A645; # CYRILLIC CAPITAL LETTER REVERSED DZE A644; C; A645; # CYRILLIC CAPITAL LETTER REVERSED DZE
@ -1057,6 +1135,7 @@ A658; C; A659; # CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS
A65A; C; A65B; # CYRILLIC CAPITAL LETTER BLENDED YUS A65A; C; A65B; # CYRILLIC CAPITAL LETTER BLENDED YUS
A65C; C; A65D; # CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS A65C; C; A65D; # CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS
A65E; C; A65F; # CYRILLIC CAPITAL LETTER YN A65E; C; A65F; # CYRILLIC CAPITAL LETTER YN
A660; C; A661; # CYRILLIC CAPITAL LETTER REVERSED TSE
A662; C; A663; # CYRILLIC CAPITAL LETTER SOFT DE A662; C; A663; # CYRILLIC CAPITAL LETTER SOFT DE
A664; C; A665; # CYRILLIC CAPITAL LETTER SOFT EL A664; C; A665; # CYRILLIC CAPITAL LETTER SOFT EL
A666; C; A667; # CYRILLIC CAPITAL LETTER SOFT EM A666; C; A667; # CYRILLIC CAPITAL LETTER SOFT EM
@ -1075,6 +1154,8 @@ A690; C; A691; # CYRILLIC CAPITAL LETTER TSSE
A692; C; A693; # CYRILLIC CAPITAL LETTER TCHE A692; C; A693; # CYRILLIC CAPITAL LETTER TCHE
A694; C; A695; # CYRILLIC CAPITAL LETTER HWE A694; C; A695; # CYRILLIC CAPITAL LETTER HWE
A696; C; A697; # CYRILLIC CAPITAL LETTER SHWE A696; C; A697; # CYRILLIC CAPITAL LETTER SHWE
A698; C; A699; # CYRILLIC CAPITAL LETTER DOUBLE O
A69A; C; A69B; # CYRILLIC CAPITAL LETTER CROSSED O
A722; C; A723; # LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF A722; C; A723; # LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF
A724; C; A725; # LATIN CAPITAL LETTER EGYPTOLOGICAL AIN A724; C; A725; # LATIN CAPITAL LETTER EGYPTOLOGICAL AIN
A726; C; A727; # LATIN CAPITAL LETTER HENG A726; C; A727; # LATIN CAPITAL LETTER HENG
@ -1122,6 +1203,125 @@ A782; C; A783; # LATIN CAPITAL LETTER INSULAR R
A784; C; A785; # LATIN CAPITAL LETTER INSULAR S A784; C; A785; # LATIN CAPITAL LETTER INSULAR S
A786; C; A787; # LATIN CAPITAL LETTER INSULAR T A786; C; A787; # LATIN CAPITAL LETTER INSULAR T
A78B; C; A78C; # LATIN CAPITAL LETTER SALTILLO A78B; C; A78C; # LATIN CAPITAL LETTER SALTILLO
A78D; C; 0265; # LATIN CAPITAL LETTER TURNED H
A790; C; A791; # LATIN CAPITAL LETTER N WITH DESCENDER
A792; C; A793; # LATIN CAPITAL LETTER C WITH BAR
A796; C; A797; # LATIN CAPITAL LETTER B WITH FLOURISH
A798; C; A799; # LATIN CAPITAL LETTER F WITH STROKE
A79A; C; A79B; # LATIN CAPITAL LETTER VOLAPUK AE
A79C; C; A79D; # LATIN CAPITAL LETTER VOLAPUK OE
A79E; C; A79F; # LATIN CAPITAL LETTER VOLAPUK UE
A7A0; C; A7A1; # LATIN CAPITAL LETTER G WITH OBLIQUE STROKE
A7A2; C; A7A3; # LATIN CAPITAL LETTER K WITH OBLIQUE STROKE
A7A4; C; A7A5; # LATIN CAPITAL LETTER N WITH OBLIQUE STROKE
A7A6; C; A7A7; # LATIN CAPITAL LETTER R WITH OBLIQUE STROKE
A7A8; C; A7A9; # LATIN CAPITAL LETTER S WITH OBLIQUE STROKE
A7AA; C; 0266; # LATIN CAPITAL LETTER H WITH HOOK
A7AB; C; 025C; # LATIN CAPITAL LETTER REVERSED OPEN E
A7AC; C; 0261; # LATIN CAPITAL LETTER SCRIPT G
A7AD; C; 026C; # LATIN CAPITAL LETTER L WITH BELT
A7AE; C; 026A; # LATIN CAPITAL LETTER SMALL CAPITAL I
A7B0; C; 029E; # LATIN CAPITAL LETTER TURNED K
A7B1; C; 0287; # LATIN CAPITAL LETTER TURNED T
A7B2; C; 029D; # LATIN CAPITAL LETTER J WITH CROSSED-TAIL
A7B3; C; AB53; # LATIN CAPITAL LETTER CHI
A7B4; C; A7B5; # LATIN CAPITAL LETTER BETA
A7B6; C; A7B7; # LATIN CAPITAL LETTER OMEGA
A7B8; C; A7B9; # LATIN CAPITAL LETTER U WITH STROKE
A7BA; C; A7BB; # LATIN CAPITAL LETTER GLOTTAL A
A7BC; C; A7BD; # LATIN CAPITAL LETTER GLOTTAL I
A7BE; C; A7BF; # LATIN CAPITAL LETTER GLOTTAL U
A7C0; C; A7C1; # LATIN CAPITAL LETTER OLD POLISH O
A7C2; C; A7C3; # LATIN CAPITAL LETTER ANGLICANA W
A7C4; C; A794; # LATIN CAPITAL LETTER C WITH PALATAL HOOK
A7C5; C; 0282; # LATIN CAPITAL LETTER S WITH HOOK
A7C6; C; 1D8E; # LATIN CAPITAL LETTER Z WITH PALATAL HOOK
A7C7; C; A7C8; # LATIN CAPITAL LETTER D WITH SHORT STROKE OVERLAY
A7C9; C; A7CA; # LATIN CAPITAL LETTER S WITH SHORT STROKE OVERLAY
A7D0; C; A7D1; # LATIN CAPITAL LETTER CLOSED INSULAR G
A7D6; C; A7D7; # LATIN CAPITAL LETTER MIDDLE SCOTS S
A7D8; C; A7D9; # LATIN CAPITAL LETTER SIGMOID S
A7F5; C; A7F6; # LATIN CAPITAL LETTER REVERSED HALF H
AB70; C; 13A0; # CHEROKEE SMALL LETTER A
AB71; C; 13A1; # CHEROKEE SMALL LETTER E
AB72; C; 13A2; # CHEROKEE SMALL LETTER I
AB73; C; 13A3; # CHEROKEE SMALL LETTER O
AB74; C; 13A4; # CHEROKEE SMALL LETTER U
AB75; C; 13A5; # CHEROKEE SMALL LETTER V
AB76; C; 13A6; # CHEROKEE SMALL LETTER GA
AB77; C; 13A7; # CHEROKEE SMALL LETTER KA
AB78; C; 13A8; # CHEROKEE SMALL LETTER GE
AB79; C; 13A9; # CHEROKEE SMALL LETTER GI
AB7A; C; 13AA; # CHEROKEE SMALL LETTER GO
AB7B; C; 13AB; # CHEROKEE SMALL LETTER GU
AB7C; C; 13AC; # CHEROKEE SMALL LETTER GV
AB7D; C; 13AD; # CHEROKEE SMALL LETTER HA
AB7E; C; 13AE; # CHEROKEE SMALL LETTER HE
AB7F; C; 13AF; # CHEROKEE SMALL LETTER HI
AB80; C; 13B0; # CHEROKEE SMALL LETTER HO
AB81; C; 13B1; # CHEROKEE SMALL LETTER HU
AB82; C; 13B2; # CHEROKEE SMALL LETTER HV
AB83; C; 13B3; # CHEROKEE SMALL LETTER LA
AB84; C; 13B4; # CHEROKEE SMALL LETTER LE
AB85; C; 13B5; # CHEROKEE SMALL LETTER LI
AB86; C; 13B6; # CHEROKEE SMALL LETTER LO
AB87; C; 13B7; # CHEROKEE SMALL LETTER LU
AB88; C; 13B8; # CHEROKEE SMALL LETTER LV
AB89; C; 13B9; # CHEROKEE SMALL LETTER MA
AB8A; C; 13BA; # CHEROKEE SMALL LETTER ME
AB8B; C; 13BB; # CHEROKEE SMALL LETTER MI
AB8C; C; 13BC; # CHEROKEE SMALL LETTER MO
AB8D; C; 13BD; # CHEROKEE SMALL LETTER MU
AB8E; C; 13BE; # CHEROKEE SMALL LETTER NA
AB8F; C; 13BF; # CHEROKEE SMALL LETTER HNA
AB90; C; 13C0; # CHEROKEE SMALL LETTER NAH
AB91; C; 13C1; # CHEROKEE SMALL LETTER NE
AB92; C; 13C2; # CHEROKEE SMALL LETTER NI
AB93; C; 13C3; # CHEROKEE SMALL LETTER NO
AB94; C; 13C4; # CHEROKEE SMALL LETTER NU
AB95; C; 13C5; # CHEROKEE SMALL LETTER NV
AB96; C; 13C6; # CHEROKEE SMALL LETTER QUA
AB97; C; 13C7; # CHEROKEE SMALL LETTER QUE
AB98; C; 13C8; # CHEROKEE SMALL LETTER QUI
AB99; C; 13C9; # CHEROKEE SMALL LETTER QUO
AB9A; C; 13CA; # CHEROKEE SMALL LETTER QUU
AB9B; C; 13CB; # CHEROKEE SMALL LETTER QUV
AB9C; C; 13CC; # CHEROKEE SMALL LETTER SA
AB9D; C; 13CD; # CHEROKEE SMALL LETTER S
AB9E; C; 13CE; # CHEROKEE SMALL LETTER SE
AB9F; C; 13CF; # CHEROKEE SMALL LETTER SI
ABA0; C; 13D0; # CHEROKEE SMALL LETTER SO
ABA1; C; 13D1; # CHEROKEE SMALL LETTER SU
ABA2; C; 13D2; # CHEROKEE SMALL LETTER SV
ABA3; C; 13D3; # CHEROKEE SMALL LETTER DA
ABA4; C; 13D4; # CHEROKEE SMALL LETTER TA
ABA5; C; 13D5; # CHEROKEE SMALL LETTER DE
ABA6; C; 13D6; # CHEROKEE SMALL LETTER TE
ABA7; C; 13D7; # CHEROKEE SMALL LETTER DI
ABA8; C; 13D8; # CHEROKEE SMALL LETTER TI
ABA9; C; 13D9; # CHEROKEE SMALL LETTER DO
ABAA; C; 13DA; # CHEROKEE SMALL LETTER DU
ABAB; C; 13DB; # CHEROKEE SMALL LETTER DV
ABAC; C; 13DC; # CHEROKEE SMALL LETTER DLA
ABAD; C; 13DD; # CHEROKEE SMALL LETTER TLA
ABAE; C; 13DE; # CHEROKEE SMALL LETTER TLE
ABAF; C; 13DF; # CHEROKEE SMALL LETTER TLI
ABB0; C; 13E0; # CHEROKEE SMALL LETTER TLO
ABB1; C; 13E1; # CHEROKEE SMALL LETTER TLU
ABB2; C; 13E2; # CHEROKEE SMALL LETTER TLV
ABB3; C; 13E3; # CHEROKEE SMALL LETTER TSA
ABB4; C; 13E4; # CHEROKEE SMALL LETTER TSE
ABB5; C; 13E5; # CHEROKEE SMALL LETTER TSI
ABB6; C; 13E6; # CHEROKEE SMALL LETTER TSO
ABB7; C; 13E7; # CHEROKEE SMALL LETTER TSU
ABB8; C; 13E8; # CHEROKEE SMALL LETTER TSV
ABB9; C; 13E9; # CHEROKEE SMALL LETTER WA
ABBA; C; 13EA; # CHEROKEE SMALL LETTER WE
ABBB; C; 13EB; # CHEROKEE SMALL LETTER WI
ABBC; C; 13EC; # CHEROKEE SMALL LETTER WO
ABBD; C; 13ED; # CHEROKEE SMALL LETTER WU
ABBE; C; 13EE; # CHEROKEE SMALL LETTER WV
ABBF; C; 13EF; # CHEROKEE SMALL LETTER YA
FB00; F; 0066 0066; # LATIN SMALL LIGATURE FF FB00; F; 0066 0066; # LATIN SMALL LIGATURE FF
FB01; F; 0066 0069; # LATIN SMALL LIGATURE FI FB01; F; 0066 0069; # LATIN SMALL LIGATURE FI
FB02; F; 0066 006C; # LATIN SMALL LIGATURE FL FB02; F; 0066 006C; # LATIN SMALL LIGATURE FL
@ -1200,3 +1400,223 @@ FF3A; C; FF5A; # FULLWIDTH LATIN CAPITAL LETTER Z
10425; C; 1044D; # DESERET CAPITAL LETTER ENG 10425; C; 1044D; # DESERET CAPITAL LETTER ENG
10426; C; 1044E; # DESERET CAPITAL LETTER OI 10426; C; 1044E; # DESERET CAPITAL LETTER OI
10427; C; 1044F; # DESERET CAPITAL LETTER EW 10427; C; 1044F; # DESERET CAPITAL LETTER EW
104B0; C; 104D8; # OSAGE CAPITAL LETTER A
104B1; C; 104D9; # OSAGE CAPITAL LETTER AI
104B2; C; 104DA; # OSAGE CAPITAL LETTER AIN
104B3; C; 104DB; # OSAGE CAPITAL LETTER AH
104B4; C; 104DC; # OSAGE CAPITAL LETTER BRA
104B5; C; 104DD; # OSAGE CAPITAL LETTER CHA
104B6; C; 104DE; # OSAGE CAPITAL LETTER EHCHA
104B7; C; 104DF; # OSAGE CAPITAL LETTER E
104B8; C; 104E0; # OSAGE CAPITAL LETTER EIN
104B9; C; 104E1; # OSAGE CAPITAL LETTER HA
104BA; C; 104E2; # OSAGE CAPITAL LETTER HYA
104BB; C; 104E3; # OSAGE CAPITAL LETTER I
104BC; C; 104E4; # OSAGE CAPITAL LETTER KA
104BD; C; 104E5; # OSAGE CAPITAL LETTER EHKA
104BE; C; 104E6; # OSAGE CAPITAL LETTER KYA
104BF; C; 104E7; # OSAGE CAPITAL LETTER LA
104C0; C; 104E8; # OSAGE CAPITAL LETTER MA
104C1; C; 104E9; # OSAGE CAPITAL LETTER NA
104C2; C; 104EA; # OSAGE CAPITAL LETTER O
104C3; C; 104EB; # OSAGE CAPITAL LETTER OIN
104C4; C; 104EC; # OSAGE CAPITAL LETTER PA
104C5; C; 104ED; # OSAGE CAPITAL LETTER EHPA
104C6; C; 104EE; # OSAGE CAPITAL LETTER SA
104C7; C; 104EF; # OSAGE CAPITAL LETTER SHA
104C8; C; 104F0; # OSAGE CAPITAL LETTER TA
104C9; C; 104F1; # OSAGE CAPITAL LETTER EHTA
104CA; C; 104F2; # OSAGE CAPITAL LETTER TSA
104CB; C; 104F3; # OSAGE CAPITAL LETTER EHTSA
104CC; C; 104F4; # OSAGE CAPITAL LETTER TSHA
104CD; C; 104F5; # OSAGE CAPITAL LETTER DHA
104CE; C; 104F6; # OSAGE CAPITAL LETTER U
104CF; C; 104F7; # OSAGE CAPITAL LETTER WA
104D0; C; 104F8; # OSAGE CAPITAL LETTER KHA
104D1; C; 104F9; # OSAGE CAPITAL LETTER GHA
104D2; C; 104FA; # OSAGE CAPITAL LETTER ZA
104D3; C; 104FB; # OSAGE CAPITAL LETTER ZHA
10570; C; 10597; # VITHKUQI CAPITAL LETTER A
10571; C; 10598; # VITHKUQI CAPITAL LETTER BBE
10572; C; 10599; # VITHKUQI CAPITAL LETTER BE
10573; C; 1059A; # VITHKUQI CAPITAL LETTER CE
10574; C; 1059B; # VITHKUQI CAPITAL LETTER CHE
10575; C; 1059C; # VITHKUQI CAPITAL LETTER DE
10576; C; 1059D; # VITHKUQI CAPITAL LETTER DHE
10577; C; 1059E; # VITHKUQI CAPITAL LETTER EI
10578; C; 1059F; # VITHKUQI CAPITAL LETTER E
10579; C; 105A0; # VITHKUQI CAPITAL LETTER FE
1057A; C; 105A1; # VITHKUQI CAPITAL LETTER GA
1057C; C; 105A3; # VITHKUQI CAPITAL LETTER HA
1057D; C; 105A4; # VITHKUQI CAPITAL LETTER HHA
1057E; C; 105A5; # VITHKUQI CAPITAL LETTER I
1057F; C; 105A6; # VITHKUQI CAPITAL LETTER IJE
10580; C; 105A7; # VITHKUQI CAPITAL LETTER JE
10581; C; 105A8; # VITHKUQI CAPITAL LETTER KA
10582; C; 105A9; # VITHKUQI CAPITAL LETTER LA
10583; C; 105AA; # VITHKUQI CAPITAL LETTER LLA
10584; C; 105AB; # VITHKUQI CAPITAL LETTER ME
10585; C; 105AC; # VITHKUQI CAPITAL LETTER NE
10586; C; 105AD; # VITHKUQI CAPITAL LETTER NJE
10587; C; 105AE; # VITHKUQI CAPITAL LETTER O
10588; C; 105AF; # VITHKUQI CAPITAL LETTER PE
10589; C; 105B0; # VITHKUQI CAPITAL LETTER QA
1058A; C; 105B1; # VITHKUQI CAPITAL LETTER RE
1058C; C; 105B3; # VITHKUQI CAPITAL LETTER SE
1058D; C; 105B4; # VITHKUQI CAPITAL LETTER SHE
1058E; C; 105B5; # VITHKUQI CAPITAL LETTER TE
1058F; C; 105B6; # VITHKUQI CAPITAL LETTER THE
10590; C; 105B7; # VITHKUQI CAPITAL LETTER U
10591; C; 105B8; # VITHKUQI CAPITAL LETTER VE
10592; C; 105B9; # VITHKUQI CAPITAL LETTER XE
10594; C; 105BB; # VITHKUQI CAPITAL LETTER Y
10595; C; 105BC; # VITHKUQI CAPITAL LETTER ZE
10C80; C; 10CC0; # OLD HUNGARIAN CAPITAL LETTER A
10C81; C; 10CC1; # OLD HUNGARIAN CAPITAL LETTER AA
10C82; C; 10CC2; # OLD HUNGARIAN CAPITAL LETTER EB
10C83; C; 10CC3; # OLD HUNGARIAN CAPITAL LETTER AMB
10C84; C; 10CC4; # OLD HUNGARIAN CAPITAL LETTER EC
10C85; C; 10CC5; # OLD HUNGARIAN CAPITAL LETTER ENC
10C86; C; 10CC6; # OLD HUNGARIAN CAPITAL LETTER ECS
10C87; C; 10CC7; # OLD HUNGARIAN CAPITAL LETTER ED
10C88; C; 10CC8; # OLD HUNGARIAN CAPITAL LETTER AND
10C89; C; 10CC9; # OLD HUNGARIAN CAPITAL LETTER E
10C8A; C; 10CCA; # OLD HUNGARIAN CAPITAL LETTER CLOSE E
10C8B; C; 10CCB; # OLD HUNGARIAN CAPITAL LETTER EE
10C8C; C; 10CCC; # OLD HUNGARIAN CAPITAL LETTER EF
10C8D; C; 10CCD; # OLD HUNGARIAN CAPITAL LETTER EG
10C8E; C; 10CCE; # OLD HUNGARIAN CAPITAL LETTER EGY
10C8F; C; 10CCF; # OLD HUNGARIAN CAPITAL LETTER EH
10C90; C; 10CD0; # OLD HUNGARIAN CAPITAL LETTER I
10C91; C; 10CD1; # OLD HUNGARIAN CAPITAL LETTER II
10C92; C; 10CD2; # OLD HUNGARIAN CAPITAL LETTER EJ
10C93; C; 10CD3; # OLD HUNGARIAN CAPITAL LETTER EK
10C94; C; 10CD4; # OLD HUNGARIAN CAPITAL LETTER AK
10C95; C; 10CD5; # OLD HUNGARIAN CAPITAL LETTER UNK
10C96; C; 10CD6; # OLD HUNGARIAN CAPITAL LETTER EL
10C97; C; 10CD7; # OLD HUNGARIAN CAPITAL LETTER ELY
10C98; C; 10CD8; # OLD HUNGARIAN CAPITAL LETTER EM
10C99; C; 10CD9; # OLD HUNGARIAN CAPITAL LETTER EN
10C9A; C; 10CDA; # OLD HUNGARIAN CAPITAL LETTER ENY
10C9B; C; 10CDB; # OLD HUNGARIAN CAPITAL LETTER O
10C9C; C; 10CDC; # OLD HUNGARIAN CAPITAL LETTER OO
10C9D; C; 10CDD; # OLD HUNGARIAN CAPITAL LETTER NIKOLSBURG OE
10C9E; C; 10CDE; # OLD HUNGARIAN CAPITAL LETTER RUDIMENTA OE
10C9F; C; 10CDF; # OLD HUNGARIAN CAPITAL LETTER OEE
10CA0; C; 10CE0; # OLD HUNGARIAN CAPITAL LETTER EP
10CA1; C; 10CE1; # OLD HUNGARIAN CAPITAL LETTER EMP
10CA2; C; 10CE2; # OLD HUNGARIAN CAPITAL LETTER ER
10CA3; C; 10CE3; # OLD HUNGARIAN CAPITAL LETTER SHORT ER
10CA4; C; 10CE4; # OLD HUNGARIAN CAPITAL LETTER ES
10CA5; C; 10CE5; # OLD HUNGARIAN CAPITAL LETTER ESZ
10CA6; C; 10CE6; # OLD HUNGARIAN CAPITAL LETTER ET
10CA7; C; 10CE7; # OLD HUNGARIAN CAPITAL LETTER ENT
10CA8; C; 10CE8; # OLD HUNGARIAN CAPITAL LETTER ETY
10CA9; C; 10CE9; # OLD HUNGARIAN CAPITAL LETTER ECH
10CAA; C; 10CEA; # OLD HUNGARIAN CAPITAL LETTER U
10CAB; C; 10CEB; # OLD HUNGARIAN CAPITAL LETTER UU
10CAC; C; 10CEC; # OLD HUNGARIAN CAPITAL LETTER NIKOLSBURG UE
10CAD; C; 10CED; # OLD HUNGARIAN CAPITAL LETTER RUDIMENTA UE
10CAE; C; 10CEE; # OLD HUNGARIAN CAPITAL LETTER EV
10CAF; C; 10CEF; # OLD HUNGARIAN CAPITAL LETTER EZ
10CB0; C; 10CF0; # OLD HUNGARIAN CAPITAL LETTER EZS
10CB1; C; 10CF1; # OLD HUNGARIAN CAPITAL LETTER ENT-SHAPED SIGN
10CB2; C; 10CF2; # OLD HUNGARIAN CAPITAL LETTER US
118A0; C; 118C0; # WARANG CITI CAPITAL LETTER NGAA
118A1; C; 118C1; # WARANG CITI CAPITAL LETTER A
118A2; C; 118C2; # WARANG CITI CAPITAL LETTER WI
118A3; C; 118C3; # WARANG CITI CAPITAL LETTER YU
118A4; C; 118C4; # WARANG CITI CAPITAL LETTER YA
118A5; C; 118C5; # WARANG CITI CAPITAL LETTER YO
118A6; C; 118C6; # WARANG CITI CAPITAL LETTER II
118A7; C; 118C7; # WARANG CITI CAPITAL LETTER UU
118A8; C; 118C8; # WARANG CITI CAPITAL LETTER E
118A9; C; 118C9; # WARANG CITI CAPITAL LETTER O
118AA; C; 118CA; # WARANG CITI CAPITAL LETTER ANG
118AB; C; 118CB; # WARANG CITI CAPITAL LETTER GA
118AC; C; 118CC; # WARANG CITI CAPITAL LETTER KO
118AD; C; 118CD; # WARANG CITI CAPITAL LETTER ENY
118AE; C; 118CE; # WARANG CITI CAPITAL LETTER YUJ
118AF; C; 118CF; # WARANG CITI CAPITAL LETTER UC
118B0; C; 118D0; # WARANG CITI CAPITAL LETTER ENN
118B1; C; 118D1; # WARANG CITI CAPITAL LETTER ODD
118B2; C; 118D2; # WARANG CITI CAPITAL LETTER TTE
118B3; C; 118D3; # WARANG CITI CAPITAL LETTER NUNG
118B4; C; 118D4; # WARANG CITI CAPITAL LETTER DA
118B5; C; 118D5; # WARANG CITI CAPITAL LETTER AT
118B6; C; 118D6; # WARANG CITI CAPITAL LETTER AM
118B7; C; 118D7; # WARANG CITI CAPITAL LETTER BU
118B8; C; 118D8; # WARANG CITI CAPITAL LETTER PU
118B9; C; 118D9; # WARANG CITI CAPITAL LETTER HIYO
118BA; C; 118DA; # WARANG CITI CAPITAL LETTER HOLO
118BB; C; 118DB; # WARANG CITI CAPITAL LETTER HORR
118BC; C; 118DC; # WARANG CITI CAPITAL LETTER HAR
118BD; C; 118DD; # WARANG CITI CAPITAL LETTER SSUU
118BE; C; 118DE; # WARANG CITI CAPITAL LETTER SII
118BF; C; 118DF; # WARANG CITI CAPITAL LETTER VIYO
16E40; C; 16E60; # MEDEFAIDRIN CAPITAL LETTER M
16E41; C; 16E61; # MEDEFAIDRIN CAPITAL LETTER S
16E42; C; 16E62; # MEDEFAIDRIN CAPITAL LETTER V
16E43; C; 16E63; # MEDEFAIDRIN CAPITAL LETTER W
16E44; C; 16E64; # MEDEFAIDRIN CAPITAL LETTER ATIU
16E45; C; 16E65; # MEDEFAIDRIN CAPITAL LETTER Z
16E46; C; 16E66; # MEDEFAIDRIN CAPITAL LETTER KP
16E47; C; 16E67; # MEDEFAIDRIN CAPITAL LETTER P
16E48; C; 16E68; # MEDEFAIDRIN CAPITAL LETTER T
16E49; C; 16E69; # MEDEFAIDRIN CAPITAL LETTER G
16E4A; C; 16E6A; # MEDEFAIDRIN CAPITAL LETTER F
16E4B; C; 16E6B; # MEDEFAIDRIN CAPITAL LETTER I
16E4C; C; 16E6C; # MEDEFAIDRIN CAPITAL LETTER K
16E4D; C; 16E6D; # MEDEFAIDRIN CAPITAL LETTER A
16E4E; C; 16E6E; # MEDEFAIDRIN CAPITAL LETTER J
16E4F; C; 16E6F; # MEDEFAIDRIN CAPITAL LETTER E
16E50; C; 16E70; # MEDEFAIDRIN CAPITAL LETTER B
16E51; C; 16E71; # MEDEFAIDRIN CAPITAL LETTER C
16E52; C; 16E72; # MEDEFAIDRIN CAPITAL LETTER U
16E53; C; 16E73; # MEDEFAIDRIN CAPITAL LETTER YU
16E54; C; 16E74; # MEDEFAIDRIN CAPITAL LETTER L
16E55; C; 16E75; # MEDEFAIDRIN CAPITAL LETTER Q
16E56; C; 16E76; # MEDEFAIDRIN CAPITAL LETTER HP
16E57; C; 16E77; # MEDEFAIDRIN CAPITAL LETTER NY
16E58; C; 16E78; # MEDEFAIDRIN CAPITAL LETTER X
16E59; C; 16E79; # MEDEFAIDRIN CAPITAL LETTER D
16E5A; C; 16E7A; # MEDEFAIDRIN CAPITAL LETTER OE
16E5B; C; 16E7B; # MEDEFAIDRIN CAPITAL LETTER N
16E5C; C; 16E7C; # MEDEFAIDRIN CAPITAL LETTER R
16E5D; C; 16E7D; # MEDEFAIDRIN CAPITAL LETTER O
16E5E; C; 16E7E; # MEDEFAIDRIN CAPITAL LETTER AI
16E5F; C; 16E7F; # MEDEFAIDRIN CAPITAL LETTER Y
1E900; C; 1E922; # ADLAM CAPITAL LETTER ALIF
1E901; C; 1E923; # ADLAM CAPITAL LETTER DAALI
1E902; C; 1E924; # ADLAM CAPITAL LETTER LAAM
1E903; C; 1E925; # ADLAM CAPITAL LETTER MIIM
1E904; C; 1E926; # ADLAM CAPITAL LETTER BA
1E905; C; 1E927; # ADLAM CAPITAL LETTER SINNYIIYHE
1E906; C; 1E928; # ADLAM CAPITAL LETTER PE
1E907; C; 1E929; # ADLAM CAPITAL LETTER BHE
1E908; C; 1E92A; # ADLAM CAPITAL LETTER RA
1E909; C; 1E92B; # ADLAM CAPITAL LETTER E
1E90A; C; 1E92C; # ADLAM CAPITAL LETTER FA
1E90B; C; 1E92D; # ADLAM CAPITAL LETTER I
1E90C; C; 1E92E; # ADLAM CAPITAL LETTER O
1E90D; C; 1E92F; # ADLAM CAPITAL LETTER DHA
1E90E; C; 1E930; # ADLAM CAPITAL LETTER YHE
1E90F; C; 1E931; # ADLAM CAPITAL LETTER WAW
1E910; C; 1E932; # ADLAM CAPITAL LETTER NUN
1E911; C; 1E933; # ADLAM CAPITAL LETTER KAF
1E912; C; 1E934; # ADLAM CAPITAL LETTER YA
1E913; C; 1E935; # ADLAM CAPITAL LETTER U
1E914; C; 1E936; # ADLAM CAPITAL LETTER JIIM
1E915; C; 1E937; # ADLAM CAPITAL LETTER CHI
1E916; C; 1E938; # ADLAM CAPITAL LETTER HA
1E917; C; 1E939; # ADLAM CAPITAL LETTER QAAF
1E918; C; 1E93A; # ADLAM CAPITAL LETTER GA
1E919; C; 1E93B; # ADLAM CAPITAL LETTER NYA
1E91A; C; 1E93C; # ADLAM CAPITAL LETTER TU
1E91B; C; 1E93D; # ADLAM CAPITAL LETTER NHA
1E91C; C; 1E93E; # ADLAM CAPITAL LETTER VA
1E91D; C; 1E93F; # ADLAM CAPITAL LETTER KHA
1E91E; C; 1E940; # ADLAM CAPITAL LETTER GBE
1E91F; C; 1E941; # ADLAM CAPITAL LETTER ZAL
1E920; C; 1E942; # ADLAM CAPITAL LETTER KPO
1E921; C; 1E943; # ADLAM CAPITAL LETTER SHA

View file

@ -12,25 +12,26 @@
#include <string> #include <string>
using std::map; using std::map;
using std::wstring; using std::u32string;
struct Node struct Node
{ {
map< wchar_t, Node > nodes; map< char32_t, Node > nodes;
wchar_t tail; char32_t tail;
Node(): tail( 0 ) Node():
{} tail( 0 )
{
}
}; };
void indent( FILE * outf, size_t steps ) void indent( FILE * outf, size_t steps )
{ {
for( unsigned x = steps; x--; ) for ( unsigned x = steps; x--; )
fprintf( outf, " " ); fprintf( outf, " " );
} }
void handleForest( FILE * outf, map< wchar_t, Node > const & forest, size_t void handleForest( FILE * outf, map< char32_t, Node > const & forest, size_t prev, size_t steps )
prev, size_t steps )
{ {
indent( outf, steps ); indent( outf, steps );
fprintf( outf, "if ( size > %u )\n", prev ); fprintf( outf, "if ( size > %u )\n", prev );
@ -44,9 +45,7 @@ void handleForest( FILE * outf, map< wchar_t, Node > const & forest, size_t
indent( outf, steps + 1 ); indent( outf, steps + 1 );
fprintf( outf, "{\n" ); fprintf( outf, "{\n" );
for( map< wchar_t, Node >::const_iterator i = forest.begin(); for ( map< char32_t, Node >::const_iterator i = forest.begin(); i != forest.end(); ++i ) {
i != forest.end(); ++i )
{
indent( outf, steps + 2 ); indent( outf, steps + 2 );
fprintf( outf, "case 0x%x:\n", i->first ); fprintf( outf, "case 0x%x:\n", i->first );
@ -73,21 +72,19 @@ int main()
// Case folding // Case folding
{ {
FILE * inf = fopen( "CaseFolding.txt", "r" ); FILE * inf = fopen( "CaseFolding.txt", "r" );
if ( !inf ) if ( !inf ) {
{
fprintf( stderr, "Failed to open CaseFolding.txt\n" ); fprintf( stderr, "Failed to open CaseFolding.txt\n" );
return 1; return 1;
} }
char buf[ 4096 ]; char buf[ 4096 ];
map< wchar_t, wstring > foldTable; map< char32_t, u32string > foldTable;
map< wchar_t, wchar_t > simpleFoldTable; map< char32_t, char32_t > simpleFoldTable;
while( fgets( buf, sizeof( buf ), inf ) ) while ( fgets( buf, sizeof( buf ), inf ) ) {
{
if ( *buf == '#' ) if ( *buf == '#' )
continue; // A comment continue; // A comment
@ -97,69 +94,54 @@ int main()
unsigned totalOut; unsigned totalOut;
if ( sscanf( buf, "%lx; %c; %lx %lx %lx %lx;", &in, &type, if ( sscanf( buf, "%lx; %c; %lx %lx %lx %lx;", &in, &type, out, out + 1, out + 2, out + 3 ) == 6 ) {
out, out + 1, out + 2, out + 3 ) == 6 ) fprintf( stderr,
{ "Four output chars ecountered in CaseFolding.txt, which we expected"
fprintf( stderr, "Four output chars ecountered in CaseFolding.txt, which we expected" "the file didn't have, make changes into the program.\n" );
"the file didn't have, make changes into the program.\n" );
return 1; return 1;
} }
if ( sscanf( buf, "%lx; %c; %lx %lx %lx;", &in, &type, if ( sscanf( buf, "%lx; %c; %lx %lx %lx;", &in, &type, out, out + 1, out + 2 ) == 5 )
out, out + 1, out + 2 ) == 5 )
totalOut = 3; totalOut = 3;
else else if ( sscanf( buf, "%lx; %c; %lx %lx;", &in, &type, out, out + 1 ) == 4 )
if ( sscanf( buf, "%lx; %c; %lx %lx;", &in, &type,
out, out + 1 ) == 4 )
totalOut = 2; totalOut = 2;
else else if ( sscanf( buf, "%lx; %c; %lx;", &in, &type, out ) == 3 )
if ( sscanf( buf, "%lx; %c; %lx;", &in, &type,
out ) == 3 )
totalOut = 1; totalOut = 1;
else else {
{
fprintf( stderr, "Erroneous input in CaseFolding.txt: %s\n", buf ); fprintf( stderr, "Erroneous input in CaseFolding.txt: %s\n", buf );
return 1; return 1;
} }
switch( type ) switch ( type ) {
{
case 'C': case 'C':
if ( totalOut != 1 ) if ( totalOut != 1 ) {
{
fprintf( stderr, "C-record has more than one output char in CaseFolding.txt: %s\n", buf ); fprintf( stderr, "C-record has more than one output char in CaseFolding.txt: %s\n", buf );
return 1; return 1;
} }
simpleFoldTable[ in ] = out[ 0 ]; simpleFoldTable[ in ] = out[ 0 ];
// fall-through // fall-through
case 'F': case 'F': {
{ u32string result( totalOut, 0 );
wstring result( totalOut, 0 );
for( unsigned x = 0; x < totalOut; ++x ) for ( unsigned x = 0; x < totalOut; ++x ) {
{
result[ x ] = out[ x ]; result[ x ] = out[ x ];
} }
foldTable[ in ] = result; foldTable[ in ] = result;
} } break;
break; case 'S': {
case 'S': if ( totalOut != 1 ) {
{
if ( totalOut != 1 )
{
fprintf( stderr, "S-record has more than one output char in CaseFolding.txt: %s\n", buf ); fprintf( stderr, "S-record has more than one output char in CaseFolding.txt: %s\n", buf );
return 1; return 1;
} }
simpleFoldTable[ in ] = out[ 0 ]; simpleFoldTable[ in ] = out[ 0 ];
} } break;
break;
case 'T': case 'T':
// Ignore special foldings // Ignore special foldings
break; break;
default: default:
@ -172,10 +154,9 @@ int main()
// Create an outfile // Create an outfile
FILE * outf = fopen( "../inc_case_folding.hh", "w" ); FILE * outf = fopen( "inc_case_folding.hh", "w" );
if ( !outf ) if ( !outf ) {
{
fprintf( stderr, "Failed to create outfile\n" ); fprintf( stderr, "Failed to create outfile\n" );
return 1; return 1;
@ -186,16 +167,13 @@ int main()
fprintf( outf, "enum { foldCaseMaxOut = 3 };\n\n" ); fprintf( outf, "enum { foldCaseMaxOut = 3 };\n\n" );
fprintf( outf, "size_t foldCase( wchar in, wchar * out )\n{\n switch( in )\n {\n" ); fprintf( outf, "size_t foldCase( wchar in, wchar * out )\n{\n switch( in )\n {\n" );
for( map< wchar_t, wstring >::const_iterator i = foldTable.begin(); for ( map< char32_t, u32string >::const_iterator i = foldTable.begin(); i != foldTable.end(); ++i ) {
i != foldTable.end(); ++i )
{
if ( i->second.size() == 1 ) if ( i->second.size() == 1 )
fprintf( outf, " case 0x%x: *out = 0x%x; return 1;\n", i->first, i->second[ 0 ] ); fprintf( outf, " case 0x%x: *out = 0x%x; return 1;\n", i->first, i->second[ 0 ] );
else else {
{
fprintf( outf, " case 0x%x: ", i->first ); fprintf( outf, " case 0x%x: ", i->first );
for( unsigned x = 0; x < i->second.size(); ++x ) for ( unsigned x = 0; x < i->second.size(); ++x )
fprintf( outf, "out[ %u ] = 0x%x; ", x, i->second[ x ] ); fprintf( outf, "out[ %u ] = 0x%x; ", x, i->second[ x ] );
fprintf( outf, "return %u;\n", i->second.size() ); fprintf( outf, "return %u;\n", i->second.size() );
@ -207,9 +185,8 @@ int main()
fprintf( outf, "wchar foldCaseSimple( wchar in )\n{\n switch( in )\n {\n" ); fprintf( outf, "wchar foldCaseSimple( wchar in )\n{\n switch( in )\n {\n" );
for( map< wchar_t, wchar_t >::const_iterator i = simpleFoldTable.begin(); for ( map< char32_t, char32_t >::const_iterator i = simpleFoldTable.begin(); i != simpleFoldTable.end(); ++i )
i != simpleFoldTable.end(); ++i ) fprintf( outf, " case 0x%x: return 0x%x;\n", i->first, i->second );
fprintf( outf, " case 0x%x: return 0x%x;\n", i->first, i->second );
fprintf( outf, " default: return in;\n" ); fprintf( outf, " default: return in;\n" );
fprintf( outf, " }\n}\n" ); fprintf( outf, " }\n}\n" );
@ -221,8 +198,7 @@ int main()
{ {
FILE * inf = fopen( "DiacriticFolding.txt", "r" ); FILE * inf = fopen( "DiacriticFolding.txt", "r" );
if ( !inf ) if ( !inf ) {
{
fprintf( stderr, "Failed to open DiacriticFolding.txt\n" ); fprintf( stderr, "Failed to open DiacriticFolding.txt\n" );
return 1; return 1;
@ -230,10 +206,9 @@ int main()
char buf[ 4096 ]; char buf[ 4096 ];
map< wchar_t, Node > forest; map< char32_t, Node > forest;
while( fgets( buf, sizeof( buf ), inf ) ) while ( fgets( buf, sizeof( buf ), inf ) ) {
{
if ( *buf == '#' || *buf == '\n' ) if ( *buf == '#' || *buf == '\n' )
continue; // A comment or a whiteline continue; // A comment or a whiteline
@ -241,56 +216,49 @@ int main()
unsigned totalIn; unsigned totalIn;
if ( sscanf( buf, "%lx %lx %lx %lx; %lx", in, in + 1, in + 2, in + 3, &out ) == 5 ) if ( sscanf( buf, "%lx %lx %lx %lx; %lx", in, in + 1, in + 2, in + 3, &out ) == 5 ) {
{ fprintf( stderr,
fprintf( stderr, "Four input chars ecountered in DiacriticFolding.txt, which we expected" "Four input chars ecountered in DiacriticFolding.txt, which we expected"
"the file didn't have, make changes into the program.\n" ); "the file didn't have, make changes into the program.\n" );
return 1; return 1;
} }
else else if ( sscanf( buf, "%lx %lx %lx; %lx", in, in + 1, in + 2, &out ) == 4 )
if ( sscanf( buf, "%lx %lx %lx; %lx", in, in + 1, in + 2, &out ) == 4 )
totalIn = 3; totalIn = 3;
else else if ( sscanf( buf, "%lx %lx; %lx", in, in + 1, &out ) == 3 )
if ( sscanf( buf, "%lx %lx; %lx", in, in + 1, &out ) == 3 )
totalIn = 2; totalIn = 2;
else else if ( sscanf( buf, "%lx; %lx", in, &out ) == 2 )
if ( sscanf( buf, "%lx; %lx", in, &out ) == 2 )
totalIn = 1; totalIn = 1;
else else {
{
fprintf( stderr, "Erroneous input in DiacriticFolding.txt: %s\n", buf ); fprintf( stderr, "Erroneous input in DiacriticFolding.txt: %s\n", buf );
return 1; return 1;
} }
map< wchar_t, Node > * cur = &forest; map< char32_t, Node > * cur = &forest;
for( unsigned x = 0; x < totalIn - 1; ++x ) for ( unsigned x = 0; x < totalIn - 1; ++x ) {
{
//printf( "%x ", in[ x ] ); //printf( "%x ", in[ x ] );
cur = &( (*cur)[ in[ x ] ].nodes ); cur = &( ( *cur )[ in[ x ] ].nodes );
} }
//printf( "%x\n", in[ totalIn - 1 ] ); //printf( "%x\n", in[ totalIn - 1 ] );
if ( (*cur)[ in[ totalIn - 1 ] ].tail ) if ( ( *cur )[ in[ totalIn - 1 ] ].tail ) {
{
fprintf( stderr, "Ambiguity in DiacriticFolding.txt\n" ); fprintf( stderr, "Ambiguity in DiacriticFolding.txt\n" );
return 1; return 1;
} }
(*cur)[ in[ totalIn - 1 ] ].tail = out; ( *cur )[ in[ totalIn - 1 ] ].tail = out;
} }
fclose( inf ); fclose( inf );
// Create an outfile // Create an outfile
FILE * outf = fopen( "../inc_diacritic_folding.hh", "w" ); FILE * outf = fopen( "../inc_diacritic_folding.hh", "w" );
if ( !outf ) if ( !outf ) {
{
fprintf( stderr, "Failed to create outfile\n" ); fprintf( stderr, "Failed to create outfile\n" );
return 1; return 1;
@ -303,15 +271,16 @@ int main()
handleForest( outf, forest, 0, 1 ); handleForest( outf, forest, 0, 1 );
fprintf( outf, " if ( size )\n" fprintf( outf,
" {\n" " if ( size )\n"
" consumed = 1; return *in;\n" " {\n"
" }\n" " consumed = 1; return *in;\n"
" consumed = 0; return 0;\n" " }\n"
"}\n" ); " consumed = 0; return 0;\n"
"}\n" );
fclose( outf ); fclose( outf );
} }
return 0; return 0;
} }

View file

@ -1,17 +0,0 @@
#!/bin/sh
# This script generates ../flags.qrc based on the ../flags dir contents
cd ..
OUT=flags.qrc
echo "<RCC>" > $OUT
echo " <qresource>" >> $OUT
for x in flags/*.png; do
echo " <file>$x</file>" >> $OUT
done
echo " </qresource>" >> $OUT
echo "</RCC>" >> $OUT