/**************************************************************
 * 
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 * 
 *************************************************************/



/* ======================================================================= */

/* This file contain the tables for all 1 byte charsets, for the */
/* following scripts: easteurope, cyrillic, greek, turkish */

/* ======================================================================= */

/* IBM-737 */
/* Dos Standard CharSet for Greek */
/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
/* Convert-Tables: mappings/vendors/micsft/pc/cp737.txt from 04/24/96 Version 2.00 */
/* Last-Changes from us: */

/* ----------------------------------------------------------------------- */

#define IBM737UNI_START                 0x80
#define IBM737UNI_END                   0xFF
static sal_uInt16 const aImplIBM737ToUniTab[IBM737UNI_END - IBM737UNI_START + 1] =
{
/*       0       1       2       3       4       5       6       7 */
/*       8       9       A       B       C       D       E       F */
    0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, /* 0x80 */
    0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, 0x03A0, /* 0x80 */
    0x03A1, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9, /* 0x90 */
    0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 0x03B8, /* 0x90 */
    0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, 0x03C0, /* 0xA0 */
    0x03C1, 0x03C3, 0x03C2, 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, /* 0xA0 */
    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, /* 0xB0 */
    0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, /* 0xB0 */
    0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, /* 0xC0 */
    0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, /* 0xC0 */
    0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, /* 0xD0 */
    0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, /* 0xD0 */
    0x03C9, 0x03AC, 0x03AD, 0x03AE, 0x03CA, 0x03AF, 0x03CC, 0x03CD, /* 0xE0 */
    0x03CB, 0x03CE, 0x0386, 0x0388, 0x0389, 0x038A, 0x038C, 0x038E, /* 0xE0 */
    0x038F, 0x00B1, 0x2265, 0x2264, 0x03AA, 0x03AB, 0x00F7, 0x2248, /* 0xF0 */
    0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0  /* 0xF0 */
};

/* ----------------------------------------------------------------------- */

#define IBM737CHAR_START                0x0386
#define IBM737CHAR_END                  0x03CE
static sal_uChar const aImplIBM737ToCharTab[IBM737CHAR_END - IBM737CHAR_START + 1] =
{
/*     0     1     2     3     4     5     6     7 */
/*     8     9     A     B     C     D     E     F */
                                        0xEA,    0, /* 0x0380 */
    0xEB, 0xEC, 0xED,    0, 0xEE,    0, 0xEF, 0xF0, /* 0x0380 */
       0, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, /* 0x0390 */
    0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, /* 0x0390 */
    0x8F, 0x90,    0, 0x91, 0x92, 0x93, 0x94, 0x95, /* 0x03A0 */
    0x96, 0x97, 0xF4, 0xF5, 0xE1, 0xE2, 0xE3, 0xE5, /* 0x03A0 */
       0, 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, /* 0x03B0 */
    0x9F, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, /* 0x03B0 */
    0xA7, 0xA8, 0xAA, 0xA9, 0xAB, 0xAC, 0xAD, 0xAE, /* 0x03C0 */
    0xAF, 0xE0, 0xE4, 0xE8, 0xE6, 0xE7, 0xE9        /* 0x03C0 */
};

/* ----------------------------------------------------------------------- */

#define IBM737TOCHARTABEX_COUNT         61
static ImplUniCharTabData const aImplIBM737ToCharTabEx[IBM737TOCHARTABEX_COUNT] =
{
  { 0x00A0, 0xFF, 0 },
  { 0x00B0, 0xF8, 0 },
  { 0x00B1, 0xF1, 0 },
  { 0x00B2, 0xFD, 0 },
  { 0x00B7, 0xFA, 0 },
  { 0x00F7, 0xF6, 0 },
  { 0x207F, 0xFC, 0 },
  { 0x2219, 0xF9, 0 },
  { 0x221A, 0xFB, 0 },
  { 0x2248, 0xF7, 0 },
  { 0x2264, 0xF3, 0 },
  { 0x2265, 0xF2, 0 },
  { 0x2500, 0xC4, 0 },
  { 0x2502, 0xB3, 0 },
  { 0x250C, 0xDA, 0 },
  { 0x2510, 0xBF, 0 },
  { 0x2514, 0xC0, 0 },
  { 0x2518, 0xD9, 0 },
  { 0x251C, 0xC3, 0 },
  { 0x2524, 0xB4, 0 },
  { 0x252C, 0xC2, 0 },
  { 0x2534, 0xC1, 0 },
  { 0x253C, 0xC5, 0 },
  { 0x2550, 0xCD, 0 },
  { 0x2551, 0xBA, 0 },
  { 0x2552, 0xD5, 0 },
  { 0x2553, 0xD6, 0 },
  { 0x2554, 0xC9, 0 },
  { 0x2555, 0xB8, 0 },
  { 0x2556, 0xB7, 0 },
  { 0x2557, 0xBB, 0 },
  { 0x2558, 0xD4, 0 },
  { 0x2559, 0xD3, 0 },
  { 0x255A, 0xC8, 0 },
  { 0x255B, 0xBE, 0 },
  { 0x255C, 0xBD, 0 },
  { 0x255D, 0xBC, 0 },
  { 0x255E, 0xC6, 0 },
  { 0x255F, 0xC7, 0 },
  { 0x2560, 0xCC, 0 },
  { 0x2561, 0xB5, 0 },
  { 0x2562, 0xB6, 0 },
  { 0x2563, 0xB9, 0 },
  { 0x2564, 0xD1, 0 },
  { 0x2565, 0xD2, 0 },
  { 0x2566, 0xCB, 0 },
  { 0x2567, 0xCF, 0 },
  { 0x2568, 0xD0, 0 },
  { 0x2569, 0xCA, 0 },
  { 0x256A, 0xD8, 0 },
  { 0x256B, 0xD7, 0 },
  { 0x256C, 0xCE, 0 },
  { 0x2580, 0xDF, 0 },
  { 0x2584, 0xDC, 0 },
  { 0x2588, 0xDB, 0 },
  { 0x258C, 0xDD, 0 },
  { 0x2590, 0xDE, 0 },
  { 0x2591, 0xB0, 0 },
  { 0x2592, 0xB1, 0 },
  { 0x2593, 0xB2, 0 },
  { 0x25A0, 0xFE, 0 }
};

/* ----------------------------------------------------------------------- */

static ImplByteConvertData const aImplIBM737ByteCvtData =
{
    aImplIBM737ToUniTab,
    NULL,
    IBM737UNI_START, IBM737UNI_END,
    NOTABUNI_START, NOTABUNI_END,
    aImplIBM737ToCharTab,
    NULL,
    aImplIBM737ToCharTabEx,
    IBM737CHAR_START, IBM737CHAR_END,
    NOTABCHAR_START, NOTABCHAR_END,
    IBM737TOCHARTABEX_COUNT
};

/* ----------------------------------------------------------------------- */

static ImplTextEncodingData const aImplIBM737TextEncodingData
    = { { &aImplIBM737ByteCvtData,
          ImplCharToUnicode,
          ImplUnicodeToChar,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL },
        1,
        1,
        1,
        161,
        "iso8859-7",
        "iso-8859-7",
        RTL_TEXTENCODING_INFO_ASCII };
    /* DOS/OS2, SCRIPT_GREEK, pc code page 737, mac encoding 6 */

/* ======================================================================= */

/* IBM-775 */
/* Dos Standard CharSet for BalticRim */
/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
/* Convert-Tables: mappings/vendors/micsft/pc/cp775.txt from 04/24/96 Version 2.00 */
/* Last-Changes from us: */

/* ----------------------------------------------------------------------- */

#define IBM775UNI_START                 0x80
#define IBM775UNI_END                   0xFF
static sal_uInt16 const aImplIBM775ToUniTab[IBM775UNI_END - IBM775UNI_START + 1] =
{
/*       0       1       2       3       4       5       6       7 */
/*       8       9       A       B       C       D       E       F */
    0x0106, 0x00FC, 0x00E9, 0x0101, 0x00E4, 0x0123, 0x00E5, 0x0107, /* 0x80 */
    0x0142, 0x0113, 0x0156, 0x0157, 0x012B, 0x0179, 0x00C4, 0x00C5, /* 0x80 */
    0x00C9, 0x00E6, 0x00C6, 0x014D, 0x00F6, 0x0122, 0x00A2, 0x015A, /* 0x90 */
    0x015B, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x00D7, 0x00A4, /* 0x90 */
    0x0100, 0x012A, 0x00F3, 0x017B, 0x017C, 0x017A, 0x201D, 0x00A6, /* 0xA0 */
    0x00A9, 0x00AE, 0x00AC, 0x00BD, 0x00BC, 0x0141, 0x00AB, 0x00BB, /* 0xA0 */
    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x0104, 0x010C, 0x0118, /* 0xB0 */
    0x0116, 0x2563, 0x2551, 0x2557, 0x255D, 0x012E, 0x0160, 0x2510, /* 0xB0 */
    0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x0172, 0x016A, /* 0xC0 */
    0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x017D, /* 0xC0 */
    0x0105, 0x010D, 0x0119, 0x0117, 0x012F, 0x0161, 0x0173, 0x016B, /* 0xD0 */
    0x017E, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, /* 0xD0 */
    0x00D3, 0x00DF, 0x014C, 0x0143, 0x00F5, 0x00D5, 0x00B5, 0x0144, /* 0xE0 */
    0x0136, 0x0137, 0x013B, 0x013C, 0x0146, 0x0112, 0x0145, 0x2019, /* 0xE0 */
    0x00AD, 0x00B1, 0x201C, 0x00BE, 0x00B6, 0x00A7, 0x00F7, 0x201E, /* 0xF0 */
    0x00B0, 0x2219, 0x00B7, 0x00B9, 0x00B3, 0x00B2, 0x25A0, 0x00A0  /* 0xF0 */
};

/* ----------------------------------------------------------------------- */

#define IBM775TOCHARTABEX_COUNT         128
static ImplUniCharTabData const aImplIBM775ToCharTabEx[IBM775TOCHARTABEX_COUNT] =
{
  { 0x00A0, 0xFF, 0 },
  { 0x00A2, 0x96, 0 },
  { 0x00A3, 0x9C, 0 },
  { 0x00A4, 0x9F, 0 },
  { 0x00A6, 0xA7, 0 },
  { 0x00A7, 0xF5, 0 },
  { 0x00A9, 0xA8, 0 },
  { 0x00AB, 0xAE, 0 },
  { 0x00AC, 0xAA, 0 },
  { 0x00AD, 0xF0, 0 },
  { 0x00AE, 0xA9, 0 },
  { 0x00B0, 0xF8, 0 },
  { 0x00B1, 0xF1, 0 },
  { 0x00B2, 0xFD, 0 },
  { 0x00B3, 0xFC, 0 },
  { 0x00B5, 0xE6, 0 },
  { 0x00B6, 0xF4, 0 },
  { 0x00B7, 0xFA, 0 },
  { 0x00B9, 0xFB, 0 },
  { 0x00BB, 0xAF, 0 },
  { 0x00BC, 0xAC, 0 },
  { 0x00BD, 0xAB, 0 },
  { 0x00BE, 0xF3, 0 },
  { 0x00C4, 0x8E, 0 },
  { 0x00C5, 0x8F, 0 },
  { 0x00C6, 0x92, 0 },
  { 0x00C9, 0x90, 0 },
  { 0x00D3, 0xE0, 0 },
  { 0x00D5, 0xE5, 0 },
  { 0x00D6, 0x99, 0 },
  { 0x00D7, 0x9E, 0 },
  { 0x00D8, 0x9D, 0 },
  { 0x00DC, 0x9A, 0 },
  { 0x00DF, 0xE1, 0 },
  { 0x00E4, 0x84, 0 },
  { 0x00E5, 0x86, 0 },
  { 0x00E6, 0x91, 0 },
  { 0x00E9, 0x82, 0 },
  { 0x00F3, 0xA2, 0 },
  { 0x00F5, 0xE4, 0 },
  { 0x00F6, 0x94, 0 },
  { 0x00F7, 0xF6, 0 },
  { 0x00F8, 0x9B, 0 },
  { 0x00FC, 0x81, 0 },
  { 0x0100, 0xA0, 0 },
  { 0x0101, 0x83, 0 },
  { 0x0104, 0xB5, 0 },
  { 0x0105, 0xD0, 0 },
  { 0x0106, 0x80, 0 },
  { 0x0107, 0x87, 0 },
  { 0x010C, 0xB6, 0 },
  { 0x010D, 0xD1, 0 },
  { 0x0112, 0xED, 0 },
  { 0x0113, 0x89, 0 },
  { 0x0116, 0xB8, 0 },
  { 0x0117, 0xD3, 0 },
  { 0x0118, 0xB7, 0 },
  { 0x0119, 0xD2, 0 },
  { 0x0122, 0x95, 0 },
  { 0x0123, 0x85, 0 },
  { 0x012A, 0xA1, 0 },
  { 0x012B, 0x8C, 0 },
  { 0x012E, 0xBD, 0 },
  { 0x012F, 0xD4, 0 },
  { 0x0136, 0xE8, 0 },
  { 0x0137, 0xE9, 0 },
  { 0x013B, 0xEA, 0 },
  { 0x013C, 0xEB, 0 },
  { 0x0141, 0xAD, 0 },
  { 0x0142, 0x88, 0 },
  { 0x0143, 0xE3, 0 },
  { 0x0144, 0xE7, 0 },
  { 0x0145, 0xEE, 0 },
  { 0x0146, 0xEC, 0 },
  { 0x014C, 0xE2, 0 },
  { 0x014D, 0x93, 0 },
  { 0x0156, 0x8A, 0 },
  { 0x0157, 0x8B, 0 },
  { 0x015A, 0x97, 0 },
  { 0x015B, 0x98, 0 },
  { 0x0160, 0xBE, 0 },
  { 0x0161, 0xD5, 0 },
  { 0x016A, 0xC7, 0 },
  { 0x016B, 0xD7, 0 },
  { 0x0172, 0xC6, 0 },
  { 0x0173, 0xD6, 0 },
  { 0x0179, 0x8D, 0 },
  { 0x017A, 0xA5, 0 },
  { 0x017B, 0xA3, 0 },
  { 0x017C, 0xA4, 0 },
  { 0x017D, 0xCF, 0 },
  { 0x017E, 0xD8, 0 },
  { 0x2019, 0xEF, 0 },
  { 0x201C, 0xF2, 0 },
  { 0x201D, 0xA6, 0 },
  { 0x201E, 0xF7, 0 },
  { 0x2219, 0xF9, 0 },
  { 0x2500, 0xC4, 0 },
  { 0x2502, 0xB3, 0 },
  { 0x250C, 0xDA, 0 },
  { 0x2510, 0xBF, 0 },
  { 0x2514, 0xC0, 0 },
  { 0x2518, 0xD9, 0 },
  { 0x251C, 0xC3, 0 },
  { 0x2524, 0xB4, 0 },
  { 0x252C, 0xC2, 0 },
  { 0x2534, 0xC1, 0 },
  { 0x253C, 0xC5, 0 },
  { 0x2550, 0xCD, 0 },
  { 0x2551, 0xBA, 0 },
  { 0x2554, 0xC9, 0 },
  { 0x2557, 0xBB, 0 },
  { 0x255A, 0xC8, 0 },
  { 0x255D, 0xBC, 0 },
  { 0x2560, 0xCC, 0 },
  { 0x2563, 0xB9, 0 },
  { 0x2566, 0xCB, 0 },
  { 0x2569, 0xCA, 0 },
  { 0x256C, 0xCE, 0 },
  { 0x2580, 0xDF, 0 },
  { 0x2584, 0xDC, 0 },
  { 0x2588, 0xDB, 0 },
  { 0x258C, 0xDD, 0 },
  { 0x2590, 0xDE, 0 },
  { 0x2591, 0xB0, 0 },
  { 0x2592, 0xB1, 0 },
  { 0x2593, 0xB2, 0 },
  { 0x25A0, 0xFE, 0 }
};

/* ----------------------------------------------------------------------- */

static ImplByteConvertData const aImplIBM775ByteCvtData =
{
    aImplIBM775ToUniTab,
    NULL,
    IBM775UNI_START, IBM775UNI_END,
    NOTABUNI_START, NOTABUNI_END,
    NULL,
    NULL,
    aImplIBM775ToCharTabEx,
    NOTABCHAR_START, NOTABCHAR_END,
    NOTABCHAR_START, NOTABCHAR_END,
    IBM775TOCHARTABEX_COUNT
};

/* ----------------------------------------------------------------------- */

static ImplTextEncodingData const aImplIBM775TextEncodingData
    = { { &aImplIBM775ByteCvtData,
          ImplCharToUnicode,
          ImplUnicodeToChar,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL },
        1,
        1,
        1,
        186,
        "iso8859-4",
        "iso-8859-4",
        RTL_TEXTENCODING_INFO_ASCII };
    /* DOS/OS2, SCRIPT_BALTIC, pc code page 775, mac encoding 29 (?) */

/* ======================================================================= */

/* IBM-852 */
/* Dos Standard CharSet for Central Europa (Jug., Pol., Tsch., Ung., ...) */
/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
/* Convert-Tables: mappings/vendors/micsft/pc/cp852.txt from 04/24/96 Version 2.00 */
/* Last-Changes from us: */

/* ----------------------------------------------------------------------- */

#define IBM852UNI_START                 0x80
#define IBM852UNI_END                   0xFF
static sal_uInt16 const aImplIBM852ToUniTab[IBM852UNI_END - IBM852UNI_START + 1] =
{
/*       0       1       2       3       4       5       6       7 */
/*       8       9       A       B       C       D       E       F */
    0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x016F, 0x0107, 0x00E7, /* 0x80 */
    0x0142, 0x00EB, 0x0150, 0x0151, 0x00EE, 0x0179, 0x00C4, 0x0106, /* 0x80 */
    0x00C9, 0x0139, 0x013A, 0x00F4, 0x00F6, 0x013D, 0x013E, 0x015A, /* 0x90 */
    0x015B, 0x00D6, 0x00DC, 0x0164, 0x0165, 0x0141, 0x00D7, 0x010D, /* 0x90 */
    0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x0104, 0x0105, 0x017D, 0x017E, /* 0xA0 */
    0x0118, 0x0119, 0x00AC, 0x017A, 0x010C, 0x015F, 0x00AB, 0x00BB, /* 0xA0 */
    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00C1, 0x00C2, 0x011A, /* 0xB0 */
    0x015E, 0x2563, 0x2551, 0x2557, 0x255D, 0x017B, 0x017C, 0x2510, /* 0xB0 */
    0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x0102, 0x0103, /* 0xC0 */
    0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x00A4, /* 0xC0 */
    0x0111, 0x0110, 0x010E, 0x00CB, 0x010F, 0x0147, 0x00CD, 0x00CE, /* 0xD0 */
    0x011B, 0x2518, 0x250C, 0x2588, 0x2584, 0x0162, 0x016E, 0x2580, /* 0xD0 */
    0x00D3, 0x00DF, 0x00D4, 0x0143, 0x0144, 0x0148, 0x0160, 0x0161, /* 0xE0 */
    0x0154, 0x00DA, 0x0155, 0x0170, 0x00FD, 0x00DD, 0x0163, 0x00B4, /* 0xE0 */
    0x00AD, 0x02DD, 0x02DB, 0x02C7, 0x02D8, 0x00A7, 0x00F7, 0x00B8, /* 0xF0 */
    0x00B0, 0x00A8, 0x02D9, 0x0171, 0x0158, 0x0159, 0x25A0, 0x00A0  /* 0xF0 */
};

/* ----------------------------------------------------------------------- */

#define IBM852TOCHARTABEX_COUNT         128
static ImplUniCharTabData const aImplIBM852ToCharTabEx[IBM852TOCHARTABEX_COUNT] =
{
  { 0x00A0, 0xFF, 0 },
  { 0x00A4, 0xCF, 0 },
  { 0x00A7, 0xF5, 0 },
  { 0x00A8, 0xF9, 0 },
  { 0x00AB, 0xAE, 0 },
  { 0x00AC, 0xAA, 0 },
  { 0x00AD, 0xF0, 0 },
  { 0x00B0, 0xF8, 0 },
  { 0x00B4, 0xEF, 0 },
  { 0x00B8, 0xF7, 0 },
  { 0x00BB, 0xAF, 0 },
  { 0x00C1, 0xB5, 0 },
  { 0x00C2, 0xB6, 0 },
  { 0x00C4, 0x8E, 0 },
  { 0x00C7, 0x80, 0 },
  { 0x00C9, 0x90, 0 },
  { 0x00CB, 0xD3, 0 },
  { 0x00CD, 0xD6, 0 },
  { 0x00CE, 0xD7, 0 },
  { 0x00D3, 0xE0, 0 },
  { 0x00D4, 0xE2, 0 },
  { 0x00D6, 0x99, 0 },
  { 0x00D7, 0x9E, 0 },
  { 0x00DA, 0xE9, 0 },
  { 0x00DC, 0x9A, 0 },
  { 0x00DD, 0xED, 0 },
  { 0x00DF, 0xE1, 0 },
  { 0x00E1, 0xA0, 0 },
  { 0x00E2, 0x83, 0 },
  { 0x00E4, 0x84, 0 },
  { 0x00E7, 0x87, 0 },
  { 0x00E9, 0x82, 0 },
  { 0x00EB, 0x89, 0 },
  { 0x00ED, 0xA1, 0 },
  { 0x00EE, 0x8C, 0 },
  { 0x00F3, 0xA2, 0 },
  { 0x00F4, 0x93, 0 },
  { 0x00F6, 0x94, 0 },
  { 0x00F7, 0xF6, 0 },
  { 0x00FA, 0xA3, 0 },
  { 0x00FC, 0x81, 0 },
  { 0x00FD, 0xEC, 0 },
  { 0x0102, 0xC6, 0 },
  { 0x0103, 0xC7, 0 },
  { 0x0104, 0xA4, 0 },
  { 0x0105, 0xA5, 0 },
  { 0x0106, 0x8F, 0 },
  { 0x0107, 0x86, 0 },
  { 0x010C, 0xAC, 0 },
  { 0x010D, 0x9F, 0 },
  { 0x010E, 0xD2, 0 },
  { 0x010F, 0xD4, 0 },
  { 0x0110, 0xD1, 0 },
  { 0x0111, 0xD0, 0 },
  { 0x0118, 0xA8, 0 },
  { 0x0119, 0xA9, 0 },
  { 0x011A, 0xB7, 0 },
  { 0x011B, 0xD8, 0 },
  { 0x0139, 0x91, 0 },
  { 0x013A, 0x92, 0 },
  { 0x013D, 0x95, 0 },
  { 0x013E, 0x96, 0 },
  { 0x0141, 0x9D, 0 },
  { 0x0142, 0x88, 0 },
  { 0x0143, 0xE3, 0 },
  { 0x0144, 0xE4, 0 },
  { 0x0147, 0xD5, 0 },
  { 0x0148, 0xE5, 0 },
  { 0x0150, 0x8A, 0 },
  { 0x0151, 0x8B, 0 },
  { 0x0154, 0xE8, 0 },
  { 0x0155, 0xEA, 0 },
  { 0x0158, 0xFC, 0 },
  { 0x0159, 0xFD, 0 },
  { 0x015A, 0x97, 0 },
  { 0x015B, 0x98, 0 },
  { 0x015E, 0xB8, 0 },
  { 0x015F, 0xAD, 0 },
  { 0x0160, 0xE6, 0 },
  { 0x0161, 0xE7, 0 },
  { 0x0162, 0xDD, 0 },
  { 0x0163, 0xEE, 0 },
  { 0x0164, 0x9B, 0 },
  { 0x0165, 0x9C, 0 },
  { 0x016E, 0xDE, 0 },
  { 0x016F, 0x85, 0 },
  { 0x0170, 0xEB, 0 },
  { 0x0171, 0xFB, 0 },
  { 0x0179, 0x8D, 0 },
  { 0x017A, 0xAB, 0 },
  { 0x017B, 0xBD, 0 },
  { 0x017C, 0xBE, 0 },
  { 0x017D, 0xA6, 0 },
  { 0x017E, 0xA7, 0 },
  { 0x02C7, 0xF3, 0 },
  { 0x02D8, 0xF4, 0 },
  { 0x02D9, 0xFA, 0 },
  { 0x02DB, 0xF2, 0 },
  { 0x02DD, 0xF1, 0 },
  { 0x2500, 0xC4, 0 },
  { 0x2502, 0xB3, 0 },
  { 0x250C, 0xDA, 0 },
  { 0x2510, 0xBF, 0 },
  { 0x2514, 0xC0, 0 },
  { 0x2518, 0xD9, 0 },
  { 0x251C, 0xC3, 0 },
  { 0x2524, 0xB4, 0 },
  { 0x252C, 0xC2, 0 },
  { 0x2534, 0xC1, 0 },
  { 0x253C, 0xC5, 0 },
  { 0x2550, 0xCD, 0 },
  { 0x2551, 0xBA, 0 },
  { 0x2554, 0xC9, 0 },
  { 0x2557, 0xBB, 0 },
  { 0x255A, 0xC8, 0 },
  { 0x255D, 0xBC, 0 },
  { 0x2560, 0xCC, 0 },
  { 0x2563, 0xB9, 0 },
  { 0x2566, 0xCB, 0 },
  { 0x2569, 0xCA, 0 },
  { 0x256C, 0xCE, 0 },
  { 0x2580, 0xDF, 0 },
  { 0x2584, 0xDC, 0 },
  { 0x2588, 0xDB, 0 },
  { 0x2591, 0xB0, 0 },
  { 0x2592, 0xB1, 0 },
  { 0x2593, 0xB2, 0 },
  { 0x25A0, 0xFE, 0 }
};

/* ----------------------------------------------------------------------- */

static ImplByteConvertData const aImplIBM852ByteCvtData =
{
    aImplIBM852ToUniTab,
    NULL,
    IBM852UNI_START, IBM852UNI_END,
    NOTABUNI_START, NOTABUNI_END,
    NULL,
    NULL,
    aImplIBM852ToCharTabEx,
    NOTABCHAR_START, NOTABCHAR_END,
    NOTABCHAR_START, NOTABCHAR_END,
    IBM852TOCHARTABEX_COUNT
};

/* ----------------------------------------------------------------------- */

static ImplTextEncodingData const aImplIBM852TextEncodingData
    = { { &aImplIBM852ByteCvtData,
          ImplCharToUnicode,
          ImplUnicodeToChar,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL },
        1,
        1,
        1,
        238,
        "iso8859-2",
        "ibm852",
        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
    /* DOS/OS2, SCRIPT_EASTEUROPE, pc code page 852, mac encoding 29 */

/* ======================================================================= */

/* IBM-855 */
/* Dos Standard CharSet for Cyrillic */
/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
/* Convert-Tables: mappings/vendors/micsft/pc/cp855.txt from 04/24/96 Version 2.00 */
/* Last-Changes from us: */

/* ----------------------------------------------------------------------- */

#define IBM855UNI_START                 0x80
#define IBM855UNI_END                   0xFF
static sal_uInt16 const aImplIBM855ToUniTab[IBM855UNI_END - IBM855UNI_START + 1] =
{
/*       0       1       2       3       4       5       6       7 */
/*       8       9       A       B       C       D       E       F */
    0x0452, 0x0402, 0x0453, 0x0403, 0x0451, 0x0401, 0x0454, 0x0404, /* 0x80 */
    0x0455, 0x0405, 0x0456, 0x0406, 0x0457, 0x0407, 0x0458, 0x0408, /* 0x80 */
    0x0459, 0x0409, 0x045A, 0x040A, 0x045B, 0x040B, 0x045C, 0x040C, /* 0x90 */
    0x045E, 0x040E, 0x045F, 0x040F, 0x044E, 0x042E, 0x044A, 0x042A, /* 0x90 */
    0x0430, 0x0410, 0x0431, 0x0411, 0x0446, 0x0426, 0x0434, 0x0414, /* 0xA0 */
    0x0435, 0x0415, 0x0444, 0x0424, 0x0433, 0x0413, 0x00AB, 0x00BB, /* 0xA0 */
    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x0445, 0x0425, 0x0438, /* 0xB0 */
    0x0418, 0x2563, 0x2551, 0x2557, 0x255D, 0x0439, 0x0419, 0x2510, /* 0xB0 */
    0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x043A, 0x041A, /* 0xC0 */
    0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x00A4, /* 0xC0 */
    0x043B, 0x041B, 0x043C, 0x041C, 0x043D, 0x041D, 0x043E, 0x041E, /* 0xD0 */
    0x043F, 0x2518, 0x250C, 0x2588, 0x2584, 0x041F, 0x044F, 0x2580, /* 0xD0 */
    0x042F, 0x0440, 0x0420, 0x0441, 0x0421, 0x0442, 0x0422, 0x0443, /* 0xE0 */
    0x0423, 0x0436, 0x0416, 0x0432, 0x0412, 0x044C, 0x042C, 0x2116, /* 0xE0 */
    0x00AD, 0x044B, 0x042B, 0x0437, 0x0417, 0x0448, 0x0428, 0x044D, /* 0xF0 */
    0x042D, 0x0449, 0x0429, 0x0447, 0x0427, 0x00A7, 0x25A0, 0x00A0  /* 0xF0 */
};

/* ----------------------------------------------------------------------- */

#define IBM855CHAR_START                0x0401
#define IBM855CHAR_END                  0x045F
static sal_uChar const aImplIBM855ToCharTab[IBM855CHAR_END - IBM855CHAR_START + 1] =
{
/*     0     1     2     3     4     5     6     7 */
/*     8     9     A     B     C     D     E     F */
          0x85, 0x81, 0x83, 0x87, 0x89, 0x8B, 0x8D, /* 0x0400 */
    0x8F, 0x91, 0x93, 0x95, 0x97,    0, 0x99, 0x9B, /* 0x0400 */
    0xA1, 0xA3, 0xEC, 0xAD, 0xA7, 0xA9, 0xEA, 0xF4, /* 0x0410 */
    0xB8, 0xBE, 0xC7, 0xD1, 0xD3, 0xD5, 0xD7, 0xDD, /* 0x0410 */
    0xE2, 0xE4, 0xE6, 0xE8, 0xAB, 0xB6, 0xA5, 0xFC, /* 0x0420 */
    0xF6, 0xFA, 0x9F, 0xF2, 0xEE, 0xF8, 0x9D, 0xE0, /* 0x0420 */
    0xA0, 0xA2, 0xEB, 0xAC, 0xA6, 0xA8, 0xE9, 0xF3, /* 0x0430 */
    0xB7, 0xBD, 0xC6, 0xD0, 0xD2, 0xD4, 0xD6, 0xD8, /* 0x0430 */
    0xE1, 0xE3, 0xE5, 0xE7, 0xAA, 0xB5, 0xA4, 0xFB, /* 0x0440 */
    0xF5, 0xF9, 0x9E, 0xF1, 0xED, 0xF7, 0x9C, 0xDE, /* 0x0440 */
       0, 0x84, 0x80, 0x82, 0x86, 0x88, 0x8A, 0x8C, /* 0x0450 */
    0x8E, 0x90, 0x92, 0x94, 0x96,    0, 0x98, 0x9A, /* 0x0450 */
};

/* ----------------------------------------------------------------------- */

#define IBM855TOCHARTABEX_COUNT         36
static ImplUniCharTabData const aImplIBM855ToCharTabEx[IBM855TOCHARTABEX_COUNT] =
{
  { 0x00A0, 0xFF, 0 },
  { 0x00A4, 0xCF, 0 },
  { 0x00A7, 0xFD, 0 },
  { 0x00AB, 0xAE, 0 },
  { 0x00AD, 0xF0, 0 },
  { 0x00BB, 0xAF, 0 },
  { 0x2116, 0xEF, 0 },
  { 0x2500, 0xC4, 0 },
  { 0x2502, 0xB3, 0 },
  { 0x250C, 0xDA, 0 },
  { 0x2510, 0xBF, 0 },
  { 0x2514, 0xC0, 0 },
  { 0x2518, 0xD9, 0 },
  { 0x251C, 0xC3, 0 },
  { 0x2524, 0xB4, 0 },
  { 0x252C, 0xC2, 0 },
  { 0x2534, 0xC1, 0 },
  { 0x253C, 0xC5, 0 },
  { 0x2550, 0xCD, 0 },
  { 0x2551, 0xBA, 0 },
  { 0x2554, 0xC9, 0 },
  { 0x2557, 0xBB, 0 },
  { 0x255A, 0xC8, 0 },
  { 0x255D, 0xBC, 0 },
  { 0x2560, 0xCC, 0 },
  { 0x2563, 0xB9, 0 },
  { 0x2566, 0xCB, 0 },
  { 0x2569, 0xCA, 0 },
  { 0x256C, 0xCE, 0 },
  { 0x2580, 0xDF, 0 },
  { 0x2584, 0xDC, 0 },
  { 0x2588, 0xDB, 0 },
  { 0x2591, 0xB0, 0 },
  { 0x2592, 0xB1, 0 },
  { 0x2593, 0xB2, 0 },
  { 0x25A0, 0xFE, 0 }
};

/* ----------------------------------------------------------------------- */

static ImplByteConvertData const aImplIBM855ByteCvtData =
{
    aImplIBM855ToUniTab,
    NULL,
    IBM855UNI_START, IBM855UNI_END,
    NOTABUNI_START, NOTABUNI_END,
    aImplIBM855ToCharTab,
    NULL,
    aImplIBM855ToCharTabEx,
    IBM855CHAR_START, IBM855CHAR_END,
    NOTABCHAR_START, NOTABCHAR_END,
    IBM855TOCHARTABEX_COUNT
};

/* ----------------------------------------------------------------------- */

static ImplTextEncodingData const aImplIBM855TextEncodingData
    = { { &aImplIBM855ByteCvtData,
          ImplCharToUnicode,
          ImplUnicodeToChar,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL },
        1,
        1,
        1,
        204,
        "iso8859-5",
        "iso-8859-5",
        RTL_TEXTENCODING_INFO_ASCII };
    /* DOS/OS2, SCRIPT_CYRILLIC, pc code page 855, mac encoding 7 */

/* ======================================================================= */

/* IBM-857 */
/* Dos Standard CharSet for Turkish */
/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
/* Convert-Tables: mappings/vendors/micsft/pc/cp857.txt from 04/24/96 Version 2.00 */
/* Last-Changes from us: */

/* ----------------------------------------------------------------------- */

#define IBM857UNI_START                 0x80
#define IBM857UNI_END                   0xFF
static sal_uInt16 const aImplIBM857ToUniTab[IBM857UNI_END - IBM857UNI_START + 1] =
{
/*       0       1       2       3       4       5       6       7 */
/*       8       9       A       B       C       D       E       F */
    0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7, /* 0x80 */
    0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x0131, 0x00C4, 0x00C5, /* 0x80 */
    0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9, /* 0x90 */
    0x0130, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x015E, 0x015F, /* 0x90 */
    0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x011E, 0x011F, /* 0xA0 */
    0x00BF, 0x00AE, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, /* 0xA0 */
    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00C1, 0x00C2, 0x00C0, /* 0xB0 */
    0x00A9, 0x2563, 0x2551, 0x2557, 0x255D, 0x00A2, 0x00A5, 0x2510, /* 0xB0 */
    0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x00E3, 0x00C3, /* 0xC0 */
    0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x00A4, /* 0xC0 */
    0x00BA, 0x00AA, 0x00CA, 0x00CB, 0x00C8,      0, 0x00CD, 0x00CE, /* 0xD0 */
    0x00CF, 0x2518, 0x250C, 0x2588, 0x2584, 0x00A6, 0x00CC, 0x2580, /* 0xD0 */
    0x00D3, 0x00DF, 0x00D4, 0x00D2, 0x00F5, 0x00D5, 0x00B5,      0, /* 0xE0 */
    0x00D7, 0x00DA, 0x00DB, 0x00D9, 0x00EC, 0x00FF, 0x00AF, 0x00B4, /* 0xE0 */
    0x00AD, 0x00B1,      0, 0x00BE, 0x00B6, 0x00A7, 0x00F7, 0x00B8, /* 0xF0 */
    0x00B0, 0x00A8, 0x00B7, 0x00B9, 0x00B3, 0x00B2, 0x25A0, 0x00A0  /* 0xF0 */
};

/* ----------------------------------------------------------------------- */

#define IBM857CHAR_START                0x00A0
#define IBM857CHAR_END                  0x00FF
static sal_uChar const aImplIBM857ToCharTab[IBM857CHAR_END - IBM857CHAR_START + 1] =
{
/*     0     1     2     3     4     5     6     7 */
/*     8     9     A     B     C     D     E     F */
    0xFF, 0xAD, 0xBD, 0x9C, 0xCF, 0xBE, 0xDD, 0xF5, /* 0x00A0 */
    0xF9, 0xB8, 0xD1, 0xAE, 0xAA, 0xF0, 0xA9, 0xEE, /* 0x00A0 */
    0xF8, 0xF1, 0xFD, 0xFC, 0xEF, 0xE6, 0xF4, 0xFA, /* 0x00B0 */
    0xF7, 0xFB, 0xD0, 0xAF, 0xAC, 0xAB, 0xF3, 0xA8, /* 0x00B0 */
    0xB7, 0xB5, 0xB6, 0xC7, 0x8E, 0x8F, 0x92, 0x80, /* 0x00C0 */
    0xD4, 0x90, 0xD2, 0xD3, 0xDE, 0xD6, 0xD7, 0xD8, /* 0x00C0 */
       0, 0xA5, 0xE3, 0xE0, 0xE2, 0xE5, 0x99, 0xE8, /* 0x00D0 */
    0x9D, 0xEB, 0xE9, 0xEA, 0x9A,    0,    0, 0xE1, /* 0x00D0 */
    0x85, 0xA0, 0x83, 0xC6, 0x84, 0x86, 0x91, 0x87, /* 0x00E0 */
    0x8A, 0x82, 0x88, 0x89, 0xEC, 0xA1, 0x8C, 0x8B, /* 0x00E0 */
       0, 0xA4, 0x95, 0xA2, 0x93, 0xE4, 0x94, 0xF6, /* 0x00F0 */
    0x9B, 0x97, 0xA3, 0x96, 0x81,    0,    0, 0xED  /* 0x00F0 */
};

/* ----------------------------------------------------------------------- */

#define IBM857TOCHARTABEX_COUNT         35
static ImplUniCharTabData const aImplIBM857ToCharTabEx[IBM857TOCHARTABEX_COUNT] =
{
  { 0x011E, 0xA6, 0 },
  { 0x011F, 0xA7, 0 },
  { 0x0130, 0x98, 0 },
  { 0x0131, 0x8D, 0 },
  { 0x015E, 0x9E, 0 },
  { 0x015F, 0x9F, 0 },
  { 0x2500, 0xC4, 0 },
  { 0x2502, 0xB3, 0 },
  { 0x250C, 0xDA, 0 },
  { 0x2510, 0xBF, 0 },
  { 0x2514, 0xC0, 0 },
  { 0x2518, 0xD9, 0 },
  { 0x251C, 0xC3, 0 },
  { 0x2524, 0xB4, 0 },
  { 0x252C, 0xC2, 0 },
  { 0x2534, 0xC1, 0 },
  { 0x253C, 0xC5, 0 },
  { 0x2550, 0xCD, 0 },
  { 0x2551, 0xBA, 0 },
  { 0x2554, 0xC9, 0 },
  { 0x2557, 0xBB, 0 },
  { 0x255A, 0xC8, 0 },
  { 0x255D, 0xBC, 0 },
  { 0x2560, 0xCC, 0 },
  { 0x2563, 0xB9, 0 },
  { 0x2566, 0xCB, 0 },
  { 0x2569, 0xCA, 0 },
  { 0x256C, 0xCE, 0 },
  { 0x2580, 0xDF, 0 },
  { 0x2584, 0xDC, 0 },
  { 0x2588, 0xDB, 0 },
  { 0x2591, 0xB0, 0 },
  { 0x2592, 0xB1, 0 },
  { 0x2593, 0xB2, 0 },
  { 0x25A0, 0xFE, 0 }
};

/* ----------------------------------------------------------------------- */

static ImplByteConvertData const aImplIBM857ByteCvtData =
{
    aImplIBM857ToUniTab,
    NULL,
    IBM857UNI_START, IBM857UNI_END,
    NOTABUNI_START, NOTABUNI_END,
    aImplIBM857ToCharTab,
    NULL,
    aImplIBM857ToCharTabEx,
    IBM857CHAR_START, IBM857CHAR_END,
    NOTABCHAR_START, NOTABCHAR_END,
    IBM857TOCHARTABEX_COUNT
};

/* ----------------------------------------------------------------------- */

static ImplTextEncodingData const aImplIBM857TextEncodingData
    = { { &aImplIBM857ByteCvtData,
          ImplCharToUnicode,
          ImplUnicodeToChar,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL },
        1,
        1,
        1,
        162,
        "iso8859-9",
        "iso-8859-9",
        RTL_TEXTENCODING_INFO_ASCII };
    /* DOS/OS2, SCRIPT_TURKISH, pc code page 857, mac encoding 35 */

/* ======================================================================= */

/* IBM-866 */
/* Dos Standard CharSet for CyrillicRussian */
/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
/* Convert-Tables: mappings/vendors/micsft/pc/cp866.txt from 04/24/96 Version 2.00 */
/* Last-Changes from us: */

/* ----------------------------------------------------------------------- */

#define IBM866UNI_START                 0x80
#define IBM866UNI_END                   0xFF
static sal_uInt16 const aImplIBM866ToUniTab[IBM866UNI_END - IBM866UNI_START + 1] =
{
/*       0       1       2       3       4       5       6       7 */
/*       8       9       A       B       C       D       E       F */
    0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, /* 0x80 */
    0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, /* 0x80 */
    0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, /* 0x90 */
    0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, /* 0x90 */
    0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, /* 0xA0 */
    0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, /* 0xA0 */
    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, /* 0xB0 */
    0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, /* 0xB0 */
    0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, /* 0xC0 */
    0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, /* 0xC0 */
    0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, /* 0xD0 */
    0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, /* 0xD0 */
    0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, /* 0xE0 */
    0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F, /* 0xE0 */
    0x0401, 0x0451, 0x0404, 0x0454, 0x0407, 0x0457, 0x040E, 0x045E, /* 0xF0 */
    0x00B0, 0x2219, 0x00B7, 0x221A, 0x2116, 0x00A4, 0x25A0, 0x00A0  /* 0xF0 */
};

/* ----------------------------------------------------------------------- */

#define IBM866CHAR_START                0x0401
#define IBM866CHAR_END                  0x045E
static sal_uChar const aImplIBM866ToCharTab[IBM866CHAR_END - IBM866CHAR_START + 1] =
{
/*     0     1     2     3     4     5     6     7 */
/*     8     9     A     B     C     D     E     F */
          0xF0,    0,    0, 0xF2,    0,    0, 0xF4, /* 0x0400 */
       0,    0,    0,    0,    0,    0, 0xF6,    0, /* 0x0400 */
    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x0410 */
    0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, /* 0x0410 */
    0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, /* 0x0420 */
    0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F, /* 0x0420 */
    0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, /* 0x0430 */
    0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, /* 0x0430 */
    0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, /* 0x0440 */
    0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, /* 0x0440 */
       0, 0xF1,    0,    0, 0xF3,    0,    0, 0xF5, /* 0x0450 */
       0,    0,    0,    0,    0,    0, 0xF7        /* 0x0450 */
};

/* ----------------------------------------------------------------------- */

#define IBM866TOCHARTABEX_COUNT         56
static ImplUniCharTabData const aImplIBM866ToCharTabEx[IBM866TOCHARTABEX_COUNT] =
{
  { 0x00A0, 0xFF, 0 },
  { 0x00A4, 0xFD, 0 },
  { 0x00B0, 0xF8, 0 },
  { 0x00B7, 0xFA, 0 },
  { 0x2116, 0xFC, 0 },
  { 0x2219, 0xF9, 0 },
  { 0x221A, 0xFB, 0 },
  { 0x2500, 0xC4, 0 },
  { 0x2502, 0xB3, 0 },
  { 0x250C, 0xDA, 0 },
  { 0x2510, 0xBF, 0 },
  { 0x2514, 0xC0, 0 },
  { 0x2518, 0xD9, 0 },
  { 0x251C, 0xC3, 0 },
  { 0x2524, 0xB4, 0 },
  { 0x252C, 0xC2, 0 },
  { 0x2534, 0xC1, 0 },
  { 0x253C, 0xC5, 0 },
  { 0x2550, 0xCD, 0 },
  { 0x2551, 0xBA, 0 },
  { 0x2552, 0xD5, 0 },
  { 0x2553, 0xD6, 0 },
  { 0x2554, 0xC9, 0 },
  { 0x2555, 0xB8, 0 },
  { 0x2556, 0xB7, 0 },
  { 0x2557, 0xBB, 0 },
  { 0x2558, 0xD4, 0 },
  { 0x2559, 0xD3, 0 },
  { 0x255A, 0xC8, 0 },
  { 0x255B, 0xBE, 0 },
  { 0x255C, 0xBD, 0 },
  { 0x255D, 0xBC, 0 },
  { 0x255E, 0xC6, 0 },
  { 0x255F, 0xC7, 0 },
  { 0x2560, 0xCC, 0 },
  { 0x2561, 0xB5, 0 },
  { 0x2562, 0xB6, 0 },
  { 0x2563, 0xB9, 0 },
  { 0x2564, 0xD1, 0 },
  { 0x2565, 0xD2, 0 },
  { 0x2566, 0xCB, 0 },
  { 0x2567, 0xCF, 0 },
  { 0x2568, 0xD0, 0 },
  { 0x2569, 0xCA, 0 },
  { 0x256A, 0xD8, 0 },
  { 0x256B, 0xD7, 0 },
  { 0x256C, 0xCE, 0 },
  { 0x2580, 0xDF, 0 },
  { 0x2584, 0xDC, 0 },
  { 0x2588, 0xDB, 0 },
  { 0x258C, 0xDD, 0 },
  { 0x2590, 0xDE, 0 },
  { 0x2591, 0xB0, 0 },
  { 0x2592, 0xB1, 0 },
  { 0x2593, 0xB2, 0 },
  { 0x25A0, 0xFE, 0 }
};

/* ----------------------------------------------------------------------- */

static ImplByteConvertData const aImplIBM866ByteCvtData =
{
    aImplIBM866ToUniTab,
    NULL,
    IBM866UNI_START, IBM866UNI_END,
    NOTABUNI_START, NOTABUNI_END,
    aImplIBM866ToCharTab,
    NULL,
    aImplIBM866ToCharTabEx,
    IBM866CHAR_START, IBM866CHAR_END,
    NOTABCHAR_START, NOTABCHAR_END,
    IBM866TOCHARTABEX_COUNT
};

/* ----------------------------------------------------------------------- */

static ImplTextEncodingData const aImplIBM866TextEncodingData
    = { { &aImplIBM866ByteCvtData,
          ImplCharToUnicode,
          ImplUnicodeToChar,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL },
        1,
        1,
        1,
        204,
        "iso8859-5",
        "cp866",
        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
    /* DOS/OS2, SCRIPT_LATIN, pc code page 866, mac encoding 7 */

/* ======================================================================= */

/* IBM-869 */
/* Dos Standard CharSet for Greek2 */
/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
/* Convert-Tables: mappings/vendors/micsft/pc/cp869.txt from 04/24/96 Version 2.00 */
/* Last-Changes from us: */

/* ----------------------------------------------------------------------- */

#define IBM869UNI_START                 0x86
#define IBM869UNI_END                   0xFF
static sal_uInt16 const aImplIBM869ToUniTab[IBM869UNI_END - IBM869UNI_START + 1] =
{
/*       0       1       2       3       4       5       6       7 */
/*       8       9       A       B       C       D       E       F */
                                                    0x0386,      0, /* 0x80 */
    0x00B7, 0x00AC, 0x00A6, 0x2018, 0x2019, 0x0388, 0x2015, 0x0389, /* 0x80 */
    0x038A, 0x03AA, 0x038C,      0,      0, 0x038E, 0x03AB, 0x00A9, /* 0x90 */
    0x038F, 0x00B2, 0x00B3, 0x03AC, 0x00A3, 0x03AD, 0x03AE, 0x03AF, /* 0x90 */
    0x03CA, 0x0390, 0x03CC, 0x03CD, 0x0391, 0x0392, 0x0393, 0x0394, /* 0xA0 */
    0x0395, 0x0396, 0x0397, 0x00BD, 0x0398, 0x0399, 0x00AB, 0x00BB, /* 0xA0 */
    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x039A, 0x039B, 0x039C, /* 0xB0 */
    0x039D, 0x2563, 0x2551, 0x2557, 0x255D, 0x039E, 0x039F, 0x2510, /* 0xB0 */
    0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x03A0, 0x03A1, /* 0xC0 */
    0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x03A3, /* 0xC0 */
    0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9, 0x03B1, 0x03B2, /* 0xD0 */
    0x03B3, 0x2518, 0x250C, 0x2588, 0x2584, 0x03B4, 0x03B5, 0x2580, /* 0xD0 */
    0x03B6, 0x03B7, 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, /* 0xE0 */
    0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C3, 0x03C2, 0x03C4, 0x0384, /* 0xE0 */
    0x00AD, 0x00B1, 0x03C5, 0x03C6, 0x03C7, 0x00A7, 0x03C8, 0x0385, /* 0xF0 */
    0x00B0, 0x00A8, 0x03C9, 0x03CB, 0x03B0, 0x03CE, 0x25A0, 0x00A0  /* 0xF0 */
};

/* ----------------------------------------------------------------------- */

#define IBM869CHAR_START                0x0384
#define IBM869CHAR_END                  0x03CE
static sal_uChar const aImplIBM869ToCharTab[IBM869CHAR_END - IBM869CHAR_START + 1] =
{
/*     0     1     2     3     4     5     6     7 */
/*     8     9     A     B     C     D     E     F */
                            0xEF, 0xF7, 0x86,    0, /* 0x0380 */
    0x8D, 0x8F, 0x90,    0, 0x92,    0, 0x95, 0x98, /* 0x0380 */
    0xA1, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, /* 0x0390 */
    0xAC, 0xAD, 0xB5, 0xB6, 0xB7, 0xB8, 0xBD, 0xBE, /* 0x0390 */
    0xC6, 0xC7,    0, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, /* 0x03A0 */
    0xD4, 0xD5, 0x91, 0x96, 0x9B, 0x9D, 0x9E, 0x9F, /* 0x03A0 */
    0xFC, 0xD6, 0xD7, 0xD8, 0xDD, 0xDE, 0xE0, 0xE1, /* 0x03B0 */
    0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, /* 0x03B0 */
    0xEA, 0xEB, 0xED, 0xEC, 0xEE, 0xF2, 0xF3, 0xF4, /* 0x03C0 */
    0xF6, 0xFA, 0xA0, 0xFB, 0xA2, 0xA3, 0xFD        /* 0x03C0 */
};

/* ----------------------------------------------------------------------- */

#define IBM869TOCHARTABEX_COUNT         48
static ImplUniCharTabData const aImplIBM869ToCharTabEx[IBM869TOCHARTABEX_COUNT] =
{
  { 0x00A0, 0xFF, 0 },
  { 0x00A3, 0x9C, 0 },
  { 0x00A6, 0x8A, 0 },
  { 0x00A7, 0xF5, 0 },
  { 0x00A8, 0xF9, 0 },
  { 0x00A9, 0x97, 0 },
  { 0x00AB, 0xAE, 0 },
  { 0x00AC, 0x89, 0 },
  { 0x00AD, 0xF0, 0 },
  { 0x00B0, 0xF8, 0 },
  { 0x00B1, 0xF1, 0 },
  { 0x00B2, 0x99, 0 },
  { 0x00B3, 0x9A, 0 },
  { 0x00B7, 0x88, 0 },
  { 0x00BB, 0xAF, 0 },
  { 0x00BD, 0xAB, 0 },
  { 0x2015, 0x8E, 0 },
  { 0x2018, 0x8B, 0 },
  { 0x2019, 0x8C, 0 },
  { 0x2500, 0xC4, 0 },
  { 0x2502, 0xB3, 0 },
  { 0x250C, 0xDA, 0 },
  { 0x2510, 0xBF, 0 },
  { 0x2514, 0xC0, 0 },
  { 0x2518, 0xD9, 0 },
  { 0x251C, 0xC3, 0 },
  { 0x2524, 0xB4, 0 },
  { 0x252C, 0xC2, 0 },
  { 0x2534, 0xC1, 0 },
  { 0x253C, 0xC5, 0 },
  { 0x2550, 0xCD, 0 },
  { 0x2551, 0xBA, 0 },
  { 0x2554, 0xC9, 0 },
  { 0x2557, 0xBB, 0 },
  { 0x255A, 0xC8, 0 },
  { 0x255D, 0xBC, 0 },
  { 0x2560, 0xCC, 0 },
  { 0x2563, 0xB9, 0 },
  { 0x2566, 0xCB, 0 },
  { 0x2569, 0xCA, 0 },
  { 0x256C, 0xCE, 0 },
  { 0x2580, 0xDF, 0 },
  { 0x2584, 0xDC, 0 },
  { 0x2588, 0xDB, 0 },
  { 0x2591, 0xB0, 0 },
  { 0x2592, 0xB1, 0 },
  { 0x2593, 0xB2, 0 },
  { 0x25A0, 0xFE, 0 }
};

/* ----------------------------------------------------------------------- */

static ImplByteConvertData const aImplIBM869ByteCvtData =
{
    aImplIBM869ToUniTab,
    NULL,
    IBM869UNI_START, IBM869UNI_END,
    NOTABUNI_START, NOTABUNI_END,
    aImplIBM869ToCharTab,
    NULL,
    aImplIBM869ToCharTabEx,
    IBM869CHAR_START, IBM869CHAR_END,
    NOTABCHAR_START, NOTABCHAR_END,
    IBM869TOCHARTABEX_COUNT
};

/* ----------------------------------------------------------------------- */

static ImplTextEncodingData const aImplIBM869TextEncodingData
    = { { &aImplIBM869ByteCvtData,
          ImplCharToUnicode,
          ImplUnicodeToChar,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL },
        1,
        1,
        1,
        161,
        "iso8859-7",
        "iso-8859-7",
        RTL_TEXTENCODING_INFO_ASCII };
    /* DOS/OS2, SCRIPT_LATIN, pc code page 869, mac encoding 6 */

/* ======================================================================= */

/* MS-1250 */
/* Windows CodePage for Eastern European (WinLatin2) */
/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
/* Convert-Tables: mappings/vendors/micsft/windows/cp1250.txt from 04/15/98 Version 2.01 */
/* Last-Changes from us: */

/* ----------------------------------------------------------------------- */

#define MS1250UNI_START                 0x80
#define MS1250UNI_END                   0xFF
static sal_uInt16 const aImplMS1250ToUniTab[MS1250UNI_END - MS1250UNI_START + 1] =
{
/*  0       1       2       3       4       5       6       7 */
/*  8       9       A       B       C       D       E       F */
    0x20AC,      0, 0x201A,      0, 0x201E, 0x2026, 0x2020, 0x2021, /* 0x80 */
         0, 0x2030, 0x0160, 0x2039, 0x015A, 0x0164, 0x017D, 0x0179, /* 0x80 */
         0, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, /* 0x90 */
         0, 0x2122, 0x0161, 0x203A, 0x015B, 0x0165, 0x017E, 0x017A, /* 0x90 */
    0x00A0, 0x02C7, 0x02D8, 0x0141, 0x00A4, 0x0104, 0x00A6, 0x00A7, /* 0xA0 */
    0x00A8, 0x00A9, 0x015E, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x017B, /* 0xA0 */
    0x00B0, 0x00B1, 0x02DB, 0x0142, 0x00B4, 0x00B5, 0x00B6, 0x00B7, /* 0xB0 */
    0x00B8, 0x0105, 0x015F, 0x00BB, 0x013D, 0x02DD, 0x013E, 0x017C, /* 0xB0 */
    0x0154, 0x00C1, 0x00C2, 0x0102, 0x00C4, 0x0139, 0x0106, 0x00C7, /* 0xC0 */
    0x010C, 0x00C9, 0x0118, 0x00CB, 0x011A, 0x00CD, 0x00CE, 0x010E, /* 0xC0 */
    0x0110, 0x0143, 0x0147, 0x00D3, 0x00D4, 0x0150, 0x00D6, 0x00D7, /* 0xD0 */
    0x0158, 0x016E, 0x00DA, 0x0170, 0x00DC, 0x00DD, 0x0162, 0x00DF, /* 0xD0 */
    0x0155, 0x00E1, 0x00E2, 0x0103, 0x00E4, 0x013A, 0x0107, 0x00E7, /* 0xE0 */
    0x010D, 0x00E9, 0x0119, 0x00EB, 0x011B, 0x00ED, 0x00EE, 0x010F, /* 0xE0 */
    0x0111, 0x0144, 0x0148, 0x00F3, 0x00F4, 0x0151, 0x00F6, 0x00F7, /* 0xF0 */
    0x0159, 0x016F, 0x00FA, 0x0171, 0x00FC, 0x00FD, 0x0163, 0x02D9  /* 0xF0 */
};

/* ----------------------------------------------------------------------- */

#define MS1250TOCHARTABEX_COUNT         123
static ImplUniCharTabData const aImplMS1250ToCharTabEx[MS1250TOCHARTABEX_COUNT] =
{
  { 0x00A0, 0xA0, 0 },
  { 0x00A4, 0xA4, 0 },
  { 0x00A6, 0xA6, 0 },
  { 0x00A7, 0xA7, 0 },
  { 0x00A8, 0xA8, 0 },
  { 0x00A9, 0xA9, 0 },
  { 0x00AB, 0xAB, 0 },
  { 0x00AC, 0xAC, 0 },
  { 0x00AD, 0xAD, 0 },
  { 0x00AE, 0xAE, 0 },
  { 0x00B0, 0xB0, 0 },
  { 0x00B1, 0xB1, 0 },
  { 0x00B4, 0xB4, 0 },
  { 0x00B5, 0xB5, 0 },
  { 0x00B6, 0xB6, 0 },
  { 0x00B7, 0xB7, 0 },
  { 0x00B8, 0xB8, 0 },
  { 0x00BB, 0xBB, 0 },
  { 0x00C1, 0xC1, 0 },
  { 0x00C2, 0xC2, 0 },
  { 0x00C4, 0xC4, 0 },
  { 0x00C7, 0xC7, 0 },
  { 0x00C9, 0xC9, 0 },
  { 0x00CB, 0xCB, 0 },
  { 0x00CD, 0xCD, 0 },
  { 0x00CE, 0xCE, 0 },
  { 0x00D3, 0xD3, 0 },
  { 0x00D4, 0xD4, 0 },
  { 0x00D6, 0xD6, 0 },
  { 0x00D7, 0xD7, 0 },
  { 0x00DA, 0xDA, 0 },
  { 0x00DC, 0xDC, 0 },
  { 0x00DD, 0xDD, 0 },
  { 0x00DF, 0xDF, 0 },
  { 0x00E1, 0xE1, 0 },
  { 0x00E2, 0xE2, 0 },
  { 0x00E4, 0xE4, 0 },
  { 0x00E7, 0xE7, 0 },
  { 0x00E9, 0xE9, 0 },
  { 0x00EB, 0xEB, 0 },
  { 0x00ED, 0xED, 0 },
  { 0x00EE, 0xEE, 0 },
  { 0x00F3, 0xF3, 0 },
  { 0x00F4, 0xF4, 0 },
  { 0x00F6, 0xF6, 0 },
  { 0x00F7, 0xF7, 0 },
  { 0x00FA, 0xFA, 0 },
  { 0x00FC, 0xFC, 0 },
  { 0x00FD, 0xFD, 0 },
  { 0x0102, 0xC3, 0 },
  { 0x0103, 0xE3, 0 },
  { 0x0104, 0xA5, 0 },
  { 0x0105, 0xB9, 0 },
  { 0x0106, 0xC6, 0 },
  { 0x0107, 0xE6, 0 },
  { 0x010C, 0xC8, 0 },
  { 0x010D, 0xE8, 0 },
  { 0x010E, 0xCF, 0 },
  { 0x010F, 0xEF, 0 },
  { 0x0110, 0xD0, 0 },
  { 0x0111, 0xF0, 0 },
  { 0x0118, 0xCA, 0 },
  { 0x0119, 0xEA, 0 },
  { 0x011A, 0xCC, 0 },
  { 0x011B, 0xEC, 0 },
  { 0x0139, 0xC5, 0 },
  { 0x013A, 0xE5, 0 },
  { 0x013D, 0xBC, 0 },
  { 0x013E, 0xBE, 0 },
  { 0x0141, 0xA3, 0 },
  { 0x0142, 0xB3, 0 },
  { 0x0143, 0xD1, 0 },
  { 0x0144, 0xF1, 0 },
  { 0x0147, 0xD2, 0 },
  { 0x0148, 0xF2, 0 },
  { 0x0150, 0xD5, 0 },
  { 0x0151, 0xF5, 0 },
  { 0x0154, 0xC0, 0 },
  { 0x0155, 0xE0, 0 },
  { 0x0158, 0xD8, 0 },
  { 0x0159, 0xF8, 0 },
  { 0x015A, 0x8C, 0 },
  { 0x015B, 0x9C, 0 },
  { 0x015E, 0xAA, 0 },
  { 0x015F, 0xBA, 0 },
  { 0x0160, 0x8A, 0 },
  { 0x0161, 0x9A, 0 },
  { 0x0162, 0xDE, 0 },
  { 0x0163, 0xFE, 0 },
  { 0x0164, 0x8D, 0 },
  { 0x0165, 0x9D, 0 },
  { 0x016E, 0xD9, 0 },
  { 0x016F, 0xF9, 0 },
  { 0x0170, 0xDB, 0 },
  { 0x0171, 0xFB, 0 },
  { 0x0179, 0x8F, 0 },
  { 0x017A, 0x9F, 0 },
  { 0x017B, 0xAF, 0 },
  { 0x017C, 0xBF, 0 },
  { 0x017D, 0x8E, 0 },
  { 0x017E, 0x9E, 0 },
  { 0x02C7, 0xA1, 0 },
  { 0x02D8, 0xA2, 0 },
  { 0x02D9, 0xFF, 0 },
  { 0x02DB, 0xB2, 0 },
  { 0x02DD, 0xBD, 0 },
  { 0x2013, 0x96, 0 },
  { 0x2014, 0x97, 0 },
  { 0x2018, 0x91, 0 },
  { 0x2019, 0x92, 0 },
  { 0x201A, 0x82, 0 },
  { 0x201C, 0x93, 0 },
  { 0x201D, 0x94, 0 },
  { 0x201E, 0x84, 0 },
  { 0x2020, 0x86, 0 },
  { 0x2021, 0x87, 0 },
  { 0x2022, 0x95, 0 },
  { 0x2026, 0x85, 0 },
  { 0x2030, 0x89, 0 },
  { 0x2039, 0x8B, 0 },
  { 0x203A, 0x9B, 0 },
  { 0x20AC, 0x80, 0 },
  { 0x2122, 0x99, 0 }
};

/* ----------------------------------------------------------------------- */

static ImplByteConvertData const aImplMS1250ByteCvtData =
{
    aImplMS1250ToUniTab,
    NULL,
    MS1250UNI_START, MS1250UNI_END,
    NOTABUNI_START, NOTABUNI_END,
    NULL,
    NULL,
    aImplMS1250ToCharTabEx,
    NOTABCHAR_START, NOTABCHAR_END,
    NOTABCHAR_START, NOTABCHAR_END,
    MS1250TOCHARTABEX_COUNT
};

/* ----------------------------------------------------------------------- */

static ImplTextEncodingData const aImplMS1250TextEncodingData
    = { { &aImplMS1250ByteCvtData,
          ImplCharToUnicode,
          ImplUnicodeToChar,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL },
        1,
        1,
        1,
        238,
        "iso8859-2",
        "windows-1250",
        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
    /* WIN, SCRIPT_EASTEUROPE, pc code page 852, mac encoding 29 */

/* ======================================================================= */

/* MS-1251 */
/* Windows CodePage for Cyrillic */
/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
/* Convert-Tables: mappings/vendors/micsft/windows/cp1251.txt from 04/15/98 Version 2.01 */
/* Last-Changes from us: */

/* ----------------------------------------------------------------------- */

#define MS1251UNI_START                 0x80
#define MS1251UNI_END                   0xFF
static sal_uInt16 const aImplMS1251ToUniTab[MS1251UNI_END - MS1251UNI_START + 1] =
{
/*       0       1       2       3       4       5       6       7 */
/*       8       9       A       B       C       D       E       F */
    0x0402, 0x0403, 0x201A, 0x0453, 0x201E, 0x2026, 0x2020, 0x2021, /* 0x80 */
    0x20AC, 0x2030, 0x0409, 0x2039, 0x040A, 0x040C, 0x040B, 0x040F, /* 0x80 */
    0x0452, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, /* 0x90 */
         0, 0x2122, 0x0459, 0x203A, 0x045A, 0x045C, 0x045B, 0x045F, /* 0x90 */
    0x00A0, 0x040E, 0x045E, 0x0408, 0x00A4, 0x0490, 0x00A6, 0x00A7, /* 0xA0 */
    0x0401, 0x00A9, 0x0404, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x0407, /* 0xA0 */
    0x00B0, 0x00B1, 0x0406, 0x0456, 0x0491, 0x00B5, 0x00B6, 0x00B7, /* 0xB0 */
    0x0451, 0x2116, 0x0454, 0x00BB, 0x0458, 0x0405, 0x0455, 0x0457, /* 0xB0 */
    0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, /* 0xC0 */
    0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, /* 0xC0 */
    0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, /* 0xD0 */
    0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, /* 0xD0 */
    0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, /* 0xE0 */
    0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, /* 0xE0 */
    0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, /* 0xF0 */
    0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F  /* 0xF0 */
};

/* ----------------------------------------------------------------------- */

#define MS1251CHAR_START                0x0401
#define MS1251CHAR_END                  0x045F
static sal_uChar const aImplMS1251ToCharTab[MS1251CHAR_END - MS1251CHAR_START + 1] =
{
/*     0     1     2     3     4     5     6     7 */
/*     8     9     A     B     C     D     E     F */
          0xA8, 0x80, 0x81, 0xAA, 0xBD, 0xB2, 0xAF, /* 0x0400 */
    0xA3, 0x8A, 0x8C, 0x8E, 0x8D,    0, 0xA1, 0x8F, /* 0x0400 */
    0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, /* 0x0410 */
    0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, /* 0x0410 */
    0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, /* 0x0420 */
    0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, /* 0x0420 */
    0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, /* 0x0430 */
    0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, /* 0x0430 */
    0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, /* 0x0440 */
    0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF, /* 0x0440 */
       0, 0xB8, 0x90, 0x83, 0xBA, 0xBE, 0xB3, 0xBF, /* 0x0450 */
    0xBC, 0x9A, 0x9C, 0x9E, 0x9D,    0, 0xA2, 0x9F  /* 0x0450 */
};

/* ----------------------------------------------------------------------- */

#define MS1251TOCHARTABEX_COUNT         35
static ImplUniCharTabData const aImplMS1251ToCharTabEx[MS1251TOCHARTABEX_COUNT] =
{
  { 0x00A0, 0xA0, 0 },
  { 0x00A4, 0xA4, 0 },
  { 0x00A6, 0xA6, 0 },
  { 0x00A7, 0xA7, 0 },
  { 0x00A9, 0xA9, 0 },
  { 0x00AB, 0xAB, 0 },
  { 0x00AC, 0xAC, 0 },
  { 0x00AD, 0xAD, 0 },
  { 0x00AE, 0xAE, 0 },
  { 0x00B0, 0xB0, 0 },
  { 0x00B1, 0xB1, 0 },
  { 0x00B5, 0xB5, 0 },
  { 0x00B6, 0xB6, 0 },
  { 0x00B7, 0xB7, 0 },
  { 0x00BB, 0xBB, 0 },
  { 0x0490, 0xA5, 0 },
  { 0x0491, 0xB4, 0 },
  { 0x2013, 0x96, 0 },
  { 0x2014, 0x97, 0 },
  { 0x2018, 0x91, 0 },
  { 0x2019, 0x92, 0 },
  { 0x201A, 0x82, 0 },
  { 0x201C, 0x93, 0 },
  { 0x201D, 0x94, 0 },
  { 0x201E, 0x84, 0 },
  { 0x2020, 0x86, 0 },
  { 0x2021, 0x87, 0 },
  { 0x2022, 0x95, 0 },
  { 0x2026, 0x85, 0 },
  { 0x2030, 0x89, 0 },
  { 0x2039, 0x8B, 0 },
  { 0x203A, 0x9B, 0 },
  { 0x20AC, 0x88, 0 },
  { 0x2116, 0xB9, 0 },
  { 0x2122, 0x99, 0 }
};

/* ----------------------------------------------------------------------- */

static ImplByteConvertData const aImplMS1251ByteCvtData =
{
    aImplMS1251ToUniTab,
    NULL,
    MS1251UNI_START, MS1251UNI_END,
    NOTABUNI_START, NOTABUNI_END,
    aImplMS1251ToCharTab,
    NULL,
    aImplMS1251ToCharTabEx,
    MS1251CHAR_START, MS1251CHAR_END,
    NOTABCHAR_START, NOTABCHAR_END,
    MS1251TOCHARTABEX_COUNT
};

/* ----------------------------------------------------------------------- */

static ImplTextEncodingData const aImplMS1251TextEncodingData
    = { { &aImplMS1251ByteCvtData,
          ImplCharToUnicode,
          ImplUnicodeToChar,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL },
        1,
        1,
        1,
        204,
        "iso8859-5",
        "windows-1251",
        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
    /* WIN, SCRIPT_CYRILLIC, pc code page 866 (855?), mac encoding 7 */

/* ======================================================================= */

/* MS-1253 */
/* Windows Standard CharSet for Greek */
/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
/* Convert-Tables: mappings/vendors/micsft/windows/cp1253.txt from 04/15/98 Version 2.01 */
/* Last-Changes from us: */

/* ----------------------------------------------------------------------- */

#define MS1253UNI_START                 0x80
#define MS1253UNI_END                   0xFF
static sal_uInt16 const aImplMS1253ToUniTab[MS1253UNI_END - MS1253UNI_START + 1] =
{
/*       0       1       2       3       4       5       6       7 */
/*       8       9       A       B       C       D       E       F */
    0x20AC,      0, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, /* 0x80 */
         0, 0x2030,      0, 0x2039,      0,      0,      0,      0, /* 0x80 */
         0, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, /* 0x90 */
         0, 0x2122,      0, 0x203A,      0,      0,      0,      0, /* 0x90 */
    0x00A0, 0x0385, 0x0386, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, /* 0xA0 */
    0x00A8, 0x00A9,      0, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x2015, /* 0xA0 */
    0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x0384, 0x00B5, 0x00B6, 0x00B7, /* 0xB0 */
    0x0388, 0x0389, 0x038A, 0x00BB, 0x038C, 0x00BD, 0x038E, 0x038F, /* 0xB0 */
    0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, /* 0xC0 */
    0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, /* 0xC0 */
    0x03A0, 0x03A1,      0, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, /* 0xD0 */
    0x03A8, 0x03A9, 0x03AA, 0x03AB, 0x03AC, 0x03AD, 0x03AE, 0x03AF, /* 0xD0 */
    0x03B0, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, /* 0xE0 */
    0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, /* 0xE0 */
    0x03C0, 0x03C1, 0x03C2, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7, /* 0xF0 */
    0x03C8, 0x03C9, 0x03CA, 0x03CB, 0x03CC, 0x03CD, 0x03CE,      0  /* 0xF0 */
};

/* ----------------------------------------------------------------------- */

#define MS1253CHAR_START                0x0384
#define MS1253CHAR_END                  0x03CE
static sal_uChar const aImplMS1253ToCharTab[MS1253CHAR_END - MS1253CHAR_START + 1] =
{
/*     0     1     2     3     4     5     6     7 */
/*     8     9     A     B     C     D     E     F */
                            0xB4, 0xA1, 0xA2,    0, /* 0x0380 */
    0xB8, 0xB9, 0xBA,    0, 0xBC,    0, 0xBE, 0xBF, /* 0x0380 */
    0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, /* 0x0390 */
    0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, /* 0x0390 */
    0xD0, 0xD1,    0, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, /* 0x03A0 */
    0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, /* 0x03A0 */
    0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, /* 0x03B0 */
    0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, /* 0x03B0 */
    0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, /* 0x03C0 */
    0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE        /* 0x03C0 */
};

/* ----------------------------------------------------------------------- */

#define MS1253TOCHARTABEX_COUNT         40
static ImplUniCharTabData const aImplMS1253ToCharTabEx[MS1253TOCHARTABEX_COUNT] =
{
  { 0x00A0, 0xA0, 0 },
  { 0x00A3, 0xA3, 0 },
  { 0x00A4, 0xA4, 0 },
  { 0x00A5, 0xA5, 0 },
  { 0x00A6, 0xA6, 0 },
  { 0x00A7, 0xA7, 0 },
  { 0x00A8, 0xA8, 0 },
  { 0x00A9, 0xA9, 0 },
  { 0x00AB, 0xAB, 0 },
  { 0x00AC, 0xAC, 0 },
  { 0x00AD, 0xAD, 0 },
  { 0x00AE, 0xAE, 0 },
  { 0x00B0, 0xB0, 0 },
  { 0x00B1, 0xB1, 0 },
  { 0x00B2, 0xB2, 0 },
  { 0x00B3, 0xB3, 0 },
  { 0x00B5, 0xB5, 0 },
  { 0x00B6, 0xB6, 0 },
  { 0x00B7, 0xB7, 0 },
  { 0x00BB, 0xBB, 0 },
  { 0x00BD, 0xBD, 0 },
  { 0x0192, 0x83, 0 },
  { 0x2013, 0x96, 0 },
  { 0x2014, 0x97, 0 },
  { 0x2015, 0xAF, 0 },
  { 0x2018, 0x91, 0 },
  { 0x2019, 0x92, 0 },
  { 0x201A, 0x82, 0 },
  { 0x201C, 0x93, 0 },
  { 0x201D, 0x94, 0 },
  { 0x201E, 0x84, 0 },
  { 0x2020, 0x86, 0 },
  { 0x2021, 0x87, 0 },
  { 0x2022, 0x95, 0 },
  { 0x2026, 0x85, 0 },
  { 0x2030, 0x89, 0 },
  { 0x2039, 0x8B, 0 },
  { 0x203A, 0x9B, 0 },
  { 0x20AC, 0x80, 0 },
  { 0x2122, 0x99, 0 }
};

/* ----------------------------------------------------------------------- */

static ImplByteConvertData const aImplMS1253ByteCvtData =
{
    aImplMS1253ToUniTab,
    NULL,
    MS1253UNI_START, MS1253UNI_END,
    NOTABUNI_START, NOTABUNI_END,
    aImplMS1253ToCharTab,
    NULL,
    aImplMS1253ToCharTabEx,
    MS1253CHAR_START, MS1253CHAR_END,
    NOTABCHAR_START, NOTABCHAR_END,
    MS1253TOCHARTABEX_COUNT
};

/* ----------------------------------------------------------------------- */

static ImplTextEncodingData const aImplMS1253TextEncodingData
    = { { &aImplMS1253ByteCvtData,
          ImplCharToUnicode,
          ImplUnicodeToChar,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL },
        1,
        1,
        1,
        161,
        "iso8859-7",
        "windows-1253",
        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
    /* WIN, SCRIPT_GREEK, pc code page 869, mac encoding 6 */

/* ======================================================================= */

/* MS-1254 */
/* Windows Standard CharSet for Turkish */
/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
/* Convert-Tables: mappings/vendors/micsft/windows/cp1254.txt from 04/15/98 Version 2.01 */
/* Last-Changes from us: */

/* ----------------------------------------------------------------------- */

#define MS1254UNI_START                 0x80
#define MS1254UNI_END                   0xFF
static sal_uInt16 const aImplMS1254ToUniTab[MS1254UNI_END - MS1254UNI_START + 1] =
{
/*       0       1       2       3       4       5       6       7 */
/*       8       9       A       B       C       D       E       F */
    0x20AC,      0, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, /* 0x80 */
    0x02C6, 0x2030, 0x0160, 0x2039, 0x0152,      0,      0,      0, /* 0x80 */
         0, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, /* 0x90 */
    0x02DC, 0x2122, 0x0161, 0x203A, 0x0153,      0,      0, 0x0178, /* 0x90 */
    0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, /* 0xA0 */
    0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, /* 0xA0 */
    0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, /* 0xB0 */
    0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, /* 0xB0 */
    0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, /* 0xC0 */
    0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, /* 0xC0 */
    0x011E, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, /* 0xD0 */
    0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x0130, 0x015E, 0x00DF, /* 0xD0 */
    0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, /* 0xE0 */
    0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, /* 0xE0 */
    0x011F, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, /* 0xF0 */
    0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x0131, 0x015F, 0x00FF  /* 0xF0 */
};

/* ----------------------------------------------------------------------- */

#define MS1254CHAR_START                0x00A0
#define MS1254CHAR_END                  0x00FF
static sal_uChar const aImplMS1254ToCharTab[MS1254CHAR_END - MS1254CHAR_START + 1] =
{
/*     0     1     2     3     4     5     6     7 */
/*     8     9     A     B     C     D     E     F */
    0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, /* 0x00A0 */
    0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, /* 0x00A0 */
    0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, /* 0x00B0 */
    0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF, /* 0x00B0 */
    0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, /* 0x00C0 */
    0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, /* 0x00C0 */
       0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, /* 0x00D0 */
    0xD8, 0xD9, 0xDA, 0xDB, 0xDC,    0,    0, 0xDF, /* 0x00D0 */
    0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, /* 0x00E0 */
    0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, /* 0x00E0 */
       0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, /* 0x00F0 */
    0xF8, 0xF9, 0xFA, 0xFB, 0xFC,    0,    0, 0xFF  /* 0x00F0 */
};

/* ----------------------------------------------------------------------- */

#define MS1254TOCHARTABEX_COUNT         31
static ImplUniCharTabData const aImplMS1254ToCharTabEx[MS1254TOCHARTABEX_COUNT] =
{
  { 0x011E, 0xD0, 0 },
  { 0x011F, 0xF0, 0 },
  { 0x0130, 0xDD, 0 },
  { 0x0131, 0xFD, 0 },
  { 0x0152, 0x8C, 0 },
  { 0x0153, 0x9C, 0 },
  { 0x015E, 0xDE, 0 },
  { 0x015F, 0xFE, 0 },
  { 0x0160, 0x8A, 0 },
  { 0x0161, 0x9A, 0 },
  { 0x0178, 0x9F, 0 },
  { 0x0192, 0x83, 0 },
  { 0x02C6, 0x88, 0 },
  { 0x02DC, 0x98, 0 },
  { 0x2013, 0x96, 0 },
  { 0x2014, 0x97, 0 },
  { 0x2018, 0x91, 0 },
  { 0x2019, 0x92, 0 },
  { 0x201A, 0x82, 0 },
  { 0x201C, 0x93, 0 },
  { 0x201D, 0x94, 0 },
  { 0x201E, 0x84, 0 },
  { 0x2020, 0x86, 0 },
  { 0x2021, 0x87, 0 },
  { 0x2022, 0x95, 0 },
  { 0x2026, 0x85, 0 },
  { 0x2030, 0x89, 0 },
  { 0x2039, 0x8B, 0 },
  { 0x203A, 0x9B, 0 },
  { 0x20AC, 0x80, 0 },
  { 0x2122, 0x99, 0 }
};

/* ----------------------------------------------------------------------- */

static ImplByteConvertData const aImplMS1254ByteCvtData =
{
    aImplMS1254ToUniTab,
    NULL,
    MS1254UNI_START, MS1254UNI_END,
    NOTABUNI_START, NOTABUNI_END,
    aImplMS1254ToCharTab,
    NULL,
    aImplMS1254ToCharTabEx,
    MS1254CHAR_START, MS1254CHAR_END,
    NOTABCHAR_START, NOTABCHAR_END,
    MS1254TOCHARTABEX_COUNT,
};

/* ----------------------------------------------------------------------- */

static ImplTextEncodingData const aImplMS1254TextEncodingData
    = { { &aImplMS1254ByteCvtData,
          ImplCharToUnicode,
          ImplUnicodeToChar,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL },
        1,
        1,
        1,
        162,
        "iso8859-9",
        "windows-1254",
        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
    /* WIN, SCRIPT_TURKISH, pc code page 857, mac encoding 35 */

/* ======================================================================= */

/* MS-1257 */
/* Windows Standard CharSet for Baltic */
/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
/* Convert-Tables: mappings/vendors/micsft/windows/cp1257.txt from 04/15/98 Version 2.01 */
/* Last-Changes from us: */

/* ----------------------------------------------------------------------- */

#define MS1257UNI_START                 0x80
#define MS1257UNI_END                   0xFF
static sal_uInt16 const aImplMS1257ToUniTab[MS1257UNI_END - MS1257UNI_START + 1] =
{
/*       0       1       2       3       4       5       6       7 */
/*       8       9       A       B       C       D       E       F */
    0x20AC,      0, 0x201A,      0, 0x201E, 0x2026, 0x2020, 0x2021, /* 0x80 */
         0, 0x2030,      0, 0x2039,      0, 0x00A8, 0x02C7, 0x00B8, /* 0x80 */
         0, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, /* 0x90 */
         0, 0x2122,      0, 0x203A,      0, 0x00AF, 0x02DB,      0, /* 0x90 */
    0x00A0,      0, 0x00A2, 0x00A3, 0x00A4,      0, 0x00A6, 0x00A7, /* 0xA0 */
    0x00D8, 0x00A9, 0x0156, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00C6, /* 0xA0 */
    0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, /* 0xB0 */
    0x00F8, 0x00B9, 0x0157, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00E6, /* 0xB0 */
    0x0104, 0x012E, 0x0100, 0x0106, 0x00C4, 0x00C5, 0x0118, 0x0112, /* 0xC0 */
    0x010C, 0x00C9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012A, 0x013B, /* 0xC0 */
    0x0160, 0x0143, 0x0145, 0x00D3, 0x014C, 0x00D5, 0x00D6, 0x00D7, /* 0xD0 */
    0x0172, 0x0141, 0x015A, 0x016A, 0x00DC, 0x017B, 0x017D, 0x00DF, /* 0xD0 */
    0x0105, 0x012F, 0x0101, 0x0107, 0x00E4, 0x00E5, 0x0119, 0x0113, /* 0xE0 */
    0x010D, 0x00E9, 0x017A, 0x0117, 0x0123, 0x0137, 0x012B, 0x013C, /* 0xE0 */
    0x0161, 0x0144, 0x0146, 0x00F3, 0x014D, 0x00F5, 0x00F6, 0x00F7, /* 0xF0 */
    0x0173, 0x0142, 0x015B, 0x016B, 0x00FC, 0x017C, 0x017E, 0x02D9  /* 0xF0 */
};

/* ----------------------------------------------------------------------- */

#define MS1257CHAR_START                0x00A0
#define MS1257CHAR_END                  0x017E
static sal_uChar const aImplMS1257ToCharTab[MS1257CHAR_END - MS1257CHAR_START + 1] =
{
/*     0     1     2     3     4     5     6     7 */
/*     8     9     A     B     C     D     E     F */
    0xA0,    0, 0xA2, 0xA3, 0xA4,    0, 0xA6, 0xA7, /* 0x00A0 */
    0x8D, 0xA9,    0, 0xAB, 0xAC, 0xAD, 0xAE, 0x9D, /* 0x00A0 */
    0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, /* 0x00B0 */
    0x8F, 0xB9,    0, 0xBB, 0xBC, 0xBD, 0xBE,    0, /* 0x00B0 */
       0,    0,    0,    0, 0xC4, 0xC5, 0xAF,    0, /* 0x00C0 */
       0, 0xC9,    0,    0,    0,    0,    0,    0, /* 0x00C0 */
       0,    0,    0, 0xD3,    0, 0xD5, 0xD6, 0xD7, /* 0x00D0 */
    0xA8,    0,    0,    0, 0xDC,    0,    0, 0xDF, /* 0x00D0 */
       0,    0,    0,    0, 0xE4, 0xE5, 0xBF,    0, /* 0x00E0 */
       0, 0xE9,    0,    0,    0,    0,    0,    0, /* 0x00E0 */
       0,    0,    0, 0xF3,    0, 0xF5, 0xF6, 0xF7, /* 0x00F0 */
    0xB8,    0,    0,    0, 0xFC,    0,    0,    0, /* 0x00F0 */
    0xC2, 0xE2,    0,    0, 0xC0, 0xE0, 0xC3, 0xE3, /* 0x0100 */
       0,    0,    0,    0, 0xC8, 0xE8,    0,    0, /* 0x0100 */
       0,    0, 0xC7, 0xE7,    0,    0, 0xCB, 0xEB, /* 0x0110 */
    0xC6, 0xE6,    0,    0,    0,    0,    0,    0, /* 0x0110 */
       0,    0, 0xCC, 0xEC,    0,    0,    0,    0, /* 0x0120 */
       0,    0, 0xCE, 0xEE,    0,    0, 0xC1, 0xE1, /* 0x0120 */
       0,    0,    0,    0,    0,    0, 0xCD, 0xED, /* 0x0130 */
       0,    0,    0, 0xCF, 0xEF,    0,    0,    0, /* 0x0130 */
       0, 0xD9, 0xF9, 0xD1, 0xF1, 0xD2, 0xF2,    0, /* 0x0140 */
       0,    0,    0,    0, 0xD4, 0xF4,    0,    0, /* 0x0140 */
       0,    0,    0,    0,    0,    0, 0xAA, 0xBA, /* 0x0150 */
       0,    0, 0xDA, 0xFA,    0,    0,    0,    0, /* 0x0150 */
    0xD0, 0xF0,    0,    0,    0,    0,    0,    0, /* 0x0160 */
       0,    0, 0xDB, 0xFB,    0,    0,    0,    0, /* 0x0160 */
       0,    0, 0xD8, 0xF8,    0,    0,    0,    0, /* 0x0170 */
       0, 0xCA, 0xEA, 0xDD, 0xFD, 0xDE, 0xFE        /* 0x0170 */
};

/* ----------------------------------------------------------------------- */

#define MS1257TOCHARTABEX_COUNT         20
static ImplUniCharTabData const aImplMS1257ToCharTabEx[MS1257TOCHARTABEX_COUNT] =
{
  { 0x02C7, 0x8E, 0 },
  { 0x02D9, 0xFF, 0 },
  { 0x02DB, 0x9E, 0 },
  { 0x2013, 0x96, 0 },
  { 0x2014, 0x97, 0 },
  { 0x2018, 0x91, 0 },
  { 0x2019, 0x92, 0 },
  { 0x201A, 0x82, 0 },
  { 0x201C, 0x93, 0 },
  { 0x201D, 0x94, 0 },
  { 0x201E, 0x84, 0 },
  { 0x2020, 0x86, 0 },
  { 0x2021, 0x87, 0 },
  { 0x2022, 0x95, 0 },
  { 0x2026, 0x85, 0 },
  { 0x2030, 0x89, 0 },
  { 0x2039, 0x8B, 0 },
  { 0x203A, 0x9B, 0 },
  { 0x20AC, 0x80, 0 },
  { 0x2122, 0x99, 0 }
};

/* ----------------------------------------------------------------------- */

static ImplByteConvertData const aImplMS1257ByteCvtData =
{
    aImplMS1257ToUniTab,
    NULL,
    MS1257UNI_START, MS1257UNI_END,
    NOTABUNI_START, NOTABUNI_END,
    aImplMS1257ToCharTab,
    NULL,
    aImplMS1257ToCharTabEx,
    MS1257CHAR_START, MS1257CHAR_END,
    NOTABCHAR_START, NOTABCHAR_END,
    MS1257TOCHARTABEX_COUNT,
};

/* ----------------------------------------------------------------------- */

static ImplTextEncodingData const aImplMS1257TextEncodingData
    = { { &aImplMS1257ByteCvtData,
          ImplCharToUnicode,
          ImplUnicodeToChar,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL },
        1,
        1,
        1,
        186,
        "iso8859-4",
        "windows-1257",
        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
    /* WIN, SCRIPT_BALTIC, pc code page 775, mac encoding 29 */

/* ======================================================================= */

/* ISO-8859-2 */
/* Unix Standard for Eastern European (Latin2) */
/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme, 0x80-0x9F Control-Caracter wie in Unicode */
/* Convert-Tables: mappings/iso8859/8859-2.txt from 07/27/99 Version 1.0 (based on Unicode 3.0) */
/* Last-Changes from us: */

#define ISO88592UNI_START               0xA0
#define ISO88592UNI_END                 0xFF
static sal_uInt16 const aImplISO88592ToUniTab[ISO88592UNI_END - ISO88592UNI_START + 1] =
{
/*       0       1       2       3       4       5       6       7 */
/*       8       9       A       B       C       D       E       F */
    0x00A0, 0x0104, 0x02D8, 0x0141, 0x00A4, 0x013D, 0x015A, 0x00A7, /* 0xA0 */
    0x00A8, 0x0160, 0x015E, 0x0164, 0x0179, 0x00AD, 0x017D, 0x017B, /* 0xA0 */
    0x00B0, 0x0105, 0x02DB, 0x0142, 0x00B4, 0x013E, 0x015B, 0x02C7, /* 0xB0 */
    0x00B8, 0x0161, 0x015F, 0x0165, 0x017A, 0x02DD, 0x017E, 0x017C, /* 0xB0 */
    0x0154, 0x00C1, 0x00C2, 0x0102, 0x00C4, 0x0139, 0x0106, 0x00C7, /* 0xC0 */
    0x010C, 0x00C9, 0x0118, 0x00CB, 0x011A, 0x00CD, 0x00CE, 0x010E, /* 0xC0 */
    0x0110, 0x0143, 0x0147, 0x00D3, 0x00D4, 0x0150, 0x00D6, 0x00D7, /* 0xD0 */
    0x0158, 0x016E, 0x00DA, 0x0170, 0x00DC, 0x00DD, 0x0162, 0x00DF, /* 0xD0 */
    0x0155, 0x00E1, 0x00E2, 0x0103, 0x00E4, 0x013A, 0x0107, 0x00E7, /* 0xE0 */
    0x010D, 0x00E9, 0x0119, 0x00EB, 0x011B, 0x00ED, 0x00EE, 0x010F, /* 0xE0 */
    0x0111, 0x0144, 0x0148, 0x00F3, 0x00F4, 0x0151, 0x00F6, 0x00F7, /* 0xF0 */
    0x0159, 0x016F, 0x00FA, 0x0171, 0x00FC, 0x00FD, 0x0163, 0x02D9  /* 0xF0 */
};

/* ----------------------------------------------------------------------- */

#define ISO88592TOCHARTABEX_COUNT       96
static ImplUniCharTabData const aImplISO88592ToCharTabEx[ISO88592TOCHARTABEX_COUNT] =
{
  { 0x00A0, 0xA0, 0 },
  { 0x00A4, 0xA4, 0 },
  { 0x00A7, 0xA7, 0 },
  { 0x00A8, 0xA8, 0 },
  { 0x00AD, 0xAD, 0 },
  { 0x00B0, 0xB0, 0 },
  { 0x00B4, 0xB4, 0 },
  { 0x00B8, 0xB8, 0 },
  { 0x00C1, 0xC1, 0 },
  { 0x00C2, 0xC2, 0 },
  { 0x00C4, 0xC4, 0 },
  { 0x00C7, 0xC7, 0 },
  { 0x00C9, 0xC9, 0 },
  { 0x00CB, 0xCB, 0 },
  { 0x00CD, 0xCD, 0 },
  { 0x00CE, 0xCE, 0 },
  { 0x00D3, 0xD3, 0 },
  { 0x00D4, 0xD4, 0 },
  { 0x00D6, 0xD6, 0 },
  { 0x00D7, 0xD7, 0 },
  { 0x00DA, 0xDA, 0 },
  { 0x00DC, 0xDC, 0 },
  { 0x00DD, 0xDD, 0 },
  { 0x00DF, 0xDF, 0 },
  { 0x00E1, 0xE1, 0 },
  { 0x00E2, 0xE2, 0 },
  { 0x00E4, 0xE4, 0 },
  { 0x00E7, 0xE7, 0 },
  { 0x00E9, 0xE9, 0 },
  { 0x00EB, 0xEB, 0 },
  { 0x00ED, 0xED, 0 },
  { 0x00EE, 0xEE, 0 },
  { 0x00F3, 0xF3, 0 },
  { 0x00F4, 0xF4, 0 },
  { 0x00F6, 0xF6, 0 },
  { 0x00F7, 0xF7, 0 },
  { 0x00FA, 0xFA, 0 },
  { 0x00FC, 0xFC, 0 },
  { 0x00FD, 0xFD, 0 },
  { 0x0102, 0xC3, 0 },
  { 0x0103, 0xE3, 0 },
  { 0x0104, 0xA1, 0 },
  { 0x0105, 0xB1, 0 },
  { 0x0106, 0xC6, 0 },
  { 0x0107, 0xE6, 0 },
  { 0x010C, 0xC8, 0 },
  { 0x010D, 0xE8, 0 },
  { 0x010E, 0xCF, 0 },
  { 0x010F, 0xEF, 0 },
  { 0x0110, 0xD0, 0 },
  { 0x0111, 0xF0, 0 },
  { 0x0118, 0xCA, 0 },
  { 0x0119, 0xEA, 0 },
  { 0x011A, 0xCC, 0 },
  { 0x011B, 0xEC, 0 },
  { 0x0139, 0xC5, 0 },
  { 0x013A, 0xE5, 0 },
  { 0x013D, 0xA5, 0 },
  { 0x013E, 0xB5, 0 },
  { 0x0141, 0xA3, 0 },
  { 0x0142, 0xB3, 0 },
  { 0x0143, 0xD1, 0 },
  { 0x0144, 0xF1, 0 },
  { 0x0147, 0xD2, 0 },
  { 0x0148, 0xF2, 0 },
  { 0x0150, 0xD5, 0 },
  { 0x0151, 0xF5, 0 },
  { 0x0154, 0xC0, 0 },
  { 0x0155, 0xE0, 0 },
  { 0x0158, 0xD8, 0 },
  { 0x0159, 0xF8, 0 },
  { 0x015A, 0xA6, 0 },
  { 0x015B, 0xB6, 0 },
  { 0x015E, 0xAA, 0 },
  { 0x015F, 0xBA, 0 },
  { 0x0160, 0xA9, 0 },
  { 0x0161, 0xB9, 0 },
  { 0x0162, 0xDE, 0 },
  { 0x0163, 0xFE, 0 },
  { 0x0164, 0xAB, 0 },
  { 0x0165, 0xBB, 0 },
  { 0x016E, 0xD9, 0 },
  { 0x016F, 0xF9, 0 },
  { 0x0170, 0xDB, 0 },
  { 0x0171, 0xFB, 0 },
  { 0x0179, 0xAC, 0 },
  { 0x017A, 0xBC, 0 },
  { 0x017B, 0xAF, 0 },
  { 0x017C, 0xBF, 0 },
  { 0x017D, 0xAE, 0 },
  { 0x017E, 0xBE, 0 },
  { 0x02C7, 0xB7, 0 },
  { 0x02D8, 0xA2, 0 },
  { 0x02D9, 0xFF, 0 },
  { 0x02DB, 0xB2, 0 },
  { 0x02DD, 0xBD, 0 }
};

/* ----------------------------------------------------------------------- */

static ImplByteConvertData const aImplISO88592ByteCvtData =
{
    aImplISO88592ToUniTab,
    aImpl8090SameToUniTab,
    ISO88592UNI_START, ISO88592UNI_END,
    SAME8090UNI_START, SAME8090UNI_END,
    aImpl8090SameToCharTab,
    NULL,
    aImplISO88592ToCharTabEx,
    SAME8090CHAR_START, SAME8090CHAR_END,
    NOTABCHAR_START, NOTABCHAR_END,
    ISO88592TOCHARTABEX_COUNT
};

/* ----------------------------------------------------------------------- */

static ImplTextEncodingData const aImplISO88592TextEncodingData
    = { { &aImplISO88592ByteCvtData,
          ImplCharToUnicode,
          ImplUnicodeToChar,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL },
        1,
        1,
        1,
        238,
        "iso8859-2",
        "iso-8859-2",
        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
    /* SCRIPT_EASTEUROPE, pc code page 852, mac encoding 29 */

/* ======================================================================= */

/* ISO-8859-3 */
/* Latin3 (Esperanto, Maltese, Turkish) */
/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme, 0x80-0x9F Control-Caracter wie in Unicode */
/* Convert-Tables: mappings/iso8859/8859-3.txt from 07/27/99 Version 1.0 (based on Unicode 3.0) */
/* Last-Changes from us: */

#define ISO88593UNI_START               0xA0
#define ISO88593UNI_END                 0xFF
static sal_uInt16 const aImplISO88593ToUniTab[ISO88593UNI_END - ISO88593UNI_START + 1] =
{
/*       0       1       2       3       4       5       6       7 */
/*       8       9       A       B       C       D       E       F */
    0x00A0, 0x0126, 0x02D8, 0x00A3, 0x00A4,      0, 0x0124, 0x00A7, /* 0xA0 */
    0x00A8, 0x0130, 0x015E, 0x011E, 0x0134, 0x00AD,      0, 0x017B, /* 0xA0 */
    0x00B0, 0x0127, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x0125, 0x00B7, /* 0xB0 */
    0x00B8, 0x0131, 0x015F, 0x011F, 0x0135, 0x00BD,      0, 0x017C, /* 0xB0 */
    0x00C0, 0x00C1, 0x00C2,      0, 0x00C4, 0x010A, 0x0108, 0x00C7, /* 0xC0 */
    0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, /* 0xC0 */
         0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x0120, 0x00D6, 0x00D7, /* 0xD0 */
    0x011C, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x016C, 0x015C, 0x00DF, /* 0xD0 */
    0x00E0, 0x00E1, 0x00E2,      0, 0x00E4, 0x010B, 0x0109, 0x00E7, /* 0xE0 */
    0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, /* 0xE0 */
         0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x0121, 0x00F6, 0x00F7, /* 0xF0 */
    0x011D, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x016D, 0x015D, 0x02D9  /* 0xF0 */
};

/* ----------------------------------------------------------------------- */

#define ISO88593TOCHARTABEX_COUNT       89
static ImplUniCharTabData const aImplISO88593ToCharTabEx[ISO88593TOCHARTABEX_COUNT] =
{
  { 0x00A0, 0xA0, 0 },
  { 0x00A3, 0xA3, 0 },
  { 0x00A4, 0xA4, 0 },
  { 0x00A7, 0xA7, 0 },
  { 0x00A8, 0xA8, 0 },
  { 0x00AD, 0xAD, 0 },
  { 0x00B0, 0xB0, 0 },
  { 0x00B2, 0xB2, 0 },
  { 0x00B3, 0xB3, 0 },
  { 0x00B4, 0xB4, 0 },
  { 0x00B5, 0xB5, 0 },
  { 0x00B7, 0xB7, 0 },
  { 0x00B8, 0xB8, 0 },
  { 0x00BD, 0xBD, 0 },
  { 0x00C0, 0xC0, 0 },
  { 0x00C1, 0xC1, 0 },
  { 0x00C2, 0xC2, 0 },
  { 0x00C4, 0xC4, 0 },
  { 0x00C7, 0xC7, 0 },
  { 0x00C8, 0xC8, 0 },
  { 0x00C9, 0xC9, 0 },
  { 0x00CA, 0xCA, 0 },
  { 0x00CB, 0xCB, 0 },
  { 0x00CC, 0xCC, 0 },
  { 0x00CD, 0xCD, 0 },
  { 0x00CE, 0xCE, 0 },
  { 0x00CF, 0xCF, 0 },
  { 0x00D1, 0xD1, 0 },
  { 0x00D2, 0xD2, 0 },
  { 0x00D3, 0xD3, 0 },
  { 0x00D4, 0xD4, 0 },
  { 0x00D6, 0xD6, 0 },
  { 0x00D7, 0xD7, 0 },
  { 0x00D9, 0xD9, 0 },
  { 0x00DA, 0xDA, 0 },
  { 0x00DB, 0xDB, 0 },
  { 0x00DC, 0xDC, 0 },
  { 0x00DF, 0xDF, 0 },
  { 0x00E0, 0xE0, 0 },
  { 0x00E1, 0xE1, 0 },
  { 0x00E2, 0xE2, 0 },
  { 0x00E4, 0xE4, 0 },
  { 0x00E7, 0xE7, 0 },
  { 0x00E8, 0xE8, 0 },
  { 0x00E9, 0xE9, 0 },
  { 0x00EA, 0xEA, 0 },
  { 0x00EB, 0xEB, 0 },
  { 0x00EC, 0xEC, 0 },
  { 0x00ED, 0xED, 0 },
  { 0x00EE, 0xEE, 0 },
  { 0x00EF, 0xEF, 0 },
  { 0x00F1, 0xF1, 0 },
  { 0x00F2, 0xF2, 0 },
  { 0x00F3, 0xF3, 0 },
  { 0x00F4, 0xF4, 0 },
  { 0x00F6, 0xF6, 0 },
  { 0x00F7, 0xF7, 0 },
  { 0x00F9, 0xF9, 0 },
  { 0x00FA, 0xFA, 0 },
  { 0x00FB, 0xFB, 0 },
  { 0x00FC, 0xFC, 0 },
  { 0x0108, 0xC6, 0 },
  { 0x0109, 0xE6, 0 },
  { 0x010A, 0xC5, 0 },
  { 0x010B, 0xE5, 0 },
  { 0x011C, 0xD8, 0 },
  { 0x011D, 0xF8, 0 },
  { 0x011E, 0xAB, 0 },
  { 0x011F, 0xBB, 0 },
  { 0x0120, 0xD5, 0 },
  { 0x0121, 0xF5, 0 },
  { 0x0124, 0xA6, 0 },
  { 0x0125, 0xB6, 0 },
  { 0x0126, 0xA1, 0 },
  { 0x0127, 0xB1, 0 },
  { 0x0130, 0xA9, 0 },
  { 0x0131, 0xB9, 0 },
  { 0x0134, 0xAC, 0 },
  { 0x0135, 0xBC, 0 },
  { 0x015C, 0xDE, 0 },
  { 0x015D, 0xFE, 0 },
  { 0x015E, 0xAA, 0 },
  { 0x015F, 0xBA, 0 },
  { 0x016C, 0xDD, 0 },
  { 0x016D, 0xFD, 0 },
  { 0x017B, 0xAF, 0 },
  { 0x017C, 0xBF, 0 },
  { 0x02D8, 0xA2, 0 },
  { 0x02D9, 0xFF, 0 }
};

/* ----------------------------------------------------------------------- */

static ImplByteConvertData const aImplISO88593ByteCvtData =
{
    aImplISO88593ToUniTab,
    aImpl8090SameToUniTab,
    ISO88593UNI_START, ISO88593UNI_END,
    SAME8090UNI_START, SAME8090UNI_END,
    aImpl8090SameToCharTab,
    NULL,
    aImplISO88593ToCharTabEx,
    SAME8090CHAR_START, SAME8090CHAR_END,
    NOTABCHAR_START, NOTABCHAR_END,
    ISO88593TOCHARTABEX_COUNT
};

/* ----------------------------------------------------------------------- */

static ImplTextEncodingData const aImplISO88593TextEncodingData
    = { { &aImplISO88593ByteCvtData,
          ImplCharToUnicode,
          ImplUnicodeToChar,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL },
        1,
        1,
        1,
        0,
        "iso8859-3",
        "iso-8859-3",
        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
    /* SCRIPT_LATIN, pc code page 850 */

/* ======================================================================= */

/* ISO-8859-4 */
/* Latin4 (Estonian, Latvian, Lithuanian) */
/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme, 0x80-0x9F Control-Caracter wie in Unicode */
/* Convert-Tables: mappings/iso8859/8859-4.txt from 07/27/99 Version 1.0 (based on Unicode 3.0) */
/* Last-Changes from us: */

#define ISO88594UNI_START               0xA0
#define ISO88594UNI_END                 0xFF
static sal_uInt16 const aImplISO88594ToUniTab[ISO88594UNI_END - ISO88594UNI_START + 1] =
{
/*       0       1       2       3       4       5       6       7 */
/*       8       9       A       B       C       D       E       F */
    0x00A0, 0x0104, 0x0138, 0x0156, 0x00A4, 0x0128, 0x013B, 0x00A7, /* 0xA0 */
    0x00A8, 0x0160, 0x0112, 0x0122, 0x0166, 0x00AD, 0x017D, 0x00AF, /* 0xA0 */
    0x00B0, 0x0105, 0x02DB, 0x0157, 0x00B4, 0x0129, 0x013C, 0x02C7, /* 0xB0 */
    0x00B8, 0x0161, 0x0113, 0x0123, 0x0167, 0x014A, 0x017E, 0x014B, /* 0xB0 */
    0x0100, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x012E, /* 0xC0 */
    0x010C, 0x00C9, 0x0118, 0x00CB, 0x0116, 0x00CD, 0x00CE, 0x012A, /* 0xC0 */
    0x0110, 0x0145, 0x014C, 0x0136, 0x00D4, 0x00D5, 0x00D6, 0x00D7, /* 0xD0 */
    0x00D8, 0x0172, 0x00DA, 0x00DB, 0x00DC, 0x0168, 0x016A, 0x00DF, /* 0xD0 */
    0x0101, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x012F, /* 0xE0 */
    0x010D, 0x00E9, 0x0119, 0x00EB, 0x0117, 0x00ED, 0x00EE, 0x012B, /* 0xE0 */
    0x0111, 0x0146, 0x014D, 0x0137, 0x00F4, 0x00F5, 0x00F6, 0x00F7, /* 0xF0 */
    0x00F8, 0x0173, 0x00FA, 0x00FB, 0x00FC, 0x0169, 0x016B, 0x02D9  /* 0xF0 */
};

/* ----------------------------------------------------------------------- */

#define ISO88594TOCHARTABEX_COUNT       96
static ImplUniCharTabData const aImplISO88594ToCharTabEx[ISO88594TOCHARTABEX_COUNT] =
{
  { 0x00A0, 0xA0, 0 },
  { 0x00A4, 0xA4, 0 },
  { 0x00A7, 0xA7, 0 },
  { 0x00A8, 0xA8, 0 },
  { 0x00AD, 0xAD, 0 },
  { 0x00AF, 0xAF, 0 },
  { 0x00B0, 0xB0, 0 },
  { 0x00B4, 0xB4, 0 },
  { 0x00B8, 0xB8, 0 },
  { 0x00C1, 0xC1, 0 },
  { 0x00C2, 0xC2, 0 },
  { 0x00C3, 0xC3, 0 },
  { 0x00C4, 0xC4, 0 },
  { 0x00C5, 0xC5, 0 },
  { 0x00C6, 0xC6, 0 },
  { 0x00C9, 0xC9, 0 },
  { 0x00CB, 0xCB, 0 },
  { 0x00CD, 0xCD, 0 },
  { 0x00CE, 0xCE, 0 },
  { 0x00D4, 0xD4, 0 },
  { 0x00D5, 0xD5, 0 },
  { 0x00D6, 0xD6, 0 },
  { 0x00D7, 0xD7, 0 },
  { 0x00D8, 0xD8, 0 },
  { 0x00DA, 0xDA, 0 },
  { 0x00DB, 0xDB, 0 },
  { 0x00DC, 0xDC, 0 },
  { 0x00DF, 0xDF, 0 },
  { 0x00E1, 0xE1, 0 },
  { 0x00E2, 0xE2, 0 },
  { 0x00E3, 0xE3, 0 },
  { 0x00E4, 0xE4, 0 },
  { 0x00E5, 0xE5, 0 },
  { 0x00E6, 0xE6, 0 },
  { 0x00E9, 0xE9, 0 },
  { 0x00EB, 0xEB, 0 },
  { 0x00ED, 0xED, 0 },
  { 0x00EE, 0xEE, 0 },
  { 0x00F4, 0xF4, 0 },
  { 0x00F5, 0xF5, 0 },
  { 0x00F6, 0xF6, 0 },
  { 0x00F7, 0xF7, 0 },
  { 0x00F8, 0xF8, 0 },
  { 0x00FA, 0xFA, 0 },
  { 0x00FB, 0xFB, 0 },
  { 0x00FC, 0xFC, 0 },
  { 0x0100, 0xC0, 0 },
  { 0x0101, 0xE0, 0 },
  { 0x0104, 0xA1, 0 },
  { 0x0105, 0xB1, 0 },
  { 0x010C, 0xC8, 0 },
  { 0x010D, 0xE8, 0 },
  { 0x0110, 0xD0, 0 },
  { 0x0111, 0xF0, 0 },
  { 0x0112, 0xAA, 0 },
  { 0x0113, 0xBA, 0 },
  { 0x0116, 0xCC, 0 },
  { 0x0117, 0xEC, 0 },
  { 0x0118, 0xCA, 0 },
  { 0x0119, 0xEA, 0 },
  { 0x0122, 0xAB, 0 },
  { 0x0123, 0xBB, 0 },
  { 0x0128, 0xA5, 0 },
  { 0x0129, 0xB5, 0 },
  { 0x012A, 0xCF, 0 },
  { 0x012B, 0xEF, 0 },
  { 0x012E, 0xC7, 0 },
  { 0x012F, 0xE7, 0 },
  { 0x0136, 0xD3, 0 },
  { 0x0137, 0xF3, 0 },
  { 0x0138, 0xA2, 0 },
  { 0x013B, 0xA6, 0 },
  { 0x013C, 0xB6, 0 },
  { 0x0145, 0xD1, 0 },
  { 0x0146, 0xF1, 0 },
  { 0x014A, 0xBD, 0 },
  { 0x014B, 0xBF, 0 },
  { 0x014C, 0xD2, 0 },
  { 0x014D, 0xF2, 0 },
  { 0x0156, 0xA3, 0 },
  { 0x0157, 0xB3, 0 },
  { 0x0160, 0xA9, 0 },
  { 0x0161, 0xB9, 0 },
  { 0x0166, 0xAC, 0 },
  { 0x0167, 0xBC, 0 },
  { 0x0168, 0xDD, 0 },
  { 0x0169, 0xFD, 0 },
  { 0x016A, 0xDE, 0 },
  { 0x016B, 0xFE, 0 },
  { 0x0172, 0xD9, 0 },
  { 0x0173, 0xF9, 0 },
  { 0x017D, 0xAE, 0 },
  { 0x017E, 0xBE, 0 },
  { 0x02C7, 0xB7, 0 },
  { 0x02D9, 0xFF, 0 },
  { 0x02DB, 0xB2, 0 }
};

/* ----------------------------------------------------------------------- */

static ImplByteConvertData const aImplISO88594ByteCvtData =
{
    aImplISO88594ToUniTab,
    aImpl8090SameToUniTab,
    ISO88594UNI_START, ISO88594UNI_END,
    SAME8090UNI_START, SAME8090UNI_END,
    aImpl8090SameToCharTab,
    NULL,
    aImplISO88594ToCharTabEx,
    SAME8090CHAR_START, SAME8090CHAR_END,
    NOTABCHAR_START, NOTABCHAR_END,
    ISO88594TOCHARTABEX_COUNT
};

/* ----------------------------------------------------------------------- */

static ImplTextEncodingData const aImplISO88594TextEncodingData
    = { { &aImplISO88594ByteCvtData,
          ImplCharToUnicode,
          ImplUnicodeToChar,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL },
        1,
        1,
        1,
        186,
        "iso8859-4",
        "iso-8859-4",
        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
    /* SCRIPT_BALTIC, pc code page 775, mac encoding 29 (?) */

/* ======================================================================= */

/* ISO-8859-5 */
/* Unix Standard for Cyrillic */
/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme, 0x80-0x9F Control-Caracter wie in Unicode */
/* Convert-Tables: mappings/iso8859/8859-5.txt from 07/27/99 Version 1.0 (based on Unicode 3.0) */
/* Last-Changes from us: */

#define ISO88595UNI_START               0xA0
#define ISO88595UNI_END                 0xFF
static sal_uInt16 const aImplISO88595ToUniTab[ISO88595UNI_END - ISO88595UNI_START + 1] =
{
/*       0       1       2       3       4       5       6       7 */
/*       8       9       A       B       C       D       E       F */
    0x00A0, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407, /* 0xA0 */
    0x0408, 0x0409, 0x040A, 0x040B, 0x040C, 0x00AD, 0x040E, 0x040F, /* 0xA0 */
    0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, /* 0xB0 */
    0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, /* 0xB0 */
    0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, /* 0xC0 */
    0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, /* 0xC0 */
    0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, /* 0xD0 */
    0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, /* 0xD0 */
    0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, /* 0xE0 */
    0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F, /* 0xE0 */
    0x2116, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457, /* 0xF0 */
    0x0458, 0x0459, 0x045A, 0x045B, 0x045C, 0x00A7, 0x045E, 0x045F  /* 0xF0 */
};

/* ----------------------------------------------------------------------- */

#define ISO88595CHAR_START              0x0401
#define ISO88595CHAR_END                0x045F
static sal_uChar const aImplISO88595ToCharTab[ISO88595CHAR_END - ISO88595CHAR_START + 1] =
{
/*     0     1     2     3     4     5     6     7 */
/*     8     9     A     B     C     D     E     F */
          0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, /* 0x0400 */
    0xA8, 0xA9, 0xAA, 0xAB, 0xAC,    0, 0xAE, 0xAF, /* 0x0400 */
    0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, /* 0x0410 */
    0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF, /* 0x0410 */
    0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, /* 0x0420 */
    0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, /* 0x0420 */
    0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, /* 0x0430 */
    0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, /* 0x0430 */
    0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, /* 0x0440 */
    0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, /* 0x0440 */
       0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, /* 0x0450 */
    0xF8, 0xF9, 0xFA, 0xFB, 0xFC,    0, 0xFE, 0xFF, /* 0x0450 */
};

/* ----------------------------------------------------------------------- */

#define ISO88595TOCHARTABEX_COUNT       4
static ImplUniCharTabData const aImplISO88595ToCharTabEx[ISO88595TOCHARTABEX_COUNT] =
{
  { 0x00A0, 0xA0, 0 },
  { 0x00A7, 0xFD, 0 },
  { 0x00AD, 0xAD, 0 },
  { 0x2116, 0xF0, 0 }
};

/* ----------------------------------------------------------------------- */

static ImplByteConvertData const aImplISO88595ByteCvtData =
{
    aImplISO88595ToUniTab,
    aImpl8090SameToUniTab,
    ISO88595UNI_START, ISO88595UNI_END,
    SAME8090UNI_START, SAME8090UNI_END,
    aImplISO88595ToCharTab,
    aImpl8090SameToCharTab,
    aImplISO88595ToCharTabEx,
    ISO88595CHAR_START, ISO88595CHAR_END,
    SAME8090CHAR_START, SAME8090CHAR_END,
    ISO88595TOCHARTABEX_COUNT
};

/* ----------------------------------------------------------------------- */

static ImplTextEncodingData const aImplISO88595TextEncodingData
    = { { &aImplISO88595ByteCvtData,
          ImplCharToUnicode,
          ImplUnicodeToChar,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL },
        1,
        1,
        1,
        204,
        "iso8859-5",
        "iso-8859-5",
        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
    /* SCRIPT_CYRILLIC, pc code page 866 (855?), mac encoding 7 */

/* ======================================================================= */

/* ISO-8859-7 */
/* Unix Standard for Greek */
/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme, 0x80-0x9F Control-Caracter wie in Unicode */
/* Convert-Tables: mappings/iso8859/8859-7.txt from 07/27/99 Version 1.0 (based on Unicode 3.0) */
/* Last-Changes from us: */

#define ISO88597UNI_START               0xA0
#define ISO88597UNI_END                 0xFF
static sal_uInt16 const aImplISO88597ToUniTab[ISO88597UNI_END - ISO88597UNI_START + 1] =
{
/*       0       1       2       3       4       5       6       7 */
/*       8       9       A       B       C       D       E       F */
    0x00A0, 0x2018, 0x2019, 0x00A3,      0,      0, 0x00A6, 0x00A7, /* 0xA0 */
    0x00A8, 0x00A9,      0, 0x00AB, 0x00AC, 0x00AD,      0, 0x2015, /* 0xA0 */
    0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x0384, 0x0385, 0x0386, 0x00B7, /* 0xB0 */
    0x0388, 0x0389, 0x038A, 0x00BB, 0x038C, 0x00BD, 0x038E, 0x038F, /* 0xB0 */
    0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, /* 0xC0 */
    0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, /* 0xC0 */
    0x03A0, 0x03A1,      0, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, /* 0xD0 */
    0x03A8, 0x03A9, 0x03AA, 0x03AB, 0x03AC, 0x03AD, 0x03AE, 0x03AF, /* 0xD0 */
    0x03B0, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, /* 0xE0 */
    0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, /* 0xE0 */
    0x03C0, 0x03C1, 0x03C2, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7, /* 0xF0 */
    0x03C8, 0x03C9, 0x03CA, 0x03CB, 0x03CC, 0x03CD, 0x03CE,      0  /* 0xF0 */
};

/* ----------------------------------------------------------------------- */

#define ISO88597CHAR_START              0x0384
#define ISO88597CHAR_END                0x03CE
static sal_uChar const aImplISO88597ToCharTab[ISO88597CHAR_END - ISO88597CHAR_START + 1] =
{
/*     0     1     2     3     4     5     6     7 */
/*     8     9     A     B     C     D     E     F */
                            0xB4, 0xB5, 0xB6,    0, /* 0x0380 */
    0xB8, 0xB9, 0xBA,    0, 0xBC,    0, 0xBE, 0xBF, /* 0x0380 */
    0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, /* 0x0390 */
    0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, /* 0x0390 */
    0xD0, 0xD1,    0, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, /* 0x03A0 */
    0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, /* 0x03A0 */
    0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, /* 0x03B0 */
    0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, /* 0x03B0 */
    0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, /* 0x03C0 */
    0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE        /* 0x03C0 */
};

/* ----------------------------------------------------------------------- */

#define ISO88597TOCHARTABEX_COUNT       19
static ImplUniCharTabData const aImplISO88597ToCharTabEx[ISO88597TOCHARTABEX_COUNT] =
{
  { 0x00A0, 0xA0, 0 },
  { 0x00A3, 0xA3, 0 },
  { 0x00A6, 0xA6, 0 },
  { 0x00A7, 0xA7, 0 },
  { 0x00A8, 0xA8, 0 },
  { 0x00A9, 0xA9, 0 },
  { 0x00AB, 0xAB, 0 },
  { 0x00AC, 0xAC, 0 },
  { 0x00AD, 0xAD, 0 },
  { 0x00B0, 0xB0, 0 },
  { 0x00B1, 0xB1, 0 },
  { 0x00B2, 0xB2, 0 },
  { 0x00B3, 0xB3, 0 },
  { 0x00B7, 0xB7, 0 },
  { 0x00BB, 0xBB, 0 },
  { 0x00BD, 0xBD, 0 },
  { 0x2015, 0xAF, 0 },
  { 0x2018, 0xA1, 0 },
  { 0x2019, 0xA2, 0 }
};

/* ----------------------------------------------------------------------- */

static ImplByteConvertData const aImplISO88597ByteCvtData =
{
    aImplISO88597ToUniTab,
    aImpl8090SameToUniTab,
    ISO88597UNI_START, ISO88597UNI_END,
    SAME8090UNI_START, SAME8090UNI_END,
    aImplISO88597ToCharTab,
    aImpl8090SameToCharTab,
    aImplISO88597ToCharTabEx,
    ISO88597CHAR_START, ISO88597CHAR_END,
    SAME8090CHAR_START, SAME8090CHAR_END,
    ISO88597TOCHARTABEX_COUNT
};

/* ----------------------------------------------------------------------- */

static ImplTextEncodingData const aImplISO88597TextEncodingData
    = { { &aImplISO88597ByteCvtData,
          ImplCharToUnicode,
          ImplUnicodeToChar,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL },
        1,
        1,
        1,
        161,
        "iso8859-7",
        "iso-8859-7",
        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
    /* SCRIPT_GREEK, pc code page 869, mac encoding 6 */

/* ======================================================================= */

/* ISO-8859-9 */
/* Latin5 (Turkish) */
/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme, 0x80-0x9F Control-Caracter wie in Unicode */
/* Convert-Tables: mappings/iso8859/8859-9.txt from 07/27/99 Version 1.0 (based on Unicode 3.0) */
/* Last-Changes from us: */

#define ISO88599UNI_START               0xA0
#define ISO88599UNI_END                 0xFF
static sal_uInt16 const aImplISO88599ToUniTab[ISO88599UNI_END - ISO88599UNI_START + 1] =
{
/*       0       1       2       3       4       5       6       7 */
/*       8       9       A       B       C       D       E       F */
    0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, /* 0xA0 */
    0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, /* 0xA0 */
    0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, /* 0xB0 */
    0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, /* 0xB0 */
    0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, /* 0xC0 */
    0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, /* 0xC0 */
    0x011E, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, /* 0xD0 */
    0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x0130, 0x015E, 0x00DF, /* 0xD0 */
    0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, /* 0xE0 */
    0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, /* 0xE0 */
    0x011F, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, /* 0xF0 */
    0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x0131, 0x015F, 0x00FF  /* 0xF0 */
};

/* ----------------------------------------------------------------------- */

#define ISO88599CHAR_START              0x00A0
#define ISO88599CHAR_END                0x00FF
static sal_uChar const aImplISO88599ToCharTab[ISO88599CHAR_END - ISO88599CHAR_START + 1] =
{
/*     0     1     2     3     4     5     6     7 */
/*     8     9     A     B     C     D     E     F */
    0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, /* 0x00A0 */
    0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, /* 0x00A0 */
    0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, /* 0x00B0 */
    0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF, /* 0x00B0 */
    0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, /* 0x00C0 */
    0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, /* 0x00C0 */
       0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, /* 0x00D0 */
    0xD8, 0xD9, 0xDA, 0xDB, 0xDC,    0,    0, 0xDF, /* 0x00D0 */
    0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, /* 0x00E0 */
    0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, /* 0x00E0 */
       0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, /* 0x00F0 */
    0xF8, 0xF9, 0xFA, 0xFB, 0xFC,    0,    0, 0xFF  /* 0x00F0 */
};

/* ----------------------------------------------------------------------- */

#define ISO88599TOCHARTABEX_COUNT       6
static ImplUniCharTabData const aImplISO88599ToCharTabEx[ISO88599TOCHARTABEX_COUNT] =
{
  { 0x011E, 0xD0, 0 },
  { 0x011F, 0xF0, 0 },
  { 0x0130, 0xDD, 0 },
  { 0x0131, 0xFD, 0 },
  { 0x015E, 0xDE, 0 },
  { 0x015F, 0xFE, 0 }
};

/* ----------------------------------------------------------------------- */

static ImplByteConvertData const aImplISO88599ByteCvtData =
{
    aImplISO88599ToUniTab,
    aImpl8090SameToUniTab,
    ISO88599UNI_START, ISO88599UNI_END,
    SAME8090UNI_START, SAME8090UNI_END,
    aImplISO88599ToCharTab,
    aImpl8090SameToCharTab,
    aImplISO88599ToCharTabEx,
    ISO88599CHAR_START, ISO88599CHAR_END,
    SAME8090CHAR_START, SAME8090CHAR_END,
    ISO88599TOCHARTABEX_COUNT
};

/* ----------------------------------------------------------------------- */

static ImplTextEncodingData const aImplISO88599TextEncodingData
    = { { &aImplISO88599ByteCvtData,
          ImplCharToUnicode,
          ImplUnicodeToChar,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL },
        1,
        1,
        1,
        162,
        "iso8859-9",
        "iso-8859-9",
        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
    /* SCRIPT_TURKISH, pc code page 857, mac encoding 35 */

/* ======================================================================= */

/* ISO-8859-10 */
/* East European */
/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme, 0x80-0x9F Control-Caracter wie in Unicode */
/* Convert-Tables: mappings/iso8859/8859-10.txt from 07/27/99 Version 1.0 (based on Unicode 3.0) */
/* Last-Changes from us: */

#define ISO885910UNI_START              0xA0
#define ISO885910UNI_END                0xFF
static sal_uInt16 const aImplISO885910ToUniTab[ISO885910UNI_END - ISO885910UNI_START + 1] =
{
/*       0       1       2       3       4       5       6       7 */
/*       8       9       A       B       C       D       E       F */
    0x00A0, 0x0104, 0x0112, 0x0122, 0x012A, 0x0128, 0x0136, 0x00A7, /* 0xA0 */
    0x013B, 0x0110, 0x0160, 0x0166, 0x017D, 0x00AD, 0x016A, 0x014A, /* 0xA0 */
    0x00B0, 0x0105, 0x0113, 0x0123, 0x012B, 0x0129, 0x0137, 0x00B7, /* 0xB0 */
    0x013C, 0x0111, 0x0161, 0x0167, 0x017E, 0x2015, 0x016B, 0x014B, /* 0xB0 */
    0x0100, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x012E, /* 0xC0 */
    0x010C, 0x00C9, 0x0118, 0x00CB, 0x0116, 0x00CD, 0x00CE, 0x00CF, /* 0xC0 */
    0x00D0, 0x0145, 0x014C, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x0168, /* 0xD0 */
    0x00D8, 0x0172, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF, /* 0xD0 */
    0x0101, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x012F, /* 0xE0 */
    0x010D, 0x00E9, 0x0119, 0x00EB, 0x0117, 0x00ED, 0x00EE, 0x00EF, /* 0xE0 */
    0x00F0, 0x0146, 0x014D, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x0169, /* 0xF0 */
    0x00F8, 0x0173, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x0138  /* 0xF0 */
};

/* ----------------------------------------------------------------------- */

#define ISO885910CHAR_START             0x00C1
#define ISO885910CHAR_END               0x00FE
static sal_uChar const aImplISO885910ToCharTab[ISO885910CHAR_END - ISO885910CHAR_START + 1] =
{
/*     0     1     2     3     4     5     6     7 */
/*     8     9     A     B     C     D     E     F */
          0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6,    0, /* 0x00C0 */
       0, 0xC9,    0, 0xCB,    0, 0xCD, 0xCE, 0xCF, /* 0x00C0 */
    0xD0,    0,    0, 0xD3, 0xD4, 0xD5, 0xD6,    0, /* 0x00D0 */
    0xD8,    0, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, /* 0x00D0 */
       0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6,    0, /* 0x00E0 */
       0, 0xE9,    0, 0xEB,    0, 0xED, 0xEE, 0xEF, /* 0x00E0 */
    0xF0,    0,    0, 0xF3, 0xF4, 0xF5, 0xF6,    0, /* 0x00F0 */
    0xF8,    0, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE        /* 0x00F0 */
};

/* ----------------------------------------------------------------------- */

#define ISO885910TOCHARTABEX_COUNT      51
static ImplUniCharTabData const aImplISO885910ToCharTabEx[ISO885910TOCHARTABEX_COUNT] =
{
  { 0x00A0, 0xA0, 0 },
  { 0x00A7, 0xA7, 0 },
  { 0x00AD, 0xAD, 0 },
  { 0x00B0, 0xB0, 0 },
  { 0x00B7, 0xB7, 0 },
  { 0x0100, 0xC0, 0 },
  { 0x0101, 0xE0, 0 },
  { 0x0104, 0xA1, 0 },
  { 0x0105, 0xB1, 0 },
  { 0x010C, 0xC8, 0 },
  { 0x010D, 0xE8, 0 },
  { 0x0110, 0xA9, 0 },
  { 0x0111, 0xB9, 0 },
  { 0x0112, 0xA2, 0 },
  { 0x0113, 0xB2, 0 },
  { 0x0116, 0xCC, 0 },
  { 0x0117, 0xEC, 0 },
  { 0x0118, 0xCA, 0 },
  { 0x0119, 0xEA, 0 },
  { 0x0122, 0xA3, 0 },
  { 0x0123, 0xB3, 0 },
  { 0x0128, 0xA5, 0 },
  { 0x0129, 0xB5, 0 },
  { 0x012A, 0xA4, 0 },
  { 0x012B, 0xB4, 0 },
  { 0x012E, 0xC7, 0 },
  { 0x012F, 0xE7, 0 },
  { 0x0136, 0xA6, 0 },
  { 0x0137, 0xB6, 0 },
  { 0x0138, 0xFF, 0 },
  { 0x013B, 0xA8, 0 },
  { 0x013C, 0xB8, 0 },
  { 0x0145, 0xD1, 0 },
  { 0x0146, 0xF1, 0 },
  { 0x014A, 0xAF, 0 },
  { 0x014B, 0xBF, 0 },
  { 0x014C, 0xD2, 0 },
  { 0x014D, 0xF2, 0 },
  { 0x0160, 0xAA, 0 },
  { 0x0161, 0xBA, 0 },
  { 0x0166, 0xAB, 0 },
  { 0x0167, 0xBB, 0 },
  { 0x0168, 0xD7, 0 },
  { 0x0169, 0xF7, 0 },
  { 0x016A, 0xAE, 0 },
  { 0x016B, 0xBE, 0 },
  { 0x0172, 0xD9, 0 },
  { 0x0173, 0xF9, 0 },
  { 0x017D, 0xAC, 0 },
  { 0x017E, 0xBC, 0 },
  { 0x2015, 0xBD, 0 }
};

/* ----------------------------------------------------------------------- */

static ImplByteConvertData const aImplISO885910ByteCvtData =
{
    aImplISO885910ToUniTab,
    aImpl8090SameToUniTab,
    ISO885910UNI_START, ISO885910UNI_END,
    SAME8090UNI_START, SAME8090UNI_END,
    aImplISO885910ToCharTab,
    aImpl8090SameToCharTab,
    aImplISO885910ToCharTabEx,
    ISO885910CHAR_START, ISO885910CHAR_END,
    SAME8090CHAR_START, SAME8090CHAR_END,
    ISO885910TOCHARTABEX_COUNT
};

/* ----------------------------------------------------------------------- */

static ImplTextEncodingData const aImplISO885910TextEncodingData
    = { { &aImplISO885910ByteCvtData,
          ImplCharToUnicode,
          ImplUnicodeToChar,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL },
        1,
        1,
        1,
        238,
        "iso8859-10",
        "iso-8859-10",
        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
    /* SCRIPT_EASTEUROPE, pc code page 852, mac encoding 29 */

/* ======================================================================= */

/* ISO-8859-13 */
/* East European */
/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme, 0x80-0x9F Control-Caracter wie in Unicode */
/* Convert-Tables: mappings/iso8859/8859-13.txt from 07/27/99 Version 1.0 (based on Unicode 3.0) */
/* Last-Changes from us: */

#define ISO885913UNI_START              0xA0
#define ISO885913UNI_END                0xFF
static sal_uInt16 const aImplISO885913ToUniTab[ISO885913UNI_END - ISO885913UNI_START + 1] =
{
/*       0       1       2       3       4       5       6       7 */
/*       8       9       A       B       C       D       E       F */
    0x00A0, 0x201D, 0x00A2, 0x00A3, 0x00A4, 0x201E, 0x00A6, 0x00A7, /* 0xA0 */
    0x00D8, 0x00A9, 0x0156, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00C6, /* 0xA0 */
    0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x201C, 0x00B5, 0x00B6, 0x00B7, /* 0xB0 */
    0x00F8, 0x00B9, 0x0157, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00E6, /* 0xB0 */
    0x0104, 0x012E, 0x0100, 0x0106, 0x00C4, 0x00C5, 0x0118, 0x0112, /* 0xC0 */
    0x010C, 0x00C9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012A, 0x013B, /* 0xC0 */
    0x0160, 0x0143, 0x0145, 0x00D3, 0x014C, 0x00D5, 0x00D6, 0x00D7, /* 0xD0 */
    0x0172, 0x0141, 0x015A, 0x016A, 0x00DC, 0x017B, 0x017D, 0x00DF, /* 0xD0 */
    0x0105, 0x012F, 0x0101, 0x0107, 0x00E4, 0x00E5, 0x0119, 0x0113, /* 0xE0 */
    0x010D, 0x00E9, 0x017A, 0x0117, 0x0123, 0x0137, 0x012B, 0x013C, /* 0xE0 */
    0x0161, 0x0144, 0x0146, 0x00F3, 0x014D, 0x00F5, 0x00F6, 0x00F7, /* 0xF0 */
    0x0173, 0x0142, 0x015B, 0x016B, 0x00FC, 0x017C, 0x017E, 0x2019  /* 0xF0 */
};

/* ----------------------------------------------------------------------- */

#define ISO885913TOCHARTABEX_COUNT      96
static ImplUniCharTabData const aImplISO885913ToCharTabEx[ISO885913TOCHARTABEX_COUNT] =
{
  { 0x00A0, 0xA0, 0 },
  { 0x00A2, 0xA2, 0 },
  { 0x00A3, 0xA3, 0 },
  { 0x00A4, 0xA4, 0 },
  { 0x00A6, 0xA6, 0 },
  { 0x00A7, 0xA7, 0 },
  { 0x00A9, 0xA9, 0 },
  { 0x00AB, 0xAB, 0 },
  { 0x00AC, 0xAC, 0 },
  { 0x00AD, 0xAD, 0 },
  { 0x00AE, 0xAE, 0 },
  { 0x00B0, 0xB0, 0 },
  { 0x00B1, 0xB1, 0 },
  { 0x00B2, 0xB2, 0 },
  { 0x00B3, 0xB3, 0 },
  { 0x00B5, 0xB5, 0 },
  { 0x00B6, 0xB6, 0 },
  { 0x00B7, 0xB7, 0 },
  { 0x00B9, 0xB9, 0 },
  { 0x00BB, 0xBB, 0 },
  { 0x00BC, 0xBC, 0 },
  { 0x00BD, 0xBD, 0 },
  { 0x00BE, 0xBE, 0 },
  { 0x00C4, 0xC4, 0 },
  { 0x00C5, 0xC5, 0 },
  { 0x00C6, 0xAF, 0 },
  { 0x00C9, 0xC9, 0 },
  { 0x00D3, 0xD3, 0 },
  { 0x00D5, 0xD5, 0 },
  { 0x00D6, 0xD6, 0 },
  { 0x00D7, 0xD7, 0 },
  { 0x00D8, 0xA8, 0 },
  { 0x00DC, 0xDC, 0 },
  { 0x00DF, 0xDF, 0 },
  { 0x00E4, 0xE4, 0 },
  { 0x00E5, 0xE5, 0 },
  { 0x00E6, 0xBF, 0 },
  { 0x00E9, 0xE9, 0 },
  { 0x00F3, 0xF3, 0 },
  { 0x00F5, 0xF5, 0 },
  { 0x00F6, 0xF6, 0 },
  { 0x00F7, 0xF7, 0 },
  { 0x00F8, 0xB8, 0 },
  { 0x00FC, 0xFC, 0 },
  { 0x0100, 0xC2, 0 },
  { 0x0101, 0xE2, 0 },
  { 0x0104, 0xC0, 0 },
  { 0x0105, 0xE0, 0 },
  { 0x0106, 0xC3, 0 },
  { 0x0107, 0xE3, 0 },
  { 0x010C, 0xC8, 0 },
  { 0x010D, 0xE8, 0 },
  { 0x0112, 0xC7, 0 },
  { 0x0113, 0xE7, 0 },
  { 0x0116, 0xCB, 0 },
  { 0x0117, 0xEB, 0 },
  { 0x0118, 0xC6, 0 },
  { 0x0119, 0xE6, 0 },
  { 0x0122, 0xCC, 0 },
  { 0x0123, 0xEC, 0 },
  { 0x012A, 0xCE, 0 },
  { 0x012B, 0xEE, 0 },
  { 0x012E, 0xC1, 0 },
  { 0x012F, 0xE1, 0 },
  { 0x0136, 0xCD, 0 },
  { 0x0137, 0xED, 0 },
  { 0x013B, 0xCF, 0 },
  { 0x013C, 0xEF, 0 },
  { 0x0141, 0xD9, 0 },
  { 0x0142, 0xF9, 0 },
  { 0x0143, 0xD1, 0 },
  { 0x0144, 0xF1, 0 },
  { 0x0145, 0xD2, 0 },
  { 0x0146, 0xF2, 0 },
  { 0x014C, 0xD4, 0 },
  { 0x014D, 0xF4, 0 },
  { 0x0156, 0xAA, 0 },
  { 0x0157, 0xBA, 0 },
  { 0x015A, 0xDA, 0 },
  { 0x015B, 0xFA, 0 },
  { 0x0160, 0xD0, 0 },
  { 0x0161, 0xF0, 0 },
  { 0x016A, 0xDB, 0 },
  { 0x016B, 0xFB, 0 },
  { 0x0172, 0xD8, 0 },
  { 0x0173, 0xF8, 0 },
  { 0x0179, 0xCA, 0 },
  { 0x017A, 0xEA, 0 },
  { 0x017B, 0xDD, 0 },
  { 0x017C, 0xFD, 0 },
  { 0x017D, 0xDE, 0 },
  { 0x017E, 0xFE, 0 },
  { 0x2019, 0xFF, 0 },
  { 0x201C, 0xB4, 0 },
  { 0x201D, 0xA1, 0 },
  { 0x201E, 0xA5, 0 }
};

/* ----------------------------------------------------------------------- */

static ImplByteConvertData const aImplISO885913ByteCvtData =
{
    aImplISO885913ToUniTab,
    aImpl8090SameToUniTab,
    ISO885913UNI_START, ISO885913UNI_END,
    SAME8090UNI_START, SAME8090UNI_END,
    aImpl8090SameToCharTab,
    NULL,
    aImplISO885913ToCharTabEx,
    SAME8090CHAR_START, SAME8090CHAR_END,
    NOTABCHAR_START, NOTABCHAR_END,
    ISO885913TOCHARTABEX_COUNT
};

/* ----------------------------------------------------------------------- */

static ImplTextEncodingData const aImplISO885913TextEncodingData
    = { { &aImplISO885913ByteCvtData,
          ImplCharToUnicode,
          ImplUnicodeToChar,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL },
        1,
        1,
        1,
        238,
        "iso8859-13",
        "iso-8859-13",
        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
    /* SCRIPT_EASTEUROPE, pc code page 852, mac encoding 29 */

/* ======================================================================= */

/* APPLE-CentEuro */
/* Apple CharSet for Eastern Europa (Polish, Czech, Slovak, Hungarian, Estonian, Latvian, Lithuanian) */
/* 1-Byte, 0x00-0x7F ASCII, jedoch eigentich Sonderzeichen zwischen 0x00-0x1F */
/* die wir aber nicht beruecksichtigen */
/* Convert-Tables: mappings/vendors/apple/centeuro.txt from 02/05/98 */
/* Last-Changes from us: */

#define APPLECENTEUROUNI_START          0x80
#define APPLECENTEUROUNI_END            0xFF
static sal_uInt16 const aImplAPPLECENTEUROToUniTab[APPLECENTEUROUNI_END - APPLECENTEUROUNI_START + 1] =
{
/*       0       1       2       3       4       5       6       7 */
/*       8       9       A       B       C       D       E       F */
    0x00C4, 0x0100, 0x0101, 0x00C9, 0x0104, 0x00D6, 0x00DC, 0x00E1, /* 0x80 */
    0x0105, 0x010C, 0x00E4, 0x010D, 0x0106, 0x0107, 0x00E9, 0x0179, /* 0x80 */
    0x017A, 0x010E, 0x00ED, 0x010F, 0x0112, 0x0113, 0x0116, 0x00F3, /* 0x90 */
    0x0117, 0x00F4, 0x00F6, 0x00F5, 0x00FA, 0x011A, 0x011B, 0x00FC, /* 0x90 */
    0x2020, 0x00B0, 0x0118, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x00DF, /* 0xA0 */
    0x00AE, 0x00A9, 0x2122, 0x0119, 0x00A8, 0x2260, 0x0123, 0x012E, /* 0xA0 */
    0x012F, 0x012A, 0x2264, 0x2265, 0x012B, 0x0136, 0x2202, 0x2211, /* 0xB0 */
    0x0142, 0x013B, 0x013C, 0x013D, 0x013E, 0x0139, 0x013A, 0x0145, /* 0xB0 */
    0x0146, 0x0143, 0x00AC, 0x221A, 0x0144, 0x0147, 0x2206, 0x00AB, /* 0xC0 */
    0x00BB, 0x2026, 0x00A0, 0x0148, 0x0150, 0x00D5, 0x0151, 0x014C, /* 0xC0 */
    0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x25CA, /* 0xD0 */
    0x014D, 0x0154, 0x0155, 0x0158, 0x2039, 0x203A, 0x0159, 0x0156, /* 0xD0 */
    0x0157, 0x0160, 0x201A, 0x201E, 0x0161, 0x015A, 0x015B, 0x00C1, /* 0xE0 */
    0x0164, 0x0165, 0x00CD, 0x017D, 0x017E, 0x016A, 0x00D3, 0x00D4, /* 0xE0 */
    0x016B, 0x016E, 0x00DA, 0x016F, 0x0170, 0x0171, 0x0172, 0x0173, /* 0xF0 */
    0x00DD, 0x00FD, 0x0137, 0x017B, 0x0141, 0x017C, 0x0122, 0x02C7  /* 0xF0 */
};

/* ----------------------------------------------------------------------- */

#define APPLECENTEUROTOCHARTABEX_COUNT  128
static ImplUniCharTabData const aImplAPPLECENTEUROToCharTabEx[APPLECENTEUROTOCHARTABEX_COUNT] =
{
  { 0x00A0, 0xCA, 0 },
  { 0x00A3, 0xA3, 0 },
  { 0x00A7, 0xA4, 0 },
  { 0x00A8, 0xAC, 0 },
  { 0x00A9, 0xA9, 0 },
  { 0x00AB, 0xC7, 0 },
  { 0x00AC, 0xC2, 0 },
  { 0x00AE, 0xA8, 0 },
  { 0x00B0, 0xA1, 0 },
  { 0x00B6, 0xA6, 0 },
  { 0x00BB, 0xC8, 0 },
  { 0x00C1, 0xE7, 0 },
  { 0x00C4, 0x80, 0 },
  { 0x00C9, 0x83, 0 },
  { 0x00CD, 0xEA, 0 },
  { 0x00D3, 0xEE, 0 },
  { 0x00D4, 0xEF, 0 },
  { 0x00D5, 0xCD, 0 },
  { 0x00D6, 0x85, 0 },
  { 0x00DA, 0xF2, 0 },
  { 0x00DC, 0x86, 0 },
  { 0x00DD, 0xF8, 0 },
  { 0x00DF, 0xA7, 0 },
  { 0x00E1, 0x87, 0 },
  { 0x00E4, 0x8A, 0 },
  { 0x00E9, 0x8E, 0 },
  { 0x00ED, 0x92, 0 },
  { 0x00F3, 0x97, 0 },
  { 0x00F4, 0x99, 0 },
  { 0x00F5, 0x9B, 0 },
  { 0x00F6, 0x9A, 0 },
  { 0x00F7, 0xD6, 0 },
  { 0x00FA, 0x9C, 0 },
  { 0x00FC, 0x9F, 0 },
  { 0x00FD, 0xF9, 0 },
  { 0x0100, 0x81, 0 },
  { 0x0101, 0x82, 0 },
  { 0x0104, 0x84, 0 },
  { 0x0105, 0x88, 0 },
  { 0x0106, 0x8C, 0 },
  { 0x0107, 0x8D, 0 },
  { 0x010C, 0x89, 0 },
  { 0x010D, 0x8B, 0 },
  { 0x010E, 0x91, 0 },
  { 0x010F, 0x93, 0 },
  { 0x0112, 0x94, 0 },
  { 0x0113, 0x95, 0 },
  { 0x0116, 0x96, 0 },
  { 0x0117, 0x98, 0 },
  { 0x0118, 0xA2, 0 },
  { 0x0119, 0xAB, 0 },
  { 0x011A, 0x9D, 0 },
  { 0x011B, 0x9E, 0 },
  { 0x0122, 0xFE, 0 },
  { 0x0123, 0xAE, 0 },
  { 0x012A, 0xB1, 0 },
  { 0x012B, 0xB4, 0 },
  { 0x012E, 0xAF, 0 },
  { 0x012F, 0xB0, 0 },
  { 0x0136, 0xB5, 0 },
  { 0x0137, 0xFA, 0 },
  { 0x0139, 0xBD, 0 },
  { 0x013A, 0xBE, 0 },
  { 0x013B, 0xB9, 0 },
  { 0x013C, 0xBA, 0 },
  { 0x013D, 0xBB, 0 },
  { 0x013E, 0xBC, 0 },
  { 0x0141, 0xFC, 0 },
  { 0x0142, 0xB8, 0 },
  { 0x0143, 0xC1, 0 },
  { 0x0144, 0xC4, 0 },
  { 0x0145, 0xBF, 0 },
  { 0x0146, 0xC0, 0 },
  { 0x0147, 0xC5, 0 },
  { 0x0148, 0xCB, 0 },
  { 0x014C, 0xCF, 0 },
  { 0x014D, 0xD8, 0 },
  { 0x0150, 0xCC, 0 },
  { 0x0151, 0xCE, 0 },
  { 0x0154, 0xD9, 0 },
  { 0x0155, 0xDA, 0 },
  { 0x0156, 0xDF, 0 },
  { 0x0157, 0xE0, 0 },
  { 0x0158, 0xDB, 0 },
  { 0x0159, 0xDE, 0 },
  { 0x015A, 0xE5, 0 },
  { 0x015B, 0xE6, 0 },
  { 0x0160, 0xE1, 0 },
  { 0x0161, 0xE4, 0 },
  { 0x0164, 0xE8, 0 },
  { 0x0165, 0xE9, 0 },
  { 0x016A, 0xED, 0 },
  { 0x016B, 0xF0, 0 },
  { 0x016E, 0xF1, 0 },
  { 0x016F, 0xF3, 0 },
  { 0x0170, 0xF4, 0 },
  { 0x0171, 0xF5, 0 },
  { 0x0172, 0xF6, 0 },
  { 0x0173, 0xF7, 0 },
  { 0x0179, 0x8F, 0 },
  { 0x017A, 0x90, 0 },
  { 0x017B, 0xFB, 0 },
  { 0x017C, 0xFD, 0 },
  { 0x017D, 0xEB, 0 },
  { 0x017E, 0xEC, 0 },
  { 0x02C7, 0xFF, 0 },
  { 0x2013, 0xD0, 0 },
  { 0x2014, 0xD1, 0 },
  { 0x2018, 0xD4, 0 },
  { 0x2019, 0xD5, 0 },
  { 0x201A, 0xE2, 0 },
  { 0x201C, 0xD2, 0 },
  { 0x201D, 0xD3, 0 },
  { 0x201E, 0xE3, 0 },
  { 0x2020, 0xA0, 0 },
  { 0x2022, 0xA5, 0 },
  { 0x2026, 0xC9, 0 },
  { 0x2039, 0xDC, 0 },
  { 0x203A, 0xDD, 0 },
  { 0x2122, 0xAA, 0 },
  { 0x2202, 0xB6, 0 },
  { 0x2206, 0xC6, 0 },
  { 0x2211, 0xB7, 0 },
  { 0x221A, 0xC3, 0 },
  { 0x2260, 0xAD, 0 },
  { 0x2264, 0xB2, 0 },
  { 0x2265, 0xB3, 0 },
  { 0x25CA, 0xD7, 0 }
};

/* ----------------------------------------------------------------------- */

static ImplByteConvertData const aImplAPPLECENTEUROByteCvtData =
{
    aImplAPPLECENTEUROToUniTab,
    NULL,
    APPLECENTEUROUNI_START, APPLECENTEUROUNI_END,
    NOTABUNI_START, NOTABUNI_END,
    NULL,
    NULL,
    aImplAPPLECENTEUROToCharTabEx,
    NOTABCHAR_START, NOTABCHAR_END,
    NOTABCHAR_START, NOTABCHAR_END,
    APPLECENTEUROTOCHARTABEX_COUNT
};

/* ----------------------------------------------------------------------- */

static ImplTextEncodingData const aImplAPPLECENTEUROTextEncodingData
    = { { &aImplAPPLECENTEUROByteCvtData,
          ImplCharToUnicode,
          ImplUnicodeToChar,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL },
        1,
        1,
        1,
        238,
        "iso8859-2",
        "iso-8859-2",
        RTL_TEXTENCODING_INFO_ASCII };
    /* MAC, SCRIPT_EASTEUROPE, pc code page 852, mac encoding 29 */

/* ======================================================================= */

/* APPLE-Croatian */
/* Standard Apple CharSet for Croatian */
/* 1-Byte, 0x00-0x7F ASCII, jedoch eigentich Sonderzeichen zwischen 0x00-0x1F */
/* die wir aber nicht beruecksichtigen */
/* Convert-Tables: mappings/vendors/apple/croatien.txt from 02/05/98 */
/* Last-Changes from us: */

#define APPLECROATIANUNI_START          0x80
#define APPLECROATIANUNI_END            0xFF
static sal_uInt16 const aImplAPPLECROATIANToUniTab[APPLECROATIANUNI_END - APPLECROATIANUNI_START + 1] =
{
/*       0       1       2       3       4       5       6       7 */
/*       8       9       A       B       C       D       E       F */
    0x00C4, 0x00C5, 0x00C7, 0x00C9, 0x00D1, 0x00D6, 0x00DC, 0x00E1, /* 0x80 */
    0x00E0, 0x00E2, 0x00E4, 0x00E3, 0x00E5, 0x00E7, 0x00E9, 0x00E8, /* 0x80 */
    0x00EA, 0x00EB, 0x00ED, 0x00EC, 0x00EE, 0x00EF, 0x00F1, 0x00F3, /* 0x90 */
    0x00F2, 0x00F4, 0x00F6, 0x00F5, 0x00FA, 0x00F9, 0x00FB, 0x00FC, /* 0x90 */
    0x2020, 0x00B0, 0x00A2, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x00DF, /* 0xA0 */
    0x00AE, 0x0160, 0x2122, 0x00B4, 0x00A8, 0x2260, 0x017D, 0x00D8, /* 0xA0 */
    0x221E, 0x00B1, 0x2264, 0x2265, 0x2206, 0x00B5, 0x2202, 0x2211, /* 0xB0 */
    0x220F, 0x0161, 0x222B, 0x00AA, 0x00BA, 0x03A9, 0x017E, 0x00F8, /* 0xB0 */
    0x00BF, 0x00A1, 0x00AC, 0x221A, 0x0192, 0x2248, 0x0106, 0x00AB, /* 0xC0 */
    0x010C, 0x2026, 0x00A0, 0x00C0, 0x00C3, 0x00D5, 0x0152, 0x0153, /* 0xC0 */
    0x0110, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x25CA, /* 0xD0 */
    0xF8FF, 0x00A9, 0x2044, 0x00A4, 0x2039, 0x203A, 0x00C6, 0x00BB, /* 0xD0 */
    0x2013, 0x00B7, 0x201A, 0x201E, 0x2030, 0x00C2, 0x0107, 0x00C1, /* 0xE0 */
    0x010D, 0x00C8, 0x00CD, 0x00CE, 0x00CF, 0x00CC, 0x00D3, 0x00D4, /* 0xE0 */
    0x0111, 0x00D2, 0x00DA, 0x00DB, 0x00D9, 0x0131, 0x02C6, 0x02DC, /* 0xF0 */
    0x00AF, 0x03C0, 0x00CB, 0x02DA, 0x00B8, 0x00CA, 0x00E6, 0x02C7  /* 0xF0 */
};

/* ----------------------------------------------------------------------- */

#define APPLECROATIANCHAR_START         0x00A0
#define APPLECROATIANCHAR_END           0x00FC
static sal_uChar const aImplAPPLECROATIANToCharTab[APPLECROATIANCHAR_END - APPLECROATIANCHAR_START + 1] =
{
/*     0     1     2     3     4     5     6     7 */
/*     8     9     A     B     C     D     E     F */
    0xCA, 0xC1, 0xA2, 0xA3, 0xDB,    0,    0, 0xA4, /* 0x00A0 */
    0xAC, 0xD9, 0xBB, 0xC7, 0xC2,    0, 0xA8, 0xF8, /* 0x00A0 */
    0xA1, 0xB1,    0,    0, 0xAB, 0xB5, 0xA6, 0xE1, /* 0x00B0 */
    0xFC,    0, 0xBC, 0xDF,    0,    0,    0, 0xC0, /* 0x00B0 */
    0xCB, 0xE7, 0xE5, 0xCC, 0x80, 0x81, 0xDE, 0x82, /* 0x00C0 */
    0xE9, 0x83, 0xFD, 0xFA, 0xED, 0xEA, 0xEB, 0xEC, /* 0x00C0 */
       0, 0x84, 0xF1, 0xEE, 0xEF, 0xCD, 0x85,    0, /* 0x00D0 */
    0xAF, 0xF4, 0xF2, 0xF3, 0x86,    0,    0, 0xA7, /* 0x00D0 */
    0x88, 0x87, 0x89, 0x8B, 0x8A, 0x8C, 0xFE, 0x8D, /* 0x00E0 */
    0x8F, 0x8E, 0x90, 0x91, 0x93, 0x92, 0x94, 0x95, /* 0x00E0 */
       0, 0x96, 0x98, 0x97, 0x99, 0x9B, 0x9A, 0xD6, /* 0x00F0 */
    0xBF, 0x9D, 0x9C, 0x9E, 0x9F                    /* 0x00F0 */
};

/* ----------------------------------------------------------------------- */

#define APPLECROATIANTOCHARTABEX_COUNT  49
static ImplUniCharTabData const aImplAPPLECROATIANToCharTabEx[APPLECROATIANTOCHARTABEX_COUNT] =
{
  { 0x0106, 0xC6, 0 },
  { 0x0107, 0xE6, 0 },
  { 0x010C, 0xC8, 0 },
  { 0x010D, 0xE8, 0 },
  { 0x0110, 0xD0, 0 },
  { 0x0111, 0xF0, 0 },
  { 0x0131, 0xF5, 0 },
  { 0x0152, 0xCE, 0 },
  { 0x0153, 0xCF, 0 },
  { 0x0160, 0xA9, 0 },
  { 0x0161, 0xB9, 0 },
  { 0x017D, 0xAE, 0 },
  { 0x017E, 0xBE, 0 },
  { 0x0192, 0xC4, 0 },
  { 0x02C6, 0xF6, 0 },
  { 0x02C7, 0xFF, 0 },
  { 0x02DA, 0xFB, 0 },
  { 0x02DC, 0xF7, 0 },
  { 0x03A9, 0xBD, 0 },
  { 0x03C0, 0xF9, 0 },
  { 0x2013, 0xE0, 0 },
  { 0x2014, 0xD1, 0 },
  { 0x2018, 0xD4, 0 },
  { 0x2019, 0xD5, 0 },
  { 0x201A, 0xE2, 0 },
  { 0x201C, 0xD2, 0 },
  { 0x201D, 0xD3, 0 },
  { 0x201E, 0xE3, 0 },
  { 0x2020, 0xA0, 0 },
  { 0x2022, 0xA5, 0 },
  { 0x2026, 0xC9, 0 },
  { 0x2030, 0xE4, 0 },
  { 0x2039, 0xDC, 0 },
  { 0x203A, 0xDD, 0 },
  { 0x2044, 0xDA, 0 },
  { 0x2122, 0xAA, 0 },
  { 0x2202, 0xB6, 0 },
  { 0x2206, 0xB4, 0 },
  { 0x220F, 0xB8, 0 },
  { 0x2211, 0xB7, 0 },
  { 0x221A, 0xC3, 0 },
  { 0x221E, 0xB0, 0 },
  { 0x222B, 0xBA, 0 },
  { 0x2248, 0xC5, 0 },
  { 0x2260, 0xAD, 0 },
  { 0x2264, 0xB2, 0 },
  { 0x2265, 0xB3, 0 },
  { 0x25CA, 0xD7, 0 },
  { 0xF8FF, 0xD8, 0 }
};

/* ----------------------------------------------------------------------- */

static ImplByteConvertData const aImplAPPLECROATIANByteCvtData =
{
    aImplAPPLECROATIANToUniTab,
    NULL,
    APPLECROATIANUNI_START, APPLECROATIANUNI_END,
    NOTABUNI_START, NOTABUNI_END,
    aImplAPPLECROATIANToCharTab,
    NULL,
    aImplAPPLECROATIANToCharTabEx,
    APPLECROATIANCHAR_START, APPLECROATIANCHAR_END,
    NOTABCHAR_START, NOTABCHAR_END,
    APPLECROATIANTOCHARTABEX_COUNT
};

/* ----------------------------------------------------------------------- */

static ImplTextEncodingData const aImplAPPLECROATIANTextEncodingData
    = { { &aImplAPPLECROATIANByteCvtData,
          ImplCharToUnicode,
          ImplUnicodeToChar,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL },
        1,
        1,
        1,
        238,
        "iso8859-2",
        "iso-8859-2",
        RTL_TEXTENCODING_INFO_ASCII };
    /* MAC, SCRIPT_EASTEUROPE, pc code page 852, mac encoding 36 */

/* ======================================================================= */

/* APPLE-Cyrillic */
/* Apple CharSet for Cyrillic */
/* 1-Byte, 0x00-0x7F ASCII, jedoch eigentich Sonderzeichen zwischen 0x00-0x1F */
/* die wir aber nicht beruecksichtigen */
/* Convert-Tables: mappings/vendors/apple/cyrillic.txt from 02/15/98 */
/* Last-Changes from us: */

#define APPLECYRILLICUNI_START          0x80
#define APPLECYRILLICUNI_END            0xFF
static sal_uInt16 const aImplAPPLECYRILLICToUniTab[APPLECYRILLICUNI_END - APPLECYRILLICUNI_START + 1] =
{
/*       0       1       2       3       4       5       6       7 */
/*       8       9       A       B       C       D       E       F */
    0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, /* 0x80 */
    0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, /* 0x80 */
    0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, /* 0x90 */
    0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, /* 0x90 */
    0x2020, 0x00B0, 0x00A2, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x0406, /* 0xA0 */
    0x00AE, 0x00A9, 0x2122, 0x0402, 0x0452, 0x2260, 0x0403, 0x0453, /* 0xA0 */
    0x221E, 0x00B1, 0x2264, 0x2265, 0x0456, 0x00B5, 0x2202, 0x0408, /* 0xB0 */
    0x0404, 0x0454, 0x0407, 0x0457, 0x0409, 0x0459, 0x040A, 0x045A, /* 0xB0 */
    0x0458, 0x0405, 0x00AC, 0x221A, 0x0192, 0x2248, 0x2206, 0x00AB, /* 0xC0 */
    0x00BB, 0x2026, 0x00A0, 0x040B, 0x045B, 0x040C, 0x045C, 0x0455, /* 0xC0 */
    0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x201E, /* 0xD0 */
    0x040E, 0x045E, 0x040F, 0x045F, 0x2116, 0x0401, 0x0451, 0x044F, /* 0xD0 */
    0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, /* 0xE0 */
    0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, /* 0xE0 */
    0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, /* 0xF0 */
    0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x00A4  /* 0xF0 */
};

/* ----------------------------------------------------------------------- */

#define APPLECYRILLICCHAR_START         0x0401
#define APPLECYRILLICCHAR_END           0x045F
static sal_uChar const aImplAPPLECYRILLICToCharTab[APPLECYRILLICCHAR_END - APPLECYRILLICCHAR_START + 1] =
{
/*     0     1     2     3     4     5     6     7 */
/*     8     9     A     B     C     D     E     F */
          0xDD, 0xAB, 0xAE, 0xB8, 0xC1, 0xA7, 0xBA, /* 0x0400 */
    0xB7, 0xBC, 0xBE, 0xCB, 0xCD,    0, 0xD8, 0xDA, /* 0x0400 */
    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x0410 */
    0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, /* 0x0410 */
    0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, /* 0x0420 */
    0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F, /* 0x0420 */
    0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, /* 0x0430 */
    0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, /* 0x0430 */
    0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, /* 0x0440 */
    0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xDF, /* 0x0440 */
       0, 0xDE, 0xAC, 0xAF, 0xB9, 0xCF, 0xB4, 0xBB, /* 0x0450 */
    0xC0, 0xBD, 0xBF, 0xCC, 0xCE,    0, 0xD9, 0xDB, /* 0x0450 */
};

/* ----------------------------------------------------------------------- */

#define APPLECYRILLICTOCHARTABEX_COUNT  36
static ImplUniCharTabData const aImplAPPLECYRILLICToCharTabEx[APPLECYRILLICTOCHARTABEX_COUNT] =
{
  { 0x00A0, 0xCA, 0 },
  { 0x00A2, 0xA2, 0 },
  { 0x00A3, 0xA3, 0 },
  { 0x00A4, 0xFF, 0 },
  { 0x00A7, 0xA4, 0 },
  { 0x00A9, 0xA9, 0 },
  { 0x00AB, 0xC7, 0 },
  { 0x00AC, 0xC2, 0 },
  { 0x00AE, 0xA8, 0 },
  { 0x00B0, 0xA1, 0 },
  { 0x00B1, 0xB1, 0 },
  { 0x00B5, 0xB5, 0 },
  { 0x00B6, 0xA6, 0 },
  { 0x00BB, 0xC8, 0 },
  { 0x00F7, 0xD6, 0 },
  { 0x0192, 0xC4, 0 },
  { 0x2013, 0xD0, 0 },
  { 0x2014, 0xD1, 0 },
  { 0x2018, 0xD4, 0 },
  { 0x2019, 0xD5, 0 },
  { 0x201C, 0xD2, 0 },
  { 0x201D, 0xD3, 0 },
  { 0x201E, 0xD7, 0 },
  { 0x2020, 0xA0, 0 },
  { 0x2022, 0xA5, 0 },
  { 0x2026, 0xC9, 0 },
  { 0x2116, 0xDC, 0 },
  { 0x2122, 0xAA, 0 },
  { 0x2202, 0xB6, 0 },
  { 0x2206, 0xC6, 0 },
  { 0x221A, 0xC3, 0 },
  { 0x221E, 0xB0, 0 },
  { 0x2248, 0xC5, 0 },
  { 0x2260, 0xAD, 0 },
  { 0x2264, 0xB2, 0 },
  { 0x2265, 0xB3, 0 }
};

/* ----------------------------------------------------------------------- */

static ImplByteConvertData const aImplAPPLECYRILLICByteCvtData =
{
    aImplAPPLECYRILLICToUniTab,
    NULL,
    APPLECYRILLICUNI_START, APPLECYRILLICUNI_END,
    NOTABUNI_START, NOTABUNI_END,
    aImplAPPLECYRILLICToCharTab,
    NULL,
    aImplAPPLECYRILLICToCharTabEx,
    APPLECYRILLICCHAR_START, APPLECYRILLICCHAR_END,
    NOTABCHAR_START, NOTABCHAR_END,
    APPLECYRILLICTOCHARTABEX_COUNT
};

/* ----------------------------------------------------------------------- */

static ImplTextEncodingData const aImplAPPLECYRILLICTextEncodingData
    = { { &aImplAPPLECYRILLICByteCvtData,
          ImplCharToUnicode,
          ImplUnicodeToChar,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL },
        1,
        1,
        1,
        204,
        "iso8859-5",
        "iso-8859-5",
        RTL_TEXTENCODING_INFO_ASCII };
    /* MAC, SCRIPT_CYRILLIC, pc code page 866 (855?), mac encoding 7 */

/* ======================================================================= */

/* APPLE-Greek */
/* Apple CharSet for Greek */
/* 1-Byte, 0x00-0x7F ASCII, jedoch eigentich Sonderzeichen zwischen 0x00-0x1F */
/* die wir aber nicht beruecksichtigen */
/* Convert-Tables: mappings/vendors/apple/roman.txt from 08/18/98 */
/* Last-Changes from us: */

#define APPLEGREEKUNI_START             0x80
#define APPLEGREEKUNI_END               0xFF
static sal_uInt16 const aImplAPPLEGREEKToUniTab[APPLEGREEKUNI_END - APPLEGREEKUNI_START + 1] =
{
/*       0       1       2       3       4       5       6       7 */
/*       8       9       A       B       C       D       E       F */
    0x00C4, 0x00B9, 0x00B2, 0x00C9, 0x00B3, 0x00D6, 0x00DC, 0x0385, /* 0x80 */
    0x00E0, 0x00E2, 0x00E4, 0x0384, 0x00A8, 0x00E7, 0x00E9, 0x00E8, /* 0x80 */
    0x00EA, 0x00EB, 0x00A3, 0x2122, 0x00EE, 0x00EF, 0x2022, 0x00BD, /* 0x90 */
    0x2030, 0x00F4, 0x00F6, 0x00A6, 0x00AD, 0x00F9, 0x00FB, 0x00FC, /* 0x90 */
    0x2020, 0x0393, 0x0394, 0x0398, 0x039B, 0x039E, 0x03A0, 0x00DF, /* 0xA0 */
    0x00AE, 0x00A9, 0x03A3, 0x03AA, 0x00A7, 0x2260, 0x00B0, 0x00B7, /* 0xA0 */
    0x0391, 0x00B1, 0x2264, 0x2265, 0x00A5, 0x0392, 0x0395, 0x0396, /* 0xB0 */
    0x0397, 0x0399, 0x039A, 0x039C, 0x03A6, 0x03AB, 0x03A8, 0x03A9, /* 0xB0 */
    0x03AC, 0x039D, 0x00AC, 0x039F, 0x03A1, 0x2248, 0x03A4, 0x00AB, /* 0xC0 */
    0x00BB, 0x2026, 0x00A0, 0x03A5, 0x03A7, 0x0386, 0x0388, 0x0153, /* 0xC0 */
    0x2013, 0x2015, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x0389, /* 0xD0 */
    0x038A, 0x038C, 0x038E, 0x03AD, 0x03AE, 0x03AF, 0x03CC, 0x038F, /* 0xD0 */
    0x03CD, 0x03B1, 0x03B2, 0x03C8, 0x03B4, 0x03B5, 0x03C6, 0x03B3, /* 0xE0 */
    0x03B7, 0x03B9, 0x03BE, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BF, /* 0xE0 */
    0x03C0, 0x03CE, 0x03C1, 0x03C3, 0x03C4, 0x03B8, 0x03C9, 0x03C2, /* 0xF0 */
    0x03C7, 0x03C5, 0x03B6, 0x03CA, 0x03CB, 0x0390, 0x03B0, 0xF8A0  /* 0xF0 */
};

/* ----------------------------------------------------------------------- */

#define APPLEGREEKCHAR_START            0x0384
#define APPLEGREEKCHAR_END              0x03CE
static sal_uChar const aImplAPPLEGREEKToCharTab[APPLEGREEKCHAR_END - APPLEGREEKCHAR_START + 1] =
{
/*     0     1     2     3     4     5     6     7 */
/*     8     9     A     B     C     D     E     F */
                            0x8B, 0x87, 0xCD,    0, /* 0x0380 */
    0xCE, 0xD7, 0xD8,    0, 0xD9,    0, 0xDA, 0xDF, /* 0x0380 */
    0xFD, 0xB0, 0xB5, 0xA1, 0xA2, 0xB6, 0xB7, 0xB8, /* 0x0390 */
    0xA3, 0xB9, 0xBA, 0xA4, 0xBB, 0xC1, 0xA5, 0xC3, /* 0x0390 */
    0xA6, 0xC4,    0, 0xAA, 0xC6, 0xCB, 0xBC, 0xCC, /* 0x03A0 */
    0xBE, 0xBF, 0xAB, 0xBD, 0xC0, 0xDB, 0xDC, 0xDD, /* 0x03A0 */
    0xFE, 0xE1, 0xE2, 0xE7, 0xE4, 0xE5, 0xFA, 0xE8, /* 0x03B0 */
    0xF5, 0xE9, 0xEB, 0xEC, 0xED, 0xEE, 0xEA, 0xEF, /* 0x03B0 */
    0xF0, 0xF2, 0xF7, 0xF3, 0xF4, 0xF9, 0xE6, 0xF8, /* 0x03C0 */
    0xE3, 0xF6, 0xFB, 0xFC, 0xDE, 0xE0, 0xF1        /* 0x03C0 */
};

/* ----------------------------------------------------------------------- */

#define APPLEGREEKTOCHARTABEX_COUNT     57
static ImplUniCharTabData const aImplAPPLEGREEKToCharTabEx[APPLEGREEKTOCHARTABEX_COUNT] =
{
  { 0x00A0, 0xCA, 0 },
  { 0x00A3, 0x92, 0 },
  { 0x00A5, 0xB4, 0 },
  { 0x00A6, 0x9B, 0 },
  { 0x00A7, 0xAC, 0 },
  { 0x00A8, 0x8C, 0 },
  { 0x00A9, 0xA9, 0 },
  { 0x00AB, 0xC7, 0 },
  { 0x00AC, 0xC2, 0 },
  { 0x00AD, 0x9C, 0 },
  { 0x00AE, 0xA8, 0 },
  { 0x00B0, 0xAE, 0 },
  { 0x00B1, 0xB1, 0 },
  { 0x00B2, 0x82, 0 },
  { 0x00B3, 0x84, 0 },
  { 0x00B7, 0xAF, 0 },
  { 0x00B9, 0x81, 0 },
  { 0x00BB, 0xC8, 0 },
  { 0x00BD, 0x97, 0 },
  { 0x00C4, 0x80, 0 },
  { 0x00C9, 0x83, 0 },
  { 0x00D6, 0x85, 0 },
  { 0x00DC, 0x86, 0 },
  { 0x00DF, 0xA7, 0 },
  { 0x00E0, 0x88, 0 },
  { 0x00E2, 0x89, 0 },
  { 0x00E4, 0x8A, 0 },
  { 0x00E7, 0x8D, 0 },
  { 0x00E8, 0x8F, 0 },
  { 0x00E9, 0x8E, 0 },
  { 0x00EA, 0x90, 0 },
  { 0x00EB, 0x91, 0 },
  { 0x00EE, 0x94, 0 },
  { 0x00EF, 0x95, 0 },
  { 0x00F4, 0x99, 0 },
  { 0x00F6, 0x9A, 0 },
  { 0x00F7, 0xD6, 0 },
  { 0x00F9, 0x9D, 0 },
  { 0x00FB, 0x9E, 0 },
  { 0x00FC, 0x9F, 0 },
  { 0x0153, 0xCF, 0 },
  { 0x2013, 0xD0, 0 },
  { 0x2015, 0xD1, 0 },
  { 0x2018, 0xD4, 0 },
  { 0x2019, 0xD5, 0 },
  { 0x201C, 0xD2, 0 },
  { 0x201D, 0xD3, 0 },
  { 0x2020, 0xA0, 0 },
  { 0x2022, 0x96, 0 },
  { 0x2026, 0xC9, 0 },
  { 0x2030, 0x98, 0 },
  { 0x2122, 0x93, 0 },
  { 0x2248, 0xC5, 0 },
  { 0x2260, 0xAD, 0 },
  { 0x2264, 0xB2, 0 },
  { 0x2265, 0xB3, 0 },
  { 0xF8A0, 0xFF, 0 }
};

/* ----------------------------------------------------------------------- */

static ImplByteConvertData const aImplAPPLEGREEKByteCvtData =
{
    aImplAPPLEGREEKToUniTab,
    NULL,
    APPLEGREEKUNI_START, APPLEGREEKUNI_END,
    NOTABUNI_START, NOTABUNI_END,
    aImplAPPLEGREEKToCharTab,
    NULL,
    aImplAPPLEGREEKToCharTabEx,
    APPLEGREEKCHAR_START, APPLEGREEKCHAR_END,
    NOTABCHAR_START, NOTABCHAR_END,
    APPLEGREEKTOCHARTABEX_COUNT
};

/* ----------------------------------------------------------------------- */

static ImplTextEncodingData const aImplAPPLEGREEKTextEncodingData
    = { { &aImplAPPLEGREEKByteCvtData,
          ImplCharToUnicode,
          ImplUnicodeToChar,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL },
        1,
        1,
        1,
        161,
        "iso8859-7",
        "iso-8859-7",
        RTL_TEXTENCODING_INFO_ASCII };
    /* MAC, SCRIPT_GREEK, pc code page 869, mac encoding 6 */

/* ======================================================================= */

/* APPLE-Romanian */
/* Standard Apple CharSet for Romanien */
/* 1-Byte, 0x00-0x7F ASCII, jedoch eigentich Sonderzeichen zwischen 0x00-0x1F */
/* die wir aber nicht beruecksichtigen */
/* Convert-Tables: mappings/vendors/apple/romanian.txt from 02/05/98 */
/* Last-Changes from us: */
/* 0xAF --> 0x015E (like Java), Apple Definition: 0x0053+0x0326   # LATIN CAPITAL LETTER S + COMBINING COMMA BELOW */
/* 0xBF --> 0x015F (like Java), Apple Definition: 0x0073+0x0326   # LATIN SMALL LETTER S + COMBINING COMMA BELOW */
/* 0xDE --> 0x0162 (like Java), Apple Definition: 0x0054+0x0326   # LATIN CAPITAL LETTER T + COMBINING COMMA BELOW */
/* 0xDF --> 0x0163 (like Java), Apple Definition: 0x0074+0x0326   # LATIN SMALL LETTER T + COMBINING COMMA BELOW */

#define APPLEROMANIANUNI_START          0x80
#define APPLEROMANIANUNI_END            0xFF
static sal_uInt16 const aImplAPPLEROMANIANToUniTab[APPLEROMANIANUNI_END - APPLEROMANIANUNI_START + 1] =
{
/*       0       1       2       3       4       5       6       7 */
/*       8       9       A       B       C       D       E       F */
    0x00C4, 0x00C5, 0x00C7, 0x00C9, 0x00D1, 0x00D6, 0x00DC, 0x00E1, /* 0x80 */
    0x00E0, 0x00E2, 0x00E4, 0x00E3, 0x00E5, 0x00E7, 0x00E9, 0x00E8, /* 0x80 */
    0x00EA, 0x00EB, 0x00ED, 0x00EC, 0x00EE, 0x00EF, 0x00F1, 0x00F3, /* 0x90 */
    0x00F2, 0x00F4, 0x00F6, 0x00F5, 0x00FA, 0x00F9, 0x00FB, 0x00FC, /* 0x90 */
    0x2020, 0x00B0, 0x00A2, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x00DF, /* 0xA0 */
    0x00AE, 0x00A9, 0x2122, 0x00B4, 0x00A8, 0x2260, 0x0102, 0x015E, /* 0xA0 */
    0x221E, 0x00B1, 0x2264, 0x2265, 0x00A5, 0x00B5, 0x2202, 0x2211, /* 0xB0 */
    0x220F, 0x03C0, 0x222B, 0x00AA, 0x00BA, 0x03A9, 0x0103, 0x015F, /* 0xB0 */
    0x00BF, 0x00A1, 0x00AC, 0x221A, 0x0192, 0x2248, 0x2206, 0x00AB, /* 0xC0 */
    0x00BB, 0x2026, 0x00A0, 0x00C0, 0x00C3, 0x00D5, 0x0152, 0x0153, /* 0xC0 */
    0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x25CA, /* 0xD0 */
    0x00FF, 0x0178, 0x2044, 0x00A4, 0x2039, 0x203A, 0x0162, 0x0163, /* 0xD0 */
    0x2021, 0x00B7, 0x201A, 0x201E, 0x2030, 0x00C2, 0x00CA, 0x00C1, /* 0xE0 */
    0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF, 0x00CC, 0x00D3, 0x00D4, /* 0xE0 */
    0xF8FF, 0x00D2, 0x00DA, 0x00DB, 0x00D9, 0x0131, 0x02C6, 0x02DC, /* 0xF0 */
    0x00AF, 0x02D8, 0x02D9, 0x02DA, 0x00B8, 0x02DD, 0x02DB, 0x02C7  /* 0xF0 */
};

/* ----------------------------------------------------------------------- */

#define APPLEROMANIANCHAR_START         0x00A0
#define APPLEROMANIANCHAR_END           0x00FF
static sal_uChar const aImplAPPLEROMANIANToCharTab[APPLEROMANIANCHAR_END - APPLEROMANIANCHAR_START + 1] =
{
/*     0     1     2     3     4     5     6     7 */
/*     8     9     A     B     C     D     E     F */
    0xCA, 0xC1, 0xA2, 0xA3, 0xDB, 0xB4,    0, 0xA4, /* 0x00A0 */
    0xAC, 0xA9, 0xBB, 0xC7, 0xC2,    0, 0xA8, 0xF8, /* 0x00A0 */
    0xA1, 0xB1,    0,    0, 0xAB, 0xB5, 0xA6, 0xE1, /* 0x00B0 */
    0xFC,    0, 0xBC, 0xC8,    0,    0,    0, 0xC0, /* 0x00B0 */
    0xCB, 0xE7, 0xE5, 0xCC, 0x80, 0x81,    0, 0x82, /* 0x00C0 */
    0xE9, 0x83, 0xE6, 0xE8, 0xED, 0xEA, 0xEB, 0xEC, /* 0x00C0 */
       0, 0x84, 0xF1, 0xEE, 0xEF, 0xCD, 0x85,    0, /* 0x00D0 */
       0, 0xF4, 0xF2, 0xF3, 0x86,    0,    0, 0xA7, /* 0x00D0 */
    0x88, 0x87, 0x89, 0x8B, 0x8A, 0x8C,    0, 0x8D, /* 0x00E0 */
    0x8F, 0x8E, 0x90, 0x91, 0x93, 0x92, 0x94, 0x95, /* 0x00E0 */
       0, 0x96, 0x98, 0x97, 0x99, 0x9B, 0x9A, 0xD6, /* 0x00F0 */
       0, 0x9D, 0x9C, 0x9E, 0x9F,    0,    0, 0xD8  /* 0x00F0 */
};

/* ----------------------------------------------------------------------- */

#define APPLEROMANIANTOCHARTABEX_COUNT  51
static ImplUniCharTabData const aImplAPPLEROMANIANToCharTabEx[APPLEROMANIANTOCHARTABEX_COUNT] =
{
  { 0x0102, 0xAE, 0 },
  { 0x0103, 0xBE, 0 },
  { 0x0131, 0xF5, 0 },
  { 0x0152, 0xCE, 0 },
  { 0x0153, 0xCF, 0 },
  { 0x015E, 0xAF, 0 },
  { 0x015F, 0xBF, 0 },
  { 0x0162, 0xDE, 0 },
  { 0x0163, 0xDF, 0 },
  { 0x0178, 0xD9, 0 },
  { 0x0192, 0xC4, 0 },
  { 0x02C6, 0xF6, 0 },
  { 0x02C7, 0xFF, 0 },
  { 0x02D8, 0xF9, 0 },
  { 0x02D9, 0xFA, 0 },
  { 0x02DA, 0xFB, 0 },
  { 0x02DB, 0xFE, 0 },
  { 0x02DC, 0xF7, 0 },
  { 0x02DD, 0xFD, 0 },
  { 0x03A9, 0xBD, 0 },
  { 0x03C0, 0xB9, 0 },
  { 0x2013, 0xD0, 0 },
  { 0x2014, 0xD1, 0 },
  { 0x2018, 0xD4, 0 },
  { 0x2019, 0xD5, 0 },
  { 0x201A, 0xE2, 0 },
  { 0x201C, 0xD2, 0 },
  { 0x201D, 0xD3, 0 },
  { 0x201E, 0xE3, 0 },
  { 0x2020, 0xA0, 0 },
  { 0x2021, 0xE0, 0 },
  { 0x2022, 0xA5, 0 },
  { 0x2026, 0xC9, 0 },
  { 0x2030, 0xE4, 0 },
  { 0x2039, 0xDC, 0 },
  { 0x203A, 0xDD, 0 },
  { 0x2044, 0xDA, 0 },
  { 0x2122, 0xAA, 0 },
  { 0x2202, 0xB6, 0 },
  { 0x2206, 0xC6, 0 },
  { 0x220F, 0xB8, 0 },
  { 0x2211, 0xB7, 0 },
  { 0x221A, 0xC3, 0 },
  { 0x221E, 0xB0, 0 },
  { 0x222B, 0xBA, 0 },
  { 0x2248, 0xC5, 0 },
  { 0x2260, 0xAD, 0 },
  { 0x2264, 0xB2, 0 },
  { 0x2265, 0xB3, 0 },
  { 0x25CA, 0xD7, 0 },
  { 0xF8FF, 0xF0, 0 }
};

/* ----------------------------------------------------------------------- */

static ImplByteConvertData const aImplAPPLEROMANIANByteCvtData =
{
    aImplAPPLEROMANIANToUniTab,
    NULL,
    APPLEROMANIANUNI_START, APPLEROMANIANUNI_END,
    NOTABUNI_START, NOTABUNI_END,
    aImplAPPLEROMANIANToCharTab,
    NULL,
    aImplAPPLEROMANIANToCharTabEx,
    APPLEROMANIANCHAR_START, APPLEROMANIANCHAR_END,
    NOTABCHAR_START, NOTABCHAR_END,
    APPLEROMANIANTOCHARTABEX_COUNT
};

/* ----------------------------------------------------------------------- */

static ImplTextEncodingData const aImplAPPLEROMANIANTextEncodingData
    = { { &aImplAPPLEROMANIANByteCvtData,
          ImplCharToUnicode,
          ImplUnicodeToChar,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL },
        1,
        1,
        1,
        238,
        "iso8859-2",
        "iso-8859-2",
        RTL_TEXTENCODING_INFO_ASCII };
    /* MAC, SCRIPT_EASTEUROPE, pc code page 852, mac encoding 38 */

/* ======================================================================= */

/* APPLE-Turkish */
/* Apple CharSet for Turkish */
/* 1-Byte, 0x00-0x7F ASCII, jedoch eigentich Sonderzeichen zwischen 0x00-0x1F */
/* die wir aber nicht beruecksichtigen */
/* Convert-Tables: mappings/vendors/apple/turkish.txt from 02/05/98 */
/* Last-Changes from us: */

#define APPLETURKISHUNI_START           0x80
#define APPLETURKISHUNI_END             0xFF
static sal_uInt16 const aImplAPPLETURKISHToUniTab[APPLETURKISHUNI_END - APPLETURKISHUNI_START + 1] =
{
/*       0       1       2       3       4       5       6       7 */
/*       8       9       A       B       C       D       E       F */
    0x00C4, 0x00C5, 0x00C7, 0x00C9, 0x00D1, 0x00D6, 0x00DC, 0x00E1, /* 0x80 */
    0x00E0, 0x00E2, 0x00E4, 0x00E3, 0x00E5, 0x00E7, 0x00E9, 0x00E8, /* 0x80 */
    0x00EA, 0x00EB, 0x00ED, 0x00EC, 0x00EE, 0x00EF, 0x00F1, 0x00F3, /* 0x90 */
    0x00F2, 0x00F4, 0x00F6, 0x00F5, 0x00FA, 0x00F9, 0x00FB, 0x00FC, /* 0x90 */
    0x2020, 0x00B0, 0x00A2, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x00DF, /* 0xA0 */
    0x00AE, 0x00A9, 0x2122, 0x00B4, 0x00A8, 0x2260, 0x00C6, 0x00D8, /* 0xA0 */
    0x221E, 0x00B1, 0x2264, 0x2265, 0x00A5, 0x00B5, 0x2202, 0x2211, /* 0xB0 */
    0x220F, 0x03C0, 0x222B, 0x00AA, 0x00BA, 0x03A9, 0x00E6, 0x00F8, /* 0xB0 */
    0x00BF, 0x00A1, 0x00AC, 0x221A, 0x0192, 0x2248, 0x2206, 0x00AB, /* 0xC0 */
    0x00BB, 0x2026, 0x00A0, 0x00C0, 0x00C3, 0x00D5, 0x0152, 0x0153, /* 0xC0 */
    0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x25CA, /* 0xD0 */
    0x00FF, 0x0178, 0x011E, 0x011F, 0x0130, 0x0131, 0x015E, 0x015F, /* 0xD0 */
    0x2021, 0x00B7, 0x201A, 0x201E, 0x2030, 0x00C2, 0x00CA, 0x00C1, /* 0xE0 */
    0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF, 0x00CC, 0x00D3, 0x00D4, /* 0xE0 */
    0xF8FF, 0x00D2, 0x00DA, 0x00DB, 0x00D9, 0xF8A0, 0x02C6, 0x02DC, /* 0xF0 */
    0x00AF, 0x02D8, 0x02D9, 0x02DA, 0x00B8, 0x02DD, 0x02DB, 0x02C7  /* 0xF0 */
};

/* ----------------------------------------------------------------------- */

#define APPLETURKISHCHAR_START          0x00A0
#define APPLETURKISHCHAR_END            0x00FF
static sal_uChar const aImplAPPLETURKISHToCharTab[APPLETURKISHCHAR_END - APPLETURKISHCHAR_START + 1] =
{
/*     0     1     2     3     4     5     6     7 */
/*     8     9     A     B     C     D     E     F */
    0xCA, 0xC1, 0xA2, 0xA3,    0, 0xB4,    0, 0xA4, /* 0x00A0 */
    0xAC, 0xA9, 0xBB, 0xC7, 0xC2,    0, 0xA8, 0xF8, /* 0x00A0 */
    0xA1, 0xB1,    0,    0, 0xAB, 0xB5, 0xA6, 0xE1, /* 0x00B0 */
    0xFC,    0, 0xBC, 0xC8,    0,    0,    0, 0xC0, /* 0x00B0 */
    0xCB, 0xE7, 0xE5, 0xCC, 0x80, 0x81, 0xAE, 0x82, /* 0x00C0 */
    0xE9, 0x83, 0xE6, 0xE8, 0xED, 0xEA, 0xEB, 0xEC, /* 0x00C0 */
       0, 0x84, 0xF1, 0xEE, 0xEF, 0xCD, 0x85,    0, /* 0x00D0 */
    0xAF, 0xF4, 0xF2, 0xF3, 0x86,    0,    0, 0xA7, /* 0x00D0 */
    0x88, 0x87, 0x89, 0x8B, 0x8A, 0x8C, 0xBE, 0x8D, /* 0x00E0 */
    0x8F, 0x8E, 0x90, 0x91, 0x93, 0x92, 0x94, 0x95, /* 0x00E0 */
       0, 0x96, 0x98, 0x97, 0x99, 0x9B, 0x9A, 0xD6, /* 0x00F0 */
    0xBF, 0x9D, 0x9C, 0x9E, 0x9F,    0,    0, 0xD8  /* 0x00F0 */
};

/* ----------------------------------------------------------------------- */

#define APPLETURKISHTOCHARTABEX_COUNT   48
static ImplUniCharTabData const aImplAPPLETURKISHToCharTabEx[APPLETURKISHTOCHARTABEX_COUNT] =
{
  { 0x011E, 0xDA, 0 },
  { 0x011F, 0xDB, 0 },
  { 0x0130, 0xDC, 0 },
  { 0x0131, 0xDD, 0 },
  { 0x0152, 0xCE, 0 },
  { 0x0153, 0xCF, 0 },
  { 0x015E, 0xDE, 0 },
  { 0x015F, 0xDF, 0 },
  { 0x0178, 0xD9, 0 },
  { 0x0192, 0xC4, 0 },
  { 0x02C6, 0xF6, 0 },
  { 0x02C7, 0xFF, 0 },
  { 0x02D8, 0xF9, 0 },
  { 0x02D9, 0xFA, 0 },
  { 0x02DA, 0xFB, 0 },
  { 0x02DB, 0xFE, 0 },
  { 0x02DC, 0xF7, 0 },
  { 0x02DD, 0xFD, 0 },
  { 0x03A9, 0xBD, 0 },
  { 0x03C0, 0xB9, 0 },
  { 0x2013, 0xD0, 0 },
  { 0x2014, 0xD1, 0 },
  { 0x2018, 0xD4, 0 },
  { 0x2019, 0xD5, 0 },
  { 0x201A, 0xE2, 0 },
  { 0x201C, 0xD2, 0 },
  { 0x201D, 0xD3, 0 },
  { 0x201E, 0xE3, 0 },
  { 0x2020, 0xA0, 0 },
  { 0x2021, 0xE0, 0 },
  { 0x2022, 0xA5, 0 },
  { 0x2026, 0xC9, 0 },
  { 0x2030, 0xE4, 0 },
  { 0x2122, 0xAA, 0 },
  { 0x2202, 0xB6, 0 },
  { 0x2206, 0xC6, 0 },
  { 0x220F, 0xB8, 0 },
  { 0x2211, 0xB7, 0 },
  { 0x221A, 0xC3, 0 },
  { 0x221E, 0xB0, 0 },
  { 0x222B, 0xBA, 0 },
  { 0x2248, 0xC5, 0 },
  { 0x2260, 0xAD, 0 },
  { 0x2264, 0xB2, 0 },
  { 0x2265, 0xB3, 0 },
  { 0x25CA, 0xD7, 0 },
  { 0xF8A0, 0xF5, 0 },
  { 0xF8FF, 0xF0, 0 }
};

/* ----------------------------------------------------------------------- */

static ImplByteConvertData const aImplAPPLETURKISHByteCvtData =
{
    aImplAPPLETURKISHToUniTab,
    NULL,
    APPLETURKISHUNI_START, APPLETURKISHUNI_END,
    NOTABUNI_START, NOTABUNI_END,
    aImplAPPLETURKISHToCharTab,
    NULL,
    aImplAPPLETURKISHToCharTabEx,
    APPLETURKISHCHAR_START, APPLETURKISHCHAR_END,
    NOTABCHAR_START, NOTABCHAR_END,
    APPLETURKISHTOCHARTABEX_COUNT
};

/* ----------------------------------------------------------------------- */

static ImplTextEncodingData const aImplAPPLETURKISHTextEncodingData
    = { { &aImplAPPLETURKISHByteCvtData,
          ImplCharToUnicode,
          ImplUnicodeToChar,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL },
        1,
        1,
        1,
        162,
        "iso8859-9",
        "iso-8859-9",
        RTL_TEXTENCODING_INFO_ASCII };
    /* MAC, SCRIPT_TURKISH, pc code page 857, mac encoding 35 */

/* ======================================================================= */

/* APPLE-Ukrainian */
/* Apple CharSet for Ukrainian */
/* 1-Byte, 0x00-0x7F ASCII, jedoch eigentich Sonderzeichen zwischen 0x00-0x1F */
/* die wir aber nicht beruecksichtigen */
/* Convert-Tables: mappings/vendors/apple/ukraine.txt from 02/05/98 */
/* Last-Changes from us: */

#define APPLEUKRAINIANUNI_START         0x80
#define APPLEUKRAINIANUNI_END           0xFF
static sal_uInt16 const aImplAPPLEUKRAINIANToUniTab[APPLEUKRAINIANUNI_END - APPLEUKRAINIANUNI_START + 1] =
{
/*       0       1       2       3       4       5       6       7 */
/*       8       9       A       B       C       D       E       F */
    0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, /* 0x80 */
    0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, /* 0x80 */
    0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, /* 0x90 */
    0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, /* 0x90 */
    0x2020, 0x00B0, 0x0490, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x0406, /* 0xA0 */
    0x00AE, 0x00A9, 0x2122, 0x0402, 0x0452, 0x2260, 0x0403, 0x0453, /* 0xA0 */
    0x221E, 0x00B1, 0x2264, 0x2265, 0x0456, 0x00B5, 0x0491, 0x0408, /* 0xB0 */
    0x0404, 0x0454, 0x0407, 0x0457, 0x0409, 0x0459, 0x040A, 0x045A, /* 0xB0 */
    0x0458, 0x0405, 0x00AC, 0x221A, 0x0192, 0x2248, 0x2206, 0x00AB, /* 0xC0 */
    0x00BB, 0x2026, 0x00A0, 0x040B, 0x045B, 0x040C, 0x045C, 0x0455, /* 0xC0 */
    0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x201E, /* 0xD0 */
    0x040E, 0x045E, 0x040F, 0x045F, 0x2116, 0x0401, 0x0451, 0x044F, /* 0xD0 */
    0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, /* 0xE0 */
    0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, /* 0xE0 */
    0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, /* 0xF0 */
    0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x00A4  /* 0xF0 */
};

/* ----------------------------------------------------------------------- */

#define APPLEUKRAINIANCHAR_START        0x0401
#define APPLEUKRAINIANCHAR_END          0x045F
static sal_uChar const aImplAPPLEUKRAINIANToCharTab[APPLEUKRAINIANCHAR_END - APPLEUKRAINIANCHAR_START + 1] =
{
/*     0     1     2     3     4     5     6     7 */
/*     8     9     A     B     C     D     E     F */
          0xDD, 0xAB, 0xAE, 0xB8, 0xC1, 0xA7, 0xBA, /* 0x0400 */
    0xB7, 0xBC, 0xBE, 0xCB, 0xCD,    0, 0xD8, 0xDA, /* 0x0400 */
    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x0410 */
    0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, /* 0x0410 */
    0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, /* 0x0420 */
    0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F, /* 0x0420 */
    0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, /* 0x0430 */
    0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, /* 0x0430 */
    0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, /* 0x0440 */
    0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xDF, /* 0x0440 */
       0, 0xDE, 0xAC, 0xAF, 0xB9, 0xCF, 0xB4, 0xBB, /* 0x0450 */
    0xC0, 0xBD, 0xBF, 0xCC, 0xCE,    0, 0xD9, 0xDB, /* 0x0450 */
};

/* ----------------------------------------------------------------------- */

#define APPLEUKRAINIANTOCHARTABEX_COUNT 36
static ImplUniCharTabData const aImplAPPLEUKRAINIANToCharTabEx[APPLEUKRAINIANTOCHARTABEX_COUNT] =
{
  { 0x00A0, 0xCA, 0 },
  { 0x00A3, 0xA3, 0 },
  { 0x00A4, 0xFF, 0 },
  { 0x00A7, 0xA4, 0 },
  { 0x00A9, 0xA9, 0 },
  { 0x00AB, 0xC7, 0 },
  { 0x00AC, 0xC2, 0 },
  { 0x00AE, 0xA8, 0 },
  { 0x00B0, 0xA1, 0 },
  { 0x00B1, 0xB1, 0 },
  { 0x00B5, 0xB5, 0 },
  { 0x00B6, 0xA6, 0 },
  { 0x00BB, 0xC8, 0 },
  { 0x00F7, 0xD6, 0 },
  { 0x0192, 0xC4, 0 },
  { 0x0490, 0xA2, 0 },
  { 0x0491, 0xB6, 0 },
  { 0x2013, 0xD0, 0 },
  { 0x2014, 0xD1, 0 },
  { 0x2018, 0xD4, 0 },
  { 0x2019, 0xD5, 0 },
  { 0x201C, 0xD2, 0 },
  { 0x201D, 0xD3, 0 },
  { 0x201E, 0xD7, 0 },
  { 0x2020, 0xA0, 0 },
  { 0x2022, 0xA5, 0 },
  { 0x2026, 0xC9, 0 },
  { 0x2116, 0xDC, 0 },
  { 0x2122, 0xAA, 0 },
  { 0x2206, 0xC6, 0 },
  { 0x221A, 0xC3, 0 },
  { 0x221E, 0xB0, 0 },
  { 0x2248, 0xC5, 0 },
  { 0x2260, 0xAD, 0 },
  { 0x2264, 0xB2, 0 },
  { 0x2265, 0xB3, 0 }
};

/* ----------------------------------------------------------------------- */

static ImplByteConvertData const aImplAPPLEUKRAINIANByteCvtData =
{
    aImplAPPLEUKRAINIANToUniTab,
    NULL,
    APPLEUKRAINIANUNI_START, APPLEUKRAINIANUNI_END,
    NOTABUNI_START, NOTABUNI_END,
    aImplAPPLEUKRAINIANToCharTab,
    NULL,
    aImplAPPLEUKRAINIANToCharTabEx,
    APPLEUKRAINIANCHAR_START, APPLEUKRAINIANCHAR_END,
    NOTABCHAR_START, NOTABCHAR_END,
    APPLEUKRAINIANTOCHARTABEX_COUNT
};

/* ----------------------------------------------------------------------- */

static ImplTextEncodingData const aImplAPPLEUKRAINIANTextEncodingData
    = { { &aImplAPPLEUKRAINIANByteCvtData,
          ImplCharToUnicode,
          ImplUnicodeToChar,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL },
        1,
        1,
        1,
        204,
        "iso8859-5",
        "iso-8859-5",
        RTL_TEXTENCODING_INFO_ASCII };
    /* MAC, SCRIPT_CYRILLIC, pc code page 866 (855?), mac encoding 0x98
       (MAC 8.5 and above) */

/* ======================================================================= */

/* KOI8_R */
/* Standard Charset for Cyrillic */
/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
/* Convert-Tables: typed per hand */
/* Last-Changes from us: */

#define KOI8RUNI_START                  0x80
#define KOI8RUNI_END                    0xFF
static sal_uInt16 const aImplKOI8RToUniTab[KOI8RUNI_END - KOI8RUNI_START + 1] =
{
/*       0       1       2       3       4       5       6       7 */
/*       8       9       A       B       C       D       E       F */
    0x2500, 0x2502, 0x250C, 0x2510, 0x2514, 0x2518, 0x251C, 0x2524, /* 0x80 */
    0x252C, 0x2534, 0x253C, 0x2580, 0x2584, 0x2588, 0x258C, 0x2590, /* 0x80 */
    0x2591, 0x2592, 0x2593, 0x2320, 0x25A0, 0x2219, 0x221A, 0x2248, /* 0x90 */
    0x2264, 0x2265, 0x00A0, 0x2321, 0x00B0, 0x00B2, 0x00B7, 0x00F7, /* 0x90 */
    0x2550, 0x2551, 0x2552, 0x0451, 0x2553, 0x2554, 0x2555, 0x2556, /* 0xA0 */
    0x2557, 0x2558, 0x2559, 0x255A, 0x255B, 0x255C, 0x255D, 0x255E, /* 0xA0 */
    0x255F, 0x2560, 0x2561, 0x0401, 0x2562, 0x2563, 0x2564, 0x2565, /* 0xB0 */
    0x2566, 0x2567, 0x2568, 0x2569, 0x256A, 0x256B, 0x256C, 0x00A9, /* 0xB0 */
    0x044E, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, /* 0xC0 */
    0x0445, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, /* 0xC0 */
    0x043F, 0x044F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, /* 0xD0 */
    0x044C, 0x044B, 0x0437, 0x0448, 0x044D, 0x0449, 0x0447, 0x044A, /* 0xD0 */
    0x042E, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, /* 0xE0 */
    0x0425, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, /* 0xE0 */
    0x041F, 0x042F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, /* 0xF0 */
    0x042C, 0x042B, 0x0417, 0x0428, 0x042D, 0x0429, 0x0427, 0x042A  /* 0xF0 */
};

/* ----------------------------------------------------------------------- */

#define KOI8RCHAR_START                 0x0410
#define KOI8RCHAR_END                   0x044F
static sal_uChar const aImplKOI8RToCharTab[KOI8RCHAR_END - KOI8RCHAR_START + 1] =
{
/*     0     1     2     3     4     5     6     7 */
/*     8     9     A     B     C     D     E     F */
    0xE1, 0xE2, 0xF7, 0xE7, 0xE4, 0xE5, 0xF6, 0xFA, /* 0x0410 */
    0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, /* 0x0410 */
    0xF2, 0xF3, 0xF4, 0xF5, 0xE6, 0xE8, 0xE3, 0xFE, /* 0x0420 */
    0xFB, 0xFD, 0xFF, 0xF9, 0xF8, 0xFC, 0xE0, 0xF1, /* 0x0420 */
    0xC1, 0xC2, 0xD7, 0xC7, 0xC4, 0xC5, 0xD6, 0xDA, /* 0x0430 */
    0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, /* 0x0430 */
    0xD2, 0xD3, 0xD4, 0xD5, 0xC6, 0xC8, 0xC3, 0xDE, /* 0x0440 */
    0xDB, 0xDD, 0xDF, 0xD9, 0xD8, 0xDC, 0xC0, 0xD1  /* 0x0440 */
};

/* ----------------------------------------------------------------------- */

#define KOI8RTOCHARTABEX_COUNT          64
static ImplUniCharTabData const aImplKOI8RToCharTabEx[KOI8RTOCHARTABEX_COUNT] =
{
  { 0x00A0, 0x9A, 0 },
  { 0x00A9, 0xBF, 0 },
  { 0x00B0, 0x9C, 0 },
  { 0x00B2, 0x9D, 0 },
  { 0x00B7, 0x9E, 0 },
  { 0x00F7, 0x9F, 0 },
  { 0x0401, 0xB3, 0 },
  { 0x0451, 0xA3, 0 },
  { 0x2219, 0x95, 0 },
  { 0x221A, 0x96, 0 },
  { 0x2248, 0x97, 0 },
  { 0x2264, 0x98, 0 },
  { 0x2265, 0x99, 0 },
  { 0x2320, 0x93, 0 },
  { 0x2321, 0x9B, 0 },
  { 0x2500, 0x80, 0 },
  { 0x2502, 0x81, 0 },
  { 0x250C, 0x82, 0 },
  { 0x2510, 0x83, 0 },
  { 0x2514, 0x84, 0 },
  { 0x2518, 0x85, 0 },
  { 0x251C, 0x86, 0 },
  { 0x2524, 0x87, 0 },
  { 0x252C, 0x88, 0 },
  { 0x2534, 0x89, 0 },
  { 0x253C, 0x8A, 0 },
  { 0x2550, 0xA0, 0 },
  { 0x2551, 0xA1, 0 },
  { 0x2552, 0xA2, 0 },
  { 0x2553, 0xA4, 0 },
  { 0x2554, 0xA5, 0 },
  { 0x2555, 0xA6, 0 },
  { 0x2556, 0xA7, 0 },
  { 0x2557, 0xA8, 0 },
  { 0x2558, 0xA9, 0 },
  { 0x2559, 0xAA, 0 },
  { 0x255A, 0xAB, 0 },
  { 0x255B, 0xAC, 0 },
  { 0x255C, 0xAD, 0 },
  { 0x255D, 0xAE, 0 },
  { 0x255E, 0xAF, 0 },
  { 0x255F, 0xB0, 0 },
  { 0x2560, 0xB1, 0 },
  { 0x2561, 0xB2, 0 },
  { 0x2562, 0xB4, 0 },
  { 0x2563, 0xB5, 0 },
  { 0x2564, 0xB6, 0 },
  { 0x2565, 0xB7, 0 },
  { 0x2566, 0xB8, 0 },
  { 0x2567, 0xB9, 0 },
  { 0x2568, 0xBA, 0 },
  { 0x2569, 0xBB, 0 },
  { 0x256A, 0xBC, 0 },
  { 0x256B, 0xBD, 0 },
  { 0x256C, 0xBE, 0 },
  { 0x2580, 0x8B, 0 },
  { 0x2584, 0x8C, 0 },
  { 0x2588, 0x8D, 0 },
  { 0x258C, 0x8E, 0 },
  { 0x2590, 0x8F, 0 },
  { 0x2591, 0x90, 0 },
  { 0x2592, 0x91, 0 },
  { 0x2593, 0x92, 0 },
  { 0x25A0, 0x94, 0 }
};

/* ----------------------------------------------------------------------- */

static ImplByteConvertData const aImplKOI8RByteCvtData =
{
    aImplKOI8RToUniTab,
    NULL,
    KOI8RUNI_START, KOI8RUNI_END,
    NOTABUNI_START, NOTABUNI_END,
    aImplKOI8RToCharTab,
    NULL,
    aImplKOI8RToCharTabEx,
    KOI8RCHAR_START, KOI8RCHAR_END,
    NOTABCHAR_START, NOTABCHAR_END,
    KOI8RTOCHARTABEX_COUNT
};

/* ----------------------------------------------------------------------- */

static ImplTextEncodingData const aImplKOI8RTextEncodingData
    = { { &aImplKOI8RByteCvtData,
          ImplCharToUnicode,
          ImplUnicodeToChar,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL },
        1,
        1,
        1,
        204,
        "koi8-r",
        "koi8-r",
        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
    /* SCRIPT_CYRILLIC, pc code page 866 (855?), mac encoding 7 */

/* ======================================================================= */

/* KOI8_U */
/* Standard Charset for Ukrainian Cyrillic */
/* Single Byte, 0x00-0x7F equals ASCII */
/* Conversion Tables: hand made */

#define KOI8UUNI_START 0x80
#define KOI8UUNI_END 0xFF
static sal_uInt16 const aImplKOI8UToUniTab[KOI8UUNI_END - KOI8UUNI_START + 1] =
{
/*       0       1       2       3       4       5       6       7 */
/*       8       9       A       B       C       D       E       F */
    0x2500, 0x2502, 0x250C, 0x2510, 0x2514, 0x2518, 0x251C, 0x2524, /* 0x80 */
    0x252C, 0x2534, 0x253C, 0x2580, 0x2584, 0x2588, 0x258C, 0x2590, /* 0x80 */
    0x2591, 0x2592, 0x2593, 0x2320, 0x25A0, 0x2219, 0x221A, 0x2248, /* 0x90 */
    0x2264, 0x2265, 0x00A0, 0x2321, 0x00B0, 0x00B2, 0x00B7, 0x00F7, /* 0x90 */
    0x2550, 0x2551, 0x2552, 0x0451, 0x0454, 0x2554, 0x0456, 0x0457, /* 0xA0 */
    0x2557, 0x2558, 0x2559, 0x255A, 0x255B, 0x0491, 0x255D, 0x255E, /* 0xA0 */
    0x255F, 0x2560, 0x2561, 0x0401, 0x0404, 0x2563, 0x0406, 0x0407, /* 0xB0 */
    0x2566, 0x2567, 0x2568, 0x2569, 0x256A, 0x0490, 0x256C, 0x00A9, /* 0xB0 */
    0x044E, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, /* 0xC0 */
    0x0445, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, /* 0xC0 */
    0x043F, 0x044F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, /* 0xD0 */
    0x044C, 0x044B, 0x0437, 0x0448, 0x044D, 0x0449, 0x0447, 0x044A, /* 0xD0 */
    0x042E, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, /* 0xE0 */
    0x0425, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, /* 0xE0 */
    0x041F, 0x042F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, /* 0xF0 */
    0x042C, 0x042B, 0x0417, 0x0428, 0x042D, 0x0429, 0x0427, 0x042A  /* 0xF0 */
};

#define KOI8UCHAR_START 0x0410
#define KOI8UCHAR_END 0x044F
static sal_uChar const
aImplKOI8UToCharTab[KOI8UCHAR_END - KOI8UCHAR_START + 1] =
{
/*     0     1     2     3     4     5     6     7 */
/*     8     9     A     B     C     D     E     F */
    0xE1, 0xE2, 0xF7, 0xE7, 0xE4, 0xE5, 0xF6, 0xFA, /* 0x0410 */
    0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, /* 0x0410 */
    0xF2, 0xF3, 0xF4, 0xF5, 0xE6, 0xE8, 0xE3, 0xFE, /* 0x0420 */
    0xFB, 0xFD, 0xFF, 0xF9, 0xF8, 0xFC, 0xE0, 0xF1, /* 0x0420 */
    0xC1, 0xC2, 0xD7, 0xC7, 0xC4, 0xC5, 0xD6, 0xDA, /* 0x0430 */
    0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, /* 0x0430 */
    0xD2, 0xD3, 0xD4, 0xD5, 0xC6, 0xC8, 0xC3, 0xDE, /* 0x0440 */
    0xDB, 0xDD, 0xDF, 0xD9, 0xD8, 0xDC, 0xC0, 0xD1  /* 0x0440 */
};

#define KOI8UTOCHARTABEX_COUNT 72
static ImplUniCharTabData const aImplKOI8UToCharTabEx[KOI8UTOCHARTABEX_COUNT] =
{
  { 0x00A0, 0x9A, 0 },
  { 0x00A9, 0xBF, 0 },
  { 0x00B0, 0x9C, 0 },
  { 0x00B2, 0x9D, 0 },
  { 0x00B7, 0x9E, 0 },
  { 0x00F7, 0x9F, 0 },
  { 0x0401, 0xB3, 0 },
  { 0x0404, 0xB4, 0 },
  { 0x0406, 0xB6, 0 },
  { 0x0407, 0xB7, 0 },
  { 0x0451, 0xA3, 0 },
  { 0x0454, 0xA4, 0 },
  { 0x0456, 0xA6, 0 },
  { 0x0457, 0xA7, 0 },
  { 0x0490, 0xBD, 0 },
  { 0x0491, 0xAD, 0 },
  { 0x2219, 0x95, 0 },
  { 0x221A, 0x96, 0 },
  { 0x2248, 0x97, 0 },
  { 0x2264, 0x98, 0 },
  { 0x2265, 0x99, 0 },
  { 0x2320, 0x93, 0 },
  { 0x2321, 0x9B, 0 },
  { 0x2500, 0x80, 0 },
  { 0x2502, 0x81, 0 },
  { 0x250C, 0x82, 0 },
  { 0x2510, 0x83, 0 },
  { 0x2514, 0x84, 0 },
  { 0x2518, 0x85, 0 },
  { 0x251C, 0x86, 0 },
  { 0x2524, 0x87, 0 },
  { 0x252C, 0x88, 0 },
  { 0x2534, 0x89, 0 },
  { 0x253C, 0x8A, 0 },
  { 0x2550, 0xA0, 0 },
  { 0x2551, 0xA1, 0 },
  { 0x2552, 0xA2, 0 },
  { 0x2553, 0xA4, 0 },
  { 0x2554, 0xA5, 0 },
  { 0x2555, 0xA6, 0 },
  { 0x2556, 0xA7, 0 },
  { 0x2557, 0xA8, 0 },
  { 0x2558, 0xA9, 0 },
  { 0x2559, 0xAA, 0 },
  { 0x255A, 0xAB, 0 },
  { 0x255B, 0xAC, 0 },
  { 0x255C, 0xAD, 0 },
  { 0x255D, 0xAE, 0 },
  { 0x255E, 0xAF, 0 },
  { 0x255F, 0xB0, 0 },
  { 0x2560, 0xB1, 0 },
  { 0x2561, 0xB2, 0 },
  { 0x2562, 0xB4, 0 },
  { 0x2563, 0xB5, 0 },
  { 0x2564, 0xB6, 0 },
  { 0x2565, 0xB7, 0 },
  { 0x2566, 0xB8, 0 },
  { 0x2567, 0xB9, 0 },
  { 0x2568, 0xBA, 0 },
  { 0x2569, 0xBB, 0 },
  { 0x256A, 0xBC, 0 },
  { 0x256B, 0xBD, 0 },
  { 0x256C, 0xBE, 0 },
  { 0x2580, 0x8B, 0 },
  { 0x2584, 0x8C, 0 },
  { 0x2588, 0x8D, 0 },
  { 0x258C, 0x8E, 0 },
  { 0x2590, 0x8F, 0 },
  { 0x2591, 0x90, 0 },
  { 0x2592, 0x91, 0 },
  { 0x2593, 0x92, 0 },
  { 0x25A0, 0x94, 0 }
};

static ImplByteConvertData const aImplKOI8UByteCvtData =
{
    aImplKOI8UToUniTab,
    NULL,
    KOI8UUNI_START, KOI8UUNI_END,
    NOTABUNI_START, NOTABUNI_END,
    aImplKOI8UToCharTab,
    NULL,
    aImplKOI8UToCharTabEx,
    KOI8UCHAR_START, KOI8UCHAR_END,
    NOTABCHAR_START, NOTABCHAR_END,
    KOI8UTOCHARTABEX_COUNT
};

static ImplTextEncodingData const aImplKoi8UTextEncodingData
    = { { &aImplKOI8UByteCvtData,
          ImplCharToUnicode,
          ImplUnicodeToChar,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL },
        1,
        1,
        1,
        204,
        "koi8-u",
        "KOI8-U",
        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
    /* SCRIPT_CYRILLIC */

/* ======================================================================= */

/* PT154 */
/* Asian Cyrillic */
/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */
/* Convert-Tables: typed per hand */
/* Last-Changes from us: */

#define PT154UNI_START                  0x80
#define PT154UNI_END                    0xFF
static sal_uInt16 const aImplPT154ToUniTab[PT154UNI_END - PT154UNI_START + 1] =
{
/*       0       1       2       3       4       5       6       7 */
/*       8       9       A       B       C       D       E       F */
    0x0496, 0x0492, 0x04EE, 0x0493, 0x201E, 0x2026, 0x04B6, 0x04AE, /* 0x80 */
    0x04B2, 0x04AF, 0x04A0, 0x04E2, 0x04A2, 0x049A, 0x04BA, 0x04B8, /* 0x80 */
    0x0497, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, /* 0x90 */
    0x04B3, 0x04B7, 0x04A1, 0x04E3, 0x04A3, 0x049B, 0x04BB, 0x04B9, /* 0x90 */
    0x00A0, 0x040E, 0x045E, 0x0408, 0x04E8, 0x0498, 0x04B0, 0x00A7, /* 0xA0 */
    0x0401, 0x00A9, 0x04D8, 0x00AB, 0x00AC, 0x04EF, 0x00AE, 0x049C, /* 0xA0 */
    0x00B0, 0x04B1, 0x0406, 0x0456, 0x0499, 0x04E9, 0x00B6, 0x00B7, /* 0xB0 */
    0x0451, 0x2116, 0x04D9, 0x00BB, 0x0458, 0x04AA, 0x04AB, 0x049D, /* 0xB0 */
    0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, /* 0xC0 */
    0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, /* 0xC0 */
    0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, /* 0xD0 */
    0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, /* 0xD0 */
    0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, /* 0xE0 */
    0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, /* 0xE0 */
    0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, /* 0xF0 */
    0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F  /* 0xF0 */
};

/* ----------------------------------------------------------------------- */

#define PT154CHAR_START                 0x0410
#define PT154CHAR_END                   0x044F
static sal_uChar const aImplPT154ToCharTab[PT154CHAR_END - PT154CHAR_START + 1] =
{
/*     0     1     2     3     4     5     6     7 */
/*     8     9     A     B     C     D     E     F */
    0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x0410 */
    0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x0410 */
    0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x0420 */
    0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0x0420 */
    0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x0430 */
    0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x0430 */
    0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x0440 */
    0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff  /* 0x0440 */
};

/* ----------------------------------------------------------------------- */

#define PT154TOCHARTABEX_COUNT          64
static ImplUniCharTabData const aImplPT154ToCharTabEx[PT154TOCHARTABEX_COUNT] =
{
  { 0x00A0, 0xa0, 0 },
  { 0x00A7, 0xa7, 0 },
  { 0x00A9, 0xa9, 0 },
  { 0x00AB, 0xab, 0 },
  { 0x00AC, 0xac, 0 },
  { 0x00AE, 0xae, 0 },
  { 0x00B0, 0xb0, 0 },
  { 0x00B6, 0xb6, 0 },
  { 0x00B7, 0xb7, 0 },
  { 0x00BB, 0xbb, 0 },
  { 0x0401, 0xa8, 0 },
  { 0x0406, 0xb2, 0 },
  { 0x0408, 0xa3, 0 },
  { 0x040E, 0xa1, 0 },
  { 0x0451, 0xb8, 0 },
  { 0x0456, 0xb3, 0 },
  { 0x0458, 0xbc, 0 },
  { 0x045E, 0xa2, 0 },
  { 0x0492, 0x81, 0 },
  { 0x0493, 0x83, 0 },
  { 0x0496, 0x80, 0 },
  { 0x0497, 0x90, 0 },
  { 0x0498, 0xa5, 0 },
  { 0x0499, 0xb4, 0 },
  { 0x049A, 0x8d, 0 },
  { 0x049B, 0x9d, 0 },
  { 0x049C, 0xaf, 0 },
  { 0x049D, 0xbf, 0 },
  { 0x04A0, 0x8a, 0 },
  { 0x04A1, 0x9a, 0 },
  { 0x04A2, 0x8c, 0 },
  { 0x04A3, 0x9c, 0 },
  { 0x04AA, 0xbd, 0 },
  { 0x04AB, 0xbe, 0 },
  { 0x04AE, 0x87, 0 },
  { 0x04AF, 0x89, 0 },
  { 0x04B0, 0xa6, 0 },
  { 0x04B1, 0xb1, 0 },
  { 0x04B2, 0x88, 0 },
  { 0x04B3, 0x98, 0 },
  { 0x04B6, 0x86, 0 },
  { 0x04B7, 0x99, 0 },
  { 0x04B8, 0x8f, 0 },
  { 0x04B9, 0x9f, 0 },
  { 0x04BA, 0x8e, 0 },
  { 0x04BB, 0x9e, 0 },
  { 0x04D8, 0xaa, 0 },
  { 0x04D9, 0xba, 0 },
  { 0x04E2, 0x8b, 0 },
  { 0x04E3, 0x9b, 0 },
  { 0x04E8, 0xa4, 0 },
  { 0x04E9, 0xb5, 0 },
  { 0x04EE, 0x82, 0 },
  { 0x04EF, 0xad, 0 },
  { 0x2013, 0x96, 0 },
  { 0x2014, 0x97, 0 },
  { 0x2018, 0x91, 0 },
  { 0x2019, 0x92, 0 },
  { 0x201C, 0x93, 0 },
  { 0x201D, 0x94, 0 },
  { 0x201E, 0x84, 0 },
  { 0x2022, 0x95, 0 },
  { 0x2026, 0x85, 0 },
  { 0x2116, 0xb9, 0 }
};

/* ----------------------------------------------------------------------- */

static ImplByteConvertData const aImplPT154ByteCvtData =
{
    aImplPT154ToUniTab,
    NULL,
    PT154UNI_START, PT154UNI_END,
    NOTABUNI_START, NOTABUNI_END,
    aImplPT154ToCharTab,
    NULL,
    aImplPT154ToCharTabEx,
    PT154CHAR_START, PT154CHAR_END,
    NOTABCHAR_START, NOTABCHAR_END,
    PT154TOCHARTABEX_COUNT
};

/* ----------------------------------------------------------------------- */

static ImplTextEncodingData const aImplPT154TextEncodingData
    = { { &aImplPT154ByteCvtData,
          ImplCharToUnicode,
          ImplUnicodeToChar,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL },
        1,
        1,
        1,
        204,
        "iso8859-5",
        "PTCP154",
        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
    /* SCRIPT_CYRILLIC */
