1 /* 2 * Copyright (c) 2002, 2024, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package java.lang; 27 28 import jdk.internal.misc.CDS; 29 import jdk.internal.vm.annotation.IntrinsicCandidate; 30 import jdk.internal.vm.annotation.Stable; 31 32 import java.lang.constant.Constable; 33 import java.lang.constant.DynamicConstantDesc; 34 import java.util.Arrays; 35 import java.util.HashMap; 36 import java.util.Locale; 37 import java.util.Map; 38 import java.util.Objects; 39 import java.util.Optional; 40 41 import static java.lang.constant.ConstantDescs.BSM_EXPLICIT_CAST; 42 import static java.lang.constant.ConstantDescs.CD_char; 43 import static java.lang.constant.ConstantDescs.DEFAULT_NAME; 44 45 /** 46 * The {@code Character} class is the {@linkplain 47 * java.lang##wrapperClass wrapper class} for values of the primitive 48 * type {@code char}. An object of type {@code Character} contains a 49 * single field whose type is {@code char}. 50 * 51 * <p>In addition, this class provides a large number of static methods for 52 * determining a character's category (lowercase letter, digit, etc.) 53 * and for converting characters from uppercase to lowercase and vice 54 * versa. 55 * 56 * <h2><a id="conformance">Unicode Conformance</a></h2> 57 * <p> 58 * The fields and methods of class {@code Character} are defined in terms 59 * of character information from the Unicode Standard, specifically the 60 * <i>UnicodeData</i> file that is part of the Unicode Character Database. 61 * This file specifies properties including name and category for every 62 * assigned Unicode code point or character range. The file is available 63 * from the Unicode Consortium at 64 * <a href="http://www.unicode.org">http://www.unicode.org</a>. 65 * <p> 66 * Character information is based on the Unicode Standard, version 16.0. 67 * <p> 68 * The Java platform has supported different versions of the Unicode 69 * Standard over time. Upgrades to newer versions of the Unicode Standard 70 * occurred in the following Java releases, each indicating the new version: 71 * <table class="striped"> 72 * <caption style="display:none">Shows Java releases and supported Unicode versions</caption> 73 * <thead> 74 * <tr><th scope="col">Java release</th> 75 * <th scope="col">Unicode version</th></tr> 76 * </thead> 77 * <tbody> 78 * <tr><th scope="row" style="text-align:left">Java SE 24</th> 79 * <td>Unicode 16.0</td></tr> 80 * <tr><th scope="row" style="text-align:left">Java SE 22</th> 81 * <td>Unicode 15.1</td></tr> 82 * <tr><th scope="row" style="text-align:left">Java SE 20</th> 83 * <td>Unicode 15.0</td></tr> 84 * <tr><th scope="row" style="text-align:left">Java SE 19</th> 85 * <td>Unicode 14.0</td></tr> 86 * <tr><th scope="row" style="text-align:left">Java SE 15</th> 87 * <td>Unicode 13.0</td></tr> 88 * <tr><th scope="row" style="text-align:left">Java SE 13</th> 89 * <td>Unicode 12.1</td></tr> 90 * <tr><th scope="row" style="text-align:left">Java SE 12</th> 91 * <td>Unicode 11.0</td></tr> 92 * <tr><th scope="row" style="text-align:left">Java SE 11</th> 93 * <td>Unicode 10.0</td></tr> 94 * <tr><th scope="row" style="text-align:left">Java SE 9</th> 95 * <td>Unicode 8.0</td></tr> 96 * <tr><th scope="row" style="text-align:left">Java SE 8</th> 97 * <td>Unicode 6.2</td></tr> 98 * <tr><th scope="row" style="text-align:left">Java SE 7</th> 99 * <td>Unicode 6.0</td></tr> 100 * <tr><th scope="row" style="text-align:left">Java SE 5.0</th> 101 * <td>Unicode 4.0</td></tr> 102 * <tr><th scope="row" style="text-align:left">Java SE 1.4</th> 103 * <td>Unicode 3.0</td></tr> 104 * <tr><th scope="row" style="text-align:left">JDK 1.1</th> 105 * <td>Unicode 2.0</td></tr> 106 * <tr><th scope="row" style="text-align:left">JDK 1.0.2</th> 107 * <td>Unicode 1.1.5</td></tr> 108 * </tbody> 109 * </table> 110 * Variations from these base Unicode versions, such as recognized appendixes, 111 * are documented elsewhere. 112 * <h2><a id="unicode">Unicode Character Representations</a></h2> 113 * 114 * <p>The {@code char} data type (and therefore the value that a 115 * {@code Character} object encapsulates) are based on the 116 * original Unicode specification, which defined characters as 117 * fixed-width 16-bit entities. The Unicode Standard has since been 118 * changed to allow for characters whose representation requires more 119 * than 16 bits. The range of legal <em>code point</em>s is now 120 * U+0000 to U+10FFFF, known as <em>Unicode scalar value</em>. 121 * (Refer to the <a 122 * href="http://www.unicode.org/reports/tr27/#notation"><i> 123 * definition</i></a> of the U+<i>n</i> notation in the Unicode 124 * Standard.) 125 * 126 * <p><a id="BMP">The set of characters from U+0000 to U+FFFF</a> is 127 * sometimes referred to as the <em>Basic Multilingual Plane (BMP)</em>. 128 * <a id="supplementary">Characters</a> whose code points are greater 129 * than U+FFFF are called <em>supplementary character</em>s. The Java 130 * platform uses the UTF-16 representation in {@code char} arrays and 131 * in the {@code String} and {@code StringBuffer} classes. In 132 * this representation, supplementary characters are represented as a pair 133 * of {@code char} values, the first from the <em>high-surrogates</em> 134 * range, (\uD800-\uDBFF), the second from the 135 * <em>low-surrogates</em> range (\uDC00-\uDFFF). 136 * 137 * <p>A {@code char} value, therefore, represents Basic 138 * Multilingual Plane (BMP) code points, including the surrogate 139 * code points, or code units of the UTF-16 encoding. An 140 * {@code int} value represents all Unicode code points, 141 * including supplementary code points. The lower (least significant) 142 * 21 bits of {@code int} are used to represent Unicode code 143 * points and the upper (most significant) 11 bits must be zero. 144 * Unless otherwise specified, the behavior with respect to 145 * supplementary characters and surrogate {@code char} values is 146 * as follows: 147 * 148 * <ul> 149 * <li>The methods that only accept a {@code char} value cannot support 150 * supplementary characters. They treat {@code char} values from the 151 * surrogate ranges as undefined characters. For example, 152 * {@code Character.isLetter('\u005CuD840')} returns {@code false}, even though 153 * this specific value if followed by any low-surrogate value in a string 154 * would represent a letter. 155 * 156 * <li>The methods that accept an {@code int} value support all 157 * Unicode characters, including supplementary characters. For 158 * example, {@code Character.isLetter(0x2F81A)} returns 159 * {@code true} because the code point value represents a letter 160 * (a CJK ideograph). 161 * </ul> 162 * 163 * <p>In the Java SE API documentation, <em>Unicode code point</em> is 164 * used for character values in the range between U+0000 and U+10FFFF, 165 * and <em>Unicode code unit</em> is used for 16-bit 166 * {@code char} values that are code units of the <em>UTF-16</em> 167 * encoding. For more information on Unicode terminology, refer to the 168 * <a href="http://www.unicode.org/glossary/">Unicode Glossary</a>. 169 * 170 * <p>This is a <a href="{@docRoot}/java.base/java/lang/doc-files/ValueBased.html">value-based</a> 171 * class; programmers should treat instances that are 172 * {@linkplain #equals(Object) equal} as interchangeable and should not 173 * use instances for synchronization, or unpredictable behavior may 174 * occur. For example, in a future release, synchronization may fail. 175 * 176 * @spec https://www.unicode.org/reports/tr27 Unicode 3.1.0 177 * @author Lee Boynton 178 * @author Guy Steele 179 * @author Akira Tanaka 180 * @author Martin Buchholz 181 * @author Ulf Zibis 182 * @since 1.0 183 */ 184 @jdk.internal.ValueBased 185 public final 186 class Character implements java.io.Serializable, Comparable<Character>, Constable { 187 /** 188 * The minimum radix available for conversion to and from strings. 189 * The constant value of this field is the smallest value permitted 190 * for the radix argument in radix-conversion methods such as the 191 * {@code digit} method, the {@code forDigit} method, and the 192 * {@code toString} method of class {@code Integer}. 193 * 194 * @see Character#digit(char, int) 195 * @see Character#forDigit(int, int) 196 * @see Integer#toString(int, int) 197 * @see Integer#valueOf(String) 198 */ 199 public static final int MIN_RADIX = 2; 200 201 /** 202 * The maximum radix available for conversion to and from strings. 203 * The constant value of this field is the largest value permitted 204 * for the radix argument in radix-conversion methods such as the 205 * {@code digit} method, the {@code forDigit} method, and the 206 * {@code toString} method of class {@code Integer}. 207 * 208 * @see Character#digit(char, int) 209 * @see Character#forDigit(int, int) 210 * @see Integer#toString(int, int) 211 * @see Integer#valueOf(String) 212 */ 213 public static final int MAX_RADIX = 36; 214 215 /** 216 * The constant value of this field is the smallest value of type 217 * {@code char}, {@code '\u005Cu0000'}. 218 * 219 * @since 1.0.2 220 */ 221 public static final char MIN_VALUE = '\u0000'; 222 223 /** 224 * The constant value of this field is the largest value of type 225 * {@code char}, {@code '\u005CuFFFF'}. 226 * 227 * @since 1.0.2 228 */ 229 public static final char MAX_VALUE = '\uFFFF'; 230 231 /** 232 * The {@code Class} instance representing the primitive type 233 * {@code char}. 234 * 235 * @since 1.1 236 */ 237 public static final Class<Character> TYPE = Class.getPrimitiveClass("char"); 238 239 /* 240 * Normative general types 241 */ 242 243 /* 244 * General character types 245 */ 246 247 /** 248 * General category "Cn" in the Unicode specification. 249 * @since 1.1 250 */ 251 public static final byte UNASSIGNED = 0; 252 253 /** 254 * General category "Lu" in the Unicode specification. 255 * @since 1.1 256 */ 257 public static final byte UPPERCASE_LETTER = 1; 258 259 /** 260 * General category "Ll" in the Unicode specification. 261 * @since 1.1 262 */ 263 public static final byte LOWERCASE_LETTER = 2; 264 265 /** 266 * General category "Lt" in the Unicode specification. 267 * @since 1.1 268 */ 269 public static final byte TITLECASE_LETTER = 3; 270 271 /** 272 * General category "Lm" in the Unicode specification. 273 * @since 1.1 274 */ 275 public static final byte MODIFIER_LETTER = 4; 276 277 /** 278 * General category "Lo" in the Unicode specification. 279 * @since 1.1 280 */ 281 public static final byte OTHER_LETTER = 5; 282 283 /** 284 * General category "Mn" in the Unicode specification. 285 * @since 1.1 286 */ 287 public static final byte NON_SPACING_MARK = 6; 288 289 /** 290 * General category "Me" in the Unicode specification. 291 * @since 1.1 292 */ 293 public static final byte ENCLOSING_MARK = 7; 294 295 /** 296 * General category "Mc" in the Unicode specification. 297 * @since 1.1 298 */ 299 public static final byte COMBINING_SPACING_MARK = 8; 300 301 /** 302 * General category "Nd" in the Unicode specification. 303 * @since 1.1 304 */ 305 public static final byte DECIMAL_DIGIT_NUMBER = 9; 306 307 /** 308 * General category "Nl" in the Unicode specification. 309 * @since 1.1 310 */ 311 public static final byte LETTER_NUMBER = 10; 312 313 /** 314 * General category "No" in the Unicode specification. 315 * @since 1.1 316 */ 317 public static final byte OTHER_NUMBER = 11; 318 319 /** 320 * General category "Zs" in the Unicode specification. 321 * @since 1.1 322 */ 323 public static final byte SPACE_SEPARATOR = 12; 324 325 /** 326 * General category "Zl" in the Unicode specification. 327 * @since 1.1 328 */ 329 public static final byte LINE_SEPARATOR = 13; 330 331 /** 332 * General category "Zp" in the Unicode specification. 333 * @since 1.1 334 */ 335 public static final byte PARAGRAPH_SEPARATOR = 14; 336 337 /** 338 * General category "Cc" in the Unicode specification. 339 * @since 1.1 340 */ 341 public static final byte CONTROL = 15; 342 343 /** 344 * General category "Cf" in the Unicode specification. 345 * @since 1.1 346 */ 347 public static final byte FORMAT = 16; 348 349 /** 350 * General category "Co" in the Unicode specification. 351 * @since 1.1 352 */ 353 public static final byte PRIVATE_USE = 18; 354 355 /** 356 * General category "Cs" in the Unicode specification. 357 * @since 1.1 358 */ 359 public static final byte SURROGATE = 19; 360 361 /** 362 * General category "Pd" in the Unicode specification. 363 * @since 1.1 364 */ 365 public static final byte DASH_PUNCTUATION = 20; 366 367 /** 368 * General category "Ps" in the Unicode specification. 369 * @since 1.1 370 */ 371 public static final byte START_PUNCTUATION = 21; 372 373 /** 374 * General category "Pe" in the Unicode specification. 375 * @since 1.1 376 */ 377 public static final byte END_PUNCTUATION = 22; 378 379 /** 380 * General category "Pc" in the Unicode specification. 381 * @since 1.1 382 */ 383 public static final byte CONNECTOR_PUNCTUATION = 23; 384 385 /** 386 * General category "Po" in the Unicode specification. 387 * @since 1.1 388 */ 389 public static final byte OTHER_PUNCTUATION = 24; 390 391 /** 392 * General category "Sm" in the Unicode specification. 393 * @since 1.1 394 */ 395 public static final byte MATH_SYMBOL = 25; 396 397 /** 398 * General category "Sc" in the Unicode specification. 399 * @since 1.1 400 */ 401 public static final byte CURRENCY_SYMBOL = 26; 402 403 /** 404 * General category "Sk" in the Unicode specification. 405 * @since 1.1 406 */ 407 public static final byte MODIFIER_SYMBOL = 27; 408 409 /** 410 * General category "So" in the Unicode specification. 411 * @since 1.1 412 */ 413 public static final byte OTHER_SYMBOL = 28; 414 415 /** 416 * General category "Pi" in the Unicode specification. 417 * @since 1.4 418 */ 419 public static final byte INITIAL_QUOTE_PUNCTUATION = 29; 420 421 /** 422 * General category "Pf" in the Unicode specification. 423 * @since 1.4 424 */ 425 public static final byte FINAL_QUOTE_PUNCTUATION = 30; 426 427 /** 428 * Error flag. Use int (code point) to avoid confusion with U+FFFF. 429 */ 430 static final int ERROR = 0xFFFFFFFF; 431 432 433 /** 434 * Undefined bidirectional character type. Undefined {@code char} 435 * values have undefined directionality in the Unicode specification. 436 * @since 1.4 437 */ 438 public static final byte DIRECTIONALITY_UNDEFINED = -1; 439 440 /** 441 * Strong bidirectional character type "L" in the Unicode specification. 442 * @since 1.4 443 */ 444 public static final byte DIRECTIONALITY_LEFT_TO_RIGHT = 0; 445 446 /** 447 * Strong bidirectional character type "R" in the Unicode specification. 448 * @since 1.4 449 */ 450 public static final byte DIRECTIONALITY_RIGHT_TO_LEFT = 1; 451 452 /** 453 * Strong bidirectional character type "AL" in the Unicode specification. 454 * @since 1.4 455 */ 456 public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC = 2; 457 458 /** 459 * Weak bidirectional character type "EN" in the Unicode specification. 460 * @since 1.4 461 */ 462 public static final byte DIRECTIONALITY_EUROPEAN_NUMBER = 3; 463 464 /** 465 * Weak bidirectional character type "ES" in the Unicode specification. 466 * @since 1.4 467 */ 468 public static final byte DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR = 4; 469 470 /** 471 * Weak bidirectional character type "ET" in the Unicode specification. 472 * @since 1.4 473 */ 474 public static final byte DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR = 5; 475 476 /** 477 * Weak bidirectional character type "AN" in the Unicode specification. 478 * @since 1.4 479 */ 480 public static final byte DIRECTIONALITY_ARABIC_NUMBER = 6; 481 482 /** 483 * Weak bidirectional character type "CS" in the Unicode specification. 484 * @since 1.4 485 */ 486 public static final byte DIRECTIONALITY_COMMON_NUMBER_SEPARATOR = 7; 487 488 /** 489 * Weak bidirectional character type "NSM" in the Unicode specification. 490 * @since 1.4 491 */ 492 public static final byte DIRECTIONALITY_NONSPACING_MARK = 8; 493 494 /** 495 * Weak bidirectional character type "BN" in the Unicode specification. 496 * @since 1.4 497 */ 498 public static final byte DIRECTIONALITY_BOUNDARY_NEUTRAL = 9; 499 500 /** 501 * Neutral bidirectional character type "B" in the Unicode specification. 502 * @since 1.4 503 */ 504 public static final byte DIRECTIONALITY_PARAGRAPH_SEPARATOR = 10; 505 506 /** 507 * Neutral bidirectional character type "S" in the Unicode specification. 508 * @since 1.4 509 */ 510 public static final byte DIRECTIONALITY_SEGMENT_SEPARATOR = 11; 511 512 /** 513 * Neutral bidirectional character type "WS" in the Unicode specification. 514 * @since 1.4 515 */ 516 public static final byte DIRECTIONALITY_WHITESPACE = 12; 517 518 /** 519 * Neutral bidirectional character type "ON" in the Unicode specification. 520 * @since 1.4 521 */ 522 public static final byte DIRECTIONALITY_OTHER_NEUTRALS = 13; 523 524 /** 525 * Strong bidirectional character type "LRE" in the Unicode specification. 526 * @since 1.4 527 */ 528 public static final byte DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING = 14; 529 530 /** 531 * Strong bidirectional character type "LRO" in the Unicode specification. 532 * @since 1.4 533 */ 534 public static final byte DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE = 15; 535 536 /** 537 * Strong bidirectional character type "RLE" in the Unicode specification. 538 * @since 1.4 539 */ 540 public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING = 16; 541 542 /** 543 * Strong bidirectional character type "RLO" in the Unicode specification. 544 * @since 1.4 545 */ 546 public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE = 17; 547 548 /** 549 * Weak bidirectional character type "PDF" in the Unicode specification. 550 * @since 1.4 551 */ 552 public static final byte DIRECTIONALITY_POP_DIRECTIONAL_FORMAT = 18; 553 554 /** 555 * Weak bidirectional character type "LRI" in the Unicode specification. 556 * @since 9 557 */ 558 public static final byte DIRECTIONALITY_LEFT_TO_RIGHT_ISOLATE = 19; 559 560 /** 561 * Weak bidirectional character type "RLI" in the Unicode specification. 562 * @since 9 563 */ 564 public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_ISOLATE = 20; 565 566 /** 567 * Weak bidirectional character type "FSI" in the Unicode specification. 568 * @since 9 569 */ 570 public static final byte DIRECTIONALITY_FIRST_STRONG_ISOLATE = 21; 571 572 /** 573 * Weak bidirectional character type "PDI" in the Unicode specification. 574 * @since 9 575 */ 576 public static final byte DIRECTIONALITY_POP_DIRECTIONAL_ISOLATE = 22; 577 578 /** 579 * The minimum value of a 580 * <a href="http://www.unicode.org/glossary/#high_surrogate_code_unit"> 581 * Unicode high-surrogate code unit</a> 582 * in the UTF-16 encoding, constant {@code '\u005CuD800'}. 583 * A high-surrogate is also known as a <i>leading-surrogate</i>. 584 * 585 * @since 1.5 586 */ 587 public static final char MIN_HIGH_SURROGATE = '\uD800'; 588 589 /** 590 * The maximum value of a 591 * <a href="http://www.unicode.org/glossary/#high_surrogate_code_unit"> 592 * Unicode high-surrogate code unit</a> 593 * in the UTF-16 encoding, constant {@code '\u005CuDBFF'}. 594 * A high-surrogate is also known as a <i>leading-surrogate</i>. 595 * 596 * @since 1.5 597 */ 598 public static final char MAX_HIGH_SURROGATE = '\uDBFF'; 599 600 /** 601 * The minimum value of a 602 * <a href="http://www.unicode.org/glossary/#low_surrogate_code_unit"> 603 * Unicode low-surrogate code unit</a> 604 * in the UTF-16 encoding, constant {@code '\u005CuDC00'}. 605 * A low-surrogate is also known as a <i>trailing-surrogate</i>. 606 * 607 * @since 1.5 608 */ 609 public static final char MIN_LOW_SURROGATE = '\uDC00'; 610 611 /** 612 * The maximum value of a 613 * <a href="http://www.unicode.org/glossary/#low_surrogate_code_unit"> 614 * Unicode low-surrogate code unit</a> 615 * in the UTF-16 encoding, constant {@code '\u005CuDFFF'}. 616 * A low-surrogate is also known as a <i>trailing-surrogate</i>. 617 * 618 * @since 1.5 619 */ 620 public static final char MAX_LOW_SURROGATE = '\uDFFF'; 621 622 /** 623 * The minimum value of a Unicode surrogate code unit in the 624 * UTF-16 encoding, constant {@code '\u005CuD800'}. 625 * 626 * @since 1.5 627 */ 628 public static final char MIN_SURROGATE = MIN_HIGH_SURROGATE; 629 630 /** 631 * The maximum value of a Unicode surrogate code unit in the 632 * UTF-16 encoding, constant {@code '\u005CuDFFF'}. 633 * 634 * @since 1.5 635 */ 636 public static final char MAX_SURROGATE = MAX_LOW_SURROGATE; 637 638 /** 639 * The minimum value of a 640 * <a href="http://www.unicode.org/glossary/#supplementary_code_point"> 641 * Unicode supplementary code point</a>, constant {@code U+10000}. 642 * 643 * @since 1.5 644 */ 645 public static final int MIN_SUPPLEMENTARY_CODE_POINT = 0x010000; 646 647 /** 648 * The minimum value of a 649 * <a href="http://www.unicode.org/glossary/#code_point"> 650 * Unicode code point</a>, constant {@code U+0000}. 651 * 652 * @since 1.5 653 */ 654 public static final int MIN_CODE_POINT = 0x000000; 655 656 /** 657 * The maximum value of a 658 * <a href="http://www.unicode.org/glossary/#code_point"> 659 * Unicode code point</a>, constant {@code U+10FFFF}. 660 * 661 * @since 1.5 662 */ 663 public static final int MAX_CODE_POINT = 0X10FFFF; 664 665 /** 666 * Returns an {@link Optional} containing the nominal descriptor for this 667 * instance. 668 * 669 * @return an {@link Optional} describing the {@linkplain Character} instance 670 * @since 15 671 */ 672 @Override 673 public Optional<DynamicConstantDesc<Character>> describeConstable() { 674 return Optional.of(DynamicConstantDesc.ofNamed(BSM_EXPLICIT_CAST, DEFAULT_NAME, CD_char, (int) value)); 675 } 676 677 /** 678 * Instances of this class represent particular subsets of the Unicode 679 * character set. The only family of subsets defined in the 680 * {@code Character} class is {@link Character.UnicodeBlock}. 681 * Other portions of the Java API may define other subsets for their 682 * own purposes. 683 * 684 * @since 1.2 685 */ 686 public static class Subset { 687 688 private String name; 689 690 /** 691 * Constructs a new {@code Subset} instance. 692 * 693 * @param name The name of this subset 694 * @throws NullPointerException if name is {@code null} 695 */ 696 protected Subset(String name) { 697 if (name == null) { 698 throw new NullPointerException("name"); 699 } 700 this.name = name; 701 } 702 703 /** 704 * Compares two {@code Subset} objects for equality. 705 * This method returns {@code true} if and only if 706 * {@code this} and the argument refer to the same 707 * object; since this method is {@code final}, this 708 * guarantee holds for all subclasses. 709 */ 710 public final boolean equals(Object obj) { 711 return (this == obj); 712 } 713 714 /** 715 * Returns the standard hash code as defined by the 716 * {@link Object#hashCode} method. This method 717 * is {@code final} in order to ensure that the 718 * {@code equals} and {@code hashCode} methods will 719 * be consistent in all subclasses. 720 */ 721 public final int hashCode() { 722 return super.hashCode(); 723 } 724 725 /** 726 * Returns the name of this subset. 727 */ 728 public final String toString() { 729 return name; 730 } 731 } 732 733 // See http://www.unicode.org/Public/UNIDATA/Blocks.txt 734 // for the latest specification of Unicode Blocks. 735 736 /** 737 * A family of character subsets representing the character blocks in the 738 * Unicode specification. Character blocks generally define characters 739 * used for a specific script or purpose. A character is contained by 740 * at most one Unicode block. 741 * 742 * @since 1.2 743 */ 744 public static final class UnicodeBlock extends Subset { 745 /** 746 * NUM_ENTITIES should match the total number of UnicodeBlocks. 747 * It should be adjusted whenever the Unicode Character Database 748 * is upgraded. 749 */ 750 private static final int NUM_ENTITIES = 782; 751 private static Map<String, UnicodeBlock> map = HashMap.newHashMap(NUM_ENTITIES); 752 753 /** 754 * Creates a UnicodeBlock with the given identifier name. 755 * This name must be the same as the block identifier. 756 */ 757 private UnicodeBlock(String idName) { 758 super(idName); 759 map.put(idName, this); 760 } 761 762 /** 763 * Creates a UnicodeBlock with the given identifier name and 764 * alias name. 765 */ 766 private UnicodeBlock(String idName, String alias) { 767 this(idName); 768 map.put(alias, this); 769 } 770 771 /** 772 * Creates a UnicodeBlock with the given identifier name and 773 * alias names. 774 */ 775 private UnicodeBlock(String idName, String... aliases) { 776 this(idName); 777 for (String alias : aliases) 778 map.put(alias, this); 779 } 780 781 /** 782 * Constant for the "Basic Latin" Unicode character block. 783 * @since 1.2 784 */ 785 public static final UnicodeBlock BASIC_LATIN = 786 new UnicodeBlock("BASIC_LATIN", 787 "BASIC LATIN", 788 "BASICLATIN"); 789 790 /** 791 * Constant for the "Latin-1 Supplement" Unicode character block. 792 * @since 1.2 793 */ 794 public static final UnicodeBlock LATIN_1_SUPPLEMENT = 795 new UnicodeBlock("LATIN_1_SUPPLEMENT", 796 "LATIN-1 SUPPLEMENT", 797 "LATIN-1SUPPLEMENT"); 798 799 /** 800 * Constant for the "Latin Extended-A" Unicode character block. 801 * @since 1.2 802 */ 803 public static final UnicodeBlock LATIN_EXTENDED_A = 804 new UnicodeBlock("LATIN_EXTENDED_A", 805 "LATIN EXTENDED-A", 806 "LATINEXTENDED-A"); 807 808 /** 809 * Constant for the "Latin Extended-B" Unicode character block. 810 * @since 1.2 811 */ 812 public static final UnicodeBlock LATIN_EXTENDED_B = 813 new UnicodeBlock("LATIN_EXTENDED_B", 814 "LATIN EXTENDED-B", 815 "LATINEXTENDED-B"); 816 817 /** 818 * Constant for the "IPA Extensions" Unicode character block. 819 * @since 1.2 820 */ 821 public static final UnicodeBlock IPA_EXTENSIONS = 822 new UnicodeBlock("IPA_EXTENSIONS", 823 "IPA EXTENSIONS", 824 "IPAEXTENSIONS"); 825 826 /** 827 * Constant for the "Spacing Modifier Letters" Unicode character block. 828 * @since 1.2 829 */ 830 public static final UnicodeBlock SPACING_MODIFIER_LETTERS = 831 new UnicodeBlock("SPACING_MODIFIER_LETTERS", 832 "SPACING MODIFIER LETTERS", 833 "SPACINGMODIFIERLETTERS"); 834 835 /** 836 * Constant for the "Combining Diacritical Marks" Unicode character block. 837 * @since 1.2 838 */ 839 public static final UnicodeBlock COMBINING_DIACRITICAL_MARKS = 840 new UnicodeBlock("COMBINING_DIACRITICAL_MARKS", 841 "COMBINING DIACRITICAL MARKS", 842 "COMBININGDIACRITICALMARKS"); 843 844 /** 845 * Constant for the "Greek and Coptic" Unicode character block. 846 * <p> 847 * This block was previously known as the "Greek" block. 848 * 849 * @since 1.2 850 */ 851 public static final UnicodeBlock GREEK = 852 new UnicodeBlock("GREEK", 853 "GREEK AND COPTIC", 854 "GREEKANDCOPTIC"); 855 856 /** 857 * Constant for the "Cyrillic" Unicode character block. 858 * @since 1.2 859 */ 860 public static final UnicodeBlock CYRILLIC = 861 new UnicodeBlock("CYRILLIC"); 862 863 /** 864 * Constant for the "Armenian" Unicode character block. 865 * @since 1.2 866 */ 867 public static final UnicodeBlock ARMENIAN = 868 new UnicodeBlock("ARMENIAN"); 869 870 /** 871 * Constant for the "Hebrew" Unicode character block. 872 * @since 1.2 873 */ 874 public static final UnicodeBlock HEBREW = 875 new UnicodeBlock("HEBREW"); 876 877 /** 878 * Constant for the "Arabic" Unicode character block. 879 * @since 1.2 880 */ 881 public static final UnicodeBlock ARABIC = 882 new UnicodeBlock("ARABIC"); 883 884 /** 885 * Constant for the "Devanagari" Unicode character block. 886 * @since 1.2 887 */ 888 public static final UnicodeBlock DEVANAGARI = 889 new UnicodeBlock("DEVANAGARI"); 890 891 /** 892 * Constant for the "Bengali" Unicode character block. 893 * @since 1.2 894 */ 895 public static final UnicodeBlock BENGALI = 896 new UnicodeBlock("BENGALI"); 897 898 /** 899 * Constant for the "Gurmukhi" Unicode character block. 900 * @since 1.2 901 */ 902 public static final UnicodeBlock GURMUKHI = 903 new UnicodeBlock("GURMUKHI"); 904 905 /** 906 * Constant for the "Gujarati" Unicode character block. 907 * @since 1.2 908 */ 909 public static final UnicodeBlock GUJARATI = 910 new UnicodeBlock("GUJARATI"); 911 912 /** 913 * Constant for the "Oriya" Unicode character block. 914 * @since 1.2 915 */ 916 public static final UnicodeBlock ORIYA = 917 new UnicodeBlock("ORIYA"); 918 919 /** 920 * Constant for the "Tamil" Unicode character block. 921 * @since 1.2 922 */ 923 public static final UnicodeBlock TAMIL = 924 new UnicodeBlock("TAMIL"); 925 926 /** 927 * Constant for the "Telugu" Unicode character block. 928 * @since 1.2 929 */ 930 public static final UnicodeBlock TELUGU = 931 new UnicodeBlock("TELUGU"); 932 933 /** 934 * Constant for the "Kannada" Unicode character block. 935 * @since 1.2 936 */ 937 public static final UnicodeBlock KANNADA = 938 new UnicodeBlock("KANNADA"); 939 940 /** 941 * Constant for the "Malayalam" Unicode character block. 942 * @since 1.2 943 */ 944 public static final UnicodeBlock MALAYALAM = 945 new UnicodeBlock("MALAYALAM"); 946 947 /** 948 * Constant for the "Thai" Unicode character block. 949 * @since 1.2 950 */ 951 public static final UnicodeBlock THAI = 952 new UnicodeBlock("THAI"); 953 954 /** 955 * Constant for the "Lao" Unicode character block. 956 * @since 1.2 957 */ 958 public static final UnicodeBlock LAO = 959 new UnicodeBlock("LAO"); 960 961 /** 962 * Constant for the "Tibetan" Unicode character block. 963 * @since 1.2 964 */ 965 public static final UnicodeBlock TIBETAN = 966 new UnicodeBlock("TIBETAN"); 967 968 /** 969 * Constant for the "Georgian" Unicode character block. 970 * @since 1.2 971 */ 972 public static final UnicodeBlock GEORGIAN = 973 new UnicodeBlock("GEORGIAN"); 974 975 /** 976 * Constant for the "Hangul Jamo" Unicode character block. 977 * @since 1.2 978 */ 979 public static final UnicodeBlock HANGUL_JAMO = 980 new UnicodeBlock("HANGUL_JAMO", 981 "HANGUL JAMO", 982 "HANGULJAMO"); 983 984 /** 985 * Constant for the "Latin Extended Additional" Unicode character block. 986 * @since 1.2 987 */ 988 public static final UnicodeBlock LATIN_EXTENDED_ADDITIONAL = 989 new UnicodeBlock("LATIN_EXTENDED_ADDITIONAL", 990 "LATIN EXTENDED ADDITIONAL", 991 "LATINEXTENDEDADDITIONAL"); 992 993 /** 994 * Constant for the "Greek Extended" Unicode character block. 995 * @since 1.2 996 */ 997 public static final UnicodeBlock GREEK_EXTENDED = 998 new UnicodeBlock("GREEK_EXTENDED", 999 "GREEK EXTENDED", 1000 "GREEKEXTENDED"); 1001 1002 /** 1003 * Constant for the "General Punctuation" Unicode character block. 1004 * @since 1.2 1005 */ 1006 public static final UnicodeBlock GENERAL_PUNCTUATION = 1007 new UnicodeBlock("GENERAL_PUNCTUATION", 1008 "GENERAL PUNCTUATION", 1009 "GENERALPUNCTUATION"); 1010 1011 /** 1012 * Constant for the "Superscripts and Subscripts" Unicode character 1013 * block. 1014 * @since 1.2 1015 */ 1016 public static final UnicodeBlock SUPERSCRIPTS_AND_SUBSCRIPTS = 1017 new UnicodeBlock("SUPERSCRIPTS_AND_SUBSCRIPTS", 1018 "SUPERSCRIPTS AND SUBSCRIPTS", 1019 "SUPERSCRIPTSANDSUBSCRIPTS"); 1020 1021 /** 1022 * Constant for the "Currency Symbols" Unicode character block. 1023 * @since 1.2 1024 */ 1025 public static final UnicodeBlock CURRENCY_SYMBOLS = 1026 new UnicodeBlock("CURRENCY_SYMBOLS", 1027 "CURRENCY SYMBOLS", 1028 "CURRENCYSYMBOLS"); 1029 1030 /** 1031 * Constant for the "Combining Diacritical Marks for Symbols" Unicode 1032 * character block. 1033 * <p> 1034 * This block was previously known as "Combining Marks for Symbols". 1035 * @since 1.2 1036 */ 1037 public static final UnicodeBlock COMBINING_MARKS_FOR_SYMBOLS = 1038 new UnicodeBlock("COMBINING_MARKS_FOR_SYMBOLS", 1039 "COMBINING DIACRITICAL MARKS FOR SYMBOLS", 1040 "COMBININGDIACRITICALMARKSFORSYMBOLS", 1041 "COMBINING MARKS FOR SYMBOLS", 1042 "COMBININGMARKSFORSYMBOLS"); 1043 1044 /** 1045 * Constant for the "Letterlike Symbols" Unicode character block. 1046 * @since 1.2 1047 */ 1048 public static final UnicodeBlock LETTERLIKE_SYMBOLS = 1049 new UnicodeBlock("LETTERLIKE_SYMBOLS", 1050 "LETTERLIKE SYMBOLS", 1051 "LETTERLIKESYMBOLS"); 1052 1053 /** 1054 * Constant for the "Number Forms" Unicode character block. 1055 * @since 1.2 1056 */ 1057 public static final UnicodeBlock NUMBER_FORMS = 1058 new UnicodeBlock("NUMBER_FORMS", 1059 "NUMBER FORMS", 1060 "NUMBERFORMS"); 1061 1062 /** 1063 * Constant for the "Arrows" Unicode character block. 1064 * @since 1.2 1065 */ 1066 public static final UnicodeBlock ARROWS = 1067 new UnicodeBlock("ARROWS"); 1068 1069 /** 1070 * Constant for the "Mathematical Operators" Unicode character block. 1071 * @since 1.2 1072 */ 1073 public static final UnicodeBlock MATHEMATICAL_OPERATORS = 1074 new UnicodeBlock("MATHEMATICAL_OPERATORS", 1075 "MATHEMATICAL OPERATORS", 1076 "MATHEMATICALOPERATORS"); 1077 1078 /** 1079 * Constant for the "Miscellaneous Technical" Unicode character block. 1080 * @since 1.2 1081 */ 1082 public static final UnicodeBlock MISCELLANEOUS_TECHNICAL = 1083 new UnicodeBlock("MISCELLANEOUS_TECHNICAL", 1084 "MISCELLANEOUS TECHNICAL", 1085 "MISCELLANEOUSTECHNICAL"); 1086 1087 /** 1088 * Constant for the "Control Pictures" Unicode character block. 1089 * @since 1.2 1090 */ 1091 public static final UnicodeBlock CONTROL_PICTURES = 1092 new UnicodeBlock("CONTROL_PICTURES", 1093 "CONTROL PICTURES", 1094 "CONTROLPICTURES"); 1095 1096 /** 1097 * Constant for the "Optical Character Recognition" Unicode character block. 1098 * @since 1.2 1099 */ 1100 public static final UnicodeBlock OPTICAL_CHARACTER_RECOGNITION = 1101 new UnicodeBlock("OPTICAL_CHARACTER_RECOGNITION", 1102 "OPTICAL CHARACTER RECOGNITION", 1103 "OPTICALCHARACTERRECOGNITION"); 1104 1105 /** 1106 * Constant for the "Enclosed Alphanumerics" Unicode character block. 1107 * @since 1.2 1108 */ 1109 public static final UnicodeBlock ENCLOSED_ALPHANUMERICS = 1110 new UnicodeBlock("ENCLOSED_ALPHANUMERICS", 1111 "ENCLOSED ALPHANUMERICS", 1112 "ENCLOSEDALPHANUMERICS"); 1113 1114 /** 1115 * Constant for the "Box Drawing" Unicode character block. 1116 * @since 1.2 1117 */ 1118 public static final UnicodeBlock BOX_DRAWING = 1119 new UnicodeBlock("BOX_DRAWING", 1120 "BOX DRAWING", 1121 "BOXDRAWING"); 1122 1123 /** 1124 * Constant for the "Block Elements" Unicode character block. 1125 * @since 1.2 1126 */ 1127 public static final UnicodeBlock BLOCK_ELEMENTS = 1128 new UnicodeBlock("BLOCK_ELEMENTS", 1129 "BLOCK ELEMENTS", 1130 "BLOCKELEMENTS"); 1131 1132 /** 1133 * Constant for the "Geometric Shapes" Unicode character block. 1134 * @since 1.2 1135 */ 1136 public static final UnicodeBlock GEOMETRIC_SHAPES = 1137 new UnicodeBlock("GEOMETRIC_SHAPES", 1138 "GEOMETRIC SHAPES", 1139 "GEOMETRICSHAPES"); 1140 1141 /** 1142 * Constant for the "Miscellaneous Symbols" Unicode character block. 1143 * @since 1.2 1144 */ 1145 public static final UnicodeBlock MISCELLANEOUS_SYMBOLS = 1146 new UnicodeBlock("MISCELLANEOUS_SYMBOLS", 1147 "MISCELLANEOUS SYMBOLS", 1148 "MISCELLANEOUSSYMBOLS"); 1149 1150 /** 1151 * Constant for the "Dingbats" Unicode character block. 1152 * @since 1.2 1153 */ 1154 public static final UnicodeBlock DINGBATS = 1155 new UnicodeBlock("DINGBATS"); 1156 1157 /** 1158 * Constant for the "CJK Symbols and Punctuation" Unicode character block. 1159 * @since 1.2 1160 */ 1161 public static final UnicodeBlock CJK_SYMBOLS_AND_PUNCTUATION = 1162 new UnicodeBlock("CJK_SYMBOLS_AND_PUNCTUATION", 1163 "CJK SYMBOLS AND PUNCTUATION", 1164 "CJKSYMBOLSANDPUNCTUATION"); 1165 1166 /** 1167 * Constant for the "Hiragana" Unicode character block. 1168 * @since 1.2 1169 */ 1170 public static final UnicodeBlock HIRAGANA = 1171 new UnicodeBlock("HIRAGANA"); 1172 1173 /** 1174 * Constant for the "Katakana" Unicode character block. 1175 * @since 1.2 1176 */ 1177 public static final UnicodeBlock KATAKANA = 1178 new UnicodeBlock("KATAKANA"); 1179 1180 /** 1181 * Constant for the "Bopomofo" Unicode character block. 1182 * @since 1.2 1183 */ 1184 public static final UnicodeBlock BOPOMOFO = 1185 new UnicodeBlock("BOPOMOFO"); 1186 1187 /** 1188 * Constant for the "Hangul Compatibility Jamo" Unicode character block. 1189 * @since 1.2 1190 */ 1191 public static final UnicodeBlock HANGUL_COMPATIBILITY_JAMO = 1192 new UnicodeBlock("HANGUL_COMPATIBILITY_JAMO", 1193 "HANGUL COMPATIBILITY JAMO", 1194 "HANGULCOMPATIBILITYJAMO"); 1195 1196 /** 1197 * Constant for the "Kanbun" Unicode character block. 1198 * @since 1.2 1199 */ 1200 public static final UnicodeBlock KANBUN = 1201 new UnicodeBlock("KANBUN"); 1202 1203 /** 1204 * Constant for the "Enclosed CJK Letters and Months" Unicode character block. 1205 * @since 1.2 1206 */ 1207 public static final UnicodeBlock ENCLOSED_CJK_LETTERS_AND_MONTHS = 1208 new UnicodeBlock("ENCLOSED_CJK_LETTERS_AND_MONTHS", 1209 "ENCLOSED CJK LETTERS AND MONTHS", 1210 "ENCLOSEDCJKLETTERSANDMONTHS"); 1211 1212 /** 1213 * Constant for the "CJK Compatibility" Unicode character block. 1214 * @since 1.2 1215 */ 1216 public static final UnicodeBlock CJK_COMPATIBILITY = 1217 new UnicodeBlock("CJK_COMPATIBILITY", 1218 "CJK COMPATIBILITY", 1219 "CJKCOMPATIBILITY"); 1220 1221 /** 1222 * Constant for the "CJK Unified Ideographs" Unicode character block. 1223 * @since 1.2 1224 */ 1225 public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS = 1226 new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS", 1227 "CJK UNIFIED IDEOGRAPHS", 1228 "CJKUNIFIEDIDEOGRAPHS"); 1229 1230 /** 1231 * Constant for the "Hangul Syllables" Unicode character block. 1232 * @since 1.2 1233 */ 1234 public static final UnicodeBlock HANGUL_SYLLABLES = 1235 new UnicodeBlock("HANGUL_SYLLABLES", 1236 "HANGUL SYLLABLES", 1237 "HANGULSYLLABLES"); 1238 1239 /** 1240 * Constant for the "Private Use Area" Unicode character block. 1241 * @since 1.2 1242 */ 1243 public static final UnicodeBlock PRIVATE_USE_AREA = 1244 new UnicodeBlock("PRIVATE_USE_AREA", 1245 "PRIVATE USE AREA", 1246 "PRIVATEUSEAREA"); 1247 1248 /** 1249 * Constant for the "CJK Compatibility Ideographs" Unicode character 1250 * block. 1251 * @since 1.2 1252 */ 1253 public static final UnicodeBlock CJK_COMPATIBILITY_IDEOGRAPHS = 1254 new UnicodeBlock("CJK_COMPATIBILITY_IDEOGRAPHS", 1255 "CJK COMPATIBILITY IDEOGRAPHS", 1256 "CJKCOMPATIBILITYIDEOGRAPHS"); 1257 1258 /** 1259 * Constant for the "Alphabetic Presentation Forms" Unicode character block. 1260 * @since 1.2 1261 */ 1262 public static final UnicodeBlock ALPHABETIC_PRESENTATION_FORMS = 1263 new UnicodeBlock("ALPHABETIC_PRESENTATION_FORMS", 1264 "ALPHABETIC PRESENTATION FORMS", 1265 "ALPHABETICPRESENTATIONFORMS"); 1266 1267 /** 1268 * Constant for the "Arabic Presentation Forms-A" Unicode character 1269 * block. 1270 * @since 1.2 1271 */ 1272 public static final UnicodeBlock ARABIC_PRESENTATION_FORMS_A = 1273 new UnicodeBlock("ARABIC_PRESENTATION_FORMS_A", 1274 "ARABIC PRESENTATION FORMS-A", 1275 "ARABICPRESENTATIONFORMS-A"); 1276 1277 /** 1278 * Constant for the "Combining Half Marks" Unicode character block. 1279 * @since 1.2 1280 */ 1281 public static final UnicodeBlock COMBINING_HALF_MARKS = 1282 new UnicodeBlock("COMBINING_HALF_MARKS", 1283 "COMBINING HALF MARKS", 1284 "COMBININGHALFMARKS"); 1285 1286 /** 1287 * Constant for the "CJK Compatibility Forms" Unicode character block. 1288 * @since 1.2 1289 */ 1290 public static final UnicodeBlock CJK_COMPATIBILITY_FORMS = 1291 new UnicodeBlock("CJK_COMPATIBILITY_FORMS", 1292 "CJK COMPATIBILITY FORMS", 1293 "CJKCOMPATIBILITYFORMS"); 1294 1295 /** 1296 * Constant for the "Small Form Variants" Unicode character block. 1297 * @since 1.2 1298 */ 1299 public static final UnicodeBlock SMALL_FORM_VARIANTS = 1300 new UnicodeBlock("SMALL_FORM_VARIANTS", 1301 "SMALL FORM VARIANTS", 1302 "SMALLFORMVARIANTS"); 1303 1304 /** 1305 * Constant for the "Arabic Presentation Forms-B" Unicode character block. 1306 * @since 1.2 1307 */ 1308 public static final UnicodeBlock ARABIC_PRESENTATION_FORMS_B = 1309 new UnicodeBlock("ARABIC_PRESENTATION_FORMS_B", 1310 "ARABIC PRESENTATION FORMS-B", 1311 "ARABICPRESENTATIONFORMS-B"); 1312 1313 /** 1314 * Constant for the "Halfwidth and Fullwidth Forms" Unicode character 1315 * block. 1316 * @since 1.2 1317 */ 1318 public static final UnicodeBlock HALFWIDTH_AND_FULLWIDTH_FORMS = 1319 new UnicodeBlock("HALFWIDTH_AND_FULLWIDTH_FORMS", 1320 "HALFWIDTH AND FULLWIDTH FORMS", 1321 "HALFWIDTHANDFULLWIDTHFORMS"); 1322 1323 /** 1324 * Constant for the "Specials" Unicode character block. 1325 * @since 1.2 1326 */ 1327 public static final UnicodeBlock SPECIALS = 1328 new UnicodeBlock("SPECIALS"); 1329 1330 /** 1331 * @deprecated 1332 * Instead of {@code SURROGATES_AREA}, use {@link #HIGH_SURROGATES}, 1333 * {@link #HIGH_PRIVATE_USE_SURROGATES}, and {@link #LOW_SURROGATES}. 1334 * These constants match the block definitions of the Unicode Standard. 1335 * The {@link #of(char)} and {@link #of(int)} methods return the 1336 * standard constants. 1337 */ 1338 @Deprecated(since="1.5") 1339 public static final UnicodeBlock SURROGATES_AREA = 1340 new UnicodeBlock("SURROGATES_AREA"); 1341 1342 /** 1343 * Constant for the "Syriac" Unicode character block. 1344 * @since 1.4 1345 */ 1346 public static final UnicodeBlock SYRIAC = 1347 new UnicodeBlock("SYRIAC"); 1348 1349 /** 1350 * Constant for the "Thaana" Unicode character block. 1351 * @since 1.4 1352 */ 1353 public static final UnicodeBlock THAANA = 1354 new UnicodeBlock("THAANA"); 1355 1356 /** 1357 * Constant for the "Sinhala" Unicode character block. 1358 * @since 1.4 1359 */ 1360 public static final UnicodeBlock SINHALA = 1361 new UnicodeBlock("SINHALA"); 1362 1363 /** 1364 * Constant for the "Myanmar" Unicode character block. 1365 * @since 1.4 1366 */ 1367 public static final UnicodeBlock MYANMAR = 1368 new UnicodeBlock("MYANMAR"); 1369 1370 /** 1371 * Constant for the "Ethiopic" Unicode character block. 1372 * @since 1.4 1373 */ 1374 public static final UnicodeBlock ETHIOPIC = 1375 new UnicodeBlock("ETHIOPIC"); 1376 1377 /** 1378 * Constant for the "Cherokee" Unicode character block. 1379 * @since 1.4 1380 */ 1381 public static final UnicodeBlock CHEROKEE = 1382 new UnicodeBlock("CHEROKEE"); 1383 1384 /** 1385 * Constant for the "Unified Canadian Aboriginal Syllabics" Unicode character block. 1386 * @since 1.4 1387 */ 1388 public static final UnicodeBlock UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS = 1389 new UnicodeBlock("UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS", 1390 "UNIFIED CANADIAN ABORIGINAL SYLLABICS", 1391 "UNIFIEDCANADIANABORIGINALSYLLABICS"); 1392 1393 /** 1394 * Constant for the "Ogham" Unicode character block. 1395 * @since 1.4 1396 */ 1397 public static final UnicodeBlock OGHAM = 1398 new UnicodeBlock("OGHAM"); 1399 1400 /** 1401 * Constant for the "Runic" Unicode character block. 1402 * @since 1.4 1403 */ 1404 public static final UnicodeBlock RUNIC = 1405 new UnicodeBlock("RUNIC"); 1406 1407 /** 1408 * Constant for the "Khmer" Unicode character block. 1409 * @since 1.4 1410 */ 1411 public static final UnicodeBlock KHMER = 1412 new UnicodeBlock("KHMER"); 1413 1414 /** 1415 * Constant for the "Mongolian" Unicode character block. 1416 * @since 1.4 1417 */ 1418 public static final UnicodeBlock MONGOLIAN = 1419 new UnicodeBlock("MONGOLIAN"); 1420 1421 /** 1422 * Constant for the "Braille Patterns" Unicode character block. 1423 * @since 1.4 1424 */ 1425 public static final UnicodeBlock BRAILLE_PATTERNS = 1426 new UnicodeBlock("BRAILLE_PATTERNS", 1427 "BRAILLE PATTERNS", 1428 "BRAILLEPATTERNS"); 1429 1430 /** 1431 * Constant for the "CJK Radicals Supplement" Unicode character block. 1432 * @since 1.4 1433 */ 1434 public static final UnicodeBlock CJK_RADICALS_SUPPLEMENT = 1435 new UnicodeBlock("CJK_RADICALS_SUPPLEMENT", 1436 "CJK RADICALS SUPPLEMENT", 1437 "CJKRADICALSSUPPLEMENT"); 1438 1439 /** 1440 * Constant for the "Kangxi Radicals" Unicode character block. 1441 * @since 1.4 1442 */ 1443 public static final UnicodeBlock KANGXI_RADICALS = 1444 new UnicodeBlock("KANGXI_RADICALS", 1445 "KANGXI RADICALS", 1446 "KANGXIRADICALS"); 1447 1448 /** 1449 * Constant for the "Ideographic Description Characters" Unicode character block. 1450 * @since 1.4 1451 */ 1452 public static final UnicodeBlock IDEOGRAPHIC_DESCRIPTION_CHARACTERS = 1453 new UnicodeBlock("IDEOGRAPHIC_DESCRIPTION_CHARACTERS", 1454 "IDEOGRAPHIC DESCRIPTION CHARACTERS", 1455 "IDEOGRAPHICDESCRIPTIONCHARACTERS"); 1456 1457 /** 1458 * Constant for the "Bopomofo Extended" Unicode character block. 1459 * @since 1.4 1460 */ 1461 public static final UnicodeBlock BOPOMOFO_EXTENDED = 1462 new UnicodeBlock("BOPOMOFO_EXTENDED", 1463 "BOPOMOFO EXTENDED", 1464 "BOPOMOFOEXTENDED"); 1465 1466 /** 1467 * Constant for the "CJK Unified Ideographs Extension A" Unicode character block. 1468 * @since 1.4 1469 */ 1470 public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A = 1471 new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A", 1472 "CJK UNIFIED IDEOGRAPHS EXTENSION A", 1473 "CJKUNIFIEDIDEOGRAPHSEXTENSIONA"); 1474 1475 /** 1476 * Constant for the "Yi Syllables" Unicode character block. 1477 * @since 1.4 1478 */ 1479 public static final UnicodeBlock YI_SYLLABLES = 1480 new UnicodeBlock("YI_SYLLABLES", 1481 "YI SYLLABLES", 1482 "YISYLLABLES"); 1483 1484 /** 1485 * Constant for the "Yi Radicals" Unicode character block. 1486 * @since 1.4 1487 */ 1488 public static final UnicodeBlock YI_RADICALS = 1489 new UnicodeBlock("YI_RADICALS", 1490 "YI RADICALS", 1491 "YIRADICALS"); 1492 1493 /** 1494 * Constant for the "Cyrillic Supplement" Unicode character block. 1495 * This block was previously known as the "Cyrillic Supplementary" block. 1496 * @since 1.5 1497 */ 1498 public static final UnicodeBlock CYRILLIC_SUPPLEMENTARY = 1499 new UnicodeBlock("CYRILLIC_SUPPLEMENTARY", 1500 "CYRILLIC SUPPLEMENTARY", 1501 "CYRILLICSUPPLEMENTARY", 1502 "CYRILLIC SUPPLEMENT", 1503 "CYRILLICSUPPLEMENT"); 1504 1505 /** 1506 * Constant for the "Tagalog" Unicode character block. 1507 * @since 1.5 1508 */ 1509 public static final UnicodeBlock TAGALOG = 1510 new UnicodeBlock("TAGALOG"); 1511 1512 /** 1513 * Constant for the "Hanunoo" Unicode character block. 1514 * @since 1.5 1515 */ 1516 public static final UnicodeBlock HANUNOO = 1517 new UnicodeBlock("HANUNOO"); 1518 1519 /** 1520 * Constant for the "Buhid" Unicode character block. 1521 * @since 1.5 1522 */ 1523 public static final UnicodeBlock BUHID = 1524 new UnicodeBlock("BUHID"); 1525 1526 /** 1527 * Constant for the "Tagbanwa" Unicode character block. 1528 * @since 1.5 1529 */ 1530 public static final UnicodeBlock TAGBANWA = 1531 new UnicodeBlock("TAGBANWA"); 1532 1533 /** 1534 * Constant for the "Limbu" Unicode character block. 1535 * @since 1.5 1536 */ 1537 public static final UnicodeBlock LIMBU = 1538 new UnicodeBlock("LIMBU"); 1539 1540 /** 1541 * Constant for the "Tai Le" Unicode character block. 1542 * @since 1.5 1543 */ 1544 public static final UnicodeBlock TAI_LE = 1545 new UnicodeBlock("TAI_LE", 1546 "TAI LE", 1547 "TAILE"); 1548 1549 /** 1550 * Constant for the "Khmer Symbols" Unicode character block. 1551 * @since 1.5 1552 */ 1553 public static final UnicodeBlock KHMER_SYMBOLS = 1554 new UnicodeBlock("KHMER_SYMBOLS", 1555 "KHMER SYMBOLS", 1556 "KHMERSYMBOLS"); 1557 1558 /** 1559 * Constant for the "Phonetic Extensions" Unicode character block. 1560 * @since 1.5 1561 */ 1562 public static final UnicodeBlock PHONETIC_EXTENSIONS = 1563 new UnicodeBlock("PHONETIC_EXTENSIONS", 1564 "PHONETIC EXTENSIONS", 1565 "PHONETICEXTENSIONS"); 1566 1567 /** 1568 * Constant for the "Miscellaneous Mathematical Symbols-A" Unicode character block. 1569 * @since 1.5 1570 */ 1571 public static final UnicodeBlock MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A = 1572 new UnicodeBlock("MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A", 1573 "MISCELLANEOUS MATHEMATICAL SYMBOLS-A", 1574 "MISCELLANEOUSMATHEMATICALSYMBOLS-A"); 1575 1576 /** 1577 * Constant for the "Supplemental Arrows-A" Unicode character block. 1578 * @since 1.5 1579 */ 1580 public static final UnicodeBlock SUPPLEMENTAL_ARROWS_A = 1581 new UnicodeBlock("SUPPLEMENTAL_ARROWS_A", 1582 "SUPPLEMENTAL ARROWS-A", 1583 "SUPPLEMENTALARROWS-A"); 1584 1585 /** 1586 * Constant for the "Supplemental Arrows-B" Unicode character block. 1587 * @since 1.5 1588 */ 1589 public static final UnicodeBlock SUPPLEMENTAL_ARROWS_B = 1590 new UnicodeBlock("SUPPLEMENTAL_ARROWS_B", 1591 "SUPPLEMENTAL ARROWS-B", 1592 "SUPPLEMENTALARROWS-B"); 1593 1594 /** 1595 * Constant for the "Miscellaneous Mathematical Symbols-B" Unicode 1596 * character block. 1597 * @since 1.5 1598 */ 1599 public static final UnicodeBlock MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B = 1600 new UnicodeBlock("MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B", 1601 "MISCELLANEOUS MATHEMATICAL SYMBOLS-B", 1602 "MISCELLANEOUSMATHEMATICALSYMBOLS-B"); 1603 1604 /** 1605 * Constant for the "Supplemental Mathematical Operators" Unicode 1606 * character block. 1607 * @since 1.5 1608 */ 1609 public static final UnicodeBlock SUPPLEMENTAL_MATHEMATICAL_OPERATORS = 1610 new UnicodeBlock("SUPPLEMENTAL_MATHEMATICAL_OPERATORS", 1611 "SUPPLEMENTAL MATHEMATICAL OPERATORS", 1612 "SUPPLEMENTALMATHEMATICALOPERATORS"); 1613 1614 /** 1615 * Constant for the "Miscellaneous Symbols and Arrows" Unicode character 1616 * block. 1617 * @since 1.5 1618 */ 1619 public static final UnicodeBlock MISCELLANEOUS_SYMBOLS_AND_ARROWS = 1620 new UnicodeBlock("MISCELLANEOUS_SYMBOLS_AND_ARROWS", 1621 "MISCELLANEOUS SYMBOLS AND ARROWS", 1622 "MISCELLANEOUSSYMBOLSANDARROWS"); 1623 1624 /** 1625 * Constant for the "Katakana Phonetic Extensions" Unicode character 1626 * block. 1627 * @since 1.5 1628 */ 1629 public static final UnicodeBlock KATAKANA_PHONETIC_EXTENSIONS = 1630 new UnicodeBlock("KATAKANA_PHONETIC_EXTENSIONS", 1631 "KATAKANA PHONETIC EXTENSIONS", 1632 "KATAKANAPHONETICEXTENSIONS"); 1633 1634 /** 1635 * Constant for the "Yijing Hexagram Symbols" Unicode character block. 1636 * @since 1.5 1637 */ 1638 public static final UnicodeBlock YIJING_HEXAGRAM_SYMBOLS = 1639 new UnicodeBlock("YIJING_HEXAGRAM_SYMBOLS", 1640 "YIJING HEXAGRAM SYMBOLS", 1641 "YIJINGHEXAGRAMSYMBOLS"); 1642 1643 /** 1644 * Constant for the "Variation Selectors" Unicode character block. 1645 * @since 1.5 1646 */ 1647 public static final UnicodeBlock VARIATION_SELECTORS = 1648 new UnicodeBlock("VARIATION_SELECTORS", 1649 "VARIATION SELECTORS", 1650 "VARIATIONSELECTORS"); 1651 1652 /** 1653 * Constant for the "Linear B Syllabary" Unicode character block. 1654 * @since 1.5 1655 */ 1656 public static final UnicodeBlock LINEAR_B_SYLLABARY = 1657 new UnicodeBlock("LINEAR_B_SYLLABARY", 1658 "LINEAR B SYLLABARY", 1659 "LINEARBSYLLABARY"); 1660 1661 /** 1662 * Constant for the "Linear B Ideograms" Unicode character block. 1663 * @since 1.5 1664 */ 1665 public static final UnicodeBlock LINEAR_B_IDEOGRAMS = 1666 new UnicodeBlock("LINEAR_B_IDEOGRAMS", 1667 "LINEAR B IDEOGRAMS", 1668 "LINEARBIDEOGRAMS"); 1669 1670 /** 1671 * Constant for the "Aegean Numbers" Unicode character block. 1672 * @since 1.5 1673 */ 1674 public static final UnicodeBlock AEGEAN_NUMBERS = 1675 new UnicodeBlock("AEGEAN_NUMBERS", 1676 "AEGEAN NUMBERS", 1677 "AEGEANNUMBERS"); 1678 1679 /** 1680 * Constant for the "Old Italic" Unicode character block. 1681 * @since 1.5 1682 */ 1683 public static final UnicodeBlock OLD_ITALIC = 1684 new UnicodeBlock("OLD_ITALIC", 1685 "OLD ITALIC", 1686 "OLDITALIC"); 1687 1688 /** 1689 * Constant for the "Gothic" Unicode character block. 1690 * @since 1.5 1691 */ 1692 public static final UnicodeBlock GOTHIC = 1693 new UnicodeBlock("GOTHIC"); 1694 1695 /** 1696 * Constant for the "Ugaritic" Unicode character block. 1697 * @since 1.5 1698 */ 1699 public static final UnicodeBlock UGARITIC = 1700 new UnicodeBlock("UGARITIC"); 1701 1702 /** 1703 * Constant for the "Deseret" Unicode character block. 1704 * @since 1.5 1705 */ 1706 public static final UnicodeBlock DESERET = 1707 new UnicodeBlock("DESERET"); 1708 1709 /** 1710 * Constant for the "Shavian" Unicode character block. 1711 * @since 1.5 1712 */ 1713 public static final UnicodeBlock SHAVIAN = 1714 new UnicodeBlock("SHAVIAN"); 1715 1716 /** 1717 * Constant for the "Osmanya" Unicode character block. 1718 * @since 1.5 1719 */ 1720 public static final UnicodeBlock OSMANYA = 1721 new UnicodeBlock("OSMANYA"); 1722 1723 /** 1724 * Constant for the "Cypriot Syllabary" Unicode character block. 1725 * @since 1.5 1726 */ 1727 public static final UnicodeBlock CYPRIOT_SYLLABARY = 1728 new UnicodeBlock("CYPRIOT_SYLLABARY", 1729 "CYPRIOT SYLLABARY", 1730 "CYPRIOTSYLLABARY"); 1731 1732 /** 1733 * Constant for the "Byzantine Musical Symbols" Unicode character block. 1734 * @since 1.5 1735 */ 1736 public static final UnicodeBlock BYZANTINE_MUSICAL_SYMBOLS = 1737 new UnicodeBlock("BYZANTINE_MUSICAL_SYMBOLS", 1738 "BYZANTINE MUSICAL SYMBOLS", 1739 "BYZANTINEMUSICALSYMBOLS"); 1740 1741 /** 1742 * Constant for the "Musical Symbols" Unicode character block. 1743 * @since 1.5 1744 */ 1745 public static final UnicodeBlock MUSICAL_SYMBOLS = 1746 new UnicodeBlock("MUSICAL_SYMBOLS", 1747 "MUSICAL SYMBOLS", 1748 "MUSICALSYMBOLS"); 1749 1750 /** 1751 * Constant for the "Tai Xuan Jing Symbols" Unicode character block. 1752 * @since 1.5 1753 */ 1754 public static final UnicodeBlock TAI_XUAN_JING_SYMBOLS = 1755 new UnicodeBlock("TAI_XUAN_JING_SYMBOLS", 1756 "TAI XUAN JING SYMBOLS", 1757 "TAIXUANJINGSYMBOLS"); 1758 1759 /** 1760 * Constant for the "Mathematical Alphanumeric Symbols" Unicode 1761 * character block. 1762 * @since 1.5 1763 */ 1764 public static final UnicodeBlock MATHEMATICAL_ALPHANUMERIC_SYMBOLS = 1765 new UnicodeBlock("MATHEMATICAL_ALPHANUMERIC_SYMBOLS", 1766 "MATHEMATICAL ALPHANUMERIC SYMBOLS", 1767 "MATHEMATICALALPHANUMERICSYMBOLS"); 1768 1769 /** 1770 * Constant for the "CJK Unified Ideographs Extension B" Unicode 1771 * character block. 1772 * @since 1.5 1773 */ 1774 public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B = 1775 new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B", 1776 "CJK UNIFIED IDEOGRAPHS EXTENSION B", 1777 "CJKUNIFIEDIDEOGRAPHSEXTENSIONB"); 1778 1779 /** 1780 * Constant for the "CJK Compatibility Ideographs Supplement" Unicode character block. 1781 * @since 1.5 1782 */ 1783 public static final UnicodeBlock CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT = 1784 new UnicodeBlock("CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT", 1785 "CJK COMPATIBILITY IDEOGRAPHS SUPPLEMENT", 1786 "CJKCOMPATIBILITYIDEOGRAPHSSUPPLEMENT"); 1787 1788 /** 1789 * Constant for the "Tags" Unicode character block. 1790 * @since 1.5 1791 */ 1792 public static final UnicodeBlock TAGS = 1793 new UnicodeBlock("TAGS"); 1794 1795 /** 1796 * Constant for the "Variation Selectors Supplement" Unicode character 1797 * block. 1798 * @since 1.5 1799 */ 1800 public static final UnicodeBlock VARIATION_SELECTORS_SUPPLEMENT = 1801 new UnicodeBlock("VARIATION_SELECTORS_SUPPLEMENT", 1802 "VARIATION SELECTORS SUPPLEMENT", 1803 "VARIATIONSELECTORSSUPPLEMENT"); 1804 1805 /** 1806 * Constant for the "Supplementary Private Use Area-A" Unicode character 1807 * block. 1808 * @since 1.5 1809 */ 1810 public static final UnicodeBlock SUPPLEMENTARY_PRIVATE_USE_AREA_A = 1811 new UnicodeBlock("SUPPLEMENTARY_PRIVATE_USE_AREA_A", 1812 "SUPPLEMENTARY PRIVATE USE AREA-A", 1813 "SUPPLEMENTARYPRIVATEUSEAREA-A"); 1814 1815 /** 1816 * Constant for the "Supplementary Private Use Area-B" Unicode character 1817 * block. 1818 * @since 1.5 1819 */ 1820 public static final UnicodeBlock SUPPLEMENTARY_PRIVATE_USE_AREA_B = 1821 new UnicodeBlock("SUPPLEMENTARY_PRIVATE_USE_AREA_B", 1822 "SUPPLEMENTARY PRIVATE USE AREA-B", 1823 "SUPPLEMENTARYPRIVATEUSEAREA-B"); 1824 1825 /** 1826 * Constant for the "High Surrogates" Unicode character block. 1827 * This block represents codepoint values in the high surrogate 1828 * range: U+D800 through U+DB7F 1829 * 1830 * @since 1.5 1831 */ 1832 public static final UnicodeBlock HIGH_SURROGATES = 1833 new UnicodeBlock("HIGH_SURROGATES", 1834 "HIGH SURROGATES", 1835 "HIGHSURROGATES"); 1836 1837 /** 1838 * Constant for the "High Private Use Surrogates" Unicode character 1839 * block. 1840 * This block represents codepoint values in the private use high 1841 * surrogate range: U+DB80 through U+DBFF 1842 * 1843 * @since 1.5 1844 */ 1845 public static final UnicodeBlock HIGH_PRIVATE_USE_SURROGATES = 1846 new UnicodeBlock("HIGH_PRIVATE_USE_SURROGATES", 1847 "HIGH PRIVATE USE SURROGATES", 1848 "HIGHPRIVATEUSESURROGATES"); 1849 1850 /** 1851 * Constant for the "Low Surrogates" Unicode character block. 1852 * This block represents codepoint values in the low surrogate 1853 * range: U+DC00 through U+DFFF 1854 * 1855 * @since 1.5 1856 */ 1857 public static final UnicodeBlock LOW_SURROGATES = 1858 new UnicodeBlock("LOW_SURROGATES", 1859 "LOW SURROGATES", 1860 "LOWSURROGATES"); 1861 1862 /** 1863 * Constant for the "Arabic Supplement" Unicode character block. 1864 * @since 1.7 1865 */ 1866 public static final UnicodeBlock ARABIC_SUPPLEMENT = 1867 new UnicodeBlock("ARABIC_SUPPLEMENT", 1868 "ARABIC SUPPLEMENT", 1869 "ARABICSUPPLEMENT"); 1870 1871 /** 1872 * Constant for the "NKo" Unicode character block. 1873 * @since 1.7 1874 */ 1875 public static final UnicodeBlock NKO = 1876 new UnicodeBlock("NKO"); 1877 1878 /** 1879 * Constant for the "Samaritan" Unicode character block. 1880 * @since 1.7 1881 */ 1882 public static final UnicodeBlock SAMARITAN = 1883 new UnicodeBlock("SAMARITAN"); 1884 1885 /** 1886 * Constant for the "Mandaic" Unicode character block. 1887 * @since 1.7 1888 */ 1889 public static final UnicodeBlock MANDAIC = 1890 new UnicodeBlock("MANDAIC"); 1891 1892 /** 1893 * Constant for the "Ethiopic Supplement" Unicode character block. 1894 * @since 1.7 1895 */ 1896 public static final UnicodeBlock ETHIOPIC_SUPPLEMENT = 1897 new UnicodeBlock("ETHIOPIC_SUPPLEMENT", 1898 "ETHIOPIC SUPPLEMENT", 1899 "ETHIOPICSUPPLEMENT"); 1900 1901 /** 1902 * Constant for the "Unified Canadian Aboriginal Syllabics Extended" 1903 * Unicode character block. 1904 * @since 1.7 1905 */ 1906 public static final UnicodeBlock UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED = 1907 new UnicodeBlock("UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED", 1908 "UNIFIED CANADIAN ABORIGINAL SYLLABICS EXTENDED", 1909 "UNIFIEDCANADIANABORIGINALSYLLABICSEXTENDED"); 1910 1911 /** 1912 * Constant for the "New Tai Lue" Unicode character block. 1913 * @since 1.7 1914 */ 1915 public static final UnicodeBlock NEW_TAI_LUE = 1916 new UnicodeBlock("NEW_TAI_LUE", 1917 "NEW TAI LUE", 1918 "NEWTAILUE"); 1919 1920 /** 1921 * Constant for the "Buginese" Unicode character block. 1922 * @since 1.7 1923 */ 1924 public static final UnicodeBlock BUGINESE = 1925 new UnicodeBlock("BUGINESE"); 1926 1927 /** 1928 * Constant for the "Tai Tham" Unicode character block. 1929 * @since 1.7 1930 */ 1931 public static final UnicodeBlock TAI_THAM = 1932 new UnicodeBlock("TAI_THAM", 1933 "TAI THAM", 1934 "TAITHAM"); 1935 1936 /** 1937 * Constant for the "Balinese" Unicode character block. 1938 * @since 1.7 1939 */ 1940 public static final UnicodeBlock BALINESE = 1941 new UnicodeBlock("BALINESE"); 1942 1943 /** 1944 * Constant for the "Sundanese" Unicode character block. 1945 * @since 1.7 1946 */ 1947 public static final UnicodeBlock SUNDANESE = 1948 new UnicodeBlock("SUNDANESE"); 1949 1950 /** 1951 * Constant for the "Batak" Unicode character block. 1952 * @since 1.7 1953 */ 1954 public static final UnicodeBlock BATAK = 1955 new UnicodeBlock("BATAK"); 1956 1957 /** 1958 * Constant for the "Lepcha" Unicode character block. 1959 * @since 1.7 1960 */ 1961 public static final UnicodeBlock LEPCHA = 1962 new UnicodeBlock("LEPCHA"); 1963 1964 /** 1965 * Constant for the "Ol Chiki" Unicode character block. 1966 * @since 1.7 1967 */ 1968 public static final UnicodeBlock OL_CHIKI = 1969 new UnicodeBlock("OL_CHIKI", 1970 "OL CHIKI", 1971 "OLCHIKI"); 1972 1973 /** 1974 * Constant for the "Vedic Extensions" Unicode character block. 1975 * @since 1.7 1976 */ 1977 public static final UnicodeBlock VEDIC_EXTENSIONS = 1978 new UnicodeBlock("VEDIC_EXTENSIONS", 1979 "VEDIC EXTENSIONS", 1980 "VEDICEXTENSIONS"); 1981 1982 /** 1983 * Constant for the "Phonetic Extensions Supplement" Unicode character 1984 * block. 1985 * @since 1.7 1986 */ 1987 public static final UnicodeBlock PHONETIC_EXTENSIONS_SUPPLEMENT = 1988 new UnicodeBlock("PHONETIC_EXTENSIONS_SUPPLEMENT", 1989 "PHONETIC EXTENSIONS SUPPLEMENT", 1990 "PHONETICEXTENSIONSSUPPLEMENT"); 1991 1992 /** 1993 * Constant for the "Combining Diacritical Marks Supplement" Unicode 1994 * character block. 1995 * @since 1.7 1996 */ 1997 public static final UnicodeBlock COMBINING_DIACRITICAL_MARKS_SUPPLEMENT = 1998 new UnicodeBlock("COMBINING_DIACRITICAL_MARKS_SUPPLEMENT", 1999 "COMBINING DIACRITICAL MARKS SUPPLEMENT", 2000 "COMBININGDIACRITICALMARKSSUPPLEMENT"); 2001 2002 /** 2003 * Constant for the "Glagolitic" Unicode character block. 2004 * @since 1.7 2005 */ 2006 public static final UnicodeBlock GLAGOLITIC = 2007 new UnicodeBlock("GLAGOLITIC"); 2008 2009 /** 2010 * Constant for the "Latin Extended-C" Unicode character block. 2011 * @since 1.7 2012 */ 2013 public static final UnicodeBlock LATIN_EXTENDED_C = 2014 new UnicodeBlock("LATIN_EXTENDED_C", 2015 "LATIN EXTENDED-C", 2016 "LATINEXTENDED-C"); 2017 2018 /** 2019 * Constant for the "Coptic" Unicode character block. 2020 * @since 1.7 2021 */ 2022 public static final UnicodeBlock COPTIC = 2023 new UnicodeBlock("COPTIC"); 2024 2025 /** 2026 * Constant for the "Georgian Supplement" Unicode character block. 2027 * @since 1.7 2028 */ 2029 public static final UnicodeBlock GEORGIAN_SUPPLEMENT = 2030 new UnicodeBlock("GEORGIAN_SUPPLEMENT", 2031 "GEORGIAN SUPPLEMENT", 2032 "GEORGIANSUPPLEMENT"); 2033 2034 /** 2035 * Constant for the "Tifinagh" Unicode character block. 2036 * @since 1.7 2037 */ 2038 public static final UnicodeBlock TIFINAGH = 2039 new UnicodeBlock("TIFINAGH"); 2040 2041 /** 2042 * Constant for the "Ethiopic Extended" Unicode character block. 2043 * @since 1.7 2044 */ 2045 public static final UnicodeBlock ETHIOPIC_EXTENDED = 2046 new UnicodeBlock("ETHIOPIC_EXTENDED", 2047 "ETHIOPIC EXTENDED", 2048 "ETHIOPICEXTENDED"); 2049 2050 /** 2051 * Constant for the "Cyrillic Extended-A" Unicode character block. 2052 * @since 1.7 2053 */ 2054 public static final UnicodeBlock CYRILLIC_EXTENDED_A = 2055 new UnicodeBlock("CYRILLIC_EXTENDED_A", 2056 "CYRILLIC EXTENDED-A", 2057 "CYRILLICEXTENDED-A"); 2058 2059 /** 2060 * Constant for the "Supplemental Punctuation" Unicode character block. 2061 * @since 1.7 2062 */ 2063 public static final UnicodeBlock SUPPLEMENTAL_PUNCTUATION = 2064 new UnicodeBlock("SUPPLEMENTAL_PUNCTUATION", 2065 "SUPPLEMENTAL PUNCTUATION", 2066 "SUPPLEMENTALPUNCTUATION"); 2067 2068 /** 2069 * Constant for the "CJK Strokes" Unicode character block. 2070 * @since 1.7 2071 */ 2072 public static final UnicodeBlock CJK_STROKES = 2073 new UnicodeBlock("CJK_STROKES", 2074 "CJK STROKES", 2075 "CJKSTROKES"); 2076 2077 /** 2078 * Constant for the "Lisu" Unicode character block. 2079 * @since 1.7 2080 */ 2081 public static final UnicodeBlock LISU = 2082 new UnicodeBlock("LISU"); 2083 2084 /** 2085 * Constant for the "Vai" Unicode character block. 2086 * @since 1.7 2087 */ 2088 public static final UnicodeBlock VAI = 2089 new UnicodeBlock("VAI"); 2090 2091 /** 2092 * Constant for the "Cyrillic Extended-B" Unicode character block. 2093 * @since 1.7 2094 */ 2095 public static final UnicodeBlock CYRILLIC_EXTENDED_B = 2096 new UnicodeBlock("CYRILLIC_EXTENDED_B", 2097 "CYRILLIC EXTENDED-B", 2098 "CYRILLICEXTENDED-B"); 2099 2100 /** 2101 * Constant for the "Bamum" Unicode character block. 2102 * @since 1.7 2103 */ 2104 public static final UnicodeBlock BAMUM = 2105 new UnicodeBlock("BAMUM"); 2106 2107 /** 2108 * Constant for the "Modifier Tone Letters" Unicode character block. 2109 * @since 1.7 2110 */ 2111 public static final UnicodeBlock MODIFIER_TONE_LETTERS = 2112 new UnicodeBlock("MODIFIER_TONE_LETTERS", 2113 "MODIFIER TONE LETTERS", 2114 "MODIFIERTONELETTERS"); 2115 2116 /** 2117 * Constant for the "Latin Extended-D" Unicode character block. 2118 * @since 1.7 2119 */ 2120 public static final UnicodeBlock LATIN_EXTENDED_D = 2121 new UnicodeBlock("LATIN_EXTENDED_D", 2122 "LATIN EXTENDED-D", 2123 "LATINEXTENDED-D"); 2124 2125 /** 2126 * Constant for the "Syloti Nagri" Unicode character block. 2127 * @since 1.7 2128 */ 2129 public static final UnicodeBlock SYLOTI_NAGRI = 2130 new UnicodeBlock("SYLOTI_NAGRI", 2131 "SYLOTI NAGRI", 2132 "SYLOTINAGRI"); 2133 2134 /** 2135 * Constant for the "Common Indic Number Forms" Unicode character block. 2136 * @since 1.7 2137 */ 2138 public static final UnicodeBlock COMMON_INDIC_NUMBER_FORMS = 2139 new UnicodeBlock("COMMON_INDIC_NUMBER_FORMS", 2140 "COMMON INDIC NUMBER FORMS", 2141 "COMMONINDICNUMBERFORMS"); 2142 2143 /** 2144 * Constant for the "Phags-pa" Unicode character block. 2145 * @since 1.7 2146 */ 2147 public static final UnicodeBlock PHAGS_PA = 2148 new UnicodeBlock("PHAGS_PA", 2149 "PHAGS-PA"); 2150 2151 /** 2152 * Constant for the "Saurashtra" Unicode character block. 2153 * @since 1.7 2154 */ 2155 public static final UnicodeBlock SAURASHTRA = 2156 new UnicodeBlock("SAURASHTRA"); 2157 2158 /** 2159 * Constant for the "Devanagari Extended" Unicode character block. 2160 * @since 1.7 2161 */ 2162 public static final UnicodeBlock DEVANAGARI_EXTENDED = 2163 new UnicodeBlock("DEVANAGARI_EXTENDED", 2164 "DEVANAGARI EXTENDED", 2165 "DEVANAGARIEXTENDED"); 2166 2167 /** 2168 * Constant for the "Kayah Li" Unicode character block. 2169 * @since 1.7 2170 */ 2171 public static final UnicodeBlock KAYAH_LI = 2172 new UnicodeBlock("KAYAH_LI", 2173 "KAYAH LI", 2174 "KAYAHLI"); 2175 2176 /** 2177 * Constant for the "Rejang" Unicode character block. 2178 * @since 1.7 2179 */ 2180 public static final UnicodeBlock REJANG = 2181 new UnicodeBlock("REJANG"); 2182 2183 /** 2184 * Constant for the "Hangul Jamo Extended-A" Unicode character block. 2185 * @since 1.7 2186 */ 2187 public static final UnicodeBlock HANGUL_JAMO_EXTENDED_A = 2188 new UnicodeBlock("HANGUL_JAMO_EXTENDED_A", 2189 "HANGUL JAMO EXTENDED-A", 2190 "HANGULJAMOEXTENDED-A"); 2191 2192 /** 2193 * Constant for the "Javanese" Unicode character block. 2194 * @since 1.7 2195 */ 2196 public static final UnicodeBlock JAVANESE = 2197 new UnicodeBlock("JAVANESE"); 2198 2199 /** 2200 * Constant for the "Cham" Unicode character block. 2201 * @since 1.7 2202 */ 2203 public static final UnicodeBlock CHAM = 2204 new UnicodeBlock("CHAM"); 2205 2206 /** 2207 * Constant for the "Myanmar Extended-A" Unicode character block. 2208 * @since 1.7 2209 */ 2210 public static final UnicodeBlock MYANMAR_EXTENDED_A = 2211 new UnicodeBlock("MYANMAR_EXTENDED_A", 2212 "MYANMAR EXTENDED-A", 2213 "MYANMAREXTENDED-A"); 2214 2215 /** 2216 * Constant for the "Tai Viet" Unicode character block. 2217 * @since 1.7 2218 */ 2219 public static final UnicodeBlock TAI_VIET = 2220 new UnicodeBlock("TAI_VIET", 2221 "TAI VIET", 2222 "TAIVIET"); 2223 2224 /** 2225 * Constant for the "Ethiopic Extended-A" Unicode character block. 2226 * @since 1.7 2227 */ 2228 public static final UnicodeBlock ETHIOPIC_EXTENDED_A = 2229 new UnicodeBlock("ETHIOPIC_EXTENDED_A", 2230 "ETHIOPIC EXTENDED-A", 2231 "ETHIOPICEXTENDED-A"); 2232 2233 /** 2234 * Constant for the "Meetei Mayek" Unicode character block. 2235 * @since 1.7 2236 */ 2237 public static final UnicodeBlock MEETEI_MAYEK = 2238 new UnicodeBlock("MEETEI_MAYEK", 2239 "MEETEI MAYEK", 2240 "MEETEIMAYEK"); 2241 2242 /** 2243 * Constant for the "Hangul Jamo Extended-B" Unicode character block. 2244 * @since 1.7 2245 */ 2246 public static final UnicodeBlock HANGUL_JAMO_EXTENDED_B = 2247 new UnicodeBlock("HANGUL_JAMO_EXTENDED_B", 2248 "HANGUL JAMO EXTENDED-B", 2249 "HANGULJAMOEXTENDED-B"); 2250 2251 /** 2252 * Constant for the "Vertical Forms" Unicode character block. 2253 * @since 1.7 2254 */ 2255 public static final UnicodeBlock VERTICAL_FORMS = 2256 new UnicodeBlock("VERTICAL_FORMS", 2257 "VERTICAL FORMS", 2258 "VERTICALFORMS"); 2259 2260 /** 2261 * Constant for the "Ancient Greek Numbers" Unicode character block. 2262 * @since 1.7 2263 */ 2264 public static final UnicodeBlock ANCIENT_GREEK_NUMBERS = 2265 new UnicodeBlock("ANCIENT_GREEK_NUMBERS", 2266 "ANCIENT GREEK NUMBERS", 2267 "ANCIENTGREEKNUMBERS"); 2268 2269 /** 2270 * Constant for the "Ancient Symbols" Unicode character block. 2271 * @since 1.7 2272 */ 2273 public static final UnicodeBlock ANCIENT_SYMBOLS = 2274 new UnicodeBlock("ANCIENT_SYMBOLS", 2275 "ANCIENT SYMBOLS", 2276 "ANCIENTSYMBOLS"); 2277 2278 /** 2279 * Constant for the "Phaistos Disc" Unicode character block. 2280 * @since 1.7 2281 */ 2282 public static final UnicodeBlock PHAISTOS_DISC = 2283 new UnicodeBlock("PHAISTOS_DISC", 2284 "PHAISTOS DISC", 2285 "PHAISTOSDISC"); 2286 2287 /** 2288 * Constant for the "Lycian" Unicode character block. 2289 * @since 1.7 2290 */ 2291 public static final UnicodeBlock LYCIAN = 2292 new UnicodeBlock("LYCIAN"); 2293 2294 /** 2295 * Constant for the "Carian" Unicode character block. 2296 * @since 1.7 2297 */ 2298 public static final UnicodeBlock CARIAN = 2299 new UnicodeBlock("CARIAN"); 2300 2301 /** 2302 * Constant for the "Old Persian" Unicode character block. 2303 * @since 1.7 2304 */ 2305 public static final UnicodeBlock OLD_PERSIAN = 2306 new UnicodeBlock("OLD_PERSIAN", 2307 "OLD PERSIAN", 2308 "OLDPERSIAN"); 2309 2310 /** 2311 * Constant for the "Imperial Aramaic" Unicode character block. 2312 * @since 1.7 2313 */ 2314 public static final UnicodeBlock IMPERIAL_ARAMAIC = 2315 new UnicodeBlock("IMPERIAL_ARAMAIC", 2316 "IMPERIAL ARAMAIC", 2317 "IMPERIALARAMAIC"); 2318 2319 /** 2320 * Constant for the "Phoenician" Unicode character block. 2321 * @since 1.7 2322 */ 2323 public static final UnicodeBlock PHOENICIAN = 2324 new UnicodeBlock("PHOENICIAN"); 2325 2326 /** 2327 * Constant for the "Lydian" Unicode character block. 2328 * @since 1.7 2329 */ 2330 public static final UnicodeBlock LYDIAN = 2331 new UnicodeBlock("LYDIAN"); 2332 2333 /** 2334 * Constant for the "Kharoshthi" Unicode character block. 2335 * @since 1.7 2336 */ 2337 public static final UnicodeBlock KHAROSHTHI = 2338 new UnicodeBlock("KHAROSHTHI"); 2339 2340 /** 2341 * Constant for the "Old South Arabian" Unicode character block. 2342 * @since 1.7 2343 */ 2344 public static final UnicodeBlock OLD_SOUTH_ARABIAN = 2345 new UnicodeBlock("OLD_SOUTH_ARABIAN", 2346 "OLD SOUTH ARABIAN", 2347 "OLDSOUTHARABIAN"); 2348 2349 /** 2350 * Constant for the "Avestan" Unicode character block. 2351 * @since 1.7 2352 */ 2353 public static final UnicodeBlock AVESTAN = 2354 new UnicodeBlock("AVESTAN"); 2355 2356 /** 2357 * Constant for the "Inscriptional Parthian" Unicode character block. 2358 * @since 1.7 2359 */ 2360 public static final UnicodeBlock INSCRIPTIONAL_PARTHIAN = 2361 new UnicodeBlock("INSCRIPTIONAL_PARTHIAN", 2362 "INSCRIPTIONAL PARTHIAN", 2363 "INSCRIPTIONALPARTHIAN"); 2364 2365 /** 2366 * Constant for the "Inscriptional Pahlavi" Unicode character block. 2367 * @since 1.7 2368 */ 2369 public static final UnicodeBlock INSCRIPTIONAL_PAHLAVI = 2370 new UnicodeBlock("INSCRIPTIONAL_PAHLAVI", 2371 "INSCRIPTIONAL PAHLAVI", 2372 "INSCRIPTIONALPAHLAVI"); 2373 2374 /** 2375 * Constant for the "Old Turkic" Unicode character block. 2376 * @since 1.7 2377 */ 2378 public static final UnicodeBlock OLD_TURKIC = 2379 new UnicodeBlock("OLD_TURKIC", 2380 "OLD TURKIC", 2381 "OLDTURKIC"); 2382 2383 /** 2384 * Constant for the "Rumi Numeral Symbols" Unicode character block. 2385 * @since 1.7 2386 */ 2387 public static final UnicodeBlock RUMI_NUMERAL_SYMBOLS = 2388 new UnicodeBlock("RUMI_NUMERAL_SYMBOLS", 2389 "RUMI NUMERAL SYMBOLS", 2390 "RUMINUMERALSYMBOLS"); 2391 2392 /** 2393 * Constant for the "Brahmi" Unicode character block. 2394 * @since 1.7 2395 */ 2396 public static final UnicodeBlock BRAHMI = 2397 new UnicodeBlock("BRAHMI"); 2398 2399 /** 2400 * Constant for the "Kaithi" Unicode character block. 2401 * @since 1.7 2402 */ 2403 public static final UnicodeBlock KAITHI = 2404 new UnicodeBlock("KAITHI"); 2405 2406 /** 2407 * Constant for the "Cuneiform" Unicode character block. 2408 * @since 1.7 2409 */ 2410 public static final UnicodeBlock CUNEIFORM = 2411 new UnicodeBlock("CUNEIFORM"); 2412 2413 /** 2414 * Constant for the "Cuneiform Numbers and Punctuation" Unicode 2415 * character block. 2416 * @since 1.7 2417 */ 2418 public static final UnicodeBlock CUNEIFORM_NUMBERS_AND_PUNCTUATION = 2419 new UnicodeBlock("CUNEIFORM_NUMBERS_AND_PUNCTUATION", 2420 "CUNEIFORM NUMBERS AND PUNCTUATION", 2421 "CUNEIFORMNUMBERSANDPUNCTUATION"); 2422 2423 /** 2424 * Constant for the "Egyptian Hieroglyphs" Unicode character block. 2425 * @since 1.7 2426 */ 2427 public static final UnicodeBlock EGYPTIAN_HIEROGLYPHS = 2428 new UnicodeBlock("EGYPTIAN_HIEROGLYPHS", 2429 "EGYPTIAN HIEROGLYPHS", 2430 "EGYPTIANHIEROGLYPHS"); 2431 2432 /** 2433 * Constant for the "Bamum Supplement" Unicode character block. 2434 * @since 1.7 2435 */ 2436 public static final UnicodeBlock BAMUM_SUPPLEMENT = 2437 new UnicodeBlock("BAMUM_SUPPLEMENT", 2438 "BAMUM SUPPLEMENT", 2439 "BAMUMSUPPLEMENT"); 2440 2441 /** 2442 * Constant for the "Kana Supplement" Unicode character block. 2443 * @since 1.7 2444 */ 2445 public static final UnicodeBlock KANA_SUPPLEMENT = 2446 new UnicodeBlock("KANA_SUPPLEMENT", 2447 "KANA SUPPLEMENT", 2448 "KANASUPPLEMENT"); 2449 2450 /** 2451 * Constant for the "Ancient Greek Musical Notation" Unicode character 2452 * block. 2453 * @since 1.7 2454 */ 2455 public static final UnicodeBlock ANCIENT_GREEK_MUSICAL_NOTATION = 2456 new UnicodeBlock("ANCIENT_GREEK_MUSICAL_NOTATION", 2457 "ANCIENT GREEK MUSICAL NOTATION", 2458 "ANCIENTGREEKMUSICALNOTATION"); 2459 2460 /** 2461 * Constant for the "Counting Rod Numerals" Unicode character block. 2462 * @since 1.7 2463 */ 2464 public static final UnicodeBlock COUNTING_ROD_NUMERALS = 2465 new UnicodeBlock("COUNTING_ROD_NUMERALS", 2466 "COUNTING ROD NUMERALS", 2467 "COUNTINGRODNUMERALS"); 2468 2469 /** 2470 * Constant for the "Mahjong Tiles" Unicode character block. 2471 * @since 1.7 2472 */ 2473 public static final UnicodeBlock MAHJONG_TILES = 2474 new UnicodeBlock("MAHJONG_TILES", 2475 "MAHJONG TILES", 2476 "MAHJONGTILES"); 2477 2478 /** 2479 * Constant for the "Domino Tiles" Unicode character block. 2480 * @since 1.7 2481 */ 2482 public static final UnicodeBlock DOMINO_TILES = 2483 new UnicodeBlock("DOMINO_TILES", 2484 "DOMINO TILES", 2485 "DOMINOTILES"); 2486 2487 /** 2488 * Constant for the "Playing Cards" Unicode character block. 2489 * @since 1.7 2490 */ 2491 public static final UnicodeBlock PLAYING_CARDS = 2492 new UnicodeBlock("PLAYING_CARDS", 2493 "PLAYING CARDS", 2494 "PLAYINGCARDS"); 2495 2496 /** 2497 * Constant for the "Enclosed Alphanumeric Supplement" Unicode character 2498 * block. 2499 * @since 1.7 2500 */ 2501 public static final UnicodeBlock ENCLOSED_ALPHANUMERIC_SUPPLEMENT = 2502 new UnicodeBlock("ENCLOSED_ALPHANUMERIC_SUPPLEMENT", 2503 "ENCLOSED ALPHANUMERIC SUPPLEMENT", 2504 "ENCLOSEDALPHANUMERICSUPPLEMENT"); 2505 2506 /** 2507 * Constant for the "Enclosed Ideographic Supplement" Unicode character 2508 * block. 2509 * @since 1.7 2510 */ 2511 public static final UnicodeBlock ENCLOSED_IDEOGRAPHIC_SUPPLEMENT = 2512 new UnicodeBlock("ENCLOSED_IDEOGRAPHIC_SUPPLEMENT", 2513 "ENCLOSED IDEOGRAPHIC SUPPLEMENT", 2514 "ENCLOSEDIDEOGRAPHICSUPPLEMENT"); 2515 2516 /** 2517 * Constant for the "Miscellaneous Symbols And Pictographs" Unicode 2518 * character block. 2519 * @since 1.7 2520 */ 2521 public static final UnicodeBlock MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS = 2522 new UnicodeBlock("MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS", 2523 "MISCELLANEOUS SYMBOLS AND PICTOGRAPHS", 2524 "MISCELLANEOUSSYMBOLSANDPICTOGRAPHS"); 2525 2526 /** 2527 * Constant for the "Emoticons" Unicode character block. 2528 * @since 1.7 2529 */ 2530 public static final UnicodeBlock EMOTICONS = 2531 new UnicodeBlock("EMOTICONS"); 2532 2533 /** 2534 * Constant for the "Transport And Map Symbols" Unicode character block. 2535 * @since 1.7 2536 */ 2537 public static final UnicodeBlock TRANSPORT_AND_MAP_SYMBOLS = 2538 new UnicodeBlock("TRANSPORT_AND_MAP_SYMBOLS", 2539 "TRANSPORT AND MAP SYMBOLS", 2540 "TRANSPORTANDMAPSYMBOLS"); 2541 2542 /** 2543 * Constant for the "Alchemical Symbols" Unicode character block. 2544 * @since 1.7 2545 */ 2546 public static final UnicodeBlock ALCHEMICAL_SYMBOLS = 2547 new UnicodeBlock("ALCHEMICAL_SYMBOLS", 2548 "ALCHEMICAL SYMBOLS", 2549 "ALCHEMICALSYMBOLS"); 2550 2551 /** 2552 * Constant for the "CJK Unified Ideographs Extension C" Unicode 2553 * character block. 2554 * @since 1.7 2555 */ 2556 public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C = 2557 new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C", 2558 "CJK UNIFIED IDEOGRAPHS EXTENSION C", 2559 "CJKUNIFIEDIDEOGRAPHSEXTENSIONC"); 2560 2561 /** 2562 * Constant for the "CJK Unified Ideographs Extension D" Unicode 2563 * character block. 2564 * @since 1.7 2565 */ 2566 public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D = 2567 new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D", 2568 "CJK UNIFIED IDEOGRAPHS EXTENSION D", 2569 "CJKUNIFIEDIDEOGRAPHSEXTENSIOND"); 2570 2571 /** 2572 * Constant for the "Arabic Extended-A" Unicode character block. 2573 * @since 1.8 2574 */ 2575 public static final UnicodeBlock ARABIC_EXTENDED_A = 2576 new UnicodeBlock("ARABIC_EXTENDED_A", 2577 "ARABIC EXTENDED-A", 2578 "ARABICEXTENDED-A"); 2579 2580 /** 2581 * Constant for the "Sundanese Supplement" Unicode character block. 2582 * @since 1.8 2583 */ 2584 public static final UnicodeBlock SUNDANESE_SUPPLEMENT = 2585 new UnicodeBlock("SUNDANESE_SUPPLEMENT", 2586 "SUNDANESE SUPPLEMENT", 2587 "SUNDANESESUPPLEMENT"); 2588 2589 /** 2590 * Constant for the "Meetei Mayek Extensions" Unicode character block. 2591 * @since 1.8 2592 */ 2593 public static final UnicodeBlock MEETEI_MAYEK_EXTENSIONS = 2594 new UnicodeBlock("MEETEI_MAYEK_EXTENSIONS", 2595 "MEETEI MAYEK EXTENSIONS", 2596 "MEETEIMAYEKEXTENSIONS"); 2597 2598 /** 2599 * Constant for the "Meroitic Hieroglyphs" Unicode character block. 2600 * @since 1.8 2601 */ 2602 public static final UnicodeBlock MEROITIC_HIEROGLYPHS = 2603 new UnicodeBlock("MEROITIC_HIEROGLYPHS", 2604 "MEROITIC HIEROGLYPHS", 2605 "MEROITICHIEROGLYPHS"); 2606 2607 /** 2608 * Constant for the "Meroitic Cursive" Unicode character block. 2609 * @since 1.8 2610 */ 2611 public static final UnicodeBlock MEROITIC_CURSIVE = 2612 new UnicodeBlock("MEROITIC_CURSIVE", 2613 "MEROITIC CURSIVE", 2614 "MEROITICCURSIVE"); 2615 2616 /** 2617 * Constant for the "Sora Sompeng" Unicode character block. 2618 * @since 1.8 2619 */ 2620 public static final UnicodeBlock SORA_SOMPENG = 2621 new UnicodeBlock("SORA_SOMPENG", 2622 "SORA SOMPENG", 2623 "SORASOMPENG"); 2624 2625 /** 2626 * Constant for the "Chakma" Unicode character block. 2627 * @since 1.8 2628 */ 2629 public static final UnicodeBlock CHAKMA = 2630 new UnicodeBlock("CHAKMA"); 2631 2632 /** 2633 * Constant for the "Sharada" Unicode character block. 2634 * @since 1.8 2635 */ 2636 public static final UnicodeBlock SHARADA = 2637 new UnicodeBlock("SHARADA"); 2638 2639 /** 2640 * Constant for the "Takri" Unicode character block. 2641 * @since 1.8 2642 */ 2643 public static final UnicodeBlock TAKRI = 2644 new UnicodeBlock("TAKRI"); 2645 2646 /** 2647 * Constant for the "Miao" Unicode character block. 2648 * @since 1.8 2649 */ 2650 public static final UnicodeBlock MIAO = 2651 new UnicodeBlock("MIAO"); 2652 2653 /** 2654 * Constant for the "Arabic Mathematical Alphabetic Symbols" Unicode 2655 * character block. 2656 * @since 1.8 2657 */ 2658 public static final UnicodeBlock ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS = 2659 new UnicodeBlock("ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS", 2660 "ARABIC MATHEMATICAL ALPHABETIC SYMBOLS", 2661 "ARABICMATHEMATICALALPHABETICSYMBOLS"); 2662 2663 /** 2664 * Constant for the "Combining Diacritical Marks Extended" Unicode 2665 * character block. 2666 * @since 9 2667 */ 2668 public static final UnicodeBlock COMBINING_DIACRITICAL_MARKS_EXTENDED = 2669 new UnicodeBlock("COMBINING_DIACRITICAL_MARKS_EXTENDED", 2670 "COMBINING DIACRITICAL MARKS EXTENDED", 2671 "COMBININGDIACRITICALMARKSEXTENDED"); 2672 2673 /** 2674 * Constant for the "Myanmar Extended-B" Unicode character block. 2675 * @since 9 2676 */ 2677 public static final UnicodeBlock MYANMAR_EXTENDED_B = 2678 new UnicodeBlock("MYANMAR_EXTENDED_B", 2679 "MYANMAR EXTENDED-B", 2680 "MYANMAREXTENDED-B"); 2681 2682 /** 2683 * Constant for the "Latin Extended-E" Unicode character block. 2684 * @since 9 2685 */ 2686 public static final UnicodeBlock LATIN_EXTENDED_E = 2687 new UnicodeBlock("LATIN_EXTENDED_E", 2688 "LATIN EXTENDED-E", 2689 "LATINEXTENDED-E"); 2690 2691 /** 2692 * Constant for the "Coptic Epact Numbers" Unicode character block. 2693 * @since 9 2694 */ 2695 public static final UnicodeBlock COPTIC_EPACT_NUMBERS = 2696 new UnicodeBlock("COPTIC_EPACT_NUMBERS", 2697 "COPTIC EPACT NUMBERS", 2698 "COPTICEPACTNUMBERS"); 2699 2700 /** 2701 * Constant for the "Old Permic" Unicode character block. 2702 * @since 9 2703 */ 2704 public static final UnicodeBlock OLD_PERMIC = 2705 new UnicodeBlock("OLD_PERMIC", 2706 "OLD PERMIC", 2707 "OLDPERMIC"); 2708 2709 /** 2710 * Constant for the "Elbasan" Unicode character block. 2711 * @since 9 2712 */ 2713 public static final UnicodeBlock ELBASAN = 2714 new UnicodeBlock("ELBASAN"); 2715 2716 /** 2717 * Constant for the "Caucasian Albanian" Unicode character block. 2718 * @since 9 2719 */ 2720 public static final UnicodeBlock CAUCASIAN_ALBANIAN = 2721 new UnicodeBlock("CAUCASIAN_ALBANIAN", 2722 "CAUCASIAN ALBANIAN", 2723 "CAUCASIANALBANIAN"); 2724 2725 /** 2726 * Constant for the "Linear A" Unicode character block. 2727 * @since 9 2728 */ 2729 public static final UnicodeBlock LINEAR_A = 2730 new UnicodeBlock("LINEAR_A", 2731 "LINEAR A", 2732 "LINEARA"); 2733 2734 /** 2735 * Constant for the "Palmyrene" Unicode character block. 2736 * @since 9 2737 */ 2738 public static final UnicodeBlock PALMYRENE = 2739 new UnicodeBlock("PALMYRENE"); 2740 2741 /** 2742 * Constant for the "Nabataean" Unicode character block. 2743 * @since 9 2744 */ 2745 public static final UnicodeBlock NABATAEAN = 2746 new UnicodeBlock("NABATAEAN"); 2747 2748 /** 2749 * Constant for the "Old North Arabian" Unicode character block. 2750 * @since 9 2751 */ 2752 public static final UnicodeBlock OLD_NORTH_ARABIAN = 2753 new UnicodeBlock("OLD_NORTH_ARABIAN", 2754 "OLD NORTH ARABIAN", 2755 "OLDNORTHARABIAN"); 2756 2757 /** 2758 * Constant for the "Manichaean" Unicode character block. 2759 * @since 9 2760 */ 2761 public static final UnicodeBlock MANICHAEAN = 2762 new UnicodeBlock("MANICHAEAN"); 2763 2764 /** 2765 * Constant for the "Psalter Pahlavi" Unicode character block. 2766 * @since 9 2767 */ 2768 public static final UnicodeBlock PSALTER_PAHLAVI = 2769 new UnicodeBlock("PSALTER_PAHLAVI", 2770 "PSALTER PAHLAVI", 2771 "PSALTERPAHLAVI"); 2772 2773 /** 2774 * Constant for the "Mahajani" Unicode character block. 2775 * @since 9 2776 */ 2777 public static final UnicodeBlock MAHAJANI = 2778 new UnicodeBlock("MAHAJANI"); 2779 2780 /** 2781 * Constant for the "Sinhala Archaic Numbers" Unicode character block. 2782 * @since 9 2783 */ 2784 public static final UnicodeBlock SINHALA_ARCHAIC_NUMBERS = 2785 new UnicodeBlock("SINHALA_ARCHAIC_NUMBERS", 2786 "SINHALA ARCHAIC NUMBERS", 2787 "SINHALAARCHAICNUMBERS"); 2788 2789 /** 2790 * Constant for the "Khojki" Unicode character block. 2791 * @since 9 2792 */ 2793 public static final UnicodeBlock KHOJKI = 2794 new UnicodeBlock("KHOJKI"); 2795 2796 /** 2797 * Constant for the "Khudawadi" Unicode character block. 2798 * @since 9 2799 */ 2800 public static final UnicodeBlock KHUDAWADI = 2801 new UnicodeBlock("KHUDAWADI"); 2802 2803 /** 2804 * Constant for the "Grantha" Unicode character block. 2805 * @since 9 2806 */ 2807 public static final UnicodeBlock GRANTHA = 2808 new UnicodeBlock("GRANTHA"); 2809 2810 /** 2811 * Constant for the "Tirhuta" Unicode character block. 2812 * @since 9 2813 */ 2814 public static final UnicodeBlock TIRHUTA = 2815 new UnicodeBlock("TIRHUTA"); 2816 2817 /** 2818 * Constant for the "Siddham" Unicode character block. 2819 * @since 9 2820 */ 2821 public static final UnicodeBlock SIDDHAM = 2822 new UnicodeBlock("SIDDHAM"); 2823 2824 /** 2825 * Constant for the "Modi" Unicode character block. 2826 * @since 9 2827 */ 2828 public static final UnicodeBlock MODI = 2829 new UnicodeBlock("MODI"); 2830 2831 /** 2832 * Constant for the "Warang Citi" Unicode character block. 2833 * @since 9 2834 */ 2835 public static final UnicodeBlock WARANG_CITI = 2836 new UnicodeBlock("WARANG_CITI", 2837 "WARANG CITI", 2838 "WARANGCITI"); 2839 2840 /** 2841 * Constant for the "Pau Cin Hau" Unicode character block. 2842 * @since 9 2843 */ 2844 public static final UnicodeBlock PAU_CIN_HAU = 2845 new UnicodeBlock("PAU_CIN_HAU", 2846 "PAU CIN HAU", 2847 "PAUCINHAU"); 2848 2849 /** 2850 * Constant for the "Mro" Unicode character block. 2851 * @since 9 2852 */ 2853 public static final UnicodeBlock MRO = 2854 new UnicodeBlock("MRO"); 2855 2856 /** 2857 * Constant for the "Bassa Vah" Unicode character block. 2858 * @since 9 2859 */ 2860 public static final UnicodeBlock BASSA_VAH = 2861 new UnicodeBlock("BASSA_VAH", 2862 "BASSA VAH", 2863 "BASSAVAH"); 2864 2865 /** 2866 * Constant for the "Pahawh Hmong" Unicode character block. 2867 * @since 9 2868 */ 2869 public static final UnicodeBlock PAHAWH_HMONG = 2870 new UnicodeBlock("PAHAWH_HMONG", 2871 "PAHAWH HMONG", 2872 "PAHAWHHMONG"); 2873 2874 /** 2875 * Constant for the "Duployan" Unicode character block. 2876 * @since 9 2877 */ 2878 public static final UnicodeBlock DUPLOYAN = 2879 new UnicodeBlock("DUPLOYAN"); 2880 2881 /** 2882 * Constant for the "Shorthand Format Controls" Unicode character block. 2883 * @since 9 2884 */ 2885 public static final UnicodeBlock SHORTHAND_FORMAT_CONTROLS = 2886 new UnicodeBlock("SHORTHAND_FORMAT_CONTROLS", 2887 "SHORTHAND FORMAT CONTROLS", 2888 "SHORTHANDFORMATCONTROLS"); 2889 2890 /** 2891 * Constant for the "Mende Kikakui" Unicode character block. 2892 * @since 9 2893 */ 2894 public static final UnicodeBlock MENDE_KIKAKUI = 2895 new UnicodeBlock("MENDE_KIKAKUI", 2896 "MENDE KIKAKUI", 2897 "MENDEKIKAKUI"); 2898 2899 /** 2900 * Constant for the "Ornamental Dingbats" Unicode character block. 2901 * @since 9 2902 */ 2903 public static final UnicodeBlock ORNAMENTAL_DINGBATS = 2904 new UnicodeBlock("ORNAMENTAL_DINGBATS", 2905 "ORNAMENTAL DINGBATS", 2906 "ORNAMENTALDINGBATS"); 2907 2908 /** 2909 * Constant for the "Geometric Shapes Extended" Unicode character block. 2910 * @since 9 2911 */ 2912 public static final UnicodeBlock GEOMETRIC_SHAPES_EXTENDED = 2913 new UnicodeBlock("GEOMETRIC_SHAPES_EXTENDED", 2914 "GEOMETRIC SHAPES EXTENDED", 2915 "GEOMETRICSHAPESEXTENDED"); 2916 2917 /** 2918 * Constant for the "Supplemental Arrows-C" Unicode character block. 2919 * @since 9 2920 */ 2921 public static final UnicodeBlock SUPPLEMENTAL_ARROWS_C = 2922 new UnicodeBlock("SUPPLEMENTAL_ARROWS_C", 2923 "SUPPLEMENTAL ARROWS-C", 2924 "SUPPLEMENTALARROWS-C"); 2925 2926 /** 2927 * Constant for the "Cherokee Supplement" Unicode character block. 2928 * @since 9 2929 */ 2930 public static final UnicodeBlock CHEROKEE_SUPPLEMENT = 2931 new UnicodeBlock("CHEROKEE_SUPPLEMENT", 2932 "CHEROKEE SUPPLEMENT", 2933 "CHEROKEESUPPLEMENT"); 2934 2935 /** 2936 * Constant for the "Hatran" Unicode character block. 2937 * @since 9 2938 */ 2939 public static final UnicodeBlock HATRAN = 2940 new UnicodeBlock("HATRAN"); 2941 2942 /** 2943 * Constant for the "Old Hungarian" Unicode character block. 2944 * @since 9 2945 */ 2946 public static final UnicodeBlock OLD_HUNGARIAN = 2947 new UnicodeBlock("OLD_HUNGARIAN", 2948 "OLD HUNGARIAN", 2949 "OLDHUNGARIAN"); 2950 2951 /** 2952 * Constant for the "Multani" Unicode character block. 2953 * @since 9 2954 */ 2955 public static final UnicodeBlock MULTANI = 2956 new UnicodeBlock("MULTANI"); 2957 2958 /** 2959 * Constant for the "Ahom" Unicode character block. 2960 * @since 9 2961 */ 2962 public static final UnicodeBlock AHOM = 2963 new UnicodeBlock("AHOM"); 2964 2965 /** 2966 * Constant for the "Early Dynastic Cuneiform" Unicode character block. 2967 * @since 9 2968 */ 2969 public static final UnicodeBlock EARLY_DYNASTIC_CUNEIFORM = 2970 new UnicodeBlock("EARLY_DYNASTIC_CUNEIFORM", 2971 "EARLY DYNASTIC CUNEIFORM", 2972 "EARLYDYNASTICCUNEIFORM"); 2973 2974 /** 2975 * Constant for the "Anatolian Hieroglyphs" Unicode character block. 2976 * @since 9 2977 */ 2978 public static final UnicodeBlock ANATOLIAN_HIEROGLYPHS = 2979 new UnicodeBlock("ANATOLIAN_HIEROGLYPHS", 2980 "ANATOLIAN HIEROGLYPHS", 2981 "ANATOLIANHIEROGLYPHS"); 2982 2983 /** 2984 * Constant for the "Sutton SignWriting" Unicode character block. 2985 * @since 9 2986 */ 2987 public static final UnicodeBlock SUTTON_SIGNWRITING = 2988 new UnicodeBlock("SUTTON_SIGNWRITING", 2989 "SUTTON SIGNWRITING", 2990 "SUTTONSIGNWRITING"); 2991 2992 /** 2993 * Constant for the "Supplemental Symbols and Pictographs" Unicode 2994 * character block. 2995 * @since 9 2996 */ 2997 public static final UnicodeBlock SUPPLEMENTAL_SYMBOLS_AND_PICTOGRAPHS = 2998 new UnicodeBlock("SUPPLEMENTAL_SYMBOLS_AND_PICTOGRAPHS", 2999 "SUPPLEMENTAL SYMBOLS AND PICTOGRAPHS", 3000 "SUPPLEMENTALSYMBOLSANDPICTOGRAPHS"); 3001 3002 /** 3003 * Constant for the "CJK Unified Ideographs Extension E" Unicode 3004 * character block. 3005 * @since 9 3006 */ 3007 public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E = 3008 new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E", 3009 "CJK UNIFIED IDEOGRAPHS EXTENSION E", 3010 "CJKUNIFIEDIDEOGRAPHSEXTENSIONE"); 3011 3012 /** 3013 * Constant for the "Syriac Supplement" Unicode 3014 * character block. 3015 * @since 11 3016 */ 3017 public static final UnicodeBlock SYRIAC_SUPPLEMENT = 3018 new UnicodeBlock("SYRIAC_SUPPLEMENT", 3019 "SYRIAC SUPPLEMENT", 3020 "SYRIACSUPPLEMENT"); 3021 3022 /** 3023 * Constant for the "Cyrillic Extended-C" Unicode 3024 * character block. 3025 * @since 11 3026 */ 3027 public static final UnicodeBlock CYRILLIC_EXTENDED_C = 3028 new UnicodeBlock("CYRILLIC_EXTENDED_C", 3029 "CYRILLIC EXTENDED-C", 3030 "CYRILLICEXTENDED-C"); 3031 3032 /** 3033 * Constant for the "Osage" Unicode 3034 * character block. 3035 * @since 11 3036 */ 3037 public static final UnicodeBlock OSAGE = 3038 new UnicodeBlock("OSAGE"); 3039 3040 /** 3041 * Constant for the "Newa" Unicode 3042 * character block. 3043 * @since 11 3044 */ 3045 public static final UnicodeBlock NEWA = 3046 new UnicodeBlock("NEWA"); 3047 3048 /** 3049 * Constant for the "Mongolian Supplement" Unicode 3050 * character block. 3051 * @since 11 3052 */ 3053 public static final UnicodeBlock MONGOLIAN_SUPPLEMENT = 3054 new UnicodeBlock("MONGOLIAN_SUPPLEMENT", 3055 "MONGOLIAN SUPPLEMENT", 3056 "MONGOLIANSUPPLEMENT"); 3057 3058 /** 3059 * Constant for the "Marchen" Unicode 3060 * character block. 3061 * @since 11 3062 */ 3063 public static final UnicodeBlock MARCHEN = 3064 new UnicodeBlock("MARCHEN"); 3065 3066 /** 3067 * Constant for the "Ideographic Symbols and Punctuation" Unicode 3068 * character block. 3069 * @since 11 3070 */ 3071 public static final UnicodeBlock IDEOGRAPHIC_SYMBOLS_AND_PUNCTUATION = 3072 new UnicodeBlock("IDEOGRAPHIC_SYMBOLS_AND_PUNCTUATION", 3073 "IDEOGRAPHIC SYMBOLS AND PUNCTUATION", 3074 "IDEOGRAPHICSYMBOLSANDPUNCTUATION"); 3075 3076 /** 3077 * Constant for the "Tangut" Unicode 3078 * character block. 3079 * @since 11 3080 */ 3081 public static final UnicodeBlock TANGUT = 3082 new UnicodeBlock("TANGUT"); 3083 3084 /** 3085 * Constant for the "Tangut Components" Unicode 3086 * character block. 3087 * @since 11 3088 */ 3089 public static final UnicodeBlock TANGUT_COMPONENTS = 3090 new UnicodeBlock("TANGUT_COMPONENTS", 3091 "TANGUT COMPONENTS", 3092 "TANGUTCOMPONENTS"); 3093 3094 /** 3095 * Constant for the "Kana Extended-A" Unicode 3096 * character block. 3097 * @since 11 3098 */ 3099 public static final UnicodeBlock KANA_EXTENDED_A = 3100 new UnicodeBlock("KANA_EXTENDED_A", 3101 "KANA EXTENDED-A", 3102 "KANAEXTENDED-A"); 3103 /** 3104 * Constant for the "Glagolitic Supplement" Unicode 3105 * character block. 3106 * @since 11 3107 */ 3108 public static final UnicodeBlock GLAGOLITIC_SUPPLEMENT = 3109 new UnicodeBlock("GLAGOLITIC_SUPPLEMENT", 3110 "GLAGOLITIC SUPPLEMENT", 3111 "GLAGOLITICSUPPLEMENT"); 3112 /** 3113 * Constant for the "Adlam" Unicode 3114 * character block. 3115 * @since 11 3116 */ 3117 public static final UnicodeBlock ADLAM = 3118 new UnicodeBlock("ADLAM"); 3119 3120 /** 3121 * Constant for the "Masaram Gondi" Unicode 3122 * character block. 3123 * @since 11 3124 */ 3125 public static final UnicodeBlock MASARAM_GONDI = 3126 new UnicodeBlock("MASARAM_GONDI", 3127 "MASARAM GONDI", 3128 "MASARAMGONDI"); 3129 3130 /** 3131 * Constant for the "Zanabazar Square" Unicode 3132 * character block. 3133 * @since 11 3134 */ 3135 public static final UnicodeBlock ZANABAZAR_SQUARE = 3136 new UnicodeBlock("ZANABAZAR_SQUARE", 3137 "ZANABAZAR SQUARE", 3138 "ZANABAZARSQUARE"); 3139 3140 /** 3141 * Constant for the "Nushu" Unicode 3142 * character block. 3143 * @since 11 3144 */ 3145 public static final UnicodeBlock NUSHU = 3146 new UnicodeBlock("NUSHU"); 3147 3148 /** 3149 * Constant for the "Soyombo" Unicode 3150 * character block. 3151 * @since 11 3152 */ 3153 public static final UnicodeBlock SOYOMBO = 3154 new UnicodeBlock("SOYOMBO"); 3155 3156 /** 3157 * Constant for the "Bhaiksuki" Unicode 3158 * character block. 3159 * @since 11 3160 */ 3161 public static final UnicodeBlock BHAIKSUKI = 3162 new UnicodeBlock("BHAIKSUKI"); 3163 3164 /** 3165 * Constant for the "CJK Unified Ideographs Extension F" Unicode 3166 * character block. 3167 * @since 11 3168 */ 3169 public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_F = 3170 new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS_EXTENSION_F", 3171 "CJK UNIFIED IDEOGRAPHS EXTENSION F", 3172 "CJKUNIFIEDIDEOGRAPHSEXTENSIONF"); 3173 /** 3174 * Constant for the "Georgian Extended" Unicode 3175 * character block. 3176 * @since 12 3177 */ 3178 public static final UnicodeBlock GEORGIAN_EXTENDED = 3179 new UnicodeBlock("GEORGIAN_EXTENDED", 3180 "GEORGIAN EXTENDED", 3181 "GEORGIANEXTENDED"); 3182 3183 /** 3184 * Constant for the "Hanifi Rohingya" Unicode 3185 * character block. 3186 * @since 12 3187 */ 3188 public static final UnicodeBlock HANIFI_ROHINGYA = 3189 new UnicodeBlock("HANIFI_ROHINGYA", 3190 "HANIFI ROHINGYA", 3191 "HANIFIROHINGYA"); 3192 3193 /** 3194 * Constant for the "Old Sogdian" Unicode 3195 * character block. 3196 * @since 12 3197 */ 3198 public static final UnicodeBlock OLD_SOGDIAN = 3199 new UnicodeBlock("OLD_SOGDIAN", 3200 "OLD SOGDIAN", 3201 "OLDSOGDIAN"); 3202 3203 /** 3204 * Constant for the "Sogdian" Unicode 3205 * character block. 3206 * @since 12 3207 */ 3208 public static final UnicodeBlock SOGDIAN = 3209 new UnicodeBlock("SOGDIAN"); 3210 3211 /** 3212 * Constant for the "Dogra" Unicode 3213 * character block. 3214 * @since 12 3215 */ 3216 public static final UnicodeBlock DOGRA = 3217 new UnicodeBlock("DOGRA"); 3218 3219 /** 3220 * Constant for the "Gunjala Gondi" Unicode 3221 * character block. 3222 * @since 12 3223 */ 3224 public static final UnicodeBlock GUNJALA_GONDI = 3225 new UnicodeBlock("GUNJALA_GONDI", 3226 "GUNJALA GONDI", 3227 "GUNJALAGONDI"); 3228 3229 /** 3230 * Constant for the "Makasar" Unicode 3231 * character block. 3232 * @since 12 3233 */ 3234 public static final UnicodeBlock MAKASAR = 3235 new UnicodeBlock("MAKASAR"); 3236 3237 /** 3238 * Constant for the "Medefaidrin" Unicode 3239 * character block. 3240 * @since 12 3241 */ 3242 public static final UnicodeBlock MEDEFAIDRIN = 3243 new UnicodeBlock("MEDEFAIDRIN"); 3244 3245 /** 3246 * Constant for the "Mayan Numerals" Unicode 3247 * character block. 3248 * @since 12 3249 */ 3250 public static final UnicodeBlock MAYAN_NUMERALS = 3251 new UnicodeBlock("MAYAN_NUMERALS", 3252 "MAYAN NUMERALS", 3253 "MAYANNUMERALS"); 3254 3255 /** 3256 * Constant for the "Indic Siyaq Numbers" Unicode 3257 * character block. 3258 * @since 12 3259 */ 3260 public static final UnicodeBlock INDIC_SIYAQ_NUMBERS = 3261 new UnicodeBlock("INDIC_SIYAQ_NUMBERS", 3262 "INDIC SIYAQ NUMBERS", 3263 "INDICSIYAQNUMBERS"); 3264 3265 /** 3266 * Constant for the "Chess Symbols" Unicode 3267 * character block. 3268 * @since 12 3269 */ 3270 public static final UnicodeBlock CHESS_SYMBOLS = 3271 new UnicodeBlock("CHESS_SYMBOLS", 3272 "CHESS SYMBOLS", 3273 "CHESSSYMBOLS"); 3274 3275 /** 3276 * Constant for the "Elymaic" Unicode 3277 * character block. 3278 * @since 13 3279 */ 3280 public static final UnicodeBlock ELYMAIC = 3281 new UnicodeBlock("ELYMAIC"); 3282 3283 /** 3284 * Constant for the "Nandinagari" Unicode 3285 * character block. 3286 * @since 13 3287 */ 3288 public static final UnicodeBlock NANDINAGARI = 3289 new UnicodeBlock("NANDINAGARI"); 3290 3291 /** 3292 * Constant for the "Tamil Supplement" Unicode 3293 * character block. 3294 * @since 13 3295 */ 3296 public static final UnicodeBlock TAMIL_SUPPLEMENT = 3297 new UnicodeBlock("TAMIL_SUPPLEMENT", 3298 "TAMIL SUPPLEMENT", 3299 "TAMILSUPPLEMENT"); 3300 3301 /** 3302 * Constant for the "Egyptian Hieroglyph Format Controls" Unicode 3303 * character block. 3304 * @since 13 3305 */ 3306 public static final UnicodeBlock EGYPTIAN_HIEROGLYPH_FORMAT_CONTROLS = 3307 new UnicodeBlock("EGYPTIAN_HIEROGLYPH_FORMAT_CONTROLS", 3308 "EGYPTIAN HIEROGLYPH FORMAT CONTROLS", 3309 "EGYPTIANHIEROGLYPHFORMATCONTROLS"); 3310 3311 /** 3312 * Constant for the "Small Kana Extension" Unicode 3313 * character block. 3314 * @since 13 3315 */ 3316 public static final UnicodeBlock SMALL_KANA_EXTENSION = 3317 new UnicodeBlock("SMALL_KANA_EXTENSION", 3318 "SMALL KANA EXTENSION", 3319 "SMALLKANAEXTENSION"); 3320 3321 /** 3322 * Constant for the "Nyiakeng Puachue Hmong" Unicode 3323 * character block. 3324 * @since 13 3325 */ 3326 public static final UnicodeBlock NYIAKENG_PUACHUE_HMONG = 3327 new UnicodeBlock("NYIAKENG_PUACHUE_HMONG", 3328 "NYIAKENG PUACHUE HMONG", 3329 "NYIAKENGPUACHUEHMONG"); 3330 3331 /** 3332 * Constant for the "Wancho" Unicode 3333 * character block. 3334 * @since 13 3335 */ 3336 public static final UnicodeBlock WANCHO = 3337 new UnicodeBlock("WANCHO"); 3338 3339 /** 3340 * Constant for the "Ottoman Siyaq Numbers" Unicode 3341 * character block. 3342 * @since 13 3343 */ 3344 public static final UnicodeBlock OTTOMAN_SIYAQ_NUMBERS = 3345 new UnicodeBlock("OTTOMAN_SIYAQ_NUMBERS", 3346 "OTTOMAN SIYAQ NUMBERS", 3347 "OTTOMANSIYAQNUMBERS"); 3348 3349 /** 3350 * Constant for the "Symbols and Pictographs Extended-A" Unicode 3351 * character block. 3352 * @since 13 3353 */ 3354 public static final UnicodeBlock SYMBOLS_AND_PICTOGRAPHS_EXTENDED_A = 3355 new UnicodeBlock("SYMBOLS_AND_PICTOGRAPHS_EXTENDED_A", 3356 "SYMBOLS AND PICTOGRAPHS EXTENDED-A", 3357 "SYMBOLSANDPICTOGRAPHSEXTENDED-A"); 3358 3359 /** 3360 * Constant for the "Yezidi" Unicode 3361 * character block. 3362 * @since 15 3363 */ 3364 public static final UnicodeBlock YEZIDI = 3365 new UnicodeBlock("YEZIDI"); 3366 3367 /** 3368 * Constant for the "Chorasmian" Unicode 3369 * character block. 3370 * @since 15 3371 */ 3372 public static final UnicodeBlock CHORASMIAN = 3373 new UnicodeBlock("CHORASMIAN"); 3374 3375 /** 3376 * Constant for the "Dives Akuru" Unicode 3377 * character block. 3378 * @since 15 3379 */ 3380 public static final UnicodeBlock DIVES_AKURU = 3381 new UnicodeBlock("DIVES_AKURU", 3382 "DIVES AKURU", 3383 "DIVESAKURU"); 3384 3385 /** 3386 * Constant for the "Lisu Supplement" Unicode 3387 * character block. 3388 * @since 15 3389 */ 3390 public static final UnicodeBlock LISU_SUPPLEMENT = 3391 new UnicodeBlock("LISU_SUPPLEMENT", 3392 "LISU SUPPLEMENT", 3393 "LISUSUPPLEMENT"); 3394 3395 /** 3396 * Constant for the "Khitan Small Script" Unicode 3397 * character block. 3398 * @since 15 3399 */ 3400 public static final UnicodeBlock KHITAN_SMALL_SCRIPT = 3401 new UnicodeBlock("KHITAN_SMALL_SCRIPT", 3402 "KHITAN SMALL SCRIPT", 3403 "KHITANSMALLSCRIPT"); 3404 3405 /** 3406 * Constant for the "Tangut Supplement" Unicode 3407 * character block. 3408 * @since 15 3409 */ 3410 public static final UnicodeBlock TANGUT_SUPPLEMENT = 3411 new UnicodeBlock("TANGUT_SUPPLEMENT", 3412 "TANGUT SUPPLEMENT", 3413 "TANGUTSUPPLEMENT"); 3414 3415 /** 3416 * Constant for the "Symbols for Legacy Computing" Unicode 3417 * character block. 3418 * @since 15 3419 */ 3420 public static final UnicodeBlock SYMBOLS_FOR_LEGACY_COMPUTING = 3421 new UnicodeBlock("SYMBOLS_FOR_LEGACY_COMPUTING", 3422 "SYMBOLS FOR LEGACY COMPUTING", 3423 "SYMBOLSFORLEGACYCOMPUTING"); 3424 3425 /** 3426 * Constant for the "CJK Unified Ideographs Extension G" Unicode 3427 * character block. 3428 * @since 15 3429 */ 3430 public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_G = 3431 new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS_EXTENSION_G", 3432 "CJK UNIFIED IDEOGRAPHS EXTENSION G", 3433 "CJKUNIFIEDIDEOGRAPHSEXTENSIONG"); 3434 3435 /** 3436 * Constant for the "Arabic Extended-B" Unicode 3437 * character block. 3438 * @since 19 3439 */ 3440 public static final UnicodeBlock ARABIC_EXTENDED_B = 3441 new UnicodeBlock("ARABIC_EXTENDED_B", 3442 "ARABIC EXTENDED-B", 3443 "ARABICEXTENDED-B"); 3444 3445 /** 3446 * Constant for the "Vithkuqi" Unicode 3447 * character block. 3448 * @since 19 3449 */ 3450 public static final UnicodeBlock VITHKUQI = 3451 new UnicodeBlock("VITHKUQI"); 3452 3453 /** 3454 * Constant for the "Latin Extended-F" Unicode 3455 * character block. 3456 * @since 19 3457 */ 3458 public static final UnicodeBlock LATIN_EXTENDED_F = 3459 new UnicodeBlock("LATIN_EXTENDED_F", 3460 "LATIN EXTENDED-F", 3461 "LATINEXTENDED-F"); 3462 3463 /** 3464 * Constant for the "Old Uyghur" Unicode 3465 * character block. 3466 * @since 19 3467 */ 3468 public static final UnicodeBlock OLD_UYGHUR = 3469 new UnicodeBlock("OLD_UYGHUR", 3470 "OLD UYGHUR", 3471 "OLDUYGHUR"); 3472 3473 /** 3474 * Constant for the "Unified Canadian Aboriginal Syllabics Extended-A" Unicode 3475 * character block. 3476 * @since 19 3477 */ 3478 public static final UnicodeBlock UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED_A = 3479 new UnicodeBlock("UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED_A", 3480 "UNIFIED CANADIAN ABORIGINAL SYLLABICS EXTENDED-A", 3481 "UNIFIEDCANADIANABORIGINALSYLLABICSEXTENDED-A"); 3482 3483 /** 3484 * Constant for the "Cypro-Minoan" Unicode 3485 * character block. 3486 * @since 19 3487 */ 3488 public static final UnicodeBlock CYPRO_MINOAN = 3489 new UnicodeBlock("CYPRO_MINOAN", 3490 "CYPRO-MINOAN", 3491 "CYPRO-MINOAN"); 3492 3493 /** 3494 * Constant for the "Tangsa" Unicode 3495 * character block. 3496 * @since 19 3497 */ 3498 public static final UnicodeBlock TANGSA = 3499 new UnicodeBlock("TANGSA"); 3500 3501 /** 3502 * Constant for the "Kana Extended-B" Unicode 3503 * character block. 3504 * @since 19 3505 */ 3506 public static final UnicodeBlock KANA_EXTENDED_B = 3507 new UnicodeBlock("KANA_EXTENDED_B", 3508 "KANA EXTENDED-B", 3509 "KANAEXTENDED-B"); 3510 3511 /** 3512 * Constant for the "Znamenny Musical Notation" Unicode 3513 * character block. 3514 * @since 19 3515 */ 3516 public static final UnicodeBlock ZNAMENNY_MUSICAL_NOTATION = 3517 new UnicodeBlock("ZNAMENNY_MUSICAL_NOTATION", 3518 "ZNAMENNY MUSICAL NOTATION", 3519 "ZNAMENNYMUSICALNOTATION"); 3520 3521 /** 3522 * Constant for the "Latin Extended-G" Unicode 3523 * character block. 3524 * @since 19 3525 */ 3526 public static final UnicodeBlock LATIN_EXTENDED_G = 3527 new UnicodeBlock("LATIN_EXTENDED_G", 3528 "LATIN EXTENDED-G", 3529 "LATINEXTENDED-G"); 3530 3531 /** 3532 * Constant for the "Toto" Unicode 3533 * character block. 3534 * @since 19 3535 */ 3536 public static final UnicodeBlock TOTO = 3537 new UnicodeBlock("TOTO"); 3538 3539 /** 3540 * Constant for the "Ethiopic Extended-B" Unicode 3541 * character block. 3542 * @since 19 3543 */ 3544 public static final UnicodeBlock ETHIOPIC_EXTENDED_B = 3545 new UnicodeBlock("ETHIOPIC_EXTENDED_B", 3546 "ETHIOPIC EXTENDED-B", 3547 "ETHIOPICEXTENDED-B"); 3548 3549 /** 3550 * Constant for the "Arabic Extended-C" Unicode 3551 * character block. 3552 * @since 20 3553 */ 3554 public static final UnicodeBlock ARABIC_EXTENDED_C = 3555 new UnicodeBlock("ARABIC_EXTENDED_C", 3556 "ARABIC EXTENDED-C", 3557 "ARABICEXTENDED-C"); 3558 3559 /** 3560 * Constant for the "Devanagari Extended-A" Unicode 3561 * character block. 3562 * @since 20 3563 */ 3564 public static final UnicodeBlock DEVANAGARI_EXTENDED_A = 3565 new UnicodeBlock("DEVANAGARI_EXTENDED_A", 3566 "DEVANAGARI EXTENDED-A", 3567 "DEVANAGARIEXTENDED-A"); 3568 3569 /** 3570 * Constant for the "Kawi" Unicode 3571 * character block. 3572 * @since 20 3573 */ 3574 public static final UnicodeBlock KAWI = 3575 new UnicodeBlock("KAWI"); 3576 3577 /** 3578 * Constant for the "Kaktovik Numerals" Unicode 3579 * character block. 3580 * @since 20 3581 */ 3582 public static final UnicodeBlock KAKTOVIK_NUMERALS = 3583 new UnicodeBlock("KAKTOVIK_NUMERALS", 3584 "KAKTOVIK NUMERALS", 3585 "KAKTOVIKNUMERALS"); 3586 3587 /** 3588 * Constant for the "Cyrillic Extended-D" Unicode 3589 * character block. 3590 * @since 20 3591 */ 3592 public static final UnicodeBlock CYRILLIC_EXTENDED_D = 3593 new UnicodeBlock("CYRILLIC_EXTENDED_D", 3594 "CYRILLIC EXTENDED-D", 3595 "CYRILLICEXTENDED-D"); 3596 3597 /** 3598 * Constant for the "Nag Mundari" Unicode 3599 * character block. 3600 * @since 20 3601 */ 3602 public static final UnicodeBlock NAG_MUNDARI = 3603 new UnicodeBlock("NAG_MUNDARI", 3604 "NAG MUNDARI", 3605 "NAGMUNDARI"); 3606 3607 /** 3608 * Constant for the "CJK Unified Ideographs Extension H" Unicode 3609 * character block. 3610 * @since 20 3611 */ 3612 public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_H = 3613 new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS_EXTENSION_H", 3614 "CJK UNIFIED IDEOGRAPHS EXTENSION H", 3615 "CJKUNIFIEDIDEOGRAPHSEXTENSIONH"); 3616 3617 /** 3618 * Constant for the "CJK Unified Ideographs Extension I" Unicode 3619 * character block. 3620 * @since 22 3621 */ 3622 public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I = 3623 new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I", 3624 "CJK UNIFIED IDEOGRAPHS EXTENSION I", 3625 "CJKUNIFIEDIDEOGRAPHSEXTENSIONI"); 3626 3627 /** 3628 * Constant for the "Todhri" Unicode 3629 * character block. 3630 * @since 24 3631 */ 3632 public static final UnicodeBlock TODHRI = 3633 new UnicodeBlock("TODHRI"); 3634 3635 /** 3636 * Constant for the "Garay" Unicode 3637 * character block. 3638 * @since 24 3639 */ 3640 public static final UnicodeBlock GARAY = 3641 new UnicodeBlock("GARAY"); 3642 3643 /** 3644 * Constant for the "Tulu-Tigalari" Unicode 3645 * character block. 3646 * @since 24 3647 */ 3648 public static final UnicodeBlock TULU_TIGALARI = 3649 new UnicodeBlock("TULU_TIGALARI", 3650 "TULU-TIGALARI"); 3651 3652 /** 3653 * Constant for the "Myanmar Extended-C" Unicode 3654 * character block. 3655 * @since 24 3656 */ 3657 public static final UnicodeBlock MYANMAR_EXTENDED_C = 3658 new UnicodeBlock("MYANMAR_EXTENDED_C", 3659 "MYANMAR EXTENDED-C", 3660 "MYANMAREXTENDED-C"); 3661 3662 /** 3663 * Constant for the "Sunuwar" Unicode 3664 * character block. 3665 * @since 24 3666 */ 3667 public static final UnicodeBlock SUNUWAR = 3668 new UnicodeBlock("SUNUWAR"); 3669 3670 /** 3671 * Constant for the "Egyptian Hieroglyphs Extended-A" Unicode 3672 * character block. 3673 * @since 24 3674 */ 3675 public static final UnicodeBlock EGYPTIAN_HIEROGLYPHS_EXTENDED_A = 3676 new UnicodeBlock("EGYPTIAN_HIEROGLYPHS_EXTENDED_A", 3677 "EGYPTIAN HIEROGLYPHS EXTENDED-A", 3678 "EGYPTIANHIEROGLYPHSEXTENDED-A"); 3679 3680 /** 3681 * Constant for the "Gurung Khema" Unicode 3682 * character block. 3683 * @since 24 3684 */ 3685 public static final UnicodeBlock GURUNG_KHEMA = 3686 new UnicodeBlock("GURUNG_KHEMA", 3687 "GURUNG KHEMA", 3688 "GURUNGKHEMA"); 3689 3690 /** 3691 * Constant for the "Kirat Rai" Unicode 3692 * character block. 3693 * @since 24 3694 */ 3695 public static final UnicodeBlock KIRAT_RAI = 3696 new UnicodeBlock("KIRAT_RAI", 3697 "KIRAT RAI", 3698 "KIRATRAI"); 3699 3700 /** 3701 * Constant for the "Symbols for Legacy Computing Supplement" Unicode 3702 * character block. 3703 * @since 24 3704 */ 3705 public static final UnicodeBlock SYMBOLS_FOR_LEGACY_COMPUTING_SUPPLEMENT = 3706 new UnicodeBlock("SYMBOLS_FOR_LEGACY_COMPUTING_SUPPLEMENT", 3707 "SYMBOLS FOR LEGACY COMPUTING SUPPLEMENT", 3708 "SYMBOLSFORLEGACYCOMPUTINGSUPPLEMENT"); 3709 3710 /** 3711 * Constant for the "Ol Onal" Unicode 3712 * character block. 3713 * @since 24 3714 */ 3715 public static final UnicodeBlock OL_ONAL = 3716 new UnicodeBlock("OL_ONAL", 3717 "OL ONAL", 3718 "OLONAL"); 3719 3720 private static final int[] blockStarts = { 3721 0x0000, // 0000..007F; Basic Latin 3722 0x0080, // 0080..00FF; Latin-1 Supplement 3723 0x0100, // 0100..017F; Latin Extended-A 3724 0x0180, // 0180..024F; Latin Extended-B 3725 0x0250, // 0250..02AF; IPA Extensions 3726 0x02B0, // 02B0..02FF; Spacing Modifier Letters 3727 0x0300, // 0300..036F; Combining Diacritical Marks 3728 0x0370, // 0370..03FF; Greek and Coptic 3729 0x0400, // 0400..04FF; Cyrillic 3730 0x0500, // 0500..052F; Cyrillic Supplement 3731 0x0530, // 0530..058F; Armenian 3732 0x0590, // 0590..05FF; Hebrew 3733 0x0600, // 0600..06FF; Arabic 3734 0x0700, // 0700..074F; Syriac 3735 0x0750, // 0750..077F; Arabic Supplement 3736 0x0780, // 0780..07BF; Thaana 3737 0x07C0, // 07C0..07FF; NKo 3738 0x0800, // 0800..083F; Samaritan 3739 0x0840, // 0840..085F; Mandaic 3740 0x0860, // 0860..086F; Syriac Supplement 3741 0x0870, // 0870..089F; Arabic Extended-B 3742 0x08A0, // 08A0..08FF; Arabic Extended-A 3743 0x0900, // 0900..097F; Devanagari 3744 0x0980, // 0980..09FF; Bengali 3745 0x0A00, // 0A00..0A7F; Gurmukhi 3746 0x0A80, // 0A80..0AFF; Gujarati 3747 0x0B00, // 0B00..0B7F; Oriya 3748 0x0B80, // 0B80..0BFF; Tamil 3749 0x0C00, // 0C00..0C7F; Telugu 3750 0x0C80, // 0C80..0CFF; Kannada 3751 0x0D00, // 0D00..0D7F; Malayalam 3752 0x0D80, // 0D80..0DFF; Sinhala 3753 0x0E00, // 0E00..0E7F; Thai 3754 0x0E80, // 0E80..0EFF; Lao 3755 0x0F00, // 0F00..0FFF; Tibetan 3756 0x1000, // 1000..109F; Myanmar 3757 0x10A0, // 10A0..10FF; Georgian 3758 0x1100, // 1100..11FF; Hangul Jamo 3759 0x1200, // 1200..137F; Ethiopic 3760 0x1380, // 1380..139F; Ethiopic Supplement 3761 0x13A0, // 13A0..13FF; Cherokee 3762 0x1400, // 1400..167F; Unified Canadian Aboriginal Syllabics 3763 0x1680, // 1680..169F; Ogham 3764 0x16A0, // 16A0..16FF; Runic 3765 0x1700, // 1700..171F; Tagalog 3766 0x1720, // 1720..173F; Hanunoo 3767 0x1740, // 1740..175F; Buhid 3768 0x1760, // 1760..177F; Tagbanwa 3769 0x1780, // 1780..17FF; Khmer 3770 0x1800, // 1800..18AF; Mongolian 3771 0x18B0, // 18B0..18FF; Unified Canadian Aboriginal Syllabics Extended 3772 0x1900, // 1900..194F; Limbu 3773 0x1950, // 1950..197F; Tai Le 3774 0x1980, // 1980..19DF; New Tai Lue 3775 0x19E0, // 19E0..19FF; Khmer Symbols 3776 0x1A00, // 1A00..1A1F; Buginese 3777 0x1A20, // 1A20..1AAF; Tai Tham 3778 0x1AB0, // 1AB0..1AFF; Combining Diacritical Marks Extended 3779 0x1B00, // 1B00..1B7F; Balinese 3780 0x1B80, // 1B80..1BBF; Sundanese 3781 0x1BC0, // 1BC0..1BFF; Batak 3782 0x1C00, // 1C00..1C4F; Lepcha 3783 0x1C50, // 1C50..1C7F; Ol Chiki 3784 0x1C80, // 1C80..1C8F; Cyrillic Extended-C 3785 0x1C90, // 1C90..1CBF; Georgian Extended 3786 0x1CC0, // 1CC0..1CCF; Sundanese Supplement 3787 0x1CD0, // 1CD0..1CFF; Vedic Extensions 3788 0x1D00, // 1D00..1D7F; Phonetic Extensions 3789 0x1D80, // 1D80..1DBF; Phonetic Extensions Supplement 3790 0x1DC0, // 1DC0..1DFF; Combining Diacritical Marks Supplement 3791 0x1E00, // 1E00..1EFF; Latin Extended Additional 3792 0x1F00, // 1F00..1FFF; Greek Extended 3793 0x2000, // 2000..206F; General Punctuation 3794 0x2070, // 2070..209F; Superscripts and Subscripts 3795 0x20A0, // 20A0..20CF; Currency Symbols 3796 0x20D0, // 20D0..20FF; Combining Diacritical Marks for Symbols 3797 0x2100, // 2100..214F; Letterlike Symbols 3798 0x2150, // 2150..218F; Number Forms 3799 0x2190, // 2190..21FF; Arrows 3800 0x2200, // 2200..22FF; Mathematical Operators 3801 0x2300, // 2300..23FF; Miscellaneous Technical 3802 0x2400, // 2400..243F; Control Pictures 3803 0x2440, // 2440..245F; Optical Character Recognition 3804 0x2460, // 2460..24FF; Enclosed Alphanumerics 3805 0x2500, // 2500..257F; Box Drawing 3806 0x2580, // 2580..259F; Block Elements 3807 0x25A0, // 25A0..25FF; Geometric Shapes 3808 0x2600, // 2600..26FF; Miscellaneous Symbols 3809 0x2700, // 2700..27BF; Dingbats 3810 0x27C0, // 27C0..27EF; Miscellaneous Mathematical Symbols-A 3811 0x27F0, // 27F0..27FF; Supplemental Arrows-A 3812 0x2800, // 2800..28FF; Braille Patterns 3813 0x2900, // 2900..297F; Supplemental Arrows-B 3814 0x2980, // 2980..29FF; Miscellaneous Mathematical Symbols-B 3815 0x2A00, // 2A00..2AFF; Supplemental Mathematical Operators 3816 0x2B00, // 2B00..2BFF; Miscellaneous Symbols and Arrows 3817 0x2C00, // 2C00..2C5F; Glagolitic 3818 0x2C60, // 2C60..2C7F; Latin Extended-C 3819 0x2C80, // 2C80..2CFF; Coptic 3820 0x2D00, // 2D00..2D2F; Georgian Supplement 3821 0x2D30, // 2D30..2D7F; Tifinagh 3822 0x2D80, // 2D80..2DDF; Ethiopic Extended 3823 0x2DE0, // 2DE0..2DFF; Cyrillic Extended-A 3824 0x2E00, // 2E00..2E7F; Supplemental Punctuation 3825 0x2E80, // 2E80..2EFF; CJK Radicals Supplement 3826 0x2F00, // 2F00..2FDF; Kangxi Radicals 3827 0x2FE0, // unassigned 3828 0x2FF0, // 2FF0..2FFF; Ideographic Description Characters 3829 0x3000, // 3000..303F; CJK Symbols and Punctuation 3830 0x3040, // 3040..309F; Hiragana 3831 0x30A0, // 30A0..30FF; Katakana 3832 0x3100, // 3100..312F; Bopomofo 3833 0x3130, // 3130..318F; Hangul Compatibility Jamo 3834 0x3190, // 3190..319F; Kanbun 3835 0x31A0, // 31A0..31BF; Bopomofo Extended 3836 0x31C0, // 31C0..31EF; CJK Strokes 3837 0x31F0, // 31F0..31FF; Katakana Phonetic Extensions 3838 0x3200, // 3200..32FF; Enclosed CJK Letters and Months 3839 0x3300, // 3300..33FF; CJK Compatibility 3840 0x3400, // 3400..4DBF; CJK Unified Ideographs Extension A 3841 0x4DC0, // 4DC0..4DFF; Yijing Hexagram Symbols 3842 0x4E00, // 4E00..9FFF; CJK Unified Ideographs 3843 0xA000, // A000..A48F; Yi Syllables 3844 0xA490, // A490..A4CF; Yi Radicals 3845 0xA4D0, // A4D0..A4FF; Lisu 3846 0xA500, // A500..A63F; Vai 3847 0xA640, // A640..A69F; Cyrillic Extended-B 3848 0xA6A0, // A6A0..A6FF; Bamum 3849 0xA700, // A700..A71F; Modifier Tone Letters 3850 0xA720, // A720..A7FF; Latin Extended-D 3851 0xA800, // A800..A82F; Syloti Nagri 3852 0xA830, // A830..A83F; Common Indic Number Forms 3853 0xA840, // A840..A87F; Phags-pa 3854 0xA880, // A880..A8DF; Saurashtra 3855 0xA8E0, // A8E0..A8FF; Devanagari Extended 3856 0xA900, // A900..A92F; Kayah Li 3857 0xA930, // A930..A95F; Rejang 3858 0xA960, // A960..A97F; Hangul Jamo Extended-A 3859 0xA980, // A980..A9DF; Javanese 3860 0xA9E0, // A9E0..A9FF; Myanmar Extended-B 3861 0xAA00, // AA00..AA5F; Cham 3862 0xAA60, // AA60..AA7F; Myanmar Extended-A 3863 0xAA80, // AA80..AADF; Tai Viet 3864 0xAAE0, // AAE0..AAFF; Meetei Mayek Extensions 3865 0xAB00, // AB00..AB2F; Ethiopic Extended-A 3866 0xAB30, // AB30..AB6F; Latin Extended-E 3867 0xAB70, // AB70..ABBF; Cherokee Supplement 3868 0xABC0, // ABC0..ABFF; Meetei Mayek 3869 0xAC00, // AC00..D7AF; Hangul Syllables 3870 0xD7B0, // D7B0..D7FF; Hangul Jamo Extended-B 3871 0xD800, // D800..DB7F; High Surrogates 3872 0xDB80, // DB80..DBFF; High Private Use Surrogates 3873 0xDC00, // DC00..DFFF; Low Surrogates 3874 0xE000, // E000..F8FF; Private Use Area 3875 0xF900, // F900..FAFF; CJK Compatibility Ideographs 3876 0xFB00, // FB00..FB4F; Alphabetic Presentation Forms 3877 0xFB50, // FB50..FDFF; Arabic Presentation Forms-A 3878 0xFE00, // FE00..FE0F; Variation Selectors 3879 0xFE10, // FE10..FE1F; Vertical Forms 3880 0xFE20, // FE20..FE2F; Combining Half Marks 3881 0xFE30, // FE30..FE4F; CJK Compatibility Forms 3882 0xFE50, // FE50..FE6F; Small Form Variants 3883 0xFE70, // FE70..FEFF; Arabic Presentation Forms-B 3884 0xFF00, // FF00..FFEF; Halfwidth and Fullwidth Forms 3885 0xFFF0, // FFF0..FFFF; Specials 3886 0x10000, // 10000..1007F; Linear B Syllabary 3887 0x10080, // 10080..100FF; Linear B Ideograms 3888 0x10100, // 10100..1013F; Aegean Numbers 3889 0x10140, // 10140..1018F; Ancient Greek Numbers 3890 0x10190, // 10190..101CF; Ancient Symbols 3891 0x101D0, // 101D0..101FF; Phaistos Disc 3892 0x10200, // unassigned 3893 0x10280, // 10280..1029F; Lycian 3894 0x102A0, // 102A0..102DF; Carian 3895 0x102E0, // 102E0..102FF; Coptic Epact Numbers 3896 0x10300, // 10300..1032F; Old Italic 3897 0x10330, // 10330..1034F; Gothic 3898 0x10350, // 10350..1037F; Old Permic 3899 0x10380, // 10380..1039F; Ugaritic 3900 0x103A0, // 103A0..103DF; Old Persian 3901 0x103E0, // unassigned 3902 0x10400, // 10400..1044F; Deseret 3903 0x10450, // 10450..1047F; Shavian 3904 0x10480, // 10480..104AF; Osmanya 3905 0x104B0, // 104B0..104FF; Osage 3906 0x10500, // 10500..1052F; Elbasan 3907 0x10530, // 10530..1056F; Caucasian Albanian 3908 0x10570, // 10570..105BF; Vithkuqi 3909 0x105C0, // 105C0..105FF; Todhri 3910 0x10600, // 10600..1077F; Linear A 3911 0x10780, // 10780..107BF; Latin Extended-F 3912 0x107C0, // unassigned 3913 0x10800, // 10800..1083F; Cypriot Syllabary 3914 0x10840, // 10840..1085F; Imperial Aramaic 3915 0x10860, // 10860..1087F; Palmyrene 3916 0x10880, // 10880..108AF; Nabataean 3917 0x108B0, // unassigned 3918 0x108E0, // 108E0..108FF; Hatran 3919 0x10900, // 10900..1091F; Phoenician 3920 0x10920, // 10920..1093F; Lydian 3921 0x10940, // unassigned 3922 0x10980, // 10980..1099F; Meroitic Hieroglyphs 3923 0x109A0, // 109A0..109FF; Meroitic Cursive 3924 0x10A00, // 10A00..10A5F; Kharoshthi 3925 0x10A60, // 10A60..10A7F; Old South Arabian 3926 0x10A80, // 10A80..10A9F; Old North Arabian 3927 0x10AA0, // unassigned 3928 0x10AC0, // 10AC0..10AFF; Manichaean 3929 0x10B00, // 10B00..10B3F; Avestan 3930 0x10B40, // 10B40..10B5F; Inscriptional Parthian 3931 0x10B60, // 10B60..10B7F; Inscriptional Pahlavi 3932 0x10B80, // 10B80..10BAF; Psalter Pahlavi 3933 0x10BB0, // unassigned 3934 0x10C00, // 10C00..10C4F; Old Turkic 3935 0x10C50, // unassigned 3936 0x10C80, // 10C80..10CFF; Old Hungarian 3937 0x10D00, // 10D00..10D3F; Hanifi Rohingya 3938 0x10D40, // 10D40..10D8F; Garay 3939 0x10D90, // unassigned 3940 0x10E60, // 10E60..10E7F; Rumi Numeral Symbols 3941 0x10E80, // 10E80..10EBF; Yezidi 3942 0x10EC0, // 10EC0..10EFF; Arabic Extended-C 3943 0x10F00, // 10F00..10F2F; Old Sogdian 3944 0x10F30, // 10F30..10F6F; Sogdian 3945 0x10F70, // 10F70..10FAF; Old Uyghur 3946 0x10FB0, // 10FB0..10FDF; Chorasmian 3947 0x10FE0, // 10FE0..10FFF; Elymaic 3948 0x11000, // 11000..1107F; Brahmi 3949 0x11080, // 11080..110CF; Kaithi 3950 0x110D0, // 110D0..110FF; Sora Sompeng 3951 0x11100, // 11100..1114F; Chakma 3952 0x11150, // 11150..1117F; Mahajani 3953 0x11180, // 11180..111DF; Sharada 3954 0x111E0, // 111E0..111FF; Sinhala Archaic Numbers 3955 0x11200, // 11200..1124F; Khojki 3956 0x11250, // unassigned 3957 0x11280, // 11280..112AF; Multani 3958 0x112B0, // 112B0..112FF; Khudawadi 3959 0x11300, // 11300..1137F; Grantha 3960 0x11380, // 11380..113FF; Tulu-Tigalari 3961 0x11400, // 11400..1147F; Newa 3962 0x11480, // 11480..114DF; Tirhuta 3963 0x114E0, // unassigned 3964 0x11580, // 11580..115FF; Siddham 3965 0x11600, // 11600..1165F; Modi 3966 0x11660, // 11660..1167F; Mongolian Supplement 3967 0x11680, // 11680..116CF; Takri 3968 0x116D0, // 116D0..116FF; Myanmar Extended-C 3969 0x11700, // 11700..1174F; Ahom 3970 0x11750, // unassigned 3971 0x11800, // 11800..1184F; Dogra 3972 0x11850, // unassigned 3973 0x118A0, // 118A0..118FF; Warang Citi 3974 0x11900, // 11900..1195F; Dives Akuru 3975 0x11960, // unassigned 3976 0x119A0, // 119A0..119FF; Nandinagari 3977 0x11A00, // 11A00..11A4F; Zanabazar Square 3978 0x11A50, // 11A50..11AAF; Soyombo 3979 0x11AB0, // 11AB0..11ABF; Unified Canadian Aboriginal Syllabics Extended-A 3980 0x11AC0, // 11AC0..11AFF; Pau Cin Hau 3981 0x11B00, // 11B00..11B5F; Devanagari Extended-A 3982 0x11B60, // unassigned 3983 0x11BC0, // 11BC0..11BFF; Sunuwar 3984 0x11C00, // 11C00..11C6F; Bhaiksuki 3985 0x11C70, // 11C70..11CBF; Marchen 3986 0x11CC0, // unassigned 3987 0x11D00, // 11D00..11D5F; Masaram Gondi 3988 0x11D60, // 11D60..11DAF; Gunjala Gondi 3989 0x11DB0, // unassigned 3990 0x11EE0, // 11EE0..11EFF; Makasar 3991 0x11F00, // 11F00..11F5F; Kawi 3992 0x11F60, // unassigned 3993 0x11FB0, // 11FB0..11FBF; Lisu Supplement 3994 0x11FC0, // 11FC0..11FFF; Tamil Supplement 3995 0x12000, // 12000..123FF; Cuneiform 3996 0x12400, // 12400..1247F; Cuneiform Numbers and Punctuation 3997 0x12480, // 12480..1254F; Early Dynastic Cuneiform 3998 0x12550, // unassigned 3999 0x12F90, // 12F90..12FFF; Cypro-Minoan 4000 0x13000, // 13000..1342F; Egyptian Hieroglyphs 4001 0x13430, // 13430..1345F; Egyptian Hieroglyph Format Controls 4002 0x13460, // 13460..143FF; Egyptian Hieroglyphs Extended-A 4003 0x14400, // 14400..1467F; Anatolian Hieroglyphs 4004 0x14680, // unassigned 4005 0x16100, // 16100..1613F; Gurung Khema 4006 0x16140, // unassigned 4007 0x16800, // 16800..16A3F; Bamum Supplement 4008 0x16A40, // 16A40..16A6F; Mro 4009 0x16A70, // 16A70..16ACF; Tangsa 4010 0x16AD0, // 16AD0..16AFF; Bassa Vah 4011 0x16B00, // 16B00..16B8F; Pahawh Hmong 4012 0x16B90, // unassigned 4013 0x16D40, // 16D40..16D7F; Kirat Rai 4014 0x16D80, // unassigned 4015 0x16E40, // 16E40..16E9F; Medefaidrin 4016 0x16EA0, // unassigned 4017 0x16F00, // 16F00..16F9F; Miao 4018 0x16FA0, // unassigned 4019 0x16FE0, // 16FE0..16FFF; Ideographic Symbols and Punctuation 4020 0x17000, // 17000..187FF; Tangut 4021 0x18800, // 18800..18AFF; Tangut Components 4022 0x18B00, // 18B00..18CFF; Khitan Small Script 4023 0x18D00, // 18D00..18D7F; Tangut Supplement 4024 0x18D80, // unassigned 4025 0x1AFF0, // 1AFF0..1AFFF; Kana Extended-B 4026 0x1B000, // 1B000..1B0FF; Kana Supplement 4027 0x1B100, // 1B100..1B12F; Kana Extended-A 4028 0x1B130, // 1B130..1B16F; Small Kana Extension 4029 0x1B170, // 1B170..1B2FF; Nushu 4030 0x1B300, // unassigned 4031 0x1BC00, // 1BC00..1BC9F; Duployan 4032 0x1BCA0, // 1BCA0..1BCAF; Shorthand Format Controls 4033 0x1BCB0, // unassigned 4034 0x1CC00, // 1CC00..1CEBF; Symbols for Legacy Computing Supplement 4035 0x1CEC0, // unassigned 4036 0x1CF00, // 1CF00..1CFCF; Znamenny Musical Notation 4037 0x1CFD0, // unassigned 4038 0x1D000, // 1D000..1D0FF; Byzantine Musical Symbols 4039 0x1D100, // 1D100..1D1FF; Musical Symbols 4040 0x1D200, // 1D200..1D24F; Ancient Greek Musical Notation 4041 0x1D250, // unassigned 4042 0x1D2C0, // 1D2C0..1D2DF; Kaktovik Numerals 4043 0x1D2E0, // 1D2E0..1D2FF; Mayan Numerals 4044 0x1D300, // 1D300..1D35F; Tai Xuan Jing Symbols 4045 0x1D360, // 1D360..1D37F; Counting Rod Numerals 4046 0x1D380, // unassigned 4047 0x1D400, // 1D400..1D7FF; Mathematical Alphanumeric Symbols 4048 0x1D800, // 1D800..1DAAF; Sutton SignWriting 4049 0x1DAB0, // unassigned 4050 0x1DF00, // 1DF00..1DFFF; Latin Extended-G 4051 0x1E000, // 1E000..1E02F; Glagolitic Supplement 4052 0x1E030, // 1E030..1E08F; Cyrillic Extended-D 4053 0x1E090, // unassigned 4054 0x1E100, // 1E100..1E14F; Nyiakeng Puachue Hmong 4055 0x1E150, // unassigned 4056 0x1E290, // 1E290..1E2BF; Toto 4057 0x1E2C0, // 1E2C0..1E2FF; Wancho 4058 0x1E300, // unassigned 4059 0x1E4D0, // 1E4D0..1E4FF; Nag Mundari 4060 0x1E500, // unassigned 4061 0x1E5D0, // 1E5D0..1E5FF; Ol Onal 4062 0x1E600, // unassigned 4063 0x1E7E0, // 1E7E0..1E7FF; Ethiopic Extended-B 4064 0x1E800, // 1E800..1E8DF; Mende Kikakui 4065 0x1E8E0, // unassigned 4066 0x1E900, // 1E900..1E95F; Adlam 4067 0x1E960, // unassigned 4068 0x1EC70, // 1EC70..1ECBF; Indic Siyaq Numbers 4069 0x1ECC0, // unassigned 4070 0x1ED00, // 1ED00..1ED4F; Ottoman Siyaq Numbers 4071 0x1ED50, // unassigned 4072 0x1EE00, // 1EE00..1EEFF; Arabic Mathematical Alphabetic Symbols 4073 0x1EF00, // unassigned 4074 0x1F000, // 1F000..1F02F; Mahjong Tiles 4075 0x1F030, // 1F030..1F09F; Domino Tiles 4076 0x1F0A0, // 1F0A0..1F0FF; Playing Cards 4077 0x1F100, // 1F100..1F1FF; Enclosed Alphanumeric Supplement 4078 0x1F200, // 1F200..1F2FF; Enclosed Ideographic Supplement 4079 0x1F300, // 1F300..1F5FF; Miscellaneous Symbols and Pictographs 4080 0x1F600, // 1F600..1F64F; Emoticons 4081 0x1F650, // 1F650..1F67F; Ornamental Dingbats 4082 0x1F680, // 1F680..1F6FF; Transport and Map Symbols 4083 0x1F700, // 1F700..1F77F; Alchemical Symbols 4084 0x1F780, // 1F780..1F7FF; Geometric Shapes Extended 4085 0x1F800, // 1F800..1F8FF; Supplemental Arrows-C 4086 0x1F900, // 1F900..1F9FF; Supplemental Symbols and Pictographs 4087 0x1FA00, // 1FA00..1FA6F; Chess Symbols 4088 0x1FA70, // 1FA70..1FAFF; Symbols and Pictographs Extended-A 4089 0x1FB00, // 1FB00..1FBFF; Symbols for Legacy Computing 4090 0x1FC00, // unassigned 4091 0x20000, // 20000..2A6DF; CJK Unified Ideographs Extension B 4092 0x2A6E0, // unassigned 4093 0x2A700, // 2A700..2B73F; CJK Unified Ideographs Extension C 4094 0x2B740, // 2B740..2B81F; CJK Unified Ideographs Extension D 4095 0x2B820, // 2B820..2CEAF; CJK Unified Ideographs Extension E 4096 0x2CEB0, // 2CEB0..2EBEF; CJK Unified Ideographs Extension F 4097 0x2EBF0, // 2EBF0..2EE5F; CJK Unified Ideographs Extension I 4098 0x2EE60, // unassigned 4099 0x2F800, // 2F800..2FA1F; CJK Compatibility Ideographs Supplement 4100 0x2FA20, // unassigned 4101 0x30000, // 30000..3134F; CJK Unified Ideographs Extension G 4102 0x31350, // 31350..323AF; CJK Unified Ideographs Extension H 4103 0x323B0, // unassigned 4104 0xE0000, // E0000..E007F; Tags 4105 0xE0080, // unassigned 4106 0xE0100, // E0100..E01EF; Variation Selectors Supplement 4107 0xE01F0, // unassigned 4108 0xF0000, // F0000..FFFFF; Supplementary Private Use Area-A 4109 0x100000, // 100000..10FFFF; Supplementary Private Use Area-B 4110 }; 4111 4112 private static final UnicodeBlock[] blocks = { 4113 BASIC_LATIN, 4114 LATIN_1_SUPPLEMENT, 4115 LATIN_EXTENDED_A, 4116 LATIN_EXTENDED_B, 4117 IPA_EXTENSIONS, 4118 SPACING_MODIFIER_LETTERS, 4119 COMBINING_DIACRITICAL_MARKS, 4120 GREEK, 4121 CYRILLIC, 4122 CYRILLIC_SUPPLEMENTARY, 4123 ARMENIAN, 4124 HEBREW, 4125 ARABIC, 4126 SYRIAC, 4127 ARABIC_SUPPLEMENT, 4128 THAANA, 4129 NKO, 4130 SAMARITAN, 4131 MANDAIC, 4132 SYRIAC_SUPPLEMENT, 4133 ARABIC_EXTENDED_B, 4134 ARABIC_EXTENDED_A, 4135 DEVANAGARI, 4136 BENGALI, 4137 GURMUKHI, 4138 GUJARATI, 4139 ORIYA, 4140 TAMIL, 4141 TELUGU, 4142 KANNADA, 4143 MALAYALAM, 4144 SINHALA, 4145 THAI, 4146 LAO, 4147 TIBETAN, 4148 MYANMAR, 4149 GEORGIAN, 4150 HANGUL_JAMO, 4151 ETHIOPIC, 4152 ETHIOPIC_SUPPLEMENT, 4153 CHEROKEE, 4154 UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS, 4155 OGHAM, 4156 RUNIC, 4157 TAGALOG, 4158 HANUNOO, 4159 BUHID, 4160 TAGBANWA, 4161 KHMER, 4162 MONGOLIAN, 4163 UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED, 4164 LIMBU, 4165 TAI_LE, 4166 NEW_TAI_LUE, 4167 KHMER_SYMBOLS, 4168 BUGINESE, 4169 TAI_THAM, 4170 COMBINING_DIACRITICAL_MARKS_EXTENDED, 4171 BALINESE, 4172 SUNDANESE, 4173 BATAK, 4174 LEPCHA, 4175 OL_CHIKI, 4176 CYRILLIC_EXTENDED_C, 4177 GEORGIAN_EXTENDED, 4178 SUNDANESE_SUPPLEMENT, 4179 VEDIC_EXTENSIONS, 4180 PHONETIC_EXTENSIONS, 4181 PHONETIC_EXTENSIONS_SUPPLEMENT, 4182 COMBINING_DIACRITICAL_MARKS_SUPPLEMENT, 4183 LATIN_EXTENDED_ADDITIONAL, 4184 GREEK_EXTENDED, 4185 GENERAL_PUNCTUATION, 4186 SUPERSCRIPTS_AND_SUBSCRIPTS, 4187 CURRENCY_SYMBOLS, 4188 COMBINING_MARKS_FOR_SYMBOLS, 4189 LETTERLIKE_SYMBOLS, 4190 NUMBER_FORMS, 4191 ARROWS, 4192 MATHEMATICAL_OPERATORS, 4193 MISCELLANEOUS_TECHNICAL, 4194 CONTROL_PICTURES, 4195 OPTICAL_CHARACTER_RECOGNITION, 4196 ENCLOSED_ALPHANUMERICS, 4197 BOX_DRAWING, 4198 BLOCK_ELEMENTS, 4199 GEOMETRIC_SHAPES, 4200 MISCELLANEOUS_SYMBOLS, 4201 DINGBATS, 4202 MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A, 4203 SUPPLEMENTAL_ARROWS_A, 4204 BRAILLE_PATTERNS, 4205 SUPPLEMENTAL_ARROWS_B, 4206 MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B, 4207 SUPPLEMENTAL_MATHEMATICAL_OPERATORS, 4208 MISCELLANEOUS_SYMBOLS_AND_ARROWS, 4209 GLAGOLITIC, 4210 LATIN_EXTENDED_C, 4211 COPTIC, 4212 GEORGIAN_SUPPLEMENT, 4213 TIFINAGH, 4214 ETHIOPIC_EXTENDED, 4215 CYRILLIC_EXTENDED_A, 4216 SUPPLEMENTAL_PUNCTUATION, 4217 CJK_RADICALS_SUPPLEMENT, 4218 KANGXI_RADICALS, 4219 null, 4220 IDEOGRAPHIC_DESCRIPTION_CHARACTERS, 4221 CJK_SYMBOLS_AND_PUNCTUATION, 4222 HIRAGANA, 4223 KATAKANA, 4224 BOPOMOFO, 4225 HANGUL_COMPATIBILITY_JAMO, 4226 KANBUN, 4227 BOPOMOFO_EXTENDED, 4228 CJK_STROKES, 4229 KATAKANA_PHONETIC_EXTENSIONS, 4230 ENCLOSED_CJK_LETTERS_AND_MONTHS, 4231 CJK_COMPATIBILITY, 4232 CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A, 4233 YIJING_HEXAGRAM_SYMBOLS, 4234 CJK_UNIFIED_IDEOGRAPHS, 4235 YI_SYLLABLES, 4236 YI_RADICALS, 4237 LISU, 4238 VAI, 4239 CYRILLIC_EXTENDED_B, 4240 BAMUM, 4241 MODIFIER_TONE_LETTERS, 4242 LATIN_EXTENDED_D, 4243 SYLOTI_NAGRI, 4244 COMMON_INDIC_NUMBER_FORMS, 4245 PHAGS_PA, 4246 SAURASHTRA, 4247 DEVANAGARI_EXTENDED, 4248 KAYAH_LI, 4249 REJANG, 4250 HANGUL_JAMO_EXTENDED_A, 4251 JAVANESE, 4252 MYANMAR_EXTENDED_B, 4253 CHAM, 4254 MYANMAR_EXTENDED_A, 4255 TAI_VIET, 4256 MEETEI_MAYEK_EXTENSIONS, 4257 ETHIOPIC_EXTENDED_A, 4258 LATIN_EXTENDED_E, 4259 CHEROKEE_SUPPLEMENT, 4260 MEETEI_MAYEK, 4261 HANGUL_SYLLABLES, 4262 HANGUL_JAMO_EXTENDED_B, 4263 HIGH_SURROGATES, 4264 HIGH_PRIVATE_USE_SURROGATES, 4265 LOW_SURROGATES, 4266 PRIVATE_USE_AREA, 4267 CJK_COMPATIBILITY_IDEOGRAPHS, 4268 ALPHABETIC_PRESENTATION_FORMS, 4269 ARABIC_PRESENTATION_FORMS_A, 4270 VARIATION_SELECTORS, 4271 VERTICAL_FORMS, 4272 COMBINING_HALF_MARKS, 4273 CJK_COMPATIBILITY_FORMS, 4274 SMALL_FORM_VARIANTS, 4275 ARABIC_PRESENTATION_FORMS_B, 4276 HALFWIDTH_AND_FULLWIDTH_FORMS, 4277 SPECIALS, 4278 LINEAR_B_SYLLABARY, 4279 LINEAR_B_IDEOGRAMS, 4280 AEGEAN_NUMBERS, 4281 ANCIENT_GREEK_NUMBERS, 4282 ANCIENT_SYMBOLS, 4283 PHAISTOS_DISC, 4284 null, 4285 LYCIAN, 4286 CARIAN, 4287 COPTIC_EPACT_NUMBERS, 4288 OLD_ITALIC, 4289 GOTHIC, 4290 OLD_PERMIC, 4291 UGARITIC, 4292 OLD_PERSIAN, 4293 null, 4294 DESERET, 4295 SHAVIAN, 4296 OSMANYA, 4297 OSAGE, 4298 ELBASAN, 4299 CAUCASIAN_ALBANIAN, 4300 VITHKUQI, 4301 TODHRI, 4302 LINEAR_A, 4303 LATIN_EXTENDED_F, 4304 null, 4305 CYPRIOT_SYLLABARY, 4306 IMPERIAL_ARAMAIC, 4307 PALMYRENE, 4308 NABATAEAN, 4309 null, 4310 HATRAN, 4311 PHOENICIAN, 4312 LYDIAN, 4313 null, 4314 MEROITIC_HIEROGLYPHS, 4315 MEROITIC_CURSIVE, 4316 KHAROSHTHI, 4317 OLD_SOUTH_ARABIAN, 4318 OLD_NORTH_ARABIAN, 4319 null, 4320 MANICHAEAN, 4321 AVESTAN, 4322 INSCRIPTIONAL_PARTHIAN, 4323 INSCRIPTIONAL_PAHLAVI, 4324 PSALTER_PAHLAVI, 4325 null, 4326 OLD_TURKIC, 4327 null, 4328 OLD_HUNGARIAN, 4329 HANIFI_ROHINGYA, 4330 GARAY, 4331 null, 4332 RUMI_NUMERAL_SYMBOLS, 4333 YEZIDI, 4334 ARABIC_EXTENDED_C, 4335 OLD_SOGDIAN, 4336 SOGDIAN, 4337 OLD_UYGHUR, 4338 CHORASMIAN, 4339 ELYMAIC, 4340 BRAHMI, 4341 KAITHI, 4342 SORA_SOMPENG, 4343 CHAKMA, 4344 MAHAJANI, 4345 SHARADA, 4346 SINHALA_ARCHAIC_NUMBERS, 4347 KHOJKI, 4348 null, 4349 MULTANI, 4350 KHUDAWADI, 4351 GRANTHA, 4352 TULU_TIGALARI, 4353 NEWA, 4354 TIRHUTA, 4355 null, 4356 SIDDHAM, 4357 MODI, 4358 MONGOLIAN_SUPPLEMENT, 4359 TAKRI, 4360 MYANMAR_EXTENDED_C, 4361 AHOM, 4362 null, 4363 DOGRA, 4364 null, 4365 WARANG_CITI, 4366 DIVES_AKURU, 4367 null, 4368 NANDINAGARI, 4369 ZANABAZAR_SQUARE, 4370 SOYOMBO, 4371 UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED_A, 4372 PAU_CIN_HAU, 4373 DEVANAGARI_EXTENDED_A, 4374 null, 4375 SUNUWAR, 4376 BHAIKSUKI, 4377 MARCHEN, 4378 null, 4379 MASARAM_GONDI, 4380 GUNJALA_GONDI, 4381 null, 4382 MAKASAR, 4383 KAWI, 4384 null, 4385 LISU_SUPPLEMENT, 4386 TAMIL_SUPPLEMENT, 4387 CUNEIFORM, 4388 CUNEIFORM_NUMBERS_AND_PUNCTUATION, 4389 EARLY_DYNASTIC_CUNEIFORM, 4390 null, 4391 CYPRO_MINOAN, 4392 EGYPTIAN_HIEROGLYPHS, 4393 EGYPTIAN_HIEROGLYPH_FORMAT_CONTROLS, 4394 EGYPTIAN_HIEROGLYPHS_EXTENDED_A, 4395 ANATOLIAN_HIEROGLYPHS, 4396 null, 4397 GURUNG_KHEMA, 4398 null, 4399 BAMUM_SUPPLEMENT, 4400 MRO, 4401 TANGSA, 4402 BASSA_VAH, 4403 PAHAWH_HMONG, 4404 null, 4405 KIRAT_RAI, 4406 null, 4407 MEDEFAIDRIN, 4408 null, 4409 MIAO, 4410 null, 4411 IDEOGRAPHIC_SYMBOLS_AND_PUNCTUATION, 4412 TANGUT, 4413 TANGUT_COMPONENTS, 4414 KHITAN_SMALL_SCRIPT, 4415 TANGUT_SUPPLEMENT, 4416 null, 4417 KANA_EXTENDED_B, 4418 KANA_SUPPLEMENT, 4419 KANA_EXTENDED_A, 4420 SMALL_KANA_EXTENSION, 4421 NUSHU, 4422 null, 4423 DUPLOYAN, 4424 SHORTHAND_FORMAT_CONTROLS, 4425 null, 4426 SYMBOLS_FOR_LEGACY_COMPUTING_SUPPLEMENT, 4427 null, 4428 ZNAMENNY_MUSICAL_NOTATION, 4429 null, 4430 BYZANTINE_MUSICAL_SYMBOLS, 4431 MUSICAL_SYMBOLS, 4432 ANCIENT_GREEK_MUSICAL_NOTATION, 4433 null, 4434 KAKTOVIK_NUMERALS, 4435 MAYAN_NUMERALS, 4436 TAI_XUAN_JING_SYMBOLS, 4437 COUNTING_ROD_NUMERALS, 4438 null, 4439 MATHEMATICAL_ALPHANUMERIC_SYMBOLS, 4440 SUTTON_SIGNWRITING, 4441 null, 4442 LATIN_EXTENDED_G, 4443 GLAGOLITIC_SUPPLEMENT, 4444 CYRILLIC_EXTENDED_D, 4445 null, 4446 NYIAKENG_PUACHUE_HMONG, 4447 null, 4448 TOTO, 4449 WANCHO, 4450 null, 4451 NAG_MUNDARI, 4452 null, 4453 OL_ONAL, 4454 null, 4455 ETHIOPIC_EXTENDED_B, 4456 MENDE_KIKAKUI, 4457 null, 4458 ADLAM, 4459 null, 4460 INDIC_SIYAQ_NUMBERS, 4461 null, 4462 OTTOMAN_SIYAQ_NUMBERS, 4463 null, 4464 ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS, 4465 null, 4466 MAHJONG_TILES, 4467 DOMINO_TILES, 4468 PLAYING_CARDS, 4469 ENCLOSED_ALPHANUMERIC_SUPPLEMENT, 4470 ENCLOSED_IDEOGRAPHIC_SUPPLEMENT, 4471 MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS, 4472 EMOTICONS, 4473 ORNAMENTAL_DINGBATS, 4474 TRANSPORT_AND_MAP_SYMBOLS, 4475 ALCHEMICAL_SYMBOLS, 4476 GEOMETRIC_SHAPES_EXTENDED, 4477 SUPPLEMENTAL_ARROWS_C, 4478 SUPPLEMENTAL_SYMBOLS_AND_PICTOGRAPHS, 4479 CHESS_SYMBOLS, 4480 SYMBOLS_AND_PICTOGRAPHS_EXTENDED_A, 4481 SYMBOLS_FOR_LEGACY_COMPUTING, 4482 null, 4483 CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B, 4484 null, 4485 CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C, 4486 CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D, 4487 CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E, 4488 CJK_UNIFIED_IDEOGRAPHS_EXTENSION_F, 4489 CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I, 4490 null, 4491 CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT, 4492 null, 4493 CJK_UNIFIED_IDEOGRAPHS_EXTENSION_G, 4494 CJK_UNIFIED_IDEOGRAPHS_EXTENSION_H, 4495 null, 4496 TAGS, 4497 null, 4498 VARIATION_SELECTORS_SUPPLEMENT, 4499 null, 4500 SUPPLEMENTARY_PRIVATE_USE_AREA_A, 4501 SUPPLEMENTARY_PRIVATE_USE_AREA_B, 4502 }; 4503 4504 4505 /** 4506 * Returns the object representing the Unicode block containing the 4507 * given character, or {@code null} if the character is not a 4508 * member of a defined block. 4509 * 4510 * <p><b>Note:</b> This method cannot handle 4511 * <a href="Character.html#supplementary"> supplementary 4512 * characters</a>. To support all Unicode characters, including 4513 * supplementary characters, use the {@link #of(int)} method. 4514 * 4515 * @param c The character in question 4516 * @return The {@code UnicodeBlock} instance representing the 4517 * Unicode block of which this character is a member, or 4518 * {@code null} if the character is not a member of any 4519 * Unicode block 4520 */ 4521 public static UnicodeBlock of(char c) { 4522 return of((int)c); 4523 } 4524 4525 /** 4526 * Returns the object representing the Unicode block 4527 * containing the given character (Unicode code point), or 4528 * {@code null} if the character is not a member of a 4529 * defined block. 4530 * 4531 * @param codePoint the character (Unicode code point) in question. 4532 * @return The {@code UnicodeBlock} instance representing the 4533 * Unicode block of which this character is a member, or 4534 * {@code null} if the character is not a member of any 4535 * Unicode block 4536 * @throws IllegalArgumentException if the specified 4537 * {@code codePoint} is an invalid Unicode code point. 4538 * @see Character#isValidCodePoint(int) 4539 * @since 1.5 4540 */ 4541 public static UnicodeBlock of(int codePoint) { 4542 if (!isValidCodePoint(codePoint)) { 4543 throw new IllegalArgumentException( 4544 String.format("Not a valid Unicode code point: 0x%X", codePoint)); 4545 } 4546 4547 int top, bottom, current; 4548 bottom = 0; 4549 top = blockStarts.length; 4550 current = top/2; 4551 4552 // invariant: top > current >= bottom && codePoint >= unicodeBlockStarts[bottom] 4553 while (top - bottom > 1) { 4554 if (codePoint >= blockStarts[current]) { 4555 bottom = current; 4556 } else { 4557 top = current; 4558 } 4559 current = (top + bottom) / 2; 4560 } 4561 return blocks[current]; 4562 } 4563 4564 /** 4565 * Returns the UnicodeBlock with the given name. Block 4566 * names are determined by The Unicode Standard. The file 4567 * {@code Blocks.txt} defines blocks for a particular 4568 * version of the standard. The {@link Character} class specifies 4569 * the version of the standard that it supports. 4570 * <p> 4571 * This method accepts block names in the following forms: 4572 * <ol> 4573 * <li> Canonical block names as defined by the Unicode Standard. 4574 * For example, the standard defines a "Basic Latin" block. Therefore, this 4575 * method accepts "Basic Latin" as a valid block name. The documentation of 4576 * each UnicodeBlock provides the canonical name. 4577 * <li>Canonical block names with all spaces removed. For example, "BasicLatin" 4578 * is a valid block name for the "Basic Latin" block. 4579 * <li>The text representation of each constant UnicodeBlock identifier. 4580 * For example, this method will return the {@link #BASIC_LATIN} block if 4581 * provided with the "BASIC_LATIN" name. This form replaces all spaces and 4582 * hyphens in the canonical name with underscores. 4583 * </ol> 4584 * Finally, character case is ignored for all of the valid block name forms. 4585 * For example, "BASIC_LATIN" and "basic_latin" are both valid block names. 4586 * The en_US locale's case mapping rules are used to provide case-insensitive 4587 * string comparisons for block name validation. 4588 * <p> 4589 * If the Unicode Standard changes block names, both the previous and 4590 * current names will be accepted. 4591 * 4592 * @param blockName A {@code UnicodeBlock} name. 4593 * @return The {@code UnicodeBlock} instance identified 4594 * by {@code blockName} 4595 * @throws IllegalArgumentException if {@code blockName} is an 4596 * invalid name 4597 * @throws NullPointerException if {@code blockName} is null 4598 * @since 1.5 4599 */ 4600 public static final UnicodeBlock forName(String blockName) { 4601 UnicodeBlock block = map.get(blockName.toUpperCase(Locale.US)); 4602 if (block == null) { 4603 throw new IllegalArgumentException("Not a valid block name: " 4604 + blockName); 4605 } 4606 return block; 4607 } 4608 } 4609 4610 4611 /** 4612 * A family of character subsets representing the character scripts 4613 * defined in the <a href="http://www.unicode.org/reports/tr24/"> 4614 * <i>Unicode Standard Annex #24: Script Names</i></a>. Every Unicode 4615 * character is assigned to a single Unicode script, either a specific 4616 * script, such as {@link Character.UnicodeScript#LATIN Latin}, or 4617 * one of the following three special values, 4618 * {@link Character.UnicodeScript#INHERITED Inherited}, 4619 * {@link Character.UnicodeScript#COMMON Common} or 4620 * {@link Character.UnicodeScript#UNKNOWN Unknown}. 4621 * 4622 * @spec https://www.unicode.org/reports/tr24 Unicode Script Property 4623 * @since 1.7 4624 */ 4625 public static enum UnicodeScript { 4626 4627 /** 4628 * Unicode script "Common". 4629 */ 4630 COMMON, 4631 4632 /** 4633 * Unicode script "Latin". 4634 */ 4635 LATIN, 4636 4637 /** 4638 * Unicode script "Greek". 4639 */ 4640 GREEK, 4641 4642 /** 4643 * Unicode script "Cyrillic". 4644 */ 4645 CYRILLIC, 4646 4647 /** 4648 * Unicode script "Armenian". 4649 */ 4650 ARMENIAN, 4651 4652 /** 4653 * Unicode script "Hebrew". 4654 */ 4655 HEBREW, 4656 4657 /** 4658 * Unicode script "Arabic". 4659 */ 4660 ARABIC, 4661 4662 /** 4663 * Unicode script "Syriac". 4664 */ 4665 SYRIAC, 4666 4667 /** 4668 * Unicode script "Thaana". 4669 */ 4670 THAANA, 4671 4672 /** 4673 * Unicode script "Devanagari". 4674 */ 4675 DEVANAGARI, 4676 4677 /** 4678 * Unicode script "Bengali". 4679 */ 4680 BENGALI, 4681 4682 /** 4683 * Unicode script "Gurmukhi". 4684 */ 4685 GURMUKHI, 4686 4687 /** 4688 * Unicode script "Gujarati". 4689 */ 4690 GUJARATI, 4691 4692 /** 4693 * Unicode script "Oriya". 4694 */ 4695 ORIYA, 4696 4697 /** 4698 * Unicode script "Tamil". 4699 */ 4700 TAMIL, 4701 4702 /** 4703 * Unicode script "Telugu". 4704 */ 4705 TELUGU, 4706 4707 /** 4708 * Unicode script "Kannada". 4709 */ 4710 KANNADA, 4711 4712 /** 4713 * Unicode script "Malayalam". 4714 */ 4715 MALAYALAM, 4716 4717 /** 4718 * Unicode script "Sinhala". 4719 */ 4720 SINHALA, 4721 4722 /** 4723 * Unicode script "Thai". 4724 */ 4725 THAI, 4726 4727 /** 4728 * Unicode script "Lao". 4729 */ 4730 LAO, 4731 4732 /** 4733 * Unicode script "Tibetan". 4734 */ 4735 TIBETAN, 4736 4737 /** 4738 * Unicode script "Myanmar". 4739 */ 4740 MYANMAR, 4741 4742 /** 4743 * Unicode script "Georgian". 4744 */ 4745 GEORGIAN, 4746 4747 /** 4748 * Unicode script "Hangul". 4749 */ 4750 HANGUL, 4751 4752 /** 4753 * Unicode script "Ethiopic". 4754 */ 4755 ETHIOPIC, 4756 4757 /** 4758 * Unicode script "Cherokee". 4759 */ 4760 CHEROKEE, 4761 4762 /** 4763 * Unicode script "Canadian_Aboriginal". 4764 */ 4765 CANADIAN_ABORIGINAL, 4766 4767 /** 4768 * Unicode script "Ogham". 4769 */ 4770 OGHAM, 4771 4772 /** 4773 * Unicode script "Runic". 4774 */ 4775 RUNIC, 4776 4777 /** 4778 * Unicode script "Khmer". 4779 */ 4780 KHMER, 4781 4782 /** 4783 * Unicode script "Mongolian". 4784 */ 4785 MONGOLIAN, 4786 4787 /** 4788 * Unicode script "Hiragana". 4789 */ 4790 HIRAGANA, 4791 4792 /** 4793 * Unicode script "Katakana". 4794 */ 4795 KATAKANA, 4796 4797 /** 4798 * Unicode script "Bopomofo". 4799 */ 4800 BOPOMOFO, 4801 4802 /** 4803 * Unicode script "Han". 4804 */ 4805 HAN, 4806 4807 /** 4808 * Unicode script "Yi". 4809 */ 4810 YI, 4811 4812 /** 4813 * Unicode script "Old_Italic". 4814 */ 4815 OLD_ITALIC, 4816 4817 /** 4818 * Unicode script "Gothic". 4819 */ 4820 GOTHIC, 4821 4822 /** 4823 * Unicode script "Deseret". 4824 */ 4825 DESERET, 4826 4827 /** 4828 * Unicode script "Inherited". 4829 */ 4830 INHERITED, 4831 4832 /** 4833 * Unicode script "Tagalog". 4834 */ 4835 TAGALOG, 4836 4837 /** 4838 * Unicode script "Hanunoo". 4839 */ 4840 HANUNOO, 4841 4842 /** 4843 * Unicode script "Buhid". 4844 */ 4845 BUHID, 4846 4847 /** 4848 * Unicode script "Tagbanwa". 4849 */ 4850 TAGBANWA, 4851 4852 /** 4853 * Unicode script "Limbu". 4854 */ 4855 LIMBU, 4856 4857 /** 4858 * Unicode script "Tai_Le". 4859 */ 4860 TAI_LE, 4861 4862 /** 4863 * Unicode script "Linear_B". 4864 */ 4865 LINEAR_B, 4866 4867 /** 4868 * Unicode script "Ugaritic". 4869 */ 4870 UGARITIC, 4871 4872 /** 4873 * Unicode script "Shavian". 4874 */ 4875 SHAVIAN, 4876 4877 /** 4878 * Unicode script "Osmanya". 4879 */ 4880 OSMANYA, 4881 4882 /** 4883 * Unicode script "Cypriot". 4884 */ 4885 CYPRIOT, 4886 4887 /** 4888 * Unicode script "Braille". 4889 */ 4890 BRAILLE, 4891 4892 /** 4893 * Unicode script "Buginese". 4894 */ 4895 BUGINESE, 4896 4897 /** 4898 * Unicode script "Coptic". 4899 */ 4900 COPTIC, 4901 4902 /** 4903 * Unicode script "New_Tai_Lue". 4904 */ 4905 NEW_TAI_LUE, 4906 4907 /** 4908 * Unicode script "Glagolitic". 4909 */ 4910 GLAGOLITIC, 4911 4912 /** 4913 * Unicode script "Tifinagh". 4914 */ 4915 TIFINAGH, 4916 4917 /** 4918 * Unicode script "Syloti_Nagri". 4919 */ 4920 SYLOTI_NAGRI, 4921 4922 /** 4923 * Unicode script "Old_Persian". 4924 */ 4925 OLD_PERSIAN, 4926 4927 /** 4928 * Unicode script "Kharoshthi". 4929 */ 4930 KHAROSHTHI, 4931 4932 /** 4933 * Unicode script "Balinese". 4934 */ 4935 BALINESE, 4936 4937 /** 4938 * Unicode script "Cuneiform". 4939 */ 4940 CUNEIFORM, 4941 4942 /** 4943 * Unicode script "Phoenician". 4944 */ 4945 PHOENICIAN, 4946 4947 /** 4948 * Unicode script "Phags_Pa". 4949 */ 4950 PHAGS_PA, 4951 4952 /** 4953 * Unicode script "Nko". 4954 */ 4955 NKO, 4956 4957 /** 4958 * Unicode script "Sundanese". 4959 */ 4960 SUNDANESE, 4961 4962 /** 4963 * Unicode script "Batak". 4964 */ 4965 BATAK, 4966 4967 /** 4968 * Unicode script "Lepcha". 4969 */ 4970 LEPCHA, 4971 4972 /** 4973 * Unicode script "Ol_Chiki". 4974 */ 4975 OL_CHIKI, 4976 4977 /** 4978 * Unicode script "Vai". 4979 */ 4980 VAI, 4981 4982 /** 4983 * Unicode script "Saurashtra". 4984 */ 4985 SAURASHTRA, 4986 4987 /** 4988 * Unicode script "Kayah_Li". 4989 */ 4990 KAYAH_LI, 4991 4992 /** 4993 * Unicode script "Rejang". 4994 */ 4995 REJANG, 4996 4997 /** 4998 * Unicode script "Lycian". 4999 */ 5000 LYCIAN, 5001 5002 /** 5003 * Unicode script "Carian". 5004 */ 5005 CARIAN, 5006 5007 /** 5008 * Unicode script "Lydian". 5009 */ 5010 LYDIAN, 5011 5012 /** 5013 * Unicode script "Cham". 5014 */ 5015 CHAM, 5016 5017 /** 5018 * Unicode script "Tai_Tham". 5019 */ 5020 TAI_THAM, 5021 5022 /** 5023 * Unicode script "Tai_Viet". 5024 */ 5025 TAI_VIET, 5026 5027 /** 5028 * Unicode script "Avestan". 5029 */ 5030 AVESTAN, 5031 5032 /** 5033 * Unicode script "Egyptian_Hieroglyphs". 5034 */ 5035 EGYPTIAN_HIEROGLYPHS, 5036 5037 /** 5038 * Unicode script "Samaritan". 5039 */ 5040 SAMARITAN, 5041 5042 /** 5043 * Unicode script "Mandaic". 5044 */ 5045 MANDAIC, 5046 5047 /** 5048 * Unicode script "Lisu". 5049 */ 5050 LISU, 5051 5052 /** 5053 * Unicode script "Bamum". 5054 */ 5055 BAMUM, 5056 5057 /** 5058 * Unicode script "Javanese". 5059 */ 5060 JAVANESE, 5061 5062 /** 5063 * Unicode script "Meetei_Mayek". 5064 */ 5065 MEETEI_MAYEK, 5066 5067 /** 5068 * Unicode script "Imperial_Aramaic". 5069 */ 5070 IMPERIAL_ARAMAIC, 5071 5072 /** 5073 * Unicode script "Old_South_Arabian". 5074 */ 5075 OLD_SOUTH_ARABIAN, 5076 5077 /** 5078 * Unicode script "Inscriptional_Parthian". 5079 */ 5080 INSCRIPTIONAL_PARTHIAN, 5081 5082 /** 5083 * Unicode script "Inscriptional_Pahlavi". 5084 */ 5085 INSCRIPTIONAL_PAHLAVI, 5086 5087 /** 5088 * Unicode script "Old_Turkic". 5089 */ 5090 OLD_TURKIC, 5091 5092 /** 5093 * Unicode script "Brahmi". 5094 */ 5095 BRAHMI, 5096 5097 /** 5098 * Unicode script "Kaithi". 5099 */ 5100 KAITHI, 5101 5102 /** 5103 * Unicode script "Meroitic Hieroglyphs". 5104 * @since 1.8 5105 */ 5106 MEROITIC_HIEROGLYPHS, 5107 5108 /** 5109 * Unicode script "Meroitic Cursive". 5110 * @since 1.8 5111 */ 5112 MEROITIC_CURSIVE, 5113 5114 /** 5115 * Unicode script "Sora Sompeng". 5116 * @since 1.8 5117 */ 5118 SORA_SOMPENG, 5119 5120 /** 5121 * Unicode script "Chakma". 5122 * @since 1.8 5123 */ 5124 CHAKMA, 5125 5126 /** 5127 * Unicode script "Sharada". 5128 * @since 1.8 5129 */ 5130 SHARADA, 5131 5132 /** 5133 * Unicode script "Takri". 5134 * @since 1.8 5135 */ 5136 TAKRI, 5137 5138 /** 5139 * Unicode script "Miao". 5140 * @since 1.8 5141 */ 5142 MIAO, 5143 5144 /** 5145 * Unicode script "Caucasian Albanian". 5146 * @since 9 5147 */ 5148 CAUCASIAN_ALBANIAN, 5149 5150 /** 5151 * Unicode script "Bassa Vah". 5152 * @since 9 5153 */ 5154 BASSA_VAH, 5155 5156 /** 5157 * Unicode script "Duployan". 5158 * @since 9 5159 */ 5160 DUPLOYAN, 5161 5162 /** 5163 * Unicode script "Elbasan". 5164 * @since 9 5165 */ 5166 ELBASAN, 5167 5168 /** 5169 * Unicode script "Grantha". 5170 * @since 9 5171 */ 5172 GRANTHA, 5173 5174 /** 5175 * Unicode script "Pahawh Hmong". 5176 * @since 9 5177 */ 5178 PAHAWH_HMONG, 5179 5180 /** 5181 * Unicode script "Khojki". 5182 * @since 9 5183 */ 5184 KHOJKI, 5185 5186 /** 5187 * Unicode script "Linear A". 5188 * @since 9 5189 */ 5190 LINEAR_A, 5191 5192 /** 5193 * Unicode script "Mahajani". 5194 * @since 9 5195 */ 5196 MAHAJANI, 5197 5198 /** 5199 * Unicode script "Manichaean". 5200 * @since 9 5201 */ 5202 MANICHAEAN, 5203 5204 /** 5205 * Unicode script "Mende Kikakui". 5206 * @since 9 5207 */ 5208 MENDE_KIKAKUI, 5209 5210 /** 5211 * Unicode script "Modi". 5212 * @since 9 5213 */ 5214 MODI, 5215 5216 /** 5217 * Unicode script "Mro". 5218 * @since 9 5219 */ 5220 MRO, 5221 5222 /** 5223 * Unicode script "Old North Arabian". 5224 * @since 9 5225 */ 5226 OLD_NORTH_ARABIAN, 5227 5228 /** 5229 * Unicode script "Nabataean". 5230 * @since 9 5231 */ 5232 NABATAEAN, 5233 5234 /** 5235 * Unicode script "Palmyrene". 5236 * @since 9 5237 */ 5238 PALMYRENE, 5239 5240 /** 5241 * Unicode script "Pau Cin Hau". 5242 * @since 9 5243 */ 5244 PAU_CIN_HAU, 5245 5246 /** 5247 * Unicode script "Old Permic". 5248 * @since 9 5249 */ 5250 OLD_PERMIC, 5251 5252 /** 5253 * Unicode script "Psalter Pahlavi". 5254 * @since 9 5255 */ 5256 PSALTER_PAHLAVI, 5257 5258 /** 5259 * Unicode script "Siddham". 5260 * @since 9 5261 */ 5262 SIDDHAM, 5263 5264 /** 5265 * Unicode script "Khudawadi". 5266 * @since 9 5267 */ 5268 KHUDAWADI, 5269 5270 /** 5271 * Unicode script "Tirhuta". 5272 * @since 9 5273 */ 5274 TIRHUTA, 5275 5276 /** 5277 * Unicode script "Warang Citi". 5278 * @since 9 5279 */ 5280 WARANG_CITI, 5281 5282 /** 5283 * Unicode script "Ahom". 5284 * @since 9 5285 */ 5286 AHOM, 5287 5288 /** 5289 * Unicode script "Anatolian Hieroglyphs". 5290 * @since 9 5291 */ 5292 ANATOLIAN_HIEROGLYPHS, 5293 5294 /** 5295 * Unicode script "Hatran". 5296 * @since 9 5297 */ 5298 HATRAN, 5299 5300 /** 5301 * Unicode script "Multani". 5302 * @since 9 5303 */ 5304 MULTANI, 5305 5306 /** 5307 * Unicode script "Old Hungarian". 5308 * @since 9 5309 */ 5310 OLD_HUNGARIAN, 5311 5312 /** 5313 * Unicode script "SignWriting". 5314 * @since 9 5315 */ 5316 SIGNWRITING, 5317 5318 /** 5319 * Unicode script "Adlam". 5320 * @since 11 5321 */ 5322 ADLAM, 5323 5324 /** 5325 * Unicode script "Bhaiksuki". 5326 * @since 11 5327 */ 5328 BHAIKSUKI, 5329 5330 /** 5331 * Unicode script "Marchen". 5332 * @since 11 5333 */ 5334 MARCHEN, 5335 5336 /** 5337 * Unicode script "Newa". 5338 * @since 11 5339 */ 5340 NEWA, 5341 5342 /** 5343 * Unicode script "Osage". 5344 * @since 11 5345 */ 5346 OSAGE, 5347 5348 /** 5349 * Unicode script "Tangut". 5350 * @since 11 5351 */ 5352 TANGUT, 5353 5354 /** 5355 * Unicode script "Masaram Gondi". 5356 * @since 11 5357 */ 5358 MASARAM_GONDI, 5359 5360 /** 5361 * Unicode script "Nushu". 5362 * @since 11 5363 */ 5364 NUSHU, 5365 5366 /** 5367 * Unicode script "Soyombo". 5368 * @since 11 5369 */ 5370 SOYOMBO, 5371 5372 /** 5373 * Unicode script "Zanabazar Square". 5374 * @since 11 5375 */ 5376 ZANABAZAR_SQUARE, 5377 5378 /** 5379 * Unicode script "Hanifi Rohingya". 5380 * @since 12 5381 */ 5382 HANIFI_ROHINGYA, 5383 5384 /** 5385 * Unicode script "Old Sogdian". 5386 * @since 12 5387 */ 5388 OLD_SOGDIAN, 5389 5390 /** 5391 * Unicode script "Sogdian". 5392 * @since 12 5393 */ 5394 SOGDIAN, 5395 5396 /** 5397 * Unicode script "Dogra". 5398 * @since 12 5399 */ 5400 DOGRA, 5401 5402 /** 5403 * Unicode script "Gunjala Gondi". 5404 * @since 12 5405 */ 5406 GUNJALA_GONDI, 5407 5408 /** 5409 * Unicode script "Makasar". 5410 * @since 12 5411 */ 5412 MAKASAR, 5413 5414 /** 5415 * Unicode script "Medefaidrin". 5416 * @since 12 5417 */ 5418 MEDEFAIDRIN, 5419 5420 /** 5421 * Unicode script "Elymaic". 5422 * @since 13 5423 */ 5424 ELYMAIC, 5425 5426 /** 5427 * Unicode script "Nandinagari". 5428 * @since 13 5429 */ 5430 NANDINAGARI, 5431 5432 /** 5433 * Unicode script "Nyiakeng Puachue Hmong". 5434 * @since 13 5435 */ 5436 NYIAKENG_PUACHUE_HMONG, 5437 5438 /** 5439 * Unicode script "Wancho". 5440 * @since 13 5441 */ 5442 WANCHO, 5443 5444 /** 5445 * Unicode script "Yezidi". 5446 * @since 15 5447 */ 5448 YEZIDI, 5449 5450 /** 5451 * Unicode script "Chorasmian". 5452 * @since 15 5453 */ 5454 CHORASMIAN, 5455 5456 /** 5457 * Unicode script "Dives Akuru". 5458 * @since 15 5459 */ 5460 DIVES_AKURU, 5461 5462 /** 5463 * Unicode script "Khitan Small Script". 5464 * @since 15 5465 */ 5466 KHITAN_SMALL_SCRIPT, 5467 5468 /** 5469 * Unicode script "Vithkuqi". 5470 * @since 19 5471 */ 5472 VITHKUQI, 5473 5474 /** 5475 * Unicode script "Old Uyghur". 5476 * @since 19 5477 */ 5478 OLD_UYGHUR, 5479 5480 /** 5481 * Unicode script "Cypro Minoan". 5482 * @since 19 5483 */ 5484 CYPRO_MINOAN, 5485 5486 /** 5487 * Unicode script "Tangsa". 5488 * @since 19 5489 */ 5490 TANGSA, 5491 5492 /** 5493 * Unicode script "Toto". 5494 * @since 19 5495 */ 5496 TOTO, 5497 5498 /** 5499 * Unicode script "Kawi". 5500 * @since 20 5501 */ 5502 KAWI, 5503 5504 /** 5505 * Unicode script "Nag Mundari". 5506 * @since 20 5507 */ 5508 NAG_MUNDARI, 5509 5510 /** 5511 * Unicode script "Todhri". 5512 * @since 24 5513 */ 5514 TODHRI, 5515 5516 /** 5517 * Unicode script "Garay". 5518 * @since 24 5519 */ 5520 GARAY, 5521 5522 /** 5523 * Unicode script "Tulu Tigalari". 5524 * @since 24 5525 */ 5526 TULU_TIGALARI, 5527 5528 /** 5529 * Unicode script "Sunuwar". 5530 * @since 24 5531 */ 5532 SUNUWAR, 5533 5534 /** 5535 * Unicode script "Gurung Khema". 5536 * @since 24 5537 */ 5538 GURUNG_KHEMA, 5539 5540 /** 5541 * Unicode script "Kirat Rai". 5542 * @since 24 5543 */ 5544 KIRAT_RAI, 5545 5546 /** 5547 * Unicode script "Ol Onal". 5548 * @since 24 5549 */ 5550 OL_ONAL, 5551 5552 /** 5553 * Unicode script "Unknown". 5554 */ 5555 UNKNOWN; // must be the last enum constant for calculating the size of "aliases" hash map. 5556 5557 private static final int[] scriptStarts = { 5558 0x0000, // 0000..0040; COMMON 5559 0x0041, // 0041..005A; LATIN 5560 0x005B, // 005B..0060; COMMON 5561 0x0061, // 0061..007A; LATIN 5562 0x007B, // 007B..00A9; COMMON 5563 0x00AA, // 00AA ; LATIN 5564 0x00AB, // 00AB..00B9; COMMON 5565 0x00BA, // 00BA ; LATIN 5566 0x00BB, // 00BB..00BF; COMMON 5567 0x00C0, // 00C0..00D6; LATIN 5568 0x00D7, // 00D7 ; COMMON 5569 0x00D8, // 00D8..00F6; LATIN 5570 0x00F7, // 00F7 ; COMMON 5571 0x00F8, // 00F8..02B8; LATIN 5572 0x02B9, // 02B9..02DF; COMMON 5573 0x02E0, // 02E0..02E4; LATIN 5574 0x02E5, // 02E5..02E9; COMMON 5575 0x02EA, // 02EA..02EB; BOPOMOFO 5576 0x02EC, // 02EC..02FF; COMMON 5577 0x0300, // 0300..036F; INHERITED 5578 0x0370, // 0370..0373; GREEK 5579 0x0374, // 0374 ; COMMON 5580 0x0375, // 0375..0377; GREEK 5581 0x0378, // 0378..0379; UNKNOWN 5582 0x037A, // 037A..037D; GREEK 5583 0x037E, // 037E ; COMMON 5584 0x037F, // 037F ; GREEK 5585 0x0380, // 0380..0383; UNKNOWN 5586 0x0384, // 0384 ; GREEK 5587 0x0385, // 0385 ; COMMON 5588 0x0386, // 0386 ; GREEK 5589 0x0387, // 0387 ; COMMON 5590 0x0388, // 0388..038A; GREEK 5591 0x038B, // 038B ; UNKNOWN 5592 0x038C, // 038C ; GREEK 5593 0x038D, // 038D ; UNKNOWN 5594 0x038E, // 038E..03A1; GREEK 5595 0x03A2, // 03A2 ; UNKNOWN 5596 0x03A3, // 03A3..03E1; GREEK 5597 0x03E2, // 03E2..03EF; COPTIC 5598 0x03F0, // 03F0..03FF; GREEK 5599 0x0400, // 0400..0484; CYRILLIC 5600 0x0485, // 0485..0486; INHERITED 5601 0x0487, // 0487..052F; CYRILLIC 5602 0x0530, // 0530 ; UNKNOWN 5603 0x0531, // 0531..0556; ARMENIAN 5604 0x0557, // 0557..0558; UNKNOWN 5605 0x0559, // 0559..058A; ARMENIAN 5606 0x058B, // 058B..058C; UNKNOWN 5607 0x058D, // 058D..058F; ARMENIAN 5608 0x0590, // 0590 ; UNKNOWN 5609 0x0591, // 0591..05C7; HEBREW 5610 0x05C8, // 05C8..05CF; UNKNOWN 5611 0x05D0, // 05D0..05EA; HEBREW 5612 0x05EB, // 05EB..05EE; UNKNOWN 5613 0x05EF, // 05EF..05F4; HEBREW 5614 0x05F5, // 05F5..05FF; UNKNOWN 5615 0x0600, // 0600..0604; ARABIC 5616 0x0605, // 0605 ; COMMON 5617 0x0606, // 0606..060B; ARABIC 5618 0x060C, // 060C ; COMMON 5619 0x060D, // 060D..061A; ARABIC 5620 0x061B, // 061B ; COMMON 5621 0x061C, // 061C..061E; ARABIC 5622 0x061F, // 061F ; COMMON 5623 0x0620, // 0620..063F; ARABIC 5624 0x0640, // 0640 ; COMMON 5625 0x0641, // 0641..064A; ARABIC 5626 0x064B, // 064B..0655; INHERITED 5627 0x0656, // 0656..066F; ARABIC 5628 0x0670, // 0670 ; INHERITED 5629 0x0671, // 0671..06DC; ARABIC 5630 0x06DD, // 06DD ; COMMON 5631 0x06DE, // 06DE..06FF; ARABIC 5632 0x0700, // 0700..070D; SYRIAC 5633 0x070E, // 070E ; UNKNOWN 5634 0x070F, // 070F..074A; SYRIAC 5635 0x074B, // 074B..074C; UNKNOWN 5636 0x074D, // 074D..074F; SYRIAC 5637 0x0750, // 0750..077F; ARABIC 5638 0x0780, // 0780..07B1; THAANA 5639 0x07B2, // 07B2..07BF; UNKNOWN 5640 0x07C0, // 07C0..07FA; NKO 5641 0x07FB, // 07FB..07FC; UNKNOWN 5642 0x07FD, // 07FD..07FF; NKO 5643 0x0800, // 0800..082D; SAMARITAN 5644 0x082E, // 082E..082F; UNKNOWN 5645 0x0830, // 0830..083E; SAMARITAN 5646 0x083F, // 083F ; UNKNOWN 5647 0x0840, // 0840..085B; MANDAIC 5648 0x085C, // 085C..085D; UNKNOWN 5649 0x085E, // 085E ; MANDAIC 5650 0x085F, // 085F ; UNKNOWN 5651 0x0860, // 0860..086A; SYRIAC 5652 0x086B, // 086B..086F; UNKNOWN 5653 0x0870, // 0870..088E; ARABIC 5654 0x088F, // 088F ; UNKNOWN 5655 0x0890, // 0890..0891; ARABIC 5656 0x0892, // 0892..0896; UNKNOWN 5657 0x0897, // 0897..08E1; ARABIC 5658 0x08E2, // 08E2 ; COMMON 5659 0x08E3, // 08E3..08FF; ARABIC 5660 0x0900, // 0900..0950; DEVANAGARI 5661 0x0951, // 0951..0954; INHERITED 5662 0x0955, // 0955..0963; DEVANAGARI 5663 0x0964, // 0964..0965; COMMON 5664 0x0966, // 0966..097F; DEVANAGARI 5665 0x0980, // 0980..0983; BENGALI 5666 0x0984, // 0984 ; UNKNOWN 5667 0x0985, // 0985..098C; BENGALI 5668 0x098D, // 098D..098E; UNKNOWN 5669 0x098F, // 098F..0990; BENGALI 5670 0x0991, // 0991..0992; UNKNOWN 5671 0x0993, // 0993..09A8; BENGALI 5672 0x09A9, // 09A9 ; UNKNOWN 5673 0x09AA, // 09AA..09B0; BENGALI 5674 0x09B1, // 09B1 ; UNKNOWN 5675 0x09B2, // 09B2 ; BENGALI 5676 0x09B3, // 09B3..09B5; UNKNOWN 5677 0x09B6, // 09B6..09B9; BENGALI 5678 0x09BA, // 09BA..09BB; UNKNOWN 5679 0x09BC, // 09BC..09C4; BENGALI 5680 0x09C5, // 09C5..09C6; UNKNOWN 5681 0x09C7, // 09C7..09C8; BENGALI 5682 0x09C9, // 09C9..09CA; UNKNOWN 5683 0x09CB, // 09CB..09CE; BENGALI 5684 0x09CF, // 09CF..09D6; UNKNOWN 5685 0x09D7, // 09D7 ; BENGALI 5686 0x09D8, // 09D8..09DB; UNKNOWN 5687 0x09DC, // 09DC..09DD; BENGALI 5688 0x09DE, // 09DE ; UNKNOWN 5689 0x09DF, // 09DF..09E3; BENGALI 5690 0x09E4, // 09E4..09E5; UNKNOWN 5691 0x09E6, // 09E6..09FE; BENGALI 5692 0x09FF, // 09FF..0A00; UNKNOWN 5693 0x0A01, // 0A01..0A03; GURMUKHI 5694 0x0A04, // 0A04 ; UNKNOWN 5695 0x0A05, // 0A05..0A0A; GURMUKHI 5696 0x0A0B, // 0A0B..0A0E; UNKNOWN 5697 0x0A0F, // 0A0F..0A10; GURMUKHI 5698 0x0A11, // 0A11..0A12; UNKNOWN 5699 0x0A13, // 0A13..0A28; GURMUKHI 5700 0x0A29, // 0A29 ; UNKNOWN 5701 0x0A2A, // 0A2A..0A30; GURMUKHI 5702 0x0A31, // 0A31 ; UNKNOWN 5703 0x0A32, // 0A32..0A33; GURMUKHI 5704 0x0A34, // 0A34 ; UNKNOWN 5705 0x0A35, // 0A35..0A36; GURMUKHI 5706 0x0A37, // 0A37 ; UNKNOWN 5707 0x0A38, // 0A38..0A39; GURMUKHI 5708 0x0A3A, // 0A3A..0A3B; UNKNOWN 5709 0x0A3C, // 0A3C ; GURMUKHI 5710 0x0A3D, // 0A3D ; UNKNOWN 5711 0x0A3E, // 0A3E..0A42; GURMUKHI 5712 0x0A43, // 0A43..0A46; UNKNOWN 5713 0x0A47, // 0A47..0A48; GURMUKHI 5714 0x0A49, // 0A49..0A4A; UNKNOWN 5715 0x0A4B, // 0A4B..0A4D; GURMUKHI 5716 0x0A4E, // 0A4E..0A50; UNKNOWN 5717 0x0A51, // 0A51 ; GURMUKHI 5718 0x0A52, // 0A52..0A58; UNKNOWN 5719 0x0A59, // 0A59..0A5C; GURMUKHI 5720 0x0A5D, // 0A5D ; UNKNOWN 5721 0x0A5E, // 0A5E ; GURMUKHI 5722 0x0A5F, // 0A5F..0A65; UNKNOWN 5723 0x0A66, // 0A66..0A76; GURMUKHI 5724 0x0A77, // 0A77..0A80; UNKNOWN 5725 0x0A81, // 0A81..0A83; GUJARATI 5726 0x0A84, // 0A84 ; UNKNOWN 5727 0x0A85, // 0A85..0A8D; GUJARATI 5728 0x0A8E, // 0A8E ; UNKNOWN 5729 0x0A8F, // 0A8F..0A91; GUJARATI 5730 0x0A92, // 0A92 ; UNKNOWN 5731 0x0A93, // 0A93..0AA8; GUJARATI 5732 0x0AA9, // 0AA9 ; UNKNOWN 5733 0x0AAA, // 0AAA..0AB0; GUJARATI 5734 0x0AB1, // 0AB1 ; UNKNOWN 5735 0x0AB2, // 0AB2..0AB3; GUJARATI 5736 0x0AB4, // 0AB4 ; UNKNOWN 5737 0x0AB5, // 0AB5..0AB9; GUJARATI 5738 0x0ABA, // 0ABA..0ABB; UNKNOWN 5739 0x0ABC, // 0ABC..0AC5; GUJARATI 5740 0x0AC6, // 0AC6 ; UNKNOWN 5741 0x0AC7, // 0AC7..0AC9; GUJARATI 5742 0x0ACA, // 0ACA ; UNKNOWN 5743 0x0ACB, // 0ACB..0ACD; GUJARATI 5744 0x0ACE, // 0ACE..0ACF; UNKNOWN 5745 0x0AD0, // 0AD0 ; GUJARATI 5746 0x0AD1, // 0AD1..0ADF; UNKNOWN 5747 0x0AE0, // 0AE0..0AE3; GUJARATI 5748 0x0AE4, // 0AE4..0AE5; UNKNOWN 5749 0x0AE6, // 0AE6..0AF1; GUJARATI 5750 0x0AF2, // 0AF2..0AF8; UNKNOWN 5751 0x0AF9, // 0AF9..0AFF; GUJARATI 5752 0x0B00, // 0B00 ; UNKNOWN 5753 0x0B01, // 0B01..0B03; ORIYA 5754 0x0B04, // 0B04 ; UNKNOWN 5755 0x0B05, // 0B05..0B0C; ORIYA 5756 0x0B0D, // 0B0D..0B0E; UNKNOWN 5757 0x0B0F, // 0B0F..0B10; ORIYA 5758 0x0B11, // 0B11..0B12; UNKNOWN 5759 0x0B13, // 0B13..0B28; ORIYA 5760 0x0B29, // 0B29 ; UNKNOWN 5761 0x0B2A, // 0B2A..0B30; ORIYA 5762 0x0B31, // 0B31 ; UNKNOWN 5763 0x0B32, // 0B32..0B33; ORIYA 5764 0x0B34, // 0B34 ; UNKNOWN 5765 0x0B35, // 0B35..0B39; ORIYA 5766 0x0B3A, // 0B3A..0B3B; UNKNOWN 5767 0x0B3C, // 0B3C..0B44; ORIYA 5768 0x0B45, // 0B45..0B46; UNKNOWN 5769 0x0B47, // 0B47..0B48; ORIYA 5770 0x0B49, // 0B49..0B4A; UNKNOWN 5771 0x0B4B, // 0B4B..0B4D; ORIYA 5772 0x0B4E, // 0B4E..0B54; UNKNOWN 5773 0x0B55, // 0B55..0B57; ORIYA 5774 0x0B58, // 0B58..0B5B; UNKNOWN 5775 0x0B5C, // 0B5C..0B5D; ORIYA 5776 0x0B5E, // 0B5E ; UNKNOWN 5777 0x0B5F, // 0B5F..0B63; ORIYA 5778 0x0B64, // 0B64..0B65; UNKNOWN 5779 0x0B66, // 0B66..0B77; ORIYA 5780 0x0B78, // 0B78..0B81; UNKNOWN 5781 0x0B82, // 0B82..0B83; TAMIL 5782 0x0B84, // 0B84 ; UNKNOWN 5783 0x0B85, // 0B85..0B8A; TAMIL 5784 0x0B8B, // 0B8B..0B8D; UNKNOWN 5785 0x0B8E, // 0B8E..0B90; TAMIL 5786 0x0B91, // 0B91 ; UNKNOWN 5787 0x0B92, // 0B92..0B95; TAMIL 5788 0x0B96, // 0B96..0B98; UNKNOWN 5789 0x0B99, // 0B99..0B9A; TAMIL 5790 0x0B9B, // 0B9B ; UNKNOWN 5791 0x0B9C, // 0B9C ; TAMIL 5792 0x0B9D, // 0B9D ; UNKNOWN 5793 0x0B9E, // 0B9E..0B9F; TAMIL 5794 0x0BA0, // 0BA0..0BA2; UNKNOWN 5795 0x0BA3, // 0BA3..0BA4; TAMIL 5796 0x0BA5, // 0BA5..0BA7; UNKNOWN 5797 0x0BA8, // 0BA8..0BAA; TAMIL 5798 0x0BAB, // 0BAB..0BAD; UNKNOWN 5799 0x0BAE, // 0BAE..0BB9; TAMIL 5800 0x0BBA, // 0BBA..0BBD; UNKNOWN 5801 0x0BBE, // 0BBE..0BC2; TAMIL 5802 0x0BC3, // 0BC3..0BC5; UNKNOWN 5803 0x0BC6, // 0BC6..0BC8; TAMIL 5804 0x0BC9, // 0BC9 ; UNKNOWN 5805 0x0BCA, // 0BCA..0BCD; TAMIL 5806 0x0BCE, // 0BCE..0BCF; UNKNOWN 5807 0x0BD0, // 0BD0 ; TAMIL 5808 0x0BD1, // 0BD1..0BD6; UNKNOWN 5809 0x0BD7, // 0BD7 ; TAMIL 5810 0x0BD8, // 0BD8..0BE5; UNKNOWN 5811 0x0BE6, // 0BE6..0BFA; TAMIL 5812 0x0BFB, // 0BFB..0BFF; UNKNOWN 5813 0x0C00, // 0C00..0C0C; TELUGU 5814 0x0C0D, // 0C0D ; UNKNOWN 5815 0x0C0E, // 0C0E..0C10; TELUGU 5816 0x0C11, // 0C11 ; UNKNOWN 5817 0x0C12, // 0C12..0C28; TELUGU 5818 0x0C29, // 0C29 ; UNKNOWN 5819 0x0C2A, // 0C2A..0C39; TELUGU 5820 0x0C3A, // 0C3A..0C3B; UNKNOWN 5821 0x0C3C, // 0C3C..0C44; TELUGU 5822 0x0C45, // 0C45 ; UNKNOWN 5823 0x0C46, // 0C46..0C48; TELUGU 5824 0x0C49, // 0C49 ; UNKNOWN 5825 0x0C4A, // 0C4A..0C4D; TELUGU 5826 0x0C4E, // 0C4E..0C54; UNKNOWN 5827 0x0C55, // 0C55..0C56; TELUGU 5828 0x0C57, // 0C57 ; UNKNOWN 5829 0x0C58, // 0C58..0C5A; TELUGU 5830 0x0C5B, // 0C5B..0C5C; UNKNOWN 5831 0x0C5D, // 0C5D ; TELUGU 5832 0x0C5E, // 0C5E..0C5F; UNKNOWN 5833 0x0C60, // 0C60..0C63; TELUGU 5834 0x0C64, // 0C64..0C65; UNKNOWN 5835 0x0C66, // 0C66..0C6F; TELUGU 5836 0x0C70, // 0C70..0C76; UNKNOWN 5837 0x0C77, // 0C77..0C7F; TELUGU 5838 0x0C80, // 0C80..0C8C; KANNADA 5839 0x0C8D, // 0C8D ; UNKNOWN 5840 0x0C8E, // 0C8E..0C90; KANNADA 5841 0x0C91, // 0C91 ; UNKNOWN 5842 0x0C92, // 0C92..0CA8; KANNADA 5843 0x0CA9, // 0CA9 ; UNKNOWN 5844 0x0CAA, // 0CAA..0CB3; KANNADA 5845 0x0CB4, // 0CB4 ; UNKNOWN 5846 0x0CB5, // 0CB5..0CB9; KANNADA 5847 0x0CBA, // 0CBA..0CBB; UNKNOWN 5848 0x0CBC, // 0CBC..0CC4; KANNADA 5849 0x0CC5, // 0CC5 ; UNKNOWN 5850 0x0CC6, // 0CC6..0CC8; KANNADA 5851 0x0CC9, // 0CC9 ; UNKNOWN 5852 0x0CCA, // 0CCA..0CCD; KANNADA 5853 0x0CCE, // 0CCE..0CD4; UNKNOWN 5854 0x0CD5, // 0CD5..0CD6; KANNADA 5855 0x0CD7, // 0CD7..0CDC; UNKNOWN 5856 0x0CDD, // 0CDD..0CDE; KANNADA 5857 0x0CDF, // 0CDF ; UNKNOWN 5858 0x0CE0, // 0CE0..0CE3; KANNADA 5859 0x0CE4, // 0CE4..0CE5; UNKNOWN 5860 0x0CE6, // 0CE6..0CEF; KANNADA 5861 0x0CF0, // 0CF0 ; UNKNOWN 5862 0x0CF1, // 0CF1..0CF3; KANNADA 5863 0x0CF4, // 0CF4..0CFF; UNKNOWN 5864 0x0D00, // 0D00..0D0C; MALAYALAM 5865 0x0D0D, // 0D0D ; UNKNOWN 5866 0x0D0E, // 0D0E..0D10; MALAYALAM 5867 0x0D11, // 0D11 ; UNKNOWN 5868 0x0D12, // 0D12..0D44; MALAYALAM 5869 0x0D45, // 0D45 ; UNKNOWN 5870 0x0D46, // 0D46..0D48; MALAYALAM 5871 0x0D49, // 0D49 ; UNKNOWN 5872 0x0D4A, // 0D4A..0D4F; MALAYALAM 5873 0x0D50, // 0D50..0D53; UNKNOWN 5874 0x0D54, // 0D54..0D63; MALAYALAM 5875 0x0D64, // 0D64..0D65; UNKNOWN 5876 0x0D66, // 0D66..0D7F; MALAYALAM 5877 0x0D80, // 0D80 ; UNKNOWN 5878 0x0D81, // 0D81..0D83; SINHALA 5879 0x0D84, // 0D84 ; UNKNOWN 5880 0x0D85, // 0D85..0D96; SINHALA 5881 0x0D97, // 0D97..0D99; UNKNOWN 5882 0x0D9A, // 0D9A..0DB1; SINHALA 5883 0x0DB2, // 0DB2 ; UNKNOWN 5884 0x0DB3, // 0DB3..0DBB; SINHALA 5885 0x0DBC, // 0DBC ; UNKNOWN 5886 0x0DBD, // 0DBD ; SINHALA 5887 0x0DBE, // 0DBE..0DBF; UNKNOWN 5888 0x0DC0, // 0DC0..0DC6; SINHALA 5889 0x0DC7, // 0DC7..0DC9; UNKNOWN 5890 0x0DCA, // 0DCA ; SINHALA 5891 0x0DCB, // 0DCB..0DCE; UNKNOWN 5892 0x0DCF, // 0DCF..0DD4; SINHALA 5893 0x0DD5, // 0DD5 ; UNKNOWN 5894 0x0DD6, // 0DD6 ; SINHALA 5895 0x0DD7, // 0DD7 ; UNKNOWN 5896 0x0DD8, // 0DD8..0DDF; SINHALA 5897 0x0DE0, // 0DE0..0DE5; UNKNOWN 5898 0x0DE6, // 0DE6..0DEF; SINHALA 5899 0x0DF0, // 0DF0..0DF1; UNKNOWN 5900 0x0DF2, // 0DF2..0DF4; SINHALA 5901 0x0DF5, // 0DF5..0E00; UNKNOWN 5902 0x0E01, // 0E01..0E3A; THAI 5903 0x0E3B, // 0E3B..0E3E; UNKNOWN 5904 0x0E3F, // 0E3F ; COMMON 5905 0x0E40, // 0E40..0E5B; THAI 5906 0x0E5C, // 0E5C..0E80; UNKNOWN 5907 0x0E81, // 0E81..0E82; LAO 5908 0x0E83, // 0E83 ; UNKNOWN 5909 0x0E84, // 0E84 ; LAO 5910 0x0E85, // 0E85 ; UNKNOWN 5911 0x0E86, // 0E86..0E8A; LAO 5912 0x0E8B, // 0E8B ; UNKNOWN 5913 0x0E8C, // 0E8C..0EA3; LAO 5914 0x0EA4, // 0EA4 ; UNKNOWN 5915 0x0EA5, // 0EA5 ; LAO 5916 0x0EA6, // 0EA6 ; UNKNOWN 5917 0x0EA7, // 0EA7..0EBD; LAO 5918 0x0EBE, // 0EBE..0EBF; UNKNOWN 5919 0x0EC0, // 0EC0..0EC4; LAO 5920 0x0EC5, // 0EC5 ; UNKNOWN 5921 0x0EC6, // 0EC6 ; LAO 5922 0x0EC7, // 0EC7 ; UNKNOWN 5923 0x0EC8, // 0EC8..0ECE; LAO 5924 0x0ECF, // 0ECF ; UNKNOWN 5925 0x0ED0, // 0ED0..0ED9; LAO 5926 0x0EDA, // 0EDA..0EDB; UNKNOWN 5927 0x0EDC, // 0EDC..0EDF; LAO 5928 0x0EE0, // 0EE0..0EFF; UNKNOWN 5929 0x0F00, // 0F00..0F47; TIBETAN 5930 0x0F48, // 0F48 ; UNKNOWN 5931 0x0F49, // 0F49..0F6C; TIBETAN 5932 0x0F6D, // 0F6D..0F70; UNKNOWN 5933 0x0F71, // 0F71..0F97; TIBETAN 5934 0x0F98, // 0F98 ; UNKNOWN 5935 0x0F99, // 0F99..0FBC; TIBETAN 5936 0x0FBD, // 0FBD ; UNKNOWN 5937 0x0FBE, // 0FBE..0FCC; TIBETAN 5938 0x0FCD, // 0FCD ; UNKNOWN 5939 0x0FCE, // 0FCE..0FD4; TIBETAN 5940 0x0FD5, // 0FD5..0FD8; COMMON 5941 0x0FD9, // 0FD9..0FDA; TIBETAN 5942 0x0FDB, // 0FDB..0FFF; UNKNOWN 5943 0x1000, // 1000..109F; MYANMAR 5944 0x10A0, // 10A0..10C5; GEORGIAN 5945 0x10C6, // 10C6 ; UNKNOWN 5946 0x10C7, // 10C7 ; GEORGIAN 5947 0x10C8, // 10C8..10CC; UNKNOWN 5948 0x10CD, // 10CD ; GEORGIAN 5949 0x10CE, // 10CE..10CF; UNKNOWN 5950 0x10D0, // 10D0..10FA; GEORGIAN 5951 0x10FB, // 10FB ; COMMON 5952 0x10FC, // 10FC..10FF; GEORGIAN 5953 0x1100, // 1100..11FF; HANGUL 5954 0x1200, // 1200..1248; ETHIOPIC 5955 0x1249, // 1249 ; UNKNOWN 5956 0x124A, // 124A..124D; ETHIOPIC 5957 0x124E, // 124E..124F; UNKNOWN 5958 0x1250, // 1250..1256; ETHIOPIC 5959 0x1257, // 1257 ; UNKNOWN 5960 0x1258, // 1258 ; ETHIOPIC 5961 0x1259, // 1259 ; UNKNOWN 5962 0x125A, // 125A..125D; ETHIOPIC 5963 0x125E, // 125E..125F; UNKNOWN 5964 0x1260, // 1260..1288; ETHIOPIC 5965 0x1289, // 1289 ; UNKNOWN 5966 0x128A, // 128A..128D; ETHIOPIC 5967 0x128E, // 128E..128F; UNKNOWN 5968 0x1290, // 1290..12B0; ETHIOPIC 5969 0x12B1, // 12B1 ; UNKNOWN 5970 0x12B2, // 12B2..12B5; ETHIOPIC 5971 0x12B6, // 12B6..12B7; UNKNOWN 5972 0x12B8, // 12B8..12BE; ETHIOPIC 5973 0x12BF, // 12BF ; UNKNOWN 5974 0x12C0, // 12C0 ; ETHIOPIC 5975 0x12C1, // 12C1 ; UNKNOWN 5976 0x12C2, // 12C2..12C5; ETHIOPIC 5977 0x12C6, // 12C6..12C7; UNKNOWN 5978 0x12C8, // 12C8..12D6; ETHIOPIC 5979 0x12D7, // 12D7 ; UNKNOWN 5980 0x12D8, // 12D8..1310; ETHIOPIC 5981 0x1311, // 1311 ; UNKNOWN 5982 0x1312, // 1312..1315; ETHIOPIC 5983 0x1316, // 1316..1317; UNKNOWN 5984 0x1318, // 1318..135A; ETHIOPIC 5985 0x135B, // 135B..135C; UNKNOWN 5986 0x135D, // 135D..137C; ETHIOPIC 5987 0x137D, // 137D..137F; UNKNOWN 5988 0x1380, // 1380..1399; ETHIOPIC 5989 0x139A, // 139A..139F; UNKNOWN 5990 0x13A0, // 13A0..13F5; CHEROKEE 5991 0x13F6, // 13F6..13F7; UNKNOWN 5992 0x13F8, // 13F8..13FD; CHEROKEE 5993 0x13FE, // 13FE..13FF; UNKNOWN 5994 0x1400, // 1400..167F; CANADIAN_ABORIGINAL 5995 0x1680, // 1680..169C; OGHAM 5996 0x169D, // 169D..169F; UNKNOWN 5997 0x16A0, // 16A0..16EA; RUNIC 5998 0x16EB, // 16EB..16ED; COMMON 5999 0x16EE, // 16EE..16F8; RUNIC 6000 0x16F9, // 16F9..16FF; UNKNOWN 6001 0x1700, // 1700..1715; TAGALOG 6002 0x1716, // 1716..171E; UNKNOWN 6003 0x171F, // 171F ; TAGALOG 6004 0x1720, // 1720..1734; HANUNOO 6005 0x1735, // 1735..1736; COMMON 6006 0x1737, // 1737..173F; UNKNOWN 6007 0x1740, // 1740..1753; BUHID 6008 0x1754, // 1754..175F; UNKNOWN 6009 0x1760, // 1760..176C; TAGBANWA 6010 0x176D, // 176D ; UNKNOWN 6011 0x176E, // 176E..1770; TAGBANWA 6012 0x1771, // 1771 ; UNKNOWN 6013 0x1772, // 1772..1773; TAGBANWA 6014 0x1774, // 1774..177F; UNKNOWN 6015 0x1780, // 1780..17DD; KHMER 6016 0x17DE, // 17DE..17DF; UNKNOWN 6017 0x17E0, // 17E0..17E9; KHMER 6018 0x17EA, // 17EA..17EF; UNKNOWN 6019 0x17F0, // 17F0..17F9; KHMER 6020 0x17FA, // 17FA..17FF; UNKNOWN 6021 0x1800, // 1800..1801; MONGOLIAN 6022 0x1802, // 1802..1803; COMMON 6023 0x1804, // 1804 ; MONGOLIAN 6024 0x1805, // 1805 ; COMMON 6025 0x1806, // 1806..1819; MONGOLIAN 6026 0x181A, // 181A..181F; UNKNOWN 6027 0x1820, // 1820..1878; MONGOLIAN 6028 0x1879, // 1879..187F; UNKNOWN 6029 0x1880, // 1880..18AA; MONGOLIAN 6030 0x18AB, // 18AB..18AF; UNKNOWN 6031 0x18B0, // 18B0..18F5; CANADIAN_ABORIGINAL 6032 0x18F6, // 18F6..18FF; UNKNOWN 6033 0x1900, // 1900..191E; LIMBU 6034 0x191F, // 191F ; UNKNOWN 6035 0x1920, // 1920..192B; LIMBU 6036 0x192C, // 192C..192F; UNKNOWN 6037 0x1930, // 1930..193B; LIMBU 6038 0x193C, // 193C..193F; UNKNOWN 6039 0x1940, // 1940 ; LIMBU 6040 0x1941, // 1941..1943; UNKNOWN 6041 0x1944, // 1944..194F; LIMBU 6042 0x1950, // 1950..196D; TAI_LE 6043 0x196E, // 196E..196F; UNKNOWN 6044 0x1970, // 1970..1974; TAI_LE 6045 0x1975, // 1975..197F; UNKNOWN 6046 0x1980, // 1980..19AB; NEW_TAI_LUE 6047 0x19AC, // 19AC..19AF; UNKNOWN 6048 0x19B0, // 19B0..19C9; NEW_TAI_LUE 6049 0x19CA, // 19CA..19CF; UNKNOWN 6050 0x19D0, // 19D0..19DA; NEW_TAI_LUE 6051 0x19DB, // 19DB..19DD; UNKNOWN 6052 0x19DE, // 19DE..19DF; NEW_TAI_LUE 6053 0x19E0, // 19E0..19FF; KHMER 6054 0x1A00, // 1A00..1A1B; BUGINESE 6055 0x1A1C, // 1A1C..1A1D; UNKNOWN 6056 0x1A1E, // 1A1E..1A1F; BUGINESE 6057 0x1A20, // 1A20..1A5E; TAI_THAM 6058 0x1A5F, // 1A5F ; UNKNOWN 6059 0x1A60, // 1A60..1A7C; TAI_THAM 6060 0x1A7D, // 1A7D..1A7E; UNKNOWN 6061 0x1A7F, // 1A7F..1A89; TAI_THAM 6062 0x1A8A, // 1A8A..1A8F; UNKNOWN 6063 0x1A90, // 1A90..1A99; TAI_THAM 6064 0x1A9A, // 1A9A..1A9F; UNKNOWN 6065 0x1AA0, // 1AA0..1AAD; TAI_THAM 6066 0x1AAE, // 1AAE..1AAF; UNKNOWN 6067 0x1AB0, // 1AB0..1ACE; INHERITED 6068 0x1ACF, // 1ACF..1AFF; UNKNOWN 6069 0x1B00, // 1B00..1B4C; BALINESE 6070 0x1B4D, // 1B4D ; UNKNOWN 6071 0x1B4E, // 1B4E..1B7F; BALINESE 6072 0x1B80, // 1B80..1BBF; SUNDANESE 6073 0x1BC0, // 1BC0..1BF3; BATAK 6074 0x1BF4, // 1BF4..1BFB; UNKNOWN 6075 0x1BFC, // 1BFC..1BFF; BATAK 6076 0x1C00, // 1C00..1C37; LEPCHA 6077 0x1C38, // 1C38..1C3A; UNKNOWN 6078 0x1C3B, // 1C3B..1C49; LEPCHA 6079 0x1C4A, // 1C4A..1C4C; UNKNOWN 6080 0x1C4D, // 1C4D..1C4F; LEPCHA 6081 0x1C50, // 1C50..1C7F; OL_CHIKI 6082 0x1C80, // 1C80..1C8A; CYRILLIC 6083 0x1C8B, // 1C8B..1C8F; UNKNOWN 6084 0x1C90, // 1C90..1CBA; GEORGIAN 6085 0x1CBB, // 1CBB..1CBC; UNKNOWN 6086 0x1CBD, // 1CBD..1CBF; GEORGIAN 6087 0x1CC0, // 1CC0..1CC7; SUNDANESE 6088 0x1CC8, // 1CC8..1CCF; UNKNOWN 6089 0x1CD0, // 1CD0..1CD2; INHERITED 6090 0x1CD3, // 1CD3 ; COMMON 6091 0x1CD4, // 1CD4..1CE0; INHERITED 6092 0x1CE1, // 1CE1 ; COMMON 6093 0x1CE2, // 1CE2..1CE8; INHERITED 6094 0x1CE9, // 1CE9..1CEC; COMMON 6095 0x1CED, // 1CED ; INHERITED 6096 0x1CEE, // 1CEE..1CF3; COMMON 6097 0x1CF4, // 1CF4 ; INHERITED 6098 0x1CF5, // 1CF5..1CF7; COMMON 6099 0x1CF8, // 1CF8..1CF9; INHERITED 6100 0x1CFA, // 1CFA ; COMMON 6101 0x1CFB, // 1CFB..1CFF; UNKNOWN 6102 0x1D00, // 1D00..1D25; LATIN 6103 0x1D26, // 1D26..1D2A; GREEK 6104 0x1D2B, // 1D2B ; CYRILLIC 6105 0x1D2C, // 1D2C..1D5C; LATIN 6106 0x1D5D, // 1D5D..1D61; GREEK 6107 0x1D62, // 1D62..1D65; LATIN 6108 0x1D66, // 1D66..1D6A; GREEK 6109 0x1D6B, // 1D6B..1D77; LATIN 6110 0x1D78, // 1D78 ; CYRILLIC 6111 0x1D79, // 1D79..1DBE; LATIN 6112 0x1DBF, // 1DBF ; GREEK 6113 0x1DC0, // 1DC0..1DFF; INHERITED 6114 0x1E00, // 1E00..1EFF; LATIN 6115 0x1F00, // 1F00..1F15; GREEK 6116 0x1F16, // 1F16..1F17; UNKNOWN 6117 0x1F18, // 1F18..1F1D; GREEK 6118 0x1F1E, // 1F1E..1F1F; UNKNOWN 6119 0x1F20, // 1F20..1F45; GREEK 6120 0x1F46, // 1F46..1F47; UNKNOWN 6121 0x1F48, // 1F48..1F4D; GREEK 6122 0x1F4E, // 1F4E..1F4F; UNKNOWN 6123 0x1F50, // 1F50..1F57; GREEK 6124 0x1F58, // 1F58 ; UNKNOWN 6125 0x1F59, // 1F59 ; GREEK 6126 0x1F5A, // 1F5A ; UNKNOWN 6127 0x1F5B, // 1F5B ; GREEK 6128 0x1F5C, // 1F5C ; UNKNOWN 6129 0x1F5D, // 1F5D ; GREEK 6130 0x1F5E, // 1F5E ; UNKNOWN 6131 0x1F5F, // 1F5F..1F7D; GREEK 6132 0x1F7E, // 1F7E..1F7F; UNKNOWN 6133 0x1F80, // 1F80..1FB4; GREEK 6134 0x1FB5, // 1FB5 ; UNKNOWN 6135 0x1FB6, // 1FB6..1FC4; GREEK 6136 0x1FC5, // 1FC5 ; UNKNOWN 6137 0x1FC6, // 1FC6..1FD3; GREEK 6138 0x1FD4, // 1FD4..1FD5; UNKNOWN 6139 0x1FD6, // 1FD6..1FDB; GREEK 6140 0x1FDC, // 1FDC ; UNKNOWN 6141 0x1FDD, // 1FDD..1FEF; GREEK 6142 0x1FF0, // 1FF0..1FF1; UNKNOWN 6143 0x1FF2, // 1FF2..1FF4; GREEK 6144 0x1FF5, // 1FF5 ; UNKNOWN 6145 0x1FF6, // 1FF6..1FFE; GREEK 6146 0x1FFF, // 1FFF ; UNKNOWN 6147 0x2000, // 2000..200B; COMMON 6148 0x200C, // 200C..200D; INHERITED 6149 0x200E, // 200E..2064; COMMON 6150 0x2065, // 2065 ; UNKNOWN 6151 0x2066, // 2066..2070; COMMON 6152 0x2071, // 2071 ; LATIN 6153 0x2072, // 2072..2073; UNKNOWN 6154 0x2074, // 2074..207E; COMMON 6155 0x207F, // 207F ; LATIN 6156 0x2080, // 2080..208E; COMMON 6157 0x208F, // 208F ; UNKNOWN 6158 0x2090, // 2090..209C; LATIN 6159 0x209D, // 209D..209F; UNKNOWN 6160 0x20A0, // 20A0..20C0; COMMON 6161 0x20C1, // 20C1..20CF; UNKNOWN 6162 0x20D0, // 20D0..20F0; INHERITED 6163 0x20F1, // 20F1..20FF; UNKNOWN 6164 0x2100, // 2100..2125; COMMON 6165 0x2126, // 2126 ; GREEK 6166 0x2127, // 2127..2129; COMMON 6167 0x212A, // 212A..212B; LATIN 6168 0x212C, // 212C..2131; COMMON 6169 0x2132, // 2132 ; LATIN 6170 0x2133, // 2133..214D; COMMON 6171 0x214E, // 214E ; LATIN 6172 0x214F, // 214F..215F; COMMON 6173 0x2160, // 2160..2188; LATIN 6174 0x2189, // 2189..218B; COMMON 6175 0x218C, // 218C..218F; UNKNOWN 6176 0x2190, // 2190..2429; COMMON 6177 0x242A, // 242A..243F; UNKNOWN 6178 0x2440, // 2440..244A; COMMON 6179 0x244B, // 244B..245F; UNKNOWN 6180 0x2460, // 2460..27FF; COMMON 6181 0x2800, // 2800..28FF; BRAILLE 6182 0x2900, // 2900..2B73; COMMON 6183 0x2B74, // 2B74..2B75; UNKNOWN 6184 0x2B76, // 2B76..2B95; COMMON 6185 0x2B96, // 2B96 ; UNKNOWN 6186 0x2B97, // 2B97..2BFF; COMMON 6187 0x2C00, // 2C00..2C5F; GLAGOLITIC 6188 0x2C60, // 2C60..2C7F; LATIN 6189 0x2C80, // 2C80..2CF3; COPTIC 6190 0x2CF4, // 2CF4..2CF8; UNKNOWN 6191 0x2CF9, // 2CF9..2CFF; COPTIC 6192 0x2D00, // 2D00..2D25; GEORGIAN 6193 0x2D26, // 2D26 ; UNKNOWN 6194 0x2D27, // 2D27 ; GEORGIAN 6195 0x2D28, // 2D28..2D2C; UNKNOWN 6196 0x2D2D, // 2D2D ; GEORGIAN 6197 0x2D2E, // 2D2E..2D2F; UNKNOWN 6198 0x2D30, // 2D30..2D67; TIFINAGH 6199 0x2D68, // 2D68..2D6E; UNKNOWN 6200 0x2D6F, // 2D6F..2D70; TIFINAGH 6201 0x2D71, // 2D71..2D7E; UNKNOWN 6202 0x2D7F, // 2D7F ; TIFINAGH 6203 0x2D80, // 2D80..2D96; ETHIOPIC 6204 0x2D97, // 2D97..2D9F; UNKNOWN 6205 0x2DA0, // 2DA0..2DA6; ETHIOPIC 6206 0x2DA7, // 2DA7 ; UNKNOWN 6207 0x2DA8, // 2DA8..2DAE; ETHIOPIC 6208 0x2DAF, // 2DAF ; UNKNOWN 6209 0x2DB0, // 2DB0..2DB6; ETHIOPIC 6210 0x2DB7, // 2DB7 ; UNKNOWN 6211 0x2DB8, // 2DB8..2DBE; ETHIOPIC 6212 0x2DBF, // 2DBF ; UNKNOWN 6213 0x2DC0, // 2DC0..2DC6; ETHIOPIC 6214 0x2DC7, // 2DC7 ; UNKNOWN 6215 0x2DC8, // 2DC8..2DCE; ETHIOPIC 6216 0x2DCF, // 2DCF ; UNKNOWN 6217 0x2DD0, // 2DD0..2DD6; ETHIOPIC 6218 0x2DD7, // 2DD7 ; UNKNOWN 6219 0x2DD8, // 2DD8..2DDE; ETHIOPIC 6220 0x2DDF, // 2DDF ; UNKNOWN 6221 0x2DE0, // 2DE0..2DFF; CYRILLIC 6222 0x2E00, // 2E00..2E5D; COMMON 6223 0x2E5E, // 2E5E..2E7F; UNKNOWN 6224 0x2E80, // 2E80..2E99; HAN 6225 0x2E9A, // 2E9A ; UNKNOWN 6226 0x2E9B, // 2E9B..2EF3; HAN 6227 0x2EF4, // 2EF4..2EFF; UNKNOWN 6228 0x2F00, // 2F00..2FD5; HAN 6229 0x2FD6, // 2FD6..2FEF; UNKNOWN 6230 0x2FF0, // 2FF0..3004; COMMON 6231 0x3005, // 3005 ; HAN 6232 0x3006, // 3006 ; COMMON 6233 0x3007, // 3007 ; HAN 6234 0x3008, // 3008..3020; COMMON 6235 0x3021, // 3021..3029; HAN 6236 0x302A, // 302A..302D; INHERITED 6237 0x302E, // 302E..302F; HANGUL 6238 0x3030, // 3030..3037; COMMON 6239 0x3038, // 3038..303B; HAN 6240 0x303C, // 303C..303F; COMMON 6241 0x3040, // 3040 ; UNKNOWN 6242 0x3041, // 3041..3096; HIRAGANA 6243 0x3097, // 3097..3098; UNKNOWN 6244 0x3099, // 3099..309A; INHERITED 6245 0x309B, // 309B..309C; COMMON 6246 0x309D, // 309D..309F; HIRAGANA 6247 0x30A0, // 30A0 ; COMMON 6248 0x30A1, // 30A1..30FA; KATAKANA 6249 0x30FB, // 30FB..30FC; COMMON 6250 0x30FD, // 30FD..30FF; KATAKANA 6251 0x3100, // 3100..3104; UNKNOWN 6252 0x3105, // 3105..312F; BOPOMOFO 6253 0x3130, // 3130 ; UNKNOWN 6254 0x3131, // 3131..318E; HANGUL 6255 0x318F, // 318F ; UNKNOWN 6256 0x3190, // 3190..319F; COMMON 6257 0x31A0, // 31A0..31BF; BOPOMOFO 6258 0x31C0, // 31C0..31E5; COMMON 6259 0x31E6, // 31E6..31EE; UNKNOWN 6260 0x31EF, // 31EF ; COMMON 6261 0x31F0, // 31F0..31FF; KATAKANA 6262 0x3200, // 3200..321E; HANGUL 6263 0x321F, // 321F ; UNKNOWN 6264 0x3220, // 3220..325F; COMMON 6265 0x3260, // 3260..327E; HANGUL 6266 0x327F, // 327F..32CF; COMMON 6267 0x32D0, // 32D0..32FE; KATAKANA 6268 0x32FF, // 32FF ; COMMON 6269 0x3300, // 3300..3357; KATAKANA 6270 0x3358, // 3358..33FF; COMMON 6271 0x3400, // 3400..4DBF; HAN 6272 0x4DC0, // 4DC0..4DFF; COMMON 6273 0x4E00, // 4E00..9FFF; HAN 6274 0xA000, // A000..A48C; YI 6275 0xA48D, // A48D..A48F; UNKNOWN 6276 0xA490, // A490..A4C6; YI 6277 0xA4C7, // A4C7..A4CF; UNKNOWN 6278 0xA4D0, // A4D0..A4FF; LISU 6279 0xA500, // A500..A62B; VAI 6280 0xA62C, // A62C..A63F; UNKNOWN 6281 0xA640, // A640..A69F; CYRILLIC 6282 0xA6A0, // A6A0..A6F7; BAMUM 6283 0xA6F8, // A6F8..A6FF; UNKNOWN 6284 0xA700, // A700..A721; COMMON 6285 0xA722, // A722..A787; LATIN 6286 0xA788, // A788..A78A; COMMON 6287 0xA78B, // A78B..A7CD; LATIN 6288 0xA7CE, // A7CE..A7CF; UNKNOWN 6289 0xA7D0, // A7D0..A7D1; LATIN 6290 0xA7D2, // A7D2 ; UNKNOWN 6291 0xA7D3, // A7D3 ; LATIN 6292 0xA7D4, // A7D4 ; UNKNOWN 6293 0xA7D5, // A7D5..A7DC; LATIN 6294 0xA7DD, // A7DD..A7F1; UNKNOWN 6295 0xA7F2, // A7F2..A7FF; LATIN 6296 0xA800, // A800..A82C; SYLOTI_NAGRI 6297 0xA82D, // A82D..A82F; UNKNOWN 6298 0xA830, // A830..A839; COMMON 6299 0xA83A, // A83A..A83F; UNKNOWN 6300 0xA840, // A840..A877; PHAGS_PA 6301 0xA878, // A878..A87F; UNKNOWN 6302 0xA880, // A880..A8C5; SAURASHTRA 6303 0xA8C6, // A8C6..A8CD; UNKNOWN 6304 0xA8CE, // A8CE..A8D9; SAURASHTRA 6305 0xA8DA, // A8DA..A8DF; UNKNOWN 6306 0xA8E0, // A8E0..A8FF; DEVANAGARI 6307 0xA900, // A900..A92D; KAYAH_LI 6308 0xA92E, // A92E ; COMMON 6309 0xA92F, // A92F ; KAYAH_LI 6310 0xA930, // A930..A953; REJANG 6311 0xA954, // A954..A95E; UNKNOWN 6312 0xA95F, // A95F ; REJANG 6313 0xA960, // A960..A97C; HANGUL 6314 0xA97D, // A97D..A97F; UNKNOWN 6315 0xA980, // A980..A9CD; JAVANESE 6316 0xA9CE, // A9CE ; UNKNOWN 6317 0xA9CF, // A9CF ; COMMON 6318 0xA9D0, // A9D0..A9D9; JAVANESE 6319 0xA9DA, // A9DA..A9DD; UNKNOWN 6320 0xA9DE, // A9DE..A9DF; JAVANESE 6321 0xA9E0, // A9E0..A9FE; MYANMAR 6322 0xA9FF, // A9FF ; UNKNOWN 6323 0xAA00, // AA00..AA36; CHAM 6324 0xAA37, // AA37..AA3F; UNKNOWN 6325 0xAA40, // AA40..AA4D; CHAM 6326 0xAA4E, // AA4E..AA4F; UNKNOWN 6327 0xAA50, // AA50..AA59; CHAM 6328 0xAA5A, // AA5A..AA5B; UNKNOWN 6329 0xAA5C, // AA5C..AA5F; CHAM 6330 0xAA60, // AA60..AA7F; MYANMAR 6331 0xAA80, // AA80..AAC2; TAI_VIET 6332 0xAAC3, // AAC3..AADA; UNKNOWN 6333 0xAADB, // AADB..AADF; TAI_VIET 6334 0xAAE0, // AAE0..AAF6; MEETEI_MAYEK 6335 0xAAF7, // AAF7..AB00; UNKNOWN 6336 0xAB01, // AB01..AB06; ETHIOPIC 6337 0xAB07, // AB07..AB08; UNKNOWN 6338 0xAB09, // AB09..AB0E; ETHIOPIC 6339 0xAB0F, // AB0F..AB10; UNKNOWN 6340 0xAB11, // AB11..AB16; ETHIOPIC 6341 0xAB17, // AB17..AB1F; UNKNOWN 6342 0xAB20, // AB20..AB26; ETHIOPIC 6343 0xAB27, // AB27 ; UNKNOWN 6344 0xAB28, // AB28..AB2E; ETHIOPIC 6345 0xAB2F, // AB2F ; UNKNOWN 6346 0xAB30, // AB30..AB5A; LATIN 6347 0xAB5B, // AB5B ; COMMON 6348 0xAB5C, // AB5C..AB64; LATIN 6349 0xAB65, // AB65 ; GREEK 6350 0xAB66, // AB66..AB69; LATIN 6351 0xAB6A, // AB6A..AB6B; COMMON 6352 0xAB6C, // AB6C..AB6F; UNKNOWN 6353 0xAB70, // AB70..ABBF; CHEROKEE 6354 0xABC0, // ABC0..ABED; MEETEI_MAYEK 6355 0xABEE, // ABEE..ABEF; UNKNOWN 6356 0xABF0, // ABF0..ABF9; MEETEI_MAYEK 6357 0xABFA, // ABFA..ABFF; UNKNOWN 6358 0xAC00, // AC00..D7A3; HANGUL 6359 0xD7A4, // D7A4..D7AF; UNKNOWN 6360 0xD7B0, // D7B0..D7C6; HANGUL 6361 0xD7C7, // D7C7..D7CA; UNKNOWN 6362 0xD7CB, // D7CB..D7FB; HANGUL 6363 0xD7FC, // D7FC..F8FF; UNKNOWN 6364 0xF900, // F900..FA6D; HAN 6365 0xFA6E, // FA6E..FA6F; UNKNOWN 6366 0xFA70, // FA70..FAD9; HAN 6367 0xFADA, // FADA..FAFF; UNKNOWN 6368 0xFB00, // FB00..FB06; LATIN 6369 0xFB07, // FB07..FB12; UNKNOWN 6370 0xFB13, // FB13..FB17; ARMENIAN 6371 0xFB18, // FB18..FB1C; UNKNOWN 6372 0xFB1D, // FB1D..FB36; HEBREW 6373 0xFB37, // FB37 ; UNKNOWN 6374 0xFB38, // FB38..FB3C; HEBREW 6375 0xFB3D, // FB3D ; UNKNOWN 6376 0xFB3E, // FB3E ; HEBREW 6377 0xFB3F, // FB3F ; UNKNOWN 6378 0xFB40, // FB40..FB41; HEBREW 6379 0xFB42, // FB42 ; UNKNOWN 6380 0xFB43, // FB43..FB44; HEBREW 6381 0xFB45, // FB45 ; UNKNOWN 6382 0xFB46, // FB46..FB4F; HEBREW 6383 0xFB50, // FB50..FBC2; ARABIC 6384 0xFBC3, // FBC3..FBD2; UNKNOWN 6385 0xFBD3, // FBD3..FD3D; ARABIC 6386 0xFD3E, // FD3E..FD3F; COMMON 6387 0xFD40, // FD40..FD8F; ARABIC 6388 0xFD90, // FD90..FD91; UNKNOWN 6389 0xFD92, // FD92..FDC7; ARABIC 6390 0xFDC8, // FDC8..FDCE; UNKNOWN 6391 0xFDCF, // FDCF ; ARABIC 6392 0xFDD0, // FDD0..FDEF; UNKNOWN 6393 0xFDF0, // FDF0..FDFF; ARABIC 6394 0xFE00, // FE00..FE0F; INHERITED 6395 0xFE10, // FE10..FE19; COMMON 6396 0xFE1A, // FE1A..FE1F; UNKNOWN 6397 0xFE20, // FE20..FE2D; INHERITED 6398 0xFE2E, // FE2E..FE2F; CYRILLIC 6399 0xFE30, // FE30..FE52; COMMON 6400 0xFE53, // FE53 ; UNKNOWN 6401 0xFE54, // FE54..FE66; COMMON 6402 0xFE67, // FE67 ; UNKNOWN 6403 0xFE68, // FE68..FE6B; COMMON 6404 0xFE6C, // FE6C..FE6F; UNKNOWN 6405 0xFE70, // FE70..FE74; ARABIC 6406 0xFE75, // FE75 ; UNKNOWN 6407 0xFE76, // FE76..FEFC; ARABIC 6408 0xFEFD, // FEFD..FEFE; UNKNOWN 6409 0xFEFF, // FEFF ; COMMON 6410 0xFF00, // FF00 ; UNKNOWN 6411 0xFF01, // FF01..FF20; COMMON 6412 0xFF21, // FF21..FF3A; LATIN 6413 0xFF3B, // FF3B..FF40; COMMON 6414 0xFF41, // FF41..FF5A; LATIN 6415 0xFF5B, // FF5B..FF65; COMMON 6416 0xFF66, // FF66..FF6F; KATAKANA 6417 0xFF70, // FF70 ; COMMON 6418 0xFF71, // FF71..FF9D; KATAKANA 6419 0xFF9E, // FF9E..FF9F; COMMON 6420 0xFFA0, // FFA0..FFBE; HANGUL 6421 0xFFBF, // FFBF..FFC1; UNKNOWN 6422 0xFFC2, // FFC2..FFC7; HANGUL 6423 0xFFC8, // FFC8..FFC9; UNKNOWN 6424 0xFFCA, // FFCA..FFCF; HANGUL 6425 0xFFD0, // FFD0..FFD1; UNKNOWN 6426 0xFFD2, // FFD2..FFD7; HANGUL 6427 0xFFD8, // FFD8..FFD9; UNKNOWN 6428 0xFFDA, // FFDA..FFDC; HANGUL 6429 0xFFDD, // FFDD..FFDF; UNKNOWN 6430 0xFFE0, // FFE0..FFE6; COMMON 6431 0xFFE7, // FFE7 ; UNKNOWN 6432 0xFFE8, // FFE8..FFEE; COMMON 6433 0xFFEF, // FFEF..FFF8; UNKNOWN 6434 0xFFF9, // FFF9..FFFD; COMMON 6435 0xFFFE, // FFFE..FFFF; UNKNOWN 6436 0x10000, // 10000..1000B; LINEAR_B 6437 0x1000C, // 1000C ; UNKNOWN 6438 0x1000D, // 1000D..10026; LINEAR_B 6439 0x10027, // 10027 ; UNKNOWN 6440 0x10028, // 10028..1003A; LINEAR_B 6441 0x1003B, // 1003B ; UNKNOWN 6442 0x1003C, // 1003C..1003D; LINEAR_B 6443 0x1003E, // 1003E ; UNKNOWN 6444 0x1003F, // 1003F..1004D; LINEAR_B 6445 0x1004E, // 1004E..1004F; UNKNOWN 6446 0x10050, // 10050..1005D; LINEAR_B 6447 0x1005E, // 1005E..1007F; UNKNOWN 6448 0x10080, // 10080..100FA; LINEAR_B 6449 0x100FB, // 100FB..100FF; UNKNOWN 6450 0x10100, // 10100..10102; COMMON 6451 0x10103, // 10103..10106; UNKNOWN 6452 0x10107, // 10107..10133; COMMON 6453 0x10134, // 10134..10136; UNKNOWN 6454 0x10137, // 10137..1013F; COMMON 6455 0x10140, // 10140..1018E; GREEK 6456 0x1018F, // 1018F ; UNKNOWN 6457 0x10190, // 10190..1019C; COMMON 6458 0x1019D, // 1019D..1019F; UNKNOWN 6459 0x101A0, // 101A0 ; GREEK 6460 0x101A1, // 101A1..101CF; UNKNOWN 6461 0x101D0, // 101D0..101FC; COMMON 6462 0x101FD, // 101FD ; INHERITED 6463 0x101FE, // 101FE..1027F; UNKNOWN 6464 0x10280, // 10280..1029C; LYCIAN 6465 0x1029D, // 1029D..1029F; UNKNOWN 6466 0x102A0, // 102A0..102D0; CARIAN 6467 0x102D1, // 102D1..102DF; UNKNOWN 6468 0x102E0, // 102E0 ; INHERITED 6469 0x102E1, // 102E1..102FB; COMMON 6470 0x102FC, // 102FC..102FF; UNKNOWN 6471 0x10300, // 10300..10323; OLD_ITALIC 6472 0x10324, // 10324..1032C; UNKNOWN 6473 0x1032D, // 1032D..1032F; OLD_ITALIC 6474 0x10330, // 10330..1034A; GOTHIC 6475 0x1034B, // 1034B..1034F; UNKNOWN 6476 0x10350, // 10350..1037A; OLD_PERMIC 6477 0x1037B, // 1037B..1037F; UNKNOWN 6478 0x10380, // 10380..1039D; UGARITIC 6479 0x1039E, // 1039E ; UNKNOWN 6480 0x1039F, // 1039F ; UGARITIC 6481 0x103A0, // 103A0..103C3; OLD_PERSIAN 6482 0x103C4, // 103C4..103C7; UNKNOWN 6483 0x103C8, // 103C8..103D5; OLD_PERSIAN 6484 0x103D6, // 103D6..103FF; UNKNOWN 6485 0x10400, // 10400..1044F; DESERET 6486 0x10450, // 10450..1047F; SHAVIAN 6487 0x10480, // 10480..1049D; OSMANYA 6488 0x1049E, // 1049E..1049F; UNKNOWN 6489 0x104A0, // 104A0..104A9; OSMANYA 6490 0x104AA, // 104AA..104AF; UNKNOWN 6491 0x104B0, // 104B0..104D3; OSAGE 6492 0x104D4, // 104D4..104D7; UNKNOWN 6493 0x104D8, // 104D8..104FB; OSAGE 6494 0x104FC, // 104FC..104FF; UNKNOWN 6495 0x10500, // 10500..10527; ELBASAN 6496 0x10528, // 10528..1052F; UNKNOWN 6497 0x10530, // 10530..10563; CAUCASIAN_ALBANIAN 6498 0x10564, // 10564..1056E; UNKNOWN 6499 0x1056F, // 1056F ; CAUCASIAN_ALBANIAN 6500 0x10570, // 10570..1057A; VITHKUQI 6501 0x1057B, // 1057B ; UNKNOWN 6502 0x1057C, // 1057C..1058A; VITHKUQI 6503 0x1058B, // 1058B ; UNKNOWN 6504 0x1058C, // 1058C..10592; VITHKUQI 6505 0x10593, // 10593 ; UNKNOWN 6506 0x10594, // 10594..10595; VITHKUQI 6507 0x10596, // 10596 ; UNKNOWN 6508 0x10597, // 10597..105A1; VITHKUQI 6509 0x105A2, // 105A2 ; UNKNOWN 6510 0x105A3, // 105A3..105B1; VITHKUQI 6511 0x105B2, // 105B2 ; UNKNOWN 6512 0x105B3, // 105B3..105B9; VITHKUQI 6513 0x105BA, // 105BA ; UNKNOWN 6514 0x105BB, // 105BB..105BC; VITHKUQI 6515 0x105BD, // 105BD..105BF; UNKNOWN 6516 0x105C0, // 105C0..105F3; TODHRI 6517 0x105F4, // 105F4..105FF; UNKNOWN 6518 0x10600, // 10600..10736; LINEAR_A 6519 0x10737, // 10737..1073F; UNKNOWN 6520 0x10740, // 10740..10755; LINEAR_A 6521 0x10756, // 10756..1075F; UNKNOWN 6522 0x10760, // 10760..10767; LINEAR_A 6523 0x10768, // 10768..1077F; UNKNOWN 6524 0x10780, // 10780..10785; LATIN 6525 0x10786, // 10786 ; UNKNOWN 6526 0x10787, // 10787..107B0; LATIN 6527 0x107B1, // 107B1 ; UNKNOWN 6528 0x107B2, // 107B2..107BA; LATIN 6529 0x107BB, // 107BB..107FF; UNKNOWN 6530 0x10800, // 10800..10805; CYPRIOT 6531 0x10806, // 10806..10807; UNKNOWN 6532 0x10808, // 10808 ; CYPRIOT 6533 0x10809, // 10809 ; UNKNOWN 6534 0x1080A, // 1080A..10835; CYPRIOT 6535 0x10836, // 10836 ; UNKNOWN 6536 0x10837, // 10837..10838; CYPRIOT 6537 0x10839, // 10839..1083B; UNKNOWN 6538 0x1083C, // 1083C ; CYPRIOT 6539 0x1083D, // 1083D..1083E; UNKNOWN 6540 0x1083F, // 1083F ; CYPRIOT 6541 0x10840, // 10840..10855; IMPERIAL_ARAMAIC 6542 0x10856, // 10856 ; UNKNOWN 6543 0x10857, // 10857..1085F; IMPERIAL_ARAMAIC 6544 0x10860, // 10860..1087F; PALMYRENE 6545 0x10880, // 10880..1089E; NABATAEAN 6546 0x1089F, // 1089F..108A6; UNKNOWN 6547 0x108A7, // 108A7..108AF; NABATAEAN 6548 0x108B0, // 108B0..108DF; UNKNOWN 6549 0x108E0, // 108E0..108F2; HATRAN 6550 0x108F3, // 108F3 ; UNKNOWN 6551 0x108F4, // 108F4..108F5; HATRAN 6552 0x108F6, // 108F6..108FA; UNKNOWN 6553 0x108FB, // 108FB..108FF; HATRAN 6554 0x10900, // 10900..1091B; PHOENICIAN 6555 0x1091C, // 1091C..1091E; UNKNOWN 6556 0x1091F, // 1091F ; PHOENICIAN 6557 0x10920, // 10920..10939; LYDIAN 6558 0x1093A, // 1093A..1093E; UNKNOWN 6559 0x1093F, // 1093F ; LYDIAN 6560 0x10940, // 10940..1097F; UNKNOWN 6561 0x10980, // 10980..1099F; MEROITIC_HIEROGLYPHS 6562 0x109A0, // 109A0..109B7; MEROITIC_CURSIVE 6563 0x109B8, // 109B8..109BB; UNKNOWN 6564 0x109BC, // 109BC..109CF; MEROITIC_CURSIVE 6565 0x109D0, // 109D0..109D1; UNKNOWN 6566 0x109D2, // 109D2..109FF; MEROITIC_CURSIVE 6567 0x10A00, // 10A00..10A03; KHAROSHTHI 6568 0x10A04, // 10A04 ; UNKNOWN 6569 0x10A05, // 10A05..10A06; KHAROSHTHI 6570 0x10A07, // 10A07..10A0B; UNKNOWN 6571 0x10A0C, // 10A0C..10A13; KHAROSHTHI 6572 0x10A14, // 10A14 ; UNKNOWN 6573 0x10A15, // 10A15..10A17; KHAROSHTHI 6574 0x10A18, // 10A18 ; UNKNOWN 6575 0x10A19, // 10A19..10A35; KHAROSHTHI 6576 0x10A36, // 10A36..10A37; UNKNOWN 6577 0x10A38, // 10A38..10A3A; KHAROSHTHI 6578 0x10A3B, // 10A3B..10A3E; UNKNOWN 6579 0x10A3F, // 10A3F..10A48; KHAROSHTHI 6580 0x10A49, // 10A49..10A4F; UNKNOWN 6581 0x10A50, // 10A50..10A58; KHAROSHTHI 6582 0x10A59, // 10A59..10A5F; UNKNOWN 6583 0x10A60, // 10A60..10A7F; OLD_SOUTH_ARABIAN 6584 0x10A80, // 10A80..10A9F; OLD_NORTH_ARABIAN 6585 0x10AA0, // 10AA0..10ABF; UNKNOWN 6586 0x10AC0, // 10AC0..10AE6; MANICHAEAN 6587 0x10AE7, // 10AE7..10AEA; UNKNOWN 6588 0x10AEB, // 10AEB..10AF6; MANICHAEAN 6589 0x10AF7, // 10AF7..10AFF; UNKNOWN 6590 0x10B00, // 10B00..10B35; AVESTAN 6591 0x10B36, // 10B36..10B38; UNKNOWN 6592 0x10B39, // 10B39..10B3F; AVESTAN 6593 0x10B40, // 10B40..10B55; INSCRIPTIONAL_PARTHIAN 6594 0x10B56, // 10B56..10B57; UNKNOWN 6595 0x10B58, // 10B58..10B5F; INSCRIPTIONAL_PARTHIAN 6596 0x10B60, // 10B60..10B72; INSCRIPTIONAL_PAHLAVI 6597 0x10B73, // 10B73..10B77; UNKNOWN 6598 0x10B78, // 10B78..10B7F; INSCRIPTIONAL_PAHLAVI 6599 0x10B80, // 10B80..10B91; PSALTER_PAHLAVI 6600 0x10B92, // 10B92..10B98; UNKNOWN 6601 0x10B99, // 10B99..10B9C; PSALTER_PAHLAVI 6602 0x10B9D, // 10B9D..10BA8; UNKNOWN 6603 0x10BA9, // 10BA9..10BAF; PSALTER_PAHLAVI 6604 0x10BB0, // 10BB0..10BFF; UNKNOWN 6605 0x10C00, // 10C00..10C48; OLD_TURKIC 6606 0x10C49, // 10C49..10C7F; UNKNOWN 6607 0x10C80, // 10C80..10CB2; OLD_HUNGARIAN 6608 0x10CB3, // 10CB3..10CBF; UNKNOWN 6609 0x10CC0, // 10CC0..10CF2; OLD_HUNGARIAN 6610 0x10CF3, // 10CF3..10CF9; UNKNOWN 6611 0x10CFA, // 10CFA..10CFF; OLD_HUNGARIAN 6612 0x10D00, // 10D00..10D27; HANIFI_ROHINGYA 6613 0x10D28, // 10D28..10D2F; UNKNOWN 6614 0x10D30, // 10D30..10D39; HANIFI_ROHINGYA 6615 0x10D3A, // 10D3A..10D3F; UNKNOWN 6616 0x10D40, // 10D40..10D65; GARAY 6617 0x10D66, // 10D66..10D68; UNKNOWN 6618 0x10D69, // 10D69..10D85; GARAY 6619 0x10D86, // 10D86..10D8D; UNKNOWN 6620 0x10D8E, // 10D8E..10D8F; GARAY 6621 0x10D90, // 10D90..10E5F; UNKNOWN 6622 0x10E60, // 10E60..10E7E; ARABIC 6623 0x10E7F, // 10E7F ; UNKNOWN 6624 0x10E80, // 10E80..10EA9; YEZIDI 6625 0x10EAA, // 10EAA ; UNKNOWN 6626 0x10EAB, // 10EAB..10EAD; YEZIDI 6627 0x10EAE, // 10EAE..10EAF; UNKNOWN 6628 0x10EB0, // 10EB0..10EB1; YEZIDI 6629 0x10EB2, // 10EB2..10EC1; UNKNOWN 6630 0x10EC2, // 10EC2..10EC4; ARABIC 6631 0x10EC5, // 10EC5..10EFB; UNKNOWN 6632 0x10EFC, // 10EFC..10EFF; ARABIC 6633 0x10F00, // 10F00..10F27; OLD_SOGDIAN 6634 0x10F28, // 10F28..10F2F; UNKNOWN 6635 0x10F30, // 10F30..10F59; SOGDIAN 6636 0x10F5A, // 10F5A..10F6F; UNKNOWN 6637 0x10F70, // 10F70..10F89; OLD_UYGHUR 6638 0x10F8A, // 10F8A..10FAF; UNKNOWN 6639 0x10FB0, // 10FB0..10FCB; CHORASMIAN 6640 0x10FCC, // 10FCC..10FDF; UNKNOWN 6641 0x10FE0, // 10FE0..10FF6; ELYMAIC 6642 0x10FF7, // 10FF7..10FFF; UNKNOWN 6643 0x11000, // 11000..1104D; BRAHMI 6644 0x1104E, // 1104E..11051; UNKNOWN 6645 0x11052, // 11052..11075; BRAHMI 6646 0x11076, // 11076..1107E; UNKNOWN 6647 0x1107F, // 1107F ; BRAHMI 6648 0x11080, // 11080..110C2; KAITHI 6649 0x110C3, // 110C3..110CC; UNKNOWN 6650 0x110CD, // 110CD ; KAITHI 6651 0x110CE, // 110CE..110CF; UNKNOWN 6652 0x110D0, // 110D0..110E8; SORA_SOMPENG 6653 0x110E9, // 110E9..110EF; UNKNOWN 6654 0x110F0, // 110F0..110F9; SORA_SOMPENG 6655 0x110FA, // 110FA..110FF; UNKNOWN 6656 0x11100, // 11100..11134; CHAKMA 6657 0x11135, // 11135 ; UNKNOWN 6658 0x11136, // 11136..11147; CHAKMA 6659 0x11148, // 11148..1114F; UNKNOWN 6660 0x11150, // 11150..11176; MAHAJANI 6661 0x11177, // 11177..1117F; UNKNOWN 6662 0x11180, // 11180..111DF; SHARADA 6663 0x111E0, // 111E0 ; UNKNOWN 6664 0x111E1, // 111E1..111F4; SINHALA 6665 0x111F5, // 111F5..111FF; UNKNOWN 6666 0x11200, // 11200..11211; KHOJKI 6667 0x11212, // 11212 ; UNKNOWN 6668 0x11213, // 11213..11241; KHOJKI 6669 0x11242, // 11242..1127F; UNKNOWN 6670 0x11280, // 11280..11286; MULTANI 6671 0x11287, // 11287 ; UNKNOWN 6672 0x11288, // 11288 ; MULTANI 6673 0x11289, // 11289 ; UNKNOWN 6674 0x1128A, // 1128A..1128D; MULTANI 6675 0x1128E, // 1128E ; UNKNOWN 6676 0x1128F, // 1128F..1129D; MULTANI 6677 0x1129E, // 1129E ; UNKNOWN 6678 0x1129F, // 1129F..112A9; MULTANI 6679 0x112AA, // 112AA..112AF; UNKNOWN 6680 0x112B0, // 112B0..112EA; KHUDAWADI 6681 0x112EB, // 112EB..112EF; UNKNOWN 6682 0x112F0, // 112F0..112F9; KHUDAWADI 6683 0x112FA, // 112FA..112FF; UNKNOWN 6684 0x11300, // 11300..11303; GRANTHA 6685 0x11304, // 11304 ; UNKNOWN 6686 0x11305, // 11305..1130C; GRANTHA 6687 0x1130D, // 1130D..1130E; UNKNOWN 6688 0x1130F, // 1130F..11310; GRANTHA 6689 0x11311, // 11311..11312; UNKNOWN 6690 0x11313, // 11313..11328; GRANTHA 6691 0x11329, // 11329 ; UNKNOWN 6692 0x1132A, // 1132A..11330; GRANTHA 6693 0x11331, // 11331 ; UNKNOWN 6694 0x11332, // 11332..11333; GRANTHA 6695 0x11334, // 11334 ; UNKNOWN 6696 0x11335, // 11335..11339; GRANTHA 6697 0x1133A, // 1133A ; UNKNOWN 6698 0x1133B, // 1133B ; INHERITED 6699 0x1133C, // 1133C..11344; GRANTHA 6700 0x11345, // 11345..11346; UNKNOWN 6701 0x11347, // 11347..11348; GRANTHA 6702 0x11349, // 11349..1134A; UNKNOWN 6703 0x1134B, // 1134B..1134D; GRANTHA 6704 0x1134E, // 1134E..1134F; UNKNOWN 6705 0x11350, // 11350 ; GRANTHA 6706 0x11351, // 11351..11356; UNKNOWN 6707 0x11357, // 11357 ; GRANTHA 6708 0x11358, // 11358..1135C; UNKNOWN 6709 0x1135D, // 1135D..11363; GRANTHA 6710 0x11364, // 11364..11365; UNKNOWN 6711 0x11366, // 11366..1136C; GRANTHA 6712 0x1136D, // 1136D..1136F; UNKNOWN 6713 0x11370, // 11370..11374; GRANTHA 6714 0x11375, // 11375..1137F; UNKNOWN 6715 0x11380, // 11380..11389; TULU_TIGALARI 6716 0x1138A, // 1138A ; UNKNOWN 6717 0x1138B, // 1138B ; TULU_TIGALARI 6718 0x1138C, // 1138C..1138D; UNKNOWN 6719 0x1138E, // 1138E ; TULU_TIGALARI 6720 0x1138F, // 1138F ; UNKNOWN 6721 0x11390, // 11390..113B5; TULU_TIGALARI 6722 0x113B6, // 113B6 ; UNKNOWN 6723 0x113B7, // 113B7..113C0; TULU_TIGALARI 6724 0x113C1, // 113C1 ; UNKNOWN 6725 0x113C2, // 113C2 ; TULU_TIGALARI 6726 0x113C3, // 113C3..113C4; UNKNOWN 6727 0x113C5, // 113C5 ; TULU_TIGALARI 6728 0x113C6, // 113C6 ; UNKNOWN 6729 0x113C7, // 113C7..113CA; TULU_TIGALARI 6730 0x113CB, // 113CB ; UNKNOWN 6731 0x113CC, // 113CC..113D5; TULU_TIGALARI 6732 0x113D6, // 113D6 ; UNKNOWN 6733 0x113D7, // 113D7..113D8; TULU_TIGALARI 6734 0x113D9, // 113D9..113E0; UNKNOWN 6735 0x113E1, // 113E1..113E2; TULU_TIGALARI 6736 0x113E3, // 113E3..113FF; UNKNOWN 6737 0x11400, // 11400..1145B; NEWA 6738 0x1145C, // 1145C ; UNKNOWN 6739 0x1145D, // 1145D..11461; NEWA 6740 0x11462, // 11462..1147F; UNKNOWN 6741 0x11480, // 11480..114C7; TIRHUTA 6742 0x114C8, // 114C8..114CF; UNKNOWN 6743 0x114D0, // 114D0..114D9; TIRHUTA 6744 0x114DA, // 114DA..1157F; UNKNOWN 6745 0x11580, // 11580..115B5; SIDDHAM 6746 0x115B6, // 115B6..115B7; UNKNOWN 6747 0x115B8, // 115B8..115DD; SIDDHAM 6748 0x115DE, // 115DE..115FF; UNKNOWN 6749 0x11600, // 11600..11644; MODI 6750 0x11645, // 11645..1164F; UNKNOWN 6751 0x11650, // 11650..11659; MODI 6752 0x1165A, // 1165A..1165F; UNKNOWN 6753 0x11660, // 11660..1166C; MONGOLIAN 6754 0x1166D, // 1166D..1167F; UNKNOWN 6755 0x11680, // 11680..116B9; TAKRI 6756 0x116BA, // 116BA..116BF; UNKNOWN 6757 0x116C0, // 116C0..116C9; TAKRI 6758 0x116CA, // 116CA..116CF; UNKNOWN 6759 0x116D0, // 116D0..116E3; MYANMAR 6760 0x116E4, // 116E4..116FF; UNKNOWN 6761 0x11700, // 11700..1171A; AHOM 6762 0x1171B, // 1171B..1171C; UNKNOWN 6763 0x1171D, // 1171D..1172B; AHOM 6764 0x1172C, // 1172C..1172F; UNKNOWN 6765 0x11730, // 11730..11746; AHOM 6766 0x11747, // 11747..117FF; UNKNOWN 6767 0x11800, // 11800..1183B; DOGRA 6768 0x1183C, // 1183C..1189F; UNKNOWN 6769 0x118A0, // 118A0..118F2; WARANG_CITI 6770 0x118F3, // 118F3..118FE; UNKNOWN 6771 0x118FF, // 118FF ; WARANG_CITI 6772 0x11900, // 11900..11906; DIVES_AKURU 6773 0x11907, // 11907..11908; UNKNOWN 6774 0x11909, // 11909 ; DIVES_AKURU 6775 0x1190A, // 1190A..1190B; UNKNOWN 6776 0x1190C, // 1190C..11913; DIVES_AKURU 6777 0x11914, // 11914 ; UNKNOWN 6778 0x11915, // 11915..11916; DIVES_AKURU 6779 0x11917, // 11917 ; UNKNOWN 6780 0x11918, // 11918..11935; DIVES_AKURU 6781 0x11936, // 11936 ; UNKNOWN 6782 0x11937, // 11937..11938; DIVES_AKURU 6783 0x11939, // 11939..1193A; UNKNOWN 6784 0x1193B, // 1193B..11946; DIVES_AKURU 6785 0x11947, // 11947..1194F; UNKNOWN 6786 0x11950, // 11950..11959; DIVES_AKURU 6787 0x1195A, // 1195A..1199F; UNKNOWN 6788 0x119A0, // 119A0..119A7; NANDINAGARI 6789 0x119A8, // 119A8..119A9; UNKNOWN 6790 0x119AA, // 119AA..119D7; NANDINAGARI 6791 0x119D8, // 119D8..119D9; UNKNOWN 6792 0x119DA, // 119DA..119E4; NANDINAGARI 6793 0x119E5, // 119E5..119FF; UNKNOWN 6794 0x11A00, // 11A00..11A47; ZANABAZAR_SQUARE 6795 0x11A48, // 11A48..11A4F; UNKNOWN 6796 0x11A50, // 11A50..11AA2; SOYOMBO 6797 0x11AA3, // 11AA3..11AAF; UNKNOWN 6798 0x11AB0, // 11AB0..11ABF; CANADIAN_ABORIGINAL 6799 0x11AC0, // 11AC0..11AF8; PAU_CIN_HAU 6800 0x11AF9, // 11AF9..11AFF; UNKNOWN 6801 0x11B00, // 11B00..11B09; DEVANAGARI 6802 0x11B0A, // 11B0A..11BBF; UNKNOWN 6803 0x11BC0, // 11BC0..11BE1; SUNUWAR 6804 0x11BE2, // 11BE2..11BEF; UNKNOWN 6805 0x11BF0, // 11BF0..11BF9; SUNUWAR 6806 0x11BFA, // 11BFA..11BFF; UNKNOWN 6807 0x11C00, // 11C00..11C08; BHAIKSUKI 6808 0x11C09, // 11C09 ; UNKNOWN 6809 0x11C0A, // 11C0A..11C36; BHAIKSUKI 6810 0x11C37, // 11C37 ; UNKNOWN 6811 0x11C38, // 11C38..11C45; BHAIKSUKI 6812 0x11C46, // 11C46..11C4F; UNKNOWN 6813 0x11C50, // 11C50..11C6C; BHAIKSUKI 6814 0x11C6D, // 11C6D..11C6F; UNKNOWN 6815 0x11C70, // 11C70..11C8F; MARCHEN 6816 0x11C90, // 11C90..11C91; UNKNOWN 6817 0x11C92, // 11C92..11CA7; MARCHEN 6818 0x11CA8, // 11CA8 ; UNKNOWN 6819 0x11CA9, // 11CA9..11CB6; MARCHEN 6820 0x11CB7, // 11CB7..11CFF; UNKNOWN 6821 0x11D00, // 11D00..11D06; MASARAM_GONDI 6822 0x11D07, // 11D07 ; UNKNOWN 6823 0x11D08, // 11D08..11D09; MASARAM_GONDI 6824 0x11D0A, // 11D0A ; UNKNOWN 6825 0x11D0B, // 11D0B..11D36; MASARAM_GONDI 6826 0x11D37, // 11D37..11D39; UNKNOWN 6827 0x11D3A, // 11D3A ; MASARAM_GONDI 6828 0x11D3B, // 11D3B ; UNKNOWN 6829 0x11D3C, // 11D3C..11D3D; MASARAM_GONDI 6830 0x11D3E, // 11D3E ; UNKNOWN 6831 0x11D3F, // 11D3F..11D47; MASARAM_GONDI 6832 0x11D48, // 11D48..11D4F; UNKNOWN 6833 0x11D50, // 11D50..11D59; MASARAM_GONDI 6834 0x11D5A, // 11D5A..11D5F; UNKNOWN 6835 0x11D60, // 11D60..11D65; GUNJALA_GONDI 6836 0x11D66, // 11D66 ; UNKNOWN 6837 0x11D67, // 11D67..11D68; GUNJALA_GONDI 6838 0x11D69, // 11D69 ; UNKNOWN 6839 0x11D6A, // 11D6A..11D8E; GUNJALA_GONDI 6840 0x11D8F, // 11D8F ; UNKNOWN 6841 0x11D90, // 11D90..11D91; GUNJALA_GONDI 6842 0x11D92, // 11D92 ; UNKNOWN 6843 0x11D93, // 11D93..11D98; GUNJALA_GONDI 6844 0x11D99, // 11D99..11D9F; UNKNOWN 6845 0x11DA0, // 11DA0..11DA9; GUNJALA_GONDI 6846 0x11DAA, // 11DAA..11EDF; UNKNOWN 6847 0x11EE0, // 11EE0..11EF8; MAKASAR 6848 0x11EF9, // 11EF9..11EFF; UNKNOWN 6849 0x11F00, // 11F00..11F10; KAWI 6850 0x11F11, // 11F11 ; UNKNOWN 6851 0x11F12, // 11F12..11F3A; KAWI 6852 0x11F3B, // 11F3B..11F3D; UNKNOWN 6853 0x11F3E, // 11F3E..11F5A; KAWI 6854 0x11F5B, // 11F5B..11FAF; UNKNOWN 6855 0x11FB0, // 11FB0 ; LISU 6856 0x11FB1, // 11FB1..11FBF; UNKNOWN 6857 0x11FC0, // 11FC0..11FF1; TAMIL 6858 0x11FF2, // 11FF2..11FFE; UNKNOWN 6859 0x11FFF, // 11FFF ; TAMIL 6860 0x12000, // 12000..12399; CUNEIFORM 6861 0x1239A, // 1239A..123FF; UNKNOWN 6862 0x12400, // 12400..1246E; CUNEIFORM 6863 0x1246F, // 1246F ; UNKNOWN 6864 0x12470, // 12470..12474; CUNEIFORM 6865 0x12475, // 12475..1247F; UNKNOWN 6866 0x12480, // 12480..12543; CUNEIFORM 6867 0x12544, // 12544..12F8F; UNKNOWN 6868 0x12F90, // 12F90..12FF2; CYPRO_MINOAN 6869 0x12FF3, // 12FF3..12FFF; UNKNOWN 6870 0x13000, // 13000..13455; EGYPTIAN_HIEROGLYPHS 6871 0x13456, // 13456..1345F; UNKNOWN 6872 0x13460, // 13460..143FA; EGYPTIAN_HIEROGLYPHS 6873 0x143FB, // 143FB..143FF; UNKNOWN 6874 0x14400, // 14400..14646; ANATOLIAN_HIEROGLYPHS 6875 0x14647, // 14647..160FF; UNKNOWN 6876 0x16100, // 16100..16139; GURUNG_KHEMA 6877 0x1613A, // 1613A..167FF; UNKNOWN 6878 0x16800, // 16800..16A38; BAMUM 6879 0x16A39, // 16A39..16A3F; UNKNOWN 6880 0x16A40, // 16A40..16A5E; MRO 6881 0x16A5F, // 16A5F ; UNKNOWN 6882 0x16A60, // 16A60..16A69; MRO 6883 0x16A6A, // 16A6A..16A6D; UNKNOWN 6884 0x16A6E, // 16A6E..16A6F; MRO 6885 0x16A70, // 16A70..16ABE; TANGSA 6886 0x16ABF, // 16ABF ; UNKNOWN 6887 0x16AC0, // 16AC0..16AC9; TANGSA 6888 0x16ACA, // 16ACA..16ACF; UNKNOWN 6889 0x16AD0, // 16AD0..16AED; BASSA_VAH 6890 0x16AEE, // 16AEE..16AEF; UNKNOWN 6891 0x16AF0, // 16AF0..16AF5; BASSA_VAH 6892 0x16AF6, // 16AF6..16AFF; UNKNOWN 6893 0x16B00, // 16B00..16B45; PAHAWH_HMONG 6894 0x16B46, // 16B46..16B4F; UNKNOWN 6895 0x16B50, // 16B50..16B59; PAHAWH_HMONG 6896 0x16B5A, // 16B5A ; UNKNOWN 6897 0x16B5B, // 16B5B..16B61; PAHAWH_HMONG 6898 0x16B62, // 16B62 ; UNKNOWN 6899 0x16B63, // 16B63..16B77; PAHAWH_HMONG 6900 0x16B78, // 16B78..16B7C; UNKNOWN 6901 0x16B7D, // 16B7D..16B8F; PAHAWH_HMONG 6902 0x16B90, // 16B90..16D3F; UNKNOWN 6903 0x16D40, // 16D40..16D79; KIRAT_RAI 6904 0x16D7A, // 16D7A..16E3F; UNKNOWN 6905 0x16E40, // 16E40..16E9A; MEDEFAIDRIN 6906 0x16E9B, // 16E9B..16EFF; UNKNOWN 6907 0x16F00, // 16F00..16F4A; MIAO 6908 0x16F4B, // 16F4B..16F4E; UNKNOWN 6909 0x16F4F, // 16F4F..16F87; MIAO 6910 0x16F88, // 16F88..16F8E; UNKNOWN 6911 0x16F8F, // 16F8F..16F9F; MIAO 6912 0x16FA0, // 16FA0..16FDF; UNKNOWN 6913 0x16FE0, // 16FE0 ; TANGUT 6914 0x16FE1, // 16FE1 ; NUSHU 6915 0x16FE2, // 16FE2..16FE3; HAN 6916 0x16FE4, // 16FE4 ; KHITAN_SMALL_SCRIPT 6917 0x16FE5, // 16FE5..16FEF; UNKNOWN 6918 0x16FF0, // 16FF0..16FF1; HAN 6919 0x16FF2, // 16FF2..16FFF; UNKNOWN 6920 0x17000, // 17000..187F7; TANGUT 6921 0x187F8, // 187F8..187FF; UNKNOWN 6922 0x18800, // 18800..18AFF; TANGUT 6923 0x18B00, // 18B00..18CD5; KHITAN_SMALL_SCRIPT 6924 0x18CD6, // 18CD6..18CFE; UNKNOWN 6925 0x18CFF, // 18CFF ; KHITAN_SMALL_SCRIPT 6926 0x18D00, // 18D00..18D08; TANGUT 6927 0x18D09, // 18D09..1AFEF; UNKNOWN 6928 0x1AFF0, // 1AFF0..1AFF3; KATAKANA 6929 0x1AFF4, // 1AFF4 ; UNKNOWN 6930 0x1AFF5, // 1AFF5..1AFFB; KATAKANA 6931 0x1AFFC, // 1AFFC ; UNKNOWN 6932 0x1AFFD, // 1AFFD..1AFFE; KATAKANA 6933 0x1AFFF, // 1AFFF ; UNKNOWN 6934 0x1B000, // 1B000 ; KATAKANA 6935 0x1B001, // 1B001..1B11F; HIRAGANA 6936 0x1B120, // 1B120..1B122; KATAKANA 6937 0x1B123, // 1B123..1B131; UNKNOWN 6938 0x1B132, // 1B132 ; HIRAGANA 6939 0x1B133, // 1B133..1B14F; UNKNOWN 6940 0x1B150, // 1B150..1B152; HIRAGANA 6941 0x1B153, // 1B153..1B154; UNKNOWN 6942 0x1B155, // 1B155 ; KATAKANA 6943 0x1B156, // 1B156..1B163; UNKNOWN 6944 0x1B164, // 1B164..1B167; KATAKANA 6945 0x1B168, // 1B168..1B16F; UNKNOWN 6946 0x1B170, // 1B170..1B2FB; NUSHU 6947 0x1B2FC, // 1B2FC..1BBFF; UNKNOWN 6948 0x1BC00, // 1BC00..1BC6A; DUPLOYAN 6949 0x1BC6B, // 1BC6B..1BC6F; UNKNOWN 6950 0x1BC70, // 1BC70..1BC7C; DUPLOYAN 6951 0x1BC7D, // 1BC7D..1BC7F; UNKNOWN 6952 0x1BC80, // 1BC80..1BC88; DUPLOYAN 6953 0x1BC89, // 1BC89..1BC8F; UNKNOWN 6954 0x1BC90, // 1BC90..1BC99; DUPLOYAN 6955 0x1BC9A, // 1BC9A..1BC9B; UNKNOWN 6956 0x1BC9C, // 1BC9C..1BC9F; DUPLOYAN 6957 0x1BCA0, // 1BCA0..1BCA3; COMMON 6958 0x1BCA4, // 1BCA4..1CBFF; UNKNOWN 6959 0x1CC00, // 1CC00..1CCF9; COMMON 6960 0x1CCFA, // 1CCFA..1CCFF; UNKNOWN 6961 0x1CD00, // 1CD00..1CEB3; COMMON 6962 0x1CEB4, // 1CEB4..1CEFF; UNKNOWN 6963 0x1CF00, // 1CF00..1CF2D; INHERITED 6964 0x1CF2E, // 1CF2E..1CF2F; UNKNOWN 6965 0x1CF30, // 1CF30..1CF46; INHERITED 6966 0x1CF47, // 1CF47..1CF4F; UNKNOWN 6967 0x1CF50, // 1CF50..1CFC3; COMMON 6968 0x1CFC4, // 1CFC4..1CFFF; UNKNOWN 6969 0x1D000, // 1D000..1D0F5; COMMON 6970 0x1D0F6, // 1D0F6..1D0FF; UNKNOWN 6971 0x1D100, // 1D100..1D126; COMMON 6972 0x1D127, // 1D127..1D128; UNKNOWN 6973 0x1D129, // 1D129..1D166; COMMON 6974 0x1D167, // 1D167..1D169; INHERITED 6975 0x1D16A, // 1D16A..1D17A; COMMON 6976 0x1D17B, // 1D17B..1D182; INHERITED 6977 0x1D183, // 1D183..1D184; COMMON 6978 0x1D185, // 1D185..1D18B; INHERITED 6979 0x1D18C, // 1D18C..1D1A9; COMMON 6980 0x1D1AA, // 1D1AA..1D1AD; INHERITED 6981 0x1D1AE, // 1D1AE..1D1EA; COMMON 6982 0x1D1EB, // 1D1EB..1D1FF; UNKNOWN 6983 0x1D200, // 1D200..1D245; GREEK 6984 0x1D246, // 1D246..1D2BF; UNKNOWN 6985 0x1D2C0, // 1D2C0..1D2D3; COMMON 6986 0x1D2D4, // 1D2D4..1D2DF; UNKNOWN 6987 0x1D2E0, // 1D2E0..1D2F3; COMMON 6988 0x1D2F4, // 1D2F4..1D2FF; UNKNOWN 6989 0x1D300, // 1D300..1D356; COMMON 6990 0x1D357, // 1D357..1D35F; UNKNOWN 6991 0x1D360, // 1D360..1D378; COMMON 6992 0x1D379, // 1D379..1D3FF; UNKNOWN 6993 0x1D400, // 1D400..1D454; COMMON 6994 0x1D455, // 1D455 ; UNKNOWN 6995 0x1D456, // 1D456..1D49C; COMMON 6996 0x1D49D, // 1D49D ; UNKNOWN 6997 0x1D49E, // 1D49E..1D49F; COMMON 6998 0x1D4A0, // 1D4A0..1D4A1; UNKNOWN 6999 0x1D4A2, // 1D4A2 ; COMMON 7000 0x1D4A3, // 1D4A3..1D4A4; UNKNOWN 7001 0x1D4A5, // 1D4A5..1D4A6; COMMON 7002 0x1D4A7, // 1D4A7..1D4A8; UNKNOWN 7003 0x1D4A9, // 1D4A9..1D4AC; COMMON 7004 0x1D4AD, // 1D4AD ; UNKNOWN 7005 0x1D4AE, // 1D4AE..1D4B9; COMMON 7006 0x1D4BA, // 1D4BA ; UNKNOWN 7007 0x1D4BB, // 1D4BB ; COMMON 7008 0x1D4BC, // 1D4BC ; UNKNOWN 7009 0x1D4BD, // 1D4BD..1D4C3; COMMON 7010 0x1D4C4, // 1D4C4 ; UNKNOWN 7011 0x1D4C5, // 1D4C5..1D505; COMMON 7012 0x1D506, // 1D506 ; UNKNOWN 7013 0x1D507, // 1D507..1D50A; COMMON 7014 0x1D50B, // 1D50B..1D50C; UNKNOWN 7015 0x1D50D, // 1D50D..1D514; COMMON 7016 0x1D515, // 1D515 ; UNKNOWN 7017 0x1D516, // 1D516..1D51C; COMMON 7018 0x1D51D, // 1D51D ; UNKNOWN 7019 0x1D51E, // 1D51E..1D539; COMMON 7020 0x1D53A, // 1D53A ; UNKNOWN 7021 0x1D53B, // 1D53B..1D53E; COMMON 7022 0x1D53F, // 1D53F ; UNKNOWN 7023 0x1D540, // 1D540..1D544; COMMON 7024 0x1D545, // 1D545 ; UNKNOWN 7025 0x1D546, // 1D546 ; COMMON 7026 0x1D547, // 1D547..1D549; UNKNOWN 7027 0x1D54A, // 1D54A..1D550; COMMON 7028 0x1D551, // 1D551 ; UNKNOWN 7029 0x1D552, // 1D552..1D6A5; COMMON 7030 0x1D6A6, // 1D6A6..1D6A7; UNKNOWN 7031 0x1D6A8, // 1D6A8..1D7CB; COMMON 7032 0x1D7CC, // 1D7CC..1D7CD; UNKNOWN 7033 0x1D7CE, // 1D7CE..1D7FF; COMMON 7034 0x1D800, // 1D800..1DA8B; SIGNWRITING 7035 0x1DA8C, // 1DA8C..1DA9A; UNKNOWN 7036 0x1DA9B, // 1DA9B..1DA9F; SIGNWRITING 7037 0x1DAA0, // 1DAA0 ; UNKNOWN 7038 0x1DAA1, // 1DAA1..1DAAF; SIGNWRITING 7039 0x1DAB0, // 1DAB0..1DEFF; UNKNOWN 7040 0x1DF00, // 1DF00..1DF1E; LATIN 7041 0x1DF1F, // 1DF1F..1DF24; UNKNOWN 7042 0x1DF25, // 1DF25..1DF2A; LATIN 7043 0x1DF2B, // 1DF2B..1DFFF; UNKNOWN 7044 0x1E000, // 1E000..1E006; GLAGOLITIC 7045 0x1E007, // 1E007 ; UNKNOWN 7046 0x1E008, // 1E008..1E018; GLAGOLITIC 7047 0x1E019, // 1E019..1E01A; UNKNOWN 7048 0x1E01B, // 1E01B..1E021; GLAGOLITIC 7049 0x1E022, // 1E022 ; UNKNOWN 7050 0x1E023, // 1E023..1E024; GLAGOLITIC 7051 0x1E025, // 1E025 ; UNKNOWN 7052 0x1E026, // 1E026..1E02A; GLAGOLITIC 7053 0x1E02B, // 1E02B..1E02F; UNKNOWN 7054 0x1E030, // 1E030..1E06D; CYRILLIC 7055 0x1E06E, // 1E06E..1E08E; UNKNOWN 7056 0x1E08F, // 1E08F ; CYRILLIC 7057 0x1E090, // 1E090..1E0FF; UNKNOWN 7058 0x1E100, // 1E100..1E12C; NYIAKENG_PUACHUE_HMONG 7059 0x1E12D, // 1E12D..1E12F; UNKNOWN 7060 0x1E130, // 1E130..1E13D; NYIAKENG_PUACHUE_HMONG 7061 0x1E13E, // 1E13E..1E13F; UNKNOWN 7062 0x1E140, // 1E140..1E149; NYIAKENG_PUACHUE_HMONG 7063 0x1E14A, // 1E14A..1E14D; UNKNOWN 7064 0x1E14E, // 1E14E..1E14F; NYIAKENG_PUACHUE_HMONG 7065 0x1E150, // 1E150..1E28F; UNKNOWN 7066 0x1E290, // 1E290..1E2AE; TOTO 7067 0x1E2AF, // 1E2AF..1E2BF; UNKNOWN 7068 0x1E2C0, // 1E2C0..1E2F9; WANCHO 7069 0x1E2FA, // 1E2FA..1E2FE; UNKNOWN 7070 0x1E2FF, // 1E2FF ; WANCHO 7071 0x1E300, // 1E300..1E4CF; UNKNOWN 7072 0x1E4D0, // 1E4D0..1E4F9; NAG_MUNDARI 7073 0x1E4FA, // 1E4FA..1E5CF; UNKNOWN 7074 0x1E5D0, // 1E5D0..1E5FA; OL_ONAL 7075 0x1E5FB, // 1E5FB..1E5FE; UNKNOWN 7076 0x1E5FF, // 1E5FF ; OL_ONAL 7077 0x1E600, // 1E600..1E7DF; UNKNOWN 7078 0x1E7E0, // 1E7E0..1E7E6; ETHIOPIC 7079 0x1E7E7, // 1E7E7 ; UNKNOWN 7080 0x1E7E8, // 1E7E8..1E7EB; ETHIOPIC 7081 0x1E7EC, // 1E7EC ; UNKNOWN 7082 0x1E7ED, // 1E7ED..1E7EE; ETHIOPIC 7083 0x1E7EF, // 1E7EF ; UNKNOWN 7084 0x1E7F0, // 1E7F0..1E7FE; ETHIOPIC 7085 0x1E7FF, // 1E7FF ; UNKNOWN 7086 0x1E800, // 1E800..1E8C4; MENDE_KIKAKUI 7087 0x1E8C5, // 1E8C5..1E8C6; UNKNOWN 7088 0x1E8C7, // 1E8C7..1E8D6; MENDE_KIKAKUI 7089 0x1E8D7, // 1E8D7..1E8FF; UNKNOWN 7090 0x1E900, // 1E900..1E94B; ADLAM 7091 0x1E94C, // 1E94C..1E94F; UNKNOWN 7092 0x1E950, // 1E950..1E959; ADLAM 7093 0x1E95A, // 1E95A..1E95D; UNKNOWN 7094 0x1E95E, // 1E95E..1E95F; ADLAM 7095 0x1E960, // 1E960..1EC70; UNKNOWN 7096 0x1EC71, // 1EC71..1ECB4; COMMON 7097 0x1ECB5, // 1ECB5..1ED00; UNKNOWN 7098 0x1ED01, // 1ED01..1ED3D; COMMON 7099 0x1ED3E, // 1ED3E..1EDFF; UNKNOWN 7100 0x1EE00, // 1EE00..1EE03; ARABIC 7101 0x1EE04, // 1EE04 ; UNKNOWN 7102 0x1EE05, // 1EE05..1EE1F; ARABIC 7103 0x1EE20, // 1EE20 ; UNKNOWN 7104 0x1EE21, // 1EE21..1EE22; ARABIC 7105 0x1EE23, // 1EE23 ; UNKNOWN 7106 0x1EE24, // 1EE24 ; ARABIC 7107 0x1EE25, // 1EE25..1EE26; UNKNOWN 7108 0x1EE27, // 1EE27 ; ARABIC 7109 0x1EE28, // 1EE28 ; UNKNOWN 7110 0x1EE29, // 1EE29..1EE32; ARABIC 7111 0x1EE33, // 1EE33 ; UNKNOWN 7112 0x1EE34, // 1EE34..1EE37; ARABIC 7113 0x1EE38, // 1EE38 ; UNKNOWN 7114 0x1EE39, // 1EE39 ; ARABIC 7115 0x1EE3A, // 1EE3A ; UNKNOWN 7116 0x1EE3B, // 1EE3B ; ARABIC 7117 0x1EE3C, // 1EE3C..1EE41; UNKNOWN 7118 0x1EE42, // 1EE42 ; ARABIC 7119 0x1EE43, // 1EE43..1EE46; UNKNOWN 7120 0x1EE47, // 1EE47 ; ARABIC 7121 0x1EE48, // 1EE48 ; UNKNOWN 7122 0x1EE49, // 1EE49 ; ARABIC 7123 0x1EE4A, // 1EE4A ; UNKNOWN 7124 0x1EE4B, // 1EE4B ; ARABIC 7125 0x1EE4C, // 1EE4C ; UNKNOWN 7126 0x1EE4D, // 1EE4D..1EE4F; ARABIC 7127 0x1EE50, // 1EE50 ; UNKNOWN 7128 0x1EE51, // 1EE51..1EE52; ARABIC 7129 0x1EE53, // 1EE53 ; UNKNOWN 7130 0x1EE54, // 1EE54 ; ARABIC 7131 0x1EE55, // 1EE55..1EE56; UNKNOWN 7132 0x1EE57, // 1EE57 ; ARABIC 7133 0x1EE58, // 1EE58 ; UNKNOWN 7134 0x1EE59, // 1EE59 ; ARABIC 7135 0x1EE5A, // 1EE5A ; UNKNOWN 7136 0x1EE5B, // 1EE5B ; ARABIC 7137 0x1EE5C, // 1EE5C ; UNKNOWN 7138 0x1EE5D, // 1EE5D ; ARABIC 7139 0x1EE5E, // 1EE5E ; UNKNOWN 7140 0x1EE5F, // 1EE5F ; ARABIC 7141 0x1EE60, // 1EE60 ; UNKNOWN 7142 0x1EE61, // 1EE61..1EE62; ARABIC 7143 0x1EE63, // 1EE63 ; UNKNOWN 7144 0x1EE64, // 1EE64 ; ARABIC 7145 0x1EE65, // 1EE65..1EE66; UNKNOWN 7146 0x1EE67, // 1EE67..1EE6A; ARABIC 7147 0x1EE6B, // 1EE6B ; UNKNOWN 7148 0x1EE6C, // 1EE6C..1EE72; ARABIC 7149 0x1EE73, // 1EE73 ; UNKNOWN 7150 0x1EE74, // 1EE74..1EE77; ARABIC 7151 0x1EE78, // 1EE78 ; UNKNOWN 7152 0x1EE79, // 1EE79..1EE7C; ARABIC 7153 0x1EE7D, // 1EE7D ; UNKNOWN 7154 0x1EE7E, // 1EE7E ; ARABIC 7155 0x1EE7F, // 1EE7F ; UNKNOWN 7156 0x1EE80, // 1EE80..1EE89; ARABIC 7157 0x1EE8A, // 1EE8A ; UNKNOWN 7158 0x1EE8B, // 1EE8B..1EE9B; ARABIC 7159 0x1EE9C, // 1EE9C..1EEA0; UNKNOWN 7160 0x1EEA1, // 1EEA1..1EEA3; ARABIC 7161 0x1EEA4, // 1EEA4 ; UNKNOWN 7162 0x1EEA5, // 1EEA5..1EEA9; ARABIC 7163 0x1EEAA, // 1EEAA ; UNKNOWN 7164 0x1EEAB, // 1EEAB..1EEBB; ARABIC 7165 0x1EEBC, // 1EEBC..1EEEF; UNKNOWN 7166 0x1EEF0, // 1EEF0..1EEF1; ARABIC 7167 0x1EEF2, // 1EEF2..1EFFF; UNKNOWN 7168 0x1F000, // 1F000..1F02B; COMMON 7169 0x1F02C, // 1F02C..1F02F; UNKNOWN 7170 0x1F030, // 1F030..1F093; COMMON 7171 0x1F094, // 1F094..1F09F; UNKNOWN 7172 0x1F0A0, // 1F0A0..1F0AE; COMMON 7173 0x1F0AF, // 1F0AF..1F0B0; UNKNOWN 7174 0x1F0B1, // 1F0B1..1F0BF; COMMON 7175 0x1F0C0, // 1F0C0 ; UNKNOWN 7176 0x1F0C1, // 1F0C1..1F0CF; COMMON 7177 0x1F0D0, // 1F0D0 ; UNKNOWN 7178 0x1F0D1, // 1F0D1..1F0F5; COMMON 7179 0x1F0F6, // 1F0F6..1F0FF; UNKNOWN 7180 0x1F100, // 1F100..1F1AD; COMMON 7181 0x1F1AE, // 1F1AE..1F1E5; UNKNOWN 7182 0x1F1E6, // 1F1E6..1F1FF; COMMON 7183 0x1F200, // 1F200 ; HIRAGANA 7184 0x1F201, // 1F201..1F202; COMMON 7185 0x1F203, // 1F203..1F20F; UNKNOWN 7186 0x1F210, // 1F210..1F23B; COMMON 7187 0x1F23C, // 1F23C..1F23F; UNKNOWN 7188 0x1F240, // 1F240..1F248; COMMON 7189 0x1F249, // 1F249..1F24F; UNKNOWN 7190 0x1F250, // 1F250..1F251; COMMON 7191 0x1F252, // 1F252..1F25F; UNKNOWN 7192 0x1F260, // 1F260..1F265; COMMON 7193 0x1F266, // 1F266..1F2FF; UNKNOWN 7194 0x1F300, // 1F300..1F6D7; COMMON 7195 0x1F6D8, // 1F6D8..1F6DB; UNKNOWN 7196 0x1F6DC, // 1F6DC..1F6EC; COMMON 7197 0x1F6ED, // 1F6ED..1F6EF; UNKNOWN 7198 0x1F6F0, // 1F6F0..1F6FC; COMMON 7199 0x1F6FD, // 1F6FD..1F6FF; UNKNOWN 7200 0x1F700, // 1F700..1F776; COMMON 7201 0x1F777, // 1F777..1F77A; UNKNOWN 7202 0x1F77B, // 1F77B..1F7D9; COMMON 7203 0x1F7DA, // 1F7DA..1F7DF; UNKNOWN 7204 0x1F7E0, // 1F7E0..1F7EB; COMMON 7205 0x1F7EC, // 1F7EC..1F7EF; UNKNOWN 7206 0x1F7F0, // 1F7F0 ; COMMON 7207 0x1F7F1, // 1F7F1..1F7FF; UNKNOWN 7208 0x1F800, // 1F800..1F80B; COMMON 7209 0x1F80C, // 1F80C..1F80F; UNKNOWN 7210 0x1F810, // 1F810..1F847; COMMON 7211 0x1F848, // 1F848..1F84F; UNKNOWN 7212 0x1F850, // 1F850..1F859; COMMON 7213 0x1F85A, // 1F85A..1F85F; UNKNOWN 7214 0x1F860, // 1F860..1F887; COMMON 7215 0x1F888, // 1F888..1F88F; UNKNOWN 7216 0x1F890, // 1F890..1F8AD; COMMON 7217 0x1F8AE, // 1F8AE..1F8AF; UNKNOWN 7218 0x1F8B0, // 1F8B0..1F8BB; COMMON 7219 0x1F8BC, // 1F8BC..1F8BF; UNKNOWN 7220 0x1F8C0, // 1F8C0..1F8C1; COMMON 7221 0x1F8C2, // 1F8C2..1F8FF; UNKNOWN 7222 0x1F900, // 1F900..1FA53; COMMON 7223 0x1FA54, // 1FA54..1FA5F; UNKNOWN 7224 0x1FA60, // 1FA60..1FA6D; COMMON 7225 0x1FA6E, // 1FA6E..1FA6F; UNKNOWN 7226 0x1FA70, // 1FA70..1FA7C; COMMON 7227 0x1FA7D, // 1FA7D..1FA7F; UNKNOWN 7228 0x1FA80, // 1FA80..1FA89; COMMON 7229 0x1FA8A, // 1FA8A..1FA8E; UNKNOWN 7230 0x1FA8F, // 1FA8F..1FAC6; COMMON 7231 0x1FAC7, // 1FAC7..1FACD; UNKNOWN 7232 0x1FACE, // 1FACE..1FADC; COMMON 7233 0x1FADD, // 1FADD..1FADE; UNKNOWN 7234 0x1FADF, // 1FADF..1FAE9; COMMON 7235 0x1FAEA, // 1FAEA..1FAEF; UNKNOWN 7236 0x1FAF0, // 1FAF0..1FAF8; COMMON 7237 0x1FAF9, // 1FAF9..1FAFF; UNKNOWN 7238 0x1FB00, // 1FB00..1FB92; COMMON 7239 0x1FB93, // 1FB93 ; UNKNOWN 7240 0x1FB94, // 1FB94..1FBF9; COMMON 7241 0x1FBFA, // 1FBFA..1FFFF; UNKNOWN 7242 0x20000, // 20000..2A6DF; HAN 7243 0x2A6E0, // 2A6E0..2A6FF; UNKNOWN 7244 0x2A700, // 2A700..2B739; HAN 7245 0x2B73A, // 2B73A..2B73F; UNKNOWN 7246 0x2B740, // 2B740..2B81D; HAN 7247 0x2B81E, // 2B81E..2B81F; UNKNOWN 7248 0x2B820, // 2B820..2CEA1; HAN 7249 0x2CEA2, // 2CEA2..2CEAF; UNKNOWN 7250 0x2CEB0, // 2CEB0..2EBE0; HAN 7251 0x2EBE1, // 2EBE1..2EBEF; UNKNOWN 7252 0x2EBF0, // 2EBF0..2EE5D; HAN 7253 0x2EE5E, // 2EE5E..2F7FF; UNKNOWN 7254 0x2F800, // 2F800..2FA1D; HAN 7255 0x2FA1E, // 2FA1E..2FFFF; UNKNOWN 7256 0x30000, // 30000..3134A; HAN 7257 0x3134B, // 3134B..3134F; UNKNOWN 7258 0x31350, // 31350..323AF; HAN 7259 0x323B0, // 323B0..E0000; UNKNOWN 7260 0xE0001, // E0001 ; COMMON 7261 0xE0002, // E0002..E001F; UNKNOWN 7262 0xE0020, // E0020..E007F; COMMON 7263 0xE0080, // E0080..E00FF; UNKNOWN 7264 0xE0100, // E0100..E01EF; INHERITED 7265 0xE01F0, // E01F0..10FFFF; UNKNOWN 7266 }; 7267 7268 private static final UnicodeScript[] scripts = { 7269 COMMON, // 0000..0040 7270 LATIN, // 0041..005A 7271 COMMON, // 005B..0060 7272 LATIN, // 0061..007A 7273 COMMON, // 007B..00A9 7274 LATIN, // 00AA 7275 COMMON, // 00AB..00B9 7276 LATIN, // 00BA 7277 COMMON, // 00BB..00BF 7278 LATIN, // 00C0..00D6 7279 COMMON, // 00D7 7280 LATIN, // 00D8..00F6 7281 COMMON, // 00F7 7282 LATIN, // 00F8..02B8 7283 COMMON, // 02B9..02DF 7284 LATIN, // 02E0..02E4 7285 COMMON, // 02E5..02E9 7286 BOPOMOFO, // 02EA..02EB 7287 COMMON, // 02EC..02FF 7288 INHERITED, // 0300..036F 7289 GREEK, // 0370..0373 7290 COMMON, // 0374 7291 GREEK, // 0375..0377 7292 UNKNOWN, // 0378..0379 7293 GREEK, // 037A..037D 7294 COMMON, // 037E 7295 GREEK, // 037F 7296 UNKNOWN, // 0380..0383 7297 GREEK, // 0384 7298 COMMON, // 0385 7299 GREEK, // 0386 7300 COMMON, // 0387 7301 GREEK, // 0388..038A 7302 UNKNOWN, // 038B 7303 GREEK, // 038C 7304 UNKNOWN, // 038D 7305 GREEK, // 038E..03A1 7306 UNKNOWN, // 03A2 7307 GREEK, // 03A3..03E1 7308 COPTIC, // 03E2..03EF 7309 GREEK, // 03F0..03FF 7310 CYRILLIC, // 0400..0484 7311 INHERITED, // 0485..0486 7312 CYRILLIC, // 0487..052F 7313 UNKNOWN, // 0530 7314 ARMENIAN, // 0531..0556 7315 UNKNOWN, // 0557..0558 7316 ARMENIAN, // 0559..058A 7317 UNKNOWN, // 058B..058C 7318 ARMENIAN, // 058D..058F 7319 UNKNOWN, // 0590 7320 HEBREW, // 0591..05C7 7321 UNKNOWN, // 05C8..05CF 7322 HEBREW, // 05D0..05EA 7323 UNKNOWN, // 05EB..05EE 7324 HEBREW, // 05EF..05F4 7325 UNKNOWN, // 05F5..05FF 7326 ARABIC, // 0600..0604 7327 COMMON, // 0605 7328 ARABIC, // 0606..060B 7329 COMMON, // 060C 7330 ARABIC, // 060D..061A 7331 COMMON, // 061B 7332 ARABIC, // 061C..061E 7333 COMMON, // 061F 7334 ARABIC, // 0620..063F 7335 COMMON, // 0640 7336 ARABIC, // 0641..064A 7337 INHERITED, // 064B..0655 7338 ARABIC, // 0656..066F 7339 INHERITED, // 0670 7340 ARABIC, // 0671..06DC 7341 COMMON, // 06DD 7342 ARABIC, // 06DE..06FF 7343 SYRIAC, // 0700..070D 7344 UNKNOWN, // 070E 7345 SYRIAC, // 070F..074A 7346 UNKNOWN, // 074B..074C 7347 SYRIAC, // 074D..074F 7348 ARABIC, // 0750..077F 7349 THAANA, // 0780..07B1 7350 UNKNOWN, // 07B2..07BF 7351 NKO, // 07C0..07FA 7352 UNKNOWN, // 07FB..07FC 7353 NKO, // 07FD..07FF 7354 SAMARITAN, // 0800..082D 7355 UNKNOWN, // 082E..082F 7356 SAMARITAN, // 0830..083E 7357 UNKNOWN, // 083F 7358 MANDAIC, // 0840..085B 7359 UNKNOWN, // 085C..085D 7360 MANDAIC, // 085E 7361 UNKNOWN, // 085F 7362 SYRIAC, // 0860..086A 7363 UNKNOWN, // 086B..086F 7364 ARABIC, // 0870..088E 7365 UNKNOWN, // 088F 7366 ARABIC, // 0890..0891 7367 UNKNOWN, // 0892..0896 7368 ARABIC, // 0897..08E1 7369 COMMON, // 08E2 7370 ARABIC, // 08E3..08FF 7371 DEVANAGARI, // 0900..0950 7372 INHERITED, // 0951..0954 7373 DEVANAGARI, // 0955..0963 7374 COMMON, // 0964..0965 7375 DEVANAGARI, // 0966..097F 7376 BENGALI, // 0980..0983 7377 UNKNOWN, // 0984 7378 BENGALI, // 0985..098C 7379 UNKNOWN, // 098D..098E 7380 BENGALI, // 098F..0990 7381 UNKNOWN, // 0991..0992 7382 BENGALI, // 0993..09A8 7383 UNKNOWN, // 09A9 7384 BENGALI, // 09AA..09B0 7385 UNKNOWN, // 09B1 7386 BENGALI, // 09B2 7387 UNKNOWN, // 09B3..09B5 7388 BENGALI, // 09B6..09B9 7389 UNKNOWN, // 09BA..09BB 7390 BENGALI, // 09BC..09C4 7391 UNKNOWN, // 09C5..09C6 7392 BENGALI, // 09C7..09C8 7393 UNKNOWN, // 09C9..09CA 7394 BENGALI, // 09CB..09CE 7395 UNKNOWN, // 09CF..09D6 7396 BENGALI, // 09D7 7397 UNKNOWN, // 09D8..09DB 7398 BENGALI, // 09DC..09DD 7399 UNKNOWN, // 09DE 7400 BENGALI, // 09DF..09E3 7401 UNKNOWN, // 09E4..09E5 7402 BENGALI, // 09E6..09FE 7403 UNKNOWN, // 09FF..0A00 7404 GURMUKHI, // 0A01..0A03 7405 UNKNOWN, // 0A04 7406 GURMUKHI, // 0A05..0A0A 7407 UNKNOWN, // 0A0B..0A0E 7408 GURMUKHI, // 0A0F..0A10 7409 UNKNOWN, // 0A11..0A12 7410 GURMUKHI, // 0A13..0A28 7411 UNKNOWN, // 0A29 7412 GURMUKHI, // 0A2A..0A30 7413 UNKNOWN, // 0A31 7414 GURMUKHI, // 0A32..0A33 7415 UNKNOWN, // 0A34 7416 GURMUKHI, // 0A35..0A36 7417 UNKNOWN, // 0A37 7418 GURMUKHI, // 0A38..0A39 7419 UNKNOWN, // 0A3A..0A3B 7420 GURMUKHI, // 0A3C 7421 UNKNOWN, // 0A3D 7422 GURMUKHI, // 0A3E..0A42 7423 UNKNOWN, // 0A43..0A46 7424 GURMUKHI, // 0A47..0A48 7425 UNKNOWN, // 0A49..0A4A 7426 GURMUKHI, // 0A4B..0A4D 7427 UNKNOWN, // 0A4E..0A50 7428 GURMUKHI, // 0A51 7429 UNKNOWN, // 0A52..0A58 7430 GURMUKHI, // 0A59..0A5C 7431 UNKNOWN, // 0A5D 7432 GURMUKHI, // 0A5E 7433 UNKNOWN, // 0A5F..0A65 7434 GURMUKHI, // 0A66..0A76 7435 UNKNOWN, // 0A77..0A80 7436 GUJARATI, // 0A81..0A83 7437 UNKNOWN, // 0A84 7438 GUJARATI, // 0A85..0A8D 7439 UNKNOWN, // 0A8E 7440 GUJARATI, // 0A8F..0A91 7441 UNKNOWN, // 0A92 7442 GUJARATI, // 0A93..0AA8 7443 UNKNOWN, // 0AA9 7444 GUJARATI, // 0AAA..0AB0 7445 UNKNOWN, // 0AB1 7446 GUJARATI, // 0AB2..0AB3 7447 UNKNOWN, // 0AB4 7448 GUJARATI, // 0AB5..0AB9 7449 UNKNOWN, // 0ABA..0ABB 7450 GUJARATI, // 0ABC..0AC5 7451 UNKNOWN, // 0AC6 7452 GUJARATI, // 0AC7..0AC9 7453 UNKNOWN, // 0ACA 7454 GUJARATI, // 0ACB..0ACD 7455 UNKNOWN, // 0ACE..0ACF 7456 GUJARATI, // 0AD0 7457 UNKNOWN, // 0AD1..0ADF 7458 GUJARATI, // 0AE0..0AE3 7459 UNKNOWN, // 0AE4..0AE5 7460 GUJARATI, // 0AE6..0AF1 7461 UNKNOWN, // 0AF2..0AF8 7462 GUJARATI, // 0AF9..0AFF 7463 UNKNOWN, // 0B00 7464 ORIYA, // 0B01..0B03 7465 UNKNOWN, // 0B04 7466 ORIYA, // 0B05..0B0C 7467 UNKNOWN, // 0B0D..0B0E 7468 ORIYA, // 0B0F..0B10 7469 UNKNOWN, // 0B11..0B12 7470 ORIYA, // 0B13..0B28 7471 UNKNOWN, // 0B29 7472 ORIYA, // 0B2A..0B30 7473 UNKNOWN, // 0B31 7474 ORIYA, // 0B32..0B33 7475 UNKNOWN, // 0B34 7476 ORIYA, // 0B35..0B39 7477 UNKNOWN, // 0B3A..0B3B 7478 ORIYA, // 0B3C..0B44 7479 UNKNOWN, // 0B45..0B46 7480 ORIYA, // 0B47..0B48 7481 UNKNOWN, // 0B49..0B4A 7482 ORIYA, // 0B4B..0B4D 7483 UNKNOWN, // 0B4E..0B54 7484 ORIYA, // 0B55..0B57 7485 UNKNOWN, // 0B58..0B5B 7486 ORIYA, // 0B5C..0B5D 7487 UNKNOWN, // 0B5E 7488 ORIYA, // 0B5F..0B63 7489 UNKNOWN, // 0B64..0B65 7490 ORIYA, // 0B66..0B77 7491 UNKNOWN, // 0B78..0B81 7492 TAMIL, // 0B82..0B83 7493 UNKNOWN, // 0B84 7494 TAMIL, // 0B85..0B8A 7495 UNKNOWN, // 0B8B..0B8D 7496 TAMIL, // 0B8E..0B90 7497 UNKNOWN, // 0B91 7498 TAMIL, // 0B92..0B95 7499 UNKNOWN, // 0B96..0B98 7500 TAMIL, // 0B99..0B9A 7501 UNKNOWN, // 0B9B 7502 TAMIL, // 0B9C 7503 UNKNOWN, // 0B9D 7504 TAMIL, // 0B9E..0B9F 7505 UNKNOWN, // 0BA0..0BA2 7506 TAMIL, // 0BA3..0BA4 7507 UNKNOWN, // 0BA5..0BA7 7508 TAMIL, // 0BA8..0BAA 7509 UNKNOWN, // 0BAB..0BAD 7510 TAMIL, // 0BAE..0BB9 7511 UNKNOWN, // 0BBA..0BBD 7512 TAMIL, // 0BBE..0BC2 7513 UNKNOWN, // 0BC3..0BC5 7514 TAMIL, // 0BC6..0BC8 7515 UNKNOWN, // 0BC9 7516 TAMIL, // 0BCA..0BCD 7517 UNKNOWN, // 0BCE..0BCF 7518 TAMIL, // 0BD0 7519 UNKNOWN, // 0BD1..0BD6 7520 TAMIL, // 0BD7 7521 UNKNOWN, // 0BD8..0BE5 7522 TAMIL, // 0BE6..0BFA 7523 UNKNOWN, // 0BFB..0BFF 7524 TELUGU, // 0C00..0C0C 7525 UNKNOWN, // 0C0D 7526 TELUGU, // 0C0E..0C10 7527 UNKNOWN, // 0C11 7528 TELUGU, // 0C12..0C28 7529 UNKNOWN, // 0C29 7530 TELUGU, // 0C2A..0C39 7531 UNKNOWN, // 0C3A..0C3B 7532 TELUGU, // 0C3C..0C44 7533 UNKNOWN, // 0C45 7534 TELUGU, // 0C46..0C48 7535 UNKNOWN, // 0C49 7536 TELUGU, // 0C4A..0C4D 7537 UNKNOWN, // 0C4E..0C54 7538 TELUGU, // 0C55..0C56 7539 UNKNOWN, // 0C57 7540 TELUGU, // 0C58..0C5A 7541 UNKNOWN, // 0C5B..0C5C 7542 TELUGU, // 0C5D 7543 UNKNOWN, // 0C5E..0C5F 7544 TELUGU, // 0C60..0C63 7545 UNKNOWN, // 0C64..0C65 7546 TELUGU, // 0C66..0C6F 7547 UNKNOWN, // 0C70..0C76 7548 TELUGU, // 0C77..0C7F 7549 KANNADA, // 0C80..0C8C 7550 UNKNOWN, // 0C8D 7551 KANNADA, // 0C8E..0C90 7552 UNKNOWN, // 0C91 7553 KANNADA, // 0C92..0CA8 7554 UNKNOWN, // 0CA9 7555 KANNADA, // 0CAA..0CB3 7556 UNKNOWN, // 0CB4 7557 KANNADA, // 0CB5..0CB9 7558 UNKNOWN, // 0CBA..0CBB 7559 KANNADA, // 0CBC..0CC4 7560 UNKNOWN, // 0CC5 7561 KANNADA, // 0CC6..0CC8 7562 UNKNOWN, // 0CC9 7563 KANNADA, // 0CCA..0CCD 7564 UNKNOWN, // 0CCE..0CD4 7565 KANNADA, // 0CD5..0CD6 7566 UNKNOWN, // 0CD7..0CDC 7567 KANNADA, // 0CDD..0CDE 7568 UNKNOWN, // 0CDF 7569 KANNADA, // 0CE0..0CE3 7570 UNKNOWN, // 0CE4..0CE5 7571 KANNADA, // 0CE6..0CEF 7572 UNKNOWN, // 0CF0 7573 KANNADA, // 0CF1..0CF3 7574 UNKNOWN, // 0CF4..0CFF 7575 MALAYALAM, // 0D00..0D0C 7576 UNKNOWN, // 0D0D 7577 MALAYALAM, // 0D0E..0D10 7578 UNKNOWN, // 0D11 7579 MALAYALAM, // 0D12..0D44 7580 UNKNOWN, // 0D45 7581 MALAYALAM, // 0D46..0D48 7582 UNKNOWN, // 0D49 7583 MALAYALAM, // 0D4A..0D4F 7584 UNKNOWN, // 0D50..0D53 7585 MALAYALAM, // 0D54..0D63 7586 UNKNOWN, // 0D64..0D65 7587 MALAYALAM, // 0D66..0D7F 7588 UNKNOWN, // 0D80 7589 SINHALA, // 0D81..0D83 7590 UNKNOWN, // 0D84 7591 SINHALA, // 0D85..0D96 7592 UNKNOWN, // 0D97..0D99 7593 SINHALA, // 0D9A..0DB1 7594 UNKNOWN, // 0DB2 7595 SINHALA, // 0DB3..0DBB 7596 UNKNOWN, // 0DBC 7597 SINHALA, // 0DBD 7598 UNKNOWN, // 0DBE..0DBF 7599 SINHALA, // 0DC0..0DC6 7600 UNKNOWN, // 0DC7..0DC9 7601 SINHALA, // 0DCA 7602 UNKNOWN, // 0DCB..0DCE 7603 SINHALA, // 0DCF..0DD4 7604 UNKNOWN, // 0DD5 7605 SINHALA, // 0DD6 7606 UNKNOWN, // 0DD7 7607 SINHALA, // 0DD8..0DDF 7608 UNKNOWN, // 0DE0..0DE5 7609 SINHALA, // 0DE6..0DEF 7610 UNKNOWN, // 0DF0..0DF1 7611 SINHALA, // 0DF2..0DF4 7612 UNKNOWN, // 0DF5..0E00 7613 THAI, // 0E01..0E3A 7614 UNKNOWN, // 0E3B..0E3E 7615 COMMON, // 0E3F 7616 THAI, // 0E40..0E5B 7617 UNKNOWN, // 0E5C..0E80 7618 LAO, // 0E81..0E82 7619 UNKNOWN, // 0E83 7620 LAO, // 0E84 7621 UNKNOWN, // 0E85 7622 LAO, // 0E86..0E8A 7623 UNKNOWN, // 0E8B 7624 LAO, // 0E8C..0EA3 7625 UNKNOWN, // 0EA4 7626 LAO, // 0EA5 7627 UNKNOWN, // 0EA6 7628 LAO, // 0EA7..0EBD 7629 UNKNOWN, // 0EBE..0EBF 7630 LAO, // 0EC0..0EC4 7631 UNKNOWN, // 0EC5 7632 LAO, // 0EC6 7633 UNKNOWN, // 0EC7 7634 LAO, // 0EC8..0ECE 7635 UNKNOWN, // 0ECF 7636 LAO, // 0ED0..0ED9 7637 UNKNOWN, // 0EDA..0EDB 7638 LAO, // 0EDC..0EDF 7639 UNKNOWN, // 0EE0..0EFF 7640 TIBETAN, // 0F00..0F47 7641 UNKNOWN, // 0F48 7642 TIBETAN, // 0F49..0F6C 7643 UNKNOWN, // 0F6D..0F70 7644 TIBETAN, // 0F71..0F97 7645 UNKNOWN, // 0F98 7646 TIBETAN, // 0F99..0FBC 7647 UNKNOWN, // 0FBD 7648 TIBETAN, // 0FBE..0FCC 7649 UNKNOWN, // 0FCD 7650 TIBETAN, // 0FCE..0FD4 7651 COMMON, // 0FD5..0FD8 7652 TIBETAN, // 0FD9..0FDA 7653 UNKNOWN, // 0FDB..0FFF 7654 MYANMAR, // 1000..109F 7655 GEORGIAN, // 10A0..10C5 7656 UNKNOWN, // 10C6 7657 GEORGIAN, // 10C7 7658 UNKNOWN, // 10C8..10CC 7659 GEORGIAN, // 10CD 7660 UNKNOWN, // 10CE..10CF 7661 GEORGIAN, // 10D0..10FA 7662 COMMON, // 10FB 7663 GEORGIAN, // 10FC..10FF 7664 HANGUL, // 1100..11FF 7665 ETHIOPIC, // 1200..1248 7666 UNKNOWN, // 1249 7667 ETHIOPIC, // 124A..124D 7668 UNKNOWN, // 124E..124F 7669 ETHIOPIC, // 1250..1256 7670 UNKNOWN, // 1257 7671 ETHIOPIC, // 1258 7672 UNKNOWN, // 1259 7673 ETHIOPIC, // 125A..125D 7674 UNKNOWN, // 125E..125F 7675 ETHIOPIC, // 1260..1288 7676 UNKNOWN, // 1289 7677 ETHIOPIC, // 128A..128D 7678 UNKNOWN, // 128E..128F 7679 ETHIOPIC, // 1290..12B0 7680 UNKNOWN, // 12B1 7681 ETHIOPIC, // 12B2..12B5 7682 UNKNOWN, // 12B6..12B7 7683 ETHIOPIC, // 12B8..12BE 7684 UNKNOWN, // 12BF 7685 ETHIOPIC, // 12C0 7686 UNKNOWN, // 12C1 7687 ETHIOPIC, // 12C2..12C5 7688 UNKNOWN, // 12C6..12C7 7689 ETHIOPIC, // 12C8..12D6 7690 UNKNOWN, // 12D7 7691 ETHIOPIC, // 12D8..1310 7692 UNKNOWN, // 1311 7693 ETHIOPIC, // 1312..1315 7694 UNKNOWN, // 1316..1317 7695 ETHIOPIC, // 1318..135A 7696 UNKNOWN, // 135B..135C 7697 ETHIOPIC, // 135D..137C 7698 UNKNOWN, // 137D..137F 7699 ETHIOPIC, // 1380..1399 7700 UNKNOWN, // 139A..139F 7701 CHEROKEE, // 13A0..13F5 7702 UNKNOWN, // 13F6..13F7 7703 CHEROKEE, // 13F8..13FD 7704 UNKNOWN, // 13FE..13FF 7705 CANADIAN_ABORIGINAL, // 1400..167F 7706 OGHAM, // 1680..169C 7707 UNKNOWN, // 169D..169F 7708 RUNIC, // 16A0..16EA 7709 COMMON, // 16EB..16ED 7710 RUNIC, // 16EE..16F8 7711 UNKNOWN, // 16F9..16FF 7712 TAGALOG, // 1700..1715 7713 UNKNOWN, // 1716..171E 7714 TAGALOG, // 171F 7715 HANUNOO, // 1720..1734 7716 COMMON, // 1735..1736 7717 UNKNOWN, // 1737..173F 7718 BUHID, // 1740..1753 7719 UNKNOWN, // 1754..175F 7720 TAGBANWA, // 1760..176C 7721 UNKNOWN, // 176D 7722 TAGBANWA, // 176E..1770 7723 UNKNOWN, // 1771 7724 TAGBANWA, // 1772..1773 7725 UNKNOWN, // 1774..177F 7726 KHMER, // 1780..17DD 7727 UNKNOWN, // 17DE..17DF 7728 KHMER, // 17E0..17E9 7729 UNKNOWN, // 17EA..17EF 7730 KHMER, // 17F0..17F9 7731 UNKNOWN, // 17FA..17FF 7732 MONGOLIAN, // 1800..1801 7733 COMMON, // 1802..1803 7734 MONGOLIAN, // 1804 7735 COMMON, // 1805 7736 MONGOLIAN, // 1806..1819 7737 UNKNOWN, // 181A..181F 7738 MONGOLIAN, // 1820..1878 7739 UNKNOWN, // 1879..187F 7740 MONGOLIAN, // 1880..18AA 7741 UNKNOWN, // 18AB..18AF 7742 CANADIAN_ABORIGINAL, // 18B0..18F5 7743 UNKNOWN, // 18F6..18FF 7744 LIMBU, // 1900..191E 7745 UNKNOWN, // 191F 7746 LIMBU, // 1920..192B 7747 UNKNOWN, // 192C..192F 7748 LIMBU, // 1930..193B 7749 UNKNOWN, // 193C..193F 7750 LIMBU, // 1940 7751 UNKNOWN, // 1941..1943 7752 LIMBU, // 1944..194F 7753 TAI_LE, // 1950..196D 7754 UNKNOWN, // 196E..196F 7755 TAI_LE, // 1970..1974 7756 UNKNOWN, // 1975..197F 7757 NEW_TAI_LUE, // 1980..19AB 7758 UNKNOWN, // 19AC..19AF 7759 NEW_TAI_LUE, // 19B0..19C9 7760 UNKNOWN, // 19CA..19CF 7761 NEW_TAI_LUE, // 19D0..19DA 7762 UNKNOWN, // 19DB..19DD 7763 NEW_TAI_LUE, // 19DE..19DF 7764 KHMER, // 19E0..19FF 7765 BUGINESE, // 1A00..1A1B 7766 UNKNOWN, // 1A1C..1A1D 7767 BUGINESE, // 1A1E..1A1F 7768 TAI_THAM, // 1A20..1A5E 7769 UNKNOWN, // 1A5F 7770 TAI_THAM, // 1A60..1A7C 7771 UNKNOWN, // 1A7D..1A7E 7772 TAI_THAM, // 1A7F..1A89 7773 UNKNOWN, // 1A8A..1A8F 7774 TAI_THAM, // 1A90..1A99 7775 UNKNOWN, // 1A9A..1A9F 7776 TAI_THAM, // 1AA0..1AAD 7777 UNKNOWN, // 1AAE..1AAF 7778 INHERITED, // 1AB0..1ACE 7779 UNKNOWN, // 1ACF..1AFF 7780 BALINESE, // 1B00..1B4C 7781 UNKNOWN, // 1B4D 7782 BALINESE, // 1B4E..1B7F 7783 SUNDANESE, // 1B80..1BBF 7784 BATAK, // 1BC0..1BF3 7785 UNKNOWN, // 1BF4..1BFB 7786 BATAK, // 1BFC..1BFF 7787 LEPCHA, // 1C00..1C37 7788 UNKNOWN, // 1C38..1C3A 7789 LEPCHA, // 1C3B..1C49 7790 UNKNOWN, // 1C4A..1C4C 7791 LEPCHA, // 1C4D..1C4F 7792 OL_CHIKI, // 1C50..1C7F 7793 CYRILLIC, // 1C80..1C8A 7794 UNKNOWN, // 1C8B..1C8F 7795 GEORGIAN, // 1C90..1CBA 7796 UNKNOWN, // 1CBB..1CBC 7797 GEORGIAN, // 1CBD..1CBF 7798 SUNDANESE, // 1CC0..1CC7 7799 UNKNOWN, // 1CC8..1CCF 7800 INHERITED, // 1CD0..1CD2 7801 COMMON, // 1CD3 7802 INHERITED, // 1CD4..1CE0 7803 COMMON, // 1CE1 7804 INHERITED, // 1CE2..1CE8 7805 COMMON, // 1CE9..1CEC 7806 INHERITED, // 1CED 7807 COMMON, // 1CEE..1CF3 7808 INHERITED, // 1CF4 7809 COMMON, // 1CF5..1CF7 7810 INHERITED, // 1CF8..1CF9 7811 COMMON, // 1CFA 7812 UNKNOWN, // 1CFB..1CFF 7813 LATIN, // 1D00..1D25 7814 GREEK, // 1D26..1D2A 7815 CYRILLIC, // 1D2B 7816 LATIN, // 1D2C..1D5C 7817 GREEK, // 1D5D..1D61 7818 LATIN, // 1D62..1D65 7819 GREEK, // 1D66..1D6A 7820 LATIN, // 1D6B..1D77 7821 CYRILLIC, // 1D78 7822 LATIN, // 1D79..1DBE 7823 GREEK, // 1DBF 7824 INHERITED, // 1DC0..1DFF 7825 LATIN, // 1E00..1EFF 7826 GREEK, // 1F00..1F15 7827 UNKNOWN, // 1F16..1F17 7828 GREEK, // 1F18..1F1D 7829 UNKNOWN, // 1F1E..1F1F 7830 GREEK, // 1F20..1F45 7831 UNKNOWN, // 1F46..1F47 7832 GREEK, // 1F48..1F4D 7833 UNKNOWN, // 1F4E..1F4F 7834 GREEK, // 1F50..1F57 7835 UNKNOWN, // 1F58 7836 GREEK, // 1F59 7837 UNKNOWN, // 1F5A 7838 GREEK, // 1F5B 7839 UNKNOWN, // 1F5C 7840 GREEK, // 1F5D 7841 UNKNOWN, // 1F5E 7842 GREEK, // 1F5F..1F7D 7843 UNKNOWN, // 1F7E..1F7F 7844 GREEK, // 1F80..1FB4 7845 UNKNOWN, // 1FB5 7846 GREEK, // 1FB6..1FC4 7847 UNKNOWN, // 1FC5 7848 GREEK, // 1FC6..1FD3 7849 UNKNOWN, // 1FD4..1FD5 7850 GREEK, // 1FD6..1FDB 7851 UNKNOWN, // 1FDC 7852 GREEK, // 1FDD..1FEF 7853 UNKNOWN, // 1FF0..1FF1 7854 GREEK, // 1FF2..1FF4 7855 UNKNOWN, // 1FF5 7856 GREEK, // 1FF6..1FFE 7857 UNKNOWN, // 1FFF 7858 COMMON, // 2000..200B 7859 INHERITED, // 200C..200D 7860 COMMON, // 200E..2064 7861 UNKNOWN, // 2065 7862 COMMON, // 2066..2070 7863 LATIN, // 2071 7864 UNKNOWN, // 2072..2073 7865 COMMON, // 2074..207E 7866 LATIN, // 207F 7867 COMMON, // 2080..208E 7868 UNKNOWN, // 208F 7869 LATIN, // 2090..209C 7870 UNKNOWN, // 209D..209F 7871 COMMON, // 20A0..20C0 7872 UNKNOWN, // 20C1..20CF 7873 INHERITED, // 20D0..20F0 7874 UNKNOWN, // 20F1..20FF 7875 COMMON, // 2100..2125 7876 GREEK, // 2126 7877 COMMON, // 2127..2129 7878 LATIN, // 212A..212B 7879 COMMON, // 212C..2131 7880 LATIN, // 2132 7881 COMMON, // 2133..214D 7882 LATIN, // 214E 7883 COMMON, // 214F..215F 7884 LATIN, // 2160..2188 7885 COMMON, // 2189..218B 7886 UNKNOWN, // 218C..218F 7887 COMMON, // 2190..2429 7888 UNKNOWN, // 242A..243F 7889 COMMON, // 2440..244A 7890 UNKNOWN, // 244B..245F 7891 COMMON, // 2460..27FF 7892 BRAILLE, // 2800..28FF 7893 COMMON, // 2900..2B73 7894 UNKNOWN, // 2B74..2B75 7895 COMMON, // 2B76..2B95 7896 UNKNOWN, // 2B96 7897 COMMON, // 2B97..2BFF 7898 GLAGOLITIC, // 2C00..2C5F 7899 LATIN, // 2C60..2C7F 7900 COPTIC, // 2C80..2CF3 7901 UNKNOWN, // 2CF4..2CF8 7902 COPTIC, // 2CF9..2CFF 7903 GEORGIAN, // 2D00..2D25 7904 UNKNOWN, // 2D26 7905 GEORGIAN, // 2D27 7906 UNKNOWN, // 2D28..2D2C 7907 GEORGIAN, // 2D2D 7908 UNKNOWN, // 2D2E..2D2F 7909 TIFINAGH, // 2D30..2D67 7910 UNKNOWN, // 2D68..2D6E 7911 TIFINAGH, // 2D6F..2D70 7912 UNKNOWN, // 2D71..2D7E 7913 TIFINAGH, // 2D7F 7914 ETHIOPIC, // 2D80..2D96 7915 UNKNOWN, // 2D97..2D9F 7916 ETHIOPIC, // 2DA0..2DA6 7917 UNKNOWN, // 2DA7 7918 ETHIOPIC, // 2DA8..2DAE 7919 UNKNOWN, // 2DAF 7920 ETHIOPIC, // 2DB0..2DB6 7921 UNKNOWN, // 2DB7 7922 ETHIOPIC, // 2DB8..2DBE 7923 UNKNOWN, // 2DBF 7924 ETHIOPIC, // 2DC0..2DC6 7925 UNKNOWN, // 2DC7 7926 ETHIOPIC, // 2DC8..2DCE 7927 UNKNOWN, // 2DCF 7928 ETHIOPIC, // 2DD0..2DD6 7929 UNKNOWN, // 2DD7 7930 ETHIOPIC, // 2DD8..2DDE 7931 UNKNOWN, // 2DDF 7932 CYRILLIC, // 2DE0..2DFF 7933 COMMON, // 2E00..2E5D 7934 UNKNOWN, // 2E5E..2E7F 7935 HAN, // 2E80..2E99 7936 UNKNOWN, // 2E9A 7937 HAN, // 2E9B..2EF3 7938 UNKNOWN, // 2EF4..2EFF 7939 HAN, // 2F00..2FD5 7940 UNKNOWN, // 2FD6..2FEF 7941 COMMON, // 2FF0..3004 7942 HAN, // 3005 7943 COMMON, // 3006 7944 HAN, // 3007 7945 COMMON, // 3008..3020 7946 HAN, // 3021..3029 7947 INHERITED, // 302A..302D 7948 HANGUL, // 302E..302F 7949 COMMON, // 3030..3037 7950 HAN, // 3038..303B 7951 COMMON, // 303C..303F 7952 UNKNOWN, // 3040 7953 HIRAGANA, // 3041..3096 7954 UNKNOWN, // 3097..3098 7955 INHERITED, // 3099..309A 7956 COMMON, // 309B..309C 7957 HIRAGANA, // 309D..309F 7958 COMMON, // 30A0 7959 KATAKANA, // 30A1..30FA 7960 COMMON, // 30FB..30FC 7961 KATAKANA, // 30FD..30FF 7962 UNKNOWN, // 3100..3104 7963 BOPOMOFO, // 3105..312F 7964 UNKNOWN, // 3130 7965 HANGUL, // 3131..318E 7966 UNKNOWN, // 318F 7967 COMMON, // 3190..319F 7968 BOPOMOFO, // 31A0..31BF 7969 COMMON, // 31C0..31E5 7970 UNKNOWN, // 31E6..31EE 7971 COMMON, // 31EF 7972 KATAKANA, // 31F0..31FF 7973 HANGUL, // 3200..321E 7974 UNKNOWN, // 321F 7975 COMMON, // 3220..325F 7976 HANGUL, // 3260..327E 7977 COMMON, // 327F..32CF 7978 KATAKANA, // 32D0..32FE 7979 COMMON, // 32FF 7980 KATAKANA, // 3300..3357 7981 COMMON, // 3358..33FF 7982 HAN, // 3400..4DBF 7983 COMMON, // 4DC0..4DFF 7984 HAN, // 4E00..9FFF 7985 YI, // A000..A48C 7986 UNKNOWN, // A48D..A48F 7987 YI, // A490..A4C6 7988 UNKNOWN, // A4C7..A4CF 7989 LISU, // A4D0..A4FF 7990 VAI, // A500..A62B 7991 UNKNOWN, // A62C..A63F 7992 CYRILLIC, // A640..A69F 7993 BAMUM, // A6A0..A6F7 7994 UNKNOWN, // A6F8..A6FF 7995 COMMON, // A700..A721 7996 LATIN, // A722..A787 7997 COMMON, // A788..A78A 7998 LATIN, // A78B..A7CD 7999 UNKNOWN, // A7CE..A7CF 8000 LATIN, // A7D0..A7D1 8001 UNKNOWN, // A7D2 8002 LATIN, // A7D3 8003 UNKNOWN, // A7D4 8004 LATIN, // A7D5..A7DC 8005 UNKNOWN, // A7DD..A7F1 8006 LATIN, // A7F2..A7FF 8007 SYLOTI_NAGRI, // A800..A82C 8008 UNKNOWN, // A82D..A82F 8009 COMMON, // A830..A839 8010 UNKNOWN, // A83A..A83F 8011 PHAGS_PA, // A840..A877 8012 UNKNOWN, // A878..A87F 8013 SAURASHTRA, // A880..A8C5 8014 UNKNOWN, // A8C6..A8CD 8015 SAURASHTRA, // A8CE..A8D9 8016 UNKNOWN, // A8DA..A8DF 8017 DEVANAGARI, // A8E0..A8FF 8018 KAYAH_LI, // A900..A92D 8019 COMMON, // A92E 8020 KAYAH_LI, // A92F 8021 REJANG, // A930..A953 8022 UNKNOWN, // A954..A95E 8023 REJANG, // A95F 8024 HANGUL, // A960..A97C 8025 UNKNOWN, // A97D..A97F 8026 JAVANESE, // A980..A9CD 8027 UNKNOWN, // A9CE 8028 COMMON, // A9CF 8029 JAVANESE, // A9D0..A9D9 8030 UNKNOWN, // A9DA..A9DD 8031 JAVANESE, // A9DE..A9DF 8032 MYANMAR, // A9E0..A9FE 8033 UNKNOWN, // A9FF 8034 CHAM, // AA00..AA36 8035 UNKNOWN, // AA37..AA3F 8036 CHAM, // AA40..AA4D 8037 UNKNOWN, // AA4E..AA4F 8038 CHAM, // AA50..AA59 8039 UNKNOWN, // AA5A..AA5B 8040 CHAM, // AA5C..AA5F 8041 MYANMAR, // AA60..AA7F 8042 TAI_VIET, // AA80..AAC2 8043 UNKNOWN, // AAC3..AADA 8044 TAI_VIET, // AADB..AADF 8045 MEETEI_MAYEK, // AAE0..AAF6 8046 UNKNOWN, // AAF7..AB00 8047 ETHIOPIC, // AB01..AB06 8048 UNKNOWN, // AB07..AB08 8049 ETHIOPIC, // AB09..AB0E 8050 UNKNOWN, // AB0F..AB10 8051 ETHIOPIC, // AB11..AB16 8052 UNKNOWN, // AB17..AB1F 8053 ETHIOPIC, // AB20..AB26 8054 UNKNOWN, // AB27 8055 ETHIOPIC, // AB28..AB2E 8056 UNKNOWN, // AB2F 8057 LATIN, // AB30..AB5A 8058 COMMON, // AB5B 8059 LATIN, // AB5C..AB64 8060 GREEK, // AB65 8061 LATIN, // AB66..AB69 8062 COMMON, // AB6A..AB6B 8063 UNKNOWN, // AB6C..AB6F 8064 CHEROKEE, // AB70..ABBF 8065 MEETEI_MAYEK, // ABC0..ABED 8066 UNKNOWN, // ABEE..ABEF 8067 MEETEI_MAYEK, // ABF0..ABF9 8068 UNKNOWN, // ABFA..ABFF 8069 HANGUL, // AC00..D7A3 8070 UNKNOWN, // D7A4..D7AF 8071 HANGUL, // D7B0..D7C6 8072 UNKNOWN, // D7C7..D7CA 8073 HANGUL, // D7CB..D7FB 8074 UNKNOWN, // D7FC..F8FF 8075 HAN, // F900..FA6D 8076 UNKNOWN, // FA6E..FA6F 8077 HAN, // FA70..FAD9 8078 UNKNOWN, // FADA..FAFF 8079 LATIN, // FB00..FB06 8080 UNKNOWN, // FB07..FB12 8081 ARMENIAN, // FB13..FB17 8082 UNKNOWN, // FB18..FB1C 8083 HEBREW, // FB1D..FB36 8084 UNKNOWN, // FB37 8085 HEBREW, // FB38..FB3C 8086 UNKNOWN, // FB3D 8087 HEBREW, // FB3E 8088 UNKNOWN, // FB3F 8089 HEBREW, // FB40..FB41 8090 UNKNOWN, // FB42 8091 HEBREW, // FB43..FB44 8092 UNKNOWN, // FB45 8093 HEBREW, // FB46..FB4F 8094 ARABIC, // FB50..FBC2 8095 UNKNOWN, // FBC3..FBD2 8096 ARABIC, // FBD3..FD3D 8097 COMMON, // FD3E..FD3F 8098 ARABIC, // FD40..FD8F 8099 UNKNOWN, // FD90..FD91 8100 ARABIC, // FD92..FDC7 8101 UNKNOWN, // FDC8..FDCE 8102 ARABIC, // FDCF 8103 UNKNOWN, // FDD0..FDEF 8104 ARABIC, // FDF0..FDFF 8105 INHERITED, // FE00..FE0F 8106 COMMON, // FE10..FE19 8107 UNKNOWN, // FE1A..FE1F 8108 INHERITED, // FE20..FE2D 8109 CYRILLIC, // FE2E..FE2F 8110 COMMON, // FE30..FE52 8111 UNKNOWN, // FE53 8112 COMMON, // FE54..FE66 8113 UNKNOWN, // FE67 8114 COMMON, // FE68..FE6B 8115 UNKNOWN, // FE6C..FE6F 8116 ARABIC, // FE70..FE74 8117 UNKNOWN, // FE75 8118 ARABIC, // FE76..FEFC 8119 UNKNOWN, // FEFD..FEFE 8120 COMMON, // FEFF 8121 UNKNOWN, // FF00 8122 COMMON, // FF01..FF20 8123 LATIN, // FF21..FF3A 8124 COMMON, // FF3B..FF40 8125 LATIN, // FF41..FF5A 8126 COMMON, // FF5B..FF65 8127 KATAKANA, // FF66..FF6F 8128 COMMON, // FF70 8129 KATAKANA, // FF71..FF9D 8130 COMMON, // FF9E..FF9F 8131 HANGUL, // FFA0..FFBE 8132 UNKNOWN, // FFBF..FFC1 8133 HANGUL, // FFC2..FFC7 8134 UNKNOWN, // FFC8..FFC9 8135 HANGUL, // FFCA..FFCF 8136 UNKNOWN, // FFD0..FFD1 8137 HANGUL, // FFD2..FFD7 8138 UNKNOWN, // FFD8..FFD9 8139 HANGUL, // FFDA..FFDC 8140 UNKNOWN, // FFDD..FFDF 8141 COMMON, // FFE0..FFE6 8142 UNKNOWN, // FFE7 8143 COMMON, // FFE8..FFEE 8144 UNKNOWN, // FFEF..FFF8 8145 COMMON, // FFF9..FFFD 8146 UNKNOWN, // FFFE..FFFF 8147 LINEAR_B, // 10000..1000B 8148 UNKNOWN, // 1000C 8149 LINEAR_B, // 1000D..10026 8150 UNKNOWN, // 10027 8151 LINEAR_B, // 10028..1003A 8152 UNKNOWN, // 1003B 8153 LINEAR_B, // 1003C..1003D 8154 UNKNOWN, // 1003E 8155 LINEAR_B, // 1003F..1004D 8156 UNKNOWN, // 1004E..1004F 8157 LINEAR_B, // 10050..1005D 8158 UNKNOWN, // 1005E..1007F 8159 LINEAR_B, // 10080..100FA 8160 UNKNOWN, // 100FB..100FF 8161 COMMON, // 10100..10102 8162 UNKNOWN, // 10103..10106 8163 COMMON, // 10107..10133 8164 UNKNOWN, // 10134..10136 8165 COMMON, // 10137..1013F 8166 GREEK, // 10140..1018E 8167 UNKNOWN, // 1018F 8168 COMMON, // 10190..1019C 8169 UNKNOWN, // 1019D..1019F 8170 GREEK, // 101A0 8171 UNKNOWN, // 101A1..101CF 8172 COMMON, // 101D0..101FC 8173 INHERITED, // 101FD 8174 UNKNOWN, // 101FE..1027F 8175 LYCIAN, // 10280..1029C 8176 UNKNOWN, // 1029D..1029F 8177 CARIAN, // 102A0..102D0 8178 UNKNOWN, // 102D1..102DF 8179 INHERITED, // 102E0 8180 COMMON, // 102E1..102FB 8181 UNKNOWN, // 102FC..102FF 8182 OLD_ITALIC, // 10300..10323 8183 UNKNOWN, // 10324..1032C 8184 OLD_ITALIC, // 1032D..1032F 8185 GOTHIC, // 10330..1034A 8186 UNKNOWN, // 1034B..1034F 8187 OLD_PERMIC, // 10350..1037A 8188 UNKNOWN, // 1037B..1037F 8189 UGARITIC, // 10380..1039D 8190 UNKNOWN, // 1039E 8191 UGARITIC, // 1039F 8192 OLD_PERSIAN, // 103A0..103C3 8193 UNKNOWN, // 103C4..103C7 8194 OLD_PERSIAN, // 103C8..103D5 8195 UNKNOWN, // 103D6..103FF 8196 DESERET, // 10400..1044F 8197 SHAVIAN, // 10450..1047F 8198 OSMANYA, // 10480..1049D 8199 UNKNOWN, // 1049E..1049F 8200 OSMANYA, // 104A0..104A9 8201 UNKNOWN, // 104AA..104AF 8202 OSAGE, // 104B0..104D3 8203 UNKNOWN, // 104D4..104D7 8204 OSAGE, // 104D8..104FB 8205 UNKNOWN, // 104FC..104FF 8206 ELBASAN, // 10500..10527 8207 UNKNOWN, // 10528..1052F 8208 CAUCASIAN_ALBANIAN, // 10530..10563 8209 UNKNOWN, // 10564..1056E 8210 CAUCASIAN_ALBANIAN, // 1056F 8211 VITHKUQI, // 10570..1057A 8212 UNKNOWN, // 1057B 8213 VITHKUQI, // 1057C..1058A 8214 UNKNOWN, // 1058B 8215 VITHKUQI, // 1058C..10592 8216 UNKNOWN, // 10593 8217 VITHKUQI, // 10594..10595 8218 UNKNOWN, // 10596 8219 VITHKUQI, // 10597..105A1 8220 UNKNOWN, // 105A2 8221 VITHKUQI, // 105A3..105B1 8222 UNKNOWN, // 105B2 8223 VITHKUQI, // 105B3..105B9 8224 UNKNOWN, // 105BA 8225 VITHKUQI, // 105BB..105BC 8226 UNKNOWN, // 105BD..105BF 8227 TODHRI, // 105C0..105F3 8228 UNKNOWN, // 105F4..105FF 8229 LINEAR_A, // 10600..10736 8230 UNKNOWN, // 10737..1073F 8231 LINEAR_A, // 10740..10755 8232 UNKNOWN, // 10756..1075F 8233 LINEAR_A, // 10760..10767 8234 UNKNOWN, // 10768..1077F 8235 LATIN, // 10780..10785 8236 UNKNOWN, // 10786 8237 LATIN, // 10787..107B0 8238 UNKNOWN, // 107B1 8239 LATIN, // 107B2..107BA 8240 UNKNOWN, // 107BB..107FF 8241 CYPRIOT, // 10800..10805 8242 UNKNOWN, // 10806..10807 8243 CYPRIOT, // 10808 8244 UNKNOWN, // 10809 8245 CYPRIOT, // 1080A..10835 8246 UNKNOWN, // 10836 8247 CYPRIOT, // 10837..10838 8248 UNKNOWN, // 10839..1083B 8249 CYPRIOT, // 1083C 8250 UNKNOWN, // 1083D..1083E 8251 CYPRIOT, // 1083F 8252 IMPERIAL_ARAMAIC, // 10840..10855 8253 UNKNOWN, // 10856 8254 IMPERIAL_ARAMAIC, // 10857..1085F 8255 PALMYRENE, // 10860..1087F 8256 NABATAEAN, // 10880..1089E 8257 UNKNOWN, // 1089F..108A6 8258 NABATAEAN, // 108A7..108AF 8259 UNKNOWN, // 108B0..108DF 8260 HATRAN, // 108E0..108F2 8261 UNKNOWN, // 108F3 8262 HATRAN, // 108F4..108F5 8263 UNKNOWN, // 108F6..108FA 8264 HATRAN, // 108FB..108FF 8265 PHOENICIAN, // 10900..1091B 8266 UNKNOWN, // 1091C..1091E 8267 PHOENICIAN, // 1091F 8268 LYDIAN, // 10920..10939 8269 UNKNOWN, // 1093A..1093E 8270 LYDIAN, // 1093F 8271 UNKNOWN, // 10940..1097F 8272 MEROITIC_HIEROGLYPHS, // 10980..1099F 8273 MEROITIC_CURSIVE, // 109A0..109B7 8274 UNKNOWN, // 109B8..109BB 8275 MEROITIC_CURSIVE, // 109BC..109CF 8276 UNKNOWN, // 109D0..109D1 8277 MEROITIC_CURSIVE, // 109D2..109FF 8278 KHAROSHTHI, // 10A00..10A03 8279 UNKNOWN, // 10A04 8280 KHAROSHTHI, // 10A05..10A06 8281 UNKNOWN, // 10A07..10A0B 8282 KHAROSHTHI, // 10A0C..10A13 8283 UNKNOWN, // 10A14 8284 KHAROSHTHI, // 10A15..10A17 8285 UNKNOWN, // 10A18 8286 KHAROSHTHI, // 10A19..10A35 8287 UNKNOWN, // 10A36..10A37 8288 KHAROSHTHI, // 10A38..10A3A 8289 UNKNOWN, // 10A3B..10A3E 8290 KHAROSHTHI, // 10A3F..10A48 8291 UNKNOWN, // 10A49..10A4F 8292 KHAROSHTHI, // 10A50..10A58 8293 UNKNOWN, // 10A59..10A5F 8294 OLD_SOUTH_ARABIAN, // 10A60..10A7F 8295 OLD_NORTH_ARABIAN, // 10A80..10A9F 8296 UNKNOWN, // 10AA0..10ABF 8297 MANICHAEAN, // 10AC0..10AE6 8298 UNKNOWN, // 10AE7..10AEA 8299 MANICHAEAN, // 10AEB..10AF6 8300 UNKNOWN, // 10AF7..10AFF 8301 AVESTAN, // 10B00..10B35 8302 UNKNOWN, // 10B36..10B38 8303 AVESTAN, // 10B39..10B3F 8304 INSCRIPTIONAL_PARTHIAN, // 10B40..10B55 8305 UNKNOWN, // 10B56..10B57 8306 INSCRIPTIONAL_PARTHIAN, // 10B58..10B5F 8307 INSCRIPTIONAL_PAHLAVI, // 10B60..10B72 8308 UNKNOWN, // 10B73..10B77 8309 INSCRIPTIONAL_PAHLAVI, // 10B78..10B7F 8310 PSALTER_PAHLAVI, // 10B80..10B91 8311 UNKNOWN, // 10B92..10B98 8312 PSALTER_PAHLAVI, // 10B99..10B9C 8313 UNKNOWN, // 10B9D..10BA8 8314 PSALTER_PAHLAVI, // 10BA9..10BAF 8315 UNKNOWN, // 10BB0..10BFF 8316 OLD_TURKIC, // 10C00..10C48 8317 UNKNOWN, // 10C49..10C7F 8318 OLD_HUNGARIAN, // 10C80..10CB2 8319 UNKNOWN, // 10CB3..10CBF 8320 OLD_HUNGARIAN, // 10CC0..10CF2 8321 UNKNOWN, // 10CF3..10CF9 8322 OLD_HUNGARIAN, // 10CFA..10CFF 8323 HANIFI_ROHINGYA, // 10D00..10D27 8324 UNKNOWN, // 10D28..10D2F 8325 HANIFI_ROHINGYA, // 10D30..10D39 8326 UNKNOWN, // 10D3A..10D3F 8327 GARAY, // 10D40..10D65 8328 UNKNOWN, // 10D66..10D68 8329 GARAY, // 10D69..10D85 8330 UNKNOWN, // 10D86..10D8D 8331 GARAY, // 10D8E..10D8F 8332 UNKNOWN, // 10D90..10E5F 8333 ARABIC, // 10E60..10E7E 8334 UNKNOWN, // 10E7F 8335 YEZIDI, // 10E80..10EA9 8336 UNKNOWN, // 10EAA 8337 YEZIDI, // 10EAB..10EAD 8338 UNKNOWN, // 10EAE..10EAF 8339 YEZIDI, // 10EB0..10EB1 8340 UNKNOWN, // 10EB2..10EC1 8341 ARABIC, // 10EC2..10EC4 8342 UNKNOWN, // 10EC5..10EFB 8343 ARABIC, // 10EFC..10EFF 8344 OLD_SOGDIAN, // 10F00..10F27 8345 UNKNOWN, // 10F28..10F2F 8346 SOGDIAN, // 10F30..10F59 8347 UNKNOWN, // 10F5A..10F6F 8348 OLD_UYGHUR, // 10F70..10F89 8349 UNKNOWN, // 10F8A..10FAF 8350 CHORASMIAN, // 10FB0..10FCB 8351 UNKNOWN, // 10FCC..10FDF 8352 ELYMAIC, // 10FE0..10FF6 8353 UNKNOWN, // 10FF7..10FFF 8354 BRAHMI, // 11000..1104D 8355 UNKNOWN, // 1104E..11051 8356 BRAHMI, // 11052..11075 8357 UNKNOWN, // 11076..1107E 8358 BRAHMI, // 1107F 8359 KAITHI, // 11080..110C2 8360 UNKNOWN, // 110C3..110CC 8361 KAITHI, // 110CD 8362 UNKNOWN, // 110CE..110CF 8363 SORA_SOMPENG, // 110D0..110E8 8364 UNKNOWN, // 110E9..110EF 8365 SORA_SOMPENG, // 110F0..110F9 8366 UNKNOWN, // 110FA..110FF 8367 CHAKMA, // 11100..11134 8368 UNKNOWN, // 11135 8369 CHAKMA, // 11136..11147 8370 UNKNOWN, // 11148..1114F 8371 MAHAJANI, // 11150..11176 8372 UNKNOWN, // 11177..1117F 8373 SHARADA, // 11180..111DF 8374 UNKNOWN, // 111E0 8375 SINHALA, // 111E1..111F4 8376 UNKNOWN, // 111F5..111FF 8377 KHOJKI, // 11200..11211 8378 UNKNOWN, // 11212 8379 KHOJKI, // 11213..11241 8380 UNKNOWN, // 11242..1127F 8381 MULTANI, // 11280..11286 8382 UNKNOWN, // 11287 8383 MULTANI, // 11288 8384 UNKNOWN, // 11289 8385 MULTANI, // 1128A..1128D 8386 UNKNOWN, // 1128E 8387 MULTANI, // 1128F..1129D 8388 UNKNOWN, // 1129E 8389 MULTANI, // 1129F..112A9 8390 UNKNOWN, // 112AA..112AF 8391 KHUDAWADI, // 112B0..112EA 8392 UNKNOWN, // 112EB..112EF 8393 KHUDAWADI, // 112F0..112F9 8394 UNKNOWN, // 112FA..112FF 8395 GRANTHA, // 11300..11303 8396 UNKNOWN, // 11304 8397 GRANTHA, // 11305..1130C 8398 UNKNOWN, // 1130D..1130E 8399 GRANTHA, // 1130F..11310 8400 UNKNOWN, // 11311..11312 8401 GRANTHA, // 11313..11328 8402 UNKNOWN, // 11329 8403 GRANTHA, // 1132A..11330 8404 UNKNOWN, // 11331 8405 GRANTHA, // 11332..11333 8406 UNKNOWN, // 11334 8407 GRANTHA, // 11335..11339 8408 UNKNOWN, // 1133A 8409 INHERITED, // 1133B 8410 GRANTHA, // 1133C..11344 8411 UNKNOWN, // 11345..11346 8412 GRANTHA, // 11347..11348 8413 UNKNOWN, // 11349..1134A 8414 GRANTHA, // 1134B..1134D 8415 UNKNOWN, // 1134E..1134F 8416 GRANTHA, // 11350 8417 UNKNOWN, // 11351..11356 8418 GRANTHA, // 11357 8419 UNKNOWN, // 11358..1135C 8420 GRANTHA, // 1135D..11363 8421 UNKNOWN, // 11364..11365 8422 GRANTHA, // 11366..1136C 8423 UNKNOWN, // 1136D..1136F 8424 GRANTHA, // 11370..11374 8425 UNKNOWN, // 11375..1137F 8426 TULU_TIGALARI, // 11380..11389 8427 UNKNOWN, // 1138A 8428 TULU_TIGALARI, // 1138B 8429 UNKNOWN, // 1138C..1138D 8430 TULU_TIGALARI, // 1138E 8431 UNKNOWN, // 1138F 8432 TULU_TIGALARI, // 11390..113B5 8433 UNKNOWN, // 113B6 8434 TULU_TIGALARI, // 113B7..113C0 8435 UNKNOWN, // 113C1 8436 TULU_TIGALARI, // 113C2 8437 UNKNOWN, // 113C3..113C4 8438 TULU_TIGALARI, // 113C5 8439 UNKNOWN, // 113C6 8440 TULU_TIGALARI, // 113C7..113CA 8441 UNKNOWN, // 113CB 8442 TULU_TIGALARI, // 113CC..113D5 8443 UNKNOWN, // 113D6 8444 TULU_TIGALARI, // 113D7..113D8 8445 UNKNOWN, // 113D9..113E0 8446 TULU_TIGALARI, // 113E1..113E2 8447 UNKNOWN, // 113E3..113FF 8448 NEWA, // 11400..1145B 8449 UNKNOWN, // 1145C 8450 NEWA, // 1145D..11461 8451 UNKNOWN, // 11462..1147F 8452 TIRHUTA, // 11480..114C7 8453 UNKNOWN, // 114C8..114CF 8454 TIRHUTA, // 114D0..114D9 8455 UNKNOWN, // 114DA..1157F 8456 SIDDHAM, // 11580..115B5 8457 UNKNOWN, // 115B6..115B7 8458 SIDDHAM, // 115B8..115DD 8459 UNKNOWN, // 115DE..115FF 8460 MODI, // 11600..11644 8461 UNKNOWN, // 11645..1164F 8462 MODI, // 11650..11659 8463 UNKNOWN, // 1165A..1165F 8464 MONGOLIAN, // 11660..1166C 8465 UNKNOWN, // 1166D..1167F 8466 TAKRI, // 11680..116B9 8467 UNKNOWN, // 116BA..116BF 8468 TAKRI, // 116C0..116C9 8469 UNKNOWN, // 116CA..116CF 8470 MYANMAR, // 116D0..116E3 8471 UNKNOWN, // 116E4..116FF 8472 AHOM, // 11700..1171A 8473 UNKNOWN, // 1171B..1171C 8474 AHOM, // 1171D..1172B 8475 UNKNOWN, // 1172C..1172F 8476 AHOM, // 11730..11746 8477 UNKNOWN, // 11747..117FF 8478 DOGRA, // 11800..1183B 8479 UNKNOWN, // 1183C..1189F 8480 WARANG_CITI, // 118A0..118F2 8481 UNKNOWN, // 118F3..118FE 8482 WARANG_CITI, // 118FF 8483 DIVES_AKURU, // 11900..11906 8484 UNKNOWN, // 11907..11908 8485 DIVES_AKURU, // 11909 8486 UNKNOWN, // 1190A..1190B 8487 DIVES_AKURU, // 1190C..11913 8488 UNKNOWN, // 11914 8489 DIVES_AKURU, // 11915..11916 8490 UNKNOWN, // 11917 8491 DIVES_AKURU, // 11918..11935 8492 UNKNOWN, // 11936 8493 DIVES_AKURU, // 11937..11938 8494 UNKNOWN, // 11939..1193A 8495 DIVES_AKURU, // 1193B..11946 8496 UNKNOWN, // 11947..1194F 8497 DIVES_AKURU, // 11950..11959 8498 UNKNOWN, // 1195A..1199F 8499 NANDINAGARI, // 119A0..119A7 8500 UNKNOWN, // 119A8..119A9 8501 NANDINAGARI, // 119AA..119D7 8502 UNKNOWN, // 119D8..119D9 8503 NANDINAGARI, // 119DA..119E4 8504 UNKNOWN, // 119E5..119FF 8505 ZANABAZAR_SQUARE, // 11A00..11A47 8506 UNKNOWN, // 11A48..11A4F 8507 SOYOMBO, // 11A50..11AA2 8508 UNKNOWN, // 11AA3..11AAF 8509 CANADIAN_ABORIGINAL, // 11AB0..11ABF 8510 PAU_CIN_HAU, // 11AC0..11AF8 8511 UNKNOWN, // 11AF9..11AFF 8512 DEVANAGARI, // 11B00..11B09 8513 UNKNOWN, // 11B0A..11BBF 8514 SUNUWAR, // 11BC0..11BE1 8515 UNKNOWN, // 11BE2..11BEF 8516 SUNUWAR, // 11BF0..11BF9 8517 UNKNOWN, // 11BFA..11BFF 8518 BHAIKSUKI, // 11C00..11C08 8519 UNKNOWN, // 11C09 8520 BHAIKSUKI, // 11C0A..11C36 8521 UNKNOWN, // 11C37 8522 BHAIKSUKI, // 11C38..11C45 8523 UNKNOWN, // 11C46..11C4F 8524 BHAIKSUKI, // 11C50..11C6C 8525 UNKNOWN, // 11C6D..11C6F 8526 MARCHEN, // 11C70..11C8F 8527 UNKNOWN, // 11C90..11C91 8528 MARCHEN, // 11C92..11CA7 8529 UNKNOWN, // 11CA8 8530 MARCHEN, // 11CA9..11CB6 8531 UNKNOWN, // 11CB7..11CFF 8532 MASARAM_GONDI, // 11D00..11D06 8533 UNKNOWN, // 11D07 8534 MASARAM_GONDI, // 11D08..11D09 8535 UNKNOWN, // 11D0A 8536 MASARAM_GONDI, // 11D0B..11D36 8537 UNKNOWN, // 11D37..11D39 8538 MASARAM_GONDI, // 11D3A 8539 UNKNOWN, // 11D3B 8540 MASARAM_GONDI, // 11D3C..11D3D 8541 UNKNOWN, // 11D3E 8542 MASARAM_GONDI, // 11D3F..11D47 8543 UNKNOWN, // 11D48..11D4F 8544 MASARAM_GONDI, // 11D50..11D59 8545 UNKNOWN, // 11D5A..11D5F 8546 GUNJALA_GONDI, // 11D60..11D65 8547 UNKNOWN, // 11D66 8548 GUNJALA_GONDI, // 11D67..11D68 8549 UNKNOWN, // 11D69 8550 GUNJALA_GONDI, // 11D6A..11D8E 8551 UNKNOWN, // 11D8F 8552 GUNJALA_GONDI, // 11D90..11D91 8553 UNKNOWN, // 11D92 8554 GUNJALA_GONDI, // 11D93..11D98 8555 UNKNOWN, // 11D99..11D9F 8556 GUNJALA_GONDI, // 11DA0..11DA9 8557 UNKNOWN, // 11DAA..11EDF 8558 MAKASAR, // 11EE0..11EF8 8559 UNKNOWN, // 11EF9..11EFF 8560 KAWI, // 11F00..11F10 8561 UNKNOWN, // 11F11 8562 KAWI, // 11F12..11F3A 8563 UNKNOWN, // 11F3B..11F3D 8564 KAWI, // 11F3E..11F5A 8565 UNKNOWN, // 11F5B..11FAF 8566 LISU, // 11FB0 8567 UNKNOWN, // 11FB1..11FBF 8568 TAMIL, // 11FC0..11FF1 8569 UNKNOWN, // 11FF2..11FFE 8570 TAMIL, // 11FFF 8571 CUNEIFORM, // 12000..12399 8572 UNKNOWN, // 1239A..123FF 8573 CUNEIFORM, // 12400..1246E 8574 UNKNOWN, // 1246F 8575 CUNEIFORM, // 12470..12474 8576 UNKNOWN, // 12475..1247F 8577 CUNEIFORM, // 12480..12543 8578 UNKNOWN, // 12544..12F8F 8579 CYPRO_MINOAN, // 12F90..12FF2 8580 UNKNOWN, // 12FF3..12FFF 8581 EGYPTIAN_HIEROGLYPHS, // 13000..13455 8582 UNKNOWN, // 13456..1345F 8583 EGYPTIAN_HIEROGLYPHS, // 13460..143FA 8584 UNKNOWN, // 143FB..143FF 8585 ANATOLIAN_HIEROGLYPHS, // 14400..14646 8586 UNKNOWN, // 14647..160FF 8587 GURUNG_KHEMA, // 16100..16139 8588 UNKNOWN, // 1613A..167FF 8589 BAMUM, // 16800..16A38 8590 UNKNOWN, // 16A39..16A3F 8591 MRO, // 16A40..16A5E 8592 UNKNOWN, // 16A5F 8593 MRO, // 16A60..16A69 8594 UNKNOWN, // 16A6A..16A6D 8595 MRO, // 16A6E..16A6F 8596 TANGSA, // 16A70..16ABE 8597 UNKNOWN, // 16ABF 8598 TANGSA, // 16AC0..16AC9 8599 UNKNOWN, // 16ACA..16ACF 8600 BASSA_VAH, // 16AD0..16AED 8601 UNKNOWN, // 16AEE..16AEF 8602 BASSA_VAH, // 16AF0..16AF5 8603 UNKNOWN, // 16AF6..16AFF 8604 PAHAWH_HMONG, // 16B00..16B45 8605 UNKNOWN, // 16B46..16B4F 8606 PAHAWH_HMONG, // 16B50..16B59 8607 UNKNOWN, // 16B5A 8608 PAHAWH_HMONG, // 16B5B..16B61 8609 UNKNOWN, // 16B62 8610 PAHAWH_HMONG, // 16B63..16B77 8611 UNKNOWN, // 16B78..16B7C 8612 PAHAWH_HMONG, // 16B7D..16B8F 8613 UNKNOWN, // 16B90..16D3F 8614 KIRAT_RAI, // 16D40..16D79 8615 UNKNOWN, // 16D7A..16E3F 8616 MEDEFAIDRIN, // 16E40..16E9A 8617 UNKNOWN, // 16E9B..16EFF 8618 MIAO, // 16F00..16F4A 8619 UNKNOWN, // 16F4B..16F4E 8620 MIAO, // 16F4F..16F87 8621 UNKNOWN, // 16F88..16F8E 8622 MIAO, // 16F8F..16F9F 8623 UNKNOWN, // 16FA0..16FDF 8624 TANGUT, // 16FE0 8625 NUSHU, // 16FE1 8626 HAN, // 16FE2..16FE3 8627 KHITAN_SMALL_SCRIPT, // 16FE4 8628 UNKNOWN, // 16FE5..16FEF 8629 HAN, // 16FF0..16FF1 8630 UNKNOWN, // 16FF2..16FFF 8631 TANGUT, // 17000..187F7 8632 UNKNOWN, // 187F8..187FF 8633 TANGUT, // 18800..18AFF 8634 KHITAN_SMALL_SCRIPT, // 18B00..18CD5 8635 UNKNOWN, // 18CD6..18CFE 8636 KHITAN_SMALL_SCRIPT, // 18CFF 8637 TANGUT, // 18D00..18D08 8638 UNKNOWN, // 18D09..1AFEF 8639 KATAKANA, // 1AFF0..1AFF3 8640 UNKNOWN, // 1AFF4 8641 KATAKANA, // 1AFF5..1AFFB 8642 UNKNOWN, // 1AFFC 8643 KATAKANA, // 1AFFD..1AFFE 8644 UNKNOWN, // 1AFFF 8645 KATAKANA, // 1B000 8646 HIRAGANA, // 1B001..1B11F 8647 KATAKANA, // 1B120..1B122 8648 UNKNOWN, // 1B123..1B131 8649 HIRAGANA, // 1B132 8650 UNKNOWN, // 1B133..1B14F 8651 HIRAGANA, // 1B150..1B152 8652 UNKNOWN, // 1B153..1B154 8653 KATAKANA, // 1B155 8654 UNKNOWN, // 1B156..1B163 8655 KATAKANA, // 1B164..1B167 8656 UNKNOWN, // 1B168..1B16F 8657 NUSHU, // 1B170..1B2FB 8658 UNKNOWN, // 1B2FC..1BBFF 8659 DUPLOYAN, // 1BC00..1BC6A 8660 UNKNOWN, // 1BC6B..1BC6F 8661 DUPLOYAN, // 1BC70..1BC7C 8662 UNKNOWN, // 1BC7D..1BC7F 8663 DUPLOYAN, // 1BC80..1BC88 8664 UNKNOWN, // 1BC89..1BC8F 8665 DUPLOYAN, // 1BC90..1BC99 8666 UNKNOWN, // 1BC9A..1BC9B 8667 DUPLOYAN, // 1BC9C..1BC9F 8668 COMMON, // 1BCA0..1BCA3 8669 UNKNOWN, // 1BCA4..1CBFF 8670 COMMON, // 1CC00..1CCF9 8671 UNKNOWN, // 1CCFA..1CCFF 8672 COMMON, // 1CD00..1CEB3 8673 UNKNOWN, // 1CEB4..1CEFF 8674 INHERITED, // 1CF00..1CF2D 8675 UNKNOWN, // 1CF2E..1CF2F 8676 INHERITED, // 1CF30..1CF46 8677 UNKNOWN, // 1CF47..1CF4F 8678 COMMON, // 1CF50..1CFC3 8679 UNKNOWN, // 1CFC4..1CFFF 8680 COMMON, // 1D000..1D0F5 8681 UNKNOWN, // 1D0F6..1D0FF 8682 COMMON, // 1D100..1D126 8683 UNKNOWN, // 1D127..1D128 8684 COMMON, // 1D129..1D166 8685 INHERITED, // 1D167..1D169 8686 COMMON, // 1D16A..1D17A 8687 INHERITED, // 1D17B..1D182 8688 COMMON, // 1D183..1D184 8689 INHERITED, // 1D185..1D18B 8690 COMMON, // 1D18C..1D1A9 8691 INHERITED, // 1D1AA..1D1AD 8692 COMMON, // 1D1AE..1D1EA 8693 UNKNOWN, // 1D1EB..1D1FF 8694 GREEK, // 1D200..1D245 8695 UNKNOWN, // 1D246..1D2BF 8696 COMMON, // 1D2C0..1D2D3 8697 UNKNOWN, // 1D2D4..1D2DF 8698 COMMON, // 1D2E0..1D2F3 8699 UNKNOWN, // 1D2F4..1D2FF 8700 COMMON, // 1D300..1D356 8701 UNKNOWN, // 1D357..1D35F 8702 COMMON, // 1D360..1D378 8703 UNKNOWN, // 1D379..1D3FF 8704 COMMON, // 1D400..1D454 8705 UNKNOWN, // 1D455 8706 COMMON, // 1D456..1D49C 8707 UNKNOWN, // 1D49D 8708 COMMON, // 1D49E..1D49F 8709 UNKNOWN, // 1D4A0..1D4A1 8710 COMMON, // 1D4A2 8711 UNKNOWN, // 1D4A3..1D4A4 8712 COMMON, // 1D4A5..1D4A6 8713 UNKNOWN, // 1D4A7..1D4A8 8714 COMMON, // 1D4A9..1D4AC 8715 UNKNOWN, // 1D4AD 8716 COMMON, // 1D4AE..1D4B9 8717 UNKNOWN, // 1D4BA 8718 COMMON, // 1D4BB 8719 UNKNOWN, // 1D4BC 8720 COMMON, // 1D4BD..1D4C3 8721 UNKNOWN, // 1D4C4 8722 COMMON, // 1D4C5..1D505 8723 UNKNOWN, // 1D506 8724 COMMON, // 1D507..1D50A 8725 UNKNOWN, // 1D50B..1D50C 8726 COMMON, // 1D50D..1D514 8727 UNKNOWN, // 1D515 8728 COMMON, // 1D516..1D51C 8729 UNKNOWN, // 1D51D 8730 COMMON, // 1D51E..1D539 8731 UNKNOWN, // 1D53A 8732 COMMON, // 1D53B..1D53E 8733 UNKNOWN, // 1D53F 8734 COMMON, // 1D540..1D544 8735 UNKNOWN, // 1D545 8736 COMMON, // 1D546 8737 UNKNOWN, // 1D547..1D549 8738 COMMON, // 1D54A..1D550 8739 UNKNOWN, // 1D551 8740 COMMON, // 1D552..1D6A5 8741 UNKNOWN, // 1D6A6..1D6A7 8742 COMMON, // 1D6A8..1D7CB 8743 UNKNOWN, // 1D7CC..1D7CD 8744 COMMON, // 1D7CE..1D7FF 8745 SIGNWRITING, // 1D800..1DA8B 8746 UNKNOWN, // 1DA8C..1DA9A 8747 SIGNWRITING, // 1DA9B..1DA9F 8748 UNKNOWN, // 1DAA0 8749 SIGNWRITING, // 1DAA1..1DAAF 8750 UNKNOWN, // 1DAB0..1DEFF 8751 LATIN, // 1DF00..1DF1E 8752 UNKNOWN, // 1DF1F..1DF24 8753 LATIN, // 1DF25..1DF2A 8754 UNKNOWN, // 1DF2B..1DFFF 8755 GLAGOLITIC, // 1E000..1E006 8756 UNKNOWN, // 1E007 8757 GLAGOLITIC, // 1E008..1E018 8758 UNKNOWN, // 1E019..1E01A 8759 GLAGOLITIC, // 1E01B..1E021 8760 UNKNOWN, // 1E022 8761 GLAGOLITIC, // 1E023..1E024 8762 UNKNOWN, // 1E025 8763 GLAGOLITIC, // 1E026..1E02A 8764 UNKNOWN, // 1E02B..1E02F 8765 CYRILLIC, // 1E030..1E06D 8766 UNKNOWN, // 1E06E..1E08E 8767 CYRILLIC, // 1E08F 8768 UNKNOWN, // 1E090..1E0FF 8769 NYIAKENG_PUACHUE_HMONG, // 1E100..1E12C 8770 UNKNOWN, // 1E12D..1E12F 8771 NYIAKENG_PUACHUE_HMONG, // 1E130..1E13D 8772 UNKNOWN, // 1E13E..1E13F 8773 NYIAKENG_PUACHUE_HMONG, // 1E140..1E149 8774 UNKNOWN, // 1E14A..1E14D 8775 NYIAKENG_PUACHUE_HMONG, // 1E14E..1E14F 8776 UNKNOWN, // 1E150..1E28F 8777 TOTO, // 1E290..1E2AE 8778 UNKNOWN, // 1E2AF..1E2BF 8779 WANCHO, // 1E2C0..1E2F9 8780 UNKNOWN, // 1E2FA..1E2FE 8781 WANCHO, // 1E2FF 8782 UNKNOWN, // 1E300..1E4CF 8783 NAG_MUNDARI, // 1E4D0..1E4F9 8784 UNKNOWN, // 1E4FA..1E5CF 8785 OL_ONAL, // 1E5D0..1E5FA 8786 UNKNOWN, // 1E5FB..1E5FE 8787 OL_ONAL, // 1E5FF 8788 UNKNOWN, // 1E600..1E7DF 8789 ETHIOPIC, // 1E7E0..1E7E6 8790 UNKNOWN, // 1E7E7 8791 ETHIOPIC, // 1E7E8..1E7EB 8792 UNKNOWN, // 1E7EC 8793 ETHIOPIC, // 1E7ED..1E7EE 8794 UNKNOWN, // 1E7EF 8795 ETHIOPIC, // 1E7F0..1E7FE 8796 UNKNOWN, // 1E7FF 8797 MENDE_KIKAKUI, // 1E800..1E8C4 8798 UNKNOWN, // 1E8C5..1E8C6 8799 MENDE_KIKAKUI, // 1E8C7..1E8D6 8800 UNKNOWN, // 1E8D7..1E8FF 8801 ADLAM, // 1E900..1E94B 8802 UNKNOWN, // 1E94C..1E94F 8803 ADLAM, // 1E950..1E959 8804 UNKNOWN, // 1E95A..1E95D 8805 ADLAM, // 1E95E..1E95F 8806 UNKNOWN, // 1E960..1EC70 8807 COMMON, // 1EC71..1ECB4 8808 UNKNOWN, // 1ECB5..1ED00 8809 COMMON, // 1ED01..1ED3D 8810 UNKNOWN, // 1ED3E..1EDFF 8811 ARABIC, // 1EE00..1EE03 8812 UNKNOWN, // 1EE04 8813 ARABIC, // 1EE05..1EE1F 8814 UNKNOWN, // 1EE20 8815 ARABIC, // 1EE21..1EE22 8816 UNKNOWN, // 1EE23 8817 ARABIC, // 1EE24 8818 UNKNOWN, // 1EE25..1EE26 8819 ARABIC, // 1EE27 8820 UNKNOWN, // 1EE28 8821 ARABIC, // 1EE29..1EE32 8822 UNKNOWN, // 1EE33 8823 ARABIC, // 1EE34..1EE37 8824 UNKNOWN, // 1EE38 8825 ARABIC, // 1EE39 8826 UNKNOWN, // 1EE3A 8827 ARABIC, // 1EE3B 8828 UNKNOWN, // 1EE3C..1EE41 8829 ARABIC, // 1EE42 8830 UNKNOWN, // 1EE43..1EE46 8831 ARABIC, // 1EE47 8832 UNKNOWN, // 1EE48 8833 ARABIC, // 1EE49 8834 UNKNOWN, // 1EE4A 8835 ARABIC, // 1EE4B 8836 UNKNOWN, // 1EE4C 8837 ARABIC, // 1EE4D..1EE4F 8838 UNKNOWN, // 1EE50 8839 ARABIC, // 1EE51..1EE52 8840 UNKNOWN, // 1EE53 8841 ARABIC, // 1EE54 8842 UNKNOWN, // 1EE55..1EE56 8843 ARABIC, // 1EE57 8844 UNKNOWN, // 1EE58 8845 ARABIC, // 1EE59 8846 UNKNOWN, // 1EE5A 8847 ARABIC, // 1EE5B 8848 UNKNOWN, // 1EE5C 8849 ARABIC, // 1EE5D 8850 UNKNOWN, // 1EE5E 8851 ARABIC, // 1EE5F 8852 UNKNOWN, // 1EE60 8853 ARABIC, // 1EE61..1EE62 8854 UNKNOWN, // 1EE63 8855 ARABIC, // 1EE64 8856 UNKNOWN, // 1EE65..1EE66 8857 ARABIC, // 1EE67..1EE6A 8858 UNKNOWN, // 1EE6B 8859 ARABIC, // 1EE6C..1EE72 8860 UNKNOWN, // 1EE73 8861 ARABIC, // 1EE74..1EE77 8862 UNKNOWN, // 1EE78 8863 ARABIC, // 1EE79..1EE7C 8864 UNKNOWN, // 1EE7D 8865 ARABIC, // 1EE7E 8866 UNKNOWN, // 1EE7F 8867 ARABIC, // 1EE80..1EE89 8868 UNKNOWN, // 1EE8A 8869 ARABIC, // 1EE8B..1EE9B 8870 UNKNOWN, // 1EE9C..1EEA0 8871 ARABIC, // 1EEA1..1EEA3 8872 UNKNOWN, // 1EEA4 8873 ARABIC, // 1EEA5..1EEA9 8874 UNKNOWN, // 1EEAA 8875 ARABIC, // 1EEAB..1EEBB 8876 UNKNOWN, // 1EEBC..1EEEF 8877 ARABIC, // 1EEF0..1EEF1 8878 UNKNOWN, // 1EEF2..1EFFF 8879 COMMON, // 1F000..1F02B 8880 UNKNOWN, // 1F02C..1F02F 8881 COMMON, // 1F030..1F093 8882 UNKNOWN, // 1F094..1F09F 8883 COMMON, // 1F0A0..1F0AE 8884 UNKNOWN, // 1F0AF..1F0B0 8885 COMMON, // 1F0B1..1F0BF 8886 UNKNOWN, // 1F0C0 8887 COMMON, // 1F0C1..1F0CF 8888 UNKNOWN, // 1F0D0 8889 COMMON, // 1F0D1..1F0F5 8890 UNKNOWN, // 1F0F6..1F0FF 8891 COMMON, // 1F100..1F1AD 8892 UNKNOWN, // 1F1AE..1F1E5 8893 COMMON, // 1F1E6..1F1FF 8894 HIRAGANA, // 1F200 8895 COMMON, // 1F201..1F202 8896 UNKNOWN, // 1F203..1F20F 8897 COMMON, // 1F210..1F23B 8898 UNKNOWN, // 1F23C..1F23F 8899 COMMON, // 1F240..1F248 8900 UNKNOWN, // 1F249..1F24F 8901 COMMON, // 1F250..1F251 8902 UNKNOWN, // 1F252..1F25F 8903 COMMON, // 1F260..1F265 8904 UNKNOWN, // 1F266..1F2FF 8905 COMMON, // 1F300..1F6D7 8906 UNKNOWN, // 1F6D8..1F6DB 8907 COMMON, // 1F6DC..1F6EC 8908 UNKNOWN, // 1F6ED..1F6EF 8909 COMMON, // 1F6F0..1F6FC 8910 UNKNOWN, // 1F6FD..1F6FF 8911 COMMON, // 1F700..1F776 8912 UNKNOWN, // 1F777..1F77A 8913 COMMON, // 1F77B..1F7D9 8914 UNKNOWN, // 1F7DA..1F7DF 8915 COMMON, // 1F7E0..1F7EB 8916 UNKNOWN, // 1F7EC..1F7EF 8917 COMMON, // 1F7F0 8918 UNKNOWN, // 1F7F1..1F7FF 8919 COMMON, // 1F800..1F80B 8920 UNKNOWN, // 1F80C..1F80F 8921 COMMON, // 1F810..1F847 8922 UNKNOWN, // 1F848..1F84F 8923 COMMON, // 1F850..1F859 8924 UNKNOWN, // 1F85A..1F85F 8925 COMMON, // 1F860..1F887 8926 UNKNOWN, // 1F888..1F88F 8927 COMMON, // 1F890..1F8AD 8928 UNKNOWN, // 1F8AE..1F8AF 8929 COMMON, // 1F8B0..1F8BB 8930 UNKNOWN, // 1F8BC..1F8BF 8931 COMMON, // 1F8C0..1F8C1 8932 UNKNOWN, // 1F8C2..1F8FF 8933 COMMON, // 1F900..1FA53 8934 UNKNOWN, // 1FA54..1FA5F 8935 COMMON, // 1FA60..1FA6D 8936 UNKNOWN, // 1FA6E..1FA6F 8937 COMMON, // 1FA70..1FA7C 8938 UNKNOWN, // 1FA7D..1FA7F 8939 COMMON, // 1FA80..1FA89 8940 UNKNOWN, // 1FA8A..1FA8E 8941 COMMON, // 1FA8F..1FAC6 8942 UNKNOWN, // 1FAC7..1FACD 8943 COMMON, // 1FACE..1FADC 8944 UNKNOWN, // 1FADD..1FADE 8945 COMMON, // 1FADF..1FAE9 8946 UNKNOWN, // 1FAEA..1FAEF 8947 COMMON, // 1FAF0..1FAF8 8948 UNKNOWN, // 1FAF9..1FAFF 8949 COMMON, // 1FB00..1FB92 8950 UNKNOWN, // 1FB93 8951 COMMON, // 1FB94..1FBF9 8952 UNKNOWN, // 1FBFA..1FFFF 8953 HAN, // 20000..2A6DF 8954 UNKNOWN, // 2A6E0..2A6FF 8955 HAN, // 2A700..2B739 8956 UNKNOWN, // 2B73A..2B73F 8957 HAN, // 2B740..2B81D 8958 UNKNOWN, // 2B81E..2B81F 8959 HAN, // 2B820..2CEA1 8960 UNKNOWN, // 2CEA2..2CEAF 8961 HAN, // 2CEB0..2EBE0 8962 UNKNOWN, // 2EBE1..2EBEF 8963 HAN, // 2EBF0..2EE5D 8964 UNKNOWN, // 2EE5E..2F7FF 8965 HAN, // 2F800..2FA1D 8966 UNKNOWN, // 2FA1E..2FFFF 8967 HAN, // 30000..3134A 8968 UNKNOWN, // 3134B..3134F 8969 HAN, // 31350..323AF 8970 UNKNOWN, // 323B0..E0000 8971 COMMON, // E0001 8972 UNKNOWN, // E0002..E001F 8973 COMMON, // E0020..E007F 8974 UNKNOWN, // E0080..E00FF 8975 INHERITED, // E0100..E01EF 8976 UNKNOWN, // E01F0..10FFFF 8977 }; 8978 8979 private static final HashMap<String, Character.UnicodeScript> aliases; 8980 static { 8981 aliases = HashMap.newHashMap(UNKNOWN.ordinal() + 1); 8982 aliases.put("ADLM", ADLAM); 8983 aliases.put("AGHB", CAUCASIAN_ALBANIAN); 8984 aliases.put("AHOM", AHOM); 8985 aliases.put("ARAB", ARABIC); 8986 aliases.put("ARMI", IMPERIAL_ARAMAIC); 8987 aliases.put("ARMN", ARMENIAN); 8988 aliases.put("AVST", AVESTAN); 8989 aliases.put("BALI", BALINESE); 8990 aliases.put("BAMU", BAMUM); 8991 aliases.put("BASS", BASSA_VAH); 8992 aliases.put("BATK", BATAK); 8993 aliases.put("BENG", BENGALI); 8994 aliases.put("BHKS", BHAIKSUKI); 8995 aliases.put("BOPO", BOPOMOFO); 8996 aliases.put("BRAH", BRAHMI); 8997 aliases.put("BRAI", BRAILLE); 8998 aliases.put("BUGI", BUGINESE); 8999 aliases.put("BUHD", BUHID); 9000 aliases.put("CAKM", CHAKMA); 9001 aliases.put("CANS", CANADIAN_ABORIGINAL); 9002 aliases.put("CARI", CARIAN); 9003 aliases.put("CHAM", CHAM); 9004 aliases.put("CHER", CHEROKEE); 9005 aliases.put("CHRS", CHORASMIAN); 9006 aliases.put("COPT", COPTIC); 9007 aliases.put("CPMN", CYPRO_MINOAN); 9008 aliases.put("CPRT", CYPRIOT); 9009 aliases.put("CYRL", CYRILLIC); 9010 aliases.put("DEVA", DEVANAGARI); 9011 aliases.put("DIAK", DIVES_AKURU); 9012 aliases.put("DOGR", DOGRA); 9013 aliases.put("DSRT", DESERET); 9014 aliases.put("DUPL", DUPLOYAN); 9015 aliases.put("EGYP", EGYPTIAN_HIEROGLYPHS); 9016 aliases.put("ELBA", ELBASAN); 9017 aliases.put("ELYM", ELYMAIC); 9018 aliases.put("ETHI", ETHIOPIC); 9019 aliases.put("GARA", GARAY); 9020 aliases.put("GEOR", GEORGIAN); 9021 aliases.put("GLAG", GLAGOLITIC); 9022 aliases.put("GONG", GUNJALA_GONDI); 9023 aliases.put("GONM", MASARAM_GONDI); 9024 aliases.put("GOTH", GOTHIC); 9025 aliases.put("GRAN", GRANTHA); 9026 aliases.put("GREK", GREEK); 9027 aliases.put("GUJR", GUJARATI); 9028 aliases.put("GUKH", GURUNG_KHEMA); 9029 aliases.put("GURU", GURMUKHI); 9030 aliases.put("HANG", HANGUL); 9031 aliases.put("HANI", HAN); 9032 aliases.put("HANO", HANUNOO); 9033 aliases.put("HATR", HATRAN); 9034 aliases.put("HEBR", HEBREW); 9035 aliases.put("HIRA", HIRAGANA); 9036 aliases.put("HLUW", ANATOLIAN_HIEROGLYPHS); 9037 aliases.put("HMNG", PAHAWH_HMONG); 9038 aliases.put("HMNP", NYIAKENG_PUACHUE_HMONG); 9039 aliases.put("HUNG", OLD_HUNGARIAN); 9040 aliases.put("ITAL", OLD_ITALIC); 9041 aliases.put("JAVA", JAVANESE); 9042 aliases.put("KALI", KAYAH_LI); 9043 aliases.put("KANA", KATAKANA); 9044 aliases.put("KAWI", KAWI); 9045 aliases.put("KHAR", KHAROSHTHI); 9046 aliases.put("KHMR", KHMER); 9047 aliases.put("KHOJ", KHOJKI); 9048 aliases.put("KITS", KHITAN_SMALL_SCRIPT); 9049 aliases.put("KNDA", KANNADA); 9050 aliases.put("KRAI", KIRAT_RAI); 9051 aliases.put("KTHI", KAITHI); 9052 aliases.put("LANA", TAI_THAM); 9053 aliases.put("LAOO", LAO); 9054 aliases.put("LATN", LATIN); 9055 aliases.put("LEPC", LEPCHA); 9056 aliases.put("LIMB", LIMBU); 9057 aliases.put("LINA", LINEAR_A); 9058 aliases.put("LINB", LINEAR_B); 9059 aliases.put("LISU", LISU); 9060 aliases.put("LYCI", LYCIAN); 9061 aliases.put("LYDI", LYDIAN); 9062 aliases.put("MAHJ", MAHAJANI); 9063 aliases.put("MAKA", MAKASAR); 9064 aliases.put("MAND", MANDAIC); 9065 aliases.put("MANI", MANICHAEAN); 9066 aliases.put("MARC", MARCHEN); 9067 aliases.put("MEDF", MEDEFAIDRIN); 9068 aliases.put("MEND", MENDE_KIKAKUI); 9069 aliases.put("MERC", MEROITIC_CURSIVE); 9070 aliases.put("MERO", MEROITIC_HIEROGLYPHS); 9071 aliases.put("MLYM", MALAYALAM); 9072 aliases.put("MODI", MODI); 9073 aliases.put("MONG", MONGOLIAN); 9074 aliases.put("MROO", MRO); 9075 aliases.put("MTEI", MEETEI_MAYEK); 9076 aliases.put("MULT", MULTANI); 9077 aliases.put("MYMR", MYANMAR); 9078 aliases.put("NAGM", NAG_MUNDARI); 9079 aliases.put("NAND", NANDINAGARI); 9080 aliases.put("NARB", OLD_NORTH_ARABIAN); 9081 aliases.put("NBAT", NABATAEAN); 9082 aliases.put("NEWA", NEWA); 9083 aliases.put("NKOO", NKO); 9084 aliases.put("NSHU", NUSHU); 9085 aliases.put("OGAM", OGHAM); 9086 aliases.put("OLCK", OL_CHIKI); 9087 aliases.put("ONAO", OL_ONAL); 9088 aliases.put("ORKH", OLD_TURKIC); 9089 aliases.put("ORYA", ORIYA); 9090 aliases.put("OSGE", OSAGE); 9091 aliases.put("OSMA", OSMANYA); 9092 aliases.put("OUGR", OLD_UYGHUR); 9093 aliases.put("PALM", PALMYRENE); 9094 aliases.put("PAUC", PAU_CIN_HAU); 9095 aliases.put("PERM", OLD_PERMIC); 9096 aliases.put("PHAG", PHAGS_PA); 9097 aliases.put("PHLI", INSCRIPTIONAL_PAHLAVI); 9098 aliases.put("PHLP", PSALTER_PAHLAVI); 9099 aliases.put("PHNX", PHOENICIAN); 9100 aliases.put("PLRD", MIAO); 9101 aliases.put("PRTI", INSCRIPTIONAL_PARTHIAN); 9102 aliases.put("RJNG", REJANG); 9103 aliases.put("ROHG", HANIFI_ROHINGYA); 9104 aliases.put("RUNR", RUNIC); 9105 aliases.put("SAMR", SAMARITAN); 9106 aliases.put("SARB", OLD_SOUTH_ARABIAN); 9107 aliases.put("SAUR", SAURASHTRA); 9108 aliases.put("SGNW", SIGNWRITING); 9109 aliases.put("SHAW", SHAVIAN); 9110 aliases.put("SHRD", SHARADA); 9111 aliases.put("SIDD", SIDDHAM); 9112 aliases.put("SIND", KHUDAWADI); 9113 aliases.put("SINH", SINHALA); 9114 aliases.put("SOGD", SOGDIAN); 9115 aliases.put("SOGO", OLD_SOGDIAN); 9116 aliases.put("SORA", SORA_SOMPENG); 9117 aliases.put("SOYO", SOYOMBO); 9118 aliases.put("SUND", SUNDANESE); 9119 aliases.put("SUNU", SUNUWAR); 9120 aliases.put("SYLO", SYLOTI_NAGRI); 9121 aliases.put("SYRC", SYRIAC); 9122 aliases.put("TAGB", TAGBANWA); 9123 aliases.put("TAKR", TAKRI); 9124 aliases.put("TALE", TAI_LE); 9125 aliases.put("TALU", NEW_TAI_LUE); 9126 aliases.put("TAML", TAMIL); 9127 aliases.put("TANG", TANGUT); 9128 aliases.put("TAVT", TAI_VIET); 9129 aliases.put("TELU", TELUGU); 9130 aliases.put("TFNG", TIFINAGH); 9131 aliases.put("TGLG", TAGALOG); 9132 aliases.put("THAA", THAANA); 9133 aliases.put("THAI", THAI); 9134 aliases.put("TIBT", TIBETAN); 9135 aliases.put("TIRH", TIRHUTA); 9136 aliases.put("TNSA", TANGSA); 9137 aliases.put("TODR", TODHRI); 9138 aliases.put("TOTO", TOTO); 9139 aliases.put("TUTG", TULU_TIGALARI); 9140 aliases.put("UGAR", UGARITIC); 9141 aliases.put("VAII", VAI); 9142 aliases.put("VITH", VITHKUQI); 9143 aliases.put("WARA", WARANG_CITI); 9144 aliases.put("WCHO", WANCHO); 9145 aliases.put("XPEO", OLD_PERSIAN); 9146 aliases.put("XSUX", CUNEIFORM); 9147 aliases.put("YEZI", YEZIDI); 9148 aliases.put("YIII", YI); 9149 aliases.put("ZANB", ZANABAZAR_SQUARE); 9150 aliases.put("ZINH", INHERITED); 9151 aliases.put("ZYYY", COMMON); 9152 aliases.put("ZZZZ", UNKNOWN); 9153 } 9154 9155 /** 9156 * Returns the enum constant representing the Unicode script of which 9157 * the given character (Unicode code point) is assigned to. 9158 * 9159 * @param codePoint the character (Unicode code point) in question. 9160 * @return The {@code UnicodeScript} constant representing the 9161 * Unicode script of which this character is assigned to. 9162 * 9163 * @throws IllegalArgumentException if the specified 9164 * {@code codePoint} is an invalid Unicode code point. 9165 * @see Character#isValidCodePoint(int) 9166 * 9167 */ 9168 public static UnicodeScript of(int codePoint) { 9169 if (!isValidCodePoint(codePoint)) 9170 throw new IllegalArgumentException( 9171 String.format("Not a valid Unicode code point: 0x%X", codePoint)); 9172 int type = getType(codePoint); 9173 // leave SURROGATE and PRIVATE_USE for table lookup 9174 if (type == UNASSIGNED) 9175 return UNKNOWN; 9176 int index = Arrays.binarySearch(scriptStarts, codePoint); 9177 if (index < 0) 9178 index = -index - 2; 9179 return scripts[index]; 9180 } 9181 9182 /** 9183 * Returns the UnicodeScript constant with the given Unicode script 9184 * name or the script name alias. Script names and their aliases are 9185 * determined by The Unicode Standard. The files {@code Scripts.txt} 9186 * and {@code PropertyValueAliases.txt} define script names 9187 * and the script name aliases for a particular version of the 9188 * standard. The {@link Character} class specifies the version of 9189 * the standard that it supports. 9190 * <p> 9191 * Character case is ignored for all of the valid script names. 9192 * The en_US locale's case mapping rules are used to provide 9193 * case-insensitive string comparisons for script name validation. 9194 * 9195 * @param scriptName A {@code UnicodeScript} name. 9196 * @return The {@code UnicodeScript} constant identified 9197 * by {@code scriptName} 9198 * @throws IllegalArgumentException if {@code scriptName} is an 9199 * invalid name 9200 * @throws NullPointerException if {@code scriptName} is null 9201 */ 9202 public static final UnicodeScript forName(String scriptName) { 9203 scriptName = scriptName.toUpperCase(Locale.ENGLISH); 9204 //.replace(' ', '_')); 9205 UnicodeScript sc = aliases.get(scriptName); 9206 if (sc != null) 9207 return sc; 9208 return valueOf(scriptName); 9209 } 9210 } 9211 9212 /** 9213 * The value of the {@code Character}. 9214 * 9215 * @serial 9216 */ 9217 private final char value; 9218 9219 /** use serialVersionUID from JDK 1.0.2 for interoperability */ 9220 @java.io.Serial 9221 private static final long serialVersionUID = 3786198910865385080L; 9222 9223 /** 9224 * Constructs a newly allocated {@code Character} object that 9225 * represents the specified {@code char} value. 9226 * 9227 * @param value the value to be represented by the 9228 * {@code Character} object. 9229 * 9230 * @deprecated 9231 * It is rarely appropriate to use this constructor. The static factory 9232 * {@link #valueOf(char)} is generally a better choice, as it is 9233 * likely to yield significantly better space and time performance. 9234 */ 9235 @Deprecated(since="9", forRemoval = true) 9236 public Character(char value) { 9237 this.value = value; 9238 } 9239 9240 private static final class CharacterCache { 9241 private CharacterCache(){} 9242 9243 @Stable 9244 static final Character[] cache; 9245 static Character[] archivedCache; 9246 9247 static { 9248 int size = 127 + 1; 9249 9250 // Load and use the archived cache if it exists 9251 CDS.initializeFromArchive(CharacterCache.class); 9252 if (archivedCache == null) { 9253 Character[] c = new Character[size]; 9254 for (int i = 0; i < size; i++) { 9255 c[i] = new Character((char) i); 9256 } 9257 archivedCache = c; 9258 } 9259 cache = archivedCache; 9260 assert cache.length == size; 9261 } 9262 } 9263 9264 /** 9265 * Returns a {@code Character} instance representing the specified 9266 * {@code char} value. 9267 * If a new {@code Character} instance is not required, this method 9268 * should generally be used in preference to the constructor 9269 * {@link #Character(char)}, as this method is likely to yield 9270 * significantly better space and time performance by caching 9271 * frequently requested values. 9272 * 9273 * This method will always cache values in the range {@code 9274 * '\u005Cu0000'} to {@code '\u005Cu007F'}, inclusive, and may 9275 * cache other values outside of this range. 9276 * 9277 * @param c a char value. 9278 * @return a {@code Character} instance representing {@code c}. 9279 * @since 1.5 9280 */ 9281 @IntrinsicCandidate 9282 public static Character valueOf(char c) { 9283 if (c <= 127) { // must cache 9284 return CharacterCache.cache[(int)c]; 9285 } 9286 return new Character(c); 9287 } 9288 9289 /** 9290 * Returns the value of this {@code Character} object. 9291 * @return the primitive {@code char} value represented by 9292 * this object. 9293 */ 9294 @IntrinsicCandidate 9295 public char charValue() { 9296 return value; 9297 } 9298 9299 /** 9300 * Returns a hash code for this {@code Character}; equal to the result 9301 * of invoking {@code charValue()}. 9302 * 9303 * @return a hash code value for this {@code Character} 9304 */ 9305 @Override 9306 public int hashCode() { 9307 return Character.hashCode(value); 9308 } 9309 9310 /** 9311 * Returns a hash code for a {@code char} value; compatible with 9312 * {@code Character.hashCode()}. 9313 * 9314 * @since 1.8 9315 * 9316 * @param value The {@code char} for which to return a hash code. 9317 * @return a hash code value for a {@code char} value. 9318 */ 9319 public static int hashCode(char value) { 9320 return (int)value; 9321 } 9322 9323 /** 9324 * Compares this object against the specified object. 9325 * The result is {@code true} if and only if the argument is not 9326 * {@code null} and is a {@code Character} object that 9327 * represents the same {@code char} value as this object. 9328 * 9329 * @param obj the object to compare with. 9330 * @return {@code true} if the objects are the same; 9331 * {@code false} otherwise. 9332 */ 9333 public boolean equals(Object obj) { 9334 if (obj instanceof Character c) { 9335 return value == c.charValue(); 9336 } 9337 return false; 9338 } 9339 9340 /** 9341 * Returns a {@code String} object representing this 9342 * {@code Character}'s value. The result is a string of 9343 * length 1 whose sole component is the primitive 9344 * {@code char} value represented by this 9345 * {@code Character} object. 9346 * 9347 * @return a string representation of this object. 9348 */ 9349 @Override 9350 public String toString() { 9351 return String.valueOf(value); 9352 } 9353 9354 /** 9355 * Returns a {@code String} object representing the 9356 * specified {@code char}. The result is a string of length 9357 * 1 consisting solely of the specified {@code char}. 9358 * 9359 * @apiNote This method cannot handle <a 9360 * href="#supplementary"> supplementary characters</a>. To support 9361 * all Unicode characters, including supplementary characters, use 9362 * the {@link #toString(int)} method. 9363 * 9364 * @param c the {@code char} to be converted 9365 * @return the string representation of the specified {@code char} 9366 * @since 1.4 9367 */ 9368 public static String toString(char c) { 9369 return String.valueOf(c); 9370 } 9371 9372 /** 9373 * Returns a {@code String} object representing the 9374 * specified character (Unicode code point). The result is a string of 9375 * length 1 or 2, consisting solely of the specified {@code codePoint}. 9376 * 9377 * @param codePoint the {@code codePoint} to be converted 9378 * @return the string representation of the specified {@code codePoint} 9379 * @throws IllegalArgumentException if the specified 9380 * {@code codePoint} is not a {@linkplain #isValidCodePoint 9381 * valid Unicode code point}. 9382 * @since 11 9383 */ 9384 public static String toString(int codePoint) { 9385 return String.valueOfCodePoint(codePoint); 9386 } 9387 9388 /** 9389 * Determines whether the specified code point is a valid 9390 * <a href="http://www.unicode.org/glossary/#code_point"> 9391 * Unicode code point value</a>. 9392 * 9393 * @param codePoint the Unicode code point to be tested 9394 * @return {@code true} if the specified code point value is between 9395 * {@link #MIN_CODE_POINT} and 9396 * {@link #MAX_CODE_POINT} inclusive; 9397 * {@code false} otherwise. 9398 * @since 1.5 9399 */ 9400 public static boolean isValidCodePoint(int codePoint) { 9401 // Optimized form of: 9402 // codePoint >= MIN_CODE_POINT && codePoint <= MAX_CODE_POINT 9403 int plane = codePoint >>> 16; 9404 return plane < ((MAX_CODE_POINT + 1) >>> 16); 9405 } 9406 9407 /** 9408 * Determines whether the specified character (Unicode code point) 9409 * is in the <a href="#BMP">Basic Multilingual Plane (BMP)</a>. 9410 * Such code points can be represented using a single {@code char}. 9411 * 9412 * @param codePoint the character (Unicode code point) to be tested 9413 * @return {@code true} if the specified code point is between 9414 * {@link #MIN_VALUE} and {@link #MAX_VALUE} inclusive; 9415 * {@code false} otherwise. 9416 * @since 1.7 9417 */ 9418 public static boolean isBmpCodePoint(int codePoint) { 9419 return codePoint >>> 16 == 0; 9420 // Optimized form of: 9421 // codePoint >= MIN_VALUE && codePoint <= MAX_VALUE 9422 // We consistently use logical shift (>>>) to facilitate 9423 // additional runtime optimizations. 9424 } 9425 9426 /** 9427 * Determines whether the specified character (Unicode code point) 9428 * is in the <a href="#supplementary">supplementary character</a> range. 9429 * 9430 * @param codePoint the character (Unicode code point) to be tested 9431 * @return {@code true} if the specified code point is between 9432 * {@link #MIN_SUPPLEMENTARY_CODE_POINT} and 9433 * {@link #MAX_CODE_POINT} inclusive; 9434 * {@code false} otherwise. 9435 * @since 1.5 9436 */ 9437 public static boolean isSupplementaryCodePoint(int codePoint) { 9438 return codePoint >= MIN_SUPPLEMENTARY_CODE_POINT 9439 && codePoint < MAX_CODE_POINT + 1; 9440 } 9441 9442 /** 9443 * Determines if the given {@code char} value is a 9444 * <a href="http://www.unicode.org/glossary/#high_surrogate_code_unit"> 9445 * Unicode high-surrogate code unit</a> 9446 * (also known as <i>leading-surrogate code unit</i>). 9447 * 9448 * <p>Such values do not represent characters by themselves, 9449 * but are used in the representation of 9450 * <a href="#supplementary">supplementary characters</a> 9451 * in the UTF-16 encoding. 9452 * 9453 * @param ch the {@code char} value to be tested. 9454 * @return {@code true} if the {@code char} value is between 9455 * {@link #MIN_HIGH_SURROGATE} and 9456 * {@link #MAX_HIGH_SURROGATE} inclusive; 9457 * {@code false} otherwise. 9458 * @see Character#isLowSurrogate(char) 9459 * @see Character.UnicodeBlock#of(int) 9460 * @since 1.5 9461 */ 9462 public static boolean isHighSurrogate(char ch) { 9463 // Help VM constant-fold; MAX_HIGH_SURROGATE + 1 == MIN_LOW_SURROGATE 9464 return ch >= MIN_HIGH_SURROGATE && ch < (MAX_HIGH_SURROGATE + 1); 9465 } 9466 9467 /** 9468 * Determines if the given {@code char} value is a 9469 * <a href="http://www.unicode.org/glossary/#low_surrogate_code_unit"> 9470 * Unicode low-surrogate code unit</a> 9471 * (also known as <i>trailing-surrogate code unit</i>). 9472 * 9473 * <p>Such values do not represent characters by themselves, 9474 * but are used in the representation of 9475 * <a href="#supplementary">supplementary characters</a> 9476 * in the UTF-16 encoding. 9477 * 9478 * @param ch the {@code char} value to be tested. 9479 * @return {@code true} if the {@code char} value is between 9480 * {@link #MIN_LOW_SURROGATE} and 9481 * {@link #MAX_LOW_SURROGATE} inclusive; 9482 * {@code false} otherwise. 9483 * @see Character#isHighSurrogate(char) 9484 * @since 1.5 9485 */ 9486 public static boolean isLowSurrogate(char ch) { 9487 return ch >= MIN_LOW_SURROGATE && ch < (MAX_LOW_SURROGATE + 1); 9488 } 9489 9490 /** 9491 * Determines if the given {@code char} value is a Unicode 9492 * <i>surrogate code unit</i>. 9493 * 9494 * <p>Such values do not represent characters by themselves, 9495 * but are used in the representation of 9496 * <a href="#supplementary">supplementary characters</a> 9497 * in the UTF-16 encoding. 9498 * 9499 * <p>A char value is a surrogate code unit if and only if it is either 9500 * a {@linkplain #isLowSurrogate(char) low-surrogate code unit} or 9501 * a {@linkplain #isHighSurrogate(char) high-surrogate code unit}. 9502 * 9503 * @param ch the {@code char} value to be tested. 9504 * @return {@code true} if the {@code char} value is between 9505 * {@link #MIN_SURROGATE} and 9506 * {@link #MAX_SURROGATE} inclusive; 9507 * {@code false} otherwise. 9508 * @since 1.7 9509 */ 9510 public static boolean isSurrogate(char ch) { 9511 return ch >= MIN_SURROGATE && ch < (MAX_SURROGATE + 1); 9512 } 9513 9514 /** 9515 * Determines whether the specified pair of {@code char} 9516 * values is a valid 9517 * <a href="http://www.unicode.org/glossary/#surrogate_pair"> 9518 * Unicode surrogate pair</a>. 9519 * 9520 * <p>This method is equivalent to the expression: 9521 * <blockquote><pre>{@code 9522 * isHighSurrogate(high) && isLowSurrogate(low) 9523 * }</pre></blockquote> 9524 * 9525 * @param high the high-surrogate code value to be tested 9526 * @param low the low-surrogate code value to be tested 9527 * @return {@code true} if the specified high and 9528 * low-surrogate code values represent a valid surrogate pair; 9529 * {@code false} otherwise. 9530 * @since 1.5 9531 */ 9532 public static boolean isSurrogatePair(char high, char low) { 9533 return isHighSurrogate(high) && isLowSurrogate(low); 9534 } 9535 9536 /** 9537 * Determines the number of {@code char} values needed to 9538 * represent the specified character (Unicode code point). If the 9539 * specified character is equal to or greater than 0x10000, then 9540 * the method returns 2. Otherwise, the method returns 1. 9541 * 9542 * <p>This method doesn't validate the specified character to be a 9543 * valid Unicode code point. The caller must validate the 9544 * character value using {@link #isValidCodePoint(int) isValidCodePoint} 9545 * if necessary. 9546 * 9547 * @param codePoint the character (Unicode code point) to be tested. 9548 * @return 2 if the character is a valid supplementary character; 1 otherwise. 9549 * @see Character#isSupplementaryCodePoint(int) 9550 * @since 1.5 9551 */ 9552 public static int charCount(int codePoint) { 9553 return codePoint >= MIN_SUPPLEMENTARY_CODE_POINT ? 2 : 1; 9554 } 9555 9556 /** 9557 * Converts the specified surrogate pair to its supplementary code 9558 * point value. This method does not validate the specified 9559 * surrogate pair. The caller must validate it using {@link 9560 * #isSurrogatePair(char, char) isSurrogatePair} if necessary. 9561 * 9562 * @param high the high-surrogate code unit 9563 * @param low the low-surrogate code unit 9564 * @return the supplementary code point composed from the 9565 * specified surrogate pair. 9566 * @since 1.5 9567 */ 9568 public static int toCodePoint(char high, char low) { 9569 // Optimized form of: 9570 // return ((high - MIN_HIGH_SURROGATE) << 10) 9571 // + (low - MIN_LOW_SURROGATE) 9572 // + MIN_SUPPLEMENTARY_CODE_POINT; 9573 return ((high << 10) + low) + (MIN_SUPPLEMENTARY_CODE_POINT 9574 - (MIN_HIGH_SURROGATE << 10) 9575 - MIN_LOW_SURROGATE); 9576 } 9577 9578 /** 9579 * Returns the code point at the given index of the 9580 * {@code CharSequence}. If the {@code char} value at 9581 * the given index in the {@code CharSequence} is in the 9582 * high-surrogate range, the following index is less than the 9583 * length of the {@code CharSequence}, and the 9584 * {@code char} value at the following index is in the 9585 * low-surrogate range, then the supplementary code point 9586 * corresponding to this surrogate pair is returned. Otherwise, 9587 * the {@code char} value at the given index is returned. 9588 * 9589 * @param seq a sequence of {@code char} values (Unicode code 9590 * units) 9591 * @param index the index to the {@code char} values (Unicode 9592 * code units) in {@code seq} to be converted 9593 * @return the Unicode code point at the given index 9594 * @throws NullPointerException if {@code seq} is null. 9595 * @throws IndexOutOfBoundsException if the value 9596 * {@code index} is negative or not less than 9597 * {@link CharSequence#length() seq.length()}. 9598 * @since 1.5 9599 */ 9600 public static int codePointAt(CharSequence seq, int index) { 9601 char c1 = seq.charAt(index); 9602 if (isHighSurrogate(c1) && ++index < seq.length()) { 9603 char c2 = seq.charAt(index); 9604 if (isLowSurrogate(c2)) { 9605 return toCodePoint(c1, c2); 9606 } 9607 } 9608 return c1; 9609 } 9610 9611 /** 9612 * Returns the code point at the given index of the 9613 * {@code char} array. If the {@code char} value at 9614 * the given index in the {@code char} array is in the 9615 * high-surrogate range, the following index is less than the 9616 * length of the {@code char} array, and the 9617 * {@code char} value at the following index is in the 9618 * low-surrogate range, then the supplementary code point 9619 * corresponding to this surrogate pair is returned. Otherwise, 9620 * the {@code char} value at the given index is returned. 9621 * 9622 * @param a the {@code char} array 9623 * @param index the index to the {@code char} values (Unicode 9624 * code units) in the {@code char} array to be converted 9625 * @return the Unicode code point at the given index 9626 * @throws NullPointerException if {@code a} is null. 9627 * @throws IndexOutOfBoundsException if the value 9628 * {@code index} is negative or not less than 9629 * the length of the {@code char} array. 9630 * @since 1.5 9631 */ 9632 public static int codePointAt(char[] a, int index) { 9633 return codePointAtImpl(a, index, a.length); 9634 } 9635 9636 /** 9637 * Returns the code point at the given index of the 9638 * {@code char} array, where only array elements with 9639 * {@code index} less than {@code limit} can be used. If 9640 * the {@code char} value at the given index in the 9641 * {@code char} array is in the high-surrogate range, the 9642 * following index is less than the {@code limit}, and the 9643 * {@code char} value at the following index is in the 9644 * low-surrogate range, then the supplementary code point 9645 * corresponding to this surrogate pair is returned. Otherwise, 9646 * the {@code char} value at the given index is returned. 9647 * 9648 * @param a the {@code char} array 9649 * @param index the index to the {@code char} values (Unicode 9650 * code units) in the {@code char} array to be converted 9651 * @param limit the index after the last array element that 9652 * can be used in the {@code char} array 9653 * @return the Unicode code point at the given index 9654 * @throws NullPointerException if {@code a} is null. 9655 * @throws IndexOutOfBoundsException if the {@code index} 9656 * argument is negative or not less than the {@code limit} 9657 * argument, or if the {@code limit} argument is negative or 9658 * greater than the length of the {@code char} array. 9659 * @since 1.5 9660 */ 9661 public static int codePointAt(char[] a, int index, int limit) { 9662 if (index >= limit || index < 0 || limit > a.length) { 9663 throw new IndexOutOfBoundsException(); 9664 } 9665 return codePointAtImpl(a, index, limit); 9666 } 9667 9668 // throws ArrayIndexOutOfBoundsException if index out of bounds 9669 static int codePointAtImpl(char[] a, int index, int limit) { 9670 char c1 = a[index]; 9671 if (isHighSurrogate(c1) && ++index < limit) { 9672 char c2 = a[index]; 9673 if (isLowSurrogate(c2)) { 9674 return toCodePoint(c1, c2); 9675 } 9676 } 9677 return c1; 9678 } 9679 9680 /** 9681 * Returns the code point preceding the given index of the 9682 * {@code CharSequence}. If the {@code char} value at 9683 * {@code (index - 1)} in the {@code CharSequence} is in 9684 * the low-surrogate range, {@code (index - 2)} is not 9685 * negative, and the {@code char} value at {@code (index - 2)} 9686 * in the {@code CharSequence} is in the 9687 * high-surrogate range, then the supplementary code point 9688 * corresponding to this surrogate pair is returned. Otherwise, 9689 * the {@code char} value at {@code (index - 1)} is 9690 * returned. 9691 * 9692 * @param seq the {@code CharSequence} instance 9693 * @param index the index following the code point that should be returned 9694 * @return the Unicode code point value before the given index. 9695 * @throws NullPointerException if {@code seq} is null. 9696 * @throws IndexOutOfBoundsException if the {@code index} 9697 * argument is less than 1 or greater than {@link 9698 * CharSequence#length() seq.length()}. 9699 * @since 1.5 9700 */ 9701 public static int codePointBefore(CharSequence seq, int index) { 9702 char c2 = seq.charAt(--index); 9703 if (isLowSurrogate(c2) && index > 0) { 9704 char c1 = seq.charAt(--index); 9705 if (isHighSurrogate(c1)) { 9706 return toCodePoint(c1, c2); 9707 } 9708 } 9709 return c2; 9710 } 9711 9712 /** 9713 * Returns the code point preceding the given index of the 9714 * {@code char} array. If the {@code char} value at 9715 * {@code (index - 1)} in the {@code char} array is in 9716 * the low-surrogate range, {@code (index - 2)} is not 9717 * negative, and the {@code char} value at {@code (index - 2)} 9718 * in the {@code char} array is in the 9719 * high-surrogate range, then the supplementary code point 9720 * corresponding to this surrogate pair is returned. Otherwise, 9721 * the {@code char} value at {@code (index - 1)} is 9722 * returned. 9723 * 9724 * @param a the {@code char} array 9725 * @param index the index following the code point that should be returned 9726 * @return the Unicode code point value before the given index. 9727 * @throws NullPointerException if {@code a} is null. 9728 * @throws IndexOutOfBoundsException if the {@code index} 9729 * argument is less than 1 or greater than the length of the 9730 * {@code char} array 9731 * @since 1.5 9732 */ 9733 public static int codePointBefore(char[] a, int index) { 9734 return codePointBeforeImpl(a, index, 0); 9735 } 9736 9737 /** 9738 * Returns the code point preceding the given index of the 9739 * {@code char} array, where only array elements with 9740 * {@code index} greater than or equal to {@code start} 9741 * can be used. If the {@code char} value at {@code (index - 1)} 9742 * in the {@code char} array is in the 9743 * low-surrogate range, {@code (index - 2)} is not less than 9744 * {@code start}, and the {@code char} value at 9745 * {@code (index - 2)} in the {@code char} array is in 9746 * the high-surrogate range, then the supplementary code point 9747 * corresponding to this surrogate pair is returned. Otherwise, 9748 * the {@code char} value at {@code (index - 1)} is 9749 * returned. 9750 * 9751 * @param a the {@code char} array 9752 * @param index the index following the code point that should be returned 9753 * @param start the index of the first array element in the 9754 * {@code char} array 9755 * @return the Unicode code point value before the given index. 9756 * @throws NullPointerException if {@code a} is null. 9757 * @throws IndexOutOfBoundsException if the {@code index} 9758 * argument is not greater than the {@code start} argument or 9759 * is greater than the length of the {@code char} array, or 9760 * if the {@code start} argument is negative or not less than 9761 * the length of the {@code char} array. 9762 * @since 1.5 9763 */ 9764 public static int codePointBefore(char[] a, int index, int start) { 9765 if (index <= start || start < 0 || index > a.length) { 9766 throw new IndexOutOfBoundsException(); 9767 } 9768 return codePointBeforeImpl(a, index, start); 9769 } 9770 9771 // throws ArrayIndexOutOfBoundsException if index-1 out of bounds 9772 static int codePointBeforeImpl(char[] a, int index, int start) { 9773 char c2 = a[--index]; 9774 if (isLowSurrogate(c2) && index > start) { 9775 char c1 = a[--index]; 9776 if (isHighSurrogate(c1)) { 9777 return toCodePoint(c1, c2); 9778 } 9779 } 9780 return c2; 9781 } 9782 9783 /** 9784 * Returns the leading surrogate (a 9785 * <a href="http://www.unicode.org/glossary/#high_surrogate_code_unit"> 9786 * high surrogate code unit</a>) of the 9787 * <a href="http://www.unicode.org/glossary/#surrogate_pair"> 9788 * surrogate pair</a> 9789 * representing the specified supplementary character (Unicode 9790 * code point) in the UTF-16 encoding. If the specified character 9791 * is not a 9792 * <a href="Character.html#supplementary">supplementary character</a>, 9793 * an unspecified {@code char} is returned. 9794 * 9795 * <p>If 9796 * {@link #isSupplementaryCodePoint isSupplementaryCodePoint(x)} 9797 * is {@code true}, then 9798 * {@link #isHighSurrogate isHighSurrogate}{@code (highSurrogate(x))} and 9799 * {@link #toCodePoint toCodePoint}{@code (highSurrogate(x), }{@link #lowSurrogate lowSurrogate}{@code (x)) == x} 9800 * are also always {@code true}. 9801 * 9802 * @param codePoint a supplementary character (Unicode code point) 9803 * @return the leading surrogate code unit used to represent the 9804 * character in the UTF-16 encoding 9805 * @since 1.7 9806 */ 9807 public static char highSurrogate(int codePoint) { 9808 return (char) ((codePoint >>> 10) 9809 + (MIN_HIGH_SURROGATE - (MIN_SUPPLEMENTARY_CODE_POINT >>> 10))); 9810 } 9811 9812 /** 9813 * Returns the trailing surrogate (a 9814 * <a href="http://www.unicode.org/glossary/#low_surrogate_code_unit"> 9815 * low surrogate code unit</a>) of the 9816 * <a href="http://www.unicode.org/glossary/#surrogate_pair"> 9817 * surrogate pair</a> 9818 * representing the specified supplementary character (Unicode 9819 * code point) in the UTF-16 encoding. If the specified character 9820 * is not a 9821 * <a href="Character.html#supplementary">supplementary character</a>, 9822 * an unspecified {@code char} is returned. 9823 * 9824 * <p>If 9825 * {@link #isSupplementaryCodePoint isSupplementaryCodePoint(x)} 9826 * is {@code true}, then 9827 * {@link #isLowSurrogate isLowSurrogate}{@code (lowSurrogate(x))} and 9828 * {@link #toCodePoint toCodePoint}{@code (}{@link #highSurrogate highSurrogate}{@code (x), lowSurrogate(x)) == x} 9829 * are also always {@code true}. 9830 * 9831 * @param codePoint a supplementary character (Unicode code point) 9832 * @return the trailing surrogate code unit used to represent the 9833 * character in the UTF-16 encoding 9834 * @since 1.7 9835 */ 9836 public static char lowSurrogate(int codePoint) { 9837 return (char) ((codePoint & 0x3ff) + MIN_LOW_SURROGATE); 9838 } 9839 9840 /** 9841 * Converts the specified character (Unicode code point) to its 9842 * UTF-16 representation. If the specified code point is a BMP 9843 * (Basic Multilingual Plane or Plane 0) value, the same value is 9844 * stored in {@code dst[dstIndex]}, and 1 is returned. If the 9845 * specified code point is a supplementary character, its 9846 * surrogate values are stored in {@code dst[dstIndex]} 9847 * (high-surrogate) and {@code dst[dstIndex+1]} 9848 * (low-surrogate), and 2 is returned. 9849 * 9850 * @param codePoint the character (Unicode code point) to be converted. 9851 * @param dst an array of {@code char} in which the 9852 * {@code codePoint}'s UTF-16 value is stored. 9853 * @param dstIndex the start index into the {@code dst} 9854 * array where the converted value is stored. 9855 * @return 1 if the code point is a BMP code point, 2 if the 9856 * code point is a supplementary code point. 9857 * @throws IllegalArgumentException if the specified 9858 * {@code codePoint} is not a valid Unicode code point. 9859 * @throws NullPointerException if the specified {@code dst} is null. 9860 * @throws IndexOutOfBoundsException if {@code dstIndex} 9861 * is negative or not less than {@code dst.length}, or if 9862 * {@code dst} at {@code dstIndex} doesn't have enough 9863 * array element(s) to store the resulting {@code char} 9864 * value(s). (If {@code dstIndex} is equal to 9865 * {@code dst.length-1} and the specified 9866 * {@code codePoint} is a supplementary character, the 9867 * high-surrogate value is not stored in 9868 * {@code dst[dstIndex]}.) 9869 * @since 1.5 9870 */ 9871 public static int toChars(int codePoint, char[] dst, int dstIndex) { 9872 if (isBmpCodePoint(codePoint)) { 9873 dst[dstIndex] = (char) codePoint; 9874 return 1; 9875 } else if (isValidCodePoint(codePoint)) { 9876 toSurrogates(codePoint, dst, dstIndex); 9877 return 2; 9878 } else { 9879 throw new IllegalArgumentException( 9880 String.format("Not a valid Unicode code point: 0x%X", codePoint)); 9881 } 9882 } 9883 9884 /** 9885 * Converts the specified character (Unicode code point) to its 9886 * UTF-16 representation stored in a {@code char} array. If 9887 * the specified code point is a BMP (Basic Multilingual Plane or 9888 * Plane 0) value, the resulting {@code char} array has 9889 * the same value as {@code codePoint}. If the specified code 9890 * point is a supplementary code point, the resulting 9891 * {@code char} array has the corresponding surrogate pair. 9892 * 9893 * @param codePoint a Unicode code point 9894 * @return a {@code char} array having 9895 * {@code codePoint}'s UTF-16 representation. 9896 * @throws IllegalArgumentException if the specified 9897 * {@code codePoint} is not a valid Unicode code point. 9898 * @since 1.5 9899 */ 9900 public static char[] toChars(int codePoint) { 9901 if (isBmpCodePoint(codePoint)) { 9902 return new char[] { (char) codePoint }; 9903 } else if (isValidCodePoint(codePoint)) { 9904 char[] result = new char[2]; 9905 toSurrogates(codePoint, result, 0); 9906 return result; 9907 } else { 9908 throw new IllegalArgumentException( 9909 String.format("Not a valid Unicode code point: 0x%X", codePoint)); 9910 } 9911 } 9912 9913 static void toSurrogates(int codePoint, char[] dst, int index) { 9914 // We write elements "backwards" to guarantee all-or-nothing 9915 dst[index+1] = lowSurrogate(codePoint); 9916 dst[index] = highSurrogate(codePoint); 9917 } 9918 9919 /** 9920 * Returns the number of Unicode code points in the text range of 9921 * the specified char sequence. The text range begins at the 9922 * specified {@code beginIndex} and extends to the 9923 * {@code char} at index {@code endIndex - 1}. Thus the 9924 * length (in {@code char}s) of the text range is 9925 * {@code endIndex-beginIndex}. Unpaired surrogates within 9926 * the text range count as one code point each. 9927 * 9928 * @param seq the char sequence 9929 * @param beginIndex the index to the first {@code char} of 9930 * the text range. 9931 * @param endIndex the index after the last {@code char} of 9932 * the text range. 9933 * @return the number of Unicode code points in the specified text 9934 * range 9935 * @throws NullPointerException if {@code seq} is null. 9936 * @throws IndexOutOfBoundsException if the 9937 * {@code beginIndex} is negative, or {@code endIndex} 9938 * is larger than the length of the given sequence, or 9939 * {@code beginIndex} is larger than {@code endIndex}. 9940 * @since 1.5 9941 */ 9942 public static int codePointCount(CharSequence seq, int beginIndex, int endIndex) { 9943 Objects.checkFromToIndex(beginIndex, endIndex, seq.length()); 9944 int n = endIndex - beginIndex; 9945 for (int i = beginIndex; i < endIndex; ) { 9946 if (isHighSurrogate(seq.charAt(i++)) && i < endIndex && 9947 isLowSurrogate(seq.charAt(i))) { 9948 n--; 9949 i++; 9950 } 9951 } 9952 return n; 9953 } 9954 9955 /** 9956 * Returns the number of Unicode code points in a subarray of the 9957 * {@code char} array argument. The {@code offset} 9958 * argument is the index of the first {@code char} of the 9959 * subarray and the {@code count} argument specifies the 9960 * length of the subarray in {@code char}s. Unpaired 9961 * surrogates within the subarray count as one code point each. 9962 * 9963 * @param a the {@code char} array 9964 * @param offset the index of the first {@code char} in the 9965 * given {@code char} array 9966 * @param count the length of the subarray in {@code char}s 9967 * @return the number of Unicode code points in the specified subarray 9968 * @throws NullPointerException if {@code a} is null. 9969 * @throws IndexOutOfBoundsException if {@code offset} or 9970 * {@code count} is negative, or if {@code offset + 9971 * count} is larger than the length of the given array. 9972 * @since 1.5 9973 */ 9974 public static int codePointCount(char[] a, int offset, int count) { 9975 Objects.checkFromIndexSize(offset, count, a.length); 9976 return codePointCountImpl(a, offset, count); 9977 } 9978 9979 static int codePointCountImpl(char[] a, int offset, int count) { 9980 int endIndex = offset + count; 9981 int n = count; 9982 for (int i = offset; i < endIndex; ) { 9983 if (isHighSurrogate(a[i++]) && i < endIndex && 9984 isLowSurrogate(a[i])) { 9985 n--; 9986 i++; 9987 } 9988 } 9989 return n; 9990 } 9991 9992 /** 9993 * Returns the index within the given char sequence that is offset 9994 * from the given {@code index} by {@code codePointOffset} 9995 * code points. Unpaired surrogates within the text range given by 9996 * {@code index} and {@code codePointOffset} count as 9997 * one code point each. 9998 * 9999 * @param seq the char sequence 10000 * @param index the index to be offset 10001 * @param codePointOffset the offset in code points 10002 * @return the index within the char sequence 10003 * @throws NullPointerException if {@code seq} is null. 10004 * @throws IndexOutOfBoundsException if {@code index} 10005 * is negative or larger than the length of the char sequence, 10006 * or if {@code codePointOffset} is positive and the 10007 * subsequence starting with {@code index} has fewer than 10008 * {@code codePointOffset} code points, or if 10009 * {@code codePointOffset} is negative and the subsequence 10010 * before {@code index} has fewer than the absolute value 10011 * of {@code codePointOffset} code points. 10012 * @since 1.5 10013 */ 10014 public static int offsetByCodePoints(CharSequence seq, int index, 10015 int codePointOffset) { 10016 int length = seq.length(); 10017 if (index < 0 || index > length) { 10018 throw new IndexOutOfBoundsException(); 10019 } 10020 10021 int x = index; 10022 if (codePointOffset >= 0) { 10023 int i; 10024 for (i = 0; x < length && i < codePointOffset; i++) { 10025 if (isHighSurrogate(seq.charAt(x++)) && x < length && 10026 isLowSurrogate(seq.charAt(x))) { 10027 x++; 10028 } 10029 } 10030 if (i < codePointOffset) { 10031 throw new IndexOutOfBoundsException(); 10032 } 10033 } else { 10034 int i; 10035 for (i = codePointOffset; x > 0 && i < 0; i++) { 10036 if (isLowSurrogate(seq.charAt(--x)) && x > 0 && 10037 isHighSurrogate(seq.charAt(x-1))) { 10038 x--; 10039 } 10040 } 10041 if (i < 0) { 10042 throw new IndexOutOfBoundsException(); 10043 } 10044 } 10045 return x; 10046 } 10047 10048 /** 10049 * Returns the index within the given {@code char} subarray 10050 * that is offset from the given {@code index} by 10051 * {@code codePointOffset} code points. The 10052 * {@code start} and {@code count} arguments specify a 10053 * subarray of the {@code char} array. Unpaired surrogates 10054 * within the text range given by {@code index} and 10055 * {@code codePointOffset} count as one code point each. 10056 * 10057 * @param a the {@code char} array 10058 * @param start the index of the first {@code char} of the 10059 * subarray 10060 * @param count the length of the subarray in {@code char}s 10061 * @param index the index to be offset 10062 * @param codePointOffset the offset in code points 10063 * @return the index within the subarray 10064 * @throws NullPointerException if {@code a} is null. 10065 * @throws IndexOutOfBoundsException 10066 * if {@code start} or {@code count} is negative, 10067 * or if {@code start + count} is larger than the length of 10068 * the given array, 10069 * or if {@code index} is less than {@code start} or 10070 * larger then {@code start + count}, 10071 * or if {@code codePointOffset} is positive and the text range 10072 * starting with {@code index} and ending with {@code start + count - 1} 10073 * has fewer than {@code codePointOffset} code 10074 * points, 10075 * or if {@code codePointOffset} is negative and the text range 10076 * starting with {@code start} and ending with {@code index - 1} 10077 * has fewer than the absolute value of 10078 * {@code codePointOffset} code points. 10079 * @since 1.5 10080 */ 10081 public static int offsetByCodePoints(char[] a, int start, int count, 10082 int index, int codePointOffset) { 10083 if (count > a.length-start || start < 0 || count < 0 10084 || index < start || index > start+count) { 10085 throw new IndexOutOfBoundsException(); 10086 } 10087 return offsetByCodePointsImpl(a, start, count, index, codePointOffset); 10088 } 10089 10090 static int offsetByCodePointsImpl(char[]a, int start, int count, 10091 int index, int codePointOffset) { 10092 int x = index; 10093 if (codePointOffset >= 0) { 10094 int limit = start + count; 10095 int i; 10096 for (i = 0; x < limit && i < codePointOffset; i++) { 10097 if (isHighSurrogate(a[x++]) && x < limit && 10098 isLowSurrogate(a[x])) { 10099 x++; 10100 } 10101 } 10102 if (i < codePointOffset) { 10103 throw new IndexOutOfBoundsException(); 10104 } 10105 } else { 10106 int i; 10107 for (i = codePointOffset; x > start && i < 0; i++) { 10108 if (isLowSurrogate(a[--x]) && x > start && 10109 isHighSurrogate(a[x-1])) { 10110 x--; 10111 } 10112 } 10113 if (i < 0) { 10114 throw new IndexOutOfBoundsException(); 10115 } 10116 } 10117 return x; 10118 } 10119 10120 /** 10121 * Determines if the specified character is a lowercase character. 10122 * <p> 10123 * A character is lowercase if its general category type, provided 10124 * by {@code Character.getType(ch)}, is 10125 * {@code LOWERCASE_LETTER}, or it has contributory property 10126 * Other_Lowercase as defined by the Unicode Standard. 10127 * <p> 10128 * The following are examples of lowercase characters: 10129 * <blockquote><pre> 10130 * a b c d e f g h i j k l m n o p q r s t u v w x y z 10131 * '\u00DF' '\u00E0' '\u00E1' '\u00E2' '\u00E3' '\u00E4' '\u00E5' '\u00E6' 10132 * '\u00E7' '\u00E8' '\u00E9' '\u00EA' '\u00EB' '\u00EC' '\u00ED' '\u00EE' 10133 * '\u00EF' '\u00F0' '\u00F1' '\u00F2' '\u00F3' '\u00F4' '\u00F5' '\u00F6' 10134 * '\u00F8' '\u00F9' '\u00FA' '\u00FB' '\u00FC' '\u00FD' '\u00FE' '\u00FF' 10135 * </pre></blockquote> 10136 * <p> Many other Unicode characters are lowercase too. 10137 * 10138 * <p><b>Note:</b> This method cannot handle <a 10139 * href="#supplementary"> supplementary characters</a>. To support 10140 * all Unicode characters, including supplementary characters, use 10141 * the {@link #isLowerCase(int)} method. 10142 * 10143 * @param ch the character to be tested. 10144 * @return {@code true} if the character is lowercase; 10145 * {@code false} otherwise. 10146 * @see Character#isLowerCase(char) 10147 * @see Character#isTitleCase(char) 10148 * @see Character#toLowerCase(char) 10149 * @see Character#getType(char) 10150 */ 10151 public static boolean isLowerCase(char ch) { 10152 return isLowerCase((int)ch); 10153 } 10154 10155 /** 10156 * Determines if the specified character (Unicode code point) is a 10157 * lowercase character. 10158 * <p> 10159 * A character is lowercase if its general category type, provided 10160 * by {@link Character#getType getType(codePoint)}, is 10161 * {@code LOWERCASE_LETTER}, or it has contributory property 10162 * Other_Lowercase as defined by the Unicode Standard. 10163 * <p> 10164 * The following are examples of lowercase characters: 10165 * <blockquote><pre> 10166 * a b c d e f g h i j k l m n o p q r s t u v w x y z 10167 * '\u00DF' '\u00E0' '\u00E1' '\u00E2' '\u00E3' '\u00E4' '\u00E5' '\u00E6' 10168 * '\u00E7' '\u00E8' '\u00E9' '\u00EA' '\u00EB' '\u00EC' '\u00ED' '\u00EE' 10169 * '\u00EF' '\u00F0' '\u00F1' '\u00F2' '\u00F3' '\u00F4' '\u00F5' '\u00F6' 10170 * '\u00F8' '\u00F9' '\u00FA' '\u00FB' '\u00FC' '\u00FD' '\u00FE' '\u00FF' 10171 * </pre></blockquote> 10172 * <p> Many other Unicode characters are lowercase too. 10173 * 10174 * @param codePoint the character (Unicode code point) to be tested. 10175 * @return {@code true} if the character is lowercase; 10176 * {@code false} otherwise. 10177 * @see Character#isLowerCase(int) 10178 * @see Character#isTitleCase(int) 10179 * @see Character#toLowerCase(int) 10180 * @see Character#getType(int) 10181 * @since 1.5 10182 */ 10183 public static boolean isLowerCase(int codePoint) { 10184 return CharacterData.of(codePoint).isLowerCase(codePoint); 10185 } 10186 10187 /** 10188 * Determines if the specified character is an uppercase character. 10189 * <p> 10190 * A character is uppercase if its general category type, provided by 10191 * {@code Character.getType(ch)}, is {@code UPPERCASE_LETTER}. 10192 * or it has contributory property Other_Uppercase as defined by the Unicode Standard. 10193 * <p> 10194 * The following are examples of uppercase characters: 10195 * <blockquote><pre> 10196 * A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 10197 * '\u00C0' '\u00C1' '\u00C2' '\u00C3' '\u00C4' '\u00C5' '\u00C6' '\u00C7' 10198 * '\u00C8' '\u00C9' '\u00CA' '\u00CB' '\u00CC' '\u00CD' '\u00CE' '\u00CF' 10199 * '\u00D0' '\u00D1' '\u00D2' '\u00D3' '\u00D4' '\u00D5' '\u00D6' '\u00D8' 10200 * '\u00D9' '\u00DA' '\u00DB' '\u00DC' '\u00DD' '\u00DE' 10201 * </pre></blockquote> 10202 * <p> Many other Unicode characters are uppercase too. 10203 * 10204 * <p><b>Note:</b> This method cannot handle <a 10205 * href="#supplementary"> supplementary characters</a>. To support 10206 * all Unicode characters, including supplementary characters, use 10207 * the {@link #isUpperCase(int)} method. 10208 * 10209 * @param ch the character to be tested. 10210 * @return {@code true} if the character is uppercase; 10211 * {@code false} otherwise. 10212 * @see Character#isLowerCase(char) 10213 * @see Character#isTitleCase(char) 10214 * @see Character#toUpperCase(char) 10215 * @see Character#getType(char) 10216 * @since 1.0 10217 */ 10218 public static boolean isUpperCase(char ch) { 10219 return isUpperCase((int)ch); 10220 } 10221 10222 /** 10223 * Determines if the specified character (Unicode code point) is an uppercase character. 10224 * <p> 10225 * A character is uppercase if its general category type, provided by 10226 * {@link Character#getType(int) getType(codePoint)}, is {@code UPPERCASE_LETTER}, 10227 * or it has contributory property Other_Uppercase as defined by the Unicode Standard. 10228 * <p> 10229 * The following are examples of uppercase characters: 10230 * <blockquote><pre> 10231 * A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 10232 * '\u00C0' '\u00C1' '\u00C2' '\u00C3' '\u00C4' '\u00C5' '\u00C6' '\u00C7' 10233 * '\u00C8' '\u00C9' '\u00CA' '\u00CB' '\u00CC' '\u00CD' '\u00CE' '\u00CF' 10234 * '\u00D0' '\u00D1' '\u00D2' '\u00D3' '\u00D4' '\u00D5' '\u00D6' '\u00D8' 10235 * '\u00D9' '\u00DA' '\u00DB' '\u00DC' '\u00DD' '\u00DE' 10236 * </pre></blockquote> 10237 * <p> Many other Unicode characters are uppercase too. 10238 * 10239 * @param codePoint the character (Unicode code point) to be tested. 10240 * @return {@code true} if the character is uppercase; 10241 * {@code false} otherwise. 10242 * @see Character#isLowerCase(int) 10243 * @see Character#isTitleCase(int) 10244 * @see Character#toUpperCase(int) 10245 * @see Character#getType(int) 10246 * @since 1.5 10247 */ 10248 public static boolean isUpperCase(int codePoint) { 10249 return CharacterData.of(codePoint).isUpperCase(codePoint); 10250 } 10251 10252 /** 10253 * Determines if the specified character is a titlecase character. 10254 * <p> 10255 * A character is a titlecase character if its general 10256 * category type, provided by {@code Character.getType(ch)}, 10257 * is {@code TITLECASE_LETTER}. 10258 * <p> 10259 * Some characters look like pairs of Latin letters. For example, there 10260 * is an uppercase letter that looks like "LJ" and has a corresponding 10261 * lowercase letter that looks like "lj". A third form, which looks like "Lj", 10262 * is the appropriate form to use when rendering a word in lowercase 10263 * with initial capitals, as for a book title. 10264 * <p> 10265 * These are some of the Unicode characters for which this method returns 10266 * {@code true}: 10267 * <ul> 10268 * <li>{@code LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON} 10269 * <li>{@code LATIN CAPITAL LETTER L WITH SMALL LETTER J} 10270 * <li>{@code LATIN CAPITAL LETTER N WITH SMALL LETTER J} 10271 * <li>{@code LATIN CAPITAL LETTER D WITH SMALL LETTER Z} 10272 * </ul> 10273 * <p> Many other Unicode characters are titlecase too. 10274 * 10275 * <p><b>Note:</b> This method cannot handle <a 10276 * href="#supplementary"> supplementary characters</a>. To support 10277 * all Unicode characters, including supplementary characters, use 10278 * the {@link #isTitleCase(int)} method. 10279 * 10280 * @param ch the character to be tested. 10281 * @return {@code true} if the character is titlecase; 10282 * {@code false} otherwise. 10283 * @see Character#isLowerCase(char) 10284 * @see Character#isUpperCase(char) 10285 * @see Character#toTitleCase(char) 10286 * @see Character#getType(char) 10287 * @since 1.0.2 10288 */ 10289 public static boolean isTitleCase(char ch) { 10290 return isTitleCase((int)ch); 10291 } 10292 10293 /** 10294 * Determines if the specified character (Unicode code point) is a titlecase character. 10295 * <p> 10296 * A character is a titlecase character if its general 10297 * category type, provided by {@link Character#getType(int) getType(codePoint)}, 10298 * is {@code TITLECASE_LETTER}. 10299 * <p> 10300 * Some characters look like pairs of Latin letters. For example, there 10301 * is an uppercase letter that looks like "LJ" and has a corresponding 10302 * lowercase letter that looks like "lj". A third form, which looks like "Lj", 10303 * is the appropriate form to use when rendering a word in lowercase 10304 * with initial capitals, as for a book title. 10305 * <p> 10306 * These are some of the Unicode characters for which this method returns 10307 * {@code true}: 10308 * <ul> 10309 * <li>{@code LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON} 10310 * <li>{@code LATIN CAPITAL LETTER L WITH SMALL LETTER J} 10311 * <li>{@code LATIN CAPITAL LETTER N WITH SMALL LETTER J} 10312 * <li>{@code LATIN CAPITAL LETTER D WITH SMALL LETTER Z} 10313 * </ul> 10314 * <p> Many other Unicode characters are titlecase too. 10315 * 10316 * @param codePoint the character (Unicode code point) to be tested. 10317 * @return {@code true} if the character is titlecase; 10318 * {@code false} otherwise. 10319 * @see Character#isLowerCase(int) 10320 * @see Character#isUpperCase(int) 10321 * @see Character#toTitleCase(int) 10322 * @see Character#getType(int) 10323 * @since 1.5 10324 */ 10325 public static boolean isTitleCase(int codePoint) { 10326 return getType(codePoint) == Character.TITLECASE_LETTER; 10327 } 10328 10329 /** 10330 * Determines if the specified character is a digit. 10331 * <p> 10332 * A character is a digit if its general category type, provided 10333 * by {@code Character.getType(ch)}, is 10334 * {@code DECIMAL_DIGIT_NUMBER}. 10335 * <p> 10336 * Some Unicode character ranges that contain digits: 10337 * <ul> 10338 * <li>{@code '\u005Cu0030'} through {@code '\u005Cu0039'}, 10339 * ISO-LATIN-1 digits ({@code '0'} through {@code '9'}) 10340 * <li>{@code '\u005Cu0660'} through {@code '\u005Cu0669'}, 10341 * Arabic-Indic digits 10342 * <li>{@code '\u005Cu06F0'} through {@code '\u005Cu06F9'}, 10343 * Extended Arabic-Indic digits 10344 * <li>{@code '\u005Cu0966'} through {@code '\u005Cu096F'}, 10345 * Devanagari digits 10346 * <li>{@code '\u005CuFF10'} through {@code '\u005CuFF19'}, 10347 * Fullwidth digits 10348 * </ul> 10349 * 10350 * Many other character ranges contain digits as well. 10351 * 10352 * <p><b>Note:</b> This method cannot handle <a 10353 * href="#supplementary"> supplementary characters</a>. To support 10354 * all Unicode characters, including supplementary characters, use 10355 * the {@link #isDigit(int)} method. 10356 * 10357 * @param ch the character to be tested. 10358 * @return {@code true} if the character is a digit; 10359 * {@code false} otherwise. 10360 * @see Character#digit(char, int) 10361 * @see Character#forDigit(int, int) 10362 * @see Character#getType(char) 10363 */ 10364 public static boolean isDigit(char ch) { 10365 return isDigit((int)ch); 10366 } 10367 10368 /** 10369 * Determines if the specified character (Unicode code point) is a digit. 10370 * <p> 10371 * A character is a digit if its general category type, provided 10372 * by {@link Character#getType(int) getType(codePoint)}, is 10373 * {@code DECIMAL_DIGIT_NUMBER}. 10374 * <p> 10375 * Some Unicode character ranges that contain digits: 10376 * <ul> 10377 * <li>{@code '\u005Cu0030'} through {@code '\u005Cu0039'}, 10378 * ISO-LATIN-1 digits ({@code '0'} through {@code '9'}) 10379 * <li>{@code '\u005Cu0660'} through {@code '\u005Cu0669'}, 10380 * Arabic-Indic digits 10381 * <li>{@code '\u005Cu06F0'} through {@code '\u005Cu06F9'}, 10382 * Extended Arabic-Indic digits 10383 * <li>{@code '\u005Cu0966'} through {@code '\u005Cu096F'}, 10384 * Devanagari digits 10385 * <li>{@code '\u005CuFF10'} through {@code '\u005CuFF19'}, 10386 * Fullwidth digits 10387 * </ul> 10388 * 10389 * Many other character ranges contain digits as well. 10390 * 10391 * @param codePoint the character (Unicode code point) to be tested. 10392 * @return {@code true} if the character is a digit; 10393 * {@code false} otherwise. 10394 * @see Character#forDigit(int, int) 10395 * @see Character#getType(int) 10396 * @since 1.5 10397 */ 10398 public static boolean isDigit(int codePoint) { 10399 return CharacterData.of(codePoint).isDigit(codePoint); 10400 } 10401 10402 /** 10403 * Determines if a character is defined in Unicode. 10404 * <p> 10405 * A character is defined if at least one of the following is true: 10406 * <ul> 10407 * <li>It has an entry in the UnicodeData file. 10408 * <li>It has a value in a range defined by the UnicodeData file. 10409 * </ul> 10410 * 10411 * <p><b>Note:</b> This method cannot handle <a 10412 * href="#supplementary"> supplementary characters</a>. To support 10413 * all Unicode characters, including supplementary characters, use 10414 * the {@link #isDefined(int)} method. 10415 * 10416 * @param ch the character to be tested 10417 * @return {@code true} if the character has a defined meaning 10418 * in Unicode; {@code false} otherwise. 10419 * @see Character#isDigit(char) 10420 * @see Character#isLetter(char) 10421 * @see Character#isLetterOrDigit(char) 10422 * @see Character#isLowerCase(char) 10423 * @see Character#isTitleCase(char) 10424 * @see Character#isUpperCase(char) 10425 * @since 1.0.2 10426 */ 10427 public static boolean isDefined(char ch) { 10428 return isDefined((int)ch); 10429 } 10430 10431 /** 10432 * Determines if a character (Unicode code point) is defined in Unicode. 10433 * <p> 10434 * A character is defined if at least one of the following is true: 10435 * <ul> 10436 * <li>It has an entry in the UnicodeData file. 10437 * <li>It has a value in a range defined by the UnicodeData file. 10438 * </ul> 10439 * 10440 * @param codePoint the character (Unicode code point) to be tested. 10441 * @return {@code true} if the character has a defined meaning 10442 * in Unicode; {@code false} otherwise. 10443 * @see Character#isDigit(int) 10444 * @see Character#isLetter(int) 10445 * @see Character#isLetterOrDigit(int) 10446 * @see Character#isLowerCase(int) 10447 * @see Character#isTitleCase(int) 10448 * @see Character#isUpperCase(int) 10449 * @since 1.5 10450 */ 10451 public static boolean isDefined(int codePoint) { 10452 return getType(codePoint) != Character.UNASSIGNED; 10453 } 10454 10455 /** 10456 * Determines if the specified character is a letter. 10457 * <p> 10458 * A character is considered to be a letter if its general 10459 * category type, provided by {@code Character.getType(ch)}, 10460 * is any of the following: 10461 * <ul> 10462 * <li> {@code UPPERCASE_LETTER} 10463 * <li> {@code LOWERCASE_LETTER} 10464 * <li> {@code TITLECASE_LETTER} 10465 * <li> {@code MODIFIER_LETTER} 10466 * <li> {@code OTHER_LETTER} 10467 * </ul> 10468 * 10469 * Not all letters have case. Many characters are 10470 * letters but are neither uppercase nor lowercase nor titlecase. 10471 * 10472 * <p><b>Note:</b> This method cannot handle <a 10473 * href="#supplementary"> supplementary characters</a>. To support 10474 * all Unicode characters, including supplementary characters, use 10475 * the {@link #isLetter(int)} method. 10476 * 10477 * @param ch the character to be tested. 10478 * @return {@code true} if the character is a letter; 10479 * {@code false} otherwise. 10480 * @see Character#isDigit(char) 10481 * @see Character#isJavaIdentifierStart(char) 10482 * @see Character#isJavaLetter(char) 10483 * @see Character#isJavaLetterOrDigit(char) 10484 * @see Character#isLetterOrDigit(char) 10485 * @see Character#isLowerCase(char) 10486 * @see Character#isTitleCase(char) 10487 * @see Character#isUnicodeIdentifierStart(char) 10488 * @see Character#isUpperCase(char) 10489 */ 10490 public static boolean isLetter(char ch) { 10491 return isLetter((int)ch); 10492 } 10493 10494 /** 10495 * Determines if the specified character (Unicode code point) is a letter. 10496 * <p> 10497 * A character is considered to be a letter if its general 10498 * category type, provided by {@link Character#getType(int) getType(codePoint)}, 10499 * is any of the following: 10500 * <ul> 10501 * <li> {@code UPPERCASE_LETTER} 10502 * <li> {@code LOWERCASE_LETTER} 10503 * <li> {@code TITLECASE_LETTER} 10504 * <li> {@code MODIFIER_LETTER} 10505 * <li> {@code OTHER_LETTER} 10506 * </ul> 10507 * 10508 * Not all letters have case. Many characters are 10509 * letters but are neither uppercase nor lowercase nor titlecase. 10510 * 10511 * @param codePoint the character (Unicode code point) to be tested. 10512 * @return {@code true} if the character is a letter; 10513 * {@code false} otherwise. 10514 * @see Character#isDigit(int) 10515 * @see Character#isJavaIdentifierStart(int) 10516 * @see Character#isLetterOrDigit(int) 10517 * @see Character#isLowerCase(int) 10518 * @see Character#isTitleCase(int) 10519 * @see Character#isUnicodeIdentifierStart(int) 10520 * @see Character#isUpperCase(int) 10521 * @since 1.5 10522 */ 10523 public static boolean isLetter(int codePoint) { 10524 return ((((1 << Character.UPPERCASE_LETTER) | 10525 (1 << Character.LOWERCASE_LETTER) | 10526 (1 << Character.TITLECASE_LETTER) | 10527 (1 << Character.MODIFIER_LETTER) | 10528 (1 << Character.OTHER_LETTER)) >> getType(codePoint)) & 1) 10529 != 0; 10530 } 10531 10532 /** 10533 * Determines if the specified character is a letter or digit. 10534 * <p> 10535 * A character is considered to be a letter or digit if either 10536 * {@code Character.isLetter(char ch)} or 10537 * {@code Character.isDigit(char ch)} returns 10538 * {@code true} for the character. 10539 * 10540 * <p><b>Note:</b> This method cannot handle <a 10541 * href="#supplementary"> supplementary characters</a>. To support 10542 * all Unicode characters, including supplementary characters, use 10543 * the {@link #isLetterOrDigit(int)} method. 10544 * 10545 * @param ch the character to be tested. 10546 * @return {@code true} if the character is a letter or digit; 10547 * {@code false} otherwise. 10548 * @see Character#isDigit(char) 10549 * @see Character#isJavaIdentifierPart(char) 10550 * @see Character#isJavaLetter(char) 10551 * @see Character#isJavaLetterOrDigit(char) 10552 * @see Character#isLetter(char) 10553 * @see Character#isUnicodeIdentifierPart(char) 10554 * @since 1.0.2 10555 */ 10556 public static boolean isLetterOrDigit(char ch) { 10557 return isLetterOrDigit((int)ch); 10558 } 10559 10560 /** 10561 * Determines if the specified character (Unicode code point) is a letter or digit. 10562 * <p> 10563 * A character is considered to be a letter or digit if either 10564 * {@link #isLetter(int) isLetter(codePoint)} or 10565 * {@link #isDigit(int) isDigit(codePoint)} returns 10566 * {@code true} for the character. 10567 * 10568 * @param codePoint the character (Unicode code point) to be tested. 10569 * @return {@code true} if the character is a letter or digit; 10570 * {@code false} otherwise. 10571 * @see Character#isDigit(int) 10572 * @see Character#isJavaIdentifierPart(int) 10573 * @see Character#isLetter(int) 10574 * @see Character#isUnicodeIdentifierPart(int) 10575 * @since 1.5 10576 */ 10577 public static boolean isLetterOrDigit(int codePoint) { 10578 return ((((1 << Character.UPPERCASE_LETTER) | 10579 (1 << Character.LOWERCASE_LETTER) | 10580 (1 << Character.TITLECASE_LETTER) | 10581 (1 << Character.MODIFIER_LETTER) | 10582 (1 << Character.OTHER_LETTER) | 10583 (1 << Character.DECIMAL_DIGIT_NUMBER)) >> getType(codePoint)) & 1) 10584 != 0; 10585 } 10586 10587 /** 10588 * Determines if the specified character is permissible as the first 10589 * character in a Java identifier. 10590 * <p> 10591 * A character may start a Java identifier if and only if 10592 * one of the following conditions is true: 10593 * <ul> 10594 * <li> {@link #isLetter(char) isLetter(ch)} returns {@code true} 10595 * <li> {@link #getType(char) getType(ch)} returns {@code LETTER_NUMBER} 10596 * <li> {@code ch} is a currency symbol (such as {@code '$'}) 10597 * <li> {@code ch} is a connecting punctuation character (such as {@code '_'}). 10598 * </ul> 10599 * 10600 * @param ch the character to be tested. 10601 * @return {@code true} if the character may start a Java 10602 * identifier; {@code false} otherwise. 10603 * @see Character#isJavaLetterOrDigit(char) 10604 * @see Character#isJavaIdentifierStart(char) 10605 * @see Character#isJavaIdentifierPart(char) 10606 * @see Character#isLetter(char) 10607 * @see Character#isLetterOrDigit(char) 10608 * @see Character#isUnicodeIdentifierStart(char) 10609 * @since 1.0.2 10610 * @deprecated Replaced by isJavaIdentifierStart(char). 10611 */ 10612 @Deprecated(since="1.1") 10613 public static boolean isJavaLetter(char ch) { 10614 return isJavaIdentifierStart(ch); 10615 } 10616 10617 /** 10618 * Determines if the specified character may be part of a Java 10619 * identifier as other than the first character. 10620 * <p> 10621 * A character may be part of a Java identifier if and only if one 10622 * of the following conditions is true: 10623 * <ul> 10624 * <li> it is a letter 10625 * <li> it is a currency symbol (such as {@code '$'}) 10626 * <li> it is a connecting punctuation character (such as {@code '_'}) 10627 * <li> it is a digit 10628 * <li> it is a numeric letter (such as a Roman numeral character) 10629 * <li> it is a combining mark 10630 * <li> it is a non-spacing mark 10631 * <li> {@code isIdentifierIgnorable} returns 10632 * {@code true} for the character. 10633 * </ul> 10634 * 10635 * @param ch the character to be tested. 10636 * @return {@code true} if the character may be part of a 10637 * Java identifier; {@code false} otherwise. 10638 * @see Character#isJavaLetter(char) 10639 * @see Character#isJavaIdentifierStart(char) 10640 * @see Character#isJavaIdentifierPart(char) 10641 * @see Character#isLetter(char) 10642 * @see Character#isLetterOrDigit(char) 10643 * @see Character#isUnicodeIdentifierPart(char) 10644 * @see Character#isIdentifierIgnorable(char) 10645 * @since 1.0.2 10646 * @deprecated Replaced by isJavaIdentifierPart(char). 10647 */ 10648 @Deprecated(since="1.1") 10649 public static boolean isJavaLetterOrDigit(char ch) { 10650 return isJavaIdentifierPart(ch); 10651 } 10652 10653 /** 10654 * Determines if the specified character (Unicode code point) is alphabetic. 10655 * <p> 10656 * A character is considered to be alphabetic if its general category type, 10657 * provided by {@link Character#getType(int) getType(codePoint)}, is any of 10658 * the following: 10659 * <ul> 10660 * <li> {@code UPPERCASE_LETTER} 10661 * <li> {@code LOWERCASE_LETTER} 10662 * <li> {@code TITLECASE_LETTER} 10663 * <li> {@code MODIFIER_LETTER} 10664 * <li> {@code OTHER_LETTER} 10665 * <li> {@code LETTER_NUMBER} 10666 * </ul> 10667 * or it has contributory property Other_Alphabetic as defined by the 10668 * Unicode Standard. 10669 * 10670 * @param codePoint the character (Unicode code point) to be tested. 10671 * @return {@code true} if the character is a Unicode alphabet 10672 * character, {@code false} otherwise. 10673 * @since 1.7 10674 */ 10675 public static boolean isAlphabetic(int codePoint) { 10676 return (((((1 << Character.UPPERCASE_LETTER) | 10677 (1 << Character.LOWERCASE_LETTER) | 10678 (1 << Character.TITLECASE_LETTER) | 10679 (1 << Character.MODIFIER_LETTER) | 10680 (1 << Character.OTHER_LETTER) | 10681 (1 << Character.LETTER_NUMBER)) >> getType(codePoint)) & 1) != 0) || 10682 CharacterData.of(codePoint).isOtherAlphabetic(codePoint); 10683 } 10684 10685 /** 10686 * Determines if the specified character (Unicode code point) is a CJKV 10687 * (Chinese, Japanese, Korean and Vietnamese) ideograph, as defined by 10688 * the Unicode Standard. 10689 * 10690 * @param codePoint the character (Unicode code point) to be tested. 10691 * @return {@code true} if the character is a Unicode ideograph 10692 * character, {@code false} otherwise. 10693 * @since 1.7 10694 */ 10695 public static boolean isIdeographic(int codePoint) { 10696 return CharacterData.of(codePoint).isIdeographic(codePoint); 10697 } 10698 10699 /** 10700 * Determines if the specified character is 10701 * permissible as the first character in a Java identifier. 10702 * <p> 10703 * A character may start a Java identifier if and only if 10704 * one of the following conditions is true: 10705 * <ul> 10706 * <li> {@link #isLetter(char) isLetter(ch)} returns {@code true} 10707 * <li> {@link #getType(char) getType(ch)} returns {@code LETTER_NUMBER} 10708 * <li> {@code ch} is a currency symbol (such as {@code '$'}) 10709 * <li> {@code ch} is a connecting punctuation character (such as {@code '_'}). 10710 * </ul> 10711 * 10712 * <p><b>Note:</b> This method cannot handle <a 10713 * href="#supplementary"> supplementary characters</a>. To support 10714 * all Unicode characters, including supplementary characters, use 10715 * the {@link #isJavaIdentifierStart(int)} method. 10716 * 10717 * @param ch the character to be tested. 10718 * @return {@code true} if the character may start a Java identifier; 10719 * {@code false} otherwise. 10720 * @see Character#isJavaIdentifierPart(char) 10721 * @see Character#isLetter(char) 10722 * @see Character#isUnicodeIdentifierStart(char) 10723 * @see java.compiler/javax.lang.model.SourceVersion#isIdentifier(CharSequence) 10724 * @since 1.1 10725 */ 10726 @SuppressWarnings("doclint:reference") // cross-module links 10727 public static boolean isJavaIdentifierStart(char ch) { 10728 return isJavaIdentifierStart((int)ch); 10729 } 10730 10731 /** 10732 * Determines if the character (Unicode code point) is 10733 * permissible as the first character in a Java identifier. 10734 * <p> 10735 * A character may start a Java identifier if and only if 10736 * one of the following conditions is true: 10737 * <ul> 10738 * <li> {@link #isLetter(int) isLetter(codePoint)} 10739 * returns {@code true} 10740 * <li> {@link #getType(int) getType(codePoint)} 10741 * returns {@code LETTER_NUMBER} 10742 * <li> the referenced character is a currency symbol (such as {@code '$'}) 10743 * <li> the referenced character is a connecting punctuation character 10744 * (such as {@code '_'}). 10745 * </ul> 10746 * 10747 * @param codePoint the character (Unicode code point) to be tested. 10748 * @return {@code true} if the character may start a Java identifier; 10749 * {@code false} otherwise. 10750 * @see Character#isJavaIdentifierPart(int) 10751 * @see Character#isLetter(int) 10752 * @see Character#isUnicodeIdentifierStart(int) 10753 * @see java.compiler/javax.lang.model.SourceVersion#isIdentifier(CharSequence) 10754 * @since 1.5 10755 */ 10756 @SuppressWarnings("doclint:reference") // cross-module links 10757 public static boolean isJavaIdentifierStart(int codePoint) { 10758 return CharacterData.of(codePoint).isJavaIdentifierStart(codePoint); 10759 } 10760 10761 /** 10762 * Determines if the specified character may be part of a Java 10763 * identifier as other than the first character. 10764 * <p> 10765 * A character may be part of a Java identifier if any of the following 10766 * conditions are true: 10767 * <ul> 10768 * <li> it is a letter 10769 * <li> it is a currency symbol (such as {@code '$'}) 10770 * <li> it is a connecting punctuation character (such as {@code '_'}) 10771 * <li> it is a digit 10772 * <li> it is a numeric letter (such as a Roman numeral character) 10773 * <li> it is a combining mark 10774 * <li> it is a non-spacing mark 10775 * <li> {@code isIdentifierIgnorable} returns 10776 * {@code true} for the character 10777 * </ul> 10778 * 10779 * <p><b>Note:</b> This method cannot handle <a 10780 * href="#supplementary"> supplementary characters</a>. To support 10781 * all Unicode characters, including supplementary characters, use 10782 * the {@link #isJavaIdentifierPart(int)} method. 10783 * 10784 * @param ch the character to be tested. 10785 * @return {@code true} if the character may be part of a 10786 * Java identifier; {@code false} otherwise. 10787 * @see Character#isIdentifierIgnorable(char) 10788 * @see Character#isJavaIdentifierStart(char) 10789 * @see Character#isLetterOrDigit(char) 10790 * @see Character#isUnicodeIdentifierPart(char) 10791 * @see java.compiler/javax.lang.model.SourceVersion#isIdentifier(CharSequence) 10792 * @since 1.1 10793 */ 10794 @SuppressWarnings("doclint:reference") // cross-module links 10795 public static boolean isJavaIdentifierPart(char ch) { 10796 return isJavaIdentifierPart((int)ch); 10797 } 10798 10799 /** 10800 * Determines if the character (Unicode code point) may be part of a Java 10801 * identifier as other than the first character. 10802 * <p> 10803 * A character may be part of a Java identifier if any of the following 10804 * conditions are true: 10805 * <ul> 10806 * <li> it is a letter 10807 * <li> it is a currency symbol (such as {@code '$'}) 10808 * <li> it is a connecting punctuation character (such as {@code '_'}) 10809 * <li> it is a digit 10810 * <li> it is a numeric letter (such as a Roman numeral character) 10811 * <li> it is a combining mark 10812 * <li> it is a non-spacing mark 10813 * <li> {@link #isIdentifierIgnorable(int) 10814 * isIdentifierIgnorable(codePoint)} returns {@code true} for 10815 * the code point 10816 * </ul> 10817 * 10818 * @param codePoint the character (Unicode code point) to be tested. 10819 * @return {@code true} if the character may be part of a 10820 * Java identifier; {@code false} otherwise. 10821 * @see Character#isIdentifierIgnorable(int) 10822 * @see Character#isJavaIdentifierStart(int) 10823 * @see Character#isLetterOrDigit(int) 10824 * @see Character#isUnicodeIdentifierPart(int) 10825 * @see java.compiler/javax.lang.model.SourceVersion#isIdentifier(CharSequence) 10826 * @since 1.5 10827 */ 10828 @SuppressWarnings("doclint:reference") // cross-module links 10829 public static boolean isJavaIdentifierPart(int codePoint) { 10830 return CharacterData.of(codePoint).isJavaIdentifierPart(codePoint); 10831 } 10832 10833 /** 10834 * Determines if the specified character is permissible as the 10835 * first character in a Unicode identifier. 10836 * <p> 10837 * A character may start a Unicode identifier if and only if 10838 * one of the following conditions is true: 10839 * <ul> 10840 * <li> {@link #isLetter(char) isLetter(ch)} returns {@code true} 10841 * <li> {@link #getType(char) getType(ch)} returns 10842 * {@code LETTER_NUMBER}. 10843 * <li> it is an <a href="http://www.unicode.org/reports/tr44/#Other_ID_Start"> 10844 * {@code Other_ID_Start}</a> character. 10845 * </ul> 10846 * <p> 10847 * This method conforms to <a href="https://unicode.org/reports/tr31/#R1"> 10848 * UAX31-R1: Default Identifiers</a> requirement of the Unicode Standard, 10849 * with the following profile of UAX31: 10850 * <pre> 10851 * Start := ID_Start + 'VERTICAL TILDE' (U+2E2F) 10852 * </pre> 10853 * {@code 'VERTICAL TILDE'} is added to {@code Start} for backward 10854 * compatibility. 10855 * 10856 * <p><b>Note:</b> This method cannot handle <a 10857 * href="#supplementary"> supplementary characters</a>. To support 10858 * all Unicode characters, including supplementary characters, use 10859 * the {@link #isUnicodeIdentifierStart(int)} method. 10860 * 10861 * @param ch the character to be tested. 10862 * @return {@code true} if the character may start a Unicode 10863 * identifier; {@code false} otherwise. 10864 * 10865 * @spec https://www.unicode.org/reports/tr44 Unicode Character Database 10866 * @spec https://www.unicode.org/reports/tr31 Unicode Identifier and Pattern Syntax 10867 * @see Character#isJavaIdentifierStart(char) 10868 * @see Character#isLetter(char) 10869 * @see Character#isUnicodeIdentifierPart(char) 10870 * @since 1.1 10871 */ 10872 public static boolean isUnicodeIdentifierStart(char ch) { 10873 return isUnicodeIdentifierStart((int)ch); 10874 } 10875 10876 /** 10877 * Determines if the specified character (Unicode code point) is permissible as the 10878 * first character in a Unicode identifier. 10879 * <p> 10880 * A character may start a Unicode identifier if and only if 10881 * one of the following conditions is true: 10882 * <ul> 10883 * <li> {@link #isLetter(int) isLetter(codePoint)} 10884 * returns {@code true} 10885 * <li> {@link #getType(int) getType(codePoint)} 10886 * returns {@code LETTER_NUMBER}. 10887 * <li> it is an <a href="http://www.unicode.org/reports/tr44/#Other_ID_Start"> 10888 * {@code Other_ID_Start}</a> character. 10889 * </ul> 10890 * <p> 10891 * This method conforms to <a href="https://unicode.org/reports/tr31/#R1"> 10892 * UAX31-R1: Default Identifiers</a> requirement of the Unicode Standard, 10893 * with the following profile of UAX31: 10894 * <pre> 10895 * Start := ID_Start + 'VERTICAL TILDE' (U+2E2F) 10896 * </pre> 10897 * {@code 'VERTICAL TILDE'} is added to {@code Start} for backward 10898 * compatibility. 10899 * 10900 * @param codePoint the character (Unicode code point) to be tested. 10901 * @return {@code true} if the character may start a Unicode 10902 * identifier; {@code false} otherwise. 10903 * 10904 * @spec https://www.unicode.org/reports/tr44 Unicode Character Database 10905 * @spec https://www.unicode.org/reports/tr31 Unicode Identifier and Pattern Syntax 10906 * @see Character#isJavaIdentifierStart(int) 10907 * @see Character#isLetter(int) 10908 * @see Character#isUnicodeIdentifierPart(int) 10909 * @since 1.5 10910 */ 10911 public static boolean isUnicodeIdentifierStart(int codePoint) { 10912 return CharacterData.of(codePoint).isUnicodeIdentifierStart(codePoint); 10913 } 10914 10915 /** 10916 * Determines if the specified character may be part of a Unicode 10917 * identifier as other than the first character. 10918 * <p> 10919 * A character may be part of a Unicode identifier if and only if 10920 * one of the following statements is true: 10921 * <ul> 10922 * <li> it is a letter 10923 * <li> it is a connecting punctuation character (such as {@code '_'}) 10924 * <li> it is a digit 10925 * <li> it is a numeric letter (such as a Roman numeral character) 10926 * <li> it is a combining mark 10927 * <li> it is a non-spacing mark 10928 * <li> {@code isIdentifierIgnorable} returns 10929 * {@code true} for this character. 10930 * <li> it is an <a href="http://www.unicode.org/reports/tr44/#Other_ID_Start"> 10931 * {@code Other_ID_Start}</a> character. 10932 * <li> it is an <a href="http://www.unicode.org/reports/tr44/#Other_ID_Continue"> 10933 * {@code Other_ID_Continue}</a> character. 10934 * </ul> 10935 * <p> 10936 * This method conforms to <a href="https://unicode.org/reports/tr31/#R1"> 10937 * UAX31-R1: Default Identifiers</a> requirement of the Unicode Standard, 10938 * with the following profile of UAX31: 10939 * <pre> 10940 * Continue := Start + ID_Continue + ignorable 10941 * Medial := empty 10942 * ignorable := isIdentifierIgnorable(char) returns true for the character 10943 * </pre> 10944 * {@code ignorable} is added to {@code Continue} for backward 10945 * compatibility. 10946 * 10947 * <p><b>Note:</b> This method cannot handle <a 10948 * href="#supplementary"> supplementary characters</a>. To support 10949 * all Unicode characters, including supplementary characters, use 10950 * the {@link #isUnicodeIdentifierPart(int)} method. 10951 * 10952 * @param ch the character to be tested. 10953 * @return {@code true} if the character may be part of a 10954 * Unicode identifier; {@code false} otherwise. 10955 * 10956 * @spec https://www.unicode.org/reports/tr44 Unicode Character Database 10957 * @spec https://www.unicode.org/reports/tr31 Unicode Identifier and Pattern Syntax 10958 * @see Character#isIdentifierIgnorable(char) 10959 * @see Character#isJavaIdentifierPart(char) 10960 * @see Character#isLetterOrDigit(char) 10961 * @see Character#isUnicodeIdentifierStart(char) 10962 * @since 1.1 10963 */ 10964 public static boolean isUnicodeIdentifierPart(char ch) { 10965 return isUnicodeIdentifierPart((int)ch); 10966 } 10967 10968 /** 10969 * Determines if the specified character (Unicode code point) may be part of a Unicode 10970 * identifier as other than the first character. 10971 * <p> 10972 * A character may be part of a Unicode identifier if and only if 10973 * one of the following statements is true: 10974 * <ul> 10975 * <li> it is a letter 10976 * <li> it is a connecting punctuation character (such as {@code '_'}) 10977 * <li> it is a digit 10978 * <li> it is a numeric letter (such as a Roman numeral character) 10979 * <li> it is a combining mark 10980 * <li> it is a non-spacing mark 10981 * <li> {@code isIdentifierIgnorable} returns 10982 * {@code true} for this character. 10983 * <li> it is an <a href="http://www.unicode.org/reports/tr44/#Other_ID_Start"> 10984 * {@code Other_ID_Start}</a> character. 10985 * <li> it is an <a href="http://www.unicode.org/reports/tr44/#Other_ID_Continue"> 10986 * {@code Other_ID_Continue}</a> character. 10987 * </ul> 10988 * <p> 10989 * This method conforms to <a href="https://unicode.org/reports/tr31/#R1"> 10990 * UAX31-R1: Default Identifiers</a> requirement of the Unicode Standard, 10991 * with the following profile of UAX31: 10992 * <pre> 10993 * Continue := Start + ID_Continue + ignorable 10994 * Medial := empty 10995 * ignorable := isIdentifierIgnorable(int) returns true for the character 10996 * </pre> 10997 * {@code ignorable} is added to {@code Continue} for backward 10998 * compatibility. 10999 * 11000 * @param codePoint the character (Unicode code point) to be tested. 11001 * @return {@code true} if the character may be part of a 11002 * Unicode identifier; {@code false} otherwise. 11003 * 11004 * @spec https://www.unicode.org/reports/tr44 Unicode Character Database 11005 * @spec https://www.unicode.org/reports/tr31 Unicode Identifier and Pattern Syntax 11006 * @see Character#isIdentifierIgnorable(int) 11007 * @see Character#isJavaIdentifierPart(int) 11008 * @see Character#isLetterOrDigit(int) 11009 * @see Character#isUnicodeIdentifierStart(int) 11010 * @since 1.5 11011 */ 11012 public static boolean isUnicodeIdentifierPart(int codePoint) { 11013 return CharacterData.of(codePoint).isUnicodeIdentifierPart(codePoint); 11014 } 11015 11016 /** 11017 * Determines if the specified character should be regarded as 11018 * an ignorable character in a Java identifier or a Unicode identifier. 11019 * <p> 11020 * The following Unicode characters are ignorable in a Java identifier 11021 * or a Unicode identifier: 11022 * <ul> 11023 * <li>ISO control characters that are not whitespace 11024 * <ul> 11025 * <li>{@code '\u005Cu0000'} through {@code '\u005Cu0008'} 11026 * <li>{@code '\u005Cu000E'} through {@code '\u005Cu001B'} 11027 * <li>{@code '\u005Cu007F'} through {@code '\u005Cu009F'} 11028 * </ul> 11029 * 11030 * <li>all characters that have the {@code FORMAT} general 11031 * category value 11032 * </ul> 11033 * 11034 * <p><b>Note:</b> This method cannot handle <a 11035 * href="#supplementary"> supplementary characters</a>. To support 11036 * all Unicode characters, including supplementary characters, use 11037 * the {@link #isIdentifierIgnorable(int)} method. 11038 * 11039 * @param ch the character to be tested. 11040 * @return {@code true} if the character is an ignorable control 11041 * character that may be part of a Java or Unicode identifier; 11042 * {@code false} otherwise. 11043 * @see Character#isJavaIdentifierPart(char) 11044 * @see Character#isUnicodeIdentifierPart(char) 11045 * @since 1.1 11046 */ 11047 public static boolean isIdentifierIgnorable(char ch) { 11048 return isIdentifierIgnorable((int)ch); 11049 } 11050 11051 /** 11052 * Determines if the specified character (Unicode code point) should be regarded as 11053 * an ignorable character in a Java identifier or a Unicode identifier. 11054 * <p> 11055 * The following Unicode characters are ignorable in a Java identifier 11056 * or a Unicode identifier: 11057 * <ul> 11058 * <li>ISO control characters that are not whitespace 11059 * <ul> 11060 * <li>{@code '\u005Cu0000'} through {@code '\u005Cu0008'} 11061 * <li>{@code '\u005Cu000E'} through {@code '\u005Cu001B'} 11062 * <li>{@code '\u005Cu007F'} through {@code '\u005Cu009F'} 11063 * </ul> 11064 * 11065 * <li>all characters that have the {@code FORMAT} general 11066 * category value 11067 * </ul> 11068 * 11069 * @param codePoint the character (Unicode code point) to be tested. 11070 * @return {@code true} if the character is an ignorable control 11071 * character that may be part of a Java or Unicode identifier; 11072 * {@code false} otherwise. 11073 * @see Character#isJavaIdentifierPart(int) 11074 * @see Character#isUnicodeIdentifierPart(int) 11075 * @since 1.5 11076 */ 11077 public static boolean isIdentifierIgnorable(int codePoint) { 11078 return CharacterData.of(codePoint).isIdentifierIgnorable(codePoint); 11079 } 11080 11081 /** 11082 * Determines if the specified character (Unicode code point) is an Emoji. 11083 * <p> 11084 * A character is considered to be an Emoji if and only if it has the {@code Emoji} 11085 * property, defined in 11086 * <a href="https://unicode.org/reports/tr51/#Emoji_Properties_and_Data_Files"> 11087 * Unicode Emoji (Technical Standard #51)</a>. 11088 * 11089 * @param codePoint the character (Unicode code point) to be tested. 11090 * @return {@code true} if the character is an Emoji; 11091 * {@code false} otherwise. 11092 * @since 21 11093 */ 11094 public static boolean isEmoji(int codePoint) { 11095 return CharacterData.of(codePoint).isEmoji(codePoint); 11096 } 11097 11098 /** 11099 * Determines if the specified character (Unicode code point) has the 11100 * Emoji Presentation property by default. 11101 * <p> 11102 * A character is considered to have the Emoji Presentation property if and 11103 * only if it has the {@code Emoji_Presentation} property, defined in 11104 * <a href="https://unicode.org/reports/tr51/#Emoji_Properties_and_Data_Files"> 11105 * Unicode Emoji (Technical Standard #51)</a>. 11106 * 11107 * @param codePoint the character (Unicode code point) to be tested. 11108 * @return {@code true} if the character has the Emoji Presentation 11109 * property; {@code false} otherwise. 11110 * @since 21 11111 */ 11112 public static boolean isEmojiPresentation(int codePoint) { 11113 return CharacterData.of(codePoint).isEmojiPresentation(codePoint); 11114 } 11115 11116 /** 11117 * Determines if the specified character (Unicode code point) is an 11118 * Emoji Modifier. 11119 * <p> 11120 * A character is considered to be an Emoji Modifier if and only if it has 11121 * the {@code Emoji_Modifier} property, defined in 11122 * <a href="https://unicode.org/reports/tr51/#Emoji_Properties_and_Data_Files"> 11123 * Unicode Emoji (Technical Standard #51)</a>. 11124 * 11125 * @param codePoint the character (Unicode code point) to be tested. 11126 * @return {@code true} if the character is an Emoji Modifier; 11127 * {@code false} otherwise. 11128 * @since 21 11129 */ 11130 public static boolean isEmojiModifier(int codePoint) { 11131 return CharacterData.of(codePoint).isEmojiModifier(codePoint); 11132 } 11133 11134 /** 11135 * Determines if the specified character (Unicode code point) is an 11136 * Emoji Modifier Base. 11137 * <p> 11138 * A character is considered to be an Emoji Modifier Base if and only if it has 11139 * the {@code Emoji_Modifier_Base} property, defined in 11140 * <a href="https://unicode.org/reports/tr51/#Emoji_Properties_and_Data_Files"> 11141 * Unicode Emoji (Technical Standard #51)</a>. 11142 * 11143 * @param codePoint the character (Unicode code point) to be tested. 11144 * @return {@code true} if the character is an Emoji Modifier Base; 11145 * {@code false} otherwise. 11146 * @since 21 11147 */ 11148 public static boolean isEmojiModifierBase(int codePoint) { 11149 return CharacterData.of(codePoint).isEmojiModifierBase(codePoint); 11150 } 11151 11152 /** 11153 * Determines if the specified character (Unicode code point) is an 11154 * Emoji Component. 11155 * <p> 11156 * A character is considered to be an Emoji Component if and only if it has 11157 * the {@code Emoji_Component} property, defined in 11158 * <a href="https://unicode.org/reports/tr51/#Emoji_Properties_and_Data_Files"> 11159 * Unicode Emoji (Technical Standard #51)</a>. 11160 * 11161 * @param codePoint the character (Unicode code point) to be tested. 11162 * @return {@code true} if the character is an Emoji Component; 11163 * {@code false} otherwise. 11164 * @since 21 11165 */ 11166 public static boolean isEmojiComponent(int codePoint) { 11167 return CharacterData.of(codePoint).isEmojiComponent(codePoint); 11168 } 11169 11170 /** 11171 * Determines if the specified character (Unicode code point) is 11172 * an Extended Pictographic. 11173 * <p> 11174 * A character is considered to be an Extended Pictographic if and only if it has 11175 * the {@code Extended_Pictographic} property, defined in 11176 * <a href="https://unicode.org/reports/tr51/#Emoji_Properties_and_Data_Files"> 11177 * Unicode Emoji (Technical Standard #51)</a>. 11178 * 11179 * @param codePoint the character (Unicode code point) to be tested. 11180 * @return {@code true} if the character is an Extended Pictographic; 11181 * {@code false} otherwise. 11182 * @since 21 11183 */ 11184 public static boolean isExtendedPictographic(int codePoint) { 11185 return CharacterData.of(codePoint).isExtendedPictographic(codePoint); 11186 } 11187 11188 /** 11189 * Converts the character argument to lowercase using case 11190 * mapping information from the UnicodeData file. 11191 * <p> 11192 * Note that 11193 * {@code Character.isLowerCase(Character.toLowerCase(ch))} 11194 * does not always return {@code true} for some ranges of 11195 * characters, particularly those that are symbols or ideographs. 11196 * 11197 * <p>In general, {@link String#toLowerCase()} should be used to map 11198 * characters to lowercase. {@code String} case mapping methods 11199 * have several benefits over {@code Character} case mapping methods. 11200 * {@code String} case mapping methods can perform locale-sensitive 11201 * mappings, context-sensitive mappings, and 1:M character mappings, whereas 11202 * the {@code Character} case mapping methods cannot. 11203 * 11204 * <p><b>Note:</b> This method cannot handle <a 11205 * href="#supplementary"> supplementary characters</a>. To support 11206 * all Unicode characters, including supplementary characters, use 11207 * the {@link #toLowerCase(int)} method. 11208 * 11209 * @param ch the character to be converted. 11210 * @return the lowercase equivalent of the character, if any; 11211 * otherwise, the character itself. 11212 * @see Character#isLowerCase(char) 11213 * @see String#toLowerCase() 11214 */ 11215 public static char toLowerCase(char ch) { 11216 return (char)toLowerCase((int)ch); 11217 } 11218 11219 /** 11220 * Converts the character (Unicode code point) argument to 11221 * lowercase using case mapping information from the UnicodeData 11222 * file. 11223 * 11224 * <p> Note that 11225 * {@code Character.isLowerCase(Character.toLowerCase(codePoint))} 11226 * does not always return {@code true} for some ranges of 11227 * characters, particularly those that are symbols or ideographs. 11228 * 11229 * <p>In general, {@link String#toLowerCase()} should be used to map 11230 * characters to lowercase. {@code String} case mapping methods 11231 * have several benefits over {@code Character} case mapping methods. 11232 * {@code String} case mapping methods can perform locale-sensitive 11233 * mappings, context-sensitive mappings, and 1:M character mappings, whereas 11234 * the {@code Character} case mapping methods cannot. 11235 * 11236 * @param codePoint the character (Unicode code point) to be converted. 11237 * @return the lowercase equivalent of the character (Unicode code 11238 * point), if any; otherwise, the character itself. 11239 * @see Character#isLowerCase(int) 11240 * @see String#toLowerCase() 11241 * 11242 * @since 1.5 11243 */ 11244 public static int toLowerCase(int codePoint) { 11245 return CharacterData.of(codePoint).toLowerCase(codePoint); 11246 } 11247 11248 /** 11249 * Converts the character argument to uppercase using case mapping 11250 * information from the UnicodeData file. 11251 * <p> 11252 * Note that 11253 * {@code Character.isUpperCase(Character.toUpperCase(ch))} 11254 * does not always return {@code true} for some ranges of 11255 * characters, particularly those that are symbols or ideographs. 11256 * 11257 * <p>In general, {@link String#toUpperCase()} should be used to map 11258 * characters to uppercase. {@code String} case mapping methods 11259 * have several benefits over {@code Character} case mapping methods. 11260 * {@code String} case mapping methods can perform locale-sensitive 11261 * mappings, context-sensitive mappings, and 1:M character mappings, whereas 11262 * the {@code Character} case mapping methods cannot. 11263 * 11264 * <p><b>Note:</b> This method cannot handle <a 11265 * href="#supplementary"> supplementary characters</a>. To support 11266 * all Unicode characters, including supplementary characters, use 11267 * the {@link #toUpperCase(int)} method. 11268 * 11269 * @param ch the character to be converted. 11270 * @return the uppercase equivalent of the character, if any; 11271 * otherwise, the character itself. 11272 * @see Character#isUpperCase(char) 11273 * @see String#toUpperCase() 11274 */ 11275 public static char toUpperCase(char ch) { 11276 return (char)toUpperCase((int)ch); 11277 } 11278 11279 /** 11280 * Converts the character (Unicode code point) argument to 11281 * uppercase using case mapping information from the UnicodeData 11282 * file. 11283 * 11284 * <p>Note that 11285 * {@code Character.isUpperCase(Character.toUpperCase(codePoint))} 11286 * does not always return {@code true} for some ranges of 11287 * characters, particularly those that are symbols or ideographs. 11288 * 11289 * <p>In general, {@link String#toUpperCase()} should be used to map 11290 * characters to uppercase. {@code String} case mapping methods 11291 * have several benefits over {@code Character} case mapping methods. 11292 * {@code String} case mapping methods can perform locale-sensitive 11293 * mappings, context-sensitive mappings, and 1:M character mappings, whereas 11294 * the {@code Character} case mapping methods cannot. 11295 * 11296 * @param codePoint the character (Unicode code point) to be converted. 11297 * @return the uppercase equivalent of the character, if any; 11298 * otherwise, the character itself. 11299 * @see Character#isUpperCase(int) 11300 * @see String#toUpperCase() 11301 * 11302 * @since 1.5 11303 */ 11304 public static int toUpperCase(int codePoint) { 11305 return CharacterData.of(codePoint).toUpperCase(codePoint); 11306 } 11307 11308 /** 11309 * Converts the character argument to titlecase using case mapping 11310 * information from the UnicodeData file. If a character has no 11311 * explicit titlecase mapping and is not itself a titlecase char 11312 * according to UnicodeData, then the uppercase mapping is 11313 * returned as an equivalent titlecase mapping. If the 11314 * {@code char} argument is already a titlecase 11315 * {@code char}, the same {@code char} value will be 11316 * returned. 11317 * <p> 11318 * Note that 11319 * {@code Character.isTitleCase(Character.toTitleCase(ch))} 11320 * does not always return {@code true} for some ranges of 11321 * characters. 11322 * 11323 * <p><b>Note:</b> This method cannot handle <a 11324 * href="#supplementary"> supplementary characters</a>. To support 11325 * all Unicode characters, including supplementary characters, use 11326 * the {@link #toTitleCase(int)} method. 11327 * 11328 * @param ch the character to be converted. 11329 * @return the titlecase equivalent of the character, if any; 11330 * otherwise, the character itself. 11331 * @see Character#isTitleCase(char) 11332 * @see Character#toLowerCase(char) 11333 * @see Character#toUpperCase(char) 11334 * @since 1.0.2 11335 */ 11336 public static char toTitleCase(char ch) { 11337 return (char)toTitleCase((int)ch); 11338 } 11339 11340 /** 11341 * Converts the character (Unicode code point) argument to titlecase using case mapping 11342 * information from the UnicodeData file. If a character has no 11343 * explicit titlecase mapping and is not itself a titlecase char 11344 * according to UnicodeData, then the uppercase mapping is 11345 * returned as an equivalent titlecase mapping. If the 11346 * character argument is already a titlecase 11347 * character, the same character value will be 11348 * returned. 11349 * 11350 * <p>Note that 11351 * {@code Character.isTitleCase(Character.toTitleCase(codePoint))} 11352 * does not always return {@code true} for some ranges of 11353 * characters. 11354 * 11355 * @param codePoint the character (Unicode code point) to be converted. 11356 * @return the titlecase equivalent of the character, if any; 11357 * otherwise, the character itself. 11358 * @see Character#isTitleCase(int) 11359 * @see Character#toLowerCase(int) 11360 * @see Character#toUpperCase(int) 11361 * @since 1.5 11362 */ 11363 public static int toTitleCase(int codePoint) { 11364 return CharacterData.of(codePoint).toTitleCase(codePoint); 11365 } 11366 11367 /** 11368 * Returns the numeric value of the character {@code ch} in the 11369 * specified radix. 11370 * <p> 11371 * If the radix is not in the range {@code MIN_RADIX} ≤ 11372 * {@code radix} ≤ {@code MAX_RADIX} or if the 11373 * value of {@code ch} is not a valid digit in the specified 11374 * radix, {@code -1} is returned. A character is a valid digit 11375 * if at least one of the following is true: 11376 * <ul> 11377 * <li>The method {@code isDigit} is {@code true} of the character 11378 * and the Unicode decimal digit value of the character (or its 11379 * single-character decomposition) is less than the specified radix. 11380 * In this case the decimal digit value is returned. 11381 * <li>The character is one of the uppercase Latin letters 11382 * {@code 'A'} through {@code 'Z'} and its code is less than 11383 * {@code radix + 'A' - 10}. 11384 * In this case, {@code ch - 'A' + 10} 11385 * is returned. 11386 * <li>The character is one of the lowercase Latin letters 11387 * {@code 'a'} through {@code 'z'} and its code is less than 11388 * {@code radix + 'a' - 10}. 11389 * In this case, {@code ch - 'a' + 10} 11390 * is returned. 11391 * <li>The character is one of the fullwidth uppercase Latin letters A 11392 * ({@code '\u005CuFF21'}) through Z ({@code '\u005CuFF3A'}) 11393 * and its code is less than 11394 * {@code radix + '\u005CuFF21' - 10}. 11395 * In this case, {@code ch - '\u005CuFF21' + 10} 11396 * is returned. 11397 * <li>The character is one of the fullwidth lowercase Latin letters a 11398 * ({@code '\u005CuFF41'}) through z ({@code '\u005CuFF5A'}) 11399 * and its code is less than 11400 * {@code radix + '\u005CuFF41' - 10}. 11401 * In this case, {@code ch - '\u005CuFF41' + 10} 11402 * is returned. 11403 * </ul> 11404 * 11405 * <p><b>Note:</b> This method cannot handle <a 11406 * href="#supplementary"> supplementary characters</a>. To support 11407 * all Unicode characters, including supplementary characters, use 11408 * the {@link #digit(int, int)} method. 11409 * 11410 * @param ch the character to be converted. 11411 * @param radix the radix. 11412 * @return the numeric value represented by the character in the 11413 * specified radix. 11414 * @see Character#forDigit(int, int) 11415 * @see Character#isDigit(char) 11416 */ 11417 public static int digit(char ch, int radix) { 11418 return digit((int)ch, radix); 11419 } 11420 11421 /** 11422 * Returns the numeric value of the specified character (Unicode 11423 * code point) in the specified radix. 11424 * 11425 * <p>If the radix is not in the range {@code MIN_RADIX} ≤ 11426 * {@code radix} ≤ {@code MAX_RADIX} or if the 11427 * character is not a valid digit in the specified 11428 * radix, {@code -1} is returned. A character is a valid digit 11429 * if at least one of the following is true: 11430 * <ul> 11431 * <li>The method {@link #isDigit(int) isDigit(codePoint)} is {@code true} of the character 11432 * and the Unicode decimal digit value of the character (or its 11433 * single-character decomposition) is less than the specified radix. 11434 * In this case the decimal digit value is returned. 11435 * <li>The character is one of the uppercase Latin letters 11436 * {@code 'A'} through {@code 'Z'} and its code is less than 11437 * {@code radix + 'A' - 10}. 11438 * In this case, {@code codePoint - 'A' + 10} 11439 * is returned. 11440 * <li>The character is one of the lowercase Latin letters 11441 * {@code 'a'} through {@code 'z'} and its code is less than 11442 * {@code radix + 'a' - 10}. 11443 * In this case, {@code codePoint - 'a' + 10} 11444 * is returned. 11445 * <li>The character is one of the fullwidth uppercase Latin letters A 11446 * ({@code '\u005CuFF21'}) through Z ({@code '\u005CuFF3A'}) 11447 * and its code is less than 11448 * {@code radix + '\u005CuFF21' - 10}. 11449 * In this case, 11450 * {@code codePoint - '\u005CuFF21' + 10} 11451 * is returned. 11452 * <li>The character is one of the fullwidth lowercase Latin letters a 11453 * ({@code '\u005CuFF41'}) through z ({@code '\u005CuFF5A'}) 11454 * and its code is less than 11455 * {@code radix + '\u005CuFF41'- 10}. 11456 * In this case, 11457 * {@code codePoint - '\u005CuFF41' + 10} 11458 * is returned. 11459 * </ul> 11460 * 11461 * @param codePoint the character (Unicode code point) to be converted. 11462 * @param radix the radix. 11463 * @return the numeric value represented by the character in the 11464 * specified radix. 11465 * @see Character#forDigit(int, int) 11466 * @see Character#isDigit(int) 11467 * @since 1.5 11468 */ 11469 public static int digit(int codePoint, int radix) { 11470 return CharacterData.of(codePoint).digit(codePoint, radix); 11471 } 11472 11473 /** 11474 * Returns the {@code int} value that the specified Unicode 11475 * character represents. For example, the character 11476 * {@code '\u005Cu216C'} (the roman numeral fifty) will return 11477 * an int with a value of 50. 11478 * <p> 11479 * The letters A-Z in their uppercase ({@code '\u005Cu0041'} through 11480 * {@code '\u005Cu005A'}), lowercase 11481 * ({@code '\u005Cu0061'} through {@code '\u005Cu007A'}), and 11482 * full width variant ({@code '\u005CuFF21'} through 11483 * {@code '\u005CuFF3A'} and {@code '\u005CuFF41'} through 11484 * {@code '\u005CuFF5A'}) forms have numeric values from 10 11485 * through 35. This is independent of the Unicode specification, 11486 * which does not assign numeric values to these {@code char} 11487 * values. 11488 * <p> 11489 * If the character does not have a numeric value, then -1 is returned. 11490 * If the character has a numeric value that cannot be represented as a 11491 * nonnegative integer (for example, a fractional value), then -2 11492 * is returned. 11493 * 11494 * <p><b>Note:</b> This method cannot handle <a 11495 * href="#supplementary"> supplementary characters</a>. To support 11496 * all Unicode characters, including supplementary characters, use 11497 * the {@link #getNumericValue(int)} method. 11498 * 11499 * @param ch the character to be converted. 11500 * @return the numeric value of the character, as a nonnegative {@code int} 11501 * value; -2 if the character has a numeric value but the value 11502 * can not be represented as a nonnegative {@code int} value; 11503 * -1 if the character has no numeric value. 11504 * @see Character#forDigit(int, int) 11505 * @see Character#isDigit(char) 11506 * @since 1.1 11507 */ 11508 public static int getNumericValue(char ch) { 11509 return getNumericValue((int)ch); 11510 } 11511 11512 /** 11513 * Returns the {@code int} value that the specified 11514 * character (Unicode code point) represents. For example, the character 11515 * {@code '\u005Cu216C'} (the Roman numeral fifty) will return 11516 * an {@code int} with a value of 50. 11517 * <p> 11518 * The letters A-Z in their uppercase ({@code '\u005Cu0041'} through 11519 * {@code '\u005Cu005A'}), lowercase 11520 * ({@code '\u005Cu0061'} through {@code '\u005Cu007A'}), and 11521 * full width variant ({@code '\u005CuFF21'} through 11522 * {@code '\u005CuFF3A'} and {@code '\u005CuFF41'} through 11523 * {@code '\u005CuFF5A'}) forms have numeric values from 10 11524 * through 35. This is independent of the Unicode specification, 11525 * which does not assign numeric values to these {@code char} 11526 * values. 11527 * <p> 11528 * If the character does not have a numeric value, then -1 is returned. 11529 * If the character has a numeric value that cannot be represented as a 11530 * nonnegative integer (for example, a fractional value), then -2 11531 * is returned. 11532 * 11533 * @param codePoint the character (Unicode code point) to be converted. 11534 * @return the numeric value of the character, as a nonnegative {@code int} 11535 * value; -2 if the character has a numeric value but the value 11536 * can not be represented as a nonnegative {@code int} value; 11537 * -1 if the character has no numeric value. 11538 * @see Character#forDigit(int, int) 11539 * @see Character#isDigit(int) 11540 * @since 1.5 11541 */ 11542 public static int getNumericValue(int codePoint) { 11543 return CharacterData.of(codePoint).getNumericValue(codePoint); 11544 } 11545 11546 /** 11547 * Determines if the specified character is ISO-LATIN-1 white space. 11548 * This method returns {@code true} for the following five 11549 * characters only: 11550 * <table class="striped"> 11551 * <caption style="display:none">truechars</caption> 11552 * <thead> 11553 * <tr><th scope="col">Character 11554 * <th scope="col">Code 11555 * <th scope="col">Name 11556 * </thead> 11557 * <tbody> 11558 * <tr><th scope="row">{@code '\t'}</th> <td>{@code U+0009}</td> 11559 * <td>{@code HORIZONTAL TABULATION}</td></tr> 11560 * <tr><th scope="row">{@code '\n'}</th> <td>{@code U+000A}</td> 11561 * <td>{@code NEW LINE}</td></tr> 11562 * <tr><th scope="row">{@code '\f'}</th> <td>{@code U+000C}</td> 11563 * <td>{@code FORM FEED}</td></tr> 11564 * <tr><th scope="row">{@code '\r'}</th> <td>{@code U+000D}</td> 11565 * <td>{@code CARRIAGE RETURN}</td></tr> 11566 * <tr><th scope="row">{@code ' '}</th> <td>{@code U+0020}</td> 11567 * <td>{@code SPACE}</td></tr> 11568 * </tbody> 11569 * </table> 11570 * 11571 * @param ch the character to be tested. 11572 * @return {@code true} if the character is ISO-LATIN-1 white 11573 * space; {@code false} otherwise. 11574 * @see Character#isSpaceChar(char) 11575 * @see Character#isWhitespace(char) 11576 * @deprecated Replaced by isWhitespace(char). 11577 */ 11578 @Deprecated(since="1.1") 11579 public static boolean isSpace(char ch) { 11580 return (ch <= 0x0020) && 11581 (((((1L << 0x0009) | 11582 (1L << 0x000A) | 11583 (1L << 0x000C) | 11584 (1L << 0x000D) | 11585 (1L << 0x0020)) >> ch) & 1L) != 0); 11586 } 11587 11588 11589 /** 11590 * Determines if the specified character is a Unicode space character. 11591 * A character is considered to be a space character if and only if 11592 * it is specified to be a space character by the Unicode Standard. This 11593 * method returns true if the character's general category type is any of 11594 * the following: 11595 * <ul> 11596 * <li> {@code SPACE_SEPARATOR} 11597 * <li> {@code LINE_SEPARATOR} 11598 * <li> {@code PARAGRAPH_SEPARATOR} 11599 * </ul> 11600 * 11601 * <p><b>Note:</b> This method cannot handle <a 11602 * href="#supplementary"> supplementary characters</a>. To support 11603 * all Unicode characters, including supplementary characters, use 11604 * the {@link #isSpaceChar(int)} method. 11605 * 11606 * @param ch the character to be tested. 11607 * @return {@code true} if the character is a space character; 11608 * {@code false} otherwise. 11609 * @see Character#isWhitespace(char) 11610 * @since 1.1 11611 */ 11612 public static boolean isSpaceChar(char ch) { 11613 return isSpaceChar((int)ch); 11614 } 11615 11616 /** 11617 * Determines if the specified character (Unicode code point) is a 11618 * Unicode space character. A character is considered to be a 11619 * space character if and only if it is specified to be a space 11620 * character by the Unicode Standard. This method returns true if 11621 * the character's general category type is any of the following: 11622 * 11623 * <ul> 11624 * <li> {@link #SPACE_SEPARATOR} 11625 * <li> {@link #LINE_SEPARATOR} 11626 * <li> {@link #PARAGRAPH_SEPARATOR} 11627 * </ul> 11628 * 11629 * @param codePoint the character (Unicode code point) to be tested. 11630 * @return {@code true} if the character is a space character; 11631 * {@code false} otherwise. 11632 * @see Character#isWhitespace(int) 11633 * @since 1.5 11634 */ 11635 public static boolean isSpaceChar(int codePoint) { 11636 return ((((1 << Character.SPACE_SEPARATOR) | 11637 (1 << Character.LINE_SEPARATOR) | 11638 (1 << Character.PARAGRAPH_SEPARATOR)) >> getType(codePoint)) & 1) 11639 != 0; 11640 } 11641 11642 /** 11643 * Determines if the specified character is white space according to Java. 11644 * A character is a Java whitespace character if and only if it satisfies 11645 * one of the following criteria: 11646 * <ul> 11647 * <li> It is a Unicode space character ({@code SPACE_SEPARATOR}, 11648 * {@code LINE_SEPARATOR}, or {@code PARAGRAPH_SEPARATOR}) 11649 * but is not also a non-breaking space ({@code '\u005Cu00A0'}, 11650 * {@code '\u005Cu2007'}, {@code '\u005Cu202F'}). 11651 * <li> It is {@code '\u005Ct'}, U+0009 HORIZONTAL TABULATION. 11652 * <li> It is {@code '\u005Cn'}, U+000A LINE FEED. 11653 * <li> It is {@code '\u005Cu000B'}, U+000B VERTICAL TABULATION. 11654 * <li> It is {@code '\u005Cf'}, U+000C FORM FEED. 11655 * <li> It is {@code '\u005Cr'}, U+000D CARRIAGE RETURN. 11656 * <li> It is {@code '\u005Cu001C'}, U+001C FILE SEPARATOR. 11657 * <li> It is {@code '\u005Cu001D'}, U+001D GROUP SEPARATOR. 11658 * <li> It is {@code '\u005Cu001E'}, U+001E RECORD SEPARATOR. 11659 * <li> It is {@code '\u005Cu001F'}, U+001F UNIT SEPARATOR. 11660 * </ul> 11661 * 11662 * <p><b>Note:</b> This method cannot handle <a 11663 * href="#supplementary"> supplementary characters</a>. To support 11664 * all Unicode characters, including supplementary characters, use 11665 * the {@link #isWhitespace(int)} method. 11666 * 11667 * @param ch the character to be tested. 11668 * @return {@code true} if the character is a Java whitespace 11669 * character; {@code false} otherwise. 11670 * @see Character#isSpaceChar(char) 11671 * @since 1.1 11672 */ 11673 public static boolean isWhitespace(char ch) { 11674 return isWhitespace((int)ch); 11675 } 11676 11677 /** 11678 * Determines if the specified character (Unicode code point) is 11679 * white space according to Java. A character is a Java 11680 * whitespace character if and only if it satisfies one of the 11681 * following criteria: 11682 * <ul> 11683 * <li> It is a Unicode space character ({@link #SPACE_SEPARATOR}, 11684 * {@link #LINE_SEPARATOR}, or {@link #PARAGRAPH_SEPARATOR}) 11685 * but is not also a non-breaking space ({@code '\u005Cu00A0'}, 11686 * {@code '\u005Cu2007'}, {@code '\u005Cu202F'}). 11687 * <li> It is {@code '\u005Ct'}, U+0009 HORIZONTAL TABULATION. 11688 * <li> It is {@code '\u005Cn'}, U+000A LINE FEED. 11689 * <li> It is {@code '\u005Cu000B'}, U+000B VERTICAL TABULATION. 11690 * <li> It is {@code '\u005Cf'}, U+000C FORM FEED. 11691 * <li> It is {@code '\u005Cr'}, U+000D CARRIAGE RETURN. 11692 * <li> It is {@code '\u005Cu001C'}, U+001C FILE SEPARATOR. 11693 * <li> It is {@code '\u005Cu001D'}, U+001D GROUP SEPARATOR. 11694 * <li> It is {@code '\u005Cu001E'}, U+001E RECORD SEPARATOR. 11695 * <li> It is {@code '\u005Cu001F'}, U+001F UNIT SEPARATOR. 11696 * </ul> 11697 * 11698 * @param codePoint the character (Unicode code point) to be tested. 11699 * @return {@code true} if the character is a Java whitespace 11700 * character; {@code false} otherwise. 11701 * @see Character#isSpaceChar(int) 11702 * @since 1.5 11703 */ 11704 public static boolean isWhitespace(int codePoint) { 11705 return CharacterData.of(codePoint).isWhitespace(codePoint); 11706 } 11707 11708 /** 11709 * Determines if the specified character is an ISO control 11710 * character. A character is considered to be an ISO control 11711 * character if its code is in the range {@code '\u005Cu0000'} 11712 * through {@code '\u005Cu001F'} or in the range 11713 * {@code '\u005Cu007F'} through {@code '\u005Cu009F'}. 11714 * 11715 * <p><b>Note:</b> This method cannot handle <a 11716 * href="#supplementary"> supplementary characters</a>. To support 11717 * all Unicode characters, including supplementary characters, use 11718 * the {@link #isISOControl(int)} method. 11719 * 11720 * @param ch the character to be tested. 11721 * @return {@code true} if the character is an ISO control character; 11722 * {@code false} otherwise. 11723 * 11724 * @see Character#isSpaceChar(char) 11725 * @see Character#isWhitespace(char) 11726 * @since 1.1 11727 */ 11728 public static boolean isISOControl(char ch) { 11729 return isISOControl((int)ch); 11730 } 11731 11732 /** 11733 * Determines if the referenced character (Unicode code point) is an ISO control 11734 * character. A character is considered to be an ISO control 11735 * character if its code is in the range {@code '\u005Cu0000'} 11736 * through {@code '\u005Cu001F'} or in the range 11737 * {@code '\u005Cu007F'} through {@code '\u005Cu009F'}. 11738 * 11739 * @param codePoint the character (Unicode code point) to be tested. 11740 * @return {@code true} if the character is an ISO control character; 11741 * {@code false} otherwise. 11742 * @see Character#isSpaceChar(int) 11743 * @see Character#isWhitespace(int) 11744 * @since 1.5 11745 */ 11746 public static boolean isISOControl(int codePoint) { 11747 // Optimized form of: 11748 // (codePoint >= 0x00 && codePoint <= 0x1F) || 11749 // (codePoint >= 0x7F && codePoint <= 0x9F); 11750 return codePoint <= 0x9F && 11751 (codePoint >= 0x7F || (codePoint >>> 5 == 0)); 11752 } 11753 11754 /** 11755 * Returns a value indicating a character's general category. 11756 * 11757 * <p><b>Note:</b> This method cannot handle <a 11758 * href="#supplementary"> supplementary characters</a>. To support 11759 * all Unicode characters, including supplementary characters, use 11760 * the {@link #getType(int)} method. 11761 * 11762 * @param ch the character to be tested. 11763 * @return a value of type {@code int} representing the 11764 * character's general category. 11765 * @see Character#COMBINING_SPACING_MARK 11766 * @see Character#CONNECTOR_PUNCTUATION 11767 * @see Character#CONTROL 11768 * @see Character#CURRENCY_SYMBOL 11769 * @see Character#DASH_PUNCTUATION 11770 * @see Character#DECIMAL_DIGIT_NUMBER 11771 * @see Character#ENCLOSING_MARK 11772 * @see Character#END_PUNCTUATION 11773 * @see Character#FINAL_QUOTE_PUNCTUATION 11774 * @see Character#FORMAT 11775 * @see Character#INITIAL_QUOTE_PUNCTUATION 11776 * @see Character#LETTER_NUMBER 11777 * @see Character#LINE_SEPARATOR 11778 * @see Character#LOWERCASE_LETTER 11779 * @see Character#MATH_SYMBOL 11780 * @see Character#MODIFIER_LETTER 11781 * @see Character#MODIFIER_SYMBOL 11782 * @see Character#NON_SPACING_MARK 11783 * @see Character#OTHER_LETTER 11784 * @see Character#OTHER_NUMBER 11785 * @see Character#OTHER_PUNCTUATION 11786 * @see Character#OTHER_SYMBOL 11787 * @see Character#PARAGRAPH_SEPARATOR 11788 * @see Character#PRIVATE_USE 11789 * @see Character#SPACE_SEPARATOR 11790 * @see Character#START_PUNCTUATION 11791 * @see Character#SURROGATE 11792 * @see Character#TITLECASE_LETTER 11793 * @see Character#UNASSIGNED 11794 * @see Character#UPPERCASE_LETTER 11795 * @since 1.1 11796 */ 11797 public static int getType(char ch) { 11798 return getType((int)ch); 11799 } 11800 11801 /** 11802 * Returns a value indicating a character's general category. 11803 * 11804 * @param codePoint the character (Unicode code point) to be tested. 11805 * @return a value of type {@code int} representing the 11806 * character's general category. 11807 * @see Character#COMBINING_SPACING_MARK COMBINING_SPACING_MARK 11808 * @see Character#CONNECTOR_PUNCTUATION CONNECTOR_PUNCTUATION 11809 * @see Character#CONTROL CONTROL 11810 * @see Character#CURRENCY_SYMBOL CURRENCY_SYMBOL 11811 * @see Character#DASH_PUNCTUATION DASH_PUNCTUATION 11812 * @see Character#DECIMAL_DIGIT_NUMBER DECIMAL_DIGIT_NUMBER 11813 * @see Character#ENCLOSING_MARK ENCLOSING_MARK 11814 * @see Character#END_PUNCTUATION END_PUNCTUATION 11815 * @see Character#FINAL_QUOTE_PUNCTUATION FINAL_QUOTE_PUNCTUATION 11816 * @see Character#FORMAT FORMAT 11817 * @see Character#INITIAL_QUOTE_PUNCTUATION INITIAL_QUOTE_PUNCTUATION 11818 * @see Character#LETTER_NUMBER LETTER_NUMBER 11819 * @see Character#LINE_SEPARATOR LINE_SEPARATOR 11820 * @see Character#LOWERCASE_LETTER LOWERCASE_LETTER 11821 * @see Character#MATH_SYMBOL MATH_SYMBOL 11822 * @see Character#MODIFIER_LETTER MODIFIER_LETTER 11823 * @see Character#MODIFIER_SYMBOL MODIFIER_SYMBOL 11824 * @see Character#NON_SPACING_MARK NON_SPACING_MARK 11825 * @see Character#OTHER_LETTER OTHER_LETTER 11826 * @see Character#OTHER_NUMBER OTHER_NUMBER 11827 * @see Character#OTHER_PUNCTUATION OTHER_PUNCTUATION 11828 * @see Character#OTHER_SYMBOL OTHER_SYMBOL 11829 * @see Character#PARAGRAPH_SEPARATOR PARAGRAPH_SEPARATOR 11830 * @see Character#PRIVATE_USE PRIVATE_USE 11831 * @see Character#SPACE_SEPARATOR SPACE_SEPARATOR 11832 * @see Character#START_PUNCTUATION START_PUNCTUATION 11833 * @see Character#SURROGATE SURROGATE 11834 * @see Character#TITLECASE_LETTER TITLECASE_LETTER 11835 * @see Character#UNASSIGNED UNASSIGNED 11836 * @see Character#UPPERCASE_LETTER UPPERCASE_LETTER 11837 * @since 1.5 11838 */ 11839 public static int getType(int codePoint) { 11840 return CharacterData.of(codePoint).getType(codePoint); 11841 } 11842 11843 /** 11844 * Determines the character representation for a specific digit in 11845 * the specified radix. If the value of {@code radix} is not a 11846 * valid radix, or the value of {@code digit} is not a valid 11847 * digit in the specified radix, the null character 11848 * ({@code '\u005Cu0000'}) is returned. 11849 * <p> 11850 * The {@code radix} argument is valid if it is greater than or 11851 * equal to {@code MIN_RADIX} and less than or equal to 11852 * {@code MAX_RADIX}. The {@code digit} argument is valid if 11853 * {@code 0 <= digit < radix}. 11854 * <p> 11855 * If the digit is less than 10, then 11856 * {@code '0' + digit} is returned. Otherwise, the value 11857 * {@code 'a' + digit - 10} is returned. 11858 * 11859 * @param digit the number to convert to a character. 11860 * @param radix the radix. 11861 * @return the {@code char} representation of the specified digit 11862 * in the specified radix. 11863 * @see Character#MIN_RADIX 11864 * @see Character#MAX_RADIX 11865 * @see Character#digit(char, int) 11866 */ 11867 public static char forDigit(int digit, int radix) { 11868 if ((digit >= radix) || (digit < 0)) { 11869 return '\0'; 11870 } 11871 if ((radix < Character.MIN_RADIX) || (radix > Character.MAX_RADIX)) { 11872 return '\0'; 11873 } 11874 if (digit < 10) { 11875 return (char)('0' + digit); 11876 } 11877 return (char)('a' - 10 + digit); 11878 } 11879 11880 /** 11881 * Returns the Unicode directionality property for the given 11882 * character. Character directionality is used to calculate the 11883 * visual ordering of text. The directionality value of undefined 11884 * {@code char} values is {@code DIRECTIONALITY_UNDEFINED}. 11885 * 11886 * <p><b>Note:</b> This method cannot handle <a 11887 * href="#supplementary"> supplementary characters</a>. To support 11888 * all Unicode characters, including supplementary characters, use 11889 * the {@link #getDirectionality(int)} method. 11890 * 11891 * @param ch {@code char} for which the directionality property 11892 * is requested. 11893 * @return the directionality property of the {@code char} value. 11894 * 11895 * @see Character#DIRECTIONALITY_UNDEFINED 11896 * @see Character#DIRECTIONALITY_LEFT_TO_RIGHT 11897 * @see Character#DIRECTIONALITY_RIGHT_TO_LEFT 11898 * @see Character#DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC 11899 * @see Character#DIRECTIONALITY_EUROPEAN_NUMBER 11900 * @see Character#DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR 11901 * @see Character#DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR 11902 * @see Character#DIRECTIONALITY_ARABIC_NUMBER 11903 * @see Character#DIRECTIONALITY_COMMON_NUMBER_SEPARATOR 11904 * @see Character#DIRECTIONALITY_NONSPACING_MARK 11905 * @see Character#DIRECTIONALITY_BOUNDARY_NEUTRAL 11906 * @see Character#DIRECTIONALITY_PARAGRAPH_SEPARATOR 11907 * @see Character#DIRECTIONALITY_SEGMENT_SEPARATOR 11908 * @see Character#DIRECTIONALITY_WHITESPACE 11909 * @see Character#DIRECTIONALITY_OTHER_NEUTRALS 11910 * @see Character#DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING 11911 * @see Character#DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE 11912 * @see Character#DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING 11913 * @see Character#DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE 11914 * @see Character#DIRECTIONALITY_POP_DIRECTIONAL_FORMAT 11915 * @see Character#DIRECTIONALITY_LEFT_TO_RIGHT_ISOLATE 11916 * @see Character#DIRECTIONALITY_RIGHT_TO_LEFT_ISOLATE 11917 * @see Character#DIRECTIONALITY_FIRST_STRONG_ISOLATE 11918 * @see Character#DIRECTIONALITY_POP_DIRECTIONAL_ISOLATE 11919 * @since 1.4 11920 */ 11921 public static byte getDirectionality(char ch) { 11922 return getDirectionality((int)ch); 11923 } 11924 11925 /** 11926 * Returns the Unicode directionality property for the given 11927 * character (Unicode code point). Character directionality is 11928 * used to calculate the visual ordering of text. The 11929 * directionality value of undefined character is {@link 11930 * #DIRECTIONALITY_UNDEFINED}. 11931 * 11932 * @param codePoint the character (Unicode code point) for which 11933 * the directionality property is requested. 11934 * @return the directionality property of the character. 11935 * 11936 * @see Character#DIRECTIONALITY_UNDEFINED DIRECTIONALITY_UNDEFINED 11937 * @see Character#DIRECTIONALITY_LEFT_TO_RIGHT DIRECTIONALITY_LEFT_TO_RIGHT 11938 * @see Character#DIRECTIONALITY_RIGHT_TO_LEFT DIRECTIONALITY_RIGHT_TO_LEFT 11939 * @see Character#DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC 11940 * @see Character#DIRECTIONALITY_EUROPEAN_NUMBER DIRECTIONALITY_EUROPEAN_NUMBER 11941 * @see Character#DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR 11942 * @see Character#DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR 11943 * @see Character#DIRECTIONALITY_ARABIC_NUMBER DIRECTIONALITY_ARABIC_NUMBER 11944 * @see Character#DIRECTIONALITY_COMMON_NUMBER_SEPARATOR DIRECTIONALITY_COMMON_NUMBER_SEPARATOR 11945 * @see Character#DIRECTIONALITY_NONSPACING_MARK DIRECTIONALITY_NONSPACING_MARK 11946 * @see Character#DIRECTIONALITY_BOUNDARY_NEUTRAL DIRECTIONALITY_BOUNDARY_NEUTRAL 11947 * @see Character#DIRECTIONALITY_PARAGRAPH_SEPARATOR DIRECTIONALITY_PARAGRAPH_SEPARATOR 11948 * @see Character#DIRECTIONALITY_SEGMENT_SEPARATOR DIRECTIONALITY_SEGMENT_SEPARATOR 11949 * @see Character#DIRECTIONALITY_WHITESPACE DIRECTIONALITY_WHITESPACE 11950 * @see Character#DIRECTIONALITY_OTHER_NEUTRALS DIRECTIONALITY_OTHER_NEUTRALS 11951 * @see Character#DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING 11952 * @see Character#DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE 11953 * @see Character#DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING 11954 * @see Character#DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE 11955 * @see Character#DIRECTIONALITY_POP_DIRECTIONAL_FORMAT DIRECTIONALITY_POP_DIRECTIONAL_FORMAT 11956 * @see Character#DIRECTIONALITY_LEFT_TO_RIGHT_ISOLATE DIRECTIONALITY_LEFT_TO_RIGHT_ISOLATE 11957 * @see Character#DIRECTIONALITY_RIGHT_TO_LEFT_ISOLATE DIRECTIONALITY_RIGHT_TO_LEFT_ISOLATE 11958 * @see Character#DIRECTIONALITY_FIRST_STRONG_ISOLATE DIRECTIONALITY_FIRST_STRONG_ISOLATE 11959 * @see Character#DIRECTIONALITY_POP_DIRECTIONAL_ISOLATE DIRECTIONALITY_POP_DIRECTIONAL_ISOLATE 11960 * @since 1.5 11961 */ 11962 public static byte getDirectionality(int codePoint) { 11963 return CharacterData.of(codePoint).getDirectionality(codePoint); 11964 } 11965 11966 /** 11967 * Determines whether the character is mirrored according to the 11968 * Unicode specification. Mirrored characters should have their 11969 * glyphs horizontally mirrored when displayed in text that is 11970 * right-to-left. For example, {@code '\u005Cu0028'} LEFT 11971 * PARENTHESIS is semantically defined to be an <i>opening 11972 * parenthesis</i>. This will appear as a "(" in text that is 11973 * left-to-right but as a ")" in text that is right-to-left. 11974 * 11975 * <p><b>Note:</b> This method cannot handle <a 11976 * href="#supplementary"> supplementary characters</a>. To support 11977 * all Unicode characters, including supplementary characters, use 11978 * the {@link #isMirrored(int)} method. 11979 * 11980 * @param ch {@code char} for which the mirrored property is requested 11981 * @return {@code true} if the char is mirrored, {@code false} 11982 * if the {@code char} is not mirrored or is not defined. 11983 * @since 1.4 11984 */ 11985 public static boolean isMirrored(char ch) { 11986 return isMirrored((int)ch); 11987 } 11988 11989 /** 11990 * Determines whether the specified character (Unicode code point) 11991 * is mirrored according to the Unicode specification. Mirrored 11992 * characters should have their glyphs horizontally mirrored when 11993 * displayed in text that is right-to-left. For example, 11994 * {@code '\u005Cu0028'} LEFT PARENTHESIS is semantically 11995 * defined to be an <i>opening parenthesis</i>. This will appear 11996 * as a "(" in text that is left-to-right but as a ")" in text 11997 * that is right-to-left. 11998 * 11999 * @param codePoint the character (Unicode code point) to be tested. 12000 * @return {@code true} if the character is mirrored, {@code false} 12001 * if the character is not mirrored or is not defined. 12002 * @since 1.5 12003 */ 12004 public static boolean isMirrored(int codePoint) { 12005 return CharacterData.of(codePoint).isMirrored(codePoint); 12006 } 12007 12008 /** 12009 * Compares two {@code Character} objects numerically. 12010 * 12011 * @param anotherCharacter the {@code Character} to be compared. 12012 * @return the value {@code 0} if the argument {@code Character} 12013 * is equal to this {@code Character}; a value less than 12014 * {@code 0} if this {@code Character} is numerically less 12015 * than the {@code Character} argument; and a value greater than 12016 * {@code 0} if this {@code Character} is numerically greater 12017 * than the {@code Character} argument (unsigned comparison). 12018 * Note that this is strictly a numerical comparison; it is not 12019 * locale-dependent. 12020 * @since 1.2 12021 */ 12022 public int compareTo(Character anotherCharacter) { 12023 return compare(this.value, anotherCharacter.value); 12024 } 12025 12026 /** 12027 * Compares two {@code char} values numerically. 12028 * The value returned is identical to what would be returned by: 12029 * <pre> 12030 * Character.valueOf(x).compareTo(Character.valueOf(y)) 12031 * </pre> 12032 * 12033 * @param x the first {@code char} to compare 12034 * @param y the second {@code char} to compare 12035 * @return the value {@code 0} if {@code x == y}; 12036 * a value less than {@code 0} if {@code x < y}; and 12037 * a value greater than {@code 0} if {@code x > y} 12038 * @since 1.7 12039 */ 12040 public static int compare(char x, char y) { 12041 return x - y; 12042 } 12043 12044 /** 12045 * Converts the character (Unicode code point) argument to uppercase using 12046 * information from the UnicodeData file. 12047 * 12048 * @param codePoint the character (Unicode code point) to be converted. 12049 * @return either the uppercase equivalent of the character, if 12050 * any, or an error flag ({@code Character.ERROR}) 12051 * that indicates that a 1:M {@code char} mapping exists. 12052 * @see Character#isLowerCase(char) 12053 * @see Character#isUpperCase(char) 12054 * @see Character#toLowerCase(char) 12055 * @see Character#toTitleCase(char) 12056 * @since 1.4 12057 */ 12058 static int toUpperCaseEx(int codePoint) { 12059 assert isValidCodePoint(codePoint); 12060 return CharacterData.of(codePoint).toUpperCaseEx(codePoint); 12061 } 12062 12063 /** 12064 * Converts the character (Unicode code point) argument to uppercase using case 12065 * mapping information from the SpecialCasing file in the Unicode 12066 * specification. If a character has no explicit uppercase 12067 * mapping, then the {@code char} itself is returned in the 12068 * {@code char[]}. 12069 * 12070 * @param codePoint the character (Unicode code point) to be converted. 12071 * @return a {@code char[]} with the uppercased character. 12072 * @since 1.4 12073 */ 12074 static char[] toUpperCaseCharArray(int codePoint) { 12075 // As of Unicode 6.0, 1:M uppercasings only happen in the BMP. 12076 assert isBmpCodePoint(codePoint); 12077 return CharacterData.of(codePoint).toUpperCaseCharArray(codePoint); 12078 } 12079 12080 /** 12081 * The number of bits used to represent a {@code char} value in unsigned 12082 * binary form, constant {@code 16}. 12083 * 12084 * @since 1.5 12085 */ 12086 public static final int SIZE = 16; 12087 12088 /** 12089 * The number of bytes used to represent a {@code char} value in unsigned 12090 * binary form. 12091 * 12092 * @since 1.8 12093 */ 12094 public static final int BYTES = SIZE / Byte.SIZE; 12095 12096 /** 12097 * Returns the value obtained by reversing the order of the bytes in the 12098 * specified {@code char} value. 12099 * 12100 * @param ch The {@code char} of which to reverse the byte order. 12101 * @return the value obtained by reversing (or, equivalently, swapping) 12102 * the bytes in the specified {@code char} value. 12103 * @since 1.5 12104 */ 12105 @IntrinsicCandidate 12106 public static char reverseBytes(char ch) { 12107 return (char) (((ch & 0xFF00) >> 8) | (ch << 8)); 12108 } 12109 12110 /** 12111 * Returns the name of the specified character 12112 * {@code codePoint}, or null if the code point is 12113 * {@link #UNASSIGNED unassigned}. 12114 * <p> 12115 * If the specified character is not assigned a name by 12116 * the <i>UnicodeData</i> file (part of the Unicode Character 12117 * Database maintained by the Unicode Consortium), the returned 12118 * name is the same as the result of the expression: 12119 * 12120 * <blockquote>{@code 12121 * Character.UnicodeBlock.of(codePoint).toString().replace('_', ' ') 12122 * + " " 12123 * + Integer.toHexString(codePoint).toUpperCase(Locale.ROOT); 12124 * 12125 * }</blockquote> 12126 * 12127 * For the {@code codePoint}s in the <i>UnicodeData</i> file, the name 12128 * returned by this method follows the naming scheme in the 12129 * "Unicode Name Property" section of the Unicode Standard. For other 12130 * code points, such as Hangul/Ideographs, The name generation rule above 12131 * differs from the one defined in the Unicode Standard. 12132 * 12133 * @param codePoint the character (Unicode code point) 12134 * 12135 * @return the name of the specified character, or null if 12136 * the code point is unassigned. 12137 * 12138 * @throws IllegalArgumentException if the specified 12139 * {@code codePoint} is not a valid Unicode 12140 * code point. 12141 * 12142 * @since 1.7 12143 */ 12144 public static String getName(int codePoint) { 12145 if (!isValidCodePoint(codePoint)) { 12146 throw new IllegalArgumentException( 12147 String.format("Not a valid Unicode code point: 0x%X", codePoint)); 12148 } 12149 String name = CharacterName.getInstance().getName(codePoint); 12150 if (name != null) 12151 return name; 12152 if (getType(codePoint) == UNASSIGNED) 12153 return null; 12154 UnicodeBlock block = UnicodeBlock.of(codePoint); 12155 if (block != null) 12156 return block.toString().replace('_', ' ') + " " 12157 + Integer.toHexString(codePoint).toUpperCase(Locale.ROOT); 12158 // should never come here 12159 return Integer.toHexString(codePoint).toUpperCase(Locale.ROOT); 12160 } 12161 12162 /** 12163 * Returns the code point value of the Unicode character specified by 12164 * the given character name. 12165 * <p> 12166 * If a character is not assigned a name by the <i>UnicodeData</i> 12167 * file (part of the Unicode Character Database maintained by the Unicode 12168 * Consortium), its name is defined as the result of the expression: 12169 * 12170 * <blockquote>{@code 12171 * Character.UnicodeBlock.of(codePoint).toString().replace('_', ' ') 12172 * + " " 12173 * + Integer.toHexString(codePoint).toUpperCase(Locale.ROOT); 12174 * 12175 * }</blockquote> 12176 * <p> 12177 * The {@code name} matching is case insensitive, with any leading and 12178 * trailing whitespace character removed. 12179 * 12180 * For the code points in the <i>UnicodeData</i> file, this method 12181 * recognizes the name which conforms to the name defined in the 12182 * "Unicode Name Property" section in the Unicode Standard. For other 12183 * code points, this method recognizes the name generated with 12184 * {@link #getName(int)} method. 12185 * 12186 * @param name the character name 12187 * 12188 * @return the code point value of the character specified by its name. 12189 * 12190 * @throws IllegalArgumentException if the specified {@code name} 12191 * is not a valid character name. 12192 * @throws NullPointerException if {@code name} is {@code null} 12193 * 12194 * @since 9 12195 */ 12196 public static int codePointOf(String name) { 12197 name = name.trim().toUpperCase(Locale.ROOT); 12198 int cp = CharacterName.getInstance().getCodePoint(name); 12199 if (cp != -1) 12200 return cp; 12201 try { 12202 int off = name.lastIndexOf(' '); 12203 if (off != -1) { 12204 cp = Integer.parseInt(name, off + 1, name.length(), 16); 12205 if (isValidCodePoint(cp) && name.equals(getName(cp))) 12206 return cp; 12207 } 12208 } catch (Exception x) {} 12209 throw new IllegalArgumentException("Unrecognized character name :" + name); 12210 } 12211 }