Difference between revisions of "Font Configuration (日本語)"

From ArchWiki
Jump to: navigation, search
m
m
Line 20: Line 20:
 
今日の Linux の標準は Fontconfig ですが、アプリケーションによっては未だにフォントの選択と表示に [[X Logical Font Description]] を使っているものもあります。
 
今日の Linux の標準は Fontconfig ですが、アプリケーションによっては未だにフォントの選択と表示に [[X Logical Font Description]] を使っているものもあります。
  
Arch Linux のフォントレンダリングパッケージには ''freetype2'' のサポートが含まれており バイトコードインタプリタ (BCI) が有効になっています。LCD モニターでより良いフォントレンダリングを行うためのパッチがあてられたパッケージも存在します。[[#パッチがあてられているパッケージ]] を見て下さい。[[#Infinality: the generic way|Infinality]] パッケージは自動ヒンティングとサブピクセルレンダリング、リコンパイル不要の LCD フィルター調整、太字フォントの auto-hinter が可能です。
+
Arch Linux のフォントレンダリングパッケージには ''freetype2'' のサポートが含まれており バイトコードインタプリタ (BCI) が有効になっています。LCD モニターでより良いフォントレンダリングを行うためのパッチがあてられたパッケージも存在します。[[#パッチがあてられているパッケージ]] を見て下さい。[[#Infinality: 一般的な方法|Infinality]] パッケージは自動ヒンティングとサブピクセルレンダリング、リコンパイル不要の LCD フィルター調整、太字フォントの auto-hinter が可能です。
  
 
== フォントパス ==
 
== フォントパス ==
Line 151: Line 151:
 
=== サブピクセルレンダリング ===
 
=== サブピクセルレンダリング ===
  
Subpixel rendering effectively triples the horizontal (or vertical) resolution for fonts by making use of subpixels. The autohinter and subpixel rendering are not designed to work together and should not be used in combination without the [[#Infinality]] patch set.
+
サブピクセルレンダリングはサブピクセルを使うことでフォントの横の (もしくは縦の) 解像度を事実上3倍にします。autohinter とサブピクセルは一緒に動作させることを予定されていないので、[[#Infinality: 一般的な方法|Infinality]] パッチセットを使っていない限り、同時に両方とも使ってはいけません。
  
Most monitors manufactured today use the Red, Green, Blue (RGB) specification. Fontconfig will need to know your monitor type to be able to display your fonts correctly.
+
今日ではほとんどのモニターは赤・緑・青 (RGB) の並びを使っています。フォントを正しく表示するために、Fontconfig にあなたのモニターのタイプを知らせる必要があります。
  
''RGB (most common), BGR, V-RGB (vertical), or V-BGR''
+
''RGB (最も一般的), BGR, V-RGB (), V-BGR''
  
To enable subpixel rendering:
+
サブピクセルレンダリングを有効にするには:
  
 
{{bc|<nowiki>
 
{{bc|<nowiki>
Line 167: Line 167:
 
</nowiki>}}
 
</nowiki>}}
  
If you notice unusual colors around font's borders, the wrong subpixel arrangement might be configured.  The [http://www.lagom.nl/lcd-test/subpixel.php Lagom subpixel layout test] web page can help identify it.
+
フォントの縁に異常な色が出る場合、間違ったサブピクセル配列が設定されている可能性があります。[http://www.lagom.nl/lcd-test/subpixel.php Lagom subpixel layout test] で配列を確認することができます。
  
 
==== LCD フィルター ====
 
==== LCD フィルター ====
  
When using subpixel rendering, you should enable the LCD filter, which is designed to reduce colour fringing.  This is described under [http://www.freetype.org/freetype2/docs/reference/ft2-lcd_filtering.html LCD filtering] in the FreeType 2 API reference.  Different options are described under [http://www.freetype.org/freetype2/docs/reference/ft2-lcd_filtering.html#FT_LcdFilter FT_LcdFilter], and are illustrated by this [http://www.spasche.net/files/lcdfiltering/ LCD filter test] page.
+
サブピクセルレンダリングを使う場合、色縁を減らす LCD フィルターを有効にするべきです。FreeType 2 API リファレンスの [http://www.freetype.org/freetype2/docs/reference/ft2-lcd_filtering.html LCD filtering] にこのフィルターの説明があります。また、[http://www.freetype.org/freetype2/docs/reference/ft2-lcd_filtering.html#FT_LcdFilter FT_LcdFilter] にオプションの説明があり、[http://www.spasche.net/files/lcdfiltering/ LCD filter test] にそれぞれのオプションを使って実際に表示したサンプルがあります
  
The {{ic|lcddefault}} filter will work for most users. Other filters are available that can be used in special situations: {{ic|lcdlight}}; a lighter filter ideal for fonts that look too bold or fuzzy, {{ic|lcdlegacy}}, the original Cairo filter; and {{ic|lcdnone}} to disable it entirely.
+
ほとんどのユーザーにとっては {{ic|lcddefault}} フィルターが具合が良いでしょう。他のフィルターは特別な事情がある場合に使えます: {{ic|lcdlight}} は明るいフィルターで、太すぎたりぼやけているフォントに向いています。{{ic|lcdlegacy}} はオリジナルの Cairo フィルターです。{{ic|lcdnone}} はフィルターを完全に無効にします。
  
 
{{bc|<nowiki>
 
{{bc|<nowiki>
Line 261: Line 261:
 
=== フォントの置き換え ===
 
=== フォントの置き換え ===
  
The most reliable way to do this is to add an XML fragment similar to the one below. ''Using the "binding" attribute will give you better results'', for example, in Firefox where you may not want to change properties of font being replaced. This will cause Ubuntu to be used in place of Georgia:
+
一番信頼できる方法は下のような XML フラグメントを追加することです。''"binding" 属性を使うことでよりよい結果を得ることができます''、例えば、Firefox でフォントのプロパティを変更したくない場合。下のフラグメントは Georgia の代わりに Ubuntu を使わせます:
 
  ...
 
  ...
 
   <match target="pattern">
 
   <match target="pattern">
Line 268: Line 268:
 
   </match>
 
   </match>
 
  ...
 
  ...
An alternate approach is to set the "preferred" font, but ''this only works if the original font is not on the system'', in which case the one specified will be substituted:
+
他の方法として "preferred" フォントを設定するというのもありますが、''元のフォントがシステムに存在しない時にしか効果がありません''。その場合、指定したフォントが代わりに使われます:
 
  ...
 
  ...
 
  < !-- Replace Helvetica with Bitstream Vera Sans Mono -->
 
  < !-- Replace Helvetica with Bitstream Vera Sans Mono -->
Line 281: Line 281:
 
=== ビットマップフォントの無効化 ===
 
=== ビットマップフォントの無効化 ===
  
fontconfig でビットマップフォントを無効化するには、{{ic|70-no-bitmaps.conf}} を使って下さい (which is not placed by fontconfig by default):
+
fontconfig でビットマップフォントを無効化するには、{{ic|70-no-bitmaps.conf}} を使って下さい (このファイルはデフォルトでは fontconfig によって作られません):
  
 
  # cd /etc/fonts/conf.d
 
  # cd /etc/fonts/conf.d
Line 287: Line 287:
 
  # ln -s ../conf.avail/70-no-bitmaps.conf
 
  # ln -s ../conf.avail/70-no-bitmaps.conf
  
This oneliner should also work:
+
次のワンライナーも使えるはずです:
  
 
  # ln -s /etc/fonts/conf.avail/70-no-bitmaps.conf /etc/fonts/conf.d/
 
  # ln -s /etc/fonts/conf.avail/70-no-bitmaps.conf /etc/fonts/conf.d/
Line 421: Line 421:
 
* ライブラリに[[Wikipedia:ja:静的リンク|静的リンク]]しているアプリケーションはシステムライブラリにあてられたパッチの影響を受けません。
 
* ライブラリに[[Wikipedia:ja:静的リンク|静的リンク]]しているアプリケーションはシステムライブラリにあてられたパッチの影響を受けません。
  
=== Infinality: the generic way ===
+
=== Infinality: 一般的な方法 ===
  
 
The infinality patchset aims to greatly improve freetype2 font rendering. It adds multiple new capabilities.
 
The infinality patchset aims to greatly improve freetype2 font rendering. It adds multiple new capabilities.
Line 464: Line 464:
 
* [http://www.webupd8.org/2013/06/better-font-rendering-in-linux-with.html Short article about infinality (contains screenshots)]
 
* [http://www.webupd8.org/2013/06/better-font-rendering-in-linux-with.html Short article about infinality (contains screenshots)]
  
=== Infinality: the easy way ===
+
=== Infinality: 簡単な方法 ===
  
 
bohoomil also maintains '''infinality-bundle''' repository, offering three basic libraries (freetype2-infinality-ultimate, fontconfig-infinality-ultimate & cairo-infinality-ultimate) as pre-patched, pre-configured and pre-built binaries for all architectures (i686, x86_64, multilib). Using {{Pkg|infinality-bundle}} makes the whole installation and configuration process dramatically simplified.
 
bohoomil also maintains '''infinality-bundle''' repository, offering three basic libraries (freetype2-infinality-ultimate, fontconfig-infinality-ultimate & cairo-infinality-ultimate) as pre-patched, pre-configured and pre-built binaries for all architectures (i686, x86_64, multilib). Using {{Pkg|infinality-bundle}} makes the whole installation and configuration process dramatically simplified.

Revision as of 11:39, 8 August 2013

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>

ヒンティング

Font hinting (also known as instructing) is the use of mathematical instructions to adjust the display of an outline font so that it lines up with a rasterized grid, such as the pixel grid in a display. Fonts will not line up correctly without hinting until displays have 300 DPI or greater. Two types of hinting are available.

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

Using normal hinting, TrueType hinting instructions in the font are interpreted by freetype's Byte-Code Interpreter. This works best for fonts with good hinting instructions.

To enable normal hinting:

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

Autohinter

Auto-discovery for hinting. This looks worse than normal hinting for fonts with good instructions, but better for those with poor or no instructions. The autohinter and subpixel rendering are not designed to work together and should not be used in combination.

To enable auto-hinting:

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

Hint style

Hint style is the amount of influence the hinting mode has. Hinting can be set to: hintfull, hintmedium, hintslight and hintnone. With BCI hinting, hintfull should work best for most fonts. With the autohinter, hintslight is recommended.

  <match target="font">
    <edit name="hintstyle" mode="assign">
      <const>hintfull</const>
    </edit>
  </match>
Note: Some applications, like Gnome 3 may override default hinting settings.

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

サブピクセルレンダリングはサブピクセルを使うことでフォントの横の (もしくは縦の) 解像度を事実上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>

Advanced LCD filter specification

If the available, built-in LCD filters are not satisfactory, it is possible to tweak the font rendering very specifically by building a custom freetype2 package and modifying the hardcoded filters. The Arch Build System can be used to build and install packages from source.

First, refresh the freetype2 PKGBUILD as root:

# abs extra/freetype2

This example uses /var/abs/build as the build directory, substitute it according to your personal ABS setup. Download and extract the freetype2 package as a regular user:

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

Edit the file src/freetype-VERSION/src/base/ftlcdfil.c and look up the definition of the constant default_filter[5]:

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

This constant defines a low-pass filter applied to the rendered glyph. Modify it as needed. Save the file, build and install the custom package:

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

Reboot or restart X. The lcddefault filter should now render fonts differently.

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

The auto-hinter uses sophisticated methods for font rendering, but often makes bold fonts too wide. Fortunately, a solution can be turning off the autohinter for bold fonts while leaving it on for the rest:

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

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

See also sharpfonts.co.cc for related information.

Some users prefer the sharper rendering that anti-aliasing does not offer:

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

You may not need to remove 70-yes-bitmaps.conf if it does not exist. You can choose which fonts to replace bitmaps fonts with (Helvetica, Courier and Times bitmap mapts to TTF fonts) by:

# cd /etc/fonts/conf.d
# ln -s ../conf.avail/29-replace-bitmap-fonts.conf
To disable embedded bitmap for all fonts:
~/.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>

To disable embedded bitmap fonts for a specific font:

<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 を削除してください。

Create bold and italic styles for incomplete fonts

Freetype has the ability to automatically create italic and bold styles for fonts that do not have them, but only if explicitly required by the application. Given programs rarely send these requests, this section covers manually forcing generation of missing styles.

Start by editing /usr/share/fonts/fonts.cache-1 as explained below. Store a copy of the modifications on another file, because a font update with fc-cache will overwrite /usr/share/fonts/fonts.cache-1.

Assuming the Dupree font is installed:

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

Duplicate the line, change style=Regular to style=Bold or any other style. Also change slant=0 to slant=100 for italic, weight=80 to weight=200 for bold, or combine them for bold italic:

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

Now add necessary modifications to $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: Use the value 'embolden' for existing bold fonts in order to make them even bolder.

Change rule overriding

Fontconfig processes files in /etc/fonts/conf.d in numerical order. This enables rules or files to override one another, but often confuses users about what file gets parsed last.

To guarantee that personal settings take precedence over any other rules, change their ordering:

# 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: 一般的な方法

The infinality patchset aims to greatly improve freetype2 font rendering. It adds multiple new capabilities.

Infinality's settings are all configurable at runtime via environment variables in /etc/profile.d/infinality-settings.sh, and include the following:

  • Emboldening Enhancement: Disables Y emboldening, producing a much nicer result on fonts without bold versions. Works on native TT hinter and autohinter.
  • Auto-Autohint: Automatically forces autohint on fonts that contain no TT instructions.
  • Autohint Enhancement: Makes autohint snap horizontal stems to pixels. Gives a result that appears like a well-hinted truetype font, but is 100% patent-free (as far as I know).
  • Customized FIR Filter: Select your own filter values at run-time. Works on native TT hinter and autohinter.
  • Stem Alignment: Aligns bitmap glyphs to optimized pixel boundaries. Works on native TT hinter and autohinter.
  • Pseudo Gamma Correction: Lighten and darken glyphs at a given value, below a given size. Works on native TT hinter and autohinter.
  • Embolden Thin Fonts: Embolden thin or light fonts so that they are more visible. Works on autohinter.
  • Force Slight Hinting: Force slight hinting even when programs want full hinting. If you use the local.conf I provide (included in infinality-settings fedora package) you will notice nice improvements on @font-face fonts.
  • ChromeOS Style Sharpening: ChromeOS uses a patch to sharpen the look of fonts. This is now included in the infinality patchset.

A number of presets are included and can be used by setting the USE_STYLE variable in /etc/profile.d/infinality-settings.sh.

Note:
  • The user bohoomil maintains a very good configuration in his github repo which is available as a package in the AUR.
  • Install grip-gitAUR from AUR to have a realtime preview.

freetype2-infinalityAUR can be installed from the AUR. Additionally, if you are using lib32-freetype2 from [multilib], replace it with lib32-freetype2-infinalityAUR from the AUR. The AUR also contains a Git version of freetype2 that builds the latest development snapshot of freetype2 with the Infinality patchset: freetype2-git-infinalityAUR, lib32-freetype2-git-infinalityAUR.

It is recommended to also install fontconfig-infinalityAUR to enable selection of predefined font substitution styles and antialiasing settings, apart from the rendering settings of the engine itself. After doing so, you can select the font style (win7, winxp, osx, linux, ...) with:

# infctl setstyle

If you set e.g. win7 or osx you need the corresponding fonts installed.

Note:
  • Default infinality settings can cause some programs to display fonts at 72 DPI instead of 96. If you notice a problem open /etc/fonts/infinality/infinality.conf search for the section on DPI and change 72 to 96. This problem can specifically affect conky causing the fonts to appear smaller than they should. Thus not aligning properly with images.
  • 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.

for more information see this article: http://www.infinality.net/forum/viewtopic.php?f=2&t=77

Infinality: 簡単な方法

bohoomil also maintains infinality-bundle repository, offering three basic libraries (freetype2-infinality-ultimate, fontconfig-infinality-ultimate & cairo-infinality-ultimate) as pre-patched, pre-configured and pre-built binaries for all architectures (i686, x86_64, multilib). Using infinality-bundle makes the whole installation and configuration process dramatically simplified.

Installing it will replace the corresponding, generic Arch libraries (i.e. freetype2-infinality-ultimate will be used instead of freetype2, fontconfig-infinality-ultimate instead of fontconfig and fontconfig-infinality-ultimate from the AUR, and cairo-infinality-ultimate instead of the regular cairo). The libraries are fully compatible with the Arch packages and are meant to be used as drop-in replacements for them. No post installation/upgrade steps are required for most use scenarios: everything should work out of the box.

To use the repository, add

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

to your /etc/pacman.conf.

If you want to have access to multilib versions, add the following, too:

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

Import and sign the key:

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

Refresh your repositories:

pacman -Syu

In case of server down times, there is always a backup copy of the repository available via Dropbox.

When installing some packages (like libgdiplus), you may encounter an error:

:: 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)
If this happens, install the new package with
# pacman -Sd foo
instead.

For more information, see infinality-bundle user notes.

A support thread in the Forums is available here.

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 オプションが一番良いレンダリングをもたらします。

Note that the *-ubuntu AUR packages need to be kept up-to-date by the user, and will not be updated by pacman along with other packages. The whole graphical system can become inoperable if the user-installed core graphical libraries become incompatible with the official repository applications.

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

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

# 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 を見てください)。

トラブルシューティング

Distorted fonts

Note: 96 DPI is not a standard. You should use your monitor's actual DPI to get proper font rendering, especially when using subpixel rendering.

If fonts are still unexpectedly large or small, poorly proportioned or simply rendering poorly, fontconfig may be using the incorrect DPI.

Fontconfig should be able to detect DPI parameters as discovered by the Xorg server. You can check the automatically discovered DPI with xdpyinfo (provided by the xorg-xdpyinfo package):

$ xdpyinfo | grep dots
  resolution:    102x102 dots per inch

If the DPI is detected incorrectly (usually due to an incorrect monitor EDID), you can specify it manually in the Xorg configuration, see Xorg#Display Size and DPI. This is the recommended solution, but it may not work with buggy drivers.

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, etc. not rendering properly

Some scalable fonts have embedded bitmap versions which are rendered instead, mainly at smaller sizes. Force using scalable fonts at all sizes by #Disabling embedded bitmap.

Older GTK and QT applications

Modern GTK apps enable Xft by default but this was not the case before version 2.2. If it is not possible to update these applications, force Xft for old GNOME applications by adding to ~/.bashrc:

export GDK_USE_XFT=1

For older QT applications:

export QT_XFT=true

Applications overriding hinting

Some applications may override default fontconfig hinting and anti-aliasing settings. This may happen with Gnome 3, for example. Use the specific configuration program for the application in such cases. For gnome, try gnome-tweak-tool.

参照