ICU-1785 add isNFSkippable, addPropertySets internal APIs

X-SVN-Rev: 10272
This commit is contained in:
Ram Viswanadha 2002-11-15 21:04:20 +00:00
parent b38014de46
commit 88cd15726b
5 changed files with 717 additions and 48 deletions

View File

@ -5,8 +5,8 @@
*******************************************************************************
*
* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/normalizer/BasicTest.java,v $
* $Date: 2002/10/31 01:02:42 $
* $Revision: 1.19 $
* $Date: 2002/11/15 21:04:20 $
* $Revision: 1.20 $
*
*****************************************************************************************
*/
@ -2004,17 +2004,17 @@ public class BasicTest extends TestFmwk {
};
TestStruct[] tests= new TestStruct[]{
new TestStruct( 0x037A, new String( "\u0020\u03B9") ),
new TestStruct( 0x03D2, new String( "\u03C5") ),
new TestStruct( 0x20A8, new String( "\u0072\u0073") ) ,
new TestStruct( 0x210B, new String( "\u0068") ),
new TestStruct( 0x210C, new String( "\u0068") ),
new TestStruct( 0x2121, new String( "\u0074\u0065\u006C") ),
new TestStruct( 0x2122, new String( "\u0074\u006D") ),
new TestStruct( 0x2128, new String( "\u007A") ),
new TestStruct( 0x1D5DB, new String( "\u0068") ),
new TestStruct( 0x1D5ED, new String( "\u007A") ),
new TestStruct( 0x0061, new String() )
new TestStruct( 0x037A, "\u0020\u03B9" ),
new TestStruct( 0x03D2, "\u03C5" ),
new TestStruct( 0x20A8, "\u0072\u0073" ) ,
new TestStruct( 0x210B, "\u0068" ),
new TestStruct( 0x210C, "\u0068" ),
new TestStruct( 0x2121, "\u0074\u0065\u006C" ),
new TestStruct( 0x2122, "\u0074\u006D" ),
new TestStruct( 0x2128, "\u007A" ),
new TestStruct( 0x1D5DB,"\u0068" ),
new TestStruct( 0x1D5ED,"\u007A" ),
new TestStruct( 0x0061, "" )
};
@ -2028,8 +2028,9 @@ public class BasicTest extends TestFmwk {
/* error handling */
int length=Normalizer.getFC_NFKC_Closure(0x5c, null);
if(length!=0){
errln("getFC_NFKC_Closure did not perform error handling correctly");
}
}
public void TestBugJ2324(){
/* String[] input = new String[]{
@ -2052,4 +2053,519 @@ public class BasicTest extends TestFmwk {
}
}
/*
UNSAFE_STARTS[D] = new UnicodeSet("[\u0F73\u0F75\u0F81]", false);
UNSAFE_STARTS[C] = new UnicodeSet("[\u09BE\u09D7\u0B3E\u0B56-\u0B57\u0BBE\u0BD7\u0CC2\u0CD5-\u0CD6"
+ "\u0D3E\u0D57\u0DCF\u0DDF\u0F73\u0F75\u0F81\u102E\u1161-\u1175\u11A8-\u11C2]", false);
UNSAFE_STARTS[KD] = new UnicodeSet("[\u0F73\u0F75\u0F81\uFF9E-\uFF9F]", false);
UNSAFE_STARTS[KC] = new UnicodeSet("[\u09BE\u09D7\u0B3E\u0B56-\u0B57\u0BBE\u0BD7\u0CC2\u0CD5-\u0CD6"
+ "\u0D3E\u0D57\u0DCF\u0DDF\u0F73\u0F75\u0F81\u102E\u1161-\u1175\u11A8-\u11C2\u3133\u3135-\u3136"
+ "\u313A-\u313F\u314F-\u3163\uFF9E-\uFF9F\uFFA3\uFFA5-\uFFA6\uFFAA-\uFFAF\uFFC2-\uFFC7\uFFCA-\uFFCF"
+ "\uFFD2-\uFFD7\uFFDA-\uFFDC]", false);
*/
static final int D = 0, C = 1, KD= 2, KC = 3;
private static UnicodeSet[] initSkippables(UnicodeSet[] skippables){
if( skippables.length < 4 ){
return null;
}
skippables[D] = new UnicodeSet(
"[^\\u00C0-\\u00C5\\u00C7-\\u00CF\\u00D1-\\u00D6\\u00D9-\\u00DD"
+ "\\u00E0-\\u00E5\\u00E7-\\u00EF\\u00F1-\\u00F6\\u00F9-\\u00FD"
+ "\\u00FF-\\u010F\\u0112-\\u0125\\u0128-\\u0130\\u0134-\\u0137"
+ "\\u0139-\\u013E\\u0143-\\u0148\\u014C-\\u0151\\u0154-\\u0165"
+ "\\u0168-\\u017E\\u01A0-\\u01A1\\u01AF-\\u01B0\\u01CD-\\u01DC"
+ "\\u01DE-\\u01E3\\u01E6-\\u01F0\\u01F4-\\u01F5\\u01F8-\\u021B"
+ "\\u021E-\\u021F\\u0226-\\u0233\\u0300-\\u034E\\u0360-\\u036F"
+ "\\u0374\\u037E\\u0385-\\u038A\\u038C\\u038E-\\u0390\\u03AA-"
+ "\\u03B0\\u03CA-\\u03CE\\u03D3-\\u03D4\\u0400-\\u0401\\u0403"
+ "\\u0407\\u040C-\\u040E\\u0419\\u0439\\u0450-\\u0451\\u0453"
+ "\\u0457\\u045C-\\u045E\\u0476-\\u0477\\u0483-\\u0486\\u04C1-"
+ "\\u04C2\\u04D0-\\u04D3\\u04D6-\\u04D7\\u04DA-\\u04DF\\u04E2-"
+ "\\u04E7\\u04EA-\\u04F5\\u04F8-\\u04F9\\u0591-\\u05A1\\u05A3-"
+ "\\u05B9\\u05BB-\\u05BD\\u05BF\\u05C1-\\u05C2\\u05C4\\u0622-"
+ "\\u0626\\u064B-\\u0655\\u0670\\u06C0\\u06C2\\u06D3\\u06D6-"
+ "\\u06DC\\u06DF-\\u06E4\\u06E7-\\u06E8\\u06EA-\\u06ED\\u0711"
+ "\\u0730-\\u074A\\u0929\\u0931\\u0934\\u093C\\u094D\\u0951-"
+ "\\u0954\\u0958-\\u095F\\u09BC\\u09CB-\\u09CD\\u09DC-\\u09DD"
+ "\\u09DF\\u0A33\\u0A36\\u0A3C\\u0A4D\\u0A59-\\u0A5B\\u0A5E\\u0ABC"
+ "\\u0ACD\\u0B3C\\u0B48\\u0B4B-\\u0B4D\\u0B5C-\\u0B5D\\u0B94"
+ "\\u0BCA-\\u0BCD\\u0C48\\u0C4D\\u0C55-\\u0C56\\u0CC0\\u0CC7-"
+ "\\u0CC8\\u0CCA-\\u0CCB\\u0CCD\\u0D4A-\\u0D4D\\u0DCA\\u0DDA"
+ "\\u0DDC-\\u0DDE\\u0E38-\\u0E3A\\u0E48-\\u0E4B\\u0EB8-\\u0EB9"
+ "\\u0EC8-\\u0ECB\\u0F18-\\u0F19\\u0F35\\u0F37\\u0F39\\u0F43"
+ "\\u0F4D\\u0F52\\u0F57\\u0F5C\\u0F69\\u0F71-\\u0F76\\u0F78\\u0F7A"
+ "-\\u0F7D\\u0F80-\\u0F84\\u0F86-\\u0F87\\u0F93\\u0F9D\\u0FA2"
+ "\\u0FA7\\u0FAC\\u0FB9\\u0FC6\\u1026\\u1037\\u1039\\u1714\\u1734"
+ "\\u17D2\\u18A9\\u1E00-\\u1E99\\u1E9B\\u1EA0-\\u1EF9\\u1F00-"
+ "\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-"
+ "\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4"
+ "\\u1FB6-\\u1FBC\\u1FBE\\u1FC1-\\u1FC4\\u1FC6-\\u1FD3\\u1FD6-"
+ "\\u1FDB\\u1FDD-\\u1FEF\\u1FF2-\\u1FF4\\u1FF6-\\u1FFD\\u2000-"
+ "\\u2001\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20EA\\u2126\\u212A-"
+ "\\u212B\\u219A-\\u219B\\u21AE\\u21CD-\\u21CF\\u2204\\u2209"
+ "\\u220C\\u2224\\u2226\\u2241\\u2244\\u2247\\u2249\\u2260\\u2262"
+ "\\u226D-\\u2271\\u2274-\\u2275\\u2278-\\u2279\\u2280-\\u2281"
+ "\\u2284-\\u2285\\u2288-\\u2289\\u22AC-\\u22AF\\u22E0-\\u22E3"
+ "\\u22EA-\\u22ED\\u2329-\\u232A\\u2ADC\\u302A-\\u302F\\u304C"
+ "\\u304E\\u3050\\u3052\\u3054\\u3056\\u3058\\u305A\\u305C\\u305E"
+ "\\u3060\\u3062\\u3065\\u3067\\u3069\\u3070-\\u3071\\u3073-"
+ "\\u3074\\u3076-\\u3077\\u3079-\\u307A\\u307C-\\u307D\\u3094"
+ "\\u3099-\\u309A\\u309E\\u30AC\\u30AE\\u30B0\\u30B2\\u30B4\\u30B6"
+ "\\u30B8\\u30BA\\u30BC\\u30BE\\u30C0\\u30C2\\u30C5\\u30C7\\u30C9"
+ "\\u30D0-\\u30D1\\u30D3-\\u30D4\\u30D6-\\u30D7\\u30D9-\\u30DA"
+ "\\u30DC-\\u30DD\\u30F4\\u30F7-\\u30FA\\u30FE\\uAC00-\\uD7A3"
+ "\\uF900-\\uFA0D\\uFA10\\uFA12\\uFA15-\\uFA1E\\uFA20\\uFA22"
+ "\\uFA25-\\uFA26\\uFA2A-\\uFA2D\\uFA30-\\uFA6A\\uFB1D-\\uFB1F"
+ "\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40-\\uFB41\\uFB43-"
+ "\\uFB44\\uFB46-\\uFB4E\\uFE20-\\uFE23\\U0001D15E-\\U0001D169"
+ "\\U0001D16D-\\U0001D172\\U0001D17B-\\U0001D182\\U0001D185-"
+ "\\U0001D18B\\U0001D1AA-\\U0001D1AD\\U0001D1BB-\\U0001D1C0\\U0002"
+ "F800-\\U0002FA1D]", false);
/*Unicode:
"[^À-ÅÇ-ÏÑ-ÖÙ-Ýà-åç-ïñ-öù-ýÿ-??-??-??-??-??-??-??-??-ž?-??-??-??-"
+ "??-??-??-??-??-??-??-????-???-??-??-??-??-????-????-????-??-??-?"
+ "?-??-??-??-??-??-??-??-??-??-???-???-??-??????-??-??-??-???-????"
+ "???-??-???-??-???????-???????-??-???-????-???-??-???-????-??-??-"
+ "??-??-??-???????????-???-??-??-????????????????-???-??-??-??-??-"
+ "??-?????-??-??-???-??-??-??-??-??-?\?-\??-???-???-??-???-???????"
+ "??????-??-??-??-??-??-??-??-??-??-???-?????????????????-??-??-??"
+ "-??-???-??????????????????-??-??-??-??-???-???-??-????-????-??-?"
+ "?-??-??-??-???-??-??-??-??-??-??-??-??-??-??-?]"*/
skippables[C] = new UnicodeSet(
"[^<->A-PR-Za-pr-z\\u00A8\\u00C0-\\u00CF\\u00D1-\\u00D6\\u00D8-"
+ "\\u00DD\\u00E0-\\u00EF\\u00F1-\\u00F6\\u00F8-\\u00FD\\u00FF-"
+ "\\u0103\\u0106-\\u010F\\u0112-\\u0117\\u011A-\\u0121\\u0124-"
+ "\\u0125\\u0128-\\u012D\\u0130\\u0139-\\u013A\\u013D-\\u013E"
+ "\\u0143-\\u0144\\u0147-\\u0148\\u014C-\\u0151\\u0154-\\u0155"
+ "\\u0158-\\u015D\\u0160-\\u0161\\u0164-\\u0165\\u0168-\\u0171"
+ "\\u0174-\\u017F\\u01A0-\\u01A1\\u01AF-\\u01B0\\u01B7\\u01CD-"
+ "\\u01DC\\u01DE-\\u01E1\\u01E6-\\u01EB\\u01F4-\\u01F5\\u01F8-"
+ "\\u01FB\\u0200-\\u021B\\u021E-\\u021F\\u0226-\\u0233\\u0292"
+ "\\u0300-\\u034E\\u0360-\\u036F\\u0374\\u037E\\u0387\\u0391"
+ "\\u0395\\u0397\\u0399\\u039F\\u03A1\\u03A5\\u03A9\\u03AC\\u03AE"
+ "\\u03B1\\u03B5\\u03B7\\u03B9\\u03BF\\u03C1\\u03C5\\u03C9-\\u03CB"
+ "\\u03CE\\u03D2\\u0406\\u0410\\u0413\\u0415-\\u0418\\u041A\\u041E"
+ "\\u0423\\u0427\\u042B\\u042D\\u0430\\u0433\\u0435-\\u0438\\u043A"
+ "\\u043E\\u0443\\u0447\\u044B\\u044D\\u0456\\u0474-\\u0475\\u0483"
+ "-\\u0486\\u04D8-\\u04D9\\u04E8-\\u04E9\\u0591-\\u05A1\\u05A3-"
+ "\\u05B9\\u05BB-\\u05BD\\u05BF\\u05C1-\\u05C2\\u05C4\\u0622-"
+ "\\u0623\\u0627\\u0648\\u064A-\\u0655\\u0670\\u06C1\\u06D2\\u06D5"
+ "-\\u06DC\\u06DF-\\u06E4\\u06E7-\\u06E8\\u06EA-\\u06ED\\u0711"
+ "\\u0730-\\u074A\\u0928\\u0930\\u0933\\u093C\\u094D\\u0951-"
+ "\\u0954\\u0958-\\u095F\\u09BC\\u09BE\\u09C7\\u09CD\\u09D7\\u09DC"
+ "-\\u09DD\\u09DF\\u0A33\\u0A36\\u0A3C\\u0A4D\\u0A59-\\u0A5B"
+ "\\u0A5E\\u0ABC\\u0ACD\\u0B3C\\u0B3E\\u0B47\\u0B4D\\u0B56-\\u0B57"
+ "\\u0B5C-\\u0B5D\\u0B92\\u0BBE\\u0BC6-\\u0BC7\\u0BCD\\u0BD7"
+ "\\u0C46\\u0C4D\\u0C55-\\u0C56\\u0CBF\\u0CC2\\u0CC6\\u0CCA\\u0CCD"
+ "\\u0CD5-\\u0CD6\\u0D3E\\u0D46-\\u0D47\\u0D4D\\u0D57\\u0DCA"
+ "\\u0DCF\\u0DD9\\u0DDC\\u0DDF\\u0E38-\\u0E3A\\u0E48-\\u0E4B"
+ "\\u0EB8-\\u0EB9\\u0EC8-\\u0ECB\\u0F18-\\u0F19\\u0F35\\u0F37"
+ "\\u0F39\\u0F43\\u0F4D\\u0F52\\u0F57\\u0F5C\\u0F69\\u0F71-\\u0F76"
+ "\\u0F78\\u0F7A-\\u0F7D\\u0F80-\\u0F84\\u0F86-\\u0F87\\u0F93"
+ "\\u0F9D\\u0FA2\\u0FA7\\u0FAC\\u0FB9\\u0FC6\\u1025\\u102E\\u1037"
+ "\\u1039\\u1100-\\u1112\\u1161-\\u1175\\u11A8-\\u11C2\\u1714"
+ "\\u1734\\u17D2\\u18A9\\u1E00-\\u1E03\\u1E0A-\\u1E0F\\u1E12-"
+ "\\u1E1B\\u1E20-\\u1E27\\u1E2A-\\u1E41\\u1E44-\\u1E53\\u1E58-"
+ "\\u1E7D\\u1E80-\\u1E87\\u1E8E-\\u1E91\\u1E96-\\u1E99\\u1EA0-"
+ "\\u1EF3\\u1EF6-\\u1EF9\\u1F00-\\u1F11\\u1F18-\\u1F19\\u1F20-"
+ "\\u1F31\\u1F38-\\u1F39\\u1F40-\\u1F41\\u1F48-\\u1F49\\u1F50-"
+ "\\u1F51\\u1F59\\u1F60-\\u1F71\\u1F73-\\u1F75\\u1F77\\u1F79"
+ "\\u1F7B-\\u1F7D\\u1F80-\\u1F81\\u1F88-\\u1F89\\u1F90-\\u1F91"
+ "\\u1F98-\\u1F99\\u1FA0-\\u1FA1\\u1FA8-\\u1FA9\\u1FB3\\u1FB6"
+ "\\u1FBB-\\u1FBC\\u1FBE-\\u1FBF\\u1FC3\\u1FC6\\u1FC9\\u1FCB-"
+ "\\u1FCC\\u1FD3\\u1FDB\\u1FE3\\u1FEB\\u1FEE-\\u1FEF\\u1FF3\\u1FF6"
+ "\\u1FF9\\u1FFB-\\u1FFE\\u2000-\\u2001\\u20D0-\\u20DC\\u20E1"
+ "\\u20E5-\\u20EA\\u2126\\u212A-\\u212B\\u2190\\u2192\\u2194"
+ "\\u21D0\\u21D2\\u21D4\\u2203\\u2208\\u220B\\u2223\\u2225\\u223C"
+ "\\u2243\\u2245\\u2248\\u224D\\u2261\\u2264-\\u2265\\u2272-"
+ "\\u2273\\u2276-\\u2277\\u227A-\\u227D\\u2282-\\u2283\\u2286-"
+ "\\u2287\\u2291-\\u2292\\u22A2\\u22A8-\\u22A9\\u22AB\\u22B2-"
+ "\\u22B5\\u2329-\\u232A\\u2ADC\\u302A-\\u302F\\u3046\\u304B"
+ "\\u304D\\u304F\\u3051\\u3053\\u3055\\u3057\\u3059\\u305B\\u305D"
+ "\\u305F\\u3061\\u3064\\u3066\\u3068\\u306F\\u3072\\u3075\\u3078"
+ "\\u307B\\u3099-\\u309A\\u309D\\u30A6\\u30AB\\u30AD\\u30AF\\u30B1"
+ "\\u30B3\\u30B5\\u30B7\\u30B9\\u30BB\\u30BD\\u30BF\\u30C1\\u30C4"
+ "\\u30C6\\u30C8\\u30CF\\u30D2\\u30D5\\u30D8\\u30DB\\u30EF-\\u30F2"
+ "\\u30FD\\uAC00\\uAC1C\\uAC38\\uAC54\\uAC70\\uAC8C\\uACA8\\uACC4"
+ "\\uACE0\\uACFC\\uAD18\\uAD34\\uAD50\\uAD6C\\uAD88\\uADA4\\uADC0"
+ "\\uADDC\\uADF8\\uAE14\\uAE30\\uAE4C\\uAE68\\uAE84\\uAEA0\\uAEBC"
+ "\\uAED8\\uAEF4\\uAF10\\uAF2C\\uAF48\\uAF64\\uAF80\\uAF9C\\uAFB8"
+ "\\uAFD4\\uAFF0\\uB00C\\uB028\\uB044\\uB060\\uB07C\\uB098\\uB0B4"
+ "\\uB0D0\\uB0EC\\uB108\\uB124\\uB140\\uB15C\\uB178\\uB194\\uB1B0"
+ "\\uB1CC\\uB1E8\\uB204\\uB220\\uB23C\\uB258\\uB274\\uB290\\uB2AC"
+ "\\uB2C8\\uB2E4\\uB300\\uB31C\\uB338\\uB354\\uB370\\uB38C\\uB3A8"
+ "\\uB3C4\\uB3E0\\uB3FC\\uB418\\uB434\\uB450\\uB46C\\uB488\\uB4A4"
+ "\\uB4C0\\uB4DC\\uB4F8\\uB514\\uB530\\uB54C\\uB568\\uB584\\uB5A0"
+ "\\uB5BC\\uB5D8\\uB5F4\\uB610\\uB62C\\uB648\\uB664\\uB680\\uB69C"
+ "\\uB6B8\\uB6D4\\uB6F0\\uB70C\\uB728\\uB744\\uB760\\uB77C\\uB798"
+ "\\uB7B4\\uB7D0\\uB7EC\\uB808\\uB824\\uB840\\uB85C\\uB878\\uB894"
+ "\\uB8B0\\uB8CC\\uB8E8\\uB904\\uB920\\uB93C\\uB958\\uB974\\uB990"
+ "\\uB9AC\\uB9C8\\uB9E4\\uBA00\\uBA1C\\uBA38\\uBA54\\uBA70\\uBA8C"
+ "\\uBAA8\\uBAC4\\uBAE0\\uBAFC\\uBB18\\uBB34\\uBB50\\uBB6C\\uBB88"
+ "\\uBBA4\\uBBC0\\uBBDC\\uBBF8\\uBC14\\uBC30\\uBC4C\\uBC68\\uBC84"
+ "\\uBCA0\\uBCBC\\uBCD8\\uBCF4\\uBD10\\uBD2C\\uBD48\\uBD64\\uBD80"
+ "\\uBD9C\\uBDB8\\uBDD4\\uBDF0\\uBE0C\\uBE28\\uBE44\\uBE60\\uBE7C"
+ "\\uBE98\\uBEB4\\uBED0\\uBEEC\\uBF08\\uBF24\\uBF40\\uBF5C\\uBF78"
+ "\\uBF94\\uBFB0\\uBFCC\\uBFE8\\uC004\\uC020\\uC03C\\uC058\\uC074"
+ "\\uC090\\uC0AC\\uC0C8\\uC0E4\\uC100\\uC11C\\uC138\\uC154\\uC170"
+ "\\uC18C\\uC1A8\\uC1C4\\uC1E0\\uC1FC\\uC218\\uC234\\uC250\\uC26C"
+ "\\uC288\\uC2A4\\uC2C0\\uC2DC\\uC2F8\\uC314\\uC330\\uC34C\\uC368"
+ "\\uC384\\uC3A0\\uC3BC\\uC3D8\\uC3F4\\uC410\\uC42C\\uC448\\uC464"
+ "\\uC480\\uC49C\\uC4B8\\uC4D4\\uC4F0\\uC50C\\uC528\\uC544\\uC560"
+ "\\uC57C\\uC598\\uC5B4\\uC5D0\\uC5EC\\uC608\\uC624\\uC640\\uC65C"
+ "\\uC678\\uC694\\uC6B0\\uC6CC\\uC6E8\\uC704\\uC720\\uC73C\\uC758"
+ "\\uC774\\uC790\\uC7AC\\uC7C8\\uC7E4\\uC800\\uC81C\\uC838\\uC854"
+ "\\uC870\\uC88C\\uC8A8\\uC8C4\\uC8E0\\uC8FC\\uC918\\uC934\\uC950"
+ "\\uC96C\\uC988\\uC9A4\\uC9C0\\uC9DC\\uC9F8\\uCA14\\uCA30\\uCA4C"
+ "\\uCA68\\uCA84\\uCAA0\\uCABC\\uCAD8\\uCAF4\\uCB10\\uCB2C\\uCB48"
+ "\\uCB64\\uCB80\\uCB9C\\uCBB8\\uCBD4\\uCBF0\\uCC0C\\uCC28\\uCC44"
+ "\\uCC60\\uCC7C\\uCC98\\uCCB4\\uCCD0\\uCCEC\\uCD08\\uCD24\\uCD40"
+ "\\uCD5C\\uCD78\\uCD94\\uCDB0\\uCDCC\\uCDE8\\uCE04\\uCE20\\uCE3C"
+ "\\uCE58\\uCE74\\uCE90\\uCEAC\\uCEC8\\uCEE4\\uCF00\\uCF1C\\uCF38"
+ "\\uCF54\\uCF70\\uCF8C\\uCFA8\\uCFC4\\uCFE0\\uCFFC\\uD018\\uD034"
+ "\\uD050\\uD06C\\uD088\\uD0A4\\uD0C0\\uD0DC\\uD0F8\\uD114\\uD130"
+ "\\uD14C\\uD168\\uD184\\uD1A0\\uD1BC\\uD1D8\\uD1F4\\uD210\\uD22C"
+ "\\uD248\\uD264\\uD280\\uD29C\\uD2B8\\uD2D4\\uD2F0\\uD30C\\uD328"
+ "\\uD344\\uD360\\uD37C\\uD398\\uD3B4\\uD3D0\\uD3EC\\uD408\\uD424"
+ "\\uD440\\uD45C\\uD478\\uD494\\uD4B0\\uD4CC\\uD4E8\\uD504\\uD520"
+ "\\uD53C\\uD558\\uD574\\uD590\\uD5AC\\uD5C8\\uD5E4\\uD600\\uD61C"
+ "\\uD638\\uD654\\uD670\\uD68C\\uD6A8\\uD6C4\\uD6E0\\uD6FC\\uD718"
+ "\\uD734\\uD750\\uD76C\\uD788\\uF900-\\uFA0D\\uFA10\\uFA12\\uFA15"
+ "-\\uFA1E\\uFA20\\uFA22\\uFA25-\\uFA26\\uFA2A-\\uFA2D\\uFA30-"
+ "\\uFA6A\\uFB1D-\\uFB1F\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E"
+ "\\uFB40-\\uFB41\\uFB43-\\uFB44\\uFB46-\\uFB4E\\uFE20-\\uFE23"
+ "\\U0001D15E-\\U0001D169\\U0001D16D-\\U0001D172\\U0001D17B-"
+ "\\U0001D182\\U0001D185-\\U0001D18B\\U0001D1AA-\\U0001D1AD\\U0001"
+ "D1BB-\\U0001D1C0\\U0002F800-\\U0002FA1D]", false);
/*Unicode:
"[^<->A-PR-Za-pr-z¨À-ÏÑ-ÖØ-Ýà-ïñ-öø-ýÿ-??-??-??-??-??-???-??-??-?"
+ "?-??-??-??-?Š-š?-??-??-??-??-???-??-??-??-??-??-??-??-???-??-???"
+ "???????????????????-???????-??????????-?????????-??-??-??-??-??-"
+ "??-???-???-????-?????-??-??-??-???-???????-??-???????-???????-??"
+ "???????-??-????-??????-???????-???-?????????-??-??-??-??-???????"
+ "????-???-??-??-?????????????-??-??-??????-??-??-??-??-??-??-??-?"
+ "?-??-??-??-??-??-??-??-??-??-??-???-??-????-??-??-??-??-??-??-??"
+ "??-??-?????-??????-?????-?\?-\??-???-???-???????????????????-??-"
+ "??-??-??-??-??-???-???-??-???-???????????????????????-??????????"
+ "??????????????-?????????????????????????????????????????????????"
+ "????????????????????????????????????????????????????????????????"
+ "????????????????????????????????????????????????????????????????"
+ "????????????????????????????????????????????????????????????????"
+ "????????????????????????????????????????????????????????????????"
+ "????????????????????????????????????????????????????????????????"
+ "?????????????????????????????????-????-????-??-??-??-??-??-???-?"
+ "?-??-??-??-??-??-??-??-??-??-?]"*/
skippables[KD] = new UnicodeSet(
"[^\\u00A0\\u00A8\\u00AA\\u00AF\\u00B2-\\u00B5\\u00B8-\\u00BA"
+ "\\u00BC-\\u00BE\\u00C0-\\u00C5\\u00C7-\\u00CF\\u00D1-\\u00D6"
+ "\\u00D9-\\u00DD\\u00E0-\\u00E5\\u00E7-\\u00EF\\u00F1-\\u00F6"
+ "\\u00F9-\\u00FD\\u00FF-\\u010F\\u0112-\\u0125\\u0128-\\u0130"
+ "\\u0132-\\u0137\\u0139-\\u0140\\u0143-\\u0149\\u014C-\\u0151"
+ "\\u0154-\\u0165\\u0168-\\u017F\\u01A0-\\u01A1\\u01AF-\\u01B0"
+ "\\u01C4-\\u01DC\\u01DE-\\u01E3\\u01E6-\\u01F5\\u01F8-\\u021B"
+ "\\u021E-\\u021F\\u0226-\\u0233\\u02B0-\\u02B8\\u02D8-\\u02DD"
+ "\\u02E0-\\u02E4\\u0300-\\u034E\\u0360-\\u036F\\u0374\\u037A"
+ "\\u037E\\u0384-\\u038A\\u038C\\u038E-\\u0390\\u03AA-\\u03B0"
+ "\\u03CA-\\u03CE\\u03D0-\\u03D6\\u03F0-\\u03F2\\u03F4-\\u03F5"
+ "\\u0400-\\u0401\\u0403\\u0407\\u040C-\\u040E\\u0419\\u0439"
+ "\\u0450-\\u0451\\u0453\\u0457\\u045C-\\u045E\\u0476-\\u0477"
+ "\\u0483-\\u0486\\u04C1-\\u04C2\\u04D0-\\u04D3\\u04D6-\\u04D7"
+ "\\u04DA-\\u04DF\\u04E2-\\u04E7\\u04EA-\\u04F5\\u04F8-\\u04F9"
+ "\\u0587\\u0591-\\u05A1\\u05A3-\\u05B9\\u05BB-\\u05BD\\u05BF"
+ "\\u05C1-\\u05C2\\u05C4\\u0622-\\u0626\\u064B-\\u0655\\u0670"
+ "\\u0675-\\u0678\\u06C0\\u06C2\\u06D3\\u06D6-\\u06DC\\u06DF-"
+ "\\u06E4\\u06E7-\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A"
+ "\\u0929\\u0931\\u0934\\u093C\\u094D\\u0951-\\u0954\\u0958-"
+ "\\u095F\\u09BC\\u09CB-\\u09CD\\u09DC-\\u09DD\\u09DF\\u0A33"
+ "\\u0A36\\u0A3C\\u0A4D\\u0A59-\\u0A5B\\u0A5E\\u0ABC\\u0ACD\\u0B3C"
+ "\\u0B48\\u0B4B-\\u0B4D\\u0B5C-\\u0B5D\\u0B94\\u0BCA-\\u0BCD"
+ "\\u0C48\\u0C4D\\u0C55-\\u0C56\\u0CC0\\u0CC7-\\u0CC8\\u0CCA-"
+ "\\u0CCB\\u0CCD\\u0D4A-\\u0D4D\\u0DCA\\u0DDA\\u0DDC-\\u0DDE"
+ "\\u0E33\\u0E38-\\u0E3A\\u0E48-\\u0E4B\\u0EB3\\u0EB8-\\u0EB9"
+ "\\u0EC8-\\u0ECB\\u0EDC-\\u0EDD\\u0F0C\\u0F18-\\u0F19\\u0F35"
+ "\\u0F37\\u0F39\\u0F43\\u0F4D\\u0F52\\u0F57\\u0F5C\\u0F69\\u0F71-"
+ "\\u0F7D\\u0F80-\\u0F84\\u0F86-\\u0F87\\u0F93\\u0F9D\\u0FA2"
+ "\\u0FA7\\u0FAC\\u0FB9\\u0FC6\\u1026\\u1037\\u1039\\u1714\\u1734"
+ "\\u17D2\\u18A9\\u1E00-\\u1E9B\\u1EA0-\\u1EF9\\u1F00-\\u1F15"
+ "\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57"
+ "\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-"
+ "\\u1FC4\\u1FC6-\\u1FD3\\u1FD6-\\u1FDB\\u1FDD-\\u1FEF\\u1FF2-"
+ "\\u1FF4\\u1FF6-\\u1FFE\\u2000-\\u200A\\u2011\\u2017\\u2024-"
+ "\\u2026\\u202F\\u2033-\\u2034\\u2036-\\u2037\\u203C\\u203E"
+ "\\u2047-\\u2049\\u2057\\u205F\\u2070-\\u2071\\u2074-\\u208E"
+ "\\u20A8\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20EA\\u2100-\\u2103"
+ "\\u2105-\\u2107\\u2109-\\u2113\\u2115-\\u2116\\u2119-\\u211D"
+ "\\u2120-\\u2122\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-"
+ "\\u2131\\u2133-\\u2139\\u213D-\\u2140\\u2145-\\u2149\\u2153-"
+ "\\u217F\\u219A-\\u219B\\u21AE\\u21CD-\\u21CF\\u2204\\u2209"
+ "\\u220C\\u2224\\u2226\\u222C-\\u222D\\u222F-\\u2230\\u2241"
+ "\\u2244\\u2247\\u2249\\u2260\\u2262\\u226D-\\u2271\\u2274-"
+ "\\u2275\\u2278-\\u2279\\u2280-\\u2281\\u2284-\\u2285\\u2288-"
+ "\\u2289\\u22AC-\\u22AF\\u22E0-\\u22E3\\u22EA-\\u22ED\\u2329-"
+ "\\u232A\\u2460-\\u24EA\\u2A0C\\u2A74-\\u2A76\\u2ADC\\u2E9F"
+ "\\u2EF3\\u2F00-\\u2FD5\\u3000\\u302A-\\u302F\\u3036\\u3038-"
+ "\\u303A\\u304C\\u304E\\u3050\\u3052\\u3054\\u3056\\u3058\\u305A"
+ "\\u305C\\u305E\\u3060\\u3062\\u3065\\u3067\\u3069\\u3070-\\u3071"
+ "\\u3073-\\u3074\\u3076-\\u3077\\u3079-\\u307A\\u307C-\\u307D"
+ "\\u3094\\u3099-\\u309C\\u309E-\\u309F\\u30AC\\u30AE\\u30B0"
+ "\\u30B2\\u30B4\\u30B6\\u30B8\\u30BA\\u30BC\\u30BE\\u30C0\\u30C2"
+ "\\u30C5\\u30C7\\u30C9\\u30D0-\\u30D1\\u30D3-\\u30D4\\u30D6-"
+ "\\u30D7\\u30D9-\\u30DA\\u30DC-\\u30DD\\u30F4\\u30F7-\\u30FA"
+ "\\u30FE-\\u30FF\\u3131-\\u318E\\u3192-\\u319F\\u3200-\\u321C"
+ "\\u3220-\\u3243\\u3251-\\u327B\\u3280-\\u32CB\\u32D0-\\u32FE"
+ "\\u3300-\\u3376\\u337B-\\u33DD\\u33E0-\\u33FE\\uAC00-\\uD7A3"
+ "\\uF900-\\uFA0D\\uFA10\\uFA12\\uFA15-\\uFA1E\\uFA20\\uFA22"
+ "\\uFA25-\\uFA26\\uFA2A-\\uFA2D\\uFA30-\\uFA6A\\uFB00-\\uFB06"
+ "\\uFB13-\\uFB17\\uFB1D-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40-"
+ "\\uFB41\\uFB43-\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-"
+ "\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFC\\uFE20-\\uFE23\\uFE30-"
+ "\\uFE44\\uFE49-\\uFE52\\uFE54-\\uFE66\\uFE68-\\uFE6B\\uFE70-"
+ "\\uFE72\\uFE74\\uFE76-\\uFEFC\\uFF01-\\uFFBE\\uFFC2-\\uFFC7"
+ "\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC\\uFFE0-\\uFFE6"
+ "\\uFFE8-\\uFFEE\\U0001D15E-\\U0001D169\\U0001D16D-\\U0001D172"
+ "\\U0001D17B-\\U0001D182\\U0001D185-\\U0001D18B\\U0001D1AA-"
+ "\\U0001D1AD\\U0001D1BB-\\U0001D1C0\\U0001D400-\\U0001D454\\U0001"
+ "D456-\\U0001D49C\\U0001D49E-\\U0001D49F\\U0001D4A2\\U0001D4A5-"
+ "\\U0001D4A6\\U0001D4A9-\\U0001D4AC\\U0001D4AE-\\U0001D4B9\\U0001"
+ "D4BB\\U0001D4BD-\\U0001D4C0\\U0001D4C2-\\U0001D4C3\\U0001D4C5-"
+ "\\U0001D505\\U0001D507-\\U0001D50A\\U0001D50D-\\U0001D514\\U0001"
+ "D516-\\U0001D51C\\U0001D51E-\\U0001D539\\U0001D53B-\\U0001D53E"
+ "\\U0001D540-\\U0001D544\\U0001D546\\U0001D54A-\\U0001D550\\U0001"
+ "D552-\\U0001D6A3\\U0001D6A8-\\U0001D7C9\\U0001D7CE-\\U0001D7FF"
+ "\\U0002F800-\\U0002FA1D]", false);
/*Unicode:
"[^ ¨ª¯²-µ¸-º¼-¾À-ÅÇ-ÏÑ-ÖÙ-Ýà-åç-ïñ-öù-ýÿ-??-??-??-??-??-??-??-??"
+ "-??-??-??-??-??-??-??-??-??-??-??-??-??-?????-???-??-??-??-??-??"
+ "-??-????-????-????-??-??-??-??-??-??-??-??-??-???-??-??-???-???-"
+ "??-???-?????-??-??-??-???-???????-??-???-??-???????-???????-??-?"
+ "??-????-???-??-???-????-???-??-???-??-??-???-???????????-??-??-?"
+ "???????????????-??-??-??-??-??-??-?????-??-??-??-??-??-??-??-?"
+ "\?-\????-…??-??-????-??\??-??-???-???-??-??-??-??-??-??-™????-??"
+ "-??-??-??-??-??-???-???????-??-????????-??-??-??-??-??-??-??-??-"
+ "??-??-???-?????-?\??-???-?????????????????-??-??-??-??-???-??-??"
+ "???????????????-??-??-??-??-???-??-??-??-??-??-??-??-??-??-??-??"
+ "-??-??-????-????-??-??-??-??-??-??-???-??-??-??-??-??-??-??-??-?"
+ "?-??-??-??-???-??-??-??-??-??-??-??-??-??-??-??-??-??"
+ "-??-??-??-???-??-??-???-??-??-??-??-??"
+ "-??-??-??-???-??-??-??-??-?]"*/
skippables[KC] = new UnicodeSet(
"[^<->A-PR-Za-pr-z\\u00A0\\u00A8\\u00AA\\u00AF\\u00B2-\\u00B5"
+ "\\u00B8-\\u00BA\\u00BC-\\u00BE\\u00C0-\\u00CF\\u00D1-\\u00D6"
+ "\\u00D8-\\u00DD\\u00E0-\\u00EF\\u00F1-\\u00F6\\u00F8-\\u00FD"
+ "\\u00FF-\\u0103\\u0106-\\u010F\\u0112-\\u0117\\u011A-\\u0121"
+ "\\u0124-\\u0125\\u0128-\\u012D\\u0130\\u0132-\\u0133\\u0139-"
+ "\\u013A\\u013D-\\u0140\\u0143-\\u0144\\u0147-\\u0149\\u014C-"
+ "\\u0151\\u0154-\\u0155\\u0158-\\u015D\\u0160-\\u0161\\u0164-"
+ "\\u0165\\u0168-\\u0171\\u0174-\\u017F\\u01A0-\\u01A1\\u01AF-"
+ "\\u01B0\\u01B7\\u01C4-\\u01DC\\u01DE-\\u01E1\\u01E6-\\u01EB"
+ "\\u01F1-\\u01F5\\u01F8-\\u01FB\\u0200-\\u021B\\u021E-\\u021F"
+ "\\u0226-\\u0233\\u0292\\u02B0-\\u02B8\\u02D8-\\u02DD\\u02E0-"
+ "\\u02E4\\u0300-\\u034E\\u0360-\\u036F\\u0374\\u037A\\u037E"
+ "\\u0384-\\u0385\\u0387\\u0391\\u0395\\u0397\\u0399\\u039F\\u03A1"
+ "\\u03A5\\u03A9\\u03AC\\u03AE\\u03B1\\u03B5\\u03B7\\u03B9\\u03BF"
+ "\\u03C1\\u03C5\\u03C9-\\u03CB\\u03CE\\u03D0-\\u03D6\\u03F0-"
+ "\\u03F2\\u03F4-\\u03F5\\u0406\\u0410\\u0413\\u0415-\\u0418"
+ "\\u041A\\u041E\\u0423\\u0427\\u042B\\u042D\\u0430\\u0433\\u0435-"
+ "\\u0438\\u043A\\u043E\\u0443\\u0447\\u044B\\u044D\\u0456\\u0474-"
+ "\\u0475\\u0483-\\u0486\\u04D8-\\u04D9\\u04E8-\\u04E9\\u0587"
+ "\\u0591-\\u05A1\\u05A3-\\u05B9\\u05BB-\\u05BD\\u05BF\\u05C1-"
+ "\\u05C2\\u05C4\\u0622-\\u0623\\u0627\\u0648\\u064A-\\u0655"
+ "\\u0670\\u0675-\\u0678\\u06C1\\u06D2\\u06D5-\\u06DC\\u06DF-"
+ "\\u06E4\\u06E7-\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A"
+ "\\u0928\\u0930\\u0933\\u093C\\u094D\\u0951-\\u0954\\u0958-"
+ "\\u095F\\u09BC\\u09BE\\u09C7\\u09CD\\u09D7\\u09DC-\\u09DD\\u09DF"
+ "\\u0A33\\u0A36\\u0A3C\\u0A4D\\u0A59-\\u0A5B\\u0A5E\\u0ABC\\u0ACD"
+ "\\u0B3C\\u0B3E\\u0B47\\u0B4D\\u0B56-\\u0B57\\u0B5C-\\u0B5D"
+ "\\u0B92\\u0BBE\\u0BC6-\\u0BC7\\u0BCD\\u0BD7\\u0C46\\u0C4D\\u0C55"
+ "-\\u0C56\\u0CBF\\u0CC2\\u0CC6\\u0CCA\\u0CCD\\u0CD5-\\u0CD6"
+ "\\u0D3E\\u0D46-\\u0D47\\u0D4D\\u0D57\\u0DCA\\u0DCF\\u0DD9\\u0DDC"
+ "\\u0DDF\\u0E33\\u0E38-\\u0E3A\\u0E48-\\u0E4B\\u0EB3\\u0EB8-"
+ "\\u0EB9\\u0EC8-\\u0ECB\\u0EDC-\\u0EDD\\u0F0C\\u0F18-\\u0F19"
+ "\\u0F35\\u0F37\\u0F39\\u0F43\\u0F4D\\u0F52\\u0F57\\u0F5C\\u0F69"
+ "\\u0F71-\\u0F7D\\u0F80-\\u0F84\\u0F86-\\u0F87\\u0F93\\u0F9D"
+ "\\u0FA2\\u0FA7\\u0FAC\\u0FB9\\u0FC6\\u1025\\u102E\\u1037\\u1039"
+ "\\u1100-\\u1112\\u1161-\\u1175\\u11A8-\\u11C2\\u1714\\u1734"
+ "\\u17D2\\u18A9\\u1E00-\\u1E03\\u1E0A-\\u1E0F\\u1E12-\\u1E1B"
+ "\\u1E20-\\u1E27\\u1E2A-\\u1E41\\u1E44-\\u1E53\\u1E58-\\u1E7D"
+ "\\u1E80-\\u1E87\\u1E8E-\\u1E91\\u1E96-\\u1E9B\\u1EA0-\\u1EF3"
+ "\\u1EF6-\\u1EF9\\u1F00-\\u1F11\\u1F18-\\u1F19\\u1F20-\\u1F31"
+ "\\u1F38-\\u1F39\\u1F40-\\u1F41\\u1F48-\\u1F49\\u1F50-\\u1F51"
+ "\\u1F59\\u1F60-\\u1F71\\u1F73-\\u1F75\\u1F77\\u1F79\\u1F7B-"
+ "\\u1F7D\\u1F80-\\u1F81\\u1F88-\\u1F89\\u1F90-\\u1F91\\u1F98-"
+ "\\u1F99\\u1FA0-\\u1FA1\\u1FA8-\\u1FA9\\u1FB3\\u1FB6\\u1FBB-"
+ "\\u1FC1\\u1FC3\\u1FC6\\u1FC9\\u1FCB-\\u1FCF\\u1FD3\\u1FDB\\u1FDD"
+ "-\\u1FDF\\u1FE3\\u1FEB\\u1FED-\\u1FEF\\u1FF3\\u1FF6\\u1FF9"
+ "\\u1FFB-\\u1FFE\\u2000-\\u200A\\u2011\\u2017\\u2024-\\u2026"
+ "\\u202F\\u2033-\\u2034\\u2036-\\u2037\\u203C\\u203E\\u2047-"
+ "\\u2049\\u2057\\u205F\\u2070-\\u2071\\u2074-\\u208E\\u20A8"
+ "\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20EA\\u2100-\\u2103\\u2105-"
+ "\\u2107\\u2109-\\u2113\\u2115-\\u2116\\u2119-\\u211D\\u2120-"
+ "\\u2122\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2131"
+ "\\u2133-\\u2139\\u213D-\\u2140\\u2145-\\u2149\\u2153-\\u217F"
+ "\\u2190\\u2192\\u2194\\u21D0\\u21D2\\u21D4\\u2203\\u2208\\u220B"
+ "\\u2223\\u2225\\u222C-\\u222D\\u222F-\\u2230\\u223C\\u2243"
+ "\\u2245\\u2248\\u224D\\u2261\\u2264-\\u2265\\u2272-\\u2273"
+ "\\u2276-\\u2277\\u227A-\\u227D\\u2282-\\u2283\\u2286-\\u2287"
+ "\\u2291-\\u2292\\u22A2\\u22A8-\\u22A9\\u22AB\\u22B2-\\u22B5"
+ "\\u2329-\\u232A\\u2460-\\u24EA\\u2A0C\\u2A74-\\u2A76\\u2ADC"
+ "\\u2E9F\\u2EF3\\u2F00-\\u2FD5\\u3000\\u302A-\\u302F\\u3036"
+ "\\u3038-\\u303A\\u3046\\u304B\\u304D\\u304F\\u3051\\u3053\\u3055"
+ "\\u3057\\u3059\\u305B\\u305D\\u305F\\u3061\\u3064\\u3066\\u3068"
+ "\\u306F\\u3072\\u3075\\u3078\\u307B\\u3099-\\u309D\\u309F\\u30A6"
+ "\\u30AB\\u30AD\\u30AF\\u30B1\\u30B3\\u30B5\\u30B7\\u30B9\\u30BB"
+ "\\u30BD\\u30BF\\u30C1\\u30C4\\u30C6\\u30C8\\u30CF\\u30D2\\u30D5"
+ "\\u30D8\\u30DB\\u30EF-\\u30F2\\u30FD\\u30FF\\u3131-\\u318E"
+ "\\u3192-\\u319F\\u3200-\\u321C\\u3220-\\u3243\\u3251-\\u327B"
+ "\\u3280-\\u32CB\\u32D0-\\u32FE\\u3300-\\u3376\\u337B-\\u33DD"
+ "\\u33E0-\\u33FE\\uAC00\\uAC1C\\uAC38\\uAC54\\uAC70\\uAC8C\\uACA8"
+ "\\uACC4\\uACE0\\uACFC\\uAD18\\uAD34\\uAD50\\uAD6C\\uAD88\\uADA4"
+ "\\uADC0\\uADDC\\uADF8\\uAE14\\uAE30\\uAE4C\\uAE68\\uAE84\\uAEA0"
+ "\\uAEBC\\uAED8\\uAEF4\\uAF10\\uAF2C\\uAF48\\uAF64\\uAF80\\uAF9C"
+ "\\uAFB8\\uAFD4\\uAFF0\\uB00C\\uB028\\uB044\\uB060\\uB07C\\uB098"
+ "\\uB0B4\\uB0D0\\uB0EC\\uB108\\uB124\\uB140\\uB15C\\uB178\\uB194"
+ "\\uB1B0\\uB1CC\\uB1E8\\uB204\\uB220\\uB23C\\uB258\\uB274\\uB290"
+ "\\uB2AC\\uB2C8\\uB2E4\\uB300\\uB31C\\uB338\\uB354\\uB370\\uB38C"
+ "\\uB3A8\\uB3C4\\uB3E0\\uB3FC\\uB418\\uB434\\uB450\\uB46C\\uB488"
+ "\\uB4A4\\uB4C0\\uB4DC\\uB4F8\\uB514\\uB530\\uB54C\\uB568\\uB584"
+ "\\uB5A0\\uB5BC\\uB5D8\\uB5F4\\uB610\\uB62C\\uB648\\uB664\\uB680"
+ "\\uB69C\\uB6B8\\uB6D4\\uB6F0\\uB70C\\uB728\\uB744\\uB760\\uB77C"
+ "\\uB798\\uB7B4\\uB7D0\\uB7EC\\uB808\\uB824\\uB840\\uB85C\\uB878"
+ "\\uB894\\uB8B0\\uB8CC\\uB8E8\\uB904\\uB920\\uB93C\\uB958\\uB974"
+ "\\uB990\\uB9AC\\uB9C8\\uB9E4\\uBA00\\uBA1C\\uBA38\\uBA54\\uBA70"
+ "\\uBA8C\\uBAA8\\uBAC4\\uBAE0\\uBAFC\\uBB18\\uBB34\\uBB50\\uBB6C"
+ "\\uBB88\\uBBA4\\uBBC0\\uBBDC\\uBBF8\\uBC14\\uBC30\\uBC4C\\uBC68"
+ "\\uBC84\\uBCA0\\uBCBC\\uBCD8\\uBCF4\\uBD10\\uBD2C\\uBD48\\uBD64"
+ "\\uBD80\\uBD9C\\uBDB8\\uBDD4\\uBDF0\\uBE0C\\uBE28\\uBE44\\uBE60"
+ "\\uBE7C\\uBE98\\uBEB4\\uBED0\\uBEEC\\uBF08\\uBF24\\uBF40\\uBF5C"
+ "\\uBF78\\uBF94\\uBFB0\\uBFCC\\uBFE8\\uC004\\uC020\\uC03C\\uC058"
+ "\\uC074\\uC090\\uC0AC\\uC0C8\\uC0E4\\uC100\\uC11C\\uC138\\uC154"
+ "\\uC170\\uC18C\\uC1A8\\uC1C4\\uC1E0\\uC1FC\\uC218\\uC234\\uC250"
+ "\\uC26C\\uC288\\uC2A4\\uC2C0\\uC2DC\\uC2F8\\uC314\\uC330\\uC34C"
+ "\\uC368\\uC384\\uC3A0\\uC3BC\\uC3D8\\uC3F4\\uC410\\uC42C\\uC448"
+ "\\uC464\\uC480\\uC49C\\uC4B8\\uC4D4\\uC4F0\\uC50C\\uC528\\uC544"
+ "\\uC560\\uC57C\\uC598\\uC5B4\\uC5D0\\uC5EC\\uC608\\uC624\\uC640"
+ "\\uC65C\\uC678\\uC694\\uC6B0\\uC6CC\\uC6E8\\uC704\\uC720\\uC73C"
+ "\\uC758\\uC774\\uC790\\uC7AC\\uC7C8\\uC7E4\\uC800\\uC81C\\uC838"
+ "\\uC854\\uC870\\uC88C\\uC8A8\\uC8C4\\uC8E0\\uC8FC\\uC918\\uC934"
+ "\\uC950\\uC96C\\uC988\\uC9A4\\uC9C0\\uC9DC\\uC9F8\\uCA14\\uCA30"
+ "\\uCA4C\\uCA68\\uCA84\\uCAA0\\uCABC\\uCAD8\\uCAF4\\uCB10\\uCB2C"
+ "\\uCB48\\uCB64\\uCB80\\uCB9C\\uCBB8\\uCBD4\\uCBF0\\uCC0C\\uCC28"
+ "\\uCC44\\uCC60\\uCC7C\\uCC98\\uCCB4\\uCCD0\\uCCEC\\uCD08\\uCD24"
+ "\\uCD40\\uCD5C\\uCD78\\uCD94\\uCDB0\\uCDCC\\uCDE8\\uCE04\\uCE20"
+ "\\uCE3C\\uCE58\\uCE74\\uCE90\\uCEAC\\uCEC8\\uCEE4\\uCF00\\uCF1C"
+ "\\uCF38\\uCF54\\uCF70\\uCF8C\\uCFA8\\uCFC4\\uCFE0\\uCFFC\\uD018"
+ "\\uD034\\uD050\\uD06C\\uD088\\uD0A4\\uD0C0\\uD0DC\\uD0F8\\uD114"
+ "\\uD130\\uD14C\\uD168\\uD184\\uD1A0\\uD1BC\\uD1D8\\uD1F4\\uD210"
+ "\\uD22C\\uD248\\uD264\\uD280\\uD29C\\uD2B8\\uD2D4\\uD2F0\\uD30C"
+ "\\uD328\\uD344\\uD360\\uD37C\\uD398\\uD3B4\\uD3D0\\uD3EC\\uD408"
+ "\\uD424\\uD440\\uD45C\\uD478\\uD494\\uD4B0\\uD4CC\\uD4E8\\uD504"
+ "\\uD520\\uD53C\\uD558\\uD574\\uD590\\uD5AC\\uD5C8\\uD5E4\\uD600"
+ "\\uD61C\\uD638\\uD654\\uD670\\uD68C\\uD6A8\\uD6C4\\uD6E0\\uD6FC"
+ "\\uD718\\uD734\\uD750\\uD76C\\uD788\\uF900-\\uFA0D\\uFA10\\uFA12"
+ "\\uFA15-\\uFA1E\\uFA20\\uFA22\\uFA25-\\uFA26\\uFA2A-\\uFA2D"
+ "\\uFA30-\\uFA6A\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB36"
+ "\\uFB38-\\uFB3C\\uFB3E\\uFB40-\\uFB41\\uFB43-\\uFB44\\uFB46-"
+ "\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-"
+ "\\uFDFC\\uFE20-\\uFE23\\uFE30-\\uFE44\\uFE49-\\uFE52\\uFE54-"
+ "\\uFE66\\uFE68-\\uFE6B\\uFE70-\\uFE72\\uFE74\\uFE76-\\uFEFC"
+ "\\uFF01-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7"
+ "\\uFFDA-\\uFFDC\\uFFE0-\\uFFE6\\uFFE8-\\uFFEE\\U0001D15E-\\U0001"
+ "D169\\U0001D16D-\\U0001D172\\U0001D17B-\\U0001D182\\U0001D185-"
+ "\\U0001D18B\\U0001D1AA-\\U0001D1AD\\U0001D1BB-\\U0001D1C0\\U0001"
+ "D400-\\U0001D454\\U0001D456-\\U0001D49C\\U0001D49E-\\U0001D49F"
+ "\\U0001D4A2\\U0001D4A5-\\U0001D4A6\\U0001D4A9-\\U0001D4AC\\U0001"
+ "D4AE-\\U0001D4B9\\U0001D4BB\\U0001D4BD-\\U0001D4C0\\U0001D4C2-"
+ "\\U0001D4C3\\U0001D4C5-\\U0001D505\\U0001D507-\\U0001D50A\\U0001"
+ "D50D-\\U0001D514\\U0001D516-\\U0001D51C\\U0001D51E-\\U0001D539"
+ "\\U0001D53B-\\U0001D53E\\U0001D540-\\U0001D544\\U0001D546\\U0001"
+ "D54A-\\U0001D550\\U0001D552-\\U0001D6A3\\U0001D6A8-\\U0001D7C9"
+ "\\U0001D7CE-\\U0001D7FF\\U0002F800-\\U0002FA1D]", false);
return skippables;
}
public void TestSkippable() {
UnicodeSet starts, diff;
UnicodeSet[] skipSets = new UnicodeSet[]{
new UnicodeSet(),
new UnicodeSet(),
new UnicodeSet(),
new UnicodeSet()
};
UnicodeSet[] expectSets = new UnicodeSet[]{
new UnicodeSet(),
new UnicodeSet(),
new UnicodeSet(),
new UnicodeSet()
};
StringBuffer s, pattern;
int start, limit, rangeStart, rangeEnd;
int i, range, count;
starts = new UnicodeSet();
/* build NF*Skippable sets from runtime data */
NormalizerImpl.addPropertyStarts(starts);
count=starts.getRangeCount();
start=limit=0;
rangeStart=rangeEnd=0;
range=0;
for(;;) {
if(start<limit) {
/* get properties for start and apply them to [start..limit[ */
if(Normalizer.isNFSkippable(start, Normalizer.NFD)) {
skipSets[D].add(start, limit-1);
}
if(Normalizer.isNFSkippable(start, Normalizer.NFKD)) {
skipSets[KD].add(start, limit-1);
}
if(Normalizer.isNFSkippable(start, Normalizer.NFC)) {
skipSets[C].add(start, limit-1);
}
if(Normalizer.isNFSkippable(start, Normalizer.NFKC)) {
skipSets[KC].add(start, limit-1);
}
}
/* go to next range of same properties */
start=limit;
if(++limit>rangeEnd) {
if(range<count) {
limit=rangeStart=starts.getRangeStart(range);
rangeEnd=starts.getRangeEnd(range);
++range;
} else if(range==count) {
/* additional range to complete the Unicode code space */
limit=rangeStart=rangeEnd=0x110000;
++range;
} else {
break;
}
}
}
expectSets = initSkippables(expectSets);
for(i=0; i<expectSets.length; ++i) {
if(!skipSets[i].equals(expectSets[i])) {
errln("error: TestSkippable skipSets["+i+"]!=expectedSets["+i+"]\n"+
"may need to update hardcoded UnicodeSet patterns in com.ibm.icu.dev.test.normalizer.BasicTest.java\n");
s=new StringBuffer("skip-expect=");
pattern = new StringBuffer((diff=skipSets[i]).removeAll(expectSets[i]).toPattern(true));
s.append(pattern);
pattern.delete(0,pattern.length());
s.append("\n\nexpect-skip=");
pattern = new StringBuffer((diff=expectSets[i]).removeAll(skipSets[i]).toPattern(true));
s.append(pattern);
s.append("\n\n");
errln(s.toString());
}
}
}
}

View File

@ -5,8 +5,8 @@
*******************************************************************************
*
* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/NormalizerDataReader.java,v $
* $Date: 2002/10/09 23:53:24 $
* $Revision: 1.8 $
* $Date: 2002/11/15 21:04:19 $
* $Revision: 1.9 $
*******************************************************************************
*/
@ -229,13 +229,38 @@ import com.ibm.icu.impl.ICUDebug;
*
* The auxiliary 16-bit trie contains data for additional properties.
* Bits
* 15..12 reserved (for skippable flags, see NormalizerTransliterator)
* 15..13 reserved
* 12 not NFC_Skippable (f) (formatVersion>=2.2)
* 11 flag: not a safe starter for canonical closure
* 10 composition exclusion
* 9.. 0 index into extraData[] to FC_NFKC_Closure string
* (not for lead surrogate),
* or lead surrogate offset (for lead surrogate, if 9..0 not zero)
*
*
* Conditions for "NF* Skippable" from Mark Davis' com.ibm.text.UCD.NFSkippable:
* (used in NormalizerTransliterator)
*
* A skippable character is
* a) unassigned, or ALL of the following:
* b) of combining class 0.
* c) not decomposed by this normalization form.
* AND if NFC or NFKC,
* d) can never compose with a previous character.
* e) can never compose with a following character.
* f) can never change if another character is added.
* Example: a-breve might satisfy all but f, but if you
* add an ogonek it changes to a-ogonek + breve
*
* a)..e) must be tested from norm32.
* Since f) is more complicated, the (not-)NFC_Skippable flag (f) is built
* into the auxiliary trie.
* The same bit is used for NFC and NFKC; (c) differs for them.
* As usual, we build the "not skippable" flags so that unassigned
* code points get a 0 bit.
* This bit is only valid after (a)..(e) test FALSE; test NFD_NO before (f) as well.
* Test Hangul LV syllables entirely in code.
*
*
* - FC_NFKC_Closure strings in extraData[]
*
* Strings are either stored as a single code unit or as the length
@ -399,7 +424,7 @@ final class NormalizerDataReader implements ICUBinary.Authenticate {
*/
private static final byte DATA_FORMAT_ID[] = {(byte)0x4E, (byte)0x6F,
(byte)0x72, (byte)0x6D};
private static final byte DATA_FORMAT_VERSION[] = {(byte)0x2, (byte)0x1,
private static final byte DATA_FORMAT_VERSION[] = {(byte)0x2, (byte)0x2,
(byte)0x5, (byte)0x2};
}

View File

@ -5,17 +5,23 @@
*******************************************************************************
*
* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/NormalizerImpl.java,v $
* $Date: 2002/09/19 18:12:30 $
* $Revision: 1.11 $
* $Date: 2002/11/15 21:04:18 $
* $Revision: 1.12 $
*******************************************************************************
*/
package com.ibm.icu.impl;
import java.io.*;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.BufferedInputStream;
import java.io.InputStream;
import com.ibm.icu.text.Normalizer;
import com.ibm.icu.text.UTF16;
import com.ibm.icu.text.UnicodeSet;
import com.ibm.icu.util.RangeValueIterator;
import com.ibm.icu.lang.UCharacter;
/**
* @version 1.0
* @author Ram Viswanadha
@ -53,7 +59,7 @@ public final class NormalizerImpl {
public static final int QC_NFD=4; /* no */
public static final int QC_NFKD=8; /* no */
private static final int QC_ANY_NO=0xf;
public static final int QC_ANY_NO=0xf;
/* quick check flags 4..5 mean "maybe" for their forms;
* test flags>=QC_MAYBE
@ -65,10 +71,10 @@ public final class NormalizerImpl {
private static final int COMBINES_FWD=0x40;
private static final int COMBINES_BACK=0x80;
private static final int COMBINES_ANY=0xc0;
public static final int COMBINES_ANY=0xc0;
// UnicodeData.txt combining class in bits 15.
private static final int CC_SHIFT=8;
public static final int CC_MASK=0xff00;
public static final int CC_MASK=0xff00;
// 16 bits for the index to UChars and other extra data
private static final int EXTRA_SHIFT=16;
// start of surrogate specials after shift
@ -123,14 +129,16 @@ public final class NormalizerImpl {
/* AUX constants */
/* value constants for auxTrie */
private static final int AUX_UNSAFE_SHIFT = 11;
private static final int AUX_COMP_EX_SHIFT = 10;
private static final int AUX_MAX_FNC = ((int)1<<AUX_COMP_EX_SHIFT);
private static final int AUX_UNSAFE_MASK = (int)((1<<AUX_UNSAFE_SHIFT) & UNSIGNED_INT_MASK);
private static final int AUX_FNC_MASK = (int)((AUX_MAX_FNC-1) & UNSIGNED_INT_MASK);
private static final int AUX_COMP_EX_MASK = (int)((1<<AUX_COMP_EX_SHIFT) & UNSIGNED_INT_MASK);
private static final int AUX_UNSAFE_SHIFT = 11;
private static final int AUX_COMP_EX_SHIFT = 10;
private static final int AUX_NFC_SKIPPABLE_F_SHIFT = 12;
private static final int AUX_MAX_FNC = ((int)1<<AUX_COMP_EX_SHIFT);
private static final int AUX_UNSAFE_MASK = (int)((1<<AUX_UNSAFE_SHIFT) & UNSIGNED_INT_MASK);
private static final int AUX_FNC_MASK = (int)((AUX_MAX_FNC-1) & UNSIGNED_INT_MASK);
private static final int AUX_COMP_EX_MASK = (int)((1<<AUX_COMP_EX_SHIFT) & UNSIGNED_INT_MASK);
private static final long AUX_NFC_SKIP_F_MASK = ((UNSIGNED_INT_MASK&1)<<AUX_NFC_SKIPPABLE_F_SHIFT);
/* canonStartSets[0..31] contains indexes for what is in the array */
/* number of uint16_t in canonical starter sets */
static final int SET_INDEX_CANON_SETS_LENGTH = 0;
@ -163,7 +171,7 @@ public final class NormalizerImpl {
private static final int COMPARE_EQUIV = 0x80000;
/*******************************/
/* Wrappers for Trie implementations */
static final class NormTrieImpl implements Trie.DataManipulate{
static IntTrie normTrie= null;
@ -174,6 +182,7 @@ public final class NormalizerImpl {
* the folding offset
* @return data offset or 0 if there is no data for the lead surrogate
*/
/* normTrie: 32-bit trie result may contain a special extraData index with the folding offset */
public int getFoldingOffset(int value){
return BMP_INDEX_LENGTH+
((value>>(EXTRA_SHIFT-SURROGATE_BLOCK_BITS))&
@ -190,7 +199,7 @@ public final class NormalizerImpl {
* the folding offset
* @return data offset or 0 if there is no data for the lead surrogate
*/
/* fcdTrie: the folding offset is the lead FCD value itself */
public int getFoldingOffset(int value){
return value;
}
@ -205,8 +214,9 @@ public final class NormalizerImpl {
* the folding offset
* @return data offset or 0 if there is no data for the lead surrogate
*/
/* auxTrie: the folding offset is in bits 9..0 of the 16-bit trie result */
public int getFoldingOffset(int value){
return (value&AUX_FNC_MASK)<<5;
return (int)(value &AUX_FNC_MASK)<<SURROGATE_BLOCK_BITS;
}
}
@ -223,6 +233,7 @@ public final class NormalizerImpl {
static boolean isDataLoaded;
static boolean isFormatVersion_2_1;
static boolean isFormatVersion_2_2;
/**
* Default buffer size of datafile
*/
@ -315,12 +326,16 @@ public final class NormalizerImpl {
||
(formatVersion[0]==2 && formatVersion[1]>=1)
);
isFormatVersion_2_2 =( formatVersion[0]>2
||
(formatVersion[0]==2 && formatVersion[1]>=2)
);
b.close();
i.close();
}
}
/* ---------------------------------------------------------------------- */
/* Korean Hangul and Jamo constants */
@ -426,7 +441,10 @@ public final class NormalizerImpl {
* */
return fcdTrieImpl.fcdTrie.getTrailValue(fcd16, c2);
}
public static int getFCD16(int c) {
return fcdTrieImpl.fcdTrie.getValue(c);
}
private static int getExtraDataIndex(long norm32) {
return (int)(norm32>>EXTRA_SHIFT);
}
@ -2502,7 +2520,7 @@ public final class NormalizerImpl {
/* found? */
if(c==table[start]) {
i=table[start+1];
if((i&CANON_SET_BMP_MASK)==CANON_SET_BMP_IS_INDEX) {
if((i & CANON_SET_BMP_MASK)==CANON_SET_BMP_IS_INDEX) {
/* result 01xxxxxx xxxxxx contains index x to a
* USerializedSet */
i&=(CANON_SET_MAX_CANON_SETS-1);
@ -2548,7 +2566,7 @@ public final class NormalizerImpl {
* single-code point set {x} in
* triplet { 100xxxxx 000hhhhh llllllll llllllll xxxxxxxx xxxxxxxx }
*/
i|=((int)h&0x1f00)<<8; /* add high bits from high(c) */
i|=((int)h & 0x1f00)<<8; /* add high bits from high(c) */
fillSet.setSerializedToOne((int)i);
return true;
}
@ -2594,6 +2612,84 @@ public final class NormalizerImpl {
}
}
/* Is c an NF<mode>-skippable code point? See unormimp.h. */
public static boolean isNFSkippable(int c, Normalizer.Mode mode, long mask) {
long /*unsigned int*/ norm32;
mask = mask & UNSIGNED_INT_MASK;
char aux, fcd;
/* check conditions (a)..(e), see unormimp.h */
norm32 = getNorm32(c);
if((norm32&mask)!=0) {
return false; /* fails (a)..(e), not skippable */
}
if(mode == Normalizer.NFD || mode == Normalizer.NFKD || mode == Normalizer.NONE){
return true; /* NF*D, passed (a)..(c), is skippable */
}
/* check conditions (a)..(e), see unormimp.h */
/* NF*C/FCC, passed (a)..(e) */
if((norm32& QC_NFD)==0) {
return true; /* no canonical decomposition, is skippable */
}
/* check Hangul syllables algorithmically */
if(isNorm32HangulOrJamo(norm32)) {
/* Jamo passed (a)..(e) above, must be Hangul */
return !isHangulWithoutJamoT((char)c); /* LVT are skippable, LV are not */
}
/* if(mode<=UNORM_NFKC) { -- enable when implementing FCC */
/* NF*C, test (f) flag */
if(!isFormatVersion_2_2) {
return false; /* no (f) data, say not skippable to be safe */
}
aux = auxTrieImpl.auxTrie.getCodePointValue(c);
return (aux&AUX_NFC_SKIP_F_MASK)==0; /* TRUE=skippable if the (f) flag is not set */
/* } else { FCC, test fcd<=1 instead of the above } */
}
/*
private static final boolean
_enumPropertyStartsRange(const void *context, UChar32 start, UChar32 limit, uint32_t value) {
// add the start code point to the USet
uset_add((USet *)context, start);
return TRUE;
}
*/
public static UnicodeSet addPropertyStarts(UnicodeSet set) {
int c;
/* add the start code point of each same-value range of each trie */
//utrie_enum(&normTrie, NULL, _enumPropertyStartsRange, set);
TrieIterator normIter = new TrieIterator(normTrieImpl.normTrie);
RangeValueIterator.Element result = new RangeValueIterator.Element();
while(normIter.next(result)){
set.add(result.start);
}
TrieIterator fcdIter = new TrieIterator(fcdTrieImpl.fcdTrie);
//utrie_enum(&fcdTrie, NULL, _enumPropertyStartsRange, set);
while(normIter.next(result)){
set.add(result.start);
}
/* add Hangul LV syllables and LV+1 because of skippables */
for(c=HANGUL_BASE; c<HANGUL_BASE+HANGUL_COUNT; c+=JAMO_T_COUNT) {
set.add(c);
set.add(c+1);
}
set.add(HANGUL_BASE+HANGUL_COUNT); /* add Hangul+1 to continue with other properties */
return set; // for chaining
}
/**
* Internal API, used by collation code.
* Get access to the internal FCD trie table to be able to perform

View File

@ -5,8 +5,8 @@
*******************************************************************************
*
* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/Normalizer.java,v $
* $Date: 2002/10/31 01:12:38 $
* $Revision: 1.24 $
* $Date: 2002/11/15 21:04:19 $
* $Revision: 1.25 $
*
*******************************************************************************
*/
@ -186,6 +186,9 @@ public final class Normalizer implements Cloneable{
}
return NO;
}
protected boolean isNFSkippable(int c){
return true;
}
}
@ -227,7 +230,11 @@ public final class Normalizer implements Cloneable{
allowMaybe
);
}
protected boolean isNFSkippable(int c){
return NormalizerImpl.isNFSkippable(c,this,
(NormalizerImpl.CC_MASK|NormalizerImpl.QC_NFD)
);
}
};
/** Compatibility decomposition. */
@ -263,7 +270,12 @@ public final class Normalizer implements Cloneable{
NormalizerImpl.QC_NFKD,
allowMaybe
);
}
}
protected boolean isNFSkippable(int c){
return NormalizerImpl.isNFSkippable(c, this,
(NormalizerImpl.CC_MASK|NormalizerImpl.QC_NFKD)
);
}
};
/** Canonical decomposition followed by canonical composition. */
@ -304,6 +316,11 @@ public final class Normalizer implements Cloneable{
allowMaybe
);
}
protected boolean isNFSkippable(int c){
return NormalizerImpl.isNFSkippable(c,this,
(NormalizerImpl.CC_MASK|NormalizerImpl.COMBINES_ANY|(NormalizerImpl.QC_NFC & NormalizerImpl.QC_ANY_NO))
);
}
};
/** Default normalization. */
@ -345,6 +362,11 @@ public final class Normalizer implements Cloneable{
allowMaybe
);
}
protected boolean isNFSkippable(int c){
return NormalizerImpl.isNFSkippable(c, this,
(NormalizerImpl.CC_MASK|NormalizerImpl.COMBINES_ANY|(NormalizerImpl.QC_NFKC & NormalizerImpl.QC_ANY_NO))
);
}
};
/** "Fast C or D" form. @since ICU 2.1 */
@ -372,7 +394,10 @@ public final class Normalizer implements Cloneable{
protected QuickCheckResult quickCheck(char[] src,int start,
int limit,boolean allowMaybe){
return NormalizerImpl.checkFCD(src,start,limit) ? YES : NO;
}
}
protected boolean isNFSkippable(int c){
return (NormalizerImpl.getFCD16(c)>1);
}
};
@ -2010,7 +2035,7 @@ public final class Normalizer implements Cloneable{
return buffer.length-startIndex[0];
}
private static int previous(UCharacterIterator src,
protected static int previous(UCharacterIterator src,
char[] dest, int destStart, int destLimit,
Mode mode,
/*int options,*/
@ -2238,7 +2263,7 @@ public final class Normalizer implements Cloneable{
return bufferIndex;
}
private static int next(UCharacterIterator src,
protected static int next(UCharacterIterator src,
char[] dest, int destStart, int destLimit,
Normalizer.Mode mode, /*int options,*/
boolean doNormalize, boolean[] pNeededToNormalize){
@ -2363,5 +2388,12 @@ public final class Normalizer implements Cloneable{
return buffer[index];
}
/**
* Internal API
* @internal
*/
public static boolean isNFSkippable(int c, Mode mode){
return mode.isNFSkippable(c);
}
}