GROFF_FONT(5)

名称
groff_font - groff のデバイスとフォントを記述するファイルの書式

解説
groff のフォントの書式は ditroff のフォントの書式に対し、 ほぼスーパセットになっています。 ditroff のフォントの書式とは異なり、 関連したバイナリ書式はありません。 name というデバイス用のフォントファイルは devname というディレクトリに納められます。 ファイルには 2 つの種類があります: それは DESC と呼ばれるデバイス記述ファイルと、各フォント F ごとに存在する F と呼ばれるフォントファイルです。 これらはテキストファイルであり、関連したバイナリ書式の ファイルはありません。

  DESC ファイルの書式
DESC ファイルは以下の形式の行を含むことができます:

res n
    1 インチあたりのマシン単位は n です。

hor n
    水平解像度は n マシン単位です。

vert n
    垂直解像度は n マシン単位です。

sizescale n
    ポイント数への倍率を指定します。デフォルトの値は 1 です。1 スケールドポイント は、1 ポイント/n と等しくなります。 unitwidth コマンドと sizes コマンドへの引数はスケールドポイントで指定されます。

unitwidth n
    ポイントサイズが n スケールドポイントのフォントに対して、 フォントファイル毎の数量をマシン単位で与えます。

prepro program
    program をプリプロセッサとして呼び出します。

postpro program
    program をポストプロセッサとして使用します。

tcommand
    ポストプロセッサが t と u の出力コマンドを扱えることを表します。

sizes s1 s2...sn 0
    デバイスが s1, s2,...sn スケールドポイントのフォントを持つことを表します。 大きさのリストは 0 で終らなければなりません。 各 si は大きさの範囲 m-n でも指定できます。 リストは複数行にわたることも可能です。

styles S1 S2...Sm
    先頭 m 個のフォント位置が、スタイル S1...Sm に関連づけられます。

fonts n F1 F2 F3...Fn
    フォント F1...Fn がフォント位置 m+1,...,m+n にマウントされます( m はスタイル数)。 このコマンドは複数行にわたることができます。 0 というフォント名を指定すると、 対応するフォント位置にはフォントはマウントされません。

family fam
    デフォルトのフォントファミリは fam です。

use_charnames_in_special
    このコマンドは、スペシャルコマンドにおいては、 指定した文字を troff がエンコードすべきであることを指定します。

pass_filenames
    troff がドライバに対して、処理すべきソースファイル名を伝えるリクエストです。 これは、次に示す別の tcommand にて実現されます: F filename 。

charset
    この行とファイル内の以下に続く行はすべて無視されます。 これは下位互換性のために許されています。

print program
    program を、印刷用のスプーラプログラムとして使用します。 これが存在しない場合、 -l と -L の groff オプションが無視されます。

res, unitwidth, fonts, sizes の行は必須です。 他のコマンドは troff には無視されますが、デバイスに関する任意の情報を DESC ファイルに 入れておくためにポストプロセッサにより使われるかもしれません。

次に示すのは廃れたキーワードであり、 groff が認識するものの完全に無視するもののリストです: spare1, spare2, biggestfont 。

  フォントファイルの書式
フォントファイルには 2 つのセクションがあります。 最初のセクションは空白で区切られた単語が並んだ一連の行からなります。 行の最初の単語はキーで、以降の単語はそのキーに対する値となります。

name F
    フォントの名前は F です。

spacewidth n
    空白の通常の幅は n です。

slant n
    フォントの文字が n 度傾斜していることを表します (正の値は進行方向を意味します)。

ligatures lig1 lig2...lign [0]
    文字 lig1, lig2,...,lign は合字 (リガチャ; ligature) です。合字には ff, fi, fl, ffi, ffl が使用可能です。 下位互換性のために、合字のリストは 0 で終ってもかまいません。 合字のリストは複数行にわたってはいけません。

special
    フォントは スペシャル です。これは現在のフォントに存在しない文字が要求された場合、 マウントされた全てのスペシャルフォントが検索されることを示しています。

他のコマンドは troff には無視されますが、フォントに関する任意の情報をフォントファイルに 入れておくためにポストプロセッサにより使われるかも知れません。

最初のセクションには # 文字ではじまるコメントを、行末まで入れることができます。

次のセクションには 1 つか 2 つのサブセクションが含まれます。 サブセクション charset は必須で、サブセクション kernpairs はオプションです。 これらのサブセクションは任意の順番で書くことができます。 各サブセクションは、サブセクション名のみからなる行から始まります。

単語 charset で charset サブセクションを開始します。 charset 行には一連の行が続きます。 各行は 1 文字の情報を与えます。 行は空白かタブにより区切られたいくつかのフィールドから成ります。 書式は

    name metrics type code [entity_name] [-- comment]

で、 name は文字を識別します: name が単一の文字 c ならば、それは groff の入力文字 c を表します。 \c という形式で c が単一の文字なら、groff の入力文字 \c を表します。それ以外は groff の入力文字 \[name] を表します (2 文字の xx だとすると、 \(xx として入力されます)。 groff は 8 ビット文字に対応していますが、いくつかのユーティリティでは 8 ビット文字を扱うのが困難です。 このような理由から、文字コードが n である単一の文字と等価な charn という表記法が存在します。 例えば、 char163 は ISO Latin-1 で英国ポンド記号を表す文字コード 163 の文字と等価です。 --- という name は特別で、その文字に名前が無いことを示します。 そのような文字は troff 中でエスケープシーケンス \N によってのみ使われます。

type フィールドは文字の種類を示します:

1   は descender (ベースラインより下にはみ出した部分) を持つ 文字であることを表します。例えば p があてはまります。

2   は ascender (x の高さより上に出る部分) を持つ文字であることを表します。 例えば b があてはまります。

3   は ascender と descender の両方を持つ文字であることを表します。 例えば ( があてはまります。

code フィールドはポストプロセッサが文字を印字するために使うコードを示します。 \N というエスケープシーケンスを用いたこのコードを使って、groff に文字を 入力することもできます。 code はどんな整数でもかまいません。 0 から始まると、8 進数として扱われ、 0x や 0X で始まると 16 進数として扱われます。

entity_name フィールドは、グリフを識別する ASCII 文字列を与えます。 このグリフは、後処理を行うプログラムが文字の印刷に使用します。 このフィールドは省略可能であり、 html ドライバが文字集合をエンコード可能とするために導入されました。 例えば、文字 `\[Po]' は、html 4.0 では `&pound;' と表現されます。

行の code フィールド以降と、`--' の後ろは、すべて無視されます。

metrics フィールドの形式はこのようになります:

    width[,height[,depth[,italic_correction[,left_italic_correction[,subscript_correction]]]]]

サブフィールド間には空白を入れてはいけません。 サブフィールドが存在しない場合は 0 として扱われます。 サブフィールドは全て 10 進数の整数で指定されます。 対応するバイナリフォーマットが存在しないので、 ditroff のようにこれらの値を char 型変数の範囲に合わせるという必要はありません。 サブフィールド width では文字の幅を指定します。 サブフィールド height では文字の高さを指定します (上が正)。 文字がベースラインよりも上にいかない場合、負の高さを持つとするのではなく 高さが 0 であるとします。 サブフィールド depth では文字の深さを指定します。これはベースラインから文字の一番下までの 長さです (下が正)。 文字がベースラインより下に出ていない場合、負の深さを持つとするのではなく 深さが 0 であるとします。 サブフィールド italic_correction では直後にローマンフォントの文字が続く時に、文字の後に加えられる空白の 量を指定します。 サブフィールド left_italic_correction では直前にローマンフォントの文字がある時に、文字の前に加えられる空白の 量を指定します。 サブフィールド subscript_correction では添字 (subscript) を加える際に文字の後に加えられる空白の量を 指定します。 これはイタリック補正 (上記の italic_correction) よりは少なくなければ なりません。

charset セクション内では、以下のような書式の行も可能です

    name "

これは name が前の行で言及した文字の別名であることを表します。

kernpairs セクションは kernpairs という単語から始まります。このセクションは以下のような書式の 行からなります:

    c1 c2 n

文字 c1 が文字 c2 の次に現れる時には、それらの間の空白に n を加えることを意味します。 kernpairs セクションのほとんどのエントリは n に負の値を持つことになります。

関連ファイル
/usr/share/groff_font/devname/DESC デバイス name 用のデバイス記述ファイル

/usr/share/groff_font/devname/F
    デバイス name のフォント F 用のフォントファイル

関連項目
groff_out(5), troff(1).