我有一个 WPF 应用程序,我在其中使用字体“Segoe UI Symbol”中的图标。但是当部署到 Windows 7 时,我意识到图标丢失了,因为字体在 Windows 8 中更新了。
我尝试按照以下说明在 WPF 应用程序中嵌入字体作为资源:http : //msdn.microsoft.com/en-us/library/ms753303.aspx 但它不起作用。
最初我有:
<TextBlock FontFamily="Segoe UI Symbol">
Run Code Online (Sandbox Code Playgroud)
在 Windows 8 计算机上运行良好。然后我将 seguisym.ttf 添加到目录“_Resources”,然后使用:
<TextBlock FontFamily="./_Resources/#Segoe UI Symbol">
Run Code Online (Sandbox Code Playgroud)
这不适用于 Windows 8 或 Windows 7!我为 BuildAction 尝试了不同的设置:Resource、Embedded Resource 和 Content,但它们都不起作用。
我终于找到了一种方法,即使安装了旧版本(即在 Windows 7 上),也可以使用新版本的“Segoe UI Symbol”。这种方法也适用于 ClickOnce 安装并且不需要引导。
我猜这个问题是由与 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">
Run Code Online (Sandbox Code Playgroud)
请注意“Segoe UI Symbol”在多个版本中发布,每个版本都添加了更多符号。我至少发现了以下几点:
Windows 7:5.01(823kb)
Windows 8:5.90 (1660kb)
Windows 8.1:6.09 (1740kb)