Embedding a font in delphi

后端 未结 2 1236
挽巷
挽巷 2020-12-15 21:47

I\'m working on an app that requires a particular barcode true type font that is unlikely to be on the user\'s PC.

Can I somehow embed the font in the app, or do I

相关标签:
2条回答
  • 2020-12-15 22:08

    Yes, you can save it as a resource in the EXE file, and on user's pc, you can extract it as a file using a TResourceStream instance. Then you can call AddFontResource API function. At last, you should send a WM_FONTCHANGE message to all top-level windows in the system (Check Remark section of AddFontResource description in MSDN website).

    If you need an example code, let me know.

    0 讨论(0)
  • 2020-12-15 22:12

    In my opinion the most easy way is to use AddFontMemResourceEx in case the font is embedded as a resource into the EXE. It allows loading the font directly from memory, no need to save the font to file.

    Code Example:

    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;
    
    0 讨论(0)
提交回复
热议问题