From 05c786d990390a7ca18e62962641dac740bacb06 Mon Sep 17 00:00:00 2001 From: Werner Lemberg Date: Tue, 10 Dec 2013 08:38:57 +0100 Subject: [PATCH] [truetype] Fix positioning of composite glyphs. Problem reported by Nigel Tao . * src/truetype/ttgload.c (TT_Hint_Glyph): Remove code that shifts the glyph (component) by a fractional value computed from the LSB phantom point. This is wrong, since the horizontal phantom points get rounded horizontally later on. --- ChangeLog | 10 ++++++++++ src/truetype/ttgload.c | 12 ++---------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index b67e4362a..d06ec93cf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2013-12-10 Werner Lemberg + + [truetype] Fix positioning of composite glyphs. + Problem reported by Nigel Tao . + + * src/truetype/ttgload.c (TT_Hint_Glyph): Remove code that shifts + the glyph (component) by a fractional value computed from the LSB + phantom point. This is wrong, since the horizontal phantom points + get rounded horizontally later on. + 2013-12-08 Werner Lemberg * Version 2.5.2 released. diff --git a/src/truetype/ttgload.c b/src/truetype/ttgload.c index 0d74248b8..f4081a021 100644 --- a/src/truetype/ttgload.c +++ b/src/truetype/ttgload.c @@ -738,7 +738,6 @@ #endif TT_GlyphZone zone = &loader->zone; - FT_Pos origin; #ifdef TT_USE_BYTECODE_INTERPRETER FT_UInt n_ins; @@ -755,14 +754,7 @@ loader->glyph->control_len )); } n_ins = (FT_UInt)( loader->glyph->control_len ); -#endif - origin = zone->cur[zone->n_points - 4].x; - origin = FT_PIX_ROUND( origin ) - origin; - if ( origin ) - translate_array( zone->n_points, zone->cur, origin, 0 ); - -#ifdef TT_USE_BYTECODE_INTERPRETER /* save original point position in org */ if ( n_ins > 0 ) FT_ARRAY_COPY( zone->org, zone->cur, zone->n_points ); @@ -1286,8 +1278,8 @@ * pp1 = (round(xmin - lsb), 0) , * pp2 = (round(pp1 + aw), 0) . * - * Note that the rounding to the grid is not documented currently in the - * specification. + * Note that the rounding to the grid (in the device space) is not + * documented currently in the specification. * * However, the specification lacks the precise definition of vertical * phantom points. Greg Hitchcock provided the following explanation.