From Fedora Project Wiki

No edit summary
Line 1: Line 1:
{{:Packaging/FontsSpecTemplate}}
{{CompactHeader|fonts}}
 
The following annotated template is intended to help you understand the Fedora fonts packaging policy. A plain-text version without formatting or annotations is available in the [https://fedorahosted.org/rpmdevtools/browser/spectemplate-fonts.spec rpmdevtools package].
 
 
== Conventions ==
 
{| style="font-family:monospace; background-color:#FFFAE9; font-family:monospace;"
|-
| Common directives
| style="font-family:sans-serif; font-style:italic; color:#00578E;" | Comment
|- style="background-color:#ffdebc;"
| Only if you declare fontconfig rules
| style="font-family:sans-serif; font-style:italic; color:#990033;" | Comment
|- style="background-color:#ffe4f5;"
| Some other optional part
| style="font-family:sans-serif; font-style:italic; color:#663366;" | Comment
|}
 
== Spec ==
 
{| style="font-family:monospace; background-color:#FFFAE9; font-family:monospace;"
|-
| width="60%" | %define fontname xxx
| width="40%" style="font-family:sans-serif; font-style:italic; color:#00578E;" | Upstream lowercased project name.
|-
|
|-
| %define fontdir %{_datadir}/fonts/%{fontname}
| style="font-family:sans-serif; font-style:italic; color:#00578E;" | '''%{_datadir}/fonts''' is owned by the '''filesystem''' package.
|- style="background-color:#ffdebc;"
| %define fontconfdir %{_sysconfdir}/fonts/conf.d
| style="font-family:sans-serif; font-style:italic; color:#990033;" | Owned by the filesystem package.
|-
|
|- style="background-color:#ffe4f5;"
| %define archivename xxx
| style="font-family:sans-serif; font-style:italic; color:#663366;" | Usually a mix of '''%{fontname}''' and '''%{version}'''.
|-
|
|-
| Name: %{fontname}-fonts
| See also our grouping conventions.
|-
| Version:
| When in doubt check the version field embedded in TTF files<ref>For example unsing '''nautilus'''</rev>. If upstream is not updating this field regularly, you'll have to resort to '''%{alphatag}s'''. If upstream is never updating this field, use the date of the most recent font file as version.
| -
| Release: X%{?dist}
| -
| Summary: Xxx fonts
|-
| Group: User Interface/X
|-
| License: XXX
| Make sure you've read and understand our legal page.
|-
URL:
 
Source0: …/%{archivename}.xxx
 
Source1: %{name}-fontconfig.conf
 
Fontconfig ruleset for the fonts being packaged.
 
 
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
 
Or any other approved choice.
 
BuildArch: noarch
 
Conflicts: fontconfig<xxx
 
This directive will ensure concurrent fontconfig updating if your ruleset uses some new syntax fontconfig versions shipped in previous Fedora releases do not understand.
Do not use a versioned Requires, as this will force fontconfig installation unconditionally.
Resources like fonts must not force the installation of a particular handler.
 
 
%description
 
Is the font style unusual, does it cover remarkable unicode blocks? Is the font intended for screen or print media, plain-text or fancy decoration uses?
 
XXX…
 
 
 
%prep
 
%setup -q -n %{archivename}
 
 
 
%build
 
Try to build fonts from source.
 
 
 
%install
 
rm -fr %{buildroot}
 
 
install -m 0755 -d %{buildroot}%{fontdir}
 
install -m 0644 -p xxx/*.ttf xxx/*.otf %{buildroot}%{fontdir}
 
 
install -m 0755 -d %{buildroot}%{fontconfdir}
 
install -m 0644 -p %{SOURCE1} %{buildroot}%{fontconfdir}/XX-%{fontname}.conf
 
For a discussion on the choice of XX, visit our fontconfig section.
 
 
 
%clean
 
rm -fr %{buildroot}
 
 
 
%post
 
This ensures fontconfig indexes are refreshed if fontconfig is present on the system; if not the fontconfig package will create them itself on installation3. Note that while the use of %{fontdir} ensures fc-cache does not waste time on other fonts, it also makes any later %{fontdir} renaming unsafe.
 
The -f parameter forces a refresh in all cases4. It must be used in packages targeting pre-Fedora 9 releases.
 
if [ -x %{_bindir}/fc-cache ]; then
 
%{_bindir}/fc-cache -f %{fontdir} || :
 
fi
 
%postun
 
if [ "$1" = "0" ]; then
 
if [ -x %{_bindir}/fc-cache ]; then
 
%{_bindir}/fc-cache -f %{fontdir} || :
 
fi
 
fi
 
 
 
%files
 
%defattr(0644,root,root,0755)
 
Any other set of permission is almost certain to be a fonts packaging bug.
 
%doc *.txt
 
 
%config(noreplace) %{fontconfdir}/XX-%{fontname}.conf
 
This is sufficient to drop a fontconfig ruleset that will be evaluated if fontconfig is installed, and will have no effects otherwise5.
 
 
%dir %{fontdir}
 
%{fontdir}/*.ttf
 
%{fontdir}/*.otf
 
 
 
%changelog
 
Changelog in approved format.
|}
 
{{:Fonts_SIG_signature}}
[[Category:Fonts packaging|Spec template]]

Revision as of 12:31, 15 June 2008

A page on Fedora Fonts

The following annotated template is intended to help you understand the Fedora fonts packaging policy. A plain-text version without formatting or annotations is available in the rpmdevtools package.


Conventions

Common directives Comment
Only if you declare fontconfig rules Comment
Some other optional part Comment

Spec

URL: Source0: …/%{archivename}.xxx Source1: %{name}-fontconfig.conf Fontconfig ruleset for the fonts being packaged. BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) Or any other approved choice. BuildArch: noarch Conflicts: fontconfig<xxx This directive will ensure concurrent fontconfig updating if your ruleset uses some new syntax fontconfig versions shipped in previous Fedora releases do not understand. Do not use a versioned Requires, as this will force fontconfig installation unconditionally. Resources like fonts must not force the installation of a particular handler. %description Is the font style unusual, does it cover remarkable unicode blocks? Is the font intended for screen or print media, plain-text or fancy decoration uses? XXX… %prep %setup -q -n %{archivename} %build Try to build fonts from source. %install rm -fr %{buildroot} install -m 0755 -d %{buildroot}%{fontdir} install -m 0644 -p xxx/*.ttf xxx/*.otf %{buildroot}%{fontdir} install -m 0755 -d %{buildroot}%{fontconfdir} install -m 0644 -p %{SOURCE1} %{buildroot}%{fontconfdir}/XX-%{fontname}.conf For a discussion on the choice of XX, visit our fontconfig section. %clean rm -fr %{buildroot} %post This ensures fontconfig indexes are refreshed if fontconfig is present on the system; if not the fontconfig package will create them itself on installation3. Note that while the use of %{fontdir} ensures fc-cache does not waste time on other fonts, it also makes any later %{fontdir} renaming unsafe. The -f parameter forces a refresh in all cases4. It must be used in packages targeting pre-Fedora 9 releases. if [ -x %{_bindir}/fc-cache ]; then %{_bindir}/fc-cache -f %{fontdir} || : fi %postun if [ "$1" = "0" ]; then if [ -x %{_bindir}/fc-cache ]; then %{_bindir}/fc-cache -f %{fontdir} || : fi fi %files %defattr(0644,root,root,0755) Any other set of permission is almost certain to be a fonts packaging bug. %doc *.txt %config(noreplace) %{fontconfdir}/XX-%{fontname}.conf This is sufficient to drop a fontconfig ruleset that will be evaluated if fontconfig is installed, and will have no effects otherwise5. %dir %{fontdir} %{fontdir}/*.ttf %{fontdir}/*.otf %changelog Changelog in approved format.
%define fontname xxx Upstream lowercased project name.
%define fontdir %{_datadir}/fonts/%{fontname} %{_datadir}/fonts is owned by the filesystem package.
%define fontconfdir %{_sysconfdir}/fonts/conf.d Owned by the filesystem package.
%define archivename xxx Usually a mix of %{fontname} and %{version}.
Name: %{fontname}-fonts See also our grouping conventions.
Version: When in doubt check the version field embedded in TTF files<ref>For example unsing nautilus</rev>. If upstream is not updating this field regularly, you'll have to resort to %{alphatag}s. If upstream is never updating this field, use the date of the most recent font file as version. - Release: X%{?dist} - Summary: Xxx fonts
Group: User Interface/X
License: XXX Make sure you've read and understand our legal page.


Idea.png
Fonts in Fedora
The Fonts SIG takes loving care of Fedora fonts. Please join this special interest group if you are interested in creating, improving, packaging, or just suggesting a font. Any help will be appreciated.