Вложение шрифта в delphi

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

Можно ли каким-либо образом внедрить шрифт в приложение, или мне нужно использовать установщик для установки шрифта?

Ответы

Ответ 1

Да, вы можете сохранить его как ресурс в EXE файле, а на компьютере пользователя вы можете извлечь его в виде файла с помощью экземпляра TResourceStream. Затем вы можете вызвать AddFontResource API. Наконец, вы должны отправить сообщение WM_FONTCHANGE во все окна верхнего уровня в системе (см. Раздел "Замечание" в описании AddFontResource на веб-сайте MSDN).

Если вам нужен пример кода, дайте мне знать.

Ответ 2

На мой взгляд, самый простой способ - использовать AddFontMemResourceEx, если шрифт встроен в качестве ресурса в EXE. Он позволяет загружать шрифт непосредственно из памяти, не нужно сохранять шрифт в файл.

Пример кода:

function LoadResourceFont( const ResourceName, FontName : string ) : boolean;
var
   ResStream : tResourceStream;
   FontsCount : integer;
   hFont : tHandle;
begin
   ResStream := tResourceStream.Create(hInstance, ResourceName, RT_RCDATA);
   hFont := AddFontMemResourceEx(ResStream.Memory, ResStream.Size, nil, @FontsCount);
   result := (hFont <> 0);
   ResStream.Free();
end;