Linux: поработаем над шрифтами

· На чтение уйдёт 3 минуты · (611 слов)

Наконец-то мне настоебло смотреть на корявенькие шрифты в системе, и дошли руки заняться шрифтами вплотную. Вообще, переключаясь между Windows и Linux, регулярно наблюдал следующую картинку: в винде шрифты помельче, но выглядят почётче. Что ж, подумал я — кажется, жизнь не научила ещё Линукс нормально определять DPI монитора. Но нет! Первый взгляд на логи показал, что научила. В принципе, подобных инструкций в интернете море, но всё-таки напишу по-своему, попроще.

Итак, сначала мы посмотрим логи X-сервера:

[chronos] baron ~ % less /var/log/Xorg.0.log
[ 18209.517] (II) intel(0): EDID for output LVDS1
[ 18209.517] (II) intel(0): Manufacturer: SEC  Model: 314b  Serial#: 0
[ 18209.517] (II) intel(0): Year: 2011  Week: 0
[ 18209.517] (II) intel(0): EDID Version: 1.3
[ 18209.517] (II) intel(0): Digital Display Input
[ 18209.517] (II) intel(0): Max Image Size [cm]: horiz.: 34  vert.: 19
[ 18209.517] (II) intel(0): Gamma: 2.20
[ 18209.517] (II) intel(0): No DPMS capabilities specified
[ 18209.517] (II) intel(0): Supported color encodings: RGB 4:4:4 YCrCb 4:4:4 
[ 18209.517] (II) intel(0): First detailed timing is preferred mode
[ 18209.517] (II) intel(0): redX: 0.624 redY: 0.340   greenX: 0.327 greenY: 0.578
[ 18209.517] (II) intel(0): blueX: 0.154 blueY: 0.060   whiteX: 0.313 whiteY: 0.329
[ 18209.517] (II) intel(0): Manufacturer's mask: 0
[ 18209.517] (II) intel(0): Supported detailed timing:
[ 18209.517] (II) intel(0): clock: 100.4 MHz   Image Size:  344 x 194 mm
[ 18209.517] (II) intel(0): h_active: 1600  h_sync: 1648  h_sync_end 1680 h_blank_end 1792 h_border: 0
[ 18209.517] (II) intel(0): v_active: 900  v_sync: 902  v_sync_end 907 v_blanking: 932 v_border: 0

Из этого куска понятно, что размеры нашего монитора - 344х194. Приложим к стеклу чего-нибудь, размеры чего мы хорошо знаем :). У меня получилось с одной стороны 16.5 * 2 и 1.5-2 см, с другой стороны - 16.5 и ещё 2-3 см. Сходится!

В таком случае, кусок моего /etc/X11/xorg.conf выглядит так:

Section "Monitor"
    Identifier    "Generic Monitor"
    #VertRefresh    43 - 60
    #HorizSync      28 - 80
    DisplaySize 344 194
EndSection

После перезагрузки иксов ничего не изменилось, так как у нас же есть настройки XFCE! Settings → Appearance → Fonts, там я для себя выбрал следующие параметры:

  • По логам иксов, или из xdpyinfo | grep -C1 resol узнаём, что на самом деле разрешение моего экрана — 118 DPI. Отлично, так и пропишем.
  • Во-первых, мне нравятся шрифты Deja Vu и Droid. Между ними тяжело выбрать: Droid чуть посложнее читать (узкие), зато более функциональные — больше текста влезает. При этом Deja Vu Sans Bold — наоборот, широковат, впору юзать Condensed. А вот Droid Sans Bold — великолепен. В общем, подумал и ещё подумал, и ещё, и решил, что всё-таки системным шрифтом будет Droid Sans. Liberation Sans мне вообще не нравится.
  • Droid Sans — отличный шрифт, для которого не нужен хинтинг. Хинтинг отключен. Антиалиазинг включён. Подобрать субпиксельное сглаживание — как? У меня ничего не меняется. Оставил без субпиксельного.
  • Теперь у нас великоват размер заголовка окна. Попробовав несколько вариантов, остановился на Droid Sans Bold. Отлично там смотрится!
  • И всё-таки нет, шрифты смотрятся чуть вытянутыми по высоте. Но если включить небольшой (Slight) хинтинг, то всё становится отлично. Проверяем все программы, которыми пользуемся — всё ОК. Закрываем лавочку.

Ложка дёгтя в бочке мёда — это моноширинный Droid Sans Mono. Он БОЛЬШОЙ. Слишком. В терминале мне пришлось поставить размер 8 (но выглядит как 9). А вот в редакторе блогов не ставится этот шрифт :(. Поставил через eselect fontconfig всё-таки Deja Vu Sans Mono. Доверяй, но проверяй:

[chronos] baron ~ % fc-match monospace
DejaVuSansMono.ttf: "DejaVu Sans Mono" "Book"

Вот так выглядит мой рабочий экран. Кому кажутся буковки слишком узкими, может переключиться на DejaVu Sans.

В целом и в общем, качеством шрифтов я доволен: всё видно ясно и чётко. Есть,правда, небольшие претензии у меня к serif и к monospace, причём полярные: serif меньше на 1 пункт, monospace больше на 1 пункт.

Полезное