次のページ 前のページ 目次へ

7. フォントと色について

X 上でフォントと色を使うにあたっては、たくさんの、そしてちょっと込 み入ったやり方があります。多くのシステムのように簡単にはいきません。例 えば、フォントは長い文字列で指定しなければなりません。フォントのリソー スを完全な形で指定しなければならず、最初は少々複雑に感じることでしょう。 でもちょっと解説を読むだけで、あなたもすぐにエキスパートになれるはずで す。

7.1 フォント指定の怪

X 論理フォント記述(XLFD: X Logical Font Description)はフォ ントの完全な名前です。これは以下に示す項目で構成されます。

これでは混乱してしまうので、xfontsel プログラム (X ウィンドウ のフォント選択プログラムとして通常使われます) が用意されています (実に便 利)。試しに今すぐ起動してみましょう。メインウィンドウに訳のわからない ものが現れてきます。しかし、そこで fndry ボタンの上でマウスの 左ボタンを押しっぱなしにしてみましょう。もしフォントが正しくインストー ルされていれば、メニューに adobe やら b&h, bitstream が出てくると思います。b&h でも何でも一 つだけ選択し、下部のウィンドウに見慣れたものが出てくることに注目してく ださい。普通 xfontsel は一番左の項目から始めて、だんだん右 へ指定しながら絞っていきます。fndry オプションを選択する前にその右の 項目を選択してもかまいません。各々のオプションは互いの依存関係により普 通は勝手に選択されてしまうからです。

fmly の項目まで来たときには、ほとんどのオプションがグレーになっ ていて、3 項目だけが残されているのがお分かりいただけると思います。これ は指定されたフォント作成者に対応するフォントファミリーは 3 つしかあり ませんよということです。いくつかのフォントファミリーは別のフォント作成 者の下にも現れます。例えば、 AdobeBitstreamCourier フォントを作っています。次は wght へ進みましょ う。長い道程を経て望みのフォントに近づいてきました。必ずしも一つのフォ ントを指定するためにすべての項目を埋めなければならないわけではありませ ん。あなたのシステムにそんなにたくさんのフォントはありません から! 選択しない代わりに * 印がついているオプションはそれらの うちのどれでも良いことを表します。

フォント選択で一番うれしい機能が select ボタンでしょう。select ボタン を押すと選択されたフォント名が X のクリップボードにコピーされ、書いて いるドキュメントの中や作業中の何かにペーストすることができます。例えば、 xterm ウィンドウで xterm - font の後にフォント名を " の後に打ち込みたいと思ったとします。そこでマウスの真ん中ボタン (または、 真ん中ボタンが無ければ右ボタンと左ボタンを同時に押します) を押してくだ さい。そうするとクリップボードから選択されたフォント名がペーストされる ことでしょう。あとは " を入力して括弧を閉じ、Enter を押すだけです。 具体的には、 Courier フォントを使った大きくて格好良い xterm を開くには以下のように指定すれば良いでしょう。 xterm -font "-adobe-courier-medium-r-*-*-14-*-*-*-*-*-*-*" 選択したフォントを使った新しい xterm が開いたはずです。

xfd はフォントを調べるのにとても役に立つユーティリティです。 コマンドラインで xfd -fn fixed のように起動すると、そのフォン トに対する文字集合を表示します。さしずめ Macintosh の keycaps ユーティ リティのような感じです。 コマンドラインオプションの -pattern を使って xfontsel で表示するためにフォントの数を制限すること もできます。続けて上で述べたようにフォント指定を引用符で囲って指定しま す。

7.2 フォントの別名と設定

時々、あの長いフォントの名前にうんざりし、実用的じゃないよなあと思 うこともあるでしょう。幸運にも、百回もキーを叩いたりする必要はありませ ん。 X はフォントのエイリアス (別名) と呼ばれる機能を提供してい ます。

/usr/X11R6/lib/fonts/misc/fonts.alias ファイルを見れば、 たくさんのフォントのショートカットを見つけることができるでしょう。例え ば 8x16-sony-fixed-medium-r-normal--16-120-100-100-c-80-iso8859-1 へのショートカットです。そして、X フォントリソースやコマンドラインでフォ ント名を指定するところなどのどこでも 8x16 を長い表現のフォント 名の代用として使うことができます。ディレクトリ 75dpi100dpi 内には同様のエイリアスがあり、ほとんどのシステムには Lucida Sans フォントのナイスなショートカットがあります。

システムにフォントを追加したりエイリアスを作るときは、(大抵は root で) コマンドをいくつか実行する必要があるでしょう。フォントを追加するときは 以下の二つのコマンドを実行する必要があります (下記はサンプルです。フォ ントを正しく再読み込みさせるには、正しいディレクトリに書き換えるか、ま たは外す必要があるでしょう)。

 mkfontdir /usr/lib/X11/fonts/misc
 xset fp rehash
 

あるフォントのエイリアスを変更したいときは、上の二つ目のコマンドを実行 するだけで良いでしょう。しかし、それが確実に行われるためのもっと良い方 法もあります。xset コマンドを使えば、サーバが使いたいフォント のパスを明確に指定したり、フォントパスから特定のディレクトリを削除する ことができます。詳しくはオンラインマニュアルを参照してください。

もうひとつの一般的な問題は、いくつかのディストリビューション (特に RedHat 5.2, 現行のバージョン) が間違った順序でフォントを設定しているこ とです。/etc/XF86Config を見てください (他のディストリビューショ ンでは違うところにあるでしょう。不幸なことに、そして私は RedHat におい てそれがどこにあるのか知りません。だから locate コマンドを使 うことになるかと…)。X 上のフォントが汚ないと思ったのならなおさらです (サイズが大きいファイルをきちんと読むのは非常に大変でしょう)。下記のよ うな一群の記述が見つかるはずです。

 FontPath   "/usr/X11R6/lib/X11/fonts/misc/"
 FontPath   "/usr/X11R6/lib/X11/fonts/75dpi/:unscaled"
 FontPath   "/usr/X11R6/lib/X11/fonts/100dpi/:unscaled"
 FontPath   "/usr/X11R6/lib/X11/fonts/Type1/"
 FontPath   "/usr/X11R6/lib/X11/fonts/Speedo/"
 

ここで記しておくべき重要なことは unscaled なビットマップフォント (misc, 75dpi, 100dpi ディレクトリ) が scaled なフォント (Type1 と Speedo のよう な) の前に記述されていることです。ビットマップフォントは X Server 向き です - 普通の使用においては scaled なフォントがあまり奇麗に見えない からです。これら scaled なフォントはおそらく Gimp や Netscape に向いているでしょ う。そしてすべてのディレクトリについてもまた、実際に存在する正しいディ レクトリかどうかのチェックをすべきです。そして後で変更したなら fonts ディレクトリの中で (root で) mkfontdir * コマン ドを実行する必要があるでしょう。

かなり新しいディストリビューション (RedHat 6.0 以降などに基づくもの) を お使いであれば、これを気にする必要はない点に注意してください。というの も、xttfs TrueType サーバがデフォルトであり、フォントを見つけ るためにパスの機構を使わないからです。

7.3 X で Type 1 フォントを使う

X ウィンドウシステムのフォントは、 X 自身でしか使われていないことを 考えると、 X が通常使用するフォント形式はあまり便利とは言えません。更 に不幸なことに、メディアの連中やフォントマニアの多くは、他のフォント形 式に則ったオペレーティングシステムを使用しています。 Type 1 フォント (PostScript 文書と共にもっとも一般的に使われています) は、フリーなもの がインターネットにかなりたくさんあります。まず手始めに ftp://ftp.cdrom.com/pub/os2/fonts/ を覗いてみましょう。

これらのフォントを利用するのは難しいことではありません。そして GIMP のようなグラフィックプログラムにとって非常に有効です。ま た、最善なのは Linux の X サーバが「何もしなくてもそのまま」 Type 1 フォ ントを理解することです。これらのフォントを使うために、最初に適切なコマ ンドを使ってアーカイブを解凍し、拡張子が .pfb のフォントをシ ステムの /usr/X11R6/lib/X11/fonts/type1/ ディレクトリに置きま す。そして、これらのフォントについて記したファイル fonts.scale をそのディレクトリに追加します(もしすでにあるなら 他のフォントのフォーマットを流用します)。

更新を X サーバに知らせるために mkfontdir を実行しなければな りません。それから、フォントパスを再読み込みさせるために xset fp rehash とコマンドを実行します。これで効果がないなら、 変更を確認するために X を再起動する必要があるかもしれません。

たくさんの Type 1 フォントを自分が使っていると分かったなら、X 以外でも (例えば GhostScript はこの形式のフォントをうまく扱うことができます) 、 James Macnicol さんが作った type1inst ユーティリティを使うとよいで しょう。このプログラムは GhostScript と X で Type 1 フォントを設定でき るようにしたり、フォントのサンプルシートを出力すること等、いろいろな使 い方ができます。これは ftp://metalab.unc.edu/pub/Linux/X11/xutils/ を探せば見つけることができるでしょう。

7.4 X で TrueType フォントを使う

Windows や MacOS のようなオペレーティングシステムを使っているなら、 たくさんの TrueType フォントがコンピュータに居座っていること でしょう。TrueType フォントは、あなたが現に使っているコンピュー タのモニタのような、小さく、解像度の低いディスプレイでも最適化できるよ うに考慮されています。また、影付きやアンチエイリアスのような非常に優れ た技術の提供も試みられています。大量の TrueType フォントを安 価で手に入れることもでき、コンピュータストアに行けば 500 以上の TrueType フォントが納められた CD を買うことができます。

X は TrueType フォントを理解できません。そして理解できるための本質的能力を (今のところ) 持ち合わせていません。ですから、フォントのレンダリング には別のプログラムが必要になります。それをするために FreeType ライブラ リが存在しますが、それを使おうと思うと、xfstt と呼ばれる TrueType のための X フォントサーバプログラムが必要になります。このプロ グラムは ftp://metalab.unc.edu/pub/Linux/X11/fonts/ にあります。

インストールは非常にわかりやすく簡単です。アーカイブを展開し、 make, make install を実行してください。 2 つ目のコマ ンドの後のエラーは意味がないので無視してください。次にすることは /usr/ttfonts と呼ばれる書き込み可能なディレクトリを作成し、 .ttf フォントをそこに置きます。これだけです! その後 xfstt --sync コマンドを実行してフォントサーバとの同期を取りま す。

エラーが出なかったら、 xfstt & コマンドを実行してフォント サーバーをバックグラウンドで走らせ、 xset fp+ unix/:7100 コマ ンドで X11 サーバにフォントサービスについて問い合わせます。エラーが返っ てこなければ、Netscape や GIMP, xfontsel などによってフォントが使える かどうか確かめることができるでしょう。最大の問題は欲しいフォントをどう やって見つけるかということですが、これは大したことではありません。

ごく最近のバージョンの xset は、このコマンドの少し修正されたバージョン を必要とすることに気づきました。なぜなら xset のコードが変更されたから です。RedHat 6.0 以降に基づくディストリビューション、あるいはこれと同 等のディストリビューションをお使いであれば、最初に xset fp+ unix/:7101 を実行するとよいでしょう。

何もかもがうまくいっているようなら、X を起動したときにフォントが使える ようにシステムを設定し直したいと思うでしょう。コマンドラインから X を 起動したのなら簡単です。二つのコマンドを前の段落から .xinitrc ファイルにさっきの順番通りに追加するだけです。次に X を起動するときか ら幸せになれるでしょう。もし xdm 経由で X を起動しているなら、 /usr/X11R6/lib/X11/xdm/Xsetup_0 ファイルに /usr/X11R6/bin/xfstt & という記述を加える必要があるでしょ う。できましたか? そうしたら xset fp+ unix/:7100 を追加して お幸せに。

TrueType フォントサーバのインストールは手の込んだ作業となることを心に 留めてください。上記のコマンドを順番通りに発行することが大切であること を覚えておきましょう。フォントサーバは X が起動する前に起動する必要が あります。そうしないなら問題が起きます。ディストリビューションに付いて くる FAQ ファイルを読んで確かめてみましょう。xfstt のオンライ ンマニュアルも読みましょう。新しいバージョンのディストリビューションの 多くでは最初から xfstt が動作するようになっているので、深く気 にする前にそうでないかどうかを調べましょう。

7.5 色について

端末ウィンドウに戻ってもうちょっと試してみましょう。コマンドライン で以下のように指定して xterm を開いてください。

 xterm -fg darkslateblue -bg red3 &
 

ウィンドウがかわいくない、仕事がはかどらないとお悩みの方、上記の例は X の非常に興味深い分野の一つであるカラーネームについてのデモとなっていま す。あまり厳密ではありませんが、色を 16 進数で覚えるよりはずっと簡単で 良い方法です。カラーネームには大文字・小文字の区別が無いことを覚えてお きましょう。

もし血みどろの詳細について興味がおありなら、もしくはサンプルを見たい、 はたまたあなた自身のもつ未知のアイデアによりばかげたカラーネームをそっ くり廃止してやる! という方は、システムの /usr/X11R6/lib/X11/rgb.txt に書かれているすべての色のリストと 16 進数についての説明が書かれていますので見てください。 xcolorsel といった名前の、実に使えるユーティリティもあります。 これは http://metalab.unc.edu/pub/Linux/ や他のおなじみの 場所にあるでしょう。

形式ばった色指定の方法は、数字で指定することです。これはカラースペース 名 (color-space-name) と数値を下記の構文に従って指定することからなります。

<colorspace-name>:<数値>/.../<数値>

RGB デバイスにおいては (一番よく使う方法でしょう) 、 "rgb:" を 使って以下の構文で指定します。

rgb:<red>/<green>/<blue> ※上記の <color> は 1 桁から 4 桁の 16 進数です。

例えば、red (赤) と指定する代わりに rgb:ffff/0/0 とす ることもできます。後方互換性を保つために、赤を指定するのに #ff0000 もしくは #ffff00000000 などおそらくよく 見かけるであろう (古い) 構文を使うこともできます。


次のページ 前のページ 目次へ