Comment réparer les ligatures des polices TTF (tt, ti, fi, ff, etc.) dans Firefox?

24

Avec certaines polices Windows, il y a un problème d'affichage où le crénage du crénage semble s'effondrer et rendre les deux lettres en gras. Voici une capture d'écran d'un e-mail utilisant Helvetica dans Firefox:

entrez la description de l'image ici

Comme vous pouvez le voir, cela semble être quelque chose sur la façon dont les caractères croisés ( tet f) se connectent les uns aux autres et les lettres comme i.

J'ai eu ce problème depuis très longtemps (sur plusieurs systèmes) et je me suis demandé si quelqu'un avait déjà vu des problèmes similaires surgir et avait trouvé un moyen de les résoudre.

Remarque: je pense que cela n'affecte que Firefox. Chrome et LibreOffice vont bien.

Oli
la source

Réponses:

27

Une autre solution qui fonctionnera avec toutes les applications, y compris Libre Office, est proposée par aldeby :

Modifiez ou créez le fichier ~/.fonts.confet collez-y ce code:

<match target="font" >
<edit name="embeddedbitmap" mode="assign">
<bool>false</bool>
</edit>
</match>

Assurez-vous de conserver la structure XML.

Déconnectez-vous et reconnectez-vous, et Calibri (et peut-être certaines autres polices) sera beaucoup mieux (en fait encore mieux qu'avec les autres réponses données ici, car les vilaines substitutions bitmap sont complètement désactivées).

Calimo
la source
3
Celui-ci est une meilleure solution que les précédents, car il s'agit d'une solution globale, et l'élimination des ligatures est un obstacle. Les ligatures sont là pour rendre le texte plus agréable à lire et les désactiver pour contourner un problème de configuration n'est pas idéal.
scruss
Quiconque est légèrement OCD ou anal suffisamment rétentif pour se soucier de formater correctement le contenu de ce fichier XML (bien sûr, vous, Linux, ne vous soucieriez jamais de telles choses ;-)):<?xml version="1.0"?><!DOCTYPE fontconfig SYSTEM "fonts.dtd"><fontconfig><match target="font"><edit name="embeddedbitmap" mode="assign"><bool>false</bool></edit></match></fontconfig>
Adam Plocher
Un lien vers aldeby mène maintenant à un site d'escroquerie par phishing
charsi
1
@charsi merci, je l'ai remplacé par un lien vers les archives Web.
Calimo
Je n'ai même pas dû me déconnecter et me reconnecter. Il suffit de rafraîchir la page (dans Firefox) et de redémarrer l'application (LibreOffice).
Marc.2377
9

La désactivation des ligatures (voir la fonts.confréponse de Calimo ) est la mauvaise direction! Il peut supprimer ces ligatures "gras" suraliasées dans des polices comme Calibri , mais il supprime également une partie de la beauté de la typographie. C'est assez similaire à réduire la police jusqu'à ce que vous ne puissiez pas faire la différence.

J'ai résolu ce problème pour mon système en supprimant la police Calibri, en installant Carlito , qui est " métrique compatible avec Calibri" et est fourni avec "une entrée de mappage vers fontconfig (local.conf)", et en actualisant mon cache de polices:

$ rm ~/.fonts/microsoft/CALIBRI*
$ sudo apt install fonts-crosextra-carlito
$ fc-cache

Vous pouvez ensuite vérifier que Carlito remplace Calibri:

$ fc-match Calibri
Carlito-Regular.ttf: "Carlito" "Regular"

(Si cela ne fonctionne pas, vous aurez peut-être besoin de quelque chose comme sudo rm /usr/share/fonts/truetype/msttcorefonts/calibri*si le boîtier et l'emplacement exact peuvent différer.)

Avant de supprimer Calibri de Microsoft, j'ai enregistré un document de test dans LibreOffice qui utilisait Calibri et a pris une capture d'écran. Après cela, j'ai quitté LibreOffice, l'ai ouvert à nouveau, puis j'ai chargé mon document de test. Le nom de la police "Calibri" a été mis en italique pour indiquer qu'il a été remplacé. J'ai pris une capture d'écran de cette version substituée et l'ai collée sous l'original:

Tests Calibri

Le texte ci-dessus est une paire de captures d'écran de Calibri 13pt, avec Calibri de Microsoft au-dessus de Carlito, comme le fait Fontconfig. Il n'y a pas de gras, pas de formatage, le "crénage de paire" est activé, comme rendu par LibreOffice 5.0.5.1.

Carlito est assez proche de Calibri, les ligatures s'affichent correctement et c'est beaucoup plus joli dans l'ensemble.

Vous pouvez faire de même avec Caladea pour Cambria avec fonts-crosextra-caladeaet vous pouvez utiliser les polices Croscore de Google Arimo, Tinos et Cousine pour Arial , Times New Roman et Courier New avec fonts-croscore. En savoir plus sur le wiki Debian de substitution des polices Calibri et Cambria .

Mais qu'en est-il d'Helvetica?

Cette question concerne la police Helvetica , qui est la police sans empattement préférée d'Apple . Microsoft a préféré Arial avant de passer à Calibri. Le mappage Linux par défaut varie selon la distribution, mais il s'agit généralement de Nimbus Sans L ou de Liberation Sans , par exemple

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

Si vous exécutez cela et obtenez Arial, c'est une assez bonne raison d'avoir le problème de ligature décrit ci-dessus - Arial n'est pas une excellente police.

Helvetica a toute la culture qui l'entoure et je ne trouve pas de police entièrement compatible avec Helvetica. Arial (et les polices métriquement compatibles avec Arial, y compris Liberation Sans et sa fourchette, Arimo , ont des largeurs de caractères identiques (ce qui signifie qu'elles sont "principalement" compatibles avec les métriques; le texte s'encapsule de la même manière qu'avec Helvetica). Parmi les polices gratuites, Liberation Sans et Nimbus Sans semblent avoir l'esthétique la plus similaire.

Il y a aussi IBM Plex , une nouvelle police avec beaucoup d'argent derrière elle [ 1 ] [ 2 ] . Plex est conçu pour remplacer Helvetica (il a également des polices condensées sans ainsi que des polices serif et monospace) dans tous les matériaux d'IBM, bien qu'il ne soit pas du tout compatible avec Helmetica ou d'autres polices. Squirrel Font a une belle vue des échantillons des polices Plex .

Alias ​​Fontconfig

Pour aliaser manuellement Helvetica vers une autre police (et donc pas besoin de supprimer Calibri et / ou Arial, mais dans ce cas, vous devez également alias manuellement ceux-ci), éditez votre ~/.config/fontconfig/fonts.conffichier (pour les systèmes plus anciens, c'est-à-dire ~/.fonts.conf. Pour éviter toute confusion, je crée un lien symbolique entre cette dernière à l'ancien) comme indiqué dans cette réponse , en ajoutant une nouvelle <alias>section pour Helvetica (celle-ci utilise Arimo. Assurez-vous de l'avoir installée):

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

  <alias>
    <family>Helvetica</family>
    <prefer><family>Arimo</family></prefer>
  </alias>

</fontconfig>
Adam Katz
la source
1
C'est une bien meilleure réponse que celle acceptée. Je tiens à souligner qu'un fichier de configuration pratique est disponible sur le wiki de l' archive
Xananax
la première ligne devrait maintenant être sudo rm -R / usr / share / fonts / truetype / calibri
dez93_2000
Si le résultat d'un match fc d'Helvetica EST ARIAL sur Linux, savez-vous comment forcer Libération Sans? Supprimez simplement Arial? Merci
dez93_2000
@ dez93_2000 - c'est probablement /usr/share/fonts/truetype/msttcorefonts/callibri*. Je mettrai à jour ma réponse pour corriger l'alias de police car elle ne rentrera pas dans un commentaire.
Adam Katz
J'ai soigneusement inspecté les résultats rendus de la réponse acceptée (en utilisant la police Calibri) et je n'ai trouvé aucune différence par rapport à un bon rendu connu. Il ne manquait absolument aucune beauté.
Marc.2377
6

La réponse de lgarzo ne fonctionnera que sur les sites Web qui ont une classe "noligs" sur le texte (la plupart des sites Web n'en ont pas).

Pour désactiver globalement les ligatures sur tous les sites Web, ajoutez la ligne suivante à votre userChrome.css:

* { -moz-font-feature-settings: "liga" 0; }

La façon la plus simple de le faire est de créer un nouveau style avec l' extension Stylish .

Calimo
la source
+1 pour la suggestion élégante. AFAIR J'ai cité la documentation de Mozilla (puisque je m'attendais à ce que l'OP puisse transformer cela comme il le souhaitait :)) Mon intention était d'inclure la règle dans le CSS de la page. (Impossible de vérifier la source, cependant. Il semble être en panne ATM.)
lgarzo
1
Cette syntaxe n'était valable que jusqu'à Firefox 14, selon stackoverflow.com/a/15161336/4464570 , et n'est désormais plus reconnue par le navigateur. J'ai modifié votre article pour le mettre à jour avec la syntaxe actuelle.
Byte Commander
4

Quelques remarques me sont venues à l'esprit en regardant l'image:

  • Les ligatures semblent être anti-aliasées , tandis que le reste du texte ne l'est pas. Par conséquent, il semble plus gras que le texte normal (bien que je ne puisse pas le nier, il semble également en gras).
  • AFAIK la police Helvetica est une police non standard , c'est-à-dire qu'elle n'est pas fournie avec les installations Windows par défaut. L'avez-vous installé ou s'agit-il d'une police différente?

Je pense que le problème est dû au fait que la police ne prend pas correctement en charge les ligatures / crénage.

Vous pouvez désactiver les ligatures dans FF avec la règle CSS ci-dessous:

/* disable common ligatures, usually on by default */
.noligs { -moz-font-feature-settings: "liga" 0; }

Source: Référence CSS: extensions Mozilla

lgarzo
la source
Cette syntaxe n'était valable que jusqu'à Firefox 14, selon stackoverflow.com/a/15161336/4464570 , et n'est désormais plus reconnue par le navigateur. J'ai modifié votre article pour le mettre à jour avec la syntaxe actuelle.
Byte Commander
1

En plus de la réponse de Calimo, les utilisateurs d'Archlinux peuvent trouver de l'aide https://wiki.archlinux.org/index.php/font_configuration - Désactiver les polices bitmap

Il a suggéré de créer un fichier de configuration local ~ / .config / fontconfig / conf.d / 20-no-embedded.conf, mais j'ai opté pour une option à l'échelle du système

sudo touch /etc/fonts/conf.d/20-no-embedded.conf
sudo chmod 777 /etc/fonts/conf.d/20-no-embedded.conf
nano 777 /etc/fonts/conf.d/20-no-embedded.conf

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="font">
    <edit name="embeddedbitmap" mode="assign">
      <bool>false</bool>
    </edit>
  </match>
</fontconfig>

Ensuite, redémarrez simplement l'application (dans mon cas, Thunderbird)

Uzumaki D. Ichigo
la source
Si juste en dessous de la ligne "<match target =" font ">" vous ajoutez: <test name = "family"> <string> Calibri </string> </test> Ou quel que soit le nom de la police (Helvetica), vous modifiez uniquement les paramètres de police pour cette police spécifique.
zeehio
L'autorisation doit être 644, pas 777, car vous y mettez un fichier (pas un lien symbolique).
Marc.2377