[hmtx] Prepare to fix and minor fixes
diff --git a/src/hb-ot-hmtx-table.hh b/src/hb-ot-hmtx-table.hh
index cf1f3b4..f8788b2 100644
--- a/src/hb-ot-hmtx-table.hh
+++ b/src/hb-ot-hmtx-table.hh
@@ -172,7 +172,6 @@
void init (hb_face_t *face,
unsigned int default_advance_ = 0)
{
- memset (this, 0, sizeof (*this));
default_advance = default_advance_ ? default_advance_ : hb_face_get_upem (face);
num_advances = T::is_horizontal ? face->table.hhea->numberOfLongMetrics : face->table.vhea->numberOfLongMetrics;
@@ -203,8 +202,6 @@
var_table.destroy ();
}
- bool has_data () const { return table.get () != nullptr; }
-
int get_side_bearing (hb_codepoint_t glyph) const
{
if (glyph < num_advances)
@@ -220,17 +217,14 @@
int get_side_bearing (hb_font_t *font, hb_codepoint_t glyph) const
{
int side_bearing = get_side_bearing (glyph);
- if (likely (glyph < num_metrics))
- {
- if (font->num_coords)
- {
- if (var_table.get_blob () != hb_blob_get_empty ())
- side_bearing += var_table->get_side_bearing_var (glyph, font->coords, font->num_coords); // TODO Optimize?!
- else
- side_bearing = get_side_bearing_var_tt (font, glyph, T::tableTag==HB_OT_TAG_vmtx);
- }
- }
- return side_bearing;
+
+ if (unlikely (glyph >= num_metrics) || !font->num_coords)
+ return side_bearing;
+
+// if (var_table.get_blob () == &Null (hb_blob_t))
+// return get_side_bearing_var_tt (font, glyph, T::tableTag == HB_OT_TAG_vmtx);
+
+ return side_bearing + var_table->get_side_bearing_var (glyph, font->coords, font->num_coords); // TODO Optimize?!
}
unsigned int get_advance (hb_codepoint_t glyph) const
@@ -253,17 +247,14 @@
hb_font_t *font) const
{
unsigned int advance = get_advance (glyph);
- if (likely (glyph < num_metrics))
- {
- if (font->num_coords)
- {
- if (var_table.get_blob () != hb_blob_get_empty ())
- advance += roundf (var_table->get_advance_var (glyph, font->coords, font->num_coords)); // TODO Optimize?!
- else
- advance = get_advance_var_tt (font, glyph, T::tableTag==HB_OT_TAG_vmtx);
- }
- }
- return advance;
+
+ if (unlikely (glyph >= num_metrics) || !font->num_coords)
+ return advance;
+
+// if (var_table.get_blob () == &Null (hb_blob_t))
+// return get_advance_var_tt (font, glyph, T::tableTag == HB_OT_TAG_vmtx);
+
+ return advance + roundf (var_table->get_advance_var (glyph, font->coords, font->num_coords)); // TODO Optimize?!
}
unsigned int num_advances_for_subset (const hb_subset_plan_t *plan) const
diff --git a/src/hb-ot-var-hvar-table.hh b/src/hb-ot-var-hvar-table.hh
index 628a600..ba1f2da 100644
--- a/src/hb-ot-var-hvar-table.hh
+++ b/src/hb-ot-var-hvar-table.hh
@@ -63,7 +63,7 @@
}
{ /* Repack it. */
- unsigned int n = get_inner_bit_count ();
+ unsigned int n = get_inner_bitcount ();
unsigned int outer = u >> n;
unsigned int inner = u & ((1 << n) - 1);
u = (outer<<16) | inner;
@@ -72,9 +72,10 @@
return u;
}
- unsigned int get_map_count () const { return mapCount; }
- unsigned int get_width () const { return ((format >> 4) & 3) + 1; }
- unsigned int get_inner_bit_count () const { return (format & 0xF) + 1; }
+ protected:
+ unsigned int get_width () const { return ((format >> 4) & 3) + 1; }
+
+ unsigned int get_inner_bitcount () const { return (format & 0xF) + 1; }
protected:
HBUINT16 format; /* A packed field that describes the compressed