OLD | NEW |
1 /* | 1 /* |
2 * Copyright © 2010,2011,2012 Google, Inc. | 2 * Copyright © 2010,2011,2012 Google, Inc. |
3 * | 3 * |
4 * This is part of HarfBuzz, a text shaping library. | 4 * This is part of HarfBuzz, a text shaping library. |
5 * | 5 * |
6 * Permission is hereby granted, without written agreement and without | 6 * Permission is hereby granted, without written agreement and without |
7 * license or royalty fees, to use, copy, modify, and distribute this | 7 * license or royalty fees, to use, copy, modify, and distribute this |
8 * software and its documentation for any purpose, provided that the | 8 * software and its documentation for any purpose, provided that the |
9 * above copyright notice and the following two paragraphs appear in | 9 * above copyright notice and the following two paragraphs appear in |
10 * all copies of this software. | 10 * all copies of this software. |
(...skipping 26 matching lines...) Expand all Loading... |
37 /* buffer var allocations, used by complex shapers */ | 37 /* buffer var allocations, used by complex shapers */ |
38 #define complex_var_u8_0() var2.u8[2] | 38 #define complex_var_u8_0() var2.u8[2] |
39 #define complex_var_u8_1() var2.u8[3] | 39 #define complex_var_u8_1() var2.u8[3] |
40 | 40 |
41 | 41 |
42 enum hb_ot_shape_zero_width_marks_type_t { | 42 enum hb_ot_shape_zero_width_marks_type_t { |
43 HB_OT_SHAPE_ZERO_WIDTH_MARKS_NONE, | 43 HB_OT_SHAPE_ZERO_WIDTH_MARKS_NONE, |
44 // HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_UNICODE_EARLY, | 44 // HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_UNICODE_EARLY, |
45 HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_UNICODE_LATE, | 45 HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_UNICODE_LATE, |
46 HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_GDEF_EARLY, | 46 HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_GDEF_EARLY, |
47 HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_GDEF_LATE | 47 HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_GDEF_LATE, |
| 48 |
| 49 HB_OT_SHAPE_ZERO_WIDTH_MARKS_DEFAULT = HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_UNICODE
_LATE |
48 }; | 50 }; |
49 | 51 |
50 | 52 |
51 /* Master OT shaper list */ | 53 /* Master OT shaper list */ |
52 #define HB_COMPLEX_SHAPERS_IMPLEMENT_SHAPERS \ | 54 #define HB_COMPLEX_SHAPERS_IMPLEMENT_SHAPERS \ |
53 HB_COMPLEX_SHAPER_IMPLEMENT (default) /* should be first */ \ | 55 HB_COMPLEX_SHAPER_IMPLEMENT (default) /* should be first */ \ |
54 HB_COMPLEX_SHAPER_IMPLEMENT (arabic) \ | 56 HB_COMPLEX_SHAPER_IMPLEMENT (arabic) \ |
| 57 HB_COMPLEX_SHAPER_IMPLEMENT (hangul) \ |
| 58 HB_COMPLEX_SHAPER_IMPLEMENT (hebrew) \ |
55 HB_COMPLEX_SHAPER_IMPLEMENT (indic) \ | 59 HB_COMPLEX_SHAPER_IMPLEMENT (indic) \ |
56 HB_COMPLEX_SHAPER_IMPLEMENT (myanmar) \ | 60 HB_COMPLEX_SHAPER_IMPLEMENT (myanmar) \ |
57 HB_COMPLEX_SHAPER_IMPLEMENT (sea) \ | 61 HB_COMPLEX_SHAPER_IMPLEMENT (sea) \ |
58 HB_COMPLEX_SHAPER_IMPLEMENT (thai) \ | 62 HB_COMPLEX_SHAPER_IMPLEMENT (thai) \ |
| 63 HB_COMPLEX_SHAPER_IMPLEMENT (tibetan) \ |
59 /* ^--- Add new shapers here */ | 64 /* ^--- Add new shapers here */ |
60 | 65 |
61 | 66 |
62 struct hb_ot_complex_shaper_t | 67 struct hb_ot_complex_shaper_t |
63 { | 68 { |
64 char name[8]; | 69 char name[8]; |
65 | 70 |
66 /* collect_features() | 71 /* collect_features() |
67 * Called during shape_plan(). | 72 * Called during shape_plan(). |
68 * Shapers should use plan->map to add their features and callbacks. | 73 * Shapers should use plan->map to add their features and callbacks. |
(...skipping 29 matching lines...) Expand all Loading... |
98 /* preprocess_text() | 103 /* preprocess_text() |
99 * Called during shape(). | 104 * Called during shape(). |
100 * Shapers can use to modify text before shaping starts. | 105 * Shapers can use to modify text before shaping starts. |
101 * May be NULL. | 106 * May be NULL. |
102 */ | 107 */ |
103 void (*preprocess_text) (const hb_ot_shape_plan_t *plan, | 108 void (*preprocess_text) (const hb_ot_shape_plan_t *plan, |
104 hb_buffer_t *buffer, | 109 hb_buffer_t *buffer, |
105 hb_font_t *font); | 110 hb_font_t *font); |
106 | 111 |
107 | 112 |
108 /* normalization_preference() | 113 hb_ot_shape_normalization_mode_t normalization_preference; |
109 * Called during shape(). | |
110 * May be NULL. | |
111 */ | |
112 hb_ot_shape_normalization_mode_t | |
113 (*normalization_preference) (const hb_segment_properties_t *props); | |
114 | 114 |
115 /* decompose() | 115 /* decompose() |
116 * Called during shape()'s normalization. | 116 * Called during shape()'s normalization. |
117 * May be NULL. | 117 * May be NULL. |
118 */ | 118 */ |
119 bool (*decompose) (const hb_ot_shape_normalize_context_t *c, | 119 bool (*decompose) (const hb_ot_shape_normalize_context_t *c, |
120 hb_codepoint_t ab, | 120 hb_codepoint_t ab, |
121 hb_codepoint_t *a, | 121 hb_codepoint_t *a, |
122 hb_codepoint_t *b); | 122 hb_codepoint_t *b); |
123 | 123 |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
182 return &_hb_ot_complex_shaper_default; | 182 return &_hb_ot_complex_shaper_default; |
183 | 183 |
184 | 184 |
185 /* Unicode-1.1 additions */ | 185 /* Unicode-1.1 additions */ |
186 case HB_SCRIPT_THAI: | 186 case HB_SCRIPT_THAI: |
187 case HB_SCRIPT_LAO: | 187 case HB_SCRIPT_LAO: |
188 | 188 |
189 return &_hb_ot_complex_shaper_thai; | 189 return &_hb_ot_complex_shaper_thai; |
190 | 190 |
191 | 191 |
192 #if 0 | |
193 /* Note: | |
194 * Currently we don't have a separate Hangul shaper. The default shaper han
dles | |
195 * Hangul by enabling jamo features. We may want to implement a separate sh
aper | |
196 * in the future. See this thread for details of what such a shaper would d
o: | |
197 * | |
198 * http://lists.freedesktop.org/archives/harfbuzz/2013-April/003070.html | |
199 */ | |
200 /* Unicode-1.1 additions */ | 192 /* Unicode-1.1 additions */ |
201 case HB_SCRIPT_HANGUL: | 193 case HB_SCRIPT_HANGUL: |
202 | 194 |
203 return &_hb_ot_complex_shaper_hangul; | 195 return &_hb_ot_complex_shaper_hangul; |
204 #endif | 196 |
| 197 |
| 198 /* Unicode-2.0 additions */ |
| 199 case HB_SCRIPT_TIBETAN: |
| 200 |
| 201 return &_hb_ot_complex_shaper_tibetan; |
| 202 |
| 203 |
| 204 /* Unicode-1.1 additions */ |
| 205 case HB_SCRIPT_HEBREW: |
| 206 |
| 207 return &_hb_ot_complex_shaper_hebrew; |
205 | 208 |
206 | 209 |
207 /* ^--- Add new shapers here */ | 210 /* ^--- Add new shapers here */ |
208 | 211 |
209 | 212 |
210 #if 0 | 213 #if 0 |
211 /* Note: | 214 /* Note: |
212 * | 215 * |
213 * These disabled scripts are listed in ucd/IndicSyllabicCategory.txt, but a
ccording | 216 * These disabled scripts are listed in ucd/IndicSyllabicCategory.txt, but a
ccording |
214 * to Martin Hosken and Jonathan Kew do not require complex shaping. | 217 * to Martin Hosken and Jonathan Kew do not require complex shaping. |
(...skipping 19 matching lines...) Expand all Loading... |
234 case HB_SCRIPT_BRAHMI: | 237 case HB_SCRIPT_BRAHMI: |
235 | 238 |
236 | 239 |
237 /* Simple */ | 240 /* Simple */ |
238 | 241 |
239 /* Unicode-1.1 additions */ | 242 /* Unicode-1.1 additions */ |
240 /* These have their own shaper now. */ | 243 /* These have their own shaper now. */ |
241 case HB_SCRIPT_LAO: | 244 case HB_SCRIPT_LAO: |
242 case HB_SCRIPT_THAI: | 245 case HB_SCRIPT_THAI: |
243 | 246 |
244 /* Unicode-2.0 additions */ | |
245 case HB_SCRIPT_TIBETAN: | |
246 | |
247 /* Unicode-3.2 additions */ | 247 /* Unicode-3.2 additions */ |
248 case HB_SCRIPT_TAGALOG: | 248 case HB_SCRIPT_TAGALOG: |
249 case HB_SCRIPT_TAGBANWA: | 249 case HB_SCRIPT_TAGBANWA: |
250 | 250 |
251 /* Unicode-4.0 additions */ | 251 /* Unicode-4.0 additions */ |
252 case HB_SCRIPT_LIMBU: | 252 case HB_SCRIPT_LIMBU: |
253 case HB_SCRIPT_TAI_LE: | 253 case HB_SCRIPT_TAI_LE: |
254 | 254 |
255 /* Unicode-4.1 additions */ | 255 /* Unicode-4.1 additions */ |
256 case HB_SCRIPT_KHAROSHTHI: | 256 case HB_SCRIPT_KHAROSHTHI: |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
348 * GSUB/GPOS needed, so there may be no scripts found! */ | 348 * GSUB/GPOS needed, so there may be no scripts found! */ |
349 if (planner->map.chosen_script[0] == HB_TAG ('D','F','L','T')) | 349 if (planner->map.chosen_script[0] == HB_TAG ('D','F','L','T')) |
350 return &_hb_ot_complex_shaper_default; | 350 return &_hb_ot_complex_shaper_default; |
351 else | 351 else |
352 return &_hb_ot_complex_shaper_sea; | 352 return &_hb_ot_complex_shaper_sea; |
353 } | 353 } |
354 } | 354 } |
355 | 355 |
356 | 356 |
357 #endif /* HB_OT_SHAPE_COMPLEX_PRIVATE_HH */ | 357 #endif /* HB_OT_SHAPE_COMPLEX_PRIVATE_HH */ |
OLD | NEW |