web-dev-qa-db-fra.com

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

Certaines polices Windows posent un problème d’affichage où le crénage par ligature semble s’effacer et rendre les deux lettres en gras. Voici une capture d'écran d'un email utilisant Helvetica dans Firefox:

enter image description here

Comme vous pouvez le constater, cela semble être lié à la façon dont les caractères croisés (t et f) se connectent les uns aux autres et des lettres comme i.

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

Note: Je pense que cela n'affecte que Firefox. Chrome et LibreOffice conviennent tous les deux.

22
Oli

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

Editez ou créez le fichier ~/.fonts.conf et 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 connectez-vous à nouveau, et Calibri (et éventuellement quelques autres polices) aura une bien meilleure apparence (en réalité même mieux qu'avec les autres réponses données ici, car les substitutions de bitmap laides sont complètement désactivées).

25
Calimo

Désactiver ligatures (voir réponse de fonts.conf de Calimo ) est la mauvaise direction! des ligatures "gras" aliasées dans des polices telles que Calibri , mais cela supprime également une partie de la beauté de la typographie. C'est assez similaire à la réduction de 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 et en installant Carlito , qui est " compatible métrique avec Calibri" et est emballé avec "une entrée de mappage sur fontconfig (local.conf)" et l'actualisation de 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* bien que le cas et l'emplacement exact puissent être différents.)

Avant de supprimer Calibri de Microsoft, j’enregistrais dans LibreOffice un document test qui utilisait Calibri et prenait une capture d’écran. Cela fait, je quitte LibreOffice, je l’ouvre à nouveau, puis je charge mon document de test. Le nom de police "Calibri" était en italique pour indiquer qu’il avait été remplacé. J'ai pris une capture d'écran de cette version substituée et l'ai collée sous l'original:

Calibri tests

Le texte ci-dessus est une paire de captures d’écran de 13pt Calibri, le calibre de Microsoft au dessus de Carlito correspondant à fontconfig. Il n'y a pas de gras, pas de formatage, le "crénage en paire" activé, tel que rendu par LibreOffice 5.0.5.1.

Carlito est assez proche de Calibri, les ligatures sont bien rendues et c'est beaucoup plus joli dans l'ensemble.

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

Mais qu'en est-il de Helvetica?

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

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

Si vous exécutez cela et récupérez Arial, c'est une très bonne raison d'avoir le problème de ligature décrit ci-dessus - Arial n'est pas une bonne police.

Helvetica a toute la culture qui l’entoure et je ne trouve pas de police compatible métrique avec Helvetica. Arial (et les polices métriques compatibles avec Arial, y compris Liberation Sans et son fork, Arimo , ont des largeurs de caractère identiques (ce qui signifie qu'elles sont "pour la plupart" compatibles métriques; le texte sera enveloppé de la même manière qu'avec Helvetica Parmi les polices gratuites, Liberation Sans et Nimbus Sans semblent ont 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 contient également des polices condensées, ainsi que des polices serif et monospace) dans tous les documents IBM, bien qu’il ne soit pas du tout compatible métrique avec Helvetica ou d’autres polices. Font Squirrel a une vue intéressante de exemples de polices Plex .

Alias ​​Fontconfig

Pour aliaser manuellement Helvetica dans une autre police (sans avoir donc besoin de supprimer Calibri et/ou Arial, vous devez également les aliaser manuellement), éditez votre fichier ~/.config/fontconfig/fonts.conf (pour les systèmes plus anciens, il s'agit de ~/.fonts.conf. Pour éviter toute confusion, je symlink comme indiqué dans cette réponse , en ajoutant une nouvelle section <alias> 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>
9
Adam Katz

La réponse de lgarzo fonctionnera uniquement sur les sites Web ayant une classe "noligs" dans 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; }

Le moyen le plus simple consiste à créer un nouveau style avec l’extension Stylish .

6
Calimo

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

  • Les ligatures semblent être anti-aliasées , alors que le reste du texte ne l’est pas. Par conséquent, il semble plus gros qu'un texte normal (bien que je ne puisse nier qu'il est aussi gras).
  • Autant que je sache, 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 est-ce une police différente?

Je pense que le problème est basé sur la police ne supportant pas correctement 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: Mozilla Extensions

4
lgarzo

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 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)

1