我有一个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尝试了不同的设置:资源,嵌入式资源和内容,但它们都不起作用。
答案 0 :(得分:3)
即使安装了旧版本(即在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 Symbol”在多个版本中发布,每个版本添加更多符号。我至少发现了以下内容:
Windows 7:5.01(823kb)
Windows 8:5.90(1660kb)
Windows 8.1:6.09(1740kb)
答案 1 :(得分:1)
您使用TextBlock
输入的控件相对。如果您想从项目根文件夹中引用字体,则应使用这样:
<TextBlock FontFamily="pack://application:,,,/_Resources/#Segoe UI Symbol">
答案 2 :(得分:1)
首先非常感谢@Jakob Lithner和其他贡献者。
->我正在不支持某些Unicode字符的Win 7 PC上测试我的wpf应用程序。按照建议,我在c#-project中创建了Resources> Fonts文件夹,并在其中复制了字体seguisym.ttf(添加为“资源”;“如果更新则复制”)。
FontFamily="pack://application:,,,/<NameOfMyC#ProjectInSolution>;component/Resources/Fonts/seguisym.ttf#Segoe UI Symbol"
关于Linthner先生的解决方案的唯一变化是,我没有重命名字体,而是在字体文件名前添加了“ #Segoe UI Symbol”
比利时的问候!