diff options
Diffstat (limited to 'pango/pangocairo-win32font.c')
-rw-r--r-- | pango/pangocairo-win32font.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/pango/pangocairo-win32font.c b/pango/pangocairo-win32font.c index 5b860bab..0141c414 100644 --- a/pango/pangocairo-win32font.c +++ b/pango/pangocairo-win32font.c @@ -75,6 +75,32 @@ pango_cairo_win32_font_create_font_face (PangoCairoFont *font) { PangoCairoWin32Font *cwfont = PANGO_CAIRO_WIN32_FONT (font); PangoWin32Font *win32font = &cwfont->font; + void *dwrite_font_face = NULL; + gpointer dwrite_font = NULL; + +#ifdef HAVE_CAIRO_WIN32_DIRECTWRITE + dwrite_font_face = pango_win32_font_get_dwrite_font_face (win32font); + if (dwrite_font_face != NULL) + { + cairo_font_face_t *cairo_face = cairo_dwrite_font_face_create_for_dwrite_fontface (dwrite_font_face); + + if (cairo_face != NULL) + { + static const cairo_user_data_key_t key; + + cairo_font_face_set_user_data (cairo_face, &key, + dwrite_font_face, + (cairo_destroy_func_t) pango_win32_dwrite_font_face_release); + + return cairo_face; + } + else + { + g_warning ("cairo_font_face creation failed with DirectWrite, fallback to GDI"); + pango_win32_dwrite_font_face_release (dwrite_font_face); + } + } +#endif return cairo_win32_font_face_create_for_logfontw (&win32font->logfontw); } |