Windows Metafile
仕様と特許
オリジナルの16bit WMFファイル形式は1992年のWindows 3.1 SDKの4巻に定義された。しかし仕様の一部は詳細があいまいな部分があった。これらのマニュアルは書籍として買い求めることができる。EULAや特別なライセンスの制限などは課されていない。（ソフトウエアの一部であり....という一般的な文言のみがあった）
時が経つにつれてこの歴史的な仕様書の存在は忘れられ、WMFファイルに対するリバースエンジニアリングが行われるようになったが、これには困難が伴い、正確さも欠いていた。
2006年9月にMicrosoftは再度WMFファイル形式の仕様をMicrosoft Open Specification Promiseの一環として公開し、これを実装する者に対して特許権を行使しないことを約束した。
派生物
1993年に32bit版のWin32/GDIによるEnhanced Metafile (EMF) が登場し、これには数点のコマンドの拡張が含まれた。EMFはプリンタドライバーとやりとりするグラフィックス言語としても利用された。Microsoftは、WMFはほぼ使用されず、拡張フォーマット (EMF) で代替することを推奨している。
Windows XPの公開に合わせてEnhanced Metafile Format Plus Extensions (EMF+) フォーマットが登場した。これにはGDI+ APIコールのシリアライズ機能が WMF/EMF と同様の方法で追加されている。
他に圧縮された形式のCompressed Windows Metafile (WMZ) とCompressed Enhanced Windows Metafile (EMZ) も存在する。
EMZはEMFファイル形式をgzip圧縮したものである。
SetAbortProcの脆弱性問題
2005年11月、"SetAbortProc" GDI関数に脆弱性が発見された。この関数は印刷のスプーリングをキャンセルしたときのエラー処理ハンドラを登録するもので、ユーザーの許可なしで実行できる任意のコードをWMFファイルに追加可能にしている。
マイクロソフトは公式のパッチ (MS06-001) を2006年1月5日にリリースし、詳細は "マイクロソフト セキュリティ アドバイザリ 912840 Graphics Rendering Engine の脆弱性によりコードが実行される可能性がある" (912919)で見ることができる。
古いバージョンのWindowsについてはパッチを提供していない。
セキュリティ専門家のスティーブン・ギブソンは、この脆弱性がマイクロソフトが故意にWMFに仕込んだバックドアであると主張した。しかし、他のセキュリティ専門家はこれに異を唱えており、バックドアと呼ぶにはマイクロソフトが実際にこの脆弱性を利用して秘密裏にコンピュータにアクセスしたことを実証しなければならないとしている。マイクロソフトの従業員であるMark Russinovichは、Gibsonの分析はいくつかの誤解に基づいていると説明している。
代替実装
WMFフォーマットはWindowsのGDIで実行されることで画像を再生する。しかし、WMF形式のファイルにはその画像を構成するGDIのグラフィックプリミティブの定義も含まれているので、他のライブラリを使ってWMFのバイナリファイルを描画させたり、他の画像フォーマットに変換できる。
一例として、BatikライブラリはWMFファイルを描画したり、SVGに変換したりできる。FreeHEP JavaライブラリのVector Graphicsパッケージでは、Java 2Dで描画されたものをEMFファイルとして保存できる。InkscapeとXnViewもWMFとEMF形式でのエクスポートができる。