[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. [truetype] More fixes for GX.

View File

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