xref: /aoo41x/main/sal/textenc/tcvtest1.tab (revision cdf0e10c)
1/*************************************************************************
2 *
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * Copyright 2000, 2010 Oracle and/or its affiliates.
6 *
7 * OpenOffice.org - a multi-platform office productivity suite
8 *
9 * This file is part of OpenOffice.org.
10 *
11 * OpenOffice.org is free software: you can redistribute it and/or modify
12 * it under the terms of the GNU Lesser General Public License version 3
13 * only, as published by the Free Software Foundation.
14 *
15 * OpenOffice.org is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18 * GNU Lesser General Public License version 3 for more details
19 * (a copy is included in the LICENSE file that accompanied this code).
20 *
21 * You should have received a copy of the GNU Lesser General Public License
22 * version 3 along with OpenOffice.org.  If not, see
23 * <http://www.openoffice.org/license.html>
24 * for a copy of the LGPLv3 License.
25 *
26 ************************************************************************/
27
28/* ======================================================================= */
29
30/* This file contain the tables for all 1 byte charsets, for the */
31/* following scripts: easteurope, cyrillic, greek, turkish */
32
33/* ======================================================================= */
34
35/* IBM-737 */
36/* Dos Standard CharSet for Greek */
37/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
38/* Convert-Tables: mappings/vendors/micsft/pc/cp737.txt from 04/24/96 Version 2.00 */
39/* Last-Changes from us: */
40
41/* ----------------------------------------------------------------------- */
42
43#define IBM737UNI_START                 0x80
44#define IBM737UNI_END                   0xFF
45static sal_uInt16 const aImplIBM737ToUniTab[IBM737UNI_END - IBM737UNI_START + 1] =
46{
47/*       0       1       2       3       4       5       6       7 */
48/*       8       9       A       B       C       D       E       F */
49    0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, /* 0x80 */
50    0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, 0x03A0, /* 0x80 */
51    0x03A1, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9, /* 0x90 */
52    0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 0x03B8, /* 0x90 */
53    0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, 0x03C0, /* 0xA0 */
54    0x03C1, 0x03C3, 0x03C2, 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, /* 0xA0 */
55    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, /* 0xB0 */
56    0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, /* 0xB0 */
57    0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, /* 0xC0 */
58    0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, /* 0xC0 */
59    0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, /* 0xD0 */
60    0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, /* 0xD0 */
61    0x03C9, 0x03AC, 0x03AD, 0x03AE, 0x03CA, 0x03AF, 0x03CC, 0x03CD, /* 0xE0 */
62    0x03CB, 0x03CE, 0x0386, 0x0388, 0x0389, 0x038A, 0x038C, 0x038E, /* 0xE0 */
63    0x038F, 0x00B1, 0x2265, 0x2264, 0x03AA, 0x03AB, 0x00F7, 0x2248, /* 0xF0 */
64    0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0  /* 0xF0 */
65};
66
67/* ----------------------------------------------------------------------- */
68
69#define IBM737CHAR_START                0x0386
70#define IBM737CHAR_END                  0x03CE
71static sal_uChar const aImplIBM737ToCharTab[IBM737CHAR_END - IBM737CHAR_START + 1] =
72{
73/*     0     1     2     3     4     5     6     7 */
74/*     8     9     A     B     C     D     E     F */
75                                        0xEA,    0, /* 0x0380 */
76    0xEB, 0xEC, 0xED,    0, 0xEE,    0, 0xEF, 0xF0, /* 0x0380 */
77       0, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, /* 0x0390 */
78    0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, /* 0x0390 */
79    0x8F, 0x90,    0, 0x91, 0x92, 0x93, 0x94, 0x95, /* 0x03A0 */
80    0x96, 0x97, 0xF4, 0xF5, 0xE1, 0xE2, 0xE3, 0xE5, /* 0x03A0 */
81       0, 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, /* 0x03B0 */
82    0x9F, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, /* 0x03B0 */
83    0xA7, 0xA8, 0xAA, 0xA9, 0xAB, 0xAC, 0xAD, 0xAE, /* 0x03C0 */
84    0xAF, 0xE0, 0xE4, 0xE8, 0xE6, 0xE7, 0xE9        /* 0x03C0 */
85};
86
87/* ----------------------------------------------------------------------- */
88
89#define IBM737TOCHARTABEX_COUNT         61
90static ImplUniCharTabData const aImplIBM737ToCharTabEx[IBM737TOCHARTABEX_COUNT] =
91{
92  { 0x00A0, 0xFF, 0 },
93  { 0x00B0, 0xF8, 0 },
94  { 0x00B1, 0xF1, 0 },
95  { 0x00B2, 0xFD, 0 },
96  { 0x00B7, 0xFA, 0 },
97  { 0x00F7, 0xF6, 0 },
98  { 0x207F, 0xFC, 0 },
99  { 0x2219, 0xF9, 0 },
100  { 0x221A, 0xFB, 0 },
101  { 0x2248, 0xF7, 0 },
102  { 0x2264, 0xF3, 0 },
103  { 0x2265, 0xF2, 0 },
104  { 0x2500, 0xC4, 0 },
105  { 0x2502, 0xB3, 0 },
106  { 0x250C, 0xDA, 0 },
107  { 0x2510, 0xBF, 0 },
108  { 0x2514, 0xC0, 0 },
109  { 0x2518, 0xD9, 0 },
110  { 0x251C, 0xC3, 0 },
111  { 0x2524, 0xB4, 0 },
112  { 0x252C, 0xC2, 0 },
113  { 0x2534, 0xC1, 0 },
114  { 0x253C, 0xC5, 0 },
115  { 0x2550, 0xCD, 0 },
116  { 0x2551, 0xBA, 0 },
117  { 0x2552, 0xD5, 0 },
118  { 0x2553, 0xD6, 0 },
119  { 0x2554, 0xC9, 0 },
120  { 0x2555, 0xB8, 0 },
121  { 0x2556, 0xB7, 0 },
122  { 0x2557, 0xBB, 0 },
123  { 0x2558, 0xD4, 0 },
124  { 0x2559, 0xD3, 0 },
125  { 0x255A, 0xC8, 0 },
126  { 0x255B, 0xBE, 0 },
127  { 0x255C, 0xBD, 0 },
128  { 0x255D, 0xBC, 0 },
129  { 0x255E, 0xC6, 0 },
130  { 0x255F, 0xC7, 0 },
131  { 0x2560, 0xCC, 0 },
132  { 0x2561, 0xB5, 0 },
133  { 0x2562, 0xB6, 0 },
134  { 0x2563, 0xB9, 0 },
135  { 0x2564, 0xD1, 0 },
136  { 0x2565, 0xD2, 0 },
137  { 0x2566, 0xCB, 0 },
138  { 0x2567, 0xCF, 0 },
139  { 0x2568, 0xD0, 0 },
140  { 0x2569, 0xCA, 0 },
141  { 0x256A, 0xD8, 0 },
142  { 0x256B, 0xD7, 0 },
143  { 0x256C, 0xCE, 0 },
144  { 0x2580, 0xDF, 0 },
145  { 0x2584, 0xDC, 0 },
146  { 0x2588, 0xDB, 0 },
147  { 0x258C, 0xDD, 0 },
148  { 0x2590, 0xDE, 0 },
149  { 0x2591, 0xB0, 0 },
150  { 0x2592, 0xB1, 0 },
151  { 0x2593, 0xB2, 0 },
152  { 0x25A0, 0xFE, 0 }
153};
154
155/* ----------------------------------------------------------------------- */
156
157static ImplByteConvertData const aImplIBM737ByteCvtData =
158{
159    aImplIBM737ToUniTab,
160    NULL,
161    IBM737UNI_START, IBM737UNI_END,
162    NOTABUNI_START, NOTABUNI_END,
163    aImplIBM737ToCharTab,
164    NULL,
165    aImplIBM737ToCharTabEx,
166    IBM737CHAR_START, IBM737CHAR_END,
167    NOTABCHAR_START, NOTABCHAR_END,
168    IBM737TOCHARTABEX_COUNT
169};
170
171/* ----------------------------------------------------------------------- */
172
173static ImplTextEncodingData const aImplIBM737TextEncodingData
174    = { { &aImplIBM737ByteCvtData,
175          ImplCharToUnicode,
176          ImplUnicodeToChar,
177          NULL,
178          NULL,
179          NULL,
180          NULL,
181          NULL,
182          NULL },
183        1,
184        1,
185        1,
186        161,
187        "iso8859-7",
188        "iso-8859-7",
189        RTL_TEXTENCODING_INFO_ASCII };
190    /* DOS/OS2, SCRIPT_GREEK, pc code page 737, mac encoding 6 */
191
192/* ======================================================================= */
193
194/* IBM-775 */
195/* Dos Standard CharSet for BalticRim */
196/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
197/* Convert-Tables: mappings/vendors/micsft/pc/cp775.txt from 04/24/96 Version 2.00 */
198/* Last-Changes from us: */
199
200/* ----------------------------------------------------------------------- */
201
202#define IBM775UNI_START                 0x80
203#define IBM775UNI_END                   0xFF
204static sal_uInt16 const aImplIBM775ToUniTab[IBM775UNI_END - IBM775UNI_START + 1] =
205{
206/*       0       1       2       3       4       5       6       7 */
207/*       8       9       A       B       C       D       E       F */
208    0x0106, 0x00FC, 0x00E9, 0x0101, 0x00E4, 0x0123, 0x00E5, 0x0107, /* 0x80 */
209    0x0142, 0x0113, 0x0156, 0x0157, 0x012B, 0x0179, 0x00C4, 0x00C5, /* 0x80 */
210    0x00C9, 0x00E6, 0x00C6, 0x014D, 0x00F6, 0x0122, 0x00A2, 0x015A, /* 0x90 */
211    0x015B, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x00D7, 0x00A4, /* 0x90 */
212    0x0100, 0x012A, 0x00F3, 0x017B, 0x017C, 0x017A, 0x201D, 0x00A6, /* 0xA0 */
213    0x00A9, 0x00AE, 0x00AC, 0x00BD, 0x00BC, 0x0141, 0x00AB, 0x00BB, /* 0xA0 */
214    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x0104, 0x010C, 0x0118, /* 0xB0 */
215    0x0116, 0x2563, 0x2551, 0x2557, 0x255D, 0x012E, 0x0160, 0x2510, /* 0xB0 */
216    0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x0172, 0x016A, /* 0xC0 */
217    0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x017D, /* 0xC0 */
218    0x0105, 0x010D, 0x0119, 0x0117, 0x012F, 0x0161, 0x0173, 0x016B, /* 0xD0 */
219    0x017E, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, /* 0xD0 */
220    0x00D3, 0x00DF, 0x014C, 0x0143, 0x00F5, 0x00D5, 0x00B5, 0x0144, /* 0xE0 */
221    0x0136, 0x0137, 0x013B, 0x013C, 0x0146, 0x0112, 0x0145, 0x2019, /* 0xE0 */
222    0x00AD, 0x00B1, 0x201C, 0x00BE, 0x00B6, 0x00A7, 0x00F7, 0x201E, /* 0xF0 */
223    0x00B0, 0x2219, 0x00B7, 0x00B9, 0x00B3, 0x00B2, 0x25A0, 0x00A0  /* 0xF0 */
224};
225
226/* ----------------------------------------------------------------------- */
227
228#define IBM775TOCHARTABEX_COUNT         128
229static ImplUniCharTabData const aImplIBM775ToCharTabEx[IBM775TOCHARTABEX_COUNT] =
230{
231  { 0x00A0, 0xFF, 0 },
232  { 0x00A2, 0x96, 0 },
233  { 0x00A3, 0x9C, 0 },
234  { 0x00A4, 0x9F, 0 },
235  { 0x00A6, 0xA7, 0 },
236  { 0x00A7, 0xF5, 0 },
237  { 0x00A9, 0xA8, 0 },
238  { 0x00AB, 0xAE, 0 },
239  { 0x00AC, 0xAA, 0 },
240  { 0x00AD, 0xF0, 0 },
241  { 0x00AE, 0xA9, 0 },
242  { 0x00B0, 0xF8, 0 },
243  { 0x00B1, 0xF1, 0 },
244  { 0x00B2, 0xFD, 0 },
245  { 0x00B3, 0xFC, 0 },
246  { 0x00B5, 0xE6, 0 },
247  { 0x00B6, 0xF4, 0 },
248  { 0x00B7, 0xFA, 0 },
249  { 0x00B9, 0xFB, 0 },
250  { 0x00BB, 0xAF, 0 },
251  { 0x00BC, 0xAC, 0 },
252  { 0x00BD, 0xAB, 0 },
253  { 0x00BE, 0xF3, 0 },
254  { 0x00C4, 0x8E, 0 },
255  { 0x00C5, 0x8F, 0 },
256  { 0x00C6, 0x92, 0 },
257  { 0x00C9, 0x90, 0 },
258  { 0x00D3, 0xE0, 0 },
259  { 0x00D5, 0xE5, 0 },
260  { 0x00D6, 0x99, 0 },
261  { 0x00D7, 0x9E, 0 },
262  { 0x00D8, 0x9D, 0 },
263  { 0x00DC, 0x9A, 0 },
264  { 0x00DF, 0xE1, 0 },
265  { 0x00E4, 0x84, 0 },
266  { 0x00E5, 0x86, 0 },
267  { 0x00E6, 0x91, 0 },
268  { 0x00E9, 0x82, 0 },
269  { 0x00F3, 0xA2, 0 },
270  { 0x00F5, 0xE4, 0 },
271  { 0x00F6, 0x94, 0 },
272  { 0x00F7, 0xF6, 0 },
273  { 0x00F8, 0x9B, 0 },
274  { 0x00FC, 0x81, 0 },
275  { 0x0100, 0xA0, 0 },
276  { 0x0101, 0x83, 0 },
277  { 0x0104, 0xB5, 0 },
278  { 0x0105, 0xD0, 0 },
279  { 0x0106, 0x80, 0 },
280  { 0x0107, 0x87, 0 },
281  { 0x010C, 0xB6, 0 },
282  { 0x010D, 0xD1, 0 },
283  { 0x0112, 0xED, 0 },
284  { 0x0113, 0x89, 0 },
285  { 0x0116, 0xB8, 0 },
286  { 0x0117, 0xD3, 0 },
287  { 0x0118, 0xB7, 0 },
288  { 0x0119, 0xD2, 0 },
289  { 0x0122, 0x95, 0 },
290  { 0x0123, 0x85, 0 },
291  { 0x012A, 0xA1, 0 },
292  { 0x012B, 0x8C, 0 },
293  { 0x012E, 0xBD, 0 },
294  { 0x012F, 0xD4, 0 },
295  { 0x0136, 0xE8, 0 },
296  { 0x0137, 0xE9, 0 },
297  { 0x013B, 0xEA, 0 },
298  { 0x013C, 0xEB, 0 },
299  { 0x0141, 0xAD, 0 },
300  { 0x0142, 0x88, 0 },
301  { 0x0143, 0xE3, 0 },
302  { 0x0144, 0xE7, 0 },
303  { 0x0145, 0xEE, 0 },
304  { 0x0146, 0xEC, 0 },
305  { 0x014C, 0xE2, 0 },
306  { 0x014D, 0x93, 0 },
307  { 0x0156, 0x8A, 0 },
308  { 0x0157, 0x8B, 0 },
309  { 0x015A, 0x97, 0 },
310  { 0x015B, 0x98, 0 },
311  { 0x0160, 0xBE, 0 },
312  { 0x0161, 0xD5, 0 },
313  { 0x016A, 0xC7, 0 },
314  { 0x016B, 0xD7, 0 },
315  { 0x0172, 0xC6, 0 },
316  { 0x0173, 0xD6, 0 },
317  { 0x0179, 0x8D, 0 },
318  { 0x017A, 0xA5, 0 },
319  { 0x017B, 0xA3, 0 },
320  { 0x017C, 0xA4, 0 },
321  { 0x017D, 0xCF, 0 },
322  { 0x017E, 0xD8, 0 },
323  { 0x2019, 0xEF, 0 },
324  { 0x201C, 0xF2, 0 },
325  { 0x201D, 0xA6, 0 },
326  { 0x201E, 0xF7, 0 },
327  { 0x2219, 0xF9, 0 },
328  { 0x2500, 0xC4, 0 },
329  { 0x2502, 0xB3, 0 },
330  { 0x250C, 0xDA, 0 },
331  { 0x2510, 0xBF, 0 },
332  { 0x2514, 0xC0, 0 },
333  { 0x2518, 0xD9, 0 },
334  { 0x251C, 0xC3, 0 },
335  { 0x2524, 0xB4, 0 },
336  { 0x252C, 0xC2, 0 },
337  { 0x2534, 0xC1, 0 },
338  { 0x253C, 0xC5, 0 },
339  { 0x2550, 0xCD, 0 },
340  { 0x2551, 0xBA, 0 },
341  { 0x2554, 0xC9, 0 },
342  { 0x2557, 0xBB, 0 },
343  { 0x255A, 0xC8, 0 },
344  { 0x255D, 0xBC, 0 },
345  { 0x2560, 0xCC, 0 },
346  { 0x2563, 0xB9, 0 },
347  { 0x2566, 0xCB, 0 },
348  { 0x2569, 0xCA, 0 },
349  { 0x256C, 0xCE, 0 },
350  { 0x2580, 0xDF, 0 },
351  { 0x2584, 0xDC, 0 },
352  { 0x2588, 0xDB, 0 },
353  { 0x258C, 0xDD, 0 },
354  { 0x2590, 0xDE, 0 },
355  { 0x2591, 0xB0, 0 },
356  { 0x2592, 0xB1, 0 },
357  { 0x2593, 0xB2, 0 },
358  { 0x25A0, 0xFE, 0 }
359};
360
361/* ----------------------------------------------------------------------- */
362
363static ImplByteConvertData const aImplIBM775ByteCvtData =
364{
365    aImplIBM775ToUniTab,
366    NULL,
367    IBM775UNI_START, IBM775UNI_END,
368    NOTABUNI_START, NOTABUNI_END,
369    NULL,
370    NULL,
371    aImplIBM775ToCharTabEx,
372    NOTABCHAR_START, NOTABCHAR_END,
373    NOTABCHAR_START, NOTABCHAR_END,
374    IBM775TOCHARTABEX_COUNT
375};
376
377/* ----------------------------------------------------------------------- */
378
379static ImplTextEncodingData const aImplIBM775TextEncodingData
380    = { { &aImplIBM775ByteCvtData,
381          ImplCharToUnicode,
382          ImplUnicodeToChar,
383          NULL,
384          NULL,
385          NULL,
386          NULL,
387          NULL,
388          NULL },
389        1,
390        1,
391        1,
392        186,
393        "iso8859-4",
394        "iso-8859-4",
395        RTL_TEXTENCODING_INFO_ASCII };
396    /* DOS/OS2, SCRIPT_BALTIC, pc code page 775, mac encoding 29 (?) */
397
398/* ======================================================================= */
399
400/* IBM-852 */
401/* Dos Standard CharSet for Central Europa (Jug., Pol., Tsch., Ung., ...) */
402/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
403/* Convert-Tables: mappings/vendors/micsft/pc/cp852.txt from 04/24/96 Version 2.00 */
404/* Last-Changes from us: */
405
406/* ----------------------------------------------------------------------- */
407
408#define IBM852UNI_START                 0x80
409#define IBM852UNI_END                   0xFF
410static sal_uInt16 const aImplIBM852ToUniTab[IBM852UNI_END - IBM852UNI_START + 1] =
411{
412/*       0       1       2       3       4       5       6       7 */
413/*       8       9       A       B       C       D       E       F */
414    0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x016F, 0x0107, 0x00E7, /* 0x80 */
415    0x0142, 0x00EB, 0x0150, 0x0151, 0x00EE, 0x0179, 0x00C4, 0x0106, /* 0x80 */
416    0x00C9, 0x0139, 0x013A, 0x00F4, 0x00F6, 0x013D, 0x013E, 0x015A, /* 0x90 */
417    0x015B, 0x00D6, 0x00DC, 0x0164, 0x0165, 0x0141, 0x00D7, 0x010D, /* 0x90 */
418    0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x0104, 0x0105, 0x017D, 0x017E, /* 0xA0 */
419    0x0118, 0x0119, 0x00AC, 0x017A, 0x010C, 0x015F, 0x00AB, 0x00BB, /* 0xA0 */
420    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00C1, 0x00C2, 0x011A, /* 0xB0 */
421    0x015E, 0x2563, 0x2551, 0x2557, 0x255D, 0x017B, 0x017C, 0x2510, /* 0xB0 */
422    0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x0102, 0x0103, /* 0xC0 */
423    0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x00A4, /* 0xC0 */
424    0x0111, 0x0110, 0x010E, 0x00CB, 0x010F, 0x0147, 0x00CD, 0x00CE, /* 0xD0 */
425    0x011B, 0x2518, 0x250C, 0x2588, 0x2584, 0x0162, 0x016E, 0x2580, /* 0xD0 */
426    0x00D3, 0x00DF, 0x00D4, 0x0143, 0x0144, 0x0148, 0x0160, 0x0161, /* 0xE0 */
427    0x0154, 0x00DA, 0x0155, 0x0170, 0x00FD, 0x00DD, 0x0163, 0x00B4, /* 0xE0 */
428    0x00AD, 0x02DD, 0x02DB, 0x02C7, 0x02D8, 0x00A7, 0x00F7, 0x00B8, /* 0xF0 */
429    0x00B0, 0x00A8, 0x02D9, 0x0171, 0x0158, 0x0159, 0x25A0, 0x00A0  /* 0xF0 */
430};
431
432/* ----------------------------------------------------------------------- */
433
434#define IBM852TOCHARTABEX_COUNT         128
435static ImplUniCharTabData const aImplIBM852ToCharTabEx[IBM852TOCHARTABEX_COUNT] =
436{
437  { 0x00A0, 0xFF, 0 },
438  { 0x00A4, 0xCF, 0 },
439  { 0x00A7, 0xF5, 0 },
440  { 0x00A8, 0xF9, 0 },
441  { 0x00AB, 0xAE, 0 },
442  { 0x00AC, 0xAA, 0 },
443  { 0x00AD, 0xF0, 0 },
444  { 0x00B0, 0xF8, 0 },
445  { 0x00B4, 0xEF, 0 },
446  { 0x00B8, 0xF7, 0 },
447  { 0x00BB, 0xAF, 0 },
448  { 0x00C1, 0xB5, 0 },
449  { 0x00C2, 0xB6, 0 },
450  { 0x00C4, 0x8E, 0 },
451  { 0x00C7, 0x80, 0 },
452  { 0x00C9, 0x90, 0 },
453  { 0x00CB, 0xD3, 0 },
454  { 0x00CD, 0xD6, 0 },
455  { 0x00CE, 0xD7, 0 },
456  { 0x00D3, 0xE0, 0 },
457  { 0x00D4, 0xE2, 0 },
458  { 0x00D6, 0x99, 0 },
459  { 0x00D7, 0x9E, 0 },
460  { 0x00DA, 0xE9, 0 },
461  { 0x00DC, 0x9A, 0 },
462  { 0x00DD, 0xED, 0 },
463  { 0x00DF, 0xE1, 0 },
464  { 0x00E1, 0xA0, 0 },
465  { 0x00E2, 0x83, 0 },
466  { 0x00E4, 0x84, 0 },
467  { 0x00E7, 0x87, 0 },
468  { 0x00E9, 0x82, 0 },
469  { 0x00EB, 0x89, 0 },
470  { 0x00ED, 0xA1, 0 },
471  { 0x00EE, 0x8C, 0 },
472  { 0x00F3, 0xA2, 0 },
473  { 0x00F4, 0x93, 0 },
474  { 0x00F6, 0x94, 0 },
475  { 0x00F7, 0xF6, 0 },
476  { 0x00FA, 0xA3, 0 },
477  { 0x00FC, 0x81, 0 },
478  { 0x00FD, 0xEC, 0 },
479  { 0x0102, 0xC6, 0 },
480  { 0x0103, 0xC7, 0 },
481  { 0x0104, 0xA4, 0 },
482  { 0x0105, 0xA5, 0 },
483  { 0x0106, 0x8F, 0 },
484  { 0x0107, 0x86, 0 },
485  { 0x010C, 0xAC, 0 },
486  { 0x010D, 0x9F, 0 },
487  { 0x010E, 0xD2, 0 },
488  { 0x010F, 0xD4, 0 },
489  { 0x0110, 0xD1, 0 },
490  { 0x0111, 0xD0, 0 },
491  { 0x0118, 0xA8, 0 },
492  { 0x0119, 0xA9, 0 },
493  { 0x011A, 0xB7, 0 },
494  { 0x011B, 0xD8, 0 },
495  { 0x0139, 0x91, 0 },
496  { 0x013A, 0x92, 0 },
497  { 0x013D, 0x95, 0 },
498  { 0x013E, 0x96, 0 },
499  { 0x0141, 0x9D, 0 },
500  { 0x0142, 0x88, 0 },
501  { 0x0143, 0xE3, 0 },
502  { 0x0144, 0xE4, 0 },
503  { 0x0147, 0xD5, 0 },
504  { 0x0148, 0xE5, 0 },
505  { 0x0150, 0x8A, 0 },
506  { 0x0151, 0x8B, 0 },
507  { 0x0154, 0xE8, 0 },
508  { 0x0155, 0xEA, 0 },
509  { 0x0158, 0xFC, 0 },
510  { 0x0159, 0xFD, 0 },
511  { 0x015A, 0x97, 0 },
512  { 0x015B, 0x98, 0 },
513  { 0x015E, 0xB8, 0 },
514  { 0x015F, 0xAD, 0 },
515  { 0x0160, 0xE6, 0 },
516  { 0x0161, 0xE7, 0 },
517  { 0x0162, 0xDD, 0 },
518  { 0x0163, 0xEE, 0 },
519  { 0x0164, 0x9B, 0 },
520  { 0x0165, 0x9C, 0 },
521  { 0x016E, 0xDE, 0 },
522  { 0x016F, 0x85, 0 },
523  { 0x0170, 0xEB, 0 },
524  { 0x0171, 0xFB, 0 },
525  { 0x0179, 0x8D, 0 },
526  { 0x017A, 0xAB, 0 },
527  { 0x017B, 0xBD, 0 },
528  { 0x017C, 0xBE, 0 },
529  { 0x017D, 0xA6, 0 },
530  { 0x017E, 0xA7, 0 },
531  { 0x02C7, 0xF3, 0 },
532  { 0x02D8, 0xF4, 0 },
533  { 0x02D9, 0xFA, 0 },
534  { 0x02DB, 0xF2, 0 },
535  { 0x02DD, 0xF1, 0 },
536  { 0x2500, 0xC4, 0 },
537  { 0x2502, 0xB3, 0 },
538  { 0x250C, 0xDA, 0 },
539  { 0x2510, 0xBF, 0 },
540  { 0x2514, 0xC0, 0 },
541  { 0x2518, 0xD9, 0 },
542  { 0x251C, 0xC3, 0 },
543  { 0x2524, 0xB4, 0 },
544  { 0x252C, 0xC2, 0 },
545  { 0x2534, 0xC1, 0 },
546  { 0x253C, 0xC5, 0 },
547  { 0x2550, 0xCD, 0 },
548  { 0x2551, 0xBA, 0 },
549  { 0x2554, 0xC9, 0 },
550  { 0x2557, 0xBB, 0 },
551  { 0x255A, 0xC8, 0 },
552  { 0x255D, 0xBC, 0 },
553  { 0x2560, 0xCC, 0 },
554  { 0x2563, 0xB9, 0 },
555  { 0x2566, 0xCB, 0 },
556  { 0x2569, 0xCA, 0 },
557  { 0x256C, 0xCE, 0 },
558  { 0x2580, 0xDF, 0 },
559  { 0x2584, 0xDC, 0 },
560  { 0x2588, 0xDB, 0 },
561  { 0x2591, 0xB0, 0 },
562  { 0x2592, 0xB1, 0 },
563  { 0x2593, 0xB2, 0 },
564  { 0x25A0, 0xFE, 0 }
565};
566
567/* ----------------------------------------------------------------------- */
568
569static ImplByteConvertData const aImplIBM852ByteCvtData =
570{
571    aImplIBM852ToUniTab,
572    NULL,
573    IBM852UNI_START, IBM852UNI_END,
574    NOTABUNI_START, NOTABUNI_END,
575    NULL,
576    NULL,
577    aImplIBM852ToCharTabEx,
578    NOTABCHAR_START, NOTABCHAR_END,
579    NOTABCHAR_START, NOTABCHAR_END,
580    IBM852TOCHARTABEX_COUNT
581};
582
583/* ----------------------------------------------------------------------- */
584
585static ImplTextEncodingData const aImplIBM852TextEncodingData
586    = { { &aImplIBM852ByteCvtData,
587          ImplCharToUnicode,
588          ImplUnicodeToChar,
589          NULL,
590          NULL,
591          NULL,
592          NULL,
593          NULL,
594          NULL },
595        1,
596        1,
597        1,
598        238,
599        "iso8859-2",
600        "ibm852",
601        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
602    /* DOS/OS2, SCRIPT_EASTEUROPE, pc code page 852, mac encoding 29 */
603
604/* ======================================================================= */
605
606/* IBM-855 */
607/* Dos Standard CharSet for Cyrillic */
608/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
609/* Convert-Tables: mappings/vendors/micsft/pc/cp855.txt from 04/24/96 Version 2.00 */
610/* Last-Changes from us: */
611
612/* ----------------------------------------------------------------------- */
613
614#define IBM855UNI_START                 0x80
615#define IBM855UNI_END                   0xFF
616static sal_uInt16 const aImplIBM855ToUniTab[IBM855UNI_END - IBM855UNI_START + 1] =
617{
618/*       0       1       2       3       4       5       6       7 */
619/*       8       9       A       B       C       D       E       F */
620    0x0452, 0x0402, 0x0453, 0x0403, 0x0451, 0x0401, 0x0454, 0x0404, /* 0x80 */
621    0x0455, 0x0405, 0x0456, 0x0406, 0x0457, 0x0407, 0x0458, 0x0408, /* 0x80 */
622    0x0459, 0x0409, 0x045A, 0x040A, 0x045B, 0x040B, 0x045C, 0x040C, /* 0x90 */
623    0x045E, 0x040E, 0x045F, 0x040F, 0x044E, 0x042E, 0x044A, 0x042A, /* 0x90 */
624    0x0430, 0x0410, 0x0431, 0x0411, 0x0446, 0x0426, 0x0434, 0x0414, /* 0xA0 */
625    0x0435, 0x0415, 0x0444, 0x0424, 0x0433, 0x0413, 0x00AB, 0x00BB, /* 0xA0 */
626    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x0445, 0x0425, 0x0438, /* 0xB0 */
627    0x0418, 0x2563, 0x2551, 0x2557, 0x255D, 0x0439, 0x0419, 0x2510, /* 0xB0 */
628    0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x043A, 0x041A, /* 0xC0 */
629    0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x00A4, /* 0xC0 */
630    0x043B, 0x041B, 0x043C, 0x041C, 0x043D, 0x041D, 0x043E, 0x041E, /* 0xD0 */
631    0x043F, 0x2518, 0x250C, 0x2588, 0x2584, 0x041F, 0x044F, 0x2580, /* 0xD0 */
632    0x042F, 0x0440, 0x0420, 0x0441, 0x0421, 0x0442, 0x0422, 0x0443, /* 0xE0 */
633    0x0423, 0x0436, 0x0416, 0x0432, 0x0412, 0x044C, 0x042C, 0x2116, /* 0xE0 */
634    0x00AD, 0x044B, 0x042B, 0x0437, 0x0417, 0x0448, 0x0428, 0x044D, /* 0xF0 */
635    0x042D, 0x0449, 0x0429, 0x0447, 0x0427, 0x00A7, 0x25A0, 0x00A0  /* 0xF0 */
636};
637
638/* ----------------------------------------------------------------------- */
639
640#define IBM855CHAR_START                0x0401
641#define IBM855CHAR_END                  0x045F
642static sal_uChar const aImplIBM855ToCharTab[IBM855CHAR_END - IBM855CHAR_START + 1] =
643{
644/*     0     1     2     3     4     5     6     7 */
645/*     8     9     A     B     C     D     E     F */
646          0x85, 0x81, 0x83, 0x87, 0x89, 0x8B, 0x8D, /* 0x0400 */
647    0x8F, 0x91, 0x93, 0x95, 0x97,    0, 0x99, 0x9B, /* 0x0400 */
648    0xA1, 0xA3, 0xEC, 0xAD, 0xA7, 0xA9, 0xEA, 0xF4, /* 0x0410 */
649    0xB8, 0xBE, 0xC7, 0xD1, 0xD3, 0xD5, 0xD7, 0xDD, /* 0x0410 */
650    0xE2, 0xE4, 0xE6, 0xE8, 0xAB, 0xB6, 0xA5, 0xFC, /* 0x0420 */
651    0xF6, 0xFA, 0x9F, 0xF2, 0xEE, 0xF8, 0x9D, 0xE0, /* 0x0420 */
652    0xA0, 0xA2, 0xEB, 0xAC, 0xA6, 0xA8, 0xE9, 0xF3, /* 0x0430 */
653    0xB7, 0xBD, 0xC6, 0xD0, 0xD2, 0xD4, 0xD6, 0xD8, /* 0x0430 */
654    0xE1, 0xE3, 0xE5, 0xE7, 0xAA, 0xB5, 0xA4, 0xFB, /* 0x0440 */
655    0xF5, 0xF9, 0x9E, 0xF1, 0xED, 0xF7, 0x9C, 0xDE, /* 0x0440 */
656       0, 0x84, 0x80, 0x82, 0x86, 0x88, 0x8A, 0x8C, /* 0x0450 */
657    0x8E, 0x90, 0x92, 0x94, 0x96,    0, 0x98, 0x9A, /* 0x0450 */
658};
659
660/* ----------------------------------------------------------------------- */
661
662#define IBM855TOCHARTABEX_COUNT         36
663static ImplUniCharTabData const aImplIBM855ToCharTabEx[IBM855TOCHARTABEX_COUNT] =
664{
665  { 0x00A0, 0xFF, 0 },
666  { 0x00A4, 0xCF, 0 },
667  { 0x00A7, 0xFD, 0 },
668  { 0x00AB, 0xAE, 0 },
669  { 0x00AD, 0xF0, 0 },
670  { 0x00BB, 0xAF, 0 },
671  { 0x2116, 0xEF, 0 },
672  { 0x2500, 0xC4, 0 },
673  { 0x2502, 0xB3, 0 },
674  { 0x250C, 0xDA, 0 },
675  { 0x2510, 0xBF, 0 },
676  { 0x2514, 0xC0, 0 },
677  { 0x2518, 0xD9, 0 },
678  { 0x251C, 0xC3, 0 },
679  { 0x2524, 0xB4, 0 },
680  { 0x252C, 0xC2, 0 },
681  { 0x2534, 0xC1, 0 },
682  { 0x253C, 0xC5, 0 },
683  { 0x2550, 0xCD, 0 },
684  { 0x2551, 0xBA, 0 },
685  { 0x2554, 0xC9, 0 },
686  { 0x2557, 0xBB, 0 },
687  { 0x255A, 0xC8, 0 },
688  { 0x255D, 0xBC, 0 },
689  { 0x2560, 0xCC, 0 },
690  { 0x2563, 0xB9, 0 },
691  { 0x2566, 0xCB, 0 },
692  { 0x2569, 0xCA, 0 },
693  { 0x256C, 0xCE, 0 },
694  { 0x2580, 0xDF, 0 },
695  { 0x2584, 0xDC, 0 },
696  { 0x2588, 0xDB, 0 },
697  { 0x2591, 0xB0, 0 },
698  { 0x2592, 0xB1, 0 },
699  { 0x2593, 0xB2, 0 },
700  { 0x25A0, 0xFE, 0 }
701};
702
703/* ----------------------------------------------------------------------- */
704
705static ImplByteConvertData const aImplIBM855ByteCvtData =
706{
707    aImplIBM855ToUniTab,
708    NULL,
709    IBM855UNI_START, IBM855UNI_END,
710    NOTABUNI_START, NOTABUNI_END,
711    aImplIBM855ToCharTab,
712    NULL,
713    aImplIBM855ToCharTabEx,
714    IBM855CHAR_START, IBM855CHAR_END,
715    NOTABCHAR_START, NOTABCHAR_END,
716    IBM855TOCHARTABEX_COUNT
717};
718
719/* ----------------------------------------------------------------------- */
720
721static ImplTextEncodingData const aImplIBM855TextEncodingData
722    = { { &aImplIBM855ByteCvtData,
723          ImplCharToUnicode,
724          ImplUnicodeToChar,
725          NULL,
726          NULL,
727          NULL,
728          NULL,
729          NULL,
730          NULL },
731        1,
732        1,
733        1,
734        204,
735        "iso8859-5",
736        "iso-8859-5",
737        RTL_TEXTENCODING_INFO_ASCII };
738    /* DOS/OS2, SCRIPT_CYRILLIC, pc code page 855, mac encoding 7 */
739
740/* ======================================================================= */
741
742/* IBM-857 */
743/* Dos Standard CharSet for Turkish */
744/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
745/* Convert-Tables: mappings/vendors/micsft/pc/cp857.txt from 04/24/96 Version 2.00 */
746/* Last-Changes from us: */
747
748/* ----------------------------------------------------------------------- */
749
750#define IBM857UNI_START                 0x80
751#define IBM857UNI_END                   0xFF
752static sal_uInt16 const aImplIBM857ToUniTab[IBM857UNI_END - IBM857UNI_START + 1] =
753{
754/*       0       1       2       3       4       5       6       7 */
755/*       8       9       A       B       C       D       E       F */
756    0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7, /* 0x80 */
757    0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x0131, 0x00C4, 0x00C5, /* 0x80 */
758    0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9, /* 0x90 */
759    0x0130, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x015E, 0x015F, /* 0x90 */
760    0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x011E, 0x011F, /* 0xA0 */
761    0x00BF, 0x00AE, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, /* 0xA0 */
762    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00C1, 0x00C2, 0x00C0, /* 0xB0 */
763    0x00A9, 0x2563, 0x2551, 0x2557, 0x255D, 0x00A2, 0x00A5, 0x2510, /* 0xB0 */
764    0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x00E3, 0x00C3, /* 0xC0 */
765    0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x00A4, /* 0xC0 */
766    0x00BA, 0x00AA, 0x00CA, 0x00CB, 0x00C8,      0, 0x00CD, 0x00CE, /* 0xD0 */
767    0x00CF, 0x2518, 0x250C, 0x2588, 0x2584, 0x00A6, 0x00CC, 0x2580, /* 0xD0 */
768    0x00D3, 0x00DF, 0x00D4, 0x00D2, 0x00F5, 0x00D5, 0x00B5,      0, /* 0xE0 */
769    0x00D7, 0x00DA, 0x00DB, 0x00D9, 0x00EC, 0x00FF, 0x00AF, 0x00B4, /* 0xE0 */
770    0x00AD, 0x00B1,      0, 0x00BE, 0x00B6, 0x00A7, 0x00F7, 0x00B8, /* 0xF0 */
771    0x00B0, 0x00A8, 0x00B7, 0x00B9, 0x00B3, 0x00B2, 0x25A0, 0x00A0  /* 0xF0 */
772};
773
774/* ----------------------------------------------------------------------- */
775
776#define IBM857CHAR_START                0x00A0
777#define IBM857CHAR_END                  0x00FF
778static sal_uChar const aImplIBM857ToCharTab[IBM857CHAR_END - IBM857CHAR_START + 1] =
779{
780/*     0     1     2     3     4     5     6     7 */
781/*     8     9     A     B     C     D     E     F */
782    0xFF, 0xAD, 0xBD, 0x9C, 0xCF, 0xBE, 0xDD, 0xF5, /* 0x00A0 */
783    0xF9, 0xB8, 0xD1, 0xAE, 0xAA, 0xF0, 0xA9, 0xEE, /* 0x00A0 */
784    0xF8, 0xF1, 0xFD, 0xFC, 0xEF, 0xE6, 0xF4, 0xFA, /* 0x00B0 */
785    0xF7, 0xFB, 0xD0, 0xAF, 0xAC, 0xAB, 0xF3, 0xA8, /* 0x00B0 */
786    0xB7, 0xB5, 0xB6, 0xC7, 0x8E, 0x8F, 0x92, 0x80, /* 0x00C0 */
787    0xD4, 0x90, 0xD2, 0xD3, 0xDE, 0xD6, 0xD7, 0xD8, /* 0x00C0 */
788       0, 0xA5, 0xE3, 0xE0, 0xE2, 0xE5, 0x99, 0xE8, /* 0x00D0 */
789    0x9D, 0xEB, 0xE9, 0xEA, 0x9A,    0,    0, 0xE1, /* 0x00D0 */
790    0x85, 0xA0, 0x83, 0xC6, 0x84, 0x86, 0x91, 0x87, /* 0x00E0 */
791    0x8A, 0x82, 0x88, 0x89, 0xEC, 0xA1, 0x8C, 0x8B, /* 0x00E0 */
792       0, 0xA4, 0x95, 0xA2, 0x93, 0xE4, 0x94, 0xF6, /* 0x00F0 */
793    0x9B, 0x97, 0xA3, 0x96, 0x81,    0,    0, 0xED  /* 0x00F0 */
794};
795
796/* ----------------------------------------------------------------------- */
797
798#define IBM857TOCHARTABEX_COUNT         35
799static ImplUniCharTabData const aImplIBM857ToCharTabEx[IBM857TOCHARTABEX_COUNT] =
800{
801  { 0x011E, 0xA6, 0 },
802  { 0x011F, 0xA7, 0 },
803  { 0x0130, 0x98, 0 },
804  { 0x0131, 0x8D, 0 },
805  { 0x015E, 0x9E, 0 },
806  { 0x015F, 0x9F, 0 },
807  { 0x2500, 0xC4, 0 },
808  { 0x2502, 0xB3, 0 },
809  { 0x250C, 0xDA, 0 },
810  { 0x2510, 0xBF, 0 },
811  { 0x2514, 0xC0, 0 },
812  { 0x2518, 0xD9, 0 },
813  { 0x251C, 0xC3, 0 },
814  { 0x2524, 0xB4, 0 },
815  { 0x252C, 0xC2, 0 },
816  { 0x2534, 0xC1, 0 },
817  { 0x253C, 0xC5, 0 },
818  { 0x2550, 0xCD, 0 },
819  { 0x2551, 0xBA, 0 },
820  { 0x2554, 0xC9, 0 },
821  { 0x2557, 0xBB, 0 },
822  { 0x255A, 0xC8, 0 },
823  { 0x255D, 0xBC, 0 },
824  { 0x2560, 0xCC, 0 },
825  { 0x2563, 0xB9, 0 },
826  { 0x2566, 0xCB, 0 },
827  { 0x2569, 0xCA, 0 },
828  { 0x256C, 0xCE, 0 },
829  { 0x2580, 0xDF, 0 },
830  { 0x2584, 0xDC, 0 },
831  { 0x2588, 0xDB, 0 },
832  { 0x2591, 0xB0, 0 },
833  { 0x2592, 0xB1, 0 },
834  { 0x2593, 0xB2, 0 },
835  { 0x25A0, 0xFE, 0 }
836};
837
838/* ----------------------------------------------------------------------- */
839
840static ImplByteConvertData const aImplIBM857ByteCvtData =
841{
842    aImplIBM857ToUniTab,
843    NULL,
844    IBM857UNI_START, IBM857UNI_END,
845    NOTABUNI_START, NOTABUNI_END,
846    aImplIBM857ToCharTab,
847    NULL,
848    aImplIBM857ToCharTabEx,
849    IBM857CHAR_START, IBM857CHAR_END,
850    NOTABCHAR_START, NOTABCHAR_END,
851    IBM857TOCHARTABEX_COUNT
852};
853
854/* ----------------------------------------------------------------------- */
855
856static ImplTextEncodingData const aImplIBM857TextEncodingData
857    = { { &aImplIBM857ByteCvtData,
858          ImplCharToUnicode,
859          ImplUnicodeToChar,
860          NULL,
861          NULL,
862          NULL,
863          NULL,
864          NULL,
865          NULL },
866        1,
867        1,
868        1,
869        162,
870        "iso8859-9",
871        "iso-8859-9",
872        RTL_TEXTENCODING_INFO_ASCII };
873    /* DOS/OS2, SCRIPT_TURKISH, pc code page 857, mac encoding 35 */
874
875/* ======================================================================= */
876
877/* IBM-866 */
878/* Dos Standard CharSet for CyrillicRussian */
879/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
880/* Convert-Tables: mappings/vendors/micsft/pc/cp866.txt from 04/24/96 Version 2.00 */
881/* Last-Changes from us: */
882
883/* ----------------------------------------------------------------------- */
884
885#define IBM866UNI_START                 0x80
886#define IBM866UNI_END                   0xFF
887static sal_uInt16 const aImplIBM866ToUniTab[IBM866UNI_END - IBM866UNI_START + 1] =
888{
889/*       0       1       2       3       4       5       6       7 */
890/*       8       9       A       B       C       D       E       F */
891    0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, /* 0x80 */
892    0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, /* 0x80 */
893    0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, /* 0x90 */
894    0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, /* 0x90 */
895    0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, /* 0xA0 */
896    0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, /* 0xA0 */
897    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, /* 0xB0 */
898    0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, /* 0xB0 */
899    0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, /* 0xC0 */
900    0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, /* 0xC0 */
901    0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, /* 0xD0 */
902    0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, /* 0xD0 */
903    0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, /* 0xE0 */
904    0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F, /* 0xE0 */
905    0x0401, 0x0451, 0x0404, 0x0454, 0x0407, 0x0457, 0x040E, 0x045E, /* 0xF0 */
906    0x00B0, 0x2219, 0x00B7, 0x221A, 0x2116, 0x00A4, 0x25A0, 0x00A0  /* 0xF0 */
907};
908
909/* ----------------------------------------------------------------------- */
910
911#define IBM866CHAR_START                0x0401
912#define IBM866CHAR_END                  0x045E
913static sal_uChar const aImplIBM866ToCharTab[IBM866CHAR_END - IBM866CHAR_START + 1] =
914{
915/*     0     1     2     3     4     5     6     7 */
916/*     8     9     A     B     C     D     E     F */
917          0xF0,    0,    0, 0xF2,    0,    0, 0xF4, /* 0x0400 */
918       0,    0,    0,    0,    0,    0, 0xF6,    0, /* 0x0400 */
919    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x0410 */
920    0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, /* 0x0410 */
921    0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, /* 0x0420 */
922    0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F, /* 0x0420 */
923    0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, /* 0x0430 */
924    0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, /* 0x0430 */
925    0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, /* 0x0440 */
926    0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, /* 0x0440 */
927       0, 0xF1,    0,    0, 0xF3,    0,    0, 0xF5, /* 0x0450 */
928       0,    0,    0,    0,    0,    0, 0xF7        /* 0x0450 */
929};
930
931/* ----------------------------------------------------------------------- */
932
933#define IBM866TOCHARTABEX_COUNT         56
934static ImplUniCharTabData const aImplIBM866ToCharTabEx[IBM866TOCHARTABEX_COUNT] =
935{
936  { 0x00A0, 0xFF, 0 },
937  { 0x00A4, 0xFD, 0 },
938  { 0x00B0, 0xF8, 0 },
939  { 0x00B7, 0xFA, 0 },
940  { 0x2116, 0xFC, 0 },
941  { 0x2219, 0xF9, 0 },
942  { 0x221A, 0xFB, 0 },
943  { 0x2500, 0xC4, 0 },
944  { 0x2502, 0xB3, 0 },
945  { 0x250C, 0xDA, 0 },
946  { 0x2510, 0xBF, 0 },
947  { 0x2514, 0xC0, 0 },
948  { 0x2518, 0xD9, 0 },
949  { 0x251C, 0xC3, 0 },
950  { 0x2524, 0xB4, 0 },
951  { 0x252C, 0xC2, 0 },
952  { 0x2534, 0xC1, 0 },
953  { 0x253C, 0xC5, 0 },
954  { 0x2550, 0xCD, 0 },
955  { 0x2551, 0xBA, 0 },
956  { 0x2552, 0xD5, 0 },
957  { 0x2553, 0xD6, 0 },
958  { 0x2554, 0xC9, 0 },
959  { 0x2555, 0xB8, 0 },
960  { 0x2556, 0xB7, 0 },
961  { 0x2557, 0xBB, 0 },
962  { 0x2558, 0xD4, 0 },
963  { 0x2559, 0xD3, 0 },
964  { 0x255A, 0xC8, 0 },
965  { 0x255B, 0xBE, 0 },
966  { 0x255C, 0xBD, 0 },
967  { 0x255D, 0xBC, 0 },
968  { 0x255E, 0xC6, 0 },
969  { 0x255F, 0xC7, 0 },
970  { 0x2560, 0xCC, 0 },
971  { 0x2561, 0xB5, 0 },
972  { 0x2562, 0xB6, 0 },
973  { 0x2563, 0xB9, 0 },
974  { 0x2564, 0xD1, 0 },
975  { 0x2565, 0xD2, 0 },
976  { 0x2566, 0xCB, 0 },
977  { 0x2567, 0xCF, 0 },
978  { 0x2568, 0xD0, 0 },
979  { 0x2569, 0xCA, 0 },
980  { 0x256A, 0xD8, 0 },
981  { 0x256B, 0xD7, 0 },
982  { 0x256C, 0xCE, 0 },
983  { 0x2580, 0xDF, 0 },
984  { 0x2584, 0xDC, 0 },
985  { 0x2588, 0xDB, 0 },
986  { 0x258C, 0xDD, 0 },
987  { 0x2590, 0xDE, 0 },
988  { 0x2591, 0xB0, 0 },
989  { 0x2592, 0xB1, 0 },
990  { 0x2593, 0xB2, 0 },
991  { 0x25A0, 0xFE, 0 }
992};
993
994/* ----------------------------------------------------------------------- */
995
996static ImplByteConvertData const aImplIBM866ByteCvtData =
997{
998    aImplIBM866ToUniTab,
999    NULL,
1000    IBM866UNI_START, IBM866UNI_END,
1001    NOTABUNI_START, NOTABUNI_END,
1002    aImplIBM866ToCharTab,
1003    NULL,
1004    aImplIBM866ToCharTabEx,
1005    IBM866CHAR_START, IBM866CHAR_END,
1006    NOTABCHAR_START, NOTABCHAR_END,
1007    IBM866TOCHARTABEX_COUNT
1008};
1009
1010/* ----------------------------------------------------------------------- */
1011
1012static ImplTextEncodingData const aImplIBM866TextEncodingData
1013    = { { &aImplIBM866ByteCvtData,
1014          ImplCharToUnicode,
1015          ImplUnicodeToChar,
1016          NULL,
1017          NULL,
1018          NULL,
1019          NULL,
1020          NULL,
1021          NULL },
1022        1,
1023        1,
1024        1,
1025        204,
1026        "iso8859-5",
1027        "cp866",
1028        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
1029    /* DOS/OS2, SCRIPT_LATIN, pc code page 866, mac encoding 7 */
1030
1031/* ======================================================================= */
1032
1033/* IBM-869 */
1034/* Dos Standard CharSet for Greek2 */
1035/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
1036/* Convert-Tables: mappings/vendors/micsft/pc/cp869.txt from 04/24/96 Version 2.00 */
1037/* Last-Changes from us: */
1038
1039/* ----------------------------------------------------------------------- */
1040
1041#define IBM869UNI_START                 0x86
1042#define IBM869UNI_END                   0xFF
1043static sal_uInt16 const aImplIBM869ToUniTab[IBM869UNI_END - IBM869UNI_START + 1] =
1044{
1045/*       0       1       2       3       4       5       6       7 */
1046/*       8       9       A       B       C       D       E       F */
1047                                                    0x0386,      0, /* 0x80 */
1048    0x00B7, 0x00AC, 0x00A6, 0x2018, 0x2019, 0x0388, 0x2015, 0x0389, /* 0x80 */
1049    0x038A, 0x03AA, 0x038C,      0,      0, 0x038E, 0x03AB, 0x00A9, /* 0x90 */
1050    0x038F, 0x00B2, 0x00B3, 0x03AC, 0x00A3, 0x03AD, 0x03AE, 0x03AF, /* 0x90 */
1051    0x03CA, 0x0390, 0x03CC, 0x03CD, 0x0391, 0x0392, 0x0393, 0x0394, /* 0xA0 */
1052    0x0395, 0x0396, 0x0397, 0x00BD, 0x0398, 0x0399, 0x00AB, 0x00BB, /* 0xA0 */
1053    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x039A, 0x039B, 0x039C, /* 0xB0 */
1054    0x039D, 0x2563, 0x2551, 0x2557, 0x255D, 0x039E, 0x039F, 0x2510, /* 0xB0 */
1055    0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x03A0, 0x03A1, /* 0xC0 */
1056    0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x03A3, /* 0xC0 */
1057    0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9, 0x03B1, 0x03B2, /* 0xD0 */
1058    0x03B3, 0x2518, 0x250C, 0x2588, 0x2584, 0x03B4, 0x03B5, 0x2580, /* 0xD0 */
1059    0x03B6, 0x03B7, 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, /* 0xE0 */
1060    0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C3, 0x03C2, 0x03C4, 0x0384, /* 0xE0 */
1061    0x00AD, 0x00B1, 0x03C5, 0x03C6, 0x03C7, 0x00A7, 0x03C8, 0x0385, /* 0xF0 */
1062    0x00B0, 0x00A8, 0x03C9, 0x03CB, 0x03B0, 0x03CE, 0x25A0, 0x00A0  /* 0xF0 */
1063};
1064
1065/* ----------------------------------------------------------------------- */
1066
1067#define IBM869CHAR_START                0x0384
1068#define IBM869CHAR_END                  0x03CE
1069static sal_uChar const aImplIBM869ToCharTab[IBM869CHAR_END - IBM869CHAR_START + 1] =
1070{
1071/*     0     1     2     3     4     5     6     7 */
1072/*     8     9     A     B     C     D     E     F */
1073                            0xEF, 0xF7, 0x86,    0, /* 0x0380 */
1074    0x8D, 0x8F, 0x90,    0, 0x92,    0, 0x95, 0x98, /* 0x0380 */
1075    0xA1, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, /* 0x0390 */
1076    0xAC, 0xAD, 0xB5, 0xB6, 0xB7, 0xB8, 0xBD, 0xBE, /* 0x0390 */
1077    0xC6, 0xC7,    0, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, /* 0x03A0 */
1078    0xD4, 0xD5, 0x91, 0x96, 0x9B, 0x9D, 0x9E, 0x9F, /* 0x03A0 */
1079    0xFC, 0xD6, 0xD7, 0xD8, 0xDD, 0xDE, 0xE0, 0xE1, /* 0x03B0 */
1080    0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, /* 0x03B0 */
1081    0xEA, 0xEB, 0xED, 0xEC, 0xEE, 0xF2, 0xF3, 0xF4, /* 0x03C0 */
1082    0xF6, 0xFA, 0xA0, 0xFB, 0xA2, 0xA3, 0xFD        /* 0x03C0 */
1083};
1084
1085/* ----------------------------------------------------------------------- */
1086
1087#define IBM869TOCHARTABEX_COUNT         48
1088static ImplUniCharTabData const aImplIBM869ToCharTabEx[IBM869TOCHARTABEX_COUNT] =
1089{
1090  { 0x00A0, 0xFF, 0 },
1091  { 0x00A3, 0x9C, 0 },
1092  { 0x00A6, 0x8A, 0 },
1093  { 0x00A7, 0xF5, 0 },
1094  { 0x00A8, 0xF9, 0 },
1095  { 0x00A9, 0x97, 0 },
1096  { 0x00AB, 0xAE, 0 },
1097  { 0x00AC, 0x89, 0 },
1098  { 0x00AD, 0xF0, 0 },
1099  { 0x00B0, 0xF8, 0 },
1100  { 0x00B1, 0xF1, 0 },
1101  { 0x00B2, 0x99, 0 },
1102  { 0x00B3, 0x9A, 0 },
1103  { 0x00B7, 0x88, 0 },
1104  { 0x00BB, 0xAF, 0 },
1105  { 0x00BD, 0xAB, 0 },
1106  { 0x2015, 0x8E, 0 },
1107  { 0x2018, 0x8B, 0 },
1108  { 0x2019, 0x8C, 0 },
1109  { 0x2500, 0xC4, 0 },
1110  { 0x2502, 0xB3, 0 },
1111  { 0x250C, 0xDA, 0 },
1112  { 0x2510, 0xBF, 0 },
1113  { 0x2514, 0xC0, 0 },
1114  { 0x2518, 0xD9, 0 },
1115  { 0x251C, 0xC3, 0 },
1116  { 0x2524, 0xB4, 0 },
1117  { 0x252C, 0xC2, 0 },
1118  { 0x2534, 0xC1, 0 },
1119  { 0x253C, 0xC5, 0 },
1120  { 0x2550, 0xCD, 0 },
1121  { 0x2551, 0xBA, 0 },
1122  { 0x2554, 0xC9, 0 },
1123  { 0x2557, 0xBB, 0 },
1124  { 0x255A, 0xC8, 0 },
1125  { 0x255D, 0xBC, 0 },
1126  { 0x2560, 0xCC, 0 },
1127  { 0x2563, 0xB9, 0 },
1128  { 0x2566, 0xCB, 0 },
1129  { 0x2569, 0xCA, 0 },
1130  { 0x256C, 0xCE, 0 },
1131  { 0x2580, 0xDF, 0 },
1132  { 0x2584, 0xDC, 0 },
1133  { 0x2588, 0xDB, 0 },
1134  { 0x2591, 0xB0, 0 },
1135  { 0x2592, 0xB1, 0 },
1136  { 0x2593, 0xB2, 0 },
1137  { 0x25A0, 0xFE, 0 }
1138};
1139
1140/* ----------------------------------------------------------------------- */
1141
1142static ImplByteConvertData const aImplIBM869ByteCvtData =
1143{
1144    aImplIBM869ToUniTab,
1145    NULL,
1146    IBM869UNI_START, IBM869UNI_END,
1147    NOTABUNI_START, NOTABUNI_END,
1148    aImplIBM869ToCharTab,
1149    NULL,
1150    aImplIBM869ToCharTabEx,
1151    IBM869CHAR_START, IBM869CHAR_END,
1152    NOTABCHAR_START, NOTABCHAR_END,
1153    IBM869TOCHARTABEX_COUNT
1154};
1155
1156/* ----------------------------------------------------------------------- */
1157
1158static ImplTextEncodingData const aImplIBM869TextEncodingData
1159    = { { &aImplIBM869ByteCvtData,
1160          ImplCharToUnicode,
1161          ImplUnicodeToChar,
1162          NULL,
1163          NULL,
1164          NULL,
1165          NULL,
1166          NULL,
1167          NULL },
1168        1,
1169        1,
1170        1,
1171        161,
1172        "iso8859-7",
1173        "iso-8859-7",
1174        RTL_TEXTENCODING_INFO_ASCII };
1175    /* DOS/OS2, SCRIPT_LATIN, pc code page 869, mac encoding 6 */
1176
1177/* ======================================================================= */
1178
1179/* MS-1250 */
1180/* Windows CodePage for Eastern European (WinLatin2) */
1181/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
1182/* Convert-Tables: mappings/vendors/micsft/windows/cp1250.txt from 04/15/98 Version 2.01 */
1183/* Last-Changes from us: */
1184
1185/* ----------------------------------------------------------------------- */
1186
1187#define MS1250UNI_START                 0x80
1188#define MS1250UNI_END                   0xFF
1189static sal_uInt16 const aImplMS1250ToUniTab[MS1250UNI_END - MS1250UNI_START + 1] =
1190{
1191/*  0       1       2       3       4       5       6       7 */
1192/*  8       9       A       B       C       D       E       F */
1193    0x20AC,      0, 0x201A,      0, 0x201E, 0x2026, 0x2020, 0x2021, /* 0x80 */
1194         0, 0x2030, 0x0160, 0x2039, 0x015A, 0x0164, 0x017D, 0x0179, /* 0x80 */
1195         0, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, /* 0x90 */
1196         0, 0x2122, 0x0161, 0x203A, 0x015B, 0x0165, 0x017E, 0x017A, /* 0x90 */
1197    0x00A0, 0x02C7, 0x02D8, 0x0141, 0x00A4, 0x0104, 0x00A6, 0x00A7, /* 0xA0 */
1198    0x00A8, 0x00A9, 0x015E, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x017B, /* 0xA0 */
1199    0x00B0, 0x00B1, 0x02DB, 0x0142, 0x00B4, 0x00B5, 0x00B6, 0x00B7, /* 0xB0 */
1200    0x00B8, 0x0105, 0x015F, 0x00BB, 0x013D, 0x02DD, 0x013E, 0x017C, /* 0xB0 */
1201    0x0154, 0x00C1, 0x00C2, 0x0102, 0x00C4, 0x0139, 0x0106, 0x00C7, /* 0xC0 */
1202    0x010C, 0x00C9, 0x0118, 0x00CB, 0x011A, 0x00CD, 0x00CE, 0x010E, /* 0xC0 */
1203    0x0110, 0x0143, 0x0147, 0x00D3, 0x00D4, 0x0150, 0x00D6, 0x00D7, /* 0xD0 */
1204    0x0158, 0x016E, 0x00DA, 0x0170, 0x00DC, 0x00DD, 0x0162, 0x00DF, /* 0xD0 */
1205    0x0155, 0x00E1, 0x00E2, 0x0103, 0x00E4, 0x013A, 0x0107, 0x00E7, /* 0xE0 */
1206    0x010D, 0x00E9, 0x0119, 0x00EB, 0x011B, 0x00ED, 0x00EE, 0x010F, /* 0xE0 */
1207    0x0111, 0x0144, 0x0148, 0x00F3, 0x00F4, 0x0151, 0x00F6, 0x00F7, /* 0xF0 */
1208    0x0159, 0x016F, 0x00FA, 0x0171, 0x00FC, 0x00FD, 0x0163, 0x02D9  /* 0xF0 */
1209};
1210
1211/* ----------------------------------------------------------------------- */
1212
1213#define MS1250TOCHARTABEX_COUNT         123
1214static ImplUniCharTabData const aImplMS1250ToCharTabEx[MS1250TOCHARTABEX_COUNT] =
1215{
1216  { 0x00A0, 0xA0, 0 },
1217  { 0x00A4, 0xA4, 0 },
1218  { 0x00A6, 0xA6, 0 },
1219  { 0x00A7, 0xA7, 0 },
1220  { 0x00A8, 0xA8, 0 },
1221  { 0x00A9, 0xA9, 0 },
1222  { 0x00AB, 0xAB, 0 },
1223  { 0x00AC, 0xAC, 0 },
1224  { 0x00AD, 0xAD, 0 },
1225  { 0x00AE, 0xAE, 0 },
1226  { 0x00B0, 0xB0, 0 },
1227  { 0x00B1, 0xB1, 0 },
1228  { 0x00B4, 0xB4, 0 },
1229  { 0x00B5, 0xB5, 0 },
1230  { 0x00B6, 0xB6, 0 },
1231  { 0x00B7, 0xB7, 0 },
1232  { 0x00B8, 0xB8, 0 },
1233  { 0x00BB, 0xBB, 0 },
1234  { 0x00C1, 0xC1, 0 },
1235  { 0x00C2, 0xC2, 0 },
1236  { 0x00C4, 0xC4, 0 },
1237  { 0x00C7, 0xC7, 0 },
1238  { 0x00C9, 0xC9, 0 },
1239  { 0x00CB, 0xCB, 0 },
1240  { 0x00CD, 0xCD, 0 },
1241  { 0x00CE, 0xCE, 0 },
1242  { 0x00D3, 0xD3, 0 },
1243  { 0x00D4, 0xD4, 0 },
1244  { 0x00D6, 0xD6, 0 },
1245  { 0x00D7, 0xD7, 0 },
1246  { 0x00DA, 0xDA, 0 },
1247  { 0x00DC, 0xDC, 0 },
1248  { 0x00DD, 0xDD, 0 },
1249  { 0x00DF, 0xDF, 0 },
1250  { 0x00E1, 0xE1, 0 },
1251  { 0x00E2, 0xE2, 0 },
1252  { 0x00E4, 0xE4, 0 },
1253  { 0x00E7, 0xE7, 0 },
1254  { 0x00E9, 0xE9, 0 },
1255  { 0x00EB, 0xEB, 0 },
1256  { 0x00ED, 0xED, 0 },
1257  { 0x00EE, 0xEE, 0 },
1258  { 0x00F3, 0xF3, 0 },
1259  { 0x00F4, 0xF4, 0 },
1260  { 0x00F6, 0xF6, 0 },
1261  { 0x00F7, 0xF7, 0 },
1262  { 0x00FA, 0xFA, 0 },
1263  { 0x00FC, 0xFC, 0 },
1264  { 0x00FD, 0xFD, 0 },
1265  { 0x0102, 0xC3, 0 },
1266  { 0x0103, 0xE3, 0 },
1267  { 0x0104, 0xA5, 0 },
1268  { 0x0105, 0xB9, 0 },
1269  { 0x0106, 0xC6, 0 },
1270  { 0x0107, 0xE6, 0 },
1271  { 0x010C, 0xC8, 0 },
1272  { 0x010D, 0xE8, 0 },
1273  { 0x010E, 0xCF, 0 },
1274  { 0x010F, 0xEF, 0 },
1275  { 0x0110, 0xD0, 0 },
1276  { 0x0111, 0xF0, 0 },
1277  { 0x0118, 0xCA, 0 },
1278  { 0x0119, 0xEA, 0 },
1279  { 0x011A, 0xCC, 0 },
1280  { 0x011B, 0xEC, 0 },
1281  { 0x0139, 0xC5, 0 },
1282  { 0x013A, 0xE5, 0 },
1283  { 0x013D, 0xBC, 0 },
1284  { 0x013E, 0xBE, 0 },
1285  { 0x0141, 0xA3, 0 },
1286  { 0x0142, 0xB3, 0 },
1287  { 0x0143, 0xD1, 0 },
1288  { 0x0144, 0xF1, 0 },
1289  { 0x0147, 0xD2, 0 },
1290  { 0x0148, 0xF2, 0 },
1291  { 0x0150, 0xD5, 0 },
1292  { 0x0151, 0xF5, 0 },
1293  { 0x0154, 0xC0, 0 },
1294  { 0x0155, 0xE0, 0 },
1295  { 0x0158, 0xD8, 0 },
1296  { 0x0159, 0xF8, 0 },
1297  { 0x015A, 0x8C, 0 },
1298  { 0x015B, 0x9C, 0 },
1299  { 0x015E, 0xAA, 0 },
1300  { 0x015F, 0xBA, 0 },
1301  { 0x0160, 0x8A, 0 },
1302  { 0x0161, 0x9A, 0 },
1303  { 0x0162, 0xDE, 0 },
1304  { 0x0163, 0xFE, 0 },
1305  { 0x0164, 0x8D, 0 },
1306  { 0x0165, 0x9D, 0 },
1307  { 0x016E, 0xD9, 0 },
1308  { 0x016F, 0xF9, 0 },
1309  { 0x0170, 0xDB, 0 },
1310  { 0x0171, 0xFB, 0 },
1311  { 0x0179, 0x8F, 0 },
1312  { 0x017A, 0x9F, 0 },
1313  { 0x017B, 0xAF, 0 },
1314  { 0x017C, 0xBF, 0 },
1315  { 0x017D, 0x8E, 0 },
1316  { 0x017E, 0x9E, 0 },
1317  { 0x02C7, 0xA1, 0 },
1318  { 0x02D8, 0xA2, 0 },
1319  { 0x02D9, 0xFF, 0 },
1320  { 0x02DB, 0xB2, 0 },
1321  { 0x02DD, 0xBD, 0 },
1322  { 0x2013, 0x96, 0 },
1323  { 0x2014, 0x97, 0 },
1324  { 0x2018, 0x91, 0 },
1325  { 0x2019, 0x92, 0 },
1326  { 0x201A, 0x82, 0 },
1327  { 0x201C, 0x93, 0 },
1328  { 0x201D, 0x94, 0 },
1329  { 0x201E, 0x84, 0 },
1330  { 0x2020, 0x86, 0 },
1331  { 0x2021, 0x87, 0 },
1332  { 0x2022, 0x95, 0 },
1333  { 0x2026, 0x85, 0 },
1334  { 0x2030, 0x89, 0 },
1335  { 0x2039, 0x8B, 0 },
1336  { 0x203A, 0x9B, 0 },
1337  { 0x20AC, 0x80, 0 },
1338  { 0x2122, 0x99, 0 }
1339};
1340
1341/* ----------------------------------------------------------------------- */
1342
1343static ImplByteConvertData const aImplMS1250ByteCvtData =
1344{
1345    aImplMS1250ToUniTab,
1346    NULL,
1347    MS1250UNI_START, MS1250UNI_END,
1348    NOTABUNI_START, NOTABUNI_END,
1349    NULL,
1350    NULL,
1351    aImplMS1250ToCharTabEx,
1352    NOTABCHAR_START, NOTABCHAR_END,
1353    NOTABCHAR_START, NOTABCHAR_END,
1354    MS1250TOCHARTABEX_COUNT
1355};
1356
1357/* ----------------------------------------------------------------------- */
1358
1359static ImplTextEncodingData const aImplMS1250TextEncodingData
1360    = { { &aImplMS1250ByteCvtData,
1361          ImplCharToUnicode,
1362          ImplUnicodeToChar,
1363          NULL,
1364          NULL,
1365          NULL,
1366          NULL,
1367          NULL,
1368          NULL },
1369        1,
1370        1,
1371        1,
1372        238,
1373        "iso8859-2",
1374        "windows-1250",
1375        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
1376    /* WIN, SCRIPT_EASTEUROPE, pc code page 852, mac encoding 29 */
1377
1378/* ======================================================================= */
1379
1380/* MS-1251 */
1381/* Windows CodePage for Cyrillic */
1382/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
1383/* Convert-Tables: mappings/vendors/micsft/windows/cp1251.txt from 04/15/98 Version 2.01 */
1384/* Last-Changes from us: */
1385
1386/* ----------------------------------------------------------------------- */
1387
1388#define MS1251UNI_START                 0x80
1389#define MS1251UNI_END                   0xFF
1390static sal_uInt16 const aImplMS1251ToUniTab[MS1251UNI_END - MS1251UNI_START + 1] =
1391{
1392/*       0       1       2       3       4       5       6       7 */
1393/*       8       9       A       B       C       D       E       F */
1394    0x0402, 0x0403, 0x201A, 0x0453, 0x201E, 0x2026, 0x2020, 0x2021, /* 0x80 */
1395    0x20AC, 0x2030, 0x0409, 0x2039, 0x040A, 0x040C, 0x040B, 0x040F, /* 0x80 */
1396    0x0452, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, /* 0x90 */
1397         0, 0x2122, 0x0459, 0x203A, 0x045A, 0x045C, 0x045B, 0x045F, /* 0x90 */
1398    0x00A0, 0x040E, 0x045E, 0x0408, 0x00A4, 0x0490, 0x00A6, 0x00A7, /* 0xA0 */
1399    0x0401, 0x00A9, 0x0404, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x0407, /* 0xA0 */
1400    0x00B0, 0x00B1, 0x0406, 0x0456, 0x0491, 0x00B5, 0x00B6, 0x00B7, /* 0xB0 */
1401    0x0451, 0x2116, 0x0454, 0x00BB, 0x0458, 0x0405, 0x0455, 0x0457, /* 0xB0 */
1402    0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, /* 0xC0 */
1403    0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, /* 0xC0 */
1404    0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, /* 0xD0 */
1405    0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, /* 0xD0 */
1406    0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, /* 0xE0 */
1407    0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, /* 0xE0 */
1408    0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, /* 0xF0 */
1409    0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F  /* 0xF0 */
1410};
1411
1412/* ----------------------------------------------------------------------- */
1413
1414#define MS1251CHAR_START                0x0401
1415#define MS1251CHAR_END                  0x045F
1416static sal_uChar const aImplMS1251ToCharTab[MS1251CHAR_END - MS1251CHAR_START + 1] =
1417{
1418/*     0     1     2     3     4     5     6     7 */
1419/*     8     9     A     B     C     D     E     F */
1420          0xA8, 0x80, 0x81, 0xAA, 0xBD, 0xB2, 0xAF, /* 0x0400 */
1421    0xA3, 0x8A, 0x8C, 0x8E, 0x8D,    0, 0xA1, 0x8F, /* 0x0400 */
1422    0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, /* 0x0410 */
1423    0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, /* 0x0410 */
1424    0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, /* 0x0420 */
1425    0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, /* 0x0420 */
1426    0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, /* 0x0430 */
1427    0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, /* 0x0430 */
1428    0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, /* 0x0440 */
1429    0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF, /* 0x0440 */
1430       0, 0xB8, 0x90, 0x83, 0xBA, 0xBE, 0xB3, 0xBF, /* 0x0450 */
1431    0xBC, 0x9A, 0x9C, 0x9E, 0x9D,    0, 0xA2, 0x9F  /* 0x0450 */
1432};
1433
1434/* ----------------------------------------------------------------------- */
1435
1436#define MS1251TOCHARTABEX_COUNT         35
1437static ImplUniCharTabData const aImplMS1251ToCharTabEx[MS1251TOCHARTABEX_COUNT] =
1438{
1439  { 0x00A0, 0xA0, 0 },
1440  { 0x00A4, 0xA4, 0 },
1441  { 0x00A6, 0xA6, 0 },
1442  { 0x00A7, 0xA7, 0 },
1443  { 0x00A9, 0xA9, 0 },
1444  { 0x00AB, 0xAB, 0 },
1445  { 0x00AC, 0xAC, 0 },
1446  { 0x00AD, 0xAD, 0 },
1447  { 0x00AE, 0xAE, 0 },
1448  { 0x00B0, 0xB0, 0 },
1449  { 0x00B1, 0xB1, 0 },
1450  { 0x00B5, 0xB5, 0 },
1451  { 0x00B6, 0xB6, 0 },
1452  { 0x00B7, 0xB7, 0 },
1453  { 0x00BB, 0xBB, 0 },
1454  { 0x0490, 0xA5, 0 },
1455  { 0x0491, 0xB4, 0 },
1456  { 0x2013, 0x96, 0 },
1457  { 0x2014, 0x97, 0 },
1458  { 0x2018, 0x91, 0 },
1459  { 0x2019, 0x92, 0 },
1460  { 0x201A, 0x82, 0 },
1461  { 0x201C, 0x93, 0 },
1462  { 0x201D, 0x94, 0 },
1463  { 0x201E, 0x84, 0 },
1464  { 0x2020, 0x86, 0 },
1465  { 0x2021, 0x87, 0 },
1466  { 0x2022, 0x95, 0 },
1467  { 0x2026, 0x85, 0 },
1468  { 0x2030, 0x89, 0 },
1469  { 0x2039, 0x8B, 0 },
1470  { 0x203A, 0x9B, 0 },
1471  { 0x20AC, 0x88, 0 },
1472  { 0x2116, 0xB9, 0 },
1473  { 0x2122, 0x99, 0 }
1474};
1475
1476/* ----------------------------------------------------------------------- */
1477
1478static ImplByteConvertData const aImplMS1251ByteCvtData =
1479{
1480    aImplMS1251ToUniTab,
1481    NULL,
1482    MS1251UNI_START, MS1251UNI_END,
1483    NOTABUNI_START, NOTABUNI_END,
1484    aImplMS1251ToCharTab,
1485    NULL,
1486    aImplMS1251ToCharTabEx,
1487    MS1251CHAR_START, MS1251CHAR_END,
1488    NOTABCHAR_START, NOTABCHAR_END,
1489    MS1251TOCHARTABEX_COUNT
1490};
1491
1492/* ----------------------------------------------------------------------- */
1493
1494static ImplTextEncodingData const aImplMS1251TextEncodingData
1495    = { { &aImplMS1251ByteCvtData,
1496          ImplCharToUnicode,
1497          ImplUnicodeToChar,
1498          NULL,
1499          NULL,
1500          NULL,
1501          NULL,
1502          NULL,
1503          NULL },
1504        1,
1505        1,
1506        1,
1507        204,
1508        "iso8859-5",
1509        "windows-1251",
1510        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
1511    /* WIN, SCRIPT_CYRILLIC, pc code page 866 (855?), mac encoding 7 */
1512
1513/* ======================================================================= */
1514
1515/* MS-1253 */
1516/* Windows Standard CharSet for Greek */
1517/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
1518/* Convert-Tables: mappings/vendors/micsft/windows/cp1253.txt from 04/15/98 Version 2.01 */
1519/* Last-Changes from us: */
1520
1521/* ----------------------------------------------------------------------- */
1522
1523#define MS1253UNI_START                 0x80
1524#define MS1253UNI_END                   0xFF
1525static sal_uInt16 const aImplMS1253ToUniTab[MS1253UNI_END - MS1253UNI_START + 1] =
1526{
1527/*       0       1       2       3       4       5       6       7 */
1528/*       8       9       A       B       C       D       E       F */
1529    0x20AC,      0, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, /* 0x80 */
1530         0, 0x2030,      0, 0x2039,      0,      0,      0,      0, /* 0x80 */
1531         0, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, /* 0x90 */
1532         0, 0x2122,      0, 0x203A,      0,      0,      0,      0, /* 0x90 */
1533    0x00A0, 0x0385, 0x0386, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, /* 0xA0 */
1534    0x00A8, 0x00A9,      0, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x2015, /* 0xA0 */
1535    0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x0384, 0x00B5, 0x00B6, 0x00B7, /* 0xB0 */
1536    0x0388, 0x0389, 0x038A, 0x00BB, 0x038C, 0x00BD, 0x038E, 0x038F, /* 0xB0 */
1537    0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, /* 0xC0 */
1538    0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, /* 0xC0 */
1539    0x03A0, 0x03A1,      0, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, /* 0xD0 */
1540    0x03A8, 0x03A9, 0x03AA, 0x03AB, 0x03AC, 0x03AD, 0x03AE, 0x03AF, /* 0xD0 */
1541    0x03B0, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, /* 0xE0 */
1542    0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, /* 0xE0 */
1543    0x03C0, 0x03C1, 0x03C2, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7, /* 0xF0 */
1544    0x03C8, 0x03C9, 0x03CA, 0x03CB, 0x03CC, 0x03CD, 0x03CE,      0  /* 0xF0 */
1545};
1546
1547/* ----------------------------------------------------------------------- */
1548
1549#define MS1253CHAR_START                0x0384
1550#define MS1253CHAR_END                  0x03CE
1551static sal_uChar const aImplMS1253ToCharTab[MS1253CHAR_END - MS1253CHAR_START + 1] =
1552{
1553/*     0     1     2     3     4     5     6     7 */
1554/*     8     9     A     B     C     D     E     F */
1555                            0xB4, 0xA1, 0xA2,    0, /* 0x0380 */
1556    0xB8, 0xB9, 0xBA,    0, 0xBC,    0, 0xBE, 0xBF, /* 0x0380 */
1557    0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, /* 0x0390 */
1558    0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, /* 0x0390 */
1559    0xD0, 0xD1,    0, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, /* 0x03A0 */
1560    0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, /* 0x03A0 */
1561    0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, /* 0x03B0 */
1562    0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, /* 0x03B0 */
1563    0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, /* 0x03C0 */
1564    0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE        /* 0x03C0 */
1565};
1566
1567/* ----------------------------------------------------------------------- */
1568
1569#define MS1253TOCHARTABEX_COUNT         40
1570static ImplUniCharTabData const aImplMS1253ToCharTabEx[MS1253TOCHARTABEX_COUNT] =
1571{
1572  { 0x00A0, 0xA0, 0 },
1573  { 0x00A3, 0xA3, 0 },
1574  { 0x00A4, 0xA4, 0 },
1575  { 0x00A5, 0xA5, 0 },
1576  { 0x00A6, 0xA6, 0 },
1577  { 0x00A7, 0xA7, 0 },
1578  { 0x00A8, 0xA8, 0 },
1579  { 0x00A9, 0xA9, 0 },
1580  { 0x00AB, 0xAB, 0 },
1581  { 0x00AC, 0xAC, 0 },
1582  { 0x00AD, 0xAD, 0 },
1583  { 0x00AE, 0xAE, 0 },
1584  { 0x00B0, 0xB0, 0 },
1585  { 0x00B1, 0xB1, 0 },
1586  { 0x00B2, 0xB2, 0 },
1587  { 0x00B3, 0xB3, 0 },
1588  { 0x00B5, 0xB5, 0 },
1589  { 0x00B6, 0xB6, 0 },
1590  { 0x00B7, 0xB7, 0 },
1591  { 0x00BB, 0xBB, 0 },
1592  { 0x00BD, 0xBD, 0 },
1593  { 0x0192, 0x83, 0 },
1594  { 0x2013, 0x96, 0 },
1595  { 0x2014, 0x97, 0 },
1596  { 0x2015, 0xAF, 0 },
1597  { 0x2018, 0x91, 0 },
1598  { 0x2019, 0x92, 0 },
1599  { 0x201A, 0x82, 0 },
1600  { 0x201C, 0x93, 0 },
1601  { 0x201D, 0x94, 0 },
1602  { 0x201E, 0x84, 0 },
1603  { 0x2020, 0x86, 0 },
1604  { 0x2021, 0x87, 0 },
1605  { 0x2022, 0x95, 0 },
1606  { 0x2026, 0x85, 0 },
1607  { 0x2030, 0x89, 0 },
1608  { 0x2039, 0x8B, 0 },
1609  { 0x203A, 0x9B, 0 },
1610  { 0x20AC, 0x80, 0 },
1611  { 0x2122, 0x99, 0 }
1612};
1613
1614/* ----------------------------------------------------------------------- */
1615
1616static ImplByteConvertData const aImplMS1253ByteCvtData =
1617{
1618    aImplMS1253ToUniTab,
1619    NULL,
1620    MS1253UNI_START, MS1253UNI_END,
1621    NOTABUNI_START, NOTABUNI_END,
1622    aImplMS1253ToCharTab,
1623    NULL,
1624    aImplMS1253ToCharTabEx,
1625    MS1253CHAR_START, MS1253CHAR_END,
1626    NOTABCHAR_START, NOTABCHAR_END,
1627    MS1253TOCHARTABEX_COUNT
1628};
1629
1630/* ----------------------------------------------------------------------- */
1631
1632static ImplTextEncodingData const aImplMS1253TextEncodingData
1633    = { { &aImplMS1253ByteCvtData,
1634          ImplCharToUnicode,
1635          ImplUnicodeToChar,
1636          NULL,
1637          NULL,
1638          NULL,
1639          NULL,
1640          NULL,
1641          NULL },
1642        1,
1643        1,
1644        1,
1645        161,
1646        "iso8859-7",
1647        "windows-1253",
1648        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
1649    /* WIN, SCRIPT_GREEK, pc code page 869, mac encoding 6 */
1650
1651/* ======================================================================= */
1652
1653/* MS-1254 */
1654/* Windows Standard CharSet for Turkish */
1655/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
1656/* Convert-Tables: mappings/vendors/micsft/windows/cp1254.txt from 04/15/98 Version 2.01 */
1657/* Last-Changes from us: */
1658
1659/* ----------------------------------------------------------------------- */
1660
1661#define MS1254UNI_START                 0x80
1662#define MS1254UNI_END                   0xFF
1663static sal_uInt16 const aImplMS1254ToUniTab[MS1254UNI_END - MS1254UNI_START + 1] =
1664{
1665/*       0       1       2       3       4       5       6       7 */
1666/*       8       9       A       B       C       D       E       F */
1667    0x20AC,      0, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, /* 0x80 */
1668    0x02C6, 0x2030, 0x0160, 0x2039, 0x0152,      0,      0,      0, /* 0x80 */
1669         0, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, /* 0x90 */
1670    0x02DC, 0x2122, 0x0161, 0x203A, 0x0153,      0,      0, 0x0178, /* 0x90 */
1671    0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, /* 0xA0 */
1672    0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, /* 0xA0 */
1673    0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, /* 0xB0 */
1674    0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, /* 0xB0 */
1675    0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, /* 0xC0 */
1676    0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, /* 0xC0 */
1677    0x011E, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, /* 0xD0 */
1678    0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x0130, 0x015E, 0x00DF, /* 0xD0 */
1679    0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, /* 0xE0 */
1680    0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, /* 0xE0 */
1681    0x011F, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, /* 0xF0 */
1682    0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x0131, 0x015F, 0x00FF  /* 0xF0 */
1683};
1684
1685/* ----------------------------------------------------------------------- */
1686
1687#define MS1254CHAR_START                0x00A0
1688#define MS1254CHAR_END                  0x00FF
1689static sal_uChar const aImplMS1254ToCharTab[MS1254CHAR_END - MS1254CHAR_START + 1] =
1690{
1691/*     0     1     2     3     4     5     6     7 */
1692/*     8     9     A     B     C     D     E     F */
1693    0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, /* 0x00A0 */
1694    0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, /* 0x00A0 */
1695    0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, /* 0x00B0 */
1696    0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF, /* 0x00B0 */
1697    0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, /* 0x00C0 */
1698    0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, /* 0x00C0 */
1699       0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, /* 0x00D0 */
1700    0xD8, 0xD9, 0xDA, 0xDB, 0xDC,    0,    0, 0xDF, /* 0x00D0 */
1701    0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, /* 0x00E0 */
1702    0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, /* 0x00E0 */
1703       0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, /* 0x00F0 */
1704    0xF8, 0xF9, 0xFA, 0xFB, 0xFC,    0,    0, 0xFF  /* 0x00F0 */
1705};
1706
1707/* ----------------------------------------------------------------------- */
1708
1709#define MS1254TOCHARTABEX_COUNT         31
1710static ImplUniCharTabData const aImplMS1254ToCharTabEx[MS1254TOCHARTABEX_COUNT] =
1711{
1712  { 0x011E, 0xD0, 0 },
1713  { 0x011F, 0xF0, 0 },
1714  { 0x0130, 0xDD, 0 },
1715  { 0x0131, 0xFD, 0 },
1716  { 0x0152, 0x8C, 0 },
1717  { 0x0153, 0x9C, 0 },
1718  { 0x015E, 0xDE, 0 },
1719  { 0x015F, 0xFE, 0 },
1720  { 0x0160, 0x8A, 0 },
1721  { 0x0161, 0x9A, 0 },
1722  { 0x0178, 0x9F, 0 },
1723  { 0x0192, 0x83, 0 },
1724  { 0x02C6, 0x88, 0 },
1725  { 0x02DC, 0x98, 0 },
1726  { 0x2013, 0x96, 0 },
1727  { 0x2014, 0x97, 0 },
1728  { 0x2018, 0x91, 0 },
1729  { 0x2019, 0x92, 0 },
1730  { 0x201A, 0x82, 0 },
1731  { 0x201C, 0x93, 0 },
1732  { 0x201D, 0x94, 0 },
1733  { 0x201E, 0x84, 0 },
1734  { 0x2020, 0x86, 0 },
1735  { 0x2021, 0x87, 0 },
1736  { 0x2022, 0x95, 0 },
1737  { 0x2026, 0x85, 0 },
1738  { 0x2030, 0x89, 0 },
1739  { 0x2039, 0x8B, 0 },
1740  { 0x203A, 0x9B, 0 },
1741  { 0x20AC, 0x80, 0 },
1742  { 0x2122, 0x99, 0 }
1743};
1744
1745/* ----------------------------------------------------------------------- */
1746
1747static ImplByteConvertData const aImplMS1254ByteCvtData =
1748{
1749    aImplMS1254ToUniTab,
1750    NULL,
1751    MS1254UNI_START, MS1254UNI_END,
1752    NOTABUNI_START, NOTABUNI_END,
1753    aImplMS1254ToCharTab,
1754    NULL,
1755    aImplMS1254ToCharTabEx,
1756    MS1254CHAR_START, MS1254CHAR_END,
1757    NOTABCHAR_START, NOTABCHAR_END,
1758    MS1254TOCHARTABEX_COUNT,
1759};
1760
1761/* ----------------------------------------------------------------------- */
1762
1763static ImplTextEncodingData const aImplMS1254TextEncodingData
1764    = { { &aImplMS1254ByteCvtData,
1765          ImplCharToUnicode,
1766          ImplUnicodeToChar,
1767          NULL,
1768          NULL,
1769          NULL,
1770          NULL,
1771          NULL,
1772          NULL },
1773        1,
1774        1,
1775        1,
1776        162,
1777        "iso8859-9",
1778        "windows-1254",
1779        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
1780    /* WIN, SCRIPT_TURKISH, pc code page 857, mac encoding 35 */
1781
1782/* ======================================================================= */
1783
1784/* MS-1257 */
1785/* Windows Standard CharSet for Baltic */
1786/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
1787/* Convert-Tables: mappings/vendors/micsft/windows/cp1257.txt from 04/15/98 Version 2.01 */
1788/* Last-Changes from us: */
1789
1790/* ----------------------------------------------------------------------- */
1791
1792#define MS1257UNI_START                 0x80
1793#define MS1257UNI_END                   0xFF
1794static sal_uInt16 const aImplMS1257ToUniTab[MS1257UNI_END - MS1257UNI_START + 1] =
1795{
1796/*       0       1       2       3       4       5       6       7 */
1797/*       8       9       A       B       C       D       E       F */
1798    0x20AC,      0, 0x201A,      0, 0x201E, 0x2026, 0x2020, 0x2021, /* 0x80 */
1799         0, 0x2030,      0, 0x2039,      0, 0x00A8, 0x02C7, 0x00B8, /* 0x80 */
1800         0, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, /* 0x90 */
1801         0, 0x2122,      0, 0x203A,      0, 0x00AF, 0x02DB,      0, /* 0x90 */
1802    0x00A0,      0, 0x00A2, 0x00A3, 0x00A4,      0, 0x00A6, 0x00A7, /* 0xA0 */
1803    0x00D8, 0x00A9, 0x0156, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00C6, /* 0xA0 */
1804    0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, /* 0xB0 */
1805    0x00F8, 0x00B9, 0x0157, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00E6, /* 0xB0 */
1806    0x0104, 0x012E, 0x0100, 0x0106, 0x00C4, 0x00C5, 0x0118, 0x0112, /* 0xC0 */
1807    0x010C, 0x00C9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012A, 0x013B, /* 0xC0 */
1808    0x0160, 0x0143, 0x0145, 0x00D3, 0x014C, 0x00D5, 0x00D6, 0x00D7, /* 0xD0 */
1809    0x0172, 0x0141, 0x015A, 0x016A, 0x00DC, 0x017B, 0x017D, 0x00DF, /* 0xD0 */
1810    0x0105, 0x012F, 0x0101, 0x0107, 0x00E4, 0x00E5, 0x0119, 0x0113, /* 0xE0 */
1811    0x010D, 0x00E9, 0x017A, 0x0117, 0x0123, 0x0137, 0x012B, 0x013C, /* 0xE0 */
1812    0x0161, 0x0144, 0x0146, 0x00F3, 0x014D, 0x00F5, 0x00F6, 0x00F7, /* 0xF0 */
1813    0x0173, 0x0142, 0x015B, 0x016B, 0x00FC, 0x017C, 0x017E, 0x02D9  /* 0xF0 */
1814};
1815
1816/* ----------------------------------------------------------------------- */
1817
1818#define MS1257CHAR_START                0x00A0
1819#define MS1257CHAR_END                  0x017E
1820static sal_uChar const aImplMS1257ToCharTab[MS1257CHAR_END - MS1257CHAR_START + 1] =
1821{
1822/*     0     1     2     3     4     5     6     7 */
1823/*     8     9     A     B     C     D     E     F */
1824    0xA0,    0, 0xA2, 0xA3, 0xA4,    0, 0xA6, 0xA7, /* 0x00A0 */
1825    0x8D, 0xA9,    0, 0xAB, 0xAC, 0xAD, 0xAE, 0x9D, /* 0x00A0 */
1826    0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, /* 0x00B0 */
1827    0x8F, 0xB9,    0, 0xBB, 0xBC, 0xBD, 0xBE,    0, /* 0x00B0 */
1828       0,    0,    0,    0, 0xC4, 0xC5, 0xAF,    0, /* 0x00C0 */
1829       0, 0xC9,    0,    0,    0,    0,    0,    0, /* 0x00C0 */
1830       0,    0,    0, 0xD3,    0, 0xD5, 0xD6, 0xD7, /* 0x00D0 */
1831    0xA8,    0,    0,    0, 0xDC,    0,    0, 0xDF, /* 0x00D0 */
1832       0,    0,    0,    0, 0xE4, 0xE5, 0xBF,    0, /* 0x00E0 */
1833       0, 0xE9,    0,    0,    0,    0,    0,    0, /* 0x00E0 */
1834       0,    0,    0, 0xF3,    0, 0xF5, 0xF6, 0xF7, /* 0x00F0 */
1835    0xB8,    0,    0,    0, 0xFC,    0,    0,    0, /* 0x00F0 */
1836    0xC2, 0xE2,    0,    0, 0xC0, 0xE0, 0xC3, 0xE3, /* 0x0100 */
1837       0,    0,    0,    0, 0xC8, 0xE8,    0,    0, /* 0x0100 */
1838       0,    0, 0xC7, 0xE7,    0,    0, 0xCB, 0xEB, /* 0x0110 */
1839    0xC6, 0xE6,    0,    0,    0,    0,    0,    0, /* 0x0110 */
1840       0,    0, 0xCC, 0xEC,    0,    0,    0,    0, /* 0x0120 */
1841       0,    0, 0xCE, 0xEE,    0,    0, 0xC1, 0xE1, /* 0x0120 */
1842       0,    0,    0,    0,    0,    0, 0xCD, 0xED, /* 0x0130 */
1843       0,    0,    0, 0xCF, 0xEF,    0,    0,    0, /* 0x0130 */
1844       0, 0xD9, 0xF9, 0xD1, 0xF1, 0xD2, 0xF2,    0, /* 0x0140 */
1845       0,    0,    0,    0, 0xD4, 0xF4,    0,    0, /* 0x0140 */
1846       0,    0,    0,    0,    0,    0, 0xAA, 0xBA, /* 0x0150 */
1847       0,    0, 0xDA, 0xFA,    0,    0,    0,    0, /* 0x0150 */
1848    0xD0, 0xF0,    0,    0,    0,    0,    0,    0, /* 0x0160 */
1849       0,    0, 0xDB, 0xFB,    0,    0,    0,    0, /* 0x0160 */
1850       0,    0, 0xD8, 0xF8,    0,    0,    0,    0, /* 0x0170 */
1851       0, 0xCA, 0xEA, 0xDD, 0xFD, 0xDE, 0xFE        /* 0x0170 */
1852};
1853
1854/* ----------------------------------------------------------------------- */
1855
1856#define MS1257TOCHARTABEX_COUNT         20
1857static ImplUniCharTabData const aImplMS1257ToCharTabEx[MS1257TOCHARTABEX_COUNT] =
1858{
1859  { 0x02C7, 0x8E, 0 },
1860  { 0x02D9, 0xFF, 0 },
1861  { 0x02DB, 0x9E, 0 },
1862  { 0x2013, 0x96, 0 },
1863  { 0x2014, 0x97, 0 },
1864  { 0x2018, 0x91, 0 },
1865  { 0x2019, 0x92, 0 },
1866  { 0x201A, 0x82, 0 },
1867  { 0x201C, 0x93, 0 },
1868  { 0x201D, 0x94, 0 },
1869  { 0x201E, 0x84, 0 },
1870  { 0x2020, 0x86, 0 },
1871  { 0x2021, 0x87, 0 },
1872  { 0x2022, 0x95, 0 },
1873  { 0x2026, 0x85, 0 },
1874  { 0x2030, 0x89, 0 },
1875  { 0x2039, 0x8B, 0 },
1876  { 0x203A, 0x9B, 0 },
1877  { 0x20AC, 0x80, 0 },
1878  { 0x2122, 0x99, 0 }
1879};
1880
1881/* ----------------------------------------------------------------------- */
1882
1883static ImplByteConvertData const aImplMS1257ByteCvtData =
1884{
1885    aImplMS1257ToUniTab,
1886    NULL,
1887    MS1257UNI_START, MS1257UNI_END,
1888    NOTABUNI_START, NOTABUNI_END,
1889    aImplMS1257ToCharTab,
1890    NULL,
1891    aImplMS1257ToCharTabEx,
1892    MS1257CHAR_START, MS1257CHAR_END,
1893    NOTABCHAR_START, NOTABCHAR_END,
1894    MS1257TOCHARTABEX_COUNT,
1895};
1896
1897/* ----------------------------------------------------------------------- */
1898
1899static ImplTextEncodingData const aImplMS1257TextEncodingData
1900    = { { &aImplMS1257ByteCvtData,
1901          ImplCharToUnicode,
1902          ImplUnicodeToChar,
1903          NULL,
1904          NULL,
1905          NULL,
1906          NULL,
1907          NULL,
1908          NULL },
1909        1,
1910        1,
1911        1,
1912        186,
1913        "iso8859-4",
1914        "windows-1257",
1915        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
1916    /* WIN, SCRIPT_BALTIC, pc code page 775, mac encoding 29 */
1917
1918/* ======================================================================= */
1919
1920/* ISO-8859-2 */
1921/* Unix Standard for Eastern European (Latin2) */
1922/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme, 0x80-0x9F Control-Caracter wie in Unicode */
1923/* Convert-Tables: mappings/iso8859/8859-2.txt from 07/27/99 Version 1.0 (based on Unicode 3.0) */
1924/* Last-Changes from us: */
1925
1926#define ISO88592UNI_START               0xA0
1927#define ISO88592UNI_END                 0xFF
1928static sal_uInt16 const aImplISO88592ToUniTab[ISO88592UNI_END - ISO88592UNI_START + 1] =
1929{
1930/*       0       1       2       3       4       5       6       7 */
1931/*       8       9       A       B       C       D       E       F */
1932    0x00A0, 0x0104, 0x02D8, 0x0141, 0x00A4, 0x013D, 0x015A, 0x00A7, /* 0xA0 */
1933    0x00A8, 0x0160, 0x015E, 0x0164, 0x0179, 0x00AD, 0x017D, 0x017B, /* 0xA0 */
1934    0x00B0, 0x0105, 0x02DB, 0x0142, 0x00B4, 0x013E, 0x015B, 0x02C7, /* 0xB0 */
1935    0x00B8, 0x0161, 0x015F, 0x0165, 0x017A, 0x02DD, 0x017E, 0x017C, /* 0xB0 */
1936    0x0154, 0x00C1, 0x00C2, 0x0102, 0x00C4, 0x0139, 0x0106, 0x00C7, /* 0xC0 */
1937    0x010C, 0x00C9, 0x0118, 0x00CB, 0x011A, 0x00CD, 0x00CE, 0x010E, /* 0xC0 */
1938    0x0110, 0x0143, 0x0147, 0x00D3, 0x00D4, 0x0150, 0x00D6, 0x00D7, /* 0xD0 */
1939    0x0158, 0x016E, 0x00DA, 0x0170, 0x00DC, 0x00DD, 0x0162, 0x00DF, /* 0xD0 */
1940    0x0155, 0x00E1, 0x00E2, 0x0103, 0x00E4, 0x013A, 0x0107, 0x00E7, /* 0xE0 */
1941    0x010D, 0x00E9, 0x0119, 0x00EB, 0x011B, 0x00ED, 0x00EE, 0x010F, /* 0xE0 */
1942    0x0111, 0x0144, 0x0148, 0x00F3, 0x00F4, 0x0151, 0x00F6, 0x00F7, /* 0xF0 */
1943    0x0159, 0x016F, 0x00FA, 0x0171, 0x00FC, 0x00FD, 0x0163, 0x02D9  /* 0xF0 */
1944};
1945
1946/* ----------------------------------------------------------------------- */
1947
1948#define ISO88592TOCHARTABEX_COUNT       96
1949static ImplUniCharTabData const aImplISO88592ToCharTabEx[ISO88592TOCHARTABEX_COUNT] =
1950{
1951  { 0x00A0, 0xA0, 0 },
1952  { 0x00A4, 0xA4, 0 },
1953  { 0x00A7, 0xA7, 0 },
1954  { 0x00A8, 0xA8, 0 },
1955  { 0x00AD, 0xAD, 0 },
1956  { 0x00B0, 0xB0, 0 },
1957  { 0x00B4, 0xB4, 0 },
1958  { 0x00B8, 0xB8, 0 },
1959  { 0x00C1, 0xC1, 0 },
1960  { 0x00C2, 0xC2, 0 },
1961  { 0x00C4, 0xC4, 0 },
1962  { 0x00C7, 0xC7, 0 },
1963  { 0x00C9, 0xC9, 0 },
1964  { 0x00CB, 0xCB, 0 },
1965  { 0x00CD, 0xCD, 0 },
1966  { 0x00CE, 0xCE, 0 },
1967  { 0x00D3, 0xD3, 0 },
1968  { 0x00D4, 0xD4, 0 },
1969  { 0x00D6, 0xD6, 0 },
1970  { 0x00D7, 0xD7, 0 },
1971  { 0x00DA, 0xDA, 0 },
1972  { 0x00DC, 0xDC, 0 },
1973  { 0x00DD, 0xDD, 0 },
1974  { 0x00DF, 0xDF, 0 },
1975  { 0x00E1, 0xE1, 0 },
1976  { 0x00E2, 0xE2, 0 },
1977  { 0x00E4, 0xE4, 0 },
1978  { 0x00E7, 0xE7, 0 },
1979  { 0x00E9, 0xE9, 0 },
1980  { 0x00EB, 0xEB, 0 },
1981  { 0x00ED, 0xED, 0 },
1982  { 0x00EE, 0xEE, 0 },
1983  { 0x00F3, 0xF3, 0 },
1984  { 0x00F4, 0xF4, 0 },
1985  { 0x00F6, 0xF6, 0 },
1986  { 0x00F7, 0xF7, 0 },
1987  { 0x00FA, 0xFA, 0 },
1988  { 0x00FC, 0xFC, 0 },
1989  { 0x00FD, 0xFD, 0 },
1990  { 0x0102, 0xC3, 0 },
1991  { 0x0103, 0xE3, 0 },
1992  { 0x0104, 0xA1, 0 },
1993  { 0x0105, 0xB1, 0 },
1994  { 0x0106, 0xC6, 0 },
1995  { 0x0107, 0xE6, 0 },
1996  { 0x010C, 0xC8, 0 },
1997  { 0x010D, 0xE8, 0 },
1998  { 0x010E, 0xCF, 0 },
1999  { 0x010F, 0xEF, 0 },
2000  { 0x0110, 0xD0, 0 },
2001  { 0x0111, 0xF0, 0 },
2002  { 0x0118, 0xCA, 0 },
2003  { 0x0119, 0xEA, 0 },
2004  { 0x011A, 0xCC, 0 },
2005  { 0x011B, 0xEC, 0 },
2006  { 0x0139, 0xC5, 0 },
2007  { 0x013A, 0xE5, 0 },
2008  { 0x013D, 0xA5, 0 },
2009  { 0x013E, 0xB5, 0 },
2010  { 0x0141, 0xA3, 0 },
2011  { 0x0142, 0xB3, 0 },
2012  { 0x0143, 0xD1, 0 },
2013  { 0x0144, 0xF1, 0 },
2014  { 0x0147, 0xD2, 0 },
2015  { 0x0148, 0xF2, 0 },
2016  { 0x0150, 0xD5, 0 },
2017  { 0x0151, 0xF5, 0 },
2018  { 0x0154, 0xC0, 0 },
2019  { 0x0155, 0xE0, 0 },
2020  { 0x0158, 0xD8, 0 },
2021  { 0x0159, 0xF8, 0 },
2022  { 0x015A, 0xA6, 0 },
2023  { 0x015B, 0xB6, 0 },
2024  { 0x015E, 0xAA, 0 },
2025  { 0x015F, 0xBA, 0 },
2026  { 0x0160, 0xA9, 0 },
2027  { 0x0161, 0xB9, 0 },
2028  { 0x0162, 0xDE, 0 },
2029  { 0x0163, 0xFE, 0 },
2030  { 0x0164, 0xAB, 0 },
2031  { 0x0165, 0xBB, 0 },
2032  { 0x016E, 0xD9, 0 },
2033  { 0x016F, 0xF9, 0 },
2034  { 0x0170, 0xDB, 0 },
2035  { 0x0171, 0xFB, 0 },
2036  { 0x0179, 0xAC, 0 },
2037  { 0x017A, 0xBC, 0 },
2038  { 0x017B, 0xAF, 0 },
2039  { 0x017C, 0xBF, 0 },
2040  { 0x017D, 0xAE, 0 },
2041  { 0x017E, 0xBE, 0 },
2042  { 0x02C7, 0xB7, 0 },
2043  { 0x02D8, 0xA2, 0 },
2044  { 0x02D9, 0xFF, 0 },
2045  { 0x02DB, 0xB2, 0 },
2046  { 0x02DD, 0xBD, 0 }
2047};
2048
2049/* ----------------------------------------------------------------------- */
2050
2051static ImplByteConvertData const aImplISO88592ByteCvtData =
2052{
2053    aImplISO88592ToUniTab,
2054    aImpl8090SameToUniTab,
2055    ISO88592UNI_START, ISO88592UNI_END,
2056    SAME8090UNI_START, SAME8090UNI_END,
2057    aImpl8090SameToCharTab,
2058    NULL,
2059    aImplISO88592ToCharTabEx,
2060    SAME8090CHAR_START, SAME8090CHAR_END,
2061    NOTABCHAR_START, NOTABCHAR_END,
2062    ISO88592TOCHARTABEX_COUNT
2063};
2064
2065/* ----------------------------------------------------------------------- */
2066
2067static ImplTextEncodingData const aImplISO88592TextEncodingData
2068    = { { &aImplISO88592ByteCvtData,
2069          ImplCharToUnicode,
2070          ImplUnicodeToChar,
2071          NULL,
2072          NULL,
2073          NULL,
2074          NULL,
2075          NULL,
2076          NULL },
2077        1,
2078        1,
2079        1,
2080        238,
2081        "iso8859-2",
2082        "iso-8859-2",
2083        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
2084    /* SCRIPT_EASTEUROPE, pc code page 852, mac encoding 29 */
2085
2086/* ======================================================================= */
2087
2088/* ISO-8859-3 */
2089/* Latin3 (Esperanto, Maltese, Turkish) */
2090/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme, 0x80-0x9F Control-Caracter wie in Unicode */
2091/* Convert-Tables: mappings/iso8859/8859-3.txt from 07/27/99 Version 1.0 (based on Unicode 3.0) */
2092/* Last-Changes from us: */
2093
2094#define ISO88593UNI_START               0xA0
2095#define ISO88593UNI_END                 0xFF
2096static sal_uInt16 const aImplISO88593ToUniTab[ISO88593UNI_END - ISO88593UNI_START + 1] =
2097{
2098/*       0       1       2       3       4       5       6       7 */
2099/*       8       9       A       B       C       D       E       F */
2100    0x00A0, 0x0126, 0x02D8, 0x00A3, 0x00A4,      0, 0x0124, 0x00A7, /* 0xA0 */
2101    0x00A8, 0x0130, 0x015E, 0x011E, 0x0134, 0x00AD,      0, 0x017B, /* 0xA0 */
2102    0x00B0, 0x0127, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x0125, 0x00B7, /* 0xB0 */
2103    0x00B8, 0x0131, 0x015F, 0x011F, 0x0135, 0x00BD,      0, 0x017C, /* 0xB0 */
2104    0x00C0, 0x00C1, 0x00C2,      0, 0x00C4, 0x010A, 0x0108, 0x00C7, /* 0xC0 */
2105    0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, /* 0xC0 */
2106         0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x0120, 0x00D6, 0x00D7, /* 0xD0 */
2107    0x011C, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x016C, 0x015C, 0x00DF, /* 0xD0 */
2108    0x00E0, 0x00E1, 0x00E2,      0, 0x00E4, 0x010B, 0x0109, 0x00E7, /* 0xE0 */
2109    0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, /* 0xE0 */
2110         0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x0121, 0x00F6, 0x00F7, /* 0xF0 */
2111    0x011D, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x016D, 0x015D, 0x02D9  /* 0xF0 */
2112};
2113
2114/* ----------------------------------------------------------------------- */
2115
2116#define ISO88593TOCHARTABEX_COUNT       89
2117static ImplUniCharTabData const aImplISO88593ToCharTabEx[ISO88593TOCHARTABEX_COUNT] =
2118{
2119  { 0x00A0, 0xA0, 0 },
2120  { 0x00A3, 0xA3, 0 },
2121  { 0x00A4, 0xA4, 0 },
2122  { 0x00A7, 0xA7, 0 },
2123  { 0x00A8, 0xA8, 0 },
2124  { 0x00AD, 0xAD, 0 },
2125  { 0x00B0, 0xB0, 0 },
2126  { 0x00B2, 0xB2, 0 },
2127  { 0x00B3, 0xB3, 0 },
2128  { 0x00B4, 0xB4, 0 },
2129  { 0x00B5, 0xB5, 0 },
2130  { 0x00B7, 0xB7, 0 },
2131  { 0x00B8, 0xB8, 0 },
2132  { 0x00BD, 0xBD, 0 },
2133  { 0x00C0, 0xC0, 0 },
2134  { 0x00C1, 0xC1, 0 },
2135  { 0x00C2, 0xC2, 0 },
2136  { 0x00C4, 0xC4, 0 },
2137  { 0x00C7, 0xC7, 0 },
2138  { 0x00C8, 0xC8, 0 },
2139  { 0x00C9, 0xC9, 0 },
2140  { 0x00CA, 0xCA, 0 },
2141  { 0x00CB, 0xCB, 0 },
2142  { 0x00CC, 0xCC, 0 },
2143  { 0x00CD, 0xCD, 0 },
2144  { 0x00CE, 0xCE, 0 },
2145  { 0x00CF, 0xCF, 0 },
2146  { 0x00D1, 0xD1, 0 },
2147  { 0x00D2, 0xD2, 0 },
2148  { 0x00D3, 0xD3, 0 },
2149  { 0x00D4, 0xD4, 0 },
2150  { 0x00D6, 0xD6, 0 },
2151  { 0x00D7, 0xD7, 0 },
2152  { 0x00D9, 0xD9, 0 },
2153  { 0x00DA, 0xDA, 0 },
2154  { 0x00DB, 0xDB, 0 },
2155  { 0x00DC, 0xDC, 0 },
2156  { 0x00DF, 0xDF, 0 },
2157  { 0x00E0, 0xE0, 0 },
2158  { 0x00E1, 0xE1, 0 },
2159  { 0x00E2, 0xE2, 0 },
2160  { 0x00E4, 0xE4, 0 },
2161  { 0x00E7, 0xE7, 0 },
2162  { 0x00E8, 0xE8, 0 },
2163  { 0x00E9, 0xE9, 0 },
2164  { 0x00EA, 0xEA, 0 },
2165  { 0x00EB, 0xEB, 0 },
2166  { 0x00EC, 0xEC, 0 },
2167  { 0x00ED, 0xED, 0 },
2168  { 0x00EE, 0xEE, 0 },
2169  { 0x00EF, 0xEF, 0 },
2170  { 0x00F1, 0xF1, 0 },
2171  { 0x00F2, 0xF2, 0 },
2172  { 0x00F3, 0xF3, 0 },
2173  { 0x00F4, 0xF4, 0 },
2174  { 0x00F6, 0xF6, 0 },
2175  { 0x00F7, 0xF7, 0 },
2176  { 0x00F9, 0xF9, 0 },
2177  { 0x00FA, 0xFA, 0 },
2178  { 0x00FB, 0xFB, 0 },
2179  { 0x00FC, 0xFC, 0 },
2180  { 0x0108, 0xC6, 0 },
2181  { 0x0109, 0xE6, 0 },
2182  { 0x010A, 0xC5, 0 },
2183  { 0x010B, 0xE5, 0 },
2184  { 0x011C, 0xD8, 0 },
2185  { 0x011D, 0xF8, 0 },
2186  { 0x011E, 0xAB, 0 },
2187  { 0x011F, 0xBB, 0 },
2188  { 0x0120, 0xD5, 0 },
2189  { 0x0121, 0xF5, 0 },
2190  { 0x0124, 0xA6, 0 },
2191  { 0x0125, 0xB6, 0 },
2192  { 0x0126, 0xA1, 0 },
2193  { 0x0127, 0xB1, 0 },
2194  { 0x0130, 0xA9, 0 },
2195  { 0x0131, 0xB9, 0 },
2196  { 0x0134, 0xAC, 0 },
2197  { 0x0135, 0xBC, 0 },
2198  { 0x015C, 0xDE, 0 },
2199  { 0x015D, 0xFE, 0 },
2200  { 0x015E, 0xAA, 0 },
2201  { 0x015F, 0xBA, 0 },
2202  { 0x016C, 0xDD, 0 },
2203  { 0x016D, 0xFD, 0 },
2204  { 0x017B, 0xAF, 0 },
2205  { 0x017C, 0xBF, 0 },
2206  { 0x02D8, 0xA2, 0 },
2207  { 0x02D9, 0xFF, 0 }
2208};
2209
2210/* ----------------------------------------------------------------------- */
2211
2212static ImplByteConvertData const aImplISO88593ByteCvtData =
2213{
2214    aImplISO88593ToUniTab,
2215    aImpl8090SameToUniTab,
2216    ISO88593UNI_START, ISO88593UNI_END,
2217    SAME8090UNI_START, SAME8090UNI_END,
2218    aImpl8090SameToCharTab,
2219    NULL,
2220    aImplISO88593ToCharTabEx,
2221    SAME8090CHAR_START, SAME8090CHAR_END,
2222    NOTABCHAR_START, NOTABCHAR_END,
2223    ISO88593TOCHARTABEX_COUNT
2224};
2225
2226/* ----------------------------------------------------------------------- */
2227
2228static ImplTextEncodingData const aImplISO88593TextEncodingData
2229    = { { &aImplISO88593ByteCvtData,
2230          ImplCharToUnicode,
2231          ImplUnicodeToChar,
2232          NULL,
2233          NULL,
2234          NULL,
2235          NULL,
2236          NULL,
2237          NULL },
2238        1,
2239        1,
2240        1,
2241        0,
2242        "iso8859-3",
2243        "iso-8859-3",
2244        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
2245    /* SCRIPT_LATIN, pc code page 850 */
2246
2247/* ======================================================================= */
2248
2249/* ISO-8859-4 */
2250/* Latin4 (Estonian, Latvian, Lithuanian) */
2251/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme, 0x80-0x9F Control-Caracter wie in Unicode */
2252/* Convert-Tables: mappings/iso8859/8859-4.txt from 07/27/99 Version 1.0 (based on Unicode 3.0) */
2253/* Last-Changes from us: */
2254
2255#define ISO88594UNI_START               0xA0
2256#define ISO88594UNI_END                 0xFF
2257static sal_uInt16 const aImplISO88594ToUniTab[ISO88594UNI_END - ISO88594UNI_START + 1] =
2258{
2259/*       0       1       2       3       4       5       6       7 */
2260/*       8       9       A       B       C       D       E       F */
2261    0x00A0, 0x0104, 0x0138, 0x0156, 0x00A4, 0x0128, 0x013B, 0x00A7, /* 0xA0 */
2262    0x00A8, 0x0160, 0x0112, 0x0122, 0x0166, 0x00AD, 0x017D, 0x00AF, /* 0xA0 */
2263    0x00B0, 0x0105, 0x02DB, 0x0157, 0x00B4, 0x0129, 0x013C, 0x02C7, /* 0xB0 */
2264    0x00B8, 0x0161, 0x0113, 0x0123, 0x0167, 0x014A, 0x017E, 0x014B, /* 0xB0 */
2265    0x0100, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x012E, /* 0xC0 */
2266    0x010C, 0x00C9, 0x0118, 0x00CB, 0x0116, 0x00CD, 0x00CE, 0x012A, /* 0xC0 */
2267    0x0110, 0x0145, 0x014C, 0x0136, 0x00D4, 0x00D5, 0x00D6, 0x00D7, /* 0xD0 */
2268    0x00D8, 0x0172, 0x00DA, 0x00DB, 0x00DC, 0x0168, 0x016A, 0x00DF, /* 0xD0 */
2269    0x0101, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x012F, /* 0xE0 */
2270    0x010D, 0x00E9, 0x0119, 0x00EB, 0x0117, 0x00ED, 0x00EE, 0x012B, /* 0xE0 */
2271    0x0111, 0x0146, 0x014D, 0x0137, 0x00F4, 0x00F5, 0x00F6, 0x00F7, /* 0xF0 */
2272    0x00F8, 0x0173, 0x00FA, 0x00FB, 0x00FC, 0x0169, 0x016B, 0x02D9  /* 0xF0 */
2273};
2274
2275/* ----------------------------------------------------------------------- */
2276
2277#define ISO88594TOCHARTABEX_COUNT       96
2278static ImplUniCharTabData const aImplISO88594ToCharTabEx[ISO88594TOCHARTABEX_COUNT] =
2279{
2280  { 0x00A0, 0xA0, 0 },
2281  { 0x00A4, 0xA4, 0 },
2282  { 0x00A7, 0xA7, 0 },
2283  { 0x00A8, 0xA8, 0 },
2284  { 0x00AD, 0xAD, 0 },
2285  { 0x00AF, 0xAF, 0 },
2286  { 0x00B0, 0xB0, 0 },
2287  { 0x00B4, 0xB4, 0 },
2288  { 0x00B8, 0xB8, 0 },
2289  { 0x00C1, 0xC1, 0 },
2290  { 0x00C2, 0xC2, 0 },
2291  { 0x00C3, 0xC3, 0 },
2292  { 0x00C4, 0xC4, 0 },
2293  { 0x00C5, 0xC5, 0 },
2294  { 0x00C6, 0xC6, 0 },
2295  { 0x00C9, 0xC9, 0 },
2296  { 0x00CB, 0xCB, 0 },
2297  { 0x00CD, 0xCD, 0 },
2298  { 0x00CE, 0xCE, 0 },
2299  { 0x00D4, 0xD4, 0 },
2300  { 0x00D5, 0xD5, 0 },
2301  { 0x00D6, 0xD6, 0 },
2302  { 0x00D7, 0xD7, 0 },
2303  { 0x00D8, 0xD8, 0 },
2304  { 0x00DA, 0xDA, 0 },
2305  { 0x00DB, 0xDB, 0 },
2306  { 0x00DC, 0xDC, 0 },
2307  { 0x00DF, 0xDF, 0 },
2308  { 0x00E1, 0xE1, 0 },
2309  { 0x00E2, 0xE2, 0 },
2310  { 0x00E3, 0xE3, 0 },
2311  { 0x00E4, 0xE4, 0 },
2312  { 0x00E5, 0xE5, 0 },
2313  { 0x00E6, 0xE6, 0 },
2314  { 0x00E9, 0xE9, 0 },
2315  { 0x00EB, 0xEB, 0 },
2316  { 0x00ED, 0xED, 0 },
2317  { 0x00EE, 0xEE, 0 },
2318  { 0x00F4, 0xF4, 0 },
2319  { 0x00F5, 0xF5, 0 },
2320  { 0x00F6, 0xF6, 0 },
2321  { 0x00F7, 0xF7, 0 },
2322  { 0x00F8, 0xF8, 0 },
2323  { 0x00FA, 0xFA, 0 },
2324  { 0x00FB, 0xFB, 0 },
2325  { 0x00FC, 0xFC, 0 },
2326  { 0x0100, 0xC0, 0 },
2327  { 0x0101, 0xE0, 0 },
2328  { 0x0104, 0xA1, 0 },
2329  { 0x0105, 0xB1, 0 },
2330  { 0x010C, 0xC8, 0 },
2331  { 0x010D, 0xE8, 0 },
2332  { 0x0110, 0xD0, 0 },
2333  { 0x0111, 0xF0, 0 },
2334  { 0x0112, 0xAA, 0 },
2335  { 0x0113, 0xBA, 0 },
2336  { 0x0116, 0xCC, 0 },
2337  { 0x0117, 0xEC, 0 },
2338  { 0x0118, 0xCA, 0 },
2339  { 0x0119, 0xEA, 0 },
2340  { 0x0122, 0xAB, 0 },
2341  { 0x0123, 0xBB, 0 },
2342  { 0x0128, 0xA5, 0 },
2343  { 0x0129, 0xB5, 0 },
2344  { 0x012A, 0xCF, 0 },
2345  { 0x012B, 0xEF, 0 },
2346  { 0x012E, 0xC7, 0 },
2347  { 0x012F, 0xE7, 0 },
2348  { 0x0136, 0xD3, 0 },
2349  { 0x0137, 0xF3, 0 },
2350  { 0x0138, 0xA2, 0 },
2351  { 0x013B, 0xA6, 0 },
2352  { 0x013C, 0xB6, 0 },
2353  { 0x0145, 0xD1, 0 },
2354  { 0x0146, 0xF1, 0 },
2355  { 0x014A, 0xBD, 0 },
2356  { 0x014B, 0xBF, 0 },
2357  { 0x014C, 0xD2, 0 },
2358  { 0x014D, 0xF2, 0 },
2359  { 0x0156, 0xA3, 0 },
2360  { 0x0157, 0xB3, 0 },
2361  { 0x0160, 0xA9, 0 },
2362  { 0x0161, 0xB9, 0 },
2363  { 0x0166, 0xAC, 0 },
2364  { 0x0167, 0xBC, 0 },
2365  { 0x0168, 0xDD, 0 },
2366  { 0x0169, 0xFD, 0 },
2367  { 0x016A, 0xDE, 0 },
2368  { 0x016B, 0xFE, 0 },
2369  { 0x0172, 0xD9, 0 },
2370  { 0x0173, 0xF9, 0 },
2371  { 0x017D, 0xAE, 0 },
2372  { 0x017E, 0xBE, 0 },
2373  { 0x02C7, 0xB7, 0 },
2374  { 0x02D9, 0xFF, 0 },
2375  { 0x02DB, 0xB2, 0 }
2376};
2377
2378/* ----------------------------------------------------------------------- */
2379
2380static ImplByteConvertData const aImplISO88594ByteCvtData =
2381{
2382    aImplISO88594ToUniTab,
2383    aImpl8090SameToUniTab,
2384    ISO88594UNI_START, ISO88594UNI_END,
2385    SAME8090UNI_START, SAME8090UNI_END,
2386    aImpl8090SameToCharTab,
2387    NULL,
2388    aImplISO88594ToCharTabEx,
2389    SAME8090CHAR_START, SAME8090CHAR_END,
2390    NOTABCHAR_START, NOTABCHAR_END,
2391    ISO88594TOCHARTABEX_COUNT
2392};
2393
2394/* ----------------------------------------------------------------------- */
2395
2396static ImplTextEncodingData const aImplISO88594TextEncodingData
2397    = { { &aImplISO88594ByteCvtData,
2398          ImplCharToUnicode,
2399          ImplUnicodeToChar,
2400          NULL,
2401          NULL,
2402          NULL,
2403          NULL,
2404          NULL,
2405          NULL },
2406        1,
2407        1,
2408        1,
2409        186,
2410        "iso8859-4",
2411        "iso-8859-4",
2412        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
2413    /* SCRIPT_BALTIC, pc code page 775, mac encoding 29 (?) */
2414
2415/* ======================================================================= */
2416
2417/* ISO-8859-5 */
2418/* Unix Standard for Cyrillic */
2419/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme, 0x80-0x9F Control-Caracter wie in Unicode */
2420/* Convert-Tables: mappings/iso8859/8859-5.txt from 07/27/99 Version 1.0 (based on Unicode 3.0) */
2421/* Last-Changes from us: */
2422
2423#define ISO88595UNI_START               0xA0
2424#define ISO88595UNI_END                 0xFF
2425static sal_uInt16 const aImplISO88595ToUniTab[ISO88595UNI_END - ISO88595UNI_START + 1] =
2426{
2427/*       0       1       2       3       4       5       6       7 */
2428/*       8       9       A       B       C       D       E       F */
2429    0x00A0, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407, /* 0xA0 */
2430    0x0408, 0x0409, 0x040A, 0x040B, 0x040C, 0x00AD, 0x040E, 0x040F, /* 0xA0 */
2431    0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, /* 0xB0 */
2432    0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, /* 0xB0 */
2433    0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, /* 0xC0 */
2434    0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, /* 0xC0 */
2435    0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, /* 0xD0 */
2436    0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, /* 0xD0 */
2437    0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, /* 0xE0 */
2438    0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F, /* 0xE0 */
2439    0x2116, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457, /* 0xF0 */
2440    0x0458, 0x0459, 0x045A, 0x045B, 0x045C, 0x00A7, 0x045E, 0x045F  /* 0xF0 */
2441};
2442
2443/* ----------------------------------------------------------------------- */
2444
2445#define ISO88595CHAR_START              0x0401
2446#define ISO88595CHAR_END                0x045F
2447static sal_uChar const aImplISO88595ToCharTab[ISO88595CHAR_END - ISO88595CHAR_START + 1] =
2448{
2449/*     0     1     2     3     4     5     6     7 */
2450/*     8     9     A     B     C     D     E     F */
2451          0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, /* 0x0400 */
2452    0xA8, 0xA9, 0xAA, 0xAB, 0xAC,    0, 0xAE, 0xAF, /* 0x0400 */
2453    0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, /* 0x0410 */
2454    0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF, /* 0x0410 */
2455    0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, /* 0x0420 */
2456    0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, /* 0x0420 */
2457    0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, /* 0x0430 */
2458    0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, /* 0x0430 */
2459    0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, /* 0x0440 */
2460    0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, /* 0x0440 */
2461       0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, /* 0x0450 */
2462    0xF8, 0xF9, 0xFA, 0xFB, 0xFC,    0, 0xFE, 0xFF, /* 0x0450 */
2463};
2464
2465/* ----------------------------------------------------------------------- */
2466
2467#define ISO88595TOCHARTABEX_COUNT       4
2468static ImplUniCharTabData const aImplISO88595ToCharTabEx[ISO88595TOCHARTABEX_COUNT] =
2469{
2470  { 0x00A0, 0xA0, 0 },
2471  { 0x00A7, 0xFD, 0 },
2472  { 0x00AD, 0xAD, 0 },
2473  { 0x2116, 0xF0, 0 }
2474};
2475
2476/* ----------------------------------------------------------------------- */
2477
2478static ImplByteConvertData const aImplISO88595ByteCvtData =
2479{
2480    aImplISO88595ToUniTab,
2481    aImpl8090SameToUniTab,
2482    ISO88595UNI_START, ISO88595UNI_END,
2483    SAME8090UNI_START, SAME8090UNI_END,
2484    aImplISO88595ToCharTab,
2485    aImpl8090SameToCharTab,
2486    aImplISO88595ToCharTabEx,
2487    ISO88595CHAR_START, ISO88595CHAR_END,
2488    SAME8090CHAR_START, SAME8090CHAR_END,
2489    ISO88595TOCHARTABEX_COUNT
2490};
2491
2492/* ----------------------------------------------------------------------- */
2493
2494static ImplTextEncodingData const aImplISO88595TextEncodingData
2495    = { { &aImplISO88595ByteCvtData,
2496          ImplCharToUnicode,
2497          ImplUnicodeToChar,
2498          NULL,
2499          NULL,
2500          NULL,
2501          NULL,
2502          NULL,
2503          NULL },
2504        1,
2505        1,
2506        1,
2507        204,
2508        "iso8859-5",
2509        "iso-8859-5",
2510        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
2511    /* SCRIPT_CYRILLIC, pc code page 866 (855?), mac encoding 7 */
2512
2513/* ======================================================================= */
2514
2515/* ISO-8859-7 */
2516/* Unix Standard for Greek */
2517/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme, 0x80-0x9F Control-Caracter wie in Unicode */
2518/* Convert-Tables: mappings/iso8859/8859-7.txt from 07/27/99 Version 1.0 (based on Unicode 3.0) */
2519/* Last-Changes from us: */
2520
2521#define ISO88597UNI_START               0xA0
2522#define ISO88597UNI_END                 0xFF
2523static sal_uInt16 const aImplISO88597ToUniTab[ISO88597UNI_END - ISO88597UNI_START + 1] =
2524{
2525/*       0       1       2       3       4       5       6       7 */
2526/*       8       9       A       B       C       D       E       F */
2527    0x00A0, 0x2018, 0x2019, 0x00A3,      0,      0, 0x00A6, 0x00A7, /* 0xA0 */
2528    0x00A8, 0x00A9,      0, 0x00AB, 0x00AC, 0x00AD,      0, 0x2015, /* 0xA0 */
2529    0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x0384, 0x0385, 0x0386, 0x00B7, /* 0xB0 */
2530    0x0388, 0x0389, 0x038A, 0x00BB, 0x038C, 0x00BD, 0x038E, 0x038F, /* 0xB0 */
2531    0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, /* 0xC0 */
2532    0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, /* 0xC0 */
2533    0x03A0, 0x03A1,      0, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, /* 0xD0 */
2534    0x03A8, 0x03A9, 0x03AA, 0x03AB, 0x03AC, 0x03AD, 0x03AE, 0x03AF, /* 0xD0 */
2535    0x03B0, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, /* 0xE0 */
2536    0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, /* 0xE0 */
2537    0x03C0, 0x03C1, 0x03C2, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7, /* 0xF0 */
2538    0x03C8, 0x03C9, 0x03CA, 0x03CB, 0x03CC, 0x03CD, 0x03CE,      0  /* 0xF0 */
2539};
2540
2541/* ----------------------------------------------------------------------- */
2542
2543#define ISO88597CHAR_START              0x0384
2544#define ISO88597CHAR_END                0x03CE
2545static sal_uChar const aImplISO88597ToCharTab[ISO88597CHAR_END - ISO88597CHAR_START + 1] =
2546{
2547/*     0     1     2     3     4     5     6     7 */
2548/*     8     9     A     B     C     D     E     F */
2549                            0xB4, 0xB5, 0xB6,    0, /* 0x0380 */
2550    0xB8, 0xB9, 0xBA,    0, 0xBC,    0, 0xBE, 0xBF, /* 0x0380 */
2551    0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, /* 0x0390 */
2552    0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, /* 0x0390 */
2553    0xD0, 0xD1,    0, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, /* 0x03A0 */
2554    0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, /* 0x03A0 */
2555    0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, /* 0x03B0 */
2556    0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, /* 0x03B0 */
2557    0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, /* 0x03C0 */
2558    0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE        /* 0x03C0 */
2559};
2560
2561/* ----------------------------------------------------------------------- */
2562
2563#define ISO88597TOCHARTABEX_COUNT       19
2564static ImplUniCharTabData const aImplISO88597ToCharTabEx[ISO88597TOCHARTABEX_COUNT] =
2565{
2566  { 0x00A0, 0xA0, 0 },
2567  { 0x00A3, 0xA3, 0 },
2568  { 0x00A6, 0xA6, 0 },
2569  { 0x00A7, 0xA7, 0 },
2570  { 0x00A8, 0xA8, 0 },
2571  { 0x00A9, 0xA9, 0 },
2572  { 0x00AB, 0xAB, 0 },
2573  { 0x00AC, 0xAC, 0 },
2574  { 0x00AD, 0xAD, 0 },
2575  { 0x00B0, 0xB0, 0 },
2576  { 0x00B1, 0xB1, 0 },
2577  { 0x00B2, 0xB2, 0 },
2578  { 0x00B3, 0xB3, 0 },
2579  { 0x00B7, 0xB7, 0 },
2580  { 0x00BB, 0xBB, 0 },
2581  { 0x00BD, 0xBD, 0 },
2582  { 0x2015, 0xAF, 0 },
2583  { 0x2018, 0xA1, 0 },
2584  { 0x2019, 0xA2, 0 }
2585};
2586
2587/* ----------------------------------------------------------------------- */
2588
2589static ImplByteConvertData const aImplISO88597ByteCvtData =
2590{
2591    aImplISO88597ToUniTab,
2592    aImpl8090SameToUniTab,
2593    ISO88597UNI_START, ISO88597UNI_END,
2594    SAME8090UNI_START, SAME8090UNI_END,
2595    aImplISO88597ToCharTab,
2596    aImpl8090SameToCharTab,
2597    aImplISO88597ToCharTabEx,
2598    ISO88597CHAR_START, ISO88597CHAR_END,
2599    SAME8090CHAR_START, SAME8090CHAR_END,
2600    ISO88597TOCHARTABEX_COUNT
2601};
2602
2603/* ----------------------------------------------------------------------- */
2604
2605static ImplTextEncodingData const aImplISO88597TextEncodingData
2606    = { { &aImplISO88597ByteCvtData,
2607          ImplCharToUnicode,
2608          ImplUnicodeToChar,
2609          NULL,
2610          NULL,
2611          NULL,
2612          NULL,
2613          NULL,
2614          NULL },
2615        1,
2616        1,
2617        1,
2618        161,
2619        "iso8859-7",
2620        "iso-8859-7",
2621        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
2622    /* SCRIPT_GREEK, pc code page 869, mac encoding 6 */
2623
2624/* ======================================================================= */
2625
2626/* ISO-8859-9 */
2627/* Latin5 (Turkish) */
2628/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme, 0x80-0x9F Control-Caracter wie in Unicode */
2629/* Convert-Tables: mappings/iso8859/8859-9.txt from 07/27/99 Version 1.0 (based on Unicode 3.0) */
2630/* Last-Changes from us: */
2631
2632#define ISO88599UNI_START               0xA0
2633#define ISO88599UNI_END                 0xFF
2634static sal_uInt16 const aImplISO88599ToUniTab[ISO88599UNI_END - ISO88599UNI_START + 1] =
2635{
2636/*       0       1       2       3       4       5       6       7 */
2637/*       8       9       A       B       C       D       E       F */
2638    0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, /* 0xA0 */
2639    0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, /* 0xA0 */
2640    0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, /* 0xB0 */
2641    0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, /* 0xB0 */
2642    0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, /* 0xC0 */
2643    0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, /* 0xC0 */
2644    0x011E, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, /* 0xD0 */
2645    0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x0130, 0x015E, 0x00DF, /* 0xD0 */
2646    0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, /* 0xE0 */
2647    0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, /* 0xE0 */
2648    0x011F, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, /* 0xF0 */
2649    0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x0131, 0x015F, 0x00FF  /* 0xF0 */
2650};
2651
2652/* ----------------------------------------------------------------------- */
2653
2654#define ISO88599CHAR_START              0x00A0
2655#define ISO88599CHAR_END                0x00FF
2656static sal_uChar const aImplISO88599ToCharTab[ISO88599CHAR_END - ISO88599CHAR_START + 1] =
2657{
2658/*     0     1     2     3     4     5     6     7 */
2659/*     8     9     A     B     C     D     E     F */
2660    0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, /* 0x00A0 */
2661    0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, /* 0x00A0 */
2662    0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, /* 0x00B0 */
2663    0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF, /* 0x00B0 */
2664    0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, /* 0x00C0 */
2665    0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, /* 0x00C0 */
2666       0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, /* 0x00D0 */
2667    0xD8, 0xD9, 0xDA, 0xDB, 0xDC,    0,    0, 0xDF, /* 0x00D0 */
2668    0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, /* 0x00E0 */
2669    0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, /* 0x00E0 */
2670       0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, /* 0x00F0 */
2671    0xF8, 0xF9, 0xFA, 0xFB, 0xFC,    0,    0, 0xFF  /* 0x00F0 */
2672};
2673
2674/* ----------------------------------------------------------------------- */
2675
2676#define ISO88599TOCHARTABEX_COUNT       6
2677static ImplUniCharTabData const aImplISO88599ToCharTabEx[ISO88599TOCHARTABEX_COUNT] =
2678{
2679  { 0x011E, 0xD0, 0 },
2680  { 0x011F, 0xF0, 0 },
2681  { 0x0130, 0xDD, 0 },
2682  { 0x0131, 0xFD, 0 },
2683  { 0x015E, 0xDE, 0 },
2684  { 0x015F, 0xFE, 0 }
2685};
2686
2687/* ----------------------------------------------------------------------- */
2688
2689static ImplByteConvertData const aImplISO88599ByteCvtData =
2690{
2691    aImplISO88599ToUniTab,
2692    aImpl8090SameToUniTab,
2693    ISO88599UNI_START, ISO88599UNI_END,
2694    SAME8090UNI_START, SAME8090UNI_END,
2695    aImplISO88599ToCharTab,
2696    aImpl8090SameToCharTab,
2697    aImplISO88599ToCharTabEx,
2698    ISO88599CHAR_START, ISO88599CHAR_END,
2699    SAME8090CHAR_START, SAME8090CHAR_END,
2700    ISO88599TOCHARTABEX_COUNT
2701};
2702
2703/* ----------------------------------------------------------------------- */
2704
2705static ImplTextEncodingData const aImplISO88599TextEncodingData
2706    = { { &aImplISO88599ByteCvtData,
2707          ImplCharToUnicode,
2708          ImplUnicodeToChar,
2709          NULL,
2710          NULL,
2711          NULL,
2712          NULL,
2713          NULL,
2714          NULL },
2715        1,
2716        1,
2717        1,
2718        162,
2719        "iso8859-9",
2720        "iso-8859-9",
2721        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
2722    /* SCRIPT_TURKISH, pc code page 857, mac encoding 35 */
2723
2724/* ======================================================================= */
2725
2726/* ISO-8859-10 */
2727/* East European */
2728/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme, 0x80-0x9F Control-Caracter wie in Unicode */
2729/* Convert-Tables: mappings/iso8859/8859-10.txt from 07/27/99 Version 1.0 (based on Unicode 3.0) */
2730/* Last-Changes from us: */
2731
2732#define ISO885910UNI_START              0xA0
2733#define ISO885910UNI_END                0xFF
2734static sal_uInt16 const aImplISO885910ToUniTab[ISO885910UNI_END - ISO885910UNI_START + 1] =
2735{
2736/*       0       1       2       3       4       5       6       7 */
2737/*       8       9       A       B       C       D       E       F */
2738    0x00A0, 0x0104, 0x0112, 0x0122, 0x012A, 0x0128, 0x0136, 0x00A7, /* 0xA0 */
2739    0x013B, 0x0110, 0x0160, 0x0166, 0x017D, 0x00AD, 0x016A, 0x014A, /* 0xA0 */
2740    0x00B0, 0x0105, 0x0113, 0x0123, 0x012B, 0x0129, 0x0137, 0x00B7, /* 0xB0 */
2741    0x013C, 0x0111, 0x0161, 0x0167, 0x017E, 0x2015, 0x016B, 0x014B, /* 0xB0 */
2742    0x0100, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x012E, /* 0xC0 */
2743    0x010C, 0x00C9, 0x0118, 0x00CB, 0x0116, 0x00CD, 0x00CE, 0x00CF, /* 0xC0 */
2744    0x00D0, 0x0145, 0x014C, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x0168, /* 0xD0 */
2745    0x00D8, 0x0172, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF, /* 0xD0 */
2746    0x0101, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x012F, /* 0xE0 */
2747    0x010D, 0x00E9, 0x0119, 0x00EB, 0x0117, 0x00ED, 0x00EE, 0x00EF, /* 0xE0 */
2748    0x00F0, 0x0146, 0x014D, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x0169, /* 0xF0 */
2749    0x00F8, 0x0173, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x0138  /* 0xF0 */
2750};
2751
2752/* ----------------------------------------------------------------------- */
2753
2754#define ISO885910CHAR_START             0x00C1
2755#define ISO885910CHAR_END               0x00FE
2756static sal_uChar const aImplISO885910ToCharTab[ISO885910CHAR_END - ISO885910CHAR_START + 1] =
2757{
2758/*     0     1     2     3     4     5     6     7 */
2759/*     8     9     A     B     C     D     E     F */
2760          0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6,    0, /* 0x00C0 */
2761       0, 0xC9,    0, 0xCB,    0, 0xCD, 0xCE, 0xCF, /* 0x00C0 */
2762    0xD0,    0,    0, 0xD3, 0xD4, 0xD5, 0xD6,    0, /* 0x00D0 */
2763    0xD8,    0, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, /* 0x00D0 */
2764       0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6,    0, /* 0x00E0 */
2765       0, 0xE9,    0, 0xEB,    0, 0xED, 0xEE, 0xEF, /* 0x00E0 */
2766    0xF0,    0,    0, 0xF3, 0xF4, 0xF5, 0xF6,    0, /* 0x00F0 */
2767    0xF8,    0, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE        /* 0x00F0 */
2768};
2769
2770/* ----------------------------------------------------------------------- */
2771
2772#define ISO885910TOCHARTABEX_COUNT      51
2773static ImplUniCharTabData const aImplISO885910ToCharTabEx[ISO885910TOCHARTABEX_COUNT] =
2774{
2775  { 0x00A0, 0xA0, 0 },
2776  { 0x00A7, 0xA7, 0 },
2777  { 0x00AD, 0xAD, 0 },
2778  { 0x00B0, 0xB0, 0 },
2779  { 0x00B7, 0xB7, 0 },
2780  { 0x0100, 0xC0, 0 },
2781  { 0x0101, 0xE0, 0 },
2782  { 0x0104, 0xA1, 0 },
2783  { 0x0105, 0xB1, 0 },
2784  { 0x010C, 0xC8, 0 },
2785  { 0x010D, 0xE8, 0 },
2786  { 0x0110, 0xA9, 0 },
2787  { 0x0111, 0xB9, 0 },
2788  { 0x0112, 0xA2, 0 },
2789  { 0x0113, 0xB2, 0 },
2790  { 0x0116, 0xCC, 0 },
2791  { 0x0117, 0xEC, 0 },
2792  { 0x0118, 0xCA, 0 },
2793  { 0x0119, 0xEA, 0 },
2794  { 0x0122, 0xA3, 0 },
2795  { 0x0123, 0xB3, 0 },
2796  { 0x0128, 0xA5, 0 },
2797  { 0x0129, 0xB5, 0 },
2798  { 0x012A, 0xA4, 0 },
2799  { 0x012B, 0xB4, 0 },
2800  { 0x012E, 0xC7, 0 },
2801  { 0x012F, 0xE7, 0 },
2802  { 0x0136, 0xA6, 0 },
2803  { 0x0137, 0xB6, 0 },
2804  { 0x0138, 0xFF, 0 },
2805  { 0x013B, 0xA8, 0 },
2806  { 0x013C, 0xB8, 0 },
2807  { 0x0145, 0xD1, 0 },
2808  { 0x0146, 0xF1, 0 },
2809  { 0x014A, 0xAF, 0 },
2810  { 0x014B, 0xBF, 0 },
2811  { 0x014C, 0xD2, 0 },
2812  { 0x014D, 0xF2, 0 },
2813  { 0x0160, 0xAA, 0 },
2814  { 0x0161, 0xBA, 0 },
2815  { 0x0166, 0xAB, 0 },
2816  { 0x0167, 0xBB, 0 },
2817  { 0x0168, 0xD7, 0 },
2818  { 0x0169, 0xF7, 0 },
2819  { 0x016A, 0xAE, 0 },
2820  { 0x016B, 0xBE, 0 },
2821  { 0x0172, 0xD9, 0 },
2822  { 0x0173, 0xF9, 0 },
2823  { 0x017D, 0xAC, 0 },
2824  { 0x017E, 0xBC, 0 },
2825  { 0x2015, 0xBD, 0 }
2826};
2827
2828/* ----------------------------------------------------------------------- */
2829
2830static ImplByteConvertData const aImplISO885910ByteCvtData =
2831{
2832    aImplISO885910ToUniTab,
2833    aImpl8090SameToUniTab,
2834    ISO885910UNI_START, ISO885910UNI_END,
2835    SAME8090UNI_START, SAME8090UNI_END,
2836    aImplISO885910ToCharTab,
2837    aImpl8090SameToCharTab,
2838    aImplISO885910ToCharTabEx,
2839    ISO885910CHAR_START, ISO885910CHAR_END,
2840    SAME8090CHAR_START, SAME8090CHAR_END,
2841    ISO885910TOCHARTABEX_COUNT
2842};
2843
2844/* ----------------------------------------------------------------------- */
2845
2846static ImplTextEncodingData const aImplISO885910TextEncodingData
2847    = { { &aImplISO885910ByteCvtData,
2848          ImplCharToUnicode,
2849          ImplUnicodeToChar,
2850          NULL,
2851          NULL,
2852          NULL,
2853          NULL,
2854          NULL,
2855          NULL },
2856        1,
2857        1,
2858        1,
2859        238,
2860        "iso8859-10",
2861        "iso-8859-10",
2862        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
2863    /* SCRIPT_EASTEUROPE, pc code page 852, mac encoding 29 */
2864
2865/* ======================================================================= */
2866
2867/* ISO-8859-13 */
2868/* East European */
2869/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme, 0x80-0x9F Control-Caracter wie in Unicode */
2870/* Convert-Tables: mappings/iso8859/8859-13.txt from 07/27/99 Version 1.0 (based on Unicode 3.0) */
2871/* Last-Changes from us: */
2872
2873#define ISO885913UNI_START              0xA0
2874#define ISO885913UNI_END                0xFF
2875static sal_uInt16 const aImplISO885913ToUniTab[ISO885913UNI_END - ISO885913UNI_START + 1] =
2876{
2877/*       0       1       2       3       4       5       6       7 */
2878/*       8       9       A       B       C       D       E       F */
2879    0x00A0, 0x201D, 0x00A2, 0x00A3, 0x00A4, 0x201E, 0x00A6, 0x00A7, /* 0xA0 */
2880    0x00D8, 0x00A9, 0x0156, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00C6, /* 0xA0 */
2881    0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x201C, 0x00B5, 0x00B6, 0x00B7, /* 0xB0 */
2882    0x00F8, 0x00B9, 0x0157, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00E6, /* 0xB0 */
2883    0x0104, 0x012E, 0x0100, 0x0106, 0x00C4, 0x00C5, 0x0118, 0x0112, /* 0xC0 */
2884    0x010C, 0x00C9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012A, 0x013B, /* 0xC0 */
2885    0x0160, 0x0143, 0x0145, 0x00D3, 0x014C, 0x00D5, 0x00D6, 0x00D7, /* 0xD0 */
2886    0x0172, 0x0141, 0x015A, 0x016A, 0x00DC, 0x017B, 0x017D, 0x00DF, /* 0xD0 */
2887    0x0105, 0x012F, 0x0101, 0x0107, 0x00E4, 0x00E5, 0x0119, 0x0113, /* 0xE0 */
2888    0x010D, 0x00E9, 0x017A, 0x0117, 0x0123, 0x0137, 0x012B, 0x013C, /* 0xE0 */
2889    0x0161, 0x0144, 0x0146, 0x00F3, 0x014D, 0x00F5, 0x00F6, 0x00F7, /* 0xF0 */
2890    0x0173, 0x0142, 0x015B, 0x016B, 0x00FC, 0x017C, 0x017E, 0x2019  /* 0xF0 */
2891};
2892
2893/* ----------------------------------------------------------------------- */
2894
2895#define ISO885913TOCHARTABEX_COUNT      96
2896static ImplUniCharTabData const aImplISO885913ToCharTabEx[ISO885913TOCHARTABEX_COUNT] =
2897{
2898  { 0x00A0, 0xA0, 0 },
2899  { 0x00A2, 0xA2, 0 },
2900  { 0x00A3, 0xA3, 0 },
2901  { 0x00A4, 0xA4, 0 },
2902  { 0x00A6, 0xA6, 0 },
2903  { 0x00A7, 0xA7, 0 },
2904  { 0x00A9, 0xA9, 0 },
2905  { 0x00AB, 0xAB, 0 },
2906  { 0x00AC, 0xAC, 0 },
2907  { 0x00AD, 0xAD, 0 },
2908  { 0x00AE, 0xAE, 0 },
2909  { 0x00B0, 0xB0, 0 },
2910  { 0x00B1, 0xB1, 0 },
2911  { 0x00B2, 0xB2, 0 },
2912  { 0x00B3, 0xB3, 0 },
2913  { 0x00B5, 0xB5, 0 },
2914  { 0x00B6, 0xB6, 0 },
2915  { 0x00B7, 0xB7, 0 },
2916  { 0x00B9, 0xB9, 0 },
2917  { 0x00BB, 0xBB, 0 },
2918  { 0x00BC, 0xBC, 0 },
2919  { 0x00BD, 0xBD, 0 },
2920  { 0x00BE, 0xBE, 0 },
2921  { 0x00C4, 0xC4, 0 },
2922  { 0x00C5, 0xC5, 0 },
2923  { 0x00C6, 0xAF, 0 },
2924  { 0x00C9, 0xC9, 0 },
2925  { 0x00D3, 0xD3, 0 },
2926  { 0x00D5, 0xD5, 0 },
2927  { 0x00D6, 0xD6, 0 },
2928  { 0x00D7, 0xD7, 0 },
2929  { 0x00D8, 0xA8, 0 },
2930  { 0x00DC, 0xDC, 0 },
2931  { 0x00DF, 0xDF, 0 },
2932  { 0x00E4, 0xE4, 0 },
2933  { 0x00E5, 0xE5, 0 },
2934  { 0x00E6, 0xBF, 0 },
2935  { 0x00E9, 0xE9, 0 },
2936  { 0x00F3, 0xF3, 0 },
2937  { 0x00F5, 0xF5, 0 },
2938  { 0x00F6, 0xF6, 0 },
2939  { 0x00F7, 0xF7, 0 },
2940  { 0x00F8, 0xB8, 0 },
2941  { 0x00FC, 0xFC, 0 },
2942  { 0x0100, 0xC2, 0 },
2943  { 0x0101, 0xE2, 0 },
2944  { 0x0104, 0xC0, 0 },
2945  { 0x0105, 0xE0, 0 },
2946  { 0x0106, 0xC3, 0 },
2947  { 0x0107, 0xE3, 0 },
2948  { 0x010C, 0xC8, 0 },
2949  { 0x010D, 0xE8, 0 },
2950  { 0x0112, 0xC7, 0 },
2951  { 0x0113, 0xE7, 0 },
2952  { 0x0116, 0xCB, 0 },
2953  { 0x0117, 0xEB, 0 },
2954  { 0x0118, 0xC6, 0 },
2955  { 0x0119, 0xE6, 0 },
2956  { 0x0122, 0xCC, 0 },
2957  { 0x0123, 0xEC, 0 },
2958  { 0x012A, 0xCE, 0 },
2959  { 0x012B, 0xEE, 0 },
2960  { 0x012E, 0xC1, 0 },
2961  { 0x012F, 0xE1, 0 },
2962  { 0x0136, 0xCD, 0 },
2963  { 0x0137, 0xED, 0 },
2964  { 0x013B, 0xCF, 0 },
2965  { 0x013C, 0xEF, 0 },
2966  { 0x0141, 0xD9, 0 },
2967  { 0x0142, 0xF9, 0 },
2968  { 0x0143, 0xD1, 0 },
2969  { 0x0144, 0xF1, 0 },
2970  { 0x0145, 0xD2, 0 },
2971  { 0x0146, 0xF2, 0 },
2972  { 0x014C, 0xD4, 0 },
2973  { 0x014D, 0xF4, 0 },
2974  { 0x0156, 0xAA, 0 },
2975  { 0x0157, 0xBA, 0 },
2976  { 0x015A, 0xDA, 0 },
2977  { 0x015B, 0xFA, 0 },
2978  { 0x0160, 0xD0, 0 },
2979  { 0x0161, 0xF0, 0 },
2980  { 0x016A, 0xDB, 0 },
2981  { 0x016B, 0xFB, 0 },
2982  { 0x0172, 0xD8, 0 },
2983  { 0x0173, 0xF8, 0 },
2984  { 0x0179, 0xCA, 0 },
2985  { 0x017A, 0xEA, 0 },
2986  { 0x017B, 0xDD, 0 },
2987  { 0x017C, 0xFD, 0 },
2988  { 0x017D, 0xDE, 0 },
2989  { 0x017E, 0xFE, 0 },
2990  { 0x2019, 0xFF, 0 },
2991  { 0x201C, 0xB4, 0 },
2992  { 0x201D, 0xA1, 0 },
2993  { 0x201E, 0xA5, 0 }
2994};
2995
2996/* ----------------------------------------------------------------------- */
2997
2998static ImplByteConvertData const aImplISO885913ByteCvtData =
2999{
3000    aImplISO885913ToUniTab,
3001    aImpl8090SameToUniTab,
3002    ISO885913UNI_START, ISO885913UNI_END,
3003    SAME8090UNI_START, SAME8090UNI_END,
3004    aImpl8090SameToCharTab,
3005    NULL,
3006    aImplISO885913ToCharTabEx,
3007    SAME8090CHAR_START, SAME8090CHAR_END,
3008    NOTABCHAR_START, NOTABCHAR_END,
3009    ISO885913TOCHARTABEX_COUNT
3010};
3011
3012/* ----------------------------------------------------------------------- */
3013
3014static ImplTextEncodingData const aImplISO885913TextEncodingData
3015    = { { &aImplISO885913ByteCvtData,
3016          ImplCharToUnicode,
3017          ImplUnicodeToChar,
3018          NULL,
3019          NULL,
3020          NULL,
3021          NULL,
3022          NULL,
3023          NULL },
3024        1,
3025        1,
3026        1,
3027        238,
3028        "iso8859-13",
3029        "iso-8859-13",
3030        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
3031    /* SCRIPT_EASTEUROPE, pc code page 852, mac encoding 29 */
3032
3033/* ======================================================================= */
3034
3035/* APPLE-CentEuro */
3036/* Apple CharSet for Eastern Europa (Polish, Czech, Slovak, Hungarian, Estonian, Latvian, Lithuanian) */
3037/* 1-Byte, 0x00-0x7F ASCII, jedoch eigentich Sonderzeichen zwischen 0x00-0x1F */
3038/* die wir aber nicht beruecksichtigen */
3039/* Convert-Tables: mappings/vendors/apple/centeuro.txt from 02/05/98 */
3040/* Last-Changes from us: */
3041
3042#define APPLECENTEUROUNI_START          0x80
3043#define APPLECENTEUROUNI_END            0xFF
3044static sal_uInt16 const aImplAPPLECENTEUROToUniTab[APPLECENTEUROUNI_END - APPLECENTEUROUNI_START + 1] =
3045{
3046/*       0       1       2       3       4       5       6       7 */
3047/*       8       9       A       B       C       D       E       F */
3048    0x00C4, 0x0100, 0x0101, 0x00C9, 0x0104, 0x00D6, 0x00DC, 0x00E1, /* 0x80 */
3049    0x0105, 0x010C, 0x00E4, 0x010D, 0x0106, 0x0107, 0x00E9, 0x0179, /* 0x80 */
3050    0x017A, 0x010E, 0x00ED, 0x010F, 0x0112, 0x0113, 0x0116, 0x00F3, /* 0x90 */
3051    0x0117, 0x00F4, 0x00F6, 0x00F5, 0x00FA, 0x011A, 0x011B, 0x00FC, /* 0x90 */
3052    0x2020, 0x00B0, 0x0118, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x00DF, /* 0xA0 */
3053    0x00AE, 0x00A9, 0x2122, 0x0119, 0x00A8, 0x2260, 0x0123, 0x012E, /* 0xA0 */
3054    0x012F, 0x012A, 0x2264, 0x2265, 0x012B, 0x0136, 0x2202, 0x2211, /* 0xB0 */
3055    0x0142, 0x013B, 0x013C, 0x013D, 0x013E, 0x0139, 0x013A, 0x0145, /* 0xB0 */
3056    0x0146, 0x0143, 0x00AC, 0x221A, 0x0144, 0x0147, 0x2206, 0x00AB, /* 0xC0 */
3057    0x00BB, 0x2026, 0x00A0, 0x0148, 0x0150, 0x00D5, 0x0151, 0x014C, /* 0xC0 */
3058    0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x25CA, /* 0xD0 */
3059    0x014D, 0x0154, 0x0155, 0x0158, 0x2039, 0x203A, 0x0159, 0x0156, /* 0xD0 */
3060    0x0157, 0x0160, 0x201A, 0x201E, 0x0161, 0x015A, 0x015B, 0x00C1, /* 0xE0 */
3061    0x0164, 0x0165, 0x00CD, 0x017D, 0x017E, 0x016A, 0x00D3, 0x00D4, /* 0xE0 */
3062    0x016B, 0x016E, 0x00DA, 0x016F, 0x0170, 0x0171, 0x0172, 0x0173, /* 0xF0 */
3063    0x00DD, 0x00FD, 0x0137, 0x017B, 0x0141, 0x017C, 0x0122, 0x02C7  /* 0xF0 */
3064};
3065
3066/* ----------------------------------------------------------------------- */
3067
3068#define APPLECENTEUROTOCHARTABEX_COUNT  128
3069static ImplUniCharTabData const aImplAPPLECENTEUROToCharTabEx[APPLECENTEUROTOCHARTABEX_COUNT] =
3070{
3071  { 0x00A0, 0xCA, 0 },
3072  { 0x00A3, 0xA3, 0 },
3073  { 0x00A7, 0xA4, 0 },
3074  { 0x00A8, 0xAC, 0 },
3075  { 0x00A9, 0xA9, 0 },
3076  { 0x00AB, 0xC7, 0 },
3077  { 0x00AC, 0xC2, 0 },
3078  { 0x00AE, 0xA8, 0 },
3079  { 0x00B0, 0xA1, 0 },
3080  { 0x00B6, 0xA6, 0 },
3081  { 0x00BB, 0xC8, 0 },
3082  { 0x00C1, 0xE7, 0 },
3083  { 0x00C4, 0x80, 0 },
3084  { 0x00C9, 0x83, 0 },
3085  { 0x00CD, 0xEA, 0 },
3086  { 0x00D3, 0xEE, 0 },
3087  { 0x00D4, 0xEF, 0 },
3088  { 0x00D5, 0xCD, 0 },
3089  { 0x00D6, 0x85, 0 },
3090  { 0x00DA, 0xF2, 0 },
3091  { 0x00DC, 0x86, 0 },
3092  { 0x00DD, 0xF8, 0 },
3093  { 0x00DF, 0xA7, 0 },
3094  { 0x00E1, 0x87, 0 },
3095  { 0x00E4, 0x8A, 0 },
3096  { 0x00E9, 0x8E, 0 },
3097  { 0x00ED, 0x92, 0 },
3098  { 0x00F3, 0x97, 0 },
3099  { 0x00F4, 0x99, 0 },
3100  { 0x00F5, 0x9B, 0 },
3101  { 0x00F6, 0x9A, 0 },
3102  { 0x00F7, 0xD6, 0 },
3103  { 0x00FA, 0x9C, 0 },
3104  { 0x00FC, 0x9F, 0 },
3105  { 0x00FD, 0xF9, 0 },
3106  { 0x0100, 0x81, 0 },
3107  { 0x0101, 0x82, 0 },
3108  { 0x0104, 0x84, 0 },
3109  { 0x0105, 0x88, 0 },
3110  { 0x0106, 0x8C, 0 },
3111  { 0x0107, 0x8D, 0 },
3112  { 0x010C, 0x89, 0 },
3113  { 0x010D, 0x8B, 0 },
3114  { 0x010E, 0x91, 0 },
3115  { 0x010F, 0x93, 0 },
3116  { 0x0112, 0x94, 0 },
3117  { 0x0113, 0x95, 0 },
3118  { 0x0116, 0x96, 0 },
3119  { 0x0117, 0x98, 0 },
3120  { 0x0118, 0xA2, 0 },
3121  { 0x0119, 0xAB, 0 },
3122  { 0x011A, 0x9D, 0 },
3123  { 0x011B, 0x9E, 0 },
3124  { 0x0122, 0xFE, 0 },
3125  { 0x0123, 0xAE, 0 },
3126  { 0x012A, 0xB1, 0 },
3127  { 0x012B, 0xB4, 0 },
3128  { 0x012E, 0xAF, 0 },
3129  { 0x012F, 0xB0, 0 },
3130  { 0x0136, 0xB5, 0 },
3131  { 0x0137, 0xFA, 0 },
3132  { 0x0139, 0xBD, 0 },
3133  { 0x013A, 0xBE, 0 },
3134  { 0x013B, 0xB9, 0 },
3135  { 0x013C, 0xBA, 0 },
3136  { 0x013D, 0xBB, 0 },
3137  { 0x013E, 0xBC, 0 },
3138  { 0x0141, 0xFC, 0 },
3139  { 0x0142, 0xB8, 0 },
3140  { 0x0143, 0xC1, 0 },
3141  { 0x0144, 0xC4, 0 },
3142  { 0x0145, 0xBF, 0 },
3143  { 0x0146, 0xC0, 0 },
3144  { 0x0147, 0xC5, 0 },
3145  { 0x0148, 0xCB, 0 },
3146  { 0x014C, 0xCF, 0 },
3147  { 0x014D, 0xD8, 0 },
3148  { 0x0150, 0xCC, 0 },
3149  { 0x0151, 0xCE, 0 },
3150  { 0x0154, 0xD9, 0 },
3151  { 0x0155, 0xDA, 0 },
3152  { 0x0156, 0xDF, 0 },
3153  { 0x0157, 0xE0, 0 },
3154  { 0x0158, 0xDB, 0 },
3155  { 0x0159, 0xDE, 0 },
3156  { 0x015A, 0xE5, 0 },
3157  { 0x015B, 0xE6, 0 },
3158  { 0x0160, 0xE1, 0 },
3159  { 0x0161, 0xE4, 0 },
3160  { 0x0164, 0xE8, 0 },
3161  { 0x0165, 0xE9, 0 },
3162  { 0x016A, 0xED, 0 },
3163  { 0x016B, 0xF0, 0 },
3164  { 0x016E, 0xF1, 0 },
3165  { 0x016F, 0xF3, 0 },
3166  { 0x0170, 0xF4, 0 },
3167  { 0x0171, 0xF5, 0 },
3168  { 0x0172, 0xF6, 0 },
3169  { 0x0173, 0xF7, 0 },
3170  { 0x0179, 0x8F, 0 },
3171  { 0x017A, 0x90, 0 },
3172  { 0x017B, 0xFB, 0 },
3173  { 0x017C, 0xFD, 0 },
3174  { 0x017D, 0xEB, 0 },
3175  { 0x017E, 0xEC, 0 },
3176  { 0x02C7, 0xFF, 0 },
3177  { 0x2013, 0xD0, 0 },
3178  { 0x2014, 0xD1, 0 },
3179  { 0x2018, 0xD4, 0 },
3180  { 0x2019, 0xD5, 0 },
3181  { 0x201A, 0xE2, 0 },
3182  { 0x201C, 0xD2, 0 },
3183  { 0x201D, 0xD3, 0 },
3184  { 0x201E, 0xE3, 0 },
3185  { 0x2020, 0xA0, 0 },
3186  { 0x2022, 0xA5, 0 },
3187  { 0x2026, 0xC9, 0 },
3188  { 0x2039, 0xDC, 0 },
3189  { 0x203A, 0xDD, 0 },
3190  { 0x2122, 0xAA, 0 },
3191  { 0x2202, 0xB6, 0 },
3192  { 0x2206, 0xC6, 0 },
3193  { 0x2211, 0xB7, 0 },
3194  { 0x221A, 0xC3, 0 },
3195  { 0x2260, 0xAD, 0 },
3196  { 0x2264, 0xB2, 0 },
3197  { 0x2265, 0xB3, 0 },
3198  { 0x25CA, 0xD7, 0 }
3199};
3200
3201/* ----------------------------------------------------------------------- */
3202
3203static ImplByteConvertData const aImplAPPLECENTEUROByteCvtData =
3204{
3205    aImplAPPLECENTEUROToUniTab,
3206    NULL,
3207    APPLECENTEUROUNI_START, APPLECENTEUROUNI_END,
3208    NOTABUNI_START, NOTABUNI_END,
3209    NULL,
3210    NULL,
3211    aImplAPPLECENTEUROToCharTabEx,
3212    NOTABCHAR_START, NOTABCHAR_END,
3213    NOTABCHAR_START, NOTABCHAR_END,
3214    APPLECENTEUROTOCHARTABEX_COUNT
3215};
3216
3217/* ----------------------------------------------------------------------- */
3218
3219static ImplTextEncodingData const aImplAPPLECENTEUROTextEncodingData
3220    = { { &aImplAPPLECENTEUROByteCvtData,
3221          ImplCharToUnicode,
3222          ImplUnicodeToChar,
3223          NULL,
3224          NULL,
3225          NULL,
3226          NULL,
3227          NULL,
3228          NULL },
3229        1,
3230        1,
3231        1,
3232        238,
3233        "iso8859-2",
3234        "iso-8859-2",
3235        RTL_TEXTENCODING_INFO_ASCII };
3236    /* MAC, SCRIPT_EASTEUROPE, pc code page 852, mac encoding 29 */
3237
3238/* ======================================================================= */
3239
3240/* APPLE-Croatian */
3241/* Standard Apple CharSet for Croatian */
3242/* 1-Byte, 0x00-0x7F ASCII, jedoch eigentich Sonderzeichen zwischen 0x00-0x1F */
3243/* die wir aber nicht beruecksichtigen */
3244/* Convert-Tables: mappings/vendors/apple/croatien.txt from 02/05/98 */
3245/* Last-Changes from us: */
3246
3247#define APPLECROATIANUNI_START          0x80
3248#define APPLECROATIANUNI_END            0xFF
3249static sal_uInt16 const aImplAPPLECROATIANToUniTab[APPLECROATIANUNI_END - APPLECROATIANUNI_START + 1] =
3250{
3251/*       0       1       2       3       4       5       6       7 */
3252/*       8       9       A       B       C       D       E       F */
3253    0x00C4, 0x00C5, 0x00C7, 0x00C9, 0x00D1, 0x00D6, 0x00DC, 0x00E1, /* 0x80 */
3254    0x00E0, 0x00E2, 0x00E4, 0x00E3, 0x00E5, 0x00E7, 0x00E9, 0x00E8, /* 0x80 */
3255    0x00EA, 0x00EB, 0x00ED, 0x00EC, 0x00EE, 0x00EF, 0x00F1, 0x00F3, /* 0x90 */
3256    0x00F2, 0x00F4, 0x00F6, 0x00F5, 0x00FA, 0x00F9, 0x00FB, 0x00FC, /* 0x90 */
3257    0x2020, 0x00B0, 0x00A2, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x00DF, /* 0xA0 */
3258    0x00AE, 0x0160, 0x2122, 0x00B4, 0x00A8, 0x2260, 0x017D, 0x00D8, /* 0xA0 */
3259    0x221E, 0x00B1, 0x2264, 0x2265, 0x2206, 0x00B5, 0x2202, 0x2211, /* 0xB0 */
3260    0x220F, 0x0161, 0x222B, 0x00AA, 0x00BA, 0x03A9, 0x017E, 0x00F8, /* 0xB0 */
3261    0x00BF, 0x00A1, 0x00AC, 0x221A, 0x0192, 0x2248, 0x0106, 0x00AB, /* 0xC0 */
3262    0x010C, 0x2026, 0x00A0, 0x00C0, 0x00C3, 0x00D5, 0x0152, 0x0153, /* 0xC0 */
3263    0x0110, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x25CA, /* 0xD0 */
3264    0xF8FF, 0x00A9, 0x2044, 0x00A4, 0x2039, 0x203A, 0x00C6, 0x00BB, /* 0xD0 */
3265    0x2013, 0x00B7, 0x201A, 0x201E, 0x2030, 0x00C2, 0x0107, 0x00C1, /* 0xE0 */
3266    0x010D, 0x00C8, 0x00CD, 0x00CE, 0x00CF, 0x00CC, 0x00D3, 0x00D4, /* 0xE0 */
3267    0x0111, 0x00D2, 0x00DA, 0x00DB, 0x00D9, 0x0131, 0x02C6, 0x02DC, /* 0xF0 */
3268    0x00AF, 0x03C0, 0x00CB, 0x02DA, 0x00B8, 0x00CA, 0x00E6, 0x02C7  /* 0xF0 */
3269};
3270
3271/* ----------------------------------------------------------------------- */
3272
3273#define APPLECROATIANCHAR_START         0x00A0
3274#define APPLECROATIANCHAR_END           0x00FC
3275static sal_uChar const aImplAPPLECROATIANToCharTab[APPLECROATIANCHAR_END - APPLECROATIANCHAR_START + 1] =
3276{
3277/*     0     1     2     3     4     5     6     7 */
3278/*     8     9     A     B     C     D     E     F */
3279    0xCA, 0xC1, 0xA2, 0xA3, 0xDB,    0,    0, 0xA4, /* 0x00A0 */
3280    0xAC, 0xD9, 0xBB, 0xC7, 0xC2,    0, 0xA8, 0xF8, /* 0x00A0 */
3281    0xA1, 0xB1,    0,    0, 0xAB, 0xB5, 0xA6, 0xE1, /* 0x00B0 */
3282    0xFC,    0, 0xBC, 0xDF,    0,    0,    0, 0xC0, /* 0x00B0 */
3283    0xCB, 0xE7, 0xE5, 0xCC, 0x80, 0x81, 0xDE, 0x82, /* 0x00C0 */
3284    0xE9, 0x83, 0xFD, 0xFA, 0xED, 0xEA, 0xEB, 0xEC, /* 0x00C0 */
3285       0, 0x84, 0xF1, 0xEE, 0xEF, 0xCD, 0x85,    0, /* 0x00D0 */
3286    0xAF, 0xF4, 0xF2, 0xF3, 0x86,    0,    0, 0xA7, /* 0x00D0 */
3287    0x88, 0x87, 0x89, 0x8B, 0x8A, 0x8C, 0xFE, 0x8D, /* 0x00E0 */
3288    0x8F, 0x8E, 0x90, 0x91, 0x93, 0x92, 0x94, 0x95, /* 0x00E0 */
3289       0, 0x96, 0x98, 0x97, 0x99, 0x9B, 0x9A, 0xD6, /* 0x00F0 */
3290    0xBF, 0x9D, 0x9C, 0x9E, 0x9F                    /* 0x00F0 */
3291};
3292
3293/* ----------------------------------------------------------------------- */
3294
3295#define APPLECROATIANTOCHARTABEX_COUNT  49
3296static ImplUniCharTabData const aImplAPPLECROATIANToCharTabEx[APPLECROATIANTOCHARTABEX_COUNT] =
3297{
3298  { 0x0106, 0xC6, 0 },
3299  { 0x0107, 0xE6, 0 },
3300  { 0x010C, 0xC8, 0 },
3301  { 0x010D, 0xE8, 0 },
3302  { 0x0110, 0xD0, 0 },
3303  { 0x0111, 0xF0, 0 },
3304  { 0x0131, 0xF5, 0 },
3305  { 0x0152, 0xCE, 0 },
3306  { 0x0153, 0xCF, 0 },
3307  { 0x0160, 0xA9, 0 },
3308  { 0x0161, 0xB9, 0 },
3309  { 0x017D, 0xAE, 0 },
3310  { 0x017E, 0xBE, 0 },
3311  { 0x0192, 0xC4, 0 },
3312  { 0x02C6, 0xF6, 0 },
3313  { 0x02C7, 0xFF, 0 },
3314  { 0x02DA, 0xFB, 0 },
3315  { 0x02DC, 0xF7, 0 },
3316  { 0x03A9, 0xBD, 0 },
3317  { 0x03C0, 0xF9, 0 },
3318  { 0x2013, 0xE0, 0 },
3319  { 0x2014, 0xD1, 0 },
3320  { 0x2018, 0xD4, 0 },
3321  { 0x2019, 0xD5, 0 },
3322  { 0x201A, 0xE2, 0 },
3323  { 0x201C, 0xD2, 0 },
3324  { 0x201D, 0xD3, 0 },
3325  { 0x201E, 0xE3, 0 },
3326  { 0x2020, 0xA0, 0 },
3327  { 0x2022, 0xA5, 0 },
3328  { 0x2026, 0xC9, 0 },
3329  { 0x2030, 0xE4, 0 },
3330  { 0x2039, 0xDC, 0 },
3331  { 0x203A, 0xDD, 0 },
3332  { 0x2044, 0xDA, 0 },
3333  { 0x2122, 0xAA, 0 },
3334  { 0x2202, 0xB6, 0 },
3335  { 0x2206, 0xB4, 0 },
3336  { 0x220F, 0xB8, 0 },
3337  { 0x2211, 0xB7, 0 },
3338  { 0x221A, 0xC3, 0 },
3339  { 0x221E, 0xB0, 0 },
3340  { 0x222B, 0xBA, 0 },
3341  { 0x2248, 0xC5, 0 },
3342  { 0x2260, 0xAD, 0 },
3343  { 0x2264, 0xB2, 0 },
3344  { 0x2265, 0xB3, 0 },
3345  { 0x25CA, 0xD7, 0 },
3346  { 0xF8FF, 0xD8, 0 }
3347};
3348
3349/* ----------------------------------------------------------------------- */
3350
3351static ImplByteConvertData const aImplAPPLECROATIANByteCvtData =
3352{
3353    aImplAPPLECROATIANToUniTab,
3354    NULL,
3355    APPLECROATIANUNI_START, APPLECROATIANUNI_END,
3356    NOTABUNI_START, NOTABUNI_END,
3357    aImplAPPLECROATIANToCharTab,
3358    NULL,
3359    aImplAPPLECROATIANToCharTabEx,
3360    APPLECROATIANCHAR_START, APPLECROATIANCHAR_END,
3361    NOTABCHAR_START, NOTABCHAR_END,
3362    APPLECROATIANTOCHARTABEX_COUNT
3363};
3364
3365/* ----------------------------------------------------------------------- */
3366
3367static ImplTextEncodingData const aImplAPPLECROATIANTextEncodingData
3368    = { { &aImplAPPLECROATIANByteCvtData,
3369          ImplCharToUnicode,
3370          ImplUnicodeToChar,
3371          NULL,
3372          NULL,
3373          NULL,
3374          NULL,
3375          NULL,
3376          NULL },
3377        1,
3378        1,
3379        1,
3380        238,
3381        "iso8859-2",
3382        "iso-8859-2",
3383        RTL_TEXTENCODING_INFO_ASCII };
3384    /* MAC, SCRIPT_EASTEUROPE, pc code page 852, mac encoding 36 */
3385
3386/* ======================================================================= */
3387
3388/* APPLE-Cyrillic */
3389/* Apple CharSet for Cyrillic */
3390/* 1-Byte, 0x00-0x7F ASCII, jedoch eigentich Sonderzeichen zwischen 0x00-0x1F */
3391/* die wir aber nicht beruecksichtigen */
3392/* Convert-Tables: mappings/vendors/apple/cyrillic.txt from 02/15/98 */
3393/* Last-Changes from us: */
3394
3395#define APPLECYRILLICUNI_START          0x80
3396#define APPLECYRILLICUNI_END            0xFF
3397static sal_uInt16 const aImplAPPLECYRILLICToUniTab[APPLECYRILLICUNI_END - APPLECYRILLICUNI_START + 1] =
3398{
3399/*       0       1       2       3       4       5       6       7 */
3400/*       8       9       A       B       C       D       E       F */
3401    0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, /* 0x80 */
3402    0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, /* 0x80 */
3403    0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, /* 0x90 */
3404    0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, /* 0x90 */
3405    0x2020, 0x00B0, 0x00A2, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x0406, /* 0xA0 */
3406    0x00AE, 0x00A9, 0x2122, 0x0402, 0x0452, 0x2260, 0x0403, 0x0453, /* 0xA0 */
3407    0x221E, 0x00B1, 0x2264, 0x2265, 0x0456, 0x00B5, 0x2202, 0x0408, /* 0xB0 */
3408    0x0404, 0x0454, 0x0407, 0x0457, 0x0409, 0x0459, 0x040A, 0x045A, /* 0xB0 */
3409    0x0458, 0x0405, 0x00AC, 0x221A, 0x0192, 0x2248, 0x2206, 0x00AB, /* 0xC0 */
3410    0x00BB, 0x2026, 0x00A0, 0x040B, 0x045B, 0x040C, 0x045C, 0x0455, /* 0xC0 */
3411    0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x201E, /* 0xD0 */
3412    0x040E, 0x045E, 0x040F, 0x045F, 0x2116, 0x0401, 0x0451, 0x044F, /* 0xD0 */
3413    0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, /* 0xE0 */
3414    0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, /* 0xE0 */
3415    0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, /* 0xF0 */
3416    0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x00A4  /* 0xF0 */
3417};
3418
3419/* ----------------------------------------------------------------------- */
3420
3421#define APPLECYRILLICCHAR_START         0x0401
3422#define APPLECYRILLICCHAR_END           0x045F
3423static sal_uChar const aImplAPPLECYRILLICToCharTab[APPLECYRILLICCHAR_END - APPLECYRILLICCHAR_START + 1] =
3424{
3425/*     0     1     2     3     4     5     6     7 */
3426/*     8     9     A     B     C     D     E     F */
3427          0xDD, 0xAB, 0xAE, 0xB8, 0xC1, 0xA7, 0xBA, /* 0x0400 */
3428    0xB7, 0xBC, 0xBE, 0xCB, 0xCD,    0, 0xD8, 0xDA, /* 0x0400 */
3429    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x0410 */
3430    0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, /* 0x0410 */
3431    0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, /* 0x0420 */
3432    0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F, /* 0x0420 */
3433    0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, /* 0x0430 */
3434    0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, /* 0x0430 */
3435    0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, /* 0x0440 */
3436    0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xDF, /* 0x0440 */
3437       0, 0xDE, 0xAC, 0xAF, 0xB9, 0xCF, 0xB4, 0xBB, /* 0x0450 */
3438    0xC0, 0xBD, 0xBF, 0xCC, 0xCE,    0, 0xD9, 0xDB, /* 0x0450 */
3439};
3440
3441/* ----------------------------------------------------------------------- */
3442
3443#define APPLECYRILLICTOCHARTABEX_COUNT  36
3444static ImplUniCharTabData const aImplAPPLECYRILLICToCharTabEx[APPLECYRILLICTOCHARTABEX_COUNT] =
3445{
3446  { 0x00A0, 0xCA, 0 },
3447  { 0x00A2, 0xA2, 0 },
3448  { 0x00A3, 0xA3, 0 },
3449  { 0x00A4, 0xFF, 0 },
3450  { 0x00A7, 0xA4, 0 },
3451  { 0x00A9, 0xA9, 0 },
3452  { 0x00AB, 0xC7, 0 },
3453  { 0x00AC, 0xC2, 0 },
3454  { 0x00AE, 0xA8, 0 },
3455  { 0x00B0, 0xA1, 0 },
3456  { 0x00B1, 0xB1, 0 },
3457  { 0x00B5, 0xB5, 0 },
3458  { 0x00B6, 0xA6, 0 },
3459  { 0x00BB, 0xC8, 0 },
3460  { 0x00F7, 0xD6, 0 },
3461  { 0x0192, 0xC4, 0 },
3462  { 0x2013, 0xD0, 0 },
3463  { 0x2014, 0xD1, 0 },
3464  { 0x2018, 0xD4, 0 },
3465  { 0x2019, 0xD5, 0 },
3466  { 0x201C, 0xD2, 0 },
3467  { 0x201D, 0xD3, 0 },
3468  { 0x201E, 0xD7, 0 },
3469  { 0x2020, 0xA0, 0 },
3470  { 0x2022, 0xA5, 0 },
3471  { 0x2026, 0xC9, 0 },
3472  { 0x2116, 0xDC, 0 },
3473  { 0x2122, 0xAA, 0 },
3474  { 0x2202, 0xB6, 0 },
3475  { 0x2206, 0xC6, 0 },
3476  { 0x221A, 0xC3, 0 },
3477  { 0x221E, 0xB0, 0 },
3478  { 0x2248, 0xC5, 0 },
3479  { 0x2260, 0xAD, 0 },
3480  { 0x2264, 0xB2, 0 },
3481  { 0x2265, 0xB3, 0 }
3482};
3483
3484/* ----------------------------------------------------------------------- */
3485
3486static ImplByteConvertData const aImplAPPLECYRILLICByteCvtData =
3487{
3488    aImplAPPLECYRILLICToUniTab,
3489    NULL,
3490    APPLECYRILLICUNI_START, APPLECYRILLICUNI_END,
3491    NOTABUNI_START, NOTABUNI_END,
3492    aImplAPPLECYRILLICToCharTab,
3493    NULL,
3494    aImplAPPLECYRILLICToCharTabEx,
3495    APPLECYRILLICCHAR_START, APPLECYRILLICCHAR_END,
3496    NOTABCHAR_START, NOTABCHAR_END,
3497    APPLECYRILLICTOCHARTABEX_COUNT
3498};
3499
3500/* ----------------------------------------------------------------------- */
3501
3502static ImplTextEncodingData const aImplAPPLECYRILLICTextEncodingData
3503    = { { &aImplAPPLECYRILLICByteCvtData,
3504          ImplCharToUnicode,
3505          ImplUnicodeToChar,
3506          NULL,
3507          NULL,
3508          NULL,
3509          NULL,
3510          NULL,
3511          NULL },
3512        1,
3513        1,
3514        1,
3515        204,
3516        "iso8859-5",
3517        "iso-8859-5",
3518        RTL_TEXTENCODING_INFO_ASCII };
3519    /* MAC, SCRIPT_CYRILLIC, pc code page 866 (855?), mac encoding 7 */
3520
3521/* ======================================================================= */
3522
3523/* APPLE-Greek */
3524/* Apple CharSet for Greek */
3525/* 1-Byte, 0x00-0x7F ASCII, jedoch eigentich Sonderzeichen zwischen 0x00-0x1F */
3526/* die wir aber nicht beruecksichtigen */
3527/* Convert-Tables: mappings/vendors/apple/roman.txt from 08/18/98 */
3528/* Last-Changes from us: */
3529
3530#define APPLEGREEKUNI_START             0x80
3531#define APPLEGREEKUNI_END               0xFF
3532static sal_uInt16 const aImplAPPLEGREEKToUniTab[APPLEGREEKUNI_END - APPLEGREEKUNI_START + 1] =
3533{
3534/*       0       1       2       3       4       5       6       7 */
3535/*       8       9       A       B       C       D       E       F */
3536    0x00C4, 0x00B9, 0x00B2, 0x00C9, 0x00B3, 0x00D6, 0x00DC, 0x0385, /* 0x80 */
3537    0x00E0, 0x00E2, 0x00E4, 0x0384, 0x00A8, 0x00E7, 0x00E9, 0x00E8, /* 0x80 */
3538    0x00EA, 0x00EB, 0x00A3, 0x2122, 0x00EE, 0x00EF, 0x2022, 0x00BD, /* 0x90 */
3539    0x2030, 0x00F4, 0x00F6, 0x00A6, 0x00AD, 0x00F9, 0x00FB, 0x00FC, /* 0x90 */
3540    0x2020, 0x0393, 0x0394, 0x0398, 0x039B, 0x039E, 0x03A0, 0x00DF, /* 0xA0 */
3541    0x00AE, 0x00A9, 0x03A3, 0x03AA, 0x00A7, 0x2260, 0x00B0, 0x00B7, /* 0xA0 */
3542    0x0391, 0x00B1, 0x2264, 0x2265, 0x00A5, 0x0392, 0x0395, 0x0396, /* 0xB0 */
3543    0x0397, 0x0399, 0x039A, 0x039C, 0x03A6, 0x03AB, 0x03A8, 0x03A9, /* 0xB0 */
3544    0x03AC, 0x039D, 0x00AC, 0x039F, 0x03A1, 0x2248, 0x03A4, 0x00AB, /* 0xC0 */
3545    0x00BB, 0x2026, 0x00A0, 0x03A5, 0x03A7, 0x0386, 0x0388, 0x0153, /* 0xC0 */
3546    0x2013, 0x2015, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x0389, /* 0xD0 */
3547    0x038A, 0x038C, 0x038E, 0x03AD, 0x03AE, 0x03AF, 0x03CC, 0x038F, /* 0xD0 */
3548    0x03CD, 0x03B1, 0x03B2, 0x03C8, 0x03B4, 0x03B5, 0x03C6, 0x03B3, /* 0xE0 */
3549    0x03B7, 0x03B9, 0x03BE, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BF, /* 0xE0 */
3550    0x03C0, 0x03CE, 0x03C1, 0x03C3, 0x03C4, 0x03B8, 0x03C9, 0x03C2, /* 0xF0 */
3551    0x03C7, 0x03C5, 0x03B6, 0x03CA, 0x03CB, 0x0390, 0x03B0, 0xF8A0  /* 0xF0 */
3552};
3553
3554/* ----------------------------------------------------------------------- */
3555
3556#define APPLEGREEKCHAR_START            0x0384
3557#define APPLEGREEKCHAR_END              0x03CE
3558static sal_uChar const aImplAPPLEGREEKToCharTab[APPLEGREEKCHAR_END - APPLEGREEKCHAR_START + 1] =
3559{
3560/*     0     1     2     3     4     5     6     7 */
3561/*     8     9     A     B     C     D     E     F */
3562                            0x8B, 0x87, 0xCD,    0, /* 0x0380 */
3563    0xCE, 0xD7, 0xD8,    0, 0xD9,    0, 0xDA, 0xDF, /* 0x0380 */
3564    0xFD, 0xB0, 0xB5, 0xA1, 0xA2, 0xB6, 0xB7, 0xB8, /* 0x0390 */
3565    0xA3, 0xB9, 0xBA, 0xA4, 0xBB, 0xC1, 0xA5, 0xC3, /* 0x0390 */
3566    0xA6, 0xC4,    0, 0xAA, 0xC6, 0xCB, 0xBC, 0xCC, /* 0x03A0 */
3567    0xBE, 0xBF, 0xAB, 0xBD, 0xC0, 0xDB, 0xDC, 0xDD, /* 0x03A0 */
3568    0xFE, 0xE1, 0xE2, 0xE7, 0xE4, 0xE5, 0xFA, 0xE8, /* 0x03B0 */
3569    0xF5, 0xE9, 0xEB, 0xEC, 0xED, 0xEE, 0xEA, 0xEF, /* 0x03B0 */
3570    0xF0, 0xF2, 0xF7, 0xF3, 0xF4, 0xF9, 0xE6, 0xF8, /* 0x03C0 */
3571    0xE3, 0xF6, 0xFB, 0xFC, 0xDE, 0xE0, 0xF1        /* 0x03C0 */
3572};
3573
3574/* ----------------------------------------------------------------------- */
3575
3576#define APPLEGREEKTOCHARTABEX_COUNT     57
3577static ImplUniCharTabData const aImplAPPLEGREEKToCharTabEx[APPLEGREEKTOCHARTABEX_COUNT] =
3578{
3579  { 0x00A0, 0xCA, 0 },
3580  { 0x00A3, 0x92, 0 },
3581  { 0x00A5, 0xB4, 0 },
3582  { 0x00A6, 0x9B, 0 },
3583  { 0x00A7, 0xAC, 0 },
3584  { 0x00A8, 0x8C, 0 },
3585  { 0x00A9, 0xA9, 0 },
3586  { 0x00AB, 0xC7, 0 },
3587  { 0x00AC, 0xC2, 0 },
3588  { 0x00AD, 0x9C, 0 },
3589  { 0x00AE, 0xA8, 0 },
3590  { 0x00B0, 0xAE, 0 },
3591  { 0x00B1, 0xB1, 0 },
3592  { 0x00B2, 0x82, 0 },
3593  { 0x00B3, 0x84, 0 },
3594  { 0x00B7, 0xAF, 0 },
3595  { 0x00B9, 0x81, 0 },
3596  { 0x00BB, 0xC8, 0 },
3597  { 0x00BD, 0x97, 0 },
3598  { 0x00C4, 0x80, 0 },
3599  { 0x00C9, 0x83, 0 },
3600  { 0x00D6, 0x85, 0 },
3601  { 0x00DC, 0x86, 0 },
3602  { 0x00DF, 0xA7, 0 },
3603  { 0x00E0, 0x88, 0 },
3604  { 0x00E2, 0x89, 0 },
3605  { 0x00E4, 0x8A, 0 },
3606  { 0x00E7, 0x8D, 0 },
3607  { 0x00E8, 0x8F, 0 },
3608  { 0x00E9, 0x8E, 0 },
3609  { 0x00EA, 0x90, 0 },
3610  { 0x00EB, 0x91, 0 },
3611  { 0x00EE, 0x94, 0 },
3612  { 0x00EF, 0x95, 0 },
3613  { 0x00F4, 0x99, 0 },
3614  { 0x00F6, 0x9A, 0 },
3615  { 0x00F7, 0xD6, 0 },
3616  { 0x00F9, 0x9D, 0 },
3617  { 0x00FB, 0x9E, 0 },
3618  { 0x00FC, 0x9F, 0 },
3619  { 0x0153, 0xCF, 0 },
3620  { 0x2013, 0xD0, 0 },
3621  { 0x2015, 0xD1, 0 },
3622  { 0x2018, 0xD4, 0 },
3623  { 0x2019, 0xD5, 0 },
3624  { 0x201C, 0xD2, 0 },
3625  { 0x201D, 0xD3, 0 },
3626  { 0x2020, 0xA0, 0 },
3627  { 0x2022, 0x96, 0 },
3628  { 0x2026, 0xC9, 0 },
3629  { 0x2030, 0x98, 0 },
3630  { 0x2122, 0x93, 0 },
3631  { 0x2248, 0xC5, 0 },
3632  { 0x2260, 0xAD, 0 },
3633  { 0x2264, 0xB2, 0 },
3634  { 0x2265, 0xB3, 0 },
3635  { 0xF8A0, 0xFF, 0 }
3636};
3637
3638/* ----------------------------------------------------------------------- */
3639
3640static ImplByteConvertData const aImplAPPLEGREEKByteCvtData =
3641{
3642    aImplAPPLEGREEKToUniTab,
3643    NULL,
3644    APPLEGREEKUNI_START, APPLEGREEKUNI_END,
3645    NOTABUNI_START, NOTABUNI_END,
3646    aImplAPPLEGREEKToCharTab,
3647    NULL,
3648    aImplAPPLEGREEKToCharTabEx,
3649    APPLEGREEKCHAR_START, APPLEGREEKCHAR_END,
3650    NOTABCHAR_START, NOTABCHAR_END,
3651    APPLEGREEKTOCHARTABEX_COUNT
3652};
3653
3654/* ----------------------------------------------------------------------- */
3655
3656static ImplTextEncodingData const aImplAPPLEGREEKTextEncodingData
3657    = { { &aImplAPPLEGREEKByteCvtData,
3658          ImplCharToUnicode,
3659          ImplUnicodeToChar,
3660          NULL,
3661          NULL,
3662          NULL,
3663          NULL,
3664          NULL,
3665          NULL },
3666        1,
3667        1,
3668        1,
3669        161,
3670        "iso8859-7",
3671        "iso-8859-7",
3672        RTL_TEXTENCODING_INFO_ASCII };
3673    /* MAC, SCRIPT_GREEK, pc code page 869, mac encoding 6 */
3674
3675/* ======================================================================= */
3676
3677/* APPLE-Romanian */
3678/* Standard Apple CharSet for Romanien */
3679/* 1-Byte, 0x00-0x7F ASCII, jedoch eigentich Sonderzeichen zwischen 0x00-0x1F */
3680/* die wir aber nicht beruecksichtigen */
3681/* Convert-Tables: mappings/vendors/apple/romanian.txt from 02/05/98 */
3682/* Last-Changes from us: */
3683/* 0xAF --> 0x015E (like Java), Apple Definition: 0x0053+0x0326   # LATIN CAPITAL LETTER S + COMBINING COMMA BELOW */
3684/* 0xBF --> 0x015F (like Java), Apple Definition: 0x0073+0x0326   # LATIN SMALL LETTER S + COMBINING COMMA BELOW */
3685/* 0xDE --> 0x0162 (like Java), Apple Definition: 0x0054+0x0326   # LATIN CAPITAL LETTER T + COMBINING COMMA BELOW */
3686/* 0xDF --> 0x0163 (like Java), Apple Definition: 0x0074+0x0326   # LATIN SMALL LETTER T + COMBINING COMMA BELOW */
3687
3688#define APPLEROMANIANUNI_START          0x80
3689#define APPLEROMANIANUNI_END            0xFF
3690static sal_uInt16 const aImplAPPLEROMANIANToUniTab[APPLEROMANIANUNI_END - APPLEROMANIANUNI_START + 1] =
3691{
3692/*       0       1       2       3       4       5       6       7 */
3693/*       8       9       A       B       C       D       E       F */
3694    0x00C4, 0x00C5, 0x00C7, 0x00C9, 0x00D1, 0x00D6, 0x00DC, 0x00E1, /* 0x80 */
3695    0x00E0, 0x00E2, 0x00E4, 0x00E3, 0x00E5, 0x00E7, 0x00E9, 0x00E8, /* 0x80 */
3696    0x00EA, 0x00EB, 0x00ED, 0x00EC, 0x00EE, 0x00EF, 0x00F1, 0x00F3, /* 0x90 */
3697    0x00F2, 0x00F4, 0x00F6, 0x00F5, 0x00FA, 0x00F9, 0x00FB, 0x00FC, /* 0x90 */
3698    0x2020, 0x00B0, 0x00A2, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x00DF, /* 0xA0 */
3699    0x00AE, 0x00A9, 0x2122, 0x00B4, 0x00A8, 0x2260, 0x0102, 0x015E, /* 0xA0 */
3700    0x221E, 0x00B1, 0x2264, 0x2265, 0x00A5, 0x00B5, 0x2202, 0x2211, /* 0xB0 */
3701    0x220F, 0x03C0, 0x222B, 0x00AA, 0x00BA, 0x03A9, 0x0103, 0x015F, /* 0xB0 */
3702    0x00BF, 0x00A1, 0x00AC, 0x221A, 0x0192, 0x2248, 0x2206, 0x00AB, /* 0xC0 */
3703    0x00BB, 0x2026, 0x00A0, 0x00C0, 0x00C3, 0x00D5, 0x0152, 0x0153, /* 0xC0 */
3704    0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x25CA, /* 0xD0 */
3705    0x00FF, 0x0178, 0x2044, 0x00A4, 0x2039, 0x203A, 0x0162, 0x0163, /* 0xD0 */
3706    0x2021, 0x00B7, 0x201A, 0x201E, 0x2030, 0x00C2, 0x00CA, 0x00C1, /* 0xE0 */
3707    0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF, 0x00CC, 0x00D3, 0x00D4, /* 0xE0 */
3708    0xF8FF, 0x00D2, 0x00DA, 0x00DB, 0x00D9, 0x0131, 0x02C6, 0x02DC, /* 0xF0 */
3709    0x00AF, 0x02D8, 0x02D9, 0x02DA, 0x00B8, 0x02DD, 0x02DB, 0x02C7  /* 0xF0 */
3710};
3711
3712/* ----------------------------------------------------------------------- */
3713
3714#define APPLEROMANIANCHAR_START         0x00A0
3715#define APPLEROMANIANCHAR_END           0x00FF
3716static sal_uChar const aImplAPPLEROMANIANToCharTab[APPLEROMANIANCHAR_END - APPLEROMANIANCHAR_START + 1] =
3717{
3718/*     0     1     2     3     4     5     6     7 */
3719/*     8     9     A     B     C     D     E     F */
3720    0xCA, 0xC1, 0xA2, 0xA3, 0xDB, 0xB4,    0, 0xA4, /* 0x00A0 */
3721    0xAC, 0xA9, 0xBB, 0xC7, 0xC2,    0, 0xA8, 0xF8, /* 0x00A0 */
3722    0xA1, 0xB1,    0,    0, 0xAB, 0xB5, 0xA6, 0xE1, /* 0x00B0 */
3723    0xFC,    0, 0xBC, 0xC8,    0,    0,    0, 0xC0, /* 0x00B0 */
3724    0xCB, 0xE7, 0xE5, 0xCC, 0x80, 0x81,    0, 0x82, /* 0x00C0 */
3725    0xE9, 0x83, 0xE6, 0xE8, 0xED, 0xEA, 0xEB, 0xEC, /* 0x00C0 */
3726       0, 0x84, 0xF1, 0xEE, 0xEF, 0xCD, 0x85,    0, /* 0x00D0 */
3727       0, 0xF4, 0xF2, 0xF3, 0x86,    0,    0, 0xA7, /* 0x00D0 */
3728    0x88, 0x87, 0x89, 0x8B, 0x8A, 0x8C,    0, 0x8D, /* 0x00E0 */
3729    0x8F, 0x8E, 0x90, 0x91, 0x93, 0x92, 0x94, 0x95, /* 0x00E0 */
3730       0, 0x96, 0x98, 0x97, 0x99, 0x9B, 0x9A, 0xD6, /* 0x00F0 */
3731       0, 0x9D, 0x9C, 0x9E, 0x9F,    0,    0, 0xD8  /* 0x00F0 */
3732};
3733
3734/* ----------------------------------------------------------------------- */
3735
3736#define APPLEROMANIANTOCHARTABEX_COUNT  51
3737static ImplUniCharTabData const aImplAPPLEROMANIANToCharTabEx[APPLEROMANIANTOCHARTABEX_COUNT] =
3738{
3739  { 0x0102, 0xAE, 0 },
3740  { 0x0103, 0xBE, 0 },
3741  { 0x0131, 0xF5, 0 },
3742  { 0x0152, 0xCE, 0 },
3743  { 0x0153, 0xCF, 0 },
3744  { 0x015E, 0xAF, 0 },
3745  { 0x015F, 0xBF, 0 },
3746  { 0x0162, 0xDE, 0 },
3747  { 0x0163, 0xDF, 0 },
3748  { 0x0178, 0xD9, 0 },
3749  { 0x0192, 0xC4, 0 },
3750  { 0x02C6, 0xF6, 0 },
3751  { 0x02C7, 0xFF, 0 },
3752  { 0x02D8, 0xF9, 0 },
3753  { 0x02D9, 0xFA, 0 },
3754  { 0x02DA, 0xFB, 0 },
3755  { 0x02DB, 0xFE, 0 },
3756  { 0x02DC, 0xF7, 0 },
3757  { 0x02DD, 0xFD, 0 },
3758  { 0x03A9, 0xBD, 0 },
3759  { 0x03C0, 0xB9, 0 },
3760  { 0x2013, 0xD0, 0 },
3761  { 0x2014, 0xD1, 0 },
3762  { 0x2018, 0xD4, 0 },
3763  { 0x2019, 0xD5, 0 },
3764  { 0x201A, 0xE2, 0 },
3765  { 0x201C, 0xD2, 0 },
3766  { 0x201D, 0xD3, 0 },
3767  { 0x201E, 0xE3, 0 },
3768  { 0x2020, 0xA0, 0 },
3769  { 0x2021, 0xE0, 0 },
3770  { 0x2022, 0xA5, 0 },
3771  { 0x2026, 0xC9, 0 },
3772  { 0x2030, 0xE4, 0 },
3773  { 0x2039, 0xDC, 0 },
3774  { 0x203A, 0xDD, 0 },
3775  { 0x2044, 0xDA, 0 },
3776  { 0x2122, 0xAA, 0 },
3777  { 0x2202, 0xB6, 0 },
3778  { 0x2206, 0xC6, 0 },
3779  { 0x220F, 0xB8, 0 },
3780  { 0x2211, 0xB7, 0 },
3781  { 0x221A, 0xC3, 0 },
3782  { 0x221E, 0xB0, 0 },
3783  { 0x222B, 0xBA, 0 },
3784  { 0x2248, 0xC5, 0 },
3785  { 0x2260, 0xAD, 0 },
3786  { 0x2264, 0xB2, 0 },
3787  { 0x2265, 0xB3, 0 },
3788  { 0x25CA, 0xD7, 0 },
3789  { 0xF8FF, 0xF0, 0 }
3790};
3791
3792/* ----------------------------------------------------------------------- */
3793
3794static ImplByteConvertData const aImplAPPLEROMANIANByteCvtData =
3795{
3796    aImplAPPLEROMANIANToUniTab,
3797    NULL,
3798    APPLEROMANIANUNI_START, APPLEROMANIANUNI_END,
3799    NOTABUNI_START, NOTABUNI_END,
3800    aImplAPPLEROMANIANToCharTab,
3801    NULL,
3802    aImplAPPLEROMANIANToCharTabEx,
3803    APPLEROMANIANCHAR_START, APPLEROMANIANCHAR_END,
3804    NOTABCHAR_START, NOTABCHAR_END,
3805    APPLEROMANIANTOCHARTABEX_COUNT
3806};
3807
3808/* ----------------------------------------------------------------------- */
3809
3810static ImplTextEncodingData const aImplAPPLEROMANIANTextEncodingData
3811    = { { &aImplAPPLEROMANIANByteCvtData,
3812          ImplCharToUnicode,
3813          ImplUnicodeToChar,
3814          NULL,
3815          NULL,
3816          NULL,
3817          NULL,
3818          NULL,
3819          NULL },
3820        1,
3821        1,
3822        1,
3823        238,
3824        "iso8859-2",
3825        "iso-8859-2",
3826        RTL_TEXTENCODING_INFO_ASCII };
3827    /* MAC, SCRIPT_EASTEUROPE, pc code page 852, mac encoding 38 */
3828
3829/* ======================================================================= */
3830
3831/* APPLE-Turkish */
3832/* Apple CharSet for Turkish */
3833/* 1-Byte, 0x00-0x7F ASCII, jedoch eigentich Sonderzeichen zwischen 0x00-0x1F */
3834/* die wir aber nicht beruecksichtigen */
3835/* Convert-Tables: mappings/vendors/apple/turkish.txt from 02/05/98 */
3836/* Last-Changes from us: */
3837
3838#define APPLETURKISHUNI_START           0x80
3839#define APPLETURKISHUNI_END             0xFF
3840static sal_uInt16 const aImplAPPLETURKISHToUniTab[APPLETURKISHUNI_END - APPLETURKISHUNI_START + 1] =
3841{
3842/*       0       1       2       3       4       5       6       7 */
3843/*       8       9       A       B       C       D       E       F */
3844    0x00C4, 0x00C5, 0x00C7, 0x00C9, 0x00D1, 0x00D6, 0x00DC, 0x00E1, /* 0x80 */
3845    0x00E0, 0x00E2, 0x00E4, 0x00E3, 0x00E5, 0x00E7, 0x00E9, 0x00E8, /* 0x80 */
3846    0x00EA, 0x00EB, 0x00ED, 0x00EC, 0x00EE, 0x00EF, 0x00F1, 0x00F3, /* 0x90 */
3847    0x00F2, 0x00F4, 0x00F6, 0x00F5, 0x00FA, 0x00F9, 0x00FB, 0x00FC, /* 0x90 */
3848    0x2020, 0x00B0, 0x00A2, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x00DF, /* 0xA0 */
3849    0x00AE, 0x00A9, 0x2122, 0x00B4, 0x00A8, 0x2260, 0x00C6, 0x00D8, /* 0xA0 */
3850    0x221E, 0x00B1, 0x2264, 0x2265, 0x00A5, 0x00B5, 0x2202, 0x2211, /* 0xB0 */
3851    0x220F, 0x03C0, 0x222B, 0x00AA, 0x00BA, 0x03A9, 0x00E6, 0x00F8, /* 0xB0 */
3852    0x00BF, 0x00A1, 0x00AC, 0x221A, 0x0192, 0x2248, 0x2206, 0x00AB, /* 0xC0 */
3853    0x00BB, 0x2026, 0x00A0, 0x00C0, 0x00C3, 0x00D5, 0x0152, 0x0153, /* 0xC0 */
3854    0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x25CA, /* 0xD0 */
3855    0x00FF, 0x0178, 0x011E, 0x011F, 0x0130, 0x0131, 0x015E, 0x015F, /* 0xD0 */
3856    0x2021, 0x00B7, 0x201A, 0x201E, 0x2030, 0x00C2, 0x00CA, 0x00C1, /* 0xE0 */
3857    0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF, 0x00CC, 0x00D3, 0x00D4, /* 0xE0 */
3858    0xF8FF, 0x00D2, 0x00DA, 0x00DB, 0x00D9, 0xF8A0, 0x02C6, 0x02DC, /* 0xF0 */
3859    0x00AF, 0x02D8, 0x02D9, 0x02DA, 0x00B8, 0x02DD, 0x02DB, 0x02C7  /* 0xF0 */
3860};
3861
3862/* ----------------------------------------------------------------------- */
3863
3864#define APPLETURKISHCHAR_START          0x00A0
3865#define APPLETURKISHCHAR_END            0x00FF
3866static sal_uChar const aImplAPPLETURKISHToCharTab[APPLETURKISHCHAR_END - APPLETURKISHCHAR_START + 1] =
3867{
3868/*     0     1     2     3     4     5     6     7 */
3869/*     8     9     A     B     C     D     E     F */
3870    0xCA, 0xC1, 0xA2, 0xA3,    0, 0xB4,    0, 0xA4, /* 0x00A0 */
3871    0xAC, 0xA9, 0xBB, 0xC7, 0xC2,    0, 0xA8, 0xF8, /* 0x00A0 */
3872    0xA1, 0xB1,    0,    0, 0xAB, 0xB5, 0xA6, 0xE1, /* 0x00B0 */
3873    0xFC,    0, 0xBC, 0xC8,    0,    0,    0, 0xC0, /* 0x00B0 */
3874    0xCB, 0xE7, 0xE5, 0xCC, 0x80, 0x81, 0xAE, 0x82, /* 0x00C0 */
3875    0xE9, 0x83, 0xE6, 0xE8, 0xED, 0xEA, 0xEB, 0xEC, /* 0x00C0 */
3876       0, 0x84, 0xF1, 0xEE, 0xEF, 0xCD, 0x85,    0, /* 0x00D0 */
3877    0xAF, 0xF4, 0xF2, 0xF3, 0x86,    0,    0, 0xA7, /* 0x00D0 */
3878    0x88, 0x87, 0x89, 0x8B, 0x8A, 0x8C, 0xBE, 0x8D, /* 0x00E0 */
3879    0x8F, 0x8E, 0x90, 0x91, 0x93, 0x92, 0x94, 0x95, /* 0x00E0 */
3880       0, 0x96, 0x98, 0x97, 0x99, 0x9B, 0x9A, 0xD6, /* 0x00F0 */
3881    0xBF, 0x9D, 0x9C, 0x9E, 0x9F,    0,    0, 0xD8  /* 0x00F0 */
3882};
3883
3884/* ----------------------------------------------------------------------- */
3885
3886#define APPLETURKISHTOCHARTABEX_COUNT   48
3887static ImplUniCharTabData const aImplAPPLETURKISHToCharTabEx[APPLETURKISHTOCHARTABEX_COUNT] =
3888{
3889  { 0x011E, 0xDA, 0 },
3890  { 0x011F, 0xDB, 0 },
3891  { 0x0130, 0xDC, 0 },
3892  { 0x0131, 0xDD, 0 },
3893  { 0x0152, 0xCE, 0 },
3894  { 0x0153, 0xCF, 0 },
3895  { 0x015E, 0xDE, 0 },
3896  { 0x015F, 0xDF, 0 },
3897  { 0x0178, 0xD9, 0 },
3898  { 0x0192, 0xC4, 0 },
3899  { 0x02C6, 0xF6, 0 },
3900  { 0x02C7, 0xFF, 0 },
3901  { 0x02D8, 0xF9, 0 },
3902  { 0x02D9, 0xFA, 0 },
3903  { 0x02DA, 0xFB, 0 },
3904  { 0x02DB, 0xFE, 0 },
3905  { 0x02DC, 0xF7, 0 },
3906  { 0x02DD, 0xFD, 0 },
3907  { 0x03A9, 0xBD, 0 },
3908  { 0x03C0, 0xB9, 0 },
3909  { 0x2013, 0xD0, 0 },
3910  { 0x2014, 0xD1, 0 },
3911  { 0x2018, 0xD4, 0 },
3912  { 0x2019, 0xD5, 0 },
3913  { 0x201A, 0xE2, 0 },
3914  { 0x201C, 0xD2, 0 },
3915  { 0x201D, 0xD3, 0 },
3916  { 0x201E, 0xE3, 0 },
3917  { 0x2020, 0xA0, 0 },
3918  { 0x2021, 0xE0, 0 },
3919  { 0x2022, 0xA5, 0 },
3920  { 0x2026, 0xC9, 0 },
3921  { 0x2030, 0xE4, 0 },
3922  { 0x2122, 0xAA, 0 },
3923  { 0x2202, 0xB6, 0 },
3924  { 0x2206, 0xC6, 0 },
3925  { 0x220F, 0xB8, 0 },
3926  { 0x2211, 0xB7, 0 },
3927  { 0x221A, 0xC3, 0 },
3928  { 0x221E, 0xB0, 0 },
3929  { 0x222B, 0xBA, 0 },
3930  { 0x2248, 0xC5, 0 },
3931  { 0x2260, 0xAD, 0 },
3932  { 0x2264, 0xB2, 0 },
3933  { 0x2265, 0xB3, 0 },
3934  { 0x25CA, 0xD7, 0 },
3935  { 0xF8A0, 0xF5, 0 },
3936  { 0xF8FF, 0xF0, 0 }
3937};
3938
3939/* ----------------------------------------------------------------------- */
3940
3941static ImplByteConvertData const aImplAPPLETURKISHByteCvtData =
3942{
3943    aImplAPPLETURKISHToUniTab,
3944    NULL,
3945    APPLETURKISHUNI_START, APPLETURKISHUNI_END,
3946    NOTABUNI_START, NOTABUNI_END,
3947    aImplAPPLETURKISHToCharTab,
3948    NULL,
3949    aImplAPPLETURKISHToCharTabEx,
3950    APPLETURKISHCHAR_START, APPLETURKISHCHAR_END,
3951    NOTABCHAR_START, NOTABCHAR_END,
3952    APPLETURKISHTOCHARTABEX_COUNT
3953};
3954
3955/* ----------------------------------------------------------------------- */
3956
3957static ImplTextEncodingData const aImplAPPLETURKISHTextEncodingData
3958    = { { &aImplAPPLETURKISHByteCvtData,
3959          ImplCharToUnicode,
3960          ImplUnicodeToChar,
3961          NULL,
3962          NULL,
3963          NULL,
3964          NULL,
3965          NULL,
3966          NULL },
3967        1,
3968        1,
3969        1,
3970        162,
3971        "iso8859-9",
3972        "iso-8859-9",
3973        RTL_TEXTENCODING_INFO_ASCII };
3974    /* MAC, SCRIPT_TURKISH, pc code page 857, mac encoding 35 */
3975
3976/* ======================================================================= */
3977
3978/* APPLE-Ukrainian */
3979/* Apple CharSet for Ukrainian */
3980/* 1-Byte, 0x00-0x7F ASCII, jedoch eigentich Sonderzeichen zwischen 0x00-0x1F */
3981/* die wir aber nicht beruecksichtigen */
3982/* Convert-Tables: mappings/vendors/apple/ukraine.txt from 02/05/98 */
3983/* Last-Changes from us: */
3984
3985#define APPLEUKRAINIANUNI_START         0x80
3986#define APPLEUKRAINIANUNI_END           0xFF
3987static sal_uInt16 const aImplAPPLEUKRAINIANToUniTab[APPLEUKRAINIANUNI_END - APPLEUKRAINIANUNI_START + 1] =
3988{
3989/*       0       1       2       3       4       5       6       7 */
3990/*       8       9       A       B       C       D       E       F */
3991    0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, /* 0x80 */
3992    0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, /* 0x80 */
3993    0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, /* 0x90 */
3994    0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, /* 0x90 */
3995    0x2020, 0x00B0, 0x0490, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x0406, /* 0xA0 */
3996    0x00AE, 0x00A9, 0x2122, 0x0402, 0x0452, 0x2260, 0x0403, 0x0453, /* 0xA0 */
3997    0x221E, 0x00B1, 0x2264, 0x2265, 0x0456, 0x00B5, 0x0491, 0x0408, /* 0xB0 */
3998    0x0404, 0x0454, 0x0407, 0x0457, 0x0409, 0x0459, 0x040A, 0x045A, /* 0xB0 */
3999    0x0458, 0x0405, 0x00AC, 0x221A, 0x0192, 0x2248, 0x2206, 0x00AB, /* 0xC0 */
4000    0x00BB, 0x2026, 0x00A0, 0x040B, 0x045B, 0x040C, 0x045C, 0x0455, /* 0xC0 */
4001    0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x201E, /* 0xD0 */
4002    0x040E, 0x045E, 0x040F, 0x045F, 0x2116, 0x0401, 0x0451, 0x044F, /* 0xD0 */
4003    0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, /* 0xE0 */
4004    0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, /* 0xE0 */
4005    0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, /* 0xF0 */
4006    0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x00A4  /* 0xF0 */
4007};
4008
4009/* ----------------------------------------------------------------------- */
4010
4011#define APPLEUKRAINIANCHAR_START        0x0401
4012#define APPLEUKRAINIANCHAR_END          0x045F
4013static sal_uChar const aImplAPPLEUKRAINIANToCharTab[APPLEUKRAINIANCHAR_END - APPLEUKRAINIANCHAR_START + 1] =
4014{
4015/*     0     1     2     3     4     5     6     7 */
4016/*     8     9     A     B     C     D     E     F */
4017          0xDD, 0xAB, 0xAE, 0xB8, 0xC1, 0xA7, 0xBA, /* 0x0400 */
4018    0xB7, 0xBC, 0xBE, 0xCB, 0xCD,    0, 0xD8, 0xDA, /* 0x0400 */
4019    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x0410 */
4020    0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, /* 0x0410 */
4021    0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, /* 0x0420 */
4022    0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F, /* 0x0420 */
4023    0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, /* 0x0430 */
4024    0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, /* 0x0430 */
4025    0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, /* 0x0440 */
4026    0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xDF, /* 0x0440 */
4027       0, 0xDE, 0xAC, 0xAF, 0xB9, 0xCF, 0xB4, 0xBB, /* 0x0450 */
4028    0xC0, 0xBD, 0xBF, 0xCC, 0xCE,    0, 0xD9, 0xDB, /* 0x0450 */
4029};
4030
4031/* ----------------------------------------------------------------------- */
4032
4033#define APPLEUKRAINIANTOCHARTABEX_COUNT 36
4034static ImplUniCharTabData const aImplAPPLEUKRAINIANToCharTabEx[APPLEUKRAINIANTOCHARTABEX_COUNT] =
4035{
4036  { 0x00A0, 0xCA, 0 },
4037  { 0x00A3, 0xA3, 0 },
4038  { 0x00A4, 0xFF, 0 },
4039  { 0x00A7, 0xA4, 0 },
4040  { 0x00A9, 0xA9, 0 },
4041  { 0x00AB, 0xC7, 0 },
4042  { 0x00AC, 0xC2, 0 },
4043  { 0x00AE, 0xA8, 0 },
4044  { 0x00B0, 0xA1, 0 },
4045  { 0x00B1, 0xB1, 0 },
4046  { 0x00B5, 0xB5, 0 },
4047  { 0x00B6, 0xA6, 0 },
4048  { 0x00BB, 0xC8, 0 },
4049  { 0x00F7, 0xD6, 0 },
4050  { 0x0192, 0xC4, 0 },
4051  { 0x0490, 0xA2, 0 },
4052  { 0x0491, 0xB6, 0 },
4053  { 0x2013, 0xD0, 0 },
4054  { 0x2014, 0xD1, 0 },
4055  { 0x2018, 0xD4, 0 },
4056  { 0x2019, 0xD5, 0 },
4057  { 0x201C, 0xD2, 0 },
4058  { 0x201D, 0xD3, 0 },
4059  { 0x201E, 0xD7, 0 },
4060  { 0x2020, 0xA0, 0 },
4061  { 0x2022, 0xA5, 0 },
4062  { 0x2026, 0xC9, 0 },
4063  { 0x2116, 0xDC, 0 },
4064  { 0x2122, 0xAA, 0 },
4065  { 0x2206, 0xC6, 0 },
4066  { 0x221A, 0xC3, 0 },
4067  { 0x221E, 0xB0, 0 },
4068  { 0x2248, 0xC5, 0 },
4069  { 0x2260, 0xAD, 0 },
4070  { 0x2264, 0xB2, 0 },
4071  { 0x2265, 0xB3, 0 }
4072};
4073
4074/* ----------------------------------------------------------------------- */
4075
4076static ImplByteConvertData const aImplAPPLEUKRAINIANByteCvtData =
4077{
4078    aImplAPPLEUKRAINIANToUniTab,
4079    NULL,
4080    APPLEUKRAINIANUNI_START, APPLEUKRAINIANUNI_END,
4081    NOTABUNI_START, NOTABUNI_END,
4082    aImplAPPLEUKRAINIANToCharTab,
4083    NULL,
4084    aImplAPPLEUKRAINIANToCharTabEx,
4085    APPLEUKRAINIANCHAR_START, APPLEUKRAINIANCHAR_END,
4086    NOTABCHAR_START, NOTABCHAR_END,
4087    APPLEUKRAINIANTOCHARTABEX_COUNT
4088};
4089
4090/* ----------------------------------------------------------------------- */
4091
4092static ImplTextEncodingData const aImplAPPLEUKRAINIANTextEncodingData
4093    = { { &aImplAPPLEUKRAINIANByteCvtData,
4094          ImplCharToUnicode,
4095          ImplUnicodeToChar,
4096          NULL,
4097          NULL,
4098          NULL,
4099          NULL,
4100          NULL,
4101          NULL },
4102        1,
4103        1,
4104        1,
4105        204,
4106        "iso8859-5",
4107        "iso-8859-5",
4108        RTL_TEXTENCODING_INFO_ASCII };
4109    /* MAC, SCRIPT_CYRILLIC, pc code page 866 (855?), mac encoding 0x98
4110       (MAC 8.5 and above) */
4111
4112/* ======================================================================= */
4113
4114/* KOI8_R */
4115/* Standard Charset for Cyrillic */
4116/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
4117/* Convert-Tables: typed per hand */
4118/* Last-Changes from us: */
4119
4120#define KOI8RUNI_START                  0x80
4121#define KOI8RUNI_END                    0xFF
4122static sal_uInt16 const aImplKOI8RToUniTab[KOI8RUNI_END - KOI8RUNI_START + 1] =
4123{
4124/*       0       1       2       3       4       5       6       7 */
4125/*       8       9       A       B       C       D       E       F */
4126    0x2500, 0x2502, 0x250C, 0x2510, 0x2514, 0x2518, 0x251C, 0x2524, /* 0x80 */
4127    0x252C, 0x2534, 0x253C, 0x2580, 0x2584, 0x2588, 0x258C, 0x2590, /* 0x80 */
4128    0x2591, 0x2592, 0x2593, 0x2320, 0x25A0, 0x2219, 0x221A, 0x2248, /* 0x90 */
4129    0x2264, 0x2265, 0x00A0, 0x2321, 0x00B0, 0x00B2, 0x00B7, 0x00F7, /* 0x90 */
4130    0x2550, 0x2551, 0x2552, 0x0451, 0x2553, 0x2554, 0x2555, 0x2556, /* 0xA0 */
4131    0x2557, 0x2558, 0x2559, 0x255A, 0x255B, 0x255C, 0x255D, 0x255E, /* 0xA0 */
4132    0x255F, 0x2560, 0x2561, 0x0401, 0x2562, 0x2563, 0x2564, 0x2565, /* 0xB0 */
4133    0x2566, 0x2567, 0x2568, 0x2569, 0x256A, 0x256B, 0x256C, 0x00A9, /* 0xB0 */
4134    0x044E, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, /* 0xC0 */
4135    0x0445, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, /* 0xC0 */
4136    0x043F, 0x044F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, /* 0xD0 */
4137    0x044C, 0x044B, 0x0437, 0x0448, 0x044D, 0x0449, 0x0447, 0x044A, /* 0xD0 */
4138    0x042E, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, /* 0xE0 */
4139    0x0425, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, /* 0xE0 */
4140    0x041F, 0x042F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, /* 0xF0 */
4141    0x042C, 0x042B, 0x0417, 0x0428, 0x042D, 0x0429, 0x0427, 0x042A  /* 0xF0 */
4142};
4143
4144/* ----------------------------------------------------------------------- */
4145
4146#define KOI8RCHAR_START                 0x0410
4147#define KOI8RCHAR_END                   0x044F
4148static sal_uChar const aImplKOI8RToCharTab[KOI8RCHAR_END - KOI8RCHAR_START + 1] =
4149{
4150/*     0     1     2     3     4     5     6     7 */
4151/*     8     9     A     B     C     D     E     F */
4152    0xE1, 0xE2, 0xF7, 0xE7, 0xE4, 0xE5, 0xF6, 0xFA, /* 0x0410 */
4153    0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, /* 0x0410 */
4154    0xF2, 0xF3, 0xF4, 0xF5, 0xE6, 0xE8, 0xE3, 0xFE, /* 0x0420 */
4155    0xFB, 0xFD, 0xFF, 0xF9, 0xF8, 0xFC, 0xE0, 0xF1, /* 0x0420 */
4156    0xC1, 0xC2, 0xD7, 0xC7, 0xC4, 0xC5, 0xD6, 0xDA, /* 0x0430 */
4157    0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, /* 0x0430 */
4158    0xD2, 0xD3, 0xD4, 0xD5, 0xC6, 0xC8, 0xC3, 0xDE, /* 0x0440 */
4159    0xDB, 0xDD, 0xDF, 0xD9, 0xD8, 0xDC, 0xC0, 0xD1  /* 0x0440 */
4160};
4161
4162/* ----------------------------------------------------------------------- */
4163
4164#define KOI8RTOCHARTABEX_COUNT          64
4165static ImplUniCharTabData const aImplKOI8RToCharTabEx[KOI8RTOCHARTABEX_COUNT] =
4166{
4167  { 0x00A0, 0x9A, 0 },
4168  { 0x00A9, 0xBF, 0 },
4169  { 0x00B0, 0x9C, 0 },
4170  { 0x00B2, 0x9D, 0 },
4171  { 0x00B7, 0x9E, 0 },
4172  { 0x00F7, 0x9F, 0 },
4173  { 0x0401, 0xB3, 0 },
4174  { 0x0451, 0xA3, 0 },
4175  { 0x2219, 0x95, 0 },
4176  { 0x221A, 0x96, 0 },
4177  { 0x2248, 0x97, 0 },
4178  { 0x2264, 0x98, 0 },
4179  { 0x2265, 0x99, 0 },
4180  { 0x2320, 0x93, 0 },
4181  { 0x2321, 0x9B, 0 },
4182  { 0x2500, 0x80, 0 },
4183  { 0x2502, 0x81, 0 },
4184  { 0x250C, 0x82, 0 },
4185  { 0x2510, 0x83, 0 },
4186  { 0x2514, 0x84, 0 },
4187  { 0x2518, 0x85, 0 },
4188  { 0x251C, 0x86, 0 },
4189  { 0x2524, 0x87, 0 },
4190  { 0x252C, 0x88, 0 },
4191  { 0x2534, 0x89, 0 },
4192  { 0x253C, 0x8A, 0 },
4193  { 0x2550, 0xA0, 0 },
4194  { 0x2551, 0xA1, 0 },
4195  { 0x2552, 0xA2, 0 },
4196  { 0x2553, 0xA4, 0 },
4197  { 0x2554, 0xA5, 0 },
4198  { 0x2555, 0xA6, 0 },
4199  { 0x2556, 0xA7, 0 },
4200  { 0x2557, 0xA8, 0 },
4201  { 0x2558, 0xA9, 0 },
4202  { 0x2559, 0xAA, 0 },
4203  { 0x255A, 0xAB, 0 },
4204  { 0x255B, 0xAC, 0 },
4205  { 0x255C, 0xAD, 0 },
4206  { 0x255D, 0xAE, 0 },
4207  { 0x255E, 0xAF, 0 },
4208  { 0x255F, 0xB0, 0 },
4209  { 0x2560, 0xB1, 0 },
4210  { 0x2561, 0xB2, 0 },
4211  { 0x2562, 0xB4, 0 },
4212  { 0x2563, 0xB5, 0 },
4213  { 0x2564, 0xB6, 0 },
4214  { 0x2565, 0xB7, 0 },
4215  { 0x2566, 0xB8, 0 },
4216  { 0x2567, 0xB9, 0 },
4217  { 0x2568, 0xBA, 0 },
4218  { 0x2569, 0xBB, 0 },
4219  { 0x256A, 0xBC, 0 },
4220  { 0x256B, 0xBD, 0 },
4221  { 0x256C, 0xBE, 0 },
4222  { 0x2580, 0x8B, 0 },
4223  { 0x2584, 0x8C, 0 },
4224  { 0x2588, 0x8D, 0 },
4225  { 0x258C, 0x8E, 0 },
4226  { 0x2590, 0x8F, 0 },
4227  { 0x2591, 0x90, 0 },
4228  { 0x2592, 0x91, 0 },
4229  { 0x2593, 0x92, 0 },
4230  { 0x25A0, 0x94, 0 }
4231};
4232
4233/* ----------------------------------------------------------------------- */
4234
4235static ImplByteConvertData const aImplKOI8RByteCvtData =
4236{
4237    aImplKOI8RToUniTab,
4238    NULL,
4239    KOI8RUNI_START, KOI8RUNI_END,
4240    NOTABUNI_START, NOTABUNI_END,
4241    aImplKOI8RToCharTab,
4242    NULL,
4243    aImplKOI8RToCharTabEx,
4244    KOI8RCHAR_START, KOI8RCHAR_END,
4245    NOTABCHAR_START, NOTABCHAR_END,
4246    KOI8RTOCHARTABEX_COUNT
4247};
4248
4249/* ----------------------------------------------------------------------- */
4250
4251static ImplTextEncodingData const aImplKOI8RTextEncodingData
4252    = { { &aImplKOI8RByteCvtData,
4253          ImplCharToUnicode,
4254          ImplUnicodeToChar,
4255          NULL,
4256          NULL,
4257          NULL,
4258          NULL,
4259          NULL,
4260          NULL },
4261        1,
4262        1,
4263        1,
4264        204,
4265        "koi8-r",
4266        "koi8-r",
4267        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
4268    /* SCRIPT_CYRILLIC, pc code page 866 (855?), mac encoding 7 */
4269
4270/* ======================================================================= */
4271
4272/* KOI8_U */
4273/* Standard Charset for Ukrainian Cyrillic */
4274/* Single Byte, 0x00-0x7F equals ASCII */
4275/* Conversion Tables: hand made */
4276
4277#define KOI8UUNI_START 0x80
4278#define KOI8UUNI_END 0xFF
4279static sal_uInt16 const aImplKOI8UToUniTab[KOI8UUNI_END - KOI8UUNI_START + 1] =
4280{
4281/*       0       1       2       3       4       5       6       7 */
4282/*       8       9       A       B       C       D       E       F */
4283    0x2500, 0x2502, 0x250C, 0x2510, 0x2514, 0x2518, 0x251C, 0x2524, /* 0x80 */
4284    0x252C, 0x2534, 0x253C, 0x2580, 0x2584, 0x2588, 0x258C, 0x2590, /* 0x80 */
4285    0x2591, 0x2592, 0x2593, 0x2320, 0x25A0, 0x2219, 0x221A, 0x2248, /* 0x90 */
4286    0x2264, 0x2265, 0x00A0, 0x2321, 0x00B0, 0x00B2, 0x00B7, 0x00F7, /* 0x90 */
4287    0x2550, 0x2551, 0x2552, 0x0451, 0x0454, 0x2554, 0x0456, 0x0457, /* 0xA0 */
4288    0x2557, 0x2558, 0x2559, 0x255A, 0x255B, 0x0491, 0x255D, 0x255E, /* 0xA0 */
4289    0x255F, 0x2560, 0x2561, 0x0401, 0x0404, 0x2563, 0x0406, 0x0407, /* 0xB0 */
4290    0x2566, 0x2567, 0x2568, 0x2569, 0x256A, 0x0490, 0x256C, 0x00A9, /* 0xB0 */
4291    0x044E, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, /* 0xC0 */
4292    0x0445, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, /* 0xC0 */
4293    0x043F, 0x044F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, /* 0xD0 */
4294    0x044C, 0x044B, 0x0437, 0x0448, 0x044D, 0x0449, 0x0447, 0x044A, /* 0xD0 */
4295    0x042E, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, /* 0xE0 */
4296    0x0425, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, /* 0xE0 */
4297    0x041F, 0x042F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, /* 0xF0 */
4298    0x042C, 0x042B, 0x0417, 0x0428, 0x042D, 0x0429, 0x0427, 0x042A  /* 0xF0 */
4299};
4300
4301#define KOI8UCHAR_START 0x0410
4302#define KOI8UCHAR_END 0x044F
4303static sal_uChar const
4304aImplKOI8UToCharTab[KOI8UCHAR_END - KOI8UCHAR_START + 1] =
4305{
4306/*     0     1     2     3     4     5     6     7 */
4307/*     8     9     A     B     C     D     E     F */
4308    0xE1, 0xE2, 0xF7, 0xE7, 0xE4, 0xE5, 0xF6, 0xFA, /* 0x0410 */
4309    0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, /* 0x0410 */
4310    0xF2, 0xF3, 0xF4, 0xF5, 0xE6, 0xE8, 0xE3, 0xFE, /* 0x0420 */
4311    0xFB, 0xFD, 0xFF, 0xF9, 0xF8, 0xFC, 0xE0, 0xF1, /* 0x0420 */
4312    0xC1, 0xC2, 0xD7, 0xC7, 0xC4, 0xC5, 0xD6, 0xDA, /* 0x0430 */
4313    0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, /* 0x0430 */
4314    0xD2, 0xD3, 0xD4, 0xD5, 0xC6, 0xC8, 0xC3, 0xDE, /* 0x0440 */
4315    0xDB, 0xDD, 0xDF, 0xD9, 0xD8, 0xDC, 0xC0, 0xD1  /* 0x0440 */
4316};
4317
4318#define KOI8UTOCHARTABEX_COUNT 72
4319static ImplUniCharTabData const aImplKOI8UToCharTabEx[KOI8UTOCHARTABEX_COUNT] =
4320{
4321  { 0x00A0, 0x9A, 0 },
4322  { 0x00A9, 0xBF, 0 },
4323  { 0x00B0, 0x9C, 0 },
4324  { 0x00B2, 0x9D, 0 },
4325  { 0x00B7, 0x9E, 0 },
4326  { 0x00F7, 0x9F, 0 },
4327  { 0x0401, 0xB3, 0 },
4328  { 0x0404, 0xB4, 0 },
4329  { 0x0406, 0xB6, 0 },
4330  { 0x0407, 0xB7, 0 },
4331  { 0x0451, 0xA3, 0 },
4332  { 0x0454, 0xA4, 0 },
4333  { 0x0456, 0xA6, 0 },
4334  { 0x0457, 0xA7, 0 },
4335  { 0x0490, 0xBD, 0 },
4336  { 0x0491, 0xAD, 0 },
4337  { 0x2219, 0x95, 0 },
4338  { 0x221A, 0x96, 0 },
4339  { 0x2248, 0x97, 0 },
4340  { 0x2264, 0x98, 0 },
4341  { 0x2265, 0x99, 0 },
4342  { 0x2320, 0x93, 0 },
4343  { 0x2321, 0x9B, 0 },
4344  { 0x2500, 0x80, 0 },
4345  { 0x2502, 0x81, 0 },
4346  { 0x250C, 0x82, 0 },
4347  { 0x2510, 0x83, 0 },
4348  { 0x2514, 0x84, 0 },
4349  { 0x2518, 0x85, 0 },
4350  { 0x251C, 0x86, 0 },
4351  { 0x2524, 0x87, 0 },
4352  { 0x252C, 0x88, 0 },
4353  { 0x2534, 0x89, 0 },
4354  { 0x253C, 0x8A, 0 },
4355  { 0x2550, 0xA0, 0 },
4356  { 0x2551, 0xA1, 0 },
4357  { 0x2552, 0xA2, 0 },
4358  { 0x2553, 0xA4, 0 },
4359  { 0x2554, 0xA5, 0 },
4360  { 0x2555, 0xA6, 0 },
4361  { 0x2556, 0xA7, 0 },
4362  { 0x2557, 0xA8, 0 },
4363  { 0x2558, 0xA9, 0 },
4364  { 0x2559, 0xAA, 0 },
4365  { 0x255A, 0xAB, 0 },
4366  { 0x255B, 0xAC, 0 },
4367  { 0x255C, 0xAD, 0 },
4368  { 0x255D, 0xAE, 0 },
4369  { 0x255E, 0xAF, 0 },
4370  { 0x255F, 0xB0, 0 },
4371  { 0x2560, 0xB1, 0 },
4372  { 0x2561, 0xB2, 0 },
4373  { 0x2562, 0xB4, 0 },
4374  { 0x2563, 0xB5, 0 },
4375  { 0x2564, 0xB6, 0 },
4376  { 0x2565, 0xB7, 0 },
4377  { 0x2566, 0xB8, 0 },
4378  { 0x2567, 0xB9, 0 },
4379  { 0x2568, 0xBA, 0 },
4380  { 0x2569, 0xBB, 0 },
4381  { 0x256A, 0xBC, 0 },
4382  { 0x256B, 0xBD, 0 },
4383  { 0x256C, 0xBE, 0 },
4384  { 0x2580, 0x8B, 0 },
4385  { 0x2584, 0x8C, 0 },
4386  { 0x2588, 0x8D, 0 },
4387  { 0x258C, 0x8E, 0 },
4388  { 0x2590, 0x8F, 0 },
4389  { 0x2591, 0x90, 0 },
4390  { 0x2592, 0x91, 0 },
4391  { 0x2593, 0x92, 0 },
4392  { 0x25A0, 0x94, 0 }
4393};
4394
4395static ImplByteConvertData const aImplKOI8UByteCvtData =
4396{
4397    aImplKOI8UToUniTab,
4398    NULL,
4399    KOI8UUNI_START, KOI8UUNI_END,
4400    NOTABUNI_START, NOTABUNI_END,
4401    aImplKOI8UToCharTab,
4402    NULL,
4403    aImplKOI8UToCharTabEx,
4404    KOI8UCHAR_START, KOI8UCHAR_END,
4405    NOTABCHAR_START, NOTABCHAR_END,
4406    KOI8UTOCHARTABEX_COUNT
4407};
4408
4409static ImplTextEncodingData const aImplKoi8UTextEncodingData
4410    = { { &aImplKOI8UByteCvtData,
4411          ImplCharToUnicode,
4412          ImplUnicodeToChar,
4413          NULL,
4414          NULL,
4415          NULL,
4416          NULL,
4417          NULL,
4418          NULL },
4419        1,
4420        1,
4421        1,
4422        204,
4423        "koi8-u",
4424        "KOI8-U",
4425        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
4426    /* SCRIPT_CYRILLIC */
4427
4428/* ======================================================================= */
4429
4430/* PT154 */
4431/* Asian Cyrillic */
4432/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
4433/* Convert-Tables: typed per hand */
4434/* Last-Changes from us: */
4435
4436#define PT154UNI_START                  0x80
4437#define PT154UNI_END                    0xFF
4438static sal_uInt16 const aImplPT154ToUniTab[PT154UNI_END - PT154UNI_START + 1] =
4439{
4440/*       0       1       2       3       4       5       6       7 */
4441/*       8       9       A       B       C       D       E       F */
4442    0x0496, 0x0492, 0x04EE, 0x0493, 0x201E, 0x2026, 0x04B6, 0x04AE, /* 0x80 */
4443    0x04B2, 0x04AF, 0x04A0, 0x04E2, 0x04A2, 0x049A, 0x04BA, 0x04B8, /* 0x80 */
4444    0x0497, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, /* 0x90 */
4445    0x04B3, 0x04B7, 0x04A1, 0x04E3, 0x04A3, 0x049B, 0x04BB, 0x04B9, /* 0x90 */
4446    0x00A0, 0x040E, 0x045E, 0x0408, 0x04E8, 0x0498, 0x04B0, 0x00A7, /* 0xA0 */
4447    0x0401, 0x00A9, 0x04D8, 0x00AB, 0x00AC, 0x04EF, 0x00AE, 0x049C, /* 0xA0 */
4448    0x00B0, 0x04B1, 0x0406, 0x0456, 0x0499, 0x04E9, 0x00B6, 0x00B7, /* 0xB0 */
4449    0x0451, 0x2116, 0x04D9, 0x00BB, 0x0458, 0x04AA, 0x04AB, 0x049D, /* 0xB0 */
4450    0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, /* 0xC0 */
4451    0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, /* 0xC0 */
4452    0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, /* 0xD0 */
4453    0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, /* 0xD0 */
4454    0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, /* 0xE0 */
4455    0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, /* 0xE0 */
4456    0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, /* 0xF0 */
4457    0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F  /* 0xF0 */
4458};
4459
4460/* ----------------------------------------------------------------------- */
4461
4462#define PT154CHAR_START                 0x0410
4463#define PT154CHAR_END                   0x044F
4464static sal_uChar const aImplPT154ToCharTab[PT154CHAR_END - PT154CHAR_START + 1] =
4465{
4466/*     0     1     2     3     4     5     6     7 */
4467/*     8     9     A     B     C     D     E     F */
4468    0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x0410 */
4469    0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x0410 */
4470    0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x0420 */
4471    0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0x0420 */
4472    0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x0430 */
4473    0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x0430 */
4474    0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x0440 */
4475    0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff  /* 0x0440 */
4476};
4477
4478/* ----------------------------------------------------------------------- */
4479
4480#define PT154TOCHARTABEX_COUNT          64
4481static ImplUniCharTabData const aImplPT154ToCharTabEx[PT154TOCHARTABEX_COUNT] =
4482{
4483  { 0x00A0, 0xa0, 0 },
4484  { 0x00A7, 0xa7, 0 },
4485  { 0x00A9, 0xa9, 0 },
4486  { 0x00AB, 0xab, 0 },
4487  { 0x00AC, 0xac, 0 },
4488  { 0x00AE, 0xae, 0 },
4489  { 0x00B0, 0xb0, 0 },
4490  { 0x00B6, 0xb6, 0 },
4491  { 0x00B7, 0xb7, 0 },
4492  { 0x00BB, 0xbb, 0 },
4493  { 0x0401, 0xa8, 0 },
4494  { 0x0406, 0xb2, 0 },
4495  { 0x0408, 0xa3, 0 },
4496  { 0x040E, 0xa1, 0 },
4497  { 0x0451, 0xb8, 0 },
4498  { 0x0456, 0xb3, 0 },
4499  { 0x0458, 0xbc, 0 },
4500  { 0x045E, 0xa2, 0 },
4501  { 0x0492, 0x81, 0 },
4502  { 0x0493, 0x83, 0 },
4503  { 0x0496, 0x80, 0 },
4504  { 0x0497, 0x90, 0 },
4505  { 0x0498, 0xa5, 0 },
4506  { 0x0499, 0xb4, 0 },
4507  { 0x049A, 0x8d, 0 },
4508  { 0x049B, 0x9d, 0 },
4509  { 0x049C, 0xaf, 0 },
4510  { 0x049D, 0xbf, 0 },
4511  { 0x04A0, 0x8a, 0 },
4512  { 0x04A1, 0x9a, 0 },
4513  { 0x04A2, 0x8c, 0 },
4514  { 0x04A3, 0x9c, 0 },
4515  { 0x04AA, 0xbd, 0 },
4516  { 0x04AB, 0xbe, 0 },
4517  { 0x04AE, 0x87, 0 },
4518  { 0x04AF, 0x89, 0 },
4519  { 0x04B0, 0xa6, 0 },
4520  { 0x04B1, 0xb1, 0 },
4521  { 0x04B2, 0x88, 0 },
4522  { 0x04B3, 0x98, 0 },
4523  { 0x04B6, 0x86, 0 },
4524  { 0x04B7, 0x99, 0 },
4525  { 0x04B8, 0x8f, 0 },
4526  { 0x04B9, 0x9f, 0 },
4527  { 0x04BA, 0x8e, 0 },
4528  { 0x04BB, 0x9e, 0 },
4529  { 0x04D8, 0xaa, 0 },
4530  { 0x04D9, 0xba, 0 },
4531  { 0x04E2, 0x8b, 0 },
4532  { 0x04E3, 0x9b, 0 },
4533  { 0x04E8, 0xa4, 0 },
4534  { 0x04E9, 0xb5, 0 },
4535  { 0x04EE, 0x82, 0 },
4536  { 0x04EF, 0xad, 0 },
4537  { 0x2013, 0x96, 0 },
4538  { 0x2014, 0x97, 0 },
4539  { 0x2018, 0x91, 0 },
4540  { 0x2019, 0x92, 0 },
4541  { 0x201C, 0x93, 0 },
4542  { 0x201D, 0x94, 0 },
4543  { 0x201E, 0x84, 0 },
4544  { 0x2022, 0x95, 0 },
4545  { 0x2026, 0x85, 0 },
4546  { 0x2116, 0xb9, 0 }
4547};
4548
4549/* ----------------------------------------------------------------------- */
4550
4551static ImplByteConvertData const aImplPT154ByteCvtData =
4552{
4553    aImplPT154ToUniTab,
4554    NULL,
4555    PT154UNI_START, PT154UNI_END,
4556    NOTABUNI_START, NOTABUNI_END,
4557    aImplPT154ToCharTab,
4558    NULL,
4559    aImplPT154ToCharTabEx,
4560    PT154CHAR_START, PT154CHAR_END,
4561    NOTABCHAR_START, NOTABCHAR_END,
4562    PT154TOCHARTABEX_COUNT
4563};
4564
4565/* ----------------------------------------------------------------------- */
4566
4567static ImplTextEncodingData const aImplPT154TextEncodingData
4568    = { { &aImplPT154ByteCvtData,
4569          ImplCharToUnicode,
4570          ImplUnicodeToChar,
4571          NULL,
4572          NULL,
4573          NULL,
4574          NULL,
4575          NULL,
4576          NULL },
4577        1,
4578        1,
4579        1,
4580        204,
4581        "iso8859-5",
4582        "PTCP154",
4583        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
4584    /* SCRIPT_CYRILLIC */
4585