Problems with latex fonts

Hi,

I am having a ridiculous amount of trouble getting Computer Modern Roman to appear in my plots. So many problems, in fact, I nuked the whole of macports and installed the things I need again because I thought it might have been a problem with using an upgraded version of macports from Snow Leopard (I’m now using Lion).

This is what I have:

OS X Lion

Fresh install of python 2.6 from macports

Numpy version 1.6.1 (from macports)

freetype (from macports)

libpng (from macports)

matplotlib 1.0.1 (from macports)

When I run my plotting script, I get the following error as soon as the script starts (i.e., right after matplotlib is imported):

/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/init.py:403: UserWarning: matplotlibrc text.usetex can not be used with *Agg backend unless dvipng-1.5 or later is installed on your system

warnings.warn( 'matplotlibrc text.usetex can not be used with *Agg ’

Note: I am using the PDF backend.

When I try to save the plot to a pdf file, I get the following error:

/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/font_manager.py:1242: UserWarning: findfont: Font family [‘serif’] not found. Falling back to Bitstream Vera Sans

(prop.get_family(), self.defaultFamily[fontext]))

This is frustrating because it’s a serif font that I need.

After much thought, and Googling, I found out how to suppress the first warning message, and that is to add the directory where dvipng lives to my PATH variable. It is worth noting here that dvipng version 1.5 does not exist. The latest version is 1.14 as can be seen here: http://download.savannah.gnu.org/releases/dvipng/

Once I do this the first warning message does not appear, and the font error disappears but I get a new error:

Traceback (most recent call last):

File “refinement.py”, line 60, in

fig.savefig(‘conv.pdf’)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/figure.py”, line 1084, in savefig

self.canvas.print_figure(*args, **kwargs)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/backend_bases.py”, line 1923, in print_figure

**kwargs)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/backends/backend_pdf.py”, line 2156, in print_pdf

self.figure.draw(renderer)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/artist.py”, line 55, in draw_wrapper

draw(artist, renderer, *args, **kwargs)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/figure.py”, line 798, in draw

func(*args)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/artist.py”, line 55, in draw_wrapper

draw(artist, renderer, *args, **kwargs)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/axes.py”, line 1946, in draw

a.draw(renderer)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/artist.py”, line 55, in draw_wrapper

draw(artist, renderer, *args, **kwargs)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/axis.py”, line 1017, in draw

tick.draw(renderer)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/artist.py”, line 55, in draw_wrapper

draw(artist, renderer, *args, **kwargs)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/axis.py”, line 234, in draw

self.label1.draw(renderer)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/artist.py”, line 55, in draw_wrapper

draw(artist, renderer, *args, **kwargs)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/text.py”, line 571, in draw

self._fontproperties, angle)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/backends/backend_pdf.py”, line 1549, in draw_tex

psfont = self.tex_font_mapping(dvifont.texname)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/backends/backend_pdf.py”, line 1365, in tex_font_mapping

dviread.PsfontsMap(dviread.find_tex_file(‘pdftex.map’))

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/dviread.py”, line 668, in init

self._parse(file)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/dviread.py”, line 701, in _parse

self._register(words)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/dviread.py”, line 727, in _register

assert encoding is None

AssertionError

I have no idea what this means or how to fix it! I assumed it was a problem with the version of dvipng that I’m using, but I’m using the latest one.

I have also tried grabbing the matplotlib source from git and compiling it by hand (yes, both the macports install and the source install see that I have latex installed, I also have type1cm.sty installed from texlive-latex-extra so the fonts are there. typ1cm.sty lives in /opt/local/share/texmf-texlive-dist/tex/latex/type1cm/). Maybe it’s a problem with matplotlib not looking in the right place for the fonts?

Can anybody out there provide any suggestions?

Damon McDougall
d.mcdougall@…831…
http://damon.is-a-geek.com
B2.39
Mathematics Institute
Coventry
West Midlands
CV4 7AL

Sorry, I made a typo. See below.

Hi,

I am having a ridiculous amount of trouble getting Computer Modern Roman to appear in my plots. So many problems, in fact, I nuked the whole of macports and installed the things I need again because I thought it might have been a problem with using an upgraded version of macports from Snow Leopard (I’m now using Lion).

This is what I have:

OS X Lion

Fresh install of python 2.6 from macports

Numpy version 1.6.1 (from macports)

freetype (from macports)

libpng (from macports)

matplotlib 1.0.1 (from macports)

When I run my plotting script, I get the following error as soon as the script starts (i.e., right after matplotlib is imported):

/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/init.py:403: UserWarning: matplotlibrc text.usetex can not be used with *Agg backend unless dvipng-1.5 or later is installed on your system

warnings.warn( 'matplotlibrc text.usetex can not be used with *Agg ’

Note: I am using the PDF backend.

When I try to save the plot to a pdf file, I get the following error:

/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/font_manager.py:1242: UserWarning: findfont: Font family [‘serif’] not found. Falling back to Bitstream Vera Sans

(prop.get_family(), self.defaultFamily[fontext]))

This is frustrating because it’s a serif font that I need.

After much thought, and Googling, I found out how to suppress the first warning message, and that is to add the directory where dvipng lives to my PATH variable. It is worth noting here that dvipng version 1.5 does not exist. The latest version is 1.14 as can be seen here: http://download.savannah.gnu.org/releases/dvipng/

Once I do this the first warning DOES disappear, and the font error disappears, but I get a new error:

Traceback (most recent call last):

File “refinement.py”, line 60, in

fig.savefig(‘conv.pdf’)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/figure.py”, line 1084, in savefig

self.canvas.print_figure(*args, **kwargs)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/backend_bases.py”, line 1923, in print_figure

**kwargs)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/backends/backend_pdf.py”, line 2156, in print_pdf

self.figure.draw(renderer)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/artist.py”, line 55, in draw_wrapper

draw(artist, renderer, *args, **kwargs)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/figure.py”, line 798, in draw

func(*args)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/artist.py”, line 55, in draw_wrapper

draw(artist, renderer, *args, **kwargs)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/axes.py”, line 1946, in draw

a.draw(renderer)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/artist.py”, line 55, in draw_wrapper

draw(artist, renderer, *args, **kwargs)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/axis.py”, line 1017, in draw

tick.draw(renderer)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/artist.py”, line 55, in draw_wrapper

draw(artist, renderer, *args, **kwargs)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/axis.py”, line 234, in draw

self.label1.draw(renderer)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/artist.py”, line 55, in draw_wrapper

draw(artist, renderer, *args, **kwargs)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/text.py”, line 571, in draw

self._fontproperties, angle)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/backends/backend_pdf.py”, line 1549, in draw_tex

psfont = self.tex_font_mapping(dvifont.texname)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/backends/backend_pdf.py”, line 1365, in tex_font_mapping

dviread.PsfontsMap(dviread.find_tex_file(‘pdftex.map’))

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/dviread.py”, line 668, in init

self._parse(file)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/dviread.py”, line 701, in _parse

self._register(words)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/dviread.py”, line 727, in _register

assert encoding is None

AssertionError

I have no idea what this means or how to fix it! I assumed it was a problem with the version of dvipng that I’m using, but I’m using the latest one.

I have also tried grabbing the matplotlib source from git and compiling it by hand (yes, both the macports install and the source install see that I have latex installed, I also have type1cm.sty installed from texlive-latex-extra so the fonts are there. typ1cm.sty lives in /opt/local/share/texmf-texlive-dist/tex/latex/type1cm/). Maybe it’s a problem with matplotlib not looking in the right place for the fonts?

Can anybody out there provide any suggestions?

Damon McDougall
d.mcdougall@…831…
http://damon.is-a-geek.com
B2.39
Mathematics Institute
Coventry
West Midlands
CV4 7AL

More diagnostics.

I ran the fonts_demo.py example and saved the plot as a .png (this time using the macosx backend). See attached for the result, and compare with http://matplotlib.sourceforge.net/plot_directive/mpl_examples/pylab_examples/fonts_demo.hires.png

I also got the following font warnings (in addition to the Agg warning about dvipng again) while saving the figure. This time I took out the path where dvipng lives, so that I don’t get that assertion error.

/Users/damon/python/lib/matplotlib/init.py:401: UserWarning: matplotlibrc text.usetex can not be used with *Agg backend unless dvipng-1.5 or later is installed on your system

warnings.warn( 'matplotlibrc text.usetex can not be used with *Agg ’

/Users/damon/python/lib/matplotlib/font_manager.py:1210: UserWarning: findfont: Font family [‘serif’] not found. Falling back to Bitstream Vera Sans

(prop.get_family(), self.defaultFamily[fontext]))

/Users/damon/python/lib/matplotlib/font_manager.py:1210: UserWarning: findfont: Font family [‘Script MT’] not found. Falling back to Bitstream Vera Sans

(prop.get_family(), self.defaultFamily[fontext]))

fonts.png

Hi,

I am having a ridiculous amount of trouble getting Computer Modern Roman to appear in my plots. So many problems, in fact, I nuked the whole of macports and installed the things I need again because I thought it might have been a problem with using an upgraded version of macports from Snow Leopard (I’m now using Lion).

This is what I have:

OS X Lion

Fresh install of python 2.6 from macports

Numpy version 1.6.1 (from macports)

freetype (from macports)

libpng (from macports)

matplotlib 1.0.1 (from macports)

When I run my plotting script, I get the following error as soon as the script starts (i.e., right after matplotlib is imported):

/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/init.py:403: UserWarning: matplotlibrc text.usetex can not be used with *Agg backend unless dvipng-1.5 or later is installed on your system

warnings.warn( 'matplotlibrc text.usetex can not be used with *Agg ’

Note: I am using the PDF backend.

When I try to save the plot to a pdf file, I get the following error:

/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/font_manager.py:1242: UserWarning: findfont: Font family [‘serif’] not found. Falling back to Bitstream Vera Sans

(prop.get_family(), self.defaultFamily[fontext]))

This is frustrating because it’s a serif font that I need.

After much thought, and Googling, I found out how to suppress the first warning message, and that is to add the directory where dvipng lives to my PATH variable. It is worth noting here that dvipng version 1.5 does not exist. The latest version is 1.14 as can be seen here: http://download.savannah.gnu.org/releases/dvipng/

Once I do this the first warning DOES disappear, and the font error disappears, but I get a new error:

Traceback (most recent call last):

File “refinement.py”, line 60, in

fig.savefig(‘conv.pdf’)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/figure.py”, line 1084, in savefig

self.canvas.print_figure(*args, **kwargs)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/backend_bases.py”, line 1923, in print_figure

**kwargs)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/backends/backend_pdf.py”, line 2156, in print_pdf

self.figure.draw(renderer)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/artist.py”, line 55, in draw_wrapper

draw(artist, renderer, *args, **kwargs)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/figure.py”, line 798, in draw

func(*args)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/artist.py”, line 55, in draw_wrapper

draw(artist, renderer, *args, **kwargs)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/axes.py”, line 1946, in draw

a.draw(renderer)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/artist.py”, line 55, in draw_wrapper

draw(artist, renderer, *args, **kwargs)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/axis.py”, line 1017, in draw

tick.draw(renderer)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/artist.py”, line 55, in draw_wrapper

draw(artist, renderer, *args, **kwargs)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/axis.py”, line 234, in draw

self.label1.draw(renderer)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/artist.py”, line 55, in draw_wrapper

draw(artist, renderer, *args, **kwargs)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/text.py”, line 571, in draw

self._fontproperties, angle)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/backends/backend_pdf.py”, line 1549, in draw_tex

psfont = self.tex_font_mapping(dvifont.texname)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/backends/backend_pdf.py”, line 1365, in tex_font_mapping

dviread.PsfontsMap(dviread.find_tex_file(‘pdftex.map’))

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/dviread.py”, line 668, in init

self._parse(file)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/dviread.py”, line 701, in _parse

self._register(words)

File “/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/dviread.py”, line 727, in _register

assert encoding is None

AssertionError

I have no idea what this means or how to fix it! I assumed it was a problem with the version of dvipng that I’m using, but I’m using the latest one.

I have also tried grabbing the matplotlib source from git and compiling it by hand (yes, both the macports install and the source install see that I have latex installed, I also have type1cm.sty installed from texlive-latex-extra so the fonts are there. typ1cm.sty lives in /opt/local/share/texmf-texlive-dist/tex/latex/type1cm/). Maybe it’s a problem with matplotlib not looking in the right place for the fonts?

Can anybody out there provide any suggestions?

Damon McDougall
d.mcdougall@…831…
http://damon.is-a-geek.com
B2.39
Mathematics Institute
Coventry
West Midlands
CV4 7AL

More diagnostics.

This is what I have:

OS X Lion

Fresh install of python 2.6 from macports

Numpy version 1.6.1 (from macports)

freetype (from macports)

libpng (from macports)

matplotlib 1.0.1 (from macports)

When I run my plotting script, I get the following error as soon as the script starts (i.e., right after matplotlib is imported):

/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/init.py:403: UserWarning: matplotlibrc text.usetex can not be used with *Agg backend unless dvipng-1.5 or later is installed on your system

warnings.warn( 'matplotlibrc text.usetex can not be used with *Agg ’

Note: I am using the PDF backend.

When I try to save the plot to a pdf file, I get the following error:

/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/font_manager.py:1242: UserWarning: findfont: Font family [‘serif’] not found. Falling back to Bitstream Vera Sans

(prop.get_family(), self.defaultFamily[fontext]))

This is frustrating because it’s a serif font that I need.

After much thought, and Googling, I found out how to suppress the first warning message, and that is to add the directory where dvipng lives to my PATH variable. It is worth noting here that dvipng version 1.5 does not exist. The latest version is 1.14 as can be seen here: http://download.savannah.gnu.org/releases/dvipng/

Actually 1.5 does exist, it’s just older than 1.14 (think of it as 1.05). Are you sure that Matplotlib could “see” dvipng when it was built? During the install, it should spit out a bunch of details at the beginning with a few headings in all caps. Under the heading “OPTIONAL USETEX DEPENDENCIES”, what’s listed next to dvipng?

-Tony

···

On Thu, Aug 11, 2011 at 9:50 AM, Damon McDougall <D.McDougall@…831…> wrote:

This is what I have:

OS X Lion

Fresh install of python 2.6 from macports

Numpy version 1.6.1 (from macports)

freetype (from macports)

libpng (from macports)

matplotlib 1.0.1 (from macports)

When I run my plotting script, I get the following error as soon as the script starts (i.e., right after matplotlib is imported):

/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/init.py:403: UserWarning: matplotlibrc text.usetex can not be used with *Agg backend unless dvipng-1.5 or later is installed on your system

warnings.warn( 'matplotlibrc text.usetex can not be used with *Agg ’

Note: I am using the PDF backend.

When I try to save the plot to a pdf file, I get the following error:

/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/font_manager.py:1242: UserWarning: findfont: Font family [‘serif’] not found. Falling back to Bitstream Vera Sans

(prop.get_family(), self.defaultFamily[fontext]))

This is frustrating because it’s a serif font that I need.

After much thought, and Googling, I found out how to suppress the first warning message, and that is to add the directory where dvipng lives to my PATH variable. It is worth noting here that dvipng version 1.5 does not exist. The latest version is 1.14 as can be seen here: http://download.savannah.gnu.org/releases/dvipng/

Actually 1.5 does exist, it’s just older than 1.14 (think of it as 1.05). Are you sure that Matplotlib could “see” dvipng when it was built? During the install, it should spit out a bunch of details at the beginning with a few headings in all caps. Under the heading “OPTIONAL USETEX DEPENDENCIES”, what’s listed next to dvipng?

-Tony

Hey Tony,

Thanks for your suggestion. I think it fixed the problem, at least for the build from source. I haven’t tried the macports version, but for anyone with the same problem that’s interested, you should run

sudo port install py26-matplotlib +dvipng +latex

if you want it to build with those optional dependencies.

Damon McDougall
d.mcdougall@…831…
http://damon.is-a-geek.com
B2.39
Mathematics Institute
Coventry
West Midlands
CV4 7AL