FreeType 1.3.1 review

by on

FreeType 1 is a portable and highly efficient TrueType rendering engine, that is now successfully used to bring TrueType support to a

License: GPL (GNU General Public License)
File size: 1393K
Developer: FreeType team
0 stars award from

FreeType 1 is a portable and highly efficient TrueType rendering engine, that is now successfully used to bring TrueType support to a very large variety of platforms and environments, be they font servers, graphics libraries or embedded systems.

FreeType 1 is a clean-room implementation that is not derived from the original TrueType engine developed by Apple and Microsoft. It has been created with the sole help of the published TrueType specifications, which to our great surprise (and pain) turned out to be extremely poor and misleading in critical areas. Much hard work has been undertaken to solve ambiguities. The end result is a portable and fast renderer.

Note that FreeType 1 is a library. It is not a font server for your favorite platform, even though it was designed to be used in many of them. Note also that it is not a complete text-rendering library. Its purpose is simply to open and manage font files, as well as load, hint and render individual glyphs efficiently. You can also see it as a "TrueType driver" for a higher-level library, though rendering text with it is easy, as demonstrated by the test programs.

Its quality matches these of Windows and the Macintosh, while its memory foot-print and code size (between 48 and 55 kByte of Intel code) remain modest. A thing that cannot be said for most other commercial engines available.

Here are some key features of "FreeType":
Supports TrueType files (TTF) and collections (TTC). Doesn't support GX or OpenType fonts, but these can be opened and used as normal TTF files by the library. (With the exception of OTF OpenType fonts which really embed a Type 1 font file within a TrueType storage).
Modular design: Memory and I/O operations can be very easily tailored to your own platform/system (the standard release comes with ANSI libc support).
Font smoothing, a.k.a. gray-scaling. Just like Win95, the renderer only smoothes the parts of a glyph which need it (i.e., diagonals and curves).
Support for all character mappings defined in the TrueType specification. The client application can select whichever pleases it.
A full-featured and efficient TrueType bytecode interpreter. The engine is able to produce excellent output at small point sizes. This component has been extremely difficult to get right, due to the ambiguous and misleadings TrueType specifications. However, we now match Windows and Mac qualities.
Written in portable ANSI C (and Pascal, for older FreeType 1 versions). Should compile well on all kinds of systems (tested on 16, 32 and 64 bits processors). With full source code available.
Open Source License. FreeType can be included in all kinds of commercial systems and software.
Provides test programs to "show-off" the library, runnable on the following platforms: Dos, Unix, OS/2, Win95, and Amiga. Any porters for other systems are welcome and should contact the developers team.
Support for extensions. These are separately linkable units which can be used to enhance the engine's functionalities without recompiling it. They can be written to access additional TrueType tables, or even GX and/or OpenType ones (the latter is already available).
Kerning support: The TrueType kerning data is available through one of the standard extensions that comes in this release. However, it is up to the application to "interpret" the data, as many different `formats' are supported.
Support for vertical metrics. The engine is able to provide client applications with vertical glyph metrics if they are found in font files (usually in CJKV fonts). If not present, it synthetizes metrics from the horizontal values, ascender, and descender metrics. This means that it is possible to render vertical text correctly.
Standard extensions are provided to access and load the glyph names in the Postscript table.

The ANSI C version of the library should compile with no problems on a great variety of platforms. Some ANSI-compliant compilers may generate a lot of warnings when compiling it. These are not ANSI warnings and can be safely ignored. The reference compiler is gcc with the flags `-Wall' (all warnings) and `-ansi -pedantic', though using it is not a requirement.
However, the test programs, which are used to demonstrate the engine, are more system-specific as they use a tiny graphics sub-system in order to display the engine's output on the screen or in a window. The sub-system supports right now the following platforms: Dos, OS/2, X11, Win95, and Amiga. In addition, a platform independent driver for the Allegro graphics library is available.
FreeType 1 comes with a Pascal version that now runs on Borland Pascal 7 (DOS), fPrint Virtual Pascal (OS/2), FPC (Linux, DOS, OS/2) as well as Delphi (16-bit & 32-bit versions). It is now almost up-to-date with the C version, even though it doesn't include extensions. It is located in the ftpascal CVS module.

FreeType 1.3.1 keywords