WOFF 2.0 Evaluation ReportとBrotli
いつだったかにWOFF2のことを書いた。
タイトルかたいな!
その後どうなったのかなと思いつつもめんどくて調べてなかったんだけど、1月末にWOFF 2.0 Evaluation Reportというのが出た。WOFF2で検討されている圧縮の仕組みなどについて調べたレポートとのこと。
- Transition request: First public working draft of WOFF 2.0 Evaluation Report
- WOFF 2.0 Evaluation Report
以下、2013年夏くらいからの話題なので新しくないよ。
LZMAはやめたらしい
GoogleによってWOFF 2.0の元になる仕組みが提案された当初、圧縮アルゴリズムはLZMAを使うことになっていた。ただ、高圧縮率の犠牲としてえらい圧縮時間とメモリ使用量が必要ということがわかったので、その採用はなくなったとのこと。ある計測結果によると圧縮にかかる時間がgzipの5倍以上、展開時のメモリ使用量が2倍くらいだったそう。
Webフォントはサブセットを配布しないのなら一度圧縮するだけで済むけれど、展開時のメモリ消費量は気になる。とくに世の中がモバイルモバイルしている中でこれはだめだったんだろう。
ほかにも、LZMAの仕様がない(リファレンスコードをリバースエンジニアリングするしかない)、IP関連でロイヤリティフリーにできる保証がないということも問題になったよう。仕様があるって大事なんだね……
Brotli登場
代わりとなったのが、Google内部でDEFLATEをベースにしたBrotliというもの。昨年Googleから出たZopfliやWebP Loslessを作った人たちによるものらしい。
- WOFF2: Compression update
- (PDF) Brotli Compression Algorithm motivation
- font-compression-reference - Reference code for new font compression(Brotliのレポジトリ)
- brotlispec.txt(仕様)
Evaluation ReportによるとLZMAにはやや劣るけれど、フットプリントは半分近くになるらしい。それでもWOFF1と比べて大きいけれどトレードオフなのかと。
実装もChromeにすでにフラグ付きで入ってるらしい。知らなんだ。
今後はBrotliの標準化(IETF?)と平行してWOFF2を標準化するらしい。いつくらいになるのでしょうねえ。
余談:Webでの利用は?
Mozillaのニュースグループでも取り上げられていて、そこではフォントだけではなくて、HTTPとかWeb全般に使えるのではというコメントつきで紹介されている。
Introducing Brotli - an alternative to LZMA - Google Groups
とくに議論が発展してないけれど。新しいものを導入するとなるとだいたい切ない話になるので誰も入ってこないのだろうか。