pdf论文中python画的图Type 3 fonts字体不兼容的解决方案

 更新时间:2021年04月24日 14:06:47   作者:CrazyBlog  
这篇文章主要介绍了pdf论文中python画的图Type 3 fonts字体不兼容的解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

python matplotlib画图产生的Type 3 fonts字体不兼容

更改措施:

使用Type 42字体来生成PostScript 和PDF 文件。

import matplotlib
matplotlib.rcParams['pdf.fonttype'] = 42
matplotlib.rcParams['ps.fonttype'] = 42

补充:Type 3字体的解决办法

这个问题困扰了我一天了,成功解决,这种感觉太爽了。

提交MNRAS的pdf文件可能会因为含有type3字体而无法在线生成proof。

如遇此种情况,可先如下确认

pdffonts paper.pdf

看输出是否含有type3字体

如果是,则先考虑官方的建议,在文件头部加入:

\usepackage[T1]{fontenc}
\usepackage{aecompl}

重新编译

问题依旧的话,应该是插图中含有type3字体。比如用python画图,默认的似乎就是输出成type3. 修改

~/.matplotlib/matplotlibrc

加入(或者修改)如下两行

ps.fonttype : 42 # Output Type 3 (Type3) or Type 42 (TrueType)
pdf.fonttype : 42 # Output Type 3 (Type3) or Type 42 (TrueType)

重新画图

另一种解决方式是,将问题图片(如果是eps格式)用eps2eps转换一遍。但转换之后的图片中的字体被像素化了,放大时不清晰,不推荐。

还有一个方法效果好一些:先转成pdf再转回eps, 比如对fig.eps,

epstopdf fig.eps fig.pdf
pdftops -eps -r 400 fig.pdf fig.eps

补充:python3 PIL使用font字体错误:OSError: cannot open resource问题解决

错误日志

>>> from PIL import ImageFont
>>> ImageFont.truetype
<function truetype at 0x0000021178B82B70>
>>> ImageFont.truetype("NotoSansCJK-Regular.ttc", 30)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "D:\Users\52489\Anaconda3\lib\site-packages\PIL\ImageFont.py", line 261, in truetype
    return FreeTypeFont(font, size, index, encoding, layout_engine)
  File "D:\Users\52489\Anaconda3\lib\site-packages\PIL\ImageFont.py", line 144, in __init__
    self.font = core.getfont(font, size, index, encoding, layout_engine=layout_engine)
OSError: cannot open resource

解决方法

缺少对应字体文件: NotoSansCJK-Regular.ttc

在网上找到对应的font文件

以我的Ubuntu 16为例, 字体文件在"/usr/share/fonts/truetype"中,

因此,把下载到的ttc文件放到 /usr/share/fonts/truetype 文件夹当中.

重新启动python环境,即可正常导入.

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

相关文章

  • Python datetime和unix时间戳之间相互转换的讲解

    Python datetime和unix时间戳之间相互转换的讲解

    今天小编就为大家分享一篇关于Python datetime和unix时间戳之间相互转换的讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-04-04
  • 安装不同版本的tensorflow与models方法实现

    安装不同版本的tensorflow与models方法实现

    这篇文章主要介绍了安装不同版本的tensorflow与models方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • Python 使用folium绘制leaflet地图的实现方法

    Python 使用folium绘制leaflet地图的实现方法

    今天小编就为大家分享一篇Python 使用folium绘制leaflet地图的实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • Python修改游戏内存的方法

    Python修改游戏内存的方法

    本文给大家分享一个通过Python来修改游戏内存的方法,帮助大家更改游戏中的数据,步骤很简单,而且有视频讲解,感兴趣的朋友一起看看吧
    2021-11-11
  • Python执行JS的四种方法

    Python执行JS的四种方法

    本文将详细介绍Python中执行和调用JavaScript的多种方法,包括内置的execjs库、外部库如PyExecJS、使用浏览器引擎和与Node.js的交互,感兴趣的可以了解一下
    2023-11-11
  • python爬取个性签名的方法

    python爬取个性签名的方法

    这篇文章主要为大家详细介绍了python爬取个性签名的方法,具有一定的参考价值,感兴趣的朋友可以参考一下
    2018-06-06
  • 在python 中split()使用多符号分割的例子

    在python 中split()使用多符号分割的例子

    今天小编就为大家分享一篇在python 中split()使用多符号分割的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • python 实现定时任务的四种方式

    python 实现定时任务的四种方式

    这篇文章主要介绍了python 实现定时任务的四种方式,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-04-04
  • 利用Python演示数型数据结构的教程

    利用Python演示数型数据结构的教程

    这篇文章主要介绍了利用Python演示数型数据结构的教程,核心代码其实只有一行(XD),需要的朋友可以参考下
    2015-04-04
  • Python3通过字符串访问和修改局部变量的方法实例

    Python3通过字符串访问和修改局部变量的方法实例

    最近在看python中nonlocal和global的使用,参考网上的大作,写了点自己的心得,下面这篇文章主要给大家介绍了关于Python3通过字符串访问和修改局部变量的相关资料,需要的朋友可以参考下
    2022-04-04

最新评论