You are reading an old version of the documentation (v1.2.1). For the latest version see https://matplotlib.org/stable/api/afm_api.html
matplotlib

Table Of Contents

Previous topic

configuration

Next topic

animation

This Page

afm (Adobe Font Metrics interface)

matplotlib.afm

This is a python interface to Adobe Font Metrics Files. Although a number of other python implementations exist (and may be more complete than mine) I decided not to go with them because either they were either

  1. copyrighted or used a non-BSD compatible license
  2. had too many dependencies and I wanted a free standing lib
  3. Did more than I needed and it was easier to write my own than figure out how to just get what I needed from theirs

It is pretty easy to use, and requires only built-in python libs:

>>> from afm import AFM
>>> fh = open('ptmr8a.afm')
>>> afm = AFM(fh)
>>> afm.string_width_height('What the heck?')
(6220.0, 683)
>>> afm.get_fontname()
'Times-Roman'
>>> afm.get_kern_dist('A', 'f')
0
>>> afm.get_kern_dist('A', 'y')
-92.0
>>> afm.get_bbox_char('!')
[130, -9, 238, 676]
>>> afm.get_bbox_font()
[-168, -218, 1000, 898]
AUTHOR:
John D. Hunter <jdh2358@gmail.com>
class matplotlib.afm.AFM(fh)

Bases: object

Parse the AFM file in file object fh

get_angle()

Return the fontangle as float

get_bbox_char(c, isord=False)
get_capheight()

Return the cap height as float

get_familyname()

Return the font family name, eg, ‘Times’

get_fontname()

Return the font name, eg, ‘Times-Roman’

get_fullname()

Return the font full name, eg, ‘Times-Roman’

get_height_char(c, isord=False)

Get the height of character c from the bounding box. This is the ink height (space is 0)

get_horizontal_stem_width()

Return the standard horizontal stem width as float, or None if not specified in AFM file.

get_kern_dist(c1, c2)

Return the kerning pair distance (possibly 0) for chars c1 and c2

get_kern_dist_from_name(name1, name2)

Return the kerning pair distance (possibly 0) for chars name1 and name2

get_name_char(c, isord=False)

Get the name of the character, ie, ‘;’ is ‘semicolon’

get_str_bbox(s)

Return the string bounding box

get_str_bbox_and_descent(s)

Return the string bounding box

get_underline_thickness()

Return the underline thickness as float

get_vertical_stem_width()

Return the standard vertical stem width as float, or None if not specified in AFM file.

get_weight()

Return the font weight, eg, ‘Bold’ or ‘Roman’

get_width_char(c, isord=False)

Get the width of the character from the character metric WX field

get_width_from_char_name(name)

Get the width of the character from a type1 character name

get_xheight()

Return the xheight as float

string_width_height(s)

Return the string width (including kerning) and string height as a (w, h) tuple.

matplotlib.afm.parse_afm(fh)

Parse the Adobe Font Metics file in file handle fh. Return value is a (dhead, dcmetrics, dkernpairs, dcomposite) tuple where dhead is a _parse_header() dict, dcmetrics is a _parse_composites() dict, dkernpairs is a _parse_kern_pairs() dict (possibly {}), and dcomposite is a _parse_composites() dict (possibly {})