---
name: "mmpfb"
section: "1"
platform: "linux"
package: "texlive-doc"
version: "2026.1-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/mmpfb"
---

# mmpfb(1)

creates single-master fonts from multiple master fonts

## NAME

mmpfb - creates single-master fonts from multiple master fonts

## SYNOPSIS

**mmpfb** \[OPTIONS...\] *font*

## DESCRIPTION

**Mmpfb** creates a normal, single-master PostScript font from a multiple master font by interpolation. You pass it a PFB or PFA font and options specifying the design point you want; it writes the resulting PFB or PFA font to the standard output.

The fonts **mmpfb** creates are interpolated at a low level to remove multiple master instructions from individual characters. Therefore, they can be used by programs that don't normally understand multiple master fonts, like [**ps2pk**(1)](/ps2pk/1.md).

**Mmpfb** supports fonts with intermediate masters, like Adobe Jenson and Kepler. It can also create AMCP (Adobe Multiple Master Conversion Program) files for use by [**mmafm**(1)](/mmafm/1.md); see **--amcp-info** below.

The *font* argument is either the name of a PFA or PFB font file, or a PostScript font name. If you give a font name, **mmpfb** will find the actual outline file using the PSRESOURCEPATH environment variable. This colon-separated path is searched for \`PSres.upr' files, an Adobe method for indexing PostScript resources.

You can also give the name of a multiple master font instance, like \`MinionMM\_367\_400\_12\_'. **Mmpfb** will parse the font name and create that instance for you. \`PSres.upr' files must be set up for this to work.

## EXAMPLE

```
% mmpfb --weight=400 --width=600 MyriadMM.pfb > MyriadMM_400_600_.pfb
```

## OPTIONS

Long options may be abbreviated to their unique prefixes.

- **--output=***file,* **-o** *file*

  Send output to *file* instead of standard output.

- **--pfb**, **-b**

  Output a PFB font. This is the default.

- **--pfa**, **-a**

  Output a PFA font.

- **--amcp-info**

  Do not create a font; instead, output an AMCP file for use by [**mmafm**(1)](/mmafm/1.md). A message is printed if the font doesn't have intermediate masters, in which case no AMCP file is necessary.

- **--weight=***N,* **-w** *N*

  Set the weight axis to  *N*.

- **--width=***N,* **-W** *N*

  Set the width axis to  *N*.

- **--optical-size=***N,* **-O** *N*

  Set the optical size axis to  *N*.

- **--style=***N*

  Set the style axis to  *N*.

- **--1**=*N* (**--2**=*N*, **--3**=*N*, **--4**=*N*)

  Set the first (second, third, fourth) axis to *N*.

- **--precision=***N,* **-p** *N*

  Set the output precision to *N*. Higher values mean the control points in the output font will be more exactly aligned; lower values (1 or 2) create smaller output font files, and are close enough for most purposes. A precision of *N* means that each point will be within 1/*N* font units of the exact interpolated value. (A font unit is generally 1/7200 inch for a 10-point font.) The default is 5.

- **--subrs=***N*

  Limit the output font to at most *N* subroutines. 256 is a good value for *N*.

- **--no-minimize**

  Do not minimize the output font definition. By default,  **mmpfb** removes extra PostScript code and dictionary definitions from the font. Supply the **--no-minimize** option to avoid this behavior.

## TROUBLESHOOTING

The "IBM" Type 1 font interpreter shipped as part of the X font server and **ps2pk** (among others) is inappropriately strict about PostScript code embedded in a font. The  **--minimize** option (now the default) fixes this problem.

Some versions of Adobe Acrobat Distiller may report "Warning: unable to embed font X. Invalid character outline data" when distilling an instance generated by **mmpfb**. This is due to a limitation in the number of font subroutines Distiller can accept. (Multiple master fonts, and the single-master fonts generated by **mmpfb**, tend to have a lot of subroutines.) Try limiting the number of subroutines in the generated font with the **--subrs** option.

## SEE ALSO

[**mmafm**(1)](/mmafm/1.md)

## DIAGNOSTICS

- reducing *font* to minimum number of subroutines (*N*)

  You tried to reduce the number of subroutines to less than *N* using the  **--subrs** option, but the font needs at least *N* to function. The output font will have *N* subroutines.

## AUTHOR

Eddie Kohler, ekohler@gmail.com

The latest version is available from:\
 http://www.lcdf.org/type/

Thanks to Melissa O'Neill for suggestions and patient debugging.
