From 1454d82a9d3d9a47901b3d92ff7f2c05c596c0d5 Mon Sep 17 00:00:00 2001 From: Rod Sheeter Date: Fri, 23 Feb 2018 17:49:23 -0800 Subject: [PATCH] [subset] keep glyph trim separate of more general get_offset --- src/hb-ot-glyf-table.hh | 12 ++++-------- src/hb-subset-glyf.cc | 6 ++++-- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/src/hb-ot-glyf-table.hh b/src/hb-ot-glyf-table.hh index c92f63f4..3d030977 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 ce7c99fe..654566af 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]; -- GitLab