[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