血統の森+はてな

旧はてなダイアリーの自動インポートによるアーカイブです。

SVGの仕様と実装まとめメモ

IE9 previewSVGに一部対応したことですし、ここらで頭の整理でも…とおもったらSVGの仕様なんてまじめに読んだことないわけで。

仕様

Scalable Vector Graphics (SVG) 1.0 Specification - W3C Recommendation 04 September 2001
http://www.w3.org/TR/2001/REC-SVG-20010904/
Scalable Vector Graphics (SVG) 1.1 仕様 - W3C 勧告 2003年 1月 14日
http://www.hcn.zaq.ne.jp/___/REC-SVG11-20030114/index.html
Mobile SVG プロファイル:SVG Tiny と SVG Basic - W3C 勧告 2003年 1月 14日
http://www.hcn.zaq.ne.jp/___/REC-SVG11-20030114/mobile-profile/index.html
Scalable Vector Graphics (SVG) Tiny 1.2 仕様 - W3C 勧告 2008 年 12 月 22 日
http://www.hcn.zaq.ne.jp/___/SVGTiny12/index.html

Tinyは携帯電話向け、BasicはPDA向けのプロファイル。TinyとBasicとFullの関係は、Tiny⊂Basic⊂Full。
SVG 1.2 Fullについては、当初1.2Tiny勧告後に各モジュールを拡張して勧告する予定だったが、携帯機器とデスクトップに対するニーズの差と、2.0を勧告するまでのプロセスを簡略化する目的で方針変更されたため、仕様策定は中止された。SVG 2.0は広く実装済みのモジュールを取り込み単一仕様として策定される見込み。*1

なお、SVG 1.1 Full 2nd Editionが現在策定中。

Scalable Vector Graphics (SVG) 1.1 Specification (Second Edition) - W3C Editor’s Draft 12 April 2010
http://dev.w3.org/SVG/profiles/1.1F2/publish/

実装

  • http://validator.w3.org/checkにはSVG Tiny 1.2が用意されてない。どうやって妥当なXMLかどうか判断しろと。
  • IE9 previewSVGが不完全ながらネイティブサポートされるようになった。SVG 1.1 Full 2nd Editionのサポートを目指すようだ。*2
  • Firefoxは1.5からサポートしている。SVG 1.1 Fullを目標にしている*3。実装状況はSVG in Firefox*4にある。
  • Operaは8.0からサポート。現在は一部を除いてSVG Tiny 1.2とSVG 1.1 Fullをサポート*5
  • WebkitSafari 3.0からSVG 1.1 Fullを不完全ながらサポート。実装状況はSVG in WebKit*6

実装状況を4ブラウザで見てみる。

上までのは全部前口上。実際に目で見てみるのがてっとり早いと思ったので、W3CSVGテストスイート*7を用いていろいろ試してみたり。

テスト方法としては、SVG 1.1 Fullを全部見る…のは芸がないと思ったので、今回はSVG 1.1 TinyとSVG 1.2 Tinyとの両方に存在するテスト項目を抽出した、スーパーサブセット(140項目、うち後述の1項目は除外)をテスト対象とした。

  • テストに使ったテストスイートはSVG 1.1 Full test suite*8とした。
  • 動作ok、一部動作buggy、動作せずerrorとした。
  • フォントの大きさ、種類など、筆者の主観が入り交じった評価になっています(いいのかそれで)。
  • struct-cond-03-tについては評価しません。

結果をグラフに示すとこんな感じ。評価した表はid:momdo:20100421:p2に示します。

IE9pre、Firefoxはanimation方面が全滅。Minefieldはやや改善されるも、本当に1.1 Fullを実装する気があるんですか?という結果。今回のテストは1.1 Tinyのサブセットと言うことを考慮してもこれはひどい。え、Wikiに書いてることが間違ってるって?
その反面、previewといいつつある程度部分実装してきたIE9は素直に誉めたい。OperaWebkitはかなり実装できている、といえるだろう。

(2010-05-01追記)もっと詳しくやってる人がやっぱりいた。Welcome To codedread。結果の比較はしてないけど、傾向は似ていると思う。

テストに使ったブラウザ