作为序言,我需要使用: * 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 中?