安装后,Windows字体在应用程序中无法立即使用?

时间:2010-06-03 07:49:40

标签: asp.net windows fonts gdi

每当我在Windows 2003服务器上安装新字体时,我都无法在我的asp.net Web应用程序中立即使用它。应用程序通过CreateFontIndirect gdi32.dll win api获取字体,然后使用此字体在我的asp.net应用程序中创建动态文本图像。看起来字体会被缓存到某个地方,因为我只会返回默认字体。

字体缓存在重新启动后得到更新,然后我得到了正确的字体,但显然我不想在生产服务器上重新启动只是为了让新字体工作。

有没有办法刷新字体缓存?

3 个答案:

答案 0 :(得分:13)

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

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

要“手动”注册新字体,您需要调用AddFontResource并传递字体路径。

为了使其更容易一些,您可以进行操作,以便您的应用扫描Fonts文件夹,并在其AddFontResource事件中找到的每个文件上调用Application_Start。这样,当您安装新字体时,您可以只回收该网站(例如编辑web.config文件),它将重新扫描所有文件。

另一种选择是将目录监视(通过FileSystemWatcher)放在Fonts文件夹中并自动重新扫描。

我想这只取决于你安装新字体的频率......

答案 1 :(得分:1)

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

答案 2 :(得分:0)

我回收了使用字体的应用程序池,并对其进行了修复。