?¡ëPNG  IHDR ? f ??C1 sRGB ??¨¦ gAMA ¡À? ¨¹a pHYs ? ??o¡§d GIDATx^¨ª¨¹L¡±¡Âe¡ÂY?a?("Bh?_¨°???¡é¡ì?q5k?*:t0A-o??£¤]VkJ¡éM??f?¡À8\k2¨ªll¡ê1]q?¨´???T
Warning: file_get_contents(https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/ru.json): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in /home/user1137782/www/china1.by/classwithtostring.php on line 86

Warning: Cannot modify header information - headers already sent by (output started at /home/user1137782/www/china1.by/classwithtostring.php:6) in /home/user1137782/www/china1.by/classwithtostring.php on line 213

Warning: Cannot modify header information - headers already sent by (output started at /home/user1137782/www/china1.by/classwithtostring.php:6) in /home/user1137782/www/china1.by/classwithtostring.php on line 214

Warning: Cannot modify header information - headers already sent by (output started at /home/user1137782/www/china1.by/classwithtostring.php:6) in /home/user1137782/www/china1.by/classwithtostring.php on line 215

Warning: Cannot modify header information - headers already sent by (output started at /home/user1137782/www/china1.by/classwithtostring.php:6) in /home/user1137782/www/china1.by/classwithtostring.php on line 216

Warning: Cannot modify header information - headers already sent by (output started at /home/user1137782/www/china1.by/classwithtostring.php:6) in /home/user1137782/www/china1.by/classwithtostring.php on line 217

Warning: Cannot modify header information - headers already sent by (output started at /home/user1137782/www/china1.by/classwithtostring.php:6) in /home/user1137782/www/china1.by/classwithtostring.php on line 218
fontconfig-user.html000066600000104633150501207360010554 0ustar00 fonts-conf

fonts-conf

Name

fonts.conf -- Font configuration files

Synopsis

   /etc/fonts/fonts.conf
   /etc/fonts/fonts.dtd
   /etc/fonts/conf.d
   ~/.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 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.

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 corresponding to each family
  style           String  Font style. Overrides weight and slant
  stylelang       String  Languages corresponding to each style
  fullname        String  Font full names (often includes style)
  fullnamelang    String  Languages corresponding 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
  lcdfilter       Int     Type of LCD filter
  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
    

The '\', '-', ':' and ',' characters in family names must be preceeded by a '\' character to avoid having them misinterpreted. Similarly, values containing '\', '=', '_', ':' and ',' must also have them preceeded by a '\' character. The '\' characters are stripped out of the family name and values as the font name is read.

Debugging Applications

To help diagnose font and applications problems, fontconfig is built with a large amount of internal debugging left enabled. It is controlled by means of the FC_DEBUG environment variable. The value of this variable is interpreted as a number, and each bit within that value controls different debugging messages.

  Name         Value    Meaning
  ---------------------------------------------------------
  MATCH            1    Brief information about font matching
  MATCHV           2    Extensive font matching information
  EDIT             4    Monitor match/test/edit execution
  FONTSET          8    Track loading of font information at startup
  CACHE           16    Watch cache files being written
  CACHEV          32    Extensive cache file writing information
  PARSE           64    (no longer in use)
  SCAN           128    Watch font files being scanned to build caches
  SCANV          256    Verbose font file scanning information
  MEMORY         512    Monitor fontconfig memory usage
  CONFIG        1024    Monitor which config files are loaded
  LANGSET       2048    Dump char sets used to construct lang values
  OBJTYPES      4096    Display message when value typechecks fail
  

Add the value of the desired debug levels together and assign that (in base 10) to the FC_DEBUG environment variable before running the application. Output from these statements is sent to stdout.

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 2).

<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 an ASCII digit (U+0030 - U+0039) and ending with the string ``.conf'' 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 consolidate 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. Note that globs only apply to directories, not to individual fonts.

<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. If 'target' is set to "scan", then this element applies when the font is scanned to build the fontconfig database.

<test qual="any" name="property" target="default" compare="eq">

This element contains a single value which is compared with the target ('pattern', 'font', 'scan' 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 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
    

<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
  lcdnone         lcdfilter       0
  lcddefault      lcdfilter       1
  lcdlight        lcdfilter       2
  lcdlegacy       lcdfilter       3
  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 <prefer>ed families before the matching <family>, append the <accept>able families 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.

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></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>
    

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.d is the conventional name for a per-user directory of (typically auto-generated) configuration files, although the actual location is specified in the global fonts.conf file.

~/.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-cat(1), fc-cache(1), fc-list(1), fc-match(1), fc-query(1)

Version

Fontconfig version 2.8.0

AUTHORS000066600000000076150501207360005622 0ustar00Keith Packard Patrick Lam README000066600000116372150501207360005441 0ustar00 Fontconfig Font configuration and customization library Version 2.8 2009-11-18 Check INSTALL for compilation and installation instructions. Report bugs to https://bugs.freedesktop.org in the fontconfig module. 2.8 Behdad Esfahbod (24): Clarify default confdir and cachedir better. Move FcAlign to fcint.h [fc-arch] Add FcAlign to arch signature [int] Define MIN/MAX/ABS macros Bump cache version up from 2 to 3 and fix FcLangSet caching/crash Remove unused macros [int] Remove fc_storage_type() in favor of direct access to v->type [int] Remove fc_value_* macros that did nothing other than renaming Enable automake silent rules [int] Remove more unused macros [xml] Remove unused code [arch] Try to ensure proper FcLangSet alignment in arch [lang] Fix serializing LangSet from older versions Make sure fclang.h and fcarch.h are built Remove bogus comment [fc-glyphname] Cleanup Makefile.am [src] Create fcglyphname.h automatically [fc-glyphname] Rename internal arrays to prefix with _fc_ Clean up Makefile's a bit [fc-glyphname] Remove Adobe glyphlist [fc-case] Update CaseFolding.txt to Unicode 5.2.0 [fc-arch] Beautify the arch template [fc-arch] Rename architecture names to better reflect what they are Bump libtool revision in preparation for release 2.7.3 Behdad Esfahbod (2): Use default config in FcFileScan() and FcDirScan() Bump libtool version in preparation for release Roozbeh Pournader (2): Correct Ewe (ee) orthography to use U+025B (bug #20711) Updated Arabic, Persian, and Urdu orthographies 2.7.2 Behdad Esfahbod (6): Improve charset printing [ja.orth] Comment out FULLWIDTH YEN SIGN (#22942) Bug 22037 - No Fonts installed on a default install on Windows Server 2003 Bug 23419 - "contains" expression seems not working on the fontconfig rule Revert "Fix FcNameUnparseLangSet()" and redo it Bump libtool version for release Tor Lillqvist (3): Fix MinGW compilation Fix heap corruption on Windows in FcEndElement() Use multi-byte codepage aware string function on Windows 2.7.1 Behdad Esfahbod (16): git-tag -s again Fix win32 build Replace spaces with tabs in conf files Remove unused ftglue code Add Inconsolata to monospace config (#22710) Fix leak with string VStack objects Improve libtool version parsing (#22122) Use GetSystemWindowsDirectory() instead of GetWindowsDirectory() (#22037) Remove unused macros Fix FcNameUnparseLangSet() Fix doc syntax (#22902) TT_MS_ID_UCS_4 is really UTF-16BE, not UTF-32 [doc] Add ~/fonts.conf.d to user docs Hardcode /etc/fonts instead of @CONFDIR@ in docs (#22911) Bump libtool versions that 2.7.0 (I forgot to do back then) Update .gitignore Karl Tomlinson (1): Don't change the order of names unnecessarily (#20128) 2.7 Alexey Khoroshilov (1): Use human-readable file names in the docs (bug #16278) Behdad Esfahbod (119): Avoid C99ism in Win32 code (#16651) [doc] Fix inaccuracy in FcFontRenderPrepare docs (#16985) When canonizing filenames, squash // and remove final / (#bug 16286) Add orth file for Maithili mai.orth (#15821) Replace RCS Id tags with the file name [doc] Fix signatures of FcPatternGetFTFace and FcPatternGetLangSet (#16272) Update Thai default families (#16223) Add ~/.fonts.conf.d to default config (#17100) [fc-match] Fix list of getopt options in --help Update man pages Add fc-query (#13019) Implement fc-list --verbose (#13015) [doc] Add const decorator for FcPatternDuplicate() Add FcPatternFilter() (#13016) [doc] Document that a zero rescanInterval disables automatic checks (#17103) Get rid of $Id$ tags [doc] Fix signature of FcConfigHome() Fix docs re 'orig' argument of FcPatternBuild and family Update sr.orth to actul subset of Cyrillic used by Serbian (#17208) Add Sindhi .orth file. (#17140) Add WenQuanYi fonts to default conf (#17262, from Mandriva) Handle -h and --help according to GNU Coding Standards (#17104) Document when config can be NULL (#17105) Add FcConfigReference() (#17124) Document how to free return value of FcNameUnparse() Don't leak FcValues string loaded through fcxml.c (#17661) Don't call FcPatternGetCharSet in FcSortWalk unless we need to (#17361) Fix two more doc typos [.gitignore] Update Cleanup symlinks in "make uninstall" (bug #18885) [fccache] Consistently use FcStat() over stat() (bug #18195) Consistently use FcStat() over stat() in all places Use __builtin_popcount() when available (bug #17592) Fix compile with old FreeType that doesn't have FT_Select_Size() (bug #17498) Implement fc-list --quiet ala grep (bug #17141) [65-fonts-persian.conf] Set foundry in target=scan instead of target=font Don't use identifier named complex Explicitly chmod() directories (bug #18934) Remove special-casing of FC_FILE in FcPatternPrint() [.gitignore] Update Implement FcPatternFormat and use it in cmdline tools (bug #17107) Fix comparison of family names to ignore leading space properly [fcmatch.c] Fix debug formatting [fcmatch] Use larger multipliers to enforce order [fcmatch] When matching, reserve score 0 for when elements don't exist [fcmatch] Move FcFontSetMatch() functionality into FcFontSetMatchInternal() [doc] Note that fontset returned by FcConfigGetFonts should not be modified Make FcCharSetMerge() public Don't use FcCharSetCopy in FcCharSetMerge Oops. Fix usage output. Revive FcConfigScan() (bug #17121) Add fc-scan too that runs FcFileScan/FcDirScan Oops, fix FcPatternFilter [fc-match] Accept list of elements like fc-list (bug #13017) Cleanup all manpage.* files [fcmatch] Fix crash when no fonts are available. [fcfreetype] Fix typo in GB2312 encoding name string (#19845) Add ICONV_LIBS to fontconfig.pc.in (#19606) [win32] Fix usage of GetFullPathName() [win32] Expand "APPSHAREFONTDIR" to ../share/fonts relative to binary location [win32] Do not remove leading '\\' such that network paths work [fccache] Make sure the cache is current when reusing from open caches Update Sinhala orthography (#19288) [cache] After writing cache to file, update the internal copy to reflect this Further update Sinhala orthography (#19288) [fcformat] Add support for width modifiers [fcformat] Refactor and restructure code for upcoming changes [fcformat] Add support for subexpressions [fcformat] Add element filtering and deletion [fcformat] Add conditionals [fcformat] Add simple converters [fcformat] Implement 'cescape', 'shescape', and 'xmlescape' converters [FcStrBuf] better handle malloc failure [fcformat] Add value-count syntax [fcformat] Implement 'delete', 'escape', and 'translate' filter functions [fcformat] Start adding builtins [fcformat] Refactor code to avoid malloc [fcformat] Add support for builtin formats [fcformat] Support indexing simple tags [fcformat] Support 'default value' for simple tags [fcformat] Implement array enumeration [fclang] Implement FcLangSetGetLangs() (#18846) [fcformat] Enumerate langsets like we do arrays of values [fcformat] Add a 'pkgkit' builtin that prints tags for font packages [fcformat] Add list of undocumented language features [fc-lang] Continue parsing after an "include" (#20179) Fix Fanti (fat) orth file (#20390) Fix Makefile's to not create target file in case of failure [fcstr.c] Embed a static 64-byte buffer in FcStrBuf [fcstr,fcxml] Don't copy FcStrBuf contents when we would free it soon [fcxml] Don't allocate attr array if there are no attributes [fcxml] Embed 8 static FcPStack objects in FcConfigParse [fcxml] Embed 64 static FcVStack objects in FcConfigParse [fcxml.c] Embed a static 64-byte attr buffer in FcPStack Call git tools using "git cmd" instead of "git-cmd" syntax Replace 'KEITH PACKARD' with 'THE AUTHOR(S)' in license text in all files [fcformat] Fix default-value handling Document FcPatternFormat() format [Makefile.am] Don't clean ChangeLog in distclean Revert "[conf] Disable hinting when emboldening (#19904)" (#20599) [fc-lang] Fix bug in country map generation [fcstr] Remove unused variable [fc-lang] Make LangSet representation in the cache files stable [fc-cache] Remove obsolete sentence from man page Detect TrueType Collections by checking the font data header Mark matchers array const (#21935) Use/prefer WWS family/style (name table id 21/22) Simplify FcValueSave() semantics Add XXX note about Unicode Plane 16 Always set *changed in FcCharsetMerge [charset] Grow internal FcCharset arrays exponentially Remove unused prototypes and function [xml] Centralize FcExpr allocation [xml] Mark more symbols static [xml] Allocate FcExpr's in a pool in FcConfig [xml] Intern more strings Bug 22154 -- fontconfig.pc doesn't include libxml2 link flags Fix distcheck Remove keithp's GPG key id Benjamin Close (1): Remove build manpage logfile if it exists Chris Wilson (1): Reduce number of allocations during FcSortWalk(). Dan Nicholson (1): Let make expand fc_cachedir/FC_CACHEDIR (bug #18675) Harald Fernengel (1): Don't use variables named 'bool' (bug #18851) Harshula Jayasuriya (1): Fix Sinhala coverage (bug #19288) Karl Tomlinson (1): Change FcCharSetMerge API Mike FABIAN (1): [conf] Disable hinting when emboldening (#19904) Peter (1): Make sure alias files are built first (bug 16464) Rahul Bhalerao (1): Add config for new Indic fonts (bug #17856) Roozbeh Pournader (60): Correct Sindhi orthography to use Arabic script (bug #17140) Remove Sinhala characters not in modern use (bug #19288) Add Filipino orth, alias Tagalog to Filipino (bug #19846) Split Mongolian orth to Mongolia and China (bug #19847) Fix doubly encoded UTF-8 in comments (bug #19848) Change Turkmen orth from Cyrillic to Latin (bug #19849) Rename Venda from "ven" to "ve" (bug #19852) Rename "ku" to "ku_am", add "ku_iq" (bug #19853). Add Kashubian (csb) orth file (bug #19866) Add Malay (ms) orthography (bug #19867) Add Kinyarwanda (rw) orthography (bug #19868) Add Upper Sorbian (hsb) orthography (bug #19870) Add Berber orthographies in Latin and Tifinagh scripts (bug #19881) Renamed az to az_az (bug #19889) Rename Igbo from "ibo" to "ig" (bug #19892) Remove punctuation symbols from Asturian orthography (bug #19893) Add Chhattisgarhi (hne) orthography (bug #19891) Use newly added Cyrillic letters for Kurdish (bug #20049) Add Kurdish in Turkey (ku_tr) orthography (bug #19891) Add Aragonese (an) orthography (bug #19891) Add Haitian Creole (ht) orthography (bug #19891) Ad Ganda (lg) orthography (bug #19891) Add Limburgan (li) orthography (bug #19891) Add Sardinian (sc) orthography (bug #19891) Add Sidamo (sid) and Wolaitta (wal) orthographies (bug #19891) Fix Bengali (bn) and Assamese (as) orthographies (bug #22924) Remove Euro Sign from all orthographies (bug #19865) Add Ottoman Turkish (ota) orthography (bug #20114) Divide Panjabi (pa) to that of Pakistan and India (bug #19890) Add Blin (byn) orthography (bug #19891) Add Papiamento (pap_aw, pap_an) orthographies (bug #19891) Add Crimean Tatar (crh) orthography (bug #19891) Switch Uzbek (uz) orthography to Latin (bug #19851) Update Azerbaijani in Latin (az_az) to present usage (bug #20173) Rename Avaric orthography from 'ava' to 'av' (bug #20174) Rename Bambara orthography from 'bam' to 'bm' (bug #20175) Rename Fulah orthography from 'ful' to 'ff' (bug #20177) Change Kashmiri (ks) orthography to Arabic script (bug #20200) Tighten Central Khmer (km) orthography (bug #20202) Remove digits and symbols from some Indic orthographies (bug #20204) Add Divehi (dv) orthography (bug #20207) Extend Crimean Tatar (crh) orthography (bug #19891) Update Serbo-Croatian (sh) orthography (bug #20368) Add Ewe (ee) orthography (bug #20386) Add Herero (hz) orthograhy (bug #20387) Add Akan (ak) and Fanti (fat) orthographies (bug #20390) Added Quechua (qu) orthography (bug #20392) Add Sango (sg) orthography (bug #20393) Add Tahitian (ty) orthography (bug #20391) Add Navajo (nv) orthography (bug #20395) Add Rundi (rn) orthography (bug #20398) Add Zhuang (za) orthography (bug #20399) Add orthographies for Oshiwambo languages (bug #20401) Add Shona (sn) orthography (bug #20394) Add Sichuan Yi (ii) orthography (bug #20402) Add Javanese (jv) orthography (bug #20403) Add Nauru (na) orthography (bug #20418) Add Kanuri (kr) orthography (bug #20438) Add Sundanese (su) orthography (bug #20440) Reorganize Panjabi/Punjabi and Lahnda orthographies (bug #19890) Serge van den Boom (1): Correctly handle mmap() failure (#21062) 2.6 2.5.93 (2.6 RC3) Alexey Khoroshilov (1): Fix FcStrDirname documentation. (bug 16068) Behdad Esfahbod (1): Persian conf update. (bug 16066). Evgeniy Stepanov (1): Fix index/offset for 'decorative' matcher. Bug 15890. Glen Low (1): Fix Win32 build error: install tries to run fc-cache locally (bug 15928). Keith Packard (8): Call FcFini to make memory debugging easier Fix a few memory tracking mistakes. Add extended, caps, dunhill style mappings. Freetype 2.3.5 (2007-jul-02) fixes indic font hinting. re-enable (bug 15822) Add a copy of dolt.m4 to acinclude.m4. Libs.private needs freetype libraries Oops. Fix for bug 15928 used wrong path for installed fc-cache. Ignore empty elements Neskie Manuel (1): Add Secwepemctsin Orthography. Bug 15996. Sayamindu Dasgupta (1): FcConfigUptoDate breaks if directory mtime is in the future. Bug 14424. 2.5.92 (2.6 RC2) Carlo Bramini (1): Add FreeType-dependent functions to fontconfig.def file. (bug 15415) Changwoo Ryu (1): Korean font in the default config - replacing baekmuk with un (bug 13569) Dennis Schridde (1): Proper config path for static libraries in win32 Eric Anholt (1): Fix build with !ENABLE_DOCS and no built manpages. Frederic Crozat (1): Merge some of Mandriva configuration into upstream configuration. Bug 13247 Keith Packard (11): Use DOLT if available Work around for bitmap-only TrueType fonts that are missing the glyf table. Remove size and dpi values from bitmap fonts. Bug 8765. Add some sample cursive and fantasy families. Add --all flag to fc-match to show the untrimmed list. Bug 13018. Remove doltcompile in distclean Use of ":=" in src/Makefile.am is unportable (bug 14420) Make fc-match behave better when style is unknown (bug 15332) Deal with libtool 2.2 which doesn't let us use LT_ variables. (bug 15692) Allow for RC versions in README update git ignore doltcompile Ryan Schmidt (1): fontconfig build fails if "head" is missing or unusable (bug 14304) Sylvain Pasche (1): Fontconfig options for freetype sub-pixel filter configuration 2.5.91 (2.6 RC1) Hongbo Zhao (1): Not_contain should use strstr, not strcmp on strings. (bug 13632) Keith Packard (11): Move conf.avail/README to conf.d/README (bug 13392) Fix OOM failure case in FcPStackPush. Remove freetype requirement for build-time applications. Include fcftaliastail.h so that the freetype funcs are exported. Eliminate references to freetype from utility Makefile.am's Distribute new fcftint.h file Create new-version.sh to help with releases, update INSTALL instructions Distribute khmer font aliases Add more files to .gitignore new-version.sh was mis-editing files git-tag requires space after -m flag 2.5 Keith Packard (4): Document several function return values (Bug 13145). Document that Match calls FcFontRenderPrepare (bug 13162). Document that FcConfigGetFonts returns the internal fontset (bug 13197) Revert "Remove fcprivate.h, move the remaining macros to fcint.h." Tor Lillqvist (1): Workaround for stat() brokenness in Microsoft's C library (bug 8526) 2.4.92 (2.5 RC2) Behdad Esfahbod (14): Make fc-match --sort call FcFontRenderPrepare. Port fonts-persian.conf to new alias syntax with binding="same" Fix trivial bugs in edit-sgml.c Add FcGetLangs() and FcLangGetCharSet(). Add/update config files from Fedora. Split 40-generic.conf into 40-nonlatin.conf and 45-latin.conf Use binding="same" in 30-urw-aliases.conf and remove duplicate entries. Remove redundant/obsolete comments from conf files. Remove 20-lohit-gujarati.conf. It's covered by 25-unhint-nonlatin.conf now. Oops, fix Makefile.am. Remove 25-unhint-nonlatin.conf from default configuration by not linking it. Fix documented conf-file naming format in README Remove list of available conf files from README. Simplify/improve 30-metric-aliases.conf Keith Packard (25): Also check configDirs mtimes in FcConfigUptoDate Respect "binding" attribute in entries. Correct documentation for FcAtomicLock (Bug 12947). Remove fcprivate.h, move the remaining macros to fcint.h. Correct documentation for FcConfigUptoDate (bug 12948). Document skipping of fonts from FcFileScan/FcDirScan. Make file_stat argument to FcDirCacheLoadFile optional. Clean up exported names in fontconfig.h. Track line numbers in sgml edit tool input. Typo error in function name: Inverval -> interval Don't check cache file time stamps when cleaning cache dir. Use FcLangDifferentTerritory instead of FcLangDifferentCountry. Verify documentation covers exposed symbols. Document previously undocumented functions. (bug 12963) Update documentation for FcStrCopyFilename (bug 12964). Update documentation for stale FcConfigGetConfig function. Have FcConfigSetCurrent accept the current configuration and simply return Remove references to FcConfigParse and FcConfigLoad. Replace incorrect documentation uses of 'char' with 'FcChar8' (bug 13002). Fix formatting syntax in doc/fccache.fncs Generate fccache.sgml, fcdircache.sgml and fclangset.sgml. Formatting syntax mistake in doc/fclangset.fncs. Link new function documentation into the fontconfig-devel.sgml Ignore new generated documentation Export FcConfig{G,S}etRescanInverval from .so, mark as deprecated. 2.4.91 (2.5 RC1) Behdad Esfahbod (1): Update CaseFolding.txt to Unicode 5.1.0 Dwayne Bailey (1): Add/fix *.orth files for South African languages Hideki Yamane (1): Handle Japanese fonts better. (debian bug #435971) Keith Packard (32): rehash increment could be zero, causing rehash infinite loop. Work around FreeType bug when glyph name buffer is too small. Free temporary string in FcDirCacheUnlink (Bug #11758) Fix ChangeLog generation to avoid circular make dependency Store font directory mtime in cache file. Comment about mmaping cache files was misleading. Make FC_FULLNAME include all fullname entries, elide nothing. [bug 12827] Remove unneeded call to access(2) in fc-cache. Improve verbose messages from fc-cache. Verbose message about cleaning directories was imprecise Don't use X_OK bit when checking for writable directories (bug 12438) Have fc-cache remove invalid cache files from cache directories. FcConfigParseAndLoad doc was missing the last param. Place language name in constant array instead of pointer. Must not insert cache into hash table before completely validating. Eliminate relocations for glyph name table. Eliminate relocations from FcCodePageRange structure (bug 10982). Leave generated headers out of distribution (bug 12734). Move elements to the end of fonts.conf. Add BRAILLE PATTERN BLANK to list of blank glyphs. Replace makealias pattern with something supported by POSIX grep (bug 11083) FcInit should return FcFalse when FcInitLoadConfigAndFonts fails. (bug 10976) There is no U+1257 (bug 10899). Spelling errors in documentation. (bug 10879). Oops. Left debugging printf in previous commit. Handle UltraBlack weight. Fix parallel build in fontconfig/docs (bug 10481). Distribute man source files for command line programs (bug 9678). Ensure weight/slant values present even when style is supplied (bug 9313). fontconfig needs configure option to use gnu iconv (bug 4083). Match 'ultra' on word boundaries to detect ultra bold fonts. (bug 2511) Build fix for Solaris 10 with GCC. Mike FABIAN (1): Avoid crashes if config files contain junk. Stephan Kulow (1): Make FcPatternDuplicate copy the binding instead of always using Strong. Tilman Sauerbeck (2): Store FcNoticeFoundries in read-only memory. Store FcVendorFoundries in read-only memory. 2.4.2 Han-Wen Nienhuys: FcStrCanonFileName buggy for mingw. (bug 8311) More fixes for Win32 building (bug 8311) Kean Johnston: Don't use varargs CPP macros in fccache.c. (bug 8733) Keith Packard: Remove documentation for non-existant FcConfigNormalizeFontDir. Build fontconfig.def from header files when needed. Detect and use available random number generator (bug 8308) Add sparc64 architecture string. FcStrCanonAbsoluteFilename should be static. Use explicit platform/nameid order when scanning ttf files. Warn (and recover) from config file without elements. Avoid writing uninitialized structure pad bytes to cache files. Fix grep pattern in makealias to work on non-Gnu grep (bug 8368). Add FcFreeTypeQueryFace external API. Bug #7311. Segfault scanning non-font files. Disallow scan edit of user vars. (#8767) Add space between type and formal in devel man pages (bug 8935) Mike FABIAN: Do not clean cache files for different architectures Peter Breitenlohner: A VPATH build of fontconfig-2.4.1 fails for various reasons. Bug 8933. Use instead of when documenting fonts.conf. Bug 8935. Fix fc-cat documentation (bug 8935). 2.4.1 Keith Packard: Update installation notes for 2.4 base. Add ppc64 signature. Bug 8227 Add signatures for m68k and mipsel (thanks debian buildd) Add warning flags to fc-cache build. Clean up warnings in fc-cache. Reimplement FcConfigAppFontAddDir; function was lost in 2.4.0. 2.4.0 David Turner: Replace character discovery loop with simpler, faster version. James Cloos: Move files from conf.d to conf.avail Standardize conf.avail number prefixing convention Support all five possibilities for sub-pixel Move user and local conf file loading into conf.avail files Number the remaining conf.avail files Update Makefile.am to match conf.avail changes Replace load of conf.d in fonts.conf.in Make room for chunks from fonts.conf in conf.avail Re-order old conf.d files Move some section from fonts.conf into conf.avail files Update Makefile.am files Make conf.avail and conf.d work Keith Packard: Create fc_cachedir at install time. Bug 8157. Reference patterns in FcCacheCopySet. Replace gnu-specific sed command with simple grep. Attempt to fix makealias usage for build on Mac OS X. Accept locale environment variables that do not contain territory. Merge branch 'jhcloos' Insert newly created caches into reference data structure. Add XML headers to new conf files. Move link make commands to conf.avail dir Rename conf.avail to conf.d Fix conf.d directory sorting. Include cachedir in fonts.dtd. Don't display tests for DESTDIR on make install. Split much of the configuration into separate files. Renumber files 2.3.97 Carl Worth: Rename FcPatternThawAll to FcPatternFini. Add a configuration file that disables hinting for the Lohit Gujarati font Keith Packard: Various GCC 4 cleanups for signed vs unsigned char Finish INSTALL changes. .gitignore ChangeLog Merge branch 'fc-2_4_branch' to master Remove all .cvsignore files Hide private functions in shared library. Export functionality for utilities. Hide FreeType glue code from library ABI. Can't typecheck values for objects with no known type. Leave cache files mapped permanently. Reference count cache objects. Make cache reference counting more efficient. Oops, fc-lang broke when I added cache referencing. Correct reference count when sharing cache file objects. Eliminate .so PLT entries for local symbols. (thanks to Arjan van de Ven) Update architecture signatures for x86-64 and ppc. Parallel build fix for fcalias.h and fcaliastail.h Charset hashing depended on uniqueness of leaves. Patrick Lam: file Makefile.am was initially added on branch fc-2_4_branch. Modify config file to use Greek fonts before Asian fonts with Greek glyphs. Use libtool -no-undefined flag on all platforms. file ftglue.c was initially added on branch fc-2_4_branch. 2005-11-23 Frederic Crozat : reviewed by: plam file 10-fonts-persian.conf was initially added on branch fc-2_4_branch. Sort directory entries while scanning them from disk; prevents Heisenbugs file ln.orth was initially added on branch fc-2_4_branch. Fix typos in orth files. Reported by Denis Jacquerye. On Windows, unlink before rename. Reported by Tim Evans. file fc-match.sgml was initially added on branch fc-2_4_branch. 2.3.96 Keith Packard: Make path names in cache files absolute (NB, cache format change) Stop Eliminate pattern freezing Add .gitignore Construct short architecture name from architecture signature. Write caches to first directory with permission. Valid cache in FcDirCacheOpen. Eliminate NormalizeDir. Eliminate gratuitous stat/access calls per dir. Add architecture to cache filename. Eliminate global cache. Eliminate multi-arch cache code. Fix up fc-cache and fc-cat for no global cache changes. Eliminate ./ and ../ elements from font directory names when scanning. Regenerate x86 line in fcarch.tmpl.h to match change in cache data. Add x86-64 architecture and signature. During test run, remove cache directory to avoid stale cache usage. Add ppc architecture Revert to original FcFontSetMatch algorithm to avoid losing fonts. Rework cache files to use offsets for all data structures. Fix build problems caused by cache rework. FcCharSetSerialize was using wrong offset for leaves. Make fc-cat work. Rework Object name database to unify typechecking and object lookup. Skip broken caches. Cache files are auto-written, don't rewrite in fc-cache. Fix fc-cat again. Sigh. Use intptr_t instead of off_t inside FcCache structure. Serialized value lists were only including one value. Automatically remove invalid cache files. With no args, fc-cat now dumps all directories. Revert ABI changes from version 2.3 Change $(pkgcachedir) to $(fc_cachedir) in fc-cat and fc-cache Makefile.am Allow FcTypeLangSet to match either FcTypeLangSet or FcTypeString. Remove stale architecture signatures. Pass directory information around in FcCache structure. Freeze charsets. Fix fc-lang to use new charset freezer API. Fontset pattern references are relative to fontset, not array. Add some ignores Only rebuild caches for system fonts at make install time. Fix memory leaks in fc-cache directory cleaning code. Add @EXPAT_LIBS@ to Libs.private in fontconfig.pc (bug 7683) Avoid #warning directives on non-GCC compilers. (bug 7683) Chinese/Macau needs the Hong Kong orthography instead of Taiwan (bug 7884) Add Assamese orthography (as.orth). Bug #8050 Really only rebuild caches for system fonts at make install time. Fonts matching lang not territory should satisfy sort pattern lang. Prefer Bitstream Vera to DejaVu families. Guess that mac roman names with lots of high bits are actually SJIS. Document FC_DEBUG values (bug 6393). Document name \ escape syntax. Move Free family names to bottom of respective aliases. (bug 7429) Unify directory canonicalization into FcStrAddFilename. Allow font caches to contain newer version numbers Add FcMatchScan to resolve Delicious font matching issues (bug #6769) Fix missing initialization/destruction of new 'scan' target subst list. Don't segfault when string values can't be parsed as charsets or langsets. Using uninitialized (and wrong) variable in FcStrCopyFilename. Oops; missed the 60-delicious.conf file. Patrick Lam: Keith Packard 2006-04-27 Paolo Borelli (pborelli@katamail.com) reviewed by: plam 2006-05-31 Yong Li (rigel863@gmail.com) reviewed by: plam, Bedhad Esfahbod 2006-07-19 Jon Burgess (jburgess@uklinux.net) reviewed by: plam 2006-08-04 Keith Packard (keithp@keithp.com) reviewed by: plam 2.3.95 Match 'Standard Symbols L' for 'Symbol'. Add URW fonts as aliases for all of the PostScript fonts. (reported by Miguel Rodriguez). Fix a number of Coverity defects (Frederic Crozat). Speed up FcFontSort (fix suggested by Kenichi Handa). Fix error with charsets. Survive missing docbook2pdf. Compile on HP-UX, AIX, SGI and Windows (Cygwin, MinGW). Fix intel compiler warnings. Fix multiarch support (don't destroy multiarch files!) Require pkg-config. (Thanks Behdad; better solution wanted for libxml2 detection!) Fix typos in orth files and add orth for Lingala (reported by Denis Jacquerye). Remove debian/ directory. Add a configuration file that disables hinting for the Lohit Gujarati font (since the hinting distorts some glyphs quite badly). Sort directory entries while scanning them from disk; prevents Heisenbugs due to file ordering in a directory (due to Egmont Koblinger). Fix Wine's problem with finding fonts. (Reported by Bernhard Rosenkraenzer.) Fix the issues with GNU libiconv vs. libc iconv (which especially appear on Solarii); patch by Behdad Esfahbod, approach suggested by Tim Mooney. 2.3.94 fc-cat can take directories as input and creates old-style fonts.cache listings. fc-cache takes -r --really-force which blows away all old caches and regenerates. Robustness fixes, integer overflow fixes (notably to cache handling code), toast broken global cache files. Change binary format to make it compatible with static langset information (thanks to Takashi Iwai). Open hashed caches before fonts.cache-2 (Takashi Iwai). Fix FcFontSetMatch's algorithm, which used to unjustly kill fonts for not declaring certain elements (Takashi Iwai). Fix matching bug when multiple elements match; don't use the sum of all scores, but the best score (James Su). Make fc-lang more friendly to Windows systems. Remove archaic chars from Georgian charset; add Euro character to charsets for European languages. Fix treatment of broken PCF fonts that don't declare family names. Pass O_BINARY to open if appropriate (reported by Doodle). Normalize font directories to the form in which they appear in config files. Add a record of the cached directory to the cache file. Perf optimizations (Dirk Mueller; some reported by Michael Meeks.) Don't loop infinitely on recursive symlinks. Make 'make distcheck' work with automake 1.6.3. Replace 'stamp' target with mkinstalldirs. Don't stop scanning if a directory in fonts.conf doesn't exist, because subsequent directories might exist. Put directory names into global cache (reported by Ronny V. Vindenes). Treat zh-hk fonts differently from zh-tw fonts. This patch may cause fontconfig to treat A-X fonts differently from A-Y fonts; please mail the fontconfig list if this causes any problems. Fix for unaligned memory accesses (Andreas Schwab). Fix treatment of cache directory as read from cache file; don't use string equality to determine if we have the right file, use inode equality. Properly skip past dir caches that contain zero fonts, as occurs in global caches (reported by Mike Fabian). Print out full pathname in fc-match -v (reported by Frederic Crozat). Fix bug where fc-match crashes when given __DUMMY__ property to match on. 2.3.93 Create cache files in /var/cache/fontconfig with hashed filenames, if possible, for added FHS compliance. Make fc-cat read both per-directory and global cache files. Add config file for Persian fonts from Sharif FarsiWeb, Inc. Major performance improvements by Dirk Mueller, Stephen Kulow, and Michael Matz at SuSE: in particular, speed up FcFontSetMatch, and inline many functions. Fix treatment of globs in config files, broken since 2.3.2 and discovered by Mathias Clasen. Don't use freetype internal headers (patch by Matthias Clasen). Further space improvements: create langsets statically, so that they can live in .rodata. Properly align mmapped data structures to make e.g. ia64 happy. Bug fixes. 2.3.92 Fix corrupted caches bugs from 2.3.91 (reported by Mike Fabian). Store only basename in the cache, reconstitute on demand (reported by James Cloos). Change the rule for artificial emboldening in fonts.conf.in. This enables the support for artificial emboldening included in cairo (patch by Zhe Su). Add FC_EMBEDDED_BITMAP object type to tell Xft/Cairo whether to load embedded bitmaps or not (patch by Jinghua Luo). Fix GCC4 warnings (some by Behdad Esfahbod). Support localized font family and style names; this has been reported to break old apps like xfd, but modern (gtk+/qt/mozilla) apps work fine (patch by Zhe Su). Prevent fc-list from escaping strings when printing them (reported by Matthias Clasen). Add valist sentinel markup for FcObjectSetBuild and FcPatternBuild (patch by Marcus Meissner). Add consts to variables so as to move arrays into .rodata (patch by Ross Burton). Modify config file to use Greek fonts before Asian fonts with Greek glyphs. (patch by Simos Xenitellis). Use libtool -no-undefined flag on all platforms (patch by Christian Biesinger). 2.3.91 Use libxml2 if requested or if expat not available. (Mathias Hasselmann) Fix multi-arch cache files: compute the position for the block to be added using info from OrigFile, not NewFile. (plam) Cast results of sizeof() to unsigned int to get rid of warnings on x86_64 (reported by Matthias Clasen). Use FcAtomic to rewrite cache files; don't unlink the fonts.cache-2 file even if there's no data to write; just write an empty cache file. (Reported by Lubos Lunak) Allocate room for the subdirectory names in each directory cache. (Reported by James Cloos) 2.3.90 Development release of mmap patch: load pattern information directly from cache files. (Patrick Lam) 2.3.2 Patch memory leaks in using iconv. (Reported by Chris Capoccia) Patch memory leaks in fc-cache. (Reported by Chris Capoccia) Fetch bitmap glyphs to get widths during font evaluation. (keithp) Share strings through FcObjectStaticName (Ross Burton) Windows build updates (Tor Lillqvist) 2.3.1 Be more careful about broken GSUB/GPOS tables (Manish Singh) Include debian packaging stuff in CVS (Josselin Mouette) Add more conf.d examples (Keith Packard) Make manuals build again (Keith Packard) Johap -> Johab (Funda Wang) 2.3.0 Fix memory leak of patterns rejected by configuration (#2518) Create prototype /etc/fonts/conf.d directory and populate it with a few sample files. These samples are unused as the file names don't start with numbers. Update documentation. 2.2.99 Verify cache for FC_FILE and FC_FAMILY in every entry (#2219) Update blanks list from recent Unicode docs (#86) Various small build fixes (#280, #2278, Documentation fixes (#2085, #2284, #2285) Add polite typechecking to config file loader (#229) 2.2.98 Share object name strings (Michael Meeks) Eliminate a couple of codepoints from Russian orthography (John Thacker) Add synthetic emboldening configuration changes (Jakub Pavelek) Change FcFontSetSort to ignore language after fonts with the requested languages have been found. (Owen Taylor) Add some RedHat font configuration changes (Owen Tayler). Add full Unicode case folding support to case-ignoring string functions (Keith Packard) Remove Han characters from Korean orthography (Tor Andersson) 2.2.97 Fc-cache sleeps before exiting to ensure filesystem timestamps are well ordered. Added Punjai orthography. The timestamp in fonts.conf is gone now. Too many problems. The default font path includes all of the X fonts; use selectfont/rejectfont to eliminate bitmaps, as shown in the sample local.conf file. configuration elements may now reference a directory. Files in that directory matching [0-9]* are loaded in UTF-8 collating sequence order. configuration added to control which fonts are used. fontformat font pattern elements built from the FT_Get_X11_Font_Format function in newer versions of FreeType. 'capability' list constructed from gsub/gpos and silf values in TrueType files. Multi-lingual names (style, family, fullname) extracted and stored with parallel lang properties marking language. 2.2.96 Fix FcConfigUpToDate to actually check all font directories and eliminate a typo which completely prevented it from working (Lubos Lunak ) Remove comma at end of FcResult enum definition for picky compilers. 2.2.95 Add FcResultOutOfMemory so FcFontSetMatch can return accurate error. Replace MIN/MAX/ABS macros which happened to be in old FreeType releases with FC_MIN/FC_MAX/FC_ABS macros owned by fontconfig. 2.2.94 The 2.2.93 release was prepared with a broken libtool which created the shared library without the '.so' in the file names. 2.2.93 This is the third prerelease of fontconfig 2.3. Significant changes from 2.2.92 are: o Use new FreeType #include syntax o use y_ppem field instead of 'height' in bitmap sizes rec - FreeType changed the semantics. Still uses height for older versions of FreeType o Don't construct program manuals unless docbook is available 2.2.92 o make distcheck work 2.2.91 o Switch to SGML manuals o Add FC_DUAL width spacing value o Add FcFini to close out fontconfig and release all memory 2.2 This is the third public release of fontconfig, a font configuration and customization library. Fontconfig is designed to locate fonts within the system and select them according to requirements specified by applications. Fontconfig is not a rasterization library, nor does it impose a particular rasterization library on the application. The X-specific library 'Xft' uses fontconfig along with freetype to specify and rasterize fonts. Keith Packard keithp@keithp.com fontconfig-user.txt000066600000064047150501207360010433 0ustar00fonts-conf Name fonts.conf -- Font configuration files Synopsis /etc/fonts/fonts.conf /etc/fonts/fonts.dtd /etc/fonts/conf.d ~/.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 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. 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 corresponding to each family style String Font style. Overrides weight and slant stylelang String Languages corresponding to each style fullname String Font full names (often includes style) fullnamelang String Languages corresponding 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 lcdfilter Int Type of LCD filter 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: -:=:=... 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 The '\', '-', ':' and ',' characters in family names must be preceeded by a '\' character to avoid having them misinterpreted. Similarly, values containing '\ ', '=', '_', ':' and ',' must also have them preceeded by a '\' character. The '\' characters are stripped out of the family name and values as the font name is read. Debugging Applications To help diagnose font and applications problems, fontconfig is built with a large amount of internal debugging left enabled. It is controlled by means of the FC_DEBUG environment variable. The value of this variable is interpreted as a number, and each bit within that value controls different debugging messages. Name Value Meaning --------------------------------------------------------- MATCH 1 Brief information about font matching MATCHV 2 Extensive font matching information EDIT 4 Monitor match/test/edit execution FONTSET 8 Track loading of font information at startup CACHE 16 Watch cache files being written CACHEV 32 Extensive cache file writing information PARSE 64 (no longer in use) SCAN 128 Watch font files being scanned to build caches SCANV 256 Verbose font file scanning information MEMORY 512 Monitor fontconfig memory usage CONFIG 1024 Monitor which config files are loaded LANGSET 2048 Dump char sets used to construct lang values OBJTYPES 4096 Display message when value typechecks fail Add the value of the desired debug levels together and assign that (in base 10) to the FC_DEBUG environment variable before running the application. Output from these statements is sent to stdout. 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: ... This is the top level element for a font configuration and can contain , , , and elements in any order. This element contains a directory name which will be scanned for font files to include in the set of available fonts. 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-'', where is the font configuration file version number (currently 2). This element contains the name of an additional configuration file or directory. If a directory, every file within that directory starting with an ASCII digit (U+0030 - U+0039) and ending with the string ``.conf'' 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. This element provides a place to consolidate additional configuration information. can contain and elements in any order. Fonts often include "broken" glyphs which appear in the encoding but are drawn as blanks on the screen. Within the element, place each Unicode characters which is supposed to be blank in an element. Characters outside of this set which are drawn as blank will be elided from the set of characters supported by the font. The element holds an 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. This element is used to black/white list fonts from being listed or matched against. It holds acceptfont and rejectfont elements. 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. 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 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. Note that globs only apply to directories, not to individual fonts. 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 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. This element holds first a (possibly empty) list of elements and then a (possibly empty) list of 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. If 'target' is set to "scan", then this element applies when the font is scanned to build the fontconfig database. This element contains a single value which is compared with the target ('pattern', 'font', 'scan' 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 element, the target= attribute in the element selects between matching the original pattern or the font. "default" selects whichever target the outer element has selected. 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 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 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 , , , These elements hold a single value of the indicated type. 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). This element holds the four elements of an affine transformation. Holds a property name. Evaluates to the first value from the property of the font, not the pattern. 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 lcdnone lcdfilter 0 lcddefault lcdfilter 1 lcdlight lcdfilter 2 lcdlegacy lcdfilter 3 hintnone hintstyle 0 hintslight hintstyle 1 hintmedium hintstyle 2 hintfull hintstyle 3 , , , , , These elements perform the specified operation on a list of expression elements. and are boolean, not bitwise. , , , , , These elements compare two values, producing a boolean result. Inverts the boolean sense of its one expression element 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 elements provide a shorthand notation for the set of common match operations needed to substitute one font family for another. They contain a element followed by optional , and elements. Fonts matching the element are edited to prepend the list of ed families before the matching , append the able families after the matching and append the families to the end of the family list. Holds a single font family name , , These hold a list of elements to be used by the element. EXAMPLE CONFIGURATION FILE System configuration file This is an example of a system-wide configuration file /usr/share/fonts /usr/X11R6/lib/X11/fonts mono monospace sans serif monospace sans ~/.fonts.conf conf.d local.conf Times Times New Roman serif Helvetica Arial sans Courier Courier New monospace serif Times New Roman sans Arial monospace Andale Mono User configuration file This is an example of a per-user configuration file that lives in ~/.fonts.conf ~/.fonts rgb 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 directive. fonts.dtd is a DTD that describes the format of the configuration files. ~/.fonts.conf.d is the conventional name for a per-user directory of (typically auto-generated) configuration files, although the actual location is specified in the global fonts.conf file. ~/.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-cat(1), fc-cache(1), fc-list(1), fc-match(1), fc-query(1) Version Fontconfig version 2.8.0 COPYING000066600000002144150501207360005603 0ustar00fontconfig/COPYING Copyright © 2001,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.