matplotlib.type1font

A class representing a Type 1 font.

This version reads pfa and pfb files and splits them for embedding in pdf files. It also supports SlantFont and ExtendFont transformations, similarly to pdfTeX and friends. There is no support yet for subsetting.

Usage:

font = Type1Font(filename)
clear_part, encrypted_part, finale = font.parts
slanted_font = font.transform({'slant': 0.167})
extended_font = font.transform({'extend': 1.2})

Sources:

  • Adobe Technical Note #5040, Supporting Downloadable PostScript Language Fonts.

  • Adobe Type 1 Font Format, Adobe Systems Incorporated, third printing, v1.1, 1993. ISBN 0-201-57044-0.

class matplotlib.type1font.Type1Font(input)[source]

Bases: object

A class representing a Type-1 font, for use by backends.

Attributes
partstuple

A 3-tuple of the cleartext part, the encrypted part, and the finale of zeros.

decryptedbytes

The decrypted form of parts[1].

propdict[str, Any]

A dictionary of font properties. Noteworthy keys include:

  • FontName: PostScript name of the font

  • Encoding: dict from numeric codes to glyph names

  • FontMatrix: bytes object encoding a matrix

  • UniqueID: optional font identifier, dropped when modifying the font

  • CharStrings: dict from glyph names to byte code

  • Subrs: array of byte code subroutines

  • OtherSubrs: bytes object encoding some PostScript code

Initialize a Type-1 font.

Parameters
inputstr or 3-tuple

Either a pfb file name, or a 3-tuple of already-decoded Type-1 font parts.

decrypted
parts
prop
transform(effects)[source]

Return a new font that is slanted and/or extended.

Parameters
effectsdict

A dict with optional entries:

  • 'slant'float, default: 0

    Tangent of the angle that the font is to be slanted to the right. Negative values slant to the left.

  • 'extend'float, default: 1

    Scaling factor for the font width. Values less than 1 condense the glyphs.

Returns
Type1Font