[GX] Remove (partial) support for anisotropic variations
authorBehdad Esfahbod <behdad@behdad.org>
Sat, 10 Sep 2016 09:11:05 +0000 (02:11 -0700)
committerBehdad Esfahbod <behdad@behdad.org>
Sat, 17 Dec 2016 01:06:26 +0000 (19:06 -0600)
It doesn't always work, not part of FreeType, and we were not going
to expose it in the API anyway.  Can always be added later.

src/hb-font-private.hh
src/hb-font.cc
src/hb-ot-layout-common-private.hh

index 48dc725..53671d7 100644 (file)
@@ -110,8 +110,7 @@ struct hb_font_t {
 
   /* Font variation coordinates. */
   unsigned int num_coords;
-  int *x_coords;
-  int *y_coords;
+  int *coords;
 
   hb_font_funcs_t   *klass;
   void              *user_data;
index 24ecb45..f12dfb5 100644 (file)
@@ -1197,8 +1197,7 @@ hb_font_get_empty (void)
     0, /* y_ppem */
 
     0, /* num_coords */
-    NULL, /* x_coords */
-    NULL, /* y_coords */
+    NULL, /* coords */
 
     const_cast<hb_font_funcs_t *> (&_hb_font_funcs_nil), /* klass */
     NULL, /* user_data */
@@ -1254,10 +1253,8 @@ hb_font_destroy (hb_font_t *font)
   hb_face_destroy (font->face);
   hb_font_funcs_destroy (font->klass);
 
-  if (font->x_coords)
-    free (font->x_coords);
-  if (font->y_coords && font->y_coords != font->x_coords)
-    free (font->y_coords);
+  if (font->coords)
+    free (font->coords);
 
   free (font);
 }
@@ -1564,15 +1561,13 @@ hb_font_set_var_coords_normalized (hb_font_t *font,
   if (unlikely (coords_length && !copy))
     return;
 
-  if (font->x_coords)
-    free (font->x_coords);
-  if (font->y_coords && font->y_coords != font->x_coords)
-    free (font->y_coords);
+  if (font->coords)
+    free (font->coords);
 
   if (coords_length)
     memcpy (copy, coords, coords_length * sizeof (coords[0]));
 
-  font->x_coords = font->y_coords = copy;
+  font->coords = copy;
   font->num_coords = coords_length;
 }
 
index fb99ec3..3c574af 100644 (file)
@@ -1584,10 +1584,10 @@ struct VariationDevice
   private:
 
   inline hb_position_t get_x_delta (hb_font_t *font, const VariationStore &store) const
-  { return font->em_scalef_x (get_delta (store, font->x_coords, font->num_coords)); }
+  { return font->em_scalef_x (get_delta (font, store)); }
 
   inline hb_position_t get_y_delta (hb_font_t *font, const VariationStore &store) const
-  { return font->em_scalef_y (get_delta (store, font->y_coords, font->num_coords)); }
+  { return font->em_scalef_y (get_delta (font, store)); }
 
   inline bool sanitize (hb_sanitize_context_t *c) const
   {
@@ -1597,10 +1597,9 @@ struct VariationDevice
 
   private:
 
-  inline float get_delta (const VariationStore &store,
-                         int *coords, unsigned int coord_count) const
+  inline float get_delta (hb_font_t *font, const VariationStore &store) const
   {
-    return store.get_delta (outerIndex, innerIndex, coords, coord_count);
+    return store.get_delta (outerIndex, innerIndex, font->coords, font->num_coords);
   }
 
   protected: