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