diff options
Diffstat (limited to 'nx-X11/extras/fontconfig/doc/fonts-conf.5')
-rw-r--r-- | nx-X11/extras/fontconfig/doc/fonts-conf.5 | 590 |
1 files changed, 590 insertions, 0 deletions
diff --git a/nx-X11/extras/fontconfig/doc/fonts-conf.5 b/nx-X11/extras/fontconfig/doc/fonts-conf.5 new file mode 100644 index 000000000..96fb57e3f --- /dev/null +++ b/nx-X11/extras/fontconfig/doc/fonts-conf.5 @@ -0,0 +1,590 @@ +.\" This manpage has been automatically generated by docbook2man +.\" from a DocBook document. This tool can be found at: +.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/> +.\" Please send any bug reports, improvements, comments, patches, +.\" etc. to Steve Cheng <steve@ggi-project.org>. +.TH "FONTS-CONF" "5" "27 April 2005" "" "" + +.SH NAME +fonts.conf \- Font configuration files +.SH SYNOPSIS + +.nf + /etc/fonts/fonts.conf + /etc/fonts/fonts.dtd + /etc/fonts/conf.d + ~/.fonts.conf +.fi +.SH "DESCRIPTION" +.PP +Fontconfig is a library designed to provide system-wide font configuration, +customization and application access. +.SH "FUNCTIONAL OVERVIEW" +.PP +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. +.SS "FONT CONFIGURATION" +.PP +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. +.PP +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. +.PP +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. +.SS "FONT PROPERTIES" +.PP +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. + +.nf + 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 charcell + 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 + +.fi +.SS "FONT MATCHING" +.PP +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. +.PP +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. +.PP +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. +.PP +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. +.PP +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. +.PP +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. +.PP +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. +.PP +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. +.PP +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. +.SS "FONT NAMES" +.PP +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: + +.nf + <families>-<point sizes>:<name1>=<values1>:<name2>=<values2>\&... + +.fi +.PP +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: + +.nf + 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 + +.fi +.SH "LANG TAGS" +.PP +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. +.PP +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. +.PP +For languages used in multiple territories with radically different +character sets, fontconfig includes per-territory orthographies. This +includes Azerbaijani, Kurdish, Pashto, Tigrinya and Chinese. +.SH "CONFIGURATION FILE FORMAT" +.PP +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. +.PP +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: + +.nf + <?xml version="1.0"?> + <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> + <fontconfig> + ... + </fontconfig> + +.fi +.SS "<FONTCONFIG>" +.PP +This is the top level element for a font configuration and can contain +dir, cache, include, match and alias elements in any order. +.SS "DIR" +.PP +This element contains a directory name which will be scanned for font files +to include in the set of available fonts. +.SS "CACHE" +.PP +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). +.SS "INCLUDE IGNORE_MISSING=\&"NO\&"" +.PP +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. +.SS "CONFIG" +.PP +This element provides a place to consolodate additional configuration +information. config can contain blank and rescan elements in any +order. +.SS "BLANK" +.PP +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. +.SS "RESCAN" +.PP +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. +.SS "SELECTFONT" +.PP +This element is used to black/white list fonts from being listed or matched +against. It holds acceptfont and rejectfont elements. +.SS "ACCEPTFONT" +.PP +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. +.SS "REJECTFONT" +.PP +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. +.SS "GLOB" +.PP +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. +.SS "PATTERN" +.PP +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. +.SS "PATELT NAME=\&"PROPERTY\&"" +.PP +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. +.SS "MATCH TARGET=\&"PATTERN\&"" +.PP +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. +.SS "TEST QUAL=\&"ANY\&" NAME=\&"PROPERTY\&" TARGET=\&"DEFAULT\&" COMPARE=\&"EQ\&"" +.PP +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. +.SS "EDIT NAME=\&"PROPERTY\&" MODE=\&"ASSIGN\&" BINDING=\&"WEAK\&"" +.PP +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: + +.nf + 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 list + "prepend_first" Insert at head of list Insert at head of list + "append" Append after matching Append at end of list + "append_last" Append at end of list Append at end of list + +.fi +.SS "INT, DOUBLE, STRING, BOOL" +.PP +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). +.SS "MATRIX" +.PP +This element holds the four double elements of an affine +transformation. +.SS "NAME" +.PP +Holds a property name. Evaluates to the first value from the property of +the font, not the pattern. +.SS "CONST" +.PP +Holds the name of a constant; these are always integers and serve as +symbolic names for common font values: + +.nf + 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 + +.fi +.SS "OR, AND, PLUS, MINUS, TIMES, DIVIDE" +.PP +These elements perform the specified operation on a list of expression +elements. or and and are boolean, not bitwise. +.SS "EQ, NOT_EQ, LESS, LESS_EQ, MORE, MORE_EQ" +.PP +These elements compare two values, producing a boolean result. +.SS "NOT" +.PP +Inverts the boolean sense of its one expression element +.SS "IF" +.PP +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. +.SS "ALIAS" +.PP +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. +.SS "FAMILY" +.PP +Holds a single font family name +.SS "PREFER, ACCEPT, DEFAULT" +.PP +These hold a list of family elements to be used by the alias element. +/article +.SH "EXAMPLE CONFIGURATION FILE" +.SS "SYSTEM CONFIGURATION FILE" +.PP +This is an example of a system-wide configuration file + +.nf +<?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></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> + +<!-- + 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> + +.fi +.SS "USER CONFIGURATION FILE" +.PP +This is an example of a per-user configuration file that lives in +~/.fonts.conf + +.nf +<?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> + +.fi +.SH "FILES" +.PP +\fBfonts.conf\fR +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. +.PP +\fBconf.d\fR +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. +.PP +\fBfonts.dtd\fR +is a DTD that describes the format of the configuration files. +.PP +\fB~/.fonts.conf\fR +is the conventional location for per-user font configuration, although the +actual location is specified in the global fonts.conf file. +.PP +\fB ~/.fonts.cache-*\fR +is the conventional repository of font information that isn't found in the +per-directory caches. This file is automatically maintained by fontconfig. +.SH "SEE ALSO" +.PP +fc-cache(1), fc-match(1), fc-list(1) +.SH "VERSION" +.PP +Fontconfig version 2.3.2 |