< prev index next >

src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-arabic-table.hh

Print this page


   1 /* == Start of generated table == */
   2 /*
   3  * The following table is generated by running:
   4  *
   5  *   ./gen-arabic-table.py ArabicShaping.txt UnicodeData.txt Blocks.txt
   6  *
   7  * on files with these headers:
   8  *
   9  * # ArabicShaping-9.0.0.txt
  10  * # Date: 2016-02-24, 22:25:00 GMT [RP]
  11  * # Blocks-9.0.0.txt
  12  * # Date: 2016-02-05, 23:48:00 GMT [KW]
  13  * UnicodeData.txt does not have a header.
  14  */
  15 
  16 #ifndef HB_OT_SHAPE_COMPLEX_ARABIC_TABLE_HH
  17 #define HB_OT_SHAPE_COMPLEX_ARABIC_TABLE_HH
  18 
  19 
  20 #define X       JOINING_TYPE_X
  21 #define R       JOINING_TYPE_R
  22 #define T       JOINING_TYPE_T
  23 #define U       JOINING_TYPE_U
  24 #define A       JOINING_GROUP_ALAPH
  25 #define DR      JOINING_GROUP_DALATH_RISH
  26 #define L       JOINING_TYPE_L
  27 #define C       JOINING_TYPE_C
  28 #define D       JOINING_TYPE_D
  29 
  30 static const uint8_t joining_table[] =
  31 {
  32 


  55   /* 0760 */ D,D,D,D,D,D,D,D,D,D,D,R,R,D,D,D,D,R,D,R,R,D,D,D,R,R,D,D,D,D,D,D,
  56 
  57   /* FILLER */
  58 
  59   /* 0780 */ 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,
  60   /* 07A0 */ 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,
  61 
  62   /* NKo */
  63 
  64   /* 07C0 */ X,X,X,X,X,X,X,X,X,X,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,
  65   /* 07E0 */ D,D,D,D,D,D,D,D,D,D,D,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,C,X,X,X,X,X,
  66 
  67   /* FILLER */
  68 
  69   /* 0800 */ 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 
  72   /* Mandaic */
  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,
  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,



  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,
  77 
  78   /* Arabic Extended-A */
  79 
  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,
  81   /* 08C0 */ 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,
  82   /* 08E0 */ X,X,U,
  83 
  84 #define joining_offset_0x1806u 739
  85 
  86   /* Mongolian */
  87 
  88   /* 1800 */             U,D,X,X,C,X,X,X,U,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,
  89   /* 1820 */ 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,
  90   /* 1840 */ 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,
  91   /* 1860 */ D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,X,X,X,X,X,X,X,X,
  92   /* 1880 */ U,U,U,U,U,T,T,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,
  93   /* 18A0 */ D,D,D,D,D,D,D,D,D,X,D,
  94 
  95 #define joining_offset_0x200cu 904


 113   /* Manichaean */
 114 
 115   /* 10AC0 */ D,D,D,D,D,R,U,R,U,R,R,U,U,L,R,R,R,R,R,D,D,D,D,L,D,D,D,D,D,R,D,D,
 116   /* 10AE0 */ D,R,U,U,R,X,X,X,X,X,X,D,D,D,D,R,
 117 
 118 #define joining_offset_0x10b80u 1098
 119 
 120   /* Psalter Pahlavi */
 121 
 122   /* 10B80 */ D,R,D,R,R,R,D,D,D,R,D,D,R,D,R,R,D,R,X,X,X,X,X,X,X,X,X,X,X,X,X,X,
 123   /* 10BA0 */ X,X,X,X,X,X,X,X,X,R,R,R,R,D,D,U,
 124 
 125 #define joining_offset_0x1e900u 1146
 126 
 127   /* Adlam */
 128 
 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,
 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,
 131   /* 1E940 */ D,D,D,D,
 132 
 133 }; /* Table items: 1214; occupancy: 54% */
 134 
 135 
 136 static unsigned int
 137 joining_type (hb_codepoint_t u)
 138 {
 139   switch (u >> 12)
 140   {
 141     case 0x0u:
 142       if (hb_in_range (u, 0x0600u, 0x08E2u)) return joining_table[u - 0x0600u + joining_offset_0x0600u];
 143       break;
 144 
 145     case 0x1u:
 146       if (hb_in_range (u, 0x1806u, 0x18AAu)) return joining_table[u - 0x1806u + joining_offset_0x1806u];
 147       break;
 148 
 149     case 0x2u:
 150       if (hb_in_range (u, 0x200Cu, 0x2069u)) return joining_table[u - 0x200Cu + joining_offset_0x200cu];
 151       break;
 152 
 153     case 0xAu:
 154       if (hb_in_range (u, 0xA840u, 0xA873u)) return joining_table[u - 0xA840u + joining_offset_0xa840u];
 155       break;
 156 
 157     case 0x10u:
 158       if (hb_in_range (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];
 160       break;
 161 
 162     case 0x1Eu:
 163       if (hb_in_range (u, 0x1E900u, 0x1E943u)) return joining_table[u - 0x1E900u + joining_offset_0x1e900u];
 164       break;
 165 
 166     default:
 167       break;
 168   }
 169   return X;
 170 }
 171 
 172 #undef X
 173 #undef R
 174 #undef T
 175 #undef U
 176 #undef A
 177 #undef DR
 178 #undef L
 179 #undef C
 180 #undef D
 181 
 182 
 183 static const uint16_t shaping_table[][4] =


   1 /* == Start of generated table == */
   2 /*
   3  * The following table is generated by running:
   4  *
   5  *   ./gen-arabic-table.py ArabicShaping.txt UnicodeData.txt Blocks.txt
   6  *
   7  * on files with these headers:
   8  *
   9  * # ArabicShaping-10.0.0.txt
  10  * # Date: 2017-02-16, 00:00:00 GMT [RP, KW]
  11  * # Blocks-10.0.0.txt
  12  * # Date: 2017-04-12, 17:30:00 GMT [KW]
  13  * UnicodeData.txt does not have a header.
  14  */
  15 
  16 #ifndef HB_OT_SHAPE_COMPLEX_ARABIC_TABLE_HH
  17 #define HB_OT_SHAPE_COMPLEX_ARABIC_TABLE_HH
  18 
  19 
  20 #define X       JOINING_TYPE_X
  21 #define R       JOINING_TYPE_R
  22 #define T       JOINING_TYPE_T
  23 #define U       JOINING_TYPE_U
  24 #define A       JOINING_GROUP_ALAPH
  25 #define DR      JOINING_GROUP_DALATH_RISH
  26 #define L       JOINING_TYPE_L
  27 #define C       JOINING_TYPE_C
  28 #define D       JOINING_TYPE_D
  29 
  30 static const uint8_t joining_table[] =
  31 {
  32 


  55   /* 0760 */ D,D,D,D,D,D,D,D,D,D,D,R,R,D,D,D,D,R,D,R,R,D,D,D,R,R,D,D,D,D,D,D,
  56 
  57   /* FILLER */
  58 
  59   /* 0780 */ 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,
  60   /* 07A0 */ 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,
  61 
  62   /* NKo */
  63 
  64   /* 07C0 */ X,X,X,X,X,X,X,X,X,X,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,
  65   /* 07E0 */ D,D,D,D,D,D,D,D,D,D,D,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,C,X,X,X,X,X,
  66 
  67   /* FILLER */
  68 
  69   /* 0800 */ 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 
  72   /* Mandaic */
  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,
  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,
  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,
  80 
  81   /* Arabic Extended-A */
  82 
  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,
  84   /* 08C0 */ 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,
  85   /* 08E0 */ X,X,U,
  86 
  87 #define joining_offset_0x1806u 739
  88 
  89   /* Mongolian */
  90 
  91   /* 1800 */             U,D,X,X,C,X,X,X,U,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,
  92   /* 1820 */ 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,
  93   /* 1840 */ 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,
  94   /* 1860 */ D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,X,X,X,X,X,X,X,X,
  95   /* 1880 */ U,U,U,U,U,T,T,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,
  96   /* 18A0 */ D,D,D,D,D,D,D,D,D,X,D,
  97 
  98 #define joining_offset_0x200cu 904


 116   /* Manichaean */
 117 
 118   /* 10AC0 */ D,D,D,D,D,R,U,R,U,R,R,U,U,L,R,R,R,R,R,D,D,D,D,L,D,D,D,D,D,R,D,D,
 119   /* 10AE0 */ D,R,U,U,R,X,X,X,X,X,X,D,D,D,D,R,
 120 
 121 #define joining_offset_0x10b80u 1098
 122 
 123   /* Psalter Pahlavi */
 124 
 125   /* 10B80 */ D,R,D,R,R,R,D,D,D,R,D,D,R,D,R,R,D,R,X,X,X,X,X,X,X,X,X,X,X,X,X,X,
 126   /* 10BA0 */ X,X,X,X,X,X,X,X,X,R,R,R,R,D,D,U,
 127 
 128 #define joining_offset_0x1e900u 1146
 129 
 130   /* Adlam */
 131 
 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,
 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,
 134   /* 1E940 */ D,D,D,D,
 135 
 136 }; /* Table items: 1214; occupancy: 55% */
 137 
 138 
 139 static unsigned int
 140 joining_type (hb_codepoint_t u)
 141 {
 142   switch (u >> 12)
 143   {
 144     case 0x0u:
 145       if (hb_in_range<hb_codepoint_t> (u, 0x0600u, 0x08E2u)) return joining_table[u - 0x0600u + joining_offset_0x0600u];
 146       break;
 147 
 148     case 0x1u:
 149       if (hb_in_range<hb_codepoint_t> (u, 0x1806u, 0x18AAu)) return joining_table[u - 0x1806u + joining_offset_0x1806u];
 150       break;
 151 
 152     case 0x2u:
 153       if (hb_in_range<hb_codepoint_t> (u, 0x200Cu, 0x2069u)) return joining_table[u - 0x200Cu + joining_offset_0x200cu];
 154       break;
 155 
 156     case 0xAu:
 157       if (hb_in_range<hb_codepoint_t> (u, 0xA840u, 0xA873u)) return joining_table[u - 0xA840u + joining_offset_0xa840u];
 158       break;
 159 
 160     case 0x10u:
 161       if (hb_in_range<hb_codepoint_t> (u, 0x10AC0u, 0x10AEFu)) return joining_table[u - 0x10AC0u + joining_offset_0x10ac0u];
 162       if (hb_in_range<hb_codepoint_t> (u, 0x10B80u, 0x10BAFu)) return joining_table[u - 0x10B80u + joining_offset_0x10b80u];
 163       break;
 164 
 165     case 0x1Eu:
 166       if (hb_in_range<hb_codepoint_t> (u, 0x1E900u, 0x1E943u)) return joining_table[u - 0x1E900u + joining_offset_0x1e900u];
 167       break;
 168 
 169     default:
 170       break;
 171   }
 172   return X;
 173 }
 174 
 175 #undef X
 176 #undef R
 177 #undef T
 178 #undef U
 179 #undef A
 180 #undef DR
 181 #undef L
 182 #undef C
 183 #undef D
 184 
 185 
 186 static const uint16_t shaping_table[][4] =


< prev index next >