12ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller/* GENERATED SOURCE. DO NOT MODIFY. */
2f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert// © 2016 and later: Unicode, Inc. and others.
3f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert// License & terms of use: http://www.unicode.org/copyright.html#License
42ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller/**
52ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *******************************************************************************
67241d93e30f4c7c527c019cd6ca3a791ca22d9b2Fredrik Roubert * Copyright (C) 1996-2016, International Business Machines Corporation and
72ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * others. All Rights Reserved.
82ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *******************************************************************************
92ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller */
102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerpackage android.icu.lang;
122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport java.lang.ref.SoftReference;
142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport java.util.HashMap;
152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport java.util.Iterator;
162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport java.util.Locale;
172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport java.util.Map;
182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
19fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubertimport android.icu.impl.CaseMapImpl;
202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport android.icu.impl.IllegalIcuArgumentException;
212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport android.icu.impl.Trie2;
222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport android.icu.impl.UBiDiProps;
232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport android.icu.impl.UCaseProps;
242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport android.icu.impl.UCharacterName;
252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport android.icu.impl.UCharacterNameChoice;
262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport android.icu.impl.UCharacterProperty;
272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport android.icu.impl.UCharacterUtility;
282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport android.icu.impl.UPropertyAliases;
292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport android.icu.lang.UCharacterEnums.ECharacterCategory;
302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport android.icu.lang.UCharacterEnums.ECharacterDirection;
312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport android.icu.text.BreakIterator;
32fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubertimport android.icu.text.Edits;
332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport android.icu.text.Normalizer2;
342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport android.icu.util.RangeValueIterator;
352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport android.icu.util.ULocale;
362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport android.icu.util.ValueIterator;
372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport android.icu.util.VersionInfo;
382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller/**
401537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller * <strong>[icu enhancement]</strong> ICU's replacement for {@link java.lang.Character}.&nbsp;Methods, fields, and other functionality specific to ICU are labeled '<strong>[icu]</strong>'.
412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *
422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <p>The UCharacter class provides extensions to the {@link java.lang.Character} class.
432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * These extensions provide support for more Unicode properties.
442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Each ICU release supports the latest version of Unicode available at that time.
452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *
462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <p>For some time before Java 5 added support for supplementary Unicode code points,
472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * The ICU UCharacter class and many other ICU classes already supported them.
482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Some UCharacter methods and constants were widened slightly differently than
492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * how the Character class methods and constants were widened later.
502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * In particular, {@link Character#MAX_VALUE} is still a char with the value U+FFFF,
512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * while the {@link UCharacter#MAX_VALUE} is an int with the value U+10FFFF.
522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *
532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <p>Code points are represented in these API using ints. While it would be
542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * more convenient in Java to have a separate primitive datatype for them,
552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * ints suffice in the meantime.
562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *
572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <p>Aside from the additions for UTF-16 support, and the updated Unicode
582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * properties, the main differences between UCharacter and Character are:
592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <ul>
602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <li> UCharacter is not designed to be a char wrapper and does not have
612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *      APIs to which involves management of that single char.<br>
622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *      These include:
632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *      <ul>
642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *        <li> char charValue(),
652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *        <li> int compareTo(java.lang.Character, java.lang.Character), etc.
662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *      </ul>
672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <li> UCharacter does not include Character APIs that are deprecated, nor
682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *      does it include the Java-specific character information, such as
692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *      boolean isJavaIdentifierPart(char ch).
702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <li> Character maps characters 'A' - 'Z' and 'a' - 'z' to the numeric
712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *      values '10' - '35'. UCharacter also does this in digit and
722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *      getNumericValue, to adhere to the java semantics of these
732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *      methods.  New methods unicodeDigit, and
742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *      getUnicodeNumericValue do not treat the above code points
752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *      as having numeric values.  This is a semantic change from ICU4J 1.3.1.
762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * </ul>
772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <p>
782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * In addition to Java compatibility functions, which calculate derived properties,
792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * this API provides low-level access to the Unicode Character Database.
802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <p>
812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Unicode assigns each code point (not just assigned character) values for
822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * many properties.
832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Most of them are simple boolean flags, or constants from a small enumerated list.
842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * For some properties, values are strings or other relatively more complex types.
852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <p>
862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * For more information see
872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <a href="http://www.unicode/org/ucd/">"About the Unicode Character Database"</a>
882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * (http://www.unicode.org/ucd/)
892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * and the <a href="http://www.icu-project.org/userguide/properties.html">ICU
902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * User Guide chapter on Properties</a>
912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * (http://www.icu-project.org/userguide/properties.html).
922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <p>
932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * There are also functions that provide easy migration from C/POSIX functions
942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * like isblank(). Their use is generally discouraged because the C/POSIX
952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * standards do not define their semantics beyond the ASCII range, which means
962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * that different implementations exhibit very different behavior.
972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Instead, Unicode properties should be used directly.
982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <p>
992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * There are also only a few, broad C/POSIX character classes, and they tend
1002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * to be used for conflicting purposes. For example, the "isalpha()" class
1012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * is sometimes used to determine word boundaries, while a more sophisticated
1022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * approach would at least distinguish initial letters from continuation
1032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * characters (the latter including combining marks).
1042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * (In ICU, BreakIterator is the most sophisticated API for word boundaries.)
1052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Another example: There is no "istitle()" class for titlecase characters.
1062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <p>
1072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * ICU 3.4 and later provides API access for all twelve C/POSIX character classes.
1082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * ICU implements them according to the Standard Recommendations in
1092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Annex C: Compatibility Properties of UTS #18 Unicode Regular Expressions
1102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * (http://www.unicode.org/reports/tr18/#Compatibility_Properties).
1112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <p>
1122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * API access for C/POSIX character classes is as follows:
1132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <pre>{@code
1142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * - alpha:     isUAlphabetic(c) or hasBinaryProperty(c, UProperty.ALPHABETIC)
1152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * - lower:     isULowercase(c) or hasBinaryProperty(c, UProperty.LOWERCASE)
1162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * - upper:     isUUppercase(c) or hasBinaryProperty(c, UProperty.UPPERCASE)
1176bb622ef53ee52bb04e3df4f97fc4a59f3038386Neil Fuller * - punct:     ((1<<getType(c)) & ((1<<DASH_PUNCTUATION)|(1<<START_PUNCTUATION)|
1186bb622ef53ee52bb04e3df4f97fc4a59f3038386Neil Fuller *               (1<<END_PUNCTUATION)|(1<<CONNECTOR_PUNCTUATION)|(1<<OTHER_PUNCTUATION)|
1196bb622ef53ee52bb04e3df4f97fc4a59f3038386Neil Fuller *               (1<<INITIAL_PUNCTUATION)|(1<<FINAL_PUNCTUATION)))!=0
1202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * - digit:     isDigit(c) or getType(c)==DECIMAL_DIGIT_NUMBER
1212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * - xdigit:    hasBinaryProperty(c, UProperty.POSIX_XDIGIT)
1222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * - alnum:     hasBinaryProperty(c, UProperty.POSIX_ALNUM)
1232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * - space:     isUWhiteSpace(c) or hasBinaryProperty(c, UProperty.WHITE_SPACE)
1242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * - blank:     hasBinaryProperty(c, UProperty.POSIX_BLANK)
1252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * - cntrl:     getType(c)==CONTROL
1262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * - graph:     hasBinaryProperty(c, UProperty.POSIX_GRAPH)
1272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * - print:     hasBinaryProperty(c, UProperty.POSIX_PRINT)}</pre>
1282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <p>
1292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * The C/POSIX character classes are also available in UnicodeSet patterns,
1302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * using patterns like [:graph:] or \p{graph}.
1312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *
1321c8a530973739aafa823d758240d2cd5dad96fe3Fredrik Roubert * <p><strong>[icu] Note:</strong> There are several ICU (and Java) whitespace functions.
1332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Comparison:<ul>
1342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <li> isUWhiteSpace=UCHAR_WHITE_SPACE: Unicode White_Space property;
1352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *       most of general categories "Z" (separators) + most whitespace ISO controls
1362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *       (including no-break spaces, but excluding IS1..IS4 and ZWSP)
1372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <li> isWhitespace: Java isWhitespace; Z + whitespace ISO controls but excluding no-break spaces
1382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <li> isSpaceChar: just Z (including no-break spaces)</ul>
1391c8a530973739aafa823d758240d2cd5dad96fe3Fredrik Roubert *
1402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <p>
1412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * This class is not subclassable.
1421c8a530973739aafa823d758240d2cd5dad96fe3Fredrik Roubert *
1432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * @author Syn Wee Quek
1442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * @see android.icu.lang.UCharacterEnums
1452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller */
1462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
1472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerpublic final class UCharacter implements ECharacterCategory, ECharacterDirection
1482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller{
1492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    // public inner classes ----------------------------------------------
1502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
1512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
1521537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu enhancement]</strong> ICU's replacement for {@link java.lang.Character.UnicodeBlock}.&nbsp;Methods, fields, and other functionality specific to ICU are labeled '<strong>[icu]</strong>'.
1532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
1542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * A family of character subsets representing the character blocks in the
1552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Unicode specification, generated from Unicode Data file Blocks.txt.
1562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Character blocks generally define characters used for a specific script
1572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * or purpose. A character is contained by at most one Unicode block.
1582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
1591537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu] Note:</strong> All fields named XXX_ID are specific to ICU.
1602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
1612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final class UnicodeBlock extends Character.Subset
1622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
1632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // block id corresponding to icu4c -----------------------------------
1642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
1652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
1662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
1672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int INVALID_CODE_ID = -1;
1682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
1692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
1702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int BASIC_LATIN_ID = 1;
1712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
1722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
1732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LATIN_1_SUPPLEMENT_ID = 2;
1742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
1752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
1762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LATIN_EXTENDED_A_ID = 3;
1772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
1782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
1792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LATIN_EXTENDED_B_ID = 4;
1802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
1812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
1822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int IPA_EXTENSIONS_ID = 5;
1832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
1842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
1852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SPACING_MODIFIER_LETTERS_ID = 6;
1862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
1872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
1882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int COMBINING_DIACRITICAL_MARKS_ID = 7;
1892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
1902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Unicode 3.2 renames this block to "Greek and Coptic".
1912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
1922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int GREEK_ID = 8;
1932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
1942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
1952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CYRILLIC_ID = 9;
1962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
1972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
1982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ARMENIAN_ID = 10;
1992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int HEBREW_ID = 11;
2022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ARABIC_ID = 12;
2052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SYRIAC_ID = 13;
2082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int THAANA_ID = 14;
2112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int DEVANAGARI_ID = 15;
2142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int BENGALI_ID = 16;
2172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int GURMUKHI_ID = 17;
2202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int GUJARATI_ID = 18;
2232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ORIYA_ID = 19;
2262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int TAMIL_ID = 20;
2292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int TELUGU_ID = 21;
2322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int KANNADA_ID = 22;
2352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MALAYALAM_ID = 23;
2382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SINHALA_ID = 24;
2412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int THAI_ID = 25;
2442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LAO_ID = 26;
2472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int TIBETAN_ID = 27;
2502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MYANMAR_ID = 28;
2532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int GEORGIAN_ID = 29;
2562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int HANGUL_JAMO_ID = 30;
2592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ETHIOPIC_ID = 31;
2622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CHEROKEE_ID = 32;
2652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_ID = 33;
2682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int OGHAM_ID = 34;
2712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int RUNIC_ID = 35;
2742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int KHMER_ID = 36;
2772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MONGOLIAN_ID = 37;
2802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LATIN_EXTENDED_ADDITIONAL_ID = 38;
2832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int GREEK_EXTENDED_ID = 39;
2862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int GENERAL_PUNCTUATION_ID = 40;
2892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SUPERSCRIPTS_AND_SUBSCRIPTS_ID = 41;
2922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CURRENCY_SYMBOLS_ID = 42;
2952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Unicode 3.2 renames this block to "Combining Diacritical Marks for
2972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Symbols".
2982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int COMBINING_MARKS_FOR_SYMBOLS_ID = 43;
3002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LETTERLIKE_SYMBOLS_ID = 44;
3032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NUMBER_FORMS_ID = 45;
3062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ARROWS_ID = 46;
3092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MATHEMATICAL_OPERATORS_ID = 47;
3122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MISCELLANEOUS_TECHNICAL_ID = 48;
3152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CONTROL_PICTURES_ID = 49;
3182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int OPTICAL_CHARACTER_RECOGNITION_ID = 50;
3212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ENCLOSED_ALPHANUMERICS_ID = 51;
3242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int BOX_DRAWING_ID = 52;
3272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int BLOCK_ELEMENTS_ID = 53;
3302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int GEOMETRIC_SHAPES_ID = 54;
3332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MISCELLANEOUS_SYMBOLS_ID = 55;
3362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int DINGBATS_ID = 56;
3392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int BRAILLE_PATTERNS_ID = 57;
3422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CJK_RADICALS_SUPPLEMENT_ID = 58;
3452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int KANGXI_RADICALS_ID = 59;
3482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int IDEOGRAPHIC_DESCRIPTION_CHARACTERS_ID = 60;
3512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CJK_SYMBOLS_AND_PUNCTUATION_ID = 61;
3542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int HIRAGANA_ID = 62;
3572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int KATAKANA_ID = 63;
3602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int BOPOMOFO_ID = 64;
3632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int HANGUL_COMPATIBILITY_JAMO_ID = 65;
3662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int KANBUN_ID = 66;
3692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int BOPOMOFO_EXTENDED_ID = 67;
3722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ENCLOSED_CJK_LETTERS_AND_MONTHS_ID = 68;
3752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CJK_COMPATIBILITY_ID = 69;
3782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A_ID = 70;
3812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CJK_UNIFIED_IDEOGRAPHS_ID = 71;
3842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int YI_SYLLABLES_ID = 72;
3872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int YI_RADICALS_ID = 73;
3902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int HANGUL_SYLLABLES_ID = 74;
3932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int HIGH_SURROGATES_ID = 75;
3962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int HIGH_PRIVATE_USE_SURROGATES_ID = 76;
3992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LOW_SURROGATES_ID = 77;
4022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Same as public static final int PRIVATE_USE.
4042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Until Unicode 3.1.1; the corresponding block name was "Private Use";
4052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * and multiple code point ranges had this block.
4062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Unicode 3.2 renames the block for the BMP PUA to "Private Use Area"
4072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * and adds separate blocks for the supplementary PUAs.
4082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int PRIVATE_USE_AREA_ID = 78;
4102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Same as public static final int PRIVATE_USE_AREA.
4122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Until Unicode 3.1.1; the corresponding block name was "Private Use";
4132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * and multiple code point ranges had this block.
4142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Unicode 3.2 renames the block for the BMP PUA to "Private Use Area"
4152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * and adds separate blocks for the supplementary PUAs.
4162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int PRIVATE_USE_ID = PRIVATE_USE_AREA_ID;
4182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CJK_COMPATIBILITY_IDEOGRAPHS_ID = 79;
4212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ALPHABETIC_PRESENTATION_FORMS_ID = 80;
4242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ARABIC_PRESENTATION_FORMS_A_ID = 81;
4272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int COMBINING_HALF_MARKS_ID = 82;
4302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CJK_COMPATIBILITY_FORMS_ID = 83;
4332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SMALL_FORM_VARIANTS_ID = 84;
4362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ARABIC_PRESENTATION_FORMS_B_ID = 85;
4392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SPECIALS_ID = 86;
4422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int HALFWIDTH_AND_FULLWIDTH_FORMS_ID = 87;
4452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int OLD_ITALIC_ID = 88;
4482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int GOTHIC_ID = 89;
4512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int DESERET_ID = 90;
4542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int BYZANTINE_MUSICAL_SYMBOLS_ID = 91;
4572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MUSICAL_SYMBOLS_ID = 92;
4602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MATHEMATICAL_ALPHANUMERIC_SYMBOLS_ID = 93;
4632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B_ID = 94;
4662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int
4692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT_ID = 95;
4702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int TAGS_ID = 96;
4732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
4742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // New blocks in Unicode 3.2
4752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
4762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Unicode 4.0.1 renames the "Cyrillic Supplementary" block to "Cyrillic Supplement".
4782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CYRILLIC_SUPPLEMENTARY_ID = 97;
4802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Unicode 4.0.1 renames the "Cyrillic Supplementary" block to "Cyrillic Supplement".
4822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
4842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CYRILLIC_SUPPLEMENT_ID = 97;
4852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int TAGALOG_ID = 98;
4882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int HANUNOO_ID = 99;
4912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int BUHID_ID = 100;
4942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int TAGBANWA_ID = 101;
4972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A_ID = 102;
5002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SUPPLEMENTAL_ARROWS_A_ID = 103;
5032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SUPPLEMENTAL_ARROWS_B_ID = 104;
5062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B_ID = 105;
5092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SUPPLEMENTAL_MATHEMATICAL_OPERATORS_ID = 106;
5122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int KATAKANA_PHONETIC_EXTENSIONS_ID = 107;
5152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int VARIATION_SELECTORS_ID = 108;
5182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SUPPLEMENTARY_PRIVATE_USE_AREA_A_ID = 109;
5212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SUPPLEMENTARY_PRIVATE_USE_AREA_B_ID = 110;
5242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
5252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LIMBU_ID = 111; /*[1900]*/
5282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int TAI_LE_ID = 112; /*[1950]*/
5312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int KHMER_SYMBOLS_ID = 113; /*[19E0]*/
5342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int PHONETIC_EXTENSIONS_ID = 114; /*[1D00]*/
5372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MISCELLANEOUS_SYMBOLS_AND_ARROWS_ID = 115; /*[2B00]*/
5402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int YIJING_HEXAGRAM_SYMBOLS_ID = 116; /*[4DC0]*/
5432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LINEAR_B_SYLLABARY_ID = 117; /*[10000]*/
5462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LINEAR_B_IDEOGRAMS_ID = 118; /*[10080]*/
5492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int AEGEAN_NUMBERS_ID = 119; /*[10100]*/
5522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int UGARITIC_ID = 120; /*[10380]*/
5552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SHAVIAN_ID = 121; /*[10450]*/
5582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int OSMANYA_ID = 122; /*[10480]*/
5612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CYPRIOT_SYLLABARY_ID = 123; /*[10800]*/
5642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int TAI_XUAN_JING_SYMBOLS_ID = 124; /*[1D300]*/
5672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int VARIATION_SELECTORS_SUPPLEMENT_ID = 125; /*[E0100]*/
5702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
5712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /* New blocks in Unicode 4.1 */
5722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
5732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ANCIENT_GREEK_MUSICAL_NOTATION_ID = 126; /*[1D200]*/
5762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
5772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ANCIENT_GREEK_NUMBERS_ID = 127; /*[10140]*/
5802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
5812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ARABIC_SUPPLEMENT_ID = 128; /*[0750]*/
5842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
5852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int BUGINESE_ID = 129; /*[1A00]*/
5882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
5892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CJK_STROKES_ID = 130; /*[31C0]*/
5922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
5932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int COMBINING_DIACRITICAL_MARKS_SUPPLEMENT_ID = 131; /*[1DC0]*/
5962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
5972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int COPTIC_ID = 132; /*[2C80]*/
6002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
6012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ETHIOPIC_EXTENDED_ID = 133; /*[2D80]*/
6042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
6052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ETHIOPIC_SUPPLEMENT_ID = 134; /*[1380]*/
6082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
6092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int GEORGIAN_SUPPLEMENT_ID = 135; /*[2D00]*/
6122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
6132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int GLAGOLITIC_ID = 136; /*[2C00]*/
6162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
6172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int KHAROSHTHI_ID = 137; /*[10A00]*/
6202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
6212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MODIFIER_TONE_LETTERS_ID = 138; /*[A700]*/
6242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
6252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NEW_TAI_LUE_ID = 139; /*[1980]*/
6282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
6292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int OLD_PERSIAN_ID = 140; /*[103A0]*/
6322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
6332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int PHONETIC_EXTENSIONS_SUPPLEMENT_ID = 141; /*[1D80]*/
6362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
6372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SUPPLEMENTAL_PUNCTUATION_ID = 142; /*[2E00]*/
6402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
6412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SYLOTI_NAGRI_ID = 143; /*[A800]*/
6442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
6452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int TIFINAGH_ID = 144; /*[2D30]*/
6482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
6492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int VERTICAL_FORMS_ID = 145; /*[FE10]*/
6522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
6532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /* New blocks in Unicode 5.0 */
6542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
6552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NKO_ID = 146; /*[07C0]*/
6582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int BALINESE_ID = 147; /*[1B00]*/
6612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LATIN_EXTENDED_C_ID = 148; /*[2C60]*/
6642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LATIN_EXTENDED_D_ID = 149; /*[A720]*/
6672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int PHAGS_PA_ID = 150; /*[A840]*/
6702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int PHOENICIAN_ID = 151; /*[10900]*/
6732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CUNEIFORM_ID = 152; /*[12000]*/
6762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CUNEIFORM_NUMBERS_AND_PUNCTUATION_ID = 153; /*[12400]*/
6792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int COUNTING_ROD_NUMERALS_ID = 154; /*[1D360]*/
6822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
6832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SUNDANESE_ID = 155; /* [1B80] */
6862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
6872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LEPCHA_ID = 156; /* [1C00] */
6902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
6912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int OL_CHIKI_ID = 157; /* [1C50] */
6942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
6952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CYRILLIC_EXTENDED_A_ID = 158; /* [2DE0] */
6982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
6992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
7002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
7012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int VAI_ID = 159; /* [A500] */
7022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
7032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
7042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
7052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CYRILLIC_EXTENDED_B_ID = 160; /* [A640] */
7062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
7072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
7082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
7092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SAURASHTRA_ID = 161; /* [A880] */
7102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
7112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
7122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
7132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int KAYAH_LI_ID = 162; /* [A900] */
7142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
7152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
7162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
7172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int REJANG_ID = 163; /* [A930] */
7182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
7192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
7202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
7212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CHAM_ID = 164; /* [AA00] */
7222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
7232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
7242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
7252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ANCIENT_SYMBOLS_ID = 165; /* [10190] */
7262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
7272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
7282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
7292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int PHAISTOS_DISC_ID = 166; /* [101D0] */
7302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
7312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
7322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
7332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LYCIAN_ID = 167; /* [10280] */
7342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
7352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
7362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
7372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CARIAN_ID = 168; /* [102A0] */
7382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
7392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
7402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
7412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LYDIAN_ID = 169; /* [10920] */
7422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
7432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
7442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
7452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MAHJONG_TILES_ID = 170; /* [1F000] */
7462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
7472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
7482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
7492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int DOMINO_TILES_ID = 171; /* [1F030] */
7502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
7512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /* New blocks in Unicode 5.2 */
7522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
7531fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SAMARITAN_ID = 172; /*[0800]*/
7551fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED_ID = 173; /*[18B0]*/
7571fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int TAI_THAM_ID = 174; /*[1A20]*/
7591fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int VEDIC_EXTENSIONS_ID = 175; /*[1CD0]*/
7611fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LISU_ID = 176; /*[A4D0]*/
7631fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int BAMUM_ID = 177; /*[A6A0]*/
7651fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int COMMON_INDIC_NUMBER_FORMS_ID = 178; /*[A830]*/
7671fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int DEVANAGARI_EXTENDED_ID = 179; /*[A8E0]*/
7691fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int HANGUL_JAMO_EXTENDED_A_ID = 180; /*[A960]*/
7711fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int JAVANESE_ID = 181; /*[A980]*/
7731fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MYANMAR_EXTENDED_A_ID = 182; /*[AA60]*/
7751fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int TAI_VIET_ID = 183; /*[AA80]*/
7771fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MEETEI_MAYEK_ID = 184; /*[ABC0]*/
7791fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int HANGUL_JAMO_EXTENDED_B_ID = 185; /*[D7B0]*/
7811fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int IMPERIAL_ARAMAIC_ID = 186; /*[10840]*/
7831fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int OLD_SOUTH_ARABIAN_ID = 187; /*[10A60]*/
7851fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int AVESTAN_ID = 188; /*[10B00]*/
7871fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int INSCRIPTIONAL_PARTHIAN_ID = 189; /*[10B40]*/
7891fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int INSCRIPTIONAL_PAHLAVI_ID = 190; /*[10B60]*/
7911fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int OLD_TURKIC_ID = 191; /*[10C00]*/
7931fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int RUMI_NUMERAL_SYMBOLS_ID = 192; /*[10E60]*/
7951fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int KAITHI_ID = 193; /*[11080]*/
7971fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int EGYPTIAN_HIEROGLYPHS_ID = 194; /*[13000]*/
7991fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ENCLOSED_ALPHANUMERIC_SUPPLEMENT_ID = 195; /*[1F100]*/
8011fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ENCLOSED_IDEOGRAPHIC_SUPPLEMENT_ID = 196; /*[1F200]*/
8031fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C_ID = 197; /*[2A700]*/
8052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
8062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /* New blocks in Unicode 6.0 */
8072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
8081fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANDAIC_ID = 198; /*[0840]*/
8101fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int BATAK_ID = 199; /*[1BC0]*/
8121fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ETHIOPIC_EXTENDED_A_ID = 200; /*[AB00]*/
8141fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int BRAHMI_ID = 201; /*[11000]*/
8161fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int BAMUM_SUPPLEMENT_ID = 202; /*[16800]*/
8181fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int KANA_SUPPLEMENT_ID = 203; /*[1B000]*/
8201fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int PLAYING_CARDS_ID = 204; /*[1F0A0]*/
8221fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS_ID = 205; /*[1F300]*/
8241fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int EMOTICONS_ID = 206; /*[1F600]*/
8261fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int TRANSPORT_AND_MAP_SYMBOLS_ID = 207; /*[1F680]*/
8281fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ALCHEMICAL_SYMBOLS_ID = 208; /*[1F700]*/
8301fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D_ID = 209; /*[2B740]*/
8322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
8332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /* New blocks in Unicode 6.1 */
8342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
8351fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ARABIC_EXTENDED_A_ID = 210; /*[08A0]*/
8371fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS_ID = 211; /*[1EE00]*/
8391fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CHAKMA_ID = 212; /*[11100]*/
8411fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MEETEI_MAYEK_EXTENSIONS_ID = 213; /*[AAE0]*/
8431fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MEROITIC_CURSIVE_ID = 214; /*[109A0]*/
8451fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MEROITIC_HIEROGLYPHS_ID = 215; /*[10980]*/
8471fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MIAO_ID = 216; /*[16F00]*/
8491fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SHARADA_ID = 217; /*[11180]*/
8511fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SORA_SOMPENG_ID = 218; /*[110D0]*/
8531fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SUNDANESE_SUPPLEMENT_ID = 219; /*[1CC0]*/
8551fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int TAKRI_ID = 220; /*[11680]*/
8572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
8582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /* New blocks in Unicode 7.0 */
8592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
8601fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int BASSA_VAH_ID = 221; /*[16AD0]*/
8621fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CAUCASIAN_ALBANIAN_ID = 222; /*[10530]*/
8641fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int COPTIC_EPACT_NUMBERS_ID = 223; /*[102E0]*/
8661fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int COMBINING_DIACRITICAL_MARKS_EXTENDED_ID = 224; /*[1AB0]*/
8681fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int DUPLOYAN_ID = 225; /*[1BC00]*/
8701fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ELBASAN_ID = 226; /*[10500]*/
8721fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int GEOMETRIC_SHAPES_EXTENDED_ID = 227; /*[1F780]*/
8741fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int GRANTHA_ID = 228; /*[11300]*/
8761fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int KHOJKI_ID = 229; /*[11200]*/
8781fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int KHUDAWADI_ID = 230; /*[112B0]*/
8801fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LATIN_EXTENDED_E_ID = 231; /*[AB30]*/
8821fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LINEAR_A_ID = 232; /*[10600]*/
8841fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MAHAJANI_ID = 233; /*[11150]*/
8861fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_ID = 234; /*[10AC0]*/
8881fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MENDE_KIKAKUI_ID = 235; /*[1E800]*/
8901fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MODI_ID = 236; /*[11600]*/
8921fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MRO_ID = 237; /*[16A40]*/
8941fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MYANMAR_EXTENDED_B_ID = 238; /*[A9E0]*/
8961fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NABATAEAN_ID = 239; /*[10880]*/
8981fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int OLD_NORTH_ARABIAN_ID = 240; /*[10A80]*/
9001fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
9012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int OLD_PERMIC_ID = 241; /*[10350]*/
9021fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
9032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ORNAMENTAL_DINGBATS_ID = 242; /*[1F650]*/
9041fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
9052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int PAHAWH_HMONG_ID = 243; /*[16B00]*/
9061fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
9072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int PALMYRENE_ID = 244; /*[10860]*/
9081fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
9092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int PAU_CIN_HAU_ID = 245; /*[11AC0]*/
9101fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
9112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int PSALTER_PAHLAVI_ID = 246; /*[10B80]*/
9121fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
9132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SHORTHAND_FORMAT_CONTROLS_ID = 247; /*[1BCA0]*/
9141fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
9152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SIDDHAM_ID = 248; /*[11580]*/
9161fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
9172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SINHALA_ARCHAIC_NUMBERS_ID = 249; /*[111E0]*/
9181fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
9192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SUPPLEMENTAL_ARROWS_C_ID = 250; /*[1F800]*/
9201fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
9212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int TIRHUTA_ID = 251; /*[11480]*/
9221fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
9232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int WARANG_CITI_ID = 252; /*[118A0]*/
9242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
9252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /* New blocks in Unicode 8.0 */
9262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
9271fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
9282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int AHOM_ID = 253; /*[11700]*/
9291fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
9302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ANATOLIAN_HIEROGLYPHS_ID = 254; /*[14400]*/
9311fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
9322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CHEROKEE_SUPPLEMENT_ID = 255; /*[AB70]*/
9331fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
9342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E_ID = 256; /*[2B820]*/
9351fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
9362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int EARLY_DYNASTIC_CUNEIFORM_ID = 257; /*[12480]*/
9371fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
9382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int HATRAN_ID = 258; /*[108E0]*/
9391fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
9402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MULTANI_ID = 259; /*[11280]*/
9411fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
9422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int OLD_HUNGARIAN_ID = 260; /*[10C80]*/
9431fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
9442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SUPPLEMENTAL_SYMBOLS_AND_PICTOGRAPHS_ID = 261; /*[1F900]*/
9451fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
9462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SUTTON_SIGNWRITING_ID = 262; /*[1D800]*/
9472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
948f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        /* New blocks in Unicode 9.0 */
949f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert
950f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        /***/
951f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        public static final int ADLAM_ID = 263; /*[1E900]*/
952f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        /***/
953f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        public static final int BHAIKSUKI_ID = 264; /*[11C00]*/
954f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        /***/
955f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        public static final int CYRILLIC_EXTENDED_C_ID = 265; /*[1C80]*/
956f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        /***/
957f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        public static final int GLAGOLITIC_SUPPLEMENT_ID = 266; /*[1E000]*/
958f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        /***/
959f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        public static final int IDEOGRAPHIC_SYMBOLS_AND_PUNCTUATION_ID = 267; /*[16FE0]*/
960f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        /***/
961f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        public static final int MARCHEN_ID = 268; /*[11C70]*/
962f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        /***/
963f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        public static final int MONGOLIAN_SUPPLEMENT_ID = 269; /*[11660]*/
964f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        /***/
965f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        public static final int NEWA_ID = 270; /*[11400]*/
966f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        /***/
967f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        public static final int OSAGE_ID = 271; /*[104B0]*/
968f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        /***/
969f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        public static final int TANGUT_ID = 272; /*[17000]*/
970f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        /***/
971f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        public static final int TANGUT_COMPONENTS_ID = 273; /*[18800]*/
972f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert
9732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
974f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         * One more than the highest normal UnicodeBlock value.
975f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         * The highest value is available via UCharacter.getIntPropertyMaxValue(UProperty.BLOCK).
976f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         *
977f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
978ff2b69bcfd12088a375804686b38e0d6bbf141acPaul Duffin         * @hide unsupported on Android
9792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
980f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        @Deprecated
981f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        public static final int COUNT = 274;
9822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
9832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // blocks objects ---------------------------------------------------
9842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
9852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
9862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Array of UnicodeBlocks, for easy access in getInstance(int)
9872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
9882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        private final static UnicodeBlock BLOCKS_[] = new UnicodeBlock[COUNT];
9892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
9902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
9912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
9922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock NO_BLOCK
9932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("NO_BLOCK", 0);
9942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
9952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
9962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
9972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock BASIC_LATIN
9982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("BASIC_LATIN", BASIC_LATIN_ID);
9992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock LATIN_1_SUPPLEMENT
10022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("LATIN_1_SUPPLEMENT", LATIN_1_SUPPLEMENT_ID);
10032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock LATIN_EXTENDED_A
10062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("LATIN_EXTENDED_A", LATIN_EXTENDED_A_ID);
10072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock LATIN_EXTENDED_B
10102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("LATIN_EXTENDED_B", LATIN_EXTENDED_B_ID);
10112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock IPA_EXTENSIONS
10142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("IPA_EXTENSIONS", IPA_EXTENSIONS_ID);
10152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SPACING_MODIFIER_LETTERS
10182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("SPACING_MODIFIER_LETTERS", SPACING_MODIFIER_LETTERS_ID);
10192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock COMBINING_DIACRITICAL_MARKS
10222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("COMBINING_DIACRITICAL_MARKS", COMBINING_DIACRITICAL_MARKS_ID);
10232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Unicode 3.2 renames this block to "Greek and Coptic".
10252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock GREEK
10272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("GREEK", GREEK_ID);
10282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CYRILLIC
10312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("CYRILLIC", CYRILLIC_ID);
10322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ARMENIAN
10352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("ARMENIAN", ARMENIAN_ID);
10362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock HEBREW
10392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("HEBREW", HEBREW_ID);
10402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ARABIC
10432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("ARABIC", ARABIC_ID);
10442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SYRIAC
10472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("SYRIAC", SYRIAC_ID);
10482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock THAANA
10512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("THAANA", THAANA_ID);
10522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock DEVANAGARI
10552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("DEVANAGARI", DEVANAGARI_ID);
10562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock BENGALI
10592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("BENGALI", BENGALI_ID);
10602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock GURMUKHI
10632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("GURMUKHI", GURMUKHI_ID);
10642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock GUJARATI
10672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("GUJARATI", GUJARATI_ID);
10682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ORIYA
10712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("ORIYA", ORIYA_ID);
10722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock TAMIL
10752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("TAMIL", TAMIL_ID);
10762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock TELUGU
10792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("TELUGU", TELUGU_ID);
10802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock KANNADA
10832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("KANNADA", KANNADA_ID);
10842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MALAYALAM
10872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("MALAYALAM", MALAYALAM_ID);
10882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SINHALA
10912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("SINHALA", SINHALA_ID);
10922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock THAI
10952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("THAI", THAI_ID);
10962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock LAO
10992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("LAO", LAO_ID);
11002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock TIBETAN
11032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("TIBETAN", TIBETAN_ID);
11042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MYANMAR
11072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("MYANMAR", MYANMAR_ID);
11082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock GEORGIAN
11112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("GEORGIAN", GEORGIAN_ID);
11122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock HANGUL_JAMO
11152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("HANGUL_JAMO", HANGUL_JAMO_ID);
11162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ETHIOPIC
11192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("ETHIOPIC", ETHIOPIC_ID);
11202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CHEROKEE
11232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("CHEROKEE", CHEROKEE_ID);
11242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS
11272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS",
11282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_ID);
11292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock OGHAM
11322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("OGHAM", OGHAM_ID);
11332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock RUNIC
11362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("RUNIC", RUNIC_ID);
11372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock KHMER
11402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("KHMER", KHMER_ID);
11412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MONGOLIAN
11442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("MONGOLIAN", MONGOLIAN_ID);
11452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock LATIN_EXTENDED_ADDITIONAL
11482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("LATIN_EXTENDED_ADDITIONAL", LATIN_EXTENDED_ADDITIONAL_ID);
11492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock GREEK_EXTENDED
11522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("GREEK_EXTENDED", GREEK_EXTENDED_ID);
11532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock GENERAL_PUNCTUATION
11562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("GENERAL_PUNCTUATION", GENERAL_PUNCTUATION_ID);
11572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SUPERSCRIPTS_AND_SUBSCRIPTS
11602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("SUPERSCRIPTS_AND_SUBSCRIPTS", SUPERSCRIPTS_AND_SUBSCRIPTS_ID);
11612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CURRENCY_SYMBOLS
11642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("CURRENCY_SYMBOLS", CURRENCY_SYMBOLS_ID);
11652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Unicode 3.2 renames this block to "Combining Diacritical Marks for
11672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Symbols".
11682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock COMBINING_MARKS_FOR_SYMBOLS
11702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("COMBINING_MARKS_FOR_SYMBOLS", COMBINING_MARKS_FOR_SYMBOLS_ID);
11712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock LETTERLIKE_SYMBOLS
11742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("LETTERLIKE_SYMBOLS", LETTERLIKE_SYMBOLS_ID);
11752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock NUMBER_FORMS
11782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("NUMBER_FORMS", NUMBER_FORMS_ID);
11792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ARROWS
11822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("ARROWS", ARROWS_ID);
11832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MATHEMATICAL_OPERATORS
11862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("MATHEMATICAL_OPERATORS", MATHEMATICAL_OPERATORS_ID);
11872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MISCELLANEOUS_TECHNICAL
11902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("MISCELLANEOUS_TECHNICAL", MISCELLANEOUS_TECHNICAL_ID);
11912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CONTROL_PICTURES
11942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("CONTROL_PICTURES", CONTROL_PICTURES_ID);
11952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock OPTICAL_CHARACTER_RECOGNITION
11982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("OPTICAL_CHARACTER_RECOGNITION", OPTICAL_CHARACTER_RECOGNITION_ID);
11992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
12012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ENCLOSED_ALPHANUMERICS
12022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("ENCLOSED_ALPHANUMERICS", ENCLOSED_ALPHANUMERICS_ID);
12032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
12052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock BOX_DRAWING
12062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("BOX_DRAWING", BOX_DRAWING_ID);
12072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
12092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock BLOCK_ELEMENTS
12102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("BLOCK_ELEMENTS", BLOCK_ELEMENTS_ID);
12112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
12132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock GEOMETRIC_SHAPES
12142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("GEOMETRIC_SHAPES", GEOMETRIC_SHAPES_ID);
12152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
12172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MISCELLANEOUS_SYMBOLS
12182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("MISCELLANEOUS_SYMBOLS", MISCELLANEOUS_SYMBOLS_ID);
12192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
12212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock DINGBATS
12222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("DINGBATS", DINGBATS_ID);
12232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
12252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock BRAILLE_PATTERNS
12262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("BRAILLE_PATTERNS", BRAILLE_PATTERNS_ID);
12272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
12292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CJK_RADICALS_SUPPLEMENT
12302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("CJK_RADICALS_SUPPLEMENT", CJK_RADICALS_SUPPLEMENT_ID);
12312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
12332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock KANGXI_RADICALS
12342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("KANGXI_RADICALS", KANGXI_RADICALS_ID);
12352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
12372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock IDEOGRAPHIC_DESCRIPTION_CHARACTERS
12382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("IDEOGRAPHIC_DESCRIPTION_CHARACTERS",
12392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                IDEOGRAPHIC_DESCRIPTION_CHARACTERS_ID);
12402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
12422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CJK_SYMBOLS_AND_PUNCTUATION
12432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("CJK_SYMBOLS_AND_PUNCTUATION", CJK_SYMBOLS_AND_PUNCTUATION_ID);
12442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
12462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock HIRAGANA
12472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("HIRAGANA", HIRAGANA_ID);
12482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
12502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock KATAKANA
12512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("KATAKANA", KATAKANA_ID);
12522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
12542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock BOPOMOFO
12552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("BOPOMOFO", BOPOMOFO_ID);
12562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
12582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock HANGUL_COMPATIBILITY_JAMO
12592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("HANGUL_COMPATIBILITY_JAMO", HANGUL_COMPATIBILITY_JAMO_ID);
12602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
12622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock KANBUN
12632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("KANBUN", KANBUN_ID);
12642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
12662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock BOPOMOFO_EXTENDED
12672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("BOPOMOFO_EXTENDED", BOPOMOFO_EXTENDED_ID);
12682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
12702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ENCLOSED_CJK_LETTERS_AND_MONTHS
12712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("ENCLOSED_CJK_LETTERS_AND_MONTHS",
12722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                ENCLOSED_CJK_LETTERS_AND_MONTHS_ID);
12732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
12752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CJK_COMPATIBILITY
12762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("CJK_COMPATIBILITY", CJK_COMPATIBILITY_ID);
12772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
12792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
12802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A",
12812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A_ID);
12822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
12842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS
12852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS", CJK_UNIFIED_IDEOGRAPHS_ID);
12862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
12882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock YI_SYLLABLES
12892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("YI_SYLLABLES", YI_SYLLABLES_ID);
12902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
12922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock YI_RADICALS
12932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("YI_RADICALS", YI_RADICALS_ID);
12942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
12962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock HANGUL_SYLLABLES
12972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("HANGUL_SYLLABLES", HANGUL_SYLLABLES_ID);
12982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
13002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock HIGH_SURROGATES
13012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("HIGH_SURROGATES", HIGH_SURROGATES_ID);
13022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
13032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
13042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock HIGH_PRIVATE_USE_SURROGATES
13052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("HIGH_PRIVATE_USE_SURROGATES", HIGH_PRIVATE_USE_SURROGATES_ID);
13062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
13072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
13082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock LOW_SURROGATES
13092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("LOW_SURROGATES", LOW_SURROGATES_ID);
13102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
13112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Same as public static final int PRIVATE_USE.
13122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Until Unicode 3.1.1; the corresponding block name was "Private Use";
13132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * and multiple code point ranges had this block.
13142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Unicode 3.2 renames the block for the BMP PUA to "Private Use Area"
13152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * and adds separate blocks for the supplementary PUAs.
13162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
13172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock PRIVATE_USE_AREA
13182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("PRIVATE_USE_AREA",  78);
13192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
13202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Same as public static final int PRIVATE_USE_AREA.
13212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Until Unicode 3.1.1; the corresponding block name was "Private Use";
13222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * and multiple code point ranges had this block.
13232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Unicode 3.2 renames the block for the BMP PUA to "Private Use Area"
13242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * and adds separate blocks for the supplementary PUAs.
13252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
13262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock PRIVATE_USE
13272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = PRIVATE_USE_AREA;
13282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
13292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
13302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CJK_COMPATIBILITY_IDEOGRAPHS
13312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("CJK_COMPATIBILITY_IDEOGRAPHS", CJK_COMPATIBILITY_IDEOGRAPHS_ID);
13322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
13332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
13342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ALPHABETIC_PRESENTATION_FORMS
13352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("ALPHABETIC_PRESENTATION_FORMS", ALPHABETIC_PRESENTATION_FORMS_ID);
13362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
13372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
13382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ARABIC_PRESENTATION_FORMS_A
13392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("ARABIC_PRESENTATION_FORMS_A", ARABIC_PRESENTATION_FORMS_A_ID);
13402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
13412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
13422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock COMBINING_HALF_MARKS
13432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("COMBINING_HALF_MARKS", COMBINING_HALF_MARKS_ID);
13442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
13452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
13462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CJK_COMPATIBILITY_FORMS
13472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("CJK_COMPATIBILITY_FORMS", CJK_COMPATIBILITY_FORMS_ID);
13482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
13492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
13502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SMALL_FORM_VARIANTS
13512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("SMALL_FORM_VARIANTS", SMALL_FORM_VARIANTS_ID);
13522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
13532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
13542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ARABIC_PRESENTATION_FORMS_B
13552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("ARABIC_PRESENTATION_FORMS_B", ARABIC_PRESENTATION_FORMS_B_ID);
13562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
13572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
13582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SPECIALS
13592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("SPECIALS", SPECIALS_ID);
13602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
13612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
13622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock HALFWIDTH_AND_FULLWIDTH_FORMS
13632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("HALFWIDTH_AND_FULLWIDTH_FORMS", HALFWIDTH_AND_FULLWIDTH_FORMS_ID);
13642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
13652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
13662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock OLD_ITALIC
13672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("OLD_ITALIC", OLD_ITALIC_ID);
13682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
13692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
13702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock GOTHIC
13712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("GOTHIC", GOTHIC_ID);
13722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
13732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
13742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock DESERET
13752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("DESERET", DESERET_ID);
13762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
13772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
13782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock BYZANTINE_MUSICAL_SYMBOLS
13792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("BYZANTINE_MUSICAL_SYMBOLS", BYZANTINE_MUSICAL_SYMBOLS_ID);
13802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
13812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
13822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MUSICAL_SYMBOLS
13832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("MUSICAL_SYMBOLS", MUSICAL_SYMBOLS_ID);
13842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
13852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
13862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MATHEMATICAL_ALPHANUMERIC_SYMBOLS
13872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("MATHEMATICAL_ALPHANUMERIC_SYMBOLS",
13882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                MATHEMATICAL_ALPHANUMERIC_SYMBOLS_ID);
13892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
13902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
13912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B
13922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B",
13932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B_ID);
13942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
13952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
13962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock
13972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT
13982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT",
13992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT_ID);
14002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
14012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
14022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock TAGS
14032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("TAGS", TAGS_ID);
14042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
14052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // New blocks in Unicode 3.2
14062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
14072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
14082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Unicode 4.0.1 renames the "Cyrillic Supplementary" block to "Cyrillic Supplement".
14092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
14102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CYRILLIC_SUPPLEMENTARY
14112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("CYRILLIC_SUPPLEMENTARY", CYRILLIC_SUPPLEMENTARY_ID);
14122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
14132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Unicode 4.0.1 renames the "Cyrillic Supplementary" block to "Cyrillic Supplement".
14142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
14152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CYRILLIC_SUPPLEMENT
14162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("CYRILLIC_SUPPLEMENT", CYRILLIC_SUPPLEMENT_ID);
14172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
14182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
14192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock TAGALOG
14202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("TAGALOG", TAGALOG_ID);
14212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
14222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
14232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock HANUNOO
14242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("HANUNOO", HANUNOO_ID);
14252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
14262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
14272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock BUHID
14282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("BUHID", BUHID_ID);
14292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
14302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
14312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock TAGBANWA
14322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("TAGBANWA", TAGBANWA_ID);
14332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
14342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
14352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A
14362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A",
14372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A_ID);
14382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
14392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
14402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SUPPLEMENTAL_ARROWS_A
14412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("SUPPLEMENTAL_ARROWS_A", SUPPLEMENTAL_ARROWS_A_ID);
14422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
14432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
14442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SUPPLEMENTAL_ARROWS_B
14452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("SUPPLEMENTAL_ARROWS_B", SUPPLEMENTAL_ARROWS_B_ID);
14462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
14472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
14482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B
14492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B",
14502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B_ID);
14512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
14522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
14532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SUPPLEMENTAL_MATHEMATICAL_OPERATORS
14542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("SUPPLEMENTAL_MATHEMATICAL_OPERATORS",
14552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                SUPPLEMENTAL_MATHEMATICAL_OPERATORS_ID);
14562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
14572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
14582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock KATAKANA_PHONETIC_EXTENSIONS
14592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("KATAKANA_PHONETIC_EXTENSIONS", KATAKANA_PHONETIC_EXTENSIONS_ID);
14602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
14612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
14622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock VARIATION_SELECTORS
14632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("VARIATION_SELECTORS", VARIATION_SELECTORS_ID);
14642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
14652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
14662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SUPPLEMENTARY_PRIVATE_USE_AREA_A
14672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("SUPPLEMENTARY_PRIVATE_USE_AREA_A",
14682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                SUPPLEMENTARY_PRIVATE_USE_AREA_A_ID);
14692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
14702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
14712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SUPPLEMENTARY_PRIVATE_USE_AREA_B
14722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("SUPPLEMENTARY_PRIVATE_USE_AREA_B",
14732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                SUPPLEMENTARY_PRIVATE_USE_AREA_B_ID);
14742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
14752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
14762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
14772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock LIMBU
14782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("LIMBU", LIMBU_ID);
14792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
14802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
14812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock TAI_LE
14822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("TAI_LE", TAI_LE_ID);
14832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
14842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
14852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock KHMER_SYMBOLS
14862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("KHMER_SYMBOLS", KHMER_SYMBOLS_ID);
14872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
14882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
14892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
14902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock PHONETIC_EXTENSIONS
14912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("PHONETIC_EXTENSIONS", PHONETIC_EXTENSIONS_ID);
14922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
14932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
14942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
14952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MISCELLANEOUS_SYMBOLS_AND_ARROWS
14962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("MISCELLANEOUS_SYMBOLS_AND_ARROWS",
14972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                MISCELLANEOUS_SYMBOLS_AND_ARROWS_ID);
14982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
14992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
15002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock YIJING_HEXAGRAM_SYMBOLS
15012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("YIJING_HEXAGRAM_SYMBOLS", YIJING_HEXAGRAM_SYMBOLS_ID);
15022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
15032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
15042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock LINEAR_B_SYLLABARY
15052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("LINEAR_B_SYLLABARY", LINEAR_B_SYLLABARY_ID);
15062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
15072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
15082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock LINEAR_B_IDEOGRAMS
15092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("LINEAR_B_IDEOGRAMS", LINEAR_B_IDEOGRAMS_ID);
15102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
15112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
15122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock AEGEAN_NUMBERS
15132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("AEGEAN_NUMBERS", AEGEAN_NUMBERS_ID);
15142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
15152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
15162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock UGARITIC
15172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("UGARITIC", UGARITIC_ID);
15182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
15192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
15202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SHAVIAN
15212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("SHAVIAN", SHAVIAN_ID);
15222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
15232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
15242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock OSMANYA
15252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("OSMANYA", OSMANYA_ID);
15262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
15272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
15282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CYPRIOT_SYLLABARY
15292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("CYPRIOT_SYLLABARY", CYPRIOT_SYLLABARY_ID);
15302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
15312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
15322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock TAI_XUAN_JING_SYMBOLS
15332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("TAI_XUAN_JING_SYMBOLS", TAI_XUAN_JING_SYMBOLS_ID);
15342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
15352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
15362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
15372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock VARIATION_SELECTORS_SUPPLEMENT
15382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("VARIATION_SELECTORS_SUPPLEMENT", VARIATION_SELECTORS_SUPPLEMENT_ID);
15392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
15402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /* New blocks in Unicode 4.1 */
15412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
15422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
15432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
15442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ANCIENT_GREEK_MUSICAL_NOTATION =
15452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("ANCIENT_GREEK_MUSICAL_NOTATION",
15462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        ANCIENT_GREEK_MUSICAL_NOTATION_ID); /*[1D200]*/
15472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
15482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
15492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
15502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ANCIENT_GREEK_NUMBERS =
15512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("ANCIENT_GREEK_NUMBERS", ANCIENT_GREEK_NUMBERS_ID); /*[10140]*/
15522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
15532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
15542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
15552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ARABIC_SUPPLEMENT =
15562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("ARABIC_SUPPLEMENT", ARABIC_SUPPLEMENT_ID); /*[0750]*/
15572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
15582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
15592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
15602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock BUGINESE =
15612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("BUGINESE", BUGINESE_ID); /*[1A00]*/
15622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
15632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
15642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
15652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CJK_STROKES =
15662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("CJK_STROKES", CJK_STROKES_ID); /*[31C0]*/
15672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
15682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
15692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
15702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock COMBINING_DIACRITICAL_MARKS_SUPPLEMENT =
15712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("COMBINING_DIACRITICAL_MARKS_SUPPLEMENT",
15722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        COMBINING_DIACRITICAL_MARKS_SUPPLEMENT_ID); /*[1DC0]*/
15732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
15742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
15752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
15762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock COPTIC = new UnicodeBlock("COPTIC", COPTIC_ID); /*[2C80]*/
15772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
15782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
15792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
15802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ETHIOPIC_EXTENDED =
15812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("ETHIOPIC_EXTENDED", ETHIOPIC_EXTENDED_ID); /*[2D80]*/
15822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
15832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
15842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
15852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ETHIOPIC_SUPPLEMENT =
15862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("ETHIOPIC_SUPPLEMENT", ETHIOPIC_SUPPLEMENT_ID); /*[1380]*/
15872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
15882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
15892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
15902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock GEORGIAN_SUPPLEMENT =
15912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("GEORGIAN_SUPPLEMENT", GEORGIAN_SUPPLEMENT_ID); /*[2D00]*/
15922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
15932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
15942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
15952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock GLAGOLITIC =
15962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("GLAGOLITIC", GLAGOLITIC_ID); /*[2C00]*/
15972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
15982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
15992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
16002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock KHAROSHTHI =
16012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("KHAROSHTHI", KHAROSHTHI_ID); /*[10A00]*/
16022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
16032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
16042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
16052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MODIFIER_TONE_LETTERS =
16062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("MODIFIER_TONE_LETTERS", MODIFIER_TONE_LETTERS_ID); /*[A700]*/
16072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
16082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
16092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
16102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock NEW_TAI_LUE =
16112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("NEW_TAI_LUE", NEW_TAI_LUE_ID); /*[1980]*/
16122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
16132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
16142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
16152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock OLD_PERSIAN =
16162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("OLD_PERSIAN", OLD_PERSIAN_ID); /*[103A0]*/
16172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
16182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
16192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
16202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock PHONETIC_EXTENSIONS_SUPPLEMENT =
16212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("PHONETIC_EXTENSIONS_SUPPLEMENT",
16222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        PHONETIC_EXTENSIONS_SUPPLEMENT_ID); /*[1D80]*/
16232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
16242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
16252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
16262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SUPPLEMENTAL_PUNCTUATION =
16272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("SUPPLEMENTAL_PUNCTUATION", SUPPLEMENTAL_PUNCTUATION_ID); /*[2E00]*/
16282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
16292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
16302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
16312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SYLOTI_NAGRI =
16322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("SYLOTI_NAGRI", SYLOTI_NAGRI_ID); /*[A800]*/
16332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
16342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
16352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
16362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock TIFINAGH =
16372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("TIFINAGH", TIFINAGH_ID); /*[2D30]*/
16382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
16392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
16402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
16412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock VERTICAL_FORMS =
16422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("VERTICAL_FORMS", VERTICAL_FORMS_ID); /*[FE10]*/
16432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
16442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
16452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
16462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock NKO = new UnicodeBlock("NKO", NKO_ID); /*[07C0]*/
16472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
16482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
16492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock BALINESE =
16502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("BALINESE", BALINESE_ID); /*[1B00]*/
16512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
16522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
16532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock LATIN_EXTENDED_C =
16542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("LATIN_EXTENDED_C", LATIN_EXTENDED_C_ID); /*[2C60]*/
16552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
16562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
16572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock LATIN_EXTENDED_D =
16582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("LATIN_EXTENDED_D", LATIN_EXTENDED_D_ID); /*[A720]*/
16592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
16602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
16612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock PHAGS_PA =
16622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("PHAGS_PA", PHAGS_PA_ID); /*[A840]*/
16632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
16642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
16652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock PHOENICIAN =
16662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("PHOENICIAN", PHOENICIAN_ID); /*[10900]*/
16672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
16682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
16692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CUNEIFORM =
16702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("CUNEIFORM", CUNEIFORM_ID); /*[12000]*/
16712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
16722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
16732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CUNEIFORM_NUMBERS_AND_PUNCTUATION =
16742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("CUNEIFORM_NUMBERS_AND_PUNCTUATION",
16752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        CUNEIFORM_NUMBERS_AND_PUNCTUATION_ID); /*[12400]*/
16762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
16772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
16782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock COUNTING_ROD_NUMERALS =
16792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("COUNTING_ROD_NUMERALS", COUNTING_ROD_NUMERALS_ID); /*[1D360]*/
16802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
16812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
16822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
16832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SUNDANESE =
16842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("SUNDANESE", SUNDANESE_ID); /* [1B80] */
16852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
16862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
16872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
16882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock LEPCHA =
16892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("LEPCHA", LEPCHA_ID); /* [1C00] */
16902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
16912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
16922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
16932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock OL_CHIKI =
16942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("OL_CHIKI", OL_CHIKI_ID); /* [1C50] */
16952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
16962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
16972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
16982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CYRILLIC_EXTENDED_A =
16992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("CYRILLIC_EXTENDED_A", CYRILLIC_EXTENDED_A_ID); /* [2DE0] */
17002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
17012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
17022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
17032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock VAI = new UnicodeBlock("VAI", VAI_ID); /* [A500] */
17042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
17052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
17062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
17072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CYRILLIC_EXTENDED_B =
17082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("CYRILLIC_EXTENDED_B", CYRILLIC_EXTENDED_B_ID); /* [A640] */
17092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
17102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
17112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
17122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SAURASHTRA =
17132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("SAURASHTRA", SAURASHTRA_ID); /* [A880] */
17142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
17152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
17162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
17172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock KAYAH_LI =
17182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("KAYAH_LI", KAYAH_LI_ID); /* [A900] */
17192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
17202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
17212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
17222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock REJANG =
17232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("REJANG", REJANG_ID); /* [A930] */
17242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
17252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
17262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
17272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CHAM =
17282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("CHAM", CHAM_ID); /* [AA00] */
17292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
17302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
17312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
17322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ANCIENT_SYMBOLS =
17332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("ANCIENT_SYMBOLS", ANCIENT_SYMBOLS_ID); /* [10190] */
17342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
17352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
17362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
17372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock PHAISTOS_DISC =
17382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("PHAISTOS_DISC", PHAISTOS_DISC_ID); /* [101D0] */
17392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
17402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
17412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
17422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock LYCIAN =
17432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("LYCIAN", LYCIAN_ID); /* [10280] */
17442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
17452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
17462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
17472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CARIAN =
17482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("CARIAN", CARIAN_ID); /* [102A0] */
17492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
17502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
17512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
17522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock LYDIAN =
17532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("LYDIAN", LYDIAN_ID); /* [10920] */
17542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
17552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
17562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
17572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MAHJONG_TILES =
17582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("MAHJONG_TILES", MAHJONG_TILES_ID); /* [1F000] */
17592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
17602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
17612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
17622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock DOMINO_TILES =
17632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("DOMINO_TILES", DOMINO_TILES_ID); /* [1F030] */
17642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
17652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /* New blocks in Unicode 5.2 */
17662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
17671fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
17682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SAMARITAN =
17692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("SAMARITAN", SAMARITAN_ID); /*[0800]*/
17701fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
17712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED =
17722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED",
17732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED_ID); /*[18B0]*/
17741fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
17752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock TAI_THAM =
17762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("TAI_THAM", TAI_THAM_ID); /*[1A20]*/
17771fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
17782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock VEDIC_EXTENSIONS =
17792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("VEDIC_EXTENSIONS", VEDIC_EXTENSIONS_ID); /*[1CD0]*/
17801fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
17812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock LISU =
17822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("LISU", LISU_ID); /*[A4D0]*/
17831fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
17842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock BAMUM =
17852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("BAMUM", BAMUM_ID); /*[A6A0]*/
17861fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
17872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock COMMON_INDIC_NUMBER_FORMS =
17882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("COMMON_INDIC_NUMBER_FORMS", COMMON_INDIC_NUMBER_FORMS_ID); /*[A830]*/
17891fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
17902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock DEVANAGARI_EXTENDED =
17912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("DEVANAGARI_EXTENDED", DEVANAGARI_EXTENDED_ID); /*[A8E0]*/
17921fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
17932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock HANGUL_JAMO_EXTENDED_A =
17942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("HANGUL_JAMO_EXTENDED_A", HANGUL_JAMO_EXTENDED_A_ID); /*[A960]*/
17951fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
17962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock JAVANESE =
17972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("JAVANESE", JAVANESE_ID); /*[A980]*/
17981fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
17992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MYANMAR_EXTENDED_A =
18002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("MYANMAR_EXTENDED_A", MYANMAR_EXTENDED_A_ID); /*[AA60]*/
18011fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock TAI_VIET =
18032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("TAI_VIET", TAI_VIET_ID); /*[AA80]*/
18041fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MEETEI_MAYEK =
18062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("MEETEI_MAYEK", MEETEI_MAYEK_ID); /*[ABC0]*/
18071fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock HANGUL_JAMO_EXTENDED_B =
18092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("HANGUL_JAMO_EXTENDED_B", HANGUL_JAMO_EXTENDED_B_ID); /*[D7B0]*/
18101fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock IMPERIAL_ARAMAIC =
18122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("IMPERIAL_ARAMAIC", IMPERIAL_ARAMAIC_ID); /*[10840]*/
18131fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock OLD_SOUTH_ARABIAN =
18152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("OLD_SOUTH_ARABIAN", OLD_SOUTH_ARABIAN_ID); /*[10A60]*/
18161fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock AVESTAN =
18182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("AVESTAN", AVESTAN_ID); /*[10B00]*/
18191fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock INSCRIPTIONAL_PARTHIAN =
18212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("INSCRIPTIONAL_PARTHIAN", INSCRIPTIONAL_PARTHIAN_ID); /*[10B40]*/
18221fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock INSCRIPTIONAL_PAHLAVI =
18242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("INSCRIPTIONAL_PAHLAVI", INSCRIPTIONAL_PAHLAVI_ID); /*[10B60]*/
18251fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock OLD_TURKIC =
18272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("OLD_TURKIC", OLD_TURKIC_ID); /*[10C00]*/
18281fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock RUMI_NUMERAL_SYMBOLS =
18302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("RUMI_NUMERAL_SYMBOLS", RUMI_NUMERAL_SYMBOLS_ID); /*[10E60]*/
18311fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock KAITHI =
18332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("KAITHI", KAITHI_ID); /*[11080]*/
18341fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock EGYPTIAN_HIEROGLYPHS =
18362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("EGYPTIAN_HIEROGLYPHS", EGYPTIAN_HIEROGLYPHS_ID); /*[13000]*/
18371fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ENCLOSED_ALPHANUMERIC_SUPPLEMENT =
18392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("ENCLOSED_ALPHANUMERIC_SUPPLEMENT",
18402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        ENCLOSED_ALPHANUMERIC_SUPPLEMENT_ID); /*[1F100]*/
18411fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ENCLOSED_IDEOGRAPHIC_SUPPLEMENT =
18432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("ENCLOSED_IDEOGRAPHIC_SUPPLEMENT",
18442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        ENCLOSED_IDEOGRAPHIC_SUPPLEMENT_ID); /*[1F200]*/
18451fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C =
18472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C",
18482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C_ID); /*[2A700]*/
18492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
18502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /* New blocks in Unicode 6.0 */
18512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
18521fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MANDAIC =
18542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("MANDAIC", MANDAIC_ID); /*[0840]*/
18551fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock BATAK =
18572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("BATAK", BATAK_ID); /*[1BC0]*/
18581fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ETHIOPIC_EXTENDED_A =
18602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("ETHIOPIC_EXTENDED_A", ETHIOPIC_EXTENDED_A_ID); /*[AB00]*/
18611fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock BRAHMI =
18632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("BRAHMI", BRAHMI_ID); /*[11000]*/
18641fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock BAMUM_SUPPLEMENT =
18662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("BAMUM_SUPPLEMENT", BAMUM_SUPPLEMENT_ID); /*[16800]*/
18671fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock KANA_SUPPLEMENT =
18692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("KANA_SUPPLEMENT", KANA_SUPPLEMENT_ID); /*[1B000]*/
18701fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock PLAYING_CARDS =
18722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("PLAYING_CARDS", PLAYING_CARDS_ID); /*[1F0A0]*/
18731fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS =
18752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS",
18762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS_ID); /*[1F300]*/
18771fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock EMOTICONS =
18792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("EMOTICONS", EMOTICONS_ID); /*[1F600]*/
18801fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock TRANSPORT_AND_MAP_SYMBOLS =
18822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("TRANSPORT_AND_MAP_SYMBOLS", TRANSPORT_AND_MAP_SYMBOLS_ID); /*[1F680]*/
18831fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ALCHEMICAL_SYMBOLS =
18852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("ALCHEMICAL_SYMBOLS", ALCHEMICAL_SYMBOLS_ID); /*[1F700]*/
18861fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D =
18882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D",
18892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D_ID); /*[2B740]*/
18902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
18912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /* New blocks in Unicode 6.1 */
18922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
18931fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ARABIC_EXTENDED_A =
18952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("ARABIC_EXTENDED_A", ARABIC_EXTENDED_A_ID); /*[08A0]*/
18961fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS =
18982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS", ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS_ID); /*[1EE00]*/
18991fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CHAKMA = new UnicodeBlock("CHAKMA", CHAKMA_ID); /*[11100]*/
19011fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MEETEI_MAYEK_EXTENSIONS =
19032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("MEETEI_MAYEK_EXTENSIONS", MEETEI_MAYEK_EXTENSIONS_ID); /*[AAE0]*/
19041fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MEROITIC_CURSIVE =
19062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("MEROITIC_CURSIVE", MEROITIC_CURSIVE_ID); /*[109A0]*/
19071fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MEROITIC_HIEROGLYPHS =
19092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("MEROITIC_HIEROGLYPHS", MEROITIC_HIEROGLYPHS_ID); /*[10980]*/
19101fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MIAO = new UnicodeBlock("MIAO", MIAO_ID); /*[16F00]*/
19121fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SHARADA = new UnicodeBlock("SHARADA", SHARADA_ID); /*[11180]*/
19141fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SORA_SOMPENG =
19162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("SORA_SOMPENG", SORA_SOMPENG_ID); /*[110D0]*/
19171fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SUNDANESE_SUPPLEMENT =
19192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("SUNDANESE_SUPPLEMENT", SUNDANESE_SUPPLEMENT_ID); /*[1CC0]*/
19201fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock TAKRI = new UnicodeBlock("TAKRI", TAKRI_ID); /*[11680]*/
19222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
19232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /* New blocks in Unicode 7.0 */
19242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
19251fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock BASSA_VAH = new UnicodeBlock("BASSA_VAH", BASSA_VAH_ID); /*[16AD0]*/
19271fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CAUCASIAN_ALBANIAN =
19292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("CAUCASIAN_ALBANIAN", CAUCASIAN_ALBANIAN_ID); /*[10530]*/
19301fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock COPTIC_EPACT_NUMBERS =
19322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("COPTIC_EPACT_NUMBERS", COPTIC_EPACT_NUMBERS_ID); /*[102E0]*/
19331fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock COMBINING_DIACRITICAL_MARKS_EXTENDED =
19352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("COMBINING_DIACRITICAL_MARKS_EXTENDED", COMBINING_DIACRITICAL_MARKS_EXTENDED_ID); /*[1AB0]*/
19361fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock DUPLOYAN = new UnicodeBlock("DUPLOYAN", DUPLOYAN_ID); /*[1BC00]*/
19381fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ELBASAN = new UnicodeBlock("ELBASAN", ELBASAN_ID); /*[10500]*/
19401fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock GEOMETRIC_SHAPES_EXTENDED =
19422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("GEOMETRIC_SHAPES_EXTENDED", GEOMETRIC_SHAPES_EXTENDED_ID); /*[1F780]*/
19431fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock GRANTHA = new UnicodeBlock("GRANTHA", GRANTHA_ID); /*[11300]*/
19451fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock KHOJKI = new UnicodeBlock("KHOJKI", KHOJKI_ID); /*[11200]*/
19471fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock KHUDAWADI = new UnicodeBlock("KHUDAWADI", KHUDAWADI_ID); /*[112B0]*/
19491fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock LATIN_EXTENDED_E =
19512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("LATIN_EXTENDED_E", LATIN_EXTENDED_E_ID); /*[AB30]*/
19521fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock LINEAR_A = new UnicodeBlock("LINEAR_A", LINEAR_A_ID); /*[10600]*/
19541fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MAHAJANI = new UnicodeBlock("MAHAJANI", MAHAJANI_ID); /*[11150]*/
19561fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MANICHAEAN = new UnicodeBlock("MANICHAEAN", MANICHAEAN_ID); /*[10AC0]*/
19581fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MENDE_KIKAKUI =
19602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("MENDE_KIKAKUI", MENDE_KIKAKUI_ID); /*[1E800]*/
19611fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MODI = new UnicodeBlock("MODI", MODI_ID); /*[11600]*/
19631fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MRO = new UnicodeBlock("MRO", MRO_ID); /*[16A40]*/
19651fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MYANMAR_EXTENDED_B =
19672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("MYANMAR_EXTENDED_B", MYANMAR_EXTENDED_B_ID); /*[A9E0]*/
19681fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock NABATAEAN = new UnicodeBlock("NABATAEAN", NABATAEAN_ID); /*[10880]*/
19701fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock OLD_NORTH_ARABIAN =
19722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("OLD_NORTH_ARABIAN", OLD_NORTH_ARABIAN_ID); /*[10A80]*/
19731fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock OLD_PERMIC = new UnicodeBlock("OLD_PERMIC", OLD_PERMIC_ID); /*[10350]*/
19751fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ORNAMENTAL_DINGBATS =
19772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("ORNAMENTAL_DINGBATS", ORNAMENTAL_DINGBATS_ID); /*[1F650]*/
19781fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock PAHAWH_HMONG = new UnicodeBlock("PAHAWH_HMONG", PAHAWH_HMONG_ID); /*[16B00]*/
19801fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock PALMYRENE = new UnicodeBlock("PALMYRENE", PALMYRENE_ID); /*[10860]*/
19821fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock PAU_CIN_HAU = new UnicodeBlock("PAU_CIN_HAU", PAU_CIN_HAU_ID); /*[11AC0]*/
19841fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock PSALTER_PAHLAVI =
19862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("PSALTER_PAHLAVI", PSALTER_PAHLAVI_ID); /*[10B80]*/
19871fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SHORTHAND_FORMAT_CONTROLS =
19892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("SHORTHAND_FORMAT_CONTROLS", SHORTHAND_FORMAT_CONTROLS_ID); /*[1BCA0]*/
19901fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SIDDHAM = new UnicodeBlock("SIDDHAM", SIDDHAM_ID); /*[11580]*/
19921fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SINHALA_ARCHAIC_NUMBERS =
19942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("SINHALA_ARCHAIC_NUMBERS", SINHALA_ARCHAIC_NUMBERS_ID); /*[111E0]*/
19951fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SUPPLEMENTAL_ARROWS_C =
19972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("SUPPLEMENTAL_ARROWS_C", SUPPLEMENTAL_ARROWS_C_ID); /*[1F800]*/
19981fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock TIRHUTA = new UnicodeBlock("TIRHUTA", TIRHUTA_ID); /*[11480]*/
20001fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
20012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock WARANG_CITI = new UnicodeBlock("WARANG_CITI", WARANG_CITI_ID); /*[118A0]*/
20022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
20032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /* New blocks in Unicode 8.0 */
20042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
20051fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
20062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock AHOM = new UnicodeBlock("AHOM", AHOM_ID); /*[11700]*/
20071fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
20082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ANATOLIAN_HIEROGLYPHS =
20092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("ANATOLIAN_HIEROGLYPHS", ANATOLIAN_HIEROGLYPHS_ID); /*[14400]*/
20101fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
20112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CHEROKEE_SUPPLEMENT =
20122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("CHEROKEE_SUPPLEMENT", CHEROKEE_SUPPLEMENT_ID); /*[AB70]*/
20131fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
20142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E =
20152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E",
20162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E_ID); /*[2B820]*/
20171fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
20182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock EARLY_DYNASTIC_CUNEIFORM =
20192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("EARLY_DYNASTIC_CUNEIFORM", EARLY_DYNASTIC_CUNEIFORM_ID); /*[12480]*/
20201fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
20212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock HATRAN = new UnicodeBlock("HATRAN", HATRAN_ID); /*[108E0]*/
20221fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
20232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MULTANI = new UnicodeBlock("MULTANI", MULTANI_ID); /*[11280]*/
20241fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
20252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock OLD_HUNGARIAN =
20262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("OLD_HUNGARIAN", OLD_HUNGARIAN_ID); /*[10C80]*/
20271fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
20282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SUPPLEMENTAL_SYMBOLS_AND_PICTOGRAPHS =
20292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("SUPPLEMENTAL_SYMBOLS_AND_PICTOGRAPHS",
20302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        SUPPLEMENTAL_SYMBOLS_AND_PICTOGRAPHS_ID); /*[1F900]*/
20311fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
20322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SUTTON_SIGNWRITING =
20332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("SUTTON_SIGNWRITING", SUTTON_SIGNWRITING_ID); /*[1D800]*/
20342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
2035f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        /* New blocks in Unicode 9.0 */
2036f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert
2037f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        /***/
2038f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        public static final UnicodeBlock ADLAM = new UnicodeBlock("ADLAM", ADLAM_ID); /*[1E900]*/
2039f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        /***/
2040f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        public static final UnicodeBlock BHAIKSUKI = new UnicodeBlock("BHAIKSUKI", BHAIKSUKI_ID); /*[11C00]*/
2041f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        /***/
2042f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        public static final UnicodeBlock CYRILLIC_EXTENDED_C =
2043f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert                new UnicodeBlock("CYRILLIC_EXTENDED_C", CYRILLIC_EXTENDED_C_ID); /*[1C80]*/
2044f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        /***/
2045f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        public static final UnicodeBlock GLAGOLITIC_SUPPLEMENT =
2046f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert                new UnicodeBlock("GLAGOLITIC_SUPPLEMENT", GLAGOLITIC_SUPPLEMENT_ID); /*[1E000]*/
2047f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        /***/
2048f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        public static final UnicodeBlock IDEOGRAPHIC_SYMBOLS_AND_PUNCTUATION =
2049f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert                new UnicodeBlock("IDEOGRAPHIC_SYMBOLS_AND_PUNCTUATION", IDEOGRAPHIC_SYMBOLS_AND_PUNCTUATION_ID); /*[16FE0]*/
2050f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        /***/
2051f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        public static final UnicodeBlock MARCHEN = new UnicodeBlock("MARCHEN", MARCHEN_ID); /*[11C70]*/
2052f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        /***/
2053f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        public static final UnicodeBlock MONGOLIAN_SUPPLEMENT =
2054f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert                new UnicodeBlock("MONGOLIAN_SUPPLEMENT", MONGOLIAN_SUPPLEMENT_ID); /*[11660]*/
2055f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        /***/
2056f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        public static final UnicodeBlock NEWA = new UnicodeBlock("NEWA", NEWA_ID); /*[11400]*/
2057f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        /***/
2058f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        public static final UnicodeBlock OSAGE = new UnicodeBlock("OSAGE", OSAGE_ID); /*[104B0]*/
2059f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        /***/
2060f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        public static final UnicodeBlock TANGUT = new UnicodeBlock("TANGUT", TANGUT_ID); /*[17000]*/
2061f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        /***/
2062f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        public static final UnicodeBlock TANGUT_COMPONENTS =
2063f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert                new UnicodeBlock("TANGUT_COMPONENTS", TANGUT_COMPONENTS_ID); /*[18800]*/
2064f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert
20652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
20662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
20672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock INVALID_CODE
20682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("INVALID_CODE", INVALID_CODE_ID);
20692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
20702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        static {
20712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            for (int blockId = 0; blockId < COUNT; ++blockId) {
20722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                if (BLOCKS_[blockId] == null) {
20732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    throw new java.lang.IllegalStateException(
20742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                            "UnicodeBlock.BLOCKS_[" + blockId + "] not initialized");
20752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                }
20762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
20772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
20782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
20792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // public methods --------------------------------------------------
20802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
20812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
20821537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller         * <strong>[icu]</strong> Returns the only instance of the UnicodeBlock with the argument ID.
20832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * If no such ID exists, a INVALID_CODE UnicodeBlock will be returned.
20842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * @param id UnicodeBlock ID
20852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * @return the only instance of the UnicodeBlock with the argument ID
20862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         *         if it exists, otherwise a INVALID_CODE UnicodeBlock will be
20872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         *         returned.
20882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
20892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static UnicodeBlock getInstance(int id)
20902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        {
20912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if (id >= 0 && id < BLOCKS_.length) {
20922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                return BLOCKS_[id];
20932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
20942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return INVALID_CODE;
20952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
20962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
20972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
20982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Returns the Unicode allocation block that contains the code point,
20992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * or null if the code point is not a member of a defined block.
21002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * @param ch code point to be tested
21012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * @return the Unicode allocation block that contains the code point
21022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
21032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static UnicodeBlock of(int ch)
21042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        {
21052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if (ch > MAX_VALUE) {
21062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                return INVALID_CODE;
21072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
21082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
21092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return UnicodeBlock.getInstance(
21102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    UCharacterProperty.INSTANCE.getIntPropertyValue(ch, UProperty.BLOCK));
21112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
21122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
21132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
21147241d93e30f4c7c527c019cd6ca3a791ca22d9b2Fredrik Roubert         * Alternative to the {@link java.lang.Character.UnicodeBlock#forName(String)} method.
21157241d93e30f4c7c527c019cd6ca3a791ca22d9b2Fredrik Roubert         * Returns the Unicode block with the given name. <strong>[icu] Note:</strong> Unlike
21167241d93e30f4c7c527c019cd6ca3a791ca22d9b2Fredrik Roubert         * {@link java.lang.Character.UnicodeBlock#forName(String)}, this only matches
21172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * against the official UCD name and the Java block name
21182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * (ignoring case).
21192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * @param blockName the name of the block to match
21202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * @return the UnicodeBlock with that name
21212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * @throws IllegalArgumentException if the blockName could not be matched
21222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
21232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock forName(String blockName) {
21242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            Map<String, UnicodeBlock> m = null;
21252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if (mref != null) {
21262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                m = mref.get();
21272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
21282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if (m == null) {
21292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                m = new HashMap<String, UnicodeBlock>(BLOCKS_.length);
21302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                for (int i = 0; i < BLOCKS_.length; ++i) {
21312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    UnicodeBlock b = BLOCKS_[i];
21322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    String name = trimBlockName(
21332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                            getPropertyValueName(UProperty.BLOCK, b.getID(),
21342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                                    UProperty.NameChoice.LONG));
21352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    m.put(name, b);
21362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                }
21372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                mref = new SoftReference<Map<String, UnicodeBlock>>(m);
21382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
21392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            UnicodeBlock b = m.get(trimBlockName(blockName));
21402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if (b == null) {
21412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                throw new IllegalArgumentException();
21422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
21432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return b;
21442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
21452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        private static SoftReference<Map<String, UnicodeBlock>> mref;
21462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
21472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        private static String trimBlockName(String name) {
21482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            String upper = name.toUpperCase(Locale.ENGLISH);
21492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            StringBuilder result = new StringBuilder(upper.length());
21502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            for (int i = 0; i < upper.length(); i++) {
21512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                char c = upper.charAt(i);
21522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                if (c != ' ' && c != '_' && c != '-') {
21532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    result.append(c);
21542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                }
21552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
21562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return result.toString();
21572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
21582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
21592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
21602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * {icu} Returns the type ID of this Unicode block
21612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * @return integer type ID of this Unicode block
21622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
21632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public int getID()
21642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        {
21652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return m_id_;
21662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
21672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
21682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // private data members ---------------------------------------------
21692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
21702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
21712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Identification code for this UnicodeBlock
21722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
21732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        private int m_id_;
21742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
21752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // private constructor ----------------------------------------------
21762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
21772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
21782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * UnicodeBlock constructor
21792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * @param name name of this UnicodeBlock
21802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * @param id unique id of this UnicodeBlock
21812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * @exception NullPointerException if name is <code>null</code>
21822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
21832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        private UnicodeBlock(String name, int id)
21842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        {
21852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            super(name);
21862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            m_id_ = id;
21872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if (id >= 0) {
21882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                BLOCKS_[id] = this;
21892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
21902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
21912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
21922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
21932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
21942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * East Asian Width constants.
21952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see UProperty#EAST_ASIAN_WIDTH
21962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see UCharacter#getIntPropertyValue
21972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
21982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static interface EastAsianWidth
21992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
22002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NEUTRAL = 0;
22032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int AMBIGUOUS = 1;
22062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int HALFWIDTH = 2;
22092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int FULLWIDTH = 3;
22122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NARROW = 4;
22152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int WIDE = 5;
22182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2219f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         * One more than the highest normal EastAsianWidth value.
2220f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         * The highest value is available via UCharacter.getIntPropertyMaxValue(UProperty.EAST_ASIAN_WIDTH).
2221f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         *
2222f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
2223ff2b69bcfd12088a375804686b38e0d6bbf141acPaul Duffin         * @hide unsupported on Android
22242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2225f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        @Deprecated
22262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int COUNT = 6;
22272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
22282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
22292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
22302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Decomposition Type constants.
22312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see UProperty#DECOMPOSITION_TYPE
22322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
22332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static interface DecompositionType
22342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
22352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NONE = 0;
22382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CANONICAL = 1;
22412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int COMPAT = 2;
22442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CIRCLE = 3;
22472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int FINAL = 4;
22502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int FONT = 5;
22532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int FRACTION = 6;
22562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int INITIAL = 7;
22592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ISOLATED = 8;
22622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MEDIAL = 9;
22652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NARROW = 10;
22682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NOBREAK = 11;
22712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SMALL = 12;
22742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SQUARE = 13;
22772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SUB = 14;
22802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SUPER = 15;
22832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int VERTICAL = 16;
22862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int WIDE = 17;
22892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2290f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         * One more than the highest normal DecompositionType value.
2291f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         * The highest value is available via UCharacter.getIntPropertyMaxValue(UProperty.DECOMPOSITION_TYPE).
2292f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         *
2293f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
2294ff2b69bcfd12088a375804686b38e0d6bbf141acPaul Duffin         * @hide unsupported on Android
22952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2296f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        @Deprecated
22972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int COUNT = 18;
22982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
22992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
23002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
23012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Joining Type constants.
23022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see UProperty#JOINING_TYPE
23032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
23042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static interface JoiningType
23052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
23062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NON_JOINING = 0;
23092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int JOIN_CAUSING = 1;
23122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int DUAL_JOINING = 2;
23152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LEFT_JOINING = 3;
23182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int RIGHT_JOINING = 4;
23212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int TRANSPARENT = 5;
23242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2325f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         * One more than the highest normal JoiningType value.
2326f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         * The highest value is available via UCharacter.getIntPropertyMaxValue(UProperty.JOINING_TYPE).
2327f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         *
2328f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
2329ff2b69bcfd12088a375804686b38e0d6bbf141acPaul Duffin         * @hide unsupported on Android
23302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2331f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        @Deprecated
23322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int COUNT = 6;
23332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
23342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
23352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
23362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Joining Group constants.
23372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see UProperty#JOINING_GROUP
23382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
23392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static interface JoiningGroup
23402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
23412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NO_JOINING_GROUP = 0;
23442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int AIN = 1;
23472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ALAPH = 2;
23502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ALEF = 3;
23532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int BEH = 4;
23562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int BETH = 5;
23592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int DAL = 6;
23622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int DALATH_RISH = 7;
23652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int E = 8;
23682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int FEH = 9;
23712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int FINAL_SEMKATH = 10;
23742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int GAF = 11;
23772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int GAMAL = 12;
23802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int HAH = 13;
23831fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
23842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int TEH_MARBUTA_GOAL = 14;
23852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int HAMZA_ON_HEH_GOAL = TEH_MARBUTA_GOAL;
23882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int HE = 15;
23912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int HEH = 16;
23942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int HEH_GOAL = 17;
23972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int HETH = 18;
24002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
24012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
24022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int KAF = 19;
24032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
24042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
24052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int KAPH = 20;
24062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
24072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
24082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int KNOTTED_HEH = 21;
24092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
24102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
24112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LAM = 22;
24122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
24132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
24142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LAMADH = 23;
24152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
24162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
24172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MEEM = 24;
24182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
24192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
24202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MIM = 25;
24212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
24222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
24232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NOON = 26;
24242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
24252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
24262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NUN = 27;
24272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
24282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
24292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int PE = 28;
24302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
24312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
24322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int QAF = 29;
24332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
24342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
24352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int QAPH = 30;
24362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
24372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
24382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int REH = 31;
24392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
24402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
24412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int REVERSED_PE = 32;
24422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
24432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
24442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SAD = 33;
24452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
24462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
24472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SADHE = 34;
24482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
24492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
24502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SEEN = 35;
24512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
24522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
24532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SEMKATH = 36;
24542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
24552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
24562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SHIN = 37;
24572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
24582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
24592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SWASH_KAF = 38;
24602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
24612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
24622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SYRIAC_WAW = 39;
24632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
24642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
24652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int TAH = 40;
24662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
24672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
24682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int TAW = 41;
24692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
24702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
24712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int TEH_MARBUTA = 42;
24722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
24732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
24742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int TETH = 43;
24752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
24762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
24772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int WAW = 44;
24782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
24792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
24802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int YEH = 45;
24812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
24822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
24832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int YEH_BARREE = 46;
24842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
24852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
24862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int YEH_WITH_TAIL = 47;
24872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
24882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
24892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int YUDH = 48;
24902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
24912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
24922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int YUDH_HE = 49;
24932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
24942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
24952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ZAIN = 50;
24962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
24972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
24982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int FE = 51;
24992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
25002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
25012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int KHAPH = 52;
25022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
25032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
25042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ZHAIN = 53;
25052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
25062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
25072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int BURUSHASKI_YEH_BARREE = 54;
25081fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
25092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int FARSI_YEH = 55;
25101fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
25112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NYA = 56;
25121fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
25132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ROHINGYA_YEH = 57;
25142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
25151fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
25162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_ALEPH = 58;
25171fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
25182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_AYIN = 59;
25191fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
25202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_BETH = 60;
25211fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
25222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_DALETH = 61;
25231fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
25242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_DHAMEDH = 62;
25251fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
25262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_FIVE = 63;
25271fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
25282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_GIMEL = 64;
25291fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
25302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_HETH = 65;
25311fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
25322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_HUNDRED = 66;
25331fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
25342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_KAPH = 67;
25351fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
25362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_LAMEDH = 68;
25371fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
25382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_MEM = 69;
25391fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
25402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_NUN = 70;
25411fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
25422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_ONE = 71;
25431fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
25442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_PE = 72;
25451fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
25462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_QOPH = 73;
25471fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
25482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_RESH = 74;
25491fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
25502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_SADHE = 75;
25511fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
25522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_SAMEKH = 76;
25531fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
25542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_TAW = 77;
25551fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
25562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_TEN = 78;
25571fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
25582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_TETH = 79;
25591fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
25602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_THAMEDH = 80;
25611fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
25622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_TWENTY = 81;
25631fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
25642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_WAW = 82;
25651fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
25662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_YODH = 83;
25671fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
25682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_ZAYIN = 84;
25691fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
25702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int STRAIGHT_WAW = 85;
25712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
2572f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        /***/
2573f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        public static final int AFRICAN_FEH = 86;
2574f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        /***/
2575f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        public static final int AFRICAN_NOON = 87;
2576f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        /***/
2577f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        public static final int AFRICAN_QAF = 88;
2578f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert
25792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2580f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         * One more than the highest normal JoiningGroup value.
2581f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         * The highest value is available via UCharacter.getIntPropertyMaxValue(UProperty.JoiningGroup).
2582f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         *
2583f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
2584ff2b69bcfd12088a375804686b38e0d6bbf141acPaul Duffin         * @hide unsupported on Android
25852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2586f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        @Deprecated
2587f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        public static final int COUNT = 89;
25882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
25892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
25902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
25912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Grapheme Cluster Break constants.
25922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see UProperty#GRAPHEME_CLUSTER_BREAK
25932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
25942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static interface GraphemeClusterBreak {
25952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
25962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
25972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int OTHER = 0;
25982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
25992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CONTROL = 1;
26012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CR = 2;
26042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int EXTEND = 3;
26072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int L = 4;
26102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LF = 5;
26132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LV = 6;
26162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LVT = 7;
26192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int T = 8;
26222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int V = 9;
26252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SPACING_MARK = 10;
26282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int PREPEND = 11;
26311fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
26322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int REGIONAL_INDICATOR = 12;  /*[RI]*/ /* new in Unicode 6.2/ICU 50 */
2633f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        /***/
2634f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        public static final int E_BASE = 13;          /*[EB]*/ /* from here on: new in Unicode 9.0/ICU 58 */
2635f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        /***/
2636f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        public static final int E_BASE_GAZ = 14;      /*[EBG]*/
2637f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        /***/
2638f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        public static final int E_MODIFIER = 15;      /*[EM]*/
2639f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        /***/
2640f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        public static final int GLUE_AFTER_ZWJ = 16;  /*[GAZ]*/
2641f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        /***/
2642f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        public static final int ZWJ = 17;             /*[ZWJ]*/
26432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2644f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         * One more than the highest normal GraphemeClusterBreak value.
2645f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         * The highest value is available via UCharacter.getIntPropertyMaxValue(UProperty.GRAPHEME_CLUSTER_BREAK).
2646f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         *
2647f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
2648ff2b69bcfd12088a375804686b38e0d6bbf141acPaul Duffin         * @hide unsupported on Android
26492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2650f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        @Deprecated
2651f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        public static final int COUNT = 18;
26522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
26532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
26542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
26552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Word Break constants.
26562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see UProperty#WORD_BREAK
26572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
26582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static interface WordBreak {
26592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int OTHER = 0;
26622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ALETTER = 1;
26652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int FORMAT = 2;
26682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int KATAKANA = 3;
26712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MIDLETTER = 4;
26742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MIDNUM = 5;
26772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NUMERIC = 6;
26802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int EXTENDNUMLET = 7;
26832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CR = 8;
26862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int EXTEND = 9;
26892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LF = 10;
26922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MIDNUMLET = 11;
26952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NEWLINE = 12;
26981fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
26992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int REGIONAL_INDICATOR = 13;  /*[RI]*/ /* new in Unicode 6.2/ICU 50 */
27001fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
27012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int HEBREW_LETTER = 14;    /*[HL]*/ /* from here on: new in Unicode 6.3/ICU 52 */
27021fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
27032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SINGLE_QUOTE = 15;     /*[SQ]*/
27041fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
27052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int DOUBLE_QUOTE = 16;     /*[DQ]*/
2706f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        /***/
2707f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        public static final int E_BASE = 17;           /*[EB]*/ /* from here on: new in Unicode 9.0/ICU 58 */
2708f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        /***/
2709f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        public static final int E_BASE_GAZ = 18;       /*[EBG]*/
2710f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        /***/
2711f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        public static final int E_MODIFIER = 19;       /*[EM]*/
2712f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        /***/
2713f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        public static final int GLUE_AFTER_ZWJ = 20;   /*[GAZ]*/
2714f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        /***/
2715f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        public static final int ZWJ = 21;              /*[ZWJ]*/
27162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2717f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         * One more than the highest normal WordBreak value.
2718f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         * The highest value is available via UCharacter.getIntPropertyMaxValue(UProperty.WORD_BREAK).
2719f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         *
2720f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
2721ff2b69bcfd12088a375804686b38e0d6bbf141acPaul Duffin         * @hide unsupported on Android
27222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2723f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        @Deprecated
2724f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        public static final int COUNT = 22;
27252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
27262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
27272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
27282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Sentence Break constants.
27292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see UProperty#SENTENCE_BREAK
27302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
27312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static interface SentenceBreak {
27322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
27332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
27342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int OTHER = 0;
27352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
27362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
27372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ATERM = 1;
27382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
27392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
27402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CLOSE = 2;
27412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
27422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
27432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int FORMAT = 3;
27442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
27452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
27462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LOWER = 4;
27472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
27482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
27492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NUMERIC = 5;
27502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
27512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
27522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int OLETTER = 6;
27532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
27542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
27552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SEP = 7;
27562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
27572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
27582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SP = 8;
27592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
27602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
27612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int STERM = 9;
27622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
27632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
27642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int UPPER = 10;
27652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
27662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
27672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CR = 11;
27682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
27692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
27702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int EXTEND = 12;
27712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
27722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
27732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LF = 13;
27742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
27752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
27762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SCONTINUE = 14;
27772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2778f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         * One more than the highest normal SentenceBreak value.
2779f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         * The highest value is available via UCharacter.getIntPropertyMaxValue(UProperty.SENTENCE_BREAK).
2780f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         *
2781f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
2782ff2b69bcfd12088a375804686b38e0d6bbf141acPaul Duffin         * @hide unsupported on Android
27832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2784f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        @Deprecated
27852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int COUNT = 15;
27862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
27872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
27882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
27892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Line Break constants.
27902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see UProperty#LINE_BREAK
27912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
27922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static interface LineBreak
27932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
27942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
27952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
27962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int UNKNOWN = 0;
27972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
27982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
27992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int AMBIGUOUS = 1;
28002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
28012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ALPHABETIC = 2;
28032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
28042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int BREAK_BOTH = 3;
28062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
28072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int BREAK_AFTER = 4;
28092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
28102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int BREAK_BEFORE = 5;
28122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
28132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANDATORY_BREAK = 6;
28152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
28162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CONTINGENT_BREAK = 7;
28182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
28192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CLOSE_PUNCTUATION = 8;
28212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
28222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int COMBINING_MARK = 9;
28242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
28252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CARRIAGE_RETURN = 10;
28272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
28282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int EXCLAMATION = 11;
28302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
28312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int GLUE = 12;
28332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
28342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int HYPHEN = 13;
28362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
28372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int IDEOGRAPHIC = 14;
28392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
28402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * @see #INSEPARABLE
28412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int INSEPERABLE = 15;
28432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
28442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Renamed from the misspelled "inseperable" in Unicode 4.0.1.
28452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int INSEPARABLE = 15;
28472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
28482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int INFIX_NUMERIC = 16;
28502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
28512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LINE_FEED = 17;
28532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
28542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NONSTARTER = 18;
28562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
28572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NUMERIC = 19;
28592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
28602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int OPEN_PUNCTUATION = 20;
28622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
28632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int POSTFIX_NUMERIC = 21;
28652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
28662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int PREFIX_NUMERIC = 22;
28682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
28692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int QUOTATION = 23;
28712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
28722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int COMPLEX_CONTEXT = 24;
28742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
28752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SURROGATE = 25;
28772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
28782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SPACE = 26;
28802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
28812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int BREAK_SYMBOLS = 27;
28832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
28842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ZWSPACE = 28;
28862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
28872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NEXT_LINE = 29;  /*[NL]*/ /* from here on: new in Unicode 4/ICU 2.6 */
28892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
28902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int WORD_JOINER = 30;      /*[WJ]*/
28922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
28932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int H2 = 31;  /* from here on: new in Unicode 4.1/ICU 3.4 */
28952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
28962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int H3 = 32;
28982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
28992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
29002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int JL = 33;
29012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
29022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
29032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int JT = 34;
29042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
29052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
29062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int JV = 35;
29071fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
29082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CLOSE_PARENTHESIS = 36; /*[CP]*/ /* new in Unicode 5.2/ICU 4.4 */
29091fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
29102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CONDITIONAL_JAPANESE_STARTER = 37;  /*[CJ]*/ /* new in Unicode 6.1/ICU 49 */
29111fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
29122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int HEBREW_LETTER = 38;  /*[HL]*/ /* new in Unicode 6.1/ICU 49 */
29131fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
29142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int REGIONAL_INDICATOR = 39;  /*[RI]*/ /* new in Unicode 6.2/ICU 50 */
2915f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        /***/
2916f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        public static final int E_BASE = 40;  /*[EB]*/ /* from here on: new in Unicode 9.0/ICU 58 */
2917f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        /***/
2918f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        public static final int E_MODIFIER = 41;  /*[EM]*/
2919f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        /***/
2920f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        public static final int ZWJ = 42;  /*[ZWJ]*/
29212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2922f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         * One more than the highest normal LineBreak value.
2923f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         * The highest value is available via UCharacter.getIntPropertyMaxValue(UProperty.LINE_BREAK).
2924f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         *
2925f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
2926ff2b69bcfd12088a375804686b38e0d6bbf141acPaul Duffin         * @hide unsupported on Android
29272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2928f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        @Deprecated
2929f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        public static final int COUNT = 43;
29302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
29312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
29322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
29332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Numeric Type constants.
29342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see UProperty#NUMERIC_TYPE
29352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
29362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static interface NumericType
29372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
29382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
29392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
29402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NONE = 0;
29412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
29422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
29432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int DECIMAL = 1;
29442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
29452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
29462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int DIGIT = 2;
29472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
29482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
29492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NUMERIC = 3;
29502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2951f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         * One more than the highest normal NumericType value.
2952f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         * The highest value is available via UCharacter.getIntPropertyMaxValue(UProperty.NUMERIC_TYPE).
2953f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         *
2954f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
2955ff2b69bcfd12088a375804686b38e0d6bbf141acPaul Duffin         * @hide unsupported on Android
29562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2957f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        @Deprecated
29582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int COUNT = 4;
29592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
29602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
29612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
29622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Hangul Syllable Type constants.
29632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
29642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see UProperty#HANGUL_SYLLABLE_TYPE
29652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
29662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static interface HangulSyllableType
29672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
29682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
29692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
29702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NOT_APPLICABLE      = 0;   /*[NA]*/ /*See note !!*/
29712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
29722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
29732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LEADING_JAMO        = 1;   /*[L]*/
29742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
29752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
29762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int VOWEL_JAMO          = 2;   /*[V]*/
29772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
29782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
29792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int TRAILING_JAMO       = 3;   /*[T]*/
29802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
29812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
29822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LV_SYLLABLE         = 4;   /*[LV]*/
29832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
29842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
29852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LVT_SYLLABLE        = 5;   /*[LVT]*/
29862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2987f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         * One more than the highest normal HangulSyllableType value.
2988f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         * The highest value is available via UCharacter.getIntPropertyMaxValue(UProperty.HANGUL_SYLLABLE_TYPE).
2989f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         *
2990f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
2991ff2b69bcfd12088a375804686b38e0d6bbf141acPaul Duffin         * @hide unsupported on Android
29922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2993f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        @Deprecated
29942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int COUNT               = 6;
29952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
29962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
29972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
29982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Bidi Paired Bracket Type constants.
29992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
30002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see UProperty#BIDI_PAIRED_BRACKET_TYPE
30012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
30022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static interface BidiPairedBracketType {
30032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
30042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Not a paired bracket.
30052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
30062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NONE = 0;
30072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
30082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Open paired bracket.
30092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
30102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int OPEN = 1;
30112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
30122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Close paired bracket.
30132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
30142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CLOSE = 2;
30152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3016f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         * One more than the highest normal BidiPairedBracketType value.
3017f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         * The highest value is available via UCharacter.getIntPropertyMaxValue(UProperty.BIDI_PAIRED_BRACKET_TYPE).
3018f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         *
3019f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert         * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
3020ff2b69bcfd12088a375804686b38e0d6bbf141acPaul Duffin         * @hide unsupported on Android
30212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3022f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        @Deprecated
30232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int COUNT = 3;
30242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
30252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
30262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    // public data members -----------------------------------------------
30272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
30282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
30292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * The lowest Unicode code point value, constant 0.
30302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Same as {@link Character#MIN_CODE_POINT}, same integer value as {@link Character#MIN_VALUE}.
30312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
30322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final int MIN_VALUE = Character.MIN_CODE_POINT;
30332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
30342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
30352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * The highest Unicode code point value (scalar value), constant U+10FFFF (uses 21 bits).
30362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Same as {@link Character#MAX_CODE_POINT}.
30372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
30382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>Up-to-date Unicode implementation of {@link Character#MAX_VALUE}
30392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * which is still a char with the value U+FFFF.
30402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
30412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final int MAX_VALUE = Character.MAX_CODE_POINT;
30422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
30432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
30442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * The minimum value for Supplementary code points, constant U+10000.
30452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Same as {@link Character#MIN_SUPPLEMENTARY_CODE_POINT}.
30462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
30472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final int SUPPLEMENTARY_MIN_VALUE = Character.MIN_SUPPLEMENTARY_CODE_POINT;
30482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
30492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
30502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Unicode value used when translating into Unicode encoding form and there
30512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * is no existing character.
30522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
30532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final int REPLACEMENT_CHAR = '\uFFFD';
30542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
30552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
30562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Special value that is returned by getUnicodeNumericValue(int) when no
30572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * numeric value is defined for a code point.
30582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #getUnicodeNumericValue
30592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
30602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final double NO_NUMERIC_VALUE = -123456789;
30612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
30622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
30632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Compatibility constant for Java Character's MIN_RADIX.
30642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
30652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final int MIN_RADIX = java.lang.Character.MIN_RADIX;
30662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
30672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
30682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Compatibility constant for Java Character's MAX_RADIX.
30692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
30702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final int MAX_RADIX = java.lang.Character.MAX_RADIX;
30712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
30722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
30732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Do not lowercase non-initial parts of words when titlecasing.
30742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Option bit for titlecasing APIs that take an options bit set.
30752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
30762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * By default, titlecasing will titlecase the first cased character
30772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * of a word and lowercase all other characters.
30782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * With this option, the other characters will not be modified.
30792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
30802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #toTitleCase
30812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
30822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final int TITLECASE_NO_LOWERCASE = 0x100;
30832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
30842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
30852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Do not adjust the titlecasing indexes from BreakIterator::next() indexes;
30862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * titlecase exactly the characters at breaks from the iterator.
30872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Option bit for titlecasing APIs that take an options bit set.
30882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
30892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * By default, titlecasing will take each break iterator index,
30902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * adjust it by looking for the next cased character, and titlecase that one.
30912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Other characters are lowercased.
30922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
309308ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * This follows Unicode 4 &amp; 5 section 3.13 Default Case Operations:
30942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
30952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * R3  toTitlecase(X): Find the word boundaries based on Unicode Standard Annex
30962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * #29, "Text Boundaries." Between each pair of word boundaries, find the first
30972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * cased character F. If F exists, map F to default_title(F); then map each
30982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * subsequent character C to default_lower(C).
30992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
31002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #toTitleCase
31012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #TITLECASE_NO_LOWERCASE
31022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
31032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final int TITLECASE_NO_BREAK_ADJUSTMENT = 0x200;
31042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
31052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    // public methods ----------------------------------------------------
31062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
31072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
31082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Returnss the numeric value of a decimal digit code point.
31092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <br>This method observes the semantics of
31102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <code>java.lang.Character.digit()</code>.  Note that this
31112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * will return positive values for code points for which isDigit
31122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * returns false, just like java.lang.Character.
31132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <br><em>Semantic Change:</em> In release 1.3.1 and
31142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * prior, this did not treat the European letters as having a
31152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * digit value, and also treated numeric letters and other numbers as
31162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * digits.
31172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * This has been changed to conform to the java semantics.
31182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <br>A code point is a valid digit if and only if:
31192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <ul>
31202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *   <li>ch is a decimal digit or one of the european letters, and
31212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *   <li>the value of ch is less than the specified radix.
31222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * </ul>
31232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch the code point to query
31242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param radix the radix
31252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the numeric value represented by the code point in the
31262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * specified radix, or -1 if the code point is not a decimal digit
31272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * or if its value is too large for the radix
31282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
31292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int digit(int ch, int radix)
31302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
31312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (2 <= radix && radix <= 36) {
31322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            int value = digit(ch);
31332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if (value < 0) {
31342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                // ch is not a decimal digit, try latin letters
31352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                value = UCharacterProperty.getEuropeanDigit(ch);
31362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
31372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return (value < radix) ? value : -1;
31382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        } else {
31392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return -1;  // invalid radix
31402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
31412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
31422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
31432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
31442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Returnss the numeric value of a decimal digit code point.
31452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <br>This is a convenience overload of <code>digit(int, int)</code>
31462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * that provides a decimal radix.
31472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <br><em>Semantic Change:</em> In release 1.3.1 and prior, this
31482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * treated numeric letters and other numbers as digits.  This has
31492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * been changed to conform to the java semantics.
31502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch the code point to query
31512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the numeric value represented by the code point,
31522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * or -1 if the code point is not a decimal digit or if its
31532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * value is too large for a decimal radix
31542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
31552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int digit(int ch)
31562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
31572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UCharacterProperty.INSTANCE.digit(ch);
31582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
31592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
31602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
31612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Returns the numeric value of the code point as a nonnegative
31622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * integer.
31632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <br>If the code point does not have a numeric value, then -1 is returned.
31642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <br>
31652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * If the code point has a numeric value that cannot be represented as a
31662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * nonnegative integer (for example, a fractional value), then -2 is
31672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * returned.
31682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch the code point to query
31692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the numeric value of the code point, or -1 if it has no numeric
31702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * value, or -2 if it has a numeric value that cannot be represented as a
31712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * nonnegative integer
31722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
31732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int getNumericValue(int ch)
31742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
31752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UCharacterProperty.INSTANCE.getNumericValue(ch);
31762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
31772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
31782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
31791537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Returns the numeric value for a Unicode code point as defined in the
318008ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * Unicode Character Database.
31812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>A "double" return type is necessary because some numeric values are
318208ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * fractions, negative, or too large for int.
31832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>For characters without any numeric values in the Unicode Character
31842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Database, this function will return NO_NUMERIC_VALUE.
318508ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * Note: This is different from the Unicode Standard which specifies NaN as the default value.
31862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p><em>API Change:</em> In release 2.2 and prior, this API has a
31872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * return type int and returns -1 when the argument ch does not have a
31882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * corresponding numeric value. This has been changed to synch with ICU4C
318908ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     *
31902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * This corresponds to the ICU4C function u_getNumericValue.
31912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch Code point to get the numeric value for.
31922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return numeric value of ch, or NO_NUMERIC_VALUE if none is defined.
31932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
31942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static double getUnicodeNumericValue(int ch)
31952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
31962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UCharacterProperty.INSTANCE.getUnicodeNumericValue(ch);
31972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
31982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
31992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
32002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Compatibility override of Java deprecated method.  This
32012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * method will always remain deprecated.
32022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Same as java.lang.Character.isSpace().
32032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch the code point
32042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if the code point is a space character as
32052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * defined by java.lang.Character.isSpace.
32062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @deprecated ICU 3.4 (Java)
320793cf604e9dd0525f15bc0a7450b2a35f3884c298Neil Fuller     * @hide original deprecated declaration
32082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
32092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    @Deprecated
32102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isSpace(int ch) {
32112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return ch <= 0x20 &&
32122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                (ch == 0x20 || ch == 0x09 || ch == 0x0a || ch == 0x0c || ch == 0x0d);
32132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
32142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
32152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
32162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Returns a value indicating a code point's Unicode category.
32172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Up-to-date Unicode implementation of java.lang.Character.getType()
32182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * except for the above mentioned code points that had their category
32192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * changed.<br>
32202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Return results are constants from the interface
32212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <a href=UCharacterCategory.html>UCharacterCategory</a><br>
32222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <em>NOTE:</em> the UCharacterCategory values are <em>not</em> compatible with
32232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * those returned by java.lang.Character.getType.  UCharacterCategory values
32242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * match the ones used in ICU4C, while java.lang.Character type
322508ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * values, though similar, skip the value 17.
32262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point whose type is to be determined
32272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return category which is a value of UCharacterCategory
32282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
32292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int getType(int ch)
32302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
32312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UCharacterProperty.INSTANCE.getType(ch);
32322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
32332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
32342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
32352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Determines if a code point has a defined meaning in the up-to-date
32362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Unicode standard.
32372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * E.g. supplementary code points though allocated space are not defined in
32382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Unicode yet.<br>
32392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Up-to-date Unicode implementation of java.lang.Character.isDefined()
32402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point to be determined if it is defined in the most
32412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *        current version of Unicode
32422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if this code point is defined in unicode
32432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
32442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isDefined(int ch)
32452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
32462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return getType(ch) != 0;
32472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
32482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
32492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
32502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Determines if a code point is a Java digit.
32512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <br>This method observes the semantics of
32522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <code>java.lang.Character.isDigit()</code>. It returns true for decimal
32532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * digits only.
32542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <br><em>Semantic Change:</em> In release 1.3.1 and prior, this treated
32552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * numeric letters and other numbers as digits.
32562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * This has been changed to conform to the java semantics.
32572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point to query
32582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if this code point is a digit
32592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
32602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isDigit(int ch)
32612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
32622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return getType(ch) == UCharacterCategory.DECIMAL_DIGIT_NUMBER;
32632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
32642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
32652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
32662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Determines if the specified code point is an ISO control character.
32672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * A code point is considered to be an ISO control character if it is in
326808ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * the range &#92;u0000 through &#92;u001F or in the range &#92;u007F through
326908ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * &#92;u009F.<br>
32702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Up-to-date Unicode implementation of java.lang.Character.isISOControl()
32712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point to determine if it is an ISO control character
32722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if code point is a ISO control character
32732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
32742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isISOControl(int ch)
32752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
32762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return ch >= 0 && ch <= APPLICATION_PROGRAM_COMMAND_ &&
32772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                ((ch <= UNIT_SEPARATOR_) || (ch >= DELETE_));
32782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
32792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
32802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
32812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Determines if the specified code point is a letter.
32822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Up-to-date Unicode implementation of java.lang.Character.isLetter()
32832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point to determine if it is a letter
32842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if code point is a letter
32852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
32862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isLetter(int ch)
32872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
32882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // if props == 0, it will just fall through and return false
32892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return ((1 << getType(ch))
32902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                & ((1 << UCharacterCategory.UPPERCASE_LETTER)
32912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.LOWERCASE_LETTER)
32922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.TITLECASE_LETTER)
32932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.MODIFIER_LETTER)
32942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.OTHER_LETTER))) != 0;
32952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
32962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
32972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
32982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Determines if the specified code point is a letter or digit.
32991537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu] Note:</strong> This method, unlike java.lang.Character does not regard the ascii
33002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * characters 'A' - 'Z' and 'a' - 'z' as digits.
33012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point to determine if it is a letter or a digit
33022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if code point is a letter or a digit
33032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
33042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isLetterOrDigit(int ch)
33052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
33062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return ((1 << getType(ch))
33072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                & ((1 << UCharacterCategory.UPPERCASE_LETTER)
33082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.LOWERCASE_LETTER)
33092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.TITLECASE_LETTER)
33102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.MODIFIER_LETTER)
33112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.OTHER_LETTER)
33122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.DECIMAL_DIGIT_NUMBER))) != 0;
33132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
33142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
33152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
33162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Compatibility override of Java deprecated method.  This
33172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * method will always remain deprecated.  Delegates to
33182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * java.lang.Character.isJavaIdentifierStart.
33192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param cp the code point
33202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if the code point can start a java identifier.
33212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @deprecated ICU 3.4 (Java)
332293cf604e9dd0525f15bc0a7450b2a35f3884c298Neil Fuller     * @hide original deprecated declaration
33232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
33242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    @Deprecated
33252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isJavaLetter(int cp) {
33262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return isJavaIdentifierStart(cp);
33272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
33282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
33292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
33302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Compatibility override of Java deprecated method.  This
33312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * method will always remain deprecated.  Delegates to
33322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * java.lang.Character.isJavaIdentifierPart.
33332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param cp the code point
33342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if the code point can continue a java identifier.
33352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @deprecated ICU 3.4 (Java)
333693cf604e9dd0525f15bc0a7450b2a35f3884c298Neil Fuller     * @hide original deprecated declaration
33372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
33382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    @Deprecated
33392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isJavaLetterOrDigit(int cp) {
33402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return isJavaIdentifierPart(cp);
33412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
33422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
33432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
33442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Compatibility override of Java method, delegates to
33452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * java.lang.Character.isJavaIdentifierStart.
33462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param cp the code point
33472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if the code point can start a java identifier.
33482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
33492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isJavaIdentifierStart(int cp) {
33502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // note, downcast to char for jdk 1.4 compatibility
33512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return java.lang.Character.isJavaIdentifierStart((char)cp);
33522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
33532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
33542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
33552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Compatibility override of Java method, delegates to
33562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * java.lang.Character.isJavaIdentifierPart.
33572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param cp the code point
33582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if the code point can continue a java identifier.
33592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
33602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isJavaIdentifierPart(int cp) {
33612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // note, downcast to char for jdk 1.4 compatibility
33622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return java.lang.Character.isJavaIdentifierPart((char)cp);
33632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
33642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
33652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
33662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Determines if the specified code point is a lowercase character.
33672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * UnicodeData only contains case mappings for code points where they are
33682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * one-to-one mappings; it also omits information about context-sensitive
33692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * case mappings.<br> For more information about Unicode case mapping
33702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * please refer to the
33712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <a href=http://www.unicode.org/unicode/reports/tr21/>Technical report
33722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * #21</a>.<br>
33732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Up-to-date Unicode implementation of java.lang.Character.isLowerCase()
33742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point to determine if it is in lowercase
33752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if code point is a lowercase character
33762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
33772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isLowerCase(int ch)
33782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
33792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // if props == 0, it will just fall through and return false
33802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return getType(ch) == UCharacterCategory.LOWERCASE_LETTER;
33812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
33822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
33832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
33842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Determines if the specified code point is a white space character.
33852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * A code point is considered to be an whitespace character if and only
33862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * if it satisfies one of the following criteria:
33872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <ul>
33882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> It is a Unicode Separator character (categories "Z" = "Zs" or "Zl" or "Zp"), but is not
338908ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     *      also a non-breaking space (&#92;u00A0 or &#92;u2007 or &#92;u202F).
339008ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <li> It is &#92;u0009, HORIZONTAL TABULATION.
339108ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <li> It is &#92;u000A, LINE FEED.
339208ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <li> It is &#92;u000B, VERTICAL TABULATION.
339308ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <li> It is &#92;u000C, FORM FEED.
339408ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <li> It is &#92;u000D, CARRIAGE RETURN.
339508ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <li> It is &#92;u001C, FILE SEPARATOR.
339608ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <li> It is &#92;u001D, GROUP SEPARATOR.
339708ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <li> It is &#92;u001E, RECORD SEPARATOR.
339808ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <li> It is &#92;u001F, UNIT SEPARATOR.
33992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * </ul>
34002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
34012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * This API tries to sync with the semantics of Java's
34022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * java.lang.Character.isWhitespace(), but it may not return
34032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * the exact same results because of the Unicode version
34042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * difference.
34052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>Note: Unicode 4.0.1 changed U+200B ZERO WIDTH SPACE from a Space Separator (Zs)
34062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * to a Format Control (Cf). Since then, isWhitespace(0x200b) returns false.
34072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * See http://www.unicode.org/versions/Unicode4.0.1/
34082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point to determine if it is a white space
34092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if the specified code point is a white space character
34102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
34112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isWhitespace(int ch)
34122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
34132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // exclude no-break spaces
34142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // if props == 0, it will just fall through and return false
34152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return ((1 << getType(ch)) &
34162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                ((1 << UCharacterCategory.SPACE_SEPARATOR)
34172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.LINE_SEPARATOR)
34182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.PARAGRAPH_SEPARATOR))) != 0
34192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        && (ch != NO_BREAK_SPACE_) && (ch != FIGURE_SPACE_) && (ch != NARROW_NO_BREAK_SPACE_)
34202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        // TAB VT LF FF CR FS GS RS US NL are all control characters
34212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        // that are white spaces.
34222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        || (ch >= 0x9 && ch <= 0xd) || (ch >= 0x1c && ch <= 0x1f);
34232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
34242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
34252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
34262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Determines if the specified code point is a Unicode specified space
34272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * character, i.e. if code point is in the category Zs, Zl and Zp.
34282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Up-to-date Unicode implementation of java.lang.Character.isSpaceChar().
34292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point to determine if it is a space
34302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if the specified code point is a space character
34312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
34322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isSpaceChar(int ch)
34332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
34342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // if props == 0, it will just fall through and return false
34352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return ((1 << getType(ch)) & ((1 << UCharacterCategory.SPACE_SEPARATOR)
34362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                | (1 << UCharacterCategory.LINE_SEPARATOR)
34372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                | (1 << UCharacterCategory.PARAGRAPH_SEPARATOR)))
34382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                != 0;
34392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
34402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
34412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
34422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Determines if the specified code point is a titlecase character.
34432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * UnicodeData only contains case mappings for code points where they are
34442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * one-to-one mappings; it also omits information about context-sensitive
34452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * case mappings.<br>
34462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * For more information about Unicode case mapping please refer to the
34472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <a href=http://www.unicode.org/unicode/reports/tr21/>
34482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Technical report #21</a>.<br>
34492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Up-to-date Unicode implementation of java.lang.Character.isTitleCase().
34502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point to determine if it is in title case
34512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if the specified code point is a titlecase character
34522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
34532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isTitleCase(int ch)
34542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
34552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // if props == 0, it will just fall through and return false
34562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return getType(ch) == UCharacterCategory.TITLECASE_LETTER;
34572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
34582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
34592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
34602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Determines if the specified code point may be any part of a Unicode
34612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * identifier other than the starting character.
34622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * A code point may be part of a Unicode identifier if and only if it is
34632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * one of the following:
34642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <ul>
34652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Lu Uppercase letter
34662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Ll Lowercase letter
34672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Lt Titlecase letter
34682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Lm Modifier letter
34692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Lo Other letter
34702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Nl Letter number
34712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Pc Connecting punctuation character
34722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Nd decimal number
34732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Mc Spacing combining mark
34742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Mn Non-spacing mark
34752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Cf formatting code
34762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * </ul>
34772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Up-to-date Unicode implementation of
34782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * java.lang.Character.isUnicodeIdentifierPart().<br>
34792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * See <a href=http://www.unicode.org/unicode/reports/tr8/>UTR #8</a>.
34802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point to determine if is can be part of a Unicode
34812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *        identifier
34822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if code point is any character belonging a unicode
34832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *         identifier suffix after the first character
34842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
34852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isUnicodeIdentifierPart(int ch)
34862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
34872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // if props == 0, it will just fall through and return false
34882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // cat == format
34892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return ((1 << getType(ch))
34902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                & ((1 << UCharacterCategory.UPPERCASE_LETTER)
34912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.LOWERCASE_LETTER)
34922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.TITLECASE_LETTER)
34932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.MODIFIER_LETTER)
34942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.OTHER_LETTER)
34952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.LETTER_NUMBER)
34962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.CONNECTOR_PUNCTUATION)
34972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.DECIMAL_DIGIT_NUMBER)
34982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.COMBINING_SPACING_MARK)
34992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.NON_SPACING_MARK))) != 0
35002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        || isIdentifierIgnorable(ch);
35012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
35022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
35032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
35042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Determines if the specified code point is permissible as the first
35052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * character in a Unicode identifier.
35062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * A code point may start a Unicode identifier if it is of type either
35072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <ul>
35082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Lu Uppercase letter
35092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Ll Lowercase letter
35102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Lt Titlecase letter
35112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Lm Modifier letter
35122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Lo Other letter
35132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Nl Letter number
35142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * </ul>
35152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Up-to-date Unicode implementation of
35162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * java.lang.Character.isUnicodeIdentifierStart().<br>
35172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * See <a href=http://www.unicode.org/unicode/reports/tr8/>UTR #8</a>.
35182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point to determine if it can start a Unicode identifier
35192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if code point is the first character belonging a unicode
35202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *              identifier
35212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
35222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isUnicodeIdentifierStart(int ch)
35232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
35242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /*int cat = getType(ch);*/
35252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // if props == 0, it will just fall through and return false
35262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return ((1 << getType(ch))
35272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                & ((1 << UCharacterCategory.UPPERCASE_LETTER)
35282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.LOWERCASE_LETTER)
35292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.TITLECASE_LETTER)
35302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.MODIFIER_LETTER)
35312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.OTHER_LETTER)
35322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.LETTER_NUMBER))) != 0;
35332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
35342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
35352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
35362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Determines if the specified code point should be regarded as an
35372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * ignorable character in a Java identifier.
35382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * A character is Java-identifier-ignorable if it has the general category
35392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Cf Formatting Control, or it is a non-Java-whitespace ISO control:
35402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * U+0000..U+0008, U+000E..U+001B, U+007F..U+009F.<br>
35412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Up-to-date Unicode implementation of
35422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * java.lang.Character.isIdentifierIgnorable().<br>
35432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * See <a href=http://www.unicode.org/unicode/reports/tr8/>UTR #8</a>.
35442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>Note that Unicode just recommends to ignore Cf (format controls).
35452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point to be determined if it can be ignored in a Unicode
35462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *        identifier.
35472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if the code point is ignorable
35482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
35492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isIdentifierIgnorable(int ch)
35502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
35512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // see java.lang.Character.isIdentifierIgnorable() on range of
35522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // ignorable characters.
35532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (ch <= 0x9f) {
35542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return isISOControl(ch)
35552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    && !((ch >= 0x9 && ch <= 0xd)
35562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                            || (ch >= 0x1c && ch <= 0x1f));
35572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
35582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return getType(ch) == UCharacterCategory.FORMAT;
35592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
35602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
35612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
35622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Determines if the specified code point is an uppercase character.
35632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * UnicodeData only contains case mappings for code point where they are
35642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * one-to-one mappings; it also omits information about context-sensitive
35652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * case mappings.<br>
35662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * For language specific case conversion behavior, use
35672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * toUpperCase(locale, str). <br>
35682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * For example, the case conversion for dot-less i and dotted I in Turkish,
35692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * or for final sigma in Greek.
35702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * For more information about Unicode case mapping please refer to the
35712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <a href=http://www.unicode.org/unicode/reports/tr21/>
35722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Technical report #21</a>.<br>
35732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Up-to-date Unicode implementation of java.lang.Character.isUpperCase().
35742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point to determine if it is in uppercase
35752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if the code point is an uppercase character
35762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
35772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isUpperCase(int ch)
35782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
35792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // if props == 0, it will just fall through and return false
35802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return getType(ch) == UCharacterCategory.UPPERCASE_LETTER;
35812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
35822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
35832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
35842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * The given code point is mapped to its lowercase equivalent; if the code
35852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * point has no lowercase equivalent, the code point itself is returned.
35862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Up-to-date Unicode implementation of java.lang.Character.toLowerCase()
35872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
35882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>This function only returns the simple, single-code point case mapping.
35892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Full case mappings should be used whenever possible because they produce
35902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * better results by working on whole strings.
35912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * They take into account the string context and the language and can map
35922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * to a result string with a different length as appropriate.
35932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Full case mappings are applied by the case mapping functions
35942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * that take String parameters rather than code points (int).
35952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * See also the User Guide chapter on C/POSIX migration:
35962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * http://www.icu-project.org/userguide/posix.html#case_mappings
35972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
35982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point whose lowercase equivalent is to be retrieved
35992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the lowercase equivalent code point
36002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
36012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int toLowerCase(int ch) {
36022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UCaseProps.INSTANCE.tolower(ch);
36032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
36042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
36052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
36062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Converts argument code point and returns a String object representing
36072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * the code point's value in UTF-16 format.
36082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * The result is a string whose length is 1 for BMP code points, 2 for supplementary ones.
36092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
36102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>Up-to-date Unicode implementation of java.lang.Character.toString().
36112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
36122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point
36132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return string representation of the code point, null if code point is not
36142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *         defined in unicode
36152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
36162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static String toString(int ch)
36172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
36182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (ch < MIN_VALUE || ch > MAX_VALUE) {
36192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return null;
36202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
36212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
36222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (ch < SUPPLEMENTARY_MIN_VALUE) {
36232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return String.valueOf((char)ch);
36242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
36252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
36262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return new String(Character.toChars(ch));
36272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
36282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
36292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
36302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Converts the code point argument to titlecase.
36312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * If no titlecase is available, the uppercase is returned. If no uppercase
36322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * is available, the code point itself is returned.
36332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Up-to-date Unicode implementation of java.lang.Character.toTitleCase()
36342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
36352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>This function only returns the simple, single-code point case mapping.
36362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Full case mappings should be used whenever possible because they produce
36372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * better results by working on whole strings.
36382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * They take into account the string context and the language and can map
36392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * to a result string with a different length as appropriate.
36402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Full case mappings are applied by the case mapping functions
36412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * that take String parameters rather than code points (int).
36422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * See also the User Guide chapter on C/POSIX migration:
36432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * http://www.icu-project.org/userguide/posix.html#case_mappings
36442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
36452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point  whose title case is to be retrieved
36462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return titlecase code point
36472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
36482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int toTitleCase(int ch) {
36492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UCaseProps.INSTANCE.totitle(ch);
36502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
36512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
36522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
36532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Converts the character argument to uppercase.
36542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * If no uppercase is available, the character itself is returned.
36552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Up-to-date Unicode implementation of java.lang.Character.toUpperCase()
36562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
36572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>This function only returns the simple, single-code point case mapping.
36582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Full case mappings should be used whenever possible because they produce
36592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * better results by working on whole strings.
36602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * They take into account the string context and the language and can map
36612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * to a result string with a different length as appropriate.
36622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Full case mappings are applied by the case mapping functions
36632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * that take String parameters rather than code points (int).
36642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * See also the User Guide chapter on C/POSIX migration:
36652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * http://www.icu-project.org/userguide/posix.html#case_mappings
36662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
36672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point whose uppercase is to be retrieved
36682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return uppercase code point
36692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
36702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int toUpperCase(int ch) {
36712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UCaseProps.INSTANCE.toupper(ch);
36722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
36732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
36742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    // extra methods not in java.lang.Character --------------------------
36752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
36762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
36771537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Determines if the code point is a supplementary character.
36782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * A code point is a supplementary character if and only if it is greater
36792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * than <a href=#SUPPLEMENTARY_MIN_VALUE>SUPPLEMENTARY_MIN_VALUE</a>
36802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point to be determined if it is in the supplementary
36812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *        plane
36822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if code point is a supplementary character
36832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
36842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isSupplementary(int ch)
36852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
36862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return ch >= UCharacter.SUPPLEMENTARY_MIN_VALUE &&
36872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                ch <= UCharacter.MAX_VALUE;
36882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
36892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
36902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
36911537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Determines if the code point is in the BMP plane.
36922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point to be determined if it is not a supplementary
36932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *        character
36942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if code point is not a supplementary character
36952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
36962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isBMP(int ch)
36972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
36982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return (ch >= 0 && ch <= LAST_CHAR_MASK_);
36992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
37002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
37012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
37021537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Determines whether the specified code point is a printable character
37032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * according to the Unicode standard.
37042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point to be determined if it is printable
37052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if the code point is a printable character
37062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
37072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isPrintable(int ch)
37082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
37092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        int cat = getType(ch);
37102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // if props == 0, it will just fall through and return false
37112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return (cat != UCharacterCategory.UNASSIGNED &&
37122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                cat != UCharacterCategory.CONTROL &&
37132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                cat != UCharacterCategory.FORMAT &&
37142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                cat != UCharacterCategory.PRIVATE_USE &&
37152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                cat != UCharacterCategory.SURROGATE &&
37162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                cat != UCharacterCategory.GENERAL_OTHER_TYPES);
37172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
37182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
37192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
37201537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Determines whether the specified code point is of base form.
37212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * A code point of base form does not graphically combine with preceding
37222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * characters, and is neither a control nor a format character.
37232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point to be determined if it is of base form
37242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if the code point is of base form
37252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
37262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isBaseForm(int ch)
37272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
37282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        int cat = getType(ch);
37292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // if props == 0, it will just fall through and return false
37302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return cat == UCharacterCategory.DECIMAL_DIGIT_NUMBER ||
37312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                cat == UCharacterCategory.OTHER_NUMBER ||
37322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                cat == UCharacterCategory.LETTER_NUMBER ||
37332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                cat == UCharacterCategory.UPPERCASE_LETTER ||
37342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                cat == UCharacterCategory.LOWERCASE_LETTER ||
37352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                cat == UCharacterCategory.TITLECASE_LETTER ||
37362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                cat == UCharacterCategory.MODIFIER_LETTER ||
37372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                cat == UCharacterCategory.OTHER_LETTER ||
37382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                cat == UCharacterCategory.NON_SPACING_MARK ||
37392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                cat == UCharacterCategory.ENCLOSING_MARK ||
37402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                cat == UCharacterCategory.COMBINING_SPACING_MARK;
37412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
37422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
37432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
37441537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Returns the Bidirection property of a code point.
37452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * For example, 0x0041 (letter A) has the LEFT_TO_RIGHT directional
37462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * property.<br>
37472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Result returned belongs to the interface
37482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <a href=UCharacterDirection.html>UCharacterDirection</a>
37492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch the code point to be determined its direction
37502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return direction constant from UCharacterDirection.
37512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
37522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int getDirection(int ch)
37532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
37542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UBiDiProps.INSTANCE.getClass(ch);
37552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
37562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
37572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
37582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Determines whether the code point has the "mirrored" property.
37592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * This property is set for characters that are commonly used in
37602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Right-To-Left contexts and need to be displayed with a "mirrored"
37612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * glyph.
37622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point whose mirror is to be determined
37632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if the code point has the "mirrored" property
37642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
37652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isMirrored(int ch)
37662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
37672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UBiDiProps.INSTANCE.isMirrored(ch);
37682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
37692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
37702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
37711537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Maps the specified code point to a "mirror-image" code point.
37722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * For code points with the "mirrored" property, implementations sometimes
37732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * need a "poor man's" mapping to another code point such that the default
37742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * glyph may serve as the mirror-image of the default glyph of the
37752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * specified code point.<br>
37762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * This is useful for text conversion to and from codepages with visual
37772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * order, and for displays without glyph selection capabilities.
37782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point whose mirror is to be retrieved
37792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return another code point that may serve as a mirror-image substitute,
37802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *         or ch itself if there is no such mapping or ch does not have the
37812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *         "mirrored" property
37822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
37832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int getMirror(int ch)
37842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
37852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UBiDiProps.INSTANCE.getMirror(ch);
37862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
37872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
37882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
37891537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Maps the specified character to its paired bracket character.
37902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * For Bidi_Paired_Bracket_Type!=None, this is the same as getMirror(int).
37912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Otherwise c itself is returned.
37922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * See http://www.unicode.org/reports/tr9/
37932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
37942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param c the code point to be mapped
37952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the paired bracket code point,
37962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *         or c itself if there is no such mapping
37972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *         (Bidi_Paired_Bracket_Type=None)
37982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
37992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see UProperty#BIDI_PAIRED_BRACKET
38002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see UProperty#BIDI_PAIRED_BRACKET_TYPE
38012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #getMirror(int)
38022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
38032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int getBidiPairedBracket(int c) {
38042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UBiDiProps.INSTANCE.getPairedBracket(c);
38052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
38062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
38072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
38081537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Returns the combining class of the argument codepoint
38092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point whose combining is to be retrieved
38102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the combining class of the codepoint
38112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
38122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int getCombiningClass(int ch)
38132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
38142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return Normalizer2.getNFDInstance().getCombiningClass(ch);
38152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
38162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
38172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
38181537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> A code point is illegal if and only if
38192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <ul>
38202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Out of bounds, less than 0 or greater than UCharacter.MAX_VALUE
38212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> A surrogate value, 0xD800 to 0xDFFF
38222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Not-a-character, having the form 0x xxFFFF or 0x xxFFFE
38232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * </ul>
38242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Note: legal does not mean that it is assigned in this version of Unicode.
38252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point to determine if it is a legal code point by itself
38262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if and only if legal.
38272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
38282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isLegal(int ch)
38292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
38302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (ch < MIN_VALUE) {
38312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return false;
38322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
38332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (ch < Character.MIN_SURROGATE) {
38342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return true;
38352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
38362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (ch <= Character.MAX_SURROGATE) {
38372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return false;
38382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
38392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (UCharacterUtility.isNonCharacter(ch)) {
38402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return false;
38412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
38422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return (ch <= MAX_VALUE);
38432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
38442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
38452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
38461537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> A string is legal iff all its code points are legal.
38472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * A code point is illegal if and only if
38482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <ul>
38492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Out of bounds, less than 0 or greater than UCharacter.MAX_VALUE
38502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> A surrogate value, 0xD800 to 0xDFFF
38512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Not-a-character, having the form 0x xxFFFF or 0x xxFFFE
38522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * </ul>
38532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Note: legal does not mean that it is assigned in this version of Unicode.
38542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param str containing code points to examin
38552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if and only if legal.
38562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
38572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isLegal(String str)
38582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
38592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        int size = str.length();
38602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        int codepoint;
38612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        for (int i = 0; i < size; i += Character.charCount(codepoint))
38622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        {
38632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            codepoint = str.codePointAt(i);
38642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if (!isLegal(codepoint)) {
38652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                return false;
38662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
38672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
38682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return true;
38692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
38702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
38712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
38721537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Returns the version of Unicode data used.
38732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the unicode version number used
38742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
38752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static VersionInfo getUnicodeVersion()
38762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
38772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UCharacterProperty.INSTANCE.m_unicodeVersion_;
38782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
38792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
38802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
38811537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Returns the most current Unicode name of the argument code point, or
38822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * null if the character is unassigned or outside the range
38832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * UCharacter.MIN_VALUE and UCharacter.MAX_VALUE or does not have a name.
38842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <br>
38852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Note calling any methods related to code point names, e.g. get*Name*()
38862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * incurs a one-time initialisation cost to construct the name tables.
38872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch the code point for which to get the name
38882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return most current Unicode name
38892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
38902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static String getName(int ch)
38912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
38922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UCharacterName.INSTANCE.getName(ch, UCharacterNameChoice.UNICODE_CHAR_NAME);
38932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
38942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
38952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
38961537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Returns the names for each of the characters in a string
38972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param s string to format
38982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param separator string to go between names
38992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return string of names
39002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
39012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static String getName(String s, String separator) {
39022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (s.length() == 1) { // handle common case
39032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return getName(s.charAt(0));
39042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
39052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        int cp;
39062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        StringBuilder sb = new StringBuilder();
39072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        for (int i = 0; i < s.length(); i += Character.charCount(cp)) {
39082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            cp = s.codePointAt(i);
39092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if (i != 0) sb.append(separator);
39102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            sb.append(UCharacter.getName(cp));
39112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
39122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return sb.toString();
39132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
39142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
39152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
39161537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Returns null.
39172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Used to return the Unicode_1_Name property value which was of little practical value.
39182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch the code point for which to get the name
39192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return null
39202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @deprecated ICU 49
392193cf604e9dd0525f15bc0a7450b2a35f3884c298Neil Fuller     * @hide original deprecated declaration
39222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
39232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    @Deprecated
39242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static String getName1_0(int ch)
39252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
39262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return null;
39272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
39282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
39292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
39301537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Returns a name for a valid codepoint. Unlike, getName(int) and
39312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * getName1_0(int), this method will return a name even for codepoints that
39322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * are not assigned a name in UnicodeData.txt.
393308ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     *
393408ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <p>The names are returned in the following order.
39352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <ul>
39362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Most current Unicode name if there is any
39372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Unicode 1.0 name if there is any
39382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Extended name in the form of
39392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *      "&lt;codepoint_type-codepoint_hex_digits&gt;". E.g., &lt;noncharacter-fffe&gt;
39402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * </ul>
39412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Note calling any methods related to code point names, e.g. get*Name*()
39422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * incurs a one-time initialisation cost to construct the name tables.
39432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch the code point for which to get the name
39442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return a name for the argument codepoint
39452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
39462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static String getExtendedName(int ch) {
39472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UCharacterName.INSTANCE.getName(ch, UCharacterNameChoice.EXTENDED_CHAR_NAME);
39482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
39492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
39502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
39511537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Returns the corrected name from NameAliases.txt if there is one.
39522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Returns null if the character is unassigned or outside the range
39532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * UCharacter.MIN_VALUE and UCharacter.MAX_VALUE or does not have a name.
39542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <br>
39552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Note calling any methods related to code point names, e.g. get*Name*()
39562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * incurs a one-time initialisation cost to construct the name tables.
39572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch the code point for which to get the name alias
39582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return Unicode name alias, or null
39592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
39602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static String getNameAlias(int ch)
39612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
39622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UCharacterName.INSTANCE.getName(ch, UCharacterNameChoice.CHAR_NAME_ALIAS);
39632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
39642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
39652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
39661537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Returns null.
39672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Used to return the ISO 10646 comment for a character.
39682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * The Unicode ISO_Comment property is deprecated and has no values.
39692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
39702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch The code point for which to get the ISO comment.
39712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *           It must be the case that {@code 0 <= ch <= 0x10ffff}.
39722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return null
39732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @deprecated ICU 49
397493cf604e9dd0525f15bc0a7450b2a35f3884c298Neil Fuller     * @hide original deprecated declaration
39752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
39762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    @Deprecated
39772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static String getISOComment(int ch)
39782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
39792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return null;
39802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
39812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
39822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
39831537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> <p>Finds a Unicode code point by its most current Unicode name and
398408ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * return its code point value. All Unicode names are in uppercase.
39852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Note calling any methods related to code point names, e.g. get*Name*()
39862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * incurs a one-time initialisation cost to construct the name tables.
39872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param name most current Unicode character name whose code point is to
39882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *        be returned
39892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return code point or -1 if name is not found
39902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
39912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int getCharFromName(String name){
39922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UCharacterName.INSTANCE.getCharFromName(
39932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                UCharacterNameChoice.UNICODE_CHAR_NAME, name);
39942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
39952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
39962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
39971537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Returns -1.
39982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>Used to find a Unicode character by its version 1.0 Unicode name and return
399908ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * its code point value.
40002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param name Unicode 1.0 code point name whose code point is to be
40012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *             returned
40022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return -1
40032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @deprecated ICU 49
40042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #getName1_0(int)
400593cf604e9dd0525f15bc0a7450b2a35f3884c298Neil Fuller     * @hide original deprecated declaration
40062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
40072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    @Deprecated
40082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int getCharFromName1_0(String name){
40092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return -1;
40102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
40112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
40122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
40131537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> <p>Find a Unicode character by either its name and return its code
40142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * point value. All Unicode names are in uppercase.
40152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Extended names are all lowercase except for numbers and are contained
401608ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * within angle brackets.
40172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * The names are searched in the following order
40182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <ul>
40192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Most current Unicode name if there is any
40202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Unicode 1.0 name if there is any
40212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Extended name in the form of
402208ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     *      "&lt;codepoint_type-codepoint_hex_digits&gt;". E.g. &lt;noncharacter-FFFE&gt;
40232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * </ul>
40242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Note calling any methods related to code point names, e.g. get*Name*()
40252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * incurs a one-time initialisation cost to construct the name tables.
40262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param name codepoint name
40272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return code point associated with the name or -1 if the name is not
40282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *         found.
40292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
40302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int getCharFromExtendedName(String name){
40312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UCharacterName.INSTANCE.getCharFromName(
40322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                UCharacterNameChoice.EXTENDED_CHAR_NAME, name);
40332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
40342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
40352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
40361537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> <p>Find a Unicode character by its corrected name alias and return
403708ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * its code point value. All Unicode names are in uppercase.
40382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Note calling any methods related to code point names, e.g. get*Name*()
40392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * incurs a one-time initialisation cost to construct the name tables.
40402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param name Unicode name alias whose code point is to be returned
40412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return code point or -1 if name is not found
40422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
40432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int getCharFromNameAlias(String name){
40442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UCharacterName.INSTANCE.getCharFromName(UCharacterNameChoice.CHAR_NAME_ALIAS, name);
40452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
40462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
40472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
40481537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Return the Unicode name for a given property, as given in the
40492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Unicode database file PropertyAliases.txt.  Most properties
40502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * have more than one name.  The nameChoice determines which one
40512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * is returned.
40522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
40532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * In addition, this function maps the property
40542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * UProperty.GENERAL_CATEGORY_MASK to the synthetic names "gcm" /
40552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * "General_Category_Mask".  These names are not in
40562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * PropertyAliases.txt.
40572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
40582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param property UProperty selector.
40592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
40602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param nameChoice UProperty.NameChoice selector for which name
40612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * to get.  All properties have a long name.  Most have a short
40622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * name, but some do not.  Unicode allows for additional names; if
40632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * present these will be returned by UProperty.NameChoice.LONG + i,
40642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * where i=1, 2,...
40652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
40662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return a name, or null if Unicode explicitly defines no name
40672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * ("n/a") for a given property/nameChoice.  If a given nameChoice
40682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * throws an exception, then all larger values of nameChoice will
40692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * throw an exception.  If null is returned for a given
40702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * nameChoice, then other nameChoice values may return non-null
40712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * results.
40722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
40732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @exception IllegalArgumentException thrown if property or
40742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * nameChoice are invalid.
40752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
40762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see UProperty
40772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see UProperty.NameChoice
40782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
40792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static String getPropertyName(int property,
40802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            int nameChoice) {
40812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UPropertyAliases.INSTANCE.getPropertyName(property, nameChoice);
40822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
40832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
40842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
40851537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Return the UProperty selector for a given property name, as
40862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * specified in the Unicode database file PropertyAliases.txt.
40872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Short, long, and any other variants are recognized.
40882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
40892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * In addition, this function maps the synthetic names "gcm" /
40902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * "General_Category_Mask" to the property
40912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * UProperty.GENERAL_CATEGORY_MASK.  These names are not in
40922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * PropertyAliases.txt.
40932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
40942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param propertyAlias the property name to be matched.  The name
40952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * is compared using "loose matching" as described in
40962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * PropertyAliases.txt.
40972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
40982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return a UProperty enum.
40992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
41002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @exception IllegalArgumentException thrown if propertyAlias
41012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * is not recognized.
41022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
41032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see UProperty
41042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
41052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int getPropertyEnum(CharSequence propertyAlias) {
41062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        int propEnum = UPropertyAliases.INSTANCE.getPropertyEnum(propertyAlias);
41072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (propEnum == UProperty.UNDEFINED) {
41082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            throw new IllegalIcuArgumentException("Invalid name: " + propertyAlias);
41092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
41102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return propEnum;
41112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
41122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
41132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
41141537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Return the Unicode name for a given property value, as given in
41152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * the Unicode database file PropertyValueAliases.txt.  Most
41162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * values have more than one name.  The nameChoice determines
41172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * which one is returned.
41182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
41192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Note: Some of the names in PropertyValueAliases.txt can only be
41202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * retrieved using UProperty.GENERAL_CATEGORY_MASK, not
41212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * UProperty.GENERAL_CATEGORY.  These include: "C" / "Other", "L" /
41222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * "Letter", "LC" / "Cased_Letter", "M" / "Mark", "N" / "Number", "P"
41232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * / "Punctuation", "S" / "Symbol", and "Z" / "Separator".
41242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
41252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param property UProperty selector constant.
41262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * UProperty.INT_START &lt;= property &lt; UProperty.INT_LIMIT or
41272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * UProperty.BINARY_START &lt;= property &lt; UProperty.BINARY_LIMIT or
41282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * UProperty.MASK_START &lt; = property &lt; UProperty.MASK_LIMIT.
41292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * If out of range, null is returned.
41302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
41312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param value selector for a value for the given property.  In
41322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * general, valid values range from 0 up to some maximum.  There
41332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * are a few exceptions: (1.) UProperty.BLOCK values begin at the
41342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * non-zero value BASIC_LATIN.getID().  (2.)
41352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * UProperty.CANONICAL_COMBINING_CLASS values are not contiguous
41362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * and range from 0..240.  (3.)  UProperty.GENERAL_CATEGORY_MASK values
41372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * are mask values produced by left-shifting 1 by
41382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * UCharacter.getType().  This allows grouped categories such as
41392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * [:L:] to be represented.  Mask values are non-contiguous.
41402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
41412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param nameChoice UProperty.NameChoice selector for which name
41422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * to get.  All values have a long name.  Most have a short name,
41432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * but some do not.  Unicode allows for additional names; if
41442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * present these will be returned by UProperty.NameChoice.LONG + i,
41452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * where i=1, 2,...
41462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
41472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return a name, or null if Unicode explicitly defines no name
41482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * ("n/a") for a given property/value/nameChoice.  If a given
41492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * nameChoice throws an exception, then all larger values of
41502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * nameChoice will throw an exception.  If null is returned for a
41512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * given nameChoice, then other nameChoice values may return
41522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * non-null results.
41532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
41542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @exception IllegalArgumentException thrown if property, value,
41552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * or nameChoice are invalid.
41562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
41572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see UProperty
41582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see UProperty.NameChoice
41592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
41602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static String getPropertyValueName(int property,
41612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            int value,
41622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            int nameChoice)
41632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
41642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if ((property == UProperty.CANONICAL_COMBINING_CLASS
41652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                || property == UProperty.LEAD_CANONICAL_COMBINING_CLASS
41662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                || property == UProperty.TRAIL_CANONICAL_COMBINING_CLASS)
41672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                && value >= UCharacter.getIntPropertyMinValue(
41682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        UProperty.CANONICAL_COMBINING_CLASS)
41692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        && value <= UCharacter.getIntPropertyMaxValue(
41702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                                UProperty.CANONICAL_COMBINING_CLASS)
41712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                                && nameChoice >= 0 && nameChoice < UProperty.NameChoice.COUNT) {
41722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            // this is hard coded for the valid cc
41732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            // because PropertyValueAliases.txt does not contain all of them
41742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            try {
41752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                return UPropertyAliases.INSTANCE.getPropertyValueName(property, value,
41762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        nameChoice);
41772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
41782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            catch (IllegalArgumentException e) {
41792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                return null;
41802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
41812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
41822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UPropertyAliases.INSTANCE.getPropertyValueName(property, value, nameChoice);
41832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
41842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
41852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
41861537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Return the property value integer for a given value name, as
41872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * specified in the Unicode database file PropertyValueAliases.txt.
41882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Short, long, and any other variants are recognized.
41892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
41902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Note: Some of the names in PropertyValueAliases.txt will only be
41912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * recognized with UProperty.GENERAL_CATEGORY_MASK, not
41922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * UProperty.GENERAL_CATEGORY.  These include: "C" / "Other", "L" /
41932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * "Letter", "LC" / "Cased_Letter", "M" / "Mark", "N" / "Number", "P"
41942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * / "Punctuation", "S" / "Symbol", and "Z" / "Separator".
41952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
41962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param property UProperty selector constant.
41972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * UProperty.INT_START &lt;= property &lt; UProperty.INT_LIMIT or
41982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * UProperty.BINARY_START &lt;= property &lt; UProperty.BINARY_LIMIT or
41992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * UProperty.MASK_START &lt; = property &lt; UProperty.MASK_LIMIT.
42002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Only these properties can be enumerated.
42012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
42022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param valueAlias the value name to be matched.  The name is
42032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * compared using "loose matching" as described in
42042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * PropertyValueAliases.txt.
42052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
42062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return a value integer.  Note: UProperty.GENERAL_CATEGORY
42072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * values are mask values produced by left-shifting 1 by
42082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * UCharacter.getType().  This allows grouped categories such as
42092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * [:L:] to be represented.
42102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
42112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see UProperty
42122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @throws IllegalArgumentException if property is not a valid UProperty
42132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *         selector or valueAlias is not a value of this property
42142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
42152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int getPropertyValueEnum(int property, CharSequence valueAlias) {
42162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        int propEnum = UPropertyAliases.INSTANCE.getPropertyValueEnum(property, valueAlias);
42172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (propEnum == UProperty.UNDEFINED) {
42182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            throw new IllegalIcuArgumentException("Invalid name: " + valueAlias);
42192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
42202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return propEnum;
42212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
42222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
42232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
42242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Same as {@link #getPropertyValueEnum(int, CharSequence)}, except doesn't throw exception. Instead, returns UProperty.UNDEFINED.
42252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param property  Same as {@link #getPropertyValueEnum(int, CharSequence)}
42262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param valueAlias    Same as {@link #getPropertyValueEnum(int, CharSequence)}
42272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return returns UProperty.UNDEFINED if the value is not valid, otherwise the value.
42282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @deprecated This API is ICU internal only.
422993cf604e9dd0525f15bc0a7450b2a35f3884c298Neil Fuller     * @hide original deprecated declaration
4230836e6b40a94ec3fb7545a76cb072960442b7eee9Neil Fuller     * @hide draft / provisional / internal are hidden on Android
42312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
42322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    @Deprecated
42332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int getPropertyValueEnumNoThrow(int property, CharSequence valueAlias) {
42342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UPropertyAliases.INSTANCE.getPropertyValueEnumNoThrow(property, valueAlias);
42352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
42362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
42372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
42382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
42391537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Returns a code point corresponding to the two surrogate code units.
42402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
42412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param lead the lead char
42422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param trail the trail char
42432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return code point if surrogate characters are valid.
42442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @exception IllegalArgumentException thrown when the code units do
42452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *            not form a valid code point
42462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
42472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int getCodePoint(char lead, char trail)
42482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
42492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (Character.isSurrogatePair(lead, trail)) {
42502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return Character.toCodePoint(lead, trail);
42512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
42522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        throw new IllegalArgumentException("Illegal surrogate characters");
42532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
42542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
42552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
42561537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Returns the code point corresponding to the BMP code point.
42572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
42582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param char16 the BMP code point
42592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return code point if argument is a valid character.
42602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @exception IllegalArgumentException thrown when char16 is not a valid
42612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *            code point
42622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
42632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int getCodePoint(char char16)
42642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
42652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (UCharacter.isLegal(char16)) {
42662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return char16;
42672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
42682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        throw new IllegalArgumentException("Illegal codepoint");
42692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
42702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
42712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
42722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Returns the uppercase version of the argument string.
42732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Casing is dependent on the default locale and context-sensitive.
42742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param str source string to be performed on
42752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return uppercase version of the argument string
42762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
42772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static String toUpperCase(String str)
42782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
4279fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert        return toUpperCase(getDefaultCaseLocale(), str);
42802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
42812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
42822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
42832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Returns the lowercase version of the argument string.
42842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Casing is dependent on the default locale and context-sensitive
42852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param str source string to be performed on
42862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return lowercase version of the argument string
42872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
42882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static String toLowerCase(String str)
42892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
4290fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert        return toLowerCase(getDefaultCaseLocale(), str);
42912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
42922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
42932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
429408ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <p>Returns the titlecase version of the argument string.
42952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>Position for titlecasing is determined by the argument break
42962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * iterator, hence the user can customize his break iterator for
42972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * a specialized titlecasing. In this case only the forward iteration
42982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * needs to be implemented.
42992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * If the break iterator passed in is null, the default Unicode algorithm
43002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * will be used to determine the titlecase positions.
430108ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     *
43022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>Only positions returned by the break iterator will be title cased,
430308ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * character in between the positions will all be in lower case.
430408ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <p>Casing is dependent on the default locale and context-sensitive
43052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param str source string to be performed on
43062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param breakiter break iterator to determine the positions in which
43072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *        the character should be title cased.
43082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return lowercase version of the argument string
43092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
43102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static String toTitleCase(String str, BreakIterator breakiter)
43112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
4312fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert        return toTitleCase(Locale.getDefault(), str, breakiter, 0);
4313fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert    }
4314fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert
4315fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert    private static int getDefaultCaseLocale() {
4316fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert        return UCaseProps.getCaseLocale(Locale.getDefault());
4317fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert    }
4318fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert
4319fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert    private static int getCaseLocale(Locale locale) {
4320fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert        if (locale == null) {
4321fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert            locale = Locale.getDefault();
4322fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert        }
4323fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert        return UCaseProps.getCaseLocale(locale);
4324fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert    }
4325fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert
4326fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert    private static int getCaseLocale(ULocale locale) {
4327fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert        if (locale == null) {
4328fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert            locale = ULocale.getDefault();
4329fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert        }
4330fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert        return UCaseProps.getCaseLocale(locale);
4331fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert    }
4332fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert
4333fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert    private static String toLowerCase(int caseLocale, String str) {
4334fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert        if (str.length() <= 100) {
4335fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert            if (str.isEmpty()) {
4336fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert                return str;
4337fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert            }
4338fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert            // Collect and apply only changes.
4339fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert            // Good if no or few changes. Bad (slow) if many changes.
4340fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert            Edits edits = new Edits();
4341fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert            StringBuilder replacementChars = CaseMapImpl.toLower(
4342fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert                    caseLocale, CaseMapImpl.OMIT_UNCHANGED_TEXT, str, new StringBuilder(), edits);
4343fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert            return applyEdits(str, replacementChars, edits);
4344fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert        } else {
4345fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert            return CaseMapImpl.toLower(caseLocale, 0, str,
4346fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert                    new StringBuilder(str.length()), null).toString();
4347fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert        }
4348fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert    }
4349fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert
4350fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert    private static String toUpperCase(int caseLocale, String str) {
4351fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert        if (str.length() <= 100) {
4352fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert            if (str.isEmpty()) {
4353fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert                return str;
4354fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert            }
4355fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert            // Collect and apply only changes.
4356fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert            // Good if no or few changes. Bad (slow) if many changes.
4357fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert            Edits edits = new Edits();
4358fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert            StringBuilder replacementChars = CaseMapImpl.toUpper(
4359fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert                    caseLocale, CaseMapImpl.OMIT_UNCHANGED_TEXT, str, new StringBuilder(), edits);
4360fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert            return applyEdits(str, replacementChars, edits);
4361fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert        } else {
4362fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert            return CaseMapImpl.toUpper(caseLocale, 0, str,
4363fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert                    new StringBuilder(str.length()), null).toString();
4364fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert        }
4365fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert    }
4366fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert
4367fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert    private static String toTitleCase(int caseLocale, int options, BreakIterator titleIter, String str) {
4368fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert        if (str.length() <= 100) {
4369fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert            if (str.isEmpty()) {
4370fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert                return str;
4371fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert            }
4372fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert            // Collect and apply only changes.
4373fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert            // Good if no or few changes. Bad (slow) if many changes.
4374fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert            Edits edits = new Edits();
4375fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert            StringBuilder replacementChars = CaseMapImpl.toTitle(
4376fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert                    caseLocale, options | CaseMapImpl.OMIT_UNCHANGED_TEXT, titleIter, str,
4377fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert                    new StringBuilder(), edits);
4378fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert            return applyEdits(str, replacementChars, edits);
4379fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert        } else {
4380fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert            return CaseMapImpl.toTitle(caseLocale, options, titleIter, str,
4381fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert                    new StringBuilder(str.length()), null).toString();
4382fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert        }
4383fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert    }
4384fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert
4385fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert    private static String applyEdits(String str, StringBuilder replacementChars, Edits edits) {
4386fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert        if (!edits.hasChanges()) {
4387fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert            return str;
4388fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert        }
4389fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert        StringBuilder result = new StringBuilder(str.length() + edits.lengthDelta());
4390fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert        for (Edits.Iterator ei = edits.getCoarseIterator(); ei.next();) {
4391fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert            if (ei.hasChange()) {
4392fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert                int i = ei.replacementIndex();
4393fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert                result.append(replacementChars, i, i + ei.newLength());
4394fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert            } else {
4395fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert                int i = ei.sourceIndex();
4396fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert                result.append(str, i, i + ei.oldLength());
4397fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert            }
4398fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert        }
4399fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert        return result.toString();
44002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
44012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
44022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
44032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Returns the uppercase version of the argument string.
44042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Casing is dependent on the argument locale and context-sensitive.
44052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param locale which string is to be converted in
44062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param str source string to be performed on
44072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return uppercase version of the argument string
44082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
44092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static String toUpperCase(Locale locale, String str)
44102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
4411fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert        return toUpperCase(getCaseLocale(locale), str);
44122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
44132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
44142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
44152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Returns the uppercase version of the argument string.
44162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Casing is dependent on the argument locale and context-sensitive.
44172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param locale which string is to be converted in
44182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param str source string to be performed on
44192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return uppercase version of the argument string
44202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
44212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static String toUpperCase(ULocale locale, String str) {
4422fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert        return toUpperCase(getCaseLocale(locale), str);
44232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
44242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
44252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
44262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Returns the lowercase version of the argument string.
44272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Casing is dependent on the argument locale and context-sensitive
44282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param locale which string is to be converted in
44292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param str source string to be performed on
44302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return lowercase version of the argument string
44312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
44322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static String toLowerCase(Locale locale, String str)
44332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
4434fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert        return toLowerCase(getCaseLocale(locale), str);
44352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
44362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
44372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
44382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Returns the lowercase version of the argument string.
44392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Casing is dependent on the argument locale and context-sensitive
44402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param locale which string is to be converted in
44412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param str source string to be performed on
44422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return lowercase version of the argument string
44432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
44442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static String toLowerCase(ULocale locale, String str) {
4445fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert        return toLowerCase(getCaseLocale(locale), str);
44462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
44472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
44482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
444908ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <p>Returns the titlecase version of the argument string.
44502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>Position for titlecasing is determined by the argument break
44512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * iterator, hence the user can customize his break iterator for
44522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * a specialized titlecasing. In this case only the forward iteration
44532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * needs to be implemented.
44542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * If the break iterator passed in is null, the default Unicode algorithm
44552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * will be used to determine the titlecase positions.
445608ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     *
44572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>Only positions returned by the break iterator will be title cased,
445808ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * character in between the positions will all be in lower case.
445908ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <p>Casing is dependent on the argument locale and context-sensitive
44602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param locale which string is to be converted in
44612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param str source string to be performed on
44622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param breakiter break iterator to determine the positions in which
44632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *        the character should be title cased.
44642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return lowercase version of the argument string
44652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
44662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static String toTitleCase(Locale locale, String str,
44672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            BreakIterator breakiter)
44682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
4469fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert        return toTitleCase(locale, str, breakiter, 0);
44702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
44712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
44722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
447308ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <p>Returns the titlecase version of the argument string.
44742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>Position for titlecasing is determined by the argument break
44752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * iterator, hence the user can customize his break iterator for
44762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * a specialized titlecasing. In this case only the forward iteration
44772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * needs to be implemented.
44782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * If the break iterator passed in is null, the default Unicode algorithm
44792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * will be used to determine the titlecase positions.
448008ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     *
44812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>Only positions returned by the break iterator will be title cased,
448208ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * character in between the positions will all be in lower case.
448308ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <p>Casing is dependent on the argument locale and context-sensitive
44842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param locale which string is to be converted in
44852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param str source string to be performed on
44862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param titleIter break iterator to determine the positions in which
44872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *        the character should be title cased.
44882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return lowercase version of the argument string
44892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
44902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static String toTitleCase(ULocale locale, String str,
44912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            BreakIterator titleIter) {
44922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return toTitleCase(locale, str, titleIter, 0);
44932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
44942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
44952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
449608ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <p>Returns the titlecase version of the argument string.
44972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>Position for titlecasing is determined by the argument break
44982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * iterator, hence the user can customize his break iterator for
44992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * a specialized titlecasing. In this case only the forward iteration
45002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * needs to be implemented.
45012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * If the break iterator passed in is null, the default Unicode algorithm
45022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * will be used to determine the titlecase positions.
450308ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     *
45042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>Only positions returned by the break iterator will be title cased,
450508ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * character in between the positions will all be in lower case.
450608ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <p>Casing is dependent on the argument locale and context-sensitive
45072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param locale which string is to be converted in
45082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param str source string to be performed on
45092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param titleIter break iterator to determine the positions in which
45102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *        the character should be title cased.
45112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param options bit set to modify the titlecasing operation
45122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return lowercase version of the argument string
45132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #TITLECASE_NO_LOWERCASE
45142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #TITLECASE_NO_BREAK_ADJUSTMENT
45152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
45162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static String toTitleCase(ULocale locale, String str,
4517fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert            BreakIterator titleIter, int options) {
45182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if(titleIter == null) {
4519fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert            if (locale == null) {
4520fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert                locale = ULocale.getDefault();
4521fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert            }
45222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            titleIter = BreakIterator.getWordInstance(locale);
45232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
45242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        titleIter.setText(str);
4525fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert        return toTitleCase(getCaseLocale(locale), options, titleIter, str);
45262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
45272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
45282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
4529f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert    private static final int BREAK_MASK =
4530f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert            (1<<UCharacterCategory.DECIMAL_DIGIT_NUMBER)
4531f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert            | (1<<UCharacterCategory.OTHER_LETTER)
4532f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert            | (1<<UCharacterCategory.MODIFIER_LETTER);
4533f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert
4534f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert    /**
4535f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert     * Return a string with just the first word titlecased, for menus and UI, etc. This does not affect most of the string,
4536f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert     * and sometimes has no effect at all; the original string is returned whenever casing
4537f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert     * would not be appropriate for the first word (such as for CJK characters or initial numbers).
4538f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert     * Initial non-letters are skipped in order to find the character to change.
4539f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert     * Characters past the first affected are left untouched: see also TITLECASE_NO_LOWERCASE.
4540f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert     * <p>Examples:
4541f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert     * <table border='1'><tr><th>Source</th><th>Result</th><th>Locale</th></tr>
4542f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert     * <tr><td>anglo-American locale</td><td>Anglo-American locale</td></tr>
4543f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert     * <tr><td>“contact us”</td><td>“Contact us”</td></tr>
4544f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert     * <tr><td>49ers win!</td><td>49ers win!</td></tr>
4545f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert     * <tr><td>丰(abc)</td><td>丰(abc)</td></tr>
4546f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert     * <tr><td>«ijs»</td><td>«Ijs»</td></tr>
4547f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert     * <tr><td>«ijs»</td><td>«IJs»</td><td>nl-BE</td></tr>
4548f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert     * <tr><td>«ijs»</td><td>«İjs»</td><td>tr-DE</td></tr>
4549f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert     * </table>
4550f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert     * @param locale the locale for accessing exceptional behavior (eg for tr).
4551f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert     * @param str the source string to change
4552f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert     * @return the modified string, or the original if no modifications were necessary.
45532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @deprecated ICU internal only
455493cf604e9dd0525f15bc0a7450b2a35f3884c298Neil Fuller     * @hide original deprecated declaration
4555836e6b40a94ec3fb7545a76cb072960442b7eee9Neil Fuller     * @hide draft / provisional / internal are hidden on Android
4556f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert     */
4557f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert    @Deprecated
4558f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert    public static String toTitleFirst(ULocale locale, String str) {
4559f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        int c = 0;
4560f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        for (int i = 0; i < str.length(); i += UCharacter.charCount(c)) {
4561f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert            c = UCharacter.codePointAt(str, i);
4562f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert            int propertyMask = UCharacter.getIntPropertyValue(c, UProperty.GENERAL_CATEGORY_MASK);
4563f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert            if ((propertyMask & BREAK_MASK) != 0) { // handle "49ers", initial CJK
4564f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert                break;
4565f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert            }
4566f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert            if (UCaseProps.INSTANCE.getType(c) == UCaseProps.NONE) {
4567f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert                continue;
4568f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert            }
4569f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert
4570f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert            // we now have the first cased character
4571f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert            // What we really want is something like:
4572f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert            // String titled = UCharacter.toTitleCase(locale, str, i, outputCharsTaken);
4573f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert            // That is, just give us the titlecased string, for the locale, at i and following,
4574f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert            // and tell us how many characters are replaced.
4575f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert            // The following won't work completely: it needs some more substantial changes to UCaseProps
4576f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert
4577f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert            String substring = str.substring(i, i+UCharacter.charCount(c));
4578f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert            String titled = UCharacter.toTitleCase(locale, substring, BreakIterator.getSentenceInstance(locale), 0);
4579f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert
4580f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert            // skip if no change
4581f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert            if (titled.codePointAt(0) == c) {
4582f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert                // Using 0 is safe, since any change in titling will not have first initial character
4583f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert                break;
4584f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert            }
4585f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert            StringBuilder result = new StringBuilder(str.length()).append(str, 0, i);
4586f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert            int startOfSuffix;
4587f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert
4588f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert            // handle dutch, but check first for 'i', since that's faster. Should be built into UCaseProps.
4589f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert
4590f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert            if (c == 'i' && locale.getLanguage().equals("nl") && i < str.length() && str.charAt(i+1) == 'j') {
4591f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert                result.append("IJ");
4592f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert                startOfSuffix = 2;
4593f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert            } else {
4594f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert                result.append(titled);
4595f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert                startOfSuffix = i + UCharacter.charCount(c);
4596f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert            }
4597f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert
4598f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert            // add the remainder, and return
4599f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert            return result.append(str, startOfSuffix, str.length()).toString();
4600f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        }
4601f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        return str; // no change
4602f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert    }
46032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
46042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
460508ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <strong>[icu]</strong> <p>Returns the titlecase version of the argument string.
46062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>Position for titlecasing is determined by the argument break
46072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * iterator, hence the user can customize his break iterator for
46082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * a specialized titlecasing. In this case only the forward iteration
46092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * needs to be implemented.
46102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * If the break iterator passed in is null, the default Unicode algorithm
46112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * will be used to determine the titlecase positions.
461208ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     *
46132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>Only positions returned by the break iterator will be title cased,
461408ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * character in between the positions will all be in lower case.
461508ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <p>Casing is dependent on the argument locale and context-sensitive
46162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param locale which string is to be converted in
46172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param str source string to be performed on
46182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param titleIter break iterator to determine the positions in which
46192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *        the character should be title cased.
46202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param options bit set to modify the titlecasing operation
46212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return lowercase version of the argument string
46222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #TITLECASE_NO_LOWERCASE
46232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #TITLECASE_NO_BREAK_ADJUSTMENT
46242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
46252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static String toTitleCase(Locale locale, String str,
46262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            BreakIterator titleIter,
46272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            int options) {
4628fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert        if(titleIter == null) {
4629fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert            titleIter = BreakIterator.getWordInstance(locale);
4630fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert        }
4631fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert        titleIter.setText(str);
4632fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert        return toTitleCase(getCaseLocale(locale), options, titleIter, str);
46332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
46342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
46352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
46361537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> The given character is mapped to its case folding equivalent according
46372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * to UnicodeData.txt and CaseFolding.txt; if the character has no case
46382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * folding equivalent, the character itself is returned.
46392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
46402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>This function only returns the simple, single-code point case mapping.
46412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Full case mappings should be used whenever possible because they produce
46422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * better results by working on whole strings.
46432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * They can map to a result string with a different length as appropriate.
46442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Full case mappings are applied by the case mapping functions
46452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * that take String parameters rather than code points (int).
46462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * See also the User Guide chapter on C/POSIX migration:
46472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * http://www.icu-project.org/userguide/posix.html#case_mappings
46482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
46492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch             the character to be converted
46502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param defaultmapping Indicates whether the default mappings defined in
46512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                       CaseFolding.txt are to be used, otherwise the
46522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                       mappings for dotted I and dotless i marked with
46532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                       'T' in CaseFolding.txt are included.
46542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return               the case folding equivalent of the character, if
46552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                       any; otherwise the character itself.
46562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see                  #foldCase(String, boolean)
46572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
46582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int foldCase(int ch, boolean defaultmapping) {
46592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return foldCase(ch, defaultmapping ? FOLD_CASE_DEFAULT : FOLD_CASE_EXCLUDE_SPECIAL_I);
46602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
46612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
46622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
46631537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> The given string is mapped to its case folding equivalent according to
46642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * UnicodeData.txt and CaseFolding.txt; if any character has no case
46652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * folding equivalent, the character itself is returned.
46662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * "Full", multiple-code point case folding mappings are returned here.
46672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * For "simple" single-code point mappings use the API
46682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * foldCase(int ch, boolean defaultmapping).
46692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param str            the String to be converted
46702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param defaultmapping Indicates whether the default mappings defined in
46712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                       CaseFolding.txt are to be used, otherwise the
46722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                       mappings for dotted I and dotless i marked with
46732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                       'T' in CaseFolding.txt are included.
46742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return               the case folding equivalent of the character, if
46752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                       any; otherwise the character itself.
46762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see                  #foldCase(int, boolean)
46772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
46782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static String foldCase(String str, boolean defaultmapping) {
46792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return foldCase(str, defaultmapping ? FOLD_CASE_DEFAULT : FOLD_CASE_EXCLUDE_SPECIAL_I);
46802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
46812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
46822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
46831537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Option value for case folding: use default mappings defined in
46842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * CaseFolding.txt.
46852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
46862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final int FOLD_CASE_DEFAULT    =      0x0000;
46872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
46881537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Option value for case folding:
46892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Use the modified set of mappings provided in CaseFolding.txt to handle dotted I
46902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * and dotless i appropriately for Turkic languages (tr, az).
46912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
46922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>Before Unicode 3.2, CaseFolding.txt contains mappings marked with 'I' that
46932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * are to be included for default mappings and
46942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * excluded for the Turkic-specific mappings.
46952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
46962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>Unicode 3.2 CaseFolding.txt instead contains mappings marked with 'T' that
46972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * are to be excluded for default mappings and
46982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * included for the Turkic-specific mappings.
46992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
47002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final int FOLD_CASE_EXCLUDE_SPECIAL_I = 0x0001;
47012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
47022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
47031537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> The given character is mapped to its case folding equivalent according
47042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * to UnicodeData.txt and CaseFolding.txt; if the character has no case
47052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * folding equivalent, the character itself is returned.
47062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
47072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>This function only returns the simple, single-code point case mapping.
47082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Full case mappings should be used whenever possible because they produce
47092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * better results by working on whole strings.
47102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * They can map to a result string with a different length as appropriate.
47112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Full case mappings are applied by the case mapping functions
47122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * that take String parameters rather than code points (int).
47132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * See also the User Guide chapter on C/POSIX migration:
47142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * http://www.icu-project.org/userguide/posix.html#case_mappings
47152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
47162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch the character to be converted
47172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param options A bit set for special processing. Currently the recognised options
47182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * are FOLD_CASE_EXCLUDE_SPECIAL_I and FOLD_CASE_DEFAULT
47192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the case folding equivalent of the character, if any; otherwise the
47202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * character itself.
47212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #foldCase(String, boolean)
47222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
47232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int foldCase(int ch, int options) {
47242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UCaseProps.INSTANCE.fold(ch, options);
47252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
47262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
47272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
47281537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> The given string is mapped to its case folding equivalent according to
47292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * UnicodeData.txt and CaseFolding.txt; if any character has no case
47302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * folding equivalent, the character itself is returned.
47312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * "Full", multiple-code point case folding mappings are returned here.
47322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * For "simple" single-code point mappings use the API
47332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * foldCase(int ch, boolean defaultmapping).
47342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param str the String to be converted
47352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param options A bit set for special processing. Currently the recognised options
47362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                are FOLD_CASE_EXCLUDE_SPECIAL_I and FOLD_CASE_DEFAULT
47372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the case folding equivalent of the character, if any; otherwise the
47382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *         character itself.
47392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #foldCase(int, boolean)
47402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
47412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final String foldCase(String str, int options) {
4742fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert        if (str.length() <= 100) {
4743fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert            if (str.isEmpty()) {
4744fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert                return str;
47452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
4746fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert            // Collect and apply only changes.
4747fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert            // Good if no or few changes. Bad (slow) if many changes.
4748fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert            Edits edits = new Edits();
4749fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert            StringBuilder replacementChars = CaseMapImpl.fold(
4750fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert                    options | CaseMapImpl.OMIT_UNCHANGED_TEXT, str, new StringBuilder(), edits);
4751fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert            return applyEdits(str, replacementChars, edits);
4752fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert        } else {
4753fa7f12e3b3983567949f50541e4014e822e9d42cFredrik Roubert            return CaseMapImpl.fold(options, str, new StringBuilder(str.length()), null).toString();
47542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
47552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
47562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
47572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
47581537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Returns the numeric value of a Han character.
47592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
47602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>This returns the value of Han 'numeric' code points,
47612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * including those for zero, ten, hundred, thousand, ten thousand,
47622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * and hundred million.
47632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * This includes both the standard and 'checkwriting'
47642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * characters, the 'big circle' zero character, and the standard
47652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * zero character.
47662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
47672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>Note: The Unicode Standard has numeric values for more
47682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Han characters recognized by this method
47692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * (see {@link #getNumericValue(int)} and the UCD file DerivedNumericValues.txt),
47702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * and a {@link android.icu.text.NumberFormat} can be used with
47712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * a Chinese {@link android.icu.text.NumberingSystem}.
47722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
47732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point to query
47742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return value if it is a Han 'numeric character,' otherwise return -1.
47752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
47762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int getHanNumericValue(int ch)
47772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
47782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        switch(ch)
47792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        {
47802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case IDEOGRAPHIC_NUMBER_ZERO_ :
47812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_COMPLEX_ZERO_ :
47822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return 0; // Han Zero
47832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_FIRST_ :
47842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_COMPLEX_ONE_ :
47852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return 1; // Han One
47862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_SECOND_ :
47872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_COMPLEX_TWO_ :
47882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return 2; // Han Two
47892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_THIRD_ :
47902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_COMPLEX_THREE_ :
47912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return 3; // Han Three
47922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_FOURTH_ :
47932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_COMPLEX_FOUR_ :
47942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return 4; // Han Four
47952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_FIFTH_ :
47962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_COMPLEX_FIVE_ :
47972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return 5; // Han Five
47982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_SIXTH_ :
47992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_COMPLEX_SIX_ :
48002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return 6; // Han Six
48012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_SEVENTH_ :
48022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_COMPLEX_SEVEN_ :
48032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return 7; // Han Seven
48042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_EIGHTH_ :
48052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_COMPLEX_EIGHT_ :
48062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return 8; // Han Eight
48072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_NINETH_ :
48082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_COMPLEX_NINE_ :
48092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return 9; // Han Nine
48102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_TEN_ :
48112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_COMPLEX_TEN_ :
48122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return 10;
48132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_HUNDRED_ :
48142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_COMPLEX_HUNDRED_ :
48152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return 100;
48162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_THOUSAND_ :
48172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_COMPLEX_THOUSAND_ :
48182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return 1000;
48192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_TEN_THOUSAND_ :
48202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return 10000;
48212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_HUNDRED_MILLION_ :
48222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return 100000000;
48232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
48242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return -1; // no value
48252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
48262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
48272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
482808ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <strong>[icu]</strong> <p>Returns an iterator for character types, iterating over codepoints.
482908ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <p>Example of use:<br>
48302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <pre>
48312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * RangeValueIterator iterator = UCharacter.getTypeIterator();
48322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * RangeValueIterator.Element element = new RangeValueIterator.Element();
48332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * while (iterator.next(element)) {
48342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *     System.out.println("Codepoint \\u" +
48352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                        Integer.toHexString(element.start) +
48362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                        " to codepoint \\u" +
48372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                        Integer.toHexString(element.limit - 1) +
48382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                        " has the character type " +
48392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                        element.value);
48402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * }
48412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * </pre>
48422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return an iterator
48432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
48442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static RangeValueIterator getTypeIterator()
48452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
48462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return new UCharacterTypeIterator();
48472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
48482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
48492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final class UCharacterTypeIterator implements RangeValueIterator {
48502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        UCharacterTypeIterator() {
48512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            reset();
48522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
48532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
48542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // implements RangeValueIterator
4855f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        @Override
48562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public boolean next(Element element) {
48572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if(trieIterator.hasNext() && !(range=trieIterator.next()).leadSurrogate) {
48582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                element.start=range.startCodePoint;
48592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                element.limit=range.endCodePoint+1;
48602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                element.value=range.value;
48612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                return true;
48622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            } else {
48632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                return false;
48642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
48652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
48662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
48672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // implements RangeValueIterator
4868f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        @Override
48692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public void reset() {
48702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            trieIterator=UCharacterProperty.INSTANCE.m_trie_.iterator(MASK_TYPE);
48712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
48722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
48732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        private Iterator<Trie2.Range> trieIterator;
48742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        private Trie2.Range range;
48752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
48762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        private static final class MaskType implements Trie2.ValueMapper {
48772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            // Extracts the general category ("character type") from the trie value.
4878f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert            @Override
48792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            public int map(int value) {
48802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                return value & UCharacterProperty.TYPE_MASK;
48812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
48822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
48832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        private static final MaskType MASK_TYPE=new MaskType();
48842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
48852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
48862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
488708ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <strong>[icu]</strong> <p>Returns an iterator for character names, iterating over codepoints.
48882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>This API only gets the iterator for the modern, most up-to-date
48892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Unicode names. For older 1.0 Unicode names use get1_0NameIterator() or
489008ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * for extended names use getExtendedNameIterator().
489108ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <p>Example of use:<br>
48922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <pre>
48932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * ValueIterator iterator = UCharacter.getNameIterator();
48942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * ValueIterator.Element element = new ValueIterator.Element();
48952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * while (iterator.next(element)) {
48962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *     System.out.println("Codepoint \\u" +
48972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                        Integer.toHexString(element.codepoint) +
48982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                        " has the name " + (String)element.value);
48992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * }
49002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * </pre>
49012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>The maximal range which the name iterator iterates is from
490208ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * UCharacter.MIN_VALUE to UCharacter.MAX_VALUE.
49032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return an iterator
49042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
49052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static ValueIterator getNameIterator(){
49062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return new UCharacterNameIterator(UCharacterName.INSTANCE,
49072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                UCharacterNameChoice.UNICODE_CHAR_NAME);
49082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
49092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
49102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
49111537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Returns an empty iterator.
491208ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <p>Used to return an iterator for the older 1.0 Unicode character names, iterating over codepoints.
49132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return an empty iterator
49142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @deprecated ICU 49
49152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #getName1_0(int)
491693cf604e9dd0525f15bc0a7450b2a35f3884c298Neil Fuller     * @hide original deprecated declaration
49172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
49182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    @Deprecated
49192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static ValueIterator getName1_0Iterator(){
49202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return new DummyValueIterator();
49212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
49222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
49232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final class DummyValueIterator implements ValueIterator {
4924f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        @Override
49252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public boolean next(Element element) { return false; }
4926f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        @Override
49272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public void reset() {}
4928f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert        @Override
49292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public void setRange(int start, int limit) {}
49302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
49312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
49322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
493308ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <strong>[icu]</strong> <p>Returns an iterator for character names, iterating over codepoints.
49342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>This API only gets the iterator for the extended names.
49352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * For modern, most up-to-date Unicode names use getNameIterator() or
493608ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * for older 1.0 Unicode names use get1_0NameIterator().
493708ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <p>Example of use:<br>
49382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <pre>
49392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * ValueIterator iterator = UCharacter.getExtendedNameIterator();
49402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * ValueIterator.Element element = new ValueIterator.Element();
49412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * while (iterator.next(element)) {
49422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *     System.out.println("Codepoint \\u" +
49432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                        Integer.toHexString(element.codepoint) +
49442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                        " has the name " + (String)element.value);
49452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * }
49462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * </pre>
49472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>The maximal range which the name iterator iterates is from
49482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return an iterator
49492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
49502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static ValueIterator getExtendedNameIterator(){
49512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return new UCharacterNameIterator(UCharacterName.INSTANCE,
49522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                UCharacterNameChoice.EXTENDED_CHAR_NAME);
49532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
49542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
49552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
495608ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <strong>[icu]</strong> Returns the "age" of the code point.
49572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>The "age" is the Unicode version when the code point was first
49582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * designated (as a non-character or for Private Use) or assigned a
49592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * character.
49602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>This can be useful to avoid emitting code points to receiving
496108ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * processes that do not accept newer characters.
496208ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <p>The data is from the UCD file DerivedAge.txt.
49632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch The code point.
49642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the Unicode version number
49652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
49662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static VersionInfo getAge(int ch)
49672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
49682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (ch < MIN_VALUE || ch > MAX_VALUE) {
49692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            throw new IllegalArgumentException("Codepoint out of bounds");
49702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
49712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UCharacterProperty.INSTANCE.getAge(ch);
49722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
49732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
49742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
497508ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <strong>[icu]</strong> <p>Check a binary Unicode property for a code point.
49762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>Unicode, especially in version 3.2, defines many more properties
497708ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * than the original set in UnicodeData.txt.
49782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>This API is intended to reflect Unicode properties as defined in
49792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * the Unicode Character Database (UCD) and Unicode Technical Reports
498008ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * (UTR).
49812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>For details about the properties see
498208ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <a href=http://www.unicode.org/>http://www.unicode.org/</a>.
49832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>For names of Unicode properties see the UCD file
498408ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * PropertyAliases.txt.
498508ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <p>This API does not check the validity of the codepoint.
49862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>Important: If ICU is built with UCD files from Unicode versions
49872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * below 3.2, then properties marked with "new" are not or
498808ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * not fully available.
49892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point to test.
49901fba789ac68efdd9120a7373f49daef42833e674Neil Fuller     * @param property selector constant from android.icu.lang.UProperty,
49912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *        identifies which binary property to check.
49922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true or false according to the binary Unicode property value
49932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *         for ch. Also false if property is out of bounds or if the
49942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *         Unicode version does not have data for the property at all, or
49952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *         not for this code point.
49962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see android.icu.lang.UProperty
49972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
49982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean hasBinaryProperty(int ch, int property)
49992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
50002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UCharacterProperty.INSTANCE.hasBinaryProperty(ch, property);
50012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
50022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
50032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
500408ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <strong>[icu]</strong> <p>Check if a code point has the Alphabetic Unicode property.
500508ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <p>Same as UCharacter.hasBinaryProperty(ch, UProperty.ALPHABETIC).
500608ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <p>Different from UCharacter.isLetter(ch)!
50072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch codepoint to be tested
50082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
50092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isUAlphabetic(int ch)
50102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
50112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return hasBinaryProperty(ch, UProperty.ALPHABETIC);
50122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
50132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
50142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
501508ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <strong>[icu]</strong> <p>Check if a code point has the Lowercase Unicode property.
501608ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <p>Same as UCharacter.hasBinaryProperty(ch, UProperty.LOWERCASE).
501708ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <p>This is different from UCharacter.isLowerCase(ch)!
50182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch codepoint to be tested
50192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
50202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isULowercase(int ch)
50212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
50222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return hasBinaryProperty(ch, UProperty.LOWERCASE);
50232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
50242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
50252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
502608ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <strong>[icu]</strong> <p>Check if a code point has the Uppercase Unicode property.
502708ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <p>Same as UCharacter.hasBinaryProperty(ch, UProperty.UPPERCASE).
502808ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <p>This is different from UCharacter.isUpperCase(ch)!
50292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch codepoint to be tested
50302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
50312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isUUppercase(int ch)
50322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
50332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return hasBinaryProperty(ch, UProperty.UPPERCASE);
50342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
50352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
50362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
503708ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <strong>[icu]</strong> <p>Check if a code point has the White_Space Unicode property.
503808ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <p>Same as UCharacter.hasBinaryProperty(ch, UProperty.WHITE_SPACE).
50392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>This is different from both UCharacter.isSpace(ch) and
504008ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * UCharacter.isWhitespace(ch)!
50412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch codepoint to be tested
50422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
50432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isUWhiteSpace(int ch)
50442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
50452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return hasBinaryProperty(ch, UProperty.WHITE_SPACE);
50462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
50472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
50482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
50491537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> <p>Returns the property value for an Unicode property type of a code point.
505008ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * Also returns binary and mask property values.
50512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>Unicode, especially in version 3.2, defines many more properties than
505208ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * the original set in UnicodeData.txt.
50532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>The properties APIs are intended to reflect Unicode properties as
50542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * defined in the Unicode Character Database (UCD) and Unicode Technical
50552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Reports (UTR). For details about the properties see
505608ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * http://www.unicode.org/.
50572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>For names of Unicode properties see the UCD file PropertyAliases.txt.
505808ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     *
50592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <pre>
50602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Sample usage:
50612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * int ea = UCharacter.getIntPropertyValue(c, UProperty.EAST_ASIAN_WIDTH);
50622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * int ideo = UCharacter.getIntPropertyValue(c, UProperty.IDEOGRAPHIC);
50632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * boolean b = (ideo == 1) ? true : false;
50642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * </pre>
50652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point to test.
50662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param type UProperty selector constant, identifies which binary
50672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *        property to check. Must be
50682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *        UProperty.BINARY_START &lt;= type &lt; UProperty.BINARY_LIMIT or
50692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *        UProperty.INT_START &lt;= type &lt; UProperty.INT_LIMIT or
50702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *        UProperty.MASK_START &lt;= type &lt; UProperty.MASK_LIMIT.
50712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return numeric value that is directly the property value or,
50722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *         for enumerated properties, corresponds to the numeric value of
50732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *         the enumerated constant of the respective property value
50742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *         enumeration type (cast to enum type if necessary).
50752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *         Returns 0 or 1 (for false / true) for binary Unicode properties.
50762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *         Returns a bit-mask for mask properties.
50772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *         Returns 0 if 'type' is out of bounds or if the Unicode version
50782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *         does not have data for the property at all, or not for this code
50792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *         point.
50802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see UProperty
50812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #hasBinaryProperty
50822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #getIntPropertyMinValue
50832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #getIntPropertyMaxValue
50842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #getUnicodeVersion
50852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
50862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int getIntPropertyValue(int ch, int type)
50872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
50882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UCharacterProperty.INSTANCE.getIntPropertyValue(ch, type);
50892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
50902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
50911537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Returns a string version of the property value.
50922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param propertyEnum The property enum value.
50932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param codepoint The codepoint value.
50942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param nameChoice The choice of the name.
50952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return value as string
50962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @deprecated This API is ICU internal only.
509793cf604e9dd0525f15bc0a7450b2a35f3884c298Neil Fuller     * @hide original deprecated declaration
5098836e6b40a94ec3fb7545a76cb072960442b7eee9Neil Fuller     * @hide draft / provisional / internal are hidden on Android
50992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
51002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    @Deprecated
51012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    ///CLOVER:OFF
51022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static String getStringPropertyValue(int propertyEnum, int codepoint, int nameChoice) {
51032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if ((propertyEnum >= UProperty.BINARY_START && propertyEnum < UProperty.BINARY_LIMIT) ||
51042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                (propertyEnum >= UProperty.INT_START && propertyEnum < UProperty.INT_LIMIT)) {
51052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return getPropertyValueName(propertyEnum, getIntPropertyValue(codepoint, propertyEnum),
51062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    nameChoice);
51072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
51082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (propertyEnum == UProperty.NUMERIC_VALUE) {
51092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return String.valueOf(getUnicodeNumericValue(codepoint));
51102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
51112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // otherwise must be string property
51122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        switch (propertyEnum) {
51132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case UProperty.AGE: return getAge(codepoint).toString();
51142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case UProperty.ISO_COMMENT: return getISOComment(codepoint);
51152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case UProperty.BIDI_MIRRORING_GLYPH: return toString(getMirror(codepoint));
51162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case UProperty.CASE_FOLDING: return toString(foldCase(codepoint, true));
51172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case UProperty.LOWERCASE_MAPPING: return toString(toLowerCase(codepoint));
51182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case UProperty.NAME: return getName(codepoint);
51192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case UProperty.SIMPLE_CASE_FOLDING: return toString(foldCase(codepoint, true));
51202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case UProperty.SIMPLE_LOWERCASE_MAPPING: return toString(toLowerCase(codepoint));
51212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case UProperty.SIMPLE_TITLECASE_MAPPING: return toString(toTitleCase(codepoint));
51222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case UProperty.SIMPLE_UPPERCASE_MAPPING: return toString(toUpperCase(codepoint));
51232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case UProperty.TITLECASE_MAPPING: return toString(toTitleCase(codepoint));
51242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case UProperty.UNICODE_1_NAME: return getName1_0(codepoint);
51252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case UProperty.UPPERCASE_MAPPING: return toString(toUpperCase(codepoint));
51262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
51272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        throw new IllegalArgumentException("Illegal Property Enum");
51282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
51292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    ///CLOVER:ON
51302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
51312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
51321537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Returns the minimum value for an integer/binary Unicode property type.
51332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Can be used together with UCharacter.getIntPropertyMaxValue(int)
51341fba789ac68efdd9120a7373f49daef42833e674Neil Fuller     * to allocate arrays of android.icu.text.UnicodeSet or similar.
51352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param type UProperty selector constant, identifies which binary
51362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *        property to check. Must be
51372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *        UProperty.BINARY_START &lt;= type &lt; UProperty.BINARY_LIMIT or
51382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *        UProperty.INT_START &lt;= type &lt; UProperty.INT_LIMIT.
51392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return Minimum value returned by UCharacter.getIntPropertyValue(int)
51402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *         for a Unicode property. 0 if the property
51412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *         selector 'type' is out of range.
51422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see UProperty
51432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #hasBinaryProperty
51442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #getUnicodeVersion
51452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #getIntPropertyMaxValue
51462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #getIntPropertyValue
51472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
51482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int getIntPropertyMinValue(int type){
51492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
51502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return 0; // undefined; and: all other properties have a minimum value of 0
51512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
51522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
51532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
51542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
51551537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Returns the maximum value for an integer/binary Unicode property.
51562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Can be used together with UCharacter.getIntPropertyMinValue(int)
51571fba789ac68efdd9120a7373f49daef42833e674Neil Fuller     * to allocate arrays of android.icu.text.UnicodeSet or similar.
51582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Examples for min/max values (for Unicode 3.2):
51592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <ul>
51602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> UProperty.BIDI_CLASS:    0/18
51612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * (UCharacterDirection.LEFT_TO_RIGHT/UCharacterDirection.BOUNDARY_NEUTRAL)
51622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> UProperty.SCRIPT:        0/45 (UScript.COMMON/UScript.TAGBANWA)
51632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> UProperty.IDEOGRAPHIC:   0/1  (false/true)
51642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * </ul>
51652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * For undefined UProperty constant values, min/max values will be 0/-1.
51662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param type UProperty selector constant, identifies which binary
51672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *        property to check. Must be
51682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *        UProperty.BINARY_START &lt;= type &lt; UProperty.BINARY_LIMIT or
51692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *        UProperty.INT_START &lt;= type &lt; UProperty.INT_LIMIT.
51702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return Maximum value returned by u_getIntPropertyValue for a Unicode
51712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *         property. &lt;= 0 if the property selector 'type' is out of range.
51722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see UProperty
51732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #hasBinaryProperty
51742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #getUnicodeVersion
51752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #getIntPropertyMaxValue
51762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #getIntPropertyValue
51772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
51782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int getIntPropertyMaxValue(int type)
51792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
51802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UCharacterProperty.INSTANCE.getIntPropertyMaxValue(type);
51812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
51822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
51832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
51842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Provide the java.lang.Character forDigit API, for convenience.
51852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
51862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static char forDigit(int digit, int radix) {
51872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return java.lang.Character.forDigit(digit, radix);
51882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
51892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
51902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    // JDK 1.5 API coverage
51912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
51922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
51932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Constant U+D800, same as {@link Character#MIN_HIGH_SURROGATE}.
51942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
51952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final char MIN_HIGH_SURROGATE = Character.MIN_HIGH_SURROGATE;
51962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
51972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
51982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Constant U+DBFF, same as {@link Character#MAX_HIGH_SURROGATE}.
51992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
52002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final char MAX_HIGH_SURROGATE = Character.MAX_HIGH_SURROGATE;
52012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
52022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
52032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Constant U+DC00, same as {@link Character#MIN_LOW_SURROGATE}.
52042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
52052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final char MIN_LOW_SURROGATE = Character.MIN_LOW_SURROGATE;
52062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
52072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
52082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Constant U+DFFF, same as {@link Character#MAX_LOW_SURROGATE}.
52092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
52102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final char MAX_LOW_SURROGATE = Character.MAX_LOW_SURROGATE;
52112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
52122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
52132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Constant U+D800, same as {@link Character#MIN_SURROGATE}.
52142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
52152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final char MIN_SURROGATE = Character.MIN_SURROGATE;
52162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
52172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
52182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Constant U+DFFF, same as {@link Character#MAX_SURROGATE}.
52192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
52202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final char MAX_SURROGATE = Character.MAX_SURROGATE;
52212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
52222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
52232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Constant U+10000, same as {@link Character#MIN_SUPPLEMENTARY_CODE_POINT}.
52242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
52252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final int MIN_SUPPLEMENTARY_CODE_POINT = Character.MIN_SUPPLEMENTARY_CODE_POINT;
52262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
52272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
52282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Constant U+10FFFF, same as {@link Character#MAX_CODE_POINT}.
52292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
52302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final int MAX_CODE_POINT = Character.MAX_CODE_POINT;
52312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
52322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
52332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Constant U+0000, same as {@link Character#MIN_CODE_POINT}.
52342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
52352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final int MIN_CODE_POINT = Character.MIN_CODE_POINT;
52362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
52372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
52387241d93e30f4c7c527c019cd6ca3a791ca22d9b2Fredrik Roubert     * Equivalent to {@link Character#isValidCodePoint}.
52397241d93e30f4c7c527c019cd6ca3a791ca22d9b2Fredrik Roubert     *
52402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param cp the code point to check
52412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if cp is a valid code point
52422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
52432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final boolean isValidCodePoint(int cp) {
52442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return cp >= 0 && cp <= MAX_CODE_POINT;
52452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
52462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
52472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
52482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Same as {@link Character#isSupplementaryCodePoint}.
52492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
52502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param cp the code point to check
52512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if cp is a supplementary code point
52522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
52532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final boolean isSupplementaryCodePoint(int cp) {
52542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return Character.isSupplementaryCodePoint(cp);
52552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
52562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
52572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
52582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Same as {@link Character#isHighSurrogate}.
52592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
52602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch the char to check
52612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if ch is a high (lead) surrogate
52622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
52632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isHighSurrogate(char ch) {
52642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return Character.isHighSurrogate(ch);
52652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
52662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
52672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
52682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Same as {@link Character#isLowSurrogate}.
52692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
52702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch the char to check
52712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if ch is a low (trail) surrogate
52722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
52732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isLowSurrogate(char ch) {
52742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return Character.isLowSurrogate(ch);
52752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
52762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
52772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
52782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Same as {@link Character#isSurrogatePair}.
52792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
52802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param high the high (lead) char
52812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param low the low (trail) char
52822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if high, low form a surrogate pair
52832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
52842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final boolean isSurrogatePair(char high, char low) {
52852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return Character.isSurrogatePair(high, low);
52862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
52872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
52882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
52892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Same as {@link Character#charCount}.
52902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Returns the number of chars needed to represent the code point (1 or 2).
52912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * This does not check the code point for validity.
52922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
52932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param cp the code point to check
52942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the number of chars needed to represent the code point
52952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
52962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int charCount(int cp) {
52972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return Character.charCount(cp);
52982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
52992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
53002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
53012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Same as {@link Character#toCodePoint}.
53022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Returns the code point represented by the two surrogate code units.
53032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * This does not check the surrogate pair for validity.
53042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
53052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param high the high (lead) surrogate
53062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param low the low (trail) surrogate
53072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the code point formed by the surrogate pair
53082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
53092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final int toCodePoint(char high, char low) {
53102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return Character.toCodePoint(high, low);
53112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
53122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
53132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
53142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Same as {@link Character#codePointAt(CharSequence, int)}.
53152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Returns the code point at index.
53162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * This examines only the characters at index and index+1.
53172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
53182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param seq the characters to check
53192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param index the index of the first or only char forming the code point
53202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the code point at the index
53212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
53222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final int codePointAt(CharSequence seq, int index) {
53232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        char c1 = seq.charAt(index++);
53242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (isHighSurrogate(c1)) {
53252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if (index < seq.length()) {
53262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                char c2 = seq.charAt(index);
53272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                if (isLowSurrogate(c2)) {
53282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    return toCodePoint(c1, c2);
53292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                }
53302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
53312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
53322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return c1;
53332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
53342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
53352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
53362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Same as {@link Character#codePointAt(char[], int)}.
53372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Returns the code point at index.
53382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * This examines only the characters at index and index+1.
53392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
53402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param text the characters to check
53412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param index the index of the first or only char forming the code point
53422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the code point at the index
53432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
53442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final int codePointAt(char[] text, int index) {
53452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        char c1 = text[index++];
53462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (isHighSurrogate(c1)) {
53472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if (index < text.length) {
53482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                char c2 = text[index];
53492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                if (isLowSurrogate(c2)) {
53502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    return toCodePoint(c1, c2);
53512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                }
53522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
53532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
53542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return c1;
53552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
53562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
53572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
53582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Same as {@link Character#codePointAt(char[], int, int)}.
53592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Returns the code point at index.
53602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * This examines only the characters at index and index+1.
53612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
53622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param text the characters to check
53632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param index the index of the first or only char forming the code point
53642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param limit the limit of the valid text
53652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the code point at the index
53662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
53672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final int codePointAt(char[] text, int index, int limit) {
53682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (index >= limit || limit > text.length) {
53692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            throw new IndexOutOfBoundsException();
53702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
53712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        char c1 = text[index++];
53722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (isHighSurrogate(c1)) {
53732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if (index < limit) {
53742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                char c2 = text[index];
53752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                if (isLowSurrogate(c2)) {
53762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    return toCodePoint(c1, c2);
53772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                }
53782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
53792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
53802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return c1;
53812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
53822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
53832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
53842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Same as {@link Character#codePointBefore(CharSequence, int)}.
53852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Return the code point before index.
53862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * This examines only the characters at index-1 and index-2.
53872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
53882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param seq the characters to check
53892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param index the index after the last or only char forming the code point
53902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the code point before the index
53912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
53922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final int codePointBefore(CharSequence seq, int index) {
53932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        char c2 = seq.charAt(--index);
53942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (isLowSurrogate(c2)) {
53952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if (index > 0) {
53962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                char c1 = seq.charAt(--index);
53972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                if (isHighSurrogate(c1)) {
53982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    return toCodePoint(c1, c2);
53992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                }
54002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
54012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
54022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return c2;
54032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
54042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
54052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
54062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Same as {@link Character#codePointBefore(char[], int)}.
54072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Returns the code point before index.
54082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * This examines only the characters at index-1 and index-2.
54092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
54102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param text the characters to check
54112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param index the index after the last or only char forming the code point
54122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the code point before the index
54132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
54142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final int codePointBefore(char[] text, int index) {
54152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        char c2 = text[--index];
54162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (isLowSurrogate(c2)) {
54172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if (index > 0) {
54182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                char c1 = text[--index];
54192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                if (isHighSurrogate(c1)) {
54202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    return toCodePoint(c1, c2);
54212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                }
54222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
54232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
54242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return c2;
54252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
54262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
54272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
54282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Same as {@link Character#codePointBefore(char[], int, int)}.
54292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Return the code point before index.
54302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * This examines only the characters at index-1 and index-2.
54312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
54322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param text the characters to check
54332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param index the index after the last or only char forming the code point
54342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param limit the start of the valid text
54352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the code point before the index
54362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
54372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final int codePointBefore(char[] text, int index, int limit) {
54382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (index <= limit || limit < 0) {
54392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            throw new IndexOutOfBoundsException();
54402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
54412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        char c2 = text[--index];
54422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (isLowSurrogate(c2)) {
54432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if (index > limit) {
54442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                char c1 = text[--index];
54452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                if (isHighSurrogate(c1)) {
54462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    return toCodePoint(c1, c2);
54472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                }
54482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
54492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
54502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return c2;
54512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
54522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
54532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
54542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Same as {@link Character#toChars(int, char[], int)}.
54552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Writes the chars representing the
54562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * code point into the destination at the given index.
54572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
54582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param cp the code point to convert
54592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param dst the destination array into which to put the char(s) representing the code point
54602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param dstIndex the index at which to put the first (or only) char
54612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the count of the number of chars written (1 or 2)
54622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @throws IllegalArgumentException if cp is not a valid code point
54632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
54642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final int toChars(int cp, char[] dst, int dstIndex) {
54652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return Character.toChars(cp, dst, dstIndex);
54662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
54672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
54682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
54692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Same as {@link Character#toChars(int)}.
54702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Returns a char array representing the code point.
54712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
54722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param cp the code point to convert
54732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return an array containing the char(s) representing the code point
54742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @throws IllegalArgumentException if cp is not a valid code point
54752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
54762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final char[] toChars(int cp) {
54772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return Character.toChars(cp);
54782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
54792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
54802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
54817241d93e30f4c7c527c019cd6ca3a791ca22d9b2Fredrik Roubert     * Equivalent to the {@link Character#getDirectionality(char)} method, for
54827241d93e30f4c7c527c019cd6ca3a791ca22d9b2Fredrik Roubert     * convenience. Returns a byte representing the directionality of the
54837241d93e30f4c7c527c019cd6ca3a791ca22d9b2Fredrik Roubert     * character.
54842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
54857241d93e30f4c7c527c019cd6ca3a791ca22d9b2Fredrik Roubert     * <strong>[icu] Note:</strong> Unlike {@link Character#getDirectionality(char)}, this returns
54867241d93e30f4c7c527c019cd6ca3a791ca22d9b2Fredrik Roubert     * DIRECTIONALITY_LEFT_TO_RIGHT for undefined or out-of-bounds characters.
54872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
54881537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu] Note:</strong> The return value must be tested using the constants defined in {@link
54892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * UCharacterDirection} and its interface {@link
54902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * UCharacterEnums.ECharacterDirection} since the values are different from the ones
54912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * defined by <code>java.lang.Character</code>.
54922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param cp the code point to check
54932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the directionality of the code point
54942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #getDirection
54952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
54962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static byte getDirectionality(int cp)
54972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
54982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return (byte)getDirection(cp);
54992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
55002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
55012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
55027241d93e30f4c7c527c019cd6ca3a791ca22d9b2Fredrik Roubert     * Equivalent to the {@link Character#codePointCount(CharSequence, int, int)}
55037241d93e30f4c7c527c019cd6ca3a791ca22d9b2Fredrik Roubert     * method, for convenience.  Counts the number of code points in the range
55047241d93e30f4c7c527c019cd6ca3a791ca22d9b2Fredrik Roubert     * of text.
55052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param text the characters to check
55062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param start the start of the range
55072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param limit the limit of the range
55082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the number of code points in the range
55092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
55102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int codePointCount(CharSequence text, int start, int limit) {
55112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (start < 0 || limit < start || limit > text.length()) {
55122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            throw new IndexOutOfBoundsException("start (" + start +
55132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    ") or limit (" + limit +
55142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    ") invalid or out of range 0, " + text.length());
55152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
55162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
55172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        int len = limit - start;
55182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        while (limit > start) {
55192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            char ch = text.charAt(--limit);
55202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            while (ch >= MIN_LOW_SURROGATE && ch <= MAX_LOW_SURROGATE && limit > start) {
55212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                ch = text.charAt(--limit);
55222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                if (ch >= MIN_HIGH_SURROGATE && ch <= MAX_HIGH_SURROGATE) {
55232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    --len;
55242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    break;
55252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                }
55262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
55272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
55282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return len;
55292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
55302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
55312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
55327241d93e30f4c7c527c019cd6ca3a791ca22d9b2Fredrik Roubert     * Equivalent to the {@link Character#codePointCount(char[], int, int)} method, for
55337241d93e30f4c7c527c019cd6ca3a791ca22d9b2Fredrik Roubert     * convenience. Counts the number of code points in the range of text.
55342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param text the characters to check
55352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param start the start of the range
55362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param limit the limit of the range
55372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the number of code points in the range
55382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
55392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int codePointCount(char[] text, int start, int limit) {
55402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (start < 0 || limit < start || limit > text.length) {
55412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            throw new IndexOutOfBoundsException("start (" + start +
55422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    ") or limit (" + limit +
55432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    ") invalid or out of range 0, " + text.length);
55442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
55452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
55462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        int len = limit - start;
55472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        while (limit > start) {
55482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            char ch = text[--limit];
55492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            while (ch >= MIN_LOW_SURROGATE && ch <= MAX_LOW_SURROGATE && limit > start) {
55502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                ch = text[--limit];
55512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                if (ch >= MIN_HIGH_SURROGATE && ch <= MAX_HIGH_SURROGATE) {
55522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    --len;
55532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    break;
55542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                }
55552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
55562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
55572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return len;
55582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
55592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
55602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
55617241d93e30f4c7c527c019cd6ca3a791ca22d9b2Fredrik Roubert     * Equivalent to the {@link Character#offsetByCodePoints(CharSequence, int, int)}
55627241d93e30f4c7c527c019cd6ca3a791ca22d9b2Fredrik Roubert     * method, for convenience.  Adjusts the char index by a code point offset.
55632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param text the characters to check
55642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param index the index to adjust
55652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param codePointOffset the number of code points by which to offset the index
55662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the adjusted index
55672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
55682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int offsetByCodePoints(CharSequence text, int index, int codePointOffset) {
55692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (index < 0 || index > text.length()) {
55702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            throw new IndexOutOfBoundsException("index ( " + index +
55712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    ") out of range 0, " + text.length());
55722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
55732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
55742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (codePointOffset < 0) {
55752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            while (++codePointOffset <= 0) {
55762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                char ch = text.charAt(--index);
55772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                while (ch >= MIN_LOW_SURROGATE && ch <= MAX_LOW_SURROGATE && index > 0) {
55782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    ch = text.charAt(--index);
55792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    if (ch < MIN_HIGH_SURROGATE || ch > MAX_HIGH_SURROGATE) {
55802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        if (++codePointOffset > 0) {
55812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                            return index+1;
55822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        }
55832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    }
55842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                }
55852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
55862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        } else {
55872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            int limit = text.length();
55882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            while (--codePointOffset >= 0) {
55892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                char ch = text.charAt(index++);
55902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                while (ch >= MIN_HIGH_SURROGATE && ch <= MAX_HIGH_SURROGATE && index < limit) {
55912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    ch = text.charAt(index++);
55922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    if (ch < MIN_LOW_SURROGATE || ch > MAX_LOW_SURROGATE) {
55932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        if (--codePointOffset < 0) {
55942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                            return index-1;
55952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        }
55962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    }
55972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                }
55982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
55992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
56002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
56012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return index;
56022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
56032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
56042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
56057241d93e30f4c7c527c019cd6ca3a791ca22d9b2Fredrik Roubert     * Equivalent to the
56067241d93e30f4c7c527c019cd6ca3a791ca22d9b2Fredrik Roubert     * {@link Character#offsetByCodePoints(char[], int, int, int, int)}
56077241d93e30f4c7c527c019cd6ca3a791ca22d9b2Fredrik Roubert     * method, for convenience.  Adjusts the char index by a code point offset.
56082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param text the characters to check
56092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param start the start of the range to check
56102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param count the length of the range to check
56112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param index the index to adjust
56122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param codePointOffset the number of code points by which to offset the index
56132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the adjusted index
56142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
56152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int offsetByCodePoints(char[] text, int start, int count, int index,
56162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            int codePointOffset) {
56172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        int limit = start + count;
56182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (start < 0 || limit < start || limit > text.length || index < start || index > limit) {
56192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            throw new IndexOutOfBoundsException("index ( " + index +
56202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    ") out of range " + start +
56212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    ", " + limit +
56222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    " in array 0, " + text.length);
56232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
56242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
56252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (codePointOffset < 0) {
56262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            while (++codePointOffset <= 0) {
56272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                char ch = text[--index];
56282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                if (index < start) {
56292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    throw new IndexOutOfBoundsException("index ( " + index +
56302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                            ") < start (" + start +
56312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                            ")");
56322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                }
56332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                while (ch >= MIN_LOW_SURROGATE && ch <= MAX_LOW_SURROGATE && index > start) {
56342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    ch = text[--index];
56352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    if (ch < MIN_HIGH_SURROGATE || ch > MAX_HIGH_SURROGATE) {
56362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        if (++codePointOffset > 0) {
56372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                            return index+1;
56382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        }
56392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    }
56402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                }
56412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
56422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        } else {
56432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            while (--codePointOffset >= 0) {
56442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                char ch = text[index++];
56452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                if (index > limit) {
56462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    throw new IndexOutOfBoundsException("index ( " + index +
56472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                            ") > limit (" + limit +
56482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                            ")");
56492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                }
56502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                while (ch >= MIN_HIGH_SURROGATE && ch <= MAX_HIGH_SURROGATE && index < limit) {
56512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    ch = text[index++];
56522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    if (ch < MIN_LOW_SURROGATE || ch > MAX_LOW_SURROGATE) {
56532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        if (--codePointOffset < 0) {
56542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                            return index-1;
56552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        }
56562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    }
56572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                }
56582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
56592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
56602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
56612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return index;
56622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
56632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
56642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    // private variables -------------------------------------------------
56652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
56662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
56672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * To get the last character out from a data type
56682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
56692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int LAST_CHAR_MASK_ = 0xFFFF;
56702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
56712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    //    /**
56722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    //     * To get the last byte out from a data type
56732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    //     */
56742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    //    private static final int LAST_BYTE_MASK_ = 0xFF;
56752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    //
56762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    //    /**
56772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    //     * Shift 16 bits
56782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    //     */
56792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    //    private static final int SHIFT_16_ = 16;
56802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    //
56812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    //    /**
56822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    //     * Shift 24 bits
56832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    //     */
56842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    //    private static final int SHIFT_24_ = 24;
56852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    //
56862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    //    /**
56872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    //     * Decimal radix
56882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    //     */
56892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    //    private static final int DECIMAL_RADIX_ = 10;
56902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
56912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
56922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * No break space code point
56932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
56942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int NO_BREAK_SPACE_ = 0xA0;
56952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
56962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
56972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Figure space code point
56982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
56992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int FIGURE_SPACE_ = 0x2007;
57002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
57012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
57022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Narrow no break space code point
57032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
57042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int NARROW_NO_BREAK_SPACE_ = 0x202F;
57052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
57062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
57072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Ideographic number zero code point
57082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
57092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int IDEOGRAPHIC_NUMBER_ZERO_ = 0x3007;
57102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
57112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
57122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * CJK Ideograph, First code point
57132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
57142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_FIRST_ = 0x4e00;
57152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
57162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
57172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * CJK Ideograph, Second code point
57182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
57192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_SECOND_ = 0x4e8c;
57202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
57212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
57222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * CJK Ideograph, Third code point
57232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
57242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_THIRD_ = 0x4e09;
57252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
57262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
57272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * CJK Ideograph, Fourth code point
57282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
57292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_FOURTH_ = 0x56db;
57302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
57312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
57322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * CJK Ideograph, FIFTH code point
57332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
57342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_FIFTH_ = 0x4e94;
57352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
57362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
57372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * CJK Ideograph, Sixth code point
57382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
57392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_SIXTH_ = 0x516d;
57402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
57412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
57422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * CJK Ideograph, Seventh code point
57432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
57442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_SEVENTH_ = 0x4e03;
57452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
57462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
57472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * CJK Ideograph, Eighth code point
57482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
57492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_EIGHTH_ = 0x516b;
57502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
57512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
57522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * CJK Ideograph, Nineth code point
57532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
57542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_NINETH_ = 0x4e5d;
57552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
57562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
57572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Application Program command code point
57582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
57592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int APPLICATION_PROGRAM_COMMAND_ = 0x009F;
57602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
57612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
57622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Unit separator code point
57632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
57642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int UNIT_SEPARATOR_ = 0x001F;
57652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
57662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
57672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Delete code point
57682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
57692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int DELETE_ = 0x007F;
57702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
57712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
57722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Han digit characters
57732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
57742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_COMPLEX_ZERO_     = 0x96f6;
57752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_COMPLEX_ONE_      = 0x58f9;
57762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_COMPLEX_TWO_      = 0x8cb3;
57772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_COMPLEX_THREE_    = 0x53c3;
57782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_COMPLEX_FOUR_     = 0x8086;
57792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_COMPLEX_FIVE_     = 0x4f0d;
57802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_COMPLEX_SIX_      = 0x9678;
57812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_COMPLEX_SEVEN_    = 0x67d2;
57822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_COMPLEX_EIGHT_    = 0x634c;
57832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_COMPLEX_NINE_     = 0x7396;
57842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_TEN_              = 0x5341;
57852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_COMPLEX_TEN_      = 0x62fe;
57862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_HUNDRED_          = 0x767e;
57872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_COMPLEX_HUNDRED_  = 0x4f70;
57882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_THOUSAND_         = 0x5343;
57892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_COMPLEX_THOUSAND_ = 0x4edf;
57902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_TEN_THOUSAND_     = 0x824c;
57912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_HUNDRED_MILLION_  = 0x5104;
57922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
57932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    // private constructor -----------------------------------------------
57942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    ///CLOVER:OFF
57952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
57962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Private constructor to prevent instantiation
57972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
57982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private UCharacter()
57992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
58002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
58012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    ///CLOVER:ON
58022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller}
5803