如何在matplotlib生成的PDF中嵌入字体?

ruoxqz4g  于 2022-11-30  发布在  其他
关注(0)|答案(3)|浏览(197)

我在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中嵌入字体呢?我不介意文件大一点。谢谢。

6ioyuze2

6ioyuze21#

我在用matplotlib制作pdf时也遇到了同样的问题。
有趣的是,如果我在pdf中指定使用TrueType,字体将被嵌入:

matplotlib.rc('pdf', fonttype=42)
ehxuflar

ehxuflar2#

你确定它还没开始吗?
matplotlib有很好的文本支持,包括数学表达式,光栅和矢量输出的truetype支持,任意旋转的换行符分隔文本,以及unicode支持。因为我们直接在输出文档中嵌入字体,例如postscript或PDF,你在屏幕上看到的就是你在硬拷贝中得到的。
以前,我经常输出.ps文档,并使用带有-dEmbedAllFonts=true选项的ps2pdf

tp5buhyn

tp5buhyn3#

我最近遇到了同样的问题,然后意识到如果我在mplstyle文件中关闭带有text.usetex : False的“text.usetex”;字体就可以了。
我尝试过使用“fonttype=42”,但它根本不起作用。
我认为问题是当用LaTeX渲染文本时,字体不知何故没有正确嵌入...我试图更改字体,但只要text.usetex设置为True,我就无法正确嵌入字体。
因此,不幸的是,目前的解决方案是关闭LaTeX渲染...

相关问题