Подтвердить что ты не робот

Шрифты Windows не могут сразу использоваться в приложении после установки?

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

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

Ответ 2

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

Ответ 3

Я перерабатываю пул приложений, которые используют шрифты, и это исправлено.