【问题标题】:Workaround for the Mono PrivateFontCollection.AddFontFile bugMono PrivateFontCollection.AddFontFile 错误的解决方法
【发布时间】:2011-01-19 10:54:54
【问题描述】:

当我在 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)

【问题讨论】:

  • 您是否在 Mono 的 bugzilla 中提交了错误?这是团队知道首先要修复的错误的唯一方法。
  • 该错误已于 11 月由其他人在 bugzilla.ximian.com/show_bug.cgi?id=77498987654321@ 上报告
  • 这个错误被标记为已解决,它是关于崩溃的。现在崩溃已修复,但行为仍然错误。请提交具有适当预期行为的新错误。谢谢!

标签: c# mono privatefontcollection


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-04
    • 1970-01-01
    • 2012-01-11
    • 2014-03-22
    • 2012-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多