Windows字体安装后不能立即在应用程序中使用?

每当我在Windows 2003服务器上安装一个新的字体,我不能立即在我的asp.net web应用程序中使用它。 应用程序通过CreateFontIndirect gdi32.dll win api获取字体,然后使用此字体在我的asp.net应用程序中创builddynamic文本图像。 似乎字体得到caching的地方,因为我只会得到返回的默认字体。

字体caching在重新启动后得到更新,然后我得到正确的字体,但显然我不想在生产服务器上重新启动一个新的字体。

有没有办法刷新字体caching?

默认情况下,当您安装新字体时,只有当前会话被通知更改。 所以如果你在终端服务会话中登录服务器(这看起来很可能),那么ASP.NET应用程序(将运行在不同的会话中)将不会看到更改。

重新启动时,系统会自动扫描字体目录,并将其中的所有字体“注册”到当前会话中。

要“手动”注册一个新的字体,您将需要调用AddFontResource并传入字体的路径。

为了使它更容易,你可以这样做,让你的应用程序扫描字体文件夹,并在它的Application_Start事件中找到的每个文件上调用AddFontResource 。 这样,当你安装一个新的字体,你可以回收站点(例如编辑web.config文件),它会重新扫描所有的文件。

另一种选择是将一个目录(通过FileSystemWatcher )放在字体文件夹上并自动重新扫描。

我想这只是取决于多久你会安装新的字体…

重新启动IIS。 这应该够了吧。 从命令行搓iisreset或使用IIS管理器。