[subset] remove WE_HAVE_INSTRUCTIONS from composites when dropping hints
This commit is contained in:
parent
ffcb5cbf71
commit
6836a82142
@ -180,7 +180,17 @@ _write_glyf_and_loca_prime (hb_subset_plan_t *plan,
|
||||
memcpy (glyf_prime_data_next + instruction_start - start_offset, glyf_data + instruction_end, end_offset - instruction_end);
|
||||
/* if the instructions end at the end this was a composite glyph */
|
||||
if (instruction_end == end_offset)
|
||||
; // TODO(rsheeter) remove WE_HAVE_INSTRUCTIONS from last flags
|
||||
{
|
||||
/* remove WE_HAVE_INSTRUCTIONS from flags in dest */
|
||||
OT::glyf::CompositeGlyphHeader::Iterator composite_it;
|
||||
if (unlikely (!OT::glyf::CompositeGlyphHeader::get_iterator (glyf_prime_data_next, length, &composite_it))) return false;
|
||||
const OT::glyf::CompositeGlyphHeader *glyph;
|
||||
do {
|
||||
glyph = composite_it.current;
|
||||
OT::HBUINT16 *flags = const_cast<OT::HBUINT16 *> (&glyph->flags);
|
||||
flags->set ( (uint16_t) *flags & ~OT::glyf::CompositeGlyphHeader::WE_HAVE_INSTRUCTIONS);
|
||||
} while (composite_it.move_to_next());
|
||||
}
|
||||
else
|
||||
/* zero instruction length, which is just before instruction_start */
|
||||
memset (glyf_prime_data_next + instruction_start - start_offset - 2, 0, 2);
|
||||
|
Loading…
Reference in New Issue
Block a user