Revert "[VARC] Store axisIndices and axisValues as HBUINT16"

This reverts commit b76d88b3b4e977747a4fb7f4b82963d9f0a4e63f.
diff --git a/src/OT/Var/VARC/VARC.cc b/src/OT/Var/VARC/VARC.cc
index 899b2f1..1afb571 100644
--- a/src/OT/Var/VARC/VARC.cc
+++ b/src/OT/Var/VARC/VARC.cc
@@ -192,22 +192,17 @@
 
   // Axis values
 
-  hb_array_t<const HBINT16> axisIndices;
+  hb_vector_t<unsigned> axisIndices;
   hb_vector_t<float> axisValues;
   if (flags & (unsigned) flags_t::HAVE_AXES)
   {
     unsigned axisIndicesIndex;
     READ_UINT32VAR (axisIndicesIndex);
     axisIndices = (&VARC+VARC.axisIndicesList)[axisIndicesIndex];
-    if (axisValues.resize (axisIndices.length))
-    {
-      if (unlikely (unsigned (end - record) < axisIndices.length * sizeof (HBINT16)))
-	return hb_ubytes_t ();
-      const HBINT16 *base = (const HBINT16 *) record;
-      for (unsigned i = 0; i < axisIndices.length; i++)
-        axisValues.arrayZ[i] = base[i];
-    }
-    record += axisIndices.length * sizeof (HBINT16);
+    axisValues.resize (axisIndices.length);
+    const HBUINT8 *p = (const HBUINT8 *) record;
+    TupleValues::decompile (p, axisValues, (const HBUINT8 *) end);
+    record += (const unsigned char *) p - record;
   }
 
   // Apply variations if any
diff --git a/src/OT/Var/VARC/VARC.hh b/src/OT/Var/VARC/VARC.hh
index d91e975..d60f7b0 100644
--- a/src/OT/Var/VARC/VARC.hh
+++ b/src/OT/Var/VARC/VARC.hh
@@ -178,7 +178,7 @@
   Offset32To<Coverage> coverage;
   Offset32To<MultiItemVariationStore> varStore;
   Offset32To<ConditionList> conditionList;
-  Offset32To<Int16TupleList> axisIndicesList;
+  Offset32To<TupleList> axisIndicesList;
   Offset32To<CFF2Index/*Of<VarCompositeGlyph>*/> glyphRecords;
   public:
   DEFINE_SIZE_STATIC (24);
diff --git a/src/hb-open-type.hh b/src/hb-open-type.hh
index 8480a04..a52b65b 100644
--- a/src/hb-open-type.hh
+++ b/src/hb-open-type.hh
@@ -1879,20 +1879,16 @@
   }
 };
 
-template <typename Type>
-struct TypedTupleList : CFF2Index
+struct FloatTupleList : CFF2Index
 {
-  hb_array_t<const Type> operator [] (unsigned i) const
+  hb_array_t<const float> operator [] (unsigned i) const
   {
     auto bytes = CFF2Index::operator [] (i);
-    return hb_array (&StructAtOffsetUnaligned<Type>(bytes.arrayZ, 0),
-		     bytes.length / hb_static_size (Type));
+    return hb_array (&StructAtOffsetUnaligned<float>(bytes.arrayZ, 0),
+		     bytes.length / sizeof (float));
   }
 };
 
-using Int16TupleList = TypedTupleList<HBINT16>;
-using FloatTupleList = TypedTupleList<float>;
-
 
 } /* namespace OT */