]> arthur.barton.de Git - netatalk.git/commitdiff
Update Unicode support to version 7.0.0
authorRalph Boehme <rb@sernet.de>
Tue, 17 Jun 2014 16:55:02 +0000 (18:55 +0200)
committerRalph Boehme <rb@sernet.de>
Tue, 17 Jun 2014 16:55:02 +0000 (18:55 +0200)
Authored-by: HAT <hat@fa2.so-net.ne.jp>
Reviewed-by: Ralph Boehme <rb@sernet.de>
NEWS
libatalk/unicode/precompose.h
libatalk/unicode/utf16_case.c
libatalk/unicode/utf16_casetable.h

diff --git a/NEWS b/NEWS
index 10b6b61d405bb5e53b271efbfcc761e7326a5bcc..b42830e86110e36b098de9c876647c8c5f5252e8 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -4,6 +4,7 @@ Changes in 3.1.3
 * UPD: Spotlight: new options "sparql results limit", "spotlight
        attributes" and "spotlight expr"
 * FIX: afpd: Unarchiving certain ZIP archives fails, bug #569
+* UPD: Update Unicode support to version 7.0.0
 
 Changes in 3.1.2
 ================
index 256c1fae06cbb849bf7e20f5d9b60c2f4cbfc9f7..cbf1a3970eac32f67d4285bdd134ceb6693c0623 100644 (file)
@@ -19,8 +19,8 @@
 #define DECOMP_COUNT 955
 #define MAXCOMBLEN 3
 
-#define PRECOMP_SP_COUNT 18
-#define DECOMP_SP_COUNT 18
+#define PRECOMP_SP_COUNT 25
+#define DECOMP_SP_COUNT 25
 #define MAXCOMBSPLEN 4
 
 #define COMBBUFLEN 4  /* max(MAXCOMBLEN,MAXCOMBSPLEN) */
@@ -1035,6 +1035,13 @@ static const struct {
 /*{ 0x000110AB, 0x000110A5, 0x000110BA },*/   /* KAITHI LETTER VA */
 /*{ 0x0001112E, 0x00011131, 0x00011127 },*/   /* CHAKMA VOWEL SIGN O */
 /*{ 0x0001112F, 0x00011132, 0x00011127 },*/   /* CHAKMA VOWEL SIGN AU */
+/*{ 0x0001134B, 0x00011347, 0x0001133E },*/   /* GRANTHA VOWEL SIGN OO */
+/*{ 0x0001134C, 0x00011347, 0x00011357 },*/   /* GRANTHA VOWEL SIGN AU */
+/*{ 0x000114BC, 0x000114B9, 0x000114B0 },*/   /* TIRHUTA VOWEL SIGN O */
+/*{ 0x000114BB, 0x000114B9, 0x000114BA },*/   /* TIRHUTA VOWEL SIGN AI */
+/*{ 0x000114BE, 0x000114B9, 0x000114BD },*/   /* TIRHUTA VOWEL SIGN AU */
+/*{ 0x000115BA, 0x000115B8, 0x000115AF },*/   /* SIDDHAM VOWEL SIGN O */
+/*{ 0x000115BB, 0x000115B9, 0x000115AF },*/   /* SIDDHAM VOWEL SIGN AU */
 /*{ 0x0001D15E, 0x0001D157, 0x0001D165 },*/   /* MUSICAL SYMBOL HALF NOTE */
 /*{ 0x0001D15F, 0x0001D158, 0x0001D165 },*/   /* MUSICAL SYMBOL QUARTER NOTE */
 /*{ 0x0001D160, 0x0001D15F, 0x0001D16E },*/   /* MUSICAL SYMBOL EIGHTH NOTE */
@@ -2060,6 +2067,13 @@ static const struct {
 /*{ 0x000110AB, 0x000110A5, 0x000110BA },*/   /* KAITHI LETTER VA */
 /*{ 0x0001112E, 0x00011131, 0x00011127 },*/   /* CHAKMA VOWEL SIGN O */
 /*{ 0x0001112F, 0x00011132, 0x00011127 },*/   /* CHAKMA VOWEL SIGN AU */
+/*{ 0x0001134B, 0x00011347, 0x0001133E },*/   /* GRANTHA VOWEL SIGN OO */
+/*{ 0x0001134C, 0x00011347, 0x00011357 },*/   /* GRANTHA VOWEL SIGN AU */
+/*{ 0x000114BB, 0x000114B9, 0x000114BA },*/   /* TIRHUTA VOWEL SIGN AI */
+/*{ 0x000114BC, 0x000114B9, 0x000114B0 },*/   /* TIRHUTA VOWEL SIGN O */
+/*{ 0x000114BE, 0x000114B9, 0x000114BD },*/   /* TIRHUTA VOWEL SIGN AU */
+/*{ 0x000115BA, 0x000115B8, 0x000115AF },*/   /* SIDDHAM VOWEL SIGN O */
+/*{ 0x000115BB, 0x000115B9, 0x000115AF },*/   /* SIDDHAM VOWEL SIGN AU */
 /*{ 0x0001D15E, 0x0001D157, 0x0001D165 },*/   /* MUSICAL SYMBOL HALF NOTE */
 /*{ 0x0001D15F, 0x0001D158, 0x0001D165 },*/   /* MUSICAL SYMBOL QUARTER NOTE */
 /*{ 0x0001D160, 0x0001D15F, 0x0001D16E },*/   /* MUSICAL SYMBOL EIGHTH NOTE */
@@ -2085,6 +2099,13 @@ static const struct {
   { 0xD804DCAB, 0xD804DCA5, 0xD804DCBA },     /* KAITHI LETTER VA */
   { 0xD804DD2E, 0xD804DD31, 0xD804DD27 },     /* CHAKMA VOWEL SIGN O */
   { 0xD804DD2F, 0xD804DD32, 0xD804DD27 },     /* CHAKMA VOWEL SIGN AU */
+  { 0xD804DF4B, 0xD804DF47, 0xD804DF3E },     /* GRANTHA VOWEL SIGN OO */
+  { 0xD804DF4C, 0xD804DF47, 0xD804DF57 },     /* GRANTHA VOWEL SIGN AU */
+  { 0xD805DCBC, 0xD805DCB9, 0xD805DCB0 },     /* TIRHUTA VOWEL SIGN O */
+  { 0xD805DCBB, 0xD805DCB9, 0xD805DCBA },     /* TIRHUTA VOWEL SIGN AI */
+  { 0xD805DCBE, 0xD805DCB9, 0xD805DCBD },     /* TIRHUTA VOWEL SIGN AU */
+  { 0xD805DDBA, 0xD805DDB8, 0xD805DDAF },     /* SIDDHAM VOWEL SIGN O */
+  { 0xD805DDBB, 0xD805DDB9, 0xD805DDAF },     /* SIDDHAM VOWEL SIGN AU */
   { 0xD834DD5E, 0xD834DD57, 0xD834DD65 },     /* MUSICAL SYMBOL HALF NOTE */
   { 0xD834DD5F, 0xD834DD58, 0xD834DD65 },     /* MUSICAL SYMBOL QUARTER NOTE */
   { 0xD834DD60, 0xD834DD5F, 0xD834DD6E },     /* MUSICAL SYMBOL EIGHTH NOTE */
@@ -2110,6 +2131,13 @@ static const struct {
   { 0xD804DCAB, 0xD804DCA5, 0xD804DCBA },     /* KAITHI LETTER VA */
   { 0xD804DD2E, 0xD804DD31, 0xD804DD27 },     /* CHAKMA VOWEL SIGN O */
   { 0xD804DD2F, 0xD804DD32, 0xD804DD27 },     /* CHAKMA VOWEL SIGN AU */
+  { 0xD804DF4B, 0xD804DF47, 0xD804DF3E },     /* GRANTHA VOWEL SIGN OO */
+  { 0xD804DF4C, 0xD804DF47, 0xD804DF57 },     /* GRANTHA VOWEL SIGN AU */
+  { 0xD805DCBB, 0xD805DCB9, 0xD805DCBA },     /* TIRHUTA VOWEL SIGN AI */
+  { 0xD805DCBC, 0xD805DCB9, 0xD805DCB0 },     /* TIRHUTA VOWEL SIGN O */
+  { 0xD805DCBE, 0xD805DCB9, 0xD805DCBD },     /* TIRHUTA VOWEL SIGN AU */
+  { 0xD805DDBA, 0xD805DDB8, 0xD805DDAF },     /* SIDDHAM VOWEL SIGN O */
+  { 0xD805DDBB, 0xD805DDB9, 0xD805DDAF },     /* SIDDHAM VOWEL SIGN AU */
   { 0xD834DD5E, 0xD834DD57, 0xD834DD65 },     /* MUSICAL SYMBOL HALF NOTE */
   { 0xD834DD5F, 0xD834DD58, 0xD834DD65 },     /* MUSICAL SYMBOL QUARTER NOTE */
   { 0xD834DD60, 0xD834DD5F, 0xD834DD6E },     /* MUSICAL SYMBOL EIGHTH NOTE */
index 3fc7ed36586081469f0423671d86b7d0ccc6cfea..ca9285cb5d1d6e61a0cbb20c58cc56ce0bc97a7a 100644 (file)
@@ -58,6 +58,9 @@ uint32_t toupper_sp(uint32_t val)
     if ( val >= 0xD801DC00 && val <= 0xD801DC7F)
         return upper_table_sp_1[val-0xD801DC00];
 
+    if ( val >= 0xD806DCC0 && val <= 0xD806DCFF)
+        return upper_table_sp_2[val-0xD806DCC0];
+
        return (val);
 }
 
@@ -110,6 +113,9 @@ uint32_t tolower_sp(uint32_t val)
     if ( val >= 0xD801DC00 && val <= 0xD801DC3F)
         return lower_table_sp_1[val-0xD801DC00];
 
+    if ( val >= 0xD806DC80 && val <= 0xD806DCBF)
+        return lower_table_sp_2[val-0xD806DC80];
+
        return (val);
 }
 
index 188e1ea75fb24df3d57a04bbfa854d5338b9f48f..4d32d78df84e74efc20fc091d851b4989f4807ea 100644 (file)
@@ -613,12 +613,12 @@ static const uint16_t upper_table_1[704] = {
   0x018F, /*U+0259*/ /*LATIN SMALL LETTER SCHWA*/
   0x025A, /*U+025A*/ /**/
   0x0190, /*U+025B*/ /*LATIN SMALL LETTER OPEN E*/
-  0x025C, /*U+025C*/ /**/
+  0xA7AB, /*U+025C*/ /*LATIN SMALL LETTER REVERSED OPEN E*/
   0x025D, /*U+025D*/ /**/
   0x025E, /*U+025E*/ /**/
   0x025F, /*U+025F*/ /**/
   0x0193, /*U+0260*/ /*LATIN SMALL LETTER G WITH HOOK*/
-  0x0261, /*U+0261*/ /**/
+  0xA7AC, /*U+0261*/ /*LATIN SMALL LETTER SCRIPT G*/
   0x0262, /*U+0262*/ /**/
   0x0194, /*U+0263*/ /*LATIN SMALL LETTER GAMMA*/
   0x0264, /*U+0264*/ /**/
@@ -629,7 +629,7 @@ static const uint16_t upper_table_1[704] = {
   0x0196, /*U+0269*/ /*LATIN SMALL LETTER IOTA*/
   0x026A, /*U+026A*/ /**/
   0x2C62, /*U+026B*/ /*LATIN SMALL LETTER L WITH MIDDLE TILDE*/
-  0x026C, /*U+026C*/ /**/
+  0xA7AD, /*U+026C*/ /*LATIN SMALL LETTER L WITH BELT*/
   0x026D, /*U+026D*/ /**/
   0x026E, /*U+026E*/ /**/
   0x019C, /*U+026F*/ /*LATIN SMALL LETTER TURNED M*/
@@ -656,7 +656,7 @@ static const uint16_t upper_table_1[704] = {
   0x0284, /*U+0284*/ /**/
   0x0285, /*U+0285*/ /**/
   0x0286, /*U+0286*/ /**/
-  0x0287, /*U+0287*/ /**/
+  0xA7B1, /*U+0287*/ /*LATIN SMALL LETTER TURNED T*/
   0x01AE, /*U+0288*/ /*LATIN SMALL LETTER T WITH RETROFLEX HOOK*/
   0x0244, /*U+0289*/ /*LATIN SMALL LETTER U BAR*/
   0x01B1, /*U+028A*/ /*LATIN SMALL LETTER UPSILON*/
@@ -679,7 +679,7 @@ static const uint16_t upper_table_1[704] = {
   0x029B, /*U+029B*/ /**/
   0x029C, /*U+029C*/ /**/
   0x029D, /*U+029D*/ /**/
-  0x029E, /*U+029E*/ /**/
+  0xA7B0, /*U+029E*/ /*LATIN SMALL LETTER TURNED K*/
   0x029F, /*U+029F*/ /**/
   0x02A0, /*U+02A0*/ /**/
   0x02A1, /*U+02A1*/ /**/
@@ -895,7 +895,7 @@ static const uint16_t upper_table_2[640] = {
   0x039A, /*U+03F0*/ /*GREEK KAPPA SYMBOL*/
   0x03A1, /*U+03F1*/ /*GREEK RHO SYMBOL*/
   0x03F9, /*U+03F2*/ /*GREEK LUNATE SIGMA SYMBOL*/
-  0x03F3, /*U+03F3*/ /**/
+  0x037F, /*U+03F3*/ /*GREEK LETTER YOT*/
   0x03F4, /*U+03F4*/ /**/
   0x0395, /*U+03F5*/ /*GREEK LUNATE EPSILON SYMBOL*/
   0x03F6, /*U+03F6*/ /**/
@@ -1205,13 +1205,13 @@ static const uint16_t upper_table_2[640] = {
   0x0526, /*U+0526*/ /**/
   0x0526, /*U+0527*/ /*CYRILLIC SMALL LETTER SHHA WITH DESCENDER*/
   0x0528, /*U+0528*/ /**/
-  0x0529, /*U+0529*/ /**/
+  0x0528, /*U+0529*/ /*CYRILLIC SMALL LETTER EN WITH LEFT HOOK*/
   0x052A, /*U+052A*/ /**/
-  0x052B, /*U+052B*/ /**/
+  0x052A, /*U+052B*/ /*CYRILLIC SMALL LETTER DZZHE*/
   0x052C, /*U+052C*/ /**/
-  0x052D, /*U+052D*/ /**/
+  0x052C, /*U+052D*/ /*CYRILLIC SMALL LETTER DCHE*/
   0x052E, /*U+052E*/ /**/
-  0x052F, /*U+052F*/ /**/
+  0x052E, /*U+052F*/ /*CYRILLIC SMALL LETTER EL WITH DESCENDER*/
   0x0530, /*U+0530*/ /**/
   0x0531, /*U+0531*/ /**/
   0x0532, /*U+0532*/ /**/
@@ -2551,9 +2551,9 @@ static const uint16_t upper_table_8[128] = {
   0xA696, /*U+A696*/ /**/
   0xA696, /*U+A697*/ /*CYRILLIC SMALL LETTER SHWE*/
   0xA698, /*U+A698*/ /**/
-  0xA699, /*U+A699*/ /**/
+  0xA698, /*U+A699*/ /*CYRILLIC SMALL LETTER DOUBLE O*/
   0xA69A, /*U+A69A*/ /**/
-  0xA69B, /*U+A69B*/ /**/
+  0xA69A, /*U+A69B*/ /*CYRILLIC SMALL LETTER CROSSED O*/
   0xA69C, /*U+A69C*/ /**/
   0xA69D, /*U+A69D*/ /**/
   0xA69E, /*U+A69E*/ /**/
@@ -2744,15 +2744,15 @@ static const uint16_t upper_table_9[192] = {
   0xA794, /*U+A794*/ /**/
   0xA795, /*U+A795*/ /**/
   0xA796, /*U+A796*/ /**/
-  0xA797, /*U+A797*/ /**/
+  0xA796, /*U+A797*/ /*LATIN SMALL LETTER B WITH FLOURISH*/
   0xA798, /*U+A798*/ /**/
-  0xA799, /*U+A799*/ /**/
+  0xA798, /*U+A799*/ /*LATIN SMALL LETTER F WITH STROKE*/
   0xA79A, /*U+A79A*/ /**/
-  0xA79B, /*U+A79B*/ /**/
+  0xA79A, /*U+A79B*/ /*LATIN SMALL LETTER VOLAPUK AE*/
   0xA79C, /*U+A79C*/ /**/
-  0xA79D, /*U+A79D*/ /**/
+  0xA79C, /*U+A79D*/ /*LATIN SMALL LETTER VOLAPUK OE*/
   0xA79E, /*U+A79E*/ /**/
-  0xA79F, /*U+A79F*/ /**/
+  0xA79E, /*U+A79F*/ /*LATIN SMALL LETTER VOLAPUK UE*/
   0xA7A0, /*U+A7A0*/ /**/
   0xA7A0, /*U+A7A1*/ /*LATIN SMALL LETTER G WITH OBLIQUE STROKE*/
   0xA7A2, /*U+A7A2*/ /**/
@@ -2985,6 +2985,73 @@ static const uint32_t upper_table_sp_1[128] = {
   0xD801DC7F, /*0xD801DC7F*/ /*U+01047F*/ /*U+01047F*/ /**/
 };
 
+static const uint32_t upper_table_sp_2[64] = {
+  0xD806DCA0, /*0xD806DCC0*/ /*U+0118A0*/ /*U+0118C0*/ /*WARANG CITI SMALL LETTER NGAA*/
+  0xD806DCA1, /*0xD806DCC1*/ /*U+0118A1*/ /*U+0118C1*/ /*WARANG CITI SMALL LETTER A*/
+  0xD806DCA2, /*0xD806DCC2*/ /*U+0118A2*/ /*U+0118C2*/ /*WARANG CITI SMALL LETTER WI*/
+  0xD806DCA3, /*0xD806DCC3*/ /*U+0118A3*/ /*U+0118C3*/ /*WARANG CITI SMALL LETTER YU*/
+  0xD806DCA4, /*0xD806DCC4*/ /*U+0118A4*/ /*U+0118C4*/ /*WARANG CITI SMALL LETTER YA*/
+  0xD806DCA5, /*0xD806DCC5*/ /*U+0118A5*/ /*U+0118C5*/ /*WARANG CITI SMALL LETTER YO*/
+  0xD806DCA6, /*0xD806DCC6*/ /*U+0118A6*/ /*U+0118C6*/ /*WARANG CITI SMALL LETTER II*/
+  0xD806DCA7, /*0xD806DCC7*/ /*U+0118A7*/ /*U+0118C7*/ /*WARANG CITI SMALL LETTER UU*/
+  0xD806DCA8, /*0xD806DCC8*/ /*U+0118A8*/ /*U+0118C8*/ /*WARANG CITI SMALL LETTER E*/
+  0xD806DCA9, /*0xD806DCC9*/ /*U+0118A9*/ /*U+0118C9*/ /*WARANG CITI SMALL LETTER O*/
+  0xD806DCAA, /*0xD806DCCA*/ /*U+0118AA*/ /*U+0118CA*/ /*WARANG CITI SMALL LETTER ANG*/
+  0xD806DCAB, /*0xD806DCCB*/ /*U+0118AB*/ /*U+0118CB*/ /*WARANG CITI SMALL LETTER GA*/
+  0xD806DCAC, /*0xD806DCCC*/ /*U+0118AC*/ /*U+0118CC*/ /*WARANG CITI SMALL LETTER KO*/
+  0xD806DCAD, /*0xD806DCCD*/ /*U+0118AD*/ /*U+0118CD*/ /*WARANG CITI SMALL LETTER ENY*/
+  0xD806DCAE, /*0xD806DCCE*/ /*U+0118AE*/ /*U+0118CE*/ /*WARANG CITI SMALL LETTER YUJ*/
+  0xD806DCAF, /*0xD806DCCF*/ /*U+0118AF*/ /*U+0118CF*/ /*WARANG CITI SMALL LETTER UC*/
+  0xD806DCB0, /*0xD806DCD0*/ /*U+0118B0*/ /*U+0118D0*/ /*WARANG CITI SMALL LETTER ENN*/
+  0xD806DCB1, /*0xD806DCD1*/ /*U+0118B1*/ /*U+0118D1*/ /*WARANG CITI SMALL LETTER ODD*/
+  0xD806DCB2, /*0xD806DCD2*/ /*U+0118B2*/ /*U+0118D2*/ /*WARANG CITI SMALL LETTER TTE*/
+  0xD806DCB3, /*0xD806DCD3*/ /*U+0118B3*/ /*U+0118D3*/ /*WARANG CITI SMALL LETTER NUNG*/
+  0xD806DCB4, /*0xD806DCD4*/ /*U+0118B4*/ /*U+0118D4*/ /*WARANG CITI SMALL LETTER DA*/
+  0xD806DCB5, /*0xD806DCD5*/ /*U+0118B5*/ /*U+0118D5*/ /*WARANG CITI SMALL LETTER AT*/
+  0xD806DCB6, /*0xD806DCD6*/ /*U+0118B6*/ /*U+0118D6*/ /*WARANG CITI SMALL LETTER AM*/
+  0xD806DCB7, /*0xD806DCD7*/ /*U+0118B7*/ /*U+0118D7*/ /*WARANG CITI SMALL LETTER BU*/
+  0xD806DCB8, /*0xD806DCD8*/ /*U+0118B8*/ /*U+0118D8*/ /*WARANG CITI SMALL LETTER PU*/
+  0xD806DCB9, /*0xD806DCD9*/ /*U+0118B9*/ /*U+0118D9*/ /*WARANG CITI SMALL LETTER HIYO*/
+  0xD806DCBA, /*0xD806DCDA*/ /*U+0118BA*/ /*U+0118DA*/ /*WARANG CITI SMALL LETTER HOLO*/
+  0xD806DCBB, /*0xD806DCDB*/ /*U+0118BB*/ /*U+0118DB*/ /*WARANG CITI SMALL LETTER HORR*/
+  0xD806DCBC, /*0xD806DCDC*/ /*U+0118BC*/ /*U+0118DC*/ /*WARANG CITI SMALL LETTER HAR*/
+  0xD806DCBD, /*0xD806DCDD*/ /*U+0118BD*/ /*U+0118DD*/ /*WARANG CITI SMALL LETTER SSUU*/
+  0xD806DCBE, /*0xD806DCDE*/ /*U+0118BE*/ /*U+0118DE*/ /*WARANG CITI SMALL LETTER SII*/
+  0xD806DCBF, /*0xD806DCDF*/ /*U+0118BF*/ /*U+0118DF*/ /*WARANG CITI SMALL LETTER VIYO*/
+  0xD806DCE0, /*0xD806DCE0*/ /*U+0118E0*/ /*U+0118E0*/ /**/
+  0xD806DCE1, /*0xD806DCE1*/ /*U+0118E1*/ /*U+0118E1*/ /**/
+  0xD806DCE2, /*0xD806DCE2*/ /*U+0118E2*/ /*U+0118E2*/ /**/
+  0xD806DCE3, /*0xD806DCE3*/ /*U+0118E3*/ /*U+0118E3*/ /**/
+  0xD806DCE4, /*0xD806DCE4*/ /*U+0118E4*/ /*U+0118E4*/ /**/
+  0xD806DCE5, /*0xD806DCE5*/ /*U+0118E5*/ /*U+0118E5*/ /**/
+  0xD806DCE6, /*0xD806DCE6*/ /*U+0118E6*/ /*U+0118E6*/ /**/
+  0xD806DCE7, /*0xD806DCE7*/ /*U+0118E7*/ /*U+0118E7*/ /**/
+  0xD806DCE8, /*0xD806DCE8*/ /*U+0118E8*/ /*U+0118E8*/ /**/
+  0xD806DCE9, /*0xD806DCE9*/ /*U+0118E9*/ /*U+0118E9*/ /**/
+  0xD806DCEA, /*0xD806DCEA*/ /*U+0118EA*/ /*U+0118EA*/ /**/
+  0xD806DCEB, /*0xD806DCEB*/ /*U+0118EB*/ /*U+0118EB*/ /**/
+  0xD806DCEC, /*0xD806DCEC*/ /*U+0118EC*/ /*U+0118EC*/ /**/
+  0xD806DCED, /*0xD806DCED*/ /*U+0118ED*/ /*U+0118ED*/ /**/
+  0xD806DCEE, /*0xD806DCEE*/ /*U+0118EE*/ /*U+0118EE*/ /**/
+  0xD806DCEF, /*0xD806DCEF*/ /*U+0118EF*/ /*U+0118EF*/ /**/
+  0xD806DCF0, /*0xD806DCF0*/ /*U+0118F0*/ /*U+0118F0*/ /**/
+  0xD806DCF1, /*0xD806DCF1*/ /*U+0118F1*/ /*U+0118F1*/ /**/
+  0xD806DCF2, /*0xD806DCF2*/ /*U+0118F2*/ /*U+0118F2*/ /**/
+  0xD806DCF3, /*0xD806DCF3*/ /*U+0118F3*/ /*U+0118F3*/ /**/
+  0xD806DCF4, /*0xD806DCF4*/ /*U+0118F4*/ /*U+0118F4*/ /**/
+  0xD806DCF5, /*0xD806DCF5*/ /*U+0118F5*/ /*U+0118F5*/ /**/
+  0xD806DCF6, /*0xD806DCF6*/ /*U+0118F6*/ /*U+0118F6*/ /**/
+  0xD806DCF7, /*0xD806DCF7*/ /*U+0118F7*/ /*U+0118F7*/ /**/
+  0xD806DCF8, /*0xD806DCF8*/ /*U+0118F8*/ /*U+0118F8*/ /**/
+  0xD806DCF9, /*0xD806DCF9*/ /*U+0118F9*/ /*U+0118F9*/ /**/
+  0xD806DCFA, /*0xD806DCFA*/ /*U+0118FA*/ /*U+0118FA*/ /**/
+  0xD806DCFB, /*0xD806DCFB*/ /*U+0118FB*/ /*U+0118FB*/ /**/
+  0xD806DCFC, /*0xD806DCFC*/ /*U+0118FC*/ /*U+0118FC*/ /**/
+  0xD806DCFD, /*0xD806DCFD*/ /*U+0118FD*/ /*U+0118FD*/ /**/
+  0xD806DCFE, /*0xD806DCFE*/ /*U+0118FE*/ /*U+0118FE*/ /**/
+  0xD806DCFF, /*0xD806DCFF*/ /*U+0118FF*/ /*U+0118FF*/ /**/
+};
+
 static const uint16_t lower_table_1[128] = {
   0x0000, /*U+0000*/ /**/
   0x0001, /*U+0001*/ /**/
@@ -3631,7 +3698,7 @@ static const uint16_t lower_table_3[576] = {
   0x037C, /*U+037C*/ /**/
   0x037D, /*U+037D*/ /**/
   0x037E, /*U+037E*/ /**/
-  0x037F, /*U+037F*/ /**/
+  0x03F3, /*U+037F*/ /*GREEK CAPITAL LETTER YOT*/
   0x0380, /*U+0380*/ /**/
   0x0381, /*U+0381*/ /**/
   0x0382, /*U+0382*/ /**/
@@ -4056,13 +4123,13 @@ static const uint16_t lower_table_3[576] = {
   0x0525, /*U+0525*/ /**/
   0x0527, /*U+0526*/ /*CYRILLIC CAPITAL LETTER SHHA WITH DESCENDER*/
   0x0527, /*U+0527*/ /**/
-  0x0528, /*U+0528*/ /**/
+  0x0529, /*U+0528*/ /*CYRILLIC CAPITAL LETTER EN WITH LEFT HOOK*/
   0x0529, /*U+0529*/ /**/
-  0x052A, /*U+052A*/ /**/
+  0x052B, /*U+052A*/ /*CYRILLIC CAPITAL LETTER DZZHE*/
   0x052B, /*U+052B*/ /**/
-  0x052C, /*U+052C*/ /**/
+  0x052D, /*U+052C*/ /*CYRILLIC CAPITAL LETTER DCHE*/
   0x052D, /*U+052D*/ /**/
-  0x052E, /*U+052E*/ /**/
+  0x052F, /*U+052E*/ /*CYRILLIC CAPITAL LETTER EL WITH DESCENDER*/
   0x052F, /*U+052F*/ /**/
   0x0530, /*U+0530*/ /**/
   0x0561, /*U+0531*/ /*ARMENIAN CAPITAL LETTER AYB*/
@@ -5466,9 +5533,9 @@ static const uint16_t lower_table_9[128] = {
   0xA695, /*U+A695*/ /**/
   0xA697, /*U+A696*/ /*CYRILLIC CAPITAL LETTER SHWE*/
   0xA697, /*U+A697*/ /**/
-  0xA698, /*U+A698*/ /**/
+  0xA699, /*U+A698*/ /*CYRILLIC CAPITAL LETTER DOUBLE O*/
   0xA699, /*U+A699*/ /**/
-  0xA69A, /*U+A69A*/ /**/
+  0xA69B, /*U+A69A*/ /*CYRILLIC CAPITAL LETTER CROSSED O*/
   0xA69B, /*U+A69B*/ /**/
   0xA69C, /*U+A69C*/ /**/
   0xA69D, /*U+A69D*/ /**/
@@ -5659,15 +5726,15 @@ static const uint16_t lower_table_10[192] = {
   0xA793, /*U+A793*/ /**/
   0xA794, /*U+A794*/ /**/
   0xA795, /*U+A795*/ /**/
-  0xA796, /*U+A796*/ /**/
+  0xA797, /*U+A796*/ /*LATIN CAPITAL LETTER B WITH FLOURISH*/
   0xA797, /*U+A797*/ /**/
-  0xA798, /*U+A798*/ /**/
+  0xA799, /*U+A798*/ /*LATIN CAPITAL LETTER F WITH STROKE*/
   0xA799, /*U+A799*/ /**/
-  0xA79A, /*U+A79A*/ /**/
+  0xA79B, /*U+A79A*/ /*LATIN CAPITAL LETTER VOLAPUK AE*/
   0xA79B, /*U+A79B*/ /**/
-  0xA79C, /*U+A79C*/ /**/
+  0xA79D, /*U+A79C*/ /*LATIN CAPITAL LETTER VOLAPUK OE*/
   0xA79D, /*U+A79D*/ /**/
-  0xA79E, /*U+A79E*/ /**/
+  0xA79F, /*U+A79E*/ /*LATIN CAPITAL LETTER VOLAPUK UE*/
   0xA79F, /*U+A79F*/ /**/
   0xA7A1, /*U+A7A0*/ /*LATIN CAPITAL LETTER G WITH OBLIQUE STROKE*/
   0xA7A1, /*U+A7A1*/ /**/
@@ -5680,13 +5747,13 @@ static const uint16_t lower_table_10[192] = {
   0xA7A9, /*U+A7A8*/ /*LATIN CAPITAL LETTER S WITH OBLIQUE STROKE*/
   0xA7A9, /*U+A7A9*/ /**/
   0x0266, /*U+A7AA*/ /*LATIN CAPITAL LETTER H WITH HOOK*/
-  0xA7AB, /*U+A7AB*/ /**/
-  0xA7AC, /*U+A7AC*/ /**/
-  0xA7AD, /*U+A7AD*/ /**/
+  0x025C, /*U+A7AB*/ /*LATIN CAPITAL LETTER REVERSED OPEN E*/
+  0x0261, /*U+A7AC*/ /*LATIN CAPITAL LETTER SCRIPT G*/
+  0x026C, /*U+A7AD*/ /*LATIN CAPITAL LETTER L WITH BELT*/
   0xA7AE, /*U+A7AE*/ /**/
   0xA7AF, /*U+A7AF*/ /**/
-  0xA7B0, /*U+A7B0*/ /**/
-  0xA7B1, /*U+A7B1*/ /**/
+  0x029E, /*U+A7B0*/ /*LATIN CAPITAL LETTER TURNED K*/
+  0x0287, /*U+A7B1*/ /*LATIN CAPITAL LETTER TURNED T*/
   0xA7B2, /*U+A7B2*/ /**/
   0xA7B3, /*U+A7B3*/ /**/
   0xA7B4, /*U+A7B4*/ /**/
@@ -5837,4 +5904,71 @@ static const uint32_t lower_table_sp_1[64] = {
   0xD801DC3F, /*0xD801DC3F*/ /*U+01043F*/ /*U+01043F*/ /**/
 };
 
+static const uint32_t lower_table_sp_2[64] = {
+  0xD806DC80, /*0xD806DC80*/ /*U+011880*/ /*U+011880*/ /**/
+  0xD806DC81, /*0xD806DC81*/ /*U+011881*/ /*U+011881*/ /**/
+  0xD806DC82, /*0xD806DC82*/ /*U+011882*/ /*U+011882*/ /**/
+  0xD806DC83, /*0xD806DC83*/ /*U+011883*/ /*U+011883*/ /**/
+  0xD806DC84, /*0xD806DC84*/ /*U+011884*/ /*U+011884*/ /**/
+  0xD806DC85, /*0xD806DC85*/ /*U+011885*/ /*U+011885*/ /**/
+  0xD806DC86, /*0xD806DC86*/ /*U+011886*/ /*U+011886*/ /**/
+  0xD806DC87, /*0xD806DC87*/ /*U+011887*/ /*U+011887*/ /**/
+  0xD806DC88, /*0xD806DC88*/ /*U+011888*/ /*U+011888*/ /**/
+  0xD806DC89, /*0xD806DC89*/ /*U+011889*/ /*U+011889*/ /**/
+  0xD806DC8A, /*0xD806DC8A*/ /*U+01188A*/ /*U+01188A*/ /**/
+  0xD806DC8B, /*0xD806DC8B*/ /*U+01188B*/ /*U+01188B*/ /**/
+  0xD806DC8C, /*0xD806DC8C*/ /*U+01188C*/ /*U+01188C*/ /**/
+  0xD806DC8D, /*0xD806DC8D*/ /*U+01188D*/ /*U+01188D*/ /**/
+  0xD806DC8E, /*0xD806DC8E*/ /*U+01188E*/ /*U+01188E*/ /**/
+  0xD806DC8F, /*0xD806DC8F*/ /*U+01188F*/ /*U+01188F*/ /**/
+  0xD806DC90, /*0xD806DC90*/ /*U+011890*/ /*U+011890*/ /**/
+  0xD806DC91, /*0xD806DC91*/ /*U+011891*/ /*U+011891*/ /**/
+  0xD806DC92, /*0xD806DC92*/ /*U+011892*/ /*U+011892*/ /**/
+  0xD806DC93, /*0xD806DC93*/ /*U+011893*/ /*U+011893*/ /**/
+  0xD806DC94, /*0xD806DC94*/ /*U+011894*/ /*U+011894*/ /**/
+  0xD806DC95, /*0xD806DC95*/ /*U+011895*/ /*U+011895*/ /**/
+  0xD806DC96, /*0xD806DC96*/ /*U+011896*/ /*U+011896*/ /**/
+  0xD806DC97, /*0xD806DC97*/ /*U+011897*/ /*U+011897*/ /**/
+  0xD806DC98, /*0xD806DC98*/ /*U+011898*/ /*U+011898*/ /**/
+  0xD806DC99, /*0xD806DC99*/ /*U+011899*/ /*U+011899*/ /**/
+  0xD806DC9A, /*0xD806DC9A*/ /*U+01189A*/ /*U+01189A*/ /**/
+  0xD806DC9B, /*0xD806DC9B*/ /*U+01189B*/ /*U+01189B*/ /**/
+  0xD806DC9C, /*0xD806DC9C*/ /*U+01189C*/ /*U+01189C*/ /**/
+  0xD806DC9D, /*0xD806DC9D*/ /*U+01189D*/ /*U+01189D*/ /**/
+  0xD806DC9E, /*0xD806DC9E*/ /*U+01189E*/ /*U+01189E*/ /**/
+  0xD806DC9F, /*0xD806DC9F*/ /*U+01189F*/ /*U+01189F*/ /**/
+  0xD806DCC0, /*0xD806DCA0*/ /*U+0118C0*/ /*U+0118A0*/ /*WARANG CITI CAPITAL LETTER NGAA*/
+  0xD806DCC1, /*0xD806DCA1*/ /*U+0118C1*/ /*U+0118A1*/ /*WARANG CITI CAPITAL LETTER A*/
+  0xD806DCC2, /*0xD806DCA2*/ /*U+0118C2*/ /*U+0118A2*/ /*WARANG CITI CAPITAL LETTER WI*/
+  0xD806DCC3, /*0xD806DCA3*/ /*U+0118C3*/ /*U+0118A3*/ /*WARANG CITI CAPITAL LETTER YU*/
+  0xD806DCC4, /*0xD806DCA4*/ /*U+0118C4*/ /*U+0118A4*/ /*WARANG CITI CAPITAL LETTER YA*/
+  0xD806DCC5, /*0xD806DCA5*/ /*U+0118C5*/ /*U+0118A5*/ /*WARANG CITI CAPITAL LETTER YO*/
+  0xD806DCC6, /*0xD806DCA6*/ /*U+0118C6*/ /*U+0118A6*/ /*WARANG CITI CAPITAL LETTER II*/
+  0xD806DCC7, /*0xD806DCA7*/ /*U+0118C7*/ /*U+0118A7*/ /*WARANG CITI CAPITAL LETTER UU*/
+  0xD806DCC8, /*0xD806DCA8*/ /*U+0118C8*/ /*U+0118A8*/ /*WARANG CITI CAPITAL LETTER E*/
+  0xD806DCC9, /*0xD806DCA9*/ /*U+0118C9*/ /*U+0118A9*/ /*WARANG CITI CAPITAL LETTER O*/
+  0xD806DCCA, /*0xD806DCAA*/ /*U+0118CA*/ /*U+0118AA*/ /*WARANG CITI CAPITAL LETTER ANG*/
+  0xD806DCCB, /*0xD806DCAB*/ /*U+0118CB*/ /*U+0118AB*/ /*WARANG CITI CAPITAL LETTER GA*/
+  0xD806DCCC, /*0xD806DCAC*/ /*U+0118CC*/ /*U+0118AC*/ /*WARANG CITI CAPITAL LETTER KO*/
+  0xD806DCCD, /*0xD806DCAD*/ /*U+0118CD*/ /*U+0118AD*/ /*WARANG CITI CAPITAL LETTER ENY*/
+  0xD806DCCE, /*0xD806DCAE*/ /*U+0118CE*/ /*U+0118AE*/ /*WARANG CITI CAPITAL LETTER YUJ*/
+  0xD806DCCF, /*0xD806DCAF*/ /*U+0118CF*/ /*U+0118AF*/ /*WARANG CITI CAPITAL LETTER UC*/
+  0xD806DCD0, /*0xD806DCB0*/ /*U+0118D0*/ /*U+0118B0*/ /*WARANG CITI CAPITAL LETTER ENN*/
+  0xD806DCD1, /*0xD806DCB1*/ /*U+0118D1*/ /*U+0118B1*/ /*WARANG CITI CAPITAL LETTER ODD*/
+  0xD806DCD2, /*0xD806DCB2*/ /*U+0118D2*/ /*U+0118B2*/ /*WARANG CITI CAPITAL LETTER TTE*/
+  0xD806DCD3, /*0xD806DCB3*/ /*U+0118D3*/ /*U+0118B3*/ /*WARANG CITI CAPITAL LETTER NUNG*/
+  0xD806DCD4, /*0xD806DCB4*/ /*U+0118D4*/ /*U+0118B4*/ /*WARANG CITI CAPITAL LETTER DA*/
+  0xD806DCD5, /*0xD806DCB5*/ /*U+0118D5*/ /*U+0118B5*/ /*WARANG CITI CAPITAL LETTER AT*/
+  0xD806DCD6, /*0xD806DCB6*/ /*U+0118D6*/ /*U+0118B6*/ /*WARANG CITI CAPITAL LETTER AM*/
+  0xD806DCD7, /*0xD806DCB7*/ /*U+0118D7*/ /*U+0118B7*/ /*WARANG CITI CAPITAL LETTER BU*/
+  0xD806DCD8, /*0xD806DCB8*/ /*U+0118D8*/ /*U+0118B8*/ /*WARANG CITI CAPITAL LETTER PU*/
+  0xD806DCD9, /*0xD806DCB9*/ /*U+0118D9*/ /*U+0118B9*/ /*WARANG CITI CAPITAL LETTER HIYO*/
+  0xD806DCDA, /*0xD806DCBA*/ /*U+0118DA*/ /*U+0118BA*/ /*WARANG CITI CAPITAL LETTER HOLO*/
+  0xD806DCDB, /*0xD806DCBB*/ /*U+0118DB*/ /*U+0118BB*/ /*WARANG CITI CAPITAL LETTER HORR*/
+  0xD806DCDC, /*0xD806DCBC*/ /*U+0118DC*/ /*U+0118BC*/ /*WARANG CITI CAPITAL LETTER HAR*/
+  0xD806DCDD, /*0xD806DCBD*/ /*U+0118DD*/ /*U+0118BD*/ /*WARANG CITI CAPITAL LETTER SSUU*/
+  0xD806DCDE, /*0xD806DCBE*/ /*U+0118DE*/ /*U+0118BE*/ /*WARANG CITI CAPITAL LETTER SII*/
+  0xD806DCDF, /*0xD806DCBF*/ /*U+0118DF*/ /*U+0118BF*/ /*WARANG CITI CAPITAL LETTER VIYO*/
+};
+
 /* EOF */