xref: /trunk/main/sal/textenc/tcvttcn6.tab (revision 11594ab6)
1/**************************************************************
2 *
3 * Licensed to the Apache Software Foundation (ASF) under one
4 * or more contributor license agreements.  See the NOTICE file
5 * distributed with this work for additional information
6 * regarding copyright ownership.  The ASF licenses this file
7 * to you under the Apache License, Version 2.0 (the
8 * "License"); you may not use this file except in compliance
9 * with the License.  You may obtain a copy of the License at
10 *
11 *   http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing,
14 * software distributed under the License is distributed on an
15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 * KIND, either express or implied.  See the License for the
17 * specific language governing permissions and limitations
18 * under the License.
19 *
20 *************************************************************/
21
22
23
24/* ======================================================================= */
25
26/* This file contain the information tables for all */
27/* chinese traditional (Taiwan/HongKong) charsets: */
28/* BIG5, MS950, APPLE_CHINTRAD */
29
30/* ======================================================================= */
31
32static ImplDBCSToUniLeadTab const aBIG5UniLeadTab[256] =
33{
34    { 0x0000,    0,    0, NULL },                               /* 0x00 */
35    { 0x0001,    0,    0, NULL },                               /* 0x01 */
36    { 0x0002,    0,    0, NULL },                               /* 0x02 */
37    { 0x0003,    0,    0, NULL },                               /* 0x03 */
38    { 0x0004,    0,    0, NULL },                               /* 0x04 */
39    { 0x0005,    0,    0, NULL },                               /* 0x05 */
40    { 0x0006,    0,    0, NULL },                               /* 0x06 */
41    { 0x0007,    0,    0, NULL },                               /* 0x07 */
42    { 0x0008,    0,    0, NULL },                               /* 0x08 */
43    { 0x0009,    0,    0, NULL },                               /* 0x09 */
44    { 0x000A,    0,    0, NULL },                               /* 0x0A */
45    { 0x000B,    0,    0, NULL },                               /* 0x0B */
46    { 0x000C,    0,    0, NULL },                               /* 0x0C */
47    { 0x000D,    0,    0, NULL },                               /* 0x0D */
48    { 0x000E,    0,    0, NULL },                               /* 0x0E */
49    { 0x000F,    0,    0, NULL },                               /* 0x0F */
50    { 0x0010,    0,    0, NULL },                               /* 0x10 */
51    { 0x0011,    0,    0, NULL },                               /* 0x11 */
52    { 0x0012,    0,    0, NULL },                               /* 0x12 */
53    { 0x0013,    0,    0, NULL },                               /* 0x13 */
54    { 0x0014,    0,    0, NULL },                               /* 0x14 */
55    { 0x0015,    0,    0, NULL },                               /* 0x15 */
56    { 0x0016,    0,    0, NULL },                               /* 0x16 */
57    { 0x0017,    0,    0, NULL },                               /* 0x17 */
58    { 0x0018,    0,    0, NULL },                               /* 0x18 */
59    { 0x0019,    0,    0, NULL },                               /* 0x19 */
60    { 0x001A,    0,    0, NULL },                               /* 0x1A */
61    { 0x001B,    0,    0, NULL },                               /* 0x1B */
62    { 0x001C,    0,    0, NULL },                               /* 0x1C */
63    { 0x001D,    0,    0, NULL },                               /* 0x1D */
64    { 0x001E,    0,    0, NULL },                               /* 0x1E */
65    { 0x001F,    0,    0, NULL },                               /* 0x1F */
66    { 0x0020,    0,    0, NULL },                               /* 0x20 */
67    { 0x0021,    0,    0, NULL },                               /* 0x21 */
68    { 0x0022,    0,    0, NULL },                               /* 0x22 */
69    { 0x0023,    0,    0, NULL },                               /* 0x23 */
70    { 0x0024,    0,    0, NULL },                               /* 0x24 */
71    { 0x0025,    0,    0, NULL },                               /* 0x25 */
72    { 0x0026,    0,    0, NULL },                               /* 0x26 */
73    { 0x0027,    0,    0, NULL },                               /* 0x27 */
74    { 0x0028,    0,    0, NULL },                               /* 0x28 */
75    { 0x0029,    0,    0, NULL },                               /* 0x29 */
76    { 0x002A,    0,    0, NULL },                               /* 0x2A */
77    { 0x002B,    0,    0, NULL },                               /* 0x2B */
78    { 0x002C,    0,    0, NULL },                               /* 0x2C */
79    { 0x002D,    0,    0, NULL },                               /* 0x2D */
80    { 0x002E,    0,    0, NULL },                               /* 0x2E */
81    { 0x002F,    0,    0, NULL },                               /* 0x2F */
82    { 0x0030,    0,    0, NULL },                               /* 0x30 */
83    { 0x0031,    0,    0, NULL },                               /* 0x31 */
84    { 0x0032,    0,    0, NULL },                               /* 0x32 */
85    { 0x0033,    0,    0, NULL },                               /* 0x33 */
86    { 0x0034,    0,    0, NULL },                               /* 0x34 */
87    { 0x0035,    0,    0, NULL },                               /* 0x35 */
88    { 0x0036,    0,    0, NULL },                               /* 0x36 */
89    { 0x0037,    0,    0, NULL },                               /* 0x37 */
90    { 0x0038,    0,    0, NULL },                               /* 0x38 */
91    { 0x0039,    0,    0, NULL },                               /* 0x39 */
92    { 0x003A,    0,    0, NULL },                               /* 0x3A */
93    { 0x003B,    0,    0, NULL },                               /* 0x3B */
94    { 0x003C,    0,    0, NULL },                               /* 0x3C */
95    { 0x003D,    0,    0, NULL },                               /* 0x3D */
96    { 0x003E,    0,    0, NULL },                               /* 0x3E */
97    { 0x003F,    0,    0, NULL },                               /* 0x3F */
98    { 0x0040,    0,    0, NULL },                               /* 0x40 */
99    { 0x0041,    0,    0, NULL },                               /* 0x41 */
100    { 0x0042,    0,    0, NULL },                               /* 0x42 */
101    { 0x0043,    0,    0, NULL },                               /* 0x43 */
102    { 0x0044,    0,    0, NULL },                               /* 0x44 */
103    { 0x0045,    0,    0, NULL },                               /* 0x45 */
104    { 0x0046,    0,    0, NULL },                               /* 0x46 */
105    { 0x0047,    0,    0, NULL },                               /* 0x47 */
106    { 0x0048,    0,    0, NULL },                               /* 0x48 */
107    { 0x0049,    0,    0, NULL },                               /* 0x49 */
108    { 0x004A,    0,    0, NULL },                               /* 0x4A */
109    { 0x004B,    0,    0, NULL },                               /* 0x4B */
110    { 0x004C,    0,    0, NULL },                               /* 0x4C */
111    { 0x004D,    0,    0, NULL },                               /* 0x4D */
112    { 0x004E,    0,    0, NULL },                               /* 0x4E */
113    { 0x004F,    0,    0, NULL },                               /* 0x4F */
114    { 0x0050,    0,    0, NULL },                               /* 0x50 */
115    { 0x0051,    0,    0, NULL },                               /* 0x51 */
116    { 0x0052,    0,    0, NULL },                               /* 0x52 */
117    { 0x0053,    0,    0, NULL },                               /* 0x53 */
118    { 0x0054,    0,    0, NULL },                               /* 0x54 */
119    { 0x0055,    0,    0, NULL },                               /* 0x55 */
120    { 0x0056,    0,    0, NULL },                               /* 0x56 */
121    { 0x0057,    0,    0, NULL },                               /* 0x57 */
122    { 0x0058,    0,    0, NULL },                               /* 0x58 */
123    { 0x0059,    0,    0, NULL },                               /* 0x59 */
124    { 0x005A,    0,    0, NULL },                               /* 0x5A */
125    { 0x005B,    0,    0, NULL },                               /* 0x5B */
126    { 0x005C,    0,    0, NULL },                               /* 0x5C */
127    { 0x005D,    0,    0, NULL },                               /* 0x5D */
128    { 0x005E,    0,    0, NULL },                               /* 0x5E */
129    { 0x005F,    0,    0, NULL },                               /* 0x5F */
130    { 0x0060,    0,    0, NULL },                               /* 0x60 */
131    { 0x0061,    0,    0, NULL },                               /* 0x61 */
132    { 0x0062,    0,    0, NULL },                               /* 0x62 */
133    { 0x0063,    0,    0, NULL },                               /* 0x63 */
134    { 0x0064,    0,    0, NULL },                               /* 0x64 */
135    { 0x0065,    0,    0, NULL },                               /* 0x65 */
136    { 0x0066,    0,    0, NULL },                               /* 0x66 */
137    { 0x0067,    0,    0, NULL },                               /* 0x67 */
138    { 0x0068,    0,    0, NULL },                               /* 0x68 */
139    { 0x0069,    0,    0, NULL },                               /* 0x69 */
140    { 0x006A,    0,    0, NULL },                               /* 0x6A */
141    { 0x006B,    0,    0, NULL },                               /* 0x6B */
142    { 0x006C,    0,    0, NULL },                               /* 0x6C */
143    { 0x006D,    0,    0, NULL },                               /* 0x6D */
144    { 0x006E,    0,    0, NULL },                               /* 0x6E */
145    { 0x006F,    0,    0, NULL },                               /* 0x6F */
146    { 0x0070,    0,    0, NULL },                               /* 0x70 */
147    { 0x0071,    0,    0, NULL },                               /* 0x71 */
148    { 0x0072,    0,    0, NULL },                               /* 0x72 */
149    { 0x0073,    0,    0, NULL },                               /* 0x73 */
150    { 0x0074,    0,    0, NULL },                               /* 0x74 */
151    { 0x0075,    0,    0, NULL },                               /* 0x75 */
152    { 0x0076,    0,    0, NULL },                               /* 0x76 */
153    { 0x0077,    0,    0, NULL },                               /* 0x77 */
154    { 0x0078,    0,    0, NULL },                               /* 0x78 */
155    { 0x0079,    0,    0, NULL },                               /* 0x79 */
156    { 0x007A,    0,    0, NULL },                               /* 0x7A */
157    { 0x007B,    0,    0, NULL },                               /* 0x7B */
158    { 0x007C,    0,    0, NULL },                               /* 0x7C */
159    { 0x007D,    0,    0, NULL },                               /* 0x7D */
160    { 0x007E,    0,    0, NULL },                               /* 0x7E */
161    { 0x007F,    0,    0, NULL },                               /* 0x7F */
162    {      0,    1,    0, NULL },                               /* 0x80 */
163    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x81 */ /* We convert this as double byte */
164    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x82 */ /* We convert this as double byte */
165    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x83 */ /* We convert this as double byte */
166    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x84 */ /* We convert this as double byte */
167    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x85 */ /* We convert this as double byte */
168    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x86 */ /* We convert this as double byte */
169    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x87 */ /* We convert this as double byte */
170    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x88 */ /* We convert this as double byte */
171    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x89 */ /* We convert this as double byte */
172    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x8A */ /* We convert this as double byte */
173    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x8B */ /* We convert this as double byte */
174    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x8C */ /* We convert this as double byte */
175    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x8D */ /* We convert this as double byte */
176    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x8E */ /* We convert this as double byte */
177    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x8F */ /* We convert this as double byte */
178    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x90 */ /* We convert this as double byte */
179    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x91 */ /* We convert this as double byte */
180    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x92 */ /* We convert this as double byte */
181    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x93 */ /* We convert this as double byte */
182    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x94 */ /* We convert this as double byte */
183    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x95 */ /* We convert this as double byte */
184    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x96 */ /* We convert this as double byte */
185    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x97 */ /* We convert this as double byte */
186    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x98 */ /* We convert this as double byte */
187    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x99 */ /* We convert this as double byte */
188    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x9A */ /* We convert this as double byte */
189    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x9B */ /* We convert this as double byte */
190    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x9C */ /* We convert this as double byte */
191    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x9D */ /* We convert this as double byte */
192    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x9E */ /* We convert this as double byte */
193    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x9F */ /* We convert this as double byte */
194    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0xA0 */ /* We convert this as double byte */
195    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_A1 },          /* 0xA1 */
196    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_A2 },          /* 0xA2 */
197    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_A3 },          /* 0xA3 */
198    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_A4 },          /* 0xA4 */
199    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_A5 },          /* 0xA5 */
200    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_A6 },          /* 0xA6 */
201    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_A7 },          /* 0xA7 */
202    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_A8 },          /* 0xA8 */
203    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_A9 },          /* 0xA9 */
204    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_AA },          /* 0xAA */
205    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_AB },          /* 0xAB */
206    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_AC },          /* 0xAC */
207    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_AD },          /* 0xAD */
208    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_AE },          /* 0xAE */
209    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_AF },          /* 0xAF */
210    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_B0 },          /* 0xB0 */
211    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_B1 },          /* 0xB1 */
212    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_B2 },          /* 0xB2 */
213    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_B3 },          /* 0xB3 */
214    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_B4 },          /* 0xB4 */
215    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_B5 },          /* 0xB5 */
216    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_B6 },          /* 0xB6 */
217    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_B7 },          /* 0xB7 */
218    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_B8 },          /* 0xB8 */
219    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_B9 },          /* 0xB9 */
220    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_BA },          /* 0xBA */
221    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_BB },          /* 0xBB */
222    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_BC },          /* 0xBC */
223    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_BD },          /* 0xBD */
224    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_BE },          /* 0xBE */
225    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_BF },          /* 0xBF */
226    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_C0 },          /* 0xC0 */
227    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_C1 },          /* 0xC1 */
228    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_C2 },          /* 0xC2 */
229    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_C3 },          /* 0xC3 */
230    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_C4 },          /* 0xC4 */
231    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_C5 },          /* 0xC5 */
232    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5ONLY_C6 },      /* 0xC6 */
233    {      0, 0x40, 0xFC, aImplDBCSToUniTab_BIG5ONLY_C7 },      /* 0xC7 */
234    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0xC8 */ /* We convert this as double byte */
235    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_C9 },          /* 0xC9 */
236    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_CA },          /* 0xCA */
237    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_CB },          /* 0xCB */
238    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_CC },          /* 0xCC */
239    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_CD },          /* 0xCD */
240    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_CE },          /* 0xCE */
241    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_CF },          /* 0xCF */
242    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_D0 },          /* 0xD0 */
243    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_D1 },          /* 0xD1 */
244    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_D2 },          /* 0xD2 */
245    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_D3 },          /* 0xD3 */
246    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_D4 },          /* 0xD4 */
247    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_D5 },          /* 0xD5 */
248    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_D6 },          /* 0xD6 */
249    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_D7 },          /* 0xD7 */
250    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_D8 },          /* 0xD8 */
251    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_D9 },          /* 0xD9 */
252    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_DA },          /* 0xDA */
253    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_DB },          /* 0xDB */
254    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_DC },          /* 0xDC */
255    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_DD },          /* 0xDD */
256    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_DE },          /* 0xDE */
257    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_DF },          /* 0xDF */
258    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_E0 },          /* 0xE0 */
259    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_E1 },          /* 0xE1 */
260    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_E2 },          /* 0xE2 */
261    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_E3 },          /* 0xE3 */
262    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_E4 },          /* 0xE4 */
263    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_E5 },          /* 0xE5 */
264    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_E6 },          /* 0xE6 */
265    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_E7 },          /* 0xE7 */
266    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_E8 },          /* 0xE8 */
267    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_E9 },          /* 0xE9 */
268    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_EA },          /* 0xEA */
269    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_EB },          /* 0xEB */
270    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_EC },          /* 0xEC */
271    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_ED },          /* 0xED */
272    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_EE },          /* 0xEE */
273    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_EF },          /* 0xEF */
274    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_F0 },          /* 0xF0 */
275    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_F1 },          /* 0xF1 */
276    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_F2 },          /* 0xF2 */
277    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_F3 },          /* 0xF3 */
278    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_F4 },          /* 0xF4 */
279    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_F5 },          /* 0xF5 */
280    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_F6 },          /* 0xF6 */
281    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_F7 },          /* 0xF7 */
282    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_F8 },          /* 0xF8 */
283    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_F9 },          /* 0xF9 */
284    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0xFA */ /* We convert this as double byte */
285    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0xFB */ /* We convert this as double byte */
286    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0xFC */ /* We convert this as double byte */
287    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0xFD */ /* We convert this as double byte */
288    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0xFE */ /* We convert this as double byte */
289    {      0,    1,    0, NULL }                                /* 0xFF */
290};
291
292/* ----------------------------------------------------------------------- */
293
294static ImplUniToDBCSHighTab const aBIG5DBCSHighTab[256] =
295{
296    { 0x00, 0xF7, aImplUniToDBCSTab_BIG5_00 },                  /* 0x00 */
297    {    1,    0, NULL },                                       /* 0x01 */
298    { 0xC7, 0xD9, aImplUniToDBCSTab_BIG5_02 },                  /* 0x02 */
299    { 0x91, 0xC9, aImplUniToDBCSTab_BIG5_03 },                  /* 0x03 */
300    { 0x01, 0x51, aImplUniToDBCSTab_BIG5_04 },                  /* 0x04 */
301    {    1,    0, NULL },                                       /* 0x05 */
302    {    1,    0, NULL },                                       /* 0x06 */
303    {    1,    0, NULL },                                       /* 0x07 */
304    {    1,    0, NULL },                                       /* 0x08 */
305    {    1,    0, NULL },                                       /* 0x09 */
306    {    1,    0, NULL },                                       /* 0x0A */
307    {    1,    0, NULL },                                       /* 0x0B */
308    {    1,    0, NULL },                                       /* 0x0C */
309    {    1,    0, NULL },                                       /* 0x0D */
310    {    1,    0, NULL },                                       /* 0x0E */
311    {    1,    0, NULL },                                       /* 0x0F */
312    {    1,    0, NULL },                                       /* 0x10 */
313    {    1,    0, NULL },                                       /* 0x11 */
314    {    1,    0, NULL },                                       /* 0x12 */
315    {    1,    0, NULL },                                       /* 0x13 */
316    {    1,    0, NULL },                                       /* 0x14 */
317    {    1,    0, NULL },                                       /* 0x15 */
318    {    1,    0, NULL },                                       /* 0x16 */
319    {    1,    0, NULL },                                       /* 0x17 */
320    {    1,    0, NULL },                                       /* 0x18 */
321    {    1,    0, NULL },                                       /* 0x19 */
322    {    1,    0, NULL },                                       /* 0x1A */
323    {    1,    0, NULL },                                       /* 0x1B */
324    {    1,    0, NULL },                                       /* 0x1C */
325    {    1,    0, NULL },                                       /* 0x1D */
326    {    1,    0, NULL },                                       /* 0x1E */
327    {    1,    0, NULL },                                       /* 0x1F */
328    { 0x13, 0xAC, aImplUniToDBCSTab_BIG5_20 },                  /* 0x20 */
329    { 0x03, 0x99, aImplUniToDBCSTab_BIG5_21 },                  /* 0x21 */
330    { 0x15, 0xEF, aImplUniToDBCSTab_BIG5_22 },                  /* 0x22 */
331    {    1,    0, NULL },                                       /* 0x23 */
332    { 0x60, 0x7D, aImplUniToDBCSTab_BIG5_24 },                  /* 0x24 */
333    { 0x00, 0xE5, aImplUniToDBCSTab_BIG5_25 },                  /* 0x25 */
334    { 0x05, 0x42, aImplUniToDBCSTab_BIG5_26 },                  /* 0x25 */
335    {    1,    0, NULL },                                       /* 0x27 */
336    {    1,    0, NULL },                                       /* 0x28 */
337    {    1,    0, NULL },                                       /* 0x29 */
338    {    1,    0, NULL },                                       /* 0x2A */
339    {    1,    0, NULL },                                       /* 0x2B */
340    {    1,    0, NULL },                                       /* 0x2C */
341    {    1,    0, NULL },                                       /* 0x2D */
342    {    1,    0, NULL },                                       /* 0x2E */
343    {    1,    0, NULL },                                       /* 0x2F */
344    { 0x00, 0xFE, aImplUniToDBCSTab_BIG5_30 },                  /* 0x30 */
345    { 0x05, 0x29, aImplUniToDBCSTab_BIG5_31 },                  /* 0x31 */
346    { 0xA3, 0xA3, aImplUniToDBCSTab_BIG5_32 },                  /* 0x32 */
347    { 0x8E, 0xD5, aImplUniToDBCSTab_BIG5_33 },                  /* 0x33 */
348    {    1,    0, NULL },                                       /* 0x34 */
349    {    1,    0, NULL },                                       /* 0x35 */
350    {    1,    0, NULL },                                       /* 0x36 */
351    {    1,    0, NULL },                                       /* 0x37 */
352    {    1,    0, NULL },                                       /* 0x38 */
353    {    1,    0, NULL },                                       /* 0x39 */
354    {    1,    0, NULL },                                       /* 0x3A */
355    {    1,    0, NULL },                                       /* 0x3B */
356    {    1,    0, NULL },                                       /* 0x3C */
357    {    1,    0, NULL },                                       /* 0x3D */
358    {    1,    0, NULL },                                       /* 0x3E */
359    {    1,    0, NULL },                                       /* 0x3F */
360    {    1,    0, NULL },                                       /* 0x40 */
361    {    1,    0, NULL },                                       /* 0x41 */
362    {    1,    0, NULL },                                       /* 0x42 */
363    {    1,    0, NULL },                                       /* 0x43 */
364    {    1,    0, NULL },                                       /* 0x44 */
365    {    1,    0, NULL },                                       /* 0x45 */
366    {    1,    0, NULL },                                       /* 0x46 */
367    {    1,    0, NULL },                                       /* 0x47 */
368    {    1,    0, NULL },                                       /* 0x48 */
369    {    1,    0, NULL },                                       /* 0x49 */
370    {    1,    0, NULL },                                       /* 0x4A */
371    {    1,    0, NULL },                                       /* 0x4B */
372    {    1,    0, NULL },                                       /* 0x4C */
373    {    1,    0, NULL },                                       /* 0x4D */
374    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_4E },                  /* 0x4E */
375    { 0x00, 0xFE, aImplUniToDBCSTab_BIG5_4F },                  /* 0x4F */
376    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_50 },                  /* 0x50 */
377    { 0x00, 0xFD, aImplUniToDBCSTab_BIG5_51 },                  /* 0x51 */
378    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_52 },                  /* 0x52 */
379    { 0x05, 0xFC, aImplUniToDBCSTab_BIG5_53 },                  /* 0x53 */
380    { 0x01, 0xFF, aImplUniToDBCSTab_BIG5_54 },                  /* 0x54 */
381    { 0x01, 0xFF, aImplUniToDBCSTab_BIG5_55 },                  /* 0x55 */
382    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_56 },                  /* 0x56 */
383    { 0x01, 0xFD, aImplUniToDBCSTab_BIG5_57 },                  /* 0x57 */
384    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_58 },                  /* 0x58 */
385    { 0x03, 0xFF, aImplUniToDBCSTab_BIG5_59 },                  /* 0x59 */
386    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_5A },                  /* 0x5A */
387    { 0x01, 0xFA, aImplUniToDBCSTab_BIG5_5B },                  /* 0x5B */
388    { 0x01, 0xFF, aImplUniToDBCSTab_BIG5_5C },                  /* 0x5C */
389    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_5D },                  /* 0x5D */
390    { 0x02, 0xFF, aImplUniToDBCSTab_BIG5_5E },                  /* 0x5E */
391    { 0x01, 0xFF, aImplUniToDBCSTab_BIG5_5F },                  /* 0x5F */
392    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_60 },                  /* 0x60 */
393    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_61 },                  /* 0x61 */
394    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_62 },                  /* 0x62 */
395    { 0x00, 0xF9, aImplUniToDBCSTab_BIG5_63 },                  /* 0x63 */
396    { 0x06, 0xFF, aImplUniToDBCSTab_BIG5_64 },                  /* 0x64 */
397    { 0x00, 0xFD, aImplUniToDBCSTab_BIG5_65 },                  /* 0x65 */
398    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_66 },                  /* 0x66 */
399    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_67 },                  /* 0x67 */
400    { 0x12, 0xFD, aImplUniToDBCSTab_BIG5_68 },                  /* 0x68 */
401    { 0x04, 0xFF, aImplUniToDBCSTab_BIG5_69 },                  /* 0x69 */
402    { 0x00, 0xFC, aImplUniToDBCSTab_BIG5_6A },                  /* 0x6A */
403    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_6B },                  /* 0x6B */
404    { 0x00, 0xF9, aImplUniToDBCSTab_BIG5_6C },                  /* 0x6C */
405    { 0x00, 0xFD, aImplUniToDBCSTab_BIG5_6D },                  /* 0x6D */
406    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_6E },                  /* 0x6E */
407    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_6F },                  /* 0x6F */
408    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_70 },                  /* 0x70 */
409    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_71 },                  /* 0x71 */
410    { 0x01, 0xFF, aImplUniToDBCSTab_BIG5_72 },                  /* 0x72 */
411    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_73 },                  /* 0x73 */
412    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_74 },                  /* 0x74 */
413    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_75 },                  /* 0x75 */
414    { 0x00, 0xFE, aImplUniToDBCSTab_BIG5_76 },                  /* 0x76 */
415    { 0x01, 0xFD, aImplUniToDBCSTab_BIG5_77 },                  /* 0x77 */
416    { 0x02, 0xFF, aImplUniToDBCSTab_BIG5_78 },                  /* 0x78 */
417    { 0x01, 0xFB, aImplUniToDBCSTab_BIG5_79 },                  /* 0x79 */
418    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_7A },                  /* 0x7A */
419    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_7B },                  /* 0x7B */
420    { 0x00, 0xFE, aImplUniToDBCSTab_BIG5_7C },                  /* 0x7C */
421    { 0x00, 0xFB, aImplUniToDBCSTab_BIG5_7D },                  /* 0x7D */
422    { 0x03, 0x9C, aImplUniToDBCSTab_BIG5_7E },                  /* 0x7E */
423    { 0x36, 0xFF, aImplUniToDBCSTab_BIG5_7F },                  /* 0x7F */
424    { 0x00, 0xFE, aImplUniToDBCSTab_BIG5_80 },                  /* 0x80 */
425    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_81 },                  /* 0x81 */
426    { 0x00, 0xFE, aImplUniToDBCSTab_BIG5_82 },                  /* 0x82 */
427    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_83 },                  /* 0x83 */
428    { 0x01, 0xFF, aImplUniToDBCSTab_BIG5_84 },                  /* 0x84 */
429    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_85 },                  /* 0x85 */
430    { 0x00, 0xFE, aImplUniToDBCSTab_BIG5_86 },                  /* 0x86 */
431    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_87 },                  /* 0x87 */
432    { 0x00, 0xFE, aImplUniToDBCSTab_BIG5_88 },                  /* 0x88 */
433    { 0x01, 0xFF, aImplUniToDBCSTab_BIG5_89 },                  /* 0x89 */
434    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_8A },                  /* 0x8A */
435    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_8B },                  /* 0x8B */
436    { 0x37, 0xFE, aImplUniToDBCSTab_BIG5_8C },                  /* 0x8C */
437    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_8D },                  /* 0x8D */
438    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_8E },                  /* 0x8E */
439    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_8F },                  /* 0x8F */
440    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_90 },                  /* 0x90 */
441    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_91 },                  /* 0x91 */
442    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_92 },                  /* 0x92 */
443    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_93 },                  /* 0x93 */
444    { 0x00, 0x83, aImplUniToDBCSTab_BIG5_94 },                  /* 0x94 */
445    { 0x77, 0xE5, aImplUniToDBCSTab_BIG5_95 },                  /* 0x95 */
446    { 0x1C, 0xFF, aImplUniToDBCSTab_BIG5_96 },                  /* 0x96 */
447    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_97 },                  /* 0x97 */
448    { 0x00, 0xFE, aImplUniToDBCSTab_BIG5_98 },                  /* 0x98 */
449    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_99 },                  /* 0x99 */
450    { 0x01, 0xFE, aImplUniToDBCSTab_BIG5_9A },                  /* 0x9A */
451    { 0x01, 0xFD, aImplUniToDBCSTab_BIG5_9B },                  /* 0x9B */
452    { 0x05, 0xFF, aImplUniToDBCSTab_BIG5_9C },                  /* 0x9C */
453    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_9D },                  /* 0x9D */
454    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_9E },                  /* 0x9E */
455    { 0x00, 0xA4, aImplUniToDBCSTab_BIG5_9F },                  /* 0x9F */
456    {    1,    0, NULL },                                       /* 0xA0 */
457    {    1,    0, NULL },                                       /* 0xA1 */
458    {    1,    0, NULL },                                       /* 0xA2 */
459    {    1,    0, NULL },                                       /* 0xA3 */
460    {    1,    0, NULL },                                       /* 0xA4 */
461    {    1,    0, NULL },                                       /* 0xA5 */
462    {    1,    0, NULL },                                       /* 0xA6 */
463    {    1,    0, NULL },                                       /* 0xA7 */
464    {    1,    0, NULL },                                       /* 0xA8 */
465    {    1,    0, NULL },                                       /* 0xA9 */
466    {    1,    0, NULL },                                       /* 0xAA */
467    {    1,    0, NULL },                                       /* 0xAB */
468    {    1,    0, NULL },                                       /* 0xAC */
469    {    1,    0, NULL },                                       /* 0xAD */
470    {    1,    0, NULL },                                       /* 0xAE */
471    {    1,    0, NULL },                                       /* 0xAF */
472    {    1,    0, NULL },                                       /* 0xB0 */
473    {    1,    0, NULL },                                       /* 0xB1 */
474    {    1,    0, NULL },                                       /* 0xB2 */
475    {    1,    0, NULL },                                       /* 0xB3 */
476    {    1,    0, NULL },                                       /* 0xB4 */
477    {    1,    0, NULL },                                       /* 0xB5 */
478    {    1,    0, NULL },                                       /* 0xB6 */
479    {    1,    0, NULL },                                       /* 0xB7 */
480    {    1,    0, NULL },                                       /* 0xB8 */
481    {    1,    0, NULL },                                       /* 0xB9 */
482    {    1,    0, NULL },                                       /* 0xBA */
483    {    1,    0, NULL },                                       /* 0xBB */
484    {    1,    0, NULL },                                       /* 0xBC */
485    {    1,    0, NULL },                                       /* 0xBD */
486    {    1,    0, NULL },                                       /* 0xBE */
487    {    1,    0, NULL },                                       /* 0xBF */
488    {    1,    0, NULL },                                       /* 0xC0 */
489    {    1,    0, NULL },                                       /* 0xC1 */
490    {    1,    0, NULL },                                       /* 0xC2 */
491    {    1,    0, NULL },                                       /* 0xC3 */
492    {    1,    0, NULL },                                       /* 0xC4 */
493    {    1,    0, NULL },                                       /* 0xC5 */
494    {    1,    0, NULL },                                       /* 0xC6 */
495    {    1,    0, NULL },                                       /* 0xC7 */
496    {    1,    0, NULL },                                       /* 0xC8 */
497    {    1,    0, NULL },                                       /* 0xC9 */
498    {    1,    0, NULL },                                       /* 0xCA */
499    {    1,    0, NULL },                                       /* 0xCB */
500    {    1,    0, NULL },                                       /* 0xCC */
501    {    1,    0, NULL },                                       /* 0xCD */
502    {    1,    0, NULL },                                       /* 0xCE */
503    {    1,    0, NULL },                                       /* 0xCF */
504    {    1,    0, NULL },                                       /* 0xD0 */
505    {    1,    0, NULL },                                       /* 0xD1 */
506    {    1,    0, NULL },                                       /* 0xD2 */
507    {    1,    0, NULL },                                       /* 0xD3 */
508    {    1,    0, NULL },                                       /* 0xD4 */
509    {    1,    0, NULL },                                       /* 0xD5 */
510    {    1,    0, NULL },                                       /* 0xD6 */
511    {    1,    0, NULL },                                       /* 0xD7 */
512    {    1,    0, NULL },                                       /* 0xD8 */
513    {    1,    0, NULL },                                       /* 0xD9 */
514    {    1,    0, NULL },                                       /* 0xDA */
515    {    1,    0, NULL },                                       /* 0xDB */
516    {    1,    0, NULL },                                       /* 0xDC */
517    {    1,    0, NULL },                                       /* 0xDD */
518    {    1,    0, NULL },                                       /* 0xDE */
519    {    1,    0, NULL },                                       /* 0xDF */
520    {    1,    0, NULL },                                       /* 0xE0 */
521    {    1,    0, NULL },                                       /* 0xE1 */
522    {    1,    0, NULL },                                       /* 0xE2 */
523    {    1,    0, NULL },                                       /* 0xE3 */
524    {    1,    0, NULL },                                       /* 0xE4 */
525    {    1,    0, NULL },                                       /* 0xE5 */
526    {    1,    0, NULL },                                       /* 0xE6 */
527    {    1,    0, NULL },                                       /* 0xE7 */
528    {    1,    0, NULL },                                       /* 0xE8 */
529    {    1,    0, NULL },                                       /* 0xE9 */
530    {    1,    0, NULL },                                       /* 0xEA */
531    {    1,    0, NULL },                                       /* 0xEB */
532    {    1,    0, NULL },                                       /* 0xEC */
533    {    1,    0, NULL },                                       /* 0xED */
534    {    1,    0, NULL },                                       /* 0xEE */
535    {    1,    0, NULL },                                       /* 0xEF */
536    {    1,    0, NULL },                                       /* 0xF0 */
537    {    1,    0, NULL },                                       /* 0xF1 */
538    {    1,    0, NULL },                                       /* 0xF2 */
539    {    1,    0, NULL },                                       /* 0xF3 */
540    {    1,    0, NULL },                                       /* 0xF4 */
541    {    1,    0, NULL },                                       /* 0xF5 */
542    {    1,    0, NULL },                                       /* 0xF6 */
543    {    1,    0, NULL },                                       /* 0xF7 */
544    {    1,    0, NULL },                                       /* 0xF8 */
545    {    1,    0, NULL },                                       /* 0xF9 */
546    { 0x0C, 0x0D, aImplUniToDBCSTab_BIG5_FA },                  /* 0xFA */
547    {    1,    0, NULL },                                       /* 0xFB */
548    {    1,    0, NULL },                                       /* 0xFC */
549    {    1,    0, NULL },                                       /* 0xFD */
550    { 0x30, 0x6B, aImplUniToDBCSTab_BIG5_FE },                  /* 0xFE */
551    { 0x01, 0xFD, aImplUniToDBCSTab_BIG5_FF }                   /* 0xFF */
552};
553
554/* ----------------------------------------------------------------------- */
555
556/* FA40-FEFE --> E000-E310 */
557/* 8E40-A0FE --> E311-EEB7 */
558/* 8140-8DFE --> EEB8-F6B0 */
559/* C6A1-C6FE --> F6B1-F70E */
560/* C740-C8FE --> F70F-F848 */
561
562#define DBCS_EUDC_MS950_COUNT       5
563static ImplDBCSEUDCData const aImplMS950DBCSEUDCTab[DBCS_EUDC_MS950_COUNT] =
564{
565    /* EUDC-Range */
566    /* Lead:    FA-FE */
567    /* Trail:   40-7E, A1-FE */
568    { 0xFA, 0xFE, 0x40, 0x7E, 0xA1, 0xFE, 0, 0, 2, 0x9D, 0xE000, 0xE310 },
569    /* Lead:    8E-A0 */
570    /* Trail:   40-7E, A1-FE */
571    { 0x8E, 0xA0, 0x40, 0x7E, 0xA1, 0xFE, 0, 0, 2, 0x9D, 0xE311, 0xEEB7 },
572    /* Lead:    81-8D */
573    /* Trail:   40-7E, A1-FE */
574    { 0x81, 0x8D, 0x40, 0x7E, 0xA1, 0xFE, 0, 0, 2, 0x9D, 0xEEB8, 0xF6B0 },
575    /* Lead:    C6-C6 */
576    /* Trail:   A1-FE */
577    { 0xC6, 0xC6, 0xA1, 0xFE, 0, 0, 0, 0, 1, 0x5E, 0xF6B1, 0xF70E },
578    /* Lead:    C7-C8 */
579    /* Trail:   40-7E, A1-FE */
580    { 0xC7, 0xC8, 0x40, 0x7E, 0xA1, 0xFE, 0, 0, 2, 0x9D, 0xF70F, 0xF848 }
581};
582
583/* ----------------------------------------------------------------------- */
584
585static ImplDBCSConvertData const aImplBIG5DBCSCvtData =
586{
587    aBIG5UniLeadTab,
588    aBIG5DBCSHighTab,
589    0x00, 0xFF,
590    0x40, 0xFE,
591    aImplMS950DBCSEUDCTab,
592    DBCS_EUDC_MS950_COUNT
593};
594
595/* ----------------------------------------------------------------------- */
596
597static ImplTextEncodingData const aImplBIG5TextEncodingData
598    = { { &aImplBIG5DBCSCvtData,
599          ImplDBCSToUnicode,
600          ImplUnicodeToDBCS,
601          NULL,
602          NULL,
603          NULL,
604          NULL,
605          NULL,
606          NULL },
607        1,
608        2,
609        2,
610        136,
611        "euc-tw",
612        "big5",
613        RTL_TEXTENCODING_INFO_MULTIBYTE | RTL_TEXTENCODING_INFO_MIME };
614    /* SCRIPT_CHINESE_TRADITIONAL, pc code page 950, mac encoding 2 */
615
616/* ======================================================================= */
617
618static ImplDBCSToUniLeadTab const aMS950UniLeadTab[256] =
619{
620    { 0x0000,    0,    0, NULL },                               /* 0x00 */
621    { 0x0001,    0,    0, NULL },                               /* 0x01 */
622    { 0x0002,    0,    0, NULL },                               /* 0x02 */
623    { 0x0003,    0,    0, NULL },                               /* 0x03 */
624    { 0x0004,    0,    0, NULL },                               /* 0x04 */
625    { 0x0005,    0,    0, NULL },                               /* 0x05 */
626    { 0x0006,    0,    0, NULL },                               /* 0x06 */
627    { 0x0007,    0,    0, NULL },                               /* 0x07 */
628    { 0x0008,    0,    0, NULL },                               /* 0x08 */
629    { 0x0009,    0,    0, NULL },                               /* 0x09 */
630    { 0x000A,    0,    0, NULL },                               /* 0x0A */
631    { 0x000B,    0,    0, NULL },                               /* 0x0B */
632    { 0x000C,    0,    0, NULL },                               /* 0x0C */
633    { 0x000D,    0,    0, NULL },                               /* 0x0D */
634    { 0x000E,    0,    0, NULL },                               /* 0x0E */
635    { 0x000F,    0,    0, NULL },                               /* 0x0F */
636    { 0x0010,    0,    0, NULL },                               /* 0x10 */
637    { 0x0011,    0,    0, NULL },                               /* 0x11 */
638    { 0x0012,    0,    0, NULL },                               /* 0x12 */
639    { 0x0013,    0,    0, NULL },                               /* 0x13 */
640    { 0x0014,    0,    0, NULL },                               /* 0x14 */
641    { 0x0015,    0,    0, NULL },                               /* 0x15 */
642    { 0x0016,    0,    0, NULL },                               /* 0x16 */
643    { 0x0017,    0,    0, NULL },                               /* 0x17 */
644    { 0x0018,    0,    0, NULL },                               /* 0x18 */
645    { 0x0019,    0,    0, NULL },                               /* 0x19 */
646    { 0x001A,    0,    0, NULL },                               /* 0x1A */
647    { 0x001B,    0,    0, NULL },                               /* 0x1B */
648    { 0x001C,    0,    0, NULL },                               /* 0x1C */
649    { 0x001D,    0,    0, NULL },                               /* 0x1D */
650    { 0x001E,    0,    0, NULL },                               /* 0x1E */
651    { 0x001F,    0,    0, NULL },                               /* 0x1F */
652    { 0x0020,    0,    0, NULL },                               /* 0x20 */
653    { 0x0021,    0,    0, NULL },                               /* 0x21 */
654    { 0x0022,    0,    0, NULL },                               /* 0x22 */
655    { 0x0023,    0,    0, NULL },                               /* 0x23 */
656    { 0x0024,    0,    0, NULL },                               /* 0x24 */
657    { 0x0025,    0,    0, NULL },                               /* 0x25 */
658    { 0x0026,    0,    0, NULL },                               /* 0x26 */
659    { 0x0027,    0,    0, NULL },                               /* 0x27 */
660    { 0x0028,    0,    0, NULL },                               /* 0x28 */
661    { 0x0029,    0,    0, NULL },                               /* 0x29 */
662    { 0x002A,    0,    0, NULL },                               /* 0x2A */
663    { 0x002B,    0,    0, NULL },                               /* 0x2B */
664    { 0x002C,    0,    0, NULL },                               /* 0x2C */
665    { 0x002D,    0,    0, NULL },                               /* 0x2D */
666    { 0x002E,    0,    0, NULL },                               /* 0x2E */
667    { 0x002F,    0,    0, NULL },                               /* 0x2F */
668    { 0x0030,    0,    0, NULL },                               /* 0x30 */
669    { 0x0031,    0,    0, NULL },                               /* 0x31 */
670    { 0x0032,    0,    0, NULL },                               /* 0x32 */
671    { 0x0033,    0,    0, NULL },                               /* 0x33 */
672    { 0x0034,    0,    0, NULL },                               /* 0x34 */
673    { 0x0035,    0,    0, NULL },                               /* 0x35 */
674    { 0x0036,    0,    0, NULL },                               /* 0x36 */
675    { 0x0037,    0,    0, NULL },                               /* 0x37 */
676    { 0x0038,    0,    0, NULL },                               /* 0x38 */
677    { 0x0039,    0,    0, NULL },                               /* 0x39 */
678    { 0x003A,    0,    0, NULL },                               /* 0x3A */
679    { 0x003B,    0,    0, NULL },                               /* 0x3B */
680    { 0x003C,    0,    0, NULL },                               /* 0x3C */
681    { 0x003D,    0,    0, NULL },                               /* 0x3D */
682    { 0x003E,    0,    0, NULL },                               /* 0x3E */
683    { 0x003F,    0,    0, NULL },                               /* 0x3F */
684    { 0x0040,    0,    0, NULL },                               /* 0x40 */
685    { 0x0041,    0,    0, NULL },                               /* 0x41 */
686    { 0x0042,    0,    0, NULL },                               /* 0x42 */
687    { 0x0043,    0,    0, NULL },                               /* 0x43 */
688    { 0x0044,    0,    0, NULL },                               /* 0x44 */
689    { 0x0045,    0,    0, NULL },                               /* 0x45 */
690    { 0x0046,    0,    0, NULL },                               /* 0x46 */
691    { 0x0047,    0,    0, NULL },                               /* 0x47 */
692    { 0x0048,    0,    0, NULL },                               /* 0x48 */
693    { 0x0049,    0,    0, NULL },                               /* 0x49 */
694    { 0x004A,    0,    0, NULL },                               /* 0x4A */
695    { 0x004B,    0,    0, NULL },                               /* 0x4B */
696    { 0x004C,    0,    0, NULL },                               /* 0x4C */
697    { 0x004D,    0,    0, NULL },                               /* 0x4D */
698    { 0x004E,    0,    0, NULL },                               /* 0x4E */
699    { 0x004F,    0,    0, NULL },                               /* 0x4F */
700    { 0x0050,    0,    0, NULL },                               /* 0x50 */
701    { 0x0051,    0,    0, NULL },                               /* 0x51 */
702    { 0x0052,    0,    0, NULL },                               /* 0x52 */
703    { 0x0053,    0,    0, NULL },                               /* 0x53 */
704    { 0x0054,    0,    0, NULL },                               /* 0x54 */
705    { 0x0055,    0,    0, NULL },                               /* 0x55 */
706    { 0x0056,    0,    0, NULL },                               /* 0x56 */
707    { 0x0057,    0,    0, NULL },                               /* 0x57 */
708    { 0x0058,    0,    0, NULL },                               /* 0x58 */
709    { 0x0059,    0,    0, NULL },                               /* 0x59 */
710    { 0x005A,    0,    0, NULL },                               /* 0x5A */
711    { 0x005B,    0,    0, NULL },                               /* 0x5B */
712    { 0x005C,    0,    0, NULL },                               /* 0x5C */
713    { 0x005D,    0,    0, NULL },                               /* 0x5D */
714    { 0x005E,    0,    0, NULL },                               /* 0x5E */
715    { 0x005F,    0,    0, NULL },                               /* 0x5F */
716    { 0x0060,    0,    0, NULL },                               /* 0x60 */
717    { 0x0061,    0,    0, NULL },                               /* 0x61 */
718    { 0x0062,    0,    0, NULL },                               /* 0x62 */
719    { 0x0063,    0,    0, NULL },                               /* 0x63 */
720    { 0x0064,    0,    0, NULL },                               /* 0x64 */
721    { 0x0065,    0,    0, NULL },                               /* 0x65 */
722    { 0x0066,    0,    0, NULL },                               /* 0x66 */
723    { 0x0067,    0,    0, NULL },                               /* 0x67 */
724    { 0x0068,    0,    0, NULL },                               /* 0x68 */
725    { 0x0069,    0,    0, NULL },                               /* 0x69 */
726    { 0x006A,    0,    0, NULL },                               /* 0x6A */
727    { 0x006B,    0,    0, NULL },                               /* 0x6B */
728    { 0x006C,    0,    0, NULL },                               /* 0x6C */
729    { 0x006D,    0,    0, NULL },                               /* 0x6D */
730    { 0x006E,    0,    0, NULL },                               /* 0x6E */
731    { 0x006F,    0,    0, NULL },                               /* 0x6F */
732    { 0x0070,    0,    0, NULL },                               /* 0x70 */
733    { 0x0071,    0,    0, NULL },                               /* 0x71 */
734    { 0x0072,    0,    0, NULL },                               /* 0x72 */
735    { 0x0073,    0,    0, NULL },                               /* 0x73 */
736    { 0x0074,    0,    0, NULL },                               /* 0x74 */
737    { 0x0075,    0,    0, NULL },                               /* 0x75 */
738    { 0x0076,    0,    0, NULL },                               /* 0x76 */
739    { 0x0077,    0,    0, NULL },                               /* 0x77 */
740    { 0x0078,    0,    0, NULL },                               /* 0x78 */
741    { 0x0079,    0,    0, NULL },                               /* 0x79 */
742    { 0x007A,    0,    0, NULL },                               /* 0x7A */
743    { 0x007B,    0,    0, NULL },                               /* 0x7B */
744    { 0x007C,    0,    0, NULL },                               /* 0x7C */
745    { 0x007D,    0,    0, NULL },                               /* 0x7D */
746    { 0x007E,    0,    0, NULL },                               /* 0x7E */
747    { 0x007F,    0,    0, NULL },                               /* 0x7F */
748    {      0,    1,    0, NULL },                               /* 0x80 */
749    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x81 */ /* We convert this as double byte */
750    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x82 */ /* We convert this as double byte */
751    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x83 */ /* We convert this as double byte */
752    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x84 */ /* We convert this as double byte */
753    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x85 */ /* We convert this as double byte */
754    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x86 */ /* We convert this as double byte */
755    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x87 */ /* We convert this as double byte */
756    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x88 */ /* We convert this as double byte */
757    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x89 */ /* We convert this as double byte */
758    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x8A */ /* We convert this as double byte */
759    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x8B */ /* We convert this as double byte */
760    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x8C */ /* We convert this as double byte */
761    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x8D */ /* We convert this as double byte */
762    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x8E */ /* We convert this as double byte */
763    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x8F */ /* We convert this as double byte */
764    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x90 */ /* We convert this as double byte */
765    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x91 */ /* We convert this as double byte */
766    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x92 */ /* We convert this as double byte */
767    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x93 */ /* We convert this as double byte */
768    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x94 */ /* We convert this as double byte */
769    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x95 */ /* We convert this as double byte */
770    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x96 */ /* We convert this as double byte */
771    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x97 */ /* We convert this as double byte */
772    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x98 */ /* We convert this as double byte */
773    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x99 */ /* We convert this as double byte */
774    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x9A */ /* We convert this as double byte */
775    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x9B */ /* We convert this as double byte */
776    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x9C */ /* We convert this as double byte */
777    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x9D */ /* We convert this as double byte */
778    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x9E */ /* We convert this as double byte */
779    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x9F */ /* We convert this as double byte */
780    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0xA0 */ /* We convert this as double byte */
781    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_A1 },          /* 0xA1 */
782    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_A2 },          /* 0xA2 */
783    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_A3 },          /* 0xA3 */
784    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_A4 },          /* 0xA4 */
785    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_A5 },          /* 0xA5 */
786    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_A6 },          /* 0xA6 */
787    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_A7 },          /* 0xA7 */
788    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_A8 },          /* 0xA8 */
789    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_A9 },          /* 0xA9 */
790    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_AA },          /* 0xAA */
791    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_AB },          /* 0xAB */
792    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_AC },          /* 0xAC */
793    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_AD },          /* 0xAD */
794    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_AE },          /* 0xAE */
795    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_AF },          /* 0xAF */
796    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_B0 },          /* 0xB0 */
797    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_B1 },          /* 0xB1 */
798    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_B2 },          /* 0xB2 */
799    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_B3 },          /* 0xB3 */
800    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_B4 },          /* 0xB4 */
801    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_B5 },          /* 0xB5 */
802    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_B6 },          /* 0xB6 */
803    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_B7 },          /* 0xB7 */
804    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_B8 },          /* 0xB8 */
805    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_B9 },          /* 0xB9 */
806    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_BA },          /* 0xBA */
807    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_BB },          /* 0xBB */
808    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_BC },          /* 0xBC */
809    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_BD },          /* 0xBD */
810    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_BE },          /* 0xBE */
811    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_BF },          /* 0xBF */
812    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_C0 },          /* 0xC0 */
813    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_C1 },          /* 0xC1 */
814    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_C2 },          /* 0xC2 */
815    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_C3 },          /* 0xC3 */
816    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_C4 },          /* 0xC4 */
817    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_C5 },          /* 0xC5 */
818    {      0, 0x40, 0x7E, aImplDBCSToUniTab_BIG5_C6 },          /* 0xC6 */
819    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0xC7 */ /* We convert this as double byte */
820    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0xC8 */ /* We convert this as double byte */
821    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_C9 },          /* 0xC9 */
822    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_CA },          /* 0xCA */
823    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_CB },          /* 0xCB */
824    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_CC },          /* 0xCC */
825    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_CD },          /* 0xCD */
826    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_CE },          /* 0xCE */
827    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_CF },          /* 0xCF */
828    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_D0 },          /* 0xD0 */
829    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_D1 },          /* 0xD1 */
830    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_D2 },          /* 0xD2 */
831    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_D3 },          /* 0xD3 */
832    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_D4 },          /* 0xD4 */
833    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_D5 },          /* 0xD5 */
834    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_D6 },          /* 0xD6 */
835    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_D7 },          /* 0xD7 */
836    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_D8 },          /* 0xD8 */
837    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_D9 },          /* 0xD9 */
838    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_DA },          /* 0xDA */
839    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_DB },          /* 0xDB */
840    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_DC },          /* 0xDC */
841    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_DD },          /* 0xDD */
842    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_DE },          /* 0xDE */
843    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_DF },          /* 0xDF */
844    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_E0 },          /* 0xE0 */
845    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_E1 },          /* 0xE1 */
846    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_E2 },          /* 0xE2 */
847    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_E3 },          /* 0xE3 */
848    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_E4 },          /* 0xE4 */
849    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_E5 },          /* 0xE5 */
850    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_E6 },          /* 0xE6 */
851    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_E7 },          /* 0xE7 */
852    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_E8 },          /* 0xE8 */
853    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_E9 },          /* 0xE9 */
854    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_EA },          /* 0xEA */
855    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_EB },          /* 0xEB */
856    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_EC },          /* 0xEC */
857    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_ED },          /* 0xED */
858    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_EE },          /* 0xEE */
859    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_EF },          /* 0xEF */
860    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_F0 },          /* 0xF0 */
861    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_F1 },          /* 0xF1 */
862    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_F2 },          /* 0xF2 */
863    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_F3 },          /* 0xF3 */
864    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_F4 },          /* 0xF4 */
865    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_F5 },          /* 0xF5 */
866    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_F6 },          /* 0xF6 */
867    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_F7 },          /* 0xF7 */
868    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_F8 },          /* 0xF8 */
869    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_F9 },          /* 0xF9 */
870    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0xFA */ /* We convert this as double byte */
871    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0xFB */ /* We convert this as double byte */
872    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0xFC */ /* We convert this as double byte */
873    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0xFD */ /* We convert this as double byte */
874    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0xFE */ /* We convert this as double byte */
875    {      0,    1,    0, NULL }                                /* 0xFF */
876};
877
878/* ----------------------------------------------------------------------- */
879
880static ImplUniToDBCSHighTab const aMS950DBCSHighTab[256] =
881{
882    { 0x00, 0xF7, aImplUniToDBCSTab_BIG5_00 },                  /* 0x00 */
883    {    1,    0, NULL },                                       /* 0x01 */
884    { 0xC7, 0xD9, aImplUniToDBCSTab_BIG5_02 },                  /* 0x02 */
885    { 0x91, 0xC9, aImplUniToDBCSTab_BIG5_03 },                  /* 0x03 */
886    { 0x01, 0x51, aImplUniToDBCSTab_BIG5_04 },                  /* 0x04 */
887    {    1,    0, NULL },                                       /* 0x05 */
888    {    1,    0, NULL },                                       /* 0x06 */
889    {    1,    0, NULL },                                       /* 0x07 */
890    {    1,    0, NULL },                                       /* 0x08 */
891    {    1,    0, NULL },                                       /* 0x09 */
892    {    1,    0, NULL },                                       /* 0x0A */
893    {    1,    0, NULL },                                       /* 0x0B */
894    {    1,    0, NULL },                                       /* 0x0C */
895    {    1,    0, NULL },                                       /* 0x0D */
896    {    1,    0, NULL },                                       /* 0x0E */
897    {    1,    0, NULL },                                       /* 0x0F */
898    {    1,    0, NULL },                                       /* 0x10 */
899    {    1,    0, NULL },                                       /* 0x11 */
900    {    1,    0, NULL },                                       /* 0x12 */
901    {    1,    0, NULL },                                       /* 0x13 */
902    {    1,    0, NULL },                                       /* 0x14 */
903    {    1,    0, NULL },                                       /* 0x15 */
904    {    1,    0, NULL },                                       /* 0x16 */
905    {    1,    0, NULL },                                       /* 0x17 */
906    {    1,    0, NULL },                                       /* 0x18 */
907    {    1,    0, NULL },                                       /* 0x19 */
908    {    1,    0, NULL },                                       /* 0x1A */
909    {    1,    0, NULL },                                       /* 0x1B */
910    {    1,    0, NULL },                                       /* 0x1C */
911    {    1,    0, NULL },                                       /* 0x1D */
912    {    1,    0, NULL },                                       /* 0x1E */
913    {    1,    0, NULL },                                       /* 0x1F */
914    { 0x13, 0xAC, aImplUniToDBCSTab_BIG5_20 },                  /* 0x20 */
915    { 0x03, 0x99, aImplUniToDBCSTab_BIG5_21 },                  /* 0x21 */
916    { 0x15, 0xEF, aImplUniToDBCSTab_BIG5_22 },                  /* 0x22 */
917    {    1,    0, NULL },                                       /* 0x23 */
918    { 0x60, 0x7D, aImplUniToDBCSTab_BIG5_24 },                  /* 0x24 */
919    { 0x00, 0xE5, aImplUniToDBCSTab_BIG5_25 },                  /* 0x25 */
920    { 0x05, 0x42, aImplUniToDBCSTab_BIG5_26 },                  /* 0x25 */
921    {    1,    0, NULL },                                       /* 0x27 */
922    {    1,    0, NULL },                                       /* 0x28 */
923    {    1,    0, NULL },                                       /* 0x29 */
924    {    1,    0, NULL },                                       /* 0x2A */
925    {    1,    0, NULL },                                       /* 0x2B */
926    {    1,    0, NULL },                                       /* 0x2C */
927    {    1,    0, NULL },                                       /* 0x2D */
928    {    1,    0, NULL },                                       /* 0x2E */
929    {    1,    0, NULL },                                       /* 0x2F */
930    { 0x00, 0xFE, aImplUniToDBCSTab_BIG5_30 },                  /* 0x30 */
931    { 0x05, 0x29, aImplUniToDBCSTab_BIG5_31 },                  /* 0x31 */
932    { 0xA3, 0xA3, aImplUniToDBCSTab_BIG5_32 },                  /* 0x32 */
933    { 0x8E, 0xD5, aImplUniToDBCSTab_BIG5_33 },                  /* 0x33 */
934    {    1,    0, NULL },                                       /* 0x34 */
935    {    1,    0, NULL },                                       /* 0x35 */
936    {    1,    0, NULL },                                       /* 0x36 */
937    {    1,    0, NULL },                                       /* 0x37 */
938    {    1,    0, NULL },                                       /* 0x38 */
939    {    1,    0, NULL },                                       /* 0x39 */
940    {    1,    0, NULL },                                       /* 0x3A */
941    {    1,    0, NULL },                                       /* 0x3B */
942    {    1,    0, NULL },                                       /* 0x3C */
943    {    1,    0, NULL },                                       /* 0x3D */
944    {    1,    0, NULL },                                       /* 0x3E */
945    {    1,    0, NULL },                                       /* 0x3F */
946    {    1,    0, NULL },                                       /* 0x40 */
947    {    1,    0, NULL },                                       /* 0x41 */
948    {    1,    0, NULL },                                       /* 0x42 */
949    {    1,    0, NULL },                                       /* 0x43 */
950    {    1,    0, NULL },                                       /* 0x44 */
951    {    1,    0, NULL },                                       /* 0x45 */
952    {    1,    0, NULL },                                       /* 0x46 */
953    {    1,    0, NULL },                                       /* 0x47 */
954    {    1,    0, NULL },                                       /* 0x48 */
955    {    1,    0, NULL },                                       /* 0x49 */
956    {    1,    0, NULL },                                       /* 0x4A */
957    {    1,    0, NULL },                                       /* 0x4B */
958    {    1,    0, NULL },                                       /* 0x4C */
959    {    1,    0, NULL },                                       /* 0x4D */
960    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_4E },                  /* 0x4E */
961    { 0x00, 0xFE, aImplUniToDBCSTab_BIG5_4F },                  /* 0x4F */
962    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_50 },                  /* 0x50 */
963    { 0x00, 0xFD, aImplUniToDBCSTab_BIG5_51 },                  /* 0x51 */
964    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_52 },                  /* 0x52 */
965    { 0x05, 0xFC, aImplUniToDBCSTab_BIG5_53 },                  /* 0x53 */
966    { 0x01, 0xFF, aImplUniToDBCSTab_BIG5_54 },                  /* 0x54 */
967    { 0x01, 0xFF, aImplUniToDBCSTab_BIG5_55 },                  /* 0x55 */
968    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_56 },                  /* 0x56 */
969    { 0x01, 0xFD, aImplUniToDBCSTab_BIG5_57 },                  /* 0x57 */
970    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_58 },                  /* 0x58 */
971    { 0x03, 0xFF, aImplUniToDBCSTab_BIG5_59 },                  /* 0x59 */
972    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_5A },                  /* 0x5A */
973    { 0x01, 0xFA, aImplUniToDBCSTab_BIG5_5B },                  /* 0x5B */
974    { 0x01, 0xFF, aImplUniToDBCSTab_BIG5_5C },                  /* 0x5C */
975    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_5D },                  /* 0x5D */
976    { 0x02, 0xFF, aImplUniToDBCSTab_BIG5_5E },                  /* 0x5E */
977    { 0x01, 0xFF, aImplUniToDBCSTab_BIG5_5F },                  /* 0x5F */
978    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_60 },                  /* 0x60 */
979    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_61 },                  /* 0x61 */
980    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_62 },                  /* 0x62 */
981    { 0x00, 0xF9, aImplUniToDBCSTab_BIG5_63 },                  /* 0x63 */
982    { 0x06, 0xFF, aImplUniToDBCSTab_BIG5_64 },                  /* 0x64 */
983    { 0x00, 0xFD, aImplUniToDBCSTab_BIG5_65 },                  /* 0x65 */
984    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_66 },                  /* 0x66 */
985    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_67 },                  /* 0x67 */
986    { 0x12, 0xFD, aImplUniToDBCSTab_BIG5_68 },                  /* 0x68 */
987    { 0x04, 0xFF, aImplUniToDBCSTab_BIG5_69 },                  /* 0x69 */
988    { 0x00, 0xFC, aImplUniToDBCSTab_BIG5_6A },                  /* 0x6A */
989    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_6B },                  /* 0x6B */
990    { 0x00, 0xF9, aImplUniToDBCSTab_BIG5_6C },                  /* 0x6C */
991    { 0x00, 0xFD, aImplUniToDBCSTab_BIG5_6D },                  /* 0x6D */
992    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_6E },                  /* 0x6E */
993    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_6F },                  /* 0x6F */
994    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_70 },                  /* 0x70 */
995    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_71 },                  /* 0x71 */
996    { 0x01, 0xFF, aImplUniToDBCSTab_BIG5_72 },                  /* 0x72 */
997    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_73 },                  /* 0x73 */
998    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_74 },                  /* 0x74 */
999    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_75 },                  /* 0x75 */
1000    { 0x00, 0xFE, aImplUniToDBCSTab_BIG5_76 },                  /* 0x76 */
1001    { 0x01, 0xFD, aImplUniToDBCSTab_BIG5_77 },                  /* 0x77 */
1002    { 0x02, 0xFF, aImplUniToDBCSTab_BIG5_78 },                  /* 0x78 */
1003    { 0x01, 0xFB, aImplUniToDBCSTab_BIG5_79 },                  /* 0x79 */
1004    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_7A },                  /* 0x7A */
1005    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_7B },                  /* 0x7B */
1006    { 0x00, 0xFE, aImplUniToDBCSTab_BIG5_7C },                  /* 0x7C */
1007    { 0x00, 0xFB, aImplUniToDBCSTab_BIG5_7D },                  /* 0x7D */
1008    { 0x03, 0x9C, aImplUniToDBCSTab_BIG5_7E },                  /* 0x7E */
1009    { 0x36, 0xFF, aImplUniToDBCSTab_BIG5_7F },                  /* 0x7F */
1010    { 0x00, 0xFE, aImplUniToDBCSTab_BIG5_80 },                  /* 0x80 */
1011    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_81 },                  /* 0x81 */
1012    { 0x00, 0xFE, aImplUniToDBCSTab_BIG5_82 },                  /* 0x82 */
1013    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_83 },                  /* 0x83 */
1014    { 0x01, 0xFF, aImplUniToDBCSTab_BIG5_84 },                  /* 0x84 */
1015    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_85 },                  /* 0x85 */
1016    { 0x00, 0xFE, aImplUniToDBCSTab_BIG5_86 },                  /* 0x86 */
1017    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_87 },                  /* 0x87 */
1018    { 0x00, 0xFE, aImplUniToDBCSTab_BIG5_88 },                  /* 0x88 */
1019    { 0x01, 0xFF, aImplUniToDBCSTab_BIG5_89 },                  /* 0x89 */
1020    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_8A },                  /* 0x8A */
1021    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_8B },                  /* 0x8B */
1022    { 0x37, 0xFE, aImplUniToDBCSTab_BIG5_8C },                  /* 0x8C */
1023    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_8D },                  /* 0x8D */
1024    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_8E },                  /* 0x8E */
1025    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_8F },                  /* 0x8F */
1026    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_90 },                  /* 0x90 */
1027    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_91 },                  /* 0x91 */
1028    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_92 },                  /* 0x92 */
1029    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_93 },                  /* 0x93 */
1030    { 0x00, 0x83, aImplUniToDBCSTab_BIG5_94 },                  /* 0x94 */
1031    { 0x77, 0xE5, aImplUniToDBCSTab_BIG5_95 },                  /* 0x95 */
1032    { 0x1C, 0xFF, aImplUniToDBCSTab_BIG5_96 },                  /* 0x96 */
1033    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_97 },                  /* 0x97 */
1034    { 0x00, 0xFE, aImplUniToDBCSTab_BIG5_98 },                  /* 0x98 */
1035    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_99 },                  /* 0x99 */
1036    { 0x01, 0xFE, aImplUniToDBCSTab_BIG5_9A },                  /* 0x9A */
1037    { 0x01, 0xFD, aImplUniToDBCSTab_BIG5_9B },                  /* 0x9B */
1038    { 0x05, 0xFF, aImplUniToDBCSTab_BIG5_9C },                  /* 0x9C */
1039    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_9D },                  /* 0x9D */
1040    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_9E },                  /* 0x9E */
1041    { 0x00, 0xA4, aImplUniToDBCSTab_BIG5_9F },                  /* 0x9F */
1042    {    1,    0, NULL },                                       /* 0xA0 */
1043    {    1,    0, NULL },                                       /* 0xA1 */
1044    {    1,    0, NULL },                                       /* 0xA2 */
1045    {    1,    0, NULL },                                       /* 0xA3 */
1046    {    1,    0, NULL },                                       /* 0xA4 */
1047    {    1,    0, NULL },                                       /* 0xA5 */
1048    {    1,    0, NULL },                                       /* 0xA6 */
1049    {    1,    0, NULL },                                       /* 0xA7 */
1050    {    1,    0, NULL },                                       /* 0xA8 */
1051    {    1,    0, NULL },                                       /* 0xA9 */
1052    {    1,    0, NULL },                                       /* 0xAA */
1053    {    1,    0, NULL },                                       /* 0xAB */
1054    {    1,    0, NULL },                                       /* 0xAC */
1055    {    1,    0, NULL },                                       /* 0xAD */
1056    {    1,    0, NULL },                                       /* 0xAE */
1057    {    1,    0, NULL },                                       /* 0xAF */
1058    {    1,    0, NULL },                                       /* 0xB0 */
1059    {    1,    0, NULL },                                       /* 0xB1 */
1060    {    1,    0, NULL },                                       /* 0xB2 */
1061    {    1,    0, NULL },                                       /* 0xB3 */
1062    {    1,    0, NULL },                                       /* 0xB4 */
1063    {    1,    0, NULL },                                       /* 0xB5 */
1064    {    1,    0, NULL },                                       /* 0xB6 */
1065    {    1,    0, NULL },                                       /* 0xB7 */
1066    {    1,    0, NULL },                                       /* 0xB8 */
1067    {    1,    0, NULL },                                       /* 0xB9 */
1068    {    1,    0, NULL },                                       /* 0xBA */
1069    {    1,    0, NULL },                                       /* 0xBB */
1070    {    1,    0, NULL },                                       /* 0xBC */
1071    {    1,    0, NULL },                                       /* 0xBD */
1072    {    1,    0, NULL },                                       /* 0xBE */
1073    {    1,    0, NULL },                                       /* 0xBF */
1074    {    1,    0, NULL },                                       /* 0xC0 */
1075    {    1,    0, NULL },                                       /* 0xC1 */
1076    {    1,    0, NULL },                                       /* 0xC2 */
1077    {    1,    0, NULL },                                       /* 0xC3 */
1078    {    1,    0, NULL },                                       /* 0xC4 */
1079    {    1,    0, NULL },                                       /* 0xC5 */
1080    {    1,    0, NULL },                                       /* 0xC6 */
1081    {    1,    0, NULL },                                       /* 0xC7 */
1082    {    1,    0, NULL },                                       /* 0xC8 */
1083    {    1,    0, NULL },                                       /* 0xC9 */
1084    {    1,    0, NULL },                                       /* 0xCA */
1085    {    1,    0, NULL },                                       /* 0xCB */
1086    {    1,    0, NULL },                                       /* 0xCC */
1087    {    1,    0, NULL },                                       /* 0xCD */
1088    {    1,    0, NULL },                                       /* 0xCE */
1089    {    1,    0, NULL },                                       /* 0xCF */
1090    {    1,    0, NULL },                                       /* 0xD0 */
1091    {    1,    0, NULL },                                       /* 0xD1 */
1092    {    1,    0, NULL },                                       /* 0xD2 */
1093    {    1,    0, NULL },                                       /* 0xD3 */
1094    {    1,    0, NULL },                                       /* 0xD4 */
1095    {    1,    0, NULL },                                       /* 0xD5 */
1096    {    1,    0, NULL },                                       /* 0xD6 */
1097    {    1,    0, NULL },                                       /* 0xD7 */
1098    {    1,    0, NULL },                                       /* 0xD8 */
1099    {    1,    0, NULL },                                       /* 0xD9 */
1100    {    1,    0, NULL },                                       /* 0xDA */
1101    {    1,    0, NULL },                                       /* 0xDB */
1102    {    1,    0, NULL },                                       /* 0xDC */
1103    {    1,    0, NULL },                                       /* 0xDD */
1104    {    1,    0, NULL },                                       /* 0xDE */
1105    {    1,    0, NULL },                                       /* 0xDF */
1106    {    1,    0, NULL },                                       /* 0xE0 */
1107    {    1,    0, NULL },                                       /* 0xE1 */
1108    {    1,    0, NULL },                                       /* 0xE2 */
1109    {    1,    0, NULL },                                       /* 0xE3 */
1110    {    1,    0, NULL },                                       /* 0xE4 */
1111    {    1,    0, NULL },                                       /* 0xE5 */
1112    {    1,    0, NULL },                                       /* 0xE6 */
1113    {    1,    0, NULL },                                       /* 0xE7 */
1114    {    1,    0, NULL },                                       /* 0xE8 */
1115    {    1,    0, NULL },                                       /* 0xE9 */
1116    {    1,    0, NULL },                                       /* 0xEA */
1117    {    1,    0, NULL },                                       /* 0xEB */
1118    {    1,    0, NULL },                                       /* 0xEC */
1119    {    1,    0, NULL },                                       /* 0xED */
1120    {    1,    0, NULL },                                       /* 0xEE */
1121    {    1,    0, NULL },                                       /* 0xEF */
1122    {    1,    0, NULL },                                       /* 0xF0 */
1123    {    1,    0, NULL },                                       /* 0xF1 */
1124    {    1,    0, NULL },                                       /* 0xF2 */
1125    {    1,    0, NULL },                                       /* 0xF3 */
1126    {    1,    0, NULL },                                       /* 0xF4 */
1127    {    1,    0, NULL },                                       /* 0xF5 */
1128    {    1,    0, NULL },                                       /* 0xF6 */
1129    {    1,    0, NULL },                                       /* 0xF7 */
1130    {    1,    0, NULL },                                       /* 0xF8 */
1131    {    1,    0, NULL },                                       /* 0xF9 */
1132    { 0x0C, 0x0D, aImplUniToDBCSTab_BIG5_FA },                  /* 0xFA */
1133    {    1,    0, NULL },                                       /* 0xFB */
1134    {    1,    0, NULL },                                       /* 0xFC */
1135    {    1,    0, NULL },                                       /* 0xFD */
1136    { 0x30, 0x6B, aImplUniToDBCSTab_BIG5_FE },                  /* 0xFE */
1137    { 0x01, 0xFD, aImplUniToDBCSTab_BIG5_FF }                   /* 0xFF */
1138};
1139
1140/* ----------------------------------------------------------------------- */
1141
1142static ImplDBCSConvertData const aImplMS950DBCSCvtData =
1143{
1144    aMS950UniLeadTab,
1145    aMS950DBCSHighTab,
1146    0x00, 0xFF,
1147    0x40, 0xFE,
1148    aImplMS950DBCSEUDCTab,
1149    DBCS_EUDC_MS950_COUNT
1150};
1151
1152/* ----------------------------------------------------------------------- */
1153
1154static ImplTextEncodingData const aImplMS950TextEncodingData
1155    = { { &aImplMS950DBCSCvtData,
1156          ImplDBCSToUnicode,
1157          ImplUnicodeToDBCS,
1158          NULL,
1159          NULL,
1160          NULL,
1161          NULL,
1162          NULL,
1163          NULL },
1164        1,
1165        2,
1166        2,
1167        136,
1168        "euc-tw",
1169        "big5",
1170        RTL_TEXTENCODING_INFO_MULTIBYTE };
1171    /* WIN/DOS/OS2, SCRIPT_CHINESE_TRADITIONAL, pc code page 950, mac encoding
1172       2 */
1173
1174/* ======================================================================= */
1175
1176static ImplDBCSToUniLeadTab const aAPPLECHINTRADUniLeadTab[256] =
1177{
1178    { 0x0000,    0,    0, NULL },                               /* 0x00 */
1179    { 0x0001,    0,    0, NULL },                               /* 0x01 */
1180    { 0x0002,    0,    0, NULL },                               /* 0x02 */
1181    { 0x0003,    0,    0, NULL },                               /* 0x03 */
1182    { 0x0004,    0,    0, NULL },                               /* 0x04 */
1183    { 0x0005,    0,    0, NULL },                               /* 0x05 */
1184    { 0x0006,    0,    0, NULL },                               /* 0x06 */
1185    { 0x0007,    0,    0, NULL },                               /* 0x07 */
1186    { 0x0008,    0,    0, NULL },                               /* 0x08 */
1187    { 0x0009,    0,    0, NULL },                               /* 0x09 */
1188    { 0x000A,    0,    0, NULL },                               /* 0x0A */
1189    { 0x000B,    0,    0, NULL },                               /* 0x0B */
1190    { 0x000C,    0,    0, NULL },                               /* 0x0C */
1191    { 0x000D,    0,    0, NULL },                               /* 0x0D */
1192    { 0x000E,    0,    0, NULL },                               /* 0x0E */
1193    { 0x000F,    0,    0, NULL },                               /* 0x0F */
1194    { 0x0010,    0,    0, NULL },                               /* 0x10 */
1195    { 0x0011,    0,    0, NULL },                               /* 0x11 */
1196    { 0x0012,    0,    0, NULL },                               /* 0x12 */
1197    { 0x0013,    0,    0, NULL },                               /* 0x13 */
1198    { 0x0014,    0,    0, NULL },                               /* 0x14 */
1199    { 0x0015,    0,    0, NULL },                               /* 0x15 */
1200    { 0x0016,    0,    0, NULL },                               /* 0x16 */
1201    { 0x0017,    0,    0, NULL },                               /* 0x17 */
1202    { 0x0018,    0,    0, NULL },                               /* 0x18 */
1203    { 0x0019,    0,    0, NULL },                               /* 0x19 */
1204    { 0x001A,    0,    0, NULL },                               /* 0x1A */
1205    { 0x001B,    0,    0, NULL },                               /* 0x1B */
1206    { 0x001C,    0,    0, NULL },                               /* 0x1C */
1207    { 0x001D,    0,    0, NULL },                               /* 0x1D */
1208    { 0x001E,    0,    0, NULL },                               /* 0x1E */
1209    { 0x001F,    0,    0, NULL },                               /* 0x1F */
1210    { 0x0020,    0,    0, NULL },                               /* 0x20 */
1211    { 0x0021,    0,    0, NULL },                               /* 0x21 */
1212    { 0x0022,    0,    0, NULL },                               /* 0x22 */
1213    { 0x0023,    0,    0, NULL },                               /* 0x23 */
1214    { 0x0024,    0,    0, NULL },                               /* 0x24 */
1215    { 0x0025,    0,    0, NULL },                               /* 0x25 */
1216    { 0x0026,    0,    0, NULL },                               /* 0x26 */
1217    { 0x0027,    0,    0, NULL },                               /* 0x27 */
1218    { 0x0028,    0,    0, NULL },                               /* 0x28 */
1219    { 0x0029,    0,    0, NULL },                               /* 0x29 */
1220    { 0x002A,    0,    0, NULL },                               /* 0x2A */
1221    { 0x002B,    0,    0, NULL },                               /* 0x2B */
1222    { 0x002C,    0,    0, NULL },                               /* 0x2C */
1223    { 0x002D,    0,    0, NULL },                               /* 0x2D */
1224    { 0x002E,    0,    0, NULL },                               /* 0x2E */
1225    { 0x002F,    0,    0, NULL },                               /* 0x2F */
1226    { 0x0030,    0,    0, NULL },                               /* 0x30 */
1227    { 0x0031,    0,    0, NULL },                               /* 0x31 */
1228    { 0x0032,    0,    0, NULL },                               /* 0x32 */
1229    { 0x0033,    0,    0, NULL },                               /* 0x33 */
1230    { 0x0034,    0,    0, NULL },                               /* 0x34 */
1231    { 0x0035,    0,    0, NULL },                               /* 0x35 */
1232    { 0x0036,    0,    0, NULL },                               /* 0x36 */
1233    { 0x0037,    0,    0, NULL },                               /* 0x37 */
1234    { 0x0038,    0,    0, NULL },                               /* 0x38 */
1235    { 0x0039,    0,    0, NULL },                               /* 0x39 */
1236    { 0x003A,    0,    0, NULL },                               /* 0x3A */
1237    { 0x003B,    0,    0, NULL },                               /* 0x3B */
1238    { 0x003C,    0,    0, NULL },                               /* 0x3C */
1239    { 0x003D,    0,    0, NULL },                               /* 0x3D */
1240    { 0x003E,    0,    0, NULL },                               /* 0x3E */
1241    { 0x003F,    0,    0, NULL },                               /* 0x3F */
1242    { 0x0040,    0,    0, NULL },                               /* 0x40 */
1243    { 0x0041,    0,    0, NULL },                               /* 0x41 */
1244    { 0x0042,    0,    0, NULL },                               /* 0x42 */
1245    { 0x0043,    0,    0, NULL },                               /* 0x43 */
1246    { 0x0044,    0,    0, NULL },                               /* 0x44 */
1247    { 0x0045,    0,    0, NULL },                               /* 0x45 */
1248    { 0x0046,    0,    0, NULL },                               /* 0x46 */
1249    { 0x0047,    0,    0, NULL },                               /* 0x47 */
1250    { 0x0048,    0,    0, NULL },                               /* 0x48 */
1251    { 0x0049,    0,    0, NULL },                               /* 0x49 */
1252    { 0x004A,    0,    0, NULL },                               /* 0x4A */
1253    { 0x004B,    0,    0, NULL },                               /* 0x4B */
1254    { 0x004C,    0,    0, NULL },                               /* 0x4C */
1255    { 0x004D,    0,    0, NULL },                               /* 0x4D */
1256    { 0x004E,    0,    0, NULL },                               /* 0x4E */
1257    { 0x004F,    0,    0, NULL },                               /* 0x4F */
1258    { 0x0050,    0,    0, NULL },                               /* 0x50 */
1259    { 0x0051,    0,    0, NULL },                               /* 0x51 */
1260    { 0x0052,    0,    0, NULL },                               /* 0x52 */
1261    { 0x0053,    0,    0, NULL },                               /* 0x53 */
1262    { 0x0054,    0,    0, NULL },                               /* 0x54 */
1263    { 0x0055,    0,    0, NULL },                               /* 0x55 */
1264    { 0x0056,    0,    0, NULL },                               /* 0x56 */
1265    { 0x0057,    0,    0, NULL },                               /* 0x57 */
1266    { 0x0058,    0,    0, NULL },                               /* 0x58 */
1267    { 0x0059,    0,    0, NULL },                               /* 0x59 */
1268    { 0x005A,    0,    0, NULL },                               /* 0x5A */
1269    { 0x005B,    0,    0, NULL },                               /* 0x5B */
1270    { 0x005C,    0,    0, NULL },                               /* 0x5C */
1271    { 0x005D,    0,    0, NULL },                               /* 0x5D */
1272    { 0x005E,    0,    0, NULL },                               /* 0x5E */
1273    { 0x005F,    0,    0, NULL },                               /* 0x5F */
1274    { 0x0060,    0,    0, NULL },                               /* 0x60 */
1275    { 0x0061,    0,    0, NULL },                               /* 0x61 */
1276    { 0x0062,    0,    0, NULL },                               /* 0x62 */
1277    { 0x0063,    0,    0, NULL },                               /* 0x63 */
1278    { 0x0064,    0,    0, NULL },                               /* 0x64 */
1279    { 0x0065,    0,    0, NULL },                               /* 0x65 */
1280    { 0x0066,    0,    0, NULL },                               /* 0x66 */
1281    { 0x0067,    0,    0, NULL },                               /* 0x67 */
1282    { 0x0068,    0,    0, NULL },                               /* 0x68 */
1283    { 0x0069,    0,    0, NULL },                               /* 0x69 */
1284    { 0x006A,    0,    0, NULL },                               /* 0x6A */
1285    { 0x006B,    0,    0, NULL },                               /* 0x6B */
1286    { 0x006C,    0,    0, NULL },                               /* 0x6C */
1287    { 0x006D,    0,    0, NULL },                               /* 0x6D */
1288    { 0x006E,    0,    0, NULL },                               /* 0x6E */
1289    { 0x006F,    0,    0, NULL },                               /* 0x6F */
1290    { 0x0070,    0,    0, NULL },                               /* 0x70 */
1291    { 0x0071,    0,    0, NULL },                               /* 0x71 */
1292    { 0x0072,    0,    0, NULL },                               /* 0x72 */
1293    { 0x0073,    0,    0, NULL },                               /* 0x73 */
1294    { 0x0074,    0,    0, NULL },                               /* 0x74 */
1295    { 0x0075,    0,    0, NULL },                               /* 0x75 */
1296    { 0x0076,    0,    0, NULL },                               /* 0x76 */
1297    { 0x0077,    0,    0, NULL },                               /* 0x77 */
1298    { 0x0078,    0,    0, NULL },                               /* 0x78 */
1299    { 0x0079,    0,    0, NULL },                               /* 0x79 */
1300    { 0x007A,    0,    0, NULL },                               /* 0x7A */
1301    { 0x007B,    0,    0, NULL },                               /* 0x7B */
1302    { 0x007C,    0,    0, NULL },                               /* 0x7C */
1303    { 0x007D,    0,    0, NULL },                               /* 0x7D */
1304    { 0x007E,    0,    0, NULL },                               /* 0x7E */
1305    { 0x007F,    0,    0, NULL },                               /* 0x7F */
1306    {      0,    1,    0, NULL },                               /* 0x80 */
1307    { 0xF880,    0,    0, NULL },                               /* 0x81 */
1308    { 0xF881,    0,    0, NULL },                               /* 0x82 */
1309    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x83 */ /* We convert this as double byte */
1310    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x84 */ /* We convert this as double byte */
1311    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x85 */ /* We convert this as double byte */
1312    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x86 */ /* We convert this as double byte */
1313    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x87 */ /* We convert this as double byte */
1314    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x88 */ /* We convert this as double byte */
1315    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x89 */ /* We convert this as double byte */
1316    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x8A */ /* We convert this as double byte */
1317    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x8B */ /* We convert this as double byte */
1318    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x8C */ /* We convert this as double byte */
1319    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x8D */ /* We convert this as double byte */
1320    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x8E */ /* We convert this as double byte */
1321    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x8F */ /* We convert this as double byte */
1322    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x90 */ /* We convert this as double byte */
1323    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x91 */ /* We convert this as double byte */
1324    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x92 */ /* We convert this as double byte */
1325    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x93 */ /* We convert this as double byte */
1326    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x94 */ /* We convert this as double byte */
1327    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x95 */ /* We convert this as double byte */
1328    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x96 */ /* We convert this as double byte */
1329    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x97 */ /* We convert this as double byte */
1330    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x98 */ /* We convert this as double byte */
1331    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x99 */ /* We convert this as double byte */
1332    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x9A */ /* We convert this as double byte */
1333    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x9B */ /* We convert this as double byte */
1334    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x9C */ /* We convert this as double byte */
1335    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x9D */ /* We convert this as double byte */
1336    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x9E */ /* We convert this as double byte */
1337    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0x9F */ /* We convert this as double byte */
1338    { 0x00A0,    0,    0, NULL },                               /* 0xA0 */
1339    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_A1 },          /* 0xA1 */
1340    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_A2 },          /* 0xA2 */
1341    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_A3 },          /* 0xA3 */
1342    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_A4 },          /* 0xA4 */
1343    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_A5 },          /* 0xA5 */
1344    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_A6 },          /* 0xA6 */
1345    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_A7 },          /* 0xA7 */
1346    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_A8 },          /* 0xA8 */
1347    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_A9 },          /* 0xA9 */
1348    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_AA },          /* 0xAA */
1349    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_AB },          /* 0xAB */
1350    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_AC },          /* 0xAC */
1351    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_AD },          /* 0xAD */
1352    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_AE },          /* 0xAE */
1353    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_AF },          /* 0xAF */
1354    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_B0 },          /* 0xB0 */
1355    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_B1 },          /* 0xB1 */
1356    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_B2 },          /* 0xB2 */
1357    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_B3 },          /* 0xB3 */
1358    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_B4 },          /* 0xB4 */
1359    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_B5 },          /* 0xB5 */
1360    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_B6 },          /* 0xB6 */
1361    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_B7 },          /* 0xB7 */
1362    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_B8 },          /* 0xB8 */
1363    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_B9 },          /* 0xB9 */
1364    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_BA },          /* 0xBA */
1365    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_BB },          /* 0xBB */
1366    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_BC },          /* 0xBC */
1367    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_BD },          /* 0xBD */
1368    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_BE },          /* 0xBE */
1369    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_BF },          /* 0xBF */
1370    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_C0 },          /* 0xC0 */
1371    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_C1 },          /* 0xC1 */
1372    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_C2 },          /* 0xC2 */
1373    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_C3 },          /* 0xC3 */
1374    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_C4 },          /* 0xC4 */
1375    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_C5 },          /* 0xC5 */
1376    {      0, 0x40, 0x7E, aImplDBCSToUniTab_BIG5_C6 },          /* 0xC6 */
1377    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0xC7 */ /* We convert this as double byte */
1378    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0xC8 */ /* We convert this as double byte */
1379    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_C9 },          /* 0xC9 */
1380    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_CA },          /* 0xCA */
1381    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_CB },          /* 0xCB */
1382    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_CC },          /* 0xCC */
1383    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_CD },          /* 0xCD */
1384    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_CE },          /* 0xCE */
1385    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_CF },          /* 0xCF */
1386    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_D0 },          /* 0xD0 */
1387    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_D1 },          /* 0xD1 */
1388    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_D2 },          /* 0xD2 */
1389    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_D3 },          /* 0xD3 */
1390    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_D4 },          /* 0xD4 */
1391    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_D5 },          /* 0xD5 */
1392    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_D6 },          /* 0xD6 */
1393    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_D7 },          /* 0xD7 */
1394    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_D8 },          /* 0xD8 */
1395    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_D9 },          /* 0xD9 */
1396    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_DA },          /* 0xDA */
1397    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_DB },          /* 0xDB */
1398    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_DC },          /* 0xDC */
1399    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_DD },          /* 0xDD */
1400    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_DE },          /* 0xDE */
1401    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_DF },          /* 0xDF */
1402    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_E0 },          /* 0xE0 */
1403    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_E1 },          /* 0xE1 */
1404    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_E2 },          /* 0xE2 */
1405    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_E3 },          /* 0xE3 */
1406    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_E4 },          /* 0xE4 */
1407    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_E5 },          /* 0xE5 */
1408    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_E6 },          /* 0xE6 */
1409    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_E7 },          /* 0xE7 */
1410    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_E8 },          /* 0xE8 */
1411    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_E9 },          /* 0xE9 */
1412    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_EA },          /* 0xEA */
1413    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_EB },          /* 0xEB */
1414    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_EC },          /* 0xEC */
1415    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_ED },          /* 0xED */
1416    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_EE },          /* 0xEE */
1417    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_EF },          /* 0xEF */
1418    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_F0 },          /* 0xF0 */
1419    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_F1 },          /* 0xF1 */
1420    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_F2 },          /* 0xF2 */
1421    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_F3 },          /* 0xF3 */
1422    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_F4 },          /* 0xF4 */
1423    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_F5 },          /* 0xF5 */
1424    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_F6 },          /* 0xF6 */
1425    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_F7 },          /* 0xF7 */
1426    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_F8 },          /* 0xF8 */
1427    {      0, 0x40, 0xFE, aImplDBCSToUniTab_BIG5_F9 },          /* 0xF9 */
1428    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0xFA */ /* We convert this as double byte */
1429    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0xFB */ /* We convert this as double byte */
1430    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0xFC */ /* We convert this as double byte */
1431    { 0x00A9,    0,    0, NULL },                               /* 0xFD */
1432    { 0x2122,    0,    0, NULL },                               /* 0xFE */
1433    { 0x2026,    0,    0, NULL }                                /* 0xFF */
1434};
1435
1436/* ----------------------------------------------------------------------- */
1437
1438static ImplUniToDBCSHighTab const aAPPLECHINTRADDBCSHighTab[256] =
1439{
1440    { 0x00, 0xF7, aImplUniToDBCSTab_APPLECHINTRAD_00 },           /* 0x00 */
1441    {    1,    0, NULL },                                       /* 0x01 */
1442    { 0xC7, 0xD9, aImplUniToDBCSTab_BIG5_02 },                  /* 0x02 */
1443    { 0x91, 0xC9, aImplUniToDBCSTab_BIG5_03 },                  /* 0x03 */
1444    { 0x01, 0x51, aImplUniToDBCSTab_BIG5_04 },                  /* 0x04 */
1445    {    1,    0, NULL },                                       /* 0x05 */
1446    {    1,    0, NULL },                                       /* 0x06 */
1447    {    1,    0, NULL },                                       /* 0x07 */
1448    {    1,    0, NULL },                                       /* 0x08 */
1449    {    1,    0, NULL },                                       /* 0x09 */
1450    {    1,    0, NULL },                                       /* 0x0A */
1451    {    1,    0, NULL },                                       /* 0x0B */
1452    {    1,    0, NULL },                                       /* 0x0C */
1453    {    1,    0, NULL },                                       /* 0x0D */
1454    {    1,    0, NULL },                                       /* 0x0E */
1455    {    1,    0, NULL },                                       /* 0x0F */
1456    {    1,    0, NULL },                                       /* 0x10 */
1457    {    1,    0, NULL },                                       /* 0x11 */
1458    {    1,    0, NULL },                                       /* 0x12 */
1459    {    1,    0, NULL },                                       /* 0x13 */
1460    {    1,    0, NULL },                                       /* 0x14 */
1461    {    1,    0, NULL },                                       /* 0x15 */
1462    {    1,    0, NULL },                                       /* 0x16 */
1463    {    1,    0, NULL },                                       /* 0x17 */
1464    {    1,    0, NULL },                                       /* 0x18 */
1465    {    1,    0, NULL },                                       /* 0x19 */
1466    {    1,    0, NULL },                                       /* 0x1A */
1467    {    1,    0, NULL },                                       /* 0x1B */
1468    {    1,    0, NULL },                                       /* 0x1C */
1469    {    1,    0, NULL },                                       /* 0x1D */
1470    {    1,    0, NULL },                                       /* 0x1E */
1471    {    1,    0, NULL },                                       /* 0x1F */
1472    { 0x13, 0xAC, aImplUniToDBCSTab_BIG5_20 },                  /* 0x20 */
1473    { 0x03, 0x99, aImplUniToDBCSTab_APPLECHINTRAD_21 },         /* 0x21 */
1474    { 0x15, 0xEF, aImplUniToDBCSTab_BIG5_22 },                  /* 0x22 */
1475    {    1,    0, NULL },                                       /* 0x23 */
1476    { 0x60, 0x7D, aImplUniToDBCSTab_BIG5_24 },                  /* 0x24 */
1477    { 0x00, 0xE5, aImplUniToDBCSTab_BIG5_25 },                  /* 0x25 */
1478    { 0x05, 0x42, aImplUniToDBCSTab_BIG5_26 },                  /* 0x25 */
1479    {    1,    0, NULL },                                       /* 0x27 */
1480    {    1,    0, NULL },                                       /* 0x28 */
1481    {    1,    0, NULL },                                       /* 0x29 */
1482    {    1,    0, NULL },                                       /* 0x2A */
1483    {    1,    0, NULL },                                       /* 0x2B */
1484    {    1,    0, NULL },                                       /* 0x2C */
1485    {    1,    0, NULL },                                       /* 0x2D */
1486    {    1,    0, NULL },                                       /* 0x2E */
1487    {    1,    0, NULL },                                       /* 0x2F */
1488    { 0x00, 0xFE, aImplUniToDBCSTab_BIG5_30 },                  /* 0x30 */
1489    { 0x05, 0x29, aImplUniToDBCSTab_BIG5_31 },                  /* 0x31 */
1490    { 0xA3, 0xA3, aImplUniToDBCSTab_BIG5_32 },                  /* 0x32 */
1491    { 0x8E, 0xD5, aImplUniToDBCSTab_BIG5_33 },                  /* 0x33 */
1492    {    1,    0, NULL },                                       /* 0x34 */
1493    {    1,    0, NULL },                                       /* 0x35 */
1494    {    1,    0, NULL },                                       /* 0x36 */
1495    {    1,    0, NULL },                                       /* 0x37 */
1496    {    1,    0, NULL },                                       /* 0x38 */
1497    {    1,    0, NULL },                                       /* 0x39 */
1498    {    1,    0, NULL },                                       /* 0x3A */
1499    {    1,    0, NULL },                                       /* 0x3B */
1500    {    1,    0, NULL },                                       /* 0x3C */
1501    {    1,    0, NULL },                                       /* 0x3D */
1502    {    1,    0, NULL },                                       /* 0x3E */
1503    {    1,    0, NULL },                                       /* 0x3F */
1504    {    1,    0, NULL },                                       /* 0x40 */
1505    {    1,    0, NULL },                                       /* 0x41 */
1506    {    1,    0, NULL },                                       /* 0x42 */
1507    {    1,    0, NULL },                                       /* 0x43 */
1508    {    1,    0, NULL },                                       /* 0x44 */
1509    {    1,    0, NULL },                                       /* 0x45 */
1510    {    1,    0, NULL },                                       /* 0x46 */
1511    {    1,    0, NULL },                                       /* 0x47 */
1512    {    1,    0, NULL },                                       /* 0x48 */
1513    {    1,    0, NULL },                                       /* 0x49 */
1514    {    1,    0, NULL },                                       /* 0x4A */
1515    {    1,    0, NULL },                                       /* 0x4B */
1516    {    1,    0, NULL },                                       /* 0x4C */
1517    {    1,    0, NULL },                                       /* 0x4D */
1518    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_4E },                  /* 0x4E */
1519    { 0x00, 0xFE, aImplUniToDBCSTab_BIG5_4F },                  /* 0x4F */
1520    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_50 },                  /* 0x50 */
1521    { 0x00, 0xFD, aImplUniToDBCSTab_BIG5_51 },                  /* 0x51 */
1522    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_52 },                  /* 0x52 */
1523    { 0x05, 0xFC, aImplUniToDBCSTab_BIG5_53 },                  /* 0x53 */
1524    { 0x01, 0xFF, aImplUniToDBCSTab_BIG5_54 },                  /* 0x54 */
1525    { 0x01, 0xFF, aImplUniToDBCSTab_BIG5_55 },                  /* 0x55 */
1526    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_56 },                  /* 0x56 */
1527    { 0x01, 0xFD, aImplUniToDBCSTab_BIG5_57 },                  /* 0x57 */
1528    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_58 },                  /* 0x58 */
1529    { 0x03, 0xFF, aImplUniToDBCSTab_BIG5_59 },                  /* 0x59 */
1530    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_5A },                  /* 0x5A */
1531    { 0x01, 0xFA, aImplUniToDBCSTab_BIG5_5B },                  /* 0x5B */
1532    { 0x01, 0xFF, aImplUniToDBCSTab_BIG5_5C },                  /* 0x5C */
1533    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_5D },                  /* 0x5D */
1534    { 0x02, 0xFF, aImplUniToDBCSTab_BIG5_5E },                  /* 0x5E */
1535    { 0x01, 0xFF, aImplUniToDBCSTab_BIG5_5F },                  /* 0x5F */
1536    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_60 },                  /* 0x60 */
1537    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_61 },                  /* 0x61 */
1538    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_62 },                  /* 0x62 */
1539    { 0x00, 0xF9, aImplUniToDBCSTab_BIG5_63 },                  /* 0x63 */
1540    { 0x06, 0xFF, aImplUniToDBCSTab_BIG5_64 },                  /* 0x64 */
1541    { 0x00, 0xFD, aImplUniToDBCSTab_BIG5_65 },                  /* 0x65 */
1542    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_66 },                  /* 0x66 */
1543    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_67 },                  /* 0x67 */
1544    { 0x12, 0xFD, aImplUniToDBCSTab_BIG5_68 },                  /* 0x68 */
1545    { 0x04, 0xFF, aImplUniToDBCSTab_BIG5_69 },                  /* 0x69 */
1546    { 0x00, 0xFC, aImplUniToDBCSTab_BIG5_6A },                  /* 0x6A */
1547    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_6B },                  /* 0x6B */
1548    { 0x00, 0xF9, aImplUniToDBCSTab_BIG5_6C },                  /* 0x6C */
1549    { 0x00, 0xFD, aImplUniToDBCSTab_BIG5_6D },                  /* 0x6D */
1550    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_6E },                  /* 0x6E */
1551    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_6F },                  /* 0x6F */
1552    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_70 },                  /* 0x70 */
1553    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_71 },                  /* 0x71 */
1554    { 0x01, 0xFF, aImplUniToDBCSTab_BIG5_72 },                  /* 0x72 */
1555    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_73 },                  /* 0x73 */
1556    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_74 },                  /* 0x74 */
1557    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_75 },                  /* 0x75 */
1558    { 0x00, 0xFE, aImplUniToDBCSTab_BIG5_76 },                  /* 0x76 */
1559    { 0x01, 0xFD, aImplUniToDBCSTab_BIG5_77 },                  /* 0x77 */
1560    { 0x02, 0xFF, aImplUniToDBCSTab_BIG5_78 },                  /* 0x78 */
1561    { 0x01, 0xFB, aImplUniToDBCSTab_BIG5_79 },                  /* 0x79 */
1562    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_7A },                  /* 0x7A */
1563    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_7B },                  /* 0x7B */
1564    { 0x00, 0xFE, aImplUniToDBCSTab_BIG5_7C },                  /* 0x7C */
1565    { 0x00, 0xFB, aImplUniToDBCSTab_BIG5_7D },                  /* 0x7D */
1566    { 0x03, 0x9C, aImplUniToDBCSTab_BIG5_7E },                  /* 0x7E */
1567    { 0x36, 0xFF, aImplUniToDBCSTab_BIG5_7F },                  /* 0x7F */
1568    { 0x00, 0xFE, aImplUniToDBCSTab_BIG5_80 },                  /* 0x80 */
1569    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_81 },                  /* 0x81 */
1570    { 0x00, 0xFE, aImplUniToDBCSTab_BIG5_82 },                  /* 0x82 */
1571    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_83 },                  /* 0x83 */
1572    { 0x01, 0xFF, aImplUniToDBCSTab_BIG5_84 },                  /* 0x84 */
1573    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_85 },                  /* 0x85 */
1574    { 0x00, 0xFE, aImplUniToDBCSTab_BIG5_86 },                  /* 0x86 */
1575    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_87 },                  /* 0x87 */
1576    { 0x00, 0xFE, aImplUniToDBCSTab_BIG5_88 },                  /* 0x88 */
1577    { 0x01, 0xFF, aImplUniToDBCSTab_BIG5_89 },                  /* 0x89 */
1578    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_8A },                  /* 0x8A */
1579    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_8B },                  /* 0x8B */
1580    { 0x37, 0xFE, aImplUniToDBCSTab_BIG5_8C },                  /* 0x8C */
1581    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_8D },                  /* 0x8D */
1582    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_8E },                  /* 0x8E */
1583    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_8F },                  /* 0x8F */
1584    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_90 },                  /* 0x90 */
1585    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_91 },                  /* 0x91 */
1586    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_92 },                  /* 0x92 */
1587    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_93 },                  /* 0x93 */
1588    { 0x00, 0x83, aImplUniToDBCSTab_BIG5_94 },                  /* 0x94 */
1589    { 0x77, 0xE5, aImplUniToDBCSTab_BIG5_95 },                  /* 0x95 */
1590    { 0x1C, 0xFF, aImplUniToDBCSTab_BIG5_96 },                  /* 0x96 */
1591    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_97 },                  /* 0x97 */
1592    { 0x00, 0xFE, aImplUniToDBCSTab_BIG5_98 },                  /* 0x98 */
1593    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_99 },                  /* 0x99 */
1594    { 0x01, 0xFE, aImplUniToDBCSTab_BIG5_9A },                  /* 0x9A */
1595    { 0x01, 0xFD, aImplUniToDBCSTab_BIG5_9B },                  /* 0x9B */
1596    { 0x05, 0xFF, aImplUniToDBCSTab_BIG5_9C },                  /* 0x9C */
1597    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_9D },                  /* 0x9D */
1598    { 0x00, 0xFF, aImplUniToDBCSTab_BIG5_9E },                  /* 0x9E */
1599    { 0x00, 0xA4, aImplUniToDBCSTab_BIG5_9F },                  /* 0x9F */
1600    {    1,    0, NULL },                                       /* 0xA0 */
1601    {    1,    0, NULL },                                       /* 0xA1 */
1602    {    1,    0, NULL },                                       /* 0xA2 */
1603    {    1,    0, NULL },                                       /* 0xA3 */
1604    {    1,    0, NULL },                                       /* 0xA4 */
1605    {    1,    0, NULL },                                       /* 0xA5 */
1606    {    1,    0, NULL },                                       /* 0xA6 */
1607    {    1,    0, NULL },                                       /* 0xA7 */
1608    {    1,    0, NULL },                                       /* 0xA8 */
1609    {    1,    0, NULL },                                       /* 0xA9 */
1610    {    1,    0, NULL },                                       /* 0xAA */
1611    {    1,    0, NULL },                                       /* 0xAB */
1612    {    1,    0, NULL },                                       /* 0xAC */
1613    {    1,    0, NULL },                                       /* 0xAD */
1614    {    1,    0, NULL },                                       /* 0xAE */
1615    {    1,    0, NULL },                                       /* 0xAF */
1616    {    1,    0, NULL },                                       /* 0xB0 */
1617    {    1,    0, NULL },                                       /* 0xB1 */
1618    {    1,    0, NULL },                                       /* 0xB2 */
1619    {    1,    0, NULL },                                       /* 0xB3 */
1620    {    1,    0, NULL },                                       /* 0xB4 */
1621    {    1,    0, NULL },                                       /* 0xB5 */
1622    {    1,    0, NULL },                                       /* 0xB6 */
1623    {    1,    0, NULL },                                       /* 0xB7 */
1624    {    1,    0, NULL },                                       /* 0xB8 */
1625    {    1,    0, NULL },                                       /* 0xB9 */
1626    {    1,    0, NULL },                                       /* 0xBA */
1627    {    1,    0, NULL },                                       /* 0xBB */
1628    {    1,    0, NULL },                                       /* 0xBC */
1629    {    1,    0, NULL },                                       /* 0xBD */
1630    {    1,    0, NULL },                                       /* 0xBE */
1631    {    1,    0, NULL },                                       /* 0xBF */
1632    {    1,    0, NULL },                                       /* 0xC0 */
1633    {    1,    0, NULL },                                       /* 0xC1 */
1634    {    1,    0, NULL },                                       /* 0xC2 */
1635    {    1,    0, NULL },                                       /* 0xC3 */
1636    {    1,    0, NULL },                                       /* 0xC4 */
1637    {    1,    0, NULL },                                       /* 0xC5 */
1638    {    1,    0, NULL },                                       /* 0xC6 */
1639    {    1,    0, NULL },                                       /* 0xC7 */
1640    {    1,    0, NULL },                                       /* 0xC8 */
1641    {    1,    0, NULL },                                       /* 0xC9 */
1642    {    1,    0, NULL },                                       /* 0xCA */
1643    {    1,    0, NULL },                                       /* 0xCB */
1644    {    1,    0, NULL },                                       /* 0xCC */
1645    {    1,    0, NULL },                                       /* 0xCD */
1646    {    1,    0, NULL },                                       /* 0xCE */
1647    {    1,    0, NULL },                                       /* 0xCF */
1648    {    1,    0, NULL },                                       /* 0xD0 */
1649    {    1,    0, NULL },                                       /* 0xD1 */
1650    {    1,    0, NULL },                                       /* 0xD2 */
1651    {    1,    0, NULL },                                       /* 0xD3 */
1652    {    1,    0, NULL },                                       /* 0xD4 */
1653    {    1,    0, NULL },                                       /* 0xD5 */
1654    {    1,    0, NULL },                                       /* 0xD6 */
1655    {    1,    0, NULL },                                       /* 0xD7 */
1656    {    1,    0, NULL },                                       /* 0xD8 */
1657    {    1,    0, NULL },                                       /* 0xD9 */
1658    {    1,    0, NULL },                                       /* 0xDA */
1659    {    1,    0, NULL },                                       /* 0xDB */
1660    {    1,    0, NULL },                                       /* 0xDC */
1661    {    1,    0, NULL },                                       /* 0xDD */
1662    {    1,    0, NULL },                                       /* 0xDE */
1663    {    1,    0, NULL },                                       /* 0xDF */
1664    {    1,    0, NULL },                                       /* 0xE0 */
1665    {    1,    0, NULL },                                       /* 0xE1 */
1666    {    1,    0, NULL },                                       /* 0xE2 */
1667    {    1,    0, NULL },                                       /* 0xE3 */
1668    {    1,    0, NULL },                                       /* 0xE4 */
1669    {    1,    0, NULL },                                       /* 0xE5 */
1670    {    1,    0, NULL },                                       /* 0xE6 */
1671    {    1,    0, NULL },                                       /* 0xE7 */
1672    {    1,    0, NULL },                                       /* 0xE8 */
1673    {    1,    0, NULL },                                       /* 0xE9 */
1674    {    1,    0, NULL },                                       /* 0xEA */
1675    {    1,    0, NULL },                                       /* 0xEB */
1676    {    1,    0, NULL },                                       /* 0xEC */
1677    {    1,    0, NULL },                                       /* 0xED */
1678    {    1,    0, NULL },                                       /* 0xEE */
1679    {    1,    0, NULL },                                       /* 0xEF */
1680    {    1,    0, NULL },                                       /* 0xF0 */
1681    {    1,    0, NULL },                                       /* 0xF1 */
1682    {    1,    0, NULL },                                       /* 0xF2 */
1683    {    1,    0, NULL },                                       /* 0xF3 */
1684    {    1,    0, NULL },                                       /* 0xF4 */
1685    {    1,    0, NULL },                                       /* 0xF5 */
1686    {    1,    0, NULL },                                       /* 0xF6 */
1687    {    1,    0, NULL },                                       /* 0xF7 */
1688    { 0x80, 0x81, aImplUniToDBCSTab_APPLECHINTRAD_F8 },         /* 0xF8 */
1689    {    1,    0, NULL },                                       /* 0xF9 */
1690    { 0x0C, 0x0D, aImplUniToDBCSTab_BIG5_FA },                  /* 0xFA */
1691    {    1,    0, NULL },                                       /* 0xFB */
1692    {    1,    0, NULL },                                       /* 0xFC */
1693    {    1,    0, NULL },                                       /* 0xFD */
1694    { 0x30, 0x6B, aImplUniToDBCSTab_BIG5_FE },                  /* 0xFE */
1695    { 0x01, 0xFD, aImplUniToDBCSTab_BIG5_FF }                   /* 0xFF */
1696};
1697
1698/* ----------------------------------------------------------------------- */
1699
1700static ImplDBCSConvertData const aImplAPPLECHINTRADDBCSCvtData =
1701{
1702    aAPPLECHINTRADUniLeadTab,
1703    aAPPLECHINTRADDBCSHighTab,
1704    0x00, 0xFF,
1705    0x40, 0xFE,
1706    NULL,
1707    0
1708};
1709
1710/* ----------------------------------------------------------------------- */
1711
1712static ImplTextEncodingData const aImplAPPLECHINTRADTextEncodingData
1713    = { { &aImplAPPLECHINTRADDBCSCvtData,
1714          ImplDBCSToUnicode,
1715          ImplUnicodeToDBCS,
1716          NULL,
1717          NULL,
1718          NULL,
1719          NULL,
1720          NULL,
1721          NULL },
1722        1,
1723        2,
1724        2,
1725        136,
1726        "euc-tw",
1727        "big5",
1728        RTL_TEXTENCODING_INFO_MULTIBYTE };
1729    /* MAC, SCRIPT_CHINESE_TRADITIONAL, pc code page 950, mac encoding 2 */
1730