| author | William Roberts <williamr@symbian.org> | 
| Wed, 23 Dec 2009 11:47:04 +0000 | |
| changeset 5 | c9417927a896 | 
| parent 4 | 56f325a607ea | 
| child 6 | 0173bcd7697c | 
| permissions | -rw-r--r-- | 
| 0 | 1 | // Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). | 
| 2 | // All rights reserved. | |
| 3 | // This component and the accompanying materials are made available | |
| 4 
56f325a607ea
Revision: 200951
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 4 | // under the terms of "Eclipse Public License v1.0"" | 
| 0 | 5 | // which accompanies this distribution, and is available | 
| 6 | // at the URL "http://www.eclipse.org/legal/epl-v10.html". | |
| 7 | // | |
| 8 | // Initial Contributors: | |
| 9 | // Nokia Corporation - initial contribution. | |
| 10 | // | |
| 11 | // Contributors: | |
| 12 | // | |
| 13 | // Description: | |
| 14 | // e32test\buffer\t_char.cpp | |
| 15 | // Overview: | |
| 16 | // Test TChar, TCharF, TChaLC and TCharUC character classes. | |
| 17 | // API Information: | |
| 18 | // TChar, TCharF, TChaLC, TCharUC. | |
| 19 | // Details: | |
| 20 | // - For different characters | |
| 21 | // - Verify character's standard category information | |
| 22 | // - CR1080 verification of standard category information for additional Indic characters | |
| 23 | // - Verify character's bi-directional Unicode character category. | |
| 24 | // - Check if character is printable. | |
| 25 | // - Check if character is a graphical character. | |
| 26 | // - Verify for Chinese, Japanese, Korean (CJK) notional width. | |
| 27 | // - Verify that it is upper case, lower case form. | |
| 28 | // - Verify character's title case. | |
| 29 | // - Verify mirrored property of character. | |
| 30 | // - Verify integer numeric property of character. | |
| 31 | // - Verify character can be decomposed. | |
| 32 | // - For different unicode strings, verify unicode collation | |
| 33 | // - Compare data of two descriptors using the different collation methods and | |
| 34 | // check results are as expected. | |
| 35 | // - Call the methods in the TChar, TCharF, TCharUC and TCharUC | |
| 36 | // - For TChar, TCharF, TChaLC, TCharUC | |
| 37 | // - Check the constructor and operators are as expected. | |
| 38 | // - Check folded character is same when it is converted to folded uppercase. | |
| 39 | // - Check folded and uppercase character is same when it is converted to | |
| 40 | // uppercase letter stripped of accents. | |
| 41 | // - Convert lowercase, uppercase characters to it's lowercase form, check the conversion | |
| 42 | // is as expected, and lowercase characters are unchanged. | |
| 43 | // - Convert lowercase, uppercase characters to it's uppercase form, check the conversion | |
| 44 | // is as expected, and uppercase characters are unchanged. | |
| 45 | // Platforms/Drives/Compatibility: | |
| 46 | // All | |
| 47 | // Assumptions/Requirement/Pre-requisites: | |
| 48 | // Failures and causes: | |
| 49 | // Base Port information: | |
| 50 | // | |
| 51 | // | |
| 52 | ||
| 53 | #include <e32test.h> | |
| 54 | #include <collate.h> | |
| 55 | ||
| 56 | #ifdef __VC32__ | |
| 57 | // Solve compilation problem caused by non-English locale | |
| 58 |     #pragma setlocale("english")
 | |
| 59 | #endif | |
| 60 | ||
| 61 | LOCAL_D RTest test(_L("T_CHAR"));
 | |
| 62 | ||
| 63 | enum | |
| 64 | 	{
 | |
| 65 | Ydieresis=0x178, | |
| 66 | nobreakspace=160, | |
| 67 | exclamdown, | |
| 68 | cent, | |
| 69 | sterling, | |
| 70 | currency, | |
| 71 | yen, | |
| 72 | brokenbar, | |
| 73 | section, | |
| 74 | dieresis, | |
| 75 | copyright, | |
| 76 | ordfeminine, | |
| 77 | leftdoubleanglequote, | |
| 78 | logicalnot, | |
| 79 | softhyphen, | |
| 80 | registered, | |
| 81 | macron, | |
| 82 | degree, | |
| 83 | plusminus, | |
| 84 | twosuperior, | |
| 85 | threesuperior, | |
| 86 | acute, | |
| 87 | micro, | |
| 88 | pilcrow, | |
| 89 | dotaccent, | |
| 90 | cedilla, | |
| 91 | onesuperior, | |
| 92 | ordmasculine, | |
| 93 | rightdoubleanglequote, | |
| 94 | onequarter, | |
| 95 | onehalf, | |
| 96 | threequarters, | |
| 97 | questiondown, | |
| 98 | Agrave, | |
| 99 | Aacute, | |
| 100 | Acircumflex, | |
| 101 | Atilde, | |
| 102 | Adieresis, | |
| 103 | Aring, | |
| 104 | AE, | |
| 105 | Ccedilla, | |
| 106 | Egrave, | |
| 107 | Eacute, | |
| 108 | Ecircumflex, | |
| 109 | Edieresis, | |
| 110 | Igrave, | |
| 111 | Iacute, | |
| 112 | Icircumflex, | |
| 113 | Idieresis, | |
| 114 | Eth, | |
| 115 | Ntilde, | |
| 116 | Ograve, | |
| 117 | Oacute, | |
| 118 | Ocircumflex, | |
| 119 | Otilde, | |
| 120 | Odieresis, | |
| 121 | multiplication, | |
| 122 | Oslash, | |
| 123 | Ugrave, | |
| 124 | Uacute, | |
| 125 | Ucircumflex, | |
| 126 | Udieresis, | |
| 127 | Yacute, | |
| 128 | Thorn, | |
| 129 | germanbls, | |
| 130 | agrave, | |
| 131 | aacute, | |
| 132 | acircumflex, | |
| 133 | atilde, | |
| 134 | adieresis, | |
| 135 | aring, | |
| 136 | ae, | |
| 137 | ccedilla, | |
| 138 | egrave, | |
| 139 | eacute, | |
| 140 | ecircumflex, | |
| 141 | edieresis, | |
| 142 | igrave, | |
| 143 | iacute, | |
| 144 | icircumflex, | |
| 145 | idieresis, | |
| 146 | eth, | |
| 147 | ntilde, | |
| 148 | ograve, | |
| 149 | oacute, | |
| 150 | ocircumflex, | |
| 151 | otilde, | |
| 152 | odieresis, | |
| 153 | division, | |
| 154 | oslash, | |
| 155 | ugrave, | |
| 156 | uacute, | |
| 157 | ucircumflex, | |
| 158 | udieresis, | |
| 159 | yacute, | |
| 160 | thorn, | |
| 161 | ydieresis, | |
| 162 | Dzcaron = 0x01C5, | |
| 163 | Lj = 0x01C8, | |
| 164 | Udearesismacron = 0x01D5, | |
| 165 | Adotabove = 0x01E0, | |
| 166 | AEmacron = 0x01E2, | |
| 167 | aringacute = 0x01FB, | |
| 168 | scommabelow = 0x0219, | |
| 169 | Otildemacron = 0x022C, | |
| 170 | Cstroke = 0x023B, | |
| 171 | doubleprime = 0x02BA, | |
| 172 | lowleftarrow = 0x02FF, | |
| 173 | candrabindu = 0x0310, | |
| 174 | doublerightwardsarrowbelow = 0x0362, | |
| 175 | latinsmalla = 0x0363 | |
| 176 | }; | |
| 177 | ||
| 178 | struct TCharDump | |
| 179 | 	{
 | |
| 180 | TUint iChar; | |
| 181 | }; | |
| 182 | ||
| 183 | /*EXPORT_C*/ void TChar::__DbgTest(void* pTCharDump) const | |
| 184 | 	{
 | |
| 185 | ((TCharDump*)pTCharDump)->iChar=iChar; | |
| 186 | } | |
| 187 | ||
| 188 | typedef enum {eTChar, eTCharF, eTCharC, eTCharLC, eTCharUC} TCharTypes;
 | |
| 189 | ||
| 190 | template<class TCharType> | |
| 191 | class TestTChar | |
| 192 | 	{
 | |
| 193 | public: | |
| 194 | void Test1(); | |
| 195 | void Test2(TCharTypes); | |
| 196 | void Test3(TCharTypes); | |
| 197 | void Test4(TCharTypes); | |
| 198 | }; | |
| 199 | ||
| 200 | template<class TCharType> | |
| 201 | GLDEF_C void TestTChar<TCharType>::Test1() | |
| 202 | // Test that the methods are in the DLL | |
| 203 | 	{
 | |
| 204 | 	test.Start(_L("Test methods are in DLL - TChar"));
 | |
| 205 | 	TChar a('X');
 | |
| 206 | TUint TU=0; | |
| 207 | TChar b(TU); | |
| 208 | TChar c(b); | |
| 209 | ||
| 210 | c=TU; | |
| 211 | c=a; | |
| 212 | c-=TU; | |
| 213 | c+=TU; | |
| 214 | c-TU; | |
| 215 | c+TU; | |
| 216 | c=(TUint)(a); | |
| 217 | ||
| 218 | a.Fold(); | |
| 219 | a.LowerCase(); | |
| 220 | a.UpperCase(); | |
| 221 | a.Eos(); | |
| 222 | a.IsLower(); | |
| 223 | a.IsUpper(); | |
| 224 | a.IsAlpha(); | |
| 225 | a.IsDigit(); | |
| 226 | a.IsAlphaDigit(); | |
| 227 | a.IsHexDigit(); | |
| 228 | a.IsSpace(); | |
| 229 | a.IsPunctuation(); | |
| 230 | a.IsGraph(); | |
| 231 | a.IsPrint(); | |
| 232 | // a.SetChar(TU); protected | |
| 233 | ||
| 234 | 	test.Next(_L("Test methods are in DLL - TCharF"));	
 | |
| 235 | TCharF d(TU); | |
| 236 | TCharF e(a); | |
| 237 | e=d; | |
| 238 | e=TU; | |
| 239 | e=a; | |
| 240 | ||
| 241 | 	test.Next(_L("Test methods are in DLL - TCharLC"));	
 | |
| 242 | TCharLC h(TU); | |
| 243 | TCharLC i(a); | |
| 244 | h=i; | |
| 245 | h=TU; | |
| 246 | h=a; | |
| 247 | ||
| 248 | 	test.Next(_L("Test methods are in DLL - TCharUC"));	
 | |
| 249 | TCharUC j(TU); | |
| 250 | TCharUC k(a); | |
| 251 | k=j; | |
| 252 | k=TU; | |
| 253 | k=a; | |
| 254 | test.End(); | |
| 255 | } | |
| 256 | ||
| 257 | ||
| 258 | //********************************* | |
| 259 | // Test the constructors | |
| 260 | //********************************* | |
| 261 | template<class TCharType> | |
| 262 | GLDEF_C void TestTChar<TCharType>::Test2(TCharTypes CharType) | |
| 263 | 	{
 | |
| 264 | 	test.Start(_L("Test constructors"));
 | |
| 265 | TCharDump dump; | |
| 266 | 	TCharType b('x');
 | |
| 267 | b.__DbgTest(&dump); | |
| 268 | switch(CharType) | |
| 269 | 		{
 | |
| 270 | case eTChar: | |
| 271 | case eTCharLC: | |
| 272 | test(dump.iChar=='x'); | |
| 273 | break; | |
| 274 | case eTCharUC: | |
| 275 | test(dump.iChar=='X'); | |
| 276 | break; | |
| 277 | case eTCharF: | |
| 278 | case eTCharC: | |
| 279 | test(dump.iChar == 'x'); | |
| 280 | } | |
| 281 | test.End(); | |
| 282 | } | |
| 283 | ||
| 284 | ||
| 285 | //********************************* | |
| 286 | // Test the operators | |
| 287 | //********************************* | |
| 288 | template<class TCharType> | |
| 289 | GLDEF_C void TestTChar<TCharType>::Test3(TCharTypes CharType) | |
| 290 | 	{
 | |
| 291 | 	test.Start(_L("Test the operators")); 
 | |
| 292 | 	test.Next(_L("="));
 | |
| 293 | TCharDump dump; | |
| 294 | TUint TUx='x', TUX='X'; | |
| 295 | TChar TCy='y', TCY='Y'; | |
| 296 | 	TCharType aChar('m');
 | |
| 297 | ||
| 298 | aChar=TUx; | |
| 299 | aChar.__DbgTest(&dump); | |
| 300 | switch(CharType) | |
| 301 | 		{
 | |
| 302 | case eTChar: | |
| 303 | case eTCharLC: test(dump.iChar=='x'); break; | |
| 304 | case eTCharUC: test(dump.iChar=='X'); break; | |
| 305 | case eTCharF: | |
| 306 | case eTCharC: | |
| 307 | test(dump.iChar == 'x'); | |
| 308 | } | |
| 309 | ||
| 310 | aChar=TUX; | |
| 311 | aChar.__DbgTest(&dump); | |
| 312 | switch(CharType) | |
| 313 | 		{	
 | |
| 314 | case eTCharLC: test(dump.iChar=='x'); break; | |
| 315 | case eTChar: | |
| 316 | case eTCharUC: test(dump.iChar=='X'); break; | |
| 317 | case eTCharF: | |
| 318 | case eTCharC: | |
| 319 | test(dump.iChar == 'x'); | |
| 320 | } | |
| 321 | ||
| 322 | aChar=TCy; | |
| 323 | aChar.__DbgTest(&dump); | |
| 324 | switch(CharType) | |
| 325 | 		{
 | |
| 326 | case eTChar: | |
| 327 | case eTCharLC: test(dump.iChar=='y'); break; | |
| 328 | case eTCharUC: test(dump.iChar=='Y'); break; | |
| 329 | case eTCharF: | |
| 330 | case eTCharC: | |
| 331 | test(dump.iChar == 'y'); | |
| 332 | } | |
| 333 | ||
| 334 | aChar=TCY; | |
| 335 | aChar.__DbgTest(&dump); | |
| 336 | switch(CharType) | |
| 337 | 		{	
 | |
| 338 | case eTCharLC: test(dump.iChar=='y'); break; | |
| 339 | case eTChar: | |
| 340 | case eTCharUC: test(dump.iChar=='Y'); break; | |
| 341 | case eTCharF: | |
| 342 | case eTCharC: | |
| 343 | test(dump.iChar == 'y'); | |
| 344 | } | |
| 345 | ||
| 346 | ||
| 347 | 	test.Next(_L("-=, +=, -, + and cast"));
 | |
| 348 | TCharType x(10); | |
| 349 | x-=5; | |
| 350 | x.__DbgTest(&dump); | |
| 351 | test(dump.iChar==5); | |
| 352 | ||
| 353 | x+=5; | |
| 354 | x.__DbgTest(&dump); | |
| 355 | test(dump.iChar==10); | |
| 356 | ||
| 357 | test((x-(TUint)5)==5); | |
| 358 | x.__DbgTest(&dump); | |
| 359 | test(dump.iChar==10); | |
| 360 | ||
| 361 | test((x+(TUint)5)==15); | |
| 362 | x.__DbgTest(&dump); | |
| 363 | test(dump.iChar==10); | |
| 364 | ||
| 365 | 	TChar z('a');
 | |
| 366 | TUint w=z; | |
| 367 | test(w==97); | |
| 368 | ||
| 369 | test.End(); | |
| 370 | } | |
| 371 | ||
| 372 | ||
| 4 
56f325a607ea
Revision: 200951
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 373 | // | 
| 0 | 374 | // Test Fold, Fold(TChar::EFoldAccents), Collate, LowerCase, UpperCase | 
| 4 
56f325a607ea
Revision: 200951
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: 
0diff
changeset | 375 | // | 
| 0 | 376 | template<class TCharType> | 
| 377 | GLDEF_C void TestTChar<TCharType>::Test4(TCharTypes CharType) | |
| 378 | 	{
 | |
| 379 | 	test.Start(_L("Fold(), Fold(TChar::EFoldAccents), Collate(), LowerCase() UpperCase() & Eos()"));
 | |
| 380 | TCharDump dump1, dump2; | |
| 381 | TCharType c(0); | |
| 382 | ||
| 383 | // Is the folded version the same as the folded uppercase version? | |
| 384 | 	test.Next(_L("Fold() 0-127"));
 | |
| 385 | TUint i; | |
| 386 | for(i=0; i<=127; i++) | |
| 387 | 		{
 | |
| 388 | c = i; | |
| 389 | c.Fold(); | |
| 390 | c.__DbgTest(&dump1); | |
| 391 | c.UpperCase(); | |
| 392 | c.Fold(); | |
| 393 | c.__DbgTest(&dump2); | |
| 394 | test(dump1.iChar == dump2.iChar); | |
| 395 | } | |
| 396 | ||
| 397 | // Is the folded and uppercased version the same as an uppercase letter stripped of accents? | |
| 398 | 	test.Next(_L("Fold() >127"));
 | |
| 399 | for(i=128; i<=255; i++) | |
| 400 | 		{
 | |
| 401 | c=i; | |
| 402 | c.Fold(); | |
| 403 | c.UpperCase(); | |
| 404 | c.__DbgTest(&dump1); | |
| 405 | if(CharType==eTChar) | |
| 406 | 			{
 | |
| 407 | switch(i) | |
| 408 | 				{
 | |
| 409 | case ccedilla: | |
| 410 | case Ccedilla: | |
| 411 | test(dump1.iChar=='C'); | |
| 412 | break; | |
| 413 | ||
| 414 | case udieresis: | |
| 415 | case ucircumflex: | |
| 416 | case ugrave: | |
| 417 | case uacute: | |
| 418 | case Udieresis: | |
| 419 | case Ucircumflex: | |
| 420 | case Ugrave: | |
| 421 | case Uacute: | |
| 422 | test(dump1.iChar=='U'); | |
| 423 | break; | |
| 424 | ||
| 425 | case ydieresis: | |
| 426 | case yacute: | |
| 427 | case Yacute: | |
| 428 | test(dump1.iChar=='Y'); | |
| 429 | break; | |
| 430 | ||
| 431 | case ecircumflex: | |
| 432 | case edieresis: | |
| 433 | case egrave: | |
| 434 | case eacute: | |
| 435 | case Ecircumflex: | |
| 436 | case Edieresis: | |
| 437 | case Egrave: | |
| 438 | case Eacute: | |
| 439 | test(dump1.iChar=='E'); | |
| 440 | break; | |
| 441 | ||
| 442 | case acircumflex: | |
| 443 | case adieresis: | |
| 444 | case agrave: | |
| 445 | case aacute: | |
| 446 | case Acircumflex: | |
| 447 | case Adieresis: | |
| 448 | case Agrave: | |
| 449 | case Aacute: | |
| 450 | case atilde: | |
| 451 | case Atilde: | |
| 452 | case aring: | |
| 453 | case Aring: | |
| 454 | test(dump1.iChar=='A'); | |
| 455 | break; | |
| 456 | ||
| 457 | case idieresis: | |
| 458 | case icircumflex: | |
| 459 | case iacute: | |
| 460 | case igrave: | |
| 461 | case Idieresis: | |
| 462 | case Icircumflex: | |
| 463 | case Iacute: | |
| 464 | case Igrave: | |
| 465 | test(dump1.iChar=='I'); | |
| 466 | break; | |
| 467 | ||
| 468 | case ocircumflex: | |
| 469 | case odieresis: | |
| 470 | case ograve: | |
| 471 | case oacute: | |
| 472 | case otilde: | |
| 473 | case Ocircumflex: | |
| 474 | case Odieresis: | |
| 475 | case Ograve: | |
| 476 | case Oacute: | |
| 477 | case Otilde: | |
| 478 | test(dump1.iChar=='O'); | |
| 479 | break; | |
| 480 | ||
| 481 | case ntilde: | |
| 482 | case Ntilde: | |
| 483 | test(dump1.iChar=='N'); break; | |
| 484 | ||
| 485 | case oslash: | |
| 486 | case Oslash: | |
| 487 | ||
| 488 | test(dump1.iChar==Oslash); break; | |
| 489 | ||
| 490 | case ae: | |
| 491 | case AE: | |
| 492 | test(dump1.iChar==AE); break; | |
| 493 | ||
| 494 | case eth: | |
| 495 | case Eth: | |
| 496 | test(dump1.iChar==Eth); break; | |
| 497 | ||
| 498 | case thorn: | |
| 499 | case Thorn: | |
| 500 | test(dump1.iChar==Thorn); | |
| 501 | break; | |
| 502 | ||
| 503 | case nobreakspace: | |
| 504 | test(dump1.iChar == ' '); | |
| 505 | break; | |
| 506 | ||
| 507 | case micro: | |
| 508 | test(dump1.iChar == 0x039C); | |
| 509 | break; | |
| 510 | ||
| 511 | default: | |
| 512 | test(dump1.iChar==i); | |
| 513 | } | |
| 514 | } | |
| 515 | } | |
| 516 | ||
| 517 | // In the following test section We test Fold(TChar::EFoldAccents) - This code tests this function for all the | |
| 518 | // set of unicode characters located between 0x0080 and 0x00FF which are already tested for Fold(). | |
| 519 | // I added to this test 13 unicode character located between 0x01C5 and 0x0363. | |
| 520 | ||
| 521 | 	test.Next(_L("Fold(TChar::EFoldAccents) >127"));
 | |
| 522 | for(i=128; i<=255; i++) | |
| 523 | 		{
 | |
| 524 | c=i; | |
| 525 | c.Fold(TChar::EFoldAccents); | |
| 526 | c.__DbgTest(&dump1); | |
| 527 | if(CharType==eTChar) | |
| 528 | 			{
 | |
| 529 | switch(i) | |
| 530 | 				{
 | |
| 531 | case ccedilla: | |
| 532 | test(dump1.iChar=='c'); | |
| 533 | break; | |
| 534 | ||
| 535 | case Ccedilla: | |
| 536 | test(dump1.iChar=='C'); | |
| 537 | break; | |
| 538 | ||
| 539 | case acircumflex: | |
| 540 | case adieresis: | |
| 541 | case agrave: | |
| 542 | case aacute: | |
| 543 | case atilde: | |
| 544 | case aring: | |
| 545 | case aringacute: | |
| 546 | test(dump1.iChar=='a'); | |
| 547 | break; | |
| 548 | ||
| 549 | case Acircumflex: | |
| 550 | case Adieresis: | |
| 551 | case Agrave: | |
| 552 | case Aacute: | |
| 553 | case Atilde: | |
| 554 | case Aring: | |
| 555 | test(dump1.iChar=='A'); | |
| 556 | break; | |
| 557 | ||
| 558 | case udieresis: | |
| 559 | case ucircumflex: | |
| 560 | case ugrave: | |
| 561 | case uacute: | |
| 562 | test(dump1.iChar=='u'); | |
| 563 | break; | |
| 564 | ||
| 565 | case Udieresis: | |
| 566 | case Ucircumflex: | |
| 567 | case Ugrave: | |
| 568 | case Uacute: | |
| 569 | test(dump1.iChar=='U'); | |
| 570 | break; | |
| 571 | ||
| 572 | case ydieresis: | |
| 573 | case yacute: | |
| 574 | test(dump1.iChar=='y'); | |
| 575 | break; | |
| 576 | ||
| 577 | case Yacute: | |
| 578 | test(dump1.iChar=='Y'); | |
| 579 | break; | |
| 580 | ||
| 581 | case ecircumflex: | |
| 582 | case edieresis: | |
| 583 | case egrave: | |
| 584 | case eacute: | |
| 585 | test(dump1.iChar=='e'); | |
| 586 | break; | |
| 587 | ||
| 588 | case Ecircumflex: | |
| 589 | case Edieresis: | |
| 590 | case Egrave: | |
| 591 | case Eacute: | |
| 592 | test(dump1.iChar=='E'); | |
| 593 | break; | |
| 594 | ||
| 595 | case idieresis: | |
| 596 | case icircumflex: | |
| 597 | case iacute: | |
| 598 | case igrave: | |
| 599 | test(dump1.iChar=='i'); | |
| 600 | break; | |
| 601 | ||
| 602 | case Idieresis: | |
| 603 | case Icircumflex: | |
| 604 | case Iacute: | |
| 605 | case Igrave: | |
| 606 | test(dump1.iChar=='I'); | |
| 607 | break; | |
| 608 | ||
| 609 | case ocircumflex: | |
| 610 | case odieresis: | |
| 611 | case ograve: | |
| 612 | case oacute: | |
| 613 | case otilde: | |
| 614 | test(dump1.iChar=='o'); | |
| 615 | break; | |
| 616 | ||
| 617 | case Ocircumflex: | |
| 618 | case Odieresis: | |
| 619 | case Ograve: | |
| 620 | case Oacute: | |
| 621 | case Otilde: | |
| 622 | test(dump1.iChar=='O'); | |
| 623 | break; | |
| 624 | ||
| 625 | case ntilde: test(dump1.iChar=='n'); break; | |
| 626 | ||
| 627 | case Ntilde: test(dump1.iChar=='N'); break; | |
| 628 | ||
| 629 | case oslash: test(dump1.iChar==oslash); break; | |
| 630 | case Oslash: test(dump1.iChar==Oslash); break; | |
| 631 | ||
| 632 | case ae: test(dump1.iChar==ae); break; | |
| 633 | case AE: test(dump1.iChar==AE); break; | |
| 634 | ||
| 635 | case eth: test(dump1.iChar==eth); break; | |
| 636 | case Eth: test(dump1.iChar==Eth); break; | |
| 637 | ||
| 638 | case thorn: test(dump1.iChar==thorn);break; | |
| 639 | case Thorn: test(dump1.iChar==Thorn);break; | |
| 640 | ||
| 641 | case micro: | |
| 642 | test(dump1.iChar == 0x00B5); | |
| 643 | break; | |
| 644 | ||
| 645 | default: | |
| 646 | test(dump1.iChar==i); | |
| 647 | } | |
| 648 | } | |
| 649 | } | |
| 650 | ||
| 651 | TUint specialCasesTable [] = | |
| 652 | 		{
 | |
| 653 | 0x01C5, // Dzcaron | |
| 654 | 0x01C8, // Lj | |
| 655 | 0x01D5,// Udearesismacron | |
| 656 | 0x01E0,// Adotabove | |
| 657 | 0x01E2,// AEmacron | |
| 658 | 0x0219, // scommabelow | |
| 659 | 0x022C,// Otildemacron | |
| 660 | 0x023B,// Cstroke | |
| 661 | 0x02BA, // doubleprime | |
| 662 | 0x02FF,// lowleftarrow | |
| 663 | 0x0310, // candrabindu | |
| 664 | 0x0362, // doublerightwardsarrowbelow | |
| 665 | 0x0363 // latinsmalla | |
| 666 | }; | |
| 667 | ||
| 668 | for (i=0;i<=12; i++) | |
| 669 | 		{
 | |
| 670 | c=specialCasesTable[i]; | |
| 671 | c.Fold(TChar::EFoldAccents); | |
| 672 | c.__DbgTest(&dump1); | |
| 673 | if(CharType==eTChar) | |
| 674 | 			{
 | |
| 675 | switch(specialCasesTable[i]) | |
| 676 | 				{
 | |
| 677 | case Dzcaron : test(dump1.iChar==Dzcaron); break; | |
| 678 | case Lj : test(dump1.iChar==Lj); break; | |
| 679 | case Udearesismacron : test(dump1.iChar=='U'); break; | |
| 680 | case Adotabove : test(dump1.iChar=='A'); break; | |
| 681 | case AEmacron : test(dump1.iChar==AE); break; | |
| 682 | case scommabelow : test(dump1.iChar=='s'); break; | |
| 683 | case Otildemacron : test(dump1.iChar=='O'); break; | |
| 684 | case Cstroke : test(dump1.iChar==Cstroke); break; | |
| 685 | case doubleprime : test(dump1.iChar==doubleprime); break; | |
| 686 | case lowleftarrow : test(dump1.iChar==lowleftarrow); break; | |
| 687 | case candrabindu : test(dump1.iChar==candrabindu); break; | |
| 688 | case doublerightwardsarrowbelow : test(dump1.iChar==doublerightwardsarrowbelow); break; | |
| 689 | case latinsmalla : test(dump1.iChar==latinsmalla); break; | |
| 690 | default : test(dump1.iChar==specialCasesTable[i]); | |
| 691 | } | |
| 692 | } | |
| 693 | } | |
| 694 | ||
| 695 | 	test.Next(_L("LowerCase() 0-127"));
 | |
| 696 | for(i=0;i<=127; i++) | |
| 697 | 		{ 
 | |
| 698 | c=i; | |
| 699 | if(c.IsUpper()) | |
| 700 | 			{
 | |
| 701 | c.__DbgTest(&dump1); | |
| 702 | c.LowerCase(); | |
| 703 | c.__DbgTest(&dump2); | |
| 704 | test(dump1.iChar==dump2.iChar-32); | |
| 705 | } | |
| 706 | else | |
| 707 | 			{
 | |
| 708 | c.__DbgTest(&dump1); | |
| 709 | c.LowerCase(); | |
| 710 | c.__DbgTest(&dump2); | |
| 711 | test(dump1.iChar==dump2.iChar); | |
| 712 | } | |
| 713 | } | |
| 714 | ||
| 715 | ||
| 716 | 	test.Next(_L("LowerCase() >127"));
 | |
| 717 | for(i=128; i<=255; i++) | |
| 718 | 		{
 | |
| 719 | c=i; | |
| 720 | c.LowerCase(); | |
| 721 | c.__DbgTest(&dump1); | |
| 722 | if(CharType==eTChar) | |
| 723 | 			{
 | |
| 724 | switch(i) | |
| 725 | 				{
 | |
| 726 | case Acircumflex: test(dump1.iChar==acircumflex); break; | |
| 727 | case Adieresis: test(dump1.iChar==adieresis); break; | |
| 728 | case Agrave: test(dump1.iChar==agrave); break; | |
| 729 | case Aacute: test(dump1.iChar==aacute); break; | |
| 730 | case Atilde: test(dump1.iChar==atilde); break; | |
| 731 | case Aring: test(dump1.iChar==aring); break; | |
| 732 | case AE: test(dump1.iChar==ae); break; | |
| 733 | case Ccedilla: test(dump1.iChar==ccedilla); break; | |
| 734 | case Ecircumflex: test(dump1.iChar==ecircumflex); break; | |
| 735 | case Edieresis: test(dump1.iChar==edieresis); break; | |
| 736 | case Egrave: test(dump1.iChar==egrave); break; | |
| 737 | case Eacute: test(dump1.iChar==eacute); break; | |
| 738 | case Eth: test(dump1.iChar==eth); break; | |
| 739 | case Icircumflex: test(dump1.iChar==icircumflex); break; | |
| 740 | case Idieresis: test(dump1.iChar==idieresis); break; | |
| 741 | case Igrave: test(dump1.iChar==igrave); break; | |
| 742 | case Iacute: test(dump1.iChar==iacute); break; | |
| 743 | case Ntilde: test(dump1.iChar==ntilde); break; | |
| 744 | case Oslash: test(dump1.iChar==oslash); break; | |
| 745 | case Ocircumflex: test(dump1.iChar==ocircumflex); break; | |
| 746 | case Odieresis: test(dump1.iChar==odieresis); break; | |
| 747 | case Ograve: test(dump1.iChar==ograve); break; | |
| 748 | case Oacute: test(dump1.iChar==oacute); break; | |
| 749 | case Otilde: test(dump1.iChar==otilde); break; | |
| 750 | case Thorn: test(dump1.iChar==thorn); break; | |
| 751 | case Ucircumflex: test(dump1.iChar==ucircumflex); break; | |
| 752 | case Udieresis: test(dump1.iChar==udieresis); break; | |
| 753 | case Ugrave: test(dump1.iChar==ugrave); break; | |
| 754 | case Uacute: test(dump1.iChar==uacute); break; | |
| 755 | case Yacute: test(dump1.iChar==yacute); break; | |
| 756 | default: test(dump1.iChar==i); | |
| 757 | } | |
| 758 | } | |
| 759 | } | |
| 760 | ||
| 761 | ||
| 762 | 	test.Next(_L("UpperCase() 0-127"));
 | |
| 763 | for(i=0;i<=127; i++) | |
| 764 | 		{ 
 | |
| 765 | c=i; | |
| 766 | if(c.IsLower()) | |
| 767 | 			{
 | |
| 768 | c.__DbgTest(&dump1); | |
| 769 | c.UpperCase(); | |
| 770 | c.__DbgTest(&dump2); | |
| 771 | test(dump1.iChar==dump2.iChar+32); | |
| 772 | } | |
| 773 | else | |
| 774 | 			{
 | |
| 775 | c.__DbgTest(&dump1); | |
| 776 | c.UpperCase(); | |
| 777 | c.__DbgTest(&dump2); | |
| 778 | test(dump1.iChar==dump2.iChar); | |
| 779 | } | |
| 780 | } | |
| 781 | ||
| 782 | ||
| 783 | 	test.Next(_L("UpperCase() >127"));
 | |
| 784 | for(i=128; i<=255; i++) | |
| 785 | 		{
 | |
| 786 | c=i; | |
| 787 | c.UpperCase(); | |
| 788 | c.__DbgTest(&dump1); | |
| 789 | if(CharType==eTChar) | |
| 790 | 			{
 | |
| 791 | switch(i) | |
| 792 | 				{
 | |
| 793 | case acircumflex: test(dump1.iChar==Acircumflex); break; | |
| 794 | case adieresis: test(dump1.iChar==Adieresis); break; | |
| 795 | case agrave: test(dump1.iChar==Agrave); break; | |
| 796 | case aacute: test(dump1.iChar==Aacute); break; | |
| 797 | case atilde: test(dump1.iChar==Atilde); break; | |
| 798 | case aring: test(dump1.iChar==Aring); break; | |
| 799 | case ae: test(dump1.iChar==AE); break; | |
| 800 | case ccedilla: test(dump1.iChar==Ccedilla); break; | |
| 801 | case ecircumflex: test(dump1.iChar==Ecircumflex); break; | |
| 802 | case edieresis: test(dump1.iChar==Edieresis); break; | |
| 803 | case egrave: test(dump1.iChar==Egrave); break; | |
| 804 | case eacute: test(dump1.iChar==Eacute); break; | |
| 805 | case eth: test(dump1.iChar==Eth); break; | |
| 806 | case icircumflex: test(dump1.iChar==Icircumflex); break; | |
| 807 | case idieresis: test(dump1.iChar==Idieresis); break; | |
| 808 | case igrave: test(dump1.iChar==Igrave); break; | |
| 809 | case iacute: test(dump1.iChar==Iacute); break; | |
| 810 | case ntilde: test(dump1.iChar==Ntilde); break; | |
| 811 | case oslash: test(dump1.iChar==Oslash); break; | |
| 812 | case ocircumflex: test(dump1.iChar==Ocircumflex); break; | |
| 813 | case odieresis: test(dump1.iChar==Odieresis); break; | |
| 814 | case ograve: test(dump1.iChar==Ograve); break; | |
| 815 | case oacute: test(dump1.iChar==Oacute); break; | |
| 816 | case otilde: test(dump1.iChar==Otilde); break; | |
| 817 | case thorn: test(dump1.iChar==Thorn); break; | |
| 818 | case ucircumflex: test(dump1.iChar==Ucircumflex); break; | |
| 819 | case udieresis: test(dump1.iChar==Udieresis); break; | |
| 820 | case ugrave: test(dump1.iChar==Ugrave); break; | |
| 821 | case uacute: test(dump1.iChar==Uacute); break; | |
| 822 | case yacute: test(dump1.iChar==Yacute); break; | |
| 823 | case ydieresis: test(dump1.iChar==Ydieresis); break; | |
| 824 | case micro: test(dump1.iChar==0x039C); break; | |
| 825 | default: test(dump1.iChar==i); | |
| 826 | } | |
| 827 | } | |
| 828 | } | |
| 829 | ||
| 830 | 	test.Next(_L("Eos()"));
 | |
| 831 | c=0; | |
| 832 | test(c.Eos()==TRUE); | |
| 833 | for(i=1;i<=255;i++) | |
| 834 | 		{
 | |
| 835 | c=i; | |
| 836 | test(c.Eos()==FALSE); | |
| 837 | } | |
| 838 | test.End(); | |
| 839 | } | |
| 840 | ||
| 841 | ||
| 842 | //********************************* | |
| 843 | // Test the Isxxx functions | |
| 844 | //********************************* | |
| 845 | // | |
| 846 | // Deleted as it can no longer use the C library | |
| 847 | // | |
| 848 | /* | |
| 849 | template<class TCharType> | |
| 850 | GLDEF_C void TestTChar<TCharType>::Test5(TCharTypes CharType) | |
| 851 | 	{
 | |
| 852 | 	test.Start(_L("Isxxxxx()"));
 | |
| 853 | test.End(); | |
| 854 | } | |
| 855 | */ | |
| 856 | ||
| 857 | #ifndef _DEBUG | |
| 858 | #pragma warning (disable :4710) //Function not expanded | |
| 859 | #pragma warning (disable :4700) //Local variable used without being initialized | |
| 860 | #endif | |
| 861 | ||
| 862 | /* | |
| 863 | Put all the information about a character into a string. This can then be compared with | |
| 864 | a previously verified string to test the character classification functions. | |
| 865 | ||
| 866 | To keep the string short, only non-default information is appended, except for the first | |
| 867 | attribute, the category. | |
| 868 | ||
| 869 | The format is: | |
| 870 | ||
| 871 | 1. The two-letter Unicode category code: e.g., Lu for an uppercase letter, Nd for a digit, etc. | |
| 872 | 2. If the bidirectional category is not TChar::ELeftToRight, ' b=' then the one or two-letter code. | |
| 873 | 3. If the combining class is not 0, ' c=' then the combining class number in decimal. | |
| 874 | 4. If the uppercase form is different from the character code, ' u=' then the uppercase form in hex. | |
| 875 | 5. If the titlecase form is different from the character code, ' t=' then the titlecase form in hex. | |
| 876 | 6. If the lowercase form is different from the character code, ' l=' then the lowercase form in hex. | |
| 877 | ** REMOVED ** 7. If the folded form is different from the character code, ' f=' then the folded form in hex. | |
| 878 | 8. If the character has the mirrored property, ' m'. | |
| 879 | 9. If the character has a numeric value, ' n=' then the numeric value in decimal, or -2 for fractions. | |
| 880 | 10. If the CJK width is not neutral, ' w=' then 1 for halfwidth, 2 for fullwidth, 3 for narrow, 4 for wide | |
| 881 | 11. If there is a canonical decomposition, ' d=' then the characters of the decomposition in hex, comma-separated. | |
| 882 | */ | |
| 883 | void char_info_to_string(TDes16& info,TUint x) | |
| 884 | 	{
 | |
| 885 | TChar c(x); | |
| 886 | ||
| 887 | TChar::TCharInfo ci; | |
| 888 | c.GetInfo(ci); | |
| 889 | ||
| 890 | TBuf<16> cat; | |
| 891 | switch (ci.iCategory) | |
| 892 | 		{
 | |
| 893 | 		case TChar::ELuCategory: cat = _L("Lu"); break;
 | |
| 894 | 		case TChar::ELlCategory: cat = _L("Ll"); break;
 | |
| 895 | 		case TChar::ELtCategory: cat = _L("Lt"); break; 
 | |
| 896 | 		case TChar::ELoCategory: cat = _L("Lo"); break; 
 | |
| 897 | 		case TChar::ELmCategory: cat = _L("Lm"); break; 
 | |
| 898 | 		case TChar::EMnCategory: cat = _L("Mn"); break; 
 | |
| 899 | 		case TChar::EMcCategory: cat = _L("Mc"); break; 
 | |
| 900 | 		case TChar::ENdCategory: cat = _L("Nd"); break; 
 | |
| 901 | 		case TChar::ENlCategory: cat = _L("Nl"); break;
 | |
| 902 | 		case TChar::ENoCategory: cat = _L("No"); break; 
 | |
| 903 | 		case TChar::EPdCategory: cat = _L("Pd"); break; 
 | |
| 904 | 		case TChar::EPsCategory: cat = _L("Ps"); break; 
 | |
| 905 | 		case TChar::EPeCategory: cat = _L("Pe"); break; 
 | |
| 906 | 		case TChar::EPoCategory: cat = _L("Po"); break; 
 | |
| 907 | 		case TChar::EPiCategory: cat = _L("Pi"); break; 
 | |
| 908 | 		case TChar::EPfCategory: cat = _L("Pf"); break; 
 | |
| 909 | 		case TChar::ESmCategory: cat = _L("Sm"); break; 
 | |
| 910 | 		case TChar::EScCategory: cat = _L("Sc"); break; 
 | |
| 911 | 		case TChar::ESkCategory: cat = _L("Sk"); break;
 | |
| 912 | 		case TChar::ESoCategory: cat = _L("So"); break; 
 | |
| 913 | 		case TChar::EZsCategory: cat = _L("Zs"); break; 
 | |
| 914 | 		case TChar::EZlCategory: cat = _L("Zl"); break; 
 | |
| 915 | 		case TChar::EZpCategory: cat = _L("Zp"); break; 
 | |
| 916 | 		case TChar::ECcCategory: cat = _L("Cc"); break; 
 | |
| 917 | 		case TChar::ECoCategory: cat = _L("Co"); break; 
 | |
| 918 | 		case TChar::ECnCategory: cat = _L("Cn"); break;
 | |
| 919 | 		case TChar::ECfCategory: cat = _L("Cf"); break;
 | |
| 920 | 		default: User::Panic(_L("bad char category"),0); break; 
 | |
| 921 | } | |
| 922 | info.Append(cat); | |
| 923 | ||
| 924 | TBuf<16> bdcat; | |
| 925 | switch (ci.iBdCategory) | |
| 926 | 		{
 | |
| 927 | 		case TChar::ELeftToRight: bdcat=_L("L"); break;
 | |
| 928 | 		case TChar::ELeftToRightEmbedding: bdcat=_L("LRE"); break;
 | |
| 929 | 		case TChar::ELeftToRightOverride: bdcat=_L("LRO"); break;
 | |
| 930 | 		case TChar::ERightToLeft: bdcat=_L("R"); break;
 | |
| 931 | 		case TChar::ERightToLeftArabic: bdcat=_L("AL"); break; 
 | |
| 932 | 		case TChar::ERightToLeftEmbedding: bdcat=_L("RLE"); break;
 | |
| 933 | 		case TChar::ERightToLeftOverride: bdcat=_L("RLO"); break;
 | |
| 934 | 		case TChar::EPopDirectionalFormat: bdcat=_L("PDF"); break;
 | |
| 935 | 		case TChar::EEuropeanNumber: bdcat=_L("EN"); break; 
 | |
| 936 | 		case TChar::EEuropeanNumberSeparator: bdcat=_L("ES"); break;  
 | |
| 937 | 		case TChar::EEuropeanNumberTerminator: bdcat=_L("ET"); break;
 | |
| 938 | 		case TChar::EArabicNumber: bdcat=_L("AN"); break; 
 | |
| 939 | 		case TChar::ECommonNumberSeparator: bdcat=_L("CS"); break; 
 | |
| 940 | 		case TChar::ENonSpacingMark: bdcat=_L("NSM"); break;
 | |
| 941 | 		case TChar::EBoundaryNeutral: bdcat=_L("BN"); break; 
 | |
| 942 | 		case TChar::EParagraphSeparator: bdcat=_L("B"); break;
 | |
| 943 | 		case TChar::ESegmentSeparator: bdcat=_L("S"); break;
 | |
| 944 | 		case TChar::EWhitespace: bdcat=_L("WS"); break; 
 | |
| 945 | 		case TChar::EOtherNeutral: bdcat=_L("ON"); break; 
 | |
| 946 | 		default: User::Panic(_L("bad bd category"),0); break; 
 | |
| 947 | } | |
| 948 | if (ci.iBdCategory != TChar::ELeftToRight) | |
| 949 | 		{
 | |
| 950 | 		info.Append(_L(" b="));
 | |
| 951 | info.Append(bdcat); | |
| 952 | } | |
| 953 | ||
| 954 | if (ci.iCombiningClass != 0) | |
| 955 | 		{
 | |
| 956 | 		info.Append(_L(" c="));
 | |
| 957 | info.AppendNum(ci.iCombiningClass); | |
| 958 | } | |
| 959 | ||
| 960 | if (ci.iUpperCase != x) | |
| 961 | 		{
 | |
| 962 | 		info.Append(_L(" u="));
 | |
| 963 | info.AppendNum(ci.iUpperCase,EHex); | |
| 964 | } | |
| 965 | ||
| 966 | if (ci.iTitleCase != x) | |
| 967 | 		{
 | |
| 968 | 		info.Append(_L(" t="));
 | |
| 969 | info.AppendNum(ci.iTitleCase,EHex); | |
| 970 | } | |
| 971 | ||
| 972 | if (ci.iLowerCase != x) | |
| 973 | 		{
 | |
| 974 | 		info.Append(_L(" l="));
 | |
| 975 | info.AppendNum(ci.iLowerCase,EHex); | |
| 976 | } | |
| 977 | ||
| 978 | if (ci.iMirrored) | |
| 979 | 		info.Append(_L(" m"));
 | |
| 980 | ||
| 981 | if (ci.iNumericValue != -1) | |
| 982 | 		{
 | |
| 983 | 		info.Append(_L(" n="));
 | |
| 984 | info.AppendNum(ci.iNumericValue); | |
| 985 | } | |
| 986 | ||
| 987 | switch (c.GetCjkWidth()) | |
| 988 | 		{
 | |
| 989 | 		case TChar::EHalfWidth: info.Append(_L(" w=1")); break;
 | |
| 990 | 		case TChar::EFullWidth: info.Append(_L(" w=2")); break;
 | |
| 991 | 		case TChar::ENarrow: info.Append(_L(" w=3")); break;
 | |
| 992 | 		case TChar::EWide: info.Append(_L(" w=4")); break;
 | |
| 993 | default: break; | |
| 994 | } | |
| 995 | ||
| 996 | TPtrC16 d; | |
| 997 | if (c.Decompose(d)) | |
| 998 | 		{
 | |
| 999 | 		info.Append(_L(" d="));
 | |
| 1000 | for (int i = 0; i < d.Length(); i++) | |
| 1001 | 			{
 | |
| 1002 | info.AppendNum((TUint)d[i],EHex); | |
| 1003 | if (i < d.Length() - 1) | |
| 1004 | 				info.Append(',');
 | |
| 1005 | } | |
| 1006 | } | |
| 1007 | ||
| 1008 | if (!c.IsPrint()) | |
| 1009 | 		info.Append(_L(" np"));
 | |
| 1010 | if (!c.IsGraph()) | |
| 1011 | 		info.Append(_L(" ng"));
 | |
| 1012 | } | |
| 1013 | ||
| 1014 | void test_unicode_char(TUint c,const TDesC& desired_info,const TDesC& name) | |
| 1015 | 	{
 | |
| 1016 | test.Next(name); | |
| 1017 | TBuf<128> info; | |
| 1018 | char_info_to_string(info,c); | |
| 1019 | //	test.Printf(_L("code=0x%x desired='%S' actual='%S'\n"),c,&desired_info,&info);
 | |
| 1020 | // if (info != desired_info) | |
| 1021 | //		test.Printf(_L(" (mismatch!)\n"));
 | |
| 1022 | test(info == desired_info); | |
| 1023 | } | |
| 1024 | ||
| 1025 | void test_unicode_chars() | |
| 1026 | 	{
 | |
| 1027 | 	test_unicode_char(0x0000,_L("Cc b=BN np ng"),_L("NULL"));
 | |
| 1028 | 	test_unicode_char(0x000A,_L("Cc b=B np ng"),_L("linefeed"));
 | |
| 1029 | 	test_unicode_char(0x0020,_L("Zs b=WS w=3 ng"),_L("space"));
 | |
| 1030 | 	test_unicode_char(0x0028,_L("Ps b=ON m w=3"),_L("("));
 | |
| 1031 | 	test_unicode_char(0x0038,_L("Nd b=EN n=8 w=3"),_L("8"));
 | |
| 1032 | 	test_unicode_char(0x0040,_L("Po b=ON w=3"),_L("@"));
 | |
| 1033 | 	test_unicode_char(0x0062,_L("Ll u=42 w=3"),_L("b"));
 | |
| 1034 | 	test_unicode_char(0x0042,_L("Lu l=62 w=3"),_L("B"));
 | |
| 1035 | 	test_unicode_char(0x0067,_L("Ll u=47 w=3"),_L("g"));
 | |
| 1036 | 	test_unicode_char(0x0047,_L("Lu l=67 w=3"),_L("G"));
 | |
| 1037 | 	test_unicode_char(0x0077,_L("Ll u=57 w=3"),_L("w"));
 | |
| 1038 | 	test_unicode_char(0x0057,_L("Lu l=77 w=3"),_L("W"));
 | |
| 1039 | 	test_unicode_char(0x00A0,_L("Zs b=CS ng"),_L("non-break space"));
 | |
| 1040 | 	test_unicode_char(0x00BC,_L("No b=ON n=-2"),_L("1/4"));
 | |
| 1041 | 	test_unicode_char(0x00DD,_L("Lu l=fd d=59,301"),_L("Y acute"));
 | |
| 1042 | 	test_unicode_char(0x00FF,_L("Ll u=178 d=79,308"),_L("y umlaut"));
 | |
| 1043 | 	test_unicode_char(0x0178,_L("Lu l=ff d=59,308"),_L("Y umlaut"));
 | |
| 1044 | 	test_unicode_char(0x01C4,_L("Lu t=1c5 l=1c6"),_L("DZ caron"));
 | |
| 1045 | 	test_unicode_char(0x01C5,_L("Lt u=1c4 l=1c6"),_L("Dz caron"));
 | |
| 1046 | 	test_unicode_char(0x01C6,_L("Ll u=1c4 t=1c5"),_L("dz caron"));
 | |
| 1047 | 	test_unicode_char(0x022A,_L("Lu l=22b d=4f,308,304"),_L("O with diaeresis and macron"));
 | |
| 1048 | 	test_unicode_char(0x0267,_L("Ll"),_L("latin small letter heng with hook"));
 | |
| 1049 | 	test_unicode_char(0x02b0,_L("Lm"),_L("modifier letter small h"));
 | |
| 1050 | 	test_unicode_char(0x030a,_L("Mn b=NSM c=230"),_L("combining ring above"));
 | |
| 1051 | 	test_unicode_char(0x03a8,_L("Lu l=3c8"),_L("Greek Psi"));
 | |
| 1052 | 	test_unicode_char(0x03c8,_L("Ll u=3a8"),_L("Greek psi"));
 | |
| 1053 | 	test_unicode_char(0x0401,_L("Lu l=451 d=415,308"),_L("Cyrillic IO"));
 | |
| 1054 | 	test_unicode_char(0x0451,_L("Ll u=401 d=435,308"),_L("Cyrillic io"));
 | |
| 1055 | 	test_unicode_char(0x04e0,_L("Lu l=4e1"),_L("Cyrillic Abkhasian Dze"));
 | |
| 1056 | 	test_unicode_char(0x04e1,_L("Ll u=4e0"),_L("Cyrillic Abkhasian dze"));
 | |
| 1057 | 	test_unicode_char(0x05A8,_L("Mn b=NSM c=230"),_L("Hebrew accent qadma"));
 | |
| 1058 | 	test_unicode_char(0x05D2,_L("Lo b=R"),_L("Hebrew letter gimel"));
 | |
| 1059 | 	test_unicode_char(0x05F0,_L("Lo b=R"),_L("Hebrew ligature Yiddish double vav"));
 | |
| 1060 | 	test_unicode_char(0x0627,_L("Lo b=AL"),_L("Arabic letter alef"));
 | |
| 1061 | 	test_unicode_char(0x0660,_L("Nd b=AN n=0"),_L("Arabic-Indic digit 0"));
 | |
| 1062 | 	test_unicode_char(0x0669,_L("Nd b=AN n=9"),_L("Arabic-Indic digit 9"));
 | |
| 1063 | 	test_unicode_char(0x06F4,_L("Nd b=EN n=4"),_L("Extended Arabic-Indic digit 4"));
 | |
| 1064 | 	test_unicode_char(0x0B9C,_L("Lo"),_L("Tamil letter ja"));
 | |
| 1065 | 	test_unicode_char(0x0BCD,_L("Mn b=NSM c=9"),_L("Tamil sign virama"));
 | |
| 1066 | 	test_unicode_char(0x0BF0,_L("No n=10"),_L("Tamil number 10"));
 | |
| 1067 | 	test_unicode_char(0x0BF1,_L("No n=100"),_L("Tamil number 100"));
 | |
| 1068 | 	test_unicode_char(0x0BF2,_L("No n=1000"),_L("Tamil number 1000"));
 | |
| 1069 | 	test_unicode_char(0x0E3F,_L("Sc b=ET"),_L("Thai currency symbol baht"));
 | |
| 1070 | 	test_unicode_char(0x0ED5,_L("Nd n=5"),_L("Lao digit 5"));
 | |
| 1071 | 	test_unicode_char(0x104E,_L("Po"),_L("Myanmar symbol aforementioned"));
 | |
| 1072 | 	test_unicode_char(0x124B,_L("Lo"),_L("Ethiopic syllable QWAA"));
 | |
| 1073 | 	test_unicode_char(0x137C,_L("No n=10000"),_L("Ethiopic number 10000"));
 | |
| 1074 | 	test_unicode_char(0x217F,_L("Nl u=216f n=1000"),_L("small Roman numeral 1000"));
 | |
| 1075 | 	test_unicode_char(0x2180,_L("Nl n=1000"),_L("Roman numeral 1000 CD"));
 | |
| 1076 | 	test_unicode_char(0x2181,_L("Nl n=5000"),_L("Roman numeral 5000"));
 | |
| 1077 | 	test_unicode_char(0x2182,_L("Nl n=10000"),_L("Roman numeral 10000"));
 | |
| 1078 | 	test_unicode_char(0x2208,_L("Sm b=ON m"),_L("element of"));
 | |
| 1079 | 	test_unicode_char(0x2248,_L("Sm b=ON m"),_L("almost equal to"));
 | |
| 1080 | 	test_unicode_char(0x3000,_L("Zs b=WS w=4 ng"),_L("ideographic space"));
 | |
| 1081 | 	test_unicode_char(0x3030,_L("Pd b=ON w=4"),_L("wavy dash"));
 | |
| 1082 | 	test_unicode_char(0x305F,_L("Lo w=4"),_L("Hiragana ta"));
 | |
| 1083 | 	test_unicode_char(0x3060,_L("Lo w=4 d=305f,3099"),_L("Hiragana da"));
 | |
| 1084 | 	test_unicode_char(0x3099,_L("Mn b=NSM c=8 w=4"),_L("combining Katakana-Hiragana voiced sound mark"));
 | |
| 1085 | 	test_unicode_char(0x30B3,_L("Lo w=4"),_L("Katakana ko"));
 | |
| 1086 | 	test_unicode_char(0x30B4,_L("Lo w=4 d=30b3,3099"),_L("Katakana go"));
 | |
| 1087 | 	test_unicode_char(0x51FF,_L("Lo w=4"),_L("CJK ideograph 51FF"));
 | |
| 1088 | 	test_unicode_char(0x52FF,_L("Lo w=4"),_L("CJK ideograph 52FF"));
 | |
| 1089 | 	test_unicode_char(0xCEFF,_L("Lo w=4"),_L("Hangul syllable CEFF"));
 | |
| 1090 | 	test_unicode_char(0xFF17,_L("Nd b=EN n=7 w=2"),_L("fullwidth digit 7"));
 | |
| 1091 | 	test_unicode_char(0xFF33,_L("Lu l=ff53 w=2"),_L("fullwidth S"));
 | |
| 1092 | 	test_unicode_char(0xFF53,_L("Ll u=ff33 w=2"),_L("fullwidth s"));
 | |
| 1093 | 	test_unicode_char(0xFF85,_L("Lo w=1"),_L("halfwidth Katakana na"));
 | |
| 1094 | 	test_unicode_char(0xFFE1,_L("Sc b=ET w=2"),_L("fullwidth pound sign"));
 | |
| 1095 | 	test_unicode_char(0xE000, _L("Co"), _L("End user private use character"));
 | |
| 1096 | 	test_unicode_char(0xE3FF, _L("Co"), _L("End user private use character"));
 | |
| 1097 | 	test_unicode_char(0xE400, _L("Co"), _L("Corporate private use character"));
 | |
| 1098 | 	test_unicode_char(0xF6DA, _L("Co np ng"), _L("Corporate private use character - Java string marker"));
 | |
| 1099 | 	test_unicode_char(0xF6DB, _L("Co"), _L("Corporate private use character - Replacement character"));
 | |
| 1100 | 	test_unicode_char(0xF6DC, _L("Co np ng"), _L("Corporate private use character - switch to next"));
 | |
| 1101 | 	test_unicode_char(0xF6DD, _L("Co np ng"), _L("Corporate private use character - switch to previous"));
 | |
| 1102 | 	test_unicode_char(0xF6DB, _L("Co"), _L("Corporate private use character - Latin superscript y"));
 | |
| 1103 | 	test_unicode_char(0xF6FF, _L("Co"), _L("Corporate private use character - Alarm bell"));
 | |
| 1104 | 	test_unicode_char(0xF700, _L("Co np ng"), _L("Corporate private use character - Key code"));
 | |
| 1105 | 	test_unicode_char(0xF8FF, _L("Co np ng"), _L("Corporate private use character - Key code"));
 | |
| 1106 | ||
| 1107 | // CR1080 - Testing additional Indic Chars | |
| 1108 | // Test properties of new Indic characters added in CR1080, and also the properties of | |
| 1109 | // existing characters immediately preceding and proceding the new characters, to test | |
| 1110 | // for any regression. | |
| 1111 | 	test_unicode_char(0x0903, _L("Mc"), _L("DEVANAGARI SIGN VISARGA"));  		// Existing
 | |
| 1112 | 	test_unicode_char(0x0904, _L("Lo"), _L("DEVANAGARI LETTER SHORT A"));		// New
 | |
| 1113 | 	test_unicode_char(0x0905, _L("Lo"), _L("DEVANAGARI LETTER A"));				// Existing
 | |
| 1114 | ||
| 1115 | 	test_unicode_char(0x0970, _L("Po"), _L("DEVANAGARI ABBREVIATION SIGN"));	// Existing
 | |
| 1116 | 	test_unicode_char(0x097B, _L("Lo"), _L("DEVANAGARI LETTER GGA"));			// New
 | |
| 1117 | 	test_unicode_char(0x097C, _L("Lo"), _L("DEVANAGARI LETTER JJA"));			// New
 | |
| 1118 | 	test_unicode_char(0x097D, _L("Lo"), _L("DEVANAGARI LETTER GLOTTAL STOP"));	// New
 | |
| 1119 | 	test_unicode_char(0x097E, _L("Lo"), _L("DEVANAGARI LETTER DDDA"));			// New
 | |
| 1120 | 	test_unicode_char(0x097F, _L("Lo"), _L("DEVANAGARI LETTER BBA"));			// New
 | |
| 1121 | 	test_unicode_char(0x0981, _L("Mn b=NSM"), _L("BENGALI SIGN CANDRABINDU"));	// Existing
 | |
| 1122 | ||
| 1123 | 	test_unicode_char(0x09BC, _L("Mn b=NSM c=7"), _L("BENGALI SIGN NUKTA"));	// Existing
 | |
| 1124 | 	test_unicode_char(0x09BD, _L("Lo"), _L("BENGALI SIGN AVAGRAHA"));			// New
 | |
| 1125 | 	test_unicode_char(0x09BE, _L("Mc"), _L("BENGALI VOWEL SIGN AA"));			// Existing
 | |
| 1126 | ||
| 1127 | 	test_unicode_char(0x09CD, _L("Mn b=NSM c=9"), _L("BENGALI SIGN VIRAMA"));	// Existing
 | |
| 1128 | 	test_unicode_char(0x09CE, _L("Lo"), _L("BENGALI LETTER KHANDA TA"));		// New
 | |
| 1129 | 	test_unicode_char(0x09D7, _L("Mc"), _L("BENGALI AU LENGTH MARK"));			// Existing
 | |
| 1130 | ||
| 1131 | 	test_unicode_char(0x09FA, _L("So"), _L("BENGALI ISSHAR"));					// Existing
 | |
| 1132 | 	test_unicode_char(0x0A01, _L("Mn b=NSM"), _L("GURMUKHI SIGN ADAK BINDI"));	// New
 | |
| 1133 | 	test_unicode_char(0x0A02, _L("Mn b=NSM"), _L("GURMUKHI SIGN BINDI"));		// Existing
 | |
| 1134 | 	test_unicode_char(0x0A03, _L("Mc"), _L("GURMUKHI SIGN VISARGA"));			// New
 | |
| 1135 | 	test_unicode_char(0x0A05, _L("Lo"), _L("GURMUKHI LETTER A"));				// Existing
 | |
| 1136 | ||
| 1137 | 	test_unicode_char(0x0A8B, _L("Lo"), _L("GUJARATI LETTER VOCALIC R"));		// Existing
 | |
| 1138 | 	test_unicode_char(0x0A8C, _L("Lo"), _L("GUJARATI LETTER VOCALIC L"));		// New
 | |
| 1139 | 	test_unicode_char(0x0A8D, _L("Lo"), _L("GUJARATI VOWEL CANDRA E"));			// Existing
 | |
| 1140 | ||
| 1141 | 	test_unicode_char(0x0AE0, _L("Lo"), _L("GUJARATI LETTER VOCALIC RR"));				// Existing
 | |
| 1142 | 	test_unicode_char(0x0AE1, _L("Lo"), _L("GUJARATI LETTER VOCALIC LL"));				// New
 | |
| 1143 | 	test_unicode_char(0x0AE2, _L("Mn b=NSM"), _L("GUJARATI VOWEL SIGN VOCALIC L"));		// New
 | |
| 1144 | 	test_unicode_char(0x0AE3, _L("Mn b=NSM"), _L("GUJARATI VOWEL SIGN VOCALIC LL"));	// New
 | |
| 1145 | 	test_unicode_char(0x0AE6, _L("Nd n=0"), _L("GUJARATI DIGIT ZERO")); 				// Existing
 | |
| 1146 | ||
| 1147 | 	test_unicode_char(0x0AEF, _L("Nd n=9"), _L("GUJARATI DIGIT NINE"));			// Existing
 | |
| 1148 | 	test_unicode_char(0x0AF1, _L("Sc b=ET"), _L("GUJARATI RUPEE SIGN"));		// New
 | |
| 1149 | 	test_unicode_char(0x0B01, _L("Mn b=NSM"), _L("ORIYA SIGN CANDRABINDU")); 	// Existing
 | |
| 1150 | ||
| 1151 | 	test_unicode_char(0x0B33, _L("Lo"), _L("ORIYA LETTER LLA"));				// Existing
 | |
| 1152 | 	test_unicode_char(0x0B35, _L("Lo"), _L("ORIYA LETTER VA"));					// New
 | |
| 1153 | 	test_unicode_char(0x0B36, _L("Lo"), _L("ORIYA LETTER SHA"));				// Existing
 | |
| 1154 | ||
| 1155 | 	test_unicode_char(0x0B70, _L("So"), _L("ORIYA ISSHAR"));					// Existing
 | |
| 1156 | 	test_unicode_char(0x0B71, _L("Lo"), _L("ORIYA LETTER WA"));					// New
 | |
| 1157 | 	test_unicode_char(0x0B82, _L("Mn b=NSM"), _L("TAMIL SIGN ANUSVARA")); 		// Existing
 | |
| 1158 | ||
| 1159 | 	test_unicode_char(0x0BB5, _L("Lo"), _L("TAMIL LETTER VA"));					// Existing
 | |
| 1160 | 	test_unicode_char(0x0BB6, _L("Lo"), _L("TAMIL LETTER SHA"));				// New
 | |
| 1161 | 	test_unicode_char(0x0BB7, _L("Lo"), _L("TAMIL LETTER SSA"));				// Existing
 | |
| 1162 | ||
| 1163 | 	test_unicode_char(0x0BD7, _L("Mc"), _L("TAMIL AU LENGTH MARK"));			// Existing
 | |
| 1164 | 	test_unicode_char(0x0BE6, _L("Nd n=0"), _L("TAMIL DIGIT ZERO"));			// New
 | |
| 1165 | 	test_unicode_char(0x0BE7, _L("Nd n=1"), _L("TAMIL DIGIT ZERO"));			// Existing
 | |
| 1166 | ||
| 1167 | 	test_unicode_char(0x0BF2, _L("No n=1000"), _L("TAMIL NUMBER ONE THOUSAND"));// Existing
 | |
| 1168 | 	test_unicode_char(0x0BF3, _L("So b=ON"), _L("TAMIL DAY SIGN"));				// New
 | |
| 1169 | 	test_unicode_char(0x0BF4, _L("So b=ON"), _L("TAMIL MONTH SIGN"));			// New
 | |
| 1170 | 	test_unicode_char(0x0BF5, _L("So b=ON"), _L("TAMIL YEAR SIGN"));			// New
 | |
| 1171 | 	test_unicode_char(0x0BF6, _L("So b=ON"), _L("TAMIL DEBIT SIGN"));			// New
 | |
| 1172 | 	test_unicode_char(0x0BF7, _L("So b=ON"), _L("TAMIL CREDIT SIGN"));			// New
 | |
| 1173 | 	test_unicode_char(0x0BF8, _L("So b=ON"), _L("TAMIL AS ABOVE SIGN"));		// New
 | |
| 1174 | 	test_unicode_char(0x0BF9, _L("Sc b=ET"), _L("TAMIL RUPEE SIGN"));			// New
 | |
| 1175 | 	test_unicode_char(0x0BFA, _L("So b=ON"), _L("TAMIL NUMBER SIGN"));			// New
 | |
| 1176 | 	test_unicode_char(0x0C01, _L("Mc"), _L("TELUGU SIGN CANDRABINDU"));			// Existing
 | |
| 1177 | ||
| 1178 | 	test_unicode_char(0x0CB9, _L("Lo"), _L("KANNADA LETTER HA"));				// Existing
 | |
| 1179 | 	test_unicode_char(0x0CBC, _L("Mn b=NSM c=7"), _L("KANNADA SIGN NUKTA"));	// New
 | |
| 1180 | 	test_unicode_char(0x0CBD, _L("Lo"), _L("KANNADA SIGN AVAGRAHA"));			// New
 | |
| 1181 | 	test_unicode_char(0x0CBE, _L("Mc"), _L("KANNADA VOWEL SIGN AA"));			// Existing
 | |
| 1182 | ||
| 1183 | 	test_unicode_char(0x0CE1, _L("Lo"), _L("KANNADA LETTER VOCALIC LL"));			// Existing
 | |
| 1184 | 	test_unicode_char(0x0CE2, _L("Mn b=NSM"), _L("KANNADA VOWEL SIGN VOCALIC L"));	// New
 | |
| 1185 | 	test_unicode_char(0x0CE3, _L("Mn b=NSM"), _L("KANNADA VOWEL SIGN VOCALIC LL"));	// New
 | |
| 1186 | 	test_unicode_char(0x0CE6, _L("Nd n=0"), _L("KANNADA DIGIT ZERO"));				// Existing
 | |
| 1187 | ||
| 1188 | 	test_unicode_char(0x0CEF, _L("Nd n=9"), _L("KANNADA DIGIT NINE"));				// Existing
 | |
| 1189 | 	test_unicode_char(0x0CF1, _L("So b=ON"), _L("KANNADA SIGN JIHVAMULIYA"));		// New
 | |
| 1190 | 	test_unicode_char(0x0CF2, _L("So b=ON"), _L("KANNADA SIGN UPADHMANIYA"));		// New
 | |
| 1191 | 	test_unicode_char(0x0D02, _L("Mc"), _L("MALAYALAM SIGN ANUSVARA"));				// Existing
 | |
| 1192 | ||
| 1193 | 	test_unicode_char(0x0B83, _L("Lo"), _L("TAMIL SIGN VISARGA"));					// Modified	
 | |
| 1194 | 	test_unicode_char(0x0CBF, _L("Mn"), _L("KANNADA VOWEL SIGN I"));				// Modified
 | |
| 1195 | 	test_unicode_char(0x0CC6, _L("Mn"), _L("KANNADA VOWEL SIGN E"));				// Modified
 | |
| 1196 | ||
| 1197 | // Unicode 5.0 specific | |
| 1198 | 	test_unicode_char(0x0220, _L("Lu l=19e"), _L("LATIN CAPITAL LETTER N WITH LONG RIGHT LEG"));		// New
 | |
| 1199 | 	test_unicode_char(0x0294, _L("Lo"), _L("LATIN LETTER GLOTTAL STOP"));								// Modified
 | |
| 1200 | 	test_unicode_char(0x10400, _L("Lu l=10428"), _L("DESERET CAPITAL LETTER LONG I"));				// out BMP fold
 | |
| 1201 | // Don't test those title case equal to upper case. See TUnicode::GetTitleCase(). | |
| 1202 | 	//test_unicode_char(0x10428, _L("Ll u=10400 t=10400"), _L("DESERET SMALL LETTER LONG I"));				// out BMP fold
 | |
| 1203 | 	test_unicode_char(0x10428, _L("Ll u=10400"), _L("DESERET SMALL LETTER LONG I"));				// out BMP fold
 | |
| 1204 | 	test_unicode_char(0x2F85B, _L("Lo w=4 d=58f7"), _L("CJK COMPATIBILITY IDEOGRAPH-2F85B"));			// New
 | |
| 1205 | } | |
| 1206 | ||
| 1207 | void test_unicode_collation(const TDesC& x,const TDesC& y,TInt desired_order, | |
| 1208 | TInt level = 3,const TCollationMethod* method = NULL) | |
| 1209 | 	{
 | |
| 1210 | TInt order = x.CompareC(y,level,method); | |
| 1211 | ||
| 1212 | // Normalise order to -1, 0 or 1. | |
| 1213 | if (order < 0) | |
| 1214 | order = -1; | |
| 1215 | else if (order > 0) | |
| 1216 | order = 1; | |
| 1217 | ||
| 1218 | test(order == desired_order); | |
| 1219 | } | |
| 1220 | ||
| 1221 | static const TUint32 TheSwedishKey[] = | |
| 1222 | 	{
 | |
| 1223 | 0x8f60109,0x8f70109,0x8f80109,0x8f60121,0x8f70121,0x8f80121,0x8dd0109,0x8dd0121, | |
| 1224 | 0x8c50121,0x8c50109, | |
| 1225 | }; | |
| 1226 | ||
| 1227 | static const TUint32 TheSwedishIndex[] = | |
| 1228 | 	{
 | |
| 1229 | 0x570008,0x770009, | |
| 1230 | }; | |
| 1231 | ||
| 1232 | static const TUint16 TheSwedishStringElement[] = | |
| 1233 | 	{
 | |
| 1234 | 0x2,0x61,0x30a,0x2,0x61,0x308,0x2,0x6f, | |
| 1235 | 0x308,0x2,0x41,0x30a,0x2,0x41,0x308,0x2, | |
| 1236 | 0x4f,0x308,0x2,0x75,0x308,0x2,0x55,0x308, | |
| 1237 | }; | |
| 1238 | ||
| 1239 | static const TUint32 TheSwedishStringIndex[] = | |
| 1240 | 	{
 | |
| 1241 | 0xc0004,0x90003,0xf0005,0x150007,0x30001,0x0,0x60002,0x120006, | |
| 1242 | }; | |
| 1243 | ||
| 1244 | static const TCollationKeyTable TheSwedishTable = | |
| 1245 | 	{ TheSwedishKey, TheSwedishIndex, 2, TheSwedishStringElement, TheSwedishStringIndex, 8 };
 | |
| 1246 | ||
| 1247 | static const TCollationMethod TheSwedishMethod = | |
| 1248 | 	{ 0, NULL, &TheSwedishTable, 0 };
 | |
| 1249 | ||
| 1250 | static const TCollationMethod TheSwapCaseMethod = | |
| 1251 | 	{ 0, NULL, NULL, TCollationMethod::ESwapCase };
 | |
| 1252 | ||
| 1253 | static const TCollationMethod TheFoldCaseMethod = | |
| 1254 | 	{ 0, NULL, NULL, TCollationMethod::EFoldCase };
 | |
| 1255 | ||
| 1256 | static const TUint32 TheKanaKey[] = | |
| 1257 | 	{
 | |
| 1258 | 0xc949,0xca09,0x2010f,0x20113,0x4010b,0x4010f,0x5010b,0x5010f, | |
| 1259 | 0x8010b,0x8010f,0xa010f,0xa014b,0xc010b,0xc010f,0xe010b,0xe010f, | |
| 1260 | 0xe013f,0x10010b,0x10010f,0x12010b,0x12010f,0x14c90b,0x14c90f,0x16ca0b, | |
| 1261 | 0x16ca0f,0x17010b,0x18030f,0x1a060b,0x1a060f,0x1c160f,0x1e0d0b,0x1e0d0f, | |
| 1262 | 0x20290f,0x22020b,0x22020f,0x24010d,0x28010d,0x2c010d,0x2e010d,0x30010d, | |
| 1263 | 0x32010d,0x34010d,0x36010b,0x36010f,0x38010f,0x3a010f,0x3c0109,0x3c010d, | |
| 1264 | 0x3e0109,0x3e010d,0x40010d,0x400109,0x42010d,0x440109,0x44010d,0x46010d, | |
| 1265 | 0x48010d,0x4a010f,0x4c010f,0x4e010b,0x4f010b,0x50010b,0x50010f,0x52010b, | |
| 1266 | 0x52010f,0x54010b,0x56010b,0x58010b,0x58010f,0x5a010b,0x5a010f,0x5c010b, | |
| 1267 | 0x5c010f,0x5e010b,0x5e010f,0x60010b,0x62010b,0x64010b,0x66010b,0x68010f, | |
| 1268 | 0x68010b,0x6a010f,0x6a010b,0x6c010b,0x6e010b,0x6f010b,0x70010b,0x72010b, | |
| 1269 | 0x72010f,0x74010b,0x74010f,0x76010f,0x78010f,0x7a010f,0x7c010b,0x7c010f, | |
| 1270 | 0x80010b,0x80010f,0x82010b,0x82010f,0x84010f,0x86010f,0x88010f,0x8a010f, | |
| 1271 | 0x8c010b,0x8e010f,0x90010f,0x92010f,0x94010d,0x960109,0x96010d,0x980109, | |
| 1272 | 0x98010d,0x9a010d,0x9c0109,0x9c010d,0x9e010b,0x9e010f,0x100010b,0x100010f, | |
| 1273 | 0x102010b,0x102010f,0x104010b,0x104010f,0x106010b,0x106010f,0x107010f,0x108010f, | |
| 1274 | 0x109010f,0x10a010f,0x10b010f,0x10c010f,0x10d010f,0x10e010f,0x10f010f,0x110010f, | |
| 1275 | 0x111010f,0x112010f,0x113010f,0x114010f,0x115010f,0x116010f,0x117010f,0x118010f, | |
| 1276 | 0x119010f,0x11a010f,0x11b010f,0x11c010f,0x11d010f,0x11e010f,0x11f010f,0x120010f, | |
| 1277 | 0x121010f,0x122010f,0x123010f,0x124010f,0x125010f,0x126010f,0x127010f,0x128010f, | |
| 1278 | 0x129010f,0x12a010f,0x12b010f,0x12c010f,0x12d010f,0x12e010f,0x12f010f,0x130010f, | |
| 1279 | 0x131010f,0x132010f,0x133010f,0x134010f,0x135010f,0x136010f,0x137010f,0x138010f, | |
| 1280 | 0x139010f,0x13b010f,0x13c010d,0x13d010d,0x13e010f,0x13f010f,0x140010f,0x141010f, | |
| 1281 | 0x142010f,0x143010d,0x144010d,0x145010d,0x146010d,0x147010d,0x148010d,0x149010d, | |
| 1282 | 0x14a010d,0x14b010d,0x14c010d,0x14d010d,0x14e010d,0x14f010d,0x150010d,0x151010d, | |
| 1283 | 0x152010d,0x153010d,0x154010d,0x155010d,0x156010d,0x157010d,0x158010d,0x159010d, | |
| 1284 | 0x15a010d,0x15b010d,0x15c010d,0x15d010d,0x15e010d,0x15f010d,0x160010f,0x161010f, | |
| 1285 | 0x162010f,0x163010f,0x164010f,0x165010f,0x166010f,0x167010f,0x168010f,0x169010f, | |
| 1286 | 0x16a010f,0x16b010f,0x16c010f,0x16d010f,0x16e010f,0x16f010f,0x170010f,0x171010f, | |
| 1287 | 0x172010f,0x174010f,0x175010f,0x176010f,0x177010f,0x178010f,0x179010f,0x17a010d, | |
| 1288 | 0x17b010d,0x17c010d,0x17d0119,0x17e0119,0x17f0119,0x1800119,0x1810119,0x182010d, | |
| 1289 | 0x183010d,0x184010d,0x185010d,0x186010d,0x187010d,0x189010f,0x18a010f,0x18b010f, | |
| 1290 | 0x18c010f,0x18d0111,0x18e0111,0x18f0111,0x1900111,0x1910111,0x1920111,0x1930111, | |
| 1291 | 0x1940111,0x1950111,0x1960111,0x197010f,0x198010f,0x199010b,0x199010f,0x6c50109, | |
| 1292 | 0x6c60109,0x6c70109,0x6c80109,0x6c90109,0x6ca0109,0x6cb0109,0x6cc0109,0x6cd0109, | |
| 1293 | 0x6ce0109,0x6cf0109,0x6cf010d,0x6cf0121,0x6cf0125,0x6e30109,0x6e3010d,0x6e30121, | |
| 1294 | 0x6e30125,0x6fb0109,0x6fb010d,0x6fb0121,0x6fb0125,0x7070109,0x707010d,0x7070121, | |
| 1295 | 0x7070125,0x72f0109,0x72f010d,0x72f0121,0x72f0125,0x75b0109,0x75b010d,0x75b0121, | |
| 1296 | 0x75b0125,0x7630109,0x763010d,0x7630121,0x7630125,0x7830109,0x783010d,0x7830121, | |
| 1297 | 0x7830125,0x79d0109,0x79d010d,0x79d0121,0x79d0125,0x7b10109,0x7b1010d,0x7b10121, | |
| 1298 | 0x7b10125,0x7c10109,0x7c1010d,0x7c10121,0x7c10125,0x7cd0109,0x7cd010d,0x7cd0121, | |
| 1299 | 0x7cd0125,0x7f50109,0x7f5010d,0x7f50121,0x7f50125,0x7fd0109,0x7fd010d,0x7fd0121, | |
| 1300 | 0x7fd0125,0x8150109,0x815010d,0x8150121,0x8150125,0x82d0109,0x82d010d,0x82d0121, | |
| 1301 | 0x82d0125,0x8390109,0x839010d,0x8390121,0x8390125,0x8450109,0x845010d,0x8450121, | |
| 1302 | 0x8450125,0x86d0109,0x86d010d,0x86d0121,0x86d0125,0x8890109,0x889010d,0x8890121, | |
| 1303 | 0x8890125,0x8ad0109,0x8ad010d,0x8ad0121,0x8ad0125,0x8c50109,0x8c5010d,0x8c50121, | |
| 1304 | 0x8c50125,0x8d10109,0x8d1010d,0x8d10121,0x8d10125,0x8d90109,0x8d9010d,0x8d90121, | |
| 1305 | 0x8d90125,0x8dd0109,0x8dd010d,0x8dd0121,0x8dd0125,0x8e90109,0x8e9010d,0x8e90121, | |
| 1306 | 0x8e90125,0x10200139,0x10200135,0x10200149,0x10200141,0x10200145,0x1020013d,0x10260139, | |
| 1307 | 0x10260135,0x10260149,0x10260141,0x10260145,0x1026013d,0x102c0139,0x102c0135,0x102c0149, | |
| 1308 | 0x102c0141,0x102c0145,0x102c013d,0x10330139,0x10330135,0x10330149,0x10330141,0x10330145, | |
| 1309 | 0x1033013d,0x10390139,0x10390135,0x10390149,0x10390141,0x10390145,0x1039013d,0x103f0135, | |
| 1310 | 0x103f0145,0x103f013d,0x10440135,0x10440145,0x1044013d,0x10490135,0x10490145,0x1049013d, | |
| 1311 | 0x104e0135,0x104e0145,0x104e013d,0x10530135,0x10530145,0x1053013d,0x10580135,0x10580145, | |
| 1312 | 0x1058013d,0x105d0135,0x105d0145,0x105d013d,0x10620135,0x10620145,0x1062013d,0x10670135, | |
| 1313 | 0x10670145,0x1067013d,0x106c0135,0x106c0145,0x106c013d,0x10710135,0x10710145,0x1071013d, | |
| 1314 | 0x10760135,0x10760145,0x1076013d,0x107b0139,0x107b0135,0x107b0149,0x107b0141,0x107b0145, | |
| 1315 | 0x107b013d,0x10830135,0x10830145,0x1083013d,0x10880135,0x10880145,0x1088013d,0x108d0135, | |
| 1316 | 0x108d0145,0x108d013d,0x10900135,0x10900145,0x1090013d,0x10930135,0x10930145,0x1093013d, | |
| 1317 | 0x10960135,0x10960145,0x1096013d,0x10990135,0x10990145,0x1099013d,0x109c0135,0x109c0145, | |
| 1318 | 0x109c013d,0x10a30135,0x10a30145,0x10a3013d,0x10aa0135,0x10aa0145,0x10aa013d,0x10b10135, | |
| 1319 | 0x10b10145,0x10b1013d,0x10b80135,0x10b80145,0x10b8013d,0x10bf0135,0x10bf0145,0x10bf013d, | |
| 1320 | 0x10c20135,0x10c20145,0x10c2013d,0x10c50135,0x10c50145,0x10c5013d,0x10c80135,0x10c80145, | |
| 1321 | 0x10c8013d,0x10cb0135,0x10cb0145,0x10cb013d,0x10ce0139,0x10ce0135,0x10ce0149,0x10ce0141, | |
| 1322 | 0x10ce0145,0x10ce013d,0x10d40139,0x10d40135,0x10d40149,0x10d40141,0x10d40145,0x10d4013d, | |
| 1323 | 0x10da0139,0x10da0135,0x10da0149,0x10da0141,0x10da0145,0x10da013d,0x10e00135,0x10e00145, | |
| 1324 | 0x10e0013d,0x10e30135,0x10e30145,0x10e3013d,0x10e60135,0x10e60145,0x10e6013d,0x10e90135, | |
| 1325 | 0x10e90145,0x10e9013d,0x10ec0135,0x10ec0145,0x10ec013d,0x10ef0139,0x10ef0135,0x10ef0149, | |
| 1326 | 0x10ef0145,0x10ef013d,0x10f40135,0x10f40145,0x10f60135,0x10f60145,0x10f80135,0x10f80145, | |
| 1327 | 0x10f8013d,0x10fb0135,0x10fb0145,0x10fb013d, | |
| 1328 | }; | |
| 1329 | ||
| 1330 | static const TUint32 TheKanaIndex[] = | |
| 1331 | 	{
 | |
| 1332 | 0x210013,0x22010d,0x230076,0x24006f,0x250074,0x260078,0x270019,0x28003d, | |
| 1333 | 0x29003f,0x2a007a,0x2b0057,0x2c0006,0x2d0059,0x2e0008,0x2f002e,0x30010f, | |
| 1334 | 0x310110,0x320111,0x330112,0x340113,0x350114,0x360115,0x370116,0x380117, | |
| 1335 | 0x390118,0x3a000c,0x3b000e,0x3c0060,0x3d005e,0x3e0062,0x3f0011,0x40007c, | |
| 1336 | 0x41011b,0x42011f,0x430123,0x440127,0x45012b,0x46012f,0x470133,0x480137, | |
| 1337 | 0x49013b,0x4a013f,0x4b0143,0x4c0147,0x4d014b,0x4e014f,0x4f0153,0x500157, | |
| 1338 | 0x51015b,0x52015f,0x530163,0x540167,0x55016b,0x56016f,0x570173,0x580177, | |
| 1339 | 0x59017b,0x5a017f,0x5b0043,0x5c0030,0x5d0045,0x5e001e,0x5f0021,0x60001b, | |
| 1340 | 0x610119,0x62011d,0x630121,0x640125,0x650129,0x66012d,0x670131,0x680135, | |
| 1341 | 0x690139,0x6a013d,0x6b0141,0x6c0145,0x6d0149,0x6e014d,0x6f0151,0x700155, | |
| 1342 | 0x710159,0x72015d,0x730161,0x740165,0x750169,0x76016d,0x770171,0x780175, | |
| 1343 | 0x790179,0x7a017d,0x7b0047,0x7c0035,0x7d0049,0x7e0033,0xa20071,0xa30072, | |
| 1344 | 0xa5006d,0xa7007e,0xa8001d,0xb00069,0xb1005b,0xb4001a,0xb600b7,0xd7005c, | |
| 1345 | 0xf7005d,0x2010002d,0x2015002c,0x20180039,0x2019003a,0x201c003b,0x201d003c,0x202000b5, | |
| 1346 | 0x202100b6,0x20250038,0x20260037,0x203000b1,0x2032006a,0x2033006b,0x203b008c,0x2103006c, | |
| 1347 | 0x211600ef,0x212100f1,0x216000cc,0x216100cd,0x216200ce,0x216300cf,0x216400d0,0x216500d1, | |
| 1348 | 0x216600d2,0x216700d3,0x216800d4,0x216900d5,0x21700101,0x21710102,0x21720103,0x21730104, | |
| 1349 | 0x21740105,0x21750106,0x21760107,0x21770108,0x21780109,0x2179010a,0x2190008f,0x21910090, | |
| 1350 | 0x2192008e,0x21930091,0x21d2009e,0x21d4009f,0x220000a0,0x220200a5,0x220300a1,0x220700a6, | |
| 1351 | 0x22080093,0x220b0094,0x221100fe,0x2212005a,0x221a00ab,0x221d00ad,0x221e0066,0x221f00ff, | |
| 1352 | 0x222000a2,0x22250034,0x2227009b,0x2228009c,0x2229009a,0x222a0099,0x222b00af,0x222c00b0, | |
| 1353 | 0x222e00fd,0x22340066,0x223500ae,0x223d00ac,0x225200a8,0x226100a7,0x22660064,0x22670065, | |
| 1354 | 0x226a00a9,0x226b00aa,0x22820097,0x22830098,0x22860095,0x22870096,0x22a500a3,0x22bf0100, | |
| 1355 | 0x231200a4,0x246000b9,0x246100ba,0x246200bb,0x246300bc,0x246400bd,0x246500be,0x246600bf, | |
| 1356 | 0x246700c0,0x246800c1,0x246900c2,0x246a00c3,0x246b00c3,0x246c00c4,0x246d00c5,0x246e00c6, | |
| 1357 | 0x246f00c7,0x247000c8,0x247100c9,0x247200ca,0x247300cb,0x25a00087,0x25a10086,0x25b20089, | |
| 1358 | 0x25b30088,0x25bc008b,0x25bd008a,0x25c60085,0x25c70084,0x25cb0081,0x25ce0083,0x25cf0082, | |
| 1359 | 0x25ef00b8,0x26050080,0x2606007f,0x26400068,0x26420067,0x266a00b4,0x266d00b3,0x266f00b2, | |
| 1360 | 0x30010003,0x30020005,0x30030025,0x30050027,0x30060028,0x30070029,0x3008004b,0x3009004c, | |
| 1361 | 0x300a004d,0x300b004e,0x300c004f,0x300d0051,0x300e0053,0x300f0054,0x30100055,0x30110056, | |
| 1362 | 0x3012008d,0x30130092,0x30140041,0x30150042,0x301c0032,0x301d00ed,0x301f00ee,0x30410181, | |
| 1363 | 0x30420182,0x30430187,0x30440188,0x3045018d,0x3046018e,0x30470193,0x30480194,0x30490199, | |
| 1364 | 0x304a019a,0x304b019f,0x304d01a2,0x304f01a5,0x305101a8,0x305301ab,0x305501ae,0x305701b1, | |
| 1365 | 0x305901b4,0x305b01b7,0x305d01ba,0x305f01bd,0x306101c0,0x306301c3,0x306401c4,0x306601c9, | |
| 1366 | 0x306801cc,0x306a01cf,0x306b01d2,0x306c01d5,0x306d01d8,0x306e01db,0x306f01de,0x307201e1, | |
| 1367 | 0x307501e4,0x307801e7,0x307b01ea,0x307e01ed,0x307f01f0,0x308001f3,0x308101f6,0x308201f9, | |
| 1368 | 0x308301fc,0x308401fd,0x30850202,0x30860203,0x30870208,0x30880209,0x3089020e,0x308a0211, | |
| 1369 | 0x308b0214,0x308c0217,0x308d021a,0x308e021d,0x308f021e,0x30900222,0x30910224,0x30920226, | |
| 1370 | 0x30930229,0x30990000,0x309a0001,0x309b0016,0x309c0018,0x309d0024,0x30a10183,0x30a20185, | |
| 1371 | 0x30a30189,0x30a4018b,0x30a5018f,0x30a60191,0x30a70195,0x30a80197,0x30a9019b,0x30aa019d, | |
| 1372 | 0x30ab01a0,0x30ad01a3,0x30af01a6,0x30b101a9,0x30b301ac,0x30b501af,0x30b701b2,0x30b901b5, | |
| 1373 | 0x30bb01b8,0x30bd01bb,0x30bf01be,0x30c101c1,0x30c301c5,0x30c401c7,0x30c601ca,0x30c801cd, | |
| 1374 | 0x30ca01d0,0x30cb01d3,0x30cc01d6,0x30cd01d9,0x30ce01dc,0x30cf01df,0x30d201e2,0x30d501e5, | |
| 1375 | 0x30d801e8,0x30db01eb,0x30de01ee,0x30df01f1,0x30e001f4,0x30e101f7,0x30e201fa,0x30e301fe, | |
| 1376 | 0x30e40200,0x30e50204,0x30e60206,0x30e7020a,0x30e8020c,0x30e9020f,0x30ea0212,0x30eb0215, | |
| 1377 | 0x30ec0218,0x30ed021b,0x30ee021f,0x30ef0220,0x30f00223,0x30f10225,0x30f20227,0x30f3022a, | |
| 1378 | 0x30fb000a,0x30fc002b,0x30fd0023,0x323100f7,0x323200f8,0x323900f9,0x32a400f2,0x32a500f3, | |
| 1379 | 0x32a600f4,0x32a700f5,0x32a800f6,0x330300dc,0x330d00e0,0x331400d7,0x331800da,0x332200d8, | |
| 1380 | 0x332300e2,0x332600e1,0x332700db,0x332b00e3,0x333600dd,0x333b00e5,0x334900d6,0x334a00e4, | |
| 1381 | 0x334d00d9,0x335100de,0x335700df,0x337b00ec,0x337c00fc,0x337d00fb,0x337e00fa,0x338f00e9, | |
| 1382 | 0x339c00e6,0x339d00e7,0x339e00e8,0x33a100eb,0x33c400ea,0x33cd00f0,0x4edd0026,0xfe540010, | |
| 1383 | 0xff010014,0xff02010e,0xff030077,0xff040070,0xff050075,0xff060079,0xff07010c,0xff08003e, | |
| 1384 | 0xff090040,0xff0a007b,0xff0b0058,0xff0c0007,0xff0d005a,0xff0e0009,0xff0f002f,0xff1a000d, | |
| 1385 | 0xff1b000f,0xff1c0061,0xff1d005f,0xff1e0063,0xff1f0012,0xff20007d,0xff21011c,0xff220120, | |
| 1386 | 0xff230124,0xff240128,0xff25012c,0xff260130,0xff270134,0xff280138,0xff29013c,0xff2a0140, | |
| 1387 | 0xff2b0144,0xff2c0148,0xff2d014c,0xff2e0150,0xff2f0154,0xff300158,0xff31015c,0xff320160, | |
| 1388 | 0xff330164,0xff340168,0xff35016c,0xff360170,0xff370174,0xff380178,0xff39017c,0xff3a0180, | |
| 1389 | 0xff3b0044,0xff3c0031,0xff3d0046,0xff3e001f,0xff3f0022,0xff40001c,0xff41011a,0xff42011e, | |
| 1390 | 0xff430122,0xff440126,0xff45012a,0xff46012e,0xff470132,0xff480136,0xff49013a,0xff4a013e, | |
| 1391 | 0xff4b0142,0xff4c0146,0xff4d014a,0xff4e014e,0xff4f0152,0xff500156,0xff51015a,0xff52015e, | |
| 1392 | 0xff530162,0xff540166,0xff55016a,0xff56016e,0xff570172,0xff580176,0xff59017a,0xff5a017e, | |
| 1393 | 0xff5b0048,0xff5c0036,0xff5d004a,0xff5e0032,0xff610004,0xff620050,0xff630052,0xff640002, | |
| 1394 | 0xff65000b,0xff660228,0xff670184,0xff68018a,0xff690190,0xff6a0196,0xff6b019c,0xff6c01ff, | |
| 1395 | 0xff6d0205,0xff6e020b,0xff6f01c6,0xff70002a,0xff710186,0xff72018c,0xff730192,0xff740198, | |
| 1396 | 0xff75019e,0xff7601a1,0xff7701a4,0xff7801a7,0xff7901aa,0xff7a01ad,0xff7b01b0,0xff7c01b3, | |
| 1397 | 0xff7d01b6,0xff7e01b9,0xff7f01bc,0xff8001bf,0xff8101c2,0xff8201c8,0xff8301cb,0xff8401ce, | |
| 1398 | 0xff8501d1,0xff8601d4,0xff8701d7,0xff8801da,0xff8901dd,0xff8a01e0,0xff8b01e3,0xff8c01e6, | |
| 1399 | 0xff8d01e9,0xff8e01ec,0xff8f01ef,0xff9001f2,0xff9101f5,0xff9201f8,0xff9301fb,0xff940201, | |
| 1400 | 0xff950207,0xff96020d,0xff970210,0xff980213,0xff990216,0xff9a0219,0xff9b021c,0xff9c0221, | |
| 1401 | 0xff9d022b,0xff9e0015,0xff9f0017,0xffe00071,0xffe10073,0xffe2009d,0xffe30020,0xffe4010b, | |
| 1402 | 0xffe5006e, | |
| 1403 | }; | |
| 1404 | ||
| 1405 | /* | |
| 1406 | Collation keys for the Hiragana and Katakana syllabaries, built by | |
| 1407 | running coltab on \loce32\japanese\source\japanese_basekeys.txt after deleting all CJK characters. | |
| 1408 | */ | |
| 1409 | static const TCollationKeyTable TheKanaTable = | |
| 1410 | 	{ TheKanaKey, TheKanaIndex, 561, NULL, NULL, 0 };
 | |
| 1411 | ||
| 1412 | static const TCollationMethod TheKanaMethod = | |
| 1413 | 	{ 0, NULL, &TheKanaTable, 0 };
 | |
| 1414 | ||
| 1415 | static const TCollationMethod TheSwapKanaMethod = | |
| 1416 | 	{ 0, NULL, &TheKanaTable, TCollationMethod::ESwapKana };
 | |
| 1417 | ||
| 1418 | static const TUint32 TheQazKey[] = | |
| 1419 | 	{
 | |
| 1420 | 0x6d00121,0x6e40121, | |
| 1421 | }; | |
| 1422 | ||
| 1423 | static const TUint32 TheQazIndex[] = | |
| 1424 | 	{
 | |
| 1425 | 0 | |
| 1426 | }; | |
| 1427 | ||
| 1428 | static const TUint16 TheQazStringElement[] = | |
| 1429 | 	{
 | |
| 1430 | 0x2,0x53,0x45,0x3,0x53,0x45,0x58, | |
| 1431 | }; | |
| 1432 | ||
| 1433 | static const TUint32 TheQazStringIndex[] = | |
| 1434 | 	{
 | |
| 1435 | 0x0,0x30001, | |
| 1436 | }; | |
| 1437 | ||
| 1438 | static const TCollationKeyTable TheQazTable = | |
| 1439 | 	{ TheQazKey, TheQazIndex, 0, TheQazStringElement, TheQazStringIndex, 2 };
 | |
| 1440 | ||
| 1441 | // A bizarre collation method that sorts 'SE' between A and B and 'SEX' between B and C | |
| 1442 | static const TCollationMethod TheQazMethod = | |
| 1443 | 	{ 0, NULL, &TheQazTable, 0 };
 | |
| 1444 | ||
| 1445 | // A collation method to sort accents starting at the end of the string, as in France | |
| 1446 | static const TCollationMethod TheAccentsBackwardsMethod = | |
| 1447 | 	{ 0, NULL, NULL, TCollationMethod::EAccentsBackwards };
 | |
| 1448 | ||
| 1449 | void test_unicode_collations() | |
| 1450 | 	{
 | |
| 1451 | /* | |
| 1452 | Note: the curious method of getting values greater than 255 into the strings is needed | |
| 1453 | because GCC doesn't handle the \x notation properly: it zeroes the high byte, so | |
| 1454 | L"\x2011" puts the value 0x0011, not 0x2011, into the string. | |
| 1455 | */ | |
| 1456 | TBuf<32> x, y; | |
| 1457 | ||
| 1458 | 	test.Next(_L("collation"));
 | |
| 1459 | 	test_unicode_collation(_L("SEZ"),_L("BZ"),-1,3,&TheQazMethod); // test 2-character combination 'SE'
 | |
| 1460 | 	test_unicode_collation(_L("SEXY"),_L("CY"),-1,3,&TheQazMethod); // test 3-character combination 'SEX'
 | |
| 1461 | 	test_unicode_collation(_L("Graham"),_L("Graham"),0);		// equality
 | |
| 1462 | 	test_unicode_collation(_L("something"),_L(""),1);			// something after nothing
 | |
| 1463 | 	test_unicode_collation(_L("inform"),_L("information"),-1);	// prefixes come first
 | |
| 1464 | 	test_unicode_collation(_L("unicode"),_L("consortium"),1);	// standard alphabetic ordering: lowercase
 | |
| 1465 | 	test_unicode_collation(_L("AARON"),_L("AARDVARK"),1);		// standard alphabetic ordering: uppercase
 | |
| 1466 | 	test_unicode_collation(_L("AARON"),_L("AARDVARK"),1,0);		// alphabetic ordering is significant at level 0
 | |
| 1467 | 	test_unicode_collation(_L("hello"),_L("Hello"),-1,3);		// lowercase before uppercase
 | |
| 1468 | 	test_unicode_collation(_L("hello"),_L("Hello"),-1,3,&TheSwapKanaMethod);// swapping kana ordering doesn't affect case
 | |
| 1469 | 	test_unicode_collation(_L("hello"),_L("Hello"),1,3,&TheSwapCaseMethod); // uppercase before lowercase if ESwapCase used
 | |
| 1470 | 	test_unicode_collation(_L("hello"),_L("Hello"),0,2,&TheFoldCaseMethod); // uppercase = lowercase if EFoldCase used at level 2
 | |
| 1471 | 	test_unicode_collation(_L("hello"),_L("Hello"),-1,2);		// case is significant at level 2
 | |
| 1472 | 	test_unicode_collation(_L("hello"),_L("Hello"),0,1);		// ignore case at level 1
 | |
| 1473 | 	test_unicode_collation(_L("hello"),_L("[H E L L O !]"),0,1);// ignore punctuation and case at level 1
 | |
| 1474 | 	test_unicode_collation(_L("1234"),_L("abc"),-1);			// digits before letters
 | |
| 1475 | 	x = _L("week day"); x[4] = 0x2011;							// (week-day with non-breaking hyphen)
 | |
| 1476 | 	test_unicode_collation(x,_L("weekend"),-1);					// ignore punctuation if letters differ; d < e
 | |
| 1477 | 	test_unicode_collation(x,_L("week-day"),1);					// compare punctuation if otherwise equal
 | |
| 1478 | 	test_unicode_collation(x,_L("week-day"),0,2);				// ignore difference between hyphens at level 2
 | |
| 1479 | 	test_unicode_collation(x,_L("Week-day"),-1);				// case difference outweighs punctuation ordering
 | |
| 1480 | 	y = _L("a ngstro m"); y[1] = 0x30a; y[8] = 0x308;			// (a<ring>ngstro<umlaut>m with piece accents)
 | |
| 1481 | 	test_unicode_collation(_L("\xe5ngstr\xf6m"),y,0);			// base+accent = precomposed (a<ring>ngstro<umlaut>m)
 | |
| 1482 | 	test_unicode_collation(_L("Liege"),_L("Li\xe8ge"),-1);		// unaccented before accented...
 | |
| 1483 | 	test_unicode_collation(_L("Liege"),_L("Li\xe8ge"),-1,1);	// accents are significant at level 1
 | |
| 1484 | 	test_unicode_collation(_L("Liege"),_L("li\xe8ge"),-1);		// accentuation outweighs case
 | |
| 1485 | 	test_unicode_collation(_L("Liege"),_L("li\xe8ge"),0,0);		// ignore accents and case at level 0
 | |
| 1486 | 	test_unicode_collation(_L("\xe5ngstr\xf6m"),_L("zoo"),-1);	// a-ring before z by default
 | |
| 1487 | 	test_unicode_collation(_L("\xe5ngstr\xf6m"),_L("zoo"),1,3,&TheSwedishMethod);	// a-ring after z in Sweden
 | |
| 1488 | 	test_unicode_collation(_L("Antidisestablishmentarian"),_L("antidisestablishmentariac"),1);
 | |
| 1489 | // long strings that don't have identical prefixes | |
| 1490 | 	x = _L("\x304b\x306a"); y = _L("\x30ab\x30ca");				// 'kana' in Hiragana and Katakana
 | |
| 1491 | test_unicode_collation(x,y,-1,3,&TheKanaMethod); // Hiragana before Katakana | |
| 1492 | test_unicode_collation(x,y,1,3,&TheSwapKanaMethod); // Katakana before Hiragana if ESwapKana used | |
| 1493 | 	x = _L("p\xe9"L"ch\xe9"); y = _L("p\xea"L"che");			// x = pe<acute>che<acute>, y = pe<circumflex>che
 | |
| 1494 | test_unicode_collation(x,y,-1,3); // normal order; accents compared from start | |
| 1495 | test_unicode_collation(x,y,1,3,&TheAccentsBackwardsMethod); // reverse order; accents compared from end | |
| 1496 | 	test_unicode_collation(_L("aaAA"),_L("aAaA"),0,3,&TheFoldCaseMethod); // case folding should work even at level 3
 | |
| 1497 | 	test_unicode_collation(_L("\x2113"),_L("L"),1,3,&TheFoldCaseMethod); // script l and L should not be equal;
 | |
| 1498 | // script l before L because L folds to lower case, | |
| 1499 | // which sorts after secondary key type for script l | |
| 1500 | 	test_unicode_collation(_L("\x3c2"),_L("\x3c3"),-1,3); // Greek final and non-final sigma
 | |
| 1501 | 	test_unicode_collation(_L("\x3c2"),_L("\x3c3"),0,3,&TheFoldCaseMethod); // Greek final and non-final sigma
 | |
| 1502 | 	test_unicode_collation(_L("\xee0"),_L("\x4e00"),1,3);		// undefined character after CJK character not in table
 | |
| 1503 | 	test_unicode_collation(_L("\xee0"),_L("\xef0"),-1,3);		// undefined characters must differ
 | |
| 1504 | 	test_unicode_collation(_L("\xee0\xee1"),_L("\xef0"),-1,3);	// undefined characters in Unicode order, not string length
 | |
| 1505 | 	test_unicode_collation(_L("\xd800\xdc00"),_L("\xceff"),1,3);	// character U+10000 (using surrogates) 
 | |
| 1506 | // after Hangul character not in table | |
| 1507 | } | |
| 1508 | ||
| 1509 | // range of characters newly added or changed in Unicode 5.0 | |
| 1510 | // Inside BMP | |
| 1511 | static const TUint32 Unicode5NewCharRange[] = | |
| 1512 | 	{
 | |
| 1513 | 0x0220, 0x0221, 0x0234, 0x024F, 0x02AE, 0x02AF, 0x02EF, 0x02FF, | |
| 1514 | 0x034F, 0x035F, 0x0363, 0x036F, 0x037B, 0x037D, 0x03D8, 0x03D9, | |
| 1515 | 0x03F4, 0x03FF, 0x048A, 0x048B, 0x04C5, 0x04C6, 0x04C9, 0x04CA, | |
| 1516 | 0x04CD, 0x04CF, 0x04F6, 0x0513, 0x05A2, 0x05A2, 0x05BA, 0x05BA, | |
| 1517 | 0x05C5, 0x05C7, 0x0600, 0x0603, 0x060B, 0x0615, 0x061E, 0x061F, | |
| 1518 | 0x0656, 0x065E, 0x066E, 0x066F, 0x06EE, 0x06EF, 0x06FF, 0x06FF, | |
| 1519 | 0x072D, 0x072F, 0x074D, 0x076D, 0x07B1, 0x07B1, 0x07C0, 0x07FA, | |
| 1520 | 0x0904, 0x0904, 0x097B, 0x097F, 0x09BD, 0x09BD, 0x09CE, 0x09CE, | |
| 1521 | 0x0A01, 0x0A03, 0x0A8C, 0x0A8C, 0x0AE1, 0x0AE3, 0x0AF1, 0x0AF1, | |
| 1522 | 0x0B35, 0x0B35, 0x0B71, 0x0B71, 0x0BB6, 0x0BB6, 0x0BE6, 0x0BE6, | |
| 1523 | 0x0BF3, 0x0BFA, 0x0CBC, 0x0CBD, 0x0CE2, 0x0CE3, 0x0CF1, 0x0CF2, | |
| 1524 | 0x0FD0, 0x0FD1, 0x10F7, 0x10FC, 0x1207, 0x1207, 0x1247, 0x1247, | |
| 1525 | 0x1287, 0x1287, 0x12AF, 0x12AF, 0x12CF, 0x12CF, 0x12EF, 0x12EF, | |
| 1526 | 0x130F, 0x130F, 0x131F, 0x131F, 0x1347, 0x1347, 0x135F, 0x1360, | |
| 1527 | 0x1380, 0x1399, 0x1700, 0x170C, 0x170E, 0x1714, 0x1720, 0x1736, | |
| 1528 | 0x1740, 0x1753, 0x1760, 0x176C, 0x176E, 0x1770, 0x1772, 0x1773, | |
| 1529 | 0x17DD, 0x17DD, 0x17F0, 0x17F9, 0x1900, 0x191C, 0x1920, 0x192B, | |
| 1530 | 0x1930, 0x193B, 0x1940, 0x1940, 0x1944, 0x196D, 0x1970, 0x1974, | |
| 1531 | 0x1980, 0x19A9, 0x19B0, 0x19C9, 0x19D0, 0x19D9, 0x19DE, 0x1A1B, | |
| 1532 | 0x1A1E, 0x1A1F, 0x1B00, 0x1B4B, 0x1B50, 0x1B7C, 0x1D00, 0x1DCA, | |
| 1533 | 0x1DFE, 0x1DFF, 0x2047, 0x2063, 0x2071, 0x2071, 0x2090, 0x2094, | |
| 1534 | 0x20B0, 0x20B5, 0x20E4, 0x20EF, 0x213B, 0x214E, 0x2184, 0x2184, | |
| 1535 | 0x21F4, 0x21FF, 0x22F2, 0x22FF, 0x237C, 0x237C, 0x239B, 0x23E7, | |
| 1536 | 0x24EB, 0x24FF, 0x2596, 0x259F, 0x25F8, 0x25FF, 0x2614, 0x2618, | |
| 1537 | 0x2672, 0x269C, 0x26A0, 0x26B2, 0x2768, 0x2775, 0x27C0, 0x27CA, | |
| 1538 | 0x27D0, 0x27EB, 0x27F0, 0x27FF, 0x2900, 0x2B1A, 0x2B20, 0x2B23, | |
| 1539 | 0x2C00, 0x2C2E, 0x2C30, 0x2C5E, 0x2C60, 0x2C6C, 0x2C74, 0x2C77, | |
| 1540 | 0x2C80, 0x2CEA, 0x2CF9, 0x2D25, 0x2D30, 0x2D65, 0x2D6F, 0x2D6F, | |
| 1541 | 0x2D80, 0x2D96, 0x2DA0, 0x2DA6, 0x2DA8, 0x2DAE, 0x2DB0, 0x2DB6, | |
| 1542 | 0x2DB8, 0x2DBE, 0x2DC0, 0x2DC6, 0x2DC8, 0x2DCE, 0x2DD0, 0x2DD6, | |
| 1543 | 0x2DD8, 0x2DDE, 0x2E00, 0x2E17, 0x2E1C, 0x2E1D, 0x303B, 0x303D, | |
| 1544 | 0x3095, 0x3096, 0x309F, 0x30A0, 0x30FF, 0x30FF, 0x31C0, 0x31CF, | |
| 1545 | 0x31F0, 0x31FF, 0x321D, 0x321E, 0x3250, 0x325F, 0x327C, 0x327E, | |
| 1546 | 0x32B1, 0x32BF, 0x32CC, 0x32CF, 0x3377, 0x337A, 0x33DE, 0x33DF, | |
| 1547 | 0x33FF, 0x33FF, 0x4DC0, 0x4DFF, 0x9FA6, 0x9FBB, 0xA4A2, 0xA4A3, | |
| 1548 | 0xA4B4, 0xA4B4, 0xA4C1, 0xA4C1, 0xA4C5, 0xA4C5, 0xA700, 0xA71A, | |
| 1549 | 0xA720, 0xA721, 0xA800, 0xA82B, 0xA840, 0xA877, 0xFA30, 0xFA6A, | |
| 1550 | 0xFA70, 0xFAD9, 0xFDFC, 0xFDFD, 0xFE00, 0xFE19, 0xFE45, 0xFE48, | |
| 1551 | 0xFE73, 0xFE73, 0xFF5F, 0xFF60, | |
| 1552 | }; | |
| 1553 | ||
| 1554 | // characters Codepoint out of BMP, newly added or changed in Unicode 5.0 | |
| 1555 | static const TUint32 Unicode5NewCharOutBMPIndex[] = | |
| 1556 | {
 | |
| 1557 | 0x10000, 0x10001, 0x10002, 0x10003, 0x10004, 0x10005, 0x10006, 0x10007, | |
| 1558 | 0x10008, 0x10009, 0x1000A, 0x1000B, 0x1000D, 0x1000E, 0x1000F, 0x10010, | |
| 1559 | 0x10011, 0x10012, 0x10013, 0x10014, 0x10015, 0x10016, 0x10017, 0x10018, | |
| 1560 | 0x10019, 0x1001A, 0x1001B, 0x1001C, 0x1001D, 0x1001E, 0x1001F, 0x10020, | |
| 1561 | 0x10021, 0x10022, 0x10023, 0x10024, 0x10025, 0x10026, 0x10028, 0x10029, | |
| 1562 | 0x1002A, 0x1002B, 0x1002C, 0x1002D, 0x1002E, 0x1002F, 0x10030, 0x10031, | |
| 1563 | 0x10032, 0x10033, 0x10034, 0x10035, 0x10036, 0x10037, 0x10038, 0x10039, | |
| 1564 | 0x1003A, 0x1003C, 0x1003D, 0x1003F, 0x10040, 0x10041, 0x10042, 0x10043, | |
| 1565 | 0x10044, 0x10045, 0x10046, 0x10047, 0x10048, 0x10049, 0x1004A, 0x1004B, | |
| 1566 | 0x1004C, 0x1004D, 0x10050, 0x10051, 0x10052, 0x10053, 0x10054, 0x10055, | |
| 1567 | 0x10056, 0x10057, 0x10058, 0x10059, 0x1005A, 0x1005B, 0x1005C, 0x1005D, | |
| 1568 | 0x10080, 0x10081, 0x10082, 0x10083, 0x10084, 0x10085, 0x10086, 0x10087, | |
| 1569 | 0x10088, 0x10089, 0x1008A, 0x1008B, 0x1008C, 0x1008D, 0x1008E, 0x1008F, | |
| 1570 | 0x10090, 0x10091, 0x10092, 0x10093, 0x10094, 0x10095, 0x10096, 0x10097, | |
| 1571 | 0x10098, 0x10099, 0x1009A, 0x1009B, 0x1009C, 0x1009D, 0x1009E, 0x1009F, | |
| 1572 | 0x100A0, 0x100A1, 0x100A2, 0x100A3, 0x100A4, 0x100A5, 0x100A6, 0x100A7, | |
| 1573 | 0x100A8, 0x100A9, 0x100AA, 0x100AB, 0x100AC, 0x100AD, 0x100AE, 0x100AF, | |
| 1574 | 0x100B0, 0x100B1, 0x100B2, 0x100B3, 0x100B4, 0x100B5, 0x100B6, 0x100B7, | |
| 1575 | 0x100B8, 0x100B9, 0x100BA, 0x100BB, 0x100BC, 0x100BD, 0x100BE, 0x100BF, | |
| 1576 | 0x100C0, 0x100C1, 0x100C2, 0x100C3, 0x100C4, 0x100C5, 0x100C6, 0x100C7, | |
| 1577 | 0x100C8, 0x100C9, 0x100CA, 0x100CB, 0x100CC, 0x100CD, 0x100CE, 0x100CF, | |
| 1578 | 0x100D0, 0x100D1, 0x100D2, 0x100D3, 0x100D4, 0x100D5, 0x100D6, 0x100D7, | |
| 1579 | 0x100D8, 0x100D9, 0x100DA, 0x100DB, 0x100DC, 0x100DD, 0x100DE, 0x100DF, | |
| 1580 | 0x100E0, 0x100E1, 0x100E2, 0x100E3, 0x100E4, 0x100E5, 0x100E6, 0x100E7, | |
| 1581 | 0x100E8, 0x100E9, 0x100EA, 0x100EB, 0x100EC, 0x100ED, 0x100EE, 0x100EF, | |
| 1582 | 0x100F0, 0x100F1, 0x100F2, 0x100F3, 0x100F4, 0x100F5, 0x100F6, 0x100F7, | |
| 1583 | 0x100F8, 0x100F9, 0x100FA, 0x10100, 0x10101, 0x10102, 0x10107, 0x10108, | |
| 1584 | 0x10109, 0x1010A, 0x1010B, 0x1010C, 0x1010D, 0x1010E, 0x1010F, 0x10110, | |
| 1585 | 0x10111, 0x10112, 0x10113, 0x10114, 0x10115, 0x10116, 0x10117, 0x10118, | |
| 1586 | 0x10119, 0x1011A, 0x1011B, 0x1011C, 0x1011D, 0x1011E, 0x1011F, 0x10120, | |
| 1587 | 0x10121, 0x10122, 0x10123, 0x10124, 0x10125, 0x10126, 0x10127, 0x10128, | |
| 1588 | 0x10129, 0x1012A, 0x1012B, 0x1012C, 0x1012D, 0x1012E, 0x1012F, 0x10130, | |
| 1589 | 0x10131, 0x10132, 0x10133, 0x10137, 0x10138, 0x10139, 0x1013A, 0x1013B, | |
| 1590 | 0x1013C, 0x1013D, 0x1013E, 0x1013F, 0x10140, 0x10141, 0x10142, 0x10143, | |
| 1591 | 0x10144, 0x10145, 0x10146, 0x10147, 0x10148, 0x10149, 0x1014A, 0x1014B, | |
| 1592 | 0x1014C, 0x1014D, 0x1014E, 0x1014F, 0x10150, 0x10151, 0x10152, 0x10153, | |
| 1593 | 0x10154, 0x10155, 0x10156, 0x10157, 0x10158, 0x10159, 0x1015A, 0x1015B, | |
| 1594 | 0x1015C, 0x1015D, 0x1015E, 0x1015F, 0x10160, 0x10161, 0x10162, 0x10163, | |
| 1595 | 0x10164, 0x10165, 0x10166, 0x10167, 0x10168, 0x10169, 0x1016A, 0x1016B, | |
| 1596 | 0x1016C, 0x1016D, 0x1016E, 0x1016F, 0x10170, 0x10171, 0x10172, 0x10173, | |
| 1597 | 0x10174, 0x10175, 0x10176, 0x10177, 0x10178, 0x10179, 0x1017A, 0x1017B, | |
| 1598 | 0x1017C, 0x1017D, 0x1017E, 0x1017F, 0x10180, 0x10181, 0x10182, 0x10183, | |
| 1599 | 0x10184, 0x10185, 0x10186, 0x10187, 0x10188, 0x10189, 0x1018A, 0x10300, | |
| 1600 | 0x10301, 0x10302, 0x10303, 0x10304, 0x10305, 0x10306, 0x10307, 0x10308, | |
| 1601 | 0x10309, 0x1030A, 0x1030B, 0x1030C, 0x1030D, 0x1030E, 0x1030F, 0x10310, | |
| 1602 | 0x10311, 0x10312, 0x10313, 0x10314, 0x10315, 0x10316, 0x10317, 0x10318, | |
| 1603 | 0x10319, 0x1031A, 0x1031B, 0x1031C, 0x1031D, 0x1031E, 0x10320, 0x10321, | |
| 1604 | 0x10322, 0x10323, 0x10330, 0x10331, 0x10332, 0x10333, 0x10334, 0x10335, | |
| 1605 | 0x10336, 0x10337, 0x10338, 0x10339, 0x1033A, 0x1033B, 0x1033C, 0x1033D, | |
| 1606 | 0x1033E, 0x1033F, 0x10340, 0x10341, 0x10342, 0x10343, 0x10344, 0x10345, | |
| 1607 | 0x10346, 0x10347, 0x10348, 0x10349, 0x1034A, 0x10380, 0x10381, 0x10382, | |
| 1608 | 0x10383, 0x10384, 0x10385, 0x10386, 0x10387, 0x10388, 0x10389, 0x1038A, | |
| 1609 | 0x1038B, 0x1038C, 0x1038D, 0x1038E, 0x1038F, 0x10390, 0x10391, 0x10392, | |
| 1610 | 0x10393, 0x10394, 0x10395, 0x10396, 0x10397, 0x10398, 0x10399, 0x1039A, | |
| 1611 | 0x1039B, 0x1039C, 0x1039D, 0x1039F, 0x103A0, 0x103A1, 0x103A2, 0x103A3, | |
| 1612 | 0x103A4, 0x103A5, 0x103A6, 0x103A7, 0x103A8, 0x103A9, 0x103AA, 0x103AB, | |
| 1613 | 0x103AC, 0x103AD, 0x103AE, 0x103AF, 0x103B0, 0x103B1, 0x103B2, 0x103B3, | |
| 1614 | 0x103B4, 0x103B5, 0x103B6, 0x103B7, 0x103B8, 0x103B9, 0x103BA, 0x103BB, | |
| 1615 | 0x103BC, 0x103BD, 0x103BE, 0x103BF, 0x103C0, 0x103C1, 0x103C2, 0x103C3, | |
| 1616 | 0x103C8, 0x103C9, 0x103CA, 0x103CB, 0x103CC, 0x103CD, 0x103CE, 0x103CF, | |
| 1617 | 0x103D0, 0x103D1, 0x103D2, 0x103D3, 0x103D4, 0x103D5, 0x10400, 0x10401, | |
| 1618 | 0x10402, 0x10403, 0x10404, 0x10405, 0x10406, 0x10407, 0x10408, 0x10409, | |
| 1619 | 0x1040A, 0x1040B, 0x1040C, 0x1040D, 0x1040E, 0x1040F, 0x10410, 0x10411, | |
| 1620 | 0x10412, 0x10413, 0x10414, 0x10415, 0x10416, 0x10417, 0x10418, 0x10419, | |
| 1621 | 0x1041A, 0x1041B, 0x1041C, 0x1041D, 0x1041E, 0x1041F, 0x10420, 0x10421, | |
| 1622 | 0x10422, 0x10423, 0x10424, 0x10425, 0x10426, 0x10427, 0x10428, 0x10429, | |
| 1623 | 0x1042A, 0x1042B, 0x1042C, 0x1042D, 0x1042E, 0x1042F, 0x10430, 0x10431, | |
| 1624 | 0x10432, 0x10433, 0x10434, 0x10435, 0x10436, 0x10437, 0x10438, 0x10439, | |
| 1625 | 0x1043A, 0x1043B, 0x1043C, 0x1043D, 0x1043E, 0x1043F, 0x10440, 0x10441, | |
| 1626 | 0x10442, 0x10443, 0x10444, 0x10445, 0x10446, 0x10447, 0x10448, 0x10449, | |
| 1627 | 0x1044A, 0x1044B, 0x1044C, 0x1044D, 0x1044E, 0x1044F, 0x10450, 0x10451, | |
| 1628 | 0x10452, 0x10453, 0x10454, 0x10455, 0x10456, 0x10457, 0x10458, 0x10459, | |
| 1629 | 0x1045A, 0x1045B, 0x1045C, 0x1045D, 0x1045E, 0x1045F, 0x10460, 0x10461, | |
| 1630 | 0x10462, 0x10463, 0x10464, 0x10465, 0x10466, 0x10467, 0x10468, 0x10469, | |
| 1631 | 0x1046A, 0x1046B, 0x1046C, 0x1046D, 0x1046E, 0x1046F, 0x10470, 0x10471, | |
| 1632 | 0x10472, 0x10473, 0x10474, 0x10475, 0x10476, 0x10477, 0x10478, 0x10479, | |
| 1633 | 0x1047A, 0x1047B, 0x1047C, 0x1047D, 0x1047E, 0x1047F, 0x10480, 0x10481, | |
| 1634 | 0x10482, 0x10483, 0x10484, 0x10485, 0x10486, 0x10487, 0x10488, 0x10489, | |
| 1635 | 0x1048A, 0x1048B, 0x1048C, 0x1048D, 0x1048E, 0x1048F, 0x10490, 0x10491, | |
| 1636 | 0x10492, 0x10493, 0x10494, 0x10495, 0x10496, 0x10497, 0x10498, 0x10499, | |
| 1637 | 0x1049A, 0x1049B, 0x1049C, 0x1049D, 0x104A0, 0x104A1, 0x104A2, 0x104A3, | |
| 1638 | 0x104A4, 0x104A5, 0x104A6, 0x104A7, 0x104A8, 0x104A9, 0x10800, 0x10801, | |
| 1639 | 0x10802, 0x10803, 0x10804, 0x10805, 0x10808, 0x1080A, 0x1080B, 0x1080C, | |
| 1640 | 0x1080D, 0x1080E, 0x1080F, 0x10810, 0x10811, 0x10812, 0x10813, 0x10814, | |
| 1641 | 0x10815, 0x10816, 0x10817, 0x10818, 0x10819, 0x1081A, 0x1081B, 0x1081C, | |
| 1642 | 0x1081D, 0x1081E, 0x1081F, 0x10820, 0x10821, 0x10822, 0x10823, 0x10824, | |
| 1643 | 0x10825, 0x10826, 0x10827, 0x10828, 0x10829, 0x1082A, 0x1082B, 0x1082C, | |
| 1644 | 0x1082D, 0x1082E, 0x1082F, 0x10830, 0x10831, 0x10832, 0x10833, 0x10834, | |
| 1645 | 0x10835, 0x10837, 0x10838, 0x1083C, 0x1083F, 0x10900, 0x10901, 0x10902, | |
| 1646 | 0x10903, 0x10904, 0x10905, 0x10906, 0x10907, 0x10908, 0x10909, 0x1090A, | |
| 1647 | 0x1090B, 0x1090C, 0x1090D, 0x1090E, 0x1090F, 0x10910, 0x10911, 0x10912, | |
| 1648 | 0x10913, 0x10914, 0x10915, 0x10916, 0x10917, 0x10918, 0x10919, 0x1091F, | |
| 1649 | 0x10A00, 0x10A01, 0x10A02, 0x10A03, 0x10A05, 0x10A06, 0x10A0C, 0x10A0D, | |
| 1650 | 0x10A0E, 0x10A0F, 0x10A10, 0x10A11, 0x10A12, 0x10A13, 0x10A15, 0x10A16, | |
| 1651 | 0x10A17, 0x10A19, 0x10A1A, 0x10A1B, 0x10A1C, 0x10A1D, 0x10A1E, 0x10A1F, | |
| 1652 | 0x10A20, 0x10A21, 0x10A22, 0x10A23, 0x10A24, 0x10A25, 0x10A26, 0x10A27, | |
| 1653 | 0x10A28, 0x10A29, 0x10A2A, 0x10A2B, 0x10A2C, 0x10A2D, 0x10A2E, 0x10A2F, | |
| 1654 | 0x10A30, 0x10A31, 0x10A32, 0x10A33, 0x10A38, 0x10A39, 0x10A3A, 0x10A3F, | |
| 1655 | 0x10A40, 0x10A41, 0x10A42, 0x10A43, 0x10A44, 0x10A45, 0x10A46, 0x10A47, | |
| 1656 | 0x10A50, 0x10A51, 0x10A52, 0x10A53, 0x10A54, 0x10A55, 0x10A56, 0x10A57, | |
| 1657 | 0x10A58, 0x12000, 0x12001, 0x12002, 0x12003, 0x12004, 0x12005, 0x12006, | |
| 1658 | 0x12007, 0x12008, 0x12009, 0x1200A, 0x1200B, 0x1200C, 0x1200D, 0x1200E, | |
| 1659 | 0x1200F, 0x12010, 0x12011, 0x12012, 0x12013, 0x12014, 0x12015, 0x12016, | |
| 1660 | 0x12017, 0x12018, 0x12019, 0x1201A, 0x1201B, 0x1201C, 0x1201D, 0x1201E, | |
| 1661 | 0x1201F, 0x12020, 0x12021, 0x12022, 0x12023, 0x12024, 0x12025, 0x12026, | |
| 1662 | 0x12027, 0x12028, 0x12029, 0x1202A, 0x1202B, 0x1202C, 0x1202D, 0x1202E, | |
| 1663 | 0x1202F, 0x12030, 0x12031, 0x12032, 0x12033, 0x12034, 0x12035, 0x12036, | |
| 1664 | 0x12037, 0x12038, 0x12039, 0x1203A, 0x1203B, 0x1203C, 0x1203D, 0x1203E, | |
| 1665 | 0x1203F, 0x12040, 0x12041, 0x12042, 0x12043, 0x12044, 0x12045, 0x12046, | |
| 1666 | 0x12047, 0x12048, 0x12049, 0x1204A, 0x1204B, 0x1204C, 0x1204D, 0x1204E, | |
| 1667 | 0x1204F, 0x12050, 0x12051, 0x12052, 0x12053, 0x12054, 0x12055, 0x12056, | |
| 1668 | 0x12057, 0x12058, 0x12059, 0x1205A, 0x1205B, 0x1205C, 0x1205D, 0x1205E, | |
| 1669 | 0x1205F, 0x12060, 0x12061, 0x12062, 0x12063, 0x12064, 0x12065, 0x12066, | |
| 1670 | 0x12067, 0x12068, 0x12069, 0x1206A, 0x1206B, 0x1206C, 0x1206D, 0x1206E, | |
| 1671 | 0x1206F, 0x12070, 0x12071, 0x12072, 0x12073, 0x12074, 0x12075, 0x12076, | |
| 1672 | 0x12077, 0x12078, 0x12079, 0x1207A, 0x1207B, 0x1207C, 0x1207D, 0x1207E, | |
| 1673 | 0x1207F, 0x12080, 0x12081, 0x12082, 0x12083, 0x12084, 0x12085, 0x12086, | |
| 1674 | 0x12087, 0x12088, 0x12089, 0x1208A, 0x1208B, 0x1208C, 0x1208D, 0x1208E, | |
| 1675 | 0x1208F, 0x12090, 0x12091, 0x12092, 0x12093, 0x12094, 0x12095, 0x12096, | |
| 1676 | 0x12097, 0x12098, 0x12099, 0x1209A, 0x1209B, 0x1209C, 0x1209D, 0x1209E, | |
| 1677 | 0x1209F, 0x120A0, 0x120A1, 0x120A2, 0x120A3, 0x120A4, 0x120A5, 0x120A6, | |
| 1678 | 0x120A7, 0x120A8, 0x120A9, 0x120AA, 0x120AB, 0x120AC, 0x120AD, 0x120AE, | |
| 1679 | 0x120AF, 0x120B0, 0x120B1, 0x120B2, 0x120B3, 0x120B4, 0x120B5, 0x120B6, | |
| 1680 | 0x120B7, 0x120B8, 0x120B9, 0x120BA, 0x120BB, 0x120BC, 0x120BD, 0x120BE, | |
| 1681 | 0x120BF, 0x120C0, 0x120C1, 0x120C2, 0x120C3, 0x120C4, 0x120C5, 0x120C6, | |
| 1682 | 0x120C7, 0x120C8, 0x120C9, 0x120CA, 0x120CB, 0x120CC, 0x120CD, 0x120CE, | |
| 1683 | 0x120CF, 0x120D0, 0x120D1, 0x120D2, 0x120D3, 0x120D4, 0x120D5, 0x120D6, | |
| 1684 | 0x120D7, 0x120D8, 0x120D9, 0x120DA, 0x120DB, 0x120DC, 0x120DD, 0x120DE, | |
| 1685 | 0x120DF, 0x120E0, 0x120E1, 0x120E2, 0x120E3, 0x120E4, 0x120E5, 0x120E6, | |
| 1686 | 0x120E7, 0x120E8, 0x120E9, 0x120EA, 0x120EB, 0x120EC, 0x120ED, 0x120EE, | |
| 1687 | 0x120EF, 0x120F0, 0x120F1, 0x120F2, 0x120F3, 0x120F4, 0x120F5, 0x120F6, | |
| 1688 | 0x120F7, 0x120F8, 0x120F9, 0x120FA, 0x120FB, 0x120FC, 0x120FD, 0x120FE, | |
| 1689 | 0x120FF, 0x12100, 0x12101, 0x12102, 0x12103, 0x12104, 0x12105, 0x12106, | |
| 1690 | 0x12107, 0x12108, 0x12109, 0x1210A, 0x1210B, 0x1210C, 0x1210D, 0x1210E, | |
| 1691 | 0x1210F, 0x12110, 0x12111, 0x12112, 0x12113, 0x12114, 0x12115, 0x12116, | |
| 1692 | 0x12117, 0x12118, 0x12119, 0x1211A, 0x1211B, 0x1211C, 0x1211D, 0x1211E, | |
| 1693 | 0x1211F, 0x12120, 0x12121, 0x12122, 0x12123, 0x12124, 0x12125, 0x12126, | |
| 1694 | 0x12127, 0x12128, 0x12129, 0x1212A, 0x1212B, 0x1212C, 0x1212D, 0x1212E, | |
| 1695 | 0x1212F, 0x12130, 0x12131, 0x12132, 0x12133, 0x12134, 0x12135, 0x12136, | |
| 1696 | 0x12137, 0x12138, 0x12139, 0x1213A, 0x1213B, 0x1213C, 0x1213D, 0x1213E, | |
| 1697 | 0x1213F, 0x12140, 0x12141, 0x12142, 0x12143, 0x12144, 0x12145, 0x12146, | |
| 1698 | 0x12147, 0x12148, 0x12149, 0x1214A, 0x1214B, 0x1214C, 0x1214D, 0x1214E, | |
| 1699 | 0x1214F, 0x12150, 0x12151, 0x12152, 0x12153, 0x12154, 0x12155, 0x12156, | |
| 1700 | 0x12157, 0x12158, 0x12159, 0x1215A, 0x1215B, 0x1215C, 0x1215D, 0x1215E, | |
| 1701 | 0x1215F, 0x12160, 0x12161, 0x12162, 0x12163, 0x12164, 0x12165, 0x12166, | |
| 1702 | 0x12167, 0x12168, 0x12169, 0x1216A, 0x1216B, 0x1216C, 0x1216D, 0x1216E, | |
| 1703 | 0x1216F, 0x12170, 0x12171, 0x12172, 0x12173, 0x12174, 0x12175, 0x12176, | |
| 1704 | 0x12177, 0x12178, 0x12179, 0x1217A, 0x1217B, 0x1217C, 0x1217D, 0x1217E, | |
| 1705 | 0x1217F, 0x12180, 0x12181, 0x12182, 0x12183, 0x12184, 0x12185, 0x12186, | |
| 1706 | 0x12187, 0x12188, 0x12189, 0x1218A, 0x1218B, 0x1218C, 0x1218D, 0x1218E, | |
| 1707 | 0x1218F, 0x12190, 0x12191, 0x12192, 0x12193, 0x12194, 0x12195, 0x12196, | |
| 1708 | 0x12197, 0x12198, 0x12199, 0x1219A, 0x1219B, 0x1219C, 0x1219D, 0x1219E, | |
| 1709 | 0x1219F, 0x121A0, 0x121A1, 0x121A2, 0x121A3, 0x121A4, 0x121A5, 0x121A6, | |
| 1710 | 0x121A7, 0x121A8, 0x121A9, 0x121AA, 0x121AB, 0x121AC, 0x121AD, 0x121AE, | |
| 1711 | 0x121AF, 0x121B0, 0x121B1, 0x121B2, 0x121B3, 0x121B4, 0x121B5, 0x121B6, | |
| 1712 | 0x121B7, 0x121B8, 0x121B9, 0x121BA, 0x121BB, 0x121BC, 0x121BD, 0x121BE, | |
| 1713 | 0x121BF, 0x121C0, 0x121C1, 0x121C2, 0x121C3, 0x121C4, 0x121C5, 0x121C6, | |
| 1714 | 0x121C7, 0x121C8, 0x121C9, 0x121CA, 0x121CB, 0x121CC, 0x121CD, 0x121CE, | |
| 1715 | 0x121CF, 0x121D0, 0x121D1, 0x121D2, 0x121D3, 0x121D4, 0x121D5, 0x121D6, | |
| 1716 | 0x121D7, 0x121D8, 0x121D9, 0x121DA, 0x121DB, 0x121DC, 0x121DD, 0x121DE, | |
| 1717 | 0x121DF, 0x121E0, 0x121E1, 0x121E2, 0x121E3, 0x121E4, 0x121E5, 0x121E6, | |
| 1718 | 0x121E7, 0x121E8, 0x121E9, 0x121EA, 0x121EB, 0x121EC, 0x121ED, 0x121EE, | |
| 1719 | 0x121EF, 0x121F0, 0x121F1, 0x121F2, 0x121F3, 0x121F4, 0x121F5, 0x121F6, | |
| 1720 | 0x121F7, 0x121F8, 0x121F9, 0x121FA, 0x121FB, 0x121FC, 0x121FD, 0x121FE, | |
| 1721 | 0x121FF, 0x12200, 0x12201, 0x12202, 0x12203, 0x12204, 0x12205, 0x12206, | |
| 1722 | 0x12207, 0x12208, 0x12209, 0x1220A, 0x1220B, 0x1220C, 0x1220D, 0x1220E, | |
| 1723 | 0x1220F, 0x12210, 0x12211, 0x12212, 0x12213, 0x12214, 0x12215, 0x12216, | |
| 1724 | 0x12217, 0x12218, 0x12219, 0x1221A, 0x1221B, 0x1221C, 0x1221D, 0x1221E, | |
| 1725 | 0x1221F, 0x12220, 0x12221, 0x12222, 0x12223, 0x12224, 0x12225, 0x12226, | |
| 1726 | 0x12227, 0x12228, 0x12229, 0x1222A, 0x1222B, 0x1222C, 0x1222D, 0x1222E, | |
| 1727 | 0x1222F, 0x12230, 0x12231, 0x12232, 0x12233, 0x12234, 0x12235, 0x12236, | |
| 1728 | 0x12237, 0x12238, 0x12239, 0x1223A, 0x1223B, 0x1223C, 0x1223D, 0x1223E, | |
| 1729 | 0x1223F, 0x12240, 0x12241, 0x12242, 0x12243, 0x12244, 0x12245, 0x12246, | |
| 1730 | 0x12247, 0x12248, 0x12249, 0x1224A, 0x1224B, 0x1224C, 0x1224D, 0x1224E, | |
| 1731 | 0x1224F, 0x12250, 0x12251, 0x12252, 0x12253, 0x12254, 0x12255, 0x12256, | |
| 1732 | 0x12257, 0x12258, 0x12259, 0x1225A, 0x1225B, 0x1225C, 0x1225D, 0x1225E, | |
| 1733 | 0x1225F, 0x12260, 0x12261, 0x12262, 0x12263, 0x12264, 0x12265, 0x12266, | |
| 1734 | 0x12267, 0x12268, 0x12269, 0x1226A, 0x1226B, 0x1226C, 0x1226D, 0x1226E, | |
| 1735 | 0x1226F, 0x12270, 0x12271, 0x12272, 0x12273, 0x12274, 0x12275, 0x12276, | |
| 1736 | 0x12277, 0x12278, 0x12279, 0x1227A, 0x1227B, 0x1227C, 0x1227D, 0x1227E, | |
| 1737 | 0x1227F, 0x12280, 0x12281, 0x12282, 0x12283, 0x12284, 0x12285, 0x12286, | |
| 1738 | 0x12287, 0x12288, 0x12289, 0x1228A, 0x1228B, 0x1228C, 0x1228D, 0x1228E, | |
| 1739 | 0x1228F, 0x12290, 0x12291, 0x12292, 0x12293, 0x12294, 0x12295, 0x12296, | |
| 1740 | 0x12297, 0x12298, 0x12299, 0x1229A, 0x1229B, 0x1229C, 0x1229D, 0x1229E, | |
| 1741 | 0x1229F, 0x122A0, 0x122A1, 0x122A2, 0x122A3, 0x122A4, 0x122A5, 0x122A6, | |
| 1742 | 0x122A7, 0x122A8, 0x122A9, 0x122AA, 0x122AB, 0x122AC, 0x122AD, 0x122AE, | |
| 1743 | 0x122AF, 0x122B0, 0x122B1, 0x122B2, 0x122B3, 0x122B4, 0x122B5, 0x122B6, | |
| 1744 | 0x122B7, 0x122B8, 0x122B9, 0x122BA, 0x122BB, 0x122BC, 0x122BD, 0x122BE, | |
| 1745 | 0x122BF, 0x122C0, 0x122C1, 0x122C2, 0x122C3, 0x122C4, 0x122C5, 0x122C6, | |
| 1746 | 0x122C7, 0x122C8, 0x122C9, 0x122CA, 0x122CB, 0x122CC, 0x122CD, 0x122CE, | |
| 1747 | 0x122CF, 0x122D0, 0x122D1, 0x122D2, 0x122D3, 0x122D4, 0x122D5, 0x122D6, | |
| 1748 | 0x122D7, 0x122D8, 0x122D9, 0x122DA, 0x122DB, 0x122DC, 0x122DD, 0x122DE, | |
| 1749 | 0x122DF, 0x122E0, 0x122E1, 0x122E2, 0x122E3, 0x122E4, 0x122E5, 0x122E6, | |
| 1750 | 0x122E7, 0x122E8, 0x122E9, 0x122EA, 0x122EB, 0x122EC, 0x122ED, 0x122EE, | |
| 1751 | 0x122EF, 0x122F0, 0x122F1, 0x122F2, 0x122F3, 0x122F4, 0x122F5, 0x122F6, | |
| 1752 | 0x122F7, 0x122F8, 0x122F9, 0x122FA, 0x122FB, 0x122FC, 0x122FD, 0x122FE, | |
| 1753 | 0x122FF, 0x12300, 0x12301, 0x12302, 0x12303, 0x12304, 0x12305, 0x12306, | |
| 1754 | 0x12307, 0x12308, 0x12309, 0x1230A, 0x1230B, 0x1230C, 0x1230D, 0x1230E, | |
| 1755 | 0x1230F, 0x12310, 0x12311, 0x12312, 0x12313, 0x12314, 0x12315, 0x12316, | |
| 1756 | 0x12317, 0x12318, 0x12319, 0x1231A, 0x1231B, 0x1231C, 0x1231D, 0x1231E, | |
| 1757 | 0x1231F, 0x12320, 0x12321, 0x12322, 0x12323, 0x12324, 0x12325, 0x12326, | |
| 1758 | 0x12327, 0x12328, 0x12329, 0x1232A, 0x1232B, 0x1232C, 0x1232D, 0x1232E, | |
| 1759 | 0x1232F, 0x12330, 0x12331, 0x12332, 0x12333, 0x12334, 0x12335, 0x12336, | |
| 1760 | 0x12337, 0x12338, 0x12339, 0x1233A, 0x1233B, 0x1233C, 0x1233D, 0x1233E, | |
| 1761 | 0x1233F, 0x12340, 0x12341, 0x12342, 0x12343, 0x12344, 0x12345, 0x12346, | |
| 1762 | 0x12347, 0x12348, 0x12349, 0x1234A, 0x1234B, 0x1234C, 0x1234D, 0x1234E, | |
| 1763 | 0x1234F, 0x12350, 0x12351, 0x12352, 0x12353, 0x12354, 0x12355, 0x12356, | |
| 1764 | 0x12357, 0x12358, 0x12359, 0x1235A, 0x1235B, 0x1235C, 0x1235D, 0x1235E, | |
| 1765 | 0x1235F, 0x12360, 0x12361, 0x12362, 0x12363, 0x12364, 0x12365, 0x12366, | |
| 1766 | 0x12367, 0x12368, 0x12369, 0x1236A, 0x1236B, 0x1236C, 0x1236D, 0x1236E, | |
| 1767 | 0x12400, 0x12401, 0x12402, 0x12403, 0x12404, 0x12405, 0x12406, 0x12407, | |
| 1768 | 0x12408, 0x12409, 0x1240A, 0x1240B, 0x1240C, 0x1240D, 0x1240E, 0x1240F, | |
| 1769 | 0x12410, 0x12411, 0x12412, 0x12413, 0x12414, 0x12415, 0x12416, 0x12417, | |
| 1770 | 0x12418, 0x12419, 0x1241A, 0x1241B, 0x1241C, 0x1241D, 0x1241E, 0x1241F, | |
| 1771 | 0x12420, 0x12421, 0x12422, 0x12423, 0x12424, 0x12425, 0x12426, 0x12427, | |
| 1772 | 0x12428, 0x12429, 0x1242A, 0x1242B, 0x1242C, 0x1242D, 0x1242E, 0x1242F, | |
| 1773 | 0x12430, 0x12431, 0x12432, 0x12433, 0x12434, 0x12435, 0x12436, 0x12437, | |
| 1774 | 0x12438, 0x12439, 0x1243A, 0x1243B, 0x1243C, 0x1243D, 0x1243E, 0x1243F, | |
| 1775 | 0x12440, 0x12441, 0x12442, 0x12443, 0x12444, 0x12445, 0x12446, 0x12447, | |
| 1776 | 0x12448, 0x12449, 0x1244A, 0x1244B, 0x1244C, 0x1244D, 0x1244E, 0x1244F, | |
| 1777 | 0x12450, 0x12451, 0x12452, 0x12453, 0x12454, 0x12455, 0x12456, 0x12457, | |
| 1778 | 0x12458, 0x12459, 0x1245A, 0x1245B, 0x1245C, 0x1245D, 0x1245E, 0x1245F, | |
| 1779 | 0x12460, 0x12461, 0x12462, 0x12470, 0x12471, 0x12472, 0x12473, 0x1D000, | |
| 1780 | 0x1D001, 0x1D002, 0x1D003, 0x1D004, 0x1D005, 0x1D006, 0x1D007, 0x1D008, | |
| 1781 | 0x1D009, 0x1D00A, 0x1D00B, 0x1D00C, 0x1D00D, 0x1D00E, 0x1D00F, 0x1D010, | |
| 1782 | 0x1D011, 0x1D012, 0x1D013, 0x1D014, 0x1D015, 0x1D016, 0x1D017, 0x1D018, | |
| 1783 | 0x1D019, 0x1D01A, 0x1D01B, 0x1D01C, 0x1D01D, 0x1D01E, 0x1D01F, 0x1D020, | |
| 1784 | 0x1D021, 0x1D022, 0x1D023, 0x1D024, 0x1D025, 0x1D026, 0x1D027, 0x1D028, | |
| 1785 | 0x1D029, 0x1D02A, 0x1D02B, 0x1D02C, 0x1D02D, 0x1D02E, 0x1D02F, 0x1D030, | |
| 1786 | 0x1D031, 0x1D032, 0x1D033, 0x1D034, 0x1D035, 0x1D036, 0x1D037, 0x1D038, | |
| 1787 | 0x1D039, 0x1D03A, 0x1D03B, 0x1D03C, 0x1D03D, 0x1D03E, 0x1D03F, 0x1D040, | |
| 1788 | 0x1D041, 0x1D042, 0x1D043, 0x1D044, 0x1D045, 0x1D046, 0x1D047, 0x1D048, | |
| 1789 | 0x1D049, 0x1D04A, 0x1D04B, 0x1D04C, 0x1D04D, 0x1D04E, 0x1D04F, 0x1D050, | |
| 1790 | 0x1D051, 0x1D052, 0x1D053, 0x1D054, 0x1D055, 0x1D056, 0x1D057, 0x1D058, | |
| 1791 | 0x1D059, 0x1D05A, 0x1D05B, 0x1D05C, 0x1D05D, 0x1D05E, 0x1D05F, 0x1D060, | |
| 1792 | 0x1D061, 0x1D062, 0x1D063, 0x1D064, 0x1D065, 0x1D066, 0x1D067, 0x1D068, | |
| 1793 | 0x1D069, 0x1D06A, 0x1D06B, 0x1D06C, 0x1D06D, 0x1D06E, 0x1D06F, 0x1D070, | |
| 1794 | 0x1D071, 0x1D072, 0x1D073, 0x1D074, 0x1D075, 0x1D076, 0x1D077, 0x1D078, | |
| 1795 | 0x1D079, 0x1D07A, 0x1D07B, 0x1D07C, 0x1D07D, 0x1D07E, 0x1D07F, 0x1D080, | |
| 1796 | 0x1D081, 0x1D082, 0x1D083, 0x1D084, 0x1D085, 0x1D086, 0x1D087, 0x1D088, | |
| 1797 | 0x1D089, 0x1D08A, 0x1D08B, 0x1D08C, 0x1D08D, 0x1D08E, 0x1D08F, 0x1D090, | |
| 1798 | 0x1D091, 0x1D092, 0x1D093, 0x1D094, 0x1D095, 0x1D096, 0x1D097, 0x1D098, | |
| 1799 | 0x1D099, 0x1D09A, 0x1D09B, 0x1D09C, 0x1D09D, 0x1D09E, 0x1D09F, 0x1D0A0, | |
| 1800 | 0x1D0A1, 0x1D0A2, 0x1D0A3, 0x1D0A4, 0x1D0A5, 0x1D0A6, 0x1D0A7, 0x1D0A8, | |
| 1801 | 0x1D0A9, 0x1D0AA, 0x1D0AB, 0x1D0AC, 0x1D0AD, 0x1D0AE, 0x1D0AF, 0x1D0B0, | |
| 1802 | 0x1D0B1, 0x1D0B2, 0x1D0B3, 0x1D0B4, 0x1D0B5, 0x1D0B6, 0x1D0B7, 0x1D0B8, | |
| 1803 | 0x1D0B9, 0x1D0BA, 0x1D0BB, 0x1D0BC, 0x1D0BD, 0x1D0BE, 0x1D0BF, 0x1D0C0, | |
| 1804 | 0x1D0C1, 0x1D0C2, 0x1D0C3, 0x1D0C4, 0x1D0C5, 0x1D0C6, 0x1D0C7, 0x1D0C8, | |
| 1805 | 0x1D0C9, 0x1D0CA, 0x1D0CB, 0x1D0CC, 0x1D0CD, 0x1D0CE, 0x1D0CF, 0x1D0D0, | |
| 1806 | 0x1D0D1, 0x1D0D2, 0x1D0D3, 0x1D0D4, 0x1D0D5, 0x1D0D6, 0x1D0D7, 0x1D0D8, | |
| 1807 | 0x1D0D9, 0x1D0DA, 0x1D0DB, 0x1D0DC, 0x1D0DD, 0x1D0DE, 0x1D0DF, 0x1D0E0, | |
| 1808 | 0x1D0E1, 0x1D0E2, 0x1D0E3, 0x1D0E4, 0x1D0E5, 0x1D0E6, 0x1D0E7, 0x1D0E8, | |
| 1809 | 0x1D0E9, 0x1D0EA, 0x1D0EB, 0x1D0EC, 0x1D0ED, 0x1D0EE, 0x1D0EF, 0x1D0F0, | |
| 1810 | 0x1D0F1, 0x1D0F2, 0x1D0F3, 0x1D0F4, 0x1D0F5, 0x1D100, 0x1D101, 0x1D102, | |
| 1811 | 0x1D103, 0x1D104, 0x1D105, 0x1D106, 0x1D107, 0x1D108, 0x1D109, 0x1D10A, | |
| 1812 | 0x1D10B, 0x1D10C, 0x1D10D, 0x1D10E, 0x1D10F, 0x1D110, 0x1D111, 0x1D112, | |
| 1813 | 0x1D113, 0x1D114, 0x1D115, 0x1D116, 0x1D117, 0x1D118, 0x1D119, 0x1D11A, | |
| 1814 | 0x1D11B, 0x1D11C, 0x1D11D, 0x1D11E, 0x1D11F, 0x1D120, 0x1D121, 0x1D122, | |
| 1815 | 0x1D123, 0x1D124, 0x1D125, 0x1D126, 0x1D12A, 0x1D12B, 0x1D12C, 0x1D12D, | |
| 1816 | 0x1D12E, 0x1D12F, 0x1D130, 0x1D131, 0x1D132, 0x1D133, 0x1D134, 0x1D135, | |
| 1817 | 0x1D136, 0x1D137, 0x1D138, 0x1D139, 0x1D13A, 0x1D13B, 0x1D13C, 0x1D13D, | |
| 1818 | 0x1D13E, 0x1D13F, 0x1D140, 0x1D141, 0x1D142, 0x1D143, 0x1D144, 0x1D145, | |
| 1819 | 0x1D146, 0x1D147, 0x1D148, 0x1D149, 0x1D14A, 0x1D14B, 0x1D14C, 0x1D14D, | |
| 1820 | 0x1D14E, 0x1D14F, 0x1D150, 0x1D151, 0x1D152, 0x1D153, 0x1D154, 0x1D155, | |
| 1821 | 0x1D156, 0x1D157, 0x1D158, 0x1D159, 0x1D15A, 0x1D15B, 0x1D15C, 0x1D15D, | |
| 1822 | 0x1D15E, 0x1D15F, 0x1D160, 0x1D161, 0x1D162, 0x1D163, 0x1D164, 0x1D165, | |
| 1823 | 0x1D166, 0x1D167, 0x1D168, 0x1D169, 0x1D16A, 0x1D16B, 0x1D16C, 0x1D16D, | |
| 1824 | 0x1D16E, 0x1D16F, 0x1D170, 0x1D171, 0x1D172, 0x1D173, 0x1D174, 0x1D175, | |
| 1825 | 0x1D176, 0x1D177, 0x1D178, 0x1D179, 0x1D17A, 0x1D17B, 0x1D17C, 0x1D17D, | |
| 1826 | 0x1D17E, 0x1D17F, 0x1D180, 0x1D181, 0x1D182, 0x1D183, 0x1D184, 0x1D185, | |
| 1827 | 0x1D186, 0x1D187, 0x1D188, 0x1D189, 0x1D18A, 0x1D18B, 0x1D18C, 0x1D18D, | |
| 1828 | 0x1D18E, 0x1D18F, 0x1D190, 0x1D191, 0x1D192, 0x1D193, 0x1D194, 0x1D195, | |
| 1829 | 0x1D196, 0x1D197, 0x1D198, 0x1D199, 0x1D19A, 0x1D19B, 0x1D19C, 0x1D19D, | |
| 1830 | 0x1D19E, 0x1D19F, 0x1D1A0, 0x1D1A1, 0x1D1A2, 0x1D1A3, 0x1D1A4, 0x1D1A5, | |
| 1831 | 0x1D1A6, 0x1D1A7, 0x1D1A8, 0x1D1A9, 0x1D1AA, 0x1D1AB, 0x1D1AC, 0x1D1AD, | |
| 1832 | 0x1D1AE, 0x1D1AF, 0x1D1B0, 0x1D1B1, 0x1D1B2, 0x1D1B3, 0x1D1B4, 0x1D1B5, | |
| 1833 | 0x1D1B6, 0x1D1B7, 0x1D1B8, 0x1D1B9, 0x1D1BA, 0x1D1BB, 0x1D1BC, 0x1D1BD, | |
| 1834 | 0x1D1BE, 0x1D1BF, 0x1D1C0, 0x1D1C1, 0x1D1C2, 0x1D1C3, 0x1D1C4, 0x1D1C5, | |
| 1835 | 0x1D1C6, 0x1D1C7, 0x1D1C8, 0x1D1C9, 0x1D1CA, 0x1D1CB, 0x1D1CC, 0x1D1CD, | |
| 1836 | 0x1D1CE, 0x1D1CF, 0x1D1D0, 0x1D1D1, 0x1D1D2, 0x1D1D3, 0x1D1D4, 0x1D1D5, | |
| 1837 | 0x1D1D6, 0x1D1D7, 0x1D1D8, 0x1D1D9, 0x1D1DA, 0x1D1DB, 0x1D1DC, 0x1D1DD, | |
| 1838 | 0x1D200, 0x1D201, 0x1D202, 0x1D203, 0x1D204, 0x1D205, 0x1D206, 0x1D207, | |
| 1839 | 0x1D208, 0x1D209, 0x1D20A, 0x1D20B, 0x1D20C, 0x1D20D, 0x1D20E, 0x1D20F, | |
| 1840 | 0x1D210, 0x1D211, 0x1D212, 0x1D213, 0x1D214, 0x1D215, 0x1D216, 0x1D217, | |
| 1841 | 0x1D218, 0x1D219, 0x1D21A, 0x1D21B, 0x1D21C, 0x1D21D, 0x1D21E, 0x1D21F, | |
| 1842 | 0x1D220, 0x1D221, 0x1D222, 0x1D223, 0x1D224, 0x1D225, 0x1D226, 0x1D227, | |
| 1843 | 0x1D228, 0x1D229, 0x1D22A, 0x1D22B, 0x1D22C, 0x1D22D, 0x1D22E, 0x1D22F, | |
| 1844 | 0x1D230, 0x1D231, 0x1D232, 0x1D233, 0x1D234, 0x1D235, 0x1D236, 0x1D237, | |
| 1845 | 0x1D238, 0x1D239, 0x1D23A, 0x1D23B, 0x1D23C, 0x1D23D, 0x1D23E, 0x1D23F, | |
| 1846 | 0x1D240, 0x1D241, 0x1D242, 0x1D243, 0x1D244, 0x1D245, 0x1D300, 0x1D301, | |
| 1847 | 0x1D302, 0x1D303, 0x1D304, 0x1D305, 0x1D306, 0x1D307, 0x1D308, 0x1D309, | |
| 1848 | 0x1D30A, 0x1D30B, 0x1D30C, 0x1D30D, 0x1D30E, 0x1D30F, 0x1D310, 0x1D311, | |
| 1849 | 0x1D312, 0x1D313, 0x1D314, 0x1D315, 0x1D316, 0x1D317, 0x1D318, 0x1D319, | |
| 1850 | 0x1D31A, 0x1D31B, 0x1D31C, 0x1D31D, 0x1D31E, 0x1D31F, 0x1D320, 0x1D321, | |
| 1851 | 0x1D322, 0x1D323, 0x1D324, 0x1D325, 0x1D326, 0x1D327, 0x1D328, 0x1D329, | |
| 1852 | 0x1D32A, 0x1D32B, 0x1D32C, 0x1D32D, 0x1D32E, 0x1D32F, 0x1D330, 0x1D331, | |
| 1853 | 0x1D332, 0x1D333, 0x1D334, 0x1D335, 0x1D336, 0x1D337, 0x1D338, 0x1D339, | |
| 1854 | 0x1D33A, 0x1D33B, 0x1D33C, 0x1D33D, 0x1D33E, 0x1D33F, 0x1D340, 0x1D341, | |
| 1855 | 0x1D342, 0x1D343, 0x1D344, 0x1D345, 0x1D346, 0x1D347, 0x1D348, 0x1D349, | |
| 1856 | 0x1D34A, 0x1D34B, 0x1D34C, 0x1D34D, 0x1D34E, 0x1D34F, 0x1D350, 0x1D351, | |
| 1857 | 0x1D352, 0x1D353, 0x1D354, 0x1D355, 0x1D356, 0x1D360, 0x1D361, 0x1D362, | |
| 1858 | 0x1D363, 0x1D364, 0x1D365, 0x1D366, 0x1D367, 0x1D368, 0x1D369, 0x1D36A, | |
| 1859 | 0x1D36B, 0x1D36C, 0x1D36D, 0x1D36E, 0x1D36F, 0x1D370, 0x1D371, 0x1D400, | |
| 1860 | 0x1D401, 0x1D402, 0x1D403, 0x1D404, 0x1D405, 0x1D406, 0x1D407, 0x1D408, | |
| 1861 | 0x1D409, 0x1D40A, 0x1D40B, 0x1D40C, 0x1D40D, 0x1D40E, 0x1D40F, 0x1D410, | |
| 1862 | 0x1D411, 0x1D412, 0x1D413, 0x1D414, 0x1D415, 0x1D416, 0x1D417, 0x1D418, | |
| 1863 | 0x1D419, 0x1D41A, 0x1D41B, 0x1D41C, 0x1D41D, 0x1D41E, 0x1D41F, 0x1D420, | |
| 1864 | 0x1D421, 0x1D422, 0x1D423, 0x1D424, 0x1D425, 0x1D426, 0x1D427, 0x1D428, | |
| 1865 | 0x1D429, 0x1D42A, 0x1D42B, 0x1D42C, 0x1D42D, 0x1D42E, 0x1D42F, 0x1D430, | |
| 1866 | 0x1D431, 0x1D432, 0x1D433, 0x1D434, 0x1D435, 0x1D436, 0x1D437, 0x1D438, | |
| 1867 | 0x1D439, 0x1D43A, 0x1D43B, 0x1D43C, 0x1D43D, 0x1D43E, 0x1D43F, 0x1D440, | |
| 1868 | 0x1D441, 0x1D442, 0x1D443, 0x1D444, 0x1D445, 0x1D446, 0x1D447, 0x1D448, | |
| 1869 | 0x1D449, 0x1D44A, 0x1D44B, 0x1D44C, 0x1D44D, 0x1D44E, 0x1D44F, 0x1D450, | |
| 1870 | 0x1D451, 0x1D452, 0x1D453, 0x1D454, 0x1D456, 0x1D457, 0x1D458, 0x1D459, | |
| 1871 | 0x1D45A, 0x1D45B, 0x1D45C, 0x1D45D, 0x1D45E, 0x1D45F, 0x1D460, 0x1D461, | |
| 1872 | 0x1D462, 0x1D463, 0x1D464, 0x1D465, 0x1D466, 0x1D467, 0x1D468, 0x1D469, | |
| 1873 | 0x1D46A, 0x1D46B, 0x1D46C, 0x1D46D, 0x1D46E, 0x1D46F, 0x1D470, 0x1D471, | |
| 1874 | 0x1D472, 0x1D473, 0x1D474, 0x1D475, 0x1D476, 0x1D477, 0x1D478, 0x1D479, | |
| 1875 | 0x1D47A, 0x1D47B, 0x1D47C, 0x1D47D, 0x1D47E, 0x1D47F, 0x1D480, 0x1D481, | |
| 1876 | 0x1D482, 0x1D483, 0x1D484, 0x1D485, 0x1D486, 0x1D487, 0x1D488, 0x1D489, | |
| 1877 | 0x1D48A, 0x1D48B, 0x1D48C, 0x1D48D, 0x1D48E, 0x1D48F, 0x1D490, 0x1D491, | |
| 1878 | 0x1D492, 0x1D493, 0x1D494, 0x1D495, 0x1D496, 0x1D497, 0x1D498, 0x1D499, | |
| 1879 | 0x1D49A, 0x1D49B, 0x1D49C, 0x1D49E, 0x1D49F, 0x1D4A2, 0x1D4A5, 0x1D4A6, | |
| 1880 | 0x1D4A9, 0x1D4AA, 0x1D4AB, 0x1D4AC, 0x1D4AE, 0x1D4AF, 0x1D4B0, 0x1D4B1, | |
| 1881 | 0x1D4B2, 0x1D4B3, 0x1D4B4, 0x1D4B5, 0x1D4B6, 0x1D4B7, 0x1D4B8, 0x1D4B9, | |
| 1882 | 0x1D4BB, 0x1D4BD, 0x1D4BE, 0x1D4BF, 0x1D4C0, 0x1D4C1, 0x1D4C2, 0x1D4C3, | |
| 1883 | 0x1D4C5, 0x1D4C6, 0x1D4C7, 0x1D4C8, 0x1D4C9, 0x1D4CA, 0x1D4CB, 0x1D4CC, | |
| 1884 | 0x1D4CD, 0x1D4CE, 0x1D4CF, 0x1D4D0, 0x1D4D1, 0x1D4D2, 0x1D4D3, 0x1D4D4, | |
| 1885 | 0x1D4D5, 0x1D4D6, 0x1D4D7, 0x1D4D8, 0x1D4D9, 0x1D4DA, 0x1D4DB, 0x1D4DC, | |
| 1886 | 0x1D4DD, 0x1D4DE, 0x1D4DF, 0x1D4E0, 0x1D4E1, 0x1D4E2, 0x1D4E3, 0x1D4E4, | |
| 1887 | 0x1D4E5, 0x1D4E6, 0x1D4E7, 0x1D4E8, 0x1D4E9, 0x1D4EA, 0x1D4EB, 0x1D4EC, | |
| 1888 | 0x1D4ED, 0x1D4EE, 0x1D4EF, 0x1D4F0, 0x1D4F1, 0x1D4F2, 0x1D4F3, 0x1D4F4, | |
| 1889 | 0x1D4F5, 0x1D4F6, 0x1D4F7, 0x1D4F8, 0x1D4F9, 0x1D4FA, 0x1D4FB, 0x1D4FC, | |
| 1890 | 0x1D4FD, 0x1D4FE, 0x1D4FF, 0x1D500, 0x1D501, 0x1D502, 0x1D503, 0x1D504, | |
| 1891 | 0x1D505, 0x1D507, 0x1D508, 0x1D509, 0x1D50A, 0x1D50D, 0x1D50E, 0x1D50F, | |
| 1892 | 0x1D510, 0x1D511, 0x1D512, 0x1D513, 0x1D514, 0x1D516, 0x1D517, 0x1D518, | |
| 1893 | 0x1D519, 0x1D51A, 0x1D51B, 0x1D51C, 0x1D51E, 0x1D51F, 0x1D520, 0x1D521, | |
| 1894 | 0x1D522, 0x1D523, 0x1D524, 0x1D525, 0x1D526, 0x1D527, 0x1D528, 0x1D529, | |
| 1895 | 0x1D52A, 0x1D52B, 0x1D52C, 0x1D52D, 0x1D52E, 0x1D52F, 0x1D530, 0x1D531, | |
| 1896 | 0x1D532, 0x1D533, 0x1D534, 0x1D535, 0x1D536, 0x1D537, 0x1D538, 0x1D539, | |
| 1897 | 0x1D53B, 0x1D53C, 0x1D53D, 0x1D53E, 0x1D540, 0x1D541, 0x1D542, 0x1D543, | |
| 1898 | 0x1D544, 0x1D546, 0x1D54A, 0x1D54B, 0x1D54C, 0x1D54D, 0x1D54E, 0x1D54F, | |
| 1899 | 0x1D550, 0x1D552, 0x1D553, 0x1D554, 0x1D555, 0x1D556, 0x1D557, 0x1D558, | |
| 1900 | 0x1D559, 0x1D55A, 0x1D55B, 0x1D55C, 0x1D55D, 0x1D55E, 0x1D55F, 0x1D560, | |
| 1901 | 0x1D561, 0x1D562, 0x1D563, 0x1D564, 0x1D565, 0x1D566, 0x1D567, 0x1D568, | |
| 1902 | 0x1D569, 0x1D56A, 0x1D56B, 0x1D56C, 0x1D56D, 0x1D56E, 0x1D56F, 0x1D570, | |
| 1903 | 0x1D571, 0x1D572, 0x1D573, 0x1D574, 0x1D575, 0x1D576, 0x1D577, 0x1D578, | |
| 1904 | 0x1D579, 0x1D57A, 0x1D57B, 0x1D57C, 0x1D57D, 0x1D57E, 0x1D57F, 0x1D580, | |
| 1905 | 0x1D581, 0x1D582, 0x1D583, 0x1D584, 0x1D585, 0x1D586, 0x1D587, 0x1D588, | |
| 1906 | 0x1D589, 0x1D58A, 0x1D58B, 0x1D58C, 0x1D58D, 0x1D58E, 0x1D58F, 0x1D590, | |
| 1907 | 0x1D591, 0x1D592, 0x1D593, 0x1D594, 0x1D595, 0x1D596, 0x1D597, 0x1D598, | |
| 1908 | 0x1D599, 0x1D59A, 0x1D59B, 0x1D59C, 0x1D59D, 0x1D59E, 0x1D59F, 0x1D5A0, | |
| 1909 | 0x1D5A1, 0x1D5A2, 0x1D5A3, 0x1D5A4, 0x1D5A5, 0x1D5A6, 0x1D5A7, 0x1D5A8, | |
| 1910 | 0x1D5A9, 0x1D5AA, 0x1D5AB, 0x1D5AC, 0x1D5AD, 0x1D5AE, 0x1D5AF, 0x1D5B0, | |
| 1911 | 0x1D5B1, 0x1D5B2, 0x1D5B3, 0x1D5B4, 0x1D5B5, 0x1D5B6, 0x1D5B7, 0x1D5B8, | |
| 1912 | 0x1D5B9, 0x1D5BA, 0x1D5BB, 0x1D5BC, 0x1D5BD, 0x1D5BE, 0x1D5BF, 0x1D5C0, | |
| 1913 | 0x1D5C1, 0x1D5C2, 0x1D5C3, 0x1D5C4, 0x1D5C5, 0x1D5C6, 0x1D5C7, 0x1D5C8, | |
| 1914 | 0x1D5C9, 0x1D5CA, 0x1D5CB, 0x1D5CC, 0x1D5CD, 0x1D5CE, 0x1D5CF, 0x1D5D0, | |
| 1915 | 0x1D5D1, 0x1D5D2, 0x1D5D3, 0x1D5D4, 0x1D5D5, 0x1D5D6, 0x1D5D7, 0x1D5D8, | |
| 1916 | 0x1D5D9, 0x1D5DA, 0x1D5DB, 0x1D5DC, 0x1D5DD, 0x1D5DE, 0x1D5DF, 0x1D5E0, | |
| 1917 | 0x1D5E1, 0x1D5E2, 0x1D5E3, 0x1D5E4, 0x1D5E5, 0x1D5E6, 0x1D5E7, 0x1D5E8, | |
| 1918 | 0x1D5E9, 0x1D5EA, 0x1D5EB, 0x1D5EC, 0x1D5ED, 0x1D5EE, 0x1D5EF, 0x1D5F0, | |
| 1919 | 0x1D5F1, 0x1D5F2, 0x1D5F3, 0x1D5F4, 0x1D5F5, 0x1D5F6, 0x1D5F7, 0x1D5F8, | |
| 1920 | 0x1D5F9, 0x1D5FA, 0x1D5FB, 0x1D5FC, 0x1D5FD, 0x1D5FE, 0x1D5FF, 0x1D600, | |
| 1921 | 0x1D601, 0x1D602, 0x1D603, 0x1D604, 0x1D605, 0x1D606, 0x1D607, 0x1D608, | |
| 1922 | 0x1D609, 0x1D60A, 0x1D60B, 0x1D60C, 0x1D60D, 0x1D60E, 0x1D60F, 0x1D610, | |
| 1923 | 0x1D611, 0x1D612, 0x1D613, 0x1D614, 0x1D615, 0x1D616, 0x1D617, 0x1D618, | |
| 1924 | 0x1D619, 0x1D61A, 0x1D61B, 0x1D61C, 0x1D61D, 0x1D61E, 0x1D61F, 0x1D620, | |
| 1925 | 0x1D621, 0x1D622, 0x1D623, 0x1D624, 0x1D625, 0x1D626, 0x1D627, 0x1D628, | |
| 1926 | 0x1D629, 0x1D62A, 0x1D62B, 0x1D62C, 0x1D62D, 0x1D62E, 0x1D62F, 0x1D630, | |
| 1927 | 0x1D631, 0x1D632, 0x1D633, 0x1D634, 0x1D635, 0x1D636, 0x1D637, 0x1D638, | |
| 1928 | 0x1D639, 0x1D63A, 0x1D63B, 0x1D63C, 0x1D63D, 0x1D63E, 0x1D63F, 0x1D640, | |
| 1929 | 0x1D641, 0x1D642, 0x1D643, 0x1D644, 0x1D645, 0x1D646, 0x1D647, 0x1D648, | |
| 1930 | 0x1D649, 0x1D64A, 0x1D64B, 0x1D64C, 0x1D64D, 0x1D64E, 0x1D64F, 0x1D650, | |
| 1931 | 0x1D651, 0x1D652, 0x1D653, 0x1D654, 0x1D655, 0x1D656, 0x1D657, 0x1D658, | |
| 1932 | 0x1D659, 0x1D65A, 0x1D65B, 0x1D65C, 0x1D65D, 0x1D65E, 0x1D65F, 0x1D660, | |
| 1933 | 0x1D661, 0x1D662, 0x1D663, 0x1D664, 0x1D665, 0x1D666, 0x1D667, 0x1D668, | |
| 1934 | 0x1D669, 0x1D66A, 0x1D66B, 0x1D66C, 0x1D66D, 0x1D66E, 0x1D66F, 0x1D670, | |
| 1935 | 0x1D671, 0x1D672, 0x1D673, 0x1D674, 0x1D675, 0x1D676, 0x1D677, 0x1D678, | |
| 1936 | 0x1D679, 0x1D67A, 0x1D67B, 0x1D67C, 0x1D67D, 0x1D67E, 0x1D67F, 0x1D680, | |
| 1937 | 0x1D681, 0x1D682, 0x1D683, 0x1D684, 0x1D685, 0x1D686, 0x1D687, 0x1D688, | |
| 1938 | 0x1D689, 0x1D68A, 0x1D68B, 0x1D68C, 0x1D68D, 0x1D68E, 0x1D68F, 0x1D690, | |
| 1939 | 0x1D691, 0x1D692, 0x1D693, 0x1D694, 0x1D695, 0x1D696, 0x1D697, 0x1D698, | |
| 1940 | 0x1D699, 0x1D69A, 0x1D69B, 0x1D69C, 0x1D69D, 0x1D69E, 0x1D69F, 0x1D6A0, | |
| 1941 | 0x1D6A1, 0x1D6A2, 0x1D6A3, 0x1D6A4, 0x1D6A5, 0x1D6A8, 0x1D6A9, 0x1D6AA, | |
| 1942 | 0x1D6AB, 0x1D6AC, 0x1D6AD, 0x1D6AE, 0x1D6AF, 0x1D6B0, 0x1D6B1, 0x1D6B2, | |
| 1943 | 0x1D6B3, 0x1D6B4, 0x1D6B5, 0x1D6B6, 0x1D6B7, 0x1D6B8, 0x1D6B9, 0x1D6BA, | |
| 1944 | 0x1D6BB, 0x1D6BC, 0x1D6BD, 0x1D6BE, 0x1D6BF, 0x1D6C0, 0x1D6C1, 0x1D6C2, | |
| 1945 | 0x1D6C3, 0x1D6C4, 0x1D6C5, 0x1D6C6, 0x1D6C7, 0x1D6C8, 0x1D6C9, 0x1D6CA, | |
| 1946 | 0x1D6CB, 0x1D6CC, 0x1D6CD, 0x1D6CE, 0x1D6CF, 0x1D6D0, 0x1D6D1, 0x1D6D2, | |
| 1947 | 0x1D6D3, 0x1D6D4, 0x1D6D5, 0x1D6D6, 0x1D6D7, 0x1D6D8, 0x1D6D9, 0x1D6DA, | |
| 1948 | 0x1D6DB, 0x1D6DC, 0x1D6DD, 0x1D6DE, 0x1D6DF, 0x1D6E0, 0x1D6E1, 0x1D6E2, | |
| 1949 | 0x1D6E3, 0x1D6E4, 0x1D6E5, 0x1D6E6, 0x1D6E7, 0x1D6E8, 0x1D6E9, 0x1D6EA, | |
| 1950 | 0x1D6EB, 0x1D6EC, 0x1D6ED, 0x1D6EE, 0x1D6EF, 0x1D6F0, 0x1D6F1, 0x1D6F2, | |
| 1951 | 0x1D6F3, 0x1D6F4, 0x1D6F5, 0x1D6F6, 0x1D6F7, 0x1D6F8, 0x1D6F9, 0x1D6FA, | |
| 1952 | 0x1D6FB, 0x1D6FC, 0x1D6FD, 0x1D6FE, 0x1D6FF, 0x1D700, 0x1D701, 0x1D702, | |
| 1953 | 0x1D703, 0x1D704, 0x1D705, 0x1D706, 0x1D707, 0x1D708, 0x1D709, 0x1D70A, | |
| 1954 | 0x1D70B, 0x1D70C, 0x1D70D, 0x1D70E, 0x1D70F, 0x1D710, 0x1D711, 0x1D712, | |
| 1955 | 0x1D713, 0x1D714, 0x1D715, 0x1D716, 0x1D717, 0x1D718, 0x1D719, 0x1D71A, | |
| 1956 | 0x1D71B, 0x1D71C, 0x1D71D, 0x1D71E, 0x1D71F, 0x1D720, 0x1D721, 0x1D722, | |
| 1957 | 0x1D723, 0x1D724, 0x1D725, 0x1D726, 0x1D727, 0x1D728, 0x1D729, 0x1D72A, | |
| 1958 | 0x1D72B, 0x1D72C, 0x1D72D, 0x1D72E, 0x1D72F, 0x1D730, 0x1D731, 0x1D732, | |
| 1959 | 0x1D733, 0x1D734, 0x1D735, 0x1D736, 0x1D737, 0x1D738, 0x1D739, 0x1D73A, | |
| 1960 | 0x1D73B, 0x1D73C, 0x1D73D, 0x1D73E, 0x1D73F, 0x1D740, 0x1D741, 0x1D742, | |
| 1961 | 0x1D743, 0x1D744, 0x1D745, 0x1D746, 0x1D747, 0x1D748, 0x1D749, 0x1D74A, | |
| 1962 | 0x1D74B, 0x1D74C, 0x1D74D, 0x1D74E, 0x1D74F, 0x1D750, 0x1D751, 0x1D752, | |
| 1963 | 0x1D753, 0x1D754, 0x1D755, 0x1D756, 0x1D757, 0x1D758, 0x1D759, 0x1D75A, | |
| 1964 | 0x1D75B, 0x1D75C, 0x1D75D, 0x1D75E, 0x1D75F, 0x1D760, 0x1D761, 0x1D762, | |
| 1965 | 0x1D763, 0x1D764, 0x1D765, 0x1D766, 0x1D767, 0x1D768, 0x1D769, 0x1D76A, | |
| 1966 | 0x1D76B, 0x1D76C, 0x1D76D, 0x1D76E, 0x1D76F, 0x1D770, 0x1D771, 0x1D772, | |
| 1967 | 0x1D773, 0x1D774, 0x1D775, 0x1D776, 0x1D777, 0x1D778, 0x1D779, 0x1D77A, | |
| 1968 | 0x1D77B, 0x1D77C, 0x1D77D, 0x1D77E, 0x1D77F, 0x1D780, 0x1D781, 0x1D782, | |
| 1969 | 0x1D783, 0x1D784, 0x1D785, 0x1D786, 0x1D787, 0x1D788, 0x1D789, 0x1D78A, | |
| 1970 | 0x1D78B, 0x1D78C, 0x1D78D, 0x1D78E, 0x1D78F, 0x1D790, 0x1D791, 0x1D792, | |
| 1971 | 0x1D793, 0x1D794, 0x1D795, 0x1D796, 0x1D797, 0x1D798, 0x1D799, 0x1D79A, | |
| 1972 | 0x1D79B, 0x1D79C, 0x1D79D, 0x1D79E, 0x1D79F, 0x1D7A0, 0x1D7A1, 0x1D7A2, | |
| 1973 | 0x1D7A3, 0x1D7A4, 0x1D7A5, 0x1D7A6, 0x1D7A7, 0x1D7A8, 0x1D7A9, 0x1D7AA, | |
| 1974 | 0x1D7AB, 0x1D7AC, 0x1D7AD, 0x1D7AE, 0x1D7AF, 0x1D7B0, 0x1D7B1, 0x1D7B2, | |
| 1975 | 0x1D7B3, 0x1D7B4, 0x1D7B5, 0x1D7B6, 0x1D7B7, 0x1D7B8, 0x1D7B9, 0x1D7BA, | |
| 1976 | 0x1D7BB, 0x1D7BC, 0x1D7BD, 0x1D7BE, 0x1D7BF, 0x1D7C0, 0x1D7C1, 0x1D7C2, | |
| 1977 | 0x1D7C3, 0x1D7C4, 0x1D7C5, 0x1D7C6, 0x1D7C7, 0x1D7C8, 0x1D7C9, 0x1D7CA, | |
| 1978 | 0x1D7CB, 0x1D7CE, 0x1D7CF, 0x1D7D0, 0x1D7D1, 0x1D7D2, 0x1D7D3, 0x1D7D4, | |
| 1979 | 0x1D7D5, 0x1D7D6, 0x1D7D7, 0x1D7D8, 0x1D7D9, 0x1D7DA, 0x1D7DB, 0x1D7DC, | |
| 1980 | 0x1D7DD, 0x1D7DE, 0x1D7DF, 0x1D7E0, 0x1D7E1, 0x1D7E2, 0x1D7E3, 0x1D7E4, | |
| 1981 | 0x1D7E5, 0x1D7E6, 0x1D7E7, 0x1D7E8, 0x1D7E9, 0x1D7EA, 0x1D7EB, 0x1D7EC, | |
| 1982 | 0x1D7ED, 0x1D7EE, 0x1D7EF, 0x1D7F0, 0x1D7F1, 0x1D7F2, 0x1D7F3, 0x1D7F4, | |
| 1983 | 0x1D7F5, 0x1D7F6, 0x1D7F7, 0x1D7F8, 0x1D7F9, 0x1D7FA, 0x1D7FB, 0x1D7FC, | |
| 1984 | 0x1D7FD, 0x1D7FE, 0x1D7FF, 0x20000, 0x2A6D6, 0x2F800, 0x2F801, 0x2F802, | |
| 1985 | 0x2F803, 0x2F804, 0x2F805, 0x2F806, 0x2F807, 0x2F808, 0x2F809, 0x2F80A, | |
| 1986 | 0x2F80B, 0x2F80C, 0x2F80D, 0x2F80E, 0x2F80F, 0x2F810, 0x2F811, 0x2F812, | |
| 1987 | 0x2F813, 0x2F814, 0x2F815, 0x2F816, 0x2F817, 0x2F818, 0x2F819, 0x2F81A, | |
| 1988 | 0x2F81B, 0x2F81C, 0x2F81D, 0x2F81E, 0x2F81F, 0x2F820, 0x2F821, 0x2F822, | |
| 1989 | 0x2F823, 0x2F824, 0x2F825, 0x2F826, 0x2F827, 0x2F828, 0x2F829, 0x2F82A, | |
| 1990 | 0x2F82B, 0x2F82C, 0x2F82D, 0x2F82E, 0x2F82F, 0x2F830, 0x2F831, 0x2F832, | |
| 1991 | 0x2F833, 0x2F834, 0x2F835, 0x2F836, 0x2F837, 0x2F838, 0x2F839, 0x2F83A, | |
| 1992 | 0x2F83B, 0x2F83C, 0x2F83D, 0x2F83E, 0x2F83F, 0x2F840, 0x2F841, 0x2F842, | |
| 1993 | 0x2F843, 0x2F844, 0x2F845, 0x2F846, 0x2F847, 0x2F848, 0x2F849, 0x2F84A, | |
| 1994 | 0x2F84B, 0x2F84C, 0x2F84D, 0x2F84E, 0x2F84F, 0x2F850, 0x2F851, 0x2F852, | |
| 1995 | 0x2F853, 0x2F854, 0x2F855, 0x2F856, 0x2F857, 0x2F858, 0x2F859, 0x2F85A, | |
| 1996 | 0x2F85B, 0x2F85C, 0x2F85D, 0x2F85E, 0x2F85F, 0x2F860, 0x2F861, 0x2F862, | |
| 1997 | 0x2F863, 0x2F864, 0x2F865, 0x2F866, 0x2F867, 0x2F868, 0x2F869, 0x2F86A, | |
| 1998 | 0x2F86B, 0x2F86C, 0x2F86D, 0x2F86E, 0x2F86F, 0x2F870, 0x2F871, 0x2F872, | |
| 1999 | 0x2F873, 0x2F874, 0x2F875, 0x2F876, 0x2F877, 0x2F878, 0x2F879, 0x2F87A, | |
| 2000 | 0x2F87B, 0x2F87C, 0x2F87D, 0x2F87E, 0x2F87F, 0x2F880, 0x2F881, 0x2F882, | |
| 2001 | 0x2F883, 0x2F884, 0x2F885, 0x2F886, 0x2F887, 0x2F888, 0x2F889, 0x2F88A, | |
| 2002 | 0x2F88B, 0x2F88C, 0x2F88D, 0x2F88E, 0x2F88F, 0x2F890, 0x2F891, 0x2F892, | |
| 2003 | 0x2F893, 0x2F894, 0x2F895, 0x2F896, 0x2F897, 0x2F898, 0x2F899, 0x2F89A, | |
| 2004 | 0x2F89B, 0x2F89C, 0x2F89D, 0x2F89E, 0x2F89F, 0x2F8A0, 0x2F8A1, 0x2F8A2, | |
| 2005 | 0x2F8A3, 0x2F8A4, 0x2F8A5, 0x2F8A6, 0x2F8A7, 0x2F8A8, 0x2F8A9, 0x2F8AA, | |
| 2006 | 0x2F8AB, 0x2F8AC, 0x2F8AD, 0x2F8AE, 0x2F8AF, 0x2F8B0, 0x2F8B1, 0x2F8B2, | |
| 2007 | 0x2F8B3, 0x2F8B4, 0x2F8B5, 0x2F8B6, 0x2F8B7, 0x2F8B8, 0x2F8B9, 0x2F8BA, | |
| 2008 | 0x2F8BB, 0x2F8BC, 0x2F8BD, 0x2F8BE, 0x2F8BF, 0x2F8C0, 0x2F8C1, 0x2F8C2, | |
| 2009 | 0x2F8C3, 0x2F8C4, 0x2F8C5, 0x2F8C6, 0x2F8C7, 0x2F8C8, 0x2F8C9, 0x2F8CA, | |
| 2010 | 0x2F8CB, 0x2F8CC, 0x2F8CD, 0x2F8CE, 0x2F8CF, 0x2F8D0, 0x2F8D1, 0x2F8D2, | |
| 2011 | 0x2F8D3, 0x2F8D4, 0x2F8D5, 0x2F8D6, 0x2F8D7, 0x2F8D8, 0x2F8D9, 0x2F8DA, | |
| 2012 | 0x2F8DB, 0x2F8DC, 0x2F8DD, 0x2F8DE, 0x2F8DF, 0x2F8E0, 0x2F8E1, 0x2F8E2, | |
| 2013 | 0x2F8E3, 0x2F8E4, 0x2F8E5, 0x2F8E6, 0x2F8E7, 0x2F8E8, 0x2F8E9, 0x2F8EA, | |
| 2014 | 0x2F8EB, 0x2F8EC, 0x2F8ED, 0x2F8EE, 0x2F8EF, 0x2F8F0, 0x2F8F1, 0x2F8F2, | |
| 2015 | 0x2F8F3, 0x2F8F4, 0x2F8F5, 0x2F8F6, 0x2F8F7, 0x2F8F8, 0x2F8F9, 0x2F8FA, | |
| 2016 | 0x2F8FB, 0x2F8FC, 0x2F8FD, 0x2F8FE, 0x2F8FF, 0x2F900, 0x2F901, 0x2F902, | |
| 2017 | 0x2F903, 0x2F904, 0x2F905, 0x2F906, 0x2F907, 0x2F908, 0x2F909, 0x2F90A, | |
| 2018 | 0x2F90B, 0x2F90C, 0x2F90D, 0x2F90E, 0x2F90F, 0x2F910, 0x2F911, 0x2F912, | |
| 2019 | 0x2F913, 0x2F914, 0x2F915, 0x2F916, 0x2F917, 0x2F918, 0x2F919, 0x2F91A, | |
| 2020 | 0x2F91B, 0x2F91C, 0x2F91D, 0x2F91E, 0x2F91F, 0x2F920, 0x2F921, 0x2F922, | |
| 2021 | 0x2F923, 0x2F924, 0x2F925, 0x2F926, 0x2F927, 0x2F928, 0x2F929, 0x2F92A, | |
| 2022 | 0x2F92B, 0x2F92C, 0x2F92D, 0x2F92E, 0x2F92F, 0x2F930, 0x2F931, 0x2F932, | |
| 2023 | 0x2F933, 0x2F934, 0x2F935, 0x2F936, 0x2F937, 0x2F938, 0x2F939, 0x2F93A, | |
| 2024 | 0x2F93B, 0x2F93C, 0x2F93D, 0x2F93E, 0x2F93F, 0x2F940, 0x2F941, 0x2F942, | |
| 2025 | 0x2F943, 0x2F944, 0x2F945, 0x2F946, 0x2F947, 0x2F948, 0x2F949, 0x2F94A, | |
| 2026 | 0x2F94B, 0x2F94C, 0x2F94D, 0x2F94E, 0x2F94F, 0x2F950, 0x2F951, 0x2F952, | |
| 2027 | 0x2F953, 0x2F954, 0x2F955, 0x2F956, 0x2F957, 0x2F958, 0x2F959, 0x2F95A, | |
| 2028 | 0x2F95B, 0x2F95C, 0x2F95D, 0x2F95E, 0x2F95F, 0x2F960, 0x2F961, 0x2F962, | |
| 2029 | 0x2F963, 0x2F964, 0x2F965, 0x2F966, 0x2F967, 0x2F968, 0x2F969, 0x2F96A, | |
| 2030 | 0x2F96B, 0x2F96C, 0x2F96D, 0x2F96E, 0x2F96F, 0x2F970, 0x2F971, 0x2F972, | |
| 2031 | 0x2F973, 0x2F974, 0x2F975, 0x2F976, 0x2F977, 0x2F978, 0x2F979, 0x2F97A, | |
| 2032 | 0x2F97B, 0x2F97C, 0x2F97D, 0x2F97E, 0x2F97F, 0x2F980, 0x2F981, 0x2F982, | |
| 2033 | 0x2F983, 0x2F984, 0x2F985, 0x2F986, 0x2F987, 0x2F988, 0x2F989, 0x2F98A, | |
| 2034 | 0x2F98B, 0x2F98C, 0x2F98D, 0x2F98E, 0x2F98F, 0x2F990, 0x2F991, 0x2F992, | |
| 2035 | 0x2F993, 0x2F994, 0x2F995, 0x2F996, 0x2F997, 0x2F998, 0x2F999, 0x2F99A, | |
| 2036 | 0x2F99B, 0x2F99C, 0x2F99D, 0x2F99E, 0x2F99F, 0x2F9A0, 0x2F9A1, 0x2F9A2, | |
| 2037 | 0x2F9A3, 0x2F9A4, 0x2F9A5, 0x2F9A6, 0x2F9A7, 0x2F9A8, 0x2F9A9, 0x2F9AA, | |
| 2038 | 0x2F9AB, 0x2F9AC, 0x2F9AD, 0x2F9AE, 0x2F9AF, 0x2F9B0, 0x2F9B1, 0x2F9B2, | |
| 2039 | 0x2F9B3, 0x2F9B4, 0x2F9B5, 0x2F9B6, 0x2F9B7, 0x2F9B8, 0x2F9B9, 0x2F9BA, | |
| 2040 | 0x2F9BB, 0x2F9BC, 0x2F9BD, 0x2F9BE, 0x2F9BF, 0x2F9C0, 0x2F9C1, 0x2F9C2, | |
| 2041 | 0x2F9C3, 0x2F9C4, 0x2F9C5, 0x2F9C6, 0x2F9C7, 0x2F9C8, 0x2F9C9, 0x2F9CA, | |
| 2042 | 0x2F9CB, 0x2F9CC, 0x2F9CD, 0x2F9CE, 0x2F9CF, 0x2F9D0, 0x2F9D1, 0x2F9D2, | |
| 2043 | 0x2F9D3, 0x2F9D4, 0x2F9D5, 0x2F9D6, 0x2F9D7, 0x2F9D8, 0x2F9D9, 0x2F9DA, | |
| 2044 | 0x2F9DB, 0x2F9DC, 0x2F9DD, 0x2F9DE, 0x2F9DF, 0x2F9E0, 0x2F9E1, 0x2F9E2, | |
| 2045 | 0x2F9E3, 0x2F9E4, 0x2F9E5, 0x2F9E6, 0x2F9E7, 0x2F9E8, 0x2F9E9, 0x2F9EA, | |
| 2046 | 0x2F9EB, 0x2F9EC, 0x2F9ED, 0x2F9EE, 0x2F9EF, 0x2F9F0, 0x2F9F1, 0x2F9F2, | |
| 2047 | 0x2F9F3, 0x2F9F4, 0x2F9F5, 0x2F9F6, 0x2F9F7, 0x2F9F8, 0x2F9F9, 0x2F9FA, | |
| 2048 | 0x2F9FB, 0x2F9FC, 0x2F9FD, 0x2F9FE, 0x2F9FF, 0x2FA00, 0x2FA01, 0x2FA02, | |
| 2049 | 0x2FA03, 0x2FA04, 0x2FA05, 0x2FA06, 0x2FA07, 0x2FA08, 0x2FA09, 0x2FA0A, | |
| 2050 | 0x2FA0B, 0x2FA0C, 0x2FA0D, 0x2FA0E, 0x2FA0F, 0x2FA10, 0x2FA11, 0x2FA12, | |
| 2051 | 0x2FA13, 0x2FA14, 0x2FA15, 0x2FA16, 0x2FA17, 0x2FA18, 0x2FA19, 0x2FA1A, | |
| 2052 | 0x2FA1B, 0x2FA1C, 0x2FA1D, 0xE0001, 0xE0020, 0xE0021, 0xE0022, 0xE0023, | |
| 2053 | 0xE0024, 0xE0025, 0xE0026, 0xE0027, 0xE0028, 0xE0029, 0xE002A, 0xE002B, | |
| 2054 | 0xE002C, 0xE002D, 0xE002E, 0xE002F, 0xE0030, 0xE0031, 0xE0032, 0xE0033, | |
| 2055 | 0xE0034, 0xE0035, 0xE0036, 0xE0037, 0xE0038, 0xE0039, 0xE003A, 0xE003B, | |
| 2056 | 0xE003C, 0xE003D, 0xE003E, 0xE003F, 0xE0040, 0xE0041, 0xE0042, 0xE0043, | |
| 2057 | 0xE0044, 0xE0045, 0xE0046, 0xE0047, 0xE0048, 0xE0049, 0xE004A, 0xE004B, | |
| 2058 | 0xE004C, 0xE004D, 0xE004E, 0xE004F, 0xE0050, 0xE0051, 0xE0052, 0xE0053, | |
| 2059 | 0xE0054, 0xE0055, 0xE0056, 0xE0057, 0xE0058, 0xE0059, 0xE005A, 0xE005B, | |
| 2060 | 0xE005C, 0xE005D, 0xE005E, 0xE005F, 0xE0060, 0xE0061, 0xE0062, 0xE0063, | |
| 2061 | 0xE0064, 0xE0065, 0xE0066, 0xE0067, 0xE0068, 0xE0069, 0xE006A, 0xE006B, | |
| 2062 | 0xE006C, 0xE006D, 0xE006E, 0xE006F, 0xE0070, 0xE0071, 0xE0072, 0xE0073, | |
| 2063 | 0xE0074, 0xE0075, 0xE0076, 0xE0077, 0xE0078, 0xE0079, 0xE007A, 0xE007B, | |
| 2064 | 0xE007C, 0xE007D, 0xE007E, 0xE007F, 0xE0100, 0xE0101, 0xE0102, 0xE0103, | |
| 2065 | 0xE0104, 0xE0105, 0xE0106, 0xE0107, 0xE0108, 0xE0109, 0xE010A, 0xE010B, | |
| 2066 | 0xE010C, 0xE010D, 0xE010E, 0xE010F, 0xE0110, 0xE0111, 0xE0112, 0xE0113, | |
| 2067 | 0xE0114, 0xE0115, 0xE0116, 0xE0117, 0xE0118, 0xE0119, 0xE011A, 0xE011B, | |
| 2068 | 0xE011C, 0xE011D, 0xE011E, 0xE011F, 0xE0120, 0xE0121, 0xE0122, 0xE0123, | |
| 2069 | 0xE0124, 0xE0125, 0xE0126, 0xE0127, 0xE0128, 0xE0129, 0xE012A, 0xE012B, | |
| 2070 | 0xE012C, 0xE012D, 0xE012E, 0xE012F, 0xE0130, 0xE0131, 0xE0132, 0xE0133, | |
| 2071 | 0xE0134, 0xE0135, 0xE0136, 0xE0137, 0xE0138, 0xE0139, 0xE013A, 0xE013B, | |
| 2072 | 0xE013C, 0xE013D, 0xE013E, 0xE013F, 0xE0140, 0xE0141, 0xE0142, 0xE0143, | |
| 2073 | 0xE0144, 0xE0145, 0xE0146, 0xE0147, 0xE0148, 0xE0149, 0xE014A, 0xE014B, | |
| 2074 | 0xE014C, 0xE014D, 0xE014E, 0xE014F, 0xE0150, 0xE0151, 0xE0152, 0xE0153, | |
| 2075 | 0xE0154, 0xE0155, 0xE0156, 0xE0157, 0xE0158, 0xE0159, 0xE015A, 0xE015B, | |
| 2076 | 0xE015C, 0xE015D, 0xE015E, 0xE015F, 0xE0160, 0xE0161, 0xE0162, 0xE0163, | |
| 2077 | 0xE0164, 0xE0165, 0xE0166, 0xE0167, 0xE0168, 0xE0169, 0xE016A, 0xE016B, | |
| 2078 | 0xE016C, 0xE016D, 0xE016E, 0xE016F, 0xE0170, 0xE0171, 0xE0172, 0xE0173, | |
| 2079 | 0xE0174, 0xE0175, 0xE0176, 0xE0177, 0xE0178, 0xE0179, 0xE017A, 0xE017B, | |
| 2080 | 0xE017C, 0xE017D, 0xE017E, 0xE017F, 0xE0180, 0xE0181, 0xE0182, 0xE0183, | |
| 2081 | 0xE0184, 0xE0185, 0xE0186, 0xE0187, 0xE0188, 0xE0189, 0xE018A, 0xE018B, | |
| 2082 | 0xE018C, 0xE018D, 0xE018E, 0xE018F, 0xE0190, 0xE0191, 0xE0192, 0xE0193, | |
| 2083 | 0xE0194, 0xE0195, 0xE0196, 0xE0197, 0xE0198, 0xE0199, 0xE019A, 0xE019B, | |
| 2084 | 0xE019C, 0xE019D, 0xE019E, 0xE019F, 0xE01A0, 0xE01A1, 0xE01A2, 0xE01A3, | |
| 2085 | 0xE01A4, 0xE01A5, 0xE01A6, 0xE01A7, 0xE01A8, 0xE01A9, 0xE01AA, 0xE01AB, | |
| 2086 | 0xE01AC, 0xE01AD, 0xE01AE, 0xE01AF, 0xE01B0, 0xE01B1, 0xE01B2, 0xE01B3, | |
| 2087 | 0xE01B4, 0xE01B5, 0xE01B6, 0xE01B7, 0xE01B8, 0xE01B9, 0xE01BA, 0xE01BB, | |
| 2088 | 0xE01BC, 0xE01BD, 0xE01BE, 0xE01BF, 0xE01C0, 0xE01C1, 0xE01C2, 0xE01C3, | |
| 2089 | 0xE01C4, 0xE01C5, 0xE01C6, 0xE01C7, 0xE01C8, 0xE01C9, 0xE01CA, 0xE01CB, | |
| 2090 | 0xE01CC, 0xE01CD, 0xE01CE, 0xE01CF, 0xE01D0, 0xE01D1, 0xE01D2, 0xE01D3, | |
| 2091 | 0xE01D4, 0xE01D5, 0xE01D6, 0xE01D7, 0xE01D8, 0xE01D9, 0xE01DA, 0xE01DB, | |
| 2092 | 0xE01DC, 0xE01DD, 0xE01DE, 0xE01DF, 0xE01E0, 0xE01E1, 0xE01E2, 0xE01E3, | |
| 2093 | 0xE01E4, 0xE01E5, 0xE01E6, 0xE01E7, 0xE01E8, 0xE01E9, 0xE01EA, 0xE01EB, | |
| 2094 | 0xE01EC, 0xE01ED, 0xE01EE, 0xE01EF, | |
| 2095 | }; | |
| 2096 | ||
| 2097 | ||
| 2098 | ||
| 2099 | //---------------------------------------------------------------------------------------------- | |
| 2100 | ||
| 2101 | /** | |
| 2102 | @SYMTestCaseID TI18N-UCD-CT-4001 | |
| 2103 | @SYMPREQ 2471 | |
| 2104 | @SYMTestCaseDesc Check UCD support for newly added codepoint. | |
| 2105 | @SYMTestPriority High | |
| 2106 | @SYMTestStatus Implemented | |
| 2107 | @SYMTestActions 1. Select new UCD codepoint | |
| 2108 | 2. Get the characters' properties from UCD | |
| 2109 | @SYMTestExpectedResults All properties of the characters are retrieved from UCD | |
| 2110 | */ | |
| 2111 | //---------------------------------------------------------------------------------------------- | |
| 2112 | // test for characters' attribute newly added or changed in Unicode 5.0 | |
| 2113 | // the characters are chosen randomly from different blocks | |
| 2114 | void test_unicode5_new_chars() | |
| 2115 | 	{
 | |
| 2116 | 	test_unicode_char(0x002B,_L("Sm b=ES w=3"),_L("+"));
 | |
| 2117 | 	test_unicode_char(0x002D,_L("Pd b=ES w=3"),_L("-"));
 | |
| 2118 | 	test_unicode_char(0x002F,_L("Po b=CS w=3"),_L("/"));
 | |
| 2119 | 	test_unicode_char(0x00AD,_L("Cf b=BN np ng"),_L("SOFT HYPHEN"));
 | |
| 2120 | 	test_unicode_char(0x00B2,_L("No b=EN n=2"),_L("SUPERSCRIPT TWO"));
 | |
| 2121 | 	test_unicode_char(0x019E,_L("Ll u=220"),_L("LATIN SMALL LETTER N WITH LONG RIGHT LEG"));
 | |
| 2122 | 	test_unicode_char(0x01C5,_L("Lt u=1c4 l=1c6"),_L("LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON"));
 | |
| 2123 | 	test_unicode_char(0x0234,_L("Ll"),_L("LATIN SMALL LETTER L WITH CURL"));
 | |
| 2124 | 	test_unicode_char(0x0294,_L("Lo"),_L("LATIN LETTER GLOTTAL STOP"));
 | |
| 2125 | 	test_unicode_char(0x02AE,_L("Ll"),_L("LATIN SMALL LETTER TURNED H WITH FISHHOOK"));
 | |
| 2126 | 	test_unicode_char(0x02C6,_L("Lm b=ON"),_L("MODIFIER LETTER CIRCUMFLEX ACCENT"));
 | |
| 2127 | 	test_unicode_char(0x02FF,_L("Sk b=ON"),_L("MODIFIER LETTER LOW LEFT ARROW"));
 | |
| 2128 | 	test_unicode_char(0x034F,_L("Mn b=NSM"),_L("COMBINING GRAPHEME JOINER"));
 | |
| 2129 | 	test_unicode_char(0x03D8,_L("Lu l=3d9"),_L("GREEK LETTER ARCHAIC KOPPA"));
 | |
| 2130 | 	test_unicode_char(0x03F2,_L("Ll u=3f9"),_L("GREEK LUNATE SIGMA SYMBOL"));
 | |
| 2131 | 	test_unicode_char(0x04C0,_L("Lu l=4cf"),_L("CYRILLIC LETTER PALOCHKA"));
 | |
| 2132 | 	test_unicode_char(0x06FF,_L("Lo b=AL"),_L("ARABIC LETTER HEH WITH INVERTED V"));
 | |
| 2133 | 	test_unicode_char(0x07C0,_L("Nd b=R n=0"),_L("NKO DIGIT ZERO"));
 | |
| 2134 | 	test_unicode_char(0x097F,_L("Lo"),_L("DEVANAGARI LETTER BBA"));
 | |
| 2135 | 	test_unicode_char(0x0B83,_L("Lo"),_L("TAMIL SIGN VISARGA"));
 | |
| 2136 | 	test_unicode_char(0x0CBD,_L("Lo"),_L("KANNADA SIGN AVAGRAHA"));
 | |
| 2137 | 	test_unicode_char(0x0F3A,_L("Ps b=ON m"),_L("TIBETAN MARK GUG RTAGS GYON"));
 | |
| 2138 | 	test_unicode_char(0x10A0,_L("Lu l=2d00"),_L("GEORGIAN CAPITAL LETTER AN"));
 | |
| 2139 | 	test_unicode_char(0x1369,_L("No n=1"),_L("ETHIOPIC DIGIT ONE"));
 | |
| 2140 | 	test_unicode_char(0x1900,_L("Lo"),_L("LIMBU VOWEL-CARRIER LETTER"));
 | |
| 2141 | 	test_unicode_char(0x200B,_L("Cf b=BN np ng"),_L("ZERO WIDTH SPACE"));
 | |
| 2142 | 	test_unicode_char(0x202F,_L("Zs b=CS ng"),_L("NARROW NO-BREAK SPACE"));
 | |
| 2143 | 	test_unicode_char(0x214E,_L("Ll u=2132"),_L("TURNED SMALL F"));
 | |
| 2144 | 	test_unicode_char(0x2DBE,_L("Lo"),_L("ETHIOPIC SYLLABLE CCHO"));
 | |
| 2145 | 	test_unicode_char(0x4DC0,_L("So b=ON w=4"),_L("HEXAGRAM FOR THE CREATIVE HEAVEN"));
 | |
| 2146 | 	test_unicode_char(0x9FA6,_L("Lo w=4"),_L("CJK UNIFIED IDEOGRAPH-9FA6"));
 | |
| 2147 | 	test_unicode_char(0xA721,_L("Sk b=ON w=4"),_L("MODIFIER LETTER STRESS AND LOW TONE"));
 | |
| 2148 | 	test_unicode_char(0xFE00,_L("Mn b=NSM"),_L("VARIATION SELECTOR-1"));
 | |
| 2149 | 	test_unicode_char(0x10100,_L("Po"),_L("AEGEAN WORD SEPARATOR LINE"));
 | |
| 2150 | 	test_unicode_char(0x20000,_L("Lo w=4"),_L("CJK UNIFIED IDEOGRAPH-20000"));
 | |
| 2151 | 	test_unicode_char(0x2F800,_L("Lo w=4 d=4e3d"),_L("CJK UNIFIED IDEOGRAPH-2F800"));
 | |
| 2152 | } | |
| 2153 | ||
| 2154 | static void Unicode5NewCharTest() | |
| 2155 | 	{
 | |
| 2156 | TUint32 i; | |
| 2157 | for (i=0; i < sizeof(Unicode5NewCharRange)/sizeof(TUint32); i+=2) | |
| 2158 | 		{
 | |
| 2159 | TUint32 from = Unicode5NewCharRange[i]; | |
| 2160 | TUint32 to = Unicode5NewCharRange[i + 1]; | |
| 2161 | ||
| 2162 | for (TUint32 ch = from; ch <= to; ch++) | |
| 2163 | 			{
 | |
| 2164 | TChar c(ch); | |
| 2165 | ||
| 2166 | TChar::TCharInfo ci; | |
| 2167 | c.GetInfo(ci); | |
| 2168 | ||
| 2169 | test((ci.iCategory & TChar::EUnassignedGroup) != TChar::EUnassignedGroup); | |
| 2170 | ||
| 2171 | } | |
| 2172 | } | |
| 2173 | for (i=0; i < sizeof(Unicode5NewCharOutBMPIndex)/sizeof(TUint32); i++) | |
| 2174 | 		{
 | |
| 2175 | TUint32 ch = Unicode5NewCharOutBMPIndex[i]; | |
| 2176 | TChar c(ch); | |
| 2177 | ||
| 2178 | TChar::TCharInfo ci; | |
| 2179 | c.GetInfo(ci); | |
| 2180 | ||
| 2181 | test((ci.iCategory & TChar::EUnassignedGroup) != TChar::EUnassignedGroup); | |
| 2182 | ||
| 2183 | } | |
| 2184 | } | |
| 2185 | ||
| 2186 | //---------------------------------------------------------------------------------------------- | |
| 2187 | ||
| 2188 | /** | |
| 2189 | @SYMTestCaseID TI18N-UCD-CT-4002 | |
| 2190 | @SYMPREQ 2471 | |
| 2191 | @SYMTestCaseDesc Check UCD support for one byte GB18030 character mapping/support. | |
| 2192 | @SYMTestPriority High | |
| 2193 | @SYMTestStatus Implemented | |
| 2194 | @SYMTestActions 1. Select characters from one-byte character set | |
| 2195 | 2. Get the characters' properties from UCD | |
| 2196 | @SYMTestExpectedResults All properties of the characters are retrieved from UCD | |
| 2197 | */ | |
| 2198 | //---------------------------------------------------------------------------------------------- | |
| 2199 | static void GB18030OneByteCharTest() | |
| 2200 | 	{
 | |
| 2201 | for (TInt32 i=0; i <= 127; i++) | |
| 2202 | 		{
 | |
| 2203 | TUint32 ch = i; | |
| 2204 | TChar c(ch); | |
| 2205 | ||
| 2206 | TChar::TCharInfo ci; | |
| 2207 | c.GetInfo(ci); | |
| 2208 | ||
| 2209 | test((ci.iCategory & TChar::EUnassignedGroup) != TChar::EUnassignedGroup); | |
| 2210 | } | |
| 2211 | } | |
| 2212 | ||
| 2213 | //---------------------------------------------------------------------------------------------- | |
| 2214 | ||
| 2215 | /** | |
| 2216 | @SYMTestCaseID TI18N-UCD-CT-4003 | |
| 2217 | @SYMPREQ 2471 | |
| 2218 | @SYMTestCaseDesc Check UCD support for four-byte GB18030 character mapping/support. | |
| 2219 | @SYMTestPriority High | |
| 2220 | @SYMTestStatus Implemented | |
| 2221 | @SYMTestActions 1. Select characters from CJK Ext B | |
| 2222 | 2. Get the characters' properties from UCD | |
| 2223 | 3. Select characters from CJK Compat Ideograph | |
| 2224 | 4. Get the character's properties from UCD | |
| 2225 | @SYMTestExpectedResults All properties of the characters are retrieved from UCD | |
| 2226 | */ | |
| 2227 | //---------------------------------------------------------------------------------------------- | |
| 2228 | static void GB18030FourBytesCharTest() | |
| 2229 | 	{
 | |
| 2230 | /* CJK Ideograph Extension B */ | |
| 2231 | for (TInt32 i=0x20000; i <= 0x2A6D6; i++) | |
| 2232 | 		{
 | |
| 2233 | TUint32 ch = i; | |
| 2234 | TChar c(ch); | |
| 2235 | ||
| 2236 | TChar::TCharInfo ci; | |
| 2237 | c.GetInfo(ci); | |
| 2238 | ||
| 2239 | test((ci.iCategory & TChar::EUnassignedGroup) != TChar::EUnassignedGroup); | |
| 2240 | } | |
| 2241 | ||
| 2242 | /* CJK COMPATIBILITY IDEOGRAPH has been tested in Unicode 5 New char */ | |
| 2243 | } | |
| 2244 | ||
| 2245 | GLDEF_C TInt E32Main(void) | |
| 2246 |     {
 | |
| 2247 | ||
| 2248 | test.Title(); | |
| 2249 | 	test.Start(_L("TCHAR TESTING"));
 | |
| 2250 | ||
| 2251 | test_unicode_chars(); | |
| 2252 | test_unicode_collations(); | |
| 2253 | ||
| 2254 | 	test.Next(_L("TChar"));
 | |
| 2255 | TestTChar<TChar> t; | |
| 2256 | t.Test1(); | |
| 2257 | t.Test2(eTChar); | |
| 2258 | t.Test3(eTChar); | |
| 2259 | t.Test4(eTChar); | |
| 2260 | ||
| 2261 | 	test.Next(_L("TCharF"));
 | |
| 2262 | TestTChar<TCharF> f; | |
| 2263 | f.Test2(eTCharF); | |
| 2264 | f.Test3(eTCharF); | |
| 2265 | f.Test4(eTCharF); | |
| 2266 | ||
| 2267 | 	test.Next(_L("TCharLC"));
 | |
| 2268 | TestTChar<TCharLC> lc; | |
| 2269 | lc.Test2(eTCharLC); | |
| 2270 | lc.Test3(eTCharLC); | |
| 2271 | lc.Test4(eTCharLC); | |
| 2272 | ||
| 2273 | 	test.Next(_L("TCharUC"));
 | |
| 2274 | TestTChar<TCharUC> uc; | |
| 2275 | uc.Test2(eTCharUC); | |
| 2276 | uc.Test3(eTCharUC); | |
| 2277 | uc.Test4(eTCharUC); | |
| 2278 | ||
| 2279 | 	test.Next(_L("Unicode 5 New"));
 | |
| 2280 | Unicode5NewCharTest(); | |
| 2281 | test_unicode5_new_chars(); | |
| 2282 | ||
| 2283 | 	test.Next(_L("GB18030 One and Four Bytes Character"));
 | |
| 2284 | GB18030OneByteCharTest(); | |
| 2285 | GB18030FourBytesCharTest(); | |
| 2286 | ||
| 2287 | test.End(); | |
| 2288 | return(KErrNone); | |
| 2289 | } | |
| 2290 | ||
| 2291 | #pragma warning ( default :4700) | |
| 2292 | #pragma warning ( default :4710) |