Windows Metafile
| 拡張子 | .wmf, .emf, .wmz, .emz |
|---|---|
| 開発者 | マイクロソフト |
| 種別 | 画像ファイルフォーマット |
Windows Metafile (WMF) は Microsoft Windows 上の画像ファイルフォーマットの1つであり、1990年代初期に設計された。しかし、World Wide Web の隆盛と共によく使われるようになっていった GIF や JPEG に比較するとよく使われるとは言い難い。ベクトル画像フォーマットであり、ビットマップ画像を内部に含むことが可能となっている。基本的に WMF ファイルは Windows のグラフィック層である GDI が実行すべき関数呼び出しのリストであって、それによって画像が再生される。GDI 関数の中には例外処理のためにコールバック関数のポインタを引数にとるものがあるため、WMF ファイルには実行可能コードが含まれることがある。その設計手法はUNIXにおけるPostScriptに似ている。
Windows 3.0 で最初に導入された WMF は16ビット形式であった。後に追加された 32ビット版ではコマンドが追加されており、Enhanced Metafile(EMF)と呼ばれる。EMF はプリンタドライバのグラフィックス言語としても使われている。
Windows Metafile の圧縮版として Compressed Windows Metafile (WMZ) と Compressed Windows Enhanced Metafile (EMZ) もある[1]。
目次 |
[編集] SetAbortProc の脆弱性問題
2005年11月、"SetAbortProc" GDI 関数に脆弱性が発見された。この関数は印刷のスプーリングをキャンセルしたときのエラー処理ハンドラを登録するもので、ユーザーの許可なしで実行できる任意のコードを WMF ファイルに追加可能にしている。Stive Gibson は、この脆弱性がマイクロソフトが故意に WMF に仕込んだバックドアが原因であると主張した。しかし、他のセキュリティ専門家はこれに異を唱えており、バックドアと呼ぶにはマイクロソフトが実際にこの脆弱性を利用して秘密裏にコンピュータにアクセスしたことを実証しなければならないとしている[2]。
マイクロソフトは公式のパッチを2006年1月5日にリリースしたが、古いバージョンの Windows についてはパッチを提供していない。
[編集] 代替実装
WMF フォーマットは Windows の GDI で実行されることで画像を再生する。しかし、WMF 形式のファイルにはその画像で使われている GDI のグラフィックプリミティブの定義も含まれているので、他のライブラリを使って描画させたり、他の画像フォーマットに変換できる。
例えば、Batikライブラリは WMF ファイルを描画したり、SVG に変換したりできる。FreeHEP Java ライブラリの Vector Graphics パッケージでは、Java 2D で描画されたものを EMF ファイルとして保存できる。
[編集] 関連項目
[編集] 外部リンク
[編集] チュートリアルなど
- Windows GDI
- File Format Summary at fileformat.info
- WMF operand documentation
- FAQ about Windows Metafile
[編集] アプリケーション
[編集] ライブラリ
- Batik Java library : WMF to SVG transcoder package WMF メタファイルから SVG への変換が可能
- FreeHEP Java library : Vector graphics package EMF メタファイルから SVG への変換および Java2D から EMF への変換をサポート
- libWMF, WMF メタファイルを読み込むライブラリ。表示や SVG への変換が可能
- libEMF, POSIXシステム上でのベクター画像ファイルを生成するための描画ツールキットを提供する C/C++ ライブラリ
- wmf2svg, WMF メタファイルから SVG への変換を実装した Java 用クラス