Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Issue encoding type1 fonts with python 3 #4470

Closed
@tacaswell

Description

@tacaswell

Initially reported at ContinuumIO/anaconda-issues#337

import numpy as np
import matplotlib as mpl
import matplotlib.pylab as plt

mpl.rcdefaults()
# This doesn't work
 mpl.rcParams['font.serif'] = "Times, serif"
# This does
#mpl.rcParams['font.serif'] = "Bitstream Vera Serif, serif"
mpl.rcParams['text.usetex'] = "true"

x = np.random.normal(size=100)
y = np.random.normal(size=100)
plt.scatter(x, y)
plt.xlabel("$\gamma$")
plt.savefig("foo.png")
print("foo.png saved")
plt.savefig("bar.pdf")
print("bar.pdf saved")

traceback:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-10-3a778cad97aa> in <module>()
----> 1 exec(compile(open('/tmp/ipython-56520H0.py').read(), '/tmp/ipython-56520H0.py', 'exec')) # PYTHON-MODE

/tmp/ipython-56520H0.py in <module>()

/home/tcaswell/source/my_source/matplotlib/lib/matplotlib/pyplot.py in savefig(*args, **kwargs)
    577 def savefig(*args, **kwargs):
    578     fig = gcf()
--> 579     res = fig.savefig(*args, **kwargs)
    580     draw()   # need this if 'transparent=True' to reset colors
    581     return res

/home/tcaswell/source/my_source/matplotlib/lib/matplotlib/figure.py in savefig(self, *args, **kwargs)
   1507             self.set_frameon(frameon)
   1508 
-> 1509         self.canvas.print_figure(*args, **kwargs)
   1510 
   1511         if frameon:

/home/tcaswell/source/my_source/matplotlib/lib/matplotlib/backends/backend_qt5agg.py in print_figure(self, *args, **kwargs)
    158 
    159     def print_figure(self, *args, **kwargs):
--> 160         FigureCanvasAgg.print_figure(self, *args, **kwargs)
    161         self.draw()
    162 

/home/tcaswell/source/my_source/matplotlib/lib/matplotlib/backend_bases.py in print_figure(self, filename, dpi, facecolor, edgecolor, orientation, format, **kwargs)
   2223                 orientation=orientation,
   2224                 bbox_inches_restore=_bbox_inches_restore,
-> 2225                 **kwargs)
   2226         finally:
   2227             if bbox_inches and restore_bbox:

/home/tcaswell/source/my_source/matplotlib/lib/matplotlib/backends/backend_pdf.py in print_pdf(self, filename, **kwargs)
   2513                 file.endStream()
   2514             else:            # we opened the file above; now finish it off
-> 2515                 file.close()
   2516 
   2517 

/home/tcaswell/source/my_source/matplotlib/lib/matplotlib/backends/backend_pdf.py in close(self)
    552         self.endStream()
    553         # Write out the various deferred objects
--> 554         self.writeFonts()
    555         self.writeObject(self.alphaStateObject,
    556                          dict([(val[0], val[1])

/home/tcaswell/source/my_source/matplotlib/lib/matplotlib/backends/backend_pdf.py in writeFonts(self)
    648                 matplotlib.verbose.report('Writing Type-1 font', 'debug')
    649                 fonts[Fx] = self.embedTeXFont(filename,
--> 650                                               self.dviFontInfo[filename])
    651             else:
    652                 # a normal TrueType font

/home/tcaswell/source/my_source/matplotlib/lib/matplotlib/backends/backend_pdf.py in embedTeXFont(self, texname, fontinfo)
    713         t1font = type1font.Type1Font(fontinfo.fontfile)
    714         if fontinfo.effects:
--> 715             t1font = t1font.transform(fontinfo.effects)
    716         fontdict['BaseFont'] = Name(t1font.prop['FontName'])
    717 

/home/tcaswell/source/my_source/matplotlib/lib/matplotlib/type1font.py in transform(self, effects)
    334                 if six.PY3 and isinstance(value, int):
    335                     value = chr(value)
--> 336                 value = value.encode('latin-1')
    337                 buffer.write(value)
    338             result = buffer.getvalue()

AttributeError: 'bytes' object has no attribute 'encode'

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions