diff --git a/src/hb-ot-layout.cc b/src/hb-ot-layout.cc index 8398bbace..0d34e11e3 100644 --- a/src/hb-ot-layout.cc +++ b/src/hb-ot-layout.cc @@ -440,6 +440,14 @@ hb_ot_layout_has_substitution (hb_face_t *face) return &_get_gsub (face) != &Null(GSUB); } +void +hb_ot_layout_substitute_start (hb_buffer_t *buffer) +{ + unsigned int count = buffer->len; + for (unsigned int i = 0; i < count; i++) + buffer->info[i].var1.u32 = buffer->info[i].var2.u32 = 0; +} + hb_bool_t hb_ot_layout_substitute_lookup (hb_face_t *face, hb_buffer_t *buffer, @@ -449,6 +457,11 @@ hb_ot_layout_substitute_lookup (hb_face_t *face, return _get_gsub (face).substitute_lookup (face, buffer, lookup_index, mask); } +void +hb_ot_layout_substitute_finish (hb_buffer_t *buffer) +{ +} + /* * GPOS diff --git a/src/hb-ot-layout.h b/src/hb-ot-layout.h index a6dbc61fc..5257244f1 100644 --- a/src/hb-ot-layout.h +++ b/src/hb-ot-layout.h @@ -165,12 +165,20 @@ hb_ot_layout_feature_get_lookup_indexes (hb_face_t *face, hb_bool_t hb_ot_layout_has_substitution (hb_face_t *face); +/* Should be called before all the substitute_lookup's are done. */ +void +hb_ot_layout_substitute_start (hb_buffer_t *buffer); + hb_bool_t hb_ot_layout_substitute_lookup (hb_face_t *face, hb_buffer_t *buffer, unsigned int lookup_index, hb_mask_t mask); +/* Should be called after all the substitute_lookup's are done */ +void +hb_ot_layout_substitute_finish (hb_buffer_t *buffer); + /* * GPOS */