source: x/installing/tuning-fontconfig.xml@ 06ec28b7

12.1 ken/TL2024 ken/tuningfonts lazarus plabs/newcss python3.11 rahul/power-profiles-daemon renodr/vulkan-addition trunk xry111/llvm18
Last change on this file since 06ec28b7 was 06ec28b7, checked in by Ken Moffat <ken@…>, 9 months ago

Tuning fontconfig - add a note about changed defaults.

This is a holding operation, it appears that e.g. arabic scripts
may need further tuning to suit a user's preference.

  • Property mode set to 100644
File size: 30.0 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
4 <!ENTITY % general-entities SYSTEM "../../general.ent">
5 %general-entities;
6]>
7
8<sect1 id="tuning-fontconfig">
9 <?dbhtml filename="tuning-fontconfig.html"?>
10
11
12 <title>Tuning Fontconfig</title>
13
14 <indexterm zone="tuning-fontconfig">
15 <primary sortas="g-tuning-fontconfig">Tuning Fontconfig</primary>
16 </indexterm>
17
18 <sect2 id='fontconfig-overview' xreflabel="Overview of Fontconfig">
19 <title>Overview of Fontconfig</title>
20
21<!-- do not add individual indexterm entries for items within this page, they
22 all belong in section G (others) and not only do they add noise in longindex,
23 the links all point to the top of the page. -->
24
25 <para>
26 If you only read text in English, and are happy with the common libre
27 fonts listed on the next page, you may never need to worry about the
28 details of how <application>fontconfig</application> works. But there are
29 many things which can be altered if they do not suit your needs.
30 </para>
31
32 <para>
33 Although this page is long, it barely scratches the surface and you will
34 be able to find many alternative views on the web (but please remember
35 that some things have changed over the years, for example the autohinter
36 is no longer the default). The aim here is to give you enough information
37 to understand the changes you are making.
38 </para>
39
40 </sect2>
41
42 <sect2 role="configuration" id="xft-font-protocol" xreflabel="The Xft Font Protocol">
43 <title>The Xft Font Protocol</title>
44
45 <para>
46 The Xft font protocol provides antialiased font rendering through
47 <application>freetype</application>, and fonts are controlled from the
48 client side using <application>fontconfig</application> (except for
49 <xref linkend="rxvt-unicode"/> which can use fonts listed in
50 <filename>~/.Xresources</filename>, and <xref linkend="abiword"/> which
51 only uses the specified font). The default search path is <filename
52 class="directory">/usr/share/fonts</filename> and <filename
53 class="directory">~/.local/share/fonts</filename>, although for the moment
54 the old and deprecated location <filename
55 class="directory">~/.fonts</filename> still works.
56 <application>Fontconfig</application> searches directories in its path
57 recursively and maintains a cache of the font characteristics in each
58 directory. If the cache appears to be out of date, it is ignored, and
59 information is fetched from the fonts themselves (that can take a few
60 seconds if you have a lot of fonts installed).
61 </para>
62
63 <para>
64 If you've installed <application>Xorg</application> in any prefix
65 other than <filename class="directory">/usr</filename>, any
66 <application>X</application> fonts were not installed in a
67 location known to <application>Fontconfig</application>. Symlinks were
68 <!-- fonts-misc-ethiopic installs an OTF directory ! -->
69 created from the <filename class="directory">OTF</filename> and <filename
70 class="directory">TTF</filename> <application>X</application> font
71 directories to <filename
72 class="directory">/usr/share/fonts/X11-{OTF,TTF}</filename>. This allows
73 <application>Fontconfig</application> to use the OpenType and TrueType
74 fonts provided by <application>X</application>, although many people will
75 prefer to use more modern fonts.
76 </para>
77
78 <para>
79 <application>Fontconfig</application> uses names to define fonts.
80 Applications generally use generic font names such as "Monospace", "Sans"
81 and "Serif". <application>Fontconfig</application> resolves these names
82 to a font that has all characters that cover the orthography of the
83 language indicated by the locale settings.
84 </para>
85
86 </sect2>
87
88 <sect2 role="configuration" id="useful-commands" xreflabel="Useful Commands">
89 <title>Useful Commands</title>
90
91 <para>
92 The following commands may be helpful when working with fontconfig:
93 </para>
94
95 <para>
96 <command>fc-list | less</command> : shows a list of all available fonts
97 (/path/to/filename: Font Name:style). If you installed a font more than
98 30 seconds ago but it does not show, then it or one of its directories is
99 not readable by your user.
100 </para>
101
102 <para>
103 <command>fc-match 'Font Name'</command> : tells you which font will
104 be used if the named font is requested. Typically you would use this to
105 see what happens if a font you have not installed is requested, but you
106 can also use it if the system is giving you a different font from
107 what you expected (perhaps because <application>fontconfig</application>
108 does not think that the font supports your language).
109 </para>
110
111 <para>
112 <command>fc-match -a 'Type' | less</command> : provides a list of all
113 fonts which can be used for that type (Monospace, Sans, Serif). Note that
114 in-extremis <application>fontconfig</application> will take a glyph from
115 any available font, even if it is not of the specified type, and unless it
116 knows about the font's type it will assume it is Sans.
117 </para>
118
119 <para>
120 If you wish to know which font will be used for a string of text
121 (i.e. one or more glyphs, preceded by a space), paste the following
122 command and replace the <literal>xyz</literal> by the text you care
123 about:
124 </para>
125
126 <para>
127 <command>FC_DEBUG=4 pango-view --font=monospace -t xyz | grep
128 family</command> : this requires <xref linkend="pango"/> and <xref
129 linkend="imagemagick"/> - it will invoke <xref linkend="display"/>
130 to show the text in a tiny window, and after closing that the last
131 line of the output will show which font was chosen. This is
132 particularly useful for CJK languages, and you can also pass a
133 language, e.g. PANGO_LANGUAGE=en;ja (English, then assume Japanese)
134 or just zh-cn (or other variants - 'zh' on its own is not valid).
135 </para>
136
137 </sect2>
138
139 <sect2 role="configuration" id="the-various-files" xreflabel="The various files">
140 <title>The various files</title>
141
142 <para>
143 The main files are in <filename class="directory">/etc/fonts/conf.d/</filename>,
144 which was intended to be a directory populated by symlinks to some of the files
145 in <filename class="directory">/usr/share/fontconfig/conf.avail/</filename>.
146 But many people, and some packages, create the files directly. Each file name
147 must be in the form of two digits, a dash, somename.conf and they are read in
148 sequence.
149 </para>
150
151 <para>
152 By convention, the numbers are assigned as follows:
153 </para>
154
155 <itemizedlist>
156 <listitem>
157 <para>
158 00-09 extra font directories
159 </para>
160 </listitem>
161 <listitem>
162 <para>
163 10-19 system rendering defaults (such as antialiasing)
164 </para>
165 </listitem>
166 <listitem>
167 <para>
168 20-29 font rendering options
169 </para>
170 </listitem>
171 <listitem>
172 <para>
173 30-39 family substitution
174 </para>
175 </listitem>
176 <listitem>
177 <para>
178 40-49 map family to generic type
179 </para>
180 </listitem>
181 <listitem>
182 <para>
183 50-59 load alternate config files
184 </para>
185 </listitem>
186 <listitem>
187 <para>
188 60-69 generic aliases, map generic to family
189 </para>
190 </listitem>
191 <listitem>
192 <para>
193 70-79 adjust which fonts are available
194 </para>
195 </listitem>
196 <listitem>
197 <para>
198 80-89 match target scan (modify scanned patterns)
199 </para>
200 </listitem>
201 <listitem>
202 <para>
203 90-99 font synthesis
204 </para>
205 </listitem>
206 </itemizedlist>
207
208 <para>
209 You can also have a personal <filename>fonts.conf</filename> in
210 $XDG_CONFIG_HOME (which is <filename
211 class="directory">~/.config/fontconfig/</filename>).
212 </para>
213
214 </sect2>
215
216 <sect2 role="configuration" id="rules-to-choose-a-font" xreflabel="The rules to choose a font">
217 <title>The rules to choose a font</title>
218
219 <para>
220 If the requested font is installed, and provided it contains the
221 codepoints <emphasis>required</emphasis> for the current language (in the
222 source, see the .orth files in the <filename
223 class="directory">fc-lang/</filename> directory), it will be used.
224 </para>
225
226 <note>
227 <para>
228 In fontconfig-2.14 the defaults were changed to Noto fonts. Some of the
229 detail here is out of date and will be revised.
230 </para>
231 </note>
232
233 <para>
234 However, if the document or page requested a font which is not installed
235 (or, occasionally, does not contain all the required codepoints) the
236 following rules come into play: First,
237 <filename>30-metric-aliases.conf</filename> is used to map aliases for
238 some fonts with the same metrics (same size, etc). After that, an
239 unknown font will be searched for in <filename>45-latin.conf</filename> -
240 if it is found it will be mapped as Serif or Monospace or Sans, otherwise
241 it will be assumed to be Sans. Then <filename>50-latin.conf</filename>
242 provides ordered lists of the fallbacks - <xref linkend="dejavu-fonts"/>
243 will be used if you installed them. Cyrillic and Greek appear to be
244 treated in the same way. There are similar files with a 65- prefix for
245 Persian and other non-latin writing systems. All of these files prefer
246 commercial fonts if they are present, although modern libre fonts are
247 often at least equal.
248 </para>
249
250 <para>
251 Since fontconfig-2.12.5, there is also generic family matching for some
252 emoji and math fonts, please see {45,60}-generic.conf.
253 </para>
254
255 <para>
256 In the rare cases where a font does not contain all the expected
257 codepoints, see 'Trial the First:' at <xref
258 linkend="I-stared-into-the-fontconfig"/> for the long details.
259 </para>
260
261 </sect2>
262
263 <sect2 role="configuration" id="hinting-and-antialiasing" xreflabel="Hinting and Anti-aliasing">
264 <title>Hinting and Anti-aliasing</title>
265
266 <para>
267 It is possible to change how, or if, fonts are hinted. The following
268 example file contains the default settings, but with comments. The
269 settings are very much down to the user's preferences and to the choice
270 of fonts, so a change which improves some pages may worsen others. The
271 preferred location for this file is:
272 <filename>~/.config/fontconfig/fonts.conf</filename>
273 </para>
274
275 <para>
276 To try out different settings, you may need to exit from Xorg and then
277 run <command>startx</command> again so that all applications use the new
278 settings. If you use GNOME, KDE, or LXQt, their desktops can override
279 these changes. To explore the possibilities, create a file for your user:
280 </para>
281
282<screen><userinput>mkdir -pv ~/.config/fontconfig &amp;&amp;
283cat > ~/.config/fontconfig/fonts.conf &lt;&lt; "EOF"
284<literal>&lt;?xml version='1.0'?&gt;
285&lt;!DOCTYPE fontconfig SYSTEM 'fonts.dtd'&gt;
286&lt;fontconfig&gt;
287
288 &lt;match target="font" &gt;
289 &lt;!-- autohint was the old automatic hinter when hinting was patent
290 protected, so turn it off to ensure any hinting information in the font
291 itself is used, this is the default --&gt;
292 &lt;edit mode="assign" name="autohint"&gt; &lt;bool&gt;false&lt;/bool&gt;&lt;/edit&gt;
293
294 &lt;!-- hinting is enabled by default --&gt;
295 &lt;edit mode="assign" name="hinting"&gt; &lt;bool&gt;true&lt;/bool&gt;&lt;/edit&gt;
296
297 &lt;!-- for the lcdfilter see https://www.spasche.net/files/lcdfiltering/ --&gt;
298 &lt;edit mode="assign" name="lcdfilter"&gt; &lt;const&gt;lcddefault&lt;/const&gt;&lt;/edit&gt;
299
300 &lt;!-- options for hintstyle:
301 hintfull: is supposed to give a crisp font that aligns well to the
302 character-cell grid but at the cost of its proper shape.
303
304 hintmedium: poorly documented, maybe a synonym for hintfull.
305 hintslight is the default: - supposed to be more fuzzy but retains shape.
306
307 hintnone: seems to turn hinting off.
308 The variations are marginal and results vary with different fonts --&gt;
309 &lt;edit mode="assign" name="hintstyle"&gt; &lt;const&gt;hintslight&lt;/const&gt;&lt;/edit&gt;
310
311 &lt;!-- antialiasing is on by default and really helps for faint characters
312 and also for 'xft:' fonts used in rxvt-unicode --&gt;
313 &lt;edit mode="assign" name="antialias"&gt; &lt;bool&gt;true&lt;/bool&gt;&lt;/edit&gt;
314
315 &lt;!-- subpixels are usually rgb, see
316 http://www.lagom.nl/lcd-test/subpixel.php --&gt;
317 &lt;edit mode="assign" name="rgba"&gt; &lt;const&gt;rgb&lt;/const&gt;&lt;/edit&gt;
318
319 &lt;!-- thanks to the Arch wiki for the lcd and subpixel links --&gt;
320 &lt;/match&gt;
321
322&lt;/fontconfig&gt;</literal>
323EOF</userinput></screen>
324
325 <para>
326 You will now need to edit the file in your preferred editor.
327 </para>
328
329 <para>
330 For more examples see the blfs-support thread which started at <ulink
331 url="https://lists.linuxfromscratch.org/sympa/arc/blfs-support/2016-09/msg00128.html">2016-09/00128</ulink>,
332 particularly <ulink
333 url="https://lists.linuxfromscratch.org/sympa/arc/blfs-support/2016-09/msg00137.html">2016-09/00137</ulink>,
334 and the original poster's preferred solution at <ulink
335 url="https://lists.linuxfromscratch.org/sympa/arc/blfs-support/2016-09/msg00147.html">2016-09/00147</ulink>.
336 There are other examples in <xref linkend="arch-fontconfig"/> and <xref
337 linkend="gentoo-fontconfig"/>.
338 </para>
339
340 </sect2>
341
342 <sect2 role="configuration" id="disabling-bitmap-fonts" xreflabel="Disabling Bitmap fonts">
343 <title>Disabling Bitmap Fonts</title>
344
345 <para>
346 In previous versions of BLFS, the ugly old Xorg bitmap fonts were
347 installed. Now, many people will not need to install any of them. But if
348 for some reason you have installed one or more bitmap fonts, you can
349 prevent them from being used by <application>fontconfig</application> by
350 creating the following file as the &root; user :
351 </para>
352
353<screen role="root"><userinput>cat > /etc/fonts/conf.d/70-no-bitmaps.conf &lt;&lt; "EOF"
354<literal>&lt;?xml version='1.0'?&gt;
355&lt;!DOCTYPE fontconfig SYSTEM 'fonts.dtd'&gt;
356&lt;fontconfig&gt;
357&lt;!-- Reject bitmap fonts --&gt;
358 &lt;selectfont&gt;
359 &lt;rejectfont&gt;
360 &lt;pattern&gt;
361 &lt;patelt name="scalable"&gt;&lt;bool&gt;false&lt;/bool&gt;&lt;/patelt&gt;
362 &lt;/pattern&gt;
363 &lt;/rejectfont&gt;
364 &lt;/selectfont&gt;
365&lt;/fontconfig&gt;</literal>
366EOF</userinput></screen>
367
368 </sect2>
369
370 <sect2 role="configuration" id="adding-extra-directories" xreflabel="Adding extra font directories">
371 <title>Adding extra font directories</title>
372
373 <para>
374 Normally, system fonts and user fonts are installed in directories beneath
375 the locations specified in <xref linkend="xft-font-protocol"/> and there
376 is no obvious reason to put them elsewhere. However, a full BLFS install
377 of <xref linkend="texlive"/> puts many fonts in <filename
378 class="directory">/opt/texlive/&texlive-year;/texmf-dist/fonts/</filename>
379 in the <filename class="directory">opentype/</filename> and <filename
380 class="directory">truetype/</filename> subdirectories. Although pulling in
381 all of these files may appear useful (it allows you to use them in non
382 <application>TeX</application> programs), there are several problems with
383 such an approach:
384 </para>
385
386 <orderedlist>
387 <listitem>
388 <para>
389 There are hundreds of files, which makes selecting fonts difficult.
390 </para>
391 </listitem>
392 <listitem>
393 <para>
394 Some of the files do odd things, such as displaying semaphore flags
395 instead of ASCII letters, or mapping cyrillic codepoints to character
396 forms appropriate to Old Church Slavonic instead of the expected
397 current shapes: fine if that is what you need, but painful for normal
398 use.
399 </para>
400 </listitem>
401 <listitem>
402 <para>
403 Several fonts have multiple sizes and impenetrable short names, which
404 both make selecting the correct font even more difficult.
405 </para>
406 </listitem>
407 <listitem>
408 <para>
409 When a font is added to CTAN, it is accompanied by TeX packages to use
410 it in the old engines (<application>xelatex</application> does not
411 normally need this), and then the version is often frozen whilst the
412 font is separately maintained. Some of these fonts such as <xref
413 linkend="dejavu-fonts"/> are probably already installed on your BLFS
414 system in a newer version, and if you have multiple versions of a font
415 it is unclear which one will be used by
416 <application>fontconfig</application>.
417 </para>
418 </listitem>
419 </orderedlist>
420
421 <para>
422 However, it is sometimes useful to look at these fonts in non-TeX
423 applications, if only to see whether you wish to install a current
424 version. If you have installed all of <application>texlive</application>,
425 the following example will make one of the Arkandis Open Type fonts
426 available to other applications, and all three of the ParaType TrueType
427 fonts. Adjust or repeat the lines as desired, to either make all the
428 <filename class="directory">opentype/</filename> or <filename
429 class="directory">truetype</filename>fonts available, or to select
430 different font directories. As the <systemitem
431 class="username">root</systemitem> user:
432 </para>
433
434<screen role="root"><userinput>cat > /etc/fonts/conf.d/09-texlive.conf &lt;&lt; "EOF"
435<literal>&lt;?xml version='1.0'?&gt;
436&lt;!DOCTYPE fontconfig SYSTEM 'fonts.dtd'&gt;
437&lt;fontconfig&gt;
438 &lt;dir&gt;/opt/texlive/&texlive-year;/texmf-dist/fonts/opentype/arkandis/berenisadf&lt;/dir&gt;
439 &lt;dir&gt;/opt/texlive/&texlive-year;/texmf-dist/fonts/truetype/paratype&lt;/dir&gt;
440&lt;/fontconfig&gt;</literal>
441EOF</userinput></screen>
442
443 <para>
444 If you do this, remember to change all instances of the year in that file
445 when you upgrade <application>texlive</application> to a later release.
446 </para>
447
448 </sect2>
449
450 <sect2 role="configuration" id="preferring-certain-fonts" xreflabel="Preferring certain fonts">
451 <title>Preferring certain fonts</title>
452
453 <para>
454 There are many reasons why people may wish to have pages which specify a
455 particular font use a different font, or prefer specific fonts in
456 Monospace or Sans or Serif. As you will expect, there a number of
457 different ways of achieving this.
458 </para>
459
460 <bridgehead renderas="sect3" id="fontconfig-user-docs"
461 xreflabel="fontconfig-user-docs">Fontconfig user docs</bridgehead>
462
463 <para>
464 <application>Fontconfig</application> installs user documentation that
465 includes an example 'User configuration file' which among other things
466 prefers <xref linkend="wenquanyi-zenhei"/> (a Sans font) if a
467 <emphasis>Serif</emphasis> font is requested for Chinese (this part
468 might be anachronistic unless you have non-free Chinese fonts, because
469 in <filename>65-nonlatin.conf</filename> this font is already among the
470 preferred fonts when Serif is specified for Chinese) and to prefer the
471 modern <xref linkend="VLGothic"/> font if a Sans font is specified on a
472 Japanese page (otherwise a couple of other fonts would be preferred if
473 they have been installed).
474 </para>
475
476 <para>
477 If you have installed the current version, the user documentation is
478 available in HTML, PDF, and text versions at <filename
479 class="directory">/usr/share/doc/fontconfig-&fontconfig-version;/</filename>
480 : change the version if you installed a different one.
481 </para>
482
483 <bridgehead renderas="sect3" id="prefer-a-specific-font"
484 xreflabel="fontconfig-prefer-specific-font">Prefer a specific font</bridgehead>
485
486 <para>
487 As an example, if for some reason you wished to use the <ulink
488 url="https://www.fontsquirrel.com/fonts/nimbus-roman-no9-l">Nimbus Roman
489 No9 L</ulink> font wherever Times New Roman is referenced (it is
490 metrically similar, and preferred for Times Roman, but the Serif font
491 from <xref linkend="liberation-fonts"/> will be preferred for the Times
492 <emphasis>New</emphasis> Roman font if installed), as an individual user
493 you could install the font and then create the following file:
494 </para>
495
496<screen><userinput>mkdir -pv ~/.config/fontconfig/conf.d &amp;&amp;
497cat > ~/.config/fontconfig/conf.d/35-prefer-nimbus-for-timesnew.conf &lt;&lt; "EOF"
498<literal>&lt;?xml version='1.0'?&gt;
499&lt;!DOCTYPE fontconfig SYSTEM 'fonts.dtd'&gt;
500&lt;fontconfig&gt;
501&lt;!-- prefer Nimbus Roman No9 L for Times New Roman as well as for Times,
502 without this Tinos and Liberation Serif take precedence for Times New Roman
503 before fontconfig falls back to whatever matches Times --&gt;
504 &lt;alias binding="same"&gt;
505 &lt;family&gt;Times New Roman&lt;/family&gt;
506 &lt;accept&gt;
507 &lt;family&gt;Nimbus Roman No9 L&lt;/family&gt;
508 &lt;/accept&gt;
509 &lt;/alias&gt;
510&lt;/fontconfig&gt;</literal>
511EOF</userinput></screen>
512
513 <para>
514 This is something you would normally do in an individual user's
515 settings, but the file in this case has been prefixed '35-' so that it
516 could, if desired, be used system-wide in <filename
517 class="directory">/etc/fonts/conf.d/</filename>.
518 </para>
519
520 <bridgehead renderas="sect3" id="prefer-chosen-CJK-fonts"
521 xreflabel="Prefer chosen CJK fonts">Prefer chosen CJK fonts</bridgehead>
522
523 <para>
524 The following example of a local configuration (i.e. one that applies
525 for all users of the machine) does several things:
526 </para>
527
528 <orderedlist>
529 <listitem>
530 <para>
531 If a Serif font is specified, it will prefer the <xref
532 linkend="UMing"/> variants, so that in the zh-cn, zh-hk and zh-tw
533 languages things should look good (also zh-sg which actually uses
534 the same settings as zh-cn) <emphasis>without</emphasis> affecting
535 Japanese.
536 </para>
537 </listitem>
538 <listitem>
539 <para>
540 It prefers the Japanese <xref linkend="IPAex"/> if they have been
541 installed (although <xref linkend="VLGothic"/> will take precedence
542 for (Japanese) Sans if it has also been installed.
543 </para>
544 </listitem>
545 <listitem>
546 <para>
547 Because <xref linkend="wenquanyi-zenhei"/> covers Korean Hangul
548 glyphs and is also preferred for Serif in
549 <filename>65-nonlatin.conf</filename>, if installed it will be used
550 by default for Korean Serif. To get a proper Serif font, the
551 UnBatang font is specified here - change that line if you installed
552 a different Serif font from the choice of <xref
553 linkend="Korean-fonts"/>.
554 </para>
555 </listitem>
556 <listitem>
557 <para>
558 The Monospace fonts are forced to the preferred Sans fonts. If the
559 text is in Korean then <xref linkend="wenquanyi-zenhei"/> will be
560 used.
561 </para>
562 </listitem>
563 </orderedlist>
564
565 <para>
566 In a non-CJK locale, the result is that suitable fonts will be used for
567 all variants of Chinese, Japanese and Hangul Korean. All other languages
568 should already work if a font is present. As the <systemitem
569 class="username">root</systemitem> user:
570 </para>
571
572<screen role="root"><userinput>cat > /etc/fonts/local.conf &lt;&lt; "EOF"
573<literal>&lt;?xml version='1.0'?&gt;
574&lt;!DOCTYPE fontconfig SYSTEM 'fonts.dtd'&gt;
575&lt;fontconfig&gt;
576 &lt;alias&gt;
577 &lt;family&gt;serif&lt;/family&gt;
578 &lt;prefer&gt;
579 &lt;family&gt;AR PL UMing&lt;/family&gt;
580 &lt;family&gt;IPAexMincho&lt;/family&gt;
581 &lt;!-- WenQuanYi is preferred as Serif in 65-nonlatin.conf,
582 override that so a real Korean font can be used for Serif --&gt;
583 &lt;family&gt;UnBatang&lt;/family&gt;
584 &lt;/prefer&gt;
585 &lt;/alias&gt;
586 &lt;alias&gt;
587 &lt;family&gt;sans-serif&lt;/family&gt;
588 &lt;prefer&gt;
589 &lt;family&gt;WenQuanYi Zen Hei&lt;/family&gt;
590 &lt;family&gt;VL Gothic&lt;/family&gt;
591 &lt;family&gt;IPAexGothic&lt;/family&gt;
592 &lt;/prefer&gt;
593 &lt;/alias&gt;
594 &lt;alias&gt;
595 &lt;family&gt;monospace&lt;/family&gt;
596 &lt;prefer&gt;
597 &lt;family&gt;VL Gothic&lt;/family&gt;
598 &lt;family&gt;IPAexGothic&lt;/family&gt;
599 &lt;family&gt;WenQuanYi Zen Hei&lt;/family&gt;
600 &lt;/prefer&gt;
601 &lt;/alias&gt;
602&lt;/fontconfig&gt;</literal>
603EOF</userinput></screen>
604
605 </sect2>
606
607
608 <sect2 role="configuration" id="editing-old-style-conf-files"
609 xreflabel="Editing Old-Style conf files">
610 <title>Editing Old-Style conf files</title>
611
612 <para>
613 Some fonts, particularly Chinese fonts, ship with conf files which can be
614 installed in <filename class="directory">/etc/fonts/conf.d</filename>.
615 However, if you do that and then use a terminal to run any command which
616 uses <application>fontconfig</application> you may see error messages such
617 as :
618 </para>
619
620 <para>
621 <literal>Fontconfig warning: "/etc/fonts/conf.d/69-odofonts.conf", line
622 14: Having multiple &lt;family&gt; in &lt;alias&gt; isn't supported and
623 may not work as expected</literal>.
624 </para>
625
626 <para>
627 In practice, these old rules do not work. For non-CJK users,
628 <application>fontconfig</application> will usually do a good job
629 <emphasis>without</emphasis> these rules. Their origin dates back to when
630 CJK users needed handcrafted bitmaps to be legible at small sizes, and
631 those looked ugly next to antialiased Latin glyphs - they preferred to
632 use the same CJK font for the Latin glyphs. There is a side-effect of
633 doing this : the (Serif) font is often also used for Sans, and in such a
634 situation the (English) text in <application>Gtk</application> menus will
635 use this font - compared to system fonts, as well as being serif it is
636 both faint and rather small. That can make it uncomfortable to read.
637 </para>
638
639 <para>
640 Nevertheless, these old conf files can be fixed if you wish to use them.
641 The following example is the first part of
642 <filename>64-arphic-uming.conf</filename> from <xref linkend="UMing"/> -
643 there are many more similar items which also need changing :
644 </para>
645
646 <para>
647 <literallayout>
648 &lt;match target="pattern"&gt;
649 &lt;test qual="any" name="lang" compare="contains"&gt;
650 &lt;string&gt;zh-cn&lt;/string&gt;
651 &lt;string&gt;zh-sg&lt;/string&gt;
652 &lt;/test&gt;
653 &lt;test qual="any" name="family"&gt;
654 &lt;string&gt;serif&lt;/string&gt;
655 &lt;/test&gt;
656 &lt;edit name="family" mode="prepend" binding="strong"&gt;
657 &lt;string&gt;AR PL UMing CN&lt;/string&gt;
658 &lt;/edit&gt;
659 &lt;/match&gt;</literallayout>
660 </para>
661
662 <para>
663 The process to correct this is straightforward but tedious - for every
664 item which produces an error message, using your editor (as the &root;
665 user), edit the installed
666 file to repeat the whole block as many times as there are multiple
667 variables, then reduce each example to have only one of them. You may
668 wish to work on one error at a time, save the file after each fix, and
669 from a separate term run a command such as <command>fc-list 2>&amp;1 |
670 less</command> to see that the fix worked. For the block above, the fixed
671 version will be :
672 </para>
673
674 <para>
675 <literallayout>
676 &lt;match target="pattern"&gt;
677 &lt;test qual="any" name="lang" compare="contains"&gt;
678 &lt;string&gt;zh-cn&lt;/string&gt;
679 &lt;/test&gt;
680 &lt;test qual="any" name="family"&gt;
681 &lt;string&gt;serif&lt;/string&gt;
682 &lt;/test&gt;
683 &lt;edit name="family" mode="prepend" binding="strong"&gt;
684 &lt;string&gt;AR PL UMing CN&lt;/string&gt;
685 &lt;/edit&gt;
686 &lt;/match&gt;
687 &lt;match target="pattern"&gt;
688 &lt;test qual="any" name="lang" compare="contains"&gt;
689 &lt;string&gt;zh-sg&lt;/string&gt;
690 &lt;/test&gt;
691 &lt;test qual="any" name="family"&gt;
692 &lt;string&gt;serif&lt;/string&gt;
693 &lt;/test&gt;
694 &lt;edit name="family" mode="prepend" binding="strong"&gt;
695 &lt;string&gt;AR PL UMing CN&lt;/string&gt;
696 &lt;/edit&gt;
697 &lt;/match&gt;</literallayout>
698 </para>
699
700 </sect2>
701
702
703 <sect2 role="configuration" id="see-also" xreflabel="See Also">
704 <title>See Also</title>
705
706 <bridgehead renderas="sect3" id="I-stared-into-the-fontconfig"
707 xreflabel="I stared into the fontconfig">I stared into the fontconfig ...</bridgehead>
708
709 <para>
710 The blog entries by <ulink
711 url="https://eev.ee/blog/2015/05/20/i-stared-into-the-fontconfig-and-the-fontconfig-stared-back-at-me/">Eevee</ulink>
712 are particularly useful if <application>fontconfig</application> does not
713 think your chosen font supports your language, and for preferring some
714 non-MS Japanese fonts when an ugly MS font is already installed.
715 </para>
716
717 <bridgehead renderas="sect3" id="arch-fontconfig"
718 xreflabel="Fontconfig in the Arch wiki">Fontconfig in the Arch wiki</bridgehead>
719
720 <para>
721 Arch has a lot of information in its wiki at <ulink
722 url="https://wiki.archlinux.org/index.php/font_configuration">font_configuration</ulink>.
723 </para>
724
725 <bridgehead renderas="sect3" id="gentoo-fontconfig"
726 xreflabel="Fontconfig in the Gentoo wiki">Fontconfig in the Gentoo wiki</bridgehead>
727
728 <para>
729 Gentoo has some information in its wiki at <ulink
730 url="https://wiki.gentoo.org/wiki/Fontconfig">Fontconfig</ulink> although
731 a lot of the details (what to enable, and Infinality) are specific to
732 Gentoo.
733 </para>
734
735 </sect2>
736
737</sect1>
Note: See TracBrowser for help on using the repository browser.