読者です 読者をやめる 読者になる 読者になる

Windowsでblockdaigに日本語を使うと、上部が少し欠ける

blockdiag

現象

フォントの問題なのか、Windowsでblockdiagで日本語を使うと、上部が少し欠ける。
試したフォントは、メイリオ、MS明朝、MSゴシック

試したの図は、日本語の利用で書かれている以下。

blockdiag admin {
   // Set M17N text using label property.
   A [label = "起"];
   B [label = "承"];
   C [label = "転"];
   D [label = "結"];

   A -> B -> C -> D;

   // Use M17N text directly (need to quote).
   春 -> 夏 -> 秋 -> 冬;

   // Use M17N text including symbol characters (need to quote).
   "春は 曙" -> "夏 = 夜" -> "秋.夕暮れ" -> "冬 & つとめて";
}
メイリオ
[C:\workspace\blockdiag_Sandbox\blockdiag]blockdiag -f c:\Windows\Fonts\meiryo.ttc Japanese.diag Japanese.diag -o Japanese_meiryo.png

MS明朝
[C:\workspace\blockdiag_Sandbox\blockdiag]blockdiag -f c:\Windows\Fonts\msmincho.ttc  Japanese.diag Japanese.diag -o Japanese_msmincho.png

MSゴシック
[C:\workspace\blockdiag_Sandbox\blockdiag]blockdiag -f c:\Windows\Fonts\msgothic.ttc   Japanese.diag Japanese.diag -o Japanese_msgothic.png



対処1

IPAのフォントをダウンロードして使う

1. IPAのフォントをダウンロード

http://www.forest.impress.co.jp/lib/offc/print/font/ipafont.html
IPAフォント 4書体パック

2.解凍
3.以下に解答したフォントをコピー
   C:\windows\fonts
実行結果
  • IPAゴシック
[C:\workspace\blockdiag_Sandbox\blockdiag]blockdiag -f c:\Windows\Fonts\ipag.ttf   Japanese.diag Japanese.diag -o Japanese_ipag.png

  • IPA Pゴシック
[C:\workspace\blockdiag_Sandbox\blockdiag]blockdiag -f c:\Windows\Fonts\ipagp.ttf   Japanese.diag Japanese.diag -o Japanese_ipagp.png

[C:\workspace\blockdiag_Sandbox\blockdiag]blockdiag -f c:\Windows\Fonts\ipam.ttf   Japanese.diag Japanese.diag -o Japanese_ipam.png

[C:\workspace\blockdiag_Sandbox\blockdiag]blockdiag -f c:\Windows\Fonts\ipamp.ttf   Japanese.diag Japanese.diag -o Japanese_ipamp.png


対処2

SVGで出力すれば、メイリオ、MSゴシック、MS明朝でも欠けずに出力される。

  [C:\workspace\blockdiag_Sandbox\blockdiag]blockdiag -f c:\Windows\Fonts\meiryo.ttc  -Tsvg  Japanese.diag Japanese.diag -o Japanese_meiryo.sgv

SVGって、はてなダイアリに貼れないのか。



IPAフォントでも画数の多い漢字は読みにく、SVGなら拡大してもきれいないので、SVGの方がいいのかもと思ったのだが、
SVGSVGでハマる要素があるようだ。
(10日目/番外編) SVG とフォントについて愚痴る。
とりあえずは、IPAフォントをpngで試してみよう。

原因


blockdiagじゃなくて、blockdiagが使ってるライブラリのバグか。
このパッチを適用するには、自前でビルドしないとダメっぽいな。


環境

  • OS
  • Python
    • Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win32
  • Blockdiag
    • blockdiag-script.py 1.1.8
広告を非表示にする