Reformat documentation into sgml for docbook, split into user/devel guides
This commit is contained in:
parent
df43986cdc
commit
584ac89a01
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,559 @@
|
||||||
|
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V3.1//EN">
|
||||||
|
<!--
|
||||||
|
$Id$
|
||||||
|
|
||||||
|
Copyright © 2003 Keith Packard
|
||||||
|
|
||||||
|
Permission to use, copy, modify, distribute, and sell this software and its
|
||||||
|
documentation for any purpose is hereby granted without fee, provided that
|
||||||
|
the above copyright notice appear in all copies and that both that
|
||||||
|
copyright notice and this permission notice appear in supporting
|
||||||
|
documentation, and that the name of Keith Packard not be used in
|
||||||
|
advertising or publicity pertaining to distribution of the software without
|
||||||
|
specific, written prior permission. Keith Packard makes no
|
||||||
|
representations about the suitability of this software for any purpose. It
|
||||||
|
is provided "as is" without express or implied warranty.
|
||||||
|
|
||||||
|
KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||||
|
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
|
||||||
|
EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
||||||
|
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
|
||||||
|
DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
||||||
|
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||||
|
PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
-->
|
||||||
|
<article>
|
||||||
|
<artheader>
|
||||||
|
<title>Fontconfig Users Guide</title>
|
||||||
|
<titleabbrev>Fontconfig</titleabbrev>
|
||||||
|
<author><firstname>Keith</><surname>Packard</></author>
|
||||||
|
<authorinitials>krp</authorinitials>
|
||||||
|
</artheader>
|
||||||
|
<sect1><title>NAME</title>
|
||||||
|
<para>
|
||||||
|
fontconfig - Font configuration and customization library
|
||||||
|
</para>
|
||||||
|
</sect1>
|
||||||
|
<sect1><title>DESCRIPTION</title>
|
||||||
|
<para>
|
||||||
|
Fontconfig is a library designed to provide system-wide font configuration,
|
||||||
|
customization and application access.
|
||||||
|
</para>
|
||||||
|
</sect1>
|
||||||
|
<sect1><title>FUNCTIONAL OVERVIEW</title>
|
||||||
|
<para>
|
||||||
|
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.
|
||||||
|
</para>
|
||||||
|
<sect2><title>FONT CONFIGURATION</title>
|
||||||
|
<para>
|
||||||
|
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.
|
||||||
|
</para><para>
|
||||||
|
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.
|
||||||
|
</para><para>
|
||||||
|
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.
|
||||||
|
</para>
|
||||||
|
</sect2>
|
||||||
|
<sect2>
|
||||||
|
<title>FONT PROPERTIES</title>
|
||||||
|
<para>
|
||||||
|
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.
|
||||||
|
</para>
|
||||||
|
<table>
|
||||||
|
<title>Property Definitions</title>
|
||||||
|
<tgroup cols=3 align=left colsep=1 rowsep=1>
|
||||||
|
<colspec colname=Property>
|
||||||
|
<colspec colname=Type>
|
||||||
|
<colspec colname=Description>
|
||||||
|
<thead>
|
||||||
|
<row>
|
||||||
|
<entry>Property</entry>
|
||||||
|
<entry>Type</entry>
|
||||||
|
<entry>Description</entry>
|
||||||
|
</row>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<row><entry>family</entry><entry>String</entry><entry>Font family name</entry></row>
|
||||||
|
<row><entry>style</entry><entry>String</entry><entry>Font style. Overrides weight and slant</entry></row>
|
||||||
|
<row><entry>slant</entry><entry>Int</entry><entry>Italic, oblique or roman</entry></row>
|
||||||
|
<row><entry>weight</entry><entry>Int</entry><entry>Light, medium, demibold, bold or black</entry></row>
|
||||||
|
<row><entry>size</entry><entry>Double</entry><entry>Point size</entry></row>
|
||||||
|
<row><entry>aspect</entry><entry>Double</entry><entry>Stretches glyphs horizontally before hinting</entry></row>
|
||||||
|
<row><entry>pixelsize</entry><entry>Double</entry><entry>Pixel size</entry></row>
|
||||||
|
<row><entry>spacing</entry><entry>Int</entry><entry>Proportional, monospace or charcell</entry></row>
|
||||||
|
<row><entry>foundry</entry><entry>String</entry><entry>Font foundry name</entry></row>
|
||||||
|
<row><entry>antialias</entry><entry>Bool</entry><entry>Whether glyphs can be antialiased</entry></row>
|
||||||
|
<row><entry>hinting</entry><entry>Bool</entry><entry>Whether the rasterizer should use hinting</entry></row>
|
||||||
|
<row><entry>verticallayout</entry><entry>Bool</entry><entry>Use vertical layout</entry></row>
|
||||||
|
<row><entry>autohint</entry><entry>Bool</entry><entry>Use autohinter instead of normal hinter</entry></row>
|
||||||
|
<row><entry>globaladvance</entry><entry>Bool</entry><entry>Use font global advance data</entry></row>
|
||||||
|
<row><entry>file</entry><entry>String</entry><entry>The filename holding the font</entry></row>
|
||||||
|
<row><entry>index</entry><entry>Int</entry><entry>The index of the font within the file</entry></row>
|
||||||
|
<row><entry>ftface</entry><entry>FT_Face</entry><entry>Use the specified FreeType face object</entry></row>
|
||||||
|
<row><entry>rasterizer</entry><entry>String</entry><entry>Which rasterizer is in use</entry></row>
|
||||||
|
<row><entry>outline</entry><entry>Bool</entry><entry>Whether the glyphs are outlines</entry></row>
|
||||||
|
<row><entry>scalable</entry><entry>Bool</entry><entry>Whether glyphs can be scaled</entry></row>
|
||||||
|
<row><entry>scale</entry><entry>Double</entry><entry>Scale factor for point->pixel conversions</entry></row>
|
||||||
|
<row><entry>dpi</entry><entry>Double</entry><entry>Target dots per inch</entry></row>
|
||||||
|
<row><entry>rgba</entry><entry>Int</entry><entry>unknown, rgb, bgr, vrgb, vbgr, none - subpixel geometry</entry></row>
|
||||||
|
<row><entry>minspace</entry><entry>Bool</entry><entry>Eliminate leading from line spacing</entry></row>
|
||||||
|
<row><entry>charset</entry><entry>CharSet</entry><entry>Unicode chars encoded by the font</entry></row>
|
||||||
|
<row><entry>lang</entry><entry>String</entry><entry>List of RFC-3066-style languages this font supports</entry></row>
|
||||||
|
</tbody>
|
||||||
|
</tgroup>
|
||||||
|
</table>
|
||||||
|
</sect2>
|
||||||
|
<sect2>
|
||||||
|
<title>FONT MATCHING</title>
|
||||||
|
<para>
|
||||||
|
Fontconfig performs matching by measuring the distance from a provided
|
||||||
|
pattern to all of the available fonts in the system. The closest matching
|
||||||
|
font is selected. This ensures that a font will always be returned, but
|
||||||
|
doesn't ensure that it is anything like the requested pattern.
|
||||||
|
</para><para>
|
||||||
|
Font matching starts with an application constructed pattern. The desired
|
||||||
|
attributes of the resulting font are collected together in a pattern. Each
|
||||||
|
property of the pattern can contain one or more values; these are listed in
|
||||||
|
priority order; matches earlier in the list are considered "closer" than
|
||||||
|
matches later in the list.
|
||||||
|
</para><para>
|
||||||
|
The initial pattern is modified by applying the list of editing instructions
|
||||||
|
specific to patterns found in the configuration; each consists of a match
|
||||||
|
predicate and a set of editing operations. They are executed in the order
|
||||||
|
they appeared in the configuration. Each match causes the associated
|
||||||
|
sequence of editing operations to be applied.
|
||||||
|
</para><para>
|
||||||
|
After the pattern has been edited, a sequence of default substitutions are
|
||||||
|
performed to canonicalize the set of available properties; this avoids the
|
||||||
|
need for the lower layers to constantly provide default values for various
|
||||||
|
font properties during rendering.
|
||||||
|
</para><para>
|
||||||
|
The canonical font pattern is finally matched against all available fonts.
|
||||||
|
The distance from the pattern to the font is measured for each of several
|
||||||
|
properties: foundry, charset, family, lang, spacing, pixelsize, style,
|
||||||
|
slant, weight, antialias, rasterizer and outline. This list is in priority
|
||||||
|
order -- results of comparing earlier elements of this list weigh more
|
||||||
|
heavily than later elements.
|
||||||
|
</para><para>
|
||||||
|
There is one special case to this rule; family names are split into two
|
||||||
|
bindings; strong and weak. Strong family names are given greater precedence
|
||||||
|
in the match than lang elements while weak family names are given lower
|
||||||
|
precedence than lang elements. This permits the document language to drive
|
||||||
|
font selection when any document specified font is unavailable.
|
||||||
|
</para><para>
|
||||||
|
The pattern representing that font is augmented to include any properties
|
||||||
|
found in the pattern but not found in the font itself; this permits the
|
||||||
|
application to pass rendering instructions or any other data through the
|
||||||
|
matching system. Finally, the list of editing instructions specific to
|
||||||
|
fonts found in the configuration are applied to the pattern. This modified
|
||||||
|
pattern is returned to the application.
|
||||||
|
</para><para>
|
||||||
|
The return value contains sufficient information to locate and rasterize the
|
||||||
|
font, including the file name, pixel size and other rendering data. As
|
||||||
|
none of the information involved pertains to the FreeType library,
|
||||||
|
applications are free to use any rasterization engine or even to take
|
||||||
|
the identified font file and access it directly.
|
||||||
|
</para><para>
|
||||||
|
The match/edit sequences in the configuration are performed in two passes
|
||||||
|
because there are essentially two different operations necessary -- the
|
||||||
|
first is to modify how fonts are selected; aliasing families and adding
|
||||||
|
suitable defaults. The second is to modify how the selected fonts are
|
||||||
|
rasterized. Those must apply to the selected font, not the original pattern
|
||||||
|
as false matches will often occur.
|
||||||
|
</para>
|
||||||
|
</sect2>
|
||||||
|
<sect2><title>FONT NAMES</title>
|
||||||
|
<para>
|
||||||
|
Fontconfig provides a textual representation for patterns that the library
|
||||||
|
can both accept and generate. The representation is in three parts, first a
|
||||||
|
list of family names, second a list of point sizes and finally a list of
|
||||||
|
additional properties:
|
||||||
|
</para>
|
||||||
|
<programlisting>
|
||||||
|
<families>-<point sizes>:<name1>=<values1>:<name2>=<values2>...
|
||||||
|
</programlisting>
|
||||||
|
<para>
|
||||||
|
Values in a list are separated with commas. The name needn't include either
|
||||||
|
families or point sizes; they can be elided. In addition, there are
|
||||||
|
symbolic constants that simultaneously indicate both a name and a value.
|
||||||
|
Here are some examples:
|
||||||
|
</para>
|
||||||
|
<table colsep=0 rowsep=0>
|
||||||
|
<title>Sample Font Names</title>
|
||||||
|
<tgroup cols=2 align=left colsep=0 rowsep=0>
|
||||||
|
<thead><row>
|
||||||
|
<entry>Name</entry>
|
||||||
|
<entry>Meaning</entry>
|
||||||
|
</row></thead>
|
||||||
|
<tbody>
|
||||||
|
<row><entry>Times-12</entry><entry>12 point Times Roman</entry></row>
|
||||||
|
<row><entry>Times-12:bold</entry><entry>12 point Times Bold</entry></row>
|
||||||
|
<row><entry>Courier:italic</entry><entry>Courier Italic in the default size</entry></row>
|
||||||
|
<row><entry>Monospace:matrix=1 .1 0 1</entry><entry>The users preferred monospace font
|
||||||
|
with artificial obliquing</entry></row>
|
||||||
|
</tbody>
|
||||||
|
</tgroup>
|
||||||
|
</table>
|
||||||
|
</sect2>
|
||||||
|
</sect1>
|
||||||
|
<sect1><title>LANG TAGS</title>
|
||||||
|
<para>
|
||||||
|
Each font in the database contains a list of languages it supports. This is
|
||||||
|
computed by comparing the Unicode coverage of the font with the orthography
|
||||||
|
of each language. Languages are tagged using an RFC-3066 compatible naming
|
||||||
|
and occur in two parts -- the ISO639 language tag followed a hyphen and then
|
||||||
|
by the ISO 3166 country code. The hyphen and country code may be elided.
|
||||||
|
</para><para>
|
||||||
|
Fontconfig has orthographies for several languages built into the library.
|
||||||
|
No provision has been made for adding new ones aside from rebuilding the
|
||||||
|
library. It currently supports 122 of the 139 languages named in ISO 639-1,
|
||||||
|
141 of the languages with two-letter codes from ISO 639-2 and another 30
|
||||||
|
languages with only three-letter codes.
|
||||||
|
</para>
|
||||||
|
</sect1>
|
||||||
|
<sect1><title>CONFIGURATION FILE FORMAT</title>
|
||||||
|
<para>
|
||||||
|
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.
|
||||||
|
</para><para>
|
||||||
|
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:
|
||||||
|
<programlisting>
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
|
||||||
|
<fontconfig>
|
||||||
|
...
|
||||||
|
</fontconfig>
|
||||||
|
</programlisting>
|
||||||
|
</para><para>
|
||||||
|
<sect2><title><fontconfig></title><para>
|
||||||
|
This is the top level element for a font configuration and can contain
|
||||||
|
<dir>, <cache>, <include>, <match> and <alias> elements in any order.
|
||||||
|
</para></sect2>
|
||||||
|
<sect2><title><dir></title><para>
|
||||||
|
This element contains a directory name which will be scanned for font files
|
||||||
|
to include in the set of available fonts.
|
||||||
|
</para></sect2>
|
||||||
|
<sect2><title><cache></title><para>
|
||||||
|
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).
|
||||||
|
</para></sect2>
|
||||||
|
<sect2><title><include ignore_missing="no"></title><para>
|
||||||
|
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.
|
||||||
|
</para></sect2>
|
||||||
|
<sect2><title><config></title><para>
|
||||||
|
This element provides a place to consolodate additional configuration
|
||||||
|
information. <config> can contain <blank> and <rescan> elements in any
|
||||||
|
order.
|
||||||
|
</para></sect2>
|
||||||
|
<sect2><title><blank></title><para>
|
||||||
|
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.
|
||||||
|
</para></sect2>
|
||||||
|
<sect2><title><rescan></title><para>
|
||||||
|
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.
|
||||||
|
</para></sect2>
|
||||||
|
<sect2><title><match target="pattern"></title><para>
|
||||||
|
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.
|
||||||
|
</para></sect2>
|
||||||
|
<sect2><title><test qual="any" name="property" compare="eq"></title><para>
|
||||||
|
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.
|
||||||
|
</para></sect2>
|
||||||
|
<sect2><title><edit name="property" mode="assign" binding="weak"></title><para>
|
||||||
|
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:
|
||||||
|
<table>
|
||||||
|
<title>Edit Element Modes</title>
|
||||||
|
<tgroup cols=3 align=left colsep=0 rowsep=0>
|
||||||
|
<thead>
|
||||||
|
<row>
|
||||||
|
<entry>Mode</entry>
|
||||||
|
<entry>Operation With Match</entry>
|
||||||
|
<entry>Operation Without Match</entry>
|
||||||
|
</row>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<row><entry>"assign"</entry><entry>Replace matching value</entry><entry>Replace all values</entry></row>
|
||||||
|
<row><entry>"assign_replace"</entry><entry>Replace all values</entry><entry>Replace all values</entry></row>
|
||||||
|
<row><entry>"prepend"</entry><entry>Insert before matching value</entry><entry>Insert at head of list</entry></row>
|
||||||
|
<row><entry>"prepend_first"</entry><entry>Insert at head of list</entry><entry>Insert at head of list</entry></row>
|
||||||
|
<row><entry>"append"</entry><entry>Append after matching value</entry><entry>Append at end of list</entry></row>
|
||||||
|
<row><entry>"append_last"</entry><entry>Append at end of list</entry><entry>Append at end of list</entry></row>
|
||||||
|
</tbody>
|
||||||
|
</tgroup>
|
||||||
|
</table>
|
||||||
|
</para></sect2>
|
||||||
|
<sect2><title><int>, <double>, <string>, <bool></title><para>
|
||||||
|
These elements hold a single value of the indicated type. <bool> elements
|
||||||
|
hold either true or false.
|
||||||
|
</para></sect2>
|
||||||
|
<sect2><title><matrix></title><para>
|
||||||
|
This element holds the four <double> elements of an affine
|
||||||
|
transformation.
|
||||||
|
</para></sect2>
|
||||||
|
<sect2><title><name></title><para>
|
||||||
|
Holds a property name. Evaluates to the first value from the property of
|
||||||
|
the font, not the pattern.
|
||||||
|
</para></sect2>
|
||||||
|
<sect2><title><const></title><para>
|
||||||
|
Holds the name of a constant; these are always integers and serve as
|
||||||
|
symbolic names for common font values:
|
||||||
|
<table>
|
||||||
|
<title>Symbolic Constants</title>
|
||||||
|
<tgroup cols=3 align=left colsep=0 rowsep=0>
|
||||||
|
<thead>
|
||||||
|
<row>
|
||||||
|
<entry>Constant</entry>
|
||||||
|
<entry>Property</entry>
|
||||||
|
<entry>CPP Symbol</entry>
|
||||||
|
</row>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<row><entry>light</entry><entry>weight</entry></row>
|
||||||
|
<row><entry>medium</entry><entry>weight</entry></row>
|
||||||
|
<row><entry>demibold</entry><entry>weight</entry></row>
|
||||||
|
<row><entry>bold</entry><entry>weight</entry></row>
|
||||||
|
<row><entry>black</entry><entry>weight</entry></row>
|
||||||
|
<row><entry>roman</entry><entry>slant</entry></row>
|
||||||
|
<row><entry>italic</entry><entry>slant</entry></row>
|
||||||
|
<row><entry>oblique</entry><entry>slant</entry></row>
|
||||||
|
<row><entry>proportional</entry><entry>spacing</entry></row>
|
||||||
|
<row><entry>mono</entry><entry>spacing</entry></row>
|
||||||
|
<row><entry>charcell</entry><entry>spacing</entry></row>
|
||||||
|
<row><entry>unknown</entry><entry>rgba</entry></row>
|
||||||
|
<row><entry>rgb</entry><entry>rgba</entry></row>
|
||||||
|
<row><entry>bgr</entry><entry>rgba</entry></row>
|
||||||
|
<row><entry>vrgb</entry><entry>rgba</entry></row>
|
||||||
|
<row><entry>vbgr</entry><entry>rgba</entry></row>
|
||||||
|
<row><entry>none</entry><entry>rgba</entry></row>
|
||||||
|
</tbody>
|
||||||
|
</tgroup>
|
||||||
|
</table>
|
||||||
|
<sect2><title><or>,
|
||||||
|
<and>,
|
||||||
|
<plus>,
|
||||||
|
<minus>,
|
||||||
|
<times>,
|
||||||
|
<divide></title><para>
|
||||||
|
These elements perform the specified operation on a list of expression
|
||||||
|
elements. <or> and <and> are boolean, not bitwise.
|
||||||
|
<sect2><title><eq>,
|
||||||
|
<not_eq>,
|
||||||
|
<less>,
|
||||||
|
<less_eq>,
|
||||||
|
<more>,
|
||||||
|
<more_eq></title><para>
|
||||||
|
These elements compare two values, producing a boolean result.
|
||||||
|
</para></sect2>
|
||||||
|
<sect2><title><not></title><para>
|
||||||
|
Inverts the boolean sense of its one expression element
|
||||||
|
</para></sect2>
|
||||||
|
<sect2><title><if></title><para>
|
||||||
|
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.
|
||||||
|
</para></sect2>
|
||||||
|
<sect2><title><alias></title><para>
|
||||||
|
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 familys after the matching <family> and append the <default>
|
||||||
|
families to the end of the family list.
|
||||||
|
</para></sect2>
|
||||||
|
<sect2><title><family></title><para>
|
||||||
|
Holds a single font family name
|
||||||
|
</para></sect2>
|
||||||
|
<sect2><title><prefer>, <accept>, <default></title><para>
|
||||||
|
These hold a list of <family> elements to be used by the <alias> element.
|
||||||
|
</article>
|
||||||
|
</para></sect2>
|
||||||
|
</sect1>
|
||||||
|
<sect1><title>EXAMPLE CONFIGURATION FILE</title>
|
||||||
|
<sect2><title>System configuration file</title>
|
||||||
|
<para>
|
||||||
|
This is an example of a system-wide configuration file
|
||||||
|
</para>
|
||||||
|
<programlisting>
|
||||||
|
<?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>
|
||||||
|
</programlisting>
|
||||||
|
<sect2><title>User configuration file</title>
|
||||||
|
<para>
|
||||||
|
This is an example of a per-user configuration file that lives in
|
||||||
|
~/.fonts.conf
|
||||||
|
</para>
|
||||||
|
<programlisting>
|
||||||
|
<?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>
|
||||||
|
</programlisting>
|
||||||
|
</sect2>
|
||||||
|
<sect1><title>FILES</title>
|
||||||
|
<para>
|
||||||
|
<emphasis>fonts.conf</emphasis>
|
||||||
|
contains configuration information for the fontconfig library
|
||||||
|
consisting of directories to look at for font information as well as
|
||||||
|
instructions on editing program specified font patterns before attempting to
|
||||||
|
match the available fonts. It is in xml format.
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
<emphasis>fonts.dtd</emphasis>
|
||||||
|
is a DTD that describes the format of the configuration files.
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
<emphasis>~/.fonts.conf</emphasis>
|
||||||
|
is the conventional location for per-user font configuration, although the
|
||||||
|
actual location is specified in the global fonts.conf file.
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
<emphasis> ~/.fonts.cache-*</emphasis>
|
||||||
|
is the conventional repository of font information that isn't found in the
|
||||||
|
per-directory caches. This file is automatically maintained by fontconfig.
|
||||||
|
</para>
|
||||||
|
</sect1>
|
||||||
|
</article>
|
|
@ -1,55 +0,0 @@
|
||||||
\documentclass[10pt]{article}
|
|
||||||
\usepackage{latexsym}
|
|
||||||
\usepackage{epsfig}
|
|
||||||
\usepackage{times}
|
|
||||||
|
|
||||||
\begin{document}
|
|
||||||
\date{}
|
|
||||||
\title{The Fontconfig Library:\\
|
|
||||||
Architecture and Users Guide}
|
|
||||||
\author{Keith Packard\\
|
|
||||||
{\em XFree86 Core Team}\\
|
|
||||||
keithp@keithp.com}
|
|
||||||
\maketitle
|
|
||||||
\thispagestyle{empty}
|
|
||||||
|
|
||||||
\abstract
|
|
||||||
|
|
||||||
The Fontconfig library provides for central administration and configuration
|
|
||||||
of fonts in a POSIX system. All font consumers can share a common database
|
|
||||||
of fonts and use common matching rules for font names. The set of available
|
|
||||||
fonts can be configured for each user and a set of configurable matching
|
|
||||||
rules allow for customizing the selection of fonts and configuring various
|
|
||||||
parameters related to rasterizing of those fonts for display in a variety of
|
|
||||||
media. The Fontconfig library is designed to co-exist peacefully with
|
|
||||||
existing font configuration and rasterization mechanisms; while it uses the
|
|
||||||
FreeType library to discover characteristics of available fonts, there
|
|
||||||
is no requirement to use FreeType for rasterization.
|
|
||||||
|
|
||||||
\section {Introduction}
|
|
||||||
|
|
||||||
\section {Configuration Files}
|
|
||||||
|
|
||||||
\section {Application Interface}
|
|
||||||
|
|
||||||
\subsection {Datatypes}
|
|
||||||
|
|
||||||
\subsection {Font Set Interface}
|
|
||||||
|
|
||||||
\subsection {Font Patterns}
|
|
||||||
|
|
||||||
\subsection {Listing Available Fonts}
|
|
||||||
|
|
||||||
\subsection {Using Font Names}
|
|
||||||
|
|
||||||
\subsection {Manipulating Matrices}
|
|
||||||
|
|
||||||
\subsection {UTF-8 Helper Functions}
|
|
||||||
|
|
||||||
\section {Font Sub-System Interface}
|
|
||||||
|
|
||||||
\subsection {Extending Font Names}
|
|
||||||
|
|
||||||
\subsection {Executing Configuration Rules}
|
|
||||||
|
|
||||||
\end{document}
|
|
Loading…
Reference in New Issue