ref: 1127b2bf3ff6c78911da3258a31640c88bb02938
parent: fb009c7449875582fb2fedecf52931a5fbabff37
author: David Turner <[email protected]>
date: Sat Dec 29 20:30:11 EST 2001
improving the computation of the advance widths of auto-hinted glyphs, in order to produce better letter spacing..
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2001-12-30 David Turner <[email protected]>
+
+ * src/autohint/ahhint.c (ah_hinter_load): improving advance width
+ computation of auto-hinted glyphs. This noticeably improves the
+ spacing of letters in KDE and Gnome :o)
+
2001-12-25 Antoine Leca <[email protected]>
* builds/dos/detect.mk: Correcting the order for Borland compilers:
--- a/src/autohint/ahhint.c
+++ b/src/autohint/ahhint.c
@@ -1111,8 +1111,7 @@
/* we now need to hint the metrics according to the change in */
/* width/positioning that occured during the hinting process */
{
- FT_Pos old_advance;
- FT_Pos old_lsb, new_lsb;
+ FT_Pos old_advance, old_rsb, old_lsb, new_lsb;
AH_Edge* edge1 = outline->vert_edges; /* leftmost edge */
AH_Edge* edge2 = edge1 +
outline->num_vedges - 1; /* rightmost edge */
@@ -1119,12 +1118,16 @@
old_advance = hinter->pp2.x;
+ old_rsb = old_advance - edge2->opos;
old_lsb = edge1->opos;
new_lsb = edge1->pos;
- hinter->pp1.x = ( ( new_lsb - old_lsb ) + 32 ) & -64;
- hinter->pp2.x = ( ( edge2->pos +
- ( old_advance - edge2->opos ) ) + 32 ) & -64;
+ hinter->pp1.x = ( ( new_lsb - old_lsb ) + 32 ) & -64;
+ hinter->pp2.x = ( ( edge2->pos + old_rsb ) + 32 ) & -64;
+
+ /* try to fix certain bad advance computations */
+ if ( hinter->pp2.x + hinter->pp1.x == edge2->pos && old_rsb > 4 )
+ hinter->pp2.x += 64;
}
/* good, we simply add the glyph to our loader's base */