玄関コンピュータの部屋各種解説コーナーCGファイル概説

2) コメント拡張ブロック

オフセット内容(バイト数)
0拡張ブロック開始識別子(1)
固定値21H
1コメント拡張識別子(1)
固定値FEH
2サブブロックのバイト数(1)
1-255
3コメント(255以内)
ASCIIテキスト文字
::
 サブブロックのバイト数(1)
1-255
 コメント(255以内)
ASCIIテキスト文字
 ブロック終了識別子(1)固定値0

画像データに関するコメント、作者、説明などのテキスト情報を保存したブロックで、画像表示には影響を与えません。 1つのGIFファイル中にいくつでも存在でき、イメージデータブロックの後に置かれることもあります。

(i) 拡張ブロック開始識別子(Extension Introducer)

拡張ブロックの開始を表す識別子で、常に固定値21H(10進数では33)です。 この識別子は全ての拡張ブロックで共通です。

(ii) コメント拡張識別子(Comment Label)

この拡張ブロックがコメント拡張ブロックであることを表す識別子で、常に固定値FEH(10進数では254)です。

(iii) サブブロックのバイト数(Block Size)

直後に続くコメントのバイト数で、1から255の間の任意の値です。

(iv) コメント(Comment Data)

ASCIIのテキスト文字からなる、255文字以内のコメントデータです。 サブブロックバイト数とコメントの対をサブブロックといい、コメント拡張ブロック中にいくつでも存在できます。

(v) ブロック終了識別子(Block Terminator)

コメント拡張ブロックの終了を表す識別子で、常に固定値0です。

3) プレーンテキスト拡張ブロック

オフセット内容(バイト数)
0拡張ブロック開始識別子(1)
固定値21H
1プレーンテキスト拡張識別子(1)
固定値01H
2ブロックのバイト数(1)
固定値12
3テキストグリッドの左端位置(2)
ピクセル単位
5テキストグリッドの上端位置(2)
ピクセル単位
7テキストグリッドの横幅(2)
ピクセル単位
9テキストグリッドの高さ(2)
ピクセル単位
11グリッド中のセルの横幅(1)
ピクセル単位
12グリッド中のセルの高さ(1)
ピクセル単位
13テキストのカラーインデックス(1)
14背景のカラーインデックス(1)
15サブブロックのバイト数(1)
1-255
16テキストデータ(255以内)
ASCIIテキスト文字
::
 ブロック終了識別子(1)
固定値0

画像として表示するテキストデータと、それをディスプレイ上に表示するために必要なパラメータを保存したブロックです。 このブロックはグラフィック拡張ブロックのデータの影響を受けますので、グラフィック拡張ブロックがある場合には、それより後に置かれる必要があります。 そして、1つのGIFファイル中にいくつでも存在できます。

(i) 拡張ブロック開始識別子(Extension Introducer)

拡張ブロックの開始を表す識別子で、常に固定値21H(10進数では33)です。 この識別子は全ての拡張ブロックで共通です。

(ii) プレーンテキスト拡張識別子(Plan Text Label)

この拡張ブロックがコメント拡張ブロックであることを表す識別子で、常に固定値01H(10進数では1)です。

(iii) テキストグリッドの左端位置(Text Grid Left Position)

論理画面の左端を0とした時の、テキストグリッドの左端のカラム位置をピクセル単位で表した値です。 テキストグリッドとは、プレーンテキストを表示する領域のことです。

↓論理画面
↓テキストグリッド
HYOTTOKO
  ↑キャラクターセル

(iv) テキストグリッドの上端位置(Text Grid Top Position)

論理画面の上端を0とした時の、テキストグリッドの上端のカラム位置をピクセル単位で表した値です。

(v) テキストグリッドの横幅と高さ(Text Grid Width、Text Grid Height)

テキストグリッドの横幅と高さをピクセル単位で表した値です。

(vi) グリッド中のセルの横幅と高さ(Character Cell Width、Character Cell Height)

テキストグリッド中のキャラクターセルの横幅と高さをピクセル単位で表した値です。 キャラクターセルとは、プレーンテキストの1文字を表示する領域のことです。

(vii) テキストのカラーインデックス(Text Foreground Color Index)

プレーンテキストを表示するのに用いる色の、グローバルカラーテーブルのインデックスです。

(viii) 背景のカラーインデックス(Text Background Color Index)

プレーンテキストの背景、つまりテキストグリッド中の、文字以外の地の部分を表示するのに用いる色の、グローバルカラーテーブルのインデックスです。

(ix) サブブロックのバイト数(Block Size)

直後に続くプレーンテキストのバイト数で、1から255の間の任意の値です。

(x) テキストデータ(Plan Text Data)

ASCIIのテキスト文字からなる、255文字以内のプレーンテキストデータです。 サブブロックバイト数とテキストデータからなるサブブロックは、プレーンテキスト拡張ブロック中にいくつでも存在できます。

(xi) ブロック終了識別子(Block Terminator)

プレーンテキスト拡張ブロックの終了を表す識別子で、常に固定値0です。

4) アプリケーション拡張ブロック

オフセット内容(バイト数)
0拡張ブロック開始識別子(1)
固定値21H
1アプリケーション拡張識別子(1)
固定値FFH
2ブロックのバイト数(1)
固定値11
3アプリケーション識別名(8)
ASCII文字
11アプリケーション識別コード(3)
14サブブロックのバイト数(1)
1-255
15アプリケーションデータ(255以内)
::
 ブロック終了識別子(1)
固定値0

各種のアプリケーションが独自に使う固有の情報を保存したブロックで、アプリケーションごとに内容が違うため、原則として互換性はありません。 1つのGIFファイル中に複数個存在できますが、個数や位置はアプリケーションによって異なります。

ちなみにネットスケープによるアニメーションGIFは、このアプリケーション拡張ブロックを利用して複数のイメージデータを連続表示し、簡易アニメーション表示を行うものです。 その場合、アプリケーション拡張ブロックは特殊用途ブロックの最初にひとつだけ存在し、固有データとしてアニメーション表示の繰り返し回数を保存しています。

(i) 拡張ブロック開始識別子(Extension Introducer)

拡張ブロックの開始を表す識別子で、常に固定値21H(10進数では33)です。 この識別子は全ての拡張ブロックで共通です。

(ii) アプリケーション拡張識別子(Extension Label)

この拡張ブロックがアニメーション拡張ブロックであることを表す識別子で、常に固定値FFH(10進数では255)です。

(iii) ブロックのバイト数(Block Size)

直後に続くブロックのバイト数で、常に固定値11です。

(iv) アプリケーション識別名(Application Identifer)

このブロックを使用するアプリケーションの識別名を、8個のASCIIテキスト文字で表したデータです。 アニメGIFの場合は「NETSCAPE」という文字が入っています。

(v) アプリケーション識別コード(Application Authentication Code)

このブロックを使用するアプリケーションの識別コードで、3バイトの任意のコードです。 アニメGIFの場合はASCIIテキスト文字で「2.0」というバージョン番号が入っています。

(vi) サブブロックのバイト数(Block Size)

直後に続くアプリケーション固有データのバイト数で、1から255の間の任意の値です。

(vii) アプリケーションデータ(Application Data)

オフセット内容(バイト数)
0サブブロックのバイト数(1)
固定値3
1繰り返しフラッグ?(1)
1:実行/0:非実行?(固定値1)
2繰り返し回数(2)
0の場合は無限に繰り返す

アプリケーション固有の、255バイト以内の任意のデータです。 サブブロックバイト数とアプリケーションデータからなるサブブロックは、アプリケーション拡張ブロック中にいくつでも存在できます。

アニメGIFの場合、サブブロックはひとつだけで、左表のようなデータ構造をしています。 ネットスケープ以外のブラウザ、例えばエクスプローラ(Ver.3.0以上)でも、このネットスケープ用のアプリケーションデータを利用して簡易アニメーション表示を行いますが、1バイト目のデータと繰り返し回数の解釈はブラウザによって異なるようです。

(viii) ブロック終了識別子(Block Terminator)

アプリケーション拡張ブロックの終了を表す識別子で、常に固定値0です。