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