GIF89a仕様書(抜粋)

GIF89a の仕様書から、アニメGIF に関連する部分を中心に抜粋しました。もっと 詳しく知りたいと思った方は GIF Infoというページに和訳された仕様書の全文がありますので、是非一度ご一読 下さい。

1.開始部 (Header)
2.論理画面記述部 (Logical Screen Descriptor)
3.広域配色表 (Global Color Table)
4.画像記述部 (Image Descriptor)
5.狭域配色表 (Local Color Table)
6.グラフィック制御拡張 (Graphic Control Extension)
7.NETSCAPE2.0 アプリケーション拡張 (Netscape Apprication Extension)
8.終了部 (Trailer)


1.開始部 (Header)
a.説明

  開始部は、ストリームの脈絡上において GIFデータ・ストリームを識別します。
署名欄は、データ・ストリームの開始を印付けます、そして、バージョン欄は、
データ・ストリームを完全に処理するために、復号器に要求される能力の集合を
確認します。このブロックは、《必須》です。即ち、データ・ストリーム毎に、
正確に一つ開始部が現れねばなりません。

b.要求されるバージョン

  適用されません。このブロックは、バージョン番号に影響されません。このブ
ロックは、各データ・ストリームの開始時に現われねばなりません。

c.構文

         7 6 5 4 3 2 1 0        欄名                    型
        +---------------+
      0 |      'G'      |
        +-             -+
      1 |      'I'      |       署名                    3 Bytes
        +-             -+
      2 |      'F'      |
        +---------------+
      3 |               |
        +-             -+
      4 |               |       バージョン              3 Bytes
        +-             -+
      5 |               |
        +---------------+

    i)  署名 (Signature)
        GIF データ・ストリームを識別します。この欄は、固定値 'GIF' から
      なります。

   ii)  バージョン (Version)
        データ・ストリームをフォーマットするために使われたバージョン番号
      です。データ・ストリームの内容を完全に処理するために復号器に必要な
      最低限の能力の集合を確認します。

        1990年7月10日時点のバージョン番号は下記の通りです。

                    "87a"  -  1987年5月
                    "89a"  -  1989年7月

        バージョン番号の最初の二桁は、87から開始して 88, 89, …, 99, 00,
      …, 85, 86と数順に増加します、三番目の文字は、a, …, z とアルファ
      ベット順に増加します。

d.拡張と有効範囲

  このブロックの有効範囲は、データ・ストリーム全体です。このブロックは、
いかなる拡張によっても修飾されません。
2.論理画面記述部 (Logical Screen Descriptor)
a.説明

  論理画面記述部は、これから描画する画像に必要な表示装置の領域を定義する
パラメータを含んでいます。このブロック中の座標は仮想画面の左上隅が原点で
す、表示装置上の絶対座標に当てはめる必要はありません。これは、ウィンドウ
を基盤にした環境でのウィンドウ座標、または、プリンター使用時のプリンター
座標にあてはめられることを示唆しています。

  このブロックは、《必須》です。データ・ストリーム毎に、丁度一つの論理画
面記述部が現われねばなりません。

b.要求されるバージョン

  適用されません。このブロックは、バージョン番号に影響されません。このブ
ロックは、開始部の直後に現われねばなりません。

c.構文

         7 6 5 4 3 2 1 0        欄名                    型
        +---------------+
     0  |               |
        +-             -+       論理画面幅              Unsigned
     1  |               |
        +---------------+
     2  |               |
        +-             -+       論理画面高さ            Unsigned
     3  |               |
        +---------------+
     4  | |     | |     |       <詰め込み欄>          下記参照
        +---------------+
     5  |               |       背景色指標              Byte
        +---------------+
     6  |               |       画素縦横比              Byte
        +---------------+

        <詰め込み欄>  =      広域配色表フラグ        1ビット
                                色解像度                3ビット
                                整列フラグ              1ビット
                                広域配色表の寸法        3ビット

    i)  論理画面幅 (Logical Screen Width)
        表示装置上で画像が描画される、論理画面の画素単位での幅です。

   ii)  論理画面高さ (Logical Screen Height)
        表示装置上で画像が描画される、論理画面の画素単位での高さです。

  iii)  広域配色表フラグ (Global Color Table Flag)
        広域配色表の有無を示すフラグです。フラグが立っていれば、広域配色
      表が論理画面記述部の直後に続きます。また、このフラグは背景色指標の
      解釈も選択します。フラグが立っている場合、背景色指標欄の値は、背景
      色の配色表指標として使用されます。このフラグは、バイトの最上位ビッ
      トです。

        値
        0  −  広域配色表は続かず、背景色指標欄は意味を持ちません。
        1  −  広域配色表が直後に続き、背景色指標欄は意味を持ちます。

   iv)  色解像度 (Color Resolution)
        オリジナル画像に利用される各原色毎のビット数から1引いた数です。
      この値は、選択されたグラフィック中の各色からなるパレット全体の寸法
      を表すもので、そのグラフィック中で実際に使用されている色数を表すも
      のではありません。例えば、この欄の値が3であれば、画像を作成するた
      めに利用されたオリジナル画像のパレットは、各原色それぞれ4ビットで
      す。たとえ、情報源の機械上でパレット全体の全ての色が利用出来ない場
      合でも、この値はオリジナル・パレットの豊富さを表すように設定される
      べきです。

    v)  整列フラグ (Sort Flag)
        広域配色表が整列されているかを表します。このフラグが立っている場
      合は、広域配色表は重要度が減少していく順に整列されています。典型的
      には、その順序は頻度の減少順で、最高頻度の色が最初となります。これ
      は、利用出来る色が少ない復号器が、最良の部分集合色を選択するのを助
      けます。即ち、その復号器は、配色表の最初の部分をグラフィックの描画
      に使用するものとします。

        値
        0  −  非整列です。
        1  −  重要度の減少順に整列されています、最重要な色が最初です。

   vi)  広域配色表の寸法
        広域配色表フラグが1に設定されている場合、この欄の値は広域配色表
      に含まれるバイト数を計算するのに使用されます。配色表の実際の寸法を
      決定するには、この欄の値に1を加えた数で2を累乗します。たとえ、広
      域配色表が指定されない場合でも、復号器がストリーム中の画像を表示す
      るための最良のグラフィック・モードを選択出来るように、上記の数式に
      よって、この欄を設定します。この欄は、バイトの最下位ビット三つから
      なります。

  vii)  背景色指標 (Background Color Index)
        背景色のための広域配色表に対する指標です。背景色は、画像によって
      覆われない画面上の画素の色に使用されます。広域配色表フラグがゼロに
      設定されている場合、この欄は、ゼロに設定され無視されるべきです。

 viii)  画素縦横比 (Pixel Aspect Ratio)
        原画中の画素の縦横比の近似を計算するのに使用する係数です。この欄
      の値が、0でない場合は、この縦横比の近似は、下記の式をもとに計算さ
      れます。

          縦横比 = (画素縦横比 + 15) ÷ 64

      画素縦横比は、画素の幅を画素の高さで割った商で定義されます。この欄
      では、その値の範囲は、4:1 と最も幅広の画素から、1:4 と最も縦長の画
      素まで、64分の1間隔で指定できます。

        値
        0      −  縦横比情報は、与えられていません。
        1〜255 −  計算に使用される値です。

d.拡張と有効範囲

  このブロックの有効範囲は、データ・ストリーム全体です。このブロックは、
いかなる拡張によっても修飾されません。
3.広域配色表 (Global Color Table)
a.説明

  このブロックは、三原色、赤・緑・青を表現するバイトの繰り返しである配色
表を一つ含みます。広域配色表は、狭域配色表のない画像や平文拡張によって使
用されます。その存在は、論理画面記述部中の広域配色表フラグが1に設定され
ていることによって示されます。もし存在するのならば、論理画面記述部の直後
に現われ、

                3 × 2^(広域配色表の寸法+1)

に相当するバイト数から成ります。
  このブロックの有無は《随意》です。そして、データ・ストリーム毎に広域配
色表が最大で一つだけ現われ得ます。

b.要求されるバージョン

  87a

c.構文

         7 6 5 4 3 2 1 0        欄名                    型
        +===============+
     0  |               |       赤  0                  Byte
        +-             -+
     1  |               |       緑  0                  Byte
        +-             -+
     2  |               |       青  0                  Byte
        +-             -+
     3  |               |       赤  1                  Byte
        +-             -+
        |               |       緑  1                  Byte
        +-             -+
        |               |
    : 〜〜 〜〜 〜〜 〜〜        :
    : 〜〜 〜〜 〜〜 〜〜        :
        |               |
        +-             -+
        |               |       緑  255                 Byte
        +-             -+
   767  |               |       青  255                 Byte
        +===============+

d.拡張と有効範囲

  このブロックの有効範囲は、データ・ストリーム全体です。このブロックは、
いかなる拡張にも修飾されません。
4.画像記述部 (Image Descriptor)
a.説明

  データ・ストリーム中の各画像は、画像記述部、有無が随意な狭域配色表、そ
して、画像データから構成されます。各画像は、論理画面記述部に於いて定義さ
れた論理画面の境界内に適合しなければなりません。

  画像記述部は、配色表式画像(table based image) を処理するために必要なパ
ラメータを含みます。このブロックで与えられる座標は論理画面内の座標を表し、
かつ、画素単位で与えられます。このブロックは、グラフィック描画ブロック(
Graphic-Rendering Block)です。このブロックの前には、グラフィック制御拡張
のような制御ブロックが随意で一つ以上あり得ます、また、後ろには、狭域配色
表が随意で一つあり得ます。画像記述部には、常に画像データが続きます。

  このブロックには、画像が《必須》です。データ・ストリーム中の画像毎に、
正確に一つの画像記述部が与えられなければなりません。データ・ストリーム毎
の画像の数には制限がありません。

b.要求されるバージョン

  87a

c.構文

         7 6 5 4 3 2 1 0        欄名                    型
        +---------------+
     0  |     0x2C      |       画像分離符              Byte
        +---------------+
     1  |               |
        +-             -+       画像左端位置            Unsigned
     2  |               |
        +---------------+
     3  |               |
        +-             -+       画像上端位置            Unsigned
     4  |               |
        +---------------+
     5  |               |
        +-             -+       画像幅                  Unsigned
     6  |               |
        +---------------+
     7  |               |
        +-             -+       画像高さ                Unsigned
     8  |               |
        +---------------+
     9  | | | |   |     |       <詰め込み欄>          下記参照
        +---------------+

        <詰め込み欄>  =      狭域配色表フラグ        1ビット
                                飛び越し配置フラグ      1ビット
                                整列フラグ              1ビット
                                予約                    2ビット
                                狭域配色表の寸法        3ビット

    i)  画像分離符 (Image Separator)
        画像記述部の開始を識別します。この欄の内容は、固定値 0x2C です。

   ii)  画像左端位置 (Image Left Position)
        論理画面の左端から数えた、この画像の左端の画素単位での縦列(colum)
      番号です。論理画面の左端の縦列は、0です。

  iii)  画像上端位置 (Image Top Position)
        論理画面の上端から数えた、この画像の上端の画素単位での横列(row)
      番号です。論理画面の上端の横列は、0です。

   iv)  画像幅 (Image Width)
        画素単位での画像の幅です。

    v)  画像高さ (Image Height)
        画素単位での画像高さです。

   vi)  狭域配色表フラグ (Local Color Table Flag)
        この画像記述部の直後の狭域配色表の存在を示します(この欄は、バイ
      トの最上位ビットです)。

          値
          0  −  狭域配色表は、存在しません。利用出来るのならば、広域配
                色表を使用します。
          1  −  この画像記述部の直後に狭域配色表が存在します。

  vii)  飛び越し配置フラグ (Interlace Flag)
        画像が、飛び越し配置されているかを示します。画像は、4段階の飛び
      越し配置模様で飛び越し配置されます。詳細は、付録Eを参照してくださ
      い。

        値
        0  −  画像は、飛び越し配置されていません。
        1  −  画像は、飛び越し配置されています。

 viii)  整列フラグ (Sort Flag)
        狭域配色表が整列されているかを表します。このフラグが立っている場
      合は、狭域配色表は重要度が減少していく順に整列されています。典型的
      には、その順序は頻度の減少順で、最高頻度の色が最初となります。これ
      は、利用出来る色が少ない復号器が、最良の部分集合色を選択するのを助
      けます、即ち、その復号器は、配色表の最初の部分をグラフィックの描画
      に使用するものとします。

        値
        0  −  非整列です。
        1  −  重要度の減少順に整列されています、最重要な色が最初です。

   ix)  狭域配色表の寸法
        狭域配色表フラグが1に設定されている場合、この欄の値は狭域配色表
      に含まれるバイト数を計算するのに使用されます。配色表の実際の寸法を
      決定するには、この欄の値に1を加えた数で2を累乗します。もし、狭域
      配色表が指定されないのであれば、この値は0でなければなりません。こ
      の欄は、バイトの最下位のビット三つからなります。

d.拡張と有効範囲

  このブロックの有効範囲は、後続の配色表式画像データ・ブロックです。この
ブロックは、グラフィック制御拡張によって修飾され得ます。
5.狭域配色表 (Local Color Table)
a.説明

  このブロックは、三原色、赤・緑・青を表現するバイトの繰り返しである配色
表を一つ含みます。狭域配色表は、この直後の画像に対して使用します。その存
在は、画像記述部中の狭域配色表フラグが1に設定されていることによって示さ
れます。もし存在するのならば、狭域配色表は画像記述部の直後に現われ、

                3 × 2^(狭域配色表の寸法+1)

に相当するバイト数から成ります。
  もし存在するのならば、この配色表は一時的に現配色表(Active Color Table)
と成り、後続の画像は、それを使用して処理されます。このブロックの有無は、
《随意》です。そして、画像記述部毎に狭域配色表が最大で一つだけ現われ得ま
す。その有効範囲は、狭域配色表の前に来た画像記述部と関連付けられた単一の
画像です。

b.要求されるバージョン

  87a

c.構文

         7 6 5 4 3 2 1 0        欄名                    型
        +===============+
     0  |               |       赤  0                  Byte
        +-             -+
     1  |               |       緑  0                  Byte
        +-             -+
     2  |               |       青  0                  Byte
        +-             -+
     3  |               |       赤  1                  Byte
        +-             -+
        |               |       緑  1                  Byte
        +-             -+
        |               |
    : 〜〜 〜〜 〜〜 〜〜        :
    : 〜〜 〜〜 〜〜 〜〜        :
        |               |
        +-             -+
        |               |       緑  255                 Byte
        +-             -+
   767  |               |       青  255                 Byte
        +===============+


d.拡張と有効範囲

  このブロックの有効範囲は、このブロックの直後の配色表式画像ブロックです。
このブロックは、いかなる拡張にも修飾され得ません。
6.グラフィック制御拡張 (Graphic Control Extension)
a.説明

  グラフィック制御拡張は、グラフィック描画ブロックを処理する際に使用され
るパラメータを含んでいます。この拡張の有効範囲は、後続する最初のグラフィッ
ク描画ブロックです。この拡張は、データ副ブロックを一つだけ含みます。

  このブロックの有無は《随意》です。グラフィック描画ブロックに対して、最
大で一つのグラフィック制御拡張が先行し得ます。これは、一つのデータ・スト
リーム中に含まれるグラフィック制御拡張の個数に関する唯一の制限です。

b.要求されるバージョン

  89a

c.構文

         7 6 5 4 3 2 1 0        欄名                    型
        +---------------+
     0  |     0x21      |       拡張導入符              Byte
        +---------------+
     1  |     0xF9      |   グラフィック制御ラベル      Byte
        +---------------+

        +---------------+
     0  |     0x04      |       ブロック寸法            Byte
        +---------------+
     1  |     |     | | |       <詰め込み欄>          下記参照
        +---------------+
     2  |               |
        +-             -+       遅延時間                Unsigned
     3  |               |
        +---------------+
     4  |               |       透過色指標              Byte
        +---------------+

        +---------------+
     0  |     0x00      |       ブロック終了符          Byte
        +---------------+


        <詰め込み欄>  =      予約                    3ビット
                                処分方法                3ビット
                                利用者入力フラグ        1ビット
                                透過色フラグ            1ビット

    i)  拡張導入符 (Extension Introducer)
        拡張ブロックの開始を識別します。この欄は、固定値 0x21 です。

   ii)  グラフィック制御ラベル (Graphic Control Label)
        現在のブロックをグラフィック制御拡張として識別します。この欄は、
      固定値 0xF9 です。

  iii)  ブロック寸法 (Block Size)
        このブロックのブロック寸法欄より後ろの部分のバイト数です、但し、
      ブロック終了符は含みません。この欄は、固定値4です。

   iv)  処分方法 (Disposal Method)
        グラフィック表示後の取り扱い方法を示します。

          値
          0  −  処分の指定は、ありません。復号器は、何ら行動を要求され
                ません。
          1  −  処分しません。グラフィックは、その場に残されます。
          2  −  背景色で修復します。グラフィックに使用された領域を背景
                色で修復しなければなりません。
          3  −  以前の状態に復元します。復号器は、グラフィックによって
                上書きされた領域を、それ以前に描画されていたグラフィック
                で復元することを要求されます。
      4〜7  −  将来、定義されます。

    v)  利用者入力フラグ (User Input Flag)
        続行前に利用者の入力を期待しているかどうかを示します。もし、この
      フラグが立っているのならば、利用者入力が行われた時点で処理が継続さ
      れます。利用者入力の種類は、アプリケーションによって(キャリッジ・
      リターン、マウス・ボタンのクリック等々に)決定されます。

          値
          0  −  利用者入力は、期待されていません。
          1  −  利用者入力が、期待されています。

        遅延時間と利用者入力が共に使用されている場合は、利用者入力を受け
      取るか、あるいは、遅延時間が経過するか、どちらかが先に起きた時点で、
      処理が継続します。

   vi)  透過色フラグ (Transparency Flag, Transparent Color Flag)
        透過色指標欄に、透過色指標が与えられているかどうかを示します。こ
      の欄は、バイトの最下位ビットです。

          値
          0  −  透過色指標は、与えられていません。
          1  −  透過色指標が、与えられています。

  vii)  遅延時間 (Delay Time)
        もし、0でなければ、この欄には、データ・ストリームの処理を続行す
      る前に待たなければならない時間が百分の1秒単位で指定されています。
      時計は、グラフィック描画後すぐに刻みはじめます。この欄は、利用者入
      力フラグ欄と共に用いられ得ます。

 viii)  透過色指標 (Transparency Index, Transparent Color Index)
        透過色指標に出会った場合は、その指標に対応する表示装置の画素を変
      更せずに、次の画素へ処理を続けるようにします。この指標は、透過色フ
      ラグが、1に設定されている場合に限って存在します。

   ix)  ブロック終了符 (Block Terminator)
        この長さ零のデータ・ブロックは、グラフィック制御拡張の終端を印し
        付けます。

d.拡張と有効範囲

  この拡張の有効範囲は、これに続くグラフィック描画ブロックです。このブロッ
クとその対象の間に他の拡張が存在し得ます。この拡張は、画像記述部ブロックと
平文拡張を修飾できます。
7.NETSCAPE2.0 アプリケーション拡張 (Netscape Apprication Extension)
a.説明

  NETSCAPE2.0アプリケーション拡張は、復号器に対して、GIFデータ・ストリー
ム全体の繰り返し再生の指示、または、画像バッファが満たされるまでその画像
の描画を待機するように指示します。

  このブロックは、GIF89a 仕様書のアプリケーション拡張に基づいて定義されて
います。そのため、このアプリケーション拡張を理解しない復号器にとって、こ
のブロックは透明であり、ループ再生は成されません。

  このブロックは、ネットスケープ・コミュニケーションズ社が、ネットスケー
プ・ナビゲータ 2.0 のために定義しました。マイクロソフトは、インターネット
・エクスプローラ 3.0 で、この機能を実現しました。

b.要求されるバージョン

  89a

c.構文

         7 6 5 4 3 2 1 0    欄名           型
        +---------------+
     0  |     0x21      |   拡張導入符        Byte
        +---------------+
     1  |     0xFF      | アプリケーション拡張ラベル  Byte
        +---------------+

        +---------------+
     0  |     0x0B      |   ブロック寸法      Byte
        +---------------+
     1  |      'N'      |
        +-             -+
     2  |      'E'      |
        +-             -+
     3  |      'T'      |
        +-             -+
     4  |      'S'      |
        +-             -+  アプリケーション識別名  8 Bytes
     5  |      'C'      |
        +-             -+
     6  |      'A'      |
        +-             -+
     7  |      'P'      |
        +-             -+
     8  |      'E'      |
        +---------------+
     9  |      '2'      |
        +-             -+
    10  |      '.'      | アプリケーション確証符号  3 Bytes
        +-             -+
    11  |      '0'      |
        +---------------+

        +---------------+ ────────────┐
     0  |       N       |  データ副ブロック寸法 │ ネットスケープ拡張
        +---------+-----+             │ データ副ブロック
     1  |         |     |   <詰め込み欄>   │
        +---------+-----+             ├─ 必要な回数繰り返す
        |               |             │  (零回を含む)
        /               /   データ・バイト   │
     N  |               |             │
        +---------------+ ────────────┘

        :   :   :   :   :

        +---------------+
     0  |     0x00      |   ブロック終了符     Byte
        +---------------+


        <詰め込み欄>  =      予約                    5ビット
                        ネットスケープ拡張コード   3ビット

ネットスケープ拡張データ副ブロック

     繰り返し拡張データ副ブロック
        +---------------+
     0  |     0x03      |  データ副ブロック寸法   Byte
        +---------+-----+
     1  |         |0 0 1|   <詰め込み欄>         Byte
        +---------+-----+
     2  |               |
        +-             -+   繰り返し回数       Unsigned
     3  |               |
        +---------------+

     溜め込み拡張データ副ブロック
        +---------------+       
     0  |     0x05      |    データ副ブロック寸法      Byte
        +---------+-----+
     1  |         |0 1 0|      <詰め込み欄>            Byte
        +---------+-----+
     2  |               |
        +-             -+
     3  |               |
        +-             -+      溜め込み寸法            Unsigned long
     4  |               |
        +-             -+
     5  |               |
        +---------------+

 注: ここに記述されたネットスケープ拡張データ副ブロックの各データ副ブ
        ロック寸法は、固定値とは限りません。


    i)  拡張導入符 (Extension Introducer)
        このブロックを拡張として定義します。この欄は、固定値 0x21 です。

   ii)  アプリケーション拡張ラベル (Application Extension Label)
        このブロックをアプリケーション拡張として識別します。この欄は、固
      定値 0xFF です。 

  iii)  ブロック寸法 (Block Size)
        この拡張のブロック寸法欄の後ろからアプリケーション・データの開始
      前までのバイト数です。この欄は、固定値 0x0B です。 

   iv)  アプリケーション識別名 (Application Identifier)
        アプリケーション拡張を所有しているアプリケーションを識別するため
      に使用される、印字可能なASCII文字8個の列です。この欄は、固定値
      "NETSCAPE" です。 

    v)  アプリケーション確証符号 (Application Authentication Code)
        アプリケーション識別名を確証するために使用される3バイトの列です。
      この欄は、固定値 "2.0" です。 

   vi)  データ副ブロック寸法 (Data Sub-block Size)
        データ副ブロック寸法欄の次からブロック終了符、または、次のデータ
      副ブロックの前までの、このデータ副ブロックのバイト数です。1から255
      までの値でなければなりません。 

  vii)  ネットスケープ拡張コード (Netscape Extension Code)
        ネットスケープ拡張データ副ブロックの機能を指示します。

          値
          1  −  復号器にGIFデータ・ストリーム全体を指定された回数、繰
                り返し再生することを指示します。繰り返し回数は、次の
                Unsigned (16ビット) 欄で与えられます。
                繰り返し拡張データ副ブロックを参照。 
          2  −  復号器に指定されたバイト数のデータが溜め込まれるまで画
                像の描画を待つように指示します。溜め込み寸法は、次の
                Unsigned long (32ビット) 欄で与えられます。
                溜め込み拡張データ副ブロックを参照。 
  0,3〜7  −  将来、定義されます。

 viii)  繰り返し回数 (Loop Count)
        GIF全体をループ再生すべき繰り返し回数を指示します。

          値
          0  −  無限ループを指示します。 
   1〜0xFFFF  −  ループを実行すべき繰り返し回数を指示します。  

        注: ネットスケープ・ナビゲータ 2.x は、この値を無視して無限ルー
              プになります。この値は、ナビゲータ 3.0 以降とマイクロソフト・
              インターネット・エクスプローラ 3.0 以降でサポートされていま
              す。 

   ix)  溜め込み寸法 (Buffering Size)
        グラフィックス描画開始前にGIFデータ・ストリームを溜め込むべきバイ
      ト数を指示します。 

    x)  ブロック終了符 (Block Terminator)
        この長さ零のデータ・ブロックは、アプリケーション拡張ブロックの終
      了を印します。 

d.拡張と有効範囲

  繰り返し拡張の有効範囲は、データ・ストリーム全体です。溜め込み拡張の有
効範囲は、ありません。このブロックは、いかなる拡張によっても修飾されませ
ん。 
8.終了部 (Trailer)
a.説明

  このブロックは、GIF データ・ストリームの終了を示す、単一欄のブロックで
す。その欄は、固定値 0x3B です。

b.要求されるバージョン

  87a

c.構文

         7 6 5 4 3 2 1 0        欄名                    型
        +---------------+
     0  |     0x3B      |       GIF 終了部              Byte
        +---------------+

d.拡張と有効範囲

  このブロックは、GIF データ・ストリームを終了させるため有効範囲を持ちま
せん。このブロックは、いかなる拡張にも修飾されません。