アプリケーションは以下の方法でファイルの MIME タイプを検出します。
アプリケーションは、「ファイルタイプ検索ツール」を使用して、ファイル内の特定のパターンを検索します。ファイルタイプ検索ツールは、ファイル内の特定のパターンと MIME タイプを関連付けます。アプリケーションがそのパターンとの一致を見つけると、そのパターンに関連付けられている MIME タイプがファイルの MIME タイプになります。
ファイルタイプ検索ツールによって MIME タイプが識別されない場合、アプリケーションはファイル名を調べます。アプリケーションは、ファイル名を「MIME タイプレジストリ」と照合します。MIME タイプレジストリは、特定のファイル拡張子とファイル名パターンを特定の MIME タイプに関連付けます。 ファイル名との一致が見つかると、その拡張子またはパターンに関連付けられている MIME タイプが、ファイルの MIME タイプになります。
この節では、ファイルタイプ検索ツールと MIME タイプレジストリについて詳しく説明します。
ファイルタイプ検索ツールは、/usr/gnome/etc/gnome-vfs-mime-magic ファイルに指定されています。以下にファイルタイプ検索ツールの例を示します。
0 string \x89PNG image/png
ファイルタイプ検索ツールの構文は、以下のとおりです。
offset_start[:offset_end] pattern_type pattern [&pattern_mask] type
表 4–1 は、ファイルタイプ検索ツールの各フィールドを説明しています。
表 4–1 ファイルタイプ検索ツールのフィールド
フィールド |
説明 |
---|---|
offset_start |
テキストパターンを検索する前に、ファイル内で無視する文字数を指定します。 |
pattern_type |
検索するパターンのタイプを指定します。このマニュアルの発行時点では、string パターンタイプのみがサポートされています。 |
pattern |
検索するパターンを指定します。 |
pattern_mask |
パターンマスクは、16 進数形式で指定します。パターンマスクについては、次の節を参照してください。 このフィールドは省略可能です。このフィールドは例には示されていません。 |
type |
このエントリと一致するファイルに関連付ける MIME タイプを指定します。 |
パターンマスクは、ファイル内でパターンを検索するときに、パターン中で無視するビットを識別します。以下は、ファイルタイプ検索ツールとパターンマスクの例を示しています。
0 string BMxxxx\000\000 &0xffff00000000ffff image/bmp
この例のパターンとマスクは、以下のとおりです。
パターン |
B |
M |
x |
x |
x |
x |
\000 |
\000 |
マスク |
ff |
ff |
00 |
00 |
00 |
00 |
ff |
ff |
パターンとマスクは、次のような特性でファイルを指定します。
ファイルは BM から始まります。
BM の後に、任意の 4 バイトの値が続きます。
任意の 4 バイトの後に、\000\000 が続きます。
ファイルタイプ検索ツールは、このパターンとマスクに一致するファイルの MIME タイプが、image/bmp であることを示します。
MIME タイプレジストリは、/usr/gnome/share/mime-info にあります。MIME タイプレジストリには、次のファイルが含まれています。
ファイル |
ファイル拡張子 |
---|---|
MIME 情報ファイル |
.mime |
MIME キーファイル |
.keys |
この節では、MIME 情報ファイルと MIME キーファイルについて説明します。
MIME 情報ファイルは、MIME タイプを以下の 1 つまたは両方と関連付けます。
ファイル拡張子
ファイル名のパターン
アプリケーションがファイルの MIME タイプを検索する場合、アプリケーションはファイル名を MIME 情報ファイルと照合します。ファイル名との一致が見つかると、その拡張子またはパターンに関連付けられている MIME タイプが、ファイルの MIME タイプになります。
MIME 情報ファイルでは、検索するファイル名のパターンは、正規表現で書かれています。
MIME 情報ファイル内の MIME タイプエントリの形式は、以下のとおりです。
MIME_type ext[,priority]: list_of_extensions regex[,priority]:list_of_regular_expressions
ファイル拡張子および正規表現に、優先順位値を指定できます。優先順位値を使用して、複合されたファイル名を区別できます。たとえば、.gz 拡張子に優先順位値 1 を割り当て、それより高い優先順位値の 2 を .tar.gz 拡張子に割り当てたとします。この場合、ファイル abc.tar.gz の MIME タイプは、.tar.gz になります。
ext フィールドと regex フィールドは、タブ文字 (\t) を使用してインデントする必要があります。
以下の MIME タイプエントリは、gnome-vfs.mime MIME 情報ファイルからのサンプルです。
application/x-compressed-tar regex,2: tar\.gz$ ext: tgz audio/x-real-audio ext: rm ra ram image/jpeg ext: jpe jpeg jpg image/png ext: png text/html ext: html htm HTML text/plain ext: asc txt TXT text/x-readme regex: README.*
ファイルマネージャは、MIME 情報ファイルをアルファベット順に読み取ります。MIME タイプがファイル拡張子または正規表現と関連付けられる順序は、アルファベット順で決定します。たとえば、ファイル abc.mime と def.mime で、同じファイル拡張子が異なる MIME タイプに割り当てられている場合、abc.mime にある MIME タイプが使用されます。
MIME キーファイルは、ユーザーインターフェイスで使用される MIME タイプに関する情報を提供します。 たとえば、MIME キーファイルは、MIME タイプの説明を提供し、その MIME タイプのファイルを表すアイコンを指定します。
以下の例は、MIME キーファイルのサンプルを示しています。
text/html description=HTML page icon_filename=gnome-text-html default_action_type=application short_list_application_ids_for_novice_user_level=mozilla,netscape,galeon category=Documents/World Wide Web
MIME キーファイル内のキーは、タブ文字 (\t) を使用してインデントする必要があります。
表 4–2 は、MIME キーファイルで最も重要なキーについて説明しています。通常、description キーと category キーは使用しているシステム環境に対応します。
表 4–2 MIME キーファイル内のキー
キー |
説明 |
---|---|
can_be_executable |
この MIME タイプのファイルが実行可能かどうかを指定します |
description |
MIME タイプの説明。この説明は、ファイルマネージャおよびほかのアプリケーションで表示できます |
icon_filename |
MIME タイプを表すアイコンのファイル名を指定します。ファイル名へのパス、あるいはファイル拡張子は指定しません このアイコンは、ファイルマネージャおよびほかのアプリケーションで表示できます |
default_action_type |
この MIME タイプのファイルを開いたときに行われる動作のカテゴリを指定します。ほとんどのアプリケーションのこの MIME タイプに、application を指定します |
short_list_application_ids _for_novice_user_level |
この MIME タイプのファイルを開くときに使用するアプリケーションを指定します。優先順に 1 つ以上のアプリケーションを指定します。アプリケーションは、アプリケーションレジストリに登録する必要があります |
category |
MIME タイプのカテゴリを指定します。このキーの値は、ファイルタイプとプログラム設定ツール内の MIME タイプの場所を決定します |