【问题标题】:Why do vector-based image files contain damaged characters?为什么基于矢量的图像文件包含损坏的字符?
【发布时间】:2013-01-12 17:04:57
【问题描述】:

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

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

我没有测试所有字符,但可能会出现其他渲染错误。我选择哪个后端都没有关系,例如PDF,我总是使用基于矢量的文件格式来获取这个格式错误的字符。我使用matplotlib的标准字体设置,也就是这里没有自定义。

你知道为什么会这样吗?

【问题讨论】:

  • 你确定这不是渲染器的错误吗?
  • 你试过其他字体吗?其他角色?
  • @IgnacioVazquez-Abrams 不,在我所有可以打开 PDF 文件的应用程序中看起来都是这样。
  • 您尝试过将 SVG 作为输出格式吗?
  • @AlexReynolds 自己回答了我的问题。

标签: python matplotlib vector-graphics


【解决方案1】:

好的,这次我可以自己回答我的问题了。在设置文件matplotlibrc 中,我必须将设置pdf.fonttypeps.fonttype 从代表输出类型3 的标准设置3 更改为代表42 TrueType。我不是字体专家,但似乎 matplotlib 使用的标准字体是 TrueType 字体。因此,必须设置正确的字体类型。

在 Python 中:

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

【讨论】:

  • 你是个摇滚明星。谢谢。 mpl.rcParams['pdf.fonttype']=42 为我修好了。
【解决方案2】:

当使用字体类型 3(意味着 PDF 或 PS 的本机字体格式)时,字体会被子集化。在 matplotlib 1.2 之前的 some 字体的字体子集代码中存在错误。

因此,虽然这是一个有效的解决方法,但它会使文件变得更大。如果可以的话,最好升级 matplotlib。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多