Подключение шрифта из файла ресурсов
Затем необходимо подключить этот файл ресурсов к проекту, добавив строку {$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.
Не забывайте в оброботчике FormClose прописать:
RemoveFontResource(PChar('MyFont1.ttf'));
...иначе в дальнейшем будут проблемы с памятью...
Комментарии