2 * This file is part of the LibreOffice project.
4 * This Source Code Form is subject to the terms of the Mozilla Public
5 * License, v. 2.0. If a copy of the MPL was not distributed with this
6 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 * This file incorporates work covered by the following license notice:
10 * Licensed to the Apache Software Foundation (ASF) under one or more
11 * contributor license agreements. See the NOTICE file distributed
12 * with this work for additional information regarding copyright
13 * ownership. The ASF licenses this file to you under the Apache
14 * License, Version 2.0 (the "License"); you may not use this file
15 * except in compliance with the License. You may obtain a copy of
16 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
19 #include "sal/config.h"
21 #include "convertsimple.hxx"
22 #include "tcvtbyte.hxx"
23 #include "tenchelp.hxx"
25 /* ======================================================================= */
27 /* This file contain the tables for all 1 byte charsets, for the */
28 /* following scripts: latin, iceland, nordic */
30 /* ======================================================================= */
33 /* Dos Latin US - Standard CharSet for Western Script */
34 /* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
35 /* Convert-Tables: mappings/vendors/micsft/pc/cp437.txt from 04/24/96 Version 2.00 */
36 /* Last-Changes from us: */
38 /* ----------------------------------------------------------------------- */
40 #define IBM437UNI_START 0x80
41 #define IBM437UNI_END 0xFF
42 static sal_uInt16 const aImplIBM437ToUniTab[IBM437UNI_END - IBM437UNI_START + 1] =
46 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7, /* 0x80 */
47 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5, /* 0x80 */
48 0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9, /* 0x90 */
49 0x00FF, 0x00D6, 0x00DC, 0x00A2, 0x00A3, 0x00A5, 0x20A7, 0x0192, /* 0x90 */
50 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA, /* 0xA0 */
51 0x00BF, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, /* 0xA0 */
52 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, /* 0xB0 */
53 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, /* 0xB0 */
54 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, /* 0xC0 */
55 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, /* 0xC0 */
56 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, /* 0xD0 */
57 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, /* 0xD0 */
58 0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, /* 0xE0 */
59 0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, /* 0xE0 */
60 0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, /* 0xF0 */
61 0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0 /* 0xF0 */
64 /* ----------------------------------------------------------------------- */
66 #define IBM437CHAR_START 0x00A0
67 #define IBM437CHAR_END 0x00FF
68 static unsigned char const aImplIBM437ToCharTab[IBM437CHAR_END - IBM437CHAR_START + 1] =
72 0xFF, 0xAD, 0x9B, 0x9C, 0, 0x9D, 0, 0, /* 0x00A0 */
73 0, 0, 0xA6, 0xAE, 0xAA, 0, 0, 0, /* 0x00A0 */
74 0xF8, 0xF1, 0xFD, 0, 0, 0xE6, 0, 0xFA, /* 0x00B0 */
75 0, 0, 0xA7, 0xAF, 0xAC, 0xAB, 0, 0xA8, /* 0x00B0 */
76 0, 0, 0, 0, 0x8E, 0x8F, 0x92, 0x80, /* 0x00C0 */
77 0, 0x90, 0, 0, 0, 0, 0, 0, /* 0x00C0 */
78 0, 0xA5, 0, 0, 0, 0, 0x99, 0, /* 0x00D0 */
79 0, 0, 0, 0, 0x9A, 0, 0, 0xE1, /* 0x00D0 */
80 0x85, 0xA0, 0x83, 0, 0x84, 0x86, 0x91, 0x87, /* 0x00E0 */
81 0x8A, 0x82, 0x88, 0x89, 0x8D, 0xA1, 0x8C, 0x8B, /* 0x00E0 */
82 0, 0xA4, 0x95, 0xA2, 0x93, 0, 0x94, 0xF6, /* 0x00F0 */
83 0, 0x97, 0xA3, 0x96, 0x81, 0, 0, 0x98 /* 0x00F0 */
86 /* ----------------------------------------------------------------------- */
88 #define IBM437TOCHARTABEX_COUNT 75
89 static ImplUniCharTabData const aImplIBM437ToCharTabEx[IBM437TOCHARTABEX_COUNT] =
168 /* ----------------------------------------------------------------------- */
170 static ImplByteConvertData const aImplIBM437ByteCvtData =
174 IBM437UNI_START, IBM437UNI_END,
175 NOTABUNI_START, NOTABUNI_END,
176 aImplIBM437ToCharTab,
178 aImplIBM437ToCharTabEx,
179 IBM437CHAR_START, IBM437CHAR_END,
180 NOTABCHAR_START, NOTABCHAR_END,
181 IBM437TOCHARTABEX_COUNT
184 /* ----------------------------------------------------------------------- */
186 static ImplTextEncodingData const aImplIBM437TextEncodingData
187 = { { &aImplIBM437ByteCvtData,
188 ImplUpperCharToUnicode,
189 sal::detail::textenc::convertUnicodeToChar,
202 RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
203 /* DOS/OS2, SCRIPT_LATIN, pc code page 437 */
205 /* ======================================================================= */
208 /* Dos Standard CharSet for Western/Europa */
209 /* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
210 /* Convert-Tables: mappings/vendors/micsft/pc/cp850.txt from 04/24/96 Version 2.00 */
211 /* Last-Changes from us: */
212 /* D5 - geaendert auf EURO SIGN and 0x20AC added to D5 */
214 /* ----------------------------------------------------------------------- */
216 #define IBM850UNI_START 0x80
217 #define IBM850UNI_END 0xFF
218 static sal_uInt16 const aImplIBM850ToUniTab[IBM850UNI_END - IBM850UNI_START + 1] =
220 /* 0 1 2 3 4 5 6 7 */
221 /* 8 9 A B C D E F */
222 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7, /* 0x80 */
223 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5, /* 0x80 */
224 0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9, /* 0x90 */
225 0x00FF, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x00D7, 0x0192, /* 0x90 */
226 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA, /* 0xA0 */
227 0x00BF, 0x00AE, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, /* 0xA0 */
228 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00C1, 0x00C2, 0x00C0, /* 0xB0 */
229 0x00A9, 0x2563, 0x2551, 0x2557, 0x255D, 0x00A2, 0x00A5, 0x2510, /* 0xB0 */
230 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x00E3, 0x00C3, /* 0xC0 */
231 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x00A4, /* 0xC0 */
232 0x00F0, 0x00D0, 0x00CA, 0x00CB, 0x00C8, 0x20AC, 0x00CD, 0x00CE, /* 0xD0 */
233 0x00CF, 0x2518, 0x250C, 0x2588, 0x2584, 0x00A6, 0x00CC, 0x2580, /* 0xD0 */
234 0x00D3, 0x00DF, 0x00D4, 0x00D2, 0x00F5, 0x00D5, 0x00B5, 0x00FE, /* 0xE0 */
235 0x00DE, 0x00DA, 0x00DB, 0x00D9, 0x00FD, 0x00DD, 0x00AF, 0x00B4, /* 0xE0 */
236 0x00AD, 0x00B1, 0x2017, 0x00BE, 0x00B6, 0x00A7, 0x00F7, 0x00B8, /* 0xF0 */
237 0x00B0, 0x00A8, 0x00B7, 0x00B9, 0x00B3, 0x00B2, 0x25A0, 0x00A0 /* 0xF0 */
240 /* ----------------------------------------------------------------------- */
242 #define IBM850CHAR_START 0x00A0
243 #define IBM850CHAR_END 0x00FF
244 static unsigned char const aImplIBM850ToCharTab[IBM850CHAR_END - IBM850CHAR_START + 1] =
246 /* 0 1 2 3 4 5 6 7 */
247 /* 8 9 A B C D E F */
248 0xFF, 0xAD, 0xBD, 0x9C, 0xCF, 0xBE, 0xDD, 0xF5, /* 0x00A0 */
249 0xF9, 0xB8, 0xA6, 0xAE, 0xAA, 0xF0, 0xA9, 0xEE, /* 0x00A0 */
250 0xF8, 0xF1, 0xFD, 0xFC, 0xEF, 0xE6, 0xF4, 0xFA, /* 0x00B0 */
251 0xF7, 0xFB, 0xA7, 0xAF, 0xAC, 0xAB, 0xF3, 0xA8, /* 0x00B0 */
252 0xB7, 0xB5, 0xB6, 0xC7, 0x8E, 0x8F, 0x92, 0x80, /* 0x00C0 */
253 0xD4, 0x90, 0xD2, 0xD3, 0xDE, 0xD6, 0xD7, 0xD8, /* 0x00C0 */
254 0xD1, 0xA5, 0xE3, 0xE0, 0xE2, 0xE5, 0x99, 0x9E, /* 0x00D0 */
255 0x9D, 0xEB, 0xE9, 0xEA, 0x9A, 0xED, 0xE8, 0xE1, /* 0x00D0 */
256 0x85, 0xA0, 0x83, 0xC6, 0x84, 0x86, 0x91, 0x87, /* 0x00E0 */
257 0x8A, 0x82, 0x88, 0x89, 0x8D, 0xA1, 0x8C, 0x8B, /* 0x00E0 */
258 0xD0, 0xA4, 0x95, 0xA2, 0x93, 0xE4, 0x94, 0xF6, /* 0x00F0 */
259 0x9B, 0x97, 0xA3, 0x96, 0x81, 0xEC, 0xE7, 0x98 /* 0x00F0 */
262 /* ----------------------------------------------------------------------- */
264 #define IBM850TOCHARTABEX_COUNT 33
265 static ImplUniCharTabData const aImplIBM850ToCharTabEx[IBM850TOCHARTABEX_COUNT] =
302 /* ----------------------------------------------------------------------- */
304 static ImplByteConvertData const aImplIBM850ByteCvtData =
308 IBM850UNI_START, IBM850UNI_END,
309 NOTABUNI_START, NOTABUNI_END,
310 aImplIBM850ToCharTab,
312 aImplIBM850ToCharTabEx,
313 IBM850CHAR_START, IBM850CHAR_END,
314 NOTABCHAR_START, NOTABCHAR_END,
315 IBM850TOCHARTABEX_COUNT
318 /* ----------------------------------------------------------------------- */
320 static ImplTextEncodingData const aImplIBM850TextEncodingData
321 = { { &aImplIBM850ByteCvtData,
322 ImplUpperCharToUnicode,
323 sal::detail::textenc::convertUnicodeToChar,
336 RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
337 /* DOS/OS2, SCRIPT_LATIN, pc code page 850 */
339 /* ======================================================================= */
342 /* Dos Standard CharSet for Portugiese */
343 /* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
344 /* Convert-Tables: mappings/vendors/micsft/pc/cp860.txt from 04/24/96 Version 2.00 */
345 /* Last-Changes from us: */
347 /* ----------------------------------------------------------------------- */
349 #define IBM860UNI_START 0x80
350 #define IBM860UNI_END 0xFF
351 static sal_uInt16 const aImplIBM860ToUniTab[IBM860UNI_END - IBM860UNI_START + 1] =
353 /* 0 1 2 3 4 5 6 7 */
354 /* 8 9 A B C D E F */
355 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E3, 0x00E0, 0x00C1, 0x00E7, /* 0x80 */
356 0x00EA, 0x00CA, 0x00E8, 0x00CD, 0x00D4, 0x00EC, 0x00C3, 0x00C2, /* 0x80 */
357 0x00C9, 0x00C0, 0x00C8, 0x00F4, 0x00F5, 0x00F2, 0x00DA, 0x00F9, /* 0x90 */
358 0x00CC, 0x00D5, 0x00DC, 0x00A2, 0x00A3, 0x00D9, 0x20A7, 0x00D3, /* 0x90 */
359 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA, /* 0xA0 */
360 0x00BF, 0x00D2, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, /* 0xA0 */
361 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, /* 0xB0 */
362 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, /* 0xB0 */
363 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, /* 0xC0 */
364 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, /* 0xC0 */
365 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, /* 0xD0 */
366 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, /* 0xD0 */
367 0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, /* 0xE0 */
368 0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, /* 0xE0 */
369 0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, /* 0xF0 */
370 0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0 /* 0xF0 */
373 /* ----------------------------------------------------------------------- */
375 #define IBM860CHAR_START 0x00A0
376 #define IBM860CHAR_END 0x00FC
377 static unsigned char const aImplIBM860ToCharTab[IBM860CHAR_END - IBM860CHAR_START + 1] =
379 /* 0 1 2 3 4 5 6 7 */
380 /* 8 9 A B C D E F */
381 0xFF, 0xAD, 0x9B, 0x9C, 0 , 0, 0, 0, /* 0x00A0 */
382 0, 0, 0xA6, 0xAE, 0xAA, 0, 0, 0, /* 0x00A0 */
383 0xF8, 0xF1, 0xFD, 0, 0, 0xE6, 0, 0xFA, /* 0x00B0 */
384 0, 0, 0xA7, 0xAF, 0xAC, 0xAB, 0, 0xA8, /* 0x00B0 */
385 0x91, 0x86, 0x8F, 0x8E, 0, 0, 0, 0x80, /* 0x00C0 */
386 0x92, 0x90, 0x89, 0, 0x98, 0x8B, 0, 0, /* 0x00C0 */
387 0, 0xA5, 0xA9, 0x9F, 0x8C, 0x99, 0, 0, /* 0x00D0 */
388 0, 0x9D, 0x96, 0, 0x9A, 0, 0, 0xE1, /* 0x00D0 */
389 0x85, 0xA0, 0x83, 0x84, 0, 0, 0, 0x87, /* 0x00E0 */
390 0x8A, 0x82, 0x88, 0, 0x8D, 0xA1, 0, 0, /* 0x00E0 */
391 0, 0xA4, 0x95, 0xA2, 0x93, 0x94, 0, 0xF6, /* 0x00F0 */
392 0, 0x97, 0xA3, 0, 0x81 /* 0x00F0 */
395 /* ----------------------------------------------------------------------- */
397 #define IBM860TOCHARTABEX_COUNT 73
398 static ImplUniCharTabData const aImplIBM860ToCharTabEx[IBM860TOCHARTABEX_COUNT] =
475 /* ----------------------------------------------------------------------- */
477 static ImplByteConvertData const aImplIBM860ByteCvtData =
481 IBM860UNI_START, IBM860UNI_END,
482 NOTABUNI_START, NOTABUNI_END,
483 aImplIBM860ToCharTab,
485 aImplIBM860ToCharTabEx,
486 IBM860CHAR_START, IBM860CHAR_END,
487 NOTABCHAR_START, NOTABCHAR_END,
488 IBM860TOCHARTABEX_COUNT
491 /* ----------------------------------------------------------------------- */
493 static ImplTextEncodingData const aImplIBM860TextEncodingData
494 = { { &aImplIBM860ByteCvtData,
495 ImplUpperCharToUnicode,
496 sal::detail::textenc::convertUnicodeToChar,
509 RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
510 /* DOS/OS2, SCRIPT_LATIN, pc code page 860 */
512 /* ======================================================================= */
515 /* Dos Standard CharSet for Icelandic */
516 /* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
517 /* Convert-Tables: mappings/vendors/micsft/pc/cp861.txt from 04/24/96 Version 2.00 */
518 /* Last-Changes from us: */
520 /* ----------------------------------------------------------------------- */
522 #define IBM861UNI_START 0x80
523 #define IBM861UNI_END 0xFF
524 static sal_uInt16 const aImplIBM861ToUniTab[IBM861UNI_END - IBM861UNI_START + 1] =
526 /* 0 1 2 3 4 5 6 7 */
527 /* 8 9 A B C D E F */
528 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7, /* 0x80 */
529 0x00EA, 0x00EB, 0x00E8, 0x00D0, 0x00F0, 0x00DE, 0x00C4, 0x00C5, /* 0x80 */
530 0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00FE, 0x00FB, 0x00DD, /* 0x90 */
531 0x00FD, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x20A7, 0x0192, /* 0x90 */
532 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00C1, 0x00CD, 0x00D3, 0x00DA, /* 0xA0 */
533 0x00BF, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, /* 0xA0 */
534 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, /* 0xB0 */
535 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, /* 0xB0 */
536 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, /* 0xC0 */
537 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, /* 0xC0 */
538 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, /* 0xD0 */
539 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, /* 0xD0 */
540 0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, /* 0xE0 */
541 0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, /* 0xE0 */
542 0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, /* 0xF0 */
543 0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0 /* 0xF0 */
546 /* ----------------------------------------------------------------------- */
548 #define IBM861CHAR_START 0x00A0
549 #define IBM861CHAR_END 0x00FE
550 static unsigned char const aImplIBM861ToCharTab[IBM861CHAR_END - IBM861CHAR_START + 1] =
552 /* 0 1 2 3 4 5 6 7 */
553 /* 8 9 A B C D E F */
554 0xFF, 0xAD, 0, 0x9C, 0, 0, 0, 0, /* 0x00A0 */
555 0, 0, 0, 0xAE, 0xAA, 0, 0, 0, /* 0x00A0 */
556 0xF8, 0xF1, 0xFD, 0, 0, 0xE6, 0, 0xFA, /* 0x00B0 */
557 0, 0, 0, 0xAF, 0xAC, 0xAB, 0, 0xA8, /* 0x00B0 */
558 0, 0xA4, 0, 0, 0x8E, 0x8F, 0x92, 0x80, /* 0x00C0 */
559 0, 0x90, 0, 0, 0, 0xA5, 0, 0, /* 0x00C0 */
560 0x8B, 0, 0, 0xA6, 0, 0, 0x99, 0, /* 0x00D0 */
561 0x9D, 0, 0xA7, 0, 0x9A, 0x97, 0x8D, 0xE1, /* 0x00D0 */
562 0x85, 0xA0, 0x83, 0, 0x84, 0x86, 0x91, 0x87, /* 0x00E0 */
563 0x8A, 0x82, 0x88, 0x89, 0, 0xA1, 0, 0, /* 0x00E0 */
564 0x8C, 0, 0, 0xA2, 0x93, 0, 0x94, 0xF6, /* 0x00F0 */
565 0x9B, 0, 0xA3, 0x96, 0x81, 0x98, 0x95 /* 0x00F0 */
568 /* ----------------------------------------------------------------------- */
570 #define IBM861TOCHARTABEX_COUNT 75
571 static ImplUniCharTabData const aImplIBM861ToCharTabEx[IBM861TOCHARTABEX_COUNT] =
650 /* ----------------------------------------------------------------------- */
652 static ImplByteConvertData const aImplIBM861ByteCvtData =
656 IBM861UNI_START, IBM861UNI_END,
657 NOTABUNI_START, NOTABUNI_END,
658 aImplIBM861ToCharTab,
660 aImplIBM861ToCharTabEx,
661 IBM861CHAR_START, IBM861CHAR_END,
662 NOTABCHAR_START, NOTABCHAR_END,
663 IBM861TOCHARTABEX_COUNT
666 /* ----------------------------------------------------------------------- */
668 static ImplTextEncodingData const aImplIBM861TextEncodingData
669 = { { &aImplIBM861ByteCvtData,
670 ImplUpperCharToUnicode,
671 sal::detail::textenc::convertUnicodeToChar,
684 RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
685 /* DOS/OS2, SCRIPT_LATIN, pc code page 861, mac encoding 37 */
687 /* ======================================================================= */
690 /* Dos Standard CharSet for Canada-France */
691 /* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
692 /* Convert-Tables: mappings/vendors/micsft/pc/cp863.txt from 04/24/96 Version 2.00 */
693 /* Last-Changes from us: */
695 /* ----------------------------------------------------------------------- */
697 #define IBM863UNI_START 0x80
698 #define IBM863UNI_END 0xFF
699 static sal_uInt16 const aImplIBM863ToUniTab[IBM863UNI_END - IBM863UNI_START + 1] =
701 /* 0 1 2 3 4 5 6 7 */
702 /* 8 9 A B C D E F */
703 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00C2, 0x00E0, 0x00B6, 0x00E7, /* 0x80 */
704 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x2017, 0x00C0, 0x00A7, /* 0x80 */
705 0x00C9, 0x00C8, 0x00CA, 0x00F4, 0x00CB, 0x00CF, 0x00FB, 0x00F9, /* 0x90 */
706 0x00A4, 0x00D4, 0x00DC, 0x00A2, 0x00A3, 0x00D9, 0x00DB, 0x0192, /* 0x90 */
707 0x00A6, 0x00B4, 0x00F3, 0x00FA, 0x00A8, 0x00B8, 0x00B3, 0x00AF, /* 0xA0 */
708 0x00CE, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00BE, 0x00AB, 0x00BB, /* 0xA0 */
709 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, /* 0xB0 */
710 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, /* 0xB0 */
711 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, /* 0xC0 */
712 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, /* 0xC0 */
713 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, /* 0xD0 */
714 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, /* 0xD0 */
715 0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, /* 0xE0 */
716 0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, /* 0xE0 */
717 0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, /* 0xF0 */
718 0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0 /* 0xF0 */
721 /* ----------------------------------------------------------------------- */
723 #define IBM863CHAR_START 0x00A0
724 #define IBM863CHAR_END 0x00FC
725 static unsigned char const aImplIBM863ToCharTab[IBM863CHAR_END - IBM863CHAR_START + 1] =
727 /* 0 1 2 3 4 5 6 7 */
728 /* 8 9 A B C D E F */
729 0xFF, 0, 0x9B, 0x9C, 0x98, 0, 0xA0, 0x8F, /* 0x00A0 */
730 0xA4, 0, 0, 0xAE, 0xAA, 0, 0, 0xA7, /* 0x00A0 */
731 0xF8, 0xF1, 0xFD, 0xA6, 0xA1, 0xE6, 0x86, 0xFA, /* 0x00B0 */
732 0xA5, 0, 0, 0xAF, 0xAC, 0xAB, 0xAD, 0, /* 0x00B0 */
733 0x8E, 0, 0x84, 0, 0, 0, 0, 0x80, /* 0x00C0 */
734 0x91, 0x90, 0x92, 0x94, 0, 0, 0xA8, 0x95, /* 0x00C0 */
735 0, 0, 0, 0, 0x99, 0, 0, 0, /* 0x00D0 */
736 0, 0x9D, 0, 0x9E, 0x9A, 0, 0, 0xE1, /* 0x00D0 */
737 0x85, 0, 0x83, 0, 0, 0, 0, 0x87, /* 0x00E0 */
738 0x8A, 0x82, 0x88, 0x89, 0, 0, 0x8C, 0x8B, /* 0x00E0 */
739 0, 0, 0, 0xA2, 0x93, 0, 0, 0xF6, /* 0x00F0 */
740 0, 0x97, 0xA3, 0x96, 0x81 /* 0x00F0 */
743 /* ----------------------------------------------------------------------- */
745 #define IBM863TOCHARTABEX_COUNT 75
746 static ImplUniCharTabData const aImplIBM863ToCharTabEx[IBM863TOCHARTABEX_COUNT] =
825 /* ----------------------------------------------------------------------- */
827 static ImplByteConvertData const aImplIBM863ByteCvtData =
831 IBM863UNI_START, IBM863UNI_END,
832 NOTABUNI_START, NOTABUNI_END,
833 aImplIBM863ToCharTab,
835 aImplIBM863ToCharTabEx,
836 IBM863CHAR_START, IBM863CHAR_END,
837 NOTABCHAR_START, NOTABCHAR_END,
838 IBM863TOCHARTABEX_COUNT
841 /* ----------------------------------------------------------------------- */
843 static ImplTextEncodingData const aImplIBM863TextEncodingData
844 = { { &aImplIBM863ByteCvtData,
845 ImplUpperCharToUnicode,
846 sal::detail::textenc::convertUnicodeToChar,
859 RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
860 /* DOS/OS2, SCRIPT_LATIN, pc code page 863 */
862 /* ======================================================================= */
865 /* Dos Standard CharSet for Nordic */
866 /* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
867 /* Convert-Tables: mappings/vendors/micsft/pc/cp865.txt from 04/24/96 Version 2.00 */
868 /* Last-Changes from us: */
870 /* ----------------------------------------------------------------------- */
872 #define IBM865UNI_START 0x80
873 #define IBM865UNI_END 0xFF
874 static sal_uInt16 const aImplIBM865ToUniTab[IBM865UNI_END - IBM865UNI_START + 1] =
876 /* 0 1 2 3 4 5 6 7 */
877 /* 8 9 A B C D E F */
878 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7, /* 0x80 */
879 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5, /* 0x80 */
880 0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9, /* 0x90 */
881 0x00FF, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x20A7, 0x0192, /* 0x90 */
882 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA, /* 0xA0 */
883 0x00BF, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00A4, /* 0xA0 */
884 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, /* 0xB0 */
885 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, /* 0xB0 */
886 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, /* 0xC0 */
887 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, /* 0xC0 */
888 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, /* 0xD0 */
889 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, /* 0xD0 */
890 0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, /* 0xE0 */
891 0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, /* 0xE0 */
892 0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, /* 0xF0 */
893 0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0 /* 0xF0 */
896 /* ----------------------------------------------------------------------- */
898 #define IBM865CHAR_START 0x00A0
899 #define IBM865CHAR_END 0x00FF
900 static unsigned char const aImplIBM865ToCharTab[IBM865CHAR_END - IBM865CHAR_START + 1] =
902 /* 0 1 2 3 4 5 6 7 */
903 /* 8 9 A B C D E F */
904 0xFF, 0xAD, 0, 0x9C, 0xAF, 0, 0, 0, /* 0x00A0 */
905 0, 0, 0xA6, 0xAE, 0xAA, 0, 0, 0, /* 0x00A0 */
906 0xF8, 0xF1, 0xFD, 0, 0, 0xE6, 0, 0xFA, /* 0x00B0 */
907 0, 0, 0xA7, 0, 0xAC, 0xAB, 0, 0xA8, /* 0x00B0 */
908 0, 0, 0, 0, 0x8E, 0x8F, 0x92, 0x80, /* 0x00C0 */
909 0, 0x90, 0, 0, 0, 0, 0, 0, /* 0x00C0 */
910 0, 0xA5, 0, 0, 0, 0, 0x99, 0, /* 0x00D0 */
911 0x9D, 0, 0, 0, 0x9A, 0, 0, 0xE1, /* 0x00D0 */
912 0x85, 0xA0, 0x83, 0, 0x84, 0x86, 0x91, 0x87, /* 0x00E0 */
913 0x8A, 0x82, 0x88, 0x89, 0x8D, 0xA1, 0x8C, 0x8B, /* 0x00E0 */
914 0, 0xA4, 0x95, 0xA2, 0x93, 0, 0x94, 0xF6, /* 0x00F0 */
915 0x9B, 0x97, 0xA3, 0x96, 0x81, 0, 0, 0x98 /* 0x00F0 */
918 /* ----------------------------------------------------------------------- */
920 #define IBM865TOCHARTABEX_COUNT 75
921 static ImplUniCharTabData const aImplIBM865ToCharTabEx[IBM865TOCHARTABEX_COUNT] =
1000 /* ----------------------------------------------------------------------- */
1002 static ImplByteConvertData const aImplIBM865ByteCvtData =
1004 aImplIBM865ToUniTab,
1006 IBM865UNI_START, IBM865UNI_END,
1007 NOTABUNI_START, NOTABUNI_END,
1008 aImplIBM865ToCharTab,
1010 aImplIBM865ToCharTabEx,
1011 IBM865CHAR_START, IBM865CHAR_END,
1012 NOTABCHAR_START, NOTABCHAR_END,
1013 IBM865TOCHARTABEX_COUNT
1016 /* ----------------------------------------------------------------------- */
1018 static ImplTextEncodingData const aImplIBM865TextEncodingData
1019 = { { &aImplIBM865ByteCvtData,
1020 ImplUpperCharToUnicode,
1021 sal::detail::textenc::convertUnicodeToChar,
1034 RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
1035 /* DOS/OS2, SCRIPT_LATIN, pc code page 865 */
1037 /* ======================================================================= */
1040 /* ungefaehr wie Latin1 */
1041 /* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme, 0x80-0x9F Control-Caracter wie in Unicode */
1042 /* Convert-Tables: mappings/iso8859/8859-14.txt from 07/27/99 Version 1.0 (based on Unicode 3.0) */
1043 /* Last-Changes from us: */
1045 #define ISO885914UNI_START 0xA0
1046 #define ISO885914UNI_END 0xFF
1047 static sal_uInt16 const aImplISO885914ToUniTab[ISO885914UNI_END - ISO885914UNI_START + 1] =
1049 /* 0 1 2 3 4 5 6 7 */
1050 /* 8 9 A B C D E F */
1051 0x00A0, 0x1E02, 0x1E03, 0x00A3, 0x010A, 0x010B, 0x1E0A, 0x00A7, /* 0xA0 */
1052 0x1E80, 0x00A9, 0x1E82, 0x1E0B, 0x1EF2, 0x00AD, 0x00AE, 0x0178, /* 0xA0 */
1053 0x1E1E, 0x1E1F, 0x0120, 0x0121, 0x1E40, 0x1E41, 0x00B6, 0x1E56, /* 0xB0 */
1054 0x1E81, 0x1E57, 0x1E83, 0x1E60, 0x1EF3, 0x1E84, 0x1E85, 0x1E61, /* 0xB0 */
1055 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, /* 0xC0 */
1056 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, /* 0xC0 */
1057 0x0174, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x1E6A, /* 0xD0 */
1058 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x0176, 0x00DF, /* 0xD0 */
1059 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, /* 0xE0 */
1060 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, /* 0xE0 */
1061 0x0175, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x1E6B, /* 0xF0 */
1062 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x0177, 0x00FF /* 0xF0 */
1065 /* ----------------------------------------------------------------------- */
1067 #define ISO885914CHAR_START 0x00C0
1068 #define ISO885914CHAR_END 0x00FF
1069 static unsigned char const aImplISO885914ToCharTab[ISO885914CHAR_END - ISO885914CHAR_START + 1] =
1071 /* 0 1 2 3 4 5 6 7 */
1072 /* 8 9 A B C D E F */
1073 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, /* 0x00C0 */
1074 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, /* 0x00C0 */
1075 0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0, /* 0x00D0 */
1076 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0, 0xDF, /* 0x00D0 */
1077 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, /* 0x00E0 */
1078 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, /* 0x00E0 */
1079 0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0, /* 0x00F0 */
1080 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0, 0xFF /* 0x00F0 */
1083 /* ----------------------------------------------------------------------- */
1085 #define ISO885914TOCHARTABEX_COUNT 38
1086 static ImplUniCharTabData const aImplISO885914ToCharTabEx[ISO885914TOCHARTABEX_COUNT] =
1088 { 0x00A0, 0xA0, 0 },
1089 { 0x00A3, 0xA3, 0 },
1090 { 0x00A7, 0xA7, 0 },
1091 { 0x00A9, 0xA9, 0 },
1092 { 0x00AD, 0xAD, 0 },
1093 { 0x00AE, 0xAE, 0 },
1094 { 0x00B6, 0xB6, 0 },
1095 { 0x010A, 0xA4, 0 },
1096 { 0x010B, 0xA5, 0 },
1097 { 0x0120, 0xB2, 0 },
1098 { 0x0121, 0xB3, 0 },
1099 { 0x0174, 0xD0, 0 },
1100 { 0x0175, 0xF0, 0 },
1101 { 0x0176, 0xDE, 0 },
1102 { 0x0177, 0xFE, 0 },
1103 { 0x0178, 0xAF, 0 },
1104 { 0x1E02, 0xA1, 0 },
1105 { 0x1E03, 0xA2, 0 },
1106 { 0x1E0A, 0xA6, 0 },
1107 { 0x1E0B, 0xAB, 0 },
1108 { 0x1E1E, 0xB0, 0 },
1109 { 0x1E1F, 0xB1, 0 },
1110 { 0x1E40, 0xB4, 0 },
1111 { 0x1E41, 0xB5, 0 },
1112 { 0x1E56, 0xB7, 0 },
1113 { 0x1E57, 0xB9, 0 },
1114 { 0x1E60, 0xBB, 0 },
1115 { 0x1E61, 0xBF, 0 },
1116 { 0x1E6A, 0xD7, 0 },
1117 { 0x1E6B, 0xF7, 0 },
1118 { 0x1E80, 0xA8, 0 },
1119 { 0x1E81, 0xB8, 0 },
1120 { 0x1E82, 0xAA, 0 },
1121 { 0x1E83, 0xBA, 0 },
1122 { 0x1E84, 0xBD, 0 },
1123 { 0x1E85, 0xBE, 0 },
1124 { 0x1EF2, 0xAC, 0 },
1128 /* ----------------------------------------------------------------------- */
1130 static ImplByteConvertData const aImplISO885914ByteCvtData =
1132 aImplISO885914ToUniTab,
1133 aImpl8090SameToUniTab,
1134 ISO885914UNI_START, ISO885914UNI_END,
1135 SAME8090UNI_START, SAME8090UNI_END,
1136 aImplISO885914ToCharTab,
1137 aImpl8090SameToCharTab,
1138 aImplISO885914ToCharTabEx,
1139 ISO885914CHAR_START, ISO885914CHAR_END,
1140 SAME8090CHAR_START, SAME8090CHAR_END,
1141 ISO885914TOCHARTABEX_COUNT
1144 /* ----------------------------------------------------------------------- */
1146 static ImplTextEncodingData const aImplISO885914TextEncodingData
1147 = { { &aImplISO885914ByteCvtData,
1148 sal::detail::textenc::convertCharToUnicode,
1149 sal::detail::textenc::convertUnicodeToChar,
1162 RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
1163 /* SCRIPT_LATIN, pc code page 850 */
1165 /* ======================================================================= */
1168 /* ungefaehr wie Latin1, jedoch mit Euro (ehemaliges CURRENCY-Symbol an A4) */
1169 /* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme, 0x80-0x9F Control-Caracter wie in Unicode */
1170 /* Convert-Tables: mappings/iso8859/8859-15.txt from 07/27/99 Version 1.0 (based on Unicode 3.0) */
1171 /* Last-Changes from us: */
1173 #define ISO885915UNI_START 0xA0
1174 #define ISO885915UNI_END 0xFF
1175 static sal_uInt16 const aImplISO885915ToUniTab[ISO885915UNI_END - ISO885915UNI_START + 1] =
1177 /* 0 1 2 3 4 5 6 7 */
1178 /* 8 9 A B C D E F */
1179 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x20AC, 0x00A5, 0x0160, 0x00A7, /* 0xA0 */
1180 0x0161, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, /* 0xA0 */
1181 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x017D, 0x00B5, 0x00B6, 0x00B7, /* 0xB0 */
1182 0x017E, 0x00B9, 0x00BA, 0x00BB, 0x0152, 0x0153, 0x0178, 0x00BF, /* 0xB0 */
1183 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, /* 0xC0 */
1184 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, /* 0xC0 */
1185 0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, /* 0xD0 */
1186 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF, /* 0xD0 */
1187 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, /* 0xE0 */
1188 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, /* 0xE0 */
1189 0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, /* 0xF0 */
1190 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF /* 0xF0 */
1193 /* ----------------------------------------------------------------------- */
1195 #define ISO885915CHAR_START 0x00A0
1196 #define ISO885915CHAR_END 0x00FF
1197 static unsigned char const aImplISO885915ToCharTab[ISO885915CHAR_END - ISO885915CHAR_START + 1] =
1199 /* 0 1 2 3 4 5 6 7 */
1200 /* 8 9 A B C D E F */
1201 0xA0, 0xA1, 0xA2, 0xA3, 0, 0xA5, 0, 0xA7, /* 0x00A0 */
1202 0, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, /* 0x00A0 */
1203 0xB0, 0xB1, 0xB2, 0xB3, 0, 0xB5, 0xB6, 0xB7, /* 0x00B0 */
1204 0, 0xB9, 0xBA, 0xBB, 0, 0, 0, 0xBF, /* 0x00B0 */
1205 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, /* 0x00C0 */
1206 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, /* 0x00C0 */
1207 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, /* 0x00D0 */
1208 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, /* 0x00D0 */
1209 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, /* 0x00E0 */
1210 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, /* 0x00E0 */
1211 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, /* 0x00F0 */
1212 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF /* 0x00F0 */
1215 /* ----------------------------------------------------------------------- */
1217 #define ISO885915TOCHARTABEX_COUNT 8
1218 static ImplUniCharTabData const aImplISO885915ToCharTabEx[ISO885915TOCHARTABEX_COUNT] =
1220 { 0x0152, 0xBC, 0 },
1221 { 0x0153, 0xBD, 0 },
1222 { 0x0160, 0xA6, 0 },
1223 { 0x0161, 0xA8, 0 },
1224 { 0x0178, 0xBE, 0 },
1225 { 0x017D, 0xB4, 0 },
1226 { 0x017E, 0xB8, 0 },
1230 /* ----------------------------------------------------------------------- */
1232 static ImplByteConvertData const aImplISO885915ByteCvtData =
1234 aImplISO885915ToUniTab,
1235 aImpl8090SameToUniTab,
1236 ISO885915UNI_START, ISO885915UNI_END,
1237 SAME8090UNI_START, SAME8090UNI_END,
1238 aImplISO885915ToCharTab,
1239 aImpl8090SameToCharTab,
1240 aImplISO885915ToCharTabEx,
1241 ISO885915CHAR_START, ISO885915CHAR_END,
1242 SAME8090CHAR_START, SAME8090CHAR_END,
1243 ISO885915TOCHARTABEX_COUNT
1246 /* ----------------------------------------------------------------------- */
1248 static ImplTextEncodingData const aImplISO885915TextEncodingData
1249 = { { &aImplISO885915ByteCvtData,
1250 sal::detail::textenc::convertCharToUnicode,
1251 sal::detail::textenc::convertUnicodeToChar,
1264 RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
1265 /* SCRIPT_LATIN, pc code page 850 */
1267 /* ======================================================================= */
1270 /* Apple CharSet for Iceland */
1271 /* 1-Byte, 0x00-0x7F ASCII, jedoch eigentich Sonderzeichen zwischen 0x00-0x1F */
1272 /* die wir aber nicht beruecksichtigen */
1273 /* Convert-Tables: mappings/vendors/apple/iceland.txt from 02/05/98 */
1274 /* Last-Changes from us: */
1276 #define APPLEICELANDUNI_START 0x80
1277 #define APPLEICELANDUNI_END 0xFF
1278 static sal_uInt16 const aImplAPPLEICELANDToUniTab[APPLEICELANDUNI_END - APPLEICELANDUNI_START + 1] =
1280 /* 0 1 2 3 4 5 6 7 */
1281 /* 8 9 A B C D E F */
1282 0x00C4, 0x00C5, 0x00C7, 0x00C9, 0x00D1, 0x00D6, 0x00DC, 0x00E1, /* 0x80 */
1283 0x00E0, 0x00E2, 0x00E4, 0x00E3, 0x00E5, 0x00E7, 0x00E9, 0x00E8, /* 0x80 */
1284 0x00EA, 0x00EB, 0x00ED, 0x00EC, 0x00EE, 0x00EF, 0x00F1, 0x00F3, /* 0x90 */
1285 0x00F2, 0x00F4, 0x00F6, 0x00F5, 0x00FA, 0x00F9, 0x00FB, 0x00FC, /* 0x90 */
1286 0x00DD, 0x00B0, 0x00A2, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x00DF, /* 0xA0 */
1287 0x00AE, 0x00A9, 0x2122, 0x00B4, 0x00A8, 0x2260, 0x00C6, 0x00D8, /* 0xA0 */
1288 0x221E, 0x00B1, 0x2264, 0x2265, 0x00A5, 0x00B5, 0x2202, 0x2211, /* 0xB0 */
1289 0x220F, 0x03C0, 0x222B, 0x00AA, 0x00BA, 0x03A9, 0x00E6, 0x00F8, /* 0xB0 */
1290 0x00BF, 0x00A1, 0x00AC, 0x221A, 0x0192, 0x2248, 0x2206, 0x00AB, /* 0xC0 */
1291 0x00BB, 0x2026, 0x00A0, 0x00C0, 0x00C3, 0x00D5, 0x0152, 0x0153, /* 0xC0 */
1292 0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x25CA, /* 0xD0 */
1293 0x00FF, 0x0178, 0x2044, 0x00A4, 0x00D0, 0x00F0, 0x00DE, 0x00FE, /* 0xD0 */
1294 0x00FD, 0x00B7, 0x201A, 0x201E, 0x2030, 0x00C2, 0x00CA, 0x00C1, /* 0xE0 */
1295 0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF, 0x00CC, 0x00D3, 0x00D4, /* 0xE0 */
1296 0xF8FF, 0x00D2, 0x00DA, 0x00DB, 0x00D9, 0x0131, 0x02C6, 0x02DC, /* 0xF0 */
1297 0x00AF, 0x02D8, 0x02D9, 0x02DA, 0x00B8, 0x02DD, 0x02DB, 0x02C7 /* 0xF0 */
1300 /* ----------------------------------------------------------------------- */
1302 #define APPLEICELANDCHAR_START 0x00A0
1303 #define APPLEICELANDCHAR_END 0x00FF
1304 static unsigned char const aImplAPPLEICELANDToCharTab[APPLEICELANDCHAR_END - APPLEICELANDCHAR_START + 1] =
1306 /* 0 1 2 3 4 5 6 7 */
1307 /* 8 9 A B C D E F */
1308 0xCA, 0xC1, 0xA2, 0xA3, 0xDB, 0xB4, 0, 0xA4, /* 0x00A0 */
1309 0xAC, 0xA9, 0xBB, 0xC7, 0xC2, 0, 0xA8, 0xF8, /* 0x00A0 */
1310 0xA1, 0xB1, 0, 0, 0xAB, 0xB5, 0xA6, 0xE1, /* 0x00B0 */
1311 0xFC, 0, 0xBC, 0xC8, 0, 0, 0, 0xC0, /* 0x00B0 */
1312 0xCB, 0xE7, 0xE5, 0xCC, 0x80, 0x81, 0xAE, 0x82, /* 0x00C0 */
1313 0xE9, 0x83, 0xE6, 0xE8, 0xED, 0xEA, 0xEB, 0xEC, /* 0x00C0 */
1314 0xDC, 0x84, 0xF1, 0xEE, 0xEF, 0xCD, 0x85, 0, /* 0x00D0 */
1315 0xAF, 0xF4, 0xF2, 0xF3, 0x86, 0xA0, 0xDE, 0xA7, /* 0x00D0 */
1316 0x88, 0x87, 0x89, 0x8B, 0x8A, 0x8C, 0xBE, 0x8D, /* 0x00E0 */
1317 0x8F, 0x8E, 0x90, 0x91, 0x93, 0x92, 0x94, 0x95, /* 0x00E0 */
1318 0xDD, 0x96, 0x98, 0x97, 0x99, 0x9B, 0x9A, 0xD6, /* 0x00F0 */
1319 0xBF, 0x9D, 0x9C, 0x9E, 0x9F, 0xE0, 0xDF, 0xD8 /* 0x00F0 */
1322 /* ----------------------------------------------------------------------- */
1324 #define APPLEICELANDTOCHARTABEX_COUNT 41
1325 static ImplUniCharTabData const aImplAPPLEICELANDToCharTabEx[APPLEICELANDTOCHARTABEX_COUNT] =
1327 { 0x0131, 0xF5, 0 },
1328 { 0x0152, 0xCE, 0 },
1329 { 0x0153, 0xCF, 0 },
1330 { 0x0178, 0xD9, 0 },
1331 { 0x0192, 0xC4, 0 },
1332 { 0x02C6, 0xF6, 0 },
1333 { 0x02C7, 0xFF, 0 },
1334 { 0x02D8, 0xF9, 0 },
1335 { 0x02D9, 0xFA, 0 },
1336 { 0x02DA, 0xFB, 0 },
1337 { 0x02DB, 0xFE, 0 },
1338 { 0x02DC, 0xF7, 0 },
1339 { 0x02DD, 0xFD, 0 },
1340 { 0x03A9, 0xBD, 0 },
1341 { 0x03C0, 0xB9, 0 },
1342 { 0x2013, 0xD0, 0 },
1343 { 0x2014, 0xD1, 0 },
1344 { 0x2018, 0xD4, 0 },
1345 { 0x2019, 0xD5, 0 },
1346 { 0x201A, 0xE2, 0 },
1347 { 0x201C, 0xD2, 0 },
1348 { 0x201D, 0xD3, 0 },
1349 { 0x201E, 0xE3, 0 },
1350 { 0x2022, 0xA5, 0 },
1351 { 0x2026, 0xC9, 0 },
1352 { 0x2030, 0xE4, 0 },
1353 { 0x2044, 0xDA, 0 },
1354 { 0x2122, 0xAA, 0 },
1355 { 0x2202, 0xB6, 0 },
1356 { 0x2206, 0xC6, 0 },
1357 { 0x220F, 0xB8, 0 },
1358 { 0x2211, 0xB7, 0 },
1359 { 0x221A, 0xC3, 0 },
1360 { 0x221E, 0xB0, 0 },
1361 { 0x222B, 0xBA, 0 },
1362 { 0x2248, 0xC5, 0 },
1363 { 0x2260, 0xAD, 0 },
1364 { 0x2264, 0xB2, 0 },
1365 { 0x2265, 0xB3, 0 },
1366 { 0x25CA, 0xD7, 0 },
1370 /* ----------------------------------------------------------------------- */
1372 static ImplByteConvertData const aImplAPPLEICELANDByteCvtData =
1374 aImplAPPLEICELANDToUniTab,
1376 APPLEICELANDUNI_START, APPLEICELANDUNI_END,
1377 NOTABUNI_START, NOTABUNI_END,
1378 aImplAPPLEICELANDToCharTab,
1380 aImplAPPLEICELANDToCharTabEx,
1381 APPLEICELANDCHAR_START, APPLEICELANDCHAR_END,
1382 NOTABCHAR_START, NOTABCHAR_END,
1383 APPLEICELANDTOCHARTABEX_COUNT
1386 /* ----------------------------------------------------------------------- */
1388 static ImplTextEncodingData const aImplAPPLEICELANDTextEncodingData
1389 = { { &aImplAPPLEICELANDByteCvtData,
1390 ImplUpperCharToUnicode,
1391 sal::detail::textenc::convertUnicodeToChar,
1404 RTL_TEXTENCODING_INFO_ASCII };
1405 /* MAC, SCRIPT_LATIN, pc code page 861, mac encoding 37 */
1407 /* ======================================================================= */
1410 /* Standard Apple CharSet for Western */
1411 /* 1-Byte, 0x00-0x7F ASCII, jedoch eigentich Sonderzeichen zwischen 0x00-0x1F */
1412 /* die wir aber nicht beruecksichtigen */
1413 /* Convert-Tables: mappings/vendors/apple/roman.txt from 08/18/98 */
1414 /* Last-Changes from us: */
1416 #define APPLEROMANUNI_START 0x80
1417 #define APPLEROMANUNI_END 0xFF
1418 static sal_uInt16 const aImplAPPLEROMANToUniTab[APPLEROMANUNI_END - APPLEROMANUNI_START + 1] =
1420 /* 0 1 2 3 4 5 6 7 */
1421 /* 8 9 A B C D E F */
1422 0x00C4, 0x00C5, 0x00C7, 0x00C9, 0x00D1, 0x00D6, 0x00DC, 0x00E1, /* 0x80 */
1423 0x00E0, 0x00E2, 0x00E4, 0x00E3, 0x00E5, 0x00E7, 0x00E9, 0x00E8, /* 0x80 */
1424 0x00EA, 0x00EB, 0x00ED, 0x00EC, 0x00EE, 0x00EF, 0x00F1, 0x00F3, /* 0x90 */
1425 0x00F2, 0x00F4, 0x00F6, 0x00F5, 0x00FA, 0x00F9, 0x00FB, 0x00FC, /* 0x90 */
1426 0x2020, 0x00B0, 0x00A2, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x00DF, /* 0xA0 */
1427 0x00AE, 0x00A9, 0x2122, 0x00B4, 0x00A8, 0x2260, 0x00C6, 0x00D8, /* 0xA0 */
1428 0x221E, 0x00B1, 0x2264, 0x2265, 0x00A5, 0x00B5, 0x2202, 0x2211, /* 0xB0 */
1429 0x220F, 0x03C0, 0x222B, 0x00AA, 0x00BA, 0x03A9, 0x00E6, 0x00F8, /* 0xB0 */
1430 0x00BF, 0x00A1, 0x00AC, 0x221A, 0x0192, 0x2248, 0x2206, 0x00AB, /* 0xC0 */
1431 0x00BB, 0x2026, 0x00A0, 0x00C0, 0x00C3, 0x00D5, 0x0152, 0x0153, /* 0xC0 */
1432 0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x25CA, /* 0xD0 */
1433 0x00FF, 0x0178, 0x2044, 0x20AC, 0x2039, 0x203A, 0xFB01, 0xFB02, /* 0xD0 */
1434 0x2021, 0x00B7, 0x201A, 0x201E, 0x2030, 0x00C2, 0x00CA, 0x00C1, /* 0xE0 */
1435 0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF, 0x00CC, 0x00D3, 0x00D4, /* 0xE0 */
1436 0xF8FF, 0x00D2, 0x00DA, 0x00DB, 0x00D9, 0x0131, 0x02C6, 0x02DC, /* 0xF0 */
1437 0x00AF, 0x02D8, 0x02D9, 0x02DA, 0x00B8, 0x02DD, 0x02DB, 0x02C7 /* 0xF0 */
1440 /* ----------------------------------------------------------------------- */
1442 #define APPLEROMANCHAR_START 0x00A0
1443 #define APPLEROMANCHAR_END 0x00FF
1444 static unsigned char const aImplAPPLEROMANToCharTab[APPLEROMANCHAR_END - APPLEROMANCHAR_START + 1] =
1446 /* 0 1 2 3 4 5 6 7 */
1447 /* 8 9 A B C D E F */
1448 0xCA, 0xC1, 0xA2, 0xA3, 0, 0xB4, 0, 0xA4, /* 0x00A0 */
1449 0xAC, 0xA9, 0xBB, 0xC7, 0xC2, 0, 0xA8, 0xF8, /* 0x00A0 */
1450 0xA1, 0xB1, 0, 0, 0xAB, 0xB5, 0xA6, 0xE1, /* 0x00B0 */
1451 0xFC, 0, 0xBC, 0xC8, 0, 0, 0, 0xC0, /* 0x00B0 */
1452 0xCB, 0xE7, 0xE5, 0xCC, 0x80, 0x81, 0xAE, 0x82, /* 0x00C0 */
1453 0xE9, 0x83, 0xE6, 0xE8, 0xED, 0xEA, 0xEB, 0xEC, /* 0x00C0 */
1454 0, 0x84, 0xF1, 0xEE, 0xEF, 0xCD, 0x85, 0, /* 0x00D0 */
1455 0xAF, 0xF4, 0xF2, 0xF3, 0x86, 0, 0, 0xA7, /* 0x00D0 */
1456 0x88, 0x87, 0x89, 0x8B, 0x8A, 0x8C, 0xBE, 0x8D, /* 0x00E0 */
1457 0x8F, 0x8E, 0x90, 0x91, 0x93, 0x92, 0x94, 0x95, /* 0x00E0 */
1458 0, 0x96, 0x98, 0x97, 0x99, 0x9B, 0x9A, 0xD6, /* 0x00F0 */
1459 0xBF, 0x9D, 0x9C, 0x9E, 0x9F, 0, 0, 0xD8 /* 0x00F0 */
1462 /* ----------------------------------------------------------------------- */
1464 #define APPLEROMANTOCHARTABEX_COUNT 48
1465 static ImplUniCharTabData const aImplAPPLEROMANToCharTabEx[APPLEROMANTOCHARTABEX_COUNT] =
1467 { 0x0131, 0xF5, 0 },
1468 { 0x0152, 0xCE, 0 },
1469 { 0x0153, 0xCF, 0 },
1470 { 0x0178, 0xD9, 0 },
1471 { 0x0192, 0xC4, 0 },
1472 { 0x02C6, 0xF6, 0 },
1473 { 0x02C7, 0xFF, 0 },
1474 { 0x02D8, 0xF9, 0 },
1475 { 0x02D9, 0xFA, 0 },
1476 { 0x02DA, 0xFB, 0 },
1477 { 0x02DB, 0xFE, 0 },
1478 { 0x02DC, 0xF7, 0 },
1479 { 0x02DD, 0xFD, 0 },
1480 { 0x03A9, 0xBD, 0 },
1481 { 0x03C0, 0xB9, 0 },
1482 { 0x2013, 0xD0, 0 },
1483 { 0x2014, 0xD1, 0 },
1484 { 0x2018, 0xD4, 0 },
1485 { 0x2019, 0xD5, 0 },
1486 { 0x201A, 0xE2, 0 },
1487 { 0x201C, 0xD2, 0 },
1488 { 0x201D, 0xD3, 0 },
1489 { 0x201E, 0xE3, 0 },
1490 { 0x2020, 0xA0, 0 },
1491 { 0x2021, 0xE0, 0 },
1492 { 0x2022, 0xA5, 0 },
1493 { 0x2026, 0xC9, 0 },
1494 { 0x2030, 0xE4, 0 },
1495 { 0x2039, 0xDC, 0 },
1496 { 0x203A, 0xDD, 0 },
1497 { 0x2044, 0xDA, 0 },
1498 { 0x20AC, 0xDB, 0 },
1499 { 0x2122, 0xAA, 0 },
1500 { 0x2202, 0xB6, 0 },
1501 { 0x2206, 0xC6, 0 },
1502 { 0x220F, 0xB8, 0 },
1503 { 0x2211, 0xB7, 0 },
1504 { 0x221A, 0xC3, 0 },
1505 { 0x221E, 0xB0, 0 },
1506 { 0x222B, 0xBA, 0 },
1507 { 0x2248, 0xC5, 0 },
1508 { 0x2260, 0xAD, 0 },
1509 { 0x2264, 0xB2, 0 },
1510 { 0x2265, 0xB3, 0 },
1511 { 0x25CA, 0xD7, 0 },
1512 { 0xF8FF, 0xF0, 0 },
1513 { 0xFB01, 0xDE, 0 },
1517 /* ----------------------------------------------------------------------- */
1519 static ImplByteConvertData const aImplAPPLEROMANByteCvtData =
1521 aImplAPPLEROMANToUniTab,
1523 APPLEROMANUNI_START, APPLEROMANUNI_END,
1524 NOTABUNI_START, NOTABUNI_END,
1525 aImplAPPLEROMANToCharTab,
1527 aImplAPPLEROMANToCharTabEx,
1528 APPLEROMANCHAR_START, APPLEROMANCHAR_END,
1529 NOTABCHAR_START, NOTABCHAR_END,
1530 APPLEROMANTOCHARTABEX_COUNT
1533 /* ----------------------------------------------------------------------- */
1535 static ImplTextEncodingData const aImplAPPLEROMANTextEncodingData
1536 = { { &aImplAPPLEROMANByteCvtData,
1537 ImplUpperCharToUnicode,
1538 sal::detail::textenc::convertUnicodeToChar,
1551 RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
1552 /* MAC, SCRIPT_LATIN, pc code page 850 */