c# - WPF 中的嵌入式字体不起作用

标签 c# wpf fonts

我有一个 WPF 应用程序,我在其中使用字体“Segoe UI Symbol”中的图标。但是当部署到 Windows 7 时,我意识到图标丢失了,因为字体在 Windows 8 中更新了。

我尝试按照以下说明将字体作为资源嵌入到 WPF 应用程序中:http://msdn.microsoft.com/en-us/library/ms753303.aspx 但它不起作用。

最初我有:

<TextBlock FontFamily="Segoe UI Symbol">

在 Windows 8 计算机上运行良好。 然后我将 seguisym.ttf 添加到目录“_Resources”,然后使用:

<TextBlock FontFamily="./_Resources/#Segoe UI Symbol">

这不适用于 Windows 8 或 Windows 7! 我尝试了 BuildAction 的不同设置:Resource、Embedded Resource 和 Content,但它们都不起作用。

最佳答案

我终于找到了一种使用新版本“Segoe UI Symbol”的方法,即使安装了旧版本(即在 Windows 7 上)也是如此。这种方法也适用于 ClickOnce 安装并且不需要 Bootstrap 。

我猜这个问题是由于名称与 Windows 中已加载的字体冲突引起的。所以我重命名了较新的版本以避免冲突。它有效。

1) Download utility program Typograf from this link: http://www.neuber.com/typograph/
2) Open directory where you have a copy of your font file
3) Click on font in list
4) Click Properties button in bar
5) Click Rename button, specify a new name (I chose "SegoeDynamic") and select where to save the new file
6) Add the new font file to your Visual Studio project directory (my directory is "/_Resources")
7) Use relative path or root path as you wish when referencing the font dynamically

 <TextBlock FontFamily="../_Resources/#SegoeDynamic">
 <TextBlock FontFamily="pack://application:,,,/_Resources/#SegoeDynamic">

请注意,“Segoe UI Symbol”发布了多个版本,每个版本都添加了更多符号。我至少发现了以下内容:

Windows 7:5.01(823kb)

Windows 8:5.90 (1660kb)

Windows 8.1:6.09 (1740kb)

关于c# - WPF 中的嵌入式字体不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27893433/

相关文章:

c# - 带有 CheckBox 的 WPF ListView 选择问题

c# - 子属性更改时,FreezableCollection 不提供更改通知

iphone - 为什么在运行OS 3的iPhone 3G上无法显示Baskerville字体?

html - Font Awesome 图标不显示但 main.css 显示

javascript - Cufon 的问题。需要帮忙?

c# - 解析数学表达式

c# - 无法使 Autofac 嵌套范围工作(嵌套的多个工作单元应该有一个新的 dbcontext )

C# 将带有参数的方法作为参数传递给 Lazy<T>

wpf - 位图图像异常

c# - 防止单元格级制表位,但仍允许行在 WPF DataGrid 中具有制表位