我在matplotlib中使用了一种名为Freesans的ttf字体,我创建的图形如下:
from matplotlib import rc
plt.rcParams['ps.useafm'] = True
rc('font',**{'family':'sans-serif','sans-serif':['FreeSans']})
plt.rcParams['pdf.fonttype'] = 42
plt.figure()
# plot figure...
plt.savefig("myfig.pdf")
当我在另一个程序(Mac OS X上的Eidogg. Illustrator)上打开它时,字体没有出现,而是使用默认字体,因为FreeSans不可用。
我怎样才能让matplotlib在它生成的每一个PDF中嵌入字体呢?我不介意文件大一点。谢谢。
3条答案
按热度按时间6ioyuze21#
我在用matplotlib制作pdf时也遇到了同样的问题。
有趣的是,如果我在pdf中指定使用TrueType,字体将被嵌入:
ehxuflar2#
你确定它还没开始吗?
matplotlib有很好的文本支持,包括数学表达式,光栅和矢量输出的truetype支持,任意旋转的换行符分隔文本,以及unicode支持。因为我们直接在输出文档中嵌入字体,例如postscript或PDF,你在屏幕上看到的就是你在硬拷贝中得到的。
以前,我经常输出.ps文档,并使用带有
-dEmbedAllFonts=true
选项的ps2pdf
。tp5buhyn3#
我最近遇到了同样的问题,然后意识到如果我在mplstyle文件中关闭带有
text.usetex : False
的“text.usetex”;字体就可以了。我尝试过使用“fonttype=42”,但它根本不起作用。
我认为问题是当用LaTeX渲染文本时,字体不知何故没有正确嵌入...我试图更改字体,但只要
text.usetex
设置为True
,我就无法正确嵌入字体。因此,不幸的是,目前的解决方案是关闭LaTeX渲染...