提交 22148b8c 编写于 作者: B Behdad Esfahbod

Use Coverage digests in would_apply

上级 6c459c8f
......@@ -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++)
......
......@@ -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) {};
};
......
......@@ -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);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册