fontconfig-user.txt revision c9710b42
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 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.10.93 778 779References 780 781 Visible links 782 1. file:///tmp/html-9Dznk2#DEBUG 783