Fonts Policy: различия между версиями

Материал из ALT Linux Wiki
Строка 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}} -- другое.


== Соглашения по размещению ==
== Соглашения по размещению ==

Версия от 18:12, 14 августа 2011

Полиси по упаковке шрифтов 2.0

Stub.png
Черновик политики Sisyphus
Автор(ы) — Vitaly Lipatov, Igor Vlasenko


Предварительные сведения

В дистрибутиве есть 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.

Ресурсы