如何让ClickOnce应用程序识别新字体?

时间:2012-09-13 16:52:36

标签: fonts devexpress clickonce

前言,我需要使用:  * ClickOnce部署  *条形码字体  *使用“FontName”而无法访问Font对象的DevExpress控件,阻止我使用PrivateFontCollection。  *字体必须以静默方式安装,并在安装后立即工作。

DevExpress阻止我使用PFC的部分是RichEditControl中的CharacterProperties对象。他们的支持网站已经有一张票据以“抱歉,我们无法使用PrivateFontCollection”结束。

我从众多来源中读到并发现ClickOnce在安装时无法立即使用字体。我正在使用P / Invoke来安装字体,因为我无法使用PFC。我创建了一个完全独立的控制台应用程序来执行此字体安装,字体显示在Word中,但它不会显示在我的ClickOnce应用程序中,即使我在Word之后打开它。我可以通过正常的Windows单击方法手动安装字体,它显示在Word和ClickOnce中。

我使用System.Drawing.Font验证了它对整个应用程序不可用,而不仅仅是一个挑剔的供应商控件:

Font fontTester = new Font(fontName, 12, FontStyle.Regular, GraphicsUnit.Pixel);
if (fontTester.Name == fontName)

“名称”值更改为“Microsoft Sans-Serif”,就好像字体不可用一样。

如何在没有重启/注销的情况下将字体显示在ClickOnce中?

1 个答案:

答案 0 :(得分:0)

我不确定您是否可以通过将字体放入Windows目录来以传统方式安装字体 - ClickOnce沙箱将阻止您执行此类操作。

但您可以使用代码动态添加字体,但仅适用于当前用户。

这个MSDN Article在System.Drawing.Text命名空间中显示方法AddFontFile,并且有关于此问题的进一步讨论here(忽略错误地说这是不可能的人)

编辑:看起来它可能是你的命名空间。见C# - Read & Preview Font

我会尝试从您的应用中以某种方式列出字体,看看它们是否可以被阅读。