matplotlibでType1のフォントを使う方法

August 19, 2020 Yuuki Nishiyama 0 Comments

matplotlibで作ったグラフ(PDF)の文字が埋め込まれてないので、埋め込む or フォントを変更して欲しいと出版社から連絡があった。Type3 フォントやTrue Type Fonts など見慣れない用語が出てきたので対策をメモ。

出版社から届いたメールは以下の通り。今回の論文は、LaTeXで執筆しており、その中にmatplotlibで作った図(PDF)を使っている。どうやらその図に使っている文字にType3のフォントが使われており、それが図に埋め込まれていないらしい。

Figures 2, 3, 4 and 5 all have type 3 fonts that will not embed as is.  Please open your original figure file and attempt to embed or convert to true type fonts before linking figures to pdf.


Type 3 フォント等の説明は以下のリンクで説明されていた。

https://review-knowledge-ja.readthedocs.io/ja/latest/printing/submit.html

http://www.jsiam.org/modules/xfsection/article.php?articleid=57

Adobe Acrobat Pro でPDFを開いて、File -> Properties を選択すると、フォントの状態を調べることができる。確認するとたしかに、Font3のフォントが使われており、フォントはPDFファイルに埋め込まれて無さそう。

以下のサイトに対策が記述されていた。以下のコードを使いすれば、Type1を使った図を作成できる。

https://stackoverrun.com/ja/q/3533343

import matplotlib.pyplot as plt

plt.rcParams['text.usetex'] = True 
plt.rcParams['text.latex.preamble'] = [r'\usepackage{sansmath}', r'\sansmath'] 
plt.rcParams['font.family'] = 'sans-serif'
plt.rcParams['font.sans-serif'] = 'Helvetica'


確認のため先ほどと同様にAcrobat Proでフォントを確認すると、Font1になっていることが確認できた。

注意:図を作成する時に、キャプション等に「%」などの文字が特殊文字が使われていると、コマンド認識されて表示が崩れるので、バックスラッシュ(「\%」)を使ってエスケープする必要がある。

Leave a Reply:

Your email address will not be published. Required fields are marked *