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