Wpf 加载字体资源并设置基线
有没有办法将字体作为资源加载并设置其基线 以下工作:Wpf 加载字体资源并设置基线,wpf,xaml,fonts,Wpf,Xaml,Fonts,有没有办法将字体作为资源加载并设置其基线 以下工作: <FontFamily x:Key="DefaultFontFamily">/Swift.UiResources;component/Resources/Fonts/#Meta Offc</FontFamily> 我要指出的是,我试图解决的问题是,从市场营销中传下来的字体,当垂直居中时,呈现的字体比以前的字体高。您可以创建一个复合字体,并将所有Unicode范围映射到嵌入的字体。您需要创建一个扩展名为.Composi
<FontFamily x:Key="DefaultFontFamily">/Swift.UiResources;component/Resources/Fonts/#Meta Offc</FontFamily>
我要指出的是,我试图解决的问题是,从市场营销中传下来的字体,当垂直居中时,呈现的字体比以前的字体高。您可以创建一个复合字体,并将所有Unicode范围映射到嵌入的字体。您需要创建一个扩展名为
.CompositeFont
的新文件,并给它一个“Resource”的构建操作。其内容应为:
<!-- File: "Resources/Fonts/Custom Font.CompositeFont" in Swift.UiResources -->
<FontFamily xmlns="http://schemas.microsoft.com/winfx/2006/xaml/composite-font"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:s="clr-namespace:System;assembly=mscorlib"
Baseline="0.9">
<FontFamily.FamilyNames>
<s:String x:Key="en-US">Custom Font</s:String>
</FontFamily.FamilyNames>
<FontFamily.FamilyMaps>
<FontFamilyMap Scale="1.0"
Target="/Swift.UiResources;component/Resources/Fonts/#Meta Offc"
Unicode="0000-007F" />
</FontFamily.FamilyMaps>
</FontFamily>
#
后面的字体名称应与您在上面的FontFamily.FamilyNames
中设置的值相匹配
如果要映射超过标准ASCII范围的字符,可以向Unicode
属性添加更多逗号分隔的字符范围
在过去,我注意到,当您创建在一个或多个映射中使用资源URI的复合字体时,它不会在Visual Studio designer中正确显示,尽管它在运行时工作正常。自从我报告后,他们可能已经修复了此问题。它看起来不像
Target
属性以与FontFamily
相同的方式支持URI。我可以指定“Arial”
,但不能指定“/#Meta Off”
。事实证明,您部分正确。当我无法使用一个简单的示例时,我记得只有当复合字体被定义为它自己的资源时,Target
才会处理URI。请参阅更新的答案。哇,谢谢!MSDN和谷歌在查找有关FamilyNames
和FamilyMaps
的详细信息方面都没有任何帮助。你在哪里学的这些东西?有一天我在浏览我的Windows\font
文件夹,看到里面有一些.CompositeFont
文件,决定做一些实验:)。WPF附带的复合字体有一些有用的注释。
TypeConverter syntax error encountered while processing intialization string '/Swift.UiResources;component/Resources/Fonts/#Meta Offc'. Element attributes are not allowed on objects created via TypeConverter.
<!-- File: "Resources/Fonts/Custom Font.CompositeFont" in Swift.UiResources -->
<FontFamily xmlns="http://schemas.microsoft.com/winfx/2006/xaml/composite-font"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:s="clr-namespace:System;assembly=mscorlib"
Baseline="0.9">
<FontFamily.FamilyNames>
<s:String x:Key="en-US">Custom Font</s:String>
</FontFamily.FamilyNames>
<FontFamily.FamilyMaps>
<FontFamilyMap Scale="1.0"
Target="/Swift.UiResources;component/Resources/Fonts/#Meta Offc"
Unicode="0000-007F" />
</FontFamily.FamilyMaps>
</FontFamily>
/Swift.UiResources;component/Resources/Fonts/#Custom Font