Werner Lemberg: There aren't instructions within groff which clearly say how to do it. The following should be done -- is there a good guy who converts this to good English which a novice can understand? I think the appropriate place is, with a proper reference in (and probably

1) Convert your font to something groff understands. This is either a PostScript? Type 1 font in PFA format or a PostScript? Type 42 font, together with an AFM file. The very first characters in a PFA file look like this:


This is a wrapper format for TrueType? fonts. Old PS printers might not support it (this is, they don't have a built-in TrueType? font interpreter). If your font is in PFB format (such fonts normally have `.pfb' as the file extension), you might use groff's `pfbtops' program to convert it to PFA. For all other font formats I suggest to use the `FontForge' font editor (available from which can convert most outline font formats.

2) Convert the AFM file to a groff font description file with the `afmtodit' program. An example call is

 afmtodit Foo-Bar-Bold.afm textmap FBB

which converts the metric file `Foo-Bar-Bold.afm' to the groff font `FBB'. If you have a font family which comes with normal, bold, italic, and bold italic faces, it is recommended to use the letters `R', `B', `I', and `BI', respectively, as postfixes in the groff font names to make groff's `.fam' request work. An example is groff's built-in Times-Roman: The font family name is `T', and the groff font names are `TR', `TB', `TI', and `TBI'.

3) Install both the groff font description files and the fonts in a `devps' subdirectory of the font path which groff finds. See the `ENVIRONMENT' section in troff(1) which lists the actual value of the font path. Note that groff doesn't use the AFM files (but it is a good idea to store them anyway).

4) Register all fonts which must be downloaded to the printer in the `devps/download' file. Currently, due to a limitation in the PostSript? device of groff (grops), only the first occurrence of this file in the font path is read. This means that you should copy the default `download' file to the first directory in your font path and add your fonts there. To continue the above example we assume that the PS font name for Foo-Bar-Bold.pfa is `XY-Foo-Bar-Bold' (the PS font name is stored in the `internalname' field in the `FBB' file), thus the following line should be added to `download'.

 XY-Foo-Bar-Bold Foo-Bar-Bold.pfa

See also: ConvertingTrueTypeFonts

Adding TrueType fonts to groff for PDF documents

Ghostscript can embed TrueType fonts into PDF documents. Users who intend to produce PDF do not need to convert TrueType fonts to other formats.


It is assumed that Ghostscript is installed and that the latest groff version is installed in $PREFIX (e.g. /usr/local).

Thus, $GROFF=$PREFIX/share/groff, and actual fonts are in $HOME/.fonts/TrueType.

Notice that ttf2afm is a part of pdfTeX. There are other similar programs.


 mkdir $GROFF/site-font/devps
 cd $GROFF/site-font/devps
 ttf2afm $HOME/.fonts/TrueType/fontname.ttf -o fontname.afm
 afmtodit -e text.enc fontname.afm textmap FN
 cd $HOME/.fonts
 % Aliases
 % ...
 /LetterGothic                   /LetterGothic-Reg       ;
 /LetterGothic-Roman             /LetterGothic-Reg       ; 
 /LetterGothic-Italic            /LetterGothic-Ita       ;
 /LetterGothic-Bold              /LetterGothic-Bol       ;
 /LetterGothic-BoldItalic        /LetterGothic-BolIta    ;
 % ...

(Remove all ? added by wiki above.)


Now, groff can see LGR, LGI, LGB, and LGBI fonts since they are in the standard groff path. Ghostscript can also see them thanks to the environment variables set up in .profile. The PostScript output files will show up fine in gv. Also, ps2pdf embeds them in PDF perfectly fine (use -dPDFOPTIONS=/printer among other options). Thanks to the aliases, Ghostscript can use them for the PS or EPS files from other sources too.

Use with X

As an added benefit, since fonts are in $HOME/.fonts, one can have them available even for X applications by defining $HOME/.fonts.conf file with an entry:

 <?xml version="1.0"?>
 <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
 <!-- ~/.fonts.conf file to configure personal font additions -->
   <!-- 8< --
   -- >8 -->
   <!-- Monospace faces -->
   <!-- 8< --
   -- >8 -->

(Remove all ? added by wiki above and below.)

Now one can start

 xterm -fa LetterGothic?

if one feels so inclined.

Zvezdan Petkovic

Back to: GroffTips

Edit AddingFonts FrontPage PageList RecentChanges PageHistory