Asp.net

安裝後不能立即在應用程序中使用的 Windows 字型?

  • March 3, 2022

每當我在 Windows 2003 伺服器上安裝新字型時,我都無法立即在我的 asp.net Web 應用程序中使用它。應用程序通過CreateFontIndirectgdi32.dll win api 獲取字型,然後使用此字型在我的 asp.net 應用程序中創建動態文本圖像。似乎字型被記憶體在某處,因為我只會返回預設字型。

重新啟動後字型記憶體會更新,然後我會得到正確的字型,但顯然我不想為了讓新字型工作而在生產伺服器上重新啟動。

有沒有辦法刷新字型記憶體?

預設情況下,當您安裝新字型時,只有目前會話會收到更改通知。因此,如果您在終端服務會話中登錄伺服器(這很可能),那麼 ASP.NET 應用程序(將在不同的會話中執行)將看不到更改。

當您重新啟動時,系統會自動掃描字型目錄並將其中的所有字型“註冊”到目前會話中。

要“手動”註冊新字型,您需要呼叫AddFontResource並傳入字型的路徑。

為了讓它稍微容易一些,你可以讓你的應用程序掃描字型檔夾並呼叫AddFontResource它在它的Application_Start事件中找到的每個文件。這樣,當您安裝新字型時,您只需資源回收筒點(例如編輯 web.config 文件),它就會重新掃描所有文件。

另一種選擇是在 Fonts 文件夾上放置一個目錄監視(通過FileSystemWatcher)並自動重新掃描它。

我想這取決於您安裝新字型的頻率…

引用自:https://stackoverflow.com/questions/2964117