From 61d50756b6ddc6cce459f64445abf19f09d18253 Mon Sep 17 00:00:00 2001 From: Alexei Podtelezhnikov Date: Fri, 2 Nov 2018 20:42:25 -0400 Subject: [PATCH] * src/truetype/ttgxvar.c (ft_var_get_item_delta): Fixed logic. Reported and tested by Behdad. --- ChangeLog | 6 ++++++ src/truetype/ttgxvar.c | 10 ++++------ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9ac839574..b98801a2c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2018-11-02 Alexei Podtelezhnikov + + * src/truetype/ttgxvar.c (ft_var_get_item_delta): Fixed logic. + + Reported and tested by Behdad. + 2018-11-02 Shailesh Mistry [autofit] Prevent SEGV. diff --git a/src/truetype/ttgxvar.c b/src/truetype/ttgxvar.c index 6a45e4278..407dcae83 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 =