首页 > 解决方案 > 如何获取字体支持的所有unicode字符?

问题描述

我的意思是,如何通过字体(字体类)获取所有支持的字符?
这是第一个问题。
我找到了解决方案:

        var families = Fonts.GetFontFamilies(@"C:\WINDOWS\Fonts\Arial.TTF");
        foreach (var family in families)
        {
            var typefaces = family.GetTypefaces();
            foreach (Typeface typeface in typefaces)
            {
                GlyphTypeface glyph;
                typeface.TryGetGlyphTypeface(out glyph);
                IDictionary<int, ushort> characterMap = glyph.CharacterToGlyphMap;

                foreach (KeyValuePair<int, ushort> kvp in characterMap)
                {
                    Console.WriteLine(String.Format("{0}:{1}", kvp.Key, kvp.Value));
                }

            }
        }

但是,charaterMap(那个 IDictionary)包含什么?
这是第二个问题。
谢谢。

标签: c#unicodefonts

解决方案


GlyphTypeface.CharacterToGlyphMap 返回一个字典,其中包含字体的“cmap”表中的所有条目。这正是确定字体支持哪些 Unicode 字符的表。每个条目都有一个 Unicode 代码点作为键,该字符的默认字形 ID 作为值。


推荐阅读