[Matplotlib-users] TrueType font is missing table

Thomas Caswell tcaswell at gmail.com
Mon Aug 31 02:21:50 CEST 2015


I am having trouble reproducing this, you might want to raise this issue
with the Fedora folks as they do some funny stuff with fonts + packaging
mpl.

Tom

PS this list has moved to matplotlib-users at python.org


On Mon, Jul 6, 2015 at 8:43 AM Neal Becker <ndbecker2 at gmail.com> wrote:

> Neal Becker wrote:
>
> > Using mpl 1.4.3 on Fedora 22, I'm trying to use stix font (so I can
> render
> > the unicode lambda label on the x-axis).  I have every fedora package
> > related to 'stix', I think. It displays ok in qtagg4, but if I try to
> save
> > to pdf if fails with
> >
> > RuntimeError                              Traceback (most recent call
> > last) <ipython-input-2-7dee58c07264> in <module>()
> > ----> 1 exec(open(r'/usr/tmp/python-8710q1Y.py').read()) # PYTHON-MODE
> >
> > <string> in <module>()
> >
> > /usr/lib64/python3.4/site-packages/matplotlib/pyplot.py in savefig(*args,
> > **kwargs)
> >     575 def savefig(*args, **kwargs):
> >     576     fig = gcf()
> > --> 577     res = fig.savefig(*args, **kwargs)
> >     578     draw()   # need this if 'transparent=True' to reset colors
> >     579     return res
> >
> > /usr/lib64/python3.4/site-packages/matplotlib/figure.py in savefig(self,
> > *args, **kwargs)
> >    1474             self.set_frameon(frameon)
> >    1475
> > -> 1476         self.canvas.print_figure(*args, **kwargs)
> >    1477
> >    1478         if frameon:
> >
> > /usr/lib64/python3.4/site-packages/matplotlib/backend_bases.py in
> > print_figure(self, filename, dpi, facecolor, edgecolor, orientation,
> > format, **kwargs)
> >    2209                 orientation=orientation,
> >    2210                 bbox_inches_restore=_bbox_inches_restore,
> > -> 2211                 **kwargs)
> >    2212         finally:
> >    2213             if bbox_inches and restore_bbox:
> >
> > /usr/lib64/python3.4/site-packages/matplotlib/backends/backend_pdf.py in
> > print_pdf(self, filename, **kwargs)
> >    2489                 file.endStream()
> >    2490             else:            # we opened the file above; now
> >    finish
> > it off
> > -> 2491                 file.close()
> >    2492
> >    2493
> >
> > /usr/lib64/python3.4/site-packages/matplotlib/backends/backend_pdf.py in
> > close(self)
> >     523         self.endStream()
> >     524         # Write out the various deferred objects
> > --> 525         self.writeFonts()
> >     526         self.writeObject(self.alphaStateObject,
> >     527                          dict([(val[0], val[1])
> >
> > /usr/lib64/python3.4/site-packages/matplotlib/backends/backend_pdf.py in
> > writeFonts(self)
> >     626                 chars = self.used_characters.get(stat_key)
> >     627                 if chars is not None and len(chars[1]):
> > --> 628                     fonts[Fx] = self.embedTTF(realpath, chars[1])
> >     629         self.writeObject(self.fontObject, fonts)
> >     630
> >
> > /usr/lib64/python3.4/site-packages/matplotlib/backends/backend_pdf.py in
> > embedTTF(self, filename, characters)
> >    1101
> >    1102         if fonttype == 3:
> > -> 1103             return embedTTFType3(font, characters, descriptor)
> >    1104         elif fonttype == 42:
> >    1105             return embedTTFType42(font, characters, descriptor)
> >
> > /usr/lib64/python3.4/site-packages/matplotlib/backends/backend_pdf.py in
> > embedTTFType3(font, characters, descriptor)
> >     887             # actual outlines)
> >     888             rawcharprocs = ttconv.get_pdf_charprocs(
> > --> 889                 filename.encode(sys.getfilesystemencoding()),
> > glyph_ids)
> >     890             charprocs = {}
> >     891             for charname, stream in six.iteritems(rawcharprocs):
> >
> > RuntimeError: TrueType font is missing table
> >
>
> forgot to attach the code.
>
>
> #!/usr/bin/python
> # -*- coding: utf-8 -*-
> data='''carriers,lambda,per
> 1,7,1.3e-4
> 1,8,3.0e-4
> 1,9,.0014
> 8,7,4.8e-4
> 8,8,1.3e-3
> 8,9,.0075
> '''
>
> import pandas as pd
> try:
>     from StringIO import StringIO
> except ImportError:
>     from io import StringIO
> df = pd.read_csv (StringIO (data))
> g = df.groupby ('carriers')
> import matplotlib.pyplot as plt
>
> import matplotlib as mpl
> #mpl.rcParams['font.family'] = 'stix'
> mpl.rc('font', family='DejaVu Sans')
> #mpl.rc('font', family='stix')
>
> import itertools
> markers = itertools.cycle(['o','s','v'])
>
> fig = plt.figure()
> ax = fig.add_subplot(111)
> for c, stuff in g:
>     plt.semilogy (stuff['lambda'].values, stuff['per'].values,
> label='carriers=%s'%c, marker=next(markers))
>
> plt.legend (loc='best')
> ax.set_xlabel (' ')
> ax.set_ylabel ('per')
> plt.grid(which='major', linestyle='solid')
> plt.grid(which='minor', linestyle='dashed')
> plt.savefig ('per_vs_lambda.pdf')
>
>
>
>
>
>
>
> ------------------------------------------------------------------------------
> Don't Limit Your Business. Reach for the Cloud.
> GigeNET's Cloud Solutions provide you with the tools and support that
> you need to offload your IT needs and focus on growing your business.
> Configured For All Businesses. Start Your Cloud Today.
> https://www.gigenetcloud.com/
> _______________________________________________
> Matplotlib-users mailing list
> Matplotlib-users at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/matplotlib-users/attachments/20150831/3731352e/attachment-0001.html>


More information about the Matplotlib-users mailing list