Шрифты в Gentoo

Сегодня я наконец настроил ШГ в своей свежеустановленной Gentoo. Конечно, местами шероховато, а местами пришлось допиливать юзерстилями, но в целом норм. Ненадолго оставлю здесь напоминарик о том, как настраивать шрифты.
Для начала, некоторые общие соображения [1].
  • Шрифты семейства Liberation к употреблению непригодны по причине низкого качества.
  • Шрифт DejaVu Serif к употреблению непригоден по той же причине.
  • Droid Sans в целом удовлетворителен, но Dejavu Sans в отличие от него не мажется. Для маленьких размеров (<9pt) Droid Sans подходит наилучшим образом.
  • Dejavu Sans в целом весьма хорош, но имеет несколько неприятных артефактов (буква N при кегле ~12pt, кернинговые пары с буквой r при кегле ~10pt), поэтому как общесистемный непригоден.
  • Без BCI шрифты DejaVu выглядят хорошо.
  • Автохинтер должен быть выключен, тогда будет использоваться BCI, а он куда лучше рисует [2].
Итак, в USE-флаги в make.conf нужно добавить
USE="truetype t1lib fontconfig lcdfilter -cleartype auto-hinter"
Затем нужно добавить оверлеи lcd-filtering[3] и asux:
layman -a lcd-filtering
layman -a asux
...размаскировать нужные пакеты в /etc/portage/package.accept_keywords:
>=x11-libs/cairo-1.10.2-r2 ~amd64
>=media-libs/freetype-2.4.10 ~amd64
>=media-libs/fontconfig-2.9.0 ~amd64
>=media-fonts/corefonts-1-r6 ~amd64
>=media-fonts/liberation-fonts-1.07.1 ~amd64
>=media-fonts/terminus-font-4.36 ~amd64
>=media-fonts/dejavu-2.33 ~amd64
>=media-fonts/paratype-1-r2 ~amd64
>=media-fonts/monaco-5.1 ~amd64
...поставить гарнитуры:
emerge -v media-fonts/corefonts media-fonts/dejavu \
  media-fonts/droid media-fonts/font-adobe-100dpi \
  media-fonts/font-adobe-75dpi \
  media-fonts/font-adobe-utopia-type1 \
  media-fonts/paratype media-fonts/terminus-font \
  media-fonts/ubuntu-font-family \
  media-fonts/monaco
...и, наконец, поставить пропатченные нужным образом [4] библиотеки рендеринга шрифтов:
emerge -uNvt fontconfig freetype::lcd-filtering \
cairo::lcd-filtering libXft::lcd-filtering

Теперь пришло время настройки приложений. Во-первых,
$ eselect fontconfig list
Available fontconfig .conf files (* is enabled):
  [1]   10-antialias.conf *
  [2]   10-autohint.conf
  [3]   10-hinting-full.conf *
  [4]   10-hinting-medium.conf
  [5]   10-hinting-slight.conf
  [6]   10-hinting.conf *
  [7]   10-no-sub-pixel.conf
  [8]   10-sub-pixel-bgr.conf
  [9]   10-sub-pixel-rgb.conf *
  [10]  10-sub-pixel-vbgr.conf
  [11]  10-sub-pixel-vrgb.conf
  [12]  10-unhinted.conf
  [13]  11-lcdfilter-default.conf *
  [14]  11-lcdfilter-legacy.conf
  [15]  11-lcdfilter-light.conf
  [16]  15-hinting-non-tt-instructed-slight.conf
  [17]  15-hinting-tt-instructed-full.conf
  [18]  15-hinting-tt-instructed-none.conf
  [19]  15-hinting-tt-instructed-slight.conf
  [20]  20-fix-globaladvance.conf *
  [21]  20-hinting-small-fonts-slight.conf *
  [22]  20-unhint-small-dejavu-sans-mono.conf *
  [23]  20-unhint-small-dejavu-sans.conf *
  [24]  20-unhint-small-dejavu-serif.conf *
  [25]  20-unhint-small-vera.conf *
  [26]  21-hinting-small-aquabase-slight.conf
  [27]  21-hinting-small-arial-black-slight.conf
  [28]  21-hinting-small-browallia-slight.conf
  [29]  22-hinting-courier-italic-slight.conf
  [30]  25-unhint-nonlatin.conf
  [31]  30-metric-aliases.conf
  [32]  30-urw-aliases.conf *
  [33]  40-nonlatin.conf *
  [34]  45-latin.conf *
  [35]  49-sansserif.conf *
  [36]  50-user.conf *
  [37]  51-local.conf *
  [38]  53-monospace-lcd-filter.conf
  [39]  57-dejavu-sans-mono.conf
  [40]  57-dejavu-sans.conf
  [41]  57-dejavu-serif.conf
  [42]  58-corefonts.conf
  [43]  59-google-droid-sans-mono.conf
  [44]  59-google-droid-sans.conf
  [45]  59-google-droid-serif.conf
  [46]  60-latin.conf *
  [47]  60-liberation.conf
  [48]  61-stix.conf
  [49]  65-fonts-persian.conf
  [50]  65-khmer.conf
  [51]  65-nonlatin.conf
  [52]  69-unifont.conf
  [53]  70-no-bitmaps.conf
  [54]  70-yes-bitmaps.conf *
  [55]  80-delicious.conf *
  [56]  80-terminus.conf
  [57]  80-trebuchet.conf
  [58]  90-embolden.conf
  [59]  90-synthetic.conf *
Во-вторых, в /etc/fonts/local.conf должно быть что-то вроде этого: http://dumpz.org/312551. В-третьих, в ~/.Xresources дожно быть:
Xft.antialias:  1
Xft.autohint: 0
Xft.lcdfilter: lcddefault
Xft.hintstyle: hintfull
Xft.hinting: 1
Xft.dpi: 94
Xft.rgba: rgb
В четвёртых, для верности можно ещё и помышекликать, я пользуюсь lxappearance:
Далее, в терминале ставится, разумеется, Terminus с кеглем в районе 13pt:
В Firefox-е - ничего особенного:
Кроме того, придётся поставить Stylish, а к нему - вот эти два юзерстиля [5], [6], ибо разработчики github'а - редиски, сделали пол-сайта на webfonts, а полсайта на кошмарных виндовых шрифтах. И в виде финального штриха, нужно подправить настройки JVM [7], добавив в /etc/env.d/20java-config строчку
_JAVA_OPTIONS="-Dawt.useSystemAAFontSettings=on \
-Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel"
UPD: Прочитав "Лучшие шрифты для программирования" на хабре [8], обнаружил для себя две великолепных моноширинных гарнитуры: Monaco и Monofur (последний я тут же поставил как guifont в vim). Monaco есть в оверлее asux, а Monofur нужно скачать с его офсайта [9] и положить себе в хомяк ~/.fonts
К сожалению, монако не очень хорошо смотрится при кегле меньше 12-14pt, так что в конце /etc/fonts/local.conf мне пришлось насильно увеличить его размер. В конечном итоге получается слегка аляповато, но вполне мило:

UPD1: lcdfilter попал в основное дерево, теперь оверлеи добавлять не нужно, но и настраивать нужно чуть по-другому (через eselect lcdfilter и eselect infinality).
UPD2: Как добавить шревты из спермёрки в уютненький линукс.

Ссылки

  1. Анонимный аналитик ЛОРа
  2. Gentoo wiki
  3. Gitorious
  4. Infinality
  5. Github improved
  6. GitHub - a different font stack for code listings
  7. Make Java Swing applications use your current GTK 2.0 Look and Feel / Arch Linux forums
  8. Лучшие шрифты для программирования / Хабрахабр
  9. Monofur Font | dafont.com

Комментариев нет:

Отправить комментарий