32-bit – CLR – CMake – Cross – DKMS – Eclipse – Electron – Font – Free Pascal – GNOME – Go – Haskell – Java – KDE – Kernel – Lisp – Meson – MinGW – Node.js – Nonfree – OCaml – Perl – PHP – Python – R – Ruby – Rust – Shell – VCS – Web – Wine
This document covers proposed standards and guidelines on writing PKGBUILDs for Fonts.
General guidelines
Package naming
If the font is a variable font, add the suffix -variable.
Package description
The package description should at least contain the word font and what type of font it is: sans-serif, serif or monospace.
Architecture
Fonts are architecture-independent. Use arch=(any).
Dependencies
Fonts do not depend on anything. Many packages in the repositories, however, include fontconfig and xorg-mkfontscale as dependecies. Those were required when font packages needed to use install scripts to update the font cache – a lot of duplicate work now done by pacman hooks. If you install fontconfig or xorg-mkfontscale, all existing fonts in /usr/share/fonts/ will be cached making it unnecessary to force people to use fontconfig or mkfontscale.
Provides
Many applications rely on the virtual package ttf-font. If your font family meets the criteria, add provides=('ttf-font').
Source
See whether a font is available from the following sources in this order:
- a code hosting platform like GitHub or an official website
-
Google Fonts:
https://fonts.google.com/download?family=Name - Font Squirrel, Font Library, FFonts, 1001 Fonts, 1001 Free Fonts, DaFont
The following sites are not recommended:
- FontSpace (checksums change for unknown reasons)
Package
The following snippet is an example for an OTF font released under the OFL (SIL Open Font License):
license=('OFL')
...
package() {
install -Dm644 -t "$pkgdir/usr/share/fonts/OTF" "path/to/font/*.otf"
install -Dm644 -t "$pkgdir/usr/share/licenses/$pkgname" "path/to/license/OFL.txt"
}
- The OFL is technically a custom license, so each font package's license file needs to be installed under
/usr/share/licenses/$pkgname. - If the font contains many font files, consider using
$pkgnameinstead ofOTFfor the destination directory.
Example packages
- ttf-merriweather-sansAUR
- otf-commissionerAUR – split package with OTF, TTF and variable version
See also
- Forum discussion concerning this article