1 /* 2 * ConnectBot: simple, powerful, open-source SSH client for Android 3 * Copyright 2007 Kenny Root, Jeffrey Sharkey 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 package de.mud.terminal; 19 20 /** 21 * This data was taken from xterm's precompose.c 22 */ 23 public class Precomposer { 24 public final static char precompositions[][] = { 25 { 0x226E, 0x003C, 0x0338}, 26 { 0x2260, 0x003D, 0x0338}, 27 { 0x226F, 0x003E, 0x0338}, 28 { 0x00C0, 0x0041, 0x0300}, 29 { 0x00C1, 0x0041, 0x0301}, 30 { 0x00C2, 0x0041, 0x0302}, 31 { 0x00C3, 0x0041, 0x0303}, 32 { 0x0100, 0x0041, 0x0304}, 33 { 0x0102, 0x0041, 0x0306}, 34 { 0x0226, 0x0041, 0x0307}, 35 { 0x00C4, 0x0041, 0x0308}, 36 { 0x1EA2, 0x0041, 0x0309}, 37 { 0x00C5, 0x0041, 0x030A}, 38 { 0x01CD, 0x0041, 0x030C}, 39 { 0x0200, 0x0041, 0x030F}, 40 { 0x0202, 0x0041, 0x0311}, 41 { 0x1EA0, 0x0041, 0x0323}, 42 { 0x1E00, 0x0041, 0x0325}, 43 { 0x0104, 0x0041, 0x0328}, 44 { 0x1E02, 0x0042, 0x0307}, 45 { 0x1E04, 0x0042, 0x0323}, 46 { 0x1E06, 0x0042, 0x0331}, 47 { 0x0106, 0x0043, 0x0301}, 48 { 0x0108, 0x0043, 0x0302}, 49 { 0x010A, 0x0043, 0x0307}, 50 { 0x010C, 0x0043, 0x030C}, 51 { 0x00C7, 0x0043, 0x0327}, 52 { 0x1E0A, 0x0044, 0x0307}, 53 { 0x010E, 0x0044, 0x030C}, 54 { 0x1E0C, 0x0044, 0x0323}, 55 { 0x1E10, 0x0044, 0x0327}, 56 { 0x1E12, 0x0044, 0x032D}, 57 { 0x1E0E, 0x0044, 0x0331}, 58 { 0x00C8, 0x0045, 0x0300}, 59 { 0x00C9, 0x0045, 0x0301}, 60 { 0x00CA, 0x0045, 0x0302}, 61 { 0x1EBC, 0x0045, 0x0303}, 62 { 0x0112, 0x0045, 0x0304}, 63 { 0x0114, 0x0045, 0x0306}, 64 { 0x0116, 0x0045, 0x0307}, 65 { 0x00CB, 0x0045, 0x0308}, 66 { 0x1EBA, 0x0045, 0x0309}, 67 { 0x011A, 0x0045, 0x030C}, 68 { 0x0204, 0x0045, 0x030F}, 69 { 0x0206, 0x0045, 0x0311}, 70 { 0x1EB8, 0x0045, 0x0323}, 71 { 0x0228, 0x0045, 0x0327}, 72 { 0x0118, 0x0045, 0x0328}, 73 { 0x1E18, 0x0045, 0x032D}, 74 { 0x1E1A, 0x0045, 0x0330}, 75 { 0x1E1E, 0x0046, 0x0307}, 76 { 0x01F4, 0x0047, 0x0301}, 77 { 0x011C, 0x0047, 0x0302}, 78 { 0x1E20, 0x0047, 0x0304}, 79 { 0x011E, 0x0047, 0x0306}, 80 { 0x0120, 0x0047, 0x0307}, 81 { 0x01E6, 0x0047, 0x030C}, 82 { 0x0122, 0x0047, 0x0327}, 83 { 0x0124, 0x0048, 0x0302}, 84 { 0x1E22, 0x0048, 0x0307}, 85 { 0x1E26, 0x0048, 0x0308}, 86 { 0x021E, 0x0048, 0x030C}, 87 { 0x1E24, 0x0048, 0x0323}, 88 { 0x1E28, 0x0048, 0x0327}, 89 { 0x1E2A, 0x0048, 0x032E}, 90 { 0x00CC, 0x0049, 0x0300}, 91 { 0x00CD, 0x0049, 0x0301}, 92 { 0x00CE, 0x0049, 0x0302}, 93 { 0x0128, 0x0049, 0x0303}, 94 { 0x012A, 0x0049, 0x0304}, 95 { 0x012C, 0x0049, 0x0306}, 96 { 0x0130, 0x0049, 0x0307}, 97 { 0x00CF, 0x0049, 0x0308}, 98 { 0x1EC8, 0x0049, 0x0309}, 99 { 0x01CF, 0x0049, 0x030C}, 100 { 0x0208, 0x0049, 0x030F}, 101 { 0x020A, 0x0049, 0x0311}, 102 { 0x1ECA, 0x0049, 0x0323}, 103 { 0x012E, 0x0049, 0x0328}, 104 { 0x1E2C, 0x0049, 0x0330}, 105 { 0x0134, 0x004A, 0x0302}, 106 { 0x1E30, 0x004B, 0x0301}, 107 { 0x01E8, 0x004B, 0x030C}, 108 { 0x1E32, 0x004B, 0x0323}, 109 { 0x0136, 0x004B, 0x0327}, 110 { 0x1E34, 0x004B, 0x0331}, 111 { 0x0139, 0x004C, 0x0301}, 112 { 0x013D, 0x004C, 0x030C}, 113 { 0x1E36, 0x004C, 0x0323}, 114 { 0x013B, 0x004C, 0x0327}, 115 { 0x1E3C, 0x004C, 0x032D}, 116 { 0x1E3A, 0x004C, 0x0331}, 117 { 0x1E3E, 0x004D, 0x0301}, 118 { 0x1E40, 0x004D, 0x0307}, 119 { 0x1E42, 0x004D, 0x0323}, 120 { 0x01F8, 0x004E, 0x0300}, 121 { 0x0143, 0x004E, 0x0301}, 122 { 0x00D1, 0x004E, 0x0303}, 123 { 0x1E44, 0x004E, 0x0307}, 124 { 0x0147, 0x004E, 0x030C}, 125 { 0x1E46, 0x004E, 0x0323}, 126 { 0x0145, 0x004E, 0x0327}, 127 { 0x1E4A, 0x004E, 0x032D}, 128 { 0x1E48, 0x004E, 0x0331}, 129 { 0x00D2, 0x004F, 0x0300}, 130 { 0x00D3, 0x004F, 0x0301}, 131 { 0x00D4, 0x004F, 0x0302}, 132 { 0x00D5, 0x004F, 0x0303}, 133 { 0x014C, 0x004F, 0x0304}, 134 { 0x014E, 0x004F, 0x0306}, 135 { 0x022E, 0x004F, 0x0307}, 136 { 0x00D6, 0x004F, 0x0308}, 137 { 0x1ECE, 0x004F, 0x0309}, 138 { 0x0150, 0x004F, 0x030B}, 139 { 0x01D1, 0x004F, 0x030C}, 140 { 0x020C, 0x004F, 0x030F}, 141 { 0x020E, 0x004F, 0x0311}, 142 { 0x01A0, 0x004F, 0x031B}, 143 { 0x1ECC, 0x004F, 0x0323}, 144 { 0x01EA, 0x004F, 0x0328}, 145 { 0x1E54, 0x0050, 0x0301}, 146 { 0x1E56, 0x0050, 0x0307}, 147 { 0x0154, 0x0052, 0x0301}, 148 { 0x1E58, 0x0052, 0x0307}, 149 { 0x0158, 0x0052, 0x030C}, 150 { 0x0210, 0x0052, 0x030F}, 151 { 0x0212, 0x0052, 0x0311}, 152 { 0x1E5A, 0x0052, 0x0323}, 153 { 0x0156, 0x0052, 0x0327}, 154 { 0x1E5E, 0x0052, 0x0331}, 155 { 0x015A, 0x0053, 0x0301}, 156 { 0x015C, 0x0053, 0x0302}, 157 { 0x1E60, 0x0053, 0x0307}, 158 { 0x0160, 0x0053, 0x030C}, 159 { 0x1E62, 0x0053, 0x0323}, 160 { 0x0218, 0x0053, 0x0326}, 161 { 0x015E, 0x0053, 0x0327}, 162 { 0x1E6A, 0x0054, 0x0307}, 163 { 0x0164, 0x0054, 0x030C}, 164 { 0x1E6C, 0x0054, 0x0323}, 165 { 0x021A, 0x0054, 0x0326}, 166 { 0x0162, 0x0054, 0x0327}, 167 { 0x1E70, 0x0054, 0x032D}, 168 { 0x1E6E, 0x0054, 0x0331}, 169 { 0x00D9, 0x0055, 0x0300}, 170 { 0x00DA, 0x0055, 0x0301}, 171 { 0x00DB, 0x0055, 0x0302}, 172 { 0x0168, 0x0055, 0x0303}, 173 { 0x016A, 0x0055, 0x0304}, 174 { 0x016C, 0x0055, 0x0306}, 175 { 0x00DC, 0x0055, 0x0308}, 176 { 0x1EE6, 0x0055, 0x0309}, 177 { 0x016E, 0x0055, 0x030A}, 178 { 0x0170, 0x0055, 0x030B}, 179 { 0x01D3, 0x0055, 0x030C}, 180 { 0x0214, 0x0055, 0x030F}, 181 { 0x0216, 0x0055, 0x0311}, 182 { 0x01AF, 0x0055, 0x031B}, 183 { 0x1EE4, 0x0055, 0x0323}, 184 { 0x1E72, 0x0055, 0x0324}, 185 { 0x0172, 0x0055, 0x0328}, 186 { 0x1E76, 0x0055, 0x032D}, 187 { 0x1E74, 0x0055, 0x0330}, 188 { 0x1E7C, 0x0056, 0x0303}, 189 { 0x1E7E, 0x0056, 0x0323}, 190 { 0x1E80, 0x0057, 0x0300}, 191 { 0x1E82, 0x0057, 0x0301}, 192 { 0x0174, 0x0057, 0x0302}, 193 { 0x1E86, 0x0057, 0x0307}, 194 { 0x1E84, 0x0057, 0x0308}, 195 { 0x1E88, 0x0057, 0x0323}, 196 { 0x1E8A, 0x0058, 0x0307}, 197 { 0x1E8C, 0x0058, 0x0308}, 198 { 0x1EF2, 0x0059, 0x0300}, 199 { 0x00DD, 0x0059, 0x0301}, 200 { 0x0176, 0x0059, 0x0302}, 201 { 0x1EF8, 0x0059, 0x0303}, 202 { 0x0232, 0x0059, 0x0304}, 203 { 0x1E8E, 0x0059, 0x0307}, 204 { 0x0178, 0x0059, 0x0308}, 205 { 0x1EF6, 0x0059, 0x0309}, 206 { 0x1EF4, 0x0059, 0x0323}, 207 { 0x0179, 0x005A, 0x0301}, 208 { 0x1E90, 0x005A, 0x0302}, 209 { 0x017B, 0x005A, 0x0307}, 210 { 0x017D, 0x005A, 0x030C}, 211 { 0x1E92, 0x005A, 0x0323}, 212 { 0x1E94, 0x005A, 0x0331}, 213 { 0x00E0, 0x0061, 0x0300}, 214 { 0x00E1, 0x0061, 0x0301}, 215 { 0x00E2, 0x0061, 0x0302}, 216 { 0x00E3, 0x0061, 0x0303}, 217 { 0x0101, 0x0061, 0x0304}, 218 { 0x0103, 0x0061, 0x0306}, 219 { 0x0227, 0x0061, 0x0307}, 220 { 0x00E4, 0x0061, 0x0308}, 221 { 0x1EA3, 0x0061, 0x0309}, 222 { 0x00E5, 0x0061, 0x030A}, 223 { 0x01CE, 0x0061, 0x030C}, 224 { 0x0201, 0x0061, 0x030F}, 225 { 0x0203, 0x0061, 0x0311}, 226 { 0x1EA1, 0x0061, 0x0323}, 227 { 0x1E01, 0x0061, 0x0325}, 228 { 0x0105, 0x0061, 0x0328}, 229 { 0x1E03, 0x0062, 0x0307}, 230 { 0x1E05, 0x0062, 0x0323}, 231 { 0x1E07, 0x0062, 0x0331}, 232 { 0x0107, 0x0063, 0x0301}, 233 { 0x0109, 0x0063, 0x0302}, 234 { 0x010B, 0x0063, 0x0307}, 235 { 0x010D, 0x0063, 0x030C}, 236 { 0x00E7, 0x0063, 0x0327}, 237 { 0x1E0B, 0x0064, 0x0307}, 238 { 0x010F, 0x0064, 0x030C}, 239 { 0x1E0D, 0x0064, 0x0323}, 240 { 0x1E11, 0x0064, 0x0327}, 241 { 0x1E13, 0x0064, 0x032D}, 242 { 0x1E0F, 0x0064, 0x0331}, 243 { 0x00E8, 0x0065, 0x0300}, 244 { 0x00E9, 0x0065, 0x0301}, 245 { 0x00EA, 0x0065, 0x0302}, 246 { 0x1EBD, 0x0065, 0x0303}, 247 { 0x0113, 0x0065, 0x0304}, 248 { 0x0115, 0x0065, 0x0306}, 249 { 0x0117, 0x0065, 0x0307}, 250 { 0x00EB, 0x0065, 0x0308}, 251 { 0x1EBB, 0x0065, 0x0309}, 252 { 0x011B, 0x0065, 0x030C}, 253 { 0x0205, 0x0065, 0x030F}, 254 { 0x0207, 0x0065, 0x0311}, 255 { 0x1EB9, 0x0065, 0x0323}, 256 { 0x0229, 0x0065, 0x0327}, 257 { 0x0119, 0x0065, 0x0328}, 258 { 0x1E19, 0x0065, 0x032D}, 259 { 0x1E1B, 0x0065, 0x0330}, 260 { 0x1E1F, 0x0066, 0x0307}, 261 { 0x01F5, 0x0067, 0x0301}, 262 { 0x011D, 0x0067, 0x0302}, 263 { 0x1E21, 0x0067, 0x0304}, 264 { 0x011F, 0x0067, 0x0306}, 265 { 0x0121, 0x0067, 0x0307}, 266 { 0x01E7, 0x0067, 0x030C}, 267 { 0x0123, 0x0067, 0x0327}, 268 { 0x0125, 0x0068, 0x0302}, 269 { 0x1E23, 0x0068, 0x0307}, 270 { 0x1E27, 0x0068, 0x0308}, 271 { 0x021F, 0x0068, 0x030C}, 272 { 0x1E25, 0x0068, 0x0323}, 273 { 0x1E29, 0x0068, 0x0327}, 274 { 0x1E2B, 0x0068, 0x032E}, 275 { 0x1E96, 0x0068, 0x0331}, 276 { 0x00EC, 0x0069, 0x0300}, 277 { 0x00ED, 0x0069, 0x0301}, 278 { 0x00EE, 0x0069, 0x0302}, 279 { 0x0129, 0x0069, 0x0303}, 280 { 0x012B, 0x0069, 0x0304}, 281 { 0x012D, 0x0069, 0x0306}, 282 { 0x00EF, 0x0069, 0x0308}, 283 { 0x1EC9, 0x0069, 0x0309}, 284 { 0x01D0, 0x0069, 0x030C}, 285 { 0x0209, 0x0069, 0x030F}, 286 { 0x020B, 0x0069, 0x0311}, 287 { 0x1ECB, 0x0069, 0x0323}, 288 { 0x012F, 0x0069, 0x0328}, 289 { 0x1E2D, 0x0069, 0x0330}, 290 { 0x0135, 0x006A, 0x0302}, 291 { 0x01F0, 0x006A, 0x030C}, 292 { 0x1E31, 0x006B, 0x0301}, 293 { 0x01E9, 0x006B, 0x030C}, 294 { 0x1E33, 0x006B, 0x0323}, 295 { 0x0137, 0x006B, 0x0327}, 296 { 0x1E35, 0x006B, 0x0331}, 297 { 0x013A, 0x006C, 0x0301}, 298 { 0x013E, 0x006C, 0x030C}, 299 { 0x1E37, 0x006C, 0x0323}, 300 { 0x013C, 0x006C, 0x0327}, 301 { 0x1E3D, 0x006C, 0x032D}, 302 { 0x1E3B, 0x006C, 0x0331}, 303 { 0x1E3F, 0x006D, 0x0301}, 304 { 0x1E41, 0x006D, 0x0307}, 305 { 0x1E43, 0x006D, 0x0323}, 306 { 0x01F9, 0x006E, 0x0300}, 307 { 0x0144, 0x006E, 0x0301}, 308 { 0x00F1, 0x006E, 0x0303}, 309 { 0x1E45, 0x006E, 0x0307}, 310 { 0x0148, 0x006E, 0x030C}, 311 { 0x1E47, 0x006E, 0x0323}, 312 { 0x0146, 0x006E, 0x0327}, 313 { 0x1E4B, 0x006E, 0x032D}, 314 { 0x1E49, 0x006E, 0x0331}, 315 { 0x00F2, 0x006F, 0x0300}, 316 { 0x00F3, 0x006F, 0x0301}, 317 { 0x00F4, 0x006F, 0x0302}, 318 { 0x00F5, 0x006F, 0x0303}, 319 { 0x014D, 0x006F, 0x0304}, 320 { 0x014F, 0x006F, 0x0306}, 321 { 0x022F, 0x006F, 0x0307}, 322 { 0x00F6, 0x006F, 0x0308}, 323 { 0x1ECF, 0x006F, 0x0309}, 324 { 0x0151, 0x006F, 0x030B}, 325 { 0x01D2, 0x006F, 0x030C}, 326 { 0x020D, 0x006F, 0x030F}, 327 { 0x020F, 0x006F, 0x0311}, 328 { 0x01A1, 0x006F, 0x031B}, 329 { 0x1ECD, 0x006F, 0x0323}, 330 { 0x01EB, 0x006F, 0x0328}, 331 { 0x1E55, 0x0070, 0x0301}, 332 { 0x1E57, 0x0070, 0x0307}, 333 { 0x0155, 0x0072, 0x0301}, 334 { 0x1E59, 0x0072, 0x0307}, 335 { 0x0159, 0x0072, 0x030C}, 336 { 0x0211, 0x0072, 0x030F}, 337 { 0x0213, 0x0072, 0x0311}, 338 { 0x1E5B, 0x0072, 0x0323}, 339 { 0x0157, 0x0072, 0x0327}, 340 { 0x1E5F, 0x0072, 0x0331}, 341 { 0x015B, 0x0073, 0x0301}, 342 { 0x015D, 0x0073, 0x0302}, 343 { 0x1E61, 0x0073, 0x0307}, 344 { 0x0161, 0x0073, 0x030C}, 345 { 0x1E63, 0x0073, 0x0323}, 346 { 0x0219, 0x0073, 0x0326}, 347 { 0x015F, 0x0073, 0x0327}, 348 { 0x1E6B, 0x0074, 0x0307}, 349 { 0x1E97, 0x0074, 0x0308}, 350 { 0x0165, 0x0074, 0x030C}, 351 { 0x1E6D, 0x0074, 0x0323}, 352 { 0x021B, 0x0074, 0x0326}, 353 { 0x0163, 0x0074, 0x0327}, 354 { 0x1E71, 0x0074, 0x032D}, 355 { 0x1E6F, 0x0074, 0x0331}, 356 { 0x00F9, 0x0075, 0x0300}, 357 { 0x00FA, 0x0075, 0x0301}, 358 { 0x00FB, 0x0075, 0x0302}, 359 { 0x0169, 0x0075, 0x0303}, 360 { 0x016B, 0x0075, 0x0304}, 361 { 0x016D, 0x0075, 0x0306}, 362 { 0x00FC, 0x0075, 0x0308}, 363 { 0x1EE7, 0x0075, 0x0309}, 364 { 0x016F, 0x0075, 0x030A}, 365 { 0x0171, 0x0075, 0x030B}, 366 { 0x01D4, 0x0075, 0x030C}, 367 { 0x0215, 0x0075, 0x030F}, 368 { 0x0217, 0x0075, 0x0311}, 369 { 0x01B0, 0x0075, 0x031B}, 370 { 0x1EE5, 0x0075, 0x0323}, 371 { 0x1E73, 0x0075, 0x0324}, 372 { 0x0173, 0x0075, 0x0328}, 373 { 0x1E77, 0x0075, 0x032D}, 374 { 0x1E75, 0x0075, 0x0330}, 375 { 0x1E7D, 0x0076, 0x0303}, 376 { 0x1E7F, 0x0076, 0x0323}, 377 { 0x1E81, 0x0077, 0x0300}, 378 { 0x1E83, 0x0077, 0x0301}, 379 { 0x0175, 0x0077, 0x0302}, 380 { 0x1E87, 0x0077, 0x0307}, 381 { 0x1E85, 0x0077, 0x0308}, 382 { 0x1E98, 0x0077, 0x030A}, 383 { 0x1E89, 0x0077, 0x0323}, 384 { 0x1E8B, 0x0078, 0x0307}, 385 { 0x1E8D, 0x0078, 0x0308}, 386 { 0x1EF3, 0x0079, 0x0300}, 387 { 0x00FD, 0x0079, 0x0301}, 388 { 0x0177, 0x0079, 0x0302}, 389 { 0x1EF9, 0x0079, 0x0303}, 390 { 0x0233, 0x0079, 0x0304}, 391 { 0x1E8F, 0x0079, 0x0307}, 392 { 0x00FF, 0x0079, 0x0308}, 393 { 0x1EF7, 0x0079, 0x0309}, 394 { 0x1E99, 0x0079, 0x030A}, 395 { 0x1EF5, 0x0079, 0x0323}, 396 { 0x017A, 0x007A, 0x0301}, 397 { 0x1E91, 0x007A, 0x0302}, 398 { 0x017C, 0x007A, 0x0307}, 399 { 0x017E, 0x007A, 0x030C}, 400 { 0x1E93, 0x007A, 0x0323}, 401 { 0x1E95, 0x007A, 0x0331}, 402 { 0x1FED, 0x00A8, 0x0300}, 403 { 0x0385, 0x00A8, 0x0301}, 404 { 0x1FC1, 0x00A8, 0x0342}, 405 { 0x1EA6, 0x00C2, 0x0300}, 406 { 0x1EA4, 0x00C2, 0x0301}, 407 { 0x1EAA, 0x00C2, 0x0303}, 408 { 0x1EA8, 0x00C2, 0x0309}, 409 { 0x01DE, 0x00C4, 0x0304}, 410 { 0x01FA, 0x00C5, 0x0301}, 411 { 0x01FC, 0x00C6, 0x0301}, 412 { 0x01E2, 0x00C6, 0x0304}, 413 { 0x1E08, 0x00C7, 0x0301}, 414 { 0x1EC0, 0x00CA, 0x0300}, 415 { 0x1EBE, 0x00CA, 0x0301}, 416 { 0x1EC4, 0x00CA, 0x0303}, 417 { 0x1EC2, 0x00CA, 0x0309}, 418 { 0x1E2E, 0x00CF, 0x0301}, 419 { 0x1ED2, 0x00D4, 0x0300}, 420 { 0x1ED0, 0x00D4, 0x0301}, 421 { 0x1ED6, 0x00D4, 0x0303}, 422 { 0x1ED4, 0x00D4, 0x0309}, 423 { 0x1E4C, 0x00D5, 0x0301}, 424 { 0x022C, 0x00D5, 0x0304}, 425 { 0x1E4E, 0x00D5, 0x0308}, 426 { 0x022A, 0x00D6, 0x0304}, 427 { 0x01FE, 0x00D8, 0x0301}, 428 { 0x01DB, 0x00DC, 0x0300}, 429 { 0x01D7, 0x00DC, 0x0301}, 430 { 0x01D5, 0x00DC, 0x0304}, 431 { 0x01D9, 0x00DC, 0x030C}, 432 { 0x1EA7, 0x00E2, 0x0300}, 433 { 0x1EA5, 0x00E2, 0x0301}, 434 { 0x1EAB, 0x00E2, 0x0303}, 435 { 0x1EA9, 0x00E2, 0x0309}, 436 { 0x01DF, 0x00E4, 0x0304}, 437 { 0x01FB, 0x00E5, 0x0301}, 438 { 0x01FD, 0x00E6, 0x0301}, 439 { 0x01E3, 0x00E6, 0x0304}, 440 { 0x1E09, 0x00E7, 0x0301}, 441 { 0x1EC1, 0x00EA, 0x0300}, 442 { 0x1EBF, 0x00EA, 0x0301}, 443 { 0x1EC5, 0x00EA, 0x0303}, 444 { 0x1EC3, 0x00EA, 0x0309}, 445 { 0x1E2F, 0x00EF, 0x0301}, 446 { 0x1ED3, 0x00F4, 0x0300}, 447 { 0x1ED1, 0x00F4, 0x0301}, 448 { 0x1ED7, 0x00F4, 0x0303}, 449 { 0x1ED5, 0x00F4, 0x0309}, 450 { 0x1E4D, 0x00F5, 0x0301}, 451 { 0x022D, 0x00F5, 0x0304}, 452 { 0x1E4F, 0x00F5, 0x0308}, 453 { 0x022B, 0x00F6, 0x0304}, 454 { 0x01FF, 0x00F8, 0x0301}, 455 { 0x01DC, 0x00FC, 0x0300}, 456 { 0x01D8, 0x00FC, 0x0301}, 457 { 0x01D6, 0x00FC, 0x0304}, 458 { 0x01DA, 0x00FC, 0x030C}, 459 { 0x1EB0, 0x0102, 0x0300}, 460 { 0x1EAE, 0x0102, 0x0301}, 461 { 0x1EB4, 0x0102, 0x0303}, 462 { 0x1EB2, 0x0102, 0x0309}, 463 { 0x1EB1, 0x0103, 0x0300}, 464 { 0x1EAF, 0x0103, 0x0301}, 465 { 0x1EB5, 0x0103, 0x0303}, 466 { 0x1EB3, 0x0103, 0x0309}, 467 { 0x1E14, 0x0112, 0x0300}, 468 { 0x1E16, 0x0112, 0x0301}, 469 { 0x1E15, 0x0113, 0x0300}, 470 { 0x1E17, 0x0113, 0x0301}, 471 { 0x1E50, 0x014C, 0x0300}, 472 { 0x1E52, 0x014C, 0x0301}, 473 { 0x1E51, 0x014D, 0x0300}, 474 { 0x1E53, 0x014D, 0x0301}, 475 { 0x1E64, 0x015A, 0x0307}, 476 { 0x1E65, 0x015B, 0x0307}, 477 { 0x1E66, 0x0160, 0x0307}, 478 { 0x1E67, 0x0161, 0x0307}, 479 { 0x1E78, 0x0168, 0x0301}, 480 { 0x1E79, 0x0169, 0x0301}, 481 { 0x1E7A, 0x016A, 0x0308}, 482 { 0x1E7B, 0x016B, 0x0308}, 483 { 0x1E9B, 0x017F, 0x0307}, 484 { 0x1EDC, 0x01A0, 0x0300}, 485 { 0x1EDA, 0x01A0, 0x0301}, 486 { 0x1EE0, 0x01A0, 0x0303}, 487 { 0x1EDE, 0x01A0, 0x0309}, 488 { 0x1EE2, 0x01A0, 0x0323}, 489 { 0x1EDD, 0x01A1, 0x0300}, 490 { 0x1EDB, 0x01A1, 0x0301}, 491 { 0x1EE1, 0x01A1, 0x0303}, 492 { 0x1EDF, 0x01A1, 0x0309}, 493 { 0x1EE3, 0x01A1, 0x0323}, 494 { 0x1EEA, 0x01AF, 0x0300}, 495 { 0x1EE8, 0x01AF, 0x0301}, 496 { 0x1EEE, 0x01AF, 0x0303}, 497 { 0x1EEC, 0x01AF, 0x0309}, 498 { 0x1EF0, 0x01AF, 0x0323}, 499 { 0x1EEB, 0x01B0, 0x0300}, 500 { 0x1EE9, 0x01B0, 0x0301}, 501 { 0x1EEF, 0x01B0, 0x0303}, 502 { 0x1EED, 0x01B0, 0x0309}, 503 { 0x1EF1, 0x01B0, 0x0323}, 504 { 0x01EE, 0x01B7, 0x030C}, 505 { 0x01EC, 0x01EA, 0x0304}, 506 { 0x01ED, 0x01EB, 0x0304}, 507 { 0x01E0, 0x0226, 0x0304}, 508 { 0x01E1, 0x0227, 0x0304}, 509 { 0x1E1C, 0x0228, 0x0306}, 510 { 0x1E1D, 0x0229, 0x0306}, 511 { 0x0230, 0x022E, 0x0304}, 512 { 0x0231, 0x022F, 0x0304}, 513 { 0x01EF, 0x0292, 0x030C}, 514 { 0x0344, 0x0308, 0x0301}, 515 { 0x1FBA, 0x0391, 0x0300}, 516 { 0x0386, 0x0391, 0x0301}, 517 { 0x1FB9, 0x0391, 0x0304}, 518 { 0x1FB8, 0x0391, 0x0306}, 519 { 0x1F08, 0x0391, 0x0313}, 520 { 0x1F09, 0x0391, 0x0314}, 521 { 0x1FBC, 0x0391, 0x0345}, 522 { 0x1FC8, 0x0395, 0x0300}, 523 { 0x0388, 0x0395, 0x0301}, 524 { 0x1F18, 0x0395, 0x0313}, 525 { 0x1F19, 0x0395, 0x0314}, 526 { 0x1FCA, 0x0397, 0x0300}, 527 { 0x0389, 0x0397, 0x0301}, 528 { 0x1F28, 0x0397, 0x0313}, 529 { 0x1F29, 0x0397, 0x0314}, 530 { 0x1FCC, 0x0397, 0x0345}, 531 { 0x1FDA, 0x0399, 0x0300}, 532 { 0x038A, 0x0399, 0x0301}, 533 { 0x1FD9, 0x0399, 0x0304}, 534 { 0x1FD8, 0x0399, 0x0306}, 535 { 0x03AA, 0x0399, 0x0308}, 536 { 0x1F38, 0x0399, 0x0313}, 537 { 0x1F39, 0x0399, 0x0314}, 538 { 0x1FF8, 0x039F, 0x0300}, 539 { 0x038C, 0x039F, 0x0301}, 540 { 0x1F48, 0x039F, 0x0313}, 541 { 0x1F49, 0x039F, 0x0314}, 542 { 0x1FEC, 0x03A1, 0x0314}, 543 { 0x1FEA, 0x03A5, 0x0300}, 544 { 0x038E, 0x03A5, 0x0301}, 545 { 0x1FE9, 0x03A5, 0x0304}, 546 { 0x1FE8, 0x03A5, 0x0306}, 547 { 0x03AB, 0x03A5, 0x0308}, 548 { 0x1F59, 0x03A5, 0x0314}, 549 { 0x1FFA, 0x03A9, 0x0300}, 550 { 0x038F, 0x03A9, 0x0301}, 551 { 0x1F68, 0x03A9, 0x0313}, 552 { 0x1F69, 0x03A9, 0x0314}, 553 { 0x1FFC, 0x03A9, 0x0345}, 554 { 0x1FB4, 0x03AC, 0x0345}, 555 { 0x1FC4, 0x03AE, 0x0345}, 556 { 0x1F70, 0x03B1, 0x0300}, 557 { 0x03AC, 0x03B1, 0x0301}, 558 { 0x1FB1, 0x03B1, 0x0304}, 559 { 0x1FB0, 0x03B1, 0x0306}, 560 { 0x1F00, 0x03B1, 0x0313}, 561 { 0x1F01, 0x03B1, 0x0314}, 562 { 0x1FB6, 0x03B1, 0x0342}, 563 { 0x1FB3, 0x03B1, 0x0345}, 564 { 0x1F72, 0x03B5, 0x0300}, 565 { 0x03AD, 0x03B5, 0x0301}, 566 { 0x1F10, 0x03B5, 0x0313}, 567 { 0x1F11, 0x03B5, 0x0314}, 568 { 0x1F74, 0x03B7, 0x0300}, 569 { 0x03AE, 0x03B7, 0x0301}, 570 { 0x1F20, 0x03B7, 0x0313}, 571 { 0x1F21, 0x03B7, 0x0314}, 572 { 0x1FC6, 0x03B7, 0x0342}, 573 { 0x1FC3, 0x03B7, 0x0345}, 574 { 0x1F76, 0x03B9, 0x0300}, 575 { 0x03AF, 0x03B9, 0x0301}, 576 { 0x1FD1, 0x03B9, 0x0304}, 577 { 0x1FD0, 0x03B9, 0x0306}, 578 { 0x03CA, 0x03B9, 0x0308}, 579 { 0x1F30, 0x03B9, 0x0313}, 580 { 0x1F31, 0x03B9, 0x0314}, 581 { 0x1FD6, 0x03B9, 0x0342}, 582 { 0x1F78, 0x03BF, 0x0300}, 583 { 0x03CC, 0x03BF, 0x0301}, 584 { 0x1F40, 0x03BF, 0x0313}, 585 { 0x1F41, 0x03BF, 0x0314}, 586 { 0x1FE4, 0x03C1, 0x0313}, 587 { 0x1FE5, 0x03C1, 0x0314}, 588 { 0x1F7A, 0x03C5, 0x0300}, 589 { 0x03CD, 0x03C5, 0x0301}, 590 { 0x1FE1, 0x03C5, 0x0304}, 591 { 0x1FE0, 0x03C5, 0x0306}, 592 { 0x03CB, 0x03C5, 0x0308}, 593 { 0x1F50, 0x03C5, 0x0313}, 594 { 0x1F51, 0x03C5, 0x0314}, 595 { 0x1FE6, 0x03C5, 0x0342}, 596 { 0x1F7C, 0x03C9, 0x0300}, 597 { 0x03CE, 0x03C9, 0x0301}, 598 { 0x1F60, 0x03C9, 0x0313}, 599 { 0x1F61, 0x03C9, 0x0314}, 600 { 0x1FF6, 0x03C9, 0x0342}, 601 { 0x1FF3, 0x03C9, 0x0345}, 602 { 0x1FD2, 0x03CA, 0x0300}, 603 { 0x0390, 0x03CA, 0x0301}, 604 { 0x1FD7, 0x03CA, 0x0342}, 605 { 0x1FE2, 0x03CB, 0x0300}, 606 { 0x03B0, 0x03CB, 0x0301}, 607 { 0x1FE7, 0x03CB, 0x0342}, 608 { 0x1FF4, 0x03CE, 0x0345}, 609 { 0x03D3, 0x03D2, 0x0301}, 610 { 0x03D4, 0x03D2, 0x0308}, 611 { 0x0407, 0x0406, 0x0308}, 612 { 0x04D0, 0x0410, 0x0306}, 613 { 0x04D2, 0x0410, 0x0308}, 614 { 0x0403, 0x0413, 0x0301}, 615 { 0x0400, 0x0415, 0x0300}, 616 { 0x04D6, 0x0415, 0x0306}, 617 { 0x0401, 0x0415, 0x0308}, 618 { 0x04C1, 0x0416, 0x0306}, 619 { 0x04DC, 0x0416, 0x0308}, 620 { 0x04DE, 0x0417, 0x0308}, 621 { 0x040D, 0x0418, 0x0300}, 622 { 0x04E2, 0x0418, 0x0304}, 623 { 0x0419, 0x0418, 0x0306}, 624 { 0x04E4, 0x0418, 0x0308}, 625 { 0x040C, 0x041A, 0x0301}, 626 { 0x04E6, 0x041E, 0x0308}, 627 { 0x04EE, 0x0423, 0x0304}, 628 { 0x040E, 0x0423, 0x0306}, 629 { 0x04F0, 0x0423, 0x0308}, 630 { 0x04F2, 0x0423, 0x030B}, 631 { 0x04F4, 0x0427, 0x0308}, 632 { 0x04F8, 0x042B, 0x0308}, 633 { 0x04EC, 0x042D, 0x0308}, 634 { 0x04D1, 0x0430, 0x0306}, 635 { 0x04D3, 0x0430, 0x0308}, 636 { 0x0453, 0x0433, 0x0301}, 637 { 0x0450, 0x0435, 0x0300}, 638 { 0x04D7, 0x0435, 0x0306}, 639 { 0x0451, 0x0435, 0x0308}, 640 { 0x04C2, 0x0436, 0x0306}, 641 { 0x04DD, 0x0436, 0x0308}, 642 { 0x04DF, 0x0437, 0x0308}, 643 { 0x045D, 0x0438, 0x0300}, 644 { 0x04E3, 0x0438, 0x0304}, 645 { 0x0439, 0x0438, 0x0306}, 646 { 0x04E5, 0x0438, 0x0308}, 647 { 0x045C, 0x043A, 0x0301}, 648 { 0x04E7, 0x043E, 0x0308}, 649 { 0x04EF, 0x0443, 0x0304}, 650 { 0x045E, 0x0443, 0x0306}, 651 { 0x04F1, 0x0443, 0x0308}, 652 { 0x04F3, 0x0443, 0x030B}, 653 { 0x04F5, 0x0447, 0x0308}, 654 { 0x04F9, 0x044B, 0x0308}, 655 { 0x04ED, 0x044D, 0x0308}, 656 { 0x0457, 0x0456, 0x0308}, 657 { 0x0476, 0x0474, 0x030F}, 658 { 0x0477, 0x0475, 0x030F}, 659 { 0x04DA, 0x04D8, 0x0308}, 660 { 0x04DB, 0x04D9, 0x0308}, 661 { 0x04EA, 0x04E8, 0x0308}, 662 { 0x04EB, 0x04E9, 0x0308}, 663 { 0xFB2E, 0x05D0, 0x05B7}, 664 { 0xFB2F, 0x05D0, 0x05B8}, 665 { 0xFB30, 0x05D0, 0x05BC}, 666 { 0xFB31, 0x05D1, 0x05BC}, 667 { 0xFB4C, 0x05D1, 0x05BF}, 668 { 0xFB32, 0x05D2, 0x05BC}, 669 { 0xFB33, 0x05D3, 0x05BC}, 670 { 0xFB34, 0x05D4, 0x05BC}, 671 { 0xFB4B, 0x05D5, 0x05B9}, 672 { 0xFB35, 0x05D5, 0x05BC}, 673 { 0xFB36, 0x05D6, 0x05BC}, 674 { 0xFB38, 0x05D8, 0x05BC}, 675 { 0xFB1D, 0x05D9, 0x05B4}, 676 { 0xFB39, 0x05D9, 0x05BC}, 677 { 0xFB3A, 0x05DA, 0x05BC}, 678 { 0xFB3B, 0x05DB, 0x05BC}, 679 { 0xFB4D, 0x05DB, 0x05BF}, 680 { 0xFB3C, 0x05DC, 0x05BC}, 681 { 0xFB3E, 0x05DE, 0x05BC}, 682 { 0xFB40, 0x05E0, 0x05BC}, 683 { 0xFB41, 0x05E1, 0x05BC}, 684 { 0xFB43, 0x05E3, 0x05BC}, 685 { 0xFB44, 0x05E4, 0x05BC}, 686 { 0xFB4E, 0x05E4, 0x05BF}, 687 { 0xFB46, 0x05E6, 0x05BC}, 688 { 0xFB47, 0x05E7, 0x05BC}, 689 { 0xFB48, 0x05E8, 0x05BC}, 690 { 0xFB49, 0x05E9, 0x05BC}, 691 { 0xFB2A, 0x05E9, 0x05C1}, 692 { 0xFB2B, 0x05E9, 0x05C2}, 693 { 0xFB4A, 0x05EA, 0x05BC}, 694 { 0xFB1F, 0x05F2, 0x05B7}, 695 { 0x0622, 0x0627, 0x0653}, 696 { 0x0623, 0x0627, 0x0654}, 697 { 0x0625, 0x0627, 0x0655}, 698 { 0x0624, 0x0648, 0x0654}, 699 { 0x0626, 0x064A, 0x0654}, 700 { 0x06C2, 0x06C1, 0x0654}, 701 { 0x06D3, 0x06D2, 0x0654}, 702 { 0x06C0, 0x06D5, 0x0654}, 703 { 0x0958, 0x0915, 0x093C}, 704 { 0x0959, 0x0916, 0x093C}, 705 { 0x095A, 0x0917, 0x093C}, 706 { 0x095B, 0x091C, 0x093C}, 707 { 0x095C, 0x0921, 0x093C}, 708 { 0x095D, 0x0922, 0x093C}, 709 { 0x0929, 0x0928, 0x093C}, 710 { 0x095E, 0x092B, 0x093C}, 711 { 0x095F, 0x092F, 0x093C}, 712 { 0x0931, 0x0930, 0x093C}, 713 { 0x0934, 0x0933, 0x093C}, 714 { 0x09DC, 0x09A1, 0x09BC}, 715 { 0x09DD, 0x09A2, 0x09BC}, 716 { 0x09DF, 0x09AF, 0x09BC}, 717 { 0x09CB, 0x09C7, 0x09BE}, 718 { 0x09CC, 0x09C7, 0x09D7}, 719 { 0x0A59, 0x0A16, 0x0A3C}, 720 { 0x0A5A, 0x0A17, 0x0A3C}, 721 { 0x0A5B, 0x0A1C, 0x0A3C}, 722 { 0x0A5E, 0x0A2B, 0x0A3C}, 723 { 0x0A33, 0x0A32, 0x0A3C}, 724 { 0x0A36, 0x0A38, 0x0A3C}, 725 { 0x0B5C, 0x0B21, 0x0B3C}, 726 { 0x0B5D, 0x0B22, 0x0B3C}, 727 { 0x0B4B, 0x0B47, 0x0B3E}, 728 { 0x0B48, 0x0B47, 0x0B56}, 729 { 0x0B4C, 0x0B47, 0x0B57}, 730 { 0x0B94, 0x0B92, 0x0BD7}, 731 { 0x0BCA, 0x0BC6, 0x0BBE}, 732 { 0x0BCC, 0x0BC6, 0x0BD7}, 733 { 0x0BCB, 0x0BC7, 0x0BBE}, 734 { 0x0C48, 0x0C46, 0x0C56}, 735 { 0x0CC0, 0x0CBF, 0x0CD5}, 736 { 0x0CCA, 0x0CC6, 0x0CC2}, 737 { 0x0CC7, 0x0CC6, 0x0CD5}, 738 { 0x0CC8, 0x0CC6, 0x0CD6}, 739 { 0x0CCB, 0x0CCA, 0x0CD5}, 740 { 0x0D4A, 0x0D46, 0x0D3E}, 741 { 0x0D4C, 0x0D46, 0x0D57}, 742 { 0x0D4B, 0x0D47, 0x0D3E}, 743 { 0x0DDA, 0x0DD9, 0x0DCA}, 744 { 0x0DDC, 0x0DD9, 0x0DCF}, 745 { 0x0DDE, 0x0DD9, 0x0DDF}, 746 { 0x0DDD, 0x0DDC, 0x0DCA}, 747 { 0x0F69, 0x0F40, 0x0FB5}, 748 { 0x0F43, 0x0F42, 0x0FB7}, 749 { 0x0F4D, 0x0F4C, 0x0FB7}, 750 { 0x0F52, 0x0F51, 0x0FB7}, 751 { 0x0F57, 0x0F56, 0x0FB7}, 752 { 0x0F5C, 0x0F5B, 0x0FB7}, 753 { 0x0F73, 0x0F71, 0x0F72}, 754 { 0x0F75, 0x0F71, 0x0F74}, 755 { 0x0F81, 0x0F71, 0x0F80}, 756 { 0x0FB9, 0x0F90, 0x0FB5}, 757 { 0x0F93, 0x0F92, 0x0FB7}, 758 { 0x0F9D, 0x0F9C, 0x0FB7}, 759 { 0x0FA2, 0x0FA1, 0x0FB7}, 760 { 0x0FA7, 0x0FA6, 0x0FB7}, 761 { 0x0FAC, 0x0FAB, 0x0FB7}, 762 { 0x0F76, 0x0FB2, 0x0F80}, 763 { 0x0F78, 0x0FB3, 0x0F80}, 764 { 0x1026, 0x1025, 0x102E}, 765 { 0x1B06, 0x1B05, 0x1B35}, 766 { 0x1B08, 0x1B07, 0x1B35}, 767 { 0x1B0A, 0x1B09, 0x1B35}, 768 { 0x1B0C, 0x1B0B, 0x1B35}, 769 { 0x1B0E, 0x1B0D, 0x1B35}, 770 { 0x1B12, 0x1B11, 0x1B35}, 771 { 0x1B3B, 0x1B3A, 0x1B35}, 772 { 0x1B3D, 0x1B3C, 0x1B35}, 773 { 0x1B40, 0x1B3E, 0x1B35}, 774 { 0x1B41, 0x1B3F, 0x1B35}, 775 { 0x1B43, 0x1B42, 0x1B35}, 776 { 0x1E38, 0x1E36, 0x0304}, 777 { 0x1E39, 0x1E37, 0x0304}, 778 { 0x1E5C, 0x1E5A, 0x0304}, 779 { 0x1E5D, 0x1E5B, 0x0304}, 780 { 0x1E68, 0x1E62, 0x0307}, 781 { 0x1E69, 0x1E63, 0x0307}, 782 { 0x1EAC, 0x1EA0, 0x0302}, 783 { 0x1EB6, 0x1EA0, 0x0306}, 784 { 0x1EAD, 0x1EA1, 0x0302}, 785 { 0x1EB7, 0x1EA1, 0x0306}, 786 { 0x1EC6, 0x1EB8, 0x0302}, 787 { 0x1EC7, 0x1EB9, 0x0302}, 788 { 0x1ED8, 0x1ECC, 0x0302}, 789 { 0x1ED9, 0x1ECD, 0x0302}, 790 { 0x1F02, 0x1F00, 0x0300}, 791 { 0x1F04, 0x1F00, 0x0301}, 792 { 0x1F06, 0x1F00, 0x0342}, 793 { 0x1F80, 0x1F00, 0x0345}, 794 { 0x1F03, 0x1F01, 0x0300}, 795 { 0x1F05, 0x1F01, 0x0301}, 796 { 0x1F07, 0x1F01, 0x0342}, 797 { 0x1F81, 0x1F01, 0x0345}, 798 { 0x1F82, 0x1F02, 0x0345}, 799 { 0x1F83, 0x1F03, 0x0345}, 800 { 0x1F84, 0x1F04, 0x0345}, 801 { 0x1F85, 0x1F05, 0x0345}, 802 { 0x1F86, 0x1F06, 0x0345}, 803 { 0x1F87, 0x1F07, 0x0345}, 804 { 0x1F0A, 0x1F08, 0x0300}, 805 { 0x1F0C, 0x1F08, 0x0301}, 806 { 0x1F0E, 0x1F08, 0x0342}, 807 { 0x1F88, 0x1F08, 0x0345}, 808 { 0x1F0B, 0x1F09, 0x0300}, 809 { 0x1F0D, 0x1F09, 0x0301}, 810 { 0x1F0F, 0x1F09, 0x0342}, 811 { 0x1F89, 0x1F09, 0x0345}, 812 { 0x1F8A, 0x1F0A, 0x0345}, 813 { 0x1F8B, 0x1F0B, 0x0345}, 814 { 0x1F8C, 0x1F0C, 0x0345}, 815 { 0x1F8D, 0x1F0D, 0x0345}, 816 { 0x1F8E, 0x1F0E, 0x0345}, 817 { 0x1F8F, 0x1F0F, 0x0345}, 818 { 0x1F12, 0x1F10, 0x0300}, 819 { 0x1F14, 0x1F10, 0x0301}, 820 { 0x1F13, 0x1F11, 0x0300}, 821 { 0x1F15, 0x1F11, 0x0301}, 822 { 0x1F1A, 0x1F18, 0x0300}, 823 { 0x1F1C, 0x1F18, 0x0301}, 824 { 0x1F1B, 0x1F19, 0x0300}, 825 { 0x1F1D, 0x1F19, 0x0301}, 826 { 0x1F22, 0x1F20, 0x0300}, 827 { 0x1F24, 0x1F20, 0x0301}, 828 { 0x1F26, 0x1F20, 0x0342}, 829 { 0x1F90, 0x1F20, 0x0345}, 830 { 0x1F23, 0x1F21, 0x0300}, 831 { 0x1F25, 0x1F21, 0x0301}, 832 { 0x1F27, 0x1F21, 0x0342}, 833 { 0x1F91, 0x1F21, 0x0345}, 834 { 0x1F92, 0x1F22, 0x0345}, 835 { 0x1F93, 0x1F23, 0x0345}, 836 { 0x1F94, 0x1F24, 0x0345}, 837 { 0x1F95, 0x1F25, 0x0345}, 838 { 0x1F96, 0x1F26, 0x0345}, 839 { 0x1F97, 0x1F27, 0x0345}, 840 { 0x1F2A, 0x1F28, 0x0300}, 841 { 0x1F2C, 0x1F28, 0x0301}, 842 { 0x1F2E, 0x1F28, 0x0342}, 843 { 0x1F98, 0x1F28, 0x0345}, 844 { 0x1F2B, 0x1F29, 0x0300}, 845 { 0x1F2D, 0x1F29, 0x0301}, 846 { 0x1F2F, 0x1F29, 0x0342}, 847 { 0x1F99, 0x1F29, 0x0345}, 848 { 0x1F9A, 0x1F2A, 0x0345}, 849 { 0x1F9B, 0x1F2B, 0x0345}, 850 { 0x1F9C, 0x1F2C, 0x0345}, 851 { 0x1F9D, 0x1F2D, 0x0345}, 852 { 0x1F9E, 0x1F2E, 0x0345}, 853 { 0x1F9F, 0x1F2F, 0x0345}, 854 { 0x1F32, 0x1F30, 0x0300}, 855 { 0x1F34, 0x1F30, 0x0301}, 856 { 0x1F36, 0x1F30, 0x0342}, 857 { 0x1F33, 0x1F31, 0x0300}, 858 { 0x1F35, 0x1F31, 0x0301}, 859 { 0x1F37, 0x1F31, 0x0342}, 860 { 0x1F3A, 0x1F38, 0x0300}, 861 { 0x1F3C, 0x1F38, 0x0301}, 862 { 0x1F3E, 0x1F38, 0x0342}, 863 { 0x1F3B, 0x1F39, 0x0300}, 864 { 0x1F3D, 0x1F39, 0x0301}, 865 { 0x1F3F, 0x1F39, 0x0342}, 866 { 0x1F42, 0x1F40, 0x0300}, 867 { 0x1F44, 0x1F40, 0x0301}, 868 { 0x1F43, 0x1F41, 0x0300}, 869 { 0x1F45, 0x1F41, 0x0301}, 870 { 0x1F4A, 0x1F48, 0x0300}, 871 { 0x1F4C, 0x1F48, 0x0301}, 872 { 0x1F4B, 0x1F49, 0x0300}, 873 { 0x1F4D, 0x1F49, 0x0301}, 874 { 0x1F52, 0x1F50, 0x0300}, 875 { 0x1F54, 0x1F50, 0x0301}, 876 { 0x1F56, 0x1F50, 0x0342}, 877 { 0x1F53, 0x1F51, 0x0300}, 878 { 0x1F55, 0x1F51, 0x0301}, 879 { 0x1F57, 0x1F51, 0x0342}, 880 { 0x1F5B, 0x1F59, 0x0300}, 881 { 0x1F5D, 0x1F59, 0x0301}, 882 { 0x1F5F, 0x1F59, 0x0342}, 883 { 0x1F62, 0x1F60, 0x0300}, 884 { 0x1F64, 0x1F60, 0x0301}, 885 { 0x1F66, 0x1F60, 0x0342}, 886 { 0x1FA0, 0x1F60, 0x0345}, 887 { 0x1F63, 0x1F61, 0x0300}, 888 { 0x1F65, 0x1F61, 0x0301}, 889 { 0x1F67, 0x1F61, 0x0342}, 890 { 0x1FA1, 0x1F61, 0x0345}, 891 { 0x1FA2, 0x1F62, 0x0345}, 892 { 0x1FA3, 0x1F63, 0x0345}, 893 { 0x1FA4, 0x1F64, 0x0345}, 894 { 0x1FA5, 0x1F65, 0x0345}, 895 { 0x1FA6, 0x1F66, 0x0345}, 896 { 0x1FA7, 0x1F67, 0x0345}, 897 { 0x1F6A, 0x1F68, 0x0300}, 898 { 0x1F6C, 0x1F68, 0x0301}, 899 { 0x1F6E, 0x1F68, 0x0342}, 900 { 0x1FA8, 0x1F68, 0x0345}, 901 { 0x1F6B, 0x1F69, 0x0300}, 902 { 0x1F6D, 0x1F69, 0x0301}, 903 { 0x1F6F, 0x1F69, 0x0342}, 904 { 0x1FA9, 0x1F69, 0x0345}, 905 { 0x1FAA, 0x1F6A, 0x0345}, 906 { 0x1FAB, 0x1F6B, 0x0345}, 907 { 0x1FAC, 0x1F6C, 0x0345}, 908 { 0x1FAD, 0x1F6D, 0x0345}, 909 { 0x1FAE, 0x1F6E, 0x0345}, 910 { 0x1FAF, 0x1F6F, 0x0345}, 911 { 0x1FB2, 0x1F70, 0x0345}, 912 { 0x1FC2, 0x1F74, 0x0345}, 913 { 0x1FF2, 0x1F7C, 0x0345}, 914 { 0x1FB7, 0x1FB6, 0x0345}, 915 { 0x1FCD, 0x1FBF, 0x0300}, 916 { 0x1FCE, 0x1FBF, 0x0301}, 917 { 0x1FCF, 0x1FBF, 0x0342}, 918 { 0x1FC7, 0x1FC6, 0x0345}, 919 { 0x1FF7, 0x1FF6, 0x0345}, 920 { 0x1FDD, 0x1FFE, 0x0300}, 921 { 0x1FDE, 0x1FFE, 0x0301}, 922 { 0x1FDF, 0x1FFE, 0x0342}, 923 { 0x219A, 0x2190, 0x0338}, 924 { 0x219B, 0x2192, 0x0338}, 925 { 0x21AE, 0x2194, 0x0338}, 926 { 0x21CD, 0x21D0, 0x0338}, 927 { 0x21CF, 0x21D2, 0x0338}, 928 { 0x21CE, 0x21D4, 0x0338}, 929 { 0x2204, 0x2203, 0x0338}, 930 { 0x2209, 0x2208, 0x0338}, 931 { 0x220C, 0x220B, 0x0338}, 932 { 0x2224, 0x2223, 0x0338}, 933 { 0x2226, 0x2225, 0x0338}, 934 { 0x2241, 0x223C, 0x0338}, 935 { 0x2244, 0x2243, 0x0338}, 936 { 0x2247, 0x2245, 0x0338}, 937 { 0x2249, 0x2248, 0x0338}, 938 { 0x226D, 0x224D, 0x0338}, 939 { 0x2262, 0x2261, 0x0338}, 940 { 0x2270, 0x2264, 0x0338}, 941 { 0x2271, 0x2265, 0x0338}, 942 { 0x2274, 0x2272, 0x0338}, 943 { 0x2275, 0x2273, 0x0338}, 944 { 0x2278, 0x2276, 0x0338}, 945 { 0x2279, 0x2277, 0x0338}, 946 { 0x2280, 0x227A, 0x0338}, 947 { 0x2281, 0x227B, 0x0338}, 948 { 0x22E0, 0x227C, 0x0338}, 949 { 0x22E1, 0x227D, 0x0338}, 950 { 0x2284, 0x2282, 0x0338}, 951 { 0x2285, 0x2283, 0x0338}, 952 { 0x2288, 0x2286, 0x0338}, 953 { 0x2289, 0x2287, 0x0338}, 954 { 0x22E2, 0x2291, 0x0338}, 955 { 0x22E3, 0x2292, 0x0338}, 956 { 0x22AC, 0x22A2, 0x0338}, 957 { 0x22AD, 0x22A8, 0x0338}, 958 { 0x22AE, 0x22A9, 0x0338}, 959 { 0x22AF, 0x22AB, 0x0338}, 960 { 0x22EA, 0x22B2, 0x0338}, 961 { 0x22EB, 0x22B3, 0x0338}, 962 { 0x22EC, 0x22B4, 0x0338}, 963 { 0x22ED, 0x22B5, 0x0338}, 964 { 0x2ADC, 0x2ADD, 0x0338}, 965 { 0x3094, 0x3046, 0x3099}, 966 { 0x304C, 0x304B, 0x3099}, 967 { 0x304E, 0x304D, 0x3099}, 968 { 0x3050, 0x304F, 0x3099}, 969 { 0x3052, 0x3051, 0x3099}, 970 { 0x3054, 0x3053, 0x3099}, 971 { 0x3056, 0x3055, 0x3099}, 972 { 0x3058, 0x3057, 0x3099}, 973 { 0x305A, 0x3059, 0x3099}, 974 { 0x305C, 0x305B, 0x3099}, 975 { 0x305E, 0x305D, 0x3099}, 976 { 0x3060, 0x305F, 0x3099}, 977 { 0x3062, 0x3061, 0x3099}, 978 { 0x3065, 0x3064, 0x3099}, 979 { 0x3067, 0x3066, 0x3099}, 980 { 0x3069, 0x3068, 0x3099}, 981 { 0x3070, 0x306F, 0x3099}, 982 { 0x3071, 0x306F, 0x309A}, 983 { 0x3073, 0x3072, 0x3099}, 984 { 0x3074, 0x3072, 0x309A}, 985 { 0x3076, 0x3075, 0x3099}, 986 { 0x3077, 0x3075, 0x309A}, 987 { 0x3079, 0x3078, 0x3099}, 988 { 0x307A, 0x3078, 0x309A}, 989 { 0x307C, 0x307B, 0x3099}, 990 { 0x307D, 0x307B, 0x309A}, 991 { 0x309E, 0x309D, 0x3099}, 992 { 0x30F4, 0x30A6, 0x3099}, 993 { 0x30AC, 0x30AB, 0x3099}, 994 { 0x30AE, 0x30AD, 0x3099}, 995 { 0x30B0, 0x30AF, 0x3099}, 996 { 0x30B2, 0x30B1, 0x3099}, 997 { 0x30B4, 0x30B3, 0x3099}, 998 { 0x30B6, 0x30B5, 0x3099}, 999 { 0x30B8, 0x30B7, 0x3099}, 1000 { 0x30BA, 0x30B9, 0x3099}, 1001 { 0x30BC, 0x30BB, 0x3099}, 1002 { 0x30BE, 0x30BD, 0x3099}, 1003 { 0x30C0, 0x30BF, 0x3099}, 1004 { 0x30C2, 0x30C1, 0x3099}, 1005 { 0x30C5, 0x30C4, 0x3099}, 1006 { 0x30C7, 0x30C6, 0x3099}, 1007 { 0x30C9, 0x30C8, 0x3099}, 1008 { 0x30D0, 0x30CF, 0x3099}, 1009 { 0x30D1, 0x30CF, 0x309A}, 1010 { 0x30D3, 0x30D2, 0x3099}, 1011 { 0x30D4, 0x30D2, 0x309A}, 1012 { 0x30D6, 0x30D5, 0x3099}, 1013 { 0x30D7, 0x30D5, 0x309A}, 1014 { 0x30D9, 0x30D8, 0x3099}, 1015 { 0x30DA, 0x30D8, 0x309A}, 1016 { 0x30DC, 0x30DB, 0x3099}, 1017 { 0x30DD, 0x30DB, 0x309A}, 1018 { 0x30F7, 0x30EF, 0x3099}, 1019 { 0x30F8, 0x30F0, 0x3099}, 1020 { 0x30F9, 0x30F1, 0x3099}, 1021 { 0x30FA, 0x30F2, 0x3099}, 1022 { 0x30FE, 0x30FD, 0x3099}, 1023 { 0xFB2C, 0xFB49, 0x05C1}, 1024 { 0xFB2D, 0xFB49, 0x05C2}, 1025 }; 1026 1027 private static final int UNICODE_SHIFT = 21; 1028 precompose(char base, char comb)1029 public static char precompose(char base, char comb) { 1030 int min = 0; 1031 int max = precompositions.length - 1; 1032 int mid; 1033 1034 long sought = base << UNICODE_SHIFT | comb; 1035 long that; 1036 1037 while (max >= min) { 1038 mid = (min + max) / 2; 1039 that = precompositions[mid][1] << UNICODE_SHIFT | precompositions[mid][2]; 1040 if (that < sought) 1041 min = mid + 1; 1042 else if (that > sought) 1043 max = mid - 1; 1044 else 1045 return precompositions[mid][0]; 1046 } 1047 1048 // No match; return character without combiner 1049 return base; 1050 } 1051 } 1052