improving the computation of the advance widths of auto-hinted glyphs,

in order to produce better letter spacing..
This commit is contained in:
David Turner 2001-12-30 01:30:11 +00:00
parent 21bdad1554
commit dcf5e6e5c5
2 changed files with 14 additions and 5 deletions

View File

@ -1,3 +1,9 @@
2001-12-30 David Turner <david@freetype.org>
* 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 <Antoine-Freetype@Leca-Marti.org>
* builds/dos/detect.mk: Correcting the order for Borland compilers:

View File

@ -1111,20 +1111,23 @@
/* 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 */
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 */