defoma(1) Debian Font Manager, a framework for automatic font configuration.


defoma-font [options] command args..
defoma-app [options] command args..
defoma-subst [options] command args..


Defoma stands for Debian Font Manager. It provides a framework for automatic font configuration. This manpage introduces general Defoma concepts, please refer the manpage of defoma-font, defoma-app, or defoma-subst for the detailed information of each command.

Fonts are used by numerous applications, but generally need to be configured separately for each application. Defoma solves this problem by calling configuration scripts to update the font configuration of applications whenever a font is installed or removed.

A Defoma-configuration script is a perl library that each application should install as application-name.defoma under /usr/share/defoma/scripts and which configures a font for that application. The following is an example of a script named foo.defoma.

@ACCEPT_CATEGORIES = qw(type1 truetype);
package foo;
sub type1 {
  my $com = shift;
sub truetype {
  my $com = shift;
This example represents an application foo that wants to configure truetype and type1 category fonts. A function by the same name as the relevant category is called by Defoma with a command as the first argument, and then additional arguments depending on the command. The following is a list of commands.

* register
* unregister
* do-install-real do-install-alias do-install-subst
* do-remove-real do-remove-alias do-remove-subst
* init
* term
* purge

do-install-* and do-remove-* commands are only called from Id cache. init and term are called at the start and end (respectively) of the entire process.

Id cache is another feature of Defoma. A common problem during automatic configuration is name space conflicts. Usually applications access fonts through logical font names (like XLFDs and PostScript font names) rather than the fonts themselves (as font filenames). Logical font names, called identifiers in Defoma, can easily conflict especially when font aliases are permitted. Through the Id cache mechanism, only one font is actually installed for each identifier even if it is provided by several fonts.

Id Substitution is an additional feature of Id cache. It selects a font to provide an id specified by a rulefile. The rulefile describes rules giving required ids and their hints. A rule is used to have more similar-looking fonts with the same characters substitute for a required id. This feature can also be used for the purpose of grouping fonts into different categories.

A category represents a type of font. Generally fonts that belong to the same category are configured the same way.

Hints represent essential font information and typeface information about the font. They consist of some HintTypes and their values. They can be specified from the command line options of defoma-font, or through a hintfile.

Hintfile describes one or more fonts and their hints in a single file. It is supposed to be put under /etc/defoma/hints as a conffile, so that users can modify the hints.
Below is an example hintfile. defoma-hints is a tool to help generating hints as well as the hintfile, so you do not have to create one from scratch.

category type1
begin /usr/share/fonts/type1/foo.pfa
  FontName = Helvetica
  Charset = ISO8859-1
  Family = Helvetica
  Weight = Medium
  Shape = Upright NoSerif
  GeneralFamily = SansSerif
  X-FontName = -urw-helvetica-medium-r-noraml--0-0-0-0-p-iso8859-1
begin /usr/share/fonts/type1/foob.pfa
  FontName = Helvetica-Bold
  Charset = ISO8859-1
  Family = Helvetica
  Weight = Bold
  Shape = Upright NoSerif
  GeneralFamily = SansSerif
  X-FontName = -urw-helvetica-bold-r-noraml--0-0-0-0-p-iso8859-1