shithub: freetype+ttf2subf

Download patch

ref: 8183eeb18d91513cfc8b70eba9c4a818748792dc
parent: 97718f3c91864994025048af756ded07218a1aea
author: Behdad Esfahbod <[email protected]>
date: Sat Aug 6 19:12:55 EDT 2016

[truetype] Fix GX variation handling of composites.

* src/truetype/ttgload.c (load_truetype_glyph)
[TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Check `ARGS_ARE_XY_VALUES' flag.

git/fs: mount .git/fs: mount/attach disallowed
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2016-07-16  Behdad Esfahbod  <[email protected]>
+
+	[truetype] Fix GX variation handling of composites.
+
+	* src/truetype/ttgload.c (load_truetype_glyph)
+	[TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Check `ARGS_ARE_XY_VALUES' flag.
+
 2016-08-05  Alexei Podtelezhnikov  <[email protected]>
 
 	[smooth] Minor refactoring.
--- a/src/truetype/ttgload.c
+++ b/src/truetype/ttgload.c
@@ -1807,11 +1807,11 @@
 
         for ( i = 0; i < limit; i++, subglyph++ )
         {
-          /* XXX: overflow check for subglyph->{arg1,arg2}.         */
-          /*      Deltas must be within signed 16-bit,              */
-          /*      but the restriction of summed deltas is not clear */
-          subglyph->arg1 = (FT_Int16)points[i].x;
-          subglyph->arg2 = (FT_Int16)points[i].y;
+          if ( subglyph->flags & ARGS_ARE_XY_VALUES )
+          {
+            subglyph->arg1 = (FT_Int16)points[i].x;
+            subglyph->arg2 = (FT_Int16)points[i].y;
+          }
         }
 
         loader->pp1.x = points[i + 0].x;