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