1//===---------- Support/UnicodeCaseFold.cpp -------------------------------===//
2//
3// This file was generated by utils/unicode-case-fold.py from the Unicode
4// case folding database at
5// http://www.unicode.org/Public/15.1.0/ucd/CaseFolding.txt
6//
7// To regenerate this file, run:
8// utils/unicode-case-fold.py \
9// "http://www.unicode.org/Public/15.1.0/ucd/CaseFolding.txt" \
10// > lib/Support/UnicodeCaseFold.cpp
11//
12//===----------------------------------------------------------------------===//
13
14#include "llvm/Support/Unicode.h"
15
16int llvm::sys::unicode::foldCharSimple(int C) {
17 if (C < 0x0041)
18 return C;
19 // 26 characters
20 if (C <= 0x005a)
21 return C + 32;
22 // MICRO SIGN
23 if (C == 0x00b5)
24 return 0x03bc;
25 if (C < 0x00c0)
26 return C;
27 // 23 characters
28 if (C <= 0x00d6)
29 return C + 32;
30 if (C < 0x00d8)
31 return C;
32 // 7 characters
33 if (C <= 0x00de)
34 return C + 32;
35 if (C < 0x0100)
36 return C;
37 // 24 characters
38 if (C <= 0x012e)
39 return C | 1;
40 if (C < 0x0132)
41 return C;
42 // 3 characters
43 if (C <= 0x0136)
44 return C | 1;
45 if (C < 0x0139)
46 return C;
47 // 8 characters
48 if (C <= 0x0147 && C % 2 == 1)
49 return C + 1;
50 if (C < 0x014a)
51 return C;
52 // 23 characters
53 if (C <= 0x0176)
54 return C | 1;
55 // LATIN CAPITAL LETTER Y WITH DIAERESIS
56 if (C == 0x0178)
57 return 0x00ff;
58 if (C < 0x0179)
59 return C;
60 // 3 characters
61 if (C <= 0x017d && C % 2 == 1)
62 return C + 1;
63 // LATIN SMALL LETTER LONG S
64 if (C == 0x017f)
65 return 0x0073;
66 // LATIN CAPITAL LETTER B WITH HOOK
67 if (C == 0x0181)
68 return 0x0253;
69 if (C < 0x0182)
70 return C;
71 // 2 characters
72 if (C <= 0x0184)
73 return C | 1;
74 // LATIN CAPITAL LETTER OPEN O
75 if (C == 0x0186)
76 return 0x0254;
77 // LATIN CAPITAL LETTER C WITH HOOK
78 if (C == 0x0187)
79 return 0x0188;
80 if (C < 0x0189)
81 return C;
82 // 2 characters
83 if (C <= 0x018a)
84 return C + 205;
85 // LATIN CAPITAL LETTER D WITH TOPBAR
86 if (C == 0x018b)
87 return 0x018c;
88 // LATIN CAPITAL LETTER REVERSED E
89 if (C == 0x018e)
90 return 0x01dd;
91 // LATIN CAPITAL LETTER SCHWA
92 if (C == 0x018f)
93 return 0x0259;
94 // LATIN CAPITAL LETTER OPEN E
95 if (C == 0x0190)
96 return 0x025b;
97 // LATIN CAPITAL LETTER F WITH HOOK
98 if (C == 0x0191)
99 return 0x0192;
100 // LATIN CAPITAL LETTER G WITH HOOK
101 if (C == 0x0193)
102 return 0x0260;
103 // LATIN CAPITAL LETTER GAMMA
104 if (C == 0x0194)
105 return 0x0263;
106 // LATIN CAPITAL LETTER IOTA
107 if (C == 0x0196)
108 return 0x0269;
109 // LATIN CAPITAL LETTER I WITH STROKE
110 if (C == 0x0197)
111 return 0x0268;
112 // LATIN CAPITAL LETTER K WITH HOOK
113 if (C == 0x0198)
114 return 0x0199;
115 // LATIN CAPITAL LETTER TURNED M
116 if (C == 0x019c)
117 return 0x026f;
118 // LATIN CAPITAL LETTER N WITH LEFT HOOK
119 if (C == 0x019d)
120 return 0x0272;
121 // LATIN CAPITAL LETTER O WITH MIDDLE TILDE
122 if (C == 0x019f)
123 return 0x0275;
124 if (C < 0x01a0)
125 return C;
126 // 3 characters
127 if (C <= 0x01a4)
128 return C | 1;
129 // LATIN LETTER YR
130 if (C == 0x01a6)
131 return 0x0280;
132 // LATIN CAPITAL LETTER TONE TWO
133 if (C == 0x01a7)
134 return 0x01a8;
135 // LATIN CAPITAL LETTER ESH
136 if (C == 0x01a9)
137 return 0x0283;
138 // LATIN CAPITAL LETTER T WITH HOOK
139 if (C == 0x01ac)
140 return 0x01ad;
141 // LATIN CAPITAL LETTER T WITH RETROFLEX HOOK
142 if (C == 0x01ae)
143 return 0x0288;
144 // LATIN CAPITAL LETTER U WITH HORN
145 if (C == 0x01af)
146 return 0x01b0;
147 if (C < 0x01b1)
148 return C;
149 // 2 characters
150 if (C <= 0x01b2)
151 return C + 217;
152 if (C < 0x01b3)
153 return C;
154 // 2 characters
155 if (C <= 0x01b5 && C % 2 == 1)
156 return C + 1;
157 // LATIN CAPITAL LETTER EZH
158 if (C == 0x01b7)
159 return 0x0292;
160 if (C < 0x01b8)
161 return C;
162 // 2 characters
163 if (C <= 0x01bc && C % 4 == 0)
164 return C + 1;
165 // LATIN CAPITAL LETTER DZ WITH CARON
166 if (C == 0x01c4)
167 return 0x01c6;
168 // LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
169 if (C == 0x01c5)
170 return 0x01c6;
171 // LATIN CAPITAL LETTER LJ
172 if (C == 0x01c7)
173 return 0x01c9;
174 // LATIN CAPITAL LETTER L WITH SMALL LETTER J
175 if (C == 0x01c8)
176 return 0x01c9;
177 // LATIN CAPITAL LETTER NJ
178 if (C == 0x01ca)
179 return 0x01cc;
180 if (C < 0x01cb)
181 return C;
182 // 9 characters
183 if (C <= 0x01db && C % 2 == 1)
184 return C + 1;
185 if (C < 0x01de)
186 return C;
187 // 9 characters
188 if (C <= 0x01ee)
189 return C | 1;
190 // LATIN CAPITAL LETTER DZ
191 if (C == 0x01f1)
192 return 0x01f3;
193 if (C < 0x01f2)
194 return C;
195 // 2 characters
196 if (C <= 0x01f4)
197 return C | 1;
198 // LATIN CAPITAL LETTER HWAIR
199 if (C == 0x01f6)
200 return 0x0195;
201 // LATIN CAPITAL LETTER WYNN
202 if (C == 0x01f7)
203 return 0x01bf;
204 if (C < 0x01f8)
205 return C;
206 // 20 characters
207 if (C <= 0x021e)
208 return C | 1;
209 // LATIN CAPITAL LETTER N WITH LONG RIGHT LEG
210 if (C == 0x0220)
211 return 0x019e;
212 if (C < 0x0222)
213 return C;
214 // 9 characters
215 if (C <= 0x0232)
216 return C | 1;
217 // LATIN CAPITAL LETTER A WITH STROKE
218 if (C == 0x023a)
219 return 0x2c65;
220 // LATIN CAPITAL LETTER C WITH STROKE
221 if (C == 0x023b)
222 return 0x023c;
223 // LATIN CAPITAL LETTER L WITH BAR
224 if (C == 0x023d)
225 return 0x019a;
226 // LATIN CAPITAL LETTER T WITH DIAGONAL STROKE
227 if (C == 0x023e)
228 return 0x2c66;
229 // LATIN CAPITAL LETTER GLOTTAL STOP
230 if (C == 0x0241)
231 return 0x0242;
232 // LATIN CAPITAL LETTER B WITH STROKE
233 if (C == 0x0243)
234 return 0x0180;
235 // LATIN CAPITAL LETTER U BAR
236 if (C == 0x0244)
237 return 0x0289;
238 // LATIN CAPITAL LETTER TURNED V
239 if (C == 0x0245)
240 return 0x028c;
241 if (C < 0x0246)
242 return C;
243 // 5 characters
244 if (C <= 0x024e)
245 return C | 1;
246 // COMBINING GREEK YPOGEGRAMMENI
247 if (C == 0x0345)
248 return 0x03b9;
249 if (C < 0x0370)
250 return C;
251 // 2 characters
252 if (C <= 0x0372)
253 return C | 1;
254 // GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA
255 if (C == 0x0376)
256 return 0x0377;
257 // GREEK CAPITAL LETTER YOT
258 if (C == 0x037f)
259 return 0x03f3;
260 // GREEK CAPITAL LETTER ALPHA WITH TONOS
261 if (C == 0x0386)
262 return 0x03ac;
263 if (C < 0x0388)
264 return C;
265 // 3 characters
266 if (C <= 0x038a)
267 return C + 37;
268 // GREEK CAPITAL LETTER OMICRON WITH TONOS
269 if (C == 0x038c)
270 return 0x03cc;
271 if (C < 0x038e)
272 return C;
273 // 2 characters
274 if (C <= 0x038f)
275 return C + 63;
276 if (C < 0x0391)
277 return C;
278 // 17 characters
279 if (C <= 0x03a1)
280 return C + 32;
281 if (C < 0x03a3)
282 return C;
283 // 9 characters
284 if (C <= 0x03ab)
285 return C + 32;
286 // GREEK SMALL LETTER FINAL SIGMA
287 if (C == 0x03c2)
288 return 0x03c3;
289 // GREEK CAPITAL KAI SYMBOL
290 if (C == 0x03cf)
291 return 0x03d7;
292 // GREEK BETA SYMBOL
293 if (C == 0x03d0)
294 return 0x03b2;
295 // GREEK THETA SYMBOL
296 if (C == 0x03d1)
297 return 0x03b8;
298 // GREEK PHI SYMBOL
299 if (C == 0x03d5)
300 return 0x03c6;
301 // GREEK PI SYMBOL
302 if (C == 0x03d6)
303 return 0x03c0;
304 if (C < 0x03d8)
305 return C;
306 // 12 characters
307 if (C <= 0x03ee)
308 return C | 1;
309 // GREEK KAPPA SYMBOL
310 if (C == 0x03f0)
311 return 0x03ba;
312 // GREEK RHO SYMBOL
313 if (C == 0x03f1)
314 return 0x03c1;
315 // GREEK CAPITAL THETA SYMBOL
316 if (C == 0x03f4)
317 return 0x03b8;
318 // GREEK LUNATE EPSILON SYMBOL
319 if (C == 0x03f5)
320 return 0x03b5;
321 // GREEK CAPITAL LETTER SHO
322 if (C == 0x03f7)
323 return 0x03f8;
324 // GREEK CAPITAL LUNATE SIGMA SYMBOL
325 if (C == 0x03f9)
326 return 0x03f2;
327 // GREEK CAPITAL LETTER SAN
328 if (C == 0x03fa)
329 return 0x03fb;
330 if (C < 0x03fd)
331 return C;
332 // 3 characters
333 if (C <= 0x03ff)
334 return C + -130;
335 if (C < 0x0400)
336 return C;
337 // 16 characters
338 if (C <= 0x040f)
339 return C + 80;
340 if (C < 0x0410)
341 return C;
342 // 32 characters
343 if (C <= 0x042f)
344 return C + 32;
345 if (C < 0x0460)
346 return C;
347 // 17 characters
348 if (C <= 0x0480)
349 return C | 1;
350 if (C < 0x048a)
351 return C;
352 // 27 characters
353 if (C <= 0x04be)
354 return C | 1;
355 // CYRILLIC LETTER PALOCHKA
356 if (C == 0x04c0)
357 return 0x04cf;
358 if (C < 0x04c1)
359 return C;
360 // 7 characters
361 if (C <= 0x04cd && C % 2 == 1)
362 return C + 1;
363 if (C < 0x04d0)
364 return C;
365 // 48 characters
366 if (C <= 0x052e)
367 return C | 1;
368 if (C < 0x0531)
369 return C;
370 // 38 characters
371 if (C <= 0x0556)
372 return C + 48;
373 if (C < 0x10a0)
374 return C;
375 // 38 characters
376 if (C <= 0x10c5)
377 return C + 7264;
378 if (C < 0x10c7)
379 return C;
380 // 2 characters
381 if (C <= 0x10cd && C % 6 == 5)
382 return C + 7264;
383 if (C < 0x13f8)
384 return C;
385 // 6 characters
386 if (C <= 0x13fd)
387 return C + -8;
388 // CYRILLIC SMALL LETTER ROUNDED VE
389 if (C == 0x1c80)
390 return 0x0432;
391 // CYRILLIC SMALL LETTER LONG-LEGGED DE
392 if (C == 0x1c81)
393 return 0x0434;
394 // CYRILLIC SMALL LETTER NARROW O
395 if (C == 0x1c82)
396 return 0x043e;
397 if (C < 0x1c83)
398 return C;
399 // 2 characters
400 if (C <= 0x1c84)
401 return C + -6210;
402 // CYRILLIC SMALL LETTER THREE-LEGGED TE
403 if (C == 0x1c85)
404 return 0x0442;
405 // CYRILLIC SMALL LETTER TALL HARD SIGN
406 if (C == 0x1c86)
407 return 0x044a;
408 // CYRILLIC SMALL LETTER TALL YAT
409 if (C == 0x1c87)
410 return 0x0463;
411 // CYRILLIC SMALL LETTER UNBLENDED UK
412 if (C == 0x1c88)
413 return 0xa64b;
414 if (C < 0x1c90)
415 return C;
416 // 43 characters
417 if (C <= 0x1cba)
418 return C + -3008;
419 if (C < 0x1cbd)
420 return C;
421 // 3 characters
422 if (C <= 0x1cbf)
423 return C + -3008;
424 if (C < 0x1e00)
425 return C;
426 // 75 characters
427 if (C <= 0x1e94)
428 return C | 1;
429 // LATIN SMALL LETTER LONG S WITH DOT ABOVE
430 if (C == 0x1e9b)
431 return 0x1e61;
432 // LATIN CAPITAL LETTER SHARP S
433 if (C == 0x1e9e)
434 return 0x00df;
435 if (C < 0x1ea0)
436 return C;
437 // 48 characters
438 if (C <= 0x1efe)
439 return C | 1;
440 if (C < 0x1f08)
441 return C;
442 // 8 characters
443 if (C <= 0x1f0f)
444 return C + -8;
445 if (C < 0x1f18)
446 return C;
447 // 6 characters
448 if (C <= 0x1f1d)
449 return C + -8;
450 if (C < 0x1f28)
451 return C;
452 // 8 characters
453 if (C <= 0x1f2f)
454 return C + -8;
455 if (C < 0x1f38)
456 return C;
457 // 8 characters
458 if (C <= 0x1f3f)
459 return C + -8;
460 if (C < 0x1f48)
461 return C;
462 // 6 characters
463 if (C <= 0x1f4d)
464 return C + -8;
465 if (C < 0x1f59)
466 return C;
467 // 4 characters
468 if (C <= 0x1f5f && C % 2 == 1)
469 return C + -8;
470 if (C < 0x1f68)
471 return C;
472 // 8 characters
473 if (C <= 0x1f6f)
474 return C + -8;
475 if (C < 0x1f88)
476 return C;
477 // 8 characters
478 if (C <= 0x1f8f)
479 return C + -8;
480 if (C < 0x1f98)
481 return C;
482 // 8 characters
483 if (C <= 0x1f9f)
484 return C + -8;
485 if (C < 0x1fa8)
486 return C;
487 // 8 characters
488 if (C <= 0x1faf)
489 return C + -8;
490 if (C < 0x1fb8)
491 return C;
492 // 2 characters
493 if (C <= 0x1fb9)
494 return C + -8;
495 if (C < 0x1fba)
496 return C;
497 // 2 characters
498 if (C <= 0x1fbb)
499 return C + -74;
500 // GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
501 if (C == 0x1fbc)
502 return 0x1fb3;
503 // GREEK PROSGEGRAMMENI
504 if (C == 0x1fbe)
505 return 0x03b9;
506 if (C < 0x1fc8)
507 return C;
508 // 4 characters
509 if (C <= 0x1fcb)
510 return C + -86;
511 // GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
512 if (C == 0x1fcc)
513 return 0x1fc3;
514 // GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
515 if (C == 0x1fd3)
516 return 0x0390;
517 if (C < 0x1fd8)
518 return C;
519 // 2 characters
520 if (C <= 0x1fd9)
521 return C + -8;
522 if (C < 0x1fda)
523 return C;
524 // 2 characters
525 if (C <= 0x1fdb)
526 return C + -100;
527 // GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
528 if (C == 0x1fe3)
529 return 0x03b0;
530 if (C < 0x1fe8)
531 return C;
532 // 2 characters
533 if (C <= 0x1fe9)
534 return C + -8;
535 if (C < 0x1fea)
536 return C;
537 // 2 characters
538 if (C <= 0x1feb)
539 return C + -112;
540 // GREEK CAPITAL LETTER RHO WITH DASIA
541 if (C == 0x1fec)
542 return 0x1fe5;
543 if (C < 0x1ff8)
544 return C;
545 // 2 characters
546 if (C <= 0x1ff9)
547 return C + -128;
548 if (C < 0x1ffa)
549 return C;
550 // 2 characters
551 if (C <= 0x1ffb)
552 return C + -126;
553 // GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
554 if (C == 0x1ffc)
555 return 0x1ff3;
556 // OHM SIGN
557 if (C == 0x2126)
558 return 0x03c9;
559 // KELVIN SIGN
560 if (C == 0x212a)
561 return 0x006b;
562 // ANGSTROM SIGN
563 if (C == 0x212b)
564 return 0x00e5;
565 // TURNED CAPITAL F
566 if (C == 0x2132)
567 return 0x214e;
568 if (C < 0x2160)
569 return C;
570 // 16 characters
571 if (C <= 0x216f)
572 return C + 16;
573 // ROMAN NUMERAL REVERSED ONE HUNDRED
574 if (C == 0x2183)
575 return 0x2184;
576 if (C < 0x24b6)
577 return C;
578 // 26 characters
579 if (C <= 0x24cf)
580 return C + 26;
581 if (C < 0x2c00)
582 return C;
583 // 48 characters
584 if (C <= 0x2c2f)
585 return C + 48;
586 // LATIN CAPITAL LETTER L WITH DOUBLE BAR
587 if (C == 0x2c60)
588 return 0x2c61;
589 // LATIN CAPITAL LETTER L WITH MIDDLE TILDE
590 if (C == 0x2c62)
591 return 0x026b;
592 // LATIN CAPITAL LETTER P WITH STROKE
593 if (C == 0x2c63)
594 return 0x1d7d;
595 // LATIN CAPITAL LETTER R WITH TAIL
596 if (C == 0x2c64)
597 return 0x027d;
598 if (C < 0x2c67)
599 return C;
600 // 3 characters
601 if (C <= 0x2c6b && C % 2 == 1)
602 return C + 1;
603 // LATIN CAPITAL LETTER ALPHA
604 if (C == 0x2c6d)
605 return 0x0251;
606 // LATIN CAPITAL LETTER M WITH HOOK
607 if (C == 0x2c6e)
608 return 0x0271;
609 // LATIN CAPITAL LETTER TURNED A
610 if (C == 0x2c6f)
611 return 0x0250;
612 // LATIN CAPITAL LETTER TURNED ALPHA
613 if (C == 0x2c70)
614 return 0x0252;
615 if (C < 0x2c72)
616 return C;
617 // 2 characters
618 if (C <= 0x2c75 && C % 3 == 2)
619 return C + 1;
620 if (C < 0x2c7e)
621 return C;
622 // 2 characters
623 if (C <= 0x2c7f)
624 return C + -10815;
625 if (C < 0x2c80)
626 return C;
627 // 50 characters
628 if (C <= 0x2ce2)
629 return C | 1;
630 if (C < 0x2ceb)
631 return C;
632 // 2 characters
633 if (C <= 0x2ced && C % 2 == 1)
634 return C + 1;
635 if (C < 0x2cf2)
636 return C;
637 // 2 characters
638 if (C <= 0xa640 && C % 31054 == 11506)
639 return C + 1;
640 if (C < 0xa642)
641 return C;
642 // 22 characters
643 if (C <= 0xa66c)
644 return C | 1;
645 if (C < 0xa680)
646 return C;
647 // 14 characters
648 if (C <= 0xa69a)
649 return C | 1;
650 if (C < 0xa722)
651 return C;
652 // 7 characters
653 if (C <= 0xa72e)
654 return C | 1;
655 if (C < 0xa732)
656 return C;
657 // 31 characters
658 if (C <= 0xa76e)
659 return C | 1;
660 if (C < 0xa779)
661 return C;
662 // 2 characters
663 if (C <= 0xa77b && C % 2 == 1)
664 return C + 1;
665 // LATIN CAPITAL LETTER INSULAR G
666 if (C == 0xa77d)
667 return 0x1d79;
668 if (C < 0xa77e)
669 return C;
670 // 5 characters
671 if (C <= 0xa786)
672 return C | 1;
673 // LATIN CAPITAL LETTER SALTILLO
674 if (C == 0xa78b)
675 return 0xa78c;
676 // LATIN CAPITAL LETTER TURNED H
677 if (C == 0xa78d)
678 return 0x0265;
679 if (C < 0xa790)
680 return C;
681 // 2 characters
682 if (C <= 0xa792)
683 return C | 1;
684 if (C < 0xa796)
685 return C;
686 // 10 characters
687 if (C <= 0xa7a8)
688 return C | 1;
689 // LATIN CAPITAL LETTER H WITH HOOK
690 if (C == 0xa7aa)
691 return 0x0266;
692 // LATIN CAPITAL LETTER REVERSED OPEN E
693 if (C == 0xa7ab)
694 return 0x025c;
695 // LATIN CAPITAL LETTER SCRIPT G
696 if (C == 0xa7ac)
697 return 0x0261;
698 // LATIN CAPITAL LETTER L WITH BELT
699 if (C == 0xa7ad)
700 return 0x026c;
701 // LATIN CAPITAL LETTER SMALL CAPITAL I
702 if (C == 0xa7ae)
703 return 0x026a;
704 // LATIN CAPITAL LETTER TURNED K
705 if (C == 0xa7b0)
706 return 0x029e;
707 // LATIN CAPITAL LETTER TURNED T
708 if (C == 0xa7b1)
709 return 0x0287;
710 // LATIN CAPITAL LETTER J WITH CROSSED-TAIL
711 if (C == 0xa7b2)
712 return 0x029d;
713 // LATIN CAPITAL LETTER CHI
714 if (C == 0xa7b3)
715 return 0xab53;
716 if (C < 0xa7b4)
717 return C;
718 // 8 characters
719 if (C <= 0xa7c2)
720 return C | 1;
721 // LATIN CAPITAL LETTER C WITH PALATAL HOOK
722 if (C == 0xa7c4)
723 return 0xa794;
724 // LATIN CAPITAL LETTER S WITH HOOK
725 if (C == 0xa7c5)
726 return 0x0282;
727 // LATIN CAPITAL LETTER Z WITH PALATAL HOOK
728 if (C == 0xa7c6)
729 return 0x1d8e;
730 if (C < 0xa7c7)
731 return C;
732 // 2 characters
733 if (C <= 0xa7c9 && C % 2 == 1)
734 return C + 1;
735 if (C < 0xa7d0)
736 return C;
737 // 2 characters
738 if (C <= 0xa7d6 && C % 6 == 0)
739 return C + 1;
740 if (C < 0xa7d8)
741 return C;
742 // 2 characters
743 if (C <= 0xa7f5 && C % 29 == 19)
744 return C + 1;
745 if (C < 0xab70)
746 return C;
747 // 80 characters
748 if (C <= 0xabbf)
749 return C + -38864;
750 // LATIN SMALL LIGATURE LONG S T
751 if (C == 0xfb05)
752 return 0xfb06;
753 if (C < 0xff21)
754 return C;
755 // 26 characters
756 if (C <= 0xff3a)
757 return C + 32;
758 if (C < 0x10400)
759 return C;
760 // 40 characters
761 if (C <= 0x10427)
762 return C + 40;
763 if (C < 0x104b0)
764 return C;
765 // 36 characters
766 if (C <= 0x104d3)
767 return C + 40;
768 if (C < 0x10570)
769 return C;
770 // 11 characters
771 if (C <= 0x1057a)
772 return C + 39;
773 if (C < 0x1057c)
774 return C;
775 // 15 characters
776 if (C <= 0x1058a)
777 return C + 39;
778 if (C < 0x1058c)
779 return C;
780 // 7 characters
781 if (C <= 0x10592)
782 return C + 39;
783 if (C < 0x10594)
784 return C;
785 // 2 characters
786 if (C <= 0x10595)
787 return C + 39;
788 if (C < 0x10c80)
789 return C;
790 // 51 characters
791 if (C <= 0x10cb2)
792 return C + 64;
793 if (C < 0x118a0)
794 return C;
795 // 32 characters
796 if (C <= 0x118bf)
797 return C + 32;
798 if (C < 0x16e40)
799 return C;
800 // 32 characters
801 if (C <= 0x16e5f)
802 return C + 32;
803 if (C < 0x1e900)
804 return C;
805 // 34 characters
806 if (C <= 0x1e921)
807 return C + 34;
808
809 return C;
810}
811