fontconfig-user.txt revision b09479dc
1                                   fonts-conf
2
3Name
4
5   fonts.conf -- Font configuration files
6
7Synopsis
8
9      /etc/fonts/fonts.conf
10      /etc/fonts/fonts.dtd
11      /etc/fonts/conf.d
12      $XDG_CONFIG_HOME/fontconfig/conf.d
13      $XDG_CONFIG_HOME/fontconfig/fonts.conf
14      ~/.fonts.conf.d
15      ~/.fonts.conf
16
17Description
18
19   Fontconfig is a library designed to provide system-wide font
20   configuration, customization and application access.
21
22Functional Overview
23
24   Fontconfig contains two essential modules, the configuration module which
25   builds an internal configuration from XML files and the matching module
26   which accepts font patterns and returns the nearest matching font.
27
28  Font Configuration
29
30   The configuration module consists of the FcConfig datatype, libexpat and
31   FcConfigParse which walks over an XML tree and amends a configuration with
32   data found within. From an external perspective, configuration of the
33   library consists of generating a valid XML tree and feeding that to
34   FcConfigParse. The only other mechanism provided to applications for
35   changing the running configuration is to add fonts and directories to the
36   list of application-provided font files.
37
38   The intent is to make font configurations relatively static, and shared by
39   as many applications as possible. It is hoped that this will lead to more
40   stable font selection when passing names from one application to another.
41   XML was chosen as a configuration file format because it provides a format
42   which is easy for external agents to edit while retaining the correct
43   structure and syntax.
44
45   Font configuration is separate from font matching; applications needing to
46   do their own matching can access the available fonts from the library and
47   perform private matching. The intent is to permit applications to pick and
48   choose appropriate functionality from the library instead of forcing them
49   to choose between this library and a private configuration mechanism. The
50   hope is that this will ensure that configuration of fonts for all
51   applications can be centralized in one place. Centralizing font
52   configuration will simplify and regularize font installation and
53   customization.
54
55  Font Properties
56
57   While font patterns may contain essentially any properties, there are some
58   well known properties with associated types. Fontconfig uses some of these
59   properties for font matching and font completion. Others are provided as a
60   convenience for the applications' rendering mechanism.
61
62     Property        Type    Description
63     --------------------------------------------------------------
64     family          String  Font family names
65     familylang      String  Languages corresponding to each family
66     style           String  Font style. Overrides weight and slant
67     stylelang       String  Languages corresponding to each style
68     fullname        String  Font full names (often includes style)
69     fullnamelang    String  Languages corresponding to each fullname
70     slant           Int     Italic, oblique or roman
71     weight          Int     Light, medium, demibold, bold or black
72     size            Double  Point size
73     width           Int     Condensed, normal or expanded
74     aspect          Double  Stretches glyphs horizontally before hinting
75     pixelsize       Double  Pixel size
76     spacing         Int     Proportional, dual-width, monospace or charcell
77     foundry         String  Font foundry name
78     antialias       Bool    Whether glyphs can be antialiased
79     hinting         Bool    Whether the rasterizer should use hinting
80     hintstyle       Int     Automatic hinting style
81     verticallayout  Bool    Use vertical layout
82     autohint        Bool    Use autohinter instead of normal hinter
83     globaladvance   Bool    Use font global advance data (deprecated)
84     file            String  The filename holding the font
85     index           Int     The index of the font within the file
86     ftface          FT_Face Use the specified FreeType face object
87     rasterizer      String  Which rasterizer is in use (deprecated)
88     outline         Bool    Whether the glyphs are outlines
89     scalable        Bool    Whether glyphs can be scaled
90     scale           Double  Scale factor for point->pixel conversions
91     dpi             Double  Target dots per inch
92     rgba            Int     unknown, rgb, bgr, vrgb, vbgr,
93                             none - subpixel geometry
94     lcdfilter       Int     Type of LCD filter
95     minspace        Bool    Eliminate leading from line spacing
96     charset         CharSet Unicode chars encoded by the font
97     lang            String  List of RFC-3066-style languages this
98                             font supports
99     fontversion     Int     Version number of the font
100     capability      String  List of layout capabilities in the font
101     embolden        Bool    Rasterizer should synthetically embolden the font
102     fontfeatures    String  List of the feature tags in OpenType to be enabled
103     prgname         String  String  Name of the running program
104
105
106  Font Matching
107
108   Fontconfig performs matching by measuring the distance from a provided
109   pattern to all of the available fonts in the system. The closest matching
110   font is selected. This ensures that a font will always be returned, but
111   doesn't ensure that it is anything like the requested pattern.
112
113   Font matching starts with an application constructed pattern. The desired
114   attributes of the resulting font are collected together in a pattern. Each
115   property of the pattern can contain one or more values; these are listed
116   in priority order; matches earlier in the list are considered "closer"
117   than matches later in the list.
118
119   The initial pattern is modified by applying the list of editing
120   instructions specific to patterns found in the configuration; each
121   consists of a match predicate and a set of editing operations. They are
122   executed in the order they appeared in the configuration. Each match
123   causes the associated sequence of editing operations to be applied.
124
125   After the pattern has been edited, a sequence of default substitutions are
126   performed to canonicalize the set of available properties; this avoids the
127   need for the lower layers to constantly provide default values for various
128   font properties during rendering.
129
130   The canonical font pattern is finally matched against all available fonts.
131   The distance from the pattern to the font is measured for each of several
132   properties: foundry, charset, family, lang, spacing, pixelsize, style,
133   slant, weight, antialias, rasterizer and outline. This list is in priority
134   order -- results of comparing earlier elements of this list weigh more
135   heavily than later elements.
136
137   There is one special case to this rule; family names are split into two
138   bindings; strong and weak. Strong family names are given greater
139   precedence in the match than lang elements while weak family names are
140   given lower precedence than lang elements. This permits the document
141   language to drive font selection when any document specified font is
142   unavailable.
143
144   The pattern representing that font is augmented to include any properties
145   found in the pattern but not found in the font itself; this permits the
146   application to pass rendering instructions or any other data through the
147   matching system. Finally, the list of editing instructions specific to
148   fonts found in the configuration are applied to the pattern. This modified
149   pattern is returned to the application.
150
151   The return value contains sufficient information to locate and rasterize
152   the font, including the file name, pixel size and other rendering data. As
153   none of the information involved pertains to the FreeType library,
154   applications are free to use any rasterization engine or even to take the
155   identified font file and access it directly.
156
157   The match/edit sequences in the configuration are performed in two passes
158   because there are essentially two different operations necessary -- the
159   first is to modify how fonts are selected; aliasing families and adding
160   suitable defaults. The second is to modify how the selected fonts are
161   rasterized. Those must apply to the selected font, not the original
162   pattern as false matches will often occur.
163
164  Font Names
165
166   Fontconfig provides a textual representation for patterns that the library
167   can both accept and generate. The representation is in three parts, first
168   a list of family names, second a list of point sizes and finally a list of
169   additional properties:
170
171           <families>-<point sizes>:<name1>=<values1>:<name2>=<values2>...
172
173
174   Values in a list are separated with commas. The name needn't include
175   either families or point sizes; they can be elided. In addition, there are
176   symbolic constants that simultaneously indicate both a name and a value.
177   Here are some examples:
178
179     Name                            Meaning
180     ----------------------------------------------------------
181     Times-12                        12 point Times Roman
182     Times-12:bold                   12 point Times Bold
183     Courier:italic                  Courier Italic in the default size
184     Monospace:matrix=1 .1 0 1       The users preferred monospace font
185                                     with artificial obliquing
186
187
188   The '\', '-', ':' and ',' characters in family names must be preceded by a
189   '\' character to avoid having them misinterpreted. Similarly, values
190   containing '\', '=', '_', ':' and ',' must also have them preceded by a
191   '\' character. The '\' characters are stripped out of the family name and
192   values as the font name is read.
193
194Debugging Applications
195
196   To help diagnose font and applications problems, fontconfig is built with
197   a large amount of internal debugging left enabled. It is controlled by
198   means of the FC_DEBUG environment variable. The value of this variable is
199   interpreted as a number, and each bit within that value controls different
200   debugging messages.
201
202     Name         Value    Meaning
203     ---------------------------------------------------------
204     MATCH            1    Brief information about font matching
205     MATCHV           2    Extensive font matching information
206     EDIT             4    Monitor match/test/edit execution
207     FONTSET          8    Track loading of font information at startup
208     CACHE           16    Watch cache files being written
209     CACHEV          32    Extensive cache file writing information
210     PARSE           64    (no longer in use)
211     SCAN           128    Watch font files being scanned to build caches
212     SCANV          256    Verbose font file scanning information
213     MEMORY         512    Monitor fontconfig memory usage
214     CONFIG        1024    Monitor which config files are loaded
215     LANGSET       2048    Dump char sets used to construct lang values
216     OBJTYPES      4096    Display message when value typechecks fail
217
218
219   Add the value of the desired debug levels together and assign that (in
220   base 10) to the FC_DEBUG environment variable before running the
221   application. Output from these statements is sent to stdout.
222
223Lang Tags
224
225   Each font in the database contains a list of languages it supports. This
226   is computed by comparing the Unicode coverage of the font with the
227   orthography of each language. Languages are tagged using an RFC-3066
228   compatible naming and occur in two parts -- the ISO 639 language tag
229   followed a hyphen and then by the ISO 3166 country code. The hyphen and
230   country code may be elided.
231
232   Fontconfig has orthographies for several languages built into the library.
233   No provision has been made for adding new ones aside from rebuilding the
234   library. It currently supports 122 of the 139 languages named in ISO
235   639-1, 141 of the languages with two-letter codes from ISO 639-2 and
236   another 30 languages with only three-letter codes. Languages with both two
237   and three letter codes are provided with only the two letter code.
238
239   For languages used in multiple territories with radically different
240   character sets, fontconfig includes per-territory orthographies. This
241   includes Azerbaijani, Kurdish, Pashto, Tigrinya and Chinese.
242
243Configuration File Format
244
245   Configuration files for fontconfig are stored in XML format; this format
246   makes external configuration tools easier to write and ensures that they
247   will generate syntactically correct configuration files. As XML files are
248   plain text, they can also be manipulated by the expert user using a text
249   editor.
250
251   The fontconfig document type definition resides in the external entity
252   "fonts.dtd"; this is normally stored in the default font configuration
253   directory (/etc/fonts). Each configuration file should contain the
254   following structure:
255
256           <?xml version="1.0"?>
257           <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
258           <fontconfig>
259           ...
260           </fontconfig>
261
262
263  <fontconfig>
264
265   This is the top level element for a font configuration and can contain
266   <dir>, <cachedir>, <include>, <match> and <alias> elements in any order.
267
268  <dir prefix="default">
269
270   This element contains a directory name which will be scanned for font
271   files to include in the set of available fonts. If 'prefix' is set to
272   "xdg", the value in the XDG_DATA_HOME environment variable will be added
273   as the path prefix. please see XDG Base Directory Specification for more
274   details.
275
276  <cachedir prefix="default">
277
278   This element contains a directory name that is supposed to be stored or
279   read the cache of font information. If multiple elements are specified in
280   the configuration file, the directory that can be accessed first in the
281   list will be used to store the cache files. If it starts with '~', it
282   refers to a directory in the users home directory. If 'prefix' is set to
283   "xdg", the value in the XDG_CACHE_HOME environment variable will be added
284   as the path prefix. please see XDG Base Directory Specification for more
285   details. The default directory is ``$XDG_CACHE_HOME/fontconfig'' and it
286   contains the cache files named ``<hash
287   value>-<architecture>.cache-<version'', where <version> is the font
288   configureation file version number (currently 3).
289
290  <include ignore_missing="no" prefix="default">
291
292   This element contains the name of an additional configuration file or
293   directory. If a directory, every file within that directory starting with
294   an ASCII digit (U+0030 - U+0039) and ending with the string ``.conf'' will
295   be processed in sorted order. When the XML datatype is traversed by
296   FcConfigParse, the contents of the file(s) will also be incorporated into
297   the configuration by passing the filename(s) to FcConfigLoadAndParse. If
298   'ignore_missing' is set to "yes" instead of the default "no", a missing
299   file or directory will elicit no warning message from the library. If
300   'prefix' is set to "xdg", the value in the XDG_CONFIG_HOME environment
301   variable will be added as the path prefix. please see XDG Base Directory
302   Specification for more details.
303
304  <config>
305
306   This element provides a place to consolidate additional configuration
307   information. <config> can contain <blank> and <rescan> elements in any
308   order.
309
310  <blank>
311
312   Fonts often include "broken" glyphs which appear in the encoding but are
313   drawn as blanks on the screen. Within the <blank> element, place each
314   Unicode characters which is supposed to be blank in an <int> element.
315   Characters outside of this set which are drawn as blank will be elided
316   from the set of characters supported by the font.
317
318  <rescan>
319
320   The <rescan> element holds an <int> element which indicates the default
321   interval between automatic checks for font configuration changes.
322   Fontconfig will validate all of the configuration files and directories
323   and automatically rebuild the internal datastructures when this interval
324   passes.
325
326  <selectfont>
327
328   This element is used to black/white list fonts from being listed or
329   matched against. It holds acceptfont and rejectfont elements.
330
331  <acceptfont>
332
333   Fonts matched by an acceptfont element are "whitelisted"; such fonts are
334   explicitly included in the set of fonts used to resolve list and match
335   requests; including them in this list protects them from being
336   "blacklisted" by a rejectfont element. Acceptfont elements include glob
337   and pattern elements which are used to match fonts.
338
339  <rejectfont>
340
341   Fonts matched by an rejectfont element are "blacklisted"; such fonts are
342   excluded from the set of fonts used to resolve list and match requests as
343   if they didn't exist in the system. Rejectfont elements include glob and
344   pattern elements which are used to match fonts.
345
346  <glob>
347
348   Glob elements hold shell-style filename matching patterns (including ? and
349   *) which match fonts based on their complete pathnames. This can be used
350   to exclude a set of directories (/usr/share/fonts/uglyfont*), or
351   particular font file types (*.pcf.gz), but the latter mechanism relies
352   rather heavily on filenaming conventions which can't be relied upon. Note
353   that globs only apply to directories, not to individual fonts.
354
355  <pattern>
356
357   Pattern elements perform list-style matching on incoming fonts; that is,
358   they hold a list of elements and associated values. If all of those
359   elements have a matching value, then the pattern matches the font. This
360   can be used to select fonts based on attributes of the font (scalable,
361   bold, etc), which is a more reliable mechanism than using file extensions.
362   Pattern elements include patelt elements.
363
364  <patelt name="property">
365
366   Patelt elements hold a single pattern element and list of values. They
367   must have a 'name' attribute which indicates the pattern element name.
368   Patelt elements include int, double, string, matrix, bool, charset and
369   const elements.
370
371  <match target="pattern">
372
373   This element holds first a (possibly empty) list of <test> elements and
374   then a (possibly empty) list of <edit> elements. Patterns which match all
375   of the tests are subjected to all the edits. If 'target' is set to "font"
376   instead of the default "pattern", then this element applies to the font
377   name resulting from a match rather than a font pattern to be matched. If
378   'target' is set to "scan", then this element applies when the font is
379   scanned to build the fontconfig database.
380
381  <test qual="any" name="property" target="default" compare="eq">
382
383   This element contains a single value which is compared with the target
384   ('pattern', 'font', 'scan' or 'default') property "property" (substitute
385   any of the property names seen above). 'compare' can be one of "eq",
386   "not_eq", "less", "less_eq", "more", "more_eq", "contains" or
387   "not_contains". 'qual' may either be the default, "any", in which case the
388   match succeeds if any value associated with the property matches the test
389   value, or "all", in which case all of the values associated with the
390   property must match the test value. 'ignore-blanks' takes a boolean value.
391   if 'ignore-blanks' is set "true", any blanks in the string will be ignored
392   on its comparison. this takes effects only when compare="eq" or
393   compare="not_eq". When used in a <match target="font"> element, the
394   target= attribute in the <test> element selects between matching the
395   original pattern or the font. "default" selects whichever target the outer
396   <match> element has selected.
397
398  <edit name="property" mode="assign" binding="weak">
399
400   This element contains a list of expression elements (any of the value or
401   operator elements). The expression elements are evaluated at run-time and
402   modify the property "property". The modification depends on whether
403   "property" was matched by one of the associated <test> elements, if so,
404   the modification may affect the first matched value. Any values inserted
405   into the property are given the indicated binding ("strong", "weak" or
406   "same") with "same" binding using the value from the matched pattern
407   element. 'mode' is one of:
408
409     Mode                    With Match              Without Match
410     ---------------------------------------------------------------------
411     "assign"                Replace matching value  Replace all values
412     "assign_replace"        Replace all values      Replace all values
413     "prepend"               Insert before matching  Insert at head of list
414     "prepend_first"         Insert at head of list  Insert at head of list
415     "append"                Append after matching   Append at end of list
416     "append_last"           Append at end of list   Append at end of list
417     "delete"                Delete matching value   Delete all values
418     "delete_all"            Delete all values       Delete all values
419
420
421  <int>, <double>, <string>, <bool>
422
423   These elements hold a single value of the indicated type. <bool> elements
424   hold either true or false. An important limitation exists in the parsing
425   of floating point numbers -- fontconfig requires that the mantissa start
426   with a digit, not a decimal point, so insert a leading zero for purely
427   fractional values (e.g. use 0.5 instead of .5 and -0.5 instead of -.5).
428
429  <matrix>
430
431   This element holds four numerical expressions of an affine transformation.
432   At their simplest these will be four <double> elements but they can also
433   be more involved expressions.
434
435  <range>
436
437   This element holds the two <int> elements of a range representation.
438
439  <charset>
440
441   This element holds at least one <int> element of an Unicode code point or
442   more.
443
444  <langset>
445
446   This element holds at least one <string> element of a RFC-3066-style
447   languages or more.
448
449  <name>
450
451   Holds a property name. Evaluates to the first value from the property of
452   the pattern. If the 'target' attribute is not present, it will default to
453   'default', in which case the property is returned from the font pattern
454   during a target="font" match, and to the pattern during a target="pattern"
455   match. The attribute can also take the values 'font' or 'pattern' to
456   explicitly choose which pattern to use. It is an error to use a target of
457   'font' in a match that has target="pattern".
458
459  <const>
460
461   Holds the name of a constant; these are always integers and serve as
462   symbolic names for common font values:
463
464     Constant        Property        Value
465     -------------------------------------
466     thin            weight          0
467     extralight      weight          40
468     ultralight      weight          40
469     light           weight          50
470     book            weight          75
471     regular         weight          80
472     normal          weight          80
473     medium          weight          100
474     demibold        weight          180
475     semibold        weight          180
476     bold            weight          200
477     extrabold       weight          205
478     black           weight          210
479     heavy           weight          210
480     roman           slant           0
481     italic          slant           100
482     oblique         slant           110
483     ultracondensed  width           50
484     extracondensed  width           63
485     condensed       width           75
486     semicondensed   width           87
487     normal          width           100
488     semiexpanded    width           113
489     expanded        width           125
490     extraexpanded   width           150
491     ultraexpanded   width           200
492     proportional    spacing         0
493     dual            spacing         90
494     mono            spacing         100
495     charcell        spacing         110
496     unknown         rgba            0
497     rgb             rgba            1
498     bgr             rgba            2
499     vrgb            rgba            3
500     vbgr            rgba            4
501     none            rgba            5
502     lcdnone         lcdfilter       0
503     lcddefault      lcdfilter       1
504     lcdlight        lcdfilter       2
505     lcdlegacy       lcdfilter       3
506     hintnone        hintstyle       0
507     hintslight      hintstyle       1
508     hintmedium      hintstyle       2
509     hintfull        hintstyle       3
510
511
512  <or>, <and>, <plus>, <minus>, <times>, <divide>
513
514   These elements perform the specified operation on a list of expression
515   elements. <or> and <and> are boolean, not bitwise.
516
517  <eq>, <not_eq>, <less>, <less_eq>, <more>, <more_eq>, <contains>,
518  <not_contains
519
520   These elements compare two values, producing a boolean result.
521
522  <not>
523
524   Inverts the boolean sense of its one expression element
525
526  <if>
527
528   This element takes three expression elements; if the value of the first is
529   true, it produces the value of the second, otherwise it produces the value
530   of the third.
531
532  <alias>
533
534   Alias elements provide a shorthand notation for the set of common match
535   operations needed to substitute one font family for another. They contain
536   a <family> element followed by optional <prefer>, <accept> and <default>
537   elements. Fonts matching the <family> element are edited to prepend the
538   list of <prefer>ed families before the matching <family>, append the
539   <accept>able families after the matching <family> and append the <default>
540   families to the end of the family list.
541
542  <family>
543
544   Holds a single font family name
545
546  <prefer>, <accept>, <default>
547
548   These hold a list of <family> elements to be used by the <alias> element.
549
550EXAMPLE CONFIGURATION FILE
551
552  System configuration file
553
554   This is an example of a system-wide configuration file
555
556<?xml version="1.0"?>
557<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
558<!-- /etc/fonts/fonts.conf file to configure system font access -->
559<fontconfig>
560<!--
561        Find fonts in these directories
562-->
563<dir>/usr/share/fonts</dir>
564<dir>/usr/X11R6/lib/X11/fonts</dir>
565
566<!--
567        Accept deprecated 'mono' alias, replacing it with 'monospace'
568-->
569<match target="pattern">
570        <test qual="any" name="family"><string>mono</string></test>
571        <edit name="family" mode="assign"><string>monospace</string></edit>
572</match>
573
574<!--
575        Names not including any well known alias are given 'sans-serif'
576-->
577<match target="pattern">
578        <test qual="all" name="family" mode="not_eq"><string>sans-serif</string></test>
579        <test qual="all" name="family" mode="not_eq"><string>serif</string></test>
580        <test qual="all" name="family" mode="not_eq"><string>monospace</string></test>
581        <edit name="family" mode="append_last"><string>sans-serif</string></edit>
582</match>
583
584<!--
585        Load per-user customization file, but don't complain
586        if it doesn't exist
587-->
588<include ignore_missing="yes" prefix="xdg">fontconfig/fonts.conf</include>
589
590<!--
591        Load local customization files, but don't complain
592        if there aren't any
593-->
594<include ignore_missing="yes">conf.d</include>
595<include ignore_missing="yes">local.conf</include>
596
597<!--
598        Alias well known font names to available TrueType fonts.
599        These substitute TrueType faces for similar Type1
600        faces to improve screen appearance.
601-->
602<alias>
603        <family>Times</family>
604        <prefer><family>Times New Roman</family></prefer>
605        <default><family>serif</family></default>
606</alias>
607<alias>
608        <family>Helvetica</family>
609        <prefer><family>Arial</family></prefer>
610        <default><family>sans</family></default>
611</alias>
612<alias>
613        <family>Courier</family>
614        <prefer><family>Courier New</family></prefer>
615        <default><family>monospace</family></default>
616</alias>
617
618<!--
619        Provide required aliases for standard names
620        Do these after the users configuration file so that
621        any aliases there are used preferentially
622-->
623<alias>
624        <family>serif</family>
625        <prefer><family>Times New Roman</family></prefer>
626</alias>
627<alias>
628        <family>sans</family>
629        <prefer><family>Arial</family></prefer>
630</alias>
631<alias>
632        <family>monospace</family>
633        <prefer><family>Andale Mono</family></prefer>
634</alias>
635
636<--
637        The example of the requirements of OR operator;
638        If the 'family' contains 'Courier New' OR 'Courier'
639        add 'monospace' as the alternative
640-->
641<match target="pattern">
642        <test name="family" mode="eq">
643                <string>Courier New</string>
644        </test>
645        <edit name="family" mode="prepend">
646                <string>monospace</string>
647        </edit>
648</match>
649<match target="pattern">
650        <test name="family" mode="eq">
651                <string>Courier</string>
652        </test>
653        <edit name="family" mode="prepend">
654                <string>monospace</string>
655        </edit>
656</match>
657
658</fontconfig>
659
660
661  User configuration file
662
663   This is an example of a per-user configuration file that lives in
664   $XDG_CONFIG_HOME/fontconfig/fonts.conf
665
666 <?xml version="1.0"?>
667 <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
668 <!-- $XDG_CONFIG_HOME/fontconfig/fonts.conf for per-user font configuration -->
669 <fontconfig>
670
671 <!--
672         Private font directory
673 -->
674 <dir prefix="xdg">fonts</dir>
675
676 <!--
677         use rgb sub-pixel ordering to improve glyph appearance on
678         LCD screens.  Changes affecting rendering, but not matching
679         should always use target="font".
680 -->
681 <match target="font">
682         <edit name="rgba" mode="assign"><const>rgb</const></edit>
683 </match>
684 <!--
685         use WenQuanYi Zen Hei font when serif is requested for Chinese
686 -->
687 <match>
688         <!--
689                 If you don't want to use WenQuanYi Zen Hei font for zh-tw etc,
690                 you can use zh-cn instead of zh.
691                 Please note, even if you set zh-cn, it still matches zh.
692                 if you don't like it, you can use compare="eq"
693                 instead of compare="contains".
694         -->
695         <test name="lang" compare="contains">
696                 <string>zh</string>
697         </test>
698         <test name="family">
699                 <string>serif</string>
700         </test>
701         <edit name="family" mode="prepend">
702                 <string>WenQuanYi Zen Hei</string>
703         </edit>
704 </match>
705 <!--
706         use VL Gothic font when sans-serif is requested for Japanese
707 -->
708 <match>
709         <test name="lang" compare="contains">
710                 <string>ja</string>
711         </test>
712         <test name="family">
713                 <string>sans-serif</string>
714         </test>
715         <edit name="family" mode="prepend">
716                 <string>VL Gothic</string>
717         </edit>
718 </match>
719 </fontconfig>
720
721
722Files
723
724   fonts.conf contains configuration information for the fontconfig library
725   consisting of directories to look at for font information as well as
726   instructions on editing program specified font patterns before attempting
727   to match the available fonts. It is in XML format.
728
729   conf.d is the conventional name for a directory of additional
730   configuration files managed by external applications or the local
731   administrator. The filenames starting with decimal digits are sorted in
732   lexicographic order and used as additional configuration files. All of
733   these files are in XML format. The master fonts.conf file references this
734   directory in an <include> directive.
735
736   fonts.dtd is a DTD that describes the format of the configuration files.
737
738   $XDG_CONFIG_HOME/fontconfig/conf.d and ~/.fonts.conf.d is the conventional
739   name for a per-user directory of (typically auto-generated) configuration
740   files, although the actual location is specified in the global fonts.conf
741   file. please note that ~/.fonts.conf.d is deprecated now. it will not be
742   read by default in the future version.
743
744   $XDG_CONFIG_HOME/fontconfig/fonts.conf and ~/.fonts.conf is the
745   conventional location for per-user font configuration, although the actual
746   location is specified in the global fonts.conf file. please note that
747   ~/.fonts.conf is deprecated now. it will not be read by default in the
748   future version.
749
750   $XDG_CACHE_HOME/fontconfig/*.cache-* and ~/.fontconfig/*.cache-* is the
751   conventional repository of font information that isn't found in the
752   per-directory caches. This file is automatically maintained by fontconfig.
753   please note that ~/.fontconfig/*.cache-* is deprecated now. it will not be
754   read by default in the future version.
755
756Environment variables
757
758   FONTCONFIG_FILE is used to override the default configuration file.
759
760   FONTCONFIG_PATH is used to override the default configuration directory.
761
762   FC_DEBUG is used to output the detailed debugging messages. see
763   [1]Debugging Applications section for more details.
764
765   FONTCONFIG_USE_MMAP is used to control the use of mmap(2) for the cache
766   files if available. this take a boolean value. fontconfig will checks if
767   the cache files are stored on the filesystem that is safe to use mmap(2).
768   explicitly setting this environment variable will causes skipping this
769   check and enforce to use or not use mmap(2) anyway.
770
771See Also
772
773   fc-cat(1), fc-cache(1), fc-list(1), fc-match(1), fc-query(1)
774
775Version
776
777   Fontconfig version 2.11.1
778
779References
780
781   Visible links
782   1. file:///tmp/html-aJQR6X#DEBUG
783