Настройка шрифтов (актуальная версия)

Опрос

Узнали ли вы что-то полезное?
Да, узнал много нового.
Да, узнал немного нового
Нет, я знаю это с рождения
Всем привет!

С выходом FreeType2.7, настройки шрифтов несколько поменялись. Тут опишу как настроено у меня. Вкусы у всех конечно разные, но новичкам думаю будет интересно, + не напрягайте своё зрение, сделайте так как вам комфортно. В целом же обычно вкусы делятся на два лагеря: пухловатые шрифты (как у меня) и тонкие. Разница в настройках одна, если вам по душе тонкие, - поставьте вместо hintslight - hintfull.

Если у вас дисплей а-ля "Retina", поздравляю, - со шрифтами должно быть всё в полном порядке ;-)

Настройка шрифтов в три этапа:
1. Установка шрифтов.
2. Выбор рендеринга.
3. Изменение/создание файлов настроек ( /etc/fonts/local.conf .Xresources ).

1. Установить шрифты из репозитория: (Bitstream не ставлю, т.к. cемейство шрифтов DejaVu это модификация шрифтов Bitstream Vera).
pacman -S ttf-croscore ttf-dejavu ttf-ubuntu-font-family ttf-inconsolata ttf-liberation --noconfirm
Пакет - описание
ttf-croscore - шрифты из ChromeOs, они метрически совместимы с MS, и хорошо смотрятся, содержат Arimo, Tinos, Cousine и тп.
ttf-dejavu - базовые, возможно уже стоят у вас.
ttf-ubuntu-font-family - красивые, не вырвиглазные шрифты без засечек, использую в DE и текстовых документах.
ttf-inconsolata - шрифт для "коддинга", - можно не ставить.
ttf-liberation - базовые, возможно уже стоят у вас.
yaourt -S ttf-carlito ttf-caladea ttf-droid-sans-mono-slashed-powerline-git --noconfirm
Пакет - описание
ttf-carlito - метрически совместим с MS Calibri
ttf-caladea - - метрически совместим с MS Cambria
ttf-droid-sans-mono-slashed-powerline-git - шрифт с "треугольником" для powerline, использую в ZSH prompt
По желанию: yaourt -S ttf-ms-win8 (содержит в себе ttf-ms-fonts, ttf-vista-fonts и ttf-win7-fonts, т.е. всё что надо включая Calibri и .т.п.)

Если устанавливаем свои шрифты:
скопируйте их в папку /usr/share/fonts/Мои_Шрифты
и выполните
sudo fc-cache  -fv

2. Выбрать метод рендеринга:

Выполните
sudo nano /etc/profile.d/freetype2.sh
И приведите строку к такому виду:
# Uncomment and configure below
export FREETYPE_PROPERTIES="truetype:interpreter-version=38"
3. Изменение файла настроек
создайте файл /etc/fonts/local.conf c таким содержимым (тут мы настроим отоброжение шрифтов, а также подменим MS шрифты на Chrome OS):
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<!--Этот файл должен быть тут: /etc/fonts/local.conf-->
<!--Составлено Malody для записи в блоге http://archlinux.org.ru/forum/topic/16691/ -->
<fontconfig>
<!-- Настройки отоброжения -->
  <match target="font">
       <edit name="antialias" mode="assign">
           <bool>true</bool>
       </edit>
       <edit name="autohint" mode="assign">
           <bool>false</bool>
       </edit>
       <edit name="embeddedbitmap" mode="assign">
           <bool>false</bool>
       </edit>
       <edit name="hinting" mode="assign">
           <bool>true</bool>
       </edit>
       <edit name="hintstyle" mode="assign">
<!--hintslight - для более "полных" шрифтов, hintsfull - для более тонких -->
           <const>hintslight</const>
       </edit>
       <edit name="lcdfilter" mode="assign">
           <const>lcddefault</const>
       </edit>
       <edit name="rgba" mode="assign">
           <const>rgb</const>
       </edit>
<!--Отключение хинтинга для Bold шрифтов-->
	   <test name="weight" compare="more">
        <const>medium</const>
    </test>
    <edit name="autohint" mode="assign">
        <bool>false</bool>
    </edit>
   </match>
<!--Замена шрифтов MS на метрически совместимые ChromeOs https://wiki.archlinux.org/index.php/Metric-compatible_fonts -->
  <alias>
    <family>serif</family>
    <prefer><family>Tinos</family></prefer>
  </alias>
  <alias>
    <family>sans-serif</family>
    <prefer><family>Arimo</family></prefer>
  </alias>
  <alias>
    <family>sans</family>
    <prefer><family>Arimo</family></prefer>
  </alias>
  <alias>
    <family>monospace</family>
    <prefer><family>Cousine</family></prefer>
  </alias>
     <!-- Map specific families to CrOS ones -->
  <match>
    <test name="family"><string>Arial</string></test>
    <edit name="family" mode="assign" binding="strong">
      <string>Arimo</string>
    </edit>
  </match>
  <match>
    <test name="family"><string>Helvetica</string></test>
    <edit name="family" mode="assign" binding="strong">
      <string>Arimo</string>
    </edit>
  </match>
  <match> <!-- Метрически не совместимая замена -->
    <test name="family"><string>Verdana</string></test>
    <edit name="family" mode="assign" binding="strong">
      <string>Arimo</string>
    </edit>
  </match>
  <match> <!-- Метрически не совместимая замена -->
    <test name="family"><string>Tahoma</string></test>
    <edit name="family" mode="assign" binding="strong">
      <string>Arimo</string>
    </edit>
  </match>
  <match>
    <test name="family"><string>Times New Roman</string></test>
    <edit name="family" mode="assign" binding="strong">
      <string>Tinos</string>
    </edit>
  </match>
  <match>
    <test name="family"><string>Times</string></test>
    <edit name="family" mode="assign" binding="strong">
      <string>Tinos</string>
    </edit>
  </match>
  <match> <!-- Метрически не совместимая замена -->
    <test name="family"><string>Consolas</string></test>
    <edit name="family" mode="assign" binding="strong">
      <string>Cousine</string>
    </edit>
  </match>
  <match>
    <test name="family"><string>Courier New</string></test>
    <edit name="family" mode="assign" binding="strong">
      <string>Cousine</string>
    </edit>
  </match>
  <match>
    <test name="family"><string>Calibri</string></test>
    <edit name="family" mode="assign" binding="strong">
      <string>Carlito</string>
    </edit>
  </match>
  <match>
    <test name="family"><string>Cambria</string></test>
    <edit name="family" mode="assign" binding="strong">
      <string>Caladea</string>
    </edit>
  </match>
</fontconfig>
В файл ~/.Xresources внесём следующие строки:
Xft.dpi: 96
Xft.antialias: true
Xft.hinting: true
Xft.rgba: rgb
Xft.autohint: false
Xft.hintstyle: hintslight
Xft.lcdfilter: lcddefault
и выполним:
xrdb -merge ~/.Xresources
Также в настройках вашего DE поставьте сглаживание RGBa, вместо grayscale (такое доступно в Gnome и Cinnamon, в остальных не проверял).
Если используете приложения Java, то в файле /etc/environment добавьте следующую строку:
_JAVA_OPTIONS='-Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel'
- это нужно для того, чтобы приложения Java ощущались и выглядели как GTK

Перезапустите X-ы.

Profit!

Немного занудства:
Существует три основных семейства используемых в ОС/WEB шрифтов. Для более приятного восприятия можно одни шрифты заменить другими шрифтами из этого же семейства. Как например в случае отказа от использования шрифтов от MS, или в поиске наиболее хорошо отоброжаемых.
Семейство шрифтов - пример таких шрифтов
Serif (с засечками) - Times New Roman, Liberation Serif, Tinos, DejaVu Serif, Noto Serif
Sans-serif (без засечек) - Arial, Liberation Sans, Arimo, DejaVu Sans, Noto Sans
Monospace (моноширинные шрифты, - ширина каждого символа в таком семействе одинакова) - Courier New, Liberation Mono, Cousine, DejaVu Sans Mono, Noto mono

Пара скриншотов с настройками браузера, системы, и что получилось (смотрите в масштабе 1:1, на небольшом мониторе браузер не даёт просмотреть в масштабе 1:1, сохраните картинки для просмотра во вьювере (eog и т.п.)).
Скриншоты актуальны, если у вас такойже DPI как и у меня, - 96. В иныхслучах будет искажённое представление.
Превьюшки:



С рендерингом шрифтов всё ОК, и DPI правильный, но! Есть одна проблема, - расстояние между буквами (кернинг) везде разное, это хорошо видно в документе Libreoffice. Вопрос к вам, уважаемые форумчане: у вас также? У меня эта проблема существовала до вмешательства в настройки. Попробую в LiveCD другой системы посмотреть также там дело обстоит или нет. Знаю точно что в системах на основе *buntu шрифт ubuntu отоброжается с одинаковым расстоянием между букв.

Написано опираясь на следующие статьи/форумы:
FreeType2 - изменён метод хинтинга по-умолчанию (использовано в разделе "Выбрать метод рендеринга")
Font configuration (использовано в разделе "Изменение файла настроек")
Metric-compatible fonts (использовано в разделе "Изменение файла настроек")
Improve Font Rendering (использовано в разделе "Изменение файла настроек")
Java Runtime Environment fonts (использовано в разделе "Изменение файла настроек")
Microsoft fonts (использовано в разделе "установить шрифты из репозитория")
Русская команда переводчиков ArchWiki
скромный вклад
Не хватает пункта: "Мне плевать на шрифты"
Lupus pilum mutat, non mentem.
jim945, зачем так жестко? Достаточно добавить пункт: "Традиционно". Мне, например, "традиционно" до векторных шрифтов.
Хотя, malody, за труд, конечно, спасибо. Может пригодится когда-то.
Пива много не бывает.
jim945
Не хватает пункта: "Мне плевать на шрифты"
Он не нужен. Люди с таким мнением, увидев тему "Настройка шрифтов", проходят мимо, им же плевать.
malody, почему
export FREETYPE_PROPERTIES="truetype:interpreter-version=38"
а не
export FREETYPE_PROPERTIES="truetype:interpreter-version=40"
как по умолчанию?
dengor
malody, почему
export FREETYPE_PROPERTIES="truetype:interpreter-version=38"
а не
export FREETYPE_PROPERTIES="truetype:interpreter-version=40"
как по умолчанию?
38 - это метод хинтинга Infinality, поэтому ;-)
Русская команда переводчиков ArchWiki
скромный вклад
dengor
почему ... не ... как по умолчанию?
Потому что новая версия хинтинга (которая по умолчанию) не поддается дрессуре тонкой настройке.
Пива много не бывает.
А для него не нужно ставить пакеты Infinality?
dengor
А для него не нужно ставить пакеты Infinality?
Нет, теперь не надо :-).
Поэтому и написана эта статья, настройка от и до.
Русская команда переводчиков ArchWiki
скромный вклад
А эффект тот же будет? Я почему спрашиваю? С Infinality на моей машине был лучший эффект и настраивать ничего не надо было. Но потом прочитал, что без него система будет отзывчевей. Проверил, действительно так. Но шрифты теперь не так классно выглядят (задолбался настраивать). Т.е. вопрос 38 - это по сути тот же Infinality, но без необходимости устанавливать доп. пакеты?
 
Зарегистрироваться или войдите чтобы оставить сообщение.