在WPF桌面应用程序中使用Google Web Font的任何方法

时间:2012-11-28 19:28:32

标签: wpf webfonts

我正在创建一个WPF应用程序并尝试将用户界面的样式与现有网站相匹配。该网站使用Lato作为其默认字体,默认情况下在Windows上不可用。我想使用Lato,但我不能要求用户安装该字体。有没有办法让WPF使用通过Google Web Font服务提供的字体定义,或以其他方式进行设置,以便不需要手动安装字体?

2 个答案:

答案 0 :(得分:10)

当然可以,简单的方法是将您编译到应用程序中的字体资源:

首先,从谷歌网络字体下载TTF。在您的示例链接中,找到页面底部的“在Google Web Fonts中打开Lato”链接。这会将字体添加到“集合”中。在结果页面中,靠近顶部的是一个较小的链接,标题为“下载您的收藏”,它将以zip文件为您提供TTF字体文件。

接下来,将字体作为资源嵌入WPF应用程序中。将文件添加到项目中,并确保为编译操作选择“资源”。然后,您只需将FontFamily属性更改为资源名称而不是字体名称{X},即可在XAML中使用您的字体:<TextBlock FontFamily="/Resources/#Lato">Lato Text Here</TextBlock>。有关详细信息,请参阅MSDN article on embedding fonts

您还可以通过将所需的任何元素或容器的FontFamily属性设置为新的FontFamily对象来按需下载字体 - 使用带有URI的构造函数并使用URI TTF。我不相信您可以使用Google网址直接执行此操作,因为Google API会假定网页访问并提供脚本和/或CSS以及字体。另请注意,这可能需要您的应用已经要求的一些额外权限。

答案 1 :(得分:0)

WPF 需要字体名称(不是字体文件)。在上面的示例中,<TextBlock FontFamily="/Resources/#Lato">Lato Text Here</TextBlock> 如何在 "#Lato" 中获取 "Lato" 至关重要。如果是 .ttf 字体,那么我们可以从 API GlyphTypeface https://docs.microsoft.com/en-us/dotnet/api/system.windows.media.glyphtypeface.-ctor?view=net-5.0#definition 中获取字体名称信息。 但是 API GlyphTypeface 仅适用于 .ttf 文件。

当然,我们可以使用任何受支持的 .EOT/.SVG/.WOFF 在线查看器并获取字体名称,然后手动将其输入到 WPF XAML 的 FontFamily 属性中。

有没有其他方法可以从字体文件中以编程方式获取字体名称(WPF 所期望的)?

例如在 CSS 中,我们可以使用 @font-face 来使用各种字体。

我相信 WPF 中没有这样的选择。

相关问题