[pango] [pangocairo] Pick up font-options from cairo_t



commit 3e5769aca2200b9f20614b1b9ec71f1bcf057ffe
Author: Behdad Esfahbod <behdad behdad org>
Date:   Wed Nov 22 18:50:30 2017 -0800

    [pangocairo] Pick up font-options from cairo_t
    
    Now one can use cairo_set_font_options(), whereas before they had to
    use pango_cairo_context_set_font_options().  If the latter is used,
    it will override the former.
    
    Fixes https://bugzilla.gnome.org/show_bug.cgi?id=790747

 pango/pangocairo-context.c |   13 +++++++++++++
 1 files changed, 13 insertions(+), 0 deletions(-)
---
diff --git a/pango/pangocairo-context.c b/pango/pangocairo-context.c
index 9dd0235..5949c44 100644
--- a/pango/pangocairo-context.c
+++ b/pango/pangocairo-context.c
@@ -32,6 +32,7 @@ typedef struct _PangoCairoContextInfo PangoCairoContextInfo;
 struct _PangoCairoContextInfo
 {
   double dpi;
+  gboolean set_options_explicit;
 
   cairo_font_options_t *set_options;
   cairo_font_options_t *surface_options;
@@ -108,6 +109,12 @@ _pango_cairo_update_context (cairo_t      *cr,
   if (!info->surface_options)
     info->surface_options = cairo_font_options_create ();
   cairo_surface_get_font_options (target, info->surface_options);
+  if (!info->set_options_explicit)
+  {
+    if (!info->set_options)
+      info->set_options = cairo_font_options_create ();
+    cairo_get_font_options (cr, info->set_options);
+  }
 
   old_merged_options = info->merged_options;
   info->merged_options = NULL;
@@ -244,9 +251,15 @@ pango_cairo_context_set_font_options (PangoContext               *context,
     cairo_font_options_destroy (info->set_options);
 
   if (options)
+  {
     info->set_options = cairo_font_options_copy (options);
+    info->set_options_explicit = TRUE;
+  }
   else
+  {
     info->set_options = NULL;
+    info->set_options_explicit = FALSE;
+  }
 
   if (info->merged_options)
     {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]