Как использовать внешние шрифты?

Действительно ли возможно использовать шрифт непосредственно от ресурсов в Delphi и как?

У меня есть проблема с самыми первыми шагами. Пример я не могу включать шрифт Света Segoe UI в ресурсы проекта, исключение, происходит. И это - то, только если расширение файла является 'ttf'.

Если записанный выше не возможен затем, как я использую внешний шрифт, не развертывая шрифт отдельно (от исполняемого файла)?

Заранее спасибо!

12
задан ulrichb 26 February 2010 в 20:44
поделиться

2 ответа

В Windows 2000 и более поздних версиях вы можете использовать AddFontMemResourceEx для установки шрифтов для вашего процесса из памяти.

13
ответ дан 2 December 2019 в 06:08
поделиться

Если вы хотите использовать шрифт, шрифт должен быть установлен. Но вы можете подделать это, используя 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

12
ответ дан 2 December 2019 в 06:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: