Le syst�me de font

Honnetement je ne suis pas s�r d'avoir tout compris sur la fa�on dont sont g�r�es les fonts sous Linux. Beaucoup de noms sont souvent cit�s mais � quoi servent-ils vraiment ? Voici les informations que j'ai reussi � glaner :

  • le serveur X (xfree 4.x ou x.org) peut g�rer des fonts si on lui indique le(s) chemin(s) o� chercher. Ces infos se trouvent dans le fichier de configuration (exemple : /etc/X11/xorg.conf), section Files, directives FontPath.
  • xfs : (X Font Server) fourni des polices � X. Il est lanc� � part et peut faire des trucs tr�s fun comme fournir des fonts � un X distant via le reseau. En g�n�ral il est activ� dans le fichier de conf de X via la directive :
    FontPath   "unix/:7100"
    L� se posent les premi�res questions : � quoi sert xfs si le serveur X peut g�rer les fonts tout seul comme je viens de le dire ci-dessus ? Un element de r�ponse dans l'avant dernier post de ce topic sur HFR. En le virant mon X fonctionne tout aussi bien...
  • xfstt et xfs-xtt sont des alternatives � xfs capables de g�rer les polices TrueType � l'�poque o�, ni xfs, ni X, ne le pouvait. En gros, � oublier.
  • FreeType (actuellement en version 2) est un moteur de rendu pour, entre autres, les fonts TrueType. Il est disponible sous forme de librairie (paquets libfreetype*). D'apr�s ce que j'ai compris, c'est l'avenir (mais l'avenir de quoi ?). Voir le site http://www.freetype.org/
  • fontconfig est un outil permettant aux applications de trouver les fonts et de les configurer correctement. Seules les applications r�centes (GTK 2 par exemple) l'utilisent. Voir le site http://www.fontconfig.org/ pour la doc.
  • defoma (DEbian FOnt MAnager) est l'outil magique de Debian pour uniformiser et g�rer automatiquement tout ce bazar, et faire surement pleins d'autres trucs cools dont je me secoue le cocotier pour l'instant. Je sais pas comment il fonctionne, mais il fonctionne et c'est l'essentiel :)

Les packages qui vont bien

Voici les packages � installer (si ce n'est pas d�j� fait). Tout d'abord, les logiciels/libraires :

  • libfreetype6 et libttf2 pour FreeType
  • fontconfig et libfontconfig1 pour fontconfig
  • defoma et x-ttcidfont-conf, les deux packages magiques de Debian

Ensuite, pour avoir des fonts sympas :

  • Tous les packages xfonts-* que vous voulez pour avoir des fonts sous X (pas TrueType), et surtout :
    • xfonts-100dpi
    • xfonts-100dpi-transcoded
    • xfonts-75dpi
    • xfonts-75dpi-transcoded
    • xfonts-base
    • xfonts-base-transcoded
    • xfonts-scalable
    J'ai d�j� eu des probl�mes vraiment bizarres (segfault de certaines applications, ou polices illisibles) si ces packages manquent...
  • msttcorefonts (disponible dans contrib), pour avoir les fonts Microsoft standards (Verdana, Arial, Times New Roman, Courier New, ...) Indispensable pour surfer correctement !
  • Tous les packages ttf-* que vous voulez pour avoir des fonts TrueType.

Configuration

Normalement dpkg doit envoyer un mail � l'administrateur avec les informations n�cessaires pour la configuration du bousin. Si ce n'est pas le cas, regardez le chapitre "Polices TrueType dans X" dans le guide de r�f�rence Debian.

Voir �galement cet autre site pour plus d'informations.

A partir de cette �tape, les polices devraient �tre g�r�es "correctement", c'est � dire que, quelque soit l'application (gtk1 ou gtk2 par exemple), vous aurez toujours les m�mes fonts disponibles (dont les fonts TrueType).

Antialias et polices par d�faut : fontconfig est ton ami

Premi�re chose qui me semble vital pour avoir un bureau joli : virer les fonts toutes moches fournies par d�faut pour les remplacer par leur �quivalent Microsoft (je sais, c'est mal), c'est � dire :

Polices par d�faut sous Windows
Famille Windows Linux
serif Times New Roman ?
sans-serif Verdana ?
monospace Courier New ?

Pour ce faire, il faut l'expliquer � fontconfig. Cr�ez un fichier /etc/fonts/local.conf contenant :

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
        <!-- Voir la doc de defoma -->
        <dir>/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType</dir>

        <!-- Alias certaines fonts "connues" par les fonts Microsoft -->
        <alias>
                <family>Times</family>
                <prefer><family>Times New Roman</family></prefer>
                <default><family>serif</family></default>
        </alias>

        <alias>
                <family>Helvetica</family>
                <prefer><family>Verdana</family></prefer>
                <default><family>sans-serif</family></default>
        </alias>

        <alias>
                <family>Courier</family>
                <prefer><family>Courier New</family></prefer>
                <default><family>monospace</family></default>
        </alias>

        <!-- Utiliser de preference les fonts Microsoft -->
        <alias>
                <family>serif</family>
                <prefer><family>Times New Roman</family></prefer>
        </alias>

        <alias>
                <family>sans-serif</family>
                <prefer><family>Verdana</family></prefer>
        </alias>

        <alias>
                <family>monospace</family>
                <prefer><family>Courier New</family></prefer>
        </alias>
</fontconfig>

Exemple trouv� dans la doc de fontconfig, par l�.

Ensuite, personnellement, je trouve que l'anti-alising (fr, en) sur (certaines) petites fonts (disons celles inf�rieures � 14 pouces), c'est absolument immonde. Les polices apparaissent "grasses" et visuellement j'aime pas du tout.

Pour vous faire une id�e, voici ce que �a donne visuellement (avec un Mozilla Firefox fraichement install�) :

Avec anti-aliasing
Avec anti-aliasing
Sans anti-aliasing
Sans anti-aliasing

Mon r�glage de l'anti-aliasing est (toujours dans le fichier /etc/fonts/local.conf) :

<!-- L'anti aliasing sur certaines font c'est une horreur... -->
<match target="font">
        <test name="family">
                <string>Verdana</string>
                <string>Arial</string>
                <string>Times New Roman</string>
                <string>Courier New</string>
                <string>Helvetica</string>
        </test>
        <test name="size" compare="less">
                <int>14</int>
        </test>

        <edit name="antialias" mode="assign">
                <bool>false</bool>
        </edit>
</match>
<!--
        et une regle pour firefox, une...
        apparement le nom de la regle a change entre size et pixelsize, a voir
-->
<match target="font">
        <test name="family">
                <string>Verdana</string>
                <string>Arial</string>
                <string>Times New Roman</string>
                <string>Courier New</string>
                <string>Helvetica</string>
        </test>
        <test qual="any" name="pixelsize" compare="less_eq">
                <double>18</double>
        </test>
        <edit name="antialias" mode="assign">
                <bool>false</bool>
        </edit>
</match>
        

Avec tous ces reglages, j'ai enfin les fonts que j'aime, et surtout je n'ai plus � me casser la t�te entre les applis gtk1, gtk2 et compagnie ! Apr�s libre � vous d'adapter ces reglages comme bon vous semble.

Liens annexes