5. タイプ 1 フォントを X11 で利用する

X11 では、 .pfa 形式、もしくは、 .pfb 形式のフォントのどちらでも利用できます。 X11 では、フォントは /usr/X11R6/lib/X11/fonts 以下のさまざまなサブディレクトリに置かれています。 それぞれのディレクトリにある fonts.dir ファイルの内容によって、 それぞれのフォントのファイルと X11 上でのフォント名が関連付けられています。

Type1 という名前のディレクトリが既に存在しています。 新しいフォントを追加する最も簡単な方法は、 このディレクトリのそのフォントファイルを置くことです。 新しいフォントは別なディレクトリに置いておき、Type1 ディレクトリに追加フォントへのシンボリックリンクを張る方がより優れています。 なぜなら、この方法をとることでオリジナルで供給されているフォントと混乱することなく、 これらのフォントを追加した跡を残すことがより簡単にできるからです。 この方法は、例えば、次のように行います。

フォントファイルを入れるディレクトリを作成します。
% mkdir -p /usr/local/share/fonts/type1
% cd /usr/local/share/fonts/type1

ここに .pfa または .pfb ファイルと .afm ファイルを置きます。
フォントの readme ファイルやその他のドキュメントをこのディ
レクトリに置いても構いません。
% cp /cdrom/fonts/atm/showboat/showboat.pfb .
% cp /cdrom/fonts/atm/showboat/showboat.afm .

フォントのクロスリファレンスのためにインデックスを変更します。
% echo showboat - InfoMagic CICA, Dec 1994, /fonts/atm/showboat >>INDEX

さて、新しいフォントを X11 で利用するためには、 そのフォントファイルを利用できるようにして、 フォント名のファイルを更新する必要があります。 X11 のフォント名は次のようになっています。

-bitstream-charter-medium-r-normal-xxx-0-0-0-0-p-0-iso8859-1
     |        |      |    |   |     |  | | | | | |    \    \
     |        |      |    |   |     \  \ \ \ \ \ \     +----+- character set
     |        |      |    |   \      \  \ \ \ \ \ +- average width
     |        |      |    |    \      \  \ \ \ \ +- spacing
     |        |      |    \     \      \  \ \ \ +- vertical res.
     |        |      |     \     \      \  \ \ +- horizontal res.
     |        |      |      \     \      \  \ +- points
     |        |      |       \     \      \  +- pixels
     |        |      |        \     \      \
  foundry  family  weight   slant  width  additional style

新しいフォントそれぞれに対して、新しい名前を付ける必要があります。 フォント付属のドキュメントにフォントに関する情報があれば、 名前を作る際の基になるかもしれません。そのような情報がない場合は、 フォントに対して strings(1) を使うと何らかのアイデアが得ることができます。例えば、

% strings showboat.pfb | more
%!FontType1-1.0: Showboat 001.001
%%CreationDate: 1/15/91 5:16:03 PM
%%VMusage: 1024 45747
% Generated by Fontographer 3.1
% Showboat
 1991 by David Rakowski.  Alle Rechte Vorbehalten.
FontDirectory/Showboat known{/Showboat findfont dup/UniqueID known{dup
/UniqueID get 4962377 eq exch/FontType get 1 eq and}{pop false}ifelse
{save true}{false}ifelse}{false}ifelse
12 dict begin
/FontInfo 9 dict dup begin
 /version (001.001) readonly def
 /FullName (Showboat) readonly def
 /FamilyName (Showboat) readonly def
 /Weight (Medium) readonly def
 /ItalicAngle 0 def
 /isFixedPitch false def
 /UnderlinePosition -106 def
 /UnderlineThickness 16 def
 /Notice (Showboat
 1991 by David Rakowski.  Alle Rechte Vorbehalten.) readonly def
end readonly def
/FontName /Showboat def
--stdin--

この情報から、次のような名前が考えられます:

-type1-Showboat-medium-r-normal-decorative-0-0-0-0-p-0-iso8859-1

この名前の構成は次の通りです。

型 (foundry)

新フォントは type1 と名付けることにしましょう。

族 (family)

フォントの名前です。

重み (weight)

normal (普通)、bold (太い)、medium (中間)、 semibold (やや太め) などがあります。上記の strings(1) の出力より、 フォントの重みは medium であると考えられます。

傾斜 (slant)

roman (ローマン体)、italic (イタリック体)、oblique (斜字体) などがあります。 ItalicAngle が0になっていることにより、 roman を使っています。

normal (普通)、wide (幅広)、condensed (圧縮)、extended(拡張) などがあります。上記で調べた結果から、 normal を仮定します。

追加スタイル

通常は省略されますが、フォントに装飾用 (decorative) 英大文字が含まれていることをここで示します。

スペーシング

proportional (プロポーショナル (訳注: 字形に応じて幅が変化するフォント)) または monospaced (単一幅フォント) があります。ここでは Proportional としてありますが、これは isFixedPitch が false (偽) になっているためです。

これらの名前は全て任意なのですが、 既存の慣習と互換性を保つよう努力すべきでしょう。 X11 プログラムでは、 フォントはワイルドカードを含んだ名前で参照されます。ですから、 フォント名は何らかの意味づけを持って選択されるべきでしょう。 (訳注 : 適当なフォントを探すとき、) ある人は単純に以下の名前を使うことから始めるかもしれません。

…-normal-r-normal-…-p-…
	
そして、 xfontsel(1) で該当するフォントを調べてみて、そのフォントの形を見ながら、 名前を調節するかもしれません。

それでは、ここまでの例を完結させることにしましょう。

X11 に対してフォントをアクセスできるようにします。
% cd /usr/X11R6/lib/X11/fonts/Type1
% ln -s /usr/local/share/fonts/type1/showboat.pfb .

fonts.dir と fonts.scale を編集して、フォントを記述する行を追加し、最初の行にある総フォント数を増やします。
% ex fonts.dir
:1p
25
:1c
26
.
:$a
showboat.pfb -type1-showboat-medium-r-normal-decorative-0-0-0-0-p-0-iso8859-1
.
:wq

fonts.scalefonts.dirと同一内容のようですので…
% cp fonts.dir fonts.scale

X11 に内容が変更されたことを伝えます。
% xset fp rehash

新しいフォントを試してみます。
% xfontsel -pattern -type1-*

参考文献: xfontsel(1) xset(1)The X Windows System in a NutshellO'Reilly & Associates

本文書、および他の文書は ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/ からダウンロードできます。

FreeBSD に関する質問がある場合には、ドキュメント を読んだ上で <questions@FreeBSD.org> まで (英語で) 連絡してください。
本文書に関する質問については、<doc@FreeBSD.org> まで電子メールを (英語で) 送ってください。