2009/2/23 Mike Moening <mi...@reteksolutions.com>

>  In the 2.3.8 documentation it states that each thread should have its own
> FT_Library object.
>
> Currently we keep one FT_Library per FT_Face.
> We have a C++ wrapper object per font face which wraps these two together.
>
> We use FT_New_Memory_Face() to load the face into the object.
> Because the font files are rather large (several Megabytes) we leave the
> face open,
> so as not to re-load it every time we need to get metrics on a different
> glyph.
>
> Question:
>
> Can we safely use the stored FT_Face handle with other FT_Library
> instances?
> Assuming (per documentation suggestions) that we have a FT_Library per
> thread.
>
No you can't.

> The idea is to allow multiple threads to get glyph metrics by simultaneosly
> calling these methods:
> FT_Set_Char_Size()
> FT_Get_Char_Index()
> FT_Load_Glyph()
>
> Once we retreive the metrics we store each set of metrics in map hashed by
> glyph which is owned by the wrapper object.
> This map is protected by a lock of course.
>
> It seems to me, based on my understanding of the code, that there would be
> no way to allow each thread to access the metrics unless each thread calls 
> FT_New_Memory_Face()
> and has its own handle to the face.
>
Exactly.

> That seems sub-optimal.
>
The eye is in the beholder. Allowing what you want would make the design of
FreeType much more complicated and would also make it use more memory in all
cases.

And if your file is memory-mapped, you shouldn't have much performance
degradation from using several FT_Library/FT_Face in parallel anyway; and
each thread should go as fast as possible, without any potential for locking
or contention.

> I welcome suggestions on the fastest architecture to simulaneously retrieve
> font metrics with multiple threads.
>
> Thanks,
>
> Mike M.
>
> _______________________________________________
> Freetype-devel mailing list
> Freetype-devel@nongnu.org
> http://lists.nongnu.org/mailman/listinfo/freetype-devel
>
>
_______________________________________________
Freetype-devel mailing list
Freetype-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/freetype-devel

Reply via email to