David Turner and others had developed an Open Source font rasterizer called “FreeType”1. FreeType was already a fairly mature project when Keith Packard started working on Xft. FreeType2, the successor to the original FreeType library, was designed to be compact, efficient, and portable across all kinds of systems, including embedded systems. FreeType2 currently supports over 11 different font formats, including both the TrueType and CFF variants of OpenType and font formats used on X11 such as PCF and BDF formats.
Xft2 provides the glue that allows X client applications to interface to the FreeType2 font rasterizer and to the XRender extension. In order to greatly simplify the design of the library, all text output routines accept only Unicode-encoded data. Since neither FreeType nor the XRender extension provided any kind of font configuration or customization mechanisms, Xft originally handled this. Later, during a redesign of Xft, the font configuration and customization portions of the library were broken out into a separate library called FontConfig.
FontConfig3 permits applications to locate fonts installed on the system and uses sophisticated font matching and selection algorithms to identify fonts according to certain characteristics, such as family, weight, or Unicode range. FontConfig also provides mechanisms for customizing fonts, for example by mapping generic names like “sans-serif”, “serif”, and “monospace” to fonts available on the system. Configuration information is stored in XML-based files, such as the system-wide /etc/fonts/fonts.conf file.
1. Excellent documentation on FreeType is available at http://www.freetype.org.
2. Keith Packard, The Xft Font Library: Architecture and Users Guide, http://keithp.com/~keithp/talks/xtc2001, 2001.
3. Keith Packard, Font Configuration and Customization for Open Source Systems, http://keithp.com/~keithp/talks/guadec2002, 2002.