font problems with eps on OS X (MPL 0.90.0)


I have an interesting problem using fonts in matplotlib on OS X 10.4. When I use a font other than the Bitstream Vera provided with MPL 0.90.0, I cannot create readable eps files. More specifically, if I use a font from the OS X system choices, MPL happily creates an eps file, but it causes errors in preview, imagemagick, and ps2pdf. This occurs if I use either the PS or the TkAgg backend to create the eps file:

[joishi@...1601... test]$ ps2pdf test.eps
Error: /invalidfont in -dict-
Operand stack:
    Futura-Medium --dict:11/14(L)-- Font Futura-Medium --dict:11/14(L)-- Futura-Medium
Execution stack:
    %interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push 1 3 %oparray_pop 1 3 %oparray_pop --nostringval-- 1 3 %oparray_pop 1 3 %oparray_pop .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- 2 4 %oparray_pop 3 4 %oparray_pop --nostringval-- --nostringval-- --nostringval-- 7 5 %oparray_pop --nostringval-- 7 5 %oparray_pop
Dictionary stack:
    --dict:1120/1686(ro)(G)-- --dict:0/20(G)-- --dict:75/200(L)-- --dict:6/7(L)-- --dict:17/17(ro)(G)--
Current allocation mode is local
Last OS error: 2
Current file position is 618791
AFPL Ghostscript 8.51: Unrecoverable error, exit code 1

However, if the output is NOT eps, I can create and view pdf, png, and TkAgg plots with whatever font I choose. A code sample that produces the above error on eps output is below.

I hope someone might be able to shed some light on my problem. I have not been able to test the eps file on another platform; the bug may well rest on OS X outside of MPL. Unfortunately, I need eps files for a journal, and I would like to use a font other than Vera.


jeff oishi

#!/usr/bin/env python

from matplotlib import rcParams
import pylab as P
import numpy as N

#this makes no difference
#rcParams['backend'] = 'PS'
rcParams['backend'] = 'TkAgg'

# this fails
rcParams[''] = 'sans-serif'
rcParams['font.sans-serif'] = 'Futura'

# this succeeds
#rcParams[''] = 'serif'
#rcParams['font.serif'] = 'Bitstream Vera Serif'

if __name__ == "__main__":
   x = N.linspace(0,2*N.pi,1000)
   y = N.sin(x)
   P.ylabel('another test')