[OpenBSD]

Polices anti-aliasées et "TrueType" sous OpenBSD

Table des matières


Capture d'écran de xterm

xterm(1) avec polices aliasées et anti-aliasées comparées :
[xterm standard and anti-aliasé]

Capture d'écran de Konqueror

Toujours pas convaincu ? Jetons un coup d'oeil à ceci.

Le Navigateur Web Konqueror avec polices aliasées et anti-aliasées comparées :

[Konqueror standard and anti-aliasé]

Comment ça marche ?

Afin de gérer les polices anti-aliasées, X a introduit -côté client- un nouveau moteur de rendu de polices en 2001. Les calculs d'anti-aliasing sont effectués par FreeType, un moteur de polices libre utilisé par une librairie nommée Xft(3), l'interface X FreeType. L'extension Render effectue les traitements de composition nécessaires pour mélanger les sous-pixels des formes de polices sur le fond de l'application.

De plus X.Org utilise la librairie fontconfig(3) pour gérer les polices installées, y compris leurs noms et propriétés.

Que faut-il faire pour les obtenir ?

Rien en principe. OpenBSD fournit X.org avec l'extension X Render activée pour tous les pilotes de carte vidéo à 8 bits par pixel et au-delà.

Vous pourrez vérifier que l'extension Render est activée comme suit :

$ /usr/X11R6/bin/xdpyinfo | grep RENDER
RENDER

En plus de la famille de polices DejaVu incluse avec OpenBSD (OpenBSD utilisait la famille de fontes Bitstream Vera jusqu'à la version 4.7 incluse), une collection de polices TrueType populaires a été compilée et mise à disposition dans l'arbre de ports OpenBSD, sous /usr/ports/fonts/msttcorefonts. Elles peuvent être installées comme suit :

# cd /usr/ports/fonts/msttcorefonts
# make install

La collection de ports inclut aussi d'autres paquetages de polices TrueType, particulièrement les polices liberation qui peuvent être utilisées en remplacement des polices Web de Microsoft ci-dessus et sont distribuées avec une licence plus acceptable.

Quelles applications peuvent utiliser des polices anti-aliasées ?

N'importe quelle application qui s'interface avec la bibliothèque Xft peut afficher des polices anti-aliasées. Cela inclut toutes les versions actuelles de Qt (utilisé par KDE) et de GTK+ (utilisé par Gnome). Les programmes X standard possédant une telle interface sont xterm(1), xclock, et quelques autres.

xterm

xterm peut être invoqué avec les arguments qui permettent d'activer le rendu Xft des polices :
$ xterm -fa 'Mono' -fs 14
Ces options sont :
Option   Resource         Meaning
----------------------------------------
 -fa     XTerm*faceName   Font face name
 -fs     XTerm*faceSize   Font size
On peut aussi utiliser les ressources X. Par défaut, elles sont situées dans $HOME/.Xdefaults et sont contrôlées à l'aide du programme xrdb(1).

Certaines polices TrueType (telles que Arial, Georgia et Verdana par exemple) ne fonctionnent pas correctement avec xterm. En effet, xterm utilise la largeur maximale de tous les caractères faisant partie d'une police donnée pour afficher chaque caractère. Avec une police de type monospace, les largeurs de tous les caractères sont les mêmes, et tout fonctionne correctement. Avec une police proportionnelle, telle qu'une des polices précitées, xterm affiche chaque caractère dans une cellule de la taille de la largeur maximale du caractère ce qui a pour effet de créer de larges séparations illisibles entre les caractères.

Applications Qt/KDE

Les applications utilisant QT 3.x (ou une version plus récente) telles que n'importe quelle application KDE 3.5.x, y compris Konqueror, peuvent utiliser le rendu Xft par défaut.

Applications GTK+

Les applications GTK+2 et GTK+3 utilisent aussi Xft par défaut.

Comment ajouter manuellement des polices ?

L'ajout d'une police TrueType à X nécessite l'enregistrement de cette police au niveau de librairie fontconfig et le serveur X étant donné qu'ils gardent un état des polices séparément.

Système de rendu de polices côté client

Les polices installées par un paquetage de la collection de ports sont enregistrées automatiquement auprès du système fontconfig. Fontconfig utilise le fichier /etc/fonts/fonts.conf pour la configuration globale principale, mais étant donné que ce fichier sera remplacé par les mises à jour de X à venir, /etc/fonts/local.conf devrait être utilisé pour gérer les modifications globales. Fontconfig cherche les polices dans tous les sous-répertoires des répertoires listés dans /etc/fonts/fonts.conf. Il n'est donc pas nécessaire d'éditer ce fichier lorsque de nouvelles polices sont ajoutées à ces sous-répertoires.

Une fois un répertoire ajouté, le cache à polices pour ce dernier devra être régénéré. La commande ci-après demande à fontconfig de reconstruire les caches à polices pour tous les répertoires spécifiés dans sa configuration :

# /usr/X11R6/bin/fc-cache -v
Ces modifications prendront effet dans la session X en cours. X n'aura donc pas besoin d'être redémarré. Les applications en cours d'exécution devront l'être cependant.

La commande fc-list peut être utilisée pour lister toutes les polices connues par le système. Attention, cette commande fournit en sortie les noms des polices internationales encodés en UTF-8. Il est donc préférable de l'exécuter dans un programme d'émulation de terminal capable d'interpréter l'UTF-8 tel que uxterm..

Le système de rendu côté serveur

Les chemins des polices (i.e. des répertoires contenant les polices) sont gérés soit directement par le serveur X11, en s'appuyant sur /etc/X11/xorg.conf, soit par un programme séparé tel que xfs(1). Pour ajouter une police, ajoutez le répertoire dans lequel elle se trouve à /etc/X11/xorg.conf :
Section "Files"
        FontPath        "/usr/X11R6/lib/X11/fonts/TTF/"
        FontPath        "/usr/local/lib/X11/fonts/myfonts/"
        ...
EndSection
Sinon, si vous utilisez xfs, ajoutez le répertoire à /etc/X11/fs/config :
catalogue = /usr/X11R6/lib/X11/fonts/TTF/,
            /usr/local/lib/X11/fonts/myfonts/
Ensuite, le serveur X doit être capable de prendre en compte la police à travers l'index des polices dans ce répertoire, à savoir le fichier fonts.dir. Traditionnellement, toutes les tailles disponibles pour une police sont listées au niveau de l'index des polices, généré par la commande mkfontdir(1). Mais étant donné que les polices TrueType peuvent être calibrées à n'importe quelle échelle, la spécification de chaque taille possible n'est pas requise. Au lieu de cela, les polices calibrables sont listées dans le fichier fonts.scale, reconnu par mkfontdir lors de la génération des indexes fonts.dir.

Pour créer un fichier fonts.scale, vous pouvez utiliser le programme mkfontscale(1) :

# cd /usr/local/lib/X11/fonts/myfonts
# /usr/X11R6/bin/mkfontscale
# /usr/X11R6/bin/mkfontdir
Enfin, pour appliquer les modifications à la session X en cours, au lieu de redémarrer X, la commande suivante peut être utilisée pour examiner à nouveau les chemins de polices enregistrés au niveau de XFree86 et prendre en compte les modifications s'il y a lieu :
$ xset fp rehash
Ou, si un nouveau chemin de polices a été ajouté :
$ xset +fp /usr/local/lib/X11/fonts/myfonts
Si vous utilisez xfs, utilisez plutôt la commande suivante :
# pkill -HUP xfs

[back] www@openbsd.org
$OpenBSD: truetype.html,v 1.26 2012/09/03 06:26:30 ajacoutot Exp $