Действительно ли возможно использовать шрифт непосредственно от ресурсов в Delphi и как?
У меня есть проблема с самыми первыми шагами. Пример я не могу включать шрифт Света Segoe UI в ресурсы проекта, исключение, происходит. И это - то, только если расширение файла является 'ttf'.
Если записанный выше не возможен затем, как я использую внешний шрифт, не развертывая шрифт отдельно (от исполняемого файла)?
Заранее спасибо!
В Windows 2000 и более поздних версиях вы можете использовать AddFontMemResourceEx для установки шрифтов для вашего процесса из памяти.
Если вы хотите использовать шрифт, шрифт должен быть установлен.
Но вы можете подделать это, используя AddFontResource
.
procedure TForm1.FormCreate(Sender: TObject) ;
begin
AddFontResource('c:\FONTS\MyFont.TTF') ;
SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0) ;
end;
//Before application terminates we must remove our font:
procedure TForm1.FormDestroy(Sender: TObject) ;
begin
RemoveFontResource('C:\FONTS\MyFont.TTF') ;
SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0) ;
end;
Как видите, AddFontResource требует имени файла. То же самое означает AddFontResourceEx .
Итак, вам нужен файл шрифта. Но мы также можем подделать это.
Используйте JVCL TjvDataEmbedded
, чтобы включить ваш TTF-файл в исполняемый файл. Вставить файл шрифта просто. (Щелкните правой кнопкой мыши, «Загрузить из файла» ...).
Во время выполнения извлеките ваш файл во временный каталог пользователя (см. Методы TjvDataEmbedded - сейчас я не знаю, но это должно быть что-то вроде SaveToFile или подобное). Кстати, вы можете извлечь его в любой другой каталог, который вам нравится. Вызовите на нем AddFontResource
.
Также, в соответствии с вашими требованиями, вы можете извлечь файл в карту памяти и / или на RAM-накопитель.
HTH