Update ooo320-m1
[ooovba.git] / sal / qa / rtl / textenc / rtl_textcvt.cxx
blob2e192ead9b99a4b84e6b03ceb081fe096e28c3b3
1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: rtl_textcvt.cxx,v $
10 * $Revision: 1.12 $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
31 // MARKER(update_precomp.py): autogen include statement, do not remove
32 #include "precompiled_sal.hxx"
34 #include "sal/config.h"
36 #include <cstddef>
37 #include <cstring>
39 #include "cppunit/simpleheader.hxx"
40 #include "rtl/string.hxx"
41 #include "rtl/tencinfo.h"
42 #include "rtl/textcvt.h"
43 #include "rtl/textenc.h"
44 #include "sal/types.h"
46 namespace {
48 struct SingleByteCharSet {
49 rtl_TextEncoding m_nEncoding;
50 sal_Unicode m_aMap[256];
53 void testSingleByteCharSet(SingleByteCharSet const & rSet) {
54 sal_Char aText[256];
55 sal_Unicode aUnicode[256];
56 sal_Size nNumber = 0;
57 for (int i = 0; i < 256; ++i) {
58 if (rSet.m_aMap[i] != 0xFFFF) {
59 aText[nNumber++] = static_cast< sal_Char >(i);
63 rtl_TextToUnicodeConverter aConverter
64 = rtl_createTextToUnicodeConverter(rSet.m_nEncoding);
65 rtl_TextToUnicodeContext aContext
66 = rtl_createTextToUnicodeContext(aConverter);
67 CPPUNIT_ASSERT_MESSAGE("failure #1", aConverter && aContext);
68 sal_Size nSize;
69 sal_uInt32 nInfo;
70 sal_Size nConverted;
71 nSize = rtl_convertTextToUnicode(
72 aConverter, aContext, aText, nNumber, aUnicode, nNumber,
73 (RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_ERROR
74 | RTL_TEXTTOUNICODE_FLAGS_MBUNDEFINED_ERROR
75 | RTL_TEXTTOUNICODE_FLAGS_INVALID_ERROR),
76 &nInfo, &nConverted);
77 CPPUNIT_ASSERT_MESSAGE(
78 "failure #2",
79 nSize == nNumber && nInfo == 0 && nConverted == nNumber);
80 rtl_destroyTextToUnicodeContext(aConverter, aContext);
81 rtl_destroyTextToUnicodeConverter(aConverter);
84 bool bSuccess = true;
85 int j = 0;
86 for (int i = 0; i < 256; ++i) {
87 if (rSet.m_aMap[i] != 0xFFFF && aUnicode[j++] != rSet.m_aMap[i]) {
88 bSuccess = false;
89 break;
92 CPPUNIT_ASSERT_MESSAGE("failure #3", bSuccess);
94 if (rSet.m_nEncoding == RTL_TEXTENCODING_ASCII_US) {
95 nNumber = 128;
98 rtl_UnicodeToTextConverter aConverter
99 = rtl_createUnicodeToTextConverter(rSet.m_nEncoding);
100 rtl_UnicodeToTextContext aContext
101 = rtl_createUnicodeToTextContext(aConverter);
102 CPPUNIT_ASSERT_MESSAGE("failure #4", aConverter && aContext);
103 sal_Size nSize;
104 sal_uInt32 nInfo;
105 sal_Size nConverted;
106 nSize = rtl_convertUnicodeToText(
107 aConverter, aContext, aUnicode, nNumber, aText, nNumber,
108 (RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR
109 | RTL_UNICODETOTEXT_FLAGS_INVALID_ERROR),
110 &nInfo, &nConverted);
111 CPPUNIT_ASSERT_MESSAGE(
112 "failure #5",
113 nSize == nNumber && nInfo == 0 && nConverted == nNumber);
114 rtl_destroyUnicodeToTextContext(aConverter, aContext);
115 rtl_destroyUnicodeToTextConverter(aConverter);
118 bool bSuccess = true;
119 int j = 0;
120 for (int i = 0; i < 256; ++i) {
121 if (rSet.m_aMap[i] != 0xFFFF
122 && aText[j++] != static_cast< sal_Char >(i))
124 bSuccess = false;
125 break;
128 CPPUNIT_ASSERT_MESSAGE("failure #6", bSuccess);
130 for (int i = 0; i < 256; ++i) {
131 if (rSet.m_aMap[i] == 0xFFFF) {
132 aText[0] = static_cast< sal_Char >(i);
133 rtl_TextToUnicodeConverter aConverter
134 = rtl_createTextToUnicodeConverter(rSet.m_nEncoding);
135 rtl_TextToUnicodeContext aContext
136 = rtl_createTextToUnicodeContext(aConverter);
137 CPPUNIT_ASSERT_MESSAGE("failure #7", aConverter && aContext);
138 sal_Size nSize;
139 sal_uInt32 nInfo;
140 sal_Size nConverted;
141 nSize = rtl_convertTextToUnicode(
142 aConverter, aContext, aText, 1, aUnicode, 1,
143 (RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_ERROR
144 | RTL_TEXTTOUNICODE_FLAGS_MBUNDEFINED_ERROR
145 | RTL_TEXTTOUNICODE_FLAGS_INVALID_ERROR),
146 &nInfo, &nConverted);
147 CPPUNIT_ASSERT_MESSAGE(
148 "failure #9",
149 (nSize == 0
150 && (nInfo
151 == (RTL_TEXTTOUNICODE_INFO_ERROR
152 | RTL_TEXTTOUNICODE_INFO_UNDEFINED))
153 && nConverted == 0));
154 rtl_destroyTextToUnicodeContext(aConverter, aContext);
155 rtl_destroyTextToUnicodeConverter(aConverter);
160 int const TEST_STRING_SIZE = 1000;
162 struct ComplexCharSetTest {
163 rtl_TextEncoding m_nEncoding;
164 char const * m_pText;
165 sal_Size m_nTextSize;
166 sal_Unicode m_aUnicode[TEST_STRING_SIZE];
167 sal_Size m_nUnicodeSize;
168 bool m_bNoContext;
169 bool m_bForward;
170 bool m_bReverse;
171 bool m_bGlobalSignature;
172 sal_uInt32 m_nReverseUndefined;
175 void doComplexCharSetTest(ComplexCharSetTest const & rTest) {
176 if (rTest.m_bForward) {
177 sal_Unicode aUnicode[TEST_STRING_SIZE];
178 rtl_TextToUnicodeConverter aConverter
179 = rtl_createTextToUnicodeConverter(rTest.m_nEncoding);
180 rtl_TextToUnicodeContext aContext
181 = rtl_createTextToUnicodeContext(aConverter);
182 CPPUNIT_ASSERT_MESSAGE("failure #10", aConverter && aContext);
183 sal_Size nSize;
184 sal_uInt32 nInfo;
185 sal_Size nConverted;
186 nSize = rtl_convertTextToUnicode(
187 aConverter, aContext,
188 reinterpret_cast< sal_Char const * >(rTest.m_pText),
189 rTest.m_nTextSize, aUnicode, TEST_STRING_SIZE,
190 (RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_ERROR
191 | RTL_TEXTTOUNICODE_FLAGS_MBUNDEFINED_ERROR
192 | RTL_TEXTTOUNICODE_FLAGS_INVALID_ERROR
193 | RTL_TEXTTOUNICODE_FLAGS_FLUSH
194 | (rTest.m_bGlobalSignature ?
195 RTL_TEXTTOUNICODE_FLAGS_GLOBAL_SIGNATURE : 0)),
196 &nInfo, &nConverted);
197 CPPUNIT_ASSERT_MESSAGE(
198 "failure #11",
199 (nSize == rTest.m_nUnicodeSize && nInfo == 0
200 && nConverted == rTest.m_nTextSize));
201 rtl_destroyTextToUnicodeContext(aConverter, aContext);
202 rtl_destroyTextToUnicodeConverter(aConverter);
203 bool bSuccess = true;
204 for (sal_Size i = 0; i < rTest.m_nUnicodeSize; ++i) {
205 if (aUnicode[i] != rTest.m_aUnicode[i]) {
206 bSuccess = false;
207 break;
210 CPPUNIT_ASSERT_MESSAGE("failure #12", bSuccess);
212 if (rTest.m_bForward) {
213 sal_Unicode aUnicode[TEST_STRING_SIZE];
214 rtl_TextToUnicodeConverter aConverter
215 = rtl_createTextToUnicodeConverter(rTest.m_nEncoding);
216 rtl_TextToUnicodeContext aContext
217 = rtl_createTextToUnicodeContext(aConverter);
218 CPPUNIT_ASSERT_MESSAGE("failure #13", aConverter && aContext);
219 if (aContext != (rtl_TextToUnicodeContext) 1) {
220 sal_Size nInput = 0;
221 sal_Size nOutput = 0;
222 for (bool bFlush = true; nInput < rTest.m_nTextSize || bFlush;) {
223 sal_Size nSrcBytes = 1;
224 sal_uInt32 nFlags
225 = (RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_ERROR
226 | RTL_TEXTTOUNICODE_FLAGS_MBUNDEFINED_ERROR
227 | RTL_TEXTTOUNICODE_FLAGS_INVALID_ERROR
228 | (rTest.m_bGlobalSignature ?
229 RTL_TEXTTOUNICODE_FLAGS_GLOBAL_SIGNATURE : 0));
230 if (nInput >= rTest.m_nTextSize) {
231 nSrcBytes = 0;
232 nFlags |= RTL_TEXTTOUNICODE_FLAGS_FLUSH;
233 bFlush = false;
235 sal_uInt32 nInfo;
236 sal_Size nConverted;
237 sal_Size nSize = rtl_convertTextToUnicode(
238 aConverter, aContext,
239 reinterpret_cast< sal_Char const * >(rTest.m_pText + nInput),
240 nSrcBytes, aUnicode + nOutput, TEST_STRING_SIZE - nOutput,
241 nFlags, &nInfo, &nConverted);
242 nOutput += nSize;
243 nInput += nConverted;
244 CPPUNIT_ASSERT_MESSAGE(
245 "failure #14",
246 (nInfo & ~RTL_TEXTTOUNICODE_INFO_SRCBUFFERTOSMALL) == 0);
248 CPPUNIT_ASSERT_MESSAGE(
249 "failure #15",
250 nOutput == rTest.m_nUnicodeSize && nInput == rTest.m_nTextSize);
251 bool bSuccess = true;
252 for (sal_Size i = 0; i < rTest.m_nUnicodeSize; ++i) {
253 if (aUnicode[i] != rTest.m_aUnicode[i]) {
254 bSuccess = false;
255 break;
258 CPPUNIT_ASSERT_MESSAGE("failure #16", bSuccess);
260 rtl_destroyTextToUnicodeContext(aConverter, aContext);
261 rtl_destroyTextToUnicodeConverter(aConverter);
263 if (rTest.m_bNoContext && rTest.m_bForward) {
264 sal_Unicode aUnicode[TEST_STRING_SIZE];
265 int nSize = 0;
266 rtl_TextToUnicodeConverter aConverter
267 = rtl_createTextToUnicodeConverter(rTest.m_nEncoding);
268 CPPUNIT_ASSERT_MESSAGE("failure #17", aConverter);
269 for (sal_Size i = 0;;) {
270 if (i == rTest.m_nTextSize) {
271 goto done;
273 sal_Char c1 = rTest.m_pText[i++];
274 sal_Unicode aUC[2];
275 sal_uInt32 nInfo = 0;
276 sal_Size nCvtBytes;
277 sal_Size nChars = rtl_convertTextToUnicode(
278 aConverter, 0, &c1, 1, aUC, 2,
279 (RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_ERROR
280 | RTL_TEXTTOUNICODE_FLAGS_MBUNDEFINED_ERROR
281 | RTL_TEXTTOUNICODE_FLAGS_INVALID_ERROR
282 | (rTest.m_bGlobalSignature ?
283 RTL_TEXTTOUNICODE_FLAGS_GLOBAL_SIGNATURE : 0)),
284 &nInfo, &nCvtBytes);
285 if ((nInfo & RTL_TEXTTOUNICODE_INFO_SRCBUFFERTOSMALL) != 0) {
286 sal_Char sBuffer[10];
287 sBuffer[0] = c1;
288 sal_uInt16 nLen = 1;
289 while ((nInfo & RTL_TEXTTOUNICODE_INFO_SRCBUFFERTOSMALL) != 0
290 && nLen < 10)
292 if (i == rTest.m_nTextSize) {
293 goto done;
295 c1 = rTest.m_pText[i++];
296 sBuffer[nLen++] = c1;
297 nChars = rtl_convertTextToUnicode(
298 aConverter, 0, sBuffer, nLen, aUC, 2,
299 (RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_ERROR
300 | RTL_TEXTTOUNICODE_FLAGS_MBUNDEFINED_ERROR
301 | RTL_TEXTTOUNICODE_FLAGS_INVALID_ERROR
302 | (rTest.m_bGlobalSignature ?
303 RTL_TEXTTOUNICODE_FLAGS_GLOBAL_SIGNATURE : 0)),
304 &nInfo, &nCvtBytes);
306 if (nChars == 1 && nInfo == 0) {
307 OSL_ASSERT(nCvtBytes == nLen);
308 aUnicode[nSize++] = aUC[0];
309 } else if (nChars == 2 && nInfo == 0) {
310 OSL_ASSERT(nCvtBytes == nLen);
311 aUnicode[nSize++] = aUC[0];
312 aUnicode[nSize++] = aUC[1];
313 } else {
314 OSL_ASSERT(
315 (nInfo & RTL_TEXTTOUNICODE_INFO_SRCBUFFERTOSMALL) == 0
316 && nChars == 0 && nInfo != 0);
317 aUnicode[nSize++] = sBuffer[0];
318 i -= nLen - 1;
320 } else if (nChars == 1 && nInfo == 0) {
321 OSL_ASSERT(nCvtBytes == 1);
322 aUnicode[nSize++] = aUC[0];
323 } else if (nChars == 2 && nInfo == 0) {
324 OSL_ASSERT(nCvtBytes == 1);
325 aUnicode[nSize++] = aUC[0];
326 aUnicode[nSize++] = aUC[1];
327 } else {
328 OSL_ASSERT(nChars == 0 && nInfo != 0);
329 aUnicode[nSize++] = c1;
332 done:
333 rtl_destroyTextToUnicodeConverter(aConverter);
334 bool bSuccess = true;
335 for (sal_Size i = 0; i < rTest.m_nUnicodeSize; ++i) {
336 if (aUnicode[i] != rTest.m_aUnicode[i]) {
337 bSuccess = false;
338 break;
341 CPPUNIT_ASSERT_MESSAGE("failure #18", bSuccess);
343 if (rTest.m_bReverse) {
344 sal_Char aText[TEST_STRING_SIZE];
345 rtl_UnicodeToTextConverter aConverter
346 = rtl_createUnicodeToTextConverter(rTest.m_nEncoding);
347 rtl_UnicodeToTextContext aContext
348 = rtl_createUnicodeToTextContext(aConverter);
349 CPPUNIT_ASSERT_MESSAGE("failure #19", aConverter && aContext);
350 sal_Size nSize;
351 sal_uInt32 nInfo;
352 sal_Size nConverted;
353 nSize = rtl_convertUnicodeToText(
354 aConverter, aContext, rTest.m_aUnicode, rTest.m_nUnicodeSize, aText,
355 TEST_STRING_SIZE,
356 (rTest.m_nReverseUndefined | RTL_UNICODETOTEXT_FLAGS_INVALID_ERROR
357 | RTL_UNICODETOTEXT_FLAGS_FLUSH
358 | (rTest.m_bGlobalSignature ?
359 RTL_UNICODETOTEXT_FLAGS_GLOBAL_SIGNATURE : 0)),
360 &nInfo, &nConverted);
361 CPPUNIT_ASSERT_MESSAGE(
362 "failure #20",
363 (nSize == rTest.m_nTextSize
364 && (nInfo == 0
365 || (nInfo == RTL_UNICODETOTEXT_INFO_UNDEFINED
366 && (rTest.m_nReverseUndefined
367 != RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR)))
368 && nConverted == rTest.m_nUnicodeSize));
369 rtl_destroyUnicodeToTextContext(aConverter, aContext);
370 rtl_destroyUnicodeToTextConverter(aConverter);
371 bool bSuccess = true;
372 for (sal_Size i = 0; i < rTest.m_nTextSize; ++i) {
373 if (aText[i] != rTest.m_pText[i]) {
374 bSuccess = false;
375 break;
378 CPPUNIT_ASSERT_MESSAGE("failure #21", bSuccess);
382 void doComplexCharSetCutTest(ComplexCharSetTest const & rTest) {
383 if (rTest.m_bNoContext) {
384 sal_Unicode aUnicode[TEST_STRING_SIZE];
385 rtl_TextToUnicodeConverter aConverter
386 = rtl_createTextToUnicodeConverter(rTest.m_nEncoding);
387 CPPUNIT_ASSERT_MESSAGE("failure #22", aConverter);
388 sal_Size nSize;
389 sal_uInt32 nInfo;
390 sal_Size nConverted;
391 nSize = rtl_convertTextToUnicode(
392 aConverter, 0, reinterpret_cast< sal_Char const * >(rTest.m_pText),
393 rTest.m_nTextSize, aUnicode, TEST_STRING_SIZE,
394 (RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_ERROR
395 | RTL_TEXTTOUNICODE_FLAGS_MBUNDEFINED_ERROR
396 | RTL_TEXTTOUNICODE_FLAGS_INVALID_ERROR),
397 &nInfo, &nConverted);
398 CPPUNIT_ASSERT_MESSAGE(
399 "failure #23",
400 (nSize <= rTest.m_nUnicodeSize
401 && (nInfo == RTL_TEXTTOUNICODE_INFO_SRCBUFFERTOSMALL
402 || (nInfo
403 == (RTL_TEXTTOUNICODE_INFO_ERROR
404 | RTL_TEXTTOUNICODE_INFO_SRCBUFFERTOSMALL)))
405 && nConverted < rTest.m_nTextSize));
406 rtl_destroyTextToUnicodeConverter(aConverter);
407 bool bSuccess = true;
408 for (sal_Size i = 0; i < nSize; ++i) {
409 if (aUnicode[i] != rTest.m_aUnicode[i]) {
410 bSuccess = false;
411 break;
414 CPPUNIT_ASSERT_MESSAGE("failure #24", bSuccess);
418 class Test: public CppUnit::TestFixture {
419 public:
420 void testSingleByte();
422 void testComplex();
424 void testComplexCut();
426 void testSRCBUFFERTOSMALL();
428 void testMime();
430 void testWindows();
432 void testInfo();
434 CPPUNIT_TEST_SUITE(Test);
435 CPPUNIT_TEST(testSingleByte);
436 CPPUNIT_TEST(testComplex);
437 CPPUNIT_TEST(testComplexCut);
438 CPPUNIT_TEST(testSRCBUFFERTOSMALL);
439 CPPUNIT_TEST(testMime);
440 CPPUNIT_TEST(testWindows);
441 CPPUNIT_TEST(testInfo);
442 CPPUNIT_TEST_SUITE_END();
445 void Test::testSingleByte() {
446 static SingleByteCharSet const data[]
447 = { { RTL_TEXTENCODING_MS_1250,
448 { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
449 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
450 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
451 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F,
452 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
453 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
454 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
455 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
456 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
457 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
458 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
459 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
460 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
461 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
462 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
463 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
464 0x20AC,0xFFFF,0x201A,0xFFFF,0x201E,0x2026,0x2020,0x2021,
465 0xFFFF,0x2030,0x0160,0x2039,0x015A,0x0164,0x017D,0x0179,
466 0xFFFF,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014,
467 0xFFFF,0x2122,0x0161,0x203A,0x015B,0x0165,0x017E,0x017A,
468 0x00A0,0x02C7,0x02D8,0x0141,0x00A4,0x0104,0x00A6,0x00A7,
469 0x00A8,0x00A9,0x015E,0x00AB,0x00AC,0x00AD,0x00AE,0x017B,
470 0x00B0,0x00B1,0x02DB,0x0142,0x00B4,0x00B5,0x00B6,0x00B7,
471 0x00B8,0x0105,0x015F,0x00BB,0x013D,0x02DD,0x013E,0x017C,
472 0x0154,0x00C1,0x00C2,0x0102,0x00C4,0x0139,0x0106,0x00C7,
473 0x010C,0x00C9,0x0118,0x00CB,0x011A,0x00CD,0x00CE,0x010E,
474 0x0110,0x0143,0x0147,0x00D3,0x00D4,0x0150,0x00D6,0x00D7,
475 0x0158,0x016E,0x00DA,0x0170,0x00DC,0x00DD,0x0162,0x00DF,
476 0x0155,0x00E1,0x00E2,0x0103,0x00E4,0x013A,0x0107,0x00E7,
477 0x010D,0x00E9,0x0119,0x00EB,0x011B,0x00ED,0x00EE,0x010F,
478 0x0111,0x0144,0x0148,0x00F3,0x00F4,0x0151,0x00F6,0x00F7,
479 0x0159,0x016F,0x00FA,0x0171,0x00FC,0x00FD,0x0163,0x02D9 } },
480 { RTL_TEXTENCODING_MS_1251,
481 { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
482 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
483 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
484 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F,
485 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
486 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
487 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
488 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
489 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
490 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
491 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
492 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
493 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
494 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
495 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
496 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
497 0x0402,0x0403,0x201A,0x0453,0x201E,0x2026,0x2020,0x2021,
498 0x20AC,0x2030,0x0409,0x2039,0x040A,0x040C,0x040B,0x040F,
499 0x0452,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014,
500 0xFFFF,0x2122,0x0459,0x203A,0x045A,0x045C,0x045B,0x045F,
501 0x00A0,0x040E,0x045E,0x0408,0x00A4,0x0490,0x00A6,0x00A7,
502 0x0401,0x00A9,0x0404,0x00AB,0x00AC,0x00AD,0x00AE,0x0407,
503 0x00B0,0x00B1,0x0406,0x0456,0x0491,0x00B5,0x00B6,0x00B7,
504 0x0451,0x2116,0x0454,0x00BB,0x0458,0x0405,0x0455,0x0457,
505 0x0410,0x0411,0x0412,0x0413,0x0414,0x0415,0x0416,0x0417,
506 0x0418,0x0419,0x041A,0x041B,0x041C,0x041D,0x041E,0x041F,
507 0x0420,0x0421,0x0422,0x0423,0x0424,0x0425,0x0426,0x0427,
508 0x0428,0x0429,0x042A,0x042B,0x042C,0x042D,0x042E,0x042F,
509 0x0430,0x0431,0x0432,0x0433,0x0434,0x0435,0x0436,0x0437,
510 0x0438,0x0439,0x043A,0x043B,0x043C,0x043D,0x043E,0x043F,
511 0x0440,0x0441,0x0442,0x0443,0x0444,0x0445,0x0446,0x0447,
512 0x0448,0x0449,0x044A,0x044B,0x044C,0x044D,0x044E,0x044F } },
513 { RTL_TEXTENCODING_MS_1252,
514 { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
515 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
516 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
517 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F,
518 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
519 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
520 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
521 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
522 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
523 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
524 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
525 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
526 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
527 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
528 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
529 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
530 0x20AC,0xFFFF,0x201A,0x0192,0x201E,0x2026,0x2020,0x2021,
531 0x02C6,0x2030,0x0160,0x2039,0x0152,0xFFFF,0x017D,0xFFFF,
532 0xFFFF,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014,
533 0x02DC,0x2122,0x0161,0x203A,0x0153,0xFFFF,0x017E,0x0178,
534 0x00A0,0x00A1,0x00A2,0x00A3,0x00A4,0x00A5,0x00A6,0x00A7,
535 0x00A8,0x00A9,0x00AA,0x00AB,0x00AC,0x00AD,0x00AE,0x00AF,
536 0x00B0,0x00B1,0x00B2,0x00B3,0x00B4,0x00B5,0x00B6,0x00B7,
537 0x00B8,0x00B9,0x00BA,0x00BB,0x00BC,0x00BD,0x00BE,0x00BF,
538 0x00C0,0x00C1,0x00C2,0x00C3,0x00C4,0x00C5,0x00C6,0x00C7,
539 0x00C8,0x00C9,0x00CA,0x00CB,0x00CC,0x00CD,0x00CE,0x00CF,
540 0x00D0,0x00D1,0x00D2,0x00D3,0x00D4,0x00D5,0x00D6,0x00D7,
541 0x00D8,0x00D9,0x00DA,0x00DB,0x00DC,0x00DD,0x00DE,0x00DF,
542 0x00E0,0x00E1,0x00E2,0x00E3,0x00E4,0x00E5,0x00E6,0x00E7,
543 0x00E8,0x00E9,0x00EA,0x00EB,0x00EC,0x00ED,0x00EE,0x00EF,
544 0x00F0,0x00F1,0x00F2,0x00F3,0x00F4,0x00F5,0x00F6,0x00F7,
545 0x00F8,0x00F9,0x00FA,0x00FB,0x00FC,0x00FD,0x00FE,0x00FF } },
546 { RTL_TEXTENCODING_MS_1253,
547 { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
548 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
549 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
550 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F,
551 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
552 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
553 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
554 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
555 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
556 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
557 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
558 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
559 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
560 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
561 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
562 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
563 0x20AC,0xFFFF,0x201A,0x0192,0x201E,0x2026,0x2020,0x2021,
564 0xFFFF,0x2030,0xFFFF,0x2039,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
565 0xFFFF,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014,
566 0xFFFF,0x2122,0xFFFF,0x203A,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
567 0x00A0,0x0385,0x0386,0x00A3,0x00A4,0x00A5,0x00A6,0x00A7,
568 0x00A8,0x00A9,0xFFFF,0x00AB,0x00AC,0x00AD,0x00AE,0x2015,
569 0x00B0,0x00B1,0x00B2,0x00B3,0x0384,0x00B5,0x00B6,0x00B7,
570 0x0388,0x0389,0x038A,0x00BB,0x038C,0x00BD,0x038E,0x038F,
571 0x0390,0x0391,0x0392,0x0393,0x0394,0x0395,0x0396,0x0397,
572 0x0398,0x0399,0x039A,0x039B,0x039C,0x039D,0x039E,0x039F,
573 0x03A0,0x03A1,0xFFFF,0x03A3,0x03A4,0x03A5,0x03A6,0x03A7,
574 0x03A8,0x03A9,0x03AA,0x03AB,0x03AC,0x03AD,0x03AE,0x03AF,
575 0x03B0,0x03B1,0x03B2,0x03B3,0x03B4,0x03B5,0x03B6,0x03B7,
576 0x03B8,0x03B9,0x03BA,0x03BB,0x03BC,0x03BD,0x03BE,0x03BF,
577 0x03C0,0x03C1,0x03C2,0x03C3,0x03C4,0x03C5,0x03C6,0x03C7,
578 0x03C8,0x03C9,0x03CA,0x03CB,0x03CC,0x03CD,0x03CE,0xFFFF } },
579 { RTL_TEXTENCODING_MS_1254,
580 { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
581 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
582 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
583 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F,
584 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
585 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
586 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
587 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
588 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
589 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
590 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
591 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
592 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
593 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
594 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
595 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
596 0x20AC,0xFFFF,0x201A,0x0192,0x201E,0x2026,0x2020,0x2021,
597 0x02C6,0x2030,0x0160,0x2039,0x0152,0xFFFF,0xFFFF,0xFFFF,
598 0xFFFF,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014,
599 0x02DC,0x2122,0x0161,0x203A,0x0153,0xFFFF,0xFFFF,0x0178,
600 0x00A0,0x00A1,0x00A2,0x00A3,0x00A4,0x00A5,0x00A6,0x00A7,
601 0x00A8,0x00A9,0x00AA,0x00AB,0x00AC,0x00AD,0x00AE,0x00AF,
602 0x00B0,0x00B1,0x00B2,0x00B3,0x00B4,0x00B5,0x00B6,0x00B7,
603 0x00B8,0x00B9,0x00BA,0x00BB,0x00BC,0x00BD,0x00BE,0x00BF,
604 0x00C0,0x00C1,0x00C2,0x00C3,0x00C4,0x00C5,0x00C6,0x00C7,
605 0x00C8,0x00C9,0x00CA,0x00CB,0x00CC,0x00CD,0x00CE,0x00CF,
606 0x011E,0x00D1,0x00D2,0x00D3,0x00D4,0x00D5,0x00D6,0x00D7,
607 0x00D8,0x00D9,0x00DA,0x00DB,0x00DC,0x0130,0x015E,0x00DF,
608 0x00E0,0x00E1,0x00E2,0x00E3,0x00E4,0x00E5,0x00E6,0x00E7,
609 0x00E8,0x00E9,0x00EA,0x00EB,0x00EC,0x00ED,0x00EE,0x00EF,
610 0x011F,0x00F1,0x00F2,0x00F3,0x00F4,0x00F5,0x00F6,0x00F7,
611 0x00F8,0x00F9,0x00FA,0x00FB,0x00FC,0x0131,0x015F,0x00FF } },
612 { RTL_TEXTENCODING_APPLE_ROMAN,
613 { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
614 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
615 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
616 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F,
617 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
618 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
619 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
620 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
621 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
622 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
623 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
624 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
625 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
626 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
627 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
628 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E, 0x7F,
629 0x00C4,0x00C5,0x00C7,0x00C9,0x00D1,0x00D6,0x00DC,0x00E1,
630 0x00E0,0x00E2,0x00E4,0x00E3,0x00E5,0x00E7,0x00E9,0x00E8,
631 0x00EA,0x00EB,0x00ED,0x00EC,0x00EE,0x00EF,0x00F1,0x00F3,
632 0x00F2,0x00F4,0x00F6,0x00F5,0x00FA,0x00F9,0x00FB,0x00FC,
633 0x2020,0x00B0,0x00A2,0x00A3,0x00A7,0x2022,0x00B6,0x00DF,
634 0x00AE,0x00A9,0x2122,0x00B4,0x00A8,0x2260,0x00C6,0x00D8,
635 0x221E,0x00B1,0x2264,0x2265,0x00A5,0x00B5,0x2202,0x2211,
636 0x220F,0x03C0,0x222B,0x00AA,0x00BA,0x03A9,0x00E6,0x00F8,
637 0x00BF,0x00A1,0x00AC,0x221A,0x0192,0x2248,0x2206,0x00AB,
638 0x00BB,0x2026,0x00A0,0x00C0,0x00C3,0x00D5,0x0152,0x0153,
639 0x2013,0x2014,0x201C,0x201D,0x2018,0x2019,0x00F7,0x25CA,
640 0x00FF,0x0178,0x2044,0x20AC,0x2039,0x203A,0xFB01,0xFB02,
641 0x2021,0x00B7,0x201A,0x201E,0x2030,0x00C2,0x00CA,0x00C1,
642 0x00CB,0x00C8,0x00CD,0x00CE,0x00CF,0x00CC,0x00D3,0x00D4,
643 0xF8FF,0x00D2,0x00DA,0x00DB,0x00D9,0x0131,0x02C6,0x02DC,
644 0x00AF,0x02D8,0x02D9,0x02DA,0x00B8,0x02DD,0x02DB,0x02C7 } },
645 { RTL_TEXTENCODING_IBM_437,
646 { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
647 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
648 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
649 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F,
650 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
651 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
652 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
653 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
654 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
655 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
656 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
657 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
658 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
659 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
660 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
661 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
662 0x00c7,0x00fc,0x00e9,0x00e2,0x00e4,0x00e0,0x00e5,0x00e7,
663 0x00ea,0x00eb,0x00e8,0x00ef,0x00ee,0x00ec,0x00c4,0x00c5,
664 0x00c9,0x00e6,0x00c6,0x00f4,0x00f6,0x00f2,0x00fb,0x00f9,
665 0x00ff,0x00d6,0x00dc,0x00a2,0x00a3,0x00a5,0x20a7,0x0192,
666 0x00e1,0x00ed,0x00f3,0x00fa,0x00f1,0x00d1,0x00aa,0x00ba,
667 0x00bf,0x2310,0x00ac,0x00bd,0x00bc,0x00a1,0x00ab,0x00bb,
668 0x2591,0x2592,0x2593,0x2502,0x2524,0x2561,0x2562,0x2556,
669 0x2555,0x2563,0x2551,0x2557,0x255d,0x255c,0x255b,0x2510,
670 0x2514,0x2534,0x252c,0x251c,0x2500,0x253c,0x255e,0x255f,
671 0x255a,0x2554,0x2569,0x2566,0x2560,0x2550,0x256c,0x2567,
672 0x2568,0x2564,0x2565,0x2559,0x2558,0x2552,0x2553,0x256b,
673 0x256a,0x2518,0x250c,0x2588,0x2584,0x258c,0x2590,0x2580,
674 0x03b1,0x00df,0x0393,0x03c0,0x03a3,0x03c3,0x00b5,0x03c4,
675 0x03a6,0x0398,0x03a9,0x03b4,0x221e,0x03c6,0x03b5,0x2229,
676 0x2261,0x00b1,0x2265,0x2264,0x2320,0x2321,0x00f7,0x2248,
677 0x00b0,0x2219,0x00b7,0x221a,0x207f,0x00b2,0x25a0,0x00a0 } },
678 // ...
679 { RTL_TEXTENCODING_ASCII_US,
680 { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
681 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
682 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
683 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F,
684 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
685 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
686 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
687 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
688 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
689 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
690 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
691 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
692 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
693 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
694 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
695 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
696 0x20AC,0xFFFF,0x201A,0x0192,0x201E,0x2026,0x2020,0x2021, // !
697 0x02C6,0x2030,0x0160,0x2039,0x0152,0xFFFF,0x017D,0xFFFF, // !
698 0xFFFF,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014, // !
699 0x02DC,0x2122,0x0161,0x203A,0x0153,0xFFFF,0x017E,0x0178, // !
700 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7,
701 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF,
702 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7,
703 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF,
704 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7,
705 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF,
706 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7,
707 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF,
708 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,
709 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,
710 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,
711 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF } },
712 { RTL_TEXTENCODING_ISO_8859_1,
713 { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
714 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
715 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
716 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F,
717 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
718 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
719 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
720 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
721 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
722 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
723 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
724 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
725 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
726 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
727 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
728 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
729 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,
730 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,
731 0x0090,0x0091,0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,
732 0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,0x009F,
733 0x00A0,0x00A1,0x00A2,0x00A3,0x00A4,0x00A5,0x00A6,0x00A7,
734 0x00A8,0x00A9,0x00AA,0x00AB,0x00AC,0x00AD,0x00AE,0x00AF,
735 0x00B0,0x00B1,0x00B2,0x00B3,0x00B4,0x00B5,0x00B6,0x00B7,
736 0x00B8,0x00B9,0x00BA,0x00BB,0x00BC,0x00BD,0x00BE,0x00BF,
737 0x00C0,0x00C1,0x00C2,0x00C3,0x00C4,0x00C5,0x00C6,0x00C7,
738 0x00C8,0x00C9,0x00CA,0x00CB,0x00CC,0x00CD,0x00CE,0x00CF,
739 0x00D0,0x00D1,0x00D2,0x00D3,0x00D4,0x00D5,0x00D6,0x00D7,
740 0x00D8,0x00D9,0x00DA,0x00DB,0x00DC,0x00DD,0x00DE,0x00DF,
741 0x00E0,0x00E1,0x00E2,0x00E3,0x00E4,0x00E5,0x00E6,0x00E7,
742 0x00E8,0x00E9,0x00EA,0x00EB,0x00EC,0x00ED,0x00EE,0x00EF,
743 0x00F0,0x00F1,0x00F2,0x00F3,0x00F4,0x00F5,0x00F6,0x00F7,
744 0x00F8,0x00F9,0x00FA,0x00FB,0x00FC,0x00FD,0x00FE,0x00FF } },
745 { RTL_TEXTENCODING_ISO_8859_2,
746 { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
747 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
748 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
749 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F,
750 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
751 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
752 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
753 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
754 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
755 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
756 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
757 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
758 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
759 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
760 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
761 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
762 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,
763 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,
764 0x0090,0x0091,0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,
765 0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,0x009F,
766 0x00A0,0x0104,0x02D8,0x0141,0x00A4,0x013D,0x015A,0x00A7,
767 0x00A8,0x0160,0x015E,0x0164,0x0179,0x00AD,0x017D,0x017B,
768 0x00B0,0x0105,0x02DB,0x0142,0x00B4,0x013E,0x015B,0x02C7,
769 0x00B8,0x0161,0x015F,0x0165,0x017A,0x02DD,0x017E,0x017C,
770 0x0154,0x00C1,0x00C2,0x0102,0x00C4,0x0139,0x0106,0x00C7,
771 0x010C,0x00C9,0x0118,0x00CB,0x011A,0x00CD,0x00CE,0x010E,
772 0x0110,0x0143,0x0147,0x00D3,0x00D4,0x0150,0x00D6,0x00D7,
773 0x0158,0x016E,0x00DA,0x0170,0x00DC,0x00DD,0x0162,0x00DF,
774 0x0155,0x00E1,0x00E2,0x0103,0x00E4,0x013A,0x0107,0x00E7,
775 0x010D,0x00E9,0x0119,0x00EB,0x011B,0x00ED,0x00EE,0x010F,
776 0x0111,0x0144,0x0148,0x00F3,0x00F4,0x0151,0x00F6,0x00F7,
777 0x0159,0x016F,0x00FA,0x0171,0x00FC,0x00FD,0x0163,0x02D9 } },
778 { RTL_TEXTENCODING_ISO_8859_3,
779 { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
780 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
781 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
782 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F,
783 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
784 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
785 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
786 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
787 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
788 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
789 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
790 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
791 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
792 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
793 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
794 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
795 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,
796 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,
797 0x0090,0x0091,0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,
798 0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,0x009F,
799 0x00A0,0x0126,0x02D8,0x00A3,0x00A4,0xFFFF,0x0124,0x00A7,
800 0x00A8,0x0130,0x015E,0x011E,0x0134,0x00AD,0xFFFF,0x017B,
801 0x00B0,0x0127,0x00B2,0x00B3,0x00B4,0x00B5,0x0125,0x00B7,
802 0x00B8,0x0131,0x015F,0x011F,0x0135,0x00BD,0xFFFF,0x017C,
803 0x00C0,0x00C1,0x00C2,0xFFFF,0x00C4,0x010A,0x0108,0x00C7,
804 0x00C8,0x00C9,0x00CA,0x00CB,0x00CC,0x00CD,0x00CE,0x00CF,
805 0xFFFF,0x00D1,0x00D2,0x00D3,0x00D4,0x0120,0x00D6,0x00D7,
806 0x011C,0x00D9,0x00DA,0x00DB,0x00DC,0x016C,0x015C,0x00DF,
807 0x00E0,0x00E1,0x00E2,0xFFFF,0x00E4,0x010B,0x0109,0x00E7,
808 0x00E8,0x00E9,0x00EA,0x00EB,0x00EC,0x00ED,0x00EE,0x00EF,
809 0xFFFF,0x00F1,0x00F2,0x00F3,0x00F4,0x0121,0x00F6,0x00F7,
810 0x011D,0x00F9,0x00FA,0x00FB,0x00FC,0x016D,0x015D,0x02D9 } },
811 // ...
812 { RTL_TEXTENCODING_ISO_8859_6,
813 { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
814 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
815 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
816 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F,
817 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
818 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
819 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
820 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
821 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
822 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
823 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
824 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
825 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
826 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
827 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
828 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
829 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,
830 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,
831 0x0090,0x0091,0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,
832 0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,0x009F,
833 0x00A0,0xFFFF,0xFFFF,0xFFFF,0x00A4,0xFFFF,0xFFFF,0xFFFF,
834 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x060C,0x00AD,0xFFFF,0xFFFF,
835 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
836 0xFFFF,0xFFFF,0xFFFF,0x061B,0xFFFF,0xFFFF,0xFFFF,0x061F,
837 0xFFFF,0x0621,0x0622,0x0623,0x0624,0x0625,0x0626,0x0627,
838 0x0628,0x0629,0x062A,0x062B,0x062C,0x062D,0x062E,0x062F,
839 0x0630,0x0631,0x0632,0x0633,0x0634,0x0635,0x0636,0x0637,
840 0x0638,0x0639,0x063A,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
841 0x0640,0x0641,0x0642,0x0643,0x0644,0x0645,0x0646,0x0647,
842 0x0648,0x0649,0x064A,0x064B,0x064C,0x064D,0x064E,0x064F,
843 0x0650,0x0651,0x0652,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
844 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF } },
845 // ...
846 { RTL_TEXTENCODING_ISO_8859_8,
847 { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
848 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
849 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
850 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F,
851 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
852 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
853 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
854 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
855 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
856 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
857 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
858 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
859 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
860 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
861 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
862 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
863 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,
864 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,
865 0x0090,0x0091,0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,
866 0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,0x009F,
867 0x00A0,0xFFFF,0x00A2,0x00A3,0x00A4,0x00A5,0x00A6,0x00A7,
868 0x00A8,0x00A9,0x00D7,0x00AB,0x00AC,0x00AD,0x00AE,0x00AF,
869 0x00B0,0x00B1,0x00B2,0x00B3,0x00B4,0x00B5,0x00B6,0x00B7,
870 0x00B8,0x00B9,0x00F7,0x00BB,0x00BC,0x00BD,0x00BE,0xFFFF,
871 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
872 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
873 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
874 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x2017,
875 0x05D0,0x05D1,0x05D2,0x05D3,0x05D4,0x05D5,0x05D6,0x05D7,
876 0x05D8,0x05D9,0x05DA,0x05DB,0x05DC,0x05DD,0x05DE,0x05DF,
877 0x05E0,0x05E1,0x05E2,0x05E3,0x05E4,0x05E5,0x05E6,0x05E7,
878 0x05E8,0x05E9,0x05EA,0xFFFF,0xFFFF,0x200E,0x200F,0xFFFF } },
879 // ...
880 { RTL_TEXTENCODING_TIS_620,
881 { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
882 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
883 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
884 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F,
885 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
886 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
887 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
888 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
889 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
890 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
891 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
892 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
893 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
894 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
895 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
896 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
897 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,
898 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,
899 0x0090,0x0091,0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,
900 0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,0x009F,
901 0x00A0,0x0E01,0x0E02,0x0E03,0x0E04,0x0E05,0x0E06,0x0E07, // !
902 0x0E08,0x0E09,0x0E0A,0x0E0B,0x0E0C,0x0E0D,0x0E0E,0x0E0F,
903 0x0E10,0x0E11,0x0E12,0x0E13,0x0E14,0x0E15,0x0E16,0x0E17,
904 0x0E18,0x0E19,0x0E1A,0x0E1B,0x0E1C,0x0E1D,0x0E1E,0x0E1F,
905 0x0E20,0x0E21,0x0E22,0x0E23,0x0E24,0x0E25,0x0E26,0x0E27,
906 0x0E28,0x0E29,0x0E2A,0x0E2B,0x0E2C,0x0E2D,0x0E2E,0x0E2F,
907 0x0E30,0x0E31,0x0E32,0x0E33,0x0E34,0x0E35,0x0E36,0x0E37,
908 0x0E38,0x0E39,0x0E3A,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x0E3F,
909 0x0E40,0x0E41,0x0E42,0x0E43,0x0E44,0x0E45,0x0E46,0x0E47,
910 0x0E48,0x0E49,0x0E4A,0x0E4B,0x0E4C,0x0E4D,0x0E4E,0x0E4F,
911 0x0E50,0x0E51,0x0E52,0x0E53,0x0E54,0x0E55,0x0E56,0x0E57,
912 0x0E58,0x0E59,0x0E5A,0x0E5B,0xFFFF,0xFFFF,0xFFFF,0xFFFF } },
913 { RTL_TEXTENCODING_MS_874,
914 { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
915 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
916 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
917 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F,
918 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
919 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
920 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
921 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
922 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
923 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
924 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
925 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
926 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
927 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
928 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
929 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
930 0x20AC,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x2026,0xFFFF,0xFFFF,
931 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
932 0xFFFF,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014,
933 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
934 0x00A0,0x0E01,0x0E02,0x0E03,0x0E04,0x0E05,0x0E06,0x0E07,
935 0x0E08,0x0E09,0x0E0A,0x0E0B,0x0E0C,0x0E0D,0x0E0E,0x0E0F,
936 0x0E10,0x0E11,0x0E12,0x0E13,0x0E14,0x0E15,0x0E16,0x0E17,
937 0x0E18,0x0E19,0x0E1A,0x0E1B,0x0E1C,0x0E1D,0x0E1E,0x0E1F,
938 0x0E20,0x0E21,0x0E22,0x0E23,0x0E24,0x0E25,0x0E26,0x0E27,
939 0x0E28,0x0E29,0x0E2A,0x0E2B,0x0E2C,0x0E2D,0x0E2E,0x0E2F,
940 0x0E30,0x0E31,0x0E32,0x0E33,0x0E34,0x0E35,0x0E36,0x0E37,
941 0x0E38,0x0E39,0x0E3A,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x0E3F,
942 0x0E40,0x0E41,0x0E42,0x0E43,0x0E44,0x0E45,0x0E46,0x0E47,
943 0x0E48,0x0E49,0x0E4A,0x0E4B,0x0E4C,0x0E4D,0x0E4E,0x0E4F,
944 0x0E50,0x0E51,0x0E52,0x0E53,0x0E54,0x0E55,0x0E56,0x0E57,
945 0x0E58,0x0E59,0x0E5A,0x0E5B,0xFFFF,0xFFFF,0xFFFF,0xFFFF } },
946 { RTL_TEXTENCODING_MS_1255,
947 { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
948 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
949 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
950 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F,
951 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
952 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
953 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
954 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
955 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
956 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
957 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
958 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
959 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
960 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
961 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
962 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
963 0x20AC,0xFFFF,0x201A,0x0192,0x201E,0x2026,0x2020,0x2021,
964 0x02C6,0x2030,0xFFFF,0x2039,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
965 0xFFFF,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014,
966 0x02DC,0x2122,0xFFFF,0x203A,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
967 0x00A0,0x00A1,0x00A2,0x00A3,0x20AA,0x00A5,0x00A6,0x00A7,
968 0x00A8,0x00A9,0x00D7,0x00AB,0x00AC,0x00AD,0x00AE,0x00AF,
969 0x00B0,0x00B1,0x00B2,0x00B3,0x00B4,0x00B5,0x00B6,0x00B7,
970 0x00B8,0x00B9,0x00F7,0x00BB,0x00BC,0x00BD,0x00BE,0x00BF,
971 0x05B0,0x05B1,0x05B2,0x05B3,0x05B4,0x05B5,0x05B6,0x05B7,
972 0x05B8,0x05B9,0xFFFF,0x05BB,0x05BC,0x05BD,0x05BE,0x05BF,
973 0x05C0,0x05C1,0x05C2,0x05C3,0x05F0,0x05F1,0x05F2,0x05F3,
974 0x05F4,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
975 0x05D0,0x05D1,0x05D2,0x05D3,0x05D4,0x05D5,0x05D6,0x05D7,
976 0x05D8,0x05D9,0x05DA,0x05DB,0x05DC,0x05DD,0x05DE,0x05DF,
977 0x05E0,0x05E1,0x05E2,0x05E3,0x05E4,0x05E5,0x05E6,0x05E7,
978 0x05E8,0x05E9,0x05EA,0xFFFF,0xFFFF,0x200E,0x200F,0xFFFF } },
979 { RTL_TEXTENCODING_MS_1256,
980 { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
981 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
982 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
983 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F,
984 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
985 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
986 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
987 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
988 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
989 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
990 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
991 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
992 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
993 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
994 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
995 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
996 0x20AC,0x067E,0x201A,0x0192,0x201E,0x2026,0x2020,0x2021,
997 0x02C6,0x2030,0x0679,0x2039,0x0152,0x0686,0x0698,0x0688,
998 0x06AF,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014,
999 0x06A9,0x2122,0x0691,0x203A,0x0153,0x200C,0x200D,0x06BA,
1000 0x00A0,0x060C,0x00A2,0x00A3,0x00A4,0x00A5,0x00A6,0x00A7,
1001 0x00A8,0x00A9,0x06BE,0x00AB,0x00AC,0x00AD,0x00AE,0x00AF,
1002 0x00B0,0x00B1,0x00B2,0x00B3,0x00B4,0x00B5,0x00B6,0x00B7,
1003 0x00B8,0x00B9,0x061B,0x00BB,0x00BC,0x00BD,0x00BE,0x061F,
1004 0x06C1,0x0621,0x0622,0x0623,0x0624,0x0625,0x0626,0x0627,
1005 0x0628,0x0629,0x062A,0x062B,0x062C,0x062D,0x062E,0x062F,
1006 0x0630,0x0631,0x0632,0x0633,0x0634,0x0635,0x0636,0x00D7,
1007 0x0637,0x0638,0x0639,0x063A,0x0640,0x0641,0x0642,0x0643,
1008 0x00E0,0x0644,0x00E2,0x0645,0x0646,0x0647,0x0648,0x00E7,
1009 0x00E8,0x00E9,0x00EA,0x00EB,0x0649,0x064A,0x00EE,0x00EF,
1010 0x064B,0x064C,0x064D,0x064E,0x00F4,0x064F,0x0650,0x00F7,
1011 0x0651,0x00F9,0x0652,0x00FB,0x00FC,0x200E,0x200F,0x06D2 } },
1012 { RTL_TEXTENCODING_MS_1257,
1013 { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
1014 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
1015 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
1016 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F,
1017 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
1018 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
1019 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
1020 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
1021 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
1022 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
1023 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
1024 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
1025 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
1026 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
1027 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
1028 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
1029 0x20AC,0xFFFF,0x201A,0xFFFF,0x201E,0x2026,0x2020,0x2021,
1030 0xFFFF,0x2030,0xFFFF,0x2039,0xFFFF,0x00A8,0x02C7,0x00B8,
1031 0xFFFF,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014,
1032 0xFFFF,0x2122,0xFFFF,0x203A,0xFFFF,0x00AF,0x02DB,0xFFFF,
1033 0x00A0,0xFFFF,0x00A2,0x00A3,0x00A4,0xFFFF,0x00A6,0x00A7,
1034 0x00D8,0x00A9,0x0156,0x00AB,0x00AC,0x00AD,0x00AE,0x00C6,
1035 0x00B0,0x00B1,0x00B2,0x00B3,0x00B4,0x00B5,0x00B6,0x00B7,
1036 0x00F8,0x00B9,0x0157,0x00BB,0x00BC,0x00BD,0x00BE,0x00E6,
1037 0x0104,0x012E,0x0100,0x0106,0x00C4,0x00C5,0x0118,0x0112,
1038 0x010C,0x00C9,0x0179,0x0116,0x0122,0x0136,0x012A,0x013B,
1039 0x0160,0x0143,0x0145,0x00D3,0x014C,0x00D5,0x00D6,0x00D7,
1040 0x0172,0x0141,0x015A,0x016A,0x00DC,0x017B,0x017D,0x00DF,
1041 0x0105,0x012F,0x0101,0x0107,0x00E4,0x00E5,0x0119,0x0113,
1042 0x010D,0x00E9,0x017A,0x0117,0x0123,0x0137,0x012B,0x013C,
1043 0x0161,0x0144,0x0146,0x00F3,0x014D,0x00F5,0x00F6,0x00F7,
1044 0x0173,0x0142,0x015B,0x016B,0x00FC,0x017C,0x017E,0x02D9 } },
1045 { RTL_TEXTENCODING_MS_1258,
1046 { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
1047 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
1048 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
1049 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F,
1050 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
1051 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
1052 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
1053 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
1054 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
1055 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
1056 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
1057 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
1058 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
1059 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
1060 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
1061 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
1062 0x20AC,0xFFFF,0x201A,0x0192,0x201E,0x2026,0x2020,0x2021,
1063 0x02C6,0x2030,0xFFFF,0x2039,0x0152,0xFFFF,0xFFFF,0xFFFF,
1064 0xFFFF,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014,
1065 0x02DC,0x2122,0xFFFF,0x203A,0x0153,0xFFFF,0xFFFF,0x0178,
1066 0x00A0,0x00A1,0x00A2,0x00A3,0x00A4,0x00A5,0x00A6,0x00A7,
1067 0x00A8,0x00A9,0x00AA,0x00AB,0x00AC,0x00AD,0x00AE,0x00AF,
1068 0x00B0,0x00B1,0x00B2,0x00B3,0x00B4,0x00B5,0x00B6,0x00B7,
1069 0x00B8,0x00B9,0x00BA,0x00BB,0x00BC,0x00BD,0x00BE,0x00BF,
1070 0x00C0,0x00C1,0x00C2,0x0102,0x00C4,0x00C5,0x00C6,0x00C7,
1071 0x00C8,0x00C9,0x00CA,0x00CB,0x0300,0x00CD,0x00CE,0x00CF,
1072 0x0110,0x00D1,0x0309,0x00D3,0x00D4,0x01A0,0x00D6,0x00D7,
1073 0x00D8,0x00D9,0x00DA,0x00DB,0x00DC,0x01AF,0x0303,0x00DF,
1074 0x00E0,0x00E1,0x00E2,0x0103,0x00E4,0x00E5,0x00E6,0x00E7,
1075 0x00E8,0x00E9,0x00EA,0x00EB,0x0301,0x00ED,0x00EE,0x00EF,
1076 0x0111,0x00F1,0x0323,0x00F3,0x00F4,0x01A1,0x00F6,0x00F7,
1077 0x00F8,0x00F9,0x00FA,0x00FB,0x00FC,0x01B0,0x20AB,0x00FF } },
1078 { RTL_TEXTENCODING_KOI8_U, // RFC 2319
1079 { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
1080 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
1081 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
1082 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F,
1083 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
1084 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
1085 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
1086 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
1087 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
1088 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
1089 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
1090 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
1091 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
1092 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
1093 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
1094 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
1095 0x2500,0x2502,0x250C,0x2510,0x2514,0x2518,0x251C,0x2524,
1096 0x252C,0x2534,0x253C,0x2580,0x2584,0x2588,0x258C,0x2590,
1097 0x2591,0x2592,0x2593,0x2320,0x25A0,0x2219,0x221A,0x2248,
1098 0x2264,0x2265,0x00A0,0x2321,0x00B0,0x00B2,0x00B7,0x00F7,
1099 0x2550,0x2551,0x2552,0x0451,0x0454,0x2554,0x0456,0x0457,
1100 0x2557,0x2558,0x2559,0x255A,0x255B,0x0491,0x255D,0x255E,
1101 0x255F,0x2560,0x2561,0x0401,0x0404,0x2563,0x0406,0x0407,
1102 0x2566,0x2567,0x2568,0x2569,0x256A,0x0490,0x256C,0x00A9,
1103 0x044E,0x0430,0x0431,0x0446,0x0434,0x0435,0x0444,0x0433,
1104 0x0445,0x0438,0x0439,0x043A,0x043B,0x043C,0x043D,0x043E,
1105 0x043F,0x044F,0x0440,0x0441,0x0442,0x0443,0x0436,0x0432,
1106 0x044C,0x044B,0x0437,0x0448,0x044D,0x0449,0x0447,0x044A,
1107 0x042E,0x0410,0x0411,0x0426,0x0414,0x0415,0x0424,0x0413,
1108 0x0425,0x0418,0x0419,0x041A,0x041B,0x041C,0x041D,0x041E,
1109 0x041F,0x042F,0x0420,0x0421,0x0422,0x0423,0x0416,0x0412,
1110 0x042C,0x042B,0x0417,0x0428,0x042D,0x0429,0x0427,0x042A } },
1111 { RTL_TEXTENCODING_ISCII_DEVANAGARI,
1112 { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
1113 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
1114 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
1115 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F,
1116 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
1117 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
1118 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
1119 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
1120 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
1121 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
1122 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
1123 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
1124 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
1125 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
1126 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
1127 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
1128 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1129 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1130 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1131 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1132 0xFFFF,0x0901,0x0902,0x0903,0x0905,0x0906,0x0907,0x0908,
1133 0x0909,0x090A,0x090B,0x090E,0x090F,0x0910,0x090D,0x0912,
1134 0x0913,0x0914,0x0911,0x0915,0x0916,0x0917,0x0918,0x0919,
1135 0x091A,0x091B,0x091C,0x091D,0x091E,0x091F,0x0920,0x0921,
1136 0x0922,0x0923,0x0924,0x0925,0x0926,0x0927,0x0928,0x0929,
1137 0x092A,0x092B,0x092C,0x092D,0x092E,0x092F,0x095F,0x0930,
1138 0x0931,0x0932,0x0933,0x0934,0x0935,0x0936,0x0937,0x0938,
1139 0x0939,0xFFFF,0x093E,0x093F,0x0940,0x0941,0x0942,0x0943,
1140 0x0946,0x0947,0x0948,0x0945,0x094A,0x094B,0x094C,0x0949,
1141 0x094D,0x093C,0x0964,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1142 0xFFFF,0x0966,0x0967,0x0968,0x0969,0x096A,0x096B,0x096C,
1143 0x096D,0x096E,0x096F,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF } },
1144 { RTL_TEXTENCODING_ADOBE_STANDARD,
1145 { 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1146 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1147 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1148 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1149 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x2019,
1150 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
1151 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
1152 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
1153 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
1154 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
1155 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
1156 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
1157 0x2018,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
1158 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
1159 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
1160 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0xFFFF,
1161 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1162 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1163 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1164 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1165 0xFFFF,0x00A1,0x00A2,0x00A3,0x2215,0x00A5,0x0192,0x00A7,
1166 0x00A4,0x0027,0x201C,0x00AB,0x2039,0x203A,0xFB01,0xFB02,
1167 0xFFFF,0x2013,0x2020,0x2021,0x00B7,0xFFFF,0x00B6,0x2022,
1168 0x201A,0x201E,0x201D,0x00BB,0x2026,0x2030,0xFFFF,0x00BF,
1169 0xFFFF,0x0060,0x00B4,0x02C6,0x02DC,0x00AF,0x02D8,0x02D9,
1170 0x00A8,0xFFFF,0x02DA,0x00B8,0xFFFF,0x02DD,0x02DB,0x02C7,
1171 0x2014,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1172 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1173 0xFFFF,0x00C6,0xFFFF,0x00AA,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1174 0x0141,0x00D8,0x0152,0x00BA,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1175 0xFFFF,0x00E6,0xFFFF,0xFFFF,0xFFFF,0x0131,0xFFFF,0xFFFF,
1176 0x0142,0x00F8,0x0153,0x00DF,0xFFFF,0xFFFF,0xFFFF,0xFFFF } },
1177 { RTL_TEXTENCODING_ADOBE_SYMBOL,
1178 { 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1179 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1180 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1181 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1182 0x0020,0x0021,0x2200,0x0023,0x2203,0x0025,0x0026,0x220B,
1183 0x0028,0x0029,0x2217,0x002B,0x002C,0x2212,0x002E,0x002F,
1184 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
1185 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
1186 0x2245,0x0391,0x0392,0x03A7,0x0394,0x0395,0x03A6,0x0393,
1187 0x0397,0x0399,0x03D1,0x039A,0x039B,0x039C,0x039D,0x039F,
1188 0x03A0,0x0398,0x03A1,0x03A3,0x03A4,0x03A5,0x03C2,0x03A9,
1189 0x039E,0x03A8,0x0396,0x005B,0x2234,0x005D,0x22A5,0x005F,
1190 0xF8E5,0x03B1,0x03B2,0x03C7,0x03B4,0x03B5,0x03C6,0x03B3,
1191 0x03B7,0x03B9,0x03D5,0x03BA,0x03BB,0x03BC,0x03BD,0x03BF,
1192 0x03C0,0x03B8,0x03C1,0x03C3,0x03C4,0x03C5,0x03D6,0x03C9,
1193 0x03BE,0x03C8,0x03B6,0x007B,0x007C,0x007D,0x223C,0xFFFF,
1194 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1195 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1196 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1197 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1198 0x20AC,0x03D2,0x2032,0x2264,0x2215,0x221E,0x0192,0x2663,
1199 0x2666,0x2665,0x2660,0x2194,0x2190,0x2191,0x2192,0x2193,
1200 0x00B0,0x00B1,0x2033,0x2265,0x00D7,0x221D,0x2202,0x2022,
1201 0x00F7,0x2260,0x2261,0x2248,0x2026,0x23AF,0x23D0,0x21B5,
1202 0x2135,0x2111,0x211C,0x2118,0x2297,0x2295,0x2205,0x2229,
1203 0x222A,0x2283,0x2287,0x2284,0x2282,0x2286,0x2208,0x2209,
1204 0x2220,0x2207,0xF6DA,0xF6D9,0xF6DB,0x220F,0x221A,0x22C5,
1205 0x00AC,0x2227,0x2228,0x21D4,0x21D0,0x21D1,0x21D2,0x21D3,
1206 0x25CA,0x2329,0xF8E8,0xF8E9,0xF8EA,0x2211,0x239B,0x239C,
1207 0x239D,0x23A1,0x23A2,0x23A3,0x23A7,0x23A8,0x23A9,0x23AA,
1208 0xFFFF,0x232A,0x222B,0x2320,0x23AE,0x2321,0x239E,0x239F,
1209 0x23A0,0x23A4,0x23A5,0x23A6,0x23AB,0x23AC,0x23AD,0xFFFF } },
1210 { RTL_TEXTENCODING_ADOBE_DINGBATS,
1211 { 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1212 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1213 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1214 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1215 // 20
1216 0x0020,0x2701,0x2702,0x2703,0x2704,0x260E,0x2706,0x2707,
1217 0x2708,0x2709,0x261B,0x261E,0x270C,0x270D,0x270E,0x270F,
1218 0x2710,0x2711,0x2712,0x2713,0x2714,0x2715,0x2716,0x2717,
1219 0x2718,0x2719,0x271A,0x271B,0x271C,0x271D,0x271E,0x271F,
1220 // 40
1221 0x2720,0x2721,0x2722,0x2723,0x2724,0x2725,0x2726,0x2727,
1222 0x2605,0x2729,0x272A,0x272B,0x272C,0x272D,0x272E,0x272F,
1223 0x2730,0x2731,0x2732,0x2733,0x2734,0x2735,0x2736,0x2737,
1224 0x2738,0x2739,0x273A,0x273B,0x273C,0x273D,0x273E,0x273F,
1225 // 60
1226 0x2740,0x2741,0x2742,0x2743,0x2744,0x2745,0x2746,0x2747,
1227 0x2748,0x2749,0x274A,0x274B,0x27CF,0x274D,0x25A0,0x274F,
1228 0x2750,0x2751,0x2752,0x25B2,0x25BC,0x25C6,0x2756,0x25D7,
1229 0x2758,0x2759,0x275A,0x275B,0x275C,0x275D,0x275E,0xFFFF,
1230 // 80
1231 0xF8D7,0xF8D8,0xF8D9,0xF8DA,0xF8DB,0xF8DC,0xF8DD,0xF8DE,
1232 0xF8DF,0xF8E0,0xF8E1,0xF8E2,0xF8E3,0xF8E4,0xFFFF,0xFFFF,
1233 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1234 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
1235 // A0
1236 0xFFFF,0x2761,0x2762,0x2763,0x2764,0x2765,0x2766,0x2767,
1237 0x2663,0x2666,0x2665,0x2660,0x2460,0x2461,0x2462,0x2463,
1238 0x2464,0x2465,0x2466,0x2467,0x2468,0x2469,0x2776,0x2777,
1239 0x2778,0x2779,0x277A,0x277B,0x277C,0x277D,0x277E,0x277F,
1240 // C0
1241 0x2780,0x2781,0x2782,0x2783,0x2784,0x2785,0x2786,0x2787,
1242 0x2788,0x2789,0x278A,0x278B,0x278C,0x278D,0x278E,0x278F,
1243 0x2790,0x2791,0x2792,0x2793,0x2794,0x2795,0x2796,0x2797,
1244 0x2798,0x2799,0x279A,0x279B,0x279C,0x279D,0x279E,0x279F,
1245 // E0
1246 0x27A0,0x27A1,0x27A2,0x27A3,0x27A4,0x27A5,0x27A6,0x27A7,
1247 0x27A8,0x27A9,0x27AA,0x27AB,0x27AC,0x27AD,0x27AE,0x27AF,
1248 0xFFFF,0x27B1,0x27B2,0x27B3,0x27B4,0x27B5,0x27B6,0x27B7,
1249 0x27B8,0x27B9,0x27BA,0x27BB,0x27BC,0x27BD,0x27BE,0xFFFF } },
1250 { RTL_TEXTENCODING_PT154,
1251 { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
1252 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
1253 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
1254 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F,
1255 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
1256 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
1257 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
1258 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
1259 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
1260 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
1261 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
1262 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
1263 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
1264 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
1265 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
1266 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
1267 0x0496,0x0492,0x04EE,0x0493,0x201E,0x2026,0x04B6,0x04AE,
1268 0x04B2,0x04AF,0x04A0,0x04E2,0x04A2,0x049A,0x04BA,0x04B8,
1269 0x0497,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014,
1270 0x04B3,0x04B7,0x04A1,0x04E3,0x04A3,0x049B,0x04BB,0x04B9,
1271 0x00A0,0x040E,0x045E,0x0408,0x04E8,0x0498,0x04B0,0x00A7,
1272 0x0401,0x00A9,0x04D8,0x00AB,0x00AC,0x04EF,0x00AE,0x049C,
1273 0x00B0,0x04B1,0x0406,0x0456,0x0499,0x04E9,0x00B6,0x00B7,
1274 0x0451,0x2116,0x04D9,0x00BB,0x0458,0x04AA,0x04AB,0x049D,
1275 0x0410,0x0411,0x0412,0x0413,0x0414,0x0415,0x0416,0x0417,
1276 0x0418,0x0419,0x041A,0x041B,0x041C,0x041D,0x041E,0x041F,
1277 0x0420,0x0421,0x0422,0x0423,0x0424,0x0425,0x0426,0x0427,
1278 0x0428,0x0429,0x042A,0x042B,0x042C,0x042D,0x042E,0x042F,
1279 0x0430,0x0431,0x0432,0x0433,0x0434,0x0435,0x0436,0x0437,
1280 0x0438,0x0439,0x043A,0x043B,0x043C,0x043D,0x043E,0x043F,
1281 0x0440,0x0441,0x0442,0x0443,0x0444,0x0445,0x0446,0x0447,
1282 0x0448,0x0449,0x044A,0x044B,0x044C,0x044D,0x044E,0x044F } } };
1283 for (std::size_t i = 0; i < sizeof data / sizeof data[0]; ++i) {
1284 testSingleByteCharSet(data[i]);
1288 void Test::testComplex() {
1289 static ComplexCharSetTest const data[]
1290 = { { RTL_TEXTENCODING_ASCII_US,
1291 RTL_CONSTASCII_STRINGPARAM("\x01\"3De$~"),
1292 { 0x0001,0x0022,0x0033,0x0044,0x0065,0x0024,0x007E },
1294 true,
1295 true,
1296 true,
1297 false,
1298 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1299 { RTL_TEXTENCODING_EUC_CN,
1300 RTL_CONSTASCII_STRINGPARAM("\x01\"3De$~\xA1\xB9\xF0\xC5"),
1301 { 0x0001,0x0022,0x0033,0x0044,0x0065,0x0024,0x007E,
1302 0x300D,0x9E4B },
1304 true,
1305 true,
1306 true,
1307 false,
1308 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1309 { RTL_TEXTENCODING_EUC_TW,
1310 RTL_CONSTASCII_STRINGPARAM(
1311 "\x01\"3De$~\xC5\xF0\x8E\xA4\xDC\xD9"),
1312 { 0x0001,0x0022,0x0033,0x0044,0x0065,0x0024,0x007E,
1313 0x4ED9,0xD87E,0xDD68 },
1315 true,
1316 true,
1317 true,
1318 false,
1319 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1320 { RTL_TEXTENCODING_GB_18030,
1321 RTL_CONSTASCII_STRINGPARAM("\x01\"3De$~"),
1322 { 0x0001,0x0022,0x0033,0x0044,0x0065,0x0024,0x007E },
1324 true,
1325 true,
1326 true,
1327 false,
1328 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1329 { RTL_TEXTENCODING_GB_18030,
1330 RTL_CONSTASCII_STRINGPARAM("\x81\x40\xFE\xFE"),
1331 { 0x4E02,0xE4C5 },
1333 true,
1334 true,
1335 true,
1336 false,
1337 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1338 { RTL_TEXTENCODING_GB_18030,
1339 RTL_CONSTASCII_STRINGPARAM(
1340 "\x81\x30\xB1\x33\x81\x30\xD3\x30\x81\x36\xA5\x31"),
1341 { 0x028A,0x0452,0x200F },
1343 true,
1344 true,
1345 true,
1346 false,
1347 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1348 { RTL_TEXTENCODING_GB_18030,
1349 RTL_CONSTASCII_STRINGPARAM(
1350 "\xFE\x50\xFE\x51\xFE\x52\xFE\x53\xFE\x54\xFE\x55\xFE\x56"
1351 "\xFE\x57\xFE\x58\xFE\x59\xFE\x5A\xFE\x5B\xFE\x5C\xFE\x5D"
1352 "\xFE\x5E\xFE\x5F\xFE\x60\xFE\x61\xFE\x62\xFE\x63\xFE\x64"
1353 "\xFE\x65\xFE\x66\xFE\x67\xFE\x68\xFE\x69\xFE\x6A\xFE\x6B"
1354 "\xFE\x6C\xFE\x6D\xFE\x6E\xFE\x6F\xFE\x70\xFE\x71\xFE\x72"
1355 "\xFE\x73\xFE\x74\xFE\x75\xFE\x76\xFE\x77\xFE\x78\xFE\x79"
1356 "\xFE\x7A\xFE\x7B\xFE\x7C\xFE\x7D\xFE\x7E\xFE\x80\xFE\x81"
1357 "\xFE\x82\xFE\x83\xFE\x84\xFE\x85\xFE\x86\xFE\x87\xFE\x88"
1358 "\xFE\x89\xFE\x8A\xFE\x8B\xFE\x8C\xFE\x8D\xFE\x8E\xFE\x8F"
1359 "\xFE\x90\xFE\x91\xFE\x92\xFE\x93\xFE\x94\xFE\x95\xFE\x96"
1360 "\xFE\x97\xFE\x98\xFE\x99\xFE\x9A\xFE\x9B\xFE\x9C\xFE\x9D"
1361 "\xFE\x9E\xFE\x9F\xFE\xA0"),
1362 { 0x2E81,0xE816,0xE817,0xE818,0x2E84,0x3473,0x3447,0x2E88,
1363 0x2E8B,0xE81E,0x359E,0x361A,0x360E,0x2E8C,0x2E97,0x396E,
1364 0x3918,0xE826,0x39CF,0x39DF,0x3A73,0x39D0,0xE82B,0xE82C,
1365 0x3B4E,0x3C6E,0x3CE0,0x2EA7,0xE831,0xE832,0x2EAA,0x4056,
1366 0x415F,0x2EAE,0x4337,0x2EB3,0x2EB6,0x2EB7,0xE83B,0x43B1,
1367 0x43AC,0x2EBB,0x43DD,0x44D6,0x4661,0x464C,0xE843,0x4723,
1368 0x4729,0x477C,0x478D,0x2ECA,0x4947,0x497A,0x497D,0x4982,
1369 0x4983,0x4985,0x4986,0x499F,0x499B,0x49B7,0x49B6,0xE854,
1370 0xE855,0x4CA3,0x4C9F,0x4CA0,0x4CA1,0x4C77,0x4CA2,0x4D13,
1371 0x4D14,0x4D15,0x4D16,0x4D17,0x4D18,0x4D19,0x4DAE,0xE864 },
1373 true,
1374 true,
1375 false,
1376 false,
1377 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1378 { RTL_TEXTENCODING_ISO_2022_JP,
1379 RTL_CONSTASCII_STRINGPARAM("\x01\"3De$\\~"),
1380 { 0x0001,0x0022,0x0033,0x0044,0x0065,0x0024,0x005C,0x007E },
1382 false,
1383 true,
1384 true,
1385 false,
1386 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1387 { RTL_TEXTENCODING_ISO_2022_JP,
1388 RTL_CONSTASCII_STRINGPARAM("\x1B(B\x01\"3De$\\~"),
1389 { 0x0001,0x0022,0x0033,0x0044,0x0065,0x0024,0x005C,0x007E },
1391 false,
1392 true,
1393 false,
1394 false,
1395 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1396 { RTL_TEXTENCODING_ISO_2022_JP,
1397 RTL_CONSTASCII_STRINGPARAM("\x1B(J\x01\"3De$\\~"),
1398 { 0x0001,0x0022,0x0033,0x0044,0x0065,0x0024,0x00A5,0x00AF },
1400 false,
1401 true,
1402 false,
1403 false,
1404 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1405 { RTL_TEXTENCODING_ISO_2022_JP,
1406 RTL_CONSTASCII_STRINGPARAM("\x1B$B\x26\x21\x27\x71\x1B(B"),
1407 { 0x0391,0x044F },
1409 false,
1410 true,
1411 true,
1412 false,
1413 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1414 { RTL_TEXTENCODING_ISO_2022_KR,
1415 RTL_CONSTASCII_STRINGPARAM("\x1B$)C\x01\"3De$\\~"),
1416 { 0x0001,0x0022,0x0033,0x0044,0x0065,0x0024,0x005C,0x007E },
1418 false,
1419 true,
1420 true,
1421 false,
1422 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1423 { RTL_TEXTENCODING_ISO_2022_KR,
1424 RTL_CONSTASCII_STRINGPARAM(
1425 "\x1B$)C\x0E\x25\x21\x0F\x0D\x0Ax\x0E\x48\x7E\x0F"),
1426 { 0x2170,0x000D,0x000A,0x0078,0xD79D },
1428 false,
1429 true,
1430 true,
1431 false,
1432 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1433 { RTL_TEXTENCODING_ISO_2022_CN,
1434 RTL_CONSTASCII_STRINGPARAM(
1435 "\x01\"3De$\\~\x1B$)G\x0E\x45\x70\x1B$*H\x1BN\x22\x22"
1436 "\x45\x70\x0F\x1B$)A\x0E\x26\x21\x0F"),
1437 { 0x0001,0x0022,0x0033,0x0044,0x0065,0x0024,0x005C,0x007E,
1438 0x4ED9,0x531F,0x4ED9,0x0391 },
1440 false,
1441 true,
1442 false,
1443 false,
1444 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1445 { RTL_TEXTENCODING_ISO_2022_CN,
1446 RTL_CONSTASCII_STRINGPARAM(
1447 "\x01\"3De$\\~\x1B$)A\x0E\x26\x21\x1B$*H\x1BN\x22\x22"
1448 "\x26\x21\x0F\x0D\x0A\x1B$)A\x0E\x26\x21\x0F"),
1449 { 0x0001,0x0022,0x0033,0x0044,0x0065,0x0024,0x005C,0x007E,
1450 0x0391,0x531F,0x0391,0x000D,0x000A,0x0391 },
1452 false,
1453 true,
1454 true,
1455 false,
1456 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1457 // The following does not work as long as Big5-HKSCS maps to
1458 // Unicode PUA instead of Plane 2. Use the next two tests
1459 // instead:
1460 // { RTL_TEXTENCODING_BIG5_HKSCS,
1461 // RTL_CONSTASCII_STRINGPARAM(
1462 // "\x01\"3De$~\x88\x56\xF9\xFE\xFA\x5E\xA1\x40\xF9\xD5"),
1463 // { 0x0001,0x0022,0x0033,0x0044,0x0065,0x0024,0x007E,0x0100,
1464 // 0xFFED,0xD849,0xDD13,0x3000,0x9F98 },
1465 // 13,
1466 // true,
1467 // true,
1468 // true,
1469 // false,
1470 // RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1471 { RTL_TEXTENCODING_BIG5_HKSCS,
1472 RTL_CONSTASCII_STRINGPARAM(
1473 "\x01\"3De$~\x88\x56\xF9\xFE\xFA\x5E\xA1\x40\xF9\xD5"),
1474 { 0x0001,0x0022,0x0033,0x0044,0x0065,0x0024,0x007E,0x0100,
1475 0xFFED,0xE01E,0x3000,0x9F98 },
1477 true,
1478 true,
1479 true,
1480 false,
1481 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1482 { RTL_TEXTENCODING_BIG5_HKSCS,
1483 RTL_CONSTASCII_STRINGPARAM(
1484 "\x01\"3De$~\x88\x56\xF9\xFE\xFA\x5E\xA1\x40\xF9\xD5"),
1485 { 0x0001,0x0022,0x0033,0x0044,0x0065,0x0024,0x007E,0x0100,
1486 0xFFED,0xD849,0xDD13,0x3000,0x9F98 },
1488 true,
1489 false,
1490 true,
1491 false,
1492 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1493 { RTL_TEXTENCODING_BIG5_HKSCS,
1494 RTL_CONSTASCII_STRINGPARAM(
1495 "\xC6\xA1\xC6\xCF\xC6\xD3\xC6\xD5\xC6\xD7\xC6\xDE\xC6\xDF"
1496 "\xC6\xFE\xC7\x40\xC7\x7E\xC7\xA1\xC7\xFE"),
1497 { 0x2460,0xF6E0,0xF6E4,0xF6E6,0xF6E8,0xF6EF,0xF6F0,0x3058,
1498 0x3059,0x30A4,0x30A5,0x041A },
1500 true,
1501 true,
1502 true,
1503 false,
1504 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1505 { RTL_TEXTENCODING_BIG5_HKSCS,
1506 RTL_CONSTASCII_STRINGPARAM("\x81\x40\x84\xFE"),
1507 { 0xEEB8,0xF12B },
1509 true,
1510 true,
1511 true,
1512 false,
1513 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1514 { RTL_TEXTENCODING_BIG5_HKSCS,
1515 RTL_CONSTASCII_STRINGPARAM(
1516 "\x81\x40\x8D\xFE\x8E\x40\xA0\xFE\xC6\xA1\xC8\xFE\xFA\x40"
1517 "\xFE\xFE"),
1518 { 0xEEB8,0xF6B0,0xE311,0xEEB7,0xF6B1,0xF848,0xE000,0xE310 },
1520 true,
1521 false,
1522 true,
1523 false,
1524 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1525 { RTL_TEXTENCODING_BIG5_HKSCS,
1526 RTL_CONSTASCII_STRINGPARAM("\xAD\xC5\x94\x55"),
1527 { 0x5029,0x7250 },
1529 true,
1530 true,
1531 true,
1532 false,
1533 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1534 { RTL_TEXTENCODING_BIG5_HKSCS,
1535 RTL_CONSTASCII_STRINGPARAM("\xFA\x5F\xA0\xE4"),
1536 { 0x5029,0x7250 },
1538 true,
1539 true,
1540 false,
1541 false,
1542 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1543 { RTL_TEXTENCODING_BIG5_HKSCS,
1544 RTL_CONSTASCII_STRINGPARAM("\xA0\x40\xA0\x7E\xA0\xA1\xA0\xFE"),
1545 { 0xEE1B,0xEE59,0xEE5A,0xEEB7 },
1547 true,
1548 false,
1549 true,
1550 false,
1551 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1552 { RTL_TEXTENCODING_BIG5,
1553 RTL_CONSTASCII_STRINGPARAM("\xA1\x45"),
1554 { 0x2027 },
1556 true,
1557 true,
1558 true,
1559 false,
1560 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1561 { RTL_TEXTENCODING_BIG5,
1562 RTL_CONSTASCII_STRINGPARAM(
1563 "\xC6\xCF\xC6\xD3\xC6\xD5\xC6\xD7\xC6\xDE\xC6\xDF"),
1564 { 0x306B,0x306F,0x3071,0x3073,0x307A,0x307B },
1566 true,
1567 true,
1568 true,
1569 false,
1570 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1571 { RTL_TEXTENCODING_BIG5,
1572 RTL_CONSTASCII_STRINGPARAM(
1573 "\xC7\xFD\xC7\xFE\xC8\x40\xC8\x7E\xC8\xA1\xC8\xFE"),
1574 { 0xF7AA,0xF7AB,0xF7AC,0xF7EA,0xF7EB,0xF848 },
1576 true,
1577 true,
1578 true,
1579 false,
1580 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1581 { RTL_TEXTENCODING_BIG5,
1582 RTL_CONSTASCII_STRINGPARAM("\xA0\x40\xA0\x7E\xA0\xA1\xA0\xFE"),
1583 { 0xEE1B,0xEE59,0xEE5A,0xEEB7 },
1585 true,
1586 true,
1587 true,
1588 false,
1589 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1590 { RTL_TEXTENCODING_MS_950,
1591 RTL_CONSTASCII_STRINGPARAM(
1592 "\xC6\xA1\xC6\xFE\xC7\x40\xC7\x7E\xC7\xA1\xC7\xFE\xC8\x40"
1593 "\xC8\x7E\xC8\xA1\xC8\xFE"),
1594 { 0xF6B1,0xF70E,0xF70F,0xF74D,0xF74E,0xF7AB,0xF7AC,0xF7EA,
1595 0xF7EB,0xF848 },
1597 true,
1598 true,
1599 true,
1600 false,
1601 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1602 { RTL_TEXTENCODING_MS_950,
1603 RTL_CONSTASCII_STRINGPARAM("\xA0\x40\xA0\x7E\xA0\xA1\xA0\xFE"),
1604 { 0xEE1B,0xEE59,0xEE5A,0xEEB7 },
1606 true,
1607 true,
1608 true,
1609 false,
1610 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1612 // Test Unicode beyond BMP:
1614 // FIXME The second m_bForward test (requiring a context) does not
1615 // work for UTF7:
1616 // { RTL_TEXTENCODING_UTF7,
1617 // RTL_CONSTASCII_STRINGPARAM("+2EndEw-"),
1618 // { 0xD849,0xDD13 },
1619 // 2,
1620 // true,
1621 // true,
1622 // true,
1623 // false,
1624 // RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1625 { RTL_TEXTENCODING_UTF8,
1626 RTL_CONSTASCII_STRINGPARAM("\xF0\xA2\x94\x93"),
1627 { 0xD849,0xDD13 },
1629 true,
1630 true,
1631 true,
1632 false,
1633 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1634 { RTL_TEXTENCODING_GB_18030,
1635 RTL_CONSTASCII_STRINGPARAM("\x95\x39\xC5\x37"),
1636 { 0xD849,0xDD13 },
1638 true,
1639 true,
1640 true,
1641 false,
1642 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1643 { RTL_TEXTENCODING_BIG5_HKSCS,
1644 RTL_CONSTASCII_STRINGPARAM("\xFA\x5E"),
1645 { 0xD849,0xDD13 },
1647 true,
1648 false,
1649 true,
1650 false,
1651 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1653 // Test GBK (aka CP936):
1655 { RTL_TEXTENCODING_GBK,
1656 RTL_CONSTASCII_STRINGPARAM("\xFD\x7C\xC1\xFA\xFD\x9B"),
1657 { 0x9F76,0x9F99,0x9FA5 },
1659 true,
1660 true,
1661 true,
1662 false,
1663 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1664 { RTL_TEXTENCODING_MS_936,
1665 RTL_CONSTASCII_STRINGPARAM("\xFD\x7C\xC1\xFA\xFD\x9B"),
1666 { 0x9F76,0x9F99,0x9FA5 },
1668 true,
1669 true,
1670 true,
1671 false,
1672 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1673 { RTL_TEXTENCODING_GBK,
1674 RTL_CONSTASCII_STRINGPARAM(
1675 "\xFE\x50\xFE\x54\xFE\x55\xFE\x56"
1676 "\xFE\x57\xFE\x58\xFE\x5A\xFE\x5B\xFE\x5C\xFE\x5D"
1677 "\xFE\x5E\xFE\x5F\xFE\x60\xFE\x62\xFE\x63\xFE\x64"
1678 "\xFE\x65\xFE\x68\xFE\x69\xFE\x6A\xFE\x6B"
1679 "\xFE\x6E\xFE\x6F\xFE\x70\xFE\x71\xFE\x72"
1680 "\xFE\x73\xFE\x74\xFE\x75\xFE\x77\xFE\x78\xFE\x79"
1681 "\xFE\x7A\xFE\x7B\xFE\x7C\xFE\x7D\xFE\x80\xFE\x81"
1682 "\xFE\x82\xFE\x83\xFE\x84\xFE\x85\xFE\x86\xFE\x87\xFE\x88"
1683 "\xFE\x89\xFE\x8A\xFE\x8B\xFE\x8C\xFE\x8D\xFE\x8E\xFE\x8F"
1684 "\xFE\x92\xFE\x93\xFE\x94\xFE\x95\xFE\x96"
1685 "\xFE\x97\xFE\x98\xFE\x99\xFE\x9A\xFE\x9B\xFE\x9C\xFE\x9D"
1686 "\xFE\x9E\xFE\x9F"),
1687 { 0x2E81,0x2E84,0x3473,0x3447,0x2E88,0x2E8B,0x359E,0x361A,
1688 0x360E,0x2E8C,0x2E97,0x396E,0x3918,0x39CF,0x39DF,0x3A73,
1689 0x39D0,0x3B4E,0x3C6E,0x3CE0,0x2EA7,0x2EAA,0x4056,0x415F,
1690 0x2EAE,0x4337,0x2EB3,0x2EB6,0x2EB7,0x43B1,0x43AC,0x2EBB,
1691 0x43DD,0x44D6,0x4661,0x464C,0x4723,0x4729,0x477C,0x478D,
1692 0x2ECA,0x4947,0x497A,0x497D,0x4982,0x4983,0x4985,0x4986,
1693 0x499F,0x499B,0x49B7,0x49B6,0x4CA3,0x4C9F,0x4CA0,0x4CA1,
1694 0x4C77,0x4CA2,0x4D13,0x4D14,0x4D15,0x4D16,0x4D17,0x4D18,
1695 0x4D19,0x4DAE },
1697 true,
1698 true,
1699 true,
1700 false,
1701 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1702 { RTL_TEXTENCODING_EUC_JP,
1703 RTL_CONSTASCII_STRINGPARAM("?"),
1704 { 0xFF0D },
1706 true,
1707 false,
1708 true,
1709 false,
1710 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_QUESTIONMARK },
1712 // Test of "JIS X 0208 row 13" (taken from CP932; added to
1713 // ISO-2022-JP and EUC-JP; 74 of the 83 characters introduce
1714 // mappings to new Unicode characters):
1715 { RTL_TEXTENCODING_MS_932,
1716 RTL_CONSTASCII_STRINGPARAM(
1717 "\x87\x40\x87\x41\x87\x42\x87\x43\x87\x44\x87\x45\x87\x46"
1718 "\x87\x47\x87\x48\x87\x49\x87\x4A\x87\x4B\x87\x4C\x87\x4D"
1719 "\x87\x4E\x87\x4F\x87\x50\x87\x51\x87\x52\x87\x53\x87\x54"
1720 "\x87\x55\x87\x56\x87\x57\x87\x58\x87\x59\x87\x5A\x87\x5B"
1721 "\x87\x5C\x87\x5D\x87\x5F\x87\x60\x87\x61\x87\x62\x87\x63"
1722 "\x87\x64\x87\x65\x87\x66\x87\x67\x87\x68\x87\x69\x87\x6A"
1723 "\x87\x6B\x87\x6C\x87\x6D\x87\x6E\x87\x6F\x87\x70\x87\x71"
1724 "\x87\x72\x87\x73\x87\x74\x87\x75\x87\x7E\x87\x80\x87\x81"
1725 "\x87\x82\x87\x83\x87\x84\x87\x85\x87\x86\x87\x87\x87\x88"
1726 "\x87\x89\x87\x8A\x87\x8B\x87\x8C\x87\x8D\x87\x8E\x87\x8F"
1727 "\x87\x90\x87\x91\x87\x92\x87\x93\x87\x94\x87\x95\x87\x96"
1728 "\x87\x97\x87\x98\x87\x99\x87\x9A\x87\x9B\x87\x9C"),
1729 { 0x2460,0x2461,0x2462,0x2463,0x2464,0x2465,0x2466,0x2467,0x2468,
1730 0x2469,0x246A,0x246B,0x246C,0x246D,0x246E,0x246F,0x2470,0x2471,
1731 0x2472,0x2473,0x2160,0x2161,0x2162,0x2163,0x2164,0x2165,0x2166,
1732 0x2167,0x2168,0x2169,0x3349,0x3314,0x3322,0x334D,0x3318,0x3327,
1733 0x3303,0x3336,0x3351,0x3357,0x330D,0x3326,0x3323,0x332B,0x334A,
1734 0x333B,0x339C,0x339D,0x339E,0x338E,0x338F,0x33C4,0x33A1,0x337B,
1735 0x301D,0x301F,0x2116,0x33CD,0x2121,0x32A4,0x32A5,0x32A6,0x32A7,
1736 0x32A8,0x3231,0x3232,0x3239,0x337E,0x337D,0x337C,0x2252,0x2261,
1737 0x222B,0x222E,0x2211,0x221A,0x22A5,0x2220,0x221F,0x22BF,0x2235,
1738 0x2229,0x222A },
1740 true,
1741 true,
1742 false,
1743 false,
1744 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1745 { RTL_TEXTENCODING_SHIFT_JIS,
1746 RTL_CONSTASCII_STRINGPARAM(
1747 "\x87\x40\x87\x41\x87\x42\x87\x43\x87\x44\x87\x45\x87\x46"
1748 "\x87\x47\x87\x48\x87\x49\x87\x4A\x87\x4B\x87\x4C\x87\x4D"
1749 "\x87\x4E\x87\x4F\x87\x50\x87\x51\x87\x52\x87\x53\x87\x54"
1750 "\x87\x55\x87\x56\x87\x57\x87\x58\x87\x59\x87\x5A\x87\x5B"
1751 "\x87\x5C\x87\x5D\x87\x5F\x87\x60\x87\x61\x87\x62\x87\x63"
1752 "\x87\x64\x87\x65\x87\x66\x87\x67\x87\x68\x87\x69\x87\x6A"
1753 "\x87\x6B\x87\x6C\x87\x6D\x87\x6E\x87\x6F\x87\x70\x87\x71"
1754 "\x87\x72\x87\x73\x87\x74\x87\x75\x87\x7E\x87\x80\x87\x81"
1755 "\x87\x82\x87\x83\x87\x84\x87\x85\x87\x86\x87\x87\x87\x88"
1756 "\x87\x89\x87\x8A\x87\x8B\x87\x8C\x87\x8D\x87\x8E\x87\x8F"
1757 "\x87\x90\x87\x91\x87\x92\x87\x93\x87\x94\x87\x95\x87\x96"
1758 "\x87\x97\x87\x98\x87\x99\x87\x9A\x87\x9B\x87\x9C"),
1759 { 0x2460,0x2461,0x2462,0x2463,0x2464,0x2465,0x2466,0x2467,0x2468,
1760 0x2469,0x246A,0x246B,0x246C,0x246D,0x246E,0x246F,0x2470,0x2471,
1761 0x2472,0x2473,0x2160,0x2161,0x2162,0x2163,0x2164,0x2165,0x2166,
1762 0x2167,0x2168,0x2169,0x3349,0x3314,0x3322,0x334D,0x3318,0x3327,
1763 0x3303,0x3336,0x3351,0x3357,0x330D,0x3326,0x3323,0x332B,0x334A,
1764 0x333B,0x339C,0x339D,0x339E,0x338E,0x338F,0x33C4,0x33A1,0x337B,
1765 0x301D,0x301F,0x2116,0x33CD,0x2121,0x32A4,0x32A5,0x32A6,0x32A7,
1766 0x32A8,0x3231,0x3232,0x3239,0x337E,0x337D,0x337C,0x2252,0x2261,
1767 0x222B,0x222E,0x2211,0x221A,0x22A5,0x2220,0x221F,0x22BF,0x2235,
1768 0x2229,0x222A },
1770 true,
1771 true,
1772 false,
1773 false,
1774 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1775 { RTL_TEXTENCODING_ISO_2022_JP,
1776 RTL_CONSTASCII_STRINGPARAM(
1777 "\x1B$B\x2D\x21\x2D\x22\x2D\x23\x2D\x24\x2D\x25\x2D\x26"
1778 "\x2D\x27\x2D\x28\x2D\x29\x2D\x2A\x2D\x2B\x2D\x2C\x2D\x2D"
1779 "\x2D\x2E\x2D\x2F\x2D\x30\x2D\x31\x2D\x32\x2D\x33\x2D\x34"
1780 "\x2D\x35\x2D\x36\x2D\x37\x2D\x38\x2D\x39\x2D\x3A\x2D\x3B"
1781 "\x2D\x3C\x2D\x3D\x2D\x3E\x2D\x40\x2D\x41\x2D\x42\x2D\x43"
1782 "\x2D\x44\x2D\x45\x2D\x46\x2D\x47\x2D\x48\x2D\x49\x2D\x4A"
1783 "\x2D\x4B\x2D\x4C\x2D\x4D\x2D\x4E\x2D\x4F\x2D\x50\x2D\x51"
1784 "\x2D\x52\x2D\x53\x2D\x54\x2D\x55\x2D\x56\x2D\x5F\x2D\x60"
1785 "\x2D\x61\x2D\x62\x2D\x63\x2D\x64\x2D\x65\x2D\x66\x2D\x67"
1786 "\x2D\x68\x2D\x69\x2D\x6A\x2D\x6B\x2D\x6C\x2D\x6D\x2D\x6E"
1787 "\x2D\x6F\x2D\x70\x2D\x71\x2D\x72\x2D\x73\x2D\x74\x2D\x75"
1788 "\x2D\x76\x2D\x77\x2D\x78\x2D\x79\x2D\x7A\x2D\x7B\x2D\x7C"
1789 "\x1B(B"),
1790 { 0x2460,0x2461,0x2462,0x2463,0x2464,0x2465,0x2466,0x2467,0x2468,
1791 0x2469,0x246A,0x246B,0x246C,0x246D,0x246E,0x246F,0x2470,0x2471,
1792 0x2472,0x2473,0x2160,0x2161,0x2162,0x2163,0x2164,0x2165,0x2166,
1793 0x2167,0x2168,0x2169,0x3349,0x3314,0x3322,0x334D,0x3318,0x3327,
1794 0x3303,0x3336,0x3351,0x3357,0x330D,0x3326,0x3323,0x332B,0x334A,
1795 0x333B,0x339C,0x339D,0x339E,0x338E,0x338F,0x33C4,0x33A1,0x337B,
1796 0x301D,0x301F,0x2116,0x33CD,0x2121,0x32A4,0x32A5,0x32A6,0x32A7,
1797 0x32A8,0x3231,0x3232,0x3239,0x337E,0x337D,0x337C,0x2252,0x2261,
1798 0x222B,0x222E,0x2211,0x221A,0x22A5,0x2220,0x221F,0x22BF,0x2235,
1799 0x2229,0x222A },
1801 false,
1802 true,
1803 false,
1804 false,
1805 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1806 { RTL_TEXTENCODING_ISO_2022_JP,
1807 RTL_CONSTASCII_STRINGPARAM(
1808 "\x1B$B\x2D\x21\x2D\x22\x2D\x23\x2D\x24\x2D\x25\x2D\x26"
1809 "\x2D\x27\x2D\x28\x2D\x29\x2D\x2A\x2D\x2B\x2D\x2C\x2D\x2D"
1810 "\x2D\x2E\x2D\x2F\x2D\x30\x2D\x31\x2D\x32\x2D\x33\x2D\x34"
1811 "\x2D\x35\x2D\x36\x2D\x37\x2D\x38\x2D\x39\x2D\x3A\x2D\x3B"
1812 "\x2D\x3C\x2D\x3D\x2D\x3E\x2D\x40\x2D\x41\x2D\x42\x2D\x43"
1813 "\x2D\x44\x2D\x45\x2D\x46\x2D\x47\x2D\x48\x2D\x49\x2D\x4A"
1814 "\x2D\x4B\x2D\x4C\x2D\x4D\x2D\x4E\x2D\x4F\x2D\x50\x2D\x51"
1815 "\x2D\x52\x2D\x53\x2D\x54\x2D\x55\x2D\x56\x2D\x5F\x2D\x60"
1816 "\x2D\x61\x2D\x62\x2D\x63\x2D\x64\x2D\x65\x2D\x66\x2D\x67"
1817 "\x2D\x68\x2D\x69\x2D\x6A\x2D\x6B\x2D\x6C\x2D\x6D\x2D\x6E"
1818 "\x2D\x6F\x2D\x73\x2D\x74\x2D\x78\x2D\x79\x1B(B"),
1819 { 0x2460,0x2461,0x2462,0x2463,0x2464,0x2465,0x2466,0x2467,0x2468,
1820 0x2469,0x246A,0x246B,0x246C,0x246D,0x246E,0x246F,0x2470,0x2471,
1821 0x2472,0x2473,0x2160,0x2161,0x2162,0x2163,0x2164,0x2165,0x2166,
1822 0x2167,0x2168,0x2169,0x3349,0x3314,0x3322,0x334D,0x3318,0x3327,
1823 0x3303,0x3336,0x3351,0x3357,0x330D,0x3326,0x3323,0x332B,0x334A,
1824 0x333B,0x339C,0x339D,0x339E,0x338E,0x338F,0x33C4,0x33A1,0x337B,
1825 0x301D,0x301F,0x2116,0x33CD,0x2121,0x32A4,0x32A5,0x32A6,0x32A7,
1826 0x32A8,0x3231,0x3232,0x3239,0x337E,0x337D,0x337C,0x222E,0x2211,
1827 0x221F,0x22BF },
1829 false,
1830 true,
1831 true,
1832 false,
1833 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1834 { RTL_TEXTENCODING_EUC_JP,
1835 RTL_CONSTASCII_STRINGPARAM(
1836 "\xAD\xA1\xAD\xA2\xAD\xA3\xAD\xA4\xAD\xA5\xAD\xA6\xAD\xA7"
1837 "\xAD\xA8\xAD\xA9\xAD\xAA\xAD\xAB\xAD\xAC\xAD\xAD\xAD\xAE"
1838 "\xAD\xAF\xAD\xB0\xAD\xB1\xAD\xB2\xAD\xB3\xAD\xB4\xAD\xB5"
1839 "\xAD\xB6\xAD\xB7\xAD\xB8\xAD\xB9\xAD\xBA\xAD\xBB\xAD\xBC"
1840 "\xAD\xBD\xAD\xBE\xAD\xC0\xAD\xC1\xAD\xC2\xAD\xC3\xAD\xC4"
1841 "\xAD\xC5\xAD\xC6\xAD\xC7\xAD\xC8\xAD\xC9\xAD\xCA\xAD\xCB"
1842 "\xAD\xCC\xAD\xCD\xAD\xCE\xAD\xCF\xAD\xD0\xAD\xD1\xAD\xD2"
1843 "\xAD\xD3\xAD\xD4\xAD\xD5\xAD\xD6\xAD\xDF\xAD\xE0\xAD\xE1"
1844 "\xAD\xE2\xAD\xE3\xAD\xE4\xAD\xE5\xAD\xE6\xAD\xE7\xAD\xE8"
1845 "\xAD\xE9\xAD\xEA\xAD\xEB\xAD\xEC\xAD\xED\xAD\xEE\xAD\xEF"
1846 "\xAD\xF0\xAD\xF1\xAD\xF2\xAD\xF3\xAD\xF4\xAD\xF5\xAD\xF6"
1847 "\xAD\xF7\xAD\xF8\xAD\xF9\xAD\xFA\xAD\xFB\xAD\xFC"),
1848 { 0x2460,0x2461,0x2462,0x2463,0x2464,0x2465,0x2466,0x2467,0x2468,
1849 0x2469,0x246A,0x246B,0x246C,0x246D,0x246E,0x246F,0x2470,0x2471,
1850 0x2472,0x2473,0x2160,0x2161,0x2162,0x2163,0x2164,0x2165,0x2166,
1851 0x2167,0x2168,0x2169,0x3349,0x3314,0x3322,0x334D,0x3318,0x3327,
1852 0x3303,0x3336,0x3351,0x3357,0x330D,0x3326,0x3323,0x332B,0x334A,
1853 0x333B,0x339C,0x339D,0x339E,0x338E,0x338F,0x33C4,0x33A1,0x337B,
1854 0x301D,0x301F,0x2116,0x33CD,0x2121,0x32A4,0x32A5,0x32A6,0x32A7,
1855 0x32A8,0x3231,0x3232,0x3239,0x337E,0x337D,0x337C,0x2252,0x2261,
1856 0x222B,0x222E,0x2211,0x221A,0x22A5,0x2220,0x221F,0x22BF,0x2235,
1857 0x2229,0x222A },
1859 true,
1860 true,
1861 false,
1862 false,
1863 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1864 { RTL_TEXTENCODING_EUC_JP,
1865 RTL_CONSTASCII_STRINGPARAM(
1866 "\xAD\xA1\xAD\xA2\xAD\xA3\xAD\xA4\xAD\xA5\xAD\xA6\xAD\xA7"
1867 "\xAD\xA8\xAD\xA9\xAD\xAA\xAD\xAB\xAD\xAC\xAD\xAD\xAD\xAE"
1868 "\xAD\xAF\xAD\xB0\xAD\xB1\xAD\xB2\xAD\xB3\xAD\xB4\xAD\xB5"
1869 "\xAD\xB6\xAD\xB7\xAD\xB8\xAD\xB9\xAD\xBA\xAD\xBB\xAD\xBC"
1870 "\xAD\xBD\xAD\xBE\xAD\xC0\xAD\xC1\xAD\xC2\xAD\xC3\xAD\xC4"
1871 "\xAD\xC5\xAD\xC6\xAD\xC7\xAD\xC8\xAD\xC9\xAD\xCA\xAD\xCB"
1872 "\xAD\xCC\xAD\xCD\xAD\xCE\xAD\xCF\xAD\xD0\xAD\xD1\xAD\xD2"
1873 "\xAD\xD3\xAD\xD4\xAD\xD5\xAD\xD6\xAD\xDF\xAD\xE0\xAD\xE1"
1874 "\xAD\xE2\xAD\xE3\xAD\xE4\xAD\xE5\xAD\xE6\xAD\xE7\xAD\xE8"
1875 "\xAD\xE9\xAD\xEA\xAD\xEB\xAD\xEC\xAD\xED\xAD\xEE\xAD\xEF"
1876 "\xAD\xF3\xAD\xF4\xAD\xF8\xAD\xF9"),
1877 { 0x2460,0x2461,0x2462,0x2463,0x2464,0x2465,0x2466,0x2467,0x2468,
1878 0x2469,0x246A,0x246B,0x246C,0x246D,0x246E,0x246F,0x2470,0x2471,
1879 0x2472,0x2473,0x2160,0x2161,0x2162,0x2163,0x2164,0x2165,0x2166,
1880 0x2167,0x2168,0x2169,0x3349,0x3314,0x3322,0x334D,0x3318,0x3327,
1881 0x3303,0x3336,0x3351,0x3357,0x330D,0x3326,0x3323,0x332B,0x334A,
1882 0x333B,0x339C,0x339D,0x339E,0x338E,0x338F,0x33C4,0x33A1,0x337B,
1883 0x301D,0x301F,0x2116,0x33CD,0x2121,0x32A4,0x32A5,0x32A6,0x32A7,
1884 0x32A8,0x3231,0x3232,0x3239,0x337E,0x337D,0x337C,0x222E,0x2211,
1885 0x221F,0x22BF },
1887 true,
1888 true,
1889 true,
1890 false,
1891 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1893 { RTL_TEXTENCODING_EUC_JP,
1894 RTL_CONSTASCII_STRINGPARAM("\xB9\xF5"),
1895 { 0x9ED2 },
1897 true,
1898 true,
1899 true,
1900 false,
1901 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1903 // Test ISO-8859-x/MS-125x range 0x80--9F:
1905 { RTL_TEXTENCODING_ISO_8859_1,
1906 RTL_CONSTASCII_STRINGPARAM(
1907 "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E"
1908 "\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D"
1909 "\x9E\x9F"),
1910 { 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,
1911 0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
1912 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,
1913 0x009B,0x009C,0x009D,0x009E,0x009F },
1915 true,
1916 true,
1917 true,
1918 false,
1919 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1920 { RTL_TEXTENCODING_ISO_8859_2,
1921 RTL_CONSTASCII_STRINGPARAM(
1922 "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E"
1923 "\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D"
1924 "\x9E\x9F"),
1925 { 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,
1926 0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
1927 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,
1928 0x009B,0x009C,0x009D,0x009E,0x009F },
1930 true,
1931 true,
1932 true,
1933 false,
1934 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1935 { RTL_TEXTENCODING_ISO_8859_3,
1936 RTL_CONSTASCII_STRINGPARAM(
1937 "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E"
1938 "\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D"
1939 "\x9E\x9F"),
1940 { 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,
1941 0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
1942 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,
1943 0x009B,0x009C,0x009D,0x009E,0x009F },
1945 true,
1946 true,
1947 true,
1948 false,
1949 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1950 { RTL_TEXTENCODING_ISO_8859_4,
1951 RTL_CONSTASCII_STRINGPARAM(
1952 "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E"
1953 "\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D"
1954 "\x9E\x9F"),
1955 { 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,
1956 0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
1957 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,
1958 0x009B,0x009C,0x009D,0x009E,0x009F },
1960 true,
1961 true,
1962 true,
1963 false,
1964 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1965 { RTL_TEXTENCODING_ISO_8859_5,
1966 RTL_CONSTASCII_STRINGPARAM(
1967 "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E"
1968 "\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D"
1969 "\x9E\x9F"),
1970 { 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,
1971 0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
1972 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,
1973 0x009B,0x009C,0x009D,0x009E,0x009F },
1975 true,
1976 true,
1977 true,
1978 false,
1979 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1980 { RTL_TEXTENCODING_ISO_8859_6,
1981 RTL_CONSTASCII_STRINGPARAM(
1982 "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E"
1983 "\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D"
1984 "\x9E\x9F"),
1985 { 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,
1986 0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
1987 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,
1988 0x009B,0x009C,0x009D,0x009E,0x009F },
1990 true,
1991 true,
1992 true,
1993 false,
1994 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
1995 { RTL_TEXTENCODING_ISO_8859_7,
1996 RTL_CONSTASCII_STRINGPARAM(
1997 "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E"
1998 "\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D"
1999 "\x9E\x9F"),
2000 { 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,
2001 0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
2002 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,
2003 0x009B,0x009C,0x009D,0x009E,0x009F },
2005 true,
2006 true,
2007 true,
2008 false,
2009 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2010 { RTL_TEXTENCODING_ISO_8859_8,
2011 RTL_CONSTASCII_STRINGPARAM(
2012 "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E"
2013 "\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D"
2014 "\x9E\x9F"),
2015 { 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,
2016 0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
2017 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,
2018 0x009B,0x009C,0x009D,0x009E,0x009F },
2020 true,
2021 true,
2022 true,
2023 false,
2024 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2025 { RTL_TEXTENCODING_ISO_8859_9,
2026 RTL_CONSTASCII_STRINGPARAM(
2027 "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E"
2028 "\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D"
2029 "\x9E\x9F"),
2030 { 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,
2031 0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
2032 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,
2033 0x009B,0x009C,0x009D,0x009E,0x009F },
2035 true,
2036 true,
2037 true,
2038 false,
2039 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2040 { RTL_TEXTENCODING_ISO_8859_14,
2041 RTL_CONSTASCII_STRINGPARAM(
2042 "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E"
2043 "\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D"
2044 "\x9E\x9F"),
2045 { 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,
2046 0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
2047 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,
2048 0x009B,0x009C,0x009D,0x009E,0x009F },
2050 true,
2051 true,
2052 true,
2053 false,
2054 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2055 { RTL_TEXTENCODING_ISO_8859_15,
2056 RTL_CONSTASCII_STRINGPARAM(
2057 "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E"
2058 "\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D"
2059 "\x9E\x9F"),
2060 { 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,
2061 0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
2062 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,
2063 0x009B,0x009C,0x009D,0x009E,0x009F },
2065 true,
2066 true,
2067 true,
2068 false,
2069 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2070 { RTL_TEXTENCODING_MS_874,
2071 RTL_CONSTASCII_STRINGPARAM(""),
2072 { 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,
2073 0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
2074 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,
2075 0x009B,0x009C,0x009D,0x009E,0x009F },
2077 true,
2078 false,
2079 true,
2080 false,
2081 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_IGNORE },
2082 { RTL_TEXTENCODING_MS_1250,
2083 RTL_CONSTASCII_STRINGPARAM(""),
2084 { 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,
2085 0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
2086 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,
2087 0x009B,0x009C,0x009D,0x009E,0x009F },
2089 true,
2090 false,
2091 true,
2092 false,
2093 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_IGNORE },
2094 { RTL_TEXTENCODING_MS_1251,
2095 RTL_CONSTASCII_STRINGPARAM(""),
2096 { 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,
2097 0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
2098 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,
2099 0x009B,0x009C,0x009D,0x009E,0x009F },
2101 true,
2102 false,
2103 true,
2104 false,
2105 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_IGNORE },
2106 { RTL_TEXTENCODING_MS_1252,
2107 RTL_CONSTASCII_STRINGPARAM(""),
2108 { 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,
2109 0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
2110 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,
2111 0x009B,0x009C,0x009D,0x009E,0x009F },
2113 true,
2114 false,
2115 true,
2116 false,
2117 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_IGNORE },
2118 { RTL_TEXTENCODING_MS_1253,
2119 RTL_CONSTASCII_STRINGPARAM(""),
2120 { 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,
2121 0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
2122 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,
2123 0x009B,0x009C,0x009D,0x009E,0x009F },
2125 true,
2126 false,
2127 true,
2128 false,
2129 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_IGNORE },
2130 { RTL_TEXTENCODING_MS_1254,
2131 RTL_CONSTASCII_STRINGPARAM(""),
2132 { 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,
2133 0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
2134 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,
2135 0x009B,0x009C,0x009D,0x009E,0x009F },
2137 true,
2138 false,
2139 true,
2140 false,
2141 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_IGNORE },
2142 { RTL_TEXTENCODING_MS_1255,
2143 RTL_CONSTASCII_STRINGPARAM(""),
2144 { 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,
2145 0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
2146 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,
2147 0x009B,0x009C,0x009D,0x009E,0x009F },
2149 true,
2150 false,
2151 true,
2152 false,
2153 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_IGNORE },
2154 { RTL_TEXTENCODING_MS_1256,
2155 RTL_CONSTASCII_STRINGPARAM(""),
2156 { 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,
2157 0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
2158 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,
2159 0x009B,0x009C,0x009D,0x009E,0x009F },
2161 true,
2162 false,
2163 true,
2164 false,
2165 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_IGNORE },
2166 { RTL_TEXTENCODING_MS_1257,
2167 RTL_CONSTASCII_STRINGPARAM(""),
2168 { 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,
2169 0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
2170 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,
2171 0x009B,0x009C,0x009D,0x009E,0x009F },
2173 true,
2174 false,
2175 true,
2176 false,
2177 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_IGNORE },
2178 { RTL_TEXTENCODING_MS_1258,
2179 RTL_CONSTASCII_STRINGPARAM(""),
2180 { 0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,
2181 0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
2182 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,
2183 0x009B,0x009C,0x009D,0x009E,0x009F },
2185 true,
2186 false,
2187 true,
2188 false,
2189 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_IGNORE },
2190 { RTL_TEXTENCODING_MS_949,
2191 RTL_CONSTASCII_STRINGPARAM(
2192 "\xB0\xA1\xB0\xA2\x81\x41\x81\x42\xB0\xA3\x81\x43\x81\x44"
2193 "\xB0\xA4\xB0\xA5\xB0\xA6\xB0\xA7\x81\x45\x81\x46\x81\x47"
2194 "\x81\x48\x81\x49\xB0\xA8\xB0\xA9\xB0\xAA\xB0\xAB\xB0\xAC"
2195 "\xB0\xAD\xB0\xAE\xB0\xAF\x81\x4A\xB0\xB0\xB0\xB1\xB0\xB2"),
2196 { 0xAC00,0xAC01,0xAC02,0xAC03,0xAC04,0xAC05,0xAC06,0xAC07,0xAC08,
2197 0xAC09,0xAC0A,0xAC0B,0xAC0C,0xAC0D,0xAC0E,0xAC0F,0xAC10,0xAC11,
2198 0xAC12,0xAC13,0xAC14,0xAC15,0xAC16,0xAC17,0xAC18,0xAC19,0xAC1A,
2199 0xAC1B },
2201 true,
2202 true,
2203 true,
2204 false,
2205 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2206 { RTL_TEXTENCODING_MS_949,
2207 RTL_CONSTASCII_STRINGPARAM(
2208 "\xC9\xA1\xC9\xA2\xC9\xA3\xC9\xFC\xC9\xFD\xC9\xFE"
2209 "\xFE\xA1\xFE\xA2\xFE\xA3\xFE\xFC\xFE\xFD\xFE\xFE"),
2210 { 0xE000,0xE001,0xE002,0xE05B,0xE05C,0xE05D,
2211 0xE05E,0xE05F,0xE060,0xE0B9,0xE0BA,0xE0BB },
2213 true,
2214 true,
2215 true,
2216 false,
2217 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2218 { RTL_TEXTENCODING_EUC_KR,
2219 RTL_CONSTASCII_STRINGPARAM(
2220 "\xB0\xA1\xB0\xA2" "\xB0\xA3"
2221 "\xB0\xA4\xB0\xA5\xB0\xA6\xB0\xA7"
2222 "\xB0\xA8\xB0\xA9\xB0\xAA\xB0\xAB\xB0\xAC"
2223 "\xB0\xAD\xB0\xAE\xB0\xAF" "\xB0\xB0\xB0\xB1\xB0\xB2"),
2224 { 0xAC00,0xAC01, 0xAC04, 0xAC07,0xAC08,
2225 0xAC09,0xAC0A, 0xAC10,0xAC11,
2226 0xAC12,0xAC13,0xAC14,0xAC15,0xAC16,0xAC17, 0xAC19,0xAC1A,
2227 0xAC1B },
2229 true,
2230 true,
2231 true,
2232 false,
2233 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2234 { RTL_TEXTENCODING_EUC_KR,
2235 RTL_CONSTASCII_STRINGPARAM(
2236 "\xB0\xA1\xB0\xA2" "\xB0\xA3"
2237 "\xB0\xA4\xB0\xA5\xB0\xA6\xB0\xA7"
2238 "\xB0\xA8\xB0\xA9\xB0\xAA\xB0\xAB\xB0\xAC"
2239 "\xB0\xAD\xB0\xAE\xB0\xAF" "\xB0\xB0\xB0\xB1\xB0\xB2"),
2240 { 0xAC00,0xAC01,0xAC02,0xAC03,0xAC04,0xAC05,0xAC06,0xAC07,0xAC08,
2241 0xAC09,0xAC0A,0xAC0B,0xAC0C,0xAC0D,0xAC0E,0xAC0F,0xAC10,0xAC11,
2242 0xAC12,0xAC13,0xAC14,0xAC15,0xAC16,0xAC17,0xAC18,0xAC19,0xAC1A,
2243 0xAC1B },
2245 true,
2246 false,
2247 true,
2248 false,
2249 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_IGNORE },
2250 { RTL_TEXTENCODING_EUC_KR,
2251 RTL_CONSTASCII_STRINGPARAM(
2252 "\xC9\xA1\xC9\xA2\xC9\xA3\xC9\xFC\xC9\xFD\xC9\xFE"
2253 "\xFE\xA1\xFE\xA2\xFE\xA3\xFE\xFC\xFE\xFD\xFE\xFE"),
2254 { 0xE000,0xE001,0xE002,0xE05B,0xE05C,0xE05D,
2255 0xE05E,0xE05F,0xE060,0xE0B9,0xE0BA,0xE0BB },
2257 true,
2258 true,
2259 true,
2260 false,
2261 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2263 // Test UTF-8:
2265 { RTL_TEXTENCODING_UTF8,
2266 RTL_CONSTASCII_STRINGPARAM("\x00"),
2267 { 0x0000 },
2269 false,
2270 true,
2271 true,
2272 false,
2273 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2274 { RTL_TEXTENCODING_UTF8,
2275 RTL_CONSTASCII_STRINGPARAM("\xEF\xBB\xBF"),
2276 { 0xFEFF },
2278 false,
2279 true,
2280 true,
2281 false,
2282 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2283 { RTL_TEXTENCODING_UTF8,
2284 RTL_CONSTASCII_STRINGPARAM("\xEF\xBB\xBF\xEF\xBB\xBF"),
2285 { 0xFEFF,0xFEFF },
2287 false,
2288 true,
2289 true,
2290 false,
2291 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2292 { RTL_TEXTENCODING_UTF8,
2293 RTL_CONSTASCII_STRINGPARAM("\xEF\xBB\xBF"),
2294 { 0 },
2296 false,
2297 true,
2298 true,
2299 true,
2300 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2301 { RTL_TEXTENCODING_UTF8,
2302 RTL_CONSTASCII_STRINGPARAM("\xEF\xBB\xBF\xEF\xBB\xBF"),
2303 { 0xFEFF },
2305 false,
2306 true,
2307 true,
2308 true,
2309 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2310 { RTL_TEXTENCODING_UTF8,
2311 RTL_CONSTASCII_STRINGPARAM("\x01\x02\x7E\x7F"),
2312 { 0x0001,0x0002,0x007E,0x007F },
2314 false,
2315 true,
2316 true,
2317 false,
2318 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2319 { RTL_TEXTENCODING_UTF8,
2320 RTL_CONSTASCII_STRINGPARAM(
2321 "\xC0\x80\xE0\x80\x81\xF0\x80\x80\x82\xF8\x80\x80\x80\x83"
2322 "\xFC\x80\x80\x80\x80\x84"),
2323 { 0x0000,0x0001,0x0002,0x0003,0x0004 },
2325 false,
2326 true,
2327 false,
2328 false,
2329 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2330 { RTL_TEXTENCODING_UTF8,
2331 RTL_CONSTASCII_STRINGPARAM("\xED\xA1\x89\xED\xB4\x93"),
2332 { 0xD849,0xDD13 },
2334 false,
2335 true,
2336 false,
2337 false,
2338 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2339 { RTL_TEXTENCODING_UTF8,
2340 RTL_CONSTASCII_STRINGPARAM("\xED\xA1\x89\x41"),
2341 { 0xD849,0x0041 },
2343 false,
2344 true,
2345 false,
2346 false,
2347 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2349 // Test Java UTF-8:
2351 { RTL_TEXTENCODING_JAVA_UTF8,
2352 RTL_CONSTASCII_STRINGPARAM(
2353 "\xEF\xBB\xBF\xC0\x80\x01\x20\x41\x7F\xED\xA0\x80"
2354 "\xED\xB0\x80"),
2355 { 0xFEFF,0x0000,0x0001,0x0020,0x0041,0x007F,0xD800,0xDC00 },
2357 false,
2358 true,
2359 true,
2360 true,
2361 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2363 // Bug #112949#:
2365 { RTL_TEXTENCODING_SHIFT_JIS,
2366 RTL_CONSTASCII_STRINGPARAM("\x81\x63"),
2367 { 0x2026 },
2369 false,
2370 true,
2371 true,
2372 false,
2373 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2374 { RTL_TEXTENCODING_SHIFT_JIS,
2375 RTL_CONSTASCII_STRINGPARAM("\xA0\xFD\xFE\xFF"),
2376 { 0x00A0, 0x00A9, 0x2122, 0x2026 },
2378 false,
2379 true,
2380 false,
2381 false,
2382 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2383 { RTL_TEXTENCODING_SHIFT_JIS,
2384 RTL_CONSTASCII_STRINGPARAM(""),
2385 { 0x00A0, 0x00A9, 0x2122 },
2387 false,
2388 false,
2389 true,
2390 false,
2391 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_IGNORE },
2392 { RTL_TEXTENCODING_MS_932,
2393 RTL_CONSTASCII_STRINGPARAM("\x81\x63"),
2394 { 0x2026 },
2396 false,
2397 true,
2398 true,
2399 false,
2400 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2401 { RTL_TEXTENCODING_MS_932,
2402 RTL_CONSTASCII_STRINGPARAM("\xA0\xFD\xFE\xFF"),
2403 { 0x00A0, 0x00A9, 0x2122, 0x2026 },
2405 false,
2406 true,
2407 false,
2408 false,
2409 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2410 { RTL_TEXTENCODING_MS_932,
2411 RTL_CONSTASCII_STRINGPARAM(""),
2412 { 0x00A0, 0x00A9, 0x2122 },
2414 false,
2415 false,
2416 true,
2417 false,
2418 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_IGNORE },
2419 { RTL_TEXTENCODING_APPLE_JAPANESE,
2420 RTL_CONSTASCII_STRINGPARAM("\xA0\xFD\xFE\x81\x63"),
2421 { 0x00A0, 0x00A9, 0x2122, 0x2026 },
2423 false,
2424 true,
2425 true,
2426 false,
2427 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2428 { RTL_TEXTENCODING_APPLE_JAPANESE,
2429 RTL_CONSTASCII_STRINGPARAM("\xFF"),
2430 { 0x2026 },
2432 false,
2433 true,
2434 false,
2435 false,
2436 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2438 { RTL_TEXTENCODING_ADOBE_STANDARD,
2439 RTL_CONSTASCII_STRINGPARAM("\x20\x2D\xA4\xB4\xC5"),
2440 { 0x0020, 0x002D, 0x2215, 0x00B7, 0x00AF },
2442 false,
2443 true,
2444 true,
2445 false,
2446 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2447 { RTL_TEXTENCODING_ADOBE_STANDARD,
2448 RTL_CONSTASCII_STRINGPARAM("\x20\x2D\xA4\xB4\xC5"),
2449 { 0x00A0, 0x00AD, 0x2044, 0x2219, 0x02C9 },
2451 false,
2452 false,
2453 true,
2454 false,
2455 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2457 { RTL_TEXTENCODING_ADOBE_SYMBOL,
2458 RTL_CONSTASCII_STRINGPARAM("\x20\x44\x57\x6D\xA4"),
2459 { 0x0020, 0x0394, 0x03A9, 0x03BC, 0x2215 },
2461 false,
2462 true,
2463 true,
2464 false,
2465 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2466 { RTL_TEXTENCODING_ADOBE_SYMBOL,
2467 RTL_CONSTASCII_STRINGPARAM("\x20\x44\x57\x6D\xA4"),
2468 { 0x00A0, 0x2206, 0x2126, 0x00B5, 0x2044 },
2470 false,
2471 false,
2472 true,
2473 false,
2474 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2476 // Bug #i62310#:
2477 { RTL_TEXTENCODING_SHIFT_JIS,
2478 RTL_CONSTASCII_STRINGPARAM(
2479 "\xF0\x40\xF0\x7E\xF0\x80\xF0\xFC\xF1\x40\xF9\xFC"),
2480 { 0xE000, 0xE03E, 0xE03F, 0xE0BB, 0xE0BC, 0xE757 },
2482 true,
2483 true,
2484 true,
2485 false,
2486 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2488 // Bug #i73103#:
2489 { RTL_TEXTENCODING_MS_1258,
2490 RTL_CONSTASCII_STRINGPARAM(
2491 "\xC0\x41\xDE\xE3\xD2\xD4\xEC\xFD\xF2"),
2492 { 0x00C0, 0x0041, 0x0303, 0x0103, 0x0309, 0x00D4, 0x0301, 0x01B0,
2493 0x0323 },
2495 true,
2496 true,
2497 true,
2498 false,
2499 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2500 { RTL_TEXTENCODING_MS_1258,
2501 RTL_CONSTASCII_STRINGPARAM(
2502 "\xC0\x41\xDE\xE3\xD2\xD4\xEC\xFD\xF2"),
2503 { 0x00C0, 0x00C3, 0x1EB3, 0x1ED0, 0x1EF1 },
2505 false,
2506 false,
2507 true,
2508 false,
2509 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR }
2511 for (std::size_t i = 0; i < sizeof data / sizeof data[0]; ++i) {
2512 doComplexCharSetTest(data[i]);
2516 void Test::testComplexCut() {
2517 static ComplexCharSetTest const data[]
2518 = { { RTL_TEXTENCODING_EUC_JP,
2519 RTL_CONSTASCII_STRINGPARAM("\xA1"),
2520 { 0 },
2522 true,
2523 true,
2524 false,
2525 false,
2526 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2527 { RTL_TEXTENCODING_EUC_JP,
2528 RTL_CONSTASCII_STRINGPARAM("\x8E"),
2529 { 0 },
2531 true,
2532 true,
2533 false,
2534 false,
2535 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2536 { RTL_TEXTENCODING_EUC_JP,
2537 RTL_CONSTASCII_STRINGPARAM("\x8F"),
2538 { 0 },
2540 true,
2541 true,
2542 false,
2543 false,
2544 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2545 { RTL_TEXTENCODING_EUC_JP,
2546 RTL_CONSTASCII_STRINGPARAM("\x8F\xA1"),
2547 { 0 },
2549 true,
2550 true,
2551 false,
2552 false,
2553 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2554 { RTL_TEXTENCODING_EUC_CN,
2555 RTL_CONSTASCII_STRINGPARAM("\xA1"),
2556 { 0 },
2558 true,
2559 true,
2560 false,
2561 false,
2562 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR } /* ,
2563 { RTL_TEXTENCODING_EUC_TW,
2564 RTL_CONSTASCII_STRINGPARAM("\xA1"),
2565 { 0 },
2567 true,
2568 true,
2569 false,
2570 false,
2571 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2572 { RTL_TEXTENCODING_EUC_TW,
2573 RTL_CONSTASCII_STRINGPARAM("\x8E"),
2574 { 0 },
2576 true,
2577 true,
2578 false,
2579 false,
2580 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2581 { RTL_TEXTENCODING_EUC_TW,
2582 RTL_CONSTASCII_STRINGPARAM("\x8E\xA1"),
2583 { 0 },
2585 true,
2586 true,
2587 false,
2588 false,
2589 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR },
2590 { RTL_TEXTENCODING_EUC_TW,
2591 RTL_CONSTASCII_STRINGPARAM("\x8E\xA1\xA1"),
2592 { 0 },
2594 true,
2595 true,
2596 false,
2597 false,
2598 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR } */ };
2599 for (std::size_t i = 0; i < sizeof data / sizeof data[0]; ++i) {
2600 doComplexCharSetCutTest(data[i]);
2604 void Test::testSRCBUFFERTOSMALL() {
2605 rtl_TextToUnicodeConverter cv = rtl_createTextToUnicodeConverter(
2606 RTL_TEXTENCODING_EUC_JP);
2607 OSL_ASSERT(cv != NULL);
2608 rtl_TextToUnicodeContext cx = rtl_createTextToUnicodeContext(cv);
2609 OSL_ASSERT(cx != NULL);
2610 char src = '\xA1';
2611 sal_Unicode dst[10];
2612 sal_uInt32 info;
2613 sal_Size cvt;
2614 CPPUNIT_ASSERT_EQUAL(
2615 sal_Size(0),
2616 rtl_convertTextToUnicode(
2617 cv, cx, &src, 1, dst, sizeof dst / sizeof (sal_Unicode),
2618 (RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_ERROR |
2619 RTL_TEXTTOUNICODE_FLAGS_MBUNDEFINED_ERROR |
2620 RTL_TEXTTOUNICODE_FLAGS_INVALID_ERROR),
2621 &info, &cvt));
2622 CPPUNIT_ASSERT_EQUAL(RTL_TEXTTOUNICODE_INFO_SRCBUFFERTOSMALL, info);
2623 CPPUNIT_ASSERT(cvt <= 1);
2624 rtl_destroyTextToUnicodeContext(cv, cx);
2625 rtl_destroyTextToUnicodeConverter(cv);
2628 void Test::testMime() {
2629 struct Data {
2630 char const * mime;
2631 rtl_TextEncoding encoding;
2632 bool reverse;
2634 static Data const data[] = {
2635 { "GBK", RTL_TEXTENCODING_GBK, false },
2636 { "CP936", RTL_TEXTENCODING_GBK, false },
2637 { "MS936", RTL_TEXTENCODING_GBK, false },
2638 { "windows-936", RTL_TEXTENCODING_GBK, false },
2640 { "GB18030", RTL_TEXTENCODING_GB_18030, false },
2642 { "TIS-620", RTL_TEXTENCODING_TIS_620, true },
2643 { "ISO-8859-11", RTL_TEXTENCODING_TIS_620, false }, // not registered
2645 { "CP874", RTL_TEXTENCODING_MS_874, false }, // not registered
2646 { "MS874", RTL_TEXTENCODING_MS_874, false }, // not registered
2647 { "windows-874", RTL_TEXTENCODING_MS_874, true }, // not registered
2649 { "ISO_8859-8:1988", RTL_TEXTENCODING_ISO_8859_8, false },
2650 { "iso-ir-138", RTL_TEXTENCODING_ISO_8859_8, false },
2651 { "ISO_8859-8", RTL_TEXTENCODING_ISO_8859_8, false },
2652 { "ISO-8859-8", RTL_TEXTENCODING_ISO_8859_8, true },
2653 { "hebrew", RTL_TEXTENCODING_ISO_8859_8, false },
2654 { "csISOLatinHebrew", RTL_TEXTENCODING_ISO_8859_8, false },
2656 { "windows-1255", RTL_TEXTENCODING_MS_1255, true },
2658 { "IBM862", RTL_TEXTENCODING_IBM_862, true },
2659 { "cp862", RTL_TEXTENCODING_IBM_862, false },
2660 { "862", RTL_TEXTENCODING_IBM_862, false },
2661 { "csPC862LatinHebrew", RTL_TEXTENCODING_IBM_862, false },
2663 { "ISO_8859-6:1987", RTL_TEXTENCODING_ISO_8859_6, false },
2664 { "iso-ir-127", RTL_TEXTENCODING_ISO_8859_6, false },
2665 { "ISO_8859-6", RTL_TEXTENCODING_ISO_8859_6, false },
2666 { "ISO-8859-6", RTL_TEXTENCODING_ISO_8859_6, true },
2667 { "ECMA-114", RTL_TEXTENCODING_ISO_8859_6, false },
2668 { "ASMO-708", RTL_TEXTENCODING_ISO_8859_6, false },
2669 { "arabic", RTL_TEXTENCODING_ISO_8859_6, false },
2670 { "csISOLatinArabic", RTL_TEXTENCODING_ISO_8859_6, false },
2672 { "windows-1256", RTL_TEXTENCODING_MS_1256, true },
2674 { "IBM864", RTL_TEXTENCODING_IBM_864, true },
2675 { "cp864", RTL_TEXTENCODING_IBM_864, false },
2676 { "csIBM864", RTL_TEXTENCODING_IBM_864, false },
2678 { "KOI8-R", RTL_TEXTENCODING_KOI8_R, false },
2679 { "csKOI8R", RTL_TEXTENCODING_KOI8_R, false },
2680 { "koi8-r", RTL_TEXTENCODING_KOI8_R, true },
2682 { "KOI8-U", RTL_TEXTENCODING_KOI8_U, true },
2684 { "IBM860", RTL_TEXTENCODING_IBM_860, true },
2685 { "cp860", RTL_TEXTENCODING_IBM_860, false },
2686 { "860", RTL_TEXTENCODING_IBM_860, false },
2687 { "csIBM860", RTL_TEXTENCODING_IBM_860, false },
2689 { "IBM861", RTL_TEXTENCODING_IBM_861, true },
2690 { "cp861", RTL_TEXTENCODING_IBM_861, false },
2691 { "861", RTL_TEXTENCODING_IBM_861, false },
2692 { "cp-is", RTL_TEXTENCODING_IBM_861, false },
2693 { "csIBM861", RTL_TEXTENCODING_IBM_861, false },
2695 { "IBM863", RTL_TEXTENCODING_IBM_863, true },
2696 { "cp863", RTL_TEXTENCODING_IBM_863, false },
2697 { "863", RTL_TEXTENCODING_IBM_863, false },
2698 { "csIBM863", RTL_TEXTENCODING_IBM_863, false },
2700 { "IBM865", RTL_TEXTENCODING_IBM_865, true },
2701 { "cp865", RTL_TEXTENCODING_IBM_865, false },
2702 { "865", RTL_TEXTENCODING_IBM_865, false },
2703 { "csIBM865", RTL_TEXTENCODING_IBM_865, false },
2705 { "Latin-9", RTL_TEXTENCODING_ISO_8859_15, false },
2707 { "KS_C_5601-1987", RTL_TEXTENCODING_MS_949, false },
2708 { "iso-ir-149", RTL_TEXTENCODING_MS_949, false },
2709 { "KS_C_5601-1989", RTL_TEXTENCODING_MS_949, false },
2710 { "KSC_5601", RTL_TEXTENCODING_MS_949, false },
2711 { "korean", RTL_TEXTENCODING_MS_949, false },
2712 { "csKSC56011987", RTL_TEXTENCODING_MS_949, false },
2713 { 0, RTL_TEXTENCODING_MS_949, true },
2715 { "Adobe-Standard-Encoding", RTL_TEXTENCODING_ADOBE_STANDARD, false },
2716 { "csAdobeStandardEncoding", RTL_TEXTENCODING_ADOBE_STANDARD, false },
2717 { "Adobe-Symbol-Encoding", RTL_TEXTENCODING_ADOBE_SYMBOL, false },
2718 { "csHPPSMath", RTL_TEXTENCODING_ADOBE_SYMBOL, false },
2720 { "PTCP154", RTL_TEXTENCODING_PT154, true },
2721 { "csPTCP154", RTL_TEXTENCODING_PT154, false },
2722 { "PT154", RTL_TEXTENCODING_PT154, false },
2723 { "CP154", RTL_TEXTENCODING_PT154, false },
2724 { "Cyrillic-Asian", RTL_TEXTENCODING_PT154, false }
2726 for (std::size_t i = 0; i < sizeof data / sizeof data[0]; ++i) {
2727 if (data[i].mime == 0) {
2728 OSL_ASSERT(data[i].reverse);
2729 CPPUNIT_ASSERT_EQUAL(
2730 static_cast< char const * >(0),
2731 rtl_getMimeCharsetFromTextEncoding(data[i].encoding));
2732 } else {
2733 CPPUNIT_ASSERT_EQUAL(
2734 data[i].encoding,
2735 rtl_getTextEncodingFromMimeCharset(data[i].mime));
2736 if (data[i].reverse) {
2737 CPPUNIT_ASSERT_EQUAL(
2738 rtl::OString(data[i].mime),
2739 rtl::OString(
2740 rtl_getMimeCharsetFromTextEncoding(data[i].encoding)));
2746 void Test::testWindows() {
2747 struct Data {
2748 sal_uInt32 codePage;
2749 rtl_TextEncoding encoding;
2750 bool reverse;
2752 static Data const data[] = {
2753 { 437, RTL_TEXTENCODING_IBM_437, true },
2754 { 708, RTL_TEXTENCODING_ISO_8859_6, false },
2755 { 737, RTL_TEXTENCODING_IBM_737, true },
2756 { 775, RTL_TEXTENCODING_IBM_775, true },
2757 { 850, RTL_TEXTENCODING_IBM_850, true },
2758 { 852, RTL_TEXTENCODING_IBM_852, true },
2759 { 855, RTL_TEXTENCODING_IBM_855, true },
2760 { 857, RTL_TEXTENCODING_IBM_857, true },
2761 { 860, RTL_TEXTENCODING_IBM_860, true },
2762 { 861, RTL_TEXTENCODING_IBM_861, true },
2763 { 862, RTL_TEXTENCODING_IBM_862, true },
2764 { 863, RTL_TEXTENCODING_IBM_863, true },
2765 { 864, RTL_TEXTENCODING_IBM_864, true },
2766 { 865, RTL_TEXTENCODING_IBM_865, true },
2767 { 866, RTL_TEXTENCODING_IBM_866, true },
2768 { 869, RTL_TEXTENCODING_IBM_869, true },
2769 { 874, RTL_TEXTENCODING_MS_874, true },
2770 { 932, RTL_TEXTENCODING_MS_932, true },
2771 { 936, RTL_TEXTENCODING_MS_936, true },
2772 { 949, RTL_TEXTENCODING_MS_949, true },
2773 { 950, RTL_TEXTENCODING_MS_950, true },
2774 { 1250, RTL_TEXTENCODING_MS_1250, true },
2775 { 1251, RTL_TEXTENCODING_MS_1251, true },
2776 { 1252, RTL_TEXTENCODING_MS_1252, true },
2777 { 1253, RTL_TEXTENCODING_MS_1253, true },
2778 { 1254, RTL_TEXTENCODING_MS_1254, true },
2779 { 1255, RTL_TEXTENCODING_MS_1255, true },
2780 { 1256, RTL_TEXTENCODING_MS_1256, true },
2781 { 1257, RTL_TEXTENCODING_MS_1257, true },
2782 { 1258, RTL_TEXTENCODING_MS_1258, true },
2783 { 1361, RTL_TEXTENCODING_MS_1361, true },
2784 { 10000, RTL_TEXTENCODING_APPLE_ROMAN, true },
2785 { 10001, RTL_TEXTENCODING_APPLE_JAPANESE, true },
2786 { 10002, RTL_TEXTENCODING_APPLE_CHINTRAD, true },
2787 { 10003, RTL_TEXTENCODING_APPLE_KOREAN, true },
2788 { 10004, RTL_TEXTENCODING_APPLE_ARABIC, true },
2789 { 10005, RTL_TEXTENCODING_APPLE_HEBREW, true },
2790 { 10006, RTL_TEXTENCODING_APPLE_GREEK, true },
2791 { 10007, RTL_TEXTENCODING_APPLE_CYRILLIC, true },
2792 { 10008, RTL_TEXTENCODING_APPLE_CHINSIMP, true },
2793 { 10010, RTL_TEXTENCODING_APPLE_ROMANIAN, true },
2794 { 10017, RTL_TEXTENCODING_APPLE_UKRAINIAN, true },
2795 { 10029, RTL_TEXTENCODING_APPLE_CENTEURO, true },
2796 { 10079, RTL_TEXTENCODING_APPLE_ICELAND, true },
2797 { 10081, RTL_TEXTENCODING_APPLE_TURKISH, true },
2798 { 10082, RTL_TEXTENCODING_APPLE_CROATIAN, true },
2799 { 20127, RTL_TEXTENCODING_ASCII_US, true },
2800 { 20866, RTL_TEXTENCODING_KOI8_R, true },
2801 { 21866, RTL_TEXTENCODING_KOI8_U, true },
2802 { 28591, RTL_TEXTENCODING_ISO_8859_1, true },
2803 { 28592, RTL_TEXTENCODING_ISO_8859_2, true },
2804 { 28593, RTL_TEXTENCODING_ISO_8859_3, true },
2805 { 28594, RTL_TEXTENCODING_ISO_8859_4, true },
2806 { 28595, RTL_TEXTENCODING_ISO_8859_5, true },
2807 { 28596, RTL_TEXTENCODING_ISO_8859_6, true },
2808 { 28597, RTL_TEXTENCODING_ISO_8859_7, true },
2809 { 28598, RTL_TEXTENCODING_ISO_8859_8, true },
2810 { 28599, RTL_TEXTENCODING_ISO_8859_9, true },
2811 { 28605, RTL_TEXTENCODING_ISO_8859_15, true },
2812 { 50220, RTL_TEXTENCODING_ISO_2022_JP, true },
2813 { 50225, RTL_TEXTENCODING_ISO_2022_KR, true },
2814 { 51932, RTL_TEXTENCODING_EUC_JP, true },
2815 { 51936, RTL_TEXTENCODING_EUC_CN, true },
2816 { 51949, RTL_TEXTENCODING_EUC_KR, true },
2817 { 65000, RTL_TEXTENCODING_UTF7, true },
2818 { 65001, RTL_TEXTENCODING_UTF8, true },
2819 { 1200, RTL_TEXTENCODING_DONTKNOW, false }, // UTF_16LE
2820 { 1201, RTL_TEXTENCODING_DONTKNOW, false }, // UTF_16LE
2821 { 0, RTL_TEXTENCODING_DONTKNOW, true },
2822 { 0, RTL_TEXTENCODING_UCS4, true },
2823 { 0, RTL_TEXTENCODING_UCS2, true },
2824 { 0, RTL_TEXTENCODING_ISCII_DEVANAGARI, true }
2826 for (std::size_t i = 0; i < sizeof data / sizeof data[0]; ++i) {
2827 OSL_ASSERT(data[i].codePage != 0 || data[i].reverse);
2828 if (data[i].codePage != 0) {
2829 CPPUNIT_ASSERT_EQUAL(
2830 data[i].encoding,
2831 rtl_getTextEncodingFromWindowsCodePage(data[i].codePage));
2833 if (data[i].reverse) {
2834 CPPUNIT_ASSERT_EQUAL(
2835 data[i].codePage,
2836 rtl_getWindowsCodePageFromTextEncoding(data[i].encoding));
2841 void Test::testInfo() {
2842 struct Data {
2843 rtl_TextEncoding encoding;
2844 sal_uInt32 flag;
2845 bool value;
2847 static Data const data[] = {
2848 { RTL_TEXTENCODING_APPLE_CHINTRAD, RTL_TEXTENCODING_INFO_ASCII, false },
2849 { RTL_TEXTENCODING_APPLE_JAPANESE, RTL_TEXTENCODING_INFO_ASCII, false },
2850 { RTL_TEXTENCODING_APPLE_KOREAN, RTL_TEXTENCODING_INFO_ASCII, false },
2851 { RTL_TEXTENCODING_BIG5, RTL_TEXTENCODING_INFO_ASCII, false },
2852 { RTL_TEXTENCODING_BIG5_HKSCS, RTL_TEXTENCODING_INFO_ASCII, false },
2853 { RTL_TEXTENCODING_EUC_CN, RTL_TEXTENCODING_INFO_ASCII, true },
2854 { RTL_TEXTENCODING_EUC_JP, RTL_TEXTENCODING_INFO_ASCII, true },
2855 { RTL_TEXTENCODING_EUC_KR, RTL_TEXTENCODING_INFO_ASCII, true },
2856 { RTL_TEXTENCODING_EUC_TW, RTL_TEXTENCODING_INFO_ASCII, true },
2857 { RTL_TEXTENCODING_GBK, RTL_TEXTENCODING_INFO_ASCII, false },
2858 { RTL_TEXTENCODING_GB_18030, RTL_TEXTENCODING_INFO_ASCII, false },
2859 { RTL_TEXTENCODING_GB_18030, RTL_TEXTENCODING_INFO_UNICODE, true },
2860 { RTL_TEXTENCODING_ISO_2022_CN, RTL_TEXTENCODING_INFO_CONTEXT, true },
2861 { RTL_TEXTENCODING_ISO_2022_CN, RTL_TEXTENCODING_INFO_ASCII, false },
2862 { RTL_TEXTENCODING_ISO_2022_JP, RTL_TEXTENCODING_INFO_CONTEXT, true },
2863 { RTL_TEXTENCODING_ISO_2022_JP, RTL_TEXTENCODING_INFO_ASCII, false },
2864 { RTL_TEXTENCODING_ISO_2022_KR, RTL_TEXTENCODING_INFO_CONTEXT, true },
2865 { RTL_TEXTENCODING_ISO_2022_KR, RTL_TEXTENCODING_INFO_ASCII, false },
2866 { RTL_TEXTENCODING_MS_1361, RTL_TEXTENCODING_INFO_ASCII, false },
2867 { RTL_TEXTENCODING_MS_874, RTL_TEXTENCODING_INFO_ASCII, true },
2868 { RTL_TEXTENCODING_MS_932, RTL_TEXTENCODING_INFO_ASCII, false },
2869 { RTL_TEXTENCODING_MS_936, RTL_TEXTENCODING_INFO_ASCII, false },
2870 { RTL_TEXTENCODING_MS_949, RTL_TEXTENCODING_INFO_ASCII, false },
2871 { RTL_TEXTENCODING_MS_950, RTL_TEXTENCODING_INFO_ASCII, false },
2872 { RTL_TEXTENCODING_SHIFT_JIS, RTL_TEXTENCODING_INFO_ASCII, false },
2873 { RTL_TEXTENCODING_KOI8_R, RTL_TEXTENCODING_INFO_ASCII, true },
2874 { RTL_TEXTENCODING_KOI8_R, RTL_TEXTENCODING_INFO_MIME, true },
2875 { RTL_TEXTENCODING_KOI8_U, RTL_TEXTENCODING_INFO_ASCII, true },
2876 { RTL_TEXTENCODING_KOI8_U, RTL_TEXTENCODING_INFO_MIME, true },
2877 { RTL_TEXTENCODING_IBM_860, RTL_TEXTENCODING_INFO_MIME, true },
2878 { RTL_TEXTENCODING_IBM_861, RTL_TEXTENCODING_INFO_MIME, true },
2879 { RTL_TEXTENCODING_IBM_863, RTL_TEXTENCODING_INFO_MIME, true },
2880 { RTL_TEXTENCODING_IBM_865, RTL_TEXTENCODING_INFO_MIME, true },
2881 { RTL_TEXTENCODING_ISCII_DEVANAGARI, RTL_TEXTENCODING_INFO_ASCII, true },
2882 { RTL_TEXTENCODING_ISCII_DEVANAGARI, RTL_TEXTENCODING_INFO_MIME, false },
2883 { RTL_TEXTENCODING_ADOBE_STANDARD, RTL_TEXTENCODING_INFO_ASCII, false },
2884 { RTL_TEXTENCODING_ADOBE_STANDARD, RTL_TEXTENCODING_INFO_MIME, true },
2885 { RTL_TEXTENCODING_ADOBE_STANDARD, RTL_TEXTENCODING_INFO_SYMBOL, false },
2886 { RTL_TEXTENCODING_ADOBE_SYMBOL, RTL_TEXTENCODING_INFO_ASCII, false },
2887 { RTL_TEXTENCODING_ADOBE_SYMBOL, RTL_TEXTENCODING_INFO_MIME, true },
2888 { RTL_TEXTENCODING_ADOBE_SYMBOL, RTL_TEXTENCODING_INFO_SYMBOL, true },
2889 { RTL_TEXTENCODING_PT154, RTL_TEXTENCODING_INFO_ASCII, true },
2890 { RTL_TEXTENCODING_PT154, RTL_TEXTENCODING_INFO_MIME, true }
2892 for (std::size_t i = 0; i < sizeof data / sizeof data[0]; ++i) {
2893 rtl_TextEncodingInfo info;
2894 info.StructSize = sizeof info;
2895 CPPUNIT_ASSERT(rtl_getTextEncodingInfo(data[i].encoding, &info));
2896 CPPUNIT_ASSERT_EQUAL(data[i].value, ((info.Flags & data[i].flag) != 0));
2900 CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(Test, "rtl_textcvt");
2904 NOADDITIONAL;