2012-01-29 43 views
10

我正在使用matplotlib在Linux上使用名为FreeSans的ttf字体。创建我的身材为:如何在由matplotlib生成的PDF中嵌入字体?

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上的插画),则字体不出现以及默认的字体来代替,因为FreeSans不可用。

我该如何做到这一点,matplotlib嵌入在它生成的每个PDF中的字体?如果文件较大,我不介意。谢谢。

回答

2

你确定它不是已经做到了吗?从网站:

matplotlib具有优秀的文本支持,包括数学 表达式,光栅和矢量输出,换行符 任意旋转分离文本和Unicode支持TrueType支持。因为 我们直接在输出文档中嵌入字体,例如对于后记 或PDF,您在屏幕上看到的是硬拷贝中的内容。早在一天

,我用来输出.PS文档,并使用ps2pdf-dEmbedAllFonts=true选项。

+0

但是,当我在Illustrator中打开它,它试图找到FreeSans。它说该字体不存在,并提供给我“嵌入”它,在这种情况下,它使用Illustrator默认的Myriad Pro字体打开PDF。所以它似乎不像FreeSans嵌入,除非Illustrator搞砸了? – user248237dfsf 2012-01-29 17:29:07

+2

最后要做的事情是从Xpdf获取pdffonts,然后在您的pdf上运行它。它会告诉你什么字体嵌入。 – 2012-01-29 17:32:06

+0

@ user248237嵌入字体。但它不是一套完整的字体(只使用字符)。这就是Illustrator无法使用它的原因,因为它不作为系统字体存在,并且仅作为文件中的有限字符集存在。 – tiago 2012-10-18 01:46:15

6

我在使用matplotlib生成pdf时遇到同样的问题。

有趣的,如果我指定使用PDF格式的TrueType,字体将被嵌入:

matplotlib.rc('pdf', fonttype=42) 
相关问题