我有一个应用程序使用单独的资源库程序集(但不是没有代码的纯资源程序集),我想在库中包含自定义字体。
如果我将其 .otf 文件作为资源添加到执行程序集的项目(而不是资源库项目),使用以下代码将属性设置为 Build Action = 'Resource' 和 Copy to Output = 'Do Not Copy':
FontFamily font = new FontFamily(new Uri("pack://application:,,,/"),
"./Resources/#CustomFont")); // Resources is a subfolder
但是,当我尝试将字体添加到资源库项目时,字体并未加载。我尝试使用以下代码来加载它(还要注意:我对包 URI 没有太多经验):
FontFamily font = new FontFamily(new Uri("pack://application:,,,/MyLibrary"),
"./Resources/#CustomFont"));
// there is a Resources subfolder in my library as well
// not sure about whether I need the .
该库确实适用于其他资源,例如图像。
我还尝试了一系列 URI 的其他排列但没有成功(它也没有抛出异常,只是以默认字体显示,不确定这是否是一个单独的问题)。
我从 Packaging Fonts with Applications 开始工作在 MSDN 上,它有一个创建字体资源库的示例,但没有使用代码隐藏的示例(为此我被迫使用代码隐藏)。
关于我需要做什么的任何想法?我偏离轨道了吗?
最佳答案
我让它在我的应用程序中工作(从代码隐藏中的另一个程序集加载字体)。对于这样的字体 URI:
pack://application:,,,/MyAssembly.Name;component/Resources/Fonts/#Swis721 Md BT
我让它工作的方式(如果我没记错的话,经过痛苦的反复试验)是:
new FontFamily(
new Uri("pack://application:,,,/MyAssembly.Name;component/Resources/Fonts/"),
"./#Swis721 Md BT"
)
希望对您有所帮助。
关于c# - 在 WPF 中,如何在代码隐藏中引用资源库中的字体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10522704/