Windowsにおけるノードの日本語ラベルの使用

以降の話でのDOTファイルの文字エンコードはUTF-8になっていることが前提。

linux*1でやっている分には日本語でも全然問題ないのだが、

success1.gv (UTF-8)
digraph{
  rankdir = LR;
  イナダ -> ハマチ ->;
}

のようなDOTをWindows上のdotコマンドで画像にすると、

$ dot -Tpng -osuccess1.png success1.gv


見事に文字が化ける。
Windowsでのデフォルトのフォントは日本語に対応していないようなので、
日本語フォントを指定する必要がある。
ノードのラベルのフォントならノードのfontname属性で指定する。
問題はフォント名であるが、例えば"MS P明朝"のようなよくある名前では駄目だった。
Graphvizと同じフォント周りのライブラリを使用しているInkscapeを手元の環境にインストールしていたので、
そのフォント設定のダイアログを開いて*2表示されるフォント名で指定してみる。

success2.gv (UTF-8)
digraph{
  rankdir = LR;
  Node [fontname="MS PMincho"];
  イナダ -> ハマチ ->;
}
$ dot -Tpng -osuccess2.png success2.gv


うまく表示できた。
DOTファイル中でフォントを明示する代わりにdotコマンドのオプションでもフォントを指定できる。

$ dot -Nfontname="MS Gothic" -Tpng -osuccess1g.png success1.gv

$ dot -Nfontname="Monospace" -Tpng -osuccess1m.png success1.gv


この方法でもうまくいった。

*1:手元のディストリビューションはUbuntu

*2:Shift+Ctrl+T