【问题标题】:Load fonts from file on a C# application从 C# 应用程序的文件中加载字体
【发布时间】:2010-10-07 09:29:25
【问题描述】:

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

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

【问题讨论】:

    标签: c# .net winforms fonts


    【解决方案1】:

    Load a font from disk, stream or byte array

    试试这个……

    该博客描述了如何使用 FontCollection 类。

    【讨论】:

      【解决方案2】:

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

      您所做的只是在您的应用程序中维护此集合,并通过 AddFontFile 或 AddMemoryFont 添加字体,然后您就可以使用该字体,就像它已安装在您的系统上一样。

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

      【讨论】:

      • 我认为你必须保留你的私人字体集合,这样它就不会被垃圾收集。当我尝试使用使用字体集合中的数据构建的 Font 对象进行绘制时,我不断收到异常。我想一旦我有了我的字体,我就不在乎收藏了,对吧?显然不是。只要您需要字体,就保留对字体集合的引用。这至少对我有用。
      • 啊,微妙,但确实如此,我猜 GDI+ 包装器不会为您跟踪这些字体,它会在 GDI+ 内部引用这些字体时被收集,自然它无法知道句柄现在无效/已释放。 Win32 introp 的背面。
      • PrivateFontCollection 也应该在你完成后处理掉!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-19
      • 1970-01-01
      • 1970-01-01
      • 2016-01-28
      • 2013-11-27
      • 1970-01-01
      • 2016-10-01
      相关资源
      最近更新 更多