Use Coverage digests in would_apply
This commit is contained in:
parent
6c459c8fef
commit
22148b8c4a
|
@ -1170,6 +1170,7 @@ struct SubstLookup : Lookup
|
||||||
|
|
||||||
inline bool would_apply (hb_would_apply_context_t *c) const
|
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 lookup_type = get_type ();
|
||||||
unsigned int count = get_subtable_count ();
|
unsigned int count = get_subtable_count ();
|
||||||
for (unsigned int i = 0; i < count; i++)
|
for (unsigned int i = 0; i < count; i++)
|
||||||
|
|
|
@ -77,14 +77,18 @@ struct hb_would_apply_context_t
|
||||||
hb_face_t *face;
|
hb_face_t *face;
|
||||||
hb_codepoint_t first;
|
hb_codepoint_t first;
|
||||||
hb_codepoint_t second;
|
hb_codepoint_t second;
|
||||||
|
const hb_set_digest_t digest;
|
||||||
unsigned int len;
|
unsigned int len;
|
||||||
unsigned int debug_depth;
|
unsigned int debug_depth;
|
||||||
|
|
||||||
hb_would_apply_context_t (hb_face_t *face_,
|
hb_would_apply_context_t (hb_face_t *face_,
|
||||||
hb_codepoint_t first_,
|
hb_codepoint_t first_,
|
||||||
hb_codepoint_t second_ = -1) :
|
hb_codepoint_t second_,
|
||||||
|
const hb_set_digest_t *digest_
|
||||||
|
) :
|
||||||
face (face_),
|
face (face_),
|
||||||
first (first_), second (second_), len (second == (hb_codepoint_t) -1 ? 1 : 2),
|
first (first_), second (second_), len (second == (hb_codepoint_t) -1 ? 1 : 2),
|
||||||
|
digest (*digest_),
|
||||||
debug_depth (0) {};
|
debug_depth (0) {};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -406,7 +406,7 @@ hb_ot_layout_would_substitute_lookup (hb_face_t *face,
|
||||||
unsigned int lookup_index)
|
unsigned int lookup_index)
|
||||||
{
|
{
|
||||||
if (unlikely (glyphs_length < 1 || glyphs_length > 2)) return false;
|
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);
|
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)
|
unsigned int lookup_index)
|
||||||
{
|
{
|
||||||
if (unlikely (glyphs_length < 1 || glyphs_length > 2)) return false;
|
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);
|
return hb_ot_layout_from_face (face)->gsub->would_substitute_lookup (&c, lookup_index);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue