129 130 /* compose() 131 * Called during shape()'s normalization. 132 * May be NULL. 133 */ 134 bool (*compose) (const hb_ot_shape_normalize_context_t *c, 135 hb_codepoint_t a, 136 hb_codepoint_t b, 137 hb_codepoint_t *ab); 138 139 /* setup_masks() 140 * Called during shape(). 141 * Shapers should use map to get feature masks and set on buffer. 142 * Shapers may NOT modify characters. 143 * May be NULL. 144 */ 145 void (*setup_masks) (const hb_ot_shape_plan_t *plan, 146 hb_buffer_t *buffer, 147 hb_font_t *font); 148 149 hb_ot_shape_zero_width_marks_type_t zero_width_marks; 150 151 bool fallback_position; 152 }; 153 154 #define HB_COMPLEX_SHAPER_IMPLEMENT(name) extern HB_INTERNAL const hb_ot_complex_shaper_t _hb_ot_complex_shaper_##name; 155 HB_COMPLEX_SHAPERS_IMPLEMENT_SHAPERS 156 #undef HB_COMPLEX_SHAPER_IMPLEMENT 157 158 159 static inline const hb_ot_complex_shaper_t * 160 hb_ot_shape_complex_categorize (const hb_ot_shape_planner_t *planner) 161 { 162 switch ((hb_tag_t) planner->props.script) 163 { 164 default: 165 return &_hb_ot_complex_shaper_default; 166 167 168 /* Unicode-1.1 additions */ | 129 130 /* compose() 131 * Called during shape()'s normalization. 132 * May be NULL. 133 */ 134 bool (*compose) (const hb_ot_shape_normalize_context_t *c, 135 hb_codepoint_t a, 136 hb_codepoint_t b, 137 hb_codepoint_t *ab); 138 139 /* setup_masks() 140 * Called during shape(). 141 * Shapers should use map to get feature masks and set on buffer. 142 * Shapers may NOT modify characters. 143 * May be NULL. 144 */ 145 void (*setup_masks) (const hb_ot_shape_plan_t *plan, 146 hb_buffer_t *buffer, 147 hb_font_t *font); 148 149 /* disable_otl() 150 * Called during shape(). 151 * If set and returns true, GDEF/GSUB/GPOS of the font are ignored 152 * and fallback operations used. 153 * May be NULL. 154 */ 155 bool (*disable_otl) (const hb_ot_shape_plan_t *plan); 156 157 hb_ot_shape_zero_width_marks_type_t zero_width_marks; 158 159 bool fallback_position; 160 }; 161 162 #define HB_COMPLEX_SHAPER_IMPLEMENT(name) extern HB_INTERNAL const hb_ot_complex_shaper_t _hb_ot_complex_shaper_##name; 163 HB_COMPLEX_SHAPERS_IMPLEMENT_SHAPERS 164 #undef HB_COMPLEX_SHAPER_IMPLEMENT 165 166 167 static inline const hb_ot_complex_shaper_t * 168 hb_ot_shape_complex_categorize (const hb_ot_shape_planner_t *planner) 169 { 170 switch ((hb_tag_t) planner->props.script) 171 { 172 default: 173 return &_hb_ot_complex_shaper_default; 174 175 176 /* Unicode-1.1 additions */ |