Commit 61d50756b6ddc6cce459f64445abf19f09d18253

Alexei Podtelezhnikov 2018-11-02T20:42:25

* src/truetype/ttgxvar.c (ft_var_get_item_delta): Fixed logic. Reported and tested by Behdad.

diff --git a/ChangeLog b/ChangeLog
index 9ac8395..b98801a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2018-11-02  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+	* src/truetype/ttgxvar.c (ft_var_get_item_delta): Fixed logic.
+
+	Reported and tested by Behdad.
+
 2018-11-02  Shailesh Mistry  <shailesh.mistry@hotmail.co.uk>
 
 	[autofit] Prevent SEGV.
diff --git a/src/truetype/ttgxvar.c b/src/truetype/ttgxvar.c
index 6a45e42..407dcae 100644
--- a/src/truetype/ttgxvar.c
+++ b/src/truetype/ttgxvar.c
@@ -68,8 +68,6 @@
 
 
   /* some macros we need */
-#define FT_FIXED_ONE  ( (FT_Fixed)0x10000 )
-
 #define FT_fdot14ToFixed( x )                \
         ( (FT_Fixed)( (FT_ULong)(x) << 2 ) )
 #define FT_intToFixed( i )                    \
@@ -884,7 +882,7 @@
     /* outer loop steps through master designs to be blended */
     for ( master = 0; master < varData->regionIdxCount; master++ )
     {
-      FT_Fixed  scalar      = FT_FIXED_ONE;
+      FT_Fixed  scalar      = 0x10000L;
       FT_UInt   regionIndex = varData->regionIndices[master];
 
       GX_AxisCoords  axis = itemStore->varRegionList[regionIndex].axisList;
@@ -908,6 +906,9 @@
         else if ( axis->peakCoord == 0 )
           continue;
 
+        else if ( face->blend->normalizedcoords[j] == axis->peakCoord )
+          continue;
+
         /* ignore this region if coords are out of range */
         else if ( face->blend->normalizedcoords[j] <= axis->startCoord ||
                   face->blend->normalizedcoords[j] >= axis->endCoord   )
@@ -916,9 +917,6 @@
           break;
         }
 
-        else if ( face->blend->normalizedcoords[j] == axis->peakCoord )
-          continue;
-
         /* cumulative product of all the axis scalars */
         else if ( face->blend->normalizedcoords[j] < axis->peakCoord )
           scalar =