Внешний вид сайта:

Подключение шрифта из файла ресурсов

Для начала нужно создать файл ресурсов (*.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.

Не забывайте в оброботчике FormClose прописать:

RemoveFontResource(PChar('MyFont1.ttf'));

...иначе в дальнейшем будут проблемы с памятью...

Комментарии

Нет комментариев. Ваш будет первым!