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