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