6

CSS アイコン フォントを支援する簡単なツールを作成しています。

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

フォントと文字エンコーディングに精通している人はすでに推測しているように、これらの場所の多くは空です。次に例を示します。 ここに画像の説明を入力

ご覧のとおり、このフォントで実際に表示する価値のある文字は少数派であり、この Unicode 範囲の多くの文字は、デフォルトのサンセリフ フォントでも表示されません。これは重要なことではなく、使用可能なすべての文字がとにかく表示されますが、純粋に好奇心から、どの文字がフォントで表されているかを知る方法があるかどうか知りたい. 誰かが解決策を知っていますか?

理想的には、好きな言語で、サーバー側のソリューションが優先されます。ただし、どのソリューションも価値があります。

興味深いことに、私の既存のコードは github にアップされています: Font Looper

フラット ファイルのプレゼンテーションがあまり気分を害しないことを願っています。

4

1 に答える 1

3

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

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名前空間にあります。

于 2012-07-26T20:41:16.117 に答える