bump product version to 5.0.4.1
[LibreOffice.git] / sal / textenc / tcvtlat1.tab
blobb8a396652f6dc4bd3114078d18a91e14e8452486
1 /*
2  * This file is part of the LibreOffice project.
3  *
4  * This Source Code Form is subject to the terms of the Mozilla Public
5  * License, v. 2.0. If a copy of the MPL was not distributed with this
6  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
7  *
8  * This file incorporates work covered by the following license notice:
9  *
10  *   Licensed to the Apache Software Foundation (ASF) under one or more
11  *   contributor license agreements. See the NOTICE file distributed
12  *   with this work for additional information regarding copyright
13  *   ownership. The ASF licenses this file to you under the Apache
14  *   License, Version 2.0 (the "License"); you may not use this file
15  *   except in compliance with the License. You may obtain a copy of
16  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
17  */
19 #include "sal/config.h"
21 #include "convertsimple.hxx"
22 #include "tcvtbyte.hxx"
23 #include "tenchelp.hxx"
25 /* ======================================================================= */
27 /* This file contain the tables for all 1 byte charsets, for the */
28 /* following scripts: latin, iceland, nordic */
30 /* ======================================================================= */
32 /* IBM-437 */
33 /* Dos Latin US - Standard CharSet for Western Script */
34 /* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
35 /* Convert-Tables: mappings/vendors/micsft/pc/cp437.txt from 04/24/96 Version 2.00 */
36 /* Last-Changes from us: */
38 /* ----------------------------------------------------------------------- */
40 #define IBM437UNI_START                 0x80
41 #define IBM437UNI_END                   0xFF
42 static sal_uInt16 const aImplIBM437ToUniTab[IBM437UNI_END - IBM437UNI_START + 1] =
44 /*       0       1       2       3       4       5       6       7 */
45 /*       8       9       A       B       C       D       E       F */
46     0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7, /* 0x80 */
47     0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5, /* 0x80 */
48     0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9, /* 0x90 */
49     0x00FF, 0x00D6, 0x00DC, 0x00A2, 0x00A3, 0x00A5, 0x20A7, 0x0192, /* 0x90 */
50     0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA, /* 0xA0 */
51     0x00BF, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, /* 0xA0 */
52     0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, /* 0xB0 */
53     0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, /* 0xB0 */
54     0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, /* 0xC0 */
55     0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, /* 0xC0 */
56     0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, /* 0xD0 */
57     0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, /* 0xD0 */
58     0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, /* 0xE0 */
59     0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, /* 0xE0 */
60     0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, /* 0xF0 */
61     0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0  /* 0xF0 */
64 /* ----------------------------------------------------------------------- */
66 #define IBM437CHAR_START                0x00A0
67 #define IBM437CHAR_END                  0x00FF
68 static unsigned char const aImplIBM437ToCharTab[IBM437CHAR_END - IBM437CHAR_START + 1] =
70 /*     0     1     2     3     4     5     6     7 */
71 /*     8     9     A     B     C     D     E     F */
72     0xFF, 0xAD, 0x9B, 0x9C,    0, 0x9D,    0,    0, /* 0x00A0 */
73        0,    0, 0xA6, 0xAE, 0xAA,    0,    0,    0, /* 0x00A0 */
74     0xF8, 0xF1, 0xFD,    0,    0, 0xE6,    0, 0xFA, /* 0x00B0 */
75        0,    0, 0xA7, 0xAF, 0xAC, 0xAB,    0, 0xA8, /* 0x00B0 */
76        0,    0,    0,    0, 0x8E, 0x8F, 0x92, 0x80, /* 0x00C0 */
77        0, 0x90,    0,    0,    0,    0,    0,    0, /* 0x00C0 */
78        0, 0xA5,    0,    0,    0,    0, 0x99,    0, /* 0x00D0 */
79        0,    0,    0,    0, 0x9A,    0,    0, 0xE1, /* 0x00D0 */
80     0x85, 0xA0, 0x83,    0, 0x84, 0x86, 0x91, 0x87, /* 0x00E0 */
81     0x8A, 0x82, 0x88, 0x89, 0x8D, 0xA1, 0x8C, 0x8B, /* 0x00E0 */
82        0, 0xA4, 0x95, 0xA2, 0x93,    0, 0x94, 0xF6, /* 0x00F0 */
83        0, 0x97, 0xA3, 0x96, 0x81,    0,    0, 0x98  /* 0x00F0 */
86 /* ----------------------------------------------------------------------- */
88 #define IBM437TOCHARTABEX_COUNT         75
89 static ImplUniCharTabData const aImplIBM437ToCharTabEx[IBM437TOCHARTABEX_COUNT] =
91   { 0x0192, 0x9F, 0 },
92   { 0x0393, 0xE2, 0 },
93   { 0x0398, 0xE9, 0 },
94   { 0x03A3, 0xE4, 0 },
95   { 0x03A6, 0xE8, 0 },
96   { 0x03A9, 0xEA, 0 },
97   { 0x03B1, 0xE0, 0 },
98   { 0x03B4, 0xEB, 0 },
99   { 0x03B5, 0xEE, 0 },
100   { 0x03C0, 0xE3, 0 },
101   { 0x03C3, 0xE5, 0 },
102   { 0x03C4, 0xE7, 0 },
103   { 0x03C6, 0xED, 0 },
104   { 0x207F, 0xFC, 0 },
105   { 0x20A7, 0x9E, 0 },
106   { 0x2219, 0xF9, 0 },
107   { 0x221A, 0xFB, 0 },
108   { 0x221E, 0xEC, 0 },
109   { 0x2229, 0xEF, 0 },
110   { 0x2248, 0xF7, 0 },
111   { 0x2261, 0xF0, 0 },
112   { 0x2264, 0xF3, 0 },
113   { 0x2265, 0xF2, 0 },
114   { 0x2310, 0xA9, 0 },
115   { 0x2320, 0xF4, 0 },
116   { 0x2321, 0xF5, 0 },
117   { 0x2500, 0xC4, 0 },
118   { 0x2502, 0xB3, 0 },
119   { 0x250C, 0xDA, 0 },
120   { 0x2510, 0xBF, 0 },
121   { 0x2514, 0xC0, 0 },
122   { 0x2518, 0xD9, 0 },
123   { 0x251C, 0xC3, 0 },
124   { 0x2524, 0xB4, 0 },
125   { 0x252C, 0xC2, 0 },
126   { 0x2534, 0xC1, 0 },
127   { 0x253C, 0xC5, 0 },
128   { 0x2550, 0xCD, 0 },
129   { 0x2551, 0xBA, 0 },
130   { 0x2552, 0xD5, 0 },
131   { 0x2553, 0xD6, 0 },
132   { 0x2554, 0xC9, 0 },
133   { 0x2555, 0xB8, 0 },
134   { 0x2556, 0xB7, 0 },
135   { 0x2557, 0xBB, 0 },
136   { 0x2558, 0xD4, 0 },
137   { 0x2559, 0xD3, 0 },
138   { 0x255A, 0xC8, 0 },
139   { 0x255B, 0xBE, 0 },
140   { 0x255C, 0xBD, 0 },
141   { 0x255D, 0xBC, 0 },
142   { 0x255E, 0xC6, 0 },
143   { 0x255F, 0xC7, 0 },
144   { 0x2560, 0xCC, 0 },
145   { 0x2561, 0xB5, 0 },
146   { 0x2562, 0xB6, 0 },
147   { 0x2563, 0xB9, 0 },
148   { 0x2564, 0xD1, 0 },
149   { 0x2565, 0xD2, 0 },
150   { 0x2566, 0xCB, 0 },
151   { 0x2567, 0xCF, 0 },
152   { 0x2568, 0xD0, 0 },
153   { 0x2569, 0xCA, 0 },
154   { 0x256A, 0xD8, 0 },
155   { 0x256B, 0xD7, 0 },
156   { 0x256C, 0xCE, 0 },
157   { 0x2580, 0xDF, 0 },
158   { 0x2584, 0xDC, 0 },
159   { 0x2588, 0xDB, 0 },
160   { 0x258C, 0xDD, 0 },
161   { 0x2590, 0xDE, 0 },
162   { 0x2591, 0xB0, 0 },
163   { 0x2592, 0xB1, 0 },
164   { 0x2593, 0xB2, 0 },
165   { 0x25A0, 0xFE, 0 }
168 /* ----------------------------------------------------------------------- */
170 static ImplByteConvertData const aImplIBM437ByteCvtData =
172     aImplIBM437ToUniTab,
173     NULL,
174     IBM437UNI_START, IBM437UNI_END,
175     NOTABUNI_START, NOTABUNI_END,
176     aImplIBM437ToCharTab,
177     NULL,
178     aImplIBM437ToCharTabEx,
179     IBM437CHAR_START, IBM437CHAR_END,
180     NOTABCHAR_START, NOTABCHAR_END,
181     IBM437TOCHARTABEX_COUNT
184 /* ----------------------------------------------------------------------- */
186 static ImplTextEncodingData const aImplIBM437TextEncodingData
187     = { { &aImplIBM437ByteCvtData,
188           ImplUpperCharToUnicode,
189           sal::detail::textenc::convertUnicodeToChar,
190           NULL,
191           NULL,
192           NULL,
193           NULL,
194           NULL,
195           NULL },
196         1,
197         1,
198         1,
199         0,
200         "iso8859-1",
201         "ibm437",
202         RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
203     /* DOS/OS2, SCRIPT_LATIN, pc code page 437 */
205 /* ======================================================================= */
207 /* IBM-850 */
208 /* Dos Standard CharSet for Western/Europa */
209 /* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
210 /* Convert-Tables: mappings/vendors/micsft/pc/cp850.txt from 04/24/96 Version 2.00 */
211 /* Last-Changes from us: */
212 /* D5 - geaendert auf EURO SIGN and 0x20AC added to D5 */
214 /* ----------------------------------------------------------------------- */
216 #define IBM850UNI_START                 0x80
217 #define IBM850UNI_END                   0xFF
218 static sal_uInt16 const aImplIBM850ToUniTab[IBM850UNI_END - IBM850UNI_START + 1] =
220 /*       0       1       2       3       4       5       6       7 */
221 /*       8       9       A       B       C       D       E       F */
222     0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7, /* 0x80 */
223     0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5, /* 0x80 */
224     0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9, /* 0x90 */
225     0x00FF, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x00D7, 0x0192, /* 0x90 */
226     0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA, /* 0xA0 */
227     0x00BF, 0x00AE, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, /* 0xA0 */
228     0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00C1, 0x00C2, 0x00C0, /* 0xB0 */
229     0x00A9, 0x2563, 0x2551, 0x2557, 0x255D, 0x00A2, 0x00A5, 0x2510, /* 0xB0 */
230     0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x00E3, 0x00C3, /* 0xC0 */
231     0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x00A4, /* 0xC0 */
232     0x00F0, 0x00D0, 0x00CA, 0x00CB, 0x00C8, 0x20AC, 0x00CD, 0x00CE, /* 0xD0 */
233     0x00CF, 0x2518, 0x250C, 0x2588, 0x2584, 0x00A6, 0x00CC, 0x2580, /* 0xD0 */
234     0x00D3, 0x00DF, 0x00D4, 0x00D2, 0x00F5, 0x00D5, 0x00B5, 0x00FE, /* 0xE0 */
235     0x00DE, 0x00DA, 0x00DB, 0x00D9, 0x00FD, 0x00DD, 0x00AF, 0x00B4, /* 0xE0 */
236     0x00AD, 0x00B1, 0x2017, 0x00BE, 0x00B6, 0x00A7, 0x00F7, 0x00B8, /* 0xF0 */
237     0x00B0, 0x00A8, 0x00B7, 0x00B9, 0x00B3, 0x00B2, 0x25A0, 0x00A0  /* 0xF0 */
240 /* ----------------------------------------------------------------------- */
242 #define IBM850CHAR_START                0x00A0
243 #define IBM850CHAR_END                  0x00FF
244 static unsigned char const aImplIBM850ToCharTab[IBM850CHAR_END - IBM850CHAR_START + 1] =
246 /*     0     1     2     3     4     5     6     7 */
247 /*     8     9     A     B     C     D     E     F */
248     0xFF, 0xAD, 0xBD, 0x9C, 0xCF, 0xBE, 0xDD, 0xF5, /* 0x00A0 */
249     0xF9, 0xB8, 0xA6, 0xAE, 0xAA, 0xF0, 0xA9, 0xEE, /* 0x00A0 */
250     0xF8, 0xF1, 0xFD, 0xFC, 0xEF, 0xE6, 0xF4, 0xFA, /* 0x00B0 */
251     0xF7, 0xFB, 0xA7, 0xAF, 0xAC, 0xAB, 0xF3, 0xA8, /* 0x00B0 */
252     0xB7, 0xB5, 0xB6, 0xC7, 0x8E, 0x8F, 0x92, 0x80, /* 0x00C0 */
253     0xD4, 0x90, 0xD2, 0xD3, 0xDE, 0xD6, 0xD7, 0xD8, /* 0x00C0 */
254     0xD1, 0xA5, 0xE3, 0xE0, 0xE2, 0xE5, 0x99, 0x9E, /* 0x00D0 */
255     0x9D, 0xEB, 0xE9, 0xEA, 0x9A, 0xED, 0xE8, 0xE1, /* 0x00D0 */
256     0x85, 0xA0, 0x83, 0xC6, 0x84, 0x86, 0x91, 0x87, /* 0x00E0 */
257     0x8A, 0x82, 0x88, 0x89, 0x8D, 0xA1, 0x8C, 0x8B, /* 0x00E0 */
258     0xD0, 0xA4, 0x95, 0xA2, 0x93, 0xE4, 0x94, 0xF6, /* 0x00F0 */
259     0x9B, 0x97, 0xA3, 0x96, 0x81, 0xEC, 0xE7, 0x98  /* 0x00F0 */
262 /* ----------------------------------------------------------------------- */
264 #define IBM850TOCHARTABEX_COUNT         33
265 static ImplUniCharTabData const aImplIBM850ToCharTabEx[IBM850TOCHARTABEX_COUNT] =
267   { 0x0131, 0xD5, 0 },
268   { 0x0192, 0x9F, 0 },
269   { 0x2017, 0xF2, 0 },
270   { 0x20AC, 0xD5, 0 },
271   { 0x2500, 0xC4, 0 },
272   { 0x2502, 0xB3, 0 },
273   { 0x250C, 0xDA, 0 },
274   { 0x2510, 0xBF, 0 },
275   { 0x2514, 0xC0, 0 },
276   { 0x2518, 0xD9, 0 },
277   { 0x251C, 0xC3, 0 },
278   { 0x2524, 0xB4, 0 },
279   { 0x252C, 0xC2, 0 },
280   { 0x2534, 0xC1, 0 },
281   { 0x253C, 0xC5, 0 },
282   { 0x2550, 0xCD, 0 },
283   { 0x2551, 0xBA, 0 },
284   { 0x2554, 0xC9, 0 },
285   { 0x2557, 0xBB, 0 },
286   { 0x255A, 0xC8, 0 },
287   { 0x255D, 0xBC, 0 },
288   { 0x2560, 0xCC, 0 },
289   { 0x2563, 0xB9, 0 },
290   { 0x2566, 0xCB, 0 },
291   { 0x2569, 0xCA, 0 },
292   { 0x256C, 0xCE, 0 },
293   { 0x2580, 0xDF, 0 },
294   { 0x2584, 0xDC, 0 },
295   { 0x2588, 0xDB, 0 },
296   { 0x2591, 0xB0, 0 },
297   { 0x2592, 0xB1, 0 },
298   { 0x2593, 0xB2, 0 },
299   { 0x25A0, 0xFE, 0 }
302 /* ----------------------------------------------------------------------- */
304 static ImplByteConvertData const aImplIBM850ByteCvtData =
306     aImplIBM850ToUniTab,
307     NULL,
308     IBM850UNI_START, IBM850UNI_END,
309     NOTABUNI_START, NOTABUNI_END,
310     aImplIBM850ToCharTab,
311     NULL,
312     aImplIBM850ToCharTabEx,
313     IBM850CHAR_START, IBM850CHAR_END,
314     NOTABCHAR_START, NOTABCHAR_END,
315     IBM850TOCHARTABEX_COUNT
318 /* ----------------------------------------------------------------------- */
320 static ImplTextEncodingData const aImplIBM850TextEncodingData
321     = { { &aImplIBM850ByteCvtData,
322           ImplUpperCharToUnicode,
323           sal::detail::textenc::convertUnicodeToChar,
324           NULL,
325           NULL,
326           NULL,
327           NULL,
328           NULL,
329           NULL },
330         1,
331         1,
332         1,
333         0,
334         "iso8859-1",
335         "ibm850",
336         RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
337     /* DOS/OS2, SCRIPT_LATIN, pc code page 850 */
339 /* ======================================================================= */
341 /* IBM-860 */
342 /* Dos Standard CharSet for Portugiese */
343 /* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
344 /* Convert-Tables: mappings/vendors/micsft/pc/cp860.txt from 04/24/96 Version 2.00 */
345 /* Last-Changes from us: */
347 /* ----------------------------------------------------------------------- */
349 #define IBM860UNI_START                 0x80
350 #define IBM860UNI_END                   0xFF
351 static sal_uInt16 const aImplIBM860ToUniTab[IBM860UNI_END - IBM860UNI_START + 1] =
353 /*       0       1       2       3       4       5       6       7 */
354 /*       8       9       A       B       C       D       E       F */
355     0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E3, 0x00E0, 0x00C1, 0x00E7, /* 0x80 */
356     0x00EA, 0x00CA, 0x00E8, 0x00CD, 0x00D4, 0x00EC, 0x00C3, 0x00C2, /* 0x80 */
357     0x00C9, 0x00C0, 0x00C8, 0x00F4, 0x00F5, 0x00F2, 0x00DA, 0x00F9, /* 0x90 */
358     0x00CC, 0x00D5, 0x00DC, 0x00A2, 0x00A3, 0x00D9, 0x20A7, 0x00D3, /* 0x90 */
359     0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA, /* 0xA0 */
360     0x00BF, 0x00D2, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, /* 0xA0 */
361     0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, /* 0xB0 */
362     0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, /* 0xB0 */
363     0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, /* 0xC0 */
364     0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, /* 0xC0 */
365     0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, /* 0xD0 */
366     0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, /* 0xD0 */
367     0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, /* 0xE0 */
368     0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, /* 0xE0 */
369     0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, /* 0xF0 */
370     0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0  /* 0xF0 */
373 /* ----------------------------------------------------------------------- */
375 #define IBM860CHAR_START                0x00A0
376 #define IBM860CHAR_END                  0x00FC
377 static unsigned char const aImplIBM860ToCharTab[IBM860CHAR_END - IBM860CHAR_START + 1] =
379 /*     0     1     2     3     4     5     6     7 */
380 /*     8     9     A     B     C     D     E     F */
381     0xFF, 0xAD, 0x9B, 0x9C,    0 ,   0,    0,    0, /* 0x00A0 */
382        0,    0, 0xA6, 0xAE, 0xAA,    0,    0,    0, /* 0x00A0 */
383     0xF8, 0xF1, 0xFD,    0,    0, 0xE6,    0, 0xFA, /* 0x00B0 */
384        0,    0, 0xA7, 0xAF, 0xAC, 0xAB,    0, 0xA8, /* 0x00B0 */
385     0x91, 0x86, 0x8F, 0x8E,    0,    0,    0, 0x80, /* 0x00C0 */
386     0x92, 0x90, 0x89,    0, 0x98, 0x8B,    0,    0, /* 0x00C0 */
387        0, 0xA5, 0xA9, 0x9F, 0x8C, 0x99,    0,    0, /* 0x00D0 */
388        0, 0x9D, 0x96,    0, 0x9A,    0,    0, 0xE1, /* 0x00D0 */
389     0x85, 0xA0, 0x83, 0x84,    0,    0,    0, 0x87, /* 0x00E0 */
390     0x8A, 0x82, 0x88,    0, 0x8D, 0xA1,    0,    0, /* 0x00E0 */
391        0, 0xA4, 0x95, 0xA2, 0x93, 0x94,    0, 0xF6, /* 0x00F0 */
392        0, 0x97, 0xA3,    0, 0x81                    /* 0x00F0 */
395 /* ----------------------------------------------------------------------- */
397 #define IBM860TOCHARTABEX_COUNT         73
398 static ImplUniCharTabData const aImplIBM860ToCharTabEx[IBM860TOCHARTABEX_COUNT] =
400   { 0x0393, 0xE2, 0 },
401   { 0x0398, 0xE9, 0 },
402   { 0x03A3, 0xE4, 0 },
403   { 0x03A6, 0xE8, 0 },
404   { 0x03A9, 0xEA, 0 },
405   { 0x03B1, 0xE0, 0 },
406   { 0x03B4, 0xEB, 0 },
407   { 0x03B5, 0xEE, 0 },
408   { 0x03C0, 0xE3, 0 },
409   { 0x03C3, 0xE5, 0 },
410   { 0x03C4, 0xE7, 0 },
411   { 0x03C6, 0xED, 0 },
412   { 0x207F, 0xFC, 0 },
413   { 0x20A7, 0x9E, 0 },
414   { 0x2219, 0xF9, 0 },
415   { 0x221A, 0xFB, 0 },
416   { 0x221E, 0xEC, 0 },
417   { 0x2229, 0xEF, 0 },
418   { 0x2248, 0xF7, 0 },
419   { 0x2261, 0xF0, 0 },
420   { 0x2264, 0xF3, 0 },
421   { 0x2265, 0xF2, 0 },
422   { 0x2320, 0xF4, 0 },
423   { 0x2321, 0xF5, 0 },
424   { 0x2500, 0xC4, 0 },
425   { 0x2502, 0xB3, 0 },
426   { 0x250C, 0xDA, 0 },
427   { 0x2510, 0xBF, 0 },
428   { 0x2514, 0xC0, 0 },
429   { 0x2518, 0xD9, 0 },
430   { 0x251C, 0xC3, 0 },
431   { 0x2524, 0xB4, 0 },
432   { 0x252C, 0xC2, 0 },
433   { 0x2534, 0xC1, 0 },
434   { 0x253C, 0xC5, 0 },
435   { 0x2550, 0xCD, 0 },
436   { 0x2551, 0xBA, 0 },
437   { 0x2552, 0xD5, 0 },
438   { 0x2553, 0xD6, 0 },
439   { 0x2554, 0xC9, 0 },
440   { 0x2555, 0xB8, 0 },
441   { 0x2556, 0xB7, 0 },
442   { 0x2557, 0xBB, 0 },
443   { 0x2558, 0xD4, 0 },
444   { 0x2559, 0xD3, 0 },
445   { 0x255A, 0xC8, 0 },
446   { 0x255B, 0xBE, 0 },
447   { 0x255C, 0xBD, 0 },
448   { 0x255D, 0xBC, 0 },
449   { 0x255E, 0xC6, 0 },
450   { 0x255F, 0xC7, 0 },
451   { 0x2560, 0xCC, 0 },
452   { 0x2561, 0xB5, 0 },
453   { 0x2562, 0xB6, 0 },
454   { 0x2563, 0xB9, 0 },
455   { 0x2564, 0xD1, 0 },
456   { 0x2565, 0xD2, 0 },
457   { 0x2566, 0xCB, 0 },
458   { 0x2567, 0xCF, 0 },
459   { 0x2568, 0xD0, 0 },
460   { 0x2569, 0xCA, 0 },
461   { 0x256A, 0xD8, 0 },
462   { 0x256B, 0xD7, 0 },
463   { 0x256C, 0xCE, 0 },
464   { 0x2580, 0xDF, 0 },
465   { 0x2584, 0xDC, 0 },
466   { 0x2588, 0xDB, 0 },
467   { 0x258C, 0xDD, 0 },
468   { 0x2590, 0xDE, 0 },
469   { 0x2591, 0xB0, 0 },
470   { 0x2592, 0xB1, 0 },
471   { 0x2593, 0xB2, 0 },
472   { 0x25A0, 0xFE, 0 }
475 /* ----------------------------------------------------------------------- */
477 static ImplByteConvertData const aImplIBM860ByteCvtData =
479     aImplIBM860ToUniTab,
480     NULL,
481     IBM860UNI_START, IBM860UNI_END,
482     NOTABUNI_START, NOTABUNI_END,
483     aImplIBM860ToCharTab,
484     NULL,
485     aImplIBM860ToCharTabEx,
486     IBM860CHAR_START, IBM860CHAR_END,
487     NOTABCHAR_START, NOTABCHAR_END,
488     IBM860TOCHARTABEX_COUNT
491 /* ----------------------------------------------------------------------- */
493 static ImplTextEncodingData const aImplIBM860TextEncodingData
494     = { { &aImplIBM860ByteCvtData,
495           ImplUpperCharToUnicode,
496           sal::detail::textenc::convertUnicodeToChar,
497           NULL,
498           NULL,
499           NULL,
500           NULL,
501           NULL,
502           NULL },
503         1,
504         1,
505         1,
506         0,
507         "iso8859-1",
508         "IBM860",
509         RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
510     /* DOS/OS2, SCRIPT_LATIN, pc code page 860 */
512 /* ======================================================================= */
514 /* IBM-861 */
515 /* Dos Standard CharSet for Icelandic */
516 /* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
517 /* Convert-Tables: mappings/vendors/micsft/pc/cp861.txt from 04/24/96 Version 2.00 */
518 /* Last-Changes from us: */
520 /* ----------------------------------------------------------------------- */
522 #define IBM861UNI_START                 0x80
523 #define IBM861UNI_END                   0xFF
524 static sal_uInt16 const aImplIBM861ToUniTab[IBM861UNI_END - IBM861UNI_START + 1] =
526 /*       0       1       2       3       4       5       6       7 */
527 /*       8       9       A       B       C       D       E       F */
528     0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7, /* 0x80 */
529     0x00EA, 0x00EB, 0x00E8, 0x00D0, 0x00F0, 0x00DE, 0x00C4, 0x00C5, /* 0x80 */
530     0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00FE, 0x00FB, 0x00DD, /* 0x90 */
531     0x00FD, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x20A7, 0x0192, /* 0x90 */
532     0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00C1, 0x00CD, 0x00D3, 0x00DA, /* 0xA0 */
533     0x00BF, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, /* 0xA0 */
534     0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, /* 0xB0 */
535     0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, /* 0xB0 */
536     0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, /* 0xC0 */
537     0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, /* 0xC0 */
538     0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, /* 0xD0 */
539     0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, /* 0xD0 */
540     0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, /* 0xE0 */
541     0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, /* 0xE0 */
542     0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, /* 0xF0 */
543     0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0  /* 0xF0 */
546 /* ----------------------------------------------------------------------- */
548 #define IBM861CHAR_START                0x00A0
549 #define IBM861CHAR_END                  0x00FE
550 static unsigned char const aImplIBM861ToCharTab[IBM861CHAR_END - IBM861CHAR_START + 1] =
552 /*     0     1     2     3     4     5     6     7 */
553 /*     8     9     A     B     C     D     E     F */
554     0xFF, 0xAD,    0, 0x9C,    0,    0,    0,    0, /* 0x00A0 */
555        0,    0,    0, 0xAE, 0xAA,    0,    0,    0, /* 0x00A0 */
556     0xF8, 0xF1, 0xFD,    0,    0, 0xE6,    0, 0xFA, /* 0x00B0 */
557        0,    0,    0, 0xAF, 0xAC, 0xAB,    0, 0xA8, /* 0x00B0 */
558        0, 0xA4,    0,    0, 0x8E, 0x8F, 0x92, 0x80, /* 0x00C0 */
559        0, 0x90,    0,    0,    0, 0xA5,    0,    0, /* 0x00C0 */
560     0x8B,    0,    0, 0xA6,    0,    0, 0x99,    0, /* 0x00D0 */
561     0x9D,    0, 0xA7,    0, 0x9A, 0x97, 0x8D, 0xE1, /* 0x00D0 */
562     0x85, 0xA0, 0x83,    0, 0x84, 0x86, 0x91, 0x87, /* 0x00E0 */
563     0x8A, 0x82, 0x88, 0x89,    0, 0xA1,    0,    0, /* 0x00E0 */
564     0x8C,    0,    0, 0xA2, 0x93,    0, 0x94, 0xF6, /* 0x00F0 */
565     0x9B,    0, 0xA3, 0x96, 0x81, 0x98, 0x95        /* 0x00F0 */
568 /* ----------------------------------------------------------------------- */
570 #define IBM861TOCHARTABEX_COUNT         75
571 static ImplUniCharTabData const aImplIBM861ToCharTabEx[IBM861TOCHARTABEX_COUNT] =
573   { 0x0192, 0x9F, 0 },
574   { 0x0393, 0xE2, 0 },
575   { 0x0398, 0xE9, 0 },
576   { 0x03A3, 0xE4, 0 },
577   { 0x03A6, 0xE8, 0 },
578   { 0x03A9, 0xEA, 0 },
579   { 0x03B1, 0xE0, 0 },
580   { 0x03B4, 0xEB, 0 },
581   { 0x03B5, 0xEE, 0 },
582   { 0x03C0, 0xE3, 0 },
583   { 0x03C3, 0xE5, 0 },
584   { 0x03C4, 0xE7, 0 },
585   { 0x03C6, 0xED, 0 },
586   { 0x207F, 0xFC, 0 },
587   { 0x20A7, 0x9E, 0 },
588   { 0x2219, 0xF9, 0 },
589   { 0x221A, 0xFB, 0 },
590   { 0x221E, 0xEC, 0 },
591   { 0x2229, 0xEF, 0 },
592   { 0x2248, 0xF7, 0 },
593   { 0x2261, 0xF0, 0 },
594   { 0x2264, 0xF3, 0 },
595   { 0x2265, 0xF2, 0 },
596   { 0x2310, 0xA9, 0 },
597   { 0x2320, 0xF4, 0 },
598   { 0x2321, 0xF5, 0 },
599   { 0x2500, 0xC4, 0 },
600   { 0x2502, 0xB3, 0 },
601   { 0x250C, 0xDA, 0 },
602   { 0x2510, 0xBF, 0 },
603   { 0x2514, 0xC0, 0 },
604   { 0x2518, 0xD9, 0 },
605   { 0x251C, 0xC3, 0 },
606   { 0x2524, 0xB4, 0 },
607   { 0x252C, 0xC2, 0 },
608   { 0x2534, 0xC1, 0 },
609   { 0x253C, 0xC5, 0 },
610   { 0x2550, 0xCD, 0 },
611   { 0x2551, 0xBA, 0 },
612   { 0x2552, 0xD5, 0 },
613   { 0x2553, 0xD6, 0 },
614   { 0x2554, 0xC9, 0 },
615   { 0x2555, 0xB8, 0 },
616   { 0x2556, 0xB7, 0 },
617   { 0x2557, 0xBB, 0 },
618   { 0x2558, 0xD4, 0 },
619   { 0x2559, 0xD3, 0 },
620   { 0x255A, 0xC8, 0 },
621   { 0x255B, 0xBE, 0 },
622   { 0x255C, 0xBD, 0 },
623   { 0x255D, 0xBC, 0 },
624   { 0x255E, 0xC6, 0 },
625   { 0x255F, 0xC7, 0 },
626   { 0x2560, 0xCC, 0 },
627   { 0x2561, 0xB5, 0 },
628   { 0x2562, 0xB6, 0 },
629   { 0x2563, 0xB9, 0 },
630   { 0x2564, 0xD1, 0 },
631   { 0x2565, 0xD2, 0 },
632   { 0x2566, 0xCB, 0 },
633   { 0x2567, 0xCF, 0 },
634   { 0x2568, 0xD0, 0 },
635   { 0x2569, 0xCA, 0 },
636   { 0x256A, 0xD8, 0 },
637   { 0x256B, 0xD7, 0 },
638   { 0x256C, 0xCE, 0 },
639   { 0x2580, 0xDF, 0 },
640   { 0x2584, 0xDC, 0 },
641   { 0x2588, 0xDB, 0 },
642   { 0x258C, 0xDD, 0 },
643   { 0x2590, 0xDE, 0 },
644   { 0x2591, 0xB0, 0 },
645   { 0x2592, 0xB1, 0 },
646   { 0x2593, 0xB2, 0 },
647   { 0x25A0, 0xFE, 0 }
650 /* ----------------------------------------------------------------------- */
652 static ImplByteConvertData const aImplIBM861ByteCvtData =
654     aImplIBM861ToUniTab,
655     NULL,
656     IBM861UNI_START, IBM861UNI_END,
657     NOTABUNI_START, NOTABUNI_END,
658     aImplIBM861ToCharTab,
659     NULL,
660     aImplIBM861ToCharTabEx,
661     IBM861CHAR_START, IBM861CHAR_END,
662     NOTABCHAR_START, NOTABCHAR_END,
663     IBM861TOCHARTABEX_COUNT
666 /* ----------------------------------------------------------------------- */
668 static ImplTextEncodingData const aImplIBM861TextEncodingData
669     = { { &aImplIBM861ByteCvtData,
670           ImplUpperCharToUnicode,
671           sal::detail::textenc::convertUnicodeToChar,
672           NULL,
673           NULL,
674           NULL,
675           NULL,
676           NULL,
677           NULL },
678         1,
679         1,
680         1,
681         0,
682         "iso8859-1",
683         "IBM861",
684         RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
685     /* DOS/OS2, SCRIPT_LATIN, pc code page 861, mac encoding 37 */
687 /* ======================================================================= */
689 /* IBM-863 */
690 /* Dos Standard CharSet for Canada-France */
691 /* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
692 /* Convert-Tables: mappings/vendors/micsft/pc/cp863.txt from 04/24/96 Version 2.00 */
693 /* Last-Changes from us: */
695 /* ----------------------------------------------------------------------- */
697 #define IBM863UNI_START                 0x80
698 #define IBM863UNI_END                   0xFF
699 static sal_uInt16 const aImplIBM863ToUniTab[IBM863UNI_END - IBM863UNI_START + 1] =
701 /*       0       1       2       3       4       5       6       7 */
702 /*       8       9       A       B       C       D       E       F */
703     0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00C2, 0x00E0, 0x00B6, 0x00E7, /* 0x80 */
704     0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x2017, 0x00C0, 0x00A7, /* 0x80 */
705     0x00C9, 0x00C8, 0x00CA, 0x00F4, 0x00CB, 0x00CF, 0x00FB, 0x00F9, /* 0x90 */
706     0x00A4, 0x00D4, 0x00DC, 0x00A2, 0x00A3, 0x00D9, 0x00DB, 0x0192, /* 0x90 */
707     0x00A6, 0x00B4, 0x00F3, 0x00FA, 0x00A8, 0x00B8, 0x00B3, 0x00AF, /* 0xA0 */
708     0x00CE, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00BE, 0x00AB, 0x00BB, /* 0xA0 */
709     0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, /* 0xB0 */
710     0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, /* 0xB0 */
711     0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, /* 0xC0 */
712     0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, /* 0xC0 */
713     0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, /* 0xD0 */
714     0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, /* 0xD0 */
715     0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, /* 0xE0 */
716     0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, /* 0xE0 */
717     0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, /* 0xF0 */
718     0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0  /* 0xF0 */
721 /* ----------------------------------------------------------------------- */
723 #define IBM863CHAR_START                0x00A0
724 #define IBM863CHAR_END                  0x00FC
725 static unsigned char const aImplIBM863ToCharTab[IBM863CHAR_END - IBM863CHAR_START + 1] =
727 /*     0     1     2     3     4     5     6     7 */
728 /*     8     9     A     B     C     D     E     F */
729     0xFF,    0, 0x9B, 0x9C, 0x98,    0, 0xA0, 0x8F, /* 0x00A0 */
730     0xA4,    0,    0, 0xAE, 0xAA,    0,    0, 0xA7, /* 0x00A0 */
731     0xF8, 0xF1, 0xFD, 0xA6, 0xA1, 0xE6, 0x86, 0xFA, /* 0x00B0 */
732     0xA5,    0,    0, 0xAF, 0xAC, 0xAB, 0xAD,    0, /* 0x00B0 */
733     0x8E,    0, 0x84,    0,    0,    0,    0, 0x80, /* 0x00C0 */
734     0x91, 0x90, 0x92, 0x94,    0,    0, 0xA8, 0x95, /* 0x00C0 */
735        0,    0,    0,    0, 0x99,    0,    0,    0, /* 0x00D0 */
736        0, 0x9D,    0, 0x9E, 0x9A,    0,    0, 0xE1, /* 0x00D0 */
737     0x85,    0, 0x83,    0,    0,    0,    0, 0x87, /* 0x00E0 */
738     0x8A, 0x82, 0x88, 0x89,    0,    0, 0x8C, 0x8B, /* 0x00E0 */
739        0,    0,    0, 0xA2, 0x93,    0,    0, 0xF6, /* 0x00F0 */
740        0, 0x97, 0xA3, 0x96, 0x81                    /* 0x00F0 */
743 /* ----------------------------------------------------------------------- */
745 #define IBM863TOCHARTABEX_COUNT         75
746 static ImplUniCharTabData const aImplIBM863ToCharTabEx[IBM863TOCHARTABEX_COUNT] =
748   { 0x0192, 0x9F, 0 },
749   { 0x0393, 0xE2, 0 },
750   { 0x0398, 0xE9, 0 },
751   { 0x03A3, 0xE4, 0 },
752   { 0x03A6, 0xE8, 0 },
753   { 0x03A9, 0xEA, 0 },
754   { 0x03B1, 0xE0, 0 },
755   { 0x03B4, 0xEB, 0 },
756   { 0x03B5, 0xEE, 0 },
757   { 0x03C0, 0xE3, 0 },
758   { 0x03C3, 0xE5, 0 },
759   { 0x03C4, 0xE7, 0 },
760   { 0x03C6, 0xED, 0 },
761   { 0x2017, 0x8D, 0 },
762   { 0x207F, 0xFC, 0 },
763   { 0x2219, 0xF9, 0 },
764   { 0x221A, 0xFB, 0 },
765   { 0x221E, 0xEC, 0 },
766   { 0x2229, 0xEF, 0 },
767   { 0x2248, 0xF7, 0 },
768   { 0x2261, 0xF0, 0 },
769   { 0x2264, 0xF3, 0 },
770   { 0x2265, 0xF2, 0 },
771   { 0x2310, 0xA9, 0 },
772   { 0x2320, 0xF4, 0 },
773   { 0x2321, 0xF5, 0 },
774   { 0x2500, 0xC4, 0 },
775   { 0x2502, 0xB3, 0 },
776   { 0x250C, 0xDA, 0 },
777   { 0x2510, 0xBF, 0 },
778   { 0x2514, 0xC0, 0 },
779   { 0x2518, 0xD9, 0 },
780   { 0x251C, 0xC3, 0 },
781   { 0x2524, 0xB4, 0 },
782   { 0x252C, 0xC2, 0 },
783   { 0x2534, 0xC1, 0 },
784   { 0x253C, 0xC5, 0 },
785   { 0x2550, 0xCD, 0 },
786   { 0x2551, 0xBA, 0 },
787   { 0x2552, 0xD5, 0 },
788   { 0x2553, 0xD6, 0 },
789   { 0x2554, 0xC9, 0 },
790   { 0x2555, 0xB8, 0 },
791   { 0x2556, 0xB7, 0 },
792   { 0x2557, 0xBB, 0 },
793   { 0x2558, 0xD4, 0 },
794   { 0x2559, 0xD3, 0 },
795   { 0x255A, 0xC8, 0 },
796   { 0x255B, 0xBE, 0 },
797   { 0x255C, 0xBD, 0 },
798   { 0x255D, 0xBC, 0 },
799   { 0x255E, 0xC6, 0 },
800   { 0x255F, 0xC7, 0 },
801   { 0x2560, 0xCC, 0 },
802   { 0x2561, 0xB5, 0 },
803   { 0x2562, 0xB6, 0 },
804   { 0x2563, 0xB9, 0 },
805   { 0x2564, 0xD1, 0 },
806   { 0x2565, 0xD2, 0 },
807   { 0x2566, 0xCB, 0 },
808   { 0x2567, 0xCF, 0 },
809   { 0x2568, 0xD0, 0 },
810   { 0x2569, 0xCA, 0 },
811   { 0x256A, 0xD8, 0 },
812   { 0x256B, 0xD7, 0 },
813   { 0x256C, 0xCE, 0 },
814   { 0x2580, 0xDF, 0 },
815   { 0x2584, 0xDC, 0 },
816   { 0x2588, 0xDB, 0 },
817   { 0x258C, 0xDD, 0 },
818   { 0x2590, 0xDE, 0 },
819   { 0x2591, 0xB0, 0 },
820   { 0x2592, 0xB1, 0 },
821   { 0x2593, 0xB2, 0 },
822   { 0x25A0, 0xFE, 0 }
825 /* ----------------------------------------------------------------------- */
827 static ImplByteConvertData const aImplIBM863ByteCvtData =
829     aImplIBM863ToUniTab,
830     NULL,
831     IBM863UNI_START, IBM863UNI_END,
832     NOTABUNI_START, NOTABUNI_END,
833     aImplIBM863ToCharTab,
834     NULL,
835     aImplIBM863ToCharTabEx,
836     IBM863CHAR_START, IBM863CHAR_END,
837     NOTABCHAR_START, NOTABCHAR_END,
838     IBM863TOCHARTABEX_COUNT
841 /* ----------------------------------------------------------------------- */
843 static ImplTextEncodingData const aImplIBM863TextEncodingData
844     = { { &aImplIBM863ByteCvtData,
845           ImplUpperCharToUnicode,
846           sal::detail::textenc::convertUnicodeToChar,
847           NULL,
848           NULL,
849           NULL,
850           NULL,
851           NULL,
852           NULL },
853         1,
854         1,
855         1,
856         0,
857         "iso8859-1",
858         "IBM863",
859         RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
860     /* DOS/OS2, SCRIPT_LATIN, pc code page 863 */
862 /* ======================================================================= */
864 /* IBM-865 */
865 /* Dos Standard CharSet for Nordic */
866 /* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
867 /* Convert-Tables: mappings/vendors/micsft/pc/cp865.txt from 04/24/96 Version 2.00 */
868 /* Last-Changes from us: */
870 /* ----------------------------------------------------------------------- */
872 #define IBM865UNI_START                 0x80
873 #define IBM865UNI_END                   0xFF
874 static sal_uInt16 const aImplIBM865ToUniTab[IBM865UNI_END - IBM865UNI_START + 1] =
876 /*       0       1       2       3       4       5       6       7 */
877 /*       8       9       A       B       C       D       E       F */
878     0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7, /* 0x80 */
879     0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5, /* 0x80 */
880     0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9, /* 0x90 */
881     0x00FF, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x20A7, 0x0192, /* 0x90 */
882     0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA, /* 0xA0 */
883     0x00BF, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00A4, /* 0xA0 */
884     0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, /* 0xB0 */
885     0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, /* 0xB0 */
886     0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, /* 0xC0 */
887     0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, /* 0xC0 */
888     0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, /* 0xD0 */
889     0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, /* 0xD0 */
890     0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, /* 0xE0 */
891     0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, /* 0xE0 */
892     0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, /* 0xF0 */
893     0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0  /* 0xF0 */
896 /* ----------------------------------------------------------------------- */
898 #define IBM865CHAR_START                0x00A0
899 #define IBM865CHAR_END                  0x00FF
900 static unsigned char const aImplIBM865ToCharTab[IBM865CHAR_END - IBM865CHAR_START + 1] =
902 /*     0     1     2     3     4     5     6     7 */
903 /*     8     9     A     B     C     D     E     F */
904     0xFF, 0xAD,    0, 0x9C, 0xAF,    0,    0,    0, /* 0x00A0 */
905        0,    0, 0xA6, 0xAE, 0xAA,    0,    0,    0, /* 0x00A0 */
906     0xF8, 0xF1, 0xFD,    0,    0, 0xE6,    0, 0xFA, /* 0x00B0 */
907        0,    0, 0xA7,    0, 0xAC, 0xAB,    0, 0xA8, /* 0x00B0 */
908        0,    0,    0,    0, 0x8E, 0x8F, 0x92, 0x80, /* 0x00C0 */
909        0, 0x90,    0,    0,    0,    0,    0,    0, /* 0x00C0 */
910        0, 0xA5,    0,    0,    0,    0, 0x99,    0, /* 0x00D0 */
911     0x9D,    0,    0,    0, 0x9A,    0,    0, 0xE1, /* 0x00D0 */
912     0x85, 0xA0, 0x83,    0, 0x84, 0x86, 0x91, 0x87, /* 0x00E0 */
913     0x8A, 0x82, 0x88, 0x89, 0x8D, 0xA1, 0x8C, 0x8B, /* 0x00E0 */
914        0, 0xA4, 0x95, 0xA2, 0x93,    0, 0x94, 0xF6, /* 0x00F0 */
915     0x9B, 0x97, 0xA3, 0x96, 0x81,    0,    0, 0x98  /* 0x00F0 */
918 /* ----------------------------------------------------------------------- */
920 #define IBM865TOCHARTABEX_COUNT         75
921 static ImplUniCharTabData const aImplIBM865ToCharTabEx[IBM865TOCHARTABEX_COUNT] =
923   { 0x0192, 0x9F, 0 },
924   { 0x0393, 0xE2, 0 },
925   { 0x0398, 0xE9, 0 },
926   { 0x03A3, 0xE4, 0 },
927   { 0x03A6, 0xE8, 0 },
928   { 0x03A9, 0xEA, 0 },
929   { 0x03B1, 0xE0, 0 },
930   { 0x03B4, 0xEB, 0 },
931   { 0x03B5, 0xEE, 0 },
932   { 0x03C0, 0xE3, 0 },
933   { 0x03C3, 0xE5, 0 },
934   { 0x03C4, 0xE7, 0 },
935   { 0x03C6, 0xED, 0 },
936   { 0x207F, 0xFC, 0 },
937   { 0x20A7, 0x9E, 0 },
938   { 0x2219, 0xF9, 0 },
939   { 0x221A, 0xFB, 0 },
940   { 0x221E, 0xEC, 0 },
941   { 0x2229, 0xEF, 0 },
942   { 0x2248, 0xF7, 0 },
943   { 0x2261, 0xF0, 0 },
944   { 0x2264, 0xF3, 0 },
945   { 0x2265, 0xF2, 0 },
946   { 0x2310, 0xA9, 0 },
947   { 0x2320, 0xF4, 0 },
948   { 0x2321, 0xF5, 0 },
949   { 0x2500, 0xC4, 0 },
950   { 0x2502, 0xB3, 0 },
951   { 0x250C, 0xDA, 0 },
952   { 0x2510, 0xBF, 0 },
953   { 0x2514, 0xC0, 0 },
954   { 0x2518, 0xD9, 0 },
955   { 0x251C, 0xC3, 0 },
956   { 0x2524, 0xB4, 0 },
957   { 0x252C, 0xC2, 0 },
958   { 0x2534, 0xC1, 0 },
959   { 0x253C, 0xC5, 0 },
960   { 0x2550, 0xCD, 0 },
961   { 0x2551, 0xBA, 0 },
962   { 0x2552, 0xD5, 0 },
963   { 0x2553, 0xD6, 0 },
964   { 0x2554, 0xC9, 0 },
965   { 0x2555, 0xB8, 0 },
966   { 0x2556, 0xB7, 0 },
967   { 0x2557, 0xBB, 0 },
968   { 0x2558, 0xD4, 0 },
969   { 0x2559, 0xD3, 0 },
970   { 0x255A, 0xC8, 0 },
971   { 0x255B, 0xBE, 0 },
972   { 0x255C, 0xBD, 0 },
973   { 0x255D, 0xBC, 0 },
974   { 0x255E, 0xC6, 0 },
975   { 0x255F, 0xC7, 0 },
976   { 0x2560, 0xCC, 0 },
977   { 0x2561, 0xB5, 0 },
978   { 0x2562, 0xB6, 0 },
979   { 0x2563, 0xB9, 0 },
980   { 0x2564, 0xD1, 0 },
981   { 0x2565, 0xD2, 0 },
982   { 0x2566, 0xCB, 0 },
983   { 0x2567, 0xCF, 0 },
984   { 0x2568, 0xD0, 0 },
985   { 0x2569, 0xCA, 0 },
986   { 0x256A, 0xD8, 0 },
987   { 0x256B, 0xD7, 0 },
988   { 0x256C, 0xCE, 0 },
989   { 0x2580, 0xDF, 0 },
990   { 0x2584, 0xDC, 0 },
991   { 0x2588, 0xDB, 0 },
992   { 0x258C, 0xDD, 0 },
993   { 0x2590, 0xDE, 0 },
994   { 0x2591, 0xB0, 0 },
995   { 0x2592, 0xB1, 0 },
996   { 0x2593, 0xB2, 0 },
997   { 0x25A0, 0xFE, 0 }
1000 /* ----------------------------------------------------------------------- */
1002 static ImplByteConvertData const aImplIBM865ByteCvtData =
1004     aImplIBM865ToUniTab,
1005     NULL,
1006     IBM865UNI_START, IBM865UNI_END,
1007     NOTABUNI_START, NOTABUNI_END,
1008     aImplIBM865ToCharTab,
1009     NULL,
1010     aImplIBM865ToCharTabEx,
1011     IBM865CHAR_START, IBM865CHAR_END,
1012     NOTABCHAR_START, NOTABCHAR_END,
1013     IBM865TOCHARTABEX_COUNT
1016 /* ----------------------------------------------------------------------- */
1018 static ImplTextEncodingData const aImplIBM865TextEncodingData
1019     = { { &aImplIBM865ByteCvtData,
1020           ImplUpperCharToUnicode,
1021           sal::detail::textenc::convertUnicodeToChar,
1022           NULL,
1023           NULL,
1024           NULL,
1025           NULL,
1026           NULL,
1027           NULL },
1028         1,
1029         1,
1030         1,
1031         0,
1032         "iso8859-1",
1033         "IBM865",
1034         RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
1035     /* DOS/OS2, SCRIPT_LATIN, pc code page 865 */
1037 /* ======================================================================= */
1039 /* ISO-8859-14 */
1040 /* ungefaehr wie Latin1 */
1041 /* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme, 0x80-0x9F Control-Caracter wie in Unicode */
1042 /* Convert-Tables: mappings/iso8859/8859-14.txt from 07/27/99 Version 1.0 (based on Unicode 3.0) */
1043 /* Last-Changes from us: */
1045 #define ISO885914UNI_START              0xA0
1046 #define ISO885914UNI_END                0xFF
1047 static sal_uInt16 const aImplISO885914ToUniTab[ISO885914UNI_END - ISO885914UNI_START + 1] =
1049 /*       0       1       2       3       4       5       6       7 */
1050 /*       8       9       A       B       C       D       E       F */
1051     0x00A0, 0x1E02, 0x1E03, 0x00A3, 0x010A, 0x010B, 0x1E0A, 0x00A7, /* 0xA0 */
1052     0x1E80, 0x00A9, 0x1E82, 0x1E0B, 0x1EF2, 0x00AD, 0x00AE, 0x0178, /* 0xA0 */
1053     0x1E1E, 0x1E1F, 0x0120, 0x0121, 0x1E40, 0x1E41, 0x00B6, 0x1E56, /* 0xB0 */
1054     0x1E81, 0x1E57, 0x1E83, 0x1E60, 0x1EF3, 0x1E84, 0x1E85, 0x1E61, /* 0xB0 */
1055     0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, /* 0xC0 */
1056     0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, /* 0xC0 */
1057     0x0174, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x1E6A, /* 0xD0 */
1058     0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x0176, 0x00DF, /* 0xD0 */
1059     0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, /* 0xE0 */
1060     0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, /* 0xE0 */
1061     0x0175, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x1E6B, /* 0xF0 */
1062     0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x0177, 0x00FF  /* 0xF0 */
1065 /* ----------------------------------------------------------------------- */
1067 #define ISO885914CHAR_START             0x00C0
1068 #define ISO885914CHAR_END               0x00FF
1069 static unsigned char const aImplISO885914ToCharTab[ISO885914CHAR_END - ISO885914CHAR_START + 1] =
1071 /*     0     1     2     3     4     5     6     7 */
1072 /*     8     9     A     B     C     D     E     F */
1073     0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, /* 0x00C0 */
1074     0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, /* 0x00C0 */
1075        0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6,    0, /* 0x00D0 */
1076     0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD,    0, 0xDF, /* 0x00D0 */
1077     0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, /* 0x00E0 */
1078     0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, /* 0x00E0 */
1079        0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6,    0, /* 0x00F0 */
1080     0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD,    0, 0xFF  /* 0x00F0 */
1083 /* ----------------------------------------------------------------------- */
1085 #define ISO885914TOCHARTABEX_COUNT      38
1086 static ImplUniCharTabData const aImplISO885914ToCharTabEx[ISO885914TOCHARTABEX_COUNT] =
1088   { 0x00A0, 0xA0, 0 },
1089   { 0x00A3, 0xA3, 0 },
1090   { 0x00A7, 0xA7, 0 },
1091   { 0x00A9, 0xA9, 0 },
1092   { 0x00AD, 0xAD, 0 },
1093   { 0x00AE, 0xAE, 0 },
1094   { 0x00B6, 0xB6, 0 },
1095   { 0x010A, 0xA4, 0 },
1096   { 0x010B, 0xA5, 0 },
1097   { 0x0120, 0xB2, 0 },
1098   { 0x0121, 0xB3, 0 },
1099   { 0x0174, 0xD0, 0 },
1100   { 0x0175, 0xF0, 0 },
1101   { 0x0176, 0xDE, 0 },
1102   { 0x0177, 0xFE, 0 },
1103   { 0x0178, 0xAF, 0 },
1104   { 0x1E02, 0xA1, 0 },
1105   { 0x1E03, 0xA2, 0 },
1106   { 0x1E0A, 0xA6, 0 },
1107   { 0x1E0B, 0xAB, 0 },
1108   { 0x1E1E, 0xB0, 0 },
1109   { 0x1E1F, 0xB1, 0 },
1110   { 0x1E40, 0xB4, 0 },
1111   { 0x1E41, 0xB5, 0 },
1112   { 0x1E56, 0xB7, 0 },
1113   { 0x1E57, 0xB9, 0 },
1114   { 0x1E60, 0xBB, 0 },
1115   { 0x1E61, 0xBF, 0 },
1116   { 0x1E6A, 0xD7, 0 },
1117   { 0x1E6B, 0xF7, 0 },
1118   { 0x1E80, 0xA8, 0 },
1119   { 0x1E81, 0xB8, 0 },
1120   { 0x1E82, 0xAA, 0 },
1121   { 0x1E83, 0xBA, 0 },
1122   { 0x1E84, 0xBD, 0 },
1123   { 0x1E85, 0xBE, 0 },
1124   { 0x1EF2, 0xAC, 0 },
1125   { 0x1EF3, 0xBC, 0 }
1128 /* ----------------------------------------------------------------------- */
1130 static ImplByteConvertData const aImplISO885914ByteCvtData =
1132     aImplISO885914ToUniTab,
1133     aImpl8090SameToUniTab,
1134     ISO885914UNI_START, ISO885914UNI_END,
1135     SAME8090UNI_START, SAME8090UNI_END,
1136     aImplISO885914ToCharTab,
1137     aImpl8090SameToCharTab,
1138     aImplISO885914ToCharTabEx,
1139     ISO885914CHAR_START, ISO885914CHAR_END,
1140     SAME8090CHAR_START, SAME8090CHAR_END,
1141     ISO885914TOCHARTABEX_COUNT
1144 /* ----------------------------------------------------------------------- */
1146 static ImplTextEncodingData const aImplISO885914TextEncodingData
1147     = { { &aImplISO885914ByteCvtData,
1148           sal::detail::textenc::convertCharToUnicode,
1149           sal::detail::textenc::convertUnicodeToChar,
1150           NULL,
1151           NULL,
1152           NULL,
1153           NULL,
1154           NULL,
1155           NULL },
1156         1,
1157         1,
1158         1,
1159         0,
1160         "iso8859-14",
1161         "iso-8859-14",
1162         RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
1163     /* SCRIPT_LATIN, pc code page 850 */
1165 /* ======================================================================= */
1167 /* ISO-8859-15 */
1168 /* ungefaehr wie Latin1, jedoch mit Euro (ehemaliges CURRENCY-Symbol an A4) */
1169 /* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme, 0x80-0x9F Control-Caracter wie in Unicode */
1170 /* Convert-Tables: mappings/iso8859/8859-15.txt from 07/27/99 Version 1.0 (based on Unicode 3.0) */
1171 /* Last-Changes from us: */
1173 #define ISO885915UNI_START              0xA0
1174 #define ISO885915UNI_END                0xFF
1175 static sal_uInt16 const aImplISO885915ToUniTab[ISO885915UNI_END - ISO885915UNI_START + 1] =
1177 /*       0       1       2       3       4       5       6       7 */
1178 /*       8       9       A       B       C       D       E       F */
1179     0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x20AC, 0x00A5, 0x0160, 0x00A7, /* 0xA0 */
1180     0x0161, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, /* 0xA0 */
1181     0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x017D, 0x00B5, 0x00B6, 0x00B7, /* 0xB0 */
1182     0x017E, 0x00B9, 0x00BA, 0x00BB, 0x0152, 0x0153, 0x0178, 0x00BF, /* 0xB0 */
1183     0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, /* 0xC0 */
1184     0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, /* 0xC0 */
1185     0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, /* 0xD0 */
1186     0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF, /* 0xD0 */
1187     0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, /* 0xE0 */
1188     0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, /* 0xE0 */
1189     0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, /* 0xF0 */
1190     0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF  /* 0xF0 */
1193 /* ----------------------------------------------------------------------- */
1195 #define ISO885915CHAR_START             0x00A0
1196 #define ISO885915CHAR_END               0x00FF
1197 static unsigned char const aImplISO885915ToCharTab[ISO885915CHAR_END - ISO885915CHAR_START + 1] =
1199 /*     0     1     2     3     4     5     6     7 */
1200 /*     8     9     A     B     C     D     E     F */
1201     0xA0, 0xA1, 0xA2, 0xA3,    0, 0xA5,    0, 0xA7, /* 0x00A0 */
1202        0, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, /* 0x00A0 */
1203     0xB0, 0xB1, 0xB2, 0xB3,    0, 0xB5, 0xB6, 0xB7, /* 0x00B0 */
1204        0, 0xB9, 0xBA, 0xBB,    0,    0,    0, 0xBF, /* 0x00B0 */
1205     0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, /* 0x00C0 */
1206     0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, /* 0x00C0 */
1207     0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, /* 0x00D0 */
1208     0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, /* 0x00D0 */
1209     0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, /* 0x00E0 */
1210     0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, /* 0x00E0 */
1211     0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, /* 0x00F0 */
1212     0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF  /* 0x00F0 */
1215 /* ----------------------------------------------------------------------- */
1217 #define ISO885915TOCHARTABEX_COUNT      8
1218 static ImplUniCharTabData const aImplISO885915ToCharTabEx[ISO885915TOCHARTABEX_COUNT] =
1220   { 0x0152, 0xBC, 0 },
1221   { 0x0153, 0xBD, 0 },
1222   { 0x0160, 0xA6, 0 },
1223   { 0x0161, 0xA8, 0 },
1224   { 0x0178, 0xBE, 0 },
1225   { 0x017D, 0xB4, 0 },
1226   { 0x017E, 0xB8, 0 },
1227   { 0x20AC, 0xA4, 0 }
1230 /* ----------------------------------------------------------------------- */
1232 static ImplByteConvertData const aImplISO885915ByteCvtData =
1234     aImplISO885915ToUniTab,
1235     aImpl8090SameToUniTab,
1236     ISO885915UNI_START, ISO885915UNI_END,
1237     SAME8090UNI_START, SAME8090UNI_END,
1238     aImplISO885915ToCharTab,
1239     aImpl8090SameToCharTab,
1240     aImplISO885915ToCharTabEx,
1241     ISO885915CHAR_START, ISO885915CHAR_END,
1242     SAME8090CHAR_START, SAME8090CHAR_END,
1243     ISO885915TOCHARTABEX_COUNT
1246 /* ----------------------------------------------------------------------- */
1248 static ImplTextEncodingData const aImplISO885915TextEncodingData
1249     = { { &aImplISO885915ByteCvtData,
1250           sal::detail::textenc::convertCharToUnicode,
1251           sal::detail::textenc::convertUnicodeToChar,
1252           NULL,
1253           NULL,
1254           NULL,
1255           NULL,
1256           NULL,
1257           NULL },
1258         1,
1259         1,
1260         1,
1261         0,
1262         "iso8859-15",
1263         "iso-8859-15",
1264         RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
1265     /* SCRIPT_LATIN, pc code page 850 */
1267 /* ======================================================================= */
1269 /* APPLE-Iceland */
1270 /* Apple CharSet for Iceland */
1271 /* 1-Byte, 0x00-0x7F ASCII, jedoch eigentich Sonderzeichen zwischen 0x00-0x1F */
1272 /* die wir aber nicht beruecksichtigen */
1273 /* Convert-Tables: mappings/vendors/apple/iceland.txt from 02/05/98 */
1274 /* Last-Changes from us: */
1276 #define APPLEICELANDUNI_START           0x80
1277 #define APPLEICELANDUNI_END             0xFF
1278 static sal_uInt16 const aImplAPPLEICELANDToUniTab[APPLEICELANDUNI_END - APPLEICELANDUNI_START + 1] =
1280 /*       0       1       2       3       4       5       6       7 */
1281 /*       8       9       A       B       C       D       E       F */
1282     0x00C4, 0x00C5, 0x00C7, 0x00C9, 0x00D1, 0x00D6, 0x00DC, 0x00E1, /* 0x80 */
1283     0x00E0, 0x00E2, 0x00E4, 0x00E3, 0x00E5, 0x00E7, 0x00E9, 0x00E8, /* 0x80 */
1284     0x00EA, 0x00EB, 0x00ED, 0x00EC, 0x00EE, 0x00EF, 0x00F1, 0x00F3, /* 0x90 */
1285     0x00F2, 0x00F4, 0x00F6, 0x00F5, 0x00FA, 0x00F9, 0x00FB, 0x00FC, /* 0x90 */
1286     0x00DD, 0x00B0, 0x00A2, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x00DF, /* 0xA0 */
1287     0x00AE, 0x00A9, 0x2122, 0x00B4, 0x00A8, 0x2260, 0x00C6, 0x00D8, /* 0xA0 */
1288     0x221E, 0x00B1, 0x2264, 0x2265, 0x00A5, 0x00B5, 0x2202, 0x2211, /* 0xB0 */
1289     0x220F, 0x03C0, 0x222B, 0x00AA, 0x00BA, 0x03A9, 0x00E6, 0x00F8, /* 0xB0 */
1290     0x00BF, 0x00A1, 0x00AC, 0x221A, 0x0192, 0x2248, 0x2206, 0x00AB, /* 0xC0 */
1291     0x00BB, 0x2026, 0x00A0, 0x00C0, 0x00C3, 0x00D5, 0x0152, 0x0153, /* 0xC0 */
1292     0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x25CA, /* 0xD0 */
1293     0x00FF, 0x0178, 0x2044, 0x00A4, 0x00D0, 0x00F0, 0x00DE, 0x00FE, /* 0xD0 */
1294     0x00FD, 0x00B7, 0x201A, 0x201E, 0x2030, 0x00C2, 0x00CA, 0x00C1, /* 0xE0 */
1295     0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF, 0x00CC, 0x00D3, 0x00D4, /* 0xE0 */
1296     0xF8FF, 0x00D2, 0x00DA, 0x00DB, 0x00D9, 0x0131, 0x02C6, 0x02DC, /* 0xF0 */
1297     0x00AF, 0x02D8, 0x02D9, 0x02DA, 0x00B8, 0x02DD, 0x02DB, 0x02C7  /* 0xF0 */
1300 /* ----------------------------------------------------------------------- */
1302 #define APPLEICELANDCHAR_START          0x00A0
1303 #define APPLEICELANDCHAR_END            0x00FF
1304 static unsigned char const aImplAPPLEICELANDToCharTab[APPLEICELANDCHAR_END - APPLEICELANDCHAR_START + 1] =
1306 /*     0     1     2     3     4     5     6     7 */
1307 /*     8     9     A     B     C     D     E     F */
1308     0xCA, 0xC1, 0xA2, 0xA3, 0xDB, 0xB4,    0, 0xA4, /* 0x00A0 */
1309     0xAC, 0xA9, 0xBB, 0xC7, 0xC2,    0, 0xA8, 0xF8, /* 0x00A0 */
1310     0xA1, 0xB1,    0,    0, 0xAB, 0xB5, 0xA6, 0xE1, /* 0x00B0 */
1311     0xFC,    0, 0xBC, 0xC8,    0,    0,    0, 0xC0, /* 0x00B0 */
1312     0xCB, 0xE7, 0xE5, 0xCC, 0x80, 0x81, 0xAE, 0x82, /* 0x00C0 */
1313     0xE9, 0x83, 0xE6, 0xE8, 0xED, 0xEA, 0xEB, 0xEC, /* 0x00C0 */
1314     0xDC, 0x84, 0xF1, 0xEE, 0xEF, 0xCD, 0x85,    0, /* 0x00D0 */
1315     0xAF, 0xF4, 0xF2, 0xF3, 0x86, 0xA0, 0xDE, 0xA7, /* 0x00D0 */
1316     0x88, 0x87, 0x89, 0x8B, 0x8A, 0x8C, 0xBE, 0x8D, /* 0x00E0 */
1317     0x8F, 0x8E, 0x90, 0x91, 0x93, 0x92, 0x94, 0x95, /* 0x00E0 */
1318     0xDD, 0x96, 0x98, 0x97, 0x99, 0x9B, 0x9A, 0xD6, /* 0x00F0 */
1319     0xBF, 0x9D, 0x9C, 0x9E, 0x9F, 0xE0, 0xDF, 0xD8  /* 0x00F0 */
1322 /* ----------------------------------------------------------------------- */
1324 #define APPLEICELANDTOCHARTABEX_COUNT   41
1325 static ImplUniCharTabData const aImplAPPLEICELANDToCharTabEx[APPLEICELANDTOCHARTABEX_COUNT] =
1327   { 0x0131, 0xF5, 0 },
1328   { 0x0152, 0xCE, 0 },
1329   { 0x0153, 0xCF, 0 },
1330   { 0x0178, 0xD9, 0 },
1331   { 0x0192, 0xC4, 0 },
1332   { 0x02C6, 0xF6, 0 },
1333   { 0x02C7, 0xFF, 0 },
1334   { 0x02D8, 0xF9, 0 },
1335   { 0x02D9, 0xFA, 0 },
1336   { 0x02DA, 0xFB, 0 },
1337   { 0x02DB, 0xFE, 0 },
1338   { 0x02DC, 0xF7, 0 },
1339   { 0x02DD, 0xFD, 0 },
1340   { 0x03A9, 0xBD, 0 },
1341   { 0x03C0, 0xB9, 0 },
1342   { 0x2013, 0xD0, 0 },
1343   { 0x2014, 0xD1, 0 },
1344   { 0x2018, 0xD4, 0 },
1345   { 0x2019, 0xD5, 0 },
1346   { 0x201A, 0xE2, 0 },
1347   { 0x201C, 0xD2, 0 },
1348   { 0x201D, 0xD3, 0 },
1349   { 0x201E, 0xE3, 0 },
1350   { 0x2022, 0xA5, 0 },
1351   { 0x2026, 0xC9, 0 },
1352   { 0x2030, 0xE4, 0 },
1353   { 0x2044, 0xDA, 0 },
1354   { 0x2122, 0xAA, 0 },
1355   { 0x2202, 0xB6, 0 },
1356   { 0x2206, 0xC6, 0 },
1357   { 0x220F, 0xB8, 0 },
1358   { 0x2211, 0xB7, 0 },
1359   { 0x221A, 0xC3, 0 },
1360   { 0x221E, 0xB0, 0 },
1361   { 0x222B, 0xBA, 0 },
1362   { 0x2248, 0xC5, 0 },
1363   { 0x2260, 0xAD, 0 },
1364   { 0x2264, 0xB2, 0 },
1365   { 0x2265, 0xB3, 0 },
1366   { 0x25CA, 0xD7, 0 },
1367   { 0xF8FF, 0xF0, 0 }
1370 /* ----------------------------------------------------------------------- */
1372 static ImplByteConvertData const aImplAPPLEICELANDByteCvtData =
1374     aImplAPPLEICELANDToUniTab,
1375     NULL,
1376     APPLEICELANDUNI_START, APPLEICELANDUNI_END,
1377     NOTABUNI_START, NOTABUNI_END,
1378     aImplAPPLEICELANDToCharTab,
1379     NULL,
1380     aImplAPPLEICELANDToCharTabEx,
1381     APPLEICELANDCHAR_START, APPLEICELANDCHAR_END,
1382     NOTABCHAR_START, NOTABCHAR_END,
1383     APPLEICELANDTOCHARTABEX_COUNT
1386 /* ----------------------------------------------------------------------- */
1388 static ImplTextEncodingData const aImplAPPLEICELANDTextEncodingData
1389     = { { &aImplAPPLEICELANDByteCvtData,
1390           ImplUpperCharToUnicode,
1391           sal::detail::textenc::convertUnicodeToChar,
1392           NULL,
1393           NULL,
1394           NULL,
1395           NULL,
1396           NULL,
1397           NULL },
1398         1,
1399         1,
1400         1,
1401         0,
1402         "iso8859-1",
1403         "iso-8859-1",
1404         RTL_TEXTENCODING_INFO_ASCII };
1405     /* MAC, SCRIPT_LATIN, pc code page 861, mac encoding 37 */
1407 /* ======================================================================= */
1409 /* APPLE-Roman */
1410 /* Standard Apple CharSet for Western */
1411 /* 1-Byte, 0x00-0x7F ASCII, jedoch eigentich Sonderzeichen zwischen 0x00-0x1F */
1412 /* die wir aber nicht beruecksichtigen */
1413 /* Convert-Tables: mappings/vendors/apple/roman.txt from 08/18/98 */
1414 /* Last-Changes from us: */
1416 #define APPLEROMANUNI_START             0x80
1417 #define APPLEROMANUNI_END               0xFF
1418 static sal_uInt16 const aImplAPPLEROMANToUniTab[APPLEROMANUNI_END - APPLEROMANUNI_START + 1] =
1420 /*       0       1       2       3       4       5       6       7 */
1421 /*       8       9       A       B       C       D       E       F */
1422     0x00C4, 0x00C5, 0x00C7, 0x00C9, 0x00D1, 0x00D6, 0x00DC, 0x00E1, /* 0x80 */
1423     0x00E0, 0x00E2, 0x00E4, 0x00E3, 0x00E5, 0x00E7, 0x00E9, 0x00E8, /* 0x80 */
1424     0x00EA, 0x00EB, 0x00ED, 0x00EC, 0x00EE, 0x00EF, 0x00F1, 0x00F3, /* 0x90 */
1425     0x00F2, 0x00F4, 0x00F6, 0x00F5, 0x00FA, 0x00F9, 0x00FB, 0x00FC, /* 0x90 */
1426     0x2020, 0x00B0, 0x00A2, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x00DF, /* 0xA0 */
1427     0x00AE, 0x00A9, 0x2122, 0x00B4, 0x00A8, 0x2260, 0x00C6, 0x00D8, /* 0xA0 */
1428     0x221E, 0x00B1, 0x2264, 0x2265, 0x00A5, 0x00B5, 0x2202, 0x2211, /* 0xB0 */
1429     0x220F, 0x03C0, 0x222B, 0x00AA, 0x00BA, 0x03A9, 0x00E6, 0x00F8, /* 0xB0 */
1430     0x00BF, 0x00A1, 0x00AC, 0x221A, 0x0192, 0x2248, 0x2206, 0x00AB, /* 0xC0 */
1431     0x00BB, 0x2026, 0x00A0, 0x00C0, 0x00C3, 0x00D5, 0x0152, 0x0153, /* 0xC0 */
1432     0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x25CA, /* 0xD0 */
1433     0x00FF, 0x0178, 0x2044, 0x20AC, 0x2039, 0x203A, 0xFB01, 0xFB02, /* 0xD0 */
1434     0x2021, 0x00B7, 0x201A, 0x201E, 0x2030, 0x00C2, 0x00CA, 0x00C1, /* 0xE0 */
1435     0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF, 0x00CC, 0x00D3, 0x00D4, /* 0xE0 */
1436     0xF8FF, 0x00D2, 0x00DA, 0x00DB, 0x00D9, 0x0131, 0x02C6, 0x02DC, /* 0xF0 */
1437     0x00AF, 0x02D8, 0x02D9, 0x02DA, 0x00B8, 0x02DD, 0x02DB, 0x02C7  /* 0xF0 */
1440 /* ----------------------------------------------------------------------- */
1442 #define APPLEROMANCHAR_START            0x00A0
1443 #define APPLEROMANCHAR_END              0x00FF
1444 static unsigned char const aImplAPPLEROMANToCharTab[APPLEROMANCHAR_END - APPLEROMANCHAR_START + 1] =
1446 /*     0     1     2     3     4     5     6     7 */
1447 /*     8     9     A     B     C     D     E     F */
1448     0xCA, 0xC1, 0xA2, 0xA3,    0, 0xB4,    0, 0xA4, /* 0x00A0 */
1449     0xAC, 0xA9, 0xBB, 0xC7, 0xC2,    0, 0xA8, 0xF8, /* 0x00A0 */
1450     0xA1, 0xB1,    0,    0, 0xAB, 0xB5, 0xA6, 0xE1, /* 0x00B0 */
1451     0xFC,    0, 0xBC, 0xC8,    0,    0,    0, 0xC0, /* 0x00B0 */
1452     0xCB, 0xE7, 0xE5, 0xCC, 0x80, 0x81, 0xAE, 0x82, /* 0x00C0 */
1453     0xE9, 0x83, 0xE6, 0xE8, 0xED, 0xEA, 0xEB, 0xEC, /* 0x00C0 */
1454        0, 0x84, 0xF1, 0xEE, 0xEF, 0xCD, 0x85,    0, /* 0x00D0 */
1455     0xAF, 0xF4, 0xF2, 0xF3, 0x86,    0,    0, 0xA7, /* 0x00D0 */
1456     0x88, 0x87, 0x89, 0x8B, 0x8A, 0x8C, 0xBE, 0x8D, /* 0x00E0 */
1457     0x8F, 0x8E, 0x90, 0x91, 0x93, 0x92, 0x94, 0x95, /* 0x00E0 */
1458        0, 0x96, 0x98, 0x97, 0x99, 0x9B, 0x9A, 0xD6, /* 0x00F0 */
1459     0xBF, 0x9D, 0x9C, 0x9E, 0x9F,    0,    0, 0xD8  /* 0x00F0 */
1462 /* ----------------------------------------------------------------------- */
1464 #define APPLEROMANTOCHARTABEX_COUNT     48
1465 static ImplUniCharTabData const aImplAPPLEROMANToCharTabEx[APPLEROMANTOCHARTABEX_COUNT] =
1467   { 0x0131, 0xF5, 0 },
1468   { 0x0152, 0xCE, 0 },
1469   { 0x0153, 0xCF, 0 },
1470   { 0x0178, 0xD9, 0 },
1471   { 0x0192, 0xC4, 0 },
1472   { 0x02C6, 0xF6, 0 },
1473   { 0x02C7, 0xFF, 0 },
1474   { 0x02D8, 0xF9, 0 },
1475   { 0x02D9, 0xFA, 0 },
1476   { 0x02DA, 0xFB, 0 },
1477   { 0x02DB, 0xFE, 0 },
1478   { 0x02DC, 0xF7, 0 },
1479   { 0x02DD, 0xFD, 0 },
1480   { 0x03A9, 0xBD, 0 },
1481   { 0x03C0, 0xB9, 0 },
1482   { 0x2013, 0xD0, 0 },
1483   { 0x2014, 0xD1, 0 },
1484   { 0x2018, 0xD4, 0 },
1485   { 0x2019, 0xD5, 0 },
1486   { 0x201A, 0xE2, 0 },
1487   { 0x201C, 0xD2, 0 },
1488   { 0x201D, 0xD3, 0 },
1489   { 0x201E, 0xE3, 0 },
1490   { 0x2020, 0xA0, 0 },
1491   { 0x2021, 0xE0, 0 },
1492   { 0x2022, 0xA5, 0 },
1493   { 0x2026, 0xC9, 0 },
1494   { 0x2030, 0xE4, 0 },
1495   { 0x2039, 0xDC, 0 },
1496   { 0x203A, 0xDD, 0 },
1497   { 0x2044, 0xDA, 0 },
1498   { 0x20AC, 0xDB, 0 },
1499   { 0x2122, 0xAA, 0 },
1500   { 0x2202, 0xB6, 0 },
1501   { 0x2206, 0xC6, 0 },
1502   { 0x220F, 0xB8, 0 },
1503   { 0x2211, 0xB7, 0 },
1504   { 0x221A, 0xC3, 0 },
1505   { 0x221E, 0xB0, 0 },
1506   { 0x222B, 0xBA, 0 },
1507   { 0x2248, 0xC5, 0 },
1508   { 0x2260, 0xAD, 0 },
1509   { 0x2264, 0xB2, 0 },
1510   { 0x2265, 0xB3, 0 },
1511   { 0x25CA, 0xD7, 0 },
1512   { 0xF8FF, 0xF0, 0 },
1513   { 0xFB01, 0xDE, 0 },
1514   { 0xFB02, 0xDF, 0 }
1517 /* ----------------------------------------------------------------------- */
1519 static ImplByteConvertData const aImplAPPLEROMANByteCvtData =
1521     aImplAPPLEROMANToUniTab,
1522     NULL,
1523     APPLEROMANUNI_START, APPLEROMANUNI_END,
1524     NOTABUNI_START, NOTABUNI_END,
1525     aImplAPPLEROMANToCharTab,
1526     NULL,
1527     aImplAPPLEROMANToCharTabEx,
1528     APPLEROMANCHAR_START, APPLEROMANCHAR_END,
1529     NOTABCHAR_START, NOTABCHAR_END,
1530     APPLEROMANTOCHARTABEX_COUNT
1533 /* ----------------------------------------------------------------------- */
1535 static ImplTextEncodingData const aImplAPPLEROMANTextEncodingData
1536     = { { &aImplAPPLEROMANByteCvtData,
1537           ImplUpperCharToUnicode,
1538           sal::detail::textenc::convertUnicodeToChar,
1539           NULL,
1540           NULL,
1541           NULL,
1542           NULL,
1543           NULL,
1544           NULL },
1545         1,
1546         1,
1547         1,
1548         77,
1549         "iso8859-1",
1550         "macintosh",
1551         RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
1552     /* MAC, SCRIPT_LATIN, pc code page 850 */