Ping!  Could someone please help me understand how the memory for the
various HarfBuzz objects should be handled?  Or point me to the
documentation where that is described, if I missed it?  Please??

> Date: Sat, 18 May 2019 14:33:45 +0300
> From: Eli Zaretskii <[email protected]>
> Cc: [email protected]
> 
> > Cc: [email protected], [email protected]
> > From: Jonathan Kew <[email protected]>
> > Date: Sat, 11 May 2019 22:15:46 +0100
> > 
> > >> If you've got access to the font as a file or as a single buffer in
> > >> memory, then wrapping the entire thing as a blob and handing it to
> > >> hb_face_create will be simplest.
> > > 
> > > Would wrapping in a blob the buffer returned by GetFontData be enough?
> > 
> > If you use GetFontData to get the complete font as a single buffer (i.e. 
> > pass zero for the dwTable parameter), yes.
> 
> I'm now working on the HarfBuzz font driver for Emacs on Windows using
> GetFontData with the dwTable argument zero, to get the entire data of
> the font.  The question for which I cannot find an answer is regarding
> the memory management of the font data I get from GetFontData.  The
> buffer into which I get the font data is malloc'ed.  Then I create a
> blob from that buffer using hb_blob_create, use that blob to create a
> face with hb_face_create, and finally use the face to create a font
> with hb_font_create.  The result of hb_font_create I cache and use
> thereafter each time I need to call hb_shape_full.  But what about the
> hb_blob_t and the hb_face_t objects created in the process -- does
> their memory need to be freed in some manner after I have the
> hb_font_t object, or do I have to keep them as long as hb_font_t is in
> use?  The question about the blob also directly affects whether I need
> to keep around the buffer allocated for the GetFontData call, or can
> it be freed once I have the hb_font_t object.
> 
> Another question is about error handling.  I see that hb_blob_create,
> hb_face_create etc. return empty objects when they fail.  But I see no
> "is-empty" function or macro in the docs, did I miss something?  If
> not, how does one test for errors in a C program?  I assumed that any
> errors cause subsequent calls to fail, and so only checked the last
> call to hb_font_create for errors -- is that correct?
> 
> Thanks in advance for any help.
_______________________________________________
HarfBuzz mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/harfbuzz

Reply via email to