[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Configuration files for fontconfig are stored in XML format; this format makes external configuration tools easier to write and ensures that they will generate syntactically correct configuration files. As XML files are plain text, they can also be manipulated by the expert user using a text editor.
The fontconfig document type definition resides in the external entity ‘fonts.dtd’; this is normally stored in the default font configuration directory (‘/etc/fonts’). Each configuration file should contain the following structure:
<?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <fontconfig> ... </fontconfig> |
This is the top level element for a font configuration and can contain ‘<dir>’, ‘<cache>’, ‘<include>’, ‘<match>’ and ‘<alias>’ elements in any order.
This element contains a directory name which will be scanned for font files to include in the set of available fonts. The scan does not recurse into subdirectories.
This element contains a file name for the per-user cache of font information. If it starts with ’~’, it refers to a file in the users home directory. This file is used to hold information about fonts that isn’t present in the per-directory cache files. It is automatically maintained by the fontconfig library. The default for this file is “~/.fonts.cache-<version>”, where <version> is the font configuration file version number (currently 1).
This element contains the name of an additional configuration file. When the XML datatype is traversed by FcConfigParse, the contents of the file will also be incorporated into the configuration by passing the filename to FcConfigLoadAndParse. If ’ignore_missing’ is set to "yes" instead of the default "no", a missing file will elicit no warning message from the library.
This element provides a place to consolidate additional configuration information. ‘<config>’ can contain ‘<blank>’ and ‘<rescan>’ elements in any order.
Fonts often include "broken" glyphs which appear in the encoding but are drawn as blanks on the screen. Within the ‘<blank>’ element, place each Unicode characters which is supposed to be blank in an ‘<int>’ element. Characters outside of this set which are drawn as blank will be elided from the set of characters supported by the font.
The ‘<rescan>’ element holds an ‘<int>’ element which indicates the default interval between automatic checks for font configuration changes. Fontconfig will validate all of the configuration files and directories and automatically rebuild the internal datastructures when this interval passes.
This element holds first a (possibly empty) list of ‘<test>’ elements and then a (possibly empty) list of ‘<edit>’ elements. Patterns which match all of the tests are subjected to all the edits. If ’target’ is set to "font" instead of the default "pattern", then this element applies to the font name resulting from a match rather than a font pattern to be matched.
This element contains a single value which is compared with the pattern property "property" (substitute any of the property names seen above). ’compare’ can be one of "eq", "not_eq", "less", "less_eq", "more", or "more_eq". ’qual’ may either be the default, "any", in which case the match succeeds if any value associated with the property matches the test value, or "all", in which case all of the values associated with the property must match the test value.
This element contains a list of expression elements (any of the value or operator elements). The expression elements are evaluated at run-time and modify the property "property". The modification depends on whether "property" was matched by one of the associated ‘<test>’ elements, if so, the modification may affect the first matched value. Any values inserted into the property are given the indicated binding. ’mode’ is one of:
Mode Operation with match Operation without match "assign" Replace matching value Replace all values "assign_replace" Replace all values Replace all values "prepend" Insert before matching value Insert at head of list "prepend_first" Insert at head of list Insert at head of list "append" Append after matching value Append at end of list "append_last" Append at end of list Append at end of list |
These elements hold a single value of the indicated type. ‘<bool>’ elements hold either true or false.
This element holds the four ‘<double>’ elements of an affine transformation.
Holds a property name. Evaluates to the first value from the property of the font, not the pattern.
Holds the name of a constant; these are always integers and serve as symbolic names for common font values:
Constant Property CPP symbol light weight FC_WEIGHT_LIGHT medium weight FC_WEIGHT_MEDIUM demibold weight FC_WEIGHT_DEMIBOLD bold weight FC_WEIGHT_BOLD black weight FC_WEIGHT_BLACK roman slant FC_SLANT_ROMAN italic slant FC_SLANT_ITALIC oblique slant FC_SLANT_OBLIQUE proportional spacing FC_PROPORTIONAL mono spacing FC_MONO charcell spacing FC_CHARCELL unknown rgba FC_RGBA_UNKNOWN rgb rgba FC_RGBA_RGB bgr rgba FC_RGBA_BGR vrgb rgba FC_RGBA_VRGB vbgr rgba FC_RGBA_VBGR none rgba FC_RGBA_NONE |
These elements perform the specified operation on a list of expression elements. ‘<or>’ and ‘<and>’ are boolean, not bitwise.
These elements compare two values, producing a boolean result.
Inverts the boolean sense of its one expression element
This element takes three expression elements; if the value of the first is true, it produces the value of the second, otherwise it produces the value of the third.
Alias elements provide a shorthand notation for the set of common match operations needed to substitute one font family for another. They contain a ‘<family>’ element followed by optional ‘<prefer>’, ‘<accept>’ and ‘<default>’ elements. Fonts matching the ‘<family>’ element are edited to prepend the list of ‘<prefer>’ed families before the matching ‘<family>’, append the ‘<accept>’able families after the matching ‘<family>’ and append the ‘<default>’ families to the end of the family list.
Holds a single font family name
These each hold a list of ‘<family>’ elements to be used by the ‘<alias>’ element.
4.1 Example System Configuration File | ||
4.2 Example User Configuration File |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This is an example of a system-wide configuration file:
<?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <!-- /etc/fonts/fonts.conf file to configure system font access --> <fontconfig> <!-- Find fonts in these directories --> <dir>/usr/X11R6/lib/X11/fonts/truetype</dir> <dir>/usr/X11R6/lib/X11/fonts/Type1</dir> <!-- Accept deprecated 'mono' alias, replacing it with 'monospace' --> <match target="pattern"> <test qual="any" name="family"><string>mono</string></test> <edit name="family" mode="assign"><string>monospace</string></edit> </match> <!-- Names not including any well known alias are given 'sans' --> <match target="pattern"> <test qual="all" name="family" mode="not_eq">sans</test> <test qual="all" name="family" mode="not_eq">serif</test> <test qual="all" name="family" mode="not_eq">monospace</test> <edit name="family" mode="append_last"><string>sans</string></edit> </match> <!-- Load per-user customization file, but don't complain if it doesn't exist --> <include ignore_missing="yes">~/.fonts.conf</include> <!-- Alias well known font names to available TrueType fonts. These substitute TrueType faces for similar Type1 faces to improve screen appearance. --> <alias> <family>Times</family> <prefer><family>Times New Roman</family></prefer> <default><family>serif</family></default> </alias> <alias> <family>Helvetica</family> <prefer><family>Verdana</family></prefer> <default><family>sans</family></default> </alias> <alias> <family>Courier</family> <prefer><family>Courier New</family></prefer> <default><family>monospace</family></default> </alias> <!-- Provide required aliases for standard names Do these after the users configuration file so that any aliases there are used preferentially --> <alias> <family>serif</family> <prefer><family>Times New Roman</family></prefer> </alias> <alias> <family>sans</family> <prefer><family>Verdana</family></prefer> </alias> <alias> <family>monospace</family> <prefer><family>Andale Mono</family></prefer> </alias> </fontconfig> |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This is an example of a per-user configuration file that lives in ‘~/.fonts.conf’:
<?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <!-- ~/.fonts.conf for per-user font configuration --> <fontconfig> <!-- Private font directory --> <dir>~/misc/fonts</dir> <!-- use rgb sub-pixel ordering to improve glyph appearance on LCD screens. Changes affecting rendering, but not matching, should always use target="font". --> <match target="font"> <edit name="rgba" mode="assign"><const>rgb</const></edit> </match> </fontconfig> |
[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated by Aidan Kehoe on December 27, 2016 using texi2html 1.82.