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

我有一个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)

上一篇:JTextArea中控制字符的Java图像


下一篇:♥和♦在HTML中在Android上显示为黑色,即使CSS中将颜色设置为红色