X にフォントを追加する方法はさまざまです。まず、XFree86 には「フォントパス」というものがあり、フォントを探しに行く先のディレクトリや「フォントサーバ」が列挙されています。フォントサーバというのは XFree86 でフォントを利用するためのバックグラウンドプロセスに過ぎません。その強みは、リモートのディスプレイにもフォントを送れることです。
最近では xfs(そのものずばり "X font server")にパッチが当てられ、TrueType フォントの使用や単独のプログラムとしての実行が可能になりました。パッチの当たったバージョンは RedHat 系のディストリビューションに同梱されていますし、XFree86 4.0 以降にも収録されています。実のところ、xfs は XFree86 付属の標準フォントサーバそのもので、ソースコードは XFree86 のソースツリーに含まれています。ところが最近のディストリビューションには、単独で走らせることの可能なバージョンが同梱されているのです。パッチのおかげで TrueType フォントを扱えるようになった単独プログラムの X フォントサーバこそ、フォント対策としては現時点で最高の選択と言えるでしょう(TrueType フォントは xfsft というフォントサーバを通じて利用される)。その長所は以下のとおり。
Type1 や TrueType、ビットマップなど、さまざまなフォントに対応している。
リモートのディスプレイにフォントを送れる。
フォントパスの編集をぐっと手軽にしてくれる――xfs があれば、もはや設定ファイルを書き換える必要はなく、chkfontpath というコマンドラインのユーティリティで設定できるのです。これならユーザーが楽をできるばかりか、パッケージ作成時の安全性確保やスクリプト活用も容易になります。
ディストリビューションが違えば設定も違ってきますから、なんでも一概に論じることはできません。ユーザーの環境は三つのグループに分類できます。
単独の xfs がインストールしてあり、TrueType フォントに対応するためのパッチも当ててあるケース。ここに分類されるのは、RedHat をはじめ、Mandrake や TurboLinux といった RedHat 系のディストリビューションです。Debian 3.0 にもパッチの当たった xfs が同梱されることになっています(現在テスト中)。このグループの場合は TrueType も Type1 も xfs を通じてインストールするのがもっとも賢明なやりかたでしょう。
単独の xfs はインストールしてあるが TrueType フォントには対応していないというケースも、ディストリビューションによってはありえます。XFree86 で TrueType がサポートされているのは 4.0 以降のバージョンに限られます。ここに分類されるのは Debian の安定版("potato")です。この場合は Type1 フォントのインストールに xfs、TrueType フォントのインストールに xfstt を使うのがベストでしょう。Debian に TrueType フォントをインストールする際の詳細については、TrueType Fonts in Debian mini-HOWTO を参照してもよいでしょう。
さらに xfs がインストールされていないケース。この環境で Type1 フォントをインストールするには、XFree86 のパスにフォントを追加してから xset を利用することになります。また、TrueType フォントのインストールはどうかというと、XFree86 4.x では X フォントパスへの追加という方法を取れますが、XFree86 3.x では xfstt を使う必要があります。
XFree86 がフォントを探しだすときは、フォントのあるディレクトリ(ないしサーバ――詳細は後述)をリストアップしたもの、すなわち「フォントパス」をたどります。アプリケーションがフォントを要求すると、XFree86 はフォントパスに含まれるディレクトリをひとつずつ捜索し、要求されたフォントを見つけてくるわけです。フォントを使うにはフォントパスを設定する必要があります。フォントパスにディレクトリを追加するときは、以下のコマンドを実行してください。
xset fp+ ディレクトリのパス |
xset fp rehash |
... Section "Files" ... FontPath /usr/share/fonts/myfonts ... EndSection ... |
X で Type1 フォントを使うには type1inst というユーティリティの助けを借りるのが一番お手軽です。これは Perl スクリプトで、同フォントの利用に必要なふたつのファイル、fonts.dir と fonts.scale を自動的に作成します。フォントのあるディレクトリに移動したら、あとは type1inst を実行するだけです。
cd ディレクトリのパス type1inst |
つづいてはフォントをフォントパスに追加します。単独プログラムの xfs(Section 4.4 参照)がすでに起動している状態なら、xfs の設定ファイルを編集してください。RedHat をお使いなら chkfontpath を実行するだけでかまいません。コマンドの形式は「chkfontpath --add ディレクトリのパス」となります。
あとは xfs の再起動か、SIGHUP を送ることによる再読みこみを通じて、X でフォントを使えるようになるはずです。場合によっては xset fp rehash を実行する必要もあります。
先述したとおり、新規フォントのあるディレクトリをフォントパスに追加する必要があります。
TrueType フォントを追加するには、同フォントを扱えるフォントサーバが必要ですから、手順はやや面倒になります。こうしたフォントサーバとして挙げられるのは xfstt と xfs です。
xfstt は TrueType 専用のフォントサーバです。設定しやすく、なかなか便利なのですが、普及度の面では xfs に水をあけられているようですね。xfs のほうが優れている点といえば、Type1 と TrueType の両方に対応していることでしょう。
ダウンロードした xfstt をインストールすれば、セットアップはおしまいです。インストールがすんだら、以下の手順に従ってください。
適切なディレクトリにフォントをインストール(パッケージの付属文書に目を通すこと)。
そのディレクトリに移動して xfstt --sync を実行。これによって xfstt はフォントを探しだし、fonts.dir ファイルを作成する。
フォントパスに「unix/:7100」の文字列を追加。
訳注:xfs との衝突を避けるため、xfstt 0.9.99 以降ではポート番号が 7100 から 7101 に変更されています。また、フォントを使うには xfstt をバックグラウンドで起動しておかなければなりません。詳しくは xfstt の付属文書をご覧ください。
/usr/X11R6/bin/xfstt --sync /usr/X11R6/bin/xfstt & |
最近のディストリビューションは、X 用フォントサーバの xfs を単独実行の可能なプログラムとして同梱していることもあります。注目すべきは RedHat 系のディストリビューションで、このようにモジュール化された xfs はコンパイル時から TrueType フォントに対応しています。Debian にも xfs は収録されていますが、TrueType のサポートが組みこまれているのはテスト版("woody")だけで、安定版("potato")は未対応です。
独立したサーバとして動かせるタイプの xfs には数々の利点がありますし、コンパイルの時点で TrueType のサポート機能が組みこまれていればなおさらです。最大の長所はといえば、もはや X サーバから切り離されているため、リモートのディスプレイにもフォントを表示できるということでしょう。また、フォントパスの編集もずいぶん楽になります。
フォントサーバの xfs 自体にもフォントパスがあります。と言ったら、だからどうなんだと思われるかもしれませんね。どういうことができるかというと――XFree86 のフォントパスに「unix/:ポート番号」という記述を追加することで、このフォントパスにフォントサーバ xfs を組みこめるわけです。いったんそうしてしまえば、xfs のフォントパスに含まれるフォントはすべて XFree86 で利用できるようになります。
xfs のフォントパスを定義するのは xfs の設定ファイルで、RedHat なら /etc/X11/fs/config、Debian なら /etc/X11/xfs/config に相当します。RedHat をお使いなら、直接このファイルを編集する必要はなく、chkfontpath ユーティリティを利用できます。コマンドの書式はあっさりしたものです。
chkfontpath --add ディレクトリのパス |
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 ... |
xfs 向けにフォントを用意するときは、以下の手順を踏むことになります。
xfs がインストールされていない場合は、まずインストール。
追加するフォントをディレクトリに格納。
Type1 フォントをインストールするときは、そのディレクトリで type1inst を実行してから、xfs にディレクトリを認識させる。
TrueType フォントをインストールするときは(ディストリビューションによっては xfs で TrueType を扱えないことに注意!)、新規フォントのあるディレクトリで以下のコマンドを実行し、xfs にディレクトリを認識させる。
ttmkfdir -o fonts.scale mkfontdir |
この時点で新しいディレクトリを xfs のサーチパスに追加できる。RedHat 系のユーザーは chkfontpath ユーティリティを使えばよい。その他のユーザーは xfs の設定ファイルを編集すること。
xfs がインストールずみなら、どのポートで動作しているか確認すべき。それには次のコマンドを実行する。
ps ax | grep xfs |
次いで XFree86 のフォントパスを確認。
xset -q |
「unix/:ポート番号」という感じの文字列がフォントパスに含まれている場合、「ポート番号」はフォントサーバの動作するポートを意味しており、すでに xfs はきちんとセットアップされていることになる。そうでない場合は xfs を XFree86 のフォントパスに追加すること。
xset fp+ unix/:ポート番号 xset fp rehash |
... Section "Files" ... FontPath "unix/:-1" ... EndSection ... |
xfs がきちんとインストールしてあれば、上述の再読み込みや再起動は次のコマンドで可能になる。
/etc/rc.d/init.d/xfs restart |
xfs を再起動したあとは X を再起動するとよい。