2013-04-09 6 views
9

は、私はどちらかの一つを見つけるしたいと思います:Debianベースのシステムで、フォントにグリフが付いているUnicodeコードポイントをどのように見つけることができますか? Debianベースのシステム上のスクリプト言語(PythonやRubyは、言う)から

  1. をすべてのUnicode特定のフォントが
  2. すべてのためのグリフを持っていることをコードポイント特定のUnicodeのためのグリフを持つフォントは

コードポイント(もちろん1または2誘導できるフォームを他ので、何が素晴らしいことだ簡単です。)私は過去にこれを行っている実行して:

fc-list : file charset 

... this code from fontconfig に基づいて各行の最後に出力を解析していますが、これを行う方法はもっと簡単に思えます。

(私はこれは、この質問のための右StackExchangeサイトです完全にわからないんだけど、私はプログラム的に使用することができます答えを探しています。)

+0

「もっと簡単な方法があるはずですか?いくつのフォントフォーマットがあるか知っていますか?そして、あなたは* all *を処理できるようにしたいですか? –

+0

@Kerrek SB:さまざまなフォントフォーマットがあることはわかっていますが、私たちはそれを扱うライブラリを持っています。たとえば、私が質問したfontconfigコマンドは、いくつかの異なるフォーマットのフォント。 –

+1

関連:http://stackoverflow.com/questions/4458696/finding-out-what-c​​haracters-a-font-supports – leonbloy

答えて

6

私はFreeType 2 language bindingsのいずれかをしようとするだろう。ここでFont::FreeTypeを使用してフォントのUnicodeコードポイントを一覧表示するPerlのソリューションがあります:

use Font::FreeType; 
Font::FreeType->new->face('DejaVuSans.ttf')->foreach_char(sub { 
    printf("%04X\n", $_->char_code); 
}); 
+0

+1ありがとうございます、それは非常に役に立ちます - 私はもう一度答えがある場合には "受け入れ"にチェックを入れる前にちょっと待っています。 –

+1

これはなぜ、代替スワッシュのようなプライベートな使用領域に割り当てられたグリフに気づかれないのでしょうか? – tchrist

+0

いいえ、Perlバインディングに根差した問題ではありません。 freetype2のソースコードを一見すると、おそらく['find_unicode_charmap'](http://git.savannah.gnu.org/cgit/freetype/freetype2.git/tree/src/base/ftobjs.c#n973)が選択します間違ったcharmapですか? – nwellnhof

1

私は最近TTX/FontToolsを使用してTTFでglypthsへのUnicodeコードポイントからのマッピングをリストアップしました。このツールはPythonで書かれているので、あなたの投稿のPythonタグとマッチします。コマンド

ttx -t cmap foo.ttf 

は、様々な環境とエンコーディングのために、そのマッピングを記述するXMLファイルfoo.ttxを生成します。例えば、 this referenceは、プラットフォームとエンコーディング識別子が実際に意味するものについて説明しています。私はパッケージがライブラリとしてだけでなくコマンドラインツールとしても使用できると考えていますが、そこには経験はありません。

関連する問題