【发布时间】:2022-02-01 20:42:52
【问题描述】:
在 WPF 中,我为我的控件设置了一个样式,因此它指定了多个字体系列:
<Style TargetType="{x:Type MyControl}">
<Setter Property="FontFamily"
Value="Helvetica, Arial, Segoe UI" />
</Style>
如何确定实际选择了哪种字体并用于控件?
【问题讨论】:
在 WPF 中,我为我的控件设置了一个样式,因此它指定了多个字体系列:
<Style TargetType="{x:Type MyControl}">
<Setter Property="FontFamily"
Value="Helvetica, Arial, Segoe UI" />
</Style>
如何确定实际选择了哪种字体并用于控件?
【问题讨论】:
【讨论】:
我最终只需要解析FontFamily 的Source 属性:
public static FontFamily GetFirstValid(this FontFamily fontFamily)
{
return fontFamily?.Source.Split(',')
.Select(p => new FontFamily(p))
.FirstOrDefault(f => f.GetTypefaces()
.Any(t => t.TryGetGlyphTypeface(out GlyphTypeface glyph)
&& glyph?.CharacterToGlyphMap.Count > 0));
}
【讨论】: