1/************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24/* ======================================================================= */ 25 26/* This file contain the information tables for all */ 27/* chinese simplified (China) charsets: */ 28/* GB2312, GBK, MS936, APPLE_CHINSIMP */ 29 30/* GBK is MS-CP 936 and a superset of GB-2312-80. In GB-2312-80 the range */ 31/* is 0xA1-0xFE for the leading byte and 0xA1-0xFE for the trailing byte. */ 32/* In GBK the range is from 0x81-0xFE for the leading byte and 0x40-0xFE */ 33/* for the trailing byte. */ 34 35/* ======================================================================= */ 36 37#define GBKOFF 0x61 38 39/* ======================================================================= */ 40 41static ImplDBCSToUniLeadTab const aGB2312UniLeadTab[256] = 42{ 43 { 0x0000, 0, 0, NULL }, /* 0x00 */ 44 { 0x0001, 0, 0, NULL }, /* 0x01 */ 45 { 0x0002, 0, 0, NULL }, /* 0x02 */ 46 { 0x0003, 0, 0, NULL }, /* 0x03 */ 47 { 0x0004, 0, 0, NULL }, /* 0x04 */ 48 { 0x0005, 0, 0, NULL }, /* 0x05 */ 49 { 0x0006, 0, 0, NULL }, /* 0x06 */ 50 { 0x0007, 0, 0, NULL }, /* 0x07 */ 51 { 0x0008, 0, 0, NULL }, /* 0x08 */ 52 { 0x0009, 0, 0, NULL }, /* 0x09 */ 53 { 0x000A, 0, 0, NULL }, /* 0x0A */ 54 { 0x000B, 0, 0, NULL }, /* 0x0B */ 55 { 0x000C, 0, 0, NULL }, /* 0x0C */ 56 { 0x000D, 0, 0, NULL }, /* 0x0D */ 57 { 0x000E, 0, 0, NULL }, /* 0x0E */ 58 { 0x000F, 0, 0, NULL }, /* 0x0F */ 59 { 0x0010, 0, 0, NULL }, /* 0x10 */ 60 { 0x0011, 0, 0, NULL }, /* 0x11 */ 61 { 0x0012, 0, 0, NULL }, /* 0x12 */ 62 { 0x0013, 0, 0, NULL }, /* 0x13 */ 63 { 0x0014, 0, 0, NULL }, /* 0x14 */ 64 { 0x0015, 0, 0, NULL }, /* 0x15 */ 65 { 0x0016, 0, 0, NULL }, /* 0x16 */ 66 { 0x0017, 0, 0, NULL }, /* 0x17 */ 67 { 0x0018, 0, 0, NULL }, /* 0x18 */ 68 { 0x0019, 0, 0, NULL }, /* 0x19 */ 69 { 0x001A, 0, 0, NULL }, /* 0x1A */ 70 { 0x001B, 0, 0, NULL }, /* 0x1B */ 71 { 0x001C, 0, 0, NULL }, /* 0x1C */ 72 { 0x001D, 0, 0, NULL }, /* 0x1D */ 73 { 0x001E, 0, 0, NULL }, /* 0x1E */ 74 { 0x001F, 0, 0, NULL }, /* 0x1F */ 75 { 0x0020, 0, 0, NULL }, /* 0x20 */ 76 { 0x0021, 0, 0, NULL }, /* 0x21 */ 77 { 0x0022, 0, 0, NULL }, /* 0x22 */ 78 { 0x0023, 0, 0, NULL }, /* 0x23 */ 79 { 0x0024, 0, 0, NULL }, /* 0x24 */ 80 { 0x0025, 0, 0, NULL }, /* 0x25 */ 81 { 0x0026, 0, 0, NULL }, /* 0x26 */ 82 { 0x0027, 0, 0, NULL }, /* 0x27 */ 83 { 0x0028, 0, 0, NULL }, /* 0x28 */ 84 { 0x0029, 0, 0, NULL }, /* 0x29 */ 85 { 0x002A, 0, 0, NULL }, /* 0x2A */ 86 { 0x002B, 0, 0, NULL }, /* 0x2B */ 87 { 0x002C, 0, 0, NULL }, /* 0x2C */ 88 { 0x002D, 0, 0, NULL }, /* 0x2D */ 89 { 0x002E, 0, 0, NULL }, /* 0x2E */ 90 { 0x002F, 0, 0, NULL }, /* 0x2F */ 91 { 0x0030, 0, 0, NULL }, /* 0x30 */ 92 { 0x0031, 0, 0, NULL }, /* 0x31 */ 93 { 0x0032, 0, 0, NULL }, /* 0x32 */ 94 { 0x0033, 0, 0, NULL }, /* 0x33 */ 95 { 0x0034, 0, 0, NULL }, /* 0x34 */ 96 { 0x0035, 0, 0, NULL }, /* 0x35 */ 97 { 0x0036, 0, 0, NULL }, /* 0x36 */ 98 { 0x0037, 0, 0, NULL }, /* 0x37 */ 99 { 0x0038, 0, 0, NULL }, /* 0x38 */ 100 { 0x0039, 0, 0, NULL }, /* 0x39 */ 101 { 0x003A, 0, 0, NULL }, /* 0x3A */ 102 { 0x003B, 0, 0, NULL }, /* 0x3B */ 103 { 0x003C, 0, 0, NULL }, /* 0x3C */ 104 { 0x003D, 0, 0, NULL }, /* 0x3D */ 105 { 0x003E, 0, 0, NULL }, /* 0x3E */ 106 { 0x003F, 0, 0, NULL }, /* 0x3F */ 107 { 0x0040, 0, 0, NULL }, /* 0x40 */ 108 { 0x0041, 0, 0, NULL }, /* 0x41 */ 109 { 0x0042, 0, 0, NULL }, /* 0x42 */ 110 { 0x0043, 0, 0, NULL }, /* 0x43 */ 111 { 0x0044, 0, 0, NULL }, /* 0x44 */ 112 { 0x0045, 0, 0, NULL }, /* 0x45 */ 113 { 0x0046, 0, 0, NULL }, /* 0x46 */ 114 { 0x0047, 0, 0, NULL }, /* 0x47 */ 115 { 0x0048, 0, 0, NULL }, /* 0x48 */ 116 { 0x0049, 0, 0, NULL }, /* 0x49 */ 117 { 0x004A, 0, 0, NULL }, /* 0x4A */ 118 { 0x004B, 0, 0, NULL }, /* 0x4B */ 119 { 0x004C, 0, 0, NULL }, /* 0x4C */ 120 { 0x004D, 0, 0, NULL }, /* 0x4D */ 121 { 0x004E, 0, 0, NULL }, /* 0x4E */ 122 { 0x004F, 0, 0, NULL }, /* 0x4F */ 123 { 0x0050, 0, 0, NULL }, /* 0x50 */ 124 { 0x0051, 0, 0, NULL }, /* 0x51 */ 125 { 0x0052, 0, 0, NULL }, /* 0x52 */ 126 { 0x0053, 0, 0, NULL }, /* 0x53 */ 127 { 0x0054, 0, 0, NULL }, /* 0x54 */ 128 { 0x0055, 0, 0, NULL }, /* 0x55 */ 129 { 0x0056, 0, 0, NULL }, /* 0x56 */ 130 { 0x0057, 0, 0, NULL }, /* 0x57 */ 131 { 0x0058, 0, 0, NULL }, /* 0x58 */ 132 { 0x0059, 0, 0, NULL }, /* 0x59 */ 133 { 0x005A, 0, 0, NULL }, /* 0x5A */ 134 { 0x005B, 0, 0, NULL }, /* 0x5B */ 135 { 0x005C, 0, 0, NULL }, /* 0x5C */ 136 { 0x005D, 0, 0, NULL }, /* 0x5D */ 137 { 0x005E, 0, 0, NULL }, /* 0x5E */ 138 { 0x005F, 0, 0, NULL }, /* 0x5F */ 139 { 0x0060, 0, 0, NULL }, /* 0x60 */ 140 { 0x0061, 0, 0, NULL }, /* 0x61 */ 141 { 0x0062, 0, 0, NULL }, /* 0x62 */ 142 { 0x0063, 0, 0, NULL }, /* 0x63 */ 143 { 0x0064, 0, 0, NULL }, /* 0x64 */ 144 { 0x0065, 0, 0, NULL }, /* 0x65 */ 145 { 0x0066, 0, 0, NULL }, /* 0x66 */ 146 { 0x0067, 0, 0, NULL }, /* 0x67 */ 147 { 0x0068, 0, 0, NULL }, /* 0x68 */ 148 { 0x0069, 0, 0, NULL }, /* 0x69 */ 149 { 0x006A, 0, 0, NULL }, /* 0x6A */ 150 { 0x006B, 0, 0, NULL }, /* 0x6B */ 151 { 0x006C, 0, 0, NULL }, /* 0x6C */ 152 { 0x006D, 0, 0, NULL }, /* 0x6D */ 153 { 0x006E, 0, 0, NULL }, /* 0x6E */ 154 { 0x006F, 0, 0, NULL }, /* 0x6F */ 155 { 0x0070, 0, 0, NULL }, /* 0x70 */ 156 { 0x0071, 0, 0, NULL }, /* 0x71 */ 157 { 0x0072, 0, 0, NULL }, /* 0x72 */ 158 { 0x0073, 0, 0, NULL }, /* 0x73 */ 159 { 0x0074, 0, 0, NULL }, /* 0x74 */ 160 { 0x0075, 0, 0, NULL }, /* 0x75 */ 161 { 0x0076, 0, 0, NULL }, /* 0x76 */ 162 { 0x0077, 0, 0, NULL }, /* 0x77 */ 163 { 0x0078, 0, 0, NULL }, /* 0x78 */ 164 { 0x0079, 0, 0, NULL }, /* 0x79 */ 165 { 0x007A, 0, 0, NULL }, /* 0x7A */ 166 { 0x007B, 0, 0, NULL }, /* 0x7B */ 167 { 0x007C, 0, 0, NULL }, /* 0x7C */ 168 { 0x007D, 0, 0, NULL }, /* 0x7D */ 169 { 0x007E, 0, 0, NULL }, /* 0x7E */ 170 { 0x007F, 0, 0, NULL }, /* 0x7F */ 171 { 0x20AC, 0, 0, NULL }, /* 0x80 */ 172 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x81 */ /* We convert this as double byte */ 173 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x82 */ /* We convert this as double byte */ 174 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x83 */ /* We convert this as double byte */ 175 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x84 */ /* We convert this as double byte */ 176 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x85 */ /* We convert this as double byte */ 177 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x86 */ /* We convert this as double byte */ 178 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x87 */ /* We convert this as double byte */ 179 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x88 */ /* We convert this as double byte */ 180 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x89 */ /* We convert this as double byte */ 181 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x8A */ /* We convert this as double byte */ 182 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x8B */ /* We convert this as double byte */ 183 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x8C */ /* We convert this as double byte */ 184 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x8D */ /* We convert this as double byte */ 185 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x8E */ /* We convert this as double byte */ 186 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x8F */ /* We convert this as double byte */ 187 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x90 */ /* We convert this as double byte */ 188 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x91 */ /* We convert this as double byte */ 189 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x92 */ /* We convert this as double byte */ 190 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x93 */ /* We convert this as double byte */ 191 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x94 */ /* We convert this as double byte */ 192 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x95 */ /* We convert this as double byte */ 193 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x96 */ /* We convert this as double byte */ 194 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x97 */ /* We convert this as double byte */ 195 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x98 */ /* We convert this as double byte */ 196 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x99 */ /* We convert this as double byte */ 197 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x9A */ /* We convert this as double byte */ 198 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x9B */ /* We convert this as double byte */ 199 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x9C */ /* We convert this as double byte */ 200 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x9D */ /* We convert this as double byte */ 201 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x9E */ /* We convert this as double byte */ 202 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x9F */ /* We convert this as double byte */ 203 { 0, 1, 0, NULL }, /* 0xA0 */ 204 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GB_A1 }, /* 0xA1 */ 205 { 0, 0xA1, 0xFC, aImplDBCSToUniTab_GB_A2 }, /* 0xA2 */ 206 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GB_A3 }, /* 0xA3 */ 207 { 0, 0xA1, 0xF3, aImplDBCSToUniTab_GB_A4 }, /* 0xA4 */ 208 { 0, 0xA1, 0xF6, aImplDBCSToUniTab_GB_A5 }, /* 0xA5 */ 209 { 0, 0xA1, 0xF5, aImplDBCSToUniTab_GB_A6 }, /* 0xA6 */ 210 { 0, 0xA1, 0xF1, aImplDBCSToUniTab_GB_A7 }, /* 0xA7 */ 211 { 0, 0xA1, 0xE9, aImplDBCSToUniTab_GBK_A8+GBKOFF }, /* 0xA8 */ 212 { 0, 0xA1, 0xEF, aImplDBCSToUniTab_GBK_A9+GBKOFF }, /* 0xA9 */ 213 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0xAA */ /* We convert this as double byte */ 214 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0xAB */ /* We convert this as double byte */ 215 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0xAC */ /* We convert this as double byte */ 216 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0xAD */ /* We convert this as double byte */ 217 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0xAE */ /* We convert this as double byte */ 218 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0xAF */ /* We convert this as double byte */ 219 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_B0+GBKOFF }, /* 0xB0 */ 220 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_B1+GBKOFF }, /* 0xB1 */ 221 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_B2+GBKOFF }, /* 0xB2 */ 222 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_B3+GBKOFF }, /* 0xB3 */ 223 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_B4+GBKOFF }, /* 0xB4 */ 224 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_B5+GBKOFF }, /* 0xB5 */ 225 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_B6+GBKOFF }, /* 0xB6 */ 226 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_B7+GBKOFF }, /* 0xB7 */ 227 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_B8+GBKOFF }, /* 0xB8 */ 228 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_B9+GBKOFF }, /* 0xB9 */ 229 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_BA+GBKOFF }, /* 0xBA */ 230 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_BB+GBKOFF }, /* 0xBB */ 231 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_BC+GBKOFF }, /* 0xBC */ 232 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_BD+GBKOFF }, /* 0xBD */ 233 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_BE+GBKOFF }, /* 0xBE */ 234 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_BF+GBKOFF }, /* 0xBF */ 235 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_C0+GBKOFF }, /* 0xC0 */ 236 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_C1+GBKOFF }, /* 0xC1 */ 237 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_C2+GBKOFF }, /* 0xC2 */ 238 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_C3+GBKOFF }, /* 0xC3 */ 239 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_C4+GBKOFF }, /* 0xC4 */ 240 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_C5+GBKOFF }, /* 0xC5 */ 241 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_C6+GBKOFF }, /* 0xC6 */ 242 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_C7+GBKOFF }, /* 0xC7 */ 243 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_C8+GBKOFF }, /* 0xC8 */ 244 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_C9+GBKOFF }, /* 0xC9 */ 245 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_CA+GBKOFF }, /* 0xCA */ 246 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_CB+GBKOFF }, /* 0xCB */ 247 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_CC+GBKOFF }, /* 0xCC */ 248 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_CD+GBKOFF }, /* 0xCD */ 249 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_CE+GBKOFF }, /* 0xCE */ 250 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_CF+GBKOFF }, /* 0xCF */ 251 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_D0+GBKOFF }, /* 0xD0 */ 252 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_D1+GBKOFF }, /* 0xD1 */ 253 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_D2+GBKOFF }, /* 0xD2 */ 254 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_D3+GBKOFF }, /* 0xD3 */ 255 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_D4+GBKOFF }, /* 0xD4 */ 256 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_D5+GBKOFF }, /* 0xD5 */ 257 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_D6+GBKOFF }, /* 0xD6 */ 258 { 0, 0xA1, 0xF9, aImplDBCSToUniTab_GBK_D7+GBKOFF }, /* 0xD7 */ 259 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_D8+GBKOFF }, /* 0xD8 */ 260 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_D9+GBKOFF }, /* 0xD9 */ 261 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_DA+GBKOFF }, /* 0xDA */ 262 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_DB+GBKOFF }, /* 0xDB */ 263 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_DC+GBKOFF }, /* 0xDC */ 264 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_DD+GBKOFF }, /* 0xDD */ 265 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_DE+GBKOFF }, /* 0xDE */ 266 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_DF+GBKOFF }, /* 0xDF */ 267 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_E0+GBKOFF }, /* 0xE0 */ 268 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_E1+GBKOFF }, /* 0xE1 */ 269 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_E2+GBKOFF }, /* 0xE2 */ 270 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_E3+GBKOFF }, /* 0xE3 */ 271 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_E4+GBKOFF }, /* 0xE4 */ 272 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_E5+GBKOFF }, /* 0xE5 */ 273 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_E6+GBKOFF }, /* 0xE6 */ 274 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_E7+GBKOFF }, /* 0xE7 */ 275 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_E8+GBKOFF }, /* 0xE8 */ 276 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_E9+GBKOFF }, /* 0xE9 */ 277 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_EA+GBKOFF }, /* 0xEA */ 278 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_EB+GBKOFF }, /* 0xEB */ 279 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_EC+GBKOFF }, /* 0xEC */ 280 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_ED+GBKOFF }, /* 0xED */ 281 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_EE+GBKOFF }, /* 0xEE */ 282 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_EF+GBKOFF }, /* 0xEF */ 283 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_F0+GBKOFF }, /* 0xF0 */ 284 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_F1+GBKOFF }, /* 0xF1 */ 285 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_F2+GBKOFF }, /* 0xF2 */ 286 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_F3+GBKOFF }, /* 0xF3 */ 287 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_F4+GBKOFF }, /* 0xF4 */ 288 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_F5+GBKOFF }, /* 0xF5 */ 289 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_F6+GBKOFF }, /* 0xF6 */ 290 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_F7+GBKOFF }, /* 0xF7 */ 291 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0xF8 */ /* We convert this as double byte */ 292 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0xF9 */ /* We convert this as double byte */ 293 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0xFA */ /* We convert this as double byte */ 294 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0xFB */ /* We convert this as double byte */ 295 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0xFC */ /* We convert this as double byte */ 296 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0xFD */ /* We convert this as double byte */ 297 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0xFE */ /* We convert this as double byte */ 298 { 0, 1, 0, NULL } /* 0xFF */ 299}; 300 301/* ----------------------------------------------------------------------- */ 302 303static ImplUniToDBCSHighTab const aGB2312DBCSHighTab[256] = 304{ 305 { 0x00, 0xFC, aImplUniToDBCSTab_GB_00 }, /* 0x00 */ 306 { 0x01, 0xDC, aImplUniToDBCSTab_GB_01 }, /* 0x01 */ 307 { 0x51, 0xC9, aImplUniToDBCSTab_GB_02 }, /* 0x02 */ 308 { 0x91, 0xC9, aImplUniToDBCSTab_GB_03 }, /* 0x03 */ 309 { 0x01, 0x51, aImplUniToDBCSTab_GB_04 }, /* 0x04 */ 310 { 1, 0, NULL }, /* 0x05 */ 311 { 1, 0, NULL }, /* 0x06 */ 312 { 1, 0, NULL }, /* 0x07 */ 313 { 1, 0, NULL }, /* 0x08 */ 314 { 1, 0, NULL }, /* 0x09 */ 315 { 1, 0, NULL }, /* 0x0A */ 316 { 1, 0, NULL }, /* 0x0B */ 317 { 1, 0, NULL }, /* 0x0C */ 318 { 1, 0, NULL }, /* 0x0D */ 319 { 1, 0, NULL }, /* 0x0E */ 320 { 1, 0, NULL }, /* 0x0F */ 321 { 1, 0, NULL }, /* 0x10 */ 322 { 1, 0, NULL }, /* 0x11 */ 323 { 1, 0, NULL }, /* 0x12 */ 324 { 1, 0, NULL }, /* 0x13 */ 325 { 1, 0, NULL }, /* 0x14 */ 326 { 1, 0, NULL }, /* 0x15 */ 327 { 1, 0, NULL }, /* 0x16 */ 328 { 1, 0, NULL }, /* 0x17 */ 329 { 1, 0, NULL }, /* 0x18 */ 330 { 1, 0, NULL }, /* 0x19 */ 331 { 1, 0, NULL }, /* 0x1A */ 332 { 1, 0, NULL }, /* 0x1B */ 333 { 1, 0, NULL }, /* 0x1C */ 334 { 1, 0, NULL }, /* 0x1D */ 335 { 0x3F, 0x3F, aImplUniToDBCSTab_APPLECHINSIMP_1E }, /* 0x1E */ /* we convert this char also to unicode */ 336 { 1, 0, NULL }, /* 0x1F */ 337 { 0x14, 0xAC, aImplUniToDBCSTab_GB_20 }, /* 0x20 */ 338 { 0x03, 0x93, aImplUniToDBCSTab_GB_21 }, /* 0x21 */ 339 { 0x08, 0xEF, aImplUniToDBCSTab_GB_22 }, /* 0x22 */ 340 { 0x12, 0x12, aImplUniToDBCSTab_GB_23 }, /* 0x23 */ 341 { 0x60, 0x9B, aImplUniToDBCSTab_GB_24 }, /* 0x24 */ 342 { 0x00, 0xCF, aImplUniToDBCSTab_GB_25 }, /* 0x25 */ 343 { 0x05, 0x42, aImplUniToDBCSTab_GB_26 }, /* 0x26 */ 344 { 1, 0, NULL }, /* 0x27 */ 345 { 1, 0, NULL }, /* 0x28 */ 346 { 1, 0, NULL }, /* 0x29 */ 347 { 1, 0, NULL }, /* 0x2A */ 348 { 1, 0, NULL }, /* 0x2B */ 349 { 1, 0, NULL }, /* 0x2C */ 350 { 1, 0, NULL }, /* 0x2D */ 351 { 1, 0, NULL }, /* 0x2E */ 352 { 1, 0, NULL }, /* 0x2F */ 353 { 0x00, 0xFB, aImplUniToDBCSTab_GB_30 }, /* 0x30 */ 354 { 0x05, 0x29, aImplUniToDBCSTab_GB_31 }, /* 0x31 */ 355 { 0x20, 0x29, aImplUniToDBCSTab_GBK_32 }, /* 0x32 */ 356 { 1, 0, NULL }, /* 0x33 */ 357 { 1, 0, NULL }, /* 0x34 */ 358 { 1, 0, NULL }, /* 0x35 */ 359 { 1, 0, NULL }, /* 0x36 */ 360 { 1, 0, NULL }, /* 0x37 */ 361 { 1, 0, NULL }, /* 0x38 */ 362 { 1, 0, NULL }, /* 0x39 */ 363 { 1, 0, NULL }, /* 0x3A */ 364 { 1, 0, NULL }, /* 0x3B */ 365 { 1, 0, NULL }, /* 0x3C */ 366 { 1, 0, NULL }, /* 0x3D */ 367 { 1, 0, NULL }, /* 0x3E */ 368 { 1, 0, NULL }, /* 0x3F */ 369 { 1, 0, NULL }, /* 0x40 */ 370 { 1, 0, NULL }, /* 0x41 */ 371 { 1, 0, NULL }, /* 0x42 */ 372 { 1, 0, NULL }, /* 0x43 */ 373 { 1, 0, NULL }, /* 0x44 */ 374 { 1, 0, NULL }, /* 0x45 */ 375 { 1, 0, NULL }, /* 0x46 */ 376 { 1, 0, NULL }, /* 0x47 */ 377 { 1, 0, NULL }, /* 0x48 */ 378 { 1, 0, NULL }, /* 0x49 */ 379 { 1, 0, NULL }, /* 0x4A */ 380 { 1, 0, NULL }, /* 0x4B */ 381 { 1, 0, NULL }, /* 0x4C */ 382 { 1, 0, NULL }, /* 0x4D */ 383 { 0x00, 0xFF, aImplUniToDBCSTab_GB_4E }, /* 0x4E */ 384 { 0x01, 0xFE, aImplUniToDBCSTab_GB_4F }, /* 0x4F */ 385 { 0x0C, 0xFB, aImplUniToDBCSTab_GB_50 }, /* 0x50 */ 386 { 0x06, 0xFF, aImplUniToDBCSTab_GB_51 }, /* 0x51 */ 387 { 0x00, 0xFF, aImplUniToDBCSTab_GB_52 }, /* 0x52 */ 388 { 0x00, 0xFD, aImplUniToDBCSTab_GB_53 }, /* 0x53 */ 389 { 0x01, 0xFF, aImplUniToDBCSTab_GB_54 }, /* 0x54 */ 390 { 0x01, 0xFE, aImplUniToDBCSTab_GB_55 }, /* 0x55 */ 391 { 0x00, 0xFF, aImplUniToDBCSTab_GB_56 }, /* 0x56 */ 392 { 0x03, 0xFD, aImplUniToDBCSTab_GB_57 }, /* 0x57 */ 393 { 0x00, 0xF9, aImplUniToDBCSTab_GB_58 }, /* 0x58 */ 394 { 0x02, 0xFF, aImplUniToDBCSTab_GB_59 }, /* 0x59 */ 395 { 0x01, 0xF1, aImplUniToDBCSTab_GB_5A }, /* 0x5A */ 396 { 0x09, 0xFF, aImplUniToDBCSTab_GB_5B }, /* 0x5B */ 397 { 0x01, 0xFB, aImplUniToDBCSTab_GB_5C }, /* 0x5C */ 398 { 0x02, 0xFE, aImplUniToDBCSTab_GB_5D }, /* 0x5D */ 399 { 0x01, 0xFF, aImplUniToDBCSTab_GB_5E }, /* 0x5E */ 400 { 0x00, 0xFF, aImplUniToDBCSTab_GB_5F }, /* 0x5F */ 401 { 0x00, 0xFA, aImplUniToDBCSTab_GB_60 }, /* 0x60 */ 402 { 0x00, 0xFF, aImplUniToDBCSTab_GB_61 }, /* 0x61 */ 403 { 0x06, 0xFF, aImplUniToDBCSTab_GB_62 }, /* 0x62 */ 404 { 0x01, 0xFF, aImplUniToDBCSTab_GB_63 }, /* 0x63 */ 405 { 0x00, 0xE6, aImplUniToDBCSTab_GB_64 }, /* 0x64 */ 406 { 0x00, 0xFA, aImplUniToDBCSTab_GB_65 }, /* 0x65 */ 407 { 0x00, 0xFF, aImplUniToDBCSTab_GB_66 }, /* 0x66 */ 408 { 0x00, 0xFF, aImplUniToDBCSTab_GB_67 }, /* 0x67 */ 409 { 0x00, 0xFC, aImplUniToDBCSTab_GB_68 }, /* 0x68 */ 410 { 0x01, 0xFF, aImplUniToDBCSTab_GB_69 }, /* 0x69 */ 411 { 0x0A, 0xAC, aImplUniToDBCSTab_GB_6A }, /* 0x6A */ 412 { 0x20, 0xFD, aImplUniToDBCSTab_GB_6B }, /* 0x6B */ 413 { 0x05, 0xFE, aImplUniToDBCSTab_GB_6C }, /* 0x6C */ 414 { 0x01, 0xFC, aImplUniToDBCSTab_GB_6D }, /* 0x6D */ 415 { 0x05, 0xF9, aImplUniToDBCSTab_GB_6E }, /* 0x6E */ 416 { 0x02, 0xEF, aImplUniToDBCSTab_GB_6F }, /* 0x6F */ 417 { 0x11, 0xFD, aImplUniToDBCSTab_GB_70 }, /* 0x70 */ 418 { 0x09, 0xF9, aImplUniToDBCSTab_GB_71 }, /* 0x71 */ 419 { 0x06, 0xFC, aImplUniToDBCSTab_GB_72 }, /* 0x72 */ 420 { 0x01, 0xF2, aImplUniToDBCSTab_GB_73 }, /* 0x73 */ 421 { 0x03, 0xFF, aImplUniToDBCSTab_GB_74 }, /* 0x74 */ 422 { 0x04, 0xFF, aImplUniToDBCSTab_GB_75 }, /* 0x75 */ 423 { 0x00, 0xFE, aImplUniToDBCSTab_GB_76 }, /* 0x76 */ 424 { 0x01, 0xFF, aImplUniToDBCSTab_GB_77 }, /* 0x77 */ 425 { 0x00, 0xFA, aImplUniToDBCSTab_GB_78 }, /* 0x78 */ 426 { 0x01, 0xFD, aImplUniToDBCSTab_GB_79 }, /* 0x79 */ 427 { 0x00, 0xFF, aImplUniToDBCSTab_GB_7A }, /* 0x7A */ 428 { 0x03, 0xFE, aImplUniToDBCSTab_GB_7B }, /* 0x7B */ 429 { 0x07, 0xFB, aImplUniToDBCSTab_GB_7C }, /* 0x7C */ 430 { 0x0A, 0xAE, aImplUniToDBCSTab_GB_7D }, /* 0x7D */ 431 { 0x3B, 0xFF, aImplUniToDBCSTab_GB_7E }, /* 0x7E */ 432 { 0x00, 0xFC, aImplUniToDBCSTab_GB_7F }, /* 0x7F */ 433 { 0x00, 0xFD, aImplUniToDBCSTab_GB_80 }, /* 0x80 */ 434 { 0x02, 0xFE, aImplUniToDBCSTab_GB_81 }, /* 0x81 */ 435 { 0x00, 0xFB, aImplUniToDBCSTab_GB_82 }, /* 0x82 */ 436 { 0x01, 0xFD, aImplUniToDBCSTab_GB_83 }, /* 0x83 */ 437 { 0x01, 0xFF, aImplUniToDBCSTab_GB_84 }, /* 0x84 */ 438 { 0x0C, 0xFF, aImplUniToDBCSTab_GB_85 }, /* 0x85 */ 439 { 0x05, 0xFE, aImplUniToDBCSTab_GB_86 }, /* 0x86 */ 440 { 0x00, 0xFE, aImplUniToDBCSTab_GB_87 }, /* 0x87 */ 441 { 0x03, 0xFE, aImplUniToDBCSTab_GB_88 }, /* 0x88 */ 442 { 0x02, 0xF3, aImplUniToDBCSTab_GB_89 }, /* 0x89 */ 443 { 0x00, 0x93, aImplUniToDBCSTab_GB_8A }, /* 0x8A */ 444 { 0x07, 0xFF, aImplUniToDBCSTab_GB_8B }, /* 0x8B */ 445 { 0x00, 0x98, aImplUniToDBCSTab_GB_8C }, /* 0x8C */ 446 { 0x1D, 0xFD, aImplUniToDBCSTab_GB_8D }, /* 0x8D */ 447 { 0x05, 0xCE, aImplUniToDBCSTab_GB_8E }, /* 0x8E */ 448 { 0x66, 0xFD, aImplUniToDBCSTab_GB_8F }, /* 0x8F */ 449 { 0x00, 0xFE, aImplUniToDBCSTab_GB_90 }, /* 0x90 */ 450 { 0x02, 0xDC, aImplUniToDBCSTab_GB_91 }, /* 0x91 */ 451 { 0x74, 0xC8, aImplUniToDBCSTab_GB_92 }, /* 0x92 */ 452 { 0x3E, 0xD6, aImplUniToDBCSTab_GB_93 }, /* 0x93 */ 453 { 0x3E, 0xFF, aImplUniToDBCSTab_GB_94 }, /* 0x94 */ 454 { 0x00, 0xFE, aImplUniToDBCSTab_GB_95 }, /* 0x95 */ 455 { 0x00, 0xFE, aImplUniToDBCSTab_GB_96 }, /* 0x96 */ 456 { 0x00, 0xF6, aImplUniToDBCSTab_GB_97 }, /* 0x97 */ 457 { 0x75, 0xE9, aImplUniToDBCSTab_GB_98 }, /* 0x98 */ 458 { 0x0D, 0xA8, aImplUniToDBCSTab_GB_99 }, /* 0x99 */ 459 { 0x6C, 0xFB, aImplUniToDBCSTab_GB_9A }, /* 0x9A */ 460 { 0x03, 0x54, aImplUniToDBCSTab_GB_9B }, /* 0x9B */ 461 { 0x7C, 0xE2, aImplUniToDBCSTab_GB_9C }, /* 0x9C */ 462 { 1, 0, NULL }, /* 0x9D */ 463 { 0x1F, 0xFE, aImplUniToDBCSTab_GB_9E }, /* 0x9E */ 464 { 0x0B, 0xA0, aImplUniToDBCSTab_GB_9F }, /* 0x9F */ 465 { 1, 0, NULL }, /* 0xA0 */ 466 { 1, 0, NULL }, /* 0xA1 */ 467 { 1, 0, NULL }, /* 0xA2 */ 468 { 1, 0, NULL }, /* 0xA3 */ 469 { 1, 0, NULL }, /* 0xA4 */ 470 { 1, 0, NULL }, /* 0xA5 */ 471 { 1, 0, NULL }, /* 0xA6 */ 472 { 1, 0, NULL }, /* 0xA7 */ 473 { 1, 0, NULL }, /* 0xA8 */ 474 { 1, 0, NULL }, /* 0xA9 */ 475 { 1, 0, NULL }, /* 0xAA */ 476 { 1, 0, NULL }, /* 0xAB */ 477 { 1, 0, NULL }, /* 0xAC */ 478 { 1, 0, NULL }, /* 0xAD */ 479 { 1, 0, NULL }, /* 0xAE */ 480 { 1, 0, NULL }, /* 0xAF */ 481 { 1, 0, NULL }, /* 0xB0 */ 482 { 1, 0, NULL }, /* 0xB1 */ 483 { 1, 0, NULL }, /* 0xB2 */ 484 { 1, 0, NULL }, /* 0xB3 */ 485 { 1, 0, NULL }, /* 0xB4 */ 486 { 1, 0, NULL }, /* 0xB5 */ 487 { 1, 0, NULL }, /* 0xB6 */ 488 { 1, 0, NULL }, /* 0xB7 */ 489 { 1, 0, NULL }, /* 0xB8 */ 490 { 1, 0, NULL }, /* 0xB9 */ 491 { 1, 0, NULL }, /* 0xBA */ 492 { 1, 0, NULL }, /* 0xBB */ 493 { 1, 0, NULL }, /* 0xBC */ 494 { 1, 0, NULL }, /* 0xBD */ 495 { 1, 0, NULL }, /* 0xBE */ 496 { 1, 0, NULL }, /* 0xBF */ 497 { 1, 0, NULL }, /* 0xC0 */ 498 { 1, 0, NULL }, /* 0xC1 */ 499 { 1, 0, NULL }, /* 0xC2 */ 500 { 1, 0, NULL }, /* 0xC3 */ 501 { 1, 0, NULL }, /* 0xC4 */ 502 { 1, 0, NULL }, /* 0xC5 */ 503 { 1, 0, NULL }, /* 0xC6 */ 504 { 1, 0, NULL }, /* 0xC7 */ 505 { 1, 0, NULL }, /* 0xC8 */ 506 { 1, 0, NULL }, /* 0xC9 */ 507 { 1, 0, NULL }, /* 0xCA */ 508 { 1, 0, NULL }, /* 0xCB */ 509 { 1, 0, NULL }, /* 0xCC */ 510 { 1, 0, NULL }, /* 0xCD */ 511 { 1, 0, NULL }, /* 0xCE */ 512 { 1, 0, NULL }, /* 0xCF */ 513 { 1, 0, NULL }, /* 0xD0 */ 514 { 1, 0, NULL }, /* 0xD1 */ 515 { 1, 0, NULL }, /* 0xD2 */ 516 { 1, 0, NULL }, /* 0xD3 */ 517 { 1, 0, NULL }, /* 0xD4 */ 518 { 1, 0, NULL }, /* 0xD5 */ 519 { 1, 0, NULL }, /* 0xD6 */ 520 { 1, 0, NULL }, /* 0xD7 */ 521 { 1, 0, NULL }, /* 0xD8 */ 522 { 1, 0, NULL }, /* 0xD9 */ 523 { 1, 0, NULL }, /* 0xDA */ 524 { 1, 0, NULL }, /* 0xDB */ 525 { 1, 0, NULL }, /* 0xDC */ 526 { 1, 0, NULL }, /* 0xDD */ 527 { 1, 0, NULL }, /* 0xDE */ 528 { 1, 0, NULL }, /* 0xDF */ 529 { 1, 0, NULL }, /* 0xE0 */ 530 { 1, 0, NULL }, /* 0xE1 */ 531 { 1, 0, NULL }, /* 0xE2 */ 532 { 1, 0, NULL }, /* 0xE3 */ 533 { 1, 0, NULL }, /* 0xE4 */ 534 { 1, 0, NULL }, /* 0xE5 */ 535 { 1, 0, NULL }, /* 0xE6 */ 536 { 1, 0, NULL }, /* 0xE7 */ 537 { 1, 0, NULL }, /* 0xE8 */ 538 { 1, 0, NULL }, /* 0xE9 */ 539 { 1, 0, NULL }, /* 0xEA */ 540 { 1, 0, NULL }, /* 0xEB */ 541 { 1, 0, NULL }, /* 0xEC */ 542 { 1, 0, NULL }, /* 0xED */ 543 { 1, 0, NULL }, /* 0xEE */ 544 { 1, 0, NULL }, /* 0xEF */ 545 { 1, 0, NULL }, /* 0xF0 */ 546 { 1, 0, NULL }, /* 0xF1 */ 547 { 1, 0, NULL }, /* 0xF2 */ 548 { 1, 0, NULL }, /* 0xF3 */ 549 { 1, 0, NULL }, /* 0xF4 */ 550 { 1, 0, NULL }, /* 0xF5 */ 551 { 1, 0, NULL }, /* 0xF6 */ 552 { 1, 0, NULL }, /* 0xF7 */ 553 { 1, 0, NULL }, /* 0xF8 */ 554 { 1, 0, NULL }, /* 0xF9 */ 555 { 1, 0, NULL }, /* 0xFA */ 556 { 1, 0, NULL }, /* 0xFB */ 557 { 1, 0, NULL }, /* 0xFC */ 558 { 1, 0, NULL }, /* 0xFD */ 559 { 0x31, 0x44, aImplUniToDBCSTab_GB_FE }, /* 0xFE */ 560 { 0x01, 0xE5, aImplUniToDBCSTab_GB_FF } /* 0xFF */ 561}; 562 563/* ----------------------------------------------------------------------- */ 564 565/* F8A1-FEFE --> E000-E29F */ 566/* AAA1-AFFE --> E2A0-E4DF */ 567 568#define DBCS_EUDC_MS936_COUNT 2 569static ImplDBCSEUDCData const aImplMS936DBCSEUDCTab[DBCS_EUDC_MS936_COUNT] = 570{ 571 /* EUDC-Range (the mapping defined by MS is A0-FF, because the */ 572 /* unicode range is E000-E29F and E2A0-E4DF) */ 573 /* Lead: F8-FE */ 574 /* Trail: A1-FE */ 575 { 0xF8, 0xFE, 0xA0, 0xFF, 0, 0, 0, 0, 1, 0x60, 0xE000, 0xE29F }, 576 /* Lead: AA-AF */ 577 /* Trail: A1-FE */ 578 { 0xAA, 0xAF, 0xA0, 0xFF, 0, 0, 0, 0, 1, 0x60, 0xE2A0, 0xE4DF } 579}; 580 581/* ----------------------------------------------------------------------- */ 582 583static ImplDBCSConvertData const aImplGB2312DBCSCvtData = 584{ 585 aGB2312UniLeadTab, 586 aGB2312DBCSHighTab, 587 0x00, 0xFF, 588 0xA1, 0xFE, 589 aImplMS936DBCSEUDCTab, 590 DBCS_EUDC_MS936_COUNT 591}; 592 593/* ----------------------------------------------------------------------- */ 594 595static ImplTextEncodingData const aImplGB2312TextEncodingData 596 = { { &aImplGB2312DBCSCvtData, 597 ImplDBCSToUnicode, 598 ImplUnicodeToDBCS, 599 NULL, 600 NULL, 601 NULL, 602 NULL, 603 NULL, 604 NULL }, 605 1, 606 2, 607 2, 608 134, 609 "euc-cn", 610 "gb2312", 611 RTL_TEXTENCODING_INFO_ASCII 612 | RTL_TEXTENCODING_INFO_MULTIBYTE 613 | RTL_TEXTENCODING_INFO_MIME }; 614 /* SCRIPT_CHINESE_SIMPLIFIED, pc code page 936, mac encoding 25 */ 615 616/* ======================================================================= */ 617 618static ImplTextEncodingData const aImplEUCCNTextEncodingData 619 = { { &aImplGB2312DBCSCvtData, 620 ImplDBCSToUnicode, 621 ImplUnicodeToDBCS, 622 NULL, 623 NULL, 624 NULL, 625 NULL, 626 NULL, 627 NULL }, 628 1, 629 2, 630 2, 631 134, 632 "euc-cn", 633 "gb2312", 634 RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MULTIBYTE }; 635 /* SCRIPT_CHINESE_SIMPLIFIED, pc code page 936, mac encoding 25 */ 636 637/* ======================================================================= */ 638 639static ImplDBCSToUniLeadTab const aGBT12345UniLeadTab[256] = 640{ 641 { 0x0000, 0, 0, NULL }, /* 0x00 */ 642 { 0x0001, 0, 0, NULL }, /* 0x01 */ 643 { 0x0002, 0, 0, NULL }, /* 0x02 */ 644 { 0x0003, 0, 0, NULL }, /* 0x03 */ 645 { 0x0004, 0, 0, NULL }, /* 0x04 */ 646 { 0x0005, 0, 0, NULL }, /* 0x05 */ 647 { 0x0006, 0, 0, NULL }, /* 0x06 */ 648 { 0x0007, 0, 0, NULL }, /* 0x07 */ 649 { 0x0008, 0, 0, NULL }, /* 0x08 */ 650 { 0x0009, 0, 0, NULL }, /* 0x09 */ 651 { 0x000A, 0, 0, NULL }, /* 0x0A */ 652 { 0x000B, 0, 0, NULL }, /* 0x0B */ 653 { 0x000C, 0, 0, NULL }, /* 0x0C */ 654 { 0x000D, 0, 0, NULL }, /* 0x0D */ 655 { 0x000E, 0, 0, NULL }, /* 0x0E */ 656 { 0x000F, 0, 0, NULL }, /* 0x0F */ 657 { 0x0010, 0, 0, NULL }, /* 0x10 */ 658 { 0x0011, 0, 0, NULL }, /* 0x11 */ 659 { 0x0012, 0, 0, NULL }, /* 0x12 */ 660 { 0x0013, 0, 0, NULL }, /* 0x13 */ 661 { 0x0014, 0, 0, NULL }, /* 0x14 */ 662 { 0x0015, 0, 0, NULL }, /* 0x15 */ 663 { 0x0016, 0, 0, NULL }, /* 0x16 */ 664 { 0x0017, 0, 0, NULL }, /* 0x17 */ 665 { 0x0018, 0, 0, NULL }, /* 0x18 */ 666 { 0x0019, 0, 0, NULL }, /* 0x19 */ 667 { 0x001A, 0, 0, NULL }, /* 0x1A */ 668 { 0x001B, 0, 0, NULL }, /* 0x1B */ 669 { 0x001C, 0, 0, NULL }, /* 0x1C */ 670 { 0x001D, 0, 0, NULL }, /* 0x1D */ 671 { 0x001E, 0, 0, NULL }, /* 0x1E */ 672 { 0x001F, 0, 0, NULL }, /* 0x1F */ 673 { 0x0020, 0, 0, NULL }, /* 0x20 */ 674 { 0x0021, 0, 0, NULL }, /* 0x21 */ 675 { 0x0022, 0, 0, NULL }, /* 0x22 */ 676 { 0x0023, 0, 0, NULL }, /* 0x23 */ 677 { 0x0024, 0, 0, NULL }, /* 0x24 */ 678 { 0x0025, 0, 0, NULL }, /* 0x25 */ 679 { 0x0026, 0, 0, NULL }, /* 0x26 */ 680 { 0x0027, 0, 0, NULL }, /* 0x27 */ 681 { 0x0028, 0, 0, NULL }, /* 0x28 */ 682 { 0x0029, 0, 0, NULL }, /* 0x29 */ 683 { 0x002A, 0, 0, NULL }, /* 0x2A */ 684 { 0x002B, 0, 0, NULL }, /* 0x2B */ 685 { 0x002C, 0, 0, NULL }, /* 0x2C */ 686 { 0x002D, 0, 0, NULL }, /* 0x2D */ 687 { 0x002E, 0, 0, NULL }, /* 0x2E */ 688 { 0x002F, 0, 0, NULL }, /* 0x2F */ 689 { 0x0030, 0, 0, NULL }, /* 0x30 */ 690 { 0x0031, 0, 0, NULL }, /* 0x31 */ 691 { 0x0032, 0, 0, NULL }, /* 0x32 */ 692 { 0x0033, 0, 0, NULL }, /* 0x33 */ 693 { 0x0034, 0, 0, NULL }, /* 0x34 */ 694 { 0x0035, 0, 0, NULL }, /* 0x35 */ 695 { 0x0036, 0, 0, NULL }, /* 0x36 */ 696 { 0x0037, 0, 0, NULL }, /* 0x37 */ 697 { 0x0038, 0, 0, NULL }, /* 0x38 */ 698 { 0x0039, 0, 0, NULL }, /* 0x39 */ 699 { 0x003A, 0, 0, NULL }, /* 0x3A */ 700 { 0x003B, 0, 0, NULL }, /* 0x3B */ 701 { 0x003C, 0, 0, NULL }, /* 0x3C */ 702 { 0x003D, 0, 0, NULL }, /* 0x3D */ 703 { 0x003E, 0, 0, NULL }, /* 0x3E */ 704 { 0x003F, 0, 0, NULL }, /* 0x3F */ 705 { 0x0040, 0, 0, NULL }, /* 0x40 */ 706 { 0x0041, 0, 0, NULL }, /* 0x41 */ 707 { 0x0042, 0, 0, NULL }, /* 0x42 */ 708 { 0x0043, 0, 0, NULL }, /* 0x43 */ 709 { 0x0044, 0, 0, NULL }, /* 0x44 */ 710 { 0x0045, 0, 0, NULL }, /* 0x45 */ 711 { 0x0046, 0, 0, NULL }, /* 0x46 */ 712 { 0x0047, 0, 0, NULL }, /* 0x47 */ 713 { 0x0048, 0, 0, NULL }, /* 0x48 */ 714 { 0x0049, 0, 0, NULL }, /* 0x49 */ 715 { 0x004A, 0, 0, NULL }, /* 0x4A */ 716 { 0x004B, 0, 0, NULL }, /* 0x4B */ 717 { 0x004C, 0, 0, NULL }, /* 0x4C */ 718 { 0x004D, 0, 0, NULL }, /* 0x4D */ 719 { 0x004E, 0, 0, NULL }, /* 0x4E */ 720 { 0x004F, 0, 0, NULL }, /* 0x4F */ 721 { 0x0050, 0, 0, NULL }, /* 0x50 */ 722 { 0x0051, 0, 0, NULL }, /* 0x51 */ 723 { 0x0052, 0, 0, NULL }, /* 0x52 */ 724 { 0x0053, 0, 0, NULL }, /* 0x53 */ 725 { 0x0054, 0, 0, NULL }, /* 0x54 */ 726 { 0x0055, 0, 0, NULL }, /* 0x55 */ 727 { 0x0056, 0, 0, NULL }, /* 0x56 */ 728 { 0x0057, 0, 0, NULL }, /* 0x57 */ 729 { 0x0058, 0, 0, NULL }, /* 0x58 */ 730 { 0x0059, 0, 0, NULL }, /* 0x59 */ 731 { 0x005A, 0, 0, NULL }, /* 0x5A */ 732 { 0x005B, 0, 0, NULL }, /* 0x5B */ 733 { 0x005C, 0, 0, NULL }, /* 0x5C */ 734 { 0x005D, 0, 0, NULL }, /* 0x5D */ 735 { 0x005E, 0, 0, NULL }, /* 0x5E */ 736 { 0x005F, 0, 0, NULL }, /* 0x5F */ 737 { 0x0060, 0, 0, NULL }, /* 0x60 */ 738 { 0x0061, 0, 0, NULL }, /* 0x61 */ 739 { 0x0062, 0, 0, NULL }, /* 0x62 */ 740 { 0x0063, 0, 0, NULL }, /* 0x63 */ 741 { 0x0064, 0, 0, NULL }, /* 0x64 */ 742 { 0x0065, 0, 0, NULL }, /* 0x65 */ 743 { 0x0066, 0, 0, NULL }, /* 0x66 */ 744 { 0x0067, 0, 0, NULL }, /* 0x67 */ 745 { 0x0068, 0, 0, NULL }, /* 0x68 */ 746 { 0x0069, 0, 0, NULL }, /* 0x69 */ 747 { 0x006A, 0, 0, NULL }, /* 0x6A */ 748 { 0x006B, 0, 0, NULL }, /* 0x6B */ 749 { 0x006C, 0, 0, NULL }, /* 0x6C */ 750 { 0x006D, 0, 0, NULL }, /* 0x6D */ 751 { 0x006E, 0, 0, NULL }, /* 0x6E */ 752 { 0x006F, 0, 0, NULL }, /* 0x6F */ 753 { 0x0070, 0, 0, NULL }, /* 0x70 */ 754 { 0x0071, 0, 0, NULL }, /* 0x71 */ 755 { 0x0072, 0, 0, NULL }, /* 0x72 */ 756 { 0x0073, 0, 0, NULL }, /* 0x73 */ 757 { 0x0074, 0, 0, NULL }, /* 0x74 */ 758 { 0x0075, 0, 0, NULL }, /* 0x75 */ 759 { 0x0076, 0, 0, NULL }, /* 0x76 */ 760 { 0x0077, 0, 0, NULL }, /* 0x77 */ 761 { 0x0078, 0, 0, NULL }, /* 0x78 */ 762 { 0x0079, 0, 0, NULL }, /* 0x79 */ 763 { 0x007A, 0, 0, NULL }, /* 0x7A */ 764 { 0x007B, 0, 0, NULL }, /* 0x7B */ 765 { 0x007C, 0, 0, NULL }, /* 0x7C */ 766 { 0x007D, 0, 0, NULL }, /* 0x7D */ 767 { 0x007E, 0, 0, NULL }, /* 0x7E */ 768 { 0x007F, 0, 0, NULL }, /* 0x7F */ 769 { 0x20AC, 0, 0, NULL }, /* 0x80 */ 770 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x81 */ /* We convert this as double byte */ 771 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x82 */ /* We convert this as double byte */ 772 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x83 */ /* We convert this as double byte */ 773 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x84 */ /* We convert this as double byte */ 774 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x85 */ /* We convert this as double byte */ 775 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x86 */ /* We convert this as double byte */ 776 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x87 */ /* We convert this as double byte */ 777 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x88 */ /* We convert this as double byte */ 778 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x89 */ /* We convert this as double byte */ 779 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x8A */ /* We convert this as double byte */ 780 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x8B */ /* We convert this as double byte */ 781 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x8C */ /* We convert this as double byte */ 782 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x8D */ /* We convert this as double byte */ 783 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x8E */ /* We convert this as double byte */ 784 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x8F */ /* We convert this as double byte */ 785 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x90 */ /* We convert this as double byte */ 786 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x91 */ /* We convert this as double byte */ 787 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x92 */ /* We convert this as double byte */ 788 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x93 */ /* We convert this as double byte */ 789 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x94 */ /* We convert this as double byte */ 790 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x95 */ /* We convert this as double byte */ 791 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x96 */ /* We convert this as double byte */ 792 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x97 */ /* We convert this as double byte */ 793 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x98 */ /* We convert this as double byte */ 794 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x99 */ /* We convert this as double byte */ 795 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x9A */ /* We convert this as double byte */ 796 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x9B */ /* We convert this as double byte */ 797 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x9C */ /* We convert this as double byte */ 798 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x9D */ /* We convert this as double byte */ 799 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x9E */ /* We convert this as double byte */ 800 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x9F */ /* We convert this as double byte */ 801 { 0, 1, 0, NULL }, /* 0xA0 */ 802 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GB_A1 }, /* 0xA1 */ 803 { 0, 0xA1, 0xFC, aImplDBCSToUniTab_GB_A2 }, /* 0xA2 */ 804 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GB_A3 }, /* 0xA3 */ 805 { 0, 0xA1, 0xF3, aImplDBCSToUniTab_GB_A4 }, /* 0xA4 */ 806 { 0, 0xA1, 0xF6, aImplDBCSToUniTab_GB_A5 }, /* 0xA5 */ 807 { 0, 0xA1, 0xF5, aImplDBCSToUniTab_GB_A6 }, /* 0xA6 */ 808 { 0, 0xA1, 0xF1, aImplDBCSToUniTab_GB_A7 }, /* 0xA7 */ 809 { 0, 0xA1, 0xE9, aImplDBCSToUniTab_GBK_A8+GBKOFF }, /* 0xA8 */ 810 { 0, 0xA1, 0xEF, aImplDBCSToUniTab_GBK_A9+GBKOFF }, /* 0xA9 */ 811 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0xAA */ /* We convert this as double byte */ 812 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0xAB */ /* We convert this as double byte */ 813 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0xAC */ /* We convert this as double byte */ 814 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0xAD */ /* We convert this as double byte */ 815 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0xAE */ /* We convert this as double byte */ 816 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0xAF */ /* We convert this as double byte */ 817 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_B0 }, /* 0xB0 */ 818 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_B1 }, /* 0xB1 */ 819 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_B2 }, /* 0xB2 */ 820 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_B3 }, /* 0xB3 */ 821 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_B4 }, /* 0xB4 */ 822 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_B5 }, /* 0xB5 */ 823 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_B6 }, /* 0xB6 */ 824 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_B7 }, /* 0xB7 */ 825 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_B8 }, /* 0xB8 */ 826 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_B9 }, /* 0xB9 */ 827 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_BA }, /* 0xBA */ 828 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_BB }, /* 0xBB */ 829 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_BC }, /* 0xBC */ 830 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_BD }, /* 0xBD */ 831 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_BE }, /* 0xBE */ 832 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_BF }, /* 0xBF */ 833 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_C0 }, /* 0xC0 */ 834 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_C1 }, /* 0xC1 */ 835 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_C2 }, /* 0xC2 */ 836 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_C3 }, /* 0xC3 */ 837 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_C4 }, /* 0xC4 */ 838 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_C5 }, /* 0xC5 */ 839 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_C6 }, /* 0xC6 */ 840 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_C7 }, /* 0xC7 */ 841 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_C8 }, /* 0xC8 */ 842 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_C9 }, /* 0xC9 */ 843 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_CA }, /* 0xCA */ 844 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_CB }, /* 0xCB */ 845 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_CC }, /* 0xCC */ 846 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_CD }, /* 0xCD */ 847 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_CE }, /* 0xCE */ 848 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_CF }, /* 0xCF */ 849 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_D0 }, /* 0xD0 */ 850 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_D1 }, /* 0xD1 */ 851 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_D2 }, /* 0xD2 */ 852 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_D3 }, /* 0xD3 */ 853 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_D4 }, /* 0xD4 */ 854 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_D5 }, /* 0xD5 */ 855 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_D6 }, /* 0xD6 */ 856 { 0, 0xA1, 0xF9, aImplDBCSToUniTab_GBT_D7 }, /* 0xD7 */ 857 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_D8 }, /* 0xD8 */ 858 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_D9 }, /* 0xD9 */ 859 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_DA }, /* 0xDA */ 860 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_DB }, /* 0xDB */ 861 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_DC }, /* 0xDC */ 862 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_DD }, /* 0xDD */ 863 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_DE }, /* 0xDE */ 864 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_DF }, /* 0xDF */ 865 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_E0 }, /* 0xE0 */ 866 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_E1 }, /* 0xE1 */ 867 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_E2 }, /* 0xE2 */ 868 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_E3 }, /* 0xE3 */ 869 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_E4 }, /* 0xE4 */ 870 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_E5 }, /* 0xE5 */ 871 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_E6 }, /* 0xE6 */ 872 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_E7 }, /* 0xE7 */ 873 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_E8 }, /* 0xE8 */ 874 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_E9 }, /* 0xE9 */ 875 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_EA }, /* 0xEA */ 876 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_EB }, /* 0xEB */ 877 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_EC }, /* 0xEC */ 878 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_ED }, /* 0xED */ 879 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_EE }, /* 0xEE */ 880 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_EF }, /* 0xEF */ 881 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_F0 }, /* 0xF0 */ 882 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_F1 }, /* 0xF1 */ 883 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_F2 }, /* 0xF2 */ 884 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_F3 }, /* 0xF3 */ 885 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_F4 }, /* 0xF4 */ 886 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_F5 }, /* 0xF5 */ 887 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_F6 }, /* 0xF6 */ 888 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_F7 }, /* 0xF7 */ 889 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBT_F8 }, /* 0xF8 */ 890 { 0, 0xA1, 0xA9, aImplDBCSToUniTab_GBT_F9 }, /* 0xF9 */ 891 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0xFA */ /* We convert this as double byte */ 892 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0xFB */ /* We convert this as double byte */ 893 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0xFC */ /* We convert this as double byte */ 894 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0xFD */ /* We convert this as double byte */ 895 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0xFE */ /* We convert this as double byte */ 896 { 0, 1, 0, NULL } /* 0xFF */ 897}; 898 899/* ----------------------------------------------------------------------- */ 900 901static ImplUniToDBCSHighTab const aGBT12345DBCSHighTab[256] = 902{ 903 { 0x00, 0xFC, aImplUniToDBCSTab_GB_00 }, /* 0x00 */ 904 { 0x01, 0xDC, aImplUniToDBCSTab_GB_01 }, /* 0x01 */ 905 { 0x51, 0xC9, aImplUniToDBCSTab_GB_02 }, /* 0x02 */ 906 { 0x91, 0xC9, aImplUniToDBCSTab_GB_03 }, /* 0x03 */ 907 { 0x01, 0x51, aImplUniToDBCSTab_GB_04 }, /* 0x04 */ 908 { 1, 0, NULL }, /* 0x05 */ 909 { 1, 0, NULL }, /* 0x06 */ 910 { 1, 0, NULL }, /* 0x07 */ 911 { 1, 0, NULL }, /* 0x08 */ 912 { 1, 0, NULL }, /* 0x09 */ 913 { 1, 0, NULL }, /* 0x0A */ 914 { 1, 0, NULL }, /* 0x0B */ 915 { 1, 0, NULL }, /* 0x0C */ 916 { 1, 0, NULL }, /* 0x0D */ 917 { 1, 0, NULL }, /* 0x0E */ 918 { 1, 0, NULL }, /* 0x0F */ 919 { 1, 0, NULL }, /* 0x10 */ 920 { 1, 0, NULL }, /* 0x11 */ 921 { 1, 0, NULL }, /* 0x12 */ 922 { 1, 0, NULL }, /* 0x13 */ 923 { 1, 0, NULL }, /* 0x14 */ 924 { 1, 0, NULL }, /* 0x15 */ 925 { 1, 0, NULL }, /* 0x16 */ 926 { 1, 0, NULL }, /* 0x17 */ 927 { 1, 0, NULL }, /* 0x18 */ 928 { 1, 0, NULL }, /* 0x19 */ 929 { 1, 0, NULL }, /* 0x1A */ 930 { 1, 0, NULL }, /* 0x1B */ 931 { 1, 0, NULL }, /* 0x1C */ 932 { 1, 0, NULL }, /* 0x1D */ 933 { 0x3F, 0x3F, aImplUniToDBCSTab_APPLECHINSIMP_1E }, /* 0x1E */ /* we convert this char also to unicode */ 934 { 1, 0, NULL }, /* 0x1F */ 935 { 0x14, 0xAC, aImplUniToDBCSTab_GB_20 }, /* 0x20 */ 936 { 0x03, 0x93, aImplUniToDBCSTab_GB_21 }, /* 0x21 */ 937 { 0x08, 0xEF, aImplUniToDBCSTab_GB_22 }, /* 0x22 */ 938 { 0x12, 0x12, aImplUniToDBCSTab_GB_23 }, /* 0x23 */ 939 { 0x60, 0x9B, aImplUniToDBCSTab_GB_24 }, /* 0x24 */ 940 { 0x00, 0xCF, aImplUniToDBCSTab_GB_25 }, /* 0x25 */ 941 { 0x05, 0x42, aImplUniToDBCSTab_GB_26 }, /* 0x26 */ 942 { 1, 0, NULL }, /* 0x27 */ 943 { 1, 0, NULL }, /* 0x28 */ 944 { 1, 0, NULL }, /* 0x29 */ 945 { 1, 0, NULL }, /* 0x2A */ 946 { 1, 0, NULL }, /* 0x2B */ 947 { 1, 0, NULL }, /* 0x2C */ 948 { 1, 0, NULL }, /* 0x2D */ 949 { 1, 0, NULL }, /* 0x2E */ 950 { 1, 0, NULL }, /* 0x2F */ 951 { 0x00, 0xFB, aImplUniToDBCSTab_GB_30 }, /* 0x30 */ 952 { 0x05, 0x29, aImplUniToDBCSTab_GB_31 }, /* 0x31 */ 953 { 0x20, 0x29, aImplUniToDBCSTab_GBK_32 }, /* 0x32 */ 954 { 1, 0, NULL }, /* 0x33 */ 955 { 1, 0, NULL }, /* 0x34 */ 956 { 1, 0, NULL }, /* 0x35 */ 957 { 1, 0, NULL }, /* 0x36 */ 958 { 1, 0, NULL }, /* 0x37 */ 959 { 1, 0, NULL }, /* 0x38 */ 960 { 1, 0, NULL }, /* 0x39 */ 961 { 1, 0, NULL }, /* 0x3A */ 962 { 1, 0, NULL }, /* 0x3B */ 963 { 1, 0, NULL }, /* 0x3C */ 964 { 1, 0, NULL }, /* 0x3D */ 965 { 1, 0, NULL }, /* 0x3E */ 966 { 1, 0, NULL }, /* 0x3F */ 967 { 1, 0, NULL }, /* 0x40 */ 968 { 1, 0, NULL }, /* 0x41 */ 969 { 1, 0, NULL }, /* 0x42 */ 970 { 1, 0, NULL }, /* 0x43 */ 971 { 1, 0, NULL }, /* 0x44 */ 972 { 1, 0, NULL }, /* 0x45 */ 973 { 1, 0, NULL }, /* 0x46 */ 974 { 1, 0, NULL }, /* 0x47 */ 975 { 1, 0, NULL }, /* 0x48 */ 976 { 1, 0, NULL }, /* 0x49 */ 977 { 1, 0, NULL }, /* 0x4A */ 978 { 1, 0, NULL }, /* 0x4B */ 979 { 1, 0, NULL }, /* 0x4C */ 980 { 1, 0, NULL }, /* 0x4D */ 981 { 0x00, 0xFF, aImplUniToDBCSTab_GBT_4E }, /* 0x4E */ 982 { 0x01, 0xFE, aImplUniToDBCSTab_GBT_4F }, /* 0x4F */ 983 { 0x00, 0xFB, aImplUniToDBCSTab_GBT_50 }, /* 0x50 */ 984 { 0x00, 0xFD, aImplUniToDBCSTab_GBT_51 }, /* 0x51 */ 985 { 0x00, 0xFF, aImplUniToDBCSTab_GBT_52 }, /* 0x52 */ 986 { 0x00, 0xFC, aImplUniToDBCSTab_GBT_53 }, /* 0x53 */ 987 { 0x01, 0xFF, aImplUniToDBCSTab_GBT_54 }, /* 0x54 */ 988 { 0x01, 0xFE, aImplUniToDBCSTab_GBT_55 }, /* 0x55 */ 989 { 0x00, 0xFF, aImplUniToDBCSTab_GBT_56 }, /* 0x56 */ 990 { 0x03, 0xFD, aImplUniToDBCSTab_GBT_57 }, /* 0x57 */ 991 { 0x00, 0xFD, aImplUniToDBCSTab_GBT_58 }, /* 0x58 */ 992 { 0x02, 0xFF, aImplUniToDBCSTab_GBT_59 }, /* 0x59 */ 993 { 0x01, 0xFB, aImplUniToDBCSTab_GBT_5A }, /* 0x5A */ 994 { 0x00, 0xFA, aImplUniToDBCSTab_GBT_5B }, /* 0x5B */ 995 { 0x01, 0xFD, aImplUniToDBCSTab_GBT_5C }, /* 0x5C */ 996 { 0x06, 0xFE, aImplUniToDBCSTab_GBT_5D }, /* 0x5D */ 997 { 0x02, 0xFF, aImplUniToDBCSTab_GBT_5E }, /* 0x5E */ 998 { 0x01, 0xFF, aImplUniToDBCSTab_GBT_5F }, /* 0x5F */ 999 { 0x0A, 0xFB, aImplUniToDBCSTab_GBT_60 }, /* 0x60 */ 1000 { 0x00, 0xFF, aImplUniToDBCSTab_GBT_61 }, /* 0x61 */ 1001 { 0x00, 0xFF, aImplUniToDBCSTab_GBT_62 }, /* 0x62 */ 1002 { 0x01, 0xF8, aImplUniToDBCSTab_GBT_63 }, /* 0x63 */ 1003 { 0x0B, 0xFE, aImplUniToDBCSTab_GBT_64 }, /* 0x64 */ 1004 { 0x00, 0xFA, aImplUniToDBCSTab_GBT_65 }, /* 0x65 */ 1005 { 0x00, 0xFF, aImplUniToDBCSTab_GBT_66 }, /* 0x66 */ 1006 { 0x00, 0xFF, aImplUniToDBCSTab_GBT_67 }, /* 0x67 */ 1007 { 0x00, 0xFC, aImplUniToDBCSTab_GBT_68 }, /* 0x68 */ 1008 { 0x01, 0xFF, aImplUniToDBCSTab_GBT_69 }, /* 0x69 */ 1009 { 0x01, 0xFB, aImplUniToDBCSTab_GBT_6A }, /* 0x6A */ 1010 { 0x04, 0xFF, aImplUniToDBCSTab_GBT_6B }, /* 0x6B */ 1011 { 0x05, 0xF5, aImplUniToDBCSTab_GBT_6C }, /* 0x6C */ 1012 { 0x04, 0xFC, aImplUniToDBCSTab_GBT_6D }, /* 0x6D */ 1013 { 0x05, 0xFF, aImplUniToDBCSTab_GBT_6E }, /* 0x6E */ 1014 { 0x01, 0xFE, aImplUniToDBCSTab_GBT_6F }, /* 0x6F */ 1015 { 0x05, 0xFD, aImplUniToDBCSTab_GBT_70 }, /* 0x70 */ 1016 { 0x09, 0xFE, aImplUniToDBCSTab_GBT_71 }, /* 0x71 */ 1017 { 0x06, 0xFD, aImplUniToDBCSTab_GBT_72 }, /* 0x72 */ 1018 { 0x01, 0xFE, aImplUniToDBCSTab_GBT_73 }, /* 0x73 */ 1019 { 0x03, 0xFF, aImplUniToDBCSTab_GBT_74 }, /* 0x74 */ 1020 { 0x04, 0xFF, aImplUniToDBCSTab_GBT_75 }, /* 0x75 */ 1021 { 0x00, 0xFE, aImplUniToDBCSTab_GBT_76 }, /* 0x76 */ 1022 { 0x01, 0xFD, aImplUniToDBCSTab_GBT_77 }, /* 0x77 */ 1023 { 0x02, 0xFD, aImplUniToDBCSTab_GBT_78 }, /* 0x78 */ 1024 { 0x01, 0xFB, aImplUniToDBCSTab_GBT_79 }, /* 0x79 */ 1025 { 0x00, 0xFF, aImplUniToDBCSTab_GBT_7A }, /* 0x7A */ 1026 { 0x04, 0xFE, aImplUniToDBCSTab_GBT_7B }, /* 0x7B */ 1027 { 0x00, 0xFE, aImplUniToDBCSTab_GBT_7C }, /* 0x7C */ 1028 { 0x00, 0xFB, aImplUniToDBCSTab_GBT_7D }, /* 0x7D */ 1029 { 0x08, 0x9C, aImplUniToDBCSTab_GBT_7E }, /* 0x7E */ 1030 { 0x36, 0xFC, aImplUniToDBCSTab_GBT_7F }, /* 0x7F */ 1031 { 0x00, 0xFD, aImplUniToDBCSTab_GBT_80 }, /* 0x80 */ 1032 { 0x02, 0xFE, aImplUniToDBCSTab_GBT_81 }, /* 0x81 */ 1033 { 0x00, 0xFB, aImplUniToDBCSTab_GBT_82 }, /* 0x82 */ 1034 { 0x01, 0xFD, aImplUniToDBCSTab_GBT_83 }, /* 0x83 */ 1035 { 0x01, 0xFF, aImplUniToDBCSTab_GBT_84 }, /* 0x84 */ 1036 { 0x0C, 0xFF, aImplUniToDBCSTab_GBT_85 }, /* 0x85 */ 1037 { 0x04, 0xFE, aImplUniToDBCSTab_GBT_86 }, /* 0x86 */ 1038 { 0x00, 0xFE, aImplUniToDBCSTab_GBT_87 }, /* 0x87 */ 1039 { 0x03, 0xFE, aImplUniToDBCSTab_GBT_88 }, /* 0x88 */ 1040 { 0x02, 0xF8, aImplUniToDBCSTab_GBT_89 }, /* 0x89 */ 1041 { 0x00, 0xFE, aImplUniToDBCSTab_GBT_8A }, /* 0x8A */ 1042 { 0x00, 0xFE, aImplUniToDBCSTab_GBT_8B }, /* 0x8B */ 1043 { 0x07, 0xFE, aImplUniToDBCSTab_GBT_8C }, /* 0x8C */ 1044 { 0x04, 0xFD, aImplUniToDBCSTab_GBT_8D }, /* 0x8D */ 1045 { 0x05, 0xFE, aImplUniToDBCSTab_GBT_8E }, /* 0x8E */ 1046 { 0x03, 0xFD, aImplUniToDBCSTab_GBT_8F }, /* 0x8F */ 1047 { 0x00, 0xFE, aImplUniToDBCSTab_GBT_90 }, /* 0x90 */ 1048 { 0x02, 0xFA, aImplUniToDBCSTab_GBT_91 }, /* 0x91 */ 1049 { 0x00, 0xFC, aImplUniToDBCSTab_GBT_92 }, /* 0x92 */ 1050 { 0x01, 0xF9, aImplUniToDBCSTab_GBT_93 }, /* 0x93 */ 1051 { 0x03, 0x7F, aImplUniToDBCSTab_GBT_94 }, /* 0x94 */ 1052 { 0x77, 0xE5, aImplUniToDBCSTab_GBT_95 }, /* 0x95 */ 1053 { 0x1C, 0xFB, aImplUniToDBCSTab_GBT_96 }, /* 0x96 */ 1054 { 0x00, 0xFF, aImplUniToDBCSTab_GBT_97 }, /* 0x97 */ 1055 { 0x01, 0xFE, aImplUniToDBCSTab_GBT_98 }, /* 0x98 */ 1056 { 0x03, 0xFF, aImplUniToDBCSTab_GBT_99 }, /* 0x99 */ 1057 { 0x01, 0xFB, aImplUniToDBCSTab_GBT_9A }, /* 0x9A */ 1058 { 0x03, 0xFF, aImplUniToDBCSTab_GBT_9B }, /* 0x9B */ 1059 { 0x08, 0xF6, aImplUniToDBCSTab_GBT_9C }, /* 0x9C */ 1060 { 0x06, 0xFA, aImplUniToDBCSTab_GBT_9D }, /* 0x9D */ 1061 { 0x0C, 0xFF, aImplUniToDBCSTab_GBT_9E }, /* 0x9E */ 1062 { 0x09, 0xA0, aImplUniToDBCSTab_GBT_9F }, /* 0x9F */ 1063 { 1, 0, NULL }, /* 0xA0 */ 1064 { 1, 0, NULL }, /* 0xA1 */ 1065 { 1, 0, NULL }, /* 0xA2 */ 1066 { 1, 0, NULL }, /* 0xA3 */ 1067 { 1, 0, NULL }, /* 0xA4 */ 1068 { 1, 0, NULL }, /* 0xA5 */ 1069 { 1, 0, NULL }, /* 0xA6 */ 1070 { 1, 0, NULL }, /* 0xA7 */ 1071 { 1, 0, NULL }, /* 0xA8 */ 1072 { 1, 0, NULL }, /* 0xA9 */ 1073 { 1, 0, NULL }, /* 0xAA */ 1074 { 1, 0, NULL }, /* 0xAB */ 1075 { 1, 0, NULL }, /* 0xAC */ 1076 { 1, 0, NULL }, /* 0xAD */ 1077 { 1, 0, NULL }, /* 0xAE */ 1078 { 1, 0, NULL }, /* 0xAF */ 1079 { 1, 0, NULL }, /* 0xB0 */ 1080 { 1, 0, NULL }, /* 0xB1 */ 1081 { 1, 0, NULL }, /* 0xB2 */ 1082 { 1, 0, NULL }, /* 0xB3 */ 1083 { 1, 0, NULL }, /* 0xB4 */ 1084 { 1, 0, NULL }, /* 0xB5 */ 1085 { 1, 0, NULL }, /* 0xB6 */ 1086 { 1, 0, NULL }, /* 0xB7 */ 1087 { 1, 0, NULL }, /* 0xB8 */ 1088 { 1, 0, NULL }, /* 0xB9 */ 1089 { 1, 0, NULL }, /* 0xBA */ 1090 { 1, 0, NULL }, /* 0xBB */ 1091 { 1, 0, NULL }, /* 0xBC */ 1092 { 1, 0, NULL }, /* 0xBD */ 1093 { 1, 0, NULL }, /* 0xBE */ 1094 { 1, 0, NULL }, /* 0xBF */ 1095 { 1, 0, NULL }, /* 0xC0 */ 1096 { 1, 0, NULL }, /* 0xC1 */ 1097 { 1, 0, NULL }, /* 0xC2 */ 1098 { 1, 0, NULL }, /* 0xC3 */ 1099 { 1, 0, NULL }, /* 0xC4 */ 1100 { 1, 0, NULL }, /* 0xC5 */ 1101 { 1, 0, NULL }, /* 0xC6 */ 1102 { 1, 0, NULL }, /* 0xC7 */ 1103 { 1, 0, NULL }, /* 0xC8 */ 1104 { 1, 0, NULL }, /* 0xC9 */ 1105 { 1, 0, NULL }, /* 0xCA */ 1106 { 1, 0, NULL }, /* 0xCB */ 1107 { 1, 0, NULL }, /* 0xCC */ 1108 { 1, 0, NULL }, /* 0xCD */ 1109 { 1, 0, NULL }, /* 0xCE */ 1110 { 1, 0, NULL }, /* 0xCF */ 1111 { 1, 0, NULL }, /* 0xD0 */ 1112 { 1, 0, NULL }, /* 0xD1 */ 1113 { 1, 0, NULL }, /* 0xD2 */ 1114 { 1, 0, NULL }, /* 0xD3 */ 1115 { 1, 0, NULL }, /* 0xD4 */ 1116 { 1, 0, NULL }, /* 0xD5 */ 1117 { 1, 0, NULL }, /* 0xD6 */ 1118 { 1, 0, NULL }, /* 0xD7 */ 1119 { 1, 0, NULL }, /* 0xD8 */ 1120 { 1, 0, NULL }, /* 0xD9 */ 1121 { 1, 0, NULL }, /* 0xDA */ 1122 { 1, 0, NULL }, /* 0xDB */ 1123 { 1, 0, NULL }, /* 0xDC */ 1124 { 1, 0, NULL }, /* 0xDD */ 1125 { 1, 0, NULL }, /* 0xDE */ 1126 { 1, 0, NULL }, /* 0xDF */ 1127 { 1, 0, NULL }, /* 0xE0 */ 1128 { 1, 0, NULL }, /* 0xE1 */ 1129 { 1, 0, NULL }, /* 0xE2 */ 1130 { 1, 0, NULL }, /* 0xE3 */ 1131 { 1, 0, NULL }, /* 0xE4 */ 1132 { 1, 0, NULL }, /* 0xE5 */ 1133 { 1, 0, NULL }, /* 0xE6 */ 1134 { 1, 0, NULL }, /* 0xE7 */ 1135 { 1, 0, NULL }, /* 0xE8 */ 1136 { 1, 0, NULL }, /* 0xE9 */ 1137 { 1, 0, NULL }, /* 0xEA */ 1138 { 1, 0, NULL }, /* 0xEB */ 1139 { 1, 0, NULL }, /* 0xEC */ 1140 { 1, 0, NULL }, /* 0xED */ 1141 { 1, 0, NULL }, /* 0xEE */ 1142 { 1, 0, NULL }, /* 0xEF */ 1143 { 1, 0, NULL }, /* 0xF0 */ 1144 { 1, 0, NULL }, /* 0xF1 */ 1145 { 1, 0, NULL }, /* 0xF2 */ 1146 { 1, 0, NULL }, /* 0xF3 */ 1147 { 1, 0, NULL }, /* 0xF4 */ 1148 { 1, 0, NULL }, /* 0xF5 */ 1149 { 1, 0, NULL }, /* 0xF6 */ 1150 { 1, 0, NULL }, /* 0xF7 */ 1151 { 1, 0, NULL }, /* 0xF8 */ 1152 { 1, 0, NULL }, /* 0xF9 */ 1153 { 1, 0, NULL }, /* 0xFA */ 1154 { 1, 0, NULL }, /* 0xFB */ 1155 { 1, 0, NULL }, /* 0xFC */ 1156 { 1, 0, NULL }, /* 0xFD */ 1157 { 0x31, 0x44, aImplUniToDBCSTab_GB_FE }, /* 0xFE */ 1158 { 0x01, 0xE5, aImplUniToDBCSTab_GB_FF } /* 0xFF */ 1159}; 1160 1161/* ----------------------------------------------------------------------- */ 1162 1163static ImplDBCSConvertData const aImplGBT12345DBCSCvtData = 1164{ 1165 aGBT12345UniLeadTab, 1166 aGBT12345DBCSHighTab, 1167 0x00, 0xFF, 1168 0xA1, 0xFE, 1169 aImplMS936DBCSEUDCTab, 1170 DBCS_EUDC_MS936_COUNT 1171}; 1172 1173/* ----------------------------------------------------------------------- */ 1174 1175static ImplTextEncodingData const aImplGBT12345TextEncodingData 1176 = { { &aImplGBT12345DBCSCvtData, 1177 ImplDBCSToUnicode, 1178 ImplUnicodeToDBCS, 1179 NULL, 1180 NULL, 1181 NULL, 1182 NULL, 1183 NULL, 1184 NULL }, 1185 1, 1186 2, 1187 2, 1188 134, 1189 "euc-cn", 1190 "cn-gb-12345", 1191 RTL_TEXTENCODING_INFO_ASCII 1192 | RTL_TEXTENCODING_INFO_MULTIBYTE 1193 | RTL_TEXTENCODING_INFO_MIME }; 1194 /* SCRIPT_CHINESE_SIMPLIFIED, pc code page 936, mac encoding 25 */ 1195 1196/* ======================================================================= */ 1197 1198/* #100054# In the GBK range FE50--FEA0, added those mappings (in both 1199 directions) taken from GB-18030 that do not map to Unicode PUA (i.e., those 1200 mappings marked with an * below): 1201 1202 FE50 -> U+2E81 * 1203 FE51 -> U+E816 1204 FE52 -> U+E817 1205 FE53 -> U+E818 1206 FE54 -> U+2E84 * 1207 FE55 -> U+3473 * 1208 FE56 -> U+3447 * 1209 FE57 -> U+2E88 * 1210 FE58 -> U+2E8B * 1211 FE59 -> U+E81E 1212 FE5A -> U+359E * 1213 FE5B -> U+361A * 1214 FE5C -> U+360E * 1215 FE5D -> U+2E8C * 1216 FE5E -> U+2E97 * 1217 FE5F -> U+396E * 1218 FE60 -> U+3918 * 1219 FE61 -> U+E826 1220 FE62 -> U+39CF * 1221 FE63 -> U+39DF * 1222 FE64 -> U+3A73 * 1223 FE65 -> U+39D0 * 1224 FE66 -> U+E82B 1225 FE67 -> U+E82C 1226 FE68 -> U+3B4E * 1227 FE69 -> U+3C6E * 1228 FE6A -> U+3CE0 * 1229 FE6B -> U+2EA7 * 1230 FE6C -> U+E831 1231 FE6D -> U+E832 1232 FE6E -> U+2EAA * 1233 FE6F -> U+4056 * 1234 FE70 -> U+415F * 1235 FE71 -> U+2EAE * 1236 FE72 -> U+4337 * 1237 FE73 -> U+2EB3 * 1238 FE74 -> U+2EB6 * 1239 FE75 -> U+2EB7 * 1240 FE76 -> U+E83B 1241 FE77 -> U+43B1 * 1242 FE78 -> U+43AC * 1243 FE79 -> U+2EBB * 1244 FE7A -> U+43DD * 1245 FE7B -> U+44D6 * 1246 FE7C -> U+4661 * 1247 FE7D -> U+464C * 1248 FE7E -> U+E843 1249 FE80 -> U+4723 * 1250 FE81 -> U+4729 * 1251 FE82 -> U+477C * 1252 FE83 -> U+478D * 1253 FE84 -> U+2ECA * 1254 FE85 -> U+4947 * 1255 FE86 -> U+497A * 1256 FE87 -> U+497D * 1257 FE88 -> U+4982 * 1258 FE89 -> U+4983 * 1259 FE8A -> U+4985 * 1260 FE8B -> U+4986 * 1261 FE8C -> U+499F * 1262 FE8D -> U+499B * 1263 FE8E -> U+49B7 * 1264 FE8F -> U+49B6 * 1265 FE90 -> U+E854 1266 FE91 -> U+E855 1267 FE92 -> U+4CA3 * 1268 FE93 -> U+4C9F * 1269 FE94 -> U+4CA0 * 1270 FE95 -> U+4CA1 * 1271 FE96 -> U+4C77 * 1272 FE97 -> U+4CA2 * 1273 FE98 -> U+4D13 * 1274 FE99 -> U+4D14 * 1275 FE9A -> U+4D15 * 1276 FE9B -> U+4D16 * 1277 FE9C -> U+4D17 * 1278 FE9D -> U+4D18 * 1279 FE9E -> U+4D19 * 1280 FE9F -> U+4DAE * 1281 FEA0 -> U+E864 1282*/ 1283 1284static ImplDBCSToUniLeadTab const aGBKUniLeadTab[256] = 1285{ 1286 { 0x0000, 0, 0, NULL }, /* 0x00 */ 1287 { 0x0001, 0, 0, NULL }, /* 0x01 */ 1288 { 0x0002, 0, 0, NULL }, /* 0x02 */ 1289 { 0x0003, 0, 0, NULL }, /* 0x03 */ 1290 { 0x0004, 0, 0, NULL }, /* 0x04 */ 1291 { 0x0005, 0, 0, NULL }, /* 0x05 */ 1292 { 0x0006, 0, 0, NULL }, /* 0x06 */ 1293 { 0x0007, 0, 0, NULL }, /* 0x07 */ 1294 { 0x0008, 0, 0, NULL }, /* 0x08 */ 1295 { 0x0009, 0, 0, NULL }, /* 0x09 */ 1296 { 0x000A, 0, 0, NULL }, /* 0x0A */ 1297 { 0x000B, 0, 0, NULL }, /* 0x0B */ 1298 { 0x000C, 0, 0, NULL }, /* 0x0C */ 1299 { 0x000D, 0, 0, NULL }, /* 0x0D */ 1300 { 0x000E, 0, 0, NULL }, /* 0x0E */ 1301 { 0x000F, 0, 0, NULL }, /* 0x0F */ 1302 { 0x0010, 0, 0, NULL }, /* 0x10 */ 1303 { 0x0011, 0, 0, NULL }, /* 0x11 */ 1304 { 0x0012, 0, 0, NULL }, /* 0x12 */ 1305 { 0x0013, 0, 0, NULL }, /* 0x13 */ 1306 { 0x0014, 0, 0, NULL }, /* 0x14 */ 1307 { 0x0015, 0, 0, NULL }, /* 0x15 */ 1308 { 0x0016, 0, 0, NULL }, /* 0x16 */ 1309 { 0x0017, 0, 0, NULL }, /* 0x17 */ 1310 { 0x0018, 0, 0, NULL }, /* 0x18 */ 1311 { 0x0019, 0, 0, NULL }, /* 0x19 */ 1312 { 0x001A, 0, 0, NULL }, /* 0x1A */ 1313 { 0x001B, 0, 0, NULL }, /* 0x1B */ 1314 { 0x001C, 0, 0, NULL }, /* 0x1C */ 1315 { 0x001D, 0, 0, NULL }, /* 0x1D */ 1316 { 0x001E, 0, 0, NULL }, /* 0x1E */ 1317 { 0x001F, 0, 0, NULL }, /* 0x1F */ 1318 { 0x0020, 0, 0, NULL }, /* 0x20 */ 1319 { 0x0021, 0, 0, NULL }, /* 0x21 */ 1320 { 0x0022, 0, 0, NULL }, /* 0x22 */ 1321 { 0x0023, 0, 0, NULL }, /* 0x23 */ 1322 { 0x0024, 0, 0, NULL }, /* 0x24 */ 1323 { 0x0025, 0, 0, NULL }, /* 0x25 */ 1324 { 0x0026, 0, 0, NULL }, /* 0x26 */ 1325 { 0x0027, 0, 0, NULL }, /* 0x27 */ 1326 { 0x0028, 0, 0, NULL }, /* 0x28 */ 1327 { 0x0029, 0, 0, NULL }, /* 0x29 */ 1328 { 0x002A, 0, 0, NULL }, /* 0x2A */ 1329 { 0x002B, 0, 0, NULL }, /* 0x2B */ 1330 { 0x002C, 0, 0, NULL }, /* 0x2C */ 1331 { 0x002D, 0, 0, NULL }, /* 0x2D */ 1332 { 0x002E, 0, 0, NULL }, /* 0x2E */ 1333 { 0x002F, 0, 0, NULL }, /* 0x2F */ 1334 { 0x0030, 0, 0, NULL }, /* 0x30 */ 1335 { 0x0031, 0, 0, NULL }, /* 0x31 */ 1336 { 0x0032, 0, 0, NULL }, /* 0x32 */ 1337 { 0x0033, 0, 0, NULL }, /* 0x33 */ 1338 { 0x0034, 0, 0, NULL }, /* 0x34 */ 1339 { 0x0035, 0, 0, NULL }, /* 0x35 */ 1340 { 0x0036, 0, 0, NULL }, /* 0x36 */ 1341 { 0x0037, 0, 0, NULL }, /* 0x37 */ 1342 { 0x0038, 0, 0, NULL }, /* 0x38 */ 1343 { 0x0039, 0, 0, NULL }, /* 0x39 */ 1344 { 0x003A, 0, 0, NULL }, /* 0x3A */ 1345 { 0x003B, 0, 0, NULL }, /* 0x3B */ 1346 { 0x003C, 0, 0, NULL }, /* 0x3C */ 1347 { 0x003D, 0, 0, NULL }, /* 0x3D */ 1348 { 0x003E, 0, 0, NULL }, /* 0x3E */ 1349 { 0x003F, 0, 0, NULL }, /* 0x3F */ 1350 { 0x0040, 0, 0, NULL }, /* 0x40 */ 1351 { 0x0041, 0, 0, NULL }, /* 0x41 */ 1352 { 0x0042, 0, 0, NULL }, /* 0x42 */ 1353 { 0x0043, 0, 0, NULL }, /* 0x43 */ 1354 { 0x0044, 0, 0, NULL }, /* 0x44 */ 1355 { 0x0045, 0, 0, NULL }, /* 0x45 */ 1356 { 0x0046, 0, 0, NULL }, /* 0x46 */ 1357 { 0x0047, 0, 0, NULL }, /* 0x47 */ 1358 { 0x0048, 0, 0, NULL }, /* 0x48 */ 1359 { 0x0049, 0, 0, NULL }, /* 0x49 */ 1360 { 0x004A, 0, 0, NULL }, /* 0x4A */ 1361 { 0x004B, 0, 0, NULL }, /* 0x4B */ 1362 { 0x004C, 0, 0, NULL }, /* 0x4C */ 1363 { 0x004D, 0, 0, NULL }, /* 0x4D */ 1364 { 0x004E, 0, 0, NULL }, /* 0x4E */ 1365 { 0x004F, 0, 0, NULL }, /* 0x4F */ 1366 { 0x0050, 0, 0, NULL }, /* 0x50 */ 1367 { 0x0051, 0, 0, NULL }, /* 0x51 */ 1368 { 0x0052, 0, 0, NULL }, /* 0x52 */ 1369 { 0x0053, 0, 0, NULL }, /* 0x53 */ 1370 { 0x0054, 0, 0, NULL }, /* 0x54 */ 1371 { 0x0055, 0, 0, NULL }, /* 0x55 */ 1372 { 0x0056, 0, 0, NULL }, /* 0x56 */ 1373 { 0x0057, 0, 0, NULL }, /* 0x57 */ 1374 { 0x0058, 0, 0, NULL }, /* 0x58 */ 1375 { 0x0059, 0, 0, NULL }, /* 0x59 */ 1376 { 0x005A, 0, 0, NULL }, /* 0x5A */ 1377 { 0x005B, 0, 0, NULL }, /* 0x5B */ 1378 { 0x005C, 0, 0, NULL }, /* 0x5C */ 1379 { 0x005D, 0, 0, NULL }, /* 0x5D */ 1380 { 0x005E, 0, 0, NULL }, /* 0x5E */ 1381 { 0x005F, 0, 0, NULL }, /* 0x5F */ 1382 { 0x0060, 0, 0, NULL }, /* 0x60 */ 1383 { 0x0061, 0, 0, NULL }, /* 0x61 */ 1384 { 0x0062, 0, 0, NULL }, /* 0x62 */ 1385 { 0x0063, 0, 0, NULL }, /* 0x63 */ 1386 { 0x0064, 0, 0, NULL }, /* 0x64 */ 1387 { 0x0065, 0, 0, NULL }, /* 0x65 */ 1388 { 0x0066, 0, 0, NULL }, /* 0x66 */ 1389 { 0x0067, 0, 0, NULL }, /* 0x67 */ 1390 { 0x0068, 0, 0, NULL }, /* 0x68 */ 1391 { 0x0069, 0, 0, NULL }, /* 0x69 */ 1392 { 0x006A, 0, 0, NULL }, /* 0x6A */ 1393 { 0x006B, 0, 0, NULL }, /* 0x6B */ 1394 { 0x006C, 0, 0, NULL }, /* 0x6C */ 1395 { 0x006D, 0, 0, NULL }, /* 0x6D */ 1396 { 0x006E, 0, 0, NULL }, /* 0x6E */ 1397 { 0x006F, 0, 0, NULL }, /* 0x6F */ 1398 { 0x0070, 0, 0, NULL }, /* 0x70 */ 1399 { 0x0071, 0, 0, NULL }, /* 0x71 */ 1400 { 0x0072, 0, 0, NULL }, /* 0x72 */ 1401 { 0x0073, 0, 0, NULL }, /* 0x73 */ 1402 { 0x0074, 0, 0, NULL }, /* 0x74 */ 1403 { 0x0075, 0, 0, NULL }, /* 0x75 */ 1404 { 0x0076, 0, 0, NULL }, /* 0x76 */ 1405 { 0x0077, 0, 0, NULL }, /* 0x77 */ 1406 { 0x0078, 0, 0, NULL }, /* 0x78 */ 1407 { 0x0079, 0, 0, NULL }, /* 0x79 */ 1408 { 0x007A, 0, 0, NULL }, /* 0x7A */ 1409 { 0x007B, 0, 0, NULL }, /* 0x7B */ 1410 { 0x007C, 0, 0, NULL }, /* 0x7C */ 1411 { 0x007D, 0, 0, NULL }, /* 0x7D */ 1412 { 0x007E, 0, 0, NULL }, /* 0x7E */ 1413 { 0x007F, 0, 0, NULL }, /* 0x7F */ 1414 { 0x20AC, 0, 0, NULL }, /* 0x80 */ 1415 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_81 }, /* 0x81 */ 1416 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_82 }, /* 0x82 */ 1417 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_83 }, /* 0x83 */ 1418 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_84 }, /* 0x84 */ 1419 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_85 }, /* 0x85 */ 1420 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_86 }, /* 0x86 */ 1421 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_87 }, /* 0x87 */ 1422 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_88 }, /* 0x88 */ 1423 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_89 }, /* 0x89 */ 1424 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_8A }, /* 0x8A */ 1425 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_8B }, /* 0x8B */ 1426 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_8C }, /* 0x8C */ 1427 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_8D }, /* 0x8D */ 1428 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_8E }, /* 0x8E */ 1429 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_8F }, /* 0x8F */ 1430 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_90 }, /* 0x90 */ 1431 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_91 }, /* 0x91 */ 1432 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_92 }, /* 0x92 */ 1433 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_93 }, /* 0x93 */ 1434 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_94 }, /* 0x94 */ 1435 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_95 }, /* 0x95 */ 1436 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_96 }, /* 0x96 */ 1437 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_97 }, /* 0x97 */ 1438 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_98 }, /* 0x98 */ 1439 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_99 }, /* 0x99 */ 1440 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_9A }, /* 0x9A */ 1441 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_9B }, /* 0x9B */ 1442 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_9C }, /* 0x9C */ 1443 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_9D }, /* 0x9D */ 1444 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_9E }, /* 0x9E */ 1445 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_9F }, /* 0x9F */ 1446 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_A0 }, /* 0xA0 */ 1447 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GB_A1 }, /* 0xA1 */ 1448 { 0, 0xA1, 0xFC, aImplDBCSToUniTab_GB_A2 }, /* 0xA2 */ 1449 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GB_A3 }, /* 0xA3 */ 1450 { 0, 0xA1, 0xF3, aImplDBCSToUniTab_GB_A4 }, /* 0xA4 */ 1451 { 0, 0xA1, 0xF6, aImplDBCSToUniTab_GB_A5 }, /* 0xA5 */ 1452 { 0, 0xA1, 0xF5, aImplDBCSToUniTab_GB_A6 }, /* 0xA6 */ 1453 { 0, 0xA1, 0xF1, aImplDBCSToUniTab_GB_A7 }, /* 0xA7 */ 1454 { 0, 0x40, 0xE9, aImplDBCSToUniTab_GBK_A8 }, /* 0xA8 */ 1455 { 0, 0x40, 0xEF, aImplDBCSToUniTab_GBK_A9 }, /* 0xA9 */ 1456 { 0, 0x40, 0xA0, aImplDBCSToUniTab_GBK_AA }, /* 0xAA */ 1457 { 0, 0x40, 0xA0, aImplDBCSToUniTab_GBK_AB }, /* 0xAB */ 1458 { 0, 0x40, 0xA0, aImplDBCSToUniTab_GBK_AC }, /* 0xAC */ 1459 { 0, 0x40, 0xA0, aImplDBCSToUniTab_GBK_AD }, /* 0xAD */ 1460 { 0, 0x40, 0xA0, aImplDBCSToUniTab_GBK_AE }, /* 0xAE */ 1461 { 0, 0x40, 0xA0, aImplDBCSToUniTab_GBK_AF }, /* 0xAF */ 1462 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_B0 }, /* 0xB0 */ 1463 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_B1 }, /* 0xB1 */ 1464 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_B2 }, /* 0xB2 */ 1465 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_B3 }, /* 0xB3 */ 1466 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_B4 }, /* 0xB4 */ 1467 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_B5 }, /* 0xB5 */ 1468 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_B6 }, /* 0xB6 */ 1469 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_B7 }, /* 0xB7 */ 1470 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_B8 }, /* 0xB8 */ 1471 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_B9 }, /* 0xB9 */ 1472 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_BA }, /* 0xBA */ 1473 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_BB }, /* 0xBB */ 1474 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_BC }, /* 0xBC */ 1475 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_BD }, /* 0xBD */ 1476 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_BE }, /* 0xBE */ 1477 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_BF }, /* 0xBF */ 1478 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_C0 }, /* 0xC0 */ 1479 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_C1 }, /* 0xC1 */ 1480 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_C2 }, /* 0xC2 */ 1481 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_C3 }, /* 0xC3 */ 1482 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_C4 }, /* 0xC4 */ 1483 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_C5 }, /* 0xC5 */ 1484 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_C6 }, /* 0xC6 */ 1485 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_C7 }, /* 0xC7 */ 1486 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_C8 }, /* 0xC8 */ 1487 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_C9 }, /* 0xC9 */ 1488 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_CA }, /* 0xCA */ 1489 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_CB }, /* 0xCB */ 1490 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_CC }, /* 0xCC */ 1491 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_CD }, /* 0xCD */ 1492 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_CE }, /* 0xCE */ 1493 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_CF }, /* 0xCF */ 1494 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_D0 }, /* 0xD0 */ 1495 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_D1 }, /* 0xD1 */ 1496 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_D2 }, /* 0xD2 */ 1497 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_D3 }, /* 0xD3 */ 1498 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_D4 }, /* 0xD4 */ 1499 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_D5 }, /* 0xD5 */ 1500 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_D6 }, /* 0xD6 */ 1501 { 0, 0x40, 0xF9, aImplDBCSToUniTab_GBK_D7 }, /* 0xD7 */ 1502 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_D8 }, /* 0xD8 */ 1503 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_D9 }, /* 0xD9 */ 1504 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_DA }, /* 0xDA */ 1505 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_DB }, /* 0xDB */ 1506 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_DC }, /* 0xDC */ 1507 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_DD }, /* 0xDD */ 1508 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_DE }, /* 0xDE */ 1509 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_DF }, /* 0xDF */ 1510 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_E0 }, /* 0xE0 */ 1511 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_E1 }, /* 0xE1 */ 1512 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_E2 }, /* 0xE2 */ 1513 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_E3 }, /* 0xE3 */ 1514 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_E4 }, /* 0xE4 */ 1515 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_E5 }, /* 0xE5 */ 1516 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_E6 }, /* 0xE6 */ 1517 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_E7 }, /* 0xE7 */ 1518 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_E8 }, /* 0xE8 */ 1519 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_E9 }, /* 0xE9 */ 1520 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_EA }, /* 0xEA */ 1521 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_EB }, /* 0xEB */ 1522 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_EC }, /* 0xEC */ 1523 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_ED }, /* 0xED */ 1524 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_EE }, /* 0xEE */ 1525 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_EF }, /* 0xEF */ 1526 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_F0 }, /* 0xF0 */ 1527 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_F1 }, /* 0xF1 */ 1528 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_F2 }, /* 0xF2 */ 1529 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_F3 }, /* 0xF3 */ 1530 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_F4 }, /* 0xF4 */ 1531 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_F5 }, /* 0xF5 */ 1532 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_F6 }, /* 0xF6 */ 1533 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_F7 }, /* 0xF7 */ 1534 { 0, 0x40, 0xA0, aImplDBCSToUniTab_GBK_F8 }, /* 0xF8 */ 1535 { 0, 0x40, 0xA0, aImplDBCSToUniTab_GBK_F9 }, /* 0xF9 */ 1536 { 0, 0x40, 0xA0, aImplDBCSToUniTab_GBK_FA }, /* 0xFA */ 1537 { 0, 0x40, 0xA0, aImplDBCSToUniTab_GBK_FB }, /* 0xFB */ 1538 { 0, 0x40, 0xA0, aImplDBCSToUniTab_GBK_FC }, /* 0xFC */ 1539 { 0, 0x40, 0xA0, aImplDBCSToUniTab_GBK_FD }, /* 0xFD */ 1540 { 0, 0x40, 0x9F, aImplDBCSToUniTab_GBK_FE }, /* 0xFE */ 1541 { 0, 1, 0, NULL } /* 0xFF */ 1542}; 1543 1544/* ----------------------------------------------------------------------- */ 1545 1546static ImplUniToDBCSHighTab const aGBKDBCSHighTab[256] = 1547{ 1548 { 0x00, 0xFC, aImplUniToDBCSTab_GB_00 }, /* 0x00 */ 1549 { 0x01, 0xDC, aImplUniToDBCSTab_GB_01 }, /* 0x01 */ 1550 { 0x51, 0xD9, aImplUniToDBCSTab_GBK_02 }, /* 0x02 */ 1551 { 0x91, 0xC9, aImplUniToDBCSTab_GB_03 }, /* 0x03 */ 1552 { 0x01, 0x51, aImplUniToDBCSTab_GB_04 }, /* 0x04 */ 1553 { 1, 0, NULL }, /* 0x05 */ 1554 { 1, 0, NULL }, /* 0x06 */ 1555 { 1, 0, NULL }, /* 0x07 */ 1556 { 1, 0, NULL }, /* 0x08 */ 1557 { 1, 0, NULL }, /* 0x09 */ 1558 { 1, 0, NULL }, /* 0x0A */ 1559 { 1, 0, NULL }, /* 0x0B */ 1560 { 1, 0, NULL }, /* 0x0C */ 1561 { 1, 0, NULL }, /* 0x0D */ 1562 { 1, 0, NULL }, /* 0x0E */ 1563 { 1, 0, NULL }, /* 0x0F */ 1564 { 1, 0, NULL }, /* 0x10 */ 1565 { 1, 0, NULL }, /* 0x11 */ 1566 { 1, 0, NULL }, /* 0x12 */ 1567 { 1, 0, NULL }, /* 0x13 */ 1568 { 1, 0, NULL }, /* 0x14 */ 1569 { 1, 0, NULL }, /* 0x15 */ 1570 { 1, 0, NULL }, /* 0x16 */ 1571 { 1, 0, NULL }, /* 0x17 */ 1572 { 1, 0, NULL }, /* 0x18 */ 1573 { 1, 0, NULL }, /* 0x19 */ 1574 { 1, 0, NULL }, /* 0x1A */ 1575 { 1, 0, NULL }, /* 0x1B */ 1576 { 1, 0, NULL }, /* 0x1C */ 1577 { 1, 0, NULL }, /* 0x1D */ 1578 { 0x3F, 0x3F, aImplUniToDBCSTab_APPLECHINSIMP_1E }, /* 0x1E */ /* we convert this char also to unicode */ 1579 { 1, 0, NULL }, /* 0x1F */ 1580 { 0x10, 0xAC, aImplUniToDBCSTab_GBK_20 }, /* 0x20 */ 1581 { 0x03, 0x99, aImplUniToDBCSTab_GBK_21 }, /* 0x21 */ 1582 { 0x08, 0xEF, aImplUniToDBCSTab_GBK_22 }, /* 0x22 */ 1583 { 0x12, 0x12, aImplUniToDBCSTab_GB_23 }, /* 0x23 */ 1584 { 0x60, 0x9B, aImplUniToDBCSTab_GB_24 }, /* 0x24 */ 1585 { 0x00, 0xE5, aImplUniToDBCSTab_GBK_25 }, /* 0x25 */ 1586 { 0x05, 0x42, aImplUniToDBCSTab_GBK_26 }, /* 0x26 */ 1587 { 1, 0, NULL }, /* 0x27 */ 1588 { 1, 0, NULL }, /* 0x28 */ 1589 { 1, 0, NULL }, /* 0x29 */ 1590 { 1, 0, NULL }, /* 0x2A */ 1591 { 1, 0, NULL }, /* 0x2B */ 1592 { 1, 0, NULL }, /* 0x2C */ 1593 { 1, 0, NULL }, /* 0x2D */ 1594 { 0x81, 0xCA, aImplUniToDBCSTab_GBK_2E }, /* 0x2E */ 1595 { 1, 0, NULL }, /* 0x2F */ 1596 { 0x00, 0xFE, aImplUniToDBCSTab_GBK_30 }, /* 0x30 */ 1597 { 0x05, 0x29, aImplUniToDBCSTab_GB_31 }, /* 0x31 */ 1598 { 0x20, 0xA3, aImplUniToDBCSTab_GBK_32 }, /* 0x32 */ 1599 { 0x8E, 0xD5, aImplUniToDBCSTab_GBK_33 }, /* 0x33 */ 1600 { 0x47, 0x73, aImplUniToDBCSTab_GBK_34 }, /* 0x34 */ 1601 { 0x9E, 0x9E, aImplUniToDBCSTab_GBK_35 }, /* 0x35 */ 1602 { 0x0E, 0x1A, aImplUniToDBCSTab_GBK_36 }, /* 0x36 */ 1603 { 1, 0, NULL }, /* 0x37 */ 1604 { 1, 0, NULL }, /* 0x38 */ 1605 { 0x18, 0xDF, aImplUniToDBCSTab_GBK_39 }, /* 0x39 */ 1606 { 0x73, 0x73, aImplUniToDBCSTab_GBK_3A }, /* 0x3A */ 1607 { 0x4E, 0x4E, aImplUniToDBCSTab_GBK_3B }, /* 0x3B */ 1608 { 0x6E, 0xE0, aImplUniToDBCSTab_GBK_3C }, /* 0x3C */ 1609 { 1, 0, NULL }, /* 0x3D */ 1610 { 1, 0, NULL }, /* 0x3E */ 1611 { 1, 0, NULL }, /* 0x3F */ 1612 { 0x56, 0x56, aImplUniToDBCSTab_GBK_40 }, /* 0x40 */ 1613 { 0x5F, 0x5F, aImplUniToDBCSTab_GBK_41 }, /* 0x41 */ 1614 { 1, 0, NULL }, /* 0x42 */ 1615 { 0x37, 0xDD, aImplUniToDBCSTab_GBK_43 }, /* 0x43 */ 1616 { 0xD6, 0xD6, aImplUniToDBCSTab_GBK_44 }, /* 0x44 */ 1617 { 1, 0, NULL }, /* 0x45 */ 1618 { 0x4C, 0x61, aImplUniToDBCSTab_GBK_46 }, /* 0x46 */ 1619 { 0x23, 0x8D, aImplUniToDBCSTab_GBK_47 }, /* 0x47 */ 1620 { 1, 0, NULL }, /* 0x48 */ 1621 { 0x47, 0xB7, aImplUniToDBCSTab_GBK_49 }, /* 0x49 */ 1622 { 1, 0, NULL }, /* 0x4A */ 1623 { 1, 0, NULL }, /* 0x4B */ 1624 { 0x77, 0xA3, aImplUniToDBCSTab_GBK_4C }, /* 0x4C */ 1625 { 0x13, 0xAE, aImplUniToDBCSTab_GBK_4D }, /* 0x4D */ 1626 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_4E }, /* 0x4E */ 1627 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_4F }, /* 0x4F */ 1628 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_50 }, /* 0x50 */ 1629 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_51 }, /* 0x51 */ 1630 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_52 }, /* 0x52 */ 1631 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_53 }, /* 0x53 */ 1632 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_54 }, /* 0x54 */ 1633 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_55 }, /* 0x55 */ 1634 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_56 }, /* 0x56 */ 1635 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_57 }, /* 0x57 */ 1636 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_58 }, /* 0x58 */ 1637 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_59 }, /* 0x59 */ 1638 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_5A }, /* 0x5A */ 1639 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_5B }, /* 0x5B */ 1640 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_5C }, /* 0x5C */ 1641 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_5D }, /* 0x5D */ 1642 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_5E }, /* 0x5E */ 1643 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_5F }, /* 0x5F */ 1644 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_60 }, /* 0x60 */ 1645 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_61 }, /* 0x61 */ 1646 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_62 }, /* 0x62 */ 1647 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_63 }, /* 0x63 */ 1648 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_64 }, /* 0x64 */ 1649 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_65 }, /* 0x65 */ 1650 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_66 }, /* 0x66 */ 1651 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_67 }, /* 0x67 */ 1652 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_68 }, /* 0x68 */ 1653 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_69 }, /* 0x69 */ 1654 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_6A }, /* 0x6A */ 1655 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_6B }, /* 0x6B */ 1656 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_6C }, /* 0x6C */ 1657 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_6D }, /* 0x6D */ 1658 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_6E }, /* 0x6E */ 1659 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_6F }, /* 0x6F */ 1660 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_70 }, /* 0x70 */ 1661 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_71 }, /* 0x71 */ 1662 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_72 }, /* 0x72 */ 1663 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_73 }, /* 0x73 */ 1664 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_74 }, /* 0x74 */ 1665 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_75 }, /* 0x75 */ 1666 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_76 }, /* 0x76 */ 1667 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_77 }, /* 0x77 */ 1668 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_78 }, /* 0x78 */ 1669 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_79 }, /* 0x79 */ 1670 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_7A }, /* 0x7A */ 1671 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_7B }, /* 0x7B */ 1672 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_7C }, /* 0x7C */ 1673 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_7D }, /* 0x7D */ 1674 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_7E }, /* 0x7E */ 1675 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_7F }, /* 0x7F */ 1676 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_80 }, /* 0x80 */ 1677 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_81 }, /* 0x81 */ 1678 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_82 }, /* 0x82 */ 1679 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_83 }, /* 0x83 */ 1680 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_84 }, /* 0x84 */ 1681 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_85 }, /* 0x85 */ 1682 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_86 }, /* 0x86 */ 1683 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_87 }, /* 0x87 */ 1684 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_88 }, /* 0x88 */ 1685 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_89 }, /* 0x89 */ 1686 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_8A }, /* 0x8A */ 1687 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_8B }, /* 0x8B */ 1688 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_8C }, /* 0x8C */ 1689 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_8D }, /* 0x8D */ 1690 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_8E }, /* 0x8E */ 1691 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_8F }, /* 0x8F */ 1692 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_90 }, /* 0x90 */ 1693 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_91 }, /* 0x91 */ 1694 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_92 }, /* 0x92 */ 1695 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_93 }, /* 0x93 */ 1696 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_94 }, /* 0x94 */ 1697 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_95 }, /* 0x95 */ 1698 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_96 }, /* 0x96 */ 1699 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_97 }, /* 0x97 */ 1700 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_98 }, /* 0x98 */ 1701 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_99 }, /* 0x99 */ 1702 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_9A }, /* 0x9A */ 1703 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_9B }, /* 0x9B */ 1704 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_9C }, /* 0x9C */ 1705 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_9D }, /* 0x9D */ 1706 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_9E }, /* 0x9E */ 1707 { 0x00, 0xA5, aImplUniToDBCSTab_GBK_9F }, /* 0x9F */ 1708 { 1, 0, NULL }, /* 0xA0 */ 1709 { 1, 0, NULL }, /* 0xA1 */ 1710 { 1, 0, NULL }, /* 0xA2 */ 1711 { 1, 0, NULL }, /* 0xA3 */ 1712 { 1, 0, NULL }, /* 0xA4 */ 1713 { 1, 0, NULL }, /* 0xA5 */ 1714 { 1, 0, NULL }, /* 0xA6 */ 1715 { 1, 0, NULL }, /* 0xA7 */ 1716 { 1, 0, NULL }, /* 0xA8 */ 1717 { 1, 0, NULL }, /* 0xA9 */ 1718 { 1, 0, NULL }, /* 0xAA */ 1719 { 1, 0, NULL }, /* 0xAB */ 1720 { 1, 0, NULL }, /* 0xAC */ 1721 { 1, 0, NULL }, /* 0xAD */ 1722 { 1, 0, NULL }, /* 0xAE */ 1723 { 1, 0, NULL }, /* 0xAF */ 1724 { 1, 0, NULL }, /* 0xB0 */ 1725 { 1, 0, NULL }, /* 0xB1 */ 1726 { 1, 0, NULL }, /* 0xB2 */ 1727 { 1, 0, NULL }, /* 0xB3 */ 1728 { 1, 0, NULL }, /* 0xB4 */ 1729 { 1, 0, NULL }, /* 0xB5 */ 1730 { 1, 0, NULL }, /* 0xB6 */ 1731 { 1, 0, NULL }, /* 0xB7 */ 1732 { 1, 0, NULL }, /* 0xB8 */ 1733 { 1, 0, NULL }, /* 0xB9 */ 1734 { 1, 0, NULL }, /* 0xBA */ 1735 { 1, 0, NULL }, /* 0xBB */ 1736 { 1, 0, NULL }, /* 0xBC */ 1737 { 1, 0, NULL }, /* 0xBD */ 1738 { 1, 0, NULL }, /* 0xBE */ 1739 { 1, 0, NULL }, /* 0xBF */ 1740 { 1, 0, NULL }, /* 0xC0 */ 1741 { 1, 0, NULL }, /* 0xC1 */ 1742 { 1, 0, NULL }, /* 0xC2 */ 1743 { 1, 0, NULL }, /* 0xC3 */ 1744 { 1, 0, NULL }, /* 0xC4 */ 1745 { 1, 0, NULL }, /* 0xC5 */ 1746 { 1, 0, NULL }, /* 0xC6 */ 1747 { 1, 0, NULL }, /* 0xC7 */ 1748 { 1, 0, NULL }, /* 0xC8 */ 1749 { 1, 0, NULL }, /* 0xC9 */ 1750 { 1, 0, NULL }, /* 0xCA */ 1751 { 1, 0, NULL }, /* 0xCB */ 1752 { 1, 0, NULL }, /* 0xCC */ 1753 { 1, 0, NULL }, /* 0xCD */ 1754 { 1, 0, NULL }, /* 0xCE */ 1755 { 1, 0, NULL }, /* 0xCF */ 1756 { 1, 0, NULL }, /* 0xD0 */ 1757 { 1, 0, NULL }, /* 0xD1 */ 1758 { 1, 0, NULL }, /* 0xD2 */ 1759 { 1, 0, NULL }, /* 0xD3 */ 1760 { 1, 0, NULL }, /* 0xD4 */ 1761 { 1, 0, NULL }, /* 0xD5 */ 1762 { 1, 0, NULL }, /* 0xD6 */ 1763 { 1, 0, NULL }, /* 0xD7 */ 1764 { 1, 0, NULL }, /* 0xD8 */ 1765 { 1, 0, NULL }, /* 0xD9 */ 1766 { 1, 0, NULL }, /* 0xDA */ 1767 { 1, 0, NULL }, /* 0xDB */ 1768 { 1, 0, NULL }, /* 0xDC */ 1769 { 1, 0, NULL }, /* 0xDD */ 1770 { 1, 0, NULL }, /* 0xDE */ 1771 { 1, 0, NULL }, /* 0xDF */ 1772 { 1, 0, NULL }, /* 0xE0 */ 1773 { 1, 0, NULL }, /* 0xE1 */ 1774 { 1, 0, NULL }, /* 0xE2 */ 1775 { 1, 0, NULL }, /* 0xE3 */ 1776 { 1, 0, NULL }, /* 0xE4 */ 1777 { 1, 0, NULL }, /* 0xE5 */ 1778 { 1, 0, NULL }, /* 0xE6 */ 1779 { 1, 0, NULL }, /* 0xE7 */ 1780 { 1, 0, NULL }, /* 0xE8 */ 1781 { 1, 0, NULL }, /* 0xE9 */ 1782 { 1, 0, NULL }, /* 0xEA */ 1783 { 1, 0, NULL }, /* 0xEB */ 1784 { 1, 0, NULL }, /* 0xEC */ 1785 { 1, 0, NULL }, /* 0xED */ 1786 { 1, 0, NULL }, /* 0xEE */ 1787 { 1, 0, NULL }, /* 0xEF */ 1788 { 1, 0, NULL }, /* 0xF0 */ 1789 { 1, 0, NULL }, /* 0xF1 */ 1790 { 1, 0, NULL }, /* 0xF2 */ 1791 { 1, 0, NULL }, /* 0xF3 */ 1792 { 1, 0, NULL }, /* 0xF4 */ 1793 { 1, 0, NULL }, /* 0xF5 */ 1794 { 1, 0, NULL }, /* 0xF6 */ 1795 { 1, 0, NULL }, /* 0xF7 */ 1796 { 1, 0, NULL }, /* 0xF8 */ 1797 { 0x2C, 0xF1, aImplUniToDBCSTab_GBK_F9 }, /* 0xF9 */ 1798 { 0x0C, 0x29, aImplUniToDBCSTab_GBK_FA }, /* 0xFA */ 1799 { 1, 0, NULL }, /* 0xFB */ 1800 { 1, 0, NULL }, /* 0xFC */ 1801 { 1, 0, NULL }, /* 0xFD */ 1802 { 0x30, 0x6B, aImplUniToDBCSTab_GBK_FE }, /* 0xFE */ 1803 { 0x01, 0xE5, aImplUniToDBCSTab_GBK_FF } /* 0xFF */ 1804}; 1805 1806/* ----------------------------------------------------------------------- */ 1807 1808static ImplDBCSConvertData const aImplGBKDBCSCvtData = 1809{ 1810 aGBKUniLeadTab, 1811 aGBKDBCSHighTab, 1812 0x00, 0xFF, 1813 0x40, 0xFE, 1814 aImplMS936DBCSEUDCTab, 1815 DBCS_EUDC_MS936_COUNT 1816}; 1817 1818/* ----------------------------------------------------------------------- */ 1819 1820static ImplTextEncodingData const aImplGBKTextEncodingData 1821 = { { &aImplGBKDBCSCvtData, 1822 ImplDBCSToUnicode, 1823 ImplUnicodeToDBCS, 1824 NULL, 1825 NULL, 1826 NULL, 1827 NULL, 1828 NULL, 1829 NULL }, 1830 1, 1831 2, 1832 2, 1833 134, 1834 "euc-cn", 1835 "GBK", 1836 RTL_TEXTENCODING_INFO_MULTIBYTE | RTL_TEXTENCODING_INFO_MIME }; 1837 /* SCRIPT_CHINESE_SIMPLIFIED, pc code page 936, mac encoding 25 */ 1838 1839/* ======================================================================= */ 1840 1841static ImplDBCSToUniLeadTab const aMS936UniLeadTab[256] = 1842{ 1843 { 0x0000, 0, 0, NULL }, /* 0x00 */ 1844 { 0x0001, 0, 0, NULL }, /* 0x01 */ 1845 { 0x0002, 0, 0, NULL }, /* 0x02 */ 1846 { 0x0003, 0, 0, NULL }, /* 0x03 */ 1847 { 0x0004, 0, 0, NULL }, /* 0x04 */ 1848 { 0x0005, 0, 0, NULL }, /* 0x05 */ 1849 { 0x0006, 0, 0, NULL }, /* 0x06 */ 1850 { 0x0007, 0, 0, NULL }, /* 0x07 */ 1851 { 0x0008, 0, 0, NULL }, /* 0x08 */ 1852 { 0x0009, 0, 0, NULL }, /* 0x09 */ 1853 { 0x000A, 0, 0, NULL }, /* 0x0A */ 1854 { 0x000B, 0, 0, NULL }, /* 0x0B */ 1855 { 0x000C, 0, 0, NULL }, /* 0x0C */ 1856 { 0x000D, 0, 0, NULL }, /* 0x0D */ 1857 { 0x000E, 0, 0, NULL }, /* 0x0E */ 1858 { 0x000F, 0, 0, NULL }, /* 0x0F */ 1859 { 0x0010, 0, 0, NULL }, /* 0x10 */ 1860 { 0x0011, 0, 0, NULL }, /* 0x11 */ 1861 { 0x0012, 0, 0, NULL }, /* 0x12 */ 1862 { 0x0013, 0, 0, NULL }, /* 0x13 */ 1863 { 0x0014, 0, 0, NULL }, /* 0x14 */ 1864 { 0x0015, 0, 0, NULL }, /* 0x15 */ 1865 { 0x0016, 0, 0, NULL }, /* 0x16 */ 1866 { 0x0017, 0, 0, NULL }, /* 0x17 */ 1867 { 0x0018, 0, 0, NULL }, /* 0x18 */ 1868 { 0x0019, 0, 0, NULL }, /* 0x19 */ 1869 { 0x001A, 0, 0, NULL }, /* 0x1A */ 1870 { 0x001B, 0, 0, NULL }, /* 0x1B */ 1871 { 0x001C, 0, 0, NULL }, /* 0x1C */ 1872 { 0x001D, 0, 0, NULL }, /* 0x1D */ 1873 { 0x001E, 0, 0, NULL }, /* 0x1E */ 1874 { 0x001F, 0, 0, NULL }, /* 0x1F */ 1875 { 0x0020, 0, 0, NULL }, /* 0x20 */ 1876 { 0x0021, 0, 0, NULL }, /* 0x21 */ 1877 { 0x0022, 0, 0, NULL }, /* 0x22 */ 1878 { 0x0023, 0, 0, NULL }, /* 0x23 */ 1879 { 0x0024, 0, 0, NULL }, /* 0x24 */ 1880 { 0x0025, 0, 0, NULL }, /* 0x25 */ 1881 { 0x0026, 0, 0, NULL }, /* 0x26 */ 1882 { 0x0027, 0, 0, NULL }, /* 0x27 */ 1883 { 0x0028, 0, 0, NULL }, /* 0x28 */ 1884 { 0x0029, 0, 0, NULL }, /* 0x29 */ 1885 { 0x002A, 0, 0, NULL }, /* 0x2A */ 1886 { 0x002B, 0, 0, NULL }, /* 0x2B */ 1887 { 0x002C, 0, 0, NULL }, /* 0x2C */ 1888 { 0x002D, 0, 0, NULL }, /* 0x2D */ 1889 { 0x002E, 0, 0, NULL }, /* 0x2E */ 1890 { 0x002F, 0, 0, NULL }, /* 0x2F */ 1891 { 0x0030, 0, 0, NULL }, /* 0x30 */ 1892 { 0x0031, 0, 0, NULL }, /* 0x31 */ 1893 { 0x0032, 0, 0, NULL }, /* 0x32 */ 1894 { 0x0033, 0, 0, NULL }, /* 0x33 */ 1895 { 0x0034, 0, 0, NULL }, /* 0x34 */ 1896 { 0x0035, 0, 0, NULL }, /* 0x35 */ 1897 { 0x0036, 0, 0, NULL }, /* 0x36 */ 1898 { 0x0037, 0, 0, NULL }, /* 0x37 */ 1899 { 0x0038, 0, 0, NULL }, /* 0x38 */ 1900 { 0x0039, 0, 0, NULL }, /* 0x39 */ 1901 { 0x003A, 0, 0, NULL }, /* 0x3A */ 1902 { 0x003B, 0, 0, NULL }, /* 0x3B */ 1903 { 0x003C, 0, 0, NULL }, /* 0x3C */ 1904 { 0x003D, 0, 0, NULL }, /* 0x3D */ 1905 { 0x003E, 0, 0, NULL }, /* 0x3E */ 1906 { 0x003F, 0, 0, NULL }, /* 0x3F */ 1907 { 0x0040, 0, 0, NULL }, /* 0x40 */ 1908 { 0x0041, 0, 0, NULL }, /* 0x41 */ 1909 { 0x0042, 0, 0, NULL }, /* 0x42 */ 1910 { 0x0043, 0, 0, NULL }, /* 0x43 */ 1911 { 0x0044, 0, 0, NULL }, /* 0x44 */ 1912 { 0x0045, 0, 0, NULL }, /* 0x45 */ 1913 { 0x0046, 0, 0, NULL }, /* 0x46 */ 1914 { 0x0047, 0, 0, NULL }, /* 0x47 */ 1915 { 0x0048, 0, 0, NULL }, /* 0x48 */ 1916 { 0x0049, 0, 0, NULL }, /* 0x49 */ 1917 { 0x004A, 0, 0, NULL }, /* 0x4A */ 1918 { 0x004B, 0, 0, NULL }, /* 0x4B */ 1919 { 0x004C, 0, 0, NULL }, /* 0x4C */ 1920 { 0x004D, 0, 0, NULL }, /* 0x4D */ 1921 { 0x004E, 0, 0, NULL }, /* 0x4E */ 1922 { 0x004F, 0, 0, NULL }, /* 0x4F */ 1923 { 0x0050, 0, 0, NULL }, /* 0x50 */ 1924 { 0x0051, 0, 0, NULL }, /* 0x51 */ 1925 { 0x0052, 0, 0, NULL }, /* 0x52 */ 1926 { 0x0053, 0, 0, NULL }, /* 0x53 */ 1927 { 0x0054, 0, 0, NULL }, /* 0x54 */ 1928 { 0x0055, 0, 0, NULL }, /* 0x55 */ 1929 { 0x0056, 0, 0, NULL }, /* 0x56 */ 1930 { 0x0057, 0, 0, NULL }, /* 0x57 */ 1931 { 0x0058, 0, 0, NULL }, /* 0x58 */ 1932 { 0x0059, 0, 0, NULL }, /* 0x59 */ 1933 { 0x005A, 0, 0, NULL }, /* 0x5A */ 1934 { 0x005B, 0, 0, NULL }, /* 0x5B */ 1935 { 0x005C, 0, 0, NULL }, /* 0x5C */ 1936 { 0x005D, 0, 0, NULL }, /* 0x5D */ 1937 { 0x005E, 0, 0, NULL }, /* 0x5E */ 1938 { 0x005F, 0, 0, NULL }, /* 0x5F */ 1939 { 0x0060, 0, 0, NULL }, /* 0x60 */ 1940 { 0x0061, 0, 0, NULL }, /* 0x61 */ 1941 { 0x0062, 0, 0, NULL }, /* 0x62 */ 1942 { 0x0063, 0, 0, NULL }, /* 0x63 */ 1943 { 0x0064, 0, 0, NULL }, /* 0x64 */ 1944 { 0x0065, 0, 0, NULL }, /* 0x65 */ 1945 { 0x0066, 0, 0, NULL }, /* 0x66 */ 1946 { 0x0067, 0, 0, NULL }, /* 0x67 */ 1947 { 0x0068, 0, 0, NULL }, /* 0x68 */ 1948 { 0x0069, 0, 0, NULL }, /* 0x69 */ 1949 { 0x006A, 0, 0, NULL }, /* 0x6A */ 1950 { 0x006B, 0, 0, NULL }, /* 0x6B */ 1951 { 0x006C, 0, 0, NULL }, /* 0x6C */ 1952 { 0x006D, 0, 0, NULL }, /* 0x6D */ 1953 { 0x006E, 0, 0, NULL }, /* 0x6E */ 1954 { 0x006F, 0, 0, NULL }, /* 0x6F */ 1955 { 0x0070, 0, 0, NULL }, /* 0x70 */ 1956 { 0x0071, 0, 0, NULL }, /* 0x71 */ 1957 { 0x0072, 0, 0, NULL }, /* 0x72 */ 1958 { 0x0073, 0, 0, NULL }, /* 0x73 */ 1959 { 0x0074, 0, 0, NULL }, /* 0x74 */ 1960 { 0x0075, 0, 0, NULL }, /* 0x75 */ 1961 { 0x0076, 0, 0, NULL }, /* 0x76 */ 1962 { 0x0077, 0, 0, NULL }, /* 0x77 */ 1963 { 0x0078, 0, 0, NULL }, /* 0x78 */ 1964 { 0x0079, 0, 0, NULL }, /* 0x79 */ 1965 { 0x007A, 0, 0, NULL }, /* 0x7A */ 1966 { 0x007B, 0, 0, NULL }, /* 0x7B */ 1967 { 0x007C, 0, 0, NULL }, /* 0x7C */ 1968 { 0x007D, 0, 0, NULL }, /* 0x7D */ 1969 { 0x007E, 0, 0, NULL }, /* 0x7E */ 1970 { 0x007F, 0, 0, NULL }, /* 0x7F */ 1971 { 0x20AC, 0, 0, NULL }, /* 0x80 */ 1972 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_81 }, /* 0x81 */ 1973 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_82 }, /* 0x82 */ 1974 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_83 }, /* 0x83 */ 1975 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_84 }, /* 0x84 */ 1976 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_85 }, /* 0x85 */ 1977 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_86 }, /* 0x86 */ 1978 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_87 }, /* 0x87 */ 1979 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_88 }, /* 0x88 */ 1980 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_89 }, /* 0x89 */ 1981 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_8A }, /* 0x8A */ 1982 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_8B }, /* 0x8B */ 1983 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_8C }, /* 0x8C */ 1984 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_8D }, /* 0x8D */ 1985 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_8E }, /* 0x8E */ 1986 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_8F }, /* 0x8F */ 1987 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_90 }, /* 0x90 */ 1988 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_91 }, /* 0x91 */ 1989 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_92 }, /* 0x92 */ 1990 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_93 }, /* 0x93 */ 1991 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_94 }, /* 0x94 */ 1992 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_95 }, /* 0x95 */ 1993 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_96 }, /* 0x96 */ 1994 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_97 }, /* 0x97 */ 1995 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_98 }, /* 0x98 */ 1996 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_99 }, /* 0x99 */ 1997 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_9A }, /* 0x9A */ 1998 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_9B }, /* 0x9B */ 1999 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_9C }, /* 0x9C */ 2000 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_9D }, /* 0x9D */ 2001 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_9E }, /* 0x9E */ 2002 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_9F }, /* 0x9F */ 2003 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_A0 }, /* 0xA0 */ 2004 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GB_A1 }, /* 0xA1 */ 2005 { 0, 0xA1, 0xFC, aImplDBCSToUniTab_GB_A2 }, /* 0xA2 */ 2006 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GB_A3 }, /* 0xA3 */ 2007 { 0, 0xA1, 0xF3, aImplDBCSToUniTab_GB_A4 }, /* 0xA4 */ 2008 { 0, 0xA1, 0xF6, aImplDBCSToUniTab_GB_A5 }, /* 0xA5 */ 2009 { 0, 0xA1, 0xF5, aImplDBCSToUniTab_GB_A6 }, /* 0xA6 */ 2010 { 0, 0xA1, 0xF1, aImplDBCSToUniTab_GB_A7 }, /* 0xA7 */ 2011 { 0, 0x40, 0xE9, aImplDBCSToUniTab_GBK_A8 }, /* 0xA8 */ 2012 { 0, 0x40, 0xEF, aImplDBCSToUniTab_GBK_A9 }, /* 0xA9 */ 2013 { 0, 0x40, 0xA0, aImplDBCSToUniTab_GBK_AA }, /* 0xAA */ 2014 { 0, 0x40, 0xA0, aImplDBCSToUniTab_GBK_AB }, /* 0xAB */ 2015 { 0, 0x40, 0xA0, aImplDBCSToUniTab_GBK_AC }, /* 0xAC */ 2016 { 0, 0x40, 0xA0, aImplDBCSToUniTab_GBK_AD }, /* 0xAD */ 2017 { 0, 0x40, 0xA0, aImplDBCSToUniTab_GBK_AE }, /* 0xAE */ 2018 { 0, 0x40, 0xA0, aImplDBCSToUniTab_GBK_AF }, /* 0xAF */ 2019 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_B0 }, /* 0xB0 */ 2020 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_B1 }, /* 0xB1 */ 2021 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_B2 }, /* 0xB2 */ 2022 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_B3 }, /* 0xB3 */ 2023 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_B4 }, /* 0xB4 */ 2024 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_B5 }, /* 0xB5 */ 2025 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_B6 }, /* 0xB6 */ 2026 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_B7 }, /* 0xB7 */ 2027 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_B8 }, /* 0xB8 */ 2028 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_B9 }, /* 0xB9 */ 2029 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_BA }, /* 0xBA */ 2030 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_BB }, /* 0xBB */ 2031 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_BC }, /* 0xBC */ 2032 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_BD }, /* 0xBD */ 2033 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_BE }, /* 0xBE */ 2034 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_BF }, /* 0xBF */ 2035 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_C0 }, /* 0xC0 */ 2036 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_C1 }, /* 0xC1 */ 2037 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_C2 }, /* 0xC2 */ 2038 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_C3 }, /* 0xC3 */ 2039 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_C4 }, /* 0xC4 */ 2040 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_C5 }, /* 0xC5 */ 2041 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_C6 }, /* 0xC6 */ 2042 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_C7 }, /* 0xC7 */ 2043 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_C8 }, /* 0xC8 */ 2044 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_C9 }, /* 0xC9 */ 2045 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_CA }, /* 0xCA */ 2046 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_CB }, /* 0xCB */ 2047 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_CC }, /* 0xCC */ 2048 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_CD }, /* 0xCD */ 2049 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_CE }, /* 0xCE */ 2050 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_CF }, /* 0xCF */ 2051 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_D0 }, /* 0xD0 */ 2052 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_D1 }, /* 0xD1 */ 2053 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_D2 }, /* 0xD2 */ 2054 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_D3 }, /* 0xD3 */ 2055 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_D4 }, /* 0xD4 */ 2056 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_D5 }, /* 0xD5 */ 2057 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_D6 }, /* 0xD6 */ 2058 { 0, 0x40, 0xF9, aImplDBCSToUniTab_GBK_D7 }, /* 0xD7 */ 2059 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_D8 }, /* 0xD8 */ 2060 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_D9 }, /* 0xD9 */ 2061 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_DA }, /* 0xDA */ 2062 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_DB }, /* 0xDB */ 2063 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_DC }, /* 0xDC */ 2064 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_DD }, /* 0xDD */ 2065 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_DE }, /* 0xDE */ 2066 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_DF }, /* 0xDF */ 2067 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_E0 }, /* 0xE0 */ 2068 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_E1 }, /* 0xE1 */ 2069 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_E2 }, /* 0xE2 */ 2070 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_E3 }, /* 0xE3 */ 2071 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_E4 }, /* 0xE4 */ 2072 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_E5 }, /* 0xE5 */ 2073 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_E6 }, /* 0xE6 */ 2074 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_E7 }, /* 0xE7 */ 2075 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_E8 }, /* 0xE8 */ 2076 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_E9 }, /* 0xE9 */ 2077 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_EA }, /* 0xEA */ 2078 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_EB }, /* 0xEB */ 2079 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_EC }, /* 0xEC */ 2080 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_ED }, /* 0xED */ 2081 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_EE }, /* 0xEE */ 2082 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_EF }, /* 0xEF */ 2083 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_F0 }, /* 0xF0 */ 2084 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_F1 }, /* 0xF1 */ 2085 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_F2 }, /* 0xF2 */ 2086 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_F3 }, /* 0xF3 */ 2087 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_F4 }, /* 0xF4 */ 2088 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_F5 }, /* 0xF5 */ 2089 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_F6 }, /* 0xF6 */ 2090 { 0, 0x40, 0xFE, aImplDBCSToUniTab_GBK_F7 }, /* 0xF7 */ 2091 { 0, 0x40, 0xA0, aImplDBCSToUniTab_GBK_F8 }, /* 0xF8 */ 2092 { 0, 0x40, 0xA0, aImplDBCSToUniTab_GBK_F9 }, /* 0xF9 */ 2093 { 0, 0x40, 0xA0, aImplDBCSToUniTab_GBK_FA }, /* 0xFA */ 2094 { 0, 0x40, 0xA0, aImplDBCSToUniTab_GBK_FB }, /* 0xFB */ 2095 { 0, 0x40, 0xA0, aImplDBCSToUniTab_GBK_FC }, /* 0xFC */ 2096 { 0, 0x40, 0xA0, aImplDBCSToUniTab_GBK_FD }, /* 0xFD */ 2097 { 0, 0x40, 0x4F, aImplDBCSToUniTab_GBK_FE }, /* 0xFE */ 2098 { 0, 1, 0, NULL } /* 0xFF */ 2099}; 2100 2101/* ----------------------------------------------------------------------- */ 2102 2103static ImplUniToDBCSHighTab const aMS936DBCSHighTab[256] = 2104{ 2105 { 0x00, 0xFC, aImplUniToDBCSTab_GB_00 }, /* 0x00 */ 2106 { 0x01, 0xDC, aImplUniToDBCSTab_GB_01 }, /* 0x01 */ 2107 { 0x51, 0xD9, aImplUniToDBCSTab_GBK_02 }, /* 0x02 */ 2108 { 0x91, 0xC9, aImplUniToDBCSTab_GB_03 }, /* 0x03 */ 2109 { 0x01, 0x51, aImplUniToDBCSTab_GB_04 }, /* 0x04 */ 2110 { 1, 0, NULL }, /* 0x05 */ 2111 { 1, 0, NULL }, /* 0x06 */ 2112 { 1, 0, NULL }, /* 0x07 */ 2113 { 1, 0, NULL }, /* 0x08 */ 2114 { 1, 0, NULL }, /* 0x09 */ 2115 { 1, 0, NULL }, /* 0x0A */ 2116 { 1, 0, NULL }, /* 0x0B */ 2117 { 1, 0, NULL }, /* 0x0C */ 2118 { 1, 0, NULL }, /* 0x0D */ 2119 { 1, 0, NULL }, /* 0x0E */ 2120 { 1, 0, NULL }, /* 0x0F */ 2121 { 1, 0, NULL }, /* 0x10 */ 2122 { 1, 0, NULL }, /* 0x11 */ 2123 { 1, 0, NULL }, /* 0x12 */ 2124 { 1, 0, NULL }, /* 0x13 */ 2125 { 1, 0, NULL }, /* 0x14 */ 2126 { 1, 0, NULL }, /* 0x15 */ 2127 { 1, 0, NULL }, /* 0x16 */ 2128 { 1, 0, NULL }, /* 0x17 */ 2129 { 1, 0, NULL }, /* 0x18 */ 2130 { 1, 0, NULL }, /* 0x19 */ 2131 { 1, 0, NULL }, /* 0x1A */ 2132 { 1, 0, NULL }, /* 0x1B */ 2133 { 1, 0, NULL }, /* 0x1C */ 2134 { 1, 0, NULL }, /* 0x1D */ 2135 { 0x3F, 0x3F, aImplUniToDBCSTab_APPLECHINSIMP_1E }, /* 0x1E */ /* we convert this char also to unicode */ 2136 { 1, 0, NULL }, /* 0x1F */ 2137 { 0x10, 0xAC, aImplUniToDBCSTab_GBK_20 }, /* 0x20 */ 2138 { 0x03, 0x99, aImplUniToDBCSTab_GBK_21 }, /* 0x21 */ 2139 { 0x08, 0xEF, aImplUniToDBCSTab_GBK_22 }, /* 0x22 */ 2140 { 0x12, 0x12, aImplUniToDBCSTab_GB_23 }, /* 0x23 */ 2141 { 0x60, 0x9B, aImplUniToDBCSTab_GB_24 }, /* 0x24 */ 2142 { 0x00, 0xE5, aImplUniToDBCSTab_GBK_25 }, /* 0x25 */ 2143 { 0x05, 0x42, aImplUniToDBCSTab_GBK_26 }, /* 0x26 */ 2144 { 1, 0, NULL }, /* 0x27 */ 2145 { 1, 0, NULL }, /* 0x28 */ 2146 { 1, 0, NULL }, /* 0x29 */ 2147 { 1, 0, NULL }, /* 0x2A */ 2148 { 1, 0, NULL }, /* 0x2B */ 2149 { 1, 0, NULL }, /* 0x2C */ 2150 { 1, 0, NULL }, /* 0x2D */ 2151 { 1, 0, NULL }, /* 0x2E */ 2152 { 1, 0, NULL }, /* 0x2F */ 2153 { 0x00, 0xFE, aImplUniToDBCSTab_GBK_30 }, /* 0x30 */ 2154 { 0x05, 0x29, aImplUniToDBCSTab_GB_31 }, /* 0x31 */ 2155 { 0x20, 0xA3, aImplUniToDBCSTab_GBK_32 }, /* 0x32 */ 2156 { 0x8E, 0xD5, aImplUniToDBCSTab_GBK_33 }, /* 0x33 */ 2157 { 1, 0, NULL }, /* 0x34 */ 2158 { 1, 0, NULL }, /* 0x35 */ 2159 { 1, 0, NULL }, /* 0x36 */ 2160 { 1, 0, NULL }, /* 0x37 */ 2161 { 1, 0, NULL }, /* 0x38 */ 2162 { 1, 0, NULL }, /* 0x39 */ 2163 { 1, 0, NULL }, /* 0x3A */ 2164 { 1, 0, NULL }, /* 0x3B */ 2165 { 1, 0, NULL }, /* 0x3C */ 2166 { 1, 0, NULL }, /* 0x3D */ 2167 { 1, 0, NULL }, /* 0x3E */ 2168 { 1, 0, NULL }, /* 0x3F */ 2169 { 1, 0, NULL }, /* 0x40 */ 2170 { 1, 0, NULL }, /* 0x41 */ 2171 { 1, 0, NULL }, /* 0x42 */ 2172 { 1, 0, NULL }, /* 0x43 */ 2173 { 1, 0, NULL }, /* 0x44 */ 2174 { 1, 0, NULL }, /* 0x45 */ 2175 { 1, 0, NULL }, /* 0x46 */ 2176 { 1, 0, NULL }, /* 0x47 */ 2177 { 1, 0, NULL }, /* 0x48 */ 2178 { 1, 0, NULL }, /* 0x49 */ 2179 { 1, 0, NULL }, /* 0x4A */ 2180 { 1, 0, NULL }, /* 0x4B */ 2181 { 1, 0, NULL }, /* 0x4C */ 2182 { 1, 0, NULL }, /* 0x4D */ 2183 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_4E }, /* 0x4E */ 2184 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_4F }, /* 0x4F */ 2185 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_50 }, /* 0x50 */ 2186 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_51 }, /* 0x51 */ 2187 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_52 }, /* 0x52 */ 2188 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_53 }, /* 0x53 */ 2189 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_54 }, /* 0x54 */ 2190 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_55 }, /* 0x55 */ 2191 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_56 }, /* 0x56 */ 2192 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_57 }, /* 0x57 */ 2193 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_58 }, /* 0x58 */ 2194 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_59 }, /* 0x59 */ 2195 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_5A }, /* 0x5A */ 2196 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_5B }, /* 0x5B */ 2197 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_5C }, /* 0x5C */ 2198 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_5D }, /* 0x5D */ 2199 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_5E }, /* 0x5E */ 2200 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_5F }, /* 0x5F */ 2201 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_60 }, /* 0x60 */ 2202 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_61 }, /* 0x61 */ 2203 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_62 }, /* 0x62 */ 2204 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_63 }, /* 0x63 */ 2205 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_64 }, /* 0x64 */ 2206 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_65 }, /* 0x65 */ 2207 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_66 }, /* 0x66 */ 2208 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_67 }, /* 0x67 */ 2209 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_68 }, /* 0x68 */ 2210 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_69 }, /* 0x69 */ 2211 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_6A }, /* 0x6A */ 2212 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_6B }, /* 0x6B */ 2213 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_6C }, /* 0x6C */ 2214 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_6D }, /* 0x6D */ 2215 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_6E }, /* 0x6E */ 2216 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_6F }, /* 0x6F */ 2217 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_70 }, /* 0x70 */ 2218 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_71 }, /* 0x71 */ 2219 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_72 }, /* 0x72 */ 2220 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_73 }, /* 0x73 */ 2221 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_74 }, /* 0x74 */ 2222 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_75 }, /* 0x75 */ 2223 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_76 }, /* 0x76 */ 2224 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_77 }, /* 0x77 */ 2225 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_78 }, /* 0x78 */ 2226 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_79 }, /* 0x79 */ 2227 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_7A }, /* 0x7A */ 2228 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_7B }, /* 0x7B */ 2229 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_7C }, /* 0x7C */ 2230 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_7D }, /* 0x7D */ 2231 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_7E }, /* 0x7E */ 2232 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_7F }, /* 0x7F */ 2233 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_80 }, /* 0x80 */ 2234 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_81 }, /* 0x81 */ 2235 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_82 }, /* 0x82 */ 2236 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_83 }, /* 0x83 */ 2237 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_84 }, /* 0x84 */ 2238 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_85 }, /* 0x85 */ 2239 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_86 }, /* 0x86 */ 2240 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_87 }, /* 0x87 */ 2241 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_88 }, /* 0x88 */ 2242 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_89 }, /* 0x89 */ 2243 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_8A }, /* 0x8A */ 2244 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_8B }, /* 0x8B */ 2245 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_8C }, /* 0x8C */ 2246 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_8D }, /* 0x8D */ 2247 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_8E }, /* 0x8E */ 2248 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_8F }, /* 0x8F */ 2249 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_90 }, /* 0x90 */ 2250 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_91 }, /* 0x91 */ 2251 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_92 }, /* 0x92 */ 2252 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_93 }, /* 0x93 */ 2253 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_94 }, /* 0x94 */ 2254 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_95 }, /* 0x95 */ 2255 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_96 }, /* 0x96 */ 2256 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_97 }, /* 0x97 */ 2257 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_98 }, /* 0x98 */ 2258 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_99 }, /* 0x99 */ 2259 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_9A }, /* 0x9A */ 2260 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_9B }, /* 0x9B */ 2261 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_9C }, /* 0x9C */ 2262 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_9D }, /* 0x9D */ 2263 { 0x00, 0xFF, aImplUniToDBCSTab_GBK_9E }, /* 0x9E */ 2264 { 0x00, 0xA5, aImplUniToDBCSTab_GBK_9F }, /* 0x9F */ 2265 { 1, 0, NULL }, /* 0xA0 */ 2266 { 1, 0, NULL }, /* 0xA1 */ 2267 { 1, 0, NULL }, /* 0xA2 */ 2268 { 1, 0, NULL }, /* 0xA3 */ 2269 { 1, 0, NULL }, /* 0xA4 */ 2270 { 1, 0, NULL }, /* 0xA5 */ 2271 { 1, 0, NULL }, /* 0xA6 */ 2272 { 1, 0, NULL }, /* 0xA7 */ 2273 { 1, 0, NULL }, /* 0xA8 */ 2274 { 1, 0, NULL }, /* 0xA9 */ 2275 { 1, 0, NULL }, /* 0xAA */ 2276 { 1, 0, NULL }, /* 0xAB */ 2277 { 1, 0, NULL }, /* 0xAC */ 2278 { 1, 0, NULL }, /* 0xAD */ 2279 { 1, 0, NULL }, /* 0xAE */ 2280 { 1, 0, NULL }, /* 0xAF */ 2281 { 1, 0, NULL }, /* 0xB0 */ 2282 { 1, 0, NULL }, /* 0xB1 */ 2283 { 1, 0, NULL }, /* 0xB2 */ 2284 { 1, 0, NULL }, /* 0xB3 */ 2285 { 1, 0, NULL }, /* 0xB4 */ 2286 { 1, 0, NULL }, /* 0xB5 */ 2287 { 1, 0, NULL }, /* 0xB6 */ 2288 { 1, 0, NULL }, /* 0xB7 */ 2289 { 1, 0, NULL }, /* 0xB8 */ 2290 { 1, 0, NULL }, /* 0xB9 */ 2291 { 1, 0, NULL }, /* 0xBA */ 2292 { 1, 0, NULL }, /* 0xBB */ 2293 { 1, 0, NULL }, /* 0xBC */ 2294 { 1, 0, NULL }, /* 0xBD */ 2295 { 1, 0, NULL }, /* 0xBE */ 2296 { 1, 0, NULL }, /* 0xBF */ 2297 { 1, 0, NULL }, /* 0xC0 */ 2298 { 1, 0, NULL }, /* 0xC1 */ 2299 { 1, 0, NULL }, /* 0xC2 */ 2300 { 1, 0, NULL }, /* 0xC3 */ 2301 { 1, 0, NULL }, /* 0xC4 */ 2302 { 1, 0, NULL }, /* 0xC5 */ 2303 { 1, 0, NULL }, /* 0xC6 */ 2304 { 1, 0, NULL }, /* 0xC7 */ 2305 { 1, 0, NULL }, /* 0xC8 */ 2306 { 1, 0, NULL }, /* 0xC9 */ 2307 { 1, 0, NULL }, /* 0xCA */ 2308 { 1, 0, NULL }, /* 0xCB */ 2309 { 1, 0, NULL }, /* 0xCC */ 2310 { 1, 0, NULL }, /* 0xCD */ 2311 { 1, 0, NULL }, /* 0xCE */ 2312 { 1, 0, NULL }, /* 0xCF */ 2313 { 1, 0, NULL }, /* 0xD0 */ 2314 { 1, 0, NULL }, /* 0xD1 */ 2315 { 1, 0, NULL }, /* 0xD2 */ 2316 { 1, 0, NULL }, /* 0xD3 */ 2317 { 1, 0, NULL }, /* 0xD4 */ 2318 { 1, 0, NULL }, /* 0xD5 */ 2319 { 1, 0, NULL }, /* 0xD6 */ 2320 { 1, 0, NULL }, /* 0xD7 */ 2321 { 1, 0, NULL }, /* 0xD8 */ 2322 { 1, 0, NULL }, /* 0xD9 */ 2323 { 1, 0, NULL }, /* 0xDA */ 2324 { 1, 0, NULL }, /* 0xDB */ 2325 { 1, 0, NULL }, /* 0xDC */ 2326 { 1, 0, NULL }, /* 0xDD */ 2327 { 1, 0, NULL }, /* 0xDE */ 2328 { 1, 0, NULL }, /* 0xDF */ 2329 { 1, 0, NULL }, /* 0xE0 */ 2330 { 1, 0, NULL }, /* 0xE1 */ 2331 { 1, 0, NULL }, /* 0xE2 */ 2332 { 1, 0, NULL }, /* 0xE3 */ 2333 { 1, 0, NULL }, /* 0xE4 */ 2334 { 1, 0, NULL }, /* 0xE5 */ 2335 { 1, 0, NULL }, /* 0xE6 */ 2336 { 1, 0, NULL }, /* 0xE7 */ 2337 { 1, 0, NULL }, /* 0xE8 */ 2338 { 1, 0, NULL }, /* 0xE9 */ 2339 { 1, 0, NULL }, /* 0xEA */ 2340 { 1, 0, NULL }, /* 0xEB */ 2341 { 1, 0, NULL }, /* 0xEC */ 2342 { 1, 0, NULL }, /* 0xED */ 2343 { 1, 0, NULL }, /* 0xEE */ 2344 { 1, 0, NULL }, /* 0xEF */ 2345 { 1, 0, NULL }, /* 0xF0 */ 2346 { 1, 0, NULL }, /* 0xF1 */ 2347 { 1, 0, NULL }, /* 0xF2 */ 2348 { 1, 0, NULL }, /* 0xF3 */ 2349 { 1, 0, NULL }, /* 0xF4 */ 2350 { 1, 0, NULL }, /* 0xF5 */ 2351 { 1, 0, NULL }, /* 0xF6 */ 2352 { 1, 0, NULL }, /* 0xF7 */ 2353 { 1, 0, NULL }, /* 0xF8 */ 2354 { 0x2C, 0xF1, aImplUniToDBCSTab_GBK_F9 }, /* 0xF9 */ 2355 { 0x0C, 0x29, aImplUniToDBCSTab_GBK_FA }, /* 0xFA */ 2356 { 1, 0, NULL }, /* 0xFB */ 2357 { 1, 0, NULL }, /* 0xFC */ 2358 { 1, 0, NULL }, /* 0xFD */ 2359 { 0x30, 0x6B, aImplUniToDBCSTab_GBK_FE }, /* 0xFE */ 2360 { 0x01, 0xE5, aImplUniToDBCSTab_GBK_FF } /* 0xFF */ 2361}; 2362 2363/* ----------------------------------------------------------------------- */ 2364 2365static ImplDBCSConvertData const aImplMS936DBCSCvtData = 2366{ 2367 aMS936UniLeadTab, 2368 aMS936DBCSHighTab, 2369 0x00, 0xFF, 2370 0x40, 0xFE, 2371 aImplMS936DBCSEUDCTab, 2372 DBCS_EUDC_MS936_COUNT 2373}; 2374 2375/* ----------------------------------------------------------------------- */ 2376 2377static ImplTextEncodingData const aImplMS936TextEncodingData 2378 = { { &aImplMS936DBCSCvtData, 2379 ImplDBCSToUnicode, 2380 ImplUnicodeToDBCS, 2381 NULL, 2382 NULL, 2383 NULL, 2384 NULL, 2385 NULL, 2386 NULL }, 2387 1, 2388 2, 2389 2, 2390 134, 2391 "euc-cn", 2392 "gb2312", 2393 RTL_TEXTENCODING_INFO_MULTIBYTE }; 2394 /* WIN/DOS/OS2, SCRIPT_CHINESE_SIMPLIFIED, pc code page 936, mac encoding 2395 25 */ 2396 2397/* ======================================================================= */ 2398 2399static ImplDBCSToUniLeadTab const aAPPLECHINSIMPUniLeadTab[256] = 2400{ 2401 { 0x0000, 0, 0, NULL }, /* 0x00 */ 2402 { 0x0001, 0, 0, NULL }, /* 0x01 */ 2403 { 0x0002, 0, 0, NULL }, /* 0x02 */ 2404 { 0x0003, 0, 0, NULL }, /* 0x03 */ 2405 { 0x0004, 0, 0, NULL }, /* 0x04 */ 2406 { 0x0005, 0, 0, NULL }, /* 0x05 */ 2407 { 0x0006, 0, 0, NULL }, /* 0x06 */ 2408 { 0x0007, 0, 0, NULL }, /* 0x07 */ 2409 { 0x0008, 0, 0, NULL }, /* 0x08 */ 2410 { 0x0009, 0, 0, NULL }, /* 0x09 */ 2411 { 0x000A, 0, 0, NULL }, /* 0x0A */ 2412 { 0x000B, 0, 0, NULL }, /* 0x0B */ 2413 { 0x000C, 0, 0, NULL }, /* 0x0C */ 2414 { 0x000D, 0, 0, NULL }, /* 0x0D */ 2415 { 0x000E, 0, 0, NULL }, /* 0x0E */ 2416 { 0x000F, 0, 0, NULL }, /* 0x0F */ 2417 { 0x0010, 0, 0, NULL }, /* 0x10 */ 2418 { 0x0011, 0, 0, NULL }, /* 0x11 */ 2419 { 0x0012, 0, 0, NULL }, /* 0x12 */ 2420 { 0x0013, 0, 0, NULL }, /* 0x13 */ 2421 { 0x0014, 0, 0, NULL }, /* 0x14 */ 2422 { 0x0015, 0, 0, NULL }, /* 0x15 */ 2423 { 0x0016, 0, 0, NULL }, /* 0x16 */ 2424 { 0x0017, 0, 0, NULL }, /* 0x17 */ 2425 { 0x0018, 0, 0, NULL }, /* 0x18 */ 2426 { 0x0019, 0, 0, NULL }, /* 0x19 */ 2427 { 0x001A, 0, 0, NULL }, /* 0x1A */ 2428 { 0x001B, 0, 0, NULL }, /* 0x1B */ 2429 { 0x001C, 0, 0, NULL }, /* 0x1C */ 2430 { 0x001D, 0, 0, NULL }, /* 0x1D */ 2431 { 0x001E, 0, 0, NULL }, /* 0x1E */ 2432 { 0x001F, 0, 0, NULL }, /* 0x1F */ 2433 { 0x0020, 0, 0, NULL }, /* 0x20 */ 2434 { 0x0021, 0, 0, NULL }, /* 0x21 */ 2435 { 0x0022, 0, 0, NULL }, /* 0x22 */ 2436 { 0x0023, 0, 0, NULL }, /* 0x23 */ 2437 { 0x0024, 0, 0, NULL }, /* 0x24 */ 2438 { 0x0025, 0, 0, NULL }, /* 0x25 */ 2439 { 0x0026, 0, 0, NULL }, /* 0x26 */ 2440 { 0x0027, 0, 0, NULL }, /* 0x27 */ 2441 { 0x0028, 0, 0, NULL }, /* 0x28 */ 2442 { 0x0029, 0, 0, NULL }, /* 0x29 */ 2443 { 0x002A, 0, 0, NULL }, /* 0x2A */ 2444 { 0x002B, 0, 0, NULL }, /* 0x2B */ 2445 { 0x002C, 0, 0, NULL }, /* 0x2C */ 2446 { 0x002D, 0, 0, NULL }, /* 0x2D */ 2447 { 0x002E, 0, 0, NULL }, /* 0x2E */ 2448 { 0x002F, 0, 0, NULL }, /* 0x2F */ 2449 { 0x0030, 0, 0, NULL }, /* 0x30 */ 2450 { 0x0031, 0, 0, NULL }, /* 0x31 */ 2451 { 0x0032, 0, 0, NULL }, /* 0x32 */ 2452 { 0x0033, 0, 0, NULL }, /* 0x33 */ 2453 { 0x0034, 0, 0, NULL }, /* 0x34 */ 2454 { 0x0035, 0, 0, NULL }, /* 0x35 */ 2455 { 0x0036, 0, 0, NULL }, /* 0x36 */ 2456 { 0x0037, 0, 0, NULL }, /* 0x37 */ 2457 { 0x0038, 0, 0, NULL }, /* 0x38 */ 2458 { 0x0039, 0, 0, NULL }, /* 0x39 */ 2459 { 0x003A, 0, 0, NULL }, /* 0x3A */ 2460 { 0x003B, 0, 0, NULL }, /* 0x3B */ 2461 { 0x003C, 0, 0, NULL }, /* 0x3C */ 2462 { 0x003D, 0, 0, NULL }, /* 0x3D */ 2463 { 0x003E, 0, 0, NULL }, /* 0x3E */ 2464 { 0x003F, 0, 0, NULL }, /* 0x3F */ 2465 { 0x0040, 0, 0, NULL }, /* 0x40 */ 2466 { 0x0041, 0, 0, NULL }, /* 0x41 */ 2467 { 0x0042, 0, 0, NULL }, /* 0x42 */ 2468 { 0x0043, 0, 0, NULL }, /* 0x43 */ 2469 { 0x0044, 0, 0, NULL }, /* 0x44 */ 2470 { 0x0045, 0, 0, NULL }, /* 0x45 */ 2471 { 0x0046, 0, 0, NULL }, /* 0x46 */ 2472 { 0x0047, 0, 0, NULL }, /* 0x47 */ 2473 { 0x0048, 0, 0, NULL }, /* 0x48 */ 2474 { 0x0049, 0, 0, NULL }, /* 0x49 */ 2475 { 0x004A, 0, 0, NULL }, /* 0x4A */ 2476 { 0x004B, 0, 0, NULL }, /* 0x4B */ 2477 { 0x004C, 0, 0, NULL }, /* 0x4C */ 2478 { 0x004D, 0, 0, NULL }, /* 0x4D */ 2479 { 0x004E, 0, 0, NULL }, /* 0x4E */ 2480 { 0x004F, 0, 0, NULL }, /* 0x4F */ 2481 { 0x0050, 0, 0, NULL }, /* 0x50 */ 2482 { 0x0051, 0, 0, NULL }, /* 0x51 */ 2483 { 0x0052, 0, 0, NULL }, /* 0x52 */ 2484 { 0x0053, 0, 0, NULL }, /* 0x53 */ 2485 { 0x0054, 0, 0, NULL }, /* 0x54 */ 2486 { 0x0055, 0, 0, NULL }, /* 0x55 */ 2487 { 0x0056, 0, 0, NULL }, /* 0x56 */ 2488 { 0x0057, 0, 0, NULL }, /* 0x57 */ 2489 { 0x0058, 0, 0, NULL }, /* 0x58 */ 2490 { 0x0059, 0, 0, NULL }, /* 0x59 */ 2491 { 0x005A, 0, 0, NULL }, /* 0x5A */ 2492 { 0x005B, 0, 0, NULL }, /* 0x5B */ 2493 { 0x005C, 0, 0, NULL }, /* 0x5C */ 2494 { 0x005D, 0, 0, NULL }, /* 0x5D */ 2495 { 0x005E, 0, 0, NULL }, /* 0x5E */ 2496 { 0x005F, 0, 0, NULL }, /* 0x5F */ 2497 { 0x0060, 0, 0, NULL }, /* 0x60 */ 2498 { 0x0061, 0, 0, NULL }, /* 0x61 */ 2499 { 0x0062, 0, 0, NULL }, /* 0x62 */ 2500 { 0x0063, 0, 0, NULL }, /* 0x63 */ 2501 { 0x0064, 0, 0, NULL }, /* 0x64 */ 2502 { 0x0065, 0, 0, NULL }, /* 0x65 */ 2503 { 0x0066, 0, 0, NULL }, /* 0x66 */ 2504 { 0x0067, 0, 0, NULL }, /* 0x67 */ 2505 { 0x0068, 0, 0, NULL }, /* 0x68 */ 2506 { 0x0069, 0, 0, NULL }, /* 0x69 */ 2507 { 0x006A, 0, 0, NULL }, /* 0x6A */ 2508 { 0x006B, 0, 0, NULL }, /* 0x6B */ 2509 { 0x006C, 0, 0, NULL }, /* 0x6C */ 2510 { 0x006D, 0, 0, NULL }, /* 0x6D */ 2511 { 0x006E, 0, 0, NULL }, /* 0x6E */ 2512 { 0x006F, 0, 0, NULL }, /* 0x6F */ 2513 { 0x0070, 0, 0, NULL }, /* 0x70 */ 2514 { 0x0071, 0, 0, NULL }, /* 0x71 */ 2515 { 0x0072, 0, 0, NULL }, /* 0x72 */ 2516 { 0x0073, 0, 0, NULL }, /* 0x73 */ 2517 { 0x0074, 0, 0, NULL }, /* 0x74 */ 2518 { 0x0075, 0, 0, NULL }, /* 0x75 */ 2519 { 0x0076, 0, 0, NULL }, /* 0x76 */ 2520 { 0x0077, 0, 0, NULL }, /* 0x77 */ 2521 { 0x0078, 0, 0, NULL }, /* 0x78 */ 2522 { 0x0079, 0, 0, NULL }, /* 0x79 */ 2523 { 0x007A, 0, 0, NULL }, /* 0x7A */ 2524 { 0x007B, 0, 0, NULL }, /* 0x7B */ 2525 { 0x007C, 0, 0, NULL }, /* 0x7C */ 2526 { 0x007D, 0, 0, NULL }, /* 0x7D */ 2527 { 0x007E, 0, 0, NULL }, /* 0x7E */ 2528 { 0x007F, 0, 0, NULL }, /* 0x7F */ 2529 { 0, 1, 0, NULL }, /* 0x80 */ 2530 { 0xF880, 0, 0, NULL }, /* 0x81 */ 2531 { 0xF881, 0, 0, NULL }, /* 0x82 */ 2532 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x83 */ /* We convert this as double byte */ 2533 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x84 */ /* We convert this as double byte */ 2534 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x85 */ /* We convert this as double byte */ 2535 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x86 */ /* We convert this as double byte */ 2536 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x87 */ /* We convert this as double byte */ 2537 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x88 */ /* We convert this as double byte */ 2538 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x89 */ /* We convert this as double byte */ 2539 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x8A */ /* We convert this as double byte */ 2540 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x8B */ /* We convert this as double byte */ 2541 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x8C */ /* We convert this as double byte */ 2542 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x8D */ /* We convert this as double byte */ 2543 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x8E */ /* We convert this as double byte */ 2544 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x8F */ /* We convert this as double byte */ 2545 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x90 */ /* We convert this as double byte */ 2546 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x91 */ /* We convert this as double byte */ 2547 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x92 */ /* We convert this as double byte */ 2548 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x93 */ /* We convert this as double byte */ 2549 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x94 */ /* We convert this as double byte */ 2550 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x95 */ /* We convert this as double byte */ 2551 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x96 */ /* We convert this as double byte */ 2552 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x97 */ /* We convert this as double byte */ 2553 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x98 */ /* We convert this as double byte */ 2554 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x99 */ /* We convert this as double byte */ 2555 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x9A */ /* We convert this as double byte */ 2556 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x9B */ /* We convert this as double byte */ 2557 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x9C */ /* We convert this as double byte */ 2558 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x9D */ /* We convert this as double byte */ 2559 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x9E */ /* We convert this as double byte */ 2560 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0x9F */ /* We convert this as double byte */ 2561 { 0x00A0, 0, 0, NULL }, /* 0xA0 */ 2562 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GB_A1 }, /* 0xA1 */ 2563 { 0, 0xA1, 0xFC, aImplDBCSToUniTab_GB_A2 }, /* 0xA2 */ 2564 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GB_A3 }, /* 0xA3 */ 2565 { 0, 0xA1, 0xF3, aImplDBCSToUniTab_GB_A4 }, /* 0xA4 */ 2566 { 0, 0xA1, 0xF6, aImplDBCSToUniTab_GB_A5 }, /* 0xA5 */ 2567 { 0, 0xA1, 0xF5, aImplDBCSToUniTab_GB_A6 }, /* 0xA6 */ 2568 { 0, 0xA1, 0xF1, aImplDBCSToUniTab_GB_A7 }, /* 0xA7 */ 2569 { 0, 0xA1, 0xE9, aImplDBCSToUniTab_GBK_A8+GBKOFF }, /* 0xA8 */ 2570 { 0, 0xA1, 0xEF, aImplDBCSToUniTab_GBK_A9+GBKOFF }, /* 0xA9 */ 2571 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0xAA */ /* We convert this as double byte */ 2572 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0xAB */ /* We convert this as double byte */ 2573 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0xAC */ /* We convert this as double byte */ 2574 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0xAD */ /* We convert this as double byte */ 2575 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0xAE */ /* We convert this as double byte */ 2576 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0xAF */ /* We convert this as double byte */ 2577 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_B0+GBKOFF }, /* 0xB0 */ 2578 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_B1+GBKOFF }, /* 0xB1 */ 2579 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_B2+GBKOFF }, /* 0xB2 */ 2580 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_B3+GBKOFF }, /* 0xB3 */ 2581 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_B4+GBKOFF }, /* 0xB4 */ 2582 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_B5+GBKOFF }, /* 0xB5 */ 2583 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_B6+GBKOFF }, /* 0xB6 */ 2584 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_B7+GBKOFF }, /* 0xB7 */ 2585 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_B8+GBKOFF }, /* 0xB8 */ 2586 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_B9+GBKOFF }, /* 0xB9 */ 2587 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_BA+GBKOFF }, /* 0xBA */ 2588 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_BB+GBKOFF }, /* 0xBB */ 2589 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_BC+GBKOFF }, /* 0xBC */ 2590 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_BD+GBKOFF }, /* 0xBD */ 2591 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_BE+GBKOFF }, /* 0xBE */ 2592 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_BF+GBKOFF }, /* 0xBF */ 2593 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_C0+GBKOFF }, /* 0xC0 */ 2594 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_C1+GBKOFF }, /* 0xC1 */ 2595 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_C2+GBKOFF }, /* 0xC2 */ 2596 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_C3+GBKOFF }, /* 0xC3 */ 2597 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_C4+GBKOFF }, /* 0xC4 */ 2598 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_C5+GBKOFF }, /* 0xC5 */ 2599 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_C6+GBKOFF }, /* 0xC6 */ 2600 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_C7+GBKOFF }, /* 0xC7 */ 2601 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_C8+GBKOFF }, /* 0xC8 */ 2602 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_C9+GBKOFF }, /* 0xC9 */ 2603 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_CA+GBKOFF }, /* 0xCA */ 2604 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_CB+GBKOFF }, /* 0xCB */ 2605 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_CC+GBKOFF }, /* 0xCC */ 2606 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_CD+GBKOFF }, /* 0xCD */ 2607 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_CE+GBKOFF }, /* 0xCE */ 2608 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_CF+GBKOFF }, /* 0xCF */ 2609 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_D0+GBKOFF }, /* 0xD0 */ 2610 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_D1+GBKOFF }, /* 0xD1 */ 2611 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_D2+GBKOFF }, /* 0xD2 */ 2612 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_D3+GBKOFF }, /* 0xD3 */ 2613 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_D4+GBKOFF }, /* 0xD4 */ 2614 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_D5+GBKOFF }, /* 0xD5 */ 2615 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_D6+GBKOFF }, /* 0xD6 */ 2616 { 0, 0xA1, 0xF9, aImplDBCSToUniTab_GBK_D7+GBKOFF }, /* 0xD7 */ 2617 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_D8+GBKOFF }, /* 0xD8 */ 2618 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_D9+GBKOFF }, /* 0xD9 */ 2619 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_DA+GBKOFF }, /* 0xDA */ 2620 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_DB+GBKOFF }, /* 0xDB */ 2621 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_DC+GBKOFF }, /* 0xDC */ 2622 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_DD+GBKOFF }, /* 0xDD */ 2623 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_DE+GBKOFF }, /* 0xDE */ 2624 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_DF+GBKOFF }, /* 0xDF */ 2625 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_E0+GBKOFF }, /* 0xE0 */ 2626 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_E1+GBKOFF }, /* 0xE1 */ 2627 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_E2+GBKOFF }, /* 0xE2 */ 2628 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_E3+GBKOFF }, /* 0xE3 */ 2629 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_E4+GBKOFF }, /* 0xE4 */ 2630 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_E5+GBKOFF }, /* 0xE5 */ 2631 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_E6+GBKOFF }, /* 0xE6 */ 2632 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_E7+GBKOFF }, /* 0xE7 */ 2633 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_E8+GBKOFF }, /* 0xE8 */ 2634 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_E9+GBKOFF }, /* 0xE9 */ 2635 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_EA+GBKOFF }, /* 0xEA */ 2636 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_EB+GBKOFF }, /* 0xEB */ 2637 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_EC+GBKOFF }, /* 0xEC */ 2638 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_ED+GBKOFF }, /* 0xED */ 2639 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_EE+GBKOFF }, /* 0xEE */ 2640 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_EF+GBKOFF }, /* 0xEF */ 2641 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_F0+GBKOFF }, /* 0xF0 */ 2642 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_F1+GBKOFF }, /* 0xF1 */ 2643 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_F2+GBKOFF }, /* 0xF2 */ 2644 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_F3+GBKOFF }, /* 0xF3 */ 2645 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_F4+GBKOFF }, /* 0xF4 */ 2646 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_F5+GBKOFF }, /* 0xF5 */ 2647 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_F6+GBKOFF }, /* 0xF6 */ 2648 { 0, 0xA1, 0xFE, aImplDBCSToUniTab_GBK_F7+GBKOFF }, /* 0xF7 */ 2649 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0xF8 */ /* We convert this as double byte */ 2650 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0xF9 */ /* We convert this as double byte */ 2651 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0xFA */ /* We convert this as double byte */ 2652 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0xFB */ /* We convert this as double byte */ 2653 { 0, 1, 0, aImplDoubleByteIdentifierTab }, /* 0xFC */ /* We convert this as double byte */ 2654 { 0x00A9, 0, 0, NULL }, /* 0xFD */ 2655 { 0x2122, 0, 0, NULL }, /* 0xFE */ 2656 { 0x2026, 0, 0, NULL } /* 0xFF */ 2657}; 2658 2659/* ----------------------------------------------------------------------- */ 2660 2661static ImplUniToDBCSHighTab const aAPPLECHINSIMPDBCSHighTab[256] = 2662{ 2663 { 0x00, 0xFC, aImplUniToDBCSTab_APPLECHINSIMP_00 }, /* 0x00 */ 2664 { 0x01, 0xDC, aImplUniToDBCSTab_GB_01 }, /* 0x01 */ 2665 { 0x51, 0xC9, aImplUniToDBCSTab_GB_02 }, /* 0x02 */ 2666 { 0x91, 0xC9, aImplUniToDBCSTab_GB_03 }, /* 0x03 */ 2667 { 0x01, 0x51, aImplUniToDBCSTab_GB_04 }, /* 0x04 */ 2668 { 1, 0, NULL }, /* 0x05 */ 2669 { 1, 0, NULL }, /* 0x06 */ 2670 { 1, 0, NULL }, /* 0x07 */ 2671 { 1, 0, NULL }, /* 0x08 */ 2672 { 1, 0, NULL }, /* 0x09 */ 2673 { 1, 0, NULL }, /* 0x0A */ 2674 { 1, 0, NULL }, /* 0x0B */ 2675 { 1, 0, NULL }, /* 0x0C */ 2676 { 1, 0, NULL }, /* 0x0D */ 2677 { 1, 0, NULL }, /* 0x0E */ 2678 { 1, 0, NULL }, /* 0x0F */ 2679 { 1, 0, NULL }, /* 0x10 */ 2680 { 1, 0, NULL }, /* 0x11 */ 2681 { 1, 0, NULL }, /* 0x12 */ 2682 { 1, 0, NULL }, /* 0x13 */ 2683 { 1, 0, NULL }, /* 0x14 */ 2684 { 1, 0, NULL }, /* 0x15 */ 2685 { 1, 0, NULL }, /* 0x16 */ 2686 { 1, 0, NULL }, /* 0x17 */ 2687 { 1, 0, NULL }, /* 0x18 */ 2688 { 1, 0, NULL }, /* 0x19 */ 2689 { 1, 0, NULL }, /* 0x1A */ 2690 { 1, 0, NULL }, /* 0x1B */ 2691 { 1, 0, NULL }, /* 0x1C */ 2692 { 1, 0, NULL }, /* 0x1D */ 2693 { 0x3F, 0x3F, aImplUniToDBCSTab_APPLECHINSIMP_1E }, /* 0x1E */ 2694 { 1, 0, NULL }, /* 0x1F */ 2695 { 0x14, 0x3E, aImplUniToDBCSTab_GB_20 }, /* 0x20 */ 2696 { 0x03, 0x93, aImplUniToDBCSTab_APPLECHINSIMP_21 }, /* 0x21 */ 2697 { 0x08, 0xEF, aImplUniToDBCSTab_GB_22 }, /* 0x22 */ 2698 { 0x12, 0x12, aImplUniToDBCSTab_GB_23 }, /* 0x23 */ 2699 { 0x60, 0x9B, aImplUniToDBCSTab_GB_24 }, /* 0x24 */ 2700 { 0x00, 0xCF, aImplUniToDBCSTab_GB_25 }, /* 0x25 */ 2701 { 0x05, 0x42, aImplUniToDBCSTab_GB_26 }, /* 0x26 */ 2702 { 1, 0, NULL }, /* 0x27 */ 2703 { 1, 0, NULL }, /* 0x28 */ 2704 { 1, 0, NULL }, /* 0x29 */ 2705 { 1, 0, NULL }, /* 0x2A */ 2706 { 1, 0, NULL }, /* 0x2B */ 2707 { 1, 0, NULL }, /* 0x2C */ 2708 { 1, 0, NULL }, /* 0x2D */ 2709 { 1, 0, NULL }, /* 0x2E */ 2710 { 1, 0, NULL }, /* 0x2F */ 2711 { 0x00, 0xFB, aImplUniToDBCSTab_GB_30 }, /* 0x30 */ 2712 { 0x05, 0x29, aImplUniToDBCSTab_GB_31 }, /* 0x31 */ 2713 { 0x20, 0x29, aImplUniToDBCSTab_GBK_32 }, /* 0x32 */ 2714 { 1, 0, NULL }, /* 0x33 */ 2715 { 1, 0, NULL }, /* 0x34 */ 2716 { 1, 0, NULL }, /* 0x35 */ 2717 { 1, 0, NULL }, /* 0x36 */ 2718 { 1, 0, NULL }, /* 0x37 */ 2719 { 1, 0, NULL }, /* 0x38 */ 2720 { 1, 0, NULL }, /* 0x39 */ 2721 { 1, 0, NULL }, /* 0x3A */ 2722 { 1, 0, NULL }, /* 0x3B */ 2723 { 1, 0, NULL }, /* 0x3C */ 2724 { 1, 0, NULL }, /* 0x3D */ 2725 { 1, 0, NULL }, /* 0x3E */ 2726 { 1, 0, NULL }, /* 0x3F */ 2727 { 1, 0, NULL }, /* 0x40 */ 2728 { 1, 0, NULL }, /* 0x41 */ 2729 { 1, 0, NULL }, /* 0x42 */ 2730 { 1, 0, NULL }, /* 0x43 */ 2731 { 1, 0, NULL }, /* 0x44 */ 2732 { 1, 0, NULL }, /* 0x45 */ 2733 { 1, 0, NULL }, /* 0x46 */ 2734 { 1, 0, NULL }, /* 0x47 */ 2735 { 1, 0, NULL }, /* 0x48 */ 2736 { 1, 0, NULL }, /* 0x49 */ 2737 { 1, 0, NULL }, /* 0x4A */ 2738 { 1, 0, NULL }, /* 0x4B */ 2739 { 1, 0, NULL }, /* 0x4C */ 2740 { 1, 0, NULL }, /* 0x4D */ 2741 { 0x00, 0xFF, aImplUniToDBCSTab_GB_4E }, /* 0x4E */ 2742 { 0x01, 0xFE, aImplUniToDBCSTab_GB_4F }, /* 0x4F */ 2743 { 0x0C, 0xFB, aImplUniToDBCSTab_GB_50 }, /* 0x50 */ 2744 { 0x06, 0xFF, aImplUniToDBCSTab_GB_51 }, /* 0x51 */ 2745 { 0x00, 0xFF, aImplUniToDBCSTab_GB_52 }, /* 0x52 */ 2746 { 0x00, 0xFD, aImplUniToDBCSTab_GB_53 }, /* 0x53 */ 2747 { 0x01, 0xFF, aImplUniToDBCSTab_GB_54 }, /* 0x54 */ 2748 { 0x01, 0xFE, aImplUniToDBCSTab_GB_55 }, /* 0x55 */ 2749 { 0x00, 0xFF, aImplUniToDBCSTab_GB_56 }, /* 0x56 */ 2750 { 0x03, 0xFD, aImplUniToDBCSTab_GB_57 }, /* 0x57 */ 2751 { 0x00, 0xF9, aImplUniToDBCSTab_GB_58 }, /* 0x58 */ 2752 { 0x02, 0xFF, aImplUniToDBCSTab_GB_59 }, /* 0x59 */ 2753 { 0x01, 0xF1, aImplUniToDBCSTab_GB_5A }, /* 0x5A */ 2754 { 0x09, 0xFF, aImplUniToDBCSTab_GB_5B }, /* 0x5B */ 2755 { 0x01, 0xFB, aImplUniToDBCSTab_GB_5C }, /* 0x5C */ 2756 { 0x02, 0xFE, aImplUniToDBCSTab_GB_5D }, /* 0x5D */ 2757 { 0x01, 0xFF, aImplUniToDBCSTab_GB_5E }, /* 0x5E */ 2758 { 0x00, 0xFF, aImplUniToDBCSTab_GB_5F }, /* 0x5F */ 2759 { 0x00, 0xFA, aImplUniToDBCSTab_GB_60 }, /* 0x60 */ 2760 { 0x00, 0xFF, aImplUniToDBCSTab_GB_61 }, /* 0x61 */ 2761 { 0x06, 0xFF, aImplUniToDBCSTab_GB_62 }, /* 0x62 */ 2762 { 0x01, 0xFF, aImplUniToDBCSTab_GB_63 }, /* 0x63 */ 2763 { 0x00, 0xE6, aImplUniToDBCSTab_GB_64 }, /* 0x64 */ 2764 { 0x00, 0xFA, aImplUniToDBCSTab_GB_65 }, /* 0x65 */ 2765 { 0x00, 0xFF, aImplUniToDBCSTab_GB_66 }, /* 0x66 */ 2766 { 0x00, 0xFF, aImplUniToDBCSTab_GB_67 }, /* 0x67 */ 2767 { 0x00, 0xFC, aImplUniToDBCSTab_GB_68 }, /* 0x68 */ 2768 { 0x01, 0xFF, aImplUniToDBCSTab_GB_69 }, /* 0x69 */ 2769 { 0x0A, 0xAC, aImplUniToDBCSTab_GB_6A }, /* 0x6A */ 2770 { 0x20, 0xFD, aImplUniToDBCSTab_GB_6B }, /* 0x6B */ 2771 { 0x05, 0xFE, aImplUniToDBCSTab_GB_6C }, /* 0x6C */ 2772 { 0x01, 0xFC, aImplUniToDBCSTab_GB_6D }, /* 0x6D */ 2773 { 0x05, 0xF9, aImplUniToDBCSTab_GB_6E }, /* 0x6E */ 2774 { 0x02, 0xEF, aImplUniToDBCSTab_GB_6F }, /* 0x6F */ 2775 { 0x11, 0xFD, aImplUniToDBCSTab_GB_70 }, /* 0x70 */ 2776 { 0x09, 0xF9, aImplUniToDBCSTab_GB_71 }, /* 0x71 */ 2777 { 0x06, 0xFC, aImplUniToDBCSTab_GB_72 }, /* 0x72 */ 2778 { 0x01, 0xF2, aImplUniToDBCSTab_GB_73 }, /* 0x73 */ 2779 { 0x03, 0xFF, aImplUniToDBCSTab_GB_74 }, /* 0x74 */ 2780 { 0x04, 0xFF, aImplUniToDBCSTab_GB_75 }, /* 0x75 */ 2781 { 0x00, 0xFE, aImplUniToDBCSTab_GB_76 }, /* 0x76 */ 2782 { 0x01, 0xFF, aImplUniToDBCSTab_GB_77 }, /* 0x77 */ 2783 { 0x00, 0xFA, aImplUniToDBCSTab_GB_78 }, /* 0x78 */ 2784 { 0x01, 0xFD, aImplUniToDBCSTab_GB_79 }, /* 0x79 */ 2785 { 0x00, 0xFF, aImplUniToDBCSTab_GB_7A }, /* 0x7A */ 2786 { 0x03, 0xFE, aImplUniToDBCSTab_GB_7B }, /* 0x7B */ 2787 { 0x07, 0xFB, aImplUniToDBCSTab_GB_7C }, /* 0x7C */ 2788 { 0x0A, 0xAE, aImplUniToDBCSTab_GB_7D }, /* 0x7D */ 2789 { 0x3B, 0xFF, aImplUniToDBCSTab_GB_7E }, /* 0x7E */ 2790 { 0x00, 0xFC, aImplUniToDBCSTab_GB_7F }, /* 0x7F */ 2791 { 0x00, 0xFD, aImplUniToDBCSTab_GB_80 }, /* 0x80 */ 2792 { 0x02, 0xFE, aImplUniToDBCSTab_GB_81 }, /* 0x81 */ 2793 { 0x00, 0xFB, aImplUniToDBCSTab_GB_82 }, /* 0x82 */ 2794 { 0x01, 0xFD, aImplUniToDBCSTab_GB_83 }, /* 0x83 */ 2795 { 0x01, 0xFF, aImplUniToDBCSTab_GB_84 }, /* 0x84 */ 2796 { 0x0C, 0xFF, aImplUniToDBCSTab_GB_85 }, /* 0x85 */ 2797 { 0x05, 0xFE, aImplUniToDBCSTab_GB_86 }, /* 0x86 */ 2798 { 0x00, 0xFE, aImplUniToDBCSTab_GB_87 }, /* 0x87 */ 2799 { 0x03, 0xFE, aImplUniToDBCSTab_GB_88 }, /* 0x88 */ 2800 { 0x02, 0xF3, aImplUniToDBCSTab_GB_89 }, /* 0x89 */ 2801 { 0x00, 0x93, aImplUniToDBCSTab_GB_8A }, /* 0x8A */ 2802 { 0x07, 0xFF, aImplUniToDBCSTab_GB_8B }, /* 0x8B */ 2803 { 0x00, 0x98, aImplUniToDBCSTab_GB_8C }, /* 0x8C */ 2804 { 0x1D, 0xFD, aImplUniToDBCSTab_GB_8D }, /* 0x8D */ 2805 { 0x05, 0xCE, aImplUniToDBCSTab_GB_8E }, /* 0x8E */ 2806 { 0x66, 0xFD, aImplUniToDBCSTab_GB_8F }, /* 0x8F */ 2807 { 0x00, 0xFE, aImplUniToDBCSTab_GB_90 }, /* 0x90 */ 2808 { 0x02, 0xDC, aImplUniToDBCSTab_GB_91 }, /* 0x91 */ 2809 { 0x74, 0xC8, aImplUniToDBCSTab_GB_92 }, /* 0x92 */ 2810 { 0x3E, 0xD6, aImplUniToDBCSTab_GB_93 }, /* 0x93 */ 2811 { 0x3E, 0xFF, aImplUniToDBCSTab_GB_94 }, /* 0x94 */ 2812 { 0x00, 0xFE, aImplUniToDBCSTab_GB_95 }, /* 0x95 */ 2813 { 0x00, 0xFE, aImplUniToDBCSTab_GB_96 }, /* 0x96 */ 2814 { 0x00, 0xF6, aImplUniToDBCSTab_GB_97 }, /* 0x97 */ 2815 { 0x75, 0xE9, aImplUniToDBCSTab_GB_98 }, /* 0x98 */ 2816 { 0x0D, 0xA8, aImplUniToDBCSTab_GB_99 }, /* 0x99 */ 2817 { 0x6C, 0xFB, aImplUniToDBCSTab_GB_9A }, /* 0x9A */ 2818 { 0x03, 0x54, aImplUniToDBCSTab_GB_9B }, /* 0x9B */ 2819 { 0x7C, 0xE2, aImplUniToDBCSTab_GB_9C }, /* 0x9C */ 2820 { 1, 0, NULL }, /* 0x9D */ 2821 { 0x1F, 0xFE, aImplUniToDBCSTab_GB_9E }, /* 0x9E */ 2822 { 0x0B, 0xA0, aImplUniToDBCSTab_GB_9F }, /* 0x9F */ 2823 { 1, 0, NULL }, /* 0xA0 */ 2824 { 1, 0, NULL }, /* 0xA1 */ 2825 { 1, 0, NULL }, /* 0xA2 */ 2826 { 1, 0, NULL }, /* 0xA3 */ 2827 { 1, 0, NULL }, /* 0xA4 */ 2828 { 1, 0, NULL }, /* 0xA5 */ 2829 { 1, 0, NULL }, /* 0xA6 */ 2830 { 1, 0, NULL }, /* 0xA7 */ 2831 { 1, 0, NULL }, /* 0xA8 */ 2832 { 1, 0, NULL }, /* 0xA9 */ 2833 { 1, 0, NULL }, /* 0xAA */ 2834 { 1, 0, NULL }, /* 0xAB */ 2835 { 1, 0, NULL }, /* 0xAC */ 2836 { 1, 0, NULL }, /* 0xAD */ 2837 { 1, 0, NULL }, /* 0xAE */ 2838 { 1, 0, NULL }, /* 0xAF */ 2839 { 1, 0, NULL }, /* 0xB0 */ 2840 { 1, 0, NULL }, /* 0xB1 */ 2841 { 1, 0, NULL }, /* 0xB2 */ 2842 { 1, 0, NULL }, /* 0xB3 */ 2843 { 1, 0, NULL }, /* 0xB4 */ 2844 { 1, 0, NULL }, /* 0xB5 */ 2845 { 1, 0, NULL }, /* 0xB6 */ 2846 { 1, 0, NULL }, /* 0xB7 */ 2847 { 1, 0, NULL }, /* 0xB8 */ 2848 { 1, 0, NULL }, /* 0xB9 */ 2849 { 1, 0, NULL }, /* 0xBA */ 2850 { 1, 0, NULL }, /* 0xBB */ 2851 { 1, 0, NULL }, /* 0xBC */ 2852 { 1, 0, NULL }, /* 0xBD */ 2853 { 1, 0, NULL }, /* 0xBE */ 2854 { 1, 0, NULL }, /* 0xBF */ 2855 { 1, 0, NULL }, /* 0xC0 */ 2856 { 1, 0, NULL }, /* 0xC1 */ 2857 { 1, 0, NULL }, /* 0xC2 */ 2858 { 1, 0, NULL }, /* 0xC3 */ 2859 { 1, 0, NULL }, /* 0xC4 */ 2860 { 1, 0, NULL }, /* 0xC5 */ 2861 { 1, 0, NULL }, /* 0xC6 */ 2862 { 1, 0, NULL }, /* 0xC7 */ 2863 { 1, 0, NULL }, /* 0xC8 */ 2864 { 1, 0, NULL }, /* 0xC9 */ 2865 { 1, 0, NULL }, /* 0xCA */ 2866 { 1, 0, NULL }, /* 0xCB */ 2867 { 1, 0, NULL }, /* 0xCC */ 2868 { 1, 0, NULL }, /* 0xCD */ 2869 { 1, 0, NULL }, /* 0xCE */ 2870 { 1, 0, NULL }, /* 0xCF */ 2871 { 1, 0, NULL }, /* 0xD0 */ 2872 { 1, 0, NULL }, /* 0xD1 */ 2873 { 1, 0, NULL }, /* 0xD2 */ 2874 { 1, 0, NULL }, /* 0xD3 */ 2875 { 1, 0, NULL }, /* 0xD4 */ 2876 { 1, 0, NULL }, /* 0xD5 */ 2877 { 1, 0, NULL }, /* 0xD6 */ 2878 { 1, 0, NULL }, /* 0xD7 */ 2879 { 1, 0, NULL }, /* 0xD8 */ 2880 { 1, 0, NULL }, /* 0xD9 */ 2881 { 1, 0, NULL }, /* 0xDA */ 2882 { 1, 0, NULL }, /* 0xDB */ 2883 { 1, 0, NULL }, /* 0xDC */ 2884 { 1, 0, NULL }, /* 0xDD */ 2885 { 1, 0, NULL }, /* 0xDE */ 2886 { 1, 0, NULL }, /* 0xDF */ 2887 { 1, 0, NULL }, /* 0xE0 */ 2888 { 1, 0, NULL }, /* 0xE1 */ 2889 { 1, 0, NULL }, /* 0xE2 */ 2890 { 1, 0, NULL }, /* 0xE3 */ 2891 { 1, 0, NULL }, /* 0xE4 */ 2892 { 1, 0, NULL }, /* 0xE5 */ 2893 { 1, 0, NULL }, /* 0xE6 */ 2894 { 1, 0, NULL }, /* 0xE7 */ 2895 { 1, 0, NULL }, /* 0xE8 */ 2896 { 1, 0, NULL }, /* 0xE9 */ 2897 { 1, 0, NULL }, /* 0xEA */ 2898 { 1, 0, NULL }, /* 0xEB */ 2899 { 1, 0, NULL }, /* 0xEC */ 2900 { 1, 0, NULL }, /* 0xED */ 2901 { 1, 0, NULL }, /* 0xEE */ 2902 { 1, 0, NULL }, /* 0xEF */ 2903 { 1, 0, NULL }, /* 0xF0 */ 2904 { 1, 0, NULL }, /* 0xF1 */ 2905 { 1, 0, NULL }, /* 0xF2 */ 2906 { 1, 0, NULL }, /* 0xF3 */ 2907 { 1, 0, NULL }, /* 0xF4 */ 2908 { 1, 0, NULL }, /* 0xF5 */ 2909 { 1, 0, NULL }, /* 0xF6 */ 2910 { 1, 0, NULL }, /* 0xF7 */ 2911 { 0x80, 0x81, aImplUniToDBCSTab_APPLECHINSIMP_F8 }, /* 0xF8 */ 2912 { 1, 0, NULL }, /* 0xF9 */ 2913 { 1, 0, NULL }, /* 0xFA */ 2914 { 1, 0, NULL }, /* 0xFB */ 2915 { 1, 0, NULL }, /* 0xFC */ 2916 { 1, 0, NULL }, /* 0xFD */ 2917 { 0x31, 0x44, aImplUniToDBCSTab_GB_FE }, /* 0xFE */ 2918 { 0x01, 0xE5, aImplUniToDBCSTab_GB_FF } /* 0xFF */ 2919}; 2920 2921/* ----------------------------------------------------------------------- */ 2922 2923static ImplDBCSConvertData const aImplAPPLECHINSIMPDBCSCvtData = 2924{ 2925 aAPPLECHINSIMPUniLeadTab, 2926 aAPPLECHINSIMPDBCSHighTab, 2927 0x00, 0xFF, 2928 0xA1, 0xFE, 2929 NULL, 2930 0 2931}; 2932 2933/* ----------------------------------------------------------------------- */ 2934 2935static ImplTextEncodingData const aImplAPPLECHINSIMPTextEncodingData 2936 = { { &aImplAPPLECHINSIMPDBCSCvtData, 2937 ImplDBCSToUnicode, 2938 ImplUnicodeToDBCS, 2939 NULL, 2940 NULL, 2941 NULL, 2942 NULL, 2943 NULL, 2944 NULL }, 2945 1, 2946 2, 2947 2, 2948 134, 2949 "euc-cn", 2950 "gb2312", 2951 RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MULTIBYTE }; 2952 /* MAC, SCRIPT_CHINESE_SIMPLIFIED, pc code page 936, mac encoding 25 */ 2953