【发布时间】:2011-02-28 09:27:05
【问题描述】:
我正在开发一个应用程序,该应用程序需要特定的条形码 True Type 字体,而该字体不太可能出现在用户的 PC 上。
我可以以某种方式将字体嵌入到应用程序中,还是需要使用安装程序来安装字体?
【问题讨论】:
-
两者都可以。我有 1 个问题,这是你的字体吗?或者,你能重新分配吗?
标签: delphi fonts embedded-resource
我正在开发一个应用程序,该应用程序需要特定的条形码 True Type 字体,而该字体不太可能出现在用户的 PC 上。
我可以以某种方式将字体嵌入到应用程序中,还是需要使用安装程序来安装字体?
【问题讨论】:
标签: delphi fonts embedded-resource
是的,您可以将其作为资源保存在 EXE 文件中,在用户的 PC 上,您可以使用 TResourceStream 实例将其提取为文件。然后你可以调用AddFontResource API 函数。最后,您应该向系统中的所有顶级窗口发送一条 WM_FONTCHANGE 消息(检查 MSDN 网站中 AddFontResource 描述的 Remark 部分)。
如果您需要示例代码,请告诉我。
【讨论】:
在我看来,最简单的方法是使用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;
【讨论】: