Fontconfig は、フォント情報のキャッシュ・検索・カスタマイズの機能を備えたツールです。 FreeType2 と組み合わせて容易にフォントシステムを構築することができます。
文字コード・文字幅の扱いなどを CJK に適化させたパッチ (fontconfig、Xft) と、簡単な説明書きを作成し、 こちらのディレクトリ に置きました。パッチの使用・再配布に制限は付けませんが、パッチを当てたバイナリを配布するときは、fontconfig/Xft の両方に当てたものをセットで配布するよう希望いたします。 Qtは3.1.0以上を使用して下さい。
(更新日 2003年9月25日)
(こちらから入手) fontconfig-2.2.1 と xft-2.1.1 の組み合わせで日本語のボールドを使用できるようにしたパッチと、ヒントスタイル設定値追加のパッチと、日本語 DynaFont で文字集合の扱いが不正にならないようにしたパッチです。
以前のバージョンへのパッチから、フォント名、 CJK 固定幅フォントに関する部分は (あまり望ましくないらしいので) 除きましたが、一応 Qt-3.2.1 のパッチと FreeType-2.1.5 の自動ヒントのパッチで補うようにはしましたので、これらと組み合わせるのがベストと思います。
以前のものよりもボールドの品質をかなり改良しました。
ちなみに xft-2.1.2 も既に出ていますが、特に内容に違いはありませんし、XRender をバージョンアップしなければビルド出来ないため、あえて 2.1.1 に入れ替える必要はないと思います。
(注) 最近 Fontconfig のホームページが改装され、上記バージョンの入手先が分かりにくくなっていますが、一応 こちらから入手可能のようです。
(注) Fontconfig/Xft やそれらに依存したアプリケーション (Qt など) を FreeType-2.1.6 以上の上でビルドするとエラーが出てしまうらしいです。以下に FreeType-2.1.7 のパッチ (内容は 2.1.5 のものと同一です)なども置いてはありますが、当面は FreeType-2.1.5 以下を使用されるのが無難でしょう。
(FreeType-2.1.4 以下で) 日本語 DynaFont の多くに含まれる Unicode Charmap (cmap4) のバグを無視し、使用可能にします。
(更新日 2003年11月30日)
FreeType (2.1.4 - 2.1.7) の自動ヒント処理 (文字の鮮明化処理) によって、中日韓フォントのアルファベット・漢字・平仮名に不自然な線欠けやずれが生じるのを抑制します。また、固定幅フォントの幅や (特に半角文字の) 位置が望ましくなるよう修正します。
また、 TrueType bytecode interpreter を有効にしてコンパイルすると、 DynaFont (合成文字タイプ) に autohinter を適用しても読める文字を出力できます。計算量が増えてしまいどうしても遅くなりますが、 Celeron 1GHz では特にストレスは感じませんし、問題ないでしょう。
Xft2 で autohinter を有効にするには、~/.fonts.conf (ユーザー設定ファイル) に次のような記述を入れてください。
<match target="font"> <edit name="hinting" mode="assign"> <bool>t</bool> </edit> <edit name="autohint" mode="assign"> <bool>t</bool> </edit> </match>
同じディレクトリに Fontconfig/Xft2 の簡単なパッチを置いていますが、これは RedHat 仕様のヒントスタイルの設定値を使えるようにするパッチを、新しいバージョンに当たるように修正したものです。適用すると、以下ように "hintstyle" の値を編集することでヒントの加減を選択できるようになります。といっても、ほとんどのフォントでは、それほど目立った差は出ないようですが。。。
[設定例] <match target="font"> <edit name="hintstyle" mode="assign"> <const>hintslight</const> </edit> </match>["hintstyle" の値と意味] hintnone (ヒント無し) hintslight (弱いヒント) hintmedium (hintslightと同じ) hintfull (ややくっきりしたヒント: デフォルト)
Xft の TrueType フォントについて、Qt のフォントデータベース内におけるフォント名やスペーシングの情報を、ロケールに適したものに置き換えます。処理量が多いのでパフォーマンスが低下するかも知れませんが、このパッチがないと日本人としては相当不便でしょう。
フォントに含まれる複数言語のファミリー名のうち、ロケールのエンコーディングに適したファミリー名を (ASCII でない名前を優先的に) フォントリストに表示させます。
全角/半角の 2 つの幅を持つタイプのフォントを固定幅に分類されるようにします。
フォント選択リストにボールドを強制的に出します。 Fontconfig/Xft に擬似ボールドのパッチを当てただけでは Qt 上でボールドを選択できませんが、このパッチを当てると選択できるようになります。
典型的な日本語フォントにおいて一部の記号文字が表示されないことがあるので、それを極力防ぎます。また、フォント置換で置換用のフォントがメインのフォントに含まれる文字を上書きしないようにします。
日本語以外のロケールで望ましい結果になるかどうかは未確認ですが、多分大丈夫でしょう。
FreeType2 を利用して DynaFont や TTC, OTF などを印刷可能にします。Xft のフォントのみ対応します。イタリックも印刷できますが、ボールドについてはまだ不可です。
印刷文書(Postscript)へのアウトラインフォントの埋め込み処理を、FreeType2 を通すことでより正確に行えるようにするためのパッチです。 TrueType Collection (TTC)、 OpenType/CFF、 DynaFont が印刷可能です。Fontconfig/Xft2 使用時にはイタリックも出ます。
ソースファイルとパッチファイルを同じディレクトリに置く
→ソースファイルを展開
→出来上がったディレクトリに入る
→patch -p1 < コマンドでパッチを当てる
$ tar xIf qt-x11-free-3.1.0.tar.bz2 (xIfの真ん中にあるのは大文字のI(アイ)です)
$ cd qt-x11-free-3.1.0
$ patch -p1 < ../{パッチファイル}
フォント名処理のパッチは、パッチを当てて普通にコンパイルすればOK。
印刷処理のパッチは FreeType のAPIに直接依存しています。
FreeType2のヘッダーファイルを認識させるため、 ./configure スクリプトのオプションに
-I/usr/include/freetype2
(FreeType2の開発用ヘッダーファイルのあるディレクトリ。環境に依存します)
を追加して下さい。