xref: /aoo42x/main/sal/textenc/tcvtlat1.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 tables for all 1 byte charsets, for the */
27/* following scripts: latin, iceland, nordic */
28
29/* ======================================================================= */
30
31/* IBM-437 */
32/* Dos Latin US - Standard CharSet for Western Script */
33/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
34/* Convert-Tables: mappings/vendors/micsft/pc/cp437.txt from 04/24/96 Version 2.00 */
35/* Last-Changes from us: */
36
37/* ----------------------------------------------------------------------- */
38
39#define IBM437UNI_START                 0x80
40#define IBM437UNI_END                   0xFF
41static sal_uInt16 const aImplIBM437ToUniTab[IBM437UNI_END - IBM437UNI_START + 1] =
42{
43/*       0       1       2       3       4       5       6       7 */
44/*       8       9       A       B       C       D       E       F */
45    0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7, /* 0x80 */
46    0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5, /* 0x80 */
47    0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9, /* 0x90 */
48    0x00FF, 0x00D6, 0x00DC, 0x00A2, 0x00A3, 0x00A5, 0x20A7, 0x0192, /* 0x90 */
49    0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA, /* 0xA0 */
50    0x00BF, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, /* 0xA0 */
51    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, /* 0xB0 */
52    0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, /* 0xB0 */
53    0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, /* 0xC0 */
54    0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, /* 0xC0 */
55    0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, /* 0xD0 */
56    0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, /* 0xD0 */
57    0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, /* 0xE0 */
58    0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, /* 0xE0 */
59    0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, /* 0xF0 */
60    0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0  /* 0xF0 */
61};
62
63/* ----------------------------------------------------------------------- */
64
65#define IBM437CHAR_START                0x00A0
66#define IBM437CHAR_END                  0x00FF
67static sal_uChar const aImplIBM437ToCharTab[IBM437CHAR_END - IBM437CHAR_START + 1] =
68{
69/*     0     1     2     3     4     5     6     7 */
70/*     8     9     A     B     C     D     E     F */
71    0xFF, 0xAD, 0x9B, 0x9C,    0, 0x9D,    0,    0, /* 0x00A0 */
72       0,    0, 0xA6, 0xAE, 0xAA,    0,    0,    0, /* 0x00A0 */
73    0xF8, 0xF1, 0xFD,    0,    0, 0xE6,    0, 0xFA, /* 0x00B0 */
74       0,    0, 0xA7, 0xAF, 0xAC, 0xAB,    0, 0xA8, /* 0x00B0 */
75       0,    0,    0,    0, 0x8E, 0x8F, 0x92, 0x80, /* 0x00C0 */
76       0, 0x90,    0,    0,    0,    0,    0,    0, /* 0x00C0 */
77       0, 0xA5,    0,    0,    0,    0, 0x99,    0, /* 0x00D0 */
78       0,    0,    0,    0, 0x9A,    0,    0, 0xE1, /* 0x00D0 */
79    0x85, 0xA0, 0x83,    0, 0x84, 0x86, 0x91, 0x87, /* 0x00E0 */
80    0x8A, 0x82, 0x88, 0x89, 0x8D, 0xA1, 0x8C, 0x8B, /* 0x00E0 */
81       0, 0xA4, 0x95, 0xA2, 0x93,    0, 0x94, 0xF6, /* 0x00F0 */
82       0, 0x97, 0xA3, 0x96, 0x81,    0,    0, 0x98  /* 0x00F0 */
83};
84
85/* ----------------------------------------------------------------------- */
86
87#define IBM437TOCHARTABEX_COUNT         75
88static ImplUniCharTabData const aImplIBM437ToCharTabEx[IBM437TOCHARTABEX_COUNT] =
89{
90  { 0x0192, 0x9F, 0 },
91  { 0x0393, 0xE2, 0 },
92  { 0x0398, 0xE9, 0 },
93  { 0x03A3, 0xE4, 0 },
94  { 0x03A6, 0xE8, 0 },
95  { 0x03A9, 0xEA, 0 },
96  { 0x03B1, 0xE0, 0 },
97  { 0x03B4, 0xEB, 0 },
98  { 0x03B5, 0xEE, 0 },
99  { 0x03C0, 0xE3, 0 },
100  { 0x03C3, 0xE5, 0 },
101  { 0x03C4, 0xE7, 0 },
102  { 0x03C6, 0xED, 0 },
103  { 0x207F, 0xFC, 0 },
104  { 0x20A7, 0x9E, 0 },
105  { 0x2219, 0xF9, 0 },
106  { 0x221A, 0xFB, 0 },
107  { 0x221E, 0xEC, 0 },
108  { 0x2229, 0xEF, 0 },
109  { 0x2248, 0xF7, 0 },
110  { 0x2261, 0xF0, 0 },
111  { 0x2264, 0xF3, 0 },
112  { 0x2265, 0xF2, 0 },
113  { 0x2310, 0xA9, 0 },
114  { 0x2320, 0xF4, 0 },
115  { 0x2321, 0xF5, 0 },
116  { 0x2500, 0xC4, 0 },
117  { 0x2502, 0xB3, 0 },
118  { 0x250C, 0xDA, 0 },
119  { 0x2510, 0xBF, 0 },
120  { 0x2514, 0xC0, 0 },
121  { 0x2518, 0xD9, 0 },
122  { 0x251C, 0xC3, 0 },
123  { 0x2524, 0xB4, 0 },
124  { 0x252C, 0xC2, 0 },
125  { 0x2534, 0xC1, 0 },
126  { 0x253C, 0xC5, 0 },
127  { 0x2550, 0xCD, 0 },
128  { 0x2551, 0xBA, 0 },
129  { 0x2552, 0xD5, 0 },
130  { 0x2553, 0xD6, 0 },
131  { 0x2554, 0xC9, 0 },
132  { 0x2555, 0xB8, 0 },
133  { 0x2556, 0xB7, 0 },
134  { 0x2557, 0xBB, 0 },
135  { 0x2558, 0xD4, 0 },
136  { 0x2559, 0xD3, 0 },
137  { 0x255A, 0xC8, 0 },
138  { 0x255B, 0xBE, 0 },
139  { 0x255C, 0xBD, 0 },
140  { 0x255D, 0xBC, 0 },
141  { 0x255E, 0xC6, 0 },
142  { 0x255F, 0xC7, 0 },
143  { 0x2560, 0xCC, 0 },
144  { 0x2561, 0xB5, 0 },
145  { 0x2562, 0xB6, 0 },
146  { 0x2563, 0xB9, 0 },
147  { 0x2564, 0xD1, 0 },
148  { 0x2565, 0xD2, 0 },
149  { 0x2566, 0xCB, 0 },
150  { 0x2567, 0xCF, 0 },
151  { 0x2568, 0xD0, 0 },
152  { 0x2569, 0xCA, 0 },
153  { 0x256A, 0xD8, 0 },
154  { 0x256B, 0xD7, 0 },
155  { 0x256C, 0xCE, 0 },
156  { 0x2580, 0xDF, 0 },
157  { 0x2584, 0xDC, 0 },
158  { 0x2588, 0xDB, 0 },
159  { 0x258C, 0xDD, 0 },
160  { 0x2590, 0xDE, 0 },
161  { 0x2591, 0xB0, 0 },
162  { 0x2592, 0xB1, 0 },
163  { 0x2593, 0xB2, 0 },
164  { 0x25A0, 0xFE, 0 }
165};
166
167/* ----------------------------------------------------------------------- */
168
169static ImplByteConvertData const aImplIBM437ByteCvtData =
170{
171    aImplIBM437ToUniTab,
172    NULL,
173    IBM437UNI_START, IBM437UNI_END,
174    NOTABUNI_START, NOTABUNI_END,
175    aImplIBM437ToCharTab,
176    NULL,
177    aImplIBM437ToCharTabEx,
178    IBM437CHAR_START, IBM437CHAR_END,
179    NOTABCHAR_START, NOTABCHAR_END,
180    IBM437TOCHARTABEX_COUNT
181};
182
183/* ----------------------------------------------------------------------- */
184
185static ImplTextEncodingData const aImplIBM437TextEncodingData
186    = { { &aImplIBM437ByteCvtData,
187          ImplCharToUnicode,
188          ImplUnicodeToChar,
189          NULL,
190          NULL,
191          NULL,
192          NULL,
193          NULL,
194          NULL },
195        1,
196        1,
197        1,
198        0,
199        "iso8859-1",
200        "ibm437",
201        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
202    /* DOS/OS2, SCRIPT_LATIN, pc code page 437 */
203
204/* ======================================================================= */
205
206/* IBM-850 */
207/* Dos Standard CharSet for Western/Europa */
208/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
209/* Convert-Tables: mappings/vendors/micsft/pc/cp850.txt from 04/24/96 Version 2.00 */
210/* Last-Changes from us: */
211/* D5 - geaendert auf EURO SIGN and 0x20AC added to D5 */
212
213/* ----------------------------------------------------------------------- */
214
215#define IBM850UNI_START                 0x80
216#define IBM850UNI_END                   0xFF
217static sal_uInt16 const aImplIBM850ToUniTab[IBM850UNI_END - IBM850UNI_START + 1] =
218{
219/*       0       1       2       3       4       5       6       7 */
220/*       8       9       A       B       C       D       E       F */
221    0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7, /* 0x80 */
222    0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5, /* 0x80 */
223    0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9, /* 0x90 */
224    0x00FF, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x00D7, 0x0192, /* 0x90 */
225    0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA, /* 0xA0 */
226    0x00BF, 0x00AE, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, /* 0xA0 */
227    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00C1, 0x00C2, 0x00C0, /* 0xB0 */
228    0x00A9, 0x2563, 0x2551, 0x2557, 0x255D, 0x00A2, 0x00A5, 0x2510, /* 0xB0 */
229    0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x00E3, 0x00C3, /* 0xC0 */
230    0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x00A4, /* 0xC0 */
231    0x00F0, 0x00D0, 0x00CA, 0x00CB, 0x00C8, 0x20AC, 0x00CD, 0x00CE, /* 0xD0 */
232    0x00CF, 0x2518, 0x250C, 0x2588, 0x2584, 0x00A6, 0x00CC, 0x2580, /* 0xD0 */
233    0x00D3, 0x00DF, 0x00D4, 0x00D2, 0x00F5, 0x00D5, 0x00B5, 0x00FE, /* 0xE0 */
234    0x00DE, 0x00DA, 0x00DB, 0x00D9, 0x00FD, 0x00DD, 0x00AF, 0x00B4, /* 0xE0 */
235    0x00AD, 0x00B1, 0x2017, 0x00BE, 0x00B6, 0x00A7, 0x00F7, 0x00B8, /* 0xF0 */
236    0x00B0, 0x00A8, 0x00B7, 0x00B9, 0x00B3, 0x00B2, 0x25A0, 0x00A0  /* 0xF0 */
237};
238
239/* ----------------------------------------------------------------------- */
240
241#define IBM850CHAR_START                0x00A0
242#define IBM850CHAR_END                  0x00FF
243static sal_uChar const aImplIBM850ToCharTab[IBM850CHAR_END - IBM850CHAR_START + 1] =
244{
245/*     0     1     2     3     4     5     6     7 */
246/*     8     9     A     B     C     D     E     F */
247    0xFF, 0xAD, 0xBD, 0x9C, 0xCF, 0xBE, 0xDD, 0xF5, /* 0x00A0 */
248    0xF9, 0xB8, 0xA6, 0xAE, 0xAA, 0xF0, 0xA9, 0xEE, /* 0x00A0 */
249    0xF8, 0xF1, 0xFD, 0xFC, 0xEF, 0xE6, 0xF4, 0xFA, /* 0x00B0 */
250    0xF7, 0xFB, 0xA7, 0xAF, 0xAC, 0xAB, 0xF3, 0xA8, /* 0x00B0 */
251    0xB7, 0xB5, 0xB6, 0xC7, 0x8E, 0x8F, 0x92, 0x80, /* 0x00C0 */
252    0xD4, 0x90, 0xD2, 0xD3, 0xDE, 0xD6, 0xD7, 0xD8, /* 0x00C0 */
253    0xD1, 0xA5, 0xE3, 0xE0, 0xE2, 0xE5, 0x99, 0x9E, /* 0x00D0 */
254    0x9D, 0xEB, 0xE9, 0xEA, 0x9A, 0xED, 0xE8, 0xE1, /* 0x00D0 */
255    0x85, 0xA0, 0x83, 0xC6, 0x84, 0x86, 0x91, 0x87, /* 0x00E0 */
256    0x8A, 0x82, 0x88, 0x89, 0x8D, 0xA1, 0x8C, 0x8B, /* 0x00E0 */
257    0xD0, 0xA4, 0x95, 0xA2, 0x93, 0xE4, 0x94, 0xF6, /* 0x00F0 */
258    0x9B, 0x97, 0xA3, 0x96, 0x81, 0xEC, 0xE7, 0x98  /* 0x00F0 */
259};
260
261/* ----------------------------------------------------------------------- */
262
263#define IBM850TOCHARTABEX_COUNT         33
264static ImplUniCharTabData const aImplIBM850ToCharTabEx[IBM850TOCHARTABEX_COUNT] =
265{
266  { 0x0131, 0xD5, 0 },
267  { 0x0192, 0x9F, 0 },
268  { 0x2017, 0xF2, 0 },
269  { 0x20AC, 0xD5, 0 },
270  { 0x2500, 0xC4, 0 },
271  { 0x2502, 0xB3, 0 },
272  { 0x250C, 0xDA, 0 },
273  { 0x2510, 0xBF, 0 },
274  { 0x2514, 0xC0, 0 },
275  { 0x2518, 0xD9, 0 },
276  { 0x251C, 0xC3, 0 },
277  { 0x2524, 0xB4, 0 },
278  { 0x252C, 0xC2, 0 },
279  { 0x2534, 0xC1, 0 },
280  { 0x253C, 0xC5, 0 },
281  { 0x2550, 0xCD, 0 },
282  { 0x2551, 0xBA, 0 },
283  { 0x2554, 0xC9, 0 },
284  { 0x2557, 0xBB, 0 },
285  { 0x255A, 0xC8, 0 },
286  { 0x255D, 0xBC, 0 },
287  { 0x2560, 0xCC, 0 },
288  { 0x2563, 0xB9, 0 },
289  { 0x2566, 0xCB, 0 },
290  { 0x2569, 0xCA, 0 },
291  { 0x256C, 0xCE, 0 },
292  { 0x2580, 0xDF, 0 },
293  { 0x2584, 0xDC, 0 },
294  { 0x2588, 0xDB, 0 },
295  { 0x2591, 0xB0, 0 },
296  { 0x2592, 0xB1, 0 },
297  { 0x2593, 0xB2, 0 },
298  { 0x25A0, 0xFE, 0 }
299};
300
301/* ----------------------------------------------------------------------- */
302
303static ImplByteConvertData const aImplIBM850ByteCvtData =
304{
305    aImplIBM850ToUniTab,
306    NULL,
307    IBM850UNI_START, IBM850UNI_END,
308    NOTABUNI_START, NOTABUNI_END,
309    aImplIBM850ToCharTab,
310    NULL,
311    aImplIBM850ToCharTabEx,
312    IBM850CHAR_START, IBM850CHAR_END,
313    NOTABCHAR_START, NOTABCHAR_END,
314    IBM850TOCHARTABEX_COUNT
315};
316
317/* ----------------------------------------------------------------------- */
318
319static ImplTextEncodingData const aImplIBM850TextEncodingData
320    = { { &aImplIBM850ByteCvtData,
321          ImplCharToUnicode,
322          ImplUnicodeToChar,
323          NULL,
324          NULL,
325          NULL,
326          NULL,
327          NULL,
328          NULL },
329        1,
330        1,
331        1,
332        0,
333        "iso8859-1",
334        "ibm850",
335        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
336    /* DOS/OS2, SCRIPT_LATIN, pc code page 850 */
337
338/* ======================================================================= */
339
340/* IBM-860 */
341/* Dos Standard CharSet for Portugiese */
342/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
343/* Convert-Tables: mappings/vendors/micsft/pc/cp860.txt from 04/24/96 Version 2.00 */
344/* Last-Changes from us: */
345
346/* ----------------------------------------------------------------------- */
347
348#define IBM860UNI_START                 0x80
349#define IBM860UNI_END                   0xFF
350static sal_uInt16 const aImplIBM860ToUniTab[IBM860UNI_END - IBM860UNI_START + 1] =
351{
352/*       0       1       2       3       4       5       6       7 */
353/*       8       9       A       B       C       D       E       F */
354    0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E3, 0x00E0, 0x00C1, 0x00E7, /* 0x80 */
355    0x00EA, 0x00CA, 0x00E8, 0x00CD, 0x00D4, 0x00EC, 0x00C3, 0x00C2, /* 0x80 */
356    0x00C9, 0x00C0, 0x00C8, 0x00F4, 0x00F5, 0x00F2, 0x00DA, 0x00F9, /* 0x90 */
357    0x00CC, 0x00D5, 0x00DC, 0x00A2, 0x00A3, 0x00D9, 0x20A7, 0x00D3, /* 0x90 */
358    0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA, /* 0xA0 */
359    0x00BF, 0x00D2, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, /* 0xA0 */
360    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, /* 0xB0 */
361    0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, /* 0xB0 */
362    0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, /* 0xC0 */
363    0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, /* 0xC0 */
364    0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, /* 0xD0 */
365    0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, /* 0xD0 */
366    0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, /* 0xE0 */
367    0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, /* 0xE0 */
368    0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, /* 0xF0 */
369    0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0  /* 0xF0 */
370};
371
372/* ----------------------------------------------------------------------- */
373
374#define IBM860CHAR_START                0x00A0
375#define IBM860CHAR_END                  0x00FC
376static sal_uChar const aImplIBM860ToCharTab[IBM860CHAR_END - IBM860CHAR_START + 1] =
377{
378/*     0     1     2     3     4     5     6     7 */
379/*     8     9     A     B     C     D     E     F */
380    0xFF, 0xAD, 0x9B, 0x9C,    0 ,   0,    0,    0, /* 0x00A0 */
381       0,    0, 0xA6, 0xAE, 0xAA,    0,    0,    0, /* 0x00A0 */
382    0xF8, 0xF1, 0xFD,    0,    0, 0xE6,    0, 0xFA, /* 0x00B0 */
383       0,    0, 0xA7, 0xAF, 0xAC, 0xAB,    0, 0xA8, /* 0x00B0 */
384    0x91, 0x86, 0x8F, 0x8E,    0,    0,    0, 0x80, /* 0x00C0 */
385    0x92, 0x90, 0x89,    0, 0x98, 0x8B,    0,    0, /* 0x00C0 */
386       0, 0xA5, 0xA9, 0x9F, 0x8C, 0x99,    0,    0, /* 0x00D0 */
387       0, 0x9D, 0x96,    0, 0x9A,    0,    0, 0xE1, /* 0x00D0 */
388    0x85, 0xA0, 0x83, 0x84,    0,    0,    0, 0x87, /* 0x00E0 */
389    0x8A, 0x82, 0x88,    0, 0x8D, 0xA1,    0,    0, /* 0x00E0 */
390       0, 0xA4, 0x95, 0xA2, 0x93, 0x94,    0, 0xF6, /* 0x00F0 */
391       0, 0x97, 0xA3,    0, 0x81                    /* 0x00F0 */
392};
393
394/* ----------------------------------------------------------------------- */
395
396#define IBM860TOCHARTABEX_COUNT         73
397static ImplUniCharTabData const aImplIBM860ToCharTabEx[IBM860TOCHARTABEX_COUNT] =
398{
399  { 0x0393, 0xE2, 0 },
400  { 0x0398, 0xE9, 0 },
401  { 0x03A3, 0xE4, 0 },
402  { 0x03A6, 0xE8, 0 },
403  { 0x03A9, 0xEA, 0 },
404  { 0x03B1, 0xE0, 0 },
405  { 0x03B4, 0xEB, 0 },
406  { 0x03B5, 0xEE, 0 },
407  { 0x03C0, 0xE3, 0 },
408  { 0x03C3, 0xE5, 0 },
409  { 0x03C4, 0xE7, 0 },
410  { 0x03C6, 0xED, 0 },
411  { 0x207F, 0xFC, 0 },
412  { 0x20A7, 0x9E, 0 },
413  { 0x2219, 0xF9, 0 },
414  { 0x221A, 0xFB, 0 },
415  { 0x221E, 0xEC, 0 },
416  { 0x2229, 0xEF, 0 },
417  { 0x2248, 0xF7, 0 },
418  { 0x2261, 0xF0, 0 },
419  { 0x2264, 0xF3, 0 },
420  { 0x2265, 0xF2, 0 },
421  { 0x2320, 0xF4, 0 },
422  { 0x2321, 0xF5, 0 },
423  { 0x2500, 0xC4, 0 },
424  { 0x2502, 0xB3, 0 },
425  { 0x250C, 0xDA, 0 },
426  { 0x2510, 0xBF, 0 },
427  { 0x2514, 0xC0, 0 },
428  { 0x2518, 0xD9, 0 },
429  { 0x251C, 0xC3, 0 },
430  { 0x2524, 0xB4, 0 },
431  { 0x252C, 0xC2, 0 },
432  { 0x2534, 0xC1, 0 },
433  { 0x253C, 0xC5, 0 },
434  { 0x2550, 0xCD, 0 },
435  { 0x2551, 0xBA, 0 },
436  { 0x2552, 0xD5, 0 },
437  { 0x2553, 0xD6, 0 },
438  { 0x2554, 0xC9, 0 },
439  { 0x2555, 0xB8, 0 },
440  { 0x2556, 0xB7, 0 },
441  { 0x2557, 0xBB, 0 },
442  { 0x2558, 0xD4, 0 },
443  { 0x2559, 0xD3, 0 },
444  { 0x255A, 0xC8, 0 },
445  { 0x255B, 0xBE, 0 },
446  { 0x255C, 0xBD, 0 },
447  { 0x255D, 0xBC, 0 },
448  { 0x255E, 0xC6, 0 },
449  { 0x255F, 0xC7, 0 },
450  { 0x2560, 0xCC, 0 },
451  { 0x2561, 0xB5, 0 },
452  { 0x2562, 0xB6, 0 },
453  { 0x2563, 0xB9, 0 },
454  { 0x2564, 0xD1, 0 },
455  { 0x2565, 0xD2, 0 },
456  { 0x2566, 0xCB, 0 },
457  { 0x2567, 0xCF, 0 },
458  { 0x2568, 0xD0, 0 },
459  { 0x2569, 0xCA, 0 },
460  { 0x256A, 0xD8, 0 },
461  { 0x256B, 0xD7, 0 },
462  { 0x256C, 0xCE, 0 },
463  { 0x2580, 0xDF, 0 },
464  { 0x2584, 0xDC, 0 },
465  { 0x2588, 0xDB, 0 },
466  { 0x258C, 0xDD, 0 },
467  { 0x2590, 0xDE, 0 },
468  { 0x2591, 0xB0, 0 },
469  { 0x2592, 0xB1, 0 },
470  { 0x2593, 0xB2, 0 },
471  { 0x25A0, 0xFE, 0 }
472};
473
474/* ----------------------------------------------------------------------- */
475
476static ImplByteConvertData const aImplIBM860ByteCvtData =
477{
478    aImplIBM860ToUniTab,
479    NULL,
480    IBM860UNI_START, IBM860UNI_END,
481    NOTABUNI_START, NOTABUNI_END,
482    aImplIBM860ToCharTab,
483    NULL,
484    aImplIBM860ToCharTabEx,
485    IBM860CHAR_START, IBM860CHAR_END,
486    NOTABCHAR_START, NOTABCHAR_END,
487    IBM860TOCHARTABEX_COUNT
488};
489
490/* ----------------------------------------------------------------------- */
491
492static ImplTextEncodingData const aImplIBM860TextEncodingData
493    = { { &aImplIBM860ByteCvtData,
494          ImplCharToUnicode,
495          ImplUnicodeToChar,
496          NULL,
497          NULL,
498          NULL,
499          NULL,
500          NULL,
501          NULL },
502        1,
503        1,
504        1,
505        0,
506        "iso8859-1",
507        "IBM860",
508        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
509    /* DOS/OS2, SCRIPT_LATIN, pc code page 860 */
510
511/* ======================================================================= */
512
513/* IBM-861 */
514/* Dos Standard CharSet for Icelandic */
515/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
516/* Convert-Tables: mappings/vendors/micsft/pc/cp861.txt from 04/24/96 Version 2.00 */
517/* Last-Changes from us: */
518
519/* ----------------------------------------------------------------------- */
520
521#define IBM861UNI_START                 0x80
522#define IBM861UNI_END                   0xFF
523static sal_uInt16 const aImplIBM861ToUniTab[IBM861UNI_END - IBM861UNI_START + 1] =
524{
525/*       0       1       2       3       4       5       6       7 */
526/*       8       9       A       B       C       D       E       F */
527    0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7, /* 0x80 */
528    0x00EA, 0x00EB, 0x00E8, 0x00D0, 0x00F0, 0x00DE, 0x00C4, 0x00C5, /* 0x80 */
529    0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00FE, 0x00FB, 0x00DD, /* 0x90 */
530    0x00FD, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x20A7, 0x0192, /* 0x90 */
531    0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00C1, 0x00CD, 0x00D3, 0x00DA, /* 0xA0 */
532    0x00BF, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, /* 0xA0 */
533    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, /* 0xB0 */
534    0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, /* 0xB0 */
535    0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, /* 0xC0 */
536    0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, /* 0xC0 */
537    0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, /* 0xD0 */
538    0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, /* 0xD0 */
539    0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, /* 0xE0 */
540    0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, /* 0xE0 */
541    0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, /* 0xF0 */
542    0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0  /* 0xF0 */
543};
544
545/* ----------------------------------------------------------------------- */
546
547#define IBM861CHAR_START                0x00A0
548#define IBM861CHAR_END                  0x00FE
549static sal_uChar const aImplIBM861ToCharTab[IBM861CHAR_END - IBM861CHAR_START + 1] =
550{
551/*     0     1     2     3     4     5     6     7 */
552/*     8     9     A     B     C     D     E     F */
553    0xFF, 0xAD,    0, 0x9C,    0,    0,    0,    0, /* 0x00A0 */
554       0,    0,    0, 0xAE, 0xAA,    0,    0,    0, /* 0x00A0 */
555    0xF8, 0xF1, 0xFD,    0,    0, 0xE6,    0, 0xFA, /* 0x00B0 */
556       0,    0,    0, 0xAF, 0xAC, 0xAB,    0, 0xA8, /* 0x00B0 */
557       0, 0xA4,    0,    0, 0x8E, 0x8F, 0x92, 0x80, /* 0x00C0 */
558       0, 0x90,    0,    0,    0, 0xA5,    0,    0, /* 0x00C0 */
559    0x8B,    0,    0, 0xA6,    0,    0, 0x99,    0, /* 0x00D0 */
560    0x9D,    0, 0xA7,    0, 0x9A, 0x97, 0x8D, 0xE1, /* 0x00D0 */
561    0x85, 0xA0, 0x83,    0, 0x84, 0x86, 0x91, 0x87, /* 0x00E0 */
562    0x8A, 0x82, 0x88, 0x89,    0, 0xA1,    0,    0, /* 0x00E0 */
563    0x8C,    0,    0, 0xA2, 0x93,    0, 0x94, 0xF6, /* 0x00F0 */
564    0x9B,    0, 0xA3, 0x96, 0x81, 0x98, 0x95        /* 0x00F0 */
565};
566
567/* ----------------------------------------------------------------------- */
568
569#define IBM861TOCHARTABEX_COUNT         75
570static ImplUniCharTabData const aImplIBM861ToCharTabEx[IBM861TOCHARTABEX_COUNT] =
571{
572  { 0x0192, 0x9F, 0 },
573  { 0x0393, 0xE2, 0 },
574  { 0x0398, 0xE9, 0 },
575  { 0x03A3, 0xE4, 0 },
576  { 0x03A6, 0xE8, 0 },
577  { 0x03A9, 0xEA, 0 },
578  { 0x03B1, 0xE0, 0 },
579  { 0x03B4, 0xEB, 0 },
580  { 0x03B5, 0xEE, 0 },
581  { 0x03C0, 0xE3, 0 },
582  { 0x03C3, 0xE5, 0 },
583  { 0x03C4, 0xE7, 0 },
584  { 0x03C6, 0xED, 0 },
585  { 0x207F, 0xFC, 0 },
586  { 0x20A7, 0x9E, 0 },
587  { 0x2219, 0xF9, 0 },
588  { 0x221A, 0xFB, 0 },
589  { 0x221E, 0xEC, 0 },
590  { 0x2229, 0xEF, 0 },
591  { 0x2248, 0xF7, 0 },
592  { 0x2261, 0xF0, 0 },
593  { 0x2264, 0xF3, 0 },
594  { 0x2265, 0xF2, 0 },
595  { 0x2310, 0xA9, 0 },
596  { 0x2320, 0xF4, 0 },
597  { 0x2321, 0xF5, 0 },
598  { 0x2500, 0xC4, 0 },
599  { 0x2502, 0xB3, 0 },
600  { 0x250C, 0xDA, 0 },
601  { 0x2510, 0xBF, 0 },
602  { 0x2514, 0xC0, 0 },
603  { 0x2518, 0xD9, 0 },
604  { 0x251C, 0xC3, 0 },
605  { 0x2524, 0xB4, 0 },
606  { 0x252C, 0xC2, 0 },
607  { 0x2534, 0xC1, 0 },
608  { 0x253C, 0xC5, 0 },
609  { 0x2550, 0xCD, 0 },
610  { 0x2551, 0xBA, 0 },
611  { 0x2552, 0xD5, 0 },
612  { 0x2553, 0xD6, 0 },
613  { 0x2554, 0xC9, 0 },
614  { 0x2555, 0xB8, 0 },
615  { 0x2556, 0xB7, 0 },
616  { 0x2557, 0xBB, 0 },
617  { 0x2558, 0xD4, 0 },
618  { 0x2559, 0xD3, 0 },
619  { 0x255A, 0xC8, 0 },
620  { 0x255B, 0xBE, 0 },
621  { 0x255C, 0xBD, 0 },
622  { 0x255D, 0xBC, 0 },
623  { 0x255E, 0xC6, 0 },
624  { 0x255F, 0xC7, 0 },
625  { 0x2560, 0xCC, 0 },
626  { 0x2561, 0xB5, 0 },
627  { 0x2562, 0xB6, 0 },
628  { 0x2563, 0xB9, 0 },
629  { 0x2564, 0xD1, 0 },
630  { 0x2565, 0xD2, 0 },
631  { 0x2566, 0xCB, 0 },
632  { 0x2567, 0xCF, 0 },
633  { 0x2568, 0xD0, 0 },
634  { 0x2569, 0xCA, 0 },
635  { 0x256A, 0xD8, 0 },
636  { 0x256B, 0xD7, 0 },
637  { 0x256C, 0xCE, 0 },
638  { 0x2580, 0xDF, 0 },
639  { 0x2584, 0xDC, 0 },
640  { 0x2588, 0xDB, 0 },
641  { 0x258C, 0xDD, 0 },
642  { 0x2590, 0xDE, 0 },
643  { 0x2591, 0xB0, 0 },
644  { 0x2592, 0xB1, 0 },
645  { 0x2593, 0xB2, 0 },
646  { 0x25A0, 0xFE, 0 }
647};
648
649/* ----------------------------------------------------------------------- */
650
651static ImplByteConvertData const aImplIBM861ByteCvtData =
652{
653    aImplIBM861ToUniTab,
654    NULL,
655    IBM861UNI_START, IBM861UNI_END,
656    NOTABUNI_START, NOTABUNI_END,
657    aImplIBM861ToCharTab,
658    NULL,
659    aImplIBM861ToCharTabEx,
660    IBM861CHAR_START, IBM861CHAR_END,
661    NOTABCHAR_START, NOTABCHAR_END,
662    IBM861TOCHARTABEX_COUNT
663};
664
665/* ----------------------------------------------------------------------- */
666
667static ImplTextEncodingData const aImplIBM861TextEncodingData
668    = { { &aImplIBM861ByteCvtData,
669          ImplCharToUnicode,
670          ImplUnicodeToChar,
671          NULL,
672          NULL,
673          NULL,
674          NULL,
675          NULL,
676          NULL },
677        1,
678        1,
679        1,
680        0,
681        "iso8859-1",
682        "IBM861",
683        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
684    /* DOS/OS2, SCRIPT_LATIN, pc code page 861, mac encoding 37 */
685
686/* ======================================================================= */
687
688/* IBM-863 */
689/* Dos Standard CharSet for Canada-France */
690/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
691/* Convert-Tables: mappings/vendors/micsft/pc/cp863.txt from 04/24/96 Version 2.00 */
692/* Last-Changes from us: */
693
694/* ----------------------------------------------------------------------- */
695
696#define IBM863UNI_START                 0x80
697#define IBM863UNI_END                   0xFF
698static sal_uInt16 const aImplIBM863ToUniTab[IBM863UNI_END - IBM863UNI_START + 1] =
699{
700/*       0       1       2       3       4       5       6       7 */
701/*       8       9       A       B       C       D       E       F */
702    0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00C2, 0x00E0, 0x00B6, 0x00E7, /* 0x80 */
703    0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x2017, 0x00C0, 0x00A7, /* 0x80 */
704    0x00C9, 0x00C8, 0x00CA, 0x00F4, 0x00CB, 0x00CF, 0x00FB, 0x00F9, /* 0x90 */
705    0x00A4, 0x00D4, 0x00DC, 0x00A2, 0x00A3, 0x00D9, 0x00DB, 0x0192, /* 0x90 */
706    0x00A6, 0x00B4, 0x00F3, 0x00FA, 0x00A8, 0x00B8, 0x00B3, 0x00AF, /* 0xA0 */
707    0x00CE, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00BE, 0x00AB, 0x00BB, /* 0xA0 */
708    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, /* 0xB0 */
709    0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, /* 0xB0 */
710    0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, /* 0xC0 */
711    0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, /* 0xC0 */
712    0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, /* 0xD0 */
713    0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, /* 0xD0 */
714    0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, /* 0xE0 */
715    0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, /* 0xE0 */
716    0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, /* 0xF0 */
717    0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0  /* 0xF0 */
718};
719
720/* ----------------------------------------------------------------------- */
721
722#define IBM863CHAR_START                0x00A0
723#define IBM863CHAR_END                  0x00FC
724static sal_uChar const aImplIBM863ToCharTab[IBM863CHAR_END - IBM863CHAR_START + 1] =
725{
726/*     0     1     2     3     4     5     6     7 */
727/*     8     9     A     B     C     D     E     F */
728    0xFF,    0, 0x9B, 0x9C, 0x98,    0, 0xA0, 0x8F, /* 0x00A0 */
729    0xA4,    0,    0, 0xAE, 0xAA,    0,    0, 0xA7, /* 0x00A0 */
730    0xF8, 0xF1, 0xFD, 0xA6, 0xA1, 0xE6, 0x86, 0xFA, /* 0x00B0 */
731    0xA5,    0,    0, 0xAF, 0xAC, 0xAB, 0xAD,    0, /* 0x00B0 */
732    0x8E,    0, 0x84,    0,    0,    0,    0, 0x80, /* 0x00C0 */
733    0x91, 0x90, 0x92, 0x94,    0,    0, 0xA8, 0x95, /* 0x00C0 */
734       0,    0,    0,    0, 0x99,    0,    0,    0, /* 0x00D0 */
735       0, 0x9D,    0, 0x9E, 0x9A,    0,    0, 0xE1, /* 0x00D0 */
736    0x85,    0, 0x83,    0,    0,    0,    0, 0x87, /* 0x00E0 */
737    0x8A, 0x82, 0x88, 0x89,    0,    0, 0x8C, 0x8B, /* 0x00E0 */
738       0,    0,    0, 0xA2, 0x93,    0,    0, 0xF6, /* 0x00F0 */
739       0, 0x97, 0xA3, 0x96, 0x81                    /* 0x00F0 */
740};
741
742/* ----------------------------------------------------------------------- */
743
744#define IBM863TOCHARTABEX_COUNT         75
745static ImplUniCharTabData const aImplIBM863ToCharTabEx[IBM863TOCHARTABEX_COUNT] =
746{
747  { 0x0192, 0x9F, 0 },
748  { 0x0393, 0xE2, 0 },
749  { 0x0398, 0xE9, 0 },
750  { 0x03A3, 0xE4, 0 },
751  { 0x03A6, 0xE8, 0 },
752  { 0x03A9, 0xEA, 0 },
753  { 0x03B1, 0xE0, 0 },
754  { 0x03B4, 0xEB, 0 },
755  { 0x03B5, 0xEE, 0 },
756  { 0x03C0, 0xE3, 0 },
757  { 0x03C3, 0xE5, 0 },
758  { 0x03C4, 0xE7, 0 },
759  { 0x03C6, 0xED, 0 },
760  { 0x2017, 0x8D, 0 },
761  { 0x207F, 0xFC, 0 },
762  { 0x2219, 0xF9, 0 },
763  { 0x221A, 0xFB, 0 },
764  { 0x221E, 0xEC, 0 },
765  { 0x2229, 0xEF, 0 },
766  { 0x2248, 0xF7, 0 },
767  { 0x2261, 0xF0, 0 },
768  { 0x2264, 0xF3, 0 },
769  { 0x2265, 0xF2, 0 },
770  { 0x2310, 0xA9, 0 },
771  { 0x2320, 0xF4, 0 },
772  { 0x2321, 0xF5, 0 },
773  { 0x2500, 0xC4, 0 },
774  { 0x2502, 0xB3, 0 },
775  { 0x250C, 0xDA, 0 },
776  { 0x2510, 0xBF, 0 },
777  { 0x2514, 0xC0, 0 },
778  { 0x2518, 0xD9, 0 },
779  { 0x251C, 0xC3, 0 },
780  { 0x2524, 0xB4, 0 },
781  { 0x252C, 0xC2, 0 },
782  { 0x2534, 0xC1, 0 },
783  { 0x253C, 0xC5, 0 },
784  { 0x2550, 0xCD, 0 },
785  { 0x2551, 0xBA, 0 },
786  { 0x2552, 0xD5, 0 },
787  { 0x2553, 0xD6, 0 },
788  { 0x2554, 0xC9, 0 },
789  { 0x2555, 0xB8, 0 },
790  { 0x2556, 0xB7, 0 },
791  { 0x2557, 0xBB, 0 },
792  { 0x2558, 0xD4, 0 },
793  { 0x2559, 0xD3, 0 },
794  { 0x255A, 0xC8, 0 },
795  { 0x255B, 0xBE, 0 },
796  { 0x255C, 0xBD, 0 },
797  { 0x255D, 0xBC, 0 },
798  { 0x255E, 0xC6, 0 },
799  { 0x255F, 0xC7, 0 },
800  { 0x2560, 0xCC, 0 },
801  { 0x2561, 0xB5, 0 },
802  { 0x2562, 0xB6, 0 },
803  { 0x2563, 0xB9, 0 },
804  { 0x2564, 0xD1, 0 },
805  { 0x2565, 0xD2, 0 },
806  { 0x2566, 0xCB, 0 },
807  { 0x2567, 0xCF, 0 },
808  { 0x2568, 0xD0, 0 },
809  { 0x2569, 0xCA, 0 },
810  { 0x256A, 0xD8, 0 },
811  { 0x256B, 0xD7, 0 },
812  { 0x256C, 0xCE, 0 },
813  { 0x2580, 0xDF, 0 },
814  { 0x2584, 0xDC, 0 },
815  { 0x2588, 0xDB, 0 },
816  { 0x258C, 0xDD, 0 },
817  { 0x2590, 0xDE, 0 },
818  { 0x2591, 0xB0, 0 },
819  { 0x2592, 0xB1, 0 },
820  { 0x2593, 0xB2, 0 },
821  { 0x25A0, 0xFE, 0 }
822};
823
824/* ----------------------------------------------------------------------- */
825
826static ImplByteConvertData const aImplIBM863ByteCvtData =
827{
828    aImplIBM863ToUniTab,
829    NULL,
830    IBM863UNI_START, IBM863UNI_END,
831    NOTABUNI_START, NOTABUNI_END,
832    aImplIBM863ToCharTab,
833    NULL,
834    aImplIBM863ToCharTabEx,
835    IBM863CHAR_START, IBM863CHAR_END,
836    NOTABCHAR_START, NOTABCHAR_END,
837    IBM863TOCHARTABEX_COUNT
838};
839
840/* ----------------------------------------------------------------------- */
841
842static ImplTextEncodingData const aImplIBM863TextEncodingData
843    = { { &aImplIBM863ByteCvtData,
844          ImplCharToUnicode,
845          ImplUnicodeToChar,
846          NULL,
847          NULL,
848          NULL,
849          NULL,
850          NULL,
851          NULL },
852        1,
853        1,
854        1,
855        0,
856        "iso8859-1",
857        "IBM863",
858        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
859    /* DOS/OS2, SCRIPT_LATIN, pc code page 863 */
860
861/* ======================================================================= */
862
863/* IBM-865 */
864/* Dos Standard CharSet for Nordic */
865/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
866/* Convert-Tables: mappings/vendors/micsft/pc/cp865.txt from 04/24/96 Version 2.00 */
867/* Last-Changes from us: */
868
869/* ----------------------------------------------------------------------- */
870
871#define IBM865UNI_START                 0x80
872#define IBM865UNI_END                   0xFF
873static sal_uInt16 const aImplIBM865ToUniTab[IBM865UNI_END - IBM865UNI_START + 1] =
874{
875/*       0       1       2       3       4       5       6       7 */
876/*       8       9       A       B       C       D       E       F */
877    0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7, /* 0x80 */
878    0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5, /* 0x80 */
879    0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9, /* 0x90 */
880    0x00FF, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x20A7, 0x0192, /* 0x90 */
881    0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA, /* 0xA0 */
882    0x00BF, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00A4, /* 0xA0 */
883    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, /* 0xB0 */
884    0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, /* 0xB0 */
885    0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, /* 0xC0 */
886    0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, /* 0xC0 */
887    0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, /* 0xD0 */
888    0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, /* 0xD0 */
889    0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, /* 0xE0 */
890    0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, /* 0xE0 */
891    0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, /* 0xF0 */
892    0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0  /* 0xF0 */
893};
894
895/* ----------------------------------------------------------------------- */
896
897#define IBM865CHAR_START                0x00A0
898#define IBM865CHAR_END                  0x00FF
899static sal_uChar const aImplIBM865ToCharTab[IBM865CHAR_END - IBM865CHAR_START + 1] =
900{
901/*     0     1     2     3     4     5     6     7 */
902/*     8     9     A     B     C     D     E     F */
903    0xFF, 0xAD,    0, 0x9C, 0xAF,    0,    0,    0, /* 0x00A0 */
904       0,    0, 0xA6, 0xAE, 0xAA,    0,    0,    0, /* 0x00A0 */
905    0xF8, 0xF1, 0xFD,    0,    0, 0xE6,    0, 0xFA, /* 0x00B0 */
906       0,    0, 0xA7,    0, 0xAC, 0xAB,    0, 0xA8, /* 0x00B0 */
907       0,    0,    0,    0, 0x8E, 0x8F, 0x92, 0x80, /* 0x00C0 */
908       0, 0x90,    0,    0,    0,    0,    0,    0, /* 0x00C0 */
909       0, 0xA5,    0,    0,    0,    0, 0x99,    0, /* 0x00D0 */
910    0x9D,    0,    0,    0, 0x9A,    0,    0, 0xE1, /* 0x00D0 */
911    0x85, 0xA0, 0x83,    0, 0x84, 0x86, 0x91, 0x87, /* 0x00E0 */
912    0x8A, 0x82, 0x88, 0x89, 0x8D, 0xA1, 0x8C, 0x8B, /* 0x00E0 */
913       0, 0xA4, 0x95, 0xA2, 0x93,    0, 0x94, 0xF6, /* 0x00F0 */
914    0x9B, 0x97, 0xA3, 0x96, 0x81,    0,    0, 0x98  /* 0x00F0 */
915};
916
917/* ----------------------------------------------------------------------- */
918
919#define IBM865TOCHARTABEX_COUNT         75
920static ImplUniCharTabData const aImplIBM865ToCharTabEx[IBM865TOCHARTABEX_COUNT] =
921{
922  { 0x0192, 0x9F, 0 },
923  { 0x0393, 0xE2, 0 },
924  { 0x0398, 0xE9, 0 },
925  { 0x03A3, 0xE4, 0 },
926  { 0x03A6, 0xE8, 0 },
927  { 0x03A9, 0xEA, 0 },
928  { 0x03B1, 0xE0, 0 },
929  { 0x03B4, 0xEB, 0 },
930  { 0x03B5, 0xEE, 0 },
931  { 0x03C0, 0xE3, 0 },
932  { 0x03C3, 0xE5, 0 },
933  { 0x03C4, 0xE7, 0 },
934  { 0x03C6, 0xED, 0 },
935  { 0x207F, 0xFC, 0 },
936  { 0x20A7, 0x9E, 0 },
937  { 0x2219, 0xF9, 0 },
938  { 0x221A, 0xFB, 0 },
939  { 0x221E, 0xEC, 0 },
940  { 0x2229, 0xEF, 0 },
941  { 0x2248, 0xF7, 0 },
942  { 0x2261, 0xF0, 0 },
943  { 0x2264, 0xF3, 0 },
944  { 0x2265, 0xF2, 0 },
945  { 0x2310, 0xA9, 0 },
946  { 0x2320, 0xF4, 0 },
947  { 0x2321, 0xF5, 0 },
948  { 0x2500, 0xC4, 0 },
949  { 0x2502, 0xB3, 0 },
950  { 0x250C, 0xDA, 0 },
951  { 0x2510, 0xBF, 0 },
952  { 0x2514, 0xC0, 0 },
953  { 0x2518, 0xD9, 0 },
954  { 0x251C, 0xC3, 0 },
955  { 0x2524, 0xB4, 0 },
956  { 0x252C, 0xC2, 0 },
957  { 0x2534, 0xC1, 0 },
958  { 0x253C, 0xC5, 0 },
959  { 0x2550, 0xCD, 0 },
960  { 0x2551, 0xBA, 0 },
961  { 0x2552, 0xD5, 0 },
962  { 0x2553, 0xD6, 0 },
963  { 0x2554, 0xC9, 0 },
964  { 0x2555, 0xB8, 0 },
965  { 0x2556, 0xB7, 0 },
966  { 0x2557, 0xBB, 0 },
967  { 0x2558, 0xD4, 0 },
968  { 0x2559, 0xD3, 0 },
969  { 0x255A, 0xC8, 0 },
970  { 0x255B, 0xBE, 0 },
971  { 0x255C, 0xBD, 0 },
972  { 0x255D, 0xBC, 0 },
973  { 0x255E, 0xC6, 0 },
974  { 0x255F, 0xC7, 0 },
975  { 0x2560, 0xCC, 0 },
976  { 0x2561, 0xB5, 0 },
977  { 0x2562, 0xB6, 0 },
978  { 0x2563, 0xB9, 0 },
979  { 0x2564, 0xD1, 0 },
980  { 0x2565, 0xD2, 0 },
981  { 0x2566, 0xCB, 0 },
982  { 0x2567, 0xCF, 0 },
983  { 0x2568, 0xD0, 0 },
984  { 0x2569, 0xCA, 0 },
985  { 0x256A, 0xD8, 0 },
986  { 0x256B, 0xD7, 0 },
987  { 0x256C, 0xCE, 0 },
988  { 0x2580, 0xDF, 0 },
989  { 0x2584, 0xDC, 0 },
990  { 0x2588, 0xDB, 0 },
991  { 0x258C, 0xDD, 0 },
992  { 0x2590, 0xDE, 0 },
993  { 0x2591, 0xB0, 0 },
994  { 0x2592, 0xB1, 0 },
995  { 0x2593, 0xB2, 0 },
996  { 0x25A0, 0xFE, 0 }
997};
998
999/* ----------------------------------------------------------------------- */
1000
1001static ImplByteConvertData const aImplIBM865ByteCvtData =
1002{
1003    aImplIBM865ToUniTab,
1004    NULL,
1005    IBM865UNI_START, IBM865UNI_END,
1006    NOTABUNI_START, NOTABUNI_END,
1007    aImplIBM865ToCharTab,
1008    NULL,
1009    aImplIBM865ToCharTabEx,
1010    IBM865CHAR_START, IBM865CHAR_END,
1011    NOTABCHAR_START, NOTABCHAR_END,
1012    IBM865TOCHARTABEX_COUNT
1013};
1014
1015/* ----------------------------------------------------------------------- */
1016
1017static ImplTextEncodingData const aImplIBM865TextEncodingData
1018    = { { &aImplIBM865ByteCvtData,
1019          ImplCharToUnicode,
1020          ImplUnicodeToChar,
1021          NULL,
1022          NULL,
1023          NULL,
1024          NULL,
1025          NULL,
1026          NULL },
1027        1,
1028        1,
1029        1,
1030        0,
1031        "iso8859-1",
1032        "IBM865",
1033        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
1034    /* DOS/OS2, SCRIPT_LATIN, pc code page 865 */
1035
1036/* ======================================================================= */
1037
1038/* MS-1252 */
1039/* Windows Standard CharSet (ANSI) for Western Script */
1040/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
1041/* Convert-Tables: mappings/vendors/micsft/windows/cp1252.txt from 04/15/98 Version 2.01 */
1042/* Last-Changes from us: */
1043
1044/* ----------------------------------------------------------------------- */
1045
1046#define MS1252UNI_START                 0x80
1047#define MS1252UNI_END                   0xFF
1048static sal_uInt16 const aImplMS1252ToUniTab[MS1252UNI_END - MS1252UNI_START + 1] =
1049{
1050/*       0       1       2       3       4       5       6       7 */
1051/*       8       9       A       B       C       D       E       F */
1052    0x20AC,      0, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, /* 0x80 */
1053    0x02C6, 0x2030, 0x0160, 0x2039, 0x0152,      0, 0x017D,      0, /* 0x80 */
1054         0, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, /* 0x90 */
1055    0x02DC, 0x2122, 0x0161, 0x203A, 0x0153,      0, 0x017E, 0x0178, /* 0x90 */
1056    0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, /* 0xA0 */
1057    0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, /* 0xA0 */
1058    0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, /* 0xB0 */
1059    0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, /* 0xB0 */
1060    0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, /* 0xC0 */
1061    0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, /* 0xC0 */
1062    0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, /* 0xD0 */
1063    0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF, /* 0xD0 */
1064    0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, /* 0xE0 */
1065    0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, /* 0xE0 */
1066    0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, /* 0xF0 */
1067    0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF  /* 0xF0 */
1068};
1069
1070/* ----------------------------------------------------------------------- */
1071
1072#define MS1252TOCHARTABEX_COUNT         27
1073static ImplUniCharTabData const aImplMS1252ToCharTabEx[MS1252TOCHARTABEX_COUNT] =
1074{
1075  { 0x0152, 0x8C, 0 },
1076  { 0x0153, 0x9C, 0 },
1077  { 0x0160, 0x8A, 0 },
1078  { 0x0161, 0x9A, 0 },
1079  { 0x0178, 0x9F, 0 },
1080  { 0x017D, 0x8E, 0 },
1081  { 0x017E, 0x9E, 0 },
1082  { 0x0192, 0x83, 0 },
1083  { 0x02C6, 0x88, 0 },
1084  { 0x02DC, 0x98, 0 },
1085  { 0x2013, 0x96, 0 },
1086  { 0x2014, 0x97, 0 },
1087  { 0x2018, 0x91, 0 },
1088  { 0x2019, 0x92, 0 },
1089  { 0x201A, 0x82, 0 },
1090  { 0x201C, 0x93, 0 },
1091  { 0x201D, 0x94, 0 },
1092  { 0x201E, 0x84, 0 },
1093  { 0x2020, 0x86, 0 },
1094  { 0x2021, 0x87, 0 },
1095  { 0x2022, 0x95, 0 },
1096  { 0x2026, 0x85, 0 },
1097  { 0x2030, 0x89, 0 },
1098  { 0x2039, 0x8B, 0 },
1099  { 0x203A, 0x9B, 0 },
1100  { 0x20AC, 0x80, 0 },
1101  { 0x2122, 0x99, 0 },
1102};
1103
1104/* ----------------------------------------------------------------------- */
1105
1106static ImplByteConvertData const aImplMS1252ByteCvtData =
1107{
1108    aImplMS1252ToUniTab,
1109    NULL,
1110    MS1252UNI_START, MS1252UNI_END,
1111    NOTABUNI_START, NOTABUNI_END,
1112    aImplA0FFSameToCharTab,
1113    NULL,
1114    aImplMS1252ToCharTabEx,
1115    SAMEA0FFCHAR_START, SAMEA0FFCHAR_END,
1116    NOTABCHAR_START, NOTABCHAR_END,
1117    MS1252TOCHARTABEX_COUNT
1118};
1119
1120/* ----------------------------------------------------------------------- */
1121
1122static ImplTextEncodingData const aImplMS1252TextEncodingData
1123    = { { &aImplMS1252ByteCvtData,
1124          ImplCharToUnicode,
1125          ImplUnicodeToChar,
1126          NULL,
1127          NULL,
1128          NULL,
1129          NULL,
1130          NULL,
1131          NULL },
1132        1,
1133        1,
1134        1,
1135        0,
1136        "iso8859-1",
1137        "windows-1252",
1138        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
1139    /* WIN, SCRIPT_LATIN, pc code page 850 */
1140
1141/* ======================================================================= */
1142
1143/* ISO-8859-1 */
1144/* Unix Standard CharSet (Latin1) for Western Script */
1145/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme, 0x80-0x9F Control-Caracter wie in Unicode */
1146/* Convert-Tables: mappings/iso8859/8859-1.txt from 07/27/99 Version 1.0 (based on Unicode 3.0) */
1147/* Last-Changes from us: */
1148
1149#define ISO88591UNI_START               0xA0
1150#define ISO88591UNI_END                 0xFF
1151static sal_uInt16 const aImplISO88591ToUniTab[ISO88591UNI_END - ISO88591UNI_START + 1] =
1152{
1153/*       0       1       2       3       4       5       6       7 */
1154/*       8       9       A       B       C       D       E       F */
1155    0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, /* 0xA0 */
1156    0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, /* 0xA0 */
1157    0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, /* 0xB0 */
1158    0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, /* 0xB0 */
1159    0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, /* 0xC0 */
1160    0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, /* 0xC0 */
1161    0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, /* 0xD0 */
1162    0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF, /* 0xD0 */
1163    0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, /* 0xE0 */
1164    0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, /* 0xE0 */
1165    0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, /* 0xF0 */
1166    0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF  /* 0xF0 */
1167};
1168
1169/* ----------------------------------------------------------------------- */
1170
1171static ImplByteConvertData const aImplISO88591ByteCvtData =
1172{
1173    aImplISO88591ToUniTab,
1174    aImpl8090SameToUniTab,
1175    ISO88591UNI_START, ISO88591UNI_END,
1176    SAME8090UNI_START, SAME8090UNI_END,
1177    aImplA0FFSameToCharTab,
1178    aImpl8090SameToCharTab,
1179    NULL,
1180    SAMEA0FFCHAR_START, SAMEA0FFCHAR_END,
1181    SAME8090CHAR_START, SAME8090CHAR_END,
1182    0
1183};
1184
1185/* ----------------------------------------------------------------------- */
1186
1187static ImplTextEncodingData const aImplISO88591TextEncodingData
1188    = { { &aImplISO88591ByteCvtData,
1189          ImplCharToUnicode,
1190          ImplUnicodeToChar,
1191          NULL,
1192          NULL,
1193          NULL,
1194          NULL,
1195          NULL,
1196          NULL },
1197        1,
1198        1,
1199        1,
1200        0,
1201        "iso8859-1",
1202        "iso-8859-1",
1203        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
1204    /* SCRIPT_LATIN, pc code page 850 */
1205
1206/* ======================================================================= */
1207
1208/* ISO-8859-14 */
1209/* ungefaehr wie Latin1 */
1210/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme, 0x80-0x9F Control-Caracter wie in Unicode */
1211/* Convert-Tables: mappings/iso8859/8859-14.txt from 07/27/99 Version 1.0 (based on Unicode 3.0) */
1212/* Last-Changes from us: */
1213
1214#define ISO885914UNI_START              0xA0
1215#define ISO885914UNI_END                0xFF
1216static sal_uInt16 const aImplISO885914ToUniTab[ISO885914UNI_END - ISO885914UNI_START + 1] =
1217{
1218/*       0       1       2       3       4       5       6       7 */
1219/*       8       9       A       B       C       D       E       F */
1220    0x00A0, 0x1E02, 0x1E03, 0x00A3, 0x010A, 0x010B, 0x1E0A, 0x00A7, /* 0xA0 */
1221    0x1E80, 0x00A9, 0x1E82, 0x1E0B, 0x1EF2, 0x00AD, 0x00AE, 0x0178, /* 0xA0 */
1222    0x1E1E, 0x1E1F, 0x0120, 0x0121, 0x1E40, 0x1E41, 0x00B6, 0x1E56, /* 0xB0 */
1223    0x1E81, 0x1E57, 0x1E83, 0x1E60, 0x1EF3, 0x1E84, 0x1E85, 0x1E61, /* 0xB0 */
1224    0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, /* 0xC0 */
1225    0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, /* 0xC0 */
1226    0x0174, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x1E6A, /* 0xD0 */
1227    0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x0176, 0x00DF, /* 0xD0 */
1228    0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, /* 0xE0 */
1229    0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, /* 0xE0 */
1230    0x0175, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x1E6B, /* 0xF0 */
1231    0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x0177, 0x00FF  /* 0xF0 */
1232};
1233
1234/* ----------------------------------------------------------------------- */
1235
1236#define ISO885914CHAR_START             0x00C0
1237#define ISO885914CHAR_END               0x00FF
1238static sal_uChar const aImplISO885914ToCharTab[ISO885914CHAR_END - ISO885914CHAR_START + 1] =
1239{
1240/*     0     1     2     3     4     5     6     7 */
1241/*     8     9     A     B     C     D     E     F */
1242    0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, /* 0x00C0 */
1243    0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, /* 0x00C0 */
1244       0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6,    0, /* 0x00D0 */
1245    0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD,    0, 0xDF, /* 0x00D0 */
1246    0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, /* 0x00E0 */
1247    0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, /* 0x00E0 */
1248       0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6,    0, /* 0x00F0 */
1249    0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD,    0, 0xFF  /* 0x00F0 */
1250};
1251
1252/* ----------------------------------------------------------------------- */
1253
1254#define ISO885914TOCHARTABEX_COUNT      38
1255static ImplUniCharTabData const aImplISO885914ToCharTabEx[ISO885914TOCHARTABEX_COUNT] =
1256{
1257  { 0x00A0, 0xA0, 0 },
1258  { 0x00A3, 0xA3, 0 },
1259  { 0x00A7, 0xA7, 0 },
1260  { 0x00A9, 0xA9, 0 },
1261  { 0x00AD, 0xAD, 0 },
1262  { 0x00AE, 0xAE, 0 },
1263  { 0x00B6, 0xB6, 0 },
1264  { 0x010A, 0xA4, 0 },
1265  { 0x010B, 0xA5, 0 },
1266  { 0x0120, 0xB2, 0 },
1267  { 0x0121, 0xB3, 0 },
1268  { 0x0174, 0xD0, 0 },
1269  { 0x0175, 0xF0, 0 },
1270  { 0x0176, 0xDE, 0 },
1271  { 0x0177, 0xFE, 0 },
1272  { 0x0178, 0xAF, 0 },
1273  { 0x1E02, 0xA1, 0 },
1274  { 0x1E03, 0xA2, 0 },
1275  { 0x1E0A, 0xA6, 0 },
1276  { 0x1E0B, 0xAB, 0 },
1277  { 0x1E1E, 0xB0, 0 },
1278  { 0x1E1F, 0xB1, 0 },
1279  { 0x1E40, 0xB4, 0 },
1280  { 0x1E41, 0xB5, 0 },
1281  { 0x1E56, 0xB7, 0 },
1282  { 0x1E57, 0xB9, 0 },
1283  { 0x1E60, 0xBB, 0 },
1284  { 0x1E61, 0xBF, 0 },
1285  { 0x1E6A, 0xD7, 0 },
1286  { 0x1E6B, 0xF7, 0 },
1287  { 0x1E80, 0xA8, 0 },
1288  { 0x1E81, 0xB8, 0 },
1289  { 0x1E82, 0xAA, 0 },
1290  { 0x1E83, 0xBA, 0 },
1291  { 0x1E84, 0xBD, 0 },
1292  { 0x1E85, 0xBE, 0 },
1293  { 0x1EF2, 0xAC, 0 },
1294  { 0x1EF3, 0xBC, 0 }
1295};
1296
1297/* ----------------------------------------------------------------------- */
1298
1299static ImplByteConvertData const aImplISO885914ByteCvtData =
1300{
1301    aImplISO885914ToUniTab,
1302    aImpl8090SameToUniTab,
1303    ISO885914UNI_START, ISO885914UNI_END,
1304    SAME8090UNI_START, SAME8090UNI_END,
1305    aImplISO885914ToCharTab,
1306    aImpl8090SameToCharTab,
1307    aImplISO885914ToCharTabEx,
1308    ISO885914CHAR_START, ISO885914CHAR_END,
1309    SAME8090CHAR_START, SAME8090CHAR_END,
1310    ISO885914TOCHARTABEX_COUNT
1311};
1312
1313/* ----------------------------------------------------------------------- */
1314
1315static ImplTextEncodingData const aImplISO885914TextEncodingData
1316    = { { &aImplISO885914ByteCvtData,
1317          ImplCharToUnicode,
1318          ImplUnicodeToChar,
1319          NULL,
1320          NULL,
1321          NULL,
1322          NULL,
1323          NULL,
1324          NULL },
1325        1,
1326        1,
1327        1,
1328        0,
1329        "iso8859-14",
1330        "iso-8859-14",
1331        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
1332    /* SCRIPT_LATIN, pc code page 850 */
1333
1334/* ======================================================================= */
1335
1336/* ISO-8859-15 */
1337/* ungefaehr wie Latin1, jedoch mit Euro (ehemaliges CURRENCY-Symbol an A4) */
1338/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme, 0x80-0x9F Control-Caracter wie in Unicode */
1339/* Convert-Tables: mappings/iso8859/8859-15.txt from 07/27/99 Version 1.0 (based on Unicode 3.0) */
1340/* Last-Changes from us: */
1341
1342#define ISO885915UNI_START              0xA0
1343#define ISO885915UNI_END                0xFF
1344static sal_uInt16 const aImplISO885915ToUniTab[ISO885915UNI_END - ISO885915UNI_START + 1] =
1345{
1346/*       0       1       2       3       4       5       6       7 */
1347/*       8       9       A       B       C       D       E       F */
1348    0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x20AC, 0x00A5, 0x0160, 0x00A7, /* 0xA0 */
1349    0x0161, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, /* 0xA0 */
1350    0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x017D, 0x00B5, 0x00B6, 0x00B7, /* 0xB0 */
1351    0x017E, 0x00B9, 0x00BA, 0x00BB, 0x0152, 0x0153, 0x0178, 0x00BF, /* 0xB0 */
1352    0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, /* 0xC0 */
1353    0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, /* 0xC0 */
1354    0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, /* 0xD0 */
1355    0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF, /* 0xD0 */
1356    0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, /* 0xE0 */
1357    0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, /* 0xE0 */
1358    0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, /* 0xF0 */
1359    0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF  /* 0xF0 */
1360};
1361
1362/* ----------------------------------------------------------------------- */
1363
1364#define ISO885915CHAR_START             0x00A0
1365#define ISO885915CHAR_END               0x00FF
1366static sal_uChar const aImplISO885915ToCharTab[ISO885915CHAR_END - ISO885915CHAR_START + 1] =
1367{
1368/*     0     1     2     3     4     5     6     7 */
1369/*     8     9     A     B     C     D     E     F */
1370    0xA0, 0xA1, 0xA2, 0xA3,    0, 0xA5,    0, 0xA7, /* 0x00A0 */
1371       0, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, /* 0x00A0 */
1372    0xB0, 0xB1, 0xB2, 0xB3,    0, 0xB5, 0xB6, 0xB7, /* 0x00B0 */
1373       0, 0xB9, 0xBA, 0xBB,    0,    0,    0, 0xBF, /* 0x00B0 */
1374    0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, /* 0x00C0 */
1375    0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, /* 0x00C0 */
1376    0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, /* 0x00D0 */
1377    0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, /* 0x00D0 */
1378    0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, /* 0x00E0 */
1379    0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, /* 0x00E0 */
1380    0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, /* 0x00F0 */
1381    0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF  /* 0x00F0 */
1382};
1383
1384/* ----------------------------------------------------------------------- */
1385
1386#define ISO885915TOCHARTABEX_COUNT      8
1387static ImplUniCharTabData const aImplISO885915ToCharTabEx[ISO885915TOCHARTABEX_COUNT] =
1388{
1389  { 0x0152, 0xBC, 0 },
1390  { 0x0153, 0xBD, 0 },
1391  { 0x0160, 0xA6, 0 },
1392  { 0x0161, 0xA8, 0 },
1393  { 0x0178, 0xBE, 0 },
1394  { 0x017D, 0xB4, 0 },
1395  { 0x017E, 0xB8, 0 },
1396  { 0x20AC, 0xA4, 0 }
1397};
1398
1399/* ----------------------------------------------------------------------- */
1400
1401static ImplByteConvertData const aImplISO885915ByteCvtData =
1402{
1403    aImplISO885915ToUniTab,
1404    aImpl8090SameToUniTab,
1405    ISO885915UNI_START, ISO885915UNI_END,
1406    SAME8090UNI_START, SAME8090UNI_END,
1407    aImplISO885915ToCharTab,
1408    aImpl8090SameToCharTab,
1409    aImplISO885915ToCharTabEx,
1410    ISO885915CHAR_START, ISO885915CHAR_END,
1411    SAME8090CHAR_START, SAME8090CHAR_END,
1412    ISO885915TOCHARTABEX_COUNT
1413};
1414
1415/* ----------------------------------------------------------------------- */
1416
1417static ImplTextEncodingData const aImplISO885915TextEncodingData
1418    = { { &aImplISO885915ByteCvtData,
1419          ImplCharToUnicode,
1420          ImplUnicodeToChar,
1421          NULL,
1422          NULL,
1423          NULL,
1424          NULL,
1425          NULL,
1426          NULL },
1427        1,
1428        1,
1429        1,
1430        0,
1431        "iso8859-15",
1432        "iso-8859-15",
1433        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
1434    /* SCRIPT_LATIN, pc code page 850 */
1435
1436/* ======================================================================= */
1437
1438/* APPLE-Iceland */
1439/* Apple CharSet for Iceland */
1440/* 1-Byte, 0x00-0x7F ASCII, jedoch eigentich Sonderzeichen zwischen 0x00-0x1F */
1441/* die wir aber nicht beruecksichtigen */
1442/* Convert-Tables: mappings/vendors/apple/iceland.txt from 02/05/98 */
1443/* Last-Changes from us: */
1444
1445#define APPLEICELANDUNI_START           0x80
1446#define APPLEICELANDUNI_END             0xFF
1447static sal_uInt16 const aImplAPPLEICELANDToUniTab[APPLEICELANDUNI_END - APPLEICELANDUNI_START + 1] =
1448{
1449/*       0       1       2       3       4       5       6       7 */
1450/*       8       9       A       B       C       D       E       F */
1451    0x00C4, 0x00C5, 0x00C7, 0x00C9, 0x00D1, 0x00D6, 0x00DC, 0x00E1, /* 0x80 */
1452    0x00E0, 0x00E2, 0x00E4, 0x00E3, 0x00E5, 0x00E7, 0x00E9, 0x00E8, /* 0x80 */
1453    0x00EA, 0x00EB, 0x00ED, 0x00EC, 0x00EE, 0x00EF, 0x00F1, 0x00F3, /* 0x90 */
1454    0x00F2, 0x00F4, 0x00F6, 0x00F5, 0x00FA, 0x00F9, 0x00FB, 0x00FC, /* 0x90 */
1455    0x00DD, 0x00B0, 0x00A2, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x00DF, /* 0xA0 */
1456    0x00AE, 0x00A9, 0x2122, 0x00B4, 0x00A8, 0x2260, 0x00C6, 0x00D8, /* 0xA0 */
1457    0x221E, 0x00B1, 0x2264, 0x2265, 0x00A5, 0x00B5, 0x2202, 0x2211, /* 0xB0 */
1458    0x220F, 0x03C0, 0x222B, 0x00AA, 0x00BA, 0x03A9, 0x00E6, 0x00F8, /* 0xB0 */
1459    0x00BF, 0x00A1, 0x00AC, 0x221A, 0x0192, 0x2248, 0x2206, 0x00AB, /* 0xC0 */
1460    0x00BB, 0x2026, 0x00A0, 0x00C0, 0x00C3, 0x00D5, 0x0152, 0x0153, /* 0xC0 */
1461    0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x25CA, /* 0xD0 */
1462    0x00FF, 0x0178, 0x2044, 0x00A4, 0x00D0, 0x00F0, 0x00DE, 0x00FE, /* 0xD0 */
1463    0x00FD, 0x00B7, 0x201A, 0x201E, 0x2030, 0x00C2, 0x00CA, 0x00C1, /* 0xE0 */
1464    0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF, 0x00CC, 0x00D3, 0x00D4, /* 0xE0 */
1465    0xF8FF, 0x00D2, 0x00DA, 0x00DB, 0x00D9, 0x0131, 0x02C6, 0x02DC, /* 0xF0 */
1466    0x00AF, 0x02D8, 0x02D9, 0x02DA, 0x00B8, 0x02DD, 0x02DB, 0x02C7  /* 0xF0 */
1467};
1468
1469/* ----------------------------------------------------------------------- */
1470
1471#define APPLEICELANDCHAR_START          0x00A0
1472#define APPLEICELANDCHAR_END            0x00FF
1473static sal_uChar const aImplAPPLEICELANDToCharTab[APPLEICELANDCHAR_END - APPLEICELANDCHAR_START + 1] =
1474{
1475/*     0     1     2     3     4     5     6     7 */
1476/*     8     9     A     B     C     D     E     F */
1477    0xCA, 0xC1, 0xA2, 0xA3, 0xDB, 0xB4,    0, 0xA4, /* 0x00A0 */
1478    0xAC, 0xA9, 0xBB, 0xC7, 0xC2,    0, 0xA8, 0xF8, /* 0x00A0 */
1479    0xA1, 0xB1,    0,    0, 0xAB, 0xB5, 0xA6, 0xE1, /* 0x00B0 */
1480    0xFC,    0, 0xBC, 0xC8,    0,    0,    0, 0xC0, /* 0x00B0 */
1481    0xCB, 0xE7, 0xE5, 0xCC, 0x80, 0x81, 0xAE, 0x82, /* 0x00C0 */
1482    0xE9, 0x83, 0xE6, 0xE8, 0xED, 0xEA, 0xEB, 0xEC, /* 0x00C0 */
1483    0xDC, 0x84, 0xF1, 0xEE, 0xEF, 0xCD, 0x85,    0, /* 0x00D0 */
1484    0xAF, 0xF4, 0xF2, 0xF3, 0x86, 0xA0, 0xDE, 0xA7, /* 0x00D0 */
1485    0x88, 0x87, 0x89, 0x8B, 0x8A, 0x8C, 0xBE, 0x8D, /* 0x00E0 */
1486    0x8F, 0x8E, 0x90, 0x91, 0x93, 0x92, 0x94, 0x95, /* 0x00E0 */
1487    0xDD, 0x96, 0x98, 0x97, 0x99, 0x9B, 0x9A, 0xD6, /* 0x00F0 */
1488    0xBF, 0x9D, 0x9C, 0x9E, 0x9F, 0xE0, 0xDF, 0xD8  /* 0x00F0 */
1489};
1490
1491/* ----------------------------------------------------------------------- */
1492
1493#define APPLEICELANDTOCHARTABEX_COUNT   41
1494static ImplUniCharTabData const aImplAPPLEICELANDToCharTabEx[APPLEICELANDTOCHARTABEX_COUNT] =
1495{
1496  { 0x0131, 0xF5, 0 },
1497  { 0x0152, 0xCE, 0 },
1498  { 0x0153, 0xCF, 0 },
1499  { 0x0178, 0xD9, 0 },
1500  { 0x0192, 0xC4, 0 },
1501  { 0x02C6, 0xF6, 0 },
1502  { 0x02C7, 0xFF, 0 },
1503  { 0x02D8, 0xF9, 0 },
1504  { 0x02D9, 0xFA, 0 },
1505  { 0x02DA, 0xFB, 0 },
1506  { 0x02DB, 0xFE, 0 },
1507  { 0x02DC, 0xF7, 0 },
1508  { 0x02DD, 0xFD, 0 },
1509  { 0x03A9, 0xBD, 0 },
1510  { 0x03C0, 0xB9, 0 },
1511  { 0x2013, 0xD0, 0 },
1512  { 0x2014, 0xD1, 0 },
1513  { 0x2018, 0xD4, 0 },
1514  { 0x2019, 0xD5, 0 },
1515  { 0x201A, 0xE2, 0 },
1516  { 0x201C, 0xD2, 0 },
1517  { 0x201D, 0xD3, 0 },
1518  { 0x201E, 0xE3, 0 },
1519  { 0x2022, 0xA5, 0 },
1520  { 0x2026, 0xC9, 0 },
1521  { 0x2030, 0xE4, 0 },
1522  { 0x2044, 0xDA, 0 },
1523  { 0x2122, 0xAA, 0 },
1524  { 0x2202, 0xB6, 0 },
1525  { 0x2206, 0xC6, 0 },
1526  { 0x220F, 0xB8, 0 },
1527  { 0x2211, 0xB7, 0 },
1528  { 0x221A, 0xC3, 0 },
1529  { 0x221E, 0xB0, 0 },
1530  { 0x222B, 0xBA, 0 },
1531  { 0x2248, 0xC5, 0 },
1532  { 0x2260, 0xAD, 0 },
1533  { 0x2264, 0xB2, 0 },
1534  { 0x2265, 0xB3, 0 },
1535  { 0x25CA, 0xD7, 0 },
1536  { 0xF8FF, 0xF0, 0 }
1537};
1538
1539/* ----------------------------------------------------------------------- */
1540
1541static ImplByteConvertData const aImplAPPLEICELANDByteCvtData =
1542{
1543    aImplAPPLEICELANDToUniTab,
1544    NULL,
1545    APPLEICELANDUNI_START, APPLEICELANDUNI_END,
1546    NOTABUNI_START, NOTABUNI_END,
1547    aImplAPPLEICELANDToCharTab,
1548    NULL,
1549    aImplAPPLEICELANDToCharTabEx,
1550    APPLEICELANDCHAR_START, APPLEICELANDCHAR_END,
1551    NOTABCHAR_START, NOTABCHAR_END,
1552    APPLEICELANDTOCHARTABEX_COUNT
1553};
1554
1555/* ----------------------------------------------------------------------- */
1556
1557static ImplTextEncodingData const aImplAPPLEICELANDTextEncodingData
1558    = { { &aImplAPPLEICELANDByteCvtData,
1559          ImplCharToUnicode,
1560          ImplUnicodeToChar,
1561          NULL,
1562          NULL,
1563          NULL,
1564          NULL,
1565          NULL,
1566          NULL },
1567        1,
1568        1,
1569        1,
1570        0,
1571        "iso8859-1",
1572        "iso-8859-1",
1573        RTL_TEXTENCODING_INFO_ASCII };
1574    /* MAC, SCRIPT_LATIN, pc code page 861, mac encoding 37 */
1575
1576/* ======================================================================= */
1577
1578/* APPLE-Roman */
1579/* Standard Apple CharSet for Western */
1580/* 1-Byte, 0x00-0x7F ASCII, jedoch eigentich Sonderzeichen zwischen 0x00-0x1F */
1581/* die wir aber nicht beruecksichtigen */
1582/* Convert-Tables: mappings/vendors/apple/roman.txt from 08/18/98 */
1583/* Last-Changes from us: */
1584
1585#define APPLEROMANUNI_START             0x80
1586#define APPLEROMANUNI_END               0xFF
1587static sal_uInt16 const aImplAPPLEROMANToUniTab[APPLEROMANUNI_END - APPLEROMANUNI_START + 1] =
1588{
1589/*       0       1       2       3       4       5       6       7 */
1590/*       8       9       A       B       C       D       E       F */
1591    0x00C4, 0x00C5, 0x00C7, 0x00C9, 0x00D1, 0x00D6, 0x00DC, 0x00E1, /* 0x80 */
1592    0x00E0, 0x00E2, 0x00E4, 0x00E3, 0x00E5, 0x00E7, 0x00E9, 0x00E8, /* 0x80 */
1593    0x00EA, 0x00EB, 0x00ED, 0x00EC, 0x00EE, 0x00EF, 0x00F1, 0x00F3, /* 0x90 */
1594    0x00F2, 0x00F4, 0x00F6, 0x00F5, 0x00FA, 0x00F9, 0x00FB, 0x00FC, /* 0x90 */
1595    0x2020, 0x00B0, 0x00A2, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x00DF, /* 0xA0 */
1596    0x00AE, 0x00A9, 0x2122, 0x00B4, 0x00A8, 0x2260, 0x00C6, 0x00D8, /* 0xA0 */
1597    0x221E, 0x00B1, 0x2264, 0x2265, 0x00A5, 0x00B5, 0x2202, 0x2211, /* 0xB0 */
1598    0x220F, 0x03C0, 0x222B, 0x00AA, 0x00BA, 0x03A9, 0x00E6, 0x00F8, /* 0xB0 */
1599    0x00BF, 0x00A1, 0x00AC, 0x221A, 0x0192, 0x2248, 0x2206, 0x00AB, /* 0xC0 */
1600    0x00BB, 0x2026, 0x00A0, 0x00C0, 0x00C3, 0x00D5, 0x0152, 0x0153, /* 0xC0 */
1601    0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x25CA, /* 0xD0 */
1602    0x00FF, 0x0178, 0x2044, 0x20AC, 0x2039, 0x203A, 0xFB01, 0xFB02, /* 0xD0 */
1603    0x2021, 0x00B7, 0x201A, 0x201E, 0x2030, 0x00C2, 0x00CA, 0x00C1, /* 0xE0 */
1604    0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF, 0x00CC, 0x00D3, 0x00D4, /* 0xE0 */
1605    0xF8FF, 0x00D2, 0x00DA, 0x00DB, 0x00D9, 0x0131, 0x02C6, 0x02DC, /* 0xF0 */
1606    0x00AF, 0x02D8, 0x02D9, 0x02DA, 0x00B8, 0x02DD, 0x02DB, 0x02C7  /* 0xF0 */
1607};
1608
1609/* ----------------------------------------------------------------------- */
1610
1611#define APPLEROMANCHAR_START            0x00A0
1612#define APPLEROMANCHAR_END              0x00FF
1613static sal_uChar const aImplAPPLEROMANToCharTab[APPLEROMANCHAR_END - APPLEROMANCHAR_START + 1] =
1614{
1615/*     0     1     2     3     4     5     6     7 */
1616/*     8     9     A     B     C     D     E     F */
1617    0xCA, 0xC1, 0xA2, 0xA3,    0, 0xB4,    0, 0xA4, /* 0x00A0 */
1618    0xAC, 0xA9, 0xBB, 0xC7, 0xC2,    0, 0xA8, 0xF8, /* 0x00A0 */
1619    0xA1, 0xB1,    0,    0, 0xAB, 0xB5, 0xA6, 0xE1, /* 0x00B0 */
1620    0xFC,    0, 0xBC, 0xC8,    0,    0,    0, 0xC0, /* 0x00B0 */
1621    0xCB, 0xE7, 0xE5, 0xCC, 0x80, 0x81, 0xAE, 0x82, /* 0x00C0 */
1622    0xE9, 0x83, 0xE6, 0xE8, 0xED, 0xEA, 0xEB, 0xEC, /* 0x00C0 */
1623       0, 0x84, 0xF1, 0xEE, 0xEF, 0xCD, 0x85,    0, /* 0x00D0 */
1624    0xAF, 0xF4, 0xF2, 0xF3, 0x86,    0,    0, 0xA7, /* 0x00D0 */
1625    0x88, 0x87, 0x89, 0x8B, 0x8A, 0x8C, 0xBE, 0x8D, /* 0x00E0 */
1626    0x8F, 0x8E, 0x90, 0x91, 0x93, 0x92, 0x94, 0x95, /* 0x00E0 */
1627       0, 0x96, 0x98, 0x97, 0x99, 0x9B, 0x9A, 0xD6, /* 0x00F0 */
1628    0xBF, 0x9D, 0x9C, 0x9E, 0x9F,    0,    0, 0xD8  /* 0x00F0 */
1629};
1630
1631/* ----------------------------------------------------------------------- */
1632
1633#define APPLEROMANTOCHARTABEX_COUNT     48
1634static ImplUniCharTabData const aImplAPPLEROMANToCharTabEx[APPLEROMANTOCHARTABEX_COUNT] =
1635{
1636  { 0x0131, 0xF5, 0 },
1637  { 0x0152, 0xCE, 0 },
1638  { 0x0153, 0xCF, 0 },
1639  { 0x0178, 0xD9, 0 },
1640  { 0x0192, 0xC4, 0 },
1641  { 0x02C6, 0xF6, 0 },
1642  { 0x02C7, 0xFF, 0 },
1643  { 0x02D8, 0xF9, 0 },
1644  { 0x02D9, 0xFA, 0 },
1645  { 0x02DA, 0xFB, 0 },
1646  { 0x02DB, 0xFE, 0 },
1647  { 0x02DC, 0xF7, 0 },
1648  { 0x02DD, 0xFD, 0 },
1649  { 0x03A9, 0xBD, 0 },
1650  { 0x03C0, 0xB9, 0 },
1651  { 0x2013, 0xD0, 0 },
1652  { 0x2014, 0xD1, 0 },
1653  { 0x2018, 0xD4, 0 },
1654  { 0x2019, 0xD5, 0 },
1655  { 0x201A, 0xE2, 0 },
1656  { 0x201C, 0xD2, 0 },
1657  { 0x201D, 0xD3, 0 },
1658  { 0x201E, 0xE3, 0 },
1659  { 0x2020, 0xA0, 0 },
1660  { 0x2021, 0xE0, 0 },
1661  { 0x2022, 0xA5, 0 },
1662  { 0x2026, 0xC9, 0 },
1663  { 0x2030, 0xE4, 0 },
1664  { 0x2039, 0xDC, 0 },
1665  { 0x203A, 0xDD, 0 },
1666  { 0x2044, 0xDA, 0 },
1667  { 0x20AC, 0xDB, 0 },
1668  { 0x2122, 0xAA, 0 },
1669  { 0x2202, 0xB6, 0 },
1670  { 0x2206, 0xC6, 0 },
1671  { 0x220F, 0xB8, 0 },
1672  { 0x2211, 0xB7, 0 },
1673  { 0x221A, 0xC3, 0 },
1674  { 0x221E, 0xB0, 0 },
1675  { 0x222B, 0xBA, 0 },
1676  { 0x2248, 0xC5, 0 },
1677  { 0x2260, 0xAD, 0 },
1678  { 0x2264, 0xB2, 0 },
1679  { 0x2265, 0xB3, 0 },
1680  { 0x25CA, 0xD7, 0 },
1681  { 0xF8FF, 0xF0, 0 },
1682  { 0xFB01, 0xDE, 0 },
1683  { 0xFB02, 0xDF, 0 }
1684};
1685
1686/* ----------------------------------------------------------------------- */
1687
1688static ImplByteConvertData const aImplAPPLEROMANByteCvtData =
1689{
1690    aImplAPPLEROMANToUniTab,
1691    NULL,
1692    APPLEROMANUNI_START, APPLEROMANUNI_END,
1693    NOTABUNI_START, NOTABUNI_END,
1694    aImplAPPLEROMANToCharTab,
1695    NULL,
1696    aImplAPPLEROMANToCharTabEx,
1697    APPLEROMANCHAR_START, APPLEROMANCHAR_END,
1698    NOTABCHAR_START, NOTABCHAR_END,
1699    APPLEROMANTOCHARTABEX_COUNT
1700};
1701
1702/* ----------------------------------------------------------------------- */
1703
1704static ImplTextEncodingData const aImplAPPLEROMANTextEncodingData
1705    = { { &aImplAPPLEROMANByteCvtData,
1706          ImplCharToUnicode,
1707          ImplUnicodeToChar,
1708          NULL,
1709          NULL,
1710          NULL,
1711          NULL,
1712          NULL,
1713          NULL },
1714        1,
1715        1,
1716        1,
1717        77,
1718        "iso8859-1",
1719        "macintosh",
1720        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
1721    /* MAC, SCRIPT_LATIN, pc code page 850 */
1722
1723/* ======================================================================= */
1724
1725/* US-ASCII */
1726/* 7-Bit ASCII */
1727/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
1728/* For the import we use ISO-8859-1 with MS extension (MS-1252), because */
1729/* when the 8-Bit is set, the chance, that this is a ISO-8859-1 character */
1730/* is the greatest. For the export all chars greater than 127 are not */
1731/* converted and are replaced by the replacement character. */
1732/* Last-Changes from us: */
1733
1734/* ----------------------------------------------------------------------- */
1735
1736static ImplByteConvertData const aImplUSASCIIByteCvtData =
1737{
1738    aImplMS1252ToUniTab,
1739    NULL,
1740    MS1252UNI_START, MS1252UNI_END,
1741    NOTABUNI_START, NOTABUNI_END,
1742    NULL,
1743    NULL,
1744    NULL,
1745    NOTABCHAR_START, NOTABCHAR_END,
1746    NOTABCHAR_START, NOTABCHAR_END,
1747    0
1748};
1749
1750/* ----------------------------------------------------------------------- */
1751
1752static ImplTextEncodingData const aImplUSASCIITextEncodingData
1753    = { { &aImplUSASCIIByteCvtData,
1754          ImplCharToUnicode,
1755          ImplUnicodeToChar,
1756          NULL,
1757          NULL,
1758          NULL,
1759          NULL,
1760          NULL,
1761          NULL },
1762        1,
1763        1,
1764        1,
1765        0,
1766        "iso8859-1",
1767        "us-ascii",
1768        RTL_TEXTENCODING_INFO_ASCII
1769            | RTL_TEXTENCODING_INFO_7BIT
1770            | RTL_TEXTENCODING_INFO_MIME };
1771    /* SCRIPT_LATIN, pc code page 437 */
1772