Fontconfig is a library for configuring and customizing font access.
Font Configuration Library contains two essential modules, the configuration module which builds an internal configuration from XML files and the matching module which accepts font patterns and returns the nearest matching font.
The configuration module consists of the FcConfig datatype, libexpat and FcConfigParse which walks over an XML tree and ammends a configuration with data found within. From an external perspective, configuration of the library consists of generating a valid XML tree and feeding that to FcConfigParse.
The only other mechanism provided to applications for changing the running configuration is to add fonts and directories to the list of application-provided font files.
The intent is to make font configurations relatively static, and shared by as many applications as possible.
It is hoped that this will lead to more stable font selection when passing names from one application to another. XML was chosen as a configuration file format because it provides a format which is easy for external agents to edit while retaining the correct structure and syntax.
Font configuration is separate from font matching; applications needing to do their own matching can access the available fonts from the library and perform private matching.
The intent is to permit applications to pick and choose appropriate functionality from the library instead of forcing them to choose between this library and a private configuration mechanism.
The hope is that this will ensure that configuration of fonts for all applications can be centralized in one place. Centralizing font configuration will simplify and regularize font installation and customization.
What's New in This Release:
· Shared mmap'ed cache files.
· All font cache files are mapped read-only and shared across multiple processes.
· The startup performance and memory footprint of the library have, as a result, been significantly improved.
· Configuration is split into multiple files.
· While 2.3 provided the ability to incorporate additional configuration files from a directory, it didn't use them extensively.
· The new configuration structure places most of the configuration into separate files.