groff_font - groff
のデバイスとフォントを記述するファイルの書式
groff のフォントの書式は
ditroff
のフォントの書式に対し、
ほぼスーパセットになっています。
ditroff
のフォントの書式とは異なり、
関連したバイナリ書式はありません。
name
というデバイス用のフォントファイルは
devname
というディレクトリに納められます。
ファイルには 2
つの種類があります:
それは
DESC
と呼ばれるデバイス記述ファイルと、各フォント
F ごとに存在する
F
と呼ばれるフォントファイルです。
これらはテキストファイルであり、関連したバイナリ書式の
ファイルはありません。
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 では `£'
と表現されます。
行の 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).