web-dev-qa-db-fra.com

Puis-je remplacer les polices installées par ttf-mscorefonts-installer, préférer les polices Liberation?

Je devais installer apt-ttf-mscorefonts-installer sur Ubuntu 12.04/12.10. La version abrégée est que je dois canaliser les fichiers PDF d'une application nécessitant ces polices pour certains glyphes.

Le problème, après avoir exécuté cette commande, est que les polices de mon navigateur Web (et de certaines applications Java sont maintenant "moche". C'est évidemment un avis subjectif mais c'est celui que je tiens.

Je veux récupérer les anciennes polices dans la plupart des cas (Liberation, DejaVu, Ubuntu, ...). Je ne sais pas comment décrire cela au mieux, mais voici un exemple:

Exemple de CSS dans le navigateur Web

font-family: Verdana,Arial,sans-serif;

Sans ttf-mscorefonts-installer (cas 1):

    $ fc-match Verdana
    LiberationSans-Regular.ttf: "Liberation Sans" "Regular"

    $ fc-match Arial
    LiberationSans-Regular.ttf: "Liberation Sans" "Regular"

    $ fc-match sans-serif
    LiberationSans-Regular.ttf: "Liberation Sans" "Regular"`

Avec ttf-mscorefonts-installer (cas 2):

    $ fc-match Verdana
    Verdana.ttf: "Verdana" "Normal"

    $ fc-match Arial
    Arial.ttf: "Arial" "Normal"

    $ fc-match sans-serif
    LiberationSans-Regular.ttf: "Liberation Sans" "Regular"`

Je veux (cas 1). Eventuellement, je veux que les polices de (Cas 2) ne soient pas "moche" IE. ils sont plus irréguliers, moins lisses que leurs alternatives gratuites dans mes navigateurs Web.

Est-ce possible?

5
conner_bw

fontconfig utilise un ensemble complet de systèmes de substitution de polices. Il existe différents niveaux de définition de police: nom de la police et familles de polices. Étant donné une police spécifique, fontconfig utilise la police du même nom si elle est disponible, puis cherche sinon la famille de polices du même nom. S'il n'y a toujours pas de correspondance, il utilise la définition de famille de polices standard comme substitution, c'est-à-dire Sans, Sans-serif et Mono.

Ubuntu a la famille de polices 'Verdana' définie dans `/etc/fonts/conf.d/45-latin.conf ', où' Verdana 'est réglé par défaut sur' Sans-serif ', ce qui signifie Sans-serif est employé pour 'Verdana' par défaut. Mais 'Verdana.ttf' serait utilisé à la place s'il est installé.

Dans votre système, la police préférée dans la famille Sans-serif est 'Liberation Sans', donc fontconfig utilise le 'Liberation Sans' comme substitution à 'Verdana' à condition qu'il n'y ait pas de police du même nom, alors qu'utilise 'Verdana.ttf' si c'est dans le chemin de recherche. Cela explique ce que vous avez posté.

Donc, la solution à votre problème est que, vous devez remapper la police 'Verdana' en une police différente, ou en un groupe de polices qui attribue la priorité la plus haute à 'Liberation Sans'. (Ce dernier cas est recommandé)

Ouvrez ou créez le fichier ~/.config/fontconfig/fonts.conf, ajoutez ce qui suit:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>

<match>
    <test name="family"><string>Verdana</string></test>
    <edit name="family" mode="prepend" binding="strong">
        <string>Liberation Sans</string>
        <string>Verdana</string>
    </edit>
</match>

</fontconfig>

Notez que ~/.fonts.conf est obsolète maintenant, et si vous avez déjà le fichier fonts.conf défini par l'utilisateur, supprimez l'en-tête et le pied de page et ne conservez que la section 'correspondance'. Et il serait trop long de démontrer la même solution de contournement sur "Arial". Je suis sûr que vous pouvez le trouver vous-même.

4
funicorn