# Font Configuration (日本語)

関連記事

- フォント
- フォント設定/fontconfig サンプル
- Infinality-bundle+fonts
- Java ランタイム環境のフォント
- MS フォント
- X Logical Font Description

Fontconfig はアプリケーションに利用できるフォントのリストを提供し、フォントのレンダリングの設定をするために作られたライブラリです。fontconfig パッケージや Wikipedia:ja:Fontconfig を見て下さい。Free type ライブラリ (freetype2 パッケージ) はこの設定に基づいてフォントを描写します。

今日の Linux の標準は Fontconfig ですが、アプリケーションによっては未だにフォントの選択と表示に X Logical Font Description を使っているものもあります。

Arch Linux のフォントレンダリングパッケージには freetype2 のサポートが含まれており バイトコードインタプリタ (BCI) が有効になっています。LCD モニターでより良いフォントレンダリングを行うためのパッチがあてられたパッケージも存在します。#パッチがあてられているパッケージ を見て下さい。Infinality パッケージは自動ヒンティングとサブピクセルレンダリング、リコンパイル不要の LCD フィルター調整、太字フォントの auto-hinter が可能です。

## フォントパス

アプリケーションからフォントを使えるようにするには、迅速かつ容易にアクセスできるようフォントを一覧表に入れる必要があります。

最初から Fontconfig が利用するフォントパスは: `/usr/share/fonts/` と `~/.fonts/` (このフォルダでは Fontconfig は再帰的にスキャンします) です。管理とインストールを簡単にするために、フォントを追加する際にはこのフォントパスを使うのが推奨されます。

Fontconfig が認識しているフォントの一覧を表示するには:

    $ fc-list : file

出力のフォーマットについては `man fc-list` を見て下さい。

Xorg が利用しているフォントパスを確認するには Xorg のログを見て下さい:

    $ grep /fonts /var/log/Xorg.0.log

Tip: `xset q` コマンドでも Xorg が使っているフォントパスを確認できます。

Fontconfig とは違い、Xorg は `/usr/share/fonts/` ディレクトリを再帰的に調べないことに注意してください。パスを追加するときは、フルパスを使ってください:

    Section "Files"
        FontPath     "/usr/share/fonts/local/"
    EndSection

フォントパスをユーザーごとに設定したい場合は、以下のように `~/.xinitrc` に追記することでフォントパスを追加・削除できます:

    xset +fp /usr/share/fonts/local/           # Prepend a custom font path to Xorg's list of known font paths
    xset -fp /usr/share/fonts/sucky_fonts/     # Remove the specified font path from Xorg's list of known font paths

Xorg が認識しているフォントの一覧を表示するには、xorg-xlsfonts パッケージに入っている `xlsfonts` を使って下さい。

## Fontconfig 設定

Fontconfig については fonts-conf の man ページで説明されています。

設定は `$XDG_CONFIG_HOME/fontconfig/fonts.conf` を使ってユーザーごとに行うことも、`/etc/fonts/local.conf` で全体的に設定することもできます。ユーザー別の設定はグローバルの設定よりも優先されます。これらのファイルは同じ構文を使っています。

Note: 設定ファイルとディレクトリ: `~/.fonts.conf`, `~/.fonts.conf.d`, `~/.fontconfig/*.cache-*` は fontconfig 2.10.1 から使われなくなりました (upstream commit) 次のバージョンのパッケージからデフォルトで読み込まれなくなります。代わりに `$XDG_CONFIG_HOME/fontconfig/fonts.conf`, `$XDG_CONFIG_HOME/fontconfig/conf.d/NN-name.conf`, `$XDG_CACHE_HOME/fontconfig/*.cache-*` を各々使って下さい。二番目のディレクトリを使う場合、ファイルの名前は `NN-name.conf` という決まりに従って下さい (`NN` は2桁の数字です、例: `00`, `10`, `99`)。

Fontconfig は全ての設定を一つの中心ファイル (`/etc/fonts/fonts.conf`) に集めます。このファイルは fontconfig がアップデートしたときに置き換えられるので編集してはいけません。Fontconfig に対応したアプリケーションはこのファイルを読み込んで利用できるフォントとレンダリング方法を知ります。このファイルは、全体的な設定 (`/etc/fonts/local.conf`) と `/etc/fonts/conf.d/` の設定済みプリセット、そしてユーザーの設定ファイル (`$XDG_CONFIG_HOME/fontconfig/fonts.conf`) に書かれたルールの寄せ集めです。`fc-cache` を使うことで fontconfig の設定をリビルドできます、ただし変更は新しく起動したアプリケーションにのみ適用されます。

Note: (GNOME や KDE などの) デスクトップ環境によっては、フォントコントロールパネルを使うと自動的にユーザーのフォント設定ファイルが作成・上書きされます。これらのデスクトップ環境では、期待した動作をするために既に定義済みの設定ファイルにあわせるのが最善です。

Fontconfig の設定ファイルは XML 形式で、以下のヘッダーが必要になります:

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

      <!-- settings go here -->

    </fontconfig>

この記事で出てくる設定例ではこれらのタグは省略しています。

### プリセット

プリセットは `/etc/fonts/conf.avail` ディレクトリにインストールされています。`/etc/fonts/conf.d/README` に記述されているように、シンボリックリンクを作成することで、ユーザーごと・全体的に、プリセットの設定を有効にすることが可能です。これらのプリセットは個別の設定ファイルの設定を上書きします。

例えば、サブピクセル RGB レンダリングを全体的に有効にするには:

    # cd /etc/fonts/conf.d
    # ln -s ../conf.avail/10-sub-pixel-rgb.conf

ユーザーごとの設定として同じことをするには:

    $ mkdir $XDG_CONFIG_HOME/fontconfig/conf.d
    $ ln -s /etc/fonts/conf.avail/10-sub-pixel-rgb.conf $XDG_CONFIG_HOME/fontconfig/conf.d

### アンチエイリアス

フォントラスタライズとはベクター形式のフォントデータをビットマップのデータに変換して表示することです。結果としてエイリアシングによってジャギーが発生することがあります。アンチエイリアスがデフォルトで有効になっており、フォントのエッジの見た目の解像度を増しています。

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

Note: Gnome 3 など、アプリケーションによってはデフォルトのアンチエイリアスの設定を上書きすることがあります。

### ヒンティング

フォントヒンティング (instructing とも呼ばれます) は数学的な情報を使ってアウトラインフォントの表示を調整し、ディスプレイのピクセルグリッドと同じように、ラスタライズされたグリッドにフォントを並べる技術です。フォントの見た目をハッキリとさせることで読みやすくなるような効果を生みます。ディスプレイが 300 DPI ではない場合ヒンティングがないとフォントを正しく並べることはできません。ヒンティングは2つのタイプが利用できます。

#### バイトコードインタプリタ (BCI)

BCI ヒンティングを使うと、TrueType のフォントは FreeTypes の Byte-Code Interpreter によってフォントがレンダリングされます。正しいヒンティング情報があるフォントでは BCI ヒンティングが良く機能します。ヒンティングを有効にするには:

      <match target="font">
        <edit name="hinting" mode="assign">
          <bool>true</bool>
        </edit>
      </match>

#### Autohinter

Autohinter は既存のヒンティング情報を無視して自動ヒンティングを実行します。TrueType2 がパテントで保護されていたため昔はデフォルトでしたが、パテントの有効期限が切れたので現在は使う意味がほとんどなくなっています。情報が少なかったり無かったりするフォントでは見た目が良くなりますが、ヒント情報があるフォントではかなり見た目が悪くなります。普通のフォントは後者なので autohinter はあまり役に立ちません。自動ヒンティングを有効にするには:

      <match target="font">
        <edit name="autohint" mode="assign">
          <bool>true</bool>
        </edit>
      </match>

#### ヒントスタイル

ヒントスタイルはヒンティングモードの影響力の強さを示します。ヒンティングの強さは次のどれかに設定できます: `hintfull`, `hintmedium`, `hintslight`, `hintnone`。`hintslight` はフォントをあいまいにしますがフォントの形は維持されます。一方、`hintfull` はピクセルグリッドに上手く整列するハッキリとしたフォントになりますがフォントの形は大きく変わってしまいます。好みは人によって好きずきです。

      <match target="font">
        <edit name="hintstyle" mode="assign">
          <const>hintfull</const>
        </edit>
      </match>

Note: Gnome 3 などのアプリケーションによっては、デフォルトのヒンティング設定を無視することがあります。

### サブピクセルレンダリング

今日ではほとんどのモニターは赤・緑・青 (RGB) の並びを使っています。フォントを正しく表示するために、Fontconfig にあなたのモニターのタイプを知らせる必要があります。モニターのタイプは以下のどれかになります: RGB (最も一般的), BGR, V-RGB (vertical), V-BGR。ここ でモニターのテストをすることが可能です。

サブピクセルレンダリングを有効にするには:

      <match target="font">
        <edit name="rgba" mode="assign">
          <const>rgb</const>
        </edit>
      </match>

Note: サブピクセルレンダリングはサブピクセルを使うことでフォントの横の (もしくは縦の) 解像度を事実上3倍にします。autohinter とサブピクセルは一緒に動作させることを予定されていないので、Infinality パッチセットを使っていない限り、同時に両方とも使ってはいけません。

#### LCD フィルター

サブピクセルレンダリングを使う場合、色縁を減らす LCD フィルターを有効にするべきです。FreeType 2 API リファレンスの LCD filtering にこのフィルターの説明があります。また、FT_LcdFilter にオプションの説明があり、LCD filter test にそれぞれのオプションを使って実際に表示したサンプルがあります

ほとんどのユーザーにとっては `lcddefault` フィルターが具合が良いでしょう。他のフィルターは特別な事情がある場合に使えます: `lcdlight` は明るいフィルターで、太すぎたりぼやけているフォントに向いています。`lcdlegacy` はオリジナルの Cairo フィルターです。`lcdnone` はフィルターを完全に無効にします。

      <match target="font">
        <edit mode="assign" name="lcdfilter">
          <const>lcddefault</const>
        </edit>
      </match>

#### 高度な LCD フィルター設定

内蔵の LCD フィルターで満足しない時は、freetype2 のカスタムパッケージをビルドしてハードコードされたフィルターを修正することでフォントレンダリングを調整することが可能です。Arch Build System を使えばソースからパッケージをビルド・インストールできます。

まず、root で freetype2 の PKGBUILD を更新してください:

    # abs extra/freetype2

この例ではビルドディレクトリに `/var/abs/build` を使っています、あなたの ABS セットアップにあわせて置き換えてください。通常ユーザーで freetype2 パッケージをダウンロード・展開します:

    $ cd /var/abs/build
    $ cp -r ../extra/freetype2 .
    $ cd freetype2
    $ makepkg -o

`src/freetype-VERSION/src/base/ftlcdfil.c` ファイルを編集して `default_filter[5]` 定数の定義を見て下さい:

    static const FT_Byte  default_filter[5] =
        { 0x10, 0x40, 0x70, 0x40, 0x10 };

この定数はレンダリングされた文字に適用するローパスフィルタを定義しています。必要に応じて修正してください。ファイルを保存し、カスタムパッケージをビルド・インストールしてください:

    $ makepkg -e
    # pacman -Rd freetype2
    # pacman -U freetype2-VERSION-ARCH.pkg.tar.xz

再起動して X を起動してください。これで lcddefault フィルタはフォントを違ったふうに表示するはずです。

### 太字フォントで auto-hinter を無効にする

auto-hinter は複雑な方法を使ってフォントを表示しますが、しばしば太字フォントの幅が広すぎになってしまうことがあります。幸いに、太字フォントのみ autohinter をオフにすることで解決できます:

    ...
    <match target="font">
        <test name="weight" compare="more">
            <const>medium</const>
        </test>
        <edit name="autohint" mode="assign">
            <bool>false</bool>
        </edit>
    </match>
    ...

### 大きいフォントでだけアンチエイリアスを有効にする

ユーザーによってはアンチエイリアスのないギザギザのレンダリングの方を好むかもしれません:

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

    <match target="font" >
        <test name="size" qual="any" compare="more">
            <double>12</double>
        </test>
        <edit name="antialias" mode="assign">
            <bool>true</bool>
        </edit>
    </match>

    <match target="font" >
        <test name="pixelsize" qual="any" compare="more">
            <double>16</double>
        </test>
        <edit name="antialias" mode="assign">
            <bool>true</bool>
        </edit>
    </match>
    ...

### フォントの置き換え

一番信頼できる方法は下のような XML フラグメントを追加することです。"binding" 属性を使うことでよりよい結果を得ることができます、例えば、Firefox でフォントのプロパティを変更したくない場合。下のフラグメントは Georgia の代わりに Ubuntu を使わせます:

    ...
     <match target="pattern">
       <test qual="any" name="family"><string>georgia</string></test>
       <edit name="family" mode="assign" binding="same"><string>Ubuntu</string></edit>
     </match>
    ...

他の方法として "preferred" フォントを設定するというのもありますが、元のフォントがシステムに存在しない時にしか効果がありません。その場合、指定したフォントが代わりに使われます:

    ...
    < !-- Replace Helvetica with Bitstream Vera Sans Mono -->
    < !-- Note, an alias for Helvetica should already exist in default conf files -->
    <alias>
        <family>Helvetica</family>
        <prefer><family>Bitstream Vera Sans Mono</family></prefer>
        <default><family>fixed</family></default>
    </alias>
    ...

### ビットマップフォントの無効化

fontconfig でビットマップフォントを無効化するには、`70-no-bitmaps.conf` を使って下さい (このファイルはデフォルトでは fontconfig によって作られません):

    # cd /etc/fonts/conf.d
    # rm 70-yes-bitmaps.conf
    # ln -s ../conf.avail/70-no-bitmaps.conf

次のワンライナーも使えるはずです:

    # ln -s /etc/fonts/conf.avail/70-no-bitmaps.conf /etc/fonts/conf.d/

`70-yes-bitmaps.conf` が存在しない場合は削除する必要はありません。ビットマップフォントをどのフォントで置き換えるか選択することもできます (Helvetica, Courier, Times のビットマップを TTF フォントに):

    ~/.config/fontconfig/conf.d/29-replace-bitmap-fonts.conf

    <?xml version="1.0"?>
    <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
    <fontconfig>
        <!-- Replace generic bitmap font names by generic font families -->
        <match target="pattern" name="family">
            <test name="family" qual="any">
                <string>Helvetica</string>
            </test>
            <edit mode="assign" name="family">
                <string>Arial</string>
                <string>Liberation Sans</string>
                <string>sans-serif</string>
            </edit>
        </match>
        <match target="pattern" name="family">
            <test name="family" qual="any">
                <string>Courier</string>
            </test>
            <edit mode="assign" name="family">
                <string>Courier New</string>
                <string>Liberation Mono</string>
                <string>monospace</string>
            </edit>
        </match>
        <match target="pattern" name="family">
            <test name="family" qual="any">
                <string>Times</string>
            </test>
            <edit mode="assign" name="family">
                <string>Times New Roman</string>
                <string>Liberation Serif</string>
                <string>serif</string>
            </edit>
        </match>
    </fontconfig>

全てのフォントで埋め込みビットマップを無効にするには:

    ~/.config/fontconfig/conf.d/20-no-embedded.conf

    <?xml version="1.0"?>
    <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
    <fontconfig>
      <match target="font">
        <edit name="embeddedbitmap" mode="assign">
          <bool>false</bool>
        </edit>
      </match>
    </fontconfig>

特定のフォントで埋め込みビットマップフォントを無効にするには:

    <match target="font">
      <test qual="any" name="family">
        <string>Monaco</string>
      </test>
      <edit name="embeddedbitmap"><bool>false</bool></edit>
    </match>

### ビットマップフォントのスケーリングを無効にする

ビットマップフォントのスケーリングを無効化するには (which often makes them blurry)、`/etc/fonts/conf.d/10-scale-bitmap-fonts.conf` を削除してください。

### 不完全なフォントにボールド・イタリック体を作成する

Freetype には italic や bold のスタイルがフォントにないときに自動で作成する機能があります。ただし、この機能はアプリケーションによって明示的に必要とされたときしか使われません。プログラムがこのようなリクエストを送るのは稀なので、このセクションでは手動で欠けているスタイルを強制的に作成する方法を説明しています。

下で説明しているように `/usr/share/fonts/fonts.cache-1` を編集するところから初めて下さい。`fc-cache` でフォントの更新がされると `/usr/share/fonts/fonts.cache-1` が上書きされるので、修正したコピーを他のファイルに保存してください。

Dupree フォントがインストールされていると仮定します:

    "dupree.ttf" 0 "Dupree:style=Regular:slant=0:weight=80:width=100:foundry=unknown:index=0:outline=True:etc...

この行を複製して、`style=Regular` を `style=Bold` などの他のスタイルに変更してください。さらに、イタリック体では `slant=0` を `slant=100` に、ボールド体では `weight=80` を `weight=200` に変更してください。もしくは bold italic と結合するなら:

    "dupree.ttf" 0 "Dupree:style=Bold Italic:slant=100:weight=200:width=100:foundry=unknown:index=0:outline=True:etc...

必要な修正を `$XDG_CONFIG_HOME/fontconfig/fonts.conf` に加えて下さい:

    ...
    <match target="font">
        <test name="family" qual="any">
            <string>Dupree</string>
             <!-- other fonts here .... -->
         </test>
         <test name="weight" compare="more_eq"><int>140</int></test>
         <edit name="embolden" mode="assign"><bool>true</bool></edit>
    </match>

    <match target="font">
        <test name="family" qual="any">
            <string>Dupree</string>
            <!-- other fonts here .... -->
        </test>
        <test name="slant" compare="more_eq"><int>80</int></test>
        <edit name="matrix" mode="assign">
            <times>
                <name>matrix</name>
                    <matrix>
                        <double>1</double><double>0.2</double>
                        <double>0</double><double>1</double>
                    </matrix>
            </times>
        </edit>
    </match>
    ...

Tip: 既に太字フォントが存在していて、更に太くしたいときは 'embolden' という値を使って下さい。

### ルールの優先順を変更する

Fontconfig は番号順で `/etc/fonts/conf.d` 内のファイルを処理します。ルールやファイルが他のルールを上書きする可能性があり、どのファイルが最後にパースされるのか混乱するおそれがあります。

個人設定が他の全てのルールに優先することを保証するには、順番を変えて下さい:

    # cd /etc/fonts/conf.d
    # mv 50-user.conf 99-user.conf

ただし、ユーザーにはデフォルトでフォントの設定（ヒンティングやアンチエイリアスのプロパティ、新しいフォントから一般的なフォントファミリーへのエイリアスなど）のコントロールを与えられているので、ほとんどの場合この変更は必要ありません。

### fontconfig 設定サンプル

fontconfig の設定例はこのページにあります。

出発点となるシンプルな設定:

    /etc/fonts/local.conf

    <?xml version='1.0'?>
    <!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
    <fontconfig>
    	<match target="font">
    		<edit mode="assign" name="antialias">
    			<bool>true</bool>
    		</edit>
    		<edit mode="assign" name="embeddedbitmap">
    			<bool>false</bool>
    		</edit>
    		<edit mode="assign" name="hinting">
    			<bool>true</bool>
    		</edit>
    		<edit mode="assign" name="hintstyle">
    			<const>hintslight</const>
    		</edit>
    		<edit mode="assign" name="lcdfilter">
    			<const>lcddefault</const>
    		</edit>
    		<edit mode="assign" name="rgba">
    			<const>rgb</const>
    		</edit>
    	</match>
    </fontconfig>

## パッチがあてられているパッケージ

以下のパッチ済みパッケージは AUR から利用できます。注意事項:

- 基本的に設定が必要になります。
- 新しいフォントレンダリングはアプリケーションが再起動するまで有効になりません。
- ライブラリに静的リンクしているアプリケーションはシステムライブラリにあてられたパッチの影響を受けません。

### Infinality

infinality パッチセットは freetype2 のフォントレンダリングを大幅に向上させます。また、新しい機能を多数追加します。

- ホームページ
- フォーラム
- infinality についての短い記事 (とスクリーンショット)

Infinality の設定は `/etc/profile.d/infinality-settings.sh` 内の環境変数で実行しながら全て行うことができます。以下を設定可能です:

- Emboldening Enhancement: Y emboldening を無効化し、太字のないフォントでよりよい結果が得られます。ネイティブの TT hinter と autohinter で動作します。
- Auto-Autohint: TT 情報が含まれていないフォントで autohint を自動的に強制します。
- Autohint Enhancement: autohint にピクセルから水平ステムを抽出させます。よくヒンティングされた truetype フォントと同じような結果が得られますが、100% パテントフリーです (私が知る限り)。
- Customized FIR Filter: 起動時にあなたが設定した filter values を選択します。ネイティブの TT hinter と autohinter で動作します。
- Stem Alignment: ビットマップ文字を調整してピクセルの境界を最適化します。ネイティブの TT hinter と autohinter で動作します。
- Pseudo Gamma Correction: 指定された値・サイズまで文字を薄く・濃くします。ネイティブの TT hinter と autohinter で動作します。
- Embolden Thin Fonts: 細い、もしくは薄いフォントを太くして可読性を上げます。autohinter で動作します。
- Force Slight Hinting: プログラムが完全なヒンティングを求めているときも軽量なヒンティングを強制します。(fedora の infinality-settings パッケージに含まれている) local.conf を使っている場合 @font-face フォントで改善が見られます。
- ChromeOS Style Sharpening: ChromeOS はフォントの見た目をシャープにするパッチを使っています。現在このパッチは infinality パッチセットに含まれています。

多くのプリセットが含まれており `/etc/profile.d/infinality-settings.sh` で USE_STYLE 変数を設定することで使うことができます。

#### インストールと設定

Tip: このセクションで挙げられている全ての AUR パッケージは bohoomil のカスタムリポジトリからもインストールできます。リポジトリを有効にする方法は下のセクションを見て下さい。
Note: fontconfig-infinality-ultimate < 2.11.0-2 を使っている場合、fontconfig-infinality-ultimate パッケージを (アップグレードではなく) 再インストールする必要があります:

     pacman -Rdd fontconfig-infinality-ultimate
     pacman -S fontconfig-infinality-ultimate

freetype2-infinality を AUR からインストールできます。multilib を使っている場合、AUR から lib32-freetype2-infinality もインストールしてください。AUR には最新の開発スナップショットの freetype2 と Infinality パッチセットも入っています: freetype2-infinality-git と lib32-freetype2-infinality-git。

さらに、エンジンのレンダリング設定とは別に、定義済みフォントのスタイルやアンチエイリアス設定の選択を有効にするために fontconfig-infinality もインストールすることを推奨します。インストール後、フォントのスタイル (win7, winxp, osx, linux, ...) を次のコマンドで選択できます:

    # infctl setstyle

win7 や osx に設定する場合、適切なフォントがインストールされている必要があります。

Note:

- ユーザー bohoomil が素晴らしい設定を彼の github リポジトリでメンテナンスしており AUR では fontconfig-infinality-ultimate-git として利用可能です。
- デフォルトの infinality の設定では 72 DPI ではなく 96 DPI でフォントを表示するときに問題が生じることがあります。問題が起きているようなら `/etc/fonts/infinality/infinality.conf` を開いて DPI に関するセクションを探し 72 から 96 に値を変更して下さい。この問題は特に conky がフォントを小さく表示してしまう影響を与えます。そのため画像が正しく表示されなくなります。
- AUR から grip-git をインストールすることでリアルタイムのフォントプレビューができます。
- fontconfig-infinality の README には /etc/fonts/local.conf は存在しないか、infinality の設定はそこにないはずだと書いてあります。現在 local.conf は廃止されておりこの設定によって完全に置き換えられます。

詳細は次の記事を見て下さい: http://www.infinality.net/forum/viewtopic.php?f=2&t=77

#### カスタムリポジトリからインストール

また、bohoomil が infinality-bundle リポジトリを管理していて、3つの基本的なライブラリ (freetype2-infinality-ultimate, fontconfig-infinality-ultimate & cairo-infinality-ultimate) に事前にパッチ・設定・ビルドを行ったバイナリを全てのアーキテクチャで提供しています (i686, x86_64, multilib)。さらに、infinality-bundle-fonts というリポジトリもあり、完全にフリーで高品質なタイプフェースで一般的なプロプライエタリのフォントファミリーを置き換えます。infinality-bundle と infinality-bundle-fonts を使えば、インストール・設定は劇的にシンプルになります。

詳細やインストールの手順については Infinality-bundle+fonts (日本語) を見て下さい。

### Ubuntu

Ubuntu はフォントレンダリングライブラリに設定とパッチを追加しています。

AUR からパッチのあたったパッケージをインストールしてください。パッケージの名前は: freetype2-ubuntu fontconfig-ubuntu cairo-ubuntu。

全体的な設定を追加する必要があります。#fontconfig 設定サンプル を見てください。 Ubuntu の設定では hintslight オプションが一番良いレンダリングをもたらします。

*-ubuntu の AUR パッケージはユーザーによって最新に保つ必要があることに注意してください。pacman で他のパッケージと共に更新されることはありません。ユーザーがインストールしたコアグラフィカルライブラリが公式リポジトリのアプリケーションと互換性がなくなると、グラフィカルシステム全体が動作不可能になる可能性があります。

### パッチがあたっていないパッケージに戻す

パッチがあたっていないパッケージを復元するには、オリジナルのパッケージを再インストールしてください:

    # pacman -S --asdeps freetype2 cairo fontconfig

32ビット版もインストールしている場合は 'lib32-cairo lib32-fontconfig lib32-freetype2' を加えて下さい。

## fontconfig をサポートしていないアプリケーション

URxvt など、アプリケーションによっては fontconfig の設定を無視することがあります。このことは、適切な設定に大いに依存している infinality パッチを使っている時に非常に明らかです。`~/.Xresources` を使うことで問題を解決することができますが、このファイルの柔軟性は fontconfig に到底及びません。例 (オプションの説明は #Fontconfig 設定 を見てください):

    ~/.Xresources

    Xft.autohint: 0
    Xft.lcdfilter:  lcddefault
    Xft.hintstyle:  hintfull
    Xft.hinting: 1
    Xft.antialias: 1
    Xft.rgba: rgb

X が起動した時に設定が正しくロードされているか `xrdb -q` で確認してください (詳細な情報は Xresources を見てください)。

## トラブルシューティング

### フォントが歪む

Note: 96 DPI はスタンダードではありません。あなたのモニターの実際の DPI を使って正しいフォントレンダリングをする必要があります (特にサブピクセルレンダリングを使う場合)。

フォントが大きすぎ・小さすぎたり、プロポーションやレンダリングがおかしい場合、fontconfig が間違った DPI を使っている可能性があります。

Fontconfig は Xorg サーバーによる DPI パラメータを検知することができます。自動で検知された DPI を (xorg-xdpyinfo パッケージに入っている) `xdpyinfo` で確認してみて下さい:

    $ xdpyinfo | grep dots

      resolution:    102x102 dots per inch

DPI が (おそらくモニター EDID が誤っているせいで) 間違って検出されている場合、Xorg の設定で手動で指定することが可能です。Xorg (日本語)#画面サイズと DPI を参照してください。これは推奨されている解決方法ですが、ドライバーにバグがあると動かないことがあります。

Fontconfig は Xft.dpi 変数が設定されている場合、デフォルトをそれにします。Xft.dpi は基本的にデスクトップ環境 (通常は Xorg の DPI 設定) か `~/.Xdefaults` や `~/.Xresources` で手動で設定されます。xrdb を使って値を調べて下さい:

    $ xrdb -query | grep dpi

    Xft.dpi:	102

問題が修正されない場合は fontconfig によって使われる DPI を手動で設定するようにフォールバックできます:

    ...
    <match target="pattern">
       <edit name="dpi" mode="assign"><double>102</double></edit>
    </match>
    ...

### Calibri, Cambria, Monaco などが正しく表示されない

スケーラブルフォントによっては、主として小さなサイズの時、代わりとして埋め込みビットマップが表示されることがあります。全てのサイズでスケーラブルフォントを使うには埋め込みビットマップを無効にしてください。

### 古い GTK と QT アプリケーション

新しい GTK アプリはデフォルトで Xft を有効にしますが、バージョン 2.2 以前では話が違っていました。これらのアプリケーションを更新できない場合、`~/.bashrc` に次を追加することで古い GNOME に Xft を強制してください:

    export GDK_USE_XFT=1

古い QT アプリケーションでは:

    export QT_XFT=true

### アプリケーションがヒンティングを無視する

アプリケーションによってはデフォルトの fontconfig のヒンティングやアンチエイリアス設定を無視することがあります。例えば vlc や smplayer などの Qt アプリケーションを Gnome 3 で使っている時に起こることがあります。そのような場合はアプリケーションにあった指定の設定プログラムを使って下さい。gnome なら、gnome-tweak-tool を使って infinality を使用している間はアンチエイリアスをデフォルトの `Grayscale` から `Rgba` に設定してください。

## 参照

- Fonts in X11R6.8.2 - 公式の Xorg フォント情報
- FreeType 2 概要
- Gentooの font-rendering スレッド

Category:

- Fonts (日本語)