Windows Metafile

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索
Windows Metafile
拡張子 .wmf, .emf, .wmz, .emz
開発者 マイクロソフト
種別 画像ファイルフォーマット
テンプレートを表示

Windows MetafileWMF、ウィンドウズ メタファイル)はMicrosoft Windows上の画像ファイルフォーマットの1つであり、1990年代初期に設計された。しかし、World Wide Webの隆盛と共によく使われるようになっていったGIFJPEGに比較するとよく使われるとは言い難い。ベクトル画像フォーマットであり、ビットマップ画像を内部に含むことが可能となっている。基本的に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]

仕様と特許[編集]

オリジナルの16bit WMFファイル形式は1992年のWindows 3.1 SDKの[2]4巻に定義された。しかし仕様の一部は詳細があいまいな部分があった。これらのマニュアルは書籍として買い求めることができる。 時が経つにつれてこの歴史的な仕様の存在は忘れられ、WMFファイルに対するリバースエンジニアリングが行われるようになったが、これには困難が伴い、正確さも欠いていた。 2006年9月にMicrosoftは再度WMFファイル形式の仕様をMicrosoft Open Specification Promiseの一環として公開[3]し、これを実装する者に対して特許権を行使しないことを約束した。

派生物[編集]

1993年に32bit版のWin32/GDIによるEnhanced Metafile (EMF) が登場し、これには数点のコマンドの拡張が含まれた。EMFはプリンタドライバーとやりとりするグラフィック言語としても利用された。MicrosoftはWMFはほぼ使用されず、拡張フォーマット (EMF) がこれに代わると述べた。 Windows XPの公開とともに、EMF+フォーマットが登場した。これにはGDI+ APIに対するコールのシリアライズ機能が追加されている。 他に圧縮された形式のCompressed Windows Metafile (WMZ) とCompressed Enhanced Windows Metafile (EMZ) も存在する。EMZはEMFファイル形式をgzip圧縮したもの[要出典]である。

SetAbortProcの脆弱性問題[編集]

2005年11月、"SetAbortProc" GDI関数に脆弱性が発見された。この関数は印刷のスプーリングをキャンセルしたときのエラー処理ハンドラを登録するもので、ユーザーの許可なしで実行できる任意のコードをWMFファイルに追加可能にしている。Steve Gibsonは、この脆弱性がマイクロソフトが故意にWMFに仕込んだバックドアが原因であると主張した。しかし、他のセキュリティ専門家はこれに異を唱えており、バックドアと呼ぶにはマイクロソフトが実際にこの脆弱性を利用して秘密裏にコンピュータにアクセスしたことを実証しなければならないとしている[4]

マイクロソフトは公式のパッチを2006年1月5日にリリースしたが、古いバージョンのWindowsについてはパッチを提供していない。

代替実装[編集]

WMFフォーマットはWindowsのGDIで実行されることで画像を再生する。しかし、WMF形式のファイルにはその画像で使われているGDIのグラフィックプリミティブの定義も含まれているので、他のライブラリを使って描画させたり、他の画像フォーマットに変換できる。

例えば、BatikライブラリはWMFファイルを描画したり、SVGに変換したりできる。FreeHEP JavaライブラリのVector Graphicsパッケージでは、Java 2Dで描画されたものをEMFファイルとして保存できる。

脚注[編集]

[ヘルプ]
  1. ^ You receive a "This file is an unsupported graphic format" error message when you try to insert a picture into a PowerPoint for Mac presentation Microsoftサポート
  2. ^ Microsoft Windows 3.1 Programmers Reference, Volume 4 Resources, Microsoft Press 1992, ISBN 1-55615-494-1, chapter 3 pp. 21-45
  3. ^ MS-WMF: Windows Metafile Format Specification”. 2008年6月1日閲覧。
  4. ^ 'Windows backdoor' theory causes kerfuffle CNET News - News Blogs

関連項目[編集]

外部リンク[編集]

チュートリアルなど[編集]

ライブラリ[編集]

  • 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用クラス