嵌入字体适用于设计人员,但不适用于应用程

Pri*_*kar 6 wpf fonts

我正在构建一个wpf应用程序,我想在我的应用程序中使用Open Sans Regular字体.

将此链接称为嵌入字体.我将OpenSans Regular.ttf文件添加到项目属性下的资源中.

然后我在我的申请中提到了他们,如下所述:

<Window x:Class="FontEmbeddingDemo.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525" FontFamily="Resources/#Open Sans">
<Window.Resources>

</Window.Resources>
<Grid>
    <TextBlock Height="100" Text="This is test text." FontSize="14" FontFamily="Resources/#Open Sans"/>
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

在Visual Studio的设计器中,我可以看到字体已更改为打开sans但是当我运行应用程序时,它采用系统默认字体(我的系统中的Arial).

如果您需要任何其他信息,请告诉我.

sth*_*ura 9

来自MSDN页面:

将字体作为资源添加到应用程序时,请确保设置<Resource>元素,而不是应用程序项目文件中的元素.<EmbeddedResource>不支持构建操作的元素.

因此,我想,您必须将此字体文件添加到项目中,因为您要添加任何其他文件并将其设置BuildActionResource而不是将字体添加到Project Properties下的Resources,这将使其成为EmbeddedResource.

编辑

阅读这个关于如何在WPF应用程序中使用自定义字体的优秀文章.

你也可以通过@Sheridan提到的方式开始工作 - 这是设置BuildActionContent.但是,这种方法存在的问题是,您的二进制文件中会出现松散的单独文件.用户可能会更改此文件,这可能会导致您的应用出现问题.最好是使用Resource作为BuildAction作为字体被捆绑到组件.

  • 只是链接文章的一个小评论:如果你想使用不同项目中的字体,那么你可能想要将程序集名称添加到字体位置字符串:'pack:// application:,,,/assemblyName;资源/ #Open Sans' (2认同)