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