Adapt to cairo changes

Adapt to the api in the cairo MR that will be used,
and make the code build with older cairo.
diff --git a/meson.build b/meson.build
index 07ed493..9819d80 100644
--- a/meson.build
+++ b/meson.build
@@ -211,6 +211,7 @@
   else
     check_funcs += [['cairo_user_font_face_set_render_color_glyph_func', {'deps': cairo_dep}]]
     check_funcs += [['cairo_font_options_get_custom_palette_color', {'deps': cairo_dep}]]
+    check_funcs += [['cairo_user_scaled_font_get_foreground_source', {'deps': cairo_dep}]]
   endif
 endif
 
diff --git a/src/hb-cairo-utils.cc b/src/hb-cairo-utils.cc
index 1eeee7a..0d6a7e4 100644
--- a/src/hb-cairo-utils.cc
+++ b/src/hb-cairo-utils.cc
@@ -287,12 +287,14 @@
   for (unsigned i = 0; i < len; i++)
     if ((*stops)[i].is_foreground)
     {
+#ifdef HAVE_CAIRO_USER_SCALED_FONT_GET_FOREGROUND_SOURCE
       double r, g, b, a;
-      cairo_pattern_t *foreground = cairo_user_scaled_font_get_foreground_source (c->scaled_font);
+      cairo_pattern_t *foreground = cairo_user_scaled_font_get_foreground_source (c->scaled_font, true);
       if (cairo_pattern_get_rgba (foreground, &r, &g, &b, &a) == CAIRO_STATUS_SUCCESS)
         (*stops)[i].color = HB_COLOR (round (b * 255.), round (g * 255.), round (r * 255.),
                                       round (a * hb_color_get_alpha ((*stops)[i].color)));
       else
+#endif
         (*stops)[i].color = HB_COLOR (0, 0, 0, hb_color_get_alpha ((*stops)[i].color));
     }
 
diff --git a/src/hb-cairo.cc b/src/hb-cairo.cc
index 0033ea5..64bcc63 100644
--- a/src/hb-cairo.cc
+++ b/src/hb-cairo.cc
@@ -253,11 +253,13 @@
 
   if (use_foreground)
   {
+#ifdef HAVE_CAIRO_USER_SCALED_FONT_GET_FOREGROUND_SOURCE
     double r, g, b, a;
-    cairo_pattern_t *foreground = cairo_user_scaled_font_get_foreground_source (c->scaled_font);
+    cairo_pattern_t *foreground = cairo_user_scaled_font_get_foreground_source (c->scaled_font, true);
     if (cairo_pattern_get_rgba (foreground, &r, &g, &b, &a) == CAIRO_STATUS_SUCCESS)
       cairo_set_source_rgba (cr, r, g, b, a * hb_color_get_alpha (color) / 255.);
     else
+#endif
       cairo_set_source_rgba (cr, 0, 0, 0, hb_color_get_alpha (color) / 255.);
   }
   else