Fontconfig

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page Fontconfig and the translation is 76% complete.

Other languages:
English • ‎español • ‎français • ‎日本語 • ‎한국어 • ‎polski • ‎русский • ‎中文(中国大陆)‎
Resources

La bibliothèque fontconfig (media-libs/fontconfig) a pour but de permettre une uniformisation de la configuration entre les différents GUI. Bien qu'il soit commun de pouvoir configurer les polices dans un environnement bureautique, fontconfig reste une bibliothèque sous-jacente.

Installation

Le paquet fontconfig est souvent installé automatiquement. Si ce n'est pas le cas, assurez vous que le système graphique (comme X ou Wayland) et un desktop environment sont installés.

Options des USE Flags

fontconfig n'utilise pas beaucoup d'USE flags.

Cannot load package information. Is the atom media-libs/fontconfig correct?

Configuration

Note
Les changements apportés aux configurations de fontconfig ne prendront effet sur les applications démarrés qu'après qu'elles soient redémarrés.

Configuration générale

fontconfig utilise des fichiers XML dans le dossier /etc/fonts/ pour sa configuration. Il utilise par défaut /etc/fonts/fonts.conf (les utilisateurs ne doivent pas éditer ce fichier !) qui met en place des configurations par défaut et contient du code renvoyant vers /etc/fonts/conf.d/ pour la configuration. Le dossier /etc/fonts/conf.avail/ contient différents fichiers de configuration qui couvrent chacun différents aspects de fontconfig. Il y a généralement des liens symboliques allant des fichiers nécessaires vers /etc/fonts/conf.d/. Ces fichier sont exécutés dans l'ordre de leur nom. C'est pour cela que leur noms commencent par un nombre à deux chiffres. Le premier chiffre (les dizaines) indique à quoi le fichier s'applique (on l'appelle la classe).

Configuration spécifique à Gentoo

Gentoo propose le module eselect (eselect fontconfig) qui fait exactement ce qui a été décrit de façon simple : il gère les liens symboliques dans le dossier/etc/fonts/conf.d. Changer les configurations avec ce module requiert les permissions appropriées.

La sous section suivante explique comment se servir du module fontconfig de eselect.

Lister les fichiers disponibles

La commande list montre les fichiers de configuration de fontconfig disponibles, et marque les fichiers activés avec une astérisque (*).

root #eselect fontconfig list
Available fontconfig .conf files (* is enabled):
  [1]   10-autohint.conf *
  [2]   10-no-sub-pixel.conf
  [3]   10-sub-pixel-bgr.conf
  [4]   10-sub-pixel-rgb.conf
  [5]   10-sub-pixel-vbgr.conf
  [6]   10-sub-pixel-vrgb.conf
  [7]   10-unhinted.conf
  [8]   11-lcdfilter-default.conf
  [9]   11-lcdfilter-legacy.conf
  ...
Warning
Différents systèmes peuvent affecter différentes valeurs pour chaque police dans le dossier fonts.avail. Ainsi, les sorties peuvent être différentes. Faites attention à ne pas utiliser aveuglément cette commandes (comme dans le cas des commandes proposées dans les blogs ou de wiki).

Activer une police

Les polices peuvent être activées soit en indiquant le chemin du fichier, soit en utilisant le nombre entre crochets. Ainsi, les deux commandes suivantes font la même chose :

root #eselect fontconfig enable 10-sub-pixel-rgb.conf
root #eselect fontconfig enable 4

Désactiver une police

Les polices peuvent être désactivées comme suit :

root #eselect fontconfig disable 10-sub-pixel-rgb.conf
root #eselect fontconfig disable 4

Configuration avancées du système

Pour faire une fichier fontconfig spécial, activez 51-local.conf et créez le fichier XML /etc/fonts/local.conf.

FILE /etc/fonts/local.confExample file that sets preferred font fallback order for sans-serif font
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <alias>
    <family>sans-serif</family>
    <prefer>
      <family>Ubuntu</family>
      <family>TakaoPGothic</family>
      <family>Droid Sans</family>
    </prefer>
    <default><family>DejaVu Sans</family></default>
  </alias>
</fontconfig>

Pour être clair, cela signifie qu'on indique au système qu'on "préfère" utiliser Ubuntu en tant que police sans-serif, ensuite (par ordre d'utilisation) TakaoPGothic, et Droid Sans, puis DejaVu Sans. choix peuvent être faits ici. On peut bien sûr choisir différentes polices dans un ordre différent.

Configuration pour un utilisateur

Pour faire une configuration par utilisateur des fichiers de fontconfig, il faut activer le fichier 50-user.conf (normalement activé par défaut), et configurer le fichier ~/.config/fontconfig/fonts.conf. Ce fichier utilise le même format XML que local.conf.

Note
Les environnements de bureau devraient essayer d'affecter les différentes polices de cette façon. Il pourrait néanmoins être plus prudent de désactiver cela de façon à être sûr que ce qui va être affiché dépend de la configuration système lorsqu'on cherche à la modifier. Désactiver cette option permet d'avoir un rendu uniforme entre les différents comptes utilisateurs.
Note
Le fichier ~/.font.conf utilisé auparavant est n'est plus supporté. Il faut maintenant utiliser les dossiers basés sur $XDG_CONFIG_HOME. Cette variable est ~/.config par défaut.

Vérification de la configuration

Vérifiez la police de remplacement par défaut. Par exemple, pour Arial, en tapant :

user $fc-match Arial

Anti crénelage, optimisation, et rendu sous-pixel

Le rendu peut être modifié lui aussi. Nous allons ici modifier l'"Anti crénelage" et le "rendu sous-pixel".

Feature Description
Anti crénelage est activé par défaut et permet d'obtenir une police moins pixelisée.
Optimisation est une tentative de faire face au faible nombre de pixel par unité d'aire des systèmes d'affichage actuel. Une bonne optimisation permet d'avoir des caractères plus nette sans changer la longueur d'une chaîne de caractère. Cela affecte donc uniquement l'apparence du texte.
Rendu sous-pixel utilises le fait que les grilles LCD utilisent trois LED par pixel pour tripler la résolution du texte. Les caractère peuvent ne pas apparaître entièrement noir. Pour combattre cela, lcdfilter peut être utilisé avec l'option "rendu sous-pixel" (disponible pour les dernière versions de fontconfig), mais il peut trop flouter un caractère. En fin de compte, cela dépend entièrement de comment quelqu'un aime son texte.

Optimisation forcée

The default fontconfig behavior regarding hinting is rather undocumented, but it can be made deterministically sub-optimal by making a system wide default.

  1. D'abord activez /etc/fonts/local.conf
  2. Ensuite, éditez le fichier local.conf pour inclure l'optimisation par défaut.

Cet extrait de code de local.conf active toutes les options d'optimisation :

FILE /etc/fonts/local.confSetting hinting to full
<match target="font">
  <edit mode="assign" name="hintstyle">
    <const>hintfull</const>
  </edit>
</match>
Note
La plupart des polices ont l'air plus belles avec les optimisations, mais certaines ont besoins de quelques changements ou plus rarement d'autres options d'optimisation. Certaines polices pour une raison ou une autre restent toujours laides.

Utilisation du rendu sous-pixel

Il faut tout d'abord déterminer la disposition des sous-pixel de l'écran LCD. La plupart du temps, on trouve du RGB (10-sub-pixel-rgb.conf), mais le seul moyen d'en être sûr est de consulter la documentation de l'écran ou d'utiliser le test de disposition sous-pixel pour le savoir.

Une fois la disposition des sous-pixels déterminée, activez le fichier 10-sub-pixel-"type de matrice".conf approprié.

root #eselect fontconfig enable 10-sub-pixel-rgb.conf

Il est fortement recommandé d'utiliser lcdfilter pour le rendu sous-pixel. Il y a différentes configurations possibles, mais la configuration par défaut (11-lcdfilter-default.conf) devrait être appropriée pour la plupart des polices.

root #eselect fontconfig enable 11-lcdfilter-default.conf
Warning
Le drapeau USE bindist du paquet media-libs/freetype désactive le rendu sous-pixel à cause des problèmes de brevet. Pour utiliser le rendu sous-pixel, l'option USE doit être désactivée (par exemple : -bindist) pour ce paquet.

À propos de l'auto-optimiseur

L'auto-optimiseur permet d'optimiser automatiquement l'affichage des polices indépendamment des configuration d'optimisation. On l'utilisait encore récemment parce que TrueType2 était couverte par des brevets. Ces brevets ont aujourd'hui expiré, il y a donc peu de raisons d'utiliser l'auto-optimiseur. D'un aspect technique, ça ne pourra être que mieux pour les polices sans informations d'optimisation, mais le résultat sera dégradé pour les polices avec des bonnes informations d'optimisation. Les polices systèmes disposent généralement de bonnes informations d'optimisation, donc il devrait être inutile d'activer l'auto-optimiseur.

Warning
L'auto-optimiseur n'est pas compatible avec le rendu sous-pixel, ne les utilisez pas en même temps !

Infinality

Infinality est un groupe de patchs de FreeType qui accompagne les fichiers fontconfig. L'objectif d'Infinality est de proposer un meilleur rendu des polices, en proposant l'émulation des style de rendu des autres systèmes d'exploitation.

Note
Comme souvent avec les logiciels en développement, il est prudent d'utiliser toujours la dernière version à moins de rencontrer des problèmes avec celle-ci.

Activer Infinality

Activez le drapeau USE 'infinality' en éditant make.conf, soit manuellement, soit en utilisant l'outil euse.

root #euse -E infinality

Ensuite, recompilez les programmes affectés par les changements.

root #emerge --ask -uvDU @world

Activez Template:Path-52-infinality.conf à moins que les messages affichés après la recompilation ne disent l'inverse.

root #eselect fontconfig enable 52-infinality.conf

Configurer Infinality

Infinality peut être configuré de différentes façons comme les configurations personnalisées, mais le meilleur moyen de le faire est d'utiliser les profiles pré-configurés proposés par media-libs/fontfonfig-infinality qui devraient être installés comme dépendances du drapeau USE infinality.

Configuration rapide et raisonnable

root #eselect infinality set infinality
root #eselect lcdfilter set infinality
Note
Comme toujours, les changements faits dans fontconfig ne prennent effet qu'après redémarrage des applications ouvertes.

Il est aussi recommandé de désactiver tout les fichiers de configuration de fontconfig sauf 52-infinality.conf car ils interfèrent avec le rendu d'infinality.

root #eselect fontconfig disable <number>

Certaines configurations fontconfig n'interférent pas avec le rendu des polices, mais déterminent plutôt les polices à utiliser par défaut en fonction du "font-code" (comme par exemple Monospace, sans-serif, etc.). Ces configurations (par exemple le fichier 62-croscore-*.conf) peuvent être laissées activées.

Explications

Infinality propose des variables d'environnement de FreeType qui peuvent être utilisées pour configurer les fonctionnalités fournies par les patches de façon à ce que les fichiers de fontconfig puissent être utilisés avec les changements introduits. L'administration des fichiers de fontconfig peut se faire via eselect infinality tandis que le comportement de FreeType peut être configuré avec eselect lcdfilter.

Ces modules eselect fonctionnent comme cela :

  • Lister le fichiers de configuration de fontconfig disponibles.
root #eselect infinality list
  • Lister les groupes de variables de FreeType disponibles.
root #eselect lcdfilter list
  • Les deux configurations devraient toujours être les mêmes sauf lorsqu'il y a plusieurs noms possibles comme ici :
root #eselect infinality set win7
root #eselect lcdfilter set windows-7-light

Choisir des polices

Choisir la bonne polices peut être plus compliqué que de décider du bon type d'optimisation. Pour une raison ou pour une autre, certaines polices ne seront jamais parfaites. Il est certainement possible de faire en sorte à ce qu'elles soient plus belles que, disons, la configuration par défaut de Windows 7.

Voici quelques recommandations à propos des polices de caractères connues dans Gentoo :

Font family Pros Cons
Liberation
media-fonts/liberation-fonts
Red Hat's fonts, which are metric-compatible with MS TrueType corefonts, have a decent, modern look. This is the Gentoo Fonts team recommendation for default Latin fonts. Covers about 2,600 code points. Latin, Greek, Cyrillic, and Hebrew only. A few glyphs may have hinting trouble.
Linux Libertine
media-fonts/libertine
Very similar to Liberation, covering about 2,700 code points. Linux Libertine itself is proportional serif only, but the package contains less extensive sans and mono fonts, as well. Can be used as a fallback for some glyphs not in Liberation. Latin, Greek, Cyrillic, and Hebrew only. Sans and mono fonts are limited.
Noto
media-fonts/noto
Google's font family that aims to support all the world's languages (so, well over 60,000 code points). It goes well with Liberation or Droid. Adobe's Source Han Sans fonts are included for CJK. Recommended as a fallback for many glyphs not covered by Liberation. Big download.
DejaVu
media-fonts/dejavu
Many styles and covers a lot of code points (about 6,100 for sans). Exceptionally wide — even condensed is wider than same-height monospace. Overall second to Verdana (an MS font) in width. Sans-serif font is only average.
Droid
media-fonts/droid
Covers a lot of code points and scripts. Very dry, wide yet thin glyphs. Clearly designed with handheld devices and their small screens in mind.
Gentium Plus
media-fonts/sil-gentium
Fairly distinctive; might appeal to people who like narrow fonts. Serif only. As with other SIL fonts, the hinting is questionable.
Ubuntu
media-fonts/ubuntu-font-family
Used in Ubuntu (obviously). A distinctive font family with a style which might not appeal to everyone. Overall looks good and covers a fair number of code points. Only the sans-serif font is truly polished; narrow and monospaced versions are unfinished. No known serif font that would accompany it well.
URW
media-fonts/urw-fonts
Metric compatible with popular Adobe fonts (among others?). Seem to require slight hinting.
MS TrueType corefonts
media-fonts/corefonts
Includes most fonts used in documents and on the web. MS does not distribute them nowadays, so the available fonts are from many years ago and do not reflect their current state (not to mention the state of the art). Obviously, lacks fonts introduced more recently. Require full hinting.
Unifont
media-fonts/unifont
Covers a lot of code points. In addition to being ugly as sin, it also fails some basic requirements to be considered a typeface. Is it sans-serif? Is it serif? Please never use this.

Ressources externes