代码之家  ›  专栏  ›  技术社区  ›  Carvellis

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

  •  13
  • Carvellis  · 技术社区  · 16 年前

    每当我在Windows2003服务器上安装新字体时,我都无法在我的ASP.NET Web应用程序中立即使用它。应用程序通过 CreateFontIndirect gdi32.dll赢得API,然后使用此字体在我的ASP.NET应用程序中创建动态文本图像。似乎字体被缓存在某个地方,因为我只会得到返回的默认字体。

    字体缓存在重新启动后会得到更新,然后我会得到正确的字体,但显然我不想在生产服务器上重新启动以使新字体正常工作。

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

    2 回复  |  直到 12 年前
        1
  •  13
  •   Dean Harding    16 年前

    默认情况下,安装新字体时,只有 本届会议 收到变更通知。因此,如果您在终端服务会话(可能)中登录到服务器,则ASP.NET应用程序(将在其他会话中运行)将看不到更改。

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

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

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

    另一种选择是放置一个目录监视(通过 FileSystemWatcher )在“字体”文件夹中自动重新扫描。

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

        2
  •  1
  •   user1923248    12 年前

    重新启动IIS。这应该能解决问题。从命令行中清除IISReset或使用IIS管理器。

    推荐文章