Substitution de polices avec ~ / .fonts.conf

18

J'essaie d'utiliser ~ / .fonts.conf pour remplacer Helvetica par Droid Sans, voici le contenu du fichier:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="pattern">
    <test qual="any" name="family"><string>Helvetica</string></test>
    <edit name="family" mode="assign"><string>Droid Sans</string></edit>
  </match>
</fontconfig>

mais quoi qu'il arrive, rien ne semble se produire. J'ai essayé d'exécuter fc-cache, je me suis enregistré /etc/fonts/conf.det j'ai trouvé 50-user.confce qui semble appeler explicitement des configurations spécifiques à l'utilisateur.

Qu'est-ce que je rate?

Merci

EDIT: après enquête, j'ai découvert que d'autres règles dans /etc/fonts/conf.dla configuration utilisateur de remplacement, donc la liaison user.confà 00-user.confaidé. Mais ce n'est qu'un succès partiel, car je peux spécifier les polices à remplacer, mais le substitut de mon choix est ignoré: en d'autres termes, je peux rendre Helveticainvalide et le système revient à la police suivante (c'est-à-dire dans le navigateur, il prend la police suivante spécifiée dans la feuille de style, si aucune n'est présente, elle affiche le standard sans empattement).

Matteo Riva
la source
Je suis venu ici parce que j'allais accomplir quelque chose de similaire. J'espère que quelqu'un a une réponse ...
Ludwig Weinzierl
toujours à la recherche d'une réponse.
Capi Etheriel

Réponses:

16

Je pense que l'attribut de liaison manquait dans votre configuration. (voir aussi fonts-conf ). Selon votre autre configuration, une liaison "identique" ou "forte" pourrait probablement fonctionner, tandis que "faible" pourrait ne pas vous donner ce que vous voulez.

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="pattern">
    <test qual="any" name="family"><string>Helvetica</string></test>
    <edit name="family" mode="assign" binding="same"><string>Droid Sans</string></edit>
  </match>
</fontconfig>
frenkx
la source
1
A travaillé pour moi. On dirait que l'ajout de l' bindingattribut a fait la différence. J'utilise fontconfig-2.8.0.
MaoPU
Cela a fonctionné pour moi
miloshadzic
3

Je pense que le mécanisme d'alias fonctionnerait pour cela:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <alias>
    <family>Helvetica</family>
    <prefer>Droid Sans</prefer>
  </alias>
</fontconfig>
Geoff Reedy
la source
1
<alias> n'est-il pas uniquement destiné à remplacer les polices non installées?
MaoPU
@MaoPU: J'ai pensé la même chose, mais après avoir lu la documentation, cela m'a amené à croire que ce comportement est configuré. <accept>a priorité lorsque la police n'est pas installée, <prefer>a priorité indépendamment du fait que la police soit installée.
JM Becker
/ \ Non, ce n'est pas le cas, sauf si le .conffichier contenant cette règle est lu en premier.
Marc.2377
Hmm - Cela dit, il fait le travail si binding="strong"est utilisé avec l' <alias>élément!
Marc.2377
0

Est-ce que "fc-list" affiche réellement "Helvetica"? Que dit fc-match? Sur ma box (F-12) je reçois:

 >fc-match Helvetica
n019003l.pfb: "Nimbus Sans L" "Regular"

Vous devrez peut-être également ajouter la police aliasée à votre substitution.

vasquez
la source
0

J'ai rencontré un problème similaire en essayant de nommer Helvetica en tant que famille sans empattement. Pour tous ceux qui rencontrent le même problème, regardez la configuration du système /etc/fonts/conf.d/qui contiendra des liens vers des fichiers /etc/fonts/conf.avail. J'ai dû supprimer beaucoup de ces alias pour obtenir un comportement déterministe.

j605
la source