我正在开发一款需要特定条形码真实字体的应用,这种字体不太可能出现在用户的PC上。
我可以以某种方式在应用程序中嵌入字体,还是需要使用安装程序来安装字体?
答案 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描述的备注部分)。
如果您需要示例代码,请与我们联系。