XFree86 のフォントについて : 新しいフォントバックエンド
Previous: スケーラブルフォントのバックエンドの国際化
Next: XFree86 のフォントについて

4. 新しいフォントバックエンド

4.1. 新しい TrueType バックエンド

このバージョンの XFree86 には 2 つの TrueType バックエンドが付属し ています。つまり `freetype' (かつての `xfsft') と `X-TrueType' (略して `X-TT')です。これらの 2 つのバックエンドには互換性はなく、同時には どちらか片方しか使えません。ユーザには、便利だと思った方のバックエンド を選び、それを使い続けることをお勧めします。

`freetype' バックエンドはモジュール `freetype' に入っています。 これを使う前には、`XF86Config' ファイルの `Module' セクション に

Load "freetype"
という行が入っていることを確かめてください。 `X-TrueType' バックエンドはモジュール `xtt' に入っています。 これを使うためには、`XF86Config' ファイル内で `freetype' モジュールをロードしている行を
Load "xtt"
と書き換えてください。 どちらのバックエンドも、グリフを最初に使う時までグリフのラスタライズを 行わずに待ちます。そのため、どちらのバックエンドもフォントプロパティの `average width(平均幅)'に対してはおおよその値しか提供しません。ユーザ はフォントの平均幅が正確な値であることに依存しないように注意してくださ い。

どちらのバックエンドも等幅フォント(全てのグリフの寸法が同じフォントや 端末用フォント)向けの最適化に対応しています。 XLFD で等幅の文字間隔 `c' が

-misc-mincho-medium-r-normal--0-0-0-0-c-0-jisx0208.1990-0
のように指定されているフォントでは、寸法の計算時にはグリフは ラスタライズされませんが、 そのフォントが本当に等幅フォントであると決め打ちします。ユーザは有効で あればこの最適化をぜひ利用すべきですが、必ずしも全ての等間隔フォントが 等幅フォントではない点には気を付けてください。

4.1.1. `freetype' TrueType バックエンド

`freetype' バックエンド(以前の `xfsft')は FreeType ライブラリ (www.freetype.org を参照)をベースにし、`fontenc' 形式の国際化 ( fontenc 層 を参照)に対応している バックエンドです。このバックエンドは TrueType ファイル(*.ttf)と TrueType コレクション(*.ttc)に対応しています。

TrueType コレクションが持っている字体にアクセスするためには、font.dir ファイル内で、ファイル名の前にコロンで挟んで字体の番号を指定しなければ なりません。例えば

:2:mincho.ttc -misc-mincho-medium-r-normal--0-0-0-0-c-0-jisx0208.1990-0
は `mincho.ttc' TrueType コレクションファイルが持っている 番号 2 の字体を参照します。

4.1.2. `X-TrueType' TrueType バックエンド

`X-TrueType' バックエンドは FreeType ライブラリをベースにした別の バックエンドです。X-TrueType はフォントのエンコーディングの管理に `fontenc' 層を使っておらず、独自のエンコーディング用データベースを使っ ています。しかし、X-TrueType はたくさんのエンコーディングを持っており、 ユーザが必要なエンコーディングはたぶん全て X-TrueType にあるでしょう。

X-TrueType は `fonts.dir' の記法を、`TTCap' と呼ばれる多数のオプ ションで拡張しています。`TTCap' のエントリは

:オプション=値:
という一般的な記法に従います。これはファイル名よりも前に指定しなければ なりません。

TTCap の便利なオプションのほとんどは TTC の字体番号を指定するために使 います。字体番号は `fn' で指定します。つまり、フォントファイル `mincho.ttc' の番号 2 の字体を指定するには

:fn=2:mincho.ttc -misc-mincho-medium-r-normal--0-0-0-0-c-0-jisx0208.1990-0
と指定します。 TTCap の書き方と X-TrueType 一般に関する情報については
http://x-tt.dsl.gr.jp/
に書かれています。

4.2. CID フォントへの対応

CID フォント形式は、大きな文字集合を持つフォントのために Adoby Systems が設計しました。CID フォント形式は Adobe Technical Notes nr. 5092, "Overview of the CID-Keyed Font Technology," nr. 5014, "CMap and CIDFont File Format Specification," 等で解説されています。これらの文書は

http://partners.adobe.com/supportservice/devrelations/typeforum/cidfonts.html
から入手できます。

CID フォントの例は

ftp://ftp.oreilly.com/pub/examples/nutshell/cjkv/adobe/
にあります。 XFree86 の CID フォント対応は 2 つのオプション `BuildCID', BuildCIDFonts で制御します。XFree86 を構築する際 に(xc/config/cf ディレクトリで)これらのオプションが有効になっ ていることを確かめてください。メモリ占有量ができるだけ小さい XFree86 を構築するのでなければ、デフォルトではこれらのオプションを YES に すべきです。メモリ占有量の小さい XFree86 を作る場合は NO を設定し てください。

CID フォントのバックエンドは `fontenc' 層を使わず、 CID フォントの再コードの方法として標準の `CMap' を使います。

4.2.1. CID フォントの利用

インストールファイルのサンプルの /usr/X11R6/lib/X11/XF86Config.eg にも書かれていますが、`XF86Config' ファイルでは

FontPath "/usr/X11R6/lib/X11/fonts/CID/"
のようにフォントディレクトリ CID を XFree86 のフォントパス の一部として指定しなければなりません。 CID フォントディレクトリがフォントパスに含まれている時は、CID ディレクトリには少なくとも空の fonts.dir ファイルと fonts.scale ファイル が存在しなければなりません。エントリ数が 0 の `fonts.dir' ファイルと `fonts.scale' ファイルのサンプルは デフォルトでインストールされます。

CID フォントのサンプルは

test/xsuite/xtest/CID
ファイルに書かれています。 テスト用ディレクトリには CID フォントディレクトリと同じ名前が付けられ ています。なぜなら、これは CID フォントのインストールの仕方を示すから です。このディレクトリにはたくさんのサブディレクトリがあり、全ての CID フォントディレクトリはこれと同じディレクトリ構造を持たなければなり ません。

CID フォントをインストールする時には、このディレクトリにある空の fonts.scale ファイルと fonts.dir ファイルは

xc/fonts/scaled/CID
次のような形式のエントリを持つ fonts.scale ファイルと fonts.dir ファイルで置き換えなければなりません:
1

Adobe-Korea1/Munhwa-Regular--Adobe-Korea1-0.cid \

-adobe-munhwa-medium-r-normal--0-0-0-0-p-0-adobe.korea1-0

(フォントファイル名と XLFD 名を一つの行に書かなければなりません)。 最初のカラムで指定しているのは実際のファイル名ではない点に注意してくだ さい。これが指定しているのは CID フォントの PostScript 名の後ろに `.cid' という拡張子を付けたものです。ファイルの実際に使われる名前 は PostScript 名から求めます。

CID フォントはキャラクタグループによって複数のグループに分けられます。 例えば、韓国語のフォント

Munhwa-Regular--Adobe-Korea1-0
はサブディレクトリ `Adobe-Korea1' に置かれます。

CID フォントの PostScript 名は、CIDFontNameCMapName の 2 つの部分からなります。これらは 2 つのダッシュで区切られます。 例えば、フォント名

Munhwa-Regular--Adobe-Korea1-0
の場合は、CIDFontName は `Munhwa-Regular' であり、 CMapName は `Adobe-Korea1' です。

各々の CID フォントは一つの CIDFont ファイルと一つ以上の CMap ファイル からできています。CIDFont ファイルにはフォントが持つそれぞれの文字が 記述されています。これは Adobe-Korea1 ディレクトリの CIDFont サブディレクトリに格納されます。ディレクトリ構成は次のようになります:

CID/Adobe-Korea1/CIDFont/Munhwa-Regular

CID/Adobe-Korea1/CMap/Adobe-Korea1-0

CID/Adobe-Korea1/AFM/Munhwa-Regular.afm

CID/Adobe-Korea1/CFM

CID/fonts.dir

CID/fonts.scale

`Munhwa-Regular.afm' ファイルは Adobe Font Metric File (AFM) です。 ディレクトリ `CFM' はフォントメトリックファイルのまとめとして使わ れます。実際のフォントメトリックは後から計算されます。

CID ファイルをインストールした時には、

/usr/X11R6/bin/mkcfm
ユーティリティを実行して、フォントメトリックファイル(*.cfm)の まとめを作り、これを適切なサブディレクトリに置きます。デフォルトでは、 このプログラムは
/usr/X11R6/lib/X11/fonts/CID
ディレクトリに対して動作します。別のディレクトリをコマンドラインから `mkcfm' に指定することもできます。

`mkcfm' は root で実行しなければなりません。とうのも、この プログラムはシステムディレクトリに出力を書き込む必要があるからです。 指示された `CFM' ディレクトリに書き込みできないことがわかると、 このプログラムはメッセージを表示して、カレントディレクトリに移ります。

`mkcfm' を実行しないと、大きな CID フォントをオープンする時には かなり時間がかかってしまいます。CID フォントに何らかの変更を加えた時や、 CID フォントを別のアーキテクチャのましににコピーした時には、 `mkcfm' は改めて実行しなければなりません。

4.2.2. 制限

現在のバージョンの CID フォント用バックエンドは横書きテキスト用の CMap にしか対応していません(例えば、CMap `KSC-EUC-H' を使い ますが `KSC-EUC-V' は使いません)。この制限は X11 のコアプロトコル が横書きの機能しか持っていないからです。


XFree86 のフォントについて : 新しいフォントバックエンド
Previous: スケーラブルフォントのバックエンドの国際化
Next: XFree86 のフォントについて