[glyf/VarComposite] Set coordinates
Code is untested but complete!
This commit is contained in:
parent
4ec7781497
commit
7efd68da39
|
@ -356,7 +356,8 @@ struct Glyph
|
||||||
|
|
||||||
comp_points.reset ();
|
comp_points.reset ();
|
||||||
|
|
||||||
/* XXX Apply variations. */
|
coord_setter_t coord_setter (font);
|
||||||
|
item.set_coordinates (coord_setter, record_points);
|
||||||
|
|
||||||
if (unlikely (!glyf_accelerator.glyph_for_gid (item.get_gid ())
|
if (unlikely (!glyf_accelerator.glyph_for_gid (item.get_gid ())
|
||||||
.get_points (font, glyf_accelerator, comp_points,
|
.get_points (font, glyf_accelerator, comp_points,
|
||||||
|
|
|
@ -226,6 +226,22 @@ struct VarCompositeGlyphRecord
|
||||||
translate (matrix, trans, -tCenterX, -tCenterY);
|
translate (matrix, trans, -tCenterX, -tCenterY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void set_coordinates (coord_setter_t &setter,
|
||||||
|
hb_array_t<contour_point_t> axis_points) const
|
||||||
|
{
|
||||||
|
unsigned axis_width = (flags & AXIS_INDICES_ARE_SHORT) ? 2 : 1;
|
||||||
|
|
||||||
|
const HBUINT8 *p = &StructAfter<const HBUINT8> (num_axes);
|
||||||
|
const HBUINT16 *q = &StructAfter<const HBUINT16> (num_axes);
|
||||||
|
|
||||||
|
unsigned count = num_axes;
|
||||||
|
for (unsigned i = 0; i < count; i++)
|
||||||
|
{
|
||||||
|
unsigned axis_index = axis_width == 1 ? *p++ : *q++;
|
||||||
|
setter[axis_index] = axis_points[i].x;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
HBUINT16 flags;
|
HBUINT16 flags;
|
||||||
HBGlyphID16 gid;
|
HBGlyphID16 gid;
|
||||||
|
|
Loading…
Reference in New Issue