Як я можу виправити лігатури шрифтів TTF (tt, ti, fi, ff тощо) у Firefox?


24

З певними шрифтами Windows виникає проблема з відображенням, коли лігатура-кернінг, схоже, вивертається та робить дві літери жирними. Ось скріншот електронного листа за допомогою Helvetica у Firefox:

введіть тут опис зображення

Як бачите, це, здається, щось стосується перетину символів (t і f) з'єднуються між собою та такі букви i.

У мене ця проблема була дуже давно (у кількох системах) і цікавилася, чи хтось коли-небудь бачив подібні проблеми, що з’являються, і знайшов спосіб їх вирішити.

Примітка. Я думаю, що це просто впливає на Firefox. Chrome і LibreOffice - це чудово.

Відповіді:


27

Ще одне рішення, яке буде працювати з усіма програмами, включаючи Libre Office, дає aldeby :

Відредагуйте або створіть файл ~/.fonts.confі вставте в нього цей код:

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

Не забудьте зберегти структуру XML.

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


3
Це краще рішення, ніж попередні, оскільки це глобальне виправлення, а усунення лігатур - це бодж. Лігатури є, щоб зробити текст приємнішим для читання, а вимкнути їх для вирішення проблеми з конфігурацією не ідеально.
scruss

Кожен, хто має трохи OCD або анальний затриманий, щоб піклуватися про те, щоб правильно форматувати вміст цього XML-файлу (звичайно, ви, люди з Linux, ніколи б не піклувалися про такі речі ;-)):<?xml version="1.0"?><!DOCTYPE fontconfig SYSTEM "fonts.dtd"><fontconfig><match target="font"><edit name="embeddedbitmap" mode="assign"><bool>false</bool></edit></match></fontconfig>
Адам Плочер

Посилання на альдебі тепер призводить до сайту фішинг-афери
charsi

1
@charsi дякую, я замінив його посиланням на Веб-архів.
Калімо

Мені навіть не довелося виходити та знову входити. Достатньо було просто оновити сторінку (у Firefox) та перезапустити програму (LibreOffice).
Марк.2377,

9

Вимкнення лігатур (див . fonts.confВідповідь Калімо ) - неправильний напрямок! Це може видалити ті перенаселені "сміливі" лігатури в шрифтах, як Calibri , але це також видаляє частину краси типографії. Це досить схоже на зменшення шрифту, поки ви не зможете визначити різницю.

Я вирішив це для моєї системи, видаляючи шрифт Calibri, установку Карліто , який є « Метрика-сумісним з Calibri» і упакований з «записом відображення на FontConfig (local.conf)," і освіжаючою мій шрифт кешу:

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

Потім ви можете переконатися, що Карліто стоїть на місці в Калібри:

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

(Якщо це не працює, можливо, вам знадобиться щось на зразок, sudo rm /usr/share/fonts/truetype/msttcorefonts/calibri*хоча випадок і точне місце розташування можуть відрізнятися.)

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

Тести Калібри

Вищенаведений текст - це пара знімків екрану з 13-кратним калібром, калібрі Microsoft "Калібри" над "Карліто" відповідно до fontconfig. Немає жодного жирного, не форматування, "парного кернінгу" увімкнено, як надано LibreOffice 5.0.5.1.

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

Ви можете зробити те ж саме з Caladea для Камбрія з , fonts-crosextra-caladeaі ви можете використовувати Google, Croscore шрифти Arimo, Тінос і Cousine для Arial , Times New Roman і Courier New з fonts-croscore. Дізнайтеся більше на заміні вікі Debian на Calibri та Cambria Fonts .

А як щодо Гельветика?

Це питання задає шрифт Helvetica , який є кращим шрифтом Apple sans-serif . Майкрософт віддав перевагу Arial, перш ніж він змінився на Calibri. Відображення за замовчуванням Linux змінюється залежно від розповсюдження, але це як правило Nimbus Sans L або Sans Liberation Sans , наприклад

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

Якщо ви запускаєте це і отримуєте Arial, це досить вагома причина для описаного вище питання про лігатуру - Arial - це не великий шрифт.

Helvetica має цілу культуру, що її оточує, і я не можу знайти шрифт, повністю сумісний з метрикою з Helvetica. Arial (і шрифти, метрично сумісні з Arial, включаючи звільнення Sans та його вилку, Arimo , мають однакові ширини символів (це означає, що вони "в основному" сумісні з метрикою; текст буде обгортати так само, як і з Helvetica). Серед вільних шрифтів, Sans звільнення та Nimbus Sans здаються є найбільш схожа естетика.

Є також IBM Plex , новий шрифт з великими грошима за ним [ 1 ] [ 2 ] . Plex призначений для заміни Helvetica (він також має ущільнені беззаконні шрифти, а також серифні та однопросторові шрифти) у всіх матеріалах IBM, хоча він зовсім не сумісний з метрикою для Helvetica та інших шрифтів. Шрифт Squirrel має прекрасний вид на зразки шрифтів Plex .

Псевдоніми Fontconfig

Щоб вручну подати псевдонім Helvetica до іншого шрифту (і тому не потрібно видаляти Calibri та / або Arial, хоча в цьому випадку вам також слід вручну встановити псевдоніми), відредагуйте ~/.config/fontconfig/fonts.confфайл (для старих систем, це ~/.fonts.conf. Щоб уникнути плутанини, я посилаю на останній до попереднього), як зазначено у цій відповіді , додавши новий <alias>розділ для Helvetica (у цьому використовується Arimo. Переконайтеся, що він встановлений):

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

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

</fontconfig>

1
Це набагато краща відповідь, ніж прийнята. Хочу зазначити, що у вікі арки доступний зручний конф-файл: wiki.archlinux.org/index.php/Croscore_Fonts
Xananax

перший рядок тепер повинен бути sudo rm -R / usr / share / шрифти / truetype / calibri
dez93_2000

Якщо результат Helvetica з fc-match IS Arial на Linux, чи знаєте ви, як змусити визволення? Просто видалити Arial? Дякую
dez93_2000

@ dez93_2000 - це, мабуть /usr/share/fonts/truetype/msttcorefonts/callibri*. Я оновлю свою відповідь на адресний шрифт, оскільки він не впишеться в коментар.
Адам Кац

Я уважно оглянув виведені результати прийнятої відповіді (використовуючи шрифт Calibri) і не знайшов різниці в порівнянні з відомим хорошим рендерінгом. Краса абсолютно не пропала.
Марк.2377,

6

Відповідь lgarzo працюватиме лише на веб-сайтах, які мають текст "noligs" у тексті (більшість веб-сайтів не мають).

Щоб глобально відключити лігатури на всіх веб-сайтах, додайте до свого рядка такий рядок userChrome.css:

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

Найпростіший спосіб зробити це - створити новий стиль за допомогою стильного розширення.


+1 для стильної пропозиції. ПОСЛІД Я цитував документацію Mozilla (оскільки я очікував, що ОП зможе перетворити це так, як він хотів :)) Моє намір полягав у включенні правила в CSS сторінки. (Неможливо перевірити джерело. Однак, здається, немає банкомату.)
lgarzo

1
Цей синтаксис був дійсним лише до Firefox 14, відповідно до stackoverflow.com/a/15161336/4464570 , і тепер він більше не розпізнається браузером. Я відредагував вашу публікацію, щоб оновити її поточним синтаксисом.
Командир байт

4

Кілька зауважень вискакували мені на думку, дивлячись на зображення:

  • Лігатури, здається, анти-псевдоніми , а решта тексту - ні. Тому він виглядає товстішим, ніж звичайний текст (хоча я не можу заперечити, він також виглядає жирним).
  • AFAIK шрифт Helvetica - це нестандартний шрифт , тобто не постачається зі встановленнями Windows за замовчуванням. У вас це встановлено, чи це інший шрифт?

Я думаю, що проблема базується на тому, що шрифт не підтримує належним чином лігатури / кернінг.

Ви можете вимкнути лігатури у FF за допомогою правила CSS нижче:

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

Джерело: Довідник CSS: Розширення Mozilla


Цей синтаксис був дійсним лише до Firefox 14, відповідно до stackoverflow.com/a/15161336/4464570 , і тепер він більше не розпізнається браузером. Я відредагував вашу публікацію, щоб оновити її поточним синтаксисом.
Командир байт

1

Окрім відповіді Calimo, користувачі 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>

Потім просто перезавантажте додаток (у моєму випадку громовідвід)


Якщо прямо під рядком "<match target =" font ">" ви додасте: <test name = "family"> <string> Calibri </string> </test> Або все, що називається шрифтом (Helvetica), ви редагуйте лише настройки шрифту для цього конкретного шрифту.
zeehio

Дозвіл має бути 644, а не 777, тому що ви розміщуєте там файл (а не посилання).
Марк.2377,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.