5.5. X11 でのフォントの使用

寄稿: Murray Stokely.

5.5.1. Type1 フォント

X11 に付いてくるデフォルトのフォントは通常のデスクトップパブリッシングアプリケーションにとっては理想的とは言えない程度のものです。 文字を大きくするとジャギーになりプロフェッショナルとは言えないようなものになりますし、 Netscape® での小さなフォントは頭が悪そうに見えます。 しかし、世の中には質の高い Type1 (PostScript®) フォントがいくつかあり、 X11 ではそれらを簡単に利用することができます。 例えば、URW フォントコレクション (x11-fonts/urwfonts) には高品質の Type1 フォント (Times Roman®, Helvetica®, Palatino® など) が含まれています。 freefont コレクション (x11-fonts/freefonts) にはもっとたくさんのフォントが含まれていますが、 それらは Gimp のようなグラフィックソフトウェアで使用するためのものであり、 スクリーンフォントとしては十分ではありません。さらに、X11 は簡単に TrueType® フォントを使うように設定することも可能です。 詳しくは、X(7) のマニュアルページか TrueType フォントの節 を参照してください。

上記の Type1 フォントコレクションを ports から入れる場合には次のコマンドを実行してください。

# cd /usr/ports/x11-fonts/urwfonts
# make install clean

freefont や他のコレクションでも同じようにします。 X サーバがこれらのフォントを検出できるようにするには /etc/X11/ にある X サーバ設定ファイル (Xorg では xorg.confXFree86 では XF86Config) の適切な場所に次のような行を加えます。

FontPath "/usr/X11R6/lib/X11/fonts/URW/"

別の方法としては、X のセッション中に次のようなコマンドラインを実行します。

% xset fp+ /usr/X11R6/lib/X11/fonts/URW
% xset fp rehash

これは動くのですが、X のセッションが終了すると消えてしまいます。 消えないようにするには X の起動時に読み込まれるファイル (通常の startx セッションの場合は ~/.xinitrc, XDM のようなグラフィカルなログインマネージャを通してログインする時は ~/.xsession) に加えておきます。 三番目の方法は新しい /usr/X11R6/etc/fonts/local.conf ファイルを使うことです。 これに関しては アンチエイリアスのセクションを参照してください。

5.5.2. TrueType® フォント

XFree86 4.XXorg のどちらにも この機能を実現するために二つの異なるモジュールがあります。 ここでは、freetype のほうが他のフォントレンダリングバックエンドと整合性が高いので、 このモジュールを使うことにします。 freetype モジュールを使うためには /etc/X11/xorg.conf もしくは /etc/X11/XF86Config ファイルの "Module" セクションに以下の行を追加するだけです。

Load  "freetype"

XFree86 3.3.X の場合、 TrueType フォントサーバが別に必要となります。 Xfstt がよく使われるものです。 Xfstt をインストールするのは簡単で、 x11-servers/Xfstt を利用してください。

さて、まずは TrueType フォント用のディレクトリ (例えば /usr/X11R6/lib/X11/fonts/TrueType) を作り、そこに TrueType フォントを全て放り込みましょう。 Macintosh® の TrueType フォントは、そのままでは使うことができませんので注意してください。 X11 で使うには UNIX®/MS-DOS®/Windows® 用のフォーマットでなければなりません。 ファイルを置いたら ttmkfdir を使って fonts.dir ファイルを作ってください。 このファイルにより、X は新しいファイルがイントールされたことを理解します。 ttmkfdir は FreeBSD Ports Collection, x11-fonts/ttmkfdir、からインストールできます。

# cd /usr/X11R6/lib/X11/fonts/TrueType
# ttmkfdir > fonts.dir

次に TrueType フォントのディレクトリをフォントパスに追加します。 上の Type1 フォントの場合と同じように、

% xset fp+ /usr/X11R6/lib/X11/fonts/TrueType
% xset fp rehash

とするか、もしくは xorg.conf (もしくは XF86Config) ファイルに FontPath 行を追加するのです。

これで終わりです。NetscapeGimp, StarOffice といった全ての X アプリケーションから TrueType フォントを使うことができます。 (高解像度なディスプレイで見る Web ページ上のテキストみたいな) とても小さなフォントや (StarOffice にあるような) 非常に大きなフォントもかなり綺麗に見えるようになることでしょう。

5.5.3. フォントのアンチエイリアス

更新 : Joe Marcus Clarke.

アンチエイリアスは XFree86 4.0.2 から X11 で利用できるようになっています。 しかし、XFree86 4.3.0 以前はフォントの設定は扱いづらいものでした。 XFree86 4.3.0 から、 /usr/X11R6/lib/X11/fonts/~/.fonts/ にあるすべての X11 のフォントが Xft に対応しているアプリケーションで自動的にアンチエイリアス表示できるようになりました。 全てのアプリケーションが Xft に対応しているわけではありませんが、 多くは Xft に対応しています。 Xft に対応するアプリケーションの一例として、Qt 2.3 以降 (KDE デスクトップ向けのツールキット)、GTK+ 2.0 以降 (GNOME デスクトップ向けのツールキット)、そして Mozilla 1.2 以降などがあります。

どのフォントがアンチエイリアスされるかを制御するため、 もしくはアンチエイリアスの特性を設定するために、 /usr/X11R6/etc/fonts/local.conf ファイルを作成 (すでに存在しているのなら編集) します。 多くの Xft フォントシステムの高度な機能をこのファイルを使って調整できます。 この節ではいくつか簡単なところだけを紹介します。 詳しくは、fonts-conf(5) をご覧ください。

このファイルは XML 形式でなければなりません。 大文字小文字の区別に注意を払い、 全てのタグが正しく閉じられているか確認してください。 ファイルは一般的な XML ヘッダで始まり、DOCTYPE 定義と <fontconfig> タグがその後にきます。

        <?xml version="1.0"?>
        <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
        <fontconfig>
     

すでに説明したように、 /usr/X11R6/lib/X11/fonts/~/.fonts/ にある全てのフォントは Xft 対応のアプリケーションで利用できます。 これら 2 つ以外の別のディレクトリを追加したいのなら、 /usr/X11R6/etc/fonts/local.conf に以下のような行を追加します。

<dir>/path/to/my/fonts</dir>

新しいフォント、 そして特に新しいフォントディレクトリを追加したら、 以下のコマンドを実行してフォントキャッシュを再構築してください。

# fc-cache -f

アンチエイリアスをかけることによって境界が少しぼやけ、 そのためにとても小さなテキストはさらに読みやすくなり、 大きなフォントでは“ギザギザ”が消えるのです。 しかし、普通のテキストにかけた場合には目が疲れることになります。 14 ポイント以下のサイズのフォントについて、 アンチエイリアスをかけないようにするには次の行を加えます。

        <match target="font">
            <test name="size" compare="less">
                <double>14</double>
            </test>
            <edit name="antialias" mode="assign">
                <bool>false</bool>
            </edit>
        </match>
        <match target="font">
            <test name="pixelsize" compare="less" qual="any">
                <double>14</double>
            </test>
            <edit mode="assign" name="antialias">
                <bool>false</bool>
            </edit>
        </match>

いくつかの等幅フォントは、 アンチエイリアスをかけるとスペーシングがうまくいかなくなる場合があります。 特に KDE でその傾向があるようです。 解決策の一つとして、そういったフォントのスペーシングを 100 に設定する方法があります。 そうするためには次の行を加えてください。

        <match target="pattern" name="family">
            <test qual="any" name="family">
                <string>fixed</string>
            </test>
            <edit name="family" mode="assign">
                <string>mono</string>
            </edit>
        </match>
        <match target="pattern" name="family">
            <test qual="any" name="family">
                <string>console</string>
            </test>
            <edit name="family" mode="assign">
                <string>mono</string>
            </edit>
        </match>

(これは fixed というフォントに、 "mono" という一般名を別名として付けます)。 そして以下を追加します。

        <match target="pattern" name="family">
            <test qual="any" name="family">
                <string>mono</string>
            </test>
            <edit name="spacing" mode="assign">
                <int>100</int>
            </edit>
        </match>

Helvetica の様なある種のフォントは、 アンチエイリアスをかけると問題が起こるでしょう。 たいてい、フォントが縦に半分に切られて表示されます。 最悪の場合、Mozilla の様なアプリケーションがクラッシュします。 これを回避するには、以下を local.conf に追加します。

        <match target="pattern" name="family">
            <test qual="any" name="family">
                <string>Helvetica</string>
            </test>
            <edit name="family" mode="assign">
                <string>sans-serif</string>
            </edit>
        </match>

local.conf の編集を終えたら、 ファイルの末尾に </fontconfig> タグを追加してください。 これを行わなければ、変更は無視されるでしょう。

X11 とともにインストールされるデフォルトのフォントセットは、 アンチエイリアスをかけるにはあまり向いていません。 デフォルトのフォントセットとしてよりよいものが x11-fonts/bitstream-vera にあります。この port は、 /usr/X11R6/etc/fonts/local.conf ファイルがまだ存在していなければ作成します。 ファイルが存在すると、port は /usr/X11R6/etc/fonts/local.conf-vera ファイルを作成します。このファイルの内容を /usr/X11R6/etc/fonts/local.conf へ追加してください。そうすれば、Bitstream フォントがデフォルトの X11 Serif, Sans Serif そして Monospaced フォントを自動的に置き換えます。

最後に、ユーザは自分だけの設定を各自の .fonts.conf ファイルに追加できます。 これを行うためには、それぞれのユーザが単に ~/.fonts.conf を作成するだけです。 このファイルも XML 形式でなければなりません。

最後に一つ。LCD スクリーンではサブピクセルサンプリングが必要な場合があります。 これは、基本的には (水平方向に分かれている) 赤、緑、 青の各コンポーネントを別々に扱うことによって水平方向の解像度を良くするというもので、 そうすることによって劇的な結果が得られます。 これを有効にするには local.conf ファイルに次の行を加えます。

        <match target="font">
            <test qual="all" name="rgba">
                <const>unknown</const>
            </test>
            <edit name="rgba" mode="assign">
                <const>rgb</const>
            </edit>
        </match>
     

Note: ディスプレイの種類にもよりますが、 rgb ではなく bgrvrgb、もしくは vbgr の場合もあるので、 試してみて最も良いものを使ってください。

アンチエイリアスは、次に X サーバを立ち上げた時から有効になります。しかし、 上でも述べたようにその恩恵を受けるにはプログラム側での対処も必要です。 今のところ Qt ツールキットは対応しているため、 KDE 環境全体でアンチエイリアスのかかったフォントを用いることができます。 GTK+ と GNOME も “Font” capplet を通してアンチエイリアスを利用できます (詳しくはSection 5.7.1.3を参照してください)。 デフォルトで、Mozilla 1.2 以降は 自動的にアンチエイリアスを使用します。 これを無効にするには、-DWITHOUT_XFT フラグをつけて Mozilla を再ビルドします。