「DVI (ファイルフォーマット)」の版間の差分
削除された内容 追加された内容
日本語化 TeX の出力フォーマットに関する記述の追加。 |
m 一部表現の変更。 |
||
9行目:
==仕様==
DVI ファイルのフォーマットはコンパクトで機械的に簡単に解釈できるように設計されている。DVIファイルの内容は単純なある仮想機械へのコマンドの列で構成されている。各コマンドは8ビットの命令と、命令毎に異なる数バイトの引数からなる。例えば、命令0から127は、<tt>set_char_''i''</tt> という引数
おおざっぱに言うと、DVIファイルはプリアンブル、複数のページ、ポストアンブルで構成されている。仮想機械は6つの32ビット符号付き整数 ''h, v, w, x, y, z'' を状態変数として持っていて、''h'' と ''v'' が現在のカーソルのページ左上の基準点からの相対位置(1/65536 インチ単位)を保持し、''w'' と ''x'' は左右方向のスペースを管理する変数として、''y'' と ''z'' は上下方向のスペースを管理する変数として使われる。これらの値は内部にあるスタックに待避することができる。またそれとは別にフォント変数 ''f'' が存在し、現在利用しているフォントの番号 (番号と実フォントの対応はファイル中で <tt>fnt_def''i''</tt> 命令で関連づける) を記憶している。set 命令などでカーソル移動幅として用いられる文字の幅は、[[TFM]] ファイルから読み込まれる。変数 ''f'' は32ビット幅であるが、TeX は基本的に0から63までの値しか出力しない。
18行目:
(この項は日本語版独自の追加。)
日本語化された TeX システムにおいても、DVI ファイルフォーマットは基本的にそのまま利用されている。もともと、DVI が設計された当時のTeXは7ビットコードしか扱うことができず、全ての文字が <tt>set_char_''i''</tt> で扱えるはずであったが、それにも関わらず
また、縦書き対応に拡張された「[[pTeX]]」では、未使用であった命令コードの1つに<tt>tate</tt>命令 (255) を追加し、縦書きと横書きの切り替えを行うように拡張されている。そのため、ドライバに下位互換性のない拡張の有無が判断つくよう、縦書き機能を用いた際にはポストアンブルに含まれるファイルフォーマット番号が変更されるようになっている。
一方、[[NTT]] によって拡張された NTT jTeX では、日本語の文字集合を複数のフォントに仮想的に分割して、出力時にフォント切り替えを行う命令を挟みながら出力するように実装されていた。そのため、分割したフォントが準備されている環境では、DVIドライバは日本語拡張のない (1バイト幅の文字番号しか扱えない) ものをそのまま用いることができた。
* 参考URL: [http://www.ascii.co.jp/pb/ptex/ アスキー日本語TeX(pTeX)]: 具体的な拡張 DVI, TFM フォーマットについての仕様が掲載されている。
|