Mini-Howto : Polices TrueType pour XFree86


Avant-propos

Ceci est une traduction libre d'un document de Ying Zhang. Il m'a été très utile, j'ai voulu en faire partager les informations.
Le document d'origine (anglais) peut-être trouvé ici : http://www.sfu.ca/~yzhang/linux/truetype/

 

Présentation

Ce mini-howto décrit les opérations que j'ai effectuées pour utiliser des polices TrueType sous X Window. Si vous voulez entrer directement dans le vif du sujet, sautez le paragraphe "Contexte".

 

Remerciements

Un grand merci à toutes les personnes qui m'ont envoyé des suggestions et commentaires! J'intègrerai peu à peu tous vos conseils dans cette page !

 

Responsabilité

Je ne peux pas garantir la précision ou la véracité des informations que je présente dans ce howto. Pour l'essentiel, je recense ce que j'ai dû faire sur mon système pour que çà marche. Je ne suis pas responsable des dommages que pourrait subir votre système en suivant ces instructions, utilisez-les à vos risques et périls !

Ceci dit, si vous avez des questions, commentaires ou suggestions, n'hésitez pas à m'écrire à yzhang@sfu.ca.

 

Contexte

J'ai toujours été insatisfait de la qualité et du faible choix de polices sous X. Elles ne supportent pas la comparaison avec ce qui est disponible dans le monde des polices TrueType. La poignée de polices affreuses livrées avec XFree86 me semblaient ridicules par rapport à ce que j'avais coutume d'utiliser sous Windows. Heureusement, de bonnes âmes ont créé le projet FreeType et les patchs XFSFT. Je ne rentre pas dans les détails à leur sujet, visitez leurs pages respectives si vous êtes intéressé.

Mon PC est en "double boot" Linux et Windows 98, et toutes mes polices TrueType se trouvent dans la partition Windows 98. Je voulais pouvoir utiliser ces polices sous X. Ma configuration actuelle est:

  • RedHat Linux 5.2 (avec le noyau 2.2.1)
  • XFree86 3.3.3

Si votre configuration est différente, vous devrez faire les adaptations nécessaires sur mes exemples.

 

Ce qui est nécessaire

Je considère que vous avez déjà X qui fonctionne. Commençons par rassembler les éléments nécessaires. Comme j'utilise la distribution RedHat, j'utilise des RPMs pour tout installer. Les versions de logiciels que je cite ci-dessous sont les plus récentes (au moment de la rédaction), je les ai trouvés à rpmfind.net.

  • XFree86 3.3.3 (les versions plus anciennes fonctionnent probablement aussi, mais la version 3.3.3 a des drivers pour ma Matrox G200)
  • freetype-1.2-1.i386.rpm
  • freetype-devel-1.2-1.i386.rpm
  • xfsft-1.0.3-1.i386.rpm
  • ttmkfdir.tar.gz (ou allez à http://www.darmstadt.gmd.de/~pommnitz/xfsft.html)
  • votre collection de polices TrueType

Je remercie particulièrement Jim Wadell et Stephan F. Stevens du Alaska Linux User Group qui ont regroupé tous ces packages en un seul endroit. Vous pouvez les récupérer à ftp.aklug.org/pub/contributions/TrueType.

 

Installation

Ce qui est bien avec les RPMs c'est que c'est facile à installer. Il faut être root pour installer ces RPM. Passez sous root et placez vous dans le répertoire où vous avez mis ces fichiers, puis:

$ rpm -Uvh freetype-1.2-i386.rpm
$ rpm -Uvh freetype-devel-1.2-i386.rpm
$ rpm -Uvh xfsft-1.0.3-1.i386.rpm

Il faut ensuite générer ttmkfdir manuellement :

$ mkdir ttmkfdir
$ cd ttmkfdir
$ tar -zxf ../ttmkfdir
$ make FREETYPE_BASE=/usr

Vous vous retrouvez avec un binaire : ttmkfdir, que vous copiez dans /usr/local/bin ou où vous voulez. Il vous est nécessaire pour fabriquer les fichiers fonts.dir et fonts.scale, on aura l'occasion d'en reparler.

 

Répertoire des polices

D'abord il faut installer vos polices TrueType (ttf) dans des répertoires. Voici votre premier choix, voulez-vous utiliser des polices d'une partition Windows existante ou non.

Utilisation des polices d'une Partition Windows existante

Si vous avez un systè,me en doubleboot et que vous voulez utiliser les polices à partir de votre répertoire de Windows, lisez ce qui suit sinon sautez cette section. J'ai toutes mes TTFs dans ma partition Windows que je monte en tant que /mnt/c, donc mes polices sont dans /mnt/c/windows/fonts. J'ai fait un lien logique (symbolique)/usr/share/fonts/truetype que je fais pointer vers le vrai répertoire des TTF.

$ mkdir /usr/share/fonts
$ ln -s /mnt/c/windows/fonts /usr/share/fonts/truetype

Création d'un nouveau répertoire

Si vous n'avez pas Windows sur une autre partition, ou si vous voulez stocker les polices séparément, créez simplement ce répertoire et remplissez-le avec vos polices favorites:

$ mkdir /usr/share/fonts
$ mkdir /usr/share/fonts/truetype

 

Initialiser le répertoire des polices

Lorsque les TTFs sont dans le répertoire des polices, vous devez construire les fichiers fonts.dir et fonts.scale. Si vous vous demandez ce qu'ils font, lisez la documentation accompagnant le paquetage xfsft.

Maintenant, allez dans le répertoire des polices TTF et lancez ttmkfdir (que vous avez généré précédemment):

$ cd /usr/share/fonts/truetype
$ /usr/local/bin/ttmkfdir > fonts.scale
$ mkfontdir

ttmkfdir pourra se plaindre de quelques polices, lisez la doc pour savoir pourquoi. Le programme mkfontdir fait partie de XFree86, donc s'il n'est pas dans votre PATH il vous faudra trouver où il est. Notez bien qu'à chaque fois que vous ajouterez une police de caractères à votre système, vous devrez relancer tmkfdir et mkfontdir.

 

Configurer XFSFT et XF86Config

C'est presque terminé, il reste deux fichiers à modifier, /usr/etc/xfsft.conf et /usr/X11/XF86Config.

xfsft.conf

Ajoutez le répertoire /usr/share/fonts/truetype et supprimez (ou mettez en commentaire par un '#') les répertoires qui n'existent pas chez vous. Voici à quoi ressemble le mien :

clone-self = off
client-limit = 20

catalogue = /usr/X11R6/lib/X11/fonts/Type1,
            /usr/X11R6/lib/X11/fonts/misc,
            /usr/X11R6/lib/X11/fonts/Speedo,
            /usr/X11R6/lib/X11/fonts/75dpi,
            /usr/share/fonts/truetype,
#            /usr/X11R6/lib/X11/fonts/100dpi

use-syslog = off
error-file = /var/log/xfsft-errors.log

default-point-size = 120
default-resolutions = 100,100,75,75

XF86Config

XFSFT est capable de gérer vos autres polices en même temps que vos polices TrueType. Donc si vous avez déjà un chemin d'accès qui est spécifié dans votre xfsft.conf, ce n'est pas la peine de le mentionner dans votre XF86Config. Ajoutez juste une ligne précisant à X de faire confiance au serveur TrueType. Voici la section correspondante de mon XF86Config, la ligne en gras est celle qu'il faut ajouter, et notez que j'ai mis en commentaire tous les autres chemins d'accès à des polices :

FontPath   "tcp/localhost:7100"
#FontPath   "/usr/X11R6/lib/X11/fonts/Type1"
#FontPath   "/usr/X11R6/lib/X11/fonts/Speedo"
#FontPath   "/usr/X11R6/lib/X11/fonts/75dpi"
#FontPath   "/usr/X11R6/lib/X11/fonts/100dpi"
NOTE:

En voyant tcp/localhost:7100, vous vous êtes probablement douté que le serveur de polices TrueType ne doit pas nécessairement résider sur la machine locale. En fait, vous pouvez mettre en place un serveur de polices (disons sur la machine fonty), et faire pointer tous vos autres serveurs X vers tcp/fonty:7100. Ces serveurs X n'ont pas besoin de faire tourner XFree86, ce principe fonctionne avec tout serveur X (par ex. Terminaux X NCD, etc).

Ceci signifie aussi que vous devrez mettre en place des protections adéquates si vous ne voulez pas que d'autres personnes accèdent à votre serveur de polices -- du style : rejeter les paquets tcp entrants sur le port 7100 (ou tout autre port sur lequel s'exécute votre serveur).

Voilà qui clôt la configuration, démarrons tout çà!

 

Démarrage du Serveur de Polices TrueType

Si vous avez installé par RPM, faites simplement:

$ /etc/rc.d/init.d/xfsft start

Ceci appelle /usr/X11R6/bin/xfsft -port 7100 -config /usr/etc/xfsft.conf donc si vous n'avez pas installé par RPM, ajoutez cet appel dans votre rc.local ou équivalent. Pas de message d'erreur. Bien, passons à la dernière étape -- (re)lancer X.

 

Lancement de X

Vous savez démarrer X, lancez startx. Si vous n'avez aucun message d'erreur, voilà, vous avez vos polices! Soyez entreprenants, lancez Netscape et changez les polices pour Times New Roman ou Arial. Choisissez Courier New au lieu de ce truc grossier que vous avez sous les yeux depuis trop longtemps. Lancez GIMP et jouez avec toutes vos nouvelles polices!!

Si vous ne voulez pas relancer X, tapez:

$ xset +fp tcp/localhost:7100

Dans ce cas, pensez à relancer les applications (comme Netscape) pour que leurs listes de polices soient remises à jour. Bon amusement!

 

Obtenir plus de polices

Au cas où vous n'auriez pas déjà une tonne de polices, voici quelques sites où récupérer des polices gratuites:

 

Problèmes connus

Les seuls problèmes que j'ai rencontrés jusqu'à présent sont:

  • Je n'ai pas réussi à faire utiliser des polices TrueType par StarWriter 5.0 (le traitement de texte de la suite bureautique Star Office). Tous les autres composants de StarOffice fonctionnent joyeusement avec les polices mais pas StarWriter.

  • Avec Netscape, assurez vous que l'option Autoriser Crénelage est active si vous choisissez une police TrueType comme police proportionnelle ou non par défaut. Notez aussi que Netscape ne propose que deux tailles (0 et 12.0) quand vous choisissez une police TrueType.

  • Hélas, vous ne pourrez pas imprimer ces polices, elles s'imprimeront comme du Times, quelque soit la police écran. Je l'ai expérimenté avec tant avec Netscape que StarOffice (avec les composants qui arrivent à afficher les polices TrueType à l'écran).