Python 为什么基于矢量的图像文件包含损坏的字符?
我使用的是OSX 10.8.2,使用的是Python 2.7.3和matplotlib 1.1.1。当我将绘图导出为基于位图的格式(如JPEG或PNG)时,百分比符号将正确呈现,如下所示: 但是,当我将它们导出为基于矢量的格式(如PDF或PS)时,我得到以下结果: 我还没有测试所有字符,但可能会出现其他渲染错误。我选择哪个后端并不重要,例如,Python 为什么基于矢量的图像文件包含损坏的字符?,python,matplotlib,vector-graphics,Python,Matplotlib,Vector Graphics,我使用的是OSX 10.8.2,使用的是Python 2.7.3和matplotlib 1.1.1。当我将绘图导出为基于位图的格式(如JPEG或PNG)时,百分比符号将正确呈现,如下所示: 但是,当我将它们导出为基于矢量的格式(如PDF或PS)时,我得到以下结果: 我还没有测试所有字符,但可能会出现其他渲染错误。我选择哪个后端并不重要,例如,PDF,我总是使用基于向量的文件格式获得这种格式错误的字符。我使用matplotlib的标准字体设置,也就是说,这里没有自定义 你知道为什么会这样吗?好
PDF
,我总是使用基于向量的文件格式获得这种格式错误的字符。我使用matplotlib的标准字体设置,也就是说,这里没有自定义
你知道为什么会这样吗?好的,这次我可以自己回答我的问题。在设置文件
matplotlibrc
中,我必须将设置pdf.fonttype
和ps.fonttype
从代表输出类型3的标准设置3
更改为代表TrueType的42
。我不是字体专家,但matplotlib使用的标准字体似乎是TrueType字体。因此,必须设置正确的字体类型
在Python中:
import matplotlib as mpl
mpl.rcParams['pdf.fonttype']=42
使用字体类型3(表示PDF或PS的本机字体格式)时,字体将被子集。matplotlib 1.2之前的某些字体的字体子集代码中存在错误
因此,虽然这是一个有效的解决方法,但它会使文件更大。如果可以,最好升级matplotlib。您确定渲染器中没有错误吗?您尝试过其他字体吗?其他角色?@IgnacioVazquez Abrams不,在我所有可以打开PDF文件的应用程序中都是这样。你尝试过SVG作为输出格式吗?@AlexReynolds刚刚回答了我的问题。你是一个摇滚明星。谢谢
mpl.rcParams['pdf.fonttype']=42
为我修复了它。