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 16 int 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