2010-02-21 157 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也沒有。