freetype-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[ft-devel] Re: Changes to the autohinter


From: Werner LEMBERG
Subject: [ft-devel] Re: Changes to the autohinter
Date: Sat, 09 Sep 2006 09:25:18 +0200 (CEST)

Reino,


three years ago you've sent the following to the list:

> Hi. I have been working on an improved version of the autohinter
> this summer.  A patch against current CVS is in:
> <http://www.hut.fi/u/reiska/freetype/autohint.patch>
> 
> Any comments and test results on the code are much appreciated. (I
> don't have a good collection of fonts myself.)
> 
> Pictures for comparing the results are found in:
> <http://www.hut.fi/u/reiska/freetype/comparison1.png>    (Trebuchet-MS)
> <http://www.hut.fi/u/reiska/freetype/comparison2.png>    (StarMath)
> 
> I have implemented an iterative procedure for positioning each stem
> relative to its neighbours instead of a single achor.  This gives an
> improvement to the symmetric properties of many difficult glyphs
> like '$', '@' etc.  The improvements to symmetry are most noticeable
> in fonts with mathematical symbols, like StarMath.
> 
> There are many small changes and some larger ones:
> 
> New fields are added to AH_EdgeRec and AH_SegmentRec for storing
> pointers and associated scores for reference edges/segments that are
> calculated like the link pointers but to the other direction.
> 
> The rounding of stem positions is made relative to neighbour edges
> so that the relative change of distances to neighbours is minimized
> instead of the absolute displacement of the stem.  This helps avoid
> some shape distortions and collisions of stems in characters like
> '@', '©', '®' etc. at small point sizes.
> 
> The positions of segments are taken from the straightest part of the
> segment instead of an average of minimum and maximum coordinates.
> 
> I constrained the stem segments to always link to a closer segment
> if two linking candidates overlap.  This is necessary in
> e.g. Chevara, where the simple link score is not adequate for
> selecting links.
> 
> Only a relative displacement is made for the edge points instead of
> setting all their coordinates to the edge position.  This enables
> use of a looser condition for creating the segments.
> 
> Single edges are not rounded to pixel boundaries.  Linking the ends
> of a stem is also disabled by not creating stems with length less
> than half of the width.  This helps with avoiding asymmetric '+',
> 'T', etc.  characters.  The grey pixels at the end of a long line
> are practically invisible.  The rounding of single edges produced
> some artefacts in letters like 'c', 'a', 'e', etc.
> 
> The width of a stem is now better preserved in situations where the
> adjustments would change the relative order of the edges.
> 
> There are quite many interdependent small changes, so I didn't have
> time to separate them to several smaller patches.

It seems that your changes haven't been noticed by David -- there
wasn't any reaction on the list AFAICS.  Sorry for that.  Meanwhile, a
lot of things have been changed; the autohint module has been replaced
with autofit, and a lot of refinements have been added.

Have you followed these development steps?  Can you point out which
problems still exist?


    Werner




reply via email to

[Prev in Thread] Current Thread [Next in Thread]