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

寄稿: Murray Stokely.

6.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 Collection から入れる場合には次のコマンドを実行してください。

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

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

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

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

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

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

6.5.2. TrueType® フォント

Xorg には、 TrueType フォントのレンダリング機能が組み込まれています。 この機能を実現するために 2 つの異なるモジュールがあります。 ここでは、freetype の方が他のフォントレンダリングバックエンドと整合性が高いので、 このモジュールを使うことにします。 freetype モジュールを使うためには /etc/X11/xorg.conf ファイルの "Module" セクションに以下の行を追加するだけです。

Load  "freetype"

さて、まずは TrueType フォント用のディレクトリ (例えば /usr/local/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/local/lib/X11/fonts/TrueType
# ttmkfdir -o fonts.dir

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

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

とするか、もしくは xorg.conf ファイルに FontPath 行を追加します。

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

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

更新 : Joe Marcus Clarke.

/usr/local/lib/X11/fonts/~/.fonts/ にあるすべての X11 のフォントが、Xft に対応しているアプリケーションで自動的にアンチエイリアス表示できるようになりました。 KDE, GNOME および Firefox のような最新のアプリケーションは、Xft に対応しています。

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

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


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

すでに説明したように、 /usr/local/lib/X11/fonts/~/.fonts/ にあるすべてのフォントは Xft 対応のアプリケーションで利用できます。 これら 2 つ以外に別のディレクトリを追加したいのなら、 /usr/local/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>

(これは固定サイズのフォントに "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 の様なある種のフォントは、 アンチエイリアスすると問題が起こるでしょう。 たいてい、フォントが縦に半分に切られて表示されます。 最悪の場合、アプリケーションがクラッシュします。 これを回避するには、以下を 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> タグで終わるようにしてください。 これを行わなければ、変更は無視されるでしょう。

最後に、ユーザは自分だけの設定を各自の .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>
     

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

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

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