2012-01-29 49 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) 
相關問題