bug 552460 - part 2 - Unicode data needed for Variation Sequence support. r=smontagu
authorMasatoshi Kimura <VYV03354@nifty.ne.jp>
Tue, 01 Jun 2010 14:42:37 +0100
changeset 42988 d625ee923468add219fdc394f342e36592a31b03
parent 42987 e481675132dbcb16bc4df7789ae6ca7aaff5f98a
child 42989 a82a0bf474e88f8241879cffceaf69473704ade8
push idunknown
push userunknown
push dateunknown
reviewerssmontagu
bugs552460
milestone1.9.3a5pre
bug 552460 - part 2 - Unicode data needed for Variation Sequence support. r=smontagu
intl/unicharutil/src/cattable.h
intl/unicharutil/tools/gencattable.pl
--- a/intl/unicharutil/src/cattable.h
+++ b/intl/unicharutil/src/cattable.h
@@ -3141,17 +3141,17 @@ static const PRUint8 gGenCatIdx16[256] =
      26,  // U+01D7D0 - U+01D7D7 : 0x22222222
      26,  // U+01D7D8 - U+01D7DF : 0x22222222
      26,  // U+01D7E0 - U+01D7E7 : 0x22222222
      26,  // U+01D7E8 - U+01D7EF : 0x22222222
      26,  // U+01D7F0 - U+01D7F7 : 0x22222222
      26,  // U+01D7F8 - U+01D7FF : 0x22222222
 };
 
-static const PRUint8 gGenCatIdx17[64] = {
+static const PRUint8 gGenCatIdx17[74] = {
      29,  // U+01F000 - U+01F007 : 0x77777777
      29,  // U+01F008 - U+01F00F : 0x77777777
      29,  // U+01F010 - U+01F017 : 0x77777777
      29,  // U+01F018 - U+01F01F : 0x77777777
      29,  // U+01F020 - U+01F027 : 0x77777777
      74,  // U+01F028 - U+01F02F : 0x00007777
      29,  // U+01F030 - U+01F037 : 0x77777777
      29,  // U+01F038 - U+01F03F : 0x77777777
@@ -3206,16 +3206,78 @@ static const PRUint8 gGenCatIdx17[64] = 
       3,  // U+01F1C0 - U+01F1C7 : 0x00000000
       3,  // U+01F1C8 - U+01F1CF : 0x00000000
       3,  // U+01F1D0 - U+01F1D7 : 0x00000000
       3,  // U+01F1D8 - U+01F1DF : 0x00000000
       3,  // U+01F1E0 - U+01F1E7 : 0x00000000
       3,  // U+01F1E8 - U+01F1EF : 0x00000000
       3,  // U+01F1F0 - U+01F1F7 : 0x00000000
       3,  // U+01F1F8 - U+01F1FF : 0x00000000
+     30,  // U+01F200 - U+01F207 : 0x00000007
+      3,  // U+01F208 - U+01F20F : 0x00000000
+     29,  // U+01F210 - U+01F217 : 0x77777777
+     29,  // U+01F218 - U+01F21F : 0x77777777
+     29,  // U+01F220 - U+01F227 : 0x77777777
+     29,  // U+01F228 - U+01F22F : 0x77777777
+     65,  // U+01F230 - U+01F237 : 0x00000077
+      3,  // U+01F238 - U+01F23F : 0x00000000
+     29,  // U+01F240 - U+01F247 : 0x77777777
+     30,  // U+01F248 - U+01F24F : 0x00000007
+};
+
+static const PRUint8 gGenCatIdx18[16] = {
+    203,  // U+0E0000 - U+0E0007 : 0x00000040
+      3,  // U+0E0008 - U+0E000F : 0x00000000
+      3,  // U+0E0010 - U+0E0017 : 0x00000000
+      3,  // U+0E0018 - U+0E001F : 0x00000000
+    204,  // U+0E0020 - U+0E0027 : 0x44444444
+    204,  // U+0E0028 - U+0E002F : 0x44444444
+    204,  // U+0E0030 - U+0E0037 : 0x44444444
+    204,  // U+0E0038 - U+0E003F : 0x44444444
+    204,  // U+0E0040 - U+0E0047 : 0x44444444
+    204,  // U+0E0048 - U+0E004F : 0x44444444
+    204,  // U+0E0050 - U+0E0057 : 0x44444444
+    204,  // U+0E0058 - U+0E005F : 0x44444444
+    204,  // U+0E0060 - U+0E0067 : 0x44444444
+    204,  // U+0E0068 - U+0E006F : 0x44444444
+    204,  // U+0E0070 - U+0E0077 : 0x44444444
+    204,  // U+0E0078 - U+0E007F : 0x44444444
+};
+
+static const PRUint8 gGenCatIdx19[30] = {
+      1,  // U+0E0100 - U+0E0107 : 0x11111111
+      1,  // U+0E0108 - U+0E010F : 0x11111111
+      1,  // U+0E0110 - U+0E0117 : 0x11111111
+      1,  // U+0E0118 - U+0E011F : 0x11111111
+      1,  // U+0E0120 - U+0E0127 : 0x11111111
+      1,  // U+0E0128 - U+0E012F : 0x11111111
+      1,  // U+0E0130 - U+0E0137 : 0x11111111
+      1,  // U+0E0138 - U+0E013F : 0x11111111
+      1,  // U+0E0140 - U+0E0147 : 0x11111111
+      1,  // U+0E0148 - U+0E014F : 0x11111111
+      1,  // U+0E0150 - U+0E0157 : 0x11111111
+      1,  // U+0E0158 - U+0E015F : 0x11111111
+      1,  // U+0E0160 - U+0E0167 : 0x11111111
+      1,  // U+0E0168 - U+0E016F : 0x11111111
+      1,  // U+0E0170 - U+0E0177 : 0x11111111
+      1,  // U+0E0178 - U+0E017F : 0x11111111
+      1,  // U+0E0180 - U+0E0187 : 0x11111111
+      1,  // U+0E0188 - U+0E018F : 0x11111111
+      1,  // U+0E0190 - U+0E0197 : 0x11111111
+      1,  // U+0E0198 - U+0E019F : 0x11111111
+      1,  // U+0E01A0 - U+0E01A7 : 0x11111111
+      1,  // U+0E01A8 - U+0E01AF : 0x11111111
+      1,  // U+0E01B0 - U+0E01B7 : 0x11111111
+      1,  // U+0E01B8 - U+0E01BF : 0x11111111
+      1,  // U+0E01C0 - U+0E01C7 : 0x11111111
+      1,  // U+0E01C8 - U+0E01CF : 0x11111111
+      1,  // U+0E01D0 - U+0E01D7 : 0x11111111
+      1,  // U+0E01D8 - U+0E01DF : 0x11111111
+      1,  // U+0E01E0 - U+0E01E7 : 0x11111111
+      1,  // U+0E01E8 - U+0E01EF : 0x11111111
 };
 
 static const PRUint32 gGenCatPatPl0[] = {
     0x44444444,  // 0 
     0x66676663,  // 1 
     0x66667666,  // 2 
     0x22222222,  // 3 
     0x67776622,  // 4 
@@ -3620,16 +3682,18 @@ static const PRUint32 gGenCatPatPl1[] = 
     0x22005555,  // 195 
     0x00000070,  // 196 
     0x70700000,  // 197 
     0x07000700,  // 198 
     0x07777700,  // 199 
     0x70000000,  // 200 
     0x70077070,  // 201 
     0x00777700,  // 202 
+    0x00000040,  // 203 
+    0x44444444,  // 204 
 }; 
 
 static PRUint8 GetCat(PRUint32 u)
 {
     PRUint32 pat;
     //
     //  Handle block which use index table mapping    
     //
@@ -3724,22 +3788,34 @@ static PRUint8 GetCat(PRUint32 u)
     }
 
     // Handle U+01D000 to U+01D7FF
     if(0x01D000 <= u && u <= 0x01D7FF) {
         pat = gGenCatPatPl1[gGenCatIdx16 [( u - 0x01D000 ) / 8]];
         return (pat  >> ((u % 8) * 4)) & 0x0F;
     }
 
-    // Handle U+01F000 to U+01F1FF
-    if(0x01F000 <= u && u <= 0x01F1FF) {
+    // Handle U+01F000 to U+01F24F
+    if(0x01F000 <= u && u <= 0x01F24F) {
         pat = gGenCatPatPl1[gGenCatIdx17 [( u - 0x01F000 ) / 8]];
         return (pat  >> ((u % 8) * 4)) & 0x0F;
     }
 
+    // Handle U+0E0000 to U+0E007F
+    if(0x0E0000 <= u && u <= 0x0E007F) {
+        pat = gGenCatPatPl1[gGenCatIdx18 [( u - 0x0E0000 ) / 8]];
+        return (pat  >> ((u % 8) * 4)) & 0x0F;
+    }
+
+    // Handle U+0E0100 to U+0E01EF
+    if(0x0E0100 <= u && u <= 0x0E01EF) {
+        pat = gGenCatPatPl1[gGenCatIdx19 [( u - 0x0E0100 ) / 8]];
+        return (pat  >> ((u % 8) * 4)) & 0x0F;
+    }
+
     //
     //  Handle blocks which share the same category 
     //
     // Handle CJK Ideograph Extension A block 
     if(0x3400 <= u && u <= 0x4DB5) 
         return 5; 
 
     // Handle CJK Ideograph block 
@@ -3795,9 +3871,9 @@ static PRUint8 GetCat(PRUint32 u)
         return 4; 
 
     // Handle Plane 16 Private Use block 
     if(0x100000 <= u && u <= 0x10FFFD) 
         return 4; 
 
     return 0; // UNDEFINE 
 }
-// total data size = 4754
+// total data size = 4818
--- a/intl/unicharutil/tools/gencattable.pl
+++ b/intl/unicharutil/tools/gencattable.pl
@@ -236,17 +236,19 @@ while(<UNICODATA>) {
   0x10800, 0x1085f,
   0x10900, 0x1093f,
   0x10a00, 0x10c4f,
   0x10e60, 0x10e7f,
   0x11080, 0x110cf,
   0x12000, 0x1247f,
   0x13000, 0x1342f,
   0x1d000, 0x1d7ff,
-  0x1f000, 0x1f1ff
+  0x1f000, 0x1f24f,
+  0xe0000, 0xe007f,
+  0xe0100, 0xe01ef
 );
 
 
 $totaldata = 0;
 
 $tt=($#range+1) / 2;
 @newidx = (0); 
 @patarray = ();