Настройка отображения шрифтов в дистрибутиве Slackware Linux

Source Based дистрибутивы 1462 просм. 11 сообщ.

Набросал тут для себя заметку про настройку шрифтов. Представляю на общий суд с целью, может кто дополнит и подскажет чего нить ещё, или заметит ошибочные утверждения.



Настройка отображения шрифтов в дистрибутиве Slackware Linux


Включение поддержки Unicode

Unicode, это стандарт кодирования символов, включающий в себя знаки почти всех письменных языков мира. При включенной поддержке юникода гарантировано отображение в одном документе текстового материала на разных языках от латиницы, вплоть до китайских иероглифов.

Для поддержки юникода на уровне ядра, при загрузке системы нужно передать ядру опцию «vt.default_utf8=1». При использовании загрузчика LILO, эта опция добавляется в файл /etc/lilo.conf, в строку начинающуюся со слова append:

append=" vt.default_utf8=1"

Если же в качестве загрузчика системы используется Grub2, то править нужно его конфигурационный файл /boot/grub/grub.cfg. Опция добавляется после команды загрузки ядра linux:
...
linux /boot/vmlinuz-huge-smp-4.14.19-smp root=/dev/sda3 ro pci=use_crs vt.default_utf8=1 vga=normal
...

Для загрузчика syslinux правится файл syslinux.cfg, например так:
...
LABEL 0
     MENU LABEL Slackware
     KERNEL /boot/vmlinuz
     APPEND initrd=/boot/initrd.gz load_ramdisk=1 prompt_ramdisk=0 vt.default_utf8=1 vga=791
...

При объявлении локали в системе, в скрипте /etc/profile.d/lang.sh к выбраной национальной кодировке добавляется префикс «UTF-8» или как альтернатива «utf8». Пример lang.sh для объявления русской юникодной локали:
#!/bin/sh
export LANG=ru_RU.UTF-8
export LC_COLLATE=C

Загрузка юникодного шрифта для консоли

Консольные шрифты содержат юникодные символы не для всех языков, ибо если включать в шрифт все символы национальных алфавитов, плюс спецсимволы, файл шрифта получится непомерно большим и неудобств от этого будет больше чем пользы. Поэтому в консольных юникодных шрифтах могут содержаться символы для нескольких национальных алфавитов, близких между собой по использованию. Например, консольный шрифт LatArCyrHeb-16 содержит символы латиницы, кириллицы и иврита. То есть, при загруженном шрифте LatArCyrHeb-16 в текстовом файле гарантированно будут отображаться символы именно этих национальных алфавитов. В Slackware консольный шрифт загружается скриптом /etc/rc.d/rc.font. Пример скрипта:

#!/bin/sh
 setfont LatArCyrHeb-16
 for i in 1 2 3 4 5 6; do
       echo -ne "\033%G" > /dev/tty$i
 done

В этом скрипте загружается общесистемный шрифт для консоли. Но отдельный пользователь может для своего сеанса указать другой консольный фонт добавив в свой ~/.bashrc следующие строки:
if [ $TERM = "linux" ]; then
    setfont ter-v16n
fi

В примере показана загрузка консольного шрифта Terminus.

Настройка масштабирования шрифтов в XORG

Немножко о разрешении мониторов и что такое DPI. При выборе монитора для компьютера или ноутбука при покупке, мы всегда обращаем внимание на характеристику дисплея. Чем больше разрешение дисплея, тем чётче отображается картинка, более читабельны тексты. И если с картинками и фотографиями более менее понятно, то по качеству вывода текстовой информации на экран у многих пользователей могут возникать претензии. Во многих дистрибутивах разработчики прилагают большие усилия по улучшению отображения на дисплее текстовой информации. Взять те же Ubuntu, MX-Linux, Manjaro... В этих дистрибутивах хорошее отображение шрифтов настроено «из коробки» и пользователю в большинстве случаев не нужно прилагать усилий по улучшению отображения шрифтов. В Slackware, как и в Debian впрочем, этой теме разработчики придают меньше внимания. В свежеустановленной системе шрифты и их отображение часто оставляют желать лучшего. Есть жидкокристаллические дисплеи, особенно старшего поколения, в которых без дополнительных усилий по настройке отображения шрифтов никак не обойтись. А есть дисплеи, на которых приемлимо выглядят шрифты даже без дополнительной настройки.

Разрешение дисплея измеряется в пикселях по вертикали и горизонтали. Чем больше разрешение, тем качественнее отображение. А отображение одного символа шрифта указывается в DPI, то есть в колличестве пикселей на один дюйм. И здесь уже понятие пиксель(точка) не физическое, а программное. То есть, если реальный DPI вашего монитора 150 пикселей на дюйм, то программно его можно и уменьшить. Если мы уменьшим DPI до значения 75, то два реальных пикселя программно будут работать как один и, естественно, качество отображения изменится в ту или иную сторону. Для того чтобы узнать реальный DPI вашего монитора, можно воспользоваться специализированным сайтом DPI Калькулятором. Разрешение вашего дисплея DPI Калькулятор может определить автоматически, а вот размер по диагонали в дюймах нужно ввести в ручную. Его можно узнать из характеристик вашего монитора/ноутбука.

Теперь понятно, что реальный DPI, это количество физических пикселей (не программных) на один дюйм вашего дисплея. Считается, что если указать системе реальный DPI, то отображение шрифтов будет наилучшим. Может быть это и так, но на величину отображаемых шрифтов это влияет точно. В Windows по умолчанию DPI равен 96. Некоторые программы могут затребовать для себя другой DPI, например MythTV просит DPI=100.

Для X-системы можно указать значение DPI несколькими способами. Если xorg запускается с помощью скрипта startx, откройте для редактирования в текстовом редакторе скрипт /usr/bin/startx, найдите в нём строку:

defaultserverargs=""

и впишите желаемое значение DPI, как пример 110:
defaultserverargs="110"

Если xorg запускается другим способом, например с помощью менеджера входа в систему kdm, то нужный DPI прописывается в его конфигурационном файле /etc/kde/kdm/kdmrc.

Проверить с каким разрешением загружаются шрифты в X-ах можно дав команду в консоли:

xdpyinfo | grep resolution

Для клиентских приложений X-сервера DPI задаётся в конфигурационном файле Xresources. Локальная, пользовательская версия этого файла находится в домашнем пользовательском каталоге - ~/.Xresources. В этом файле можно задать DPI монитора, сглаживание (antialiasing), хинтование (hinting) и другие настройки шрифтов X.

Fontconfig

Fontconfig - это библиотека, предназначенная для конфигурирования и настройки доступа к шрифтам, а также для настройки того, как шрифты будут отображаться. Файлы конфигураций fontconfig находятся в каталоге /etc/fonts. В каталоге /etc/fonts/conf.avail размещены все конфигурационные файлы библиотеки, но fontconfig не просматривает этот каталог. Для fontconfig рабочим является каталог /etc/fonts/conf.d, именно с этого каталога он считывает конфигурационные файлы. Поэтому достаточно сделать ссылку из каталога conf.d на любой из конфигов в каталоге conf.avail, чтобы fontconfig его смог прочесть. Таким образом можно компоновать комплект видимых библиотекой fontconfig конфигурационных файлов. После изменений в самих конфигурационных файлах, или добавления/удаления симлинков на нужные файлы конфигурации, чтобы обновления вступили в силу и fontconfig принял это, нужно дать команду:

fc-cache -f -v

В каталоге /etc/fonts/conf.d находится файл README с более подробной информацией.

Шрифты

Наличие большого количества установленных шрифтов может сильно грузить систему. Но при наличии комплекта хороших шрифтов и их качественной отрисовки, работа в системе становится намного приятнее. В Slackware есть возможность отключать каталоги с установленными шрифтами, во всяком случае для fontconfig точно. Стоит только закомментировать пути к каталогам со шрифтами в файле /etc/fonts/font.conf и система перестаёт их видеть. С X-ами сложнее. Какие то установленные шрифты X-ы видят по умолчанию, их список выдаёт команда xfontsel, и их немного. Но если X-ы не видят какие либо установленные шрифты, то стоит только прописать пути к ним в файле /etc/X11/xorg.conf, список видимых программой xfontsel шрифтов выползет за пределы дисплея.

Минимальное колличество шрифтов, необходимое для запуска Xorg можно посмотреть здесь. То есть, имеется возможность добавлять только те шрифты, которые нравятся Вам. Но это уже нужно повозиться.



Пока всё. Если ещё чего нибуть накопаю - дополню.

Форум слаквари все похоже? Да там собственно и оставалось два активных пользователя, Ярик да Бормант. Жаль конечно. ( Там бы это разместить, но увы.

@cdrw, привет! Спасибо за материал.
у меня Монитор BenQ DL2215 21.5", согласно калькулятору получается DPI=102, то есть мне имеет смысл играться с цифрами 102; 51; 204.
и такое подозрение, что ~/.Xresources у меня в опенбоксе со шрифтами не работает

! шрифты ------------------------------------------
Xft.dpi: 102
Xft.antialias: true
Xft.hinting: true
Xft.rgba: rgb
Xft.autohint: false
Xft.hintstyle:  hintfull
Xft.lcdfilter: lcddefault

Добавлено позже:

~$ xdpyinfo | grep resolution
resolution: 96x96 dots per inch

BigOrange:


~/.Xresources у меня в опенбоксе со шрифтами не работает

А вот это делал?
xrdb -merge ~/.Xresources

redix:

BigOrange:


~/.Xresources у меня в опенбоксе со шрифтами не работает

А вот это делал?
xrdb -merge ~/.Xresources

Вот, эту команду пропустил. :)

делал и xrdb ~/.Xresources, и xrdb -load ~/.Xresources
если ставлю 48 и 192, то результат есть
но xdpyinfo показывает 96

BigOrange:


и такое подозрение, что ~/.Xresources у меня в опенбоксе со шрифтами не работает

Я использую IceWM, а openbox из настроек тем gtk вроде бы тянет инфу.


Добавлено позже:

BigOrange:

делал и xrdb ~/.Xresources, и xrdb -load ~/.Xresources
если ставлю 48 и 192, то результат есть
но xdpyinfo показывает 96

А сессия как запускается, DM или startx?


Добавлено позже:

Попробуй насильно переназначить командой:

xrandr --dpi 102

сессия запускается DM (slim)
xrandr --dpi 102 помогло

cdrw:

Набросал тут для себя заметку про настройку шрифтов
Вот спасибо, будет куда засылать "вопрошающих", а то ...

пока ковырялся с xterm также в ~/.Xresources менял парамы шрифтов.
заметна разница когда меняешь Xft.dpi: и Xft.antialias: false/true

BigOrange:

пока ковырялся с xterm также в ~/.Xresources менял парамы шрифтов

А я подобным лет десять назад игрался, тогда с urxvt (rxvt-unicode) кажется возился, хотелось ему желаемое оформление предать, хотелось ему желаемое оформление предать, а потом то лень было, то некогда, то казалось что и так пойдёт...
Может когда то ещё займусь, благо есть где почитать, без поиска! )))

Написать ответ…