Iis 7 使用自定义安装字体(Win7/IIS)和ImageResizer';s水印插件(C#)

Iis 7 使用自定义安装字体(Win7/IIS)和ImageResizer';s水印插件(C#),iis-7,watermark,truetype,imageresizer,Iis 7,Watermark,Truetype,Imageresizer,我正在使用ImageResizer的水印插件在我的图像上写这个文本层。很好!但是现在我想使用一种特定的字体。如果我在我的系统上指定一个现有的字体,效果很好 我的问题是因为我要使用这个自定义的.TTF字体。我目前正在本地运行,所以我在Windows7中安装了字体。字体看起来安装正确,当我打开Outlook时,我可以使用那里的字体设置文本样式 如果我重新启动,字体显示为已卸载。当我再次尝试安装它时,Windows说它已经安装 最后,我尝试取消阻止.ttf文件并重新安装,但没有帮助。因为我是通过在II

我正在使用ImageResizer的水印插件在我的图像上写这个文本层。很好!但是现在我想使用一种特定的字体。如果我在我的系统上指定一个现有的字体,效果很好

我的问题是因为我要使用这个自定义的.TTF字体。我目前正在本地运行,所以我在Windows7中安装了字体。字体看起来安装正确,当我打开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;"));
var c=Config.Current;
//名称层
var userNameLayerA=newtextlayer();
userNameLayerA.Text=firstName+“”+lastName;
userNameLayerA.TextColor=System.Drawing.Color.Black;
//userNameLayerA.Font=“Verdana”/>很好!
userNameLayerA.Font=“Headline Two”/>不行!
userNameLayerA.FontSize=16;
userNameLayerA.Style=FontStyle.Bold;
userNameLayerA.Align=ContentAlignment.MiddleCenter;
userNameLayerA.Top=新的距离单位(295,DistanceUnit.Units.Pixels);
//寄存器层
var wp=c.Plugins.Get();
wp.NamedWatermarks[“userNameLayerA”]=新层[]{userNameLayerA};
//塑造形象
c、 CurrentImageBuilder.Build(posterAEnFilePath、posterAEnDestinationFilePath、新的大小设置(“水印=用户名层;”);
如果不能,则ImageResizer肯定无法访问它

有东西阻止访问或加载字体。这可能是NTFS权限问题,也可能是一些深奥的.NET安全规则。我将首先关注如何使用PrivateFontCollection加载字体-如果您成功地做到了这一点,它可能会与ImageResizer一起工作


重新启动时字体显示为已卸载的事实非常可疑。字体非常复杂,经常有bug或损坏。您可以尝试其他一些TrueType字体,如,看看它们是否有不同的行为。

当我使用自定义字体运行水印插件时,我还收到一个“未找到文件”异常。我已在服务器上运行了代码,在那里运行良好。每次上传我的.dll进行测试都是很痛苦的,但它工作得很好,哈哈:)我确信这是我的开发机器上阻止字体正确安装的原因。