Включение шрифта как ресурс в EXE

Включение шрифта в ваш EXE:

Используйте ваш любимый текстовый редактор, создайте *.rc файл, описывающий шрифт:

MY_FONT ANYOL1 «Bauhs93.ttf»

Первые два параметра могут быть любыми. Они будут использоваться в программе позже.

Затем для создания *.res файла используйте компилятор командной строки BRCC32.EXE, поставляемый с Delphi. Если ваш файл на этапе 1 был назван MyFont.rc, командная строка в сеансе DOS должна выглядеть так:

BRCC32 MyFont

Программа добавит в компилируемый файл созданный ресурс .rc и создаст файл с тем же именем, за исключением расширения, которое будет .res: MyFont.res

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

{$R MyFont.res}

Правильным будет разместить его в секции реализации после строчки {$R *.DFM}.

Добавьте процедуру создания файла из ресурса, делающим шрифт доступным для использования. Пример:

procedure TForm1.FormCreate(Sender: TObject);

var

Res : TResourceStream;

begin

Res := TResourceStream.Create(hInstance, 'MY_FONT', Pchar('ANYOL1'));

Res.SavetoFile('Bauhs93.ttf');

Res.Free;

AddFontResource(PChar('Bauhs93.ttf'));

SendMessage(HWND_BROADCAST,WM_FONTCHANGE,0,0);

end;

 

Теперь вы можете использовать данный шрифт в своем приложении:

procedure TForm1.Button1Click(Sender: TObject);

begin

Button1.Font.Name := 'Bauhaus 93';

end;

Предостережения:

Приведенный пример не предусматривает никакой проверки и защиты от возможных ошибок.

Обратите внимание — имя файла НЕ такое же, как имя шрифта. Это допускает, что вы знаете имя шрифта и имя его ttf-файла. Вы можете определить это, дважды щелкнув на файле в окне Проводника.

Я рекомендую устанавливать файл шрифта в папку C:\WINDOWS\FONTS. Его легче отыскать потом именно там.

Ваш вновь установленный шрифт может быть удален программным путем, естественно, в случае, когда он никем не используется:

procedure TForm1.FormDestroy(Sender: TObject);

begin

RemoveFontResource(PChar("Bauhs93.ttf"))

SendMessage(HWND_BROADCAST,WM_FONTCHANGE,0,0);

end;

 

Для получения дополнительной справки по функциям AddFontResource и RemoveFontResource загляните в электронную справку по Win32.

 

Добавить комментарий