Как исправить лигатуры шрифтов TTF (tt, ti, fi, ff и т. Д.) В Firefox?

В некоторых шрифтах Windows существует проблема с отображением, когда лигатурный кернинг, кажется, переворачивается и делает две буквы жирными. Вот скриншот электронного письма, использующего Helvetica в Firefox:

enter image description here

Как вы можете видеть, это похоже на то, как скрещиваются символы (t и [ 111]) соединяются между собой и буквами типа i.

У меня была эта проблема в течение очень долгого времени (по нескольким системам), и я задавался вопросом, видел ли кто-нибудь когда-либо подобные проблемы, и нашел способ их исправить.

Примечание: я думаю, что это влияет только на Firefox. Chrome и LibreOffice в порядке.

24
задан 26 April 2012 в 13:30

6 ответов

Отключение лигатур (см. ответ Calimo fonts.conf ) - неправильное направление! Это может удалить эти чрезмерно наложенные «жирные» лигатуры в таких шрифтах, как Calibri , но он также удаляет некоторые из красоты типографии. Это похоже на сжатие шрифта до тех пор, пока вы не сможете увидеть разницу.

Я решил эту проблему для своей системы, удалив шрифт Calibri, установив Carlito , который « метрически совместим с Calibri« и упакован с » запись сопоставления в fontconfig (local.conf) и обновление моего кэша шрифтов:

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

Затем вы можете проверить, что Carlito заменяет Calibri:

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

Перед удалением Microsoft Calibri, я сохранил тестовый документ в LibreOffice, который использовал Calibri и сделал снимок экрана. После этого я вышел из LibreOffice, снова открыл его и затем загрузил свой тестовый документ. Название шрифта "Calibri" было выделено курсивом, чтобы указать, что оно было заменено. Я сделал снимок экрана с этой замещенной версией и вставил его под оригиналом:

Calibri tests

Приведенный выше текст представляет собой пару снимков экрана 13pt Calibri с Calibri от Microsoft выше Carlito в соответствии с fontconfig. Здесь нет полужирного шрифта, нет форматирования, включен «парный кернинг», как показано в LibreOffice 5.0.5.1.

Карлито довольно близок к Калибри, лигатуры отображаются правильно, и в целом он намного красивее.

Вы можете сделать то же самое с Caladea для Cambria с fonts-crosextra-caladea, и вы можете использовать Google Croscore шрифты Arimo, Tinos и Cousine для ] Arial , Times New Roman и Courier New с fonts-croscore. Узнайте больше на вики Debian , заменяющих шрифты Calibri и Cambria .

Но как насчет Helvetica?

Этот вопрос задает шрифт Helvetica , который является предпочтительным шрифтом Apple sans-serif . Microsoft предпочла Arial до того, как сменила его на Calibri. Отображение Linux по умолчанию зависит от дистрибутива, но обычно это либо Nimbus Sans L , либо Liberation Sans , например

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

Если вы запустите его и получите Arial, это довольно веская причина для описанной выше проблемы с лигатурой - Arial не очень хороший шрифт.

У Helvetica достаточно культуры, и я не могу найти шрифт, полностью метрически совместимый с Helvetica. Arial (и шрифты, метрически совместимые с Arial, включая Liberation Sans и его форк, Arimo ), имеют одинаковую ширину символов (что означает, что они «в основном» совместимы с метриками; текст будет переноситься так же, как с Helvetica) Среди бесплатных шрифтов, Liberation Sans и Nimbus Sans , похоже, имеют наиболее похожую эстетику.

Также есть IBM Plex , новый шрифт с большими деньгами за ним. [ 1 ] [ 2 ] . Plex предназначен для замены Helvetica (он также имеет сжатые шрифты без, а также с засечками и моноширинными шрифтами) во всех IBM материалы, хотя это совсем не метрически совместимо с Helvetica или другими шрифтами. Font Squirrel имеет прекрасный вид образцов шрифтов Plex .

0
ответ дан 26 April 2012 в 13:30

Ответ lgarzo будет работать только на веб-сайтах, которые имеют класс «noligs» в тексте (большинство веб-сайтов этого не делают).

Чтобы глобально отключить лигатуры на всех сайтах, добавьте следующую строку в userChrome.css:

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

Самый простой способ сделать это - создать новый стиль с помощью Стильное расширение.

0
ответ дан 26 April 2012 в 13:30

Другое решение, которое будет работать со всеми приложениями, включая Libre Office, дано в aldeby :

Отредактируйте или создайте файл ~/.fonts.conf и вставьте в него этот код:

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

Обязательно сохраните структуру XML.

Выйдите и снова, и Calibri (и, возможно, некоторые другие шрифты) будут выглядеть намного лучше (на самом деле даже лучше, чем с другими ответами, приведенными здесь, потому что уродливые замены растровых изображений полностью отключены).

0
ответ дан 26 April 2012 в 13:30

Несколько замечаний всплыли у меня во время просмотра изображения:

  • Кажется, что лигатуры сглажены , в то время как остальная часть текста - нет. Поэтому он выглядит толще обычного текста (хотя я не могу отрицать, что он также выглядит жирным шрифтом).
  • AFAIK шрифт Helvetica является нестандартным шрифтом , т. Е. Не поставляется с установками Windows по умолчанию. У вас установлен или это другой шрифт?

Я думаю, что проблема в том, что шрифт неправильно поддерживает лигатуры / кернинг.

Вы можете отключить лигатуры в FF с помощью приведенного ниже правила CSS:

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

Источник: Справочник по CSS: Mozilla Extensions

0
ответ дан 26 April 2012 в 13:30

В дополнение к ответу Калимо пользователи Archlinux могут найти помощь https://wiki.archlinux.org/index.php/font_configuration - Отключить растровые шрифты

Предложено создать локальный конфигурационный файл ~ / .config / fontconfig / conf.d / 20-no-embedded.conf, но я выбрал общесистемный вариант

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>

Затем просто перезапустите приложение (в моем случае thunderbird)

0
ответ дан 26 April 2012 в 13:30

Решение от https://askubuntu.com/a/186940/676490 с допустимой xml-структурой:

<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
 <match target="font" >
  <edit name="embeddedbitmap" mode="assign">
   <bool>false</bool>
  </edit>
  <edit name="fontfeatures" mode="append">
   <string>calt off</string>
   <string>clig off</string>
   <string>dlig off</string>
   <string>liga off</string>
  </edit>
 </match>
 <alias>
  <family>Helvetica</family>
  <prefer><family>Arimo</family></prefer>
 </alias>
 <alias>
  <family>Calibri</family>
  <prefer><family>Carlito</family></prefer>
 </alias>
</fontconfig>

и сохраните этот файл в ~/.fonts.conf

0
ответ дан 7 December 2020 в 19:33

Другие вопросы по тегам:

Похожие вопросы: