tfmtodit(1) General Commands Manual tfmtodit(1)

# [Name](#Name)

tfmtodit - adapt TeX Font Metrics files for use with *groff* and *grodvi*

# [Synopsis](#Synopsis)

`tfmtodit` \[**-s**] \[**-g gf-file**] \[**-k skew-char**] *tfm-file* *map-file* *font-description*

`tfmtodit` **--help**

`tfmtodit` **-v**

`tfmtodit` **--version**

# [Description](#Description)

*tfmtodit* creates a font description file for use with [*groff*(1)](/man/os/groff/groff.1)'s **dvi** output device. *tfm-file* is the name of the TeX font metric file for the font. *map-file* assigns *groff* ordinary or special character identifiers to glyph indices in the font; it should consist of a sequence of lines of the form

*i c1* ... *cn*

where *i* is a position of the glyph in the font in decimal, and *c1* through *cn* are glyph identifiers in the form used by *groff* font descriptions. If a glyph has no *groff* names but exists in *tfm-file,* it is put in the *groff* font description file as an unnamed glyph. Output is written in [*groff\_font*(5)](/man/os/groff/groff_font.5) format to *font-description,* a file named for the intended *groff* font name.

If the font is “special”, meaning that *groff* should search it whenever a glyph is not found in the current font, use the **-s** option and name *font-description* in the **fonts** directive in the output device's *DESC* file.

To do a good job of math typesetting, *groff* requires font metric information not present in *tfm-file.* This is because TeX has separate math italic fonts, whereas *groff* uses normal italic fonts for math. The additional information required by *groff* is given by the two arguments to the **math\_fit** macro in the Metafont programs for the Computer Modern fonts. In a text font (a font for which **math\_fit** is false), Metafont normally ignores these two arguments. Metafont can be made to put this information into the GF (“generic font”) files it produces by loading the following definition after **cmbase** when creating *cm.base*.

```
def ignore_math_fit(expr left_adjustment,right_adjustment) =


    special "adjustment";


    numspecial left_adjustment*16/designsize;


    numspecial right_adjustment*16/designsize;


    enddef;
```

For the EC font family, load the following definition after **exbase**; consider patching *exbase.mf* locally.

```
def ignore_math_fit(expr left_adjustment,right_adjustment) =


    ori_special "adjustment";


    ori_numspecial left_adjustment*16/designsize;


    ori_numspecial right_adjustment*16/designsize;


    enddef;
```

The only difference from the previous example is the “ori\_” prefix to “special” and “numspecial”. The GF file created using this modified *cm.base* or *exbase.mf* should be specified with the **-g** option, which should *not* be given for a font for which **math\_fit** is true.

# [Options](#Options)

**--help** displays a usage message, while **-v** and **--version** show version information; all exit afterward.

[**-g gf-file**](#g)

Use the *gf-file* produced by Metafont containing “**special**” and “**numspecial**” commands to obtain additional font metric information.

[**-k skew-char**](#k)

The skew character of this font is at position *skew-char.* *skew-char* should be an integer; it may be given in decimal, with a leading 0 in octal, or with a leading 0x in hexadecimal. Any kerns whose second component is *skew-char* are ignored.

[**-s**](#s)

Add the **special** directive to the font description file.

# [Exit status](#Exit_status)

*tfmtodit* exits with status **0** on successful operation, status **2** if the program cannot interpret its command-line arguments, and status **1** if it encounters an error during operation.

# [Files](#Files)

*/usr/share/groff/1.24.1/font/devdvi/DESC*

describes the **dvi** output device.

*/usr/share/groff/1.24.1/font/devdvi/*F

describes the font known as *F* on device **dvi**.

*/usr/share/groff/1.24.1/font/devdvi/generate/ec.map*

*/usr/share/groff/1.24.1/font/devdvi/generate/msam.map*

*/usr/share/groff/1.24.1/font/devdvi/generate/msbm.map*

*/usr/share/groff/1.24.1/font/devdvi/generate/tc.map*

*/usr/share/groff/1.24.1/font/devdvi/generate/texb.map*

*/usr/share/groff/1.24.1/font/devdvi/generate/texex.map*

*/usr/share/groff/1.24.1/font/devdvi/generate/texi.map*

*/usr/share/groff/1.24.1/font/devdvi/generate/texitt.map*

*/usr/share/groff/1.24.1/font/devdvi/generate/texmi.map*

*/usr/share/groff/1.24.1/font/devdvi/generate/texr.map*

*/usr/share/groff/1.24.1/font/devdvi/generate/texsy.map*

*/usr/share/groff/1.24.1/font/devdvi/generate/textex.map*

*/usr/share/groff/1.24.1/font/devdvi/generate/textt.map*

map glyph indices in TeX fonts to *groff* ordinary and special character identifiers. *ec.map* is used for **TREC**, **TIEC**, **TBEC**, **TBIEC**, **HREC**, **HIEC**, **HBEC**, **HBIEC**, **CWEC**, and **CWIEC**; *msam.map* for **SA**; *msbm.map* for **SB**; *tc.map* for **TRTC**, **TITC**, **TBTC**, **TBITC**, **HRTC**, **HITC**, **HBTC**, **HBITC**, **CWTC**, and **CWITC**; *texb.map* for **TB**, **HR**, **HI**, **HB**, and **HBI**; *texex.map* for **EX**; *texi.map* for **TI** and **TBI**; *texitt.map* for **CWI**; *texmi.map* for **MI**; *texr.map* for **TR**; *texsy.map* for **S**; *textex.map* for **SC**; and *textt.map* for **CW**.

# [See also](#See_also)

[*groff*(1)](/man/os/groff/groff.1), [*grodvi*(1)](/man/os/groff/grodvi.1), [*groff\_font*(5)](/man/os/groff/groff_font.5)

2026-08-30 groff 1.24.1

---

Document: tfmtodit(1) from groff 1.24.1-r4 (Chainguard OS)
Source: https://git.savannah.gnu.org/git/groff.git
