Fontconfigは実際にどのように機能しますか? [閉鎖]

Fontconfigは実際にどのように機能しますか? [閉鎖]

私はLinux環境が初めてなので、フォントの勉強を始めました。

私はFontconfigがLinuxで実際にフォント管理を処理するライブラリであることを読んだ。そのため、Fontconfigのソースコードをダウンロードしてコンパイルし、使用する準備が整いました。

メインソースディレクトリに入ると、fc-cache他のサブモジュールがたくさん見えますfc-listfc-query検索しようとしましたが、実際にどのように機能するかについての詳細が見つかりませんでした。そのため、ソースコードを直接理解してみることにしましたが、以下のように端末に命令を打ったとき、実際に何が起こるのか、実際の始点が何なのか分からないので悩みが多いのです。

$ fc-query /usr/share/fonts/truetype/fonts-japanese-gothic.ttf

Fcquery.cたとえば、異なる共有ライブラリ内の他の関数を呼び出すようにフォント設定ファイルを変更したとします。私は何をすべきですか?コンパイル操作だけが行われますか、それともMakefileに何かを登録する必要がありますか?

私はここに初めて来たので、詳しく説明してください。

答え1

簡単に言うと:フォント構成を理解するには、フォント構成が作成された理由と、解決する問題が何であるかを理解する必要があります。これにはXorgに関する多くの知識が必要です。

UNIXシステムのフォント構成はいくつかのステップを経ています。フォント構成Xorgを介してフォントを使用できる可能性の1つだけです。 Xorgのソースコードをよく理解していない場合、Fontconfigのソースコードを読むのは非常に難しいかもしれません。しかし、私は書体進化の裏側の概念を理解することが良い出発点になると信じています。

免責事項:私はLinuxで多くのフォント問題を処理しましたが、実際にフォント関連のXorgコードを変更する必要はありませんでした。

これArch Linux Wikiにもこれに関する多くの情報があります。

少し歴史

もともとUNIXフォントはビットマップフォントでした。今日、これらのファイルはで見つけることができ、ほとんど/usr/share/fonts/miscすべてのファイルにPCF(Portable Compilation Format)が使用されています。バイナリ形式です。他の形式のバイナリフォントがありますが、PCF以外の形式をバイナリフォントとして使用したことがないことを認識する必要があります。 Xorg文字列を使用すると、xfontselフォントポイント、間隔、ピクセルサイズ、端子の太さ(太字、斜体)、エンコードなどを設定できます。

ビットマップフォントは、ピクセルサイズが異なるフォントのファイルが異なります。ビットマップフォントにはフォントファミリの概念が導入されました。

Postscript(およびある程度TeX)は、ベクトルベースのフォントであるType 1フォントを作成します。/usr/share/fonts/Type1ベクトルフォント設定には、アンチエイリアシング、太字、dpi、またはサイズ(今回は必ずしもポイントベースである必要はありません)など、いくつかの設定値があります。

ベクトルベースのフォントは拡張可能で、複数のファイルは必要ありません。

XorgはビットマップとType1フォントを使用します。 XFTを生成します(X FreeTypeは、Type1をエミュレートして拡張するGPL / BSDライブラリであるFreeTypeへのインタフェースです)。 XFTはType1およびFreeTypeフォントの使用を許可するだけでなく、AdobeやMicrosoftのOTF、AppleのTTFなどの他の形式の使用も許可します。 XFTを使用すると、以前のビットマップフォントをType1フォントのように見えるようにサイズ変更できます。

次のようなさまざまな属性ヒントまたはプロンプトスタイル、これらのフォントのプロパティを定義するために追加されました。

これらはすべてのサブフォルダにあります/usr/share/fonts。そしてXFTパラメータはXresources

フォント構成

そしてfontconfig 上記のすべての違いを処理する必要があります。。つまり、fontconfigは、さまざまなフォントが持つ共通構文の属性を利用するように、上記のすべてのフォントタイプを設定しようとします。

ビットマップフォントには次の問題があります。

  • 単一フォント用のさまざまなファイル
  • サイズはポイントとピクセルのサイズによって制限されます。

しかし、ベクトルベースのフォントにも当てはまります。

  • 特に複数のパラメータを使用している場合は、サイズ変更に時間がかかります。
  • すべてのフォントプロパティが同じ方法でさまざまなフォントタイプに影響するわけではありません。

どちらもフォント形式が異なり、ユーザーが自宅に独自のフォントをインストールしたいと思う可能性があるという問題を抱えています。 Fontconfigはこれらの問題を解決しようとします。

fc-queryフォントファイルを理解するフォント構成が何であるかを教えてくれます。ファイルのプロパティ(ビットマップフォントなど)と利用可能なプロパティ(ベクトルフォント)に注目する価値があります。

fc-listこれは、Fontconfigが表示しているディレクトリにどのフォントを見つけることができ、アプリケーションで利用可能かを知らせる方法です。最後に、fc-cacheフォントを簡単に検索し、アプリケーションで使用できるようにサイズを変更できるようにフォントを索引付けします。

一方、Fontconfig共有ライブラリは最も興味深い部分です。構成ファイル(/etc/fonts、、~/.config/fontconfig)とフォントキャッシュを使用して、事前に準備されたフォントをリンクされたアプリケーションに直接提供します。ほとんどのアプリケーションはXFT(したがってFreeType)を使用し、FreeTypeライブラリはFontconfigライブラリの呼び出しを使用するため、これらのフォントの使用は一般化されています。

ただし、Xorgに古いスタイルのビットマップフォント(たとえば-*-terminus-medium-r-normal-*-*-200-*-*-c-*-*-u)を要求するプログラムをコンパイルすることができ、呼び出しはFontconfig共有ライブラリを通過しません。

関連情報