Может ли кто-нибудь подсказать или решить такую проблему: мне
нужно убедиться, что мое приложение использует доступные, а не ближайшие шрифты,
установленные пользователем в системе? Я пробовал копировать файл #.ttf в
директорию пользователя windows\system, но мое приложение так и не смогло их
увидеть и выбрать для дальнейшего использования.
Ниже приведен код для Delphi, который динамически устанавливает
шрифты, загружаемые только во время работы приложения. Вы можете расположить
файл(ы) шрифтов в каталоге приложения. Они будут инсталлированы при загрузке
формы и выгружены при ее разрушении. Вам возможно придется модифицировать код
для работы с Delphi 2, поскольку он использует вызовы Windows API, которые могут
как измениться, так и нет. Если в коде вы видите "...", то значит в этом месте может располагаться
какой-либо код, не относящийся к существу вопроса.
Ну и, конечно, вы должны заменить "MYFONT" на реальное имя файла вашего
шрифта.
Для упрощения этого я сделал простую функцию, совмещающую обе этих задачи.
Она возвращает логическое значение, говорящая об успехе, или наоборот, о неудаче
операции загрузки или выгрузки шрифта.
{1998-01-16 Функция загрузки и выгрузки шрифта.}function LoadFont(sFontFileName: string; bLoadIt: boolean): boolean;
var
sFont, sAppDir, sFontRes: string;
begin
result := TRUE;
if bLoadIt thenbegin{Загрузка шрифта.}if FileExists(sFontFileName) thenbegin
sFontRes := sFontFileName + #0;
if AddFontResource(@sFontRes[1]) = 0 then
result := FALSEelse
SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
end;
endelsebegin{Выгрузка шрифта.}
sFontRes := sFontFileName + #0;
result := RemoveFontResource(@sFontRes[1]);
SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
end;
end; {LoadFont}
Статья Как приложению воспользоваться своими шрифтами раздела Графика и Игры Шрифты может быть полезна для разработчиков на Delphi и FreePascal.
Комментарии и вопросы
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.