Fonts Policy
Шрифты
Соглашения по размещению
Пакеты со шрифтами в ALT Linux устанавливают содержимое в подкаталоги каталога %_datadir/fonts/, fontconfig по умолчанию настроен именно на этот каталог.
Подкаталог первого уровня определяется типом шрифта и выбирается из: type1 — Type 1; ttf — TrueType; otf — OpenType; bitmap — растровые; speedo — растровые в формате Speedo (давно не используются и сборка соответствующего модуля в xorg-server отключена).
Подкаталог второго уровня — сообразно имени шрифта (fname). X сервер не использует fontconfig, у него своя схема загрузки шрифтов, по умолчанию использующая каталог %_sysconfdir/X11/fontpath.d/, в который размещаются символические ссылки на подкаталог второго уровня. Имена символических ссылок имеют вид %type-%fname[:unscaled]:pri=XX.
Примеры создания таких ссылок в 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 для bitmap шрифтов не нужен. Для type1, ttf, otf шрифтов fonts.scale создается с помощью mkfontscale, fonts.dir -- это символическая ссылка на fonts.scale:
mkfontscale %buildroot%_fontsdir/%fname ln -s fonts.scale %buildroot%_fontsdir/%fname/fonts.dir
post/postun
post/postun для всех шрифтов одинаков:
%post %_bindir/fc-cache %_fontsdir/%fname ||: %postun if [ "$1" = "0" ]; then %_bindir/fc-cache --system-only ||: fi
Упрощение сборки шрифтов
Для упрощения жизни мантейнеру шрифтов и скрытия деталей упаковки созданы макросы в пакете rpm-build-fonts.