util/helper-cairo.cc | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+)
New commits: commit 8656408572c2685f278a3b742ee69c767c29788c Author: Behdad Esfahbod <[email protected]> Date: Tue Jul 8 18:10:20 2014 -0400 [util] Fix hb-view rendering with --font-funcs=ot diff --git a/util/helper-cairo.cc b/util/helper-cairo.cc index 0ecf7f4..ee940ae 100644 --- a/util/helper-cairo.cc +++ b/util/helper-cairo.cc @@ -60,6 +60,15 @@ _cairo_eps_surface_create_for_stream (cairo_write_func_t write_func, # endif #endif + +static FT_Library ft_library; + +static inline +void free_ft_library (void) +{ + FT_Done_FreeType (ft_library); +} + cairo_scaled_font_t * helper_cairo_create_scaled_font (const font_options_t *font_opts, double font_size) @@ -69,10 +78,26 @@ helper_cairo_create_scaled_font (const font_options_t *font_opts, cairo_font_face_t *cairo_face; FT_Face ft_face = hb_ft_font_get_face (font); if (!ft_face) + { + if (!ft_library) + { + FT_Init_FreeType (&ft_library); +#ifdef HAVE_ATEXIT + atexit (free_ft_library); +#endif + } + FT_New_Face (ft_library, + font_opts->font_file, + font_opts->face_index, + &ft_face); + } + if (!ft_face) + { /* This allows us to get some boxes at least... */ cairo_face = cairo_toy_font_face_create ("@cairo:sans", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL); + } else cairo_face = cairo_ft_font_face_create_for_ft_face (ft_face, 0); cairo_matrix_t ctm, font_matrix; _______________________________________________ HarfBuzz mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/harfbuzz
