blob: 6bd1a18b533a7568df64f8659cbd5bc463167268 [file] [log] [blame]
/**
*******************************************************************************
* Copyright (C) 2001, International Business Machines Corporation and *
* others. All Rights Reserved. *
*******************************************************************************
*/
package com.ibm.icu.lang;
import com.ibm.icu.impl.ICULocaleData;
import com.ibm.icu.impl.LocaleUtility;
import java.util.ResourceBundle;
import java.util.Locale;
import java.util.MissingResourceException;
/**
* A class to reflect UTR #24: Script Names
* (based on ISO 15924:2000, "Code for the representation of names of
* scripts"). UTR #24 describes the basis for a new Unicode data file,
* Scripts.txt.
*/
public final class UScript {
/**
* Puts a copyright in the .class file
*/
private static final String copyrightNotice
= "Copyright \u00a92001 IBM Corp. All rights reserved.";
public static final int INVALID_CODE = -1;
public static final int COMMON = 0; /* Zyyy */
public static final int INHERITED = 1; /* Qaai */
public static final int ARABIC = 2; /* Arab */
public static final int ARMENIAN = 3; /* Armn */
public static final int BENGALI = 4; /* Beng */
public static final int BOPOMOFO = 5; /* Bopo */
public static final int CHEROKEE = 6; /* Cher */
public static final int COPTIC = 7; /* Qaac */
public static final int CYRILLIC = 8; /* Cyrl (Cyrs) */
public static final int DESERET = 9; /* Dsrt */
public static final int DEVANAGARI = 10; /* Deva */
public static final int ETHIOPIC = 11; /* Ethi */
public static final int GEORGIAN = 12; /* Geor (Geon; Geoa) */
public static final int GOTHIC = 13; /* Goth */
public static final int GREEK = 14; /* Grek */
public static final int GUJARATI = 15; /* Gujr */
public static final int GURMUKHI = 16; /* Guru */
public static final int HAN = 17; /* Hani */
public static final int HANGUL = 18; /* Hang */
public static final int HEBREW = 19; /* Hebr */
public static final int HIRAGANA = 20; /* Hira */
public static final int KANNADA = 21; /* Knda */
public static final int KATAKANA = 22; /* Kana */
public static final int KHMER = 23; /* Khmr */
public static final int LAO = 24; /* Laoo */
public static final int LATIN = 25; /* Latn (Latf; Latg) */
public static final int MALAYALAM = 26; /* Mlym */
public static final int MONGOLIAN = 27; /* Mong */
public static final int MYANMAR = 28; /* Mymr */
public static final int OGHAM = 29; /* Ogam */
public static final int OLD_ITALIC = 30; /* Ital */
public static final int ORIYA = 31; /* Orya */
public static final int RUNIC = 32; /* Runr */
public static final int SINHALA = 33; /* Sinh */
public static final int SYRIAC = 34; /* Syrc (Syrj; Syrn; Syre) */
public static final int TAMIL = 35; /* Taml */
public static final int TELUGU = 36; /* Telu */
public static final int THAANA = 37; /* Thaa */
public static final int THAI = 38; /* Thai */
public static final int TIBETAN = 39; /* Tibt */
public static final int UCAS = 40; /* Cans */
public static final int YI = 41; /* Yiii */
public static final int CODE_LIMIT = 42;
private static final String scriptNames[]={
"ARABIC", /* ARABIC */
"ARMENIAN", /* ARMENIAN */
"BENGALI", /* BENGALI */
"BOPOMOFO", /* BOPOMOFO */
"CANADIAN-ABORIGINAL", /* UCAS */
"CHEROKEE", /* CHEROKEE */
"COMMON", /* COMMON */
"CYRILLIC", /* CYRILLIC */
"DESERET", /* DESERET */
"DEVANAGARI", /* DEVANAGARI */
"ETHIOPIC", /* ETHIOPIC */
"GEORGIAN", /* GEORGIAN */
"GOTHIC", /* GOTHIC */
"GREEK", /* GREEK */
"GUJARATI", /* GUJARATI */
"GURMUKHI", /* GURMUKHI */
"HAN", /* HAN */
"HANGUL", /* HANGUL */
"HEBREW", /* HEBREW */
"HIRAGANA", /* HIRAGANA */
"INHERITED", /* INHERITED */
"KANNADA", /* KANNADA */
"KATAKANA", /* KATAKANA */
"KHMER", /* KHMER */
"LATIN", /* LATIN */
"MALAYALAM", /* MALAYALAM */
"MONGOLIAN", /* MONGOLIAN */
"MYANMAR", /* MYANMAR */
"OGHAM", /* OGHAM */
"OLD-ITALIC", /* OLD_ITALIC */
"ORIYA", /* ORIYA */
"RUNIC", /* RUNIC */
"SINHALA", /* SINHALA */
"SYRIAC", /* SYRIAC */
"TAMIL", /* TAMIL */
"TELUGU", /* TELUGU */
"THAANA", /* THANA */
"THAI", /* THAI */
"TIBETAN", /* TIBETAN */
"UCAS", /* UCAS */
"YI", /* YI */
};
private static final String scriptAbbr[]= {
"Arab", /* ARABIC */
"Armn", /* ARMENIAN */
"Beng", /* BENGALI */
"Bopo", /* BOPOMOFO */
"Cans", /* UCAS */
"Cher", /* CHEROKEE */
"Cyrl", /* CYRILLIC */
/* "Cyrs", */ /* CYRILLIC */
"Deva", /* DEVANAGARI */
"Dsrt", /* DESERET */
"Ethi", /* ETHIOPIC */
/* "Geoa", */ /* GEORGIAN */
/* "Geon", */ /* GEORGIAN */
"Geor", /* GEORGIAN */
"Goth", /* GOTHIC */
"Grek", /* GREEK */
"Gujr", /* GUJARATI */
"Guru", /* GURMUKHI */
"Hang", /* HANGUL */
"Hani", /* HAN */
"Hebr", /* HEBREW */
"Hira", /* HIRAGANA */
"Ital", /* OLD_ITALIC */
"Kana", /* KATAKANA */
"Khmr", /* KHMER */
"Knda", /* KANNADA */
"Lao", /* LAO */
/* "Laoo", */ /* LAO */
/* "Latf", */ /* LATIN */
/* "Latg", */ /* LATIN */
"Latn", /* LATIN */
"Mlym", /* MALAYALAM */
"Mong", /* MONGOLIAN */
"Mymr", /* MYANMAR */
"Ogam", /* OGHAM */
"Orya", /* ORIYA */
"Qaac", /* COPTIC */
"Qaai", /* INHERITED */
"Runr", /* RUNIC */
"Sinh", /* SINHALA */
"Syrc", /* SYRIAC */
/* "Syre", */ /* SYRIAC */
/* "Syrj", */ /* SYRIAC */
/* "Syrn", */ /* SYRIAC */
"Taml", /* TAMIL */
"Telu", /* TELUGU */
"Thaa", /* THANA */
"Thai", /* THAI */
"Tibt", /* TIBETAN */
"Yiii", /* YI */
"Zyyy", /* COMMON */
};
private static final int scriptNameCodes[]= {
ARABIC ,
ARMENIAN ,
BENGALI ,
BOPOMOFO ,
UCAS ,
CHEROKEE ,
COMMON ,
CYRILLIC ,
DESERET ,
DEVANAGARI ,
ETHIOPIC ,
GEORGIAN ,
GOTHIC ,
GREEK ,
GUJARATI ,
GURMUKHI ,
HAN ,
HANGUL ,
HEBREW ,
HIRAGANA ,
INHERITED ,
KANNADA ,
KATAKANA ,
KHMER ,
LATIN ,
MALAYALAM ,
MONGOLIAN ,
MYANMAR ,
OGHAM ,
OLD_ITALIC ,
ORIYA ,
RUNIC ,
SINHALA ,
SYRIAC ,
TAMIL ,
TELUGU ,
THAANA ,
THAI ,
TIBETAN ,
UCAS ,
YI
};
private static final int scriptAbbrCodes[] = {
ARABIC ,
ARMENIAN ,
BENGALI ,
BOPOMOFO ,
UCAS ,
CHEROKEE ,
CYRILLIC ,
/* CYRILLIC , */
DEVANAGARI ,
DESERET ,
ETHIOPIC ,
/* GEORGIAN , */
/* GEORGIAN , */
GEORGIAN ,
GOTHIC ,
GREEK ,
GUJARATI ,
GURMUKHI ,
HANGUL ,
HAN ,
HEBREW ,
HIRAGANA ,
OLD_ITALIC ,
KATAKANA ,
KHMER ,
KANNADA ,
LAO ,
/* LAO , */
/* LATIN , */
/* LATIN , */
LATIN ,
MALAYALAM ,
MONGOLIAN ,
MYANMAR ,
OGHAM ,
ORIYA ,
COPTIC ,
INHERITED ,
RUNIC ,
SINHALA ,
/* SYRIAC , */
/* SYRIAC , */
/* SYRIAC , */
SYRIAC ,
TAMIL ,
TELUGU ,
THAANA ,
THAI ,
TIBETAN ,
YI ,
COMMON ,
};
/**********************************************************
*
* WARNING: The below map is machine generated
* by genscrpt after parsing Scripts.txt,
* plese donot edit unless you know what you are doing
*
* TODO: Remove after merging script names to uprops.dat
*
**********************************************************
*/
private static final class UScriptCodeMap {
int firstCodepoint;
int lastCodepoint;
int scriptCode;
public UScriptCodeMap(int firstCp, int lastCp, int code){
firstCodepoint = firstCp;
lastCodepoint = lastCp;
scriptCode = code ;
}
};
private static final UScriptCodeMap[] scriptCodeIndex = {
new UScriptCodeMap(0x00000000, 0x00000000, COMMON) ,
new UScriptCodeMap(0x00000041, 0x0000005A, LATIN ) ,
new UScriptCodeMap(0x00000061, 0x0000007A, LATIN ) ,
new UScriptCodeMap(0x000000AA, 0x000000AA, LATIN ) ,
new UScriptCodeMap(0x000000B5, 0x000000B5, GREEK ) ,
new UScriptCodeMap(0x000000BA, 0x000000BA, LATIN ) ,
new UScriptCodeMap(0x000000C0, 0x000000D6, LATIN ) ,
new UScriptCodeMap(0x000000D8, 0x000000F6, LATIN ) ,
new UScriptCodeMap(0x000000F8, 0x000001BA, LATIN ) ,
new UScriptCodeMap(0x000001BB, 0x000001BB, LATIN ) ,
new UScriptCodeMap(0x000001BC, 0x000001BF, LATIN ) ,
new UScriptCodeMap(0x000001C0, 0x000001C3, LATIN ) ,
new UScriptCodeMap(0x000001C4, 0x0000021F, LATIN ) ,
new UScriptCodeMap(0x00000222, 0x00000233, LATIN ) ,
new UScriptCodeMap(0x00000250, 0x000002AD, LATIN ) ,
new UScriptCodeMap(0x000002B0, 0x000002B8, LATIN ) ,
new UScriptCodeMap(0x000002E0, 0x000002E4, LATIN ) ,
new UScriptCodeMap(0x00000300, 0x0000034E, INHERITED ) ,
new UScriptCodeMap(0x00000360, 0x00000362, INHERITED ) ,
new UScriptCodeMap(0x0000037A, 0x0000037A, GREEK ) ,
new UScriptCodeMap(0x00000386, 0x00000386, GREEK ) ,
new UScriptCodeMap(0x00000388, 0x0000038A, GREEK ) ,
new UScriptCodeMap(0x0000038C, 0x0000038C, GREEK ) ,
new UScriptCodeMap(0x0000038E, 0x000003A1, GREEK ) ,
new UScriptCodeMap(0x000003A3, 0x000003CE, GREEK ) ,
new UScriptCodeMap(0x000003D0, 0x000003D7, GREEK ) ,
new UScriptCodeMap(0x000003DA, 0x000003F5, GREEK ) ,
new UScriptCodeMap(0x00000400, 0x00000481, CYRILLIC ) ,
new UScriptCodeMap(0x00000483, 0x00000486, CYRILLIC ) ,
new UScriptCodeMap(0x00000488, 0x00000489, INHERITED ) ,
new UScriptCodeMap(0x0000048C, 0x000004C4, CYRILLIC ) ,
new UScriptCodeMap(0x000004C7, 0x000004C8, CYRILLIC ) ,
new UScriptCodeMap(0x000004CB, 0x000004CC, CYRILLIC ) ,
new UScriptCodeMap(0x000004D0, 0x000004F5, CYRILLIC ) ,
new UScriptCodeMap(0x000004F8, 0x000004F9, CYRILLIC ) ,
new UScriptCodeMap(0x00000531, 0x00000556, ARMENIAN ) ,
new UScriptCodeMap(0x00000559, 0x00000559, ARMENIAN ) ,
new UScriptCodeMap(0x00000561, 0x00000587, ARMENIAN ) ,
new UScriptCodeMap(0x00000591, 0x000005A1, INHERITED ) ,
new UScriptCodeMap(0x000005A3, 0x000005B9, INHERITED ) ,
new UScriptCodeMap(0x000005BB, 0x000005BD, INHERITED ) ,
new UScriptCodeMap(0x000005BF, 0x000005BF, INHERITED ) ,
new UScriptCodeMap(0x000005C1, 0x000005C2, INHERITED ) ,
new UScriptCodeMap(0x000005C4, 0x000005C4, INHERITED ) ,
new UScriptCodeMap(0x000005D0, 0x000005EA, HEBREW ) ,
new UScriptCodeMap(0x000005F0, 0x000005F2, HEBREW ) ,
new UScriptCodeMap(0x00000621, 0x0000063A, ARABIC ) ,
new UScriptCodeMap(0x00000641, 0x0000064A, ARABIC ) ,
new UScriptCodeMap(0x0000064B, 0x00000655, INHERITED ) ,
new UScriptCodeMap(0x00000670, 0x00000670, INHERITED ) ,
new UScriptCodeMap(0x00000671, 0x000006D3, ARABIC ) ,
new UScriptCodeMap(0x000006D5, 0x000006D5, ARABIC ) ,
new UScriptCodeMap(0x000006D6, 0x000006DC, INHERITED ) ,
new UScriptCodeMap(0x000006DD, 0x000006DE, INHERITED ) ,
new UScriptCodeMap(0x000006DF, 0x000006E4, INHERITED ) ,
new UScriptCodeMap(0x000006E5, 0x000006E6, ARABIC ) ,
new UScriptCodeMap(0x000006E7, 0x000006E8, INHERITED ) ,
new UScriptCodeMap(0x000006EA, 0x000006ED, INHERITED ) ,
new UScriptCodeMap(0x000006FA, 0x000006FC, ARABIC ) ,
new UScriptCodeMap(0x00000710, 0x00000710, SYRIAC ) ,
new UScriptCodeMap(0x00000711, 0x00000711, SYRIAC ) ,
new UScriptCodeMap(0x00000712, 0x0000072C, SYRIAC ) ,
new UScriptCodeMap(0x00000730, 0x0000074A, SYRIAC ) ,
new UScriptCodeMap(0x00000780, 0x000007A5, THAANA ) ,
new UScriptCodeMap(0x000007A6, 0x000007B0, THAANA ) ,
new UScriptCodeMap(0x00000901, 0x00000902, DEVANAGARI ) ,
new UScriptCodeMap(0x00000903, 0x00000903, DEVANAGARI ) ,
new UScriptCodeMap(0x00000905, 0x00000939, DEVANAGARI ) ,
new UScriptCodeMap(0x0000093C, 0x0000093C, DEVANAGARI ) ,
new UScriptCodeMap(0x0000093D, 0x0000093D, DEVANAGARI ) ,
new UScriptCodeMap(0x0000093E, 0x00000940, DEVANAGARI ) ,
new UScriptCodeMap(0x00000941, 0x00000948, DEVANAGARI ) ,
new UScriptCodeMap(0x00000949, 0x0000094C, DEVANAGARI ) ,
new UScriptCodeMap(0x0000094D, 0x0000094D, DEVANAGARI ) ,
new UScriptCodeMap(0x00000950, 0x00000950, DEVANAGARI ) ,
new UScriptCodeMap(0x00000951, 0x00000954, DEVANAGARI ) ,
new UScriptCodeMap(0x00000958, 0x00000961, DEVANAGARI ) ,
new UScriptCodeMap(0x00000962, 0x00000963, DEVANAGARI ) ,
new UScriptCodeMap(0x00000966, 0x0000096F, DEVANAGARI ) ,
new UScriptCodeMap(0x00000981, 0x00000981, BENGALI ) ,
new UScriptCodeMap(0x00000985, 0x0000098C, BENGALI ) ,
new UScriptCodeMap(0x0000098F, 0x00000990, BENGALI ) ,
new UScriptCodeMap(0x00000993, 0x000009A8, BENGALI ) ,
new UScriptCodeMap(0x000009AA, 0x000009B0, BENGALI ) ,
new UScriptCodeMap(0x000009B2, 0x000009B2, BENGALI ) ,
new UScriptCodeMap(0x000009B6, 0x000009B9, BENGALI ) ,
new UScriptCodeMap(0x000009BC, 0x000009BC, BENGALI ) ,
new UScriptCodeMap(0x000009BE, 0x000009C0, BENGALI ) ,
new UScriptCodeMap(0x000009C1, 0x000009C4, BENGALI ) ,
new UScriptCodeMap(0x000009C7, 0x000009C8, BENGALI ) ,
new UScriptCodeMap(0x000009CB, 0x000009CC, BENGALI ) ,
new UScriptCodeMap(0x000009CD, 0x000009CD, BENGALI ) ,
new UScriptCodeMap(0x000009D7, 0x000009D7, BENGALI ) ,
new UScriptCodeMap(0x000009DC, 0x000009DD, BENGALI ) ,
new UScriptCodeMap(0x000009DF, 0x000009E1, BENGALI ) ,
new UScriptCodeMap(0x000009E2, 0x000009E3, BENGALI ) ,
new UScriptCodeMap(0x000009E6, 0x000009EF, BENGALI ) ,
new UScriptCodeMap(0x000009F0, 0x000009F1, BENGALI ) ,
new UScriptCodeMap(0x00000A02, 0x00000A02, GURMUKHI ) ,
new UScriptCodeMap(0x00000A05, 0x00000A0A, GURMUKHI ) ,
new UScriptCodeMap(0x00000A0F, 0x00000A10, GURMUKHI ) ,
new UScriptCodeMap(0x00000A13, 0x00000A28, GURMUKHI ) ,
new UScriptCodeMap(0x00000A2A, 0x00000A30, GURMUKHI ) ,
new UScriptCodeMap(0x00000A32, 0x00000A33, GURMUKHI ) ,
new UScriptCodeMap(0x00000A35, 0x00000A36, GURMUKHI ) ,
new UScriptCodeMap(0x00000A38, 0x00000A39, GURMUKHI ) ,
new UScriptCodeMap(0x00000A3C, 0x00000A3C, GURMUKHI ) ,
new UScriptCodeMap(0x00000A3E, 0x00000A40, GURMUKHI ) ,
new UScriptCodeMap(0x00000A41, 0x00000A42, GURMUKHI ) ,
new UScriptCodeMap(0x00000A47, 0x00000A48, GURMUKHI ) ,
new UScriptCodeMap(0x00000A4B, 0x00000A4D, GURMUKHI ) ,
new UScriptCodeMap(0x00000A59, 0x00000A5C, GURMUKHI ) ,
new UScriptCodeMap(0x00000A5E, 0x00000A5E, GURMUKHI ) ,
new UScriptCodeMap(0x00000A66, 0x00000A6F, GURMUKHI ) ,
new UScriptCodeMap(0x00000A70, 0x00000A71, GURMUKHI ) ,
new UScriptCodeMap(0x00000A72, 0x00000A74, GURMUKHI ) ,
new UScriptCodeMap(0x00000A81, 0x00000A82, GUJARATI ) ,
new UScriptCodeMap(0x00000A83, 0x00000A83, GUJARATI ) ,
new UScriptCodeMap(0x00000A85, 0x00000A8B, GUJARATI ) ,
new UScriptCodeMap(0x00000A8D, 0x00000A8D, GUJARATI ) ,
new UScriptCodeMap(0x00000A8F, 0x00000A91, GUJARATI ) ,
new UScriptCodeMap(0x00000A93, 0x00000AA8, GUJARATI ) ,
new UScriptCodeMap(0x00000AAA, 0x00000AB0, GUJARATI ) ,
new UScriptCodeMap(0x00000AB2, 0x00000AB3, GUJARATI ) ,
new UScriptCodeMap(0x00000AB5, 0x00000AB9, GUJARATI ) ,
new UScriptCodeMap(0x00000ABC, 0x00000ABC, GUJARATI ) ,
new UScriptCodeMap(0x00000ABD, 0x00000ABD, GUJARATI ) ,
new UScriptCodeMap(0x00000ABE, 0x00000AC0, GUJARATI ) ,
new UScriptCodeMap(0x00000AC1, 0x00000AC5, GUJARATI ) ,
new UScriptCodeMap(0x00000AC7, 0x00000AC8, GUJARATI ) ,
new UScriptCodeMap(0x00000AC9, 0x00000AC9, GUJARATI ) ,
new UScriptCodeMap(0x00000ACB, 0x00000ACC, GUJARATI ) ,
new UScriptCodeMap(0x00000ACD, 0x00000ACD, GUJARATI ) ,
new UScriptCodeMap(0x00000AD0, 0x00000AD0, GUJARATI ) ,
new UScriptCodeMap(0x00000AE0, 0x00000AE0, GUJARATI ) ,
new UScriptCodeMap(0x00000AE6, 0x00000AEF, GUJARATI ) ,
new UScriptCodeMap(0x00000B01, 0x00000B01, ORIYA ) ,
new UScriptCodeMap(0x00000B02, 0x00000B03, ORIYA ) ,
new UScriptCodeMap(0x00000B05, 0x00000B0C, ORIYA ) ,
new UScriptCodeMap(0x00000B0F, 0x00000B10, ORIYA ) ,
new UScriptCodeMap(0x00000B13, 0x00000B28, ORIYA ) ,
new UScriptCodeMap(0x00000B2A, 0x00000B30, ORIYA ) ,
new UScriptCodeMap(0x00000B32, 0x00000B33, ORIYA ) ,
new UScriptCodeMap(0x00000B36, 0x00000B39, ORIYA ) ,
new UScriptCodeMap(0x00000B3C, 0x00000B3C, ORIYA ) ,
new UScriptCodeMap(0x00000B3D, 0x00000B3D, ORIYA ) ,
new UScriptCodeMap(0x00000B3E, 0x00000B3E, ORIYA ) ,
new UScriptCodeMap(0x00000B3F, 0x00000B3F, ORIYA ) ,
new UScriptCodeMap(0x00000B40, 0x00000B40, ORIYA ) ,
new UScriptCodeMap(0x00000B41, 0x00000B43, ORIYA ) ,
new UScriptCodeMap(0x00000B47, 0x00000B48, ORIYA ) ,
new UScriptCodeMap(0x00000B4B, 0x00000B4C, ORIYA ) ,
new UScriptCodeMap(0x00000B4D, 0x00000B4D, ORIYA ) ,
new UScriptCodeMap(0x00000B56, 0x00000B56, ORIYA ) ,
new UScriptCodeMap(0x00000B57, 0x00000B57, ORIYA ) ,
new UScriptCodeMap(0x00000B5C, 0x00000B5D, ORIYA ) ,
new UScriptCodeMap(0x00000B5F, 0x00000B61, ORIYA ) ,
new UScriptCodeMap(0x00000B66, 0x00000B6F, ORIYA ) ,
new UScriptCodeMap(0x00000B82, 0x00000B82, TAMIL ) ,
new UScriptCodeMap(0x00000B83, 0x00000B83, TAMIL ) ,
new UScriptCodeMap(0x00000B85, 0x00000B8A, TAMIL ) ,
new UScriptCodeMap(0x00000B8E, 0x00000B90, TAMIL ) ,
new UScriptCodeMap(0x00000B92, 0x00000B95, TAMIL ) ,
new UScriptCodeMap(0x00000B99, 0x00000B9A, TAMIL ) ,
new UScriptCodeMap(0x00000B9C, 0x00000B9C, TAMIL ) ,
new UScriptCodeMap(0x00000B9E, 0x00000B9F, TAMIL ) ,
new UScriptCodeMap(0x00000BA3, 0x00000BA4, TAMIL ) ,
new UScriptCodeMap(0x00000BA8, 0x00000BAA, TAMIL ) ,
new UScriptCodeMap(0x00000BAE, 0x00000BB5, TAMIL ) ,
new UScriptCodeMap(0x00000BB7, 0x00000BB9, TAMIL ) ,
new UScriptCodeMap(0x00000BBE, 0x00000BBF, TAMIL ) ,
new UScriptCodeMap(0x00000BC0, 0x00000BC0, TAMIL ) ,
new UScriptCodeMap(0x00000BC1, 0x00000BC2, TAMIL ) ,
new UScriptCodeMap(0x00000BC6, 0x00000BC8, TAMIL ) ,
new UScriptCodeMap(0x00000BCA, 0x00000BCC, TAMIL ) ,
new UScriptCodeMap(0x00000BCD, 0x00000BCD, TAMIL ) ,
new UScriptCodeMap(0x00000BD7, 0x00000BD7, TAMIL ) ,
new UScriptCodeMap(0x00000BE7, 0x00000BEF, TAMIL ) ,
new UScriptCodeMap(0x00000BF0, 0x00000BF2, TAMIL ) ,
new UScriptCodeMap(0x00000C01, 0x00000C03, TELUGU ) ,
new UScriptCodeMap(0x00000C05, 0x00000C0C, TELUGU ) ,
new UScriptCodeMap(0x00000C0E, 0x00000C10, TELUGU ) ,
new UScriptCodeMap(0x00000C12, 0x00000C28, TELUGU ) ,
new UScriptCodeMap(0x00000C2A, 0x00000C33, TELUGU ) ,
new UScriptCodeMap(0x00000C35, 0x00000C39, TELUGU ) ,
new UScriptCodeMap(0x00000C3E, 0x00000C40, TELUGU ) ,
new UScriptCodeMap(0x00000C41, 0x00000C44, TELUGU ) ,
new UScriptCodeMap(0x00000C46, 0x00000C48, TELUGU ) ,
new UScriptCodeMap(0x00000C4A, 0x00000C4D, TELUGU ) ,
new UScriptCodeMap(0x00000C55, 0x00000C56, TELUGU ) ,
new UScriptCodeMap(0x00000C60, 0x00000C61, TELUGU ) ,
new UScriptCodeMap(0x00000C66, 0x00000C6F, TELUGU ) ,
new UScriptCodeMap(0x00000C82, 0x00000C83, KANNADA ) ,
new UScriptCodeMap(0x00000C85, 0x00000C8C, KANNADA ) ,
new UScriptCodeMap(0x00000C8E, 0x00000C90, KANNADA ) ,
new UScriptCodeMap(0x00000C92, 0x00000CA8, KANNADA ) ,
new UScriptCodeMap(0x00000CAA, 0x00000CB3, KANNADA ) ,
new UScriptCodeMap(0x00000CB5, 0x00000CB9, KANNADA ) ,
new UScriptCodeMap(0x00000CBE, 0x00000CBE, KANNADA ) ,
new UScriptCodeMap(0x00000CBF, 0x00000CBF, KANNADA ) ,
new UScriptCodeMap(0x00000CC0, 0x00000CC4, KANNADA ) ,
new UScriptCodeMap(0x00000CC6, 0x00000CC6, KANNADA ) ,
new UScriptCodeMap(0x00000CC7, 0x00000CC8, KANNADA ) ,
new UScriptCodeMap(0x00000CCA, 0x00000CCB, KANNADA ) ,
new UScriptCodeMap(0x00000CCC, 0x00000CCD, KANNADA ) ,
new UScriptCodeMap(0x00000CD5, 0x00000CD6, KANNADA ) ,
new UScriptCodeMap(0x00000CDE, 0x00000CDE, KANNADA ) ,
new UScriptCodeMap(0x00000CE0, 0x00000CE1, KANNADA ) ,
new UScriptCodeMap(0x00000CE6, 0x00000CEF, KANNADA ) ,
new UScriptCodeMap(0x00000D02, 0x00000D03, MALAYALAM ) ,
new UScriptCodeMap(0x00000D05, 0x00000D0C, MALAYALAM ) ,
new UScriptCodeMap(0x00000D0E, 0x00000D10, MALAYALAM ) ,
new UScriptCodeMap(0x00000D12, 0x00000D28, MALAYALAM ) ,
new UScriptCodeMap(0x00000D2A, 0x00000D39, MALAYALAM ) ,
new UScriptCodeMap(0x00000D3E, 0x00000D40, MALAYALAM ) ,
new UScriptCodeMap(0x00000D41, 0x00000D43, MALAYALAM ) ,
new UScriptCodeMap(0x00000D46, 0x00000D48, MALAYALAM ) ,
new UScriptCodeMap(0x00000D4A, 0x00000D4C, MALAYALAM ) ,
new UScriptCodeMap(0x00000D4D, 0x00000D4D, MALAYALAM ) ,
new UScriptCodeMap(0x00000D57, 0x00000D57, MALAYALAM ) ,
new UScriptCodeMap(0x00000D60, 0x00000D61, MALAYALAM ) ,
new UScriptCodeMap(0x00000D66, 0x00000D6F, MALAYALAM ) ,
new UScriptCodeMap(0x00000D82, 0x00000D83, SINHALA ) ,
new UScriptCodeMap(0x00000D85, 0x00000D96, SINHALA ) ,
new UScriptCodeMap(0x00000D9A, 0x00000DB1, SINHALA ) ,
new UScriptCodeMap(0x00000DB3, 0x00000DBB, SINHALA ) ,
new UScriptCodeMap(0x00000DBD, 0x00000DBD, SINHALA ) ,
new UScriptCodeMap(0x00000DC0, 0x00000DC6, SINHALA ) ,
new UScriptCodeMap(0x00000DCA, 0x00000DCA, SINHALA ) ,
new UScriptCodeMap(0x00000DCF, 0x00000DD1, SINHALA ) ,
new UScriptCodeMap(0x00000DD2, 0x00000DD4, SINHALA ) ,
new UScriptCodeMap(0x00000DD6, 0x00000DD6, SINHALA ) ,
new UScriptCodeMap(0x00000DD8, 0x00000DDF, SINHALA ) ,
new UScriptCodeMap(0x00000DF2, 0x00000DF3, SINHALA ) ,
new UScriptCodeMap(0x00000E01, 0x00000E30, THAI ) ,
new UScriptCodeMap(0x00000E31, 0x00000E31, THAI ) ,
new UScriptCodeMap(0x00000E32, 0x00000E33, THAI ) ,
new UScriptCodeMap(0x00000E34, 0x00000E3A, THAI ) ,
new UScriptCodeMap(0x00000E40, 0x00000E45, THAI ) ,
new UScriptCodeMap(0x00000E46, 0x00000E46, THAI ) ,
new UScriptCodeMap(0x00000E47, 0x00000E4E, THAI ) ,
new UScriptCodeMap(0x00000E50, 0x00000E59, THAI ) ,
new UScriptCodeMap(0x00000E81, 0x00000E82, LAO ) ,
new UScriptCodeMap(0x00000E84, 0x00000E84, LAO ) ,
new UScriptCodeMap(0x00000E87, 0x00000E88, LAO ) ,
new UScriptCodeMap(0x00000E8A, 0x00000E8A, LAO ) ,
new UScriptCodeMap(0x00000E8D, 0x00000E8D, LAO ) ,
new UScriptCodeMap(0x00000E94, 0x00000E97, LAO ) ,
new UScriptCodeMap(0x00000E99, 0x00000E9F, LAO ) ,
new UScriptCodeMap(0x00000EA1, 0x00000EA3, LAO ) ,
new UScriptCodeMap(0x00000EA5, 0x00000EA5, LAO ) ,
new UScriptCodeMap(0x00000EA7, 0x00000EA7, LAO ) ,
new UScriptCodeMap(0x00000EAA, 0x00000EAB, LAO ) ,
new UScriptCodeMap(0x00000EAD, 0x00000EB0, LAO ) ,
new UScriptCodeMap(0x00000EB1, 0x00000EB1, LAO ) ,
new UScriptCodeMap(0x00000EB2, 0x00000EB3, LAO ) ,
new UScriptCodeMap(0x00000EB4, 0x00000EB9, LAO ) ,
new UScriptCodeMap(0x00000EBB, 0x00000EBC, LAO ) ,
new UScriptCodeMap(0x00000EBD, 0x00000EBD, LAO ) ,
new UScriptCodeMap(0x00000EC0, 0x00000EC4, LAO ) ,
new UScriptCodeMap(0x00000EC6, 0x00000EC6, LAO ) ,
new UScriptCodeMap(0x00000EC8, 0x00000ECD, LAO ) ,
new UScriptCodeMap(0x00000ED0, 0x00000ED9, LAO ) ,
new UScriptCodeMap(0x00000EDC, 0x00000EDD, LAO ) ,
new UScriptCodeMap(0x00000F00, 0x00000F00, TIBETAN ) ,
new UScriptCodeMap(0x00000F18, 0x00000F19, TIBETAN ) ,
new UScriptCodeMap(0x00000F20, 0x00000F29, TIBETAN ) ,
new UScriptCodeMap(0x00000F2A, 0x00000F33, TIBETAN ) ,
new UScriptCodeMap(0x00000F35, 0x00000F35, TIBETAN ) ,
new UScriptCodeMap(0x00000F37, 0x00000F37, TIBETAN ) ,
new UScriptCodeMap(0x00000F39, 0x00000F39, TIBETAN ) ,
new UScriptCodeMap(0x00000F40, 0x00000F47, TIBETAN ) ,
new UScriptCodeMap(0x00000F49, 0x00000F6A, TIBETAN ) ,
new UScriptCodeMap(0x00000F71, 0x00000F7E, TIBETAN ) ,
new UScriptCodeMap(0x00000F7F, 0x00000F7F, TIBETAN ) ,
new UScriptCodeMap(0x00000F80, 0x00000F84, TIBETAN ) ,
new UScriptCodeMap(0x00000F86, 0x00000F87, TIBETAN ) ,
new UScriptCodeMap(0x00000F88, 0x00000F8B, TIBETAN ) ,
new UScriptCodeMap(0x00000F90, 0x00000F97, TIBETAN ) ,
new UScriptCodeMap(0x00000F99, 0x00000FBC, TIBETAN ) ,
new UScriptCodeMap(0x00000FC6, 0x00000FC6, TIBETAN ) ,
new UScriptCodeMap(0x00001000, 0x00001021, MYANMAR ) ,
new UScriptCodeMap(0x00001023, 0x00001027, MYANMAR ) ,
new UScriptCodeMap(0x00001029, 0x0000102A, MYANMAR ) ,
new UScriptCodeMap(0x0000102C, 0x0000102C, MYANMAR ) ,
new UScriptCodeMap(0x0000102D, 0x00001030, MYANMAR ) ,
new UScriptCodeMap(0x00001031, 0x00001031, MYANMAR ) ,
new UScriptCodeMap(0x00001032, 0x00001032, MYANMAR ) ,
new UScriptCodeMap(0x00001036, 0x00001037, MYANMAR ) ,
new UScriptCodeMap(0x00001038, 0x00001038, MYANMAR ) ,
new UScriptCodeMap(0x00001039, 0x00001039, MYANMAR ) ,
new UScriptCodeMap(0x00001040, 0x00001049, MYANMAR ) ,
new UScriptCodeMap(0x00001050, 0x00001055, MYANMAR ) ,
new UScriptCodeMap(0x00001056, 0x00001057, MYANMAR ) ,
new UScriptCodeMap(0x00001058, 0x00001059, MYANMAR ) ,
new UScriptCodeMap(0x000010A0, 0x000010C5, GEORGIAN ) ,
new UScriptCodeMap(0x000010D0, 0x000010F6, GEORGIAN ) ,
new UScriptCodeMap(0x00001100, 0x00001159, HANGUL ) ,
new UScriptCodeMap(0x0000115F, 0x000011A2, HANGUL ) ,
new UScriptCodeMap(0x000011A8, 0x000011F9, HANGUL ) ,
new UScriptCodeMap(0x00001200, 0x00001206, ETHIOPIC ) ,
new UScriptCodeMap(0x00001208, 0x00001246, ETHIOPIC ) ,
new UScriptCodeMap(0x00001248, 0x00001248, ETHIOPIC ) ,
new UScriptCodeMap(0x0000124A, 0x0000124D, ETHIOPIC ) ,
new UScriptCodeMap(0x00001250, 0x00001256, ETHIOPIC ) ,
new UScriptCodeMap(0x00001258, 0x00001258, ETHIOPIC ) ,
new UScriptCodeMap(0x0000125A, 0x0000125D, ETHIOPIC ) ,
new UScriptCodeMap(0x00001260, 0x00001286, ETHIOPIC ) ,
new UScriptCodeMap(0x00001288, 0x00001288, ETHIOPIC ) ,
new UScriptCodeMap(0x0000128A, 0x0000128D, ETHIOPIC ) ,
new UScriptCodeMap(0x00001290, 0x000012AE, ETHIOPIC ) ,
new UScriptCodeMap(0x000012B0, 0x000012B0, ETHIOPIC ) ,
new UScriptCodeMap(0x000012B2, 0x000012B5, ETHIOPIC ) ,
new UScriptCodeMap(0x000012B8, 0x000012BE, ETHIOPIC ) ,
new UScriptCodeMap(0x000012C0, 0x000012C0, ETHIOPIC ) ,
new UScriptCodeMap(0x000012C2, 0x000012C5, ETHIOPIC ) ,
new UScriptCodeMap(0x000012C8, 0x000012CE, ETHIOPIC ) ,
new UScriptCodeMap(0x000012D0, 0x000012D6, ETHIOPIC ) ,
new UScriptCodeMap(0x000012D8, 0x000012EE, ETHIOPIC ) ,
new UScriptCodeMap(0x000012F0, 0x0000130E, ETHIOPIC ) ,
new UScriptCodeMap(0x00001310, 0x00001310, ETHIOPIC ) ,
new UScriptCodeMap(0x00001312, 0x00001315, ETHIOPIC ) ,
new UScriptCodeMap(0x00001318, 0x0000131E, ETHIOPIC ) ,
new UScriptCodeMap(0x00001320, 0x00001346, ETHIOPIC ) ,
new UScriptCodeMap(0x00001348, 0x0000135A, ETHIOPIC ) ,
new UScriptCodeMap(0x00001369, 0x00001371, ETHIOPIC ) ,
new UScriptCodeMap(0x00001372, 0x0000137C, ETHIOPIC ) ,
new UScriptCodeMap(0x000013A0, 0x000013F4, CHEROKEE ) ,
new UScriptCodeMap(0x00001401, 0x0000166C, UCAS ) ,
new UScriptCodeMap(0x0000166F, 0x00001676, UCAS ) ,
new UScriptCodeMap(0x00001681, 0x0000169A, OGHAM ) ,
new UScriptCodeMap(0x000016A0, 0x000016EA, RUNIC ) ,
new UScriptCodeMap(0x000016EE, 0x000016F0, RUNIC ) ,
new UScriptCodeMap(0x00001780, 0x000017B3, KHMER ) ,
new UScriptCodeMap(0x000017B4, 0x000017B6, KHMER ) ,
new UScriptCodeMap(0x000017B7, 0x000017BD, KHMER ) ,
new UScriptCodeMap(0x000017BE, 0x000017C5, KHMER ) ,
new UScriptCodeMap(0x000017C6, 0x000017C6, KHMER ) ,
new UScriptCodeMap(0x000017C7, 0x000017C8, KHMER ) ,
new UScriptCodeMap(0x000017C9, 0x000017D3, KHMER ) ,
new UScriptCodeMap(0x000017E0, 0x000017E9, KHMER ) ,
new UScriptCodeMap(0x00001810, 0x00001819, MONGOLIAN ) ,
new UScriptCodeMap(0x00001820, 0x00001842, MONGOLIAN ) ,
new UScriptCodeMap(0x00001843, 0x00001843, MONGOLIAN ) ,
new UScriptCodeMap(0x00001844, 0x00001877, MONGOLIAN ) ,
new UScriptCodeMap(0x00001880, 0x000018A8, MONGOLIAN ) ,
new UScriptCodeMap(0x000018A9, 0x000018A9, MONGOLIAN ) ,
new UScriptCodeMap(0x00001E00, 0x00001E9B, LATIN ) ,
new UScriptCodeMap(0x00001EA0, 0x00001EF9, LATIN ) ,
new UScriptCodeMap(0x00001F00, 0x00001F15, GREEK ) ,
new UScriptCodeMap(0x00001F18, 0x00001F1D, GREEK ) ,
new UScriptCodeMap(0x00001F20, 0x00001F45, GREEK ) ,
new UScriptCodeMap(0x00001F48, 0x00001F4D, GREEK ) ,
new UScriptCodeMap(0x00001F50, 0x00001F57, GREEK ) ,
new UScriptCodeMap(0x00001F59, 0x00001F59, GREEK ) ,
new UScriptCodeMap(0x00001F5B, 0x00001F5B, GREEK ) ,
new UScriptCodeMap(0x00001F5D, 0x00001F5D, GREEK ) ,
new UScriptCodeMap(0x00001F5F, 0x00001F7D, GREEK ) ,
new UScriptCodeMap(0x00001F80, 0x00001FB4, GREEK ) ,
new UScriptCodeMap(0x00001FB6, 0x00001FBC, GREEK ) ,
new UScriptCodeMap(0x00001FBE, 0x00001FBE, GREEK ) ,
new UScriptCodeMap(0x00001FC2, 0x00001FC4, GREEK ) ,
new UScriptCodeMap(0x00001FC6, 0x00001FCC, GREEK ) ,
new UScriptCodeMap(0x00001FD0, 0x00001FD3, GREEK ) ,
new UScriptCodeMap(0x00001FD6, 0x00001FDB, GREEK ) ,
new UScriptCodeMap(0x00001FE0, 0x00001FEC, GREEK ) ,
new UScriptCodeMap(0x00001FF2, 0x00001FF4, GREEK ) ,
new UScriptCodeMap(0x00001FF6, 0x00001FFC, GREEK ) ,
new UScriptCodeMap(0x0000207F, 0x0000207F, LATIN ) ,
new UScriptCodeMap(0x000020D0, 0x000020DC, INHERITED ) ,
new UScriptCodeMap(0x000020DD, 0x000020E0, INHERITED ) ,
new UScriptCodeMap(0x000020E1, 0x000020E1, INHERITED ) ,
new UScriptCodeMap(0x000020E2, 0x000020E3, INHERITED ) ,
new UScriptCodeMap(0x00002126, 0x00002126, GREEK ) ,
new UScriptCodeMap(0x0000212A, 0x0000212B, LATIN ) ,
new UScriptCodeMap(0x00002E80, 0x00002E99, HAN ) ,
new UScriptCodeMap(0x00002E9B, 0x00002EF3, HAN ) ,
new UScriptCodeMap(0x00002F00, 0x00002FD5, HAN ) ,
new UScriptCodeMap(0x00003005, 0x00003005, HAN ) ,
new UScriptCodeMap(0x00003007, 0x00003007, HAN ) ,
new UScriptCodeMap(0x00003021, 0x00003029, HAN ) ,
new UScriptCodeMap(0x0000302A, 0x0000302F, INHERITED ) ,
new UScriptCodeMap(0x00003038, 0x0000303A, HAN ) ,
new UScriptCodeMap(0x00003041, 0x00003094, HIRAGANA ) ,
new UScriptCodeMap(0x00003099, 0x0000309A, INHERITED ) ,
new UScriptCodeMap(0x0000309D, 0x0000309E, HIRAGANA ) ,
new UScriptCodeMap(0x000030A1, 0x000030FA, KATAKANA ) ,
new UScriptCodeMap(0x000030FD, 0x000030FE, KATAKANA ) ,
new UScriptCodeMap(0x00003105, 0x0000312C, BOPOMOFO ) ,
new UScriptCodeMap(0x00003131, 0x0000318E, HANGUL ) ,
new UScriptCodeMap(0x000031A0, 0x000031B7, BOPOMOFO ) ,
new UScriptCodeMap(0x00003400, 0x00004DB5, HAN ) ,
new UScriptCodeMap(0x00004E00, 0x00009FA5, HAN ) ,
new UScriptCodeMap(0x0000A000, 0x0000A48C, YI ) ,
new UScriptCodeMap(0x0000A490, 0x0000A4A1, YI ) ,
new UScriptCodeMap(0x0000A4A4, 0x0000A4B3, YI ) ,
new UScriptCodeMap(0x0000A4B5, 0x0000A4C0, YI ) ,
new UScriptCodeMap(0x0000A4C2, 0x0000A4C4, YI ) ,
new UScriptCodeMap(0x0000A4C6, 0x0000A4C6, YI ) ,
new UScriptCodeMap(0x0000AC00, 0x0000D7A3, HANGUL ) ,
new UScriptCodeMap(0x0000F900, 0x0000FA2D, HAN ) ,
new UScriptCodeMap(0x0000FB00, 0x0000FB06, LATIN ) ,
new UScriptCodeMap(0x0000FB13, 0x0000FB17, ARMENIAN ) ,
new UScriptCodeMap(0x0000FB1D, 0x0000FB1D, HEBREW ) ,
new UScriptCodeMap(0x0000FB1E, 0x0000FB1E, INHERITED ) ,
new UScriptCodeMap(0x0000FB1F, 0x0000FB28, HEBREW ) ,
new UScriptCodeMap(0x0000FB2A, 0x0000FB36, HEBREW ) ,
new UScriptCodeMap(0x0000FB38, 0x0000FB3C, HEBREW ) ,
new UScriptCodeMap(0x0000FB3E, 0x0000FB3E, HEBREW ) ,
new UScriptCodeMap(0x0000FB40, 0x0000FB41, HEBREW ) ,
new UScriptCodeMap(0x0000FB43, 0x0000FB44, HEBREW ) ,
new UScriptCodeMap(0x0000FB46, 0x0000FB4F, HEBREW ) ,
new UScriptCodeMap(0x0000FB50, 0x0000FBB1, ARABIC ) ,
new UScriptCodeMap(0x0000FBD3, 0x0000FD3D, ARABIC ) ,
new UScriptCodeMap(0x0000FD50, 0x0000FD8F, ARABIC ) ,
new UScriptCodeMap(0x0000FD92, 0x0000FDC7, ARABIC ) ,
new UScriptCodeMap(0x0000FDF0, 0x0000FDFB, ARABIC ) ,
new UScriptCodeMap(0x0000FE20, 0x0000FE23, INHERITED ) ,
new UScriptCodeMap(0x0000FE70, 0x0000FE72, ARABIC ) ,
new UScriptCodeMap(0x0000FE74, 0x0000FE74, ARABIC ) ,
new UScriptCodeMap(0x0000FE76, 0x0000FEFC, ARABIC ) ,
new UScriptCodeMap(0x0000FF21, 0x0000FF3A, LATIN ) ,
new UScriptCodeMap(0x0000FF41, 0x0000FF5A, LATIN ) ,
new UScriptCodeMap(0x0000FF66, 0x0000FF6F, KATAKANA ) ,
new UScriptCodeMap(0x0000FF71, 0x0000FF9D, KATAKANA ) ,
new UScriptCodeMap(0x0000FFA0, 0x0000FFBE, HANGUL ) ,
new UScriptCodeMap(0x0000FFC2, 0x0000FFC7, HANGUL ) ,
new UScriptCodeMap(0x0000FFCA, 0x0000FFCF, HANGUL ) ,
new UScriptCodeMap(0x0000FFD2, 0x0000FFD7, HANGUL ) ,
new UScriptCodeMap(0x0000FFDA, 0x0000FFDC, HANGUL ) ,
new UScriptCodeMap(0x00010300, 0x0001031E, OLD_ITALIC ) ,
new UScriptCodeMap(0x00010330, 0x00010349, GOTHIC ) ,
new UScriptCodeMap(0x0001034A, 0x0001034A, GOTHIC ) ,
new UScriptCodeMap(0x00010400, 0x00010425, DESERET ) ,
new UScriptCodeMap(0x00010428, 0x0001044D, DESERET ) ,
new UScriptCodeMap(0x0001D167, 0x0001D169, INHERITED ) ,
new UScriptCodeMap(0x0001D17B, 0x0001D182, INHERITED ) ,
new UScriptCodeMap(0x0001D185, 0x0001D18B, INHERITED ) ,
new UScriptCodeMap(0x0001D1AA, 0x0001D1AD, INHERITED ) ,
new UScriptCodeMap(0x00020000, 0x0002A6D6, HAN ) ,
};
/* binary search the string array */
private static int findStringIndex(String[] sortedArr, String target){
int size = sortedArr.length;
int left, middle, right,rc;
left =0;
right= size-1;
target = target.toUpperCase();
while(left <= right){
middle = (left+right)/2;
rc=sortedArr[middle].toUpperCase().compareTo(target);
if(rc<0){
left = middle+1;
}else if(rc >0){
right = middle -1;
}else{
return middle;
}
}
return -1;
}
/* linearly search the array and return the index */
private static int findCodeIndex(int[] unsorted, int target){
int size = unsorted.length;
int i=0;
while(i<size){
if(target == unsorted[i]){
return i;
}
i++;
}
return -1;
}
/**
* Helper function to find the code from locale.
* @param Locale the locale.
* @exception MissingResourceException if LocaleScript cannot be opened
*/
private static int[] findCodeFromLocale(Locale locale) {
ResourceBundle rb = ICULocaleData.getLocaleElements(locale);
// if rb is not a strict fallback of the requested locale, return null
if (!LocaleUtility.isFallbackOf(rb.getLocale(), locale)) {
return null;
}
String[] scripts = rb.getStringArray("LocaleScript");
int[] result = new int[scripts.length];
int w = 0;
for (int i = 0; i < scripts.length; ++i) {
int strIndex = findStringIndex(scriptAbbr, scripts[i]);
if (strIndex != -1) {
result[w++] = scriptAbbrCodes[strIndex];
}
}
if (w < result.length) {
throw new InternalError("bad locale data, listed " + scripts.length + " scripts but found only " + w);
/*
int[] newResult = new int[w];
System.arraycopy(result, 0, newResult, 0, w);
result = newResult;
*/
}
return result;
}
/* binary search the string array */
private static int findScriptCode(int codepoint){
int left, middle, right,rc;
left =0;
right= scriptCodeIndex.length-1;
while(left <= right){
middle = (left+right)/2;
/* check if the codepoint is the valid range */
if(scriptCodeIndex[middle].firstCodepoint<= codepoint &&
scriptCodeIndex[middle].lastCodepoint>= codepoint){
rc = 0;
}else if(codepoint> scriptCodeIndex[middle].lastCodepoint){
rc =-1;
}else {
rc = 1;
}
if(rc<0){
left = middle+1;
}else if(rc >0){
right = middle -1;
}else{
return scriptCodeIndex[middle].scriptCode;
}
}
return COMMON;
}
/**
* Gets a script codes associated with the given locale or ISO 15924 abbreviation or name.
* Returns MALAYAM given "Malayam" OR "Mlym".
* Returns LATIN given "en" OR "en_US"
* @param locale Locale
* @return The script codes array. null if the the code cannot be found.
* @exception MissingResourceException
* @draft
*/
public static final int[] getCode(Locale locale)
throws MissingResourceException {
return findCodeFromLocale(locale);
}
/**
* Gets a script codes associated with the given locale or ISO 15924 abbreviation or name.
* Returns MALAYAM given "Malayam" OR "Mlym".
* Returns LATIN given "en" OR "en_US"
* @param nameOrAbbrOrLocale name of the script or ISO 15924 code or locale
* @return The script codes array. null if the the code cannot be found.
* @draft
*/
public static final int[] getCode(String nameOrAbbrOrLocale){
int[] code = new int[1];
code[0] = INVALID_CODE;
int strIndex=0;
/* try the Names array first */
strIndex = findStringIndex(scriptNames, nameOrAbbrOrLocale);
if(strIndex>=0 && strIndex < scriptNames.length){
code[0] = scriptNameCodes[strIndex];
}
/* we did not find in names array so try abbr array*/
if(code[0] == INVALID_CODE){
strIndex = findStringIndex(scriptAbbr, nameOrAbbrOrLocale);
if(strIndex>=0 && strIndex < scriptAbbr.length){
code[0] = scriptAbbrCodes[strIndex];
}
}
/* we still haven't found it try locale */
if(code[0]==INVALID_CODE){
code = findCodeFromLocale(LocaleUtility.getLocaleFromName(nameOrAbbrOrLocale));
}
return code;
}
/**
* Gets the script code associated with the given codepoint.
* Returns UScript.MALAYAM given 0x0D02
* @param codepoint UChar32 codepoint
* @param err the error status code.
* @return The script code
* @exception IllegalArgumentException
* @draft
*/
public static final int getScript(int codepoint){
if (codepoint >= UCharacter.MIN_VALUE & codepoint <= UCharacter.MAX_VALUE) {
return findScriptCode(codepoint);
}else{
throw new IllegalArgumentException(Integer.toString(codepoint));
}
}
/**
* Gets a script name associated with the given script code.
* Returns "Malayam" given MALAYAM
* @param scriptCode int script code
* @return script name as a string in full as given in TR#24
* @exception IllegalArgumentException
* @draft
*/
public static final String getName(int scriptCode){
int index = -1;
if(scriptCode > CODE_LIMIT){
throw new IllegalArgumentException(Integer.toString(scriptCode));
}
index = findCodeIndex(scriptNameCodes,scriptCode);
if(index >=0){
return scriptNames[index];
}else{
throw new IllegalArgumentException(Integer.toString(scriptCode));
}
}
/**
* Gets a script name associated with the given script code.
* Returns "Mlym" given MALAYAM
* @param scriptCode int script code
* @return script abbreviated name as a string as given in TR#24
* @exception IllegalArgumentException
* @draft
*/
public static final String getShortName(int scriptCode){
int index = -1;
if(scriptCode > CODE_LIMIT){
throw new IllegalArgumentException(Integer.toString(scriptCode));
}
index = findCodeIndex(scriptAbbrCodes,scriptCode);
if(index >=0){
return scriptAbbr[index];
}else{
throw new IllegalArgumentException(Integer.toString(scriptCode));
}
}
}