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
- copyrighted or used a non-BSD compatible license
- had too many dependencies and I wanted a free standing lib
- 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 {})