Index: generators/TableGenerator.h ================================================================== --- generators/TableGenerator.h +++ generators/TableGenerator.h @@ -16,21 +16,24 @@ #import "OFString.h" @interface TableGenerator: OFObject { - of_unichar_t upperTable[0x110000]; - of_unichar_t lowerTable[0x110000]; + of_unichar_t uppercaseTable[0x110000]; + of_unichar_t lowercaseTable[0x110000]; + of_unichar_t titlecaseTable[0x110000]; of_unichar_t casefoldingTable[0x110000]; - BOOL upperTableUsed[0x1100]; - BOOL lowerTableUsed[0x1100]; + BOOL uppercaseTableUsed[0x1100]; + BOOL lowercaseTableUsed[0x1100]; + char titlecaseTableUsed[0x1100]; char casefoldingTableUsed[0x1100]; - size_t upperTableSize; - size_t lowerTableSize; + size_t uppercaseTableSize; + size_t lowercaseTableSize; + size_t titlecaseTableSize; size_t casefoldingTableSize; } - (void)readUnicodeDataFileAtPath: (OFString*)path; - (void)readCaseFoldingFileAtPath: (OFString*)path; - (void)writeTablesToFileAtPath: (OFString*)path; - (void)writeHeaderToFileAtPath: (OFString*)path; @end Index: generators/TableGenerator.m ================================================================== --- generators/TableGenerator.m +++ generators/TableGenerator.m @@ -32,12 +32,13 @@ @implementation TableGenerator - init { self = [super init]; - upperTableSize = SIZE_MAX; - lowerTableSize = SIZE_MAX; + uppercaseTableSize = SIZE_MAX; + lowercaseTableSize = SIZE_MAX; + titlecaseTableSize = SIZE_MAX; casefoldingTableSize = SIZE_MAX; return self; } @@ -71,14 +72,16 @@ [OFApplication terminateWithStatus: 1]; } splitObjects = [split objects]; codep = (of_unichar_t)[splitObjects[0] hexadecimalValue]; - upperTable[codep] = + uppercaseTable[codep] = (of_unichar_t)[splitObjects[12] hexadecimalValue]; - lowerTable[codep] = + lowercaseTable[codep] = (of_unichar_t)[splitObjects[13] hexadecimalValue]; + titlecaseTable[codep] = + (of_unichar_t)[splitObjects[14] hexadecimalValue]; [pool2 releaseObjects]; } [pool release]; @@ -135,81 +138,128 @@ @"#import \"OFString.h\"\n\n" @"static const of_unichar_t nop_page[0x100] = {};\n\n"]; pool2 = [[OFAutoreleasePool alloc] init]; - /* Write upper_page_%u */ + /* Write uppercase_page_%u */ + for (i = 0; i < 0x110000; i += 0x100) { + BOOL isEmpty = YES; + + for (j = i; j < i + 0x100; j++) { + if (uppercaseTable[j] != 0) { + isEmpty = NO; + uppercaseTableSize = i >> 8; + uppercaseTableUsed[uppercaseTableSize] = YES; + break; + } + } + + if (!isEmpty) { + [file writeString: [OFString stringWithFormat: + @"static const of_unichar_t " + @"uppercase_page_%u[0x100] = {\n", i >> 8]]; + + for (j = i; j < i + 0x100; j += 8) + [file writeString: [OFString stringWithFormat: + @"\t%u, %u, %u, %u, %u, %u, %u, %u,\n", + uppercaseTable[j], + uppercaseTable[j + 1], + uppercaseTable[j + 2], + uppercaseTable[j + 3], + uppercaseTable[j + 4], + uppercaseTable[j + 5], + uppercaseTable[j + 6], + uppercaseTable[j + 7]]]; + + [file writeString: @"};\n\n"]; + + [pool2 releaseObjects]; + } + } + + /* Write lowercase_page_%u */ for (i = 0; i < 0x110000; i += 0x100) { BOOL isEmpty = YES; for (j = i; j < i + 0x100; j++) { - if (upperTable[j] != 0) { + if (lowercaseTable[j] != 0) { isEmpty = NO; - upperTableSize = i >> 8; - upperTableUsed[upperTableSize] = YES; + lowercaseTableSize = i >> 8; + lowercaseTableUsed[lowercaseTableSize] = YES; break; } } if (!isEmpty) { [file writeString: [OFString stringWithFormat: - @"static const of_unichar_t upper_page_%u[0x100] = " - @"{\n", i >> 8]]; + @"static const of_unichar_t " + @"lowercase_page_%u[0x100] = {\n", i >> 8]]; for (j = i; j < i + 0x100; j += 8) [file writeString: [OFString stringWithFormat: @"\t%u, %u, %u, %u, %u, %u, %u, %u,\n", - upperTable[j], upperTable[j + 1], - upperTable[j + 2], upperTable[j + 3], - upperTable[j + 4], upperTable[j + 5], - upperTable[j + 6], upperTable[j + 7]]]; + lowercaseTable[j], + lowercaseTable[j + 1], + lowercaseTable[j + 2], + lowercaseTable[j + 3], + lowercaseTable[j + 4], + lowercaseTable[j + 5], + lowercaseTable[j + 6], + lowercaseTable[j + 7]]]; [file writeString: @"};\n\n"]; [pool2 releaseObjects]; } } - /* Write lower_page_%u */ + /* Write titlecase_page_%u if it does NOT match uppercase_page_%u */ for (i = 0; i < 0x110000; i += 0x100) { BOOL isEmpty = YES; for (j = i; j < i + 0x100; j++) { - if (lowerTable[j] != 0) { - isEmpty = NO; - lowerTableSize = i >> 8; - lowerTableUsed[lowerTableSize] = YES; + if (titlecaseTable[j] != 0) { + isEmpty = (memcmp(uppercaseTable + i, + titlecaseTable + i, + 256 * sizeof(of_unichar_t)) ? NO : YES); + titlecaseTableSize = i >> 8; + titlecaseTableUsed[titlecaseTableSize] = + (isEmpty ? 2 : 1); break; } } if (!isEmpty) { [file writeString: [OFString stringWithFormat: - @"static const of_unichar_t lower_page_%u[0x100] = " - @"{\n", i >> 8]]; + @"static const of_unichar_t " + @"titlecase_page_%u[0x100] = {\n", i >> 8]]; for (j = i; j < i + 0x100; j += 8) [file writeString: [OFString stringWithFormat: @"\t%u, %u, %u, %u, %u, %u, %u, %u,\n", - lowerTable[j], lowerTable[j + 1], - lowerTable[j + 2], lowerTable[j + 3], - lowerTable[j + 4], lowerTable[j + 5], - lowerTable[j + 6], lowerTable[j + 7]]]; + titlecaseTable[j], + titlecaseTable[j + 1], + titlecaseTable[j + 2], + titlecaseTable[j + 3], + titlecaseTable[j + 4], + titlecaseTable[j + 5], + titlecaseTable[j + 6], + titlecaseTable[j + 7]]]; [file writeString: @"};\n\n"]; [pool2 releaseObjects]; } } - /* Write cf_page_%u if it does NOT match lower_page_%u */ + /* Write casefolding_page_%u if it does NOT match lowercase_page_%u */ for (i = 0; i < 0x110000; i += 0x100) { BOOL isEmpty = YES; for (j = i; j < i + 0x100; j++) { if (casefoldingTable[j] != 0) { - isEmpty = (memcmp(lowerTable + i, + isEmpty = (memcmp(lowercaseTable + i, casefoldingTable + i, 256 * sizeof(of_unichar_t)) ? NO : YES); casefoldingTableSize = i >> 8; casefoldingTableUsed[casefoldingTableSize] = (isEmpty ? 2 : 1); @@ -217,12 +267,12 @@ } } if (!isEmpty) { [file writeString: [OFString stringWithFormat: - @"static const of_unichar_t cf_page_%u[0x100] = {" - @"\n", i >> 8]]; + @"static const of_unichar_t " + @"casefolding_page_%u[0x100] = {\n", i >> 8]]; for (j = i; j < i + 0x100; j += 8) [file writeString: [OFString stringWithFormat: @"\t%u, %u, %u, %u, %u, %u, %u, %u,\n", casefoldingTable[j], @@ -242,51 +292,78 @@ /* * Those are currently set to the last index. * But from now on, we need the size. */ - upperTableSize++; - lowerTableSize++; + uppercaseTableSize++; + lowercaseTableSize++; + titlecaseTableSize++; casefoldingTableSize++; - /* Write of_unicode_upper_table */ - [file writeString: [OFString stringWithFormat: - @"const of_unichar_t* const of_unicode_upper_table[0x%X] = {\n\t", - upperTableSize]]; - - for (i = 0; i < upperTableSize; i++) { - if (upperTableUsed[i]) { - [file writeString: [OFString stringWithFormat: - @"upper_page_%u", i]]; + /* Write of_unicode_uppercase_table */ + [file writeString: [OFString stringWithFormat: + @"const of_unichar_t* const of_unicode_uppercase_table[0x%X] = " + @"{\n\t", uppercaseTableSize]]; + + for (i = 0; i < uppercaseTableSize; i++) { + if (uppercaseTableUsed[i]) { + [file writeString: [OFString stringWithFormat: + @"uppercase_page_%u", i]]; + [pool2 releaseObjects]; + } else + [file writeString: @"nop_page"]; + + if (i + 1 < uppercaseTableSize) { + if ((i + 1) % 4 == 0) + [file writeString: @",\n\t"]; + else + [file writeString: @", "]; + } + } + + [file writeString: @"\n};\n\n"]; + + /* Write of_unicode_lowercase_table */ + [file writeString: [OFString stringWithFormat: + @"const of_unichar_t* const of_unicode_lowercase_table[0x%X] = " + @"{\n\t", lowercaseTableSize]]; + + for (i = 0; i < lowercaseTableSize; i++) { + if (lowercaseTableUsed[i]) { + [file writeString: [OFString stringWithFormat: + @"lowercase_page_%u", i]]; [pool2 releaseObjects]; } else [file writeString: @"nop_page"]; - if (i + 1 < upperTableSize) { + if (i + 1 < lowercaseTableSize) { if ((i + 1) % 4 == 0) [file writeString: @",\n\t"]; else [file writeString: @", "]; } } [file writeString: @"\n};\n\n"]; - /* Write of_unicode_lower_table */ - [file writeString: [OFString stringWithFormat: - @"const of_unichar_t* const of_unicode_lower_table[0x%X] = {\n\t", - lowerTableSize]]; - - for (i = 0; i < lowerTableSize; i++) { - if (lowerTableUsed[i]) { - [file writeString: [OFString stringWithFormat: - @"lower_page_%u", i]]; - [pool2 releaseObjects]; + /* Write of_unicode_titlecase_table */ + [file writeString: [OFString stringWithFormat: + @"const of_unichar_t* const of_unicode_titlecase_table[0x%X] = {" + @"\n\t", titlecaseTableSize]]; + + for (i = 0; i < titlecaseTableSize; i++) { + if (titlecaseTableUsed[i] == 1) { + [file writeString: [OFString stringWithFormat: + @"titlecase_page_%u", i]]; + [pool2 releaseObjects]; + } else if (titlecaseTableUsed[i] == 2) { + [file writeString: [OFString stringWithFormat: + @"uppercase_page_%u", i]]; } else [file writeString: @"nop_page"]; - if (i + 1 < lowerTableSize) { + if (i + 1 < titlecaseTableSize) { if ((i + 1) % 4 == 0) [file writeString: @",\n\t"]; else [file writeString: @", "]; } @@ -294,26 +371,26 @@ [file writeString: @"\n};\n\n"]; /* Write of_unicode_casefolding_table */ [file writeString: [OFString stringWithFormat: - @"const of_unichar_t* const of_unicode_casefolding_table[0x%X] = {" - @"\n\t", casefoldingTableSize]]; + @"const of_unichar_t* const of_unicode_casefolding_table[0x%X] = " + @"{\n\t", casefoldingTableSize]]; for (i = 0; i < casefoldingTableSize; i++) { if (casefoldingTableUsed[i] == 1) { [file writeString: [OFString stringWithFormat: - @"cf_page_%u", i]]; + @"casefolding_page_%u", i]]; [pool2 releaseObjects]; } else if (casefoldingTableUsed[i] == 2) { [file writeString: [OFString stringWithFormat: - @"lower_page_%u", i]]; + @"lowercase_page_%u", i]]; } else [file writeString: @"nop_page"]; if (i + 1 < casefoldingTableSize) { - if ((i + 1) % 4 == 0) + if ((i + 1) % 3 == 0) [file writeString: @",\n\t"]; else [file writeString: @", "]; } } @@ -331,23 +408,30 @@ [file writeString: COPYRIGHT @"#import \"OFString.h\"\n\n"]; [file writeString: [OFString stringWithFormat: - @"#define OF_UNICODE_UPPER_TABLE_SIZE 0x%X\n" - @"#define OF_UNICODE_LOWER_TABLE_SIZE 0x%X\n" + @"#define OF_UNICODE_UPPERCASE_TABLE_SIZE 0x%X\n" + @"#define OF_UNICODE_LOWERCASE_TABLE_SIZE 0x%X\n" + @"#define OF_UNICODE_TITLECASE_TABLE_SIZE 0x%X\n" @"#define OF_UNICODE_CASEFOLDING_TABLE_SIZE 0x%X\n\n", - upperTableSize, lowerTableSize, casefoldingTableSize]]; + uppercaseTableSize, lowercaseTableSize, titlecaseTableSize, + casefoldingTableSize]]; [file writeString: @"#ifdef __cplusplus\n" @"extern \"C\" {\n" @"#endif\n" @"extern const of_unichar_t* const\n" - @" of_unicode_upper_table[OF_UNICODE_UPPER_TABLE_SIZE];\n" + @" of_unicode_uppercase_table[" + @"OF_UNICODE_UPPERCASE_TABLE_SIZE];\n" + @"extern const of_unichar_t* const\n" + @" of_unicode_lowercase_table[" + @"OF_UNICODE_LOWERCASE_TABLE_SIZE];\n" @"extern const of_unichar_t* const\n" - @" of_unicode_lower_table[OF_UNICODE_LOWER_TABLE_SIZE];\n" + @" of_unicode_titlecase_table[" + @"OF_UNICODE_TITLECASE_TABLE_SIZE];\n" @"extern const of_unichar_t* const\n" @" of_unicode_casefolding_table[" @"OF_UNICODE_CASEFOLDING_TABLE_SIZE];\n" @"#ifdef __cplusplus\n" @"}\n" Index: src/OFMutableString.m ================================================================== --- src/OFMutableString.m +++ src/OFMutableString.m @@ -380,18 +380,18 @@ } } - (void)upper { - [self _applyTable: of_unicode_upper_table - withSize: OF_UNICODE_UPPER_TABLE_SIZE]; + [self _applyTable: of_unicode_uppercase_table + withSize: OF_UNICODE_UPPERCASE_TABLE_SIZE]; } - (void)lower { - [self _applyTable: of_unicode_lower_table - withSize: OF_UNICODE_LOWER_TABLE_SIZE]; + [self _applyTable: of_unicode_lowercase_table + withSize: OF_UNICODE_LOWERCASE_TABLE_SIZE]; } - (void)insertString: (OFString*)string atIndex: (size_t)index { Index: src/unicode.h ================================================================== --- src/unicode.h +++ src/unicode.h @@ -14,21 +14,24 @@ * file. */ #import "OFString.h" -#define OF_UNICODE_UPPER_TABLE_SIZE 0x105 -#define OF_UNICODE_LOWER_TABLE_SIZE 0x105 +#define OF_UNICODE_UPPERCASE_TABLE_SIZE 0x105 +#define OF_UNICODE_LOWERCASE_TABLE_SIZE 0x105 +#define OF_UNICODE_TITLECASE_TABLE_SIZE 0x105 #define OF_UNICODE_CASEFOLDING_TABLE_SIZE 0x105 #ifdef __cplusplus extern "C" { #endif extern const of_unichar_t* const - of_unicode_upper_table[OF_UNICODE_UPPER_TABLE_SIZE]; + of_unicode_uppercase_table[OF_UNICODE_UPPERCASE_TABLE_SIZE]; +extern const of_unichar_t* const + of_unicode_lowercase_table[OF_UNICODE_LOWERCASE_TABLE_SIZE]; extern const of_unichar_t* const - of_unicode_lower_table[OF_UNICODE_LOWER_TABLE_SIZE]; + of_unicode_titlecase_table[OF_UNICODE_TITLECASE_TABLE_SIZE]; extern const of_unichar_t* const of_unicode_casefolding_table[OF_UNICODE_CASEFOLDING_TABLE_SIZE]; #ifdef __cplusplus } #endif Index: src/unicode.m ================================================================== --- src/unicode.m +++ src/unicode.m @@ -18,11 +18,11 @@ #import "OFString.h" static const of_unichar_t nop_page[0x100] = {}; -static const of_unichar_t upper_page_0[0x100] = { +static const of_unichar_t uppercase_page_0[0x100] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -53,11 +53,11 @@ 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 0, 216, 217, 218, 219, 220, 221, 222, 376, }; -static const of_unichar_t upper_page_1[0x100] = { +static const of_unichar_t uppercase_page_1[0x100] = { 0, 256, 0, 258, 0, 260, 0, 262, 0, 264, 0, 266, 0, 268, 0, 270, 0, 272, 0, 274, 0, 276, 0, 278, 0, 280, 0, 282, 0, 284, 0, 286, 0, 288, 0, 290, 0, 292, 0, 294, @@ -88,11 +88,11 @@ 0, 488, 0, 490, 0, 492, 0, 494, 0, 0, 497, 497, 0, 500, 0, 0, 0, 504, 0, 506, 0, 508, 0, 510, }; -static const of_unichar_t upper_page_2[0x100] = { +static const of_unichar_t uppercase_page_2[0x100] = { 0, 512, 0, 514, 0, 516, 0, 518, 0, 520, 0, 522, 0, 524, 0, 526, 0, 528, 0, 530, 0, 532, 0, 534, 0, 536, 0, 538, 0, 540, 0, 542, 0, 0, 0, 546, 0, 548, 0, 550, @@ -123,11 +123,11 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; -static const of_unichar_t upper_page_3[0x100] = { +static const of_unichar_t uppercase_page_3[0x100] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -158,11 +158,11 @@ 0, 1000, 0, 1002, 0, 1004, 0, 1006, 922, 929, 1017, 0, 0, 917, 0, 0, 1015, 0, 0, 1018, 0, 0, 0, 0, }; -static const of_unichar_t upper_page_4[0x100] = { +static const of_unichar_t uppercase_page_4[0x100] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -193,11 +193,11 @@ 0, 1256, 0, 1258, 0, 1260, 0, 1262, 0, 1264, 0, 1266, 0, 1268, 0, 1270, 0, 1272, 0, 1274, 0, 1276, 0, 1278, }; -static const of_unichar_t upper_page_5[0x100] = { +static const of_unichar_t uppercase_page_5[0x100] = { 0, 1280, 0, 1282, 0, 1284, 0, 1286, 0, 1288, 0, 1290, 0, 1292, 0, 1294, 0, 1296, 0, 1298, 0, 1300, 0, 1302, 0, 1304, 0, 1306, 0, 1308, 0, 1310, 0, 1312, 0, 1314, 0, 1316, 0, 1318, @@ -228,11 +228,11 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; -static const of_unichar_t upper_page_29[0x100] = { +static const of_unichar_t uppercase_page_29[0x100] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -263,11 +263,11 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; -static const of_unichar_t upper_page_30[0x100] = { +static const of_unichar_t uppercase_page_30[0x100] = { 0, 7680, 0, 7682, 0, 7684, 0, 7686, 0, 7688, 0, 7690, 0, 7692, 0, 7694, 0, 7696, 0, 7698, 0, 7700, 0, 7702, 0, 7704, 0, 7706, 0, 7708, 0, 7710, 0, 7712, 0, 7714, 0, 7716, 0, 7718, @@ -298,11 +298,11 @@ 0, 7912, 0, 7914, 0, 7916, 0, 7918, 0, 7920, 0, 7922, 0, 7924, 0, 7926, 0, 7928, 0, 7930, 0, 7932, 0, 7934, }; -static const of_unichar_t upper_page_31[0x100] = { +static const of_unichar_t uppercase_page_31[0x100] = { 7944, 7945, 7946, 7947, 7948, 7949, 7950, 7951, 0, 0, 0, 0, 0, 0, 0, 0, 7960, 7961, 7962, 7963, 7964, 7965, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7976, 7977, 7978, 7979, 7980, 7981, 7982, 7983, @@ -333,11 +333,11 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; -static const of_unichar_t upper_page_33[0x100] = { +static const of_unichar_t uppercase_page_33[0x100] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -368,11 +368,11 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; -static const of_unichar_t upper_page_36[0x100] = { +static const of_unichar_t uppercase_page_36[0x100] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -403,11 +403,11 @@ 9422, 9423, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; -static const of_unichar_t upper_page_44[0x100] = { +static const of_unichar_t uppercase_page_44[0x100] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -438,11 +438,11 @@ 0, 0, 0, 0, 11499, 0, 11501, 0, 0, 0, 0, 11506, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; -static const of_unichar_t upper_page_45[0x100] = { +static const of_unichar_t uppercase_page_45[0x100] = { 4256, 4257, 4258, 4259, 4260, 4261, 4262, 4263, 4264, 4265, 4266, 4267, 4268, 4269, 4270, 4271, 4272, 4273, 4274, 4275, 4276, 4277, 4278, 4279, 4280, 4281, 4282, 4283, 4284, 4285, 4286, 4287, 4288, 4289, 4290, 4291, 4292, 4293, 0, 4295, @@ -473,11 +473,11 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; -static const of_unichar_t upper_page_166[0x100] = { +static const of_unichar_t uppercase_page_166[0x100] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -508,11 +508,11 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; -static const of_unichar_t upper_page_167[0x100] = { +static const of_unichar_t uppercase_page_167[0x100] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42786, 0, 42788, 0, 42790, @@ -543,11 +543,11 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; -static const of_unichar_t upper_page_255[0x100] = { +static const of_unichar_t uppercase_page_255[0x100] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -578,11 +578,11 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; -static const of_unichar_t upper_page_260[0x100] = { +static const of_unichar_t uppercase_page_260[0x100] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -613,11 +613,11 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; -static const of_unichar_t lower_page_0[0x100] = { +static const of_unichar_t lowercase_page_0[0x100] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -648,11 +648,11 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; -static const of_unichar_t lower_page_1[0x100] = { +static const of_unichar_t lowercase_page_1[0x100] = { 257, 0, 259, 0, 261, 0, 263, 0, 265, 0, 267, 0, 269, 0, 271, 0, 273, 0, 275, 0, 277, 0, 279, 0, 281, 0, 283, 0, 285, 0, 287, 0, 289, 0, 291, 0, 293, 0, 295, 0, @@ -683,11 +683,11 @@ 489, 0, 491, 0, 493, 0, 495, 0, 0, 499, 499, 0, 501, 0, 405, 447, 505, 0, 507, 0, 509, 0, 511, 0, }; -static const of_unichar_t lower_page_2[0x100] = { +static const of_unichar_t lowercase_page_2[0x100] = { 513, 0, 515, 0, 517, 0, 519, 0, 521, 0, 523, 0, 525, 0, 527, 0, 529, 0, 531, 0, 533, 0, 535, 0, 537, 0, 539, 0, 541, 0, 543, 0, 414, 0, 547, 0, 549, 0, 551, 0, @@ -718,11 +718,11 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; -static const of_unichar_t lower_page_3[0x100] = { +static const of_unichar_t lowercase_page_3[0x100] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -753,11 +753,11 @@ 1001, 0, 1003, 0, 1005, 0, 1007, 0, 0, 0, 0, 0, 952, 0, 0, 1016, 0, 1010, 1019, 0, 0, 891, 892, 893, }; -static const of_unichar_t lower_page_4[0x100] = { +static const of_unichar_t lowercase_page_4[0x100] = { 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, @@ -788,11 +788,11 @@ 1257, 0, 1259, 0, 1261, 0, 1263, 0, 1265, 0, 1267, 0, 1269, 0, 1271, 0, 1273, 0, 1275, 0, 1277, 0, 1279, 0, }; -static const of_unichar_t lower_page_5[0x100] = { +static const of_unichar_t lowercase_page_5[0x100] = { 1281, 0, 1283, 0, 1285, 0, 1287, 0, 1289, 0, 1291, 0, 1293, 0, 1295, 0, 1297, 0, 1299, 0, 1301, 0, 1303, 0, 1305, 0, 1307, 0, 1309, 0, 1311, 0, 1313, 0, 1315, 0, 1317, 0, 1319, 0, @@ -823,11 +823,11 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; -static const of_unichar_t lower_page_16[0x100] = { +static const of_unichar_t lowercase_page_16[0x100] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -858,11 +858,11 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; -static const of_unichar_t lower_page_30[0x100] = { +static const of_unichar_t lowercase_page_30[0x100] = { 7681, 0, 7683, 0, 7685, 0, 7687, 0, 7689, 0, 7691, 0, 7693, 0, 7695, 0, 7697, 0, 7699, 0, 7701, 0, 7703, 0, 7705, 0, 7707, 0, 7709, 0, 7711, 0, 7713, 0, 7715, 0, 7717, 0, 7719, 0, @@ -893,11 +893,11 @@ 7913, 0, 7915, 0, 7917, 0, 7919, 0, 7921, 0, 7923, 0, 7925, 0, 7927, 0, 7929, 0, 7931, 0, 7933, 0, 7935, 0, }; -static const of_unichar_t lower_page_31[0x100] = { +static const of_unichar_t lowercase_page_31[0x100] = { 0, 0, 0, 0, 0, 0, 0, 0, 7936, 7937, 7938, 7939, 7940, 7941, 7942, 7943, 0, 0, 0, 0, 0, 0, 0, 0, 7952, 7953, 7954, 7955, 7956, 7957, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -928,11 +928,11 @@ 8160, 8161, 8058, 8059, 8165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8056, 8057, 8060, 8061, 8179, 0, 0, 0, }; -static const of_unichar_t lower_page_33[0x100] = { +static const of_unichar_t lowercase_page_33[0x100] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 969, 0, @@ -963,11 +963,11 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; -static const of_unichar_t lower_page_36[0x100] = { +static const of_unichar_t lowercase_page_36[0x100] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -998,11 +998,11 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; -static const of_unichar_t lower_page_44[0x100] = { +static const of_unichar_t lowercase_page_44[0x100] = { 11312, 11313, 11314, 11315, 11316, 11317, 11318, 11319, 11320, 11321, 11322, 11323, 11324, 11325, 11326, 11327, 11328, 11329, 11330, 11331, 11332, 11333, 11334, 11335, 11336, 11337, 11338, 11339, 11340, 11341, 11342, 11343, 11344, 11345, 11346, 11347, 11348, 11349, 11350, 11351, @@ -1033,11 +1033,11 @@ 0, 0, 0, 11500, 0, 11502, 0, 0, 0, 0, 11507, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; -static const of_unichar_t lower_page_166[0x100] = { +static const of_unichar_t lowercase_page_166[0x100] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1068,11 +1068,11 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; -static const of_unichar_t lower_page_167[0x100] = { +static const of_unichar_t lowercase_page_167[0x100] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42787, 0, 42789, 0, 42791, 0, @@ -1103,11 +1103,11 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; -static const of_unichar_t lower_page_255[0x100] = { +static const of_unichar_t lowercase_page_255[0x100] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65345, 65346, 65347, 65348, 65349, 65350, 65351, @@ -1138,11 +1138,11 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; -static const of_unichar_t lower_page_260[0x100] = { +static const of_unichar_t lowercase_page_260[0x100] = { 66600, 66601, 66602, 66603, 66604, 66605, 66606, 66607, 66608, 66609, 66610, 66611, 66612, 66613, 66614, 66615, 66616, 66617, 66618, 66619, 66620, 66621, 66622, 66623, 66624, 66625, 66626, 66627, 66628, 66629, 66630, 66631, 66632, 66633, 66634, 66635, 66636, 66637, 66638, 66639, @@ -1173,11 +1173,46 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; -static const of_unichar_t cf_page_0[0x100] = { +static const of_unichar_t titlecase_page_1[0x100] = { + 0, 256, 0, 258, 0, 260, 0, 262, + 0, 264, 0, 266, 0, 268, 0, 270, + 0, 272, 0, 274, 0, 276, 0, 278, + 0, 280, 0, 282, 0, 284, 0, 286, + 0, 288, 0, 290, 0, 292, 0, 294, + 0, 296, 0, 298, 0, 300, 0, 302, + 0, 73, 0, 306, 0, 308, 0, 310, + 0, 0, 313, 0, 315, 0, 317, 0, + 319, 0, 321, 0, 323, 0, 325, 0, + 327, 0, 0, 330, 0, 332, 0, 334, + 0, 336, 0, 338, 0, 340, 0, 342, + 0, 344, 0, 346, 0, 348, 0, 350, + 0, 352, 0, 354, 0, 356, 0, 358, + 0, 360, 0, 362, 0, 364, 0, 366, + 0, 368, 0, 370, 0, 372, 0, 374, + 0, 0, 377, 0, 379, 0, 381, 83, + 579, 0, 0, 386, 0, 388, 0, 0, + 391, 0, 0, 0, 395, 0, 0, 0, + 0, 0, 401, 0, 0, 502, 0, 0, + 0, 408, 573, 0, 0, 0, 544, 0, + 0, 416, 0, 418, 0, 420, 0, 0, + 423, 0, 0, 0, 0, 428, 0, 0, + 431, 0, 0, 0, 435, 0, 437, 0, + 0, 440, 0, 0, 0, 444, 0, 503, + 0, 0, 0, 0, 453, 453, 453, 456, + 456, 456, 459, 459, 459, 0, 461, 0, + 463, 0, 465, 0, 467, 0, 469, 0, + 471, 0, 473, 0, 475, 398, 0, 478, + 0, 480, 0, 482, 0, 484, 0, 486, + 0, 488, 0, 490, 0, 492, 0, 494, + 0, 498, 498, 498, 0, 500, 0, 0, + 0, 504, 0, 506, 0, 508, 0, 510, +}; + +static const of_unichar_t casefolding_page_0[0x100] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1208,11 +1243,11 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; -static const of_unichar_t cf_page_1[0x100] = { +static const of_unichar_t casefolding_page_1[0x100] = { 257, 0, 259, 0, 261, 0, 263, 0, 265, 0, 267, 0, 269, 0, 271, 0, 273, 0, 275, 0, 277, 0, 279, 0, 281, 0, 283, 0, 285, 0, 287, 0, 289, 0, 291, 0, 293, 0, 295, 0, @@ -1243,11 +1278,11 @@ 489, 0, 491, 0, 493, 0, 495, 0, 0, 499, 499, 0, 501, 0, 405, 447, 505, 0, 507, 0, 509, 0, 511, 0, }; -static const of_unichar_t cf_page_3[0x100] = { +static const of_unichar_t casefolding_page_3[0x100] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1278,11 +1313,11 @@ 1001, 0, 1003, 0, 1005, 0, 1007, 0, 954, 961, 0, 0, 952, 949, 0, 1016, 0, 1010, 1019, 0, 0, 891, 892, 893, }; -static const of_unichar_t cf_page_30[0x100] = { +static const of_unichar_t casefolding_page_30[0x100] = { 7681, 0, 7683, 0, 7685, 0, 7687, 0, 7689, 0, 7691, 0, 7693, 0, 7695, 0, 7697, 0, 7699, 0, 7701, 0, 7703, 0, 7705, 0, 7707, 0, 7709, 0, 7711, 0, 7713, 0, 7715, 0, 7717, 0, 7719, 0, @@ -1313,11 +1348,11 @@ 7913, 0, 7915, 0, 7917, 0, 7919, 0, 7921, 0, 7923, 0, 7925, 0, 7927, 0, 7929, 0, 7931, 0, 7933, 0, 7935, 0, }; -static const of_unichar_t cf_page_31[0x100] = { +static const of_unichar_t casefolding_page_31[0x100] = { 0, 0, 0, 0, 0, 0, 0, 0, 7936, 7937, 7938, 7939, 7940, 7941, 7942, 7943, 0, 0, 0, 0, 0, 0, 0, 0, 7952, 7953, 7954, 7955, 7956, 7957, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1348,211 +1383,301 @@ 8160, 8161, 8058, 8059, 8165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8056, 8057, 8060, 8061, 8179, 0, 0, 0, }; -const of_unichar_t* const of_unicode_upper_table[0x105] = { - upper_page_0, upper_page_1, upper_page_2, upper_page_3, - upper_page_4, upper_page_5, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, upper_page_29, upper_page_30, upper_page_31, - nop_page, upper_page_33, nop_page, nop_page, - upper_page_36, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - upper_page_44, upper_page_45, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, upper_page_166, upper_page_167, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, upper_page_255, - nop_page, nop_page, nop_page, nop_page, - upper_page_260 +const of_unichar_t* const of_unicode_uppercase_table[0x105] = { + uppercase_page_0, uppercase_page_1, uppercase_page_2, uppercase_page_3, + uppercase_page_4, uppercase_page_5, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, uppercase_page_29, uppercase_page_30, uppercase_page_31, + nop_page, uppercase_page_33, nop_page, nop_page, + uppercase_page_36, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + uppercase_page_44, uppercase_page_45, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, uppercase_page_166, uppercase_page_167, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, uppercase_page_255, + nop_page, nop_page, nop_page, nop_page, + uppercase_page_260 +}; + +const of_unichar_t* const of_unicode_lowercase_table[0x105] = { + lowercase_page_0, lowercase_page_1, lowercase_page_2, lowercase_page_3, + lowercase_page_4, lowercase_page_5, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + lowercase_page_16, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, lowercase_page_30, lowercase_page_31, + nop_page, lowercase_page_33, nop_page, nop_page, + lowercase_page_36, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + lowercase_page_44, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, lowercase_page_166, lowercase_page_167, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, lowercase_page_255, + nop_page, nop_page, nop_page, nop_page, + lowercase_page_260 }; -const of_unichar_t* const of_unicode_lower_table[0x105] = { - lower_page_0, lower_page_1, lower_page_2, lower_page_3, - lower_page_4, lower_page_5, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - lower_page_16, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, lower_page_30, lower_page_31, - nop_page, lower_page_33, nop_page, nop_page, - lower_page_36, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - lower_page_44, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, lower_page_166, lower_page_167, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, lower_page_255, - nop_page, nop_page, nop_page, nop_page, - lower_page_260 +const of_unichar_t* const of_unicode_titlecase_table[0x105] = { + uppercase_page_0, titlecase_page_1, uppercase_page_2, uppercase_page_3, + uppercase_page_4, uppercase_page_5, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, uppercase_page_29, uppercase_page_30, uppercase_page_31, + nop_page, uppercase_page_33, nop_page, nop_page, + uppercase_page_36, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + uppercase_page_44, uppercase_page_45, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, uppercase_page_166, uppercase_page_167, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, uppercase_page_255, + nop_page, nop_page, nop_page, nop_page, + uppercase_page_260 }; const of_unichar_t* const of_unicode_casefolding_table[0x105] = { - cf_page_0, cf_page_1, lower_page_2, cf_page_3, - lower_page_4, lower_page_5, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - lower_page_16, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, cf_page_30, cf_page_31, - nop_page, lower_page_33, nop_page, nop_page, - lower_page_36, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - lower_page_44, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, lower_page_166, lower_page_167, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, nop_page, - nop_page, nop_page, nop_page, lower_page_255, - nop_page, nop_page, nop_page, nop_page, - lower_page_260 + casefolding_page_0, casefolding_page_1, lowercase_page_2, + casefolding_page_3, lowercase_page_4, lowercase_page_5, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, lowercase_page_16, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + casefolding_page_30, casefolding_page_31, nop_page, + lowercase_page_33, nop_page, nop_page, + lowercase_page_36, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, lowercase_page_44, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, lowercase_page_166, lowercase_page_167, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + nop_page, nop_page, nop_page, + lowercase_page_255, nop_page, nop_page, + nop_page, nop_page, lowercase_page_260 };