11

当我在 Mono.net 中调用 PrivateFontCollection.AddFontFile 方法时,它总是返回一个标准字体系列。这个错误已经在几个网站上报告过,但据我所知,没有办法解决它。该错误本身尚未在 Mono 库中修复。有什么解决方法吗?

编辑:作为对追随者回答的反应,我将发布代码:

PrivateFontCollection pfc = new PrivateFontCollection();
pfc.AddFontFile("myFontFamily.ttf");
myFontFamily = pfc.Families[0x00];
Font myFont = new Font(myFontFamily,14.0f);

我知道这段代码在 Microsoft.Net 框架上可以正常工作,但是在 Mono 上执行时,它只提供了一个名为 myFontFamily.ttf 的标准字体系列(我认为它是 Arial)

4

1 回答 1

2

从谷歌找到这篇文章。如果有什么安慰的话,我在 AddMemoryFont 上遇到了同样的问题(在 Windows 上工作正常,mono 给了我一个通用字体。)如果有什么安慰的话,看起来这是 Mono 的问题,而不是你的代码。

深入研究源代码,System.Windows.Drawing.PrivateFontCollection 主要只是 GDIPlus.GdipPrivateAddFontFile 的包装,它本身就是 fontconfig 的 FcConfigAppFontAddFile 的包装。它似乎没有抛出任何错误的原因是 GDIplus 不检查 fontconfig 的返回值,所以看起来 fontconfig 出于某种原因无法读取字体,但 GDIplus 不知道它,所以 PrivateFontCollection 也没有。

于 2010-03-13T09:51:48.073 回答