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

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

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

Существует ли способ сбросить кэш шрифта?

13
задан Carvellis 3 June 2010 в 07:49
поделиться

1 ответ

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

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

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

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

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

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

14
ответ дан 2 December 2019 в 00:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: