Для начала нужно создать файл ресурсов (*.RES), который будет содержать необходимые шрифты. В нашем примере это MyNewFonts.res.
Затем необходимо подключить этот файл ресурсов к проекту, добавив строку {$R MyNewFonts.RES} в секцию implementation. Для получения шрифта из ресурсов необходимо создать объект TResorceStream и добавить шрифт процедурой AddFontResource.
А для включения шрифта Вы должны использовать сообщение Windows WM_FONTCHANGE. У нас есть раздел MYFONT, который содержит файл щрифта в файле ресурсов.
Шрифт загружаем в MyNewFonts.res файл в секцию RCData по имени MYFONT.
Посмотрим пример выполнения:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes,
Graphics, Controls, Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{$R MyNewFonts.res} // должен быть в папке с проектом или указать путь
procedure TForm1.FormCreate(Sender: TObject);
var
MyResStream: TResourceStream;
begin
MyResStream:= TResourceStream.Create(hInstance, 'MYFONT', RT_RCDATA);
MyResStream.SaveToFile('MyFont1.ttf'); // Файл для хранения шрифта
AddFontResource(PChar('MyFont1.ttf')); // Теперь читаем его
SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
Label1.Font.Charset:= DEFAULT_CHARSET; // Поставим по умолчанию
Label1.Font.Size:= 24;
Label1.Font.Name:= 'PFScandalPro-DisplayBold'; // Здесь пишем имя шрифта
end;
end.
|
Комментарии
Разумеется!
http://decoding.narod.ru/faq/font/font001.html#001
RemoveFontResource(PChar('MyFont1.ttf'));
...иначе в дальнейшем будут ошибки с памятью...
RSS лента комментариев этой записи