]> Savannah Git Hosting - gnulib.git/commitdiff
unilbrk/tables: Fix table (regression yesterday).
authorBruno Haible <bruno@clisp.org>
Sat, 14 Sep 2024 09:56:38 +0000 (11:56 +0200)
committerBruno Haible <bruno@clisp.org>
Sat, 14 Sep 2024 09:56:38 +0000 (11:56 +0200)
Reported by Collin Funk <collin.funk1@gmail.com> in
<https://lists.gnu.org/archive/html/bug-gnulib/2024-09/msg00061.html>.

* lib/gen-uni-tables.c (output_lbrk_rules_as_tables): Use LBP_AL1 as
array index instead of LBP_AL. Update comments.
* lib/unilbrk/lbrktables.c: Regenerated.

ChangeLog
lib/gen-uni-tables.c
lib/unilbrk/lbrktables.c

index 8d3c66d510eaac5159a1a3bc99260e52ba3d05d0..2b35fe2905eafcc596051bdf2d31498104dfbe91 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2024-09-14  Bruno Haible  <bruno@clisp.org>
+
+       unilbrk/tables: Fix table (regression yesterday).
+       Reported by Collin Funk <collin.funk1@gmail.com> in
+       <https://lists.gnu.org/archive/html/bug-gnulib/2024-09/msg00061.html>.
+       * lib/gen-uni-tables.c (output_lbrk_rules_as_tables): Use LBP_AL1 as
+       array index instead of LBP_AL. Update comments.
+       * lib/unilbrk/lbrktables.c: Regenerated.
+
 2024-09-13  Bruno Haible  <bruno@clisp.org>
 
        Implement a new property, added by Unicode 16.0.0.
index c27f870bd1c76a7c7830b9e483435497571d1913..dac7715f554a0ce432a6ac3bf76ca9675cddb4cd 100644 (file)
@@ -9480,10 +9480,10 @@ output_lbrk_rules_as_tables (const char *filename, const char *version)
   /* (LB10) Treat any remaining combining mark or ZWJ as AL.  */
   /* We resolve LBP_CM at runtime, before accessing the table.  */
   for (before = 0; before < NLBP; before++)
-    table[before][LBP_ZWJ] = table[before][LBP_AL];
+    table[before][LBP_ZWJ] = table[before][LBP_AL1];
   for (after = 0; after < NLBP; after++)
-    table[LBP_ZWJ][after] = table[LBP_AL][after];
-  table[LBP_ZWJ][LBP_ZWJ] = table[LBP_AL][LBP_AL];
+    table[LBP_ZWJ][after] = table[LBP_AL1][after];
+  table[LBP_ZWJ][LBP_ZWJ] = table[LBP_AL1][LBP_AL1];
 
   /* (LB8a) Do not break between a zero width joiner and an ideograph, emoji
      base or emoji modifier.  */
@@ -9495,12 +9495,25 @@ output_lbrk_rules_as_tables (const char *filename, const char *version)
   (LB30a) Break between two regional indicator symbols if and only if there are
           an even number of regional indicators preceding the position of the
           break.
-  (LB21a) Don't break after Hebrew + Hyphen.
+  (LB28a) Don't break inside orthographic syllables of Brahmic scripts, lines
+          3 and 4.
+  (LB25) Do not break between the following pairs of classes relevant to
+         numbers, lines with NU (SY|IS)* or OP NU or OP IS NU.
+  (LB21a) Don't break after Hebrew + Hyphen/Break-After, before non-Hebrew.
+  (LB20a) Don't break after a word-initial hyphen.
   (LB20) Break before and after unresolved CB.
          We resolve LBP_CB at runtime, before accessing the table.
+  (LB19a) Don't break on either side of ambiguous quotation marks, except next
+          to an EastAsian character.
+  (LB15c) Break before a decimal mark that follows a space.
+  Part of (LB15b) Do not break before an ambiguous quotation that is a final
+                  punctuation, even after spaces.
+  Part of (LB15a) Do not break before an ambiguous quotation that is an initial
+                  punctuation, even after spaces.
   (LB9) Do not break a combining character sequence; treat it as if it has the
         line breaking class of the base character in all of the following rules.
         Treat ZWJ as if it were CM.
+  Part of (LB8a) Don't break right after a zero-width joiner.
   (LB8) Break before any character following a zero-width space, even if one
         or more spaces intervene.
         We handle LBP_ZW at runtime, before accessing the table.
index 30b0761927bc549feef6b2c4410365819f169b8e..2494c5c87f3a0f3bb2b4ac1810551d9ff4387e09 100644 (file)
@@ -37,46 +37,46 @@ const unsigned char unilbrk_table[41][41] =
 {
                                 /* after */
         /*  WJ  GL  B2  BA  BB  HY  CL  CP1 CP2 EX  IN  NS  OP1 OP2 QU1 QU2 QU3 IS  NU  PO  PR  SY  AL1 AL2 H2  H3  ID1 ID2 JL  JV  JT  HL  AP  AK  AS  VI  VF  RI  ZWJ EB  EM  */
-/*  WJ */ {  P,  I,  I,  I,  I,  I,  P,  P,  P,  P,  I,  I,  I,  I,  I,  I,  P,  P,  I,  I,  I,  P,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  P,  I,  I, },
-/*  GL */ {  P,  I,  I,  I,  I,  I,  P,  P,  P,  P,  I,  I,  I,  I,  I,  I,  P,  P,  I,  I,  I,  P,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  P,  I,  I, },
-/*  B2 */ {  P,  I,  P,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  D,  D,  D,  P,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  P,  D,  D, },
-/*  BA */ {  P,  D,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  D,  D,  D,  P,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  P,  D,  D, },
-/*  BB */ {  P,  I,  I,  I,  I,  I,  P,  P,  P,  P,  I,  I,  I,  I,  I,  I,  P,  P,  I,  I,  I,  P,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  P,  I,  I, },
-/*  HY */ {  P,  D,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  I,  D,  D,  P,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  P,  D,  D, },
-/*  CL */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  P,  D,  D,  I,  D,  P,  P,  D,  D,  D,  P,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  P,  D,  D, },
-/* CP1 */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  I,  D,  D,  P,  I,  I,  D,  D,  D,  D,  D,  D,  D,  I,  D,  D,  D,  D,  D,  D,  P,  D,  D, },
-/* CP2 */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  D,  D,  D,  P,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  P,  D,  D, },
-/*  EX */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  D,  D,  D,  P,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  P,  D,  D, },
-/*  IN */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  D,  D,  D,  P,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  P,  D,  D, },
-/*  NS */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  D,  D,  D,  P,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  P,  D,  D, },
+/*  WJ */ {  P,  I,  I,  I,  I,  I,  P,  P,  P,  P,  I,  I,  I,  I,  I,  I,  P,  P,  I,  I,  I,  P,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I, },
+/*  GL */ {  P,  I,  I,  I,  I,  I,  P,  P,  P,  P,  I,  I,  I,  I,  I,  I,  P,  P,  I,  I,  I,  P,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I, },
+/*  B2 */ {  P,  I,  P,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  D,  D,  D,  P,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D, },
+/*  BA */ {  P,  D,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  D,  D,  D,  P,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D, },
+/*  BB */ {  P,  I,  I,  I,  I,  I,  P,  P,  P,  P,  I,  I,  I,  I,  I,  I,  P,  P,  I,  I,  I,  P,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I, },
+/*  HY */ {  P,  D,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  I,  D,  D,  P,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D, },
+/*  CL */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  P,  D,  D,  I,  D,  P,  P,  D,  D,  D,  P,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D, },
+/* CP1 */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  I,  D,  D,  P,  I,  I,  D,  D,  D,  D,  D,  D,  D,  I,  D,  D,  D,  D,  D,  D,  I,  D,  D, },
+/* CP2 */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  D,  D,  D,  P,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D, },
+/*  EX */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  D,  D,  D,  P,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D, },
+/*  IN */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  D,  D,  D,  P,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D, },
+/*  NS */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  D,  D,  D,  P,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D, },
 /* OP1 */ {  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P, },
 /* OP2 */ {  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P, },
-/* QU1 */ {  P,  I,  I,  I,  I,  I,  P,  P,  P,  P,  I,  I,  I,  I,  I,  I,  P,  P,  I,  I,  I,  P,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  P,  I,  I, },
+/* QU1 */ {  P,  I,  I,  I,  I,  I,  P,  P,  P,  P,  I,  I,  I,  I,  I,  I,  P,  P,  I,  I,  I,  P,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I, },
 /* QU2 */ {  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P,  P, },
-/* QU3 */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  D,  D,  D,  P,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  P,  D,  D, },
-/*  IS */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  I,  D,  D,  P,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  P,  D,  D, },
-/*  NU */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  I,  D,  I,  D,  P,  P,  D,  D,  D,  P,  I,  I,  D,  D,  D,  D,  D,  D,  D,  I,  D,  D,  D,  D,  D,  D,  P,  D,  D, },
-/*  PO */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  I,  D,  D,  P,  I,  I,  D,  D,  D,  D,  D,  D,  D,  I,  D,  D,  D,  D,  D,  D,  P,  D,  D, },
-/*  PR */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  I,  D,  D,  P,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  D,  D,  D,  D,  D,  D,  P,  I,  I, },
-/*  SY */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  D,  D,  D,  P,  D,  D,  D,  D,  D,  D,  D,  D,  D,  I,  D,  D,  D,  D,  D,  D,  P,  D,  D, },
-/* AL1 */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  I,  D,  I,  D,  P,  P,  I,  I,  I,  P,  I,  I,  D,  D,  D,  D,  D,  D,  D,  I,  D,  D,  D,  D,  D,  D,  P,  D,  D, },
-/* AL2 */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  I,  D,  I,  D,  P,  P,  I,  I,  I,  P,  I,  I,  D,  D,  D,  D,  D,  D,  D,  I,  D,  D,  D,  I,  I,  D,  P,  D,  D, },
-/*  H2 */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  D,  I,  D,  P,  D,  D,  D,  D,  D,  D,  D,  I,  I,  D,  D,  D,  D,  D,  D,  D,  P,  D,  D, },
-/*  H3 */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  D,  I,  D,  P,  D,  D,  D,  D,  D,  D,  D,  D,  I,  D,  D,  D,  D,  D,  D,  D,  P,  D,  D, },
-/* ID1 */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  D,  I,  D,  P,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  P,  D,  D, },
-/* ID2 */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  D,  I,  D,  P,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  P,  D,  I, },
-/*  JL */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  D,  I,  D,  P,  D,  D,  I,  I,  D,  D,  I,  I,  D,  D,  D,  D,  D,  D,  D,  D,  P,  D,  D, },
-/*  JV */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  D,  I,  D,  P,  D,  D,  D,  D,  D,  D,  D,  I,  I,  D,  D,  D,  D,  D,  D,  D,  P,  D,  D, },
-/*  JT */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  D,  I,  D,  P,  D,  D,  D,  D,  D,  D,  D,  D,  I,  D,  D,  D,  D,  D,  D,  D,  P,  D,  D, },
-/*  HL */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  I,  D,  I,  D,  P,  P,  I,  I,  I,  P,  I,  I,  D,  D,  D,  D,  D,  D,  D,  I,  D,  D,  D,  D,  D,  D,  P,  D,  D, },
-/*  AP */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  D,  D,  D,  P,  D,  I,  D,  D,  D,  D,  D,  D,  D,  D,  D,  I,  I,  D,  D,  D,  P,  D,  D, },
-/*  AK */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  D,  D,  D,  P,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  I,  I,  D,  P,  D,  D, },
-/*  AS */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  D,  D,  D,  P,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  I,  I,  D,  P,  D,  D, },
-/*  VI */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  D,  D,  D,  P,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  P,  D,  D, },
-/*  VF */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  D,  D,  D,  P,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  P,  D,  D, },
-/*  RI */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  D,  D,  D,  P,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  P,  D,  D, },
-/* ZWJ */ {  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  I,  I,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  I,  I, },
-/*  EB */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  D,  I,  D,  P,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  P,  D,  I, },
+/* QU3 */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  D,  D,  D,  P,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D, },
+/*  IS */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  I,  D,  D,  P,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D, },
+/*  NU */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  I,  D,  I,  D,  P,  P,  D,  D,  D,  P,  I,  I,  D,  D,  D,  D,  D,  D,  D,  I,  D,  D,  D,  D,  D,  D,  I,  D,  D, },
+/*  PO */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  I,  D,  D,  P,  I,  I,  D,  D,  D,  D,  D,  D,  D,  I,  D,  D,  D,  D,  D,  D,  I,  D,  D, },
+/*  PR */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  I,  D,  D,  P,  I,  I,  I,  I,  I,  I,  I,  I,  I,  I,  D,  D,  D,  D,  D,  D,  I,  I,  I, },
+/*  SY */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  D,  D,  D,  P,  D,  D,  D,  D,  D,  D,  D,  D,  D,  I,  D,  D,  D,  D,  D,  D,  D,  D,  D, },
+/* AL1 */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  I,  D,  I,  D,  P,  P,  I,  I,  I,  P,  I,  I,  D,  D,  D,  D,  D,  D,  D,  I,  D,  D,  D,  D,  D,  D,  I,  D,  D, },
+/* AL2 */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  I,  D,  I,  D,  P,  P,  I,  I,  I,  P,  I,  I,  D,  D,  D,  D,  D,  D,  D,  I,  D,  D,  D,  I,  I,  D,  I,  D,  D, },
+/*  H2 */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  D,  I,  D,  P,  D,  D,  D,  D,  D,  D,  D,  I,  I,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D, },
+/*  H3 */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  D,  I,  D,  P,  D,  D,  D,  D,  D,  D,  D,  D,  I,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D, },
+/* ID1 */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  D,  I,  D,  P,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D, },
+/* ID2 */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  D,  I,  D,  P,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  I, },
+/*  JL */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  D,  I,  D,  P,  D,  D,  I,  I,  D,  D,  I,  I,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D, },
+/*  JV */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  D,  I,  D,  P,  D,  D,  D,  D,  D,  D,  D,  I,  I,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D, },
+/*  JT */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  D,  I,  D,  P,  D,  D,  D,  D,  D,  D,  D,  D,  I,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D, },
+/*  HL */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  I,  D,  I,  D,  P,  P,  I,  I,  I,  P,  I,  I,  D,  D,  D,  D,  D,  D,  D,  I,  D,  D,  D,  D,  D,  D,  I,  D,  D, },
+/*  AP */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  D,  D,  D,  P,  D,  I,  D,  D,  D,  D,  D,  D,  D,  D,  D,  I,  I,  D,  D,  D,  D,  D,  D, },
+/*  AK */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  D,  D,  D,  P,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  I,  I,  D,  D,  D,  D, },
+/*  AS */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  D,  D,  D,  P,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  I,  I,  D,  D,  D,  D, },
+/*  VI */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  D,  D,  D,  P,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D, },
+/*  VF */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  D,  D,  D,  P,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D, },
+/*  RI */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  D,  D,  D,  P,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D, },
+/* ZWJ */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  I,  D,  I,  D,  P,  P,  I,  I,  I,  P,  I,  I,  D,  D,  I,  I,  D,  D,  D,  I,  D,  D,  D,  D,  D,  D,  I,  I,  I, },
+/*  EB */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  D,  I,  D,  P,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  I, },
 /*  EM */ {  P,  I,  D,  I,  D,  I,  P,  P,  P,  P,  I,  I,  D,  D,  I,  D,  P,  P,  D,  I,  D,  P,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D,  D, },
 /* "" */
 /* before */