src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-arabic-table.hh
changeset 48274 51772bf1fb0c
parent 47216 71c04702a3d5
child 50826 f5b95be8b6e2
equal deleted inserted replaced
48273:e2065f7505eb 48274:51772bf1fb0c
     4  *
     4  *
     5  *   ./gen-arabic-table.py ArabicShaping.txt UnicodeData.txt Blocks.txt
     5  *   ./gen-arabic-table.py ArabicShaping.txt UnicodeData.txt Blocks.txt
     6  *
     6  *
     7  * on files with these headers:
     7  * on files with these headers:
     8  *
     8  *
     9  * # ArabicShaping-9.0.0.txt
     9  * # ArabicShaping-10.0.0.txt
    10  * # Date: 2016-02-24, 22:25:00 GMT [RP]
    10  * # Date: 2017-02-16, 00:00:00 GMT [RP, KW]
    11  * # Blocks-9.0.0.txt
    11  * # Blocks-10.0.0.txt
    12  * # Date: 2016-02-05, 23:48:00 GMT [KW]
    12  * # Date: 2017-04-12, 17:30:00 GMT [KW]
    13  * UnicodeData.txt does not have a header.
    13  * UnicodeData.txt does not have a header.
    14  */
    14  */
    15 
    15 
    16 #ifndef HB_OT_SHAPE_COMPLEX_ARABIC_TABLE_HH
    16 #ifndef HB_OT_SHAPE_COMPLEX_ARABIC_TABLE_HH
    17 #define HB_OT_SHAPE_COMPLEX_ARABIC_TABLE_HH
    17 #define HB_OT_SHAPE_COMPLEX_ARABIC_TABLE_HH
    70   /* 0820 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,
    70   /* 0820 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,
    71 
    71 
    72   /* Mandaic */
    72   /* Mandaic */
    73 
    73 
    74   /* 0840 */ R,D,D,D,D,D,R,R,D,R,D,D,D,D,D,D,D,D,D,D,R,D,U,U,U,X,X,X,X,X,X,X,
    74   /* 0840 */ R,D,D,D,D,D,R,R,D,R,D,D,D,D,D,D,D,D,D,D,R,D,U,U,U,X,X,X,X,X,X,X,
    75   /* 0860 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,
    75 
       
    76   /* Syriac Supplement */
       
    77 
       
    78   /* 0860 */ D,U,D,D,D,D,U,R,D,R,R,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,
    76   /* 0880 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,
    79   /* 0880 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,
    77 
    80 
    78   /* Arabic Extended-A */
    81   /* Arabic Extended-A */
    79 
    82 
    80   /* 08A0 */ D,D,D,D,D,D,D,D,D,D,R,R,R,U,R,D,D,R,R,D,D,X,D,D,D,R,D,D,D,D,X,X,
    83   /* 08A0 */ D,D,D,D,D,D,D,D,D,D,R,R,R,U,R,D,D,R,R,D,D,X,D,D,D,R,D,D,D,D,X,X,
   128 
   131 
   129   /* 1E900 */ 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,D,D,D,D,D,D,
   132   /* 1E900 */ 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,D,D,D,D,D,D,
   130   /* 1E920 */ 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,D,D,D,D,D,D,
   133   /* 1E920 */ 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,D,D,D,D,D,D,
   131   /* 1E940 */ D,D,D,D,
   134   /* 1E940 */ D,D,D,D,
   132 
   135 
   133 }; /* Table items: 1214; occupancy: 54% */
   136 }; /* Table items: 1214; occupancy: 55% */
   134 
   137 
   135 
   138 
   136 static unsigned int
   139 static unsigned int
   137 joining_type (hb_codepoint_t u)
   140 joining_type (hb_codepoint_t u)
   138 {
   141 {
   139   switch (u >> 12)
   142   switch (u >> 12)
   140   {
   143   {
   141     case 0x0u:
   144     case 0x0u:
   142       if (hb_in_range (u, 0x0600u, 0x08E2u)) return joining_table[u - 0x0600u + joining_offset_0x0600u];
   145       if (hb_in_range<hb_codepoint_t> (u, 0x0600u, 0x08E2u)) return joining_table[u - 0x0600u + joining_offset_0x0600u];
   143       break;
   146       break;
   144 
   147 
   145     case 0x1u:
   148     case 0x1u:
   146       if (hb_in_range (u, 0x1806u, 0x18AAu)) return joining_table[u - 0x1806u + joining_offset_0x1806u];
   149       if (hb_in_range<hb_codepoint_t> (u, 0x1806u, 0x18AAu)) return joining_table[u - 0x1806u + joining_offset_0x1806u];
   147       break;
   150       break;
   148 
   151 
   149     case 0x2u:
   152     case 0x2u:
   150       if (hb_in_range (u, 0x200Cu, 0x2069u)) return joining_table[u - 0x200Cu + joining_offset_0x200cu];
   153       if (hb_in_range<hb_codepoint_t> (u, 0x200Cu, 0x2069u)) return joining_table[u - 0x200Cu + joining_offset_0x200cu];
   151       break;
   154       break;
   152 
   155 
   153     case 0xAu:
   156     case 0xAu:
   154       if (hb_in_range (u, 0xA840u, 0xA873u)) return joining_table[u - 0xA840u + joining_offset_0xa840u];
   157       if (hb_in_range<hb_codepoint_t> (u, 0xA840u, 0xA873u)) return joining_table[u - 0xA840u + joining_offset_0xa840u];
   155       break;
   158       break;
   156 
   159 
   157     case 0x10u:
   160     case 0x10u:
   158       if (hb_in_range (u, 0x10AC0u, 0x10AEFu)) return joining_table[u - 0x10AC0u + joining_offset_0x10ac0u];
   161       if (hb_in_range<hb_codepoint_t> (u, 0x10AC0u, 0x10AEFu)) return joining_table[u - 0x10AC0u + joining_offset_0x10ac0u];
   159       if (hb_in_range (u, 0x10B80u, 0x10BAFu)) return joining_table[u - 0x10B80u + joining_offset_0x10b80u];
   162       if (hb_in_range<hb_codepoint_t> (u, 0x10B80u, 0x10BAFu)) return joining_table[u - 0x10B80u + joining_offset_0x10b80u];
   160       break;
   163       break;
   161 
   164 
   162     case 0x1Eu:
   165     case 0x1Eu:
   163       if (hb_in_range (u, 0x1E900u, 0x1E943u)) return joining_table[u - 0x1E900u + joining_offset_0x1e900u];
   166       if (hb_in_range<hb_codepoint_t> (u, 0x1E900u, 0x1E943u)) return joining_table[u - 0x1E900u + joining_offset_0x1e900u];
   164       break;
   167       break;
   165 
   168 
   166     default:
   169     default:
   167       break;
   170       break;
   168   }
   171   }