[OTLayout] Reuse apply context for recursion
This commit is contained in:
parent
53a69f49e5
commit
4c4e8f0e75
|
@ -1537,8 +1537,13 @@ inline bool PosLookup::apply_recurse_func (hb_apply_context_t *c, unsigned int l
|
||||||
{
|
{
|
||||||
const GPOS &gpos = *(hb_ot_layout_from_face (c->face)->gpos);
|
const GPOS &gpos = *(hb_ot_layout_from_face (c->face)->gpos);
|
||||||
const PosLookup &l = gpos.get_lookup (lookup_index);
|
const PosLookup &l = gpos.get_lookup (lookup_index);
|
||||||
|
unsigned int saved_lookup_props = c->lookup_props;
|
||||||
|
unsigned int saved_property = c->property;
|
||||||
c->set_lookup (l);
|
c->set_lookup (l);
|
||||||
return l.apply_once (c);
|
bool ret = l.apply_once (c);
|
||||||
|
c->lookup_props = saved_lookup_props;
|
||||||
|
c->property = saved_property;
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1402,8 +1402,13 @@ inline bool SubstLookup::apply_recurse_func (hb_apply_context_t *c, unsigned int
|
||||||
{
|
{
|
||||||
const GSUB &gsub = *(hb_ot_layout_from_face (c->face)->gsub);
|
const GSUB &gsub = *(hb_ot_layout_from_face (c->face)->gsub);
|
||||||
const SubstLookup &l = gsub.get_lookup (lookup_index);
|
const SubstLookup &l = gsub.get_lookup (lookup_index);
|
||||||
|
unsigned int saved_lookup_props = c->lookup_props;
|
||||||
|
unsigned int saved_property = c->property;
|
||||||
c->set_lookup (l);
|
c->set_lookup (l);
|
||||||
return l.apply_once (c);
|
bool ret = l.apply_once (c);
|
||||||
|
c->lookup_props = saved_lookup_props;
|
||||||
|
c->property = saved_property;
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -233,10 +233,10 @@ struct hb_apply_context_t
|
||||||
if (unlikely (nesting_level_left == 0 || !recurse_func))
|
if (unlikely (nesting_level_left == 0 || !recurse_func))
|
||||||
return default_return_value ();
|
return default_return_value ();
|
||||||
|
|
||||||
/* TODO Reuse context. */
|
nesting_level_left--;
|
||||||
hb_apply_context_t new_c (*this);
|
recurse_func (this, lookup_index);
|
||||||
new_c.nesting_level_left--;
|
nesting_level_left++;
|
||||||
return recurse_func (&new_c, lookup_index);
|
return default_return_value ();
|
||||||
}
|
}
|
||||||
|
|
||||||
hb_font_t *font;
|
hb_font_t *font;
|
||||||
|
|
Loading…
Reference in New Issue