RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
FreeBSD: Настройка шрифтов в десктопных приложениях [2010]
Настройка рендеринга шрифтов в десктопных приложениях для FreeBSD и
большинства других операционных систем семейства Linux/Unix вызывала, вызывает и
будет вызывать множество споров. Если Microsoft Windows предоставляет всего
несколько опций, позволяющих изменить внешность шрифтов, то в случае Linux/Unix
возможности настройки шрифтов ограничены только вкусами и потребностями
пользователя (к сожалению, в некоторых заокеанских странах еще и лицензионными
соглашениями).
Постановка задачи
Необходимо настроить шрифты на десктопе с FreeBSD таким образом, чтобы:
во-первых, они выглядели, как минимум, не хуже чем в Microsoft Windows с
включенным сглаживанием ClearType (были четкими, сглаженными, ни в коем
случае не размазанными и не замыленными), во-вторых, чтобы все Веб-страницы,
просматриваемые в браузерах для FreeBSD, имели такие же пропорции, как при
просмотре в браузерах для Microsoft Windows (к сожалению, многие
Веб-разработчики "не слышали” о существование Linux/Unix, поэтому их творения
выглядят в среде FreeBSD отвратительно), ну и, в-третьих, необходимо обойтись
без шрифтов webfonts (в связи с различием алгоритмов
рендеринга эти шрифты никогда не будут выглядеть в FreeBSD также, как в
Microsoft Windows).
Исходные данные
Действия, описанные в данной статье, выполнялись на компьютере с
интегрированной видеокартой на базе контроллера Intel® 82G33, к которому был
подключен 17″ LCD-монитор Samsung SyncMaster 710v. Этот компьютер работал под
управлением операционной системы FreeBSD 8.0, оконной системы Xorg 7.4_3 и
графической оболочки KDE 4.3.5. Библиотеки рендеринга шрифтов пересобирались из
последних на начало марта 2010 года версий портов. После установки Xorg и KDE c
опциями по-умолчанию шрифты выглядели так (слабонервным ни в коем случае не
смотреть):
Установка и интеграция в систему шрифтов Liberation
Сразу отвечу на вопрос, почему именно Liberation. Потому, что шрифт Liberation Serif
метрически совместим со шрифтом Times New Roman, Liberation Sans – с Arial, а
Liberation Mono – с Courier New, соответственно. При этом в среде FreeBSD шрифты
Liberation выглядят гораздо симпатичнее своих аналогов из Microsoft Windows.
Шрифты Liberation могут быть установлены из порта liberation-fonts-ttf, однако, коллекция портов
содержит не самую последнюю их версию, в связи с чем я рекомендую выполнить
установку "вручную”. Для загрузки из официального репозитория и установки последней
версии шрифтов Liberation (в моем случае – версии 1.05.2 от 27 декабря 2009
года) необходимо выполнить следующую последовательность команд:
После установки шрифтов Liberation следует изменить ряд опция в разделе
Шрифты модуля Внешний Вид, который находится на закладке
Основные окна Параметры системы. В частности, следует включить
Сглаживание, Межточечное сглаживание (наилучший режим
межточечного сглаживания зависит от типа используемого монитора) и Полный
хинтинг, а также установить в поле Использовать другой DPI
значение 96 dpi. Для того, чтобы в качестве псевдошрифтов Serif,
Sans-Serif и Monospace всегда использовались шрифты Liberation Serif, Liberation
Sans и Liberation Mono, необходимо подкорректировать два файла конфигурации
шрифтов, которые расположены в папке
/usr/local/etc/fonts/conf.avail. Резделы Serif
faces, Sans-serif faces и Monospace faces файла
45-latin.conf по умолчанию содержат ссылки на шрифты Liberation
Serif, Liberation Sans и Liberation Mono, однако, их следует перенести с третьих
мест после Bitstream Vera и DejaVu на первые:
<!--
Serif faces
-->
<alias>
<family>Liberation Serif</family>
<family>Bitstream Vera Serif</family>
<family>DejaVu Serif</family>
<family>Times New Roman</family>
...
</alias>
<!--
Sans-serif faces
-->
<alias>
<family>Liberation Sans</family>
<family>Bitstream Vera Sans</family>
<family>DejaVu Sans</family>
<family>Arial</family>
...
</alias>
<!--
Monospace faces
-->
<alias>
<family>Liberation Mono</family>
<family>Bitstream Vera Sans
Mono</family>
<family>DejaVu Sans Mono</family>
<family>Inconsolata</family>
...
</alias>
Разделы Serif, Sans-serif и Monospace
файла 60-latin.conf по умолчанию не содержат ссылки на шрифты
Liberation Serif, Liberation Sans и Liberation Mono, поэтому их необходимо
добавить, причем на первые места, как и в предыдущем случае:
<alias>
<family>serif</family>
<prefer>
<family>Liberation Serif</family>
<family>Bitstream Vera Serif</family>
<family>DejaVu Serif</family>
...
</prefer>
</alias>
<alias>
<family>sans-serif</family>
<prefer>
<family>Liberation Sans</family>
<family>Bitstream Vera Sans</family>
<family>DejaVu Sans</family>
...
</prefer>
</alias>
<alias>
<family>monospace</family>
<prefer>
<family>Liberation Mono</family>
<family>Bitstream Vera Sans
Mono</family>
<family>DejaVu Sans Mono</family>
...
</prefer>
</alias>
Для того, чтобы при отображении всех элементов интерфейса Mozilla Firefox,
Mozilla Thunderbird и остальных приложений, построенных на базе GTK2, использовался шрифт Liberation Sans 10,
необходимо создать в домашней папке файл .gtkrc-2.0, имеющий
следующее содержимое:
style
"user-font"
{
font_name="Liberation Sans 10"
}
widget_class
"*" style "user-font"
gtk-font-name="Liberation Sans
10"
Для того, чтобы при отображении всех элементов интерфейса приложений пакета
OpenOffice.org использовались настройки
шрифтов, заданные в конфигурации KDE4, необходимо пересобрать порт
OpenOffice.org с опцией WITH_KDE4:
cd
/usr/ports/editors/openoffice.org-3
make
-DWITH_KDE4 -DWITHOUT_GNOME LOCALIZED_LANG=ru deinstall build install
clean
На этом установка и интеграция в систему шрифтов Liberation заканчивается.
Остается отключить ненужные более растровые шрифты, добавив в папку
/usr/local/etc/fonts/conf.d символическую ссылку на файл
/usr/local/etc/fonts/conf.avail/70-no-bitmaps.conf:
cd
/usr/local/etc/fonts/conf.d
ln -s
../conf.avail/70-no-bitmaps.conf
Если Вы не хотите отказываться от какого-либо растрового шрифта, например, от
шрифта Terminus, (на мой взгляд, он является лучшим
шрифтом для консольных приложений), необходимо добавить в файл
/usr/local/etc/fonts/conf.avail/70-no-bitmaps.conf следующие
строки:
<selectfont>
<acceptfont>
<pattern>
<patelt
name="family">
<string>Terminus</string>
</patelt>
</pattern>
</acceptfont>
<rejectfont>
После выполнения всех действий, описанных в данном разделе, представленный
выше скриншот очень заметно изменился в лучшую сторону:
Пересборка библиотек Cairo и FreeType 2
В связи с возможными нарушениями авторских прав многие очень полезные функции
библиотек рендеринга шрифтов Cairo и FreeType 2 по умолчанию отключены. В связи с тем,
что патенты на данные функции действую на территории США, мы можем "нарушать” их
без зазрения совести. В настоящее время существует множество патчей для
библиотек Cairo и FreeType 2. Лично я пересобирал библиотеки согласно статье ClearType-сглаживание в Linux, или шрифты как в
Ubuntu, которая предлагает наложить один патч на Cairo и пять патчей на
FreeType 2. Также автор рекомендует пропатчить библиотеку libXft, однако, в моем
случае ее модификация не дала каких-либо заметных улучшений. В связи с тем, что
указанная статья написана достаточно подробно, мне остается только привести
список команд, позволяющих пересобрать библиотеки из портов FreeBSD:
На этом настройка шрифтов в десктопных приложениях для FreeBSD заканчивается.
Любителям красивых шрифтов (похожих на шрифты Microsoft Windows c включенным
сглаживанием ClearType или на шрифты Ubuntu), в число которых вхожу и я,
остается переключиться на Легкий хинтинг:
Почитателям строгих, максимально четких шрифтов (похожих на классические
шрифты Linux/Unix) лучше оставить Полный хинтинг:
Альтернатива пересборки библиотеки FreeType 2
Следует отметить, что альтернативой пересборки библиотеки FreeType 2,
позволяющей не нарушать патенты, является включение автохинтинга, однако, на мой
взгляд, с ним шрифты, особенно мелкие, выглядят значительно хуже. Если Вы все же
захотите попробовать автохинтинг, добавьте в папку
/usr/local/etc/fonts/conf.d символическую ссылку на файл
/usr/local/etc/fonts/conf.avail/10-autohint.conf для его
включения:
cd
/usr/local/etc/fonts/conf.d
ln -s
../conf.avail/10-autohint.conf
Достаточно часто после активации автохинтинга жирные шрифты становятся
безобразно жирными. Для того, чтобы отключить автохинтиг для жирных шрифтов,
необходимо добавить в файл
/usr/local/etc/fonts/conf.avail/10-autohint.conf следующие
строки:
</match>
<match
target="font">
<test
compare="more" name="weight">
<const>medium</const>
</test>
<edit
mode="assign" name="autohint">
<bool>false</bool>
</edit>
</match>
</fontconfig>
Заключение
Я искренне надеюсь, что рекомендации, содержащиеся в данной статье, помогут
Вам настроить шрифты в десктопных приложениях для FreeBSD или любой другой
операционной системы семейства Linux/Unix согласно Вашим вкусам и потребностям.
Я же обязательно продолжу свои эксперименты по переходу с Microsoft Windows на
FreeBSD и по мере возможности буду рассказывать о том, что получилось и не
получилось.