Python matplotlibで日本語フォントを使う

 結構手間取った。ソースコード内で、

font = {'family' : 'ibaraji'}
matplotlib.rc('font', **font)

 とフォントを指定すればよいのだが、

  ※ ibarajiはイバラ字というフォント。
    fub工房(fub-koubou.work/)からダウンロードした。
    matplotlib.rc()を使っているので、import matplotlibの宣言も忘れずに。

 matplotlibで.ttcフォントは使えない(未対応)。
 .ttfならば使える。

  ※ .ttfはTrueTypeフォントで、標準。
    .ttcはTrueTypeコレクション[フォント]で、複数のフォントが格納されている。

 ところがWindowsだと.ttcばかり。

 追) matplotlib 3.1.0から.ttcフォントが使えるようになった、とのこと。

 .ttfはHG正楷書体、HG丸ゴシック、……。自由に使えるわけではない。

 IPAex明朝、IPAexゴシックおよびIPAmj明朝フォントが.ttfで公開されているので、

 情報処理推進機構 IPA(www.ipa.go.jp/
  IPAexフォント/IPAフォント(ipafont.ipa.go.jp/
  IPAmj明朝フォント(mojikiban.ipa.go.jp/

からダウンロードして(自由に)使うことができる。

 フォントのファイル名は分かっても’family’に指定する英名が表示されないので困ったが、

 (ユーザー名)/.matplotlibフォルダ
 キャッシュファイル fontList.cache(やfontList.py3k.cache)から

  •  HG正楷書体 ⇒ HGSeikaishotaiPRO
  •  HG丸ゴシック ⇒ HGMaruGothicMPRO
  •  IPAex明朝 ⇒ IPAexMincho 
  •  IPAexゴシック ⇒ IPAexGothic 
  •  IPAmj明朝 ⇒ IPAmjMincho

 など判明。

 新しいフォントをインストールした後は(WindowsであればWindows/Fontsフォルダの中)、
 .matplotlibフォルダのfontList.cache(やfontList.py3k.cache)
をいったん消してからmatplotlibを使うと上記キャッシュファイルが自動的に作られる。
 消しておかないと新しいフォントが読み込まれない。

 別の方法として既存の.ttcを.ttfへ変える(「分解」する)こともできる。
 例えば、DF行書体やメイリオなどは.ttcで、そのままだとmatplotlibで使えないが、

 transfonter(transfonter.org/) - Unpack TTC

というツールを使えば.ttcファイルを複数の.ttfファイルに「分解」できる。

 試しに「分解」された.ttfファイルをWindows/Fontsフォルダへインストールして表示させてみた。
 特に問題なく表示された。

 ただ、DF行書体もメイリオも自由に使えるわけではないようで、

  ※ HGがつくフォントはリコー社製。
    DFがつくフォントはダイナコムウェア社製ダイナフォント。

 個人のサイトやブログで利用するぐらいならば大丈夫のようだが、ちょっと曖昧。

 電子書籍の表紙に使う場合は、完全に商用利用。

 フォントは自由に使えるかどうか、事前にチェックしておくことが重要。

(追記)

 WinPythonの場合、上記方法でうまくいかなかった。
も同じ。

 matplotlibrc(設定ファイル)の###FONTの下に
 font.family : IPAexGothic
と記しておけば日本語表示になる。
 IPAexGothicの部分は使いたいフォント名。

 ただし、matplotlibrc(設定ファイル)は、
 (ユーザー名)/.matplotlibフォルダの中のファイルではなく、
 WinPythonフォルダの中のファイル。
  ……/python-○○○/Lib/site-packages/matplotlib/mpl-dataの中。

 Linuxの場合も同じ。

ICT
スポンサーリンク
ふシゼン
タイトルとURLをコピーしました