本文基于JDK1.8学习与分析Character源码。
public final class Character implements java.io.Serializable, Comparable<Character>
Character
包装对象中的基本类型char
的值。类型为Character
对象包含单个字段,类型为char
。此外,该类还提供了几种确定字符类别(小写字母、数字等)的方法,并将字符从大写转换为小写,反之亦然。
package java.lang; import java.util.Arrays; import java.util.Map; import java.util.HashMap; import java.util.Locale; /** * @author Lee Boynton * @author Guy Steele * @author Akira Tanaka * @author Martin Buchholz * @author Ulf Zibis * @since 1.0 */ public final class Character implements java.io.Serializable, Comparable<Character> { /** * 可转换为字符串和从字符串转换的最小、大基数。 */ public static final int MIN_RADIX = 2; public static final int MAX_RADIX = 36; /** * char常量 */ public static final char MIN_VALUE = '\u0000'; public static final char MAX_VALUE = '\uFFFF'; /** * 获取包装类对应的Class对象 */ @SuppressWarnings("unchecked") public static final Class<Character> TYPE = (Class<Character>) Class.getPrimitiveClass("char"); /** * byte常量 */ public static final byte UNASSIGNED = 0; public static final byte UPPERCASE_LETTER = 1; public static final byte LOWERCASE_LETTER = 2; public static final byte TITLECASE_LETTER = 3; public static final byte MODIFIER_LETTER = 4; public static final byte OTHER_LETTER = 5; public static final byte NON_SPACING_MARK = 6; public static final byte ENCLOSING_MARK = 7; public static final byte COMBINING_SPACING_MARK = 8; public static final byte DECIMAL_DIGIT_NUMBER = 9; public static final byte LETTER_NUMBER = 10; public static final byte OTHER_NUMBER = 11; public static final byte SPACE_SEPARATOR = 12; public static final byte LINE_SEPARATOR = 13; public static final byte PARAGRAPH_SEPARATOR = 14; public static final byte CONTROL = 15; public static final byte FORMAT = 16; public static final byte PRIVATE_USE = 18; public static final byte SURROGATE = 19; public static final byte DASH_PUNCTUATION = 20; public static final byte START_PUNCTUATION = 21; public static final byte END_PUNCTUATION = 22; public static final byte CONNECTOR_PUNCTUATION = 23; public static final byte OTHER_PUNCTUATION = 24; public static final byte MATH_SYMBOL = 25; public static final byte CURRENCY_SYMBOL = 26; public static final byte MODIFIER_SYMBOL = 27; public static final byte OTHER_SYMBOL = 28; public static final byte INITIAL_QUOTE_PUNCTUATION = 29; public static final byte FINAL_QUOTE_PUNCTUATION = 30; /** * 定义一个int类型错误标记 */ static final int ERROR = 0xFFFFFFFF; /** * byte常量 */ public static final byte DIRECTIONALITY_UNDEFINED = -1; public static final byte DIRECTIONALITY_LEFT_TO_RIGHT = 0; public static final byte DIRECTIONALITY_RIGHT_TO_LEFT = 1; public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC = 2; public static final byte DIRECTIONALITY_EUROPEAN_NUMBER = 3; public static final byte DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR = 4; public static final byte DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR = 5; public static final byte DIRECTIONALITY_ARABIC_NUMBER = 6; public static final byte DIRECTIONALITY_COMMON_NUMBER_SEPARATOR = 7; public static final byte DIRECTIONALITY_NONSPACING_MARK = 8; public static final byte DIRECTIONALITY_BOUNDARY_NEUTRAL = 9; public static final byte DIRECTIONALITY_PARAGRAPH_SEPARATOR = 10; public static final byte DIRECTIONALITY_SEGMENT_SEPARATOR = 11; public static final byte DIRECTIONALITY_WHITESPACE = 12; public static final byte DIRECTIONALITY_OTHER_NEUTRALS = 13; public static final byte DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING = 14; public static final byte DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE = 15; public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING = 16; public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE = 17; public static final byte DIRECTIONALITY_POP_DIRECTIONAL_FORMAT = 18; /** * char常量 */ public static final char MIN_HIGH_SURROGATE = '\uD800'; public static final char MAX_HIGH_SURROGATE = '\uDBFF'; public static final char MIN_LOW_SURROGATE = '\uDC00'; public static final char MAX_LOW_SURROGATE = '\uDFFF'; public static final char MIN_SURROGATE = MIN_HIGH_SURROGATE; public static final char MAX_SURROGATE = MAX_LOW_SURROGATE; /** * int常量 */ public static final int MIN_SUPPLEMENTARY_CODE_POINT = 0x010000; public static final int MIN_CODE_POINT = 0x00000;
public static final int MAX_CODE_POINT = 0X10FFFF;
/**
* Unicode字符集的特定子集
*/
public static class Subset {
private String name;
protected Subset(String name) {
if (name == null) {
throw new NullPointerException("name");
}
this.name = name;
}
/**
* 比较两个 Subset对象的相等性
*/
public final boolean equals(Object obj) {
return (this == obj);
}
/**
* 返回由 Object.hashCode()方法定义的标准哈希码
*/
public final int hashCode() {
return super.hashCode();
}
/**
* 返回此子集的名称
*/
public final String toString() {
return name;
}
}
/**
* 静态内部类UnicodeBlock
*/
public static final class UnicodeBlock extends Subset {
private static Map<String, UnicodeBlock> map = new HashMap<>(256);
/**
* 私有构造方法
*/
private UnicodeBlock(String idName) {
super(idName);
map.put(idName, this);
}
private UnicodeBlock(String idName, String alias) {
this(idName);
map.put(alias, this);
}
private UnicodeBlock(String idName, String... aliases) {
this(idName);
for (String alias : aliases)
map.put(alias, this);
}
/**
* 静态常量类UnicodeBlock
*/
public static final UnicodeBlock BASIC_LATIN =
new UnicodeBlock("BASIC_LATIN",
"BASIC LATIN",
"BASICLATIN");
public static final UnicodeBlock LATIN_1_SUPPLEMENT =
new UnicodeBlock("LATIN_1_SUPPLEMENT",
"LATIN-1 SUPPLEMENT",
"LATIN-1SUPPLEMENT");
public static final UnicodeBlock LATIN_EXTENDED_A =
new UnicodeBlock("LATIN_EXTENDED_A",
"LATIN EXTENDED-A",
"LATINEXTENDED-A");
public static final UnicodeBlock LATIN_EXTENDED_B =
new UnicodeBlock("LATIN_EXTENDED_B",
"LATIN EXTENDED-B",
"LATINEXTENDED-B");
public static final UnicodeBlock IPA_EXTENSIONS =
new UnicodeBlock("IPA_EXTENSIONS",
"IPA EXTENSIONS",
"IPAEXTENSIONS");
public static final UnicodeBlock SPACING_MODIFIER_LETTERS =
new UnicodeBlock("SPACING_MODIFIER_LETTERS",
"SPACING MODIFIER LETTERS",
"SPACINGMODIFIERLETTERS");
public static final UnicodeBlock COMBINING_DIACRITICAL_MARKS =
new UnicodeBlock("COMBINING_DIACRITICAL_MARKS",
"COMBINING DIACRITICAL MARKS",
"COMBININGDIACRITICALMARKS");
public static final UnicodeBlock GREEK =
new UnicodeBlock("GREEK",
"GREEK AND COPTIC",
"GREEKANDCOPTIC");
public static final UnicodeBlock CYRILLIC =
new UnicodeBlock("CYRILLIC");
public static final UnicodeBlock ARMENIAN =
new UnicodeBlock("ARMENIAN");
public static final UnicodeBlock HEBREW =
new UnicodeBlock("HEBREW");
public static final UnicodeBlock ARABIC =
new UnicodeBlock("ARABIC");
public static final UnicodeBlock DEVANAGARI =
new UnicodeBlock("DEVANAGARI");
public static final UnicodeBlock BENGALI =
new UnicodeBlock("BENGALI");
public static final UnicodeBlock GURMUKHI =
new UnicodeBlock("GURMUKHI");
public static final UnicodeBlock GUJARATI =
new UnicodeBlock("GUJARATI");
public static final UnicodeBlock ORIYA =
new UnicodeBlock("ORIYA");
public static final UnicodeBlock TAMIL =
new UnicodeBlock("TAMIL");
public static final UnicodeBlock TELUGU =
new UnicodeBlock("TELUGU");
public static final UnicodeBlock KANNADA =
new UnicodeBlock("KANNADA");
public static final UnicodeBlock MALAYALAM =
new UnicodeBlock("MALAYALAM");
public static final UnicodeBlock THAI =
new UnicodeBlock("THAI");
public static final UnicodeBlock LAO =
new UnicodeBlock("LAO");
public static final UnicodeBlock TIBETAN =
new UnicodeBlock("TIBETAN");
public static final UnicodeBlock GEORGIAN =
new UnicodeBlock("GEORGIAN");
public static final UnicodeBlock HANGUL_JAMO =
new UnicodeBlock("HANGUL_JAMO",
"HANGUL JAMO",
"HANGULJAMO");
public static final UnicodeBlock LATIN_EXTENDED_ADDITIONAL =
new UnicodeBlock("LATIN_EXTENDED_ADDITIONAL",
"LATIN EXTENDED ADDITIONAL",
"LATINEXTENDEDADDITIONAL");
public static final UnicodeBlock GREEK_EXTENDED =
new UnicodeBlock("GREEK_EXTENDED",
"GREEK EXTENDED",
"GREEKEXTENDED");
public static final UnicodeBlock GENERAL_PUNCTUATION =
new UnicodeBlock("GENERAL_PUNCTUATION",
"GENERAL PUNCTUATION",
"GENERALPUNCTUATION");
public static final UnicodeBlock SUPERSCRIPTS_AND_SUBSCRIPTS =
new UnicodeBlock("SUPERSCRIPTS_AND_SUBSCRIPTS",
"SUPERSCRIPTS AND SUBSCRIPTS",
"SUPERSCRIPTSANDSUBSCRIPTS");
public static final UnicodeBlock CURRENCY_SYMBOLS =
new UnicodeBlock("CURRENCY_SYMBOLS",
"CURRENCY SYMBOLS",
"CURRENCYSYMBOLS");
public static final UnicodeBlock COMBINING_MARKS_FOR_SYMBOLS =
new UnicodeBlock("COMBINING_MARKS_FOR_SYMBOLS",
"COMBINING DIACRITICAL MARKS FOR SYMBOLS",
"COMBININGDIACRITICALMARKSFORSYMBOLS",
"COMBINING MARKS FOR SYMBOLS",
"COMBININGMARKSFORSYMBOLS");
public static final UnicodeBlock LETTERLIKE_SYMBOLS =
new UnicodeBlock("LETTERLIKE_SYMBOLS",
"LETTERLIKE SYMBOLS",
"LETTERLIKESYMBOLS");
public static final UnicodeBlock NUMBER_FORMS =
new UnicodeBlock("NUMBER_FORMS",
"NUMBER FORMS",
"NUMBERFORMS");
public static final UnicodeBlock ARROWS =
new UnicodeBlock("ARROWS");
public static final UnicodeBlock MATHEMATICAL_OPERATORS =
new UnicodeBlock("MATHEMATICAL_OPERATORS",
"MATHEMATICAL OPERATORS",
"MATHEMATICALOPERATORS");
public static final UnicodeBlock MISCELLANEOUS_TECHNICAL =
new UnicodeBlock("MISCELLANEOUS_TECHNICAL",
"MISCELLANEOUS TECHNICAL",
"MISCELLANEOUSTECHNICAL");
public static final UnicodeBlock CONTROL_PICTURES =
new UnicodeBlock("CONTROL_PICTURES",
"CONTROL PICTURES",
"CONTROLPICTURES");
public static final UnicodeBlock OPTICAL_CHARACTER_RECOGNITION =
new UnicodeBlock("OPTICAL_CHARACTER_RECOGNITION",
"OPTICAL CHARACTER RECOGNITION",
"OPTICALCHARACTERRECOGNITION");
public static final UnicodeBlock ENCLOSED_ALPHANUMERICS =
new UnicodeBlock("ENCLOSED_ALPHANUMERICS",
"ENCLOSED ALPHANUMERICS",
"ENCLOSEDALPHANUMERICS");
public static final UnicodeBlock BOX_DRAWING =
new UnicodeBlock("BOX_DRAWING",
"BOX DRAWING",
"BOXDRAWING");
public static final UnicodeBlock BLOCK_ELEMENTS =
new UnicodeBlock("BLOCK_ELEMENTS",
"BLOCK ELEMENTS",
"BLOCKELEMENTS");
public static final UnicodeBlock GEOMETRIC_SHAPES =
new UnicodeBlock("GEOMETRIC_SHAPES",
"GEOMETRIC SHAPES",
"GEOMETRICSHAPES");
public static final UnicodeBlock MISCELLANEOUS_SYMBOLS =
new UnicodeBlock("MISCELLANEOUS_SYMBOLS",
"MISCELLANEOUS SYMBOLS",
"MISCELLANEOUSSYMBOLS");
public static final UnicodeBlock DINGBATS =
new UnicodeBlock("DINGBATS");
public static final UnicodeBlock CJK_SYMBOLS_AND_PUNCTUATION =
new UnicodeBlock("CJK_SYMBOLS_AND_PUNCTUATION",
"CJK SYMBOLS AND PUNCTUATION",
"CJKSYMBOLSANDPUNCTUATION");
public static final UnicodeBlock HIRAGANA =
new UnicodeBlock("HIRAGANA");
public static final UnicodeBlock KATAKANA =
new UnicodeBlock("KATAKANA");
public static final UnicodeBlock BOPOMOFO =
new UnicodeBlock("BOPOMOFO");
public static final UnicodeBlock HANGUL_COMPATIBILITY_JAMO =
new UnicodeBlock("HANGUL_COMPATIBILITY_JAMO",
"HANGUL COMPATIBILITY JAMO",
"HANGULCOMPATIBILITYJAMO");
public static final UnicodeBlock KANBUN =
new UnicodeBlock("KANBUN");
public static final UnicodeBlock ENCLOSED_CJK_LETTERS_AND_MONTHS =
new UnicodeBlock("ENCLOSED_CJK_LETTERS_AND_MONTHS",
"ENCLOSED CJK LETTERS AND MONTHS",
"ENCLOSEDCJKLETTERSANDMONTHS");
public static final UnicodeBlock CJK_COMPATIBILITY =
new UnicodeBlock("CJK_COMPATIBILITY",
"CJK COMPATIBILITY",
"CJKCOMPATIBILITY");
public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS =
new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS",
"CJK UNIFIED IDEOGRAPHS",
"CJKUNIFIEDIDEOGRAPHS");
public static final UnicodeBlock HANGUL_SYLLABLES =
new UnicodeBlock("HANGUL_SYLLABLES",
"HANGUL SYLLABLES",
"HANGULSYLLABLES");
public static final UnicodeBlock PRIVATE_USE_AREA =
new UnicodeBlock("PRIVATE_USE_AREA",
"PRIVATE USE AREA",
"PRIVATEUSEAREA");
public static final UnicodeBlock CJK_COMPATIBILITY_IDEOGRAPHS =
new UnicodeBlock("CJK_COMPATIBILITY_IDEOGRAPHS",
"CJK COMPATIBILITY IDEOGRAPHS",
"CJKCOMPATIBILITYIDEOGRAPHS");
public static final UnicodeBlock ALPHABETIC_PRESENTATION_FORMS =
new UnicodeBlock("ALPHABETIC_PRESENTATION_FORMS",
"ALPHABETIC PRESENTATION FORMS",
"ALPHABETICPRESENTATIONFORMS");
public static final UnicodeBlock ARABIC_PRESENTATION_FORMS_A =
new UnicodeBlock("ARABIC_PRESENTATION_FORMS_A",
"ARABIC PRESENTATION FORMS-A",
"ARABICPRESENTATIONFORMS-A");
public static final UnicodeBlock COMBINING_HALF_MARKS =
new UnicodeBlock("COMBINING_HALF_MARKS",
"COMBINING HALF MARKS",
"COMBININGHALFMARKS");
public static final UnicodeBlock CJK_COMPATIBILITY_FORMS =
new UnicodeBlock("CJK_COMPATIBILITY_FORMS",
"CJK COMPATIBILITY FORMS",
"CJKCOMPATIBILITYFORMS");
public static final UnicodeBlock SMALL_FORM_VARIANTS =
new UnicodeBlock("SMALL_FORM_VARIANTS",
"SMALL FORM VARIANTS",
"SMALLFORMVARIANTS");
public static final UnicodeBlock ARABIC_PRESENTATION_FORMS_B =
new UnicodeBlock("ARABIC_PRESENTATION_FORMS_B",
"ARABIC PRESENTATION FORMS-B",
"ARABICPRESENTATIONFORMS-B");
public static final UnicodeBlock HALFWIDTH_AND_FULLWIDTH_FORMS =
new UnicodeBlock("HALFWIDTH_AND_FULLWIDTH_FORMS",
"HALFWIDTH AND FULLWIDTH FORMS",
"HALFWIDTHANDFULLWIDTHFORMS");
public static final UnicodeBlock SPECIALS =
new UnicodeBlock("SPECIALS");
@Deprecated
public static final UnicodeBlock SURROGATES_AREA =
new UnicodeBlock("SURROGATES_AREA");
public static final UnicodeBlock SYRIAC =
new UnicodeBlock("SYRIAC");
public static final UnicodeBlock THAANA =
new UnicodeBlock("THAANA");
public static final UnicodeBlock SINHALA =
new UnicodeBlock("SINHALA");
public static final UnicodeBlock MYANMAR =
new UnicodeBlock("MYANMAR");
public static final UnicodeBlock ETHIOPIC =
new UnicodeBlock("ETHIOPIC");
public static final UnicodeBlock CHEROKEE =
new UnicodeBlock("CHEROKEE");
public static final UnicodeBlock UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS =
new UnicodeBlock("UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS",
"UNIFIED CANADIAN ABORIGINAL SYLLABICS",
"UNIFIEDCANADIANABORIGINALSYLLABICS");
public static final UnicodeBlock OGHAM =
new UnicodeBlock("OGHAM");
public static final UnicodeBlock RUNIC =
new UnicodeBlock("RUNIC");
public static final UnicodeBlock KHMER =
new UnicodeBlock("KHMER");
public static final UnicodeBlock MONGOLIAN =
new UnicodeBlock("MONGOLIAN");
public static final UnicodeBlock BRAILLE_PATTERNS =
new UnicodeBlock("BRAILLE_PATTERNS",
"BRAILLE PATTERNS",
"BRAILLEPATTERNS");
public static final UnicodeBlock CJK_RADICALS_SUPPLEMENT =
new UnicodeBlock("CJK_RADICALS_SUPPLEMENT",
"CJK RADICALS SUPPLEMENT",
"CJKRADICALSSUPPLEMENT");
public static final UnicodeBlock KANGXI_RADICALS =
new UnicodeBlock("KANGXI_RADICALS",
"KANGXI RADICALS",
"KANGXIRADICALS");
public static final UnicodeBlock IDEOGRAPHIC_DESCRIPTION_CHARACTERS =
new UnicodeBlock("IDEOGRAPHIC_DESCRIPTION_CHARACTERS",
"IDEOGRAPHIC DESCRIPTION CHARACTERS",
"IDEOGRAPHICDESCRIPTIONCHARACTERS");
public static final UnicodeBlock BOPOMOFO_EXTENDED =
new UnicodeBlock("BOPOMOFO_EXTENDED",
"BOPOMOFO EXTENDED",
"BOPOMOFOEXTENDED");
public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A =
new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A",
"CJK UNIFIED IDEOGRAPHS EXTENSION A",
"CJKUNIFIEDIDEOGRAPHSEXTENSIONA");
public static final UnicodeBlock YI_SYLLABLES =
new UnicodeBlock("YI_SYLLABLES",
"YI SYLLABLES",
"YISYLLABLES");
public static final UnicodeBlock YI_RADICALS =
new UnicodeBlock("YI_RADICALS",
"YI RADICALS",
"YIRADICALS");
public static final UnicodeBlock CYRILLIC_SUPPLEMENTARY =
new UnicodeBlock("CYRILLIC_SUPPLEMENTARY",
"CYRILLIC SUPPLEMENTARY",
"CYRILLICSUPPLEMENTARY",
"CYRILLIC SUPPLEMENT",
"CYRILLICSUPPLEMENT");
public static final UnicodeBlock TAGALOG =
new UnicodeBlock("TAGALOG");
public static final UnicodeBlock HANUNOO =
new UnicodeBlock("HANUNOO");
public static final UnicodeBlock BUHID =
new UnicodeBlock("BUHID");
public static final UnicodeBlock TAGBANWA =
new UnicodeBlock("TAGBANWA");
public static final UnicodeBlock LIMBU =
new UnicodeBlock("LIMBU");
public static final UnicodeBlock TAI_LE =
new UnicodeBlock("TAI_LE",
"TAI LE",
"TAILE");
public static final UnicodeBlock KHMER_SYMBOLS =
new UnicodeBlock("KHMER_SYMBOLS",
"KHMER SYMBOLS",
"KHMERSYMBOLS");
public static final UnicodeBlock PHONETIC_EXTENSIONS =
new UnicodeBlock("PHONETIC_EXTENSIONS",
"PHONETIC EXTENSIONS",
"PHONETICEXTENSIONS");
public static final UnicodeBlock MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A =
new UnicodeBlock("MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A",
"MISCELLANEOUS MATHEMATICAL SYMBOLS-A",
"MISCELLANEOUSMATHEMATICALSYMBOLS-A");
public static final UnicodeBlock SUPPLEMENTAL_ARROWS_A =
new UnicodeBlock("SUPPLEMENTAL_ARROWS_A",
"SUPPLEMENTAL ARROWS-A",
"SUPPLEMENTALARROWS-A");
public static final UnicodeBlock SUPPLEMENTAL_ARROWS_B =
new UnicodeBlock("SUPPLEMENTAL_ARROWS_B",
"SUPPLEMENTAL ARROWS-B",
"SUPPLEMENTALARROWS-B");
public static final UnicodeBlock MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B =
new UnicodeBlock("MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B",
"MISCELLANEOUS MATHEMATICAL SYMBOLS-B",
"MISCELLANEOUSMATHEMATICALSYMBOLS-B");
public static final UnicodeBlock SUPPLEMENTAL_MATHEMATICAL_OPERATORS =
new UnicodeBlock("SUPPLEMENTAL_MATHEMATICAL_OPERATORS",
"SUPPLEMENTAL MATHEMATICAL OPERATORS",
"SUPPLEMENTALMATHEMATICALOPERATORS");
public static final UnicodeBlock MISCELLANEOUS_SYMBOLS_AND_ARROWS =
new UnicodeBlock("MISCELLANEOUS_SYMBOLS_AND_ARROWS",
"MISCELLANEOUS SYMBOLS AND ARROWS",
"MISCELLANEOUSSYMBOLSANDARROWS");
public static final UnicodeBlock KATAKANA_PHONETIC_EXTENSIONS =
new UnicodeBlock("KATAKANA_PHONETIC_EXTENSIONS",
"KATAKANA PHONETIC EXTENSIONS",
"KATAKANAPHONETICEXTENSIONS");
public static final UnicodeBlock YIJING_HEXAGRAM_SYMBOLS =
new UnicodeBlock("YIJING_HEXAGRAM_SYMBOLS",
"YIJING HEXAGRAM SYMBOLS",
"YIJINGHEXAGRAMSYMBOLS");
public static final UnicodeBlock VARIATION_SELECTORS =
new UnicodeBlock("VARIATION_SELECTORS",
"VARIATION SELECTORS",
"VARIATIONSELECTORS");
public static final UnicodeBlock LINEAR_B_SYLLABARY =
new UnicodeBlock("LINEAR_B_SYLLABARY",
"LINEAR B SYLLABARY",
"LINEARBSYLLABARY");
public static final UnicodeBlock LINEAR_B_IDEOGRAMS =
new UnicodeBlock("LINEAR_B_IDEOGRAMS",
"LINEAR B IDEOGRAMS",
"LINEARBIDEOGRAMS");
public static final UnicodeBlock AEGEAN_NUMBERS =
new UnicodeBlock("AEGEAN_NUMBERS",
"AEGEAN NUMBERS",
"AEGEANNUMBERS");
public static final UnicodeBlock OLD_ITALIC =
new UnicodeBlock("OLD_ITALIC",
"OLD ITALIC",
"OLDITALIC");
public static final UnicodeBlock GOTHIC =
new UnicodeBlock("GOTHIC");
public static final UnicodeBlock UGARITIC =
new UnicodeBlock("UGARITIC");
public static final UnicodeBlock DESERET =
new UnicodeBlock("DESERET");
public static final UnicodeBlock SHAVIAN =
new UnicodeBlock("SHAVIAN");
public static final UnicodeBlock OSMANYA =
new UnicodeBlock("OSMANYA");
public static final UnicodeBlock CYPRIOT_SYLLABARY =
new UnicodeBlock("CYPRIOT_SYLLABARY",
"CYPRIOT SYLLABARY",
"CYPRIOTSYLLABARY");
public static final UnicodeBlock BYZANTINE_MUSICAL_SYMBOLS =
new UnicodeBlock("BYZANTINE_MUSICAL_SYMBOLS",
"BYZANTINE MUSICAL SYMBOLS",
"BYZANTINEMUSICALSYMBOLS");
public static final UnicodeBlock MUSICAL_SYMBOLS =
new UnicodeBlock("MUSICAL_SYMBOLS",
"MUSICAL SYMBOLS",
"MUSICALSYMBOLS");
public static final UnicodeBlock TAI_XUAN_JING_SYMBOLS =
new UnicodeBlock("TAI_XUAN_JING_SYMBOLS",
"TAI XUAN JING SYMBOLS",
"TAIXUANJINGSYMBOLS");
public static final UnicodeBlock MATHEMATICAL_ALPHANUMERIC_SYMBOLS =
new UnicodeBlock("MATHEMATICAL_ALPHANUMERIC_SYMBOLS",
"MATHEMATICAL ALPHANUMERIC SYMBOLS",
"MATHEMATICALALPHANUMERICSYMBOLS");
public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B =
new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B",
"CJK UNIFIED IDEOGRAPHS EXTENSION B",
"CJKUNIFIEDIDEOGRAPHSEXTENSIONB");
public static final UnicodeBlock CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT =
new UnicodeBlock("CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT",
"CJK COMPATIBILITY IDEOGRAPHS SUPPLEMENT",
"CJKCOMPATIBILITYIDEOGRAPHSSUPPLEMENT");
public static final UnicodeBlock TAGS =
new UnicodeBlock("TAGS");
public static final UnicodeBlock VARIATION_SELECTORS_SUPPLEMENT =
new UnicodeBlock("VARIATION_SELECTORS_SUPPLEMENT",
"VARIATION SELECTORS SUPPLEMENT",
"VARIATIONSELECTORSSUPPLEMENT");
public static final UnicodeBlock SUPPLEMENTARY_PRIVATE_USE_AREA_A =
new UnicodeBlock("SUPPLEMENTARY_PRIVATE_USE_AREA_A",
"SUPPLEMENTARY PRIVATE USE AREA-A",
"SUPPLEMENTARYPRIVATEUSEAREA-A");
public static final UnicodeBlock SUPPLEMENTARY_PRIVATE_USE_AREA_B =
new UnicodeBlock("SUPPLEMENTARY_PRIVATE_USE_AREA_B",
"SUPPLEMENTARY PRIVATE USE AREA-B",
"SUPPLEMENTARYPRIVATEUSEAREA-B");
public static final UnicodeBlock HIGH_SURROGATES =
new UnicodeBlock("HIGH_SURROGATES",
"HIGH SURROGATES",
"HIGHSURROGATES");
public static final UnicodeBlock HIGH_PRIVATE_USE_SURROGATES =
new UnicodeBlock("HIGH_PRIVATE_USE_SURROGATES",
"HIGH PRIVATE USE SURROGATES",
"HIGHPRIVATEUSESURROGATES");
public static final UnicodeBlock LOW_SURROGATES =
new UnicodeBlock("LOW_SURROGATES",
"LOW SURROGATES",
"LOWSURROGATES");
public static final UnicodeBlock ARABIC_SUPPLEMENT =
new UnicodeBlock("ARABIC_SUPPLEMENT",
"ARABIC SUPPLEMENT",
"ARABICSUPPLEMENT");
public static final UnicodeBlock NKO =
new UnicodeBlock("NKO");
public static final UnicodeBlock SAMARITAN =
new UnicodeBlock("SAMARITAN");
public static final UnicodeBlock MANDAIC =
new UnicodeBlock("MANDAIC");
public static final UnicodeBlock ETHIOPIC_SUPPLEMENT =
new UnicodeBlock("ETHIOPIC_SUPPLEMENT",
"ETHIOPIC SUPPLEMENT",
"ETHIOPICSUPPLEMENT");
public static final UnicodeBlock UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED =
new UnicodeBlock("UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED",
"UNIFIED CANADIAN ABORIGINAL SYLLABICS EXTENDED",
"UNIFIEDCANADIANABORIGINALSYLLABICSEXTENDED");
public static final UnicodeBlock NEW_TAI_LUE =
new UnicodeBlock("NEW_TAI_LUE",
"NEW TAI LUE",
"NEWTAILUE");
public static final UnicodeBlock BUGINESE =
new UnicodeBlock("BUGINESE");
public static final UnicodeBlock TAI_THAM =
new UnicodeBlock("TAI_THAM",
"TAI THAM",
"TAITHAM");
public static final UnicodeBlock BALINESE =
new UnicodeBlock("BALINESE");
public static final UnicodeBlock SUNDANESE =
new UnicodeBlock("SUNDANESE");
public static final UnicodeBlock BATAK =
new UnicodeBlock("BATAK");
public static final UnicodeBlock LEPCHA =
new UnicodeBlock("LEPCHA");
public static final UnicodeBlock OL_CHIKI =
new UnicodeBlock("OL_CHIKI",
"OL CHIKI",
"OLCHIKI");
public static final UnicodeBlock VEDIC_EXTENSIONS =
new UnicodeBlock("VEDIC_EXTENSIONS",
"VEDIC EXTENSIONS",
"VEDICEXTENSIONS");
public static final UnicodeBlock PHONETIC_EXTENSIONS_SUPPLEMENT =
new UnicodeBlock("PHONETIC_EXTENSIONS_SUPPLEMENT",
"PHONETIC EXTENSIONS SUPPLEMENT",
"PHONETICEXTENSIONSSUPPLEMENT");
public static final UnicodeBlock COMBINING_DIACRITICAL_MARKS_SUPPLEMENT =
new UnicodeBlock("COMBINING_DIACRITICAL_MARKS_SUPPLEMENT",
"COMBINING DIACRITICAL MARKS SUPPLEMENT",
"COMBININGDIACRITICALMARKSSUPPLEMENT");
public static final UnicodeBlock GLAGOLITIC =
new UnicodeBlock("GLAGOLITIC");
public static final UnicodeBlock LATIN_EXTENDED_C =
new UnicodeBlock("LATIN_EXTENDED_C",
"LATIN EXTENDED-C",
"LATINEXTENDED-C");
public static final UnicodeBlock COPTIC =
new UnicodeBlock("COPTIC");
public static final UnicodeBlock GEORGIAN_SUPPLEMENT =
new UnicodeBlock("GEORGIAN_SUPPLEMENT",
"GEORGIAN SUPPLEMENT",
"GEORGIANSUPPLEMENT");
public static final UnicodeBlock TIFINAGH =
new UnicodeBlock("TIFINAGH");
public static final UnicodeBlock ETHIOPIC_EXTENDED =
new UnicodeBlock("ETHIOPIC_EXTENDED",
"ETHIOPIC EXTENDED",
"ETHIOPICEXTENDED");
public static final UnicodeBlock CYRILLIC_EXTENDED_A =
new UnicodeBlock("CYRILLIC_EXTENDED_A",
"CYRILLIC EXTENDED-A",
"CYRILLICEXTENDED-A");
public static final UnicodeBlock SUPPLEMENTAL_PUNCTUATION =
new UnicodeBlock("SUPPLEMENTAL_PUNCTUATION",
"SUPPLEMENTAL PUNCTUATION",
"SUPPLEMENTALPUNCTUATION");
public static final UnicodeBlock CJK_STROKES =
new UnicodeBlock("CJK_STROKES",
"CJK STROKES",
"CJKSTROKES");
public static final UnicodeBlock LISU =
new UnicodeBlock("LISU");
public static final UnicodeBlock VAI =
new UnicodeBlock("VAI");
public static final UnicodeBlock CYRILLIC_EXTENDED_B =
new UnicodeBlock("CYRILLIC_EXTENDED_B",
"CYRILLIC EXTENDED-B",
"CYRILLICEXTENDED-B");
public static final UnicodeBlock BAMUM =
new UnicodeBlock("BAMUM");
public static final UnicodeBlock MODIFIER_TONE_LETTERS =
new UnicodeBlock("MODIFIER_TONE_LETTERS",
"MODIFIER TONE LETTERS",
"MODIFIERTONELETTERS");
public static final UnicodeBlock LATIN_EXTENDED_D =
new UnicodeBlock("LATIN_EXTENDED_D",
"LATIN EXTENDED-D",
"LATINEXTENDED-D");
public static final UnicodeBlock SYLOTI_NAGRI =
new UnicodeBlock("SYLOTI_NAGRI",
"SYLOTI NAGRI",
"SYLOTINAGRI");
public static final UnicodeBlock COMMON_INDIC_NUMBER_FORMS =
new UnicodeBlock("COMMON_INDIC_NUMBER_FORMS",
"COMMON INDIC NUMBER FORMS",
"COMMONINDICNUMBERFORMS");
public static final UnicodeBlock PHAGS_PA =
new UnicodeBlock("PHAGS_PA",
"PHAGS-PA");
public static final UnicodeBlock SAURASHTRA =
new UnicodeBlock("SAURASHTRA");
public static final UnicodeBlock DEVANAGARI_EXTENDED =
new UnicodeBlock("DEVANAGARI_EXTENDED",
"DEVANAGARI EXTENDED",
"DEVANAGARIEXTENDED");
public static final UnicodeBlock KAYAH_LI =
new UnicodeBlock("KAYAH_LI",
"KAYAH LI",
"KAYAHLI");
public static final UnicodeBlock REJANG =
new UnicodeBlock("REJANG");
public static final UnicodeBlock HANGUL_JAMO_EXTENDED_A =
new UnicodeBlock("HANGUL_JAMO_EXTENDED_A",
"HANGUL JAMO EXTENDED-A",
"HANGULJAMOEXTENDED-A");
public static final UnicodeBlock JAVANESE =
new UnicodeBlock("JAVANESE");
public static final UnicodeBlock CHAM =
new UnicodeBlock("CHAM");
public static final UnicodeBlock MYANMAR_EXTENDED_A =
new UnicodeBlock("MYANMAR_EXTENDED_A",
"MYANMAR EXTENDED-A",
"MYANMAREXTENDED-A");
public static final UnicodeBlock TAI_VIET =
new UnicodeBlock("TAI_VIET",
"TAI VIET",
"TAIVIET");
public static final UnicodeBlock ETHIOPIC_EXTENDED_A =
new UnicodeBlock("ETHIOPIC_EXTENDED_A",
"ETHIOPIC EXTENDED-A",
"ETHIOPICEXTENDED-A");
public static final UnicodeBlock MEETEI_MAYEK =
new UnicodeBlock("MEETEI_MAYEK",
"MEETEI MAYEK",
"MEETEIMAYEK");
public static final UnicodeBlock HANGUL_JAMO_EXTENDED_B =
new UnicodeBlock("HANGUL_JAMO_EXTENDED_B",
"HANGUL JAMO EXTENDED-B",
"HANGULJAMOEXTENDED-B");
public static final UnicodeBlock VERTICAL_FORMS =
new UnicodeBlock("VERTICAL_FORMS",
"VERTICAL FORMS",
"VERTICALFORMS");
public static final UnicodeBlock ANCIENT_GREEK_NUMBERS =
new UnicodeBlock("ANCIENT_GREEK_NUMBERS",
"ANCIENT GREEK NUMBERS",
"ANCIENTGREEKNUMBERS");
public static final UnicodeBlock ANCIENT_SYMBOLS =
new UnicodeBlock("ANCIENT_SYMBOLS",
"ANCIENT SYMBOLS",
"ANCIENTSYMBOLS");
public static final UnicodeBlock PHAISTOS_DISC =
new UnicodeBlock("PHAISTOS_DISC",
"PHAISTOS DISC",
"PHAISTOSDISC");
public static final UnicodeBlock LYCIAN =
new UnicodeBlock("LYCIAN");
public static final UnicodeBlock CARIAN =
new UnicodeBlock("CARIAN");
public static final UnicodeBlock OLD_PERSIAN =
new UnicodeBlock("OLD_PERSIAN",
"OLD PERSIAN",
"OLDPERSIAN");
public static final UnicodeBlock IMPERIAL_ARAMAIC =
new UnicodeBlock("IMPERIAL_ARAMAIC",
"IMPERIAL ARAMAIC",
"IMPERIALARAMAIC");
public static final UnicodeBlock PHOENICIAN =
new UnicodeBlock("PHOENICIAN");
public static final UnicodeBlock LYDIAN =
new UnicodeBlock("LYDIAN");
public static final UnicodeBlock KHAROSHTHI =
new UnicodeBlock("KHAROSHTHI");
public static final UnicodeBlock OLD_SOUTH_ARABIAN =
new UnicodeBlock("OLD_SOUTH_ARABIAN",
"OLD SOUTH ARABIAN",
"OLDSOUTHARABIAN");
public static final UnicodeBlock AVESTAN =
new UnicodeBlock("AVESTAN");
public static final UnicodeBlock INSCRIPTIONAL_PARTHIAN =
new UnicodeBlock("INSCRIPTIONAL_PARTHIAN",
"INSCRIPTIONAL PARTHIAN",
"INSCRIPTIONALPARTHIAN");
public static final UnicodeBlock INSCRIPTIONAL_PAHLAVI =
new UnicodeBlock("INSCRIPTIONAL_PAHLAVI",
"INSCRIPTIONAL PAHLAVI",
"INSCRIPTIONALPAHLAVI");
public static final UnicodeBlock OLD_TURKIC =
new UnicodeBlock("OLD_TURKIC",
"OLD TURKIC",
"OLDTURKIC");
public static final UnicodeBlock RUMI_NUMERAL_SYMBOLS =
new UnicodeBlock("RUMI_NUMERAL_SYMBOLS",
"RUMI NUMERAL SYMBOLS",
"RUMINUMERALSYMBOLS");
public static final UnicodeBlock BRAHMI =
new UnicodeBlock("BRAHMI");
public static final UnicodeBlock KAITHI =
new UnicodeBlock("KAITHI");
public static final UnicodeBlock CUNEIFORM =
new UnicodeBlock("CUNEIFORM");
public static final UnicodeBlock CUNEIFORM_NUMBERS_AND_PUNCTUATION =
new UnicodeBlock("CUNEIFORM_NUMBERS_AND_PUNCTUATION",
"CUNEIFORM NUMBERS AND PUNCTUATION",
"CUNEIFORMNUMBERSANDPUNCTUATION");
public static final UnicodeBlock EGYPTIAN_HIEROGLYPHS =
new UnicodeBlock("EGYPTIAN_HIEROGLYPHS",
"EGYPTIAN HIEROGLYPHS",
"EGYPTIANHIEROGLYPHS");
public static final UnicodeBlock BAMUM_SUPPLEMENT =
new UnicodeBlock("BAMUM_SUPPLEMENT",
"BAMUM SUPPLEMENT",
"BAMUMSUPPLEMENT");
public static final UnicodeBlock KANA_SUPPLEMENT =
new UnicodeBlock("KANA_SUPPLEMENT",
"KANA SUPPLEMENT",
"KANASUPPLEMENT");
public static final UnicodeBlock ANCIENT_GREEK_MUSICAL_NOTATION =
new UnicodeBlock("ANCIENT_GREEK_MUSICAL_NOTATION",
"ANCIENT GREEK MUSICAL NOTATION",
"ANCIENTGREEKMUSICALNOTATION");
public static final UnicodeBlock COUNTING_ROD_NUMERALS =
new UnicodeBlock("COUNTING_ROD_NUMERALS",
"COUNTING ROD NUMERALS",
"COUNTINGRODNUMERALS");
public static final UnicodeBlock MAHJONG_TILES =
new UnicodeBlock("MAHJONG_TILES",
"MAHJONG TILES",
"MAHJONGTILES");
public static final UnicodeBlock DOMINO_TILES =
new UnicodeBlock("DOMINO_TILES",
"DOMINO TILES",
"DOMINOTILES");
public static final UnicodeBlock PLAYING_CARDS =
new UnicodeBlock("PLAYING_CARDS",
"PLAYING CARDS",
"PLAYINGCARDS");
public static final UnicodeBlock ENCLOSED_ALPHANUMERIC_SUPPLEMENT =
new UnicodeBlock("ENCLOSED_ALPHANUMERIC_SUPPLEMENT",
"ENCLOSED ALPHANUMERIC SUPPLEMENT",
"ENCLOSEDALPHANUMERICSUPPLEMENT");
public static final UnicodeBlock ENCLOSED_IDEOGRAPHIC_SUPPLEMENT =
new UnicodeBlock("ENCLOSED_IDEOGRAPHIC_SUPPLEMENT",
"ENCLOSED IDEOGRAPHIC SUPPLEMENT",
"ENCLOSEDIDEOGRAPHICSUPPLEMENT");
public static final UnicodeBlock MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS =
new UnicodeBlock("MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS",
"MISCELLANEOUS SYMBOLS AND PICTOGRAPHS",
"MISCELLANEOUSSYMBOLSANDPICTOGRAPHS");
public static final UnicodeBlock EMOTICONS =
new UnicodeBlock("EMOTICONS");
public static final UnicodeBlock TRANSPORT_AND_MAP_SYMBOLS =
new UnicodeBlock("TRANSPORT_AND_MAP_SYMBOLS",
"TRANSPORT AND MAP SYMBOLS",
"TRANSPORTANDMAPSYMBOLS");
public static final UnicodeBlock ALCHEMICAL_SYMBOLS =
new UnicodeBlock("ALCHEMICAL_SYMBOLS",
"ALCHEMICAL SYMBOLS",
"ALCHEMICALSYMBOLS");
public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C =
new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C",
"CJK UNIFIED IDEOGRAPHS EXTENSION C",
"CJKUNIFIEDIDEOGRAPHSEXTENSIONC");
public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D =
new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D",
"CJK UNIFIED IDEOGRAPHS EXTENSION D",
"CJKUNIFIEDIDEOGRAPHSEXTENSIOND");
public static final UnicodeBlock ARABIC_EXTENDED_A =
new UnicodeBlock("ARABIC_EXTENDED_A",
"ARABIC EXTENDED-A",
"ARABICEXTENDED-A");
public static final UnicodeBlock SUNDANESE_SUPPLEMENT =
new UnicodeBlock("SUNDANESE_SUPPLEMENT",
"SUNDANESE SUPPLEMENT",
"SUNDANESESUPPLEMENT");
public static final UnicodeBlock MEETEI_MAYEK_EXTENSIONS =
new UnicodeBlock("MEETEI_MAYEK_EXTENSIONS",
"MEETEI MAYEK EXTENSIONS",
"MEETEIMAYEKEXTENSIONS");
public static final UnicodeBlock MEROITIC_HIEROGLYPHS =
new UnicodeBlock("MEROITIC_HIEROGLYPHS",
"MEROITIC HIEROGLYPHS",
"MEROITICHIEROGLYPHS");
public static final UnicodeBlock MEROITIC_CURSIVE =
new UnicodeBlock("MEROITIC_CURSIVE",
"MEROITIC CURSIVE",
"MEROITICCURSIVE");
public static final UnicodeBlock SORA_SOMPENG =
new UnicodeBlock("SORA_SOMPENG",
"SORA SOMPENG",
"SORASOMPENG");
public static final UnicodeBlock CHAKMA =
new UnicodeBlock("CHAKMA");
public static final UnicodeBlock SHARADA =
new UnicodeBlock("SHARADA");
public static final UnicodeBlock TAKRI =
new UnicodeBlock("TAKRI");
public static final UnicodeBlock MIAO =
new UnicodeBlock("MIAO");
public static final UnicodeBlock ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS =
new UnicodeBlock("ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS",
"ARABIC MATHEMATICAL ALPHABETIC SYMBOLS",
"ARABICMATHEMATICALALPHABETICSYMBOLS");
private static final int blockStarts[] = {
0x0000,
0x0080,
0x0100,
0x0180,
0x0250,
0x02B0,
0x0300,
0x0370,
0x0400,
0x0500,
0x0530,
0x0590,
0x0600,
0x0700,
0x0750,
0x0780,
0x07C0,
0x0800,
0x0840,
0x0860,
0x08A0,
0x0900,
0x0980,
0x0A00,
0x0A80,
0x0B00,
0x0B80,
0x0C00,
0x0C80,
0x0D00,
0x0D80,
0x0E00,
0x0E80,
0x0F00,
0x1000,
0x10A0,
0x1100,
0x1200,
0x1380,
0x13A0,
0x1400,
0x1680,
0x16A0,
0x1700,
0x1720,
0x1740,
0x1760,
0x1780,
0x1800,
0x18B0,
0x1900,
0x1950,
0x1980,
0x19E0,
0x1A00,
0x1A20,
0x1AB0,
0x1B00,
0x1B80,
0x1BC0,
0x1C00,
0x1C50,
0x1C80,
0x1CC0,
0x1CD0,
0x1D00,
0x1D80,
0x1DC0,
0x1E00,
0x1F00,
0x2000,
0x2070,
0x20A0,
0x20D0,
0x2100,
0x2150,
0x2190,
0x2200,
0x2300,
0x2400,
0x2440,
0x2460,
0x2500,
0x2580,
0x25A0,
0x2600,
0x2700,
0x27C0,
0x27F0,
0x2800,
0x2900,
0x2980,
0x2A00,
0x2B00,
0x2C00,
0x2C60,
0x2C80,
0x2D00,
0x2D30,
0x2D80,
0x2DE0,
0x2E00,
0x2E80,
0x2F00,
0x2FE0,
0x2FF0,
0x3000,
0x3040,
0x30A0,
0x3100,
0x3130,
0x3190,
0x31A0,
0x31C0,
0x31F0,
0x3200,
0x3300,
0x3400,
0x4DC0,
0x4E00,
0xA000,
0xA490,
0xA4D0,
0xA500,
0xA640,
0xA6A0,
0xA700,
0xA720,
0xA800,
0xA830,
0xA840,
0xA880,
0xA8E0,
0xA900,
0xA930,
0xA960,
0xA980,
0xA9E0,
0xAA00,
0xAA60,
0xAA80,
0xAAE0,
0xAB00,
0xAB30,
0xABC0,
0xAC00,
0xD7B0,
0xD800,
0xDB80,
0xDC00,
0xE000,
0xF900,
0xFB00,
0xFB50,
0xFE00,
0xFE10,
0xFE20,
0xFE30,
0xFE50,
0xFE70,
0xFF00,
0xFFF0,
0x10000,
0x10080,
0x10100,
0x10140,
0x10190,
0x101D0,
0x10200,
0x10280,
0x102A0,
0x102E0,
0x10300,
0x10330,
0x10350,
0x10380,
0x103A0,
0x103E0,
0x10400,
0x10450,
0x10480,
0x104B0,
0x10800,
0x10840,
0x10860,
0x10900,
0x10920,
0x10940,
0x10980,
0x109A0,
0x10A00,
0x10A60,
0x10A80,
0x10B00,
0x10B40,
0x10B60,
0x10B80,
0x10C00,
0x10C50,
0x10E60,
0x10E80,
0x11000,
0x11080,
0x110D0,
0x11100,
0x11150,
0x11180,
0x111E0,
0x11680,
0x116D0,
0x12000,
0x12400,
0x12480,
0x13000,
0x13430,
0x16800,
0x16A40,
0x16F00,
0x16FA0,
0x1B000,
0x1B100,
0x1D000,
0x1D100,
0x1D200,
0x1D250,
0x1D300,
0x1D360,
0x1D380,
0x1D400,
0x1D800,
0x1EE00,
0x1EF00,
0x1F000,
0x1F030,
0x1F0A0,
0x1F100,
0x1F200,
0x1F300,
0x1F600,
0x1F650,
0x1F680,
0x1F700,
0x1F780,
0x20000,
0x2A6E0,
0x2A700,
0x2B740,
0x2B820,
0x2F800,
0x2FA20,
0xE0000,
0xE0080,
0xE0100,
0xE01F0,
0xF0000,
0x100000
};
private static final UnicodeBlock[] blocks = {
BASIC_LATIN,
LATIN_1_SUPPLEMENT,
LATIN_EXTENDED_A,
LATIN_EXTENDED_B,
IPA_EXTENSIONS,
SPACING_MODIFIER_LETTERS,
COMBINING_DIACRITICAL_MARKS,
GREEK,
CYRILLIC,
CYRILLIC_SUPPLEMENTARY,
ARMENIAN,
HEBREW,
ARABIC,
SYRIAC,
ARABIC_SUPPLEMENT,
THAANA,
NKO,
SAMARITAN,
MANDAIC,
null,
ARABIC_EXTENDED_A,
DEVANAGARI,
BENGALI,
GURMUKHI,
GUJARATI,
ORIYA,
TAMIL,
TELUGU,
KANNADA,
MALAYALAM,
SINHALA,
THAI,
LAO,
TIBETAN,
MYANMAR,
GEORGIAN,
HANGUL_JAMO,
ETHIOPIC,
ETHIOPIC_SUPPLEMENT,
CHEROKEE,
UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS,
OGHAM,
RUNIC,
TAGALOG,
HANUNOO,
BUHID,
TAGBANWA,
KHMER,
MONGOLIAN,
UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED,
LIMBU,
TAI_LE,
NEW_TAI_LUE,
KHMER_SYMBOLS,
BUGINESE,
TAI_THAM,
null,
BALINESE,
SUNDANESE,
BATAK,
LEPCHA,
OL_CHIKI,
null,
SUNDANESE_SUPPLEMENT,
VEDIC_EXTENSIONS,
PHONETIC_EXTENSIONS,
PHONETIC_EXTENSIONS_SUPPLEMENT,
COMBINING_DIACRITICAL_MARKS_SUPPLEMENT,
LATIN_EXTENDED_ADDITIONAL,
GREEK_EXTENDED,
GENERAL_PUNCTUATION,
SUPERSCRIPTS_AND_SUBSCRIPTS,
CURRENCY_SYMBOLS,
COMBINING_MARKS_FOR_SYMBOLS,
LETTERLIKE_SYMBOLS,
NUMBER_FORMS,
ARROWS,
MATHEMATICAL_OPERATORS,
MISCELLANEOUS_TECHNICAL,
CONTROL_PICTURES,
OPTICAL_CHARACTER_RECOGNITION,
ENCLOSED_ALPHANUMERICS,
BOX_DRAWING,
BLOCK_ELEMENTS,
GEOMETRIC_SHAPES,
MISCELLANEOUS_SYMBOLS,
DINGBATS,
MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A,
SUPPLEMENTAL_ARROWS_A,
BRAILLE_PATTERNS,
SUPPLEMENTAL_ARROWS_B,
MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B,
SUPPLEMENTAL_MATHEMATICAL_OPERATORS,
MISCELLANEOUS_SYMBOLS_AND_ARROWS,
GLAGOLITIC,
LATIN_EXTENDED_C,
COPTIC,
GEORGIAN_SUPPLEMENT,
TIFINAGH,
ETHIOPIC_EXTENDED,
CYRILLIC_EXTENDED_A,
SUPPLEMENTAL_PUNCTUATION,
CJK_RADICALS_SUPPLEMENT,
KANGXI_RADICALS,
null,
IDEOGRAPHIC_DESCRIPTION_CHARACTERS,
CJK_SYMBOLS_AND_PUNCTUATION,
HIRAGANA,
KATAKANA,
BOPOMOFO,
HANGUL_COMPATIBILITY_JAMO,
KANBUN,
BOPOMOFO_EXTENDED,
CJK_STROKES,
KATAKANA_PHONETIC_EXTENSIONS,
ENCLOSED_CJK_LETTERS_AND_MONTHS,
CJK_COMPATIBILITY,
CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A,
YIJING_HEXAGRAM_SYMBOLS,
CJK_UNIFIED_IDEOGRAPHS,
YI_SYLLABLES,
YI_RADICALS,
LISU,
VAI,
CYRILLIC_EXTENDED_B,
BAMUM,
MODIFIER_TONE_LETTERS,
LATIN_EXTENDED_D,
SYLOTI_NAGRI,
COMMON_INDIC_NUMBER_FORMS,
PHAGS_PA,
SAURASHTRA,
DEVANAGARI_EXTENDED,
KAYAH_LI,
REJANG,
HANGUL_JAMO_EXTENDED_A,
JAVANESE,
null,
CHAM,
MYANMAR_EXTENDED_A,
TAI_VIET,
MEETEI_MAYEK_EXTENSIONS,
ETHIOPIC_EXTENDED_A,
null,
MEETEI_MAYEK,
HANGUL_SYLLABLES,
HANGUL_JAMO_EXTENDED_B,
HIGH_SURROGATES,
HIGH_PRIVATE_USE_SURROGATES,
LOW_SURROGATES,
PRIVATE_USE_AREA,
CJK_COMPATIBILITY_IDEOGRAPHS,
ALPHABETIC_PRESENTATION_FORMS,
ARABIC_PRESENTATION_FORMS_A,
VARIATION_SELECTORS,
VERTICAL_FORMS,
COMBINING_HALF_MARKS,
CJK_COMPATIBILITY_FORMS,
SMALL_FORM_VARIANTS,
ARABIC_PRESENTATION_FORMS_B,
HALFWIDTH_AND_FULLWIDTH_FORMS,
SPECIALS,
LINEAR_B_SYLLABARY,
LINEAR_B_IDEOGRAMS,
AEGEAN_NUMBERS,
ANCIENT_GREEK_NUMBERS,
ANCIENT_SYMBOLS,
PHAISTOS_DISC,
null,
LYCIAN,
CARIAN,
null,
OLD_ITALIC,
GOTHIC,
null,
UGARITIC,
OLD_PERSIAN,
null,
DESERET,
SHAVIAN,
OSMANYA,
null,
CYPRIOT_SYLLABARY,
IMPERIAL_ARAMAIC,
null,
PHOENICIAN,
LYDIAN,
null,
MEROITIC_HIEROGLYPHS,
MEROITIC_CURSIVE,
KHAROSHTHI,
OLD_SOUTH_ARABIAN,
null,
AVESTAN,
INSCRIPTIONAL_PARTHIAN,
INSCRIPTIONAL_PAHLAVI,
null,
OLD_TURKIC,
null,
RUMI_NUMERAL_SYMBOLS,
null,
BRAHMI,
KAITHI,
SORA_SOMPENG,
CHAKMA,
null,
SHARADA,
null,
TAKRI,
null,
CUNEIFORM,
CUNEIFORM_NUMBERS_AND_PUNCTUATION,
null,
EGYPTIAN_HIEROGLYPHS,
null,
BAMUM_SUPPLEMENT,
null,
MIAO,
null,
KANA_SUPPLEMENT,
null,
BYZANTINE_MUSICAL_SYMBOLS,
MUSICAL_SYMBOLS,
ANCIENT_GREEK_MUSICAL_NOTATION,
null,
TAI_XUAN_JING_SYMBOLS,
COUNTING_ROD_NUMERALS,
null,
MATHEMATICAL_ALPHANUMERIC_SYMBOLS,
null,
ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS,
null,
MAHJONG_TILES,
DOMINO_TILES,
PLAYING_CARDS,
ENCLOSED_ALPHANUMERIC_SUPPLEMENT,
ENCLOSED_IDEOGRAPHIC_SUPPLEMENT,
MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS,
EMOTICONS,
null,
TRANSPORT_AND_MAP_SYMBOLS,
ALCHEMICAL_SYMBOLS,
null,
CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B,
null,
CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C,
CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D,
null,
CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT,
null,
TAGS,
null,
VARIATION_SELECTORS_SUPPLEMENT,
null,
SUPPLEMENTARY_PRIVATE_USE_AREA_A,
SUPPLEMENTARY_PRIVATE_USE_AREA_B
};
/**
* 返回表示包含给定字符,或Unicode的块中的对象 null如果字符不是一个定义的块中的一员
*/
public static UnicodeBlock of(char c) {
return of((int)c);
}
/**
* 返回表示包含给定字符(Unicode代码点)Unicode的块中的对象,或 null如果字符是不限定的块中的一员
*/
public static UnicodeBlock of(int codePoint) {
if (!isValidCodePoint(codePoint)) {
throw new IllegalArgumentException();
}
int top, bottom, current;
bottom = 0;
top = blockStarts.length;
current = top/2;
while (top - bottom > 1) {
if (codePoint >= blockStarts[current]) {
bottom = current;
} else {
top = current;
}
current = (top + bottom) / 2;
}
return blocks[current];
}
/**
* 返回具有给定名称的UnicodeBlock
*/
public static final UnicodeBlock forName(String blockName) {
UnicodeBlock block = map.get(blockName.toUpperCase(Locale.US));
if (block == null) {
throw new IllegalArgumentException();
}
return block;
}
}
/**
* 静态枚举类UnicodeScript
*/
public static enum UnicodeScript {
COMMON,
LATIN,
GREEK,
CYRILLIC,
ARMENIAN,
HEBREW,
ARABIC,
SYRIAC,
THAANA,
DEVANAGARI,
BENGALI,
GURMUKHI,
GUJARATI,
ORIYA,
TAMIL,
TELUGU,
KANNADA,
MALAYALAM,
SINHALA,
THAI,
LAO,
TIBETAN,
MYANMAR,
GEORGIAN,
HANGUL,
ETHIOPIC,
CHEROKEE,
CANADIAN_ABORIGINAL,
OGHAM,
RUNIC,
KHMER,
MONGOLIAN,
HIRAGANA,
KATAKANA,
BOPOMOFO,
HAN,
YI,
OLD_ITALIC,
GOTHIC,
DESERET,
INHERITED,
TAGALOG,
HANUNOO,
BUHID,
TAGBANWA,
LIMBU,
TAI_LE,
LINEAR_B,
UGARITIC,
SHAVIAN,
OSMANYA,
CYPRIOT,
BRAILLE,
BUGINESE,
COPTIC,
NEW_TAI_LUE,
GLAGOLITIC,
TIFINAGH,
SYLOTI_NAGRI,
OLD_PERSIAN,
KHAROSHTHI,
BALINESE,
CUNEIFORM,
PHOENICIAN,
PHAGS_PA,
NKO,
SUNDANESE,
BATAK,
LEPCHA,
OL_CHIKI,
VAI,
SAURASHTRA,
KAYAH_LI,
REJANG,
LYCIAN,
CARIAN,
LYDIAN,
CHAM,
TAI_THAM,
TAI_VIET,
AVESTAN,
EGYPTIAN_HIEROGLYPHS,
SAMARITAN,
MANDAIC,
LISU,
BAMUM,
JAVANESE,
MEETEI_MAYEK,
IMPERIAL_ARAMAIC,
OLD_SOUTH_ARABIAN,
INSCRIPTIONAL_PARTHIAN,
INSCRIPTIONAL_PAHLAVI,
OLD_TURKIC,
BRAHMI,
KAITHI,
MEROITIC_HIEROGLYPHS,
MEROITIC_CURSIVE,
SORA_SOMPENG,
CHAKMA,
SHARADA,
TAKRI,
MIAO,
UNKNOWN;
private static final int[] scriptStarts = {
0x0000,
0x0041,
0x005B,
0x0061,
0x007B,
0x00AA,
0x00AB,
0x00BA,
0x00BB,
0x00C0,
0x00D7,
0x00D8,
0x00F7,
0x00F8,
0x02B9,
0x02E0,
0x02E5,
0x02EA,
0x02EC,
0x0300,
0x0370,
0x0374,
0x0375,
0x037E,
0x0384,
0x0385,
0x0386,
0x0387,
0x0388,
0x03E2,
0x03F0,
0x0400,
0x0485,
0x0487,
0x0531,
0x0589,
0x058A,
0x0591,
0x0600,
0x060C,
0x060D,
0x061B,
0x061E,
0x061F,
0x0620,
0x0640,
0x0641,
0x064B,
0x0656,
0x0660,
0x066A,
0x0670,
0x0671,
0x06DD,
0x06DE,
0x0700,
0x0750,
0x0780,
0x07C0,
0x0800,
0x0840,
0x08A0,
0x0900,
0x0951,
0x0953,