| OLD | NEW |
| 1 /* == Start of generated table == */ | 1 /* == Start of generated table == */ |
| 2 /* | 2 /* |
| 3 * The following table is generated by running: | 3 * The following table is generated by running: |
| 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-8.0.0.txt | 9 * # ArabicShaping-9.0.0.txt |
| 10 * # Date: 2015-02-17, 23:33:00 GMT [RP] | 10 * # Date: 2016-02-24, 22:25:00 GMT [RP] |
| 11 * # Blocks-8.0.0.txt | 11 * # Blocks-9.0.0.txt |
| 12 * # Date: 2014-11-10, 23:04:00 GMT [KW] | 12 * # Date: 2016-02-05, 23:48: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 |
| 18 | 18 |
| 19 | 19 |
| 20 #define X JOINING_TYPE_X | 20 #define X JOINING_TYPE_X |
| 21 #define R JOINING_TYPE_R | 21 #define R JOINING_TYPE_R |
| 22 #define T JOINING_TYPE_T |
| 22 #define U JOINING_TYPE_U | 23 #define U JOINING_TYPE_U |
| 23 #define A JOINING_GROUP_ALAPH | 24 #define A JOINING_GROUP_ALAPH |
| 24 #define DR JOINING_GROUP_DALATH_RISH | 25 #define DR JOINING_GROUP_DALATH_RISH |
| 25 #define L JOINING_TYPE_L | 26 #define L JOINING_TYPE_L |
| 26 #define C JOINING_TYPE_C | 27 #define C JOINING_TYPE_C |
| 27 #define D JOINING_TYPE_D | 28 #define D JOINING_TYPE_D |
| 28 | 29 |
| 29 static const uint8_t joining_table[] = | 30 static const uint8_t joining_table[] = |
| 30 { | 31 { |
| 31 | 32 |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 69 /* 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, |
| 70 | 71 |
| 71 /* Mandaic */ | 72 /* Mandaic */ |
| 72 | 73 |
| 73 /* 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, |
| 74 /* 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 /* 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 /* 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, | 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, |
| 76 | 77 |
| 77 /* Arabic Extended-A */ | 78 /* Arabic Extended-A */ |
| 78 | 79 |
| 79 /* 08A0 */ D,D,D,D,D,D,D,D,D,D,R,R,R,U,R,D,D,R,R,D,D, | 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, |
| 80 | 83 |
| 81 #define joining_offset_0x1806u 693 | 84 #define joining_offset_0x1806u 739 |
| 82 | 85 |
| 83 /* Mongolian */ | 86 /* Mongolian */ |
| 84 | 87 |
| 85 /* 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, | 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, |
| 86 /* 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, | 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, |
| 87 /* 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, | 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, |
| 88 /* 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, | 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, |
| 89 /* 1880 */ U,U,U,U,U,U,U,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, | 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, |
| 90 /* 18A0 */ D,D,D,D,D,D,D,D,D,X,D, | 93 /* 18A0 */ D,D,D,D,D,D,D,D,D,X,D, |
| 91 | 94 |
| 92 #define joining_offset_0x200cu 858 | 95 #define joining_offset_0x200cu 904 |
| 93 | 96 |
| 94 /* General Punctuation */ | 97 /* General Punctuation */ |
| 95 | 98 |
| 96 /* 2000 */ U,C, | 99 /* 2000 */ U,C,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, |
| 100 /* 2020 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,U,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, |
| 101 /* 2040 */ 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, |
| 102 /* 2060 */ X,X,X,X,X,X,U,U,U,U, |
| 97 | 103 |
| 98 #define joining_offset_0x2066u 860 | 104 #define joining_offset_0xa840u 998 |
| 99 | |
| 100 /* General Punctuation */ | |
| 101 | |
| 102 /* 2060 */ U,U,U,U, | |
| 103 | |
| 104 #define joining_offset_0xa840u 864 | |
| 105 | 105 |
| 106 /* Phags-pa */ | 106 /* Phags-pa */ |
| 107 | 107 |
| 108 /* A840 */ 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, | 108 /* A840 */ 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, |
| 109 /* A860 */ D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,L,U, | 109 /* A860 */ D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,L,U, |
| 110 | 110 |
| 111 #define joining_offset_0x10ac0u 916 | 111 #define joining_offset_0x10ac0u 1050 |
| 112 | 112 |
| 113 /* Manichaean */ | 113 /* Manichaean */ |
| 114 | 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, | 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, | 116 /* 10AE0 */ D,R,U,U,R,X,X,X,X,X,X,D,D,D,D,R, |
| 117 | 117 |
| 118 #define joining_offset_0x10b80u 964 | 118 #define joining_offset_0x10b80u 1098 |
| 119 | 119 |
| 120 /* Psalter Pahlavi */ | 120 /* Psalter Pahlavi */ |
| 121 | 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, | 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, | 123 /* 10BA0 */ X,X,X,X,X,X,X,X,X,R,R,R,R,D,D,U, |
| 124 | 124 |
| 125 }; /* Table items: 1012; occupancy: 57% */ | 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% */ |
| 126 | 134 |
| 127 | 135 |
| 128 static unsigned int | 136 static unsigned int |
| 129 joining_type (hb_codepoint_t u) | 137 joining_type (hb_codepoint_t u) |
| 130 { | 138 { |
| 131 switch (u >> 12) | 139 switch (u >> 12) |
| 132 { | 140 { |
| 133 case 0x0u: | 141 case 0x0u: |
| 134 if (hb_in_range (u, 0x0600u, 0x08B4u)) return joining_table[u - 0x0600u +
joining_offset_0x0600u]; | 142 if (hb_in_range (u, 0x0600u, 0x08E2u)) return joining_table[u - 0x0600u +
joining_offset_0x0600u]; |
| 135 break; | 143 break; |
| 136 | 144 |
| 137 case 0x1u: | 145 case 0x1u: |
| 138 if (hb_in_range (u, 0x1806u, 0x18AAu)) return joining_table[u - 0x1806u +
joining_offset_0x1806u]; | 146 if (hb_in_range (u, 0x1806u, 0x18AAu)) return joining_table[u - 0x1806u +
joining_offset_0x1806u]; |
| 139 break; | 147 break; |
| 140 | 148 |
| 141 case 0x2u: | 149 case 0x2u: |
| 142 if (hb_in_range (u, 0x200Cu, 0x200Du)) return joining_table[u - 0x200Cu +
joining_offset_0x200cu]; | 150 if (hb_in_range (u, 0x200Cu, 0x2069u)) return joining_table[u - 0x200Cu +
joining_offset_0x200cu]; |
| 143 if (hb_in_range (u, 0x2066u, 0x2069u)) return joining_table[u - 0x2066u +
joining_offset_0x2066u]; | |
| 144 break; | 151 break; |
| 145 | 152 |
| 146 case 0xAu: | 153 case 0xAu: |
| 147 if (hb_in_range (u, 0xA840u, 0xA873u)) return joining_table[u - 0xA840u +
joining_offset_0xa840u]; | 154 if (hb_in_range (u, 0xA840u, 0xA873u)) return joining_table[u - 0xA840u +
joining_offset_0xa840u]; |
| 148 break; | 155 break; |
| 149 | 156 |
| 150 case 0x10u: | 157 case 0x10u: |
| 151 if (hb_in_range (u, 0x10AC0u, 0x10AEFu)) return joining_table[u - 0x10AC0u
+ joining_offset_0x10ac0u]; | 158 if (hb_in_range (u, 0x10AC0u, 0x10AEFu)) return joining_table[u - 0x10AC0u
+ joining_offset_0x10ac0u]; |
| 152 if (hb_in_range (u, 0x10B80u, 0x10BAFu)) return joining_table[u - 0x10B80u
+ joining_offset_0x10b80u]; | 159 if (hb_in_range (u, 0x10B80u, 0x10BAFu)) return joining_table[u - 0x10B80u
+ joining_offset_0x10b80u]; |
| 153 break; | 160 break; |
| 154 | 161 |
| 162 case 0x1Eu: |
| 163 if (hb_in_range (u, 0x1E900u, 0x1E943u)) return joining_table[u - 0x1E900u
+ joining_offset_0x1e900u]; |
| 164 break; |
| 165 |
| 155 default: | 166 default: |
| 156 break; | 167 break; |
| 157 } | 168 } |
| 158 return X; | 169 return X; |
| 159 } | 170 } |
| 160 | 171 |
| 161 #undef X | 172 #undef X |
| 162 #undef R | 173 #undef R |
| 174 #undef T |
| 163 #undef U | 175 #undef U |
| 164 #undef A | 176 #undef A |
| 165 #undef DR | 177 #undef DR |
| 166 #undef L | 178 #undef L |
| 167 #undef C | 179 #undef C |
| 168 #undef D | 180 #undef D |
| 169 | 181 |
| 170 | 182 |
| 171 static const uint16_t shaping_table[][4] = | 183 static const uint16_t shaping_table[][4] = |
| 172 { | 184 { |
| (...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 374 { 0xFE82u, 0xFEF6u }, /* ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINA
L FORM */ | 386 { 0xFE82u, 0xFEF6u }, /* ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINA
L FORM */ |
| 375 { 0xFE8Eu, 0xFEFCu }, /* ARABIC LIGATURE LAM WITH ALEF FINAL FORM */ | 387 { 0xFE8Eu, 0xFEFCu }, /* ARABIC LIGATURE LAM WITH ALEF FINAL FORM */ |
| 376 { 0xFE84u, 0xFEF8u }, /* ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINA
L FORM */ | 388 { 0xFE84u, 0xFEF8u }, /* ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINA
L FORM */ |
| 377 }}, | 389 }}, |
| 378 }; | 390 }; |
| 379 | 391 |
| 380 | 392 |
| 381 #endif /* HB_OT_SHAPE_COMPLEX_ARABIC_TABLE_HH */ | 393 #endif /* HB_OT_SHAPE_COMPLEX_ARABIC_TABLE_HH */ |
| 382 | 394 |
| 383 /* == End of generated table == */ | 395 /* == End of generated table == */ |
| OLD | NEW |