delphi 如何使用外部字体?

oxcyiej7  于 2022-12-18  发布在  其他
关注(0)|答案(2)|浏览(314)

是否可以直接从 Delphi 资源中使用字体以及如何使用?
我有一个问题的第一步。例如,我不能包括Segoe用户界面轻字体在资源的项目,一个异常发生。这是只有当文件的扩展名是'ttf'。
如果上面写的是不可能的,那么我如何使用一个外部字体,而不单独部署字体(从可执行文件)?
先谢了!

qoefvg9y

qoefvg9y1#

在Windows 2000及更高版本上,可以使用AddFontMemResourceEx从内存为进程安装字体。

qgelzfjb

qgelzfjb2#

如果你想使用一种字体,必须安装字体。但是你可以使用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也是如此。
所以你需要一个字体文件。但我们也可以伪造它。
使用JVCLTjvDataEmbedded将TTF文件包含在可执行文件中。嵌入字体文件非常简单。(右键单击"从文件加载...")
在运行时,把你的文件解压到用户的临时目录中(参见TjvDataEmbedded方法--我现在不知道,但是应该是SaveToFile之类的)。顺便说一句,你可以把它解压到你喜欢的任何其他目录中。在上面调用AddFontResource
此外,根据您的要求,您可以在内存Map和/或RAM驱动器中提取文件。
高温加热

相关问题