Use Coverage digests in would_apply

This commit is contained in:
Behdad Esfahbod 2012-08-02 03:51:51 -04:00
parent 6c459c8fef
commit 22148b8c4a
3 changed files with 8 additions and 3 deletions

View File

@ -1170,6 +1170,7 @@ struct SubstLookup : Lookup
inline bool would_apply (hb_would_apply_context_t *c) const
{
if (!c->digest.may_have (c->first)) return false;
unsigned int lookup_type = get_type ();
unsigned int count = get_subtable_count ();
for (unsigned int i = 0; i < count; i++)

View File

@ -77,14 +77,18 @@ struct hb_would_apply_context_t
hb_face_t *face;
hb_codepoint_t first;
hb_codepoint_t second;
const hb_set_digest_t digest;
unsigned int len;
unsigned int debug_depth;
hb_would_apply_context_t (hb_face_t *face_,
hb_codepoint_t first_,
hb_codepoint_t second_ = -1) :
hb_codepoint_t second_,
const hb_set_digest_t *digest_
) :
face (face_),
first (first_), second (second_), len (second == (hb_codepoint_t) -1 ? 1 : 2),
digest (*digest_),
debug_depth (0) {};
};

View File

@ -406,7 +406,7 @@ hb_ot_layout_would_substitute_lookup (hb_face_t *face,
unsigned int lookup_index)
{
if (unlikely (glyphs_length < 1 || glyphs_length > 2)) return false;
hb_would_apply_context_t c (face, glyphs[0], glyphs_length == 2 ? glyphs[1] : -1);
hb_would_apply_context_t c (face, glyphs[0], glyphs_length == 2 ? glyphs[1] : -1, NULL);
return _get_gsub (face).would_substitute_lookup (&c, lookup_index);
}
@ -417,7 +417,7 @@ hb_ot_layout_would_substitute_lookup_fast (hb_face_t *face,
unsigned int lookup_index)
{
if (unlikely (glyphs_length < 1 || glyphs_length > 2)) return false;
hb_would_apply_context_t c (face, glyphs[0], glyphs_length == 2 ? glyphs[1] : -1);
hb_would_apply_context_t c (face, glyphs[0], glyphs_length == 2 ? glyphs[1] : -1, &hb_ot_layout_from_face (face)->gsub_digests[lookup_index]);
return hb_ot_layout_from_face (face)->gsub->would_substitute_lookup (&c, lookup_index);
}