shithub: freetype+ttf2subf

Download patch

ref: 0f9ddf20c89fd38bec244d431340d1d67d4dbfd5
parent: 4261103e355f632a609a23f24a8fcafdeac20237
author: Behdad Esfahbod <[email protected]>
date: Thu Jul 14 02:08:39 EDT 2016

[truetype] Fix gxvar delta interpolation.

The coordinates of the base font should be used for interpolation
purposes, NOT the current points (i.e., the result of accumulation
of previous deltas).

* src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Initialize
`points_org' before looping over all tuples.

git/fs: mount .git/fs: mount/attach disallowed
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2016-07-14  Behdad Esfahbod  <[email protected]>
+
+	[truetype] Fix gxvar delta interpolation.
+
+	The coordinates of the base font should be used for interpolation
+	purposes, NOT the current points (i.e., the result of accumulation
+	of previous deltas).
+
+	* src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Initialize
+	`points_org' before looping over all tuples.
+
 2016-07-12  Werner Lemberg  <[email protected]>
 
 	* Version 2.6.5 released.
--- a/src/truetype/ttgxvar.c
+++ b/src/truetype/ttgxvar.c
@@ -1922,6 +1922,9 @@
     FT_TRACE5(( "gvar: there are %d tuples:\n",
                 tupleCount & GX_TC_TUPLE_COUNT_MASK ));
 
+    for ( j = 0; j < n_points; j++ )
+      points_org[j] = outline->points[j];
+
     for ( i = 0; i < ( tupleCount & GX_TC_TUPLE_COUNT_MASK ); i++ )
     {
       FT_UInt   tupleDataSize;
@@ -2057,10 +2060,7 @@
         /* we have to interpolate the missing deltas similar to the */
         /* IUP bytecode instruction                                 */
         for ( j = 0; j < n_points; j++ )
-        {
-          points_org[j] = outline->points[j];
           has_delta[j]  = FALSE;
-        }
 
         for ( j = 0; j < point_count; j++ )
         {