10b57cec5SDimitry Andric //===---------- Support/UnicodeCaseFold.cpp -------------------------------===// 20b57cec5SDimitry Andric // 30b57cec5SDimitry Andric // This file was generated by utils/unicode-case-fold.py from the Unicode 40b57cec5SDimitry Andric // case folding database at 5*7a6dacacSDimitry Andric // http://www.unicode.org/Public/15.1.0/ucd/CaseFolding.txt 60b57cec5SDimitry Andric // 70b57cec5SDimitry Andric // To regenerate this file, run: 80b57cec5SDimitry Andric // utils/unicode-case-fold.py \ 9*7a6dacacSDimitry Andric // "http://www.unicode.org/Public/15.1.0/ucd/CaseFolding.txt" \ 100b57cec5SDimitry Andric // > lib/Support/UnicodeCaseFold.cpp 110b57cec5SDimitry Andric // 120b57cec5SDimitry Andric //===----------------------------------------------------------------------===// 130b57cec5SDimitry Andric 140b57cec5SDimitry Andric #include "llvm/Support/Unicode.h" 150b57cec5SDimitry Andric foldCharSimple(int C)160b57cec5SDimitry Andricint llvm::sys::unicode::foldCharSimple(int C) { 170b57cec5SDimitry Andric if (C < 0x0041) 180b57cec5SDimitry Andric return C; 190b57cec5SDimitry Andric // 26 characters 200b57cec5SDimitry Andric if (C <= 0x005a) 210b57cec5SDimitry Andric return C + 32; 220b57cec5SDimitry Andric // MICRO SIGN 230b57cec5SDimitry Andric if (C == 0x00b5) 240b57cec5SDimitry Andric return 0x03bc; 250b57cec5SDimitry Andric if (C < 0x00c0) 260b57cec5SDimitry Andric return C; 270b57cec5SDimitry Andric // 23 characters 280b57cec5SDimitry Andric if (C <= 0x00d6) 290b57cec5SDimitry Andric return C + 32; 300b57cec5SDimitry Andric if (C < 0x00d8) 310b57cec5SDimitry Andric return C; 320b57cec5SDimitry Andric // 7 characters 330b57cec5SDimitry Andric if (C <= 0x00de) 340b57cec5SDimitry Andric return C + 32; 350b57cec5SDimitry Andric if (C < 0x0100) 360b57cec5SDimitry Andric return C; 370b57cec5SDimitry Andric // 24 characters 380b57cec5SDimitry Andric if (C <= 0x012e) 390b57cec5SDimitry Andric return C | 1; 400b57cec5SDimitry Andric if (C < 0x0132) 410b57cec5SDimitry Andric return C; 420b57cec5SDimitry Andric // 3 characters 430b57cec5SDimitry Andric if (C <= 0x0136) 440b57cec5SDimitry Andric return C | 1; 450b57cec5SDimitry Andric if (C < 0x0139) 460b57cec5SDimitry Andric return C; 470b57cec5SDimitry Andric // 8 characters 480b57cec5SDimitry Andric if (C <= 0x0147 && C % 2 == 1) 490b57cec5SDimitry Andric return C + 1; 500b57cec5SDimitry Andric if (C < 0x014a) 510b57cec5SDimitry Andric return C; 520b57cec5SDimitry Andric // 23 characters 530b57cec5SDimitry Andric if (C <= 0x0176) 540b57cec5SDimitry Andric return C | 1; 550b57cec5SDimitry Andric // LATIN CAPITAL LETTER Y WITH DIAERESIS 560b57cec5SDimitry Andric if (C == 0x0178) 570b57cec5SDimitry Andric return 0x00ff; 580b57cec5SDimitry Andric if (C < 0x0179) 590b57cec5SDimitry Andric return C; 600b57cec5SDimitry Andric // 3 characters 610b57cec5SDimitry Andric if (C <= 0x017d && C % 2 == 1) 620b57cec5SDimitry Andric return C + 1; 630b57cec5SDimitry Andric // LATIN SMALL LETTER LONG S 640b57cec5SDimitry Andric if (C == 0x017f) 650b57cec5SDimitry Andric return 0x0073; 660b57cec5SDimitry Andric // LATIN CAPITAL LETTER B WITH HOOK 670b57cec5SDimitry Andric if (C == 0x0181) 680b57cec5SDimitry Andric return 0x0253; 690b57cec5SDimitry Andric if (C < 0x0182) 700b57cec5SDimitry Andric return C; 710b57cec5SDimitry Andric // 2 characters 720b57cec5SDimitry Andric if (C <= 0x0184) 730b57cec5SDimitry Andric return C | 1; 740b57cec5SDimitry Andric // LATIN CAPITAL LETTER OPEN O 750b57cec5SDimitry Andric if (C == 0x0186) 760b57cec5SDimitry Andric return 0x0254; 770b57cec5SDimitry Andric // LATIN CAPITAL LETTER C WITH HOOK 780b57cec5SDimitry Andric if (C == 0x0187) 790b57cec5SDimitry Andric return 0x0188; 800b57cec5SDimitry Andric if (C < 0x0189) 810b57cec5SDimitry Andric return C; 820b57cec5SDimitry Andric // 2 characters 830b57cec5SDimitry Andric if (C <= 0x018a) 840b57cec5SDimitry Andric return C + 205; 850b57cec5SDimitry Andric // LATIN CAPITAL LETTER D WITH TOPBAR 860b57cec5SDimitry Andric if (C == 0x018b) 870b57cec5SDimitry Andric return 0x018c; 880b57cec5SDimitry Andric // LATIN CAPITAL LETTER REVERSED E 890b57cec5SDimitry Andric if (C == 0x018e) 900b57cec5SDimitry Andric return 0x01dd; 910b57cec5SDimitry Andric // LATIN CAPITAL LETTER SCHWA 920b57cec5SDimitry Andric if (C == 0x018f) 930b57cec5SDimitry Andric return 0x0259; 940b57cec5SDimitry Andric // LATIN CAPITAL LETTER OPEN E 950b57cec5SDimitry Andric if (C == 0x0190) 960b57cec5SDimitry Andric return 0x025b; 970b57cec5SDimitry Andric // LATIN CAPITAL LETTER F WITH HOOK 980b57cec5SDimitry Andric if (C == 0x0191) 990b57cec5SDimitry Andric return 0x0192; 1000b57cec5SDimitry Andric // LATIN CAPITAL LETTER G WITH HOOK 1010b57cec5SDimitry Andric if (C == 0x0193) 1020b57cec5SDimitry Andric return 0x0260; 1030b57cec5SDimitry Andric // LATIN CAPITAL LETTER GAMMA 1040b57cec5SDimitry Andric if (C == 0x0194) 1050b57cec5SDimitry Andric return 0x0263; 1060b57cec5SDimitry Andric // LATIN CAPITAL LETTER IOTA 1070b57cec5SDimitry Andric if (C == 0x0196) 1080b57cec5SDimitry Andric return 0x0269; 1090b57cec5SDimitry Andric // LATIN CAPITAL LETTER I WITH STROKE 1100b57cec5SDimitry Andric if (C == 0x0197) 1110b57cec5SDimitry Andric return 0x0268; 1120b57cec5SDimitry Andric // LATIN CAPITAL LETTER K WITH HOOK 1130b57cec5SDimitry Andric if (C == 0x0198) 1140b57cec5SDimitry Andric return 0x0199; 1150b57cec5SDimitry Andric // LATIN CAPITAL LETTER TURNED M 1160b57cec5SDimitry Andric if (C == 0x019c) 1170b57cec5SDimitry Andric return 0x026f; 1180b57cec5SDimitry Andric // LATIN CAPITAL LETTER N WITH LEFT HOOK 1190b57cec5SDimitry Andric if (C == 0x019d) 1200b57cec5SDimitry Andric return 0x0272; 1210b57cec5SDimitry Andric // LATIN CAPITAL LETTER O WITH MIDDLE TILDE 1220b57cec5SDimitry Andric if (C == 0x019f) 1230b57cec5SDimitry Andric return 0x0275; 1240b57cec5SDimitry Andric if (C < 0x01a0) 1250b57cec5SDimitry Andric return C; 1260b57cec5SDimitry Andric // 3 characters 1270b57cec5SDimitry Andric if (C <= 0x01a4) 1280b57cec5SDimitry Andric return C | 1; 1290b57cec5SDimitry Andric // LATIN LETTER YR 1300b57cec5SDimitry Andric if (C == 0x01a6) 1310b57cec5SDimitry Andric return 0x0280; 1320b57cec5SDimitry Andric // LATIN CAPITAL LETTER TONE TWO 1330b57cec5SDimitry Andric if (C == 0x01a7) 1340b57cec5SDimitry Andric return 0x01a8; 1350b57cec5SDimitry Andric // LATIN CAPITAL LETTER ESH 1360b57cec5SDimitry Andric if (C == 0x01a9) 1370b57cec5SDimitry Andric return 0x0283; 1380b57cec5SDimitry Andric // LATIN CAPITAL LETTER T WITH HOOK 1390b57cec5SDimitry Andric if (C == 0x01ac) 1400b57cec5SDimitry Andric return 0x01ad; 1410b57cec5SDimitry Andric // LATIN CAPITAL LETTER T WITH RETROFLEX HOOK 1420b57cec5SDimitry Andric if (C == 0x01ae) 1430b57cec5SDimitry Andric return 0x0288; 1440b57cec5SDimitry Andric // LATIN CAPITAL LETTER U WITH HORN 1450b57cec5SDimitry Andric if (C == 0x01af) 1460b57cec5SDimitry Andric return 0x01b0; 1470b57cec5SDimitry Andric if (C < 0x01b1) 1480b57cec5SDimitry Andric return C; 1490b57cec5SDimitry Andric // 2 characters 1500b57cec5SDimitry Andric if (C <= 0x01b2) 1510b57cec5SDimitry Andric return C + 217; 1520b57cec5SDimitry Andric if (C < 0x01b3) 1530b57cec5SDimitry Andric return C; 1540b57cec5SDimitry Andric // 2 characters 1550b57cec5SDimitry Andric if (C <= 0x01b5 && C % 2 == 1) 1560b57cec5SDimitry Andric return C + 1; 1570b57cec5SDimitry Andric // LATIN CAPITAL LETTER EZH 1580b57cec5SDimitry Andric if (C == 0x01b7) 1590b57cec5SDimitry Andric return 0x0292; 1600b57cec5SDimitry Andric if (C < 0x01b8) 1610b57cec5SDimitry Andric return C; 1620b57cec5SDimitry Andric // 2 characters 1630b57cec5SDimitry Andric if (C <= 0x01bc && C % 4 == 0) 1640b57cec5SDimitry Andric return C + 1; 1650b57cec5SDimitry Andric // LATIN CAPITAL LETTER DZ WITH CARON 1660b57cec5SDimitry Andric if (C == 0x01c4) 1670b57cec5SDimitry Andric return 0x01c6; 1680b57cec5SDimitry Andric // LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON 1690b57cec5SDimitry Andric if (C == 0x01c5) 1700b57cec5SDimitry Andric return 0x01c6; 1710b57cec5SDimitry Andric // LATIN CAPITAL LETTER LJ 1720b57cec5SDimitry Andric if (C == 0x01c7) 1730b57cec5SDimitry Andric return 0x01c9; 1740b57cec5SDimitry Andric // LATIN CAPITAL LETTER L WITH SMALL LETTER J 1750b57cec5SDimitry Andric if (C == 0x01c8) 1760b57cec5SDimitry Andric return 0x01c9; 1770b57cec5SDimitry Andric // LATIN CAPITAL LETTER NJ 1780b57cec5SDimitry Andric if (C == 0x01ca) 1790b57cec5SDimitry Andric return 0x01cc; 1800b57cec5SDimitry Andric if (C < 0x01cb) 1810b57cec5SDimitry Andric return C; 1820b57cec5SDimitry Andric // 9 characters 1830b57cec5SDimitry Andric if (C <= 0x01db && C % 2 == 1) 1840b57cec5SDimitry Andric return C + 1; 1850b57cec5SDimitry Andric if (C < 0x01de) 1860b57cec5SDimitry Andric return C; 1870b57cec5SDimitry Andric // 9 characters 1880b57cec5SDimitry Andric if (C <= 0x01ee) 1890b57cec5SDimitry Andric return C | 1; 1900b57cec5SDimitry Andric // LATIN CAPITAL LETTER DZ 1910b57cec5SDimitry Andric if (C == 0x01f1) 1920b57cec5SDimitry Andric return 0x01f3; 1930b57cec5SDimitry Andric if (C < 0x01f2) 1940b57cec5SDimitry Andric return C; 1950b57cec5SDimitry Andric // 2 characters 1960b57cec5SDimitry Andric if (C <= 0x01f4) 1970b57cec5SDimitry Andric return C | 1; 1980b57cec5SDimitry Andric // LATIN CAPITAL LETTER HWAIR 1990b57cec5SDimitry Andric if (C == 0x01f6) 2000b57cec5SDimitry Andric return 0x0195; 2010b57cec5SDimitry Andric // LATIN CAPITAL LETTER WYNN 2020b57cec5SDimitry Andric if (C == 0x01f7) 2030b57cec5SDimitry Andric return 0x01bf; 2040b57cec5SDimitry Andric if (C < 0x01f8) 2050b57cec5SDimitry Andric return C; 2060b57cec5SDimitry Andric // 20 characters 2070b57cec5SDimitry Andric if (C <= 0x021e) 2080b57cec5SDimitry Andric return C | 1; 2090b57cec5SDimitry Andric // LATIN CAPITAL LETTER N WITH LONG RIGHT LEG 2100b57cec5SDimitry Andric if (C == 0x0220) 2110b57cec5SDimitry Andric return 0x019e; 2120b57cec5SDimitry Andric if (C < 0x0222) 2130b57cec5SDimitry Andric return C; 2140b57cec5SDimitry Andric // 9 characters 2150b57cec5SDimitry Andric if (C <= 0x0232) 2160b57cec5SDimitry Andric return C | 1; 2170b57cec5SDimitry Andric // LATIN CAPITAL LETTER A WITH STROKE 2180b57cec5SDimitry Andric if (C == 0x023a) 2190b57cec5SDimitry Andric return 0x2c65; 2200b57cec5SDimitry Andric // LATIN CAPITAL LETTER C WITH STROKE 2210b57cec5SDimitry Andric if (C == 0x023b) 2220b57cec5SDimitry Andric return 0x023c; 2230b57cec5SDimitry Andric // LATIN CAPITAL LETTER L WITH BAR 2240b57cec5SDimitry Andric if (C == 0x023d) 2250b57cec5SDimitry Andric return 0x019a; 2260b57cec5SDimitry Andric // LATIN CAPITAL LETTER T WITH DIAGONAL STROKE 2270b57cec5SDimitry Andric if (C == 0x023e) 2280b57cec5SDimitry Andric return 0x2c66; 2290b57cec5SDimitry Andric // LATIN CAPITAL LETTER GLOTTAL STOP 2300b57cec5SDimitry Andric if (C == 0x0241) 2310b57cec5SDimitry Andric return 0x0242; 2320b57cec5SDimitry Andric // LATIN CAPITAL LETTER B WITH STROKE 2330b57cec5SDimitry Andric if (C == 0x0243) 2340b57cec5SDimitry Andric return 0x0180; 2350b57cec5SDimitry Andric // LATIN CAPITAL LETTER U BAR 2360b57cec5SDimitry Andric if (C == 0x0244) 2370b57cec5SDimitry Andric return 0x0289; 2380b57cec5SDimitry Andric // LATIN CAPITAL LETTER TURNED V 2390b57cec5SDimitry Andric if (C == 0x0245) 2400b57cec5SDimitry Andric return 0x028c; 2410b57cec5SDimitry Andric if (C < 0x0246) 2420b57cec5SDimitry Andric return C; 2430b57cec5SDimitry Andric // 5 characters 2440b57cec5SDimitry Andric if (C <= 0x024e) 2450b57cec5SDimitry Andric return C | 1; 2460b57cec5SDimitry Andric // COMBINING GREEK YPOGEGRAMMENI 2470b57cec5SDimitry Andric if (C == 0x0345) 2480b57cec5SDimitry Andric return 0x03b9; 2490b57cec5SDimitry Andric if (C < 0x0370) 2500b57cec5SDimitry Andric return C; 2510b57cec5SDimitry Andric // 2 characters 2520b57cec5SDimitry Andric if (C <= 0x0372) 2530b57cec5SDimitry Andric return C | 1; 2540b57cec5SDimitry Andric // GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA 2550b57cec5SDimitry Andric if (C == 0x0376) 2560b57cec5SDimitry Andric return 0x0377; 2570b57cec5SDimitry Andric // GREEK CAPITAL LETTER YOT 2580b57cec5SDimitry Andric if (C == 0x037f) 2590b57cec5SDimitry Andric return 0x03f3; 2600b57cec5SDimitry Andric // GREEK CAPITAL LETTER ALPHA WITH TONOS 2610b57cec5SDimitry Andric if (C == 0x0386) 2620b57cec5SDimitry Andric return 0x03ac; 2630b57cec5SDimitry Andric if (C < 0x0388) 2640b57cec5SDimitry Andric return C; 2650b57cec5SDimitry Andric // 3 characters 2660b57cec5SDimitry Andric if (C <= 0x038a) 2670b57cec5SDimitry Andric return C + 37; 2680b57cec5SDimitry Andric // GREEK CAPITAL LETTER OMICRON WITH TONOS 2690b57cec5SDimitry Andric if (C == 0x038c) 2700b57cec5SDimitry Andric return 0x03cc; 2710b57cec5SDimitry Andric if (C < 0x038e) 2720b57cec5SDimitry Andric return C; 2730b57cec5SDimitry Andric // 2 characters 2740b57cec5SDimitry Andric if (C <= 0x038f) 2750b57cec5SDimitry Andric return C + 63; 2760b57cec5SDimitry Andric if (C < 0x0391) 2770b57cec5SDimitry Andric return C; 2780b57cec5SDimitry Andric // 17 characters 2790b57cec5SDimitry Andric if (C <= 0x03a1) 2800b57cec5SDimitry Andric return C + 32; 2810b57cec5SDimitry Andric if (C < 0x03a3) 2820b57cec5SDimitry Andric return C; 2830b57cec5SDimitry Andric // 9 characters 2840b57cec5SDimitry Andric if (C <= 0x03ab) 2850b57cec5SDimitry Andric return C + 32; 2860b57cec5SDimitry Andric // GREEK SMALL LETTER FINAL SIGMA 2870b57cec5SDimitry Andric if (C == 0x03c2) 2880b57cec5SDimitry Andric return 0x03c3; 2890b57cec5SDimitry Andric // GREEK CAPITAL KAI SYMBOL 2900b57cec5SDimitry Andric if (C == 0x03cf) 2910b57cec5SDimitry Andric return 0x03d7; 2920b57cec5SDimitry Andric // GREEK BETA SYMBOL 2930b57cec5SDimitry Andric if (C == 0x03d0) 2940b57cec5SDimitry Andric return 0x03b2; 2950b57cec5SDimitry Andric // GREEK THETA SYMBOL 2960b57cec5SDimitry Andric if (C == 0x03d1) 2970b57cec5SDimitry Andric return 0x03b8; 2980b57cec5SDimitry Andric // GREEK PHI SYMBOL 2990b57cec5SDimitry Andric if (C == 0x03d5) 3000b57cec5SDimitry Andric return 0x03c6; 3010b57cec5SDimitry Andric // GREEK PI SYMBOL 3020b57cec5SDimitry Andric if (C == 0x03d6) 3030b57cec5SDimitry Andric return 0x03c0; 3040b57cec5SDimitry Andric if (C < 0x03d8) 3050b57cec5SDimitry Andric return C; 3060b57cec5SDimitry Andric // 12 characters 3070b57cec5SDimitry Andric if (C <= 0x03ee) 3080b57cec5SDimitry Andric return C | 1; 3090b57cec5SDimitry Andric // GREEK KAPPA SYMBOL 3100b57cec5SDimitry Andric if (C == 0x03f0) 3110b57cec5SDimitry Andric return 0x03ba; 3120b57cec5SDimitry Andric // GREEK RHO SYMBOL 3130b57cec5SDimitry Andric if (C == 0x03f1) 3140b57cec5SDimitry Andric return 0x03c1; 3150b57cec5SDimitry Andric // GREEK CAPITAL THETA SYMBOL 3160b57cec5SDimitry Andric if (C == 0x03f4) 3170b57cec5SDimitry Andric return 0x03b8; 3180b57cec5SDimitry Andric // GREEK LUNATE EPSILON SYMBOL 3190b57cec5SDimitry Andric if (C == 0x03f5) 3200b57cec5SDimitry Andric return 0x03b5; 3210b57cec5SDimitry Andric // GREEK CAPITAL LETTER SHO 3220b57cec5SDimitry Andric if (C == 0x03f7) 3230b57cec5SDimitry Andric return 0x03f8; 3240b57cec5SDimitry Andric // GREEK CAPITAL LUNATE SIGMA SYMBOL 3250b57cec5SDimitry Andric if (C == 0x03f9) 3260b57cec5SDimitry Andric return 0x03f2; 3270b57cec5SDimitry Andric // GREEK CAPITAL LETTER SAN 3280b57cec5SDimitry Andric if (C == 0x03fa) 3290b57cec5SDimitry Andric return 0x03fb; 3300b57cec5SDimitry Andric if (C < 0x03fd) 3310b57cec5SDimitry Andric return C; 3320b57cec5SDimitry Andric // 3 characters 3330b57cec5SDimitry Andric if (C <= 0x03ff) 3340b57cec5SDimitry Andric return C + -130; 3350b57cec5SDimitry Andric if (C < 0x0400) 3360b57cec5SDimitry Andric return C; 3370b57cec5SDimitry Andric // 16 characters 3380b57cec5SDimitry Andric if (C <= 0x040f) 3390b57cec5SDimitry Andric return C + 80; 3400b57cec5SDimitry Andric if (C < 0x0410) 3410b57cec5SDimitry Andric return C; 3420b57cec5SDimitry Andric // 32 characters 3430b57cec5SDimitry Andric if (C <= 0x042f) 3440b57cec5SDimitry Andric return C + 32; 3450b57cec5SDimitry Andric if (C < 0x0460) 3460b57cec5SDimitry Andric return C; 3470b57cec5SDimitry Andric // 17 characters 3480b57cec5SDimitry Andric if (C <= 0x0480) 3490b57cec5SDimitry Andric return C | 1; 3500b57cec5SDimitry Andric if (C < 0x048a) 3510b57cec5SDimitry Andric return C; 3520b57cec5SDimitry Andric // 27 characters 3530b57cec5SDimitry Andric if (C <= 0x04be) 3540b57cec5SDimitry Andric return C | 1; 3550b57cec5SDimitry Andric // CYRILLIC LETTER PALOCHKA 3560b57cec5SDimitry Andric if (C == 0x04c0) 3570b57cec5SDimitry Andric return 0x04cf; 3580b57cec5SDimitry Andric if (C < 0x04c1) 3590b57cec5SDimitry Andric return C; 3600b57cec5SDimitry Andric // 7 characters 3610b57cec5SDimitry Andric if (C <= 0x04cd && C % 2 == 1) 3620b57cec5SDimitry Andric return C + 1; 3630b57cec5SDimitry Andric if (C < 0x04d0) 3640b57cec5SDimitry Andric return C; 3650b57cec5SDimitry Andric // 48 characters 3660b57cec5SDimitry Andric if (C <= 0x052e) 3670b57cec5SDimitry Andric return C | 1; 3680b57cec5SDimitry Andric if (C < 0x0531) 3690b57cec5SDimitry Andric return C; 3700b57cec5SDimitry Andric // 38 characters 3710b57cec5SDimitry Andric if (C <= 0x0556) 3720b57cec5SDimitry Andric return C + 48; 3730b57cec5SDimitry Andric if (C < 0x10a0) 3740b57cec5SDimitry Andric return C; 3750b57cec5SDimitry Andric // 38 characters 3760b57cec5SDimitry Andric if (C <= 0x10c5) 3770b57cec5SDimitry Andric return C + 7264; 3780b57cec5SDimitry Andric if (C < 0x10c7) 3790b57cec5SDimitry Andric return C; 3800b57cec5SDimitry Andric // 2 characters 3810b57cec5SDimitry Andric if (C <= 0x10cd && C % 6 == 5) 3820b57cec5SDimitry Andric return C + 7264; 3830b57cec5SDimitry Andric if (C < 0x13f8) 3840b57cec5SDimitry Andric return C; 3850b57cec5SDimitry Andric // 6 characters 3860b57cec5SDimitry Andric if (C <= 0x13fd) 3870b57cec5SDimitry Andric return C + -8; 3880b57cec5SDimitry Andric // CYRILLIC SMALL LETTER ROUNDED VE 3890b57cec5SDimitry Andric if (C == 0x1c80) 3900b57cec5SDimitry Andric return 0x0432; 3910b57cec5SDimitry Andric // CYRILLIC SMALL LETTER LONG-LEGGED DE 3920b57cec5SDimitry Andric if (C == 0x1c81) 3930b57cec5SDimitry Andric return 0x0434; 3940b57cec5SDimitry Andric // CYRILLIC SMALL LETTER NARROW O 3950b57cec5SDimitry Andric if (C == 0x1c82) 3960b57cec5SDimitry Andric return 0x043e; 3970b57cec5SDimitry Andric if (C < 0x1c83) 3980b57cec5SDimitry Andric return C; 3990b57cec5SDimitry Andric // 2 characters 4000b57cec5SDimitry Andric if (C <= 0x1c84) 4010b57cec5SDimitry Andric return C + -6210; 4020b57cec5SDimitry Andric // CYRILLIC SMALL LETTER THREE-LEGGED TE 4030b57cec5SDimitry Andric if (C == 0x1c85) 4040b57cec5SDimitry Andric return 0x0442; 4050b57cec5SDimitry Andric // CYRILLIC SMALL LETTER TALL HARD SIGN 4060b57cec5SDimitry Andric if (C == 0x1c86) 4070b57cec5SDimitry Andric return 0x044a; 4080b57cec5SDimitry Andric // CYRILLIC SMALL LETTER TALL YAT 4090b57cec5SDimitry Andric if (C == 0x1c87) 4100b57cec5SDimitry Andric return 0x0463; 4110b57cec5SDimitry Andric // CYRILLIC SMALL LETTER UNBLENDED UK 4120b57cec5SDimitry Andric if (C == 0x1c88) 4130b57cec5SDimitry Andric return 0xa64b; 414bdd1243dSDimitry Andric if (C < 0x1c90) 415bdd1243dSDimitry Andric return C; 416bdd1243dSDimitry Andric // 43 characters 417bdd1243dSDimitry Andric if (C <= 0x1cba) 418bdd1243dSDimitry Andric return C + -3008; 419bdd1243dSDimitry Andric if (C < 0x1cbd) 420bdd1243dSDimitry Andric return C; 421bdd1243dSDimitry Andric // 3 characters 422bdd1243dSDimitry Andric if (C <= 0x1cbf) 423bdd1243dSDimitry Andric return C + -3008; 4240b57cec5SDimitry Andric if (C < 0x1e00) 4250b57cec5SDimitry Andric return C; 4260b57cec5SDimitry Andric // 75 characters 4270b57cec5SDimitry Andric if (C <= 0x1e94) 4280b57cec5SDimitry Andric return C | 1; 4290b57cec5SDimitry Andric // LATIN SMALL LETTER LONG S WITH DOT ABOVE 4300b57cec5SDimitry Andric if (C == 0x1e9b) 4310b57cec5SDimitry Andric return 0x1e61; 4320b57cec5SDimitry Andric // LATIN CAPITAL LETTER SHARP S 4330b57cec5SDimitry Andric if (C == 0x1e9e) 4340b57cec5SDimitry Andric return 0x00df; 4350b57cec5SDimitry Andric if (C < 0x1ea0) 4360b57cec5SDimitry Andric return C; 4370b57cec5SDimitry Andric // 48 characters 4380b57cec5SDimitry Andric if (C <= 0x1efe) 4390b57cec5SDimitry Andric return C | 1; 4400b57cec5SDimitry Andric if (C < 0x1f08) 4410b57cec5SDimitry Andric return C; 4420b57cec5SDimitry Andric // 8 characters 4430b57cec5SDimitry Andric if (C <= 0x1f0f) 4440b57cec5SDimitry Andric return C + -8; 4450b57cec5SDimitry Andric if (C < 0x1f18) 4460b57cec5SDimitry Andric return C; 4470b57cec5SDimitry Andric // 6 characters 4480b57cec5SDimitry Andric if (C <= 0x1f1d) 4490b57cec5SDimitry Andric return C + -8; 4500b57cec5SDimitry Andric if (C < 0x1f28) 4510b57cec5SDimitry Andric return C; 4520b57cec5SDimitry Andric // 8 characters 4530b57cec5SDimitry Andric if (C <= 0x1f2f) 4540b57cec5SDimitry Andric return C + -8; 4550b57cec5SDimitry Andric if (C < 0x1f38) 4560b57cec5SDimitry Andric return C; 4570b57cec5SDimitry Andric // 8 characters 4580b57cec5SDimitry Andric if (C <= 0x1f3f) 4590b57cec5SDimitry Andric return C + -8; 4600b57cec5SDimitry Andric if (C < 0x1f48) 4610b57cec5SDimitry Andric return C; 4620b57cec5SDimitry Andric // 6 characters 4630b57cec5SDimitry Andric if (C <= 0x1f4d) 4640b57cec5SDimitry Andric return C + -8; 4650b57cec5SDimitry Andric if (C < 0x1f59) 4660b57cec5SDimitry Andric return C; 4670b57cec5SDimitry Andric // 4 characters 4680b57cec5SDimitry Andric if (C <= 0x1f5f && C % 2 == 1) 4690b57cec5SDimitry Andric return C + -8; 4700b57cec5SDimitry Andric if (C < 0x1f68) 4710b57cec5SDimitry Andric return C; 4720b57cec5SDimitry Andric // 8 characters 4730b57cec5SDimitry Andric if (C <= 0x1f6f) 4740b57cec5SDimitry Andric return C + -8; 4750b57cec5SDimitry Andric if (C < 0x1f88) 4760b57cec5SDimitry Andric return C; 4770b57cec5SDimitry Andric // 8 characters 4780b57cec5SDimitry Andric if (C <= 0x1f8f) 4790b57cec5SDimitry Andric return C + -8; 4800b57cec5SDimitry Andric if (C < 0x1f98) 4810b57cec5SDimitry Andric return C; 4820b57cec5SDimitry Andric // 8 characters 4830b57cec5SDimitry Andric if (C <= 0x1f9f) 4840b57cec5SDimitry Andric return C + -8; 4850b57cec5SDimitry Andric if (C < 0x1fa8) 4860b57cec5SDimitry Andric return C; 4870b57cec5SDimitry Andric // 8 characters 4880b57cec5SDimitry Andric if (C <= 0x1faf) 4890b57cec5SDimitry Andric return C + -8; 4900b57cec5SDimitry Andric if (C < 0x1fb8) 4910b57cec5SDimitry Andric return C; 4920b57cec5SDimitry Andric // 2 characters 4930b57cec5SDimitry Andric if (C <= 0x1fb9) 4940b57cec5SDimitry Andric return C + -8; 4950b57cec5SDimitry Andric if (C < 0x1fba) 4960b57cec5SDimitry Andric return C; 4970b57cec5SDimitry Andric // 2 characters 4980b57cec5SDimitry Andric if (C <= 0x1fbb) 4990b57cec5SDimitry Andric return C + -74; 5000b57cec5SDimitry Andric // GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI 5010b57cec5SDimitry Andric if (C == 0x1fbc) 5020b57cec5SDimitry Andric return 0x1fb3; 5030b57cec5SDimitry Andric // GREEK PROSGEGRAMMENI 5040b57cec5SDimitry Andric if (C == 0x1fbe) 5050b57cec5SDimitry Andric return 0x03b9; 5060b57cec5SDimitry Andric if (C < 0x1fc8) 5070b57cec5SDimitry Andric return C; 5080b57cec5SDimitry Andric // 4 characters 5090b57cec5SDimitry Andric if (C <= 0x1fcb) 5100b57cec5SDimitry Andric return C + -86; 5110b57cec5SDimitry Andric // GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI 5120b57cec5SDimitry Andric if (C == 0x1fcc) 5130b57cec5SDimitry Andric return 0x1fc3; 514*7a6dacacSDimitry Andric // GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA 515*7a6dacacSDimitry Andric if (C == 0x1fd3) 516*7a6dacacSDimitry Andric return 0x0390; 5170b57cec5SDimitry Andric if (C < 0x1fd8) 5180b57cec5SDimitry Andric return C; 5190b57cec5SDimitry Andric // 2 characters 5200b57cec5SDimitry Andric if (C <= 0x1fd9) 5210b57cec5SDimitry Andric return C + -8; 5220b57cec5SDimitry Andric if (C < 0x1fda) 5230b57cec5SDimitry Andric return C; 5240b57cec5SDimitry Andric // 2 characters 5250b57cec5SDimitry Andric if (C <= 0x1fdb) 5260b57cec5SDimitry Andric return C + -100; 527*7a6dacacSDimitry Andric // GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA 528*7a6dacacSDimitry Andric if (C == 0x1fe3) 529*7a6dacacSDimitry Andric return 0x03b0; 5300b57cec5SDimitry Andric if (C < 0x1fe8) 5310b57cec5SDimitry Andric return C; 5320b57cec5SDimitry Andric // 2 characters 5330b57cec5SDimitry Andric if (C <= 0x1fe9) 5340b57cec5SDimitry Andric return C + -8; 5350b57cec5SDimitry Andric if (C < 0x1fea) 5360b57cec5SDimitry Andric return C; 5370b57cec5SDimitry Andric // 2 characters 5380b57cec5SDimitry Andric if (C <= 0x1feb) 5390b57cec5SDimitry Andric return C + -112; 5400b57cec5SDimitry Andric // GREEK CAPITAL LETTER RHO WITH DASIA 5410b57cec5SDimitry Andric if (C == 0x1fec) 5420b57cec5SDimitry Andric return 0x1fe5; 5430b57cec5SDimitry Andric if (C < 0x1ff8) 5440b57cec5SDimitry Andric return C; 5450b57cec5SDimitry Andric // 2 characters 5460b57cec5SDimitry Andric if (C <= 0x1ff9) 5470b57cec5SDimitry Andric return C + -128; 5480b57cec5SDimitry Andric if (C < 0x1ffa) 5490b57cec5SDimitry Andric return C; 5500b57cec5SDimitry Andric // 2 characters 5510b57cec5SDimitry Andric if (C <= 0x1ffb) 5520b57cec5SDimitry Andric return C + -126; 5530b57cec5SDimitry Andric // GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI 5540b57cec5SDimitry Andric if (C == 0x1ffc) 5550b57cec5SDimitry Andric return 0x1ff3; 5560b57cec5SDimitry Andric // OHM SIGN 5570b57cec5SDimitry Andric if (C == 0x2126) 5580b57cec5SDimitry Andric return 0x03c9; 5590b57cec5SDimitry Andric // KELVIN SIGN 5600b57cec5SDimitry Andric if (C == 0x212a) 5610b57cec5SDimitry Andric return 0x006b; 5620b57cec5SDimitry Andric // ANGSTROM SIGN 5630b57cec5SDimitry Andric if (C == 0x212b) 5640b57cec5SDimitry Andric return 0x00e5; 5650b57cec5SDimitry Andric // TURNED CAPITAL F 5660b57cec5SDimitry Andric if (C == 0x2132) 5670b57cec5SDimitry Andric return 0x214e; 5680b57cec5SDimitry Andric if (C < 0x2160) 5690b57cec5SDimitry Andric return C; 5700b57cec5SDimitry Andric // 16 characters 5710b57cec5SDimitry Andric if (C <= 0x216f) 5720b57cec5SDimitry Andric return C + 16; 5730b57cec5SDimitry Andric // ROMAN NUMERAL REVERSED ONE HUNDRED 5740b57cec5SDimitry Andric if (C == 0x2183) 5750b57cec5SDimitry Andric return 0x2184; 5760b57cec5SDimitry Andric if (C < 0x24b6) 5770b57cec5SDimitry Andric return C; 5780b57cec5SDimitry Andric // 26 characters 5790b57cec5SDimitry Andric if (C <= 0x24cf) 5800b57cec5SDimitry Andric return C + 26; 5810b57cec5SDimitry Andric if (C < 0x2c00) 5820b57cec5SDimitry Andric return C; 583bdd1243dSDimitry Andric // 48 characters 584bdd1243dSDimitry Andric if (C <= 0x2c2f) 5850b57cec5SDimitry Andric return C + 48; 5860b57cec5SDimitry Andric // LATIN CAPITAL LETTER L WITH DOUBLE BAR 5870b57cec5SDimitry Andric if (C == 0x2c60) 5880b57cec5SDimitry Andric return 0x2c61; 5890b57cec5SDimitry Andric // LATIN CAPITAL LETTER L WITH MIDDLE TILDE 5900b57cec5SDimitry Andric if (C == 0x2c62) 5910b57cec5SDimitry Andric return 0x026b; 5920b57cec5SDimitry Andric // LATIN CAPITAL LETTER P WITH STROKE 5930b57cec5SDimitry Andric if (C == 0x2c63) 5940b57cec5SDimitry Andric return 0x1d7d; 5950b57cec5SDimitry Andric // LATIN CAPITAL LETTER R WITH TAIL 5960b57cec5SDimitry Andric if (C == 0x2c64) 5970b57cec5SDimitry Andric return 0x027d; 5980b57cec5SDimitry Andric if (C < 0x2c67) 5990b57cec5SDimitry Andric return C; 6000b57cec5SDimitry Andric // 3 characters 6010b57cec5SDimitry Andric if (C <= 0x2c6b && C % 2 == 1) 6020b57cec5SDimitry Andric return C + 1; 6030b57cec5SDimitry Andric // LATIN CAPITAL LETTER ALPHA 6040b57cec5SDimitry Andric if (C == 0x2c6d) 6050b57cec5SDimitry Andric return 0x0251; 6060b57cec5SDimitry Andric // LATIN CAPITAL LETTER M WITH HOOK 6070b57cec5SDimitry Andric if (C == 0x2c6e) 6080b57cec5SDimitry Andric return 0x0271; 6090b57cec5SDimitry Andric // LATIN CAPITAL LETTER TURNED A 6100b57cec5SDimitry Andric if (C == 0x2c6f) 6110b57cec5SDimitry Andric return 0x0250; 6120b57cec5SDimitry Andric // LATIN CAPITAL LETTER TURNED ALPHA 6130b57cec5SDimitry Andric if (C == 0x2c70) 6140b57cec5SDimitry Andric return 0x0252; 6150b57cec5SDimitry Andric if (C < 0x2c72) 6160b57cec5SDimitry Andric return C; 6170b57cec5SDimitry Andric // 2 characters 6180b57cec5SDimitry Andric if (C <= 0x2c75 && C % 3 == 2) 6190b57cec5SDimitry Andric return C + 1; 6200b57cec5SDimitry Andric if (C < 0x2c7e) 6210b57cec5SDimitry Andric return C; 6220b57cec5SDimitry Andric // 2 characters 6230b57cec5SDimitry Andric if (C <= 0x2c7f) 6240b57cec5SDimitry Andric return C + -10815; 6250b57cec5SDimitry Andric if (C < 0x2c80) 6260b57cec5SDimitry Andric return C; 6270b57cec5SDimitry Andric // 50 characters 6280b57cec5SDimitry Andric if (C <= 0x2ce2) 6290b57cec5SDimitry Andric return C | 1; 6300b57cec5SDimitry Andric if (C < 0x2ceb) 6310b57cec5SDimitry Andric return C; 6320b57cec5SDimitry Andric // 2 characters 6330b57cec5SDimitry Andric if (C <= 0x2ced && C % 2 == 1) 6340b57cec5SDimitry Andric return C + 1; 6350b57cec5SDimitry Andric if (C < 0x2cf2) 6360b57cec5SDimitry Andric return C; 6370b57cec5SDimitry Andric // 2 characters 6380b57cec5SDimitry Andric if (C <= 0xa640 && C % 31054 == 11506) 6390b57cec5SDimitry Andric return C + 1; 6400b57cec5SDimitry Andric if (C < 0xa642) 6410b57cec5SDimitry Andric return C; 6420b57cec5SDimitry Andric // 22 characters 6430b57cec5SDimitry Andric if (C <= 0xa66c) 6440b57cec5SDimitry Andric return C | 1; 6450b57cec5SDimitry Andric if (C < 0xa680) 6460b57cec5SDimitry Andric return C; 6470b57cec5SDimitry Andric // 14 characters 6480b57cec5SDimitry Andric if (C <= 0xa69a) 6490b57cec5SDimitry Andric return C | 1; 6500b57cec5SDimitry Andric if (C < 0xa722) 6510b57cec5SDimitry Andric return C; 6520b57cec5SDimitry Andric // 7 characters 6530b57cec5SDimitry Andric if (C <= 0xa72e) 6540b57cec5SDimitry Andric return C | 1; 6550b57cec5SDimitry Andric if (C < 0xa732) 6560b57cec5SDimitry Andric return C; 6570b57cec5SDimitry Andric // 31 characters 6580b57cec5SDimitry Andric if (C <= 0xa76e) 6590b57cec5SDimitry Andric return C | 1; 6600b57cec5SDimitry Andric if (C < 0xa779) 6610b57cec5SDimitry Andric return C; 6620b57cec5SDimitry Andric // 2 characters 6630b57cec5SDimitry Andric if (C <= 0xa77b && C % 2 == 1) 6640b57cec5SDimitry Andric return C + 1; 6650b57cec5SDimitry Andric // LATIN CAPITAL LETTER INSULAR G 6660b57cec5SDimitry Andric if (C == 0xa77d) 6670b57cec5SDimitry Andric return 0x1d79; 6680b57cec5SDimitry Andric if (C < 0xa77e) 6690b57cec5SDimitry Andric return C; 6700b57cec5SDimitry Andric // 5 characters 6710b57cec5SDimitry Andric if (C <= 0xa786) 6720b57cec5SDimitry Andric return C | 1; 6730b57cec5SDimitry Andric // LATIN CAPITAL LETTER SALTILLO 6740b57cec5SDimitry Andric if (C == 0xa78b) 6750b57cec5SDimitry Andric return 0xa78c; 6760b57cec5SDimitry Andric // LATIN CAPITAL LETTER TURNED H 6770b57cec5SDimitry Andric if (C == 0xa78d) 6780b57cec5SDimitry Andric return 0x0265; 6790b57cec5SDimitry Andric if (C < 0xa790) 6800b57cec5SDimitry Andric return C; 6810b57cec5SDimitry Andric // 2 characters 6820b57cec5SDimitry Andric if (C <= 0xa792) 6830b57cec5SDimitry Andric return C | 1; 6840b57cec5SDimitry Andric if (C < 0xa796) 6850b57cec5SDimitry Andric return C; 6860b57cec5SDimitry Andric // 10 characters 6870b57cec5SDimitry Andric if (C <= 0xa7a8) 6880b57cec5SDimitry Andric return C | 1; 6890b57cec5SDimitry Andric // LATIN CAPITAL LETTER H WITH HOOK 6900b57cec5SDimitry Andric if (C == 0xa7aa) 6910b57cec5SDimitry Andric return 0x0266; 6920b57cec5SDimitry Andric // LATIN CAPITAL LETTER REVERSED OPEN E 6930b57cec5SDimitry Andric if (C == 0xa7ab) 6940b57cec5SDimitry Andric return 0x025c; 6950b57cec5SDimitry Andric // LATIN CAPITAL LETTER SCRIPT G 6960b57cec5SDimitry Andric if (C == 0xa7ac) 6970b57cec5SDimitry Andric return 0x0261; 6980b57cec5SDimitry Andric // LATIN CAPITAL LETTER L WITH BELT 6990b57cec5SDimitry Andric if (C == 0xa7ad) 7000b57cec5SDimitry Andric return 0x026c; 7010b57cec5SDimitry Andric // LATIN CAPITAL LETTER SMALL CAPITAL I 7020b57cec5SDimitry Andric if (C == 0xa7ae) 7030b57cec5SDimitry Andric return 0x026a; 7040b57cec5SDimitry Andric // LATIN CAPITAL LETTER TURNED K 7050b57cec5SDimitry Andric if (C == 0xa7b0) 7060b57cec5SDimitry Andric return 0x029e; 7070b57cec5SDimitry Andric // LATIN CAPITAL LETTER TURNED T 7080b57cec5SDimitry Andric if (C == 0xa7b1) 7090b57cec5SDimitry Andric return 0x0287; 7100b57cec5SDimitry Andric // LATIN CAPITAL LETTER J WITH CROSSED-TAIL 7110b57cec5SDimitry Andric if (C == 0xa7b2) 7120b57cec5SDimitry Andric return 0x029d; 7130b57cec5SDimitry Andric // LATIN CAPITAL LETTER CHI 7140b57cec5SDimitry Andric if (C == 0xa7b3) 7150b57cec5SDimitry Andric return 0xab53; 7160b57cec5SDimitry Andric if (C < 0xa7b4) 7170b57cec5SDimitry Andric return C; 718bdd1243dSDimitry Andric // 8 characters 719bdd1243dSDimitry Andric if (C <= 0xa7c2) 7200b57cec5SDimitry Andric return C | 1; 721bdd1243dSDimitry Andric // LATIN CAPITAL LETTER C WITH PALATAL HOOK 722bdd1243dSDimitry Andric if (C == 0xa7c4) 723bdd1243dSDimitry Andric return 0xa794; 724bdd1243dSDimitry Andric // LATIN CAPITAL LETTER S WITH HOOK 725bdd1243dSDimitry Andric if (C == 0xa7c5) 726bdd1243dSDimitry Andric return 0x0282; 727bdd1243dSDimitry Andric // LATIN CAPITAL LETTER Z WITH PALATAL HOOK 728bdd1243dSDimitry Andric if (C == 0xa7c6) 729bdd1243dSDimitry Andric return 0x1d8e; 730bdd1243dSDimitry Andric if (C < 0xa7c7) 731bdd1243dSDimitry Andric return C; 732bdd1243dSDimitry Andric // 2 characters 733bdd1243dSDimitry Andric if (C <= 0xa7c9 && C % 2 == 1) 734bdd1243dSDimitry Andric return C + 1; 735bdd1243dSDimitry Andric if (C < 0xa7d0) 736bdd1243dSDimitry Andric return C; 737bdd1243dSDimitry Andric // 2 characters 738bdd1243dSDimitry Andric if (C <= 0xa7d6 && C % 6 == 0) 739bdd1243dSDimitry Andric return C + 1; 740bdd1243dSDimitry Andric if (C < 0xa7d8) 741bdd1243dSDimitry Andric return C; 742bdd1243dSDimitry Andric // 2 characters 743bdd1243dSDimitry Andric if (C <= 0xa7f5 && C % 29 == 19) 744bdd1243dSDimitry Andric return C + 1; 7450b57cec5SDimitry Andric if (C < 0xab70) 7460b57cec5SDimitry Andric return C; 7470b57cec5SDimitry Andric // 80 characters 7480b57cec5SDimitry Andric if (C <= 0xabbf) 7490b57cec5SDimitry Andric return C + -38864; 750*7a6dacacSDimitry Andric // LATIN SMALL LIGATURE LONG S T 751*7a6dacacSDimitry Andric if (C == 0xfb05) 752*7a6dacacSDimitry Andric return 0xfb06; 7530b57cec5SDimitry Andric if (C < 0xff21) 7540b57cec5SDimitry Andric return C; 7550b57cec5SDimitry Andric // 26 characters 7560b57cec5SDimitry Andric if (C <= 0xff3a) 7570b57cec5SDimitry Andric return C + 32; 7580b57cec5SDimitry Andric if (C < 0x10400) 7590b57cec5SDimitry Andric return C; 7600b57cec5SDimitry Andric // 40 characters 7610b57cec5SDimitry Andric if (C <= 0x10427) 7620b57cec5SDimitry Andric return C + 40; 7630b57cec5SDimitry Andric if (C < 0x104b0) 7640b57cec5SDimitry Andric return C; 7650b57cec5SDimitry Andric // 36 characters 7660b57cec5SDimitry Andric if (C <= 0x104d3) 7670b57cec5SDimitry Andric return C + 40; 768bdd1243dSDimitry Andric if (C < 0x10570) 769bdd1243dSDimitry Andric return C; 770bdd1243dSDimitry Andric // 11 characters 771bdd1243dSDimitry Andric if (C <= 0x1057a) 772bdd1243dSDimitry Andric return C + 39; 773bdd1243dSDimitry Andric if (C < 0x1057c) 774bdd1243dSDimitry Andric return C; 775bdd1243dSDimitry Andric // 15 characters 776bdd1243dSDimitry Andric if (C <= 0x1058a) 777bdd1243dSDimitry Andric return C + 39; 778bdd1243dSDimitry Andric if (C < 0x1058c) 779bdd1243dSDimitry Andric return C; 780bdd1243dSDimitry Andric // 7 characters 781bdd1243dSDimitry Andric if (C <= 0x10592) 782bdd1243dSDimitry Andric return C + 39; 783bdd1243dSDimitry Andric if (C < 0x10594) 784bdd1243dSDimitry Andric return C; 785bdd1243dSDimitry Andric // 2 characters 786bdd1243dSDimitry Andric if (C <= 0x10595) 787bdd1243dSDimitry Andric return C + 39; 7880b57cec5SDimitry Andric if (C < 0x10c80) 7890b57cec5SDimitry Andric return C; 7900b57cec5SDimitry Andric // 51 characters 7910b57cec5SDimitry Andric if (C <= 0x10cb2) 7920b57cec5SDimitry Andric return C + 64; 7930b57cec5SDimitry Andric if (C < 0x118a0) 7940b57cec5SDimitry Andric return C; 7950b57cec5SDimitry Andric // 32 characters 7960b57cec5SDimitry Andric if (C <= 0x118bf) 7970b57cec5SDimitry Andric return C + 32; 798bdd1243dSDimitry Andric if (C < 0x16e40) 799bdd1243dSDimitry Andric return C; 800bdd1243dSDimitry Andric // 32 characters 801bdd1243dSDimitry Andric if (C <= 0x16e5f) 802bdd1243dSDimitry Andric return C + 32; 8030b57cec5SDimitry Andric if (C < 0x1e900) 8040b57cec5SDimitry Andric return C; 8050b57cec5SDimitry Andric // 34 characters 8060b57cec5SDimitry Andric if (C <= 0x1e921) 8070b57cec5SDimitry Andric return C + 34; 8080b57cec5SDimitry Andric 8090b57cec5SDimitry Andric return C; 8100b57cec5SDimitry Andric } 811