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

Reply via email to