35#define GET_UTF8_CHAR( ch, p ) \
38 ch = (unsigned char)*p++; \
49 else if ( ch < 0xF0 ) \
60 for ( ; len_ > 0; len_-- ) \
61 ch = ( ch << 6 ) | ( *p++ & 0x3F ); \
77#define AF_BLUE_STRING_MAX_LEN 51
82 typedef enum AF_Blue_String_
84 AF_BLUE_STRING_ADLAM_CAPITAL_TOP = 0,
85 AF_BLUE_STRING_ADLAM_CAPITAL_BOTTOM = 30,
86 AF_BLUE_STRING_ADLAM_SMALL_TOP = 40,
87 AF_BLUE_STRING_ADLAM_SMALL_BOTTOM = 65,
88 AF_BLUE_STRING_ARABIC_TOP = 105,
89 AF_BLUE_STRING_ARABIC_BOTTOM = 123,
90 AF_BLUE_STRING_ARABIC_JOIN = 138,
91 AF_BLUE_STRING_ARMENIAN_CAPITAL_TOP = 141,
92 AF_BLUE_STRING_ARMENIAN_CAPITAL_BOTTOM = 165,
93 AF_BLUE_STRING_ARMENIAN_SMALL_ASCENDER = 189,
94 AF_BLUE_STRING_ARMENIAN_SMALL_TOP = 210,
95 AF_BLUE_STRING_ARMENIAN_SMALL_BOTTOM = 234,
96 AF_BLUE_STRING_ARMENIAN_SMALL_DESCENDER = 258,
97 AF_BLUE_STRING_AVESTAN_TOP = 282,
98 AF_BLUE_STRING_AVESTAN_BOTTOM = 302,
99 AF_BLUE_STRING_BAMUM_TOP = 312,
100 AF_BLUE_STRING_BAMUM_BOTTOM = 344,
101 AF_BLUE_STRING_BENGALI_BASE = 376,
102 AF_BLUE_STRING_BENGALI_TOP = 408,
103 AF_BLUE_STRING_BENGALI_HEAD = 436,
104 AF_BLUE_STRING_BUHID_TOP = 468,
105 AF_BLUE_STRING_BUHID_LARGE = 476,
106 AF_BLUE_STRING_BUHID_SMALL = 488,
107 AF_BLUE_STRING_BUHID_BOTTOM = 504,
108 AF_BLUE_STRING_CANADIAN_SYLLABICS_TOP = 532,
109 AF_BLUE_STRING_CANADIAN_SYLLABICS_BOTTOM = 564,
110 AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_TOP = 596,
111 AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_BOTTOM = 628,
112 AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_TOP = 660,
113 AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_BOTTOM = 688,
114 AF_BLUE_STRING_CARIAN_TOP = 720,
115 AF_BLUE_STRING_CARIAN_BOTTOM = 760,
116 AF_BLUE_STRING_CHAKMA_TOP = 795,
117 AF_BLUE_STRING_CHAKMA_BOTTOM = 820,
118 AF_BLUE_STRING_CHAKMA_DESCENDER = 845,
119 AF_BLUE_STRING_CHEROKEE_CAPITAL = 910,
120 AF_BLUE_STRING_CHEROKEE_SMALL_ASCENDER = 942,
121 AF_BLUE_STRING_CHEROKEE_SMALL = 974,
122 AF_BLUE_STRING_CHEROKEE_SMALL_DESCENDER = 1006,
123 AF_BLUE_STRING_COPTIC_CAPITAL_TOP = 1022,
124 AF_BLUE_STRING_COPTIC_CAPITAL_BOTTOM = 1054,
125 AF_BLUE_STRING_COPTIC_SMALL_TOP = 1086,
126 AF_BLUE_STRING_COPTIC_SMALL_BOTTOM = 1118,
127 AF_BLUE_STRING_CYPRIOT_TOP = 1150,
128 AF_BLUE_STRING_CYPRIOT_BOTTOM = 1190,
129 AF_BLUE_STRING_CYPRIOT_SMALL = 1225,
130 AF_BLUE_STRING_CYRILLIC_CAPITAL_TOP = 1240,
131 AF_BLUE_STRING_CYRILLIC_CAPITAL_BOTTOM = 1264,
132 AF_BLUE_STRING_CYRILLIC_SMALL = 1288,
133 AF_BLUE_STRING_CYRILLIC_SMALL_DESCENDER = 1312,
134 AF_BLUE_STRING_DESERET_CAPITAL_TOP = 1321,
135 AF_BLUE_STRING_DESERET_CAPITAL_BOTTOM = 1346,
136 AF_BLUE_STRING_DESERET_SMALL_TOP = 1371,
137 AF_BLUE_STRING_DESERET_SMALL_BOTTOM = 1396,
138 AF_BLUE_STRING_DEVANAGARI_BASE = 1421,
139 AF_BLUE_STRING_DEVANAGARI_TOP = 1453,
140 AF_BLUE_STRING_DEVANAGARI_HEAD = 1485,
141 AF_BLUE_STRING_DEVANAGARI_BOTTOM = 1517,
142 AF_BLUE_STRING_ETHIOPIC_TOP = 1525,
143 AF_BLUE_STRING_ETHIOPIC_BOTTOM = 1557,
144 AF_BLUE_STRING_GEORGIAN_MKHEDRULI_TOP = 1589,
145 AF_BLUE_STRING_GEORGIAN_MKHEDRULI_BOTTOM = 1621,
146 AF_BLUE_STRING_GEORGIAN_MKHEDRULI_ASCENDER = 1653,
147 AF_BLUE_STRING_GEORGIAN_MKHEDRULI_DESCENDER = 1685,
148 AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_TOP = 1717,
149 AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_BOTTOM = 1749,
150 AF_BLUE_STRING_GEORGIAN_NUSKHURI_TOP = 1781,
151 AF_BLUE_STRING_GEORGIAN_NUSKHURI_BOTTOM = 1813,
152 AF_BLUE_STRING_GEORGIAN_NUSKHURI_ASCENDER = 1845,
153 AF_BLUE_STRING_GEORGIAN_NUSKHURI_DESCENDER = 1877,
154 AF_BLUE_STRING_GEORGIAN_MTAVRULI_TOP = 1909,
155 AF_BLUE_STRING_GEORGIAN_MTAVRULI_BOTTOM = 1941,
156 AF_BLUE_STRING_GLAGOLITIC_CAPITAL_TOP = 1973,
157 AF_BLUE_STRING_GLAGOLITIC_CAPITAL_BOTTOM = 2005,
158 AF_BLUE_STRING_GLAGOLITIC_SMALL_TOP = 2037,
159 AF_BLUE_STRING_GLAGOLITIC_SMALL_BOTTOM = 2069,
160 AF_BLUE_STRING_GOTHIC_TOP = 2101,
161 AF_BLUE_STRING_GOTHIC_BOTTOM = 2141,
162 AF_BLUE_STRING_GREEK_CAPITAL_TOP = 2161,
163 AF_BLUE_STRING_GREEK_CAPITAL_BOTTOM = 2182,
164 AF_BLUE_STRING_GREEK_SMALL_BETA_TOP = 2200,
165 AF_BLUE_STRING_GREEK_SMALL = 2218,
166 AF_BLUE_STRING_GREEK_SMALL_DESCENDER = 2242,
167 AF_BLUE_STRING_GUJARATI_TOP = 2266,
168 AF_BLUE_STRING_GUJARATI_BOTTOM = 2298,
169 AF_BLUE_STRING_GUJARATI_ASCENDER = 2330,
170 AF_BLUE_STRING_GUJARATI_DESCENDER = 2380,
171 AF_BLUE_STRING_GUJARATI_DIGIT_TOP = 2413,
172 AF_BLUE_STRING_GURMUKHI_BASE = 2433,
173 AF_BLUE_STRING_GURMUKHI_HEAD = 2465,
174 AF_BLUE_STRING_GURMUKHI_TOP = 2497,
175 AF_BLUE_STRING_GURMUKHI_BOTTOM = 2529,
176 AF_BLUE_STRING_GURMUKHI_DIGIT_TOP = 2561,
177 AF_BLUE_STRING_HEBREW_TOP = 2581,
178 AF_BLUE_STRING_HEBREW_BOTTOM = 2605,
179 AF_BLUE_STRING_HEBREW_DESCENDER = 2623,
180 AF_BLUE_STRING_KANNADA_TOP = 2638,
181 AF_BLUE_STRING_KANNADA_BOTTOM = 2682,
182 AF_BLUE_STRING_KAYAH_LI_TOP = 2714,
183 AF_BLUE_STRING_KAYAH_LI_BOTTOM = 2738,
184 AF_BLUE_STRING_KAYAH_LI_ASCENDER = 2758,
185 AF_BLUE_STRING_KAYAH_LI_DESCENDER = 2766,
186 AF_BLUE_STRING_KAYAH_LI_LARGE_DESCENDER = 2778,
187 AF_BLUE_STRING_KHMER_TOP = 2799,
188 AF_BLUE_STRING_KHMER_SUBSCRIPT_TOP = 2823,
189 AF_BLUE_STRING_KHMER_BOTTOM = 2863,
190 AF_BLUE_STRING_KHMER_DESCENDER = 2895,
191 AF_BLUE_STRING_KHMER_LARGE_DESCENDER = 2929,
192 AF_BLUE_STRING_KHMER_SYMBOLS_WAXING_TOP = 3016,
193 AF_BLUE_STRING_KHMER_SYMBOLS_WANING_BOTTOM = 3024,
194 AF_BLUE_STRING_LAO_TOP = 3032,
195 AF_BLUE_STRING_LAO_BOTTOM = 3064,
196 AF_BLUE_STRING_LAO_ASCENDER = 3096,
197 AF_BLUE_STRING_LAO_LARGE_ASCENDER = 3112,
198 AF_BLUE_STRING_LAO_DESCENDER = 3124,
199 AF_BLUE_STRING_LATIN_CAPITAL_TOP = 3148,
200 AF_BLUE_STRING_LATIN_CAPITAL_BOTTOM = 3164,
201 AF_BLUE_STRING_LATIN_SMALL_F_TOP = 3180,
202 AF_BLUE_STRING_LATIN_SMALL_TOP = 3194,
203 AF_BLUE_STRING_LATIN_SMALL_BOTTOM = 3210,
204 AF_BLUE_STRING_LATIN_SMALL_DESCENDER = 3226,
205 AF_BLUE_STRING_LATIN_SUBS_CAPITAL_TOP = 3236,
206 AF_BLUE_STRING_LATIN_SUBS_CAPITAL_BOTTOM = 3256,
207 AF_BLUE_STRING_LATIN_SUBS_SMALL_F_TOP = 3276,
208 AF_BLUE_STRING_LATIN_SUBS_SMALL = 3296,
209 AF_BLUE_STRING_LATIN_SUBS_SMALL_DESCENDER = 3332,
210 AF_BLUE_STRING_LATIN_SUPS_CAPITAL_TOP = 3352,
211 AF_BLUE_STRING_LATIN_SUPS_CAPITAL_BOTTOM = 3383,
212 AF_BLUE_STRING_LATIN_SUPS_SMALL_F_TOP = 3412,
213 AF_BLUE_STRING_LATIN_SUPS_SMALL = 3438,
214 AF_BLUE_STRING_LATIN_SUPS_SMALL_DESCENDER = 3463,
215 AF_BLUE_STRING_LISU_TOP = 3474,
216 AF_BLUE_STRING_LISU_BOTTOM = 3506,
217 AF_BLUE_STRING_MALAYALAM_TOP = 3538,
218 AF_BLUE_STRING_MALAYALAM_BOTTOM = 3582,
219 AF_BLUE_STRING_MEDEFAIDRIN_CAPITAL_TOP = 3614,
220 AF_BLUE_STRING_MEDEFAIDRIN_CAPITAL_BOTTOM = 3649,
221 AF_BLUE_STRING_MEDEFAIDRIN_SMALL_F_TOP = 3689,
222 AF_BLUE_STRING_MEDEFAIDRIN_SMALL_TOP = 3719,
223 AF_BLUE_STRING_MEDEFAIDRIN_SMALL_BOTTOM = 3749,
224 AF_BLUE_STRING_MEDEFAIDRIN_SMALL_DESCENDER = 3779,
225 AF_BLUE_STRING_MEDEFAIDRIN_DIGIT_TOP = 3794,
226 AF_BLUE_STRING_MONGOLIAN_TOP_BASE = 3819,
227 AF_BLUE_STRING_MONGOLIAN_BOTTOM_BASE = 3863,
228 AF_BLUE_STRING_MYANMAR_TOP = 3867,
229 AF_BLUE_STRING_MYANMAR_BOTTOM = 3899,
230 AF_BLUE_STRING_MYANMAR_ASCENDER = 3931,
231 AF_BLUE_STRING_MYANMAR_DESCENDER = 3959,
232 AF_BLUE_STRING_NKO_TOP = 3991,
233 AF_BLUE_STRING_NKO_BOTTOM = 4015,
234 AF_BLUE_STRING_NKO_SMALL_TOP = 4030,
235 AF_BLUE_STRING_NKO_SMALL_BOTTOM = 4039,
236 AF_BLUE_STRING_OL_CHIKI = 4051,
237 AF_BLUE_STRING_OLD_TURKIC_TOP = 4075,
238 AF_BLUE_STRING_OLD_TURKIC_BOTTOM = 4090,
239 AF_BLUE_STRING_OSAGE_CAPITAL_TOP = 4110,
240 AF_BLUE_STRING_OSAGE_CAPITAL_BOTTOM = 4150,
241 AF_BLUE_STRING_OSAGE_CAPITAL_DESCENDER = 4180,
242 AF_BLUE_STRING_OSAGE_SMALL_TOP = 4195,
243 AF_BLUE_STRING_OSAGE_SMALL_BOTTOM = 4235,
244 AF_BLUE_STRING_OSAGE_SMALL_ASCENDER = 4275,
245 AF_BLUE_STRING_OSAGE_SMALL_DESCENDER = 4300,
246 AF_BLUE_STRING_OSMANYA_TOP = 4315,
247 AF_BLUE_STRING_OSMANYA_BOTTOM = 4355,
248 AF_BLUE_STRING_ROHINGYA_TOP = 4395,
249 AF_BLUE_STRING_ROHINGYA_BOTTOM = 4420,
250 AF_BLUE_STRING_ROHINGYA_JOIN = 4445,
251 AF_BLUE_STRING_SAURASHTRA_TOP = 4448,
252 AF_BLUE_STRING_SAURASHTRA_BOTTOM = 4480,
253 AF_BLUE_STRING_SHAVIAN_TOP = 4500,
254 AF_BLUE_STRING_SHAVIAN_BOTTOM = 4510,
255 AF_BLUE_STRING_SHAVIAN_DESCENDER = 4535,
256 AF_BLUE_STRING_SHAVIAN_SMALL_TOP = 4545,
257 AF_BLUE_STRING_SHAVIAN_SMALL_BOTTOM = 4580,
258 AF_BLUE_STRING_SINHALA_TOP = 4595,
259 AF_BLUE_STRING_SINHALA_BOTTOM = 4627,
260 AF_BLUE_STRING_SINHALA_DESCENDER = 4659,
261 AF_BLUE_STRING_SUNDANESE_TOP = 4703,
262 AF_BLUE_STRING_SUNDANESE_BOTTOM = 4727,
263 AF_BLUE_STRING_SUNDANESE_DESCENDER = 4759,
264 AF_BLUE_STRING_TAI_VIET_TOP = 4767,
265 AF_BLUE_STRING_TAI_VIET_BOTTOM = 4787,
266 AF_BLUE_STRING_TAMIL_TOP = 4799,
267 AF_BLUE_STRING_TAMIL_BOTTOM = 4831,
268 AF_BLUE_STRING_TELUGU_TOP = 4863,
269 AF_BLUE_STRING_TELUGU_BOTTOM = 4891,
270 AF_BLUE_STRING_THAI_TOP = 4919,
271 AF_BLUE_STRING_THAI_BOTTOM = 4943,
272 AF_BLUE_STRING_THAI_ASCENDER = 4971,
273 AF_BLUE_STRING_THAI_LARGE_ASCENDER = 4983,
274 AF_BLUE_STRING_THAI_DESCENDER = 4995,
275 AF_BLUE_STRING_THAI_LARGE_DESCENDER = 5011,
276 AF_BLUE_STRING_THAI_DIGIT_TOP = 5019,
277 AF_BLUE_STRING_TIFINAGH = 5031,
278 AF_BLUE_STRING_VAI_TOP = 5063,
279 AF_BLUE_STRING_VAI_BOTTOM = 5095,
281#ifdef AF_CONFIG_OPTION_CJK
282 AF_BLUE_STRING_CJK_TOP = af_blue_1_1 + 1,
283 AF_BLUE_STRING_CJK_BOTTOM = af_blue_1_1 + 203,
284 af_blue_1_1_1 = af_blue_1_1 + 404,
285#ifdef AF_CONFIG_OPTION_CJK_BLUE_HANI_VERT
286 AF_BLUE_STRING_CJK_LEFT = af_blue_1_1_1 + 1,
287 AF_BLUE_STRING_CJK_RIGHT = af_blue_1_1_1 + 204,
288 af_blue_1_1_2 = af_blue_1_1_1 + 405,
290 af_blue_1_1_2 = af_blue_1_1_1 + 0,
292 af_blue_1_2 = af_blue_1_1_2 + 0,
294 af_blue_1_2 = af_blue_1_1 + 0,
303 FT_LOCAL_ARRAY(
char )
321#define AF_BLUE_PROPERTY_LATIN_TOP ( 1U << 0 )
322#define AF_BLUE_PROPERTY_LATIN_SUB_TOP ( 1U << 1 )
323#define AF_BLUE_PROPERTY_LATIN_NEUTRAL ( 1U << 2 )
324#define AF_BLUE_PROPERTY_LATIN_X_HEIGHT ( 1U << 3 )
325#define AF_BLUE_PROPERTY_LATIN_LONG ( 1U << 4 )
327#define AF_BLUE_PROPERTY_LATIN_CAPITAL_BOTTOM ( 1U << 5 )
328#define AF_BLUE_PROPERTY_LATIN_SMALL_BOTTOM ( 1U << 6 )
330#define AF_BLUE_PROPERTY_CJK_TOP ( 1U << 0 )
331#define AF_BLUE_PROPERTY_CJK_HORIZ ( 1U << 1 )
332#define AF_BLUE_PROPERTY_CJK_RIGHT AF_BLUE_PROPERTY_CJK_TOP
335#define AF_BLUE_STRINGSET_MAX_LEN 8
340 typedef enum AF_Blue_Stringset_
342 AF_BLUE_STRINGSET_ADLM = 0,
343 AF_BLUE_STRINGSET_ARAB = 5,
344 AF_BLUE_STRINGSET_ARMN = 9,
345 AF_BLUE_STRINGSET_AVST = 16,
346 AF_BLUE_STRINGSET_BAMU = 19,
347 AF_BLUE_STRINGSET_BENG = 22,
348 AF_BLUE_STRINGSET_BUHD = 27,
349 AF_BLUE_STRINGSET_CAKM = 32,
350 AF_BLUE_STRINGSET_CANS = 36,
351 AF_BLUE_STRINGSET_CARI = 43,
352 AF_BLUE_STRINGSET_CHER = 46,
353 AF_BLUE_STRINGSET_COPT = 53,
354 AF_BLUE_STRINGSET_CPRT = 58,
355 AF_BLUE_STRINGSET_CYRL = 63,
356 AF_BLUE_STRINGSET_DEVA = 69,
357 AF_BLUE_STRINGSET_DSRT = 75,
358 AF_BLUE_STRINGSET_ETHI = 80,
359 AF_BLUE_STRINGSET_GEOR = 83,
360 AF_BLUE_STRINGSET_GEOK = 90,
361 AF_BLUE_STRINGSET_GLAG = 97,
362 AF_BLUE_STRINGSET_GOTH = 102,
363 AF_BLUE_STRINGSET_GREK = 105,
364 AF_BLUE_STRINGSET_GUJR = 112,
365 AF_BLUE_STRINGSET_GURU = 118,
366 AF_BLUE_STRINGSET_HEBR = 124,
367 AF_BLUE_STRINGSET_KNDA = 128,
368 AF_BLUE_STRINGSET_KALI = 131,
369 AF_BLUE_STRINGSET_KHMR = 137,
370 AF_BLUE_STRINGSET_KHMS = 143,
371 AF_BLUE_STRINGSET_LAO = 146,
372 AF_BLUE_STRINGSET_LATN = 152,
373 AF_BLUE_STRINGSET_LATB = 159,
374 AF_BLUE_STRINGSET_LATP = 166,
375 AF_BLUE_STRINGSET_LISU = 173,
376 AF_BLUE_STRINGSET_MLYM = 176,
377 AF_BLUE_STRINGSET_MEDF = 179,
378 AF_BLUE_STRINGSET_MONG = 187,
379 AF_BLUE_STRINGSET_MYMR = 190,
380 AF_BLUE_STRINGSET_NKOO = 195,
381 AF_BLUE_STRINGSET_NONE = 200,
382 AF_BLUE_STRINGSET_OLCK = 201,
383 AF_BLUE_STRINGSET_ORKH = 204,
384 AF_BLUE_STRINGSET_OSGE = 207,
385 AF_BLUE_STRINGSET_OSMA = 215,
386 AF_BLUE_STRINGSET_ROHG = 218,
387 AF_BLUE_STRINGSET_SAUR = 222,
388 AF_BLUE_STRINGSET_SHAW = 225,
389 AF_BLUE_STRINGSET_SINH = 231,
390 AF_BLUE_STRINGSET_SUND = 235,
391 AF_BLUE_STRINGSET_TAML = 239,
392 AF_BLUE_STRINGSET_TAVT = 242,
393 AF_BLUE_STRINGSET_TELU = 245,
394 AF_BLUE_STRINGSET_THAI = 248,
395 AF_BLUE_STRINGSET_TFNG = 256,
396 AF_BLUE_STRINGSET_VAII = 259,
398#ifdef AF_CONFIG_OPTION_CJK
399 AF_BLUE_STRINGSET_HANI = af_blue_2_1 + 0,
400 af_blue_2_1_1 = af_blue_2_1 + 2,
401#ifdef AF_CONFIG_OPTION_CJK_BLUE_HANI_VERT
402 af_blue_2_1_2 = af_blue_2_1_1 + 2,
404 af_blue_2_1_2 = af_blue_2_1_1 + 0,
406 af_blue_2_2 = af_blue_2_1_2 + 1,
408 af_blue_2_2 = af_blue_2_1 + 0,
412 AF_BLUE_STRINGSET_MAX
419 AF_Blue_String string;
420 FT_UShort properties;
425 FT_LOCAL_ARRAY( AF_Blue_StringRec )
426 af_blue_stringsets[];