I suspect on Windows it is safe enough (in most cases) to use the realpath as the key, in lieu of anything better. But that would require testing on Windows to make sure. Can you try replacing the GetRealpathAndStat in mplutil.py with the following?
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) if sys.platform == "win32": stat_key = realpath else: 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() Cheers, Mike Mark Bakker wrote: > John, Michael - > > Now that we are talking about a new release, did you guys ever manage > to fix the bug described below. It had to do with greek symbols not > showing up in postscript files on windows. John seemed to have tracked > down the source of the problem, but I never heard of a solution. > > Thanks, > > Mark > > On Tue, Mar 25, 2008 at 7:50 PM, John Hunter <[EMAIL PROTECTED] > <mailto:[EMAIL PROTECTED]>> wrote: > > On Tue, Mar 25, 2008 at 12:02 PM, Michael Droettboom > <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>> 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 > only. > > 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. > > JDH > > -- Michael Droettboom Science Software Branch Operations and Engineering Division Space Telescope Science Institute Operated by AURA for NASA ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ Matplotlib-devel mailing list Matplotlib-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-devel