Fonts Policy
Материал из ALT Linux Wiki
(Import from freesource.info) |
м (→Макросы: уехали в rpm-macros-fonts) |
||
(34 промежуточные версии не показаны) | |||
Строка 1: | Строка 1: | ||
- | + | {{h0|Полиси по упаковке шрифтов 2.0}} | |
- | {{ | + | {{span|font-size: 180%|}} |
+ | {{Policy | ||
+ | |since_branch=6.0 | ||
+ | |responsible=Igor Vlasenko (viy) | ||
+ | }} | ||
- | == | + | == История == |
+ | Fonts Policy 1.0 Vitaly Lipatov | ||
- | + | Fonts Policy 2.0 (policy since p6) Igor Vlasenko | |
- | Пакеты со шрифтами в ALT Linux устанавливают содержимое в подкаталоги каталога '''%_datadir/fonts/''', | + | == Предварительные сведения == |
- | fontconfig по умолчанию настроен именно на этот каталог. | + | |
+ | В дистрибутиве есть 2 подсистемы шрифтов: | ||
+ | новая, Fontconfig, и устаревшая, core X font subsystem. | ||
+ | Большинство приложений используют Fontconfig. | ||
+ | |||
+ | * шрифты должны быть установлены для использования в Fontconfig. | ||
+ | * в core X font subsystem используется ограниченный набор шрифтов,для обеспечения работы старых приложений, не использующих fontconfig. | ||
+ | * не рекомендуется устанавливать новые шрифты, особенно 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}} -- другое. | ||
+ | |||
+ | == Соглашения по размещению == | ||
+ | === fontconfig === | ||
+ | Пакеты со шрифтами в ALT Linux устанавливают содержимое в подкаталоги каталога '''%_datadir/fonts/''' ('''/usr/share/fonts/'''), fontconfig по умолчанию настроен именно на этот каталог. | ||
Подкаталог первого уровня определяется типом шрифта и выбирается из: | Подкаталог первого уровня определяется типом шрифта и выбирается из: | ||
- | '''type1''' | + | * '''type1''' — Type 1; |
- | '''ttf''' | + | * '''ttf''' — TrueType; |
- | '''otf''' | + | * '''otf''' — OpenType; |
- | '''bitmap''' | + | * '''bitmap''' — растровые; |
- | '''speedo''' | + | * '''speedo''' — растровые в формате Speedo (давно не используются и сборка соответствующего модуля в xorg-server отключена). |
- | сборка соответствующего модуля в xorg-server отключена). | + | |
+ | Подкаталог второго уровня — сообразно имени шрифта (%fname). | ||
+ | Этого достаточно для установки шрифтов под fontconfig. | ||
+ | При необходимости можно использовать подкаталоги третьего уровня. | ||
- | + | === core X font subsystem === | |
- | X | + | У core X font subsystem своя схема загрузки шрифтов, не связанная с fontconfig, |
по умолчанию использующая каталог '''%_sysconfdir/X11/fontpath.d/''', | по умолчанию использующая каталог '''%_sysconfdir/X11/fontpath.d/''', | ||
- | в который | + | в который помещаются символические ссылки на подкаталог второго уровня. |
- | Имена символических ссылок имеют вид '''%type-%fname[:unscaled]:pri=XX'''. | + | Имена символических ссылок имеют вид '''%type-%fname[:unscaled]:pri=XX''' |
+ | Для того, чтобы X-сервер мог загрузить шрифты, в каталоге со шрифтами должен находиться | ||
+ | служебный файл fonts.dir. См. [[Fonts_Policy#fonts.scale, fonts.dir]]. | ||
Примеры создания таких ссылок в spec-файлах: | Примеры создания таких ссылок в spec-файлах: | ||
Строка 33: | Строка 59: | ||
%buildroot%_sysconfdir/X11/fontpath.d/ttf-dejavu:pri=50</pre> | %buildroot%_sysconfdir/X11/fontpath.d/ttf-dejavu:pri=50</pre> | ||
- | где ''':pri=XX''' | + | где ''':pri=XX''' — это приоритет загрузки шрифтов, который зависит от типа шрифта: |
- | + | * bitmap — 20; | |
- | + | * type1 — 40; | |
- | + | * ttf — 50; | |
- | + | * otf — 50. | |
Символические ссылки должны быть запакованы в пакет вместе с каталогами, | Символические ссылки должны быть запакованы в пакет вместе с каталогами, | ||
на которые они указывают. | на которые они указывают. | ||
- | + | == Дополнение для локалезависимых bitmap-шрифтов == | |
- | + | Локалезависимые bitmap-шрифты обычно имеют подкаталоги третьего уровня (%cname), | |
- | Локалезависимые bitmap шрифты обычно имеют подкаталоги третьего уровня (cname), | + | |
примером может служить пакет fonts-bitmap-cyrillic: | примером может служить пакет fonts-bitmap-cyrillic: | ||
'''%_datadir/fonts/bitmap/%fname/%cname''' | '''%_datadir/fonts/bitmap/%fname/%cname''' | ||
+ | |||
Символическая ссылка в /etc/X11/fontpath.d будет иметь имя | Символическая ссылка в /etc/X11/fontpath.d будет иметь имя | ||
'''bitmap-%fname-%cname:unscaled:pri=10''' | '''bitmap-%fname-%cname:unscaled:pri=10''' | ||
- | + | == Requires, BuildRequires == | |
- | + | ||
BuildRequires: | BuildRequires: | ||
- | + | * bitmap — '''xorg-x11-font-utils''' | |
- | + | * type1 — '''mkfontscale''' | |
- | + | * ttf — '''mkfontscale''' | |
- | + | * otf — '''mkfontscale''' | |
Requires: | Requires: | ||
- | fontconfig >= 2.4.2 | + | '''fontconfig >= 2.4.2''' |
- | + | == fonts.scale, fonts.dir == | |
+ | Для bitmap-шрифтов fonts.dir обычно идет в комплекте или создается Makefile’ом, | ||
+ | а fonts.scale не требуется. | ||
- | + | Для type1-, ttf-, otf-шрифтов fonts.scale создается с помощью '''mkfontscale''', | |
- | + | а fonts.dir — это символическая ссылка на fonts.scale: | |
- | Для type1, ttf, otf шрифтов fonts.scale создается с помощью '''mkfontscale''', | + | |
- | fonts. | + | |
<pre>mkfontscale %buildroot%_fontsdir/%fname | <pre>mkfontscale %buildroot%_fontsdir/%fname | ||
ln -s fonts.scale %buildroot%_fontsdir/%fname/fonts.dir</pre> | ln -s fonts.scale %buildroot%_fontsdir/%fname/fonts.dir</pre> | ||
- | === | + | == Макросы == |
+ | Для упрощения упаковки на ряд типовых каталогов и действий в пакете rpm-macros-fonts заведены макросы: | ||
+ | |||
+ | Для обозначения каталогов с типами шрифтов: | ||
+ | <pre>%_bitmapfontsdir %_fontsdir/bitmap | ||
+ | %_type1fontsdir %_fontsdir/type1 | ||
+ | %_ttffontsdir %_fontsdir/ttf | ||
+ | %_otffontsdir %_fontsdir/otf</pre> | ||
+ | |||
+ | Для обозначения каталога fontpath.d: | ||
+ | <pre>%_fontpathdir %_sysconfdir/X11/fontpath.d</pre> | ||
+ | |||
+ | Для установки шрифтов в core X font subsystem | ||
+ | <pre>%ttf_fonts_install ...</pre> | ||
+ | Для установки шрифтов только под fontconfig макросы {{prg|*_fonts_install}} | ||
+ | не нужны, достаточно распаковать их в соответствующий каталог. | ||
+ | |||
+ | |||
+ | С использованием пакета rpm-build-fonts спек для шрифтов ttf начинает выглядеть примерно так: | ||
+ | |||
+ | <pre>%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 ...</pre> | ||
- | + | Примеры спеков можно посмотреть здесь для [http://sisyphus.ru/srpm/fonts-ttf-prosto/spec TrueType], [[SampleSpecs/fontpackage|OTF]] и [http://sisyphus.ru/srpm/fonts-type1-church/spec Type1] шрифтов. | |
- | + | ||
- | %postun | + | Ранее до выхода p6/t6 в %post/%postun скриптах использовались макросы |
- | + | <pre> | |
- | + | %post_fonts | |
- | + | %postun_fonts | |
+ | </pre> | ||
+ | эти макросы устарели и больше не должны использоваться. | ||
+ | Их функциональность заменена filetrigger'ом из пакета fontconfig. | ||
- | == | + | == Ресурсы == |
+ | * [http://www.xfree86.org/current/xlfd.pdf X Logical Font Description Conventions] | ||
+ | * http://lists.altlinux.org/pipermail/devel/2011-August/191583.html | ||
+ | * http://fedoraproject.org/wiki/Packaging:FontsPolicy | ||
+ | * http://markmail.org/message/4nwmisamzgkoklnp | ||
+ | * [http://lists.debian.org/debian-x/2011/04/msg00670.html Bug#623235: x11-utils: font utilities crash X] | ||
+ | * 4231879 ON X86: X server crashes w/Thai font | ||
+ | * http://vim.1045645.n5.nabble.com/Font-names-hint-td1148764.html | ||
+ | * https://wiki.archlinux.org/index.php/Font_Configuration | ||
- | + | [[Категория:Packaging]] |
Текущая версия на 18:05, 1 сентября 2014
Полиси по упаковке шрифтов 2.0
Содержание |
История
Fonts Policy 1.0 Vitaly Lipatov
Fonts Policy 2.0 (policy since p6) 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-macros-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.
Ресурсы
- X Logical Font Description Conventions
- http://lists.altlinux.org/pipermail/devel/2011-August/191583.html
- http://fedoraproject.org/wiki/Packaging:FontsPolicy
- http://markmail.org/message/4nwmisamzgkoklnp
- Bug#623235: x11-utils: font utilities crash X
- 4231879 ON X86: X server crashes w/Thai font
- http://vim.1045645.n5.nabble.com/Font-names-hint-td1148764.html
- https://wiki.archlinux.org/index.php/Font_Configuration