1*b1cdbd2cSJim Jagielski/************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski/* ======================================================================= */ 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielski/* This file contain the tables for all 1 byte charsets, for the */ 27*b1cdbd2cSJim Jagielski/* following scripts: asia (Thai, Vietnamese) and other exotic scripts */ 28*b1cdbd2cSJim Jagielski 29*b1cdbd2cSJim Jagielski/* ======================================================================= */ 30*b1cdbd2cSJim Jagielski 31*b1cdbd2cSJim Jagielski/* MS-874 */ 32*b1cdbd2cSJim Jagielski/* Windows/Dos Standard CharSet for Thai */ 33*b1cdbd2cSJim Jagielski/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */ 34*b1cdbd2cSJim Jagielski/* Convert-Tables: mappings/vendors/micsft/pc/cp874.txt from 04/15/98 Version 2.00 */ 35*b1cdbd2cSJim Jagielski/* Last-Changes from us: */ 36*b1cdbd2cSJim Jagielski 37*b1cdbd2cSJim Jagielski/* ----------------------------------------------------------------------- */ 38*b1cdbd2cSJim Jagielski 39*b1cdbd2cSJim Jagielski#define MS874UNI_START 0x80 40*b1cdbd2cSJim Jagielski#define MS874UNI_END 0xFB 41*b1cdbd2cSJim Jagielskistatic sal_uInt16 const aImplMS874ToUniTab[MS874UNI_END - MS874UNI_START + 1] = 42*b1cdbd2cSJim Jagielski{ 43*b1cdbd2cSJim Jagielski/* 0 1 2 3 4 5 6 7 */ 44*b1cdbd2cSJim Jagielski/* 8 9 A B C D E F */ 45*b1cdbd2cSJim Jagielski 0x20AC, 0, 0, 0, 0, 0x2026, 0, 0, /* 0x80 */ 46*b1cdbd2cSJim Jagielski 0, 0, 0, 0, 0, 0, 0, 0, /* 0x80 */ 47*b1cdbd2cSJim Jagielski 0, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, /* 0x90 */ 48*b1cdbd2cSJim Jagielski 0, 0, 0, 0, 0, 0, 0, 0, /* 0x90 */ 49*b1cdbd2cSJim Jagielski 0x00A0, 0x0E01, 0x0E02, 0x0E03, 0x0E04, 0x0E05, 0x0E06, 0x0E07, /* 0xA0 */ 50*b1cdbd2cSJim Jagielski 0x0E08, 0x0E09, 0x0E0A, 0x0E0B, 0x0E0C, 0x0E0D, 0x0E0E, 0x0E0F, /* 0xA0 */ 51*b1cdbd2cSJim Jagielski 0x0E10, 0x0E11, 0x0E12, 0x0E13, 0x0E14, 0x0E15, 0x0E16, 0x0E17, /* 0xB0 */ 52*b1cdbd2cSJim Jagielski 0x0E18, 0x0E19, 0x0E1A, 0x0E1B, 0x0E1C, 0x0E1D, 0x0E1E, 0x0E1F, /* 0xB0 */ 53*b1cdbd2cSJim Jagielski 0x0E20, 0x0E21, 0x0E22, 0x0E23, 0x0E24, 0x0E25, 0x0E26, 0x0E27, /* 0xC0 */ 54*b1cdbd2cSJim Jagielski 0x0E28, 0x0E29, 0x0E2A, 0x0E2B, 0x0E2C, 0x0E2D, 0x0E2E, 0x0E2F, /* 0xC0 */ 55*b1cdbd2cSJim Jagielski 0x0E30, 0x0E31, 0x0E32, 0x0E33, 0x0E34, 0x0E35, 0x0E36, 0x0E37, /* 0xD0 */ 56*b1cdbd2cSJim Jagielski 0x0E38, 0x0E39, 0x0E3A, 0, 0, 0, 0, 0x0E3F, /* 0xD0 */ 57*b1cdbd2cSJim Jagielski 0x0E40, 0x0E41, 0x0E42, 0x0E43, 0x0E44, 0x0E45, 0x0E46, 0x0E47, /* 0xE0 */ 58*b1cdbd2cSJim Jagielski 0x0E48, 0x0E49, 0x0E4A, 0x0E4B, 0x0E4C, 0x0E4D, 0x0E4E, 0x0E4F, /* 0xE0 */ 59*b1cdbd2cSJim Jagielski 0x0E50, 0x0E51, 0x0E52, 0x0E53, 0x0E54, 0x0E55, 0x0E56, 0x0E57, /* 0xF0 */ 60*b1cdbd2cSJim Jagielski 0x0E58, 0x0E59, 0x0E5A, 0x0E5B /* 0xF0 */ 61*b1cdbd2cSJim Jagielski}; 62*b1cdbd2cSJim Jagielski 63*b1cdbd2cSJim Jagielski/* ----------------------------------------------------------------------- */ 64*b1cdbd2cSJim Jagielski 65*b1cdbd2cSJim Jagielski#define MS874CHAR_START 0x0E01 66*b1cdbd2cSJim Jagielski#define MS874CHAR_END 0x0E5B 67*b1cdbd2cSJim Jagielskistatic sal_uChar const aImplMS874ToCharTab[MS874CHAR_END - MS874CHAR_START + 1] = 68*b1cdbd2cSJim Jagielski{ 69*b1cdbd2cSJim Jagielski/* 0 1 2 3 4 5 6 7 */ 70*b1cdbd2cSJim Jagielski/* 8 9 A B C D E F */ 71*b1cdbd2cSJim Jagielski 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, /* 0x0E00 */ 72*b1cdbd2cSJim Jagielski 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, /* 0x0E00 */ 73*b1cdbd2cSJim Jagielski 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, /* 0x0E10 */ 74*b1cdbd2cSJim Jagielski 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF, /* 0x0E10 */ 75*b1cdbd2cSJim Jagielski 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, /* 0x0E20 */ 76*b1cdbd2cSJim Jagielski 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, /* 0x0E20 */ 77*b1cdbd2cSJim Jagielski 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, /* 0x0E30 */ 78*b1cdbd2cSJim Jagielski 0xD8, 0xD9, 0xDA, 0, 0, 0, 0, 0xDF, /* 0x0E30 */ 79*b1cdbd2cSJim Jagielski 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, /* 0x0E40 */ 80*b1cdbd2cSJim Jagielski 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, /* 0x0E40 */ 81*b1cdbd2cSJim Jagielski 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, /* 0x0E50 */ 82*b1cdbd2cSJim Jagielski 0xF8, 0xF9, 0xFA, 0xFB /* 0x0E50 */ 83*b1cdbd2cSJim Jagielski}; 84*b1cdbd2cSJim Jagielski 85*b1cdbd2cSJim Jagielski/* ----------------------------------------------------------------------- */ 86*b1cdbd2cSJim Jagielski 87*b1cdbd2cSJim Jagielski#define MS874TOCHARTABEX_COUNT 10 88*b1cdbd2cSJim Jagielskistatic ImplUniCharTabData const aImplMS874ToCharTabEx[MS874TOCHARTABEX_COUNT] = 89*b1cdbd2cSJim Jagielski{ 90*b1cdbd2cSJim Jagielski { 0x00A0, 0xA0, 0 }, 91*b1cdbd2cSJim Jagielski { 0x2013, 0x96, 0 }, 92*b1cdbd2cSJim Jagielski { 0x2014, 0x97, 0 }, 93*b1cdbd2cSJim Jagielski { 0x2018, 0x91, 0 }, 94*b1cdbd2cSJim Jagielski { 0x2019, 0x92, 0 }, 95*b1cdbd2cSJim Jagielski { 0x201C, 0x93, 0 }, 96*b1cdbd2cSJim Jagielski { 0x201D, 0x94, 0 }, 97*b1cdbd2cSJim Jagielski { 0x2022, 0x95, 0 }, 98*b1cdbd2cSJim Jagielski { 0x2026, 0x85, 0 }, 99*b1cdbd2cSJim Jagielski { 0x20AC, 0x80, 0 } 100*b1cdbd2cSJim Jagielski}; 101*b1cdbd2cSJim Jagielski 102*b1cdbd2cSJim Jagielski/* ----------------------------------------------------------------------- */ 103*b1cdbd2cSJim Jagielski 104*b1cdbd2cSJim Jagielskistatic ImplByteConvertData const aImplMS874ByteCvtData = 105*b1cdbd2cSJim Jagielski{ 106*b1cdbd2cSJim Jagielski aImplMS874ToUniTab, 107*b1cdbd2cSJim Jagielski NULL, 108*b1cdbd2cSJim Jagielski MS874UNI_START, MS874UNI_END, 109*b1cdbd2cSJim Jagielski NOTABUNI_START, NOTABUNI_END, 110*b1cdbd2cSJim Jagielski aImplMS874ToCharTab, 111*b1cdbd2cSJim Jagielski NULL, 112*b1cdbd2cSJim Jagielski aImplMS874ToCharTabEx, 113*b1cdbd2cSJim Jagielski MS874CHAR_START, MS874CHAR_END, 114*b1cdbd2cSJim Jagielski NOTABCHAR_START, NOTABCHAR_END, 115*b1cdbd2cSJim Jagielski MS874TOCHARTABEX_COUNT 116*b1cdbd2cSJim Jagielski}; 117*b1cdbd2cSJim Jagielski 118*b1cdbd2cSJim Jagielski/* ----------------------------------------------------------------------- */ 119*b1cdbd2cSJim Jagielski 120*b1cdbd2cSJim Jagielskistatic ImplTextEncodingData const aImplMS874TextEncodingData 121*b1cdbd2cSJim Jagielski = { { &aImplMS874ByteCvtData, 122*b1cdbd2cSJim Jagielski ImplCharToUnicode, 123*b1cdbd2cSJim Jagielski ImplUnicodeToChar, 124*b1cdbd2cSJim Jagielski NULL, 125*b1cdbd2cSJim Jagielski NULL, 126*b1cdbd2cSJim Jagielski NULL, 127*b1cdbd2cSJim Jagielski NULL, 128*b1cdbd2cSJim Jagielski NULL, 129*b1cdbd2cSJim Jagielski NULL }, 130*b1cdbd2cSJim Jagielski 1, 131*b1cdbd2cSJim Jagielski 1, 132*b1cdbd2cSJim Jagielski 1, 133*b1cdbd2cSJim Jagielski 222, 134*b1cdbd2cSJim Jagielski "iso8859-1", /* TODO! correct? */ 135*b1cdbd2cSJim Jagielski "windows-874", 136*b1cdbd2cSJim Jagielski RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME }; 137*b1cdbd2cSJim Jagielski /* WIN/DOS/OS2, SCRIPT_THAI, pc code page 874, mac encoding 21 */ 138*b1cdbd2cSJim Jagielski 139*b1cdbd2cSJim Jagielski/* ======================================================================= */ 140*b1cdbd2cSJim Jagielski 141*b1cdbd2cSJim Jagielski/* TIS 620-2533 142*b1cdbd2cSJim Jagielski * 143*b1cdbd2cSJim Jagielski * A good source of information is <http://www.inet.co.th/cyberclub/trin/ 144*b1cdbd2cSJim Jagielski * thairef/index.html> as of 18 Mar 2002. 145*b1cdbd2cSJim Jagielski * 146*b1cdbd2cSJim Jagielski * Single byte encoding, from which MS874 is derived (although it is the other 147*b1cdbd2cSJim Jagielski * way around in this implementation): 148*b1cdbd2cSJim Jagielski * 149*b1cdbd2cSJim Jagielski * 0x00--9F map to U+0000--009F 150*b1cdbd2cSJim Jagielski * 0xA0 is questionable (unassigned or U+00A0 NO BREAK SPACE), to ease 151*b1cdbd2cSJim Jagielski * implementation, it maps to U+00A0 152*b1cdbd2cSJim Jagielski * 0xA1--DA map to U+0E01--0E3A (TIS 620, same for MS874) 153*b1cdbd2cSJim Jagielski * 0xDB--DE are unassigned (TIS 620, same for MS874) 154*b1cdbd2cSJim Jagielski * 0xDF--FB map to U+0E3F--0E5B (TIS 620, same for MS874) 155*b1cdbd2cSJim Jagielski * 0xFC--FF are unassigned (TIS 620, same for MS874) 156*b1cdbd2cSJim Jagielski */ 157*b1cdbd2cSJim Jagielski 158*b1cdbd2cSJim Jagielskistatic ImplByteConvertData const aImplTis620ByteCvtData = 159*b1cdbd2cSJim Jagielski{ 160*b1cdbd2cSJim Jagielski aImplMS874ToUniTab + (0xA0 - MS874UNI_START), 161*b1cdbd2cSJim Jagielski aImpl8090SameToUniTab, 162*b1cdbd2cSJim Jagielski 0xA0, MS874UNI_END, 163*b1cdbd2cSJim Jagielski SAME8090UNI_START, SAME8090UNI_END, 164*b1cdbd2cSJim Jagielski aImplMS874ToCharTab, 165*b1cdbd2cSJim Jagielski aImpl8090SameToCharTab, 166*b1cdbd2cSJim Jagielski aImplMS874ToCharTabEx, 167*b1cdbd2cSJim Jagielski MS874CHAR_START, MS874CHAR_END, 168*b1cdbd2cSJim Jagielski SAME8090CHAR_START, SAME8090CHAR_END, 169*b1cdbd2cSJim Jagielski 1 170*b1cdbd2cSJim Jagielski}; 171*b1cdbd2cSJim Jagielski 172*b1cdbd2cSJim Jagielskistatic ImplTextEncodingData const aImplTis620TextEncodingData 173*b1cdbd2cSJim Jagielski = { { &aImplTis620ByteCvtData, 174*b1cdbd2cSJim Jagielski ImplCharToUnicode, 175*b1cdbd2cSJim Jagielski ImplUnicodeToChar, 176*b1cdbd2cSJim Jagielski NULL, 177*b1cdbd2cSJim Jagielski NULL, 178*b1cdbd2cSJim Jagielski NULL, 179*b1cdbd2cSJim Jagielski NULL, 180*b1cdbd2cSJim Jagielski NULL, 181*b1cdbd2cSJim Jagielski NULL }, 182*b1cdbd2cSJim Jagielski 1, 183*b1cdbd2cSJim Jagielski 1, 184*b1cdbd2cSJim Jagielski 1, 185*b1cdbd2cSJim Jagielski 222, 186*b1cdbd2cSJim Jagielski "iso8859-1", /* TODO! correct? */ 187*b1cdbd2cSJim Jagielski "TIS-620", 188*b1cdbd2cSJim Jagielski RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME }; 189*b1cdbd2cSJim Jagielski 190*b1cdbd2cSJim Jagielski/* ======================================================================= */ 191*b1cdbd2cSJim Jagielski 192*b1cdbd2cSJim Jagielski/* MS-1258 */ 193*b1cdbd2cSJim Jagielski/* Windows Standard CharSet for Vietnamease */ 194*b1cdbd2cSJim Jagielski/* 1-Byte, 0x00-0x7F ASCII ohne Ausnahme */ 195*b1cdbd2cSJim Jagielski/* Convert-Tables: mappings/vendors/micsft/windows/cp1258.txt from 04/15/98 Version 2.01 */ 196*b1cdbd2cSJim Jagielski/* Last-Changes from us: */ 197*b1cdbd2cSJim Jagielski 198*b1cdbd2cSJim Jagielski/* ----------------------------------------------------------------------- */ 199*b1cdbd2cSJim Jagielski 200*b1cdbd2cSJim Jagielski#define MS1258UNI_START 0x80 201*b1cdbd2cSJim Jagielski#define MS1258UNI_END 0xFF 202*b1cdbd2cSJim Jagielskistatic sal_uInt16 const aImplMS1258ToUniTab[MS1258UNI_END - MS1258UNI_START + 1] = 203*b1cdbd2cSJim Jagielski{ 204*b1cdbd2cSJim Jagielski/* 0 1 2 3 4 5 6 7 */ 205*b1cdbd2cSJim Jagielski/* 8 9 A B C D E F */ 206*b1cdbd2cSJim Jagielski 0x20AC, 0, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, /* 0x80 */ 207*b1cdbd2cSJim Jagielski 0x02C6, 0x2030, 0, 0x2039, 0x0152, 0, 0, 0, /* 0x80 */ 208*b1cdbd2cSJim Jagielski 0, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, /* 0x90 */ 209*b1cdbd2cSJim Jagielski 0x02DC, 0x2122, 0, 0x203A, 0x0153, 0, 0, 0x0178, /* 0x90 */ 210*b1cdbd2cSJim Jagielski 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, /* 0xA0 */ 211*b1cdbd2cSJim Jagielski 0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, /* 0xA0 */ 212*b1cdbd2cSJim Jagielski 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, /* 0xB0 */ 213*b1cdbd2cSJim Jagielski 0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, /* 0xB0 */ 214*b1cdbd2cSJim Jagielski 0x00C0, 0x00C1, 0x00C2, 0x0102, 0x00C4, 0x00C5, 0x00C6, 0x00C7, /* 0xC0 */ 215*b1cdbd2cSJim Jagielski 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x0300, 0x00CD, 0x00CE, 0x00CF, /* 0xC0 */ 216*b1cdbd2cSJim Jagielski 0x0110, 0x00D1, 0x0309, 0x00D3, 0x00D4, 0x01A0, 0x00D6, 0x00D7, /* 0xD0 */ 217*b1cdbd2cSJim Jagielski 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x01AF, 0x0303, 0x00DF, /* 0xD0 */ 218*b1cdbd2cSJim Jagielski 0x00E0, 0x00E1, 0x00E2, 0x0103, 0x00E4, 0x00E5, 0x00E6, 0x00E7, /* 0xE0 */ 219*b1cdbd2cSJim Jagielski 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x0301, 0x00ED, 0x00EE, 0x00EF, /* 0xE0 */ 220*b1cdbd2cSJim Jagielski 0x0111, 0x00F1, 0x0323, 0x00F3, 0x00F4, 0x01A1, 0x00F6, 0x00F7, /* 0xF0 */ 221*b1cdbd2cSJim Jagielski 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x01B0, 0x20AB, 0x00FF /* 0xF0 */ 222*b1cdbd2cSJim Jagielski}; 223*b1cdbd2cSJim Jagielski 224*b1cdbd2cSJim Jagielski/* ----------------------------------------------------------------------- */ 225*b1cdbd2cSJim Jagielski 226*b1cdbd2cSJim Jagielski#define MS1258CHAR_START 0x00A0 227*b1cdbd2cSJim Jagielski#define MS1258CHAR_END 0x00FF 228*b1cdbd2cSJim Jagielskistatic sal_uChar const aImplMS1258ToCharTab[MS1258CHAR_END - MS1258CHAR_START + 1] = 229*b1cdbd2cSJim Jagielski{ 230*b1cdbd2cSJim Jagielski/* 0 1 2 3 4 5 6 7 */ 231*b1cdbd2cSJim Jagielski/* 8 9 A B C D E F */ 232*b1cdbd2cSJim Jagielski 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, /* 0x00A0 */ 233*b1cdbd2cSJim Jagielski 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, /* 0x00A0 */ 234*b1cdbd2cSJim Jagielski 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, /* 0x00B0 */ 235*b1cdbd2cSJim Jagielski 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF, /* 0x00B0 */ 236*b1cdbd2cSJim Jagielski 0xC0, 0xC1, 0xC2, 0, 0xC4, 0xC5, 0xC6, 0xC7, /* 0x00C0 */ 237*b1cdbd2cSJim Jagielski 0xC8, 0xC9, 0xCA, 0xCB, 0, 0xCD, 0xCE, 0xCF, /* 0x00C0 */ 238*b1cdbd2cSJim Jagielski 0, 0xD1, 0, 0xD3, 0xD4, 0, 0xD6, 0xD7, /* 0x00D0 */ 239*b1cdbd2cSJim Jagielski 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0, 0, 0xDF, /* 0x00D0 */ 240*b1cdbd2cSJim Jagielski 0xE0, 0xE1, 0xE2, 0, 0xE4, 0xE5, 0xE6, 0xE7, /* 0x00E0 */ 241*b1cdbd2cSJim Jagielski 0xE8, 0xE9, 0xEA, 0xEB, 0, 0xED, 0xEE, 0xEF, /* 0x00E0 */ 242*b1cdbd2cSJim Jagielski 0, 0xF1, 0, 0xF3, 0xF4, 0, 0xF6, 0xF7, /* 0x00F0 */ 243*b1cdbd2cSJim Jagielski 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0, 0, 0xFF /* 0x00F0 */ 244*b1cdbd2cSJim Jagielski}; 245*b1cdbd2cSJim Jagielski 246*b1cdbd2cSJim Jagielski/* ----------------------------------------------------------------------- */ 247*b1cdbd2cSJim Jagielski 248*b1cdbd2cSJim Jagielski/* The list of Vietnamese-relevant precomposed Unicode characters that map to 249*b1cdbd2cSJim Jagielski MS1258 base + combining modifier are derived from the information present at 250*b1cdbd2cSJim Jagielski <http://vietunicode.sourceforge.net/charset/>: */ 251*b1cdbd2cSJim Jagielski#define MS1258TOCHARTABEX_COUNT 141 252*b1cdbd2cSJim Jagielskistatic ImplUniCharTabData const aImplMS1258ToCharTabEx[MS1258TOCHARTABEX_COUNT] = 253*b1cdbd2cSJim Jagielski{ 254*b1cdbd2cSJim Jagielski { 0x00C3, 0x41, 0xDE }, 255*b1cdbd2cSJim Jagielski { 0x00CC, 0x49, 0xCC }, 256*b1cdbd2cSJim Jagielski { 0x00D2, 0x4F, 0xCC }, 257*b1cdbd2cSJim Jagielski { 0x00D5, 0x4F, 0xDE }, 258*b1cdbd2cSJim Jagielski { 0x00DD, 0x59, 0xEC }, 259*b1cdbd2cSJim Jagielski { 0x00E3, 0x61, 0xDE }, 260*b1cdbd2cSJim Jagielski { 0x00EC, 0x69, 0xCC }, 261*b1cdbd2cSJim Jagielski { 0x00F2, 0x6F, 0xCC }, 262*b1cdbd2cSJim Jagielski { 0x00F5, 0x6F, 0xDE }, 263*b1cdbd2cSJim Jagielski { 0x00FD, 0x79, 0xCC }, 264*b1cdbd2cSJim Jagielski { 0x0102, 0xC3, 0 }, 265*b1cdbd2cSJim Jagielski { 0x0103, 0xE3, 0 }, 266*b1cdbd2cSJim Jagielski { 0x0110, 0xD0, 0 }, 267*b1cdbd2cSJim Jagielski { 0x0111, 0xF0, 0 }, 268*b1cdbd2cSJim Jagielski { 0x0128, 0x49, 0xDE }, 269*b1cdbd2cSJim Jagielski { 0x0129, 0x69, 0xDE }, 270*b1cdbd2cSJim Jagielski { 0x0152, 0x8C, 0 }, 271*b1cdbd2cSJim Jagielski { 0x0153, 0x9C, 0 }, 272*b1cdbd2cSJim Jagielski { 0x0168, 0x55, 0xDE }, 273*b1cdbd2cSJim Jagielski { 0x0169, 0x75, 0xDE }, 274*b1cdbd2cSJim Jagielski { 0x0178, 0x9F, 0 }, 275*b1cdbd2cSJim Jagielski { 0x0192, 0x83, 0 }, 276*b1cdbd2cSJim Jagielski { 0x01A0, 0xD5, 0 }, 277*b1cdbd2cSJim Jagielski { 0x01A1, 0xF5, 0 }, 278*b1cdbd2cSJim Jagielski { 0x01AF, 0xDD, 0 }, 279*b1cdbd2cSJim Jagielski { 0x01B0, 0xFD, 0 }, 280*b1cdbd2cSJim Jagielski { 0x02C6, 0x88, 0 }, 281*b1cdbd2cSJim Jagielski { 0x02DC, 0x98, 0 }, 282*b1cdbd2cSJim Jagielski { 0x0300, 0xCC, 0 }, 283*b1cdbd2cSJim Jagielski { 0x0301, 0xEC, 0 }, 284*b1cdbd2cSJim Jagielski { 0x0303, 0xDE, 0 }, 285*b1cdbd2cSJim Jagielski { 0x0309, 0xD2, 0 }, 286*b1cdbd2cSJim Jagielski { 0x0323, 0xF2, 0 }, 287*b1cdbd2cSJim Jagielski { 0x1EA0, 0x41, 0xF2 }, 288*b1cdbd2cSJim Jagielski { 0x1EA1, 0x61, 0xF2 }, 289*b1cdbd2cSJim Jagielski { 0x1EA2, 0x41, 0xD2 }, 290*b1cdbd2cSJim Jagielski { 0x1EA3, 0x61, 0xD2 }, 291*b1cdbd2cSJim Jagielski { 0x1EA4, 0xC2, 0xEC }, 292*b1cdbd2cSJim Jagielski { 0x1EA5, 0xE2, 0xEC }, 293*b1cdbd2cSJim Jagielski { 0x1EA6, 0xC2, 0xCC }, 294*b1cdbd2cSJim Jagielski { 0x1EA7, 0xE2, 0xCC }, 295*b1cdbd2cSJim Jagielski { 0x1EA8, 0xC2, 0xD2 }, 296*b1cdbd2cSJim Jagielski { 0x1EA9, 0xE2, 0xD2 }, 297*b1cdbd2cSJim Jagielski { 0x1EAA, 0xC2, 0xDE }, 298*b1cdbd2cSJim Jagielski { 0x1EAB, 0xE2, 0xDE }, 299*b1cdbd2cSJim Jagielski { 0x1EAC, 0xC2, 0xF2 }, 300*b1cdbd2cSJim Jagielski { 0x1EAD, 0xE2, 0xF2 }, 301*b1cdbd2cSJim Jagielski { 0x1EAE, 0xC3, 0xEC }, 302*b1cdbd2cSJim Jagielski { 0x1EAF, 0xE3, 0xEC }, 303*b1cdbd2cSJim Jagielski { 0x1EB0, 0xC3, 0xCC }, 304*b1cdbd2cSJim Jagielski { 0x1EB1, 0xE3, 0xCC }, 305*b1cdbd2cSJim Jagielski { 0x1EB2, 0xC3, 0xD2 }, 306*b1cdbd2cSJim Jagielski { 0x1EB3, 0xE3, 0xD2 }, 307*b1cdbd2cSJim Jagielski { 0x1EB4, 0xC3, 0xDE }, 308*b1cdbd2cSJim Jagielski { 0x1EB5, 0xE3, 0xDE }, 309*b1cdbd2cSJim Jagielski { 0x1EB6, 0xC3, 0xF2 }, 310*b1cdbd2cSJim Jagielski { 0x1EB7, 0xE3, 0xF2 }, 311*b1cdbd2cSJim Jagielski { 0x1EB8, 0x45, 0xF2 }, 312*b1cdbd2cSJim Jagielski { 0x1EB9, 0x65, 0xF2 }, 313*b1cdbd2cSJim Jagielski { 0x1EBA, 0x45, 0xD2 }, 314*b1cdbd2cSJim Jagielski { 0x1EBB, 0x65, 0xD2 }, 315*b1cdbd2cSJim Jagielski { 0x1EBC, 0x45, 0xDE }, 316*b1cdbd2cSJim Jagielski { 0x1EBD, 0x65, 0xDE }, 317*b1cdbd2cSJim Jagielski { 0x1EBE, 0xCA, 0xEC }, 318*b1cdbd2cSJim Jagielski { 0x1EBF, 0xEA, 0xEC }, 319*b1cdbd2cSJim Jagielski { 0x1EC0, 0xCA, 0xCC }, 320*b1cdbd2cSJim Jagielski { 0x1EC1, 0xEA, 0xCC }, 321*b1cdbd2cSJim Jagielski { 0x1EC2, 0xCA, 0xD2 }, 322*b1cdbd2cSJim Jagielski { 0x1EC3, 0xEA, 0xD2 }, 323*b1cdbd2cSJim Jagielski { 0x1EC4, 0xCA, 0xDE }, 324*b1cdbd2cSJim Jagielski { 0x1EC5, 0xEA, 0xDE }, 325*b1cdbd2cSJim Jagielski { 0x1EC6, 0xCA, 0xF2 }, 326*b1cdbd2cSJim Jagielski { 0x1EC7, 0xEA, 0xF2 }, 327*b1cdbd2cSJim Jagielski { 0x1EC8, 0x49, 0xD2 }, 328*b1cdbd2cSJim Jagielski { 0x1EC9, 0x69, 0xD2 }, 329*b1cdbd2cSJim Jagielski { 0x1ECA, 0x49, 0xF2 }, 330*b1cdbd2cSJim Jagielski { 0x1ECB, 0x69, 0xF2 }, 331*b1cdbd2cSJim Jagielski { 0x1ECC, 0x4F, 0xF2 }, 332*b1cdbd2cSJim Jagielski { 0x1ECD, 0x6F, 0xF2 }, 333*b1cdbd2cSJim Jagielski { 0x1ECE, 0x4F, 0xD2 }, 334*b1cdbd2cSJim Jagielski { 0x1ECF, 0x6F, 0xD2 }, 335*b1cdbd2cSJim Jagielski { 0x1ED0, 0xD4, 0xEC }, 336*b1cdbd2cSJim Jagielski { 0x1ED1, 0xF4, 0xEC }, 337*b1cdbd2cSJim Jagielski { 0x1ED2, 0xD4, 0xCC }, 338*b1cdbd2cSJim Jagielski { 0x1ED3, 0xF4, 0xCC }, 339*b1cdbd2cSJim Jagielski { 0x1ED4, 0xD4, 0xD2 }, 340*b1cdbd2cSJim Jagielski { 0x1ED5, 0xF4, 0xD2 }, 341*b1cdbd2cSJim Jagielski { 0x1ED6, 0xD4, 0xDE }, 342*b1cdbd2cSJim Jagielski { 0x1ED7, 0xF4, 0xDE }, 343*b1cdbd2cSJim Jagielski { 0x1ED8, 0xD4, 0xF2 }, 344*b1cdbd2cSJim Jagielski { 0x1ED9, 0xF4, 0xF2 }, 345*b1cdbd2cSJim Jagielski { 0x1EDA, 0xD5, 0xEC }, 346*b1cdbd2cSJim Jagielski { 0x1EDB, 0xF5, 0xEC }, 347*b1cdbd2cSJim Jagielski { 0x1EDC, 0xD5, 0xCC }, 348*b1cdbd2cSJim Jagielski { 0x1EDD, 0xF5, 0xCC }, 349*b1cdbd2cSJim Jagielski { 0x1EDE, 0xD5, 0xD2 }, 350*b1cdbd2cSJim Jagielski { 0x1EDF, 0xF5, 0xD2 }, 351*b1cdbd2cSJim Jagielski { 0x1EE0, 0xD5, 0xDE }, 352*b1cdbd2cSJim Jagielski { 0x1EE1, 0xF5, 0xDE }, 353*b1cdbd2cSJim Jagielski { 0x1EE2, 0xD5, 0xF2 }, 354*b1cdbd2cSJim Jagielski { 0x1EE3, 0xF5, 0xF2 }, 355*b1cdbd2cSJim Jagielski { 0x1EE4, 0x55, 0xF2 }, 356*b1cdbd2cSJim Jagielski { 0x1EE5, 0x75, 0xF2 }, 357*b1cdbd2cSJim Jagielski { 0x1EE6, 0x55, 0xD2 }, 358*b1cdbd2cSJim Jagielski { 0x1EE7, 0x75, 0xD2 }, 359*b1cdbd2cSJim Jagielski { 0x1EE8, 0xDD, 0xEC }, 360*b1cdbd2cSJim Jagielski { 0x1EE9, 0xFD, 0xEC }, 361*b1cdbd2cSJim Jagielski { 0x1EEA, 0xDD, 0xCC }, 362*b1cdbd2cSJim Jagielski { 0x1EEB, 0xFD, 0xCC }, 363*b1cdbd2cSJim Jagielski { 0x1EEC, 0xDD, 0xD2 }, 364*b1cdbd2cSJim Jagielski { 0x1EED, 0xFD, 0xD2 }, 365*b1cdbd2cSJim Jagielski { 0x1EEE, 0xDD, 0xDE }, 366*b1cdbd2cSJim Jagielski { 0x1EEF, 0xFD, 0xDE }, 367*b1cdbd2cSJim Jagielski { 0x1EF0, 0xDD, 0xF2 }, 368*b1cdbd2cSJim Jagielski { 0x1EF1, 0xFD, 0xF2 }, 369*b1cdbd2cSJim Jagielski { 0x1EF2, 0x59, 0xCC }, 370*b1cdbd2cSJim Jagielski { 0x1EF3, 0x79, 0xCC }, 371*b1cdbd2cSJim Jagielski { 0x1EF4, 0x59, 0xF2 }, 372*b1cdbd2cSJim Jagielski { 0x1EF5, 0x79, 0xF2 }, 373*b1cdbd2cSJim Jagielski { 0x1EF6, 0x59, 0xD2 }, 374*b1cdbd2cSJim Jagielski { 0x1EF7, 0x79, 0xD2 }, 375*b1cdbd2cSJim Jagielski { 0x1EF8, 0x59, 0xDE }, 376*b1cdbd2cSJim Jagielski { 0x1EF9, 0x79, 0xDE }, 377*b1cdbd2cSJim Jagielski { 0x2013, 0x96, 0 }, 378*b1cdbd2cSJim Jagielski { 0x2014, 0x97, 0 }, 379*b1cdbd2cSJim Jagielski { 0x2018, 0x91, 0 }, 380*b1cdbd2cSJim Jagielski { 0x2019, 0x92, 0 }, 381*b1cdbd2cSJim Jagielski { 0x201A, 0x82, 0 }, 382*b1cdbd2cSJim Jagielski { 0x201C, 0x93, 0 }, 383*b1cdbd2cSJim Jagielski { 0x201D, 0x94, 0 }, 384*b1cdbd2cSJim Jagielski { 0x201E, 0x84, 0 }, 385*b1cdbd2cSJim Jagielski { 0x2020, 0x86, 0 }, 386*b1cdbd2cSJim Jagielski { 0x2021, 0x87, 0 }, 387*b1cdbd2cSJim Jagielski { 0x2022, 0x95, 0 }, 388*b1cdbd2cSJim Jagielski { 0x2026, 0x85, 0 }, 389*b1cdbd2cSJim Jagielski { 0x2030, 0x89, 0 }, 390*b1cdbd2cSJim Jagielski { 0x2039, 0x8B, 0 }, 391*b1cdbd2cSJim Jagielski { 0x203A, 0x9B, 0 }, 392*b1cdbd2cSJim Jagielski { 0x20AB, 0xFE, 0 }, 393*b1cdbd2cSJim Jagielski { 0x20AC, 0x80, 0 }, 394*b1cdbd2cSJim Jagielski { 0x2122, 0x99, 0 } 395*b1cdbd2cSJim Jagielski}; 396*b1cdbd2cSJim Jagielski 397*b1cdbd2cSJim Jagielski/* ----------------------------------------------------------------------- */ 398*b1cdbd2cSJim Jagielski 399*b1cdbd2cSJim Jagielskistatic ImplByteConvertData const aImplMS1258ByteCvtData = 400*b1cdbd2cSJim Jagielski{ 401*b1cdbd2cSJim Jagielski aImplMS1258ToUniTab, 402*b1cdbd2cSJim Jagielski NULL, 403*b1cdbd2cSJim Jagielski MS1258UNI_START, MS1258UNI_END, 404*b1cdbd2cSJim Jagielski NOTABUNI_START, NOTABUNI_END, 405*b1cdbd2cSJim Jagielski aImplMS1258ToCharTab, 406*b1cdbd2cSJim Jagielski NULL, 407*b1cdbd2cSJim Jagielski aImplMS1258ToCharTabEx, 408*b1cdbd2cSJim Jagielski MS1258CHAR_START, MS1258CHAR_END, 409*b1cdbd2cSJim Jagielski NOTABCHAR_START, NOTABCHAR_END, 410*b1cdbd2cSJim Jagielski MS1258TOCHARTABEX_COUNT 411*b1cdbd2cSJim Jagielski}; 412*b1cdbd2cSJim Jagielski 413*b1cdbd2cSJim Jagielski/* ----------------------------------------------------------------------- */ 414*b1cdbd2cSJim Jagielski 415*b1cdbd2cSJim Jagielskistatic ImplTextEncodingData const aImplMS1258TextEncodingData 416*b1cdbd2cSJim Jagielski = { { &aImplMS1258ByteCvtData, 417*b1cdbd2cSJim Jagielski ImplCharToUnicode, 418*b1cdbd2cSJim Jagielski ImplUnicodeToChar, 419*b1cdbd2cSJim Jagielski NULL, 420*b1cdbd2cSJim Jagielski NULL, 421*b1cdbd2cSJim Jagielski NULL, 422*b1cdbd2cSJim Jagielski NULL, 423*b1cdbd2cSJim Jagielski NULL, 424*b1cdbd2cSJim Jagielski NULL }, 425*b1cdbd2cSJim Jagielski 1, 426*b1cdbd2cSJim Jagielski 2, 427*b1cdbd2cSJim Jagielski 1, 428*b1cdbd2cSJim Jagielski 163, 429*b1cdbd2cSJim Jagielski "iso8859-1", /* TODO! correct? */ 430*b1cdbd2cSJim Jagielski "windows-1258", 431*b1cdbd2cSJim Jagielski RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME }; 432*b1cdbd2cSJim Jagielski /* WIN, SCRIPT_VIETNAMESE, mac encoding 30 */ 433