Path: blob/master/src/java.base/share/classes/java/lang/Character.java
41152 views
/*1* Copyright (c) 2002, 2021, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation. Oracle designates this7* particular file as subject to the "Classpath" exception as provided8* by Oracle in the LICENSE file that accompanied this code.9*10* This code is distributed in the hope that it will be useful, but WITHOUT11* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or12* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License13* version 2 for more details (a copy is included in the LICENSE file that14* accompanied this code).15*16* You should have received a copy of the GNU General Public License version17* 2 along with this work; if not, write to the Free Software Foundation,18* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.19*20* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA21* or visit www.oracle.com if you need additional information or have any22* questions.23*/2425package java.lang;2627import jdk.internal.misc.CDS;28import jdk.internal.vm.annotation.IntrinsicCandidate;2930import java.lang.constant.Constable;31import java.lang.constant.DynamicConstantDesc;32import java.util.Arrays;33import java.util.HashMap;34import java.util.Locale;35import java.util.Map;36import java.util.Optional;3738import static java.lang.constant.ConstantDescs.BSM_EXPLICIT_CAST;39import static java.lang.constant.ConstantDescs.CD_char;40import static java.lang.constant.ConstantDescs.CD_int;41import static java.lang.constant.ConstantDescs.DEFAULT_NAME;4243/**44* The {@code Character} class wraps a value of the primitive45* type {@code char} in an object. An object of class46* {@code Character} contains a single field whose type is47* {@code char}.48* <p>49* In addition, this class provides a large number of static methods for50* determining a character's category (lowercase letter, digit, etc.)51* and for converting characters from uppercase to lowercase and vice52* versa.53*54* <h2><a id="conformance">Unicode Conformance</a></h2>55* <p>56* The fields and methods of class {@code Character} are defined in terms57* of character information from the Unicode Standard, specifically the58* <i>UnicodeData</i> file that is part of the Unicode Character Database.59* This file specifies properties including name and category for every60* assigned Unicode code point or character range. The file is available61* from the Unicode Consortium at62* <a href="http://www.unicode.org">http://www.unicode.org</a>.63* <p>64* Character information is based on the Unicode Standard, version 13.0.65* <p>66* The Java platform has supported different versions of the Unicode67* Standard over time. Upgrades to newer versions of the Unicode Standard68* occurred in the following Java releases, each indicating the new version:69* <table class="striped">70* <caption style="display:none">Shows Java releases and supported Unicode versions</caption>71* <thead>72* <tr><th scope="col">Java release</th>73* <th scope="col">Unicode version</th></tr>74* </thead>75* <tbody>76* <tr><td>Java SE 15</td>77* <td>Unicode 13.0</td></tr>78* <tr><td>Java SE 13</td>79* <td>Unicode 12.1</td></tr>80* <tr><td>Java SE 12</td>81* <td>Unicode 11.0</td></tr>82* <tr><td>Java SE 11</td>83* <td>Unicode 10.0</td></tr>84* <tr><td>Java SE 9</td>85* <td>Unicode 8.0</td></tr>86* <tr><td>Java SE 8</td>87* <td>Unicode 6.2</td></tr>88* <tr><td>Java SE 7</td>89* <td>Unicode 6.0</td></tr>90* <tr><td>Java SE 5.0</td>91* <td>Unicode 4.0</td></tr>92* <tr><td>Java SE 1.4</td>93* <td>Unicode 3.0</td></tr>94* <tr><td>JDK 1.1</td>95* <td>Unicode 2.0</td></tr>96* <tr><td>JDK 1.0.2</td>97* <td>Unicode 1.1.5</td></tr>98* </tbody>99* </table>100* Variations from these base Unicode versions, such as recognized appendixes,101* are documented elsewhere.102* <h2><a id="unicode">Unicode Character Representations</a></h2>103*104* <p>The {@code char} data type (and therefore the value that a105* {@code Character} object encapsulates) are based on the106* original Unicode specification, which defined characters as107* fixed-width 16-bit entities. The Unicode Standard has since been108* changed to allow for characters whose representation requires more109* than 16 bits. The range of legal <em>code point</em>s is now110* U+0000 to U+10FFFF, known as <em>Unicode scalar value</em>.111* (Refer to the <a112* href="http://www.unicode.org/reports/tr27/#notation"><i>113* definition</i></a> of the U+<i>n</i> notation in the Unicode114* Standard.)115*116* <p><a id="BMP">The set of characters from U+0000 to U+FFFF</a> is117* sometimes referred to as the <em>Basic Multilingual Plane (BMP)</em>.118* <a id="supplementary">Characters</a> whose code points are greater119* than U+FFFF are called <em>supplementary character</em>s. The Java120* platform uses the UTF-16 representation in {@code char} arrays and121* in the {@code String} and {@code StringBuffer} classes. In122* this representation, supplementary characters are represented as a pair123* of {@code char} values, the first from the <em>high-surrogates</em>124* range, (\uD800-\uDBFF), the second from the125* <em>low-surrogates</em> range (\uDC00-\uDFFF).126*127* <p>A {@code char} value, therefore, represents Basic128* Multilingual Plane (BMP) code points, including the surrogate129* code points, or code units of the UTF-16 encoding. An130* {@code int} value represents all Unicode code points,131* including supplementary code points. The lower (least significant)132* 21 bits of {@code int} are used to represent Unicode code133* points and the upper (most significant) 11 bits must be zero.134* Unless otherwise specified, the behavior with respect to135* supplementary characters and surrogate {@code char} values is136* as follows:137*138* <ul>139* <li>The methods that only accept a {@code char} value cannot support140* supplementary characters. They treat {@code char} values from the141* surrogate ranges as undefined characters. For example,142* {@code Character.isLetter('\u005CuD840')} returns {@code false}, even though143* this specific value if followed by any low-surrogate value in a string144* would represent a letter.145*146* <li>The methods that accept an {@code int} value support all147* Unicode characters, including supplementary characters. For148* example, {@code Character.isLetter(0x2F81A)} returns149* {@code true} because the code point value represents a letter150* (a CJK ideograph).151* </ul>152*153* <p>In the Java SE API documentation, <em>Unicode code point</em> is154* used for character values in the range between U+0000 and U+10FFFF,155* and <em>Unicode code unit</em> is used for 16-bit156* {@code char} values that are code units of the <em>UTF-16</em>157* encoding. For more information on Unicode terminology, refer to the158* <a href="http://www.unicode.org/glossary/">Unicode Glossary</a>.159*160* <p>This is a <a href="{@docRoot}/java.base/java/lang/doc-files/ValueBased.html">value-based</a>161* class; programmers should treat instances that are162* {@linkplain #equals(Object) equal} as interchangeable and should not163* use instances for synchronization, or unpredictable behavior may164* occur. For example, in a future release, synchronization may fail.165*166* @author Lee Boynton167* @author Guy Steele168* @author Akira Tanaka169* @author Martin Buchholz170* @author Ulf Zibis171* @since 1.0172*/173@jdk.internal.ValueBased174public final175class Character implements java.io.Serializable, Comparable<Character>, Constable {176/**177* The minimum radix available for conversion to and from strings.178* The constant value of this field is the smallest value permitted179* for the radix argument in radix-conversion methods such as the180* {@code digit} method, the {@code forDigit} method, and the181* {@code toString} method of class {@code Integer}.182*183* @see Character#digit(char, int)184* @see Character#forDigit(int, int)185* @see Integer#toString(int, int)186* @see Integer#valueOf(String)187*/188public static final int MIN_RADIX = 2;189190/**191* The maximum radix available for conversion to and from strings.192* The constant value of this field is the largest value permitted193* for the radix argument in radix-conversion methods such as the194* {@code digit} method, the {@code forDigit} method, and the195* {@code toString} method of class {@code Integer}.196*197* @see Character#digit(char, int)198* @see Character#forDigit(int, int)199* @see Integer#toString(int, int)200* @see Integer#valueOf(String)201*/202public static final int MAX_RADIX = 36;203204/**205* The constant value of this field is the smallest value of type206* {@code char}, {@code '\u005Cu0000'}.207*208* @since 1.0.2209*/210public static final char MIN_VALUE = '\u0000';211212/**213* The constant value of this field is the largest value of type214* {@code char}, {@code '\u005CuFFFF'}.215*216* @since 1.0.2217*/218public static final char MAX_VALUE = '\uFFFF';219220/**221* The {@code Class} instance representing the primitive type222* {@code char}.223*224* @since 1.1225*/226@SuppressWarnings("unchecked")227public static final Class<Character> TYPE = (Class<Character>) Class.getPrimitiveClass("char");228229/*230* Normative general types231*/232233/*234* General character types235*/236237/**238* General category "Cn" in the Unicode specification.239* @since 1.1240*/241public static final byte UNASSIGNED = 0;242243/**244* General category "Lu" in the Unicode specification.245* @since 1.1246*/247public static final byte UPPERCASE_LETTER = 1;248249/**250* General category "Ll" in the Unicode specification.251* @since 1.1252*/253public static final byte LOWERCASE_LETTER = 2;254255/**256* General category "Lt" in the Unicode specification.257* @since 1.1258*/259public static final byte TITLECASE_LETTER = 3;260261/**262* General category "Lm" in the Unicode specification.263* @since 1.1264*/265public static final byte MODIFIER_LETTER = 4;266267/**268* General category "Lo" in the Unicode specification.269* @since 1.1270*/271public static final byte OTHER_LETTER = 5;272273/**274* General category "Mn" in the Unicode specification.275* @since 1.1276*/277public static final byte NON_SPACING_MARK = 6;278279/**280* General category "Me" in the Unicode specification.281* @since 1.1282*/283public static final byte ENCLOSING_MARK = 7;284285/**286* General category "Mc" in the Unicode specification.287* @since 1.1288*/289public static final byte COMBINING_SPACING_MARK = 8;290291/**292* General category "Nd" in the Unicode specification.293* @since 1.1294*/295public static final byte DECIMAL_DIGIT_NUMBER = 9;296297/**298* General category "Nl" in the Unicode specification.299* @since 1.1300*/301public static final byte LETTER_NUMBER = 10;302303/**304* General category "No" in the Unicode specification.305* @since 1.1306*/307public static final byte OTHER_NUMBER = 11;308309/**310* General category "Zs" in the Unicode specification.311* @since 1.1312*/313public static final byte SPACE_SEPARATOR = 12;314315/**316* General category "Zl" in the Unicode specification.317* @since 1.1318*/319public static final byte LINE_SEPARATOR = 13;320321/**322* General category "Zp" in the Unicode specification.323* @since 1.1324*/325public static final byte PARAGRAPH_SEPARATOR = 14;326327/**328* General category "Cc" in the Unicode specification.329* @since 1.1330*/331public static final byte CONTROL = 15;332333/**334* General category "Cf" in the Unicode specification.335* @since 1.1336*/337public static final byte FORMAT = 16;338339/**340* General category "Co" in the Unicode specification.341* @since 1.1342*/343public static final byte PRIVATE_USE = 18;344345/**346* General category "Cs" in the Unicode specification.347* @since 1.1348*/349public static final byte SURROGATE = 19;350351/**352* General category "Pd" in the Unicode specification.353* @since 1.1354*/355public static final byte DASH_PUNCTUATION = 20;356357/**358* General category "Ps" in the Unicode specification.359* @since 1.1360*/361public static final byte START_PUNCTUATION = 21;362363/**364* General category "Pe" in the Unicode specification.365* @since 1.1366*/367public static final byte END_PUNCTUATION = 22;368369/**370* General category "Pc" in the Unicode specification.371* @since 1.1372*/373public static final byte CONNECTOR_PUNCTUATION = 23;374375/**376* General category "Po" in the Unicode specification.377* @since 1.1378*/379public static final byte OTHER_PUNCTUATION = 24;380381/**382* General category "Sm" in the Unicode specification.383* @since 1.1384*/385public static final byte MATH_SYMBOL = 25;386387/**388* General category "Sc" in the Unicode specification.389* @since 1.1390*/391public static final byte CURRENCY_SYMBOL = 26;392393/**394* General category "Sk" in the Unicode specification.395* @since 1.1396*/397public static final byte MODIFIER_SYMBOL = 27;398399/**400* General category "So" in the Unicode specification.401* @since 1.1402*/403public static final byte OTHER_SYMBOL = 28;404405/**406* General category "Pi" in the Unicode specification.407* @since 1.4408*/409public static final byte INITIAL_QUOTE_PUNCTUATION = 29;410411/**412* General category "Pf" in the Unicode specification.413* @since 1.4414*/415public static final byte FINAL_QUOTE_PUNCTUATION = 30;416417/**418* Error flag. Use int (code point) to avoid confusion with U+FFFF.419*/420static final int ERROR = 0xFFFFFFFF;421422423/**424* Undefined bidirectional character type. Undefined {@code char}425* values have undefined directionality in the Unicode specification.426* @since 1.4427*/428public static final byte DIRECTIONALITY_UNDEFINED = -1;429430/**431* Strong bidirectional character type "L" in the Unicode specification.432* @since 1.4433*/434public static final byte DIRECTIONALITY_LEFT_TO_RIGHT = 0;435436/**437* Strong bidirectional character type "R" in the Unicode specification.438* @since 1.4439*/440public static final byte DIRECTIONALITY_RIGHT_TO_LEFT = 1;441442/**443* Strong bidirectional character type "AL" in the Unicode specification.444* @since 1.4445*/446public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC = 2;447448/**449* Weak bidirectional character type "EN" in the Unicode specification.450* @since 1.4451*/452public static final byte DIRECTIONALITY_EUROPEAN_NUMBER = 3;453454/**455* Weak bidirectional character type "ES" in the Unicode specification.456* @since 1.4457*/458public static final byte DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR = 4;459460/**461* Weak bidirectional character type "ET" in the Unicode specification.462* @since 1.4463*/464public static final byte DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR = 5;465466/**467* Weak bidirectional character type "AN" in the Unicode specification.468* @since 1.4469*/470public static final byte DIRECTIONALITY_ARABIC_NUMBER = 6;471472/**473* Weak bidirectional character type "CS" in the Unicode specification.474* @since 1.4475*/476public static final byte DIRECTIONALITY_COMMON_NUMBER_SEPARATOR = 7;477478/**479* Weak bidirectional character type "NSM" in the Unicode specification.480* @since 1.4481*/482public static final byte DIRECTIONALITY_NONSPACING_MARK = 8;483484/**485* Weak bidirectional character type "BN" in the Unicode specification.486* @since 1.4487*/488public static final byte DIRECTIONALITY_BOUNDARY_NEUTRAL = 9;489490/**491* Neutral bidirectional character type "B" in the Unicode specification.492* @since 1.4493*/494public static final byte DIRECTIONALITY_PARAGRAPH_SEPARATOR = 10;495496/**497* Neutral bidirectional character type "S" in the Unicode specification.498* @since 1.4499*/500public static final byte DIRECTIONALITY_SEGMENT_SEPARATOR = 11;501502/**503* Neutral bidirectional character type "WS" in the Unicode specification.504* @since 1.4505*/506public static final byte DIRECTIONALITY_WHITESPACE = 12;507508/**509* Neutral bidirectional character type "ON" in the Unicode specification.510* @since 1.4511*/512public static final byte DIRECTIONALITY_OTHER_NEUTRALS = 13;513514/**515* Strong bidirectional character type "LRE" in the Unicode specification.516* @since 1.4517*/518public static final byte DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING = 14;519520/**521* Strong bidirectional character type "LRO" in the Unicode specification.522* @since 1.4523*/524public static final byte DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE = 15;525526/**527* Strong bidirectional character type "RLE" in the Unicode specification.528* @since 1.4529*/530public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING = 16;531532/**533* Strong bidirectional character type "RLO" in the Unicode specification.534* @since 1.4535*/536public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE = 17;537538/**539* Weak bidirectional character type "PDF" in the Unicode specification.540* @since 1.4541*/542public static final byte DIRECTIONALITY_POP_DIRECTIONAL_FORMAT = 18;543544/**545* Weak bidirectional character type "LRI" in the Unicode specification.546* @since 9547*/548public static final byte DIRECTIONALITY_LEFT_TO_RIGHT_ISOLATE = 19;549550/**551* Weak bidirectional character type "RLI" in the Unicode specification.552* @since 9553*/554public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_ISOLATE = 20;555556/**557* Weak bidirectional character type "FSI" in the Unicode specification.558* @since 9559*/560public static final byte DIRECTIONALITY_FIRST_STRONG_ISOLATE = 21;561562/**563* Weak bidirectional character type "PDI" in the Unicode specification.564* @since 9565*/566public static final byte DIRECTIONALITY_POP_DIRECTIONAL_ISOLATE = 22;567568/**569* The minimum value of a570* <a href="http://www.unicode.org/glossary/#high_surrogate_code_unit">571* Unicode high-surrogate code unit</a>572* in the UTF-16 encoding, constant {@code '\u005CuD800'}.573* A high-surrogate is also known as a <i>leading-surrogate</i>.574*575* @since 1.5576*/577public static final char MIN_HIGH_SURROGATE = '\uD800';578579/**580* The maximum value of a581* <a href="http://www.unicode.org/glossary/#high_surrogate_code_unit">582* Unicode high-surrogate code unit</a>583* in the UTF-16 encoding, constant {@code '\u005CuDBFF'}.584* A high-surrogate is also known as a <i>leading-surrogate</i>.585*586* @since 1.5587*/588public static final char MAX_HIGH_SURROGATE = '\uDBFF';589590/**591* The minimum value of a592* <a href="http://www.unicode.org/glossary/#low_surrogate_code_unit">593* Unicode low-surrogate code unit</a>594* in the UTF-16 encoding, constant {@code '\u005CuDC00'}.595* A low-surrogate is also known as a <i>trailing-surrogate</i>.596*597* @since 1.5598*/599public static final char MIN_LOW_SURROGATE = '\uDC00';600601/**602* The maximum value of a603* <a href="http://www.unicode.org/glossary/#low_surrogate_code_unit">604* Unicode low-surrogate code unit</a>605* in the UTF-16 encoding, constant {@code '\u005CuDFFF'}.606* A low-surrogate is also known as a <i>trailing-surrogate</i>.607*608* @since 1.5609*/610public static final char MAX_LOW_SURROGATE = '\uDFFF';611612/**613* The minimum value of a Unicode surrogate code unit in the614* UTF-16 encoding, constant {@code '\u005CuD800'}.615*616* @since 1.5617*/618public static final char MIN_SURROGATE = MIN_HIGH_SURROGATE;619620/**621* The maximum value of a Unicode surrogate code unit in the622* UTF-16 encoding, constant {@code '\u005CuDFFF'}.623*624* @since 1.5625*/626public static final char MAX_SURROGATE = MAX_LOW_SURROGATE;627628/**629* The minimum value of a630* <a href="http://www.unicode.org/glossary/#supplementary_code_point">631* Unicode supplementary code point</a>, constant {@code U+10000}.632*633* @since 1.5634*/635public static final int MIN_SUPPLEMENTARY_CODE_POINT = 0x010000;636637/**638* The minimum value of a639* <a href="http://www.unicode.org/glossary/#code_point">640* Unicode code point</a>, constant {@code U+0000}.641*642* @since 1.5643*/644public static final int MIN_CODE_POINT = 0x000000;645646/**647* The maximum value of a648* <a href="http://www.unicode.org/glossary/#code_point">649* Unicode code point</a>, constant {@code U+10FFFF}.650*651* @since 1.5652*/653public static final int MAX_CODE_POINT = 0X10FFFF;654655/**656* Returns an {@link Optional} containing the nominal descriptor for this657* instance.658*659* @return an {@link Optional} describing the {@linkplain Character} instance660* @since 15661*/662@Override663public Optional<DynamicConstantDesc<Character>> describeConstable() {664return Optional.of(DynamicConstantDesc.ofNamed(BSM_EXPLICIT_CAST, DEFAULT_NAME, CD_char, (int) value));665}666667/**668* Instances of this class represent particular subsets of the Unicode669* character set. The only family of subsets defined in the670* {@code Character} class is {@link Character.UnicodeBlock}.671* Other portions of the Java API may define other subsets for their672* own purposes.673*674* @since 1.2675*/676public static class Subset {677678private String name;679680/**681* Constructs a new {@code Subset} instance.682*683* @param name The name of this subset684* @throws NullPointerException if name is {@code null}685*/686protected Subset(String name) {687if (name == null) {688throw new NullPointerException("name");689}690this.name = name;691}692693/**694* Compares two {@code Subset} objects for equality.695* This method returns {@code true} if and only if696* {@code this} and the argument refer to the same697* object; since this method is {@code final}, this698* guarantee holds for all subclasses.699*/700public final boolean equals(Object obj) {701return (this == obj);702}703704/**705* Returns the standard hash code as defined by the706* {@link Object#hashCode} method. This method707* is {@code final} in order to ensure that the708* {@code equals} and {@code hashCode} methods will709* be consistent in all subclasses.710*/711public final int hashCode() {712return super.hashCode();713}714715/**716* Returns the name of this subset.717*/718public final String toString() {719return name;720}721}722723// See http://www.unicode.org/Public/UNIDATA/Blocks.txt724// for the latest specification of Unicode Blocks.725726/**727* A family of character subsets representing the character blocks in the728* Unicode specification. Character blocks generally define characters729* used for a specific script or purpose. A character is contained by730* at most one Unicode block.731*732* @since 1.2733*/734public static final class UnicodeBlock extends Subset {735/**736* 684 - the expected number of entities737* 0.75 - the default load factor of HashMap738*/739private static final int NUM_ENTITIES = 684;740private static Map<String, UnicodeBlock> map =741new HashMap<>((int)(NUM_ENTITIES / 0.75f + 1.0f));742743/**744* Creates a UnicodeBlock with the given identifier name.745* This name must be the same as the block identifier.746*/747private UnicodeBlock(String idName) {748super(idName);749map.put(idName, this);750}751752/**753* Creates a UnicodeBlock with the given identifier name and754* alias name.755*/756private UnicodeBlock(String idName, String alias) {757this(idName);758map.put(alias, this);759}760761/**762* Creates a UnicodeBlock with the given identifier name and763* alias names.764*/765private UnicodeBlock(String idName, String... aliases) {766this(idName);767for (String alias : aliases)768map.put(alias, this);769}770771/**772* Constant for the "Basic Latin" Unicode character block.773* @since 1.2774*/775public static final UnicodeBlock BASIC_LATIN =776new UnicodeBlock("BASIC_LATIN",777"BASIC LATIN",778"BASICLATIN");779780/**781* Constant for the "Latin-1 Supplement" Unicode character block.782* @since 1.2783*/784public static final UnicodeBlock LATIN_1_SUPPLEMENT =785new UnicodeBlock("LATIN_1_SUPPLEMENT",786"LATIN-1 SUPPLEMENT",787"LATIN-1SUPPLEMENT");788789/**790* Constant for the "Latin Extended-A" Unicode character block.791* @since 1.2792*/793public static final UnicodeBlock LATIN_EXTENDED_A =794new UnicodeBlock("LATIN_EXTENDED_A",795"LATIN EXTENDED-A",796"LATINEXTENDED-A");797798/**799* Constant for the "Latin Extended-B" Unicode character block.800* @since 1.2801*/802public static final UnicodeBlock LATIN_EXTENDED_B =803new UnicodeBlock("LATIN_EXTENDED_B",804"LATIN EXTENDED-B",805"LATINEXTENDED-B");806807/**808* Constant for the "IPA Extensions" Unicode character block.809* @since 1.2810*/811public static final UnicodeBlock IPA_EXTENSIONS =812new UnicodeBlock("IPA_EXTENSIONS",813"IPA EXTENSIONS",814"IPAEXTENSIONS");815816/**817* Constant for the "Spacing Modifier Letters" Unicode character block.818* @since 1.2819*/820public static final UnicodeBlock SPACING_MODIFIER_LETTERS =821new UnicodeBlock("SPACING_MODIFIER_LETTERS",822"SPACING MODIFIER LETTERS",823"SPACINGMODIFIERLETTERS");824825/**826* Constant for the "Combining Diacritical Marks" Unicode character block.827* @since 1.2828*/829public static final UnicodeBlock COMBINING_DIACRITICAL_MARKS =830new UnicodeBlock("COMBINING_DIACRITICAL_MARKS",831"COMBINING DIACRITICAL MARKS",832"COMBININGDIACRITICALMARKS");833834/**835* Constant for the "Greek and Coptic" Unicode character block.836* <p>837* This block was previously known as the "Greek" block.838*839* @since 1.2840*/841public static final UnicodeBlock GREEK =842new UnicodeBlock("GREEK",843"GREEK AND COPTIC",844"GREEKANDCOPTIC");845846/**847* Constant for the "Cyrillic" Unicode character block.848* @since 1.2849*/850public static final UnicodeBlock CYRILLIC =851new UnicodeBlock("CYRILLIC");852853/**854* Constant for the "Armenian" Unicode character block.855* @since 1.2856*/857public static final UnicodeBlock ARMENIAN =858new UnicodeBlock("ARMENIAN");859860/**861* Constant for the "Hebrew" Unicode character block.862* @since 1.2863*/864public static final UnicodeBlock HEBREW =865new UnicodeBlock("HEBREW");866867/**868* Constant for the "Arabic" Unicode character block.869* @since 1.2870*/871public static final UnicodeBlock ARABIC =872new UnicodeBlock("ARABIC");873874/**875* Constant for the "Devanagari" Unicode character block.876* @since 1.2877*/878public static final UnicodeBlock DEVANAGARI =879new UnicodeBlock("DEVANAGARI");880881/**882* Constant for the "Bengali" Unicode character block.883* @since 1.2884*/885public static final UnicodeBlock BENGALI =886new UnicodeBlock("BENGALI");887888/**889* Constant for the "Gurmukhi" Unicode character block.890* @since 1.2891*/892public static final UnicodeBlock GURMUKHI =893new UnicodeBlock("GURMUKHI");894895/**896* Constant for the "Gujarati" Unicode character block.897* @since 1.2898*/899public static final UnicodeBlock GUJARATI =900new UnicodeBlock("GUJARATI");901902/**903* Constant for the "Oriya" Unicode character block.904* @since 1.2905*/906public static final UnicodeBlock ORIYA =907new UnicodeBlock("ORIYA");908909/**910* Constant for the "Tamil" Unicode character block.911* @since 1.2912*/913public static final UnicodeBlock TAMIL =914new UnicodeBlock("TAMIL");915916/**917* Constant for the "Telugu" Unicode character block.918* @since 1.2919*/920public static final UnicodeBlock TELUGU =921new UnicodeBlock("TELUGU");922923/**924* Constant for the "Kannada" Unicode character block.925* @since 1.2926*/927public static final UnicodeBlock KANNADA =928new UnicodeBlock("KANNADA");929930/**931* Constant for the "Malayalam" Unicode character block.932* @since 1.2933*/934public static final UnicodeBlock MALAYALAM =935new UnicodeBlock("MALAYALAM");936937/**938* Constant for the "Thai" Unicode character block.939* @since 1.2940*/941public static final UnicodeBlock THAI =942new UnicodeBlock("THAI");943944/**945* Constant for the "Lao" Unicode character block.946* @since 1.2947*/948public static final UnicodeBlock LAO =949new UnicodeBlock("LAO");950951/**952* Constant for the "Tibetan" Unicode character block.953* @since 1.2954*/955public static final UnicodeBlock TIBETAN =956new UnicodeBlock("TIBETAN");957958/**959* Constant for the "Georgian" Unicode character block.960* @since 1.2961*/962public static final UnicodeBlock GEORGIAN =963new UnicodeBlock("GEORGIAN");964965/**966* Constant for the "Hangul Jamo" Unicode character block.967* @since 1.2968*/969public static final UnicodeBlock HANGUL_JAMO =970new UnicodeBlock("HANGUL_JAMO",971"HANGUL JAMO",972"HANGULJAMO");973974/**975* Constant for the "Latin Extended Additional" Unicode character block.976* @since 1.2977*/978public static final UnicodeBlock LATIN_EXTENDED_ADDITIONAL =979new UnicodeBlock("LATIN_EXTENDED_ADDITIONAL",980"LATIN EXTENDED ADDITIONAL",981"LATINEXTENDEDADDITIONAL");982983/**984* Constant for the "Greek Extended" Unicode character block.985* @since 1.2986*/987public static final UnicodeBlock GREEK_EXTENDED =988new UnicodeBlock("GREEK_EXTENDED",989"GREEK EXTENDED",990"GREEKEXTENDED");991992/**993* Constant for the "General Punctuation" Unicode character block.994* @since 1.2995*/996public static final UnicodeBlock GENERAL_PUNCTUATION =997new UnicodeBlock("GENERAL_PUNCTUATION",998"GENERAL PUNCTUATION",999"GENERALPUNCTUATION");10001001/**1002* Constant for the "Superscripts and Subscripts" Unicode character1003* block.1004* @since 1.21005*/1006public static final UnicodeBlock SUPERSCRIPTS_AND_SUBSCRIPTS =1007new UnicodeBlock("SUPERSCRIPTS_AND_SUBSCRIPTS",1008"SUPERSCRIPTS AND SUBSCRIPTS",1009"SUPERSCRIPTSANDSUBSCRIPTS");10101011/**1012* Constant for the "Currency Symbols" Unicode character block.1013* @since 1.21014*/1015public static final UnicodeBlock CURRENCY_SYMBOLS =1016new UnicodeBlock("CURRENCY_SYMBOLS",1017"CURRENCY SYMBOLS",1018"CURRENCYSYMBOLS");10191020/**1021* Constant for the "Combining Diacritical Marks for Symbols" Unicode1022* character block.1023* <p>1024* This block was previously known as "Combining Marks for Symbols".1025* @since 1.21026*/1027public static final UnicodeBlock COMBINING_MARKS_FOR_SYMBOLS =1028new UnicodeBlock("COMBINING_MARKS_FOR_SYMBOLS",1029"COMBINING DIACRITICAL MARKS FOR SYMBOLS",1030"COMBININGDIACRITICALMARKSFORSYMBOLS",1031"COMBINING MARKS FOR SYMBOLS",1032"COMBININGMARKSFORSYMBOLS");10331034/**1035* Constant for the "Letterlike Symbols" Unicode character block.1036* @since 1.21037*/1038public static final UnicodeBlock LETTERLIKE_SYMBOLS =1039new UnicodeBlock("LETTERLIKE_SYMBOLS",1040"LETTERLIKE SYMBOLS",1041"LETTERLIKESYMBOLS");10421043/**1044* Constant for the "Number Forms" Unicode character block.1045* @since 1.21046*/1047public static final UnicodeBlock NUMBER_FORMS =1048new UnicodeBlock("NUMBER_FORMS",1049"NUMBER FORMS",1050"NUMBERFORMS");10511052/**1053* Constant for the "Arrows" Unicode character block.1054* @since 1.21055*/1056public static final UnicodeBlock ARROWS =1057new UnicodeBlock("ARROWS");10581059/**1060* Constant for the "Mathematical Operators" Unicode character block.1061* @since 1.21062*/1063public static final UnicodeBlock MATHEMATICAL_OPERATORS =1064new UnicodeBlock("MATHEMATICAL_OPERATORS",1065"MATHEMATICAL OPERATORS",1066"MATHEMATICALOPERATORS");10671068/**1069* Constant for the "Miscellaneous Technical" Unicode character block.1070* @since 1.21071*/1072public static final UnicodeBlock MISCELLANEOUS_TECHNICAL =1073new UnicodeBlock("MISCELLANEOUS_TECHNICAL",1074"MISCELLANEOUS TECHNICAL",1075"MISCELLANEOUSTECHNICAL");10761077/**1078* Constant for the "Control Pictures" Unicode character block.1079* @since 1.21080*/1081public static final UnicodeBlock CONTROL_PICTURES =1082new UnicodeBlock("CONTROL_PICTURES",1083"CONTROL PICTURES",1084"CONTROLPICTURES");10851086/**1087* Constant for the "Optical Character Recognition" Unicode character block.1088* @since 1.21089*/1090public static final UnicodeBlock OPTICAL_CHARACTER_RECOGNITION =1091new UnicodeBlock("OPTICAL_CHARACTER_RECOGNITION",1092"OPTICAL CHARACTER RECOGNITION",1093"OPTICALCHARACTERRECOGNITION");10941095/**1096* Constant for the "Enclosed Alphanumerics" Unicode character block.1097* @since 1.21098*/1099public static final UnicodeBlock ENCLOSED_ALPHANUMERICS =1100new UnicodeBlock("ENCLOSED_ALPHANUMERICS",1101"ENCLOSED ALPHANUMERICS",1102"ENCLOSEDALPHANUMERICS");11031104/**1105* Constant for the "Box Drawing" Unicode character block.1106* @since 1.21107*/1108public static final UnicodeBlock BOX_DRAWING =1109new UnicodeBlock("BOX_DRAWING",1110"BOX DRAWING",1111"BOXDRAWING");11121113/**1114* Constant for the "Block Elements" Unicode character block.1115* @since 1.21116*/1117public static final UnicodeBlock BLOCK_ELEMENTS =1118new UnicodeBlock("BLOCK_ELEMENTS",1119"BLOCK ELEMENTS",1120"BLOCKELEMENTS");11211122/**1123* Constant for the "Geometric Shapes" Unicode character block.1124* @since 1.21125*/1126public static final UnicodeBlock GEOMETRIC_SHAPES =1127new UnicodeBlock("GEOMETRIC_SHAPES",1128"GEOMETRIC SHAPES",1129"GEOMETRICSHAPES");11301131/**1132* Constant for the "Miscellaneous Symbols" Unicode character block.1133* @since 1.21134*/1135public static final UnicodeBlock MISCELLANEOUS_SYMBOLS =1136new UnicodeBlock("MISCELLANEOUS_SYMBOLS",1137"MISCELLANEOUS SYMBOLS",1138"MISCELLANEOUSSYMBOLS");11391140/**1141* Constant for the "Dingbats" Unicode character block.1142* @since 1.21143*/1144public static final UnicodeBlock DINGBATS =1145new UnicodeBlock("DINGBATS");11461147/**1148* Constant for the "CJK Symbols and Punctuation" Unicode character block.1149* @since 1.21150*/1151public static final UnicodeBlock CJK_SYMBOLS_AND_PUNCTUATION =1152new UnicodeBlock("CJK_SYMBOLS_AND_PUNCTUATION",1153"CJK SYMBOLS AND PUNCTUATION",1154"CJKSYMBOLSANDPUNCTUATION");11551156/**1157* Constant for the "Hiragana" Unicode character block.1158* @since 1.21159*/1160public static final UnicodeBlock HIRAGANA =1161new UnicodeBlock("HIRAGANA");11621163/**1164* Constant for the "Katakana" Unicode character block.1165* @since 1.21166*/1167public static final UnicodeBlock KATAKANA =1168new UnicodeBlock("KATAKANA");11691170/**1171* Constant for the "Bopomofo" Unicode character block.1172* @since 1.21173*/1174public static final UnicodeBlock BOPOMOFO =1175new UnicodeBlock("BOPOMOFO");11761177/**1178* Constant for the "Hangul Compatibility Jamo" Unicode character block.1179* @since 1.21180*/1181public static final UnicodeBlock HANGUL_COMPATIBILITY_JAMO =1182new UnicodeBlock("HANGUL_COMPATIBILITY_JAMO",1183"HANGUL COMPATIBILITY JAMO",1184"HANGULCOMPATIBILITYJAMO");11851186/**1187* Constant for the "Kanbun" Unicode character block.1188* @since 1.21189*/1190public static final UnicodeBlock KANBUN =1191new UnicodeBlock("KANBUN");11921193/**1194* Constant for the "Enclosed CJK Letters and Months" Unicode character block.1195* @since 1.21196*/1197public static final UnicodeBlock ENCLOSED_CJK_LETTERS_AND_MONTHS =1198new UnicodeBlock("ENCLOSED_CJK_LETTERS_AND_MONTHS",1199"ENCLOSED CJK LETTERS AND MONTHS",1200"ENCLOSEDCJKLETTERSANDMONTHS");12011202/**1203* Constant for the "CJK Compatibility" Unicode character block.1204* @since 1.21205*/1206public static final UnicodeBlock CJK_COMPATIBILITY =1207new UnicodeBlock("CJK_COMPATIBILITY",1208"CJK COMPATIBILITY",1209"CJKCOMPATIBILITY");12101211/**1212* Constant for the "CJK Unified Ideographs" Unicode character block.1213* @since 1.21214*/1215public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS =1216new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS",1217"CJK UNIFIED IDEOGRAPHS",1218"CJKUNIFIEDIDEOGRAPHS");12191220/**1221* Constant for the "Hangul Syllables" Unicode character block.1222* @since 1.21223*/1224public static final UnicodeBlock HANGUL_SYLLABLES =1225new UnicodeBlock("HANGUL_SYLLABLES",1226"HANGUL SYLLABLES",1227"HANGULSYLLABLES");12281229/**1230* Constant for the "Private Use Area" Unicode character block.1231* @since 1.21232*/1233public static final UnicodeBlock PRIVATE_USE_AREA =1234new UnicodeBlock("PRIVATE_USE_AREA",1235"PRIVATE USE AREA",1236"PRIVATEUSEAREA");12371238/**1239* Constant for the "CJK Compatibility Ideographs" Unicode character1240* block.1241* @since 1.21242*/1243public static final UnicodeBlock CJK_COMPATIBILITY_IDEOGRAPHS =1244new UnicodeBlock("CJK_COMPATIBILITY_IDEOGRAPHS",1245"CJK COMPATIBILITY IDEOGRAPHS",1246"CJKCOMPATIBILITYIDEOGRAPHS");12471248/**1249* Constant for the "Alphabetic Presentation Forms" Unicode character block.1250* @since 1.21251*/1252public static final UnicodeBlock ALPHABETIC_PRESENTATION_FORMS =1253new UnicodeBlock("ALPHABETIC_PRESENTATION_FORMS",1254"ALPHABETIC PRESENTATION FORMS",1255"ALPHABETICPRESENTATIONFORMS");12561257/**1258* Constant for the "Arabic Presentation Forms-A" Unicode character1259* block.1260* @since 1.21261*/1262public static final UnicodeBlock ARABIC_PRESENTATION_FORMS_A =1263new UnicodeBlock("ARABIC_PRESENTATION_FORMS_A",1264"ARABIC PRESENTATION FORMS-A",1265"ARABICPRESENTATIONFORMS-A");12661267/**1268* Constant for the "Combining Half Marks" Unicode character block.1269* @since 1.21270*/1271public static final UnicodeBlock COMBINING_HALF_MARKS =1272new UnicodeBlock("COMBINING_HALF_MARKS",1273"COMBINING HALF MARKS",1274"COMBININGHALFMARKS");12751276/**1277* Constant for the "CJK Compatibility Forms" Unicode character block.1278* @since 1.21279*/1280public static final UnicodeBlock CJK_COMPATIBILITY_FORMS =1281new UnicodeBlock("CJK_COMPATIBILITY_FORMS",1282"CJK COMPATIBILITY FORMS",1283"CJKCOMPATIBILITYFORMS");12841285/**1286* Constant for the "Small Form Variants" Unicode character block.1287* @since 1.21288*/1289public static final UnicodeBlock SMALL_FORM_VARIANTS =1290new UnicodeBlock("SMALL_FORM_VARIANTS",1291"SMALL FORM VARIANTS",1292"SMALLFORMVARIANTS");12931294/**1295* Constant for the "Arabic Presentation Forms-B" Unicode character block.1296* @since 1.21297*/1298public static final UnicodeBlock ARABIC_PRESENTATION_FORMS_B =1299new UnicodeBlock("ARABIC_PRESENTATION_FORMS_B",1300"ARABIC PRESENTATION FORMS-B",1301"ARABICPRESENTATIONFORMS-B");13021303/**1304* Constant for the "Halfwidth and Fullwidth Forms" Unicode character1305* block.1306* @since 1.21307*/1308public static final UnicodeBlock HALFWIDTH_AND_FULLWIDTH_FORMS =1309new UnicodeBlock("HALFWIDTH_AND_FULLWIDTH_FORMS",1310"HALFWIDTH AND FULLWIDTH FORMS",1311"HALFWIDTHANDFULLWIDTHFORMS");13121313/**1314* Constant for the "Specials" Unicode character block.1315* @since 1.21316*/1317public static final UnicodeBlock SPECIALS =1318new UnicodeBlock("SPECIALS");13191320/**1321* @deprecated1322* Instead of {@code SURROGATES_AREA}, use {@link #HIGH_SURROGATES},1323* {@link #HIGH_PRIVATE_USE_SURROGATES}, and {@link #LOW_SURROGATES}.1324* These constants match the block definitions of the Unicode Standard.1325* The {@link #of(char)} and {@link #of(int)} methods return the1326* standard constants.1327*/1328@Deprecated(since="1.5")1329public static final UnicodeBlock SURROGATES_AREA =1330new UnicodeBlock("SURROGATES_AREA");13311332/**1333* Constant for the "Syriac" Unicode character block.1334* @since 1.41335*/1336public static final UnicodeBlock SYRIAC =1337new UnicodeBlock("SYRIAC");13381339/**1340* Constant for the "Thaana" Unicode character block.1341* @since 1.41342*/1343public static final UnicodeBlock THAANA =1344new UnicodeBlock("THAANA");13451346/**1347* Constant for the "Sinhala" Unicode character block.1348* @since 1.41349*/1350public static final UnicodeBlock SINHALA =1351new UnicodeBlock("SINHALA");13521353/**1354* Constant for the "Myanmar" Unicode character block.1355* @since 1.41356*/1357public static final UnicodeBlock MYANMAR =1358new UnicodeBlock("MYANMAR");13591360/**1361* Constant for the "Ethiopic" Unicode character block.1362* @since 1.41363*/1364public static final UnicodeBlock ETHIOPIC =1365new UnicodeBlock("ETHIOPIC");13661367/**1368* Constant for the "Cherokee" Unicode character block.1369* @since 1.41370*/1371public static final UnicodeBlock CHEROKEE =1372new UnicodeBlock("CHEROKEE");13731374/**1375* Constant for the "Unified Canadian Aboriginal Syllabics" Unicode character block.1376* @since 1.41377*/1378public static final UnicodeBlock UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS =1379new UnicodeBlock("UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS",1380"UNIFIED CANADIAN ABORIGINAL SYLLABICS",1381"UNIFIEDCANADIANABORIGINALSYLLABICS");13821383/**1384* Constant for the "Ogham" Unicode character block.1385* @since 1.41386*/1387public static final UnicodeBlock OGHAM =1388new UnicodeBlock("OGHAM");13891390/**1391* Constant for the "Runic" Unicode character block.1392* @since 1.41393*/1394public static final UnicodeBlock RUNIC =1395new UnicodeBlock("RUNIC");13961397/**1398* Constant for the "Khmer" Unicode character block.1399* @since 1.41400*/1401public static final UnicodeBlock KHMER =1402new UnicodeBlock("KHMER");14031404/**1405* Constant for the "Mongolian" Unicode character block.1406* @since 1.41407*/1408public static final UnicodeBlock MONGOLIAN =1409new UnicodeBlock("MONGOLIAN");14101411/**1412* Constant for the "Braille Patterns" Unicode character block.1413* @since 1.41414*/1415public static final UnicodeBlock BRAILLE_PATTERNS =1416new UnicodeBlock("BRAILLE_PATTERNS",1417"BRAILLE PATTERNS",1418"BRAILLEPATTERNS");14191420/**1421* Constant for the "CJK Radicals Supplement" Unicode character block.1422* @since 1.41423*/1424public static final UnicodeBlock CJK_RADICALS_SUPPLEMENT =1425new UnicodeBlock("CJK_RADICALS_SUPPLEMENT",1426"CJK RADICALS SUPPLEMENT",1427"CJKRADICALSSUPPLEMENT");14281429/**1430* Constant for the "Kangxi Radicals" Unicode character block.1431* @since 1.41432*/1433public static final UnicodeBlock KANGXI_RADICALS =1434new UnicodeBlock("KANGXI_RADICALS",1435"KANGXI RADICALS",1436"KANGXIRADICALS");14371438/**1439* Constant for the "Ideographic Description Characters" Unicode character block.1440* @since 1.41441*/1442public static final UnicodeBlock IDEOGRAPHIC_DESCRIPTION_CHARACTERS =1443new UnicodeBlock("IDEOGRAPHIC_DESCRIPTION_CHARACTERS",1444"IDEOGRAPHIC DESCRIPTION CHARACTERS",1445"IDEOGRAPHICDESCRIPTIONCHARACTERS");14461447/**1448* Constant for the "Bopomofo Extended" Unicode character block.1449* @since 1.41450*/1451public static final UnicodeBlock BOPOMOFO_EXTENDED =1452new UnicodeBlock("BOPOMOFO_EXTENDED",1453"BOPOMOFO EXTENDED",1454"BOPOMOFOEXTENDED");14551456/**1457* Constant for the "CJK Unified Ideographs Extension A" Unicode character block.1458* @since 1.41459*/1460public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A =1461new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A",1462"CJK UNIFIED IDEOGRAPHS EXTENSION A",1463"CJKUNIFIEDIDEOGRAPHSEXTENSIONA");14641465/**1466* Constant for the "Yi Syllables" Unicode character block.1467* @since 1.41468*/1469public static final UnicodeBlock YI_SYLLABLES =1470new UnicodeBlock("YI_SYLLABLES",1471"YI SYLLABLES",1472"YISYLLABLES");14731474/**1475* Constant for the "Yi Radicals" Unicode character block.1476* @since 1.41477*/1478public static final UnicodeBlock YI_RADICALS =1479new UnicodeBlock("YI_RADICALS",1480"YI RADICALS",1481"YIRADICALS");14821483/**1484* Constant for the "Cyrillic Supplement" Unicode character block.1485* This block was previously known as the "Cyrillic Supplementary" block.1486* @since 1.51487*/1488public static final UnicodeBlock CYRILLIC_SUPPLEMENTARY =1489new UnicodeBlock("CYRILLIC_SUPPLEMENTARY",1490"CYRILLIC SUPPLEMENTARY",1491"CYRILLICSUPPLEMENTARY",1492"CYRILLIC SUPPLEMENT",1493"CYRILLICSUPPLEMENT");14941495/**1496* Constant for the "Tagalog" Unicode character block.1497* @since 1.51498*/1499public static final UnicodeBlock TAGALOG =1500new UnicodeBlock("TAGALOG");15011502/**1503* Constant for the "Hanunoo" Unicode character block.1504* @since 1.51505*/1506public static final UnicodeBlock HANUNOO =1507new UnicodeBlock("HANUNOO");15081509/**1510* Constant for the "Buhid" Unicode character block.1511* @since 1.51512*/1513public static final UnicodeBlock BUHID =1514new UnicodeBlock("BUHID");15151516/**1517* Constant for the "Tagbanwa" Unicode character block.1518* @since 1.51519*/1520public static final UnicodeBlock TAGBANWA =1521new UnicodeBlock("TAGBANWA");15221523/**1524* Constant for the "Limbu" Unicode character block.1525* @since 1.51526*/1527public static final UnicodeBlock LIMBU =1528new UnicodeBlock("LIMBU");15291530/**1531* Constant for the "Tai Le" Unicode character block.1532* @since 1.51533*/1534public static final UnicodeBlock TAI_LE =1535new UnicodeBlock("TAI_LE",1536"TAI LE",1537"TAILE");15381539/**1540* Constant for the "Khmer Symbols" Unicode character block.1541* @since 1.51542*/1543public static final UnicodeBlock KHMER_SYMBOLS =1544new UnicodeBlock("KHMER_SYMBOLS",1545"KHMER SYMBOLS",1546"KHMERSYMBOLS");15471548/**1549* Constant for the "Phonetic Extensions" Unicode character block.1550* @since 1.51551*/1552public static final UnicodeBlock PHONETIC_EXTENSIONS =1553new UnicodeBlock("PHONETIC_EXTENSIONS",1554"PHONETIC EXTENSIONS",1555"PHONETICEXTENSIONS");15561557/**1558* Constant for the "Miscellaneous Mathematical Symbols-A" Unicode character block.1559* @since 1.51560*/1561public static final UnicodeBlock MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A =1562new UnicodeBlock("MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A",1563"MISCELLANEOUS MATHEMATICAL SYMBOLS-A",1564"MISCELLANEOUSMATHEMATICALSYMBOLS-A");15651566/**1567* Constant for the "Supplemental Arrows-A" Unicode character block.1568* @since 1.51569*/1570public static final UnicodeBlock SUPPLEMENTAL_ARROWS_A =1571new UnicodeBlock("SUPPLEMENTAL_ARROWS_A",1572"SUPPLEMENTAL ARROWS-A",1573"SUPPLEMENTALARROWS-A");15741575/**1576* Constant for the "Supplemental Arrows-B" Unicode character block.1577* @since 1.51578*/1579public static final UnicodeBlock SUPPLEMENTAL_ARROWS_B =1580new UnicodeBlock("SUPPLEMENTAL_ARROWS_B",1581"SUPPLEMENTAL ARROWS-B",1582"SUPPLEMENTALARROWS-B");15831584/**1585* Constant for the "Miscellaneous Mathematical Symbols-B" Unicode1586* character block.1587* @since 1.51588*/1589public static final UnicodeBlock MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B =1590new UnicodeBlock("MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B",1591"MISCELLANEOUS MATHEMATICAL SYMBOLS-B",1592"MISCELLANEOUSMATHEMATICALSYMBOLS-B");15931594/**1595* Constant for the "Supplemental Mathematical Operators" Unicode1596* character block.1597* @since 1.51598*/1599public static final UnicodeBlock SUPPLEMENTAL_MATHEMATICAL_OPERATORS =1600new UnicodeBlock("SUPPLEMENTAL_MATHEMATICAL_OPERATORS",1601"SUPPLEMENTAL MATHEMATICAL OPERATORS",1602"SUPPLEMENTALMATHEMATICALOPERATORS");16031604/**1605* Constant for the "Miscellaneous Symbols and Arrows" Unicode character1606* block.1607* @since 1.51608*/1609public static final UnicodeBlock MISCELLANEOUS_SYMBOLS_AND_ARROWS =1610new UnicodeBlock("MISCELLANEOUS_SYMBOLS_AND_ARROWS",1611"MISCELLANEOUS SYMBOLS AND ARROWS",1612"MISCELLANEOUSSYMBOLSANDARROWS");16131614/**1615* Constant for the "Katakana Phonetic Extensions" Unicode character1616* block.1617* @since 1.51618*/1619public static final UnicodeBlock KATAKANA_PHONETIC_EXTENSIONS =1620new UnicodeBlock("KATAKANA_PHONETIC_EXTENSIONS",1621"KATAKANA PHONETIC EXTENSIONS",1622"KATAKANAPHONETICEXTENSIONS");16231624/**1625* Constant for the "Yijing Hexagram Symbols" Unicode character block.1626* @since 1.51627*/1628public static final UnicodeBlock YIJING_HEXAGRAM_SYMBOLS =1629new UnicodeBlock("YIJING_HEXAGRAM_SYMBOLS",1630"YIJING HEXAGRAM SYMBOLS",1631"YIJINGHEXAGRAMSYMBOLS");16321633/**1634* Constant for the "Variation Selectors" Unicode character block.1635* @since 1.51636*/1637public static final UnicodeBlock VARIATION_SELECTORS =1638new UnicodeBlock("VARIATION_SELECTORS",1639"VARIATION SELECTORS",1640"VARIATIONSELECTORS");16411642/**1643* Constant for the "Linear B Syllabary" Unicode character block.1644* @since 1.51645*/1646public static final UnicodeBlock LINEAR_B_SYLLABARY =1647new UnicodeBlock("LINEAR_B_SYLLABARY",1648"LINEAR B SYLLABARY",1649"LINEARBSYLLABARY");16501651/**1652* Constant for the "Linear B Ideograms" Unicode character block.1653* @since 1.51654*/1655public static final UnicodeBlock LINEAR_B_IDEOGRAMS =1656new UnicodeBlock("LINEAR_B_IDEOGRAMS",1657"LINEAR B IDEOGRAMS",1658"LINEARBIDEOGRAMS");16591660/**1661* Constant for the "Aegean Numbers" Unicode character block.1662* @since 1.51663*/1664public static final UnicodeBlock AEGEAN_NUMBERS =1665new UnicodeBlock("AEGEAN_NUMBERS",1666"AEGEAN NUMBERS",1667"AEGEANNUMBERS");16681669/**1670* Constant for the "Old Italic" Unicode character block.1671* @since 1.51672*/1673public static final UnicodeBlock OLD_ITALIC =1674new UnicodeBlock("OLD_ITALIC",1675"OLD ITALIC",1676"OLDITALIC");16771678/**1679* Constant for the "Gothic" Unicode character block.1680* @since 1.51681*/1682public static final UnicodeBlock GOTHIC =1683new UnicodeBlock("GOTHIC");16841685/**1686* Constant for the "Ugaritic" Unicode character block.1687* @since 1.51688*/1689public static final UnicodeBlock UGARITIC =1690new UnicodeBlock("UGARITIC");16911692/**1693* Constant for the "Deseret" Unicode character block.1694* @since 1.51695*/1696public static final UnicodeBlock DESERET =1697new UnicodeBlock("DESERET");16981699/**1700* Constant for the "Shavian" Unicode character block.1701* @since 1.51702*/1703public static final UnicodeBlock SHAVIAN =1704new UnicodeBlock("SHAVIAN");17051706/**1707* Constant for the "Osmanya" Unicode character block.1708* @since 1.51709*/1710public static final UnicodeBlock OSMANYA =1711new UnicodeBlock("OSMANYA");17121713/**1714* Constant for the "Cypriot Syllabary" Unicode character block.1715* @since 1.51716*/1717public static final UnicodeBlock CYPRIOT_SYLLABARY =1718new UnicodeBlock("CYPRIOT_SYLLABARY",1719"CYPRIOT SYLLABARY",1720"CYPRIOTSYLLABARY");17211722/**1723* Constant for the "Byzantine Musical Symbols" Unicode character block.1724* @since 1.51725*/1726public static final UnicodeBlock BYZANTINE_MUSICAL_SYMBOLS =1727new UnicodeBlock("BYZANTINE_MUSICAL_SYMBOLS",1728"BYZANTINE MUSICAL SYMBOLS",1729"BYZANTINEMUSICALSYMBOLS");17301731/**1732* Constant for the "Musical Symbols" Unicode character block.1733* @since 1.51734*/1735public static final UnicodeBlock MUSICAL_SYMBOLS =1736new UnicodeBlock("MUSICAL_SYMBOLS",1737"MUSICAL SYMBOLS",1738"MUSICALSYMBOLS");17391740/**1741* Constant for the "Tai Xuan Jing Symbols" Unicode character block.1742* @since 1.51743*/1744public static final UnicodeBlock TAI_XUAN_JING_SYMBOLS =1745new UnicodeBlock("TAI_XUAN_JING_SYMBOLS",1746"TAI XUAN JING SYMBOLS",1747"TAIXUANJINGSYMBOLS");17481749/**1750* Constant for the "Mathematical Alphanumeric Symbols" Unicode1751* character block.1752* @since 1.51753*/1754public static final UnicodeBlock MATHEMATICAL_ALPHANUMERIC_SYMBOLS =1755new UnicodeBlock("MATHEMATICAL_ALPHANUMERIC_SYMBOLS",1756"MATHEMATICAL ALPHANUMERIC SYMBOLS",1757"MATHEMATICALALPHANUMERICSYMBOLS");17581759/**1760* Constant for the "CJK Unified Ideographs Extension B" Unicode1761* character block.1762* @since 1.51763*/1764public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B =1765new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B",1766"CJK UNIFIED IDEOGRAPHS EXTENSION B",1767"CJKUNIFIEDIDEOGRAPHSEXTENSIONB");17681769/**1770* Constant for the "CJK Compatibility Ideographs Supplement" Unicode character block.1771* @since 1.51772*/1773public static final UnicodeBlock CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT =1774new UnicodeBlock("CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT",1775"CJK COMPATIBILITY IDEOGRAPHS SUPPLEMENT",1776"CJKCOMPATIBILITYIDEOGRAPHSSUPPLEMENT");17771778/**1779* Constant for the "Tags" Unicode character block.1780* @since 1.51781*/1782public static final UnicodeBlock TAGS =1783new UnicodeBlock("TAGS");17841785/**1786* Constant for the "Variation Selectors Supplement" Unicode character1787* block.1788* @since 1.51789*/1790public static final UnicodeBlock VARIATION_SELECTORS_SUPPLEMENT =1791new UnicodeBlock("VARIATION_SELECTORS_SUPPLEMENT",1792"VARIATION SELECTORS SUPPLEMENT",1793"VARIATIONSELECTORSSUPPLEMENT");17941795/**1796* Constant for the "Supplementary Private Use Area-A" Unicode character1797* block.1798* @since 1.51799*/1800public static final UnicodeBlock SUPPLEMENTARY_PRIVATE_USE_AREA_A =1801new UnicodeBlock("SUPPLEMENTARY_PRIVATE_USE_AREA_A",1802"SUPPLEMENTARY PRIVATE USE AREA-A",1803"SUPPLEMENTARYPRIVATEUSEAREA-A");18041805/**1806* Constant for the "Supplementary Private Use Area-B" Unicode character1807* block.1808* @since 1.51809*/1810public static final UnicodeBlock SUPPLEMENTARY_PRIVATE_USE_AREA_B =1811new UnicodeBlock("SUPPLEMENTARY_PRIVATE_USE_AREA_B",1812"SUPPLEMENTARY PRIVATE USE AREA-B",1813"SUPPLEMENTARYPRIVATEUSEAREA-B");18141815/**1816* Constant for the "High Surrogates" Unicode character block.1817* This block represents codepoint values in the high surrogate1818* range: U+D800 through U+DB7F1819*1820* @since 1.51821*/1822public static final UnicodeBlock HIGH_SURROGATES =1823new UnicodeBlock("HIGH_SURROGATES",1824"HIGH SURROGATES",1825"HIGHSURROGATES");18261827/**1828* Constant for the "High Private Use Surrogates" Unicode character1829* block.1830* This block represents codepoint values in the private use high1831* surrogate range: U+DB80 through U+DBFF1832*1833* @since 1.51834*/1835public static final UnicodeBlock HIGH_PRIVATE_USE_SURROGATES =1836new UnicodeBlock("HIGH_PRIVATE_USE_SURROGATES",1837"HIGH PRIVATE USE SURROGATES",1838"HIGHPRIVATEUSESURROGATES");18391840/**1841* Constant for the "Low Surrogates" Unicode character block.1842* This block represents codepoint values in the low surrogate1843* range: U+DC00 through U+DFFF1844*1845* @since 1.51846*/1847public static final UnicodeBlock LOW_SURROGATES =1848new UnicodeBlock("LOW_SURROGATES",1849"LOW SURROGATES",1850"LOWSURROGATES");18511852/**1853* Constant for the "Arabic Supplement" Unicode character block.1854* @since 1.71855*/1856public static final UnicodeBlock ARABIC_SUPPLEMENT =1857new UnicodeBlock("ARABIC_SUPPLEMENT",1858"ARABIC SUPPLEMENT",1859"ARABICSUPPLEMENT");18601861/**1862* Constant for the "NKo" Unicode character block.1863* @since 1.71864*/1865public static final UnicodeBlock NKO =1866new UnicodeBlock("NKO");18671868/**1869* Constant for the "Samaritan" Unicode character block.1870* @since 1.71871*/1872public static final UnicodeBlock SAMARITAN =1873new UnicodeBlock("SAMARITAN");18741875/**1876* Constant for the "Mandaic" Unicode character block.1877* @since 1.71878*/1879public static final UnicodeBlock MANDAIC =1880new UnicodeBlock("MANDAIC");18811882/**1883* Constant for the "Ethiopic Supplement" Unicode character block.1884* @since 1.71885*/1886public static final UnicodeBlock ETHIOPIC_SUPPLEMENT =1887new UnicodeBlock("ETHIOPIC_SUPPLEMENT",1888"ETHIOPIC SUPPLEMENT",1889"ETHIOPICSUPPLEMENT");18901891/**1892* Constant for the "Unified Canadian Aboriginal Syllabics Extended"1893* Unicode character block.1894* @since 1.71895*/1896public static final UnicodeBlock UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED =1897new UnicodeBlock("UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED",1898"UNIFIED CANADIAN ABORIGINAL SYLLABICS EXTENDED",1899"UNIFIEDCANADIANABORIGINALSYLLABICSEXTENDED");19001901/**1902* Constant for the "New Tai Lue" Unicode character block.1903* @since 1.71904*/1905public static final UnicodeBlock NEW_TAI_LUE =1906new UnicodeBlock("NEW_TAI_LUE",1907"NEW TAI LUE",1908"NEWTAILUE");19091910/**1911* Constant for the "Buginese" Unicode character block.1912* @since 1.71913*/1914public static final UnicodeBlock BUGINESE =1915new UnicodeBlock("BUGINESE");19161917/**1918* Constant for the "Tai Tham" Unicode character block.1919* @since 1.71920*/1921public static final UnicodeBlock TAI_THAM =1922new UnicodeBlock("TAI_THAM",1923"TAI THAM",1924"TAITHAM");19251926/**1927* Constant for the "Balinese" Unicode character block.1928* @since 1.71929*/1930public static final UnicodeBlock BALINESE =1931new UnicodeBlock("BALINESE");19321933/**1934* Constant for the "Sundanese" Unicode character block.1935* @since 1.71936*/1937public static final UnicodeBlock SUNDANESE =1938new UnicodeBlock("SUNDANESE");19391940/**1941* Constant for the "Batak" Unicode character block.1942* @since 1.71943*/1944public static final UnicodeBlock BATAK =1945new UnicodeBlock("BATAK");19461947/**1948* Constant for the "Lepcha" Unicode character block.1949* @since 1.71950*/1951public static final UnicodeBlock LEPCHA =1952new UnicodeBlock("LEPCHA");19531954/**1955* Constant for the "Ol Chiki" Unicode character block.1956* @since 1.71957*/1958public static final UnicodeBlock OL_CHIKI =1959new UnicodeBlock("OL_CHIKI",1960"OL CHIKI",1961"OLCHIKI");19621963/**1964* Constant for the "Vedic Extensions" Unicode character block.1965* @since 1.71966*/1967public static final UnicodeBlock VEDIC_EXTENSIONS =1968new UnicodeBlock("VEDIC_EXTENSIONS",1969"VEDIC EXTENSIONS",1970"VEDICEXTENSIONS");19711972/**1973* Constant for the "Phonetic Extensions Supplement" Unicode character1974* block.1975* @since 1.71976*/1977public static final UnicodeBlock PHONETIC_EXTENSIONS_SUPPLEMENT =1978new UnicodeBlock("PHONETIC_EXTENSIONS_SUPPLEMENT",1979"PHONETIC EXTENSIONS SUPPLEMENT",1980"PHONETICEXTENSIONSSUPPLEMENT");19811982/**1983* Constant for the "Combining Diacritical Marks Supplement" Unicode1984* character block.1985* @since 1.71986*/1987public static final UnicodeBlock COMBINING_DIACRITICAL_MARKS_SUPPLEMENT =1988new UnicodeBlock("COMBINING_DIACRITICAL_MARKS_SUPPLEMENT",1989"COMBINING DIACRITICAL MARKS SUPPLEMENT",1990"COMBININGDIACRITICALMARKSSUPPLEMENT");19911992/**1993* Constant for the "Glagolitic" Unicode character block.1994* @since 1.71995*/1996public static final UnicodeBlock GLAGOLITIC =1997new UnicodeBlock("GLAGOLITIC");19981999/**2000* Constant for the "Latin Extended-C" Unicode character block.2001* @since 1.72002*/2003public static final UnicodeBlock LATIN_EXTENDED_C =2004new UnicodeBlock("LATIN_EXTENDED_C",2005"LATIN EXTENDED-C",2006"LATINEXTENDED-C");20072008/**2009* Constant for the "Coptic" Unicode character block.2010* @since 1.72011*/2012public static final UnicodeBlock COPTIC =2013new UnicodeBlock("COPTIC");20142015/**2016* Constant for the "Georgian Supplement" Unicode character block.2017* @since 1.72018*/2019public static final UnicodeBlock GEORGIAN_SUPPLEMENT =2020new UnicodeBlock("GEORGIAN_SUPPLEMENT",2021"GEORGIAN SUPPLEMENT",2022"GEORGIANSUPPLEMENT");20232024/**2025* Constant for the "Tifinagh" Unicode character block.2026* @since 1.72027*/2028public static final UnicodeBlock TIFINAGH =2029new UnicodeBlock("TIFINAGH");20302031/**2032* Constant for the "Ethiopic Extended" Unicode character block.2033* @since 1.72034*/2035public static final UnicodeBlock ETHIOPIC_EXTENDED =2036new UnicodeBlock("ETHIOPIC_EXTENDED",2037"ETHIOPIC EXTENDED",2038"ETHIOPICEXTENDED");20392040/**2041* Constant for the "Cyrillic Extended-A" Unicode character block.2042* @since 1.72043*/2044public static final UnicodeBlock CYRILLIC_EXTENDED_A =2045new UnicodeBlock("CYRILLIC_EXTENDED_A",2046"CYRILLIC EXTENDED-A",2047"CYRILLICEXTENDED-A");20482049/**2050* Constant for the "Supplemental Punctuation" Unicode character block.2051* @since 1.72052*/2053public static final UnicodeBlock SUPPLEMENTAL_PUNCTUATION =2054new UnicodeBlock("SUPPLEMENTAL_PUNCTUATION",2055"SUPPLEMENTAL PUNCTUATION",2056"SUPPLEMENTALPUNCTUATION");20572058/**2059* Constant for the "CJK Strokes" Unicode character block.2060* @since 1.72061*/2062public static final UnicodeBlock CJK_STROKES =2063new UnicodeBlock("CJK_STROKES",2064"CJK STROKES",2065"CJKSTROKES");20662067/**2068* Constant for the "Lisu" Unicode character block.2069* @since 1.72070*/2071public static final UnicodeBlock LISU =2072new UnicodeBlock("LISU");20732074/**2075* Constant for the "Vai" Unicode character block.2076* @since 1.72077*/2078public static final UnicodeBlock VAI =2079new UnicodeBlock("VAI");20802081/**2082* Constant for the "Cyrillic Extended-B" Unicode character block.2083* @since 1.72084*/2085public static final UnicodeBlock CYRILLIC_EXTENDED_B =2086new UnicodeBlock("CYRILLIC_EXTENDED_B",2087"CYRILLIC EXTENDED-B",2088"CYRILLICEXTENDED-B");20892090/**2091* Constant for the "Bamum" Unicode character block.2092* @since 1.72093*/2094public static final UnicodeBlock BAMUM =2095new UnicodeBlock("BAMUM");20962097/**2098* Constant for the "Modifier Tone Letters" Unicode character block.2099* @since 1.72100*/2101public static final UnicodeBlock MODIFIER_TONE_LETTERS =2102new UnicodeBlock("MODIFIER_TONE_LETTERS",2103"MODIFIER TONE LETTERS",2104"MODIFIERTONELETTERS");21052106/**2107* Constant for the "Latin Extended-D" Unicode character block.2108* @since 1.72109*/2110public static final UnicodeBlock LATIN_EXTENDED_D =2111new UnicodeBlock("LATIN_EXTENDED_D",2112"LATIN EXTENDED-D",2113"LATINEXTENDED-D");21142115/**2116* Constant for the "Syloti Nagri" Unicode character block.2117* @since 1.72118*/2119public static final UnicodeBlock SYLOTI_NAGRI =2120new UnicodeBlock("SYLOTI_NAGRI",2121"SYLOTI NAGRI",2122"SYLOTINAGRI");21232124/**2125* Constant for the "Common Indic Number Forms" Unicode character block.2126* @since 1.72127*/2128public static final UnicodeBlock COMMON_INDIC_NUMBER_FORMS =2129new UnicodeBlock("COMMON_INDIC_NUMBER_FORMS",2130"COMMON INDIC NUMBER FORMS",2131"COMMONINDICNUMBERFORMS");21322133/**2134* Constant for the "Phags-pa" Unicode character block.2135* @since 1.72136*/2137public static final UnicodeBlock PHAGS_PA =2138new UnicodeBlock("PHAGS_PA",2139"PHAGS-PA");21402141/**2142* Constant for the "Saurashtra" Unicode character block.2143* @since 1.72144*/2145public static final UnicodeBlock SAURASHTRA =2146new UnicodeBlock("SAURASHTRA");21472148/**2149* Constant for the "Devanagari Extended" Unicode character block.2150* @since 1.72151*/2152public static final UnicodeBlock DEVANAGARI_EXTENDED =2153new UnicodeBlock("DEVANAGARI_EXTENDED",2154"DEVANAGARI EXTENDED",2155"DEVANAGARIEXTENDED");21562157/**2158* Constant for the "Kayah Li" Unicode character block.2159* @since 1.72160*/2161public static final UnicodeBlock KAYAH_LI =2162new UnicodeBlock("KAYAH_LI",2163"KAYAH LI",2164"KAYAHLI");21652166/**2167* Constant for the "Rejang" Unicode character block.2168* @since 1.72169*/2170public static final UnicodeBlock REJANG =2171new UnicodeBlock("REJANG");21722173/**2174* Constant for the "Hangul Jamo Extended-A" Unicode character block.2175* @since 1.72176*/2177public static final UnicodeBlock HANGUL_JAMO_EXTENDED_A =2178new UnicodeBlock("HANGUL_JAMO_EXTENDED_A",2179"HANGUL JAMO EXTENDED-A",2180"HANGULJAMOEXTENDED-A");21812182/**2183* Constant for the "Javanese" Unicode character block.2184* @since 1.72185*/2186public static final UnicodeBlock JAVANESE =2187new UnicodeBlock("JAVANESE");21882189/**2190* Constant for the "Cham" Unicode character block.2191* @since 1.72192*/2193public static final UnicodeBlock CHAM =2194new UnicodeBlock("CHAM");21952196/**2197* Constant for the "Myanmar Extended-A" Unicode character block.2198* @since 1.72199*/2200public static final UnicodeBlock MYANMAR_EXTENDED_A =2201new UnicodeBlock("MYANMAR_EXTENDED_A",2202"MYANMAR EXTENDED-A",2203"MYANMAREXTENDED-A");22042205/**2206* Constant for the "Tai Viet" Unicode character block.2207* @since 1.72208*/2209public static final UnicodeBlock TAI_VIET =2210new UnicodeBlock("TAI_VIET",2211"TAI VIET",2212"TAIVIET");22132214/**2215* Constant for the "Ethiopic Extended-A" Unicode character block.2216* @since 1.72217*/2218public static final UnicodeBlock ETHIOPIC_EXTENDED_A =2219new UnicodeBlock("ETHIOPIC_EXTENDED_A",2220"ETHIOPIC EXTENDED-A",2221"ETHIOPICEXTENDED-A");22222223/**2224* Constant for the "Meetei Mayek" Unicode character block.2225* @since 1.72226*/2227public static final UnicodeBlock MEETEI_MAYEK =2228new UnicodeBlock("MEETEI_MAYEK",2229"MEETEI MAYEK",2230"MEETEIMAYEK");22312232/**2233* Constant for the "Hangul Jamo Extended-B" Unicode character block.2234* @since 1.72235*/2236public static final UnicodeBlock HANGUL_JAMO_EXTENDED_B =2237new UnicodeBlock("HANGUL_JAMO_EXTENDED_B",2238"HANGUL JAMO EXTENDED-B",2239"HANGULJAMOEXTENDED-B");22402241/**2242* Constant for the "Vertical Forms" Unicode character block.2243* @since 1.72244*/2245public static final UnicodeBlock VERTICAL_FORMS =2246new UnicodeBlock("VERTICAL_FORMS",2247"VERTICAL FORMS",2248"VERTICALFORMS");22492250/**2251* Constant for the "Ancient Greek Numbers" Unicode character block.2252* @since 1.72253*/2254public static final UnicodeBlock ANCIENT_GREEK_NUMBERS =2255new UnicodeBlock("ANCIENT_GREEK_NUMBERS",2256"ANCIENT GREEK NUMBERS",2257"ANCIENTGREEKNUMBERS");22582259/**2260* Constant for the "Ancient Symbols" Unicode character block.2261* @since 1.72262*/2263public static final UnicodeBlock ANCIENT_SYMBOLS =2264new UnicodeBlock("ANCIENT_SYMBOLS",2265"ANCIENT SYMBOLS",2266"ANCIENTSYMBOLS");22672268/**2269* Constant for the "Phaistos Disc" Unicode character block.2270* @since 1.72271*/2272public static final UnicodeBlock PHAISTOS_DISC =2273new UnicodeBlock("PHAISTOS_DISC",2274"PHAISTOS DISC",2275"PHAISTOSDISC");22762277/**2278* Constant for the "Lycian" Unicode character block.2279* @since 1.72280*/2281public static final UnicodeBlock LYCIAN =2282new UnicodeBlock("LYCIAN");22832284/**2285* Constant for the "Carian" Unicode character block.2286* @since 1.72287*/2288public static final UnicodeBlock CARIAN =2289new UnicodeBlock("CARIAN");22902291/**2292* Constant for the "Old Persian" Unicode character block.2293* @since 1.72294*/2295public static final UnicodeBlock OLD_PERSIAN =2296new UnicodeBlock("OLD_PERSIAN",2297"OLD PERSIAN",2298"OLDPERSIAN");22992300/**2301* Constant for the "Imperial Aramaic" Unicode character block.2302* @since 1.72303*/2304public static final UnicodeBlock IMPERIAL_ARAMAIC =2305new UnicodeBlock("IMPERIAL_ARAMAIC",2306"IMPERIAL ARAMAIC",2307"IMPERIALARAMAIC");23082309/**2310* Constant for the "Phoenician" Unicode character block.2311* @since 1.72312*/2313public static final UnicodeBlock PHOENICIAN =2314new UnicodeBlock("PHOENICIAN");23152316/**2317* Constant for the "Lydian" Unicode character block.2318* @since 1.72319*/2320public static final UnicodeBlock LYDIAN =2321new UnicodeBlock("LYDIAN");23222323/**2324* Constant for the "Kharoshthi" Unicode character block.2325* @since 1.72326*/2327public static final UnicodeBlock KHAROSHTHI =2328new UnicodeBlock("KHAROSHTHI");23292330/**2331* Constant for the "Old South Arabian" Unicode character block.2332* @since 1.72333*/2334public static final UnicodeBlock OLD_SOUTH_ARABIAN =2335new UnicodeBlock("OLD_SOUTH_ARABIAN",2336"OLD SOUTH ARABIAN",2337"OLDSOUTHARABIAN");23382339/**2340* Constant for the "Avestan" Unicode character block.2341* @since 1.72342*/2343public static final UnicodeBlock AVESTAN =2344new UnicodeBlock("AVESTAN");23452346/**2347* Constant for the "Inscriptional Parthian" Unicode character block.2348* @since 1.72349*/2350public static final UnicodeBlock INSCRIPTIONAL_PARTHIAN =2351new UnicodeBlock("INSCRIPTIONAL_PARTHIAN",2352"INSCRIPTIONAL PARTHIAN",2353"INSCRIPTIONALPARTHIAN");23542355/**2356* Constant for the "Inscriptional Pahlavi" Unicode character block.2357* @since 1.72358*/2359public static final UnicodeBlock INSCRIPTIONAL_PAHLAVI =2360new UnicodeBlock("INSCRIPTIONAL_PAHLAVI",2361"INSCRIPTIONAL PAHLAVI",2362"INSCRIPTIONALPAHLAVI");23632364/**2365* Constant for the "Old Turkic" Unicode character block.2366* @since 1.72367*/2368public static final UnicodeBlock OLD_TURKIC =2369new UnicodeBlock("OLD_TURKIC",2370"OLD TURKIC",2371"OLDTURKIC");23722373/**2374* Constant for the "Rumi Numeral Symbols" Unicode character block.2375* @since 1.72376*/2377public static final UnicodeBlock RUMI_NUMERAL_SYMBOLS =2378new UnicodeBlock("RUMI_NUMERAL_SYMBOLS",2379"RUMI NUMERAL SYMBOLS",2380"RUMINUMERALSYMBOLS");23812382/**2383* Constant for the "Brahmi" Unicode character block.2384* @since 1.72385*/2386public static final UnicodeBlock BRAHMI =2387new UnicodeBlock("BRAHMI");23882389/**2390* Constant for the "Kaithi" Unicode character block.2391* @since 1.72392*/2393public static final UnicodeBlock KAITHI =2394new UnicodeBlock("KAITHI");23952396/**2397* Constant for the "Cuneiform" Unicode character block.2398* @since 1.72399*/2400public static final UnicodeBlock CUNEIFORM =2401new UnicodeBlock("CUNEIFORM");24022403/**2404* Constant for the "Cuneiform Numbers and Punctuation" Unicode2405* character block.2406* @since 1.72407*/2408public static final UnicodeBlock CUNEIFORM_NUMBERS_AND_PUNCTUATION =2409new UnicodeBlock("CUNEIFORM_NUMBERS_AND_PUNCTUATION",2410"CUNEIFORM NUMBERS AND PUNCTUATION",2411"CUNEIFORMNUMBERSANDPUNCTUATION");24122413/**2414* Constant for the "Egyptian Hieroglyphs" Unicode character block.2415* @since 1.72416*/2417public static final UnicodeBlock EGYPTIAN_HIEROGLYPHS =2418new UnicodeBlock("EGYPTIAN_HIEROGLYPHS",2419"EGYPTIAN HIEROGLYPHS",2420"EGYPTIANHIEROGLYPHS");24212422/**2423* Constant for the "Bamum Supplement" Unicode character block.2424* @since 1.72425*/2426public static final UnicodeBlock BAMUM_SUPPLEMENT =2427new UnicodeBlock("BAMUM_SUPPLEMENT",2428"BAMUM SUPPLEMENT",2429"BAMUMSUPPLEMENT");24302431/**2432* Constant for the "Kana Supplement" Unicode character block.2433* @since 1.72434*/2435public static final UnicodeBlock KANA_SUPPLEMENT =2436new UnicodeBlock("KANA_SUPPLEMENT",2437"KANA SUPPLEMENT",2438"KANASUPPLEMENT");24392440/**2441* Constant for the "Ancient Greek Musical Notation" Unicode character2442* block.2443* @since 1.72444*/2445public static final UnicodeBlock ANCIENT_GREEK_MUSICAL_NOTATION =2446new UnicodeBlock("ANCIENT_GREEK_MUSICAL_NOTATION",2447"ANCIENT GREEK MUSICAL NOTATION",2448"ANCIENTGREEKMUSICALNOTATION");24492450/**2451* Constant for the "Counting Rod Numerals" Unicode character block.2452* @since 1.72453*/2454public static final UnicodeBlock COUNTING_ROD_NUMERALS =2455new UnicodeBlock("COUNTING_ROD_NUMERALS",2456"COUNTING ROD NUMERALS",2457"COUNTINGRODNUMERALS");24582459/**2460* Constant for the "Mahjong Tiles" Unicode character block.2461* @since 1.72462*/2463public static final UnicodeBlock MAHJONG_TILES =2464new UnicodeBlock("MAHJONG_TILES",2465"MAHJONG TILES",2466"MAHJONGTILES");24672468/**2469* Constant for the "Domino Tiles" Unicode character block.2470* @since 1.72471*/2472public static final UnicodeBlock DOMINO_TILES =2473new UnicodeBlock("DOMINO_TILES",2474"DOMINO TILES",2475"DOMINOTILES");24762477/**2478* Constant for the "Playing Cards" Unicode character block.2479* @since 1.72480*/2481public static final UnicodeBlock PLAYING_CARDS =2482new UnicodeBlock("PLAYING_CARDS",2483"PLAYING CARDS",2484"PLAYINGCARDS");24852486/**2487* Constant for the "Enclosed Alphanumeric Supplement" Unicode character2488* block.2489* @since 1.72490*/2491public static final UnicodeBlock ENCLOSED_ALPHANUMERIC_SUPPLEMENT =2492new UnicodeBlock("ENCLOSED_ALPHANUMERIC_SUPPLEMENT",2493"ENCLOSED ALPHANUMERIC SUPPLEMENT",2494"ENCLOSEDALPHANUMERICSUPPLEMENT");24952496/**2497* Constant for the "Enclosed Ideographic Supplement" Unicode character2498* block.2499* @since 1.72500*/2501public static final UnicodeBlock ENCLOSED_IDEOGRAPHIC_SUPPLEMENT =2502new UnicodeBlock("ENCLOSED_IDEOGRAPHIC_SUPPLEMENT",2503"ENCLOSED IDEOGRAPHIC SUPPLEMENT",2504"ENCLOSEDIDEOGRAPHICSUPPLEMENT");25052506/**2507* Constant for the "Miscellaneous Symbols And Pictographs" Unicode2508* character block.2509* @since 1.72510*/2511public static final UnicodeBlock MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS =2512new UnicodeBlock("MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS",2513"MISCELLANEOUS SYMBOLS AND PICTOGRAPHS",2514"MISCELLANEOUSSYMBOLSANDPICTOGRAPHS");25152516/**2517* Constant for the "Emoticons" Unicode character block.2518* @since 1.72519*/2520public static final UnicodeBlock EMOTICONS =2521new UnicodeBlock("EMOTICONS");25222523/**2524* Constant for the "Transport And Map Symbols" Unicode character block.2525* @since 1.72526*/2527public static final UnicodeBlock TRANSPORT_AND_MAP_SYMBOLS =2528new UnicodeBlock("TRANSPORT_AND_MAP_SYMBOLS",2529"TRANSPORT AND MAP SYMBOLS",2530"TRANSPORTANDMAPSYMBOLS");25312532/**2533* Constant for the "Alchemical Symbols" Unicode character block.2534* @since 1.72535*/2536public static final UnicodeBlock ALCHEMICAL_SYMBOLS =2537new UnicodeBlock("ALCHEMICAL_SYMBOLS",2538"ALCHEMICAL SYMBOLS",2539"ALCHEMICALSYMBOLS");25402541/**2542* Constant for the "CJK Unified Ideographs Extension C" Unicode2543* character block.2544* @since 1.72545*/2546public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C =2547new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C",2548"CJK UNIFIED IDEOGRAPHS EXTENSION C",2549"CJKUNIFIEDIDEOGRAPHSEXTENSIONC");25502551/**2552* Constant for the "CJK Unified Ideographs Extension D" Unicode2553* character block.2554* @since 1.72555*/2556public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D =2557new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D",2558"CJK UNIFIED IDEOGRAPHS EXTENSION D",2559"CJKUNIFIEDIDEOGRAPHSEXTENSIOND");25602561/**2562* Constant for the "Arabic Extended-A" Unicode character block.2563* @since 1.82564*/2565public static final UnicodeBlock ARABIC_EXTENDED_A =2566new UnicodeBlock("ARABIC_EXTENDED_A",2567"ARABIC EXTENDED-A",2568"ARABICEXTENDED-A");25692570/**2571* Constant for the "Sundanese Supplement" Unicode character block.2572* @since 1.82573*/2574public static final UnicodeBlock SUNDANESE_SUPPLEMENT =2575new UnicodeBlock("SUNDANESE_SUPPLEMENT",2576"SUNDANESE SUPPLEMENT",2577"SUNDANESESUPPLEMENT");25782579/**2580* Constant for the "Meetei Mayek Extensions" Unicode character block.2581* @since 1.82582*/2583public static final UnicodeBlock MEETEI_MAYEK_EXTENSIONS =2584new UnicodeBlock("MEETEI_MAYEK_EXTENSIONS",2585"MEETEI MAYEK EXTENSIONS",2586"MEETEIMAYEKEXTENSIONS");25872588/**2589* Constant for the "Meroitic Hieroglyphs" Unicode character block.2590* @since 1.82591*/2592public static final UnicodeBlock MEROITIC_HIEROGLYPHS =2593new UnicodeBlock("MEROITIC_HIEROGLYPHS",2594"MEROITIC HIEROGLYPHS",2595"MEROITICHIEROGLYPHS");25962597/**2598* Constant for the "Meroitic Cursive" Unicode character block.2599* @since 1.82600*/2601public static final UnicodeBlock MEROITIC_CURSIVE =2602new UnicodeBlock("MEROITIC_CURSIVE",2603"MEROITIC CURSIVE",2604"MEROITICCURSIVE");26052606/**2607* Constant for the "Sora Sompeng" Unicode character block.2608* @since 1.82609*/2610public static final UnicodeBlock SORA_SOMPENG =2611new UnicodeBlock("SORA_SOMPENG",2612"SORA SOMPENG",2613"SORASOMPENG");26142615/**2616* Constant for the "Chakma" Unicode character block.2617* @since 1.82618*/2619public static final UnicodeBlock CHAKMA =2620new UnicodeBlock("CHAKMA");26212622/**2623* Constant for the "Sharada" Unicode character block.2624* @since 1.82625*/2626public static final UnicodeBlock SHARADA =2627new UnicodeBlock("SHARADA");26282629/**2630* Constant for the "Takri" Unicode character block.2631* @since 1.82632*/2633public static final UnicodeBlock TAKRI =2634new UnicodeBlock("TAKRI");26352636/**2637* Constant for the "Miao" Unicode character block.2638* @since 1.82639*/2640public static final UnicodeBlock MIAO =2641new UnicodeBlock("MIAO");26422643/**2644* Constant for the "Arabic Mathematical Alphabetic Symbols" Unicode2645* character block.2646* @since 1.82647*/2648public static final UnicodeBlock ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS =2649new UnicodeBlock("ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS",2650"ARABIC MATHEMATICAL ALPHABETIC SYMBOLS",2651"ARABICMATHEMATICALALPHABETICSYMBOLS");26522653/**2654* Constant for the "Combining Diacritical Marks Extended" Unicode2655* character block.2656* @since 92657*/2658public static final UnicodeBlock COMBINING_DIACRITICAL_MARKS_EXTENDED =2659new UnicodeBlock("COMBINING_DIACRITICAL_MARKS_EXTENDED",2660"COMBINING DIACRITICAL MARKS EXTENDED",2661"COMBININGDIACRITICALMARKSEXTENDED");26622663/**2664* Constant for the "Myanmar Extended-B" Unicode character block.2665* @since 92666*/2667public static final UnicodeBlock MYANMAR_EXTENDED_B =2668new UnicodeBlock("MYANMAR_EXTENDED_B",2669"MYANMAR EXTENDED-B",2670"MYANMAREXTENDED-B");26712672/**2673* Constant for the "Latin Extended-E" Unicode character block.2674* @since 92675*/2676public static final UnicodeBlock LATIN_EXTENDED_E =2677new UnicodeBlock("LATIN_EXTENDED_E",2678"LATIN EXTENDED-E",2679"LATINEXTENDED-E");26802681/**2682* Constant for the "Coptic Epact Numbers" Unicode character block.2683* @since 92684*/2685public static final UnicodeBlock COPTIC_EPACT_NUMBERS =2686new UnicodeBlock("COPTIC_EPACT_NUMBERS",2687"COPTIC EPACT NUMBERS",2688"COPTICEPACTNUMBERS");26892690/**2691* Constant for the "Old Permic" Unicode character block.2692* @since 92693*/2694public static final UnicodeBlock OLD_PERMIC =2695new UnicodeBlock("OLD_PERMIC",2696"OLD PERMIC",2697"OLDPERMIC");26982699/**2700* Constant for the "Elbasan" Unicode character block.2701* @since 92702*/2703public static final UnicodeBlock ELBASAN =2704new UnicodeBlock("ELBASAN");27052706/**2707* Constant for the "Caucasian Albanian" Unicode character block.2708* @since 92709*/2710public static final UnicodeBlock CAUCASIAN_ALBANIAN =2711new UnicodeBlock("CAUCASIAN_ALBANIAN",2712"CAUCASIAN ALBANIAN",2713"CAUCASIANALBANIAN");27142715/**2716* Constant for the "Linear A" Unicode character block.2717* @since 92718*/2719public static final UnicodeBlock LINEAR_A =2720new UnicodeBlock("LINEAR_A",2721"LINEAR A",2722"LINEARA");27232724/**2725* Constant for the "Palmyrene" Unicode character block.2726* @since 92727*/2728public static final UnicodeBlock PALMYRENE =2729new UnicodeBlock("PALMYRENE");27302731/**2732* Constant for the "Nabataean" Unicode character block.2733* @since 92734*/2735public static final UnicodeBlock NABATAEAN =2736new UnicodeBlock("NABATAEAN");27372738/**2739* Constant for the "Old North Arabian" Unicode character block.2740* @since 92741*/2742public static final UnicodeBlock OLD_NORTH_ARABIAN =2743new UnicodeBlock("OLD_NORTH_ARABIAN",2744"OLD NORTH ARABIAN",2745"OLDNORTHARABIAN");27462747/**2748* Constant for the "Manichaean" Unicode character block.2749* @since 92750*/2751public static final UnicodeBlock MANICHAEAN =2752new UnicodeBlock("MANICHAEAN");27532754/**2755* Constant for the "Psalter Pahlavi" Unicode character block.2756* @since 92757*/2758public static final UnicodeBlock PSALTER_PAHLAVI =2759new UnicodeBlock("PSALTER_PAHLAVI",2760"PSALTER PAHLAVI",2761"PSALTERPAHLAVI");27622763/**2764* Constant for the "Mahajani" Unicode character block.2765* @since 92766*/2767public static final UnicodeBlock MAHAJANI =2768new UnicodeBlock("MAHAJANI");27692770/**2771* Constant for the "Sinhala Archaic Numbers" Unicode character block.2772* @since 92773*/2774public static final UnicodeBlock SINHALA_ARCHAIC_NUMBERS =2775new UnicodeBlock("SINHALA_ARCHAIC_NUMBERS",2776"SINHALA ARCHAIC NUMBERS",2777"SINHALAARCHAICNUMBERS");27782779/**2780* Constant for the "Khojki" Unicode character block.2781* @since 92782*/2783public static final UnicodeBlock KHOJKI =2784new UnicodeBlock("KHOJKI");27852786/**2787* Constant for the "Khudawadi" Unicode character block.2788* @since 92789*/2790public static final UnicodeBlock KHUDAWADI =2791new UnicodeBlock("KHUDAWADI");27922793/**2794* Constant for the "Grantha" Unicode character block.2795* @since 92796*/2797public static final UnicodeBlock GRANTHA =2798new UnicodeBlock("GRANTHA");27992800/**2801* Constant for the "Tirhuta" Unicode character block.2802* @since 92803*/2804public static final UnicodeBlock TIRHUTA =2805new UnicodeBlock("TIRHUTA");28062807/**2808* Constant for the "Siddham" Unicode character block.2809* @since 92810*/2811public static final UnicodeBlock SIDDHAM =2812new UnicodeBlock("SIDDHAM");28132814/**2815* Constant for the "Modi" Unicode character block.2816* @since 92817*/2818public static final UnicodeBlock MODI =2819new UnicodeBlock("MODI");28202821/**2822* Constant for the "Warang Citi" Unicode character block.2823* @since 92824*/2825public static final UnicodeBlock WARANG_CITI =2826new UnicodeBlock("WARANG_CITI",2827"WARANG CITI",2828"WARANGCITI");28292830/**2831* Constant for the "Pau Cin Hau" Unicode character block.2832* @since 92833*/2834public static final UnicodeBlock PAU_CIN_HAU =2835new UnicodeBlock("PAU_CIN_HAU",2836"PAU CIN HAU",2837"PAUCINHAU");28382839/**2840* Constant for the "Mro" Unicode character block.2841* @since 92842*/2843public static final UnicodeBlock MRO =2844new UnicodeBlock("MRO");28452846/**2847* Constant for the "Bassa Vah" Unicode character block.2848* @since 92849*/2850public static final UnicodeBlock BASSA_VAH =2851new UnicodeBlock("BASSA_VAH",2852"BASSA VAH",2853"BASSAVAH");28542855/**2856* Constant for the "Pahawh Hmong" Unicode character block.2857* @since 92858*/2859public static final UnicodeBlock PAHAWH_HMONG =2860new UnicodeBlock("PAHAWH_HMONG",2861"PAHAWH HMONG",2862"PAHAWHHMONG");28632864/**2865* Constant for the "Duployan" Unicode character block.2866* @since 92867*/2868public static final UnicodeBlock DUPLOYAN =2869new UnicodeBlock("DUPLOYAN");28702871/**2872* Constant for the "Shorthand Format Controls" Unicode character block.2873* @since 92874*/2875public static final UnicodeBlock SHORTHAND_FORMAT_CONTROLS =2876new UnicodeBlock("SHORTHAND_FORMAT_CONTROLS",2877"SHORTHAND FORMAT CONTROLS",2878"SHORTHANDFORMATCONTROLS");28792880/**2881* Constant for the "Mende Kikakui" Unicode character block.2882* @since 92883*/2884public static final UnicodeBlock MENDE_KIKAKUI =2885new UnicodeBlock("MENDE_KIKAKUI",2886"MENDE KIKAKUI",2887"MENDEKIKAKUI");28882889/**2890* Constant for the "Ornamental Dingbats" Unicode character block.2891* @since 92892*/2893public static final UnicodeBlock ORNAMENTAL_DINGBATS =2894new UnicodeBlock("ORNAMENTAL_DINGBATS",2895"ORNAMENTAL DINGBATS",2896"ORNAMENTALDINGBATS");28972898/**2899* Constant for the "Geometric Shapes Extended" Unicode character block.2900* @since 92901*/2902public static final UnicodeBlock GEOMETRIC_SHAPES_EXTENDED =2903new UnicodeBlock("GEOMETRIC_SHAPES_EXTENDED",2904"GEOMETRIC SHAPES EXTENDED",2905"GEOMETRICSHAPESEXTENDED");29062907/**2908* Constant for the "Supplemental Arrows-C" Unicode character block.2909* @since 92910*/2911public static final UnicodeBlock SUPPLEMENTAL_ARROWS_C =2912new UnicodeBlock("SUPPLEMENTAL_ARROWS_C",2913"SUPPLEMENTAL ARROWS-C",2914"SUPPLEMENTALARROWS-C");29152916/**2917* Constant for the "Cherokee Supplement" Unicode character block.2918* @since 92919*/2920public static final UnicodeBlock CHEROKEE_SUPPLEMENT =2921new UnicodeBlock("CHEROKEE_SUPPLEMENT",2922"CHEROKEE SUPPLEMENT",2923"CHEROKEESUPPLEMENT");29242925/**2926* Constant for the "Hatran" Unicode character block.2927* @since 92928*/2929public static final UnicodeBlock HATRAN =2930new UnicodeBlock("HATRAN");29312932/**2933* Constant for the "Old Hungarian" Unicode character block.2934* @since 92935*/2936public static final UnicodeBlock OLD_HUNGARIAN =2937new UnicodeBlock("OLD_HUNGARIAN",2938"OLD HUNGARIAN",2939"OLDHUNGARIAN");29402941/**2942* Constant for the "Multani" Unicode character block.2943* @since 92944*/2945public static final UnicodeBlock MULTANI =2946new UnicodeBlock("MULTANI");29472948/**2949* Constant for the "Ahom" Unicode character block.2950* @since 92951*/2952public static final UnicodeBlock AHOM =2953new UnicodeBlock("AHOM");29542955/**2956* Constant for the "Early Dynastic Cuneiform" Unicode character block.2957* @since 92958*/2959public static final UnicodeBlock EARLY_DYNASTIC_CUNEIFORM =2960new UnicodeBlock("EARLY_DYNASTIC_CUNEIFORM",2961"EARLY DYNASTIC CUNEIFORM",2962"EARLYDYNASTICCUNEIFORM");29632964/**2965* Constant for the "Anatolian Hieroglyphs" Unicode character block.2966* @since 92967*/2968public static final UnicodeBlock ANATOLIAN_HIEROGLYPHS =2969new UnicodeBlock("ANATOLIAN_HIEROGLYPHS",2970"ANATOLIAN HIEROGLYPHS",2971"ANATOLIANHIEROGLYPHS");29722973/**2974* Constant for the "Sutton SignWriting" Unicode character block.2975* @since 92976*/2977public static final UnicodeBlock SUTTON_SIGNWRITING =2978new UnicodeBlock("SUTTON_SIGNWRITING",2979"SUTTON SIGNWRITING",2980"SUTTONSIGNWRITING");29812982/**2983* Constant for the "Supplemental Symbols and Pictographs" Unicode2984* character block.2985* @since 92986*/2987public static final UnicodeBlock SUPPLEMENTAL_SYMBOLS_AND_PICTOGRAPHS =2988new UnicodeBlock("SUPPLEMENTAL_SYMBOLS_AND_PICTOGRAPHS",2989"SUPPLEMENTAL SYMBOLS AND PICTOGRAPHS",2990"SUPPLEMENTALSYMBOLSANDPICTOGRAPHS");29912992/**2993* Constant for the "CJK Unified Ideographs Extension E" Unicode2994* character block.2995* @since 92996*/2997public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E =2998new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E",2999"CJK UNIFIED IDEOGRAPHS EXTENSION E",3000"CJKUNIFIEDIDEOGRAPHSEXTENSIONE");30013002/**3003* Constant for the "Syriac Supplement" Unicode3004* character block.3005* @since 113006*/3007public static final UnicodeBlock SYRIAC_SUPPLEMENT =3008new UnicodeBlock("SYRIAC_SUPPLEMENT",3009"SYRIAC SUPPLEMENT",3010"SYRIACSUPPLEMENT");30113012/**3013* Constant for the "Cyrillic Extended-C" Unicode3014* character block.3015* @since 113016*/3017public static final UnicodeBlock CYRILLIC_EXTENDED_C =3018new UnicodeBlock("CYRILLIC_EXTENDED_C",3019"CYRILLIC EXTENDED-C",3020"CYRILLICEXTENDED-C");30213022/**3023* Constant for the "Osage" Unicode3024* character block.3025* @since 113026*/3027public static final UnicodeBlock OSAGE =3028new UnicodeBlock("OSAGE");30293030/**3031* Constant for the "Newa" Unicode3032* character block.3033* @since 113034*/3035public static final UnicodeBlock NEWA =3036new UnicodeBlock("NEWA");30373038/**3039* Constant for the "Mongolian Supplement" Unicode3040* character block.3041* @since 113042*/3043public static final UnicodeBlock MONGOLIAN_SUPPLEMENT =3044new UnicodeBlock("MONGOLIAN_SUPPLEMENT",3045"MONGOLIAN SUPPLEMENT",3046"MONGOLIANSUPPLEMENT");30473048/**3049* Constant for the "Marchen" Unicode3050* character block.3051* @since 113052*/3053public static final UnicodeBlock MARCHEN =3054new UnicodeBlock("MARCHEN");30553056/**3057* Constant for the "Ideographic Symbols and Punctuation" Unicode3058* character block.3059* @since 113060*/3061public static final UnicodeBlock IDEOGRAPHIC_SYMBOLS_AND_PUNCTUATION =3062new UnicodeBlock("IDEOGRAPHIC_SYMBOLS_AND_PUNCTUATION",3063"IDEOGRAPHIC SYMBOLS AND PUNCTUATION",3064"IDEOGRAPHICSYMBOLSANDPUNCTUATION");30653066/**3067* Constant for the "Tangut" Unicode3068* character block.3069* @since 113070*/3071public static final UnicodeBlock TANGUT =3072new UnicodeBlock("TANGUT");30733074/**3075* Constant for the "Tangut Components" Unicode3076* character block.3077* @since 113078*/3079public static final UnicodeBlock TANGUT_COMPONENTS =3080new UnicodeBlock("TANGUT_COMPONENTS",3081"TANGUT COMPONENTS",3082"TANGUTCOMPONENTS");30833084/**3085* Constant for the "Kana Extended-A" Unicode3086* character block.3087* @since 113088*/3089public static final UnicodeBlock KANA_EXTENDED_A =3090new UnicodeBlock("KANA_EXTENDED_A",3091"KANA EXTENDED-A",3092"KANAEXTENDED-A");3093/**3094* Constant for the "Glagolitic Supplement" Unicode3095* character block.3096* @since 113097*/3098public static final UnicodeBlock GLAGOLITIC_SUPPLEMENT =3099new UnicodeBlock("GLAGOLITIC_SUPPLEMENT",3100"GLAGOLITIC SUPPLEMENT",3101"GLAGOLITICSUPPLEMENT");3102/**3103* Constant for the "Adlam" Unicode3104* character block.3105* @since 113106*/3107public static final UnicodeBlock ADLAM =3108new UnicodeBlock("ADLAM");31093110/**3111* Constant for the "Masaram Gondi" Unicode3112* character block.3113* @since 113114*/3115public static final UnicodeBlock MASARAM_GONDI =3116new UnicodeBlock("MASARAM_GONDI",3117"MASARAM GONDI",3118"MASARAMGONDI");31193120/**3121* Constant for the "Zanabazar Square" Unicode3122* character block.3123* @since 113124*/3125public static final UnicodeBlock ZANABAZAR_SQUARE =3126new UnicodeBlock("ZANABAZAR_SQUARE",3127"ZANABAZAR SQUARE",3128"ZANABAZARSQUARE");31293130/**3131* Constant for the "Nushu" Unicode3132* character block.3133* @since 113134*/3135public static final UnicodeBlock NUSHU =3136new UnicodeBlock("NUSHU");31373138/**3139* Constant for the "Soyombo" Unicode3140* character block.3141* @since 113142*/3143public static final UnicodeBlock SOYOMBO =3144new UnicodeBlock("SOYOMBO");31453146/**3147* Constant for the "Bhaiksuki" Unicode3148* character block.3149* @since 113150*/3151public static final UnicodeBlock BHAIKSUKI =3152new UnicodeBlock("BHAIKSUKI");31533154/**3155* Constant for the "CJK Unified Ideographs Extension F" Unicode3156* character block.3157* @since 113158*/3159public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_F =3160new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS_EXTENSION_F",3161"CJK UNIFIED IDEOGRAPHS EXTENSION F",3162"CJKUNIFIEDIDEOGRAPHSEXTENSIONF");3163/**3164* Constant for the "Georgian Extended" Unicode3165* character block.3166* @since 123167*/3168public static final UnicodeBlock GEORGIAN_EXTENDED =3169new UnicodeBlock("GEORGIAN_EXTENDED",3170"GEORGIAN EXTENDED",3171"GEORGIANEXTENDED");31723173/**3174* Constant for the "Hanifi Rohingya" Unicode3175* character block.3176* @since 123177*/3178public static final UnicodeBlock HANIFI_ROHINGYA =3179new UnicodeBlock("HANIFI_ROHINGYA",3180"HANIFI ROHINGYA",3181"HANIFIROHINGYA");31823183/**3184* Constant for the "Old Sogdian" Unicode3185* character block.3186* @since 123187*/3188public static final UnicodeBlock OLD_SOGDIAN =3189new UnicodeBlock("OLD_SOGDIAN",3190"OLD SOGDIAN",3191"OLDSOGDIAN");31923193/**3194* Constant for the "Sogdian" Unicode3195* character block.3196* @since 123197*/3198public static final UnicodeBlock SOGDIAN =3199new UnicodeBlock("SOGDIAN");32003201/**3202* Constant for the "Dogra" Unicode3203* character block.3204* @since 123205*/3206public static final UnicodeBlock DOGRA =3207new UnicodeBlock("DOGRA");32083209/**3210* Constant for the "Gunjala Gondi" Unicode3211* character block.3212* @since 123213*/3214public static final UnicodeBlock GUNJALA_GONDI =3215new UnicodeBlock("GUNJALA_GONDI",3216"GUNJALA GONDI",3217"GUNJALAGONDI");32183219/**3220* Constant for the "Makasar" Unicode3221* character block.3222* @since 123223*/3224public static final UnicodeBlock MAKASAR =3225new UnicodeBlock("MAKASAR");32263227/**3228* Constant for the "Medefaidrin" Unicode3229* character block.3230* @since 123231*/3232public static final UnicodeBlock MEDEFAIDRIN =3233new UnicodeBlock("MEDEFAIDRIN");32343235/**3236* Constant for the "Mayan Numerals" Unicode3237* character block.3238* @since 123239*/3240public static final UnicodeBlock MAYAN_NUMERALS =3241new UnicodeBlock("MAYAN_NUMERALS",3242"MAYAN NUMERALS",3243"MAYANNUMERALS");32443245/**3246* Constant for the "Indic Siyaq Numbers" Unicode3247* character block.3248* @since 123249*/3250public static final UnicodeBlock INDIC_SIYAQ_NUMBERS =3251new UnicodeBlock("INDIC_SIYAQ_NUMBERS",3252"INDIC SIYAQ NUMBERS",3253"INDICSIYAQNUMBERS");32543255/**3256* Constant for the "Chess Symbols" Unicode3257* character block.3258* @since 123259*/3260public static final UnicodeBlock CHESS_SYMBOLS =3261new UnicodeBlock("CHESS_SYMBOLS",3262"CHESS SYMBOLS",3263"CHESSSYMBOLS");32643265/**3266* Constant for the "Elymaic" Unicode3267* character block.3268* @since 133269*/3270public static final UnicodeBlock ELYMAIC =3271new UnicodeBlock("ELYMAIC");32723273/**3274* Constant for the "Nandinagari" Unicode3275* character block.3276* @since 133277*/3278public static final UnicodeBlock NANDINAGARI =3279new UnicodeBlock("NANDINAGARI");32803281/**3282* Constant for the "Tamil Supplement" Unicode3283* character block.3284* @since 133285*/3286public static final UnicodeBlock TAMIL_SUPPLEMENT =3287new UnicodeBlock("TAMIL_SUPPLEMENT",3288"TAMIL SUPPLEMENT",3289"TAMILSUPPLEMENT");32903291/**3292* Constant for the "Egyptian Hieroglyph Format Controls" Unicode3293* character block.3294* @since 133295*/3296public static final UnicodeBlock EGYPTIAN_HIEROGLYPH_FORMAT_CONTROLS =3297new UnicodeBlock("EGYPTIAN_HIEROGLYPH_FORMAT_CONTROLS",3298"EGYPTIAN HIEROGLYPH FORMAT CONTROLS",3299"EGYPTIANHIEROGLYPHFORMATCONTROLS");33003301/**3302* Constant for the "Small Kana Extension" Unicode3303* character block.3304* @since 133305*/3306public static final UnicodeBlock SMALL_KANA_EXTENSION =3307new UnicodeBlock("SMALL_KANA_EXTENSION",3308"SMALL KANA EXTENSION",3309"SMALLKANAEXTENSION");33103311/**3312* Constant for the "Nyiakeng Puachue Hmong" Unicode3313* character block.3314* @since 133315*/3316public static final UnicodeBlock NYIAKENG_PUACHUE_HMONG =3317new UnicodeBlock("NYIAKENG_PUACHUE_HMONG",3318"NYIAKENG PUACHUE HMONG",3319"NYIAKENGPUACHUEHMONG");33203321/**3322* Constant for the "Wancho" Unicode3323* character block.3324* @since 133325*/3326public static final UnicodeBlock WANCHO =3327new UnicodeBlock("WANCHO");33283329/**3330* Constant for the "Ottoman Siyaq Numbers" Unicode3331* character block.3332* @since 133333*/3334public static final UnicodeBlock OTTOMAN_SIYAQ_NUMBERS =3335new UnicodeBlock("OTTOMAN_SIYAQ_NUMBERS",3336"OTTOMAN SIYAQ NUMBERS",3337"OTTOMANSIYAQNUMBERS");33383339/**3340* Constant for the "Symbols and Pictographs Extended-A" Unicode3341* character block.3342* @since 133343*/3344public static final UnicodeBlock SYMBOLS_AND_PICTOGRAPHS_EXTENDED_A =3345new UnicodeBlock("SYMBOLS_AND_PICTOGRAPHS_EXTENDED_A",3346"SYMBOLS AND PICTOGRAPHS EXTENDED-A",3347"SYMBOLSANDPICTOGRAPHSEXTENDED-A");33483349/**3350* Constant for the "Yezidi" Unicode3351* character block.3352* @since 153353*/3354public static final UnicodeBlock YEZIDI =3355new UnicodeBlock("YEZIDI");33563357/**3358* Constant for the "Chorasmian" Unicode3359* character block.3360* @since 153361*/3362public static final UnicodeBlock CHORASMIAN =3363new UnicodeBlock("CHORASMIAN");33643365/**3366* Constant for the "Dives Akuru" Unicode3367* character block.3368* @since 153369*/3370public static final UnicodeBlock DIVES_AKURU =3371new UnicodeBlock("DIVES_AKURU",3372"DIVES AKURU",3373"DIVESAKURU");33743375/**3376* Constant for the "Lisu Supplement" Unicode3377* character block.3378* @since 153379*/3380public static final UnicodeBlock LISU_SUPPLEMENT =3381new UnicodeBlock("LISU_SUPPLEMENT",3382"LISU SUPPLEMENT",3383"LISUSUPPLEMENT");33843385/**3386* Constant for the "Khitan Small Script" Unicode3387* character block.3388* @since 153389*/3390public static final UnicodeBlock KHITAN_SMALL_SCRIPT =3391new UnicodeBlock("KHITAN_SMALL_SCRIPT",3392"KHITAN SMALL SCRIPT",3393"KHITANSMALLSCRIPT");33943395/**3396* Constant for the "Tangut Supplement" Unicode3397* character block.3398* @since 153399*/3400public static final UnicodeBlock TANGUT_SUPPLEMENT =3401new UnicodeBlock("TANGUT_SUPPLEMENT",3402"TANGUT SUPPLEMENT",3403"TANGUTSUPPLEMENT");34043405/**3406* Constant for the "Symbols for Legacy Computing" Unicode3407* character block.3408* @since 153409*/3410public static final UnicodeBlock SYMBOLS_FOR_LEGACY_COMPUTING =3411new UnicodeBlock("SYMBOLS_FOR_LEGACY_COMPUTING",3412"SYMBOLS FOR LEGACY COMPUTING",3413"SYMBOLSFORLEGACYCOMPUTING");34143415/**3416* Constant for the "CJK Unified Ideographs Extension G" Unicode3417* character block.3418* @since 153419*/3420public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_G =3421new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS_EXTENSION_G",3422"CJK UNIFIED IDEOGRAPHS EXTENSION G",3423"CJKUNIFIEDIDEOGRAPHSEXTENSIONG");34243425private static final int[] blockStarts = {34260x0000, // 0000..007F; Basic Latin34270x0080, // 0080..00FF; Latin-1 Supplement34280x0100, // 0100..017F; Latin Extended-A34290x0180, // 0180..024F; Latin Extended-B34300x0250, // 0250..02AF; IPA Extensions34310x02B0, // 02B0..02FF; Spacing Modifier Letters34320x0300, // 0300..036F; Combining Diacritical Marks34330x0370, // 0370..03FF; Greek and Coptic34340x0400, // 0400..04FF; Cyrillic34350x0500, // 0500..052F; Cyrillic Supplement34360x0530, // 0530..058F; Armenian34370x0590, // 0590..05FF; Hebrew34380x0600, // 0600..06FF; Arabic34390x0700, // 0700..074F; Syriac34400x0750, // 0750..077F; Arabic Supplement34410x0780, // 0780..07BF; Thaana34420x07C0, // 07C0..07FF; NKo34430x0800, // 0800..083F; Samaritan34440x0840, // 0840..085F; Mandaic34450x0860, // 0860..086F; Syriac Supplement34460x0870, // unassigned34470x08A0, // 08A0..08FF; Arabic Extended-A34480x0900, // 0900..097F; Devanagari34490x0980, // 0980..09FF; Bengali34500x0A00, // 0A00..0A7F; Gurmukhi34510x0A80, // 0A80..0AFF; Gujarati34520x0B00, // 0B00..0B7F; Oriya34530x0B80, // 0B80..0BFF; Tamil34540x0C00, // 0C00..0C7F; Telugu34550x0C80, // 0C80..0CFF; Kannada34560x0D00, // 0D00..0D7F; Malayalam34570x0D80, // 0D80..0DFF; Sinhala34580x0E00, // 0E00..0E7F; Thai34590x0E80, // 0E80..0EFF; Lao34600x0F00, // 0F00..0FFF; Tibetan34610x1000, // 1000..109F; Myanmar34620x10A0, // 10A0..10FF; Georgian34630x1100, // 1100..11FF; Hangul Jamo34640x1200, // 1200..137F; Ethiopic34650x1380, // 1380..139F; Ethiopic Supplement34660x13A0, // 13A0..13FF; Cherokee34670x1400, // 1400..167F; Unified Canadian Aboriginal Syllabics34680x1680, // 1680..169F; Ogham34690x16A0, // 16A0..16FF; Runic34700x1700, // 1700..171F; Tagalog34710x1720, // 1720..173F; Hanunoo34720x1740, // 1740..175F; Buhid34730x1760, // 1760..177F; Tagbanwa34740x1780, // 1780..17FF; Khmer34750x1800, // 1800..18AF; Mongolian34760x18B0, // 18B0..18FF; Unified Canadian Aboriginal Syllabics Extended34770x1900, // 1900..194F; Limbu34780x1950, // 1950..197F; Tai Le34790x1980, // 1980..19DF; New Tai Lue34800x19E0, // 19E0..19FF; Khmer Symbols34810x1A00, // 1A00..1A1F; Buginese34820x1A20, // 1A20..1AAF; Tai Tham34830x1AB0, // 1AB0..1AFF; Combining Diacritical Marks Extended34840x1B00, // 1B00..1B7F; Balinese34850x1B80, // 1B80..1BBF; Sundanese34860x1BC0, // 1BC0..1BFF; Batak34870x1C00, // 1C00..1C4F; Lepcha34880x1C50, // 1C50..1C7F; Ol Chiki34890x1C80, // 1C80..1C8F; Cyrillic Extended-C34900x1C90, // 1C90..1CBF; Georgian Extended34910x1CC0, // 1CC0..1CCF; Sundanese Supplement34920x1CD0, // 1CD0..1CFF; Vedic Extensions34930x1D00, // 1D00..1D7F; Phonetic Extensions34940x1D80, // 1D80..1DBF; Phonetic Extensions Supplement34950x1DC0, // 1DC0..1DFF; Combining Diacritical Marks Supplement34960x1E00, // 1E00..1EFF; Latin Extended Additional34970x1F00, // 1F00..1FFF; Greek Extended34980x2000, // 2000..206F; General Punctuation34990x2070, // 2070..209F; Superscripts and Subscripts35000x20A0, // 20A0..20CF; Currency Symbols35010x20D0, // 20D0..20FF; Combining Diacritical Marks for Symbols35020x2100, // 2100..214F; Letterlike Symbols35030x2150, // 2150..218F; Number Forms35040x2190, // 2190..21FF; Arrows35050x2200, // 2200..22FF; Mathematical Operators35060x2300, // 2300..23FF; Miscellaneous Technical35070x2400, // 2400..243F; Control Pictures35080x2440, // 2440..245F; Optical Character Recognition35090x2460, // 2460..24FF; Enclosed Alphanumerics35100x2500, // 2500..257F; Box Drawing35110x2580, // 2580..259F; Block Elements35120x25A0, // 25A0..25FF; Geometric Shapes35130x2600, // 2600..26FF; Miscellaneous Symbols35140x2700, // 2700..27BF; Dingbats35150x27C0, // 27C0..27EF; Miscellaneous Mathematical Symbols-A35160x27F0, // 27F0..27FF; Supplemental Arrows-A35170x2800, // 2800..28FF; Braille Patterns35180x2900, // 2900..297F; Supplemental Arrows-B35190x2980, // 2980..29FF; Miscellaneous Mathematical Symbols-B35200x2A00, // 2A00..2AFF; Supplemental Mathematical Operators35210x2B00, // 2B00..2BFF; Miscellaneous Symbols and Arrows35220x2C00, // 2C00..2C5F; Glagolitic35230x2C60, // 2C60..2C7F; Latin Extended-C35240x2C80, // 2C80..2CFF; Coptic35250x2D00, // 2D00..2D2F; Georgian Supplement35260x2D30, // 2D30..2D7F; Tifinagh35270x2D80, // 2D80..2DDF; Ethiopic Extended35280x2DE0, // 2DE0..2DFF; Cyrillic Extended-A35290x2E00, // 2E00..2E7F; Supplemental Punctuation35300x2E80, // 2E80..2EFF; CJK Radicals Supplement35310x2F00, // 2F00..2FDF; Kangxi Radicals35320x2FE0, // unassigned35330x2FF0, // 2FF0..2FFF; Ideographic Description Characters35340x3000, // 3000..303F; CJK Symbols and Punctuation35350x3040, // 3040..309F; Hiragana35360x30A0, // 30A0..30FF; Katakana35370x3100, // 3100..312F; Bopomofo35380x3130, // 3130..318F; Hangul Compatibility Jamo35390x3190, // 3190..319F; Kanbun35400x31A0, // 31A0..31BF; Bopomofo Extended35410x31C0, // 31C0..31EF; CJK Strokes35420x31F0, // 31F0..31FF; Katakana Phonetic Extensions35430x3200, // 3200..32FF; Enclosed CJK Letters and Months35440x3300, // 3300..33FF; CJK Compatibility35450x3400, // 3400..4DBF; CJK Unified Ideographs Extension A35460x4DC0, // 4DC0..4DFF; Yijing Hexagram Symbols35470x4E00, // 4E00..9FFF; CJK Unified Ideographs35480xA000, // A000..A48F; Yi Syllables35490xA490, // A490..A4CF; Yi Radicals35500xA4D0, // A4D0..A4FF; Lisu35510xA500, // A500..A63F; Vai35520xA640, // A640..A69F; Cyrillic Extended-B35530xA6A0, // A6A0..A6FF; Bamum35540xA700, // A700..A71F; Modifier Tone Letters35550xA720, // A720..A7FF; Latin Extended-D35560xA800, // A800..A82F; Syloti Nagri35570xA830, // A830..A83F; Common Indic Number Forms35580xA840, // A840..A87F; Phags-pa35590xA880, // A880..A8DF; Saurashtra35600xA8E0, // A8E0..A8FF; Devanagari Extended35610xA900, // A900..A92F; Kayah Li35620xA930, // A930..A95F; Rejang35630xA960, // A960..A97F; Hangul Jamo Extended-A35640xA980, // A980..A9DF; Javanese35650xA9E0, // A9E0..A9FF; Myanmar Extended-B35660xAA00, // AA00..AA5F; Cham35670xAA60, // AA60..AA7F; Myanmar Extended-A35680xAA80, // AA80..AADF; Tai Viet35690xAAE0, // AAE0..AAFF; Meetei Mayek Extensions35700xAB00, // AB00..AB2F; Ethiopic Extended-A35710xAB30, // AB30..AB6F; Latin Extended-E35720xAB70, // AB70..ABBF; Cherokee Supplement35730xABC0, // ABC0..ABFF; Meetei Mayek35740xAC00, // AC00..D7AF; Hangul Syllables35750xD7B0, // D7B0..D7FF; Hangul Jamo Extended-B35760xD800, // D800..DB7F; High Surrogates35770xDB80, // DB80..DBFF; High Private Use Surrogates35780xDC00, // DC00..DFFF; Low Surrogates35790xE000, // E000..F8FF; Private Use Area35800xF900, // F900..FAFF; CJK Compatibility Ideographs35810xFB00, // FB00..FB4F; Alphabetic Presentation Forms35820xFB50, // FB50..FDFF; Arabic Presentation Forms-A35830xFE00, // FE00..FE0F; Variation Selectors35840xFE10, // FE10..FE1F; Vertical Forms35850xFE20, // FE20..FE2F; Combining Half Marks35860xFE30, // FE30..FE4F; CJK Compatibility Forms35870xFE50, // FE50..FE6F; Small Form Variants35880xFE70, // FE70..FEFF; Arabic Presentation Forms-B35890xFF00, // FF00..FFEF; Halfwidth and Fullwidth Forms35900xFFF0, // FFF0..FFFF; Specials35910x10000, // 10000..1007F; Linear B Syllabary35920x10080, // 10080..100FF; Linear B Ideograms35930x10100, // 10100..1013F; Aegean Numbers35940x10140, // 10140..1018F; Ancient Greek Numbers35950x10190, // 10190..101CF; Ancient Symbols35960x101D0, // 101D0..101FF; Phaistos Disc35970x10200, // unassigned35980x10280, // 10280..1029F; Lycian35990x102A0, // 102A0..102DF; Carian36000x102E0, // 102E0..102FF; Coptic Epact Numbers36010x10300, // 10300..1032F; Old Italic36020x10330, // 10330..1034F; Gothic36030x10350, // 10350..1037F; Old Permic36040x10380, // 10380..1039F; Ugaritic36050x103A0, // 103A0..103DF; Old Persian36060x103E0, // unassigned36070x10400, // 10400..1044F; Deseret36080x10450, // 10450..1047F; Shavian36090x10480, // 10480..104AF; Osmanya36100x104B0, // 104B0..104FF; Osage36110x10500, // 10500..1052F; Elbasan36120x10530, // 10530..1056F; Caucasian Albanian36130x10570, // unassigned36140x10600, // 10600..1077F; Linear A36150x10780, // unassigned36160x10800, // 10800..1083F; Cypriot Syllabary36170x10840, // 10840..1085F; Imperial Aramaic36180x10860, // 10860..1087F; Palmyrene36190x10880, // 10880..108AF; Nabataean36200x108B0, // unassigned36210x108E0, // 108E0..108FF; Hatran36220x10900, // 10900..1091F; Phoenician36230x10920, // 10920..1093F; Lydian36240x10940, // unassigned36250x10980, // 10980..1099F; Meroitic Hieroglyphs36260x109A0, // 109A0..109FF; Meroitic Cursive36270x10A00, // 10A00..10A5F; Kharoshthi36280x10A60, // 10A60..10A7F; Old South Arabian36290x10A80, // 10A80..10A9F; Old North Arabian36300x10AA0, // unassigned36310x10AC0, // 10AC0..10AFF; Manichaean36320x10B00, // 10B00..10B3F; Avestan36330x10B40, // 10B40..10B5F; Inscriptional Parthian36340x10B60, // 10B60..10B7F; Inscriptional Pahlavi36350x10B80, // 10B80..10BAF; Psalter Pahlavi36360x10BB0, // unassigned36370x10C00, // 10C00..10C4F; Old Turkic36380x10C50, // unassigned36390x10C80, // 10C80..10CFF; Old Hungarian36400x10D00, // 10D00..10D3F; Hanifi Rohingya36410x10D40, // unassigned36420x10E60, // 10E60..10E7F; Rumi Numeral Symbols36430x10E80, // 10E80..10EBF; Yezidi36440x10EC0, // unassigned36450x10F00, // 10F00..10F2F; Old Sogdian36460x10F30, // 10F30..10F6F; Sogdian36470x10F70, // unassigned36480x10FB0, // 10FB0..10FDF; Chorasmian36490x10FE0, // 10FE0..10FFF; Elymaic36500x11000, // 11000..1107F; Brahmi36510x11080, // 11080..110CF; Kaithi36520x110D0, // 110D0..110FF; Sora Sompeng36530x11100, // 11100..1114F; Chakma36540x11150, // 11150..1117F; Mahajani36550x11180, // 11180..111DF; Sharada36560x111E0, // 111E0..111FF; Sinhala Archaic Numbers36570x11200, // 11200..1124F; Khojki36580x11250, // unassigned36590x11280, // 11280..112AF; Multani36600x112B0, // 112B0..112FF; Khudawadi36610x11300, // 11300..1137F; Grantha36620x11380, // unassigned36630x11400, // 11400..1147F; Newa36640x11480, // 11480..114DF; Tirhuta36650x114E0, // unassigned36660x11580, // 11580..115FF; Siddham36670x11600, // 11600..1165F; Modi36680x11660, // 11660..1167F; Mongolian Supplement36690x11680, // 11680..116CF; Takri36700x116D0, // unassigned36710x11700, // 11700..1173F; Ahom36720x11740, // unassigned36730x11800, // 11800..1184F; Dogra36740x11850, // unassigned36750x118A0, // 118A0..118FF; Warang Citi36760x11900, // 11900..1195F; Dives Akuru36770x11960, // unassigned36780x119A0, // 119A0..119FF; Nandinagari36790x11A00, // 11A00..11A4F; Zanabazar Square36800x11A50, // 11A50..11AAF; Soyombo36810x11AB0, // unassigned36820x11AC0, // 11AC0..11AFF; Pau Cin Hau36830x11B00, // unassigned36840x11C00, // 11C00..11C6F; Bhaiksuki36850x11C70, // 11C70..11CBF; Marchen36860x11CC0, // unassigned36870x11D00, // 11D00..11D5F; Masaram Gondi36880x11D60, // 11D60..11DAF; Gunjala Gondi36890x11DB0, // unassigned36900x11EE0, // 11EE0..11EFF; Makasar36910x11F00, // unassigned36920x11FB0, // 11FB0..11FBF; Lisu Supplement36930x11FC0, // 11FC0..11FFF; Tamil Supplement36940x12000, // 12000..123FF; Cuneiform36950x12400, // 12400..1247F; Cuneiform Numbers and Punctuation36960x12480, // 12480..1254F; Early Dynastic Cuneiform36970x12550, // unassigned36980x13000, // 13000..1342F; Egyptian Hieroglyphs36990x13430, // 13430..1343F; Egyptian Hieroglyph Format Controls37000x13440, // unassigned37010x14400, // 14400..1467F; Anatolian Hieroglyphs37020x14680, // unassigned37030x16800, // 16800..16A3F; Bamum Supplement37040x16A40, // 16A40..16A6F; Mro37050x16A70, // unassigned37060x16AD0, // 16AD0..16AFF; Bassa Vah37070x16B00, // 16B00..16B8F; Pahawh Hmong37080x16B90, // unassigned37090x16E40, // 16E40..16E9F; Medefaidrin37100x16EA0, // unassigned37110x16F00, // 16F00..16F9F; Miao37120x16FA0, // unassigned37130x16FE0, // 16FE0..16FFF; Ideographic Symbols and Punctuation37140x17000, // 17000..187FF; Tangut37150x18800, // 18800..18AFF; Tangut Components37160x18B00, // 18B00..18CFF; Khitan Small Script37170x18D00, // 18D00..18D8F; Tangut Supplement37180x18D90, // unassigned37190x1B000, // 1B000..1B0FF; Kana Supplement37200x1B100, // 1B100..1B12F; Kana Extended-A37210x1B130, // 1B130..1B16F; Small Kana Extension37220x1B170, // 1B170..1B2FF; Nushu37230x1B300, // unassigned37240x1BC00, // 1BC00..1BC9F; Duployan37250x1BCA0, // 1BCA0..1BCAF; Shorthand Format Controls37260x1BCB0, // unassigned37270x1D000, // 1D000..1D0FF; Byzantine Musical Symbols37280x1D100, // 1D100..1D1FF; Musical Symbols37290x1D200, // 1D200..1D24F; Ancient Greek Musical Notation37300x1D250, // unassigned37310x1D2E0, // 1D2E0..1D2FF; Mayan Numerals37320x1D300, // 1D300..1D35F; Tai Xuan Jing Symbols37330x1D360, // 1D360..1D37F; Counting Rod Numerals37340x1D380, // unassigned37350x1D400, // 1D400..1D7FF; Mathematical Alphanumeric Symbols37360x1D800, // 1D800..1DAAF; Sutton SignWriting37370x1DAB0, // unassigned37380x1E000, // 1E000..1E02F; Glagolitic Supplement37390x1E030, // unassigned37400x1E100, // 1E100..1E14F; Nyiakeng Puachue Hmong37410x1E150, // unassigned37420x1E2C0, // 1E2C0..1E2FF; Wancho37430x1E300, // unassigned37440x1E800, // 1E800..1E8DF; Mende Kikakui37450x1E8E0, // unassigned37460x1E900, // 1E900..1E95F; Adlam37470x1E960, // unassigned37480x1EC70, // 1EC70..1ECBF; Indic Siyaq Numbers37490x1ECC0, // unassigned37500x1ED00, // 1ED00..1ED4F; Ottoman Siyaq Numbers37510x1ED50, // unassigned37520x1EE00, // 1EE00..1EEFF; Arabic Mathematical Alphabetic Symbols37530x1EF00, // unassigned37540x1F000, // 1F000..1F02F; Mahjong Tiles37550x1F030, // 1F030..1F09F; Domino Tiles37560x1F0A0, // 1F0A0..1F0FF; Playing Cards37570x1F100, // 1F100..1F1FF; Enclosed Alphanumeric Supplement37580x1F200, // 1F200..1F2FF; Enclosed Ideographic Supplement37590x1F300, // 1F300..1F5FF; Miscellaneous Symbols and Pictographs37600x1F600, // 1F600..1F64F; Emoticons37610x1F650, // 1F650..1F67F; Ornamental Dingbats37620x1F680, // 1F680..1F6FF; Transport and Map Symbols37630x1F700, // 1F700..1F77F; Alchemical Symbols37640x1F780, // 1F780..1F7FF; Geometric Shapes Extended37650x1F800, // 1F800..1F8FF; Supplemental Arrows-C37660x1F900, // 1F900..1F9FF; Supplemental Symbols and Pictographs37670x1FA00, // 1FA00..1FA6F; Chess Symbols37680x1FA70, // 1FA70..1FAFF; Symbols and Pictographs Extended-A37690x1FB00, // 1FB00..1FBFF; Symbols for Legacy Computing37700x1FC00, // unassigned37710x20000, // 20000..2A6DF; CJK Unified Ideographs Extension B37720x2A6E0, // unassigned37730x2A700, // 2A700..2B73F; CJK Unified Ideographs Extension C37740x2B740, // 2B740..2B81F; CJK Unified Ideographs Extension D37750x2B820, // 2B820..2CEAF; CJK Unified Ideographs Extension E37760x2CEB0, // 2CEB0..2EBEF; CJK Unified Ideographs Extension F37770x2EBF0, // unassigned37780x2F800, // 2F800..2FA1F; CJK Compatibility Ideographs Supplement37790x2FA20, // unassigned37800x30000, // 30000..3134F; CJK Unified Ideographs Extension G37810x31350, // unassigned37820xE0000, // E0000..E007F; Tags37830xE0080, // unassigned37840xE0100, // E0100..E01EF; Variation Selectors Supplement37850xE01F0, // unassigned37860xF0000, // F0000..FFFFF; Supplementary Private Use Area-A37870x100000, // 100000..10FFFF; Supplementary Private Use Area-B3788};37893790private static final UnicodeBlock[] blocks = {3791BASIC_LATIN,3792LATIN_1_SUPPLEMENT,3793LATIN_EXTENDED_A,3794LATIN_EXTENDED_B,3795IPA_EXTENSIONS,3796SPACING_MODIFIER_LETTERS,3797COMBINING_DIACRITICAL_MARKS,3798GREEK,3799CYRILLIC,3800CYRILLIC_SUPPLEMENTARY,3801ARMENIAN,3802HEBREW,3803ARABIC,3804SYRIAC,3805ARABIC_SUPPLEMENT,3806THAANA,3807NKO,3808SAMARITAN,3809MANDAIC,3810SYRIAC_SUPPLEMENT,3811null,3812ARABIC_EXTENDED_A,3813DEVANAGARI,3814BENGALI,3815GURMUKHI,3816GUJARATI,3817ORIYA,3818TAMIL,3819TELUGU,3820KANNADA,3821MALAYALAM,3822SINHALA,3823THAI,3824LAO,3825TIBETAN,3826MYANMAR,3827GEORGIAN,3828HANGUL_JAMO,3829ETHIOPIC,3830ETHIOPIC_SUPPLEMENT,3831CHEROKEE,3832UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS,3833OGHAM,3834RUNIC,3835TAGALOG,3836HANUNOO,3837BUHID,3838TAGBANWA,3839KHMER,3840MONGOLIAN,3841UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED,3842LIMBU,3843TAI_LE,3844NEW_TAI_LUE,3845KHMER_SYMBOLS,3846BUGINESE,3847TAI_THAM,3848COMBINING_DIACRITICAL_MARKS_EXTENDED,3849BALINESE,3850SUNDANESE,3851BATAK,3852LEPCHA,3853OL_CHIKI,3854CYRILLIC_EXTENDED_C,3855GEORGIAN_EXTENDED,3856SUNDANESE_SUPPLEMENT,3857VEDIC_EXTENSIONS,3858PHONETIC_EXTENSIONS,3859PHONETIC_EXTENSIONS_SUPPLEMENT,3860COMBINING_DIACRITICAL_MARKS_SUPPLEMENT,3861LATIN_EXTENDED_ADDITIONAL,3862GREEK_EXTENDED,3863GENERAL_PUNCTUATION,3864SUPERSCRIPTS_AND_SUBSCRIPTS,3865CURRENCY_SYMBOLS,3866COMBINING_MARKS_FOR_SYMBOLS,3867LETTERLIKE_SYMBOLS,3868NUMBER_FORMS,3869ARROWS,3870MATHEMATICAL_OPERATORS,3871MISCELLANEOUS_TECHNICAL,3872CONTROL_PICTURES,3873OPTICAL_CHARACTER_RECOGNITION,3874ENCLOSED_ALPHANUMERICS,3875BOX_DRAWING,3876BLOCK_ELEMENTS,3877GEOMETRIC_SHAPES,3878MISCELLANEOUS_SYMBOLS,3879DINGBATS,3880MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A,3881SUPPLEMENTAL_ARROWS_A,3882BRAILLE_PATTERNS,3883SUPPLEMENTAL_ARROWS_B,3884MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B,3885SUPPLEMENTAL_MATHEMATICAL_OPERATORS,3886MISCELLANEOUS_SYMBOLS_AND_ARROWS,3887GLAGOLITIC,3888LATIN_EXTENDED_C,3889COPTIC,3890GEORGIAN_SUPPLEMENT,3891TIFINAGH,3892ETHIOPIC_EXTENDED,3893CYRILLIC_EXTENDED_A,3894SUPPLEMENTAL_PUNCTUATION,3895CJK_RADICALS_SUPPLEMENT,3896KANGXI_RADICALS,3897null,3898IDEOGRAPHIC_DESCRIPTION_CHARACTERS,3899CJK_SYMBOLS_AND_PUNCTUATION,3900HIRAGANA,3901KATAKANA,3902BOPOMOFO,3903HANGUL_COMPATIBILITY_JAMO,3904KANBUN,3905BOPOMOFO_EXTENDED,3906CJK_STROKES,3907KATAKANA_PHONETIC_EXTENSIONS,3908ENCLOSED_CJK_LETTERS_AND_MONTHS,3909CJK_COMPATIBILITY,3910CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A,3911YIJING_HEXAGRAM_SYMBOLS,3912CJK_UNIFIED_IDEOGRAPHS,3913YI_SYLLABLES,3914YI_RADICALS,3915LISU,3916VAI,3917CYRILLIC_EXTENDED_B,3918BAMUM,3919MODIFIER_TONE_LETTERS,3920LATIN_EXTENDED_D,3921SYLOTI_NAGRI,3922COMMON_INDIC_NUMBER_FORMS,3923PHAGS_PA,3924SAURASHTRA,3925DEVANAGARI_EXTENDED,3926KAYAH_LI,3927REJANG,3928HANGUL_JAMO_EXTENDED_A,3929JAVANESE,3930MYANMAR_EXTENDED_B,3931CHAM,3932MYANMAR_EXTENDED_A,3933TAI_VIET,3934MEETEI_MAYEK_EXTENSIONS,3935ETHIOPIC_EXTENDED_A,3936LATIN_EXTENDED_E,3937CHEROKEE_SUPPLEMENT,3938MEETEI_MAYEK,3939HANGUL_SYLLABLES,3940HANGUL_JAMO_EXTENDED_B,3941HIGH_SURROGATES,3942HIGH_PRIVATE_USE_SURROGATES,3943LOW_SURROGATES,3944PRIVATE_USE_AREA,3945CJK_COMPATIBILITY_IDEOGRAPHS,3946ALPHABETIC_PRESENTATION_FORMS,3947ARABIC_PRESENTATION_FORMS_A,3948VARIATION_SELECTORS,3949VERTICAL_FORMS,3950COMBINING_HALF_MARKS,3951CJK_COMPATIBILITY_FORMS,3952SMALL_FORM_VARIANTS,3953ARABIC_PRESENTATION_FORMS_B,3954HALFWIDTH_AND_FULLWIDTH_FORMS,3955SPECIALS,3956LINEAR_B_SYLLABARY,3957LINEAR_B_IDEOGRAMS,3958AEGEAN_NUMBERS,3959ANCIENT_GREEK_NUMBERS,3960ANCIENT_SYMBOLS,3961PHAISTOS_DISC,3962null,3963LYCIAN,3964CARIAN,3965COPTIC_EPACT_NUMBERS,3966OLD_ITALIC,3967GOTHIC,3968OLD_PERMIC,3969UGARITIC,3970OLD_PERSIAN,3971null,3972DESERET,3973SHAVIAN,3974OSMANYA,3975OSAGE,3976ELBASAN,3977CAUCASIAN_ALBANIAN,3978null,3979LINEAR_A,3980null,3981CYPRIOT_SYLLABARY,3982IMPERIAL_ARAMAIC,3983PALMYRENE,3984NABATAEAN,3985null,3986HATRAN,3987PHOENICIAN,3988LYDIAN,3989null,3990MEROITIC_HIEROGLYPHS,3991MEROITIC_CURSIVE,3992KHAROSHTHI,3993OLD_SOUTH_ARABIAN,3994OLD_NORTH_ARABIAN,3995null,3996MANICHAEAN,3997AVESTAN,3998INSCRIPTIONAL_PARTHIAN,3999INSCRIPTIONAL_PAHLAVI,4000PSALTER_PAHLAVI,4001null,4002OLD_TURKIC,4003null,4004OLD_HUNGARIAN,4005HANIFI_ROHINGYA,4006null,4007RUMI_NUMERAL_SYMBOLS,4008YEZIDI,4009null,4010OLD_SOGDIAN,4011SOGDIAN,4012null,4013CHORASMIAN,4014ELYMAIC,4015BRAHMI,4016KAITHI,4017SORA_SOMPENG,4018CHAKMA,4019MAHAJANI,4020SHARADA,4021SINHALA_ARCHAIC_NUMBERS,4022KHOJKI,4023null,4024MULTANI,4025KHUDAWADI,4026GRANTHA,4027null,4028NEWA,4029TIRHUTA,4030null,4031SIDDHAM,4032MODI,4033MONGOLIAN_SUPPLEMENT,4034TAKRI,4035null,4036AHOM,4037null,4038DOGRA,4039null,4040WARANG_CITI,4041DIVES_AKURU,4042null,4043NANDINAGARI,4044ZANABAZAR_SQUARE,4045SOYOMBO,4046null,4047PAU_CIN_HAU,4048null,4049BHAIKSUKI,4050MARCHEN,4051null,4052MASARAM_GONDI,4053GUNJALA_GONDI,4054null,4055MAKASAR,4056null,4057LISU_SUPPLEMENT,4058TAMIL_SUPPLEMENT,4059CUNEIFORM,4060CUNEIFORM_NUMBERS_AND_PUNCTUATION,4061EARLY_DYNASTIC_CUNEIFORM,4062null,4063EGYPTIAN_HIEROGLYPHS,4064EGYPTIAN_HIEROGLYPH_FORMAT_CONTROLS,4065null,4066ANATOLIAN_HIEROGLYPHS,4067null,4068BAMUM_SUPPLEMENT,4069MRO,4070null,4071BASSA_VAH,4072PAHAWH_HMONG,4073null,4074MEDEFAIDRIN,4075null,4076MIAO,4077null,4078IDEOGRAPHIC_SYMBOLS_AND_PUNCTUATION,4079TANGUT,4080TANGUT_COMPONENTS,4081KHITAN_SMALL_SCRIPT,4082TANGUT_SUPPLEMENT,4083null,4084KANA_SUPPLEMENT,4085KANA_EXTENDED_A,4086SMALL_KANA_EXTENSION,4087NUSHU,4088null,4089DUPLOYAN,4090SHORTHAND_FORMAT_CONTROLS,4091null,4092BYZANTINE_MUSICAL_SYMBOLS,4093MUSICAL_SYMBOLS,4094ANCIENT_GREEK_MUSICAL_NOTATION,4095null,4096MAYAN_NUMERALS,4097TAI_XUAN_JING_SYMBOLS,4098COUNTING_ROD_NUMERALS,4099null,4100MATHEMATICAL_ALPHANUMERIC_SYMBOLS,4101SUTTON_SIGNWRITING,4102null,4103GLAGOLITIC_SUPPLEMENT,4104null,4105NYIAKENG_PUACHUE_HMONG,4106null,4107WANCHO,4108null,4109MENDE_KIKAKUI,4110null,4111ADLAM,4112null,4113INDIC_SIYAQ_NUMBERS,4114null,4115OTTOMAN_SIYAQ_NUMBERS,4116null,4117ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS,4118null,4119MAHJONG_TILES,4120DOMINO_TILES,4121PLAYING_CARDS,4122ENCLOSED_ALPHANUMERIC_SUPPLEMENT,4123ENCLOSED_IDEOGRAPHIC_SUPPLEMENT,4124MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS,4125EMOTICONS,4126ORNAMENTAL_DINGBATS,4127TRANSPORT_AND_MAP_SYMBOLS,4128ALCHEMICAL_SYMBOLS,4129GEOMETRIC_SHAPES_EXTENDED,4130SUPPLEMENTAL_ARROWS_C,4131SUPPLEMENTAL_SYMBOLS_AND_PICTOGRAPHS,4132CHESS_SYMBOLS,4133SYMBOLS_AND_PICTOGRAPHS_EXTENDED_A,4134SYMBOLS_FOR_LEGACY_COMPUTING,4135null,4136CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B,4137null,4138CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C,4139CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D,4140CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E,4141CJK_UNIFIED_IDEOGRAPHS_EXTENSION_F,4142null,4143CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT,4144null,4145CJK_UNIFIED_IDEOGRAPHS_EXTENSION_G,4146null,4147TAGS,4148null,4149VARIATION_SELECTORS_SUPPLEMENT,4150null,4151SUPPLEMENTARY_PRIVATE_USE_AREA_A,4152SUPPLEMENTARY_PRIVATE_USE_AREA_B,4153};415441554156/**4157* Returns the object representing the Unicode block containing the4158* given character, or {@code null} if the character is not a4159* member of a defined block.4160*4161* <p><b>Note:</b> This method cannot handle4162* <a href="Character.html#supplementary"> supplementary4163* characters</a>. To support all Unicode characters, including4164* supplementary characters, use the {@link #of(int)} method.4165*4166* @param c The character in question4167* @return The {@code UnicodeBlock} instance representing the4168* Unicode block of which this character is a member, or4169* {@code null} if the character is not a member of any4170* Unicode block4171*/4172public static UnicodeBlock of(char c) {4173return of((int)c);4174}41754176/**4177* Returns the object representing the Unicode block4178* containing the given character (Unicode code point), or4179* {@code null} if the character is not a member of a4180* defined block.4181*4182* @param codePoint the character (Unicode code point) in question.4183* @return The {@code UnicodeBlock} instance representing the4184* Unicode block of which this character is a member, or4185* {@code null} if the character is not a member of any4186* Unicode block4187* @throws IllegalArgumentException if the specified4188* {@code codePoint} is an invalid Unicode code point.4189* @see Character#isValidCodePoint(int)4190* @since 1.54191*/4192public static UnicodeBlock of(int codePoint) {4193if (!isValidCodePoint(codePoint)) {4194throw new IllegalArgumentException(4195String.format("Not a valid Unicode code point: 0x%X", codePoint));4196}41974198int top, bottom, current;4199bottom = 0;4200top = blockStarts.length;4201current = top/2;42024203// invariant: top > current >= bottom && codePoint >= unicodeBlockStarts[bottom]4204while (top - bottom > 1) {4205if (codePoint >= blockStarts[current]) {4206bottom = current;4207} else {4208top = current;4209}4210current = (top + bottom) / 2;4211}4212return blocks[current];4213}42144215/**4216* Returns the UnicodeBlock with the given name. Block4217* names are determined by The Unicode Standard. The file4218* {@code Blocks-<version>.txt} defines blocks for a particular4219* version of the standard. The {@link Character} class specifies4220* the version of the standard that it supports.4221* <p>4222* This method accepts block names in the following forms:4223* <ol>4224* <li> Canonical block names as defined by the Unicode Standard.4225* For example, the standard defines a "Basic Latin" block. Therefore, this4226* method accepts "Basic Latin" as a valid block name. The documentation of4227* each UnicodeBlock provides the canonical name.4228* <li>Canonical block names with all spaces removed. For example, "BasicLatin"4229* is a valid block name for the "Basic Latin" block.4230* <li>The text representation of each constant UnicodeBlock identifier.4231* For example, this method will return the {@link #BASIC_LATIN} block if4232* provided with the "BASIC_LATIN" name. This form replaces all spaces and4233* hyphens in the canonical name with underscores.4234* </ol>4235* Finally, character case is ignored for all of the valid block name forms.4236* For example, "BASIC_LATIN" and "basic_latin" are both valid block names.4237* The en_US locale's case mapping rules are used to provide case-insensitive4238* string comparisons for block name validation.4239* <p>4240* If the Unicode Standard changes block names, both the previous and4241* current names will be accepted.4242*4243* @param blockName A {@code UnicodeBlock} name.4244* @return The {@code UnicodeBlock} instance identified4245* by {@code blockName}4246* @throws IllegalArgumentException if {@code blockName} is an4247* invalid name4248* @throws NullPointerException if {@code blockName} is null4249* @since 1.54250*/4251public static final UnicodeBlock forName(String blockName) {4252UnicodeBlock block = map.get(blockName.toUpperCase(Locale.US));4253if (block == null) {4254throw new IllegalArgumentException("Not a valid block name: "4255+ blockName);4256}4257return block;4258}4259}426042614262/**4263* A family of character subsets representing the character scripts4264* defined in the <a href="http://www.unicode.org/reports/tr24/">4265* <i>Unicode Standard Annex #24: Script Names</i></a>. Every Unicode4266* character is assigned to a single Unicode script, either a specific4267* script, such as {@link Character.UnicodeScript#LATIN Latin}, or4268* one of the following three special values,4269* {@link Character.UnicodeScript#INHERITED Inherited},4270* {@link Character.UnicodeScript#COMMON Common} or4271* {@link Character.UnicodeScript#UNKNOWN Unknown}.4272*4273* @since 1.74274*/4275public static enum UnicodeScript {4276/**4277* Unicode script "Common".4278*/4279COMMON,42804281/**4282* Unicode script "Latin".4283*/4284LATIN,42854286/**4287* Unicode script "Greek".4288*/4289GREEK,42904291/**4292* Unicode script "Cyrillic".4293*/4294CYRILLIC,42954296/**4297* Unicode script "Armenian".4298*/4299ARMENIAN,43004301/**4302* Unicode script "Hebrew".4303*/4304HEBREW,43054306/**4307* Unicode script "Arabic".4308*/4309ARABIC,43104311/**4312* Unicode script "Syriac".4313*/4314SYRIAC,43154316/**4317* Unicode script "Thaana".4318*/4319THAANA,43204321/**4322* Unicode script "Devanagari".4323*/4324DEVANAGARI,43254326/**4327* Unicode script "Bengali".4328*/4329BENGALI,43304331/**4332* Unicode script "Gurmukhi".4333*/4334GURMUKHI,43354336/**4337* Unicode script "Gujarati".4338*/4339GUJARATI,43404341/**4342* Unicode script "Oriya".4343*/4344ORIYA,43454346/**4347* Unicode script "Tamil".4348*/4349TAMIL,43504351/**4352* Unicode script "Telugu".4353*/4354TELUGU,43554356/**4357* Unicode script "Kannada".4358*/4359KANNADA,43604361/**4362* Unicode script "Malayalam".4363*/4364MALAYALAM,43654366/**4367* Unicode script "Sinhala".4368*/4369SINHALA,43704371/**4372* Unicode script "Thai".4373*/4374THAI,43754376/**4377* Unicode script "Lao".4378*/4379LAO,43804381/**4382* Unicode script "Tibetan".4383*/4384TIBETAN,43854386/**4387* Unicode script "Myanmar".4388*/4389MYANMAR,43904391/**4392* Unicode script "Georgian".4393*/4394GEORGIAN,43954396/**4397* Unicode script "Hangul".4398*/4399HANGUL,44004401/**4402* Unicode script "Ethiopic".4403*/4404ETHIOPIC,44054406/**4407* Unicode script "Cherokee".4408*/4409CHEROKEE,44104411/**4412* Unicode script "Canadian_Aboriginal".4413*/4414CANADIAN_ABORIGINAL,44154416/**4417* Unicode script "Ogham".4418*/4419OGHAM,44204421/**4422* Unicode script "Runic".4423*/4424RUNIC,44254426/**4427* Unicode script "Khmer".4428*/4429KHMER,44304431/**4432* Unicode script "Mongolian".4433*/4434MONGOLIAN,44354436/**4437* Unicode script "Hiragana".4438*/4439HIRAGANA,44404441/**4442* Unicode script "Katakana".4443*/4444KATAKANA,44454446/**4447* Unicode script "Bopomofo".4448*/4449BOPOMOFO,44504451/**4452* Unicode script "Han".4453*/4454HAN,44554456/**4457* Unicode script "Yi".4458*/4459YI,44604461/**4462* Unicode script "Old_Italic".4463*/4464OLD_ITALIC,44654466/**4467* Unicode script "Gothic".4468*/4469GOTHIC,44704471/**4472* Unicode script "Deseret".4473*/4474DESERET,44754476/**4477* Unicode script "Inherited".4478*/4479INHERITED,44804481/**4482* Unicode script "Tagalog".4483*/4484TAGALOG,44854486/**4487* Unicode script "Hanunoo".4488*/4489HANUNOO,44904491/**4492* Unicode script "Buhid".4493*/4494BUHID,44954496/**4497* Unicode script "Tagbanwa".4498*/4499TAGBANWA,45004501/**4502* Unicode script "Limbu".4503*/4504LIMBU,45054506/**4507* Unicode script "Tai_Le".4508*/4509TAI_LE,45104511/**4512* Unicode script "Linear_B".4513*/4514LINEAR_B,45154516/**4517* Unicode script "Ugaritic".4518*/4519UGARITIC,45204521/**4522* Unicode script "Shavian".4523*/4524SHAVIAN,45254526/**4527* Unicode script "Osmanya".4528*/4529OSMANYA,45304531/**4532* Unicode script "Cypriot".4533*/4534CYPRIOT,45354536/**4537* Unicode script "Braille".4538*/4539BRAILLE,45404541/**4542* Unicode script "Buginese".4543*/4544BUGINESE,45454546/**4547* Unicode script "Coptic".4548*/4549COPTIC,45504551/**4552* Unicode script "New_Tai_Lue".4553*/4554NEW_TAI_LUE,45554556/**4557* Unicode script "Glagolitic".4558*/4559GLAGOLITIC,45604561/**4562* Unicode script "Tifinagh".4563*/4564TIFINAGH,45654566/**4567* Unicode script "Syloti_Nagri".4568*/4569SYLOTI_NAGRI,45704571/**4572* Unicode script "Old_Persian".4573*/4574OLD_PERSIAN,45754576/**4577* Unicode script "Kharoshthi".4578*/4579KHAROSHTHI,45804581/**4582* Unicode script "Balinese".4583*/4584BALINESE,45854586/**4587* Unicode script "Cuneiform".4588*/4589CUNEIFORM,45904591/**4592* Unicode script "Phoenician".4593*/4594PHOENICIAN,45954596/**4597* Unicode script "Phags_Pa".4598*/4599PHAGS_PA,46004601/**4602* Unicode script "Nko".4603*/4604NKO,46054606/**4607* Unicode script "Sundanese".4608*/4609SUNDANESE,46104611/**4612* Unicode script "Batak".4613*/4614BATAK,46154616/**4617* Unicode script "Lepcha".4618*/4619LEPCHA,46204621/**4622* Unicode script "Ol_Chiki".4623*/4624OL_CHIKI,46254626/**4627* Unicode script "Vai".4628*/4629VAI,46304631/**4632* Unicode script "Saurashtra".4633*/4634SAURASHTRA,46354636/**4637* Unicode script "Kayah_Li".4638*/4639KAYAH_LI,46404641/**4642* Unicode script "Rejang".4643*/4644REJANG,46454646/**4647* Unicode script "Lycian".4648*/4649LYCIAN,46504651/**4652* Unicode script "Carian".4653*/4654CARIAN,46554656/**4657* Unicode script "Lydian".4658*/4659LYDIAN,46604661/**4662* Unicode script "Cham".4663*/4664CHAM,46654666/**4667* Unicode script "Tai_Tham".4668*/4669TAI_THAM,46704671/**4672* Unicode script "Tai_Viet".4673*/4674TAI_VIET,46754676/**4677* Unicode script "Avestan".4678*/4679AVESTAN,46804681/**4682* Unicode script "Egyptian_Hieroglyphs".4683*/4684EGYPTIAN_HIEROGLYPHS,46854686/**4687* Unicode script "Samaritan".4688*/4689SAMARITAN,46904691/**4692* Unicode script "Mandaic".4693*/4694MANDAIC,46954696/**4697* Unicode script "Lisu".4698*/4699LISU,47004701/**4702* Unicode script "Bamum".4703*/4704BAMUM,47054706/**4707* Unicode script "Javanese".4708*/4709JAVANESE,47104711/**4712* Unicode script "Meetei_Mayek".4713*/4714MEETEI_MAYEK,47154716/**4717* Unicode script "Imperial_Aramaic".4718*/4719IMPERIAL_ARAMAIC,47204721/**4722* Unicode script "Old_South_Arabian".4723*/4724OLD_SOUTH_ARABIAN,47254726/**4727* Unicode script "Inscriptional_Parthian".4728*/4729INSCRIPTIONAL_PARTHIAN,47304731/**4732* Unicode script "Inscriptional_Pahlavi".4733*/4734INSCRIPTIONAL_PAHLAVI,47354736/**4737* Unicode script "Old_Turkic".4738*/4739OLD_TURKIC,47404741/**4742* Unicode script "Brahmi".4743*/4744BRAHMI,47454746/**4747* Unicode script "Kaithi".4748*/4749KAITHI,47504751/**4752* Unicode script "Meroitic Hieroglyphs".4753* @since 1.84754*/4755MEROITIC_HIEROGLYPHS,47564757/**4758* Unicode script "Meroitic Cursive".4759* @since 1.84760*/4761MEROITIC_CURSIVE,47624763/**4764* Unicode script "Sora Sompeng".4765* @since 1.84766*/4767SORA_SOMPENG,47684769/**4770* Unicode script "Chakma".4771* @since 1.84772*/4773CHAKMA,47744775/**4776* Unicode script "Sharada".4777* @since 1.84778*/4779SHARADA,47804781/**4782* Unicode script "Takri".4783* @since 1.84784*/4785TAKRI,47864787/**4788* Unicode script "Miao".4789* @since 1.84790*/4791MIAO,47924793/**4794* Unicode script "Caucasian Albanian".4795* @since 94796*/4797CAUCASIAN_ALBANIAN,47984799/**4800* Unicode script "Bassa Vah".4801* @since 94802*/4803BASSA_VAH,48044805/**4806* Unicode script "Duployan".4807* @since 94808*/4809DUPLOYAN,48104811/**4812* Unicode script "Elbasan".4813* @since 94814*/4815ELBASAN,48164817/**4818* Unicode script "Grantha".4819* @since 94820*/4821GRANTHA,48224823/**4824* Unicode script "Pahawh Hmong".4825* @since 94826*/4827PAHAWH_HMONG,48284829/**4830* Unicode script "Khojki".4831* @since 94832*/4833KHOJKI,48344835/**4836* Unicode script "Linear A".4837* @since 94838*/4839LINEAR_A,48404841/**4842* Unicode script "Mahajani".4843* @since 94844*/4845MAHAJANI,48464847/**4848* Unicode script "Manichaean".4849* @since 94850*/4851MANICHAEAN,48524853/**4854* Unicode script "Mende Kikakui".4855* @since 94856*/4857MENDE_KIKAKUI,48584859/**4860* Unicode script "Modi".4861* @since 94862*/4863MODI,48644865/**4866* Unicode script "Mro".4867* @since 94868*/4869MRO,48704871/**4872* Unicode script "Old North Arabian".4873* @since 94874*/4875OLD_NORTH_ARABIAN,48764877/**4878* Unicode script "Nabataean".4879* @since 94880*/4881NABATAEAN,48824883/**4884* Unicode script "Palmyrene".4885* @since 94886*/4887PALMYRENE,48884889/**4890* Unicode script "Pau Cin Hau".4891* @since 94892*/4893PAU_CIN_HAU,48944895/**4896* Unicode script "Old Permic".4897* @since 94898*/4899OLD_PERMIC,49004901/**4902* Unicode script "Psalter Pahlavi".4903* @since 94904*/4905PSALTER_PAHLAVI,49064907/**4908* Unicode script "Siddham".4909* @since 94910*/4911SIDDHAM,49124913/**4914* Unicode script "Khudawadi".4915* @since 94916*/4917KHUDAWADI,49184919/**4920* Unicode script "Tirhuta".4921* @since 94922*/4923TIRHUTA,49244925/**4926* Unicode script "Warang Citi".4927* @since 94928*/4929WARANG_CITI,49304931/**4932* Unicode script "Ahom".4933* @since 94934*/4935AHOM,49364937/**4938* Unicode script "Anatolian Hieroglyphs".4939* @since 94940*/4941ANATOLIAN_HIEROGLYPHS,49424943/**4944* Unicode script "Hatran".4945* @since 94946*/4947HATRAN,49484949/**4950* Unicode script "Multani".4951* @since 94952*/4953MULTANI,49544955/**4956* Unicode script "Old Hungarian".4957* @since 94958*/4959OLD_HUNGARIAN,49604961/**4962* Unicode script "SignWriting".4963* @since 94964*/4965SIGNWRITING,49664967/**4968* Unicode script "Adlam".4969* @since 114970*/4971ADLAM,49724973/**4974* Unicode script "Bhaiksuki".4975* @since 114976*/4977BHAIKSUKI,49784979/**4980* Unicode script "Marchen".4981* @since 114982*/4983MARCHEN,49844985/**4986* Unicode script "Newa".4987* @since 114988*/4989NEWA,49904991/**4992* Unicode script "Osage".4993* @since 114994*/4995OSAGE,49964997/**4998* Unicode script "Tangut".4999* @since 115000*/5001TANGUT,50025003/**5004* Unicode script "Masaram Gondi".5005* @since 115006*/5007MASARAM_GONDI,50085009/**5010* Unicode script "Nushu".5011* @since 115012*/5013NUSHU,50145015/**5016* Unicode script "Soyombo".5017* @since 115018*/5019SOYOMBO,50205021/**5022* Unicode script "Zanabazar Square".5023* @since 115024*/5025ZANABAZAR_SQUARE,50265027/**5028* Unicode script "Hanifi Rohingya".5029* @since 125030*/5031HANIFI_ROHINGYA,50325033/**5034* Unicode script "Old Sogdian".5035* @since 125036*/5037OLD_SOGDIAN,50385039/**5040* Unicode script "Sogdian".5041* @since 125042*/5043SOGDIAN,50445045/**5046* Unicode script "Dogra".5047* @since 125048*/5049DOGRA,50505051/**5052* Unicode script "Gunjala Gondi".5053* @since 125054*/5055GUNJALA_GONDI,50565057/**5058* Unicode script "Makasar".5059* @since 125060*/5061MAKASAR,50625063/**5064* Unicode script "Medefaidrin".5065* @since 125066*/5067MEDEFAIDRIN,50685069/**5070* Unicode script "Elymaic".5071* @since 135072*/5073ELYMAIC,50745075/**5076* Unicode script "Nandinagari".5077* @since 135078*/5079NANDINAGARI,50805081/**5082* Unicode script "Nyiakeng Puachue Hmong".5083* @since 135084*/5085NYIAKENG_PUACHUE_HMONG,50865087/**5088* Unicode script "Wancho".5089* @since 135090*/5091WANCHO,50925093/**5094* Unicode script "Yezidi".5095* @since 155096*/5097YEZIDI,50985099/**5100* Unicode script "Chorasmian".5101* @since 155102*/5103CHORASMIAN,51045105/**5106* Unicode script "Dives Akuru".5107* @since 155108*/5109DIVES_AKURU,51105111/**5112* Unicode script "Khitan Small Script".5113* @since 155114*/5115KHITAN_SMALL_SCRIPT,51165117/**5118* Unicode script "Unknown".5119*/5120UNKNOWN;51215122private static final int[] scriptStarts = {51230x0000, // 0000..0040; COMMON51240x0041, // 0041..005A; LATIN51250x005B, // 005B..0060; COMMON51260x0061, // 0061..007A; LATIN51270x007B, // 007B..00A9; COMMON51280x00AA, // 00AA ; LATIN51290x00AB, // 00AB..00B9; COMMON51300x00BA, // 00BA ; LATIN51310x00BB, // 00BB..00BF; COMMON51320x00C0, // 00C0..00D6; LATIN51330x00D7, // 00D7 ; COMMON51340x00D8, // 00D8..00F6; LATIN51350x00F7, // 00F7 ; COMMON51360x00F8, // 00F8..02B8; LATIN51370x02B9, // 02B9..02DF; COMMON51380x02E0, // 02E0..02E4; LATIN51390x02E5, // 02E5..02E9; COMMON51400x02EA, // 02EA..02EB; BOPOMOFO51410x02EC, // 02EC..02FF; COMMON51420x0300, // 0300..036F; INHERITED51430x0370, // 0370..0373; GREEK51440x0374, // 0374 ; COMMON51450x0375, // 0375..0377; GREEK51460x0378, // 0378..0379; UNKNOWN51470x037A, // 037A..037D; GREEK51480x037E, // 037E ; COMMON51490x037F, // 037F ; GREEK51500x0380, // 0380..0383; UNKNOWN51510x0384, // 0384 ; GREEK51520x0385, // 0385 ; COMMON51530x0386, // 0386 ; GREEK51540x0387, // 0387 ; COMMON51550x0388, // 0388..038A; GREEK51560x038B, // 038B ; UNKNOWN51570x038C, // 038C ; GREEK51580x038D, // 038D ; UNKNOWN51590x038E, // 038E..03A1; GREEK51600x03A2, // 03A2 ; UNKNOWN51610x03A3, // 03A3..03E1; GREEK51620x03E2, // 03E2..03EF; COPTIC51630x03F0, // 03F0..03FF; GREEK51640x0400, // 0400..0484; CYRILLIC51650x0485, // 0485..0486; INHERITED51660x0487, // 0487..052F; CYRILLIC51670x0530, // 0530 ; UNKNOWN51680x0531, // 0531..0556; ARMENIAN51690x0557, // 0557..0558; UNKNOWN51700x0559, // 0559..058A; ARMENIAN51710x058B, // 058B..058C; UNKNOWN51720x058D, // 058D..058F; ARMENIAN51730x0590, // 0590 ; UNKNOWN51740x0591, // 0591..05C7; HEBREW51750x05C8, // 05C8..05CF; UNKNOWN51760x05D0, // 05D0..05EA; HEBREW51770x05EB, // 05EB..05EE; UNKNOWN51780x05EF, // 05EF..05F4; HEBREW51790x05F5, // 05F5..05FF; UNKNOWN51800x0600, // 0600..0604; ARABIC51810x0605, // 0605 ; COMMON51820x0606, // 0606..060B; ARABIC51830x060C, // 060C ; COMMON51840x060D, // 060D..061A; ARABIC51850x061B, // 061B ; COMMON51860x061C, // 061C ; ARABIC51870x061D, // 061D ; UNKNOWN51880x061E, // 061E ; ARABIC51890x061F, // 061F ; COMMON51900x0620, // 0620..063F; ARABIC51910x0640, // 0640 ; COMMON51920x0641, // 0641..064A; ARABIC51930x064B, // 064B..0655; INHERITED51940x0656, // 0656..066F; ARABIC51950x0670, // 0670 ; INHERITED51960x0671, // 0671..06DC; ARABIC51970x06DD, // 06DD ; COMMON51980x06DE, // 06DE..06FF; ARABIC51990x0700, // 0700..070D; SYRIAC52000x070E, // 070E ; UNKNOWN52010x070F, // 070F..074A; SYRIAC52020x074B, // 074B..074C; UNKNOWN52030x074D, // 074D..074F; SYRIAC52040x0750, // 0750..077F; ARABIC52050x0780, // 0780..07B1; THAANA52060x07B2, // 07B2..07BF; UNKNOWN52070x07C0, // 07C0..07FA; NKO52080x07FB, // 07FB..07FC; UNKNOWN52090x07FD, // 07FD..07FF; NKO52100x0800, // 0800..082D; SAMARITAN52110x082E, // 082E..082F; UNKNOWN52120x0830, // 0830..083E; SAMARITAN52130x083F, // 083F ; UNKNOWN52140x0840, // 0840..085B; MANDAIC52150x085C, // 085C..085D; UNKNOWN52160x085E, // 085E ; MANDAIC52170x085F, // 085F ; UNKNOWN52180x0860, // 0860..086A; SYRIAC52190x086B, // 086B..089F; UNKNOWN52200x08A0, // 08A0..08B4; ARABIC52210x08B5, // 08B5 ; UNKNOWN52220x08B6, // 08B6..08C7; ARABIC52230x08C8, // 08C8..08D2; UNKNOWN52240x08D3, // 08D3..08E1; ARABIC52250x08E2, // 08E2 ; COMMON52260x08E3, // 08E3..08FF; ARABIC52270x0900, // 0900..0950; DEVANAGARI52280x0951, // 0951..0954; INHERITED52290x0955, // 0955..0963; DEVANAGARI52300x0964, // 0964..0965; COMMON52310x0966, // 0966..097F; DEVANAGARI52320x0980, // 0980..0983; BENGALI52330x0984, // 0984 ; UNKNOWN52340x0985, // 0985..098C; BENGALI52350x098D, // 098D..098E; UNKNOWN52360x098F, // 098F..0990; BENGALI52370x0991, // 0991..0992; UNKNOWN52380x0993, // 0993..09A8; BENGALI52390x09A9, // 09A9 ; UNKNOWN52400x09AA, // 09AA..09B0; BENGALI52410x09B1, // 09B1 ; UNKNOWN52420x09B2, // 09B2 ; BENGALI52430x09B3, // 09B3..09B5; UNKNOWN52440x09B6, // 09B6..09B9; BENGALI52450x09BA, // 09BA..09BB; UNKNOWN52460x09BC, // 09BC..09C4; BENGALI52470x09C5, // 09C5..09C6; UNKNOWN52480x09C7, // 09C7..09C8; BENGALI52490x09C9, // 09C9..09CA; UNKNOWN52500x09CB, // 09CB..09CE; BENGALI52510x09CF, // 09CF..09D6; UNKNOWN52520x09D7, // 09D7 ; BENGALI52530x09D8, // 09D8..09DB; UNKNOWN52540x09DC, // 09DC..09DD; BENGALI52550x09DE, // 09DE ; UNKNOWN52560x09DF, // 09DF..09E3; BENGALI52570x09E4, // 09E4..09E5; UNKNOWN52580x09E6, // 09E6..09FE; BENGALI52590x09FF, // 09FF..0A00; UNKNOWN52600x0A01, // 0A01..0A03; GURMUKHI52610x0A04, // 0A04 ; UNKNOWN52620x0A05, // 0A05..0A0A; GURMUKHI52630x0A0B, // 0A0B..0A0E; UNKNOWN52640x0A0F, // 0A0F..0A10; GURMUKHI52650x0A11, // 0A11..0A12; UNKNOWN52660x0A13, // 0A13..0A28; GURMUKHI52670x0A29, // 0A29 ; UNKNOWN52680x0A2A, // 0A2A..0A30; GURMUKHI52690x0A31, // 0A31 ; UNKNOWN52700x0A32, // 0A32..0A33; GURMUKHI52710x0A34, // 0A34 ; UNKNOWN52720x0A35, // 0A35..0A36; GURMUKHI52730x0A37, // 0A37 ; UNKNOWN52740x0A38, // 0A38..0A39; GURMUKHI52750x0A3A, // 0A3A..0A3B; UNKNOWN52760x0A3C, // 0A3C ; GURMUKHI52770x0A3D, // 0A3D ; UNKNOWN52780x0A3E, // 0A3E..0A42; GURMUKHI52790x0A43, // 0A43..0A46; UNKNOWN52800x0A47, // 0A47..0A48; GURMUKHI52810x0A49, // 0A49..0A4A; UNKNOWN52820x0A4B, // 0A4B..0A4D; GURMUKHI52830x0A4E, // 0A4E..0A50; UNKNOWN52840x0A51, // 0A51 ; GURMUKHI52850x0A52, // 0A52..0A58; UNKNOWN52860x0A59, // 0A59..0A5C; GURMUKHI52870x0A5D, // 0A5D ; UNKNOWN52880x0A5E, // 0A5E ; GURMUKHI52890x0A5F, // 0A5F..0A65; UNKNOWN52900x0A66, // 0A66..0A76; GURMUKHI52910x0A77, // 0A77..0A80; UNKNOWN52920x0A81, // 0A81..0A83; GUJARATI52930x0A84, // 0A84 ; UNKNOWN52940x0A85, // 0A85..0A8D; GUJARATI52950x0A8E, // 0A8E ; UNKNOWN52960x0A8F, // 0A8F..0A91; GUJARATI52970x0A92, // 0A92 ; UNKNOWN52980x0A93, // 0A93..0AA8; GUJARATI52990x0AA9, // 0AA9 ; UNKNOWN53000x0AAA, // 0AAA..0AB0; GUJARATI53010x0AB1, // 0AB1 ; UNKNOWN53020x0AB2, // 0AB2..0AB3; GUJARATI53030x0AB4, // 0AB4 ; UNKNOWN53040x0AB5, // 0AB5..0AB9; GUJARATI53050x0ABA, // 0ABA..0ABB; UNKNOWN53060x0ABC, // 0ABC..0AC5; GUJARATI53070x0AC6, // 0AC6 ; UNKNOWN53080x0AC7, // 0AC7..0AC9; GUJARATI53090x0ACA, // 0ACA ; UNKNOWN53100x0ACB, // 0ACB..0ACD; GUJARATI53110x0ACE, // 0ACE..0ACF; UNKNOWN53120x0AD0, // 0AD0 ; GUJARATI53130x0AD1, // 0AD1..0ADF; UNKNOWN53140x0AE0, // 0AE0..0AE3; GUJARATI53150x0AE4, // 0AE4..0AE5; UNKNOWN53160x0AE6, // 0AE6..0AF1; GUJARATI53170x0AF2, // 0AF2..0AF8; UNKNOWN53180x0AF9, // 0AF9..0AFF; GUJARATI53190x0B00, // 0B00 ; UNKNOWN53200x0B01, // 0B01..0B03; ORIYA53210x0B04, // 0B04 ; UNKNOWN53220x0B05, // 0B05..0B0C; ORIYA53230x0B0D, // 0B0D..0B0E; UNKNOWN53240x0B0F, // 0B0F..0B10; ORIYA53250x0B11, // 0B11..0B12; UNKNOWN53260x0B13, // 0B13..0B28; ORIYA53270x0B29, // 0B29 ; UNKNOWN53280x0B2A, // 0B2A..0B30; ORIYA53290x0B31, // 0B31 ; UNKNOWN53300x0B32, // 0B32..0B33; ORIYA53310x0B34, // 0B34 ; UNKNOWN53320x0B35, // 0B35..0B39; ORIYA53330x0B3A, // 0B3A..0B3B; UNKNOWN53340x0B3C, // 0B3C..0B44; ORIYA53350x0B45, // 0B45..0B46; UNKNOWN53360x0B47, // 0B47..0B48; ORIYA53370x0B49, // 0B49..0B4A; UNKNOWN53380x0B4B, // 0B4B..0B4D; ORIYA53390x0B4E, // 0B4E..0B54; UNKNOWN53400x0B55, // 0B55..0B57; ORIYA53410x0B58, // 0B58..0B5B; UNKNOWN53420x0B5C, // 0B5C..0B5D; ORIYA53430x0B5E, // 0B5E ; UNKNOWN53440x0B5F, // 0B5F..0B63; ORIYA53450x0B64, // 0B64..0B65; UNKNOWN53460x0B66, // 0B66..0B77; ORIYA53470x0B78, // 0B78..0B81; UNKNOWN53480x0B82, // 0B82..0B83; TAMIL53490x0B84, // 0B84 ; UNKNOWN53500x0B85, // 0B85..0B8A; TAMIL53510x0B8B, // 0B8B..0B8D; UNKNOWN53520x0B8E, // 0B8E..0B90; TAMIL53530x0B91, // 0B91 ; UNKNOWN53540x0B92, // 0B92..0B95; TAMIL53550x0B96, // 0B96..0B98; UNKNOWN53560x0B99, // 0B99..0B9A; TAMIL53570x0B9B, // 0B9B ; UNKNOWN53580x0B9C, // 0B9C ; TAMIL53590x0B9D, // 0B9D ; UNKNOWN53600x0B9E, // 0B9E..0B9F; TAMIL53610x0BA0, // 0BA0..0BA2; UNKNOWN53620x0BA3, // 0BA3..0BA4; TAMIL53630x0BA5, // 0BA5..0BA7; UNKNOWN53640x0BA8, // 0BA8..0BAA; TAMIL53650x0BAB, // 0BAB..0BAD; UNKNOWN53660x0BAE, // 0BAE..0BB9; TAMIL53670x0BBA, // 0BBA..0BBD; UNKNOWN53680x0BBE, // 0BBE..0BC2; TAMIL53690x0BC3, // 0BC3..0BC5; UNKNOWN53700x0BC6, // 0BC6..0BC8; TAMIL53710x0BC9, // 0BC9 ; UNKNOWN53720x0BCA, // 0BCA..0BCD; TAMIL53730x0BCE, // 0BCE..0BCF; UNKNOWN53740x0BD0, // 0BD0 ; TAMIL53750x0BD1, // 0BD1..0BD6; UNKNOWN53760x0BD7, // 0BD7 ; TAMIL53770x0BD8, // 0BD8..0BE5; UNKNOWN53780x0BE6, // 0BE6..0BFA; TAMIL53790x0BFB, // 0BFB..0BFF; UNKNOWN53800x0C00, // 0C00..0C0C; TELUGU53810x0C0D, // 0C0D ; UNKNOWN53820x0C0E, // 0C0E..0C10; TELUGU53830x0C11, // 0C11 ; UNKNOWN53840x0C12, // 0C12..0C28; TELUGU53850x0C29, // 0C29 ; UNKNOWN53860x0C2A, // 0C2A..0C39; TELUGU53870x0C3A, // 0C3A..0C3C; UNKNOWN53880x0C3D, // 0C3D..0C44; TELUGU53890x0C45, // 0C45 ; UNKNOWN53900x0C46, // 0C46..0C48; TELUGU53910x0C49, // 0C49 ; UNKNOWN53920x0C4A, // 0C4A..0C4D; TELUGU53930x0C4E, // 0C4E..0C54; UNKNOWN53940x0C55, // 0C55..0C56; TELUGU53950x0C57, // 0C57 ; UNKNOWN53960x0C58, // 0C58..0C5A; TELUGU53970x0C5B, // 0C5B..0C5F; UNKNOWN53980x0C60, // 0C60..0C63; TELUGU53990x0C64, // 0C64..0C65; UNKNOWN54000x0C66, // 0C66..0C6F; TELUGU54010x0C70, // 0C70..0C76; UNKNOWN54020x0C77, // 0C77..0C7F; TELUGU54030x0C80, // 0C80..0C8C; KANNADA54040x0C8D, // 0C8D ; UNKNOWN54050x0C8E, // 0C8E..0C90; KANNADA54060x0C91, // 0C91 ; UNKNOWN54070x0C92, // 0C92..0CA8; KANNADA54080x0CA9, // 0CA9 ; UNKNOWN54090x0CAA, // 0CAA..0CB3; KANNADA54100x0CB4, // 0CB4 ; UNKNOWN54110x0CB5, // 0CB5..0CB9; KANNADA54120x0CBA, // 0CBA..0CBB; UNKNOWN54130x0CBC, // 0CBC..0CC4; KANNADA54140x0CC5, // 0CC5 ; UNKNOWN54150x0CC6, // 0CC6..0CC8; KANNADA54160x0CC9, // 0CC9 ; UNKNOWN54170x0CCA, // 0CCA..0CCD; KANNADA54180x0CCE, // 0CCE..0CD4; UNKNOWN54190x0CD5, // 0CD5..0CD6; KANNADA54200x0CD7, // 0CD7..0CDD; UNKNOWN54210x0CDE, // 0CDE ; KANNADA54220x0CDF, // 0CDF ; UNKNOWN54230x0CE0, // 0CE0..0CE3; KANNADA54240x0CE4, // 0CE4..0CE5; UNKNOWN54250x0CE6, // 0CE6..0CEF; KANNADA54260x0CF0, // 0CF0 ; UNKNOWN54270x0CF1, // 0CF1..0CF2; KANNADA54280x0CF3, // 0CF3..0CFF; UNKNOWN54290x0D00, // 0D00..0D0C; MALAYALAM54300x0D0D, // 0D0D ; UNKNOWN54310x0D0E, // 0D0E..0D10; MALAYALAM54320x0D11, // 0D11 ; UNKNOWN54330x0D12, // 0D12..0D44; MALAYALAM54340x0D45, // 0D45 ; UNKNOWN54350x0D46, // 0D46..0D48; MALAYALAM54360x0D49, // 0D49 ; UNKNOWN54370x0D4A, // 0D4A..0D4F; MALAYALAM54380x0D50, // 0D50..0D53; UNKNOWN54390x0D54, // 0D54..0D63; MALAYALAM54400x0D64, // 0D64..0D65; UNKNOWN54410x0D66, // 0D66..0D7F; MALAYALAM54420x0D80, // 0D80 ; UNKNOWN54430x0D81, // 0D81..0D83; SINHALA54440x0D84, // 0D84 ; UNKNOWN54450x0D85, // 0D85..0D96; SINHALA54460x0D97, // 0D97..0D99; UNKNOWN54470x0D9A, // 0D9A..0DB1; SINHALA54480x0DB2, // 0DB2 ; UNKNOWN54490x0DB3, // 0DB3..0DBB; SINHALA54500x0DBC, // 0DBC ; UNKNOWN54510x0DBD, // 0DBD ; SINHALA54520x0DBE, // 0DBE..0DBF; UNKNOWN54530x0DC0, // 0DC0..0DC6; SINHALA54540x0DC7, // 0DC7..0DC9; UNKNOWN54550x0DCA, // 0DCA ; SINHALA54560x0DCB, // 0DCB..0DCE; UNKNOWN54570x0DCF, // 0DCF..0DD4; SINHALA54580x0DD5, // 0DD5 ; UNKNOWN54590x0DD6, // 0DD6 ; SINHALA54600x0DD7, // 0DD7 ; UNKNOWN54610x0DD8, // 0DD8..0DDF; SINHALA54620x0DE0, // 0DE0..0DE5; UNKNOWN54630x0DE6, // 0DE6..0DEF; SINHALA54640x0DF0, // 0DF0..0DF1; UNKNOWN54650x0DF2, // 0DF2..0DF4; SINHALA54660x0DF5, // 0DF5..0E00; UNKNOWN54670x0E01, // 0E01..0E3A; THAI54680x0E3B, // 0E3B..0E3E; UNKNOWN54690x0E3F, // 0E3F ; COMMON54700x0E40, // 0E40..0E5B; THAI54710x0E5C, // 0E5C..0E80; UNKNOWN54720x0E81, // 0E81..0E82; LAO54730x0E83, // 0E83 ; UNKNOWN54740x0E84, // 0E84 ; LAO54750x0E85, // 0E85 ; UNKNOWN54760x0E86, // 0E86..0E8A; LAO54770x0E8B, // 0E8B ; UNKNOWN54780x0E8C, // 0E8C..0EA3; LAO54790x0EA4, // 0EA4 ; UNKNOWN54800x0EA5, // 0EA5 ; LAO54810x0EA6, // 0EA6 ; UNKNOWN54820x0EA7, // 0EA7..0EBD; LAO54830x0EBE, // 0EBE..0EBF; UNKNOWN54840x0EC0, // 0EC0..0EC4; LAO54850x0EC5, // 0EC5 ; UNKNOWN54860x0EC6, // 0EC6 ; LAO54870x0EC7, // 0EC7 ; UNKNOWN54880x0EC8, // 0EC8..0ECD; LAO54890x0ECE, // 0ECE..0ECF; UNKNOWN54900x0ED0, // 0ED0..0ED9; LAO54910x0EDA, // 0EDA..0EDB; UNKNOWN54920x0EDC, // 0EDC..0EDF; LAO54930x0EE0, // 0EE0..0EFF; UNKNOWN54940x0F00, // 0F00..0F47; TIBETAN54950x0F48, // 0F48 ; UNKNOWN54960x0F49, // 0F49..0F6C; TIBETAN54970x0F6D, // 0F6D..0F70; UNKNOWN54980x0F71, // 0F71..0F97; TIBETAN54990x0F98, // 0F98 ; UNKNOWN55000x0F99, // 0F99..0FBC; TIBETAN55010x0FBD, // 0FBD ; UNKNOWN55020x0FBE, // 0FBE..0FCC; TIBETAN55030x0FCD, // 0FCD ; UNKNOWN55040x0FCE, // 0FCE..0FD4; TIBETAN55050x0FD5, // 0FD5..0FD8; COMMON55060x0FD9, // 0FD9..0FDA; TIBETAN55070x0FDB, // 0FDB..0FFF; UNKNOWN55080x1000, // 1000..109F; MYANMAR55090x10A0, // 10A0..10C5; GEORGIAN55100x10C6, // 10C6 ; UNKNOWN55110x10C7, // 10C7 ; GEORGIAN55120x10C8, // 10C8..10CC; UNKNOWN55130x10CD, // 10CD ; GEORGIAN55140x10CE, // 10CE..10CF; UNKNOWN55150x10D0, // 10D0..10FA; GEORGIAN55160x10FB, // 10FB ; COMMON55170x10FC, // 10FC..10FF; GEORGIAN55180x1100, // 1100..11FF; HANGUL55190x1200, // 1200..1248; ETHIOPIC55200x1249, // 1249 ; UNKNOWN55210x124A, // 124A..124D; ETHIOPIC55220x124E, // 124E..124F; UNKNOWN55230x1250, // 1250..1256; ETHIOPIC55240x1257, // 1257 ; UNKNOWN55250x1258, // 1258 ; ETHIOPIC55260x1259, // 1259 ; UNKNOWN55270x125A, // 125A..125D; ETHIOPIC55280x125E, // 125E..125F; UNKNOWN55290x1260, // 1260..1288; ETHIOPIC55300x1289, // 1289 ; UNKNOWN55310x128A, // 128A..128D; ETHIOPIC55320x128E, // 128E..128F; UNKNOWN55330x1290, // 1290..12B0; ETHIOPIC55340x12B1, // 12B1 ; UNKNOWN55350x12B2, // 12B2..12B5; ETHIOPIC55360x12B6, // 12B6..12B7; UNKNOWN55370x12B8, // 12B8..12BE; ETHIOPIC55380x12BF, // 12BF ; UNKNOWN55390x12C0, // 12C0 ; ETHIOPIC55400x12C1, // 12C1 ; UNKNOWN55410x12C2, // 12C2..12C5; ETHIOPIC55420x12C6, // 12C6..12C7; UNKNOWN55430x12C8, // 12C8..12D6; ETHIOPIC55440x12D7, // 12D7 ; UNKNOWN55450x12D8, // 12D8..1310; ETHIOPIC55460x1311, // 1311 ; UNKNOWN55470x1312, // 1312..1315; ETHIOPIC55480x1316, // 1316..1317; UNKNOWN55490x1318, // 1318..135A; ETHIOPIC55500x135B, // 135B..135C; UNKNOWN55510x135D, // 135D..137C; ETHIOPIC55520x137D, // 137D..137F; UNKNOWN55530x1380, // 1380..1399; ETHIOPIC55540x139A, // 139A..139F; UNKNOWN55550x13A0, // 13A0..13F5; CHEROKEE55560x13F6, // 13F6..13F7; UNKNOWN55570x13F8, // 13F8..13FD; CHEROKEE55580x13FE, // 13FE..13FF; UNKNOWN55590x1400, // 1400..167F; CANADIAN_ABORIGINAL55600x1680, // 1680..169C; OGHAM55610x169D, // 169D..169F; UNKNOWN55620x16A0, // 16A0..16EA; RUNIC55630x16EB, // 16EB..16ED; COMMON55640x16EE, // 16EE..16F8; RUNIC55650x16F9, // 16F9..16FF; UNKNOWN55660x1700, // 1700..170C; TAGALOG55670x170D, // 170D ; UNKNOWN55680x170E, // 170E..1714; TAGALOG55690x1715, // 1715..171F; UNKNOWN55700x1720, // 1720..1734; HANUNOO55710x1735, // 1735..1736; COMMON55720x1737, // 1737..173F; UNKNOWN55730x1740, // 1740..1753; BUHID55740x1754, // 1754..175F; UNKNOWN55750x1760, // 1760..176C; TAGBANWA55760x176D, // 176D ; UNKNOWN55770x176E, // 176E..1770; TAGBANWA55780x1771, // 1771 ; UNKNOWN55790x1772, // 1772..1773; TAGBANWA55800x1774, // 1774..177F; UNKNOWN55810x1780, // 1780..17DD; KHMER55820x17DE, // 17DE..17DF; UNKNOWN55830x17E0, // 17E0..17E9; KHMER55840x17EA, // 17EA..17EF; UNKNOWN55850x17F0, // 17F0..17F9; KHMER55860x17FA, // 17FA..17FF; UNKNOWN55870x1800, // 1800..1801; MONGOLIAN55880x1802, // 1802..1803; COMMON55890x1804, // 1804 ; MONGOLIAN55900x1805, // 1805 ; COMMON55910x1806, // 1806..180E; MONGOLIAN55920x180F, // 180F ; UNKNOWN55930x1810, // 1810..1819; MONGOLIAN55940x181A, // 181A..181F; UNKNOWN55950x1820, // 1820..1878; MONGOLIAN55960x1879, // 1879..187F; UNKNOWN55970x1880, // 1880..18AA; MONGOLIAN55980x18AB, // 18AB..18AF; UNKNOWN55990x18B0, // 18B0..18F5; CANADIAN_ABORIGINAL56000x18F6, // 18F6..18FF; UNKNOWN56010x1900, // 1900..191E; LIMBU56020x191F, // 191F ; UNKNOWN56030x1920, // 1920..192B; LIMBU56040x192C, // 192C..192F; UNKNOWN56050x1930, // 1930..193B; LIMBU56060x193C, // 193C..193F; UNKNOWN56070x1940, // 1940 ; LIMBU56080x1941, // 1941..1943; UNKNOWN56090x1944, // 1944..194F; LIMBU56100x1950, // 1950..196D; TAI_LE56110x196E, // 196E..196F; UNKNOWN56120x1970, // 1970..1974; TAI_LE56130x1975, // 1975..197F; UNKNOWN56140x1980, // 1980..19AB; NEW_TAI_LUE56150x19AC, // 19AC..19AF; UNKNOWN56160x19B0, // 19B0..19C9; NEW_TAI_LUE56170x19CA, // 19CA..19CF; UNKNOWN56180x19D0, // 19D0..19DA; NEW_TAI_LUE56190x19DB, // 19DB..19DD; UNKNOWN56200x19DE, // 19DE..19DF; NEW_TAI_LUE56210x19E0, // 19E0..19FF; KHMER56220x1A00, // 1A00..1A1B; BUGINESE56230x1A1C, // 1A1C..1A1D; UNKNOWN56240x1A1E, // 1A1E..1A1F; BUGINESE56250x1A20, // 1A20..1A5E; TAI_THAM56260x1A5F, // 1A5F ; UNKNOWN56270x1A60, // 1A60..1A7C; TAI_THAM56280x1A7D, // 1A7D..1A7E; UNKNOWN56290x1A7F, // 1A7F..1A89; TAI_THAM56300x1A8A, // 1A8A..1A8F; UNKNOWN56310x1A90, // 1A90..1A99; TAI_THAM56320x1A9A, // 1A9A..1A9F; UNKNOWN56330x1AA0, // 1AA0..1AAD; TAI_THAM56340x1AAE, // 1AAE..1AAF; UNKNOWN56350x1AB0, // 1AB0..1AC0; INHERITED56360x1AC1, // 1AC1..1AFF; UNKNOWN56370x1B00, // 1B00..1B4B; BALINESE56380x1B4C, // 1B4C..1B4F; UNKNOWN56390x1B50, // 1B50..1B7C; BALINESE56400x1B7D, // 1B7D..1B7F; UNKNOWN56410x1B80, // 1B80..1BBF; SUNDANESE56420x1BC0, // 1BC0..1BF3; BATAK56430x1BF4, // 1BF4..1BFB; UNKNOWN56440x1BFC, // 1BFC..1BFF; BATAK56450x1C00, // 1C00..1C37; LEPCHA56460x1C38, // 1C38..1C3A; UNKNOWN56470x1C3B, // 1C3B..1C49; LEPCHA56480x1C4A, // 1C4A..1C4C; UNKNOWN56490x1C4D, // 1C4D..1C4F; LEPCHA56500x1C50, // 1C50..1C7F; OL_CHIKI56510x1C80, // 1C80..1C88; CYRILLIC56520x1C89, // 1C89..1C8F; UNKNOWN56530x1C90, // 1C90..1CBA; GEORGIAN56540x1CBB, // 1CBB..1CBC; UNKNOWN56550x1CBD, // 1CBD..1CBF; GEORGIAN56560x1CC0, // 1CC0..1CC7; SUNDANESE56570x1CC8, // 1CC8..1CCF; UNKNOWN56580x1CD0, // 1CD0..1CD2; INHERITED56590x1CD3, // 1CD3 ; COMMON56600x1CD4, // 1CD4..1CE0; INHERITED56610x1CE1, // 1CE1 ; COMMON56620x1CE2, // 1CE2..1CE8; INHERITED56630x1CE9, // 1CE9..1CEC; COMMON56640x1CED, // 1CED ; INHERITED56650x1CEE, // 1CEE..1CF3; COMMON56660x1CF4, // 1CF4 ; INHERITED56670x1CF5, // 1CF5..1CF7; COMMON56680x1CF8, // 1CF8..1CF9; INHERITED56690x1CFA, // 1CFA ; COMMON56700x1CFB, // 1CFB..1CFF; UNKNOWN56710x1D00, // 1D00..1D25; LATIN56720x1D26, // 1D26..1D2A; GREEK56730x1D2B, // 1D2B ; CYRILLIC56740x1D2C, // 1D2C..1D5C; LATIN56750x1D5D, // 1D5D..1D61; GREEK56760x1D62, // 1D62..1D65; LATIN56770x1D66, // 1D66..1D6A; GREEK56780x1D6B, // 1D6B..1D77; LATIN56790x1D78, // 1D78 ; CYRILLIC56800x1D79, // 1D79..1DBE; LATIN56810x1DBF, // 1DBF ; GREEK56820x1DC0, // 1DC0..1DF9; INHERITED56830x1DFA, // 1DFA ; UNKNOWN56840x1DFB, // 1DFB..1DFF; INHERITED56850x1E00, // 1E00..1EFF; LATIN56860x1F00, // 1F00..1F15; GREEK56870x1F16, // 1F16..1F17; UNKNOWN56880x1F18, // 1F18..1F1D; GREEK56890x1F1E, // 1F1E..1F1F; UNKNOWN56900x1F20, // 1F20..1F45; GREEK56910x1F46, // 1F46..1F47; UNKNOWN56920x1F48, // 1F48..1F4D; GREEK56930x1F4E, // 1F4E..1F4F; UNKNOWN56940x1F50, // 1F50..1F57; GREEK56950x1F58, // 1F58 ; UNKNOWN56960x1F59, // 1F59 ; GREEK56970x1F5A, // 1F5A ; UNKNOWN56980x1F5B, // 1F5B ; GREEK56990x1F5C, // 1F5C ; UNKNOWN57000x1F5D, // 1F5D ; GREEK57010x1F5E, // 1F5E ; UNKNOWN57020x1F5F, // 1F5F..1F7D; GREEK57030x1F7E, // 1F7E..1F7F; UNKNOWN57040x1F80, // 1F80..1FB4; GREEK57050x1FB5, // 1FB5 ; UNKNOWN57060x1FB6, // 1FB6..1FC4; GREEK57070x1FC5, // 1FC5 ; UNKNOWN57080x1FC6, // 1FC6..1FD3; GREEK57090x1FD4, // 1FD4..1FD5; UNKNOWN57100x1FD6, // 1FD6..1FDB; GREEK57110x1FDC, // 1FDC ; UNKNOWN57120x1FDD, // 1FDD..1FEF; GREEK57130x1FF0, // 1FF0..1FF1; UNKNOWN57140x1FF2, // 1FF2..1FF4; GREEK57150x1FF5, // 1FF5 ; UNKNOWN57160x1FF6, // 1FF6..1FFE; GREEK57170x1FFF, // 1FFF ; UNKNOWN57180x2000, // 2000..200B; COMMON57190x200C, // 200C..200D; INHERITED57200x200E, // 200E..2064; COMMON57210x2065, // 2065 ; UNKNOWN57220x2066, // 2066..2070; COMMON57230x2071, // 2071 ; LATIN57240x2072, // 2072..2073; UNKNOWN57250x2074, // 2074..207E; COMMON57260x207F, // 207F ; LATIN57270x2080, // 2080..208E; COMMON57280x208F, // 208F ; UNKNOWN57290x2090, // 2090..209C; LATIN57300x209D, // 209D..209F; UNKNOWN57310x20A0, // 20A0..20BF; COMMON57320x20C0, // 20C0..20CF; UNKNOWN57330x20D0, // 20D0..20F0; INHERITED57340x20F1, // 20F1..20FF; UNKNOWN57350x2100, // 2100..2125; COMMON57360x2126, // 2126 ; GREEK57370x2127, // 2127..2129; COMMON57380x212A, // 212A..212B; LATIN57390x212C, // 212C..2131; COMMON57400x2132, // 2132 ; LATIN57410x2133, // 2133..214D; COMMON57420x214E, // 214E ; LATIN57430x214F, // 214F..215F; COMMON57440x2160, // 2160..2188; LATIN57450x2189, // 2189..218B; COMMON57460x218C, // 218C..218F; UNKNOWN57470x2190, // 2190..2426; COMMON57480x2427, // 2427..243F; UNKNOWN57490x2440, // 2440..244A; COMMON57500x244B, // 244B..245F; UNKNOWN57510x2460, // 2460..27FF; COMMON57520x2800, // 2800..28FF; BRAILLE57530x2900, // 2900..2B73; COMMON57540x2B74, // 2B74..2B75; UNKNOWN57550x2B76, // 2B76..2B95; COMMON57560x2B96, // 2B96 ; UNKNOWN57570x2B97, // 2B97..2BFF; COMMON57580x2C00, // 2C00..2C2E; GLAGOLITIC57590x2C2F, // 2C2F ; UNKNOWN57600x2C30, // 2C30..2C5E; GLAGOLITIC57610x2C5F, // 2C5F ; UNKNOWN57620x2C60, // 2C60..2C7F; LATIN57630x2C80, // 2C80..2CF3; COPTIC57640x2CF4, // 2CF4..2CF8; UNKNOWN57650x2CF9, // 2CF9..2CFF; COPTIC57660x2D00, // 2D00..2D25; GEORGIAN57670x2D26, // 2D26 ; UNKNOWN57680x2D27, // 2D27 ; GEORGIAN57690x2D28, // 2D28..2D2C; UNKNOWN57700x2D2D, // 2D2D ; GEORGIAN57710x2D2E, // 2D2E..2D2F; UNKNOWN57720x2D30, // 2D30..2D67; TIFINAGH57730x2D68, // 2D68..2D6E; UNKNOWN57740x2D6F, // 2D6F..2D70; TIFINAGH57750x2D71, // 2D71..2D7E; UNKNOWN57760x2D7F, // 2D7F ; TIFINAGH57770x2D80, // 2D80..2D96; ETHIOPIC57780x2D97, // 2D97..2D9F; UNKNOWN57790x2DA0, // 2DA0..2DA6; ETHIOPIC57800x2DA7, // 2DA7 ; UNKNOWN57810x2DA8, // 2DA8..2DAE; ETHIOPIC57820x2DAF, // 2DAF ; UNKNOWN57830x2DB0, // 2DB0..2DB6; ETHIOPIC57840x2DB7, // 2DB7 ; UNKNOWN57850x2DB8, // 2DB8..2DBE; ETHIOPIC57860x2DBF, // 2DBF ; UNKNOWN57870x2DC0, // 2DC0..2DC6; ETHIOPIC57880x2DC7, // 2DC7 ; UNKNOWN57890x2DC8, // 2DC8..2DCE; ETHIOPIC57900x2DCF, // 2DCF ; UNKNOWN57910x2DD0, // 2DD0..2DD6; ETHIOPIC57920x2DD7, // 2DD7 ; UNKNOWN57930x2DD8, // 2DD8..2DDE; ETHIOPIC57940x2DDF, // 2DDF ; UNKNOWN57950x2DE0, // 2DE0..2DFF; CYRILLIC57960x2E00, // 2E00..2E52; COMMON57970x2E53, // 2E53..2E7F; UNKNOWN57980x2E80, // 2E80..2E99; HAN57990x2E9A, // 2E9A ; UNKNOWN58000x2E9B, // 2E9B..2EF3; HAN58010x2EF4, // 2EF4..2EFF; UNKNOWN58020x2F00, // 2F00..2FD5; HAN58030x2FD6, // 2FD6..2FEF; UNKNOWN58040x2FF0, // 2FF0..2FFB; COMMON58050x2FFC, // 2FFC..2FFF; UNKNOWN58060x3000, // 3000..3004; COMMON58070x3005, // 3005 ; HAN58080x3006, // 3006 ; COMMON58090x3007, // 3007 ; HAN58100x3008, // 3008..3020; COMMON58110x3021, // 3021..3029; HAN58120x302A, // 302A..302D; INHERITED58130x302E, // 302E..302F; HANGUL58140x3030, // 3030..3037; COMMON58150x3038, // 3038..303B; HAN58160x303C, // 303C..303F; COMMON58170x3040, // 3040 ; UNKNOWN58180x3041, // 3041..3096; HIRAGANA58190x3097, // 3097..3098; UNKNOWN58200x3099, // 3099..309A; INHERITED58210x309B, // 309B..309C; COMMON58220x309D, // 309D..309F; HIRAGANA58230x30A0, // 30A0 ; COMMON58240x30A1, // 30A1..30FA; KATAKANA58250x30FB, // 30FB..30FC; COMMON58260x30FD, // 30FD..30FF; KATAKANA58270x3100, // 3100..3104; UNKNOWN58280x3105, // 3105..312F; BOPOMOFO58290x3130, // 3130 ; UNKNOWN58300x3131, // 3131..318E; HANGUL58310x318F, // 318F ; UNKNOWN58320x3190, // 3190..319F; COMMON58330x31A0, // 31A0..31BF; BOPOMOFO58340x31C0, // 31C0..31E3; COMMON58350x31E4, // 31E4..31EF; UNKNOWN58360x31F0, // 31F0..31FF; KATAKANA58370x3200, // 3200..321E; HANGUL58380x321F, // 321F ; UNKNOWN58390x3220, // 3220..325F; COMMON58400x3260, // 3260..327E; HANGUL58410x327F, // 327F..32CF; COMMON58420x32D0, // 32D0..32FE; KATAKANA58430x32FF, // 32FF ; COMMON58440x3300, // 3300..3357; KATAKANA58450x3358, // 3358..33FF; COMMON58460x3400, // 3400..4DBF; HAN58470x4DC0, // 4DC0..4DFF; COMMON58480x4E00, // 4E00..9FFC; HAN58490x9FFD, // 9FFD..9FFF; UNKNOWN58500xA000, // A000..A48C; YI58510xA48D, // A48D..A48F; UNKNOWN58520xA490, // A490..A4C6; YI58530xA4C7, // A4C7..A4CF; UNKNOWN58540xA4D0, // A4D0..A4FF; LISU58550xA500, // A500..A62B; VAI58560xA62C, // A62C..A63F; UNKNOWN58570xA640, // A640..A69F; CYRILLIC58580xA6A0, // A6A0..A6F7; BAMUM58590xA6F8, // A6F8..A6FF; UNKNOWN58600xA700, // A700..A721; COMMON58610xA722, // A722..A787; LATIN58620xA788, // A788..A78A; COMMON58630xA78B, // A78B..A7BF; LATIN58640xA7C0, // A7C0..A7C1; UNKNOWN58650xA7C2, // A7C2..A7CA; LATIN58660xA7CB, // A7CB..A7F4; UNKNOWN58670xA7F5, // A7F5..A7FF; LATIN58680xA800, // A800..A82C; SYLOTI_NAGRI58690xA82D, // A82D..A82F; UNKNOWN58700xA830, // A830..A839; COMMON58710xA83A, // A83A..A83F; UNKNOWN58720xA840, // A840..A877; PHAGS_PA58730xA878, // A878..A87F; UNKNOWN58740xA880, // A880..A8C5; SAURASHTRA58750xA8C6, // A8C6..A8CD; UNKNOWN58760xA8CE, // A8CE..A8D9; SAURASHTRA58770xA8DA, // A8DA..A8DF; UNKNOWN58780xA8E0, // A8E0..A8FF; DEVANAGARI58790xA900, // A900..A92D; KAYAH_LI58800xA92E, // A92E ; COMMON58810xA92F, // A92F ; KAYAH_LI58820xA930, // A930..A953; REJANG58830xA954, // A954..A95E; UNKNOWN58840xA95F, // A95F ; REJANG58850xA960, // A960..A97C; HANGUL58860xA97D, // A97D..A97F; UNKNOWN58870xA980, // A980..A9CD; JAVANESE58880xA9CE, // A9CE ; UNKNOWN58890xA9CF, // A9CF ; COMMON58900xA9D0, // A9D0..A9D9; JAVANESE58910xA9DA, // A9DA..A9DD; UNKNOWN58920xA9DE, // A9DE..A9DF; JAVANESE58930xA9E0, // A9E0..A9FE; MYANMAR58940xA9FF, // A9FF ; UNKNOWN58950xAA00, // AA00..AA36; CHAM58960xAA37, // AA37..AA3F; UNKNOWN58970xAA40, // AA40..AA4D; CHAM58980xAA4E, // AA4E..AA4F; UNKNOWN58990xAA50, // AA50..AA59; CHAM59000xAA5A, // AA5A..AA5B; UNKNOWN59010xAA5C, // AA5C..AA5F; CHAM59020xAA60, // AA60..AA7F; MYANMAR59030xAA80, // AA80..AAC2; TAI_VIET59040xAAC3, // AAC3..AADA; UNKNOWN59050xAADB, // AADB..AADF; TAI_VIET59060xAAE0, // AAE0..AAF6; MEETEI_MAYEK59070xAAF7, // AAF7..AB00; UNKNOWN59080xAB01, // AB01..AB06; ETHIOPIC59090xAB07, // AB07..AB08; UNKNOWN59100xAB09, // AB09..AB0E; ETHIOPIC59110xAB0F, // AB0F..AB10; UNKNOWN59120xAB11, // AB11..AB16; ETHIOPIC59130xAB17, // AB17..AB1F; UNKNOWN59140xAB20, // AB20..AB26; ETHIOPIC59150xAB27, // AB27 ; UNKNOWN59160xAB28, // AB28..AB2E; ETHIOPIC59170xAB2F, // AB2F ; UNKNOWN59180xAB30, // AB30..AB5A; LATIN59190xAB5B, // AB5B ; COMMON59200xAB5C, // AB5C..AB64; LATIN59210xAB65, // AB65 ; GREEK59220xAB66, // AB66..AB69; LATIN59230xAB6A, // AB6A..AB6B; COMMON59240xAB6C, // AB6C..AB6F; UNKNOWN59250xAB70, // AB70..ABBF; CHEROKEE59260xABC0, // ABC0..ABED; MEETEI_MAYEK59270xABEE, // ABEE..ABEF; UNKNOWN59280xABF0, // ABF0..ABF9; MEETEI_MAYEK59290xABFA, // ABFA..ABFF; UNKNOWN59300xAC00, // AC00..D7A3; HANGUL59310xD7A4, // D7A4..D7AF; UNKNOWN59320xD7B0, // D7B0..D7C6; HANGUL59330xD7C7, // D7C7..D7CA; UNKNOWN59340xD7CB, // D7CB..D7FB; HANGUL59350xD7FC, // D7FC..F8FF; UNKNOWN59360xF900, // F900..FA6D; HAN59370xFA6E, // FA6E..FA6F; UNKNOWN59380xFA70, // FA70..FAD9; HAN59390xFADA, // FADA..FAFF; UNKNOWN59400xFB00, // FB00..FB06; LATIN59410xFB07, // FB07..FB12; UNKNOWN59420xFB13, // FB13..FB17; ARMENIAN59430xFB18, // FB18..FB1C; UNKNOWN59440xFB1D, // FB1D..FB36; HEBREW59450xFB37, // FB37 ; UNKNOWN59460xFB38, // FB38..FB3C; HEBREW59470xFB3D, // FB3D ; UNKNOWN59480xFB3E, // FB3E ; HEBREW59490xFB3F, // FB3F ; UNKNOWN59500xFB40, // FB40..FB41; HEBREW59510xFB42, // FB42 ; UNKNOWN59520xFB43, // FB43..FB44; HEBREW59530xFB45, // FB45 ; UNKNOWN59540xFB46, // FB46..FB4F; HEBREW59550xFB50, // FB50..FBC1; ARABIC59560xFBC2, // FBC2..FBD2; UNKNOWN59570xFBD3, // FBD3..FD3D; ARABIC59580xFD3E, // FD3E..FD3F; COMMON59590xFD40, // FD40..FD4F; UNKNOWN59600xFD50, // FD50..FD8F; ARABIC59610xFD90, // FD90..FD91; UNKNOWN59620xFD92, // FD92..FDC7; ARABIC59630xFDC8, // FDC8..FDEF; UNKNOWN59640xFDF0, // FDF0..FDFD; ARABIC59650xFDFE, // FDFE..FDFF; UNKNOWN59660xFE00, // FE00..FE0F; INHERITED59670xFE10, // FE10..FE19; COMMON59680xFE1A, // FE1A..FE1F; UNKNOWN59690xFE20, // FE20..FE2D; INHERITED59700xFE2E, // FE2E..FE2F; CYRILLIC59710xFE30, // FE30..FE52; COMMON59720xFE53, // FE53 ; UNKNOWN59730xFE54, // FE54..FE66; COMMON59740xFE67, // FE67 ; UNKNOWN59750xFE68, // FE68..FE6B; COMMON59760xFE6C, // FE6C..FE6F; UNKNOWN59770xFE70, // FE70..FE74; ARABIC59780xFE75, // FE75 ; UNKNOWN59790xFE76, // FE76..FEFC; ARABIC59800xFEFD, // FEFD..FEFE; UNKNOWN59810xFEFF, // FEFF ; COMMON59820xFF00, // FF00 ; UNKNOWN59830xFF01, // FF01..FF20; COMMON59840xFF21, // FF21..FF3A; LATIN59850xFF3B, // FF3B..FF40; COMMON59860xFF41, // FF41..FF5A; LATIN59870xFF5B, // FF5B..FF65; COMMON59880xFF66, // FF66..FF6F; KATAKANA59890xFF70, // FF70 ; COMMON59900xFF71, // FF71..FF9D; KATAKANA59910xFF9E, // FF9E..FF9F; COMMON59920xFFA0, // FFA0..FFBE; HANGUL59930xFFBF, // FFBF..FFC1; UNKNOWN59940xFFC2, // FFC2..FFC7; HANGUL59950xFFC8, // FFC8..FFC9; UNKNOWN59960xFFCA, // FFCA..FFCF; HANGUL59970xFFD0, // FFD0..FFD1; UNKNOWN59980xFFD2, // FFD2..FFD7; HANGUL59990xFFD8, // FFD8..FFD9; UNKNOWN60000xFFDA, // FFDA..FFDC; HANGUL60010xFFDD, // FFDD..FFDF; UNKNOWN60020xFFE0, // FFE0..FFE6; COMMON60030xFFE7, // FFE7 ; UNKNOWN60040xFFE8, // FFE8..FFEE; COMMON60050xFFEF, // FFEF..FFF8; UNKNOWN60060xFFF9, // FFF9..FFFD; COMMON60070xFFFE, // FFFE..FFFF; UNKNOWN60080x10000, // 10000..1000B; LINEAR_B60090x1000C, // 1000C ; UNKNOWN60100x1000D, // 1000D..10026; LINEAR_B60110x10027, // 10027 ; UNKNOWN60120x10028, // 10028..1003A; LINEAR_B60130x1003B, // 1003B ; UNKNOWN60140x1003C, // 1003C..1003D; LINEAR_B60150x1003E, // 1003E ; UNKNOWN60160x1003F, // 1003F..1004D; LINEAR_B60170x1004E, // 1004E..1004F; UNKNOWN60180x10050, // 10050..1005D; LINEAR_B60190x1005E, // 1005E..1007F; UNKNOWN60200x10080, // 10080..100FA; LINEAR_B60210x100FB, // 100FB..100FF; UNKNOWN60220x10100, // 10100..10102; COMMON60230x10103, // 10103..10106; UNKNOWN60240x10107, // 10107..10133; COMMON60250x10134, // 10134..10136; UNKNOWN60260x10137, // 10137..1013F; COMMON60270x10140, // 10140..1018E; GREEK60280x1018F, // 1018F ; UNKNOWN60290x10190, // 10190..1019C; COMMON60300x1019D, // 1019D..1019F; UNKNOWN60310x101A0, // 101A0 ; GREEK60320x101A1, // 101A1..101CF; UNKNOWN60330x101D0, // 101D0..101FC; COMMON60340x101FD, // 101FD ; INHERITED60350x101FE, // 101FE..1027F; UNKNOWN60360x10280, // 10280..1029C; LYCIAN60370x1029D, // 1029D..1029F; UNKNOWN60380x102A0, // 102A0..102D0; CARIAN60390x102D1, // 102D1..102DF; UNKNOWN60400x102E0, // 102E0 ; INHERITED60410x102E1, // 102E1..102FB; COMMON60420x102FC, // 102FC..102FF; UNKNOWN60430x10300, // 10300..10323; OLD_ITALIC60440x10324, // 10324..1032C; UNKNOWN60450x1032D, // 1032D..1032F; OLD_ITALIC60460x10330, // 10330..1034A; GOTHIC60470x1034B, // 1034B..1034F; UNKNOWN60480x10350, // 10350..1037A; OLD_PERMIC60490x1037B, // 1037B..1037F; UNKNOWN60500x10380, // 10380..1039D; UGARITIC60510x1039E, // 1039E ; UNKNOWN60520x1039F, // 1039F ; UGARITIC60530x103A0, // 103A0..103C3; OLD_PERSIAN60540x103C4, // 103C4..103C7; UNKNOWN60550x103C8, // 103C8..103D5; OLD_PERSIAN60560x103D6, // 103D6..103FF; UNKNOWN60570x10400, // 10400..1044F; DESERET60580x10450, // 10450..1047F; SHAVIAN60590x10480, // 10480..1049D; OSMANYA60600x1049E, // 1049E..1049F; UNKNOWN60610x104A0, // 104A0..104A9; OSMANYA60620x104AA, // 104AA..104AF; UNKNOWN60630x104B0, // 104B0..104D3; OSAGE60640x104D4, // 104D4..104D7; UNKNOWN60650x104D8, // 104D8..104FB; OSAGE60660x104FC, // 104FC..104FF; UNKNOWN60670x10500, // 10500..10527; ELBASAN60680x10528, // 10528..1052F; UNKNOWN60690x10530, // 10530..10563; CAUCASIAN_ALBANIAN60700x10564, // 10564..1056E; UNKNOWN60710x1056F, // 1056F ; CAUCASIAN_ALBANIAN60720x10570, // 10570..105FF; UNKNOWN60730x10600, // 10600..10736; LINEAR_A60740x10737, // 10737..1073F; UNKNOWN60750x10740, // 10740..10755; LINEAR_A60760x10756, // 10756..1075F; UNKNOWN60770x10760, // 10760..10767; LINEAR_A60780x10768, // 10768..107FF; UNKNOWN60790x10800, // 10800..10805; CYPRIOT60800x10806, // 10806..10807; UNKNOWN60810x10808, // 10808 ; CYPRIOT60820x10809, // 10809 ; UNKNOWN60830x1080A, // 1080A..10835; CYPRIOT60840x10836, // 10836 ; UNKNOWN60850x10837, // 10837..10838; CYPRIOT60860x10839, // 10839..1083B; UNKNOWN60870x1083C, // 1083C ; CYPRIOT60880x1083D, // 1083D..1083E; UNKNOWN60890x1083F, // 1083F ; CYPRIOT60900x10840, // 10840..10855; IMPERIAL_ARAMAIC60910x10856, // 10856 ; UNKNOWN60920x10857, // 10857..1085F; IMPERIAL_ARAMAIC60930x10860, // 10860..1087F; PALMYRENE60940x10880, // 10880..1089E; NABATAEAN60950x1089F, // 1089F..108A6; UNKNOWN60960x108A7, // 108A7..108AF; NABATAEAN60970x108B0, // 108B0..108DF; UNKNOWN60980x108E0, // 108E0..108F2; HATRAN60990x108F3, // 108F3 ; UNKNOWN61000x108F4, // 108F4..108F5; HATRAN61010x108F6, // 108F6..108FA; UNKNOWN61020x108FB, // 108FB..108FF; HATRAN61030x10900, // 10900..1091B; PHOENICIAN61040x1091C, // 1091C..1091E; UNKNOWN61050x1091F, // 1091F ; PHOENICIAN61060x10920, // 10920..10939; LYDIAN61070x1093A, // 1093A..1093E; UNKNOWN61080x1093F, // 1093F ; LYDIAN61090x10940, // 10940..1097F; UNKNOWN61100x10980, // 10980..1099F; MEROITIC_HIEROGLYPHS61110x109A0, // 109A0..109B7; MEROITIC_CURSIVE61120x109B8, // 109B8..109BB; UNKNOWN61130x109BC, // 109BC..109CF; MEROITIC_CURSIVE61140x109D0, // 109D0..109D1; UNKNOWN61150x109D2, // 109D2..109FF; MEROITIC_CURSIVE61160x10A00, // 10A00..10A03; KHAROSHTHI61170x10A04, // 10A04 ; UNKNOWN61180x10A05, // 10A05..10A06; KHAROSHTHI61190x10A07, // 10A07..10A0B; UNKNOWN61200x10A0C, // 10A0C..10A13; KHAROSHTHI61210x10A14, // 10A14 ; UNKNOWN61220x10A15, // 10A15..10A17; KHAROSHTHI61230x10A18, // 10A18 ; UNKNOWN61240x10A19, // 10A19..10A35; KHAROSHTHI61250x10A36, // 10A36..10A37; UNKNOWN61260x10A38, // 10A38..10A3A; KHAROSHTHI61270x10A3B, // 10A3B..10A3E; UNKNOWN61280x10A3F, // 10A3F..10A48; KHAROSHTHI61290x10A49, // 10A49..10A4F; UNKNOWN61300x10A50, // 10A50..10A58; KHAROSHTHI61310x10A59, // 10A59..10A5F; UNKNOWN61320x10A60, // 10A60..10A7F; OLD_SOUTH_ARABIAN61330x10A80, // 10A80..10A9F; OLD_NORTH_ARABIAN61340x10AA0, // 10AA0..10ABF; UNKNOWN61350x10AC0, // 10AC0..10AE6; MANICHAEAN61360x10AE7, // 10AE7..10AEA; UNKNOWN61370x10AEB, // 10AEB..10AF6; MANICHAEAN61380x10AF7, // 10AF7..10AFF; UNKNOWN61390x10B00, // 10B00..10B35; AVESTAN61400x10B36, // 10B36..10B38; UNKNOWN61410x10B39, // 10B39..10B3F; AVESTAN61420x10B40, // 10B40..10B55; INSCRIPTIONAL_PARTHIAN61430x10B56, // 10B56..10B57; UNKNOWN61440x10B58, // 10B58..10B5F; INSCRIPTIONAL_PARTHIAN61450x10B60, // 10B60..10B72; INSCRIPTIONAL_PAHLAVI61460x10B73, // 10B73..10B77; UNKNOWN61470x10B78, // 10B78..10B7F; INSCRIPTIONAL_PAHLAVI61480x10B80, // 10B80..10B91; PSALTER_PAHLAVI61490x10B92, // 10B92..10B98; UNKNOWN61500x10B99, // 10B99..10B9C; PSALTER_PAHLAVI61510x10B9D, // 10B9D..10BA8; UNKNOWN61520x10BA9, // 10BA9..10BAF; PSALTER_PAHLAVI61530x10BB0, // 10BB0..10BFF; UNKNOWN61540x10C00, // 10C00..10C48; OLD_TURKIC61550x10C49, // 10C49..10C7F; UNKNOWN61560x10C80, // 10C80..10CB2; OLD_HUNGARIAN61570x10CB3, // 10CB3..10CBF; UNKNOWN61580x10CC0, // 10CC0..10CF2; OLD_HUNGARIAN61590x10CF3, // 10CF3..10CF9; UNKNOWN61600x10CFA, // 10CFA..10CFF; OLD_HUNGARIAN61610x10D00, // 10D00..10D27; HANIFI_ROHINGYA61620x10D28, // 10D28..10D2F; UNKNOWN61630x10D30, // 10D30..10D39; HANIFI_ROHINGYA61640x10D3A, // 10D3A..10E5F; UNKNOWN61650x10E60, // 10E60..10E7E; ARABIC61660x10E7F, // 10E7F ; UNKNOWN61670x10E80, // 10E80..10EA9; YEZIDI61680x10EAA, // 10EAA ; UNKNOWN61690x10EAB, // 10EAB..10EAD; YEZIDI61700x10EAE, // 10EAE..10EAF; UNKNOWN61710x10EB0, // 10EB0..10EB1; YEZIDI61720x10EB2, // 10EB2..10EFF; UNKNOWN61730x10F00, // 10F00..10F27; OLD_SOGDIAN61740x10F28, // 10F28..10F2F; UNKNOWN61750x10F30, // 10F30..10F59; SOGDIAN61760x10F5A, // 10F5A..10FAF; UNKNOWN61770x10FB0, // 10FB0..10FCB; CHORASMIAN61780x10FCC, // 10FCC..10FDF; UNKNOWN61790x10FE0, // 10FE0..10FF6; ELYMAIC61800x10FF7, // 10FF7..10FFF; UNKNOWN61810x11000, // 11000..1104D; BRAHMI61820x1104E, // 1104E..11051; UNKNOWN61830x11052, // 11052..1106F; BRAHMI61840x11070, // 11070..1107E; UNKNOWN61850x1107F, // 1107F ; BRAHMI61860x11080, // 11080..110C1; KAITHI61870x110C2, // 110C2..110CC; UNKNOWN61880x110CD, // 110CD ; KAITHI61890x110CE, // 110CE..110CF; UNKNOWN61900x110D0, // 110D0..110E8; SORA_SOMPENG61910x110E9, // 110E9..110EF; UNKNOWN61920x110F0, // 110F0..110F9; SORA_SOMPENG61930x110FA, // 110FA..110FF; UNKNOWN61940x11100, // 11100..11134; CHAKMA61950x11135, // 11135 ; UNKNOWN61960x11136, // 11136..11147; CHAKMA61970x11148, // 11148..1114F; UNKNOWN61980x11150, // 11150..11176; MAHAJANI61990x11177, // 11177..1117F; UNKNOWN62000x11180, // 11180..111DF; SHARADA62010x111E0, // 111E0 ; UNKNOWN62020x111E1, // 111E1..111F4; SINHALA62030x111F5, // 111F5..111FF; UNKNOWN62040x11200, // 11200..11211; KHOJKI62050x11212, // 11212 ; UNKNOWN62060x11213, // 11213..1123E; KHOJKI62070x1123F, // 1123F..1127F; UNKNOWN62080x11280, // 11280..11286; MULTANI62090x11287, // 11287 ; UNKNOWN62100x11288, // 11288 ; MULTANI62110x11289, // 11289 ; UNKNOWN62120x1128A, // 1128A..1128D; MULTANI62130x1128E, // 1128E ; UNKNOWN62140x1128F, // 1128F..1129D; MULTANI62150x1129E, // 1129E ; UNKNOWN62160x1129F, // 1129F..112A9; MULTANI62170x112AA, // 112AA..112AF; UNKNOWN62180x112B0, // 112B0..112EA; KHUDAWADI62190x112EB, // 112EB..112EF; UNKNOWN62200x112F0, // 112F0..112F9; KHUDAWADI62210x112FA, // 112FA..112FF; UNKNOWN62220x11300, // 11300..11303; GRANTHA62230x11304, // 11304 ; UNKNOWN62240x11305, // 11305..1130C; GRANTHA62250x1130D, // 1130D..1130E; UNKNOWN62260x1130F, // 1130F..11310; GRANTHA62270x11311, // 11311..11312; UNKNOWN62280x11313, // 11313..11328; GRANTHA62290x11329, // 11329 ; UNKNOWN62300x1132A, // 1132A..11330; GRANTHA62310x11331, // 11331 ; UNKNOWN62320x11332, // 11332..11333; GRANTHA62330x11334, // 11334 ; UNKNOWN62340x11335, // 11335..11339; GRANTHA62350x1133A, // 1133A ; UNKNOWN62360x1133B, // 1133B ; INHERITED62370x1133C, // 1133C..11344; GRANTHA62380x11345, // 11345..11346; UNKNOWN62390x11347, // 11347..11348; GRANTHA62400x11349, // 11349..1134A; UNKNOWN62410x1134B, // 1134B..1134D; GRANTHA62420x1134E, // 1134E..1134F; UNKNOWN62430x11350, // 11350 ; GRANTHA62440x11351, // 11351..11356; UNKNOWN62450x11357, // 11357 ; GRANTHA62460x11358, // 11358..1135C; UNKNOWN62470x1135D, // 1135D..11363; GRANTHA62480x11364, // 11364..11365; UNKNOWN62490x11366, // 11366..1136C; GRANTHA62500x1136D, // 1136D..1136F; UNKNOWN62510x11370, // 11370..11374; GRANTHA62520x11375, // 11375..113FF; UNKNOWN62530x11400, // 11400..1145B; NEWA62540x1145C, // 1145C ; UNKNOWN62550x1145D, // 1145D..11461; NEWA62560x11462, // 11462..1147F; UNKNOWN62570x11480, // 11480..114C7; TIRHUTA62580x114C8, // 114C8..114CF; UNKNOWN62590x114D0, // 114D0..114D9; TIRHUTA62600x114DA, // 114DA..1157F; UNKNOWN62610x11580, // 11580..115B5; SIDDHAM62620x115B6, // 115B6..115B7; UNKNOWN62630x115B8, // 115B8..115DD; SIDDHAM62640x115DE, // 115DE..115FF; UNKNOWN62650x11600, // 11600..11644; MODI62660x11645, // 11645..1164F; UNKNOWN62670x11650, // 11650..11659; MODI62680x1165A, // 1165A..1165F; UNKNOWN62690x11660, // 11660..1166C; MONGOLIAN62700x1166D, // 1166D..1167F; UNKNOWN62710x11680, // 11680..116B8; TAKRI62720x116B9, // 116B9..116BF; UNKNOWN62730x116C0, // 116C0..116C9; TAKRI62740x116CA, // 116CA..116FF; UNKNOWN62750x11700, // 11700..1171A; AHOM62760x1171B, // 1171B..1171C; UNKNOWN62770x1171D, // 1171D..1172B; AHOM62780x1172C, // 1172C..1172F; UNKNOWN62790x11730, // 11730..1173F; AHOM62800x11740, // 11740..117FF; UNKNOWN62810x11800, // 11800..1183B; DOGRA62820x1183C, // 1183C..1189F; UNKNOWN62830x118A0, // 118A0..118F2; WARANG_CITI62840x118F3, // 118F3..118FE; UNKNOWN62850x118FF, // 118FF ; WARANG_CITI62860x11900, // 11900..11906; DIVES_AKURU62870x11907, // 11907..11908; UNKNOWN62880x11909, // 11909 ; DIVES_AKURU62890x1190A, // 1190A..1190B; UNKNOWN62900x1190C, // 1190C..11913; DIVES_AKURU62910x11914, // 11914 ; UNKNOWN62920x11915, // 11915..11916; DIVES_AKURU62930x11917, // 11917 ; UNKNOWN62940x11918, // 11918..11935; DIVES_AKURU62950x11936, // 11936 ; UNKNOWN62960x11937, // 11937..11938; DIVES_AKURU62970x11939, // 11939..1193A; UNKNOWN62980x1193B, // 1193B..11946; DIVES_AKURU62990x11947, // 11947..1194F; UNKNOWN63000x11950, // 11950..11959; DIVES_AKURU63010x1195A, // 1195A..1199F; UNKNOWN63020x119A0, // 119A0..119A7; NANDINAGARI63030x119A8, // 119A8..119A9; UNKNOWN63040x119AA, // 119AA..119D7; NANDINAGARI63050x119D8, // 119D8..119D9; UNKNOWN63060x119DA, // 119DA..119E4; NANDINAGARI63070x119E5, // 119E5..119FF; UNKNOWN63080x11A00, // 11A00..11A47; ZANABAZAR_SQUARE63090x11A48, // 11A48..11A4F; UNKNOWN63100x11A50, // 11A50..11AA2; SOYOMBO63110x11AA3, // 11AA3..11ABF; UNKNOWN63120x11AC0, // 11AC0..11AF8; PAU_CIN_HAU63130x11AF9, // 11AF9..11BFF; UNKNOWN63140x11C00, // 11C00..11C08; BHAIKSUKI63150x11C09, // 11C09 ; UNKNOWN63160x11C0A, // 11C0A..11C36; BHAIKSUKI63170x11C37, // 11C37 ; UNKNOWN63180x11C38, // 11C38..11C45; BHAIKSUKI63190x11C46, // 11C46..11C4F; UNKNOWN63200x11C50, // 11C50..11C6C; BHAIKSUKI63210x11C6D, // 11C6D..11C6F; UNKNOWN63220x11C70, // 11C70..11C8F; MARCHEN63230x11C90, // 11C90..11C91; UNKNOWN63240x11C92, // 11C92..11CA7; MARCHEN63250x11CA8, // 11CA8 ; UNKNOWN63260x11CA9, // 11CA9..11CB6; MARCHEN63270x11CB7, // 11CB7..11CFF; UNKNOWN63280x11D00, // 11D00..11D06; MASARAM_GONDI63290x11D07, // 11D07 ; UNKNOWN63300x11D08, // 11D08..11D09; MASARAM_GONDI63310x11D0A, // 11D0A ; UNKNOWN63320x11D0B, // 11D0B..11D36; MASARAM_GONDI63330x11D37, // 11D37..11D39; UNKNOWN63340x11D3A, // 11D3A ; MASARAM_GONDI63350x11D3B, // 11D3B ; UNKNOWN63360x11D3C, // 11D3C..11D3D; MASARAM_GONDI63370x11D3E, // 11D3E ; UNKNOWN63380x11D3F, // 11D3F..11D47; MASARAM_GONDI63390x11D48, // 11D48..11D4F; UNKNOWN63400x11D50, // 11D50..11D59; MASARAM_GONDI63410x11D5A, // 11D5A..11D5F; UNKNOWN63420x11D60, // 11D60..11D65; GUNJALA_GONDI63430x11D66, // 11D66 ; UNKNOWN63440x11D67, // 11D67..11D68; GUNJALA_GONDI63450x11D69, // 11D69 ; UNKNOWN63460x11D6A, // 11D6A..11D8E; GUNJALA_GONDI63470x11D8F, // 11D8F ; UNKNOWN63480x11D90, // 11D90..11D91; GUNJALA_GONDI63490x11D92, // 11D92 ; UNKNOWN63500x11D93, // 11D93..11D98; GUNJALA_GONDI63510x11D99, // 11D99..11D9F; UNKNOWN63520x11DA0, // 11DA0..11DA9; GUNJALA_GONDI63530x11DAA, // 11DAA..11EDF; UNKNOWN63540x11EE0, // 11EE0..11EF8; MAKASAR63550x11EF9, // 11EF9..11FAF; UNKNOWN63560x11FB0, // 11FB0 ; LISU63570x11FB1, // 11FB1..11FBF; UNKNOWN63580x11FC0, // 11FC0..11FF1; TAMIL63590x11FF2, // 11FF2..11FFE; UNKNOWN63600x11FFF, // 11FFF ; TAMIL63610x12000, // 12000..12399; CUNEIFORM63620x1239A, // 1239A..123FF; UNKNOWN63630x12400, // 12400..1246E; CUNEIFORM63640x1246F, // 1246F ; UNKNOWN63650x12470, // 12470..12474; CUNEIFORM63660x12475, // 12475..1247F; UNKNOWN63670x12480, // 12480..12543; CUNEIFORM63680x12544, // 12544..12FFF; UNKNOWN63690x13000, // 13000..1342E; EGYPTIAN_HIEROGLYPHS63700x1342F, // 1342F ; UNKNOWN63710x13430, // 13430..13438; EGYPTIAN_HIEROGLYPHS63720x13439, // 13439..143FF; UNKNOWN63730x14400, // 14400..14646; ANATOLIAN_HIEROGLYPHS63740x14647, // 14647..167FF; UNKNOWN63750x16800, // 16800..16A38; BAMUM63760x16A39, // 16A39..16A3F; UNKNOWN63770x16A40, // 16A40..16A5E; MRO63780x16A5F, // 16A5F ; UNKNOWN63790x16A60, // 16A60..16A69; MRO63800x16A6A, // 16A6A..16A6D; UNKNOWN63810x16A6E, // 16A6E..16A6F; MRO63820x16A70, // 16A70..16ACF; UNKNOWN63830x16AD0, // 16AD0..16AED; BASSA_VAH63840x16AEE, // 16AEE..16AEF; UNKNOWN63850x16AF0, // 16AF0..16AF5; BASSA_VAH63860x16AF6, // 16AF6..16AFF; UNKNOWN63870x16B00, // 16B00..16B45; PAHAWH_HMONG63880x16B46, // 16B46..16B4F; UNKNOWN63890x16B50, // 16B50..16B59; PAHAWH_HMONG63900x16B5A, // 16B5A ; UNKNOWN63910x16B5B, // 16B5B..16B61; PAHAWH_HMONG63920x16B62, // 16B62 ; UNKNOWN63930x16B63, // 16B63..16B77; PAHAWH_HMONG63940x16B78, // 16B78..16B7C; UNKNOWN63950x16B7D, // 16B7D..16B8F; PAHAWH_HMONG63960x16B90, // 16B90..16E3F; UNKNOWN63970x16E40, // 16E40..16E9A; MEDEFAIDRIN63980x16E9B, // 16E9B..16EFF; UNKNOWN63990x16F00, // 16F00..16F4A; MIAO64000x16F4B, // 16F4B..16F4E; UNKNOWN64010x16F4F, // 16F4F..16F87; MIAO64020x16F88, // 16F88..16F8E; UNKNOWN64030x16F8F, // 16F8F..16F9F; MIAO64040x16FA0, // 16FA0..16FDF; UNKNOWN64050x16FE0, // 16FE0 ; TANGUT64060x16FE1, // 16FE1 ; NUSHU64070x16FE2, // 16FE2..16FE3; COMMON64080x16FE4, // 16FE4 ; KHITAN_SMALL_SCRIPT64090x16FE5, // 16FE5..16FEF; UNKNOWN64100x16FF0, // 16FF0..16FF1; HAN64110x16FF2, // 16FF2..16FFF; UNKNOWN64120x17000, // 17000..187F7; TANGUT64130x187F8, // 187F8..187FF; UNKNOWN64140x18800, // 18800..18AFF; TANGUT64150x18B00, // 18B00..18CD5; KHITAN_SMALL_SCRIPT64160x18CD6, // 18CD6..18CFF; UNKNOWN64170x18D00, // 18D00..18D08; TANGUT64180x18D09, // 18D09..1AFFF; UNKNOWN64190x1B000, // 1B000 ; KATAKANA64200x1B001, // 1B001..1B11E; HIRAGANA64210x1B11F, // 1B11F..1B14F; UNKNOWN64220x1B150, // 1B150..1B152; HIRAGANA64230x1B153, // 1B153..1B163; UNKNOWN64240x1B164, // 1B164..1B167; KATAKANA64250x1B168, // 1B168..1B16F; UNKNOWN64260x1B170, // 1B170..1B2FB; NUSHU64270x1B2FC, // 1B2FC..1BBFF; UNKNOWN64280x1BC00, // 1BC00..1BC6A; DUPLOYAN64290x1BC6B, // 1BC6B..1BC6F; UNKNOWN64300x1BC70, // 1BC70..1BC7C; DUPLOYAN64310x1BC7D, // 1BC7D..1BC7F; UNKNOWN64320x1BC80, // 1BC80..1BC88; DUPLOYAN64330x1BC89, // 1BC89..1BC8F; UNKNOWN64340x1BC90, // 1BC90..1BC99; DUPLOYAN64350x1BC9A, // 1BC9A..1BC9B; UNKNOWN64360x1BC9C, // 1BC9C..1BC9F; DUPLOYAN64370x1BCA0, // 1BCA0..1BCA3; COMMON64380x1BCA4, // 1BCA4..1CFFF; UNKNOWN64390x1D000, // 1D000..1D0F5; COMMON64400x1D0F6, // 1D0F6..1D0FF; UNKNOWN64410x1D100, // 1D100..1D126; COMMON64420x1D127, // 1D127..1D128; UNKNOWN64430x1D129, // 1D129..1D166; COMMON64440x1D167, // 1D167..1D169; INHERITED64450x1D16A, // 1D16A..1D17A; COMMON64460x1D17B, // 1D17B..1D182; INHERITED64470x1D183, // 1D183..1D184; COMMON64480x1D185, // 1D185..1D18B; INHERITED64490x1D18C, // 1D18C..1D1A9; COMMON64500x1D1AA, // 1D1AA..1D1AD; INHERITED64510x1D1AE, // 1D1AE..1D1E8; COMMON64520x1D1E9, // 1D1E9..1D1FF; UNKNOWN64530x1D200, // 1D200..1D245; GREEK64540x1D246, // 1D246..1D2DF; UNKNOWN64550x1D2E0, // 1D2E0..1D2F3; COMMON64560x1D2F4, // 1D2F4..1D2FF; UNKNOWN64570x1D300, // 1D300..1D356; COMMON64580x1D357, // 1D357..1D35F; UNKNOWN64590x1D360, // 1D360..1D378; COMMON64600x1D379, // 1D379..1D3FF; UNKNOWN64610x1D400, // 1D400..1D454; COMMON64620x1D455, // 1D455 ; UNKNOWN64630x1D456, // 1D456..1D49C; COMMON64640x1D49D, // 1D49D ; UNKNOWN64650x1D49E, // 1D49E..1D49F; COMMON64660x1D4A0, // 1D4A0..1D4A1; UNKNOWN64670x1D4A2, // 1D4A2 ; COMMON64680x1D4A3, // 1D4A3..1D4A4; UNKNOWN64690x1D4A5, // 1D4A5..1D4A6; COMMON64700x1D4A7, // 1D4A7..1D4A8; UNKNOWN64710x1D4A9, // 1D4A9..1D4AC; COMMON64720x1D4AD, // 1D4AD ; UNKNOWN64730x1D4AE, // 1D4AE..1D4B9; COMMON64740x1D4BA, // 1D4BA ; UNKNOWN64750x1D4BB, // 1D4BB ; COMMON64760x1D4BC, // 1D4BC ; UNKNOWN64770x1D4BD, // 1D4BD..1D4C3; COMMON64780x1D4C4, // 1D4C4 ; UNKNOWN64790x1D4C5, // 1D4C5..1D505; COMMON64800x1D506, // 1D506 ; UNKNOWN64810x1D507, // 1D507..1D50A; COMMON64820x1D50B, // 1D50B..1D50C; UNKNOWN64830x1D50D, // 1D50D..1D514; COMMON64840x1D515, // 1D515 ; UNKNOWN64850x1D516, // 1D516..1D51C; COMMON64860x1D51D, // 1D51D ; UNKNOWN64870x1D51E, // 1D51E..1D539; COMMON64880x1D53A, // 1D53A ; UNKNOWN64890x1D53B, // 1D53B..1D53E; COMMON64900x1D53F, // 1D53F ; UNKNOWN64910x1D540, // 1D540..1D544; COMMON64920x1D545, // 1D545 ; UNKNOWN64930x1D546, // 1D546 ; COMMON64940x1D547, // 1D547..1D549; UNKNOWN64950x1D54A, // 1D54A..1D550; COMMON64960x1D551, // 1D551 ; UNKNOWN64970x1D552, // 1D552..1D6A5; COMMON64980x1D6A6, // 1D6A6..1D6A7; UNKNOWN64990x1D6A8, // 1D6A8..1D7CB; COMMON65000x1D7CC, // 1D7CC..1D7CD; UNKNOWN65010x1D7CE, // 1D7CE..1D7FF; COMMON65020x1D800, // 1D800..1DA8B; SIGNWRITING65030x1DA8C, // 1DA8C..1DA9A; UNKNOWN65040x1DA9B, // 1DA9B..1DA9F; SIGNWRITING65050x1DAA0, // 1DAA0 ; UNKNOWN65060x1DAA1, // 1DAA1..1DAAF; SIGNWRITING65070x1DAB0, // 1DAB0..1DFFF; UNKNOWN65080x1E000, // 1E000..1E006; GLAGOLITIC65090x1E007, // 1E007 ; UNKNOWN65100x1E008, // 1E008..1E018; GLAGOLITIC65110x1E019, // 1E019..1E01A; UNKNOWN65120x1E01B, // 1E01B..1E021; GLAGOLITIC65130x1E022, // 1E022 ; UNKNOWN65140x1E023, // 1E023..1E024; GLAGOLITIC65150x1E025, // 1E025 ; UNKNOWN65160x1E026, // 1E026..1E02A; GLAGOLITIC65170x1E02B, // 1E02B..1E0FF; UNKNOWN65180x1E100, // 1E100..1E12C; NYIAKENG_PUACHUE_HMONG65190x1E12D, // 1E12D..1E12F; UNKNOWN65200x1E130, // 1E130..1E13D; NYIAKENG_PUACHUE_HMONG65210x1E13E, // 1E13E..1E13F; UNKNOWN65220x1E140, // 1E140..1E149; NYIAKENG_PUACHUE_HMONG65230x1E14A, // 1E14A..1E14D; UNKNOWN65240x1E14E, // 1E14E..1E14F; NYIAKENG_PUACHUE_HMONG65250x1E150, // 1E150..1E2BF; UNKNOWN65260x1E2C0, // 1E2C0..1E2F9; WANCHO65270x1E2FA, // 1E2FA..1E2FE; UNKNOWN65280x1E2FF, // 1E2FF ; WANCHO65290x1E300, // 1E300..1E7FF; UNKNOWN65300x1E800, // 1E800..1E8C4; MENDE_KIKAKUI65310x1E8C5, // 1E8C5..1E8C6; UNKNOWN65320x1E8C7, // 1E8C7..1E8D6; MENDE_KIKAKUI65330x1E8D7, // 1E8D7..1E8FF; UNKNOWN65340x1E900, // 1E900..1E94B; ADLAM65350x1E94C, // 1E94C..1E94F; UNKNOWN65360x1E950, // 1E950..1E959; ADLAM65370x1E95A, // 1E95A..1E95D; UNKNOWN65380x1E95E, // 1E95E..1E95F; ADLAM65390x1E960, // 1E960..1EC70; UNKNOWN65400x1EC71, // 1EC71..1ECB4; COMMON65410x1ECB5, // 1ECB5..1ED00; UNKNOWN65420x1ED01, // 1ED01..1ED3D; COMMON65430x1ED3E, // 1ED3E..1EDFF; UNKNOWN65440x1EE00, // 1EE00..1EE03; ARABIC65450x1EE04, // 1EE04 ; UNKNOWN65460x1EE05, // 1EE05..1EE1F; ARABIC65470x1EE20, // 1EE20 ; UNKNOWN65480x1EE21, // 1EE21..1EE22; ARABIC65490x1EE23, // 1EE23 ; UNKNOWN65500x1EE24, // 1EE24 ; ARABIC65510x1EE25, // 1EE25..1EE26; UNKNOWN65520x1EE27, // 1EE27 ; ARABIC65530x1EE28, // 1EE28 ; UNKNOWN65540x1EE29, // 1EE29..1EE32; ARABIC65550x1EE33, // 1EE33 ; UNKNOWN65560x1EE34, // 1EE34..1EE37; ARABIC65570x1EE38, // 1EE38 ; UNKNOWN65580x1EE39, // 1EE39 ; ARABIC65590x1EE3A, // 1EE3A ; UNKNOWN65600x1EE3B, // 1EE3B ; ARABIC65610x1EE3C, // 1EE3C..1EE41; UNKNOWN65620x1EE42, // 1EE42 ; ARABIC65630x1EE43, // 1EE43..1EE46; UNKNOWN65640x1EE47, // 1EE47 ; ARABIC65650x1EE48, // 1EE48 ; UNKNOWN65660x1EE49, // 1EE49 ; ARABIC65670x1EE4A, // 1EE4A ; UNKNOWN65680x1EE4B, // 1EE4B ; ARABIC65690x1EE4C, // 1EE4C ; UNKNOWN65700x1EE4D, // 1EE4D..1EE4F; ARABIC65710x1EE50, // 1EE50 ; UNKNOWN65720x1EE51, // 1EE51..1EE52; ARABIC65730x1EE53, // 1EE53 ; UNKNOWN65740x1EE54, // 1EE54 ; ARABIC65750x1EE55, // 1EE55..1EE56; UNKNOWN65760x1EE57, // 1EE57 ; ARABIC65770x1EE58, // 1EE58 ; UNKNOWN65780x1EE59, // 1EE59 ; ARABIC65790x1EE5A, // 1EE5A ; UNKNOWN65800x1EE5B, // 1EE5B ; ARABIC65810x1EE5C, // 1EE5C ; UNKNOWN65820x1EE5D, // 1EE5D ; ARABIC65830x1EE5E, // 1EE5E ; UNKNOWN65840x1EE5F, // 1EE5F ; ARABIC65850x1EE60, // 1EE60 ; UNKNOWN65860x1EE61, // 1EE61..1EE62; ARABIC65870x1EE63, // 1EE63 ; UNKNOWN65880x1EE64, // 1EE64 ; ARABIC65890x1EE65, // 1EE65..1EE66; UNKNOWN65900x1EE67, // 1EE67..1EE6A; ARABIC65910x1EE6B, // 1EE6B ; UNKNOWN65920x1EE6C, // 1EE6C..1EE72; ARABIC65930x1EE73, // 1EE73 ; UNKNOWN65940x1EE74, // 1EE74..1EE77; ARABIC65950x1EE78, // 1EE78 ; UNKNOWN65960x1EE79, // 1EE79..1EE7C; ARABIC65970x1EE7D, // 1EE7D ; UNKNOWN65980x1EE7E, // 1EE7E ; ARABIC65990x1EE7F, // 1EE7F ; UNKNOWN66000x1EE80, // 1EE80..1EE89; ARABIC66010x1EE8A, // 1EE8A ; UNKNOWN66020x1EE8B, // 1EE8B..1EE9B; ARABIC66030x1EE9C, // 1EE9C..1EEA0; UNKNOWN66040x1EEA1, // 1EEA1..1EEA3; ARABIC66050x1EEA4, // 1EEA4 ; UNKNOWN66060x1EEA5, // 1EEA5..1EEA9; ARABIC66070x1EEAA, // 1EEAA ; UNKNOWN66080x1EEAB, // 1EEAB..1EEBB; ARABIC66090x1EEBC, // 1EEBC..1EEEF; UNKNOWN66100x1EEF0, // 1EEF0..1EEF1; ARABIC66110x1EEF2, // 1EEF2..1EFFF; UNKNOWN66120x1F000, // 1F000..1F02B; COMMON66130x1F02C, // 1F02C..1F02F; UNKNOWN66140x1F030, // 1F030..1F093; COMMON66150x1F094, // 1F094..1F09F; UNKNOWN66160x1F0A0, // 1F0A0..1F0AE; COMMON66170x1F0AF, // 1F0AF..1F0B0; UNKNOWN66180x1F0B1, // 1F0B1..1F0BF; COMMON66190x1F0C0, // 1F0C0 ; UNKNOWN66200x1F0C1, // 1F0C1..1F0CF; COMMON66210x1F0D0, // 1F0D0 ; UNKNOWN66220x1F0D1, // 1F0D1..1F0F5; COMMON66230x1F0F6, // 1F0F6..1F0FF; UNKNOWN66240x1F100, // 1F100..1F1AD; COMMON66250x1F1AE, // 1F1AE..1F1E5; UNKNOWN66260x1F1E6, // 1F1E6..1F1FF; COMMON66270x1F200, // 1F200 ; HIRAGANA66280x1F201, // 1F201..1F202; COMMON66290x1F203, // 1F203..1F20F; UNKNOWN66300x1F210, // 1F210..1F23B; COMMON66310x1F23C, // 1F23C..1F23F; UNKNOWN66320x1F240, // 1F240..1F248; COMMON66330x1F249, // 1F249..1F24F; UNKNOWN66340x1F250, // 1F250..1F251; COMMON66350x1F252, // 1F252..1F25F; UNKNOWN66360x1F260, // 1F260..1F265; COMMON66370x1F266, // 1F266..1F2FF; UNKNOWN66380x1F300, // 1F300..1F6D7; COMMON66390x1F6D8, // 1F6D8..1F6DF; UNKNOWN66400x1F6E0, // 1F6E0..1F6EC; COMMON66410x1F6ED, // 1F6ED..1F6EF; UNKNOWN66420x1F6F0, // 1F6F0..1F6FC; COMMON66430x1F6FD, // 1F6FD..1F6FF; UNKNOWN66440x1F700, // 1F700..1F773; COMMON66450x1F774, // 1F774..1F77F; UNKNOWN66460x1F780, // 1F780..1F7D8; COMMON66470x1F7D9, // 1F7D9..1F7DF; UNKNOWN66480x1F7E0, // 1F7E0..1F7EB; COMMON66490x1F7EC, // 1F7EC..1F7FF; UNKNOWN66500x1F800, // 1F800..1F80B; COMMON66510x1F80C, // 1F80C..1F80F; UNKNOWN66520x1F810, // 1F810..1F847; COMMON66530x1F848, // 1F848..1F84F; UNKNOWN66540x1F850, // 1F850..1F859; COMMON66550x1F85A, // 1F85A..1F85F; UNKNOWN66560x1F860, // 1F860..1F887; COMMON66570x1F888, // 1F888..1F88F; UNKNOWN66580x1F890, // 1F890..1F8AD; COMMON66590x1F8AE, // 1F8AE..1F8AF; UNKNOWN66600x1F8B0, // 1F8B0..1F8B1; COMMON66610x1F8B2, // 1F8B2..1F8FF; UNKNOWN66620x1F900, // 1F900..1F978; COMMON66630x1F979, // 1F979 ; UNKNOWN66640x1F97A, // 1F97A..1F9CB; COMMON66650x1F9CC, // 1F9CC ; UNKNOWN66660x1F9CD, // 1F9CD..1FA53; COMMON66670x1FA54, // 1FA54..1FA5F; UNKNOWN66680x1FA60, // 1FA60..1FA6D; COMMON66690x1FA6E, // 1FA6E..1FA6F; UNKNOWN66700x1FA70, // 1FA70..1FA74; COMMON66710x1FA75, // 1FA75..1FA77; UNKNOWN66720x1FA78, // 1FA78..1FA7A; COMMON66730x1FA7B, // 1FA7B..1FA7F; UNKNOWN66740x1FA80, // 1FA80..1FA86; COMMON66750x1FA87, // 1FA87..1FA8F; UNKNOWN66760x1FA90, // 1FA90..1FAA8; COMMON66770x1FAA9, // 1FAA9..1FAAF; UNKNOWN66780x1FAB0, // 1FAB0..1FAB6; COMMON66790x1FAB7, // 1FAB7..1FABF; UNKNOWN66800x1FAC0, // 1FAC0..1FAC2; COMMON66810x1FAC3, // 1FAC3..1FACF; UNKNOWN66820x1FAD0, // 1FAD0..1FAD6; COMMON66830x1FAD7, // 1FAD7..1FAFF; UNKNOWN66840x1FB00, // 1FB00..1FB92; COMMON66850x1FB93, // 1FB93 ; UNKNOWN66860x1FB94, // 1FB94..1FBCA; COMMON66870x1FBCB, // 1FBCB..1FBEF; UNKNOWN66880x1FBF0, // 1FBF0..1FBF9; COMMON66890x1FBFA, // 1FBFA..1FFFF; UNKNOWN66900x20000, // 20000..2A6DD; HAN66910x2A6DE, // 2A6DE..2A6FF; UNKNOWN66920x2A700, // 2A700..2B734; HAN66930x2B735, // 2B735..2B73F; UNKNOWN66940x2B740, // 2B740..2B81D; HAN66950x2B81E, // 2B81E..2B81F; UNKNOWN66960x2B820, // 2B820..2CEA1; HAN66970x2CEA2, // 2CEA2..2CEAF; UNKNOWN66980x2CEB0, // 2CEB0..2EBE0; HAN66990x2EBE1, // 2EBE1..2F7FF; UNKNOWN67000x2F800, // 2F800..2FA1D; HAN67010x2FA1E, // 2FA1E..2FFFF; UNKNOWN67020x30000, // 30000..3134A; HAN67030x3134B, // 3134B..E0000; UNKNOWN67040xE0001, // E0001 ; COMMON67050xE0002, // E0002..E001F; UNKNOWN67060xE0020, // E0020..E007F; COMMON67070xE0080, // E0080..E00FF; UNKNOWN67080xE0100, // E0100..E01EF; INHERITED67090xE01F0, // E01F0..10FFFF; UNKNOWN6710};67116712private static final UnicodeScript[] scripts = {6713COMMON, // 0000..00406714LATIN, // 0041..005A6715COMMON, // 005B..00606716LATIN, // 0061..007A6717COMMON, // 007B..00A96718LATIN, // 00AA6719COMMON, // 00AB..00B96720LATIN, // 00BA6721COMMON, // 00BB..00BF6722LATIN, // 00C0..00D66723COMMON, // 00D76724LATIN, // 00D8..00F66725COMMON, // 00F76726LATIN, // 00F8..02B86727COMMON, // 02B9..02DF6728LATIN, // 02E0..02E46729COMMON, // 02E5..02E96730BOPOMOFO, // 02EA..02EB6731COMMON, // 02EC..02FF6732INHERITED, // 0300..036F6733GREEK, // 0370..03736734COMMON, // 03746735GREEK, // 0375..03776736UNKNOWN, // 0378..03796737GREEK, // 037A..037D6738COMMON, // 037E6739GREEK, // 037F6740UNKNOWN, // 0380..03836741GREEK, // 03846742COMMON, // 03856743GREEK, // 03866744COMMON, // 03876745GREEK, // 0388..038A6746UNKNOWN, // 038B6747GREEK, // 038C6748UNKNOWN, // 038D6749GREEK, // 038E..03A16750UNKNOWN, // 03A26751GREEK, // 03A3..03E16752COPTIC, // 03E2..03EF6753GREEK, // 03F0..03FF6754CYRILLIC, // 0400..04846755INHERITED, // 0485..04866756CYRILLIC, // 0487..052F6757UNKNOWN, // 05306758ARMENIAN, // 0531..05566759UNKNOWN, // 0557..05586760ARMENIAN, // 0559..058A6761UNKNOWN, // 058B..058C6762ARMENIAN, // 058D..058F6763UNKNOWN, // 05906764HEBREW, // 0591..05C76765UNKNOWN, // 05C8..05CF6766HEBREW, // 05D0..05EA6767UNKNOWN, // 05EB..05EE6768HEBREW, // 05EF..05F46769UNKNOWN, // 05F5..05FF6770ARABIC, // 0600..06046771COMMON, // 06056772ARABIC, // 0606..060B6773COMMON, // 060C6774ARABIC, // 060D..061A6775COMMON, // 061B6776ARABIC, // 061C6777UNKNOWN, // 061D6778ARABIC, // 061E6779COMMON, // 061F6780ARABIC, // 0620..063F6781COMMON, // 06406782ARABIC, // 0641..064A6783INHERITED, // 064B..06556784ARABIC, // 0656..066F6785INHERITED, // 06706786ARABIC, // 0671..06DC6787COMMON, // 06DD6788ARABIC, // 06DE..06FF6789SYRIAC, // 0700..070D6790UNKNOWN, // 070E6791SYRIAC, // 070F..074A6792UNKNOWN, // 074B..074C6793SYRIAC, // 074D..074F6794ARABIC, // 0750..077F6795THAANA, // 0780..07B16796UNKNOWN, // 07B2..07BF6797NKO, // 07C0..07FA6798UNKNOWN, // 07FB..07FC6799NKO, // 07FD..07FF6800SAMARITAN, // 0800..082D6801UNKNOWN, // 082E..082F6802SAMARITAN, // 0830..083E6803UNKNOWN, // 083F6804MANDAIC, // 0840..085B6805UNKNOWN, // 085C..085D6806MANDAIC, // 085E6807UNKNOWN, // 085F6808SYRIAC, // 0860..086A6809UNKNOWN, // 086B..089F6810ARABIC, // 08A0..08B46811UNKNOWN, // 08B56812ARABIC, // 08B6..08C76813UNKNOWN, // 08C8..08D26814ARABIC, // 08D3..08E16815COMMON, // 08E26816ARABIC, // 08E3..08FF6817DEVANAGARI, // 0900..09506818INHERITED, // 0951..09546819DEVANAGARI, // 0955..09636820COMMON, // 0964..09656821DEVANAGARI, // 0966..097F6822BENGALI, // 0980..09836823UNKNOWN, // 09846824BENGALI, // 0985..098C6825UNKNOWN, // 098D..098E6826BENGALI, // 098F..09906827UNKNOWN, // 0991..09926828BENGALI, // 0993..09A86829UNKNOWN, // 09A96830BENGALI, // 09AA..09B06831UNKNOWN, // 09B16832BENGALI, // 09B26833UNKNOWN, // 09B3..09B56834BENGALI, // 09B6..09B96835UNKNOWN, // 09BA..09BB6836BENGALI, // 09BC..09C46837UNKNOWN, // 09C5..09C66838BENGALI, // 09C7..09C86839UNKNOWN, // 09C9..09CA6840BENGALI, // 09CB..09CE6841UNKNOWN, // 09CF..09D66842BENGALI, // 09D76843UNKNOWN, // 09D8..09DB6844BENGALI, // 09DC..09DD6845UNKNOWN, // 09DE6846BENGALI, // 09DF..09E36847UNKNOWN, // 09E4..09E56848BENGALI, // 09E6..09FE6849UNKNOWN, // 09FF..0A006850GURMUKHI, // 0A01..0A036851UNKNOWN, // 0A046852GURMUKHI, // 0A05..0A0A6853UNKNOWN, // 0A0B..0A0E6854GURMUKHI, // 0A0F..0A106855UNKNOWN, // 0A11..0A126856GURMUKHI, // 0A13..0A286857UNKNOWN, // 0A296858GURMUKHI, // 0A2A..0A306859UNKNOWN, // 0A316860GURMUKHI, // 0A32..0A336861UNKNOWN, // 0A346862GURMUKHI, // 0A35..0A366863UNKNOWN, // 0A376864GURMUKHI, // 0A38..0A396865UNKNOWN, // 0A3A..0A3B6866GURMUKHI, // 0A3C6867UNKNOWN, // 0A3D6868GURMUKHI, // 0A3E..0A426869UNKNOWN, // 0A43..0A466870GURMUKHI, // 0A47..0A486871UNKNOWN, // 0A49..0A4A6872GURMUKHI, // 0A4B..0A4D6873UNKNOWN, // 0A4E..0A506874GURMUKHI, // 0A516875UNKNOWN, // 0A52..0A586876GURMUKHI, // 0A59..0A5C6877UNKNOWN, // 0A5D6878GURMUKHI, // 0A5E6879UNKNOWN, // 0A5F..0A656880GURMUKHI, // 0A66..0A766881UNKNOWN, // 0A77..0A806882GUJARATI, // 0A81..0A836883UNKNOWN, // 0A846884GUJARATI, // 0A85..0A8D6885UNKNOWN, // 0A8E6886GUJARATI, // 0A8F..0A916887UNKNOWN, // 0A926888GUJARATI, // 0A93..0AA86889UNKNOWN, // 0AA96890GUJARATI, // 0AAA..0AB06891UNKNOWN, // 0AB16892GUJARATI, // 0AB2..0AB36893UNKNOWN, // 0AB46894GUJARATI, // 0AB5..0AB96895UNKNOWN, // 0ABA..0ABB6896GUJARATI, // 0ABC..0AC56897UNKNOWN, // 0AC66898GUJARATI, // 0AC7..0AC96899UNKNOWN, // 0ACA6900GUJARATI, // 0ACB..0ACD6901UNKNOWN, // 0ACE..0ACF6902GUJARATI, // 0AD06903UNKNOWN, // 0AD1..0ADF6904GUJARATI, // 0AE0..0AE36905UNKNOWN, // 0AE4..0AE56906GUJARATI, // 0AE6..0AF16907UNKNOWN, // 0AF2..0AF86908GUJARATI, // 0AF9..0AFF6909UNKNOWN, // 0B006910ORIYA, // 0B01..0B036911UNKNOWN, // 0B046912ORIYA, // 0B05..0B0C6913UNKNOWN, // 0B0D..0B0E6914ORIYA, // 0B0F..0B106915UNKNOWN, // 0B11..0B126916ORIYA, // 0B13..0B286917UNKNOWN, // 0B296918ORIYA, // 0B2A..0B306919UNKNOWN, // 0B316920ORIYA, // 0B32..0B336921UNKNOWN, // 0B346922ORIYA, // 0B35..0B396923UNKNOWN, // 0B3A..0B3B6924ORIYA, // 0B3C..0B446925UNKNOWN, // 0B45..0B466926ORIYA, // 0B47..0B486927UNKNOWN, // 0B49..0B4A6928ORIYA, // 0B4B..0B4D6929UNKNOWN, // 0B4E..0B546930ORIYA, // 0B55..0B576931UNKNOWN, // 0B58..0B5B6932ORIYA, // 0B5C..0B5D6933UNKNOWN, // 0B5E6934ORIYA, // 0B5F..0B636935UNKNOWN, // 0B64..0B656936ORIYA, // 0B66..0B776937UNKNOWN, // 0B78..0B816938TAMIL, // 0B82..0B836939UNKNOWN, // 0B846940TAMIL, // 0B85..0B8A6941UNKNOWN, // 0B8B..0B8D6942TAMIL, // 0B8E..0B906943UNKNOWN, // 0B916944TAMIL, // 0B92..0B956945UNKNOWN, // 0B96..0B986946TAMIL, // 0B99..0B9A6947UNKNOWN, // 0B9B6948TAMIL, // 0B9C6949UNKNOWN, // 0B9D6950TAMIL, // 0B9E..0B9F6951UNKNOWN, // 0BA0..0BA26952TAMIL, // 0BA3..0BA46953UNKNOWN, // 0BA5..0BA76954TAMIL, // 0BA8..0BAA6955UNKNOWN, // 0BAB..0BAD6956TAMIL, // 0BAE..0BB96957UNKNOWN, // 0BBA..0BBD6958TAMIL, // 0BBE..0BC26959UNKNOWN, // 0BC3..0BC56960TAMIL, // 0BC6..0BC86961UNKNOWN, // 0BC96962TAMIL, // 0BCA..0BCD6963UNKNOWN, // 0BCE..0BCF6964TAMIL, // 0BD06965UNKNOWN, // 0BD1..0BD66966TAMIL, // 0BD76967UNKNOWN, // 0BD8..0BE56968TAMIL, // 0BE6..0BFA6969UNKNOWN, // 0BFB..0BFF6970TELUGU, // 0C00..0C0C6971UNKNOWN, // 0C0D6972TELUGU, // 0C0E..0C106973UNKNOWN, // 0C116974TELUGU, // 0C12..0C286975UNKNOWN, // 0C296976TELUGU, // 0C2A..0C396977UNKNOWN, // 0C3A..0C3C6978TELUGU, // 0C3D..0C446979UNKNOWN, // 0C456980TELUGU, // 0C46..0C486981UNKNOWN, // 0C496982TELUGU, // 0C4A..0C4D6983UNKNOWN, // 0C4E..0C546984TELUGU, // 0C55..0C566985UNKNOWN, // 0C576986TELUGU, // 0C58..0C5A6987UNKNOWN, // 0C5B..0C5F6988TELUGU, // 0C60..0C636989UNKNOWN, // 0C64..0C656990TELUGU, // 0C66..0C6F6991UNKNOWN, // 0C70..0C766992TELUGU, // 0C77..0C7F6993KANNADA, // 0C80..0C8C6994UNKNOWN, // 0C8D6995KANNADA, // 0C8E..0C906996UNKNOWN, // 0C916997KANNADA, // 0C92..0CA86998UNKNOWN, // 0CA96999KANNADA, // 0CAA..0CB37000UNKNOWN, // 0CB47001KANNADA, // 0CB5..0CB97002UNKNOWN, // 0CBA..0CBB7003KANNADA, // 0CBC..0CC47004UNKNOWN, // 0CC57005KANNADA, // 0CC6..0CC87006UNKNOWN, // 0CC97007KANNADA, // 0CCA..0CCD7008UNKNOWN, // 0CCE..0CD47009KANNADA, // 0CD5..0CD67010UNKNOWN, // 0CD7..0CDD7011KANNADA, // 0CDE7012UNKNOWN, // 0CDF7013KANNADA, // 0CE0..0CE37014UNKNOWN, // 0CE4..0CE57015KANNADA, // 0CE6..0CEF7016UNKNOWN, // 0CF07017KANNADA, // 0CF1..0CF27018UNKNOWN, // 0CF3..0CFF7019MALAYALAM, // 0D00..0D0C7020UNKNOWN, // 0D0D7021MALAYALAM, // 0D0E..0D107022UNKNOWN, // 0D117023MALAYALAM, // 0D12..0D447024UNKNOWN, // 0D457025MALAYALAM, // 0D46..0D487026UNKNOWN, // 0D497027MALAYALAM, // 0D4A..0D4F7028UNKNOWN, // 0D50..0D537029MALAYALAM, // 0D54..0D637030UNKNOWN, // 0D64..0D657031MALAYALAM, // 0D66..0D7F7032UNKNOWN, // 0D807033SINHALA, // 0D81..0D837034UNKNOWN, // 0D847035SINHALA, // 0D85..0D967036UNKNOWN, // 0D97..0D997037SINHALA, // 0D9A..0DB17038UNKNOWN, // 0DB27039SINHALA, // 0DB3..0DBB7040UNKNOWN, // 0DBC7041SINHALA, // 0DBD7042UNKNOWN, // 0DBE..0DBF7043SINHALA, // 0DC0..0DC67044UNKNOWN, // 0DC7..0DC97045SINHALA, // 0DCA7046UNKNOWN, // 0DCB..0DCE7047SINHALA, // 0DCF..0DD47048UNKNOWN, // 0DD57049SINHALA, // 0DD67050UNKNOWN, // 0DD77051SINHALA, // 0DD8..0DDF7052UNKNOWN, // 0DE0..0DE57053SINHALA, // 0DE6..0DEF7054UNKNOWN, // 0DF0..0DF17055SINHALA, // 0DF2..0DF47056UNKNOWN, // 0DF5..0E007057THAI, // 0E01..0E3A7058UNKNOWN, // 0E3B..0E3E7059COMMON, // 0E3F7060THAI, // 0E40..0E5B7061UNKNOWN, // 0E5C..0E807062LAO, // 0E81..0E827063UNKNOWN, // 0E837064LAO, // 0E847065UNKNOWN, // 0E857066LAO, // 0E86..0E8A7067UNKNOWN, // 0E8B7068LAO, // 0E8C..0EA37069UNKNOWN, // 0EA47070LAO, // 0EA57071UNKNOWN, // 0EA67072LAO, // 0EA7..0EBD7073UNKNOWN, // 0EBE..0EBF7074LAO, // 0EC0..0EC47075UNKNOWN, // 0EC57076LAO, // 0EC67077UNKNOWN, // 0EC77078LAO, // 0EC8..0ECD7079UNKNOWN, // 0ECE..0ECF7080LAO, // 0ED0..0ED97081UNKNOWN, // 0EDA..0EDB7082LAO, // 0EDC..0EDF7083UNKNOWN, // 0EE0..0EFF7084TIBETAN, // 0F00..0F477085UNKNOWN, // 0F487086TIBETAN, // 0F49..0F6C7087UNKNOWN, // 0F6D..0F707088TIBETAN, // 0F71..0F977089UNKNOWN, // 0F987090TIBETAN, // 0F99..0FBC7091UNKNOWN, // 0FBD7092TIBETAN, // 0FBE..0FCC7093UNKNOWN, // 0FCD7094TIBETAN, // 0FCE..0FD47095COMMON, // 0FD5..0FD87096TIBETAN, // 0FD9..0FDA7097UNKNOWN, // 0FDB..0FFF7098MYANMAR, // 1000..109F7099GEORGIAN, // 10A0..10C57100UNKNOWN, // 10C67101GEORGIAN, // 10C77102UNKNOWN, // 10C8..10CC7103GEORGIAN, // 10CD7104UNKNOWN, // 10CE..10CF7105GEORGIAN, // 10D0..10FA7106COMMON, // 10FB7107GEORGIAN, // 10FC..10FF7108HANGUL, // 1100..11FF7109ETHIOPIC, // 1200..12487110UNKNOWN, // 12497111ETHIOPIC, // 124A..124D7112UNKNOWN, // 124E..124F7113ETHIOPIC, // 1250..12567114UNKNOWN, // 12577115ETHIOPIC, // 12587116UNKNOWN, // 12597117ETHIOPIC, // 125A..125D7118UNKNOWN, // 125E..125F7119ETHIOPIC, // 1260..12887120UNKNOWN, // 12897121ETHIOPIC, // 128A..128D7122UNKNOWN, // 128E..128F7123ETHIOPIC, // 1290..12B07124UNKNOWN, // 12B17125ETHIOPIC, // 12B2..12B57126UNKNOWN, // 12B6..12B77127ETHIOPIC, // 12B8..12BE7128UNKNOWN, // 12BF7129ETHIOPIC, // 12C07130UNKNOWN, // 12C17131ETHIOPIC, // 12C2..12C57132UNKNOWN, // 12C6..12C77133ETHIOPIC, // 12C8..12D67134UNKNOWN, // 12D77135ETHIOPIC, // 12D8..13107136UNKNOWN, // 13117137ETHIOPIC, // 1312..13157138UNKNOWN, // 1316..13177139ETHIOPIC, // 1318..135A7140UNKNOWN, // 135B..135C7141ETHIOPIC, // 135D..137C7142UNKNOWN, // 137D..137F7143ETHIOPIC, // 1380..13997144UNKNOWN, // 139A..139F7145CHEROKEE, // 13A0..13F57146UNKNOWN, // 13F6..13F77147CHEROKEE, // 13F8..13FD7148UNKNOWN, // 13FE..13FF7149CANADIAN_ABORIGINAL, // 1400..167F7150OGHAM, // 1680..169C7151UNKNOWN, // 169D..169F7152RUNIC, // 16A0..16EA7153COMMON, // 16EB..16ED7154RUNIC, // 16EE..16F87155UNKNOWN, // 16F9..16FF7156TAGALOG, // 1700..170C7157UNKNOWN, // 170D7158TAGALOG, // 170E..17147159UNKNOWN, // 1715..171F7160HANUNOO, // 1720..17347161COMMON, // 1735..17367162UNKNOWN, // 1737..173F7163BUHID, // 1740..17537164UNKNOWN, // 1754..175F7165TAGBANWA, // 1760..176C7166UNKNOWN, // 176D7167TAGBANWA, // 176E..17707168UNKNOWN, // 17717169TAGBANWA, // 1772..17737170UNKNOWN, // 1774..177F7171KHMER, // 1780..17DD7172UNKNOWN, // 17DE..17DF7173KHMER, // 17E0..17E97174UNKNOWN, // 17EA..17EF7175KHMER, // 17F0..17F97176UNKNOWN, // 17FA..17FF7177MONGOLIAN, // 1800..18017178COMMON, // 1802..18037179MONGOLIAN, // 18047180COMMON, // 18057181MONGOLIAN, // 1806..180E7182UNKNOWN, // 180F7183MONGOLIAN, // 1810..18197184UNKNOWN, // 181A..181F7185MONGOLIAN, // 1820..18787186UNKNOWN, // 1879..187F7187MONGOLIAN, // 1880..18AA7188UNKNOWN, // 18AB..18AF7189CANADIAN_ABORIGINAL, // 18B0..18F57190UNKNOWN, // 18F6..18FF7191LIMBU, // 1900..191E7192UNKNOWN, // 191F7193LIMBU, // 1920..192B7194UNKNOWN, // 192C..192F7195LIMBU, // 1930..193B7196UNKNOWN, // 193C..193F7197LIMBU, // 19407198UNKNOWN, // 1941..19437199LIMBU, // 1944..194F7200TAI_LE, // 1950..196D7201UNKNOWN, // 196E..196F7202TAI_LE, // 1970..19747203UNKNOWN, // 1975..197F7204NEW_TAI_LUE, // 1980..19AB7205UNKNOWN, // 19AC..19AF7206NEW_TAI_LUE, // 19B0..19C97207UNKNOWN, // 19CA..19CF7208NEW_TAI_LUE, // 19D0..19DA7209UNKNOWN, // 19DB..19DD7210NEW_TAI_LUE, // 19DE..19DF7211KHMER, // 19E0..19FF7212BUGINESE, // 1A00..1A1B7213UNKNOWN, // 1A1C..1A1D7214BUGINESE, // 1A1E..1A1F7215TAI_THAM, // 1A20..1A5E7216UNKNOWN, // 1A5F7217TAI_THAM, // 1A60..1A7C7218UNKNOWN, // 1A7D..1A7E7219TAI_THAM, // 1A7F..1A897220UNKNOWN, // 1A8A..1A8F7221TAI_THAM, // 1A90..1A997222UNKNOWN, // 1A9A..1A9F7223TAI_THAM, // 1AA0..1AAD7224UNKNOWN, // 1AAE..1AAF7225INHERITED, // 1AB0..1AC07226UNKNOWN, // 1AC1..1AFF7227BALINESE, // 1B00..1B4B7228UNKNOWN, // 1B4C..1B4F7229BALINESE, // 1B50..1B7C7230UNKNOWN, // 1B7D..1B7F7231SUNDANESE, // 1B80..1BBF7232BATAK, // 1BC0..1BF37233UNKNOWN, // 1BF4..1BFB7234BATAK, // 1BFC..1BFF7235LEPCHA, // 1C00..1C377236UNKNOWN, // 1C38..1C3A7237LEPCHA, // 1C3B..1C497238UNKNOWN, // 1C4A..1C4C7239LEPCHA, // 1C4D..1C4F7240OL_CHIKI, // 1C50..1C7F7241CYRILLIC, // 1C80..1C887242UNKNOWN, // 1C89..1C8F7243GEORGIAN, // 1C90..1CBA7244UNKNOWN, // 1CBB..1CBC7245GEORGIAN, // 1CBD..1CBF7246SUNDANESE, // 1CC0..1CC77247UNKNOWN, // 1CC8..1CCF7248INHERITED, // 1CD0..1CD27249COMMON, // 1CD37250INHERITED, // 1CD4..1CE07251COMMON, // 1CE17252INHERITED, // 1CE2..1CE87253COMMON, // 1CE9..1CEC7254INHERITED, // 1CED7255COMMON, // 1CEE..1CF37256INHERITED, // 1CF47257COMMON, // 1CF5..1CF77258INHERITED, // 1CF8..1CF97259COMMON, // 1CFA7260UNKNOWN, // 1CFB..1CFF7261LATIN, // 1D00..1D257262GREEK, // 1D26..1D2A7263CYRILLIC, // 1D2B7264LATIN, // 1D2C..1D5C7265GREEK, // 1D5D..1D617266LATIN, // 1D62..1D657267GREEK, // 1D66..1D6A7268LATIN, // 1D6B..1D777269CYRILLIC, // 1D787270LATIN, // 1D79..1DBE7271GREEK, // 1DBF7272INHERITED, // 1DC0..1DF97273UNKNOWN, // 1DFA7274INHERITED, // 1DFB..1DFF7275LATIN, // 1E00..1EFF7276GREEK, // 1F00..1F157277UNKNOWN, // 1F16..1F177278GREEK, // 1F18..1F1D7279UNKNOWN, // 1F1E..1F1F7280GREEK, // 1F20..1F457281UNKNOWN, // 1F46..1F477282GREEK, // 1F48..1F4D7283UNKNOWN, // 1F4E..1F4F7284GREEK, // 1F50..1F577285UNKNOWN, // 1F587286GREEK, // 1F597287UNKNOWN, // 1F5A7288GREEK, // 1F5B7289UNKNOWN, // 1F5C7290GREEK, // 1F5D7291UNKNOWN, // 1F5E7292GREEK, // 1F5F..1F7D7293UNKNOWN, // 1F7E..1F7F7294GREEK, // 1F80..1FB47295UNKNOWN, // 1FB57296GREEK, // 1FB6..1FC47297UNKNOWN, // 1FC57298GREEK, // 1FC6..1FD37299UNKNOWN, // 1FD4..1FD57300GREEK, // 1FD6..1FDB7301UNKNOWN, // 1FDC7302GREEK, // 1FDD..1FEF7303UNKNOWN, // 1FF0..1FF17304GREEK, // 1FF2..1FF47305UNKNOWN, // 1FF57306GREEK, // 1FF6..1FFE7307UNKNOWN, // 1FFF7308COMMON, // 2000..200B7309INHERITED, // 200C..200D7310COMMON, // 200E..20647311UNKNOWN, // 20657312COMMON, // 2066..20707313LATIN, // 20717314UNKNOWN, // 2072..20737315COMMON, // 2074..207E7316LATIN, // 207F7317COMMON, // 2080..208E7318UNKNOWN, // 208F7319LATIN, // 2090..209C7320UNKNOWN, // 209D..209F7321COMMON, // 20A0..20BF7322UNKNOWN, // 20C0..20CF7323INHERITED, // 20D0..20F07324UNKNOWN, // 20F1..20FF7325COMMON, // 2100..21257326GREEK, // 21267327COMMON, // 2127..21297328LATIN, // 212A..212B7329COMMON, // 212C..21317330LATIN, // 21327331COMMON, // 2133..214D7332LATIN, // 214E7333COMMON, // 214F..215F7334LATIN, // 2160..21887335COMMON, // 2189..218B7336UNKNOWN, // 218C..218F7337COMMON, // 2190..24267338UNKNOWN, // 2427..243F7339COMMON, // 2440..244A7340UNKNOWN, // 244B..245F7341COMMON, // 2460..27FF7342BRAILLE, // 2800..28FF7343COMMON, // 2900..2B737344UNKNOWN, // 2B74..2B757345COMMON, // 2B76..2B957346UNKNOWN, // 2B967347COMMON, // 2B97..2BFF7348GLAGOLITIC, // 2C00..2C2E7349UNKNOWN, // 2C2F7350GLAGOLITIC, // 2C30..2C5E7351UNKNOWN, // 2C5F7352LATIN, // 2C60..2C7F7353COPTIC, // 2C80..2CF37354UNKNOWN, // 2CF4..2CF87355COPTIC, // 2CF9..2CFF7356GEORGIAN, // 2D00..2D257357UNKNOWN, // 2D267358GEORGIAN, // 2D277359UNKNOWN, // 2D28..2D2C7360GEORGIAN, // 2D2D7361UNKNOWN, // 2D2E..2D2F7362TIFINAGH, // 2D30..2D677363UNKNOWN, // 2D68..2D6E7364TIFINAGH, // 2D6F..2D707365UNKNOWN, // 2D71..2D7E7366TIFINAGH, // 2D7F7367ETHIOPIC, // 2D80..2D967368UNKNOWN, // 2D97..2D9F7369ETHIOPIC, // 2DA0..2DA67370UNKNOWN, // 2DA77371ETHIOPIC, // 2DA8..2DAE7372UNKNOWN, // 2DAF7373ETHIOPIC, // 2DB0..2DB67374UNKNOWN, // 2DB77375ETHIOPIC, // 2DB8..2DBE7376UNKNOWN, // 2DBF7377ETHIOPIC, // 2DC0..2DC67378UNKNOWN, // 2DC77379ETHIOPIC, // 2DC8..2DCE7380UNKNOWN, // 2DCF7381ETHIOPIC, // 2DD0..2DD67382UNKNOWN, // 2DD77383ETHIOPIC, // 2DD8..2DDE7384UNKNOWN, // 2DDF7385CYRILLIC, // 2DE0..2DFF7386COMMON, // 2E00..2E527387UNKNOWN, // 2E53..2E7F7388HAN, // 2E80..2E997389UNKNOWN, // 2E9A7390HAN, // 2E9B..2EF37391UNKNOWN, // 2EF4..2EFF7392HAN, // 2F00..2FD57393UNKNOWN, // 2FD6..2FEF7394COMMON, // 2FF0..2FFB7395UNKNOWN, // 2FFC..2FFF7396COMMON, // 3000..30047397HAN, // 30057398COMMON, // 30067399HAN, // 30077400COMMON, // 3008..30207401HAN, // 3021..30297402INHERITED, // 302A..302D7403HANGUL, // 302E..302F7404COMMON, // 3030..30377405HAN, // 3038..303B7406COMMON, // 303C..303F7407UNKNOWN, // 30407408HIRAGANA, // 3041..30967409UNKNOWN, // 3097..30987410INHERITED, // 3099..309A7411COMMON, // 309B..309C7412HIRAGANA, // 309D..309F7413COMMON, // 30A07414KATAKANA, // 30A1..30FA7415COMMON, // 30FB..30FC7416KATAKANA, // 30FD..30FF7417UNKNOWN, // 3100..31047418BOPOMOFO, // 3105..312F7419UNKNOWN, // 31307420HANGUL, // 3131..318E7421UNKNOWN, // 318F7422COMMON, // 3190..319F7423BOPOMOFO, // 31A0..31BF7424COMMON, // 31C0..31E37425UNKNOWN, // 31E4..31EF7426KATAKANA, // 31F0..31FF7427HANGUL, // 3200..321E7428UNKNOWN, // 321F7429COMMON, // 3220..325F7430HANGUL, // 3260..327E7431COMMON, // 327F..32CF7432KATAKANA, // 32D0..32FE7433COMMON, // 32FF7434KATAKANA, // 3300..33577435COMMON, // 3358..33FF7436HAN, // 3400..4DBF7437COMMON, // 4DC0..4DFF7438HAN, // 4E00..9FFC7439UNKNOWN, // 9FFD..9FFF7440YI, // A000..A48C7441UNKNOWN, // A48D..A48F7442YI, // A490..A4C67443UNKNOWN, // A4C7..A4CF7444LISU, // A4D0..A4FF7445VAI, // A500..A62B7446UNKNOWN, // A62C..A63F7447CYRILLIC, // A640..A69F7448BAMUM, // A6A0..A6F77449UNKNOWN, // A6F8..A6FF7450COMMON, // A700..A7217451LATIN, // A722..A7877452COMMON, // A788..A78A7453LATIN, // A78B..A7BF7454UNKNOWN, // A7C0..A7C17455LATIN, // A7C2..A7CA7456UNKNOWN, // A7CB..A7F47457LATIN, // A7F5..A7FF7458SYLOTI_NAGRI, // A800..A82C7459UNKNOWN, // A82D..A82F7460COMMON, // A830..A8397461UNKNOWN, // A83A..A83F7462PHAGS_PA, // A840..A8777463UNKNOWN, // A878..A87F7464SAURASHTRA, // A880..A8C57465UNKNOWN, // A8C6..A8CD7466SAURASHTRA, // A8CE..A8D97467UNKNOWN, // A8DA..A8DF7468DEVANAGARI, // A8E0..A8FF7469KAYAH_LI, // A900..A92D7470COMMON, // A92E7471KAYAH_LI, // A92F7472REJANG, // A930..A9537473UNKNOWN, // A954..A95E7474REJANG, // A95F7475HANGUL, // A960..A97C7476UNKNOWN, // A97D..A97F7477JAVANESE, // A980..A9CD7478UNKNOWN, // A9CE7479COMMON, // A9CF7480JAVANESE, // A9D0..A9D97481UNKNOWN, // A9DA..A9DD7482JAVANESE, // A9DE..A9DF7483MYANMAR, // A9E0..A9FE7484UNKNOWN, // A9FF7485CHAM, // AA00..AA367486UNKNOWN, // AA37..AA3F7487CHAM, // AA40..AA4D7488UNKNOWN, // AA4E..AA4F7489CHAM, // AA50..AA597490UNKNOWN, // AA5A..AA5B7491CHAM, // AA5C..AA5F7492MYANMAR, // AA60..AA7F7493TAI_VIET, // AA80..AAC27494UNKNOWN, // AAC3..AADA7495TAI_VIET, // AADB..AADF7496MEETEI_MAYEK, // AAE0..AAF67497UNKNOWN, // AAF7..AB007498ETHIOPIC, // AB01..AB067499UNKNOWN, // AB07..AB087500ETHIOPIC, // AB09..AB0E7501UNKNOWN, // AB0F..AB107502ETHIOPIC, // AB11..AB167503UNKNOWN, // AB17..AB1F7504ETHIOPIC, // AB20..AB267505UNKNOWN, // AB277506ETHIOPIC, // AB28..AB2E7507UNKNOWN, // AB2F7508LATIN, // AB30..AB5A7509COMMON, // AB5B7510LATIN, // AB5C..AB647511GREEK, // AB657512LATIN, // AB66..AB697513COMMON, // AB6A..AB6B7514UNKNOWN, // AB6C..AB6F7515CHEROKEE, // AB70..ABBF7516MEETEI_MAYEK, // ABC0..ABED7517UNKNOWN, // ABEE..ABEF7518MEETEI_MAYEK, // ABF0..ABF97519UNKNOWN, // ABFA..ABFF7520HANGUL, // AC00..D7A37521UNKNOWN, // D7A4..D7AF7522HANGUL, // D7B0..D7C67523UNKNOWN, // D7C7..D7CA7524HANGUL, // D7CB..D7FB7525UNKNOWN, // D7FC..F8FF7526HAN, // F900..FA6D7527UNKNOWN, // FA6E..FA6F7528HAN, // FA70..FAD97529UNKNOWN, // FADA..FAFF7530LATIN, // FB00..FB067531UNKNOWN, // FB07..FB127532ARMENIAN, // FB13..FB177533UNKNOWN, // FB18..FB1C7534HEBREW, // FB1D..FB367535UNKNOWN, // FB377536HEBREW, // FB38..FB3C7537UNKNOWN, // FB3D7538HEBREW, // FB3E7539UNKNOWN, // FB3F7540HEBREW, // FB40..FB417541UNKNOWN, // FB427542HEBREW, // FB43..FB447543UNKNOWN, // FB457544HEBREW, // FB46..FB4F7545ARABIC, // FB50..FBC17546UNKNOWN, // FBC2..FBD27547ARABIC, // FBD3..FD3D7548COMMON, // FD3E..FD3F7549UNKNOWN, // FD40..FD4F7550ARABIC, // FD50..FD8F7551UNKNOWN, // FD90..FD917552ARABIC, // FD92..FDC77553UNKNOWN, // FDC8..FDEF7554ARABIC, // FDF0..FDFD7555UNKNOWN, // FDFE..FDFF7556INHERITED, // FE00..FE0F7557COMMON, // FE10..FE197558UNKNOWN, // FE1A..FE1F7559INHERITED, // FE20..FE2D7560CYRILLIC, // FE2E..FE2F7561COMMON, // FE30..FE527562UNKNOWN, // FE537563COMMON, // FE54..FE667564UNKNOWN, // FE677565COMMON, // FE68..FE6B7566UNKNOWN, // FE6C..FE6F7567ARABIC, // FE70..FE747568UNKNOWN, // FE757569ARABIC, // FE76..FEFC7570UNKNOWN, // FEFD..FEFE7571COMMON, // FEFF7572UNKNOWN, // FF007573COMMON, // FF01..FF207574LATIN, // FF21..FF3A7575COMMON, // FF3B..FF407576LATIN, // FF41..FF5A7577COMMON, // FF5B..FF657578KATAKANA, // FF66..FF6F7579COMMON, // FF707580KATAKANA, // FF71..FF9D7581COMMON, // FF9E..FF9F7582HANGUL, // FFA0..FFBE7583UNKNOWN, // FFBF..FFC17584HANGUL, // FFC2..FFC77585UNKNOWN, // FFC8..FFC97586HANGUL, // FFCA..FFCF7587UNKNOWN, // FFD0..FFD17588HANGUL, // FFD2..FFD77589UNKNOWN, // FFD8..FFD97590HANGUL, // FFDA..FFDC7591UNKNOWN, // FFDD..FFDF7592COMMON, // FFE0..FFE67593UNKNOWN, // FFE77594COMMON, // FFE8..FFEE7595UNKNOWN, // FFEF..FFF87596COMMON, // FFF9..FFFD7597UNKNOWN, // FFFE..FFFF7598LINEAR_B, // 10000..1000B7599UNKNOWN, // 1000C7600LINEAR_B, // 1000D..100267601UNKNOWN, // 100277602LINEAR_B, // 10028..1003A7603UNKNOWN, // 1003B7604LINEAR_B, // 1003C..1003D7605UNKNOWN, // 1003E7606LINEAR_B, // 1003F..1004D7607UNKNOWN, // 1004E..1004F7608LINEAR_B, // 10050..1005D7609UNKNOWN, // 1005E..1007F7610LINEAR_B, // 10080..100FA7611UNKNOWN, // 100FB..100FF7612COMMON, // 10100..101027613UNKNOWN, // 10103..101067614COMMON, // 10107..101337615UNKNOWN, // 10134..101367616COMMON, // 10137..1013F7617GREEK, // 10140..1018E7618UNKNOWN, // 1018F7619COMMON, // 10190..1019C7620UNKNOWN, // 1019D..1019F7621GREEK, // 101A07622UNKNOWN, // 101A1..101CF7623COMMON, // 101D0..101FC7624INHERITED, // 101FD7625UNKNOWN, // 101FE..1027F7626LYCIAN, // 10280..1029C7627UNKNOWN, // 1029D..1029F7628CARIAN, // 102A0..102D07629UNKNOWN, // 102D1..102DF7630INHERITED, // 102E07631COMMON, // 102E1..102FB7632UNKNOWN, // 102FC..102FF7633OLD_ITALIC, // 10300..103237634UNKNOWN, // 10324..1032C7635OLD_ITALIC, // 1032D..1032F7636GOTHIC, // 10330..1034A7637UNKNOWN, // 1034B..1034F7638OLD_PERMIC, // 10350..1037A7639UNKNOWN, // 1037B..1037F7640UGARITIC, // 10380..1039D7641UNKNOWN, // 1039E7642UGARITIC, // 1039F7643OLD_PERSIAN, // 103A0..103C37644UNKNOWN, // 103C4..103C77645OLD_PERSIAN, // 103C8..103D57646UNKNOWN, // 103D6..103FF7647DESERET, // 10400..1044F7648SHAVIAN, // 10450..1047F7649OSMANYA, // 10480..1049D7650UNKNOWN, // 1049E..1049F7651OSMANYA, // 104A0..104A97652UNKNOWN, // 104AA..104AF7653OSAGE, // 104B0..104D37654UNKNOWN, // 104D4..104D77655OSAGE, // 104D8..104FB7656UNKNOWN, // 104FC..104FF7657ELBASAN, // 10500..105277658UNKNOWN, // 10528..1052F7659CAUCASIAN_ALBANIAN, // 10530..105637660UNKNOWN, // 10564..1056E7661CAUCASIAN_ALBANIAN, // 1056F7662UNKNOWN, // 10570..105FF7663LINEAR_A, // 10600..107367664UNKNOWN, // 10737..1073F7665LINEAR_A, // 10740..107557666UNKNOWN, // 10756..1075F7667LINEAR_A, // 10760..107677668UNKNOWN, // 10768..107FF7669CYPRIOT, // 10800..108057670UNKNOWN, // 10806..108077671CYPRIOT, // 108087672UNKNOWN, // 108097673CYPRIOT, // 1080A..108357674UNKNOWN, // 108367675CYPRIOT, // 10837..108387676UNKNOWN, // 10839..1083B7677CYPRIOT, // 1083C7678UNKNOWN, // 1083D..1083E7679CYPRIOT, // 1083F7680IMPERIAL_ARAMAIC, // 10840..108557681UNKNOWN, // 108567682IMPERIAL_ARAMAIC, // 10857..1085F7683PALMYRENE, // 10860..1087F7684NABATAEAN, // 10880..1089E7685UNKNOWN, // 1089F..108A67686NABATAEAN, // 108A7..108AF7687UNKNOWN, // 108B0..108DF7688HATRAN, // 108E0..108F27689UNKNOWN, // 108F37690HATRAN, // 108F4..108F57691UNKNOWN, // 108F6..108FA7692HATRAN, // 108FB..108FF7693PHOENICIAN, // 10900..1091B7694UNKNOWN, // 1091C..1091E7695PHOENICIAN, // 1091F7696LYDIAN, // 10920..109397697UNKNOWN, // 1093A..1093E7698LYDIAN, // 1093F7699UNKNOWN, // 10940..1097F7700MEROITIC_HIEROGLYPHS, // 10980..1099F7701MEROITIC_CURSIVE, // 109A0..109B77702UNKNOWN, // 109B8..109BB7703MEROITIC_CURSIVE, // 109BC..109CF7704UNKNOWN, // 109D0..109D17705MEROITIC_CURSIVE, // 109D2..109FF7706KHAROSHTHI, // 10A00..10A037707UNKNOWN, // 10A047708KHAROSHTHI, // 10A05..10A067709UNKNOWN, // 10A07..10A0B7710KHAROSHTHI, // 10A0C..10A137711UNKNOWN, // 10A147712KHAROSHTHI, // 10A15..10A177713UNKNOWN, // 10A187714KHAROSHTHI, // 10A19..10A357715UNKNOWN, // 10A36..10A377716KHAROSHTHI, // 10A38..10A3A7717UNKNOWN, // 10A3B..10A3E7718KHAROSHTHI, // 10A3F..10A487719UNKNOWN, // 10A49..10A4F7720KHAROSHTHI, // 10A50..10A587721UNKNOWN, // 10A59..10A5F7722OLD_SOUTH_ARABIAN, // 10A60..10A7F7723OLD_NORTH_ARABIAN, // 10A80..10A9F7724UNKNOWN, // 10AA0..10ABF7725MANICHAEAN, // 10AC0..10AE67726UNKNOWN, // 10AE7..10AEA7727MANICHAEAN, // 10AEB..10AF67728UNKNOWN, // 10AF7..10AFF7729AVESTAN, // 10B00..10B357730UNKNOWN, // 10B36..10B387731AVESTAN, // 10B39..10B3F7732INSCRIPTIONAL_PARTHIAN, // 10B40..10B557733UNKNOWN, // 10B56..10B577734INSCRIPTIONAL_PARTHIAN, // 10B58..10B5F7735INSCRIPTIONAL_PAHLAVI, // 10B60..10B727736UNKNOWN, // 10B73..10B777737INSCRIPTIONAL_PAHLAVI, // 10B78..10B7F7738PSALTER_PAHLAVI, // 10B80..10B917739UNKNOWN, // 10B92..10B987740PSALTER_PAHLAVI, // 10B99..10B9C7741UNKNOWN, // 10B9D..10BA87742PSALTER_PAHLAVI, // 10BA9..10BAF7743UNKNOWN, // 10BB0..10BFF7744OLD_TURKIC, // 10C00..10C487745UNKNOWN, // 10C49..10C7F7746OLD_HUNGARIAN, // 10C80..10CB27747UNKNOWN, // 10CB3..10CBF7748OLD_HUNGARIAN, // 10CC0..10CF27749UNKNOWN, // 10CF3..10CF97750OLD_HUNGARIAN, // 10CFA..10CFF7751HANIFI_ROHINGYA, // 10D00..10D277752UNKNOWN, // 10D28..10D2F7753HANIFI_ROHINGYA, // 10D30..10D397754UNKNOWN, // 10D3A..10E5F7755ARABIC, // 10E60..10E7E7756UNKNOWN, // 10E7F7757YEZIDI, // 10E80..10EA97758UNKNOWN, // 10EAA7759YEZIDI, // 10EAB..10EAD7760UNKNOWN, // 10EAE..10EAF7761YEZIDI, // 10EB0..10EB17762UNKNOWN, // 10EB2..10EFF7763OLD_SOGDIAN, // 10F00..10F277764UNKNOWN, // 10F28..10F2F7765SOGDIAN, // 10F30..10F597766UNKNOWN, // 10F5A..10FAF7767CHORASMIAN, // 10FB0..10FCB7768UNKNOWN, // 10FCC..10FDF7769ELYMAIC, // 10FE0..10FF67770UNKNOWN, // 10FF7..10FFF7771BRAHMI, // 11000..1104D7772UNKNOWN, // 1104E..110517773BRAHMI, // 11052..1106F7774UNKNOWN, // 11070..1107E7775BRAHMI, // 1107F7776KAITHI, // 11080..110C17777UNKNOWN, // 110C2..110CC7778KAITHI, // 110CD7779UNKNOWN, // 110CE..110CF7780SORA_SOMPENG, // 110D0..110E87781UNKNOWN, // 110E9..110EF7782SORA_SOMPENG, // 110F0..110F97783UNKNOWN, // 110FA..110FF7784CHAKMA, // 11100..111347785UNKNOWN, // 111357786CHAKMA, // 11136..111477787UNKNOWN, // 11148..1114F7788MAHAJANI, // 11150..111767789UNKNOWN, // 11177..1117F7790SHARADA, // 11180..111DF7791UNKNOWN, // 111E07792SINHALA, // 111E1..111F47793UNKNOWN, // 111F5..111FF7794KHOJKI, // 11200..112117795UNKNOWN, // 112127796KHOJKI, // 11213..1123E7797UNKNOWN, // 1123F..1127F7798MULTANI, // 11280..112867799UNKNOWN, // 112877800MULTANI, // 112887801UNKNOWN, // 112897802MULTANI, // 1128A..1128D7803UNKNOWN, // 1128E7804MULTANI, // 1128F..1129D7805UNKNOWN, // 1129E7806MULTANI, // 1129F..112A97807UNKNOWN, // 112AA..112AF7808KHUDAWADI, // 112B0..112EA7809UNKNOWN, // 112EB..112EF7810KHUDAWADI, // 112F0..112F97811UNKNOWN, // 112FA..112FF7812GRANTHA, // 11300..113037813UNKNOWN, // 113047814GRANTHA, // 11305..1130C7815UNKNOWN, // 1130D..1130E7816GRANTHA, // 1130F..113107817UNKNOWN, // 11311..113127818GRANTHA, // 11313..113287819UNKNOWN, // 113297820GRANTHA, // 1132A..113307821UNKNOWN, // 113317822GRANTHA, // 11332..113337823UNKNOWN, // 113347824GRANTHA, // 11335..113397825UNKNOWN, // 1133A7826INHERITED, // 1133B7827GRANTHA, // 1133C..113447828UNKNOWN, // 11345..113467829GRANTHA, // 11347..113487830UNKNOWN, // 11349..1134A7831GRANTHA, // 1134B..1134D7832UNKNOWN, // 1134E..1134F7833GRANTHA, // 113507834UNKNOWN, // 11351..113567835GRANTHA, // 113577836UNKNOWN, // 11358..1135C7837GRANTHA, // 1135D..113637838UNKNOWN, // 11364..113657839GRANTHA, // 11366..1136C7840UNKNOWN, // 1136D..1136F7841GRANTHA, // 11370..113747842UNKNOWN, // 11375..113FF7843NEWA, // 11400..1145B7844UNKNOWN, // 1145C7845NEWA, // 1145D..114617846UNKNOWN, // 11462..1147F7847TIRHUTA, // 11480..114C77848UNKNOWN, // 114C8..114CF7849TIRHUTA, // 114D0..114D97850UNKNOWN, // 114DA..1157F7851SIDDHAM, // 11580..115B57852UNKNOWN, // 115B6..115B77853SIDDHAM, // 115B8..115DD7854UNKNOWN, // 115DE..115FF7855MODI, // 11600..116447856UNKNOWN, // 11645..1164F7857MODI, // 11650..116597858UNKNOWN, // 1165A..1165F7859MONGOLIAN, // 11660..1166C7860UNKNOWN, // 1166D..1167F7861TAKRI, // 11680..116B87862UNKNOWN, // 116B9..116BF7863TAKRI, // 116C0..116C97864UNKNOWN, // 116CA..116FF7865AHOM, // 11700..1171A7866UNKNOWN, // 1171B..1171C7867AHOM, // 1171D..1172B7868UNKNOWN, // 1172C..1172F7869AHOM, // 11730..1173F7870UNKNOWN, // 11740..117FF7871DOGRA, // 11800..1183B7872UNKNOWN, // 1183C..1189F7873WARANG_CITI, // 118A0..118F27874UNKNOWN, // 118F3..118FE7875WARANG_CITI, // 118FF7876DIVES_AKURU, // 11900..119067877UNKNOWN, // 11907..119087878DIVES_AKURU, // 119097879UNKNOWN, // 1190A..1190B7880DIVES_AKURU, // 1190C..119137881UNKNOWN, // 119147882DIVES_AKURU, // 11915..119167883UNKNOWN, // 119177884DIVES_AKURU, // 11918..119357885UNKNOWN, // 119367886DIVES_AKURU, // 11937..119387887UNKNOWN, // 11939..1193A7888DIVES_AKURU, // 1193B..119467889UNKNOWN, // 11947..1194F7890DIVES_AKURU, // 11950..119597891UNKNOWN, // 1195A..1199F7892NANDINAGARI, // 119A0..119A77893UNKNOWN, // 119A8..119A97894NANDINAGARI, // 119AA..119D77895UNKNOWN, // 119D8..119D97896NANDINAGARI, // 119DA..119E47897UNKNOWN, // 119E5..119FF7898ZANABAZAR_SQUARE, // 11A00..11A477899UNKNOWN, // 11A48..11A4F7900SOYOMBO, // 11A50..11AA27901UNKNOWN, // 11AA3..11ABF7902PAU_CIN_HAU, // 11AC0..11AF87903UNKNOWN, // 11AF9..11BFF7904BHAIKSUKI, // 11C00..11C087905UNKNOWN, // 11C097906BHAIKSUKI, // 11C0A..11C367907UNKNOWN, // 11C377908BHAIKSUKI, // 11C38..11C457909UNKNOWN, // 11C46..11C4F7910BHAIKSUKI, // 11C50..11C6C7911UNKNOWN, // 11C6D..11C6F7912MARCHEN, // 11C70..11C8F7913UNKNOWN, // 11C90..11C917914MARCHEN, // 11C92..11CA77915UNKNOWN, // 11CA87916MARCHEN, // 11CA9..11CB67917UNKNOWN, // 11CB7..11CFF7918MASARAM_GONDI, // 11D00..11D067919UNKNOWN, // 11D077920MASARAM_GONDI, // 11D08..11D097921UNKNOWN, // 11D0A7922MASARAM_GONDI, // 11D0B..11D367923UNKNOWN, // 11D37..11D397924MASARAM_GONDI, // 11D3A7925UNKNOWN, // 11D3B7926MASARAM_GONDI, // 11D3C..11D3D7927UNKNOWN, // 11D3E7928MASARAM_GONDI, // 11D3F..11D477929UNKNOWN, // 11D48..11D4F7930MASARAM_GONDI, // 11D50..11D597931UNKNOWN, // 11D5A..11D5F7932GUNJALA_GONDI, // 11D60..11D657933UNKNOWN, // 11D667934GUNJALA_GONDI, // 11D67..11D687935UNKNOWN, // 11D697936GUNJALA_GONDI, // 11D6A..11D8E7937UNKNOWN, // 11D8F7938GUNJALA_GONDI, // 11D90..11D917939UNKNOWN, // 11D927940GUNJALA_GONDI, // 11D93..11D987941UNKNOWN, // 11D99..11D9F7942GUNJALA_GONDI, // 11DA0..11DA97943UNKNOWN, // 11DAA..11EDF7944MAKASAR, // 11EE0..11EF87945UNKNOWN, // 11EF9..11FAF7946LISU, // 11FB07947UNKNOWN, // 11FB1..11FBF7948TAMIL, // 11FC0..11FF17949UNKNOWN, // 11FF2..11FFE7950TAMIL, // 11FFF7951CUNEIFORM, // 12000..123997952UNKNOWN, // 1239A..123FF7953CUNEIFORM, // 12400..1246E7954UNKNOWN, // 1246F7955CUNEIFORM, // 12470..124747956UNKNOWN, // 12475..1247F7957CUNEIFORM, // 12480..125437958UNKNOWN, // 12544..12FFF7959EGYPTIAN_HIEROGLYPHS, // 13000..1342E7960UNKNOWN, // 1342F7961EGYPTIAN_HIEROGLYPHS, // 13430..134387962UNKNOWN, // 13439..143FF7963ANATOLIAN_HIEROGLYPHS, // 14400..146467964UNKNOWN, // 14647..167FF7965BAMUM, // 16800..16A387966UNKNOWN, // 16A39..16A3F7967MRO, // 16A40..16A5E7968UNKNOWN, // 16A5F7969MRO, // 16A60..16A697970UNKNOWN, // 16A6A..16A6D7971MRO, // 16A6E..16A6F7972UNKNOWN, // 16A70..16ACF7973BASSA_VAH, // 16AD0..16AED7974UNKNOWN, // 16AEE..16AEF7975BASSA_VAH, // 16AF0..16AF57976UNKNOWN, // 16AF6..16AFF7977PAHAWH_HMONG, // 16B00..16B457978UNKNOWN, // 16B46..16B4F7979PAHAWH_HMONG, // 16B50..16B597980UNKNOWN, // 16B5A7981PAHAWH_HMONG, // 16B5B..16B617982UNKNOWN, // 16B627983PAHAWH_HMONG, // 16B63..16B777984UNKNOWN, // 16B78..16B7C7985PAHAWH_HMONG, // 16B7D..16B8F7986UNKNOWN, // 16B90..16E3F7987MEDEFAIDRIN, // 16E40..16E9A7988UNKNOWN, // 16E9B..16EFF7989MIAO, // 16F00..16F4A7990UNKNOWN, // 16F4B..16F4E7991MIAO, // 16F4F..16F877992UNKNOWN, // 16F88..16F8E7993MIAO, // 16F8F..16F9F7994UNKNOWN, // 16FA0..16FDF7995TANGUT, // 16FE07996NUSHU, // 16FE17997COMMON, // 16FE2..16FE37998KHITAN_SMALL_SCRIPT, // 16FE47999UNKNOWN, // 16FE5..16FEF8000HAN, // 16FF0..16FF18001UNKNOWN, // 16FF2..16FFF8002TANGUT, // 17000..187F78003UNKNOWN, // 187F8..187FF8004TANGUT, // 18800..18AFF8005KHITAN_SMALL_SCRIPT, // 18B00..18CD58006UNKNOWN, // 18CD6..18CFF8007TANGUT, // 18D00..18D088008UNKNOWN, // 18D09..1AFFF8009KATAKANA, // 1B0008010HIRAGANA, // 1B001..1B11E8011UNKNOWN, // 1B11F..1B14F8012HIRAGANA, // 1B150..1B1528013UNKNOWN, // 1B153..1B1638014KATAKANA, // 1B164..1B1678015UNKNOWN, // 1B168..1B16F8016NUSHU, // 1B170..1B2FB8017UNKNOWN, // 1B2FC..1BBFF8018DUPLOYAN, // 1BC00..1BC6A8019UNKNOWN, // 1BC6B..1BC6F8020DUPLOYAN, // 1BC70..1BC7C8021UNKNOWN, // 1BC7D..1BC7F8022DUPLOYAN, // 1BC80..1BC888023UNKNOWN, // 1BC89..1BC8F8024DUPLOYAN, // 1BC90..1BC998025UNKNOWN, // 1BC9A..1BC9B8026DUPLOYAN, // 1BC9C..1BC9F8027COMMON, // 1BCA0..1BCA38028UNKNOWN, // 1BCA4..1CFFF8029COMMON, // 1D000..1D0F58030UNKNOWN, // 1D0F6..1D0FF8031COMMON, // 1D100..1D1268032UNKNOWN, // 1D127..1D1288033COMMON, // 1D129..1D1668034INHERITED, // 1D167..1D1698035COMMON, // 1D16A..1D17A8036INHERITED, // 1D17B..1D1828037COMMON, // 1D183..1D1848038INHERITED, // 1D185..1D18B8039COMMON, // 1D18C..1D1A98040INHERITED, // 1D1AA..1D1AD8041COMMON, // 1D1AE..1D1E88042UNKNOWN, // 1D1E9..1D1FF8043GREEK, // 1D200..1D2458044UNKNOWN, // 1D246..1D2DF8045COMMON, // 1D2E0..1D2F38046UNKNOWN, // 1D2F4..1D2FF8047COMMON, // 1D300..1D3568048UNKNOWN, // 1D357..1D35F8049COMMON, // 1D360..1D3788050UNKNOWN, // 1D379..1D3FF8051COMMON, // 1D400..1D4548052UNKNOWN, // 1D4558053COMMON, // 1D456..1D49C8054UNKNOWN, // 1D49D8055COMMON, // 1D49E..1D49F8056UNKNOWN, // 1D4A0..1D4A18057COMMON, // 1D4A28058UNKNOWN, // 1D4A3..1D4A48059COMMON, // 1D4A5..1D4A68060UNKNOWN, // 1D4A7..1D4A88061COMMON, // 1D4A9..1D4AC8062UNKNOWN, // 1D4AD8063COMMON, // 1D4AE..1D4B98064UNKNOWN, // 1D4BA8065COMMON, // 1D4BB8066UNKNOWN, // 1D4BC8067COMMON, // 1D4BD..1D4C38068UNKNOWN, // 1D4C48069COMMON, // 1D4C5..1D5058070UNKNOWN, // 1D5068071COMMON, // 1D507..1D50A8072UNKNOWN, // 1D50B..1D50C8073COMMON, // 1D50D..1D5148074UNKNOWN, // 1D5158075COMMON, // 1D516..1D51C8076UNKNOWN, // 1D51D8077COMMON, // 1D51E..1D5398078UNKNOWN, // 1D53A8079COMMON, // 1D53B..1D53E8080UNKNOWN, // 1D53F8081COMMON, // 1D540..1D5448082UNKNOWN, // 1D5458083COMMON, // 1D5468084UNKNOWN, // 1D547..1D5498085COMMON, // 1D54A..1D5508086UNKNOWN, // 1D5518087COMMON, // 1D552..1D6A58088UNKNOWN, // 1D6A6..1D6A78089COMMON, // 1D6A8..1D7CB8090UNKNOWN, // 1D7CC..1D7CD8091COMMON, // 1D7CE..1D7FF8092SIGNWRITING, // 1D800..1DA8B8093UNKNOWN, // 1DA8C..1DA9A8094SIGNWRITING, // 1DA9B..1DA9F8095UNKNOWN, // 1DAA08096SIGNWRITING, // 1DAA1..1DAAF8097UNKNOWN, // 1DAB0..1DFFF8098GLAGOLITIC, // 1E000..1E0068099UNKNOWN, // 1E0078100GLAGOLITIC, // 1E008..1E0188101UNKNOWN, // 1E019..1E01A8102GLAGOLITIC, // 1E01B..1E0218103UNKNOWN, // 1E0228104GLAGOLITIC, // 1E023..1E0248105UNKNOWN, // 1E0258106GLAGOLITIC, // 1E026..1E02A8107UNKNOWN, // 1E02B..1E0FF8108NYIAKENG_PUACHUE_HMONG, // 1E100..1E12C8109UNKNOWN, // 1E12D..1E12F8110NYIAKENG_PUACHUE_HMONG, // 1E130..1E13D8111UNKNOWN, // 1E13E..1E13F8112NYIAKENG_PUACHUE_HMONG, // 1E140..1E1498113UNKNOWN, // 1E14A..1E14D8114NYIAKENG_PUACHUE_HMONG, // 1E14E..1E14F8115UNKNOWN, // 1E150..1E2BF8116WANCHO, // 1E2C0..1E2F98117UNKNOWN, // 1E2FA..1E2FE8118WANCHO, // 1E2FF8119UNKNOWN, // 1E300..1E7FF8120MENDE_KIKAKUI, // 1E800..1E8C48121UNKNOWN, // 1E8C5..1E8C68122MENDE_KIKAKUI, // 1E8C7..1E8D68123UNKNOWN, // 1E8D7..1E8FF8124ADLAM, // 1E900..1E94B8125UNKNOWN, // 1E94C..1E94F8126ADLAM, // 1E950..1E9598127UNKNOWN, // 1E95A..1E95D8128ADLAM, // 1E95E..1E95F8129UNKNOWN, // 1E960..1EC708130COMMON, // 1EC71..1ECB48131UNKNOWN, // 1ECB5..1ED008132COMMON, // 1ED01..1ED3D8133UNKNOWN, // 1ED3E..1EDFF8134ARABIC, // 1EE00..1EE038135UNKNOWN, // 1EE048136ARABIC, // 1EE05..1EE1F8137UNKNOWN, // 1EE208138ARABIC, // 1EE21..1EE228139UNKNOWN, // 1EE238140ARABIC, // 1EE248141UNKNOWN, // 1EE25..1EE268142ARABIC, // 1EE278143UNKNOWN, // 1EE288144ARABIC, // 1EE29..1EE328145UNKNOWN, // 1EE338146ARABIC, // 1EE34..1EE378147UNKNOWN, // 1EE388148ARABIC, // 1EE398149UNKNOWN, // 1EE3A8150ARABIC, // 1EE3B8151UNKNOWN, // 1EE3C..1EE418152ARABIC, // 1EE428153UNKNOWN, // 1EE43..1EE468154ARABIC, // 1EE478155UNKNOWN, // 1EE488156ARABIC, // 1EE498157UNKNOWN, // 1EE4A8158ARABIC, // 1EE4B8159UNKNOWN, // 1EE4C8160ARABIC, // 1EE4D..1EE4F8161UNKNOWN, // 1EE508162ARABIC, // 1EE51..1EE528163UNKNOWN, // 1EE538164ARABIC, // 1EE548165UNKNOWN, // 1EE55..1EE568166ARABIC, // 1EE578167UNKNOWN, // 1EE588168ARABIC, // 1EE598169UNKNOWN, // 1EE5A8170ARABIC, // 1EE5B8171UNKNOWN, // 1EE5C8172ARABIC, // 1EE5D8173UNKNOWN, // 1EE5E8174ARABIC, // 1EE5F8175UNKNOWN, // 1EE608176ARABIC, // 1EE61..1EE628177UNKNOWN, // 1EE638178ARABIC, // 1EE648179UNKNOWN, // 1EE65..1EE668180ARABIC, // 1EE67..1EE6A8181UNKNOWN, // 1EE6B8182ARABIC, // 1EE6C..1EE728183UNKNOWN, // 1EE738184ARABIC, // 1EE74..1EE778185UNKNOWN, // 1EE788186ARABIC, // 1EE79..1EE7C8187UNKNOWN, // 1EE7D8188ARABIC, // 1EE7E8189UNKNOWN, // 1EE7F8190ARABIC, // 1EE80..1EE898191UNKNOWN, // 1EE8A8192ARABIC, // 1EE8B..1EE9B8193UNKNOWN, // 1EE9C..1EEA08194ARABIC, // 1EEA1..1EEA38195UNKNOWN, // 1EEA48196ARABIC, // 1EEA5..1EEA98197UNKNOWN, // 1EEAA8198ARABIC, // 1EEAB..1EEBB8199UNKNOWN, // 1EEBC..1EEEF8200ARABIC, // 1EEF0..1EEF18201UNKNOWN, // 1EEF2..1EFFF8202COMMON, // 1F000..1F02B8203UNKNOWN, // 1F02C..1F02F8204COMMON, // 1F030..1F0938205UNKNOWN, // 1F094..1F09F8206COMMON, // 1F0A0..1F0AE8207UNKNOWN, // 1F0AF..1F0B08208COMMON, // 1F0B1..1F0BF8209UNKNOWN, // 1F0C08210COMMON, // 1F0C1..1F0CF8211UNKNOWN, // 1F0D08212COMMON, // 1F0D1..1F0F58213UNKNOWN, // 1F0F6..1F0FF8214COMMON, // 1F100..1F1AD8215UNKNOWN, // 1F1AE..1F1E58216COMMON, // 1F1E6..1F1FF8217HIRAGANA, // 1F2008218COMMON, // 1F201..1F2028219UNKNOWN, // 1F203..1F20F8220COMMON, // 1F210..1F23B8221UNKNOWN, // 1F23C..1F23F8222COMMON, // 1F240..1F2488223UNKNOWN, // 1F249..1F24F8224COMMON, // 1F250..1F2518225UNKNOWN, // 1F252..1F25F8226COMMON, // 1F260..1F2658227UNKNOWN, // 1F266..1F2FF8228COMMON, // 1F300..1F6D78229UNKNOWN, // 1F6D8..1F6DF8230COMMON, // 1F6E0..1F6EC8231UNKNOWN, // 1F6ED..1F6EF8232COMMON, // 1F6F0..1F6FC8233UNKNOWN, // 1F6FD..1F6FF8234COMMON, // 1F700..1F7738235UNKNOWN, // 1F774..1F77F8236COMMON, // 1F780..1F7D88237UNKNOWN, // 1F7D9..1F7DF8238COMMON, // 1F7E0..1F7EB8239UNKNOWN, // 1F7EC..1F7FF8240COMMON, // 1F800..1F80B8241UNKNOWN, // 1F80C..1F80F8242COMMON, // 1F810..1F8478243UNKNOWN, // 1F848..1F84F8244COMMON, // 1F850..1F8598245UNKNOWN, // 1F85A..1F85F8246COMMON, // 1F860..1F8878247UNKNOWN, // 1F888..1F88F8248COMMON, // 1F890..1F8AD8249UNKNOWN, // 1F8AE..1F8AF8250COMMON, // 1F8B0..1F8B18251UNKNOWN, // 1F8B2..1F8FF8252COMMON, // 1F900..1F9788253UNKNOWN, // 1F9798254COMMON, // 1F97A..1F9CB8255UNKNOWN, // 1F9CC8256COMMON, // 1F9CD..1FA538257UNKNOWN, // 1FA54..1FA5F8258COMMON, // 1FA60..1FA6D8259UNKNOWN, // 1FA6E..1FA6F8260COMMON, // 1FA70..1FA748261UNKNOWN, // 1FA75..1FA778262COMMON, // 1FA78..1FA7A8263UNKNOWN, // 1FA7B..1FA7F8264COMMON, // 1FA80..1FA868265UNKNOWN, // 1FA87..1FA8F8266COMMON, // 1FA90..1FAA88267UNKNOWN, // 1FAA9..1FAAF8268COMMON, // 1FAB0..1FAB68269UNKNOWN, // 1FAB7..1FABF8270COMMON, // 1FAC0..1FAC28271UNKNOWN, // 1FAC3..1FACF8272COMMON, // 1FAD0..1FAD68273UNKNOWN, // 1FAD7..1FAFF8274COMMON, // 1FB00..1FB928275UNKNOWN, // 1FB938276COMMON, // 1FB94..1FBCA8277UNKNOWN, // 1FBCB..1FBEF8278COMMON, // 1FBF0..1FBF98279UNKNOWN, // 1FBFA..1FFFF8280HAN, // 20000..2A6DD8281UNKNOWN, // 2A6DE..2A6FF8282HAN, // 2A700..2B7348283UNKNOWN, // 2B735..2B73F8284HAN, // 2B740..2B81D8285UNKNOWN, // 2B81E..2B81F8286HAN, // 2B820..2CEA18287UNKNOWN, // 2CEA2..2CEAF8288HAN, // 2CEB0..2EBE08289UNKNOWN, // 2EBE1..2F7FF8290HAN, // 2F800..2FA1D8291UNKNOWN, // 2FA1E..2FFFF8292HAN, // 30000..3134A8293UNKNOWN, // 3134B..E00008294COMMON, // E00018295UNKNOWN, // E0002..E001F8296COMMON, // E0020..E007F8297UNKNOWN, // E0080..E00FF8298INHERITED, // E0100..E01EF8299UNKNOWN, // E01F0..10FFFF8300};83018302private static final HashMap<String, Character.UnicodeScript> aliases;8303static {8304aliases = new HashMap<>((int)(157 / 0.75f + 1.0f));8305aliases.put("ADLM", ADLAM);8306aliases.put("AGHB", CAUCASIAN_ALBANIAN);8307aliases.put("AHOM", AHOM);8308aliases.put("ARAB", ARABIC);8309aliases.put("ARMI", IMPERIAL_ARAMAIC);8310aliases.put("ARMN", ARMENIAN);8311aliases.put("AVST", AVESTAN);8312aliases.put("BALI", BALINESE);8313aliases.put("BAMU", BAMUM);8314aliases.put("BASS", BASSA_VAH);8315aliases.put("BATK", BATAK);8316aliases.put("BENG", BENGALI);8317aliases.put("BHKS", BHAIKSUKI);8318aliases.put("BOPO", BOPOMOFO);8319aliases.put("BRAH", BRAHMI);8320aliases.put("BRAI", BRAILLE);8321aliases.put("BUGI", BUGINESE);8322aliases.put("BUHD", BUHID);8323aliases.put("CAKM", CHAKMA);8324aliases.put("CANS", CANADIAN_ABORIGINAL);8325aliases.put("CARI", CARIAN);8326aliases.put("CHAM", CHAM);8327aliases.put("CHER", CHEROKEE);8328aliases.put("CHRS", CHORASMIAN);8329aliases.put("COPT", COPTIC);8330aliases.put("CPRT", CYPRIOT);8331aliases.put("CYRL", CYRILLIC);8332aliases.put("DEVA", DEVANAGARI);8333aliases.put("DIAK", DIVES_AKURU);8334aliases.put("DOGR", DOGRA);8335aliases.put("DSRT", DESERET);8336aliases.put("DUPL", DUPLOYAN);8337aliases.put("EGYP", EGYPTIAN_HIEROGLYPHS);8338aliases.put("ELBA", ELBASAN);8339aliases.put("ELYM", ELYMAIC);8340aliases.put("ETHI", ETHIOPIC);8341aliases.put("GEOR", GEORGIAN);8342aliases.put("GLAG", GLAGOLITIC);8343aliases.put("GONM", MASARAM_GONDI);8344aliases.put("GOTH", GOTHIC);8345aliases.put("GONG", GUNJALA_GONDI);8346aliases.put("GRAN", GRANTHA);8347aliases.put("GREK", GREEK);8348aliases.put("GUJR", GUJARATI);8349aliases.put("GURU", GURMUKHI);8350aliases.put("HANG", HANGUL);8351aliases.put("HANI", HAN);8352aliases.put("HANO", HANUNOO);8353aliases.put("HATR", HATRAN);8354aliases.put("HEBR", HEBREW);8355aliases.put("HIRA", HIRAGANA);8356aliases.put("HLUW", ANATOLIAN_HIEROGLYPHS);8357aliases.put("HMNG", PAHAWH_HMONG);8358aliases.put("HMNP", NYIAKENG_PUACHUE_HMONG);8359// it appears we don't have the KATAKANA_OR_HIRAGANA8360//aliases.put("HRKT", KATAKANA_OR_HIRAGANA);8361aliases.put("HUNG", OLD_HUNGARIAN);8362aliases.put("ITAL", OLD_ITALIC);8363aliases.put("JAVA", JAVANESE);8364aliases.put("KALI", KAYAH_LI);8365aliases.put("KANA", KATAKANA);8366aliases.put("KHAR", KHAROSHTHI);8367aliases.put("KHMR", KHMER);8368aliases.put("KHOJ", KHOJKI);8369aliases.put("KITS", KHITAN_SMALL_SCRIPT);8370aliases.put("KNDA", KANNADA);8371aliases.put("KTHI", KAITHI);8372aliases.put("LANA", TAI_THAM);8373aliases.put("LAOO", LAO);8374aliases.put("LATN", LATIN);8375aliases.put("LEPC", LEPCHA);8376aliases.put("LIMB", LIMBU);8377aliases.put("LINA", LINEAR_A);8378aliases.put("LINB", LINEAR_B);8379aliases.put("LISU", LISU);8380aliases.put("LYCI", LYCIAN);8381aliases.put("LYDI", LYDIAN);8382aliases.put("MAHJ", MAHAJANI);8383aliases.put("MAKA", MAKASAR);8384aliases.put("MARC", MARCHEN);8385aliases.put("MAND", MANDAIC);8386aliases.put("MANI", MANICHAEAN);8387aliases.put("MEDF", MEDEFAIDRIN);8388aliases.put("MEND", MENDE_KIKAKUI);8389aliases.put("MERC", MEROITIC_CURSIVE);8390aliases.put("MERO", MEROITIC_HIEROGLYPHS);8391aliases.put("MLYM", MALAYALAM);8392aliases.put("MODI", MODI);8393aliases.put("MONG", MONGOLIAN);8394aliases.put("MROO", MRO);8395aliases.put("MTEI", MEETEI_MAYEK);8396aliases.put("MULT", MULTANI);8397aliases.put("MYMR", MYANMAR);8398aliases.put("NAND", NANDINAGARI);8399aliases.put("NARB", OLD_NORTH_ARABIAN);8400aliases.put("NBAT", NABATAEAN);8401aliases.put("NEWA", NEWA);8402aliases.put("NKOO", NKO);8403aliases.put("NSHU", NUSHU);8404aliases.put("OGAM", OGHAM);8405aliases.put("OLCK", OL_CHIKI);8406aliases.put("ORKH", OLD_TURKIC);8407aliases.put("ORYA", ORIYA);8408aliases.put("OSGE", OSAGE);8409aliases.put("OSMA", OSMANYA);8410aliases.put("PALM", PALMYRENE);8411aliases.put("PAUC", PAU_CIN_HAU);8412aliases.put("PERM", OLD_PERMIC);8413aliases.put("PHAG", PHAGS_PA);8414aliases.put("PHLI", INSCRIPTIONAL_PAHLAVI);8415aliases.put("PHLP", PSALTER_PAHLAVI);8416aliases.put("PHNX", PHOENICIAN);8417aliases.put("PLRD", MIAO);8418aliases.put("PRTI", INSCRIPTIONAL_PARTHIAN);8419aliases.put("RJNG", REJANG);8420aliases.put("ROHG", HANIFI_ROHINGYA);8421aliases.put("RUNR", RUNIC);8422aliases.put("SAMR", SAMARITAN);8423aliases.put("SARB", OLD_SOUTH_ARABIAN);8424aliases.put("SAUR", SAURASHTRA);8425aliases.put("SGNW", SIGNWRITING);8426aliases.put("SHAW", SHAVIAN);8427aliases.put("SHRD", SHARADA);8428aliases.put("SIDD", SIDDHAM);8429aliases.put("SIND", KHUDAWADI);8430aliases.put("SINH", SINHALA);8431aliases.put("SOGD", SOGDIAN);8432aliases.put("SOGO", OLD_SOGDIAN);8433aliases.put("SORA", SORA_SOMPENG);8434aliases.put("SOYO", SOYOMBO);8435aliases.put("SUND", SUNDANESE);8436aliases.put("SYLO", SYLOTI_NAGRI);8437aliases.put("SYRC", SYRIAC);8438aliases.put("TAGB", TAGBANWA);8439aliases.put("TAKR", TAKRI);8440aliases.put("TALE", TAI_LE);8441aliases.put("TALU", NEW_TAI_LUE);8442aliases.put("TAML", TAMIL);8443aliases.put("TANG", TANGUT);8444aliases.put("TAVT", TAI_VIET);8445aliases.put("TELU", TELUGU);8446aliases.put("TFNG", TIFINAGH);8447aliases.put("TGLG", TAGALOG);8448aliases.put("THAA", THAANA);8449aliases.put("THAI", THAI);8450aliases.put("TIBT", TIBETAN);8451aliases.put("TIRH", TIRHUTA);8452aliases.put("UGAR", UGARITIC);8453aliases.put("VAII", VAI);8454aliases.put("WARA", WARANG_CITI);8455aliases.put("WCHO", WANCHO);8456aliases.put("XPEO", OLD_PERSIAN);8457aliases.put("XSUX", CUNEIFORM);8458aliases.put("YIII", YI);8459aliases.put("YEZI", YEZIDI);8460aliases.put("ZANB", ZANABAZAR_SQUARE);8461aliases.put("ZINH", INHERITED);8462aliases.put("ZYYY", COMMON);8463aliases.put("ZZZZ", UNKNOWN);8464}84658466/**8467* Returns the enum constant representing the Unicode script of which8468* the given character (Unicode code point) is assigned to.8469*8470* @param codePoint the character (Unicode code point) in question.8471* @return The {@code UnicodeScript} constant representing the8472* Unicode script of which this character is assigned to.8473*8474* @throws IllegalArgumentException if the specified8475* {@code codePoint} is an invalid Unicode code point.8476* @see Character#isValidCodePoint(int)8477*8478*/8479public static UnicodeScript of(int codePoint) {8480if (!isValidCodePoint(codePoint))8481throw new IllegalArgumentException(8482String.format("Not a valid Unicode code point: 0x%X", codePoint));8483int type = getType(codePoint);8484// leave SURROGATE and PRIVATE_USE for table lookup8485if (type == UNASSIGNED)8486return UNKNOWN;8487int index = Arrays.binarySearch(scriptStarts, codePoint);8488if (index < 0)8489index = -index - 2;8490return scripts[index];8491}84928493/**8494* Returns the UnicodeScript constant with the given Unicode script8495* name or the script name alias. Script names and their aliases are8496* determined by The Unicode Standard. The files {@code Scripts<version>.txt}8497* and {@code PropertyValueAliases<version>.txt} define script names8498* and the script name aliases for a particular version of the8499* standard. The {@link Character} class specifies the version of8500* the standard that it supports.8501* <p>8502* Character case is ignored for all of the valid script names.8503* The en_US locale's case mapping rules are used to provide8504* case-insensitive string comparisons for script name validation.8505*8506* @param scriptName A {@code UnicodeScript} name.8507* @return The {@code UnicodeScript} constant identified8508* by {@code scriptName}8509* @throws IllegalArgumentException if {@code scriptName} is an8510* invalid name8511* @throws NullPointerException if {@code scriptName} is null8512*/8513public static final UnicodeScript forName(String scriptName) {8514scriptName = scriptName.toUpperCase(Locale.ENGLISH);8515//.replace(' ', '_'));8516UnicodeScript sc = aliases.get(scriptName);8517if (sc != null)8518return sc;8519return valueOf(scriptName);8520}8521}85228523/**8524* The value of the {@code Character}.8525*8526* @serial8527*/8528private final char value;85298530/** use serialVersionUID from JDK 1.0.2 for interoperability */8531@java.io.Serial8532private static final long serialVersionUID = 3786198910865385080L;85338534/**8535* Constructs a newly allocated {@code Character} object that8536* represents the specified {@code char} value.8537*8538* @param value the value to be represented by the8539* {@code Character} object.8540*8541* @deprecated8542* It is rarely appropriate to use this constructor. The static factory8543* {@link #valueOf(char)} is generally a better choice, as it is8544* likely to yield significantly better space and time performance.8545*/8546@Deprecated(since="9", forRemoval = true)8547public Character(char value) {8548this.value = value;8549}85508551private static class CharacterCache {8552private CharacterCache(){}85538554static final Character[] cache;8555static Character[] archivedCache;85568557static {8558int size = 127 + 1;85598560// Load and use the archived cache if it exists8561CDS.initializeFromArchive(CharacterCache.class);8562if (archivedCache == null || archivedCache.length != size) {8563Character[] c = new Character[size];8564for (int i = 0; i < size; i++) {8565c[i] = new Character((char) i);8566}8567archivedCache = c;8568}8569cache = archivedCache;8570}8571}85728573/**8574* Returns a {@code Character} instance representing the specified8575* {@code char} value.8576* If a new {@code Character} instance is not required, this method8577* should generally be used in preference to the constructor8578* {@link #Character(char)}, as this method is likely to yield8579* significantly better space and time performance by caching8580* frequently requested values.8581*8582* This method will always cache values in the range {@code8583* '\u005Cu0000'} to {@code '\u005Cu007F'}, inclusive, and may8584* cache other values outside of this range.8585*8586* @param c a char value.8587* @return a {@code Character} instance representing {@code c}.8588* @since 1.58589*/8590@IntrinsicCandidate8591public static Character valueOf(char c) {8592if (c <= 127) { // must cache8593return CharacterCache.cache[(int)c];8594}8595return new Character(c);8596}85978598/**8599* Returns the value of this {@code Character} object.8600* @return the primitive {@code char} value represented by8601* this object.8602*/8603@IntrinsicCandidate8604public char charValue() {8605return value;8606}86078608/**8609* Returns a hash code for this {@code Character}; equal to the result8610* of invoking {@code charValue()}.8611*8612* @return a hash code value for this {@code Character}8613*/8614@Override8615public int hashCode() {8616return Character.hashCode(value);8617}86188619/**8620* Returns a hash code for a {@code char} value; compatible with8621* {@code Character.hashCode()}.8622*8623* @since 1.88624*8625* @param value The {@code char} for which to return a hash code.8626* @return a hash code value for a {@code char} value.8627*/8628public static int hashCode(char value) {8629return (int)value;8630}86318632/**8633* Compares this object against the specified object.8634* The result is {@code true} if and only if the argument is not8635* {@code null} and is a {@code Character} object that8636* represents the same {@code char} value as this object.8637*8638* @param obj the object to compare with.8639* @return {@code true} if the objects are the same;8640* {@code false} otherwise.8641*/8642public boolean equals(Object obj) {8643if (obj instanceof Character) {8644return value == ((Character)obj).charValue();8645}8646return false;8647}86488649/**8650* Returns a {@code String} object representing this8651* {@code Character}'s value. The result is a string of8652* length 1 whose sole component is the primitive8653* {@code char} value represented by this8654* {@code Character} object.8655*8656* @return a string representation of this object.8657*/8658public String toString() {8659return String.valueOf(value);8660}86618662/**8663* Returns a {@code String} object representing the8664* specified {@code char}. The result is a string of length8665* 1 consisting solely of the specified {@code char}.8666*8667* @apiNote This method cannot handle <a8668* href="#supplementary"> supplementary characters</a>. To support8669* all Unicode characters, including supplementary characters, use8670* the {@link #toString(int)} method.8671*8672* @param c the {@code char} to be converted8673* @return the string representation of the specified {@code char}8674* @since 1.48675*/8676public static String toString(char c) {8677return String.valueOf(c);8678}86798680/**8681* Returns a {@code String} object representing the8682* specified character (Unicode code point). The result is a string of8683* length 1 or 2, consisting solely of the specified {@code codePoint}.8684*8685* @param codePoint the {@code codePoint} to be converted8686* @return the string representation of the specified {@code codePoint}8687* @throws IllegalArgumentException if the specified8688* {@code codePoint} is not a {@linkplain #isValidCodePoint8689* valid Unicode code point}.8690* @since 118691*/8692public static String toString(int codePoint) {8693return String.valueOfCodePoint(codePoint);8694}86958696/**8697* Determines whether the specified code point is a valid8698* <a href="http://www.unicode.org/glossary/#code_point">8699* Unicode code point value</a>.8700*8701* @param codePoint the Unicode code point to be tested8702* @return {@code true} if the specified code point value is between8703* {@link #MIN_CODE_POINT} and8704* {@link #MAX_CODE_POINT} inclusive;8705* {@code false} otherwise.8706* @since 1.58707*/8708public static boolean isValidCodePoint(int codePoint) {8709// Optimized form of:8710// codePoint >= MIN_CODE_POINT && codePoint <= MAX_CODE_POINT8711int plane = codePoint >>> 16;8712return plane < ((MAX_CODE_POINT + 1) >>> 16);8713}87148715/**8716* Determines whether the specified character (Unicode code point)8717* is in the <a href="#BMP">Basic Multilingual Plane (BMP)</a>.8718* Such code points can be represented using a single {@code char}.8719*8720* @param codePoint the character (Unicode code point) to be tested8721* @return {@code true} if the specified code point is between8722* {@link #MIN_VALUE} and {@link #MAX_VALUE} inclusive;8723* {@code false} otherwise.8724* @since 1.78725*/8726public static boolean isBmpCodePoint(int codePoint) {8727return codePoint >>> 16 == 0;8728// Optimized form of:8729// codePoint >= MIN_VALUE && codePoint <= MAX_VALUE8730// We consistently use logical shift (>>>) to facilitate8731// additional runtime optimizations.8732}87338734/**8735* Determines whether the specified character (Unicode code point)8736* is in the <a href="#supplementary">supplementary character</a> range.8737*8738* @param codePoint the character (Unicode code point) to be tested8739* @return {@code true} if the specified code point is between8740* {@link #MIN_SUPPLEMENTARY_CODE_POINT} and8741* {@link #MAX_CODE_POINT} inclusive;8742* {@code false} otherwise.8743* @since 1.58744*/8745public static boolean isSupplementaryCodePoint(int codePoint) {8746return codePoint >= MIN_SUPPLEMENTARY_CODE_POINT8747&& codePoint < MAX_CODE_POINT + 1;8748}87498750/**8751* Determines if the given {@code char} value is a8752* <a href="http://www.unicode.org/glossary/#high_surrogate_code_unit">8753* Unicode high-surrogate code unit</a>8754* (also known as <i>leading-surrogate code unit</i>).8755*8756* <p>Such values do not represent characters by themselves,8757* but are used in the representation of8758* <a href="#supplementary">supplementary characters</a>8759* in the UTF-16 encoding.8760*8761* @param ch the {@code char} value to be tested.8762* @return {@code true} if the {@code char} value is between8763* {@link #MIN_HIGH_SURROGATE} and8764* {@link #MAX_HIGH_SURROGATE} inclusive;8765* {@code false} otherwise.8766* @see Character#isLowSurrogate(char)8767* @see Character.UnicodeBlock#of(int)8768* @since 1.58769*/8770public static boolean isHighSurrogate(char ch) {8771// Help VM constant-fold; MAX_HIGH_SURROGATE + 1 == MIN_LOW_SURROGATE8772return ch >= MIN_HIGH_SURROGATE && ch < (MAX_HIGH_SURROGATE + 1);8773}87748775/**8776* Determines if the given {@code char} value is a8777* <a href="http://www.unicode.org/glossary/#low_surrogate_code_unit">8778* Unicode low-surrogate code unit</a>8779* (also known as <i>trailing-surrogate code unit</i>).8780*8781* <p>Such values do not represent characters by themselves,8782* but are used in the representation of8783* <a href="#supplementary">supplementary characters</a>8784* in the UTF-16 encoding.8785*8786* @param ch the {@code char} value to be tested.8787* @return {@code true} if the {@code char} value is between8788* {@link #MIN_LOW_SURROGATE} and8789* {@link #MAX_LOW_SURROGATE} inclusive;8790* {@code false} otherwise.8791* @see Character#isHighSurrogate(char)8792* @since 1.58793*/8794public static boolean isLowSurrogate(char ch) {8795return ch >= MIN_LOW_SURROGATE && ch < (MAX_LOW_SURROGATE + 1);8796}87978798/**8799* Determines if the given {@code char} value is a Unicode8800* <i>surrogate code unit</i>.8801*8802* <p>Such values do not represent characters by themselves,8803* but are used in the representation of8804* <a href="#supplementary">supplementary characters</a>8805* in the UTF-16 encoding.8806*8807* <p>A char value is a surrogate code unit if and only if it is either8808* a {@linkplain #isLowSurrogate(char) low-surrogate code unit} or8809* a {@linkplain #isHighSurrogate(char) high-surrogate code unit}.8810*8811* @param ch the {@code char} value to be tested.8812* @return {@code true} if the {@code char} value is between8813* {@link #MIN_SURROGATE} and8814* {@link #MAX_SURROGATE} inclusive;8815* {@code false} otherwise.8816* @since 1.78817*/8818public static boolean isSurrogate(char ch) {8819return ch >= MIN_SURROGATE && ch < (MAX_SURROGATE + 1);8820}88218822/**8823* Determines whether the specified pair of {@code char}8824* values is a valid8825* <a href="http://www.unicode.org/glossary/#surrogate_pair">8826* Unicode surrogate pair</a>.8827*8828* <p>This method is equivalent to the expression:8829* <blockquote><pre>{@code8830* isHighSurrogate(high) && isLowSurrogate(low)8831* }</pre></blockquote>8832*8833* @param high the high-surrogate code value to be tested8834* @param low the low-surrogate code value to be tested8835* @return {@code true} if the specified high and8836* low-surrogate code values represent a valid surrogate pair;8837* {@code false} otherwise.8838* @since 1.58839*/8840public static boolean isSurrogatePair(char high, char low) {8841return isHighSurrogate(high) && isLowSurrogate(low);8842}88438844/**8845* Determines the number of {@code char} values needed to8846* represent the specified character (Unicode code point). If the8847* specified character is equal to or greater than 0x10000, then8848* the method returns 2. Otherwise, the method returns 1.8849*8850* <p>This method doesn't validate the specified character to be a8851* valid Unicode code point. The caller must validate the8852* character value using {@link #isValidCodePoint(int) isValidCodePoint}8853* if necessary.8854*8855* @param codePoint the character (Unicode code point) to be tested.8856* @return 2 if the character is a valid supplementary character; 1 otherwise.8857* @see Character#isSupplementaryCodePoint(int)8858* @since 1.58859*/8860public static int charCount(int codePoint) {8861return codePoint >= MIN_SUPPLEMENTARY_CODE_POINT ? 2 : 1;8862}88638864/**8865* Converts the specified surrogate pair to its supplementary code8866* point value. This method does not validate the specified8867* surrogate pair. The caller must validate it using {@link8868* #isSurrogatePair(char, char) isSurrogatePair} if necessary.8869*8870* @param high the high-surrogate code unit8871* @param low the low-surrogate code unit8872* @return the supplementary code point composed from the8873* specified surrogate pair.8874* @since 1.58875*/8876public static int toCodePoint(char high, char low) {8877// Optimized form of:8878// return ((high - MIN_HIGH_SURROGATE) << 10)8879// + (low - MIN_LOW_SURROGATE)8880// + MIN_SUPPLEMENTARY_CODE_POINT;8881return ((high << 10) + low) + (MIN_SUPPLEMENTARY_CODE_POINT8882- (MIN_HIGH_SURROGATE << 10)8883- MIN_LOW_SURROGATE);8884}88858886/**8887* Returns the code point at the given index of the8888* {@code CharSequence}. If the {@code char} value at8889* the given index in the {@code CharSequence} is in the8890* high-surrogate range, the following index is less than the8891* length of the {@code CharSequence}, and the8892* {@code char} value at the following index is in the8893* low-surrogate range, then the supplementary code point8894* corresponding to this surrogate pair is returned. Otherwise,8895* the {@code char} value at the given index is returned.8896*8897* @param seq a sequence of {@code char} values (Unicode code8898* units)8899* @param index the index to the {@code char} values (Unicode8900* code units) in {@code seq} to be converted8901* @return the Unicode code point at the given index8902* @throws NullPointerException if {@code seq} is null.8903* @throws IndexOutOfBoundsException if the value8904* {@code index} is negative or not less than8905* {@link CharSequence#length() seq.length()}.8906* @since 1.58907*/8908public static int codePointAt(CharSequence seq, int index) {8909char c1 = seq.charAt(index);8910if (isHighSurrogate(c1) && ++index < seq.length()) {8911char c2 = seq.charAt(index);8912if (isLowSurrogate(c2)) {8913return toCodePoint(c1, c2);8914}8915}8916return c1;8917}89188919/**8920* Returns the code point at the given index of the8921* {@code char} array. If the {@code char} value at8922* the given index in the {@code char} array is in the8923* high-surrogate range, the following index is less than the8924* length of the {@code char} array, and the8925* {@code char} value at the following index is in the8926* low-surrogate range, then the supplementary code point8927* corresponding to this surrogate pair is returned. Otherwise,8928* the {@code char} value at the given index is returned.8929*8930* @param a the {@code char} array8931* @param index the index to the {@code char} values (Unicode8932* code units) in the {@code char} array to be converted8933* @return the Unicode code point at the given index8934* @throws NullPointerException if {@code a} is null.8935* @throws IndexOutOfBoundsException if the value8936* {@code index} is negative or not less than8937* the length of the {@code char} array.8938* @since 1.58939*/8940public static int codePointAt(char[] a, int index) {8941return codePointAtImpl(a, index, a.length);8942}89438944/**8945* Returns the code point at the given index of the8946* {@code char} array, where only array elements with8947* {@code index} less than {@code limit} can be used. If8948* the {@code char} value at the given index in the8949* {@code char} array is in the high-surrogate range, the8950* following index is less than the {@code limit}, and the8951* {@code char} value at the following index is in the8952* low-surrogate range, then the supplementary code point8953* corresponding to this surrogate pair is returned. Otherwise,8954* the {@code char} value at the given index is returned.8955*8956* @param a the {@code char} array8957* @param index the index to the {@code char} values (Unicode8958* code units) in the {@code char} array to be converted8959* @param limit the index after the last array element that8960* can be used in the {@code char} array8961* @return the Unicode code point at the given index8962* @throws NullPointerException if {@code a} is null.8963* @throws IndexOutOfBoundsException if the {@code index}8964* argument is negative or not less than the {@code limit}8965* argument, or if the {@code limit} argument is negative or8966* greater than the length of the {@code char} array.8967* @since 1.58968*/8969public static int codePointAt(char[] a, int index, int limit) {8970if (index >= limit || limit < 0 || limit > a.length) {8971throw new IndexOutOfBoundsException();8972}8973return codePointAtImpl(a, index, limit);8974}89758976// throws ArrayIndexOutOfBoundsException if index out of bounds8977static int codePointAtImpl(char[] a, int index, int limit) {8978char c1 = a[index];8979if (isHighSurrogate(c1) && ++index < limit) {8980char c2 = a[index];8981if (isLowSurrogate(c2)) {8982return toCodePoint(c1, c2);8983}8984}8985return c1;8986}89878988/**8989* Returns the code point preceding the given index of the8990* {@code CharSequence}. If the {@code char} value at8991* {@code (index - 1)} in the {@code CharSequence} is in8992* the low-surrogate range, {@code (index - 2)} is not8993* negative, and the {@code char} value at {@code (index - 2)}8994* in the {@code CharSequence} is in the8995* high-surrogate range, then the supplementary code point8996* corresponding to this surrogate pair is returned. Otherwise,8997* the {@code char} value at {@code (index - 1)} is8998* returned.8999*9000* @param seq the {@code CharSequence} instance9001* @param index the index following the code point that should be returned9002* @return the Unicode code point value before the given index.9003* @throws NullPointerException if {@code seq} is null.9004* @throws IndexOutOfBoundsException if the {@code index}9005* argument is less than 1 or greater than {@link9006* CharSequence#length() seq.length()}.9007* @since 1.59008*/9009public static int codePointBefore(CharSequence seq, int index) {9010char c2 = seq.charAt(--index);9011if (isLowSurrogate(c2) && index > 0) {9012char c1 = seq.charAt(--index);9013if (isHighSurrogate(c1)) {9014return toCodePoint(c1, c2);9015}9016}9017return c2;9018}90199020/**9021* Returns the code point preceding the given index of the9022* {@code char} array. If the {@code char} value at9023* {@code (index - 1)} in the {@code char} array is in9024* the low-surrogate range, {@code (index - 2)} is not9025* negative, and the {@code char} value at {@code (index - 2)}9026* in the {@code char} array is in the9027* high-surrogate range, then the supplementary code point9028* corresponding to this surrogate pair is returned. Otherwise,9029* the {@code char} value at {@code (index - 1)} is9030* returned.9031*9032* @param a the {@code char} array9033* @param index the index following the code point that should be returned9034* @return the Unicode code point value before the given index.9035* @throws NullPointerException if {@code a} is null.9036* @throws IndexOutOfBoundsException if the {@code index}9037* argument is less than 1 or greater than the length of the9038* {@code char} array9039* @since 1.59040*/9041public static int codePointBefore(char[] a, int index) {9042return codePointBeforeImpl(a, index, 0);9043}90449045/**9046* Returns the code point preceding the given index of the9047* {@code char} array, where only array elements with9048* {@code index} greater than or equal to {@code start}9049* can be used. If the {@code char} value at {@code (index - 1)}9050* in the {@code char} array is in the9051* low-surrogate range, {@code (index - 2)} is not less than9052* {@code start}, and the {@code char} value at9053* {@code (index - 2)} in the {@code char} array is in9054* the high-surrogate range, then the supplementary code point9055* corresponding to this surrogate pair is returned. Otherwise,9056* the {@code char} value at {@code (index - 1)} is9057* returned.9058*9059* @param a the {@code char} array9060* @param index the index following the code point that should be returned9061* @param start the index of the first array element in the9062* {@code char} array9063* @return the Unicode code point value before the given index.9064* @throws NullPointerException if {@code a} is null.9065* @throws IndexOutOfBoundsException if the {@code index}9066* argument is not greater than the {@code start} argument or9067* is greater than the length of the {@code char} array, or9068* if the {@code start} argument is negative or not less than9069* the length of the {@code char} array.9070* @since 1.59071*/9072public static int codePointBefore(char[] a, int index, int start) {9073if (index <= start || start < 0 || start >= a.length) {9074throw new IndexOutOfBoundsException();9075}9076return codePointBeforeImpl(a, index, start);9077}90789079// throws ArrayIndexOutOfBoundsException if index-1 out of bounds9080static int codePointBeforeImpl(char[] a, int index, int start) {9081char c2 = a[--index];9082if (isLowSurrogate(c2) && index > start) {9083char c1 = a[--index];9084if (isHighSurrogate(c1)) {9085return toCodePoint(c1, c2);9086}9087}9088return c2;9089}90909091/**9092* Returns the leading surrogate (a9093* <a href="http://www.unicode.org/glossary/#high_surrogate_code_unit">9094* high surrogate code unit</a>) of the9095* <a href="http://www.unicode.org/glossary/#surrogate_pair">9096* surrogate pair</a>9097* representing the specified supplementary character (Unicode9098* code point) in the UTF-16 encoding. If the specified character9099* is not a9100* <a href="Character.html#supplementary">supplementary character</a>,9101* an unspecified {@code char} is returned.9102*9103* <p>If9104* {@link #isSupplementaryCodePoint isSupplementaryCodePoint(x)}9105* is {@code true}, then9106* {@link #isHighSurrogate isHighSurrogate}{@code (highSurrogate(x))} and9107* {@link #toCodePoint toCodePoint}{@code (highSurrogate(x), }{@link #lowSurrogate lowSurrogate}{@code (x)) == x}9108* are also always {@code true}.9109*9110* @param codePoint a supplementary character (Unicode code point)9111* @return the leading surrogate code unit used to represent the9112* character in the UTF-16 encoding9113* @since 1.79114*/9115public static char highSurrogate(int codePoint) {9116return (char) ((codePoint >>> 10)9117+ (MIN_HIGH_SURROGATE - (MIN_SUPPLEMENTARY_CODE_POINT >>> 10)));9118}91199120/**9121* Returns the trailing surrogate (a9122* <a href="http://www.unicode.org/glossary/#low_surrogate_code_unit">9123* low surrogate code unit</a>) of the9124* <a href="http://www.unicode.org/glossary/#surrogate_pair">9125* surrogate pair</a>9126* representing the specified supplementary character (Unicode9127* code point) in the UTF-16 encoding. If the specified character9128* is not a9129* <a href="Character.html#supplementary">supplementary character</a>,9130* an unspecified {@code char} is returned.9131*9132* <p>If9133* {@link #isSupplementaryCodePoint isSupplementaryCodePoint(x)}9134* is {@code true}, then9135* {@link #isLowSurrogate isLowSurrogate}{@code (lowSurrogate(x))} and9136* {@link #toCodePoint toCodePoint}{@code (}{@link #highSurrogate highSurrogate}{@code (x), lowSurrogate(x)) == x}9137* are also always {@code true}.9138*9139* @param codePoint a supplementary character (Unicode code point)9140* @return the trailing surrogate code unit used to represent the9141* character in the UTF-16 encoding9142* @since 1.79143*/9144public static char lowSurrogate(int codePoint) {9145return (char) ((codePoint & 0x3ff) + MIN_LOW_SURROGATE);9146}91479148/**9149* Converts the specified character (Unicode code point) to its9150* UTF-16 representation. If the specified code point is a BMP9151* (Basic Multilingual Plane or Plane 0) value, the same value is9152* stored in {@code dst[dstIndex]}, and 1 is returned. If the9153* specified code point is a supplementary character, its9154* surrogate values are stored in {@code dst[dstIndex]}9155* (high-surrogate) and {@code dst[dstIndex+1]}9156* (low-surrogate), and 2 is returned.9157*9158* @param codePoint the character (Unicode code point) to be converted.9159* @param dst an array of {@code char} in which the9160* {@code codePoint}'s UTF-16 value is stored.9161* @param dstIndex the start index into the {@code dst}9162* array where the converted value is stored.9163* @return 1 if the code point is a BMP code point, 2 if the9164* code point is a supplementary code point.9165* @throws IllegalArgumentException if the specified9166* {@code codePoint} is not a valid Unicode code point.9167* @throws NullPointerException if the specified {@code dst} is null.9168* @throws IndexOutOfBoundsException if {@code dstIndex}9169* is negative or not less than {@code dst.length}, or if9170* {@code dst} at {@code dstIndex} doesn't have enough9171* array element(s) to store the resulting {@code char}9172* value(s). (If {@code dstIndex} is equal to9173* {@code dst.length-1} and the specified9174* {@code codePoint} is a supplementary character, the9175* high-surrogate value is not stored in9176* {@code dst[dstIndex]}.)9177* @since 1.59178*/9179public static int toChars(int codePoint, char[] dst, int dstIndex) {9180if (isBmpCodePoint(codePoint)) {9181dst[dstIndex] = (char) codePoint;9182return 1;9183} else if (isValidCodePoint(codePoint)) {9184toSurrogates(codePoint, dst, dstIndex);9185return 2;9186} else {9187throw new IllegalArgumentException(9188String.format("Not a valid Unicode code point: 0x%X", codePoint));9189}9190}91919192/**9193* Converts the specified character (Unicode code point) to its9194* UTF-16 representation stored in a {@code char} array. If9195* the specified code point is a BMP (Basic Multilingual Plane or9196* Plane 0) value, the resulting {@code char} array has9197* the same value as {@code codePoint}. If the specified code9198* point is a supplementary code point, the resulting9199* {@code char} array has the corresponding surrogate pair.9200*9201* @param codePoint a Unicode code point9202* @return a {@code char} array having9203* {@code codePoint}'s UTF-16 representation.9204* @throws IllegalArgumentException if the specified9205* {@code codePoint} is not a valid Unicode code point.9206* @since 1.59207*/9208public static char[] toChars(int codePoint) {9209if (isBmpCodePoint(codePoint)) {9210return new char[] { (char) codePoint };9211} else if (isValidCodePoint(codePoint)) {9212char[] result = new char[2];9213toSurrogates(codePoint, result, 0);9214return result;9215} else {9216throw new IllegalArgumentException(9217String.format("Not a valid Unicode code point: 0x%X", codePoint));9218}9219}92209221static void toSurrogates(int codePoint, char[] dst, int index) {9222// We write elements "backwards" to guarantee all-or-nothing9223dst[index+1] = lowSurrogate(codePoint);9224dst[index] = highSurrogate(codePoint);9225}92269227/**9228* Returns the number of Unicode code points in the text range of9229* the specified char sequence. The text range begins at the9230* specified {@code beginIndex} and extends to the9231* {@code char} at index {@code endIndex - 1}. Thus the9232* length (in {@code char}s) of the text range is9233* {@code endIndex-beginIndex}. Unpaired surrogates within9234* the text range count as one code point each.9235*9236* @param seq the char sequence9237* @param beginIndex the index to the first {@code char} of9238* the text range.9239* @param endIndex the index after the last {@code char} of9240* the text range.9241* @return the number of Unicode code points in the specified text9242* range9243* @throws NullPointerException if {@code seq} is null.9244* @throws IndexOutOfBoundsException if the9245* {@code beginIndex} is negative, or {@code endIndex}9246* is larger than the length of the given sequence, or9247* {@code beginIndex} is larger than {@code endIndex}.9248* @since 1.59249*/9250public static int codePointCount(CharSequence seq, int beginIndex, int endIndex) {9251int length = seq.length();9252if (beginIndex < 0 || endIndex > length || beginIndex > endIndex) {9253throw new IndexOutOfBoundsException();9254}9255int n = endIndex - beginIndex;9256for (int i = beginIndex; i < endIndex; ) {9257if (isHighSurrogate(seq.charAt(i++)) && i < endIndex &&9258isLowSurrogate(seq.charAt(i))) {9259n--;9260i++;9261}9262}9263return n;9264}92659266/**9267* Returns the number of Unicode code points in a subarray of the9268* {@code char} array argument. The {@code offset}9269* argument is the index of the first {@code char} of the9270* subarray and the {@code count} argument specifies the9271* length of the subarray in {@code char}s. Unpaired9272* surrogates within the subarray count as one code point each.9273*9274* @param a the {@code char} array9275* @param offset the index of the first {@code char} in the9276* given {@code char} array9277* @param count the length of the subarray in {@code char}s9278* @return the number of Unicode code points in the specified subarray9279* @throws NullPointerException if {@code a} is null.9280* @throws IndexOutOfBoundsException if {@code offset} or9281* {@code count} is negative, or if {@code offset +9282* count} is larger than the length of the given array.9283* @since 1.59284*/9285public static int codePointCount(char[] a, int offset, int count) {9286if (count > a.length - offset || offset < 0 || count < 0) {9287throw new IndexOutOfBoundsException();9288}9289return codePointCountImpl(a, offset, count);9290}92919292static int codePointCountImpl(char[] a, int offset, int count) {9293int endIndex = offset + count;9294int n = count;9295for (int i = offset; i < endIndex; ) {9296if (isHighSurrogate(a[i++]) && i < endIndex &&9297isLowSurrogate(a[i])) {9298n--;9299i++;9300}9301}9302return n;9303}93049305/**9306* Returns the index within the given char sequence that is offset9307* from the given {@code index} by {@code codePointOffset}9308* code points. Unpaired surrogates within the text range given by9309* {@code index} and {@code codePointOffset} count as9310* one code point each.9311*9312* @param seq the char sequence9313* @param index the index to be offset9314* @param codePointOffset the offset in code points9315* @return the index within the char sequence9316* @throws NullPointerException if {@code seq} is null.9317* @throws IndexOutOfBoundsException if {@code index}9318* is negative or larger then the length of the char sequence,9319* or if {@code codePointOffset} is positive and the9320* subsequence starting with {@code index} has fewer than9321* {@code codePointOffset} code points, or if9322* {@code codePointOffset} is negative and the subsequence9323* before {@code index} has fewer than the absolute value9324* of {@code codePointOffset} code points.9325* @since 1.59326*/9327public static int offsetByCodePoints(CharSequence seq, int index,9328int codePointOffset) {9329int length = seq.length();9330if (index < 0 || index > length) {9331throw new IndexOutOfBoundsException();9332}93339334int x = index;9335if (codePointOffset >= 0) {9336int i;9337for (i = 0; x < length && i < codePointOffset; i++) {9338if (isHighSurrogate(seq.charAt(x++)) && x < length &&9339isLowSurrogate(seq.charAt(x))) {9340x++;9341}9342}9343if (i < codePointOffset) {9344throw new IndexOutOfBoundsException();9345}9346} else {9347int i;9348for (i = codePointOffset; x > 0 && i < 0; i++) {9349if (isLowSurrogate(seq.charAt(--x)) && x > 0 &&9350isHighSurrogate(seq.charAt(x-1))) {9351x--;9352}9353}9354if (i < 0) {9355throw new IndexOutOfBoundsException();9356}9357}9358return x;9359}93609361/**9362* Returns the index within the given {@code char} subarray9363* that is offset from the given {@code index} by9364* {@code codePointOffset} code points. The9365* {@code start} and {@code count} arguments specify a9366* subarray of the {@code char} array. Unpaired surrogates9367* within the text range given by {@code index} and9368* {@code codePointOffset} count as one code point each.9369*9370* @param a the {@code char} array9371* @param start the index of the first {@code char} of the9372* subarray9373* @param count the length of the subarray in {@code char}s9374* @param index the index to be offset9375* @param codePointOffset the offset in code points9376* @return the index within the subarray9377* @throws NullPointerException if {@code a} is null.9378* @throws IndexOutOfBoundsException9379* if {@code start} or {@code count} is negative,9380* or if {@code start + count} is larger than the length of9381* the given array,9382* or if {@code index} is less than {@code start} or9383* larger then {@code start + count},9384* or if {@code codePointOffset} is positive and the text range9385* starting with {@code index} and ending with {@code start + count - 1}9386* has fewer than {@code codePointOffset} code9387* points,9388* or if {@code codePointOffset} is negative and the text range9389* starting with {@code start} and ending with {@code index - 1}9390* has fewer than the absolute value of9391* {@code codePointOffset} code points.9392* @since 1.59393*/9394public static int offsetByCodePoints(char[] a, int start, int count,9395int index, int codePointOffset) {9396if (count > a.length-start || start < 0 || count < 09397|| index < start || index > start+count) {9398throw new IndexOutOfBoundsException();9399}9400return offsetByCodePointsImpl(a, start, count, index, codePointOffset);9401}94029403static int offsetByCodePointsImpl(char[]a, int start, int count,9404int index, int codePointOffset) {9405int x = index;9406if (codePointOffset >= 0) {9407int limit = start + count;9408int i;9409for (i = 0; x < limit && i < codePointOffset; i++) {9410if (isHighSurrogate(a[x++]) && x < limit &&9411isLowSurrogate(a[x])) {9412x++;9413}9414}9415if (i < codePointOffset) {9416throw new IndexOutOfBoundsException();9417}9418} else {9419int i;9420for (i = codePointOffset; x > start && i < 0; i++) {9421if (isLowSurrogate(a[--x]) && x > start &&9422isHighSurrogate(a[x-1])) {9423x--;9424}9425}9426if (i < 0) {9427throw new IndexOutOfBoundsException();9428}9429}9430return x;9431}94329433/**9434* Determines if the specified character is a lowercase character.9435* <p>9436* A character is lowercase if its general category type, provided9437* by {@code Character.getType(ch)}, is9438* {@code LOWERCASE_LETTER}, or it has contributory property9439* Other_Lowercase as defined by the Unicode Standard.9440* <p>9441* The following are examples of lowercase characters:9442* <blockquote><pre>9443* 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 z9444* '\u00DF' '\u00E0' '\u00E1' '\u00E2' '\u00E3' '\u00E4' '\u00E5' '\u00E6'9445* '\u00E7' '\u00E8' '\u00E9' '\u00EA' '\u00EB' '\u00EC' '\u00ED' '\u00EE'9446* '\u00EF' '\u00F0' '\u00F1' '\u00F2' '\u00F3' '\u00F4' '\u00F5' '\u00F6'9447* '\u00F8' '\u00F9' '\u00FA' '\u00FB' '\u00FC' '\u00FD' '\u00FE' '\u00FF'9448* </pre></blockquote>9449* <p> Many other Unicode characters are lowercase too.9450*9451* <p><b>Note:</b> This method cannot handle <a9452* href="#supplementary"> supplementary characters</a>. To support9453* all Unicode characters, including supplementary characters, use9454* the {@link #isLowerCase(int)} method.9455*9456* @param ch the character to be tested.9457* @return {@code true} if the character is lowercase;9458* {@code false} otherwise.9459* @see Character#isLowerCase(char)9460* @see Character#isTitleCase(char)9461* @see Character#toLowerCase(char)9462* @see Character#getType(char)9463*/9464public static boolean isLowerCase(char ch) {9465return isLowerCase((int)ch);9466}94679468/**9469* Determines if the specified character (Unicode code point) is a9470* lowercase character.9471* <p>9472* A character is lowercase if its general category type, provided9473* by {@link Character#getType getType(codePoint)}, is9474* {@code LOWERCASE_LETTER}, or it has contributory property9475* Other_Lowercase as defined by the Unicode Standard.9476* <p>9477* The following are examples of lowercase characters:9478* <blockquote><pre>9479* 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 z9480* '\u00DF' '\u00E0' '\u00E1' '\u00E2' '\u00E3' '\u00E4' '\u00E5' '\u00E6'9481* '\u00E7' '\u00E8' '\u00E9' '\u00EA' '\u00EB' '\u00EC' '\u00ED' '\u00EE'9482* '\u00EF' '\u00F0' '\u00F1' '\u00F2' '\u00F3' '\u00F4' '\u00F5' '\u00F6'9483* '\u00F8' '\u00F9' '\u00FA' '\u00FB' '\u00FC' '\u00FD' '\u00FE' '\u00FF'9484* </pre></blockquote>9485* <p> Many other Unicode characters are lowercase too.9486*9487* @param codePoint the character (Unicode code point) to be tested.9488* @return {@code true} if the character is lowercase;9489* {@code false} otherwise.9490* @see Character#isLowerCase(int)9491* @see Character#isTitleCase(int)9492* @see Character#toLowerCase(int)9493* @see Character#getType(int)9494* @since 1.59495*/9496public static boolean isLowerCase(int codePoint) {9497return CharacterData.of(codePoint).isLowerCase(codePoint);9498}94999500/**9501* Determines if the specified character is an uppercase character.9502* <p>9503* A character is uppercase if its general category type, provided by9504* {@code Character.getType(ch)}, is {@code UPPERCASE_LETTER}.9505* or it has contributory property Other_Uppercase as defined by the Unicode Standard.9506* <p>9507* The following are examples of uppercase characters:9508* <blockquote><pre>9509* 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 Z9510* '\u00C0' '\u00C1' '\u00C2' '\u00C3' '\u00C4' '\u00C5' '\u00C6' '\u00C7'9511* '\u00C8' '\u00C9' '\u00CA' '\u00CB' '\u00CC' '\u00CD' '\u00CE' '\u00CF'9512* '\u00D0' '\u00D1' '\u00D2' '\u00D3' '\u00D4' '\u00D5' '\u00D6' '\u00D8'9513* '\u00D9' '\u00DA' '\u00DB' '\u00DC' '\u00DD' '\u00DE'9514* </pre></blockquote>9515* <p> Many other Unicode characters are uppercase too.9516*9517* <p><b>Note:</b> This method cannot handle <a9518* href="#supplementary"> supplementary characters</a>. To support9519* all Unicode characters, including supplementary characters, use9520* the {@link #isUpperCase(int)} method.9521*9522* @param ch the character to be tested.9523* @return {@code true} if the character is uppercase;9524* {@code false} otherwise.9525* @see Character#isLowerCase(char)9526* @see Character#isTitleCase(char)9527* @see Character#toUpperCase(char)9528* @see Character#getType(char)9529* @since 1.09530*/9531public static boolean isUpperCase(char ch) {9532return isUpperCase((int)ch);9533}95349535/**9536* Determines if the specified character (Unicode code point) is an uppercase character.9537* <p>9538* A character is uppercase if its general category type, provided by9539* {@link Character#getType(int) getType(codePoint)}, is {@code UPPERCASE_LETTER},9540* or it has contributory property Other_Uppercase as defined by the Unicode Standard.9541* <p>9542* The following are examples of uppercase characters:9543* <blockquote><pre>9544* 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 Z9545* '\u00C0' '\u00C1' '\u00C2' '\u00C3' '\u00C4' '\u00C5' '\u00C6' '\u00C7'9546* '\u00C8' '\u00C9' '\u00CA' '\u00CB' '\u00CC' '\u00CD' '\u00CE' '\u00CF'9547* '\u00D0' '\u00D1' '\u00D2' '\u00D3' '\u00D4' '\u00D5' '\u00D6' '\u00D8'9548* '\u00D9' '\u00DA' '\u00DB' '\u00DC' '\u00DD' '\u00DE'9549* </pre></blockquote>9550* <p> Many other Unicode characters are uppercase too.9551*9552* @param codePoint the character (Unicode code point) to be tested.9553* @return {@code true} if the character is uppercase;9554* {@code false} otherwise.9555* @see Character#isLowerCase(int)9556* @see Character#isTitleCase(int)9557* @see Character#toUpperCase(int)9558* @see Character#getType(int)9559* @since 1.59560*/9561public static boolean isUpperCase(int codePoint) {9562return CharacterData.of(codePoint).isUpperCase(codePoint);9563}95649565/**9566* Determines if the specified character is a titlecase character.9567* <p>9568* A character is a titlecase character if its general9569* category type, provided by {@code Character.getType(ch)},9570* is {@code TITLECASE_LETTER}.9571* <p>9572* Some characters look like pairs of Latin letters. For example, there9573* is an uppercase letter that looks like "LJ" and has a corresponding9574* lowercase letter that looks like "lj". A third form, which looks like "Lj",9575* is the appropriate form to use when rendering a word in lowercase9576* with initial capitals, as for a book title.9577* <p>9578* These are some of the Unicode characters for which this method returns9579* {@code true}:9580* <ul>9581* <li>{@code LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON}9582* <li>{@code LATIN CAPITAL LETTER L WITH SMALL LETTER J}9583* <li>{@code LATIN CAPITAL LETTER N WITH SMALL LETTER J}9584* <li>{@code LATIN CAPITAL LETTER D WITH SMALL LETTER Z}9585* </ul>9586* <p> Many other Unicode characters are titlecase too.9587*9588* <p><b>Note:</b> This method cannot handle <a9589* href="#supplementary"> supplementary characters</a>. To support9590* all Unicode characters, including supplementary characters, use9591* the {@link #isTitleCase(int)} method.9592*9593* @param ch the character to be tested.9594* @return {@code true} if the character is titlecase;9595* {@code false} otherwise.9596* @see Character#isLowerCase(char)9597* @see Character#isUpperCase(char)9598* @see Character#toTitleCase(char)9599* @see Character#getType(char)9600* @since 1.0.29601*/9602public static boolean isTitleCase(char ch) {9603return isTitleCase((int)ch);9604}96059606/**9607* Determines if the specified character (Unicode code point) is a titlecase character.9608* <p>9609* A character is a titlecase character if its general9610* category type, provided by {@link Character#getType(int) getType(codePoint)},9611* is {@code TITLECASE_LETTER}.9612* <p>9613* Some characters look like pairs of Latin letters. For example, there9614* is an uppercase letter that looks like "LJ" and has a corresponding9615* lowercase letter that looks like "lj". A third form, which looks like "Lj",9616* is the appropriate form to use when rendering a word in lowercase9617* with initial capitals, as for a book title.9618* <p>9619* These are some of the Unicode characters for which this method returns9620* {@code true}:9621* <ul>9622* <li>{@code LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON}9623* <li>{@code LATIN CAPITAL LETTER L WITH SMALL LETTER J}9624* <li>{@code LATIN CAPITAL LETTER N WITH SMALL LETTER J}9625* <li>{@code LATIN CAPITAL LETTER D WITH SMALL LETTER Z}9626* </ul>9627* <p> Many other Unicode characters are titlecase too.9628*9629* @param codePoint the character (Unicode code point) to be tested.9630* @return {@code true} if the character is titlecase;9631* {@code false} otherwise.9632* @see Character#isLowerCase(int)9633* @see Character#isUpperCase(int)9634* @see Character#toTitleCase(int)9635* @see Character#getType(int)9636* @since 1.59637*/9638public static boolean isTitleCase(int codePoint) {9639return getType(codePoint) == Character.TITLECASE_LETTER;9640}96419642/**9643* Determines if the specified character is a digit.9644* <p>9645* A character is a digit if its general category type, provided9646* by {@code Character.getType(ch)}, is9647* {@code DECIMAL_DIGIT_NUMBER}.9648* <p>9649* Some Unicode character ranges that contain digits:9650* <ul>9651* <li>{@code '\u005Cu0030'} through {@code '\u005Cu0039'},9652* ISO-LATIN-1 digits ({@code '0'} through {@code '9'})9653* <li>{@code '\u005Cu0660'} through {@code '\u005Cu0669'},9654* Arabic-Indic digits9655* <li>{@code '\u005Cu06F0'} through {@code '\u005Cu06F9'},9656* Extended Arabic-Indic digits9657* <li>{@code '\u005Cu0966'} through {@code '\u005Cu096F'},9658* Devanagari digits9659* <li>{@code '\u005CuFF10'} through {@code '\u005CuFF19'},9660* Fullwidth digits9661* </ul>9662*9663* Many other character ranges contain digits as well.9664*9665* <p><b>Note:</b> This method cannot handle <a9666* href="#supplementary"> supplementary characters</a>. To support9667* all Unicode characters, including supplementary characters, use9668* the {@link #isDigit(int)} method.9669*9670* @param ch the character to be tested.9671* @return {@code true} if the character is a digit;9672* {@code false} otherwise.9673* @see Character#digit(char, int)9674* @see Character#forDigit(int, int)9675* @see Character#getType(char)9676*/9677public static boolean isDigit(char ch) {9678return isDigit((int)ch);9679}96809681/**9682* Determines if the specified character (Unicode code point) is a digit.9683* <p>9684* A character is a digit if its general category type, provided9685* by {@link Character#getType(int) getType(codePoint)}, is9686* {@code DECIMAL_DIGIT_NUMBER}.9687* <p>9688* Some Unicode character ranges that contain digits:9689* <ul>9690* <li>{@code '\u005Cu0030'} through {@code '\u005Cu0039'},9691* ISO-LATIN-1 digits ({@code '0'} through {@code '9'})9692* <li>{@code '\u005Cu0660'} through {@code '\u005Cu0669'},9693* Arabic-Indic digits9694* <li>{@code '\u005Cu06F0'} through {@code '\u005Cu06F9'},9695* Extended Arabic-Indic digits9696* <li>{@code '\u005Cu0966'} through {@code '\u005Cu096F'},9697* Devanagari digits9698* <li>{@code '\u005CuFF10'} through {@code '\u005CuFF19'},9699* Fullwidth digits9700* </ul>9701*9702* Many other character ranges contain digits as well.9703*9704* @param codePoint the character (Unicode code point) to be tested.9705* @return {@code true} if the character is a digit;9706* {@code false} otherwise.9707* @see Character#forDigit(int, int)9708* @see Character#getType(int)9709* @since 1.59710*/9711public static boolean isDigit(int codePoint) {9712return CharacterData.of(codePoint).isDigit(codePoint);9713}97149715/**9716* Determines if a character is defined in Unicode.9717* <p>9718* A character is defined if at least one of the following is true:9719* <ul>9720* <li>It has an entry in the UnicodeData file.9721* <li>It has a value in a range defined by the UnicodeData file.9722* </ul>9723*9724* <p><b>Note:</b> This method cannot handle <a9725* href="#supplementary"> supplementary characters</a>. To support9726* all Unicode characters, including supplementary characters, use9727* the {@link #isDefined(int)} method.9728*9729* @param ch the character to be tested9730* @return {@code true} if the character has a defined meaning9731* in Unicode; {@code false} otherwise.9732* @see Character#isDigit(char)9733* @see Character#isLetter(char)9734* @see Character#isLetterOrDigit(char)9735* @see Character#isLowerCase(char)9736* @see Character#isTitleCase(char)9737* @see Character#isUpperCase(char)9738* @since 1.0.29739*/9740public static boolean isDefined(char ch) {9741return isDefined((int)ch);9742}97439744/**9745* Determines if a character (Unicode code point) is defined in Unicode.9746* <p>9747* A character is defined if at least one of the following is true:9748* <ul>9749* <li>It has an entry in the UnicodeData file.9750* <li>It has a value in a range defined by the UnicodeData file.9751* </ul>9752*9753* @param codePoint the character (Unicode code point) to be tested.9754* @return {@code true} if the character has a defined meaning9755* in Unicode; {@code false} otherwise.9756* @see Character#isDigit(int)9757* @see Character#isLetter(int)9758* @see Character#isLetterOrDigit(int)9759* @see Character#isLowerCase(int)9760* @see Character#isTitleCase(int)9761* @see Character#isUpperCase(int)9762* @since 1.59763*/9764public static boolean isDefined(int codePoint) {9765return getType(codePoint) != Character.UNASSIGNED;9766}97679768/**9769* Determines if the specified character is a letter.9770* <p>9771* A character is considered to be a letter if its general9772* category type, provided by {@code Character.getType(ch)},9773* is any of the following:9774* <ul>9775* <li> {@code UPPERCASE_LETTER}9776* <li> {@code LOWERCASE_LETTER}9777* <li> {@code TITLECASE_LETTER}9778* <li> {@code MODIFIER_LETTER}9779* <li> {@code OTHER_LETTER}9780* </ul>9781*9782* Not all letters have case. Many characters are9783* letters but are neither uppercase nor lowercase nor titlecase.9784*9785* <p><b>Note:</b> This method cannot handle <a9786* href="#supplementary"> supplementary characters</a>. To support9787* all Unicode characters, including supplementary characters, use9788* the {@link #isLetter(int)} method.9789*9790* @param ch the character to be tested.9791* @return {@code true} if the character is a letter;9792* {@code false} otherwise.9793* @see Character#isDigit(char)9794* @see Character#isJavaIdentifierStart(char)9795* @see Character#isJavaLetter(char)9796* @see Character#isJavaLetterOrDigit(char)9797* @see Character#isLetterOrDigit(char)9798* @see Character#isLowerCase(char)9799* @see Character#isTitleCase(char)9800* @see Character#isUnicodeIdentifierStart(char)9801* @see Character#isUpperCase(char)9802*/9803public static boolean isLetter(char ch) {9804return isLetter((int)ch);9805}98069807/**9808* Determines if the specified character (Unicode code point) is a letter.9809* <p>9810* A character is considered to be a letter if its general9811* category type, provided by {@link Character#getType(int) getType(codePoint)},9812* is any of the following:9813* <ul>9814* <li> {@code UPPERCASE_LETTER}9815* <li> {@code LOWERCASE_LETTER}9816* <li> {@code TITLECASE_LETTER}9817* <li> {@code MODIFIER_LETTER}9818* <li> {@code OTHER_LETTER}9819* </ul>9820*9821* Not all letters have case. Many characters are9822* letters but are neither uppercase nor lowercase nor titlecase.9823*9824* @param codePoint the character (Unicode code point) to be tested.9825* @return {@code true} if the character is a letter;9826* {@code false} otherwise.9827* @see Character#isDigit(int)9828* @see Character#isJavaIdentifierStart(int)9829* @see Character#isLetterOrDigit(int)9830* @see Character#isLowerCase(int)9831* @see Character#isTitleCase(int)9832* @see Character#isUnicodeIdentifierStart(int)9833* @see Character#isUpperCase(int)9834* @since 1.59835*/9836public static boolean isLetter(int codePoint) {9837return ((((1 << Character.UPPERCASE_LETTER) |9838(1 << Character.LOWERCASE_LETTER) |9839(1 << Character.TITLECASE_LETTER) |9840(1 << Character.MODIFIER_LETTER) |9841(1 << Character.OTHER_LETTER)) >> getType(codePoint)) & 1)9842!= 0;9843}98449845/**9846* Determines if the specified character is a letter or digit.9847* <p>9848* A character is considered to be a letter or digit if either9849* {@code Character.isLetter(char ch)} or9850* {@code Character.isDigit(char ch)} returns9851* {@code true} for the character.9852*9853* <p><b>Note:</b> This method cannot handle <a9854* href="#supplementary"> supplementary characters</a>. To support9855* all Unicode characters, including supplementary characters, use9856* the {@link #isLetterOrDigit(int)} method.9857*9858* @param ch the character to be tested.9859* @return {@code true} if the character is a letter or digit;9860* {@code false} otherwise.9861* @see Character#isDigit(char)9862* @see Character#isJavaIdentifierPart(char)9863* @see Character#isJavaLetter(char)9864* @see Character#isJavaLetterOrDigit(char)9865* @see Character#isLetter(char)9866* @see Character#isUnicodeIdentifierPart(char)9867* @since 1.0.29868*/9869public static boolean isLetterOrDigit(char ch) {9870return isLetterOrDigit((int)ch);9871}98729873/**9874* Determines if the specified character (Unicode code point) is a letter or digit.9875* <p>9876* A character is considered to be a letter or digit if either9877* {@link #isLetter(int) isLetter(codePoint)} or9878* {@link #isDigit(int) isDigit(codePoint)} returns9879* {@code true} for the character.9880*9881* @param codePoint the character (Unicode code point) to be tested.9882* @return {@code true} if the character is a letter or digit;9883* {@code false} otherwise.9884* @see Character#isDigit(int)9885* @see Character#isJavaIdentifierPart(int)9886* @see Character#isLetter(int)9887* @see Character#isUnicodeIdentifierPart(int)9888* @since 1.59889*/9890public static boolean isLetterOrDigit(int codePoint) {9891return ((((1 << Character.UPPERCASE_LETTER) |9892(1 << Character.LOWERCASE_LETTER) |9893(1 << Character.TITLECASE_LETTER) |9894(1 << Character.MODIFIER_LETTER) |9895(1 << Character.OTHER_LETTER) |9896(1 << Character.DECIMAL_DIGIT_NUMBER)) >> getType(codePoint)) & 1)9897!= 0;9898}98999900/**9901* Determines if the specified character is permissible as the first9902* character in a Java identifier.9903* <p>9904* A character may start a Java identifier if and only if9905* one of the following conditions is true:9906* <ul>9907* <li> {@link #isLetter(char) isLetter(ch)} returns {@code true}9908* <li> {@link #getType(char) getType(ch)} returns {@code LETTER_NUMBER}9909* <li> {@code ch} is a currency symbol (such as {@code '$'})9910* <li> {@code ch} is a connecting punctuation character (such as {@code '_'}).9911* </ul>9912*9913* @param ch the character to be tested.9914* @return {@code true} if the character may start a Java9915* identifier; {@code false} otherwise.9916* @see Character#isJavaLetterOrDigit(char)9917* @see Character#isJavaIdentifierStart(char)9918* @see Character#isJavaIdentifierPart(char)9919* @see Character#isLetter(char)9920* @see Character#isLetterOrDigit(char)9921* @see Character#isUnicodeIdentifierStart(char)9922* @since 1.0.29923* @deprecated Replaced by isJavaIdentifierStart(char).9924*/9925@Deprecated(since="1.1")9926public static boolean isJavaLetter(char ch) {9927return isJavaIdentifierStart(ch);9928}99299930/**9931* Determines if the specified character may be part of a Java9932* identifier as other than the first character.9933* <p>9934* A character may be part of a Java identifier if and only if one9935* of the following conditions is true:9936* <ul>9937* <li> it is a letter9938* <li> it is a currency symbol (such as {@code '$'})9939* <li> it is a connecting punctuation character (such as {@code '_'})9940* <li> it is a digit9941* <li> it is a numeric letter (such as a Roman numeral character)9942* <li> it is a combining mark9943* <li> it is a non-spacing mark9944* <li> {@code isIdentifierIgnorable} returns9945* {@code true} for the character.9946* </ul>9947*9948* @param ch the character to be tested.9949* @return {@code true} if the character may be part of a9950* Java identifier; {@code false} otherwise.9951* @see Character#isJavaLetter(char)9952* @see Character#isJavaIdentifierStart(char)9953* @see Character#isJavaIdentifierPart(char)9954* @see Character#isLetter(char)9955* @see Character#isLetterOrDigit(char)9956* @see Character#isUnicodeIdentifierPart(char)9957* @see Character#isIdentifierIgnorable(char)9958* @since 1.0.29959* @deprecated Replaced by isJavaIdentifierPart(char).9960*/9961@Deprecated(since="1.1")9962public static boolean isJavaLetterOrDigit(char ch) {9963return isJavaIdentifierPart(ch);9964}99659966/**9967* Determines if the specified character (Unicode code point) is alphabetic.9968* <p>9969* A character is considered to be alphabetic if its general category type,9970* provided by {@link Character#getType(int) getType(codePoint)}, is any of9971* the following:9972* <ul>9973* <li> {@code UPPERCASE_LETTER}9974* <li> {@code LOWERCASE_LETTER}9975* <li> {@code TITLECASE_LETTER}9976* <li> {@code MODIFIER_LETTER}9977* <li> {@code OTHER_LETTER}9978* <li> {@code LETTER_NUMBER}9979* </ul>9980* or it has contributory property Other_Alphabetic as defined by the9981* Unicode Standard.9982*9983* @param codePoint the character (Unicode code point) to be tested.9984* @return {@code true} if the character is a Unicode alphabet9985* character, {@code false} otherwise.9986* @since 1.79987*/9988public static boolean isAlphabetic(int codePoint) {9989return (((((1 << Character.UPPERCASE_LETTER) |9990(1 << Character.LOWERCASE_LETTER) |9991(1 << Character.TITLECASE_LETTER) |9992(1 << Character.MODIFIER_LETTER) |9993(1 << Character.OTHER_LETTER) |9994(1 << Character.LETTER_NUMBER)) >> getType(codePoint)) & 1) != 0) ||9995CharacterData.of(codePoint).isOtherAlphabetic(codePoint);9996}99979998/**9999* Determines if the specified character (Unicode code point) is a CJKV10000* (Chinese, Japanese, Korean and Vietnamese) ideograph, as defined by10001* the Unicode Standard.10002*10003* @param codePoint the character (Unicode code point) to be tested.10004* @return {@code true} if the character is a Unicode ideograph10005* character, {@code false} otherwise.10006* @since 1.710007*/10008public static boolean isIdeographic(int codePoint) {10009return CharacterData.of(codePoint).isIdeographic(codePoint);10010}1001110012/**10013* Determines if the specified character is10014* permissible as the first character in a Java identifier.10015* <p>10016* A character may start a Java identifier if and only if10017* one of the following conditions is true:10018* <ul>10019* <li> {@link #isLetter(char) isLetter(ch)} returns {@code true}10020* <li> {@link #getType(char) getType(ch)} returns {@code LETTER_NUMBER}10021* <li> {@code ch} is a currency symbol (such as {@code '$'})10022* <li> {@code ch} is a connecting punctuation character (such as {@code '_'}).10023* </ul>10024*10025* <p><b>Note:</b> This method cannot handle <a10026* href="#supplementary"> supplementary characters</a>. To support10027* all Unicode characters, including supplementary characters, use10028* the {@link #isJavaIdentifierStart(int)} method.10029*10030* @param ch the character to be tested.10031* @return {@code true} if the character may start a Java identifier;10032* {@code false} otherwise.10033* @see Character#isJavaIdentifierPart(char)10034* @see Character#isLetter(char)10035* @see Character#isUnicodeIdentifierStart(char)10036* @see javax.lang.model.SourceVersion#isIdentifier(CharSequence)10037* @since 1.110038*/10039public static boolean isJavaIdentifierStart(char ch) {10040return isJavaIdentifierStart((int)ch);10041}1004210043/**10044* Determines if the character (Unicode code point) is10045* permissible as the first character in a Java identifier.10046* <p>10047* A character may start a Java identifier if and only if10048* one of the following conditions is true:10049* <ul>10050* <li> {@link #isLetter(int) isLetter(codePoint)}10051* returns {@code true}10052* <li> {@link #getType(int) getType(codePoint)}10053* returns {@code LETTER_NUMBER}10054* <li> the referenced character is a currency symbol (such as {@code '$'})10055* <li> the referenced character is a connecting punctuation character10056* (such as {@code '_'}).10057* </ul>10058*10059* @param codePoint the character (Unicode code point) to be tested.10060* @return {@code true} if the character may start a Java identifier;10061* {@code false} otherwise.10062* @see Character#isJavaIdentifierPart(int)10063* @see Character#isLetter(int)10064* @see Character#isUnicodeIdentifierStart(int)10065* @see javax.lang.model.SourceVersion#isIdentifier(CharSequence)10066* @since 1.510067*/10068public static boolean isJavaIdentifierStart(int codePoint) {10069return CharacterData.of(codePoint).isJavaIdentifierStart(codePoint);10070}1007110072/**10073* Determines if the specified character may be part of a Java10074* identifier as other than the first character.10075* <p>10076* A character may be part of a Java identifier if any of the following10077* conditions are true:10078* <ul>10079* <li> it is a letter10080* <li> it is a currency symbol (such as {@code '$'})10081* <li> it is a connecting punctuation character (such as {@code '_'})10082* <li> it is a digit10083* <li> it is a numeric letter (such as a Roman numeral character)10084* <li> it is a combining mark10085* <li> it is a non-spacing mark10086* <li> {@code isIdentifierIgnorable} returns10087* {@code true} for the character10088* </ul>10089*10090* <p><b>Note:</b> This method cannot handle <a10091* href="#supplementary"> supplementary characters</a>. To support10092* all Unicode characters, including supplementary characters, use10093* the {@link #isJavaIdentifierPart(int)} method.10094*10095* @param ch the character to be tested.10096* @return {@code true} if the character may be part of a10097* Java identifier; {@code false} otherwise.10098* @see Character#isIdentifierIgnorable(char)10099* @see Character#isJavaIdentifierStart(char)10100* @see Character#isLetterOrDigit(char)10101* @see Character#isUnicodeIdentifierPart(char)10102* @see javax.lang.model.SourceVersion#isIdentifier(CharSequence)10103* @since 1.110104*/10105public static boolean isJavaIdentifierPart(char ch) {10106return isJavaIdentifierPart((int)ch);10107}1010810109/**10110* Determines if the character (Unicode code point) may be part of a Java10111* identifier as other than the first character.10112* <p>10113* A character may be part of a Java identifier if any of the following10114* conditions are true:10115* <ul>10116* <li> it is a letter10117* <li> it is a currency symbol (such as {@code '$'})10118* <li> it is a connecting punctuation character (such as {@code '_'})10119* <li> it is a digit10120* <li> it is a numeric letter (such as a Roman numeral character)10121* <li> it is a combining mark10122* <li> it is a non-spacing mark10123* <li> {@link #isIdentifierIgnorable(int)10124* isIdentifierIgnorable(codePoint)} returns {@code true} for10125* the code point10126* </ul>10127*10128* @param codePoint the character (Unicode code point) to be tested.10129* @return {@code true} if the character may be part of a10130* Java identifier; {@code false} otherwise.10131* @see Character#isIdentifierIgnorable(int)10132* @see Character#isJavaIdentifierStart(int)10133* @see Character#isLetterOrDigit(int)10134* @see Character#isUnicodeIdentifierPart(int)10135* @see javax.lang.model.SourceVersion#isIdentifier(CharSequence)10136* @since 1.510137*/10138public static boolean isJavaIdentifierPart(int codePoint) {10139return CharacterData.of(codePoint).isJavaIdentifierPart(codePoint);10140}1014110142/**10143* Determines if the specified character is permissible as the10144* first character in a Unicode identifier.10145* <p>10146* A character may start a Unicode identifier if and only if10147* one of the following conditions is true:10148* <ul>10149* <li> {@link #isLetter(char) isLetter(ch)} returns {@code true}10150* <li> {@link #getType(char) getType(ch)} returns10151* {@code LETTER_NUMBER}.10152* <li> it is an <a href="http://www.unicode.org/reports/tr44/#Other_ID_Start">10153* {@code Other_ID_Start}</a> character.10154* </ul>10155* <p>10156* This method conforms to <a href="https://unicode.org/reports/tr31/#R1">10157* UAX31-R1: Default Identifiers</a> requirement of the Unicode Standard,10158* with the following profile of UAX31:10159* <pre>10160* Start := ID_Start + 'VERTICAL TILDE' (U+2E2F)10161* </pre>10162* {@code 'VERTICAL TILDE'} is added to {@code Start} for backward10163* compatibility.10164*10165* <p><b>Note:</b> This method cannot handle <a10166* href="#supplementary"> supplementary characters</a>. To support10167* all Unicode characters, including supplementary characters, use10168* the {@link #isUnicodeIdentifierStart(int)} method.10169*10170* @param ch the character to be tested.10171* @return {@code true} if the character may start a Unicode10172* identifier; {@code false} otherwise.10173* @see Character#isJavaIdentifierStart(char)10174* @see Character#isLetter(char)10175* @see Character#isUnicodeIdentifierPart(char)10176* @since 1.110177*/10178public static boolean isUnicodeIdentifierStart(char ch) {10179return isUnicodeIdentifierStart((int)ch);10180}1018110182/**10183* Determines if the specified character (Unicode code point) is permissible as the10184* first character in a Unicode identifier.10185* <p>10186* A character may start a Unicode identifier if and only if10187* one of the following conditions is true:10188* <ul>10189* <li> {@link #isLetter(int) isLetter(codePoint)}10190* returns {@code true}10191* <li> {@link #getType(int) getType(codePoint)}10192* returns {@code LETTER_NUMBER}.10193* <li> it is an <a href="http://www.unicode.org/reports/tr44/#Other_ID_Start">10194* {@code Other_ID_Start}</a> character.10195* </ul>10196* <p>10197* This method conforms to <a href="https://unicode.org/reports/tr31/#R1">10198* UAX31-R1: Default Identifiers</a> requirement of the Unicode Standard,10199* with the following profile of UAX31:10200* <pre>10201* Start := ID_Start + 'VERTICAL TILDE' (U+2E2F)10202* </pre>10203* {@code 'VERTICAL TILDE'} is added to {@code Start} for backward10204* compatibility.10205*10206* @param codePoint the character (Unicode code point) to be tested.10207* @return {@code true} if the character may start a Unicode10208* identifier; {@code false} otherwise.10209* @see Character#isJavaIdentifierStart(int)10210* @see Character#isLetter(int)10211* @see Character#isUnicodeIdentifierPart(int)10212* @since 1.510213*/10214public static boolean isUnicodeIdentifierStart(int codePoint) {10215return CharacterData.of(codePoint).isUnicodeIdentifierStart(codePoint);10216}1021710218/**10219* Determines if the specified character may be part of a Unicode10220* identifier as other than the first character.10221* <p>10222* A character may be part of a Unicode identifier if and only if10223* one of the following statements is true:10224* <ul>10225* <li> it is a letter10226* <li> it is a connecting punctuation character (such as {@code '_'})10227* <li> it is a digit10228* <li> it is a numeric letter (such as a Roman numeral character)10229* <li> it is a combining mark10230* <li> it is a non-spacing mark10231* <li> {@code isIdentifierIgnorable} returns10232* {@code true} for this character.10233* <li> it is an <a href="http://www.unicode.org/reports/tr44/#Other_ID_Start">10234* {@code Other_ID_Start}</a> character.10235* <li> it is an <a href="http://www.unicode.org/reports/tr44/#Other_ID_Continue">10236* {@code Other_ID_Continue}</a> character.10237* </ul>10238* <p>10239* This method conforms to <a href="https://unicode.org/reports/tr31/#R1">10240* UAX31-R1: Default Identifiers</a> requirement of the Unicode Standard,10241* with the following profile of UAX31:10242* <pre>10243* Continue := Start + ID_Continue + ignorable10244* Medial := empty10245* ignorable := isIdentifierIgnorable(char) returns true for the character10246* </pre>10247* {@code ignorable} is added to {@code Continue} for backward10248* compatibility.10249*10250* <p><b>Note:</b> This method cannot handle <a10251* href="#supplementary"> supplementary characters</a>. To support10252* all Unicode characters, including supplementary characters, use10253* the {@link #isUnicodeIdentifierPart(int)} method.10254*10255* @param ch the character to be tested.10256* @return {@code true} if the character may be part of a10257* Unicode identifier; {@code false} otherwise.10258* @see Character#isIdentifierIgnorable(char)10259* @see Character#isJavaIdentifierPart(char)10260* @see Character#isLetterOrDigit(char)10261* @see Character#isUnicodeIdentifierStart(char)10262* @since 1.110263*/10264public static boolean isUnicodeIdentifierPart(char ch) {10265return isUnicodeIdentifierPart((int)ch);10266}1026710268/**10269* Determines if the specified character (Unicode code point) may be part of a Unicode10270* identifier as other than the first character.10271* <p>10272* A character may be part of a Unicode identifier if and only if10273* one of the following statements is true:10274* <ul>10275* <li> it is a letter10276* <li> it is a connecting punctuation character (such as {@code '_'})10277* <li> it is a digit10278* <li> it is a numeric letter (such as a Roman numeral character)10279* <li> it is a combining mark10280* <li> it is a non-spacing mark10281* <li> {@code isIdentifierIgnorable} returns10282* {@code true} for this character.10283* <li> it is an <a href="http://www.unicode.org/reports/tr44/#Other_ID_Start">10284* {@code Other_ID_Start}</a> character.10285* <li> it is an <a href="http://www.unicode.org/reports/tr44/#Other_ID_Continue">10286* {@code Other_ID_Continue}</a> character.10287* </ul>10288* <p>10289* This method conforms to <a href="https://unicode.org/reports/tr31/#R1">10290* UAX31-R1: Default Identifiers</a> requirement of the Unicode Standard,10291* with the following profile of UAX31:10292* <pre>10293* Continue := Start + ID_Continue + ignorable10294* Medial := empty10295* ignorable := isIdentifierIgnorable(int) returns true for the character10296* </pre>10297* {@code ignorable} is added to {@code Continue} for backward10298* compatibility.10299*10300* @param codePoint the character (Unicode code point) to be tested.10301* @return {@code true} if the character may be part of a10302* Unicode identifier; {@code false} otherwise.10303* @see Character#isIdentifierIgnorable(int)10304* @see Character#isJavaIdentifierPart(int)10305* @see Character#isLetterOrDigit(int)10306* @see Character#isUnicodeIdentifierStart(int)10307* @since 1.510308*/10309public static boolean isUnicodeIdentifierPart(int codePoint) {10310return CharacterData.of(codePoint).isUnicodeIdentifierPart(codePoint);10311}1031210313/**10314* Determines if the specified character should be regarded as10315* an ignorable character in a Java identifier or a Unicode identifier.10316* <p>10317* The following Unicode characters are ignorable in a Java identifier10318* or a Unicode identifier:10319* <ul>10320* <li>ISO control characters that are not whitespace10321* <ul>10322* <li>{@code '\u005Cu0000'} through {@code '\u005Cu0008'}10323* <li>{@code '\u005Cu000E'} through {@code '\u005Cu001B'}10324* <li>{@code '\u005Cu007F'} through {@code '\u005Cu009F'}10325* </ul>10326*10327* <li>all characters that have the {@code FORMAT} general10328* category value10329* </ul>10330*10331* <p><b>Note:</b> This method cannot handle <a10332* href="#supplementary"> supplementary characters</a>. To support10333* all Unicode characters, including supplementary characters, use10334* the {@link #isIdentifierIgnorable(int)} method.10335*10336* @param ch the character to be tested.10337* @return {@code true} if the character is an ignorable control10338* character that may be part of a Java or Unicode identifier;10339* {@code false} otherwise.10340* @see Character#isJavaIdentifierPart(char)10341* @see Character#isUnicodeIdentifierPart(char)10342* @since 1.110343*/10344public static boolean isIdentifierIgnorable(char ch) {10345return isIdentifierIgnorable((int)ch);10346}1034710348/**10349* Determines if the specified character (Unicode code point) should be regarded as10350* an ignorable character in a Java identifier or a Unicode identifier.10351* <p>10352* The following Unicode characters are ignorable in a Java identifier10353* or a Unicode identifier:10354* <ul>10355* <li>ISO control characters that are not whitespace10356* <ul>10357* <li>{@code '\u005Cu0000'} through {@code '\u005Cu0008'}10358* <li>{@code '\u005Cu000E'} through {@code '\u005Cu001B'}10359* <li>{@code '\u005Cu007F'} through {@code '\u005Cu009F'}10360* </ul>10361*10362* <li>all characters that have the {@code FORMAT} general10363* category value10364* </ul>10365*10366* @param codePoint the character (Unicode code point) to be tested.10367* @return {@code true} if the character is an ignorable control10368* character that may be part of a Java or Unicode identifier;10369* {@code false} otherwise.10370* @see Character#isJavaIdentifierPart(int)10371* @see Character#isUnicodeIdentifierPart(int)10372* @since 1.510373*/10374public static boolean isIdentifierIgnorable(int codePoint) {10375return CharacterData.of(codePoint).isIdentifierIgnorable(codePoint);10376}1037710378/**10379* Converts the character argument to lowercase using case10380* mapping information from the UnicodeData file.10381* <p>10382* Note that10383* {@code Character.isLowerCase(Character.toLowerCase(ch))}10384* does not always return {@code true} for some ranges of10385* characters, particularly those that are symbols or ideographs.10386*10387* <p>In general, {@link String#toLowerCase()} should be used to map10388* characters to lowercase. {@code String} case mapping methods10389* have several benefits over {@code Character} case mapping methods.10390* {@code String} case mapping methods can perform locale-sensitive10391* mappings, context-sensitive mappings, and 1:M character mappings, whereas10392* the {@code Character} case mapping methods cannot.10393*10394* <p><b>Note:</b> This method cannot handle <a10395* href="#supplementary"> supplementary characters</a>. To support10396* all Unicode characters, including supplementary characters, use10397* the {@link #toLowerCase(int)} method.10398*10399* @param ch the character to be converted.10400* @return the lowercase equivalent of the character, if any;10401* otherwise, the character itself.10402* @see Character#isLowerCase(char)10403* @see String#toLowerCase()10404*/10405public static char toLowerCase(char ch) {10406return (char)toLowerCase((int)ch);10407}1040810409/**10410* Converts the character (Unicode code point) argument to10411* lowercase using case mapping information from the UnicodeData10412* file.10413*10414* <p> Note that10415* {@code Character.isLowerCase(Character.toLowerCase(codePoint))}10416* does not always return {@code true} for some ranges of10417* characters, particularly those that are symbols or ideographs.10418*10419* <p>In general, {@link String#toLowerCase()} should be used to map10420* characters to lowercase. {@code String} case mapping methods10421* have several benefits over {@code Character} case mapping methods.10422* {@code String} case mapping methods can perform locale-sensitive10423* mappings, context-sensitive mappings, and 1:M character mappings, whereas10424* the {@code Character} case mapping methods cannot.10425*10426* @param codePoint the character (Unicode code point) to be converted.10427* @return the lowercase equivalent of the character (Unicode code10428* point), if any; otherwise, the character itself.10429* @see Character#isLowerCase(int)10430* @see String#toLowerCase()10431*10432* @since 1.510433*/10434public static int toLowerCase(int codePoint) {10435return CharacterData.of(codePoint).toLowerCase(codePoint);10436}1043710438/**10439* Converts the character argument to uppercase using case mapping10440* information from the UnicodeData file.10441* <p>10442* Note that10443* {@code Character.isUpperCase(Character.toUpperCase(ch))}10444* does not always return {@code true} for some ranges of10445* characters, particularly those that are symbols or ideographs.10446*10447* <p>In general, {@link String#toUpperCase()} should be used to map10448* characters to uppercase. {@code String} case mapping methods10449* have several benefits over {@code Character} case mapping methods.10450* {@code String} case mapping methods can perform locale-sensitive10451* mappings, context-sensitive mappings, and 1:M character mappings, whereas10452* the {@code Character} case mapping methods cannot.10453*10454* <p><b>Note:</b> This method cannot handle <a10455* href="#supplementary"> supplementary characters</a>. To support10456* all Unicode characters, including supplementary characters, use10457* the {@link #toUpperCase(int)} method.10458*10459* @param ch the character to be converted.10460* @return the uppercase equivalent of the character, if any;10461* otherwise, the character itself.10462* @see Character#isUpperCase(char)10463* @see String#toUpperCase()10464*/10465public static char toUpperCase(char ch) {10466return (char)toUpperCase((int)ch);10467}1046810469/**10470* Converts the character (Unicode code point) argument to10471* uppercase using case mapping information from the UnicodeData10472* file.10473*10474* <p>Note that10475* {@code Character.isUpperCase(Character.toUpperCase(codePoint))}10476* does not always return {@code true} for some ranges of10477* characters, particularly those that are symbols or ideographs.10478*10479* <p>In general, {@link String#toUpperCase()} should be used to map10480* characters to uppercase. {@code String} case mapping methods10481* have several benefits over {@code Character} case mapping methods.10482* {@code String} case mapping methods can perform locale-sensitive10483* mappings, context-sensitive mappings, and 1:M character mappings, whereas10484* the {@code Character} case mapping methods cannot.10485*10486* @param codePoint the character (Unicode code point) to be converted.10487* @return the uppercase equivalent of the character, if any;10488* otherwise, the character itself.10489* @see Character#isUpperCase(int)10490* @see String#toUpperCase()10491*10492* @since 1.510493*/10494public static int toUpperCase(int codePoint) {10495return CharacterData.of(codePoint).toUpperCase(codePoint);10496}1049710498/**10499* Converts the character argument to titlecase using case mapping10500* information from the UnicodeData file. If a character has no10501* explicit titlecase mapping and is not itself a titlecase char10502* according to UnicodeData, then the uppercase mapping is10503* returned as an equivalent titlecase mapping. If the10504* {@code char} argument is already a titlecase10505* {@code char}, the same {@code char} value will be10506* returned.10507* <p>10508* Note that10509* {@code Character.isTitleCase(Character.toTitleCase(ch))}10510* does not always return {@code true} for some ranges of10511* characters.10512*10513* <p><b>Note:</b> This method cannot handle <a10514* href="#supplementary"> supplementary characters</a>. To support10515* all Unicode characters, including supplementary characters, use10516* the {@link #toTitleCase(int)} method.10517*10518* @param ch the character to be converted.10519* @return the titlecase equivalent of the character, if any;10520* otherwise, the character itself.10521* @see Character#isTitleCase(char)10522* @see Character#toLowerCase(char)10523* @see Character#toUpperCase(char)10524* @since 1.0.210525*/10526public static char toTitleCase(char ch) {10527return (char)toTitleCase((int)ch);10528}1052910530/**10531* Converts the character (Unicode code point) argument to titlecase using case mapping10532* information from the UnicodeData file. If a character has no10533* explicit titlecase mapping and is not itself a titlecase char10534* according to UnicodeData, then the uppercase mapping is10535* returned as an equivalent titlecase mapping. If the10536* character argument is already a titlecase10537* character, the same character value will be10538* returned.10539*10540* <p>Note that10541* {@code Character.isTitleCase(Character.toTitleCase(codePoint))}10542* does not always return {@code true} for some ranges of10543* characters.10544*10545* @param codePoint the character (Unicode code point) to be converted.10546* @return the titlecase equivalent of the character, if any;10547* otherwise, the character itself.10548* @see Character#isTitleCase(int)10549* @see Character#toLowerCase(int)10550* @see Character#toUpperCase(int)10551* @since 1.510552*/10553public static int toTitleCase(int codePoint) {10554return CharacterData.of(codePoint).toTitleCase(codePoint);10555}1055610557/**10558* Returns the numeric value of the character {@code ch} in the10559* specified radix.10560* <p>10561* If the radix is not in the range {@code MIN_RADIX} ≤10562* {@code radix} ≤ {@code MAX_RADIX} or if the10563* value of {@code ch} is not a valid digit in the specified10564* radix, {@code -1} is returned. A character is a valid digit10565* if at least one of the following is true:10566* <ul>10567* <li>The method {@code isDigit} is {@code true} of the character10568* and the Unicode decimal digit value of the character (or its10569* single-character decomposition) is less than the specified radix.10570* In this case the decimal digit value is returned.10571* <li>The character is one of the uppercase Latin letters10572* {@code 'A'} through {@code 'Z'} and its code is less than10573* {@code radix + 'A' - 10}.10574* In this case, {@code ch - 'A' + 10}10575* is returned.10576* <li>The character is one of the lowercase Latin letters10577* {@code 'a'} through {@code 'z'} and its code is less than10578* {@code radix + 'a' - 10}.10579* In this case, {@code ch - 'a' + 10}10580* is returned.10581* <li>The character is one of the fullwidth uppercase Latin letters A10582* ({@code '\u005CuFF21'}) through Z ({@code '\u005CuFF3A'})10583* and its code is less than10584* {@code radix + '\u005CuFF21' - 10}.10585* In this case, {@code ch - '\u005CuFF21' + 10}10586* is returned.10587* <li>The character is one of the fullwidth lowercase Latin letters a10588* ({@code '\u005CuFF41'}) through z ({@code '\u005CuFF5A'})10589* and its code is less than10590* {@code radix + '\u005CuFF41' - 10}.10591* In this case, {@code ch - '\u005CuFF41' + 10}10592* is returned.10593* </ul>10594*10595* <p><b>Note:</b> This method cannot handle <a10596* href="#supplementary"> supplementary characters</a>. To support10597* all Unicode characters, including supplementary characters, use10598* the {@link #digit(int, int)} method.10599*10600* @param ch the character to be converted.10601* @param radix the radix.10602* @return the numeric value represented by the character in the10603* specified radix.10604* @see Character#forDigit(int, int)10605* @see Character#isDigit(char)10606*/10607public static int digit(char ch, int radix) {10608return digit((int)ch, radix);10609}1061010611/**10612* Returns the numeric value of the specified character (Unicode10613* code point) in the specified radix.10614*10615* <p>If the radix is not in the range {@code MIN_RADIX} ≤10616* {@code radix} ≤ {@code MAX_RADIX} or if the10617* character is not a valid digit in the specified10618* radix, {@code -1} is returned. A character is a valid digit10619* if at least one of the following is true:10620* <ul>10621* <li>The method {@link #isDigit(int) isDigit(codePoint)} is {@code true} of the character10622* and the Unicode decimal digit value of the character (or its10623* single-character decomposition) is less than the specified radix.10624* In this case the decimal digit value is returned.10625* <li>The character is one of the uppercase Latin letters10626* {@code 'A'} through {@code 'Z'} and its code is less than10627* {@code radix + 'A' - 10}.10628* In this case, {@code codePoint - 'A' + 10}10629* is returned.10630* <li>The character is one of the lowercase Latin letters10631* {@code 'a'} through {@code 'z'} and its code is less than10632* {@code radix + 'a' - 10}.10633* In this case, {@code codePoint - 'a' + 10}10634* is returned.10635* <li>The character is one of the fullwidth uppercase Latin letters A10636* ({@code '\u005CuFF21'}) through Z ({@code '\u005CuFF3A'})10637* and its code is less than10638* {@code radix + '\u005CuFF21' - 10}.10639* In this case,10640* {@code codePoint - '\u005CuFF21' + 10}10641* is returned.10642* <li>The character is one of the fullwidth lowercase Latin letters a10643* ({@code '\u005CuFF41'}) through z ({@code '\u005CuFF5A'})10644* and its code is less than10645* {@code radix + '\u005CuFF41'- 10}.10646* In this case,10647* {@code codePoint - '\u005CuFF41' + 10}10648* is returned.10649* </ul>10650*10651* @param codePoint the character (Unicode code point) to be converted.10652* @param radix the radix.10653* @return the numeric value represented by the character in the10654* specified radix.10655* @see Character#forDigit(int, int)10656* @see Character#isDigit(int)10657* @since 1.510658*/10659public static int digit(int codePoint, int radix) {10660return CharacterData.of(codePoint).digit(codePoint, radix);10661}1066210663/**10664* Returns the {@code int} value that the specified Unicode10665* character represents. For example, the character10666* {@code '\u005Cu216C'} (the roman numeral fifty) will return10667* an int with a value of 50.10668* <p>10669* The letters A-Z in their uppercase ({@code '\u005Cu0041'} through10670* {@code '\u005Cu005A'}), lowercase10671* ({@code '\u005Cu0061'} through {@code '\u005Cu007A'}), and10672* full width variant ({@code '\u005CuFF21'} through10673* {@code '\u005CuFF3A'} and {@code '\u005CuFF41'} through10674* {@code '\u005CuFF5A'}) forms have numeric values from 1010675* through 35. This is independent of the Unicode specification,10676* which does not assign numeric values to these {@code char}10677* values.10678* <p>10679* If the character does not have a numeric value, then -1 is returned.10680* If the character has a numeric value that cannot be represented as a10681* nonnegative integer (for example, a fractional value), then -210682* is returned.10683*10684* <p><b>Note:</b> This method cannot handle <a10685* href="#supplementary"> supplementary characters</a>. To support10686* all Unicode characters, including supplementary characters, use10687* the {@link #getNumericValue(int)} method.10688*10689* @param ch the character to be converted.10690* @return the numeric value of the character, as a nonnegative {@code int}10691* value; -2 if the character has a numeric value but the value10692* can not be represented as a nonnegative {@code int} value;10693* -1 if the character has no numeric value.10694* @see Character#forDigit(int, int)10695* @see Character#isDigit(char)10696* @since 1.110697*/10698public static int getNumericValue(char ch) {10699return getNumericValue((int)ch);10700}1070110702/**10703* Returns the {@code int} value that the specified10704* character (Unicode code point) represents. For example, the character10705* {@code '\u005Cu216C'} (the Roman numeral fifty) will return10706* an {@code int} with a value of 50.10707* <p>10708* The letters A-Z in their uppercase ({@code '\u005Cu0041'} through10709* {@code '\u005Cu005A'}), lowercase10710* ({@code '\u005Cu0061'} through {@code '\u005Cu007A'}), and10711* full width variant ({@code '\u005CuFF21'} through10712* {@code '\u005CuFF3A'} and {@code '\u005CuFF41'} through10713* {@code '\u005CuFF5A'}) forms have numeric values from 1010714* through 35. This is independent of the Unicode specification,10715* which does not assign numeric values to these {@code char}10716* values.10717* <p>10718* If the character does not have a numeric value, then -1 is returned.10719* If the character has a numeric value that cannot be represented as a10720* nonnegative integer (for example, a fractional value), then -210721* is returned.10722*10723* @param codePoint the character (Unicode code point) to be converted.10724* @return the numeric value of the character, as a nonnegative {@code int}10725* value; -2 if the character has a numeric value but the value10726* can not be represented as a nonnegative {@code int} value;10727* -1 if the character has no numeric value.10728* @see Character#forDigit(int, int)10729* @see Character#isDigit(int)10730* @since 1.510731*/10732public static int getNumericValue(int codePoint) {10733return CharacterData.of(codePoint).getNumericValue(codePoint);10734}1073510736/**10737* Determines if the specified character is ISO-LATIN-1 white space.10738* This method returns {@code true} for the following five10739* characters only:10740* <table class="striped">10741* <caption style="display:none">truechars</caption>10742* <thead>10743* <tr><th scope="col">Character10744* <th scope="col">Code10745* <th scope="col">Name10746* </thead>10747* <tbody>10748* <tr><th scope="row">{@code '\t'}</th> <td>{@code U+0009}</td>10749* <td>{@code HORIZONTAL TABULATION}</td></tr>10750* <tr><th scope="row">{@code '\n'}</th> <td>{@code U+000A}</td>10751* <td>{@code NEW LINE}</td></tr>10752* <tr><th scope="row">{@code '\f'}</th> <td>{@code U+000C}</td>10753* <td>{@code FORM FEED}</td></tr>10754* <tr><th scope="row">{@code '\r'}</th> <td>{@code U+000D}</td>10755* <td>{@code CARRIAGE RETURN}</td></tr>10756* <tr><th scope="row">{@code ' '}</th> <td>{@code U+0020}</td>10757* <td>{@code SPACE}</td></tr>10758* </tbody>10759* </table>10760*10761* @param ch the character to be tested.10762* @return {@code true} if the character is ISO-LATIN-1 white10763* space; {@code false} otherwise.10764* @see Character#isSpaceChar(char)10765* @see Character#isWhitespace(char)10766* @deprecated Replaced by isWhitespace(char).10767*/10768@Deprecated(since="1.1")10769public static boolean isSpace(char ch) {10770return (ch <= 0x0020) &&10771(((((1L << 0x0009) |10772(1L << 0x000A) |10773(1L << 0x000C) |10774(1L << 0x000D) |10775(1L << 0x0020)) >> ch) & 1L) != 0);10776}107771077810779/**10780* Determines if the specified character is a Unicode space character.10781* A character is considered to be a space character if and only if10782* it is specified to be a space character by the Unicode Standard. This10783* method returns true if the character's general category type is any of10784* the following:10785* <ul>10786* <li> {@code SPACE_SEPARATOR}10787* <li> {@code LINE_SEPARATOR}10788* <li> {@code PARAGRAPH_SEPARATOR}10789* </ul>10790*10791* <p><b>Note:</b> This method cannot handle <a10792* href="#supplementary"> supplementary characters</a>. To support10793* all Unicode characters, including supplementary characters, use10794* the {@link #isSpaceChar(int)} method.10795*10796* @param ch the character to be tested.10797* @return {@code true} if the character is a space character;10798* {@code false} otherwise.10799* @see Character#isWhitespace(char)10800* @since 1.110801*/10802public static boolean isSpaceChar(char ch) {10803return isSpaceChar((int)ch);10804}1080510806/**10807* Determines if the specified character (Unicode code point) is a10808* Unicode space character. A character is considered to be a10809* space character if and only if it is specified to be a space10810* character by the Unicode Standard. This method returns true if10811* the character's general category type is any of the following:10812*10813* <ul>10814* <li> {@link #SPACE_SEPARATOR}10815* <li> {@link #LINE_SEPARATOR}10816* <li> {@link #PARAGRAPH_SEPARATOR}10817* </ul>10818*10819* @param codePoint the character (Unicode code point) to be tested.10820* @return {@code true} if the character is a space character;10821* {@code false} otherwise.10822* @see Character#isWhitespace(int)10823* @since 1.510824*/10825public static boolean isSpaceChar(int codePoint) {10826return ((((1 << Character.SPACE_SEPARATOR) |10827(1 << Character.LINE_SEPARATOR) |10828(1 << Character.PARAGRAPH_SEPARATOR)) >> getType(codePoint)) & 1)10829!= 0;10830}1083110832/**10833* Determines if the specified character is white space according to Java.10834* A character is a Java whitespace character if and only if it satisfies10835* one of the following criteria:10836* <ul>10837* <li> It is a Unicode space character ({@code SPACE_SEPARATOR},10838* {@code LINE_SEPARATOR}, or {@code PARAGRAPH_SEPARATOR})10839* but is not also a non-breaking space ({@code '\u005Cu00A0'},10840* {@code '\u005Cu2007'}, {@code '\u005Cu202F'}).10841* <li> It is {@code '\u005Ct'}, U+0009 HORIZONTAL TABULATION.10842* <li> It is {@code '\u005Cn'}, U+000A LINE FEED.10843* <li> It is {@code '\u005Cu000B'}, U+000B VERTICAL TABULATION.10844* <li> It is {@code '\u005Cf'}, U+000C FORM FEED.10845* <li> It is {@code '\u005Cr'}, U+000D CARRIAGE RETURN.10846* <li> It is {@code '\u005Cu001C'}, U+001C FILE SEPARATOR.10847* <li> It is {@code '\u005Cu001D'}, U+001D GROUP SEPARATOR.10848* <li> It is {@code '\u005Cu001E'}, U+001E RECORD SEPARATOR.10849* <li> It is {@code '\u005Cu001F'}, U+001F UNIT SEPARATOR.10850* </ul>10851*10852* <p><b>Note:</b> This method cannot handle <a10853* href="#supplementary"> supplementary characters</a>. To support10854* all Unicode characters, including supplementary characters, use10855* the {@link #isWhitespace(int)} method.10856*10857* @param ch the character to be tested.10858* @return {@code true} if the character is a Java whitespace10859* character; {@code false} otherwise.10860* @see Character#isSpaceChar(char)10861* @since 1.110862*/10863public static boolean isWhitespace(char ch) {10864return isWhitespace((int)ch);10865}1086610867/**10868* Determines if the specified character (Unicode code point) is10869* white space according to Java. A character is a Java10870* whitespace character if and only if it satisfies one of the10871* following criteria:10872* <ul>10873* <li> It is a Unicode space character ({@link #SPACE_SEPARATOR},10874* {@link #LINE_SEPARATOR}, or {@link #PARAGRAPH_SEPARATOR})10875* but is not also a non-breaking space ({@code '\u005Cu00A0'},10876* {@code '\u005Cu2007'}, {@code '\u005Cu202F'}).10877* <li> It is {@code '\u005Ct'}, U+0009 HORIZONTAL TABULATION.10878* <li> It is {@code '\u005Cn'}, U+000A LINE FEED.10879* <li> It is {@code '\u005Cu000B'}, U+000B VERTICAL TABULATION.10880* <li> It is {@code '\u005Cf'}, U+000C FORM FEED.10881* <li> It is {@code '\u005Cr'}, U+000D CARRIAGE RETURN.10882* <li> It is {@code '\u005Cu001C'}, U+001C FILE SEPARATOR.10883* <li> It is {@code '\u005Cu001D'}, U+001D GROUP SEPARATOR.10884* <li> It is {@code '\u005Cu001E'}, U+001E RECORD SEPARATOR.10885* <li> It is {@code '\u005Cu001F'}, U+001F UNIT SEPARATOR.10886* </ul>10887*10888* @param codePoint the character (Unicode code point) to be tested.10889* @return {@code true} if the character is a Java whitespace10890* character; {@code false} otherwise.10891* @see Character#isSpaceChar(int)10892* @since 1.510893*/10894public static boolean isWhitespace(int codePoint) {10895return CharacterData.of(codePoint).isWhitespace(codePoint);10896}1089710898/**10899* Determines if the specified character is an ISO control10900* character. A character is considered to be an ISO control10901* character if its code is in the range {@code '\u005Cu0000'}10902* through {@code '\u005Cu001F'} or in the range10903* {@code '\u005Cu007F'} through {@code '\u005Cu009F'}.10904*10905* <p><b>Note:</b> This method cannot handle <a10906* href="#supplementary"> supplementary characters</a>. To support10907* all Unicode characters, including supplementary characters, use10908* the {@link #isISOControl(int)} method.10909*10910* @param ch the character to be tested.10911* @return {@code true} if the character is an ISO control character;10912* {@code false} otherwise.10913*10914* @see Character#isSpaceChar(char)10915* @see Character#isWhitespace(char)10916* @since 1.110917*/10918public static boolean isISOControl(char ch) {10919return isISOControl((int)ch);10920}1092110922/**10923* Determines if the referenced character (Unicode code point) is an ISO control10924* character. A character is considered to be an ISO control10925* character if its code is in the range {@code '\u005Cu0000'}10926* through {@code '\u005Cu001F'} or in the range10927* {@code '\u005Cu007F'} through {@code '\u005Cu009F'}.10928*10929* @param codePoint the character (Unicode code point) to be tested.10930* @return {@code true} if the character is an ISO control character;10931* {@code false} otherwise.10932* @see Character#isSpaceChar(int)10933* @see Character#isWhitespace(int)10934* @since 1.510935*/10936public static boolean isISOControl(int codePoint) {10937// Optimized form of:10938// (codePoint >= 0x00 && codePoint <= 0x1F) ||10939// (codePoint >= 0x7F && codePoint <= 0x9F);10940return codePoint <= 0x9F &&10941(codePoint >= 0x7F || (codePoint >>> 5 == 0));10942}1094310944/**10945* Returns a value indicating a character's general category.10946*10947* <p><b>Note:</b> This method cannot handle <a10948* href="#supplementary"> supplementary characters</a>. To support10949* all Unicode characters, including supplementary characters, use10950* the {@link #getType(int)} method.10951*10952* @param ch the character to be tested.10953* @return a value of type {@code int} representing the10954* character's general category.10955* @see Character#COMBINING_SPACING_MARK10956* @see Character#CONNECTOR_PUNCTUATION10957* @see Character#CONTROL10958* @see Character#CURRENCY_SYMBOL10959* @see Character#DASH_PUNCTUATION10960* @see Character#DECIMAL_DIGIT_NUMBER10961* @see Character#ENCLOSING_MARK10962* @see Character#END_PUNCTUATION10963* @see Character#FINAL_QUOTE_PUNCTUATION10964* @see Character#FORMAT10965* @see Character#INITIAL_QUOTE_PUNCTUATION10966* @see Character#LETTER_NUMBER10967* @see Character#LINE_SEPARATOR10968* @see Character#LOWERCASE_LETTER10969* @see Character#MATH_SYMBOL10970* @see Character#MODIFIER_LETTER10971* @see Character#MODIFIER_SYMBOL10972* @see Character#NON_SPACING_MARK10973* @see Character#OTHER_LETTER10974* @see Character#OTHER_NUMBER10975* @see Character#OTHER_PUNCTUATION10976* @see Character#OTHER_SYMBOL10977* @see Character#PARAGRAPH_SEPARATOR10978* @see Character#PRIVATE_USE10979* @see Character#SPACE_SEPARATOR10980* @see Character#START_PUNCTUATION10981* @see Character#SURROGATE10982* @see Character#TITLECASE_LETTER10983* @see Character#UNASSIGNED10984* @see Character#UPPERCASE_LETTER10985* @since 1.110986*/10987public static int getType(char ch) {10988return getType((int)ch);10989}1099010991/**10992* Returns a value indicating a character's general category.10993*10994* @param codePoint the character (Unicode code point) to be tested.10995* @return a value of type {@code int} representing the10996* character's general category.10997* @see Character#COMBINING_SPACING_MARK COMBINING_SPACING_MARK10998* @see Character#CONNECTOR_PUNCTUATION CONNECTOR_PUNCTUATION10999* @see Character#CONTROL CONTROL11000* @see Character#CURRENCY_SYMBOL CURRENCY_SYMBOL11001* @see Character#DASH_PUNCTUATION DASH_PUNCTUATION11002* @see Character#DECIMAL_DIGIT_NUMBER DECIMAL_DIGIT_NUMBER11003* @see Character#ENCLOSING_MARK ENCLOSING_MARK11004* @see Character#END_PUNCTUATION END_PUNCTUATION11005* @see Character#FINAL_QUOTE_PUNCTUATION FINAL_QUOTE_PUNCTUATION11006* @see Character#FORMAT FORMAT11007* @see Character#INITIAL_QUOTE_PUNCTUATION INITIAL_QUOTE_PUNCTUATION11008* @see Character#LETTER_NUMBER LETTER_NUMBER11009* @see Character#LINE_SEPARATOR LINE_SEPARATOR11010* @see Character#LOWERCASE_LETTER LOWERCASE_LETTER11011* @see Character#MATH_SYMBOL MATH_SYMBOL11012* @see Character#MODIFIER_LETTER MODIFIER_LETTER11013* @see Character#MODIFIER_SYMBOL MODIFIER_SYMBOL11014* @see Character#NON_SPACING_MARK NON_SPACING_MARK11015* @see Character#OTHER_LETTER OTHER_LETTER11016* @see Character#OTHER_NUMBER OTHER_NUMBER11017* @see Character#OTHER_PUNCTUATION OTHER_PUNCTUATION11018* @see Character#OTHER_SYMBOL OTHER_SYMBOL11019* @see Character#PARAGRAPH_SEPARATOR PARAGRAPH_SEPARATOR11020* @see Character#PRIVATE_USE PRIVATE_USE11021* @see Character#SPACE_SEPARATOR SPACE_SEPARATOR11022* @see Character#START_PUNCTUATION START_PUNCTUATION11023* @see Character#SURROGATE SURROGATE11024* @see Character#TITLECASE_LETTER TITLECASE_LETTER11025* @see Character#UNASSIGNED UNASSIGNED11026* @see Character#UPPERCASE_LETTER UPPERCASE_LETTER11027* @since 1.511028*/11029public static int getType(int codePoint) {11030return CharacterData.of(codePoint).getType(codePoint);11031}1103211033/**11034* Determines the character representation for a specific digit in11035* the specified radix. If the value of {@code radix} is not a11036* valid radix, or the value of {@code digit} is not a valid11037* digit in the specified radix, the null character11038* ({@code '\u005Cu0000'}) is returned.11039* <p>11040* The {@code radix} argument is valid if it is greater than or11041* equal to {@code MIN_RADIX} and less than or equal to11042* {@code MAX_RADIX}. The {@code digit} argument is valid if11043* {@code 0 <= digit < radix}.11044* <p>11045* If the digit is less than 10, then11046* {@code '0' + digit} is returned. Otherwise, the value11047* {@code 'a' + digit - 10} is returned.11048*11049* @param digit the number to convert to a character.11050* @param radix the radix.11051* @return the {@code char} representation of the specified digit11052* in the specified radix.11053* @see Character#MIN_RADIX11054* @see Character#MAX_RADIX11055* @see Character#digit(char, int)11056*/11057public static char forDigit(int digit, int radix) {11058if ((digit >= radix) || (digit < 0)) {11059return '\0';11060}11061if ((radix < Character.MIN_RADIX) || (radix > Character.MAX_RADIX)) {11062return '\0';11063}11064if (digit < 10) {11065return (char)('0' + digit);11066}11067return (char)('a' - 10 + digit);11068}1106911070/**11071* Returns the Unicode directionality property for the given11072* character. Character directionality is used to calculate the11073* visual ordering of text. The directionality value of undefined11074* {@code char} values is {@code DIRECTIONALITY_UNDEFINED}.11075*11076* <p><b>Note:</b> This method cannot handle <a11077* href="#supplementary"> supplementary characters</a>. To support11078* all Unicode characters, including supplementary characters, use11079* the {@link #getDirectionality(int)} method.11080*11081* @param ch {@code char} for which the directionality property11082* is requested.11083* @return the directionality property of the {@code char} value.11084*11085* @see Character#DIRECTIONALITY_UNDEFINED11086* @see Character#DIRECTIONALITY_LEFT_TO_RIGHT11087* @see Character#DIRECTIONALITY_RIGHT_TO_LEFT11088* @see Character#DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC11089* @see Character#DIRECTIONALITY_EUROPEAN_NUMBER11090* @see Character#DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR11091* @see Character#DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR11092* @see Character#DIRECTIONALITY_ARABIC_NUMBER11093* @see Character#DIRECTIONALITY_COMMON_NUMBER_SEPARATOR11094* @see Character#DIRECTIONALITY_NONSPACING_MARK11095* @see Character#DIRECTIONALITY_BOUNDARY_NEUTRAL11096* @see Character#DIRECTIONALITY_PARAGRAPH_SEPARATOR11097* @see Character#DIRECTIONALITY_SEGMENT_SEPARATOR11098* @see Character#DIRECTIONALITY_WHITESPACE11099* @see Character#DIRECTIONALITY_OTHER_NEUTRALS11100* @see Character#DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING11101* @see Character#DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE11102* @see Character#DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING11103* @see Character#DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE11104* @see Character#DIRECTIONALITY_POP_DIRECTIONAL_FORMAT11105* @see Character#DIRECTIONALITY_LEFT_TO_RIGHT_ISOLATE11106* @see Character#DIRECTIONALITY_RIGHT_TO_LEFT_ISOLATE11107* @see Character#DIRECTIONALITY_FIRST_STRONG_ISOLATE11108* @see Character#DIRECTIONALITY_POP_DIRECTIONAL_ISOLATE11109* @since 1.411110*/11111public static byte getDirectionality(char ch) {11112return getDirectionality((int)ch);11113}1111411115/**11116* Returns the Unicode directionality property for the given11117* character (Unicode code point). Character directionality is11118* used to calculate the visual ordering of text. The11119* directionality value of undefined character is {@link11120* #DIRECTIONALITY_UNDEFINED}.11121*11122* @param codePoint the character (Unicode code point) for which11123* the directionality property is requested.11124* @return the directionality property of the character.11125*11126* @see Character#DIRECTIONALITY_UNDEFINED DIRECTIONALITY_UNDEFINED11127* @see Character#DIRECTIONALITY_LEFT_TO_RIGHT DIRECTIONALITY_LEFT_TO_RIGHT11128* @see Character#DIRECTIONALITY_RIGHT_TO_LEFT DIRECTIONALITY_RIGHT_TO_LEFT11129* @see Character#DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC11130* @see Character#DIRECTIONALITY_EUROPEAN_NUMBER DIRECTIONALITY_EUROPEAN_NUMBER11131* @see Character#DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR11132* @see Character#DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR11133* @see Character#DIRECTIONALITY_ARABIC_NUMBER DIRECTIONALITY_ARABIC_NUMBER11134* @see Character#DIRECTIONALITY_COMMON_NUMBER_SEPARATOR DIRECTIONALITY_COMMON_NUMBER_SEPARATOR11135* @see Character#DIRECTIONALITY_NONSPACING_MARK DIRECTIONALITY_NONSPACING_MARK11136* @see Character#DIRECTIONALITY_BOUNDARY_NEUTRAL DIRECTIONALITY_BOUNDARY_NEUTRAL11137* @see Character#DIRECTIONALITY_PARAGRAPH_SEPARATOR DIRECTIONALITY_PARAGRAPH_SEPARATOR11138* @see Character#DIRECTIONALITY_SEGMENT_SEPARATOR DIRECTIONALITY_SEGMENT_SEPARATOR11139* @see Character#DIRECTIONALITY_WHITESPACE DIRECTIONALITY_WHITESPACE11140* @see Character#DIRECTIONALITY_OTHER_NEUTRALS DIRECTIONALITY_OTHER_NEUTRALS11141* @see Character#DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING11142* @see Character#DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE11143* @see Character#DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING11144* @see Character#DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE11145* @see Character#DIRECTIONALITY_POP_DIRECTIONAL_FORMAT DIRECTIONALITY_POP_DIRECTIONAL_FORMAT11146* @see Character#DIRECTIONALITY_LEFT_TO_RIGHT_ISOLATE DIRECTIONALITY_LEFT_TO_RIGHT_ISOLATE11147* @see Character#DIRECTIONALITY_RIGHT_TO_LEFT_ISOLATE DIRECTIONALITY_RIGHT_TO_LEFT_ISOLATE11148* @see Character#DIRECTIONALITY_FIRST_STRONG_ISOLATE DIRECTIONALITY_FIRST_STRONG_ISOLATE11149* @see Character#DIRECTIONALITY_POP_DIRECTIONAL_ISOLATE DIRECTIONALITY_POP_DIRECTIONAL_ISOLATE11150* @since 1.511151*/11152public static byte getDirectionality(int codePoint) {11153return CharacterData.of(codePoint).getDirectionality(codePoint);11154}1115511156/**11157* Determines whether the character is mirrored according to the11158* Unicode specification. Mirrored characters should have their11159* glyphs horizontally mirrored when displayed in text that is11160* right-to-left. For example, {@code '\u005Cu0028'} LEFT11161* PARENTHESIS is semantically defined to be an <i>opening11162* parenthesis</i>. This will appear as a "(" in text that is11163* left-to-right but as a ")" in text that is right-to-left.11164*11165* <p><b>Note:</b> This method cannot handle <a11166* href="#supplementary"> supplementary characters</a>. To support11167* all Unicode characters, including supplementary characters, use11168* the {@link #isMirrored(int)} method.11169*11170* @param ch {@code char} for which the mirrored property is requested11171* @return {@code true} if the char is mirrored, {@code false}11172* if the {@code char} is not mirrored or is not defined.11173* @since 1.411174*/11175public static boolean isMirrored(char ch) {11176return isMirrored((int)ch);11177}1117811179/**11180* Determines whether the specified character (Unicode code point)11181* is mirrored according to the Unicode specification. Mirrored11182* characters should have their glyphs horizontally mirrored when11183* displayed in text that is right-to-left. For example,11184* {@code '\u005Cu0028'} LEFT PARENTHESIS is semantically11185* defined to be an <i>opening parenthesis</i>. This will appear11186* as a "(" in text that is left-to-right but as a ")" in text11187* that is right-to-left.11188*11189* @param codePoint the character (Unicode code point) to be tested.11190* @return {@code true} if the character is mirrored, {@code false}11191* if the character is not mirrored or is not defined.11192* @since 1.511193*/11194public static boolean isMirrored(int codePoint) {11195return CharacterData.of(codePoint).isMirrored(codePoint);11196}1119711198/**11199* Compares two {@code Character} objects numerically.11200*11201* @param anotherCharacter the {@code Character} to be compared.11202* @return the value {@code 0} if the argument {@code Character}11203* is equal to this {@code Character}; a value less than11204* {@code 0} if this {@code Character} is numerically less11205* than the {@code Character} argument; and a value greater than11206* {@code 0} if this {@code Character} is numerically greater11207* than the {@code Character} argument (unsigned comparison).11208* Note that this is strictly a numerical comparison; it is not11209* locale-dependent.11210* @since 1.211211*/11212public int compareTo(Character anotherCharacter) {11213return compare(this.value, anotherCharacter.value);11214}1121511216/**11217* Compares two {@code char} values numerically.11218* The value returned is identical to what would be returned by:11219* <pre>11220* Character.valueOf(x).compareTo(Character.valueOf(y))11221* </pre>11222*11223* @param x the first {@code char} to compare11224* @param y the second {@code char} to compare11225* @return the value {@code 0} if {@code x == y};11226* a value less than {@code 0} if {@code x < y}; and11227* a value greater than {@code 0} if {@code x > y}11228* @since 1.711229*/11230public static int compare(char x, char y) {11231return x - y;11232}1123311234/**11235* Converts the character (Unicode code point) argument to uppercase using11236* information from the UnicodeData file.11237*11238* @param codePoint the character (Unicode code point) to be converted.11239* @return either the uppercase equivalent of the character, if11240* any, or an error flag ({@code Character.ERROR})11241* that indicates that a 1:M {@code char} mapping exists.11242* @see Character#isLowerCase(char)11243* @see Character#isUpperCase(char)11244* @see Character#toLowerCase(char)11245* @see Character#toTitleCase(char)11246* @since 1.411247*/11248static int toUpperCaseEx(int codePoint) {11249assert isValidCodePoint(codePoint);11250return CharacterData.of(codePoint).toUpperCaseEx(codePoint);11251}1125211253/**11254* Converts the character (Unicode code point) argument to uppercase using case11255* mapping information from the SpecialCasing file in the Unicode11256* specification. If a character has no explicit uppercase11257* mapping, then the {@code char} itself is returned in the11258* {@code char[]}.11259*11260* @param codePoint the character (Unicode code point) to be converted.11261* @return a {@code char[]} with the uppercased character.11262* @since 1.411263*/11264static char[] toUpperCaseCharArray(int codePoint) {11265// As of Unicode 6.0, 1:M uppercasings only happen in the BMP.11266assert isBmpCodePoint(codePoint);11267return CharacterData.of(codePoint).toUpperCaseCharArray(codePoint);11268}1126911270/**11271* The number of bits used to represent a {@code char} value in unsigned11272* binary form, constant {@code 16}.11273*11274* @since 1.511275*/11276public static final int SIZE = 16;1127711278/**11279* The number of bytes used to represent a {@code char} value in unsigned11280* binary form.11281*11282* @since 1.811283*/11284public static final int BYTES = SIZE / Byte.SIZE;1128511286/**11287* Returns the value obtained by reversing the order of the bytes in the11288* specified {@code char} value.11289*11290* @param ch The {@code char} of which to reverse the byte order.11291* @return the value obtained by reversing (or, equivalently, swapping)11292* the bytes in the specified {@code char} value.11293* @since 1.511294*/11295@IntrinsicCandidate11296public static char reverseBytes(char ch) {11297return (char) (((ch & 0xFF00) >> 8) | (ch << 8));11298}1129911300/**11301* Returns the Unicode name of the specified character11302* {@code codePoint}, or null if the code point is11303* {@link #UNASSIGNED unassigned}.11304* <p>11305* Note: if the specified character is not assigned a name by11306* the <i>UnicodeData</i> file (part of the Unicode Character11307* Database maintained by the Unicode Consortium), the returned11308* name is the same as the result of expression:11309*11310* <blockquote>{@code11311* Character.UnicodeBlock.of(codePoint).toString().replace('_', ' ')11312* + " "11313* + Integer.toHexString(codePoint).toUpperCase(Locale.ROOT);11314*11315* }</blockquote>11316*11317* @param codePoint the character (Unicode code point)11318*11319* @return the Unicode name of the specified character, or null if11320* the code point is unassigned.11321*11322* @throws IllegalArgumentException if the specified11323* {@code codePoint} is not a valid Unicode11324* code point.11325*11326* @since 1.711327*/11328public static String getName(int codePoint) {11329if (!isValidCodePoint(codePoint)) {11330throw new IllegalArgumentException(11331String.format("Not a valid Unicode code point: 0x%X", codePoint));11332}11333String name = CharacterName.getInstance().getName(codePoint);11334if (name != null)11335return name;11336if (getType(codePoint) == UNASSIGNED)11337return null;11338UnicodeBlock block = UnicodeBlock.of(codePoint);11339if (block != null)11340return block.toString().replace('_', ' ') + " "11341+ Integer.toHexString(codePoint).toUpperCase(Locale.ROOT);11342// should never come here11343return Integer.toHexString(codePoint).toUpperCase(Locale.ROOT);11344}1134511346/**11347* Returns the code point value of the Unicode character specified by11348* the given Unicode character name.11349* <p>11350* Note: if a character is not assigned a name by the <i>UnicodeData</i>11351* file (part of the Unicode Character Database maintained by the Unicode11352* Consortium), its name is defined as the result of expression:11353*11354* <blockquote>{@code11355* Character.UnicodeBlock.of(codePoint).toString().replace('_', ' ')11356* + " "11357* + Integer.toHexString(codePoint).toUpperCase(Locale.ROOT);11358*11359* }</blockquote>11360* <p>11361* The {@code name} matching is case insensitive, with any leading and11362* trailing whitespace character removed.11363*11364* @param name the Unicode character name11365*11366* @return the code point value of the character specified by its name.11367*11368* @throws IllegalArgumentException if the specified {@code name}11369* is not a valid Unicode character name.11370* @throws NullPointerException if {@code name} is {@code null}11371*11372* @since 911373*/11374public static int codePointOf(String name) {11375name = name.trim().toUpperCase(Locale.ROOT);11376int cp = CharacterName.getInstance().getCodePoint(name);11377if (cp != -1)11378return cp;11379try {11380int off = name.lastIndexOf(' ');11381if (off != -1) {11382cp = Integer.parseInt(name, off + 1, name.length(), 16);11383if (isValidCodePoint(cp) && name.equals(getName(cp)))11384return cp;11385}11386} catch (Exception x) {}11387throw new IllegalArgumentException("Unrecognized character name :" + name);11388}11389}113901139111392