有没有办法将字体加载为资源并设置其基线?
以下作品:
<FontFamily x:Key="DefaultFontFamily">/Swift.UiResources;component/Resources/Fonts/#Meta Offc</FontFamily>
但是像这样添加基线:
<FontFamily x:Key="DefaultFontFamily" Baseline="0.9">/Swift.UiResources;component/Resources/Fonts/#Meta Offc</FontFamily>
导致以下错误:
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.
我应该指出,我正在努力解决的问题是,从垂直居中的营销传播的字体呈现高于之前的字体。
答案 0 :(得分:2)
您可以创建复合字体,并将所有Unicode范围映射到嵌入字体。您需要创建一个扩展名为.CompositeFont
的新文件,并为其提供一个构建操作&#34;资源&#34;。其内容应为:
<!-- 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>
然后,在Xaml中引用您的字体时,请使用以下格式:
/Swift.UiResources;component/Resources/Fonts/#Custom Font
#
后面的字体名称应与您在上面FontFamily.FamilyNames
中设置的值相匹配。
如果要映射超过标准ASCII范围,可以向Unicode
属性添加更多以逗号分隔的字符范围。
过去,我注意到当您创建在其一个或多个映射中使用资源URI的复合字体时,它在Visual Studio设计器中无法正确显示,尽管它在运行时正常工作。自从我报告以来,他们可能已经解决了这个问题。