1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * Copyright 2000, 2010 Oracle and/or its affiliates.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * This file is part of OpenOffice.org.
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.
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).
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.
26 ************************************************************************/
28 #include "sal/config.h"
30 #include "convertsimple.hxx"
31 #include "tenchelp.hxx"
33 /* ======================================================================= */
35 /* This file contain the tables for all 1 byte charsets, for the */
36 /* following scripts: easteurope, cyrillic, greek, turkish */
38 /* ======================================================================= */
41 /* Dos Standard CharSet for Greek */
42 /* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
43 /* Convert-Tables: mappings/vendors/micsft/pc/cp737.txt from 04/24/96 Version 2.00 */
44 /* Last-Changes from us: */
46 /* ----------------------------------------------------------------------- */
48 #define IBM737UNI_START 0x80
49 #define IBM737UNI_END 0xFF
50 static sal_uInt16 const aImplIBM737ToUniTab[IBM737UNI_END - IBM737UNI_START + 1] =
54 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, /* 0x80 */
55 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, 0x03A0, /* 0x80 */
56 0x03A1, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9, /* 0x90 */
57 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 0x03B8, /* 0x90 */
58 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, 0x03C0, /* 0xA0 */
59 0x03C1, 0x03C3, 0x03C2, 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, /* 0xA0 */
60 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, /* 0xB0 */
61 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, /* 0xB0 */
62 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, /* 0xC0 */
63 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, /* 0xC0 */
64 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, /* 0xD0 */
65 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, /* 0xD0 */
66 0x03C9, 0x03AC, 0x03AD, 0x03AE, 0x03CA, 0x03AF, 0x03CC, 0x03CD, /* 0xE0 */
67 0x03CB, 0x03CE, 0x0386, 0x0388, 0x0389, 0x038A, 0x038C, 0x038E, /* 0xE0 */
68 0x038F, 0x00B1, 0x2265, 0x2264, 0x03AA, 0x03AB, 0x00F7, 0x2248, /* 0xF0 */
69 0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0 /* 0xF0 */
72 /* ----------------------------------------------------------------------- */
74 #define IBM737CHAR_START 0x0386
75 #define IBM737CHAR_END 0x03CE
76 static sal_uChar const aImplIBM737ToCharTab[IBM737CHAR_END - IBM737CHAR_START + 1] =
81 0xEB, 0xEC, 0xED, 0, 0xEE, 0, 0xEF, 0xF0, /* 0x0380 */
82 0, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, /* 0x0390 */
83 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, /* 0x0390 */
84 0x8F, 0x90, 0, 0x91, 0x92, 0x93, 0x94, 0x95, /* 0x03A0 */
85 0x96, 0x97, 0xF4, 0xF5, 0xE1, 0xE2, 0xE3, 0xE5, /* 0x03A0 */
86 0, 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, /* 0x03B0 */
87 0x9F, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, /* 0x03B0 */
88 0xA7, 0xA8, 0xAA, 0xA9, 0xAB, 0xAC, 0xAD, 0xAE, /* 0x03C0 */
89 0xAF, 0xE0, 0xE4, 0xE8, 0xE6, 0xE7, 0xE9 /* 0x03C0 */
92 /* ----------------------------------------------------------------------- */
94 #define IBM737TOCHARTABEX_COUNT 61
95 static ImplUniCharTabData const aImplIBM737ToCharTabEx[IBM737TOCHARTABEX_COUNT] =
160 /* ----------------------------------------------------------------------- */
162 static ImplByteConvertData const aImplIBM737ByteCvtData =
166 IBM737UNI_START, IBM737UNI_END,
167 NOTABUNI_START, NOTABUNI_END,
168 aImplIBM737ToCharTab,
170 aImplIBM737ToCharTabEx,
171 IBM737CHAR_START, IBM737CHAR_END,
172 NOTABCHAR_START, NOTABCHAR_END,
173 IBM737TOCHARTABEX_COUNT
176 /* ----------------------------------------------------------------------- */
178 static ImplTextEncodingData const aImplIBM737TextEncodingData
179 = { { &aImplIBM737ByteCvtData,
180 sal::detail::textenc::convertCharToUnicode,
181 sal::detail::textenc::convertUnicodeToChar,
194 RTL_TEXTENCODING_INFO_ASCII };
195 /* DOS/OS2, SCRIPT_GREEK, pc code page 737, mac encoding 6 */
197 /* ======================================================================= */
200 /* Dos Standard CharSet for BalticRim */
201 /* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
202 /* Convert-Tables: mappings/vendors/micsft/pc/cp775.txt from 04/24/96 Version 2.00 */
203 /* Last-Changes from us: */
205 /* ----------------------------------------------------------------------- */
207 #define IBM775UNI_START 0x80
208 #define IBM775UNI_END 0xFF
209 static sal_uInt16 const aImplIBM775ToUniTab[IBM775UNI_END - IBM775UNI_START + 1] =
211 /* 0 1 2 3 4 5 6 7 */
212 /* 8 9 A B C D E F */
213 0x0106, 0x00FC, 0x00E9, 0x0101, 0x00E4, 0x0123, 0x00E5, 0x0107, /* 0x80 */
214 0x0142, 0x0113, 0x0156, 0x0157, 0x012B, 0x0179, 0x00C4, 0x00C5, /* 0x80 */
215 0x00C9, 0x00E6, 0x00C6, 0x014D, 0x00F6, 0x0122, 0x00A2, 0x015A, /* 0x90 */
216 0x015B, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x00D7, 0x00A4, /* 0x90 */
217 0x0100, 0x012A, 0x00F3, 0x017B, 0x017C, 0x017A, 0x201D, 0x00A6, /* 0xA0 */
218 0x00A9, 0x00AE, 0x00AC, 0x00BD, 0x00BC, 0x0141, 0x00AB, 0x00BB, /* 0xA0 */
219 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x0104, 0x010C, 0x0118, /* 0xB0 */
220 0x0116, 0x2563, 0x2551, 0x2557, 0x255D, 0x012E, 0x0160, 0x2510, /* 0xB0 */
221 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x0172, 0x016A, /* 0xC0 */
222 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x017D, /* 0xC0 */
223 0x0105, 0x010D, 0x0119, 0x0117, 0x012F, 0x0161, 0x0173, 0x016B, /* 0xD0 */
224 0x017E, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, /* 0xD0 */
225 0x00D3, 0x00DF, 0x014C, 0x0143, 0x00F5, 0x00D5, 0x00B5, 0x0144, /* 0xE0 */
226 0x0136, 0x0137, 0x013B, 0x013C, 0x0146, 0x0112, 0x0145, 0x2019, /* 0xE0 */
227 0x00AD, 0x00B1, 0x201C, 0x00BE, 0x00B6, 0x00A7, 0x00F7, 0x201E, /* 0xF0 */
228 0x00B0, 0x2219, 0x00B7, 0x00B9, 0x00B3, 0x00B2, 0x25A0, 0x00A0 /* 0xF0 */
231 /* ----------------------------------------------------------------------- */
233 #define IBM775TOCHARTABEX_COUNT 128
234 static ImplUniCharTabData const aImplIBM775ToCharTabEx[IBM775TOCHARTABEX_COUNT] =
366 /* ----------------------------------------------------------------------- */
368 static ImplByteConvertData const aImplIBM775ByteCvtData =
372 IBM775UNI_START, IBM775UNI_END,
373 NOTABUNI_START, NOTABUNI_END,
376 aImplIBM775ToCharTabEx,
377 NOTABCHAR_START, NOTABCHAR_END,
378 NOTABCHAR_START, NOTABCHAR_END,
379 IBM775TOCHARTABEX_COUNT
382 /* ----------------------------------------------------------------------- */
384 static ImplTextEncodingData const aImplIBM775TextEncodingData
385 = { { &aImplIBM775ByteCvtData,
386 sal::detail::textenc::convertCharToUnicode,
387 sal::detail::textenc::convertUnicodeToChar,
400 RTL_TEXTENCODING_INFO_ASCII };
401 /* DOS/OS2, SCRIPT_BALTIC, pc code page 775, mac encoding 29 (?) */
403 /* ======================================================================= */
406 /* Dos Standard CharSet for Central Europa (Jug., Pol., Tsch., Ung., ...) */
407 /* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
408 /* Convert-Tables: mappings/vendors/micsft/pc/cp852.txt from 04/24/96 Version 2.00 */
409 /* Last-Changes from us: */
411 /* ----------------------------------------------------------------------- */
413 #define IBM852UNI_START 0x80
414 #define IBM852UNI_END 0xFF
415 static sal_uInt16 const aImplIBM852ToUniTab[IBM852UNI_END - IBM852UNI_START + 1] =
417 /* 0 1 2 3 4 5 6 7 */
418 /* 8 9 A B C D E F */
419 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x016F, 0x0107, 0x00E7, /* 0x80 */
420 0x0142, 0x00EB, 0x0150, 0x0151, 0x00EE, 0x0179, 0x00C4, 0x0106, /* 0x80 */
421 0x00C9, 0x0139, 0x013A, 0x00F4, 0x00F6, 0x013D, 0x013E, 0x015A, /* 0x90 */
422 0x015B, 0x00D6, 0x00DC, 0x0164, 0x0165, 0x0141, 0x00D7, 0x010D, /* 0x90 */
423 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x0104, 0x0105, 0x017D, 0x017E, /* 0xA0 */
424 0x0118, 0x0119, 0x00AC, 0x017A, 0x010C, 0x015F, 0x00AB, 0x00BB, /* 0xA0 */
425 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00C1, 0x00C2, 0x011A, /* 0xB0 */
426 0x015E, 0x2563, 0x2551, 0x2557, 0x255D, 0x017B, 0x017C, 0x2510, /* 0xB0 */
427 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x0102, 0x0103, /* 0xC0 */
428 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x00A4, /* 0xC0 */
429 0x0111, 0x0110, 0x010E, 0x00CB, 0x010F, 0x0147, 0x00CD, 0x00CE, /* 0xD0 */
430 0x011B, 0x2518, 0x250C, 0x2588, 0x2584, 0x0162, 0x016E, 0x2580, /* 0xD0 */
431 0x00D3, 0x00DF, 0x00D4, 0x0143, 0x0144, 0x0148, 0x0160, 0x0161, /* 0xE0 */
432 0x0154, 0x00DA, 0x0155, 0x0170, 0x00FD, 0x00DD, 0x0163, 0x00B4, /* 0xE0 */
433 0x00AD, 0x02DD, 0x02DB, 0x02C7, 0x02D8, 0x00A7, 0x00F7, 0x00B8, /* 0xF0 */
434 0x00B0, 0x00A8, 0x02D9, 0x0171, 0x0158, 0x0159, 0x25A0, 0x00A0 /* 0xF0 */
437 /* ----------------------------------------------------------------------- */
439 #define IBM852TOCHARTABEX_COUNT 128
440 static ImplUniCharTabData const aImplIBM852ToCharTabEx[IBM852TOCHARTABEX_COUNT] =
572 /* ----------------------------------------------------------------------- */
574 static ImplByteConvertData const aImplIBM852ByteCvtData =
578 IBM852UNI_START, IBM852UNI_END,
579 NOTABUNI_START, NOTABUNI_END,
582 aImplIBM852ToCharTabEx,
583 NOTABCHAR_START, NOTABCHAR_END,
584 NOTABCHAR_START, NOTABCHAR_END,
585 IBM852TOCHARTABEX_COUNT
588 /* ----------------------------------------------------------------------- */
590 static ImplTextEncodingData const aImplIBM852TextEncodingData
591 = { { &aImplIBM852ByteCvtData,
592 sal::detail::textenc::convertCharToUnicode,
593 sal::detail::textenc::convertUnicodeToChar,
606 RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
607 /* DOS/OS2, SCRIPT_EASTEUROPE, pc code page 852, mac encoding 29 */
609 /* ======================================================================= */
612 /* Dos Standard CharSet for Cyrillic */
613 /* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
614 /* Convert-Tables: mappings/vendors/micsft/pc/cp855.txt from 04/24/96 Version 2.00 */
615 /* Last-Changes from us: */
617 /* ----------------------------------------------------------------------- */
619 #define IBM855UNI_START 0x80
620 #define IBM855UNI_END 0xFF
621 static sal_uInt16 const aImplIBM855ToUniTab[IBM855UNI_END - IBM855UNI_START + 1] =
623 /* 0 1 2 3 4 5 6 7 */
624 /* 8 9 A B C D E F */
625 0x0452, 0x0402, 0x0453, 0x0403, 0x0451, 0x0401, 0x0454, 0x0404, /* 0x80 */
626 0x0455, 0x0405, 0x0456, 0x0406, 0x0457, 0x0407, 0x0458, 0x0408, /* 0x80 */
627 0x0459, 0x0409, 0x045A, 0x040A, 0x045B, 0x040B, 0x045C, 0x040C, /* 0x90 */
628 0x045E, 0x040E, 0x045F, 0x040F, 0x044E, 0x042E, 0x044A, 0x042A, /* 0x90 */
629 0x0430, 0x0410, 0x0431, 0x0411, 0x0446, 0x0426, 0x0434, 0x0414, /* 0xA0 */
630 0x0435, 0x0415, 0x0444, 0x0424, 0x0433, 0x0413, 0x00AB, 0x00BB, /* 0xA0 */
631 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x0445, 0x0425, 0x0438, /* 0xB0 */
632 0x0418, 0x2563, 0x2551, 0x2557, 0x255D, 0x0439, 0x0419, 0x2510, /* 0xB0 */
633 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x043A, 0x041A, /* 0xC0 */
634 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x00A4, /* 0xC0 */
635 0x043B, 0x041B, 0x043C, 0x041C, 0x043D, 0x041D, 0x043E, 0x041E, /* 0xD0 */
636 0x043F, 0x2518, 0x250C, 0x2588, 0x2584, 0x041F, 0x044F, 0x2580, /* 0xD0 */
637 0x042F, 0x0440, 0x0420, 0x0441, 0x0421, 0x0442, 0x0422, 0x0443, /* 0xE0 */
638 0x0423, 0x0436, 0x0416, 0x0432, 0x0412, 0x044C, 0x042C, 0x2116, /* 0xE0 */
639 0x00AD, 0x044B, 0x042B, 0x0437, 0x0417, 0x0448, 0x0428, 0x044D, /* 0xF0 */
640 0x042D, 0x0449, 0x0429, 0x0447, 0x0427, 0x00A7, 0x25A0, 0x00A0 /* 0xF0 */
643 /* ----------------------------------------------------------------------- */
645 #define IBM855CHAR_START 0x0401
646 #define IBM855CHAR_END 0x045F
647 static sal_uChar const aImplIBM855ToCharTab[IBM855CHAR_END - IBM855CHAR_START + 1] =
649 /* 0 1 2 3 4 5 6 7 */
650 /* 8 9 A B C D E F */
651 0x85, 0x81, 0x83, 0x87, 0x89, 0x8B, 0x8D, /* 0x0400 */
652 0x8F, 0x91, 0x93, 0x95, 0x97, 0, 0x99, 0x9B, /* 0x0400 */
653 0xA1, 0xA3, 0xEC, 0xAD, 0xA7, 0xA9, 0xEA, 0xF4, /* 0x0410 */
654 0xB8, 0xBE, 0xC7, 0xD1, 0xD3, 0xD5, 0xD7, 0xDD, /* 0x0410 */
655 0xE2, 0xE4, 0xE6, 0xE8, 0xAB, 0xB6, 0xA5, 0xFC, /* 0x0420 */
656 0xF6, 0xFA, 0x9F, 0xF2, 0xEE, 0xF8, 0x9D, 0xE0, /* 0x0420 */
657 0xA0, 0xA2, 0xEB, 0xAC, 0xA6, 0xA8, 0xE9, 0xF3, /* 0x0430 */
658 0xB7, 0xBD, 0xC6, 0xD0, 0xD2, 0xD4, 0xD6, 0xD8, /* 0x0430 */
659 0xE1, 0xE3, 0xE5, 0xE7, 0xAA, 0xB5, 0xA4, 0xFB, /* 0x0440 */
660 0xF5, 0xF9, 0x9E, 0xF1, 0xED, 0xF7, 0x9C, 0xDE, /* 0x0440 */
661 0, 0x84, 0x80, 0x82, 0x86, 0x88, 0x8A, 0x8C, /* 0x0450 */
662 0x8E, 0x90, 0x92, 0x94, 0x96, 0, 0x98, 0x9A, /* 0x0450 */
665 /* ----------------------------------------------------------------------- */
667 #define IBM855TOCHARTABEX_COUNT 36
668 static ImplUniCharTabData const aImplIBM855ToCharTabEx[IBM855TOCHARTABEX_COUNT] =
708 /* ----------------------------------------------------------------------- */
710 static ImplByteConvertData const aImplIBM855ByteCvtData =
714 IBM855UNI_START, IBM855UNI_END,
715 NOTABUNI_START, NOTABUNI_END,
716 aImplIBM855ToCharTab,
718 aImplIBM855ToCharTabEx,
719 IBM855CHAR_START, IBM855CHAR_END,
720 NOTABCHAR_START, NOTABCHAR_END,
721 IBM855TOCHARTABEX_COUNT
724 /* ----------------------------------------------------------------------- */
726 static ImplTextEncodingData const aImplIBM855TextEncodingData
727 = { { &aImplIBM855ByteCvtData,
728 sal::detail::textenc::convertCharToUnicode,
729 sal::detail::textenc::convertUnicodeToChar,
742 RTL_TEXTENCODING_INFO_ASCII };
743 /* DOS/OS2, SCRIPT_CYRILLIC, pc code page 855, mac encoding 7 */
745 /* ======================================================================= */
748 /* Dos Standard CharSet for Turkish */
749 /* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
750 /* Convert-Tables: mappings/vendors/micsft/pc/cp857.txt from 04/24/96 Version 2.00 */
751 /* Last-Changes from us: */
753 /* ----------------------------------------------------------------------- */
755 #define IBM857UNI_START 0x80
756 #define IBM857UNI_END 0xFF
757 static sal_uInt16 const aImplIBM857ToUniTab[IBM857UNI_END - IBM857UNI_START + 1] =
759 /* 0 1 2 3 4 5 6 7 */
760 /* 8 9 A B C D E F */
761 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7, /* 0x80 */
762 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x0131, 0x00C4, 0x00C5, /* 0x80 */
763 0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9, /* 0x90 */
764 0x0130, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x015E, 0x015F, /* 0x90 */
765 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x011E, 0x011F, /* 0xA0 */
766 0x00BF, 0x00AE, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, /* 0xA0 */
767 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00C1, 0x00C2, 0x00C0, /* 0xB0 */
768 0x00A9, 0x2563, 0x2551, 0x2557, 0x255D, 0x00A2, 0x00A5, 0x2510, /* 0xB0 */
769 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x00E3, 0x00C3, /* 0xC0 */
770 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x00A4, /* 0xC0 */
771 0x00BA, 0x00AA, 0x00CA, 0x00CB, 0x00C8, 0, 0x00CD, 0x00CE, /* 0xD0 */
772 0x00CF, 0x2518, 0x250C, 0x2588, 0x2584, 0x00A6, 0x00CC, 0x2580, /* 0xD0 */
773 0x00D3, 0x00DF, 0x00D4, 0x00D2, 0x00F5, 0x00D5, 0x00B5, 0, /* 0xE0 */
774 0x00D7, 0x00DA, 0x00DB, 0x00D9, 0x00EC, 0x00FF, 0x00AF, 0x00B4, /* 0xE0 */
775 0x00AD, 0x00B1, 0, 0x00BE, 0x00B6, 0x00A7, 0x00F7, 0x00B8, /* 0xF0 */
776 0x00B0, 0x00A8, 0x00B7, 0x00B9, 0x00B3, 0x00B2, 0x25A0, 0x00A0 /* 0xF0 */
779 /* ----------------------------------------------------------------------- */
781 #define IBM857CHAR_START 0x00A0
782 #define IBM857CHAR_END 0x00FF
783 static sal_uChar const aImplIBM857ToCharTab[IBM857CHAR_END - IBM857CHAR_START + 1] =
785 /* 0 1 2 3 4 5 6 7 */
786 /* 8 9 A B C D E F */
787 0xFF, 0xAD, 0xBD, 0x9C, 0xCF, 0xBE, 0xDD, 0xF5, /* 0x00A0 */
788 0xF9, 0xB8, 0xD1, 0xAE, 0xAA, 0xF0, 0xA9, 0xEE, /* 0x00A0 */
789 0xF8, 0xF1, 0xFD, 0xFC, 0xEF, 0xE6, 0xF4, 0xFA, /* 0x00B0 */
790 0xF7, 0xFB, 0xD0, 0xAF, 0xAC, 0xAB, 0xF3, 0xA8, /* 0x00B0 */
791 0xB7, 0xB5, 0xB6, 0xC7, 0x8E, 0x8F, 0x92, 0x80, /* 0x00C0 */
792 0xD4, 0x90, 0xD2, 0xD3, 0xDE, 0xD6, 0xD7, 0xD8, /* 0x00C0 */
793 0, 0xA5, 0xE3, 0xE0, 0xE2, 0xE5, 0x99, 0xE8, /* 0x00D0 */
794 0x9D, 0xEB, 0xE9, 0xEA, 0x9A, 0, 0, 0xE1, /* 0x00D0 */
795 0x85, 0xA0, 0x83, 0xC6, 0x84, 0x86, 0x91, 0x87, /* 0x00E0 */
796 0x8A, 0x82, 0x88, 0x89, 0xEC, 0xA1, 0x8C, 0x8B, /* 0x00E0 */
797 0, 0xA4, 0x95, 0xA2, 0x93, 0xE4, 0x94, 0xF6, /* 0x00F0 */
798 0x9B, 0x97, 0xA3, 0x96, 0x81, 0, 0, 0xED /* 0x00F0 */
801 /* ----------------------------------------------------------------------- */
803 #define IBM857TOCHARTABEX_COUNT 35
804 static ImplUniCharTabData const aImplIBM857ToCharTabEx[IBM857TOCHARTABEX_COUNT] =
843 /* ----------------------------------------------------------------------- */
845 static ImplByteConvertData const aImplIBM857ByteCvtData =
849 IBM857UNI_START, IBM857UNI_END,
850 NOTABUNI_START, NOTABUNI_END,
851 aImplIBM857ToCharTab,
853 aImplIBM857ToCharTabEx,
854 IBM857CHAR_START, IBM857CHAR_END,
855 NOTABCHAR_START, NOTABCHAR_END,
856 IBM857TOCHARTABEX_COUNT
859 /* ----------------------------------------------------------------------- */
861 static ImplTextEncodingData const aImplIBM857TextEncodingData
862 = { { &aImplIBM857ByteCvtData,
863 sal::detail::textenc::convertCharToUnicode,
864 sal::detail::textenc::convertUnicodeToChar,
877 RTL_TEXTENCODING_INFO_ASCII };
878 /* DOS/OS2, SCRIPT_TURKISH, pc code page 857, mac encoding 35 */
880 /* ======================================================================= */
883 /* Dos Standard CharSet for CyrillicRussian */
884 /* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
885 /* Convert-Tables: mappings/vendors/micsft/pc/cp866.txt from 04/24/96 Version 2.00 */
886 /* Last-Changes from us: */
888 /* ----------------------------------------------------------------------- */
890 #define IBM866UNI_START 0x80
891 #define IBM866UNI_END 0xFF
892 static sal_uInt16 const aImplIBM866ToUniTab[IBM866UNI_END - IBM866UNI_START + 1] =
894 /* 0 1 2 3 4 5 6 7 */
895 /* 8 9 A B C D E F */
896 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, /* 0x80 */
897 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, /* 0x80 */
898 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, /* 0x90 */
899 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, /* 0x90 */
900 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, /* 0xA0 */
901 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, /* 0xA0 */
902 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, /* 0xB0 */
903 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, /* 0xB0 */
904 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, /* 0xC0 */
905 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, /* 0xC0 */
906 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, /* 0xD0 */
907 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, /* 0xD0 */
908 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, /* 0xE0 */
909 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F, /* 0xE0 */
910 0x0401, 0x0451, 0x0404, 0x0454, 0x0407, 0x0457, 0x040E, 0x045E, /* 0xF0 */
911 0x00B0, 0x2219, 0x00B7, 0x221A, 0x2116, 0x00A4, 0x25A0, 0x00A0 /* 0xF0 */
914 /* ----------------------------------------------------------------------- */
916 #define IBM866CHAR_START 0x0401
917 #define IBM866CHAR_END 0x045E
918 static sal_uChar const aImplIBM866ToCharTab[IBM866CHAR_END - IBM866CHAR_START + 1] =
920 /* 0 1 2 3 4 5 6 7 */
921 /* 8 9 A B C D E F */
922 0xF0, 0, 0, 0xF2, 0, 0, 0xF4, /* 0x0400 */
923 0, 0, 0, 0, 0, 0, 0xF6, 0, /* 0x0400 */
924 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x0410 */
925 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, /* 0x0410 */
926 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, /* 0x0420 */
927 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F, /* 0x0420 */
928 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, /* 0x0430 */
929 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, /* 0x0430 */
930 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, /* 0x0440 */
931 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, /* 0x0440 */
932 0, 0xF1, 0, 0, 0xF3, 0, 0, 0xF5, /* 0x0450 */
933 0, 0, 0, 0, 0, 0, 0xF7 /* 0x0450 */
936 /* ----------------------------------------------------------------------- */
938 #define IBM866TOCHARTABEX_COUNT 56
939 static ImplUniCharTabData const aImplIBM866ToCharTabEx[IBM866TOCHARTABEX_COUNT] =
999 /* ----------------------------------------------------------------------- */
1001 static ImplByteConvertData const aImplIBM866ByteCvtData =
1003 aImplIBM866ToUniTab,
1005 IBM866UNI_START, IBM866UNI_END,
1006 NOTABUNI_START, NOTABUNI_END,
1007 aImplIBM866ToCharTab,
1009 aImplIBM866ToCharTabEx,
1010 IBM866CHAR_START, IBM866CHAR_END,
1011 NOTABCHAR_START, NOTABCHAR_END,
1012 IBM866TOCHARTABEX_COUNT
1015 /* ----------------------------------------------------------------------- */
1017 static ImplTextEncodingData const aImplIBM866TextEncodingData
1018 = { { &aImplIBM866ByteCvtData,
1019 sal::detail::textenc::convertCharToUnicode,
1020 sal::detail::textenc::convertUnicodeToChar,
1033 RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
1034 /* DOS/OS2, SCRIPT_LATIN, pc code page 866, mac encoding 7 */
1036 /* ======================================================================= */
1039 /* Dos Standard CharSet for Greek2 */
1040 /* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
1041 /* Convert-Tables: mappings/vendors/micsft/pc/cp869.txt from 04/24/96 Version 2.00 */
1042 /* Last-Changes from us: */
1044 /* ----------------------------------------------------------------------- */
1046 #define IBM869UNI_START 0x86
1047 #define IBM869UNI_END 0xFF
1048 static sal_uInt16 const aImplIBM869ToUniTab[IBM869UNI_END - IBM869UNI_START + 1] =
1050 /* 0 1 2 3 4 5 6 7 */
1051 /* 8 9 A B C D E F */
1052 0x0386, 0, /* 0x80 */
1053 0x00B7, 0x00AC, 0x00A6, 0x2018, 0x2019, 0x0388, 0x2015, 0x0389, /* 0x80 */
1054 0x038A, 0x03AA, 0x038C, 0, 0, 0x038E, 0x03AB, 0x00A9, /* 0x90 */
1055 0x038F, 0x00B2, 0x00B3, 0x03AC, 0x00A3, 0x03AD, 0x03AE, 0x03AF, /* 0x90 */
1056 0x03CA, 0x0390, 0x03CC, 0x03CD, 0x0391, 0x0392, 0x0393, 0x0394, /* 0xA0 */
1057 0x0395, 0x0396, 0x0397, 0x00BD, 0x0398, 0x0399, 0x00AB, 0x00BB, /* 0xA0 */
1058 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x039A, 0x039B, 0x039C, /* 0xB0 */
1059 0x039D, 0x2563, 0x2551, 0x2557, 0x255D, 0x039E, 0x039F, 0x2510, /* 0xB0 */
1060 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x03A0, 0x03A1, /* 0xC0 */
1061 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x03A3, /* 0xC0 */
1062 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9, 0x03B1, 0x03B2, /* 0xD0 */
1063 0x03B3, 0x2518, 0x250C, 0x2588, 0x2584, 0x03B4, 0x03B5, 0x2580, /* 0xD0 */
1064 0x03B6, 0x03B7, 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, /* 0xE0 */
1065 0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C3, 0x03C2, 0x03C4, 0x0384, /* 0xE0 */
1066 0x00AD, 0x00B1, 0x03C5, 0x03C6, 0x03C7, 0x00A7, 0x03C8, 0x0385, /* 0xF0 */
1067 0x00B0, 0x00A8, 0x03C9, 0x03CB, 0x03B0, 0x03CE, 0x25A0, 0x00A0 /* 0xF0 */
1070 /* ----------------------------------------------------------------------- */
1072 #define IBM869CHAR_START 0x0384
1073 #define IBM869CHAR_END 0x03CE
1074 static sal_uChar const aImplIBM869ToCharTab[IBM869CHAR_END - IBM869CHAR_START + 1] =
1076 /* 0 1 2 3 4 5 6 7 */
1077 /* 8 9 A B C D E F */
1078 0xEF, 0xF7, 0x86, 0, /* 0x0380 */
1079 0x8D, 0x8F, 0x90, 0, 0x92, 0, 0x95, 0x98, /* 0x0380 */
1080 0xA1, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, /* 0x0390 */
1081 0xAC, 0xAD, 0xB5, 0xB6, 0xB7, 0xB8, 0xBD, 0xBE, /* 0x0390 */
1082 0xC6, 0xC7, 0, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, /* 0x03A0 */
1083 0xD4, 0xD5, 0x91, 0x96, 0x9B, 0x9D, 0x9E, 0x9F, /* 0x03A0 */
1084 0xFC, 0xD6, 0xD7, 0xD8, 0xDD, 0xDE, 0xE0, 0xE1, /* 0x03B0 */
1085 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, /* 0x03B0 */
1086 0xEA, 0xEB, 0xED, 0xEC, 0xEE, 0xF2, 0xF3, 0xF4, /* 0x03C0 */
1087 0xF6, 0xFA, 0xA0, 0xFB, 0xA2, 0xA3, 0xFD /* 0x03C0 */
1090 /* ----------------------------------------------------------------------- */
1092 #define IBM869TOCHARTABEX_COUNT 48
1093 static ImplUniCharTabData const aImplIBM869ToCharTabEx[IBM869TOCHARTABEX_COUNT] =
1095 { 0x00A0, 0xFF, 0 },
1096 { 0x00A3, 0x9C, 0 },
1097 { 0x00A6, 0x8A, 0 },
1098 { 0x00A7, 0xF5, 0 },
1099 { 0x00A8, 0xF9, 0 },
1100 { 0x00A9, 0x97, 0 },
1101 { 0x00AB, 0xAE, 0 },
1102 { 0x00AC, 0x89, 0 },
1103 { 0x00AD, 0xF0, 0 },
1104 { 0x00B0, 0xF8, 0 },
1105 { 0x00B1, 0xF1, 0 },
1106 { 0x00B2, 0x99, 0 },
1107 { 0x00B3, 0x9A, 0 },
1108 { 0x00B7, 0x88, 0 },
1109 { 0x00BB, 0xAF, 0 },
1110 { 0x00BD, 0xAB, 0 },
1111 { 0x2015, 0x8E, 0 },
1112 { 0x2018, 0x8B, 0 },
1113 { 0x2019, 0x8C, 0 },
1114 { 0x2500, 0xC4, 0 },
1115 { 0x2502, 0xB3, 0 },
1116 { 0x250C, 0xDA, 0 },
1117 { 0x2510, 0xBF, 0 },
1118 { 0x2514, 0xC0, 0 },
1119 { 0x2518, 0xD9, 0 },
1120 { 0x251C, 0xC3, 0 },
1121 { 0x2524, 0xB4, 0 },
1122 { 0x252C, 0xC2, 0 },
1123 { 0x2534, 0xC1, 0 },
1124 { 0x253C, 0xC5, 0 },
1125 { 0x2550, 0xCD, 0 },
1126 { 0x2551, 0xBA, 0 },
1127 { 0x2554, 0xC9, 0 },
1128 { 0x2557, 0xBB, 0 },
1129 { 0x255A, 0xC8, 0 },
1130 { 0x255D, 0xBC, 0 },
1131 { 0x2560, 0xCC, 0 },
1132 { 0x2563, 0xB9, 0 },
1133 { 0x2566, 0xCB, 0 },
1134 { 0x2569, 0xCA, 0 },
1135 { 0x256C, 0xCE, 0 },
1136 { 0x2580, 0xDF, 0 },
1137 { 0x2584, 0xDC, 0 },
1138 { 0x2588, 0xDB, 0 },
1139 { 0x2591, 0xB0, 0 },
1140 { 0x2592, 0xB1, 0 },
1141 { 0x2593, 0xB2, 0 },
1145 /* ----------------------------------------------------------------------- */
1147 static ImplByteConvertData const aImplIBM869ByteCvtData =
1149 aImplIBM869ToUniTab,
1151 IBM869UNI_START, IBM869UNI_END,
1152 NOTABUNI_START, NOTABUNI_END,
1153 aImplIBM869ToCharTab,
1155 aImplIBM869ToCharTabEx,
1156 IBM869CHAR_START, IBM869CHAR_END,
1157 NOTABCHAR_START, NOTABCHAR_END,
1158 IBM869TOCHARTABEX_COUNT
1161 /* ----------------------------------------------------------------------- */
1163 static ImplTextEncodingData const aImplIBM869TextEncodingData
1164 = { { &aImplIBM869ByteCvtData,
1165 sal::detail::textenc::convertCharToUnicode,
1166 sal::detail::textenc::convertUnicodeToChar,
1179 RTL_TEXTENCODING_INFO_ASCII };
1180 /* DOS/OS2, SCRIPT_LATIN, pc code page 869, mac encoding 6 */
1182 /* ======================================================================= */
1185 /* Windows CodePage for Eastern European (WinLatin2) */
1186 /* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
1187 /* Convert-Tables: mappings/vendors/micsft/windows/cp1250.txt from 04/15/98 Version 2.01 */
1188 /* Last-Changes from us: */
1190 /* ----------------------------------------------------------------------- */
1192 #define MS1250UNI_START 0x80
1193 #define MS1250UNI_END 0xFF
1194 static sal_uInt16 const aImplMS1250ToUniTab[MS1250UNI_END - MS1250UNI_START + 1] =
1196 /* 0 1 2 3 4 5 6 7 */
1197 /* 8 9 A B C D E F */
1198 0x20AC, 0, 0x201A, 0, 0x201E, 0x2026, 0x2020, 0x2021, /* 0x80 */
1199 0, 0x2030, 0x0160, 0x2039, 0x015A, 0x0164, 0x017D, 0x0179, /* 0x80 */
1200 0, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, /* 0x90 */
1201 0, 0x2122, 0x0161, 0x203A, 0x015B, 0x0165, 0x017E, 0x017A, /* 0x90 */
1202 0x00A0, 0x02C7, 0x02D8, 0x0141, 0x00A4, 0x0104, 0x00A6, 0x00A7, /* 0xA0 */
1203 0x00A8, 0x00A9, 0x015E, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x017B, /* 0xA0 */
1204 0x00B0, 0x00B1, 0x02DB, 0x0142, 0x00B4, 0x00B5, 0x00B6, 0x00B7, /* 0xB0 */
1205 0x00B8, 0x0105, 0x015F, 0x00BB, 0x013D, 0x02DD, 0x013E, 0x017C, /* 0xB0 */
1206 0x0154, 0x00C1, 0x00C2, 0x0102, 0x00C4, 0x0139, 0x0106, 0x00C7, /* 0xC0 */
1207 0x010C, 0x00C9, 0x0118, 0x00CB, 0x011A, 0x00CD, 0x00CE, 0x010E, /* 0xC0 */
1208 0x0110, 0x0143, 0x0147, 0x00D3, 0x00D4, 0x0150, 0x00D6, 0x00D7, /* 0xD0 */
1209 0x0158, 0x016E, 0x00DA, 0x0170, 0x00DC, 0x00DD, 0x0162, 0x00DF, /* 0xD0 */
1210 0x0155, 0x00E1, 0x00E2, 0x0103, 0x00E4, 0x013A, 0x0107, 0x00E7, /* 0xE0 */
1211 0x010D, 0x00E9, 0x0119, 0x00EB, 0x011B, 0x00ED, 0x00EE, 0x010F, /* 0xE0 */
1212 0x0111, 0x0144, 0x0148, 0x00F3, 0x00F4, 0x0151, 0x00F6, 0x00F7, /* 0xF0 */
1213 0x0159, 0x016F, 0x00FA, 0x0171, 0x00FC, 0x00FD, 0x0163, 0x02D9 /* 0xF0 */
1216 /* ----------------------------------------------------------------------- */
1218 #define MS1250TOCHARTABEX_COUNT 123
1219 static ImplUniCharTabData const aImplMS1250ToCharTabEx[MS1250TOCHARTABEX_COUNT] =
1221 { 0x00A0, 0xA0, 0 },
1222 { 0x00A4, 0xA4, 0 },
1223 { 0x00A6, 0xA6, 0 },
1224 { 0x00A7, 0xA7, 0 },
1225 { 0x00A8, 0xA8, 0 },
1226 { 0x00A9, 0xA9, 0 },
1227 { 0x00AB, 0xAB, 0 },
1228 { 0x00AC, 0xAC, 0 },
1229 { 0x00AD, 0xAD, 0 },
1230 { 0x00AE, 0xAE, 0 },
1231 { 0x00B0, 0xB0, 0 },
1232 { 0x00B1, 0xB1, 0 },
1233 { 0x00B4, 0xB4, 0 },
1234 { 0x00B5, 0xB5, 0 },
1235 { 0x00B6, 0xB6, 0 },
1236 { 0x00B7, 0xB7, 0 },
1237 { 0x00B8, 0xB8, 0 },
1238 { 0x00BB, 0xBB, 0 },
1239 { 0x00C1, 0xC1, 0 },
1240 { 0x00C2, 0xC2, 0 },
1241 { 0x00C4, 0xC4, 0 },
1242 { 0x00C7, 0xC7, 0 },
1243 { 0x00C9, 0xC9, 0 },
1244 { 0x00CB, 0xCB, 0 },
1245 { 0x00CD, 0xCD, 0 },
1246 { 0x00CE, 0xCE, 0 },
1247 { 0x00D3, 0xD3, 0 },
1248 { 0x00D4, 0xD4, 0 },
1249 { 0x00D6, 0xD6, 0 },
1250 { 0x00D7, 0xD7, 0 },
1251 { 0x00DA, 0xDA, 0 },
1252 { 0x00DC, 0xDC, 0 },
1253 { 0x00DD, 0xDD, 0 },
1254 { 0x00DF, 0xDF, 0 },
1255 { 0x00E1, 0xE1, 0 },
1256 { 0x00E2, 0xE2, 0 },
1257 { 0x00E4, 0xE4, 0 },
1258 { 0x00E7, 0xE7, 0 },
1259 { 0x00E9, 0xE9, 0 },
1260 { 0x00EB, 0xEB, 0 },
1261 { 0x00ED, 0xED, 0 },
1262 { 0x00EE, 0xEE, 0 },
1263 { 0x00F3, 0xF3, 0 },
1264 { 0x00F4, 0xF4, 0 },
1265 { 0x00F6, 0xF6, 0 },
1266 { 0x00F7, 0xF7, 0 },
1267 { 0x00FA, 0xFA, 0 },
1268 { 0x00FC, 0xFC, 0 },
1269 { 0x00FD, 0xFD, 0 },
1270 { 0x0102, 0xC3, 0 },
1271 { 0x0103, 0xE3, 0 },
1272 { 0x0104, 0xA5, 0 },
1273 { 0x0105, 0xB9, 0 },
1274 { 0x0106, 0xC6, 0 },
1275 { 0x0107, 0xE6, 0 },
1276 { 0x010C, 0xC8, 0 },
1277 { 0x010D, 0xE8, 0 },
1278 { 0x010E, 0xCF, 0 },
1279 { 0x010F, 0xEF, 0 },
1280 { 0x0110, 0xD0, 0 },
1281 { 0x0111, 0xF0, 0 },
1282 { 0x0118, 0xCA, 0 },
1283 { 0x0119, 0xEA, 0 },
1284 { 0x011A, 0xCC, 0 },
1285 { 0x011B, 0xEC, 0 },
1286 { 0x0139, 0xC5, 0 },
1287 { 0x013A, 0xE5, 0 },
1288 { 0x013D, 0xBC, 0 },
1289 { 0x013E, 0xBE, 0 },
1290 { 0x0141, 0xA3, 0 },
1291 { 0x0142, 0xB3, 0 },
1292 { 0x0143, 0xD1, 0 },
1293 { 0x0144, 0xF1, 0 },
1294 { 0x0147, 0xD2, 0 },
1295 { 0x0148, 0xF2, 0 },
1296 { 0x0150, 0xD5, 0 },
1297 { 0x0151, 0xF5, 0 },
1298 { 0x0154, 0xC0, 0 },
1299 { 0x0155, 0xE0, 0 },
1300 { 0x0158, 0xD8, 0 },
1301 { 0x0159, 0xF8, 0 },
1302 { 0x015A, 0x8C, 0 },
1303 { 0x015B, 0x9C, 0 },
1304 { 0x015E, 0xAA, 0 },
1305 { 0x015F, 0xBA, 0 },
1306 { 0x0160, 0x8A, 0 },
1307 { 0x0161, 0x9A, 0 },
1308 { 0x0162, 0xDE, 0 },
1309 { 0x0163, 0xFE, 0 },
1310 { 0x0164, 0x8D, 0 },
1311 { 0x0165, 0x9D, 0 },
1312 { 0x016E, 0xD9, 0 },
1313 { 0x016F, 0xF9, 0 },
1314 { 0x0170, 0xDB, 0 },
1315 { 0x0171, 0xFB, 0 },
1316 { 0x0179, 0x8F, 0 },
1317 { 0x017A, 0x9F, 0 },
1318 { 0x017B, 0xAF, 0 },
1319 { 0x017C, 0xBF, 0 },
1320 { 0x017D, 0x8E, 0 },
1321 { 0x017E, 0x9E, 0 },
1322 { 0x02C7, 0xA1, 0 },
1323 { 0x02D8, 0xA2, 0 },
1324 { 0x02D9, 0xFF, 0 },
1325 { 0x02DB, 0xB2, 0 },
1326 { 0x02DD, 0xBD, 0 },
1327 { 0x2013, 0x96, 0 },
1328 { 0x2014, 0x97, 0 },
1329 { 0x2018, 0x91, 0 },
1330 { 0x2019, 0x92, 0 },
1331 { 0x201A, 0x82, 0 },
1332 { 0x201C, 0x93, 0 },
1333 { 0x201D, 0x94, 0 },
1334 { 0x201E, 0x84, 0 },
1335 { 0x2020, 0x86, 0 },
1336 { 0x2021, 0x87, 0 },
1337 { 0x2022, 0x95, 0 },
1338 { 0x2026, 0x85, 0 },
1339 { 0x2030, 0x89, 0 },
1340 { 0x2039, 0x8B, 0 },
1341 { 0x203A, 0x9B, 0 },
1342 { 0x20AC, 0x80, 0 },
1346 /* ----------------------------------------------------------------------- */
1348 static ImplByteConvertData const aImplMS1250ByteCvtData =
1350 aImplMS1250ToUniTab,
1352 MS1250UNI_START, MS1250UNI_END,
1353 NOTABUNI_START, NOTABUNI_END,
1356 aImplMS1250ToCharTabEx,
1357 NOTABCHAR_START, NOTABCHAR_END,
1358 NOTABCHAR_START, NOTABCHAR_END,
1359 MS1250TOCHARTABEX_COUNT
1362 /* ----------------------------------------------------------------------- */
1364 static ImplTextEncodingData const aImplMS1250TextEncodingData
1365 = { { &aImplMS1250ByteCvtData,
1366 sal::detail::textenc::convertCharToUnicode,
1367 sal::detail::textenc::convertUnicodeToChar,
1380 RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
1381 /* WIN, SCRIPT_EASTEUROPE, pc code page 852, mac encoding 29 */
1383 /* ======================================================================= */
1386 /* Windows CodePage for Cyrillic */
1387 /* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
1388 /* Convert-Tables: mappings/vendors/micsft/windows/cp1251.txt from 04/15/98 Version 2.01 */
1389 /* Last-Changes from us: */
1391 /* ----------------------------------------------------------------------- */
1393 #define MS1251UNI_START 0x80
1394 #define MS1251UNI_END 0xFF
1395 static sal_uInt16 const aImplMS1251ToUniTab[MS1251UNI_END - MS1251UNI_START + 1] =
1397 /* 0 1 2 3 4 5 6 7 */
1398 /* 8 9 A B C D E F */
1399 0x0402, 0x0403, 0x201A, 0x0453, 0x201E, 0x2026, 0x2020, 0x2021, /* 0x80 */
1400 0x20AC, 0x2030, 0x0409, 0x2039, 0x040A, 0x040C, 0x040B, 0x040F, /* 0x80 */
1401 0x0452, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, /* 0x90 */
1402 0, 0x2122, 0x0459, 0x203A, 0x045A, 0x045C, 0x045B, 0x045F, /* 0x90 */
1403 0x00A0, 0x040E, 0x045E, 0x0408, 0x00A4, 0x0490, 0x00A6, 0x00A7, /* 0xA0 */
1404 0x0401, 0x00A9, 0x0404, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x0407, /* 0xA0 */
1405 0x00B0, 0x00B1, 0x0406, 0x0456, 0x0491, 0x00B5, 0x00B6, 0x00B7, /* 0xB0 */
1406 0x0451, 0x2116, 0x0454, 0x00BB, 0x0458, 0x0405, 0x0455, 0x0457, /* 0xB0 */
1407 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, /* 0xC0 */
1408 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, /* 0xC0 */
1409 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, /* 0xD0 */
1410 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, /* 0xD0 */
1411 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, /* 0xE0 */
1412 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, /* 0xE0 */
1413 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, /* 0xF0 */
1414 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F /* 0xF0 */
1417 /* ----------------------------------------------------------------------- */
1419 #define MS1251CHAR_START 0x0401
1420 #define MS1251CHAR_END 0x045F
1421 static sal_uChar const aImplMS1251ToCharTab[MS1251CHAR_END - MS1251CHAR_START + 1] =
1423 /* 0 1 2 3 4 5 6 7 */
1424 /* 8 9 A B C D E F */
1425 0xA8, 0x80, 0x81, 0xAA, 0xBD, 0xB2, 0xAF, /* 0x0400 */
1426 0xA3, 0x8A, 0x8C, 0x8E, 0x8D, 0, 0xA1, 0x8F, /* 0x0400 */
1427 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, /* 0x0410 */
1428 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, /* 0x0410 */
1429 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, /* 0x0420 */
1430 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, /* 0x0420 */
1431 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, /* 0x0430 */
1432 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, /* 0x0430 */
1433 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, /* 0x0440 */
1434 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF, /* 0x0440 */
1435 0, 0xB8, 0x90, 0x83, 0xBA, 0xBE, 0xB3, 0xBF, /* 0x0450 */
1436 0xBC, 0x9A, 0x9C, 0x9E, 0x9D, 0, 0xA2, 0x9F /* 0x0450 */
1439 /* ----------------------------------------------------------------------- */
1441 #define MS1251TOCHARTABEX_COUNT 35
1442 static ImplUniCharTabData const aImplMS1251ToCharTabEx[MS1251TOCHARTABEX_COUNT] =
1444 { 0x00A0, 0xA0, 0 },
1445 { 0x00A4, 0xA4, 0 },
1446 { 0x00A6, 0xA6, 0 },
1447 { 0x00A7, 0xA7, 0 },
1448 { 0x00A9, 0xA9, 0 },
1449 { 0x00AB, 0xAB, 0 },
1450 { 0x00AC, 0xAC, 0 },
1451 { 0x00AD, 0xAD, 0 },
1452 { 0x00AE, 0xAE, 0 },
1453 { 0x00B0, 0xB0, 0 },
1454 { 0x00B1, 0xB1, 0 },
1455 { 0x00B5, 0xB5, 0 },
1456 { 0x00B6, 0xB6, 0 },
1457 { 0x00B7, 0xB7, 0 },
1458 { 0x00BB, 0xBB, 0 },
1459 { 0x0490, 0xA5, 0 },
1460 { 0x0491, 0xB4, 0 },
1461 { 0x2013, 0x96, 0 },
1462 { 0x2014, 0x97, 0 },
1463 { 0x2018, 0x91, 0 },
1464 { 0x2019, 0x92, 0 },
1465 { 0x201A, 0x82, 0 },
1466 { 0x201C, 0x93, 0 },
1467 { 0x201D, 0x94, 0 },
1468 { 0x201E, 0x84, 0 },
1469 { 0x2020, 0x86, 0 },
1470 { 0x2021, 0x87, 0 },
1471 { 0x2022, 0x95, 0 },
1472 { 0x2026, 0x85, 0 },
1473 { 0x2030, 0x89, 0 },
1474 { 0x2039, 0x8B, 0 },
1475 { 0x203A, 0x9B, 0 },
1476 { 0x20AC, 0x88, 0 },
1477 { 0x2116, 0xB9, 0 },
1481 /* ----------------------------------------------------------------------- */
1483 static ImplByteConvertData const aImplMS1251ByteCvtData =
1485 aImplMS1251ToUniTab,
1487 MS1251UNI_START, MS1251UNI_END,
1488 NOTABUNI_START, NOTABUNI_END,
1489 aImplMS1251ToCharTab,
1491 aImplMS1251ToCharTabEx,
1492 MS1251CHAR_START, MS1251CHAR_END,
1493 NOTABCHAR_START, NOTABCHAR_END,
1494 MS1251TOCHARTABEX_COUNT
1497 /* ----------------------------------------------------------------------- */
1499 static ImplTextEncodingData const aImplMS1251TextEncodingData
1500 = { { &aImplMS1251ByteCvtData,
1501 sal::detail::textenc::convertCharToUnicode,
1502 sal::detail::textenc::convertUnicodeToChar,
1515 RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
1516 /* WIN, SCRIPT_CYRILLIC, pc code page 866 (855?), mac encoding 7 */
1518 /* ======================================================================= */
1521 /* Windows Standard CharSet for Greek */
1522 /* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
1523 /* Convert-Tables: mappings/vendors/micsft/windows/cp1253.txt from 04/15/98 Version 2.01 */
1524 /* Last-Changes from us: */
1526 /* ----------------------------------------------------------------------- */
1528 #define MS1253UNI_START 0x80
1529 #define MS1253UNI_END 0xFF
1530 static sal_uInt16 const aImplMS1253ToUniTab[MS1253UNI_END - MS1253UNI_START + 1] =
1532 /* 0 1 2 3 4 5 6 7 */
1533 /* 8 9 A B C D E F */
1534 0x20AC, 0, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, /* 0x80 */
1535 0, 0x2030, 0, 0x2039, 0, 0, 0, 0, /* 0x80 */
1536 0, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, /* 0x90 */
1537 0, 0x2122, 0, 0x203A, 0, 0, 0, 0, /* 0x90 */
1538 0x00A0, 0x0385, 0x0386, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, /* 0xA0 */
1539 0x00A8, 0x00A9, 0, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x2015, /* 0xA0 */
1540 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x0384, 0x00B5, 0x00B6, 0x00B7, /* 0xB0 */
1541 0x0388, 0x0389, 0x038A, 0x00BB, 0x038C, 0x00BD, 0x038E, 0x038F, /* 0xB0 */
1542 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, /* 0xC0 */
1543 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, /* 0xC0 */
1544 0x03A0, 0x03A1, 0, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, /* 0xD0 */
1545 0x03A8, 0x03A9, 0x03AA, 0x03AB, 0x03AC, 0x03AD, 0x03AE, 0x03AF, /* 0xD0 */
1546 0x03B0, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, /* 0xE0 */
1547 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, /* 0xE0 */
1548 0x03C0, 0x03C1, 0x03C2, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7, /* 0xF0 */
1549 0x03C8, 0x03C9, 0x03CA, 0x03CB, 0x03CC, 0x03CD, 0x03CE, 0 /* 0xF0 */
1552 /* ----------------------------------------------------------------------- */
1554 #define MS1253CHAR_START 0x0384
1555 #define MS1253CHAR_END 0x03CE
1556 static sal_uChar const aImplMS1253ToCharTab[MS1253CHAR_END - MS1253CHAR_START + 1] =
1558 /* 0 1 2 3 4 5 6 7 */
1559 /* 8 9 A B C D E F */
1560 0xB4, 0xA1, 0xA2, 0, /* 0x0380 */
1561 0xB8, 0xB9, 0xBA, 0, 0xBC, 0, 0xBE, 0xBF, /* 0x0380 */
1562 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, /* 0x0390 */
1563 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, /* 0x0390 */
1564 0xD0, 0xD1, 0, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, /* 0x03A0 */
1565 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, /* 0x03A0 */
1566 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, /* 0x03B0 */
1567 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, /* 0x03B0 */
1568 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, /* 0x03C0 */
1569 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE /* 0x03C0 */
1572 /* ----------------------------------------------------------------------- */
1574 #define MS1253TOCHARTABEX_COUNT 40
1575 static ImplUniCharTabData const aImplMS1253ToCharTabEx[MS1253TOCHARTABEX_COUNT] =
1577 { 0x00A0, 0xA0, 0 },
1578 { 0x00A3, 0xA3, 0 },
1579 { 0x00A4, 0xA4, 0 },
1580 { 0x00A5, 0xA5, 0 },
1581 { 0x00A6, 0xA6, 0 },
1582 { 0x00A7, 0xA7, 0 },
1583 { 0x00A8, 0xA8, 0 },
1584 { 0x00A9, 0xA9, 0 },
1585 { 0x00AB, 0xAB, 0 },
1586 { 0x00AC, 0xAC, 0 },
1587 { 0x00AD, 0xAD, 0 },
1588 { 0x00AE, 0xAE, 0 },
1589 { 0x00B0, 0xB0, 0 },
1590 { 0x00B1, 0xB1, 0 },
1591 { 0x00B2, 0xB2, 0 },
1592 { 0x00B3, 0xB3, 0 },
1593 { 0x00B5, 0xB5, 0 },
1594 { 0x00B6, 0xB6, 0 },
1595 { 0x00B7, 0xB7, 0 },
1596 { 0x00BB, 0xBB, 0 },
1597 { 0x00BD, 0xBD, 0 },
1598 { 0x0192, 0x83, 0 },
1599 { 0x2013, 0x96, 0 },
1600 { 0x2014, 0x97, 0 },
1601 { 0x2015, 0xAF, 0 },
1602 { 0x2018, 0x91, 0 },
1603 { 0x2019, 0x92, 0 },
1604 { 0x201A, 0x82, 0 },
1605 { 0x201C, 0x93, 0 },
1606 { 0x201D, 0x94, 0 },
1607 { 0x201E, 0x84, 0 },
1608 { 0x2020, 0x86, 0 },
1609 { 0x2021, 0x87, 0 },
1610 { 0x2022, 0x95, 0 },
1611 { 0x2026, 0x85, 0 },
1612 { 0x2030, 0x89, 0 },
1613 { 0x2039, 0x8B, 0 },
1614 { 0x203A, 0x9B, 0 },
1615 { 0x20AC, 0x80, 0 },
1619 /* ----------------------------------------------------------------------- */
1621 static ImplByteConvertData const aImplMS1253ByteCvtData =
1623 aImplMS1253ToUniTab,
1625 MS1253UNI_START, MS1253UNI_END,
1626 NOTABUNI_START, NOTABUNI_END,
1627 aImplMS1253ToCharTab,
1629 aImplMS1253ToCharTabEx,
1630 MS1253CHAR_START, MS1253CHAR_END,
1631 NOTABCHAR_START, NOTABCHAR_END,
1632 MS1253TOCHARTABEX_COUNT
1635 /* ----------------------------------------------------------------------- */
1637 static ImplTextEncodingData const aImplMS1253TextEncodingData
1638 = { { &aImplMS1253ByteCvtData,
1639 sal::detail::textenc::convertCharToUnicode,
1640 sal::detail::textenc::convertUnicodeToChar,
1653 RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
1654 /* WIN, SCRIPT_GREEK, pc code page 869, mac encoding 6 */
1656 /* ======================================================================= */
1659 /* Windows Standard CharSet for Turkish */
1660 /* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
1661 /* Convert-Tables: mappings/vendors/micsft/windows/cp1254.txt from 04/15/98 Version 2.01 */
1662 /* Last-Changes from us: */
1664 /* ----------------------------------------------------------------------- */
1666 #define MS1254UNI_START 0x80
1667 #define MS1254UNI_END 0xFF
1668 static sal_uInt16 const aImplMS1254ToUniTab[MS1254UNI_END - MS1254UNI_START + 1] =
1670 /* 0 1 2 3 4 5 6 7 */
1671 /* 8 9 A B C D E F */
1672 0x20AC, 0, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, /* 0x80 */
1673 0x02C6, 0x2030, 0x0160, 0x2039, 0x0152, 0, 0, 0, /* 0x80 */
1674 0, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, /* 0x90 */
1675 0x02DC, 0x2122, 0x0161, 0x203A, 0x0153, 0, 0, 0x0178, /* 0x90 */
1676 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, /* 0xA0 */
1677 0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, /* 0xA0 */
1678 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, /* 0xB0 */
1679 0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, /* 0xB0 */
1680 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, /* 0xC0 */
1681 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, /* 0xC0 */
1682 0x011E, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, /* 0xD0 */
1683 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x0130, 0x015E, 0x00DF, /* 0xD0 */
1684 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, /* 0xE0 */
1685 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, /* 0xE0 */
1686 0x011F, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, /* 0xF0 */
1687 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x0131, 0x015F, 0x00FF /* 0xF0 */
1690 /* ----------------------------------------------------------------------- */
1692 #define MS1254CHAR_START 0x00A0
1693 #define MS1254CHAR_END 0x00FF
1694 static sal_uChar const aImplMS1254ToCharTab[MS1254CHAR_END - MS1254CHAR_START + 1] =
1696 /* 0 1 2 3 4 5 6 7 */
1697 /* 8 9 A B C D E F */
1698 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, /* 0x00A0 */
1699 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, /* 0x00A0 */
1700 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, /* 0x00B0 */
1701 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF, /* 0x00B0 */
1702 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, /* 0x00C0 */
1703 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, /* 0x00C0 */
1704 0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, /* 0x00D0 */
1705 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0, 0, 0xDF, /* 0x00D0 */
1706 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, /* 0x00E0 */
1707 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, /* 0x00E0 */
1708 0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, /* 0x00F0 */
1709 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0, 0, 0xFF /* 0x00F0 */
1712 /* ----------------------------------------------------------------------- */
1714 #define MS1254TOCHARTABEX_COUNT 31
1715 static ImplUniCharTabData const aImplMS1254ToCharTabEx[MS1254TOCHARTABEX_COUNT] =
1717 { 0x011E, 0xD0, 0 },
1718 { 0x011F, 0xF0, 0 },
1719 { 0x0130, 0xDD, 0 },
1720 { 0x0131, 0xFD, 0 },
1721 { 0x0152, 0x8C, 0 },
1722 { 0x0153, 0x9C, 0 },
1723 { 0x015E, 0xDE, 0 },
1724 { 0x015F, 0xFE, 0 },
1725 { 0x0160, 0x8A, 0 },
1726 { 0x0161, 0x9A, 0 },
1727 { 0x0178, 0x9F, 0 },
1728 { 0x0192, 0x83, 0 },
1729 { 0x02C6, 0x88, 0 },
1730 { 0x02DC, 0x98, 0 },
1731 { 0x2013, 0x96, 0 },
1732 { 0x2014, 0x97, 0 },
1733 { 0x2018, 0x91, 0 },
1734 { 0x2019, 0x92, 0 },
1735 { 0x201A, 0x82, 0 },
1736 { 0x201C, 0x93, 0 },
1737 { 0x201D, 0x94, 0 },
1738 { 0x201E, 0x84, 0 },
1739 { 0x2020, 0x86, 0 },
1740 { 0x2021, 0x87, 0 },
1741 { 0x2022, 0x95, 0 },
1742 { 0x2026, 0x85, 0 },
1743 { 0x2030, 0x89, 0 },
1744 { 0x2039, 0x8B, 0 },
1745 { 0x203A, 0x9B, 0 },
1746 { 0x20AC, 0x80, 0 },
1750 /* ----------------------------------------------------------------------- */
1752 static ImplByteConvertData const aImplMS1254ByteCvtData =
1754 aImplMS1254ToUniTab,
1756 MS1254UNI_START, MS1254UNI_END,
1757 NOTABUNI_START, NOTABUNI_END,
1758 aImplMS1254ToCharTab,
1760 aImplMS1254ToCharTabEx,
1761 MS1254CHAR_START, MS1254CHAR_END,
1762 NOTABCHAR_START, NOTABCHAR_END,
1763 MS1254TOCHARTABEX_COUNT,
1766 /* ----------------------------------------------------------------------- */
1768 static ImplTextEncodingData const aImplMS1254TextEncodingData
1769 = { { &aImplMS1254ByteCvtData,
1770 sal::detail::textenc::convertCharToUnicode,
1771 sal::detail::textenc::convertUnicodeToChar,
1784 RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
1785 /* WIN, SCRIPT_TURKISH, pc code page 857, mac encoding 35 */
1787 /* ======================================================================= */
1790 /* Windows Standard CharSet for Baltic */
1791 /* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
1792 /* Convert-Tables: mappings/vendors/micsft/windows/cp1257.txt from 04/15/98 Version 2.01 */
1793 /* Last-Changes from us: */
1795 /* ----------------------------------------------------------------------- */
1797 #define MS1257UNI_START 0x80
1798 #define MS1257UNI_END 0xFF
1799 static sal_uInt16 const aImplMS1257ToUniTab[MS1257UNI_END - MS1257UNI_START + 1] =
1801 /* 0 1 2 3 4 5 6 7 */
1802 /* 8 9 A B C D E F */
1803 0x20AC, 0, 0x201A, 0, 0x201E, 0x2026, 0x2020, 0x2021, /* 0x80 */
1804 0, 0x2030, 0, 0x2039, 0, 0x00A8, 0x02C7, 0x00B8, /* 0x80 */
1805 0, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, /* 0x90 */
1806 0, 0x2122, 0, 0x203A, 0, 0x00AF, 0x02DB, 0, /* 0x90 */
1807 0x00A0, 0, 0x00A2, 0x00A3, 0x00A4, 0, 0x00A6, 0x00A7, /* 0xA0 */
1808 0x00D8, 0x00A9, 0x0156, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00C6, /* 0xA0 */
1809 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, /* 0xB0 */
1810 0x00F8, 0x00B9, 0x0157, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00E6, /* 0xB0 */
1811 0x0104, 0x012E, 0x0100, 0x0106, 0x00C4, 0x00C5, 0x0118, 0x0112, /* 0xC0 */
1812 0x010C, 0x00C9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012A, 0x013B, /* 0xC0 */
1813 0x0160, 0x0143, 0x0145, 0x00D3, 0x014C, 0x00D5, 0x00D6, 0x00D7, /* 0xD0 */
1814 0x0172, 0x0141, 0x015A, 0x016A, 0x00DC, 0x017B, 0x017D, 0x00DF, /* 0xD0 */
1815 0x0105, 0x012F, 0x0101, 0x0107, 0x00E4, 0x00E5, 0x0119, 0x0113, /* 0xE0 */
1816 0x010D, 0x00E9, 0x017A, 0x0117, 0x0123, 0x0137, 0x012B, 0x013C, /* 0xE0 */
1817 0x0161, 0x0144, 0x0146, 0x00F3, 0x014D, 0x00F5, 0x00F6, 0x00F7, /* 0xF0 */
1818 0x0173, 0x0142, 0x015B, 0x016B, 0x00FC, 0x017C, 0x017E, 0x02D9 /* 0xF0 */
1821 /* ----------------------------------------------------------------------- */
1823 #define MS1257CHAR_START 0x00A0
1824 #define MS1257CHAR_END 0x017E
1825 static sal_uChar const aImplMS1257ToCharTab[MS1257CHAR_END - MS1257CHAR_START + 1] =
1827 /* 0 1 2 3 4 5 6 7 */
1828 /* 8 9 A B C D E F */
1829 0xA0, 0, 0xA2, 0xA3, 0xA4, 0, 0xA6, 0xA7, /* 0x00A0 */
1830 0x8D, 0xA9, 0, 0xAB, 0xAC, 0xAD, 0xAE, 0x9D, /* 0x00A0 */
1831 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, /* 0x00B0 */
1832 0x8F, 0xB9, 0, 0xBB, 0xBC, 0xBD, 0xBE, 0, /* 0x00B0 */
1833 0, 0, 0, 0, 0xC4, 0xC5, 0xAF, 0, /* 0x00C0 */
1834 0, 0xC9, 0, 0, 0, 0, 0, 0, /* 0x00C0 */
1835 0, 0, 0, 0xD3, 0, 0xD5, 0xD6, 0xD7, /* 0x00D0 */
1836 0xA8, 0, 0, 0, 0xDC, 0, 0, 0xDF, /* 0x00D0 */
1837 0, 0, 0, 0, 0xE4, 0xE5, 0xBF, 0, /* 0x00E0 */
1838 0, 0xE9, 0, 0, 0, 0, 0, 0, /* 0x00E0 */
1839 0, 0, 0, 0xF3, 0, 0xF5, 0xF6, 0xF7, /* 0x00F0 */
1840 0xB8, 0, 0, 0, 0xFC, 0, 0, 0, /* 0x00F0 */
1841 0xC2, 0xE2, 0, 0, 0xC0, 0xE0, 0xC3, 0xE3, /* 0x0100 */
1842 0, 0, 0, 0, 0xC8, 0xE8, 0, 0, /* 0x0100 */
1843 0, 0, 0xC7, 0xE7, 0, 0, 0xCB, 0xEB, /* 0x0110 */
1844 0xC6, 0xE6, 0, 0, 0, 0, 0, 0, /* 0x0110 */
1845 0, 0, 0xCC, 0xEC, 0, 0, 0, 0, /* 0x0120 */
1846 0, 0, 0xCE, 0xEE, 0, 0, 0xC1, 0xE1, /* 0x0120 */
1847 0, 0, 0, 0, 0, 0, 0xCD, 0xED, /* 0x0130 */
1848 0, 0, 0, 0xCF, 0xEF, 0, 0, 0, /* 0x0130 */
1849 0, 0xD9, 0xF9, 0xD1, 0xF1, 0xD2, 0xF2, 0, /* 0x0140 */
1850 0, 0, 0, 0, 0xD4, 0xF4, 0, 0, /* 0x0140 */
1851 0, 0, 0, 0, 0, 0, 0xAA, 0xBA, /* 0x0150 */
1852 0, 0, 0xDA, 0xFA, 0, 0, 0, 0, /* 0x0150 */
1853 0xD0, 0xF0, 0, 0, 0, 0, 0, 0, /* 0x0160 */
1854 0, 0, 0xDB, 0xFB, 0, 0, 0, 0, /* 0x0160 */
1855 0, 0, 0xD8, 0xF8, 0, 0, 0, 0, /* 0x0170 */
1856 0, 0xCA, 0xEA, 0xDD, 0xFD, 0xDE, 0xFE /* 0x0170 */
1859 /* ----------------------------------------------------------------------- */
1861 #define MS1257TOCHARTABEX_COUNT 20
1862 static ImplUniCharTabData const aImplMS1257ToCharTabEx[MS1257TOCHARTABEX_COUNT] =
1864 { 0x02C7, 0x8E, 0 },
1865 { 0x02D9, 0xFF, 0 },
1866 { 0x02DB, 0x9E, 0 },
1867 { 0x2013, 0x96, 0 },
1868 { 0x2014, 0x97, 0 },
1869 { 0x2018, 0x91, 0 },
1870 { 0x2019, 0x92, 0 },
1871 { 0x201A, 0x82, 0 },
1872 { 0x201C, 0x93, 0 },
1873 { 0x201D, 0x94, 0 },
1874 { 0x201E, 0x84, 0 },
1875 { 0x2020, 0x86, 0 },
1876 { 0x2021, 0x87, 0 },
1877 { 0x2022, 0x95, 0 },
1878 { 0x2026, 0x85, 0 },
1879 { 0x2030, 0x89, 0 },
1880 { 0x2039, 0x8B, 0 },
1881 { 0x203A, 0x9B, 0 },
1882 { 0x20AC, 0x80, 0 },
1886 /* ----------------------------------------------------------------------- */
1888 static ImplByteConvertData const aImplMS1257ByteCvtData =
1890 aImplMS1257ToUniTab,
1892 MS1257UNI_START, MS1257UNI_END,
1893 NOTABUNI_START, NOTABUNI_END,
1894 aImplMS1257ToCharTab,
1896 aImplMS1257ToCharTabEx,
1897 MS1257CHAR_START, MS1257CHAR_END,
1898 NOTABCHAR_START, NOTABCHAR_END,
1899 MS1257TOCHARTABEX_COUNT,
1902 /* ----------------------------------------------------------------------- */
1904 static ImplTextEncodingData const aImplMS1257TextEncodingData
1905 = { { &aImplMS1257ByteCvtData,
1906 sal::detail::textenc::convertCharToUnicode,
1907 sal::detail::textenc::convertUnicodeToChar,
1920 RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
1921 /* WIN, SCRIPT_BALTIC, pc code page 775, mac encoding 29 */
1923 /* ======================================================================= */
1926 /* Unix Standard for Eastern European (Latin2) */
1927 /* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme, 0x80-0x9F Control-Caracter wie in Unicode */
1928 /* Convert-Tables: mappings/iso8859/8859-2.txt from 07/27/99 Version 1.0 (based on Unicode 3.0) */
1929 /* Last-Changes from us: */
1931 #define ISO88592UNI_START 0xA0
1932 #define ISO88592UNI_END 0xFF
1933 static sal_uInt16 const aImplISO88592ToUniTab[ISO88592UNI_END - ISO88592UNI_START + 1] =
1935 /* 0 1 2 3 4 5 6 7 */
1936 /* 8 9 A B C D E F */
1937 0x00A0, 0x0104, 0x02D8, 0x0141, 0x00A4, 0x013D, 0x015A, 0x00A7, /* 0xA0 */
1938 0x00A8, 0x0160, 0x015E, 0x0164, 0x0179, 0x00AD, 0x017D, 0x017B, /* 0xA0 */
1939 0x00B0, 0x0105, 0x02DB, 0x0142, 0x00B4, 0x013E, 0x015B, 0x02C7, /* 0xB0 */
1940 0x00B8, 0x0161, 0x015F, 0x0165, 0x017A, 0x02DD, 0x017E, 0x017C, /* 0xB0 */
1941 0x0154, 0x00C1, 0x00C2, 0x0102, 0x00C4, 0x0139, 0x0106, 0x00C7, /* 0xC0 */
1942 0x010C, 0x00C9, 0x0118, 0x00CB, 0x011A, 0x00CD, 0x00CE, 0x010E, /* 0xC0 */
1943 0x0110, 0x0143, 0x0147, 0x00D3, 0x00D4, 0x0150, 0x00D6, 0x00D7, /* 0xD0 */
1944 0x0158, 0x016E, 0x00DA, 0x0170, 0x00DC, 0x00DD, 0x0162, 0x00DF, /* 0xD0 */
1945 0x0155, 0x00E1, 0x00E2, 0x0103, 0x00E4, 0x013A, 0x0107, 0x00E7, /* 0xE0 */
1946 0x010D, 0x00E9, 0x0119, 0x00EB, 0x011B, 0x00ED, 0x00EE, 0x010F, /* 0xE0 */
1947 0x0111, 0x0144, 0x0148, 0x00F3, 0x00F4, 0x0151, 0x00F6, 0x00F7, /* 0xF0 */
1948 0x0159, 0x016F, 0x00FA, 0x0171, 0x00FC, 0x00FD, 0x0163, 0x02D9 /* 0xF0 */
1951 /* ----------------------------------------------------------------------- */
1953 #define ISO88592TOCHARTABEX_COUNT 96
1954 static ImplUniCharTabData const aImplISO88592ToCharTabEx[ISO88592TOCHARTABEX_COUNT] =
1956 { 0x00A0, 0xA0, 0 },
1957 { 0x00A4, 0xA4, 0 },
1958 { 0x00A7, 0xA7, 0 },
1959 { 0x00A8, 0xA8, 0 },
1960 { 0x00AD, 0xAD, 0 },
1961 { 0x00B0, 0xB0, 0 },
1962 { 0x00B4, 0xB4, 0 },
1963 { 0x00B8, 0xB8, 0 },
1964 { 0x00C1, 0xC1, 0 },
1965 { 0x00C2, 0xC2, 0 },
1966 { 0x00C4, 0xC4, 0 },
1967 { 0x00C7, 0xC7, 0 },
1968 { 0x00C9, 0xC9, 0 },
1969 { 0x00CB, 0xCB, 0 },
1970 { 0x00CD, 0xCD, 0 },
1971 { 0x00CE, 0xCE, 0 },
1972 { 0x00D3, 0xD3, 0 },
1973 { 0x00D4, 0xD4, 0 },
1974 { 0x00D6, 0xD6, 0 },
1975 { 0x00D7, 0xD7, 0 },
1976 { 0x00DA, 0xDA, 0 },
1977 { 0x00DC, 0xDC, 0 },
1978 { 0x00DD, 0xDD, 0 },
1979 { 0x00DF, 0xDF, 0 },
1980 { 0x00E1, 0xE1, 0 },
1981 { 0x00E2, 0xE2, 0 },
1982 { 0x00E4, 0xE4, 0 },
1983 { 0x00E7, 0xE7, 0 },
1984 { 0x00E9, 0xE9, 0 },
1985 { 0x00EB, 0xEB, 0 },
1986 { 0x00ED, 0xED, 0 },
1987 { 0x00EE, 0xEE, 0 },
1988 { 0x00F3, 0xF3, 0 },
1989 { 0x00F4, 0xF4, 0 },
1990 { 0x00F6, 0xF6, 0 },
1991 { 0x00F7, 0xF7, 0 },
1992 { 0x00FA, 0xFA, 0 },
1993 { 0x00FC, 0xFC, 0 },
1994 { 0x00FD, 0xFD, 0 },
1995 { 0x0102, 0xC3, 0 },
1996 { 0x0103, 0xE3, 0 },
1997 { 0x0104, 0xA1, 0 },
1998 { 0x0105, 0xB1, 0 },
1999 { 0x0106, 0xC6, 0 },
2000 { 0x0107, 0xE6, 0 },
2001 { 0x010C, 0xC8, 0 },
2002 { 0x010D, 0xE8, 0 },
2003 { 0x010E, 0xCF, 0 },
2004 { 0x010F, 0xEF, 0 },
2005 { 0x0110, 0xD0, 0 },
2006 { 0x0111, 0xF0, 0 },
2007 { 0x0118, 0xCA, 0 },
2008 { 0x0119, 0xEA, 0 },
2009 { 0x011A, 0xCC, 0 },
2010 { 0x011B, 0xEC, 0 },
2011 { 0x0139, 0xC5, 0 },
2012 { 0x013A, 0xE5, 0 },
2013 { 0x013D, 0xA5, 0 },
2014 { 0x013E, 0xB5, 0 },
2015 { 0x0141, 0xA3, 0 },
2016 { 0x0142, 0xB3, 0 },
2017 { 0x0143, 0xD1, 0 },
2018 { 0x0144, 0xF1, 0 },
2019 { 0x0147, 0xD2, 0 },
2020 { 0x0148, 0xF2, 0 },
2021 { 0x0150, 0xD5, 0 },
2022 { 0x0151, 0xF5, 0 },
2023 { 0x0154, 0xC0, 0 },
2024 { 0x0155, 0xE0, 0 },
2025 { 0x0158, 0xD8, 0 },
2026 { 0x0159, 0xF8, 0 },
2027 { 0x015A, 0xA6, 0 },
2028 { 0x015B, 0xB6, 0 },
2029 { 0x015E, 0xAA, 0 },
2030 { 0x015F, 0xBA, 0 },
2031 { 0x0160, 0xA9, 0 },
2032 { 0x0161, 0xB9, 0 },
2033 { 0x0162, 0xDE, 0 },
2034 { 0x0163, 0xFE, 0 },
2035 { 0x0164, 0xAB, 0 },
2036 { 0x0165, 0xBB, 0 },
2037 { 0x016E, 0xD9, 0 },
2038 { 0x016F, 0xF9, 0 },
2039 { 0x0170, 0xDB, 0 },
2040 { 0x0171, 0xFB, 0 },
2041 { 0x0179, 0xAC, 0 },
2042 { 0x017A, 0xBC, 0 },
2043 { 0x017B, 0xAF, 0 },
2044 { 0x017C, 0xBF, 0 },
2045 { 0x017D, 0xAE, 0 },
2046 { 0x017E, 0xBE, 0 },
2047 { 0x02C7, 0xB7, 0 },
2048 { 0x02D8, 0xA2, 0 },
2049 { 0x02D9, 0xFF, 0 },
2050 { 0x02DB, 0xB2, 0 },
2054 /* ----------------------------------------------------------------------- */
2056 static ImplByteConvertData const aImplISO88592ByteCvtData =
2058 aImplISO88592ToUniTab,
2059 aImpl8090SameToUniTab,
2060 ISO88592UNI_START, ISO88592UNI_END,
2061 SAME8090UNI_START, SAME8090UNI_END,
2062 aImpl8090SameToCharTab,
2064 aImplISO88592ToCharTabEx,
2065 SAME8090CHAR_START, SAME8090CHAR_END,
2066 NOTABCHAR_START, NOTABCHAR_END,
2067 ISO88592TOCHARTABEX_COUNT
2070 /* ----------------------------------------------------------------------- */
2072 static ImplTextEncodingData const aImplISO88592TextEncodingData
2073 = { { &aImplISO88592ByteCvtData,
2074 sal::detail::textenc::convertCharToUnicode,
2075 sal::detail::textenc::convertUnicodeToChar,
2088 RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
2089 /* SCRIPT_EASTEUROPE, pc code page 852, mac encoding 29 */
2091 /* ======================================================================= */
2094 /* Latin3 (Esperanto, Maltese, Turkish) */
2095 /* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme, 0x80-0x9F Control-Caracter wie in Unicode */
2096 /* Convert-Tables: mappings/iso8859/8859-3.txt from 07/27/99 Version 1.0 (based on Unicode 3.0) */
2097 /* Last-Changes from us: */
2099 #define ISO88593UNI_START 0xA0
2100 #define ISO88593UNI_END 0xFF
2101 static sal_uInt16 const aImplISO88593ToUniTab[ISO88593UNI_END - ISO88593UNI_START + 1] =
2103 /* 0 1 2 3 4 5 6 7 */
2104 /* 8 9 A B C D E F */
2105 0x00A0, 0x0126, 0x02D8, 0x00A3, 0x00A4, 0, 0x0124, 0x00A7, /* 0xA0 */
2106 0x00A8, 0x0130, 0x015E, 0x011E, 0x0134, 0x00AD, 0, 0x017B, /* 0xA0 */
2107 0x00B0, 0x0127, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x0125, 0x00B7, /* 0xB0 */
2108 0x00B8, 0x0131, 0x015F, 0x011F, 0x0135, 0x00BD, 0, 0x017C, /* 0xB0 */
2109 0x00C0, 0x00C1, 0x00C2, 0, 0x00C4, 0x010A, 0x0108, 0x00C7, /* 0xC0 */
2110 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, /* 0xC0 */
2111 0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x0120, 0x00D6, 0x00D7, /* 0xD0 */
2112 0x011C, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x016C, 0x015C, 0x00DF, /* 0xD0 */
2113 0x00E0, 0x00E1, 0x00E2, 0, 0x00E4, 0x010B, 0x0109, 0x00E7, /* 0xE0 */
2114 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, /* 0xE0 */
2115 0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x0121, 0x00F6, 0x00F7, /* 0xF0 */
2116 0x011D, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x016D, 0x015D, 0x02D9 /* 0xF0 */
2119 /* ----------------------------------------------------------------------- */
2121 #define ISO88593TOCHARTABEX_COUNT 89
2122 static ImplUniCharTabData const aImplISO88593ToCharTabEx[ISO88593TOCHARTABEX_COUNT] =
2124 { 0x00A0, 0xA0, 0 },
2125 { 0x00A3, 0xA3, 0 },
2126 { 0x00A4, 0xA4, 0 },
2127 { 0x00A7, 0xA7, 0 },
2128 { 0x00A8, 0xA8, 0 },
2129 { 0x00AD, 0xAD, 0 },
2130 { 0x00B0, 0xB0, 0 },
2131 { 0x00B2, 0xB2, 0 },
2132 { 0x00B3, 0xB3, 0 },
2133 { 0x00B4, 0xB4, 0 },
2134 { 0x00B5, 0xB5, 0 },
2135 { 0x00B7, 0xB7, 0 },
2136 { 0x00B8, 0xB8, 0 },
2137 { 0x00BD, 0xBD, 0 },
2138 { 0x00C0, 0xC0, 0 },
2139 { 0x00C1, 0xC1, 0 },
2140 { 0x00C2, 0xC2, 0 },
2141 { 0x00C4, 0xC4, 0 },
2142 { 0x00C7, 0xC7, 0 },
2143 { 0x00C8, 0xC8, 0 },
2144 { 0x00C9, 0xC9, 0 },
2145 { 0x00CA, 0xCA, 0 },
2146 { 0x00CB, 0xCB, 0 },
2147 { 0x00CC, 0xCC, 0 },
2148 { 0x00CD, 0xCD, 0 },
2149 { 0x00CE, 0xCE, 0 },
2150 { 0x00CF, 0xCF, 0 },
2151 { 0x00D1, 0xD1, 0 },
2152 { 0x00D2, 0xD2, 0 },
2153 { 0x00D3, 0xD3, 0 },
2154 { 0x00D4, 0xD4, 0 },
2155 { 0x00D6, 0xD6, 0 },
2156 { 0x00D7, 0xD7, 0 },
2157 { 0x00D9, 0xD9, 0 },
2158 { 0x00DA, 0xDA, 0 },
2159 { 0x00DB, 0xDB, 0 },
2160 { 0x00DC, 0xDC, 0 },
2161 { 0x00DF, 0xDF, 0 },
2162 { 0x00E0, 0xE0, 0 },
2163 { 0x00E1, 0xE1, 0 },
2164 { 0x00E2, 0xE2, 0 },
2165 { 0x00E4, 0xE4, 0 },
2166 { 0x00E7, 0xE7, 0 },
2167 { 0x00E8, 0xE8, 0 },
2168 { 0x00E9, 0xE9, 0 },
2169 { 0x00EA, 0xEA, 0 },
2170 { 0x00EB, 0xEB, 0 },
2171 { 0x00EC, 0xEC, 0 },
2172 { 0x00ED, 0xED, 0 },
2173 { 0x00EE, 0xEE, 0 },
2174 { 0x00EF, 0xEF, 0 },
2175 { 0x00F1, 0xF1, 0 },
2176 { 0x00F2, 0xF2, 0 },
2177 { 0x00F3, 0xF3, 0 },
2178 { 0x00F4, 0xF4, 0 },
2179 { 0x00F6, 0xF6, 0 },
2180 { 0x00F7, 0xF7, 0 },
2181 { 0x00F9, 0xF9, 0 },
2182 { 0x00FA, 0xFA, 0 },
2183 { 0x00FB, 0xFB, 0 },
2184 { 0x00FC, 0xFC, 0 },
2185 { 0x0108, 0xC6, 0 },
2186 { 0x0109, 0xE6, 0 },
2187 { 0x010A, 0xC5, 0 },
2188 { 0x010B, 0xE5, 0 },
2189 { 0x011C, 0xD8, 0 },
2190 { 0x011D, 0xF8, 0 },
2191 { 0x011E, 0xAB, 0 },
2192 { 0x011F, 0xBB, 0 },
2193 { 0x0120, 0xD5, 0 },
2194 { 0x0121, 0xF5, 0 },
2195 { 0x0124, 0xA6, 0 },
2196 { 0x0125, 0xB6, 0 },
2197 { 0x0126, 0xA1, 0 },
2198 { 0x0127, 0xB1, 0 },
2199 { 0x0130, 0xA9, 0 },
2200 { 0x0131, 0xB9, 0 },
2201 { 0x0134, 0xAC, 0 },
2202 { 0x0135, 0xBC, 0 },
2203 { 0x015C, 0xDE, 0 },
2204 { 0x015D, 0xFE, 0 },
2205 { 0x015E, 0xAA, 0 },
2206 { 0x015F, 0xBA, 0 },
2207 { 0x016C, 0xDD, 0 },
2208 { 0x016D, 0xFD, 0 },
2209 { 0x017B, 0xAF, 0 },
2210 { 0x017C, 0xBF, 0 },
2211 { 0x02D8, 0xA2, 0 },
2215 /* ----------------------------------------------------------------------- */
2217 static ImplByteConvertData const aImplISO88593ByteCvtData =
2219 aImplISO88593ToUniTab,
2220 aImpl8090SameToUniTab,
2221 ISO88593UNI_START, ISO88593UNI_END,
2222 SAME8090UNI_START, SAME8090UNI_END,
2223 aImpl8090SameToCharTab,
2225 aImplISO88593ToCharTabEx,
2226 SAME8090CHAR_START, SAME8090CHAR_END,
2227 NOTABCHAR_START, NOTABCHAR_END,
2228 ISO88593TOCHARTABEX_COUNT
2231 /* ----------------------------------------------------------------------- */
2233 static ImplTextEncodingData const aImplISO88593TextEncodingData
2234 = { { &aImplISO88593ByteCvtData,
2235 sal::detail::textenc::convertCharToUnicode,
2236 sal::detail::textenc::convertUnicodeToChar,
2249 RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
2250 /* SCRIPT_LATIN, pc code page 850 */
2252 /* ======================================================================= */
2255 /* Latin4 (Estonian, Latvian, Lithuanian) */
2256 /* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme, 0x80-0x9F Control-Caracter wie in Unicode */
2257 /* Convert-Tables: mappings/iso8859/8859-4.txt from 07/27/99 Version 1.0 (based on Unicode 3.0) */
2258 /* Last-Changes from us: */
2260 #define ISO88594UNI_START 0xA0
2261 #define ISO88594UNI_END 0xFF
2262 static sal_uInt16 const aImplISO88594ToUniTab[ISO88594UNI_END - ISO88594UNI_START + 1] =
2264 /* 0 1 2 3 4 5 6 7 */
2265 /* 8 9 A B C D E F */
2266 0x00A0, 0x0104, 0x0138, 0x0156, 0x00A4, 0x0128, 0x013B, 0x00A7, /* 0xA0 */
2267 0x00A8, 0x0160, 0x0112, 0x0122, 0x0166, 0x00AD, 0x017D, 0x00AF, /* 0xA0 */
2268 0x00B0, 0x0105, 0x02DB, 0x0157, 0x00B4, 0x0129, 0x013C, 0x02C7, /* 0xB0 */
2269 0x00B8, 0x0161, 0x0113, 0x0123, 0x0167, 0x014A, 0x017E, 0x014B, /* 0xB0 */
2270 0x0100, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x012E, /* 0xC0 */
2271 0x010C, 0x00C9, 0x0118, 0x00CB, 0x0116, 0x00CD, 0x00CE, 0x012A, /* 0xC0 */
2272 0x0110, 0x0145, 0x014C, 0x0136, 0x00D4, 0x00D5, 0x00D6, 0x00D7, /* 0xD0 */
2273 0x00D8, 0x0172, 0x00DA, 0x00DB, 0x00DC, 0x0168, 0x016A, 0x00DF, /* 0xD0 */
2274 0x0101, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x012F, /* 0xE0 */
2275 0x010D, 0x00E9, 0x0119, 0x00EB, 0x0117, 0x00ED, 0x00EE, 0x012B, /* 0xE0 */
2276 0x0111, 0x0146, 0x014D, 0x0137, 0x00F4, 0x00F5, 0x00F6, 0x00F7, /* 0xF0 */
2277 0x00F8, 0x0173, 0x00FA, 0x00FB, 0x00FC, 0x0169, 0x016B, 0x02D9 /* 0xF0 */
2280 /* ----------------------------------------------------------------------- */
2282 #define ISO88594TOCHARTABEX_COUNT 96
2283 static ImplUniCharTabData const aImplISO88594ToCharTabEx[ISO88594TOCHARTABEX_COUNT] =
2285 { 0x00A0, 0xA0, 0 },
2286 { 0x00A4, 0xA4, 0 },
2287 { 0x00A7, 0xA7, 0 },
2288 { 0x00A8, 0xA8, 0 },
2289 { 0x00AD, 0xAD, 0 },
2290 { 0x00AF, 0xAF, 0 },
2291 { 0x00B0, 0xB0, 0 },
2292 { 0x00B4, 0xB4, 0 },
2293 { 0x00B8, 0xB8, 0 },
2294 { 0x00C1, 0xC1, 0 },
2295 { 0x00C2, 0xC2, 0 },
2296 { 0x00C3, 0xC3, 0 },
2297 { 0x00C4, 0xC4, 0 },
2298 { 0x00C5, 0xC5, 0 },
2299 { 0x00C6, 0xC6, 0 },
2300 { 0x00C9, 0xC9, 0 },
2301 { 0x00CB, 0xCB, 0 },
2302 { 0x00CD, 0xCD, 0 },
2303 { 0x00CE, 0xCE, 0 },
2304 { 0x00D4, 0xD4, 0 },
2305 { 0x00D5, 0xD5, 0 },
2306 { 0x00D6, 0xD6, 0 },
2307 { 0x00D7, 0xD7, 0 },
2308 { 0x00D8, 0xD8, 0 },
2309 { 0x00DA, 0xDA, 0 },
2310 { 0x00DB, 0xDB, 0 },
2311 { 0x00DC, 0xDC, 0 },
2312 { 0x00DF, 0xDF, 0 },
2313 { 0x00E1, 0xE1, 0 },
2314 { 0x00E2, 0xE2, 0 },
2315 { 0x00E3, 0xE3, 0 },
2316 { 0x00E4, 0xE4, 0 },
2317 { 0x00E5, 0xE5, 0 },
2318 { 0x00E6, 0xE6, 0 },
2319 { 0x00E9, 0xE9, 0 },
2320 { 0x00EB, 0xEB, 0 },
2321 { 0x00ED, 0xED, 0 },
2322 { 0x00EE, 0xEE, 0 },
2323 { 0x00F4, 0xF4, 0 },
2324 { 0x00F5, 0xF5, 0 },
2325 { 0x00F6, 0xF6, 0 },
2326 { 0x00F7, 0xF7, 0 },
2327 { 0x00F8, 0xF8, 0 },
2328 { 0x00FA, 0xFA, 0 },
2329 { 0x00FB, 0xFB, 0 },
2330 { 0x00FC, 0xFC, 0 },
2331 { 0x0100, 0xC0, 0 },
2332 { 0x0101, 0xE0, 0 },
2333 { 0x0104, 0xA1, 0 },
2334 { 0x0105, 0xB1, 0 },
2335 { 0x010C, 0xC8, 0 },
2336 { 0x010D, 0xE8, 0 },
2337 { 0x0110, 0xD0, 0 },
2338 { 0x0111, 0xF0, 0 },
2339 { 0x0112, 0xAA, 0 },
2340 { 0x0113, 0xBA, 0 },
2341 { 0x0116, 0xCC, 0 },
2342 { 0x0117, 0xEC, 0 },
2343 { 0x0118, 0xCA, 0 },
2344 { 0x0119, 0xEA, 0 },
2345 { 0x0122, 0xAB, 0 },
2346 { 0x0123, 0xBB, 0 },
2347 { 0x0128, 0xA5, 0 },
2348 { 0x0129, 0xB5, 0 },
2349 { 0x012A, 0xCF, 0 },
2350 { 0x012B, 0xEF, 0 },
2351 { 0x012E, 0xC7, 0 },
2352 { 0x012F, 0xE7, 0 },
2353 { 0x0136, 0xD3, 0 },
2354 { 0x0137, 0xF3, 0 },
2355 { 0x0138, 0xA2, 0 },
2356 { 0x013B, 0xA6, 0 },
2357 { 0x013C, 0xB6, 0 },
2358 { 0x0145, 0xD1, 0 },
2359 { 0x0146, 0xF1, 0 },
2360 { 0x014A, 0xBD, 0 },
2361 { 0x014B, 0xBF, 0 },
2362 { 0x014C, 0xD2, 0 },
2363 { 0x014D, 0xF2, 0 },
2364 { 0x0156, 0xA3, 0 },
2365 { 0x0157, 0xB3, 0 },
2366 { 0x0160, 0xA9, 0 },
2367 { 0x0161, 0xB9, 0 },
2368 { 0x0166, 0xAC, 0 },
2369 { 0x0167, 0xBC, 0 },
2370 { 0x0168, 0xDD, 0 },
2371 { 0x0169, 0xFD, 0 },
2372 { 0x016A, 0xDE, 0 },
2373 { 0x016B, 0xFE, 0 },
2374 { 0x0172, 0xD9, 0 },
2375 { 0x0173, 0xF9, 0 },
2376 { 0x017D, 0xAE, 0 },
2377 { 0x017E, 0xBE, 0 },
2378 { 0x02C7, 0xB7, 0 },
2379 { 0x02D9, 0xFF, 0 },
2383 /* ----------------------------------------------------------------------- */
2385 static ImplByteConvertData const aImplISO88594ByteCvtData =
2387 aImplISO88594ToUniTab,
2388 aImpl8090SameToUniTab,
2389 ISO88594UNI_START, ISO88594UNI_END,
2390 SAME8090UNI_START, SAME8090UNI_END,
2391 aImpl8090SameToCharTab,
2393 aImplISO88594ToCharTabEx,
2394 SAME8090CHAR_START, SAME8090CHAR_END,
2395 NOTABCHAR_START, NOTABCHAR_END,
2396 ISO88594TOCHARTABEX_COUNT
2399 /* ----------------------------------------------------------------------- */
2401 static ImplTextEncodingData const aImplISO88594TextEncodingData
2402 = { { &aImplISO88594ByteCvtData,
2403 sal::detail::textenc::convertCharToUnicode,
2404 sal::detail::textenc::convertUnicodeToChar,
2417 RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
2418 /* SCRIPT_BALTIC, pc code page 775, mac encoding 29 (?) */
2420 /* ======================================================================= */
2423 /* Unix Standard for Cyrillic */
2424 /* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme, 0x80-0x9F Control-Caracter wie in Unicode */
2425 /* Convert-Tables: mappings/iso8859/8859-5.txt from 07/27/99 Version 1.0 (based on Unicode 3.0) */
2426 /* Last-Changes from us: */
2428 #define ISO88595UNI_START 0xA0
2429 #define ISO88595UNI_END 0xFF
2430 static sal_uInt16 const aImplISO88595ToUniTab[ISO88595UNI_END - ISO88595UNI_START + 1] =
2432 /* 0 1 2 3 4 5 6 7 */
2433 /* 8 9 A B C D E F */
2434 0x00A0, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407, /* 0xA0 */
2435 0x0408, 0x0409, 0x040A, 0x040B, 0x040C, 0x00AD, 0x040E, 0x040F, /* 0xA0 */
2436 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, /* 0xB0 */
2437 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, /* 0xB0 */
2438 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, /* 0xC0 */
2439 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, /* 0xC0 */
2440 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, /* 0xD0 */
2441 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, /* 0xD0 */
2442 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, /* 0xE0 */
2443 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F, /* 0xE0 */
2444 0x2116, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457, /* 0xF0 */
2445 0x0458, 0x0459, 0x045A, 0x045B, 0x045C, 0x00A7, 0x045E, 0x045F /* 0xF0 */
2448 /* ----------------------------------------------------------------------- */
2450 #define ISO88595CHAR_START 0x0401
2451 #define ISO88595CHAR_END 0x045F
2452 static sal_uChar const aImplISO88595ToCharTab[ISO88595CHAR_END - ISO88595CHAR_START + 1] =
2454 /* 0 1 2 3 4 5 6 7 */
2455 /* 8 9 A B C D E F */
2456 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, /* 0x0400 */
2457 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0, 0xAE, 0xAF, /* 0x0400 */
2458 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, /* 0x0410 */
2459 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF, /* 0x0410 */
2460 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, /* 0x0420 */
2461 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, /* 0x0420 */
2462 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, /* 0x0430 */
2463 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, /* 0x0430 */
2464 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, /* 0x0440 */
2465 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, /* 0x0440 */
2466 0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, /* 0x0450 */
2467 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0, 0xFE, 0xFF, /* 0x0450 */
2470 /* ----------------------------------------------------------------------- */
2472 #define ISO88595TOCHARTABEX_COUNT 4
2473 static ImplUniCharTabData const aImplISO88595ToCharTabEx[ISO88595TOCHARTABEX_COUNT] =
2475 { 0x00A0, 0xA0, 0 },
2476 { 0x00A7, 0xFD, 0 },
2477 { 0x00AD, 0xAD, 0 },
2481 /* ----------------------------------------------------------------------- */
2483 static ImplByteConvertData const aImplISO88595ByteCvtData =
2485 aImplISO88595ToUniTab,
2486 aImpl8090SameToUniTab,
2487 ISO88595UNI_START, ISO88595UNI_END,
2488 SAME8090UNI_START, SAME8090UNI_END,
2489 aImplISO88595ToCharTab,
2490 aImpl8090SameToCharTab,
2491 aImplISO88595ToCharTabEx,
2492 ISO88595CHAR_START, ISO88595CHAR_END,
2493 SAME8090CHAR_START, SAME8090CHAR_END,
2494 ISO88595TOCHARTABEX_COUNT
2497 /* ----------------------------------------------------------------------- */
2499 static ImplTextEncodingData const aImplISO88595TextEncodingData
2500 = { { &aImplISO88595ByteCvtData,
2501 sal::detail::textenc::convertCharToUnicode,
2502 sal::detail::textenc::convertUnicodeToChar,
2515 RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
2516 /* SCRIPT_CYRILLIC, pc code page 866 (855?), mac encoding 7 */
2518 /* ======================================================================= */
2521 /* Unix Standard for Greek */
2522 /* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme, 0x80-0x9F Control-Caracter wie in Unicode */
2523 /* Convert-Tables: mappings/iso8859/8859-7.txt from 07/27/99 Version 1.0 (based on Unicode 3.0) */
2524 /* Last-Changes from us: */
2526 #define ISO88597UNI_START 0xA0
2527 #define ISO88597UNI_END 0xFF
2528 static sal_uInt16 const aImplISO88597ToUniTab[ISO88597UNI_END - ISO88597UNI_START + 1] =
2530 /* 0 1 2 3 4 5 6 7 */
2531 /* 8 9 A B C D E F */
2532 0x00A0, 0x2018, 0x2019, 0x00A3, 0, 0, 0x00A6, 0x00A7, /* 0xA0 */
2533 0x00A8, 0x00A9, 0, 0x00AB, 0x00AC, 0x00AD, 0, 0x2015, /* 0xA0 */
2534 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x0384, 0x0385, 0x0386, 0x00B7, /* 0xB0 */
2535 0x0388, 0x0389, 0x038A, 0x00BB, 0x038C, 0x00BD, 0x038E, 0x038F, /* 0xB0 */
2536 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, /* 0xC0 */
2537 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, /* 0xC0 */
2538 0x03A0, 0x03A1, 0, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, /* 0xD0 */
2539 0x03A8, 0x03A9, 0x03AA, 0x03AB, 0x03AC, 0x03AD, 0x03AE, 0x03AF, /* 0xD0 */
2540 0x03B0, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, /* 0xE0 */
2541 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, /* 0xE0 */
2542 0x03C0, 0x03C1, 0x03C2, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7, /* 0xF0 */
2543 0x03C8, 0x03C9, 0x03CA, 0x03CB, 0x03CC, 0x03CD, 0x03CE, 0 /* 0xF0 */
2546 /* ----------------------------------------------------------------------- */
2548 #define ISO88597CHAR_START 0x0384
2549 #define ISO88597CHAR_END 0x03CE
2550 static sal_uChar const aImplISO88597ToCharTab[ISO88597CHAR_END - ISO88597CHAR_START + 1] =
2552 /* 0 1 2 3 4 5 6 7 */
2553 /* 8 9 A B C D E F */
2554 0xB4, 0xB5, 0xB6, 0, /* 0x0380 */
2555 0xB8, 0xB9, 0xBA, 0, 0xBC, 0, 0xBE, 0xBF, /* 0x0380 */
2556 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, /* 0x0390 */
2557 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, /* 0x0390 */
2558 0xD0, 0xD1, 0, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, /* 0x03A0 */
2559 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, /* 0x03A0 */
2560 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, /* 0x03B0 */
2561 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, /* 0x03B0 */
2562 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, /* 0x03C0 */
2563 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE /* 0x03C0 */
2566 /* ----------------------------------------------------------------------- */
2568 #define ISO88597TOCHARTABEX_COUNT 19
2569 static ImplUniCharTabData const aImplISO88597ToCharTabEx[ISO88597TOCHARTABEX_COUNT] =
2571 { 0x00A0, 0xA0, 0 },
2572 { 0x00A3, 0xA3, 0 },
2573 { 0x00A6, 0xA6, 0 },
2574 { 0x00A7, 0xA7, 0 },
2575 { 0x00A8, 0xA8, 0 },
2576 { 0x00A9, 0xA9, 0 },
2577 { 0x00AB, 0xAB, 0 },
2578 { 0x00AC, 0xAC, 0 },
2579 { 0x00AD, 0xAD, 0 },
2580 { 0x00B0, 0xB0, 0 },
2581 { 0x00B1, 0xB1, 0 },
2582 { 0x00B2, 0xB2, 0 },
2583 { 0x00B3, 0xB3, 0 },
2584 { 0x00B7, 0xB7, 0 },
2585 { 0x00BB, 0xBB, 0 },
2586 { 0x00BD, 0xBD, 0 },
2587 { 0x2015, 0xAF, 0 },
2588 { 0x2018, 0xA1, 0 },
2592 /* ----------------------------------------------------------------------- */
2594 static ImplByteConvertData const aImplISO88597ByteCvtData =
2596 aImplISO88597ToUniTab,
2597 aImpl8090SameToUniTab,
2598 ISO88597UNI_START, ISO88597UNI_END,
2599 SAME8090UNI_START, SAME8090UNI_END,
2600 aImplISO88597ToCharTab,
2601 aImpl8090SameToCharTab,
2602 aImplISO88597ToCharTabEx,
2603 ISO88597CHAR_START, ISO88597CHAR_END,
2604 SAME8090CHAR_START, SAME8090CHAR_END,
2605 ISO88597TOCHARTABEX_COUNT
2608 /* ----------------------------------------------------------------------- */
2610 static ImplTextEncodingData const aImplISO88597TextEncodingData
2611 = { { &aImplISO88597ByteCvtData,
2612 sal::detail::textenc::convertCharToUnicode,
2613 sal::detail::textenc::convertUnicodeToChar,
2626 RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
2627 /* SCRIPT_GREEK, pc code page 869, mac encoding 6 */
2629 /* ======================================================================= */
2632 /* Latin5 (Turkish) */
2633 /* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme, 0x80-0x9F Control-Caracter wie in Unicode */
2634 /* Convert-Tables: mappings/iso8859/8859-9.txt from 07/27/99 Version 1.0 (based on Unicode 3.0) */
2635 /* Last-Changes from us: */
2637 #define ISO88599UNI_START 0xA0
2638 #define ISO88599UNI_END 0xFF
2639 static sal_uInt16 const aImplISO88599ToUniTab[ISO88599UNI_END - ISO88599UNI_START + 1] =
2641 /* 0 1 2 3 4 5 6 7 */
2642 /* 8 9 A B C D E F */
2643 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, /* 0xA0 */
2644 0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, /* 0xA0 */
2645 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, /* 0xB0 */
2646 0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, /* 0xB0 */
2647 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, /* 0xC0 */
2648 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, /* 0xC0 */
2649 0x011E, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, /* 0xD0 */
2650 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x0130, 0x015E, 0x00DF, /* 0xD0 */
2651 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, /* 0xE0 */
2652 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, /* 0xE0 */
2653 0x011F, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, /* 0xF0 */
2654 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x0131, 0x015F, 0x00FF /* 0xF0 */
2657 /* ----------------------------------------------------------------------- */
2659 #define ISO88599CHAR_START 0x00A0
2660 #define ISO88599CHAR_END 0x00FF
2661 static sal_uChar const aImplISO88599ToCharTab[ISO88599CHAR_END - ISO88599CHAR_START + 1] =
2663 /* 0 1 2 3 4 5 6 7 */
2664 /* 8 9 A B C D E F */
2665 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, /* 0x00A0 */
2666 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, /* 0x00A0 */
2667 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, /* 0x00B0 */
2668 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF, /* 0x00B0 */
2669 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, /* 0x00C0 */
2670 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, /* 0x00C0 */
2671 0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, /* 0x00D0 */
2672 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0, 0, 0xDF, /* 0x00D0 */
2673 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, /* 0x00E0 */
2674 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, /* 0x00E0 */
2675 0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, /* 0x00F0 */
2676 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0, 0, 0xFF /* 0x00F0 */
2679 /* ----------------------------------------------------------------------- */
2681 #define ISO88599TOCHARTABEX_COUNT 6
2682 static ImplUniCharTabData const aImplISO88599ToCharTabEx[ISO88599TOCHARTABEX_COUNT] =
2684 { 0x011E, 0xD0, 0 },
2685 { 0x011F, 0xF0, 0 },
2686 { 0x0130, 0xDD, 0 },
2687 { 0x0131, 0xFD, 0 },
2688 { 0x015E, 0xDE, 0 },
2692 /* ----------------------------------------------------------------------- */
2694 static ImplByteConvertData const aImplISO88599ByteCvtData =
2696 aImplISO88599ToUniTab,
2697 aImpl8090SameToUniTab,
2698 ISO88599UNI_START, ISO88599UNI_END,
2699 SAME8090UNI_START, SAME8090UNI_END,
2700 aImplISO88599ToCharTab,
2701 aImpl8090SameToCharTab,
2702 aImplISO88599ToCharTabEx,
2703 ISO88599CHAR_START, ISO88599CHAR_END,
2704 SAME8090CHAR_START, SAME8090CHAR_END,
2705 ISO88599TOCHARTABEX_COUNT
2708 /* ----------------------------------------------------------------------- */
2710 static ImplTextEncodingData const aImplISO88599TextEncodingData
2711 = { { &aImplISO88599ByteCvtData,
2712 sal::detail::textenc::convertCharToUnicode,
2713 sal::detail::textenc::convertUnicodeToChar,
2726 RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
2727 /* SCRIPT_TURKISH, pc code page 857, mac encoding 35 */
2729 /* ======================================================================= */
2733 /* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme, 0x80-0x9F Control-Caracter wie in Unicode */
2734 /* Convert-Tables: mappings/iso8859/8859-10.txt from 07/27/99 Version 1.0 (based on Unicode 3.0) */
2735 /* Last-Changes from us: */
2737 #define ISO885910UNI_START 0xA0
2738 #define ISO885910UNI_END 0xFF
2739 static sal_uInt16 const aImplISO885910ToUniTab[ISO885910UNI_END - ISO885910UNI_START + 1] =
2741 /* 0 1 2 3 4 5 6 7 */
2742 /* 8 9 A B C D E F */
2743 0x00A0, 0x0104, 0x0112, 0x0122, 0x012A, 0x0128, 0x0136, 0x00A7, /* 0xA0 */
2744 0x013B, 0x0110, 0x0160, 0x0166, 0x017D, 0x00AD, 0x016A, 0x014A, /* 0xA0 */
2745 0x00B0, 0x0105, 0x0113, 0x0123, 0x012B, 0x0129, 0x0137, 0x00B7, /* 0xB0 */
2746 0x013C, 0x0111, 0x0161, 0x0167, 0x017E, 0x2015, 0x016B, 0x014B, /* 0xB0 */
2747 0x0100, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x012E, /* 0xC0 */
2748 0x010C, 0x00C9, 0x0118, 0x00CB, 0x0116, 0x00CD, 0x00CE, 0x00CF, /* 0xC0 */
2749 0x00D0, 0x0145, 0x014C, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x0168, /* 0xD0 */
2750 0x00D8, 0x0172, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF, /* 0xD0 */
2751 0x0101, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x012F, /* 0xE0 */
2752 0x010D, 0x00E9, 0x0119, 0x00EB, 0x0117, 0x00ED, 0x00EE, 0x00EF, /* 0xE0 */
2753 0x00F0, 0x0146, 0x014D, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x0169, /* 0xF0 */
2754 0x00F8, 0x0173, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x0138 /* 0xF0 */
2757 /* ----------------------------------------------------------------------- */
2759 #define ISO885910CHAR_START 0x00C1
2760 #define ISO885910CHAR_END 0x00FE
2761 static sal_uChar const aImplISO885910ToCharTab[ISO885910CHAR_END - ISO885910CHAR_START + 1] =
2763 /* 0 1 2 3 4 5 6 7 */
2764 /* 8 9 A B C D E F */
2765 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0, /* 0x00C0 */
2766 0, 0xC9, 0, 0xCB, 0, 0xCD, 0xCE, 0xCF, /* 0x00C0 */
2767 0xD0, 0, 0, 0xD3, 0xD4, 0xD5, 0xD6, 0, /* 0x00D0 */
2768 0xD8, 0, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, /* 0x00D0 */
2769 0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0, /* 0x00E0 */
2770 0, 0xE9, 0, 0xEB, 0, 0xED, 0xEE, 0xEF, /* 0x00E0 */
2771 0xF0, 0, 0, 0xF3, 0xF4, 0xF5, 0xF6, 0, /* 0x00F0 */
2772 0xF8, 0, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE /* 0x00F0 */
2775 /* ----------------------------------------------------------------------- */
2777 #define ISO885910TOCHARTABEX_COUNT 51
2778 static ImplUniCharTabData const aImplISO885910ToCharTabEx[ISO885910TOCHARTABEX_COUNT] =
2780 { 0x00A0, 0xA0, 0 },
2781 { 0x00A7, 0xA7, 0 },
2782 { 0x00AD, 0xAD, 0 },
2783 { 0x00B0, 0xB0, 0 },
2784 { 0x00B7, 0xB7, 0 },
2785 { 0x0100, 0xC0, 0 },
2786 { 0x0101, 0xE0, 0 },
2787 { 0x0104, 0xA1, 0 },
2788 { 0x0105, 0xB1, 0 },
2789 { 0x010C, 0xC8, 0 },
2790 { 0x010D, 0xE8, 0 },
2791 { 0x0110, 0xA9, 0 },
2792 { 0x0111, 0xB9, 0 },
2793 { 0x0112, 0xA2, 0 },
2794 { 0x0113, 0xB2, 0 },
2795 { 0x0116, 0xCC, 0 },
2796 { 0x0117, 0xEC, 0 },
2797 { 0x0118, 0xCA, 0 },
2798 { 0x0119, 0xEA, 0 },
2799 { 0x0122, 0xA3, 0 },
2800 { 0x0123, 0xB3, 0 },
2801 { 0x0128, 0xA5, 0 },
2802 { 0x0129, 0xB5, 0 },
2803 { 0x012A, 0xA4, 0 },
2804 { 0x012B, 0xB4, 0 },
2805 { 0x012E, 0xC7, 0 },
2806 { 0x012F, 0xE7, 0 },
2807 { 0x0136, 0xA6, 0 },
2808 { 0x0137, 0xB6, 0 },
2809 { 0x0138, 0xFF, 0 },
2810 { 0x013B, 0xA8, 0 },
2811 { 0x013C, 0xB8, 0 },
2812 { 0x0145, 0xD1, 0 },
2813 { 0x0146, 0xF1, 0 },
2814 { 0x014A, 0xAF, 0 },
2815 { 0x014B, 0xBF, 0 },
2816 { 0x014C, 0xD2, 0 },
2817 { 0x014D, 0xF2, 0 },
2818 { 0x0160, 0xAA, 0 },
2819 { 0x0161, 0xBA, 0 },
2820 { 0x0166, 0xAB, 0 },
2821 { 0x0167, 0xBB, 0 },
2822 { 0x0168, 0xD7, 0 },
2823 { 0x0169, 0xF7, 0 },
2824 { 0x016A, 0xAE, 0 },
2825 { 0x016B, 0xBE, 0 },
2826 { 0x0172, 0xD9, 0 },
2827 { 0x0173, 0xF9, 0 },
2828 { 0x017D, 0xAC, 0 },
2829 { 0x017E, 0xBC, 0 },
2833 /* ----------------------------------------------------------------------- */
2835 static ImplByteConvertData const aImplISO885910ByteCvtData =
2837 aImplISO885910ToUniTab,
2838 aImpl8090SameToUniTab,
2839 ISO885910UNI_START, ISO885910UNI_END,
2840 SAME8090UNI_START, SAME8090UNI_END,
2841 aImplISO885910ToCharTab,
2842 aImpl8090SameToCharTab,
2843 aImplISO885910ToCharTabEx,
2844 ISO885910CHAR_START, ISO885910CHAR_END,
2845 SAME8090CHAR_START, SAME8090CHAR_END,
2846 ISO885910TOCHARTABEX_COUNT
2849 /* ----------------------------------------------------------------------- */
2851 static ImplTextEncodingData const aImplISO885910TextEncodingData
2852 = { { &aImplISO885910ByteCvtData,
2853 sal::detail::textenc::convertCharToUnicode,
2854 sal::detail::textenc::convertUnicodeToChar,
2867 RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
2868 /* SCRIPT_EASTEUROPE, pc code page 852, mac encoding 29 */
2870 /* ======================================================================= */
2874 /* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme, 0x80-0x9F Control-Caracter wie in Unicode */
2875 /* Convert-Tables: mappings/iso8859/8859-13.txt from 07/27/99 Version 1.0 (based on Unicode 3.0) */
2876 /* Last-Changes from us: */
2878 #define ISO885913UNI_START 0xA0
2879 #define ISO885913UNI_END 0xFF
2880 static sal_uInt16 const aImplISO885913ToUniTab[ISO885913UNI_END - ISO885913UNI_START + 1] =
2882 /* 0 1 2 3 4 5 6 7 */
2883 /* 8 9 A B C D E F */
2884 0x00A0, 0x201D, 0x00A2, 0x00A3, 0x00A4, 0x201E, 0x00A6, 0x00A7, /* 0xA0 */
2885 0x00D8, 0x00A9, 0x0156, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00C6, /* 0xA0 */
2886 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x201C, 0x00B5, 0x00B6, 0x00B7, /* 0xB0 */
2887 0x00F8, 0x00B9, 0x0157, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00E6, /* 0xB0 */
2888 0x0104, 0x012E, 0x0100, 0x0106, 0x00C4, 0x00C5, 0x0118, 0x0112, /* 0xC0 */
2889 0x010C, 0x00C9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012A, 0x013B, /* 0xC0 */
2890 0x0160, 0x0143, 0x0145, 0x00D3, 0x014C, 0x00D5, 0x00D6, 0x00D7, /* 0xD0 */
2891 0x0172, 0x0141, 0x015A, 0x016A, 0x00DC, 0x017B, 0x017D, 0x00DF, /* 0xD0 */
2892 0x0105, 0x012F, 0x0101, 0x0107, 0x00E4, 0x00E5, 0x0119, 0x0113, /* 0xE0 */
2893 0x010D, 0x00E9, 0x017A, 0x0117, 0x0123, 0x0137, 0x012B, 0x013C, /* 0xE0 */
2894 0x0161, 0x0144, 0x0146, 0x00F3, 0x014D, 0x00F5, 0x00F6, 0x00F7, /* 0xF0 */
2895 0x0173, 0x0142, 0x015B, 0x016B, 0x00FC, 0x017C, 0x017E, 0x2019 /* 0xF0 */
2898 /* ----------------------------------------------------------------------- */
2900 #define ISO885913TOCHARTABEX_COUNT 96
2901 static ImplUniCharTabData const aImplISO885913ToCharTabEx[ISO885913TOCHARTABEX_COUNT] =
2903 { 0x00A0, 0xA0, 0 },
2904 { 0x00A2, 0xA2, 0 },
2905 { 0x00A3, 0xA3, 0 },
2906 { 0x00A4, 0xA4, 0 },
2907 { 0x00A6, 0xA6, 0 },
2908 { 0x00A7, 0xA7, 0 },
2909 { 0x00A9, 0xA9, 0 },
2910 { 0x00AB, 0xAB, 0 },
2911 { 0x00AC, 0xAC, 0 },
2912 { 0x00AD, 0xAD, 0 },
2913 { 0x00AE, 0xAE, 0 },
2914 { 0x00B0, 0xB0, 0 },
2915 { 0x00B1, 0xB1, 0 },
2916 { 0x00B2, 0xB2, 0 },
2917 { 0x00B3, 0xB3, 0 },
2918 { 0x00B5, 0xB5, 0 },
2919 { 0x00B6, 0xB6, 0 },
2920 { 0x00B7, 0xB7, 0 },
2921 { 0x00B9, 0xB9, 0 },
2922 { 0x00BB, 0xBB, 0 },
2923 { 0x00BC, 0xBC, 0 },
2924 { 0x00BD, 0xBD, 0 },
2925 { 0x00BE, 0xBE, 0 },
2926 { 0x00C4, 0xC4, 0 },
2927 { 0x00C5, 0xC5, 0 },
2928 { 0x00C6, 0xAF, 0 },
2929 { 0x00C9, 0xC9, 0 },
2930 { 0x00D3, 0xD3, 0 },
2931 { 0x00D5, 0xD5, 0 },
2932 { 0x00D6, 0xD6, 0 },
2933 { 0x00D7, 0xD7, 0 },
2934 { 0x00D8, 0xA8, 0 },
2935 { 0x00DC, 0xDC, 0 },
2936 { 0x00DF, 0xDF, 0 },
2937 { 0x00E4, 0xE4, 0 },
2938 { 0x00E5, 0xE5, 0 },
2939 { 0x00E6, 0xBF, 0 },
2940 { 0x00E9, 0xE9, 0 },
2941 { 0x00F3, 0xF3, 0 },
2942 { 0x00F5, 0xF5, 0 },
2943 { 0x00F6, 0xF6, 0 },
2944 { 0x00F7, 0xF7, 0 },
2945 { 0x00F8, 0xB8, 0 },
2946 { 0x00FC, 0xFC, 0 },
2947 { 0x0100, 0xC2, 0 },
2948 { 0x0101, 0xE2, 0 },
2949 { 0x0104, 0xC0, 0 },
2950 { 0x0105, 0xE0, 0 },
2951 { 0x0106, 0xC3, 0 },
2952 { 0x0107, 0xE3, 0 },
2953 { 0x010C, 0xC8, 0 },
2954 { 0x010D, 0xE8, 0 },
2955 { 0x0112, 0xC7, 0 },
2956 { 0x0113, 0xE7, 0 },
2957 { 0x0116, 0xCB, 0 },
2958 { 0x0117, 0xEB, 0 },
2959 { 0x0118, 0xC6, 0 },
2960 { 0x0119, 0xE6, 0 },
2961 { 0x0122, 0xCC, 0 },
2962 { 0x0123, 0xEC, 0 },
2963 { 0x012A, 0xCE, 0 },
2964 { 0x012B, 0xEE, 0 },
2965 { 0x012E, 0xC1, 0 },
2966 { 0x012F, 0xE1, 0 },
2967 { 0x0136, 0xCD, 0 },
2968 { 0x0137, 0xED, 0 },
2969 { 0x013B, 0xCF, 0 },
2970 { 0x013C, 0xEF, 0 },
2971 { 0x0141, 0xD9, 0 },
2972 { 0x0142, 0xF9, 0 },
2973 { 0x0143, 0xD1, 0 },
2974 { 0x0144, 0xF1, 0 },
2975 { 0x0145, 0xD2, 0 },
2976 { 0x0146, 0xF2, 0 },
2977 { 0x014C, 0xD4, 0 },
2978 { 0x014D, 0xF4, 0 },
2979 { 0x0156, 0xAA, 0 },
2980 { 0x0157, 0xBA, 0 },
2981 { 0x015A, 0xDA, 0 },
2982 { 0x015B, 0xFA, 0 },
2983 { 0x0160, 0xD0, 0 },
2984 { 0x0161, 0xF0, 0 },
2985 { 0x016A, 0xDB, 0 },
2986 { 0x016B, 0xFB, 0 },
2987 { 0x0172, 0xD8, 0 },
2988 { 0x0173, 0xF8, 0 },
2989 { 0x0179, 0xCA, 0 },
2990 { 0x017A, 0xEA, 0 },
2991 { 0x017B, 0xDD, 0 },
2992 { 0x017C, 0xFD, 0 },
2993 { 0x017D, 0xDE, 0 },
2994 { 0x017E, 0xFE, 0 },
2995 { 0x2019, 0xFF, 0 },
2996 { 0x201C, 0xB4, 0 },
2997 { 0x201D, 0xA1, 0 },
3001 /* ----------------------------------------------------------------------- */
3003 static ImplByteConvertData const aImplISO885913ByteCvtData =
3005 aImplISO885913ToUniTab,
3006 aImpl8090SameToUniTab,
3007 ISO885913UNI_START, ISO885913UNI_END,
3008 SAME8090UNI_START, SAME8090UNI_END,
3009 aImpl8090SameToCharTab,
3011 aImplISO885913ToCharTabEx,
3012 SAME8090CHAR_START, SAME8090CHAR_END,
3013 NOTABCHAR_START, NOTABCHAR_END,
3014 ISO885913TOCHARTABEX_COUNT
3017 /* ----------------------------------------------------------------------- */
3019 static ImplTextEncodingData const aImplISO885913TextEncodingData
3020 = { { &aImplISO885913ByteCvtData,
3021 sal::detail::textenc::convertCharToUnicode,
3022 sal::detail::textenc::convertUnicodeToChar,
3035 RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
3036 /* SCRIPT_EASTEUROPE, pc code page 852, mac encoding 29 */
3038 /* ======================================================================= */
3040 /* APPLE-CentEuro */
3041 /* Apple CharSet for Eastern Europa (Polish, Czech, Slovak, Hungarian, Estonian, Latvian, Lithuanian) */
3042 /* 1-Byte, 0x00-0x7F ASCII, jedoch eigentich Sonderzeichen zwischen 0x00-0x1F */
3043 /* die wir aber nicht beruecksichtigen */
3044 /* Convert-Tables: mappings/vendors/apple/centeuro.txt from 02/05/98 */
3045 /* Last-Changes from us: */
3047 #define APPLECENTEUROUNI_START 0x80
3048 #define APPLECENTEUROUNI_END 0xFF
3049 static sal_uInt16 const aImplAPPLECENTEUROToUniTab[APPLECENTEUROUNI_END - APPLECENTEUROUNI_START + 1] =
3051 /* 0 1 2 3 4 5 6 7 */
3052 /* 8 9 A B C D E F */
3053 0x00C4, 0x0100, 0x0101, 0x00C9, 0x0104, 0x00D6, 0x00DC, 0x00E1, /* 0x80 */
3054 0x0105, 0x010C, 0x00E4, 0x010D, 0x0106, 0x0107, 0x00E9, 0x0179, /* 0x80 */
3055 0x017A, 0x010E, 0x00ED, 0x010F, 0x0112, 0x0113, 0x0116, 0x00F3, /* 0x90 */
3056 0x0117, 0x00F4, 0x00F6, 0x00F5, 0x00FA, 0x011A, 0x011B, 0x00FC, /* 0x90 */
3057 0x2020, 0x00B0, 0x0118, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x00DF, /* 0xA0 */
3058 0x00AE, 0x00A9, 0x2122, 0x0119, 0x00A8, 0x2260, 0x0123, 0x012E, /* 0xA0 */
3059 0x012F, 0x012A, 0x2264, 0x2265, 0x012B, 0x0136, 0x2202, 0x2211, /* 0xB0 */
3060 0x0142, 0x013B, 0x013C, 0x013D, 0x013E, 0x0139, 0x013A, 0x0145, /* 0xB0 */
3061 0x0146, 0x0143, 0x00AC, 0x221A, 0x0144, 0x0147, 0x2206, 0x00AB, /* 0xC0 */
3062 0x00BB, 0x2026, 0x00A0, 0x0148, 0x0150, 0x00D5, 0x0151, 0x014C, /* 0xC0 */
3063 0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x25CA, /* 0xD0 */
3064 0x014D, 0x0154, 0x0155, 0x0158, 0x2039, 0x203A, 0x0159, 0x0156, /* 0xD0 */
3065 0x0157, 0x0160, 0x201A, 0x201E, 0x0161, 0x015A, 0x015B, 0x00C1, /* 0xE0 */
3066 0x0164, 0x0165, 0x00CD, 0x017D, 0x017E, 0x016A, 0x00D3, 0x00D4, /* 0xE0 */
3067 0x016B, 0x016E, 0x00DA, 0x016F, 0x0170, 0x0171, 0x0172, 0x0173, /* 0xF0 */
3068 0x00DD, 0x00FD, 0x0137, 0x017B, 0x0141, 0x017C, 0x0122, 0x02C7 /* 0xF0 */
3071 /* ----------------------------------------------------------------------- */
3073 #define APPLECENTEUROTOCHARTABEX_COUNT 128
3074 static ImplUniCharTabData const aImplAPPLECENTEUROToCharTabEx[APPLECENTEUROTOCHARTABEX_COUNT] =
3076 { 0x00A0, 0xCA, 0 },
3077 { 0x00A3, 0xA3, 0 },
3078 { 0x00A7, 0xA4, 0 },
3079 { 0x00A8, 0xAC, 0 },
3080 { 0x00A9, 0xA9, 0 },
3081 { 0x00AB, 0xC7, 0 },
3082 { 0x00AC, 0xC2, 0 },
3083 { 0x00AE, 0xA8, 0 },
3084 { 0x00B0, 0xA1, 0 },
3085 { 0x00B6, 0xA6, 0 },
3086 { 0x00BB, 0xC8, 0 },
3087 { 0x00C1, 0xE7, 0 },
3088 { 0x00C4, 0x80, 0 },
3089 { 0x00C9, 0x83, 0 },
3090 { 0x00CD, 0xEA, 0 },
3091 { 0x00D3, 0xEE, 0 },
3092 { 0x00D4, 0xEF, 0 },
3093 { 0x00D5, 0xCD, 0 },
3094 { 0x00D6, 0x85, 0 },
3095 { 0x00DA, 0xF2, 0 },
3096 { 0x00DC, 0x86, 0 },
3097 { 0x00DD, 0xF8, 0 },
3098 { 0x00DF, 0xA7, 0 },
3099 { 0x00E1, 0x87, 0 },
3100 { 0x00E4, 0x8A, 0 },
3101 { 0x00E9, 0x8E, 0 },
3102 { 0x00ED, 0x92, 0 },
3103 { 0x00F3, 0x97, 0 },
3104 { 0x00F4, 0x99, 0 },
3105 { 0x00F5, 0x9B, 0 },
3106 { 0x00F6, 0x9A, 0 },
3107 { 0x00F7, 0xD6, 0 },
3108 { 0x00FA, 0x9C, 0 },
3109 { 0x00FC, 0x9F, 0 },
3110 { 0x00FD, 0xF9, 0 },
3111 { 0x0100, 0x81, 0 },
3112 { 0x0101, 0x82, 0 },
3113 { 0x0104, 0x84, 0 },
3114 { 0x0105, 0x88, 0 },
3115 { 0x0106, 0x8C, 0 },
3116 { 0x0107, 0x8D, 0 },
3117 { 0x010C, 0x89, 0 },
3118 { 0x010D, 0x8B, 0 },
3119 { 0x010E, 0x91, 0 },
3120 { 0x010F, 0x93, 0 },
3121 { 0x0112, 0x94, 0 },
3122 { 0x0113, 0x95, 0 },
3123 { 0x0116, 0x96, 0 },
3124 { 0x0117, 0x98, 0 },
3125 { 0x0118, 0xA2, 0 },
3126 { 0x0119, 0xAB, 0 },
3127 { 0x011A, 0x9D, 0 },
3128 { 0x011B, 0x9E, 0 },
3129 { 0x0122, 0xFE, 0 },
3130 { 0x0123, 0xAE, 0 },
3131 { 0x012A, 0xB1, 0 },
3132 { 0x012B, 0xB4, 0 },
3133 { 0x012E, 0xAF, 0 },
3134 { 0x012F, 0xB0, 0 },
3135 { 0x0136, 0xB5, 0 },
3136 { 0x0137, 0xFA, 0 },
3137 { 0x0139, 0xBD, 0 },
3138 { 0x013A, 0xBE, 0 },
3139 { 0x013B, 0xB9, 0 },
3140 { 0x013C, 0xBA, 0 },
3141 { 0x013D, 0xBB, 0 },
3142 { 0x013E, 0xBC, 0 },
3143 { 0x0141, 0xFC, 0 },
3144 { 0x0142, 0xB8, 0 },
3145 { 0x0143, 0xC1, 0 },
3146 { 0x0144, 0xC4, 0 },
3147 { 0x0145, 0xBF, 0 },
3148 { 0x0146, 0xC0, 0 },
3149 { 0x0147, 0xC5, 0 },
3150 { 0x0148, 0xCB, 0 },
3151 { 0x014C, 0xCF, 0 },
3152 { 0x014D, 0xD8, 0 },
3153 { 0x0150, 0xCC, 0 },
3154 { 0x0151, 0xCE, 0 },
3155 { 0x0154, 0xD9, 0 },
3156 { 0x0155, 0xDA, 0 },
3157 { 0x0156, 0xDF, 0 },
3158 { 0x0157, 0xE0, 0 },
3159 { 0x0158, 0xDB, 0 },
3160 { 0x0159, 0xDE, 0 },
3161 { 0x015A, 0xE5, 0 },
3162 { 0x015B, 0xE6, 0 },
3163 { 0x0160, 0xE1, 0 },
3164 { 0x0161, 0xE4, 0 },
3165 { 0x0164, 0xE8, 0 },
3166 { 0x0165, 0xE9, 0 },
3167 { 0x016A, 0xED, 0 },
3168 { 0x016B, 0xF0, 0 },
3169 { 0x016E, 0xF1, 0 },
3170 { 0x016F, 0xF3, 0 },
3171 { 0x0170, 0xF4, 0 },
3172 { 0x0171, 0xF5, 0 },
3173 { 0x0172, 0xF6, 0 },
3174 { 0x0173, 0xF7, 0 },
3175 { 0x0179, 0x8F, 0 },
3176 { 0x017A, 0x90, 0 },
3177 { 0x017B, 0xFB, 0 },
3178 { 0x017C, 0xFD, 0 },
3179 { 0x017D, 0xEB, 0 },
3180 { 0x017E, 0xEC, 0 },
3181 { 0x02C7, 0xFF, 0 },
3182 { 0x2013, 0xD0, 0 },
3183 { 0x2014, 0xD1, 0 },
3184 { 0x2018, 0xD4, 0 },
3185 { 0x2019, 0xD5, 0 },
3186 { 0x201A, 0xE2, 0 },
3187 { 0x201C, 0xD2, 0 },
3188 { 0x201D, 0xD3, 0 },
3189 { 0x201E, 0xE3, 0 },
3190 { 0x2020, 0xA0, 0 },
3191 { 0x2022, 0xA5, 0 },
3192 { 0x2026, 0xC9, 0 },
3193 { 0x2039, 0xDC, 0 },
3194 { 0x203A, 0xDD, 0 },
3195 { 0x2122, 0xAA, 0 },
3196 { 0x2202, 0xB6, 0 },
3197 { 0x2206, 0xC6, 0 },
3198 { 0x2211, 0xB7, 0 },
3199 { 0x221A, 0xC3, 0 },
3200 { 0x2260, 0xAD, 0 },
3201 { 0x2264, 0xB2, 0 },
3202 { 0x2265, 0xB3, 0 },
3206 /* ----------------------------------------------------------------------- */
3208 static ImplByteConvertData const aImplAPPLECENTEUROByteCvtData =
3210 aImplAPPLECENTEUROToUniTab,
3212 APPLECENTEUROUNI_START, APPLECENTEUROUNI_END,
3213 NOTABUNI_START, NOTABUNI_END,
3216 aImplAPPLECENTEUROToCharTabEx,
3217 NOTABCHAR_START, NOTABCHAR_END,
3218 NOTABCHAR_START, NOTABCHAR_END,
3219 APPLECENTEUROTOCHARTABEX_COUNT
3222 /* ----------------------------------------------------------------------- */
3224 static ImplTextEncodingData const aImplAPPLECENTEUROTextEncodingData
3225 = { { &aImplAPPLECENTEUROByteCvtData,
3226 sal::detail::textenc::convertCharToUnicode,
3227 sal::detail::textenc::convertUnicodeToChar,
3240 RTL_TEXTENCODING_INFO_ASCII };
3241 /* MAC, SCRIPT_EASTEUROPE, pc code page 852, mac encoding 29 */
3243 /* ======================================================================= */
3245 /* APPLE-Croatian */
3246 /* Standard Apple CharSet for Croatian */
3247 /* 1-Byte, 0x00-0x7F ASCII, jedoch eigentich Sonderzeichen zwischen 0x00-0x1F */
3248 /* die wir aber nicht beruecksichtigen */
3249 /* Convert-Tables: mappings/vendors/apple/croatien.txt from 02/05/98 */
3250 /* Last-Changes from us: */
3252 #define APPLECROATIANUNI_START 0x80
3253 #define APPLECROATIANUNI_END 0xFF
3254 static sal_uInt16 const aImplAPPLECROATIANToUniTab[APPLECROATIANUNI_END - APPLECROATIANUNI_START + 1] =
3256 /* 0 1 2 3 4 5 6 7 */
3257 /* 8 9 A B C D E F */
3258 0x00C4, 0x00C5, 0x00C7, 0x00C9, 0x00D1, 0x00D6, 0x00DC, 0x00E1, /* 0x80 */
3259 0x00E0, 0x00E2, 0x00E4, 0x00E3, 0x00E5, 0x00E7, 0x00E9, 0x00E8, /* 0x80 */
3260 0x00EA, 0x00EB, 0x00ED, 0x00EC, 0x00EE, 0x00EF, 0x00F1, 0x00F3, /* 0x90 */
3261 0x00F2, 0x00F4, 0x00F6, 0x00F5, 0x00FA, 0x00F9, 0x00FB, 0x00FC, /* 0x90 */
3262 0x2020, 0x00B0, 0x00A2, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x00DF, /* 0xA0 */
3263 0x00AE, 0x0160, 0x2122, 0x00B4, 0x00A8, 0x2260, 0x017D, 0x00D8, /* 0xA0 */
3264 0x221E, 0x00B1, 0x2264, 0x2265, 0x2206, 0x00B5, 0x2202, 0x2211, /* 0xB0 */
3265 0x220F, 0x0161, 0x222B, 0x00AA, 0x00BA, 0x03A9, 0x017E, 0x00F8, /* 0xB0 */
3266 0x00BF, 0x00A1, 0x00AC, 0x221A, 0x0192, 0x2248, 0x0106, 0x00AB, /* 0xC0 */
3267 0x010C, 0x2026, 0x00A0, 0x00C0, 0x00C3, 0x00D5, 0x0152, 0x0153, /* 0xC0 */
3268 0x0110, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x25CA, /* 0xD0 */
3269 0xF8FF, 0x00A9, 0x2044, 0x00A4, 0x2039, 0x203A, 0x00C6, 0x00BB, /* 0xD0 */
3270 0x2013, 0x00B7, 0x201A, 0x201E, 0x2030, 0x00C2, 0x0107, 0x00C1, /* 0xE0 */
3271 0x010D, 0x00C8, 0x00CD, 0x00CE, 0x00CF, 0x00CC, 0x00D3, 0x00D4, /* 0xE0 */
3272 0x0111, 0x00D2, 0x00DA, 0x00DB, 0x00D9, 0x0131, 0x02C6, 0x02DC, /* 0xF0 */
3273 0x00AF, 0x03C0, 0x00CB, 0x02DA, 0x00B8, 0x00CA, 0x00E6, 0x02C7 /* 0xF0 */
3276 /* ----------------------------------------------------------------------- */
3278 #define APPLECROATIANCHAR_START 0x00A0
3279 #define APPLECROATIANCHAR_END 0x00FC
3280 static sal_uChar const aImplAPPLECROATIANToCharTab[APPLECROATIANCHAR_END - APPLECROATIANCHAR_START + 1] =
3282 /* 0 1 2 3 4 5 6 7 */
3283 /* 8 9 A B C D E F */
3284 0xCA, 0xC1, 0xA2, 0xA3, 0xDB, 0, 0, 0xA4, /* 0x00A0 */
3285 0xAC, 0xD9, 0xBB, 0xC7, 0xC2, 0, 0xA8, 0xF8, /* 0x00A0 */
3286 0xA1, 0xB1, 0, 0, 0xAB, 0xB5, 0xA6, 0xE1, /* 0x00B0 */
3287 0xFC, 0, 0xBC, 0xDF, 0, 0, 0, 0xC0, /* 0x00B0 */
3288 0xCB, 0xE7, 0xE5, 0xCC, 0x80, 0x81, 0xDE, 0x82, /* 0x00C0 */
3289 0xE9, 0x83, 0xFD, 0xFA, 0xED, 0xEA, 0xEB, 0xEC, /* 0x00C0 */
3290 0, 0x84, 0xF1, 0xEE, 0xEF, 0xCD, 0x85, 0, /* 0x00D0 */
3291 0xAF, 0xF4, 0xF2, 0xF3, 0x86, 0, 0, 0xA7, /* 0x00D0 */
3292 0x88, 0x87, 0x89, 0x8B, 0x8A, 0x8C, 0xFE, 0x8D, /* 0x00E0 */
3293 0x8F, 0x8E, 0x90, 0x91, 0x93, 0x92, 0x94, 0x95, /* 0x00E0 */
3294 0, 0x96, 0x98, 0x97, 0x99, 0x9B, 0x9A, 0xD6, /* 0x00F0 */
3295 0xBF, 0x9D, 0x9C, 0x9E, 0x9F /* 0x00F0 */
3298 /* ----------------------------------------------------------------------- */
3300 #define APPLECROATIANTOCHARTABEX_COUNT 49
3301 static ImplUniCharTabData const aImplAPPLECROATIANToCharTabEx[APPLECROATIANTOCHARTABEX_COUNT] =
3303 { 0x0106, 0xC6, 0 },
3304 { 0x0107, 0xE6, 0 },
3305 { 0x010C, 0xC8, 0 },
3306 { 0x010D, 0xE8, 0 },
3307 { 0x0110, 0xD0, 0 },
3308 { 0x0111, 0xF0, 0 },
3309 { 0x0131, 0xF5, 0 },
3310 { 0x0152, 0xCE, 0 },
3311 { 0x0153, 0xCF, 0 },
3312 { 0x0160, 0xA9, 0 },
3313 { 0x0161, 0xB9, 0 },
3314 { 0x017D, 0xAE, 0 },
3315 { 0x017E, 0xBE, 0 },
3316 { 0x0192, 0xC4, 0 },
3317 { 0x02C6, 0xF6, 0 },
3318 { 0x02C7, 0xFF, 0 },
3319 { 0x02DA, 0xFB, 0 },
3320 { 0x02DC, 0xF7, 0 },
3321 { 0x03A9, 0xBD, 0 },
3322 { 0x03C0, 0xF9, 0 },
3323 { 0x2013, 0xE0, 0 },
3324 { 0x2014, 0xD1, 0 },
3325 { 0x2018, 0xD4, 0 },
3326 { 0x2019, 0xD5, 0 },
3327 { 0x201A, 0xE2, 0 },
3328 { 0x201C, 0xD2, 0 },
3329 { 0x201D, 0xD3, 0 },
3330 { 0x201E, 0xE3, 0 },
3331 { 0x2020, 0xA0, 0 },
3332 { 0x2022, 0xA5, 0 },
3333 { 0x2026, 0xC9, 0 },
3334 { 0x2030, 0xE4, 0 },
3335 { 0x2039, 0xDC, 0 },
3336 { 0x203A, 0xDD, 0 },
3337 { 0x2044, 0xDA, 0 },
3338 { 0x2122, 0xAA, 0 },
3339 { 0x2202, 0xB6, 0 },
3340 { 0x2206, 0xB4, 0 },
3341 { 0x220F, 0xB8, 0 },
3342 { 0x2211, 0xB7, 0 },
3343 { 0x221A, 0xC3, 0 },
3344 { 0x221E, 0xB0, 0 },
3345 { 0x222B, 0xBA, 0 },
3346 { 0x2248, 0xC5, 0 },
3347 { 0x2260, 0xAD, 0 },
3348 { 0x2264, 0xB2, 0 },
3349 { 0x2265, 0xB3, 0 },
3350 { 0x25CA, 0xD7, 0 },
3354 /* ----------------------------------------------------------------------- */
3356 static ImplByteConvertData const aImplAPPLECROATIANByteCvtData =
3358 aImplAPPLECROATIANToUniTab,
3360 APPLECROATIANUNI_START, APPLECROATIANUNI_END,
3361 NOTABUNI_START, NOTABUNI_END,
3362 aImplAPPLECROATIANToCharTab,
3364 aImplAPPLECROATIANToCharTabEx,
3365 APPLECROATIANCHAR_START, APPLECROATIANCHAR_END,
3366 NOTABCHAR_START, NOTABCHAR_END,
3367 APPLECROATIANTOCHARTABEX_COUNT
3370 /* ----------------------------------------------------------------------- */
3372 static ImplTextEncodingData const aImplAPPLECROATIANTextEncodingData
3373 = { { &aImplAPPLECROATIANByteCvtData,
3374 sal::detail::textenc::convertCharToUnicode,
3375 sal::detail::textenc::convertUnicodeToChar,
3388 RTL_TEXTENCODING_INFO_ASCII };
3389 /* MAC, SCRIPT_EASTEUROPE, pc code page 852, mac encoding 36 */
3391 /* ======================================================================= */
3393 /* APPLE-Cyrillic */
3394 /* Apple CharSet for Cyrillic */
3395 /* 1-Byte, 0x00-0x7F ASCII, jedoch eigentich Sonderzeichen zwischen 0x00-0x1F */
3396 /* die wir aber nicht beruecksichtigen */
3397 /* Convert-Tables: mappings/vendors/apple/cyrillic.txt from 02/15/98 */
3398 /* Last-Changes from us: */
3400 #define APPLECYRILLICUNI_START 0x80
3401 #define APPLECYRILLICUNI_END 0xFF
3402 static sal_uInt16 const aImplAPPLECYRILLICToUniTab[APPLECYRILLICUNI_END - APPLECYRILLICUNI_START + 1] =
3404 /* 0 1 2 3 4 5 6 7 */
3405 /* 8 9 A B C D E F */
3406 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, /* 0x80 */
3407 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, /* 0x80 */
3408 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, /* 0x90 */
3409 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, /* 0x90 */
3410 0x2020, 0x00B0, 0x00A2, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x0406, /* 0xA0 */
3411 0x00AE, 0x00A9, 0x2122, 0x0402, 0x0452, 0x2260, 0x0403, 0x0453, /* 0xA0 */
3412 0x221E, 0x00B1, 0x2264, 0x2265, 0x0456, 0x00B5, 0x2202, 0x0408, /* 0xB0 */
3413 0x0404, 0x0454, 0x0407, 0x0457, 0x0409, 0x0459, 0x040A, 0x045A, /* 0xB0 */
3414 0x0458, 0x0405, 0x00AC, 0x221A, 0x0192, 0x2248, 0x2206, 0x00AB, /* 0xC0 */
3415 0x00BB, 0x2026, 0x00A0, 0x040B, 0x045B, 0x040C, 0x045C, 0x0455, /* 0xC0 */
3416 0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x201E, /* 0xD0 */
3417 0x040E, 0x045E, 0x040F, 0x045F, 0x2116, 0x0401, 0x0451, 0x044F, /* 0xD0 */
3418 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, /* 0xE0 */
3419 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, /* 0xE0 */
3420 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, /* 0xF0 */
3421 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x00A4 /* 0xF0 */
3424 /* ----------------------------------------------------------------------- */
3426 #define APPLECYRILLICCHAR_START 0x0401
3427 #define APPLECYRILLICCHAR_END 0x045F
3428 static sal_uChar const aImplAPPLECYRILLICToCharTab[APPLECYRILLICCHAR_END - APPLECYRILLICCHAR_START + 1] =
3430 /* 0 1 2 3 4 5 6 7 */
3431 /* 8 9 A B C D E F */
3432 0xDD, 0xAB, 0xAE, 0xB8, 0xC1, 0xA7, 0xBA, /* 0x0400 */
3433 0xB7, 0xBC, 0xBE, 0xCB, 0xCD, 0, 0xD8, 0xDA, /* 0x0400 */
3434 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x0410 */
3435 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, /* 0x0410 */
3436 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, /* 0x0420 */
3437 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F, /* 0x0420 */
3438 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, /* 0x0430 */
3439 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, /* 0x0430 */
3440 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, /* 0x0440 */
3441 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xDF, /* 0x0440 */
3442 0, 0xDE, 0xAC, 0xAF, 0xB9, 0xCF, 0xB4, 0xBB, /* 0x0450 */
3443 0xC0, 0xBD, 0xBF, 0xCC, 0xCE, 0, 0xD9, 0xDB, /* 0x0450 */
3446 /* ----------------------------------------------------------------------- */
3448 #define APPLECYRILLICTOCHARTABEX_COUNT 36
3449 static ImplUniCharTabData const aImplAPPLECYRILLICToCharTabEx[APPLECYRILLICTOCHARTABEX_COUNT] =
3451 { 0x00A0, 0xCA, 0 },
3452 { 0x00A2, 0xA2, 0 },
3453 { 0x00A3, 0xA3, 0 },
3454 { 0x00A4, 0xFF, 0 },
3455 { 0x00A7, 0xA4, 0 },
3456 { 0x00A9, 0xA9, 0 },
3457 { 0x00AB, 0xC7, 0 },
3458 { 0x00AC, 0xC2, 0 },
3459 { 0x00AE, 0xA8, 0 },
3460 { 0x00B0, 0xA1, 0 },
3461 { 0x00B1, 0xB1, 0 },
3462 { 0x00B5, 0xB5, 0 },
3463 { 0x00B6, 0xA6, 0 },
3464 { 0x00BB, 0xC8, 0 },
3465 { 0x00F7, 0xD6, 0 },
3466 { 0x0192, 0xC4, 0 },
3467 { 0x2013, 0xD0, 0 },
3468 { 0x2014, 0xD1, 0 },
3469 { 0x2018, 0xD4, 0 },
3470 { 0x2019, 0xD5, 0 },
3471 { 0x201C, 0xD2, 0 },
3472 { 0x201D, 0xD3, 0 },
3473 { 0x201E, 0xD7, 0 },
3474 { 0x2020, 0xA0, 0 },
3475 { 0x2022, 0xA5, 0 },
3476 { 0x2026, 0xC9, 0 },
3477 { 0x2116, 0xDC, 0 },
3478 { 0x2122, 0xAA, 0 },
3479 { 0x2202, 0xB6, 0 },
3480 { 0x2206, 0xC6, 0 },
3481 { 0x221A, 0xC3, 0 },
3482 { 0x221E, 0xB0, 0 },
3483 { 0x2248, 0xC5, 0 },
3484 { 0x2260, 0xAD, 0 },
3485 { 0x2264, 0xB2, 0 },
3489 /* ----------------------------------------------------------------------- */
3491 static ImplByteConvertData const aImplAPPLECYRILLICByteCvtData =
3493 aImplAPPLECYRILLICToUniTab,
3495 APPLECYRILLICUNI_START, APPLECYRILLICUNI_END,
3496 NOTABUNI_START, NOTABUNI_END,
3497 aImplAPPLECYRILLICToCharTab,
3499 aImplAPPLECYRILLICToCharTabEx,
3500 APPLECYRILLICCHAR_START, APPLECYRILLICCHAR_END,
3501 NOTABCHAR_START, NOTABCHAR_END,
3502 APPLECYRILLICTOCHARTABEX_COUNT
3505 /* ----------------------------------------------------------------------- */
3507 static ImplTextEncodingData const aImplAPPLECYRILLICTextEncodingData
3508 = { { &aImplAPPLECYRILLICByteCvtData,
3509 sal::detail::textenc::convertCharToUnicode,
3510 sal::detail::textenc::convertUnicodeToChar,
3523 RTL_TEXTENCODING_INFO_ASCII };
3524 /* MAC, SCRIPT_CYRILLIC, pc code page 866 (855?), mac encoding 7 */
3526 /* ======================================================================= */
3529 /* Apple CharSet for Greek */
3530 /* 1-Byte, 0x00-0x7F ASCII, jedoch eigentich Sonderzeichen zwischen 0x00-0x1F */
3531 /* die wir aber nicht beruecksichtigen */
3532 /* Convert-Tables: mappings/vendors/apple/roman.txt from 08/18/98 */
3533 /* Last-Changes from us: */
3535 #define APPLEGREEKUNI_START 0x80
3536 #define APPLEGREEKUNI_END 0xFF
3537 static sal_uInt16 const aImplAPPLEGREEKToUniTab[APPLEGREEKUNI_END - APPLEGREEKUNI_START + 1] =
3539 /* 0 1 2 3 4 5 6 7 */
3540 /* 8 9 A B C D E F */
3541 0x00C4, 0x00B9, 0x00B2, 0x00C9, 0x00B3, 0x00D6, 0x00DC, 0x0385, /* 0x80 */
3542 0x00E0, 0x00E2, 0x00E4, 0x0384, 0x00A8, 0x00E7, 0x00E9, 0x00E8, /* 0x80 */
3543 0x00EA, 0x00EB, 0x00A3, 0x2122, 0x00EE, 0x00EF, 0x2022, 0x00BD, /* 0x90 */
3544 0x2030, 0x00F4, 0x00F6, 0x00A6, 0x00AD, 0x00F9, 0x00FB, 0x00FC, /* 0x90 */
3545 0x2020, 0x0393, 0x0394, 0x0398, 0x039B, 0x039E, 0x03A0, 0x00DF, /* 0xA0 */
3546 0x00AE, 0x00A9, 0x03A3, 0x03AA, 0x00A7, 0x2260, 0x00B0, 0x00B7, /* 0xA0 */
3547 0x0391, 0x00B1, 0x2264, 0x2265, 0x00A5, 0x0392, 0x0395, 0x0396, /* 0xB0 */
3548 0x0397, 0x0399, 0x039A, 0x039C, 0x03A6, 0x03AB, 0x03A8, 0x03A9, /* 0xB0 */
3549 0x03AC, 0x039D, 0x00AC, 0x039F, 0x03A1, 0x2248, 0x03A4, 0x00AB, /* 0xC0 */
3550 0x00BB, 0x2026, 0x00A0, 0x03A5, 0x03A7, 0x0386, 0x0388, 0x0153, /* 0xC0 */
3551 0x2013, 0x2015, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x0389, /* 0xD0 */
3552 0x038A, 0x038C, 0x038E, 0x03AD, 0x03AE, 0x03AF, 0x03CC, 0x038F, /* 0xD0 */
3553 0x03CD, 0x03B1, 0x03B2, 0x03C8, 0x03B4, 0x03B5, 0x03C6, 0x03B3, /* 0xE0 */
3554 0x03B7, 0x03B9, 0x03BE, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BF, /* 0xE0 */
3555 0x03C0, 0x03CE, 0x03C1, 0x03C3, 0x03C4, 0x03B8, 0x03C9, 0x03C2, /* 0xF0 */
3556 0x03C7, 0x03C5, 0x03B6, 0x03CA, 0x03CB, 0x0390, 0x03B0, 0xF8A0 /* 0xF0 */
3559 /* ----------------------------------------------------------------------- */
3561 #define APPLEGREEKCHAR_START 0x0384
3562 #define APPLEGREEKCHAR_END 0x03CE
3563 static sal_uChar const aImplAPPLEGREEKToCharTab[APPLEGREEKCHAR_END - APPLEGREEKCHAR_START + 1] =
3565 /* 0 1 2 3 4 5 6 7 */
3566 /* 8 9 A B C D E F */
3567 0x8B, 0x87, 0xCD, 0, /* 0x0380 */
3568 0xCE, 0xD7, 0xD8, 0, 0xD9, 0, 0xDA, 0xDF, /* 0x0380 */
3569 0xFD, 0xB0, 0xB5, 0xA1, 0xA2, 0xB6, 0xB7, 0xB8, /* 0x0390 */
3570 0xA3, 0xB9, 0xBA, 0xA4, 0xBB, 0xC1, 0xA5, 0xC3, /* 0x0390 */
3571 0xA6, 0xC4, 0, 0xAA, 0xC6, 0xCB, 0xBC, 0xCC, /* 0x03A0 */
3572 0xBE, 0xBF, 0xAB, 0xBD, 0xC0, 0xDB, 0xDC, 0xDD, /* 0x03A0 */
3573 0xFE, 0xE1, 0xE2, 0xE7, 0xE4, 0xE5, 0xFA, 0xE8, /* 0x03B0 */
3574 0xF5, 0xE9, 0xEB, 0xEC, 0xED, 0xEE, 0xEA, 0xEF, /* 0x03B0 */
3575 0xF0, 0xF2, 0xF7, 0xF3, 0xF4, 0xF9, 0xE6, 0xF8, /* 0x03C0 */
3576 0xE3, 0xF6, 0xFB, 0xFC, 0xDE, 0xE0, 0xF1 /* 0x03C0 */
3579 /* ----------------------------------------------------------------------- */
3581 #define APPLEGREEKTOCHARTABEX_COUNT 57
3582 static ImplUniCharTabData const aImplAPPLEGREEKToCharTabEx[APPLEGREEKTOCHARTABEX_COUNT] =
3584 { 0x00A0, 0xCA, 0 },
3585 { 0x00A3, 0x92, 0 },
3586 { 0x00A5, 0xB4, 0 },
3587 { 0x00A6, 0x9B, 0 },
3588 { 0x00A7, 0xAC, 0 },
3589 { 0x00A8, 0x8C, 0 },
3590 { 0x00A9, 0xA9, 0 },
3591 { 0x00AB, 0xC7, 0 },
3592 { 0x00AC, 0xC2, 0 },
3593 { 0x00AD, 0x9C, 0 },
3594 { 0x00AE, 0xA8, 0 },
3595 { 0x00B0, 0xAE, 0 },
3596 { 0x00B1, 0xB1, 0 },
3597 { 0x00B2, 0x82, 0 },
3598 { 0x00B3, 0x84, 0 },
3599 { 0x00B7, 0xAF, 0 },
3600 { 0x00B9, 0x81, 0 },
3601 { 0x00BB, 0xC8, 0 },
3602 { 0x00BD, 0x97, 0 },
3603 { 0x00C4, 0x80, 0 },
3604 { 0x00C9, 0x83, 0 },
3605 { 0x00D6, 0x85, 0 },
3606 { 0x00DC, 0x86, 0 },
3607 { 0x00DF, 0xA7, 0 },
3608 { 0x00E0, 0x88, 0 },
3609 { 0x00E2, 0x89, 0 },
3610 { 0x00E4, 0x8A, 0 },
3611 { 0x00E7, 0x8D, 0 },
3612 { 0x00E8, 0x8F, 0 },
3613 { 0x00E9, 0x8E, 0 },
3614 { 0x00EA, 0x90, 0 },
3615 { 0x00EB, 0x91, 0 },
3616 { 0x00EE, 0x94, 0 },
3617 { 0x00EF, 0x95, 0 },
3618 { 0x00F4, 0x99, 0 },
3619 { 0x00F6, 0x9A, 0 },
3620 { 0x00F7, 0xD6, 0 },
3621 { 0x00F9, 0x9D, 0 },
3622 { 0x00FB, 0x9E, 0 },
3623 { 0x00FC, 0x9F, 0 },
3624 { 0x0153, 0xCF, 0 },
3625 { 0x2013, 0xD0, 0 },
3626 { 0x2015, 0xD1, 0 },
3627 { 0x2018, 0xD4, 0 },
3628 { 0x2019, 0xD5, 0 },
3629 { 0x201C, 0xD2, 0 },
3630 { 0x201D, 0xD3, 0 },
3631 { 0x2020, 0xA0, 0 },
3632 { 0x2022, 0x96, 0 },
3633 { 0x2026, 0xC9, 0 },
3634 { 0x2030, 0x98, 0 },
3635 { 0x2122, 0x93, 0 },
3636 { 0x2248, 0xC5, 0 },
3637 { 0x2260, 0xAD, 0 },
3638 { 0x2264, 0xB2, 0 },
3639 { 0x2265, 0xB3, 0 },
3643 /* ----------------------------------------------------------------------- */
3645 static ImplByteConvertData const aImplAPPLEGREEKByteCvtData =
3647 aImplAPPLEGREEKToUniTab,
3649 APPLEGREEKUNI_START, APPLEGREEKUNI_END,
3650 NOTABUNI_START, NOTABUNI_END,
3651 aImplAPPLEGREEKToCharTab,
3653 aImplAPPLEGREEKToCharTabEx,
3654 APPLEGREEKCHAR_START, APPLEGREEKCHAR_END,
3655 NOTABCHAR_START, NOTABCHAR_END,
3656 APPLEGREEKTOCHARTABEX_COUNT
3659 /* ----------------------------------------------------------------------- */
3661 static ImplTextEncodingData const aImplAPPLEGREEKTextEncodingData
3662 = { { &aImplAPPLEGREEKByteCvtData,
3663 sal::detail::textenc::convertCharToUnicode,
3664 sal::detail::textenc::convertUnicodeToChar,
3677 RTL_TEXTENCODING_INFO_ASCII };
3678 /* MAC, SCRIPT_GREEK, pc code page 869, mac encoding 6 */
3680 /* ======================================================================= */
3682 /* APPLE-Romanian */
3683 /* Standard Apple CharSet for Romanien */
3684 /* 1-Byte, 0x00-0x7F ASCII, jedoch eigentich Sonderzeichen zwischen 0x00-0x1F */
3685 /* die wir aber nicht beruecksichtigen */
3686 /* Convert-Tables: mappings/vendors/apple/romanian.txt from 02/05/98 */
3687 /* Last-Changes from us: */
3688 /* 0xAF --> 0x015E (like Java), Apple Definition: 0x0053+0x0326 # LATIN CAPITAL LETTER S + COMBINING COMMA BELOW */
3689 /* 0xBF --> 0x015F (like Java), Apple Definition: 0x0073+0x0326 # LATIN SMALL LETTER S + COMBINING COMMA BELOW */
3690 /* 0xDE --> 0x0162 (like Java), Apple Definition: 0x0054+0x0326 # LATIN CAPITAL LETTER T + COMBINING COMMA BELOW */
3691 /* 0xDF --> 0x0163 (like Java), Apple Definition: 0x0074+0x0326 # LATIN SMALL LETTER T + COMBINING COMMA BELOW */
3693 #define APPLEROMANIANUNI_START 0x80
3694 #define APPLEROMANIANUNI_END 0xFF
3695 static sal_uInt16 const aImplAPPLEROMANIANToUniTab[APPLEROMANIANUNI_END - APPLEROMANIANUNI_START + 1] =
3697 /* 0 1 2 3 4 5 6 7 */
3698 /* 8 9 A B C D E F */
3699 0x00C4, 0x00C5, 0x00C7, 0x00C9, 0x00D1, 0x00D6, 0x00DC, 0x00E1, /* 0x80 */
3700 0x00E0, 0x00E2, 0x00E4, 0x00E3, 0x00E5, 0x00E7, 0x00E9, 0x00E8, /* 0x80 */
3701 0x00EA, 0x00EB, 0x00ED, 0x00EC, 0x00EE, 0x00EF, 0x00F1, 0x00F3, /* 0x90 */
3702 0x00F2, 0x00F4, 0x00F6, 0x00F5, 0x00FA, 0x00F9, 0x00FB, 0x00FC, /* 0x90 */
3703 0x2020, 0x00B0, 0x00A2, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x00DF, /* 0xA0 */
3704 0x00AE, 0x00A9, 0x2122, 0x00B4, 0x00A8, 0x2260, 0x0102, 0x015E, /* 0xA0 */
3705 0x221E, 0x00B1, 0x2264, 0x2265, 0x00A5, 0x00B5, 0x2202, 0x2211, /* 0xB0 */
3706 0x220F, 0x03C0, 0x222B, 0x00AA, 0x00BA, 0x03A9, 0x0103, 0x015F, /* 0xB0 */
3707 0x00BF, 0x00A1, 0x00AC, 0x221A, 0x0192, 0x2248, 0x2206, 0x00AB, /* 0xC0 */
3708 0x00BB, 0x2026, 0x00A0, 0x00C0, 0x00C3, 0x00D5, 0x0152, 0x0153, /* 0xC0 */
3709 0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x25CA, /* 0xD0 */
3710 0x00FF, 0x0178, 0x2044, 0x00A4, 0x2039, 0x203A, 0x0162, 0x0163, /* 0xD0 */
3711 0x2021, 0x00B7, 0x201A, 0x201E, 0x2030, 0x00C2, 0x00CA, 0x00C1, /* 0xE0 */
3712 0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF, 0x00CC, 0x00D3, 0x00D4, /* 0xE0 */
3713 0xF8FF, 0x00D2, 0x00DA, 0x00DB, 0x00D9, 0x0131, 0x02C6, 0x02DC, /* 0xF0 */
3714 0x00AF, 0x02D8, 0x02D9, 0x02DA, 0x00B8, 0x02DD, 0x02DB, 0x02C7 /* 0xF0 */
3717 /* ----------------------------------------------------------------------- */
3719 #define APPLEROMANIANCHAR_START 0x00A0
3720 #define APPLEROMANIANCHAR_END 0x00FF
3721 static sal_uChar const aImplAPPLEROMANIANToCharTab[APPLEROMANIANCHAR_END - APPLEROMANIANCHAR_START + 1] =
3723 /* 0 1 2 3 4 5 6 7 */
3724 /* 8 9 A B C D E F */
3725 0xCA, 0xC1, 0xA2, 0xA3, 0xDB, 0xB4, 0, 0xA4, /* 0x00A0 */
3726 0xAC, 0xA9, 0xBB, 0xC7, 0xC2, 0, 0xA8, 0xF8, /* 0x00A0 */
3727 0xA1, 0xB1, 0, 0, 0xAB, 0xB5, 0xA6, 0xE1, /* 0x00B0 */
3728 0xFC, 0, 0xBC, 0xC8, 0, 0, 0, 0xC0, /* 0x00B0 */
3729 0xCB, 0xE7, 0xE5, 0xCC, 0x80, 0x81, 0, 0x82, /* 0x00C0 */
3730 0xE9, 0x83, 0xE6, 0xE8, 0xED, 0xEA, 0xEB, 0xEC, /* 0x00C0 */
3731 0, 0x84, 0xF1, 0xEE, 0xEF, 0xCD, 0x85, 0, /* 0x00D0 */
3732 0, 0xF4, 0xF2, 0xF3, 0x86, 0, 0, 0xA7, /* 0x00D0 */
3733 0x88, 0x87, 0x89, 0x8B, 0x8A, 0x8C, 0, 0x8D, /* 0x00E0 */
3734 0x8F, 0x8E, 0x90, 0x91, 0x93, 0x92, 0x94, 0x95, /* 0x00E0 */
3735 0, 0x96, 0x98, 0x97, 0x99, 0x9B, 0x9A, 0xD6, /* 0x00F0 */
3736 0, 0x9D, 0x9C, 0x9E, 0x9F, 0, 0, 0xD8 /* 0x00F0 */
3739 /* ----------------------------------------------------------------------- */
3741 #define APPLEROMANIANTOCHARTABEX_COUNT 51
3742 static ImplUniCharTabData const aImplAPPLEROMANIANToCharTabEx[APPLEROMANIANTOCHARTABEX_COUNT] =
3744 { 0x0102, 0xAE, 0 },
3745 { 0x0103, 0xBE, 0 },
3746 { 0x0131, 0xF5, 0 },
3747 { 0x0152, 0xCE, 0 },
3748 { 0x0153, 0xCF, 0 },
3749 { 0x015E, 0xAF, 0 },
3750 { 0x015F, 0xBF, 0 },
3751 { 0x0162, 0xDE, 0 },
3752 { 0x0163, 0xDF, 0 },
3753 { 0x0178, 0xD9, 0 },
3754 { 0x0192, 0xC4, 0 },
3755 { 0x02C6, 0xF6, 0 },
3756 { 0x02C7, 0xFF, 0 },
3757 { 0x02D8, 0xF9, 0 },
3758 { 0x02D9, 0xFA, 0 },
3759 { 0x02DA, 0xFB, 0 },
3760 { 0x02DB, 0xFE, 0 },
3761 { 0x02DC, 0xF7, 0 },
3762 { 0x02DD, 0xFD, 0 },
3763 { 0x03A9, 0xBD, 0 },
3764 { 0x03C0, 0xB9, 0 },
3765 { 0x2013, 0xD0, 0 },
3766 { 0x2014, 0xD1, 0 },
3767 { 0x2018, 0xD4, 0 },
3768 { 0x2019, 0xD5, 0 },
3769 { 0x201A, 0xE2, 0 },
3770 { 0x201C, 0xD2, 0 },
3771 { 0x201D, 0xD3, 0 },
3772 { 0x201E, 0xE3, 0 },
3773 { 0x2020, 0xA0, 0 },
3774 { 0x2021, 0xE0, 0 },
3775 { 0x2022, 0xA5, 0 },
3776 { 0x2026, 0xC9, 0 },
3777 { 0x2030, 0xE4, 0 },
3778 { 0x2039, 0xDC, 0 },
3779 { 0x203A, 0xDD, 0 },
3780 { 0x2044, 0xDA, 0 },
3781 { 0x2122, 0xAA, 0 },
3782 { 0x2202, 0xB6, 0 },
3783 { 0x2206, 0xC6, 0 },
3784 { 0x220F, 0xB8, 0 },
3785 { 0x2211, 0xB7, 0 },
3786 { 0x221A, 0xC3, 0 },
3787 { 0x221E, 0xB0, 0 },
3788 { 0x222B, 0xBA, 0 },
3789 { 0x2248, 0xC5, 0 },
3790 { 0x2260, 0xAD, 0 },
3791 { 0x2264, 0xB2, 0 },
3792 { 0x2265, 0xB3, 0 },
3793 { 0x25CA, 0xD7, 0 },
3797 /* ----------------------------------------------------------------------- */
3799 static ImplByteConvertData const aImplAPPLEROMANIANByteCvtData =
3801 aImplAPPLEROMANIANToUniTab,
3803 APPLEROMANIANUNI_START, APPLEROMANIANUNI_END,
3804 NOTABUNI_START, NOTABUNI_END,
3805 aImplAPPLEROMANIANToCharTab,
3807 aImplAPPLEROMANIANToCharTabEx,
3808 APPLEROMANIANCHAR_START, APPLEROMANIANCHAR_END,
3809 NOTABCHAR_START, NOTABCHAR_END,
3810 APPLEROMANIANTOCHARTABEX_COUNT
3813 /* ----------------------------------------------------------------------- */
3815 static ImplTextEncodingData const aImplAPPLEROMANIANTextEncodingData
3816 = { { &aImplAPPLEROMANIANByteCvtData,
3817 sal::detail::textenc::convertCharToUnicode,
3818 sal::detail::textenc::convertUnicodeToChar,
3831 RTL_TEXTENCODING_INFO_ASCII };
3832 /* MAC, SCRIPT_EASTEUROPE, pc code page 852, mac encoding 38 */
3834 /* ======================================================================= */
3837 /* Apple CharSet for Turkish */
3838 /* 1-Byte, 0x00-0x7F ASCII, jedoch eigentich Sonderzeichen zwischen 0x00-0x1F */
3839 /* die wir aber nicht beruecksichtigen */
3840 /* Convert-Tables: mappings/vendors/apple/turkish.txt from 02/05/98 */
3841 /* Last-Changes from us: */
3843 #define APPLETURKISHUNI_START 0x80
3844 #define APPLETURKISHUNI_END 0xFF
3845 static sal_uInt16 const aImplAPPLETURKISHToUniTab[APPLETURKISHUNI_END - APPLETURKISHUNI_START + 1] =
3847 /* 0 1 2 3 4 5 6 7 */
3848 /* 8 9 A B C D E F */
3849 0x00C4, 0x00C5, 0x00C7, 0x00C9, 0x00D1, 0x00D6, 0x00DC, 0x00E1, /* 0x80 */
3850 0x00E0, 0x00E2, 0x00E4, 0x00E3, 0x00E5, 0x00E7, 0x00E9, 0x00E8, /* 0x80 */
3851 0x00EA, 0x00EB, 0x00ED, 0x00EC, 0x00EE, 0x00EF, 0x00F1, 0x00F3, /* 0x90 */
3852 0x00F2, 0x00F4, 0x00F6, 0x00F5, 0x00FA, 0x00F9, 0x00FB, 0x00FC, /* 0x90 */
3853 0x2020, 0x00B0, 0x00A2, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x00DF, /* 0xA0 */
3854 0x00AE, 0x00A9, 0x2122, 0x00B4, 0x00A8, 0x2260, 0x00C6, 0x00D8, /* 0xA0 */
3855 0x221E, 0x00B1, 0x2264, 0x2265, 0x00A5, 0x00B5, 0x2202, 0x2211, /* 0xB0 */
3856 0x220F, 0x03C0, 0x222B, 0x00AA, 0x00BA, 0x03A9, 0x00E6, 0x00F8, /* 0xB0 */
3857 0x00BF, 0x00A1, 0x00AC, 0x221A, 0x0192, 0x2248, 0x2206, 0x00AB, /* 0xC0 */
3858 0x00BB, 0x2026, 0x00A0, 0x00C0, 0x00C3, 0x00D5, 0x0152, 0x0153, /* 0xC0 */
3859 0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x25CA, /* 0xD0 */
3860 0x00FF, 0x0178, 0x011E, 0x011F, 0x0130, 0x0131, 0x015E, 0x015F, /* 0xD0 */
3861 0x2021, 0x00B7, 0x201A, 0x201E, 0x2030, 0x00C2, 0x00CA, 0x00C1, /* 0xE0 */
3862 0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF, 0x00CC, 0x00D3, 0x00D4, /* 0xE0 */
3863 0xF8FF, 0x00D2, 0x00DA, 0x00DB, 0x00D9, 0xF8A0, 0x02C6, 0x02DC, /* 0xF0 */
3864 0x00AF, 0x02D8, 0x02D9, 0x02DA, 0x00B8, 0x02DD, 0x02DB, 0x02C7 /* 0xF0 */
3867 /* ----------------------------------------------------------------------- */
3869 #define APPLETURKISHCHAR_START 0x00A0
3870 #define APPLETURKISHCHAR_END 0x00FF
3871 static sal_uChar const aImplAPPLETURKISHToCharTab[APPLETURKISHCHAR_END - APPLETURKISHCHAR_START + 1] =
3873 /* 0 1 2 3 4 5 6 7 */
3874 /* 8 9 A B C D E F */
3875 0xCA, 0xC1, 0xA2, 0xA3, 0, 0xB4, 0, 0xA4, /* 0x00A0 */
3876 0xAC, 0xA9, 0xBB, 0xC7, 0xC2, 0, 0xA8, 0xF8, /* 0x00A0 */
3877 0xA1, 0xB1, 0, 0, 0xAB, 0xB5, 0xA6, 0xE1, /* 0x00B0 */
3878 0xFC, 0, 0xBC, 0xC8, 0, 0, 0, 0xC0, /* 0x00B0 */
3879 0xCB, 0xE7, 0xE5, 0xCC, 0x80, 0x81, 0xAE, 0x82, /* 0x00C0 */
3880 0xE9, 0x83, 0xE6, 0xE8, 0xED, 0xEA, 0xEB, 0xEC, /* 0x00C0 */
3881 0, 0x84, 0xF1, 0xEE, 0xEF, 0xCD, 0x85, 0, /* 0x00D0 */
3882 0xAF, 0xF4, 0xF2, 0xF3, 0x86, 0, 0, 0xA7, /* 0x00D0 */
3883 0x88, 0x87, 0x89, 0x8B, 0x8A, 0x8C, 0xBE, 0x8D, /* 0x00E0 */
3884 0x8F, 0x8E, 0x90, 0x91, 0x93, 0x92, 0x94, 0x95, /* 0x00E0 */
3885 0, 0x96, 0x98, 0x97, 0x99, 0x9B, 0x9A, 0xD6, /* 0x00F0 */
3886 0xBF, 0x9D, 0x9C, 0x9E, 0x9F, 0, 0, 0xD8 /* 0x00F0 */
3889 /* ----------------------------------------------------------------------- */
3891 #define APPLETURKISHTOCHARTABEX_COUNT 48
3892 static ImplUniCharTabData const aImplAPPLETURKISHToCharTabEx[APPLETURKISHTOCHARTABEX_COUNT] =
3894 { 0x011E, 0xDA, 0 },
3895 { 0x011F, 0xDB, 0 },
3896 { 0x0130, 0xDC, 0 },
3897 { 0x0131, 0xDD, 0 },
3898 { 0x0152, 0xCE, 0 },
3899 { 0x0153, 0xCF, 0 },
3900 { 0x015E, 0xDE, 0 },
3901 { 0x015F, 0xDF, 0 },
3902 { 0x0178, 0xD9, 0 },
3903 { 0x0192, 0xC4, 0 },
3904 { 0x02C6, 0xF6, 0 },
3905 { 0x02C7, 0xFF, 0 },
3906 { 0x02D8, 0xF9, 0 },
3907 { 0x02D9, 0xFA, 0 },
3908 { 0x02DA, 0xFB, 0 },
3909 { 0x02DB, 0xFE, 0 },
3910 { 0x02DC, 0xF7, 0 },
3911 { 0x02DD, 0xFD, 0 },
3912 { 0x03A9, 0xBD, 0 },
3913 { 0x03C0, 0xB9, 0 },
3914 { 0x2013, 0xD0, 0 },
3915 { 0x2014, 0xD1, 0 },
3916 { 0x2018, 0xD4, 0 },
3917 { 0x2019, 0xD5, 0 },
3918 { 0x201A, 0xE2, 0 },
3919 { 0x201C, 0xD2, 0 },
3920 { 0x201D, 0xD3, 0 },
3921 { 0x201E, 0xE3, 0 },
3922 { 0x2020, 0xA0, 0 },
3923 { 0x2021, 0xE0, 0 },
3924 { 0x2022, 0xA5, 0 },
3925 { 0x2026, 0xC9, 0 },
3926 { 0x2030, 0xE4, 0 },
3927 { 0x2122, 0xAA, 0 },
3928 { 0x2202, 0xB6, 0 },
3929 { 0x2206, 0xC6, 0 },
3930 { 0x220F, 0xB8, 0 },
3931 { 0x2211, 0xB7, 0 },
3932 { 0x221A, 0xC3, 0 },
3933 { 0x221E, 0xB0, 0 },
3934 { 0x222B, 0xBA, 0 },
3935 { 0x2248, 0xC5, 0 },
3936 { 0x2260, 0xAD, 0 },
3937 { 0x2264, 0xB2, 0 },
3938 { 0x2265, 0xB3, 0 },
3939 { 0x25CA, 0xD7, 0 },
3940 { 0xF8A0, 0xF5, 0 },
3944 /* ----------------------------------------------------------------------- */
3946 static ImplByteConvertData const aImplAPPLETURKISHByteCvtData =
3948 aImplAPPLETURKISHToUniTab,
3950 APPLETURKISHUNI_START, APPLETURKISHUNI_END,
3951 NOTABUNI_START, NOTABUNI_END,
3952 aImplAPPLETURKISHToCharTab,
3954 aImplAPPLETURKISHToCharTabEx,
3955 APPLETURKISHCHAR_START, APPLETURKISHCHAR_END,
3956 NOTABCHAR_START, NOTABCHAR_END,
3957 APPLETURKISHTOCHARTABEX_COUNT
3960 /* ----------------------------------------------------------------------- */
3962 static ImplTextEncodingData const aImplAPPLETURKISHTextEncodingData
3963 = { { &aImplAPPLETURKISHByteCvtData,
3964 sal::detail::textenc::convertCharToUnicode,
3965 sal::detail::textenc::convertUnicodeToChar,
3978 RTL_TEXTENCODING_INFO_ASCII };
3979 /* MAC, SCRIPT_TURKISH, pc code page 857, mac encoding 35 */
3981 /* ======================================================================= */
3983 /* APPLE-Ukrainian */
3984 /* Apple CharSet for Ukrainian */
3985 /* 1-Byte, 0x00-0x7F ASCII, jedoch eigentich Sonderzeichen zwischen 0x00-0x1F */
3986 /* die wir aber nicht beruecksichtigen */
3987 /* Convert-Tables: mappings/vendors/apple/ukraine.txt from 02/05/98 */
3988 /* Last-Changes from us: */
3990 #define APPLEUKRAINIANUNI_START 0x80
3991 #define APPLEUKRAINIANUNI_END 0xFF
3992 static sal_uInt16 const aImplAPPLEUKRAINIANToUniTab[APPLEUKRAINIANUNI_END - APPLEUKRAINIANUNI_START + 1] =
3994 /* 0 1 2 3 4 5 6 7 */
3995 /* 8 9 A B C D E F */
3996 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, /* 0x80 */
3997 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, /* 0x80 */
3998 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, /* 0x90 */
3999 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, /* 0x90 */
4000 0x2020, 0x00B0, 0x0490, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x0406, /* 0xA0 */
4001 0x00AE, 0x00A9, 0x2122, 0x0402, 0x0452, 0x2260, 0x0403, 0x0453, /* 0xA0 */
4002 0x221E, 0x00B1, 0x2264, 0x2265, 0x0456, 0x00B5, 0x0491, 0x0408, /* 0xB0 */
4003 0x0404, 0x0454, 0x0407, 0x0457, 0x0409, 0x0459, 0x040A, 0x045A, /* 0xB0 */
4004 0x0458, 0x0405, 0x00AC, 0x221A, 0x0192, 0x2248, 0x2206, 0x00AB, /* 0xC0 */
4005 0x00BB, 0x2026, 0x00A0, 0x040B, 0x045B, 0x040C, 0x045C, 0x0455, /* 0xC0 */
4006 0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x201E, /* 0xD0 */
4007 0x040E, 0x045E, 0x040F, 0x045F, 0x2116, 0x0401, 0x0451, 0x044F, /* 0xD0 */
4008 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, /* 0xE0 */
4009 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, /* 0xE0 */
4010 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, /* 0xF0 */
4011 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x00A4 /* 0xF0 */
4014 /* ----------------------------------------------------------------------- */
4016 #define APPLEUKRAINIANCHAR_START 0x0401
4017 #define APPLEUKRAINIANCHAR_END 0x045F
4018 static sal_uChar const aImplAPPLEUKRAINIANToCharTab[APPLEUKRAINIANCHAR_END - APPLEUKRAINIANCHAR_START + 1] =
4020 /* 0 1 2 3 4 5 6 7 */
4021 /* 8 9 A B C D E F */
4022 0xDD, 0xAB, 0xAE, 0xB8, 0xC1, 0xA7, 0xBA, /* 0x0400 */
4023 0xB7, 0xBC, 0xBE, 0xCB, 0xCD, 0, 0xD8, 0xDA, /* 0x0400 */
4024 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x0410 */
4025 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, /* 0x0410 */
4026 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, /* 0x0420 */
4027 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F, /* 0x0420 */
4028 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, /* 0x0430 */
4029 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, /* 0x0430 */
4030 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, /* 0x0440 */
4031 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xDF, /* 0x0440 */
4032 0, 0xDE, 0xAC, 0xAF, 0xB9, 0xCF, 0xB4, 0xBB, /* 0x0450 */
4033 0xC0, 0xBD, 0xBF, 0xCC, 0xCE, 0, 0xD9, 0xDB, /* 0x0450 */
4036 /* ----------------------------------------------------------------------- */
4038 #define APPLEUKRAINIANTOCHARTABEX_COUNT 36
4039 static ImplUniCharTabData const aImplAPPLEUKRAINIANToCharTabEx[APPLEUKRAINIANTOCHARTABEX_COUNT] =
4041 { 0x00A0, 0xCA, 0 },
4042 { 0x00A3, 0xA3, 0 },
4043 { 0x00A4, 0xFF, 0 },
4044 { 0x00A7, 0xA4, 0 },
4045 { 0x00A9, 0xA9, 0 },
4046 { 0x00AB, 0xC7, 0 },
4047 { 0x00AC, 0xC2, 0 },
4048 { 0x00AE, 0xA8, 0 },
4049 { 0x00B0, 0xA1, 0 },
4050 { 0x00B1, 0xB1, 0 },
4051 { 0x00B5, 0xB5, 0 },
4052 { 0x00B6, 0xA6, 0 },
4053 { 0x00BB, 0xC8, 0 },
4054 { 0x00F7, 0xD6, 0 },
4055 { 0x0192, 0xC4, 0 },
4056 { 0x0490, 0xA2, 0 },
4057 { 0x0491, 0xB6, 0 },
4058 { 0x2013, 0xD0, 0 },
4059 { 0x2014, 0xD1, 0 },
4060 { 0x2018, 0xD4, 0 },
4061 { 0x2019, 0xD5, 0 },
4062 { 0x201C, 0xD2, 0 },
4063 { 0x201D, 0xD3, 0 },
4064 { 0x201E, 0xD7, 0 },
4065 { 0x2020, 0xA0, 0 },
4066 { 0x2022, 0xA5, 0 },
4067 { 0x2026, 0xC9, 0 },
4068 { 0x2116, 0xDC, 0 },
4069 { 0x2122, 0xAA, 0 },
4070 { 0x2206, 0xC6, 0 },
4071 { 0x221A, 0xC3, 0 },
4072 { 0x221E, 0xB0, 0 },
4073 { 0x2248, 0xC5, 0 },
4074 { 0x2260, 0xAD, 0 },
4075 { 0x2264, 0xB2, 0 },
4079 /* ----------------------------------------------------------------------- */
4081 static ImplByteConvertData const aImplAPPLEUKRAINIANByteCvtData =
4083 aImplAPPLEUKRAINIANToUniTab,
4085 APPLEUKRAINIANUNI_START, APPLEUKRAINIANUNI_END,
4086 NOTABUNI_START, NOTABUNI_END,
4087 aImplAPPLEUKRAINIANToCharTab,
4089 aImplAPPLEUKRAINIANToCharTabEx,
4090 APPLEUKRAINIANCHAR_START, APPLEUKRAINIANCHAR_END,
4091 NOTABCHAR_START, NOTABCHAR_END,
4092 APPLEUKRAINIANTOCHARTABEX_COUNT
4095 /* ----------------------------------------------------------------------- */
4097 static ImplTextEncodingData const aImplAPPLEUKRAINIANTextEncodingData
4098 = { { &aImplAPPLEUKRAINIANByteCvtData,
4099 sal::detail::textenc::convertCharToUnicode,
4100 sal::detail::textenc::convertUnicodeToChar,
4113 RTL_TEXTENCODING_INFO_ASCII };
4114 /* MAC, SCRIPT_CYRILLIC, pc code page 866 (855?), mac encoding 0x98
4115 (MAC 8.5 and above) */
4117 /* ======================================================================= */
4120 /* Standard Charset for Cyrillic */
4121 /* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
4122 /* Convert-Tables: typed per hand */
4123 /* Last-Changes from us: */
4125 #define KOI8RUNI_START 0x80
4126 #define KOI8RUNI_END 0xFF
4127 static sal_uInt16 const aImplKOI8RToUniTab[KOI8RUNI_END - KOI8RUNI_START + 1] =
4129 /* 0 1 2 3 4 5 6 7 */
4130 /* 8 9 A B C D E F */
4131 0x2500, 0x2502, 0x250C, 0x2510, 0x2514, 0x2518, 0x251C, 0x2524, /* 0x80 */
4132 0x252C, 0x2534, 0x253C, 0x2580, 0x2584, 0x2588, 0x258C, 0x2590, /* 0x80 */
4133 0x2591, 0x2592, 0x2593, 0x2320, 0x25A0, 0x2219, 0x221A, 0x2248, /* 0x90 */
4134 0x2264, 0x2265, 0x00A0, 0x2321, 0x00B0, 0x00B2, 0x00B7, 0x00F7, /* 0x90 */
4135 0x2550, 0x2551, 0x2552, 0x0451, 0x2553, 0x2554, 0x2555, 0x2556, /* 0xA0 */
4136 0x2557, 0x2558, 0x2559, 0x255A, 0x255B, 0x255C, 0x255D, 0x255E, /* 0xA0 */
4137 0x255F, 0x2560, 0x2561, 0x0401, 0x2562, 0x2563, 0x2564, 0x2565, /* 0xB0 */
4138 0x2566, 0x2567, 0x2568, 0x2569, 0x256A, 0x256B, 0x256C, 0x00A9, /* 0xB0 */
4139 0x044E, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, /* 0xC0 */
4140 0x0445, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, /* 0xC0 */
4141 0x043F, 0x044F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, /* 0xD0 */
4142 0x044C, 0x044B, 0x0437, 0x0448, 0x044D, 0x0449, 0x0447, 0x044A, /* 0xD0 */
4143 0x042E, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, /* 0xE0 */
4144 0x0425, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, /* 0xE0 */
4145 0x041F, 0x042F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, /* 0xF0 */
4146 0x042C, 0x042B, 0x0417, 0x0428, 0x042D, 0x0429, 0x0427, 0x042A /* 0xF0 */
4149 /* ----------------------------------------------------------------------- */
4151 #define KOI8RCHAR_START 0x0410
4152 #define KOI8RCHAR_END 0x044F
4153 static sal_uChar const aImplKOI8RToCharTab[KOI8RCHAR_END - KOI8RCHAR_START + 1] =
4155 /* 0 1 2 3 4 5 6 7 */
4156 /* 8 9 A B C D E F */
4157 0xE1, 0xE2, 0xF7, 0xE7, 0xE4, 0xE5, 0xF6, 0xFA, /* 0x0410 */
4158 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, /* 0x0410 */
4159 0xF2, 0xF3, 0xF4, 0xF5, 0xE6, 0xE8, 0xE3, 0xFE, /* 0x0420 */
4160 0xFB, 0xFD, 0xFF, 0xF9, 0xF8, 0xFC, 0xE0, 0xF1, /* 0x0420 */
4161 0xC1, 0xC2, 0xD7, 0xC7, 0xC4, 0xC5, 0xD6, 0xDA, /* 0x0430 */
4162 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, /* 0x0430 */
4163 0xD2, 0xD3, 0xD4, 0xD5, 0xC6, 0xC8, 0xC3, 0xDE, /* 0x0440 */
4164 0xDB, 0xDD, 0xDF, 0xD9, 0xD8, 0xDC, 0xC0, 0xD1 /* 0x0440 */
4167 /* ----------------------------------------------------------------------- */
4169 #define KOI8RTOCHARTABEX_COUNT 64
4170 static ImplUniCharTabData const aImplKOI8RToCharTabEx[KOI8RTOCHARTABEX_COUNT] =
4172 { 0x00A0, 0x9A, 0 },
4173 { 0x00A9, 0xBF, 0 },
4174 { 0x00B0, 0x9C, 0 },
4175 { 0x00B2, 0x9D, 0 },
4176 { 0x00B7, 0x9E, 0 },
4177 { 0x00F7, 0x9F, 0 },
4178 { 0x0401, 0xB3, 0 },
4179 { 0x0451, 0xA3, 0 },
4180 { 0x2219, 0x95, 0 },
4181 { 0x221A, 0x96, 0 },
4182 { 0x2248, 0x97, 0 },
4183 { 0x2264, 0x98, 0 },
4184 { 0x2265, 0x99, 0 },
4185 { 0x2320, 0x93, 0 },
4186 { 0x2321, 0x9B, 0 },
4187 { 0x2500, 0x80, 0 },
4188 { 0x2502, 0x81, 0 },
4189 { 0x250C, 0x82, 0 },
4190 { 0x2510, 0x83, 0 },
4191 { 0x2514, 0x84, 0 },
4192 { 0x2518, 0x85, 0 },
4193 { 0x251C, 0x86, 0 },
4194 { 0x2524, 0x87, 0 },
4195 { 0x252C, 0x88, 0 },
4196 { 0x2534, 0x89, 0 },
4197 { 0x253C, 0x8A, 0 },
4198 { 0x2550, 0xA0, 0 },
4199 { 0x2551, 0xA1, 0 },
4200 { 0x2552, 0xA2, 0 },
4201 { 0x2553, 0xA4, 0 },
4202 { 0x2554, 0xA5, 0 },
4203 { 0x2555, 0xA6, 0 },
4204 { 0x2556, 0xA7, 0 },
4205 { 0x2557, 0xA8, 0 },
4206 { 0x2558, 0xA9, 0 },
4207 { 0x2559, 0xAA, 0 },
4208 { 0x255A, 0xAB, 0 },
4209 { 0x255B, 0xAC, 0 },
4210 { 0x255C, 0xAD, 0 },
4211 { 0x255D, 0xAE, 0 },
4212 { 0x255E, 0xAF, 0 },
4213 { 0x255F, 0xB0, 0 },
4214 { 0x2560, 0xB1, 0 },
4215 { 0x2561, 0xB2, 0 },
4216 { 0x2562, 0xB4, 0 },
4217 { 0x2563, 0xB5, 0 },
4218 { 0x2564, 0xB6, 0 },
4219 { 0x2565, 0xB7, 0 },
4220 { 0x2566, 0xB8, 0 },
4221 { 0x2567, 0xB9, 0 },
4222 { 0x2568, 0xBA, 0 },
4223 { 0x2569, 0xBB, 0 },
4224 { 0x256A, 0xBC, 0 },
4225 { 0x256B, 0xBD, 0 },
4226 { 0x256C, 0xBE, 0 },
4227 { 0x2580, 0x8B, 0 },
4228 { 0x2584, 0x8C, 0 },
4229 { 0x2588, 0x8D, 0 },
4230 { 0x258C, 0x8E, 0 },
4231 { 0x2590, 0x8F, 0 },
4232 { 0x2591, 0x90, 0 },
4233 { 0x2592, 0x91, 0 },
4234 { 0x2593, 0x92, 0 },
4238 /* ----------------------------------------------------------------------- */
4240 static ImplByteConvertData const aImplKOI8RByteCvtData =
4244 KOI8RUNI_START, KOI8RUNI_END,
4245 NOTABUNI_START, NOTABUNI_END,
4246 aImplKOI8RToCharTab,
4248 aImplKOI8RToCharTabEx,
4249 KOI8RCHAR_START, KOI8RCHAR_END,
4250 NOTABCHAR_START, NOTABCHAR_END,
4251 KOI8RTOCHARTABEX_COUNT
4254 /* ----------------------------------------------------------------------- */
4256 static ImplTextEncodingData const aImplKOI8RTextEncodingData
4257 = { { &aImplKOI8RByteCvtData,
4258 sal::detail::textenc::convertCharToUnicode,
4259 sal::detail::textenc::convertUnicodeToChar,
4272 RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
4273 /* SCRIPT_CYRILLIC, pc code page 866 (855?), mac encoding 7 */
4275 /* ======================================================================= */
4278 /* Standard Charset for Ukrainian Cyrillic */
4279 /* Single Byte, 0x00-0x7F equals ASCII */
4280 /* Conversion Tables: hand made */
4282 #define KOI8UUNI_START 0x80
4283 #define KOI8UUNI_END 0xFF
4284 static sal_uInt16 const aImplKOI8UToUniTab[KOI8UUNI_END - KOI8UUNI_START + 1] =
4286 /* 0 1 2 3 4 5 6 7 */
4287 /* 8 9 A B C D E F */
4288 0x2500, 0x2502, 0x250C, 0x2510, 0x2514, 0x2518, 0x251C, 0x2524, /* 0x80 */
4289 0x252C, 0x2534, 0x253C, 0x2580, 0x2584, 0x2588, 0x258C, 0x2590, /* 0x80 */
4290 0x2591, 0x2592, 0x2593, 0x2320, 0x25A0, 0x2219, 0x221A, 0x2248, /* 0x90 */
4291 0x2264, 0x2265, 0x00A0, 0x2321, 0x00B0, 0x00B2, 0x00B7, 0x00F7, /* 0x90 */
4292 0x2550, 0x2551, 0x2552, 0x0451, 0x0454, 0x2554, 0x0456, 0x0457, /* 0xA0 */
4293 0x2557, 0x2558, 0x2559, 0x255A, 0x255B, 0x0491, 0x255D, 0x255E, /* 0xA0 */
4294 0x255F, 0x2560, 0x2561, 0x0401, 0x0404, 0x2563, 0x0406, 0x0407, /* 0xB0 */
4295 0x2566, 0x2567, 0x2568, 0x2569, 0x256A, 0x0490, 0x256C, 0x00A9, /* 0xB0 */
4296 0x044E, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, /* 0xC0 */
4297 0x0445, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, /* 0xC0 */
4298 0x043F, 0x044F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, /* 0xD0 */
4299 0x044C, 0x044B, 0x0437, 0x0448, 0x044D, 0x0449, 0x0447, 0x044A, /* 0xD0 */
4300 0x042E, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, /* 0xE0 */
4301 0x0425, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, /* 0xE0 */
4302 0x041F, 0x042F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, /* 0xF0 */
4303 0x042C, 0x042B, 0x0417, 0x0428, 0x042D, 0x0429, 0x0427, 0x042A /* 0xF0 */
4306 #define KOI8UCHAR_START 0x0410
4307 #define KOI8UCHAR_END 0x044F
4308 static sal_uChar const
4309 aImplKOI8UToCharTab[KOI8UCHAR_END - KOI8UCHAR_START + 1] =
4311 /* 0 1 2 3 4 5 6 7 */
4312 /* 8 9 A B C D E F */
4313 0xE1, 0xE2, 0xF7, 0xE7, 0xE4, 0xE5, 0xF6, 0xFA, /* 0x0410 */
4314 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, /* 0x0410 */
4315 0xF2, 0xF3, 0xF4, 0xF5, 0xE6, 0xE8, 0xE3, 0xFE, /* 0x0420 */
4316 0xFB, 0xFD, 0xFF, 0xF9, 0xF8, 0xFC, 0xE0, 0xF1, /* 0x0420 */
4317 0xC1, 0xC2, 0xD7, 0xC7, 0xC4, 0xC5, 0xD6, 0xDA, /* 0x0430 */
4318 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, /* 0x0430 */
4319 0xD2, 0xD3, 0xD4, 0xD5, 0xC6, 0xC8, 0xC3, 0xDE, /* 0x0440 */
4320 0xDB, 0xDD, 0xDF, 0xD9, 0xD8, 0xDC, 0xC0, 0xD1 /* 0x0440 */
4323 #define KOI8UTOCHARTABEX_COUNT 72
4324 static ImplUniCharTabData const aImplKOI8UToCharTabEx[KOI8UTOCHARTABEX_COUNT] =
4326 { 0x00A0, 0x9A, 0 },
4327 { 0x00A9, 0xBF, 0 },
4328 { 0x00B0, 0x9C, 0 },
4329 { 0x00B2, 0x9D, 0 },
4330 { 0x00B7, 0x9E, 0 },
4331 { 0x00F7, 0x9F, 0 },
4332 { 0x0401, 0xB3, 0 },
4333 { 0x0404, 0xB4, 0 },
4334 { 0x0406, 0xB6, 0 },
4335 { 0x0407, 0xB7, 0 },
4336 { 0x0451, 0xA3, 0 },
4337 { 0x0454, 0xA4, 0 },
4338 { 0x0456, 0xA6, 0 },
4339 { 0x0457, 0xA7, 0 },
4340 { 0x0490, 0xBD, 0 },
4341 { 0x0491, 0xAD, 0 },
4342 { 0x2219, 0x95, 0 },
4343 { 0x221A, 0x96, 0 },
4344 { 0x2248, 0x97, 0 },
4345 { 0x2264, 0x98, 0 },
4346 { 0x2265, 0x99, 0 },
4347 { 0x2320, 0x93, 0 },
4348 { 0x2321, 0x9B, 0 },
4349 { 0x2500, 0x80, 0 },
4350 { 0x2502, 0x81, 0 },
4351 { 0x250C, 0x82, 0 },
4352 { 0x2510, 0x83, 0 },
4353 { 0x2514, 0x84, 0 },
4354 { 0x2518, 0x85, 0 },
4355 { 0x251C, 0x86, 0 },
4356 { 0x2524, 0x87, 0 },
4357 { 0x252C, 0x88, 0 },
4358 { 0x2534, 0x89, 0 },
4359 { 0x253C, 0x8A, 0 },
4360 { 0x2550, 0xA0, 0 },
4361 { 0x2551, 0xA1, 0 },
4362 { 0x2552, 0xA2, 0 },
4363 { 0x2553, 0xA4, 0 },
4364 { 0x2554, 0xA5, 0 },
4365 { 0x2555, 0xA6, 0 },
4366 { 0x2556, 0xA7, 0 },
4367 { 0x2557, 0xA8, 0 },
4368 { 0x2558, 0xA9, 0 },
4369 { 0x2559, 0xAA, 0 },
4370 { 0x255A, 0xAB, 0 },
4371 { 0x255B, 0xAC, 0 },
4372 { 0x255C, 0xAD, 0 },
4373 { 0x255D, 0xAE, 0 },
4374 { 0x255E, 0xAF, 0 },
4375 { 0x255F, 0xB0, 0 },
4376 { 0x2560, 0xB1, 0 },
4377 { 0x2561, 0xB2, 0 },
4378 { 0x2562, 0xB4, 0 },
4379 { 0x2563, 0xB5, 0 },
4380 { 0x2564, 0xB6, 0 },
4381 { 0x2565, 0xB7, 0 },
4382 { 0x2566, 0xB8, 0 },
4383 { 0x2567, 0xB9, 0 },
4384 { 0x2568, 0xBA, 0 },
4385 { 0x2569, 0xBB, 0 },
4386 { 0x256A, 0xBC, 0 },
4387 { 0x256B, 0xBD, 0 },
4388 { 0x256C, 0xBE, 0 },
4389 { 0x2580, 0x8B, 0 },
4390 { 0x2584, 0x8C, 0 },
4391 { 0x2588, 0x8D, 0 },
4392 { 0x258C, 0x8E, 0 },
4393 { 0x2590, 0x8F, 0 },
4394 { 0x2591, 0x90, 0 },
4395 { 0x2592, 0x91, 0 },
4396 { 0x2593, 0x92, 0 },
4400 static ImplByteConvertData const aImplKOI8UByteCvtData =
4404 KOI8UUNI_START, KOI8UUNI_END,
4405 NOTABUNI_START, NOTABUNI_END,
4406 aImplKOI8UToCharTab,
4408 aImplKOI8UToCharTabEx,
4409 KOI8UCHAR_START, KOI8UCHAR_END,
4410 NOTABCHAR_START, NOTABCHAR_END,
4411 KOI8UTOCHARTABEX_COUNT
4414 static ImplTextEncodingData const aImplKoi8UTextEncodingData
4415 = { { &aImplKOI8UByteCvtData,
4416 sal::detail::textenc::convertCharToUnicode,
4417 sal::detail::textenc::convertUnicodeToChar,
4430 RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
4431 /* SCRIPT_CYRILLIC */
4433 /* ======================================================================= */
4436 /* Asian Cyrillic */
4437 /* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
4438 /* Convert-Tables: typed per hand */
4439 /* Last-Changes from us: */
4441 #define PT154UNI_START 0x80
4442 #define PT154UNI_END 0xFF
4443 static sal_uInt16 const aImplPT154ToUniTab[PT154UNI_END - PT154UNI_START + 1] =
4445 /* 0 1 2 3 4 5 6 7 */
4446 /* 8 9 A B C D E F */
4447 0x0496, 0x0492, 0x04EE, 0x0493, 0x201E, 0x2026, 0x04B6, 0x04AE, /* 0x80 */
4448 0x04B2, 0x04AF, 0x04A0, 0x04E2, 0x04A2, 0x049A, 0x04BA, 0x04B8, /* 0x80 */
4449 0x0497, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, /* 0x90 */
4450 0x04B3, 0x04B7, 0x04A1, 0x04E3, 0x04A3, 0x049B, 0x04BB, 0x04B9, /* 0x90 */
4451 0x00A0, 0x040E, 0x045E, 0x0408, 0x04E8, 0x0498, 0x04B0, 0x00A7, /* 0xA0 */
4452 0x0401, 0x00A9, 0x04D8, 0x00AB, 0x00AC, 0x04EF, 0x00AE, 0x049C, /* 0xA0 */
4453 0x00B0, 0x04B1, 0x0406, 0x0456, 0x0499, 0x04E9, 0x00B6, 0x00B7, /* 0xB0 */
4454 0x0451, 0x2116, 0x04D9, 0x00BB, 0x0458, 0x04AA, 0x04AB, 0x049D, /* 0xB0 */
4455 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, /* 0xC0 */
4456 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, /* 0xC0 */
4457 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, /* 0xD0 */
4458 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, /* 0xD0 */
4459 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, /* 0xE0 */
4460 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, /* 0xE0 */
4461 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, /* 0xF0 */
4462 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F /* 0xF0 */
4465 /* ----------------------------------------------------------------------- */
4467 #define PT154CHAR_START 0x0410
4468 #define PT154CHAR_END 0x044F
4469 static sal_uChar const aImplPT154ToCharTab[PT154CHAR_END - PT154CHAR_START + 1] =
4471 /* 0 1 2 3 4 5 6 7 */
4472 /* 8 9 A B C D E F */
4473 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x0410 */
4474 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x0410 */
4475 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x0420 */
4476 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0x0420 */
4477 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x0430 */
4478 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x0430 */
4479 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x0440 */
4480 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff /* 0x0440 */
4483 /* ----------------------------------------------------------------------- */
4485 #define PT154TOCHARTABEX_COUNT 64
4486 static ImplUniCharTabData const aImplPT154ToCharTabEx[PT154TOCHARTABEX_COUNT] =
4488 { 0x00A0, 0xa0, 0 },
4489 { 0x00A7, 0xa7, 0 },
4490 { 0x00A9, 0xa9, 0 },
4491 { 0x00AB, 0xab, 0 },
4492 { 0x00AC, 0xac, 0 },
4493 { 0x00AE, 0xae, 0 },
4494 { 0x00B0, 0xb0, 0 },
4495 { 0x00B6, 0xb6, 0 },
4496 { 0x00B7, 0xb7, 0 },
4497 { 0x00BB, 0xbb, 0 },
4498 { 0x0401, 0xa8, 0 },
4499 { 0x0406, 0xb2, 0 },
4500 { 0x0408, 0xa3, 0 },
4501 { 0x040E, 0xa1, 0 },
4502 { 0x0451, 0xb8, 0 },
4503 { 0x0456, 0xb3, 0 },
4504 { 0x0458, 0xbc, 0 },
4505 { 0x045E, 0xa2, 0 },
4506 { 0x0492, 0x81, 0 },
4507 { 0x0493, 0x83, 0 },
4508 { 0x0496, 0x80, 0 },
4509 { 0x0497, 0x90, 0 },
4510 { 0x0498, 0xa5, 0 },
4511 { 0x0499, 0xb4, 0 },
4512 { 0x049A, 0x8d, 0 },
4513 { 0x049B, 0x9d, 0 },
4514 { 0x049C, 0xaf, 0 },
4515 { 0x049D, 0xbf, 0 },
4516 { 0x04A0, 0x8a, 0 },
4517 { 0x04A1, 0x9a, 0 },
4518 { 0x04A2, 0x8c, 0 },
4519 { 0x04A3, 0x9c, 0 },
4520 { 0x04AA, 0xbd, 0 },
4521 { 0x04AB, 0xbe, 0 },
4522 { 0x04AE, 0x87, 0 },
4523 { 0x04AF, 0x89, 0 },
4524 { 0x04B0, 0xa6, 0 },
4525 { 0x04B1, 0xb1, 0 },
4526 { 0x04B2, 0x88, 0 },
4527 { 0x04B3, 0x98, 0 },
4528 { 0x04B6, 0x86, 0 },
4529 { 0x04B7, 0x99, 0 },
4530 { 0x04B8, 0x8f, 0 },
4531 { 0x04B9, 0x9f, 0 },
4532 { 0x04BA, 0x8e, 0 },
4533 { 0x04BB, 0x9e, 0 },
4534 { 0x04D8, 0xaa, 0 },
4535 { 0x04D9, 0xba, 0 },
4536 { 0x04E2, 0x8b, 0 },
4537 { 0x04E3, 0x9b, 0 },
4538 { 0x04E8, 0xa4, 0 },
4539 { 0x04E9, 0xb5, 0 },
4540 { 0x04EE, 0x82, 0 },
4541 { 0x04EF, 0xad, 0 },
4542 { 0x2013, 0x96, 0 },
4543 { 0x2014, 0x97, 0 },
4544 { 0x2018, 0x91, 0 },
4545 { 0x2019, 0x92, 0 },
4546 { 0x201C, 0x93, 0 },
4547 { 0x201D, 0x94, 0 },
4548 { 0x201E, 0x84, 0 },
4549 { 0x2022, 0x95, 0 },
4550 { 0x2026, 0x85, 0 },
4554 /* ----------------------------------------------------------------------- */
4556 static ImplByteConvertData const aImplPT154ByteCvtData =
4560 PT154UNI_START, PT154UNI_END,
4561 NOTABUNI_START, NOTABUNI_END,
4562 aImplPT154ToCharTab,
4564 aImplPT154ToCharTabEx,
4565 PT154CHAR_START, PT154CHAR_END,
4566 NOTABCHAR_START, NOTABCHAR_END,
4567 PT154TOCHARTABEX_COUNT
4570 /* ----------------------------------------------------------------------- */
4572 static ImplTextEncodingData const aImplPT154TextEncodingData
4573 = { { &aImplPT154ByteCvtData,
4574 sal::detail::textenc::convertCharToUnicode,
4575 sal::detail::textenc::convertUnicodeToChar,
4588 RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
4589 /* SCRIPT_CYRILLIC */