X Logical Font Description

提供: ArchWiki
2022年2月21日 (月) 01:33時点におけるKgx (トーク | 投稿記録)による版 (参照を追加)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

関連記事

X11 が使用するフォントシステムには異なる2つのシステムが存在します: 旧式またはコアの X Logical Font Description (XLFD) と新しい X FreeType (Xft) システムです (フォント名のフォーマットは An Xft Tutorial を参照)。XLFD は本来ビットマップフォントを扱うために設計されいて、後になってスケーラブルなフォント (Type1, TrueType, OpenType) のサポートも追加されました。XLFD はアンチエイリアスやサブピクセルラスタライズに対応していません。フォントを見栄えよくしたい場合は Freetype や Fontconfig ライブラリを利用する Xft の方が適しています。Fontconfig や Xft を使用する方法はフォント設定に書かれています。

フォントの名前

XLFD を使用する場合、フォントの名前は複雑になります:

-misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-1

名前は14の要素から成り、各要素はハイフン (-) で区切られます。フォントの名前に全ての要素が必要というわけではないので、フィールドが空でもかまいません。ワイルドカードの *? を使うことで名前は簡単にすることができます。コマンドラインで XLFD のフォント名を使うときは、ワイルドカードが変換されたり空白にバックスペースを付けなくてもすむように名前をクォートで囲ってください:

$ xterm -fn "-*-fixed-medium-r-s*--12-87-*-*-*-*-iso10???-1"
$ xterm -fn "-*-dejavu sans mono-medium-r-normal--*-80-*-*-*-*-iso10646-1"

エイリアスを利用することで名前はさらに単純化することが可能です:

$ xterm -fn 12x24

XLFD の名前を使うときは xfontsel, xorg-xfontsel, そして xlsfonts, xorg-xlsfonts というユーティリティが必要不可欠です。Xfontsel はドロップダウンメニューを使ってフォントの名前の一部を選択して、選択されたフォントをプレビューします。Xlsfontsは名前でフォントを一覧することができ、程度に応じて選択して、ワイルドカードやエイリアスが XLFD システムによってどう解釈されるのか確認できます。フォントの名前が使えないときは、xlsfonts でマッチするフォントが存在するか確認してください:

$ xlsfonts -fn "*-fixed-medium-r-n*--13-120-75-*-iso1*-1"
$ xlsfonts -ll -fn fixed

フォントの名前の要素

以下の表ではフォントの名前のフィールドを説明します。要素はすべてフォントの名前で指定するとおりの順番で並んでいます。xfontsel で使用される名前は大文字の長い名前の下に記載しています。

FOUNDRY
fndry
フォントの供給者。異なるフォントが同一の FAMILY_NAME、例えば courier を共有する場合はこのフィールドを指定します。そうでない場合はワイルドカード * で置き換えられます。
FAMILY_NAME
fmly
ファウンダリによって定義されるタイプフェイスの名前。通常は、ファミリーの名前が同じフォントは見た目が同じになります。
WEIGHT_NAME
wght
ファウンダリによって定義される文字の黒深度。普通は boldmedium の値が使われます。
SLANT
slant
ローマ字や立体では r、イタリック体や斜体では io が使われます。基本的にどれかを指定する必要があります。
SETWIDTH_NAME
sWdth
デザイナーによって設定される幅を決める値。normal, narrow, condensed など。複数の値が使えるときは、ワイルドカードにしないでどれかの値を設定する必要があります。
ADD_STYLE
adstyl
ファウンダリによって設定される値ですが、大抵は空のフィールドです。xfontsel では、ドロップダウンボックスから (nil) を選ぶことで空のフィールドが選択されます。このフィールドは * でワイルドカードにしても大丈夫です。
PIXEL_SIZE
pxlsz
POINT_SIZE と RESOLUTION_Y はフォントの大きさです。フォントがデザインされたときに決められたポイントを無視してフォントの高さが変化します。スケーラブルフォントで POINT_SIZE を指定する場合 0* が使えます。
POINT_SIZE
ptSz
フォントがデザインされたときの字体の高さです。値は10分の1ポイントで指定します (1ポイントは72分の1インチと決められています)。フォントのサイズを見てください。
RESOLUTION_X
resx
フォントがデザインされたときの横の解像度 (数値) です。値はピクセルあるいは dpi で表されます。スケーラブルフォントでは 0* に設定して問題ありません。ビットマップフォントは大抵 75100 を使います。
RESOLUTION_Y
resy
フォントがデザインされたときの縦の dpi。RESOLUTION_X と同じようにスケーラブルフォントでは 0* にセットできます。ビットマップフォントの場合、RESOLUTION_X と RESOLUTION_Y のどちらか片方を指定します。もう一方はワイルドカードにできます。
SPACING
spc
  • p – プロポーショナルフォント。
  • m – 等幅フォント。全ての文字の横幅は同じです。
  • c – 文字セル。文字は"フレーム"に表示され、フレームは全て同じ幅です。タイプライターのような表示になります。

m スペーシングのフォントを使用した場合、古いアプリケーションではディスプレイが更新されたときに文字の断片が残ってしまうことがあります。そのようなアプリケーションでは、c スペーシングのフォントを使ってください。

AVERAGE_WIDTH
avgWdth
全ての文字の横幅の算術平均。プロポーショナルフォントではゼロを使います。この値は * でワイルドカードにして問題ありません。
CHARSET_REGISTRY
rgstry
CHARSET_ENCODING と必ずペアにして、使用する文字エンコーディングの登録組織の名前を付けます。iso10646koi8 などになります。ユーザーのロケール設定と互換性のあるレジストリを選択すれば大丈夫です。
CHARSET_ENCODING
encdng
文字セットエンコーディングの識別子。

フォントのサイズ

フォントの名前は各フォントのディレクトリの fonts.dir ファイルに保存されます。ファイルの詳細は、下のフォントの検索パスを見てください。フォントの名前に含まれている、ピクセルやポイントのサイズ、x と y の解像度の値は変更することができ、フォントの表示サイズが変わるだけでなく文字の間の間隔や行間も変わってきます。

原則として、ビットマップフォントはデザイナーが決めたサイズで表示するのが一番見栄えが良くなります。ビットマップフォントでは、フォントの名前に保存されたサイズ関係の値を変更すると、フォントが歪んで読めなくなったり、あるいはフォントパターンにマッチしなくなることもあります。

スケーラブルフォントはサイズを変更できるように作られています。以下の例で示しているように、スケーラブルフォントの名前では、ピクセルやポイントサイズのフィールド・解像度のフィールド・平均幅のフィールドはゼロになります。

-misc-liberation serif-medium-r-normal--0-0-0-0-p-0-iso10646-1

スケーラブルフォントに特定のサイズを指定したいときは、POINT_SIZE フィールドに値を入れるだけで指定できます。他のサイズ関連の値はゼロのままで結構です。POINT_SIZE の値は10分の1ポイントで表すことになっているので、表示したいポイントサイズを10倍にした値を入力してください。例えば、以下の行では Liberation Serif を9ポイントで指定しています:

-misc-liberation serif-medium-r-normal--0-90-0-0-p-0-iso8859-1

フォントの検索パス

フォントファイルをインストールしたりフォントパスを変更する方法はフォントを見てください。フォントを X サーバーから利用するには、フォントファイルが入っているディレクトリをユーザーのフォントパスで指定する必要があります。現在のフォントパスは以下のコマンドで確認できます:

$ xset q

フォントが要求されると、X サーバーはフォントパスに書かれている順番でフォントディレクトリを検索します。それぞれのフォントディレクトリには fonts.dir という名前のファイルが含まれており、フォントの XLFD 名とフォントが含まれたファイルを結び合わせるインデックスとして機能します。最初にマッチするフォントが見つかると検索は終了します。

fonts.dir ファイルの1行目はファイルに含まれているフォントの数になります。そしてそれ以降の行にディレクトリに入っているフォントが並びます: まずファイル名が書かれ、空白を挟んで、フォントの名前が記述されます。以下は fonts.dir の最初の4行の例です:

1894
UTBI__10-ISO8859-1.pcf.gz -adobe-utopia-bold-i-normal--14-100-100-100-p-78-iso8859-1
UTBI__10-ISO8859-10.pcf.gz -adobe-utopia-bold-i-normal--14-100-100-100-p-78-iso8859-10
UTBI__10-ISO8859-13.pcf.gz -adobe-utopia-bold-i-normal--14-100-100-100-p-78-iso8859-13

mkfontscale と mkfontdir

fonts.dir ファイルを作成するには2つのプログラムが必要です: mkfontscalemkfontdir。これらのプログラムは Xorg をインストールしたときに一緒にインストールされているはずです。Mkfontdir はディレクトリに含まれている全てのビットマップフォントファイルを読み込んで、見つかったフォントとフォント名を使って fonts.dir ファイルを作成します。また、fonts.scale という名前のファイルからもエントリが追加されます。

mkfontdir はスケーラブルフォントのファイルを読み込むことができないので TrueType, OpenType, Type1 フォントの名前を作成するときは mkfontscale プログラムを使います。フォント名とフォントのファイル名は fonts.scale というファイルに保存されます。fonts.scale ファイルの構造は fonts.dir ファイルと同じです。最初の行にフォント名の数が書かれ、2行目から、フォント名と空白、そしてフォントの名前が記述されます。

fonts.scalefonts.dir はどちらも手動で編集できます。しかしながら、mkfontscale や mkfontdir が実行されるたびに、既存の fonts.scale や fonts.dir は上書きされます。編集内容は簡単に喪失してしまいます。

mkfontdir を実行したときは、以下のコマンドを使ってフォントのデータベースを更新するようにしてください:

$ xset fp rehash
ノート: ファイル名に空白が入っていると fonts.dirfonts.scale ファイルが正しくパースできません。空白をクォートで囲ったりエスケープしても無駄です。空白を含まないようにファイル名を変更するか、あるいは fonts.dir や fonts.scale ファイルからそのファイルを削除するしか解決法はありません。

エイリアス

エイリアスを使うことで XLFD 名の使用がぐっと簡単になります。エイリアスはフォントパスと同じディレクトリの中に fonts.alias という名前のファイルで保存します。

xorg-fonts-alias[リンク切れ: パッケージが存在しません] パッケージには X サーバーで標準になっている一般的なエイリアスが含まれています。このパッケージは 100dpi, 75dpi, cyrillic, misc ディレクトリに含まれるフォントの fonts.alias ファイルを提供します。xterm のデフォルトフォントは "fixed" エイリアスにマッチするフォントを使うことに決まっています。標準のエイリアスを変更するのは (特にマルチユーザー環境の場合) 推奨されません。

fonts.alias ファイルを自分で作成したり、既存のファイルに追記することでエイリアスをシステムに追加することができます。フォーマットは単純です。コメントを使うときは行頭にエクスクラメーションポイント ! を置く方法しかありません。空行は無視されます。エイリアスは一行ごとに定義します。まずエイリアスの名前、そして適当な量の空白が挟まり、マッチするフォントの名前やエイリアスの名前を指定します (エイリアスはさらに他のエイリアスを参照することが可能です)。エイリアスの名前やフォントの名前に空白が含まれる場合、クォートで名前を囲ってください。例:

! This is a comment.

djvsm9  "-misc-dejavu sans mono-medium-r-normal--0-90-0-0-m-0-iso10646-1"
djvsm8    "-misc-dejavu sans mono-medium-r-normal--0-80-0-0-m-0-iso10646-1"
"djvsm 8"        djvsm8

fonts.alias ファイルはフォントパスのどのディレクトリにも配置することができます。エイリアスによって参照するフォントもフォントパスのディレクトリに入れてください。フォントファイルを fonts.alias ファイルと同じディレクトリに置く必要はありません。

新しいフォントエイリアスを使えるようにするために、フォントデータベースを更新してください:

$ xset fp rehash

参照