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,
return _get_gsub (face).substitute_lookup (face, buffer, lookup_index, mask);
}
+void
+hb_ot_layout_substitute_finish (hb_buffer_t *buffer)
+{
+}
+
/*
* GPOS
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
*/