Wie kann ich die Ligaturen von TTF-Schriftarten (tt, ti, fi, ff usw.) in Firefox korrigieren?

24

Bei bestimmten Windows-Schriftarten tritt ein Anzeigefehler auf, bei dem das Ligatur-Kerning auszublenden scheint und die beiden Buchstaben fett erscheinen lässt. Hier ist ein Screenshot einer E-Mail mit Helvetica in Firefox:

Bildbeschreibung hier eingeben

Wie Sie sehen, scheint es etwas mit der Art tund Weise zu tun zu haben, wie sich gekreuzte Zeichen ( und f) miteinander verbinden und Buchstaben mögen i.

Ich hatte dieses Problem sehr lange (über mehrere Systeme hinweg) und habe mich gefragt, ob jemals jemand ähnliche Probleme aufgetaucht ist und einen Weg gefunden hat, sie zu beheben.

Hinweis: Ich denke, das betrifft nur Firefox. Chrome und LibreOffice sind beide in Ordnung.

Oli
quelle

Antworten:

27

Eine andere Lösung, die mit allen Anwendungen funktioniert, einschließlich Libre Office, wird von aldeby bereitgestellt :

Bearbeiten oder erstellen Sie die Datei ~/.fonts.confund fügen Sie diesen Code ein:

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

Stellen Sie sicher, dass Sie die XML-Struktur beibehalten.

Melden Sie sich ab und wieder an, und Calibri (und möglicherweise einige andere Schriftarten) sehen viel besser aus (tatsächlich sogar besser als bei den anderen hier angegebenen Antworten, da die hässlichen Bitmap-Ersetzungen vollständig deaktiviert sind).

Calimo
quelle
3
Dies ist eine bessere Lösung als die früheren, da es sich um eine globale Lösung handelt und das Eliminieren von Ligaturen ein Problem ist. Ligaturen dienen dazu, das Lesen von Text angenehmer zu gestalten, und sie auszuschalten, um ein Konfigurationsproblem zu umgehen, ist nicht ideal.
Scruss
Jeder, der leicht OCD- oder anal-remanent genug ist, um sich um die korrekte Formatierung des Inhalts dieser XML-Datei zu kümmern (natürlich würden sich Linux-Leute nie um solche Dinge kümmern ;-)):<?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,
Der Link zu aldeby führt nun zu einer Phishing-Website
charsi 20.10.18
1
@charsi danke, ich habe es durch einen Link zum Webarchiv ersetzt.
Calimo
Ich musste mich nicht einmal ausloggen und wieder einloggen. Es genügte, die Seite (in Firefox) zu aktualisieren und die Anwendung (LibreOffice) neu zu starten.
Marc.2377,
9

Deaktivieren der Ligatur (siehe Calimo der fonts.confAntwort ) ist die falsche Richtung! Es kann diese überaliasisierten "fetten" Ligaturen in Schriftarten wie Calibri entfernen, aber es entfernt auch einige der Schönheiten der Typografie. Dies ähnelt dem Verkleinern der Schrift, bis Sie keinen Unterschied mehr feststellen können.

Ich habe dieses Problem für mein System gelöst, indem ich die Calibri-Schriftart entfernt, Carlito installiert , die " mit Calibri kompatibel " ist und "einen Zuordnungseintrag für fontconfig (local.conf)" enthält, und den Schriftart-Cache aktualisiert habe:

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

Sie können dann überprüfen, ob Carlito für Calibri steht:

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

(Wenn dies nicht funktioniert, benötigen Sie möglicherweise etwas, sudo rm /usr/share/fonts/truetype/msttcorefonts/calibri*obwohl sich der Fall und die genaue Position unterscheiden können.)

Vor dem Entfernen von Microsoft Calibri habe ich in LibreOffice ein Testdokument gespeichert, in dem Calibri verwendet wurde, und einen Screenshot erstellt. Danach habe ich LibreOffice beendet, erneut geöffnet und dann mein Testdokument geladen. Der Schriftname "Calibri" wurde kursiv geschrieben, um anzuzeigen, dass er ersetzt wurde. Ich habe einen Screenshot dieser ersetzten Version gemacht und ihn unter dem Original eingefügt:

Calibri-Tests

Bei dem obigen Text handelt es sich um ein paar Screenshots von 13pt Calibri, bei dem Microsoft Calibri über Carlito, wie von fontconfig dargestellt. In LibreOffice 5.0.5.1 ist keine Fettschrift, keine Formatierung und kein "Pair Kerning" aktiviert.

Carlito ist ganz in der Nähe von Calibri, Ligaturen werden korrekt gerendert und es ist insgesamt viel hübscher.

Mit Caladea für Cambria können Sie dasselbe tun fonts-crosextra-caladeaund mit den Croscore-Schriften von Google Arimo, Tinos und Cousine für Arial , Times New Roman und Courier New with fonts-croscore. Weitere Informationen finden Sie im Debian- Wiki zum Ersetzen von Calibri- und Cambria-Schriften .

Aber was ist mit Helvetica?

Bei dieser Frage wird nach der Helvetica- Schriftart gefragt , die Apples bevorzugte serifenlose Schriftart ist. Microsoft bevorzugte Arial, bevor es zu Calibri geändert wurde. Das Standard-Linux-Mapping variiert je nach Distribution, es ist jedoch normalerweise entweder Nimbus Sans L oder Liberation Sans , z

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

Wenn Sie das ausführen und Arial erhalten, ist dies ein ziemlich guter Grund für das oben beschriebene Ligaturproblem - Arial ist keine großartige Schriftart.

Helvetica ist sehr kulturell geprägt und ich kann keine Schriftart finden, die mit Helvetica vollständig metrisch kompatibel ist. Arial (und mit Arial metrisch kompatible Schriftarten, einschließlich Liberation Sans und seiner Fork Arimo , haben identische Zeichenbreiten (was bedeutet, dass sie "größtenteils" metrisch kompatibel sind; Text wird wie mit Helvetica umbrochen). Liberation Sans und Nimbus Sans scheinen die ähnlichste Ästhetik zu haben.

Es gibt auch IBM Plex , eine neue Schriftart mit viel Geld dahinter [ 1 ] [ 2 ] . Plex wurde entwickelt, um Helvetica (es hat auch kompakte Sans- sowie Serif- und Monospace-Schriften) in allen IBM-Materialien zu ersetzen, obwohl es in keiner Weise metrikkompatibel zu Helvetica oder anderen Schriften ist. Font Squirrel bietet eine schöne Ansicht von Beispielen der Plex-Schriftarten .

Aliase für Fontconfig

Um Helvetica manuell als Alias ​​für eine andere Schriftart zu verwenden (und daher Calibri und / oder Arial nicht zu entfernen, obwohl Sie diese in diesem Fall auch manuell als Alias ​​verwenden sollten), bearbeiten Sie Ihre ~/.config/fontconfig/fonts.confDatei (das gilt für ältere Systeme ~/.fonts.conf. Um Verwirrung zu vermeiden, verknüpfe ich diese Wie in dieser Antwort erwähnt , fügen Sie einen neuen <alias>Abschnitt für Helvetica hinzu (dieser verwendet Arimo. Stellen Sie sicher, dass Sie ihn installiert haben):

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

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

</fontconfig>
Adam Katz
quelle
1
Dies ist eine viel bessere Antwort als die akzeptierte. Ich möchte darauf hinweisen, dass es eine praktische Conf-Datei im Arch-Wiki gibt: wiki.archlinux.org/index.php/Croscore_Fonts
Xananax
Die erste Zeile sollte jetzt sudo rm -R / usr / share / fonts / truetype / calibri sein
dez93_2000
Wissen Sie, wie man Liberation Sans erzwingt, wenn das Ergebnis von Helvetica unter Linux angezeigt wird? Einfach Arial löschen? Danke
dez93_2000
@ dez93_2000 - das ist wohl so /usr/share/fonts/truetype/msttcorefonts/callibri*. Ich aktualisiere meine Antwort auf das Adress-Aliasing, da es nicht in einen Kommentar passt.
Adam Katz
Ich habe die gerenderten Ergebnisse der akzeptierten Antwort (unter Verwendung der Schriftart Calibri) sorgfältig geprüft und überhaupt keinen Unterschied zu einem bekannten guten Renderer festgestellt. Es fehlte absolut keine Schönheit.
Marc.2377,
6

Die Antwort von lgarzo funktioniert nur auf Websites, die eine "Noligs" -Klasse im Text haben (die meisten Websites tun dies nicht).

Fügen Sie die folgende Zeile zu Ihrer hinzu, um Ligaturen auf allen Websites global zu deaktivieren userChrome.css:

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

Der einfachste Weg, dies zu tun, besteht darin, einen neuen Stil mit der Erweiterung " Stilvoll" zu erstellen .

Calimo
quelle
+1 für den stilvollen Vorschlag. AFAIR Ich habe die Mozilla-Dokumentation zitiert (da ich erwartet hatte, dass das OP dies nach seinen Wünschen umsetzen kann :)). Meine Absicht war es, die Regel in das CSS der Seite aufzunehmen. (Die Quelle kann jedoch nicht überprüft werden. Es scheint sich um einen nicht
funktionierenden
1
Diese Syntax war laut stackoverflow.com/a/15161336/4464570 nur bis Firefox 14 gültig und wird jetzt vom Browser nicht mehr erkannt. Ich habe Ihren Beitrag bearbeitet, um ihn mit der aktuellen Syntax zu aktualisieren.
Byte Commander
4

Ein paar Bemerkungen fielen mir beim Betrachten des Bildes ein:

  • Die Ligaturen scheinen geglättet zu sein , der Rest des Textes nicht. Daher sieht es fetter aus als normaler Text (obwohl ich nicht leugnen kann, dass es auch fett aussieht).
  • AFAIK Die Helvetica-Schriftart ist eine nicht standardmäßige Schriftart , dh sie wird nicht mit Standard-Windows-Installationen geliefert. Haben Sie es installiert oder ist es eine andere Schriftart?

Ich denke, das Problem beruht darauf, dass die Schriftart Ligaturen / Kerning nicht richtig unterstützt.

Sie können Ligaturen in FF mit der folgenden CSS-Regel deaktivieren:

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

Quelle: CSS Referenz: Mozilla Extensions

lgarzo
quelle
Diese Syntax war laut stackoverflow.com/a/15161336/4464570 nur bis Firefox 14 gültig und wird jetzt vom Browser nicht mehr erkannt. Ich habe Ihren Beitrag bearbeitet, um ihn mit der aktuellen Syntax zu aktualisieren.
Byte Commander
1

Zusätzlich zu Calimos Antwort finden Archlinux-Benutzer Hilfe unter https://wiki.archlinux.org/index.php/font_configuration - Deaktivieren Sie Bitmap-Schriftarten

Es wurde vorgeschlagen, eine lokale Konfigurationsdatei ~ / .config / fontconfig / conf.d / 20-no-embedded.conf zu erstellen, aber ich habe mich für eine systemweite Option entschieden

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>

Dann starte einfach die App neu (in meinem Fall Thunderbird)

Uzumaki D. Ichigo
quelle
Wenn Sie direkt unter der Zeile "<match target =" font ">" Folgendes hinzufügen: <test name = "family"> <string> Calibri </ string> </ test> Oder wie auch immer der Schriftname lautet (Helvetica), werden Sie es tun Bearbeiten Sie nur die Schriftarteinstellungen für diese bestimmte Schriftart.
Zeehio
Die Berechtigung sollte 644 sein, nicht 777, da Sie dort eine Datei (keinen Symlink) ablegen.
Marc.2377,