我正在使用 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;"));