我有一个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尝试了不同的设置:资源,嵌入式资源和内容,但是它们都不起作用.
解决方法:
我终于找到了即使安装了旧版本(例如,在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">
请注意,“ Segoe UI符号”发布了多个版本,每个版本都添加了更多符号.我至少发现了以下几点:
Windows 7:5.01(823kb)
Windows 8:5.90(1660kb)
Windows 8.1:6.09(1740kb)