Встраивание шрифта в Delphi - PullRequest
15 голосов
/ 06 июня 2010

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

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

Ответы [ 2 ]

12 голосов
/ 28 июня 2013

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

Пример кода:

function LoadResourceFont( const ResourceName : 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;
8 голосов
/ 06 июня 2010

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

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

...