[Pythonmac-SIG] Using Mac system fonts with matplotlib?

Nicholas Matsakis matsakis at mit.edu
Mon May 19 19:04:37 CEST 2008


I'm looking for some guidance on using system-installed truetype fonts 
with matplotlib. I asked this question on the matplotlib mailing list, but 
it didn't garner any responses. Here's what I've found so far, using the 
PDF backend in matplotlib 0.91.2 on 10.5/leopard's native python 2.5 
(installed using easy_install).

Matplotlib itself is working well and with 
matplotlib.font_manager.OSXInstalledFonts() I can see that it seems to 
know what fonts I have on my system.  I can even get it to find some of 
these fonts.  However any attempts to use them results in errors when 
writing out the figure (I've included some stack traces below).

Are there reasons to think another backend would work if PDF fails? Also, 
I'd be interested in an easy way to take a given font file and figure out 
whether it is of a type supported by MPL and what name I should give to 
MPL to find and use it.

Nick Matsakis

------ an error using /Library/Fonts/tahoma.ttf
Traceback (most recent call last):
   ...skipping some calls...
    File
"/Library/Python/2.5/site-packages/matplotlib-0.91.2-py2.5-macosx-10.5-ppc.e
gg/matplotlib/backend_bases.py",
line 1195, in print_figure
      **kwargs)
    File
"/Library/Python/2.5/site-packages/matplotlib-0.91.2-py2.5-macosx-10.5-ppc.e
gg/matplotlib/backends/backend_pdf.py", line 1969, in print_pdf
      file.close()
    File
"/Library/Python/2.5/site-packages/matplotlib-0.91.2-py2.5-macosx-10.5-ppc.e
gg/matplotlib/backends/backend_pdf.py", line 420, in close
      self.writeFonts()
    File
"/Library/Python/2.5/site-packages/matplotlib-0.91.2-py2.5-macosx-10.5-ppc.e
gg/matplotlib/backends/backend_pdf.py", line 490, in writeFonts
      fontdictObject = self.embedTTF(realpath, chars[1])
    File
"/Library/Python/2.5/site-packages/matplotlib-0.91.2-py2.5-macosx-10.5-ppc.e
gg/matplotlib/backends/backend_pdf.py", line 859, in embedTTF
      ps_name = Name(font.get_sfnt()[(1,0,0,6)])
KeyError: (1, 0, 0, 6)

----- a different error using /System/Library/Fonts/AppleGothic.ttf
    ...skipping some calls...
    File
"/Library/Python/2.5/site-packages/matplotlib-0.91.2-py2.5-macosx-10.5-ppc.e
gg/matplotlib/backend_bases.py", line 1195, in print_figure
      **kwargs)
    File
"/Library/Python/2.5/site-packages/matplotlib-0.91.2-py2.5-macosx-10.5-ppc.e
gg/matplotlib/backends/backend_pdf.py", line 1969, in print_pdf
      file.close()
    File
"/Library/Python/2.5/site-packages/matplotlib-0.91.2-py2.5-macosx-10.5-ppc.e
gg/matplotlib/backends/backend_pdf.py", line 420, in close
      self.writeFonts()
    File
"/Library/Python/2.5/site-packages/matplotlib-0.91.2-py2.5-macosx-10.5-ppc.e
gg/matplotlib/backends/backend_pdf.py", line 490, in writeFonts
      fontdictObject = self.embedTTF(realpath, chars[1])
    File
"/Library/Python/2.5/site-packages/matplotlib-0.91.2-py2.5-macosx-10.5-ppc.e
gg/matplotlib/backends/backend_pdf.py", line 901, in embedTTF
      return embedTTFType3(font, characters, descriptor)
    File
"/Library/Python/2.5/site-packages/matplotlib-0.91.2-py2.5-macosx-10.5-ppc.e
gg/matplotlib/backends/backend_pdf.py", line 689, in embedTTFType3
      glyph_name = font.get_glyph_name(gind)
RuntimeError: Face has no glyph names


More information about the Pythonmac-SIG mailing list