12d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert// © 2016 and later: Unicode, Inc. and others.
22d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert// License & terms of use: http://www.unicode.org/copyright.html#License
37935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert/**
47935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert *******************************************************************************
5bee65486a185907111f3be60992433e133ec0e32Scott Russell * Copyright (C) 2001-2016 International Business Machines Corporation and
67935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * others. All Rights Reserved.
77935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert *******************************************************************************
87935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */
97935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertpackage com.ibm.icu.lang;
117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport java.util.BitSet;
137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport java.util.Locale;
147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.impl.UCharacterProperty;
167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.util.ULocale;
177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert/**
19f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * Constants for ISO 15924 script codes, and related functions.
20f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert *
21f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * <p>The current set of script code constants supports at least all scripts
22f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * that are encoded in the version of Unicode which ICU currently supports.
23f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * The names of the constants are usually derived from the
24f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * Unicode script property value aliases.
25f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * See UAX #24 Unicode Script Property (http://www.unicode.org/reports/tr24/)
26f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * and http://www.unicode.org/Public/UCD/latest/ucd/PropertyValueAliases.txt .
27f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert *
282d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert * <p>In addition, constants for many ISO 15924 script codes
29f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * are included, for use with language tags, CLDR data, and similar.
30f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * Some of those codes are not used in the Unicode Character Database (UCD).
31f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * For example, there are no characters that have a UCD script property value of
32f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * Hans or Hant. All Han ideographs have the Hani script property value in Unicode.
33f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert *
342d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert * <p>Private-use codes Qaaa..Qabx are not included, except as used in the UCD or in CLDR.
35f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert *
36f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * <p>Starting with ICU 55, script codes are only added when their scripts
37f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * have been or will certainly be encoded in Unicode,
38f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * and have been assigned Unicode script property value aliases,
39f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * to ensure that their script names are stable and match the names of the constants.
40f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * Script codes like Latf and Aran that are not subject to separate encoding
41f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert * may be added at any time.
42f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert *
437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @stable ICU 2.4
447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */
457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertpublic final class UScript {
467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Invalid code
487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int INVALID_CODE = -1;
517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Common
537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int COMMON       =  0;  /* Zyyy */
567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Inherited
587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int INHERITED    =  1;  /* Zinh */ /* "Code for inherited script", for non-spacing combining marks; also Qaai */
617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Arabic
637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int ARABIC       =  2;  /* Arab */
667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Armenian
687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int ARMENIAN     =  3;  /* Armn */
717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Bengali
737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int BENGALI      =  4;  /* Beng */
767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Bopomofo
787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int BOPOMOFO     =  5;  /* Bopo */
817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Cherokee
837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int CHEROKEE     =  6;  /* Cher */
867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Coptic
887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int COPTIC       =  7;  /* Qaac */
917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Cyrillic
937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int CYRILLIC     =  8;  /* Cyrl (Cyrs) */
967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Deseret
987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
1007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int DESERET      =  9;  /* Dsrt */
1017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
1027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Devanagari
1037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
1047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
1057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int DEVANAGARI   = 10;  /* Deva */
1067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
1077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Ethiopic
1087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
1097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
1107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int ETHIOPIC     = 11;  /* Ethi */
1117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
1127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Georgian
1137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
1147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
1157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int GEORGIAN     = 12;  /* Geor (Geon; Geoa) */
1167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
1177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Gothic
1187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
1197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
1207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int GOTHIC       = 13;  /* Goth */
1217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
1227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Greek
1237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
1247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
1257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int GREEK        = 14;  /* Grek */
1267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
1277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Gujarati
1287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
1297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
1307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int GUJARATI     = 15;  /* Gujr */
1317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
1327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Gurmukhi
1337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
1347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
1357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int GURMUKHI     = 16;  /* Guru */
1367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
1377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Han
1387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
1397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
1407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int HAN          = 17;  /* Hani */
1417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
1427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Hangul
1437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
1447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
1457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int HANGUL       = 18;  /* Hang */
1467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
1477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Hebrew
1487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
1497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
1507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int HEBREW       = 19;  /* Hebr */
1517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
1527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Hiragana
1537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
1547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
1557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int HIRAGANA     = 20;  /* Hira */
1567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
1577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Kannada
1587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
1597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
1607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int KANNADA      = 21;  /* Knda */
1617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
1627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Katakana
1637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
1647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
1657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int KATAKANA     = 22;  /* Kana */
1667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
1677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Khmer
1687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
1697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
1707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int KHMER        = 23;  /* Khmr */
1717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
1727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Lao
1737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
1747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
1757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int LAO          = 24;  /* Laoo */
1767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
1777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Latin
1787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
1797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
1807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int LATIN        = 25;  /* Latn (Latf; Latg) */
1817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
1827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Malayalam
1837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
1847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
1857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int MALAYALAM    = 26;  /* Mlym */
1867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
1877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Mangolian
1887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
1897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
1907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int MONGOLIAN    = 27;  /* Mong */
1917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
1927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Myammar
1937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
1947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
1957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int MYANMAR      = 28;  /* Mymr */
1967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
1977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Ogham
1987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
1997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
2007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int OGHAM        = 29;  /* Ogam */
2017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
2027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Old Itallic
2037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
2047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
2057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int OLD_ITALIC   = 30;  /* Ital */
2067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
2077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Oriya
2087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
2097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
2107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int ORIYA        = 31;  /* Orya */
2117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
2127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Runic
2137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
2147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
2157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int RUNIC        = 32;  /* Runr */
2167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
2177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Sinhala
2187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
2197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
2207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int SINHALA      = 33;  /* Sinh */
2217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
2227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Syriac
2237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
2247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
2257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int SYRIAC       = 34;  /* Syrc (Syrj; Syrn; Syre) */
2267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
2277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Tamil
2287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
2297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
2307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int TAMIL        = 35;  /* Taml */
2317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
2327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Telugu
2337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
2347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
2357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int TELUGU       = 36;  /* Telu */
2367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
2377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Thana
2387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
2397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
2407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int THAANA       = 37;  /* Thaa */
2417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
2427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Thai
2437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
2447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
2457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int THAI         = 38;  /* Thai */
2467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
2477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Tibetan
2487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
2497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
2507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int TIBETAN      = 39;  /* Tibt */
2517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
2527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Unified Canadian Aboriginal Symbols
2537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.6
2547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
2557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int CANADIAN_ABORIGINAL = 40;  /* Cans */
2567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
2577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Unified Canadian Aboriginal Symbols (alias)
2587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
2597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
2607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int UCAS         = CANADIAN_ABORIGINAL;  /* Cans */
2617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
2627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Yi syllables
2637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
2647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
2657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int YI           = 41;  /* Yiii */
2667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
2677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Tagalog
2687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
2697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
2707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int TAGALOG      = 42;  /* Tglg */
2717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
2727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Hanunooo
2737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
2747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
2757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int HANUNOO      = 43;  /* Hano */
2767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
2777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Buhid
2787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
2797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
2807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int BUHID        = 44;  /* Buhd */
2817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
2827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Tagbanwa
2837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
2847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
2857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int TAGBANWA     = 45;  /* Tagb */
2867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
2877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Braille
2882d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     * Script in Unicode 4
2892d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     * @stable ICU 2.6
2902d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     *
2912d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     */
2927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int BRAILLE      = 46;  /* Brai */
2937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
2947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Cypriot
2952d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     * Script in Unicode 4
2962d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     * @stable ICU 2.6
2972d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     *
2982d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     */
2992d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert    public static final int CYPRIOT              = 47;  /* Cprt */
3007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
3017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Limbu
3022d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     * Script in Unicode 4
3032d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     * @stable ICU 2.6
3042d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     *
3052d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     */
3062d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert    public static final int LIMBU                = 48;  /* Limb */
3077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
3087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Linear B
3092d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     * Script in Unicode 4
3102d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     * @stable ICU 2.6
3112d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     *
3122d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     */
3132d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert    public static final int LINEAR_B     = 49;  /* Linb */
3147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
3157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Osmanya
3162d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     * Script in Unicode 4
3172d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     * @stable ICU 2.6
3182d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     *
3192d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     */
3202d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert    public static final int OSMANYA              = 50;  /* Osma */
3217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
3227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Shavian
3232d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     * Script in Unicode 4
3242d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     * @stable ICU 2.6
3252d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     *
3262d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     */
3272d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert    public static final int SHAVIAN              = 51;  /* Shaw */
3287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
3297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Tai Le
3302d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     * Script in Unicode 4
3312d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     * @stable ICU 2.6
3322d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     *
3332d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     */
3342d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert    public static final int TAI_LE               = 52;  /* Tale */
3357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
3367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Ugaritic
3372d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     * Script in Unicode 4
3382d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     * @stable ICU 2.6
3392d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     *
3402d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     */
3412d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert    public static final int UGARITIC     = 53;  /* Ugar */
3427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
3437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Script in Unicode 4.0.1
3447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.0
3457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
3467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int KATAKANA_OR_HIRAGANA = 54;  /*Hrkt */
3477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
3487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
3497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Script in Unicode 4.1
3507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.4
3517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
3527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int BUGINESE = 55;           /* Bugi */
3537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
3547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Script in Unicode 4.1
3557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.4
3567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
3577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int GLAGOLITIC = 56;         /* Glag */
3587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
3597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Script in Unicode 4.1
3607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.4
3617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
3627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int KHAROSHTHI = 57;         /* Khar */
3637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
3647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Script in Unicode 4.1
3657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.4
3667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
3677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int SYLOTI_NAGRI = 58;       /* Sylo */
3687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
3697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Script in Unicode 4.1
3707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.4
3717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
3727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int NEW_TAI_LUE = 59;        /* Talu */
3737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
3747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Script in Unicode 4.1
3757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.4
3767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
3777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int TIFINAGH = 60;           /* Tfng */
3787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
3797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Script in Unicode 4.1
3807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.4
3817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
3827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int OLD_PERSIAN = 61;        /* Xpeo */
3837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
3847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
3857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
3867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
3877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.6
3887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
3897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int BALINESE                      = 62; /* Bali */
3907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
3917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
3927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.6
3937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
3947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int BATAK                         = 63; /* Batk */
3957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
3967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
3977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.6
3987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
3997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int BLISSYMBOLS                   = 64; /* Blis */
4007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
4017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
4027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.6
4037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
4047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int BRAHMI                        = 65; /* Brah */
4057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
4067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
4077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.6
4087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
4097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int CHAM                          = 66; /* Cham */
4107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
4117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
4127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.6
4137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
4147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int CIRTH                         = 67; /* Cirt */
4157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
4167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
4177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.6
4187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
4197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int OLD_CHURCH_SLAVONIC_CYRILLIC  = 68; /* Cyrs */
4207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
4217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
4227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.6
4237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
4247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int DEMOTIC_EGYPTIAN              = 69; /* Egyd */
4257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
4267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
4277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.6
4287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
4297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int HIERATIC_EGYPTIAN             = 70; /* Egyh */
4307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
4317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
4327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.6
4337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
4347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int EGYPTIAN_HIEROGLYPHS          = 71; /* Egyp */
4357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
4367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
4377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.6
4387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
4397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int KHUTSURI                      = 72; /* Geok */
4407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
4417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
4427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.6
4437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
4447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int SIMPLIFIED_HAN                = 73; /* Hans */
4457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
4467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
4477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.6
4487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
4497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int TRADITIONAL_HAN               = 74; /* Hant */
4507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
4517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
4527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.6
4537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
4547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int PAHAWH_HMONG                  = 75; /* Hmng */
4557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
4567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
4577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.6
4587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
4597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int OLD_HUNGARIAN                 = 76; /* Hung */
4607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
4617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
4627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.6
4637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
4647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int HARAPPAN_INDUS                = 77; /* Inds */
4657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
4667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
4677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.6
4687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
4697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int JAVANESE                      = 78; /* Java */
4707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
4717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
4727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.6
4737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
4747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int KAYAH_LI                      = 79; /* Kali */
4757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
4767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
4777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.6
4787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
4797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int LATIN_FRAKTUR                 = 80; /* Latf */
4807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
4817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
4827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.6
4837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
4847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int LATIN_GAELIC                  = 81; /* Latg */
4857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
4867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
4877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.6
4887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
4897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int LEPCHA                        = 82; /* Lepc */
4907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
4917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
4927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.6
4937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
4947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int LINEAR_A                      = 83; /* Lina */
4957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
4967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
4977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 4.6
4987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
4997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int MANDAIC                       = 84; /* Mand */
5007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
5017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
5027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.6
5037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
5047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int MANDAEAN                      = MANDAIC;
5057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
5067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
5077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.6
5087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
5097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int MAYAN_HIEROGLYPHS             = 85; /* Maya */
5107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
5117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
5127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 4.6
5137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
5147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int MEROITIC_HIEROGLYPHS          = 86; /* Mero */
5157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
5167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
5177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.6
5187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
5197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int MEROITIC                      = MEROITIC_HIEROGLYPHS;
5207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
5217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
5227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.6
5237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
5247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int NKO                           = 87; /* Nkoo */
5257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
5267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
5277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.6
5287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
5297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int ORKHON                        = 88; /* Orkh */
5307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
5317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
5327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.6
5337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
5347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int OLD_PERMIC                    = 89; /* Perm */
5357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
5367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
5377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.6
5387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
5397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int PHAGS_PA                      = 90; /* Phag */
5407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
5417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
5427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.6
5437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
5447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int PHOENICIAN                    = 91; /* Phnx */
5457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
5467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
5477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 52
5487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
5497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int MIAO                          = 92; /* Plrd */
5507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
5517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
5527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.6
5537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
5547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int PHONETIC_POLLARD              = MIAO;
5557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
5567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
5577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.6
5587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
5597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int RONGORONGO                    = 93; /* Roro */
5607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
5617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
5627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.6
5637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
5647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int SARATI                        = 94; /* Sara */
5657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
5667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
5677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.6
5687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
5697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int ESTRANGELO_SYRIAC             = 95; /* Syre */
5707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
5717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
5727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.6
5737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
5747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int WESTERN_SYRIAC                = 96; /* Syrj */
5757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
5767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
5777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.6
5787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
5797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int EASTERN_SYRIAC                = 97; /* Syrn */
5807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
5817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
5827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.6
5837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
5847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int TENGWAR                       = 98; /* Teng */
5857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
5867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
5877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.6
5887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
5897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int VAI                           = 99; /* Vaii */
5907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
5917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
5927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.6
5937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
5947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int VISIBLE_SPEECH                = 100;/* Visp */
5957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
5967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
5977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.6
5987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
5997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int CUNEIFORM                     = 101;/* Xsux */
6007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
6017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
6027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.6
6037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
6047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int UNWRITTEN_LANGUAGES           = 102;/* Zxxx */
6057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
6067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
6077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.6
6087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
6097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int UNKNOWN                       = 103;/* Zzzz */ /* Unknown="Code for uncoded script", for unassigned code points */
6107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
6117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
6127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
6137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.8
6142d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     */
6157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int CARIAN                        = 104;/* Cari */
6167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
6177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
6187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.8
6197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
6207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int JAPANESE                      = 105;/* Jpan */
6217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
6227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
6237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.8
6247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
6257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int LANNA                         = 106;/* Lana */
6267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
6277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
6287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.8
6297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
6307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int LYCIAN                        = 107;/* Lyci */
6317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
6327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
6337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.8
6347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
6357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int LYDIAN                        = 108;/* Lydi */
6367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
6377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
6387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.8
6397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
6407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int OL_CHIKI                      = 109;/* Olck */
6417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
6427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
6437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.8
6447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
6457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int REJANG                        = 110;/* Rjng */
6467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
6477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
6487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.8
6497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
6507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int SAURASHTRA                    = 111;/* Saur */
6517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
652bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert     * ISO 15924 script code for Sutton SignWriting
6537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.8
6547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
6557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int SIGN_WRITING                  = 112;/* Sgnw */
6567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
6577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
6587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.8
6597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
6607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int SUNDANESE                     = 113;/* Sund */
6617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
6627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
6637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.8
6647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
6657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int MOON                          = 114;/* Moon */
6667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
6677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
6687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.8
6697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
6707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int MEITEI_MAYEK                  = 115;/* Mtei */
6717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
6727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
6737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
6747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 4.0
6757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
6767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int IMPERIAL_ARAMAIC              = 116;/* Armi */
6777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
6787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
6797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
6807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 4.0
6817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
6827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int AVESTAN                       = 117;/* Avst */
6837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
6847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
6857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
6867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 4.0
6877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
6887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int CHAKMA                        = 118;/* Cakm */
6897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
6907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
6917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
6927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 4.0
6937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
6947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int KOREAN                        = 119;/* Kore */
6957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
6967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
6977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
6987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 4.0
6997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
7007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int KAITHI                        = 120;/* Kthi */
7017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
7027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
7037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
7047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 4.0
7057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
7067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int MANICHAEAN                    = 121;/* Mani */
7077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
7087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
7097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
7107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 4.0
7117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
7127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int INSCRIPTIONAL_PAHLAVI         = 122;/* Phli */
7137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
7147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
7157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
7167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 4.0
7177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
7187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int PSALTER_PAHLAVI               = 123;/* Phlp */
7197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
7207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
7217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
7227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 4.0
7237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
7247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int BOOK_PAHLAVI                  = 124;/* Phlv */
7257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
7267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
7277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
7287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 4.0
7297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
7307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int INSCRIPTIONAL_PARTHIAN        = 125;/* Prti */
7317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
7327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
7337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
7347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 4.0
7357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
7367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int SAMARITAN                     = 126;/* Samr */
7377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
7387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
7397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
7407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 4.0
7417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
7427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int TAI_VIET                      = 127;/* Tavt */
7437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
7447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
7457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
7467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 4.0
7477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
7487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int MATHEMATICAL_NOTATION         = 128;/* Zmth */
7497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
7507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
7517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
7527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 4.0
7537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
7547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int SYMBOLS                       = 129;/* Zsym */
7557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
7567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
7577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
7587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 4.4
7597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
7607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int BAMUM                         = 130;/* Bamu */
7617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
7627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
7637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 4.4
7647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
7657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int LISU                          = 131;/* Lisu */
7667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
7677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
7687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 4.4
7697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
7707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int NAKHI_GEBA                    = 132;/* Nkgb */
7717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
7727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
7737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 4.4
7747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
7757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int OLD_SOUTH_ARABIAN             = 133;/* Sarb */
7767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
7777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
7787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
7797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 4.6
7807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
7817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int BASSA_VAH                     = 134;/* Bass */
7827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
7837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
7847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 54
7857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
7867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int DUPLOYAN                      = 135;/* Dupl */
7877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
7887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Typo, use DUPLOYAN
7897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @deprecated ICU 54
7907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
7917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    @Deprecated
7927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int DUPLOYAN_SHORTAND             = DUPLOYAN;
7937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
7947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
7957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 4.6
7967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
7977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int ELBASAN                       = 136;/* Elba */
7987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
7997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
8007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 4.6
8017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
8027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int GRANTHA                       = 137;/* Gran */
8037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
8047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
8057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 4.6
8067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
8077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int KPELLE                        = 138;/* Kpel */
8087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
8097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
8107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 4.6
8117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
8127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int LOMA                          = 139;/* Loma */
8137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
8147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Mende Kikakui
8157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
8167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 4.6
8177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
8187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int MENDE                         = 140;/* Mend */
8197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
8207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
8217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 4.6
8227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
8237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int MEROITIC_CURSIVE              = 141;/* Merc */
8247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
8257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
8267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 4.6
8277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
8287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int OLD_NORTH_ARABIAN             = 142;/* Narb */
8297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
8307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
8317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 4.6
8327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
8337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int NABATAEAN                     = 143;/* Nbat */
8347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
8357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
8367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 4.6
8377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
8387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int PALMYRENE                     = 144;/* Palm */
8397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
8407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
8417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 54
8427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
8437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int KHUDAWADI                     = 145;/* Sind */
8447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
8457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
8467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 4.6
8477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
8487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int SINDHI = KHUDAWADI;
8497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
8507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
8517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 4.6
8527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
8537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int WARANG_CITI                   = 146;/* Wara */
8547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
8557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
8567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
8577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 4.8
8587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
8597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int AFAKA = 147;/* Afak */
8607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
8617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
8627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 4.8
8637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
8647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int JURCHEN = 148;/* Jurc */
8657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
8667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
8677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 4.8
8687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
8697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int MRO = 149;/* Mroo */
8707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
8717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
8727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 4.8
8737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
8747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int NUSHU = 150;/* Nshu */
8757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
8767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
8777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 4.8
8787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
8797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int SHARADA = 151;/* Shrd */
8807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
8817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
8827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 4.8
8837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
8847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int SORA_SOMPENG = 152;/* Sora */
8857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
8867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
8877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 4.8
8887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
8897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int TAKRI = 153;/* Takr */
8907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
8917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
8927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 4.8
8937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
8947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int TANGUT = 154;/* Tang */
8957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
8967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
8977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 4.8
8987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
8997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int WOLEAI = 155;/* Wole */
9007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
9017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
9027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
9037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 49
9047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
9057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int ANATOLIAN_HIEROGLYPHS = 156;/* Hluw */
9067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
9077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
9087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 49
9097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
9107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int KHOJKI = 157;/* Khoj */
9117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
9127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
9137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 49
9147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
9157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int TIRHUTA = 158;/* Tirh */
9167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
9177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
9187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 52
9197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
9207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int CAUCASIAN_ALBANIAN = 159; /* Aghb */
9217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
9227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
9237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 52
9247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
9257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int MAHAJANI = 160; /* Mahj */
9267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
9277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
9287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
9297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 54
9307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
9317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int AHOM = 161; /* Ahom */
9327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
9337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
9347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 54
9357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
9367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int HATRAN = 162; /* Hatr */
9377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
9387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
9397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 54
9407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
9417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int MODI = 163; /* Modi */
9427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
9437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
9447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 54
9457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
9467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int MULTANI = 164; /* Mult */
9477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
9487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
9497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 54
9507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
9517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int PAU_CIN_HAU = 165; /* Pauc */
9527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
9537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * ISO 15924 script code
9547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 54
9557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
9567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int SIDDHAM = 166; /* Sidd */
9577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
9587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
9592d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     * ISO 15924 script code
9602d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     * @stable ICU 58
9612d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     */
9622d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert    public static final int ADLAM = 167; /* Adlm */
9632d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert    /**
9642d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     * ISO 15924 script code
9652d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     * @stable ICU 58
9662d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     */
9672d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert    public static final int BHAIKSUKI = 168; /* Bhks */
9682d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert    /**
9692d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     * ISO 15924 script code
9702d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     * @stable ICU 58
9712d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     */
9722d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert    public static final int MARCHEN = 169; /* Marc */
9732d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert    /**
9742d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     * ISO 15924 script code
9752d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     * @stable ICU 58
9762d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     */
9772d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert    public static final int NEWA = 170; /* Newa */
9782d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert    /**
9792d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     * ISO 15924 script code
9802d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     * @stable ICU 58
9812d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     */
9822d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert    public static final int OSAGE = 171; /* Osge */
9832d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert
9842d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert    /**
9852d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     * ISO 15924 script code
9862d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     * @stable ICU 58
9872d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     */
9882d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert    public static final int HAN_WITH_BOPOMOFO = 172; /* Hanb */
9892d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert    /**
9902d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     * ISO 15924 script code
9912d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     * @stable ICU 58
9922d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     */
9932d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert    public static final int JAMO = 173; /* Jamo */
9942d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert    /**
9952d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     * ISO 15924 script code
9962d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     * @stable ICU 58
9972d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     */
9982d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert    public static final int SYMBOLS_EMOJI = 174; /* Zsye */
9992d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert
10002d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert    /**
10012d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     * One more than the highest normal UScript code.
10022d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     * The highest value is available via UCharacter.getIntPropertyMaxValue(UProperty.SCRIPT).
1003f716bda031dccdec5e47bb40e758c5901d209729Fredrik Roubert     *
10042d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert     * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
10057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
10062d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert    @Deprecated
10072d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert    public static final int CODE_LIMIT   = 175;
10087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
10097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    private static int[] getCodesFromLocale(ULocale locale) {
10107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        // Multi-script languages, equivalent to the LocaleScript data
10117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        // that we used to load from locale resource bundles.
10127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        String lang = locale.getLanguage();
10137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        if(lang.equals("ja")) {
10147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            return new int[] { UScript.KATAKANA, UScript.HIRAGANA, UScript.HAN };
10157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }
10167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        if(lang.equals("ko")) {
10177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            return new int[] { UScript.HANGUL, UScript.HAN };
10187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }
10197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        String script = locale.getScript();
10207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        if(lang.equals("zh") && script.equals("Hant")) {
10217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            return new int[] { UScript.HAN, UScript.BOPOMOFO };
10227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }
10237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        // Explicit script code.
10247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        if(script.length() != 0) {
10257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            int scriptCode = UScript.getCodeFromName(script);
10267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            if(scriptCode != UScript.INVALID_CODE) {
10277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                if(scriptCode == UScript.SIMPLIFIED_HAN || scriptCode == UScript.TRADITIONAL_HAN) {
10287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                    scriptCode = UScript.HAN;
10297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                }
10307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                return new int[] { scriptCode };
10317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            }
10327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }
10337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        return null;
10347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    }
10357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
10367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
10377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Helper function to find the code from locale.
10387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @param locale The locale.
10397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
10407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    private static int[] findCodeFromLocale(ULocale locale) {
10417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        int[] result = getCodesFromLocale(locale);
10427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        if(result != null) {
10437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            return result;
10447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }
10457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        ULocale likely = ULocale.addLikelySubtags(locale);
10467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        return getCodesFromLocale(likely);
10477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    }
10487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
10497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
10507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Gets a script codes associated with the given locale or ISO 15924 abbreviation or name.
10517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Returns MALAYAM given "Malayam" OR "Mlym".
10527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Returns LATIN given "en" OR "en_US"
10537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @param locale Locale
10547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @return The script codes array. null if the the code cannot be found.
10557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
10567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
10577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int[] getCode(Locale locale){
10587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        return findCodeFromLocale(ULocale.forLocale(locale));
10597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    }
10607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
10617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Gets a script codes associated with the given locale or ISO 15924 abbreviation or name.
10627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Returns MALAYAM given "Malayam" OR "Mlym".
10637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Returns LATIN given "en" OR "en_US"
10647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @param locale ULocale
10657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @return The script codes array. null if the the code cannot be found.
10667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 3.0
10677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
10687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int[] getCode(ULocale locale){
10697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        return findCodeFromLocale(locale);
10707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    }
10717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
10727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Gets the script codes associated with the given locale or ISO 15924 abbreviation or name.
10737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Returns MALAYAM given "Malayam" OR "Mlym".
10747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Returns LATIN given "en" OR "en_US"
10757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     *
10767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * <p>Note: To search by short or long script alias only, use
10777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * {@link #getCodeFromName(String)} instead.
10787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * That does a fast lookup with no access of the locale data.
10797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     *
10807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @param nameOrAbbrOrLocale name of the script or ISO 15924 code or locale
10817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @return The script codes array. null if the the code cannot be found.
10827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
10837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
10847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int[] getCode(String nameOrAbbrOrLocale) {
10857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        boolean triedCode = false;
10867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        if (nameOrAbbrOrLocale.indexOf('_') < 0 && nameOrAbbrOrLocale.indexOf('-') < 0) {
10877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            int propNum = UCharacter.getPropertyValueEnumNoThrow(UProperty.SCRIPT, nameOrAbbrOrLocale);
10887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            if (propNum != UProperty.UNDEFINED) {
10897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                return new int[] {propNum};
10907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            }
10917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            triedCode = true;
10927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }
10937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        int[] scripts = findCodeFromLocale(new ULocale(nameOrAbbrOrLocale));
10947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        if (scripts != null) {
10957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            return scripts;
10967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }
10977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        if (!triedCode) {
10987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            int propNum = UCharacter.getPropertyValueEnumNoThrow(UProperty.SCRIPT, nameOrAbbrOrLocale);
10997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            if (propNum != UProperty.UNDEFINED) {
11007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                return new int[] {propNum};
11017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            }
11027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }
11037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        return null;
11047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    }
11057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
11067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
11077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Returns the script code associated with the given Unicode script property alias
11087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * (name or abbreviation).
11097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Short aliases are ISO 15924 script codes.
11107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Returns MALAYAM given "Malayam" OR "Mlym".
11117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     *
11127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @param nameOrAbbr name of the script or ISO 15924 code
11137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @return The script code value, or INVALID_CODE if the code cannot be found.
1114bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert     * @stable ICU 54
11157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
11167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int getCodeFromName(String nameOrAbbr) {
11177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        int propNum = UCharacter.getPropertyValueEnumNoThrow(UProperty.SCRIPT, nameOrAbbr);
11187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        return propNum == UProperty.UNDEFINED ? INVALID_CODE : propNum;
11197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    }
11207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
11217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
11227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Gets the script code associated with the given codepoint.
11237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Returns UScript.MALAYAM given 0x0D02
11247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @param codepoint UChar32 codepoint
11257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @return The script code
11267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
11277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
11287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int getScript(int codepoint){
11297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        if (codepoint >= UCharacter.MIN_VALUE & codepoint <= UCharacter.MAX_VALUE) {
11307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            int scriptX=UCharacterProperty.INSTANCE.getAdditional(codepoint, 0)&UCharacterProperty.SCRIPT_X_MASK;
11317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            if(scriptX<UCharacterProperty.SCRIPT_X_WITH_COMMON) {
11327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                return scriptX;
11337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            } else if(scriptX<UCharacterProperty.SCRIPT_X_WITH_INHERITED) {
11347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                return UScript.COMMON;
11357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            } else if(scriptX<UCharacterProperty.SCRIPT_X_WITH_OTHER) {
11367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                return UScript.INHERITED;
11377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            } else {
11387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                return UCharacterProperty.INSTANCE.m_scriptExtensions_[scriptX&UCharacterProperty.SCRIPT_MASK_];
11397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            }
11407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }else{
11417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            throw new IllegalArgumentException(Integer.toString(codepoint));
11427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }
11437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    }
11447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
11457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
11467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Do the Script_Extensions of code point c contain script sc?
11477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * If c does not have explicit Script_Extensions, then this tests whether
11487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * c has the Script property value sc.
11497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     *
11507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * <p>Some characters are commonly used in multiple scripts.
11517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * For more information, see UAX #24: http://www.unicode.org/reports/tr24/.
11527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     *
11537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @param c code point
11547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @param sc script code
11557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @return true if sc is in Script_Extensions(c)
11567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 49
11577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
11587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final boolean hasScript(int c, int sc) {
11597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        int scriptX=UCharacterProperty.INSTANCE.getAdditional(c, 0)&UCharacterProperty.SCRIPT_X_MASK;
11607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        if(scriptX<UCharacterProperty.SCRIPT_X_WITH_COMMON) {
11617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            return sc==scriptX;
11627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }
11637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
11647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        char[] scriptExtensions=UCharacterProperty.INSTANCE.m_scriptExtensions_;
11657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        int scx=scriptX&UCharacterProperty.SCRIPT_MASK_;  // index into scriptExtensions
11667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        if(scriptX>=UCharacterProperty.SCRIPT_X_WITH_OTHER) {
11677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            scx=scriptExtensions[scx+1];
11687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }
11697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        if(sc>0x7fff) {
11707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            // Guard against bogus input that would
11717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            // make us go past the Script_Extensions terminator.
11727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            return false;
11737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }
11747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        while(sc>scriptExtensions[scx]) {
11757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            ++scx;
11767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }
11777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        return sc==(scriptExtensions[scx]&0x7fff);
11787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    }
11797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
11807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
11817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Sets code point c's Script_Extensions as script code integers into the output BitSet.
11827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * <ul>
11837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * <li>If c does have Script_Extensions, then the return value is
11847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * the negative number of Script_Extensions codes (= -set.cardinality());
11857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * in this case, the Script property value
11867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * (normally Common or Inherited) is not included in the set.
11877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * <li>If c does not have Script_Extensions, then the one Script code is put into the set
11887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * and also returned.
11897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * <li>If c is not a valid code point, then the one {@link #UNKNOWN} code is put into the set
11907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * and also returned.
11917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * </ul>
11927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * In other words, if the return value is non-negative, it is c's single Script code
11937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * and the set contains exactly this Script code.
1194bee65486a185907111f3be60992433e133ec0e32Scott Russell     * If the return value is -n, then the set contains c's n&gt;=2 Script_Extensions script codes.
11957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     *
11967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * <p>Some characters are commonly used in multiple scripts.
11977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * For more information, see UAX #24: http://www.unicode.org/reports/tr24/.
11987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     *
11997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @param c code point
12007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @param set set of script code integers; will be cleared, then bits are set
12017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     *            corresponding to c's Script_Extensions
12027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @return negative number of script codes in c's Script_Extensions,
12037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     *         or the non-negative single Script value
12047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 49
12057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
12067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final int getScriptExtensions(int c, BitSet set) {
12077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        set.clear();
12087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        int scriptX=UCharacterProperty.INSTANCE.getAdditional(c, 0)&UCharacterProperty.SCRIPT_X_MASK;
12097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        if(scriptX<UCharacterProperty.SCRIPT_X_WITH_COMMON) {
12107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            set.set(scriptX);
12117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            return scriptX;
12127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }
12137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
12147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        char[] scriptExtensions=UCharacterProperty.INSTANCE.m_scriptExtensions_;
12157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        int scx=scriptX&UCharacterProperty.SCRIPT_MASK_;  // index into scriptExtensions
12167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        if(scriptX>=UCharacterProperty.SCRIPT_X_WITH_OTHER) {
12177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            scx=scriptExtensions[scx+1];
12187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }
12197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        int length=0;
12207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        int sx;
12217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        do {
12227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            sx=scriptExtensions[scx++];
12237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            set.set(sx&0x7fff);
12247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            ++length;
12257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        } while(sx<0x8000);
12267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        // length==set.cardinality()
12277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        return -length;
12287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    }
12297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
12307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
12317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Returns the long Unicode script name, if there is one.
12327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Otherwise returns the 4-letter ISO 15924 script code.
12337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Returns "Malayam" given MALAYALAM.
12347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     *
12357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @param scriptCode int script code
12367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @return long script name as given in PropertyValueAliases.txt, or the 4-letter code
12377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @throws IllegalArgumentException if the script code is not valid
12387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
12397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
12407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final String getName(int scriptCode){
12417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        return UCharacter.getPropertyValueName(UProperty.SCRIPT,
12427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                scriptCode,
12437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                UProperty.NameChoice.LONG);
12447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    }
12457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
12467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
12477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Returns the 4-letter ISO 15924 script code,
12487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * which is the same as the short Unicode script name if Unicode has names for the script.
12497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Returns "Mlym" given MALAYALAM.
12507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     *
12517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @param scriptCode int script code
12527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @return short script name (4-letter code)
12537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @throws IllegalArgumentException if the script code is not valid
12547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 2.4
12557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
12567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final String getShortName(int scriptCode){
12577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        return UCharacter.getPropertyValueName(UProperty.SCRIPT,
12587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                scriptCode,
12597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                UProperty.NameChoice.SHORT);
12607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    }
12617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
12627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
12637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Script metadata (script properties).
12647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * See http://unicode.org/cldr/trac/browser/trunk/common/properties/scriptMetadata.txt
12657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
12667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    private static final class ScriptMetadata {
12677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        // 0 = NOT_ENCODED, no sample character, default false script properties.
12687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        // Bits 20.. 0: sample character
12697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
12707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        // Bits 23..21: usage
12717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        private static final int UNKNOWN = 1 << 21;
12727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        private static final int EXCLUSION = 2 << 21;
12737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        private static final int LIMITED_USE = 3 << 21;
12747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        private static final int ASPIRATIONAL = 4 << 21;
12757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        private static final int RECOMMENDED = 5 << 21;
12767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
12777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        // Bits 31..24: Single-bit flags
12787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        private static final int RTL = 1 << 24;
12797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        private static final int LB_LETTERS = 1 << 25;
12807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        private static final int CASED = 1 << 26;
12817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
12827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        private static final int SCRIPT_PROPS[] = {
12837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            // Begin copy-paste output from
12847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            // tools/trunk/unicode/py/parsescriptmetadata.py
12857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            // or from icu/trunk/source/common/uscript_props.cpp
12867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x0040 | RECOMMENDED,  // Zyyy
1287bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert            0x0308 | RECOMMENDED,  // Zinh
12887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x0628 | RECOMMENDED | RTL,  // Arab
12897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x0531 | RECOMMENDED | CASED,  // Armn
12907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x0995 | RECOMMENDED,  // Beng
12917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x3105 | RECOMMENDED | LB_LETTERS,  // Bopo
1292bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert            0x13C4 | LIMITED_USE | CASED,  // Cher
12937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x03E2 | EXCLUSION | CASED,  // Copt
12947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x042F | RECOMMENDED | CASED,  // Cyrl
12957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x10414 | EXCLUSION | CASED,  // Dsrt
12967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x0905 | RECOMMENDED,  // Deva
12977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x12A0 | RECOMMENDED,  // Ethi
12987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x10D3 | RECOMMENDED,  // Geor
12997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x10330 | EXCLUSION,  // Goth
13007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x03A9 | RECOMMENDED | CASED,  // Grek
13017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x0A95 | RECOMMENDED,  // Gujr
13027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x0A15 | RECOMMENDED,  // Guru
13037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x5B57 | RECOMMENDED | LB_LETTERS,  // Hani
13047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0xAC00 | RECOMMENDED,  // Hang
13057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x05D0 | RECOMMENDED | RTL,  // Hebr
13067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x304B | RECOMMENDED | LB_LETTERS,  // Hira
13077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x0C95 | RECOMMENDED,  // Knda
13087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x30AB | RECOMMENDED | LB_LETTERS,  // Kana
13097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x1780 | RECOMMENDED | LB_LETTERS,  // Khmr
13107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x0EA5 | RECOMMENDED | LB_LETTERS,  // Laoo
13117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x004C | RECOMMENDED | CASED,  // Latn
13127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x0D15 | RECOMMENDED,  // Mlym
13137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x1826 | ASPIRATIONAL,  // Mong
13147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x1000 | RECOMMENDED | LB_LETTERS,  // Mymr
13157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x168F | EXCLUSION,  // Ogam
13162d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert            0x10300 | EXCLUSION,  // Ital
13177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x0B15 | RECOMMENDED,  // Orya
13187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x16A0 | EXCLUSION,  // Runr
13197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x0D85 | RECOMMENDED,  // Sinh
13207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x0710 | LIMITED_USE | RTL,  // Syrc
13217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x0B95 | RECOMMENDED,  // Taml
13227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x0C15 | RECOMMENDED,  // Telu
13237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x078C | RECOMMENDED | RTL,  // Thaa
13247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x0E17 | RECOMMENDED | LB_LETTERS,  // Thai
13257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x0F40 | RECOMMENDED,  // Tibt
13267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x14C0 | ASPIRATIONAL,  // Cans
13277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0xA288 | ASPIRATIONAL | LB_LETTERS,  // Yiii
13287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x1703 | EXCLUSION,  // Tglg
13297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x1723 | EXCLUSION,  // Hano
13307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x1743 | EXCLUSION,  // Buhd
13317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x1763 | EXCLUSION,  // Tagb
1332bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert            0x280E | UNKNOWN,  // Brai
13337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x10800 | EXCLUSION | RTL,  // Cprt
13347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x1900 | LIMITED_USE,  // Limb
13357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x10000 | EXCLUSION,  // Linb
13367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x10480 | EXCLUSION,  // Osma
13377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x10450 | EXCLUSION,  // Shaw
13387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x1950 | LIMITED_USE | LB_LETTERS,  // Tale
13397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x10380 | EXCLUSION,  // Ugar
13407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0,
13417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x1A00 | EXCLUSION,  // Bugi
13427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x2C00 | EXCLUSION | CASED,  // Glag
13437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x10A00 | EXCLUSION | RTL,  // Khar
13447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0xA800 | LIMITED_USE,  // Sylo
13457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x1980 | LIMITED_USE | LB_LETTERS,  // Talu
13462d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert            0x2D30 | ASPIRATIONAL,  // Tfng
13477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x103A0 | EXCLUSION,  // Xpeo
13487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x1B05 | LIMITED_USE,  // Bali
13497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x1BC0 | LIMITED_USE,  // Batk
13507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0,
13517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x11005 | EXCLUSION,  // Brah
13527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0xAA00 | LIMITED_USE,  // Cham
13537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0,
13547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0,
13557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0,
13567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0,
13577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x13153 | EXCLUSION,  // Egyp
13587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0,
13597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x5B57 | RECOMMENDED | LB_LETTERS,  // Hans
13607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x5B57 | RECOMMENDED | LB_LETTERS,  // Hant
13617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x16B1C | EXCLUSION,  // Hmng
1362bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert            0x10CA1 | EXCLUSION | RTL | CASED,  // Hung
13637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0,
13647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0xA984 | LIMITED_USE,  // Java
13657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0xA90A | LIMITED_USE,  // Kali
13667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0,
13677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0,
13687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x1C00 | LIMITED_USE,  // Lepc
13697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x10647 | EXCLUSION,  // Lina
13707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x0840 | LIMITED_USE | RTL,  // Mand
13717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0,
13727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x10980 | EXCLUSION | RTL,  // Mero
13732d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert            0x07CA | LIMITED_USE | RTL,  // Nkoo
13747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x10C00 | EXCLUSION | RTL,  // Orkh
13757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x1036B | EXCLUSION,  // Perm
13767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0xA840 | EXCLUSION,  // Phag
13777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x10900 | EXCLUSION | RTL,  // Phnx
13787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x16F00 | ASPIRATIONAL,  // Plrd
13797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0,
13807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0,
13817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0,
13827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0,
13837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0,
13847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0,
13857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0xA549 | LIMITED_USE,  // Vaii
13867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0,
13877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x12000 | EXCLUSION,  // Xsux
13887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0,
13897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0xFDD0 | UNKNOWN,  // Zzzz
13902d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert            0x102A0 | EXCLUSION,  // Cari
13917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x304B | RECOMMENDED | LB_LETTERS,  // Jpan
13927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x1A20 | LIMITED_USE | LB_LETTERS,  // Lana
13937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x10280 | EXCLUSION,  // Lyci
13947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x10920 | EXCLUSION | RTL,  // Lydi
13957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x1C5A | LIMITED_USE,  // Olck
13967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0xA930 | EXCLUSION,  // Rjng
13977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0xA882 | LIMITED_USE,  // Saur
1398bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert            0x1D850 | EXCLUSION,  // Sgnw
13997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x1B83 | LIMITED_USE,  // Sund
14007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0,
14017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0xABC0 | LIMITED_USE,  // Mtei
14027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x10840 | EXCLUSION | RTL,  // Armi
14037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x10B00 | EXCLUSION | RTL,  // Avst
14047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x11103 | LIMITED_USE,  // Cakm
14057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0xAC00 | RECOMMENDED,  // Kore
14067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x11083 | EXCLUSION,  // Kthi
14072d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert            0x10AD8 | EXCLUSION | RTL,  // Mani
14087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x10B60 | EXCLUSION | RTL,  // Phli
14097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x10B8F | EXCLUSION | RTL,  // Phlp
14107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0,
14117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x10B40 | EXCLUSION | RTL,  // Prti
14127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x0800 | EXCLUSION | RTL,  // Samr
14137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0xAA80 | LIMITED_USE | LB_LETTERS,  // Tavt
14147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0,
14157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0,
14167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0xA6A0 | LIMITED_USE,  // Bamu
14172d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert            0xA4D0 | LIMITED_USE,  // Lisu
14187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0,
14197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x10A60 | EXCLUSION | RTL,  // Sarb
14207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x16AE6 | EXCLUSION,  // Bass
14217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x1BC20 | EXCLUSION,  // Dupl
14227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x10500 | EXCLUSION,  // Elba
14237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x11315 | EXCLUSION,  // Gran
14247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0,
14257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0,
14267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x1E802 | EXCLUSION | RTL,  // Mend
14277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x109A0 | EXCLUSION | RTL,  // Merc
14287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x10A95 | EXCLUSION | RTL,  // Narb
14297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x10896 | EXCLUSION | RTL,  // Nbat
14307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x10873 | EXCLUSION | RTL,  // Palm
14317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x112BE | EXCLUSION,  // Sind
14327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x118B4 | EXCLUSION | CASED,  // Wara
14337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0,
14347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0,
14357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x16A4F | EXCLUSION,  // Mroo
14367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0,
14377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x11183 | EXCLUSION,  // Shrd
14387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x110D0 | EXCLUSION,  // Sora
14397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x11680 | EXCLUSION,  // Takr
14402d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert            0x18229 | EXCLUSION | LB_LETTERS,  // Tang
14417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0,
1442bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert            0x14400 | EXCLUSION,  // Hluw
14437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x11208 | EXCLUSION,  // Khoj
14447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x11484 | EXCLUSION,  // Tirh
14457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x10537 | EXCLUSION,  // Aghb
14467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x11152 | EXCLUSION,  // Mahj
1447bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert            0x11717 | EXCLUSION | LB_LETTERS,  // Ahom
1448bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert            0x108F4 | EXCLUSION | RTL,  // Hatr
14497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x1160E | EXCLUSION,  // Modi
1450bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert            0x1128F | EXCLUSION,  // Mult
14517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x11AC0 | EXCLUSION,  // Pauc
14527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            0x1158E | EXCLUSION,  // Sidd
14532d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert            0x1E909 | LIMITED_USE | RTL | CASED,  // Adlm
14542d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert            0x11C0E | EXCLUSION,  // Bhks
14552d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert            0x11C72 | EXCLUSION,  // Marc
14562d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert            0x11412 | LIMITED_USE,  // Newa
14572d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert            0x104B5 | LIMITED_USE | CASED,  // Osge
14582d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert            0x5B57 | RECOMMENDED | LB_LETTERS,  // Hanb
14592d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert            0x1112 | RECOMMENDED,  // Jamo
14602d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert            0,
14617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            // End copy-paste from parsescriptmetadata.py
14627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        };
14637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
14647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        private static final int getScriptProps(int script) {
14657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            if (0 <= script && script < SCRIPT_PROPS.length) {
14667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                return SCRIPT_PROPS[script];
14677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            } else {
14687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                return 0;
14697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            }
14707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }
14717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    }
14727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
14737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
14747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Script usage constants.
14757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * See UAX #31 Unicode Identifier and Pattern Syntax.
14767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * http://www.unicode.org/reports/tr31/#Table_Candidate_Characters_for_Exclusion_from_Identifiers
14777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     *
14787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 51
14797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
14807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public enum ScriptUsage {
14817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        /**
14827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert         * Not encoded in Unicode.
14837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert         * @stable ICU 51
14847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert         */
14857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        NOT_ENCODED,
14867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        /**
14877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert         * Unknown script usage.
14887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert         * @stable ICU 51
14897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert         */
14907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        UNKNOWN,
14917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        /**
14927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert         * Candidate for Exclusion from Identifiers.
14937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert         * @stable ICU 51
14947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert         */
14957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        EXCLUDED,
14967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        /**
14977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert         * Limited Use script.
14987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert         * @stable ICU 51
14997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert         */
15007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        LIMITED_USE,
15017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        /**
15027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert         * Aspirational Use script.
15037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert         * @stable ICU 51
15047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert         */
15057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        ASPIRATIONAL,
15067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        /**
15077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert         * Recommended script.
15087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert         * @stable ICU 51
15097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert         */
15107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        RECOMMENDED
15117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    }
15127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    private static final ScriptUsage[] usageValues = ScriptUsage.values();
15137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
15147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
15157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Returns the script sample character string.
15167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * This string normally consists of one code point but might be longer.
15177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * The string is empty if the script is not encoded.
15187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     *
15197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @param script script code
15207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @return the sample character string
15217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 51
15227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
15237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final String getSampleString(int script) {
15247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        int sampleChar = ScriptMetadata.getScriptProps(script) & 0x1fffff;
15257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        if(sampleChar != 0) {
15267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            return new StringBuilder().appendCodePoint(sampleChar).toString();
15277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }
15287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        return "";
15297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    }
15307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
15317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
15327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Returns the script usage according to UAX #31 Unicode Identifier and Pattern Syntax.
15337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Returns {@link ScriptUsage#NOT_ENCODED} if the script is not encoded in Unicode.
15347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     *
15357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @param script script code
15367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @return script usage
15377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @see ScriptUsage
15387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 51
15397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
15407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final ScriptUsage getUsage(int script) {
15417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        return usageValues[(ScriptMetadata.getScriptProps(script) >> 21) & 7];
15427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    }
15437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
15447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
15457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Returns true if the script is written right-to-left.
15467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * For example, Arab and Hebr.
15477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     *
15487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @param script script code
15497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @return true if the script is right-to-left
15507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 51
15517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
15527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final boolean isRightToLeft(int script) {
15537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        return (ScriptMetadata.getScriptProps(script) & ScriptMetadata.RTL) != 0;
15547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    }
15557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
15567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
15577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Returns true if the script allows line breaks between letters (excluding hyphenation).
15587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Such a script typically requires dictionary-based line breaking.
15597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * For example, Hani and Thai.
15607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     *
15617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @param script script code
15627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @return true if the script allows line breaks between letters
15637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 51
15647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
15657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final boolean breaksBetweenLetters(int script) {
15667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        return (ScriptMetadata.getScriptProps(script) & ScriptMetadata.LB_LETTERS) != 0;
15677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    }
15687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
15697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
15707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Returns true if in modern (or most recent) usage of the script case distinctions are customary.
15717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * For example, Latn and Cyrl.
15727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     *
15737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @param script script code
15747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @return true if the script is cased
15757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * @stable ICU 51
15767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
15777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static final boolean isCased(int script) {
15787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        return (ScriptMetadata.getScriptProps(script) & ScriptMetadata.CASED) != 0;
15797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    }
15807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
15817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    ///CLOVER:OFF
15827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
15837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     *  Private Constructor. Never default construct
15847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
15857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    private UScript(){}
15867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    ///CLOVER:ON
15877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert}
1588