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 = file('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)

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 {})