2012-07-25 9 views
6

私はCSSアイコンのフォントを手助けする簡単なツールを作っています。フォントに定義されている文字を検出するにはどうすればよいですか?

現在、指定されたwingdingsスタイルのフォントが使用され、すべてのUnicode番号に表示されるように、標準システムフォント(たとえばarial)をサイドに並べて表示しますユニコード番号33-255から。

フォントや文字エンコーディングに精通している人はすでに推測されているため、これらの場所の多くは空になります。ここに例があります: enter image description here

実際にこのフォントで表示する価値のある文字は少数です。このユニコード範囲の多くの文字は、デフォルトのsans-serifフォントでも表示されません。これは重要なものではなく、使用可能なすべての文字が表示されますが、純粋に好奇心から、どの文字がフォントで表現されているかを知る方法があるかどうかを知りたいのです。誰かが解決策を知っていますか?

理想的には、好きな言語を好むサーバー側のソリューションが理想的です。しかし、すべての解決策は価値があるでしょう。好奇心、私の既存のコードの場合

はgithubの上にある:Font Looper

私はリーンこれを維持し、意味しようとしている、フラットファイル、プレゼンテーションがあまりにも多くの人に怒られません願っています。

+0

いいアイデア。フォントルーパのための幸運。 私は助けることができませんが、私はそれが好きです –

答えて

3

あなたが探している情報は、フォントのCMAPテーブルにあると思います。私はフォントの専門家ではありませんが、私の理解は、CMAPテーブルがユニコードポイントをグリフインデックスにマップすることです。したがって、ユニコードポイントにマップされたグリフがない場合、フォントがその文字をサポートしていないと見なすことができます。ここで

は、私はWPFのメディアライブラリを使用して見つかったいくつかのサンプルC#コードです:

var fontFamilies = System.Windows.Media.Fonts.GetFontFamilies(@"C:\Windows\Fonts\Arial.ttf"); 

foreach (var family in fontFamilies) 
{ 
    foreach (var typeface in family.GetTypefaces()) 
    { 
     var glyph = null as System.Windows.Media.GlyphTypeface; 

     if (typeface.TryGetGlyphTypeface(out glyph)) 
     { 
      foreach (var kvp in glyph.CharacterToGlyphMap) 
      { 
       Console.WriteLine(kvp.Key.ToString() + " : " + kvp.Value.ToString()); 
      } 
     } 
    } 
} 

が、これはあなたになりますどのくらいの助けを知ってはいけない、しかし、あなたは、任意の言語/ソリューションは有益であろうと言いました。

これらのクラスはすべてPresentationCore.dllアセンブリの一部であるSystem.Windows.Media namespaceにあります。

+1

これは非常に興味深いです、ありがとう。 – daveyfaherty

関連する問題