【问题标题】:How to get all unicode characters supported by fonts?如何获取字体支持的所有unicode字符?
【发布时间】:2020-08-17 18:05:49
【问题描述】:

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

        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)包含什么?
这是第二个问题。
谢谢。

【问题讨论】:

  • 如果windows机器上没有安装字体,windows会自动选择类似的字体。相似并不意味着所有字符都会正确显示。您只能使用包含您正在使用的所有字符的字体。

标签: c# unicode fonts


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2017-12-13
    • 2019-12-20
    • 1970-01-01
    • 2010-11-29
    • 1970-01-01
    • 1970-01-01
    • 2012-02-16
    • 2016-09-01
    • 1970-01-01
    相关资源
    最近更新 更多