2010-02-21 131 views
10

当我在Mono.net中调用PrivateFontCollection.AddFontFile方法时,它总是返回一个标准的font-family。这个错误已经在几个网站上报道过,但据我所知没有办法解决它。该错误本身在Mono库中尚未修复。有没有解决方法?Mono的解决方法PrivateFontCollection.AddFontFile bug

编辑:作为心腹的回答反应,我将张贴代码:

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

我知道这个代码将正常工作的Microsoft.Net框架,但在Mono运行时,它只是给出了一个标准字体家族(我认为这是Arial)的名字myFontFamily.ttf

+4

你是否在Mono的bugzilla中提交过错误?这是团队知道首先需要修复的错误的唯一方法。 – 2010-03-02 15:00:46

+0

该错误已在11月由其他人在http://bugzilla.ximian.com/show_bug.cgi?id=77498 – 2010-03-02 15:56:32

+0

上报告过此错误标记为RESOLVED,并且是关于崩溃。现在崩溃是固定的,但行为仍然是错误的。请提交适当的预期行为的新错误。谢谢! – 2010-03-02 17:59:38

回答

1

发现这个职位从谷歌。如果它是任何安慰,我遇到与AddMemoryFont相同的问题(在Windows上工作正常,单声道给我一个通用字体。)如果它是任何安慰,它看起来是Mono的问题,而不是你的代码。

通过源代码挖掘,System.Windows.Drawing.PrivateFontCollection大多只是一个围绕GDIPlus.GdipPrivateAddFontFile的包装,它本身是一个围绕fontconfig的FcConfigAppFontAddFile的包装。它似乎没有引发任何错误的原因是GDIplus不检查fontconfig的返回值,所以似乎fontconfig无论如何都无法读取字体,但GDIplus并不知道它,所以PrivateFontCollection也没有。