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 |