Шрифты Windows не сразу можно использовать в приложении после установки? - PullRequest
13 голосов
/ 03 июня 2010

Всякий раз, когда я устанавливаю новый шрифт на сервер Windows 2003, я не могу сразу использовать его в своем веб-приложении asp.net. Приложение получает шрифт через win 100 API CreateFontIndirect gdi32.dll, а затем использует этот шрифт для создания динамического текстового изображения в моем приложении asp.net. Кажется, что где-то кэшируются шрифты, потому что я просто верну шрифт по умолчанию.

Кэш шрифтов обновляется после перезагрузки, и затем я получаю правильный шрифт, но, очевидно, я не хотел бы делать перезагрузку на рабочем сервере только для того, чтобы заставить работать новый шрифт.

Есть ли способ очистить кэш шрифтов?

Ответы [ 2 ]

14 голосов
/ 03 июня 2010

По умолчанию при установке нового шрифта только текущий сеанс уведомляется об изменении. Поэтому, если вы входите на сервер в сеансе служб терминалов (что кажется вероятным), приложение ASP.NET (которое будет работать в другом сеансе) не увидит изменения.

При перезагрузке система автоматически сканирует каталог шрифтов и «регистрирует» все шрифты в нем в текущем сеансе.

Чтобы «вручную» зарегистрировать новый шрифт, вам потребуется вызвать AddFontResource и передать путь к шрифту.

Чтобы сделать это немного проще, вы можете сделать так, чтобы ваше приложение сканировало папку Fonts и вызывало AddFontResource для каждого файла, найденного там в своем событии Application_Start. Таким образом, когда вы устанавливаете новый шрифт, вы можете просто переработать сайт (например, отредактировать файл web.config), и он будет повторно сканировать все файлы.

Другим вариантом было бы поместить просмотр каталога (через FileSystemWatcher ) в папку Fonts и автоматически пересканировать его.

Полагаю, все зависит от того, как часто вы будете устанавливать новые шрифты ...

1 голос
/ 20 октября 2013

Перезагрузите IIS. Это должно делать свое дело. удалите iisreset из командной строки или воспользуйтесь диспетчером IIS.

...