Fontconfig

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Fontconfig and the translation is 100% 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 gettext - GNU 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
  ...
警告
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形式です。

ファイル /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フォーマットです。

メモ
これは、デスクトップ環境がフォントレンダリングに影響を与えようとするための手段のひとつです。システム全体の設定をカスタマイズするときに、見えているものが実際のシステム全体の設定であることを確認するためにこれを無効化するのには、慎重になるべきです。これを無効化すると、すべてのユーザアカウントでフォントレンダリングがより画一的になります。
メモ
かつて使用されていた ~/.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 スニペットは完全なヒンティングを有効化します:

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

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

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

autohinter に関して

autohinter は、あらゆる既存のヒンティング情報を無視して、自動的なヒンティングを試みます。最近まで、TrueType2 が特許により保護されていたためこれがデフォルトでしたが、特許が切れた今これを使用する理由はほとんどありません。技術的観点から言えば、ヒンティング情報が壊れているかまったく無い場合よりはうまく行きますが、まともなヒンティング情報を持つフォントにとっては到底最適とは言えないでしょう。一般的には、システムフォントは後者に属するので、autohinter は使用すべきではありません。

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

フォントの選択

正しいフォントを選ぶことは、正しいヒンティングの種類を選ぶのよりも難しいかもしれません。様々な理由により、どのフォントも決して完璧にはならないでしょう — ですが例えば、Windows 7 のデフォルトフォント設定よりは良く見えるようにすることは、間違いなく可能です。

メモ
多くのフォントは、Unicode の巨大さのために、すべての割り当て済みの Unicode コードポイントに対応するグリフを提供してはいません。与えられたコードポイントに対応するグリフをフォントが提供していない場合、アプリケーションによっては、その文字が置換文字 (コードポイントの 16 進値を囲った四角形など) によって表現されたり、異なるフォント (「フォールバックフォント」) のグリフによって表現されたりする場合があります。

以下に 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
たくさんのコードポイントを網羅しています。 とても醜いだけでなく, 書体と呼ぶための基本的な条件を満たしていません。これはサンセリフなのか? セリフなのか? どうか、決してこれを使わないでください。


外部資料