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