[truetype] Fix GX delta tracing.

* src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Trace
relative point movements.
This commit is contained in:
Werner Lemberg 2016-07-16 08:16:16 +02:00
parent f147fb2881
commit a3b61253a7
2 changed files with 29 additions and 22 deletions

View File

@ -1,4 +1,11 @@
2016-07-14 Behdad Esfahbod <behdad@behdad.org>
2016-07-16 Werner Lemberg <wl@gnu.org>
[truetype] Fix GX delta tracing.
* src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Trace
relative point movements.
2016-07-16 Behdad Esfahbod <behdad@behdad.org>
[truetype] More fixes for GX.

View File

@ -2018,22 +2018,20 @@
/* this means that there are deltas for every point in the glyph */
for ( j = 0; j < n_points; j++ )
{
#ifdef FT_DEBUG_LEVEL_TRACE
FT_Vector point_org = points_org[j];
#endif
FT_Pos delta_x = FT_MulFix( deltas_x[j], apply );
FT_Pos delta_y = FT_MulFix( deltas_y[j], apply );
outline->points[j].x += FT_MulFix( deltas_x[j], apply );
outline->points[j].y += FT_MulFix( deltas_y[j], apply );
outline->points[j].x += delta_x;
outline->points[j].y += delta_y;
#ifdef FT_DEBUG_LEVEL_TRACE
if ( ( point_org.x != outline->points[j].x ) ||
( point_org.y != outline->points[j].y ) )
if ( delta_x || delta_y )
{
FT_TRACE7(( " %d: (%d, %d) -> (%d, %d)\n",
j,
point_org.x,
point_org.y,
outline->points[j].x - delta_x,
outline->points[j].y - delta_y,
outline->points[j].x,
outline->points[j].y ));
count++;
@ -2086,30 +2084,32 @@
points_org,
has_delta );
for ( j = 0; j < n_points; j++ )
{
outline->points[j].x += points_out[j].x - points_org[j].x;
outline->points[j].y += points_out[j].y - points_org[j].y;
}
#ifdef FT_DEBUG_LEVEL_TRACE
FT_TRACE7(( " point deltas:\n" ));
for ( j = 0; j < n_points; j++)
for ( j = 0; j < n_points; j++ )
{
if ( ( points_org[j].x != outline->points[j].x ) ||
( points_org[j].y != outline->points[j].y ) )
FT_Pos delta_x = points_out[j].x - points_org[j].x;
FT_Pos delta_y = points_out[j].y - points_org[j].y;
outline->points[j].x += delta_x;
outline->points[j].y += delta_y;
#ifdef FT_DEBUG_LEVEL_TRACE
if ( delta_x || delta_y )
{
FT_TRACE7(( " %d: (%d, %d) -> (%d, %d)\n",
j,
points_org[j].x,
points_org[j].y,
outline->points[j].x - delta_x,
outline->points[j].y - delta_y,
outline->points[j].x,
outline->points[j].y ));
count++;
}
#endif
}
#ifdef FT_DEBUG_LEVEL_TRACE
if ( !count )
FT_TRACE7(( " none\n" ));
#endif