[pango/pango2] coretext: Make cairo support work
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pango/pango2] coretext: Make cairo support work
- Date: Sun, 19 Jun 2022 14:04:08 +0000 (UTC)
commit 003e381372c2d9b3ec9f34145ed27eb2c7b73ac5
Author: Matthias Clasen <mclasen redhat com>
Date: Sun Jun 19 07:03:22 2022 -0700
coretext: Make cairo support work
pango/pangocairo-font.c | 39 +++++++++++++++++++++++++++++++++++++--
1 file changed, 37 insertions(+), 2 deletions(-)
---
diff --git a/pango/pangocairo-font.c b/pango/pangocairo-font.c
index 1fc629fb..4c516d3e 100644
--- a/pango/pangocairo-font.c
+++ b/pango/pangocairo-font.c
@@ -35,6 +35,14 @@
#include "pango-userface-private.h"
#include "pango-font-private.h"
+#if defined (HAVE_CORE_TEXT)
+
+#include <Carbon/Carbon.h>
+#include <cairo-quartz.h>
+#include <hb-coretext.h>
+
+#else
+
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wundef"
#include <cairo-ft.h>
@@ -43,6 +51,8 @@
#include <hb-ft.h>
#include <freetype/ftmm.h>
+#endif
+
#define PANGO_CAIRO_FONT_PRIVATE(font) \
((PangoCairoFontPrivate *) \
(font == NULL ? NULL : \
@@ -77,8 +87,6 @@ _pango_cairo_font_private_scaled_font_data_destroy (PangoCairoFontPrivateScaledF
}
}
-static FT_Library ft_library;
-
static cairo_user_data_key_t cairo_user_data;
static cairo_status_t
@@ -147,6 +155,31 @@ create_font_face_for_user_font (PangoFont *font)
return cairo_face;
}
+#if defined (HAVE_CORE_TEXT)
+
+static cairo_font_face_t *
+create_font_face_for_hb_font (PangoFont *font)
+{
+ hb_font *hbfont;
+ CTFontRef ctfont;
+ CGFontRef cgfont;
+ cairo_font_face *cairo_face;
+
+ hbfont = pango_font_get_hb_font (font);
+ ctfont = hb_coretext_font_get_ct_font (hbfont);
+ cgfont = CTFontCopyGraphicsFont (ctfont, NULL);
+
+ cairo_face = cairo_quartz_font_create_for_cgfont (cgfont);
+
+ CFRelease (cgfont);
+
+ return cairo_face;
+}
+
+#else
+
+static FT_Library ft_library;
+
static cairo_font_face_t *
create_font_face_for_hb_font (PangoFont *font)
{
@@ -201,6 +234,8 @@ create_font_face_for_hb_font (PangoFont *font)
return cairo_face;
}
+#endif
+
static cairo_scaled_font_t *
_pango_cairo_font_private_get_scaled_font (PangoCairoFontPrivate *cf_priv)
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]