diff --git a/src/hb-ot-glyf-table.hh b/src/hb-ot-glyf-table.hh index c92f63f4c484d5acbda8a6cef8cddc778914710e..3d030977747596f8c7e299c1a5ef2855477fd2d9 100644 --- a/src/hb-ot-glyf-table.hh +++ b/src/hb-ot-glyf-table.hh @@ -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) diff --git a/src/hb-subset-glyf.cc b/src/hb-subset-glyf.cc index ce7c99fe1de44ad07d0fdbc98fb23e6f7284c067..654566af21e0952ecefe5a5e00df4a9e0dd12c50 100644 --- a/src/hb-subset-glyf.cc +++ b/src/hb-subset-glyf.cc @@ -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];