aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/extras/fontconfig/doc/fontconfig-user.txt
diff options
context:
space:
mode:
authorReinhard Tartler <siretart@tauware.de>2011-10-10 17:43:39 +0200
committerReinhard Tartler <siretart@tauware.de>2011-10-10 17:43:39 +0200
commitf4092abdf94af6a99aff944d6264bc1284e8bdd4 (patch)
tree2ac1c9cc16ceb93edb2c4382c088dac5aeafdf0f /nx-X11/extras/fontconfig/doc/fontconfig-user.txt
parenta840692edc9c6d19cd7c057f68e39c7d95eb767d (diff)
downloadnx-libs-f4092abdf94af6a99aff944d6264bc1284e8bdd4.tar.gz
nx-libs-f4092abdf94af6a99aff944d6264bc1284e8bdd4.tar.bz2
nx-libs-f4092abdf94af6a99aff944d6264bc1284e8bdd4.zip
Imported nx-X11-3.1.0-1.tar.gznx-X11/3.1.0-1
Summary: Imported nx-X11-3.1.0-1.tar.gz Keywords: Imported nx-X11-3.1.0-1.tar.gz into Git repository
Diffstat (limited to 'nx-X11/extras/fontconfig/doc/fontconfig-user.txt')
-rw-r--r--nx-X11/extras/fontconfig/doc/fontconfig-user.txt643
1 files changed, 643 insertions, 0 deletions
diff --git a/nx-X11/extras/fontconfig/doc/fontconfig-user.txt b/nx-X11/extras/fontconfig/doc/fontconfig-user.txt
new file mode 100644
index 000000000..4acde57a8
--- /dev/null
+++ b/nx-X11/extras/fontconfig/doc/fontconfig-user.txt
@@ -0,0 +1,643 @@
+
+ fonts-conf
+
+Name
+
+ fonts.conf -- Font configuration files
+
+Synopsis
+
+ /etc/fonts/fonts.conf
+ /etc/fonts/fonts.dtd
+ /etc/fonts/conf.d
+ ~/.fonts.conf
+
+Description
+
+ Fontconfig is a library designed to provide system-wide font
+ configuration, customization and application access.
+
+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.
+
+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.
+
+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 Type Description
+ --------------------------------------------------------------
+ family String Font family names
+ familylang String Languages cooresponding to each family
+ style String Font style. Overrides weight and slant
+ stylelang String Languages cooresponding to each style
+ fullname String Font full names (often includes style)
+ fullnamelang String Languages cooresponding to each fullname
+ slant Int Italic, oblique or roman
+ weight Int Light, medium, demibold, bold or black
+ size Double Point size
+ width Int Condensed, normal or expanded
+ aspect Double Stretches glyphs horizontally before hinting
+ pixelsize Double Pixel size
+ spacing Int Proportional, dual-width, monospace or charce
+ll
+ foundry String Font foundry name
+ antialias Bool Whether glyphs can be antialiased
+ hinting Bool Whether the rasterizer should use hinting
+ hintstyle Int Automatic hinting style
+ verticallayout Bool Use vertical layout
+ autohint Bool Use autohinter instead of normal hinter
+ globaladvance Bool Use font global advance data
+ file String The filename holding the font
+ index Int The index of the font within the file
+ ftface FT_Face Use the specified FreeType face object
+ rasterizer String Which rasterizer is in use
+ outline Bool Whether the glyphs are outlines
+ scalable Bool Whether glyphs can be scaled
+ scale Double Scale factor for point->pixel conversions
+ dpi Double Target dots per inch
+ rgba Int unknown, rgb, bgr, vrgb, vbgr,
+ none - subpixel geometry
+ minspace Bool Eliminate leading from line spacing
+ charset CharSet Unicode chars encoded by the font
+ lang String List of RFC-3066-style languages this
+ font supports
+ fontversion Int Version number of the font
+ capability String List of layout capabilities in the font
+ embolden Bool Rasterizer should synthetically embolden the
+font
+
+
+Font Matching
+
+ 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.
+
+ 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.
+
+ 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.
+
+ 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.
+
+ 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.
+
+ 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.
+
+ 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.
+
+ 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.
+
+ 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.
+
+Font Names
+
+ 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:
+ <families>-<point sizes>:<name1>=<values1>:<name2>=<values2>...
+
+
+ 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:
+ Name Meaning
+ ----------------------------------------------------------
+ Times-12 12 point Times Roman
+ Times-12:bold 12 point Times Bold
+ Courier:italic Courier Italic in the default size
+ Monospace:matrix=1 .1 0 1 The users preferred monospace font
+ with artificial obliquing
+
+
+Lang Tags
+
+ 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 ISO 639 language tag followed a hyphen and
+ then by the ISO 3166 country code. The hyphen and country code
+ may be elided.
+
+ 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. Languages with both two and
+ three letter codes are provided with only the two letter code.
+
+ For languages used in multiple territories with radically
+ different character sets, fontconfig includes per-territory
+ orthographies. This includes Azerbaijani, Kurdish, Pashto,
+ Tigrinya and Chinese.
+
+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.
+
+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 or directory. If a directory, every file within that
+ directory starting with a number will be processed in sorted
+ order. When the XML datatype is traversed by FcConfigParse,
+ the contents of the file(s) will also be incorporated into the
+ configuration by passing the filename(s) to
+ FcConfigLoadAndParse. If 'ignore_missing' is set to "yes"
+ instead of the default "no", a missing file or directory will
+ elicit no warning message from the library.
+
+config
+
+ This element provides a place to consolodate 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.
+
+selectfont
+
+ This element is used to black/white list fonts from being
+ listed or matched against. It holds acceptfont and rejectfont
+ elements.
+
+acceptfont
+
+ Fonts matched by an acceptfont element are "whitelisted"; such
+ fonts are explicitly included in the set of fonts used to
+ resolve list and match requests; including them in this list
+ protects them from being "blacklisted" by a rejectfont
+ element. Acceptfont elements include glob and pattern elements
+ which are used to match fonts.
+
+rejectfont
+
+ Fonts matched by an rejectfont element are "blacklisted"; such
+ fonts are excluded from the set of fonts used to resolve list
+ and match requests as if they didn't exist in the system.
+ Rejectfont elements include glob and pattern elements which
+ are used to match fonts.
+
+glob
+
+ Glob elements hold shell-style filename matching patterns
+ (including ? and *) which match fonts based on their complete
+ pathnames. This can be used to exclude a set of directories
+ (/usr/share/fonts/uglyfont*), or particular font file types
+ (*.pcf.gz), but the latter mechanism relies rather heavily on
+ filenaming conventions which can't be relied upon.
+
+pattern
+
+ Pattern elements perform list-style matching on incoming
+ fonts; that is, they hold a list of elements and associated
+ values. If all of those elements have a matching value, then
+ the pattern matches the font. This can be used to select fonts
+ based on attributes of the font (scalable, bold, etc), which
+ is a more reliable mechanism than using file extensions.
+ Pattern elements include patelt elements.
+
+patelt name="property"
+
+ Patelt elements hold a single pattern element and list of
+ values. They must have a 'name' attribute which indicates the
+ pattern element name. Patelt elements include int, double,
+ string, matrix, bool, charset and const elements.
+
+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" target="default" compare="eq"
+
+ This element contains a single value which is compared with
+ the target ('pattern', 'font' or 'default') 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. When used in a <match target="font"> element, the
+ target= attribute in the <test> element selects between
+ matching the original pattern or the font. "default" selects
+ whichever target the outer <match> element has selected.
+
+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 ("strong", "weak" or
+ "same") with "same" binding using the value from the matched
+ pattern element. 'mode' is one of:
+ Mode With Match Without Match
+ ---------------------------------------------------------------------
+ "assign" Replace matching value Replace all values
+ "assign_replace" Replace all values Replace all values
+ "prepend" Insert before matching Insert at head of lis
+t
+ "prepend_first" Insert at head of list Insert at head of lis
+t
+ "append" Append after matching 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. An important limitation
+ exists in the parsing of floating point numbers -- fontconfig
+ requires that the mantissa start with a digit, not a decimal
+ point, so insert a leading zero for purely fractional values
+ (e.g. use 0.5 instead of .5 and -0.5 instead of -.5).
+
+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 Value
+ -------------------------------------
+ thin weight 0
+ extralight weight 40
+ ultralight weight 40
+ light weight 50
+ book weight 75
+ regular weight 80
+ normal weight 80
+ medium weight 100
+ demibold weight 180
+ semibold weight 180
+ bold weight 200
+ extrabold weight 205
+ black weight 210
+ heavy weight 210
+ roman slant 0
+ italic slant 100
+ oblique slant 110
+ ultracondensed width 50
+ extracondensed width 63
+ condensed width 75
+ semicondensed width 87
+ normal width 100
+ semiexpanded width 113
+ expanded width 125
+ extraexpanded width 150
+ ultraexpanded width 200
+ proportional spacing 0
+ dual spacing 90
+ mono spacing 100
+ charcell spacing 110
+ unknown rgba 0
+ rgb rgba 1
+ bgr rgba 2
+ vrgb rgba 3
+ vbgr rgba 4
+ none rgba 5
+ hintnone hintstyle 0
+ hintslight hintstyle 1
+ hintmedium hintstyle 2
+ hintfull hintstyle 3
+
+
+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 prefered
+ families before the matching family, append the acceptable
+ familys 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 hold a list of family elements to be used by the alias
+ element. /article
+
+EXAMPLE CONFIGURATION FILE
+
+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/share/fonts</dir>
+<dir>/usr/X11R6/lib/X11/fonts</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></e
+dit>
+</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></e
+dit>
+</match>
+
+<!--
+ Load per-user customization file, but don't complain
+ if it doesn't exist
+-->
+<include ignore_missing="yes">~/.fonts.conf</include>
+
+<!--
+ Load local customization files, but don't complain
+ if there aren't any
+-->
+<include ignore_missing="yes">conf.d</include>
+<include ignore_missing="yes">local.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>Arial</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>Arial</family></prefer>
+</alias>
+<alias>
+ <family>monospace</family>
+ <prefer><family>Andale Mono</family></prefer>
+</alias>
+</fontconfig>
+
+
+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>~/.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>
+
+
+Files
+
+ fonts.conf 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.
+
+ conf.d is the conventional name for a directory of additional
+ configuration files managed by external applications or the
+ local administrator. The filenames starting with decimal
+ digits are sorted in lexicographic order and used as
+ additional configuration files. All of these files are in xml
+ format. The master fonts.conf file references this directory
+ in an <include> directive.
+
+ fonts.dtd is a DTD that describes the format of the
+ configuration files.
+
+ ~/.fonts.conf is the conventional location for per-user font
+ configuration, although the actual location is specified in
+ the global fonts.conf file.
+
+ ~/.fonts.cache-* is the conventional repository of font
+ information that isn't found in the per-directory caches. This
+ file is automatically maintained by fontconfig.
+
+See Also
+
+ fc-cache(1), fc-match(1), fc-list(1)
+
+Version
+
+ Fontconfig version 2.3.2