ImageResizer の Watermark プラグインを使用して、画像にこのテキスト レイヤーを書き込んでいます。正常に動作します!しかし、今は特定のフォントを使いたいです。システムに既存のフォントを指定すると、問題なく動作します。
私の問題は、このカスタム .TTF フォントを使用するために発生します。今のところローカルで実行しているので、Windows 7 にフォントをインストールしました。フォントは正しくインストールされているように見えます。Outlook を開くと、そこにあるフォントを使用してテキストのスタイルを設定できます。
ただし、再起動すると、フォントがアンインストールされたように見えます。再度インストールしようとすると、Windows は既にインストールされていると表示します。
最終的に、.ttf ファイルのブロックを解除して再インストールしようとしましたが、役に立ちませんでした。IISで実行されているC#コードでこれを使用しているため、「ネットワークサービス」ユーザー(アプリケーションプールが実行されている)のフルコントロールをフォントファイル(Windows/Fontsフォルダー内に一度)に与えてみました。
InstalledFontCollection installedFonts = new System.Drawing.Text.InstalledFontCollection(); をチェックインし、デバッガーで実行してフォントを見つけようとしましたが、そこにはありませんでした。PrivateFontCollection で直接読み込もうとすると、ファイルが見つからないという例外が発生します。
だから...ここでアイデアが不足しています!何が問題なのかを調べるには、何を調べればよいですか? ありがとう!
以下は、画像に透かしを入れるために実行しているコードです。
var c = Config.Current;
// Name layer
var userNameLayerA = new TextLayer();
userNameLayerA.Text = firstName + " " + lastName;
userNameLayerA.TextColor = System.Drawing.Color.Black;
// userNameLayerA.Font = "Verdana"; // --> Works fine!
userNameLayerA.Font = "Headline Two"; // --> Does not work!
userNameLayerA.FontSize = 16;
userNameLayerA.Style = FontStyle.Bold;
userNameLayerA.Align = ContentAlignment.MiddleCenter;
userNameLayerA.Top = new DistanceUnit(295, DistanceUnit.Units.Pixels);
// Register layer
var wp = c.Plugins.Get<WatermarkPlugin>();
wp.NamedWatermarks["userNameLayerA"] = new Layer[] { userNameLayerA };
// Build image
c.CurrentImageBuilder.Build(posterAEnFilePath, posterAEnDestinationFilePath, new ResizeSettings("watermark=userNameLayerA;"));