[Top][All Lists]
[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [ft-devel] Re: Changes to the autohinter,
Werner LEMBERG <=