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