2013-01-12 20 views
1

我在OSX 10.8.2上,使用Python 2.7.3和matplotlib 1.1.1。當導出我的陰謀基於位圖的格式,如JPEG或PNG,百分號被正確地呈現如下圖所示:爲什麼基於矢量的圖像文件包含損壞的字符?

correctly rendered percent sign

然而,當我將其導出到基於矢量的格式,如PDF或PS,我得到這個:

incorrectly rendered percent sign

我沒有測試過的所有字符,但其他渲染錯誤是可能的。我選擇哪個後端並不重要,例如PDF,我總是使用基於矢量的文件格式得到這個不合格的字符。我使用matplotlib的標準字體設置,也就是說,這裏沒有自定義。

你知道爲什麼會發生這種情況嗎?

+0

您確定這不是渲染器中的錯誤嗎? –

+1

你試過其他字體嗎?其他人物? –

+0

@ IgnacioVazquez-Abrams不,它看起來像我所有可以打開PDF文件的應用程序。 – pemistahl

回答

3

好的,這次我可以自己回答我的問題。在設置文件matplotlibrc我不得不pdf.fonttypeps.fonttype更改設置從標準制定3它代表輸出類型342它代表的TrueType。我不是字體專家,但似乎matplotlib使用的標準字體是TrueType字體。因此,必須設置正確的字體類型。

在Python:

import matplotlib as mpl 
mpl.rcParams['pdf.fonttype']=42 
+0

你是搖滾明星。謝謝。 'mpl.rcParams ['pdf.fonttype'] = 42'爲我修好了。 – shauvik

0

當使用字體類型3(意味着PDF或PS的本地字體格式)字體被子集。在matplotlib 1.2之前,在字體子集代碼中存在一個某些字體的錯誤。

所以,雖然這是一個有效的解決方法,但它會使文件更大。如果可以的話,最好升級matplotlib。