From: Michael A. <sel...@gm...> - 2011-02-06 18:51:19
|
Hello all, I believe I have found a bug in matplotlib's `dviread.py' file. I am running Ubuntu 10.10 x86_64 and Sage 4.6.1, which includes matplotlib 1.0.0. Also I have TeX Live 2010 installed (full install from the web installer). It is important to note that the issue to be described *does not occur* when TeX Live 2009 from the Ubuntu repositories is installed instead of TeX Live 2010. The issue also occurs with matplotlib 1.0.1. When trying to save a matplotlib figure as a PDF with `text.usetex = True' in `matplotlibrc', at some point the `PsfontsMap' function in `dviread.py' attempts to parse TeX Live 2010's `pdftex.map' file and fails. Other people are having the same problem. See the following two links for more information: http://groups.google.com/group/sage-support/browse_thread/thread/dd4a97c3e06e831f (see second post) http://article.gmane.org/gmane.comp.python.matplotlib.general/26110 Here is a minimal test case to demonstrate: ---------------------------------------------------------------------- | Sage Version 4.6.1, Release Date: 2011-01-11 | | Type notebook() for the GUI, and license() for information. | ---------------------------------------------------------------------- sage: from matplotlib.dviread import * sage: PsfontsMap(find_tex_file('pdftex.map')) --------------------------------------------------------------------------- AssertionError Traceback (most recent call last) /home/michael/<ipython console> in <module>() /opt/local/sage/local/lib/python2.6/site-packages/matplotlib/dviread.pyc in __init__(self, filename) 666 file = open(filename, 'rt') 667 try: --> 668 self._parse(file) 669 finally: 670 file.close() /opt/local/sage/local/lib/python2.6/site-packages/matplotlib/dviread.pyc in _parse(self, file) 699 while pos < len(line) and line[pos] == ' ': 700 pos += 1 --> 701 self._register(words) 702 703 def _register(self, words): /opt/local/sage/local/lib/python2.6/site-packages/matplotlib/dviread.pyc in _register(self, words) 725 encoding = word[1:] 726 elif word.endswith('.enc'): --> 727 assert encoding is None 728 encoding = word 729 else: AssertionError: sage: Here is some debug information (the last two lines may be relevant): $HOME=/home/michael CONFIGDIR=/home/michael/.sage//matplotlib-1.0.0 matplotlib data path /opt/local/sage/local/lib/python2.6/site-packages/matplotlib/mpl-data loaded rc file /opt/local/sage/local/lib/python2.6/site-packages/matplotlib/mpl-data/matplotlibrc matplotlib version 1.0.0 verbose.level debug interactive is False units is False platform is linux2 loaded modules: ['numpy.lib._iotools', 'xml.sax.urlparse', 'distutils', 'numpy.lib.npyio', 'matplotlib.errno', 'matplotlib.matplotlib', '_bisect', 'subprocess', 'gc', 'matplotlib.tempfile', 'distutils.sysconfig', 'ctypes._endian', 'encodings.encodings', 'matplotlib.colors', 'numpy.core.numerictypes', 'numpy.testing.sys', 'numpy.core.info', 'xml', 'numpy.fft.types', 'numpy.ma.cPickle', 'struct', 'numpy.matrixlib.defmatrix', 'numpy.random.info', 'tempfile', 'numpy.compat.types', 'base64', 'numpy.linalg', 'matplotlib.threading', 'numpy.core.machar', 'numpy.testing.types', 'numpy.testing', 'collections', 'numpy.polynomial.sys', 'numpy.core.umath', 'distutils.types', 'numpy.testing.operator', 'numpy.lib.numpy', 'numpy.core.scalarmath', 'numpy.ma.sys', 'zipimport', 'string', 'matplotlib.subprocess', 'numpy.testing.os', 'matplotlib.locale', 'numpy.lib.arraysetops', 'numpy.testing.unittest', 'numpy.lib.math', 'encodings.utf_8', 'matplotlib.__future__', 'ssl', 'numpy.testing.re', 'itertools', 'numpy.version', 'numpy.lib.re', 'distutils.re', 'numpy.matrixlib.sys', 'ctypes.os', 'numpy.core.os', 'numpy.lib.type_check', 'numpy.compat.sys', 'numpy.lib.__builtin__', 'signal', 'numpy.lib.types', 'numpy.lib._datasource', 'random', 'numpy.ma.extras', 'numpy.fft.fftpack_lite', 'matplotlib.cbook', 'ctypes.ctypes', 'xml.sax.xmlreader', 'numpy.polynomial.string', 'distutils.version', 'cStringIO', 'numpy.polynomial', 'numpy.numpy', 'matplotlib.StringIO', 'locale', 'numpy.add_newdocs', 'numpy.core.getlimits', 'xml.sax.saxutils', 'numpy.lib.sys', 'encodings', 'numpy.ma.itertools', 'array', 'StringIO', 'abc', 'numpy.matrixlib', 'numpy.ctypes', 'numpy.testing.decorators', 'matplotlib.warnings', 'rfc822', 'matplotlib.string', 'urllib', 'matplotlib.sys', 're', 'numpy.lib._compiled_base', 'threading', 'new', 'numpy.random.mtrand', 'urllib2', 'matplotlib.cPickle', 'math', 'numpy.fft.helper', 'fcntl', 'numpy.ma.warnings', 'matplotlib.numpy', 'UserDict', 'numpy.lib.function_base', 'distutils.os', 'matplotlib', 'numpy.fft.numpy', 'xml.sax.codecs', 'exceptions', 'numpy.lib.info', 'ctypes', 'numpy.lib.warnings', 'ctypes.struct', 'codecs', 'numpy.core._sort', 'numpy.os', '_functools', '_locale', 'numpy.__builtin__', 'matplotlib.sre_constants', 'matplotlib.os', 'thread', 'numpy.lib.ufunclike', 'numpy.core.memmap', 'traceback', 'numpy.testing.warnings', 'weakref', 'numpy.core._internal', 'numpy.compat._inspect', 'numpy.linalg.lapack_lite', 'numpy.ma', 'distutils.sys', 'os', 'marshal', 'numpy.lib.itertools', '__future__', 'matplotlib.copy', 'xml.sax.types', 'matplotlib.traceback', '_sre', 'unittest', 'numpy.core.sys', 'numpy.random', 'numpy.linalg.numpy', '__builtin__', 'numpy.lib.twodim_base', 'numpy.ma.core', 'matplotlib.re', 'numpy.core.cPickle', 'operator', 'numpy.polynomial.polytemplate', 'numpy.core.arrayprint', 'distutils.string', 'numpy.lib.arrayterator', 'select', 'ctypes._ctypes', 'ctypes.sys', 'matplotlib.datetime', 'posixpath', 'numpy.lib.financial', 'numpy.core.multiarray', 'errno', '_socket', 'binascii', 'sre_constants', 'datetime', 'numpy.core.shape_base', 'functools', 'xml.sax.handler', 'os.path', 'numpy.core.function_base', 'numpy.compat.py3k', 'numpy.lib.stride_tricks', 'numpy.core.numpy', 'numpy', '_warnings', 'numpy.polynomial.chebyshev', 'matplotlib.types', 'xml.sax.os', 'cPickle', 'encodings.__builtin__', 'numpy.polynomial.warnings', 'matplotlib.xml', 'matplotlib.new', '_codecs', 'numpy.lib.operator', 'numpy.polynomial.polynomial', 'numpy.__config__', '_collections', 'matplotlib.pyparsing', 'httplib', 'numpy.ma.numpy', 'copy', 'numpy.core.re', '_struct', 'numpy.core.fromnumeric', 'hashlib', 'numpy.ctypeslib', 'keyword', 'numpy.lib.scimath', 'numpy.fft', 'numpy.lib', 'bisect', 'numpy.random.numpy', 'matplotlib.urllib2', 'matplotlib.random', 'numpy.polynomial.__future__', 'posix', 'encodings.aliases', 'matplotlib.fontconfig_pattern', 'fnmatch', 'sre_parse', 'pickle', 'numpy.core.ctypes', 'mimetools', 'distutils.distutils', 'copy_reg', 'sre_compile', 'xml.sax', 'numpy.fft.fftpack', '_random', '_ctypes', 'numpy.lib.__future__', 'site', 'numpy.lib.polynomial', 'numpy.compat', 'numpy._import_tools', '__main__', 'numpy.fft.info', 'numpy.core.records', 'shutil', 'numpy.lib.cPickle', 'numpy.sys', 'matplotlib.weakref', 'xml.sax.urllib', 'numpy.core._dotblas', 'numpy.testing.traceback', 'strop', 'numpy.testing.numpytest', 'numpy.polynomial.numpy', 'numpy.core.numeric', 'numpy.linalg.info', 'encodings.codecs', '_abcoll', 'numpy.core', 'matplotlib.rcsetup', 'matplotlib.time', 'xml.sax._exceptions', 'genericpath', 'stat', '_ssl', 'numpy.lib.index_tricks', 'numpy.testing.utils', 'warnings', 'numpy.lib.utils', 'numpy.core.defchararray', 'numpy.polynomial.polyutils', 'numpy.lib.shape_base', 'numpy.core.types', 'textwrap', 'sys', '_hashlib', 'numpy.core.warnings', 'socket', 'numpy.core.__builtin__', 'xml.sax.sys', 'numpy.lib.format', 'numpy.lib.os', 'numpy.testing.nosetester', 'types', 'numpy.lib.shutil', 'matplotlib.distutils', '_weakref', 'distutils.errors', 'numpy.matrixlib.numpy', 'urlparse', 'linecache', 'matplotlib.shutil', 'numpy.lib.cStringIO', 'time', 'numpy.linalg.linalg', 'numpy.testing.numpy'] find_tex_file(pdftex.map): ['kpsewhich', 'pdftex.map'] find_tex_file result: /usr/local/texlive/2010/texmf-var/fonts/map/pdftex/updmap/pdftex.map Please let me know if there's anything more I may do to help fix whatever is going awry here. -Michael |
From: Jouni K. S. <jk...@ik...> - 2011-02-07 15:07:27
|
Michael Anselmi <sel...@gm...> writes: > When trying to save a matplotlib figure as a PDF with `text.usetex = > True' in `matplotlibrc', at some point the `PsfontsMap' function in > `dviread.py' attempts to parse TeX Live 2010's `pdftex.map' file and > fails. Can you send me the pdftex.map file off-list? Thanks for the bug report, -- Jouni K. Seppänen http://www.iki.fi/jks |
From: Jouni S. <jk...@ik...> - 2011-02-07 15:38:19
|
On Feb 7, 2011, at 17:12 , Michael Anselmi wrote: > On 02/07/2011 10:06 AM, Jouni K. Seppänen wrote: >> Can you send me the pdftex.map file off-list? >> >> Thanks for the bug report, > > Certainly. See attached. Thanks. It looks like there is one font for which two encoding files are specified: pbkdo8y URWBookmanL-DemiBold ".167 SlantFont TeXnANSIEncoding ReEncodeFont" <texnansi.enc <8r.enc <ubkd8a.pfb I guess we will need to implement slightly more of a PostScript interpreter inside matplotlib to figure out which file is to be used for re-encoding the font, unless this really means some kind of a combination of the two encodings. I'll try to find out what pdftex does with this. In the meantime, I will commit a quick workaround that just disables the fonts we can't handle instead of aborting with an assert. I filed this in the bug tracker: https://sourceforge.net/tracker/?func=detail&aid=3175113&group_id=80706&atid=560720 Jouni |
From: Jouni K. S. <jk...@ik...> - 2011-02-28 05:22:06
|
Jouni Seppänen <jk...@ik...> writes: > pbkdo8y URWBookmanL-DemiBold ".167 SlantFont TeXnANSIEncoding ReEncodeFont" <texnansi.enc <8r.enc <ubkd8a.pfb > > I guess we will need to implement slightly more of a PostScript > interpreter inside matplotlib to figure out which file is to be used > for re-encoding the font, unless this really means some kind of a > combination of the two encodings. I'll try to find out what pdftex > does with this. The author of pdftex reports that pdftex just takes the last encoding file specified (so this font probably gets encoded wrong): http://thread.gmane.org/gmane.comp.tex.pdftex/4913/focus=4914 This is very likely a bug in TeX Live, or whatever software caused that line to be added to the pdftex.map file. -- Jouni K. Seppänen http://www.iki.fi/jks |
From: Jouni K. S. <jk...@ik...> - 2011-02-07 16:17:54
|
Jouni Seppänen <jk...@ik...> writes: > I filed this in the bug tracker: https://sourceforge.net/tracker/?func=detail&aid=3175113&group_id=80706&atid=560720 I installed TeX Live 2010 on my Mac in order to test this, but mysteriously, the pdftex.map file does not have a line for pbkdo8y. The closest match is pbkdo8r URWBookmanL-DemiBold ".167 SlantFont TeXBase1Encoding ReEncodeFont" <8r.enc <ubkd8a.pfb which is the same font but with another encoding. I wonder if this indicates a problem in the way Ubuntu sets up TeX Live? -- Jouni K. Seppänen http://www.iki.fi/jks |
From: Alex <ale...@go...> - 2011-02-07 16:53:01
|
On 07.02.2011 17:17, Jouni K. Seppänen wrote: > Jouni Seppänen<jk...@ik...> writes: > >> I filed this in the bug tracker: https://sourceforge.net/tracker/?func=detail&aid=3175113&group_id=80706&atid=560720 > > I installed TeX Live 2010 on my Mac in order to test this, but > mysteriously, the pdftex.map file does not have a line for pbkdo8y. The > closest match is > > pbkdo8r URWBookmanL-DemiBold ".167 SlantFont TeXBase1Encoding ReEncodeFont"<8r.enc<ubkd8a.pfb > > which is the same font but with another encoding. I wonder if this > indicates a problem in the way Ubuntu sets up TeX Live? > Hi Jouni, currently Ubuntu still uses Texlive 2009. I also got the same bug (http://article.gmane.org/gmane.comp.python.matplotlib.general/26110) with Texlive 2010 installed directly from tug.org. I think it is unlikely that this is an Ubuntu specific problem, but I don't know for sure whether this file gets generated during the installation or is unmodified from the Texlive distribution. Greetings Alexander |
From: Jouni K. S. <jk...@ik...> - 2011-02-07 16:58:56
|
Jouni Seppänen <jk...@ik...> writes: >In the meantime, I will commit a quick workaround that just disables >the fonts we can't handle instead of aborting with an assert. Now committed in revision 8955 (1.0 maintenance branch) and 8956 (svn trunk). Please test on your system. |
From: Michael A. <sel...@gm...> - 2011-02-07 19:33:21
|
On 02/07/2011 11:58 AM, Jouni K. Seppänen wrote: > Jouni Seppänen <jk...@ik...> writes: > >> In the meantime, I will commit a quick workaround that just disables >> the fonts we can't handle instead of aborting with an assert. > > Now committed in revision 8955 (1.0 maintenance branch) and 8956 > (svn trunk). Please test on your system. The workaround fixes the error I was receiving. Thank you very much! -- Michael Anselmi Class of 2011 Mathematics (B.S.) University of Rochester 508.507.9738 |