加载字体资源和设置基线

时间:2014-11-10 14:34:43

标签: wpf xaml fonts

有没有办法将字体加载为资源并设置其基线?

以下作品:

<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.

我应该指出,我正在努力解决的问题是,从垂直居中的营销传播的字体呈现高于之前的字体。

1 个答案:

答案 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设计器中无法正确显示,尽管它在运行时正常工作。自从我报告以来,他们可能已经解决了这个问题。