4. Configuration File Format
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>
|
- `<fontconfig>'
- This is the top level element for a font configuration and can contain
`<dir>', `<cache>', `<include>', `<match>' and `<alias>' elements in any order.
- `<dir>'
- 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.
- `<cache>'
- 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).
- `<include ignore_missing="no">'
- 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.
- `<config>'
- This element provides a place to consolidate additional configuration
information. `<config>' can contain `<blank>' and `<rescan>' elements in any
order.
- `<blank>'
- 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.
- `<rescan>'
- 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.
- `<match target="pattern">'
- 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.
- `<test qual="any" name="property" compare="eq">'
- 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.
- `<edit name="property" mode="assign" binding="weak">'
- 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
|
- `<int>'
- `<double>'
- `<string>'
- `<bool>'
- These elements hold a single value of the indicated type. `<bool>' elements
hold either true or false.
- `<matrix>'
This element holds the four `<double>' elements of an affine transformation.
- `<name>'
- Holds a property name. Evaluates to the first value from the property of
the font, not the pattern.
- `<const>'
- 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
|
- `<or>'
- `<and>'
- `<plus>'
- `<minus>'
- `<times>'
- `<divide>'
- These elements perform the specified operation on a list of expression
elements. `<or>' and `<and>' are boolean, not bitwise.
- `<eq>'
- `<not_eq>'
- `<less>'
- `<less_eq>'
- `<more>'
- `<more_eq>'
- These elements compare two values, producing a boolean result.
- `<not>'
- Inverts the boolean sense of its one expression element
- `<if>'
- 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>'
- 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.
- `<family>'
- Holds a single font family name
- `<prefer>'
- `<accept>'
- `<default>'
- These each hold a list of `<family>' elements to be used by the `<alias>'
element.
4.1 Example System Configuration File
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>
|
4.2 Example User Configuration File
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>
|
This document was generated by XEmacs shared group account on December, 19 2009
using texi2html 1.65.