Fontconfig

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Fontconfig and the translation is 89% complete.
Resources

fontconfig ライブラリ (media-libs/fontconfig)は、すべての GUI アプリケーションに対して、フォントの選択と設定を単一にすることを企図したものです。デスクトップ環境が独自にフォント上書きやフォント設定のためのユーティリティを提供していることが一般的ですが、それでもなお、fontconfig が基盤的なライブラリです。

インストール

fontconfig が必要なときは、ほぼ確実に既にインストールされているでしょう。そうでない場合は、グラフィカルサブシステム(X または Wayland)とデスクトップ環境を適切にセットアップしているか確認してください。

USE フラグ

fontconfig には多くの USE フラグはありません。

USE flags for media-libs/fontconfig A library for configuring and customizing font access

doc Add extra documentation (API, Javadoc, etc). It is recommended to enable per package instead of globally
nls Add Native Language Support (using gettextGNU locale utilities)
test Enable dependencies and/or preparations necessary to run tests (usually controlled by FEATURES=test but can be toggled independently)

設定

注意
fontconfig のファイルへの変更は、変更後に起動したアプリケーションにしか反映されません!

一般論

fontconfig は、 /etc/fonts/ ディレクトリ下の XML ファイルを読み込んで、ライブラリ内部に設定を構築します。初期設定において読み込まれるファイルは /etc/fonts/fonts.conf (このファイルはユーザーが編集するものではありません!) です。このファイルは、適切な既定値を設定した上で、通常は /etc/fonts/conf.d/ ディレクトリの内容を読み込むコードが含まれます。これらに加えて、/etc/fonts/conf.avail/ ディレクトリには、fontconfig の多様な機能を設定するために使用できる、数々の設定ファイルが配置されています。この中から必要なファイルを /etc/fonts/conf.d/ へシンボリックリンクするのが慣行です。ファイルは名前順に実行されるため、ファイル名は2桁の数字で始まります。10の位の値が、クラスと呼ばれる、ファイルが設定する機能の種類を表します。

Gentoo 特有の部分

Gentoo が提供する eselect モジュール (eselect fontconfig) の目的は、一般論として説明した作業そのものの自動化です。つまり、/etc/fonts/conf.d/ に存在する /etc/fonts/conf.avail/ 内のファイルへのシンボリックリンクの、追加と削除を行います。当然のことながら、システム全体の設定を変更するには、適切な権限が求められます。

下記のサブセクションでは、fontconfig eselect モジュールの使用法を説明します。

利用可能なファイルのリスト表示

list は利用できる fontconfig を表示します。有効になっているファイルには、アスタリスク (*) が付いています。

root #eselect fontconfig list
Available fontconfig .conf files (* is enabled):
  [1]   10-autohint.conf *
  [2]   10-no-sub-pixel.conf
  [3]   10-sub-pixel-bgr.conf
  [4]   10-sub-pixel-rgb.conf
  [5]   10-sub-pixel-vbgr.conf
  [6]   10-sub-pixel-vrgb.conf
  [7]   10-unhinted.conf
  [8]   11-lcdfilter-default.conf
  [9]   11-lcdfilter-legacy.conf
  ...
Warning
fonts.avail 下のファイルはそれぞれのシステムによって異なるため、出力結果も同じく異なります。ブログや wiki に記載されたものなど、他のシステムにおける番号を思慮なしに使ってはなりません。

ファイルの有効化

ファイルの有効化は、ファイル名と番号の両方によって可能です。この2行は同じことを行います:

root #eselect fontconfig enable 10-sub-pixel-rgb.conf
root #eselect fontconfig enable 4

ファイルの無効化

以下のようにすると、ファイルの無効化が可能です:

root #eselect fontconfig disable 10-sub-pixel-rgb.conf
root #eselect fontconfig disable 4

システム全体の設定をカスタマイズ

システム全体で使われるカスタムfontconfigファイルを作成するためには、51-local.confを有効化して、/etc/fonts/local.confを作成してください。このファイルはXML形式です。

FILE /etc/fonts/local.confサンセリフに使用したいフォントの優先順位を変更するファイルの例
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <alias>
    <family>sans-serif</family>
    <prefer>
      <family>Ubuntu</family>
      <family>TakaoPGothic</family>
      <family>Droid Sans</family>
    </prefer>
    <default><family>DejaVu Sans</family></default>
  </alias>
</fontconfig>

この設定について説明しておくと、サンセリフフォントに関しては、必要な場合だけデフォルト (default) の選択肢として使用されることがある DejaVu Sans よりも、Ubuntu、TakaoPGothic、そして Droid Sans フォントを使用することを(この順で)優先する (prefer) という意味です。もちろん、ここで異なる選択を取ってもかまいません。

ユーザー単位での設定

ユーザー単位でのfontconfigファイルを作成するためには、50-user.confを有効化してください。これはデフォルトで有効になっているかもしれません。各ユーザーは~/.config/fontconfig/fonts.confファイルを使って設定できます。このファイルはlocal.confと同じXMLフォーマットです。

Note
これは、デスクトップ環境がフォントレンダリングに影響を与えようとするための手段のひとつです。システム全体の設定をカスタマイズするときに、見えているものが実際のシステム全体の設定であることを確認するためにこれを無効化するのには、慎重になるべきです。これを無効化すると、すべてのユーザアカウントでフォントレンダリングがより画一的になります。
Note
かつて使用されていた ~/.fonts.conf は現在非推奨となっており、$XDG_CONFIG_HOME によって決まる場所に取って代わられています。この変数はデフォルトでは ~/.config を指しています。

設定の確認

デフォルトのフォント置換を、たとえば Arial について確認するには、次をタイプしてください:

user $fc-match Arial

アンチエイリアス、ヒンティング、サブピクセルレンダリング

レンダリングの外観も調整することができます。以降の数セクションでは、アンチエイリアスヒンティング、そしてサブピクセルレンダリング機能を調整します。

機能 説明
アンチエイリアス デフォルトで有効化されていて、フォントが角ばって見えるのを軽減します。
ヒンティング 使用中のディスプレイの、単位面積あたりのピクセル数が少ないことに対処しようとします。正しいヒンティングを行うと、文字がよりくっきりとした見た目になりますが、フォントメトリクスは変更されない (おそらく変更すべきものではない) ので、レンダされたテキスト全体の見た目だけに影響します。
サブピクセルレンダリング LCD マトリクスが三原色を使っている事実を利用して、テキストの解像度を実質的に 3 倍にしますが、文字が完全な黒色ではなくなります。これに対処するために、lcdfilter をサブピクセルレンダリングとともに使用することができます (新しい fontconfig で利用可能) が、文字がぼやけ過ぎることがあります。これは結局のところ、テキストの見た目の個人的な好みに完全に依存します。

ヒンティングの強制

ヒンティングに関するデフォルトの fontconfig の挙動はあまりドキュメント化されていませんが、システム全体のデフォルトを作成することで、最適ではありませんが決定論的な挙動にすることができます。

  1. まず /etc/fonts/local.conf を有効化してください
  2. local.conf ファイルを編集して、デフォルトで完全なヒンティングを含めるようにしてください

次の local.conf スニペットは完全なヒンティングを有効化します:

FILE /etc/fonts/local.confヒンティングを full に設定する
<match target="font">
  <edit mode="assign" name="hintstyle">
    <const>hintfull</const>
  </edit>
</match>
Note
ほとんどのフォントは完全なヒンティングを行ったときに最高の見た目になりますが、わずかなヒンティングを要求するフォントや、さらにまれながら他のヒンティングオプションを要求するフォントもあります。どういうわけか、どうやっても汚いフォントもあります。

サブピクセルレンダリングの使用

LCD マトリクスのサブピクセルレイアウトを判別することは重要です。通常は RGB (10-sub-pixel-rgb.conf) であることが多いですが、確実を期すための方法は、ディスプレイの仕様を確認するか、サブピクセルレイアウトテストで判別することです。

判明したら、適切な 10-sub-pixel-<マトリクスの種類>.conf ファイルを有効化してください。

root #eselect fontconfig enable 10-sub-pixel-rgb.conf

可能であれば、lcdfilter をサブピクセルレンダリングとともに使用することを強く推奨します。いくつかの変種がありますが、すべての一般的なフォントにはデフォルト (11-lcdfilter-default.conf) が適切でしょう。

root #eselect fontconfig enable 11-lcdfilter-default.conf
Warning
media-libs/freetypebindist USE フラグは、潜在的な特許の問題により、サブピクセルレンダリングを完全に無効化します。サブピクセルレンダリングを使用するためには、このパッケージに対してこの USE フラグ (-bindist) を無効化する必要があります。

オートヒンターに関して

Autohinter attempts to do automatic hinting disregarding any existing hinting information. Until recently it was the default because TrueType2 was covered by patents but now that they have expired there's very little reason to use it. From technical point of view it does better than broken or no hinting information but it will be strongly sub-optimal for fonts with good hinting information. Generally system fonts are of the second kind so autohinter should not be used.

警告
オートヒンターとサブピクセルレンダリングとは、互換性がありません。同時に両方を使用しないでください!

Infinality

Infinality is a (somewhat controversial) set of patches for FreeType and accompanying fontconfig files. The goal of Infinality is to provide higher quality font rendering including emulation of other OS font rendering styles.

Note
As usual with software still in development it is prudent to always use only the latest version available unless there are known problems with it.

Infinality の有効化

make.confを直接に編集するか、euseツールを利用して、'infinality' USE フラグを有効にします。

root #euse -E infinality

次に、影響を受けるプログラムを再ビルドします。

root #emerge --ask -uvDU @world

再ビルド後に表示されるメッセージの内容にかかわらず、 52-infinality.conf を有効にします。

root #eselect fontconfig enable 52-infinality.conf

Infinality の設定

Infinality can be configured in various ways including custom configurations, but easiest is to use pre-made profiles shipped in media-libs/fontconfig-infinality that along with eselect modules should have been installed as dependencies of the infinality USE flag.

簡単で合理的な設定

root #eselect infinality set infinality
root #eselect lcdfilter set infinality
Note
As always, fontconfig changes affect only applications started after changes have been made.

It's also recommended to disable all fontconfig settings except for 52-infinality.conf as they interfere with the rendering of infinality styles:

root #eselect fontconfig disable <number>

Certain fontconfig settings do not interfere with how the fonts are rendered, but rather determine the default fonts for font-types (such as Monospace, sans-serif, etc.). Such settings (for example the 62-croscore-*.conf configurations) can be left enabled.

解説

Infinality provides FreeType environment variables that can be used to configure features introduced with its patches as well as fontconfig files to be used with these changes. fontconfig file sets are administrated on Gentoo via eselect infinality while the FreeType behaviour is set using eselect lcdfilter.

These eselect modules function as usual:

  • Listing available fontconfig file sets.
root #eselect infinality list
  • Listing available FreeType variable sets.
root #eselect lcdfilter list
  • Both sets should match of course except when there are multiple matches possible such as shown below.
root #eselect infinality set win7
root #eselect lcdfilter set windows-7-light

フォントの選択

Choosing the right font can be trickier than deciding on the right hinting type. For one reason or another, some fonts will never be perfect — but it's certainly possible to make them look better than, say, the Windows 7 default font configuration.

以下に Gentoo にあるよく知られたフォントに関するおすすめを示します:

フォントファミリ 利点 欠点
Liberation
media-fonts/liberation-fonts
Red Hat のフォントで、MS TrueType コアフォントとメトリック互換性があり、きちんとした現代的な見た目を持っています。デフォルトのラテン文字用として Gentoo Fonts team が推奨するフォンです。約 2600 のコードポイントを網羅しています。 ラテン文字、ギリシア文字、キリル文字、ヘブライ文字のみ。一部のグリフはヒンティングに問題があるかもしれません。
Linux Libertine
media-fonts/libertine
Liberation に非常に似ていて、約 2700 コードポイントを網羅しています。Linux Libertine 自体はプロポーショナルなセリフ体ですが、そのパッケージには少し網羅範囲の狭いサンセリフ体と等幅のフォントも含まれています。Liberation に無い一部のグリフのためのフォールバックとして利用できます。 ラテン文字、ギリシア文字、キリル文字、ヘブライ文字のみ。サンセリフ体と等幅のフォントは文字が限られています。
Noto
media-fonts/noto
Google による、世界のすべての言語 (つまり、60000 以上のコードポイント) をサポートすることを目標としたフォントファミリです。Liberation または Droid とよく合います。CJK 用には Adobe の Source Han フォントが含まれています。Liberation が網羅していないたくさんのグリフのためのフォールバックとしておすすめです。 大きなダウンロードサイズ。
DejaVu
media-fonts/dejavu
多くのスタイルがあり、多くのコードポイントを網羅しています (サンセリフで約 6100)。 並外れて横幅が広く、condensed でさえ同じ高さの等幅フォントより広いです。Verdana (MS フォント) に次いで広いです。サンセリフフォントは平均的でしかありません。
Droid
media-fonts/droid
たくさんのコードポイントと、筆記体を網羅しています。 とても無味乾燥で、幅広ながら細いグリフ。手持ちデバイスとそれらの小さい画面を明らかに意識して設計されています。
Gentium Plus
media-fonts/sil-gentium
かなり独特です; 幅狭のフォントが好きな人には魅力的かもしれません。 セリフ体のみ。他の SIL フォントと同様に、ヒンティングは怪しいです。
Ubuntu
media-fonts/ubuntu-font-family
Ubuntu で使用されています (当然ですね)。万人受けはしないスタイルを持った独特なフォントファミリです。全体的にいい見た目で、かなり多くのコードポイントを網羅しています。 真に洗練されているのはサンセリフフォントだけです; 幅狭と等幅バージョンは未完成です。これによく合うセリフフォントは知られていません。
URW
media-fonts/urw-fonts
有名な Adobe フォントと (とりわけ?) メトリック互換です。 弱めのヒンティングを要求するようです。
MS TrueType corefonts
media-fonts/corefonts
文書や web で使用される多くのフォントを含んでいます。 現在 MS はこれを頒布していないので、入手できるフォントは何年も前のもので、現行版の状態を反映していません (最新版などもっての他です)。当然ながら、より最近に導入されたフォントは含まれません。完全なヒンティングを要求します。
Unifont
media-fonts/unifont
たくさんのコードポイントを網羅しています。 とても醜いだけでなく, 書体と呼ぶための基本的な条件を満たしていません。これはサンセリフなのか? セリフなのか? どうか、決してこれを使わないでください。

外部の情報