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