Jak naprawić ligatury czcionek TTF (tt, ti, fi, ff itp.) W przeglądarce Firefox?

24

W przypadku niektórych czcionek systemu Windows występuje problem z wyświetlaniem, w którym kerning ligatury zdaje się odwracać i pogrubiać dwie litery. Oto zrzut ekranu wiadomości e-mail używającej Helvetica w przeglądarce Firefox:

wprowadź opis zdjęcia tutaj

Jak widać, wydaje się, że jest to związane ze sposobem, w jaki skrzyżowane znaki ( ti f) łączą się ze sobą i podobne litery i.

Miałem ten problem od bardzo dawna (w wielu systemach) i zastanawiałem się, czy ktoś nie widział podobnych problemów i znalazł sposób na ich rozwiązanie.

Uwaga: myślę, że to wpływa tylko na Firefoksa. Chrome i LibreOffice są w porządku.

Oli
źródło

Odpowiedzi:

27

Inne rozwiązanie, które będzie działać ze wszystkimi aplikacjami, w tym Libre Office, zapewnia aldeby :

Edytuj lub utwórz plik ~/.fonts.confi wklej w nim ten kod:

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

Pamiętaj, aby zachować strukturę XML.

Wyloguj się i zaloguj ponownie, a Calibri (i ewentualnie inne czcionki) będzie wyglądał znacznie lepiej (w rzeczywistości nawet lepiej niż w przypadku innych odpowiedzi tutaj podanych, ponieważ brzydkie podstawienia bitmap są całkowicie wyłączone).

Calimo
źródło
3
To jest lepsze rozwiązanie niż poprzednie, ponieważ jest globalnym rozwiązaniem, a eliminacja ligatur to mdłości. Ligatury mają na celu uczynienie tekstu bardziej przyjemnym do czytania, a wyłączenie go w celu obejścia problemu z konfiguracją nie jest idealne.
scruss
Każdy, kto ma nieco OCD lub jest na tyle wyrozumiały, by dbać o prawidłowe formatowanie zawartości tego pliku XML (oczywiście ludzie z Linuksa nigdy nie przejmowaliby się takimi rzeczami ;-)):<?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
Link do aldeby prowadzi teraz do strony z phishingiem
charsi
1
@charsi dzięki, zastąpiłem go linkiem do archiwum internetowego.
Calimo,
Nie musiałem się nawet wylogowywać i logować ponownie. Wystarczyło odświeżenie strony (w przeglądarce Firefox) i ponowne uruchomienie aplikacji (LibreOffice).
Marc.2377
9

Wyłączanie ligatur (patrz odpowiedź Calimofonts.conf ) to zły kierunek! Może usunąć te nadmiernie aliasowane „pogrubione” ligatury w czcionkach takich jak Calibri , ale także usuwa trochę piękna typografii. Jest to raczej podobne do zmniejszania czcionki, dopóki nie można odróżnić.

Rozwiązałem to dla mojego systemu, usuwając czcionkę Calibri, instalując Carlito , który jest „ kompatybilny metrycznie z Calibri” i jest pakowany z „wpisem mapowania do fontconfig (local.conf)” i odświeżaniem pamięci podręcznej czcionek:

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

Następnie możesz sprawdzić, czy Carlito oznacza Calibri:

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

(Jeśli to nie zadziała, być może potrzebujesz czegoś takiego jak sudo rm /usr/share/fonts/truetype/msttcorefonts/calibri*obudowa i dokładna lokalizacja).

Przed usunięciem Calibri Microsoftu zapisałem dokument testowy w LibreOffice, który używał Calibri i wykonałem zrzut ekranu. Po wykonaniu tej czynności zamknąłem LibreOffice, otworzyłem go ponownie, a następnie załadowałem dokument testowy. Nazwa czcionki „Calibri” została napisana kursywą, aby wskazać, że została zastąpiona. Zrobiłem zrzut ekranu tej podstawionej wersji i wkleiłem poniżej oryginału:

Testy Calibri

Powyższy tekst jest parą zrzutów ekranu z 13pt Calibri, z Microsoftem Calibri nad Carlito, dopasowanym przez fontconfig. Nie ma pogrubienia, formatowania, włączone „kerning par”, jak renderuje LibreOffice 5.0.5.1.

Carlito jest dość blisko Calibri, ligatury renderują się poprawnie i ogólnie są ładniejsze.

Możesz zrobić to samo z Caladea dla Cambria z fonts-crosextra-caladeai możesz używać czcionek Google Croscore Arimo, Tinos i Cousine dla Arial , Times New Roman i Courier New z fonts-croscore. Dowiedz się więcej na wiki Debian's Substituting Calibri and Cambria Fonts .

Ale co z Helveticą?

To pytanie dotyczy czcionki Helvetica , która jest preferowaną czcionką sans-serif firmy Apple . Microsoft wolał Arial, zanim zmienił się na Calibri. Domyślne mapowanie Linuksa różni się w zależności od dystrybucji, ale zwykle jest to albo Nimbus Sans L, albo Liberation Sans , np

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

Jeśli uruchomisz to i zdobędziesz Arial, to całkiem dobry powód, dla którego opisany powyżej problem z ligaturą - Arial nie jest świetną czcionką.

Helvetica ma wokół siebie dość kulturę i nie mogę znaleźć czcionki, która jest w pełni kompatybilna metrycznie z Helveticą. Arial (i czcionki metrycznie kompatybilne z Arial, w tym Liberation Sans i jego widelec Arimo , mają identyczne szerokości znaków (co oznacza, że ​​są „w większości” kompatybilne metrycznie; tekst będzie zawijał się tak samo jak w przypadku Helvetica). Liberation Sans i Nimbus Sans wydają się mieć najbardziej podobną estetykę.

Istnieje również IBM Plex , nowa czcionka z dużymi pieniędzmi [ 1 ] [ 2 ] . Plex został zaprojektowany w celu zastąpienia Helvetica (ma również skondensowane sans, a także czcionki szeryfowe i monospace) we wszystkich materiałach IBM, chociaż nie jest w ogóle kompatybilny metrycznie z Helvetica lub innymi czcionkami. Font Squirrel ma ładny widok próbek czcionek Plex .

Aliasy Fontconfig

Aby ręcznie zmienić alias Helvetica na inną czcionkę (i dlatego nie trzeba usuwać Calibri i / lub Arial, chociaż w takim przypadku należy również ręcznie aliasy), edytuj ~/.config/fontconfig/fonts.confplik (w przypadku starszych systemów, to jest ~/.fonts.conf. Aby uniknąć pomyłek, symlinkuję ten ostatni do pierwszego), jak zaznaczono w tej odpowiedzi , dodając nową <alias>sekcję dla Helvetica (ta używa Arimo. Upewnij się, że masz ją zainstalowaną):

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

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

</fontconfig>
Adam Katz
źródło
1
To jest znacznie lepsza odpowiedź niż zaakceptowana. Chcę zauważyć,
Xananax
pierwsza linia powinna być teraz sudo rm -R / usr / share / fonts / truetype / calibri
dez93_2000
Jeśli czyjś wynik meczu Helvetica z FC pasuje na Linuksie, czy wiesz, jak zmusić Liberation Sans? Czy po prostu usunąć Arial? Dzięki
dez93_2000,
@ dez93_2000 - prawdopodobnie /usr/share/fonts/truetype/msttcorefonts/callibri*. Zaktualizuję moją odpowiedź, aby poprawić aliasing czcionek, ponieważ nie będzie pasować do komentarza.
Adam Katz
Dokładnie sprawdziłem renderowane wyniki zaakceptowanej odpowiedzi (używając czcionki Calibri) i nie znalazłem żadnej różnicy w porównaniu ze znanym dobrym rendererem. Absolutnie nie brakowało piękna.
Marc.2377
6

Odpowiedź lgarzo będzie działać tylko na stronach internetowych, które mają klasę „noligs” na tekście (większość stron nie.)

Aby globalnie wyłączyć ligatury we wszystkich witrynach, dodaj następujący wiersz do userChrome.css:

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

Najprostszym sposobem na to jest stworzenie nowego stylu z rozszerzeniem Stylish .

Calimo
źródło
+1 za stylową sugestię. AFAIR Cytuję dokumentację Mozilli (ponieważ spodziewałem się, że OP będzie mógł ją przekształcić tak, jak chciał :)) Moim zamiarem było włączenie reguły do ​​CSS strony. (Nie można sprawdzić źródło, choć wydaje się być w dół ATM.).
lgarzo
1
Ta składnia obowiązywała tylko do Firefoksa 14, zgodnie z stackoverflow.com/a/15161336/4464570 , i nie jest już rozpoznawana przez przeglądarkę. Zredagowałem twój post, aby zaktualizować go o bieżącą składnię.
Bajt Commander
4

Kilka uwag pojawiło się w mojej głowie, patrząc na obraz:

  • Ligatury wydają się być wygładzone , podczas gdy reszta tekstu nie. Dlatego wygląda na grubszy niż normalny tekst (chociaż nie mogę zaprzeczyć, że również wygląda pogrubiony).
  • AFAIK czcionka Helvetica jest niestandardową czcionką , tzn. Nie jest dostarczana z domyślnymi instalacjami systemu Windows. Czy masz go zainstalowaną, czy jest to inna czcionka?

Myślę, że problem polega na tym, że czcionka nie obsługuje poprawnie ligatur / kerningu.

Możesz wyłączyć ligatury w FF za pomocą poniższej reguły CSS:

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

Źródło: CSS Reference: Rozszerzenia Mozilla

lgarzo
źródło
Ta składnia obowiązywała tylko do Firefoksa 14, zgodnie z stackoverflow.com/a/15161336/4464570 , i nie jest już rozpoznawana przez przeglądarkę. Zredagowałem twój post, aby zaktualizować go o bieżącą składnię.
Bajt Commander
1

Oprócz odpowiedzi Calimo użytkownicy Archlinux mogą znaleźć pomoc https://wiki.archlinux.org/index.php/font_configuration - Wyłącz czcionki bitmapowe

Sugerowano utworzenie lokalnego pliku konfiguracyjnego ~ / .config / fontconfig / conf.d / 20-no-embedded.conf, ale wybrałem opcję ogólnosystemową

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>

Następnie po prostu uruchom ponownie aplikację (w moim przypadku thunderbird)

Uzumaki D. Ichigo
źródło
Jeśli tuż pod linią „<match target =" font ">" dodasz: <test name = "family"> <string> Calibri </string> </test> Lub jakakolwiek jest nazwa czcionki (Helvetica), edytuj tylko ustawienia czcionki dla tej konkretnej czcionki.
zeehio
Pozwolenie powinno wynosić 644, a nie 777, ponieważ umieszczasz tam plik (a nie dowiązanie symboliczne).
Marc.2377