[HarfBuzz] harfbuzz: Branch 'master' - 3 commits

Behdad Esfahbod behdad at kemper.freedesktop.org
Fri Jan 5 13:24:28 UTC 2018


 src/hb-ft.cc                       |   10 +++++++++-
 src/hb-ot-layout-common-private.hh |    7 ++++---
 2 files changed, 13 insertions(+), 4 deletions(-)

New commits:
commit 54b2b93722c9f067199cd7145dfd065d5b6b2f0c
Author: Behdad Esfahbod <behdad at behdad.org>
Date:   Fri Jan 5 13:20:21 2018 +0000

    [ot] Fix VariationStore evaluation algorithm
    
    Ouch!  Missing coords should still be evaluated as coord=0, which
    most of the time results in a factor of 0.  We were skipping these,
    which was equivalent to a factor of 1.
    
    Fixes https://github.com/harfbuzz/harfbuzz/issues/652

diff --git a/src/hb-ot-layout-common-private.hh b/src/hb-ot-layout-common-private.hh
index 78e65d38..cb308cd2 100644
--- a/src/hb-ot-layout-common-private.hh
+++ b/src/hb-ot-layout-common-private.hh
@@ -1275,10 +1275,11 @@ struct VarRegionList
     const VarRegionAxis *axes = axesZ + (region_index * axisCount);
 
     float v = 1.;
-    unsigned int count = MIN (coord_len, (unsigned int) axisCount);
+    unsigned int count = axisCount;
     for (unsigned int i = 0; i < count; i++)
     {
-      float factor = axes[i].evaluate (coords[i]);
+      int coord = i < coord_len ? coords[i] : 0;
+      float factor = axes[i].evaluate (coord);
       if (factor == 0.)
         return 0.;
       v *= factor;
commit a3afdd1e080bb181ddec126b6233d52438882a13
Author: Behdad Esfahbod <behdad at behdad.org>
Date:   Fri Jan 5 13:17:02 2018 +0000

    Minor

diff --git a/src/hb-ot-layout-common-private.hh b/src/hb-ot-layout-common-private.hh
index 5e699e19..78e65d38 100644
--- a/src/hb-ot-layout-common-private.hh
+++ b/src/hb-ot-layout-common-private.hh
@@ -1394,7 +1394,7 @@ struct VariationStore
   protected:
   UINT16				format;
   LOffsetTo<VarRegionList>		regions;
-  OffsetArrayOf<VarData, UINT32>		dataSets;
+  OffsetArrayOf<VarData, UINT32>	dataSets;
   public:
   DEFINE_SIZE_ARRAY (8, dataSets);
 };
commit cb43bdbc2f3a16061c33596b15b29eb7f9713871
Author: Behdad Esfahbod <behdad at behdad.org>
Date:   Fri Jan 5 13:06:25 2018 +0000

    [ft] If there's no variations set, don't set them on hb-font

diff --git a/src/hb-ft.cc b/src/hb-ft.cc
index 4f33e114..ae8c8d92 100644
--- a/src/hb-ft.cc
+++ b/src/hb-ft.cc
@@ -635,10 +635,18 @@ hb_ft_font_changed (hb_font_t *font)
     {
       if (!FT_Get_Var_Blend_Coordinates (ft_face, mm_var->num_axis, ft_coords))
       {
+	bool nonzero = false;
+
 	for (unsigned int i = 0; i < mm_var->num_axis; ++i)
+	 {
 	  coords[i] = ft_coords[i] >>= 2;
+	  nonzero = nonzero || coords[i];
+	 }
 
-	hb_font_set_var_coords_normalized (font, coords, mm_var->num_axis);
+	if (nonzero)
+	  hb_font_set_var_coords_normalized (font, coords, mm_var->num_axis);
+	else
+	  hb_font_set_var_coords_normalized (font, nullptr, 0);
       }
     }
     free (coords);


More information about the HarfBuzz mailing list