每当我在 Windows 2003 服务器上安装新字体时,我都无法立即在我的 asp.net Web 应用程序中使用它。应用程序通过以下方式获取字体CreateFontIndirect
gdi32.dll win api,然后使用此字体在我的asp.net应用程序中创建动态文本图像。似乎字体被缓存在某个地方,因为我只会返回默认字体。
重新启动后字体缓存会更新,然后我会得到正确的字体,但显然我不想在生产服务器上重新启动只是为了让新字体正常工作。
有没有办法刷新字体缓存?
默认情况下,当您安装新字体时,仅使用当前会话已收到更改通知。因此,如果您在终端服务会话中登录服务器(这似乎是可能的),那么 ASP.NET 应用程序(将在不同的会话中运行)将看不到更改。
当您重新启动时,系统会自动扫描字体目录并将其中的所有字体“注册”到当前会话中。
要“手动”注册新字体,您需要调用添加字体资源 http://msdn.microsoft.com/en-us/library/dd183326%28v=VS.85%29.aspx并传入字体的路径。
为了使它稍微容易一些,您可以让您的应用程序扫描 Fonts 文件夹并调用AddFontResource
在它找到的每个文件上Application_Start
事件。这样,当您安装新字体时,您只需回收该站点(例如编辑 web.config 文件),它就会重新扫描所有文件。
另一种选择是放置目录监视(通过文件系统观察者 http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx)在字体文件夹中并自动重新扫描它。
我想这只是取决于你安装新字体的频率......
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)