Font package guidelines

From ArchWiki
Arch package guidelines

32-bitCLRCMakeCrossDKMSEclipseElectronFontFree PascalGNOMEGoHaskellJavaKDEKernelLispMesonMinGWNode.jsNonfreeOCamlPerlPHPPythonRRubyRustShellVCSWebWine

This document covers proposed standards and guidelines on writing PKGBUILDs for Fonts.

General guidelines

Package naming

  • TTF fonts: ttf-fontname
  • OTF fonts: otf-fontname

If the font is a variable font, add the suffix -variable.

Note: The package name should be entirely lowercase.

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:

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 $pkgname instead of OTF for the destination directory.

Example packages

See also