Fonts Policy

Материал из ALT Linux Wiki

(Различия между версиями)
Перейти к: навигация, поиск
(wikification)
м (Макросы: уехали в rpm-macros-fonts)
 
(32 промежуточные версии не показаны)
Строка 1: Строка 1:
-
[[Category:Policy]]
+
{{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
 +
== Предварительные сведения ==
 +
 +
В дистрибутиве есть 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 по умолчанию настроен именно на этот каталог.
Пакеты со шрифтами в ALT Linux устанавливают содержимое в подкаталоги каталога '''%_datadir/fonts/''' ('''/usr/share/fonts/'''), fontconfig по умолчанию настроен именно на этот каталог.
Подкаталог первого уровня определяется типом шрифта и выбирается из:
Подкаталог первого уровня определяется типом шрифта и выбирается из:
-
* '''type1''' Type 1;
+
* '''type1''' — Type 1;
-
* '''ttf''' TrueType;
+
* '''ttf''' — TrueType;
-
* '''otf''' OpenType;
+
* '''otf''' — OpenType;
-
* '''bitmap''' растровые;
+
* '''bitmap''' — растровые;
-
* '''speedo''' растровые в формате Speedo (давно не используются и сборка соответствующего модуля в xorg-server отключена).
+
* '''speedo''' — растровые в формате Speedo (давно не используются и сборка соответствующего модуля в xorg-server отключена).
-
Подкаталог второго уровня — сообразно имени шрифта (%fname).
+
Подкаталог второго уровня — сообразно имени шрифта (%fname).
 +
Этого достаточно для установки шрифтов под fontconfig.
 +
При необходимости можно использовать подкаталоги третьего уровня.
-
X-сервер не использует fontconfig, у него своя схема загрузки шрифтов,
+
=== core X font subsystem ===
 +
У 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-файлах:
Строка 31: Строка 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;
+
* bitmap — 20;
-
* type1 — 40;
+
* type1 — 40;
-
* ttf — 50;
+
* ttf — 50;
-
* otf — 50.
+
* otf — 50.
Символические ссылки должны быть запакованы в пакет вместе с каталогами,
Символические ссылки должны быть запакованы в пакет вместе с каталогами,
на которые они указывают.
на которые они указывают.
-
=== Дополнение для локалезависимых bitmap-шрифтов ===
+
== Дополнение для локалезависимых bitmap-шрифтов ==
-
 
+
Локалезависимые bitmap-шрифты обычно имеют подкаталоги третьего уровня (%cname),
Локалезависимые bitmap-шрифты обычно имеют подкаталоги третьего уровня (%cname),
примером может служить пакет fonts-bitmap-cyrillic:
примером может служить пакет fonts-bitmap-cyrillic:
Строка 49: Строка 76:
'''bitmap-%fname-%cname:unscaled:pri=10'''
'''bitmap-%fname-%cname:unscaled:pri=10'''
-
=== Requires, BuildRequires ===
+
== Requires, BuildRequires ==
-
 
+
BuildRequires:
BuildRequires:
-
* bitmap — '''xorg-x11-font-utils'''
+
* bitmap — '''xorg-x11-font-utils'''
-
* type1 — '''mkfontscale'''
+
* type1 — '''mkfontscale'''
-
* ttf — '''mkfontscale'''
+
* ttf — '''mkfontscale'''
-
* otf — '''mkfontscale'''
+
* otf — '''mkfontscale'''
Requires:
Requires:
'''fontconfig >= 2.4.2'''
'''fontconfig >= 2.4.2'''
-
=== fonts.scale, fonts.dir ===
+
== fonts.scale, fonts.dir ==
-
 
+
Для bitmap-шрифтов fonts.dir обычно идет в комплекте или создается Makefile’ом,
Для bitmap-шрифтов fonts.dir обычно идет в комплекте или создается Makefile’ом,
а fonts.scale не требуется.
а fonts.scale не требуется.
Для type1-, ttf-, otf-шрифтов fonts.scale создается с помощью '''mkfontscale''',
Для type1-, ttf-, otf-шрифтов fonts.scale создается с помощью '''mkfontscale''',
-
а fonts.dir — это символическая ссылка на fonts.scale:
+
а fonts.dir — это символическая ссылка на fonts.scale:
<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>
-
=== post/postun ===
+
== Макросы ==
 +
Для упрощения упаковки на ряд типовых каталогов и действий в пакете rpm-macros-fonts заведены макросы:
-
%post/%postun для всех шрифтов одинаков:
+
Для обозначения каталогов с типами шрифтов:
 +
<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] шрифтов.
 +
 
 +
Ранее до выхода p6/t6 в %post/%postun скриптах использовались макросы
<pre>
<pre>
-
%post
 
%post_fonts
%post_fonts
-
 
-
%postun
 
%postun_fonts
%postun_fonts
</pre>
</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
-
Эти макросы содержатся в пакете [[Drafts/Fonts/RpmBuildFonts|rpm-build-fonts]].
+
[[Категория:Packaging]]

Текущая версия на 18:05, 1 сентября 2014

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

Stamp90cw.png
Действующая политика Sisyphus

Политика действует, начиная со стабильного бранча 6.0 и выше.

Ответственный за проведение политики в жизнь — Igor Vlasenko (viy).


Содержание

История

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.

Ресурсы

 
Личные инструменты