为我的应用程序使用字体时,如果找不到设置为样式的FontFamily,则不会发出警告/错误/异常。调试加载的FontFamily?
通常在WPF中,您会在输出窗口中看到一条警告消息,告诉您您的绑定不存在。或者当您的ResourceDictionary无法加载时,您会收到异常,因为它无法找到文件。然而,当尝试加载没有正确名称或错误程序集的FontFamily时,绝对没有任何警告,是否有办法查看实际加载/显示的字体以及它是否成功?
* 编辑: 我用下面的答案,改变了TestFont
方法如下:
[Conditional("DEBUG")]
private void CheckFontFamily()
{
string fontName = FontFamily.Source.Substring(FontFamily.Source.IndexOf('#') + 1);
if (!FontFamily.FamilyNames.Any(x => x.Value == fontName))
{
bool fontFamilyFound = false;
string baseFontName = fontName;
while (!fontFamilyFound && fontName.Contains(' '))
{
fontName = fontName.Substring(0, fontName.LastIndexOf(' '));
if (FontFamily.FamilyNames.Any(x => x.Value == fontName))
{
fontFamilyFound = true;
string fontFace = baseFontName.Substring(fontName.Length + 1);
if (!FontFamily.FamilyTypefaces.Any(x => x.AdjustedFaceNames.Any(y => y.Value == fontFace)))
{
Console.WriteLine("WARNING: Font '{0}' with TypeFace '{1}' not found at '{2}'.", fontName, fontFace, FontFamily.Source);
}
break;
}
}
if (!fontFamilyFound)
{
Console.WriteLine("WARNING: Font '{0}' not found at '{1}'.", fontName, FontFamily.Source);
}
}
这将显示是否加载字体像这样将工作:(从而检查工作路径)
<TextBlock Text="Lorem Ipsum" FontFamily="{Fonts:FontFamily '/Project;component/Fonts/#ITC Quay Book'}"/>
请添加您的款式xaml。 –