defoma - Debian Font Manager, provides automatic font configuration framework.


defoma-font [''options''? command args.. defoma-app [''options''? command args.. defoma-subst [''options''? command args..


Defoma stands for Debian Font Manager. It provides automatic font configuration framework. Please refer the manpage of defoma-font, defoma-app, or defoma-subst for the detailed information of each command. This page describes the introduction of Defoma.

Generally fonts are used by various applications, but there's no way to configure them properly for each application, especially for higher level ones like word processor and illustrator. Defoma is a solution to this problem. It calls configuration scripts installed by applications whenever a font is installed/removed to update the font configuration of applications.

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

@ACCEPT_CATEGORIES = qw(type1 truetype); package foo; sub type1 { my $com = shift; ... } sub truetype { my $com = shift; ... } 1; This example represents an application foo wants to con- figure truetype and type1 category fonts. Each function whose name is the same as a category is called with com- mand and additional arguments from Defoma. 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 called from Id cache so they are never passed unless the script makes use of it. init and term are called before/after the regis- tration and unregistration starts/finishes, respectively.

Id cache is another feature of Defoma. The possible prob- lem of automatic configuration is name space confliction. Usually applications access fonts through their logical font names (like XLFDs and !PostScript font names) rather than the fonts themselves (like font files). Logical font names, called identifier in Defoma, can easily confclict especially if aliases are permitted. Through Id cache mechanism, only one font is actually installed for each identifier even if several fonts provide the same identi- fier.

Id Substitution is additional feature to Id cache. It makes a certain font provide a certain id specified in a rulefile. Rulefile describes need-to-be-substituted (in other words, required) ids and their hints, called rule. The 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 to make corre- spondence of fonts in different categories.

Category represents a type of fonts. Generally configura- tion for fonts that belong to the same category goes the same way, so it benefits the application's configuration script.

Hints represent essential font information and typeface information of the font. They consist of some

HintTypes? and their values. They can be specified from

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. Following is the example of hintfile. defoma-hints is a tool to help generating hints as well as 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 end 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 end


This page is a man page (or other imported legacy content). We are unable to automatically determine the license status of this page.

lib/main.php:944: Notice: PageInfo: Cannot find action page

lib/main.php:839: Notice: PageInfo: Unknown action