FreeType HomePage


    What is FreeType 2?       Features       Requirements       Patent Issues       |        Homepage

What is FreeType 2?

FreeType 2 is a software font engine that is designed to be small, efficient, highly customizable, and portable while capable of producing high-quality output (glyph images). It can be used in graphics libraries, display servers, font conversion tools, text image generation tools, and many other products as well.

Note that FreeType 2 is a font service and doesn't provide APIs to perform higher-level features like text layout or graphics processing (e.g., colored text rendering, ‘hollowing’, etc.). However, it greatly simplifies these tasks by providing a simple, easy to use, and uniform interface to access the content of font files.

FreeType 2 is released under two open-source licenses: our own BSD-like FreeType License and the GPL. It can thus be used by any kind of projects, be they proprietary or not.



The following is a non-exhaustive list of features provided by FreeType 2.

  • FreeType 2 provides a simple and easy-to-use API to access font content in a uniform way, independently of the file format. Additionally, some format-specific APIs can be used to access special data in the font file.

  • Unlike most comparable libraries, FreeType 2 supports scalable font formats like TrueType or Type 1 natively and can return the outline data (and control instructions/hints) to client applications.

  • The design of FreeType 2 is based on modules that can be either linked statically to the library at compile time, or loaded on demand at runtime. Modules are used to support specific font formats, or even new glyph image formats!

  • FreeType 2 was written with embedded systems in mind. This means that it doesn't use static writable data (i.e., it can be run from ROM directly), and that client applications can provide their own memory manager and I/O stream implementation.

    The latter allows you to easily read from ROM-based, compressed or remote font files with the same API. Several stream implementations can be used concurrently with a single FreeType 2 instance.

    You can also reduce the size of the FreeType 2 code by only compiling the modules you need for your embedded project/environment.

  • By default, FreeType 2 supports the following font formats.

    • TrueType fonts (and collections)
    • Type 1 fonts
    • CID-keyed Type 1 fonts
    • CFF fonts
    • OpenType fonts (both TrueType and CFF variants)
    • SFNT-based bitmap fonts
    • X11 PCF fonts
    • Windows FNT fonts
    • BDF fonts (including anti-aliased ones)
    • PFR fonts
    • Type 42 fonts (limited support)
  • From a given glyph outline, FreeType 2 is capable of producing a high-quality monochrome bitmap, or anti-aliased pixmap, using 256 levels of ‘gray’. This is much better than the 5 levels used by Windows 9x/98/NT/2000 or FreeType 1.

  • FreeType 2 supports all the character mappings defined by the TrueType and OpenType specification. It is also capable of automatically synthetizing a Unicode charmap from Type 1 fonts, which puts an end to the painful ‘encoding translation’ headache common with this format (of course, original encodings are also available in the case where you need them).

  • The FreeType 2 core API provides simple functions to access advanced information like glyph names or kerning data.

  • 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 misleading TrueType specification. However, we now match Windows and Mac qualities.

  • For those who don't need or want to use the bytecode interpreter for TrueType fonts, we developed our own automatic hinter module. It is also used by other scalable formats.

  • FreeType 2 provides information that is often not available from other similar font engines, like kerning distances, glyph names, vertical metrics, etc.

    Due to its modular design, it is easy to enhance the library to provide additional format-specific information through optional APIs (as an example, an optional API is provided to retrieve SFNT tables from TrueType and OpenType fonts).

  • FreeType 2 provides its own caching subsystem since release 2.0.1. It can be used to cache either face instances or glyph images efficiently.

  • A bundle of demo programs demonstrate the usage of FreeType 2; look for the ft2demos-x.x.x archive (or ftdmoxxx in case you are on a Windows platform) at the locations given here. ‘x.x.x’ (or ‘xxx’) gives the version number, for example ‘2.3.5’ or ‘235’.



FreeType 2 is written in industry-standard ANSI C and should compile easily with any compliant C compiler. We have even taken great care to eliminate all warnings when compiling with popular compilers like gcc, Visual C++, and Borland C++.

Apart from a standard ANSI C library, FreeType 2 doesn't have any external dependencies and can be compiled and installed on its own on any kind of system.


Patent Issues

All patents related to the TrueType bytecode interpreter have expired since May 2010. More information regarding this topic is available at our patents page.


Last update: 04-Jul-2010
    What is FreeType 2?       Features       Requirements       Patent Issues       |        Homepage
FreeType Homepage