2010-12-03 8 views
5

フォント名(存在する場合)が与えられたときにLinux上のttfフォントファイルへの絶対パスを取得できます。その情報を返すコマンドまたはAPIはありますか?Linux上でのフォントの検索(C++で)

たとえば、「arial.ttf」と指定すると、どこにでも絶対パス(例:/usr/share/fonts/truetype/msttcorefonts/arial.ttf)があります。

+0

[CまたはC++を使ってLinuxにインストールされているTrueTypeフォントのリストを取得するには?](http://stackoverflow.com/questions/203257/how-to-get-a-list-of- installed-true-type-fonts-on-linux-using-c-or-c) –

答えて

5

最も簡単な方法は、--formatオプションでfontconfigを使用することが考えられます:

$ fc-match --format=%{file} LiberationSans-Regular.ttf 

/usr/share/fonts/truetype/liberation/LiberationSans-Regular.ttf 

代わりにフォントファイル名の出力になります、あなたはまた、フォント記述を供給することができますmonoDejaVu:weight=boldDejaVu-12、またはDejaVu:weight=boldのようなものです。私のシステムで

/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf 

におけるので、例えば、

$ fc-match --format=%{file} :weight=bold 

結果。唯一うまくいかないことは、フォントファイルの完全なパスを与えることです。

+0

フォントの記述方法は?あなたはいくつかの例を挙げていただけますか? – Mohan

+0

@モハン私が言ったように:ちょうどファイルの名前をフォントの説明に置き換えます。私は今、フォント記述のための実際の例を追加しました。それが役に立てば幸い。 – cmaster

0

おそらく、実際にはパスでフォントにアクセスしようとするのは良い考えですが、linuxのフォントスタックはこのようには設計されていません。場所には安定性がなく、フォントリストで期待される多くの「フォント」が単一のフォントファイルにはマッピングされず、複数のフォントファイルの複合体です。

他のすべてのデスクトップアプリケーションと一貫性を持たせたい場合(また、すべてのアプリケーションで同じ方法でフォントの選択ができることを期待している場合)、fontconfigの間接レイヤーを使用してパターンにアクセスする必要があります(pango-またはQT)、結果を受け入れることは複雑で直観的ではない可能性があります。

あなたにとって直感的ではないように思えますが、フォントの選択はほかのすべてのアプリと同じように機能します。そして、通常、fontconfigマッピングの選択肢には非常に良い理由があります。

関連する問題