GROFF_FONT(5)

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

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

  DESC ファイルの書式
DESC ファイルは、以下の形式の行を含んでいます: 後から出てきた項目は、それ以前の値を上書きします。

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

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

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

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

paperheight n
    出力メディアの、マシン単位での物理的な垂直方向の長さです。 これは troff 自体ではなく、出力デバイスによって使用されます。 この項目の使用はお勧めしません。 代わりに papersize を使用してください。

papersize string
    紙サイズを選択します。 string に有効な値は、ISO の紙タイプである A0-A7, B0-B7, C0-C7, D0-D7, DL と、 US で使われている紙タイプである letter, legal, tabloid, ledger, statement, executive, com10, monarch です。 string が定義済みの紙タイプであった場合、大文字小文字は重要ではありません。 別の指定方法として、 string にはファイル名 (例えば `/etc/papersize') を指定できます。 このファイルをオープンできると、 groff は最初の行を読み取り、上記の紙サイズを検査します。 最後の方法としては、 string には length,width (コンマの前後に空白は入れられません) の書式で、自由に紙サイズを指定できます。 length と width のどちらにも、単位がついてなければなりません。 有効な値は、インチを表す 'i'、センチメートルを表す 'c'、 ポイントを表す 'p'、パイカを表す 'P' です。 例: 12c,235p 。 数字から始まる引数は、常に自由な紙サイズ指定の書式として扱われます。 papersize は、出力メディアの垂直方向と水平方向の両方の長さを設定します。

    2 つ以上の引数を指定することもできます。 groff は左から右へ走査し、最初の有効な指定を使用します。

paperwidth n
    出力メディアの、マシン単位での物理的な水平方向の長さです。 この項目の使用はお勧めしません。 代わりに papersize を使用してください。 これは troff 自体ではなく、出力デバイスによって使用されます。

pass_filenames
    troff がドライバに対して、処理しているソースファイル名を伝えるようにします。 これは、別の tcommand にて実現されます: F filename 。

postpro program
    program を後処理プログラムとして使用します。

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

print program
    program を、印刷用のスプーラプログラムとして使用します。 省略された場合、 groff の -l と -L オプションは無視されます。

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

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

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

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

tcommand
    後処理プログラムが t と u の出力コマンドを扱えることを表します。

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

use_charnames_in_special
    このコマンドは、特殊コマンドにおいて、 名前の付いている文字を troff がエンコードすべきであることを指定します。

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

res, unitwidth, fonts, sizes の行は必須です。 DESC ファイル中のすべてのコマンドが、 troff 自体で使用されるわけではありません。 いくつかのキーワードは (付加的なものでさえも)、 後処理プログラムによって、デバイスに関する任意の情報を 保持しておくために使用されます。

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

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

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

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

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

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

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

他のコマンドは troff には無視されますが、後処理プログラムによって、 フォントに関する任意の情報をフォントファイルに保持しておくために 使用されるかもしれません。

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

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

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

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

で、 name は文字を識別します: name が単一の文字 c ならば、それは groff の入力文字 c を表します。 \c という形式で c が単一の文字なら、特殊文字 \[c] を表します。 それ以外は groff の入力文字 \[name] を表します。 これが厳密に 2 文字の xx ならば、 \(xx として入力されます。 単一の特殊文字は、 \c のように利用できないことに注意してください。 唯一の例外は `\-' で、これは `\[-]' と同一です。 --- という name は特別で、その文字に名前が無いことを表します。 そのような文字は troff 中でエスケープシーケンス \N によってのみ使われます。

groff は 8 ビット文字に対応していますが、いくつかのユーティリティでは 8 ビット文字を扱うのが困難です。 このような理由から、文字コードが n である単一の文字と等価な charn という表記法が存在します。 例えば、 char163 は文字コード 163 の文字と等価であり、 これは ISO Latin-1 で英国ポンド記号を表します。

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

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

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

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

code フィールドは、後処理プログラムが文字を印字するために使うコードを示します。 \N というエスケープシーケンスにより、 このコードを使って groff に文字を入力することもできます。 code はどんな整数でもかまいません。 0 から始まると 8 進数として扱われ、 0x や 0X で始まると 16 進数として扱われます。 しかし、エスケープシーケンス \N は 10 進整数しか受け付けないことに注意してください。

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

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

metrics フィールドの形式は次のようになります (これは 1 行に書きますが、ここでは読みやすさのために行を分けています):

    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)