Вложение шрифта в 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;