[cairo] User font callbacks and user data

Torsten Schoenfeld kaffeetisch at gmx.de
Sun Oct 26 06:20:16 PDT 2008


Chris wrote:
> I noticed there were some user-font callbacks added in 1.8:
>   cairo_user_font_face_set_init_func
>   cairo_user_font_face_set_render_glyph_func
>   cairo_user_font_face_set_text_to_glyphs_func
>   cairo_user_font_face_set_unicode_to_glyph_func
> 
> I'm trying to implement these in a scripting language but I'm having 
> trouble because unlike the other callbacks these do not seem to have a 
> "user data" parameter.  This is necessary to proxy the C function call 
> to a function in the scripting language.
> 
> At first I was thinking I could set a user data on the font face but 
> then I realized that might not work because when the callbacks are 
> called they are using a scaled font type and not a font face.

I haven't looked into wrapping those myself, but if I understand the 
documentation[1] correctly, you can use cairo_font_face_set_user_data() to 
install font-face-specific user data.  Like a struct that contains all the 
information you need to marshal all the callbacks.  In your wrapper callbacks, 
you can then use cairo_scaled_font_get_font_face() to get the font face on which 
you can call cairo_font_face_get_user_data() to get your struct.

-Torsten

[1] http://cairographics.org/manual/cairo-user-font.html#cairo-user-font-face-create


More information about the cairo mailing list