4. X でフォントを使う

X にフォントを追加する方法はさまざまです。まず、XFree86 には「フォントパス」というものがあり、フォントを探しに行く先のディレクトリや「フォントサーバ」が列挙されています。フォントサーバというのは XFree86 でフォントを利用するためのバックグラウンドプロセスに過ぎません。その強みは、リモートのディスプレイにもフォントを送れることです。

最近では xfs(そのものずばり "X font server")にパッチが当てられ、TrueType フォントの使用や単独のプログラムとしての実行が可能になりました。パッチの当たったバージョンは RedHat 系のディストリビューションに同梱されていますし、XFree86 4.0 以降にも収録されています。実のところ、xfs は XFree86 付属の標準フォントサーバそのもので、ソースコードは XFree86 のソースツリーに含まれています。ところが最近のディストリビューションには、単独で走らせることの可能なバージョンが同梱されているのです。パッチのおかげで TrueType フォントを扱えるようになった単独プログラムの X フォントサーバこそ、フォント対策としては現時点で最高の選択と言えるでしょう(TrueType フォントは xfsft というフォントサーバを通じて利用される)。その長所は以下のとおり。

ディストリビューションが違えば設定も違ってきますから、なんでも一概に論じることはできません。ユーザーの環境は三つのグループに分類できます。

4.1. フォントパス

XFree86 がフォントを探しだすときは、フォントのあるディレクトリ(ないしサーバ――詳細は後述)をリストアップしたもの、すなわち「フォントパス」をたどります。アプリケーションがフォントを要求すると、XFree86 はフォントパスに含まれるディレクトリをひとつずつ捜索し、要求されたフォントを見つけてくるわけです。フォントを使うにはフォントパスを設定する必要があります。フォントパスにディレクトリを追加するときは、以下のコマンドを実行してください。
	xset fp+ ディレクトリのパス
その後は次のコマンドを入力し、利用できるフォントを X サーバに再認識させます。
	xset fp rehash
これらのコマンドは自動的に実行したいところでしょうから、自分の .xinitrc ファイルに記入してしまいましょう(X の起動法によっては .Xclients ないし .xsession に記入すべき場合もある。三ファイルのうちふたつをシンボリックリンクにしてしまい、残るひとつをリンク先にすれば、面倒が避けられて便利)。また、コマンドを自動的に実行するには XF86Config を編集する方法もあります。X の起動時に /usr/share/fonts/myfonts をフォントパスに追加するなら、XF86Config に次のような記述を書き足すわけです。
	...
	Section "Files"
	...
	
	FontPath /usr/share/fonts/myfonts
	...
	EndSection
	...
XF86Config を編集する方法の利点は、設定の変更がシステム全体に反映されることでしょう。

4.2. Type1 フォントのインストール

4.2.2. xfs パッケージがある場合

つづいてはフォントをフォントパスに追加します。単独プログラムの xfs(Section 4.4 参照)がすでに起動している状態なら、xfs の設定ファイルを編集してください。RedHat をお使いなら chkfontpath を実行するだけでかまいません。コマンドの形式は「chkfontpath --add ディレクトリのパス」となります。

あとは xfs の再起動か、SIGHUP を送ることによる再読みこみを通じて、X でフォントを使えるようになるはずです。場合によっては xset fp rehash を実行する必要もあります。

4.3. TrueType フォント

TrueType フォントを追加するには、同フォントを扱えるフォントサーバが必要ですから、手順はやや面倒になります。こうしたフォントサーバとして挙げられるのは xfstt と xfs です。

xfstt は TrueType 専用のフォントサーバです。設定しやすく、なかなか便利なのですが、普及度の面では xfs に水をあけられているようですね。xfs のほうが優れている点といえば、Type1 と TrueType の両方に対応していることでしょう。

4.3.1. xfstt

ダウンロードした xfstt をインストールすれば、セットアップはおしまいです。インストールがすんだら、以下の手順に従ってください。

  1. 適切なディレクトリにフォントをインストール(パッケージの付属文書に目を通すこと)。

  2. そのディレクトリに移動して xfstt --sync を実行。これによって xfstt はフォントを探しだし、fonts.dir ファイルを作成する。

  3. フォントパスに「unix/:7100」の文字列を追加。

    訳注:xfs との衝突を避けるため、xfstt 0.9.99 以降ではポート番号が 7100 から 7101 に変更されています。また、フォントを使うには xfstt をバックグラウンドで起動しておかなければなりません。詳しくは xfstt の付属文書をご覧ください。

ここまで来れば、追加した TrueType フォントは表示可能となり、GIMP や Netscape といったアプリケーションで利用できるようになっているはずです。xfstt はシステムの起動時に必ず起動するよう設定しておくほうがいいかもしれません。起動ファイルがパッケージに含まれているかどうか確認してください(RPM を利用しているなら、rpm -ql xfstt | grep init を実行し、/etc/rc.d/init.d/xfstt というような名前のファイルを探せばよい)。起動用のスクリプトが見つからない場合は、/etc/rc.local にこんな感じの二行を追記するだけで結構です。
	/usr/X11R6/bin/xfstt --sync
	/usr/X11R6/bin/xfstt &

4.4. xfs

最近のディストリビューションは、X 用フォントサーバの xfs を単独実行の可能なプログラムとして同梱していることもあります。注目すべきは RedHat 系のディストリビューションで、このようにモジュール化された xfs はコンパイル時から TrueType フォントに対応しています。Debian にも xfs は収録されていますが、TrueType のサポートが組みこまれているのはテスト版("woody")だけで、安定版("potato")は未対応です。

独立したサーバとして動かせるタイプの xfs には数々の利点がありますし、コンパイルの時点で TrueType のサポート機能が組みこまれていればなおさらです。最大の長所はといえば、もはや X サーバから切り離されているため、リモートのディスプレイにもフォントを表示できるということでしょう。また、フォントパスの編集もずいぶん楽になります。

4.4.1. xfs のパス

フォントサーバの xfs 自体にもフォントパスがあります。と言ったら、だからどうなんだと思われるかもしれませんね。どういうことができるかというと――XFree86 のフォントパスに「unix/:ポート番号」という記述を追加することで、このフォントパスにフォントサーバ xfs を組みこめるわけです。いったんそうしてしまえば、xfs のフォントパスに含まれるフォントはすべて XFree86 で利用できるようになります。

xfs のフォントパスを定義するのは xfs の設定ファイルで、RedHat なら /etc/X11/fs/config、Debian なら /etc/X11/xfs/config に相当します。RedHat をお使いなら、直接このファイルを編集する必要はなく、chkfontpath ユーティリティを利用できます。コマンドの書式はあっさりしたものです。
	chkfontpath --add ディレクトリのパス
ほかのディストリビューションの場合は、こんな具合に設定ファイルを編集すれば OK です。
	catalogue = /usr/X11R6/lib/X11/fonts/misc:unscaled,
	...
	/usr/share/fonts/my_new_fonts/,
	...
	/usr/share/fonts/some_other_directory
	# サイズを 12 ポイントにするには 12×10
	default-point-size = 120
	...
上記の例では /usr/share/fonts/my_new_fonts/ を xfs のフォントパスに追加しています。注意してほしいのはディレクトリを列挙した部分の最終行にカンマがついていないことです。こうして変更したフォントパスを有効にするには、xfs に設定を読みこませる必要がありますので、/etc/init.d/xfs reload を実行するか、あるいは kill -HUP [pid] ないし killall -HUP xfs で SIGHUP を送ってください。代わりに xfs を再起動してもかまいませんが、その場合は X も再起動させるほうがよいでしょう。

4.4.2. xfs にフォントをインストールする

xfs 向けにフォントを用意するときは、以下の手順を踏むことになります。