Si vous lisez des textes seulement en anglais et êtes contents avec les polices libres génériques listés dans la page suivante, vous pourriez n'avoir jamais besoin de vous occuper des détails de fonctionnement de Fontconfig. Mais il y a plein de choses qui peuvent être modifiées si elles ne vous conviennent pas.
Bien que cette page soit longue, elle ne fait qu'effleurer la surface et vous pourrez trouver plein d'alternatives sur le web (mais rappelez-vous que certaines choses changent au fil des ans, par exemple l'autohinter n'est plus utilisé par défaut). Le but est ici de vous donner assez d'information pour comprendre les changements que vous faîtes, pourquoi ils ne fonctionnent pas toujours et comment identifier des informations en ligne qui ne sont plus d'actualité.
Malheureusement, une partie de la terminologie est ambiguë (p. ex. « font face » (fonte) peut signifie un nom connu de Fontconfig, ou les variations normales, condensées, etc d'une police) et « style » peut être utilisé pour différencier les polices « ordinaires » et « italiques » ou pour décrire certaines classes de polices à empattement.
Les liens suivants aident la navigation dans cette page.
Le protocole de police Xft fournit un rendu de polices anti-crénelé
à travers freetype et les polices
sont contrôlées depuis le côté client avec Fontconfig (sauf pour rxvt-unicode-9.31 qui peut utiliser les
polices listées dans ~/.Xresources
et
AbiWord-3.0.5 qui n'utilise que les polices
spécifiées). Le chemin de recherche par défaut est /usr/share/fonts
et ~/.local/share/fonts
bien que pour le moment le
vieil emplacement obsolète ~/.fonts
fonctionne toujours. Fontconfig
recherche récursivement dans ces répertoires et maintient un cache
des caractéristiques des polices dans chaque répertoire. Si le
cache a l'air périmé, il est ignoré et les informations sont
retrouvées depuis les polices elles-mêmes (ce qui peut prendre
quelques secondes si vous avez installé beaucoup de polices).
Si vous avez installé Xorg dans un
autre préfixe que /usr
, les polices
X n'ont pas été installées dans un
répertoire connu de Fontconfig.
Des liens symboliques ont été créés entre les répertoires de
polices OTF
et TTF
de X et
/usr/share/fonts/X11-{OTF,TTF}
dans
les polices Xorg. Cela permet à Fontconfig d'utiliser les polices OpenType et
TrueType fournies par X, même si
beaucoup de monde préférera utiliser des polices plus modernes.
Fontconfig utilise les noms pour définir les polices. Les applications utilisent en général des noms de polices génériques comme « Monospace », « Sans » et « Serif ». Fontconfig résout ces noms en une police dont les caractères couvrent toutes les possibilités de la langue indiquée par les paramètres régionaux.
Les commandes suivantes peuvent être utiles lorsque vous travaillez avec Fontconfig, en particulier si vous souhaitez remplacer les polices qui seront choisies.
fc-list | less : montre la liste des polices disponible (/chemin/vers/fichier : Nom de la police:style). Si vous avez installé une police et qu'elle n'apparaît pas, alors le répertoire qui la contient n'est pas lisible par votre utilisateur.
fc-match 'Font Name' : indique quelle police sera utilisée si la police de ce nom est demandée. Généralement vous l'utiliserez pour voir ce qui arrive si une police non-installée est demandée, mais vous pouvez aussi l'utiliser si le système utilise une police différente de ce à quoi vous vous attendiez (peut-être parce que Fontconfig ne pense pas que la police supporte votre langue).
fc-match Type
: affiche
les polices qui seront utilisées dans la langue actuelle pour ce
TYPE
(Monospace, Sans,
Serif (la lettre majuscule au début est
facultative)). Si cette police n'a pas un code de
point, Fontconfig peut prendre un
glyphe d'une autre police disponible, même si elle n'est pas du
type spécifié. Toute autre valeur de TYPE
sera considérée comme du Sans.
fc-match 'Serif :lang=ja:weight=bold' vous indiquera la police et la graisse utilisée pour le texte japonais en gras. Elle ne signifie pas que la police indiquée pourra nécessairement afficher les idéogrammes japonais, et donc une police secondaire pourrait être utilisée, ou certains glyphes pourraient manquer. Pour les codes de langue, utilisez les valeurs ISO-639 comme « fr », « ja » ou « zh-cn ». Remarquez qu'une valeur non reconnue comme simplement « zh » ne renverra aucune correspondance. Pour illustrer le fonctionnement des polices par défaut, sur un système où les polices Noto Sans Mono et DejaVu Sans Mono sont installées, fc-match 'monospace :lang=en montre que Noto Sans Mono sera utilisée, mais si la langue change en « ar » (arabe) DejaVu Sans sera utilisée.
Si vous voulez déterminer si un fichier de police a des hintings
(de nombreuses polices anciennes n'en ont pas à cause d'un brevet),
utilisez fc-query /chemin/vers/fichier-de-police
|
grep 'fonthashint:' : cela montrera
« True(s) » ou « False(s) ». Certaines polices
récentes avec des versions TTF et OTF auront le hinting dans le
fichier TTF.
Si vous souhaitez connaître quelle police sera utilisée pour une
chaîne de caractères (c'est-à-dire un ou plusieurs glyphes, séparés
par un espace), copiez la commande suivante et remplacez
xyz
par le texte qui vous préoccupe.
FC_DEBUG=4 pango-view --font=monospace -t xyz | grep family : ceci requiert Pango-1.51.2 et ImageMagick-7.1.1-28 - qui va invoquer display pour afficher le texte dans une petite fenêtre, et à la fermeture, la dernière ligne de la sortie montrera quelle police d'écriture a été utilisée. C'est particulièrement pratique pour les langues CJK, et vous pouvez également passer un langage, ex: PANGO_LANGUAGE=en;ja (Anglais, puis présume Japonais) ou simplement zh-cn (ou d'autres variantes comme zh-sg ou zh-tw).
Les fichiers principaux sont dans /etc/fonts/conf.d/
. C'est un répertoire prévu
pour être rempli de liens symboliques vers des fichiers dans
/usr/share/fontconfig/conf.avail/
,
mais de nombreuses personnes, et quelques paquets, créent les
fichiers directement. Chaque fichier doit être nommé comme
suit : deux chiffres, un tiret, nom.conf et ils sont lus
séquentiellement.
Par convention, les nombres sont assignés comme suit :
00-09 répertoires de polices supplémentaires
10-19 rendus systèmes par défaut (comme l'anti-crénelage)
20-29 options de rendu des polices
30-39 substitution par famille
40-49 correspondance entre famille et type générique
50-59 chargement des fichiers de configuration alternatifs
60-69 alias génériques, fait correspondre les noms générique à la famille
70-79 adapte quelles polices sont disponibles
80-89 correspond aux numérisations (modification des modèles numérisés)
90-99 synthèse de police
Vous pouvez avoir aussi un fichier fonts.conf
personnel dans $XDG_CONFIG_HOME
(c'est-à-dire ~/.config/fontconfig/
).
Si la police demandée est installée, et à condition qu'elle
contienne le point de code requis pour la langue actuelle (dans les
sources, voir les fichiers .orth dans le répertoire fc-lang/
), elle sera utilisée.
Cependant, si le document ou la page demande une police qui n'est
pas installée (ou, parfois, ne contient pas tous les points de
codes requis) les règles suivantes sont appliquées : en
premier, 30-metric-aliases.conf
est
utilisé pour assigner des alias à certaines polices avec la même
métrique (même taille, etc). Remarquez qu'il y a à la fois des
alias forts et faibles si bien que les alias pour une forme comme
Helvetica ou times New Roman peuvent être satisfaits par d'autres
style, c.-à-d. tous les alias d'Arial ou Times dans ces exemples.
Des exemples de polices latines avec les mêmes métriques se
trouvent dans les PDF « Substitutes » de zarniwhoop.uk.
Ensuite, une police inconnue sera recherchée dans 45-latin.conf
: « Latin » couvre
le cyrillique et le grec, et maintenant aussi les polices pour
l'interface système qui sont utilisées pour les messages de
l'interface utilisateur dans d'autres systèmes d'écriture. Si la
police est trouvée elle correspondra à serif, sans-serif,
monospace, fantasy, cursive ou system-ui. Autrement,
49-sansserif.conf la considérera comme Sans.
Ensuite 60-latin.conf
fournit des
listes ordonnées de polices par défaut — polices
Noto sera utilisée si vous les avez installées. Le cyrillique
et le grec ont l'air d'être traités de la même manière. Tous ces
fichiers préfèrent les polices commerciales si elles sont
présentes, bien que les polices libres modernes sont souvent au
moins égales. Enfin, si un code de point n'est toujours pas trouvé
il peut être récupéré de n'importe quelle police du système
disponible. Les détails suivants mentionnent seulement les polices
disponibles librement.
Les polices perses sont traitées dans 65-fonts-persian.conf
. Il semble que toutes les
polices listées soient commerciales. Utiliser des polices qui
prennent en charge le perse (qui a sa propre variante de l'alphabet
arabe et ses propres styles de police) n'est pas dans les
compétences des auteurs de BLFS.
Tous les autres systèmes d'écriture pour lesquels Fontconfig a une préférence (les écritures
CJK, indiennes) sont traitées dans 65-nonlatin.conf
. Elles sont également groupées
en Serif, Sans-Serif, Monospace. Parmi les polices libres,
WenQuanYi Zen Hei (Sans Pan-CJK) apparaît en premier pour Serif et
Sans. Ainsi, si vous l'installez comme police par défaut mais
voulez utiliser d'autres polices pour le japonais ou le coréen vous
devrez définir une préférence. De même, l'ancienne police
fireflysung Serif est listée dans les polices Sans.
Après les polices Pan-CJK et chinoises viennent plusieurs polices japonaises puis plusieurs polices coréennes (partagées correctement entre Sans et Serif). Enfin viennent les diverses familles Lohit indic (un fichier de police par écriture), partagées entre Sans et Serif.
Les polices à chasse fixe listées dans 65-nonlatin.conf
ne contiennent pas WenQuanYi Zen
Hei bien qu'elle soit disponible comme solution de repli si elle
est installée. Plusieurs polices gothiques japonaise sont listées,
suivies par AR PL KaitiM GB (une police « pinceau »
zh-sc), des polices AR PL Serif pour zh-sc (SungtiL) et zh-tw
(Mingti2L), des polices coréennes Sans et diverses familles
indiennes Lohit.
Pour les polices d'interface, diverses polices Noto Sans UI sont les seules polices indiquées.
Les diverses polices Noto CJK ne se trouvent pas parmi les polices listées, sans doute parce que les développeurs de RedHat préfèrent d'autres polices. Elles proposent maintenant de nombreuses variantes et la plupart des utilisateurs qui les utilise n'installeront pas les autres polices CJK.
Avant Fontconfig-2.14, la première famille de polices latines était Bitsream Vera. En pratique elle était rarement utilisée parce qu'elle avait une mauvaise couverture. Après cela, DejaVu était la deuxième famille préférée, et on recommandait de l'installer. Cela a maintenant changé, Bitstream Vera a été remplacé par les polices Noto correspondantes (Serif, Sans, Sans Mono), donc elles seront préférées si elles sont installées, suivies par DejaVu.
Pour les polices à empattement, Times New Roman pourrait avoir été un alias pour liberation Serif ou tinos, et Times pour TeX Gyre Termes, donc bien que ces polices ne soient pas libres, des polices à métrique compatible peuvent être utilisées. En ignorant les autres polices non libres, l'ordre suivant pour serif est : Times New Roman, Luxi Serif, Nimbus Roman No9 L et Times. En pratique, cela signifie que ces polices à la fin de la liste seront peu probablement utilisées à moins qu'une page web ne les demande.
Pour les sans-serif, l'ordre suivant est tout ce qui correspond à Arial, Luxi Sans, Numbus Sans L et tout ce qui correspond à Helvetica.
Les alternatives restantes pour les polices à chasse fixe sont Incosolata, tout ce qui correspond à Courier New, Luxi Mono, Nimbus Mono et tout ce qui correspond à Courier.
Pour les polices fantaisistes, il n'y a aucune police libre, donc Fontconfig utilisera par défaut une police sans-serif.
Pour les polices cursives, la seule police libre est TeX Gyre Chorus qui est un alias de ITC Zapf chancery, sinon Fontconfig utilisera aussi par défaut une police sans-serif.
La catégorie system-ui est différente. Elle est dédiée aux messages de l'interface et certaines écritures ont besoin de versions spéciales pour rentrer dans l'espace disponible. Pour les polices latines, grecques et cyrilliques une police Sans ordinaire devrait faire l'affaire sans problème. Cependant, la première police préférée est Cantarell, suivie de Noto Sans UI. Cantarelle a commencé comme police sans-serif latine et a été forkée dans Gnome sous le même nom mais ils ne fournissent que les sources. Les polices Noto Sans UI sont pour les autres langues.
Depuis Fontconfig-2.12.5, il y a aussi des règles de familles génériques pour certaines polices d'emoji et de maths, consultez {45,60}-generic.conf.
Dans les rares cas ou une police ne contient pas tous les points de codes attendus, voir 'Essayez en premier :' dans I stared into the fontconfig pour plus de détails.
Il est possible de changer la façon dont, ou si, les polices sont
hintées. L'exemple de fichier suivant contient les paramètres par
défaut, mais avec des commentaires. Les paramètres sont laissées
aux préférences de l'utilisateur et au choix de police, de sorte
qu'un changement qui améliore certaines pages peut en aggraver
d'autres. L'endroit préférable pour ce fichier est :
~/.config/fontconfig/fonts.conf
Pour tester différents paramétrages, vous aurez peut être besoin de sortir de Xorg et ensuite relancer startx pour que toutes les applications utilisent le nouveau paramétrage. Il y a plusieurs manières de réécrire les paramètres de fontconfig, consultez Éléments qui peuvent contourner Fontconfig ci-dessous pour plus de détails. Pour explorer les possibilités, créez un fichier pour votre utilisateur :
mkdir -pv ~/.config/fontconfig &&
cat > ~/.config/fontconfig/fonts.conf << "EOF"
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
<match target="font" >
<!-- autohint was the old automatic hinter when hinting was patent
protected, so turn it off to ensure any hinting information in the font
itself is used, this is the default -->
<edit mode="assign" name="autohint"> <bool>false</bool></edit>
<!-- hinting is enabled by default -->
<edit mode="assign" name="hinting"> <bool>true</bool></edit>
<!-- for the lcdfilter see https://www.spasche.net/files/lcdfiltering/ -->
<edit mode="assign" name="lcdfilter"> <const>lcddefault</const></edit>
<!-- options for hintstyle:
hintfull: is supposed to give a crisp font that aligns well to the
character-cell grid but at the cost of its proper shape. However, anything
using Pango >= 1.44 will not support full hinting, Pango now uses harfbuzz
for hinting. Apps which use Skia (e.g. Chromium, Firefox) should not be
affected by this.
hintmedium: is reported to be broken.
hintslight is the default: - supposed to be more fuzzy but retains shape.
hintnone: seems to turn hinting off.
The variations are marginal and results vary with different fonts -->
<edit mode="assign" name="hintstyle"> <const>hintslight</const></edit>
<!-- antialiasing is on by default and really helps for faint characters
and also for 'xft:' fonts used in rxvt-unicode -->
<edit mode="assign" name="antialias"> <bool>true</bool></edit>
<!-- subpixels are usually rgb, see
http://www.lagom.nl/lcd-test/subpixel.php -->
<edit mode="assign" name="rgba"> <const>rgb</const></edit>
<!-- thanks to the Arch wiki for the lcd and subpixel links -->
</match>
</fontconfig>
EOF
Vous devrez maintenant modifier le fichier avec votre éditeur préféré. Beaucoup de ces paramètres font des différences subtiles et le résultat peut dépendre des polices que vous utilisez.
Si le hinting est activé, il est fait par FreeType. Depuis FreeType-2.7, l'interpréteur TrueType par défaut est la v40. Le moteur de hinting v35 original peut être activé par une variable d'environnement, mais ce n'est véritablement approprié que pour les polices TTF originales de Microsoft (Arial, etc). Le moteur v38 (Infinality) n'est pas construit par défaut et toutes les options pour le régler ont été supprimées. Pour les détails complets, consultez subpixel-hinting (en résumé : il n'y a PAS de hinting sous-pixel, le code ignore simplement toutes les instructions de hinting horizontales).
Xorg suppose que les écrans ont 96 points par pouce (DPI). La plupart des écrans LCD en sont proches, mais certaines personnes détectent des problèmes de couleur si leur écran diverge de cette taille. Consultez calc-dpi.
Si vous avez un écran haute densité (souvent appelé « 4K » ou supérieur) vous devrez probablement utiliser des tailles de police plus grandes et vous aurez avantage à désactiver le hinting.
Pour plus d'exemples, voir les fils de discussion de blfs-support qui ont débuté le 2016-09/00128, en particulier 2016-09/00137, et la solution préférée de l'auteur du message initial 2016-09/00147. Il y a d'autres exemples dans Fontconfig dans le wiki Arch et Fontconfig dans le wiki Gentoo.
Dans les versions précédentes de BLFS, les vieilles polices laides
de Xorg étaient installées. Maintenant, beaucoup de personnes n'ont
plus besoin d'installer aucune d'entre elles. Mais si pour une
raison ou une autre vous avez installé une ou plusieurs polices
bitmap, vous pouvez empêcher leur utilisation par Fontconfig en créant le fichier suivant en
tant qu'utilisateur root
:
cat > /etc/fonts/conf.d/70-no-bitmaps.conf << "EOF"
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
<!-- Reject bitmap fonts -->
<selectfont>
<rejectfont>
<pattern>
<patelt name="scalable"><bool>false</bool></patelt>
</pattern>
</rejectfont>
</selectfont>
</fontconfig>
EOF
Le fichier 90-synthetic.conf
contient
des exemples d'application synthétique d'italique et de graisse à
une police. La graisse synthétique peut être appliquée à une police
visuellement fine, mais le résultat n'est pas toujours celui
attendu : avec seulement embolden, Epiphany montre des polices plus foncées mais
pas Firefox — donc à moins que
firefox n'utilise maintenant
Cairo, le commentaire à propos de
Weight est toujours valide. Mais en indiquant les deux,
Epiphany affichera du texte en
gras par défaut, et affichera du texte très gras si la balise
« bold » est utilisée. Dans les deux cas, ni libreOffice ni falkon n'ont affiché de texte en gras.
Normalement, les polices du système et les polices de l'utilisateur
sont installées dans les répertoires spécifiés dans Le Protocole de Police Xft et il
n'y a pas de raison de les mettre ailleurs. Cependant, une
installation BLFS complète de texlive-20230313 place beaucoup de
polices dans /opt/texlive/2023/texmf-dist/fonts/
dans les
sous-répertoires opentype/
et
truetype/
. Bien que l'extraction de
tous ces fichiers puisse sembler utile (cela permet de les utiliser
dans des programmes non TeX), il y
a plusieurs problèmes avec une telle approche :
Il y a des centaines de fichiers, ce qui complexifie la sélection d'une police.
Certains des fichiers font des choses bizarres, comme l'affichage de drapeaux sémaphore au lieu de lettres ASCII, ou le mappage de codes cyrilliques vers des formes de caractères appropriés à la vieille église slave au lieu des formes actuelles attendues : bien si c'est ce dont vous avez besoin, mais pénible pour une utilisation normale .
De nombreuses polices ont des tailles multiples et des noms courts obscurs, qui rendent la sélection de la bonne police encore plus difficile.
Quand une police est ajoutée à CTAN, elle est accompagnée par un paquet TeX à utiliser dans les anciens moteurs (xelatex n'a normalement pas besoin de cela), et ensuite la version est souvent gelée tandis que la police est maintenue séparément. Certaines de ces polices comme Polices DejaVu sont déjà probablement installées dans votre système BLFS dans une version plus récente, et si vous avez plusieurs versions d'une police on ne sait pas laquelle sera utilisée par Fontconfig.
Cependant, il est parfois utile de regarder ces polices dans des
applications non-TeX, seulement pour voir si vous voulez installer
une version récente. Si vous avez tout installé de texlive, l'exemple suivant rendra une des
polices OpenType Arkandis disponible pour d'autres applications,
ainsi que les trois polices TrueType de ParaType. Modifiez ou
répétez les lignes comme vous le souhaitez, pour soit rendre toutes
les polices opentype/
ou truetype
disponibles, ou pour sélectionner
différents répertoires de polices. En tant qu'utilisateur
root
:
cat > /etc/fonts/conf.d/09-texlive.conf << "EOF"
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
<dir>/opt/texlive/2023/texmf-dist/fonts/opentype/arkandis/berenisadf</dir>
<dir>/opt/texlive/2023/texmf-dist/fonts/truetype/paratype</dir>
</fontconfig>
EOF
SI vous faites cela, pensez à changer toutes les instances de l'année dans ce fichier quand vous mettez à jour texlive à la dernière version.
En dehors de pages web qui utilisent des polces WOFF et les fournissent ou pointent vers google pour les télécharger, les pages web ont traditionnellement suggéré une liste de nom de familles de polices préférés si elles s'en préoccupaient (p. ex. Times New Roman, Serif). Il y a beaucoup de raisons pour qu'une personne veuille avoir des pages qui spécifient une police préférée et qui utilisent une police différente, ou préfèrent des polices spécifiques dans Monospace ou Sans ou Serif. Comme vous pouvez vous y attendre, il y a de nombreuses façons de faire cela.
Fontconfig installe une
documentation utilisateur contenant un exemple de « fichier de
configuration utilisateur » qui, entre autres, préfère
WenQuanYi ZenHei (une police Sans) si
une police Serif est
demandée pour le chinois (cette partie pourrait être anachronique à
moins que vous ayez des polices chinoises non-libres, car dans
65-nonlatin.conf
cette police est
déjà parmi les polices préférées lorsque Serif est spécifiée pour
le chinois) et préfère la police moderne VL Gothic
si une police Sans est spécifiée dans une page japonaise (cependant
quelques autres polices pourront être préférées si elles ont été
installées).
Si vous avez installé la dernière version, la documentation
utilisateur est disponible en HTML, PDF et texte dans /usr/share/doc/fontconfig-2.15.0/
: changez
la version si vous en avez installée une autre.
Par exemple, si pour une raison ou une autre vous souhaitiez utiliser la police Nimbus Roman No9 L alors que Times New Roman est référencée (elles ont des métriques identiques, et préférable pour Times Roman, mais la police Serif de Polices Liberation sera préférable pour la police Times New Roman si elle est installée), en tant qu'utilisateur individuel vous pouvez installer la police et ensuite créer le fichier suivant :
mkdir -pv ~/.config/fontconfig/conf.d &&
cat > ~/.config/fontconfig/conf.d/35-prefer-nimbus-for-timesnew.conf << "EOF"
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
<!-- prefer Nimbus Roman No9 L for Times New Roman as well as for Times,
without this Tinos and Liberation Serif take precedence for Times New Roman
before Fontconfig falls back to whatever matches Times -->
<alias binding="same">
<family>Times New Roman</family>
<accept>
<family>Nimbus Roman No9 L</family>
</accept>
</alias>
</fontconfig>
EOF
C'est quelque chose que vous feriez normalement pour les paramètres
d'un utilisateur individuel, mais le dossier dans ce cas aura été
préfixé '35 - ' alors qu'il peut, si vous le souhaitez, être
utilisé à l'échelle du système dans /etc/fonts/conf.d/
.
L'exemple suivant d'une configuration locale (c.-à-d. qui s'applique à tous les utilisateurs de la machine) fait plusieurs choses. Elle est particulièrement appropriée lorsqu'aucune langue n'est spécifiée ou pour lire du texte CJK avec un paramètre linguistique non CJK et quand vous préférez les formes japonaises des points de code partagés avec le chinois. En particulier, les approches alternatives consisteraient à spécifier une police chinoise avant une police japonaise, ce qui signifie que les symboles kana seraient utilisés depuis la police japonaise, ou à ne pas spécifier DejaVu pour que la première police de chaque ensemble de préférence soit préférée pour le texte utilisant les alphabets latins.
Si une police Serif est spécifiée, Polices DejaVu sera utilisé. Si un point
de code Han est trouvé, ou que la langue japonaise est
spécifiée, la police Mincho de Polices
IPAex sera utilisée. Si des points de code Hangul sont
trouvés ou que la langue coréenne est spécifiée, UnBatang
(voir Polices coréennes) sera
utilisée : changez cette ligne si vous voulez utiliser
une autre police serif coréenne. Après cela, WenQuanYi ZenHei (Sans, mais une
police par défaut pour Serif et monospace) sera utilisée. Une
version précédente de cette page mentionnait l'utilisation
d'UMing qui est une police chinoise traditionnelle qui était
embarquée dans un ancien fichier de configuration qui la
préférait pour les codes de langue zh-tw et zh-hk (et pour
sans-serif et monospace). Mais sans ce fichier de
configuration, Fontconfig ne
la considérera comme acceptable que pour zh-hk. Le fichier de
configuration doit être modifié pour utiliser le style actuel
et sera ajouté au début, donc la spécification d'UMing n'a
pas à se faire dans ce fichier local.conf
.
Pour les préférences Sans Serif, commencez encore par Polices DejaVu, puis VL Gothic pour le japonais avant de vous replier sur WenQuanYi Zen Hei, une police sans qui couvre à la fois le chinois et les Hangul coréens.
Les polices Monospace sont forcées par rapport aux polices Sans préférées. Si le texte est en chinois ou coréen alors WenQuanYi ZenHei sera utilisée.
Dans une locale non-CJK, le résultat est que les polices
appropriées seront utilisées pour toutes les variantes de chinois,
japonais et hangul coréen (mais les variantes japonaises des
glyphes partagés avec le chinois seront utilisées). Toutes les
autres langues doivent déjà fonctionner si une police est présente.
En tant qu'utilisateur root
:
cat > /etc/fonts/local.conf << "EOF"
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
<alias>
<family>serif</family>
<prefer>
<family>DejaVu Serif</family>
<family>IPAexMincho</family>
<!-- WenQuanYi is preferred as Serif in 65-nonlatin.conf,
override that so a real Korean font can be used for Serif -->
<family>UnBatang</family>
</prefer>
</alias>
<alias>
<family>sans-serif</family>
<prefer>
<family>DejaVu Sans</family>
<family>VL Gothic</family>
<!-- This assumes WenQuanYi is good enough for Korean Sans -->
</prefer>
</alias>
<alias>
<family>monospace</family>
<prefer>
<family>DejaVu Sans Mono</family>
<family>VL Gothic</family>
<!-- This assumes WenQuanYi is good enough for Korean Monospace -->
</prefer>
</alias>
</fontconfig>
EOF
Certaines polices, particulièrement les polices chinoises, viennent
avec des fichiers de configuration qui peuvent être installés dans
/etc/fonts/conf.d
. Cependant, si vous
faites cela et ensuite utilisez un terminal pour lancer n'importe
quelle commande qui utilise Fontconfig, vous devrez voir des messages
d'erreurs comme :
Fontconfig warning:
"/etc/fonts/conf.d/69-odofonts.conf", line 14: Having multiple
<family> in <alias> isn't supported and may not work as
expected
.
En pratique, ces anciennes règles ne fonctionnent pas. Pour les utilisateurs non-CJK, Fontconfig fonctionnera bien sans ces règles. Leur origine remonte à l'époque où les utilisateurs de CJK avaient besoin de bitmaps fabriqués à la main pour être lisibles dans les petites tailles, et ils semblaient laids à côté des glyphes latins anti-crénelés - ils ont préféré utiliser la même police CJK pour les glyphes latins. Il y a un effet secondaire à faire cela : la police (Serif) est souvent aussi utilisée pour Sans, et dans une telle situation le texte (anglais) dans les menus de Gtk utilisera cette police - par rapport aux polices du système, en plus d'être serif, elle est à la fois pâle et plutôt petite. Cela peut rendre la lecture inconfortable.
Néanmoins, ces anciens fichiers de configuration peuvent être
corrigés si vous souhaitez les utiliser. L'exemple suivant est la
première partie de 64-arphic-uming.conf
de UMing – il y a
beaucoup plus d'éléments similaires qui ont aussi besoin d'être
changés :
<match target="pattern"> <test qual="any" name="lang" compare="contains"> <string>zh-cn</string> <string>zh-sg</string> </test> <test qual="any" name="family"> <string>serif</string> </test> <edit name="family" mode="prepend" binding="strong"> <string>AR PL UMing CN</string> </edit> </match>
Le processus pour corriger cela est simple mais fastidieux – pour
chaque élément qui produit un message d'erreur, à l'aide de votre
éditeur (en tant qu'utilisateur root
) éditez le fichier installé pour répéter
le bloc entier autant de fois qu'il y a de variables, puis réduire
chaque exemple pour n'en avoir qu'un seul. Vous pouvez travailler
sur une erreur à la fois, enregistrer le fichier après chaque
correction et, à partir d'un terminal séparé, exécuter une commande
telle que fc-list 2>&1 |
less pour voir si le correctif a fonctionné. Pour
le bloc ci-dessus, la version corrigée sera :
<match target="pattern"> <test qual="any" name="lang" compare="contains"> <string>zh-cn</string> </test> <test qual="any" name="family"> <string>serif</string> </test> <edit name="family" mode="prepend" binding="strong"> <string>AR PL UMing CN</string> </edit> </match> <match target="pattern"> <test qual="any" name="lang" compare="contains"> <string>zh-sg</string> </test> <test qual="any" name="family"> <string>serif</string> </test> <edit name="family" mode="prepend" binding="strong"> <string>AR PL UMing CN</string> </edit> </match>
Lorsque cette page et la suivante ont été créées, les polices latines fournissaient au maximum deux graisses — soit Regular ou Book (Book a une plus grande hauteur pour la rendre plus facile à lire dans de grands blocs de texte), soit Bold — et éventuellement un style Italic (ou Slant). Quelques polices avaient également des variantes Condensed (pour faire tenir plus de texte sur une ligne et généralement utilisées seulement si spécifiées). Sans CSS (Cascading Style Sheets), le texte utilisait la graisse Regular ou Book sauf avec la balise <b> … </b> utilisée pour le texte en gras. Les styles italiques étaient invoqués avec la balise <i> … </i>, et en combinaison avec la balise b pour l'italique gras.
Certaines polices proposent maintenant jusqu'à 9 graisses,
éventuellement avec une police variable (pour économiser de
l'espace en incluant toutes les alternatives dans un seul fichier
et éventuellement pour permettre des graisses intermédiaires). Pour
la plupart des utilisateurs de bureau qui n'ont pas besoin de cette
gamme étendue de graisses pour créer du contenu, il est plus simple
de n'installer qu'une ou deux graisses. Si une police a des
graisses individuelles plus une police variable, la police variable
est en général situé au plus haut niveau du répertoire fourni, avec
des graisses individuelles dans un sous-répertoire static
. En dehors d'une revue initiale de la
police, il est inutile d'installer à la fois les versions statiques
et variables, ni d'installer toutes les graisses possibles.
Les graisses sont classées de 100 (Thin) à 900 (Black ou Heavy) en terminologie CSS, où 400 est normale et 700 grasse. L'ensemble complet des graisses est décrit dans Tables de graisses CSS.
Si vous avez installé une police avec une gamme de graisses, vous pouvez copier font-weights.html sur votre machine locale. Telle-quelle, cette page utilisera votre police Serif par défaut en supposant que vous en ayez une. Modifiez-la pour pointer vers une police installée spécifique avec le nom connu par Fontconfig (aussi dans les éléments textuels *EDITME FONTNAME*) et ouvrez-la dans votre navigateur de bureau. Vous pouvez également l'utiliser pour regarder une police avec seulement deux graisses installées, p. ex. pour voir si vous préférez d'autres graisses.
Malgré les détails dans ce lien de Mozilla, il semble que si seules les graisses normales et grasses sont installées, SemiBold (600) sera affiché avec la police grasse.
Il semble qu'il y ait un moyen de modifier les graisses qui seront utilisées pour les graisses normales et grasses si seulement ces deux graisses sont installées. Firefox, et sans doute les autres navigateurs, cherchent la graisse immédiatement plus grasse que la version normale. Si elle est inférieur à Bold (Medium, peut-être SemiBold) elle sera utilisée pour la graisse normale et la suivante, si elle existe, sera utilisée pour les textes en gras, ce qui vous permet de rendre les polices un peu plus sombres. Inversement, si seule une graisse plus faible que normale a été installée, comme Light, elle sera utilisée à la fois pour les textes normaux et gras (la recherche vers le haut a lieu avant).
Si vous supprimez certaines graisses d'une police système, vous
aurez peut-être besoin d'exécuter fc-cache en tant qu'utilisateur
root
puis de vous déconnecter
complètement pour nettoyer les caches associés à votre utilisateur.
Plusieurs environnements de bureau, comme certains programmes, utiliseront Fontconfig pour rechercher les polices mais remplaceront certains paramètres.
GNOME : les paramètres dans org.gnome.desktop.interface peuvent être mis à jour avec dconf-editor. Vous pouvez indiquer les polices que vous préférez et leur taille. Pour utiliser les polices choisies par Fontconfig spécifiez par exemple « Sans 12 », « Serif 11 », « Mono 10 » comme vous le souhaitez. Vérifiez également les paramètres d'anticrénelage, de hinting et rgba. Autrement, gnome-tweaks-45.1 peut également mettre à jour les paramètres de police avec un formulaire graphique.
LXQt : modifiez les paramètres nécessaires pour suivre Fontconfig dans lxqt-config-appearance.
KDE Plasma : les paramètres
peuvent être modifiés dans Paramètres
Systèmes sou Apparences -> Polices. cela créera ou
modifiera ~/.config/fontconfig/fonts.conf
bien que
~/.config/fontconfig/fonts.conf
, si
installé, puisse le contourner.
bureau Xfce : les paramètres peuvent être ajustés dans Paramètres -> Apparence -> Polices. Spécifiez vos polices préférées, p. ex. « Sans Regular » (pour utiliser la police normale plutôt que Bold ou Italic) et ajustez la taille dans les options. Vérifiez les options de rendu et de DPI.
Firefox : ce navigateur vous permet de spécifier les polices par défaut. Pour la série 115esr, utilisez le menu « hamburger » pour aller aux Préférences, Général et sous Police -> Avancé, sélectionnez Sans Serif, Serif ou Monospace comme vous le souhaitez si vous voulez utiliser les polices correspondant à Fontconfig. Indiquez les tailles comme vous le souhaitez. Dans les versions suivantes, les paramètres sont dans Préférences -> Polices.
Libreoffice : des tests avec un texte anglais avec une vieille police japonaise (HanaMinA) qui prend en charge plusieurs langues européennes, mais n'avait qu'une seule graisse et aucun italique ou penché a montré que bien que Libreoffice utilise Fontconfig pour chercher les polices, il créait ses propres texte gras ou penchés. Il n'est pas clair s'il fera la même chose si une police a un style gras ou italique. De plus, la documentation montre que Libreoffice a ses propres règles de substitution lorsqu'un code de point n'est pas trouvé dans la police sélectionnée, mais il n'est pas clair de savoir si ces règles s'appliquent sur Linux avec Fontconfig.
Pango : comme montré das
l'exemple de ~/.config/fontconfig
ci-dessus, tout ce qui utilise Pango-1.44 (à partir de 2019) ou
supérieur utilise maintenant Harfbuzz pour le hinting et non FreeType et hintfull
n'est pas pris en charge.
Thunderbird : les paramètres de police peuvent être modifiés en allant dans « Édition -> Paramètres » puis en descendant à « Polices & Couleurs ».
Les entrées du blog d'Eevee sont particulièrement utiles si Fontconfig ne pense pas que votre police choisie prenne en charge votre langue, et pour préférer certaines polices japonaises non-MS quand une police laide MS est déjà installée.
La documentation de l'interpréteur FreeType v40 sur la documentation freetype explique comment le moteur de hinting actuel fonctionne et pourquoi le précédent interpréteur (lent) a été remplacé.
Une ancienne réponse sur
askubuntu donne des détails sur la manière de calculer le
nombre de point par pouce d'un écran, mais vous devez simplement
mesure la largeur et la hauteur de l'écran, les convertir en pouces
et diviser par le nombre de pixels. Vous pouvez ensuite passer
-dpi
en démarrant Xorg, avec
votre propre valeur.
90
Vous trouverez sans doute plus que ce dont vous rêviez sur la documentation CSS de Mozilla.
Si vous utilisez le hinting et avez une police TTF (et non OTF) qui n'a pas de hinting mais vous permet de la modifier, vous pouvez appliquer du hinting avec ttfautohint basé sur l'ancien moteur de hinting automatique. Avec la version 1.8.4, il échoue à être construit sans Qt5.
Arch a beaucoup d'informations sur leur wiki dans font_configuration.
Gentoo a quelques informations dans son wiki à Fontconfig bien que beaucoup des détails (quoi activer et Infinality) sont spécifiques à Gentoo.