2 * This file is part of the LibreOffice project.
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/.
8 * This file incorporates work covered by the following license notice:
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 .
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 /* ======================================================================= */
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] =
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] =
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] =
185 /* ----------------------------------------------------------------------- */
187 ImplByteConvertData const aImplIBM862ByteCvtData =
191 aImplIBM862ToCharTab,
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,
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 /* ======================================================================= */
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] =
343 /* ----------------------------------------------------------------------- */
345 ImplByteConvertData const aImplIBM864ByteCvtData =
349 aImplIBM864ToCharTab,
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,
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 /* ======================================================================= */
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] =
496 /* ----------------------------------------------------------------------- */
498 ImplByteConvertData const aImplMS1255ByteCvtData =
502 aImplMS1255ToCharTab,
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,
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 /* ======================================================================= */
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] =
674 /* ----------------------------------------------------------------------- */
676 ImplByteConvertData const aImplMS1256ByteCvtData =
680 aImplMS1256ToCharTab,
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,
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 /* ======================================================================= */
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 */
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] =
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,
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 /* ======================================================================= */
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] =
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,
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 */