xref: /trunk/main/sal/textenc/tcvtkr6.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/* korean charsets: */
28/* CP949, JOHAB */
29
30/* ======================================================================= */
31
32static ImplDBCSToUniLeadTab const aKSC5601UniLeadTab[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, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_81 },       /* 0x81 */
164    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_82 },       /* 0x82 */
165    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_83 },       /* 0x83 */
166    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_84 },       /* 0x84 */
167    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_85 },       /* 0x85 */
168    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_86 },       /* 0x86 */
169    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_87 },       /* 0x87 */
170    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_88 },       /* 0x88 */
171    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_89 },       /* 0x89 */
172    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_8A },       /* 0x8A */
173    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_8B },       /* 0x8B */
174    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_8C },       /* 0x8C */
175    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_8D },       /* 0x8D */
176    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_8E },       /* 0x8E */
177    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_8F },       /* 0x8F */
178    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_90 },       /* 0x90 */
179    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_91 },       /* 0x91 */
180    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_92 },       /* 0x92 */
181    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_93 },       /* 0x93 */
182    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_94 },       /* 0x94 */
183    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_95 },       /* 0x95 */
184    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_96 },       /* 0x96 */
185    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_97 },       /* 0x97 */
186    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_98 },       /* 0x98 */
187    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_99 },       /* 0x99 */
188    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_9A },       /* 0x9A */
189    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_9B },       /* 0x9B */
190    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_9C },       /* 0x9C */
191    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_9D },       /* 0x9D */
192    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_9E },       /* 0x9E */
193    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_9F },       /* 0x9F */
194    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_A0 },       /* 0xA0 */
195    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_A1 },       /* 0xA1 */
196    {      0, 0x41, 0xE7, aImplDBCSToUniTab_KSC5601_A2 },       /* 0xA2 */
197    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_A3 },       /* 0xA3 */
198    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_A4 },       /* 0xA4 */
199    {      0, 0x41, 0xF8, aImplDBCSToUniTab_KSC5601_A5 },       /* 0xA5 */
200    {      0, 0x41, 0xE4, aImplDBCSToUniTab_KSC5601_A6 },       /* 0xA6 */
201    {      0, 0x41, 0xEF, aImplDBCSToUniTab_KSC5601_A7 },       /* 0xA7 */
202    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_A8 },       /* 0xA8 */
203    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_A9 },       /* 0xA9 */
204    {      0, 0x41, 0xF3, aImplDBCSToUniTab_KSC5601_AA },       /* 0xAA */
205    {      0, 0x41, 0xF6, aImplDBCSToUniTab_KSC5601_AB },       /* 0xAB */
206    {      0, 0x41, 0xF1, aImplDBCSToUniTab_KSC5601_AC },       /* 0xAC */
207    {      0, 0x41, 0xA0, aImplDBCSToUniTab_KSC5601_AD },       /* 0xAD */
208    {      0, 0x41, 0xA0, aImplDBCSToUniTab_KSC5601_AE },       /* 0xAE */
209    {      0, 0x41, 0xA0, aImplDBCSToUniTab_KSC5601_AF },       /* 0xAF */
210    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_B0 },       /* 0xB0 */
211    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_B1 },       /* 0xB1 */
212    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_B2 },       /* 0xB2 */
213    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_B3 },       /* 0xB3 */
214    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_B4 },       /* 0xB4 */
215    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_B5 },       /* 0xB5 */
216    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_B6 },       /* 0xB6 */
217    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_B7 },       /* 0xB7 */
218    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_B8 },       /* 0xB8 */
219    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_B9 },       /* 0xB9 */
220    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_BA },       /* 0xBA */
221    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_BB },       /* 0xBB */
222    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_BC },       /* 0xBC */
223    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_BD },       /* 0xBD */
224    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_BE },       /* 0xBE */
225    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_BF },       /* 0xBF */
226    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_C0 },       /* 0xC0 */
227    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_C1 },       /* 0xC1 */
228    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_C2 },       /* 0xC2 */
229    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_C3 },       /* 0xC3 */
230    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_C4 },       /* 0xC4 */
231    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_C5 },       /* 0xC5 */
232    {      0, 0x41, 0xFE, aImplDBCSToUniTab_KSC5601_C6 },       /* 0xC6 */
233    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_C7 },       /* 0xC7 */
234    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_C8 },       /* 0xC8 */
235    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0xC9 */
236    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_CA },       /* 0xCA */
237    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_CB },       /* 0xCB */
238    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_CC },       /* 0xCC */
239    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_CD },       /* 0xCD */
240    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_CE },       /* 0xCE */
241    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_CF },       /* 0xCF */
242    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_D0 },       /* 0xD0 */
243    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_D1 },       /* 0xD1 */
244    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_D2 },       /* 0xD2 */
245    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_D3 },       /* 0xD3 */
246    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_D4 },       /* 0xD4 */
247    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_D5 },       /* 0xD5 */
248    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_D6 },       /* 0xD6 */
249    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_D7 },       /* 0xD7 */
250    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_D8 },       /* 0xD8 */
251    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_D9 },       /* 0xD9 */
252    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_DA },       /* 0xDA */
253    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_DB },       /* 0xDB */
254    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_DC },       /* 0xDC */
255    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_DD },       /* 0xDD */
256    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_DE },       /* 0xDE */
257    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_DF },       /* 0xDF */
258    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_E0 },       /* 0xE0 */
259    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_E1 },       /* 0xE1 */
260    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_E2 },       /* 0xE2 */
261    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_E3 },       /* 0xE3 */
262    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_E4 },       /* 0xE4 */
263    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_E5 },       /* 0xE5 */
264    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_E6 },       /* 0xE6 */
265    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_E7 },       /* 0xE7 */
266    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_E8 },       /* 0xE8 */
267    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_E9 },       /* 0xE9 */
268    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_EA },       /* 0xEA */
269    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_EB },       /* 0xEB */
270    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_EC },       /* 0xEC */
271    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_ED },       /* 0xED */
272    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_EE },       /* 0xEE */
273    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_EF },       /* 0xEF */
274    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_F0 },       /* 0xF0 */
275    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_F1 },       /* 0xF1 */
276    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_F2 },       /* 0xF2 */
277    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_F3 },       /* 0xF3 */
278    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_F4 },       /* 0xF4 */
279    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_F5 },       /* 0xF5 */
280    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_F6 },       /* 0xF6 */
281    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_F7 },       /* 0xF7 */
282    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_F8 },       /* 0xF8 */
283    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_F9 },       /* 0xF9 */
284    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_FA },       /* 0xFA */
285    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_FB },       /* 0xFB */
286    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_FC },       /* 0xFC */
287    {      0, 0xA1, 0xFE, aImplDBCSToUniTab_KSC5601_FD },       /* 0xFD */
288    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0xFE */
289    {      0,    1,    0, NULL }                                /* 0xFF */
290};
291
292/* ----------------------------------------------------------------------- */
293
294static ImplUniToDBCSHighTab const aKSC5601DBCSHighTab[256] =
295{
296    { 0x00, 0xFE, aImplUniToDBCSTab_KSC5601_00 },               /* 0x00 */
297    { 0x11, 0x67, aImplUniToDBCSTab_KSC5601_01 },               /* 0x01 */
298    { 0xC7, 0xDD, aImplUniToDBCSTab_KSC5601_02 },               /* 0x02 */
299    { 0x91, 0xC9, aImplUniToDBCSTab_KSC5601_03 },               /* 0x03 */
300    { 0x01, 0x51, aImplUniToDBCSTab_KSC5601_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    { 0x15, 0xAC, aImplUniToDBCSTab_KSC5601_20 },               /* 0x20 */
329    { 0x03, 0xD4, aImplUniToDBCSTab_KSC5601_21 },               /* 0x21 */
330    { 0x00, 0xA5, aImplUniToDBCSTab_KSC5601_22 },               /* 0x22 */
331    { 0x12, 0x12, aImplUniToDBCSTab_KSC5601_23 },               /* 0x23 */
332    { 0x60, 0xE9, aImplUniToDBCSTab_KSC5601_24 },               /* 0x24 */
333    { 0x00, 0xD1, aImplUniToDBCSTab_KSC5601_25 },               /* 0x25 */
334    { 0x05, 0x6D, aImplUniToDBCSTab_KSC5601_26 },               /* 0x26 */
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, 0xF7, aImplUniToDBCSTab_KSC5601_30 },               /* 0x30 */
345    { 0x31, 0xFE, aImplUniToDBCSTab_KSC5601_31 },               /* 0x31 */
346    { 0x00, 0x7F, aImplUniToDBCSTab_KSC5601_32 },               /* 0x32 */
347    { 0x80, 0xDD, aImplUniToDBCSTab_KSC5601_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, 0xFB, aImplUniToDBCSTab_KSC5601_4E },               /* 0x4E */
375    { 0x01, 0xFA, aImplUniToDBCSTab_KSC5601_4F },               /* 0x4F */
376    { 0x02, 0xFF, aImplUniToDBCSTab_KSC5601_50 },               /* 0x50 */
377    { 0x00, 0xFD, aImplUniToDBCSTab_KSC5601_51 },               /* 0x51 */
378    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_52 },               /* 0x52 */
379    { 0x05, 0xF8, aImplUniToDBCSTab_KSC5601_53 },               /* 0x53 */
380    { 0x03, 0xFA, aImplUniToDBCSTab_KSC5601_54 },               /* 0x54 */
381    { 0x04, 0xFE, aImplUniToDBCSTab_KSC5601_55 },               /* 0x55 */
382    { 0x06, 0xFA, aImplUniToDBCSTab_KSC5601_56 },               /* 0x56 */
383    { 0x03, 0xFC, aImplUniToDBCSTab_KSC5601_57 },               /* 0x57 */
384    { 0x00, 0xFD, aImplUniToDBCSTab_KSC5601_58 },               /* 0x58 */
385    { 0x07, 0xFF, aImplUniToDBCSTab_KSC5601_59 },               /* 0x59 */
386    { 0x01, 0xE9, aImplUniToDBCSTab_KSC5601_5A },               /* 0x5A */
387    { 0x05, 0xFA, aImplUniToDBCSTab_KSC5601_5B },               /* 0x5B */
388    { 0x01, 0xFD, aImplUniToDBCSTab_KSC5601_5C },               /* 0x5C */
389    { 0x07, 0xFE, aImplUniToDBCSTab_KSC5601_5D },               /* 0x5D */
390    { 0x02, 0xFB, aImplUniToDBCSTab_KSC5601_5E },               /* 0x5E */
391    { 0x01, 0xFF, aImplUniToDBCSTab_KSC5601_5F },               /* 0x5F */
392    { 0x07, 0xFB, aImplUniToDBCSTab_KSC5601_60 },               /* 0x60 */
393    { 0x01, 0xFF, aImplUniToDBCSTab_KSC5601_61 },               /* 0x61 */
394    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_62 },               /* 0x62 */
395    { 0x01, 0xF7, aImplUniToDBCSTab_KSC5601_63 },               /* 0x63 */
396    { 0x0D, 0xFE, aImplUniToDBCSTab_KSC5601_64 },               /* 0x64 */
397    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_65 },               /* 0x65 */
398    { 0x06, 0xFF, aImplUniToDBCSTab_KSC5601_66 },               /* 0x66 */
399    { 0x00, 0xFE, aImplUniToDBCSTab_KSC5601_67 },               /* 0x67 */
400    { 0x12, 0xFA, aImplUniToDBCSTab_KSC5601_68 },               /* 0x68 */
401    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_69 },               /* 0x69 */
402    { 0x02, 0xFB, aImplUniToDBCSTab_KSC5601_6A },               /* 0x6A */
403    { 0x04, 0xEC, aImplUniToDBCSTab_KSC5601_6B },               /* 0x6B */
404    { 0x08, 0xF3, aImplUniToDBCSTab_KSC5601_6C },               /* 0x6C */
405    { 0x03, 0xFB, aImplUniToDBCSTab_KSC5601_6D },               /* 0x6D */
406    { 0x17, 0xFF, aImplUniToDBCSTab_KSC5601_6E },               /* 0x6E */
407    { 0x01, 0xFE, aImplUniToDBCSTab_KSC5601_6F },               /* 0x6F */
408    { 0x01, 0xFD, aImplUniToDBCSTab_KSC5601_70 },               /* 0x70 */
409    { 0x04, 0xFF, aImplUniToDBCSTab_KSC5601_71 },               /* 0x71 */
410    { 0x00, 0xFD, aImplUniToDBCSTab_KSC5601_72 },               /* 0x72 */
411    { 0x02, 0xFE, aImplUniToDBCSTab_KSC5601_73 },               /* 0x73 */
412    { 0x01, 0xF7, aImplUniToDBCSTab_KSC5601_74 },               /* 0x74 */
413    { 0x01, 0xFC, aImplUniToDBCSTab_KSC5601_75 },               /* 0x75 */
414    { 0x00, 0xFE, aImplUniToDBCSTab_KSC5601_76 },               /* 0x76 */
415    { 0x01, 0xFB, aImplUniToDBCSTab_KSC5601_77 },               /* 0x77 */
416    { 0x02, 0xFB, aImplUniToDBCSTab_KSC5601_78 },               /* 0x78 */
417    { 0x01, 0xFB, aImplUniToDBCSTab_KSC5601_79 },               /* 0x79 */
418    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_7A },               /* 0x7A */
419    { 0x0F, 0xE9, aImplUniToDBCSTab_KSC5601_7B },               /* 0x7B */
420    { 0x07, 0xFE, aImplUniToDBCSTab_KSC5601_7C },               /* 0x7C */
421    { 0x00, 0xFB, aImplUniToDBCSTab_KSC5601_7D },               /* 0x7D */
422    { 0x09, 0x9C, aImplUniToDBCSTab_KSC5601_7E },               /* 0x7E */
423    { 0x36, 0xFC, aImplUniToDBCSTab_KSC5601_7F },               /* 0x7F */
424    { 0x00, 0xFD, aImplUniToDBCSTab_KSC5601_80 },               /* 0x80 */
425    { 0x02, 0xFE, aImplUniToDBCSTab_KSC5601_81 },               /* 0x81 */
426    { 0x05, 0xFE, aImplUniToDBCSTab_KSC5601_82 },               /* 0x82 */
427    { 0x01, 0xFD, aImplUniToDBCSTab_KSC5601_83 },               /* 0x83 */
428    { 0x03, 0xFC, aImplUniToDBCSTab_KSC5601_84 },               /* 0x84 */
429    { 0x11, 0xFF, aImplUniToDBCSTab_KSC5601_85 },               /* 0x85 */
430    { 0x02, 0xFE, aImplUniToDBCSTab_KSC5601_86 },               /* 0x86 */
431    { 0x00, 0xFE, aImplUniToDBCSTab_KSC5601_87 },               /* 0x87 */
432    { 0x05, 0xFD, aImplUniToDBCSTab_KSC5601_88 },               /* 0x88 */
433    { 0x07, 0xF8, aImplUniToDBCSTab_KSC5601_89 },               /* 0x89 */
434    { 0x00, 0xFE, aImplUniToDBCSTab_KSC5601_8A },               /* 0x8A */
435    { 0x00, 0x9A, aImplUniToDBCSTab_KSC5601_8B },               /* 0x8B */
436    { 0x37, 0xFD, aImplUniToDBCSTab_KSC5601_8C },               /* 0x8C */
437    { 0x04, 0xFB, aImplUniToDBCSTab_KSC5601_8D },               /* 0x8D */
438    { 0x0A, 0xFE, aImplUniToDBCSTab_KSC5601_8E },               /* 0x8E */
439    { 0x03, 0xFD, aImplUniToDBCSTab_KSC5601_8F },               /* 0x8F */
440    { 0x00, 0xFD, aImplUniToDBCSTab_KSC5601_90 },               /* 0x90 */
441    { 0x02, 0xF5, aImplUniToDBCSTab_KSC5601_91 },               /* 0x91 */
442    { 0x0D, 0xFC, aImplUniToDBCSTab_KSC5601_92 },               /* 0x92 */
443    { 0x04, 0xF6, aImplUniToDBCSTab_KSC5601_93 },               /* 0x93 */
444    { 0x04, 0x7F, aImplUniToDBCSTab_KSC5601_94 },               /* 0x94 */
445    { 0x77, 0xE2, aImplUniToDBCSTab_KSC5601_95 },               /* 0x95 */
446    { 0x1C, 0xFB, aImplUniToDBCSTab_KSC5601_96 },               /* 0x96 */
447    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_97 },               /* 0x97 */
448    { 0x00, 0xFE, aImplUniToDBCSTab_KSC5601_98 },               /* 0x98 */
449    { 0x03, 0xFF, aImplUniToDBCSTab_KSC5601_99 },               /* 0x99 */
450    { 0x01, 0xEE, aImplUniToDBCSTab_KSC5601_9A },               /* 0x9A */
451    { 0x1A, 0xE8, aImplUniToDBCSTab_KSC5601_9B },               /* 0x9B */
452    { 0x0D, 0xF6, aImplUniToDBCSTab_KSC5601_9C },               /* 0x9C */
453    { 0x09, 0xFA, aImplUniToDBCSTab_KSC5601_9D },               /* 0x9D */
454    { 0x1A, 0xF4, aImplUniToDBCSTab_KSC5601_9E },               /* 0x9E */
455    { 0x07, 0x9C, aImplUniToDBCSTab_KSC5601_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    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_AC },               /* 0xAC */
469    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_AD },               /* 0xAD */
470    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_AE },               /* 0xAE */
471    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_AF },               /* 0xAF */
472    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_B0 },               /* 0xB0 */
473    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_B1 },               /* 0xB1 */
474    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_B2 },               /* 0xB2 */
475    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_B3 },               /* 0xB3 */
476    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_B4 },               /* 0xB4 */
477    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_B5 },               /* 0xB5 */
478    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_B6 },               /* 0xB6 */
479    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_B7 },               /* 0xB7 */
480    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_B8 },               /* 0xB8 */
481    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_B9 },               /* 0xB9 */
482    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_BA },               /* 0xBA */
483    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_BB },               /* 0xBB */
484    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_BC },               /* 0xBC */
485    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_BD },               /* 0xBD */
486    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_BE },               /* 0xBE */
487    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_BF },               /* 0xBF */
488    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_C0 },               /* 0xC0 */
489    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_C1 },               /* 0xC1 */
490    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_C2 },               /* 0xC2 */
491    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_C3 },               /* 0xC3 */
492    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_C4 },               /* 0xC4 */
493    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_C5 },               /* 0xC5 */
494    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_C6 },               /* 0xC6 */
495    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_C7 },               /* 0xC7 */
496    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_C8 },               /* 0xC8 */
497    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_C9 },               /* 0xC9 */
498    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_CA },               /* 0xCA */
499    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_CB },               /* 0xCB */
500    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_CC },               /* 0xCC */
501    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_CD },               /* 0xCD */
502    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_CE },               /* 0xCE */
503    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_CF },               /* 0xCF */
504    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_D0 },               /* 0xD0 */
505    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_D1 },               /* 0xD1 */
506    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_D2 },               /* 0xD2 */
507    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_D3 },               /* 0xD3 */
508    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_D4 },               /* 0xD4 */
509    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_D5 },               /* 0xD5 */
510    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_D6 },               /* 0xD6 */
511    { 0x00, 0xA3, aImplUniToDBCSTab_KSC5601_D7 },               /* 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    { 0x00, 0xFF, aImplUniToDBCSTab_KSC5601_F9 },               /* 0xF9 */
546    { 0x00, 0x0B, aImplUniToDBCSTab_KSC5601_FA },               /* 0xFA */
547    {    1,    0, NULL },                                       /* 0xFB */
548    {    1,    0, NULL },                                       /* 0xFC */
549    {    1,    0, NULL },                                       /* 0xFD */
550    {    1,    0, NULL },                                       /* 0xFE */
551    { 0x01, 0xE6, aImplUniToDBCSTab_KSC5601_FF }                /* 0xFF */
552};
553
554/* ----------------------------------------------------------------------- */
555
556/* C9A1-C9FE    -> E000-E05D */
557/* FEA1-FEFE    -> E05E-E0BB */
558
559#define DBCS_EUDC_MS949_COUNT    2
560static ImplDBCSEUDCData const aImplMS949DBCSEUDCTab[DBCS_EUDC_MS949_COUNT] =
561{
562    /* EUDC-Range */
563    /* Lead:    C9-C9 */
564    /* Trail:   A1-FE */
565    { 0xC9, 0xC9, 0xA1, 0xFE, 0, 0, 0, 0, 1, 0x5E, 0xE000, 0xE05D },
566    /* Lead:    FE-FE */
567    /* Trail:   A1-FE */
568    { 0xFE, 0xFE, 0xA1, 0xFE, 0, 0, 0, 0, 1, 0x5E, 0xE05E, 0xE0BB }
569};
570
571/* ----------------------------------------------------------------------- */
572
573static ImplDBCSConvertData const aImplKSC5601DBCSCvtData =
574{
575    aKSC5601UniLeadTab,
576    aKSC5601DBCSHighTab,
577    0xA1, 0xFE,
578    0xA1, 0xFE,
579    aImplMS949DBCSEUDCTab,
580    DBCS_EUDC_MS949_COUNT
581};
582
583/* ----------------------------------------------------------------------- */
584
585static ImplDBCSConvertData const aImplMS949DBCSCvtData =
586{
587    aKSC5601UniLeadTab,
588    aKSC5601DBCSHighTab,
589    0x00, 0xFF,
590    0x41, 0xFE,
591    aImplMS949DBCSEUDCTab,
592    DBCS_EUDC_MS949_COUNT
593};
594
595/* ======================================================================= */
596
597static ImplTextEncodingData const aImplEUCKRTextEncodingData
598    = { { &aImplKSC5601DBCSCvtData,
599          ImplDBCSToUnicode,
600          ImplUnicodeToDBCS,
601          NULL,
602          NULL,
603          NULL,
604          NULL,
605          NULL,
606          NULL },
607        1,
608        2,
609        2,
610        129,
611        "euc-kr",
612        "euc-kr",
613        RTL_TEXTENCODING_INFO_ASCII
614            | RTL_TEXTENCODING_INFO_MULTIBYTE
615            | RTL_TEXTENCODING_INFO_MIME };
616    /* SCRIPT_KOREAN, pc code page 934, mac encoding 3 */
617
618/* ======================================================================= */
619
620static ImplTextEncodingData const aImplMS949TextEncodingData
621    = { { &aImplMS949DBCSCvtData,
622          ImplDBCSToUnicode,
623          ImplUnicodeToDBCS,
624          NULL,
625          NULL,
626          NULL,
627          NULL,
628          NULL,
629          NULL },
630        1,
631        2,
632        2,
633        129,
634        "euc-kr",
635        "euc-kr",
636        RTL_TEXTENCODING_INFO_MULTIBYTE };
637    /* WIN/DOS/OS2, SCRIPT_KOREAN, pc code page 934, mac encoding 3 */
638
639/* ======================================================================= */
640
641/* Apple has some extension, which we don't support */
642
643static ImplTextEncodingData const aImplAPPLEKOREANTextEncodingData
644    = { { &aImplMS949DBCSCvtData,
645          ImplDBCSToUnicode,
646          ImplUnicodeToDBCS,
647          NULL,
648          NULL,
649          NULL,
650          NULL,
651          NULL,
652          NULL },
653        1,
654        2,
655        2,
656        129,
657        "euc-kr",
658        "euc-kr",
659        RTL_TEXTENCODING_INFO_MULTIBYTE };
660    /* MAC, SCRIPT_KOREAN, pc code page 934, mac encoding 3 */
661
662/* ======================================================================= */
663
664static ImplDBCSToUniLeadTab const aJOHABUniLeadTab[256] =
665{
666    { 0x0000,    0,    0, NULL },                               /* 0x00 */
667    { 0x0001,    0,    0, NULL },                               /* 0x01 */
668    { 0x0002,    0,    0, NULL },                               /* 0x02 */
669    { 0x0003,    0,    0, NULL },                               /* 0x03 */
670    { 0x0004,    0,    0, NULL },                               /* 0x04 */
671    { 0x0005,    0,    0, NULL },                               /* 0x05 */
672    { 0x0006,    0,    0, NULL },                               /* 0x06 */
673    { 0x0007,    0,    0, NULL },                               /* 0x07 */
674    { 0x0008,    0,    0, NULL },                               /* 0x08 */
675    { 0x0009,    0,    0, NULL },                               /* 0x09 */
676    { 0x000A,    0,    0, NULL },                               /* 0x0A */
677    { 0x000B,    0,    0, NULL },                               /* 0x0B */
678    { 0x000C,    0,    0, NULL },                               /* 0x0C */
679    { 0x000D,    0,    0, NULL },                               /* 0x0D */
680    { 0x000E,    0,    0, NULL },                               /* 0x0E */
681    { 0x000F,    0,    0, NULL },                               /* 0x0F */
682    { 0x0010,    0,    0, NULL },                               /* 0x10 */
683    { 0x0011,    0,    0, NULL },                               /* 0x11 */
684    { 0x0012,    0,    0, NULL },                               /* 0x12 */
685    { 0x0013,    0,    0, NULL },                               /* 0x13 */
686    { 0x0014,    0,    0, NULL },                               /* 0x14 */
687    { 0x0015,    0,    0, NULL },                               /* 0x15 */
688    { 0x0016,    0,    0, NULL },                               /* 0x16 */
689    { 0x0017,    0,    0, NULL },                               /* 0x17 */
690    { 0x0018,    0,    0, NULL },                               /* 0x18 */
691    { 0x0019,    0,    0, NULL },                               /* 0x19 */
692    { 0x001A,    0,    0, NULL },                               /* 0x1A */
693    { 0x001B,    0,    0, NULL },                               /* 0x1B */
694    { 0x001C,    0,    0, NULL },                               /* 0x1C */
695    { 0x001D,    0,    0, NULL },                               /* 0x1D */
696    { 0x001E,    0,    0, NULL },                               /* 0x1E */
697    { 0x001F,    0,    0, NULL },                               /* 0x1F */
698    { 0x0020,    0,    0, NULL },                               /* 0x20 */
699    { 0x0021,    0,    0, NULL },                               /* 0x21 */
700    { 0x0022,    0,    0, NULL },                               /* 0x22 */
701    { 0x0023,    0,    0, NULL },                               /* 0x23 */
702    { 0x0024,    0,    0, NULL },                               /* 0x24 */
703    { 0x0025,    0,    0, NULL },                               /* 0x25 */
704    { 0x0026,    0,    0, NULL },                               /* 0x26 */
705    { 0x0027,    0,    0, NULL },                               /* 0x27 */
706    { 0x0028,    0,    0, NULL },                               /* 0x28 */
707    { 0x0029,    0,    0, NULL },                               /* 0x29 */
708    { 0x002A,    0,    0, NULL },                               /* 0x2A */
709    { 0x002B,    0,    0, NULL },                               /* 0x2B */
710    { 0x002C,    0,    0, NULL },                               /* 0x2C */
711    { 0x002D,    0,    0, NULL },                               /* 0x2D */
712    { 0x002E,    0,    0, NULL },                               /* 0x2E */
713    { 0x002F,    0,    0, NULL },                               /* 0x2F */
714    { 0x0030,    0,    0, NULL },                               /* 0x30 */
715    { 0x0031,    0,    0, NULL },                               /* 0x31 */
716    { 0x0032,    0,    0, NULL },                               /* 0x32 */
717    { 0x0033,    0,    0, NULL },                               /* 0x33 */
718    { 0x0034,    0,    0, NULL },                               /* 0x34 */
719    { 0x0035,    0,    0, NULL },                               /* 0x35 */
720    { 0x0036,    0,    0, NULL },                               /* 0x36 */
721    { 0x0037,    0,    0, NULL },                               /* 0x37 */
722    { 0x0038,    0,    0, NULL },                               /* 0x38 */
723    { 0x0039,    0,    0, NULL },                               /* 0x39 */
724    { 0x003A,    0,    0, NULL },                               /* 0x3A */
725    { 0x003B,    0,    0, NULL },                               /* 0x3B */
726    { 0x003C,    0,    0, NULL },                               /* 0x3C */
727    { 0x003D,    0,    0, NULL },                               /* 0x3D */
728    { 0x003E,    0,    0, NULL },                               /* 0x3E */
729    { 0x003F,    0,    0, NULL },                               /* 0x3F */
730    { 0x0040,    0,    0, NULL },                               /* 0x40 */
731    { 0x0041,    0,    0, NULL },                               /* 0x41 */
732    { 0x0042,    0,    0, NULL },                               /* 0x42 */
733    { 0x0043,    0,    0, NULL },                               /* 0x43 */
734    { 0x0044,    0,    0, NULL },                               /* 0x44 */
735    { 0x0045,    0,    0, NULL },                               /* 0x45 */
736    { 0x0046,    0,    0, NULL },                               /* 0x46 */
737    { 0x0047,    0,    0, NULL },                               /* 0x47 */
738    { 0x0048,    0,    0, NULL },                               /* 0x48 */
739    { 0x0049,    0,    0, NULL },                               /* 0x49 */
740    { 0x004A,    0,    0, NULL },                               /* 0x4A */
741    { 0x004B,    0,    0, NULL },                               /* 0x4B */
742    { 0x004C,    0,    0, NULL },                               /* 0x4C */
743    { 0x004D,    0,    0, NULL },                               /* 0x4D */
744    { 0x004E,    0,    0, NULL },                               /* 0x4E */
745    { 0x004F,    0,    0, NULL },                               /* 0x4F */
746    { 0x0050,    0,    0, NULL },                               /* 0x50 */
747    { 0x0051,    0,    0, NULL },                               /* 0x51 */
748    { 0x0052,    0,    0, NULL },                               /* 0x52 */
749    { 0x0053,    0,    0, NULL },                               /* 0x53 */
750    { 0x0054,    0,    0, NULL },                               /* 0x54 */
751    { 0x0055,    0,    0, NULL },                               /* 0x55 */
752    { 0x0056,    0,    0, NULL },                               /* 0x56 */
753    { 0x0057,    0,    0, NULL },                               /* 0x57 */
754    { 0x0058,    0,    0, NULL },                               /* 0x58 */
755    { 0x0059,    0,    0, NULL },                               /* 0x59 */
756    { 0x005A,    0,    0, NULL },                               /* 0x5A */
757    { 0x005B,    0,    0, NULL },                               /* 0x5B */
758    { 0x005C,    0,    0, NULL },                               /* 0x5C */
759    { 0x005D,    0,    0, NULL },                               /* 0x5D */
760    { 0x005E,    0,    0, NULL },                               /* 0x5E */
761    { 0x005F,    0,    0, NULL },                               /* 0x5F */
762    { 0x0060,    0,    0, NULL },                               /* 0x60 */
763    { 0x0061,    0,    0, NULL },                               /* 0x61 */
764    { 0x0062,    0,    0, NULL },                               /* 0x62 */
765    { 0x0063,    0,    0, NULL },                               /* 0x63 */
766    { 0x0064,    0,    0, NULL },                               /* 0x64 */
767    { 0x0065,    0,    0, NULL },                               /* 0x65 */
768    { 0x0066,    0,    0, NULL },                               /* 0x66 */
769    { 0x0067,    0,    0, NULL },                               /* 0x67 */
770    { 0x0068,    0,    0, NULL },                               /* 0x68 */
771    { 0x0069,    0,    0, NULL },                               /* 0x69 */
772    { 0x006A,    0,    0, NULL },                               /* 0x6A */
773    { 0x006B,    0,    0, NULL },                               /* 0x6B */
774    { 0x006C,    0,    0, NULL },                               /* 0x6C */
775    { 0x006D,    0,    0, NULL },                               /* 0x6D */
776    { 0x006E,    0,    0, NULL },                               /* 0x6E */
777    { 0x006F,    0,    0, NULL },                               /* 0x6F */
778    { 0x0070,    0,    0, NULL },                               /* 0x70 */
779    { 0x0071,    0,    0, NULL },                               /* 0x71 */
780    { 0x0072,    0,    0, NULL },                               /* 0x72 */
781    { 0x0073,    0,    0, NULL },                               /* 0x73 */
782    { 0x0074,    0,    0, NULL },                               /* 0x74 */
783    { 0x0075,    0,    0, NULL },                               /* 0x75 */
784    { 0x0076,    0,    0, NULL },                               /* 0x76 */
785    { 0x0077,    0,    0, NULL },                               /* 0x77 */
786    { 0x0078,    0,    0, NULL },                               /* 0x78 */
787    { 0x0079,    0,    0, NULL },                               /* 0x79 */
788    { 0x007A,    0,    0, NULL },                               /* 0x7A */
789    { 0x007B,    0,    0, NULL },                               /* 0x7B */
790    { 0x007C,    0,    0, NULL },                               /* 0x7C */
791    { 0x007D,    0,    0, NULL },                               /* 0x7D */
792    { 0x007E,    0,    0, NULL },                               /* 0x7E */
793    { 0x007F,    0,    0, NULL },                               /* 0x7F */
794    { 0x0080,    0,    0, NULL },                               /* 0x80 */
795    { 0x0081,    0,    0, NULL },                               /* 0x81 */
796    { 0x0082,    0,    0, NULL },                               /* 0x82 */
797    { 0x0083,    0,    0, NULL },                               /* 0x83 */
798    {      0, 0x44, 0xE1, aImplDBCSToUniTab_JOHAB_84 },         /* 0x84 */
799    {      0, 0x41, 0xE1, aImplDBCSToUniTab_JOHAB_85 },         /* 0x85 */
800    {      0, 0x41, 0xE1, aImplDBCSToUniTab_JOHAB_86 },         /* 0x86 */
801    {      0, 0x41, 0xA1, aImplDBCSToUniTab_JOHAB_87 },         /* 0x87 */
802    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_88 },         /* 0x88 */
803    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_89 },         /* 0x89 */
804    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_8A },         /* 0x8A */
805    {      0, 0x41, 0xBD, aImplDBCSToUniTab_JOHAB_8B },         /* 0x8B */
806    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_8C },         /* 0x8C */
807    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_8D },         /* 0x8D */
808    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_8E },         /* 0x8E */
809    {      0, 0x41, 0xBD, aImplDBCSToUniTab_JOHAB_8F },         /* 0x8F */
810    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_90 },         /* 0x90 */
811    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_91 },         /* 0x91 */
812    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_92 },         /* 0x92 */
813    {      0, 0x41, 0xBD, aImplDBCSToUniTab_JOHAB_93 },         /* 0x93 */
814    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_94 },         /* 0x94 */
815    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_95 },         /* 0x95 */
816    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_96 },         /* 0x96 */
817    {      0, 0x41, 0xBD, aImplDBCSToUniTab_JOHAB_97 },         /* 0x97 */
818    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_98 },         /* 0x98 */
819    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_99 },         /* 0x99 */
820    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_9A },         /* 0x9A */
821    {      0, 0x41, 0xBD, aImplDBCSToUniTab_JOHAB_9B },         /* 0x9B */
822    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_9C },         /* 0x9C */
823    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_9D },         /* 0x9D */
824    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_9E },         /* 0x9E */
825    {      0, 0x41, 0xBD, aImplDBCSToUniTab_JOHAB_9F },         /* 0x9F */
826    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_A0 },         /* 0xA0 */
827    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_A1 },         /* 0xA1 */
828    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_A2 },         /* 0xA2 */
829    {      0, 0x41, 0xBD, aImplDBCSToUniTab_JOHAB_A3 },         /* 0xA3 */
830    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_A4 },         /* 0xA4 */
831    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_A5 },         /* 0xA5 */
832    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_A6 },         /* 0xA6 */
833    {      0, 0x41, 0xBD, aImplDBCSToUniTab_JOHAB_A7 },         /* 0xA7 */
834    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_A8 },         /* 0xA8 */
835    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_A9 },         /* 0xA9 */
836    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_AA },         /* 0xAA */
837    {      0, 0x41, 0xBD, aImplDBCSToUniTab_JOHAB_AB },         /* 0xAB */
838    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_AC },         /* 0xAC */
839    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_AD },         /* 0xAD */
840    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_AE },         /* 0xAE */
841    {      0, 0x41, 0xBD, aImplDBCSToUniTab_JOHAB_AF },         /* 0xAF */
842    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_B0 },         /* 0xB0 */
843    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_B1 },         /* 0xB1 */
844    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_B2 },         /* 0xB2 */
845    {      0, 0x41, 0xBD, aImplDBCSToUniTab_JOHAB_B3 },         /* 0xB3 */
846    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_B4 },         /* 0xB4 */
847    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_B5 },         /* 0xB5 */
848    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_B6 },         /* 0xB6 */
849    {      0, 0x41, 0xBD, aImplDBCSToUniTab_JOHAB_B7 },         /* 0xB7 */
850    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_B8 },         /* 0xB8 */
851    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_B9 },         /* 0xB9 */
852    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_BA },         /* 0xBA */
853    {      0, 0x41, 0xBD, aImplDBCSToUniTab_JOHAB_BB },         /* 0xBB */
854    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_BC },         /* 0xBC */
855    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_BD },         /* 0xBD */
856    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_BE },         /* 0xBE */
857    {      0, 0x41, 0xBD, aImplDBCSToUniTab_JOHAB_BF },         /* 0xBF */
858    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_C0 },         /* 0xC0 */
859    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_C1 },         /* 0xC1 */
860    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_C2 },         /* 0xC2 */
861    {      0, 0x41, 0xBD, aImplDBCSToUniTab_JOHAB_C3 },         /* 0xC3 */
862    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_C4 },         /* 0xC4 */
863    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_C5 },         /* 0xC5 */
864    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_C6 },         /* 0xC6 */
865    {      0, 0x41, 0xBD, aImplDBCSToUniTab_JOHAB_C7 },         /* 0xC7 */
866    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_C8 },         /* 0xC8 */
867    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_C9 },         /* 0xC9 */
868    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_CA },         /* 0xCA */
869    {      0, 0x41, 0xBD, aImplDBCSToUniTab_JOHAB_CB },         /* 0xCB */
870    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_CC },         /* 0xCC */
871    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_CD },         /* 0xCD */
872    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_CE },         /* 0xCE */
873    {      0, 0x41, 0xBD, aImplDBCSToUniTab_JOHAB_CF },         /* 0xCF */
874    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_D0 },         /* 0xD0 */
875    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_D1 },         /* 0xD1 */
876    {      0, 0x41, 0xFD, aImplDBCSToUniTab_JOHAB_D2 },         /* 0xD2 */
877    {      0, 0x41, 0xBD, aImplDBCSToUniTab_JOHAB_D3 },         /* 0xD3 */
878    {      0,    1,    0, NULL },                               /* 0xD4 */
879    {      0,    1,    0, NULL },                               /* 0xD5 */
880    {      0,    1,    0, NULL },                               /* 0xD6 */
881    {      0,    1,    0, NULL },                               /* 0xD7 */
882    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0xD8 */ /* We convert this as double byte */
883    {      0, 0x31, 0xE5, aImplDBCSToUniTab_JOHAB_D9 },         /* 0xD9 */
884    {      0, 0x31, 0xFE, aImplDBCSToUniTab_JOHAB_DA },         /* 0xDA */
885    {      0, 0x31, 0xE4, aImplDBCSToUniTab_JOHAB_DB },         /* 0xDB */
886    {      0, 0x31, 0xFE, aImplDBCSToUniTab_JOHAB_DC },         /* 0xDC */
887    {      0, 0x31, 0xF3, aImplDBCSToUniTab_JOHAB_DD },         /* 0xDD */
888    {      0, 0x31, 0xF1, aImplDBCSToUniTab_JOHAB_DE },         /* 0xDE */
889    {      0,    1,    0, aImplDoubleByteIdentifierTab },       /* 0xDF */ /* We convert this as double byte */
890    {      0, 0x31, 0xFE, aImplDBCSToUniTab_JOHAB_E0 },         /* 0xE0 */
891    {      0, 0x31, 0xFE, aImplDBCSToUniTab_JOHAB_E1 },         /* 0xE1 */
892    {      0, 0x31, 0xFE, aImplDBCSToUniTab_JOHAB_E2 },         /* 0xE2 */
893    {      0, 0x31, 0xFE, aImplDBCSToUniTab_JOHAB_E3 },         /* 0xE3 */
894    {      0, 0x31, 0xFE, aImplDBCSToUniTab_JOHAB_E4 },         /* 0xE4 */
895    {      0, 0x31, 0xFE, aImplDBCSToUniTab_JOHAB_E5 },         /* 0xE5 */
896    {      0, 0x31, 0xFE, aImplDBCSToUniTab_JOHAB_E6 },         /* 0xE6 */
897    {      0, 0x31, 0xFE, aImplDBCSToUniTab_JOHAB_E7 },         /* 0xE7 */
898    {      0, 0x31, 0xFE, aImplDBCSToUniTab_JOHAB_E8 },         /* 0xE8 */
899    {      0, 0x31, 0xFE, aImplDBCSToUniTab_JOHAB_E9 },         /* 0xE9 */
900    {      0, 0x31, 0xFE, aImplDBCSToUniTab_JOHAB_EA },         /* 0xEA */
901    {      0, 0x31, 0xFE, aImplDBCSToUniTab_JOHAB_EB },         /* 0xEB */
902    {      0, 0x31, 0xFE, aImplDBCSToUniTab_JOHAB_EC },         /* 0xEC */
903    {      0, 0x31, 0xFE, aImplDBCSToUniTab_JOHAB_ED },         /* 0xED */
904    {      0, 0x31, 0xFE, aImplDBCSToUniTab_JOHAB_EE },         /* 0xEE */
905    {      0, 0x31, 0xFE, aImplDBCSToUniTab_JOHAB_EF },         /* 0xEF */
906    {      0, 0x31, 0xFE, aImplDBCSToUniTab_JOHAB_F0 },         /* 0xF0 */
907    {      0, 0x31, 0xFE, aImplDBCSToUniTab_JOHAB_F1 },         /* 0xF1 */
908    {      0, 0x31, 0xFE, aImplDBCSToUniTab_JOHAB_F2 },         /* 0xF2 */
909    {      0, 0x31, 0xFE, aImplDBCSToUniTab_JOHAB_F3 },         /* 0xF3 */
910    {      0, 0x31, 0xFE, aImplDBCSToUniTab_JOHAB_F4 },         /* 0xF4 */
911    {      0, 0x31, 0xFE, aImplDBCSToUniTab_JOHAB_F5 },         /* 0xF5 */
912    {      0, 0x31, 0xFE, aImplDBCSToUniTab_JOHAB_F6 },         /* 0xF6 */
913    {      0, 0x31, 0xFE, aImplDBCSToUniTab_JOHAB_F7 },         /* 0xF7 */
914    {      0, 0x31, 0xFE, aImplDBCSToUniTab_JOHAB_F8 },         /* 0xF8 */
915    {      0, 0x31, 0xFE, aImplDBCSToUniTab_JOHAB_F9 },         /* 0xF9 */
916    {      0,    1,    0, NULL },                               /* 0xFA */
917    {      0,    1,    0, NULL },                               /* 0xFB */
918    {      0,    1,    0, NULL },                               /* 0xFC */
919    {      0,    1,    0, NULL },                               /* 0xFD */
920    {      0,    1,    0, NULL },                               /* 0xFE */
921    {      0,    1,    0, NULL }                                /* 0xFF */
922};
923
924/* ----------------------------------------------------------------------- */
925
926static ImplUniToDBCSHighTab const aJOHABDBCSHighTab[256] =
927{
928    { 0x00, 0xFE, aImplUniToDBCSTab_JOHAB_00 },                 /* 0x00 */
929    { 0x11, 0x67, aImplUniToDBCSTab_JOHAB_01 },                 /* 0x01 */
930    { 0xC7, 0xDD, aImplUniToDBCSTab_JOHAB_02 },                 /* 0x02 */
931    { 0x91, 0xC9, aImplUniToDBCSTab_JOHAB_03 },                 /* 0x03 */
932    { 0x01, 0x51, aImplUniToDBCSTab_JOHAB_04 },                 /* 0x04 */
933    {    1,    0, NULL },                                       /* 0x05 */
934    {    1,    0, NULL },                                       /* 0x06 */
935    {    1,    0, NULL },                                       /* 0x07 */
936    {    1,    0, NULL },                                       /* 0x08 */
937    {    1,    0, NULL },                                       /* 0x09 */
938    {    1,    0, NULL },                                       /* 0x0A */
939    {    1,    0, NULL },                                       /* 0x0B */
940    {    1,    0, NULL },                                       /* 0x0C */
941    {    1,    0, NULL },                                       /* 0x0D */
942    {    1,    0, NULL },                                       /* 0x0E */
943    {    1,    0, NULL },                                       /* 0x0F */
944    {    1,    0, NULL },                                       /* 0x10 */
945    {    1,    0, NULL },                                       /* 0x11 */
946    {    1,    0, NULL },                                       /* 0x12 */
947    {    1,    0, NULL },                                       /* 0x13 */
948    {    1,    0, NULL },                                       /* 0x14 */
949    {    1,    0, NULL },                                       /* 0x15 */
950    {    1,    0, NULL },                                       /* 0x16 */
951    {    1,    0, NULL },                                       /* 0x17 */
952    {    1,    0, NULL },                                       /* 0x18 */
953    {    1,    0, NULL },                                       /* 0x19 */
954    {    1,    0, NULL },                                       /* 0x1A */
955    {    1,    0, NULL },                                       /* 0x1B */
956    {    1,    0, NULL },                                       /* 0x1C */
957    {    1,    0, NULL },                                       /* 0x1D */
958    {    1,    0, NULL },                                       /* 0x1E */
959    {    1,    0, NULL },                                       /* 0x1F */
960    { 0x15, 0xA9, aImplUniToDBCSTab_JOHAB_20 },                 /* 0x20 */
961    { 0x03, 0xD4, aImplUniToDBCSTab_JOHAB_21 },                 /* 0x21 */
962    { 0x00, 0xA5, aImplUniToDBCSTab_JOHAB_22 },                 /* 0x22 */
963    { 0x12, 0x12, aImplUniToDBCSTab_JOHAB_23 },                 /* 0x23 */
964    { 0x60, 0xE9, aImplUniToDBCSTab_JOHAB_24 },                 /* 0x24 */
965    { 0x00, 0xD1, aImplUniToDBCSTab_JOHAB_25 },                 /* 0x25 */
966    { 0x05, 0x6D, aImplUniToDBCSTab_JOHAB_26 },                 /* 0x26 */
967    {    1,    0, NULL },                                       /* 0x27 */
968    {    1,    0, NULL },                                       /* 0x28 */
969    {    1,    0, NULL },                                       /* 0x29 */
970    {    1,    0, NULL },                                       /* 0x2A */
971    {    1,    0, NULL },                                       /* 0x2B */
972    {    1,    0, NULL },                                       /* 0x2C */
973    {    1,    0, NULL },                                       /* 0x2D */
974    {    1,    0, NULL },                                       /* 0x2E */
975    {    1,    0, NULL },                                       /* 0x2F */
976    { 0x00, 0xF7, aImplUniToDBCSTab_JOHAB_30 },                 /* 0x30 */
977    { 0x31, 0x8E, aImplUniToDBCSTab_JOHAB_31 },                 /* 0x31 */
978    { 0x00, 0x7F, aImplUniToDBCSTab_JOHAB_32 },                 /* 0x32 */
979    { 0x80, 0xDD, aImplUniToDBCSTab_JOHAB_33 },                 /* 0x33 */
980    {    1,    0, NULL },                                       /* 0x34 */
981    {    1,    0, NULL },                                       /* 0x35 */
982    {    1,    0, NULL },                                       /* 0x36 */
983    {    1,    0, NULL },                                       /* 0x37 */
984    {    1,    0, NULL },                                       /* 0x38 */
985    {    1,    0, NULL },                                       /* 0x39 */
986    {    1,    0, NULL },                                       /* 0x3A */
987    {    1,    0, NULL },                                       /* 0x3B */
988    {    1,    0, NULL },                                       /* 0x3C */
989    {    1,    0, NULL },                                       /* 0x3D */
990    {    1,    0, NULL },                                       /* 0x3E */
991    {    1,    0, NULL },                                       /* 0x3F */
992    {    1,    0, NULL },                                       /* 0x40 */
993    {    1,    0, NULL },                                       /* 0x41 */
994    {    1,    0, NULL },                                       /* 0x42 */
995    {    1,    0, NULL },                                       /* 0x43 */
996    {    1,    0, NULL },                                       /* 0x44 */
997    {    1,    0, NULL },                                       /* 0x45 */
998    {    1,    0, NULL },                                       /* 0x46 */
999    {    1,    0, NULL },                                       /* 0x47 */
1000    {    1,    0, NULL },                                       /* 0x48 */
1001    {    1,    0, NULL },                                       /* 0x49 */
1002    {    1,    0, NULL },                                       /* 0x4A */
1003    {    1,    0, NULL },                                       /* 0x4B */
1004    {    1,    0, NULL },                                       /* 0x4C */
1005    {    1,    0, NULL },                                       /* 0x4D */
1006    { 0x00, 0xFB, aImplUniToDBCSTab_JOHAB_4E },                 /* 0x4E */
1007    { 0x01, 0xFA, aImplUniToDBCSTab_JOHAB_4F },                 /* 0x4F */
1008    { 0x02, 0xFF, aImplUniToDBCSTab_JOHAB_50 },                 /* 0x50 */
1009    { 0x00, 0xFD, aImplUniToDBCSTab_JOHAB_51 },                 /* 0x51 */
1010    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_52 },                 /* 0x52 */
1011    { 0x05, 0xF8, aImplUniToDBCSTab_JOHAB_53 },                 /* 0x53 */
1012    { 0x03, 0xFA, aImplUniToDBCSTab_JOHAB_54 },                 /* 0x54 */
1013    { 0x04, 0xFE, aImplUniToDBCSTab_JOHAB_55 },                 /* 0x55 */
1014    { 0x06, 0xFA, aImplUniToDBCSTab_JOHAB_56 },                 /* 0x56 */
1015    { 0x03, 0xFC, aImplUniToDBCSTab_JOHAB_57 },                 /* 0x57 */
1016    { 0x00, 0xFD, aImplUniToDBCSTab_JOHAB_58 },                 /* 0x58 */
1017    { 0x07, 0xFF, aImplUniToDBCSTab_JOHAB_59 },                 /* 0x59 */
1018    { 0x01, 0xE9, aImplUniToDBCSTab_JOHAB_5A },                 /* 0x5A */
1019    { 0x05, 0xFA, aImplUniToDBCSTab_JOHAB_5B },                 /* 0x5B */
1020    { 0x01, 0xFD, aImplUniToDBCSTab_JOHAB_5C },                 /* 0x5C */
1021    { 0x07, 0xFE, aImplUniToDBCSTab_JOHAB_5D },                 /* 0x5D */
1022    { 0x02, 0xFB, aImplUniToDBCSTab_JOHAB_5E },                 /* 0x5E */
1023    { 0x01, 0xFF, aImplUniToDBCSTab_JOHAB_5F },                 /* 0x5F */
1024    { 0x07, 0xFB, aImplUniToDBCSTab_JOHAB_60 },                 /* 0x60 */
1025    { 0x01, 0xFF, aImplUniToDBCSTab_JOHAB_61 },                 /* 0x61 */
1026    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_62 },                 /* 0x62 */
1027    { 0x01, 0xF7, aImplUniToDBCSTab_JOHAB_63 },                 /* 0x63 */
1028    { 0x0D, 0xFE, aImplUniToDBCSTab_JOHAB_64 },                 /* 0x64 */
1029    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_65 },                 /* 0x65 */
1030    { 0x06, 0xFF, aImplUniToDBCSTab_JOHAB_66 },                 /* 0x66 */
1031    { 0x00, 0xFE, aImplUniToDBCSTab_JOHAB_67 },                 /* 0x67 */
1032    { 0x12, 0xFA, aImplUniToDBCSTab_JOHAB_68 },                 /* 0x68 */
1033    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_69 },                 /* 0x69 */
1034    { 0x02, 0xFB, aImplUniToDBCSTab_JOHAB_6A },                 /* 0x6A */
1035    { 0x04, 0xEC, aImplUniToDBCSTab_JOHAB_6B },                 /* 0x6B */
1036    { 0x08, 0xF3, aImplUniToDBCSTab_JOHAB_6C },                 /* 0x6C */
1037    { 0x03, 0xFB, aImplUniToDBCSTab_JOHAB_6D },                 /* 0x6D */
1038    { 0x17, 0xFF, aImplUniToDBCSTab_JOHAB_6E },                 /* 0x6E */
1039    { 0x01, 0xFE, aImplUniToDBCSTab_JOHAB_6F },                 /* 0x6F */
1040    { 0x01, 0xFD, aImplUniToDBCSTab_JOHAB_70 },                 /* 0x70 */
1041    { 0x04, 0xFF, aImplUniToDBCSTab_JOHAB_71 },                 /* 0x71 */
1042    { 0x00, 0xFD, aImplUniToDBCSTab_JOHAB_72 },                 /* 0x72 */
1043    { 0x02, 0xFE, aImplUniToDBCSTab_JOHAB_73 },                 /* 0x73 */
1044    { 0x01, 0xF7, aImplUniToDBCSTab_JOHAB_74 },                 /* 0x74 */
1045    { 0x01, 0xFC, aImplUniToDBCSTab_JOHAB_75 },                 /* 0x75 */
1046    { 0x00, 0xFE, aImplUniToDBCSTab_JOHAB_76 },                 /* 0x76 */
1047    { 0x01, 0xFB, aImplUniToDBCSTab_JOHAB_77 },                 /* 0x77 */
1048    { 0x02, 0xFB, aImplUniToDBCSTab_JOHAB_78 },                 /* 0x78 */
1049    { 0x01, 0xFB, aImplUniToDBCSTab_JOHAB_79 },                 /* 0x79 */
1050    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_7A },                 /* 0x7A */
1051    { 0x0F, 0xE9, aImplUniToDBCSTab_JOHAB_7B },                 /* 0x7B */
1052    { 0x07, 0xFE, aImplUniToDBCSTab_JOHAB_7C },                 /* 0x7C */
1053    { 0x00, 0xFB, aImplUniToDBCSTab_JOHAB_7D },                 /* 0x7D */
1054    { 0x09, 0x9C, aImplUniToDBCSTab_JOHAB_7E },                 /* 0x7E */
1055    { 0x36, 0xFC, aImplUniToDBCSTab_JOHAB_7F },                 /* 0x7F */
1056    { 0x00, 0xFD, aImplUniToDBCSTab_JOHAB_80 },                 /* 0x80 */
1057    { 0x02, 0xFE, aImplUniToDBCSTab_JOHAB_81 },                 /* 0x81 */
1058    { 0x05, 0xFE, aImplUniToDBCSTab_JOHAB_82 },                 /* 0x82 */
1059    { 0x01, 0xFD, aImplUniToDBCSTab_JOHAB_83 },                 /* 0x83 */
1060    { 0x03, 0xFC, aImplUniToDBCSTab_JOHAB_84 },                 /* 0x84 */
1061    { 0x11, 0xFF, aImplUniToDBCSTab_JOHAB_85 },                 /* 0x85 */
1062    { 0x02, 0xFE, aImplUniToDBCSTab_JOHAB_86 },                 /* 0x86 */
1063    { 0x00, 0xFE, aImplUniToDBCSTab_JOHAB_87 },                 /* 0x87 */
1064    { 0x05, 0xFD, aImplUniToDBCSTab_JOHAB_88 },                 /* 0x88 */
1065    { 0x07, 0xF8, aImplUniToDBCSTab_JOHAB_89 },                 /* 0x89 */
1066    { 0x00, 0xFE, aImplUniToDBCSTab_JOHAB_8A },                 /* 0x8A */
1067    { 0x00, 0x9A, aImplUniToDBCSTab_JOHAB_8B },                 /* 0x8B */
1068    { 0x37, 0xFD, aImplUniToDBCSTab_JOHAB_8C },                 /* 0x8C */
1069    { 0x04, 0xFB, aImplUniToDBCSTab_JOHAB_8D },                 /* 0x8D */
1070    { 0x0A, 0xFE, aImplUniToDBCSTab_JOHAB_8E },                 /* 0x8E */
1071    { 0x03, 0xFD, aImplUniToDBCSTab_JOHAB_8F },                 /* 0x8F */
1072    { 0x00, 0xFD, aImplUniToDBCSTab_JOHAB_90 },                 /* 0x90 */
1073    { 0x02, 0xF5, aImplUniToDBCSTab_JOHAB_91 },                 /* 0x91 */
1074    { 0x0D, 0xFC, aImplUniToDBCSTab_JOHAB_92 },                 /* 0x92 */
1075    { 0x04, 0xF6, aImplUniToDBCSTab_JOHAB_93 },                 /* 0x93 */
1076    { 0x04, 0x7F, aImplUniToDBCSTab_JOHAB_94 },                 /* 0x94 */
1077    { 0x77, 0xE2, aImplUniToDBCSTab_JOHAB_95 },                 /* 0x95 */
1078    { 0x1C, 0xFB, aImplUniToDBCSTab_JOHAB_96 },                 /* 0x96 */
1079    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_97 },                 /* 0x97 */
1080    { 0x00, 0xFE, aImplUniToDBCSTab_JOHAB_98 },                 /* 0x98 */
1081    { 0x03, 0xFF, aImplUniToDBCSTab_JOHAB_99 },                 /* 0x99 */
1082    { 0x01, 0xEE, aImplUniToDBCSTab_JOHAB_9A },                 /* 0x9A */
1083    { 0x1A, 0xE8, aImplUniToDBCSTab_JOHAB_9B },                 /* 0x9B */
1084    { 0x0D, 0xF6, aImplUniToDBCSTab_JOHAB_9C },                 /* 0x9C */
1085    { 0x09, 0xFA, aImplUniToDBCSTab_JOHAB_9D },                 /* 0x9D */
1086    { 0x1A, 0xF4, aImplUniToDBCSTab_JOHAB_9E },                 /* 0x9E */
1087    { 0x07, 0x9C, aImplUniToDBCSTab_JOHAB_9F },                 /* 0x9F */
1088    {    1,    0, NULL },                                       /* 0xA0 */
1089    {    1,    0, NULL },                                       /* 0xA1 */
1090    {    1,    0, NULL },                                       /* 0xA2 */
1091    {    1,    0, NULL },                                       /* 0xA3 */
1092    {    1,    0, NULL },                                       /* 0xA4 */
1093    {    1,    0, NULL },                                       /* 0xA5 */
1094    {    1,    0, NULL },                                       /* 0xA6 */
1095    {    1,    0, NULL },                                       /* 0xA7 */
1096    {    1,    0, NULL },                                       /* 0xA8 */
1097    {    1,    0, NULL },                                       /* 0xA9 */
1098    {    1,    0, NULL },                                       /* 0xAA */
1099    {    1,    0, NULL },                                       /* 0xAB */
1100    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_AC },                 /* 0xAC */
1101    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_AD },                 /* 0xAD */
1102    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_AE },                 /* 0xAE */
1103    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_AF },                 /* 0xAF */
1104    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_B0 },                 /* 0xB0 */
1105    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_B1 },                 /* 0xB1 */
1106    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_B2 },                 /* 0xB2 */
1107    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_B3 },                 /* 0xB3 */
1108    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_B4 },                 /* 0xB4 */
1109    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_B5 },                 /* 0xB5 */
1110    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_B6 },                 /* 0xB6 */
1111    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_B7 },                 /* 0xB7 */
1112    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_B8 },                 /* 0xB8 */
1113    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_B9 },                 /* 0xB9 */
1114    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_BA },                 /* 0xBA */
1115    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_BB },                 /* 0xBB */
1116    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_BC },                 /* 0xBC */
1117    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_BD },                 /* 0xBD */
1118    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_BE },                 /* 0xBE */
1119    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_BF },                 /* 0xBF */
1120    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_C0 },                 /* 0xC0 */
1121    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_C1 },                 /* 0xC1 */
1122    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_C2 },                 /* 0xC2 */
1123    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_C3 },                 /* 0xC3 */
1124    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_C4 },                 /* 0xC4 */
1125    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_C5 },                 /* 0xC5 */
1126    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_C6 },                 /* 0xC6 */
1127    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_C7 },                 /* 0xC7 */
1128    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_C8 },                 /* 0xC8 */
1129    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_C9 },                 /* 0xC9 */
1130    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_CA },                 /* 0xCA */
1131    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_CB },                 /* 0xCB */
1132    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_CC },                 /* 0xCC */
1133    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_CD },                 /* 0xCD */
1134    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_CE },                 /* 0xCE */
1135    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_CF },                 /* 0xCF */
1136    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_D0 },                 /* 0xD0 */
1137    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_D1 },                 /* 0xD1 */
1138    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_D2 },                 /* 0xD2 */
1139    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_D3 },                 /* 0xD3 */
1140    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_D4 },                 /* 0xD4 */
1141    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_D5 },                 /* 0xD5 */
1142    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_D6 },                 /* 0xD6 */
1143    { 0x00, 0xA3, aImplUniToDBCSTab_JOHAB_D7 },                 /* 0xD7 */
1144    {    1,    0, NULL },                                       /* 0xD8 */
1145    {    1,    0, NULL },                                       /* 0xD9 */
1146    {    1,    0, NULL },                                       /* 0xDA */
1147    {    1,    0, NULL },                                       /* 0xDB */
1148    {    1,    0, NULL },                                       /* 0xDC */
1149    {    1,    0, NULL },                                       /* 0xDD */
1150    {    1,    0, NULL },                                       /* 0xDE */
1151    {    1,    0, NULL },                                       /* 0xDF */
1152    {    1,    0, NULL },                                       /* 0xE0 */
1153    {    1,    0, NULL },                                       /* 0xE1 */
1154    {    1,    0, NULL },                                       /* 0xE2 */
1155    {    1,    0, NULL },                                       /* 0xE3 */
1156    {    1,    0, NULL },                                       /* 0xE4 */
1157    {    1,    0, NULL },                                       /* 0xE5 */
1158    {    1,    0, NULL },                                       /* 0xE6 */
1159    {    1,    0, NULL },                                       /* 0xE7 */
1160    {    1,    0, NULL },                                       /* 0xE8 */
1161    {    1,    0, NULL },                                       /* 0xE9 */
1162    {    1,    0, NULL },                                       /* 0xEA */
1163    {    1,    0, NULL },                                       /* 0xEB */
1164    {    1,    0, NULL },                                       /* 0xEC */
1165    {    1,    0, NULL },                                       /* 0xED */
1166    {    1,    0, NULL },                                       /* 0xEE */
1167    {    1,    0, NULL },                                       /* 0xEF */
1168    {    1,    0, NULL },                                       /* 0xF0 */
1169    {    1,    0, NULL },                                       /* 0xF1 */
1170    {    1,    0, NULL },                                       /* 0xF2 */
1171    {    1,    0, NULL },                                       /* 0xF3 */
1172    {    1,    0, NULL },                                       /* 0xF4 */
1173    {    1,    0, NULL },                                       /* 0xF5 */
1174    {    1,    0, NULL },                                       /* 0xF6 */
1175    {    1,    0, NULL },                                       /* 0xF7 */
1176    {    1,    0, NULL },                                       /* 0xF8 */
1177    { 0x00, 0xFF, aImplUniToDBCSTab_JOHAB_F9 },                 /* 0xF9 */
1178    { 0x00, 0x0B, aImplUniToDBCSTab_JOHAB_FA },                 /* 0xFA */
1179    {    1,    0, NULL },                                       /* 0xFB */
1180    {    1,    0, NULL },                                       /* 0xFC */
1181    {    1,    0, NULL },                                       /* 0xFD */
1182    {    1,    0, NULL },                                       /* 0xFE */
1183    { 0x01, 0xE6, aImplUniToDBCSTab_JOHAB_FF }                  /* 0xFF */
1184};
1185
1186/* ----------------------------------------------------------------------- */
1187
1188/* D831-D87E    -> E000-E05D */
1189/* D891-D8FE    -> E05E-E0BB */
1190
1191#define DBCS_EUDC_MS1361_COUNT    2
1192static ImplDBCSEUDCData const aImplMS1361DBCSEUDCTab[DBCS_EUDC_MS1361_COUNT] =
1193{
1194    /* EUDC-Range */
1195    /* Lead:    D8-D8 */
1196    /* Trail:   31-7E */
1197    { 0xD8, 0xD8, 0x31, 0x7E, 0, 0, 0, 0, 1, 0x5D, 0xE000, 0xE05D },
1198    /* Lead:    D8-D8 */
1199    /* Trail:   91-FE */
1200    { 0xD8, 0xD8, 0x91, 0xFE, 0, 0, 0, 0, 1, 0x5D, 0xE05E, 0xE0BB }
1201};
1202
1203/* ----------------------------------------------------------------------- */
1204
1205static ImplDBCSConvertData const aImplJOHABDBCSCvtData =
1206{
1207    aJOHABUniLeadTab,
1208    aJOHABDBCSHighTab,
1209    0x00, 0xFF,
1210    0x31, 0xFE,
1211    aImplMS1361DBCSEUDCTab,
1212    DBCS_EUDC_MS1361_COUNT
1213};
1214
1215/* ======================================================================= */
1216
1217static ImplTextEncodingData const aImplMS1361TextEncodingData
1218    = { { &aImplJOHABDBCSCvtData,
1219          ImplDBCSToUnicode,
1220          ImplUnicodeToDBCS,
1221          NULL,
1222          NULL,
1223          NULL,
1224          NULL,
1225          NULL,
1226          NULL },
1227        1,
1228        2,
1229        2,
1230        130,
1231        "euc-kr",
1232        "euc-kr",
1233        RTL_TEXTENCODING_INFO_MULTIBYTE | RTL_TEXTENCODING_INFO_MIME };
1234    /* SCRIPT_KOREAN, pc code page 1361, mac encoding 3 */
1235