python matplotlib畫圖產(chǎn)生的Type 3 fonts字體不兼容
更改措施:
使用Type 42字體來(lái)生成PostScript 和PDF 文件。
import matplotlib
matplotlib.rcParams['pdf.fonttype'] = 42
matplotlib.rcParams['ps.fonttype'] = 42
補(bǔ)充:Type 3字體的解決辦法
這個(gè)問(wèn)題困擾了我一天了,成功解決,這種感覺(jué)太爽了。
提交MNRAS的pdf文件可能會(huì)因?yàn)楹衪ype3字體而無(wú)法在線生成proof。
如遇此種情況,可先如下確認(rèn)
看輸出是否含有type3字體
如果是,則先考慮官方的建議,在文件頭部加入:
\usepackage[T1]{fontenc}
\usepackage{aecompl}
重新編譯
問(wèn)題依舊的話,應(yīng)該是插圖中含有type3字體。比如用python畫圖,默認(rèn)的似乎就是輸出成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)
重新畫圖
另一種解決方式是,將問(wèn)題圖片(如果是eps格式)用eps2eps轉(zhuǎn)換一遍。但轉(zhuǎn)換之后的圖片中的字體被像素化了,放大時(shí)不清晰,不推薦。
還有一個(gè)方法效果好一些:先轉(zhuǎn)成pdf再轉(zhuǎn)回eps, 比如對(duì)fig.eps,
epstopdf fig.eps fig.pdf
pdftops -eps -r 400 fig.pdf fig.eps
補(bǔ)充:python3 PIL使用font字體錯(cuò)誤:OSError: cannot open resource問(wèn)題解決
錯(cuò)誤日志
>>> 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
解決方法
缺少對(duì)應(yīng)字體文件: NotoSansCJK-Regular.ttc
在網(wǎng)上找到對(duì)應(yīng)的font文件
以我的Ubuntu 16為例, 字體文件在"/usr/share/fonts/truetype"中,
因此,把下載到的ttc文件放到 /usr/share/fonts/truetype 文件夾當(dāng)中.
重新啟動(dòng)python環(huán)境,即可正常導(dǎo)入.
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
您可能感興趣的文章:- 解決Python3用PIL的ImageFont輸出中文亂碼的問(wèn)題
- 解決python中畫圖時(shí)x,y軸名稱出現(xiàn)中文亂碼的問(wèn)題
- Django生成PDF文檔顯示在網(wǎng)頁(yè)上以及解決PDF中文顯示亂碼的問(wèn)題