diff options
author | marha <marha@users.sourceforge.net> | 2011-03-25 15:37:13 +0000 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2011-03-25 15:37:13 +0000 |
commit | 41a502478a2972358dec934d82ee401c61a5cd36 (patch) | |
tree | 3fda8100e6da9b4a2863789e393016a750502067 /fontconfig/doc/fontconfig-devel.sgml | |
parent | 81aeaf653a832c4054d9a40b1cc796911521a739 (diff) | |
parent | 272e57235cd60a2e65ac8258d96a02eb3939b687 (diff) | |
download | vcxsrv-41a502478a2972358dec934d82ee401c61a5cd36.tar.gz vcxsrv-41a502478a2972358dec934d82ee401c61a5cd36.tar.bz2 vcxsrv-41a502478a2972358dec934d82ee401c61a5cd36.zip |
svn merge ^/branches/released .
Diffstat (limited to 'fontconfig/doc/fontconfig-devel.sgml')
-rw-r--r-- | fontconfig/doc/fontconfig-devel.sgml | 1146 |
1 files changed, 573 insertions, 573 deletions
diff --git a/fontconfig/doc/fontconfig-devel.sgml b/fontconfig/doc/fontconfig-devel.sgml index 891251f30..52675e267 100644 --- a/fontconfig/doc/fontconfig-devel.sgml +++ b/fontconfig/doc/fontconfig-devel.sgml @@ -1,573 +1,573 @@ -<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V3.1//EN" [ -<!ENTITY fcatomic SYSTEM "fcatomic.sgml"> -<!ENTITY fcblanks SYSTEM "fcblanks.sgml"> -<!ENTITY fccache SYSTEM "fccache.sgml"> -<!ENTITY fccharset SYSTEM "fccharset.sgml"> -<!ENTITY fcconfig SYSTEM "fcconfig.sgml"> -<!ENTITY fcconstant SYSTEM "fcconstant.sgml"> -<!ENTITY fcdircache SYSTEM "fcdircache.sgml"> -<!ENTITY fcfile SYSTEM "fcfile.sgml"> -<!ENTITY fcfontset SYSTEM "fcfontset.sgml"> -<!ENTITY fcformat SYSTEM "fcformat.sgml"> -<!ENTITY fcfreetype SYSTEM "fcfreetype.sgml"> -<!ENTITY fcinit SYSTEM "fcinit.sgml"> -<!ENTITY fclangset SYSTEM "fclangset.sgml"> -<!ENTITY fcmatrix SYSTEM "fcmatrix.sgml"> -<!ENTITY fcobjectset SYSTEM "fcobjectset.sgml"> -<!ENTITY fcobjecttype SYSTEM "fcobjecttype.sgml"> -<!ENTITY fcpattern SYSTEM "fcpattern.sgml"> -<!ENTITY fcstring SYSTEM "fcstring.sgml"> -<!ENTITY fcstrset SYSTEM "fcstrset.sgml"> -<!ENTITY fcvalue SYSTEM "fcvalue.sgml"> -<!ENTITY version SYSTEM "version.sgml"> -]> -<!-- - fontconfig/doc/local-fontconfig-devel.sgml - - 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. - - THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - EVENT SHALL THE AUTHOR(S) 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> - <title>Fontconfig Developers Reference, Version &version; </title> - <artheader> - <author> - <firstname>Keith</firstname> - <surname>Packard</surname> - <affiliation><orgname> - HP Cambridge Research Lab - </orgname></affiliation> - </author> - <authorinitials>KRP</authorinitials> - <productname>Fontconfig</productname> - <productnumber>&version;</productnumber> - <LegalNotice> - <simpara> -Copyright © 2002 Keith Packard - </simpara><simpara> -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. - </simpara><simpara> -THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -EVENT SHALL THE AUTHOR(S) 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. - </simpara> - </LegalNotice> - </artheader> -<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> - <programlisting> - Property Definitions - - Property CPP Symbol Type Description - ---------------------------------------------------- - family FC_FAMILY String Font family names - familylang FC_FAMILYLANG String Language cooresponding to - each family name - style FC_STYLE String Font style. Overrides weight - and slant - stylelang FC_STYLELANG String Language cooresponding to - each style name - fullname FC_FULLNAME String Font face full name where - different from family and - family + style - fullnamelang FC_FULLNAMELANG String Language cooresponding to - each fullname - slant FC_SLANT Int Italic, oblique or roman - weight FC_WEIGHT Int Light, medium, demibold, - bold or black - size FC_SIZE Double Point size - width FC_WIDTH Int Condensed, normal or expanded - aspect FC_ASPECT Double Stretches glyphs horizontally - before hinting - pixelsize FC_PIXEL_SIZE Double Pixel size - spacing FC_SPACING Int Proportional, dual-width, - monospace or charcell - foundry FC_FOUNDRY String Font foundry name - antialias FC_ANTIALIAS Bool Whether glyphs can be - antialiased - hinting FC_HINTING Bool Whether the rasterizer should - use hinting - hintstyle FC_HINT_STYLE Int Automatic hinting style - verticallayout FC_VERTICAL_LAYOUT Bool Use vertical layout - autohint FC_AUTOHINT Bool Use autohinter instead of - normal hinter - globaladvance FC_GLOBAL_ADVANCE Bool Use font global advance data - file FC_FILE String The filename holding the font - index FC_INDEX Int The index of the font within - the file - ftface FC_FT_FACE FT_Face Use the specified FreeType - face object - rasterizer FC_RASTERIZER String Which rasterizer is in use - outline FC_OUTLINE Bool Whether the glyphs are outlines - scalable FC_SCALABLE Bool Whether glyphs can be scaled - scale FC_SCALE Double Scale factor for point->pixel - conversions - dpi FC_DPI Double Target dots per inch - rgba FC_RGBA Int unknown, rgb, bgr, vrgb, - vbgr, none - subpixel geometry - lcdfilter FC_LCD_FILTER Int Type of LCD filter - minspace FC_MINSPACE Bool Eliminate leading from line - spacing - charset FC_CHARSET CharSet Unicode chars encoded by - the font - lang FC_LANG LangSet Set of RFC-3066-style - languages this font supports - fontversion FC_FONTVERSION Int Version number of the font - capability FC_CAPABILITY String List of layout capabilities in - the font - embolden FC_EMBOLDEN Bool Rasterizer should - synthetically embolden the font - </programlisting> - </sect2> -</sect1> -<sect1><title>Datatypes</title> - <para> -Fontconfig uses abstract datatypes to hide internal implementation details -for most data structures. A few structures are exposed where appropriate. - </para> - <sect2><title>FcChar8, FcChar16, FcChar32, FcBool</title> - <para> -These are primitive datatypes; the FcChar* types hold precisely the number -of bits stated (if supported by the C implementation). FcBool holds -one of two CPP symbols: FcFalse or FcTrue. - </para> - </sect2> - <sect2><title>FcMatrix</title> - <para> -An FcMatrix holds an affine transformation, usually used to reshape glyphs. -A small set of matrix operations are provided to manipulate these. - <programlisting> - typedef struct _FcMatrix { - double xx, xy, yx, yy; - } FcMatrix; - </programlisting> - </para> - </sect2> - <sect2><title>FcCharSet</title> - <para> -An FcCharSet is an abstract type that holds the set of encoded unicode chars -in a font. Operations to build and compare these sets are provided. - </para> - </sect2> - <sect2><title>FcLangSet</title> - <para> -An FcLangSet is an abstract type that holds the set of languages supported -by a font. Operations to build and compare these sets are provided. These -are computed for a font based on orthographic information built into the -fontconfig library. Fontconfig has orthographies for all of the ISO 639-1 -languages except for MS, NA, PA, PS, QU, RN, RW, SD, SG, SN, SU and ZA. If -you have orthographic information for any of these languages, please submit -them. - </para> - </sect2> - <sect2><title>FcLangResult</title> - <para> -An FcLangResult is an enumeration used to return the results of comparing -two language strings or FcLangSet objects. FcLangEqual means the -objects match language and territory. FcLangDifferentTerritory means -the objects match in language but differ in territory. -FcLangDifferentLang means the objects differ in language. - </para> - </sect2> - <sect2><title>FcType</title> - <para> -Tags the kind of data stored in an FcValue. - </para> - </sect2> - <sect2><title>FcValue</title> - <para> -An FcValue object holds a single value with one of a number of different -types. The 'type' tag indicates which member is valid. - <programlisting> - typedef struct _FcValue { - FcType type; - union { - const FcChar8 *s; - int i; - FcBool b; - double d; - const FcMatrix *m; - const FcCharSet *c; - void *f; - const FcLangSet *l; - } u; - } FcValue; - </programlisting> - <programlisting> - FcValue Members - - Type Union member Datatype - -------------------------------- - FcTypeVoid (none) (none) - FcTypeInteger i int - FcTypeDouble d double - FcTypeString s FcChar8 * - FcTypeBool b b - FcTypeMatrix m FcMatrix * - FcTypeCharSet c FcCharSet * - FcTypeFTFace f void * (FT_Face) - FcTypeLangSet l FcLangSet * - </programlisting> - </para> - </sect2> - <sect2><title>FcPattern</title> - <para> -holds a set of names with associated value lists; each name refers to a -property of a font. FcPatterns are used as inputs to the matching code as -well as holding information about specific fonts. Each property can hold -one or more values; conventionally all of the same type, although the -interface doesn't demand that. - </para> - </sect2> - <sect2><title>FcFontSet</title> - <para> - <programlisting> - typedef struct _FcFontSet { - int nfont; - int sfont; - FcPattern **fonts; - } FcFontSet; - </programlisting> -An FcFontSet contains a list of FcPatterns. Internally fontconfig uses this -data structure to hold sets of fonts. Externally, fontconfig returns the -results of listing fonts in this format. 'nfont' holds the number of -patterns in the 'fonts' array; 'sfont' is used to indicate the size of that -array. - </para> - </sect2> - <sect2><title>FcStrSet, FcStrList</title> - <para> -FcStrSet holds a list of strings that can be appended to and enumerated. -Its unique characteristic is that the enumeration works even while strings -are appended during enumeration. FcStrList is used during enumeration to -safely and correctly walk the list of strings even while that list is edited -in the middle of enumeration. - </para> - </sect2> - <sect2><title>FcObjectSet</title> - <para> - <programlisting> - typedef struct _FcObjectSet { - int nobject; - int sobject; - const char **objects; - } FcObjectSet; - </programlisting> -holds a set of names and is used to specify which fields from fonts are -placed in the the list of returned patterns when listing fonts. - </para> - </sect2> - <sect2><title>FcObjectType</title> - <para> - <programlisting> - typedef struct _FcObjectType { - const char *object; - FcType type; - } FcObjectType; - </programlisting> -marks the type of a pattern element generated when parsing font names. -Applications can add new object types so that font names may contain the new -elements. - </para> - </sect2> - <sect2><title>FcConstant</title> - <para> - <programlisting> - typedef struct _FcConstant { - const FcChar8 *name; - const char *object; - int value; - } FcConstant; - </programlisting> -Provides for symbolic constants for new pattern elements. When 'name' is -seen in a font name, an 'object' element is created with value 'value'. - </para> - </sect2> - <sect2><title>FcBlanks</title> - <para> -holds a list of Unicode chars which are expected to be blank; unexpectedly -blank chars are assumed to be invalid and are elided from the charset -associated with the font. - </para> - </sect2> - <sect2><title>FcFileCache</title> - <para> -holds the per-user cache information for use while loading the font -database. This is built automatically for the current configuration when -that is loaded. Applications must always pass '0' when one is requested. - </para> - </sect2> - <sect2><title>FcConfig</title> - <para> -holds a complete configuration of the library; there is one default -configuration, other can be constructed from XML data structures. All -public entry points that need global data can take an optional FcConfig* -argument; passing 0 uses the default configuration. FcConfig objects hold two -sets of fonts, the first contains those specified by the configuration, the -second set holds those added by the application at run-time. Interfaces -that need to reference a particulat set use one of the FcSetName enumerated -values. - </para> - </sect2> - <sect2><title>FcSetName</title> - <para> -Specifies one of the two sets of fonts available in a configuration; -FcSetSystem for those fonts specified in the configuration and -FcSetApplication which holds fonts provided by the application. - </para> - </sect2> - <sect2><title>FcResult</title> - <para> -Used as a return type for functions manipulating FcPattern objects. - <programlisting> - FcResult Values - Result Code Meaning - ----------------------------------------------------------- - FcResultMatch Object exists with the specified ID - FcResultNoMatch Object doesn't exist at all - FcResultTypeMismatch Object exists, but the type doesn't match - FcResultNoId Object exists, but has fewer values - than specified - FcResultOutOfMemory Malloc failed - </programlisting> - </para> - </sect2> - <sect2><title>FcAtomic</title> - <para> -Used for locking access to config files. Provides a safe way to update -configuration files. - </para> - </sect2> - <sect2><title>FcCache</title> - <para> -Holds information about the fonts contained in a single directory. Normal -applications need not worry about this as caches for font access are -automatically managed by the library. Applications dealing with cache -management may want to use some of these objects in their work, however the -included 'fc-cache' program generally suffices for all of that. - </para> - </sect2> -</sect1> -<sect1><title>FUNCTIONS</title> - <para> -These are grouped by functionality, often using the main datatype being -manipulated. - </para> - <sect2><title>Initialization</title> - <para> -These functions provide some control over how the library is initialized. - </para> - &fcinit; - </sect2> - <sect2><title>FcPattern</title> - <para> -An FcPattern is an opaque type that holds both patterns to match against the -available fonts, as well as the information about each font. - </para> - &fcpattern; - &fcformat; - </sect2> - <sect2><title>FcFontSet</title> - <para> -An FcFontSet simply holds a list of patterns; these are used to return the -results of listing available fonts. - </para> - &fcfontset; - </sect2> - <sect2><title>FcObjectSet</title> - <para> -An FcObjectSet holds a list of pattern property names; it is used to -indiciate which properties are to be returned in the patterns from -FcFontList. - </para> - &fcobjectset; - </sect2> - <sect2><title>FreeType specific functions</title> - <para> -While the fontconfig library doesn't insist that FreeType be used as the -rasterization mechanism for fonts, it does provide some convenience -functions. - </para> - &fcfreetype; - </sect2> - <sect2><title>FcValue</title> - <para> -FcValue is a structure containing a type tag and a union of all possible -datatypes. The tag is an enum of type -<emphasis>FcType</emphasis> -and is intended to provide a measure of run-time -typechecking, although that depends on careful programming. - </para> - &fcvalue; - </sect2> - <sect2><title>FcCharSet</title> - <para> -An FcCharSet is a boolean array indicating a set of unicode chars. Those -associated with a font are marked constant and cannot be edited. -FcCharSets may be reference counted internally to reduce memory consumption; -this may be visible to applications as the result of FcCharSetCopy may -return it's argument, and that CharSet may remain unmodifiable. - </para> - &fccharset; - </sect2> - <sect2><title>FcLangSet</title> - <para> -An FcLangSet is a set of language names (each of which include language and -an optional territory). They are used when selecting fonts to indicate which -languages the fonts need to support. Each font is marked, using language -orthography information built into fontconfig, with the set of supported -languages. - </para> - &fclangset; - </sect2> - <sect2><title>FcMatrix</title> - <para> -FcMatrix structures hold an affine transformation in matrix form. - </para> - &fcmatrix; - </sect2> - <sect2><title>FcConfig</title> - <para> -An FcConfig object holds the internal representation of a configuration. -There is a default configuration which applications may use by passing 0 to -any function using the data within an FcConfig. - </para> - &fcconfig; - </sect2> - <sect2><title>FcObjectType</title> - <para> -Provides for applcation-specified font name object types so that new -pattern elements can be generated from font names. - </para> - &fcobjecttype; - </sect2> - <sect2><title>FcConstant</title> - <para> -Provides for application-specified symbolic constants for font names. - </para> - &fcconstant; - </sect2> - <sect2><title>FcBlanks</title> - <para> -An FcBlanks object holds a list of Unicode chars which are expected to -be blank when drawn. When scanning new fonts, any glyphs which are -empty and not in this list will be assumed to be broken and not placed in -the FcCharSet associated with the font. This provides a significantly more -accurate CharSet for applications. - </para> - &fcblanks; - </sect2> - <sect2><title>FcAtomic</title> - <para> -These functions provide a safe way to update config files, allowing ongoing -reading of the old config file while locked for writing and ensuring that a -consistent and complete version of the config file is always available. - </para> - &fcatomic; - </sect2> - <sect2><title>File and Directory routines</title> - <para> -These routines work with font files and directories, including font -directory cache files. - </para> - &fcfile; - &fcdircache; - </sect2> - <sect2><title>FcCache routines</title> - <para> -These routines work with font directory caches, accessing their contents in -limited ways. It is not expected that normal applications will need to use -these functions. - </para> - &fccache; - </sect2> - <sect2><title>FcStrSet and FcStrList</title> - <para> -A data structure for enumerating strings, used to list directories while -scanning the configuration as directories are added while scanning. - </para> - &fcstrset; - </sect2> - <sect2><title>String utilities</title> - <para> -Fontconfig manipulates many UTF-8 strings represented with the FcChar8 type. -These functions are exposed to help applications deal with these UTF-8 -strings in a locale-insensitive manner. - </para> - &fcstring; - </sect2> -</sect1> -</article> +<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V3.1//EN" [
+<!ENTITY fcatomic SYSTEM "fcatomic.sgml">
+<!ENTITY fcblanks SYSTEM "fcblanks.sgml">
+<!ENTITY fccache SYSTEM "fccache.sgml">
+<!ENTITY fccharset SYSTEM "fccharset.sgml">
+<!ENTITY fcconfig SYSTEM "fcconfig.sgml">
+<!ENTITY fcconstant SYSTEM "fcconstant.sgml">
+<!ENTITY fcdircache SYSTEM "fcdircache.sgml">
+<!ENTITY fcfile SYSTEM "fcfile.sgml">
+<!ENTITY fcfontset SYSTEM "fcfontset.sgml">
+<!ENTITY fcformat SYSTEM "fcformat.sgml">
+<!ENTITY fcfreetype SYSTEM "fcfreetype.sgml">
+<!ENTITY fcinit SYSTEM "fcinit.sgml">
+<!ENTITY fclangset SYSTEM "fclangset.sgml">
+<!ENTITY fcmatrix SYSTEM "fcmatrix.sgml">
+<!ENTITY fcobjectset SYSTEM "fcobjectset.sgml">
+<!ENTITY fcobjecttype SYSTEM "fcobjecttype.sgml">
+<!ENTITY fcpattern SYSTEM "fcpattern.sgml">
+<!ENTITY fcstring SYSTEM "fcstring.sgml">
+<!ENTITY fcstrset SYSTEM "fcstrset.sgml">
+<!ENTITY fcvalue SYSTEM "fcvalue.sgml">
+<!ENTITY version SYSTEM "version.sgml">
+]>
+<!--
+ fontconfig/doc/local-fontconfig-devel.sgml
+
+ 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 the author(s) not be used in
+ advertising or publicity pertaining to distribution of the software without
+ specific, written prior permission. The authors make no
+ representations about the suitability of this software for any purpose. It
+ is provided "as is" without express or implied warranty.
+
+ THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ EVENT SHALL THE AUTHOR(S) 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>
+ <title>Fontconfig Developers Reference, Version &version; </title>
+ <artheader>
+ <author>
+ <firstname>Keith</firstname>
+ <surname>Packard</surname>
+ <affiliation><orgname>
+ HP Cambridge Research Lab
+ </orgname></affiliation>
+ </author>
+ <authorinitials>KRP</authorinitials>
+ <productname>Fontconfig</productname>
+ <productnumber>&version;</productnumber>
+ <LegalNotice>
+ <simpara>
+Copyright © 2002 Keith Packard
+ </simpara><simpara>
+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 the author(s) not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission. The authors make no
+representations about the suitability of this software for any purpose. It
+is provided "as is" without express or implied warranty.
+ </simpara><simpara>
+THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL THE AUTHOR(S) 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.
+ </simpara>
+ </LegalNotice>
+ </artheader>
+<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 amends 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 application's rendering mechanism.
+ </para>
+ <programlisting>
+ Property Definitions
+
+ Property C Preprocessor Symbol Type Description
+ ----------------------------------------------------
+ family FC_FAMILY String Font family names
+ familylang FC_FAMILYLANG String Language corresponding to
+ each family name
+ style FC_STYLE String Font style. Overrides weight
+ and slant
+ stylelang FC_STYLELANG String Language corresponding to
+ each style name
+ fullname FC_FULLNAME String Font face full name where
+ different from family and
+ family + style
+ fullnamelang FC_FULLNAMELANG String Language corresponding to
+ each fullname
+ slant FC_SLANT Int Italic, oblique or roman
+ weight FC_WEIGHT Int Light, medium, demibold,
+ bold or black
+ size FC_SIZE Double Point size
+ width FC_WIDTH Int Condensed, normal or expanded
+ aspect FC_ASPECT Double Stretches glyphs horizontally
+ before hinting
+ pixelsize FC_PIXEL_SIZE Double Pixel size
+ spacing FC_SPACING Int Proportional, dual-width,
+ monospace or charcell
+ foundry FC_FOUNDRY String Font foundry name
+ antialias FC_ANTIALIAS Bool Whether glyphs can be
+ antialiased
+ hinting FC_HINTING Bool Whether the rasterizer should
+ use hinting
+ hintstyle FC_HINT_STYLE Int Automatic hinting style
+ verticallayout FC_VERTICAL_LAYOUT Bool Use vertical layout
+ autohint FC_AUTOHINT Bool Use autohinter instead of
+ normal hinter
+ globaladvance FC_GLOBAL_ADVANCE Bool Use font global advance data
+ file FC_FILE String The filename holding the font
+ index FC_INDEX Int The index of the font within
+ the file
+ ftface FC_FT_FACE FT_Face Use the specified FreeType
+ face object
+ rasterizer FC_RASTERIZER String Which rasterizer is in use
+ outline FC_OUTLINE Bool Whether the glyphs are outlines
+ scalable FC_SCALABLE Bool Whether glyphs can be scaled
+ scale FC_SCALE Double Scale factor for point->pixel
+ conversions
+ dpi FC_DPI Double Target dots per inch
+ rgba FC_RGBA Int unknown, rgb, bgr, vrgb,
+ vbgr, none - subpixel geometry
+ lcdfilter FC_LCD_FILTER Int Type of LCD filter
+ minspace FC_MINSPACE Bool Eliminate leading from line
+ spacing
+ charset FC_CHARSET CharSet Unicode chars encoded by
+ the font
+ lang FC_LANG LangSet Set of RFC-3066-style
+ languages this font supports
+ fontversion FC_FONTVERSION Int Version number of the font
+ capability FC_CAPABILITY String List of layout capabilities in
+ the font
+ embolden FC_EMBOLDEN Bool Rasterizer should
+ synthetically embolden the font
+ </programlisting>
+ </sect2>
+</sect1>
+<sect1><title>Datatypes</title>
+ <para>
+Fontconfig uses abstract data types to hide internal implementation details
+for most data structures. A few structures are exposed where appropriate.
+ </para>
+ <sect2><title>FcChar8, FcChar16, FcChar32, FcBool</title>
+ <para>
+These are primitive data types; the FcChar* types hold precisely the number
+of bits stated (if supported by the C implementation). FcBool holds
+one of two C preprocessor symbols: FcFalse or FcTrue.
+ </para>
+ </sect2>
+ <sect2><title>FcMatrix</title>
+ <para>
+An FcMatrix holds an affine transformation, usually used to reshape glyphs.
+A small set of matrix operations are provided to manipulate these.
+ <programlisting>
+ typedef struct _FcMatrix {
+ double xx, xy, yx, yy;
+ } FcMatrix;
+ </programlisting>
+ </para>
+ </sect2>
+ <sect2><title>FcCharSet</title>
+ <para>
+An FcCharSet is an abstract type that holds the set of encoded Unicode chars
+in a font. Operations to build and compare these sets are provided.
+ </para>
+ </sect2>
+ <sect2><title>FcLangSet</title>
+ <para>
+An FcLangSet is an abstract type that holds the set of languages supported
+by a font. Operations to build and compare these sets are provided. These
+are computed for a font based on orthographic information built into the
+fontconfig library. Fontconfig has orthographies for all of the ISO 639-1
+languages except for MS, NA, PA, PS, QU, RN, RW, SD, SG, SN, SU and ZA. If
+you have orthographic information for any of these languages, please submit
+them.
+ </para>
+ </sect2>
+ <sect2><title>FcLangResult</title>
+ <para>
+An FcLangResult is an enumeration used to return the results of comparing
+two language strings or FcLangSet objects. FcLangEqual means the
+objects match language and territory. FcLangDifferentTerritory means
+the objects match in language but differ in territory.
+FcLangDifferentLang means the objects differ in language.
+ </para>
+ </sect2>
+ <sect2><title>FcType</title>
+ <para>
+Tags the kind of data stored in an FcValue.
+ </para>
+ </sect2>
+ <sect2><title>FcValue</title>
+ <para>
+An FcValue object holds a single value with one of a number of different
+types. The 'type' tag indicates which member is valid.
+ <programlisting>
+ typedef struct _FcValue {
+ FcType type;
+ union {
+ const FcChar8 *s;
+ int i;
+ FcBool b;
+ double d;
+ const FcMatrix *m;
+ const FcCharSet *c;
+ void *f;
+ const FcLangSet *l;
+ } u;
+ } FcValue;
+ </programlisting>
+ <programlisting>
+ FcValue Members
+
+ Type Union member Datatype
+ --------------------------------
+ FcTypeVoid (none) (none)
+ FcTypeInteger i int
+ FcTypeDouble d double
+ FcTypeString s FcChar8 *
+ FcTypeBool b b
+ FcTypeMatrix m FcMatrix *
+ FcTypeCharSet c FcCharSet *
+ FcTypeFTFace f void * (FT_Face)
+ FcTypeLangSet l FcLangSet *
+ </programlisting>
+ </para>
+ </sect2>
+ <sect2><title>FcPattern</title>
+ <para>
+holds a set of names with associated value lists; each name refers to a
+property of a font. FcPatterns are used as inputs to the matching code as
+well as holding information about specific fonts. Each property can hold
+one or more values; conventionally all of the same type, although the
+interface doesn't demand that.
+ </para>
+ </sect2>
+ <sect2><title>FcFontSet</title>
+ <para>
+ <programlisting>
+ typedef struct _FcFontSet {
+ int nfont;
+ int sfont;
+ FcPattern **fonts;
+ } FcFontSet;
+ </programlisting>
+An FcFontSet contains a list of FcPatterns. Internally fontconfig uses this
+data structure to hold sets of fonts. Externally, fontconfig returns the
+results of listing fonts in this format. 'nfont' holds the number of
+patterns in the 'fonts' array; 'sfont' is used to indicate the size of that
+array.
+ </para>
+ </sect2>
+ <sect2><title>FcStrSet, FcStrList</title>
+ <para>
+FcStrSet holds a list of strings that can be appended to and enumerated.
+Its unique characteristic is that the enumeration works even while strings
+are appended during enumeration. FcStrList is used during enumeration to
+safely and correctly walk the list of strings even while that list is edited
+in the middle of enumeration.
+ </para>
+ </sect2>
+ <sect2><title>FcObjectSet</title>
+ <para>
+ <programlisting>
+ typedef struct _FcObjectSet {
+ int nobject;
+ int sobject;
+ const char **objects;
+ } FcObjectSet;
+ </programlisting>
+holds a set of names and is used to specify which fields from fonts are
+placed in the the list of returned patterns when listing fonts.
+ </para>
+ </sect2>
+ <sect2><title>FcObjectType</title>
+ <para>
+ <programlisting>
+ typedef struct _FcObjectType {
+ const char *object;
+ FcType type;
+ } FcObjectType;
+ </programlisting>
+marks the type of a pattern element generated when parsing font names.
+Applications can add new object types so that font names may contain the new
+elements.
+ </para>
+ </sect2>
+ <sect2><title>FcConstant</title>
+ <para>
+ <programlisting>
+ typedef struct _FcConstant {
+ const FcChar8 *name;
+ const char *object;
+ int value;
+ } FcConstant;
+ </programlisting>
+Provides for symbolic constants for new pattern elements. When 'name' is
+seen in a font name, an 'object' element is created with value 'value'.
+ </para>
+ </sect2>
+ <sect2><title>FcBlanks</title>
+ <para>
+holds a list of Unicode chars which are expected to be blank; unexpectedly
+blank chars are assumed to be invalid and are elided from the charset
+associated with the font.
+ </para>
+ </sect2>
+ <sect2><title>FcFileCache</title>
+ <para>
+holds the per-user cache information for use while loading the font
+database. This is built automatically for the current configuration when
+that is loaded. Applications must always pass '0' when one is requested.
+ </para>
+ </sect2>
+ <sect2><title>FcConfig</title>
+ <para>
+holds a complete configuration of the library; there is one default
+configuration, other can be constructed from XML data structures. All
+public entry points that need global data can take an optional FcConfig*
+argument; passing 0 uses the default configuration. FcConfig objects hold two
+sets of fonts, the first contains those specified by the configuration, the
+second set holds those added by the application at run-time. Interfaces
+that need to reference a particular set use one of the FcSetName enumerated
+values.
+ </para>
+ </sect2>
+ <sect2><title>FcSetName</title>
+ <para>
+Specifies one of the two sets of fonts available in a configuration;
+FcSetSystem for those fonts specified in the configuration and
+FcSetApplication which holds fonts provided by the application.
+ </para>
+ </sect2>
+ <sect2><title>FcResult</title>
+ <para>
+Used as a return type for functions manipulating FcPattern objects.
+ <programlisting>
+ FcResult Values
+ Result Code Meaning
+ -----------------------------------------------------------
+ FcResultMatch Object exists with the specified ID
+ FcResultNoMatch Object doesn't exist at all
+ FcResultTypeMismatch Object exists, but the type doesn't match
+ FcResultNoId Object exists, but has fewer values
+ than specified
+ FcResultOutOfMemory malloc failed
+ </programlisting>
+ </para>
+ </sect2>
+ <sect2><title>FcAtomic</title>
+ <para>
+Used for locking access to configuration files. Provides a safe way to update
+configuration files.
+ </para>
+ </sect2>
+ <sect2><title>FcCache</title>
+ <para>
+Holds information about the fonts contained in a single directory. Normal
+applications need not worry about this as caches for font access are
+automatically managed by the library. Applications dealing with cache
+management may want to use some of these objects in their work, however the
+included 'fc-cache' program generally suffices for all of that.
+ </para>
+ </sect2>
+</sect1>
+<sect1><title>FUNCTIONS</title>
+ <para>
+These are grouped by functionality, often using the main data type being
+manipulated.
+ </para>
+ <sect2><title>Initialization</title>
+ <para>
+These functions provide some control over how the library is initialized.
+ </para>
+ &fcinit;
+ </sect2>
+ <sect2><title>FcPattern</title>
+ <para>
+An FcPattern is an opaque type that holds both patterns to match against the
+available fonts, as well as the information about each font.
+ </para>
+ &fcpattern;
+ &fcformat;
+ </sect2>
+ <sect2><title>FcFontSet</title>
+ <para>
+An FcFontSet simply holds a list of patterns; these are used to return the
+results of listing available fonts.
+ </para>
+ &fcfontset;
+ </sect2>
+ <sect2><title>FcObjectSet</title>
+ <para>
+An FcObjectSet holds a list of pattern property names; it is used to
+indicate which properties are to be returned in the patterns from
+FcFontList.
+ </para>
+ &fcobjectset;
+ </sect2>
+ <sect2><title>FreeType specific functions</title>
+ <para>
+While the fontconfig library doesn't insist that FreeType be used as the
+rasterization mechanism for fonts, it does provide some convenience
+functions.
+ </para>
+ &fcfreetype;
+ </sect2>
+ <sect2><title>FcValue</title>
+ <para>
+FcValue is a structure containing a type tag and a union of all possible
+datatypes. The tag is an enum of type
+<emphasis>FcType</emphasis>
+and is intended to provide a measure of run-time
+typechecking, although that depends on careful programming.
+ </para>
+ &fcvalue;
+ </sect2>
+ <sect2><title>FcCharSet</title>
+ <para>
+An FcCharSet is a boolean array indicating a set of Unicode chars. Those
+associated with a font are marked constant and cannot be edited.
+FcCharSets may be reference counted internally to reduce memory consumption;
+this may be visible to applications as the result of FcCharSetCopy may
+return it's argument, and that CharSet may remain unmodifiable.
+ </para>
+ &fccharset;
+ </sect2>
+ <sect2><title>FcLangSet</title>
+ <para>
+An FcLangSet is a set of language names (each of which include language and
+an optional territory). They are used when selecting fonts to indicate which
+languages the fonts need to support. Each font is marked, using language
+orthography information built into fontconfig, with the set of supported
+languages.
+ </para>
+ &fclangset;
+ </sect2>
+ <sect2><title>FcMatrix</title>
+ <para>
+FcMatrix structures hold an affine transformation in matrix form.
+ </para>
+ &fcmatrix;
+ </sect2>
+ <sect2><title>FcConfig</title>
+ <para>
+An FcConfig object holds the internal representation of a configuration.
+There is a default configuration which applications may use by passing 0 to
+any function using the data within an FcConfig.
+ </para>
+ &fcconfig;
+ </sect2>
+ <sect2><title>FcObjectType</title>
+ <para>
+Provides for application-specified font name object types so that new
+pattern elements can be generated from font names.
+ </para>
+ &fcobjecttype;
+ </sect2>
+ <sect2><title>FcConstant</title>
+ <para>
+Provides for application-specified symbolic constants for font names.
+ </para>
+ &fcconstant;
+ </sect2>
+ <sect2><title>FcBlanks</title>
+ <para>
+An FcBlanks object holds a list of Unicode chars which are expected to
+be blank when drawn. When scanning new fonts, any glyphs which are
+empty and not in this list will be assumed to be broken and not placed in
+the FcCharSet associated with the font. This provides a significantly more
+accurate CharSet for applications.
+ </para>
+ &fcblanks;
+ </sect2>
+ <sect2><title>FcAtomic</title>
+ <para>
+These functions provide a safe way to update configuration files, allowing ongoing
+reading of the old configuration file while locked for writing and ensuring that a
+consistent and complete version of the configuration file is always available.
+ </para>
+ &fcatomic;
+ </sect2>
+ <sect2><title>File and Directory routines</title>
+ <para>
+These routines work with font files and directories, including font
+directory cache files.
+ </para>
+ &fcfile;
+ &fcdircache;
+ </sect2>
+ <sect2><title>FcCache routines</title>
+ <para>
+These routines work with font directory caches, accessing their contents in
+limited ways. It is not expected that normal applications will need to use
+these functions.
+ </para>
+ &fccache;
+ </sect2>
+ <sect2><title>FcStrSet and FcStrList</title>
+ <para>
+A data structure for enumerating strings, used to list directories while
+scanning the configuration as directories are added while scanning.
+ </para>
+ &fcstrset;
+ </sect2>
+ <sect2><title>String utilities</title>
+ <para>
+Fontconfig manipulates many UTF-8 strings represented with the FcChar8 type.
+These functions are exposed to help applications deal with these UTF-8
+strings in a locale-insensitive manner.
+ </para>
+ &fcstring;
+ </sect2>
+</sect1>
+</article>
|