11

Mono.net で PrivateFontCollection.AddFontFile メソッドを呼び出すと、常に標準のフォント ファミリが返されます。このバグはすでにいくつかの Web サイトで報告されていますが、私の知る限り、解決する方法はありません。Mono-libraries では、バグ自体はまだ修正されていません。回避策はありますか?

編集:ヘンチマンの答えに対する反応として、コードを投稿します:

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 に答える