Tuesday 24 January 2012

SVG on iPhone

Web には jpg を使ってきたんですが、bitmap もどうかと思って SVG へ。
ほとんどの図は OmniGraffle で、それから SVG を吐けば良いのですが、
一部、Diagram! 。
一部、idraw。
一部、Diagram! で書いて、ソースはない。
ということがわかりました。
OmniGraffle から commnad line で、svg に変換したい時は、こういう AppleScript が使えるようです。
http://www.ie.u-ryukyu.ac.jp/~kono/pub/software/omni-convert.applescript
osascript omni-convert.applescript hoge.gralle hoge.svg
とかします。
* * *
Diagram! は OmniGraffle の前身です。OmniGraffle で読めるんだけど、日本語が化ける。Diagram! は EUC だったが、OmniGraffle はSJISらしい。どっちも、「PostScript の RichText 」というよくわからない内部表現を使ってます。変換スクリプトは簡単に書けた。スクリプトは一応 Web には上げたが誰も使わんだろう。壊す可能性があるので、バックアップしてからかけてね。
http://www.ie.u-ryukyu.ac.jp/~kono/pub/software/fix-diagram2.pl
idraw は、こんなこともあろうかと、昔、idraw2graffle.pl ってのを書いた。昔の Diagram!/OmniGraffle は idraw に近いシンプルなものだったのに。今のは、ちょっとなぁ。
idraw は InterViews という C++ のライブラリで書かれています。Design Patterns の例題にも出てくる由緒正しいライブラリなんですが、死んでしまいました。C++ のversion upについて行けなかったらしいです。一度、kdraw の話を聞いた時にコンパイルしてみたのだが、絶対無理です。ムリムリ。C++ のライブラリの命なんて儚いね。
ソースがないのは、どこにいったのかなぁ。まぁ、新しく書く方が早いとは思うけど。たぶん、昔、Disk をすっ飛ばした時に消したんじゃないかな。それで、Web から .gif だけ救いだしたとか。ありそうな話。
* * *
で、svg を html に読み込む時には、
<pre>
<object data=\"$name.svg\" type=\"image/svg+xml\" width=\"100%\" height=\"600\"></object>
</pre>
とか、やるようです。なんだけど、width, height を書かないと、Mac 上では適当に巨大に表示されるが、iPhone では巨大なものの一部しか表示されない。width と height を100%にすると、iPhone では巨大な空白が空く。なので、600 ぐらいが良いらしい。
せっかく、図をベクトルにしても、width/height をpixelで指定するのでは意味ないと思うんですが。alt もないしな。
正しいやり方があるなら、教えてください。
* * *
で、svg がある図は、gif/jpg/eps 消して… とか、やってたら、なんか時間が経った。そろそろ寝よう。
* * *
使用前
http://www.ie.u-ryukyu.ac.jp/~kono/lecture/1997/compiler/97-10-16/lecture.html
使用後
http://www.ie.u-ryukyu.ac.jp/~kono/lecture/compiler/c2/lecture.html
あんまり変わらんな。

No comments: