gnuplotでCould not find/open font when opening font “フォント名” と言われる時の対処法
ターミナル上で表示するならうまくできるのだけれども、png出力しようとすると Could not find/open font when opening font alial とエラーが出てうまく行かなかったのでメモ
元々は set tics font “フォント名,フォントサイズ” でフォントとフォントサイズをしていました。
これができないとフォントサイズを大きくできないので、発表用資料を作っているときは死活問題である。
手順
今回使うフォントのインストールディレクトリを確認する。今回は
を使用することを想定
実行時に指定する場合
まず端末でフォントがインストールされているディレクトリを指定する
1 |
export GDFONTPATH=/usr/share/fonts/alias/TrueType/ |
次にgnuplotで
1 |
set terminal png font "Gothic-Medium.ttf,20" |
20はフォントサイズなので適宜変える。
デフォルトフォントを指定する場合
1 |
export GNUPLOT_DEFAULT_GDFONT=/usr/share/fonts/alias/TrueType/Gothic-Medium.ttf |
後はいつもどおり
1 2 |
set output "hoge.png" plot "hoge.dat" |
とでもしてやればOK
注意点
http://takeno.iee.niit.ac.jp/~shige/unix/gnuplot/gpinfo-2005.htmlによると
gnuplot のフォント名には 64 文字まで、という暗黙の制限があります (X11 multi byte patch を作ったときに知りました) ので、 ‘/usr/local/…’ のように長いパス名のフォントを指定すると 失敗することがあります (gnuplot が core dump することもあるようです)。 回避策としては環境変数 GDFONTPATH にそのパス名を指定し、 フォント名はファイル名のみを記述することです。 GDFONTPATH は gnuplot の機能ではなく GD ライブラリの機能で、 そちらに長くパスを指定しても問題はありません。 しかし GNUPLOT_DEFAULT_GDFONT は gnuplot の機能なので やはり 64 文字より長いフォント名を書くことはできません。
とのことなのでフォント名が長くなる場合には注意が必要です。
※コメントより:gnuplot-4.2.6 以降は解消されている模様
gnuplot の gd ドライバでのフォント名に 64 という制限があったのは実はかなり前 (gnuplot-4.2.3 以前) のことで、gnuplot-4.2.6 以降は解消されています。
この問題が起こる原因は、むしろデフォルトのフォント設定である arial が開けない、ということです。これは、使っている gdlib にもよるのですが (fontconfig 対応かとか)、例えば arial の代わりのデフォルトフォントを環境変数GNUPLOT_DEFAULT_GDFONT に設定すれば解消します。
しかし、GDFONTPATH を設定して、明示的にフォント名を指定することはもちろん間違っておらず、それはそれで正しい対応だと思います。