从C#应用程序上的文件加载字体

从C#应用程序上的文件加载字体,c#,.net,winforms,fonts,C#,.net,Winforms,Fonts,我希望在C#中加载并使用字体到桌面应用程序。不在系统上安装字体就可以了吗 这是一种类似于DLL的问题,但不是来自DLL。我想从字体文件加载。System.Drawing.dll中有一个类System.Drawing.Text.PrivateFontCollection,它可以根据每个应用程序管理字体 你所要做的就是在你的应用程序中维护这个集合,通过AddFontFile或AddMemoryFont添加字体,然后你就可以像在你的系统上安装一样使用这个字体了 这就像只为应用程序安装字体一样。一旦进程

我希望在C#中加载并使用字体到桌面应用程序。不在系统上安装字体就可以了吗


这是一种类似于DLL的问题,但不是来自DLL。我想从字体文件加载。

System.Drawing.dll中有一个类System.Drawing.Text.PrivateFontCollection,它可以根据每个应用程序管理字体

你所要做的就是在你的应用程序中维护这个集合,通过AddFontFile或AddMemoryFont添加字体,然后你就可以像在你的系统上安装一样使用这个字体了

这就像只为应用程序安装字体一样。一旦进程终止,字体将被卸载。

试试这个


该博客介绍了如何使用FontCollection类。

我认为您必须保留您的私人字体集合,以便它不会被垃圾收集。当我尝试使用字体集合中的数据创建的字体对象进行绘制时,我一直遇到一个异常。我想一旦我有了我的字体我就不在乎收藏了,对吧?显然不是。只要您需要字体,就保留对字体集合的引用。这至少对我有用。啊,很微妙,但确实如此,我猜GDI+包装器不会为您跟踪这些字体,它是在GDI+内部引用这些字体时收集的,当然它无法知道句柄现在无效/已释放。Win32 introp的背面。此外,当您使用PrivateFontCollection时,应将其释放!