[subset] extract a method to flip off composite instruction flag
This commit is contained in:
parent
6836a82142
commit
20d5739923
|
@ -136,6 +136,20 @@ _update_components (hb_subset_plan_t * plan,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool _remove_composite_instruction_flag(char *glyf_prime, unsigned int length)
|
||||||
|
{
|
||||||
|
/* remove WE_HAVE_INSTRUCTIONS from flags in dest */
|
||||||
|
OT::glyf::CompositeGlyphHeader::Iterator composite_it;
|
||||||
|
if (unlikely (!OT::glyf::CompositeGlyphHeader::get_iterator (glyf_prime, 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());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
_write_glyf_and_loca_prime (hb_subset_plan_t *plan,
|
_write_glyf_and_loca_prime (hb_subset_plan_t *plan,
|
||||||
const OT::glyf::accelerator_t &glyf,
|
const OT::glyf::accelerator_t &glyf,
|
||||||
|
@ -181,15 +195,7 @@ _write_glyf_and_loca_prime (hb_subset_plan_t *plan,
|
||||||
/* if the instructions end at the end this was a composite glyph */
|
/* if the instructions end at the end this was a composite glyph */
|
||||||
if (instruction_end == end_offset)
|
if (instruction_end == end_offset)
|
||||||
{
|
{
|
||||||
/* remove WE_HAVE_INSTRUCTIONS from flags in dest */
|
if (unlikely (!_remove_composite_instruction_flag (glyf_prime_data_next, length))) return false;
|
||||||
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
|
else
|
||||||
/* zero instruction length, which is just before instruction_start */
|
/* zero instruction length, which is just before instruction_start */
|
||||||
|
|
Loading…
Reference in New Issue