在delphi中嵌入字体

时间:2010-06-06 14:13:11

标签: delphi fonts embedded-resource

我正在开发一款需要特定条形码真实字体的应用,这种字体不太可能出现在用户的PC上。

我可以以某种方式在应用程序中嵌入字体,还是需要使用安装程序来安装字体?

2 个答案:

答案 0 :(得分:11)

在我看来,最简单的方法是使用AddFontMemResourceEx以防将字体作为资源嵌入到EXE中。它允许直接从内存加载字体,无需将字体保存到文件中。

代码示例:

function LoadResourceFont( const ResourceName : string ) : boolean;
var
   ResStream : tResourceStream;
   FontsCount : integer;
   hFont : tHandle;
begin
   ResStream := tResourceStream.Create(hInstance, ResourceName, RT_RCDATA);
   hFont := AddFontMemResourceEx(ResStream.Memory, ResStream.Size, nil, @FontsCount);
   result := (hFont <> 0);
   ResStream.Free();
end;

答案 1 :(得分:8)

是的,您可以将其作为资源保存在EXE文件中,并且在用户的PC上,您可以使用TResourceStream实例将其作为文件提取。然后,您可以调用AddFontResource API函数。最后,您应该向系统中的所有顶级窗口发送WM_FONTCHANGE消息(检查MSDN网站中AddFontResource描述的备注部分)。

如果您需要示例代码,请与我们联系。