John -

What you are saying makes sense, because whatever option I give, I always get Vera included in my eps file but nothing else.

Thanks for looking into this,


On Tue, Mar 25, 2008 at 6:50 PM, John Hunter <> wrote:
On Tue, Mar 25, 2008 at 12:02 PM, Michael Droettboom <> wrote:

> The *intention* is that the fonts *should* be included (with the
>  exception of ps.useafm == True).  That was definitely not a deliberate
>  change.
>  However, as one of the ones who hasn't been able to reproduce this
>  problem, I'm afraid I'm not of much help.  From reading the code, I'm
>  still completely stumped as to why the font is not embedded.  Someone
>  will have to step through with a debugger on one of the broken systems
>  to figure this out, I'm afraid.

I was able to replicate the bug and find the source of the problem.  I
am not 100% sure how to fix it, but someone who knows os.stat better
might.  The problem is that matplotlib.cbook.get_realpath_and_stat

class GetRealpathAndStat:
   def __init__(self):
       self._cache = {}

   def __call__(self, path):
       result = self._cache.get(path)
       if result is None:
           realpath = os.path.realpath(path)
           stat = os.stat(realpath)
           stat_key = (stat.st_ino, stat.st_dev)
           result = realpath, stat_key
           self._cache[path] = result
       return result
get_realpath_and_stat = GetRealpathAndStat()

is returning the same stat ino and dev for all the font files, and
thus the renderer.used_characters dictionary is getting improper keys
-- always (0,0).  So the first font in the gate, in this case Vera, is
getting a place in the dict and subsequent fonts (the cm* ones) are
not.  The basic problem is that the inode and dev appear to be unix

Michael: if you let me know better what this key is supposed to be
doing (can we not simply use the filename for windows?) then I can
attempt or test some fixes.