[subset] keep glyph trim separate of more general get_offset
authorRod Sheeter <rsheeter@google.com>
Sat, 24 Feb 2018 01:49:23 +0000 (17:49 -0800)
committerRod Sheeter <rsheeter@google.com>
Sat, 24 Feb 2018 01:49:23 +0000 (17:49 -0800)
src/hb-ot-glyf-table.hh
src/hb-subset-glyf.cc

index c92f63f..3d03097 100644 (file)
@@ -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)
index ce7c99f..654566a 100644 (file)
@@ -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];