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環境,即可正常導入.
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。
推薦閱讀:
- matplotlib相關系統目錄獲取方式小結
- Python特效之文字成像方法詳解
- termux中matplotlib無法顯示中文問題的解決方法
- numpy的squeeze函數使用方法
- Python openpyxl 無法保存文件的解決方案