Home | History | Annotate | Download | only in terminal
      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 
   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