xref: /aoo41x/main/sal/textenc/tcvtarb1.tab (revision cdf0e10c)
1/*************************************************************************
2 *
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * Copyright 2000, 2010 Oracle and/or its affiliates.
6 *
7 * OpenOffice.org - a multi-platform office productivity suite
8 *
9 * This file is part of OpenOffice.org.
10 *
11 * OpenOffice.org is free software: you can redistribute it and/or modify
12 * it under the terms of the GNU Lesser General Public License version 3
13 * only, as published by the Free Software Foundation.
14 *
15 * OpenOffice.org is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18 * GNU Lesser General Public License version 3 for more details
19 * (a copy is included in the LICENSE file that accompanied this code).
20 *
21 * You should have received a copy of the GNU Lesser General Public License
22 * version 3 along with OpenOffice.org.  If not, see
23 * <http://www.openoffice.org/license.html>
24 * for a copy of the LGPLv3 License.
25 *
26 ************************************************************************/
27
28/* ======================================================================= */
29
30/* This file contain the tables for all 1 byte charsets, for the */
31/* following scripts: arabic, hebrew and other scripts in the arabic region */
32
33/* ======================================================================= */
34
35/* IBM-862 */
36/* Dos Standard CharSet for Hebrew */
37/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
38/* Convert-Tables: mappings/vendors/micsft/pc/cp862.txt from 04/24/96 Version 2.00 */
39/* Last-Changes from us: */
40
41/* ----------------------------------------------------------------------- */
42
43#define IBM862UNI_START                 0x80
44#define IBM862UNI_END                   0xFF
45static sal_uInt16 const aImplIBM862ToUniTab[IBM862UNI_END - IBM862UNI_START + 1] =
46{
47/*       0       1       2       3       4       5       6       7 */
48/*       8       9       A       B       C       D       E       F */
49    0x05D0, 0x05D1, 0x05D2, 0x05D3, 0x05D4, 0x05D5, 0x05D6, 0x05D7, /* 0x80 */
50    0x05D8, 0x05D9, 0x05DA, 0x05DB, 0x05DC, 0x05DD, 0x05DE, 0x05DF, /* 0x80 */
51    0x05E0, 0x05E1, 0x05E2, 0x05E3, 0x05E4, 0x05E5, 0x05E6, 0x05E7, /* 0x90 */
52    0x05E8, 0x05E9, 0x05EA, 0x00A2, 0x00A3, 0x00A5, 0x20A7, 0x0192, /* 0x90 */
53    0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA, /* 0xA0 */
54    0x00BF, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, /* 0xA0 */
55    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, /* 0xB0 */
56    0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, /* 0xB0 */
57    0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, /* 0xC0 */
58    0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, /* 0xC0 */
59    0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, /* 0xD0 */
60    0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, /* 0xD0 */
61    0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, /* 0xE0 */
62    0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, /* 0xE0 */
63    0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, /* 0xF0 */
64    0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0  /* 0xF0 */
65};
66
67/* ----------------------------------------------------------------------- */
68
69#define IBM862CHAR_START                0x05D0
70#define IBM862CHAR_END                  0x05EA
71static sal_uChar const aImplIBM862ToCharTab[IBM862CHAR_END - IBM862CHAR_START + 1] =
72{
73/*     0     1     2     3     4     5     6     7 */
74/*     8     9     A     B     C     D     E     F */
75    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x05D0 */
76    0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, /* 0x05D0 */
77    0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, /* 0x05E0 */
78    0x98, 0x99, 0x9A                                /* 0x05E0 */
79};
80
81/* ----------------------------------------------------------------------- */
82
83#define IBM862TOCHARTABEX_COUNT         101
84static ImplUniCharTabData const aImplIBM862ToCharTabEx[IBM862TOCHARTABEX_COUNT] =
85{
86  { 0x00A0, 0xFF, 0 },
87  { 0x00A1, 0xAD, 0 },
88  { 0x00A2, 0x9B, 0 },
89  { 0x00A3, 0x9C, 0 },
90  { 0x00A5, 0x9D, 0 },
91  { 0x00AA, 0xA6, 0 },
92  { 0x00AB, 0xAE, 0 },
93  { 0x00AC, 0xAA, 0 },
94  { 0x00B0, 0xF8, 0 },
95  { 0x00B1, 0xF1, 0 },
96  { 0x00B2, 0xFD, 0 },
97  { 0x00B5, 0xE6, 0 },
98  { 0x00B7, 0xFA, 0 },
99  { 0x00BA, 0xA7, 0 },
100  { 0x00BB, 0xAF, 0 },
101  { 0x00BC, 0xAC, 0 },
102  { 0x00BD, 0xAB, 0 },
103  { 0x00BF, 0xA8, 0 },
104  { 0x00D1, 0xA5, 0 },
105  { 0x00DF, 0xE1, 0 },
106  { 0x00E1, 0xA0, 0 },
107  { 0x00ED, 0xA1, 0 },
108  { 0x00F1, 0xA4, 0 },
109  { 0x00F3, 0xA2, 0 },
110  { 0x00F7, 0xF6, 0 },
111  { 0x00FA, 0xA3, 0 },
112  { 0x0192, 0x9F, 0 },
113  { 0x0393, 0xE2, 0 },
114  { 0x0398, 0xE9, 0 },
115  { 0x03A3, 0xE4, 0 },
116  { 0x03A6, 0xE8, 0 },
117  { 0x03A9, 0xEA, 0 },
118  { 0x03B1, 0xE0, 0 },
119  { 0x03B4, 0xEB, 0 },
120  { 0x03B5, 0xEE, 0 },
121  { 0x03C0, 0xE3, 0 },
122  { 0x03C3, 0xE5, 0 },
123  { 0x03C4, 0xE7, 0 },
124  { 0x03C6, 0xED, 0 },
125  { 0x207F, 0xFC, 0 },
126  { 0x20A7, 0x9E, 0 },
127  { 0x2219, 0xF9, 0 },
128  { 0x221A, 0xFB, 0 },
129  { 0x221E, 0xEC, 0 },
130  { 0x2229, 0xEF, 0 },
131  { 0x2248, 0xF7, 0 },
132  { 0x2261, 0xF0, 0 },
133  { 0x2264, 0xF3, 0 },
134  { 0x2265, 0xF2, 0 },
135  { 0x2310, 0xA9, 0 },
136  { 0x2320, 0xF4, 0 },
137  { 0x2321, 0xF5, 0 },
138  { 0x2500, 0xC4, 0 },
139  { 0x2502, 0xB3, 0 },
140  { 0x250C, 0xDA, 0 },
141  { 0x2510, 0xBF, 0 },
142  { 0x2514, 0xC0, 0 },
143  { 0x2518, 0xD9, 0 },
144  { 0x251C, 0xC3, 0 },
145  { 0x2524, 0xB4, 0 },
146  { 0x252C, 0xC2, 0 },
147  { 0x2534, 0xC1, 0 },
148  { 0x253C, 0xC5, 0 },
149  { 0x2550, 0xCD, 0 },
150  { 0x2551, 0xBA, 0 },
151  { 0x2552, 0xD5, 0 },
152  { 0x2553, 0xD6, 0 },
153  { 0x2554, 0xC9, 0 },
154  { 0x2555, 0xB8, 0 },
155  { 0x2556, 0xB7, 0 },
156  { 0x2557, 0xBB, 0 },
157  { 0x2558, 0xD4, 0 },
158  { 0x2559, 0xD3, 0 },
159  { 0x255A, 0xC8, 0 },
160  { 0x255B, 0xBE, 0 },
161  { 0x255C, 0xBD, 0 },
162  { 0x255D, 0xBC, 0 },
163  { 0x255E, 0xC6, 0 },
164  { 0x255F, 0xC7, 0 },
165  { 0x2560, 0xCC, 0 },
166  { 0x2561, 0xB5, 0 },
167  { 0x2562, 0xB6, 0 },
168  { 0x2563, 0xB9, 0 },
169  { 0x2564, 0xD1, 0 },
170  { 0x2565, 0xD2, 0 },
171  { 0x2566, 0xCB, 0 },
172  { 0x2567, 0xCF, 0 },
173  { 0x2568, 0xD0, 0 },
174  { 0x2569, 0xCA, 0 },
175  { 0x256A, 0xD8, 0 },
176  { 0x256B, 0xD7, 0 },
177  { 0x256C, 0xCE, 0 },
178  { 0x2580, 0xDF, 0 },
179  { 0x2584, 0xDC, 0 },
180  { 0x2588, 0xDB, 0 },
181  { 0x258C, 0xDD, 0 },
182  { 0x2590, 0xDE, 0 },
183  { 0x2591, 0xB0, 0 },
184  { 0x2592, 0xB1, 0 },
185  { 0x2593, 0xB2, 0 },
186  { 0x25A0, 0xFE, 0 }
187};
188
189/* ----------------------------------------------------------------------- */
190
191static ImplByteConvertData const aImplIBM862ByteCvtData =
192{
193    aImplIBM862ToUniTab,
194    NULL,
195    IBM862UNI_START, IBM862UNI_END,
196    NOTABUNI_START, NOTABUNI_END,
197    aImplIBM862ToCharTab,
198    NULL,
199    aImplIBM862ToCharTabEx,
200    IBM862CHAR_START, IBM862CHAR_END,
201    NOTABCHAR_START, NOTABCHAR_END,
202    IBM862TOCHARTABEX_COUNT
203};
204
205/* ----------------------------------------------------------------------- */
206
207static ImplTextEncodingData const aImplIBM862TextEncodingData
208    = { { &aImplIBM862ByteCvtData,
209          ImplCharToUnicode,
210          ImplUnicodeToChar,
211          NULL,
212          NULL,
213          NULL,
214          NULL,
215          NULL,
216          NULL },
217        1,
218        1,
219        1,
220        177,
221        "iso8859-8",
222        "IBM862",
223        RTL_TEXTENCODING_INFO_ASCII
224            | RTL_TEXTENCODING_INFO_MIME
225            | RTL_TEXTENCODING_INFO_R2L };
226    /* DOS/OS2, SCRIPT_HEBREW, pc code page 862, mac encoding 5 */
227
228/* ======================================================================= */
229
230/* IBM-864 */
231/* Dos Standard CharSet for Arabic */
232/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
233/* Convert-Tables: mappings/vendors/micsft/pc/cp864.txt from 04/24/96 Version 2.00 */
234/* Last-Changes from us: */
235
236/* ----------------------------------------------------------------------- */
237
238#define IBM864UNI_START                 0x80
239#define IBM864UNI_END                   0xFE
240static sal_uInt16 const aImplIBM864ToUniTab[IBM864UNI_END - IBM864UNI_START + 1] =
241{
242/*       0       1       2       3       4       5       6       7 */
243/*       8       9       A       B       C       D       E       F */
244    0x00B0, 0x00B7, 0x2219, 0x221A, 0x2592, 0x2500, 0x2502, 0x253C, /* 0x80 */
245    0x2524, 0x252C, 0x251C, 0x2534, 0x2510, 0x250C, 0x2514, 0x2518, /* 0x80 */
246    0x03B2, 0x221E, 0x03C6, 0x00B1, 0x00BD, 0x00BC, 0x2248, 0x00AB, /* 0x90 */
247    0x00BB, 0xFEF7, 0xFEF8,      0,      0, 0xFEFB, 0xFEFC,      0, /* 0x90 */
248    0x00A0, 0x00AD, 0xFE82, 0x00A3, 0x00A4, 0xFE84,      0,      0, /* 0xA0 */
249    0xFE8E, 0xFE8F, 0xFE95, 0xFE99, 0x060C, 0xFE9D, 0xFEA1, 0xFEA5, /* 0xA0 */
250    0x0660, 0x0661, 0x0662, 0x0663, 0x0664, 0x0665, 0x0666, 0x0667, /* 0xB0 */
251    0x0668, 0x0669, 0xFED1, 0x061B, 0xFEB1, 0xFEB5, 0xFEB9, 0x061F, /* 0xB0 */
252    0x00A2, 0xFE80, 0xFE81, 0xFE83, 0xFE85, 0xFECA, 0xFE8B, 0xFE8D, /* 0xC0 */
253    0xFE91, 0xFE93, 0xFE97, 0xFE9B, 0xFE9F, 0xFEA3, 0xFEA7, 0xFEA9, /* 0xC0 */
254    0xFEAB, 0xFEAD, 0xFEAF, 0xFEB3, 0xFEB7, 0xFEBB, 0xFEBF, 0xFEC1, /* 0xD0 */
255    0xFEC5, 0xFECB, 0xFECF, 0x00A6, 0x00AC, 0x00F7, 0x00D7, 0xFEC9, /* 0xD0 */
256    0x0640, 0xFED3, 0xFED7, 0xFEDB, 0xFEDF, 0xFEE3, 0xFEE7, 0xFEEB, /* 0xE0 */
257    0xFEED, 0xFEEF, 0xFEF3, 0xFEBD, 0xFECC, 0xFECE, 0xFECD, 0xFEE1, /* 0xE0 */
258    0xFE7D, 0x0651, 0xFEE5, 0xFEE9, 0xFEEC, 0xFEF0, 0xFEF2, 0xFED0, /* 0xF0 */
259    0xFED5, 0xFEF5, 0xFEF6, 0xFEDD, 0xFED9, 0xFEF1, 0x25A0          /* 0xF0 */
260};
261
262/* ----------------------------------------------------------------------- */
263
264#define IBM864CHAR_START                0xFE7D
265#define IBM864CHAR_END                  0xFEFC
266static sal_uChar const aImplIBM864ToCharTab[IBM864CHAR_END - IBM864CHAR_START + 1] =
267{
268/*     0     1     2     3     4     5     6     7 */
269/*     8     9     A     B     C     D     E     F */
270                                  0xF0,    0,    0, /* 0xFE70 */
271    0xC1, 0xC2, 0xA2, 0xC3, 0xA5, 0xC4,    0,    0, /* 0xFE80 */
272       0,    0,    0, 0xC6,    0, 0xC7, 0xA8, 0xA9, /* 0xFE80 */
273       0, 0xC8,    0, 0xC9,    0, 0xAA,    0, 0xCA, /* 0xFE90 */
274       0, 0xAB,    0, 0xCB,    0, 0xAD,    0, 0xCC, /* 0xFE90 */
275       0, 0xAE,    0, 0xCD,    0, 0xAF,    0, 0xCE, /* 0xFEA0 */
276       0, 0xCF,    0, 0xD0,    0, 0xD1,    0, 0xD2, /* 0xFEA0 */
277       0, 0xBC,    0, 0xD3,    0, 0xBD,    0, 0xD4, /* 0xFEB0 */
278       0, 0xBE,    0, 0xD5,    0, 0xEB,    0, 0xD6, /* 0xFEB0 */
279       0, 0xD7,    0,    0,    0, 0xD8,    0,    0, /* 0xFEC0 */
280       0, 0xDF, 0xC5, 0xD9, 0xEC, 0xEE, 0xED, 0xDA, /* 0xFEC0 */
281    0xF7, 0xBA,    0, 0xE1,    0, 0xF8,    0, 0xE2, /* 0xFED0 */
282       0, 0xFC,    0, 0xE3,    0, 0xFB,    0, 0xE4, /* 0xFED0 */
283       0, 0xEF,    0, 0xE5,    0, 0xF2,    0, 0xE6, /* 0xFEE0 */
284       0, 0xF3,    0, 0xE7, 0xF4, 0xE8,    0, 0xE9, /* 0xFEE0 */
285    0xF5, 0xFD, 0xF6, 0xEA,    0, 0xF9, 0xFA, 0x99, /* 0xFEF0 */
286    0x9A,    0,    0, 0x9D, 0x9E                    /* 0xFEF0 */
287};
288
289/* ----------------------------------------------------------------------- */
290
291#define IBM864TOCHARTABEX_COUNT         51
292static ImplUniCharTabData const aImplIBM864ToCharTabEx[IBM864TOCHARTABEX_COUNT] =
293{
294  { 0x00A0, 0xA0, 0 },
295  { 0x00A2, 0xC0, 0 },
296  { 0x00A3, 0xA3, 0 },
297  { 0x00A4, 0xA4, 0 },
298  { 0x00A6, 0xDB, 0 },
299  { 0x00AB, 0x97, 0 },
300  { 0x00AC, 0xDC, 0 },
301  { 0x00AD, 0xA1, 0 },
302  { 0x00B0, 0x80, 0 },
303  { 0x00B1, 0x93, 0 },
304  { 0x00B7, 0x81, 0 },
305  { 0x00BB, 0x98, 0 },
306  { 0x00BC, 0x95, 0 },
307  { 0x00BD, 0x94, 0 },
308  { 0x00D7, 0xDE, 0 },
309  { 0x00F7, 0xDD, 0 },
310  { 0x03B2, 0x90, 0 },
311  { 0x03C6, 0x92, 0 },
312  { 0x060C, 0xAC, 0 },
313  { 0x061B, 0xBB, 0 },
314  { 0x061F, 0xBF, 0 },
315  { 0x0640, 0xE0, 0 },
316  { 0x0651, 0xF1, 0 },
317  { 0x0660, 0xB0, 0 },
318  { 0x0661, 0xB1, 0 },
319  { 0x0662, 0xB2, 0 },
320  { 0x0663, 0xB3, 0 },
321  { 0x0664, 0xB4, 0 },
322  { 0x0665, 0xB5, 0 },
323  { 0x0666, 0xB6, 0 },
324  { 0x0667, 0xB7, 0 },
325  { 0x0668, 0xB8, 0 },
326  { 0x0669, 0xB9, 0 },
327  { 0x066A, 0x25, 0 },
328  { 0x2219, 0x82, 0 },
329  { 0x221A, 0x83, 0 },
330  { 0x221E, 0x91, 0 },
331  { 0x2248, 0x96, 0 },
332  { 0x2500, 0x85, 0 },
333  { 0x2502, 0x86, 0 },
334  { 0x250C, 0x8D, 0 },
335  { 0x2510, 0x8C, 0 },
336  { 0x2514, 0x8E, 0 },
337  { 0x2518, 0x8F, 0 },
338  { 0x251C, 0x8A, 0 },
339  { 0x2524, 0x88, 0 },
340  { 0x252C, 0x89, 0 },
341  { 0x2534, 0x8B, 0 },
342  { 0x253C, 0x87, 0 },
343  { 0x2592, 0x84, 0 },
344  { 0x25A0, 0xFE, 0 }
345};
346
347/* ----------------------------------------------------------------------- */
348
349static ImplByteConvertData const aImplIBM864ByteCvtData =
350{
351    aImplIBM864ToUniTab,
352    NULL,
353    IBM864UNI_START, IBM864UNI_END,
354    NOTABUNI_START, NOTABUNI_END,
355    aImplIBM864ToCharTab,
356    NULL,
357    aImplIBM864ToCharTabEx,
358    IBM864CHAR_START, IBM864CHAR_END,
359    NOTABCHAR_START, NOTABCHAR_END,
360    IBM864TOCHARTABEX_COUNT
361};
362
363/* ----------------------------------------------------------------------- */
364
365static ImplTextEncodingData const aImplIBM864TextEncodingData
366    = { { &aImplIBM864ByteCvtData,
367          ImplCharToUnicode,
368          ImplUnicodeToChar,
369          NULL,
370          NULL,
371          NULL,
372          NULL,
373          NULL,
374          NULL },
375        1,
376        1,
377        1,
378        178,
379        "iso8859-6",
380        "IBM864",
381        RTL_TEXTENCODING_INFO_ASCII
382            | RTL_TEXTENCODING_INFO_MIME
383            | RTL_TEXTENCODING_INFO_R2L };
384    /* DOS/OS2, SCRIPT_ARABIC, pc code page 864, mac encoding 4 */
385
386/* ======================================================================= */
387
388/* MS-1255 */
389/* Windows Standard CharSet for Hebrew */
390/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
391/* Convert-Tables: mappings/vendors/micsft/windows/cp1255.txt from 04/15/98 Version 2.01 */
392/* Last-Changes from us: */
393
394/* ----------------------------------------------------------------------- */
395
396#define MS1255UNI_START                 0x80
397#define MS1255UNI_END                   0xFF
398static sal_uInt16 const aImplMS1255ToUniTab[MS1255UNI_END - MS1255UNI_START + 1] =
399{
400/*       0       1       2       3       4       5       6       7 */
401/*       8       9       A       B       C       D       E       F */
402    0x20AC,      0, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, /* 0x80 */
403    0x02C6, 0x2030,      0, 0x2039,      0,      0,      0,      0, /* 0x80 */
404         0, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, /* 0x90 */
405    0x02DC, 0x2122,      0, 0x203A,      0,      0,      0,      0, /* 0x90 */
406    0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x20AA, 0x00A5, 0x00A6, 0x00A7, /* 0xA0 */
407    0x00A8, 0x00A9, 0x00D7, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, /* 0xA0 */
408    0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, /* 0xB0 */
409    0x00B8, 0x00B9, 0x00F7, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, /* 0xB0 */
410    0x05B0, 0x05B1, 0x05B2, 0x05B3, 0x05B4, 0x05B5, 0x05B6, 0x05B7, /* 0xC0 */
411    0x05B8, 0x05B9,      0, 0x05BB, 0x05BC, 0x05BD, 0x05BE, 0x05BF, /* 0xC0 */
412    0x05C0, 0x05C1, 0x05C2, 0x05C3, 0x05F0, 0x05F1, 0x05F2, 0x05F3, /* 0xD0 */
413    0x05F4,      0,      0,      0,      0,      0,      0,      0, /* 0xD0 */
414    0x05D0, 0x05D1, 0x05D2, 0x05D3, 0x05D4, 0x05D5, 0x05D6, 0x05D7, /* 0xE0 */
415    0x05D8, 0x05D9, 0x05DA, 0x05DB, 0x05DC, 0x05DD, 0x05DE, 0x05DF, /* 0xE0 */
416    0x05E0, 0x05E1, 0x05E2, 0x05E3, 0x05E4, 0x05E5, 0x05E6, 0x05E7, /* 0xF0 */
417    0x05E8, 0x05E9, 0x05EA,      0,      0, 0x200E, 0x200F,      0  /* 0xF0 */
418};
419
420/* ----------------------------------------------------------------------- */
421
422#define MS1255CHAR_START                0x05B0
423#define MS1255CHAR_END                  0x05F4
424static sal_uChar const aImplMS1255ToCharTab[MS1255CHAR_END - MS1255CHAR_START + 1] =
425{
426/*     0     1     2     3     4     5     6     7 */
427/*     8     9     A     B     C     D     E     F */
428    0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, /* 0x05B0 */
429    0xC8, 0xC9,    0, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, /* 0x05B0 */
430    0xD0, 0xD1, 0xD2, 0xD3,    0,    0,    0,    0, /* 0x05C0 */
431       0,    0,    0,    0,    0,    0,    0,    0, /* 0x05C0 */
432    0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, /* 0x05D0 */
433    0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, /* 0x05D0 */
434    0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, /* 0x05E0 */
435    0xF8, 0xF9, 0xFA,    0,    0,    0,    0,    0, /* 0x05E0 */
436    0xD4, 0xD5, 0xD6, 0xD7, 0xD8                    /* 0x05F0 */
437};
438
439/* ----------------------------------------------------------------------- */
440
441#define MS1255TOCHARTABEX_COUNT         54
442static ImplUniCharTabData const aImplMS1255ToCharTabEx[MS1255TOCHARTABEX_COUNT] =
443{
444  { 0x00A0, 0xA0, 0 },
445  { 0x00A1, 0xA1, 0 },
446  { 0x00A2, 0xA2, 0 },
447  { 0x00A3, 0xA3, 0 },
448  { 0x00A5, 0xA5, 0 },
449  { 0x00A6, 0xA6, 0 },
450  { 0x00A7, 0xA7, 0 },
451  { 0x00A8, 0xA8, 0 },
452  { 0x00A9, 0xA9, 0 },
453  { 0x00AB, 0xAB, 0 },
454  { 0x00AC, 0xAC, 0 },
455  { 0x00AD, 0xAD, 0 },
456  { 0x00AE, 0xAE, 0 },
457  { 0x00AF, 0xAF, 0 },
458  { 0x00B0, 0xB0, 0 },
459  { 0x00B1, 0xB1, 0 },
460  { 0x00B2, 0xB2, 0 },
461  { 0x00B3, 0xB3, 0 },
462  { 0x00B4, 0xB4, 0 },
463  { 0x00B5, 0xB5, 0 },
464  { 0x00B6, 0xB6, 0 },
465  { 0x00B7, 0xB7, 0 },
466  { 0x00B8, 0xB8, 0 },
467  { 0x00B9, 0xB9, 0 },
468  { 0x00BB, 0xBB, 0 },
469  { 0x00BC, 0xBC, 0 },
470  { 0x00BD, 0xBD, 0 },
471  { 0x00BE, 0xBE, 0 },
472  { 0x00BF, 0xBF, 0 },
473  { 0x00D7, 0xAA, 0 },
474  { 0x00F7, 0xBA, 0 },
475  { 0x0192, 0x83, 0 },
476  { 0x02C6, 0x88, 0 },
477  { 0x02DC, 0x98, 0 },
478  { 0x200E, 0xFD, 0 },
479  { 0x200F, 0xFE, 0 },
480  { 0x2013, 0x96, 0 },
481  { 0x2014, 0x97, 0 },
482  { 0x2018, 0x91, 0 },
483  { 0x2019, 0x92, 0 },
484  { 0x201A, 0x82, 0 },
485  { 0x201C, 0x93, 0 },
486  { 0x201D, 0x94, 0 },
487  { 0x201E, 0x84, 0 },
488  { 0x2020, 0x86, 0 },
489  { 0x2021, 0x87, 0 },
490  { 0x2022, 0x95, 0 },
491  { 0x2026, 0x85, 0 },
492  { 0x2030, 0x89, 0 },
493  { 0x2039, 0x8B, 0 },
494  { 0x203A, 0x9B, 0 },
495  { 0x20AA, 0xA4, 0 },
496  { 0x20AC, 0x80, 0 },
497  { 0x2122, 0x99, 0 }
498};
499
500/* ----------------------------------------------------------------------- */
501
502static ImplByteConvertData const aImplMS1255ByteCvtData =
503{
504    aImplMS1255ToUniTab,
505    NULL,
506    MS1255UNI_START, MS1255UNI_END,
507    NOTABUNI_START, NOTABUNI_END,
508    aImplMS1255ToCharTab,
509    NULL,
510    aImplMS1255ToCharTabEx,
511    MS1255CHAR_START, MS1255CHAR_END,
512    NOTABCHAR_START, NOTABCHAR_END,
513    MS1255TOCHARTABEX_COUNT
514};
515
516/* ----------------------------------------------------------------------- */
517
518static ImplTextEncodingData const aImplMS1255TextEncodingData
519    = { { &aImplMS1255ByteCvtData,
520          ImplCharToUnicode,
521          ImplUnicodeToChar,
522          NULL,
523          NULL,
524          NULL,
525          NULL,
526          NULL,
527          NULL },
528        1,
529        1,
530        1,
531        177,
532        "iso8859-8",
533        "windows-1255",
534        RTL_TEXTENCODING_INFO_ASCII
535            | RTL_TEXTENCODING_INFO_MIME
536            | RTL_TEXTENCODING_INFO_R2L };
537    /* WIN, SCRIPT_HEBREW, pc code page 862, mac encoding 5 */
538
539/* ======================================================================= */
540
541/* MS-1256 */
542/* Windows Standard CharSet for Arabic */
543/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
544/* Convert-Tables: mappings/vendors/micsft/windows/cp1256.txt from 01/5/99 Version 2.01 */
545
546/* ----------------------------------------------------------------------- */
547
548#define MS1256UNI_START                 0x80
549#define MS1256UNI_END                   0xFF
550static sal_uInt16 const aImplMS1256ToUniTab[MS1256UNI_END - MS1256UNI_START + 1] =
551{
552/*       0       1       2       3       4       5       6       7 */
553/*       8       9       A       B       C       D       E       F */
554    0x20AC, 0x067E, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, /* 0x80 */
555    0x02C6, 0x2030, 0x0679, 0x2039, 0x0152, 0x0686, 0x0698, 0x0688, /* 0x80 */
556    0x06AF, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, /* 0x90 */
557    0x06A9, 0x2122, 0x0691, 0x203A, 0x0153, 0x200C, 0x200D, 0x06BA, /* 0x90 */
558    0x00A0, 0x060C, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, /* 0xA0 */
559    0x00A8, 0x00A9, 0x06BE, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, /* 0xA0 */
560    0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, /* 0xB0 */
561    0x00B8, 0x00B9, 0x061B, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x061F, /* 0xB0 */
562    0x06C1, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627, /* 0xC0 */
563    0x0628, 0x0629, 0x062A, 0x062B, 0x062C, 0x062D, 0x062E, 0x062F, /* 0xC0 */
564    0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x00D7, /* 0xD0 */
565    0x0637, 0x0638, 0x0639, 0x063A, 0x0640, 0x0641, 0x0642, 0x0643, /* 0xD0 */
566    0x00E0, 0x0644, 0x00E2, 0x0645, 0x0646, 0x0647, 0x0648, 0x00E7, /* 0xE0 */
567    0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x0649, 0x064A, 0x00EE, 0x00EF, /* 0xE0 */
568    0x064B, 0x064C, 0x064D, 0x064E, 0x00F4, 0x064F, 0x0650, 0x00F7, /* 0xF0 */
569    0x0651, 0x00F9, 0x0652, 0x00FB, 0x00FC, 0x200E, 0x200F, 0x06D2  /* 0xF0 */
570};
571
572/* ----------------------------------------------------------------------- */
573
574#define MS1256CHAR_START                0x061B
575#define MS1256CHAR_END                  0x0652
576static sal_uChar const aImplMS1256ToCharTab[MS1256CHAR_END - MS1256CHAR_START + 1] =
577{
578/*     0     1     2     3     4     5     6     7 */
579/*     8     9     A     B     C     D     E     F */
580                      0xBA,    0,    0,    0, 0xBF, /* 0x0610 */
581       0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, /* 0x0620 */
582    0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, /* 0x0620 */
583    0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD8, /* 0x0630 */
584    0xD9, 0xDA, 0xDB,    0,    0,    0,    0,    0, /* 0x0630 */
585    0xDC, 0xDD, 0xDE, 0xDF, 0xE1, 0xE3, 0xE4, 0xE5, /* 0x0640 */
586    0xE6, 0xEC, 0xED, 0xF0, 0xF1, 0xF2, 0xF3, 0xF5, /* 0x0640 */
587    0xF6, 0xF8, 0xFA                                /* 0x0650 */
588};
589
590/* ----------------------------------------------------------------------- */
591
592#define MS1256TOCHARTABEX_COUNT         81
593static ImplUniCharTabData const aImplMS1256ToCharTabEx[MS1256TOCHARTABEX_COUNT] =
594{
595  { 0x00A0, 0xA0, 0 },
596  { 0x00A2, 0xA2, 0 },
597  { 0x00A3, 0xA3, 0 },
598  { 0x00A4, 0xA4, 0 },
599  { 0x00A5, 0xA5, 0 },
600  { 0x00A6, 0xA6, 0 },
601  { 0x00A7, 0xA7, 0 },
602  { 0x00A8, 0xA8, 0 },
603  { 0x00A9, 0xA9, 0 },
604  { 0x00AB, 0xAB, 0 },
605  { 0x00AC, 0xAC, 0 },
606  { 0x00AD, 0xAD, 0 },
607  { 0x00AE, 0xAE, 0 },
608  { 0x00AF, 0xAF, 0 },
609  { 0x00B0, 0xB0, 0 },
610  { 0x00B1, 0xB1, 0 },
611  { 0x00B2, 0xB2, 0 },
612  { 0x00B3, 0xB3, 0 },
613  { 0x00B4, 0xB4, 0 },
614  { 0x00B5, 0xB5, 0 },
615  { 0x00B6, 0xB6, 0 },
616  { 0x00B7, 0xB7, 0 },
617  { 0x00B8, 0xB8, 0 },
618  { 0x00B9, 0xB9, 0 },
619  { 0x00BB, 0xBB, 0 },
620  { 0x00BC, 0xBC, 0 },
621  { 0x00BD, 0xBD, 0 },
622  { 0x00BE, 0xBE, 0 },
623  { 0x00D7, 0xD7, 0 },
624  { 0x00E0, 0xE0, 0 },
625  { 0x00E2, 0xE2, 0 },
626  { 0x00E7, 0xE7, 0 },
627  { 0x00E8, 0xE8, 0 },
628  { 0x00E9, 0xE9, 0 },
629  { 0x00EA, 0xEA, 0 },
630  { 0x00EB, 0xEB, 0 },
631  { 0x00EE, 0xEE, 0 },
632  { 0x00EF, 0xEF, 0 },
633  { 0x00F4, 0xF4, 0 },
634  { 0x00F7, 0xF7, 0 },
635  { 0x00F9, 0xF9, 0 },
636  { 0x00FB, 0xFB, 0 },
637  { 0x00FC, 0xFC, 0 },
638  { 0x0152, 0x8C, 0 },
639  { 0x0153, 0x9C, 0 },
640  { 0x0192, 0x83, 0 },
641  { 0x02C6, 0x88, 0 },
642  { 0x060C, 0xA1, 0 },
643  { 0x0679, 0x8A, 0 },
644  { 0x067E, 0x81, 0 },
645  { 0x0686, 0x8D, 0 },
646  { 0x0688, 0x8F, 0 },
647  { 0x0691, 0x9A, 0 },
648  { 0x0698, 0x8E, 0 },
649  { 0x06A9, 0x98, 0 },
650  { 0x06AF, 0x90, 0 },
651  { 0x06BA, 0x9F, 0 },
652  { 0x06BE, 0xAA, 0 },
653  { 0x06C1, 0xC0, 0 },
654  { 0x06D2, 0xFF, 0 },
655  { 0x200C, 0x9D, 0 },
656  { 0x200D, 0x9E, 0 },
657  { 0x200E, 0xFD, 0 },
658  { 0x200F, 0xFE, 0 },
659  { 0x2013, 0x96, 0 },
660  { 0x2014, 0x97, 0 },
661  { 0x2018, 0x91, 0 },
662  { 0x2019, 0x92, 0 },
663  { 0x201A, 0x82, 0 },
664  { 0x201C, 0x93, 0 },
665  { 0x201D, 0x94, 0 },
666  { 0x201E, 0x84, 0 },
667  { 0x2020, 0x86, 0 },
668  { 0x2021, 0x87, 0 },
669  { 0x2022, 0x95, 0 },
670  { 0x2026, 0x85, 0 },
671  { 0x2030, 0x89, 0 },
672  { 0x2039, 0x8B, 0 },
673  { 0x203A, 0x9B, 0 },
674  { 0x20AC, 0x80, 0 },
675  { 0x2122, 0x99, 0 }
676};
677
678/* ----------------------------------------------------------------------- */
679
680static ImplByteConvertData const aImplMS1256ByteCvtData =
681{
682    aImplMS1256ToUniTab,
683    NULL,
684    MS1256UNI_START, MS1256UNI_END,
685    NOTABUNI_START, NOTABUNI_END,
686    aImplMS1256ToCharTab,
687    NULL,
688    aImplMS1256ToCharTabEx,
689    MS1256CHAR_START, MS1256CHAR_END,
690    NOTABCHAR_START, NOTABCHAR_END,
691    MS1256TOCHARTABEX_COUNT
692};
693
694/* ----------------------------------------------------------------------- */
695
696static ImplTextEncodingData const aImplMS1256TextEncodingData
697    = { { &aImplMS1256ByteCvtData,
698          ImplCharToUnicode,
699          ImplUnicodeToChar,
700          NULL,
701          NULL,
702          NULL,
703          NULL,
704          NULL,
705          NULL },
706        1,
707        1,
708        1,
709        178,
710        "iso8859-6",
711        "windows-1256",
712        RTL_TEXTENCODING_INFO_ASCII
713            | RTL_TEXTENCODING_INFO_MIME
714            | RTL_TEXTENCODING_INFO_R2L };
715    /* WIN, SCRIPT_ARABIC, pc code page 864, mac encoding 4 */
716
717/* ======================================================================= */
718
719/* ISO-8859-6 */
720/* Unix Standard for Arabic */
721/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme, 0x80-0x9F Control-Caracter wie in Unicode */
722/* Convert-Tables: mappings/iso8859/8859-6.txt from 07/27/99 Version 1.0 (based on Unicode 3.0) */
723/* Last-Changes from us: */
724/* !!! 0x30-0x39 sind Arabische Zahlen und muessten eigentlich nach 0x0660-0x0669 gemappt werden !!! */
725
726#define ISO88596UNI_START               0xA0
727#define ISO88596UNI_END                 0xF2
728static sal_uInt16 const aImplISO88596ToUniTab[ISO88596UNI_END - ISO88596UNI_START + 1] =
729{
730/*       0       1       2       3       4       5       6       7 */
731/*       8       9       A       B       C       D       E       F */
732    0x00A0,      0,      0,      0, 0x00A4,      0,      0,      0, /* 0xA0 */
733         0,      0,      0,      0, 0x060C, 0x00AD,      0,      0, /* 0xA0 */
734         0,      0,      0,      0,      0,      0,      0,      0, /* 0xB0 */
735         0,      0,      0, 0x061B,      0,      0,      0, 0x061F, /* 0xB0 */
736         0, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627, /* 0xC0 */
737    0x0628, 0x0629, 0x062A, 0x062B, 0x062C, 0x062D, 0x062E, 0x062F, /* 0xC0 */
738    0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x0637, /* 0xD0 */
739    0x0638, 0x0639, 0x063A,      0,      0,      0,      0,      0, /* 0xD0 */
740    0x0640, 0x0641, 0x0642, 0x0643, 0x0644, 0x0645, 0x0646, 0x0647, /* 0xE0 */
741    0x0648, 0x0649, 0x064A, 0x064B, 0x064C, 0x064D, 0x064E, 0x064F, /* 0xE0 */
742    0x0650, 0x0651, 0x0652                                          /* 0xF0 */
743                                                                    /* 0xF0 */
744};
745
746/* ----------------------------------------------------------------------- */
747
748#define ISO88596CHAR_START              0x061B
749#define ISO88596CHAR_END                0x0669
750static sal_uChar const aImplISO88596ToCharTab[ISO88596CHAR_END - ISO88596CHAR_START + 1] =
751{
752/*     0     1     2     3     4     5     6     7 */
753/*     8     9     A     B     C     D     E     F */
754                      0xBB,    0,    0,    0, 0xBF, /* 0x0610 */
755       0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, /* 0x0620 */
756    0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, /* 0x0620 */
757    0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, /* 0x0630 */
758    0xD8, 0xD9, 0xDA,    0,    0,    0,    0,    0, /* 0x0630 */
759    0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, /* 0x0640 */
760    0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, /* 0x0640 */
761    0xF0, 0xF1, 0xF2,    0,    0,    0,    0,    0, /* 0x0650 */
762       0,    0,    0,    0,    0,    0,    0,    0, /* 0x0650 */
763    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, /* 0x0660 */
764    0x38, 0x39                                      /* 0x0660 */
765};
766
767/* ----------------------------------------------------------------------- */
768
769#define ISO88596TOCHARTABEX_COUNT       4
770static ImplUniCharTabData const aImplISO88596ToCharTabEx[ISO88596TOCHARTABEX_COUNT] =
771{
772  { 0x00A0, 0xA0, 0 },
773  { 0x00A4, 0xA4, 0 },
774  { 0x00AD, 0xAD, 0 },
775  { 0x060C, 0xAC, 0 }
776};
777
778/* ----------------------------------------------------------------------- */
779
780static ImplByteConvertData const aImplISO88596ByteCvtData =
781{
782    aImplISO88596ToUniTab,
783    aImpl8090SameToUniTab,
784    ISO88596UNI_START, ISO88596UNI_END,
785    SAME8090UNI_START, SAME8090UNI_END,
786    aImplISO88596ToCharTab,
787    aImpl8090SameToCharTab,
788    aImplISO88596ToCharTabEx,
789    ISO88596CHAR_START, ISO88596CHAR_END,
790    SAME8090CHAR_START, SAME8090CHAR_END,
791    ISO88596TOCHARTABEX_COUNT
792};
793
794/* ----------------------------------------------------------------------- */
795
796static ImplTextEncodingData const aImplISO88596TextEncodingData
797    = { { &aImplISO88596ByteCvtData,
798          ImplCharToUnicode,
799          ImplUnicodeToChar,
800          NULL,
801          NULL,
802          NULL,
803          NULL,
804          NULL,
805          NULL },
806        1,
807        1,
808        1,
809        178,
810        "iso8859-6",
811        "ISO-8859-6",
812        RTL_TEXTENCODING_INFO_ASCII
813            | RTL_TEXTENCODING_INFO_R2L
814            | RTL_TEXTENCODING_INFO_MIME };
815    /* SCRIPT_ARABIC, pc code page 864, mac encoding 4 */
816
817
818/* ======================================================================= */
819
820/* ISO-8859-8 */
821/* Unix Standard for Hebrew */
822/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme, 0x80-0x9F Control-Caracter wie in Unicode */
823/* Convert-Tables: mappings/iso8859/8859-8.txt from 2000-Jan-03 Version 1.1 (based on Unicode 3.0) */
824
825#define ISO88598UNI_START               0xA0
826#define ISO88598UNI_END                 0xFE
827static sal_uInt16 const aImplISO88598ToUniTab[ISO88598UNI_END - ISO88598UNI_START + 1] =
828{
829/*       0       1       2       3       4       5       6       7 */
830/*       8       9       A       B       C       D       E       F */
831    0x00A0,      0, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, /* 0xA0 */
832    0x00A8, 0x00A9, 0x00D7, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, /* 0xA0 */
833    0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, /* 0xB0 */
834    0x00B8, 0x00B9, 0x00F7, 0x00BB, 0x00BC, 0x00BD, 0x00BE,      0, /* 0xB0 */
835         0,      0,      0,      0,      0,      0,      0,      0, /* 0xC0 */
836         0,      0,      0,      0,      0,      0,      0,      0, /* 0xC0 */
837         0,      0,      0,      0,      0,      0,      0,      0, /* 0xD0 */
838         0,      0,      0,      0,      0,      0,      0, 0x2017, /* 0xD0 */
839    0x05D0, 0x05D1, 0x05D2, 0x05D3, 0x05D4, 0x05D5, 0x05D6, 0x05D7, /* 0xE0 */
840    0x05D8, 0x05D9, 0x05DA, 0x05DB, 0x05DC, 0x05DD, 0x05DE, 0x05DF, /* 0xE0 */
841    0x05E0, 0x05E1, 0x05E2, 0x05E3, 0x05E4, 0x05E5, 0x05E6, 0x05E7, /* 0xF0 */
842    0x05E8, 0x05E9, 0x05EA,      0,      0, 0x200E, 0x200F          /* 0xF0 */
843};
844
845/* ----------------------------------------------------------------------- */
846
847#define ISO88598CHAR_START              0x05D0
848#define ISO88598CHAR_END                0x05EA
849static sal_uChar const aImplISO88598ToCharTab[ISO88598CHAR_END - ISO88598CHAR_START + 1] =
850{
851/*     0     1     2     3     4     5     6     7 */
852/*     8     9     A     B     C     D     E     F */
853    0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, /* 0x05D0 */
854    0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, /* 0x05D0 */
855    0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, /* 0x05E0 */
856    0xF8, 0xF9, 0xFA                                /* 0x05E0 */
857};
858
859/* ----------------------------------------------------------------------- */
860
861#define ISO88598TOCHARTABEX_COUNT       33
862static ImplUniCharTabData const aImplISO88598ToCharTabEx[ISO88598TOCHARTABEX_COUNT] =
863{
864  { 0x00A0, 0xA0, 0 },
865  { 0x00A2, 0xA2, 0 },
866  { 0x00A3, 0xA3, 0 },
867  { 0x00A4, 0xA4, 0 },
868  { 0x00A5, 0xA5, 0 },
869  { 0x00A6, 0xA6, 0 },
870  { 0x00A7, 0xA7, 0 },
871  { 0x00A8, 0xA8, 0 },
872  { 0x00A9, 0xA9, 0 },
873  { 0x00AB, 0xAB, 0 },
874  { 0x00AC, 0xAC, 0 },
875  { 0x00AD, 0xAD, 0 },
876  { 0x00AE, 0xAE, 0 },
877  { 0x00AF, 0xAF, 0 },
878  { 0x00B0, 0xB0, 0 },
879  { 0x00B1, 0xB1, 0 },
880  { 0x00B2, 0xB2, 0 },
881  { 0x00B3, 0xB3, 0 },
882  { 0x00B4, 0xB4, 0 },
883  { 0x00B5, 0xB5, 0 },
884  { 0x00B6, 0xB6, 0 },
885  { 0x00B7, 0xB7, 0 },
886  { 0x00B8, 0xB8, 0 },
887  { 0x00B9, 0xB9, 0 },
888  { 0x00BB, 0xBB, 0 },
889  { 0x00BC, 0xBC, 0 },
890  { 0x00BD, 0xBD, 0 },
891  { 0x00BE, 0xBE, 0 },
892  { 0x00D7, 0xAA, 0 },
893  { 0x00F7, 0xBA, 0 },
894  { 0x200E, 0xFD, 0 },
895  { 0x200F, 0xFE, 0 },
896  { 0x2017, 0xDF, 0 }
897};
898
899/* ----------------------------------------------------------------------- */
900
901static ImplByteConvertData const aImplISO88598ByteCvtData =
902{
903    aImplISO88598ToUniTab,
904    aImpl8090SameToUniTab,
905    ISO88598UNI_START, ISO88598UNI_END,
906    SAME8090UNI_START, SAME8090UNI_END,
907    aImplISO88598ToCharTab,
908    aImpl8090SameToCharTab,
909    aImplISO88598ToCharTabEx,
910    ISO88598CHAR_START, ISO88598CHAR_END,
911    SAME8090CHAR_START, SAME8090CHAR_END,
912    ISO88598TOCHARTABEX_COUNT
913};
914
915/* ----------------------------------------------------------------------- */
916
917static ImplTextEncodingData const aImplISO88598TextEncodingData
918    = { { &aImplISO88598ByteCvtData,
919          ImplCharToUnicode,
920          ImplUnicodeToChar,
921          NULL,
922          NULL,
923          NULL,
924          NULL,
925          NULL,
926          NULL },
927        1,
928        1,
929        1,
930        177,
931        "iso8859-8",
932        "ISO-8859-8",
933        RTL_TEXTENCODING_INFO_ASCII
934            | RTL_TEXTENCODING_INFO_R2L
935            | RTL_TEXTENCODING_INFO_MIME };
936    /* SCRIPT_HEBREW, pc code page 862, mac encoding 5 */
937