1 /* GENERATED SOURCE. DO NOT MODIFY. */ 2 // © 2016 and later: Unicode, Inc. and others. 3 // License & terms of use: http://www.unicode.org/copyright.html#License 4 /* 5 ******************************************************************************* 6 * Copyright (C) 2012-2016, International Business Machines 7 * Corporation and others. All Rights Reserved. 8 ******************************************************************************* 9 * CollationFCD.java, ported from collationfcd.h/.cpp 10 * 11 * C++ version created on: 2012aug18 12 * created by: Markus W. Scherer 13 */ 14 15 package ohos.global.icu.impl.coll; 16 17 import ohos.global.icu.text.UTF16; 18 19 /** 20 * Data and functions for the FCD check fast path. 21 * 22 * The fast path looks at a pair of 16-bit code units and checks 23 * whether there is an FCD boundary between them; 24 * there is if the first unit has a trailing ccc=0 (!hasTccc(first)) 25 * or the second unit has a leading ccc=0 (!hasLccc(second)), 26 * or both. 27 * When the fast path finds a possible non-boundary, 28 * then the FCD check slow path looks at the actual sequence of FCD values. 29 * 30 * This is a pure optimization. 31 * The fast path must at least find all possible non-boundaries. 32 * If the fast path is too pessimistic, it costs performance. 33 * 34 * For a pair of BMP characters, the fast path tests are precise (1 bit per character). 35 * 36 * For a supplementary code point, the two units are its lead and trail surrogates. 37 * We set hasTccc(lead)=true if any of its 1024 associated supplementary code points 38 * has lccc!=0 or tccc!=0. 39 * We set hasLccc(trail)=true for all trail surrogates. 40 * As a result, we leave the fast path if the lead surrogate might start a 41 * supplementary code point that is not FCD-inert. 42 * (So the fast path need not detect that there is a surrogate pair, 43 * nor look ahead to the next full code point.) 44 * 45 * hasLccc(lead)=true if any of its 1024 associated supplementary code points 46 * has lccc!=0, for fast boundary checking between BMP & supplementary. 47 * 48 * hasTccc(trail)=false: 49 * It should only be tested for unpaired trail surrogates which are FCD-inert. 50 * @hide exposed on OHOS 51 */ 52 public final class CollationFCD { hasLccc(int c)53 public static boolean hasLccc(int c) { 54 assert c <= 0xffff; 55 // c can be negative, e.g., Collation.SENTINEL_CP from UCharIterator; 56 // that is handled in the first test. 57 int i; 58 return 59 // U+0300 is the first character with lccc!=0. 60 c >= 0x300 && 61 (i = lcccIndex[c >> 5]) != 0 && 62 (lcccBits[i] & (1 << (c & 0x1f))) != 0; 63 } 64 hasTccc(int c)65 public static boolean hasTccc(int c) { 66 assert c <= 0xffff; 67 // c can be negative, e.g., Collation.SENTINEL_CP from UCharIterator; 68 // that is handled in the first test. 69 int i; 70 return 71 // U+00C0 is the first character with tccc!=0. 72 c >= 0xc0 && 73 (i = tcccIndex[c >> 5]) != 0 && 74 (tcccBits[i] & (1 << (c & 0x1f))) != 0; 75 } 76 mayHaveLccc(int c)77 static boolean mayHaveLccc(int c) { 78 // Handles all of Unicode 0..10FFFF. 79 // c can be negative, e.g., Collation.SENTINEL_CP. 80 // U+0300 is the first character with lccc!=0. 81 if(c < 0x300) { return false; } 82 if(c > 0xffff) { c = UTF16.getLeadSurrogate(c); } 83 int i; 84 return 85 (i = lcccIndex[c >> 5]) != 0 && 86 (lcccBits[i] & (1 << (c & 0x1f))) != 0; 87 } 88 89 /** 90 * Tibetan composite vowel signs (U+0F73, U+0F75, U+0F81) 91 * must be decomposed before reaching the core collation code, 92 * or else some sequences including them, even ones passing the FCD check, 93 * do not yield canonically equivalent results. 94 * 95 * This is a fast and imprecise test. 96 * 97 * @param c a code point 98 * @return true if c is U+0F73, U+0F75 or U+0F81 or one of several other Tibetan characters 99 */ maybeTibetanCompositeVowel(int c)100 static boolean maybeTibetanCompositeVowel(int c) { 101 return (c & 0x1fff01) == 0xf01; 102 } 103 104 /** 105 * Tibetan composite vowel signs (U+0F73, U+0F75, U+0F81) 106 * must be decomposed before reaching the core collation code, 107 * or else some sequences including them, even ones passing the FCD check, 108 * do not yield canonically equivalent results. 109 * 110 * They have distinct lccc/tccc combinations: 129/130 or 129/132. 111 * 112 * @param fcd16 the FCD value (lccc/tccc combination) of a code point 113 * @return true if fcd16 is from U+0F73, U+0F75 or U+0F81 114 */ isFCD16OfTibetanCompositeVowel(int fcd16)115 static boolean isFCD16OfTibetanCompositeVowel(int fcd16) { 116 return fcd16 == 0x8182 || fcd16 == 0x8184; 117 } 118 119 // CollationFCD(); // No instantiation. 120 121 // TODO: machine-generate by: icu/tools/unicode/c/genuca/genuca.cpp 122 123 private static final byte[] lcccIndex={ 124 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 125 0,0,0,0,0,0,0,0,1,1,2,3,0,0,0,0, 126 0,0,0,0,4,0,0,0,0,0,0,0,5,6,7,0, 127 8,0,9,0xa,0,0,0xb,0xc,0xd,0xe,0xf,0,0,0,0,0x10, 128 0x11,0x12,0x13,0,0,0,0x14,0x15,0,0x16,0x17,0,0,0x16,0x18,0x19, 129 0,0x16,0x18,0,0,0x16,0x18,0,0,0x16,0x18,0,0,0,0x18,0, 130 0,0,0x1a,0,0,0x16,0x18,0,0,0x1b,0x18,0,0,0,0x1c,0, 131 0,0x1d,0x1e,0,0,0x1d,0x1e,0,0x1f,0x20,0,0x21,0x22,0,0x23,0, 132 0,0x24,0,0,0x18,0,0,0,0,0,0,0,0,0,0,0, 133 0,0,0,0,0,0,0,0,0,0,0x25,0,0,0,0,0, 134 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 135 0,0,0,0,0,0,0,0,0x26,0x26,0,0,0,0,0x27,0, 136 0,0,0,0,0,0x28,0,0,0,0x13,0,0,0,0,0,0, 137 0x29,0,0,0x2a,0,0x2b,0x2c,0,0,0x26,0x2d,0x2e,0,0x2f,0,0x30, 138 0,0x31,0,0,0,0,0x32,0x33,0,0,0,0,0,0,1,0x34, 139 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 140 0,0,0,0,0,0,0x35,0x36,0,0,0,0,0,0,0,0, 141 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 142 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 143 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 144 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 145 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 146 0,0,0,0,0,0,0,0x37,0,0,0,0x38,0,0,0,1, 147 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 148 0,0x39,0,0,0x3a,0,0,0,0,0,0,0,0,0,0,0, 149 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 150 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 151 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 152 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 153 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 154 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 155 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 156 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 157 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 158 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 159 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 160 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 161 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 162 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 163 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 164 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 165 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 166 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 167 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 168 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 169 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 170 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 171 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 172 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 173 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 174 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 175 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 176 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 177 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 178 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 179 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 180 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 181 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 182 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 183 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 184 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 185 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 186 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 187 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 188 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 189 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 190 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 191 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 192 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 193 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 194 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 195 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 196 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 197 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 198 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 199 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 200 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 201 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 202 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 203 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 204 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 205 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 206 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 207 0,0,0,0x3b,0x3c,0,0,0x3d,0,0,0,0,0,0,0,0, 208 0x23,0x3e,0,0,0,0,0x2d,0x3f,0,0x40,0x41,0,0,0x41,0x2c,0, 209 0,0,0,0,0,0x42,0x43,0x44,0,0,0,0,0,0,0,0x18, 210 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 211 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 212 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 213 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 214 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 215 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 216 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 217 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 218 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 219 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 220 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 221 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 222 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 223 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 224 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 225 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 226 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 227 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 228 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 229 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 230 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 231 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 232 0x45,0x46,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 233 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 234 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 235 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 236 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 237 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 238 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 239 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 240 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 241 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 242 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 243 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 244 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 245 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 246 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 247 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 248 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 249 0,0,0,0,0,0,0,0,0x19,0,0,0,0,0,0,0, 250 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 251 0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0 252 }; 253 254 private static final byte[] tcccIndex={ 255 0,0,0,0,0,0,2,3,4,5,6,7,0,8,9,0xa, 256 0xb,0xc,0,0,0,0,0,0,1,1,0xd,0xe,0xf,0x10,0x11,0, 257 0x12,0x13,0x14,0x15,0x16,0,0x17,0x18,0,0,0,0,0x19,0x1a,0x1b,0, 258 0x1c,0x1d,0x1e,0x1f,0,0,0x20,0x21,0x22,0x23,0x24,0,0,0,0,0x25, 259 0x26,0x27,0x28,0,0,0,0x29,0x2a,0,0x2b,0x2c,0,0,0x2d,0x2e,0x2f, 260 0,0x30,0x31,0,0,0x2d,0x32,0,0,0x2d,0x33,0,0,0,0x32,0, 261 0,0,0x34,0,0,0x2d,0x32,0,0,0x35,0x32,0,0,0,0x36,0, 262 0,0x37,0x38,0,0,0x37,0x38,0,0x39,0x3a,0,0x3b,0x3c,0,0x3d,0, 263 0,0x3e,0,0,0x32,0,0,0,0,0,0,0,0,0,0,0, 264 0,0,0,0,0,0,0,0,0,0,0x3f,0,0,0,0,0, 265 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 266 0,0,0,0,0,0,0,0,0x40,0x40,0,0,0,0,0x41,0, 267 0,0,0,0,0,0x42,0,0,0,0x28,0,0,0,0,0,0, 268 0x43,0,0,0x44,0,0x45,0x46,0,0,0x40,0x47,0x48,0,0x49,0,0x4a, 269 0,0x4b,0,0,0,0,0x4c,0x4d,0,0,0,0,0,0,1,0x4e, 270 1,1,1,1,0x4f,1,1,0x50,0x51,1,0x52,0x53,1,0x54,0x55,0x56, 271 0,0,0,0,0,0,0x57,0x58,0,0x59,0,0,0x5a,0x5b,0x5c,0, 272 0x5d,0x5e,0x5f,0x60,0x61,0x62,0,0x63,0,0,0,0,0,0,0,0, 273 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 274 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 275 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 276 0,0,0,0,0,0,0x2d,0,0,0,0,0,0,0,0,0, 277 0,0,0,0,0,0,0,0x64,0,0,0,0x65,0,0,0,1, 278 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 279 0,0x66,0x67,0x68,0x69,0x67,0x68,0x6a,0,0,0,0,0,0,0,0, 280 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 281 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 282 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 283 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 284 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 285 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 286 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 287 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 288 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 289 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 290 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 291 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 292 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 293 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 294 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 295 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 296 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 297 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 298 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 299 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 300 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 301 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 302 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 303 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 304 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 305 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 306 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 307 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 308 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 309 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 310 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 311 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 312 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 313 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 314 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 315 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 316 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 317 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 318 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 319 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 320 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 321 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 322 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 323 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 324 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 325 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 326 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 327 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 328 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 329 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 330 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 331 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 332 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 333 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 334 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 335 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 336 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 337 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 338 0,0,0,0x6b,0x6c,0,0,0x6d,0,0,0,0,0,0,0,0, 339 0x3d,0x6e,0,0,0,0,0x47,0x6f,0,0x70,0x71,0,0,0x71,0x46,0, 340 0,0,0,0,0,0x72,0x73,0x74,0,0,0,0,0,0,0,0x32, 341 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 342 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 343 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 344 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 345 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 346 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 347 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 348 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 349 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 350 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 351 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 352 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 353 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 354 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 355 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 356 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 357 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 358 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 359 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 360 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 361 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 362 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 363 0x75,0x76,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 364 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 365 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 366 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 367 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 368 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 369 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 370 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 371 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 372 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 373 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 374 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 375 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 376 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 377 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 378 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 379 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 380 0,0,0,0,0,0,0,0,0x3f,0x77,0x78,0,0,0,0,0, 381 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 382 0,0xe,0,0,0,0,0,0,0,0,0,0,0,0,0,0 383 }; 384 385 private static final int[] lcccBits={ 386 0,0xffffffff,0xffff7fff,0xffff,0xf8,0xfffe0000,0xbfffffff,0xb6,0x7ff0000,0xfffff800,0x10000,0x9fc00000,0x3d9f,0x20000,0xffff0000,0x7ff, 387 0x200ff800,0xfbc00000,0x3eef,0xe000000,0xfff80000,0xfffffffb,0x10000000,0x1e2000,0x2000,0x40000000,0x602000,0x18000000,0x400,0x7000000,0xf00,0x3000000, 388 0x2a00000,0x3c3e0000,0xdf,0x40,0x6800000,0xe0000000,0x100000,0x20040000,0x200,0x1800000,0x9fe00001,0xbfff0000,1,0x10,0xff800,0xc00, 389 0xc0040,0x800000,0xfff70000,0x31021fd,0xfbffffff,0x1fff0000,0x1ffe2,0x38000,0x80000000,0xfc00,0x6000000,0x3ff08000,0xc0000000,0x30000,0x1000,0x3ffff, 390 0x3800,0x80000,0xc19d0000,2,0x400000,0xc0000fd,0x5108000 391 }; 392 private static final int[] tcccBits={ 393 0,0xffffffff,0x3e7effbf,0xbe7effbf,0xfffcffff,0x7ef1ff3f,0xfff3f1f8,0x7fffff3f,0x18003,0xdfffe000,0xff31ffcf,0xcfffffff,0xfffc0,0xffff7fff,0xffff,0x1d760, 394 0x1fc00,0x187c00,0x200708b,0x2000000,0x708b0000,0xc00000,0xf8,0xfccf0006,0x33ffcfc,0xfffe0000,0xbfffffff,0xb6,0x7ff0000,0x7c,0xfffff800,0x10000, 395 0x9fc80005,0x3d9f,0x20000,0xffff0000,0x7ff,0x200ff800,0xfbc00000,0x3eef,0xe000000,0xfff80000,0xfffffffb,0x10120200,0xff1e2000,0x10000000,0xb0002000,0x40000000, 396 0x10480000,0x4e002000,0x2000,0x30002000,0x602100,0x18000000,0x24000400,0x7000000,0xf00,0x3000000,0x2a00000,0x3d7e0000,0xdf,0x40,0x6800000,0xe0000000, 397 0x100000,0x20040000,0x200,0x1800000,0x9fe00001,0xbfff0000,1,0x10,0xff800,0xc00,0xc0040,0x800000,0xfff70000,0x31021fd,0xfbffffff,0xbffffff, 398 0x3ffffff,0x3f3fffff,0xaaff3f3f,0x3fffffff,0x1fdfffff,0xefcfffde,0x1fdc7fff,0x1fff0000,0x1ffe2,0x800,0xc000000,0x4000,0xe000,0x1210,0x50,0x292, 399 0x333e005,0x333,0xf000,0x3c0f,0x38000,0x80000000,0xfc00,0x55555000,0x36db02a5,0x46100000,0x47900000,0x3ff08000,0xc0000000,0x30000,0x1000,0x3ffff, 400 0x3800,0x80000,0xc19d0000,2,0x400000,0xc0000fd,0x5108000,0x5f7ffc00,0x7fdb 401 }; 402 403 } 404