1

次のコードを使用して、フォントをメモリにロードし、GDI+ で画像を生成しています。

var fontCollection = new PrivateFontCollection();
fontCollection.AddFontFile(Server.MapPath("~/fonts/abraham-webfont.ttf"));
fontCollection.Families.Count(); // => This line tells me, that the collection has 0 items.

AddFontFile例外はありませんが、メソッドが例外なく実行された後、fontCollection Families プロパティは空になります。

パスが有効であることを確認しました (File.Exists戻り値true):

Response.Write(System.IO.File.Exists(Server.MapPath("~/fonts/abraham-webfont.ttf"))); // # => Renders "True"

ファイルを開くと、TTF ファイルは正常に動作しているように見えるため、無効な TTF ファイルではありません。 https://dl.dropboxusercontent.com/u/4899329/2016-10-12_22-44-52.png

助言がありますか?

4

1 に答える 1

1

Hans Passant からの回答で問題が解決しました。

PrivateFontCollection は不安定であることで有名です。今日よく見られる失敗モードの 1 つは、フォントが実際には TrueType アウトラインの OpenType フォントであるというものです。GDI+ は「純粋な」もののみをサポートします。靴はぴったりで、Web によると、Abraham は OpenType フォントです。Winforms ではなく、WPF で動作します。

于 2016-10-13T12:37:33.203 に答える