[truetype] Fix positioning of composite glyphs.

Problem reported by Nigel Tao <nigeltao@golang.org>.

* 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.
This commit is contained in:
Werner Lemberg 2013-12-10 08:38:57 +01:00
parent dd8050aa79
commit 05c786d990
2 changed files with 12 additions and 10 deletions

View File

@ -1,3 +1,13 @@
2013-12-10 Werner Lemberg <wl@gnu.org>
[truetype] Fix positioning of composite glyphs.
Problem reported by Nigel Tao <nigeltao@golang.org>.
* 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 <wl@gnu.org>
* Version 2.5.2 released.

View File

@ -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.