[paint] Try to adjust both renderers to use same clip order
This commit is contained in:
parent
3fd6c0d97a
commit
f283d4d366
|
@ -2052,8 +2052,7 @@ struct COLR
|
||||||
&extents,
|
&extents,
|
||||||
instancer))
|
instancer))
|
||||||
{
|
{
|
||||||
c.funcs->push_root_transform (c.data, font);
|
font->scale_glyph_extents (&extents);
|
||||||
|
|
||||||
c.funcs->push_clip_rectangle (c.data,
|
c.funcs->push_clip_rectangle (c.data,
|
||||||
extents.x_bearing,
|
extents.x_bearing,
|
||||||
extents.y_bearing + extents.height,
|
extents.y_bearing + extents.height,
|
||||||
|
@ -2062,8 +2061,6 @@ struct COLR
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
c.funcs->push_root_transform (c.data, font);
|
|
||||||
|
|
||||||
auto *extents_funcs = hb_paint_extents_get_funcs ();
|
auto *extents_funcs = hb_paint_extents_get_funcs ();
|
||||||
hb_paint_extents_context_t extents_data;
|
hb_paint_extents_context_t extents_data;
|
||||||
|
|
||||||
|
@ -2074,6 +2071,16 @@ struct COLR
|
||||||
|
|
||||||
hb_extents_t extents = extents_data.get_extents ();
|
hb_extents_t extents = extents_data.get_extents ();
|
||||||
is_bounded = extents_data.is_bounded ();
|
is_bounded = extents_data.is_bounded ();
|
||||||
|
|
||||||
|
/* Transform extents... */
|
||||||
|
/* Copied from paint.hh push_root_transform(). */
|
||||||
|
float upem = font->face->get_upem ();
|
||||||
|
int xscale = font->x_scale, yscale = font->y_scale;
|
||||||
|
float slant = font->slant_xy;
|
||||||
|
hb_transform_t t (xscale/upem, 0, slant * yscale/upem, yscale/upem, 0, 0);
|
||||||
|
|
||||||
|
t.transform_extents (extents);
|
||||||
|
|
||||||
c.funcs->push_clip_rectangle (c.data,
|
c.funcs->push_clip_rectangle (c.data,
|
||||||
extents.xmin,
|
extents.xmin,
|
||||||
extents.ymin,
|
extents.ymin,
|
||||||
|
@ -2082,12 +2089,13 @@ struct COLR
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
c.funcs->push_root_transform (c.data, font);
|
||||||
|
|
||||||
if (is_bounded)
|
if (is_bounded)
|
||||||
c.recurse (*paint);
|
c.recurse (*paint);
|
||||||
|
|
||||||
// We push root transform first and clip after in this backend
|
|
||||||
c.funcs->pop_clip (c.data);
|
|
||||||
c.funcs->pop_transform (c.data);
|
c.funcs->pop_transform (c.data);
|
||||||
|
c.funcs->pop_clip (c.data);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -478,7 +478,6 @@ hb_ft_paint_glyph_colr (hb_font_t *font,
|
||||||
if (is_bounded)
|
if (is_bounded)
|
||||||
c.recurse (paint);
|
c.recurse (paint);
|
||||||
|
|
||||||
// We push clip first and root transform after in this backend
|
|
||||||
c.funcs->pop_transform (c.data);
|
c.funcs->pop_transform (c.data);
|
||||||
c.funcs->pop_clip (c.data);
|
c.funcs->pop_clip (c.data);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue