Доброго времени суток, уважаемые хабражители. Хочу поделиться своим опытом по настройке отображения шрифтов в Ubuntu.
По роду деятельности мне (как, наверняка, и большинству из обиталелей Хабра) постоянно приходится иметь дело с текстом на экране монитора, поэтому, мне очень важно, чтобы буквы отображались четко и не заставляли напрягать зрение.
Не секрет, что далеко не всех пользователей устараивают установленные по умолчанию шрифты и настройки их оботражения. И хотя в большинстве случаев речь идет о простом включении/выключении сглаживания (типа всем известного ClearType, который в Windows я отключал в первую же очередь, а в Linux без особых хитростей он и так не доступен), это не единственная возможность повлиять на рендеринг.
Я много времени проводил в Windows XP и, при переходе на Ubuntu (тогда еще 9.10), мне хотелось видеть текст в таком же качестве, однако я столкнулся с некоторыми проблемами. Но обо всем по порядку.
Хотя на хабре уже не раз поднимались подобные вопросы (например тут, тут, и тут), я хотел бы собрать всё, что помогло мне, воедино. Тем более, что некоторые советы уже успели устареть (например больше нет необходимости патчить FreeType сомнительными патчами, снимающими ряд искусственных ограничений, т.к. период действия патентов, ставших причиной ограничений, уже истек и ограничения сняты).
1. Установка шрифтов
При простом отключении сглаживания, стандартные шрифты стали выглядеть просто ужасно. Проблема, как оказалось, известная: достаточно было немного погуглить. Основная причина заключается в том, что данные шрифты не расчитаны на реденринг без сглаживания. На всех форумах советуют установить другие шрифты. Эту задачу можно решить несколькими способами:
а) Установить бесплатные шрифты
В репозиторях Ubuntu есть пакет с бесплатными шрифтами от Microsoft:
Однако в этом пакете нет самого частоиспользуемого в Windows шрифта — Tahoma (на него не распростаняется бесплатная лицензия). Чтобы разрешить эту проблему в компании PingWin Software разработали пакет свободных шрифтов PingWi Typography. Также набор шрифтов, адаптированных для рендеринга без сглаживания был выложен на www.sharpfonts.com, но при написании данной статьи, к сожалению, этот сайт отзывался лишь надписью «Site Temporarily Unavailable»… будем надеяться, что он к нам еще вернется.
б) Скопировать шрифты непосредственно из Windows.
Данный способ не совсем легальный, т.к. часть шрифтов, принадлежащих Microsoft, не являются бесплатными. Но если Вы решились, то создаем папку с любым именем в
и копируем в нее все, что хотим (кроме *.fon) из папки
Заходим в System(Система) -> Preferences(Настройки) -> Appearance(Внешний вид). Переходим на вкладку Fonts(Шрифты). Выбираем там шрифты по своему вкусу. Если хочется как в Windows XP, то везде выбитаем Tahoma, для заголовков окон можно выбрать Verdana, а для моноширинного Courier New.
2. Настройка стандартынх параметров
Как отмечалось в одном комментарии, чтобы текст оботажался максимально качественно, нужно правильно выставить разрешение (DPI), соответствующее Вашему монитору. Не буду загружать Вас теорией, просто скажу, что чтобы не утруждать себя расчетами, можно воспользоваться специальным калькулятором.
Вычислив DPI, выставим его в настройках системы. Заходим в System(Система) -> Preferences(Настройки) -> Appearance(Внешний вид) -> Fonts(Шрифты) -> Details...(Детали...) и выставляем полученное значение в поле Resolution(Разрешение). Там же можно выбрать режим сглаживания, тип хинтинга и расположение субпикселей в пикселе, соответствующее Вашему монитору.
3. Детальная настройка
В иксах за настройку растеризации шрифтов отвечает библиотека Fontconfig, конфигурирование которой осуществляется посредством редактирования файла
Тут перед нами открываются довольно широкие возможности. Чтобы не быть голословным, приведу пару примеров:
Вот как выглядел Firefox до внесения изменений:
А вот как он стал выглядеть после:
Как видно из примера, пользовательские правила задаются при помощи тега
По роду деятельности мне (как, наверняка, и большинству из обиталелей Хабра) постоянно приходится иметь дело с текстом на экране монитора, поэтому, мне очень важно, чтобы буквы отображались четко и не заставляли напрягать зрение.
Не секрет, что далеко не всех пользователей устараивают установленные по умолчанию шрифты и настройки их оботражения. И хотя в большинстве случаев речь идет о простом включении/выключении сглаживания (типа всем известного ClearType, который в Windows я отключал в первую же очередь, а в Linux без особых хитростей он и так не доступен), это не единственная возможность повлиять на рендеринг.
Я много времени проводил в Windows XP и, при переходе на Ubuntu (тогда еще 9.10), мне хотелось видеть текст в таком же качестве, однако я столкнулся с некоторыми проблемами. Но обо всем по порядку.
Хотя на хабре уже не раз поднимались подобные вопросы (например тут, тут, и тут), я хотел бы собрать всё, что помогло мне, воедино. Тем более, что некоторые советы уже успели устареть (например больше нет необходимости патчить FreeType сомнительными патчами, снимающими ряд искусственных ограничений, т.к. период действия патентов, ставших причиной ограничений, уже истек и ограничения сняты).
1. Установка шрифтов
При простом отключении сглаживания, стандартные шрифты стали выглядеть просто ужасно. Проблема, как оказалось, известная: достаточно было немного погуглить. Основная причина заключается в том, что данные шрифты не расчитаны на реденринг без сглаживания. На всех форумах советуют установить другие шрифты. Эту задачу можно решить несколькими способами:
а) Установить бесплатные шрифты
В репозиторях Ubuntu есть пакет с бесплатными шрифтами от Microsoft:
sudo aptitude install msttcorefonts
Однако в этом пакете нет самого частоиспользуемого в Windows шрифта — Tahoma (на него не распростаняется бесплатная лицензия). Чтобы разрешить эту проблему в компании PingWin Software разработали пакет свободных шрифтов PingWi Typography. Также набор шрифтов, адаптированных для рендеринга без сглаживания был выложен на www.sharpfonts.com, но при написании данной статьи, к сожалению, этот сайт отзывался лишь надписью «Site Temporarily Unavailable»… будем надеяться, что он к нам еще вернется.
б) Скопировать шрифты непосредственно из Windows.
Данный способ не совсем легальный, т.к. часть шрифтов, принадлежащих Microsoft, не являются бесплатными. Но если Вы решились, то создаем папку с любым именем в
/usr/share/fonts/truetype/
и копируем в нее все, что хотим (кроме *.fon) из папки
C:\Windows\Fonts
.Заходим в System(Система) -> Preferences(Настройки) -> Appearance(Внешний вид). Переходим на вкладку Fonts(Шрифты). Выбираем там шрифты по своему вкусу. Если хочется как в Windows XP, то везде выбитаем Tahoma, для заголовков окон можно выбрать Verdana, а для моноширинного Courier New.

2. Настройка стандартынх параметров
Как отмечалось в одном комментарии, чтобы текст оботажался максимально качественно, нужно правильно выставить разрешение (DPI), соответствующее Вашему монитору. Не буду загружать Вас теорией, просто скажу, что чтобы не утруждать себя расчетами, можно воспользоваться специальным калькулятором.
Вычислив DPI, выставим его в настройках системы. Заходим в System(Система) -> Preferences(Настройки) -> Appearance(Внешний вид) -> Fonts(Шрифты) -> Details...(Детали...) и выставляем полученное значение в поле Resolution(Разрешение). Там же можно выбрать режим сглаживания, тип хинтинга и расположение субпикселей в пикселе, соответствующее Вашему монитору.

3. Детальная настройка
В иксах за настройку растеризации шрифтов отвечает библиотека Fontconfig, конфигурирование которой осуществляется посредством редактирования файла
/etc/fonts/fonts.conf
. Это XML-файл, поэтому, думаю, разобраться с его структурой не составит большого труда.Тут перед нами открываются довольно широкие возможности. Чтобы не быть голословным, приведу пару примеров:
<!--
Включим сглаживание для жирных букв шрифтов семейства sans-serif
-->
<match target="pattern">
<test qual="any" name="family">
<string>sans-serif</string>
</test>
<test qual="any" name="weight" compare="more">
<const>regular</const>
</test>
<edit name="antialias" mode="assign">
<bool>true</bool>
</edit>
<edit name="hinting" mode="assign">
<bool>true</bool>
</edit>
<edit name="hintstyle" mode="assign">
<const>hintfull</const>
</edit>
</match>
<!--
Включим сглаживание для всех шрифтов при размере >= 22 пикселей
-->
<match target="pattern">
<test qual="any" name="pixelsize" compare="more_eq">
<double>22</double>
</test>
<edit name="antialias" mode="assign">
<bool>true</bool>
</edit>
</match>
Вот как выглядел Firefox до внесения изменений:

А вот как он стал выглядеть после:

Как видно из примера, пользовательские правила задаются при помощи тега
. Условие задается одним или несколькими тегами , а действие — тегом . Так в первом примере заданы два теста: первый сравнивает название шрифта с «sans-serif», второй проверяет его «жирность». Если выполняются оба условия (оба теста возвращают положительный результат), то применяются действия, заданные тегами . В первом примере это разрешение сглаживания (antialias) и хинтинга (hinting) и задание метода хинтинга (hintstyle).
Более подробно о доступных возможностях написано в документации.
Единственное, чего мне не удалось добиться подобными манипуляциями, это изменение семейства шрифта, т.е. следующее правило не приводит ни к каким изменениям:
<match target="pattern">
<test qual="any" name="family">
<string>sans-serif</string>
</test>
<edit name="family" mode="assign">
<string>arial</string>
</edit>
</match>
4. Если этого недостаточно
Дополнительно повлиять на рендеринг текста можно попробовав поэкспериментировать с патчами, о которых уже писали на Хабре.
Вот и всё. Всем спасибо, надеюсь, что кому-то это всё окажется полезным.