Font package guidelines

From ArchWiki
Arch package guidelines

32-bitCLRCMakeCrossDKMSEclipseElectronFontFree PascalGNOMEGoHaskellJavaKDEKernel modulesLispMesonMinGWNode.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.

  • The package name should be entirely lowercase.
  • Ultimately there is no hard rule for font package naming, i.e. these are only guidelines. In general, package naming follows upstream. See also FS#77425.

Package description

The package description should at least contain the word font and what type of font it is: sans-serif, serif or monospace.


Fonts are architecture-independent. Use arch=(any).


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.


Many applications rely on the virtual package ttf-font. If your font family meets the criteria, add provides=('ttf-font').


See whether a font is available from the following sources in this order:

The following sites are not recommended:


The following snippet is an example for an OTF font released under the SIL Open Font License 1.1 with Reserved Font Name:

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