Fontconfig

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Fontconfig and the translation is 71% complete.
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.

USE flags for media-libs/fontconfig A library for configuring and customizing font access

doc Add extra documentation (API, Javadoc, etc). It is recommended to enable per package instead of globally
nls Add Native Language Support (using gettext - GNU locale utilities)
test Enable dependencies and/or preparations necessary to run tests (usually controlled by FEATURES=test but can be toggled independently)

Configuration

Remarque
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
  ...
Attention !
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.

Remarque
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.
Remarque
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>
Remarque
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

À 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.

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

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.

Remarque
Many fonts don't provide glyphs for every assigned Unicode codepoint, due to the size of Unicode. If a font doesn't provide a glyph for a given codepoint, the character might be represented by a substitute character (such as a rectangle containing the hexadecimal value of the code point), or by a glyph from a different font (the "fallback font"), depending on the application.

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

Font family

Avantages Inconvénients
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