我想为演示文稿生成高质量的图表。我正在使用Python的matplotlib来生成图形。但不幸的是,PDF导出似乎忽略了我的字体设置。
我尝试通过向文本绘制函数传递FontProperties
对象以及全局设置选项来设置字体。记录一下,这是一个可以重现问题的最小化工作示例:
import scipy
import matplotlib
matplotlib.use('cairo')
import matplotlib.pylab as pylab
import matplotlib.font_manager as fm
data = scipy.arange(5)
for font in ['Helvetica', 'Gill Sans']:
fig = pylab.figure()
ax = fig.add_subplot(111)
ax.bar(data, data)
ax.set_xticks(data)
ax.set_xticklabels(data, fontproperties = fm.FontProperties(family = font))
pylab.savefig('foo-%s.pdf' % font)
在这两种情况下,生成的输出是相同的,并且使用 Helvetica 字体(是的,我已经安装了这两种字体)。只是为了确保,以下操作也没有帮助:
matplotlib.rc('font', family = 'Gill Sans')
最后,如果我替换后端,改用本机查看器:
matplotlib.use('MacOSX')
虽然我成功地在查看器 GUI 中显示了正确的字体,但是 PDF 输出仍然不正确。
确切地说,我可以设置其他字体,但只能设置其他类别的字体系列:我可以设置有衬线、幻想或等宽字体。但所有无衬线字体似乎都默认为 Helvetica。
fname = …
我在 backend_pdf.py 的第776行中调用embedTTFType3
函数并调用savefig
时出现了一个 RuntimeError “TrueType font is missing table”。我对 TTF 和 PDF 不太熟悉,但是我已经通过其他方式将 Gill Sans 嵌入到 PDF 中,所以我不确定这里有什么问题。 - Konrad RudolphMacOSX
后端中尝试了您的“fname”解决方案。使用cairo
后端,一切正常。我会发布一个可工作的代码示例。 - Konrad Rudolph