[Gs-devel] FT2 scan converters

Francesco Zappa Nardelli Francesco.Zappa.Nardelli@ens.fr
14 Dec 2000 14:41:10 +0100


Dear Mr. Deutsch,

I have never looked into FT1.3.1 but as far as I know it deals only
with TrueType fonts.  I am not surprised of learning that it cannot
handle cubic Beziers.

FT2 is completely different in conception, as it aspires to become an
``universal'' font library.  So support for Type1 fonts has been added
(including cubic Beziers).

The first driver for Type1 fonts that has been written interpreted
native hints.  This driver has been replaced and the current driver
uses pattern-matching techniques to parse T1 fonts (much in the same
way ATM is believed to work).  The current driver does *not* interpret
native hints.

To avoid patent problems with the TrueType hinting, David Turner
worked on an autohinter module: this module has been integrated in FT2
with both the TrueType and Type1 driver.

In brief, FT2 can render unhinted Type1 fonts.  Drop-out control is
performed by the monochrome scan-line converter.  The autohinter can
guess reasonable corrections to the glyph shape; this can be observed
launching the demo /ftview/ on a type1 font and activating and
deactivating the autohinter (by the `h' key).  

The autohinter is an interesting research project, but currently the
results are far from being ``at the state of the art'' (i.e. the magic
of AcrobatReader).  What FT2 provides is comparable with what
Ghostscript provides once drop-out control has been added (that is, my
little contribution).  For this reason I didn't integrate the whole
FT2 into Ghostscript Graphics library, limiting myself to the
scan-line converters (that can be done without modifying Ghostscript
data structures).

For the future, I have longly discussed with David Turner about the
necessity of native hinting in Type1 fonts.  David Turner is not
interested in writing it, and he promises a better auto-hinter.  

When FreeType will perform uniformly better that what Ghostscript
actually provides, I'll be proud of integrating the whole library
inside Ghostscript graphics library.

Regards,
-francesco