This is a python interface to Adobe Font Metrics Files. Although a number of other python implementations exist, and may be more complete than this, it was decided not to go with them because they were either:
It is pretty easy to use, and requires only built-in python libs:
>>> from matplotlib import rcParams >>> import os.path >>> afm_fname = os.path.join(rcParams['datapath'], ... 'fonts', 'afm', 'ptmr8a.afm') >>> >>> from matplotlib.afm import AFM >>> afm = AFM(open(afm_fname)) >>> afm.string_width_height('What the heck?') (6220.0, 694) >>> 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]
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, e.g., ‘Times’
get_fontname()
Return the font name, e.g., ‘Times-Roman’
get_fullname()
Return the font full name, e.g., ‘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, i.e., ‘;’ 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, e.g., ‘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 {})
© 2012–2016 Matplotlib Development Team. All rights reserved.
Licensed under the Matplotlib License Agreement.
http://matplotlib.org/1.5.3/api/afm_api.html