Unused currently. To be used for Syriac stretch implementation.
https://github.com/behdad/harfbuzz/issues/141
NULL, /* override_features */
data_create_arabic,
data_destroy_arabic,
- NULL, /* preprocess_text_arabic */
+ NULL, /* preprocess_text */
+ NULL, /* postprocess_glyphs */
HB_OT_SHAPE_NORMALIZATION_MODE_DEFAULT,
NULL, /* decompose */
NULL, /* compose */
NULL, /* data_create */
NULL, /* data_destroy */
NULL, /* preprocess_text */
+ NULL, /* postprocess_glyphs */
HB_OT_SHAPE_NORMALIZATION_MODE_DEFAULT,
NULL, /* decompose */
NULL, /* compose */
"hangul",
collect_features_hangul,
override_features_hangul,
- data_create_hangul, /* data_create */
- data_destroy_hangul, /* data_destroy */
+ data_create_hangul,
+ data_destroy_hangul,
preprocess_text_hangul,
+ NULL, /* postprocess_glyphs */
HB_OT_SHAPE_NORMALIZATION_MODE_NONE,
NULL, /* decompose */
NULL, /* compose */
- setup_masks_hangul, /* setup_masks */
+ setup_masks_hangul,
HB_OT_SHAPE_ZERO_WIDTH_MARKS_NONE,
false, /* fallback_position */
};
NULL, /* data_create */
NULL, /* data_destroy */
NULL, /* preprocess_text */
+ NULL, /* postprocess_glyphs */
HB_OT_SHAPE_NORMALIZATION_MODE_DEFAULT,
NULL, /* decompose */
compose_hebrew,
data_create_indic,
data_destroy_indic,
NULL, /* preprocess_text */
+ NULL, /* postprocess_glyphs */
HB_OT_SHAPE_NORMALIZATION_MODE_COMPOSED_DIACRITICS_NO_SHORT_CIRCUIT,
decompose_indic,
compose_indic,
NULL, /* data_create */
NULL, /* data_destroy */
NULL, /* preprocess_text */
+ NULL, /* postprocess_glyphs */
HB_OT_SHAPE_NORMALIZATION_MODE_DEFAULT,
NULL, /* decompose */
NULL, /* compose */
NULL, /* data_create */
NULL, /* data_destroy */
NULL, /* preprocess_text */
+ NULL, /* postprocess_glyphs */
HB_OT_SHAPE_NORMALIZATION_MODE_COMPOSED_DIACRITICS_NO_SHORT_CIRCUIT,
NULL, /* decompose */
NULL, /* compose */
hb_buffer_t *buffer,
hb_font_t *font);
+ /* postprocess_glyphs()
+ * Called during shape().
+ * Shapers can use to modify glyphs after shaping ends.
+ * May be NULL.
+ */
+ void (*postprocess_glyphs) (const hb_ot_shape_plan_t *plan,
+ hb_buffer_t *buffer,
+ hb_font_t *font);
+
hb_ot_shape_normalization_mode_t normalization_preference;
NULL, /* data_create */
NULL, /* data_destroy */
preprocess_text_thai,
+ NULL, /* postprocess_glyphs */
HB_OT_SHAPE_NORMALIZATION_MODE_DEFAULT,
NULL, /* decompose */
NULL, /* compose */
NULL, /* data_create */
NULL, /* data_destroy */
NULL, /* preprocess_text */
+ NULL, /* postprocess_glyphs */
HB_OT_SHAPE_NORMALIZATION_MODE_DEFAULT,
NULL, /* decompose */
NULL, /* compose */
data_create_use,
data_destroy_use,
NULL, /* preprocess_text */
+ NULL, /* postprocess_glyphs */
HB_OT_SHAPE_NORMALIZATION_MODE_COMPOSED_DIACRITICS_NO_SHORT_CIRCUIT,
NULL, /* decompose */
compose_use,
{
hb_buffer_t *buffer = c->buffer;
- if (c->plan->shaper->preprocess_text)
- c->plan->shaper->preprocess_text (c->plan, buffer, c->font);
-
hb_ot_shape_initialize_masks (c);
hb_ot_mirror_chars (c);
hb_ensure_native_direction (c->buffer);
+ if (c->plan->shaper->preprocess_text)
+ c->plan->shaper->preprocess_text (c->plan, c->buffer, c->font);
+
hb_ot_substitute (c);
hb_ot_position (c);
hb_ot_hide_default_ignorables (c);
+ if (c->plan->shaper->postprocess_glyphs)
+ c->plan->shaper->postprocess_glyphs (c->plan, c->buffer, c->font);
+
_hb_buffer_deallocate_unicode_vars (c->buffer);
c->buffer->props.direction = c->target_direction;