Font Configuration (日本語)

From ArchWiki
Revision as of 06:18, 21 October 2013 by Kusakata (Talk | contribs) (フォントが歪む)

Jump to: navigation, search

Template:Article summary start Template:Article summary text Template:Article summary heading Template:Article summary wiki: フォントの追加方法と推奨フォント Template:Article summary wiki Template:Article summary wiki: Sun の Java マシン 特有のフォント Template:Article summary wiki: Microsoft フォントの追加と Windows のフォント設定 Template:Article summary wiki: X 用の古いコアフォントシステム Template:Article summary end

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

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>

ヒンティング

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

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

通常のヒンティングを使って、freetype の Byte-Code Interpreter によってフォント内の TrueType ヒンティング情報が解釈されます。正しいヒンティング情報があるフォントでは一番良く働きます。

通常のヒンティングを有効にするには:

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

Autohinter

ヒンティングを自動検知します。情報が揃っているフォントでの通常ヒンティングよりは見た目が悪くなりますが、情報が少なかったり無かったりするフォントでは見た目が良くなります。autohinter とサブピクセルレンダリングは同時に動作させることが想定されていないので一緒に使ってはいけません。

自動ヒンティングを有効にするには:

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

ヒントスタイル

ヒントスタイルはヒンティングモードの影響力の強さを示します。ヒンティングの強さは次のどれかに設定できます: hintfull, hintmedium, hintslight, hintnone。BCI ヒンティングでは、ほとんどのフォントで hintfull が最適です。autohinter を使っている時は、hintslight が推奨されています。

  <match target="font">
    <edit name="hintstyle" mode="assign">
      <const>hintfull</const>
    </edit>
  </match>
Note: Gnome 3 などのアプリケーションによっては、デフォルトのヒンティング設定を無視することがあります。

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

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

今日ではほとんどのモニターは赤・緑・青 (RGB) の並びを使っています。フォントを正しく表示するために、Fontconfig にあなたのモニターのタイプを知らせる必要があります。

RGB (最も一般的), BGR, V-RGB (縦), V-BGR

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

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

フォントの縁に異常な色が出る場合、間違ったサブピクセル配列が設定されている可能性があります。Lagom subpixel layout test で配列を確認することができます。

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>
...

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

sharpfonts.co.cc に関連情報があります。

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

...
<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 and Times bitmap mapts to TTF fonts):

# cd /etc/fonts/conf.d
# ln -s ../conf.avail/29-replace-bitmap-fonts.conf
全てのフォントで埋め込みビットマップを無効にするには:
~/.config/fontconfig/conf.d/20-no-embeded.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 には italicbold のスタイルがフォントにないときに自動で作成する機能があります。ただし、この機能はアプリケーションによって明示的に必要とされたときしか使われません。プログラムがこのようなリクエストを送るのは稀なので、このセクションでは手動で欠けているスタイルを強制的に作成する方法を説明しています。

下で説明しているように /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=Regularstyle=Bold などの他のスタイルに変更してください。さらに、イタリック体では slant=0slant=100 に、ボールド体では weight=80weight=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

This change seems however to be unnecessary for the most of the cases, because a user is given enough control by default to set up own font preferences, hinting and antialiasing properties, alias new fonts to generic font families, etc.

fontconfig 設定サンプル

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

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

/etc/fonts/local.conf
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
 <match target="font">
  
  <edit mode="assign" name="rgba">
   <const>rgb</const>
  </edit>

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

  <edit mode="assign" name="hintstyle">
   <const>hintslight</const>
  </edit>

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

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

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

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

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

Infinality

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

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

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

# infctl setstyle

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

Note:
  • ユーザー bohoomil が素晴らしい設定を彼の github repo でメンテナンスしており AUR では fontconfig-infinality-ultimate-gitAUR として利用可能です。
  • デフォルトの infinality の設定では 72 DPI ではなく 96 DPI でフォントを表示するときに問題が生じることがあります。問題が起きているようなら /etc/fonts/infinality/infinality.conf を開いて DPI に関するセクションを探し 72 から 96 に値を変更して下さい。この問題は特に conky がフォントを小さく表示してしまう影響を与えます。そのため画像が正しく表示されなくなります。
  • AUR から grip-gitAUR をインストールすることでリアルタイムのフォントプレビューができます。
  • The README for fontconfig-infinalityAUR says that /etc/fonts/local.conf should either not exist, or have no infinality-related configurations in it. The local.conf is now obsolete and completely replaced by this configuration.

詳細は次の記事を見て下さい: 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 を使えば、インストール・設定は劇的にシンプルになります。

インストールによって、対応する標準の Arch ライブラリが置き換えられます (i.e. freetype2 の代わりに freetype2-infinality-ultimate が、fontconfig の代わりに fontconfig-infinality-ultimate が、標準の cairo の代わりに cairo-infinality-ultimate が使われます)。ライブラリは Arch のパッケージと完全に互換性があります。ほとんどの場合インストール・アップグレードをした後に何らかの設定をする必要はありません: 全ては何もしなくても上手く動くはずです。

リポジトリを使うには、以下を /etc/pacman.conf に追加してください:

[infinality-bundle]
SigLevel = Never
Server = http://ibn.net63.net/infinality-bundle/$arch

multilib バージョンにアクセスしたいときは、同じように:

[infinality-bundle-multilib]
SigLevel = Never
Server = http://ibn.net63.net/infinality-bundle-multilib/$arch

キーをインポート・署名して下さい:

# pacman-key -r 962DDE58
# pacman-key --lsign-key 962DDE58

リポジトリを更新して下さい:

pacman -Syu

サーバーがダウンしている場合、リポジトリのバックアップコピーが Dropbox が利用できます。

パッケージによって (libgdiplus など)、インストール時にエラーが表示されるかもしれません:

:: cairo and cairo-infinality-ultimate are in conflict. Remove cairo-infinality-ultimate? [y/N] n
error: unresolvable package conflicts detected
error: failed to prepare transaction (conflicting dependencies)
この場合には、新しいパッケージを
# pacman -Sd foo
を使ってインストールして下さい。

詳しい情報は infinality-bundle user notes を見て下さい。

フォーラムのサポートスレッドはここにあります。

Note: One frequent issue users face with this repo is that the package database or signatures do not check out. Often times a simple force refresh of the package lists (pacman -Syy) will fix the issue. If that fails, try removing the infinality-bundle files from /var/lib/pacman/sync and then resyncing again.

Ubuntu

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

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

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

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

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

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

# pacman -S --asdeps freetype2 cairo fontconfig

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 will default to the Xft.dpi variable if it is set. Xft.dpi is usually set by desktop environments (usually to Xorg's DPI setting) or manually in ~/.Xdefaults or ~/.Xresources. Use xrdb to query for the value:

$ xrdb -query | grep dpi
Xft.dpi:	102

Those still having problems can fall back to manually setting the DPI used by fontconfig:

...
<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 のヒンティングやアンチエイリアス設定を無視することがあります。例えば Gnome 3 で起こることがあります。そのような場合はアプリケーションにあった指定の設定プログラムを使って下さい。gnome なら、gnome-tweak-tool を試用してください。

参照