UCharacter.java revision 1c8a530973739aafa823d758240d2cd5dad96fe3
12ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller/* GENERATED SOURCE. DO NOT MODIFY. */
22ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller/**
32ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *******************************************************************************
47241d93e30f4c7c527c019cd6ca3a791ca22d9b2Fredrik Roubert * Copyright (C) 1996-2016, International Business Machines Corporation and
52ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * others. All Rights Reserved.
62ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *******************************************************************************
72ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller */
82ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
92ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerpackage android.icu.lang;
102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport java.lang.ref.SoftReference;
122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport java.util.HashMap;
132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport java.util.Iterator;
142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport java.util.Locale;
152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport java.util.Map;
162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport android.icu.impl.IllegalIcuArgumentException;
182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport android.icu.impl.Trie2;
192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport android.icu.impl.UBiDiProps;
202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport android.icu.impl.UCaseProps;
212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport android.icu.impl.UCharacterName;
222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport android.icu.impl.UCharacterNameChoice;
232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport android.icu.impl.UCharacterProperty;
242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport android.icu.impl.UCharacterUtility;
252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport android.icu.impl.UPropertyAliases;
262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport android.icu.lang.UCharacterEnums.ECharacterCategory;
272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport android.icu.lang.UCharacterEnums.ECharacterDirection;
282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport android.icu.text.BreakIterator;
292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport android.icu.text.Normalizer2;
302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport android.icu.util.RangeValueIterator;
312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport android.icu.util.ULocale;
322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport android.icu.util.ValueIterator;
332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport android.icu.util.VersionInfo;
342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller/**
361537b2f39245c07b00aa78c3600f7aebcb172490Neil 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>'.
372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *
382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <p>The UCharacter class provides extensions to the {@link java.lang.Character} class.
392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * These extensions provide support for more Unicode properties.
402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Each ICU release supports the latest version of Unicode available at that time.
412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *
422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <p>For some time before Java 5 added support for supplementary Unicode code points,
432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * The ICU UCharacter class and many other ICU classes already supported them.
442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Some UCharacter methods and constants were widened slightly differently than
452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * how the Character class methods and constants were widened later.
462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * In particular, {@link Character#MAX_VALUE} is still a char with the value U+FFFF,
472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * while the {@link UCharacter#MAX_VALUE} is an int with the value U+10FFFF.
482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *
492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <p>Code points are represented in these API using ints. While it would be
502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * more convenient in Java to have a separate primitive datatype for them,
512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * ints suffice in the meantime.
522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *
532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <p>Aside from the additions for UTF-16 support, and the updated Unicode
542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * properties, the main differences between UCharacter and Character are:
552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <ul>
562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <li> UCharacter is not designed to be a char wrapper and does not have
572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *      APIs to which involves management of that single char.<br>
582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *      These include:
592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *      <ul>
602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *        <li> char charValue(),
612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *        <li> int compareTo(java.lang.Character, java.lang.Character), etc.
622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *      </ul>
632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <li> UCharacter does not include Character APIs that are deprecated, nor
642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *      does it include the Java-specific character information, such as
652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *      boolean isJavaIdentifierPart(char ch).
662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <li> Character maps characters 'A' - 'Z' and 'a' - 'z' to the numeric
672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *      values '10' - '35'. UCharacter also does this in digit and
682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *      getNumericValue, to adhere to the java semantics of these
692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *      methods.  New methods unicodeDigit, and
702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *      getUnicodeNumericValue do not treat the above code points
712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *      as having numeric values.  This is a semantic change from ICU4J 1.3.1.
722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * </ul>
732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <p>
742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * In addition to Java compatibility functions, which calculate derived properties,
752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * this API provides low-level access to the Unicode Character Database.
762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <p>
772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Unicode assigns each code point (not just assigned character) values for
782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * many properties.
792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Most of them are simple boolean flags, or constants from a small enumerated list.
802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * For some properties, values are strings or other relatively more complex types.
812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <p>
822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * For more information see
832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <a href="http://www.unicode/org/ucd/">"About the Unicode Character Database"</a>
842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * (http://www.unicode.org/ucd/)
852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * and the <a href="http://www.icu-project.org/userguide/properties.html">ICU
862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * User Guide chapter on Properties</a>
872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * (http://www.icu-project.org/userguide/properties.html).
882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <p>
892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * There are also functions that provide easy migration from C/POSIX functions
902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * like isblank(). Their use is generally discouraged because the C/POSIX
912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * standards do not define their semantics beyond the ASCII range, which means
922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * that different implementations exhibit very different behavior.
932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Instead, Unicode properties should be used directly.
942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <p>
952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * There are also only a few, broad C/POSIX character classes, and they tend
962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * to be used for conflicting purposes. For example, the "isalpha()" class
972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * is sometimes used to determine word boundaries, while a more sophisticated
982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * approach would at least distinguish initial letters from continuation
992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * characters (the latter including combining marks).
1002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * (In ICU, BreakIterator is the most sophisticated API for word boundaries.)
1012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Another example: There is no "istitle()" class for titlecase characters.
1022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <p>
1032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * ICU 3.4 and later provides API access for all twelve C/POSIX character classes.
1042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * ICU implements them according to the Standard Recommendations in
1052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Annex C: Compatibility Properties of UTS #18 Unicode Regular Expressions
1062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * (http://www.unicode.org/reports/tr18/#Compatibility_Properties).
1072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <p>
1082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * API access for C/POSIX character classes is as follows:
1092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <pre>{@code
1102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * - alpha:     isUAlphabetic(c) or hasBinaryProperty(c, UProperty.ALPHABETIC)
1112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * - lower:     isULowercase(c) or hasBinaryProperty(c, UProperty.LOWERCASE)
1122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * - upper:     isUUppercase(c) or hasBinaryProperty(c, UProperty.UPPERCASE)
1136bb622ef53ee52bb04e3df4f97fc4a59f3038386Neil Fuller * - punct:     ((1<<getType(c)) & ((1<<DASH_PUNCTUATION)|(1<<START_PUNCTUATION)|
1146bb622ef53ee52bb04e3df4f97fc4a59f3038386Neil Fuller *               (1<<END_PUNCTUATION)|(1<<CONNECTOR_PUNCTUATION)|(1<<OTHER_PUNCTUATION)|
1156bb622ef53ee52bb04e3df4f97fc4a59f3038386Neil Fuller *               (1<<INITIAL_PUNCTUATION)|(1<<FINAL_PUNCTUATION)))!=0
1162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * - digit:     isDigit(c) or getType(c)==DECIMAL_DIGIT_NUMBER
1172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * - xdigit:    hasBinaryProperty(c, UProperty.POSIX_XDIGIT)
1182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * - alnum:     hasBinaryProperty(c, UProperty.POSIX_ALNUM)
1192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * - space:     isUWhiteSpace(c) or hasBinaryProperty(c, UProperty.WHITE_SPACE)
1202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * - blank:     hasBinaryProperty(c, UProperty.POSIX_BLANK)
1212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * - cntrl:     getType(c)==CONTROL
1222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * - graph:     hasBinaryProperty(c, UProperty.POSIX_GRAPH)
1232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * - print:     hasBinaryProperty(c, UProperty.POSIX_PRINT)}</pre>
1242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <p>
1252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * The C/POSIX character classes are also available in UnicodeSet patterns,
1262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * using patterns like [:graph:] or \p{graph}.
1272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *
1281c8a530973739aafa823d758240d2cd5dad96fe3Fredrik Roubert * <p><strong>[icu] Note:</strong> There are several ICU (and Java) whitespace functions.
1292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Comparison:<ul>
1302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <li> isUWhiteSpace=UCHAR_WHITE_SPACE: Unicode White_Space property;
1312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *       most of general categories "Z" (separators) + most whitespace ISO controls
1322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *       (including no-break spaces, but excluding IS1..IS4 and ZWSP)
1332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <li> isWhitespace: Java isWhitespace; Z + whitespace ISO controls but excluding no-break spaces
1342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <li> isSpaceChar: just Z (including no-break spaces)</ul>
1351c8a530973739aafa823d758240d2cd5dad96fe3Fredrik Roubert *
1362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <p>
1372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * This class is not subclassable.
1381c8a530973739aafa823d758240d2cd5dad96fe3Fredrik Roubert *
1392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * @author Syn Wee Quek
1402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * @see android.icu.lang.UCharacterEnums
1412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller */
1422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
1432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerpublic final class UCharacter implements ECharacterCategory, ECharacterDirection
1442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller{
1452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    // public inner classes ----------------------------------------------
1462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
1472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
1481537b2f39245c07b00aa78c3600f7aebcb172490Neil 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>'.
1492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
1502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * A family of character subsets representing the character blocks in the
1512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Unicode specification, generated from Unicode Data file Blocks.txt.
1522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Character blocks generally define characters used for a specific script
1532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * or purpose. A character is contained by at most one Unicode block.
1542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
1551537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu] Note:</strong> All fields named XXX_ID are specific to ICU.
1562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
1572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final class UnicodeBlock extends Character.Subset
1582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
1592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // block id corresponding to icu4c -----------------------------------
1602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
1612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
1622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
1632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int INVALID_CODE_ID = -1;
1642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
1652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
1662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int BASIC_LATIN_ID = 1;
1672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
1682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
1692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LATIN_1_SUPPLEMENT_ID = 2;
1702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
1712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
1722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LATIN_EXTENDED_A_ID = 3;
1732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
1742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
1752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LATIN_EXTENDED_B_ID = 4;
1762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
1772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
1782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int IPA_EXTENSIONS_ID = 5;
1792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
1802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
1812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SPACING_MODIFIER_LETTERS_ID = 6;
1822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
1832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
1842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int COMBINING_DIACRITICAL_MARKS_ID = 7;
1852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
1862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Unicode 3.2 renames this block to "Greek and Coptic".
1872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
1882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int GREEK_ID = 8;
1892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
1902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
1912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CYRILLIC_ID = 9;
1922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
1932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
1942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ARMENIAN_ID = 10;
1952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
1962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
1972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int HEBREW_ID = 11;
1982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
1992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ARABIC_ID = 12;
2012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SYRIAC_ID = 13;
2042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int THAANA_ID = 14;
2072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int DEVANAGARI_ID = 15;
2102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int BENGALI_ID = 16;
2132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int GURMUKHI_ID = 17;
2162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int GUJARATI_ID = 18;
2192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ORIYA_ID = 19;
2222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int TAMIL_ID = 20;
2252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int TELUGU_ID = 21;
2282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int KANNADA_ID = 22;
2312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MALAYALAM_ID = 23;
2342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SINHALA_ID = 24;
2372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int THAI_ID = 25;
2402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LAO_ID = 26;
2432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int TIBETAN_ID = 27;
2462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MYANMAR_ID = 28;
2492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int GEORGIAN_ID = 29;
2522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int HANGUL_JAMO_ID = 30;
2552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ETHIOPIC_ID = 31;
2582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CHEROKEE_ID = 32;
2612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_ID = 33;
2642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int OGHAM_ID = 34;
2672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int RUNIC_ID = 35;
2702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int KHMER_ID = 36;
2732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MONGOLIAN_ID = 37;
2762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LATIN_EXTENDED_ADDITIONAL_ID = 38;
2792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int GREEK_EXTENDED_ID = 39;
2822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int GENERAL_PUNCTUATION_ID = 40;
2852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SUPERSCRIPTS_AND_SUBSCRIPTS_ID = 41;
2882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CURRENCY_SYMBOLS_ID = 42;
2912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Unicode 3.2 renames this block to "Combining Diacritical Marks for
2932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Symbols".
2942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int COMBINING_MARKS_FOR_SYMBOLS_ID = 43;
2962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
2982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LETTERLIKE_SYMBOLS_ID = 44;
2992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NUMBER_FORMS_ID = 45;
3022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ARROWS_ID = 46;
3052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MATHEMATICAL_OPERATORS_ID = 47;
3082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MISCELLANEOUS_TECHNICAL_ID = 48;
3112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CONTROL_PICTURES_ID = 49;
3142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int OPTICAL_CHARACTER_RECOGNITION_ID = 50;
3172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ENCLOSED_ALPHANUMERICS_ID = 51;
3202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int BOX_DRAWING_ID = 52;
3232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int BLOCK_ELEMENTS_ID = 53;
3262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int GEOMETRIC_SHAPES_ID = 54;
3292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MISCELLANEOUS_SYMBOLS_ID = 55;
3322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int DINGBATS_ID = 56;
3352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int BRAILLE_PATTERNS_ID = 57;
3382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CJK_RADICALS_SUPPLEMENT_ID = 58;
3412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int KANGXI_RADICALS_ID = 59;
3442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int IDEOGRAPHIC_DESCRIPTION_CHARACTERS_ID = 60;
3472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CJK_SYMBOLS_AND_PUNCTUATION_ID = 61;
3502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int HIRAGANA_ID = 62;
3532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int KATAKANA_ID = 63;
3562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int BOPOMOFO_ID = 64;
3592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int HANGUL_COMPATIBILITY_JAMO_ID = 65;
3622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int KANBUN_ID = 66;
3652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int BOPOMOFO_EXTENDED_ID = 67;
3682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ENCLOSED_CJK_LETTERS_AND_MONTHS_ID = 68;
3712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CJK_COMPATIBILITY_ID = 69;
3742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A_ID = 70;
3772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CJK_UNIFIED_IDEOGRAPHS_ID = 71;
3802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int YI_SYLLABLES_ID = 72;
3832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int YI_RADICALS_ID = 73;
3862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int HANGUL_SYLLABLES_ID = 74;
3892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int HIGH_SURROGATES_ID = 75;
3922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int HIGH_PRIVATE_USE_SURROGATES_ID = 76;
3952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
3972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LOW_SURROGATES_ID = 77;
3982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
3992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Same as public static final int PRIVATE_USE.
4002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Until Unicode 3.1.1; the corresponding block name was "Private Use";
4012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * and multiple code point ranges had this block.
4022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Unicode 3.2 renames the block for the BMP PUA to "Private Use Area"
4032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * and adds separate blocks for the supplementary PUAs.
4042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int PRIVATE_USE_AREA_ID = 78;
4062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Same as public static final int PRIVATE_USE_AREA.
4082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Until Unicode 3.1.1; the corresponding block name was "Private Use";
4092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * and multiple code point ranges had this block.
4102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Unicode 3.2 renames the block for the BMP PUA to "Private Use Area"
4112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * and adds separate blocks for the supplementary PUAs.
4122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int PRIVATE_USE_ID = PRIVATE_USE_AREA_ID;
4142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CJK_COMPATIBILITY_IDEOGRAPHS_ID = 79;
4172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ALPHABETIC_PRESENTATION_FORMS_ID = 80;
4202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ARABIC_PRESENTATION_FORMS_A_ID = 81;
4232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int COMBINING_HALF_MARKS_ID = 82;
4262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CJK_COMPATIBILITY_FORMS_ID = 83;
4292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SMALL_FORM_VARIANTS_ID = 84;
4322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ARABIC_PRESENTATION_FORMS_B_ID = 85;
4352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SPECIALS_ID = 86;
4382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int HALFWIDTH_AND_FULLWIDTH_FORMS_ID = 87;
4412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int OLD_ITALIC_ID = 88;
4442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int GOTHIC_ID = 89;
4472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int DESERET_ID = 90;
4502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int BYZANTINE_MUSICAL_SYMBOLS_ID = 91;
4532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MUSICAL_SYMBOLS_ID = 92;
4562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MATHEMATICAL_ALPHANUMERIC_SYMBOLS_ID = 93;
4592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B_ID = 94;
4622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int
4652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT_ID = 95;
4662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int TAGS_ID = 96;
4692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
4702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // New blocks in Unicode 3.2
4712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
4722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Unicode 4.0.1 renames the "Cyrillic Supplementary" block to "Cyrillic Supplement".
4742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CYRILLIC_SUPPLEMENTARY_ID = 97;
4762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Unicode 4.0.1 renames the "Cyrillic Supplementary" block to "Cyrillic Supplement".
4782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
4802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CYRILLIC_SUPPLEMENT_ID = 97;
4812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int TAGALOG_ID = 98;
4842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int HANUNOO_ID = 99;
4872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int BUHID_ID = 100;
4902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int TAGBANWA_ID = 101;
4932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A_ID = 102;
4962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
4972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
4982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SUPPLEMENTAL_ARROWS_A_ID = 103;
4992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SUPPLEMENTAL_ARROWS_B_ID = 104;
5022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B_ID = 105;
5052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SUPPLEMENTAL_MATHEMATICAL_OPERATORS_ID = 106;
5082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int KATAKANA_PHONETIC_EXTENSIONS_ID = 107;
5112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int VARIATION_SELECTORS_ID = 108;
5142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SUPPLEMENTARY_PRIVATE_USE_AREA_A_ID = 109;
5172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SUPPLEMENTARY_PRIVATE_USE_AREA_B_ID = 110;
5202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
5212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LIMBU_ID = 111; /*[1900]*/
5242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int TAI_LE_ID = 112; /*[1950]*/
5272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int KHMER_SYMBOLS_ID = 113; /*[19E0]*/
5302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int PHONETIC_EXTENSIONS_ID = 114; /*[1D00]*/
5332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MISCELLANEOUS_SYMBOLS_AND_ARROWS_ID = 115; /*[2B00]*/
5362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int YIJING_HEXAGRAM_SYMBOLS_ID = 116; /*[4DC0]*/
5392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LINEAR_B_SYLLABARY_ID = 117; /*[10000]*/
5422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LINEAR_B_IDEOGRAMS_ID = 118; /*[10080]*/
5452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int AEGEAN_NUMBERS_ID = 119; /*[10100]*/
5482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int UGARITIC_ID = 120; /*[10380]*/
5512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SHAVIAN_ID = 121; /*[10450]*/
5542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int OSMANYA_ID = 122; /*[10480]*/
5572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CYPRIOT_SYLLABARY_ID = 123; /*[10800]*/
5602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int TAI_XUAN_JING_SYMBOLS_ID = 124; /*[1D300]*/
5632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int VARIATION_SELECTORS_SUPPLEMENT_ID = 125; /*[E0100]*/
5662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
5672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /* New blocks in Unicode 4.1 */
5682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
5692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ANCIENT_GREEK_MUSICAL_NOTATION_ID = 126; /*[1D200]*/
5722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
5732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ANCIENT_GREEK_NUMBERS_ID = 127; /*[10140]*/
5762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
5772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ARABIC_SUPPLEMENT_ID = 128; /*[0750]*/
5802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
5812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int BUGINESE_ID = 129; /*[1A00]*/
5842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
5852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CJK_STROKES_ID = 130; /*[31C0]*/
5882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
5892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int COMBINING_DIACRITICAL_MARKS_SUPPLEMENT_ID = 131; /*[1DC0]*/
5922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
5932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int COPTIC_ID = 132; /*[2C80]*/
5962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
5972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
5982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
5992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ETHIOPIC_EXTENDED_ID = 133; /*[2D80]*/
6002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
6012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ETHIOPIC_SUPPLEMENT_ID = 134; /*[1380]*/
6042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
6052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int GEORGIAN_SUPPLEMENT_ID = 135; /*[2D00]*/
6082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
6092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int GLAGOLITIC_ID = 136; /*[2C00]*/
6122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
6132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int KHAROSHTHI_ID = 137; /*[10A00]*/
6162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
6172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MODIFIER_TONE_LETTERS_ID = 138; /*[A700]*/
6202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
6212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NEW_TAI_LUE_ID = 139; /*[1980]*/
6242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
6252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int OLD_PERSIAN_ID = 140; /*[103A0]*/
6282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
6292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int PHONETIC_EXTENSIONS_SUPPLEMENT_ID = 141; /*[1D80]*/
6322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
6332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SUPPLEMENTAL_PUNCTUATION_ID = 142; /*[2E00]*/
6362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
6372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SYLOTI_NAGRI_ID = 143; /*[A800]*/
6402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
6412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int TIFINAGH_ID = 144; /*[2D30]*/
6442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
6452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int VERTICAL_FORMS_ID = 145; /*[FE10]*/
6482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
6492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /* New blocks in Unicode 5.0 */
6502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
6512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NKO_ID = 146; /*[07C0]*/
6542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int BALINESE_ID = 147; /*[1B00]*/
6572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LATIN_EXTENDED_C_ID = 148; /*[2C60]*/
6602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LATIN_EXTENDED_D_ID = 149; /*[A720]*/
6632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int PHAGS_PA_ID = 150; /*[A840]*/
6662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int PHOENICIAN_ID = 151; /*[10900]*/
6692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CUNEIFORM_ID = 152; /*[12000]*/
6722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CUNEIFORM_NUMBERS_AND_PUNCTUATION_ID = 153; /*[12400]*/
6752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int COUNTING_ROD_NUMERALS_ID = 154; /*[1D360]*/
6782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
6792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SUNDANESE_ID = 155; /* [1B80] */
6822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
6832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LEPCHA_ID = 156; /* [1C00] */
6862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
6872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int OL_CHIKI_ID = 157; /* [1C50] */
6902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
6912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CYRILLIC_EXTENDED_A_ID = 158; /* [2DE0] */
6942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
6952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
6962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
6972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int VAI_ID = 159; /* [A500] */
6982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
6992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
7002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
7012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CYRILLIC_EXTENDED_B_ID = 160; /* [A640] */
7022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
7032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
7042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
7052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SAURASHTRA_ID = 161; /* [A880] */
7062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
7072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
7082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
7092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int KAYAH_LI_ID = 162; /* [A900] */
7102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
7112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
7122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
7132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int REJANG_ID = 163; /* [A930] */
7142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
7152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
7162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
7172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CHAM_ID = 164; /* [AA00] */
7182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
7192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
7202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
7212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ANCIENT_SYMBOLS_ID = 165; /* [10190] */
7222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
7232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
7242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
7252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int PHAISTOS_DISC_ID = 166; /* [101D0] */
7262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
7272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
7282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
7292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LYCIAN_ID = 167; /* [10280] */
7302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
7312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
7322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
7332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CARIAN_ID = 168; /* [102A0] */
7342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
7352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
7362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
7372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LYDIAN_ID = 169; /* [10920] */
7382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
7392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
7402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
7412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MAHJONG_TILES_ID = 170; /* [1F000] */
7422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
7432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
7442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
7452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int DOMINO_TILES_ID = 171; /* [1F030] */
7462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
7472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /* New blocks in Unicode 5.2 */
7482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
7491fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SAMARITAN_ID = 172; /*[0800]*/
7511fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED_ID = 173; /*[18B0]*/
7531fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int TAI_THAM_ID = 174; /*[1A20]*/
7551fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int VEDIC_EXTENSIONS_ID = 175; /*[1CD0]*/
7571fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LISU_ID = 176; /*[A4D0]*/
7591fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int BAMUM_ID = 177; /*[A6A0]*/
7611fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int COMMON_INDIC_NUMBER_FORMS_ID = 178; /*[A830]*/
7631fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int DEVANAGARI_EXTENDED_ID = 179; /*[A8E0]*/
7651fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int HANGUL_JAMO_EXTENDED_A_ID = 180; /*[A960]*/
7671fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int JAVANESE_ID = 181; /*[A980]*/
7691fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MYANMAR_EXTENDED_A_ID = 182; /*[AA60]*/
7711fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int TAI_VIET_ID = 183; /*[AA80]*/
7731fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MEETEI_MAYEK_ID = 184; /*[ABC0]*/
7751fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int HANGUL_JAMO_EXTENDED_B_ID = 185; /*[D7B0]*/
7771fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int IMPERIAL_ARAMAIC_ID = 186; /*[10840]*/
7791fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int OLD_SOUTH_ARABIAN_ID = 187; /*[10A60]*/
7811fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int AVESTAN_ID = 188; /*[10B00]*/
7831fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int INSCRIPTIONAL_PARTHIAN_ID = 189; /*[10B40]*/
7851fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int INSCRIPTIONAL_PAHLAVI_ID = 190; /*[10B60]*/
7871fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int OLD_TURKIC_ID = 191; /*[10C00]*/
7891fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int RUMI_NUMERAL_SYMBOLS_ID = 192; /*[10E60]*/
7911fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int KAITHI_ID = 193; /*[11080]*/
7931fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int EGYPTIAN_HIEROGLYPHS_ID = 194; /*[13000]*/
7951fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ENCLOSED_ALPHANUMERIC_SUPPLEMENT_ID = 195; /*[1F100]*/
7971fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
7982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ENCLOSED_IDEOGRAPHIC_SUPPLEMENT_ID = 196; /*[1F200]*/
7991fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C_ID = 197; /*[2A700]*/
8012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
8022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /* New blocks in Unicode 6.0 */
8032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
8041fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANDAIC_ID = 198; /*[0840]*/
8061fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int BATAK_ID = 199; /*[1BC0]*/
8081fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ETHIOPIC_EXTENDED_A_ID = 200; /*[AB00]*/
8101fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int BRAHMI_ID = 201; /*[11000]*/
8121fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int BAMUM_SUPPLEMENT_ID = 202; /*[16800]*/
8141fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int KANA_SUPPLEMENT_ID = 203; /*[1B000]*/
8161fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int PLAYING_CARDS_ID = 204; /*[1F0A0]*/
8181fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS_ID = 205; /*[1F300]*/
8201fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int EMOTICONS_ID = 206; /*[1F600]*/
8221fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int TRANSPORT_AND_MAP_SYMBOLS_ID = 207; /*[1F680]*/
8241fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ALCHEMICAL_SYMBOLS_ID = 208; /*[1F700]*/
8261fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D_ID = 209; /*[2B740]*/
8282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
8292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /* New blocks in Unicode 6.1 */
8302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
8311fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ARABIC_EXTENDED_A_ID = 210; /*[08A0]*/
8331fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS_ID = 211; /*[1EE00]*/
8351fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CHAKMA_ID = 212; /*[11100]*/
8371fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MEETEI_MAYEK_EXTENSIONS_ID = 213; /*[AAE0]*/
8391fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MEROITIC_CURSIVE_ID = 214; /*[109A0]*/
8411fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MEROITIC_HIEROGLYPHS_ID = 215; /*[10980]*/
8431fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MIAO_ID = 216; /*[16F00]*/
8451fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SHARADA_ID = 217; /*[11180]*/
8471fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SORA_SOMPENG_ID = 218; /*[110D0]*/
8491fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SUNDANESE_SUPPLEMENT_ID = 219; /*[1CC0]*/
8511fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int TAKRI_ID = 220; /*[11680]*/
8532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
8542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /* New blocks in Unicode 7.0 */
8552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
8561fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int BASSA_VAH_ID = 221; /*[16AD0]*/
8581fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CAUCASIAN_ALBANIAN_ID = 222; /*[10530]*/
8601fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int COPTIC_EPACT_NUMBERS_ID = 223; /*[102E0]*/
8621fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int COMBINING_DIACRITICAL_MARKS_EXTENDED_ID = 224; /*[1AB0]*/
8641fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int DUPLOYAN_ID = 225; /*[1BC00]*/
8661fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ELBASAN_ID = 226; /*[10500]*/
8681fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int GEOMETRIC_SHAPES_EXTENDED_ID = 227; /*[1F780]*/
8701fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int GRANTHA_ID = 228; /*[11300]*/
8721fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int KHOJKI_ID = 229; /*[11200]*/
8741fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int KHUDAWADI_ID = 230; /*[112B0]*/
8761fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LATIN_EXTENDED_E_ID = 231; /*[AB30]*/
8781fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LINEAR_A_ID = 232; /*[10600]*/
8801fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MAHAJANI_ID = 233; /*[11150]*/
8821fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_ID = 234; /*[10AC0]*/
8841fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MENDE_KIKAKUI_ID = 235; /*[1E800]*/
8861fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MODI_ID = 236; /*[11600]*/
8881fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MRO_ID = 237; /*[16A40]*/
8901fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MYANMAR_EXTENDED_B_ID = 238; /*[A9E0]*/
8921fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NABATAEAN_ID = 239; /*[10880]*/
8941fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int OLD_NORTH_ARABIAN_ID = 240; /*[10A80]*/
8961fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int OLD_PERMIC_ID = 241; /*[10350]*/
8981fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
8992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ORNAMENTAL_DINGBATS_ID = 242; /*[1F650]*/
9001fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
9012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int PAHAWH_HMONG_ID = 243; /*[16B00]*/
9021fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
9032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int PALMYRENE_ID = 244; /*[10860]*/
9041fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
9052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int PAU_CIN_HAU_ID = 245; /*[11AC0]*/
9061fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
9072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int PSALTER_PAHLAVI_ID = 246; /*[10B80]*/
9081fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
9092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SHORTHAND_FORMAT_CONTROLS_ID = 247; /*[1BCA0]*/
9101fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
9112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SIDDHAM_ID = 248; /*[11580]*/
9121fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
9132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SINHALA_ARCHAIC_NUMBERS_ID = 249; /*[111E0]*/
9141fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
9152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SUPPLEMENTAL_ARROWS_C_ID = 250; /*[1F800]*/
9161fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
9172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int TIRHUTA_ID = 251; /*[11480]*/
9181fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
9192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int WARANG_CITI_ID = 252; /*[118A0]*/
9202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
9212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /* New blocks in Unicode 8.0 */
9222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
9231fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
9242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int AHOM_ID = 253; /*[11700]*/
9251fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
9262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ANATOLIAN_HIEROGLYPHS_ID = 254; /*[14400]*/
9271fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
9282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CHEROKEE_SUPPLEMENT_ID = 255; /*[AB70]*/
9291fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
9302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E_ID = 256; /*[2B820]*/
9311fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
9322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int EARLY_DYNASTIC_CUNEIFORM_ID = 257; /*[12480]*/
9331fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
9342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int HATRAN_ID = 258; /*[108E0]*/
9351fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
9362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MULTANI_ID = 259; /*[11280]*/
9371fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
9382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int OLD_HUNGARIAN_ID = 260; /*[10C80]*/
9391fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
9402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SUPPLEMENTAL_SYMBOLS_AND_PICTOGRAPHS_ID = 261; /*[1F900]*/
9411fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
9422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SUTTON_SIGNWRITING_ID = 262; /*[1D800]*/
9432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
9442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
945ff2b69bcfd12088a375804686b38e0d6bbf141acPaul Duffin         * @hide unsupported on Android
9462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
9472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int COUNT = 263;
9482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
9492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // blocks objects ---------------------------------------------------
9502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
9512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
9522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Array of UnicodeBlocks, for easy access in getInstance(int)
9532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
9542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        private final static UnicodeBlock BLOCKS_[] = new UnicodeBlock[COUNT];
9552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
9562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
9572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
9582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock NO_BLOCK
9592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("NO_BLOCK", 0);
9602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
9612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
9622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
9632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock BASIC_LATIN
9642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("BASIC_LATIN", BASIC_LATIN_ID);
9652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
9662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
9672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock LATIN_1_SUPPLEMENT
9682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("LATIN_1_SUPPLEMENT", LATIN_1_SUPPLEMENT_ID);
9692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
9702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
9712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock LATIN_EXTENDED_A
9722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("LATIN_EXTENDED_A", LATIN_EXTENDED_A_ID);
9732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
9742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
9752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock LATIN_EXTENDED_B
9762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("LATIN_EXTENDED_B", LATIN_EXTENDED_B_ID);
9772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
9782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
9792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock IPA_EXTENSIONS
9802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("IPA_EXTENSIONS", IPA_EXTENSIONS_ID);
9812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
9822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
9832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SPACING_MODIFIER_LETTERS
9842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("SPACING_MODIFIER_LETTERS", SPACING_MODIFIER_LETTERS_ID);
9852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
9862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
9872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock COMBINING_DIACRITICAL_MARKS
9882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("COMBINING_DIACRITICAL_MARKS", COMBINING_DIACRITICAL_MARKS_ID);
9892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
9902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Unicode 3.2 renames this block to "Greek and Coptic".
9912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
9922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock GREEK
9932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("GREEK", GREEK_ID);
9942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
9952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
9962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CYRILLIC
9972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("CYRILLIC", CYRILLIC_ID);
9982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
9992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ARMENIAN
10012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("ARMENIAN", ARMENIAN_ID);
10022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock HEBREW
10052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("HEBREW", HEBREW_ID);
10062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ARABIC
10092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("ARABIC", ARABIC_ID);
10102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SYRIAC
10132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("SYRIAC", SYRIAC_ID);
10142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock THAANA
10172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("THAANA", THAANA_ID);
10182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock DEVANAGARI
10212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("DEVANAGARI", DEVANAGARI_ID);
10222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock BENGALI
10252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("BENGALI", BENGALI_ID);
10262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock GURMUKHI
10292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("GURMUKHI", GURMUKHI_ID);
10302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock GUJARATI
10332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("GUJARATI", GUJARATI_ID);
10342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ORIYA
10372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("ORIYA", ORIYA_ID);
10382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock TAMIL
10412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("TAMIL", TAMIL_ID);
10422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock TELUGU
10452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("TELUGU", TELUGU_ID);
10462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock KANNADA
10492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("KANNADA", KANNADA_ID);
10502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MALAYALAM
10532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("MALAYALAM", MALAYALAM_ID);
10542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SINHALA
10572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("SINHALA", SINHALA_ID);
10582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock THAI
10612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("THAI", THAI_ID);
10622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock LAO
10652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("LAO", LAO_ID);
10662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock TIBETAN
10692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("TIBETAN", TIBETAN_ID);
10702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MYANMAR
10732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("MYANMAR", MYANMAR_ID);
10742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock GEORGIAN
10772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("GEORGIAN", GEORGIAN_ID);
10782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock HANGUL_JAMO
10812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("HANGUL_JAMO", HANGUL_JAMO_ID);
10822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ETHIOPIC
10852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("ETHIOPIC", ETHIOPIC_ID);
10862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CHEROKEE
10892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("CHEROKEE", CHEROKEE_ID);
10902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS
10932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS",
10942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_ID);
10952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
10962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
10972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock OGHAM
10982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("OGHAM", OGHAM_ID);
10992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock RUNIC
11022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("RUNIC", RUNIC_ID);
11032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock KHMER
11062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("KHMER", KHMER_ID);
11072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MONGOLIAN
11102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("MONGOLIAN", MONGOLIAN_ID);
11112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock LATIN_EXTENDED_ADDITIONAL
11142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("LATIN_EXTENDED_ADDITIONAL", LATIN_EXTENDED_ADDITIONAL_ID);
11152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock GREEK_EXTENDED
11182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("GREEK_EXTENDED", GREEK_EXTENDED_ID);
11192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock GENERAL_PUNCTUATION
11222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("GENERAL_PUNCTUATION", GENERAL_PUNCTUATION_ID);
11232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SUPERSCRIPTS_AND_SUBSCRIPTS
11262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("SUPERSCRIPTS_AND_SUBSCRIPTS", SUPERSCRIPTS_AND_SUBSCRIPTS_ID);
11272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CURRENCY_SYMBOLS
11302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("CURRENCY_SYMBOLS", CURRENCY_SYMBOLS_ID);
11312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Unicode 3.2 renames this block to "Combining Diacritical Marks for
11332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Symbols".
11342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock COMBINING_MARKS_FOR_SYMBOLS
11362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("COMBINING_MARKS_FOR_SYMBOLS", COMBINING_MARKS_FOR_SYMBOLS_ID);
11372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock LETTERLIKE_SYMBOLS
11402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("LETTERLIKE_SYMBOLS", LETTERLIKE_SYMBOLS_ID);
11412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock NUMBER_FORMS
11442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("NUMBER_FORMS", NUMBER_FORMS_ID);
11452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ARROWS
11482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("ARROWS", ARROWS_ID);
11492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MATHEMATICAL_OPERATORS
11522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("MATHEMATICAL_OPERATORS", MATHEMATICAL_OPERATORS_ID);
11532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MISCELLANEOUS_TECHNICAL
11562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("MISCELLANEOUS_TECHNICAL", MISCELLANEOUS_TECHNICAL_ID);
11572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CONTROL_PICTURES
11602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("CONTROL_PICTURES", CONTROL_PICTURES_ID);
11612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock OPTICAL_CHARACTER_RECOGNITION
11642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("OPTICAL_CHARACTER_RECOGNITION", OPTICAL_CHARACTER_RECOGNITION_ID);
11652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ENCLOSED_ALPHANUMERICS
11682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("ENCLOSED_ALPHANUMERICS", ENCLOSED_ALPHANUMERICS_ID);
11692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock BOX_DRAWING
11722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("BOX_DRAWING", BOX_DRAWING_ID);
11732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock BLOCK_ELEMENTS
11762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("BLOCK_ELEMENTS", BLOCK_ELEMENTS_ID);
11772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock GEOMETRIC_SHAPES
11802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("GEOMETRIC_SHAPES", GEOMETRIC_SHAPES_ID);
11812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MISCELLANEOUS_SYMBOLS
11842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("MISCELLANEOUS_SYMBOLS", MISCELLANEOUS_SYMBOLS_ID);
11852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock DINGBATS
11882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("DINGBATS", DINGBATS_ID);
11892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock BRAILLE_PATTERNS
11922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("BRAILLE_PATTERNS", BRAILLE_PATTERNS_ID);
11932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CJK_RADICALS_SUPPLEMENT
11962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("CJK_RADICALS_SUPPLEMENT", CJK_RADICALS_SUPPLEMENT_ID);
11972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
11982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
11992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock KANGXI_RADICALS
12002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("KANGXI_RADICALS", KANGXI_RADICALS_ID);
12012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
12032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock IDEOGRAPHIC_DESCRIPTION_CHARACTERS
12042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("IDEOGRAPHIC_DESCRIPTION_CHARACTERS",
12052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                IDEOGRAPHIC_DESCRIPTION_CHARACTERS_ID);
12062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
12082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CJK_SYMBOLS_AND_PUNCTUATION
12092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("CJK_SYMBOLS_AND_PUNCTUATION", CJK_SYMBOLS_AND_PUNCTUATION_ID);
12102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
12122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock HIRAGANA
12132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("HIRAGANA", HIRAGANA_ID);
12142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
12162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock KATAKANA
12172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("KATAKANA", KATAKANA_ID);
12182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
12202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock BOPOMOFO
12212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("BOPOMOFO", BOPOMOFO_ID);
12222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
12242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock HANGUL_COMPATIBILITY_JAMO
12252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("HANGUL_COMPATIBILITY_JAMO", HANGUL_COMPATIBILITY_JAMO_ID);
12262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
12282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock KANBUN
12292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("KANBUN", KANBUN_ID);
12302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
12322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock BOPOMOFO_EXTENDED
12332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("BOPOMOFO_EXTENDED", BOPOMOFO_EXTENDED_ID);
12342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
12362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ENCLOSED_CJK_LETTERS_AND_MONTHS
12372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("ENCLOSED_CJK_LETTERS_AND_MONTHS",
12382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                ENCLOSED_CJK_LETTERS_AND_MONTHS_ID);
12392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
12412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CJK_COMPATIBILITY
12422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("CJK_COMPATIBILITY", CJK_COMPATIBILITY_ID);
12432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
12452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
12462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A",
12472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A_ID);
12482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
12502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS
12512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS", CJK_UNIFIED_IDEOGRAPHS_ID);
12522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
12542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock YI_SYLLABLES
12552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("YI_SYLLABLES", YI_SYLLABLES_ID);
12562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
12582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock YI_RADICALS
12592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("YI_RADICALS", YI_RADICALS_ID);
12602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
12622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock HANGUL_SYLLABLES
12632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("HANGUL_SYLLABLES", HANGUL_SYLLABLES_ID);
12642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
12662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock HIGH_SURROGATES
12672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("HIGH_SURROGATES", HIGH_SURROGATES_ID);
12682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
12702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock HIGH_PRIVATE_USE_SURROGATES
12712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("HIGH_PRIVATE_USE_SURROGATES", HIGH_PRIVATE_USE_SURROGATES_ID);
12722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
12742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock LOW_SURROGATES
12752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("LOW_SURROGATES", LOW_SURROGATES_ID);
12762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Same as public static final int PRIVATE_USE.
12782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Until Unicode 3.1.1; the corresponding block name was "Private Use";
12792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * and multiple code point ranges had this block.
12802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Unicode 3.2 renames the block for the BMP PUA to "Private Use Area"
12812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * and adds separate blocks for the supplementary PUAs.
12822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
12832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock PRIVATE_USE_AREA
12842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("PRIVATE_USE_AREA",  78);
12852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Same as public static final int PRIVATE_USE_AREA.
12872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Until Unicode 3.1.1; the corresponding block name was "Private Use";
12882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * and multiple code point ranges had this block.
12892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Unicode 3.2 renames the block for the BMP PUA to "Private Use Area"
12902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * and adds separate blocks for the supplementary PUAs.
12912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
12922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock PRIVATE_USE
12932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = PRIVATE_USE_AREA;
12942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
12962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CJK_COMPATIBILITY_IDEOGRAPHS
12972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("CJK_COMPATIBILITY_IDEOGRAPHS", CJK_COMPATIBILITY_IDEOGRAPHS_ID);
12982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
12992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
13002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ALPHABETIC_PRESENTATION_FORMS
13012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("ALPHABETIC_PRESENTATION_FORMS", ALPHABETIC_PRESENTATION_FORMS_ID);
13022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
13032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
13042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ARABIC_PRESENTATION_FORMS_A
13052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("ARABIC_PRESENTATION_FORMS_A", ARABIC_PRESENTATION_FORMS_A_ID);
13062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
13072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
13082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock COMBINING_HALF_MARKS
13092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("COMBINING_HALF_MARKS", COMBINING_HALF_MARKS_ID);
13102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
13112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
13122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CJK_COMPATIBILITY_FORMS
13132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("CJK_COMPATIBILITY_FORMS", CJK_COMPATIBILITY_FORMS_ID);
13142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
13152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
13162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SMALL_FORM_VARIANTS
13172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("SMALL_FORM_VARIANTS", SMALL_FORM_VARIANTS_ID);
13182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
13192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
13202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ARABIC_PRESENTATION_FORMS_B
13212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("ARABIC_PRESENTATION_FORMS_B", ARABIC_PRESENTATION_FORMS_B_ID);
13222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
13232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
13242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SPECIALS
13252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("SPECIALS", SPECIALS_ID);
13262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
13272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
13282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock HALFWIDTH_AND_FULLWIDTH_FORMS
13292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("HALFWIDTH_AND_FULLWIDTH_FORMS", HALFWIDTH_AND_FULLWIDTH_FORMS_ID);
13302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
13312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
13322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock OLD_ITALIC
13332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("OLD_ITALIC", OLD_ITALIC_ID);
13342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
13352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
13362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock GOTHIC
13372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("GOTHIC", GOTHIC_ID);
13382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
13392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
13402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock DESERET
13412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("DESERET", DESERET_ID);
13422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
13432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
13442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock BYZANTINE_MUSICAL_SYMBOLS
13452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("BYZANTINE_MUSICAL_SYMBOLS", BYZANTINE_MUSICAL_SYMBOLS_ID);
13462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
13472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
13482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MUSICAL_SYMBOLS
13492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("MUSICAL_SYMBOLS", MUSICAL_SYMBOLS_ID);
13502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
13512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
13522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MATHEMATICAL_ALPHANUMERIC_SYMBOLS
13532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("MATHEMATICAL_ALPHANUMERIC_SYMBOLS",
13542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                MATHEMATICAL_ALPHANUMERIC_SYMBOLS_ID);
13552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
13562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
13572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B
13582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B",
13592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B_ID);
13602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
13612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
13622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock
13632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT
13642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT",
13652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT_ID);
13662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
13672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
13682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock TAGS
13692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("TAGS", TAGS_ID);
13702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
13712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // New blocks in Unicode 3.2
13722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
13732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
13742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Unicode 4.0.1 renames the "Cyrillic Supplementary" block to "Cyrillic Supplement".
13752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
13762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CYRILLIC_SUPPLEMENTARY
13772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("CYRILLIC_SUPPLEMENTARY", CYRILLIC_SUPPLEMENTARY_ID);
13782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
13792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Unicode 4.0.1 renames the "Cyrillic Supplementary" block to "Cyrillic Supplement".
13802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
13812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CYRILLIC_SUPPLEMENT
13822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("CYRILLIC_SUPPLEMENT", CYRILLIC_SUPPLEMENT_ID);
13832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
13842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
13852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock TAGALOG
13862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("TAGALOG", TAGALOG_ID);
13872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
13882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
13892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock HANUNOO
13902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("HANUNOO", HANUNOO_ID);
13912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
13922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
13932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock BUHID
13942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("BUHID", BUHID_ID);
13952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
13962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
13972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock TAGBANWA
13982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("TAGBANWA", TAGBANWA_ID);
13992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
14002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
14012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A
14022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A",
14032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A_ID);
14042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
14052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
14062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SUPPLEMENTAL_ARROWS_A
14072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("SUPPLEMENTAL_ARROWS_A", SUPPLEMENTAL_ARROWS_A_ID);
14082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
14092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
14102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SUPPLEMENTAL_ARROWS_B
14112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("SUPPLEMENTAL_ARROWS_B", SUPPLEMENTAL_ARROWS_B_ID);
14122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
14132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
14142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B
14152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B",
14162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B_ID);
14172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
14182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
14192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SUPPLEMENTAL_MATHEMATICAL_OPERATORS
14202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("SUPPLEMENTAL_MATHEMATICAL_OPERATORS",
14212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                SUPPLEMENTAL_MATHEMATICAL_OPERATORS_ID);
14222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
14232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
14242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock KATAKANA_PHONETIC_EXTENSIONS
14252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("KATAKANA_PHONETIC_EXTENSIONS", KATAKANA_PHONETIC_EXTENSIONS_ID);
14262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
14272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
14282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock VARIATION_SELECTORS
14292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("VARIATION_SELECTORS", VARIATION_SELECTORS_ID);
14302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
14312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
14322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SUPPLEMENTARY_PRIVATE_USE_AREA_A
14332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("SUPPLEMENTARY_PRIVATE_USE_AREA_A",
14342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                SUPPLEMENTARY_PRIVATE_USE_AREA_A_ID);
14352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
14362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
14372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SUPPLEMENTARY_PRIVATE_USE_AREA_B
14382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("SUPPLEMENTARY_PRIVATE_USE_AREA_B",
14392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                SUPPLEMENTARY_PRIVATE_USE_AREA_B_ID);
14402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
14412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
14422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
14432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock LIMBU
14442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("LIMBU", LIMBU_ID);
14452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
14462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
14472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock TAI_LE
14482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("TAI_LE", TAI_LE_ID);
14492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
14502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
14512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock KHMER_SYMBOLS
14522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("KHMER_SYMBOLS", KHMER_SYMBOLS_ID);
14532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
14542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
14552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
14562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock PHONETIC_EXTENSIONS
14572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("PHONETIC_EXTENSIONS", PHONETIC_EXTENSIONS_ID);
14582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
14592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
14602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
14612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MISCELLANEOUS_SYMBOLS_AND_ARROWS
14622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("MISCELLANEOUS_SYMBOLS_AND_ARROWS",
14632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                MISCELLANEOUS_SYMBOLS_AND_ARROWS_ID);
14642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
14652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
14662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock YIJING_HEXAGRAM_SYMBOLS
14672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("YIJING_HEXAGRAM_SYMBOLS", YIJING_HEXAGRAM_SYMBOLS_ID);
14682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
14692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
14702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock LINEAR_B_SYLLABARY
14712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("LINEAR_B_SYLLABARY", LINEAR_B_SYLLABARY_ID);
14722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
14732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
14742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock LINEAR_B_IDEOGRAMS
14752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("LINEAR_B_IDEOGRAMS", LINEAR_B_IDEOGRAMS_ID);
14762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
14772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
14782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock AEGEAN_NUMBERS
14792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("AEGEAN_NUMBERS", AEGEAN_NUMBERS_ID);
14802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
14812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
14822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock UGARITIC
14832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("UGARITIC", UGARITIC_ID);
14842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
14852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
14862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SHAVIAN
14872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("SHAVIAN", SHAVIAN_ID);
14882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
14892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
14902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock OSMANYA
14912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("OSMANYA", OSMANYA_ID);
14922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
14932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
14942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CYPRIOT_SYLLABARY
14952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("CYPRIOT_SYLLABARY", CYPRIOT_SYLLABARY_ID);
14962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
14972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
14982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock TAI_XUAN_JING_SYMBOLS
14992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("TAI_XUAN_JING_SYMBOLS", TAI_XUAN_JING_SYMBOLS_ID);
15002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
15012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
15022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
15032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock VARIATION_SELECTORS_SUPPLEMENT
15042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("VARIATION_SELECTORS_SUPPLEMENT", VARIATION_SELECTORS_SUPPLEMENT_ID);
15052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
15062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /* New blocks in Unicode 4.1 */
15072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
15082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
15092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
15102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ANCIENT_GREEK_MUSICAL_NOTATION =
15112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("ANCIENT_GREEK_MUSICAL_NOTATION",
15122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        ANCIENT_GREEK_MUSICAL_NOTATION_ID); /*[1D200]*/
15132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
15142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
15152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
15162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ANCIENT_GREEK_NUMBERS =
15172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("ANCIENT_GREEK_NUMBERS", ANCIENT_GREEK_NUMBERS_ID); /*[10140]*/
15182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
15192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
15202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
15212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ARABIC_SUPPLEMENT =
15222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("ARABIC_SUPPLEMENT", ARABIC_SUPPLEMENT_ID); /*[0750]*/
15232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
15242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
15252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
15262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock BUGINESE =
15272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("BUGINESE", BUGINESE_ID); /*[1A00]*/
15282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
15292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
15302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
15312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CJK_STROKES =
15322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("CJK_STROKES", CJK_STROKES_ID); /*[31C0]*/
15332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
15342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
15352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
15362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock COMBINING_DIACRITICAL_MARKS_SUPPLEMENT =
15372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("COMBINING_DIACRITICAL_MARKS_SUPPLEMENT",
15382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        COMBINING_DIACRITICAL_MARKS_SUPPLEMENT_ID); /*[1DC0]*/
15392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
15402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
15412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
15422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock COPTIC = new UnicodeBlock("COPTIC", COPTIC_ID); /*[2C80]*/
15432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
15442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
15452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
15462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ETHIOPIC_EXTENDED =
15472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("ETHIOPIC_EXTENDED", ETHIOPIC_EXTENDED_ID); /*[2D80]*/
15482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
15492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
15502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
15512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ETHIOPIC_SUPPLEMENT =
15522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("ETHIOPIC_SUPPLEMENT", ETHIOPIC_SUPPLEMENT_ID); /*[1380]*/
15532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
15542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
15552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
15562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock GEORGIAN_SUPPLEMENT =
15572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("GEORGIAN_SUPPLEMENT", GEORGIAN_SUPPLEMENT_ID); /*[2D00]*/
15582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
15592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
15602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
15612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock GLAGOLITIC =
15622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("GLAGOLITIC", GLAGOLITIC_ID); /*[2C00]*/
15632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
15642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
15652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
15662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock KHAROSHTHI =
15672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("KHAROSHTHI", KHAROSHTHI_ID); /*[10A00]*/
15682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
15692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
15702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
15712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MODIFIER_TONE_LETTERS =
15722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("MODIFIER_TONE_LETTERS", MODIFIER_TONE_LETTERS_ID); /*[A700]*/
15732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
15742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
15752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
15762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock NEW_TAI_LUE =
15772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("NEW_TAI_LUE", NEW_TAI_LUE_ID); /*[1980]*/
15782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
15792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
15802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
15812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock OLD_PERSIAN =
15822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("OLD_PERSIAN", OLD_PERSIAN_ID); /*[103A0]*/
15832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
15842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
15852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
15862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock PHONETIC_EXTENSIONS_SUPPLEMENT =
15872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("PHONETIC_EXTENSIONS_SUPPLEMENT",
15882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        PHONETIC_EXTENSIONS_SUPPLEMENT_ID); /*[1D80]*/
15892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
15902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
15912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
15922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SUPPLEMENTAL_PUNCTUATION =
15932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("SUPPLEMENTAL_PUNCTUATION", SUPPLEMENTAL_PUNCTUATION_ID); /*[2E00]*/
15942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
15952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
15962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
15972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SYLOTI_NAGRI =
15982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("SYLOTI_NAGRI", SYLOTI_NAGRI_ID); /*[A800]*/
15992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
16002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
16012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
16022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock TIFINAGH =
16032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("TIFINAGH", TIFINAGH_ID); /*[2D30]*/
16042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
16052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
16062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
16072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock VERTICAL_FORMS =
16082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("VERTICAL_FORMS", VERTICAL_FORMS_ID); /*[FE10]*/
16092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
16102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
16112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
16122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock NKO = new UnicodeBlock("NKO", NKO_ID); /*[07C0]*/
16132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
16142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
16152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock BALINESE =
16162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("BALINESE", BALINESE_ID); /*[1B00]*/
16172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
16182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
16192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock LATIN_EXTENDED_C =
16202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("LATIN_EXTENDED_C", LATIN_EXTENDED_C_ID); /*[2C60]*/
16212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
16222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
16232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock LATIN_EXTENDED_D =
16242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("LATIN_EXTENDED_D", LATIN_EXTENDED_D_ID); /*[A720]*/
16252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
16262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
16272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock PHAGS_PA =
16282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("PHAGS_PA", PHAGS_PA_ID); /*[A840]*/
16292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
16302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
16312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock PHOENICIAN =
16322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("PHOENICIAN", PHOENICIAN_ID); /*[10900]*/
16332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
16342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
16352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CUNEIFORM =
16362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("CUNEIFORM", CUNEIFORM_ID); /*[12000]*/
16372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
16382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
16392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CUNEIFORM_NUMBERS_AND_PUNCTUATION =
16402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("CUNEIFORM_NUMBERS_AND_PUNCTUATION",
16412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        CUNEIFORM_NUMBERS_AND_PUNCTUATION_ID); /*[12400]*/
16422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
16432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
16442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock COUNTING_ROD_NUMERALS =
16452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("COUNTING_ROD_NUMERALS", COUNTING_ROD_NUMERALS_ID); /*[1D360]*/
16462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
16472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
16482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
16492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SUNDANESE =
16502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("SUNDANESE", SUNDANESE_ID); /* [1B80] */
16512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
16522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
16532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
16542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock LEPCHA =
16552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("LEPCHA", LEPCHA_ID); /* [1C00] */
16562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
16572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
16582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
16592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock OL_CHIKI =
16602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("OL_CHIKI", OL_CHIKI_ID); /* [1C50] */
16612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
16622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
16632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
16642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CYRILLIC_EXTENDED_A =
16652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("CYRILLIC_EXTENDED_A", CYRILLIC_EXTENDED_A_ID); /* [2DE0] */
16662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
16672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
16682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
16692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock VAI = new UnicodeBlock("VAI", VAI_ID); /* [A500] */
16702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
16712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
16722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
16732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CYRILLIC_EXTENDED_B =
16742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("CYRILLIC_EXTENDED_B", CYRILLIC_EXTENDED_B_ID); /* [A640] */
16752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
16762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
16772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
16782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SAURASHTRA =
16792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("SAURASHTRA", SAURASHTRA_ID); /* [A880] */
16802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
16812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
16822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
16832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock KAYAH_LI =
16842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("KAYAH_LI", KAYAH_LI_ID); /* [A900] */
16852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
16862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
16872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
16882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock REJANG =
16892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("REJANG", REJANG_ID); /* [A930] */
16902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
16912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
16922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
16932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CHAM =
16942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("CHAM", CHAM_ID); /* [AA00] */
16952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
16962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
16972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
16982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ANCIENT_SYMBOLS =
16992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("ANCIENT_SYMBOLS", ANCIENT_SYMBOLS_ID); /* [10190] */
17002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
17012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
17022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
17032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock PHAISTOS_DISC =
17042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("PHAISTOS_DISC", PHAISTOS_DISC_ID); /* [101D0] */
17052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
17062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
17072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
17082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock LYCIAN =
17092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("LYCIAN", LYCIAN_ID); /* [10280] */
17102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
17112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
17122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
17132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CARIAN =
17142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("CARIAN", CARIAN_ID); /* [102A0] */
17152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
17162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
17172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
17182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock LYDIAN =
17192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("LYDIAN", LYDIAN_ID); /* [10920] */
17202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
17212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
17222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
17232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MAHJONG_TILES =
17242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("MAHJONG_TILES", MAHJONG_TILES_ID); /* [1F000] */
17252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
17262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
17272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
17282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock DOMINO_TILES =
17292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("DOMINO_TILES", DOMINO_TILES_ID); /* [1F030] */
17302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
17312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /* New blocks in Unicode 5.2 */
17322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
17331fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
17342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SAMARITAN =
17352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("SAMARITAN", SAMARITAN_ID); /*[0800]*/
17361fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
17372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED =
17382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED",
17392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED_ID); /*[18B0]*/
17401fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
17412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock TAI_THAM =
17422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("TAI_THAM", TAI_THAM_ID); /*[1A20]*/
17431fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
17442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock VEDIC_EXTENSIONS =
17452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("VEDIC_EXTENSIONS", VEDIC_EXTENSIONS_ID); /*[1CD0]*/
17461fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
17472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock LISU =
17482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("LISU", LISU_ID); /*[A4D0]*/
17491fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
17502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock BAMUM =
17512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("BAMUM", BAMUM_ID); /*[A6A0]*/
17521fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
17532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock COMMON_INDIC_NUMBER_FORMS =
17542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("COMMON_INDIC_NUMBER_FORMS", COMMON_INDIC_NUMBER_FORMS_ID); /*[A830]*/
17551fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
17562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock DEVANAGARI_EXTENDED =
17572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("DEVANAGARI_EXTENDED", DEVANAGARI_EXTENDED_ID); /*[A8E0]*/
17581fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
17592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock HANGUL_JAMO_EXTENDED_A =
17602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("HANGUL_JAMO_EXTENDED_A", HANGUL_JAMO_EXTENDED_A_ID); /*[A960]*/
17611fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
17622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock JAVANESE =
17632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("JAVANESE", JAVANESE_ID); /*[A980]*/
17641fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
17652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MYANMAR_EXTENDED_A =
17662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("MYANMAR_EXTENDED_A", MYANMAR_EXTENDED_A_ID); /*[AA60]*/
17671fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
17682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock TAI_VIET =
17692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("TAI_VIET", TAI_VIET_ID); /*[AA80]*/
17701fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
17712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MEETEI_MAYEK =
17722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("MEETEI_MAYEK", MEETEI_MAYEK_ID); /*[ABC0]*/
17731fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
17742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock HANGUL_JAMO_EXTENDED_B =
17752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("HANGUL_JAMO_EXTENDED_B", HANGUL_JAMO_EXTENDED_B_ID); /*[D7B0]*/
17761fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
17772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock IMPERIAL_ARAMAIC =
17782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("IMPERIAL_ARAMAIC", IMPERIAL_ARAMAIC_ID); /*[10840]*/
17791fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
17802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock OLD_SOUTH_ARABIAN =
17812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("OLD_SOUTH_ARABIAN", OLD_SOUTH_ARABIAN_ID); /*[10A60]*/
17821fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
17832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock AVESTAN =
17842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("AVESTAN", AVESTAN_ID); /*[10B00]*/
17851fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
17862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock INSCRIPTIONAL_PARTHIAN =
17872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("INSCRIPTIONAL_PARTHIAN", INSCRIPTIONAL_PARTHIAN_ID); /*[10B40]*/
17881fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
17892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock INSCRIPTIONAL_PAHLAVI =
17902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("INSCRIPTIONAL_PAHLAVI", INSCRIPTIONAL_PAHLAVI_ID); /*[10B60]*/
17911fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
17922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock OLD_TURKIC =
17932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("OLD_TURKIC", OLD_TURKIC_ID); /*[10C00]*/
17941fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
17952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock RUMI_NUMERAL_SYMBOLS =
17962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("RUMI_NUMERAL_SYMBOLS", RUMI_NUMERAL_SYMBOLS_ID); /*[10E60]*/
17971fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
17982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock KAITHI =
17992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("KAITHI", KAITHI_ID); /*[11080]*/
18001fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock EGYPTIAN_HIEROGLYPHS =
18022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("EGYPTIAN_HIEROGLYPHS", EGYPTIAN_HIEROGLYPHS_ID); /*[13000]*/
18031fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ENCLOSED_ALPHANUMERIC_SUPPLEMENT =
18052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("ENCLOSED_ALPHANUMERIC_SUPPLEMENT",
18062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        ENCLOSED_ALPHANUMERIC_SUPPLEMENT_ID); /*[1F100]*/
18071fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ENCLOSED_IDEOGRAPHIC_SUPPLEMENT =
18092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("ENCLOSED_IDEOGRAPHIC_SUPPLEMENT",
18102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        ENCLOSED_IDEOGRAPHIC_SUPPLEMENT_ID); /*[1F200]*/
18111fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C =
18132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C",
18142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C_ID); /*[2A700]*/
18152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
18162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /* New blocks in Unicode 6.0 */
18172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
18181fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MANDAIC =
18202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("MANDAIC", MANDAIC_ID); /*[0840]*/
18211fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock BATAK =
18232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("BATAK", BATAK_ID); /*[1BC0]*/
18241fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ETHIOPIC_EXTENDED_A =
18262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("ETHIOPIC_EXTENDED_A", ETHIOPIC_EXTENDED_A_ID); /*[AB00]*/
18271fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock BRAHMI =
18292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("BRAHMI", BRAHMI_ID); /*[11000]*/
18301fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock BAMUM_SUPPLEMENT =
18322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("BAMUM_SUPPLEMENT", BAMUM_SUPPLEMENT_ID); /*[16800]*/
18331fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock KANA_SUPPLEMENT =
18352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("KANA_SUPPLEMENT", KANA_SUPPLEMENT_ID); /*[1B000]*/
18361fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock PLAYING_CARDS =
18382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("PLAYING_CARDS", PLAYING_CARDS_ID); /*[1F0A0]*/
18391fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS =
18412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS",
18422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS_ID); /*[1F300]*/
18431fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock EMOTICONS =
18452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("EMOTICONS", EMOTICONS_ID); /*[1F600]*/
18461fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock TRANSPORT_AND_MAP_SYMBOLS =
18482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("TRANSPORT_AND_MAP_SYMBOLS", TRANSPORT_AND_MAP_SYMBOLS_ID); /*[1F680]*/
18491fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ALCHEMICAL_SYMBOLS =
18512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("ALCHEMICAL_SYMBOLS", ALCHEMICAL_SYMBOLS_ID); /*[1F700]*/
18521fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D =
18542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D",
18552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D_ID); /*[2B740]*/
18562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
18572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /* New blocks in Unicode 6.1 */
18582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
18591fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ARABIC_EXTENDED_A =
18612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("ARABIC_EXTENDED_A", ARABIC_EXTENDED_A_ID); /*[08A0]*/
18621fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS =
18642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS", ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS_ID); /*[1EE00]*/
18651fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CHAKMA = new UnicodeBlock("CHAKMA", CHAKMA_ID); /*[11100]*/
18671fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MEETEI_MAYEK_EXTENSIONS =
18692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("MEETEI_MAYEK_EXTENSIONS", MEETEI_MAYEK_EXTENSIONS_ID); /*[AAE0]*/
18701fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MEROITIC_CURSIVE =
18722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("MEROITIC_CURSIVE", MEROITIC_CURSIVE_ID); /*[109A0]*/
18731fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MEROITIC_HIEROGLYPHS =
18752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("MEROITIC_HIEROGLYPHS", MEROITIC_HIEROGLYPHS_ID); /*[10980]*/
18761fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MIAO = new UnicodeBlock("MIAO", MIAO_ID); /*[16F00]*/
18781fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SHARADA = new UnicodeBlock("SHARADA", SHARADA_ID); /*[11180]*/
18801fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SORA_SOMPENG =
18822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("SORA_SOMPENG", SORA_SOMPENG_ID); /*[110D0]*/
18831fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SUNDANESE_SUPPLEMENT =
18852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("SUNDANESE_SUPPLEMENT", SUNDANESE_SUPPLEMENT_ID); /*[1CC0]*/
18861fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock TAKRI = new UnicodeBlock("TAKRI", TAKRI_ID); /*[11680]*/
18882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
18892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /* New blocks in Unicode 7.0 */
18902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
18911fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock BASSA_VAH = new UnicodeBlock("BASSA_VAH", BASSA_VAH_ID); /*[16AD0]*/
18931fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CAUCASIAN_ALBANIAN =
18952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("CAUCASIAN_ALBANIAN", CAUCASIAN_ALBANIAN_ID); /*[10530]*/
18961fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
18972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock COPTIC_EPACT_NUMBERS =
18982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("COPTIC_EPACT_NUMBERS", COPTIC_EPACT_NUMBERS_ID); /*[102E0]*/
18991fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock COMBINING_DIACRITICAL_MARKS_EXTENDED =
19012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("COMBINING_DIACRITICAL_MARKS_EXTENDED", COMBINING_DIACRITICAL_MARKS_EXTENDED_ID); /*[1AB0]*/
19021fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock DUPLOYAN = new UnicodeBlock("DUPLOYAN", DUPLOYAN_ID); /*[1BC00]*/
19041fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ELBASAN = new UnicodeBlock("ELBASAN", ELBASAN_ID); /*[10500]*/
19061fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock GEOMETRIC_SHAPES_EXTENDED =
19082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("GEOMETRIC_SHAPES_EXTENDED", GEOMETRIC_SHAPES_EXTENDED_ID); /*[1F780]*/
19091fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock GRANTHA = new UnicodeBlock("GRANTHA", GRANTHA_ID); /*[11300]*/
19111fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock KHOJKI = new UnicodeBlock("KHOJKI", KHOJKI_ID); /*[11200]*/
19131fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock KHUDAWADI = new UnicodeBlock("KHUDAWADI", KHUDAWADI_ID); /*[112B0]*/
19151fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock LATIN_EXTENDED_E =
19172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("LATIN_EXTENDED_E", LATIN_EXTENDED_E_ID); /*[AB30]*/
19181fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock LINEAR_A = new UnicodeBlock("LINEAR_A", LINEAR_A_ID); /*[10600]*/
19201fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MAHAJANI = new UnicodeBlock("MAHAJANI", MAHAJANI_ID); /*[11150]*/
19221fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MANICHAEAN = new UnicodeBlock("MANICHAEAN", MANICHAEAN_ID); /*[10AC0]*/
19241fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MENDE_KIKAKUI =
19262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("MENDE_KIKAKUI", MENDE_KIKAKUI_ID); /*[1E800]*/
19271fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MODI = new UnicodeBlock("MODI", MODI_ID); /*[11600]*/
19291fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MRO = new UnicodeBlock("MRO", MRO_ID); /*[16A40]*/
19311fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MYANMAR_EXTENDED_B =
19332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("MYANMAR_EXTENDED_B", MYANMAR_EXTENDED_B_ID); /*[A9E0]*/
19341fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock NABATAEAN = new UnicodeBlock("NABATAEAN", NABATAEAN_ID); /*[10880]*/
19361fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock OLD_NORTH_ARABIAN =
19382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("OLD_NORTH_ARABIAN", OLD_NORTH_ARABIAN_ID); /*[10A80]*/
19391fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock OLD_PERMIC = new UnicodeBlock("OLD_PERMIC", OLD_PERMIC_ID); /*[10350]*/
19411fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ORNAMENTAL_DINGBATS =
19432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("ORNAMENTAL_DINGBATS", ORNAMENTAL_DINGBATS_ID); /*[1F650]*/
19441fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock PAHAWH_HMONG = new UnicodeBlock("PAHAWH_HMONG", PAHAWH_HMONG_ID); /*[16B00]*/
19461fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock PALMYRENE = new UnicodeBlock("PALMYRENE", PALMYRENE_ID); /*[10860]*/
19481fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock PAU_CIN_HAU = new UnicodeBlock("PAU_CIN_HAU", PAU_CIN_HAU_ID); /*[11AC0]*/
19501fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock PSALTER_PAHLAVI =
19522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("PSALTER_PAHLAVI", PSALTER_PAHLAVI_ID); /*[10B80]*/
19531fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SHORTHAND_FORMAT_CONTROLS =
19552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("SHORTHAND_FORMAT_CONTROLS", SHORTHAND_FORMAT_CONTROLS_ID); /*[1BCA0]*/
19561fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SIDDHAM = new UnicodeBlock("SIDDHAM", SIDDHAM_ID); /*[11580]*/
19581fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SINHALA_ARCHAIC_NUMBERS =
19602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("SINHALA_ARCHAIC_NUMBERS", SINHALA_ARCHAIC_NUMBERS_ID); /*[111E0]*/
19611fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SUPPLEMENTAL_ARROWS_C =
19632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("SUPPLEMENTAL_ARROWS_C", SUPPLEMENTAL_ARROWS_C_ID); /*[1F800]*/
19641fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock TIRHUTA = new UnicodeBlock("TIRHUTA", TIRHUTA_ID); /*[11480]*/
19661fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock WARANG_CITI = new UnicodeBlock("WARANG_CITI", WARANG_CITI_ID); /*[118A0]*/
19682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
19692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /* New blocks in Unicode 8.0 */
19702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
19711fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock AHOM = new UnicodeBlock("AHOM", AHOM_ID); /*[11700]*/
19731fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock ANATOLIAN_HIEROGLYPHS =
19752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("ANATOLIAN_HIEROGLYPHS", ANATOLIAN_HIEROGLYPHS_ID); /*[14400]*/
19761fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CHEROKEE_SUPPLEMENT =
19782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("CHEROKEE_SUPPLEMENT", CHEROKEE_SUPPLEMENT_ID); /*[AB70]*/
19791fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E =
19812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E",
19822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E_ID); /*[2B820]*/
19831fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock EARLY_DYNASTIC_CUNEIFORM =
19852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("EARLY_DYNASTIC_CUNEIFORM", EARLY_DYNASTIC_CUNEIFORM_ID); /*[12480]*/
19861fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock HATRAN = new UnicodeBlock("HATRAN", HATRAN_ID); /*[108E0]*/
19881fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock MULTANI = new UnicodeBlock("MULTANI", MULTANI_ID); /*[11280]*/
19901fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock OLD_HUNGARIAN =
19922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("OLD_HUNGARIAN", OLD_HUNGARIAN_ID); /*[10C80]*/
19931fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SUPPLEMENTAL_SYMBOLS_AND_PICTOGRAPHS =
19952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("SUPPLEMENTAL_SYMBOLS_AND_PICTOGRAPHS",
19962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        SUPPLEMENTAL_SYMBOLS_AND_PICTOGRAPHS_ID); /*[1F900]*/
19971fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
19982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock SUTTON_SIGNWRITING =
19992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                new UnicodeBlock("SUTTON_SIGNWRITING", SUTTON_SIGNWRITING_ID); /*[1D800]*/
20002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
20012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
20022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
20032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock INVALID_CODE
20042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        = new UnicodeBlock("INVALID_CODE", INVALID_CODE_ID);
20052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
20062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        static {
20072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            for (int blockId = 0; blockId < COUNT; ++blockId) {
20082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                if (BLOCKS_[blockId] == null) {
20092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    throw new java.lang.IllegalStateException(
20102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                            "UnicodeBlock.BLOCKS_[" + blockId + "] not initialized");
20112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                }
20122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
20132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
20142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
20152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // public methods --------------------------------------------------
20162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
20172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
20181537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller         * <strong>[icu]</strong> Returns the only instance of the UnicodeBlock with the argument ID.
20192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * If no such ID exists, a INVALID_CODE UnicodeBlock will be returned.
20202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * @param id UnicodeBlock ID
20212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * @return the only instance of the UnicodeBlock with the argument ID
20222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         *         if it exists, otherwise a INVALID_CODE UnicodeBlock will be
20232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         *         returned.
20242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
20252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static UnicodeBlock getInstance(int id)
20262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        {
20272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if (id >= 0 && id < BLOCKS_.length) {
20282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                return BLOCKS_[id];
20292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
20302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return INVALID_CODE;
20312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
20322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
20332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
20342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Returns the Unicode allocation block that contains the code point,
20352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * or null if the code point is not a member of a defined block.
20362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * @param ch code point to be tested
20372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * @return the Unicode allocation block that contains the code point
20382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
20392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static UnicodeBlock of(int ch)
20402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        {
20412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if (ch > MAX_VALUE) {
20422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                return INVALID_CODE;
20432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
20442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
20452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return UnicodeBlock.getInstance(
20462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    UCharacterProperty.INSTANCE.getIntPropertyValue(ch, UProperty.BLOCK));
20472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
20482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
20492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
20507241d93e30f4c7c527c019cd6ca3a791ca22d9b2Fredrik Roubert         * Alternative to the {@link java.lang.Character.UnicodeBlock#forName(String)} method.
20517241d93e30f4c7c527c019cd6ca3a791ca22d9b2Fredrik Roubert         * Returns the Unicode block with the given name. <strong>[icu] Note:</strong> Unlike
20527241d93e30f4c7c527c019cd6ca3a791ca22d9b2Fredrik Roubert         * {@link java.lang.Character.UnicodeBlock#forName(String)}, this only matches
20532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * against the official UCD name and the Java block name
20542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * (ignoring case).
20552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * @param blockName the name of the block to match
20562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * @return the UnicodeBlock with that name
20572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * @throws IllegalArgumentException if the blockName could not be matched
20582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
20592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final UnicodeBlock forName(String blockName) {
20602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            Map<String, UnicodeBlock> m = null;
20612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if (mref != null) {
20622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                m = mref.get();
20632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
20642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if (m == null) {
20652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                m = new HashMap<String, UnicodeBlock>(BLOCKS_.length);
20662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                for (int i = 0; i < BLOCKS_.length; ++i) {
20672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    UnicodeBlock b = BLOCKS_[i];
20682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    String name = trimBlockName(
20692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                            getPropertyValueName(UProperty.BLOCK, b.getID(),
20702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                                    UProperty.NameChoice.LONG));
20712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    m.put(name, b);
20722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                }
20732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                mref = new SoftReference<Map<String, UnicodeBlock>>(m);
20742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
20752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            UnicodeBlock b = m.get(trimBlockName(blockName));
20762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if (b == null) {
20772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                throw new IllegalArgumentException();
20782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
20792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return b;
20802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
20812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        private static SoftReference<Map<String, UnicodeBlock>> mref;
20822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
20832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        private static String trimBlockName(String name) {
20842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            String upper = name.toUpperCase(Locale.ENGLISH);
20852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            StringBuilder result = new StringBuilder(upper.length());
20862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            for (int i = 0; i < upper.length(); i++) {
20872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                char c = upper.charAt(i);
20882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                if (c != ' ' && c != '_' && c != '-') {
20892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    result.append(c);
20902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                }
20912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
20922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return result.toString();
20932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
20942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
20952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
20962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * {icu} Returns the type ID of this Unicode block
20972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * @return integer type ID of this Unicode block
20982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
20992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public int getID()
21002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        {
21012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return m_id_;
21022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
21032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
21042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // private data members ---------------------------------------------
21052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
21062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
21072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Identification code for this UnicodeBlock
21082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
21092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        private int m_id_;
21102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
21112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // private constructor ----------------------------------------------
21122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
21132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
21142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * UnicodeBlock constructor
21152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * @param name name of this UnicodeBlock
21162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * @param id unique id of this UnicodeBlock
21172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * @exception NullPointerException if name is <code>null</code>
21182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
21192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        private UnicodeBlock(String name, int id)
21202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        {
21212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            super(name);
21222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            m_id_ = id;
21232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if (id >= 0) {
21242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                BLOCKS_[id] = this;
21252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
21262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
21272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
21282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
21292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
21302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * East Asian Width constants.
21312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see UProperty#EAST_ASIAN_WIDTH
21322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see UCharacter#getIntPropertyValue
21332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
21342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static interface EastAsianWidth
21352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
21362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
21372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
21382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NEUTRAL = 0;
21392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
21402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
21412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int AMBIGUOUS = 1;
21422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
21432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
21442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int HALFWIDTH = 2;
21452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
21462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
21472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int FULLWIDTH = 3;
21482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
21492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
21502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NARROW = 4;
21512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
21522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
21532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int WIDE = 5;
21542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2155ff2b69bcfd12088a375804686b38e0d6bbf141acPaul Duffin         * @hide unsupported on Android
21562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
21572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int COUNT = 6;
21582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
21592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
21602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
21612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Decomposition Type constants.
21622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see UProperty#DECOMPOSITION_TYPE
21632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
21642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static interface DecompositionType
21652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
21662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
21672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
21682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NONE = 0;
21692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
21702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
21712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CANONICAL = 1;
21722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
21732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
21742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int COMPAT = 2;
21752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
21762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
21772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CIRCLE = 3;
21782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
21792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
21802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int FINAL = 4;
21812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
21822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
21832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int FONT = 5;
21842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
21852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
21862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int FRACTION = 6;
21872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
21882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
21892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int INITIAL = 7;
21902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
21912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
21922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ISOLATED = 8;
21932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
21942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
21952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MEDIAL = 9;
21962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
21972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
21982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NARROW = 10;
21992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NOBREAK = 11;
22022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SMALL = 12;
22052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SQUARE = 13;
22082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SUB = 14;
22112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SUPER = 15;
22142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int VERTICAL = 16;
22172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int WIDE = 17;
22202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2221ff2b69bcfd12088a375804686b38e0d6bbf141acPaul Duffin         * @hide unsupported on Android
22222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int COUNT = 18;
22242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
22252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
22262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
22272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Joining Type constants.
22282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see UProperty#JOINING_TYPE
22292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
22302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static interface JoiningType
22312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
22322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NON_JOINING = 0;
22352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int JOIN_CAUSING = 1;
22382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int DUAL_JOINING = 2;
22412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LEFT_JOINING = 3;
22442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int RIGHT_JOINING = 4;
22472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int TRANSPARENT = 5;
22502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2251ff2b69bcfd12088a375804686b38e0d6bbf141acPaul Duffin         * @hide unsupported on Android
22522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int COUNT = 6;
22542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
22552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
22562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
22572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Joining Group constants.
22582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see UProperty#JOINING_GROUP
22592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
22602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static interface JoiningGroup
22612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
22622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NO_JOINING_GROUP = 0;
22652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int AIN = 1;
22682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ALAPH = 2;
22712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ALEF = 3;
22742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int BEH = 4;
22772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int BETH = 5;
22802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int DAL = 6;
22832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int DALATH_RISH = 7;
22862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int E = 8;
22892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int FEH = 9;
22922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int FINAL_SEMKATH = 10;
22952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
22972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int GAF = 11;
22982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
22992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int GAMAL = 12;
23012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int HAH = 13;
23041fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
23052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int TEH_MARBUTA_GOAL = 14;
23062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int HAMZA_ON_HEH_GOAL = TEH_MARBUTA_GOAL;
23092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int HE = 15;
23122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int HEH = 16;
23152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int HEH_GOAL = 17;
23182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int HETH = 18;
23212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int KAF = 19;
23242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int KAPH = 20;
23272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int KNOTTED_HEH = 21;
23302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LAM = 22;
23332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LAMADH = 23;
23362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MEEM = 24;
23392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MIM = 25;
23422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NOON = 26;
23452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NUN = 27;
23482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int PE = 28;
23512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int QAF = 29;
23542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int QAPH = 30;
23572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int REH = 31;
23602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int REVERSED_PE = 32;
23632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SAD = 33;
23662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SADHE = 34;
23692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SEEN = 35;
23722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SEMKATH = 36;
23752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SHIN = 37;
23782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SWASH_KAF = 38;
23812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SYRIAC_WAW = 39;
23842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int TAH = 40;
23872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int TAW = 41;
23902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int TEH_MARBUTA = 42;
23932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int TETH = 43;
23962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
23972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
23982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int WAW = 44;
23992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
24002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
24012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int YEH = 45;
24022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
24032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
24042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int YEH_BARREE = 46;
24052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
24062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
24072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int YEH_WITH_TAIL = 47;
24082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
24092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
24102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int YUDH = 48;
24112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
24122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
24132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int YUDH_HE = 49;
24142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
24152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
24162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ZAIN = 50;
24172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
24182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
24192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int FE = 51;
24202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
24212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
24222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int KHAPH = 52;
24232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
24242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
24252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ZHAIN = 53;
24262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
24272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
24282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int BURUSHASKI_YEH_BARREE = 54;
24291fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
24302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int FARSI_YEH = 55;
24311fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
24322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NYA = 56;
24331fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
24342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ROHINGYA_YEH = 57;
24352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
24361fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
24372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_ALEPH = 58;
24381fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
24392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_AYIN = 59;
24401fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
24412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_BETH = 60;
24421fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
24432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_DALETH = 61;
24441fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
24452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_DHAMEDH = 62;
24461fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
24472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_FIVE = 63;
24481fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
24492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_GIMEL = 64;
24501fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
24512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_HETH = 65;
24521fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
24532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_HUNDRED = 66;
24541fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
24552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_KAPH = 67;
24561fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
24572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_LAMEDH = 68;
24581fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
24592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_MEM = 69;
24601fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
24612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_NUN = 70;
24621fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
24632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_ONE = 71;
24641fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
24652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_PE = 72;
24661fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
24672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_QOPH = 73;
24681fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
24692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_RESH = 74;
24701fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
24712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_SADHE = 75;
24721fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
24732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_SAMEKH = 76;
24741fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
24752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_TAW = 77;
24761fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
24772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_TEN = 78;
24781fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
24792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_TETH = 79;
24801fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
24812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_THAMEDH = 80;
24821fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
24832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_TWENTY = 81;
24841fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
24852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_WAW = 82;
24861fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
24872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_YODH = 83;
24881fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
24892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANICHAEAN_ZAYIN = 84;
24901fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
24912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int STRAIGHT_WAW = 85;
24922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
24932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2494ff2b69bcfd12088a375804686b38e0d6bbf141acPaul Duffin         * @hide unsupported on Android
24952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
24962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int COUNT = 86;
24972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
24982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
24992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
25002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Grapheme Cluster Break constants.
25012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see UProperty#GRAPHEME_CLUSTER_BREAK
25022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
25032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static interface GraphemeClusterBreak {
25042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
25052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
25062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int OTHER = 0;
25072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
25082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
25092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CONTROL = 1;
25102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
25112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
25122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CR = 2;
25132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
25142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
25152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int EXTEND = 3;
25162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
25172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
25182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int L = 4;
25192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
25202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
25212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LF = 5;
25222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
25232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
25242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LV = 6;
25252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
25262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
25272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LVT = 7;
25282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
25292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
25302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int T = 8;
25312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
25322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
25332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int V = 9;
25342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
25352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
25362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SPACING_MARK = 10;
25372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
25382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
25392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int PREPEND = 11;
25401fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
25412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int REGIONAL_INDICATOR = 12;  /*[RI]*/ /* new in Unicode 6.2/ICU 50 */
25422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2543ff2b69bcfd12088a375804686b38e0d6bbf141acPaul Duffin         * @hide unsupported on Android
25442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
25452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int COUNT = 13;
25462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
25472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
25482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
25492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Word Break constants.
25502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see UProperty#WORD_BREAK
25512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
25522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static interface WordBreak {
25532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
25542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
25552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int OTHER = 0;
25562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
25572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
25582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ALETTER = 1;
25592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
25602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
25612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int FORMAT = 2;
25622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
25632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
25642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int KATAKANA = 3;
25652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
25662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
25672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MIDLETTER = 4;
25682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
25692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
25702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MIDNUM = 5;
25712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
25722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
25732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NUMERIC = 6;
25742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
25752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
25762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int EXTENDNUMLET = 7;
25772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
25782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
25792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CR = 8;
25802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
25812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
25822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int EXTEND = 9;
25832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
25842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
25852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LF = 10;
25862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
25872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
25882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MIDNUMLET = 11;
25892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
25902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
25912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NEWLINE = 12;
25921fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
25932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int REGIONAL_INDICATOR = 13;  /*[RI]*/ /* new in Unicode 6.2/ICU 50 */
25941fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
25952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int HEBREW_LETTER = 14;    /*[HL]*/ /* from here on: new in Unicode 6.3/ICU 52 */
25961fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
25972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SINGLE_QUOTE = 15;     /*[SQ]*/
25981fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
25992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int DOUBLE_QUOTE = 16;     /*[DQ]*/
26002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2601ff2b69bcfd12088a375804686b38e0d6bbf141acPaul Duffin         * @hide unsupported on Android
26022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int COUNT = 17;
26042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
26052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
26062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
26072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Sentence Break constants.
26082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see UProperty#SENTENCE_BREAK
26092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
26102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static interface SentenceBreak {
26112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int OTHER = 0;
26142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ATERM = 1;
26172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CLOSE = 2;
26202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int FORMAT = 3;
26232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LOWER = 4;
26262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NUMERIC = 5;
26292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int OLETTER = 6;
26322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SEP = 7;
26352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SP = 8;
26382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int STERM = 9;
26412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int UPPER = 10;
26442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CR = 11;
26472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int EXTEND = 12;
26502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LF = 13;
26532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SCONTINUE = 14;
26562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2657ff2b69bcfd12088a375804686b38e0d6bbf141acPaul Duffin         * @hide unsupported on Android
26582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int COUNT = 15;
26602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
26612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
26622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
26632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Line Break constants.
26642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see UProperty#LINE_BREAK
26652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
26662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static interface LineBreak
26672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
26682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int UNKNOWN = 0;
26712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int AMBIGUOUS = 1;
26742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ALPHABETIC = 2;
26772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int BREAK_BOTH = 3;
26802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int BREAK_AFTER = 4;
26832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int BREAK_BEFORE = 5;
26862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int MANDATORY_BREAK = 6;
26892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CONTINGENT_BREAK = 7;
26922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CLOSE_PUNCTUATION = 8;
26952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
26972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int COMBINING_MARK = 9;
26982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
26992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
27002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CARRIAGE_RETURN = 10;
27012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
27022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
27032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int EXCLAMATION = 11;
27042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
27052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
27062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int GLUE = 12;
27072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
27082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
27092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int HYPHEN = 13;
27102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
27112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
27122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int IDEOGRAPHIC = 14;
27132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
27142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * @see #INSEPARABLE
27152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
27162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int INSEPERABLE = 15;
27172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
27182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Renamed from the misspelled "inseperable" in Unicode 4.0.1.
27192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
27202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int INSEPARABLE = 15;
27212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
27222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
27232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int INFIX_NUMERIC = 16;
27242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
27252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
27262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LINE_FEED = 17;
27272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
27282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
27292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NONSTARTER = 18;
27302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
27312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
27322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NUMERIC = 19;
27332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
27342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
27352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int OPEN_PUNCTUATION = 20;
27362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
27372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
27382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int POSTFIX_NUMERIC = 21;
27392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
27402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
27412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int PREFIX_NUMERIC = 22;
27422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
27432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
27442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int QUOTATION = 23;
27452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
27462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
27472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int COMPLEX_CONTEXT = 24;
27482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
27492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
27502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SURROGATE = 25;
27512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
27522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
27532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int SPACE = 26;
27542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
27552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
27562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int BREAK_SYMBOLS = 27;
27572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
27582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
27592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int ZWSPACE = 28;
27602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
27612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
27622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NEXT_LINE = 29;  /*[NL]*/ /* from here on: new in Unicode 4/ICU 2.6 */
27632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
27642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
27652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int WORD_JOINER = 30;      /*[WJ]*/
27662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
27672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
27682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int H2 = 31;  /* from here on: new in Unicode 4.1/ICU 3.4 */
27692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
27702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
27712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int H3 = 32;
27722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
27732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
27742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int JL = 33;
27752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
27762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
27772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int JT = 34;
27782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
27792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
27802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int JV = 35;
27811fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
27822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CLOSE_PARENTHESIS = 36; /*[CP]*/ /* new in Unicode 5.2/ICU 4.4 */
27831fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
27842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CONDITIONAL_JAPANESE_STARTER = 37;  /*[CJ]*/ /* new in Unicode 6.1/ICU 49 */
27851fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
27862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int HEBREW_LETTER = 38;  /*[HL]*/ /* new in Unicode 6.1/ICU 49 */
27871fba789ac68efdd9120a7373f49daef42833e674Neil Fuller        /***/
27882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int REGIONAL_INDICATOR = 39;  /*[RI]*/ /* new in Unicode 6.2/ICU 50 */
27892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2790ff2b69bcfd12088a375804686b38e0d6bbf141acPaul Duffin         * @hide unsupported on Android
27912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
27922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int COUNT = 40;
27932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
27942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
27952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
27962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Numeric Type constants.
27972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see UProperty#NUMERIC_TYPE
27982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
27992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static interface NumericType
28002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
28012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
28022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NONE = 0;
28042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
28052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int DECIMAL = 1;
28072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
28082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int DIGIT = 2;
28102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
28112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NUMERIC = 3;
28132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2814ff2b69bcfd12088a375804686b38e0d6bbf141acPaul Duffin         * @hide unsupported on Android
28152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int COUNT = 4;
28172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
28182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
28192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
28202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Hangul Syllable Type constants.
28212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
28222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see UProperty#HANGUL_SYLLABLE_TYPE
28232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
28242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static interface HangulSyllableType
28252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
28262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
28272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NOT_APPLICABLE      = 0;   /*[NA]*/ /*See note !!*/
28292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
28302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LEADING_JAMO        = 1;   /*[L]*/
28322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
28332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int VOWEL_JAMO          = 2;   /*[V]*/
28352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
28362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int TRAILING_JAMO       = 3;   /*[T]*/
28382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
28392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LV_SYLLABLE         = 4;   /*[LV]*/
28412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
28422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int LVT_SYLLABLE        = 5;   /*[LVT]*/
28442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2845ff2b69bcfd12088a375804686b38e0d6bbf141acPaul Duffin         * @hide unsupported on Android
28462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int COUNT               = 6;
28482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
28492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
28502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
28512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Bidi Paired Bracket Type constants.
28522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
28532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see UProperty#BIDI_PAIRED_BRACKET_TYPE
28542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
28552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static interface BidiPairedBracketType {
28562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
28572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Not a paired bracket.
28582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int NONE = 0;
28602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
28612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Open paired bracket.
28622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int OPEN = 1;
28642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
28652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Close paired bracket.
28662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int CLOSE = 2;
28682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
2869ff2b69bcfd12088a375804686b38e0d6bbf141acPaul Duffin         * @hide unsupported on Android
28702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
28712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public static final int COUNT = 3;
28722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
28732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
28742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    // public data members -----------------------------------------------
28752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
28762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
28772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * The lowest Unicode code point value, constant 0.
28782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Same as {@link Character#MIN_CODE_POINT}, same integer value as {@link Character#MIN_VALUE}.
28792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
28802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final int MIN_VALUE = Character.MIN_CODE_POINT;
28812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
28822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
28832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * The highest Unicode code point value (scalar value), constant U+10FFFF (uses 21 bits).
28842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Same as {@link Character#MAX_CODE_POINT}.
28852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
28862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>Up-to-date Unicode implementation of {@link Character#MAX_VALUE}
28872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * which is still a char with the value U+FFFF.
28882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
28892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final int MAX_VALUE = Character.MAX_CODE_POINT;
28902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
28912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
28922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * The minimum value for Supplementary code points, constant U+10000.
28932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Same as {@link Character#MIN_SUPPLEMENTARY_CODE_POINT}.
28942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
28952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final int SUPPLEMENTARY_MIN_VALUE = Character.MIN_SUPPLEMENTARY_CODE_POINT;
28962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
28972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
28982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Unicode value used when translating into Unicode encoding form and there
28992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * is no existing character.
29002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
29012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final int REPLACEMENT_CHAR = '\uFFFD';
29022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
29032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
29042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Special value that is returned by getUnicodeNumericValue(int) when no
29052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * numeric value is defined for a code point.
29062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #getUnicodeNumericValue
29072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
29082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final double NO_NUMERIC_VALUE = -123456789;
29092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
29102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
29112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Compatibility constant for Java Character's MIN_RADIX.
29122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
29132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final int MIN_RADIX = java.lang.Character.MIN_RADIX;
29142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
29152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
29162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Compatibility constant for Java Character's MAX_RADIX.
29172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
29182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final int MAX_RADIX = java.lang.Character.MAX_RADIX;
29192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
29202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
29212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Do not lowercase non-initial parts of words when titlecasing.
29222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Option bit for titlecasing APIs that take an options bit set.
29232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
29242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * By default, titlecasing will titlecase the first cased character
29252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * of a word and lowercase all other characters.
29262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * With this option, the other characters will not be modified.
29272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
29282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #toTitleCase
29292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
29302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final int TITLECASE_NO_LOWERCASE = 0x100;
29312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
29322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
29332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Do not adjust the titlecasing indexes from BreakIterator::next() indexes;
29342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * titlecase exactly the characters at breaks from the iterator.
29352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Option bit for titlecasing APIs that take an options bit set.
29362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
29372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * By default, titlecasing will take each break iterator index,
29382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * adjust it by looking for the next cased character, and titlecase that one.
29392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Other characters are lowercased.
29402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
294108ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * This follows Unicode 4 &amp; 5 section 3.13 Default Case Operations:
29422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
29432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * R3  toTitlecase(X): Find the word boundaries based on Unicode Standard Annex
29442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * #29, "Text Boundaries." Between each pair of word boundaries, find the first
29452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * cased character F. If F exists, map F to default_title(F); then map each
29462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * subsequent character C to default_lower(C).
29472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
29482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #toTitleCase
29492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #TITLECASE_NO_LOWERCASE
29502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
29512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final int TITLECASE_NO_BREAK_ADJUSTMENT = 0x200;
29522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
29532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    // public methods ----------------------------------------------------
29542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
29552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
29562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Returnss the numeric value of a decimal digit code point.
29572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <br>This method observes the semantics of
29582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <code>java.lang.Character.digit()</code>.  Note that this
29592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * will return positive values for code points for which isDigit
29602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * returns false, just like java.lang.Character.
29612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <br><em>Semantic Change:</em> In release 1.3.1 and
29622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * prior, this did not treat the European letters as having a
29632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * digit value, and also treated numeric letters and other numbers as
29642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * digits.
29652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * This has been changed to conform to the java semantics.
29662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <br>A code point is a valid digit if and only if:
29672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <ul>
29682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *   <li>ch is a decimal digit or one of the european letters, and
29692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *   <li>the value of ch is less than the specified radix.
29702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * </ul>
29712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch the code point to query
29722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param radix the radix
29732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the numeric value represented by the code point in the
29742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * specified radix, or -1 if the code point is not a decimal digit
29752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * or if its value is too large for the radix
29762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
29772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int digit(int ch, int radix)
29782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
29792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (2 <= radix && radix <= 36) {
29802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            int value = digit(ch);
29812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if (value < 0) {
29822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                // ch is not a decimal digit, try latin letters
29832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                value = UCharacterProperty.getEuropeanDigit(ch);
29842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
29852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return (value < radix) ? value : -1;
29862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        } else {
29872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return -1;  // invalid radix
29882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
29892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
29902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
29912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
29922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Returnss the numeric value of a decimal digit code point.
29932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <br>This is a convenience overload of <code>digit(int, int)</code>
29942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * that provides a decimal radix.
29952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <br><em>Semantic Change:</em> In release 1.3.1 and prior, this
29962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * treated numeric letters and other numbers as digits.  This has
29972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * been changed to conform to the java semantics.
29982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch the code point to query
29992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the numeric value represented by the code point,
30002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * or -1 if the code point is not a decimal digit or if its
30012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * value is too large for a decimal radix
30022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
30032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int digit(int ch)
30042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
30052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UCharacterProperty.INSTANCE.digit(ch);
30062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
30072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
30082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
30092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Returns the numeric value of the code point as a nonnegative
30102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * integer.
30112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <br>If the code point does not have a numeric value, then -1 is returned.
30122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <br>
30132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * If the code point has a numeric value that cannot be represented as a
30142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * nonnegative integer (for example, a fractional value), then -2 is
30152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * returned.
30162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch the code point to query
30172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the numeric value of the code point, or -1 if it has no numeric
30182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * value, or -2 if it has a numeric value that cannot be represented as a
30192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * nonnegative integer
30202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
30212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int getNumericValue(int ch)
30222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
30232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UCharacterProperty.INSTANCE.getNumericValue(ch);
30242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
30252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
30262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
30271537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Returns the numeric value for a Unicode code point as defined in the
302808ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * Unicode Character Database.
30292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>A "double" return type is necessary because some numeric values are
303008ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * fractions, negative, or too large for int.
30312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>For characters without any numeric values in the Unicode Character
30322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Database, this function will return NO_NUMERIC_VALUE.
303308ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * Note: This is different from the Unicode Standard which specifies NaN as the default value.
30342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p><em>API Change:</em> In release 2.2 and prior, this API has a
30352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * return type int and returns -1 when the argument ch does not have a
30362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * corresponding numeric value. This has been changed to synch with ICU4C
303708ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     *
30382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * This corresponds to the ICU4C function u_getNumericValue.
30392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch Code point to get the numeric value for.
30402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return numeric value of ch, or NO_NUMERIC_VALUE if none is defined.
30412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
30422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static double getUnicodeNumericValue(int ch)
30432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
30442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UCharacterProperty.INSTANCE.getUnicodeNumericValue(ch);
30452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
30462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
30472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
30482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Compatibility override of Java deprecated method.  This
30492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * method will always remain deprecated.
30502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Same as java.lang.Character.isSpace().
30512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch the code point
30522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if the code point is a space character as
30532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * defined by java.lang.Character.isSpace.
30542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @deprecated ICU 3.4 (Java)
305593cf604e9dd0525f15bc0a7450b2a35f3884c298Neil Fuller     * @hide original deprecated declaration
30562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
30572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    @Deprecated
30582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isSpace(int ch) {
30592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return ch <= 0x20 &&
30602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                (ch == 0x20 || ch == 0x09 || ch == 0x0a || ch == 0x0c || ch == 0x0d);
30612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
30622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
30632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
30642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Returns a value indicating a code point's Unicode category.
30652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Up-to-date Unicode implementation of java.lang.Character.getType()
30662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * except for the above mentioned code points that had their category
30672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * changed.<br>
30682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Return results are constants from the interface
30692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <a href=UCharacterCategory.html>UCharacterCategory</a><br>
30702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <em>NOTE:</em> the UCharacterCategory values are <em>not</em> compatible with
30712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * those returned by java.lang.Character.getType.  UCharacterCategory values
30722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * match the ones used in ICU4C, while java.lang.Character type
307308ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * values, though similar, skip the value 17.
30742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point whose type is to be determined
30752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return category which is a value of UCharacterCategory
30762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
30772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int getType(int ch)
30782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
30792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UCharacterProperty.INSTANCE.getType(ch);
30802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
30812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
30822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
30832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Determines if a code point has a defined meaning in the up-to-date
30842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Unicode standard.
30852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * E.g. supplementary code points though allocated space are not defined in
30862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Unicode yet.<br>
30872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Up-to-date Unicode implementation of java.lang.Character.isDefined()
30882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point to be determined if it is defined in the most
30892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *        current version of Unicode
30902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if this code point is defined in unicode
30912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
30922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isDefined(int ch)
30932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
30942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return getType(ch) != 0;
30952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
30962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
30972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
30982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Determines if a code point is a Java digit.
30992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <br>This method observes the semantics of
31002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <code>java.lang.Character.isDigit()</code>. It returns true for decimal
31012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * digits only.
31022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <br><em>Semantic Change:</em> In release 1.3.1 and prior, this treated
31032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * numeric letters and other numbers as digits.
31042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * This has been changed to conform to the java semantics.
31052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point to query
31062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if this code point is a digit
31072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
31082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isDigit(int ch)
31092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
31102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return getType(ch) == UCharacterCategory.DECIMAL_DIGIT_NUMBER;
31112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
31122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
31132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
31142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Determines if the specified code point is an ISO control character.
31152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * A code point is considered to be an ISO control character if it is in
311608ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * the range &#92;u0000 through &#92;u001F or in the range &#92;u007F through
311708ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * &#92;u009F.<br>
31182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Up-to-date Unicode implementation of java.lang.Character.isISOControl()
31192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point to determine if it is an ISO control character
31202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if code point is a ISO control character
31212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
31222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isISOControl(int ch)
31232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
31242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return ch >= 0 && ch <= APPLICATION_PROGRAM_COMMAND_ &&
31252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                ((ch <= UNIT_SEPARATOR_) || (ch >= DELETE_));
31262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
31272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
31282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
31292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Determines if the specified code point is a letter.
31302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Up-to-date Unicode implementation of java.lang.Character.isLetter()
31312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point to determine if it is a letter
31322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if code point is a letter
31332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
31342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isLetter(int ch)
31352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
31362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // if props == 0, it will just fall through and return false
31372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return ((1 << getType(ch))
31382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                & ((1 << UCharacterCategory.UPPERCASE_LETTER)
31392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.LOWERCASE_LETTER)
31402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.TITLECASE_LETTER)
31412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.MODIFIER_LETTER)
31422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.OTHER_LETTER))) != 0;
31432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
31442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
31452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
31462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Determines if the specified code point is a letter or digit.
31471537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu] Note:</strong> This method, unlike java.lang.Character does not regard the ascii
31482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * characters 'A' - 'Z' and 'a' - 'z' as digits.
31492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point to determine if it is a letter or a digit
31502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if code point is a letter or a digit
31512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
31522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isLetterOrDigit(int ch)
31532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
31542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return ((1 << getType(ch))
31552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                & ((1 << UCharacterCategory.UPPERCASE_LETTER)
31562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.LOWERCASE_LETTER)
31572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.TITLECASE_LETTER)
31582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.MODIFIER_LETTER)
31592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.OTHER_LETTER)
31602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.DECIMAL_DIGIT_NUMBER))) != 0;
31612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
31622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
31632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
31642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Compatibility override of Java deprecated method.  This
31652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * method will always remain deprecated.  Delegates to
31662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * java.lang.Character.isJavaIdentifierStart.
31672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param cp the code point
31682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if the code point can start a java identifier.
31692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @deprecated ICU 3.4 (Java)
317093cf604e9dd0525f15bc0a7450b2a35f3884c298Neil Fuller     * @hide original deprecated declaration
31712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
31722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    @Deprecated
31732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isJavaLetter(int cp) {
31742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return isJavaIdentifierStart(cp);
31752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
31762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
31772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
31782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Compatibility override of Java deprecated method.  This
31792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * method will always remain deprecated.  Delegates to
31802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * java.lang.Character.isJavaIdentifierPart.
31812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param cp the code point
31822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if the code point can continue a java identifier.
31832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @deprecated ICU 3.4 (Java)
318493cf604e9dd0525f15bc0a7450b2a35f3884c298Neil Fuller     * @hide original deprecated declaration
31852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
31862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    @Deprecated
31872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isJavaLetterOrDigit(int cp) {
31882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return isJavaIdentifierPart(cp);
31892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
31902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
31912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
31922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Compatibility override of Java method, delegates to
31932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * java.lang.Character.isJavaIdentifierStart.
31942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param cp the code point
31952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if the code point can start a java identifier.
31962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
31972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isJavaIdentifierStart(int cp) {
31982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // note, downcast to char for jdk 1.4 compatibility
31992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return java.lang.Character.isJavaIdentifierStart((char)cp);
32002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
32012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
32022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
32032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Compatibility override of Java method, delegates to
32042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * java.lang.Character.isJavaIdentifierPart.
32052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param cp the code point
32062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if the code point can continue a java identifier.
32072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
32082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isJavaIdentifierPart(int cp) {
32092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // note, downcast to char for jdk 1.4 compatibility
32102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return java.lang.Character.isJavaIdentifierPart((char)cp);
32112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
32122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
32132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
32142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Determines if the specified code point is a lowercase character.
32152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * UnicodeData only contains case mappings for code points where they are
32162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * one-to-one mappings; it also omits information about context-sensitive
32172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * case mappings.<br> For more information about Unicode case mapping
32182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * please refer to the
32192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <a href=http://www.unicode.org/unicode/reports/tr21/>Technical report
32202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * #21</a>.<br>
32212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Up-to-date Unicode implementation of java.lang.Character.isLowerCase()
32222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point to determine if it is in lowercase
32232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if code point is a lowercase character
32242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
32252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isLowerCase(int ch)
32262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
32272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // if props == 0, it will just fall through and return false
32282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return getType(ch) == UCharacterCategory.LOWERCASE_LETTER;
32292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
32302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
32312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
32322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Determines if the specified code point is a white space character.
32332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * A code point is considered to be an whitespace character if and only
32342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * if it satisfies one of the following criteria:
32352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <ul>
32362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> It is a Unicode Separator character (categories "Z" = "Zs" or "Zl" or "Zp"), but is not
323708ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     *      also a non-breaking space (&#92;u00A0 or &#92;u2007 or &#92;u202F).
323808ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <li> It is &#92;u0009, HORIZONTAL TABULATION.
323908ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <li> It is &#92;u000A, LINE FEED.
324008ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <li> It is &#92;u000B, VERTICAL TABULATION.
324108ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <li> It is &#92;u000C, FORM FEED.
324208ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <li> It is &#92;u000D, CARRIAGE RETURN.
324308ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <li> It is &#92;u001C, FILE SEPARATOR.
324408ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <li> It is &#92;u001D, GROUP SEPARATOR.
324508ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <li> It is &#92;u001E, RECORD SEPARATOR.
324608ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <li> It is &#92;u001F, UNIT SEPARATOR.
32472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * </ul>
32482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
32492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * This API tries to sync with the semantics of Java's
32502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * java.lang.Character.isWhitespace(), but it may not return
32512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * the exact same results because of the Unicode version
32522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * difference.
32532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>Note: Unicode 4.0.1 changed U+200B ZERO WIDTH SPACE from a Space Separator (Zs)
32542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * to a Format Control (Cf). Since then, isWhitespace(0x200b) returns false.
32552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * See http://www.unicode.org/versions/Unicode4.0.1/
32562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point to determine if it is a white space
32572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if the specified code point is a white space character
32582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
32592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isWhitespace(int ch)
32602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
32612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // exclude no-break spaces
32622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // if props == 0, it will just fall through and return false
32632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return ((1 << getType(ch)) &
32642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                ((1 << UCharacterCategory.SPACE_SEPARATOR)
32652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.LINE_SEPARATOR)
32662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.PARAGRAPH_SEPARATOR))) != 0
32672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        && (ch != NO_BREAK_SPACE_) && (ch != FIGURE_SPACE_) && (ch != NARROW_NO_BREAK_SPACE_)
32682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        // TAB VT LF FF CR FS GS RS US NL are all control characters
32692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        // that are white spaces.
32702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        || (ch >= 0x9 && ch <= 0xd) || (ch >= 0x1c && ch <= 0x1f);
32712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
32722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
32732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
32742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Determines if the specified code point is a Unicode specified space
32752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * character, i.e. if code point is in the category Zs, Zl and Zp.
32762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Up-to-date Unicode implementation of java.lang.Character.isSpaceChar().
32772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point to determine if it is a space
32782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if the specified code point is a space character
32792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
32802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isSpaceChar(int ch)
32812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
32822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // if props == 0, it will just fall through and return false
32832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return ((1 << getType(ch)) & ((1 << UCharacterCategory.SPACE_SEPARATOR)
32842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                | (1 << UCharacterCategory.LINE_SEPARATOR)
32852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                | (1 << UCharacterCategory.PARAGRAPH_SEPARATOR)))
32862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                != 0;
32872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
32882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
32892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
32902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Determines if the specified code point is a titlecase character.
32912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * UnicodeData only contains case mappings for code points where they are
32922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * one-to-one mappings; it also omits information about context-sensitive
32932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * case mappings.<br>
32942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * For more information about Unicode case mapping please refer to the
32952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <a href=http://www.unicode.org/unicode/reports/tr21/>
32962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Technical report #21</a>.<br>
32972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Up-to-date Unicode implementation of java.lang.Character.isTitleCase().
32982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point to determine if it is in title case
32992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if the specified code point is a titlecase character
33002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
33012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isTitleCase(int ch)
33022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
33032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // if props == 0, it will just fall through and return false
33042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return getType(ch) == UCharacterCategory.TITLECASE_LETTER;
33052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
33062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
33072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
33082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Determines if the specified code point may be any part of a Unicode
33092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * identifier other than the starting character.
33102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * A code point may be part of a Unicode identifier if and only if it is
33112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * one of the following:
33122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <ul>
33132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Lu Uppercase letter
33142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Ll Lowercase letter
33152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Lt Titlecase letter
33162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Lm Modifier letter
33172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Lo Other letter
33182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Nl Letter number
33192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Pc Connecting punctuation character
33202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Nd decimal number
33212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Mc Spacing combining mark
33222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Mn Non-spacing mark
33232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Cf formatting code
33242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * </ul>
33252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Up-to-date Unicode implementation of
33262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * java.lang.Character.isUnicodeIdentifierPart().<br>
33272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * See <a href=http://www.unicode.org/unicode/reports/tr8/>UTR #8</a>.
33282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point to determine if is can be part of a Unicode
33292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *        identifier
33302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if code point is any character belonging a unicode
33312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *         identifier suffix after the first character
33322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
33332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isUnicodeIdentifierPart(int ch)
33342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
33352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // if props == 0, it will just fall through and return false
33362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // cat == format
33372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return ((1 << getType(ch))
33382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                & ((1 << UCharacterCategory.UPPERCASE_LETTER)
33392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.LOWERCASE_LETTER)
33402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.TITLECASE_LETTER)
33412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.MODIFIER_LETTER)
33422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.OTHER_LETTER)
33432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.LETTER_NUMBER)
33442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.CONNECTOR_PUNCTUATION)
33452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.DECIMAL_DIGIT_NUMBER)
33462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.COMBINING_SPACING_MARK)
33472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.NON_SPACING_MARK))) != 0
33482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        || isIdentifierIgnorable(ch);
33492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
33502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
33512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
33522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Determines if the specified code point is permissible as the first
33532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * character in a Unicode identifier.
33542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * A code point may start a Unicode identifier if it is of type either
33552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <ul>
33562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Lu Uppercase letter
33572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Ll Lowercase letter
33582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Lt Titlecase letter
33592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Lm Modifier letter
33602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Lo Other letter
33612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Nl Letter number
33622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * </ul>
33632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Up-to-date Unicode implementation of
33642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * java.lang.Character.isUnicodeIdentifierStart().<br>
33652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * See <a href=http://www.unicode.org/unicode/reports/tr8/>UTR #8</a>.
33662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point to determine if it can start a Unicode identifier
33672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if code point is the first character belonging a unicode
33682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *              identifier
33692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
33702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isUnicodeIdentifierStart(int ch)
33712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
33722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /*int cat = getType(ch);*/
33732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // if props == 0, it will just fall through and return false
33742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return ((1 << getType(ch))
33752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                & ((1 << UCharacterCategory.UPPERCASE_LETTER)
33762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.LOWERCASE_LETTER)
33772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.TITLECASE_LETTER)
33782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.MODIFIER_LETTER)
33792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.OTHER_LETTER)
33802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        | (1 << UCharacterCategory.LETTER_NUMBER))) != 0;
33812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
33822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
33832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
33842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Determines if the specified code point should be regarded as an
33852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * ignorable character in a Java identifier.
33862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * A character is Java-identifier-ignorable if it has the general category
33872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Cf Formatting Control, or it is a non-Java-whitespace ISO control:
33882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * U+0000..U+0008, U+000E..U+001B, U+007F..U+009F.<br>
33892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Up-to-date Unicode implementation of
33902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * java.lang.Character.isIdentifierIgnorable().<br>
33912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * See <a href=http://www.unicode.org/unicode/reports/tr8/>UTR #8</a>.
33922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>Note that Unicode just recommends to ignore Cf (format controls).
33932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point to be determined if it can be ignored in a Unicode
33942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *        identifier.
33952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if the code point is ignorable
33962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
33972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isIdentifierIgnorable(int ch)
33982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
33992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // see java.lang.Character.isIdentifierIgnorable() on range of
34002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // ignorable characters.
34012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (ch <= 0x9f) {
34022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return isISOControl(ch)
34032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    && !((ch >= 0x9 && ch <= 0xd)
34042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                            || (ch >= 0x1c && ch <= 0x1f));
34052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
34062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return getType(ch) == UCharacterCategory.FORMAT;
34072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
34082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
34092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
34102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Determines if the specified code point is an uppercase character.
34112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * UnicodeData only contains case mappings for code point where they are
34122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * one-to-one mappings; it also omits information about context-sensitive
34132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * case mappings.<br>
34142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * For language specific case conversion behavior, use
34152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * toUpperCase(locale, str). <br>
34162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * For example, the case conversion for dot-less i and dotted I in Turkish,
34172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * or for final sigma in Greek.
34182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * For more information about Unicode case mapping please refer to the
34192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <a href=http://www.unicode.org/unicode/reports/tr21/>
34202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Technical report #21</a>.<br>
34212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Up-to-date Unicode implementation of java.lang.Character.isUpperCase().
34222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point to determine if it is in uppercase
34232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if the code point is an uppercase character
34242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
34252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isUpperCase(int ch)
34262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
34272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // if props == 0, it will just fall through and return false
34282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return getType(ch) == UCharacterCategory.UPPERCASE_LETTER;
34292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
34302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
34312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
34322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * The given code point is mapped to its lowercase equivalent; if the code
34332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * point has no lowercase equivalent, the code point itself is returned.
34342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Up-to-date Unicode implementation of java.lang.Character.toLowerCase()
34352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
34362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>This function only returns the simple, single-code point case mapping.
34372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Full case mappings should be used whenever possible because they produce
34382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * better results by working on whole strings.
34392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * They take into account the string context and the language and can map
34402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * to a result string with a different length as appropriate.
34412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Full case mappings are applied by the case mapping functions
34422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * that take String parameters rather than code points (int).
34432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * See also the User Guide chapter on C/POSIX migration:
34442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * http://www.icu-project.org/userguide/posix.html#case_mappings
34452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
34462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point whose lowercase equivalent is to be retrieved
34472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the lowercase equivalent code point
34482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
34492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int toLowerCase(int ch) {
34502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UCaseProps.INSTANCE.tolower(ch);
34512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
34522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
34532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
34542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Converts argument code point and returns a String object representing
34552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * the code point's value in UTF-16 format.
34562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * The result is a string whose length is 1 for BMP code points, 2 for supplementary ones.
34572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
34582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>Up-to-date Unicode implementation of java.lang.Character.toString().
34592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
34602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point
34612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return string representation of the code point, null if code point is not
34622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *         defined in unicode
34632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
34642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static String toString(int ch)
34652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
34662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (ch < MIN_VALUE || ch > MAX_VALUE) {
34672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return null;
34682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
34692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
34702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (ch < SUPPLEMENTARY_MIN_VALUE) {
34712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return String.valueOf((char)ch);
34722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
34732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
34742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return new String(Character.toChars(ch));
34752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
34762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
34772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
34782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Converts the code point argument to titlecase.
34792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * If no titlecase is available, the uppercase is returned. If no uppercase
34802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * is available, the code point itself is returned.
34812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Up-to-date Unicode implementation of java.lang.Character.toTitleCase()
34822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
34832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>This function only returns the simple, single-code point case mapping.
34842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Full case mappings should be used whenever possible because they produce
34852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * better results by working on whole strings.
34862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * They take into account the string context and the language and can map
34872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * to a result string with a different length as appropriate.
34882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Full case mappings are applied by the case mapping functions
34892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * that take String parameters rather than code points (int).
34902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * See also the User Guide chapter on C/POSIX migration:
34912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * http://www.icu-project.org/userguide/posix.html#case_mappings
34922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
34932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point  whose title case is to be retrieved
34942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return titlecase code point
34952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
34962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int toTitleCase(int ch) {
34972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UCaseProps.INSTANCE.totitle(ch);
34982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
34992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
35002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
35012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Converts the character argument to uppercase.
35022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * If no uppercase is available, the character itself is returned.
35032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Up-to-date Unicode implementation of java.lang.Character.toUpperCase()
35042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
35052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>This function only returns the simple, single-code point case mapping.
35062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Full case mappings should be used whenever possible because they produce
35072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * better results by working on whole strings.
35082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * They take into account the string context and the language and can map
35092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * to a result string with a different length as appropriate.
35102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Full case mappings are applied by the case mapping functions
35112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * that take String parameters rather than code points (int).
35122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * See also the User Guide chapter on C/POSIX migration:
35132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * http://www.icu-project.org/userguide/posix.html#case_mappings
35142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
35152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point whose uppercase is to be retrieved
35162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return uppercase code point
35172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
35182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int toUpperCase(int ch) {
35192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UCaseProps.INSTANCE.toupper(ch);
35202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
35212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
35222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    // extra methods not in java.lang.Character --------------------------
35232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
35242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
35251537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Determines if the code point is a supplementary character.
35262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * A code point is a supplementary character if and only if it is greater
35272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * than <a href=#SUPPLEMENTARY_MIN_VALUE>SUPPLEMENTARY_MIN_VALUE</a>
35282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point to be determined if it is in the supplementary
35292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *        plane
35302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if code point is a supplementary character
35312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
35322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isSupplementary(int ch)
35332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
35342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return ch >= UCharacter.SUPPLEMENTARY_MIN_VALUE &&
35352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                ch <= UCharacter.MAX_VALUE;
35362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
35372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
35382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
35391537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Determines if the code point is in the BMP plane.
35402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point to be determined if it is not a supplementary
35412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *        character
35422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if code point is not a supplementary character
35432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
35442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isBMP(int ch)
35452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
35462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return (ch >= 0 && ch <= LAST_CHAR_MASK_);
35472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
35482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
35492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
35501537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Determines whether the specified code point is a printable character
35512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * according to the Unicode standard.
35522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point to be determined if it is printable
35532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if the code point is a printable character
35542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
35552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isPrintable(int ch)
35562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
35572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        int cat = getType(ch);
35582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // if props == 0, it will just fall through and return false
35592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return (cat != UCharacterCategory.UNASSIGNED &&
35602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                cat != UCharacterCategory.CONTROL &&
35612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                cat != UCharacterCategory.FORMAT &&
35622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                cat != UCharacterCategory.PRIVATE_USE &&
35632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                cat != UCharacterCategory.SURROGATE &&
35642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                cat != UCharacterCategory.GENERAL_OTHER_TYPES);
35652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
35662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
35672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
35681537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Determines whether the specified code point is of base form.
35692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * A code point of base form does not graphically combine with preceding
35702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * characters, and is neither a control nor a format character.
35712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point to be determined if it is of base form
35722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if the code point is of base form
35732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
35742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isBaseForm(int ch)
35752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
35762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        int cat = getType(ch);
35772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // if props == 0, it will just fall through and return false
35782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return cat == UCharacterCategory.DECIMAL_DIGIT_NUMBER ||
35792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                cat == UCharacterCategory.OTHER_NUMBER ||
35802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                cat == UCharacterCategory.LETTER_NUMBER ||
35812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                cat == UCharacterCategory.UPPERCASE_LETTER ||
35822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                cat == UCharacterCategory.LOWERCASE_LETTER ||
35832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                cat == UCharacterCategory.TITLECASE_LETTER ||
35842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                cat == UCharacterCategory.MODIFIER_LETTER ||
35852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                cat == UCharacterCategory.OTHER_LETTER ||
35862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                cat == UCharacterCategory.NON_SPACING_MARK ||
35872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                cat == UCharacterCategory.ENCLOSING_MARK ||
35882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                cat == UCharacterCategory.COMBINING_SPACING_MARK;
35892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
35902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
35912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
35921537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Returns the Bidirection property of a code point.
35932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * For example, 0x0041 (letter A) has the LEFT_TO_RIGHT directional
35942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * property.<br>
35952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Result returned belongs to the interface
35962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <a href=UCharacterDirection.html>UCharacterDirection</a>
35972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch the code point to be determined its direction
35982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return direction constant from UCharacterDirection.
35992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
36002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int getDirection(int ch)
36012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
36022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UBiDiProps.INSTANCE.getClass(ch);
36032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
36042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
36052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
36062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Determines whether the code point has the "mirrored" property.
36072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * This property is set for characters that are commonly used in
36082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Right-To-Left contexts and need to be displayed with a "mirrored"
36092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * glyph.
36102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point whose mirror is to be determined
36112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if the code point has the "mirrored" property
36122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
36132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isMirrored(int ch)
36142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
36152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UBiDiProps.INSTANCE.isMirrored(ch);
36162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
36172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
36182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
36191537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Maps the specified code point to a "mirror-image" code point.
36202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * For code points with the "mirrored" property, implementations sometimes
36212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * need a "poor man's" mapping to another code point such that the default
36222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * glyph may serve as the mirror-image of the default glyph of the
36232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * specified code point.<br>
36242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * This is useful for text conversion to and from codepages with visual
36252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * order, and for displays without glyph selection capabilities.
36262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point whose mirror is to be retrieved
36272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return another code point that may serve as a mirror-image substitute,
36282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *         or ch itself if there is no such mapping or ch does not have the
36292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *         "mirrored" property
36302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
36312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int getMirror(int ch)
36322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
36332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UBiDiProps.INSTANCE.getMirror(ch);
36342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
36352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
36362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
36371537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Maps the specified character to its paired bracket character.
36382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * For Bidi_Paired_Bracket_Type!=None, this is the same as getMirror(int).
36392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Otherwise c itself is returned.
36402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * See http://www.unicode.org/reports/tr9/
36412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
36422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param c the code point to be mapped
36432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the paired bracket code point,
36442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *         or c itself if there is no such mapping
36452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *         (Bidi_Paired_Bracket_Type=None)
36462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
36472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see UProperty#BIDI_PAIRED_BRACKET
36482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see UProperty#BIDI_PAIRED_BRACKET_TYPE
36492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #getMirror(int)
36502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
36512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int getBidiPairedBracket(int c) {
36522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UBiDiProps.INSTANCE.getPairedBracket(c);
36532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
36542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
36552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
36561537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Returns the combining class of the argument codepoint
36572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point whose combining is to be retrieved
36582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the combining class of the codepoint
36592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
36602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int getCombiningClass(int ch)
36612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
36622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return Normalizer2.getNFDInstance().getCombiningClass(ch);
36632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
36642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
36652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
36661537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> A code point is illegal if and only if
36672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <ul>
36682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Out of bounds, less than 0 or greater than UCharacter.MAX_VALUE
36692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> A surrogate value, 0xD800 to 0xDFFF
36702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Not-a-character, having the form 0x xxFFFF or 0x xxFFFE
36712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * </ul>
36722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Note: legal does not mean that it is assigned in this version of Unicode.
36732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point to determine if it is a legal code point by itself
36742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if and only if legal.
36752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
36762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isLegal(int ch)
36772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
36782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (ch < MIN_VALUE) {
36792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return false;
36802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
36812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (ch < Character.MIN_SURROGATE) {
36822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return true;
36832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
36842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (ch <= Character.MAX_SURROGATE) {
36852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return false;
36862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
36872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (UCharacterUtility.isNonCharacter(ch)) {
36882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return false;
36892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
36902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return (ch <= MAX_VALUE);
36912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
36922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
36932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
36941537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> A string is legal iff all its code points are legal.
36952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * A code point is illegal if and only if
36962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <ul>
36972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Out of bounds, less than 0 or greater than UCharacter.MAX_VALUE
36982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> A surrogate value, 0xD800 to 0xDFFF
36992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Not-a-character, having the form 0x xxFFFF or 0x xxFFFE
37002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * </ul>
37012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Note: legal does not mean that it is assigned in this version of Unicode.
37022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param str containing code points to examin
37032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if and only if legal.
37042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
37052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isLegal(String str)
37062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
37072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        int size = str.length();
37082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        int codepoint;
37092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        for (int i = 0; i < size; i += Character.charCount(codepoint))
37102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        {
37112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            codepoint = str.codePointAt(i);
37122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if (!isLegal(codepoint)) {
37132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                return false;
37142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
37152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
37162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return true;
37172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
37182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
37192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
37201537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Returns the version of Unicode data used.
37212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the unicode version number used
37222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
37232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static VersionInfo getUnicodeVersion()
37242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
37252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UCharacterProperty.INSTANCE.m_unicodeVersion_;
37262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
37272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
37282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
37291537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Returns the most current Unicode name of the argument code point, or
37302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * null if the character is unassigned or outside the range
37312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * UCharacter.MIN_VALUE and UCharacter.MAX_VALUE or does not have a name.
37322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <br>
37332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Note calling any methods related to code point names, e.g. get*Name*()
37342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * incurs a one-time initialisation cost to construct the name tables.
37352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch the code point for which to get the name
37362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return most current Unicode name
37372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
37382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static String getName(int ch)
37392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
37402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UCharacterName.INSTANCE.getName(ch, UCharacterNameChoice.UNICODE_CHAR_NAME);
37412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
37422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
37432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
37441537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Returns the names for each of the characters in a string
37452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param s string to format
37462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param separator string to go between names
37472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return string of names
37482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
37492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static String getName(String s, String separator) {
37502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (s.length() == 1) { // handle common case
37512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return getName(s.charAt(0));
37522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
37532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        int cp;
37542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        StringBuilder sb = new StringBuilder();
37552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        for (int i = 0; i < s.length(); i += Character.charCount(cp)) {
37562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            cp = s.codePointAt(i);
37572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if (i != 0) sb.append(separator);
37582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            sb.append(UCharacter.getName(cp));
37592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
37602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return sb.toString();
37612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
37622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
37632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
37641537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Returns null.
37652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Used to return the Unicode_1_Name property value which was of little practical value.
37662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch the code point for which to get the name
37672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return null
37682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @deprecated ICU 49
376993cf604e9dd0525f15bc0a7450b2a35f3884c298Neil Fuller     * @hide original deprecated declaration
37702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
37712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    @Deprecated
37722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static String getName1_0(int ch)
37732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
37742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return null;
37752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
37762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
37772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
37781537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Returns a name for a valid codepoint. Unlike, getName(int) and
37792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * getName1_0(int), this method will return a name even for codepoints that
37802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * are not assigned a name in UnicodeData.txt.
378108ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     *
378208ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <p>The names are returned in the following order.
37832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <ul>
37842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Most current Unicode name if there is any
37852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Unicode 1.0 name if there is any
37862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Extended name in the form of
37872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *      "&lt;codepoint_type-codepoint_hex_digits&gt;". E.g., &lt;noncharacter-fffe&gt;
37882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * </ul>
37892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Note calling any methods related to code point names, e.g. get*Name*()
37902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * incurs a one-time initialisation cost to construct the name tables.
37912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch the code point for which to get the name
37922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return a name for the argument codepoint
37932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
37942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static String getExtendedName(int ch) {
37952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UCharacterName.INSTANCE.getName(ch, UCharacterNameChoice.EXTENDED_CHAR_NAME);
37962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
37972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
37982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
37991537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Returns the corrected name from NameAliases.txt if there is one.
38002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Returns null if the character is unassigned or outside the range
38012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * UCharacter.MIN_VALUE and UCharacter.MAX_VALUE or does not have a name.
38022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <br>
38032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Note calling any methods related to code point names, e.g. get*Name*()
38042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * incurs a one-time initialisation cost to construct the name tables.
38052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch the code point for which to get the name alias
38062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return Unicode name alias, or null
38072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
38082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static String getNameAlias(int ch)
38092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
38102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UCharacterName.INSTANCE.getName(ch, UCharacterNameChoice.CHAR_NAME_ALIAS);
38112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
38122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
38132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
38141537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Returns null.
38152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Used to return the ISO 10646 comment for a character.
38162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * The Unicode ISO_Comment property is deprecated and has no values.
38172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
38182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch The code point for which to get the ISO comment.
38192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *           It must be the case that {@code 0 <= ch <= 0x10ffff}.
38202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return null
38212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @deprecated ICU 49
382293cf604e9dd0525f15bc0a7450b2a35f3884c298Neil Fuller     * @hide original deprecated declaration
38232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
38242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    @Deprecated
38252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static String getISOComment(int ch)
38262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
38272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return null;
38282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
38292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
38302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
38311537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> <p>Finds a Unicode code point by its most current Unicode name and
383208ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * return its code point value. All Unicode names are in uppercase.
38332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Note calling any methods related to code point names, e.g. get*Name*()
38342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * incurs a one-time initialisation cost to construct the name tables.
38352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param name most current Unicode character name whose code point is to
38362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *        be returned
38372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return code point or -1 if name is not found
38382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
38392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int getCharFromName(String name){
38402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UCharacterName.INSTANCE.getCharFromName(
38412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                UCharacterNameChoice.UNICODE_CHAR_NAME, name);
38422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
38432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
38442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
38451537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Returns -1.
38462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>Used to find a Unicode character by its version 1.0 Unicode name and return
384708ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * its code point value.
38482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param name Unicode 1.0 code point name whose code point is to be
38492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *             returned
38502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return -1
38512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @deprecated ICU 49
38522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #getName1_0(int)
385393cf604e9dd0525f15bc0a7450b2a35f3884c298Neil Fuller     * @hide original deprecated declaration
38542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
38552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    @Deprecated
38562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int getCharFromName1_0(String name){
38572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return -1;
38582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
38592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
38602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
38611537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> <p>Find a Unicode character by either its name and return its code
38622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * point value. All Unicode names are in uppercase.
38632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Extended names are all lowercase except for numbers and are contained
386408ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * within angle brackets.
38652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * The names are searched in the following order
38662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <ul>
38672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Most current Unicode name if there is any
38682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Unicode 1.0 name if there is any
38692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> Extended name in the form of
387008ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     *      "&lt;codepoint_type-codepoint_hex_digits&gt;". E.g. &lt;noncharacter-FFFE&gt;
38712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * </ul>
38722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Note calling any methods related to code point names, e.g. get*Name*()
38732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * incurs a one-time initialisation cost to construct the name tables.
38742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param name codepoint name
38752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return code point associated with the name or -1 if the name is not
38762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *         found.
38772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
38782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int getCharFromExtendedName(String name){
38792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UCharacterName.INSTANCE.getCharFromName(
38802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                UCharacterNameChoice.EXTENDED_CHAR_NAME, name);
38812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
38822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
38832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
38841537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> <p>Find a Unicode character by its corrected name alias and return
388508ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * its code point value. All Unicode names are in uppercase.
38862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Note calling any methods related to code point names, e.g. get*Name*()
38872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * incurs a one-time initialisation cost to construct the name tables.
38882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param name Unicode name alias whose code point is to be returned
38892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return code point or -1 if name is not found
38902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
38912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int getCharFromNameAlias(String name){
38922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UCharacterName.INSTANCE.getCharFromName(UCharacterNameChoice.CHAR_NAME_ALIAS, name);
38932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
38942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
38952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
38961537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Return the Unicode name for a given property, as given in the
38972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Unicode database file PropertyAliases.txt.  Most properties
38982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * have more than one name.  The nameChoice determines which one
38992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * is returned.
39002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
39012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * In addition, this function maps the property
39022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * UProperty.GENERAL_CATEGORY_MASK to the synthetic names "gcm" /
39032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * "General_Category_Mask".  These names are not in
39042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * PropertyAliases.txt.
39052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
39062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param property UProperty selector.
39072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
39082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param nameChoice UProperty.NameChoice selector for which name
39092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * to get.  All properties have a long name.  Most have a short
39102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * name, but some do not.  Unicode allows for additional names; if
39112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * present these will be returned by UProperty.NameChoice.LONG + i,
39122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * where i=1, 2,...
39132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
39142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return a name, or null if Unicode explicitly defines no name
39152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * ("n/a") for a given property/nameChoice.  If a given nameChoice
39162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * throws an exception, then all larger values of nameChoice will
39172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * throw an exception.  If null is returned for a given
39182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * nameChoice, then other nameChoice values may return non-null
39192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * results.
39202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
39212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @exception IllegalArgumentException thrown if property or
39222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * nameChoice are invalid.
39232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
39242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see UProperty
39252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see UProperty.NameChoice
39262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
39272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static String getPropertyName(int property,
39282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            int nameChoice) {
39292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UPropertyAliases.INSTANCE.getPropertyName(property, nameChoice);
39302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
39312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
39322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
39331537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Return the UProperty selector for a given property name, as
39342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * specified in the Unicode database file PropertyAliases.txt.
39352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Short, long, and any other variants are recognized.
39362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
39372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * In addition, this function maps the synthetic names "gcm" /
39382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * "General_Category_Mask" to the property
39392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * UProperty.GENERAL_CATEGORY_MASK.  These names are not in
39402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * PropertyAliases.txt.
39412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
39422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param propertyAlias the property name to be matched.  The name
39432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * is compared using "loose matching" as described in
39442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * PropertyAliases.txt.
39452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
39462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return a UProperty enum.
39472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
39482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @exception IllegalArgumentException thrown if propertyAlias
39492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * is not recognized.
39502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
39512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see UProperty
39522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
39532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int getPropertyEnum(CharSequence propertyAlias) {
39542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        int propEnum = UPropertyAliases.INSTANCE.getPropertyEnum(propertyAlias);
39552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (propEnum == UProperty.UNDEFINED) {
39562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            throw new IllegalIcuArgumentException("Invalid name: " + propertyAlias);
39572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
39582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return propEnum;
39592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
39602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
39612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
39621537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Return the Unicode name for a given property value, as given in
39632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * the Unicode database file PropertyValueAliases.txt.  Most
39642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * values have more than one name.  The nameChoice determines
39652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * which one is returned.
39662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
39672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Note: Some of the names in PropertyValueAliases.txt can only be
39682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * retrieved using UProperty.GENERAL_CATEGORY_MASK, not
39692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * UProperty.GENERAL_CATEGORY.  These include: "C" / "Other", "L" /
39702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * "Letter", "LC" / "Cased_Letter", "M" / "Mark", "N" / "Number", "P"
39712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * / "Punctuation", "S" / "Symbol", and "Z" / "Separator".
39722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
39732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param property UProperty selector constant.
39742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * UProperty.INT_START &lt;= property &lt; UProperty.INT_LIMIT or
39752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * UProperty.BINARY_START &lt;= property &lt; UProperty.BINARY_LIMIT or
39762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * UProperty.MASK_START &lt; = property &lt; UProperty.MASK_LIMIT.
39772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * If out of range, null is returned.
39782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
39792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param value selector for a value for the given property.  In
39802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * general, valid values range from 0 up to some maximum.  There
39812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * are a few exceptions: (1.) UProperty.BLOCK values begin at the
39822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * non-zero value BASIC_LATIN.getID().  (2.)
39832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * UProperty.CANONICAL_COMBINING_CLASS values are not contiguous
39842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * and range from 0..240.  (3.)  UProperty.GENERAL_CATEGORY_MASK values
39852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * are mask values produced by left-shifting 1 by
39862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * UCharacter.getType().  This allows grouped categories such as
39872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * [:L:] to be represented.  Mask values are non-contiguous.
39882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
39892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param nameChoice UProperty.NameChoice selector for which name
39902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * to get.  All values have a long name.  Most have a short name,
39912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * but some do not.  Unicode allows for additional names; if
39922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * present these will be returned by UProperty.NameChoice.LONG + i,
39932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * where i=1, 2,...
39942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
39952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return a name, or null if Unicode explicitly defines no name
39962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * ("n/a") for a given property/value/nameChoice.  If a given
39972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * nameChoice throws an exception, then all larger values of
39982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * nameChoice will throw an exception.  If null is returned for a
39992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * given nameChoice, then other nameChoice values may return
40002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * non-null results.
40012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
40022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @exception IllegalArgumentException thrown if property, value,
40032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * or nameChoice are invalid.
40042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
40052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see UProperty
40062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see UProperty.NameChoice
40072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
40082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static String getPropertyValueName(int property,
40092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            int value,
40102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            int nameChoice)
40112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
40122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if ((property == UProperty.CANONICAL_COMBINING_CLASS
40132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                || property == UProperty.LEAD_CANONICAL_COMBINING_CLASS
40142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                || property == UProperty.TRAIL_CANONICAL_COMBINING_CLASS)
40152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                && value >= UCharacter.getIntPropertyMinValue(
40162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        UProperty.CANONICAL_COMBINING_CLASS)
40172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        && value <= UCharacter.getIntPropertyMaxValue(
40182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                                UProperty.CANONICAL_COMBINING_CLASS)
40192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                                && nameChoice >= 0 && nameChoice < UProperty.NameChoice.COUNT) {
40202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            // this is hard coded for the valid cc
40212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            // because PropertyValueAliases.txt does not contain all of them
40222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            try {
40232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                return UPropertyAliases.INSTANCE.getPropertyValueName(property, value,
40242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        nameChoice);
40252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
40262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            catch (IllegalArgumentException e) {
40272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                return null;
40282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
40292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
40302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UPropertyAliases.INSTANCE.getPropertyValueName(property, value, nameChoice);
40312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
40322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
40332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
40341537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Return the property value integer for a given value name, as
40352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * specified in the Unicode database file PropertyValueAliases.txt.
40362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Short, long, and any other variants are recognized.
40372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
40382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Note: Some of the names in PropertyValueAliases.txt will only be
40392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * recognized with UProperty.GENERAL_CATEGORY_MASK, not
40402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * UProperty.GENERAL_CATEGORY.  These include: "C" / "Other", "L" /
40412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * "Letter", "LC" / "Cased_Letter", "M" / "Mark", "N" / "Number", "P"
40422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * / "Punctuation", "S" / "Symbol", and "Z" / "Separator".
40432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
40442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param property UProperty selector constant.
40452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * UProperty.INT_START &lt;= property &lt; UProperty.INT_LIMIT or
40462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * UProperty.BINARY_START &lt;= property &lt; UProperty.BINARY_LIMIT or
40472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * UProperty.MASK_START &lt; = property &lt; UProperty.MASK_LIMIT.
40482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Only these properties can be enumerated.
40492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
40502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param valueAlias the value name to be matched.  The name is
40512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * compared using "loose matching" as described in
40522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * PropertyValueAliases.txt.
40532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
40542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return a value integer.  Note: UProperty.GENERAL_CATEGORY
40552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * values are mask values produced by left-shifting 1 by
40562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * UCharacter.getType().  This allows grouped categories such as
40572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * [:L:] to be represented.
40582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
40592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see UProperty
40602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @throws IllegalArgumentException if property is not a valid UProperty
40612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *         selector or valueAlias is not a value of this property
40622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
40632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int getPropertyValueEnum(int property, CharSequence valueAlias) {
40642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        int propEnum = UPropertyAliases.INSTANCE.getPropertyValueEnum(property, valueAlias);
40652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (propEnum == UProperty.UNDEFINED) {
40662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            throw new IllegalIcuArgumentException("Invalid name: " + valueAlias);
40672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
40682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return propEnum;
40692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
40702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
40712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
40722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Same as {@link #getPropertyValueEnum(int, CharSequence)}, except doesn't throw exception. Instead, returns UProperty.UNDEFINED.
40732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param property  Same as {@link #getPropertyValueEnum(int, CharSequence)}
40742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param valueAlias    Same as {@link #getPropertyValueEnum(int, CharSequence)}
40752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return returns UProperty.UNDEFINED if the value is not valid, otherwise the value.
40762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @deprecated This API is ICU internal only.
407793cf604e9dd0525f15bc0a7450b2a35f3884c298Neil Fuller     * @hide original deprecated declaration
4078836e6b40a94ec3fb7545a76cb072960442b7eee9Neil Fuller     * @hide draft / provisional / internal are hidden on Android
40792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
40802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    @Deprecated
40812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int getPropertyValueEnumNoThrow(int property, CharSequence valueAlias) {
40822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UPropertyAliases.INSTANCE.getPropertyValueEnumNoThrow(property, valueAlias);
40832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
40842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
40852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
40862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
40871537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Returns a code point corresponding to the two surrogate code units.
40882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
40892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param lead the lead char
40902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param trail the trail char
40912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return code point if surrogate characters are valid.
40922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @exception IllegalArgumentException thrown when the code units do
40932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *            not form a valid code point
40942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
40952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int getCodePoint(char lead, char trail)
40962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
40972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (Character.isSurrogatePair(lead, trail)) {
40982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return Character.toCodePoint(lead, trail);
40992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
41002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        throw new IllegalArgumentException("Illegal surrogate characters");
41012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
41022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
41032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
41041537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Returns the code point corresponding to the BMP code point.
41052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
41062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param char16 the BMP code point
41072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return code point if argument is a valid character.
41082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @exception IllegalArgumentException thrown when char16 is not a valid
41092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *            code point
41102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
41112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int getCodePoint(char char16)
41122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
41132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (UCharacter.isLegal(char16)) {
41142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return char16;
41152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
41162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        throw new IllegalArgumentException("Illegal codepoint");
41172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
41182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
41192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
41202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Implementation of UCaseProps.ContextIterator, iterates over a String.
41212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * See ustrcase.c/utf16_caseContextIterator().
41222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
41232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static class StringContextIterator implements UCaseProps.ContextIterator {
41242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
41252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Constructor.
41262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * @param s String to iterate over.
41272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
41282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        StringContextIterator(String s) {
41292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            this.s=s;
41302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            limit=s.length();
41312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            cpStart=cpLimit=index=0;
41322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            dir=0;
41332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
41342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
41352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
41362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Set the iteration limit for nextCaseMapCP() to an index within the string.
41372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * If the limit parameter is negative or past the string, then the
41382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * string length is restored as the iteration limit.
41392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         *
41402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * <p>This limit does not affect the next() function which always
41412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * iterates to the very end of the string.
41422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         *
41432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * @param lim The iteration limit.
41442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
41452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public void setLimit(int lim) {
41462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if(0<=lim && lim<=s.length()) {
41472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                limit=lim;
41482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            } else {
41492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                limit=s.length();
41502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
41512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
41522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
41532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
41542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Move to the iteration limit without fetching code points up to there.
41552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
41562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public void moveToLimit() {
41572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            cpStart=cpLimit=limit;
41582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
41592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
41602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
41612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Iterate forward through the string to fetch the next code point
41622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * to be case-mapped, and set the context indexes for it.
41632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         *
41642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * <p>When the iteration limit is reached (and -1 is returned),
41652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * getCPStart() will be at the iteration limit.
41662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         *
41672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * <p>Iteration with next() does not affect the position for nextCaseMapCP().
41682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         *
41692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * @return The next code point to be case-mapped, or <0 when the iteration is done.
41702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
41712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public int nextCaseMapCP() {
41722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            cpStart=cpLimit;
41732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if(cpLimit<limit) {
41742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                int c=s.codePointAt(cpLimit);
41752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                cpLimit+=Character.charCount(c);
41762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                return c;
41772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            } else {
41782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                return -1;
41792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
41802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
41812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
41822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
41832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Returns the start of the code point that was last returned
41842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * by nextCaseMapCP().
41852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
41862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public int getCPStart() {
41872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return cpStart;
41882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
41892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
41902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /**
41912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * Returns the limit of the code point that was last returned
41922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         * by nextCaseMapCP().
41932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         */
41942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public int getCPLimit() {
41952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return cpLimit;
41962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
41972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
41982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // implement UCaseProps.ContextIterator
41992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // The following code is not used anywhere in this private class
42002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public void reset(int direction) {
42012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if(direction>0) {
42022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                /* reset for forward iteration */
42032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                dir=1;
42042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                index=cpLimit;
42052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            } else if(direction<0) {
42062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                /* reset for backward iteration */
42072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                dir=-1;
42082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                index=cpStart;
42092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            } else {
42102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                // not a valid direction
42112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                dir=0;
42122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                index=0;
42132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
42142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
42152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
42162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public int next() {
42172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            int c;
42182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
42192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if(dir>0 && index<s.length()) {
42202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                c=s.codePointAt(index);
42212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                index+=Character.charCount(c);
42222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                return c;
42232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            } else if(dir<0 && index>0) {
42242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                c=s.codePointBefore(index);
42252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                index-=Character.charCount(c);
42262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                return c;
42272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
42282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return -1;
42292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
42302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
42312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // variables
42322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        protected String s;
42332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        protected int index, limit, cpStart, cpLimit;
42342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        protected int dir; // 0=initial state  >0=forward  <0=backward
42352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
42362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
42372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
42382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Returns the uppercase version of the argument string.
42392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Casing is dependent on the default locale and context-sensitive.
42402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param str source string to be performed on
42412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return uppercase version of the argument string
42422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
42432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static String toUpperCase(String str)
42442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
42452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return toUpperCase(ULocale.getDefault(), str);
42462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
42472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
42482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
42492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Returns the lowercase version of the argument string.
42502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Casing is dependent on the default locale and context-sensitive
42512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param str source string to be performed on
42522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return lowercase version of the argument string
42532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
42542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static String toLowerCase(String str)
42552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
42562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return toLowerCase(ULocale.getDefault(), str);
42572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
42582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
42592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
426008ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <p>Returns the titlecase version of the argument string.
42612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>Position for titlecasing is determined by the argument break
42622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * iterator, hence the user can customize his break iterator for
42632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * a specialized titlecasing. In this case only the forward iteration
42642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * needs to be implemented.
42652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * If the break iterator passed in is null, the default Unicode algorithm
42662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * will be used to determine the titlecase positions.
426708ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     *
42682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>Only positions returned by the break iterator will be title cased,
426908ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * character in between the positions will all be in lower case.
427008ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <p>Casing is dependent on the default locale and context-sensitive
42712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param str source string to be performed on
42722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param breakiter break iterator to determine the positions in which
42732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *        the character should be title cased.
42742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return lowercase version of the argument string
42752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
42762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static String toTitleCase(String str, BreakIterator breakiter)
42772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
42782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return toTitleCase(ULocale.getDefault(), str, breakiter);
42792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
42802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
42812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
42822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Returns the uppercase version of the argument string.
42832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Casing is dependent on the argument locale and context-sensitive.
42842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param locale which string is to be converted in
42852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param str source string to be performed on
42862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return uppercase version of the argument string
42872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
42882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static String toUpperCase(Locale locale, String str)
42892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
42902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return toUpperCase(ULocale.forLocale(locale), str);
42912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
42922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
42932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
42942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Returns the uppercase version of the argument string.
42952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Casing is dependent on the argument locale and context-sensitive.
42962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param locale which string is to be converted in
42972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param str source string to be performed on
42982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return uppercase version of the argument string
42992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
43002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static String toUpperCase(ULocale locale, String str) {
43012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        StringContextIterator iter = new StringContextIterator(str);
43022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        StringBuilder result = new StringBuilder(str.length());
43032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        int[] locCache = new int[1];
43042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        int c;
43052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
43062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (locale == null) {
43072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            locale = ULocale.getDefault();
43082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
43092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        locCache[0]=0;
43102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
43112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        while((c=iter.nextCaseMapCP())>=0) {
43122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            c = UCaseProps.INSTANCE.toFullUpper(c, iter, result, locale, locCache);
43132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
43142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            /* decode the result */
43152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if(c<0) {
43162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                /* (not) original code point */
43172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                c=~c;
43182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            } else if(c<=UCaseProps.MAX_STRING_LENGTH) {
43192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                /* mapping already appended to result */
43202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                continue;
43212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                /* } else { append single-code point mapping */
43222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
43232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            result.appendCodePoint(c);
43242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
43252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return result.toString();
43262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
43272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
43282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
43292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Returns the lowercase version of the argument string.
43302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Casing is dependent on the argument locale and context-sensitive
43312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param locale which string is to be converted in
43322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param str source string to be performed on
43332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return lowercase version of the argument string
43342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
43352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static String toLowerCase(Locale locale, String str)
43362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
43372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return toLowerCase(ULocale.forLocale(locale), str);
43382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
43392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
43402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
43412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Returns the lowercase version of the argument string.
43422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Casing is dependent on the argument locale and context-sensitive
43432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param locale which string is to be converted in
43442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param str source string to be performed on
43452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return lowercase version of the argument string
43462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
43472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static String toLowerCase(ULocale locale, String str) {
43482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        StringContextIterator iter = new StringContextIterator(str);
43492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        StringBuilder result = new StringBuilder(str.length());
43502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        int[] locCache = new int[1];
43512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        int c;
43522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
43532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (locale == null) {
43542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            locale = ULocale.getDefault();
43552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
43562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        locCache[0]=0;
43572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
43582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        while((c=iter.nextCaseMapCP())>=0) {
43592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            c = UCaseProps.INSTANCE.toFullLower(c, iter, result, locale, locCache);
43602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
43612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            /* decode the result */
43622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if(c<0) {
43632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                /* (not) original code point */
43642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                c=~c;
43652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            } else if(c<=UCaseProps.MAX_STRING_LENGTH) {
43662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                /* mapping already appended to result */
43672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                continue;
43682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                /* } else { append single-code point mapping */
43692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
43702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            result.appendCodePoint(c);
43712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
43722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return result.toString();
43732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
43742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
43752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
437608ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <p>Returns the titlecase version of the argument string.
43772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>Position for titlecasing is determined by the argument break
43782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * iterator, hence the user can customize his break iterator for
43792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * a specialized titlecasing. In this case only the forward iteration
43802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * needs to be implemented.
43812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * If the break iterator passed in is null, the default Unicode algorithm
43822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * will be used to determine the titlecase positions.
438308ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     *
43842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>Only positions returned by the break iterator will be title cased,
438508ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * character in between the positions will all be in lower case.
438608ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <p>Casing is dependent on the argument locale and context-sensitive
43872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param locale which string is to be converted in
43882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param str source string to be performed on
43892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param breakiter break iterator to determine the positions in which
43902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *        the character should be title cased.
43912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return lowercase version of the argument string
43922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
43932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static String toTitleCase(Locale locale, String str,
43942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            BreakIterator breakiter)
43952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
43962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return toTitleCase(ULocale.forLocale(locale), str, breakiter);
43972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
43982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
43992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
440008ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <p>Returns the titlecase version of the argument string.
44012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>Position for titlecasing is determined by the argument break
44022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * iterator, hence the user can customize his break iterator for
44032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * a specialized titlecasing. In this case only the forward iteration
44042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * needs to be implemented.
44052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * If the break iterator passed in is null, the default Unicode algorithm
44062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * will be used to determine the titlecase positions.
440708ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     *
44082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>Only positions returned by the break iterator will be title cased,
440908ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * character in between the positions will all be in lower case.
441008ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <p>Casing is dependent on the argument locale and context-sensitive
44112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param locale which string is to be converted in
44122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param str source string to be performed on
44132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param titleIter break iterator to determine the positions in which
44142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *        the character should be title cased.
44152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return lowercase version of the argument string
44162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
44172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static String toTitleCase(ULocale locale, String str,
44182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            BreakIterator titleIter) {
44192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return toTitleCase(locale, str, titleIter, 0);
44202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
44212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
44222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
442308ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <p>Returns the titlecase version of the argument string.
44242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>Position for titlecasing is determined by the argument break
44252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * iterator, hence the user can customize his break iterator for
44262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * a specialized titlecasing. In this case only the forward iteration
44272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * needs to be implemented.
44282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * If the break iterator passed in is null, the default Unicode algorithm
44292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * will be used to determine the titlecase positions.
443008ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     *
44312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>Only positions returned by the break iterator will be title cased,
443208ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * character in between the positions will all be in lower case.
443308ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <p>Casing is dependent on the argument locale and context-sensitive
44342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param locale which string is to be converted in
44352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param str source string to be performed on
44362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param titleIter break iterator to determine the positions in which
44372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *        the character should be title cased.
44382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param options bit set to modify the titlecasing operation
44392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return lowercase version of the argument string
44402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #TITLECASE_NO_LOWERCASE
44412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #TITLECASE_NO_BREAK_ADJUSTMENT
44422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
44432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static String toTitleCase(ULocale locale, String str,
44442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            BreakIterator titleIter,
44452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            int options) {
44462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        StringContextIterator iter = new StringContextIterator(str);
44472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        StringBuilder result = new StringBuilder(str.length());
44482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        int[] locCache = new int[1];
44492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        int c, nc, srcLength = str.length();
44502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
44512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (locale == null) {
44522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            locale = ULocale.getDefault();
44532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
44542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        locCache[0]=0;
44552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
44562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if(titleIter == null) {
44572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            titleIter = BreakIterator.getWordInstance(locale);
44582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
44592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        titleIter.setText(str);
44602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
44612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        int prev, titleStart, index;
44622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        boolean isFirstIndex;
44632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        boolean isDutch = locale.getLanguage().equals("nl");
44642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        boolean FirstIJ = true;
44652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
44662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /* set up local variables */
44672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        prev=0;
44682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        isFirstIndex=true;
44692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
44702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        /* titlecasing loop */
44712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        while(prev<srcLength) {
44722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            /* find next index where to titlecase */
44732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if(isFirstIndex) {
44742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                isFirstIndex=false;
44752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                index=titleIter.first();
44762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            } else {
44772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                index=titleIter.next();
44782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
44792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if(index==BreakIterator.DONE || index>srcLength) {
44802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                index=srcLength;
44812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
44822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
44832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            /*
44842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller             * Unicode 4 & 5 section 3.13 Default Case Operations:
44852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller             *
44862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller             * R3  toTitlecase(X): Find the word boundaries based on Unicode Standard Annex
44872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller             * #29, "Text Boundaries." Between each pair of word boundaries, find the first
44882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller             * cased character F. If F exists, map F to default_title(F); then map each
44892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller             * subsequent character C to default_lower(C).
44902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller             *
44912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller             * In this implementation, segment [prev..index[ into 3 parts:
44922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller             * a) uncased characters (copy as-is) [prev..titleStart[
44932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller             * b) first case letter (titlecase)         [titleStart..titleLimit[
44942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller             * c) subsequent characters (lowercase)                 [titleLimit..index[
44952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller             */
44962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if(prev<index) {
44972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                /* find and copy uncased characters [prev..titleStart[ */
44982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                iter.setLimit(index);
44992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                c=iter.nextCaseMapCP();
45002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                if((options&TITLECASE_NO_BREAK_ADJUSTMENT)==0
45012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        && UCaseProps.NONE==UCaseProps.INSTANCE.getType(c)) {
45022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    while((c=iter.nextCaseMapCP())>=0
45032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                            && UCaseProps.NONE==UCaseProps.INSTANCE.getType(c)) {}
45042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    titleStart=iter.getCPStart();
45052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    if(prev<titleStart) {
45062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        result.append(str, prev, titleStart);
45072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    }
45082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                } else {
45092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    titleStart=prev;
45102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                }
45112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
45122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                if(titleStart<index) {
45132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    FirstIJ = true;
45142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    /* titlecase c which is from titleStart */
45152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    c = UCaseProps.INSTANCE.toFullTitle(c, iter, result, locale, locCache);
45162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
45172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    /* decode the result and lowercase up to index */
45182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    for(;;) {
45192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        if(c<0) {
45202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                            /* (not) original code point */
45212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                            c=~c;
45222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                            result.appendCodePoint(c);
45232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        } else if(c<=UCaseProps.MAX_STRING_LENGTH) {
45242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                            /* mapping already appended to result */
45252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        } else {
45262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                            /* append single-code point mapping */
45272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                            result.appendCodePoint(c);
45282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        }
45292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
45302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        if((options&TITLECASE_NO_LOWERCASE)!=0) {
45312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                            /* Optionally just copy the rest of the word unchanged. */
45322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
45332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                            int titleLimit=iter.getCPLimit();
45342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                            if(titleLimit<index) {
45352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                                /* Special Case - Dutch IJ Titlecasing */
45362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                                if (isDutch && c == 0x0049 && str.charAt(titleLimit) == 'j') {
45372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                                    result.append('J').append(str, titleLimit + 1, index);
45382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                                } else {
45392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                                    result.append(str, titleLimit, index);
45402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                                }
45412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                            }
45422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                            iter.moveToLimit();
45432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                            break;
45442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        } else if((nc=iter.nextCaseMapCP())>=0) {
45452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                            if (isDutch && (nc == 0x004A ||  nc == 0x006A)
45462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                                    && (c == 0x0049) && (FirstIJ == true)) {
45472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                                c = 0x004A; /* J */
45482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                                FirstIJ = false;
45492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                            } else {
45502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                                /* Normal operation: Lowercase the rest of the word. */
45512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                                c = UCaseProps.INSTANCE.toFullLower(nc, iter, result, locale,
45522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                                        locCache);
45532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                            }
45542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        } else {
45552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                            break;
45562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        }
45572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    }
45582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                }
45592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
45602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
45612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            prev=index;
45622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
45632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return result.toString();
45642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
45652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
45662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
45672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int BREAK_MASK =
45682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            (1<<UCharacterCategory.DECIMAL_DIGIT_NUMBER)
45692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            | (1<<UCharacterCategory.OTHER_LETTER)
45702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            | (1<<UCharacterCategory.MODIFIER_LETTER);
45712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
45722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
45732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Return a string with just the first word titlecased, for menus and UI, etc. This does not affect most of the string,
45742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * and sometimes has no effect at all; the original string is returned whenever casing
45752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * would not be appropriate for the first word (such as for CJK characters or initial numbers).
45762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Initial non-letters are skipped in order to find the character to change.
45772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Characters past the first affected are left untouched: see also TITLECASE_NO_LOWERCASE.
45782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>Examples:
45792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <table border='1'><tr><th>Source</th><th>Result</th><th>Locale</th></tr>
45802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <tr><td>anglo-American locale</td><td>Anglo-American locale</td></tr>
45812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <tr><td>“contact us”</td><td>“Contact us”</td></tr>
45822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <tr><td>49ers win!</td><td>49ers win!</td></tr>
45832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <tr><td>丰(abc)</td><td>丰(abc)</td></tr>
45842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <tr><td>«ijs»</td><td>«Ijs»</td></tr>
45852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <tr><td>«ijs»</td><td>«IJs»</td><td>nl-BE</td></tr>
45862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <tr><td>«ijs»</td><td>«İjs»</td><td>tr-DE</td></tr>
45872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * </table>
45882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param locale the locale for accessing exceptional behavior (eg for tr).
45892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param str the source string to change
45902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the modified string, or the original if no modifications were necessary.
45912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @deprecated ICU internal only
459293cf604e9dd0525f15bc0a7450b2a35f3884c298Neil Fuller     * @hide original deprecated declaration
4593836e6b40a94ec3fb7545a76cb072960442b7eee9Neil Fuller     * @hide draft / provisional / internal are hidden on Android
45942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
45952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    @Deprecated
45962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static String toTitleFirst(ULocale locale, String str) {
45972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        int c = 0;
45982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        for (int i = 0; i < str.length(); i += UCharacter.charCount(c)) {
45992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            c = UCharacter.codePointAt(str, i);
46002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            int propertyMask = UCharacter.getIntPropertyValue(c, UProperty.GENERAL_CATEGORY_MASK);
46012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if ((propertyMask & BREAK_MASK) != 0) { // handle "49ers", initial CJK
46022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                break;
46032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
46042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if (UCaseProps.INSTANCE.getType(c) == UCaseProps.NONE) {
46052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                continue;
46062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
46072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
46082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            // we now have the first cased character
46092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            // What we really want is something like:
46102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            // String titled = UCharacter.toTitleCase(locale, str, i, outputCharsTaken);
46112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            // That is, just give us the titlecased string, for the locale, at i and following,
46122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            // and tell us how many characters are replaced.
46132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            // The following won't work completely: it needs some more substantial changes to UCaseProps
46142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
46152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            String substring = str.substring(i, i+UCharacter.charCount(c));
46162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            String titled = UCharacter.toTitleCase(locale, substring, BreakIterator.getSentenceInstance(locale), 0);
46172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
46182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            // skip if no change
46192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if (titled.codePointAt(0) == c) {
46202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                // Using 0 is safe, since any change in titling will not have first initial character
46212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                break;
46222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
46232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            StringBuilder result = new StringBuilder(str.length()).append(str, 0, i);
46242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            int startOfSuffix;
46252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
46262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            // handle dutch, but check first for 'i', since that's faster. Should be built into UCaseProps.
46272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
46282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if (c == 'i' && locale.getLanguage().equals("nl") && i < str.length() && str.charAt(i+1) == 'j') {
46292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                result.append("IJ");
46302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                startOfSuffix = 2;
46312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            } else {
46322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                result.append(titled);
46332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                startOfSuffix = i + UCharacter.charCount(c);
46342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
46352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
46362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            // add the remainder, and return
46372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return result.append(str, startOfSuffix, str.length()).toString();
46382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
46392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return str; // no change
46402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
46412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
46422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
464308ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <strong>[icu]</strong> <p>Returns the titlecase version of the argument string.
46442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>Position for titlecasing is determined by the argument break
46452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * iterator, hence the user can customize his break iterator for
46462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * a specialized titlecasing. In this case only the forward iteration
46472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * needs to be implemented.
46482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * If the break iterator passed in is null, the default Unicode algorithm
46492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * will be used to determine the titlecase positions.
465008ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     *
46512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>Only positions returned by the break iterator will be title cased,
465208ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * character in between the positions will all be in lower case.
465308ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <p>Casing is dependent on the argument locale and context-sensitive
46542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param locale which string is to be converted in
46552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param str source string to be performed on
46562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param titleIter break iterator to determine the positions in which
46572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *        the character should be title cased.
46582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param options bit set to modify the titlecasing operation
46592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return lowercase version of the argument string
46602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #TITLECASE_NO_LOWERCASE
46612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #TITLECASE_NO_BREAK_ADJUSTMENT
46622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
46632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static String toTitleCase(Locale locale, String str,
46642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            BreakIterator titleIter,
46652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            int options) {
46662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return toTitleCase(ULocale.forLocale(locale), str, titleIter, options);
46672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
46682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
46692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
46701537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> The given character is mapped to its case folding equivalent according
46712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * to UnicodeData.txt and CaseFolding.txt; if the character has no case
46722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * folding equivalent, the character itself is returned.
46732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
46742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>This function only returns the simple, single-code point case mapping.
46752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Full case mappings should be used whenever possible because they produce
46762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * better results by working on whole strings.
46772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * They can map to a result string with a different length as appropriate.
46782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Full case mappings are applied by the case mapping functions
46792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * that take String parameters rather than code points (int).
46802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * See also the User Guide chapter on C/POSIX migration:
46812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * http://www.icu-project.org/userguide/posix.html#case_mappings
46822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
46832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch             the character to be converted
46842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param defaultmapping Indicates whether the default mappings defined in
46852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                       CaseFolding.txt are to be used, otherwise the
46862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                       mappings for dotted I and dotless i marked with
46872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                       'T' in CaseFolding.txt are included.
46882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return               the case folding equivalent of the character, if
46892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                       any; otherwise the character itself.
46902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see                  #foldCase(String, boolean)
46912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
46922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int foldCase(int ch, boolean defaultmapping) {
46932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return foldCase(ch, defaultmapping ? FOLD_CASE_DEFAULT : FOLD_CASE_EXCLUDE_SPECIAL_I);
46942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
46952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
46962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
46971537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> The given string is mapped to its case folding equivalent according to
46982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * UnicodeData.txt and CaseFolding.txt; if any character has no case
46992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * folding equivalent, the character itself is returned.
47002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * "Full", multiple-code point case folding mappings are returned here.
47012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * For "simple" single-code point mappings use the API
47022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * foldCase(int ch, boolean defaultmapping).
47032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param str            the String to be converted
47042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param defaultmapping Indicates whether the default mappings defined in
47052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                       CaseFolding.txt are to be used, otherwise the
47062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                       mappings for dotted I and dotless i marked with
47072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                       'T' in CaseFolding.txt are included.
47082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return               the case folding equivalent of the character, if
47092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                       any; otherwise the character itself.
47102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see                  #foldCase(int, boolean)
47112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
47122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static String foldCase(String str, boolean defaultmapping) {
47132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return foldCase(str, defaultmapping ? FOLD_CASE_DEFAULT : FOLD_CASE_EXCLUDE_SPECIAL_I);
47142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
47152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
47162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
47171537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Option value for case folding: use default mappings defined in
47182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * CaseFolding.txt.
47192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
47202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final int FOLD_CASE_DEFAULT    =      0x0000;
47212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
47221537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Option value for case folding:
47232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Use the modified set of mappings provided in CaseFolding.txt to handle dotted I
47242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * and dotless i appropriately for Turkic languages (tr, az).
47252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
47262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>Before Unicode 3.2, CaseFolding.txt contains mappings marked with 'I' that
47272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * are to be included for default mappings and
47282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * excluded for the Turkic-specific mappings.
47292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
47302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>Unicode 3.2 CaseFolding.txt instead contains mappings marked with 'T' that
47312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * are to be excluded for default mappings and
47322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * included for the Turkic-specific mappings.
47332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
47342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final int FOLD_CASE_EXCLUDE_SPECIAL_I = 0x0001;
47352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
47362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
47371537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> The given character is mapped to its case folding equivalent according
47382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * to UnicodeData.txt and CaseFolding.txt; if the character has no case
47392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * folding equivalent, the character itself is returned.
47402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
47412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>This function only returns the simple, single-code point case mapping.
47422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Full case mappings should be used whenever possible because they produce
47432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * better results by working on whole strings.
47442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * They can map to a result string with a different length as appropriate.
47452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Full case mappings are applied by the case mapping functions
47462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * that take String parameters rather than code points (int).
47472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * See also the User Guide chapter on C/POSIX migration:
47482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * http://www.icu-project.org/userguide/posix.html#case_mappings
47492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
47502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch the character to be converted
47512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param options A bit set for special processing. Currently the recognised options
47522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * are FOLD_CASE_EXCLUDE_SPECIAL_I and FOLD_CASE_DEFAULT
47532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the case folding equivalent of the character, if any; otherwise the
47542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * character itself.
47552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #foldCase(String, boolean)
47562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
47572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int foldCase(int ch, int options) {
47582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UCaseProps.INSTANCE.fold(ch, options);
47592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
47602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
47612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
47621537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> The given string is mapped to its case folding equivalent according to
47632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * UnicodeData.txt and CaseFolding.txt; if any character has no case
47642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * folding equivalent, the character itself is returned.
47652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * "Full", multiple-code point case folding mappings are returned here.
47662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * For "simple" single-code point mappings use the API
47672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * foldCase(int ch, boolean defaultmapping).
47682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param str the String to be converted
47692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param options A bit set for special processing. Currently the recognised options
47702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                are FOLD_CASE_EXCLUDE_SPECIAL_I and FOLD_CASE_DEFAULT
47712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the case folding equivalent of the character, if any; otherwise the
47722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *         character itself.
47732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #foldCase(int, boolean)
47742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
47752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final String foldCase(String str, int options) {
47762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        StringBuilder result = new StringBuilder(str.length());
47772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        int c, i, length;
47782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
47792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        length = str.length();
47802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        for(i=0; i<length;) {
47812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            c=str.codePointAt(i);
47822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            i+=Character.charCount(c);
47832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            c = UCaseProps.INSTANCE.toFullFolding(c, result, options);
47842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
47852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            /* decode the result */
47862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if(c<0) {
47872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                /* (not) original code point */
47882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                c=~c;
47892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            } else if(c<=UCaseProps.MAX_STRING_LENGTH) {
47902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                /* mapping already appended to result */
47912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                continue;
47922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                /* } else { append single-code point mapping */
47932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
47942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            result.appendCodePoint(c);
47952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
47962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return result.toString();
47972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
47982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
47992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
48001537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Returns the numeric value of a Han character.
48012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
48022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>This returns the value of Han 'numeric' code points,
48032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * including those for zero, ten, hundred, thousand, ten thousand,
48042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * and hundred million.
48052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * This includes both the standard and 'checkwriting'
48062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * characters, the 'big circle' zero character, and the standard
48072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * zero character.
48082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
48092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>Note: The Unicode Standard has numeric values for more
48102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Han characters recognized by this method
48112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * (see {@link #getNumericValue(int)} and the UCD file DerivedNumericValues.txt),
48122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * and a {@link android.icu.text.NumberFormat} can be used with
48132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * a Chinese {@link android.icu.text.NumberingSystem}.
48142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
48152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point to query
48162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return value if it is a Han 'numeric character,' otherwise return -1.
48172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
48182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int getHanNumericValue(int ch)
48192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
48202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        switch(ch)
48212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        {
48222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case IDEOGRAPHIC_NUMBER_ZERO_ :
48232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_COMPLEX_ZERO_ :
48242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return 0; // Han Zero
48252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_FIRST_ :
48262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_COMPLEX_ONE_ :
48272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return 1; // Han One
48282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_SECOND_ :
48292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_COMPLEX_TWO_ :
48302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return 2; // Han Two
48312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_THIRD_ :
48322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_COMPLEX_THREE_ :
48332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return 3; // Han Three
48342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_FOURTH_ :
48352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_COMPLEX_FOUR_ :
48362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return 4; // Han Four
48372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_FIFTH_ :
48382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_COMPLEX_FIVE_ :
48392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return 5; // Han Five
48402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_SIXTH_ :
48412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_COMPLEX_SIX_ :
48422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return 6; // Han Six
48432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_SEVENTH_ :
48442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_COMPLEX_SEVEN_ :
48452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return 7; // Han Seven
48462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_EIGHTH_ :
48472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_COMPLEX_EIGHT_ :
48482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return 8; // Han Eight
48492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_NINETH_ :
48502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_COMPLEX_NINE_ :
48512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return 9; // Han Nine
48522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_TEN_ :
48532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_COMPLEX_TEN_ :
48542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return 10;
48552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_HUNDRED_ :
48562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_COMPLEX_HUNDRED_ :
48572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return 100;
48582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_THOUSAND_ :
48592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_COMPLEX_THOUSAND_ :
48602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return 1000;
48612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_TEN_THOUSAND_ :
48622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return 10000;
48632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case CJK_IDEOGRAPH_HUNDRED_MILLION_ :
48642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return 100000000;
48652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
48662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return -1; // no value
48672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
48682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
48692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
487008ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <strong>[icu]</strong> <p>Returns an iterator for character types, iterating over codepoints.
487108ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <p>Example of use:<br>
48722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <pre>
48732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * RangeValueIterator iterator = UCharacter.getTypeIterator();
48742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * RangeValueIterator.Element element = new RangeValueIterator.Element();
48752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * while (iterator.next(element)) {
48762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *     System.out.println("Codepoint \\u" +
48772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                        Integer.toHexString(element.start) +
48782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                        " to codepoint \\u" +
48792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                        Integer.toHexString(element.limit - 1) +
48802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                        " has the character type " +
48812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                        element.value);
48822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * }
48832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * </pre>
48842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return an iterator
48852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
48862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static RangeValueIterator getTypeIterator()
48872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
48882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return new UCharacterTypeIterator();
48892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
48902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
48912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final class UCharacterTypeIterator implements RangeValueIterator {
48922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        UCharacterTypeIterator() {
48932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            reset();
48942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
48952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
48962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // implements RangeValueIterator
48972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public boolean next(Element element) {
48982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if(trieIterator.hasNext() && !(range=trieIterator.next()).leadSurrogate) {
48992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                element.start=range.startCodePoint;
49002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                element.limit=range.endCodePoint+1;
49012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                element.value=range.value;
49022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                return true;
49032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            } else {
49042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                return false;
49052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
49062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
49072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
49082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // implements RangeValueIterator
49092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public void reset() {
49102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            trieIterator=UCharacterProperty.INSTANCE.m_trie_.iterator(MASK_TYPE);
49112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
49122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
49132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        private Iterator<Trie2.Range> trieIterator;
49142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        private Trie2.Range range;
49152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
49162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        private static final class MaskType implements Trie2.ValueMapper {
49172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            // Extracts the general category ("character type") from the trie value.
49182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            public int map(int value) {
49192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                return value & UCharacterProperty.TYPE_MASK;
49202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
49212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
49222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        private static final MaskType MASK_TYPE=new MaskType();
49232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
49242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
49252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
492608ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <strong>[icu]</strong> <p>Returns an iterator for character names, iterating over codepoints.
49272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>This API only gets the iterator for the modern, most up-to-date
49282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Unicode names. For older 1.0 Unicode names use get1_0NameIterator() or
492908ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * for extended names use getExtendedNameIterator().
493008ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <p>Example of use:<br>
49312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <pre>
49322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * ValueIterator iterator = UCharacter.getNameIterator();
49332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * ValueIterator.Element element = new ValueIterator.Element();
49342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * while (iterator.next(element)) {
49352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *     System.out.println("Codepoint \\u" +
49362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                        Integer.toHexString(element.codepoint) +
49372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                        " has the name " + (String)element.value);
49382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * }
49392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * </pre>
49402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>The maximal range which the name iterator iterates is from
494108ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * UCharacter.MIN_VALUE to UCharacter.MAX_VALUE.
49422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return an iterator
49432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
49442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static ValueIterator getNameIterator(){
49452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return new UCharacterNameIterator(UCharacterName.INSTANCE,
49462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                UCharacterNameChoice.UNICODE_CHAR_NAME);
49472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
49482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
49492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
49501537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Returns an empty iterator.
495108ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <p>Used to return an iterator for the older 1.0 Unicode character names, iterating over codepoints.
49522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return an empty iterator
49532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @deprecated ICU 49
49542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #getName1_0(int)
495593cf604e9dd0525f15bc0a7450b2a35f3884c298Neil Fuller     * @hide original deprecated declaration
49562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
49572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    @Deprecated
49582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static ValueIterator getName1_0Iterator(){
49592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return new DummyValueIterator();
49602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
49612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
49622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final class DummyValueIterator implements ValueIterator {
49632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public boolean next(Element element) { return false; }
49642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public void reset() {}
49652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public void setRange(int start, int limit) {}
49662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
49672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
49682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
496908ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <strong>[icu]</strong> <p>Returns an iterator for character names, iterating over codepoints.
49702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>This API only gets the iterator for the extended names.
49712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * For modern, most up-to-date Unicode names use getNameIterator() or
497208ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * for older 1.0 Unicode names use get1_0NameIterator().
497308ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <p>Example of use:<br>
49742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <pre>
49752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * ValueIterator iterator = UCharacter.getExtendedNameIterator();
49762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * ValueIterator.Element element = new ValueIterator.Element();
49772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * while (iterator.next(element)) {
49782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *     System.out.println("Codepoint \\u" +
49792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                        Integer.toHexString(element.codepoint) +
49802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                        " has the name " + (String)element.value);
49812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * }
49822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * </pre>
49832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>The maximal range which the name iterator iterates is from
49842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return an iterator
49852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
49862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static ValueIterator getExtendedNameIterator(){
49872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return new UCharacterNameIterator(UCharacterName.INSTANCE,
49882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                UCharacterNameChoice.EXTENDED_CHAR_NAME);
49892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
49902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
49912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
499208ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <strong>[icu]</strong> Returns the "age" of the code point.
49932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>The "age" is the Unicode version when the code point was first
49942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * designated (as a non-character or for Private Use) or assigned a
49952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * character.
49962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>This can be useful to avoid emitting code points to receiving
499708ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * processes that do not accept newer characters.
499808ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <p>The data is from the UCD file DerivedAge.txt.
49992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch The code point.
50002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the Unicode version number
50012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
50022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static VersionInfo getAge(int ch)
50032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
50042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (ch < MIN_VALUE || ch > MAX_VALUE) {
50052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            throw new IllegalArgumentException("Codepoint out of bounds");
50062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
50072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UCharacterProperty.INSTANCE.getAge(ch);
50082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
50092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
50102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
501108ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <strong>[icu]</strong> <p>Check a binary Unicode property for a code point.
50122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>Unicode, especially in version 3.2, defines many more properties
501308ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * than the original set in UnicodeData.txt.
50142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>This API is intended to reflect Unicode properties as defined in
50152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * the Unicode Character Database (UCD) and Unicode Technical Reports
501608ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * (UTR).
50172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>For details about the properties see
501808ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <a href=http://www.unicode.org/>http://www.unicode.org/</a>.
50192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>For names of Unicode properties see the UCD file
502008ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * PropertyAliases.txt.
502108ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <p>This API does not check the validity of the codepoint.
50222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>Important: If ICU is built with UCD files from Unicode versions
50232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * below 3.2, then properties marked with "new" are not or
502408ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * not fully available.
50252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point to test.
50261fba789ac68efdd9120a7373f49daef42833e674Neil Fuller     * @param property selector constant from android.icu.lang.UProperty,
50272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *        identifies which binary property to check.
50282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true or false according to the binary Unicode property value
50292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *         for ch. Also false if property is out of bounds or if the
50302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *         Unicode version does not have data for the property at all, or
50312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *         not for this code point.
50322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see android.icu.lang.UProperty
50332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
50342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean hasBinaryProperty(int ch, int property)
50352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
50362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UCharacterProperty.INSTANCE.hasBinaryProperty(ch, property);
50372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
50382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
50392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
504008ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <strong>[icu]</strong> <p>Check if a code point has the Alphabetic Unicode property.
504108ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <p>Same as UCharacter.hasBinaryProperty(ch, UProperty.ALPHABETIC).
504208ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <p>Different from UCharacter.isLetter(ch)!
50432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch codepoint to be tested
50442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
50452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isUAlphabetic(int ch)
50462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
50472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return hasBinaryProperty(ch, UProperty.ALPHABETIC);
50482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
50492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
50502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
505108ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <strong>[icu]</strong> <p>Check if a code point has the Lowercase Unicode property.
505208ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <p>Same as UCharacter.hasBinaryProperty(ch, UProperty.LOWERCASE).
505308ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <p>This is different from UCharacter.isLowerCase(ch)!
50542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch codepoint to be tested
50552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
50562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isULowercase(int ch)
50572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
50582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return hasBinaryProperty(ch, UProperty.LOWERCASE);
50592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
50602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
50612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
506208ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <strong>[icu]</strong> <p>Check if a code point has the Uppercase Unicode property.
506308ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <p>Same as UCharacter.hasBinaryProperty(ch, UProperty.UPPERCASE).
506408ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <p>This is different from UCharacter.isUpperCase(ch)!
50652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch codepoint to be tested
50662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
50672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isUUppercase(int ch)
50682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
50692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return hasBinaryProperty(ch, UProperty.UPPERCASE);
50702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
50712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
50722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
507308ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <strong>[icu]</strong> <p>Check if a code point has the White_Space Unicode property.
507408ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * <p>Same as UCharacter.hasBinaryProperty(ch, UProperty.WHITE_SPACE).
50752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>This is different from both UCharacter.isSpace(ch) and
507608ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * UCharacter.isWhitespace(ch)!
50772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch codepoint to be tested
50782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
50792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isUWhiteSpace(int ch)
50802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
50812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return hasBinaryProperty(ch, UProperty.WHITE_SPACE);
50822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
50832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
50842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
50851537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> <p>Returns the property value for an Unicode property type of a code point.
508608ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * Also returns binary and mask property values.
50872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>Unicode, especially in version 3.2, defines many more properties than
508808ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * the original set in UnicodeData.txt.
50892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>The properties APIs are intended to reflect Unicode properties as
50902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * defined in the Unicode Character Database (UCD) and Unicode Technical
50912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Reports (UTR). For details about the properties see
509208ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     * http://www.unicode.org/.
50932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <p>For names of Unicode properties see the UCD file PropertyAliases.txt.
509408ae9f2909b2ec37f755dac4372553437e9d7cf6Paul Duffin     *
50952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <pre>
50962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Sample usage:
50972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * int ea = UCharacter.getIntPropertyValue(c, UProperty.EAST_ASIAN_WIDTH);
50982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * int ideo = UCharacter.getIntPropertyValue(c, UProperty.IDEOGRAPHIC);
50992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * boolean b = (ideo == 1) ? true : false;
51002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * </pre>
51012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch code point to test.
51022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param type UProperty selector constant, identifies which binary
51032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *        property to check. Must be
51042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *        UProperty.BINARY_START &lt;= type &lt; UProperty.BINARY_LIMIT or
51052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *        UProperty.INT_START &lt;= type &lt; UProperty.INT_LIMIT or
51062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *        UProperty.MASK_START &lt;= type &lt; UProperty.MASK_LIMIT.
51072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return numeric value that is directly the property value or,
51082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *         for enumerated properties, corresponds to the numeric value of
51092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *         the enumerated constant of the respective property value
51102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *         enumeration type (cast to enum type if necessary).
51112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *         Returns 0 or 1 (for false / true) for binary Unicode properties.
51122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *         Returns a bit-mask for mask properties.
51132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *         Returns 0 if 'type' is out of bounds or if the Unicode version
51142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *         does not have data for the property at all, or not for this code
51152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *         point.
51162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see UProperty
51172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #hasBinaryProperty
51182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #getIntPropertyMinValue
51192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #getIntPropertyMaxValue
51202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #getUnicodeVersion
51212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
51222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int getIntPropertyValue(int ch, int type)
51232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
51242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UCharacterProperty.INSTANCE.getIntPropertyValue(ch, type);
51252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
51262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
51271537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Returns a string version of the property value.
51282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param propertyEnum The property enum value.
51292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param codepoint The codepoint value.
51302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param nameChoice The choice of the name.
51312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return value as string
51322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @deprecated This API is ICU internal only.
513393cf604e9dd0525f15bc0a7450b2a35f3884c298Neil Fuller     * @hide original deprecated declaration
5134836e6b40a94ec3fb7545a76cb072960442b7eee9Neil Fuller     * @hide draft / provisional / internal are hidden on Android
51352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
51362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    @Deprecated
51372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    ///CLOVER:OFF
51382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static String getStringPropertyValue(int propertyEnum, int codepoint, int nameChoice) {
51392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if ((propertyEnum >= UProperty.BINARY_START && propertyEnum < UProperty.BINARY_LIMIT) ||
51402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                (propertyEnum >= UProperty.INT_START && propertyEnum < UProperty.INT_LIMIT)) {
51412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return getPropertyValueName(propertyEnum, getIntPropertyValue(codepoint, propertyEnum),
51422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    nameChoice);
51432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
51442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (propertyEnum == UProperty.NUMERIC_VALUE) {
51452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return String.valueOf(getUnicodeNumericValue(codepoint));
51462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
51472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // otherwise must be string property
51482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        switch (propertyEnum) {
51492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case UProperty.AGE: return getAge(codepoint).toString();
51502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case UProperty.ISO_COMMENT: return getISOComment(codepoint);
51512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case UProperty.BIDI_MIRRORING_GLYPH: return toString(getMirror(codepoint));
51522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case UProperty.CASE_FOLDING: return toString(foldCase(codepoint, true));
51532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case UProperty.LOWERCASE_MAPPING: return toString(toLowerCase(codepoint));
51542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case UProperty.NAME: return getName(codepoint);
51552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case UProperty.SIMPLE_CASE_FOLDING: return toString(foldCase(codepoint, true));
51562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case UProperty.SIMPLE_LOWERCASE_MAPPING: return toString(toLowerCase(codepoint));
51572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case UProperty.SIMPLE_TITLECASE_MAPPING: return toString(toTitleCase(codepoint));
51582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case UProperty.SIMPLE_UPPERCASE_MAPPING: return toString(toUpperCase(codepoint));
51592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case UProperty.TITLECASE_MAPPING: return toString(toTitleCase(codepoint));
51602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case UProperty.UNICODE_1_NAME: return getName1_0(codepoint);
51612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case UProperty.UPPERCASE_MAPPING: return toString(toUpperCase(codepoint));
51622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
51632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        throw new IllegalArgumentException("Illegal Property Enum");
51642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
51652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    ///CLOVER:ON
51662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
51672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
51681537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Returns the minimum value for an integer/binary Unicode property type.
51692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Can be used together with UCharacter.getIntPropertyMaxValue(int)
51701fba789ac68efdd9120a7373f49daef42833e674Neil Fuller     * to allocate arrays of android.icu.text.UnicodeSet or similar.
51712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param type UProperty selector constant, identifies which binary
51722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *        property to check. Must be
51732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *        UProperty.BINARY_START &lt;= type &lt; UProperty.BINARY_LIMIT or
51742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *        UProperty.INT_START &lt;= type &lt; UProperty.INT_LIMIT.
51752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return Minimum value returned by UCharacter.getIntPropertyValue(int)
51762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *         for a Unicode property. 0 if the property
51772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *         selector 'type' is out of range.
51782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see UProperty
51792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #hasBinaryProperty
51802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #getUnicodeVersion
51812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #getIntPropertyMaxValue
51822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #getIntPropertyValue
51832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
51842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int getIntPropertyMinValue(int type){
51852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
51862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return 0; // undefined; and: all other properties have a minimum value of 0
51872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
51882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
51892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
51902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
51911537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu]</strong> Returns the maximum value for an integer/binary Unicode property.
51922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Can be used together with UCharacter.getIntPropertyMinValue(int)
51931fba789ac68efdd9120a7373f49daef42833e674Neil Fuller     * to allocate arrays of android.icu.text.UnicodeSet or similar.
51942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Examples for min/max values (for Unicode 3.2):
51952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <ul>
51962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> UProperty.BIDI_CLASS:    0/18
51972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * (UCharacterDirection.LEFT_TO_RIGHT/UCharacterDirection.BOUNDARY_NEUTRAL)
51982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> UProperty.SCRIPT:        0/45 (UScript.COMMON/UScript.TAGBANWA)
51992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * <li> UProperty.IDEOGRAPHIC:   0/1  (false/true)
52002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * </ul>
52012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * For undefined UProperty constant values, min/max values will be 0/-1.
52022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param type UProperty selector constant, identifies which binary
52032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *        property to check. Must be
52042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *        UProperty.BINARY_START &lt;= type &lt; UProperty.BINARY_LIMIT or
52052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *        UProperty.INT_START &lt;= type &lt; UProperty.INT_LIMIT.
52062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return Maximum value returned by u_getIntPropertyValue for a Unicode
52072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *         property. &lt;= 0 if the property selector 'type' is out of range.
52082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see UProperty
52092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #hasBinaryProperty
52102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #getUnicodeVersion
52112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #getIntPropertyMaxValue
52122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #getIntPropertyValue
52132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
52142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int getIntPropertyMaxValue(int type)
52152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
52162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return UCharacterProperty.INSTANCE.getIntPropertyMaxValue(type);
52172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
52182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
52192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
52202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Provide the java.lang.Character forDigit API, for convenience.
52212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
52222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static char forDigit(int digit, int radix) {
52232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return java.lang.Character.forDigit(digit, radix);
52242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
52252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
52262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    // JDK 1.5 API coverage
52272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
52282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
52292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Constant U+D800, same as {@link Character#MIN_HIGH_SURROGATE}.
52302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
52312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final char MIN_HIGH_SURROGATE = Character.MIN_HIGH_SURROGATE;
52322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
52332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
52342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Constant U+DBFF, same as {@link Character#MAX_HIGH_SURROGATE}.
52352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
52362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final char MAX_HIGH_SURROGATE = Character.MAX_HIGH_SURROGATE;
52372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
52382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
52392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Constant U+DC00, same as {@link Character#MIN_LOW_SURROGATE}.
52402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
52412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final char MIN_LOW_SURROGATE = Character.MIN_LOW_SURROGATE;
52422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
52432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
52442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Constant U+DFFF, same as {@link Character#MAX_LOW_SURROGATE}.
52452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
52462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final char MAX_LOW_SURROGATE = Character.MAX_LOW_SURROGATE;
52472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
52482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
52492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Constant U+D800, same as {@link Character#MIN_SURROGATE}.
52502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
52512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final char MIN_SURROGATE = Character.MIN_SURROGATE;
52522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
52532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
52542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Constant U+DFFF, same as {@link Character#MAX_SURROGATE}.
52552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
52562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final char MAX_SURROGATE = Character.MAX_SURROGATE;
52572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
52582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
52592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Constant U+10000, same as {@link Character#MIN_SUPPLEMENTARY_CODE_POINT}.
52602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
52612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final int MIN_SUPPLEMENTARY_CODE_POINT = Character.MIN_SUPPLEMENTARY_CODE_POINT;
52622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
52632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
52642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Constant U+10FFFF, same as {@link Character#MAX_CODE_POINT}.
52652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
52662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final int MAX_CODE_POINT = Character.MAX_CODE_POINT;
52672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
52682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
52692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Constant U+0000, same as {@link Character#MIN_CODE_POINT}.
52702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
52712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final int MIN_CODE_POINT = Character.MIN_CODE_POINT;
52722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
52732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
52747241d93e30f4c7c527c019cd6ca3a791ca22d9b2Fredrik Roubert     * Equivalent to {@link Character#isValidCodePoint}.
52757241d93e30f4c7c527c019cd6ca3a791ca22d9b2Fredrik Roubert     *
52762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param cp the code point to check
52772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if cp is a valid code point
52782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
52792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final boolean isValidCodePoint(int cp) {
52802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return cp >= 0 && cp <= MAX_CODE_POINT;
52812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
52822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
52832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
52842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Same as {@link Character#isSupplementaryCodePoint}.
52852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
52862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param cp the code point to check
52872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if cp is a supplementary code point
52882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
52892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final boolean isSupplementaryCodePoint(int cp) {
52902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return Character.isSupplementaryCodePoint(cp);
52912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
52922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
52932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
52942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Same as {@link Character#isHighSurrogate}.
52952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
52962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch the char to check
52972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if ch is a high (lead) surrogate
52982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
52992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isHighSurrogate(char ch) {
53002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return Character.isHighSurrogate(ch);
53012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
53022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
53032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
53042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Same as {@link Character#isLowSurrogate}.
53052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
53062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param ch the char to check
53072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if ch is a low (trail) surrogate
53082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
53092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static boolean isLowSurrogate(char ch) {
53102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return Character.isLowSurrogate(ch);
53112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
53122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
53132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
53142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Same as {@link Character#isSurrogatePair}.
53152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
53162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param high the high (lead) char
53172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param low the low (trail) char
53182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return true if high, low form a surrogate pair
53192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
53202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final boolean isSurrogatePair(char high, char low) {
53212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return Character.isSurrogatePair(high, low);
53222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
53232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
53242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
53252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Same as {@link Character#charCount}.
53262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Returns the number of chars needed to represent the code point (1 or 2).
53272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * This does not check the code point for validity.
53282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
53292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param cp the code point to check
53302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the number of chars needed to represent the code point
53312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
53322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int charCount(int cp) {
53332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return Character.charCount(cp);
53342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
53352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
53362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
53372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Same as {@link Character#toCodePoint}.
53382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Returns the code point represented by the two surrogate code units.
53392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * This does not check the surrogate pair for validity.
53402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
53412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param high the high (lead) surrogate
53422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param low the low (trail) surrogate
53432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the code point formed by the surrogate pair
53442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
53452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final int toCodePoint(char high, char low) {
53462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return Character.toCodePoint(high, low);
53472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
53482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
53492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
53502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Same as {@link Character#codePointAt(CharSequence, int)}.
53512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Returns the code point at index.
53522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * This examines only the characters at index and index+1.
53532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
53542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param seq the characters to check
53552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param index the index of the first or only char forming the code point
53562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the code point at the index
53572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
53582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final int codePointAt(CharSequence seq, int index) {
53592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        char c1 = seq.charAt(index++);
53602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (isHighSurrogate(c1)) {
53612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if (index < seq.length()) {
53622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                char c2 = seq.charAt(index);
53632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                if (isLowSurrogate(c2)) {
53642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    return toCodePoint(c1, c2);
53652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                }
53662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
53672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
53682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return c1;
53692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
53702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
53712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
53722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Same as {@link Character#codePointAt(char[], int)}.
53732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Returns the code point at index.
53742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * This examines only the characters at index and index+1.
53752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
53762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param text the characters to check
53772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param index the index of the first or only char forming the code point
53782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the code point at the index
53792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
53802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final int codePointAt(char[] text, int index) {
53812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        char c1 = text[index++];
53822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (isHighSurrogate(c1)) {
53832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if (index < text.length) {
53842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                char c2 = text[index];
53852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                if (isLowSurrogate(c2)) {
53862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    return toCodePoint(c1, c2);
53872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                }
53882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
53892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
53902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return c1;
53912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
53922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
53932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
53942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Same as {@link Character#codePointAt(char[], int, int)}.
53952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Returns the code point at index.
53962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * This examines only the characters at index and index+1.
53972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
53982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param text the characters to check
53992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param index the index of the first or only char forming the code point
54002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param limit the limit of the valid text
54012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the code point at the index
54022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
54032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final int codePointAt(char[] text, int index, int limit) {
54042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (index >= limit || limit > text.length) {
54052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            throw new IndexOutOfBoundsException();
54062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
54072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        char c1 = text[index++];
54082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (isHighSurrogate(c1)) {
54092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if (index < limit) {
54102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                char c2 = text[index];
54112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                if (isLowSurrogate(c2)) {
54122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    return toCodePoint(c1, c2);
54132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                }
54142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
54152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
54162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return c1;
54172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
54182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
54192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
54202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Same as {@link Character#codePointBefore(CharSequence, int)}.
54212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Return the code point before index.
54222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * This examines only the characters at index-1 and index-2.
54232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
54242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param seq the characters to check
54252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param index the index after the last or only char forming the code point
54262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the code point before the index
54272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
54282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final int codePointBefore(CharSequence seq, int index) {
54292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        char c2 = seq.charAt(--index);
54302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (isLowSurrogate(c2)) {
54312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if (index > 0) {
54322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                char c1 = seq.charAt(--index);
54332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                if (isHighSurrogate(c1)) {
54342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    return toCodePoint(c1, c2);
54352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                }
54362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
54372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
54382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return c2;
54392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
54402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
54412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
54422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Same as {@link Character#codePointBefore(char[], int)}.
54432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Returns the code point before index.
54442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * This examines only the characters at index-1 and index-2.
54452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
54462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param text the characters to check
54472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param index the index after the last or only char forming the code point
54482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the code point before the index
54492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
54502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final int codePointBefore(char[] text, int index) {
54512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        char c2 = text[--index];
54522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (isLowSurrogate(c2)) {
54532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if (index > 0) {
54542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                char c1 = text[--index];
54552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                if (isHighSurrogate(c1)) {
54562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    return toCodePoint(c1, c2);
54572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                }
54582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
54592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
54602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return c2;
54612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
54622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
54632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
54642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Same as {@link Character#codePointBefore(char[], int, int)}.
54652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Return the code point before index.
54662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * This examines only the characters at index-1 and index-2.
54672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
54682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param text the characters to check
54692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param index the index after the last or only char forming the code point
54702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param limit the start of the valid text
54712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the code point before the index
54722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
54732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final int codePointBefore(char[] text, int index, int limit) {
54742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (index <= limit || limit < 0) {
54752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            throw new IndexOutOfBoundsException();
54762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
54772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        char c2 = text[--index];
54782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (isLowSurrogate(c2)) {
54792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if (index > limit) {
54802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                char c1 = text[--index];
54812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                if (isHighSurrogate(c1)) {
54822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    return toCodePoint(c1, c2);
54832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                }
54842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
54852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
54862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return c2;
54872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
54882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
54892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
54902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Same as {@link Character#toChars(int, char[], int)}.
54912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Writes the chars representing the
54922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * code point into the destination at the given index.
54932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
54942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param cp the code point to convert
54952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param dst the destination array into which to put the char(s) representing the code point
54962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param dstIndex the index at which to put the first (or only) char
54972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the count of the number of chars written (1 or 2)
54982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @throws IllegalArgumentException if cp is not a valid code point
54992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
55002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final int toChars(int cp, char[] dst, int dstIndex) {
55012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return Character.toChars(cp, dst, dstIndex);
55022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
55032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
55042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
55052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Same as {@link Character#toChars(int)}.
55062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Returns a char array representing the code point.
55072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
55082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param cp the code point to convert
55092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return an array containing the char(s) representing the code point
55102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @throws IllegalArgumentException if cp is not a valid code point
55112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
55122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static final char[] toChars(int cp) {
55132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return Character.toChars(cp);
55142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
55152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
55162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
55177241d93e30f4c7c527c019cd6ca3a791ca22d9b2Fredrik Roubert     * Equivalent to the {@link Character#getDirectionality(char)} method, for
55187241d93e30f4c7c527c019cd6ca3a791ca22d9b2Fredrik Roubert     * convenience. Returns a byte representing the directionality of the
55197241d93e30f4c7c527c019cd6ca3a791ca22d9b2Fredrik Roubert     * character.
55202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
55217241d93e30f4c7c527c019cd6ca3a791ca22d9b2Fredrik Roubert     * <strong>[icu] Note:</strong> Unlike {@link Character#getDirectionality(char)}, this returns
55227241d93e30f4c7c527c019cd6ca3a791ca22d9b2Fredrik Roubert     * DIRECTIONALITY_LEFT_TO_RIGHT for undefined or out-of-bounds characters.
55232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
55241537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller     * <strong>[icu] Note:</strong> The return value must be tested using the constants defined in {@link
55252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * UCharacterDirection} and its interface {@link
55262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * UCharacterEnums.ECharacterDirection} since the values are different from the ones
55272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * defined by <code>java.lang.Character</code>.
55282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param cp the code point to check
55292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the directionality of the code point
55302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #getDirection
55312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
55322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static byte getDirectionality(int cp)
55332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
55342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return (byte)getDirection(cp);
55352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
55362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
55372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
55387241d93e30f4c7c527c019cd6ca3a791ca22d9b2Fredrik Roubert     * Equivalent to the {@link Character#codePointCount(CharSequence, int, int)}
55397241d93e30f4c7c527c019cd6ca3a791ca22d9b2Fredrik Roubert     * method, for convenience.  Counts the number of code points in the range
55407241d93e30f4c7c527c019cd6ca3a791ca22d9b2Fredrik Roubert     * of text.
55412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param text the characters to check
55422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param start the start of the range
55432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param limit the limit of the range
55442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the number of code points in the range
55452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
55462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int codePointCount(CharSequence text, int start, int limit) {
55472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (start < 0 || limit < start || limit > text.length()) {
55482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            throw new IndexOutOfBoundsException("start (" + start +
55492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    ") or limit (" + limit +
55502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    ") invalid or out of range 0, " + text.length());
55512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
55522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
55532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        int len = limit - start;
55542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        while (limit > start) {
55552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            char ch = text.charAt(--limit);
55562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            while (ch >= MIN_LOW_SURROGATE && ch <= MAX_LOW_SURROGATE && limit > start) {
55572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                ch = text.charAt(--limit);
55582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                if (ch >= MIN_HIGH_SURROGATE && ch <= MAX_HIGH_SURROGATE) {
55592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    --len;
55602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    break;
55612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                }
55622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
55632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
55642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return len;
55652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
55662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
55672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
55687241d93e30f4c7c527c019cd6ca3a791ca22d9b2Fredrik Roubert     * Equivalent to the {@link Character#codePointCount(char[], int, int)} method, for
55697241d93e30f4c7c527c019cd6ca3a791ca22d9b2Fredrik Roubert     * convenience. Counts the number of code points in the range of text.
55702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param text the characters to check
55712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param start the start of the range
55722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param limit the limit of the range
55732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the number of code points in the range
55742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
55752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int codePointCount(char[] text, int start, int limit) {
55762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (start < 0 || limit < start || limit > text.length) {
55772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            throw new IndexOutOfBoundsException("start (" + start +
55782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    ") or limit (" + limit +
55792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    ") invalid or out of range 0, " + text.length);
55802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
55812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
55822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        int len = limit - start;
55832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        while (limit > start) {
55842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            char ch = text[--limit];
55852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            while (ch >= MIN_LOW_SURROGATE && ch <= MAX_LOW_SURROGATE && limit > start) {
55862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                ch = text[--limit];
55872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                if (ch >= MIN_HIGH_SURROGATE && ch <= MAX_HIGH_SURROGATE) {
55882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    --len;
55892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    break;
55902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                }
55912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
55922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
55932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return len;
55942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
55952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
55962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
55977241d93e30f4c7c527c019cd6ca3a791ca22d9b2Fredrik Roubert     * Equivalent to the {@link Character#offsetByCodePoints(CharSequence, int, int)}
55987241d93e30f4c7c527c019cd6ca3a791ca22d9b2Fredrik Roubert     * method, for convenience.  Adjusts the char index by a code point offset.
55992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param text the characters to check
56002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param index the index to adjust
56012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param codePointOffset the number of code points by which to offset the index
56022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the adjusted index
56032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
56042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int offsetByCodePoints(CharSequence text, int index, int codePointOffset) {
56052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (index < 0 || index > text.length()) {
56062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            throw new IndexOutOfBoundsException("index ( " + index +
56072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    ") out of range 0, " + text.length());
56082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
56092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
56102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (codePointOffset < 0) {
56112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            while (++codePointOffset <= 0) {
56122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                char ch = text.charAt(--index);
56132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                while (ch >= MIN_LOW_SURROGATE && ch <= MAX_LOW_SURROGATE && index > 0) {
56142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    ch = text.charAt(--index);
56152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    if (ch < MIN_HIGH_SURROGATE || ch > MAX_HIGH_SURROGATE) {
56162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        if (++codePointOffset > 0) {
56172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                            return index+1;
56182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        }
56192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    }
56202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                }
56212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
56222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        } else {
56232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            int limit = text.length();
56242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            while (--codePointOffset >= 0) {
56252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                char ch = text.charAt(index++);
56262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                while (ch >= MIN_HIGH_SURROGATE && ch <= MAX_HIGH_SURROGATE && index < limit) {
56272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    ch = text.charAt(index++);
56282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    if (ch < MIN_LOW_SURROGATE || ch > MAX_LOW_SURROGATE) {
56292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        if (--codePointOffset < 0) {
56302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                            return index-1;
56312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        }
56322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    }
56332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                }
56342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
56352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
56362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
56372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return index;
56382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
56392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
56402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
56417241d93e30f4c7c527c019cd6ca3a791ca22d9b2Fredrik Roubert     * Equivalent to the
56427241d93e30f4c7c527c019cd6ca3a791ca22d9b2Fredrik Roubert     * {@link Character#offsetByCodePoints(char[], int, int, int, int)}
56437241d93e30f4c7c527c019cd6ca3a791ca22d9b2Fredrik Roubert     * method, for convenience.  Adjusts the char index by a code point offset.
56442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param text the characters to check
56452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param start the start of the range to check
56462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param count the length of the range to check
56472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param index the index to adjust
56482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param codePointOffset the number of code points by which to offset the index
56492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the adjusted index
56502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
56512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static int offsetByCodePoints(char[] text, int start, int count, int index,
56522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            int codePointOffset) {
56532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        int limit = start + count;
56542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (start < 0 || limit < start || limit > text.length || index < start || index > limit) {
56552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            throw new IndexOutOfBoundsException("index ( " + index +
56562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    ") out of range " + start +
56572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    ", " + limit +
56582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    " in array 0, " + text.length);
56592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
56602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
56612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (codePointOffset < 0) {
56622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            while (++codePointOffset <= 0) {
56632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                char ch = text[--index];
56642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                if (index < start) {
56652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    throw new IndexOutOfBoundsException("index ( " + index +
56662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                            ") < start (" + start +
56672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                            ")");
56682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                }
56692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                while (ch >= MIN_LOW_SURROGATE && ch <= MAX_LOW_SURROGATE && index > start) {
56702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    ch = text[--index];
56712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    if (ch < MIN_HIGH_SURROGATE || ch > MAX_HIGH_SURROGATE) {
56722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        if (++codePointOffset > 0) {
56732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                            return index+1;
56742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        }
56752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    }
56762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                }
56772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
56782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        } else {
56792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            while (--codePointOffset >= 0) {
56802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                char ch = text[index++];
56812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                if (index > limit) {
56822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    throw new IndexOutOfBoundsException("index ( " + index +
56832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                            ") > limit (" + limit +
56842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                            ")");
56852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                }
56862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                while (ch >= MIN_HIGH_SURROGATE && ch <= MAX_HIGH_SURROGATE && index < limit) {
56872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    ch = text[index++];
56882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    if (ch < MIN_LOW_SURROGATE || ch > MAX_LOW_SURROGATE) {
56892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        if (--codePointOffset < 0) {
56902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                            return index-1;
56912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        }
56922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    }
56932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                }
56942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
56952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
56962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
56972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return index;
56982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
56992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
57002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    // private variables -------------------------------------------------
57012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
57022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
57032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * To get the last character out from a data type
57042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
57052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int LAST_CHAR_MASK_ = 0xFFFF;
57062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
57072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    //    /**
57082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    //     * To get the last byte out from a data type
57092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    //     */
57102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    //    private static final int LAST_BYTE_MASK_ = 0xFF;
57112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    //
57122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    //    /**
57132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    //     * Shift 16 bits
57142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    //     */
57152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    //    private static final int SHIFT_16_ = 16;
57162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    //
57172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    //    /**
57182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    //     * Shift 24 bits
57192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    //     */
57202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    //    private static final int SHIFT_24_ = 24;
57212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    //
57222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    //    /**
57232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    //     * Decimal radix
57242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    //     */
57252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    //    private static final int DECIMAL_RADIX_ = 10;
57262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
57272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
57282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * No break space code point
57292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
57302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int NO_BREAK_SPACE_ = 0xA0;
57312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
57322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
57332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Figure space code point
57342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
57352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int FIGURE_SPACE_ = 0x2007;
57362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
57372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
57382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Narrow no break space code point
57392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
57402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int NARROW_NO_BREAK_SPACE_ = 0x202F;
57412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
57422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
57432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Ideographic number zero code point
57442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
57452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int IDEOGRAPHIC_NUMBER_ZERO_ = 0x3007;
57462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
57472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
57482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * CJK Ideograph, First code point
57492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
57502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_FIRST_ = 0x4e00;
57512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
57522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
57532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * CJK Ideograph, Second code point
57542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
57552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_SECOND_ = 0x4e8c;
57562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
57572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
57582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * CJK Ideograph, Third code point
57592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
57602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_THIRD_ = 0x4e09;
57612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
57622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
57632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * CJK Ideograph, Fourth code point
57642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
57652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_FOURTH_ = 0x56db;
57662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
57672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
57682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * CJK Ideograph, FIFTH code point
57692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
57702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_FIFTH_ = 0x4e94;
57712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
57722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
57732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * CJK Ideograph, Sixth code point
57742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
57752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_SIXTH_ = 0x516d;
57762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
57772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
57782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * CJK Ideograph, Seventh code point
57792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
57802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_SEVENTH_ = 0x4e03;
57812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
57822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
57832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * CJK Ideograph, Eighth code point
57842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
57852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_EIGHTH_ = 0x516b;
57862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
57872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
57882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * CJK Ideograph, Nineth code point
57892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
57902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_NINETH_ = 0x4e5d;
57912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
57922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
57932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Application Program command code point
57942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
57952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int APPLICATION_PROGRAM_COMMAND_ = 0x009F;
57962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
57972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
57982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Unit separator code point
57992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
58002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int UNIT_SEPARATOR_ = 0x001F;
58012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
58022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
58032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Delete code point
58042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
58052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int DELETE_ = 0x007F;
58062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
58072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
58082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Han digit characters
58092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
58102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_COMPLEX_ZERO_     = 0x96f6;
58112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_COMPLEX_ONE_      = 0x58f9;
58122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_COMPLEX_TWO_      = 0x8cb3;
58132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_COMPLEX_THREE_    = 0x53c3;
58142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_COMPLEX_FOUR_     = 0x8086;
58152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_COMPLEX_FIVE_     = 0x4f0d;
58162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_COMPLEX_SIX_      = 0x9678;
58172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_COMPLEX_SEVEN_    = 0x67d2;
58182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_COMPLEX_EIGHT_    = 0x634c;
58192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_COMPLEX_NINE_     = 0x7396;
58202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_TEN_              = 0x5341;
58212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_COMPLEX_TEN_      = 0x62fe;
58222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_HUNDRED_          = 0x767e;
58232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_COMPLEX_HUNDRED_  = 0x4f70;
58242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_THOUSAND_         = 0x5343;
58252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_COMPLEX_THOUSAND_ = 0x4edf;
58262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_TEN_THOUSAND_     = 0x824c;
58272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int CJK_IDEOGRAPH_HUNDRED_MILLION_  = 0x5104;
58282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
58292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    // private constructor -----------------------------------------------
58302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    ///CLOVER:OFF
58312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
58322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Private constructor to prevent instantiation
58332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
58342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private UCharacter()
58352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
58362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
58372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    ///CLOVER:ON
58382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller}
5839