【发布时间】: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会自动选择类似的字体。相似并不意味着所有字符都会正确显示。您只能使用包含您正在使用的所有字符的字体。