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

Car*_*lis 13 windows asp.net fonts gdi

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

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

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

Dea*_*ing 14

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

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

要"手动"注册新字体,您需要调用AddFontResource并传入字体的路径.

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

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

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