Fonts Policy: различия между версиями
Строка 11: | Строка 11: | ||
* в core X font subsystem используется ограниченный набор шрифтов,для обеспечения работы старых приложений, не использующих fontconfig. | * в core X font subsystem используется ограниченный набор шрифтов,для обеспечения работы старых приложений, не использующих fontconfig. | ||
* не рекомендуется устанавливать новые шрифты, особенно otf и ttf шрифты, в core X font subsystem во избежание проблем со стабильностью. | * не рекомендуется устанавливать новые шрифты, особенно otf и ttf шрифты, в core X font subsystem во избежание проблем со стабильностью. | ||
== Разбивка на бинарные пакеты == | |||
Рекомендуется разбивать пакеты по семействам шрифтов. Пусть например factory (производитель) шрифтов будет Forest. | |||
Тогда {{path|Forest Fox.ttf}}, {{path|Forest Fox Bold.ttf}}, {{path|Forest Fox Oblique.ttf}} -- это одно семейство, а {{path|Forest Rabbit.ttf}}, {{path|Forest Rabbit Italic.ttf}} -- другое. | |||
== Соглашения по размещению == | == Соглашения по размещению == |
Версия от 21:12, 14 августа 2011
Полиси по упаковке шрифтов 2.0
Предварительные сведения
В дистрибутиве есть 2 подсистемы шрифтов: новая, Fontconfig, и устаревшая, core X font subsystem. Большинство приложений используют Fontconfig.
- шрифты должны быть установлены для использования в Fontconfig.
- в core X font subsystem используется ограниченный набор шрифтов,для обеспечения работы старых приложений, не использующих fontconfig.
- не рекомендуется устанавливать новые шрифты, особенно otf и ttf шрифты, в core X font subsystem во избежание проблем со стабильностью.
Разбивка на бинарные пакеты
Рекомендуется разбивать пакеты по семействам шрифтов. Пусть например factory (производитель) шрифтов будет Forest. Тогда Forest Fox.ttf, Forest Fox Bold.ttf, Forest Fox Oblique.ttf -- это одно семейство, а Forest Rabbit.ttf, Forest Rabbit Italic.ttf -- другое.
Соглашения по размещению
fontconfig
Пакеты со шрифтами в ALT Linux устанавливают содержимое в подкаталоги каталога %_datadir/fonts/ (/usr/share/fonts/), fontconfig по умолчанию настроен именно на этот каталог.
Подкаталог первого уровня определяется типом шрифта и выбирается из:
- type1 — Type 1;
- ttf — TrueType;
- otf — OpenType;
- bitmap — растровые;
- speedo — растровые в формате Speedo (давно не используются и сборка соответствующего модуля в xorg-server отключена).
Подкаталог второго уровня — сообразно имени шрифта (%fname). Этого достаточно для установки шрифтов под fontconfig.
core X font subsystem
У core X font subsystem своя схема загрузки шрифтов, не связанная с fontconfig, по умолчанию использующая каталог %_sysconfdir/X11/fontpath.d/, в который помещаются символические ссылки на подкаталог второго уровня. Имена символических ссылок имеют вид %type-%fname[:unscaled]:pri=XX Для того, чтобы X-сервер мог загрузить шрифты, в каталоге со шрифтами должен находиться служебный файл fonts.dir. См. Fonts_Policy#fonts.scale, fonts.dir.
Примеры создания таких ссылок в spec-файлах:
ln -s ../../..%_datadir/fonts/bitmap/misc \ %buildroot%_sysconfdir/X11/fontpath.d/bitmap-misc:unscaled:pri=20 ln -s ../../..%_datadir/fonts/type1/urw \ %buildroot%_sysconfdir/X11/fontpath.d/type1-urw:pri=40 ln -s ../../..%_datadir/fonts/ttf/dejavu \ %buildroot%_sysconfdir/X11/fontpath.d/ttf-dejavu:pri=50
где :pri=XX — это приоритет загрузки шрифтов, который зависит от типа шрифта:
- bitmap — 20;
- type1 — 40;
- ttf — 50;
- otf — 50.
Символические ссылки должны быть запакованы в пакет вместе с каталогами, на которые они указывают.
Дополнение для локалезависимых bitmap-шрифтов
Локалезависимые bitmap-шрифты обычно имеют подкаталоги третьего уровня (%cname), примером может служить пакет fonts-bitmap-cyrillic: %_datadir/fonts/bitmap/%fname/%cname
Символическая ссылка в /etc/X11/fontpath.d будет иметь имя bitmap-%fname-%cname:unscaled:pri=10
Requires, BuildRequires
BuildRequires:
- bitmap — xorg-x11-font-utils
- type1 — mkfontscale
- ttf — mkfontscale
- otf — mkfontscale
Requires: fontconfig >= 2.4.2
fonts.scale, fonts.dir
Для bitmap-шрифтов fonts.dir обычно идет в комплекте или создается Makefile’ом, а fonts.scale не требуется.
Для type1-, ttf-, otf-шрифтов fonts.scale создается с помощью mkfontscale, а fonts.dir — это символическая ссылка на fonts.scale:
mkfontscale %buildroot%_fontsdir/%fname ln -s fonts.scale %buildroot%_fontsdir/%fname/fonts.dir
Макросы
Для упрощения упаковки на ряд типовых каталогов и действий в пакете rpm-build-fonts заведены макросы:
Для обозначения каталогов с типами шрифтов:
%_bitmapfontsdir %_fontsdir/bitmap %_type1fontsdir %_fontsdir/type1 %_ttffontsdir %_fontsdir/ttf %_otffontsdir %_fontsdir/otf
Для обозначения каталога fontpath.d:
%_fontpathdir %_sysconfdir/X11/fontpath.d
Для установки шрифтов в core X font subsystem
%ttf_fonts_install ...
Для установки шрифтов только под fontconfig макросы *_fonts_install не нужны, достаточно распаковать их в соответствующий каталог.
С использованием пакета rpm-build-fonts спек для шрифтов ttf начинает выглядеть примерно так:
%define fname somefont Name: fonts-ttf-%fname ... BuildRequires: rpm-build-fonts >= 0.3 PreReq: fontconfig >= 2.4.2 Provides: %fname-fonts-ttf Obsoletes: %fname-fonts-ttf ... %install %ttf_fonts_install %fname %files -f %fname.files %doc ...
Примеры спеков можно посмотреть здесь для TrueType, OTF и Type1 шрифтов.
Ранее до выхода p6/t6 в %post/%postun скриптах использовались макросы
%post_fonts %postun_fonts
эти макросы в настоящее время устарели и больше не должны использоваться. Их функциональность заменена filetrigger'ом из пакета fontconfig.