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

Опрос

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

С выходом 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, но без необходимости устанавливать доп. пакеты?
 
Зарегистрироваться или войдите чтобы оставить сообщение.