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 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
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
By default, FreeType 2 supports the following font
- 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 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
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
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
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.
All patents related to the TrueType bytecode interpreter have
expired since May 2010. More information regarding this topic is
available at our patents page.