On 18/5/15 13:50, Martin Hosken wrote:
Dear All,

A number of people have asked me for a mechanism by which graphite
may be dynamically loaded only when a Graphite font is used. I've
struggled with the notion of this, but I think I understand it now. I
hope that this can help everyone to have what they want for minimal
cost.

I've submitted a pull request on github for a patch that does the
above.

This patch adds dynamic loading of graphite support for graphite
fonts in harfbuzz. The three way configure option is now:
--with-graphite2=no means no graphite support. --with-graphite2=yes
means to build and link against an existing graphite library.
--with-graphite2=auto means to build independently of any graphite
library but to attempt to dynamically load graphite when a graphite
font is encountered.

This patch has been built and tested on linux only at the moment.

AFAICS, the patch will leak the graphite2_funcs_t record that's attached to the face, as it fails to free it in _hb_graphite2_shaper_face_data_destroy.

(It also fails to free it if _hb_graphite2_shaper_face_data_create hits an error in gr_make_face, or if hb_graphite2_load_gr fails to find one of the expected functions in the library.)

I wonder if it'd be better to ALWAYS do the dynamic-load thing, and scrap the HAVE_GRAPHITE2_STATIC option? This would substantially clean up the #if-clutter that currently makes things look a bit hairy, and probably make it easier to verify that the code paths are all sane.

As for whether to do this in general -- I think that if we can ensure the code is clean enough that it won't introduce new leaks (see above) or vulnerabilities, it'd provide a crucial feature that's currently lacking for most client apps. In Gecko, we don't need this as we have a separate Graphite codepath that's independent of harfbuzz (though we could consider changing that some day), but for software that uses a harfbuzz rendering path exclusively, this could offer a valuable added capability.

JK
_______________________________________________
HarfBuzz mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/harfbuzz

Reply via email to