是否可以直接从 Delphi 资源中使用字体以及如何使用?我有一个问题的第一步。例如,我不能包括Segoe用户界面轻字体在资源的项目,一个异常发生。这是只有当文件的扩展名是'ttf'。如果上面写的是不可能的,那么我如何使用一个外部字体,而不单独部署字体(从可执行文件)?先谢了!
qoefvg9y1#
在Windows 2000及更高版本上,可以使用AddFontMemResourceEx从内存为进程安装字体。
qgelzfjb2#
如果你想使用一种字体,必须安装字体。但是你可以使用AddFontResource来伪造它。
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。此外,根据您的要求,您可以在内存Map和/或RAM驱动器中提取文件。高温加热
TjvDataEmbedded
2条答案
按热度按时间qoefvg9y1#
在Windows 2000及更高版本上,可以使用AddFontMemResourceEx从内存为进程安装字体。
qgelzfjb2#
如果你想使用一种字体,必须安装字体。但是你可以使用
AddFontResource
来伪造它。正如您所看到的,AddFontResource需要一个文件名,AddFontResourceEx也是如此。
所以你需要一个字体文件。但我们也可以伪造它。
使用JVCL的
TjvDataEmbedded
将TTF文件包含在可执行文件中。嵌入字体文件非常简单。(右键单击"从文件加载...")在运行时,把你的文件解压到用户的临时目录中(参见TjvDataEmbedded方法--我现在不知道,但是应该是SaveToFile之类的)。顺便说一句,你可以把它解压到你喜欢的任何其他目录中。在上面调用
AddFontResource
。此外,根据您的要求,您可以在内存Map和/或RAM驱动器中提取文件。
高温加热