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