PETITE BIDOUILLE ENTRE AMIS
La dernière distribution de Mandrake, 8e du nom, offre avec XFree4x et KDE2x des possibilités fort alléchantes en ce qui concerne l'aspect visuel du bureau : l'anti-aliasing. Pour un esthète, il est impossible d'ignorer la chose et de ne pas la tester, d'autant que sans paramétrage de celle-ci, l'affichage du texte dans les applications courantes est ignoble.

On croit s'en tirer facilement en activant l'option >Apparence et ergonomie> Style> Utiliser l'anti-aliasing pour les polices et les icônes du KDE Cntrol Center, mais il faut vite déchanter : si l'aspect, après redémarrage de KDE est irréprochable, on ne peut pas en dire autant de la réactivité du système. Tout est devenu d'une lenteur insupportable, même avec un Céleron 800, 384 Mo de RAM et une carte vidéo Geforce 2 MX 400.

Pourquoi ?
Une plongée dans les arcanes du mécanisme donne une réponse.
Dans une Mandrake, les paramétrages relatifs aux polices de caractères se situent dans les fichiers suivants :

/etc/X11/fs/config
descripteur des chemins de polices utilisables par XFree

/etc/X11/XF86Config-4
information pour le serveur de polices indépendant FontPath "unix/:-1"

/etc/X11/XftConfig
descripteur des chemins de polices Type1 et True Type à lisser

C'est ce dernier fichier qui est à considérer. On constate qu'il contient un grand nombre de chemins de polices et qu'au démarrage, chaque application viendra scruter la totalité de ces chemins afin de permettre le lissage des polices susceptibles d'être employées dans l'application que l'on vient de lancer.

D'ailleurs, un exergue dans XftConfig avertit qu'il en sera ainsi :

# XftConfig
# Use with Type1 and TrueType fonts
# Note that each application scans all these directories
# during startup, so you may want to disable some to
# get better speed.
# Standard XFree86 Type 1 fonts
dir "/usr/X11R6/lib/X11/fonts/Type1"
# TTF fonts
dir "/usr/X11R6/lib/X11/fonts/truetype"
# User installed fonts
dir "/usr/X11R6/lib/X11/fonts/drakfont"
dir "/opt/ttfonts"
# URW fonts
dir "/usr/share/fonts/default/Type1"
# Localized Truetype fonts
dir "/usr/share/fonts/ttf/western"
dir "/usr/share/fonts/ttf/big5"
dir "/usr/share/fonts/ttf/gb2312"
dir "/usr/share/fonts/ttf/japanese"
dir "/usr/share/fonts/ttf/korean"
.......
etc.

On s'aperçoit que le système cherche à lisser des polices japonaises, ou coréennes, ou d'autres plus exotiques encore. Est-ce vraiment utile ? N'y a-t-il rien à faire ?

Poser le problème
Perplexe, après s'être énergiquement frappé l'occiput pour en faire jaillir une solution acceptable au problème "Comment jouir de l'anti-aliasing tout en conservant une réactivité foudroyante ?", on en arrive à poser les constats suivants :

a) Pour résoudre un problème, il faut d'abord l'énoncer clairement.
b) L'énoncer clairement, c'est affirmer :
- seuls le bureau KDE et ses applications bénéficieront de l'anti-aliasing, parce que c'est une option KDE ignorée des autres programmes.
- Aussi bien pour le bureau que pour les applications, on utilisera un nombre limité de polices.

La solution surgit alors tout naturellement : ne faire lisser par le serveur qu'un petit nombre de polices judicieusement choisies.

Mise en uvre de la solution
Modifier XftConfig
Comme par l'intermédiaire de /etc/X11/XftConfig, il est impossible de choisir des polices à l'exclusion des autres dans un même répertoire, mais qu'il est possible de désigner un répertoire tout en invalidant les autres, la première modification consistera, en mode SU, à éditer le fichier XftConfig. Soit on supprimera toutes les lignes commençant par dir, soit on placera le symbole # en début de ces mêmes lignes. Cela fait, on rajoutera une ligne indiquant le chemin des polices à considérer. L'exemple ci-dessous montre XftConfig modifié, avec une seule entrée valide, celle pointant sur le répertoire contenant les nouvelles polices, en l'occurrence, des True Type, on verra pourquoi. A noter que le chemin pourrait être tout autre : c'est celui où l'on aura effectivement installé des polices.

# XftConfig
#
# Standard XFree86 Type 1 fonts
#dir "/usr/X11R6/lib/X11/fonts/Type1"
#dir "/usr/share/fonts/sketch"
# TTF fonts
#dir "/usr/X11R6/lib/X11/fonts/truetype"
# User installed fonts
#dir "/usr/X11R6/lib/X11/fonts/drakfont"
dir "~/.kde/share/fonts/TrueType"
#dir "/opt/ttfonts"
# URW fonts
#dir "/usr/share/fonts/default/Type1"
# Localized Truetype fonts
#dir "/usr/share/fonts/ttf/western"
...
etc.

Choisir des polices
Une des applications phares de KDE est Koffice. En l'utilisant, on désire être en mesure de récupérer sans altération des documents produits par MS Office. Or, les polices les plus couramment employées sous Windows sont Times New Roman, Arial et Courrier New. Ces polices se déclinent en différentes "graisses", comme toutes celles qui sont d'un usage professionnel : Normale (Regular), Grasse (Bold), Demi-Grasse (Demi-Bold), Italique (Italic), Grasse-Italique (Bold-Italic), Légère (Light), Condensée (Condensed)... auxquelles peuvent s'ajouter les types Medium, Extra-Light, Extra-Bold.

On installera donc ces polices-là.
Pourquoi ? Parce qu'on peut toujours penser que les polices romanes à empattement Times, Garamond, Baskerville, Bodoni pour ne citer que les plus connues et les plus élégantes sont équivalentes, mais en fait, il n'en est rien : chacune d'elle a été dessinée avec une largeur de caractère, la "chasse", qui lui est propre. Ainsi, en récupérant un fichier composé en Times dans un programme utilisant Timmons par défaut, la longueur des paragraphes seront différents d'un document à l'autre. Pour un document monopage, cela importe peu. Dans un document de plusieurs pages, on peut détruire la mise en page et obtenir de disgracieuses "veuves et orphelines".
L'exemple ci-dessous (Figure 0) montre les différences de longueur de la chaîne "KWord sous KDE" écrite avec des polices semblables, mais différentes.

De plus, l'harmonie d'un document se juge d'une manière inconsciente au mariage de caractères dont l'harmonie dépend des épaisseurs de trait, de la longueur des jambages et des hampes, qui doivent être similaires, quelles que soient les polices réunies dans ledit document. Ainsi, les couples Romane-Linéale tels que Garamond-Gill Sans, Times New Roman-Arial, Bodoni-Avant Garde... garantissent équilibre et lisibilité.
Certains typographes préconisent le corps de texte en Romane parce que l'empattement de ce type de police augmente la lisibilité en construisant pour l' il une ligne de pied virtuelle qui le guide. Cependant, beaucoup de publications sont en linéales sans fioriture pour conférer une impression de sérieux... que le sens du texte ne recèle pas toujours.

Ceci posé, on choisira au moins une police linéale sans empattement pour l'interface de KDE : icônes, menus et, pourquoi pas, des polices élégantes et lisibles pour ses autres applications vedettes que sont Konqueror et Kmail.
Les polices système ou la vieillissante Helvetica de Linux ne sont pas des plus flatteuses. Windows dispose là encore d'excellentes linéales, outre l'Arial : Tahoma et Verdana. On les installera aussi.
Si l'on veut utiliser Kpresenter ou Killustrator, il sera également bon de disposer de quelques Manuscrites, Fantaisistes et Extra Larges. Le choix est laissé à chacun selon ses goûts et ses besoins. Pour ma part, les 19 polices suivantes couvrent bien plus que tous les besoins en bureautique et en paramétrage d'interface (Figure 01).

Précision ultime avant de clore le paragraphe : prendre garde à n'installer que des polices complètes, contenant majuscules, minuscules et caractères accentués. Trop de polices TTF offertes sur des CD-ROM de couverture, dessinées pour les anglo-saxons, sont inutilisables.

Installer des polices
Puisque le choix a été fixé d'utiliser des True Type en provenance de Windows, il est évident qu'il conviendra d'utiliser des outils appropriés pour procéder à la man uvre.
Heureusement, Mandrake qui développe ses propres outils de configuration, a mis à disposition un outil remarquable nommé Drakfont. Cet outil peut être appelé de deux manières :

·         Soit par l'intermédiaire du Mandrake Control Center >Sytème> Polices> Polices Windows (Figure 1) ;

·         Soit directement en appelant Drakfont à partir d'un terminal (Figure2).

Dans les deux cas, le mot de passe administrateur sera demandé. Il sera également demandé de choisir les polices, faute de quoi tout le contenu de Windowsfonts sera installé. L'inconvénient de cet outil simplissime est d'installer par défaut dans /usr/X11R6/lib/X11/fonts/drakfont et que celui-ci peut déjà contenir des polices à utiliser par d'autres applications, Gimp par exemple, et qui ne nécessitent pas d'être lissées au démarrage. Procéder ainsi ferait perdre le bénéfice de rapidité escompté.

Evidemment, il est toujours possible de ruser.
Par exemple, en renommant ../drakfont avant d'opérer, ce qui aura pour résultat de forcer Drakfont à recréer un nouveau répertoire ../drakfont qu'il remplira avec les polices choisies; puis en renommant ensuite celui-ci par ../Mespolices, et en redonnant son nom d'origine à ../drakfont.
Mais il y a mieux.

Il existe un programme extraordinaire, Kfontinst, disponible sur <http://apps.kde.com/rf/2/latest> qu'on ne peut mettre en uvre qu'à partir du KDE Control Center. Avantage sur Drakfont, il permet d'installer aussi bien des Type1 que des True Type, et surtout, il visualise les polices non encore installées (Gfontview le permet également, mais il n'autorise pas l'installation) : inutile donc de se souvenir de l'aspect d'une police ; on la choisit à vue, ce que ne permet pas Drakfont. De plus, Kfontinst permet d'effectuer l'installation dans son répertoire personnel, ce qui n'interfère pas alors avec ../drakfont existant. (Figure 3)

Pour ma part, j'ai choisi d'installer les polices à lisser dans /home/andre/.kde/share/fonts/TrueType. Lorsque l'installation est terminée, en plus des TTF, le répertoire contient les polices converties en afm et pfb, ainsi que les indispensables fonts.dir, fons.scale, encoding.dir, tandis que le répertoire parent contient le fichier Fontmap, tous nécessaires soit pour Xfree, soit pour Ghoscript, et cela d'une manière totalement transparente.

Renseigner XFree et Xft
On a beau copier des tonnes de polices, si Xfree ne sait où aller les chercher pour les prendre en charge, cela ne sert à rien. Deux man uvres sont encore nécessaires : d'abord insérer le nouveau chemin dans /etc/X11/fs/config, afin que toutes les applications Xfree puissent les utiliser.

# allow a max of 4 clients to connect to this font server
client-limit = 4
clone-self = off
catalogue = /usr/X11R6/lib/X11/fonts/misc:unscaled,
/usr/X11R6/lib/X11/fonts/75dpi:unscaled,
/usr/X11R6/lib/X11/fonts/Type1,
/usr/X11R6/lib/X11/fonts/Speedo,
/usr/X11R6/lib/X11/fonts/mdk:unscaled,
/usr/X11R6/lib/X11/fonts/drakfont,
/usr/X11R6/lib/X11/fonts/pcf_drakfont,
/usr/share/fonts/default/Type1,
/usr/share/fonts/default/type1,
/usr/share/fonts/sharefont,
/usr/share/fonts/freeefont,
/usr/share/fonts/sketch,
/home/andre/.kde/share/fonts/TrueType,
.......
etc.

Ensuite, indiquer au serveur de polices ce qu'il doit lisser, dans /etc/X11/XftConfig :

# XftConfig
dir "~/.kde/share/fonts/TrueType"
#dir "/usr/share/fonts/ttf/unicode"
......
etc.

Paramétrer les applications
Pour obtenir un résultat, il faut que les applications utilisent les nouvelles polices. KDE, Konqueror, Kmail, Krusader, Quanta, etc. seront paramétrés pour afficher icônes et menus avec du Verdana 11 points ou du Tahoma même taille, et leur contenu avec la police que l'on préfère, tout cela par le biais du KDE Control Center, et le menu préférences des applications.

Résultats
Pour voir la différence, le plus simple est de relancer le système : cela n'oblige pas à mémoriser les commandes spécifiques à la prise en compte des nouvelles polices.
Le premier constat que l'on fait est la rapidité du lancement de KDE et de toute application : seul le répertoire spécifié est scruté à la recherche des polices à lisser et non plus l'ensemble des répertoires de polices. Tout est lissé, même le simple texte dans Kedit, ou l'affichage en hexadécimal dans Khexedit.
En revanche, KWrite en fonctionne plus. Le terminal Kvt est incapable d'afficher correctement les caractères semi-graphiques de Midnight Commander. Pour ce faire, on lui préférera le terminal Rxvt (Figure 4).

Le progrès le plus frappant, outre celui visible dans Konqueror ou Krusader, est celui touchant Quanta+. Le montage ci-dessous montre le même document prévisualisé avec lissage, en noir, et sans lissage, en rouge, dans Quanta+. Tout commentaire serait superflu (Figure 5).

De plus, on constate que sans cette manipulation, KWord et les autres composants de KOffice offraient dans leur menu déroulant la possibilité d'utiliser n'importe quelle police reconnue par XFree. En réalité, bon nombre d'entre elles ne s'affichaient pas et lorsqu'elles le faisaient, c'était avec le même aspect baveux que Quanta+. Parfois, on obtenait purement et simplement la fermeture de l'application avec la fameuse fenêtre "Gestionnaire de crash de KDE" et le message type: "L'application... s'est terminée anormalement et a provoqué le signal 11 (SIGSEGV)".

Après installation des polices comme indiqué ci-avant et demande de lissage dans XftConfig, KOffice permet de choisir uniquement parmi les nouvelles polices à l'exclusion de toute autre. Et elles sont alors parfaitement utilisables et lissées: c'était le but recherché.

Tant qu'on y est, pourquoi ne pas faire bénéficier AbiWord, l'autre traitement de texte de Linux "compatible" Word, du même traitement ? C'est facile et permet d'économiser pas mal de place sur le disque dur. En effet, AbiWord arrive avec ses propres polices qui sont des doublons de ce qui existe déjà sur le système. Les polices en question se trouvent dans /usr/ share/abisuite/AbiSuite/fonts (chemin de la Mandrake 8). Il s'agit de 4 Mo de fichiers afm et pfa. Or, rappelons-nous que Kfontinst conserve les TTF d'origine et ajoute les conversions en afm et pfb qu'il opère. Donc, AbiWord, qui utilise des Type1, pourra utiliser les mêmes polices que KWord et donc les véritables Times, Arial et Courrier converties en Type1 par Kfontinst.

On opérera ainsi :
- copier dans ~/.kde/share/fonts/ TrueType les quatre fichiers *.u2g d'AbiWord définissant la forme des caractères (glyph) génériques Adobe ainsi que ceux des Dingbats et des Symbol (à noter qu'AbiWord fonctionne et affiche les caractères de nos TTF converties même sans cette précaution ; cependant, si ça ne fait pas de bien, ça ne peut pas faire de mal non plus ! Quelqu'un plus au fait de l'utilité de ces quatre fichiers pourrait-il en informer l'aimable société ? )

- ignorer le fichier fonts.scale.abi dont l'objectif est de donner des pseudonymes décents Arial, Times New Roman... à des polices plus ou moins ressemblantes.

- effacer (ou renommer si l'on a des doutes) le fichier /usr/share/abisuite/AbiSuite/fonts.

- créer un lien symbolique (avec MC : facile !) /usr/share/abisuite/AbiSuite/fonts pointant sur ~/.kde/share/fonts/TrueType. Cette opération a pour but d'indiquer à AbiWord quelles polices il doit utiliser, tout en le bernant, puisqu'on lui fait croire que son répertoire .../fonts est toujours présent, tandis qu'en réalité on le dirige subrepticement vers notre répertoire. Les ruses de Linux, c'est incroyable ! Mais vrai.
L'image suivante montre AbiWord affichant les nouvelles polices (Figure 6) : évidemment, c'est du Gtk, donc pas de lissage (en juillet 2001).

Resterait à se pencher sur le cas douloureux de Star Office, dont l'affichage lamentable déshonore considérablement ses immenses qualités. Ce ne sera pas pour aujourd'hui. Un volontaire peut s'y atteler s'il le désire.


Conclusion
Y en a-t-il une ? Peut-être, pour expliquer le titre.
Tout ce qui précède, j'en ai bien conscience, ne peut prétendre à l'exposition dans un colloque d'administrateurs systèmes Unix. Il s'agit d'un bricolage, d'un de ces petits trucs dont on ne fait pas commerce et que l'on transmet à des amis, parce qu'on sait que cela sera bon pour eux comme cela a été profitable pour nous. Linux autorise encore ce genre de civilités qui, le cas présent, permettent efficacité, beauté et célérité. Que demander de plus ?

André PASCUAL
<andre@linuxgraphic.org>