第12章 グラフィカルユーザインターフェイスを利用したフォントのインストールと設定

目次

12.1. X11 コアフォント
12.2. Xft

openSUSE® での追加フォントのインストールは非常に簡単です。単純に X11 フォントパスとして指定されているディレクトリ (詳しくは 12.1項 「X11 コアフォント」 をお読みください) の いずれかにフォントをコピーするだけです。また、これらのフォントを使用できる ようにするには、そのディレクトリが /etc/fonts/fonts.conf ファイル (詳しくは 12.2項 「Xft」 をお読みください) に書かれているか、もしくは /etc/fonts/suse-font-dirs.conf ファイルで指定されたディレクトリ以下に存在する必要があります。

下記は /etc/fonts/fonts.conf ファイルの抜粋です。 このファイルは多くの設定で用いられる標準的な設定ファイルです。また、この 設定ファイルでは /etc/fonts/conf.d ディレクトリの 内容を取り込むようにも設定しています。 fontconfig では、このディレクトリ 以下の全てのファイルやシンボリックリンクのうち、 2 桁の数字で始まる ファイルを読み込みます。この機能についての詳細な説明は、 /etc/fonts/conf.d/README ファイルをお読みください。

<!-- Font directory list -->
<dir>/usr/share/fonts</dir>
<dir>/usr/X11R6/lib/X11/fonts</dir> 
<dir>/opt/kde3/share/fonts</dir>
<dir>/usr/local/share/fonts</dir>
<dir>~/.fonts</dir>

また、 /etc/fonts/suse-font-dirs.conf ファイルは、 OpenOffice.org や Java, Adobe Acrobat Reader のような (主にサードパーティ 製の) アプリケーションと共に出荷されるフォントを引き出すために自動生成 されるものです。いくつかの典型的な項目を下記に示します:

<dir>/usr/lib/Adobe/Reader9/Resource/Font</dir>
<dir>/usr/lib/Adobe/Reader9/Resource/Font/PFM</dir>
 

追加のフォントをシステム全体に対してインストールするには、フォントファイル を /usr/share/fonts/truetype などの適切なディレクトリ にコピーしてください (もちろん root で実行します) 。また、 KDE 個人設定内の KDE フォントインストーラ からも実行することができます。結果はいずれを実施しても同じになります。

また、実際のフォントをコピーする代わりに、シンボリックリンクを作成することも できます。たとえば Windows 上にライセンスによる制限が課されたフォントが存在 していて、それらを使用したい場合などに便利です。シンボリックリンクを作成 したら、 SuSEconfig --module fonts コマンドを実行します。

SuSEconfig --module fonts を実行すると、 /usr/sbin/fonts-config スクリプトを実行します。この スクリプトはフォント設定を扱うためのものです。このスクリプトに関する 詳細は、マニュアルページ (man fonts-config ) をお読みください。

ビットマップフォント, TrueType フォント, OpenType フォント, Type1 (PostScript) 、 いずれのフォントでも手順は同じです。これら全てのフォントは、 fonts-config が認識できるディレクトリにインストールすること ができます。

また、 X.Org では 2 種類の異なるフォントシステムを用意しています: 1 つは X11 コアフォントシステム 、もう 1 つは新たに設計された Xft と fontconfig のシステムです。下記の章では、これら 2 つのシステムについて、概要を説明しています。

12.1. X11 コアフォント

現在、 X11 コアフォントシステムはビットマップフォントだけでなく、スケーラブル (スムーズな拡大/縮小のできる) フォントにも対応しています。それぞれ Type1, Truetype, OpenType と呼ばれる各フォントです。スケーラブルフォントはアンチ エイリアス (拡大/縮小時に周辺のドット色を調整して滑らかに見せる技術) やサブ ピクセルレンダリング (縮小時に色を分割し、擬似的に解像度を上げる技術) には 対応しておらず、多数の言語向けに字体を定義した巨大なフォントを利用しようと すると、読み込みに時間がかかってしまいます。 Unicode フォントにも対応して いますが、描画が遅くメモリを多く使用してしまいます。

また、 X11 コアフォントシステムには、いくつかの固有の弱点が存在しています。 既に時代遅れの設計で、拡張はほとんど行なうことができない状態です。しかし ながら旧バージョンとの互換性の観点から、今もなお搭載され続けている状態 です。そのため、可能な限り Xft と fontconfig の仕組みを利用したほうが よりよいものになります。

操作を行なうにあたって、 X サーバは利用可能なフォントの一覧や、それらの フォントをどうやったら使用できるのかについて、一覧を持っておく必要が あります。これらは FontPath として、有効な全てのシステム フォントディレクトリを保持しています。これらそれぞれのディレクトリに対して fonts.dir ファイルを配置し、そのディレクトリに何の フォントがあるのか一覧を保存しています。また、 FontPath は X サーバの起動時に生成されます。 /etc/X11/xorg.conf に設定された FontPath 変数のそれぞれに対して、有効な fonts.dir ファイルがないかどうか、検索を行ないます。 これらの項目は Files セクション内に書き込みます。 現在の FontPath 変数を表示させるには、 xset q コマンドを実行します。 また、この設定は xset を利用して随時に変更することが できます。さらなるパスを追加するには、 xset  +fp <パス> のように実行してください。逆に不要なパスを削除 するには、 xset -fp <パス> のように実行します。

X サーバが既に動作している場合、マウント済みディレクトリに新しく インストールしたフォントは、 xset fp rehash コマンドで利用できるようになります。このコマンドは SuSEconfig --module fonts からも実行されます。また、 xset コマンドは動作中の X サーバにアクセスするため、 SuSEconfig  --module fonts をシェルから起動していて、かつ X サーバが 動作中である場合にのみ動作します。これを実現するための最も簡単な方法は、 su コマンドを実行して root のパスワードを入力し、 root のパーミッションを獲得する 方法があります。 su では、 X サーバを実行している ユーザから root のシェルに対してアクセス権を渡す仕組みになっている ためです。フォントが正しくインストールされ、 X11 のコアフォントシステム から利用できることを確認するには、 xlsfonts コマンドを 実行して、利用可能な全てのフォントについて一覧を表示してください。

また、既定では openSUSE は UTF-8 のロケールを使用します。そのため、 Unicode フォント (xlsfonts コマンドの出力で、 iso10646-1 で終わるもの) を使用するのが適切です。 利用可能な全ての Unicode フォントは、 xlsfonts  | grep iso10646-1 のコマンドラインを実行することで取得 することができます。なお、 openSUSE で利用可能なほぼ全ての Unicode フォントには、少なくともヨーロッパ言語 (以前は iso-8859-* でエンコードされていたもの) の字体が含まれています。

12.2. Xft

当初の段階から、 Xft のプログラマはスケーラブルなフォントに対して、アンチ エイリアスの機能を十分サポートするように作ってきました。 Xft を使用すると、 X11 コアフォントシステムが X サーバ内から描画するのとは異なり、フォントを 使用するアプリケーション自身が描画を行ないます。この方法では、関連する アプリケーションは実際のフォントファイルにアクセスできる権利を持っていて、 かつどのように字体を描画するのかについて完全なコントロールを行なうことに なります。これは複数の言語でテキストを正しく表示する目的において、必要な 機能の 1 つになっています。フォントファイルへの直接アクセスは、画面への 出力と印刷出力の両方で外観を合わせるため、フォントを内蔵させたりするのに 便利な機能です。

また openSUSE では、 2 種類のデスクトップ環境 (KDE, GNOME) の両方や Mozilla などのアプリケーションで Xft を既定値として使用しています。 Xft は既に古い X11 のコアフォントシステムより多くのアプリケーションで使用 されています。

さらに、 Xft は fontconfig ライブラリを、フォントの発見や描画方法への 作用として使用しています。 fontconfig の設定はグローバル設定ファイル である /etc/fonts/fonts.conf から操作することが できます。また、固有の設定ファイルについては /etc/fonts/local.conf に、ユーザ固有の設定について は ~/.fonts.conf にそれぞれ追加してください。これら の fontconfig 設定ファイルには、下記のヘッダを記述しておく必要があります:

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

また、このフッタで終わる必要もあります:

</fontconfig>

フォントの検索ディレクトリを追加するには、下記のような行を追加します:

<dir>/usr/local/share/fonts/</dir>

しかしながら、これは通常不要なものです。既定ではユーザ指定のディレクトリ ~/.fonts/etc/fonts/fonts.conf 内に指定されているためです。そのため、フォントをインストールする際に やるべきことは、単に追加のフォントを ~/.fonts に コピーするだけです。

また、フォントの外観に影響を与えるルールを追加することもできます。たとえば

<match target="font">
 <edit name="antialias" mode="assign">
  <bool>false</bool>
 </edit>
</match>

と入力すると全てのフォントでアンチエイリアスを無効化することができますし、

<match target="font">
 <test name="family">
  <string>Luxi Mono</string>
  <string>Luxi Sans</string>
 </test>
 <edit name="antialias" mode="assign">
 <bool>false</bool>
 </edit>
</match>

と入力すると、指定したフォントだけアンチエイリアスを無効化することができます。

既定では多くのアプリケーションが sans-serif (または同等の指定である sans, serif, monospace など) というフォント名を使用しています。 これらは実際のフォント名ではなく別名で、お使いの言語設定に合わせて適切な フォントを選択するための名称です。

なお、ユーザ自身でこれらの別名と実際のフォントの割り当てを変更することが できます。 ~/.fonts.conf ファイルに下記の行を追加して ください:

<alias>
 <family>sans-serif</family>
 <prefer>
  <family>FreeSans</family>
 </prefer>
</alias>
<alias>
 <family>serif</family>
 <prefer>
  <family>FreeSerif</family>
 </prefer>
</alias>
<alias>
 <family>monospace</family>
 <prefer>
  <family>FreeMono</family>
 </prefer>
</alias>

ほとんど全てのアプリケーションがこの別名を使用しているため、この設定は ほぼ全てのシステムに適用されます。そのため、個別のアプリケーションで わざわざフォントの設定を変更したりすることなく、希望のフォントを使用する よう一括設定を行なうことができます。

また、 fc-list コマンドを使用すると、どのフォントが インストールされ使用できる状態にあるのかを表示することができます。たとえば fc-list を実行すると、全てのフォントについて一覧を出力 します。利用可能なスケーラブルフォントの一覧を出力するために :scalable=true のオプションを、ヘブライ語の字体を含む 全てのフォントを表示するために :lang=he のオプションを それぞれ指定し、さらに出力としてフォント名 (family), スタイル (style), ウエイト (weight) とフォントファイル名を表示するには、下記のコマンドを実行します:

fc-list ":lang=he:scalable=true" family style weight

出力結果は、たとえば以下のようになります:

Lucida Sans:style=Demibold:weight=200
DejaVu Sans:style=Bold Oblique:weight=200
Lucida Sans Typewriter:style=Bold:weight=200
DejaVu Sans:style=Oblique:weight=80
Lucida Sans Typewriter:style=Regular:weight=80
DejaVu Sans:style=Book:weight=80
DejaVu Sans:style=Bold:weight=200
Lucida Sans:style=Regular:weight=80

fc-list で利用できる重要なパラメータは下記のとおりです:

表12.1 fc-list のパラメータ

パラメータ

意味と取り得る値

family

たとえば FreeSans のようなフォントファミリ名。

foundry

たとえば urw のようなフォントの作成者。

style

たとえば Medium, Regular, Bold, Italic, Heavy のようなフォントスタイル。

lang

そのフォントがサポートする言語。たとえば de であればドイツ語を、 ja であれば日本語を、 zh-TW であれば繁体字中国語を、 zh-CN であれば簡体字中国語をそれぞれ指定します。

weight

フォントのウエイト値。たとえば 80 であれば通常体 で、 200 であればボールド体になります。

slant

傾き。 0 は通常体、 100 は イタリック (斜体) を表わします。

file

フォントを含むファイルのファイル名。

outline

true を指定するとアウトラインフォントを、 false を指定するとそれ以外のフォントを指定します。

scalable

true を指定するとスケーラブルフォントを、 false を指定するとそれ以外のフォントを指定します。

bitmap

true を指定するとビットマップフォントを、 false を指定するとそれ以外のフォントを指定します。

pixelsize

ピクセル単位でのフォントサイズ。 fc-list の場合はビットマップフォント である場合にのみ意味を持ちます。