问题标签 [privatefontcollection]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - 使用 PrivateFontCollection 的 AddMemoryFont() 优于 AddFontFile() 有什么好处
经过多次试验和错误,我终于让我的应用程序在开发机器以外的机器上使用自定义字体,但是,我不确定我已经开始使用的两种方法中的哪一种是首选的做事方式。
将字体作为资源嵌入并使用Assembly.GetManifestResourceStream()
将字体文件数据推送到非托管内存中并将其添加到PrivateFontCollection
使用中AddMemoryFont()
,如下所示:
(删除所有错误处理和多余代码)
或者通过简单地将字体包含在应用程序中,而不是将其作为资源嵌入并使用PrivateFontCollection.AddFontFile()
:
在这两种方法中,字体集合都需要在表单的整个生命周期中保留,并且我必须重复代码并为应用程序中的每个表单设置字体对象,这样我就不会践踏非托管内存。
除了第二种方法允许用户访问您的字体文件这一事实之外,第一种方法还有其他好处吗?
或者,是否有另一种我不知道的首选方法?
vb.net - 如何在 VB.net 应用程序中使用 PrivateFontCollection 以在 PrintDocument VB.NET 中使用
我试图让 privatefontcollection 工作。但到目前为止它不起作用,不是错误的意思,只是屏幕上看到的字体是 MS Sans Serif 而不是我试图加载的字体。到目前为止,我已经尝试了两种不同的方法,但似乎都不适合我。
首先我试过:
我从打印子程序中调用了这个函数:
但我在 printdocument 打印预览中看到的只是 MS 无衬线字体。不是我加载到资源中的字体。
然后我尝试了这种方法:
我又得到了同样的结果
有什么我想念的东西才能让它工作吗?对此提出的其他问题似乎表明这应该可行。
我应该提一下,最终用户将在系统管理员锁定的 PC 上运行应用程序,因此无法选择“安装”字体。只有在应用程序运行时/调用子例程时,我才需要使用字体。
vb.net - AddFontResource / PrivateFontCollection 不会使字体立即可用于我的应用程序
我正在尝试为我的应用程序使用 PrivateFontCollection,以便它可以打印具有特定字体的文档。请注意,我无法“安装”字体,因为 Windows 目录受管理员保护。
我的代码可以工作,只要我关闭我的应用程序并重新启动它,当我重新启动它时,它会识别出字体在那里并且可以使用。但是,如果我单击命令按钮将字体安装为 privatefontcollection,然后刷新我的 PrintDocument,它不会使用新安装的字体显示它。我必须关闭应用程序并打开它,然后它就可以了。
下一个子程序是绘制文档的子程序。我有一个功能来检查字体是否已安装,如果没有,则使用替代字体。
检查字体是否已安装的功能。
上面的这个函数可能是问题,因为它返回 false。请注意,如果我关闭应用程序并重新启动它,那么这个相同的函数将检测 privatefontcollection 并返回 true,我可以使用我的字体成功打印我的文档。
我确实尝试将安装字体子例程添加到我的应用程序的开头。然后如果安装了字体则引发一个标志,然后尝试调用 Application.Restart() 方法,以便在启动画面启动时它可以安装字体,然后立即重新启动应用程序,这当然会锁定到安装了字体,但这种方法只是让应用程序处于打开和关闭的循环中。