Prev |  | Next

# 2. FUNCTIONAL OVERVIEW

Fontconfig 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.

## 2.1. FONT CONFIGURATION

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.

## 2.2. FONT PROPERTIES

While font patterns may contain essentially any properties, there are some well known properties with associated types. Fontconfig uses some of these properties for font matching and font completion. Others are provided as a convenience for the applications rendering mechanism.

                     Property Definitions

        Property       CPP Symbol           Type    Description
        ----------------------------------------------------
        family         FC_FAMILY            String  Font family names
        familylang     FC_FAMILYLANG        String  Language cooresponding to
                                                    each family name
        style          FC_STYLE             String  Font style. Overrides weight
                                                    and slant
        stylelang      FC_STYLELANG         String  Language cooresponding to
                                                    each style name
        fullname       FC_FULLNAME          String  Font face full name where
                                                    different from family and
                                                    family + style
        fullnamelang   FC_FULLNAMELANG      String  Language cooresponding to
                                                    each fullname
        slant          FC_SLANT             Int     Italic, oblique or roman
        weight         FC_WEIGHT            Int     Light, medium, demibold,
                                                    bold or black
        size           FC_SIZE              Double  Point size
        width          FC_WIDTH             Int     Condensed, normal or expanded
        aspect         FC_ASPECT            Double  Stretches glyphs horizontally
                                                    before hinting
        pixelsize      FC_PIXEL_SIZE        Double  Pixel size
        spacing        FC_SPACING           Int     Proportional, dual-width,
                                                    monospace or charcell
        foundry        FC_FOUNDRY           String  Font foundry name
        antialias      FC_ANTIALIAS         Bool    Whether glyphs can be
                                                    antialiased
        hinting        FC_HINTING           Bool    Whether the rasterizer should
                                                    use hinting
        hintstyle      FC_HINT_STYLE        Int     Automatic hinting style
        verticallayout FC_VERTICAL_LAYOUT   Bool    Use vertical layout
        autohint       FC_AUTOHINT          Bool    Use autohinter instead of
                                                    normal hinter
        globaladvance  FC_GLOBAL_ADVANCE    Bool    Use font global advance data
        file           FC_FILE              String  The filename holding the font
        index          FC_INDEX             Int     The index of the font within
                                                    the file
        ftface         FC_FT_FACE           FT_Face Use the specified FreeType
                                                    face object
        rasterizer     FC_RASTERIZER        String  Which rasterizer is in use
        outline        FC_OUTLINE           Bool    Whether the glyphs are outlines
        scalable       FC_SCALABLE          Bool    Whether glyphs can be scaled
        scale          FC_SCALE             Double  Scale factor for point->pixel
                                                    conversions
        dpi            FC_DPI               Double  Target dots per inch
        rgba           FC_RGBA              Int     unknown, rgb, bgr, vrgb,
                                                    vbgr, none - subpixel geometry
        minspace       FC_MINSPACE          Bool    Eliminate leading from line
                                                    spacing
        charset        FC_CHARSET           CharSet Unicode chars encoded by
                                                    the font
        lang           FC_LANG              String  List of RFC-3066-style
                                                    languages this font supports
        fontversion    FC_FONTVERSION       Int     Version number of the font
        capability     FC_CAPABILITY        String  List of layout capabilities in
                                                    the font
        embolden       FC_EMBOLDEN          Bool    Rasterizer should
                                                    synthetically embolden the font

Prev | Home | Next
|  | Datatypes