[subset] keep glyph trim separate of more general get_offset
This commit is contained in:
parent
0ac8c0c1e6
commit
1454d82a9d
@ -267,7 +267,7 @@ struct glyf
|
||||
CompositeGlyphHeader::Iterator *composite /* OUT */) const
|
||||
{
|
||||
unsigned int start_offset, end_offset;
|
||||
if (!get_offsets (glyph, /* trim */ false, &start_offset, &end_offset))
|
||||
if (!get_offsets (glyph, &start_offset, &end_offset))
|
||||
return false; /* glyph not found */
|
||||
|
||||
return CompositeGlyphHeader::get_iterator ((const char*) this->glyf_table + start_offset,
|
||||
@ -276,8 +276,8 @@ struct glyf
|
||||
}
|
||||
|
||||
/* based on FontTools _g_l_y_f.py::trim */
|
||||
inline bool trim_glyph(unsigned int start_offset,
|
||||
unsigned int *end_offset) const
|
||||
inline bool trim(unsigned int start_offset,
|
||||
unsigned int *end_offset) const
|
||||
{
|
||||
static const int FLAG_X_SHORT = 0x02;
|
||||
static const int FLAG_Y_SHORT = 0x04;
|
||||
@ -359,7 +359,6 @@ struct glyf
|
||||
}
|
||||
|
||||
inline bool get_offsets (hb_codepoint_t glyph,
|
||||
bool trim,
|
||||
unsigned int *start_offset /* OUT */,
|
||||
unsigned int *end_offset /* OUT */) const
|
||||
{
|
||||
@ -383,9 +382,6 @@ struct glyf
|
||||
if (*start_offset > *end_offset || *end_offset > glyf_len)
|
||||
return false;
|
||||
|
||||
if (trim)
|
||||
return trim_glyph(*start_offset, end_offset);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -438,7 +434,7 @@ struct glyf
|
||||
hb_glyph_extents_t *extents) const
|
||||
{
|
||||
unsigned int start_offset, end_offset;
|
||||
if (!get_offsets (glyph, /* trim */ false, &start_offset, &end_offset))
|
||||
if (!get_offsets (glyph, &start_offset, &end_offset))
|
||||
return false;
|
||||
|
||||
if (end_offset - start_offset < GlyphHeader::static_size)
|
||||
|
@ -47,7 +47,8 @@ _calculate_glyf_and_loca_prime_size (const OT::glyf::accelerator_t &glyf,
|
||||
*(instruction_ranges->push()) = 0;
|
||||
|
||||
unsigned int start_offset, end_offset;
|
||||
if (unlikely (!glyf.get_offsets(next_glyph, /* trim */ true, &start_offset, &end_offset)))
|
||||
if (unlikely (!(glyf.get_offsets(next_glyph, &start_offset, &end_offset)
|
||||
&& glyf.trim(start_offset, &end_offset))))
|
||||
{
|
||||
DEBUG_MSG(SUBSET, nullptr, "Invalid gid %d", next_glyph);
|
||||
continue;
|
||||
@ -154,7 +155,8 @@ _write_glyf_and_loca_prime (hb_subset_plan_t *plan,
|
||||
for (unsigned int i = 0; i < glyph_ids.len; i++)
|
||||
{
|
||||
unsigned int start_offset, end_offset;
|
||||
if (unlikely (!glyf.get_offsets (glyph_ids[i], /* trim */ true, &start_offset, &end_offset)))
|
||||
if (unlikely (!(glyf.get_offsets (glyph_ids[i], &start_offset, &end_offset)
|
||||
&& glyf.trim(start_offset, &end_offset))))
|
||||
end_offset = start_offset = 0;
|
||||
unsigned int instruction_start = instruction_ranges[i * 2];
|
||||
unsigned int instruction_end = instruction_ranges[i * 2 + 1];
|
||||
|
Loading…
Reference in New Issue
Block a user