Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么基于矢量的图像文件包含损坏的字符?_Python_Matplotlib_Vector Graphics - Fatal编程技术网

Python 为什么基于矢量的图像文件包含损坏的字符?

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的标准字体设置,也就是说,这里没有自定义 你知道为什么会这样吗?好

我使用的是OSX 10.8.2,使用的是Python 2.7.3和matplotlib 1.1.1。当我将绘图导出为基于位图的格式(如JPEG或PNG)时,百分比符号将正确呈现,如下所示:

但是,当我将它们导出为基于矢量的格式(如PDF或PS)时,我得到以下结果:

我还没有测试所有字符,但可能会出现其他渲染错误。我选择哪个后端并不重要,例如,
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
为我修复了它。