如何在我的 firemonkey 应用程序中使用嵌入字体或安装新字体?
我尝试了这个解决方案,但WM_FONTCHANGE
没有在 FMX 中定义!
我想在我的应用程序中使用自定义字体,我该怎么做?
我按照此处的说明进行操作,它们有所帮助。我有一些额外的提示可能会有所帮助,
现在,我添加了以下代码,
procedure TMainForm.FormCreate(Sender: TObject);
begin
AddFontResource('c:\fontpath\myfont.ttf');
SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0) ;
end;
procedure TMainForm.FormDestroy(Sender: TObject);
begin
RemoveFontResource('c:\fontpath\myfont.ttf');
SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0) ;
end;
当我以 firemonkey 形式运行它时,我观察到以下内容。
这告诉我我的代码有效(参见项目符号 1. 和 6.) - 但如果您使用记事本中出现的名称,FMX 将无法识别我的主窗体上的字体。我已经四次检查了字体名称。
我创建了两个相同的项目。一个是 VCL,另一个是 FMX。VCL 项目完美运行——无论是静态文本还是动态文本。FMX 代码两者都不起作用。如果我不得不冒险猜测,我会说 FMX 在启动时构建一个字体列表,并根据该列表检查可用字体列表(即像缓存一样)。我冒昧地猜测这样做是为了从底层操作系统中抽象 FMX ......
如果有人在firemonkey下完成了这项工作,我将不胜感激。另外,如果有人知道如何在 Mac 下实现相同的目标,我也会很感激指针。
问候,
埃德先生
您当然可以Winapi.Messages
在明确针对 Windows 的 FMX 应用程序中使用该单元,并且在那里定义了消息常量。
如果您不想使用Winapi.Messages
,只需在您自己的代码中定义常量:
const
WM_FONTCHANGE = $001D;