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 "tcvtbyte.hxx"
32 #include "tenchelp.hxx"
34 /* ======================================================================= */
36 /* This file contain the tables for all 1 byte charsets, for the */
37 /* following scripts: latin, iceland, nordic */
39 /* ======================================================================= */
42 /* Dos Latin US - Standard CharSet for Western Script */
43 /* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
44 /* Convert-Tables: mappings/vendors/micsft/pc/cp437.txt from 04/24/96 Version 2.00 */
45 /* Last-Changes from us: */
47 /* ----------------------------------------------------------------------- */
49 #define IBM437UNI_START 0x80
50 #define IBM437UNI_END 0xFF
51 static sal_uInt16 const aImplIBM437ToUniTab[IBM437UNI_END - IBM437UNI_START + 1] =
55 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7, /* 0x80 */
56 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5, /* 0x80 */
57 0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9, /* 0x90 */
58 0x00FF, 0x00D6, 0x00DC, 0x00A2, 0x00A3, 0x00A5, 0x20A7, 0x0192, /* 0x90 */
59 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA, /* 0xA0 */
60 0x00BF, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, /* 0xA0 */
61 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, /* 0xB0 */
62 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, /* 0xB0 */
63 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, /* 0xC0 */
64 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, /* 0xC0 */
65 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, /* 0xD0 */
66 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, /* 0xD0 */
67 0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, /* 0xE0 */
68 0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, /* 0xE0 */
69 0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, /* 0xF0 */
70 0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0 /* 0xF0 */
73 /* ----------------------------------------------------------------------- */
75 #define IBM437CHAR_START 0x00A0
76 #define IBM437CHAR_END 0x00FF
77 static sal_uChar const aImplIBM437ToCharTab[IBM437CHAR_END - IBM437CHAR_START + 1] =
81 0xFF, 0xAD, 0x9B, 0x9C, 0, 0x9D, 0, 0, /* 0x00A0 */
82 0, 0, 0xA6, 0xAE, 0xAA, 0, 0, 0, /* 0x00A0 */
83 0xF8, 0xF1, 0xFD, 0, 0, 0xE6, 0, 0xFA, /* 0x00B0 */
84 0, 0, 0xA7, 0xAF, 0xAC, 0xAB, 0, 0xA8, /* 0x00B0 */
85 0, 0, 0, 0, 0x8E, 0x8F, 0x92, 0x80, /* 0x00C0 */
86 0, 0x90, 0, 0, 0, 0, 0, 0, /* 0x00C0 */
87 0, 0xA5, 0, 0, 0, 0, 0x99, 0, /* 0x00D0 */
88 0, 0, 0, 0, 0x9A, 0, 0, 0xE1, /* 0x00D0 */
89 0x85, 0xA0, 0x83, 0, 0x84, 0x86, 0x91, 0x87, /* 0x00E0 */
90 0x8A, 0x82, 0x88, 0x89, 0x8D, 0xA1, 0x8C, 0x8B, /* 0x00E0 */
91 0, 0xA4, 0x95, 0xA2, 0x93, 0, 0x94, 0xF6, /* 0x00F0 */
92 0, 0x97, 0xA3, 0x96, 0x81, 0, 0, 0x98 /* 0x00F0 */
95 /* ----------------------------------------------------------------------- */
97 #define IBM437TOCHARTABEX_COUNT 75
98 static ImplUniCharTabData const aImplIBM437ToCharTabEx[IBM437TOCHARTABEX_COUNT] =
177 /* ----------------------------------------------------------------------- */
179 static ImplByteConvertData const aImplIBM437ByteCvtData =
183 IBM437UNI_START, IBM437UNI_END,
184 NOTABUNI_START, NOTABUNI_END,
185 aImplIBM437ToCharTab,
187 aImplIBM437ToCharTabEx,
188 IBM437CHAR_START, IBM437CHAR_END,
189 NOTABCHAR_START, NOTABCHAR_END,
190 IBM437TOCHARTABEX_COUNT
193 /* ----------------------------------------------------------------------- */
195 static ImplTextEncodingData const aImplIBM437TextEncodingData
196 = { { &aImplIBM437ByteCvtData,
197 ImplUpperCharToUnicode,
198 sal::detail::textenc::convertUnicodeToChar,
211 RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
212 /* DOS/OS2, SCRIPT_LATIN, pc code page 437 */
214 /* ======================================================================= */
217 /* Dos Standard CharSet for Western/Europa */
218 /* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
219 /* Convert-Tables: mappings/vendors/micsft/pc/cp850.txt from 04/24/96 Version 2.00 */
220 /* Last-Changes from us: */
221 /* D5 - geaendert auf EURO SIGN and 0x20AC added to D5 */
223 /* ----------------------------------------------------------------------- */
225 #define IBM850UNI_START 0x80
226 #define IBM850UNI_END 0xFF
227 static sal_uInt16 const aImplIBM850ToUniTab[IBM850UNI_END - IBM850UNI_START + 1] =
229 /* 0 1 2 3 4 5 6 7 */
230 /* 8 9 A B C D E F */
231 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7, /* 0x80 */
232 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5, /* 0x80 */
233 0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9, /* 0x90 */
234 0x00FF, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x00D7, 0x0192, /* 0x90 */
235 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA, /* 0xA0 */
236 0x00BF, 0x00AE, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, /* 0xA0 */
237 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00C1, 0x00C2, 0x00C0, /* 0xB0 */
238 0x00A9, 0x2563, 0x2551, 0x2557, 0x255D, 0x00A2, 0x00A5, 0x2510, /* 0xB0 */
239 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x00E3, 0x00C3, /* 0xC0 */
240 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x00A4, /* 0xC0 */
241 0x00F0, 0x00D0, 0x00CA, 0x00CB, 0x00C8, 0x20AC, 0x00CD, 0x00CE, /* 0xD0 */
242 0x00CF, 0x2518, 0x250C, 0x2588, 0x2584, 0x00A6, 0x00CC, 0x2580, /* 0xD0 */
243 0x00D3, 0x00DF, 0x00D4, 0x00D2, 0x00F5, 0x00D5, 0x00B5, 0x00FE, /* 0xE0 */
244 0x00DE, 0x00DA, 0x00DB, 0x00D9, 0x00FD, 0x00DD, 0x00AF, 0x00B4, /* 0xE0 */
245 0x00AD, 0x00B1, 0x2017, 0x00BE, 0x00B6, 0x00A7, 0x00F7, 0x00B8, /* 0xF0 */
246 0x00B0, 0x00A8, 0x00B7, 0x00B9, 0x00B3, 0x00B2, 0x25A0, 0x00A0 /* 0xF0 */
249 /* ----------------------------------------------------------------------- */
251 #define IBM850CHAR_START 0x00A0
252 #define IBM850CHAR_END 0x00FF
253 static sal_uChar const aImplIBM850ToCharTab[IBM850CHAR_END - IBM850CHAR_START + 1] =
255 /* 0 1 2 3 4 5 6 7 */
256 /* 8 9 A B C D E F */
257 0xFF, 0xAD, 0xBD, 0x9C, 0xCF, 0xBE, 0xDD, 0xF5, /* 0x00A0 */
258 0xF9, 0xB8, 0xA6, 0xAE, 0xAA, 0xF0, 0xA9, 0xEE, /* 0x00A0 */
259 0xF8, 0xF1, 0xFD, 0xFC, 0xEF, 0xE6, 0xF4, 0xFA, /* 0x00B0 */
260 0xF7, 0xFB, 0xA7, 0xAF, 0xAC, 0xAB, 0xF3, 0xA8, /* 0x00B0 */
261 0xB7, 0xB5, 0xB6, 0xC7, 0x8E, 0x8F, 0x92, 0x80, /* 0x00C0 */
262 0xD4, 0x90, 0xD2, 0xD3, 0xDE, 0xD6, 0xD7, 0xD8, /* 0x00C0 */
263 0xD1, 0xA5, 0xE3, 0xE0, 0xE2, 0xE5, 0x99, 0x9E, /* 0x00D0 */
264 0x9D, 0xEB, 0xE9, 0xEA, 0x9A, 0xED, 0xE8, 0xE1, /* 0x00D0 */
265 0x85, 0xA0, 0x83, 0xC6, 0x84, 0x86, 0x91, 0x87, /* 0x00E0 */
266 0x8A, 0x82, 0x88, 0x89, 0x8D, 0xA1, 0x8C, 0x8B, /* 0x00E0 */
267 0xD0, 0xA4, 0x95, 0xA2, 0x93, 0xE4, 0x94, 0xF6, /* 0x00F0 */
268 0x9B, 0x97, 0xA3, 0x96, 0x81, 0xEC, 0xE7, 0x98 /* 0x00F0 */
271 /* ----------------------------------------------------------------------- */
273 #define IBM850TOCHARTABEX_COUNT 33
274 static ImplUniCharTabData const aImplIBM850ToCharTabEx[IBM850TOCHARTABEX_COUNT] =
311 /* ----------------------------------------------------------------------- */
313 static ImplByteConvertData const aImplIBM850ByteCvtData =
317 IBM850UNI_START, IBM850UNI_END,
318 NOTABUNI_START, NOTABUNI_END,
319 aImplIBM850ToCharTab,
321 aImplIBM850ToCharTabEx,
322 IBM850CHAR_START, IBM850CHAR_END,
323 NOTABCHAR_START, NOTABCHAR_END,
324 IBM850TOCHARTABEX_COUNT
327 /* ----------------------------------------------------------------------- */
329 static ImplTextEncodingData const aImplIBM850TextEncodingData
330 = { { &aImplIBM850ByteCvtData,
331 ImplUpperCharToUnicode,
332 sal::detail::textenc::convertUnicodeToChar,
345 RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
346 /* DOS/OS2, SCRIPT_LATIN, pc code page 850 */
348 /* ======================================================================= */
351 /* Dos Standard CharSet for Portugiese */
352 /* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
353 /* Convert-Tables: mappings/vendors/micsft/pc/cp860.txt from 04/24/96 Version 2.00 */
354 /* Last-Changes from us: */
356 /* ----------------------------------------------------------------------- */
358 #define IBM860UNI_START 0x80
359 #define IBM860UNI_END 0xFF
360 static sal_uInt16 const aImplIBM860ToUniTab[IBM860UNI_END - IBM860UNI_START + 1] =
362 /* 0 1 2 3 4 5 6 7 */
363 /* 8 9 A B C D E F */
364 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E3, 0x00E0, 0x00C1, 0x00E7, /* 0x80 */
365 0x00EA, 0x00CA, 0x00E8, 0x00CD, 0x00D4, 0x00EC, 0x00C3, 0x00C2, /* 0x80 */
366 0x00C9, 0x00C0, 0x00C8, 0x00F4, 0x00F5, 0x00F2, 0x00DA, 0x00F9, /* 0x90 */
367 0x00CC, 0x00D5, 0x00DC, 0x00A2, 0x00A3, 0x00D9, 0x20A7, 0x00D3, /* 0x90 */
368 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA, /* 0xA0 */
369 0x00BF, 0x00D2, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, /* 0xA0 */
370 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, /* 0xB0 */
371 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, /* 0xB0 */
372 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, /* 0xC0 */
373 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, /* 0xC0 */
374 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, /* 0xD0 */
375 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, /* 0xD0 */
376 0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, /* 0xE0 */
377 0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, /* 0xE0 */
378 0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, /* 0xF0 */
379 0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0 /* 0xF0 */
382 /* ----------------------------------------------------------------------- */
384 #define IBM860CHAR_START 0x00A0
385 #define IBM860CHAR_END 0x00FC
386 static sal_uChar const aImplIBM860ToCharTab[IBM860CHAR_END - IBM860CHAR_START + 1] =
388 /* 0 1 2 3 4 5 6 7 */
389 /* 8 9 A B C D E F */
390 0xFF, 0xAD, 0x9B, 0x9C, 0 , 0, 0, 0, /* 0x00A0 */
391 0, 0, 0xA6, 0xAE, 0xAA, 0, 0, 0, /* 0x00A0 */
392 0xF8, 0xF1, 0xFD, 0, 0, 0xE6, 0, 0xFA, /* 0x00B0 */
393 0, 0, 0xA7, 0xAF, 0xAC, 0xAB, 0, 0xA8, /* 0x00B0 */
394 0x91, 0x86, 0x8F, 0x8E, 0, 0, 0, 0x80, /* 0x00C0 */
395 0x92, 0x90, 0x89, 0, 0x98, 0x8B, 0, 0, /* 0x00C0 */
396 0, 0xA5, 0xA9, 0x9F, 0x8C, 0x99, 0, 0, /* 0x00D0 */
397 0, 0x9D, 0x96, 0, 0x9A, 0, 0, 0xE1, /* 0x00D0 */
398 0x85, 0xA0, 0x83, 0x84, 0, 0, 0, 0x87, /* 0x00E0 */
399 0x8A, 0x82, 0x88, 0, 0x8D, 0xA1, 0, 0, /* 0x00E0 */
400 0, 0xA4, 0x95, 0xA2, 0x93, 0x94, 0, 0xF6, /* 0x00F0 */
401 0, 0x97, 0xA3, 0, 0x81 /* 0x00F0 */
404 /* ----------------------------------------------------------------------- */
406 #define IBM860TOCHARTABEX_COUNT 73
407 static ImplUniCharTabData const aImplIBM860ToCharTabEx[IBM860TOCHARTABEX_COUNT] =
484 /* ----------------------------------------------------------------------- */
486 static ImplByteConvertData const aImplIBM860ByteCvtData =
490 IBM860UNI_START, IBM860UNI_END,
491 NOTABUNI_START, NOTABUNI_END,
492 aImplIBM860ToCharTab,
494 aImplIBM860ToCharTabEx,
495 IBM860CHAR_START, IBM860CHAR_END,
496 NOTABCHAR_START, NOTABCHAR_END,
497 IBM860TOCHARTABEX_COUNT
500 /* ----------------------------------------------------------------------- */
502 static ImplTextEncodingData const aImplIBM860TextEncodingData
503 = { { &aImplIBM860ByteCvtData,
504 ImplUpperCharToUnicode,
505 sal::detail::textenc::convertUnicodeToChar,
518 RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
519 /* DOS/OS2, SCRIPT_LATIN, pc code page 860 */
521 /* ======================================================================= */
524 /* Dos Standard CharSet for Icelandic */
525 /* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
526 /* Convert-Tables: mappings/vendors/micsft/pc/cp861.txt from 04/24/96 Version 2.00 */
527 /* Last-Changes from us: */
529 /* ----------------------------------------------------------------------- */
531 #define IBM861UNI_START 0x80
532 #define IBM861UNI_END 0xFF
533 static sal_uInt16 const aImplIBM861ToUniTab[IBM861UNI_END - IBM861UNI_START + 1] =
535 /* 0 1 2 3 4 5 6 7 */
536 /* 8 9 A B C D E F */
537 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7, /* 0x80 */
538 0x00EA, 0x00EB, 0x00E8, 0x00D0, 0x00F0, 0x00DE, 0x00C4, 0x00C5, /* 0x80 */
539 0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00FE, 0x00FB, 0x00DD, /* 0x90 */
540 0x00FD, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x20A7, 0x0192, /* 0x90 */
541 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00C1, 0x00CD, 0x00D3, 0x00DA, /* 0xA0 */
542 0x00BF, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, /* 0xA0 */
543 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, /* 0xB0 */
544 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, /* 0xB0 */
545 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, /* 0xC0 */
546 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, /* 0xC0 */
547 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, /* 0xD0 */
548 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, /* 0xD0 */
549 0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, /* 0xE0 */
550 0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, /* 0xE0 */
551 0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, /* 0xF0 */
552 0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0 /* 0xF0 */
555 /* ----------------------------------------------------------------------- */
557 #define IBM861CHAR_START 0x00A0
558 #define IBM861CHAR_END 0x00FE
559 static sal_uChar const aImplIBM861ToCharTab[IBM861CHAR_END - IBM861CHAR_START + 1] =
561 /* 0 1 2 3 4 5 6 7 */
562 /* 8 9 A B C D E F */
563 0xFF, 0xAD, 0, 0x9C, 0, 0, 0, 0, /* 0x00A0 */
564 0, 0, 0, 0xAE, 0xAA, 0, 0, 0, /* 0x00A0 */
565 0xF8, 0xF1, 0xFD, 0, 0, 0xE6, 0, 0xFA, /* 0x00B0 */
566 0, 0, 0, 0xAF, 0xAC, 0xAB, 0, 0xA8, /* 0x00B0 */
567 0, 0xA4, 0, 0, 0x8E, 0x8F, 0x92, 0x80, /* 0x00C0 */
568 0, 0x90, 0, 0, 0, 0xA5, 0, 0, /* 0x00C0 */
569 0x8B, 0, 0, 0xA6, 0, 0, 0x99, 0, /* 0x00D0 */
570 0x9D, 0, 0xA7, 0, 0x9A, 0x97, 0x8D, 0xE1, /* 0x00D0 */
571 0x85, 0xA0, 0x83, 0, 0x84, 0x86, 0x91, 0x87, /* 0x00E0 */
572 0x8A, 0x82, 0x88, 0x89, 0, 0xA1, 0, 0, /* 0x00E0 */
573 0x8C, 0, 0, 0xA2, 0x93, 0, 0x94, 0xF6, /* 0x00F0 */
574 0x9B, 0, 0xA3, 0x96, 0x81, 0x98, 0x95 /* 0x00F0 */
577 /* ----------------------------------------------------------------------- */
579 #define IBM861TOCHARTABEX_COUNT 75
580 static ImplUniCharTabData const aImplIBM861ToCharTabEx[IBM861TOCHARTABEX_COUNT] =
659 /* ----------------------------------------------------------------------- */
661 static ImplByteConvertData const aImplIBM861ByteCvtData =
665 IBM861UNI_START, IBM861UNI_END,
666 NOTABUNI_START, NOTABUNI_END,
667 aImplIBM861ToCharTab,
669 aImplIBM861ToCharTabEx,
670 IBM861CHAR_START, IBM861CHAR_END,
671 NOTABCHAR_START, NOTABCHAR_END,
672 IBM861TOCHARTABEX_COUNT
675 /* ----------------------------------------------------------------------- */
677 static ImplTextEncodingData const aImplIBM861TextEncodingData
678 = { { &aImplIBM861ByteCvtData,
679 ImplUpperCharToUnicode,
680 sal::detail::textenc::convertUnicodeToChar,
693 RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
694 /* DOS/OS2, SCRIPT_LATIN, pc code page 861, mac encoding 37 */
696 /* ======================================================================= */
699 /* Dos Standard CharSet for Canada-France */
700 /* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
701 /* Convert-Tables: mappings/vendors/micsft/pc/cp863.txt from 04/24/96 Version 2.00 */
702 /* Last-Changes from us: */
704 /* ----------------------------------------------------------------------- */
706 #define IBM863UNI_START 0x80
707 #define IBM863UNI_END 0xFF
708 static sal_uInt16 const aImplIBM863ToUniTab[IBM863UNI_END - IBM863UNI_START + 1] =
710 /* 0 1 2 3 4 5 6 7 */
711 /* 8 9 A B C D E F */
712 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00C2, 0x00E0, 0x00B6, 0x00E7, /* 0x80 */
713 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x2017, 0x00C0, 0x00A7, /* 0x80 */
714 0x00C9, 0x00C8, 0x00CA, 0x00F4, 0x00CB, 0x00CF, 0x00FB, 0x00F9, /* 0x90 */
715 0x00A4, 0x00D4, 0x00DC, 0x00A2, 0x00A3, 0x00D9, 0x00DB, 0x0192, /* 0x90 */
716 0x00A6, 0x00B4, 0x00F3, 0x00FA, 0x00A8, 0x00B8, 0x00B3, 0x00AF, /* 0xA0 */
717 0x00CE, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00BE, 0x00AB, 0x00BB, /* 0xA0 */
718 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, /* 0xB0 */
719 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, /* 0xB0 */
720 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, /* 0xC0 */
721 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, /* 0xC0 */
722 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, /* 0xD0 */
723 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, /* 0xD0 */
724 0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, /* 0xE0 */
725 0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, /* 0xE0 */
726 0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, /* 0xF0 */
727 0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0 /* 0xF0 */
730 /* ----------------------------------------------------------------------- */
732 #define IBM863CHAR_START 0x00A0
733 #define IBM863CHAR_END 0x00FC
734 static sal_uChar const aImplIBM863ToCharTab[IBM863CHAR_END - IBM863CHAR_START + 1] =
736 /* 0 1 2 3 4 5 6 7 */
737 /* 8 9 A B C D E F */
738 0xFF, 0, 0x9B, 0x9C, 0x98, 0, 0xA0, 0x8F, /* 0x00A0 */
739 0xA4, 0, 0, 0xAE, 0xAA, 0, 0, 0xA7, /* 0x00A0 */
740 0xF8, 0xF1, 0xFD, 0xA6, 0xA1, 0xE6, 0x86, 0xFA, /* 0x00B0 */
741 0xA5, 0, 0, 0xAF, 0xAC, 0xAB, 0xAD, 0, /* 0x00B0 */
742 0x8E, 0, 0x84, 0, 0, 0, 0, 0x80, /* 0x00C0 */
743 0x91, 0x90, 0x92, 0x94, 0, 0, 0xA8, 0x95, /* 0x00C0 */
744 0, 0, 0, 0, 0x99, 0, 0, 0, /* 0x00D0 */
745 0, 0x9D, 0, 0x9E, 0x9A, 0, 0, 0xE1, /* 0x00D0 */
746 0x85, 0, 0x83, 0, 0, 0, 0, 0x87, /* 0x00E0 */
747 0x8A, 0x82, 0x88, 0x89, 0, 0, 0x8C, 0x8B, /* 0x00E0 */
748 0, 0, 0, 0xA2, 0x93, 0, 0, 0xF6, /* 0x00F0 */
749 0, 0x97, 0xA3, 0x96, 0x81 /* 0x00F0 */
752 /* ----------------------------------------------------------------------- */
754 #define IBM863TOCHARTABEX_COUNT 75
755 static ImplUniCharTabData const aImplIBM863ToCharTabEx[IBM863TOCHARTABEX_COUNT] =
834 /* ----------------------------------------------------------------------- */
836 static ImplByteConvertData const aImplIBM863ByteCvtData =
840 IBM863UNI_START, IBM863UNI_END,
841 NOTABUNI_START, NOTABUNI_END,
842 aImplIBM863ToCharTab,
844 aImplIBM863ToCharTabEx,
845 IBM863CHAR_START, IBM863CHAR_END,
846 NOTABCHAR_START, NOTABCHAR_END,
847 IBM863TOCHARTABEX_COUNT
850 /* ----------------------------------------------------------------------- */
852 static ImplTextEncodingData const aImplIBM863TextEncodingData
853 = { { &aImplIBM863ByteCvtData,
854 ImplUpperCharToUnicode,
855 sal::detail::textenc::convertUnicodeToChar,
868 RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
869 /* DOS/OS2, SCRIPT_LATIN, pc code page 863 */
871 /* ======================================================================= */
874 /* Dos Standard CharSet for Nordic */
875 /* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
876 /* Convert-Tables: mappings/vendors/micsft/pc/cp865.txt from 04/24/96 Version 2.00 */
877 /* Last-Changes from us: */
879 /* ----------------------------------------------------------------------- */
881 #define IBM865UNI_START 0x80
882 #define IBM865UNI_END 0xFF
883 static sal_uInt16 const aImplIBM865ToUniTab[IBM865UNI_END - IBM865UNI_START + 1] =
885 /* 0 1 2 3 4 5 6 7 */
886 /* 8 9 A B C D E F */
887 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7, /* 0x80 */
888 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5, /* 0x80 */
889 0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9, /* 0x90 */
890 0x00FF, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x20A7, 0x0192, /* 0x90 */
891 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA, /* 0xA0 */
892 0x00BF, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00A4, /* 0xA0 */
893 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, /* 0xB0 */
894 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, /* 0xB0 */
895 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, /* 0xC0 */
896 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, /* 0xC0 */
897 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, /* 0xD0 */
898 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, /* 0xD0 */
899 0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, /* 0xE0 */
900 0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, /* 0xE0 */
901 0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, /* 0xF0 */
902 0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0 /* 0xF0 */
905 /* ----------------------------------------------------------------------- */
907 #define IBM865CHAR_START 0x00A0
908 #define IBM865CHAR_END 0x00FF
909 static sal_uChar const aImplIBM865ToCharTab[IBM865CHAR_END - IBM865CHAR_START + 1] =
911 /* 0 1 2 3 4 5 6 7 */
912 /* 8 9 A B C D E F */
913 0xFF, 0xAD, 0, 0x9C, 0xAF, 0, 0, 0, /* 0x00A0 */
914 0, 0, 0xA6, 0xAE, 0xAA, 0, 0, 0, /* 0x00A0 */
915 0xF8, 0xF1, 0xFD, 0, 0, 0xE6, 0, 0xFA, /* 0x00B0 */
916 0, 0, 0xA7, 0, 0xAC, 0xAB, 0, 0xA8, /* 0x00B0 */
917 0, 0, 0, 0, 0x8E, 0x8F, 0x92, 0x80, /* 0x00C0 */
918 0, 0x90, 0, 0, 0, 0, 0, 0, /* 0x00C0 */
919 0, 0xA5, 0, 0, 0, 0, 0x99, 0, /* 0x00D0 */
920 0x9D, 0, 0, 0, 0x9A, 0, 0, 0xE1, /* 0x00D0 */
921 0x85, 0xA0, 0x83, 0, 0x84, 0x86, 0x91, 0x87, /* 0x00E0 */
922 0x8A, 0x82, 0x88, 0x89, 0x8D, 0xA1, 0x8C, 0x8B, /* 0x00E0 */
923 0, 0xA4, 0x95, 0xA2, 0x93, 0, 0x94, 0xF6, /* 0x00F0 */
924 0x9B, 0x97, 0xA3, 0x96, 0x81, 0, 0, 0x98 /* 0x00F0 */
927 /* ----------------------------------------------------------------------- */
929 #define IBM865TOCHARTABEX_COUNT 75
930 static ImplUniCharTabData const aImplIBM865ToCharTabEx[IBM865TOCHARTABEX_COUNT] =
1000 { 0x2588, 0xDB, 0 },
1001 { 0x258C, 0xDD, 0 },
1002 { 0x2590, 0xDE, 0 },
1003 { 0x2591, 0xB0, 0 },
1004 { 0x2592, 0xB1, 0 },
1005 { 0x2593, 0xB2, 0 },
1009 /* ----------------------------------------------------------------------- */
1011 static ImplByteConvertData const aImplIBM865ByteCvtData =
1013 aImplIBM865ToUniTab,
1015 IBM865UNI_START, IBM865UNI_END,
1016 NOTABUNI_START, NOTABUNI_END,
1017 aImplIBM865ToCharTab,
1019 aImplIBM865ToCharTabEx,
1020 IBM865CHAR_START, IBM865CHAR_END,
1021 NOTABCHAR_START, NOTABCHAR_END,
1022 IBM865TOCHARTABEX_COUNT
1025 /* ----------------------------------------------------------------------- */
1027 static ImplTextEncodingData const aImplIBM865TextEncodingData
1028 = { { &aImplIBM865ByteCvtData,
1029 ImplUpperCharToUnicode,
1030 sal::detail::textenc::convertUnicodeToChar,
1043 RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
1044 /* DOS/OS2, SCRIPT_LATIN, pc code page 865 */
1046 /* ======================================================================= */
1049 /* ungefaehr wie Latin1 */
1050 /* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme, 0x80-0x9F Control-Caracter wie in Unicode */
1051 /* Convert-Tables: mappings/iso8859/8859-14.txt from 07/27/99 Version 1.0 (based on Unicode 3.0) */
1052 /* Last-Changes from us: */
1054 #define ISO885914UNI_START 0xA0
1055 #define ISO885914UNI_END 0xFF
1056 static sal_uInt16 const aImplISO885914ToUniTab[ISO885914UNI_END - ISO885914UNI_START + 1] =
1058 /* 0 1 2 3 4 5 6 7 */
1059 /* 8 9 A B C D E F */
1060 0x00A0, 0x1E02, 0x1E03, 0x00A3, 0x010A, 0x010B, 0x1E0A, 0x00A7, /* 0xA0 */
1061 0x1E80, 0x00A9, 0x1E82, 0x1E0B, 0x1EF2, 0x00AD, 0x00AE, 0x0178, /* 0xA0 */
1062 0x1E1E, 0x1E1F, 0x0120, 0x0121, 0x1E40, 0x1E41, 0x00B6, 0x1E56, /* 0xB0 */
1063 0x1E81, 0x1E57, 0x1E83, 0x1E60, 0x1EF3, 0x1E84, 0x1E85, 0x1E61, /* 0xB0 */
1064 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, /* 0xC0 */
1065 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, /* 0xC0 */
1066 0x0174, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x1E6A, /* 0xD0 */
1067 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x0176, 0x00DF, /* 0xD0 */
1068 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, /* 0xE0 */
1069 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, /* 0xE0 */
1070 0x0175, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x1E6B, /* 0xF0 */
1071 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x0177, 0x00FF /* 0xF0 */
1074 /* ----------------------------------------------------------------------- */
1076 #define ISO885914CHAR_START 0x00C0
1077 #define ISO885914CHAR_END 0x00FF
1078 static sal_uChar const aImplISO885914ToCharTab[ISO885914CHAR_END - ISO885914CHAR_START + 1] =
1080 /* 0 1 2 3 4 5 6 7 */
1081 /* 8 9 A B C D E F */
1082 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, /* 0x00C0 */
1083 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, /* 0x00C0 */
1084 0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0, /* 0x00D0 */
1085 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0, 0xDF, /* 0x00D0 */
1086 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, /* 0x00E0 */
1087 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, /* 0x00E0 */
1088 0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0, /* 0x00F0 */
1089 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0, 0xFF /* 0x00F0 */
1092 /* ----------------------------------------------------------------------- */
1094 #define ISO885914TOCHARTABEX_COUNT 38
1095 static ImplUniCharTabData const aImplISO885914ToCharTabEx[ISO885914TOCHARTABEX_COUNT] =
1097 { 0x00A0, 0xA0, 0 },
1098 { 0x00A3, 0xA3, 0 },
1099 { 0x00A7, 0xA7, 0 },
1100 { 0x00A9, 0xA9, 0 },
1101 { 0x00AD, 0xAD, 0 },
1102 { 0x00AE, 0xAE, 0 },
1103 { 0x00B6, 0xB6, 0 },
1104 { 0x010A, 0xA4, 0 },
1105 { 0x010B, 0xA5, 0 },
1106 { 0x0120, 0xB2, 0 },
1107 { 0x0121, 0xB3, 0 },
1108 { 0x0174, 0xD0, 0 },
1109 { 0x0175, 0xF0, 0 },
1110 { 0x0176, 0xDE, 0 },
1111 { 0x0177, 0xFE, 0 },
1112 { 0x0178, 0xAF, 0 },
1113 { 0x1E02, 0xA1, 0 },
1114 { 0x1E03, 0xA2, 0 },
1115 { 0x1E0A, 0xA6, 0 },
1116 { 0x1E0B, 0xAB, 0 },
1117 { 0x1E1E, 0xB0, 0 },
1118 { 0x1E1F, 0xB1, 0 },
1119 { 0x1E40, 0xB4, 0 },
1120 { 0x1E41, 0xB5, 0 },
1121 { 0x1E56, 0xB7, 0 },
1122 { 0x1E57, 0xB9, 0 },
1123 { 0x1E60, 0xBB, 0 },
1124 { 0x1E61, 0xBF, 0 },
1125 { 0x1E6A, 0xD7, 0 },
1126 { 0x1E6B, 0xF7, 0 },
1127 { 0x1E80, 0xA8, 0 },
1128 { 0x1E81, 0xB8, 0 },
1129 { 0x1E82, 0xAA, 0 },
1130 { 0x1E83, 0xBA, 0 },
1131 { 0x1E84, 0xBD, 0 },
1132 { 0x1E85, 0xBE, 0 },
1133 { 0x1EF2, 0xAC, 0 },
1137 /* ----------------------------------------------------------------------- */
1139 static ImplByteConvertData const aImplISO885914ByteCvtData =
1141 aImplISO885914ToUniTab,
1142 aImpl8090SameToUniTab,
1143 ISO885914UNI_START, ISO885914UNI_END,
1144 SAME8090UNI_START, SAME8090UNI_END,
1145 aImplISO885914ToCharTab,
1146 aImpl8090SameToCharTab,
1147 aImplISO885914ToCharTabEx,
1148 ISO885914CHAR_START, ISO885914CHAR_END,
1149 SAME8090CHAR_START, SAME8090CHAR_END,
1150 ISO885914TOCHARTABEX_COUNT
1153 /* ----------------------------------------------------------------------- */
1155 static ImplTextEncodingData const aImplISO885914TextEncodingData
1156 = { { &aImplISO885914ByteCvtData,
1157 sal::detail::textenc::convertCharToUnicode,
1158 sal::detail::textenc::convertUnicodeToChar,
1171 RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
1172 /* SCRIPT_LATIN, pc code page 850 */
1174 /* ======================================================================= */
1177 /* ungefaehr wie Latin1, jedoch mit Euro (ehemaliges CURRENCY-Symbol an A4) */
1178 /* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme, 0x80-0x9F Control-Caracter wie in Unicode */
1179 /* Convert-Tables: mappings/iso8859/8859-15.txt from 07/27/99 Version 1.0 (based on Unicode 3.0) */
1180 /* Last-Changes from us: */
1182 #define ISO885915UNI_START 0xA0
1183 #define ISO885915UNI_END 0xFF
1184 static sal_uInt16 const aImplISO885915ToUniTab[ISO885915UNI_END - ISO885915UNI_START + 1] =
1186 /* 0 1 2 3 4 5 6 7 */
1187 /* 8 9 A B C D E F */
1188 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x20AC, 0x00A5, 0x0160, 0x00A7, /* 0xA0 */
1189 0x0161, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, /* 0xA0 */
1190 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x017D, 0x00B5, 0x00B6, 0x00B7, /* 0xB0 */
1191 0x017E, 0x00B9, 0x00BA, 0x00BB, 0x0152, 0x0153, 0x0178, 0x00BF, /* 0xB0 */
1192 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, /* 0xC0 */
1193 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, /* 0xC0 */
1194 0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, /* 0xD0 */
1195 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF, /* 0xD0 */
1196 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, /* 0xE0 */
1197 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, /* 0xE0 */
1198 0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, /* 0xF0 */
1199 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF /* 0xF0 */
1202 /* ----------------------------------------------------------------------- */
1204 #define ISO885915CHAR_START 0x00A0
1205 #define ISO885915CHAR_END 0x00FF
1206 static sal_uChar const aImplISO885915ToCharTab[ISO885915CHAR_END - ISO885915CHAR_START + 1] =
1208 /* 0 1 2 3 4 5 6 7 */
1209 /* 8 9 A B C D E F */
1210 0xA0, 0xA1, 0xA2, 0xA3, 0, 0xA5, 0, 0xA7, /* 0x00A0 */
1211 0, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, /* 0x00A0 */
1212 0xB0, 0xB1, 0xB2, 0xB3, 0, 0xB5, 0xB6, 0xB7, /* 0x00B0 */
1213 0, 0xB9, 0xBA, 0xBB, 0, 0, 0, 0xBF, /* 0x00B0 */
1214 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, /* 0x00C0 */
1215 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, /* 0x00C0 */
1216 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, /* 0x00D0 */
1217 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, /* 0x00D0 */
1218 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, /* 0x00E0 */
1219 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, /* 0x00E0 */
1220 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, /* 0x00F0 */
1221 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF /* 0x00F0 */
1224 /* ----------------------------------------------------------------------- */
1226 #define ISO885915TOCHARTABEX_COUNT 8
1227 static ImplUniCharTabData const aImplISO885915ToCharTabEx[ISO885915TOCHARTABEX_COUNT] =
1229 { 0x0152, 0xBC, 0 },
1230 { 0x0153, 0xBD, 0 },
1231 { 0x0160, 0xA6, 0 },
1232 { 0x0161, 0xA8, 0 },
1233 { 0x0178, 0xBE, 0 },
1234 { 0x017D, 0xB4, 0 },
1235 { 0x017E, 0xB8, 0 },
1239 /* ----------------------------------------------------------------------- */
1241 static ImplByteConvertData const aImplISO885915ByteCvtData =
1243 aImplISO885915ToUniTab,
1244 aImpl8090SameToUniTab,
1245 ISO885915UNI_START, ISO885915UNI_END,
1246 SAME8090UNI_START, SAME8090UNI_END,
1247 aImplISO885915ToCharTab,
1248 aImpl8090SameToCharTab,
1249 aImplISO885915ToCharTabEx,
1250 ISO885915CHAR_START, ISO885915CHAR_END,
1251 SAME8090CHAR_START, SAME8090CHAR_END,
1252 ISO885915TOCHARTABEX_COUNT
1255 /* ----------------------------------------------------------------------- */
1257 static ImplTextEncodingData const aImplISO885915TextEncodingData
1258 = { { &aImplISO885915ByteCvtData,
1259 sal::detail::textenc::convertCharToUnicode,
1260 sal::detail::textenc::convertUnicodeToChar,
1273 RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
1274 /* SCRIPT_LATIN, pc code page 850 */
1276 /* ======================================================================= */
1279 /* Apple CharSet for Iceland */
1280 /* 1-Byte, 0x00-0x7F ASCII, jedoch eigentich Sonderzeichen zwischen 0x00-0x1F */
1281 /* die wir aber nicht beruecksichtigen */
1282 /* Convert-Tables: mappings/vendors/apple/iceland.txt from 02/05/98 */
1283 /* Last-Changes from us: */
1285 #define APPLEICELANDUNI_START 0x80
1286 #define APPLEICELANDUNI_END 0xFF
1287 static sal_uInt16 const aImplAPPLEICELANDToUniTab[APPLEICELANDUNI_END - APPLEICELANDUNI_START + 1] =
1289 /* 0 1 2 3 4 5 6 7 */
1290 /* 8 9 A B C D E F */
1291 0x00C4, 0x00C5, 0x00C7, 0x00C9, 0x00D1, 0x00D6, 0x00DC, 0x00E1, /* 0x80 */
1292 0x00E0, 0x00E2, 0x00E4, 0x00E3, 0x00E5, 0x00E7, 0x00E9, 0x00E8, /* 0x80 */
1293 0x00EA, 0x00EB, 0x00ED, 0x00EC, 0x00EE, 0x00EF, 0x00F1, 0x00F3, /* 0x90 */
1294 0x00F2, 0x00F4, 0x00F6, 0x00F5, 0x00FA, 0x00F9, 0x00FB, 0x00FC, /* 0x90 */
1295 0x00DD, 0x00B0, 0x00A2, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x00DF, /* 0xA0 */
1296 0x00AE, 0x00A9, 0x2122, 0x00B4, 0x00A8, 0x2260, 0x00C6, 0x00D8, /* 0xA0 */
1297 0x221E, 0x00B1, 0x2264, 0x2265, 0x00A5, 0x00B5, 0x2202, 0x2211, /* 0xB0 */
1298 0x220F, 0x03C0, 0x222B, 0x00AA, 0x00BA, 0x03A9, 0x00E6, 0x00F8, /* 0xB0 */
1299 0x00BF, 0x00A1, 0x00AC, 0x221A, 0x0192, 0x2248, 0x2206, 0x00AB, /* 0xC0 */
1300 0x00BB, 0x2026, 0x00A0, 0x00C0, 0x00C3, 0x00D5, 0x0152, 0x0153, /* 0xC0 */
1301 0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x25CA, /* 0xD0 */
1302 0x00FF, 0x0178, 0x2044, 0x00A4, 0x00D0, 0x00F0, 0x00DE, 0x00FE, /* 0xD0 */
1303 0x00FD, 0x00B7, 0x201A, 0x201E, 0x2030, 0x00C2, 0x00CA, 0x00C1, /* 0xE0 */
1304 0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF, 0x00CC, 0x00D3, 0x00D4, /* 0xE0 */
1305 0xF8FF, 0x00D2, 0x00DA, 0x00DB, 0x00D9, 0x0131, 0x02C6, 0x02DC, /* 0xF0 */
1306 0x00AF, 0x02D8, 0x02D9, 0x02DA, 0x00B8, 0x02DD, 0x02DB, 0x02C7 /* 0xF0 */
1309 /* ----------------------------------------------------------------------- */
1311 #define APPLEICELANDCHAR_START 0x00A0
1312 #define APPLEICELANDCHAR_END 0x00FF
1313 static sal_uChar const aImplAPPLEICELANDToCharTab[APPLEICELANDCHAR_END - APPLEICELANDCHAR_START + 1] =
1315 /* 0 1 2 3 4 5 6 7 */
1316 /* 8 9 A B C D E F */
1317 0xCA, 0xC1, 0xA2, 0xA3, 0xDB, 0xB4, 0, 0xA4, /* 0x00A0 */
1318 0xAC, 0xA9, 0xBB, 0xC7, 0xC2, 0, 0xA8, 0xF8, /* 0x00A0 */
1319 0xA1, 0xB1, 0, 0, 0xAB, 0xB5, 0xA6, 0xE1, /* 0x00B0 */
1320 0xFC, 0, 0xBC, 0xC8, 0, 0, 0, 0xC0, /* 0x00B0 */
1321 0xCB, 0xE7, 0xE5, 0xCC, 0x80, 0x81, 0xAE, 0x82, /* 0x00C0 */
1322 0xE9, 0x83, 0xE6, 0xE8, 0xED, 0xEA, 0xEB, 0xEC, /* 0x00C0 */
1323 0xDC, 0x84, 0xF1, 0xEE, 0xEF, 0xCD, 0x85, 0, /* 0x00D0 */
1324 0xAF, 0xF4, 0xF2, 0xF3, 0x86, 0xA0, 0xDE, 0xA7, /* 0x00D0 */
1325 0x88, 0x87, 0x89, 0x8B, 0x8A, 0x8C, 0xBE, 0x8D, /* 0x00E0 */
1326 0x8F, 0x8E, 0x90, 0x91, 0x93, 0x92, 0x94, 0x95, /* 0x00E0 */
1327 0xDD, 0x96, 0x98, 0x97, 0x99, 0x9B, 0x9A, 0xD6, /* 0x00F0 */
1328 0xBF, 0x9D, 0x9C, 0x9E, 0x9F, 0xE0, 0xDF, 0xD8 /* 0x00F0 */
1331 /* ----------------------------------------------------------------------- */
1333 #define APPLEICELANDTOCHARTABEX_COUNT 41
1334 static ImplUniCharTabData const aImplAPPLEICELANDToCharTabEx[APPLEICELANDTOCHARTABEX_COUNT] =
1336 { 0x0131, 0xF5, 0 },
1337 { 0x0152, 0xCE, 0 },
1338 { 0x0153, 0xCF, 0 },
1339 { 0x0178, 0xD9, 0 },
1340 { 0x0192, 0xC4, 0 },
1341 { 0x02C6, 0xF6, 0 },
1342 { 0x02C7, 0xFF, 0 },
1343 { 0x02D8, 0xF9, 0 },
1344 { 0x02D9, 0xFA, 0 },
1345 { 0x02DA, 0xFB, 0 },
1346 { 0x02DB, 0xFE, 0 },
1347 { 0x02DC, 0xF7, 0 },
1348 { 0x02DD, 0xFD, 0 },
1349 { 0x03A9, 0xBD, 0 },
1350 { 0x03C0, 0xB9, 0 },
1351 { 0x2013, 0xD0, 0 },
1352 { 0x2014, 0xD1, 0 },
1353 { 0x2018, 0xD4, 0 },
1354 { 0x2019, 0xD5, 0 },
1355 { 0x201A, 0xE2, 0 },
1356 { 0x201C, 0xD2, 0 },
1357 { 0x201D, 0xD3, 0 },
1358 { 0x201E, 0xE3, 0 },
1359 { 0x2022, 0xA5, 0 },
1360 { 0x2026, 0xC9, 0 },
1361 { 0x2030, 0xE4, 0 },
1362 { 0x2044, 0xDA, 0 },
1363 { 0x2122, 0xAA, 0 },
1364 { 0x2202, 0xB6, 0 },
1365 { 0x2206, 0xC6, 0 },
1366 { 0x220F, 0xB8, 0 },
1367 { 0x2211, 0xB7, 0 },
1368 { 0x221A, 0xC3, 0 },
1369 { 0x221E, 0xB0, 0 },
1370 { 0x222B, 0xBA, 0 },
1371 { 0x2248, 0xC5, 0 },
1372 { 0x2260, 0xAD, 0 },
1373 { 0x2264, 0xB2, 0 },
1374 { 0x2265, 0xB3, 0 },
1375 { 0x25CA, 0xD7, 0 },
1379 /* ----------------------------------------------------------------------- */
1381 static ImplByteConvertData const aImplAPPLEICELANDByteCvtData =
1383 aImplAPPLEICELANDToUniTab,
1385 APPLEICELANDUNI_START, APPLEICELANDUNI_END,
1386 NOTABUNI_START, NOTABUNI_END,
1387 aImplAPPLEICELANDToCharTab,
1389 aImplAPPLEICELANDToCharTabEx,
1390 APPLEICELANDCHAR_START, APPLEICELANDCHAR_END,
1391 NOTABCHAR_START, NOTABCHAR_END,
1392 APPLEICELANDTOCHARTABEX_COUNT
1395 /* ----------------------------------------------------------------------- */
1397 static ImplTextEncodingData const aImplAPPLEICELANDTextEncodingData
1398 = { { &aImplAPPLEICELANDByteCvtData,
1399 ImplUpperCharToUnicode,
1400 sal::detail::textenc::convertUnicodeToChar,
1413 RTL_TEXTENCODING_INFO_ASCII };
1414 /* MAC, SCRIPT_LATIN, pc code page 861, mac encoding 37 */
1416 /* ======================================================================= */
1419 /* Standard Apple CharSet for Western */
1420 /* 1-Byte, 0x00-0x7F ASCII, jedoch eigentich Sonderzeichen zwischen 0x00-0x1F */
1421 /* die wir aber nicht beruecksichtigen */
1422 /* Convert-Tables: mappings/vendors/apple/roman.txt from 08/18/98 */
1423 /* Last-Changes from us: */
1425 #define APPLEROMANUNI_START 0x80
1426 #define APPLEROMANUNI_END 0xFF
1427 static sal_uInt16 const aImplAPPLEROMANToUniTab[APPLEROMANUNI_END - APPLEROMANUNI_START + 1] =
1429 /* 0 1 2 3 4 5 6 7 */
1430 /* 8 9 A B C D E F */
1431 0x00C4, 0x00C5, 0x00C7, 0x00C9, 0x00D1, 0x00D6, 0x00DC, 0x00E1, /* 0x80 */
1432 0x00E0, 0x00E2, 0x00E4, 0x00E3, 0x00E5, 0x00E7, 0x00E9, 0x00E8, /* 0x80 */
1433 0x00EA, 0x00EB, 0x00ED, 0x00EC, 0x00EE, 0x00EF, 0x00F1, 0x00F3, /* 0x90 */
1434 0x00F2, 0x00F4, 0x00F6, 0x00F5, 0x00FA, 0x00F9, 0x00FB, 0x00FC, /* 0x90 */
1435 0x2020, 0x00B0, 0x00A2, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x00DF, /* 0xA0 */
1436 0x00AE, 0x00A9, 0x2122, 0x00B4, 0x00A8, 0x2260, 0x00C6, 0x00D8, /* 0xA0 */
1437 0x221E, 0x00B1, 0x2264, 0x2265, 0x00A5, 0x00B5, 0x2202, 0x2211, /* 0xB0 */
1438 0x220F, 0x03C0, 0x222B, 0x00AA, 0x00BA, 0x03A9, 0x00E6, 0x00F8, /* 0xB0 */
1439 0x00BF, 0x00A1, 0x00AC, 0x221A, 0x0192, 0x2248, 0x2206, 0x00AB, /* 0xC0 */
1440 0x00BB, 0x2026, 0x00A0, 0x00C0, 0x00C3, 0x00D5, 0x0152, 0x0153, /* 0xC0 */
1441 0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x25CA, /* 0xD0 */
1442 0x00FF, 0x0178, 0x2044, 0x20AC, 0x2039, 0x203A, 0xFB01, 0xFB02, /* 0xD0 */
1443 0x2021, 0x00B7, 0x201A, 0x201E, 0x2030, 0x00C2, 0x00CA, 0x00C1, /* 0xE0 */
1444 0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF, 0x00CC, 0x00D3, 0x00D4, /* 0xE0 */
1445 0xF8FF, 0x00D2, 0x00DA, 0x00DB, 0x00D9, 0x0131, 0x02C6, 0x02DC, /* 0xF0 */
1446 0x00AF, 0x02D8, 0x02D9, 0x02DA, 0x00B8, 0x02DD, 0x02DB, 0x02C7 /* 0xF0 */
1449 /* ----------------------------------------------------------------------- */
1451 #define APPLEROMANCHAR_START 0x00A0
1452 #define APPLEROMANCHAR_END 0x00FF
1453 static sal_uChar const aImplAPPLEROMANToCharTab[APPLEROMANCHAR_END - APPLEROMANCHAR_START + 1] =
1455 /* 0 1 2 3 4 5 6 7 */
1456 /* 8 9 A B C D E F */
1457 0xCA, 0xC1, 0xA2, 0xA3, 0, 0xB4, 0, 0xA4, /* 0x00A0 */
1458 0xAC, 0xA9, 0xBB, 0xC7, 0xC2, 0, 0xA8, 0xF8, /* 0x00A0 */
1459 0xA1, 0xB1, 0, 0, 0xAB, 0xB5, 0xA6, 0xE1, /* 0x00B0 */
1460 0xFC, 0, 0xBC, 0xC8, 0, 0, 0, 0xC0, /* 0x00B0 */
1461 0xCB, 0xE7, 0xE5, 0xCC, 0x80, 0x81, 0xAE, 0x82, /* 0x00C0 */
1462 0xE9, 0x83, 0xE6, 0xE8, 0xED, 0xEA, 0xEB, 0xEC, /* 0x00C0 */
1463 0, 0x84, 0xF1, 0xEE, 0xEF, 0xCD, 0x85, 0, /* 0x00D0 */
1464 0xAF, 0xF4, 0xF2, 0xF3, 0x86, 0, 0, 0xA7, /* 0x00D0 */
1465 0x88, 0x87, 0x89, 0x8B, 0x8A, 0x8C, 0xBE, 0x8D, /* 0x00E0 */
1466 0x8F, 0x8E, 0x90, 0x91, 0x93, 0x92, 0x94, 0x95, /* 0x00E0 */
1467 0, 0x96, 0x98, 0x97, 0x99, 0x9B, 0x9A, 0xD6, /* 0x00F0 */
1468 0xBF, 0x9D, 0x9C, 0x9E, 0x9F, 0, 0, 0xD8 /* 0x00F0 */
1471 /* ----------------------------------------------------------------------- */
1473 #define APPLEROMANTOCHARTABEX_COUNT 48
1474 static ImplUniCharTabData const aImplAPPLEROMANToCharTabEx[APPLEROMANTOCHARTABEX_COUNT] =
1476 { 0x0131, 0xF5, 0 },
1477 { 0x0152, 0xCE, 0 },
1478 { 0x0153, 0xCF, 0 },
1479 { 0x0178, 0xD9, 0 },
1480 { 0x0192, 0xC4, 0 },
1481 { 0x02C6, 0xF6, 0 },
1482 { 0x02C7, 0xFF, 0 },
1483 { 0x02D8, 0xF9, 0 },
1484 { 0x02D9, 0xFA, 0 },
1485 { 0x02DA, 0xFB, 0 },
1486 { 0x02DB, 0xFE, 0 },
1487 { 0x02DC, 0xF7, 0 },
1488 { 0x02DD, 0xFD, 0 },
1489 { 0x03A9, 0xBD, 0 },
1490 { 0x03C0, 0xB9, 0 },
1491 { 0x2013, 0xD0, 0 },
1492 { 0x2014, 0xD1, 0 },
1493 { 0x2018, 0xD4, 0 },
1494 { 0x2019, 0xD5, 0 },
1495 { 0x201A, 0xE2, 0 },
1496 { 0x201C, 0xD2, 0 },
1497 { 0x201D, 0xD3, 0 },
1498 { 0x201E, 0xE3, 0 },
1499 { 0x2020, 0xA0, 0 },
1500 { 0x2021, 0xE0, 0 },
1501 { 0x2022, 0xA5, 0 },
1502 { 0x2026, 0xC9, 0 },
1503 { 0x2030, 0xE4, 0 },
1504 { 0x2039, 0xDC, 0 },
1505 { 0x203A, 0xDD, 0 },
1506 { 0x2044, 0xDA, 0 },
1507 { 0x20AC, 0xDB, 0 },
1508 { 0x2122, 0xAA, 0 },
1509 { 0x2202, 0xB6, 0 },
1510 { 0x2206, 0xC6, 0 },
1511 { 0x220F, 0xB8, 0 },
1512 { 0x2211, 0xB7, 0 },
1513 { 0x221A, 0xC3, 0 },
1514 { 0x221E, 0xB0, 0 },
1515 { 0x222B, 0xBA, 0 },
1516 { 0x2248, 0xC5, 0 },
1517 { 0x2260, 0xAD, 0 },
1518 { 0x2264, 0xB2, 0 },
1519 { 0x2265, 0xB3, 0 },
1520 { 0x25CA, 0xD7, 0 },
1521 { 0xF8FF, 0xF0, 0 },
1522 { 0xFB01, 0xDE, 0 },
1526 /* ----------------------------------------------------------------------- */
1528 static ImplByteConvertData const aImplAPPLEROMANByteCvtData =
1530 aImplAPPLEROMANToUniTab,
1532 APPLEROMANUNI_START, APPLEROMANUNI_END,
1533 NOTABUNI_START, NOTABUNI_END,
1534 aImplAPPLEROMANToCharTab,
1536 aImplAPPLEROMANToCharTabEx,
1537 APPLEROMANCHAR_START, APPLEROMANCHAR_END,
1538 NOTABCHAR_START, NOTABCHAR_END,
1539 APPLEROMANTOCHARTABEX_COUNT
1542 /* ----------------------------------------------------------------------- */
1544 static ImplTextEncodingData const aImplAPPLEROMANTextEncodingData
1545 = { { &aImplAPPLEROMANByteCvtData,
1546 ImplUpperCharToUnicode,
1547 sal::detail::textenc::convertUnicodeToChar,
1560 RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
1561 /* MAC, SCRIPT_LATIN, pc code page 850 */