improving the computation of the advance widths of auto-hinted glyphs,
in order to produce better letter spacing..
This commit is contained in:
parent
fb009c7449
commit
1127b2bf3f
|
@ -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>
|
2001-12-25 Antoine Leca <Antoine-Freetype@Leca-Marti.org>
|
||||||
|
|
||||||
* builds/dos/detect.mk: Correcting the order for Borland compilers:
|
* builds/dos/detect.mk: Correcting the order for Borland compilers:
|
||||||
|
|
|
@ -1111,20 +1111,23 @@
|
||||||
/* we now need to hint the metrics according to the change in */
|
/* we now need to hint the metrics according to the change in */
|
||||||
/* width/positioning that occured during the hinting process */
|
/* width/positioning that occured during the hinting process */
|
||||||
{
|
{
|
||||||
FT_Pos old_advance;
|
FT_Pos old_advance, old_rsb, old_lsb, new_lsb;
|
||||||
FT_Pos old_lsb, new_lsb;
|
|
||||||
AH_Edge* edge1 = outline->vert_edges; /* leftmost edge */
|
AH_Edge* edge1 = outline->vert_edges; /* leftmost edge */
|
||||||
AH_Edge* edge2 = edge1 +
|
AH_Edge* edge2 = edge1 +
|
||||||
outline->num_vedges - 1; /* rightmost edge */
|
outline->num_vedges - 1; /* rightmost edge */
|
||||||
|
|
||||||
|
|
||||||
old_advance = hinter->pp2.x;
|
old_advance = hinter->pp2.x;
|
||||||
|
old_rsb = old_advance - edge2->opos;
|
||||||
old_lsb = edge1->opos;
|
old_lsb = edge1->opos;
|
||||||
new_lsb = edge1->pos;
|
new_lsb = edge1->pos;
|
||||||
|
|
||||||
hinter->pp1.x = ( ( new_lsb - old_lsb ) + 32 ) & -64;
|
hinter->pp1.x = ( ( new_lsb - old_lsb ) + 32 ) & -64;
|
||||||
hinter->pp2.x = ( ( edge2->pos +
|
hinter->pp2.x = ( ( edge2->pos + old_rsb ) + 32 ) & -64;
|
||||||
( old_advance - edge2->opos ) ) + 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 */
|
/* good, we simply add the glyph to our loader's base */
|
||||||
|
|
Loading…
Reference in New Issue