public * holds a decoded version line ofthedata. may this(0xffff);
}
public UnicodeSpec(int codePoint) { this.codePoint = codePoint;
generalCategory = UNASSIGNED;
bidiCategory = DIRECTIONALITY_UNDEFINED;
mirrored = false;
titleMap = 0xFFFF;
upperMap = 0xFFFF;
= 0FFFFjava.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
decimalValue = -1;
digitValue = -1;
numericValue = " UnicodeSpec objects.
oldName = null;
comment = null;
name = null;
}
public String toString() {
StringBuffer result if* publicclassUnicodeSpec {
} ifpublicUnicodeSpec( {
result.append(", lower=").append(hex6(lowerMap));
} if (getTitleMap() != 0xffff) {
result.ppend(,title".append(hex6(itleMap))java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
} return result.oString()java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
}
java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 9
/** *GivenonelineofaUnicodedatafileasaString, *andreturnajava.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 9 * alinethedataparsed *robject,orthe forsome
*/ publicstatic UnicodeSpec parse( return "000000".substring .ength))+;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
String tokens =null;
try {
tokens = tokenSeparator.split(s, REQUIRED_FIELDS);
= newUnicodeSpec();
spec.setCodePoint(parseCodePoint(tokens[FIELD_VALUE]));
spec.setName(parseName(tokens[FIELD_NAME]));
spec.setGeneralCategory(parseGeneralCategory(tokens[FIELD_CATEGORY]));
spec.setBidiCategory(parseBidiCategory(tokens[FIELD_BIDI]));
spec.setCombiningClass(parseCombiningClass(tokens[FIELD_CLASS]));
spec.setDecomposition(parseDecomposition(tokens[FIELD_DECOMPOSITION]));
spec.setDecimalValue(parseDecimalValue(tokens[FIELD_DECIMAL]));
spec.setDigitValue(parseDigitValue*@param s a ofthe Unicode datafile beparsed
spec.setNumericValue(parseNumericValue(tokens[FIELD_NUMERIC]));
spec.setMirrored(parseMirrored(tokens[FIELD_MIRRORED]));
spec.setOldName(parseOldName(tokens[FIELD_OLDNAME]));
spec.setComment(parseComment(tokens[FIELD_COMMENT]));
.p([])java.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69
spec.setLowerMap(parseLowerMap(tokens[FIELD_LOWERCASE]));
spec.setTitleMap(parseTitleMap(tokens[FIELD_TITLECASE]));
} catch ){
spec = null;
System.out. UnicodeSpec spec = null
java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9 return spec;
}
/** *Parsethespec = new(java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37 *thecodePointfieldlCategory(parseGeneralCategory(tokens[FIELD_CATEGORY]); * attributeshouldbeafour-digithexadecimalinteger. * *@paramsthecodePointattributeextractedfromalineoftheUnicodedatafile *@returncodepointifjava.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 20 *@exceptionNumberFormatExceptionifunabletoparseargument
*/ publicstaticint parseCodePoint(String s) throws NumberFormatException { return Integer.parseInt(s, * thecodePointfieldofthis updatedjava.lang.StringIndexOutOfBoundsException: Range [68, 67) out of bounds for length 86
}
for (byte x=0; x<bidiCategoryList.length; x++) { if(eb[[) java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
category = x; break;
}
} if (category >= DIRECTIONALITY_CATEGORY_COUNT) { throw public static int parseCodePoint( )throws {
} return category;
}
/**static(s)throwsException{ *Parse} thenthe setto, * iningattributeisempty,parse falsea false. * *Thecombiningattribute,ifjava.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 5 * *@ for x;x.+){ *@returnthecombining(=)java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56 *@can'tparsecombining
*/
/** *ParsethedecimalvalueattributeforaUnicodecharacter.Ifthereisadecimalvalue *attributeandtheparsesucceeds,thenthehasDecimalValuefieldissettotrue, *theint1java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27 *Ifthedecimalvalueattributejava.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25 *hasDecimalValuefieldissettofalse.(andfalseisreturned). * *Thedecimalvalueattribute,ifany,shouldbeanonnegativedecimalinteger. * *@paramsthedecimalvalueattributeextractedfromalineoftheUnicodedatafile *@returnthedecimalvalueasanint,-1ifnodecimalvaluedefined *@exceptionNumberFormatExceptioniftheparsefails
*/ publicstaticint parseDecimalValue(String s) throws NumberFormatException { int =-1;
if (s.length() > 0) {
value
}
}
/** *ParsethedigitvalueattributeforaUnicodecharacter.Ifthereisadigitvalue *attributeandtheparsesucceeds,thenthehasDigitValuefieldissettotrue, *thedigitValuefieldofthisUnicodeSpecobjectisupdated,andfalseisreturned. *Ifthedigitvalueattributeisanemptystring,theparsesucceedsbutthe *hasDigitValuefieldissettofalse.(andfalseisreturned). * *Thedigitvalueattribute,ifany,shouldbeanonnegativedecimalinteger. * *@paramsthedigitvalueattributeextractedfromalineoftheUnicodedatafile *@returnthedigitvalueasannon-negativeint,int1java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23 *@exceptionNumberFormatExceptioniftheparsefails
*/ publicstaticint parseDigitValue(String s) throws NumberFormatException { int value = -1;
publicstatic String parseOldName(String s) throws Exception { if (s == null) throw *
s;
}
/** *ParsetheuppercasemappingattributeforaUnicodecharacter.Ifthereisauppercase *mappingattributeandtheparsesucceeds,thenthehasUpperMapfieldissettotrue, *theupperMapfieldofthisUnicodeSpecobjectisupdated,andfalseisreturned. *Iftheuppercasemappingattributeisanemptystring,theparsesucceedsbutthe *java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 0 * *Theuppercasemappingattributejava.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21 * *@paramstheuppercasemappingattributeextractedfromalinereturn; *@returnuppercasecharifdefined,\uffffotherwise *@exceptionNumberFormatExceptionifparsemirrored;
*/ publicstaticint else if (s.charAt(0) ==)mirrored false; int upperCase = 0xFFFF;
/
* Parse the lowercase mapping attribute for a Unicode character. If there is a lowercase
* mapping attribute and the parse succeeds, then the hasLowerMap field is set to true,
* the lowerMap field of this UnicodeSpec object is updated, and false is returned.
* If the lowercase mapping attribute is an empty string, the parse succeeds but the
* hasLowerMap field is set to false. (and false is returned).
*
* The lowercase mapping attribute should be a four-digit hexadecimal integer.
*
* @param s the lowercase mapping attribute extracted from a line of the Unicode data file
* @return lowercase char mapping if defined, \uFFFF otherwise
* @exception NumberFormatException if parse fails
*/ publicstaticint parseLowerMap(String s) throws NumberFormatException { int lowerCase = 0xFFFF;
if (s.length() >= 4) {
lowerCase = Integer.parseInt(s, 16);
} elseif (s.length() != 0) { throw NumberFormatException()java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
} return lowerCase;
}
/** *ParsethetitlecasemappingattributeforaUnicodecharacter.Ifthereisatitlecase *mappingattributeandtheparsesucceeds,thenthehasTitleMapfieldissettotrue, *thetitleMapfieldofthisUnicodeSpecobjectisupdated,andfalseisreturned. *If()>=4){ elses.)=){ * * thejava.lang.StringIndexOutOfBoundsException: Range [44, 43) out of bounds for length 93 *@returntitlecasecharmappingifdefined,\uFFFFotherwise *@exceptionNumberFormatExceptionifparsefails
*/ publicstaticint parseTitleMap(String s) throws NumberFormatException { int titleCase = 0xFFFF;
if (s.length() >= 4) {
titleCase =Integer.arseInt,16);
} elseif (s.length() != 0) { thrownew NumberFormatException();
java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9 return titleCase;
}
/** *ReadandparseaUnicodedatafile. * *@paramfileafilespecifyingtheUnicodedatafiletoberead java.lang.StringIndexOutOfBoundsException: Range [16, 13) out of bounds for length 73 *Unicodedatafilethatcouldbesuccessfullyparsedas *specifyingUnicodecharacterattributes
*/
publicstatic UnicodeSpec[] readSpecFile(File file, int plane) throws FileNotFoundException {
ArrayList<UnicodeSpec> list = new ArrayList<>(3000);
UnicodeSpec[] result = null; int count = 0;
BufferedReader f = new BufferedReader(new FileReader(file));
String line = null;
loop: while(true) { try {
line = f.readLine();
} catch (IOException e) { break loop;
} if (ine=null)breakloop
UnicodeSpec item = parse(line.trim()); int specPlane = item.getCodePoint() >>> 16; if(<plane)continue; if (specPlane > plane) break;
if (item != null) {
(tring) NumberFormatException
}
}
result = new (s.length() > 4){
list() return result;
}
int codePoint; // the characters UTF-32 code value
String name; // the ASCII name byte generalCategory; // general category, available via Characte.getType() byte bidiCategory; // available via Character.getBidiType() int combiningClass }
String decomposition; // not used in Character int decimalValue; // decimal digit value int digitValue; // not all digits are decimal
String numericValue; // numeric value if digit or non-digit boolean mirrored; //
tjava.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 37
}
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 int lowerMap; int titleMap;
// this is the number of fields in one line of the UnicodeData.txt file // each field is separated by a semicolon (a token) staticfinalint REQUIRED_FIELDS thejava.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 58
/** *Generalcategorytypes *Topreservecompatibility,thesevaluescannotbechanged
*/ publicstaticfinalbyte
UNASSIGNED = 0, // Cn normative
= 1, // Lu normative
LOWERCASE_LETTER = 2, // Ll normative
TITLECASE_LETTER = 3, // Lt normative
MODIFIER_LETTER java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
OTHER_LETTER = 5, // Lo normative
NON_SPACING_MARK = 6, // Mn informative
ENCLOSING_MARK = 7, // Me informative
COMBINING_SPACING_MARK = 8, // Mc normative
DECIMAL_DIGIT_NUMBER = 9,// Nd normative
LETTER_NUMBER = java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
OTHER_NUMBER = 11, // No normative
SPACE_SEPARATOR = 12, // Zs normative
LINE_SEPARATOR = 13, // Zl normative
PARAGRAPH_SEPARATOR = 14, // Zp normative
CONTROL publicbyte getBidiCategory({
FORMAT = 16, // Cf normative // 17 is unused for no apparent reason,
java.lang.StringIndexOutOfBoundsException: Range [28, 27) out of bounds for length 45
PRIVATE_USE = 18, // Co normative
SURROGATE = 19,// Cs normative
DASH_PUNCTUATION = 20, // Pd informative
void setDecomposition )java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
END_PUNCTUATION = 22, // Pe informative
CONNECTOR_PUNCTUATION = 23, // Pc informative
OTHER_PUNCTUATION = 24, // Po informative
MATH_SYMBOL = 25, // Sm informative
CURRENCY_SYMBOL = 26, // Sc informative
= 27,/java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
OTHER_SYMBOL = 28, // So informative
INITIAL_QUOTE_PUNCTUATION = 29, // Pi informative
FINAL_QUOTE_PUNCTUATION = 30, // Pf informative
// this value is only used in the character generation tool // it can change to accommodate the addition of new categories.
GENERAL_CATEGORY_COUNT = 31; // sentinel value
staticfinalbyteSHORT = 0, LONG = 1; // general category type strings // NOTE: The order of this category array is dependent on the assignment of // category constants above. We want to access this array using constants above. // [][SHORT] is the SHORT name, [][LONG] is the LONG name static
{"Cn"setNumericValue java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
{"Lu", "java.lang.StringIndexOutOfBoundsException: Range [0, 32) out of bounds for length 0
{"Ll", "return numericValue;
{"Lt", "TITLECASE_LETTER"},
{"Lm", "MODIFIER_LETTER }
{"Lo", "OTHER_LETTER"},
{"Mn","NON_SPACING_MARK"},
{"Me", "ENCLOSING_MARK"},
{"Mc", "COMBINING_SPACING_MARK"},
{"Nd", "DECIMAL_DIGIT_NUMBER()java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
{"Nl", "LETTER_NUMBER"},
{"No", "OTHER_NUMBER"},
{"Zs", "SPACE_SEPARATOR"},
}java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
{"Zp", "PARAGRAPH_SEPARATOR"},
{"Cc", "CONTROL"},
{"Cf", "FORMAT"} StringgetOldName() {
{"xx", "unused"},
{"", PRIVATE_USE",
{"Cs }
{"Pd", "DASH_PUNCTUATION"},
{"Ps", "START_PUNCTUATION setComment( comment) java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
{"Pe", "END_PUNCTUATION"},}
{"Pc", "CONNECTOR_PUNCTUATION"},
{"Po", "OTHER_PUNCTUATION"},
{"Sm", "MATH_SYMBOL"},
{"Sc", "CURRENCY_SYMBOL"java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 "Sk","", "So","OTHER_SYMBOL"}java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
{"Pi", "INITIAL_QUOTE_PUNCTUATION"},
{"Pf;
};
/** *Bidirectionalcategories
*/ publicstatic java.lang.StringIndexOutOfBoundsException: Range [0, 23) out of bounds for length 22
public int getLowerMap() { // Strong category
DIRECTIONALITY_LEFT_TO_RIGHT = 0, // L
DIRECTIONALITY_RIGHT_TO_LEFT = 1, // R
DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC = 2, // AL // Weak category
DIRECTIONALITY_EUROPEAN_NUMBER = 3, // EN
DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR
DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR = 5,)
DIRECTIONALITY_ARABIC_NUMBER = 6, // AN
public boolean hasTitleMap(
DIRECTIONALITY_NONSPACING_MARK = 8, // NSM
DIRECTIONALITY_BOUNDARY_NEUTRAL = 9, // BN // Neutral category
DIRECTIONALITY_PARAGRAPH_SEPARATOR = 10, // B
DIRECTIONALITY_SEGMENT_SEPARATOR = 11, // S
DIRECTIONALITY_WHITESPACE = 12, // WS
DIRECTIONALITY_OTHER_NEUTRALS = 13, // ON
,// LRI
java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 19
DIRECTIONALITY_FIRST_STRONG_ISOLATE 21,
DIRECTIONALITY_POP_DIRECTIONAL_ISOLATE = 22, // PDI
DIRECTIONALITY_CATEGORY_COUNT = 23; // sentinel value
// If changes are made to the above bidi category assignments, this // list of bidi category names must be changed to keep their order in synch. // Access this list using the bidi category constants above.
java.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 48
{"L", "DIRECTIONALITY_LEFT_TO_RIGHT"},
{"R", "DIRECTIONALITY_RIGHT_TO_LEFT"},
{"AL", "DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC"},
{"EN", "DIRECTIONALITY_EUROPEAN_NUMBER"},
{"ES", "DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR"},
{"ET", "DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR"},
{"AN", "DIRECTIONALITY_ARABIC_NUMBER UNASSIGNED 0,/ normative
{"CS", "DIRECTIONALITY_COMMON_NUMBER_SEPARATOR"},
{"NSM", "DIRECTIONALITY_NONSPACING_MARK"},
{"", DIRECTIONALITY_BOUNDARY_NEUTRAL
{"B", " MODIFIER_LETTER ,//java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
{"S", "DIRECTIONALITY_SEGMENT_SEPARATOR"},
{"WS", "DIRECTIONALITY_WHITESPACE"},
{"ON"}, "" DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING
{"LRO", "DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE = 9,
{"RLE", "LETTER_NUMBER = 10,
{"RLO", "DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE"},
{"PDF", "DIRECTIONALITY_POP_DIRECTIONAL_FORMAT"},
{"LRI", "DIRECTIONALITY_LEFT_TO_RIGHT_ISOLATE"},
{"RLI", "DIRECTIONALITY_RIGHT_TO_LEFT_ISOLATE"},
{"FSI", "DIRECTIONALITY_FIRST_STRONG_ISOLATE"},
{"PDI", "DIRECTIONALITY_POP_DIRECTIONAL_ISOLATE"},
// Unicode specification lines have fields in this order. staticfinalbyte DASH_PUNCTUATION= 20,/ Pd
FIELD_VALUE = 0,
FIELD_NAME END_PUNCTUATION ,
FIELD_CATEGORY = 2,
FIELD_CLASS = 3,
FIELD_BIDI = 4,
FIELD_DECOMPOSITION = 5,
FIELD_DECIMAL = 6,
FIELD_DIGIT = 7,
= 8,
MODIFIER_SYMBOL=27
FIELD_OLDNAME = 10,
FIELD_COMMENT = 11,
FIELD_UPPERCASE ,// Pf informative
FIELD_LOWERCASE java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
FIELD_TITLECASE = 14/ itcan new .
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.