This is Gentoo's testing wiki. It is a non-operational environment and its textual content is outdated.
Please visit our production wiki at https://wiki.gentoo.org
Fontconfig
Библиотека fontconfig (media-libs/fontconfig) предназначена для обеспечения единого места, где можно выбрать шрифт и настройки для всех приложений с графическим интерфейсом. fontconfig является основополагающей библиотекой, хотя разные окружения рабочего стола могут предоставлять свои настройки шрифтов и утилиты для их конфигурации.
Установка
Почти наверняка fontconfig уже установлен, когда он вдруг понадобится. Если это не так, убедитесь, что правильно настроили графическую подсистему (например, X или Wayland) и окружение рабочего стола.
USE-флаги
fontconfig не содержит много USE-флагов.
USE flags for media-libs/fontconfig A library for configuring and customizing font access
doc
|
Add extra documentation (API, Javadoc, etc). It is recommended to enable per package instead of globally |
nls
|
Add Native Language Support (using gettext - GNU locale utilities) |
test
|
Enable dependencies and/or preparations necessary to run tests (usually controlled by FEATURES=test but can be toggled independently) |
Конфигурация
Изменения в файлах fontconfig отобразятся только в тех приложениях, которые были запущены после изменений!
Общие сведения
Чтобы сгенерировать свою внутреннюю конфигурацию fontconfig использует XML-файлы в каталоге /etc/fonts/. По умолчанию она парсит /etc/fonts/fonts.conf (пользователю не следует самостоятельно вносить изменения в этот файл!), который хранит некоторые разумные значения, а также зачастую содержит код для парсинга файлов из /etc/fonts/conf.d/. Кроме этого, есть каталог /etc/fonts/conf.avail/, в котором находятся всевозможные конфигурационные файлы, каждый из которых покрывает тот или иной аспект fontconfig. Можно создавать символьные ссылки на необходимые файлы в /etc/fonts/conf.d/. Порядок выполнения зависит от имён файлов; именно поэтому каждое имя начинается с двузначного числа, первая цифра которого (разряд десятков) указывает, на что влияет файл (иначе говоря, класс конфигурационного файла).
Специфика Gentoo
Gentoo предоставляет модуль eselect (eselect fontconfig), который в точности осуществляет описанное общим способом — управляет символьными ссылками в /etc/fonts/conf.avail/, добавляя или удаляя их из каталога /etc/fonts/conf.d/. По понятным причинам изменение конфигурации для всей системы требует соответствующих прав доступа.
Следующие подразделы поясняют работу с модулем eselect fontconfig.
Список доступных файлов
Команда list отображает доступные файлы fontconfig и помечает активные звёздочкой (*
).
root #
eselect fontconfig list
Available fontconfig .conf files (* is enabled): [1] 10-autohint.conf * [2] 10-no-sub-pixel.conf [3] 10-sub-pixel-bgr.conf [4] 10-sub-pixel-rgb.conf [5] 10-sub-pixel-vbgr.conf [6] 10-sub-pixel-vrgb.conf [7] 10-unhinted.conf [8] 11-lcdfilter-default.conf [9] 11-lcdfilter-legacy.conf ...
Содержимое fonts.avail в разных системах отличается, поэтому вывод будет отличаться. Никогда не используйте не глядя номера из списков, приведённых, например, в блогах или wiki-статьях.
Активация файлов
Файлы могут быть активированы по имени или по номеру в скобках. Следующие две команды выполняют одно и то же действие:
root #
eselect fontconfig enable 10-sub-pixel-rgb.conf
root #
eselect fontconfig enable 4
Деактивация файлов
Файлы могут быть деактивированы аналогичным образом:
root #
eselect fontconfig disable 10-sub-pixel-rgb.conf
root #
eselect fontconfig disable 4
Пользовательская конфигурация для всей системы
Чтобы создать пользовательский файл fontconfig, влияющий на всю систему, активируйте 51-local.conf и создайте /etc/fonts/local.conf (это XML-файл).
/etc/fonts/local.conf
Пример файла, устанавливающего желаемый порядок резервных шрифтов для sans-serif<?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <fontconfig> <alias> <family>sans-serif</family> <prefer> <family>Ubuntu</family> <family>TakaoPGothic</family> <family>Droid Sans</family> </prefer> <default><family>DejaVu Sans</family></default> </alias> </fontconfig>
Поясним. Это настройка сообщает, что когда речь идет о шрифтах из группы sans-serif, мы предпочитаем использование шрифтов Ubuntu, TakaoPGothic и Droid Sans (в таком порядке) вместо DejaVu Sans (которые могут быть как выбор по умолчанию только тогда, когда это необходимо). Очевидно, что здесь можно сделать другой выбор.
Конфигурация для каждого пользователя отдельно
Чтобы создать файлы fontconfig для каждого пользователя, активируйте 50-user.conf (может быть активирован по умолчанию) и сделайте так, чтобы пользователи использовали ~/config/fontconfig/fonts.conf. Этот файл имеет тот же формат XML, что и local.conf.
Это один из способов, благодаря которому окружение рабочего стола может влиять на отображение шрифтов. Возможно, имеет смысл выключить эту настройку, чтобы убедиться, что при настройке отображаются только действительно общесистемные настройки. Выключение этой настройки также дает более универсальное отображение шрифтов для всех пользователей.
Ранее используемый ~/.fonts.conf теперь устарел в пользу месторасположения, указанного в переменной $XDG_CONFIG_HOME. По умолчанию переменная указывает на ~/.config.
Проверка конфигурации
Проверьте замену шрифта по умолчанию, например, для Arial:
user $
fc-match Arial
Сглаживание, хинтинг и субпиксельное отображение
Тонкости отображения также могут быть настроены. В следующих разделах показана настройка сглаживания, хинтинга и субпиксельного отображения.
Параметр | Описание |
---|---|
Сглаживание | по умолчанию включено, делает шрифты менее угловатыми. |
Хинтинг | попытка справиться с малым количеством пикселей на единицу площади текущих дисплеев. Корректный хинтинг делает символы более чёткими, но, так как метрики шрифта не меняются (и, собственно, не должны меняться), влияет на то, как отображаемый текст выглядит в целом. |
Субпиксельное отображение | использует тот факт, что жидкокристаллическая матрица имеет три основных цвета, чтобы фактически утроить разрешение шрифта, но может заставить символы быть не совсем чёрными. Чтобы не допустить этого, следует использовать субпиксельное отображение совместно с lcdfilter (доступно в свежих версиях fontconfig), однако это может слишком сильно размыть шрифт. Наконец, это зависит от личных предпочтений пользователя. |
Форсирование хинтинга
Стандартное поведение fontconfig в отношении хинтинга практически не документировано, но его можно сделать целенаправленно субоптимальным посредством создания общесистемного значения по умолчанию.
- Активируйте /etc/fonts/local.conf
- Отредактируйте файл local.conf, включив полный хинтинг по умолчанию
Этот фрагмент файла local.conf включает полный хинтинг:
/etc/fonts/local.conf
Установка полного хинтинга<match target="font"> <edit mode="assign" name="hintstyle"> <const>hintfull</const> </edit> </match>
Большая часть шрифтов лучше выглядит с полным хинтингом, некоторым требуется легкий хинтинг или, реже, другие настройки хинтинга. По тем или иным причинам, некоторые шрифты всегда выглядят некрасиво.
Использование субпиксельного отображения
Важно определить субпиксельный формат матрицы жидкокристаллического дисплея. Обычно это RGB (10-sub-pixel-rgb.conf), однако для того, чтобы точно его установить, нужно либо обратиться к спецификации дисплея, либо воспользоваться этим тестом субпиксельного формата.
После того, как субпиксельный формат определен, активируйте соответствующий файл 10-sub-pixel-<matrix type>.conf.
root #
eselect fontconfig enable 10-sub-pixel-rgb.conf
Для субпиксельного отображения настоятельно рекомендуется использовать lcdfilter, если он доступен. Он доступен в различных вариантах, однако 11-lcdfilter-default.conf, использующийся по умолчанию, должен подойти для всех наиболее распространенных шрифтов.
root #
eselect fontconfig enable 11-lcdfilter-default.conf
USE-флаг
bindist
пакета media-libs/freetype полностью отключает субпиксельное отображение по причине потенциальных проблем с патентами. Чтобы воспользоваться субпиксельным отображением, USE-флаг должен быть в этом пакете (то есть -bindist
).О autohinter
Autohinter пытается осуществлять автоматический хинтинг, игнорируя существующую информацию о хинтинге. До недавнего времени он использовался по умолчанию, поскольку TrueType2 был защищен патентами. Однако срок патентов истек, и сейчас нет никаких причин для его использования. С технической точки зрения, он работает лучше для шрифтов с неправильной или отсутствующей информацией о хинтинге, однако для шрифтов с хорошей информацией о хинтинге он весьма неоптимален. Системные шрифты, как правило, относятся ко второй категории, поэтому autohinter использовать не следует.
Autohinter не совместим с субпиксельным отображением, поэтому не используйте их вместе!
Infinality
Infinality — это (несколько противоречивый) набор патчей для FreeType и сопутствующих файлов fontconfig. Целью Infinality является реализация более высококачественного отображения шрифтов, включая эмуляцию стилей отображения шрифтов других операционных систем.
Как обычно, при работе с программным обеспечением, находящимся в разработке, лучше всегда использовать последнюю версию, за исключением случаев, когда с ней есть известные проблемы.
Включение Infinality
Включите USE-флаг 'infinality' либо вручную отредактировав файл make.conf, либо с помощью утилиты euse.
root #
euse -E infinality
Затем пересоберите программы, на которые влияет этот USE-флаг.
root #
emerge --ask -uvDU @world
Активируйте 52-infinality.conf, если сообщения, отображаемые после пересборки, не требуют этого не делать.
root #
eselect fontconfig enable 52-infinality.conf
Настройка Infinality
Infinality можно настроить различными способами, включая индивидуальные конфигурации, однако наиболее простым способом является использование готовых профилей, включенных в пакет media-libs/fontconfig-infinality. Этот пакет, вместе с модулями eselect, должен устанавливаться как зависимость USE-флага infinality
.
Быстрая и приемлимая конфигурация
root #
eselect infinality set infinality
root #
eselect lcdfilter set infinality
Как и в других случаях, изменения fontconfig влияют только на приложения, запущенные после внесения изменений.
Также рекомендуется выключить все настройки fontconfig кроме 52-infinality.conf, так как они вмешиваются в отображение стилей infinality:
root #
eselect fontconfig disable <number>
Некоторые настройки fontconfig не влияют на отображение шрифтов, но определяют шрифты по умолчанию для типов шрифтов (таких как Monospace, sans-serif и так далее). Такие настройки (например, конфигурации 62-croscore-*.conf) можно оставить включенными.
Объяснение
Infinality предоставляет переменные окружения FreeType, которые могут использоваться для настройки возможностей, реализуемых патчами infinality, а также файлы fontconfig для использования с этими изменениями. Управление наборами файлов fontconfig на Gentoo осуществляется с помощью eselect infinality, а поведение FreeType настраивается с помощью eselect lcdfilter.
Эти модули eselect работают, как обычно:
- Выведение списка доступных наборов файлов fontconfig.
root #
eselect infinality list
- Выведение списка доступных наборов переменных FreeType.
root #
eselect lcdfilter list
- Разумеется, оба набора должны находиться в соответствии друг с другом, за исключением ситуации, когда возможны различные соответствия, как в нижеследующем примере.
root #
eselect infinality set win7
root #
eselect lcdfilter set windows-7-light
Выбор шрифтов
Выбор нужного шрифта может быть более трудной задачей, чем выбор правильного типа хинтинга. По той или иной причине, некоторые шрифты никогда не будут идеальными, однако возможно сделать их внешний вид лучше, чем, скажем, в стандартной конфигурации шрифтов в Windows 7.
Вот некоторые рекомендации относительно хорошо известных шрифтов в Gentoo:
Семейство шрифтов | Плюсы | Минусы |
---|---|---|
Liberation media-fonts/liberation-fonts |
Шрифты Red Hat, которые метрически совместимы с MS TrueType corefonts, имеют приличный современный вид. Рекомендуется Gentoo Fonts team для латинских шрифтов по умолчанию. Охватывает около 2600 кодовых позиций. | Только для Латинского, Греческого, Кириллического и Иврит алфавитов. Некоторые символы, могут иметь проблемы с хинтингом. |
Linux Libertine media-fonts/libertine |
Очень похож на Liberation, охватывает около 2700 кодовых позиций. Linux Libertine сам по себе является пропорциональным serif шрифтом, но пакет содержит менее обширные sans и mono шрифты. Может использоваться в качестве резерва для некоторых глифов, которых нет в Liberation. | Только для Латинского, Греческого, Кириллического и Иврит алфавитов. Sans и mono шрифты ограничены. |
Noto media-fonts/noto |
Семейство шрифтов Google, которое предназначено для поддержки всех языков мира (содержит более 60 000 кодовых позиций). Хорошо сочетается с Liberation или Droid. Adobe шрифты Source Han Sans включены в CJK. Рекомендуется в качестве резерва для многих глифов, не охваченных Liberation. | Большой объем загружаемых данных. |
DejaVu media-fonts/dejavu |
Много стилей и покрывает много кодовых позиций (около 6100 для sans). | Исключительно широкий - даже condensed вариант шире моноширинных такой же высоты. В целом второй после Verdana (шрифт MS) по ширине. Шрифт Sans-serif только средний. |
Droid media-fonts/droid |
Охватывает множество кодовых позиций и рукописных шрифтов. | Очень сухие, широкие, но тонкие глифы. Очевидно разработан для использования в карманных устройствах с их небольшими экранами. |
Gentium Plus media-fonts/sil-gentium |
Достаточно самобытный; может понравиться людям, которым нравятся узкие шрифты. | Только Serif. Как и в других шрифтах SIL - сомненительный хинтинг. |
Ubuntu media-fonts/ubuntu-font-family |
Используется в Ubuntu (что очевидно). Характерное семейство шрифтов со стилем, который может понравиться не всем. В целом выглядит хорошо и охватывает довольно много кодовых позиций. | Только шрифт sans-serif действительно безупречен; узкие и моноширинные версии недоделаны. Нет известного serif шрифта, который бы хорошо с ним сочетался. |
URW media-fonts/urw-fonts |
Метрически совместим с популярными шрифтами Adobe (среди прочих?). | Похоже требуется небольшой хинтинг. |
MS TrueType corefonts media-fonts/corefonts |
Включает в себя большинство шрифтов, используемых в документах и в Интернете. | В настоящее время MS не распространяет их, поэтому имеющиеся шрифты разрабатывались много лет назад и их текущее состояние не соответствуют современным требованиям (не говоря уже об уровне развития). В последнее время явно не хватает представленных шрифтов. Требуют полного хинтинга. |
Unifont media-fonts/unifont |
Охватывает множество кодовых позиций. | Мало того, что «страшен как смертный грех», он также не удовлетворяет некоторым основным требованиям, чтобы считаться шрифтом. Это sans-serif? Это serif? «Пожалуйста, никогда не используйте это». |
Внешние ресурсы
- Подробные статьи на Arch Linux wiki по:
- Официальная документация для пользователей fontconfig
- Статья на Wikipedia о хинтинге шрифтов