summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2021-08-31 18:28:22 +0000
committerMatthias Clasen <mclasen@redhat.com>2021-08-31 18:28:22 +0000
commit2555d464361e96542ec9d9b2383e7ec0fe42dad3 (patch)
tree56a9a1db51f66913be9629a0d59cc420476cd244
parent75bb4625c400979981f16377b9ae7dfaad540bd3 (diff)
parent01b028153ecd8e8398d578765de20421f8a0801a (diff)
downloadpango-2555d464361e96542ec9d9b2383e7ec0fe42dad3.tar.gz
Merge branch 'coretext-font-describe' into 'main'
coretext: Set size on font descriptions Closes #610 See merge request GNOME/pango!464
-rw-r--r--pango/pangocoretext-fontmap.c7
-rw-r--r--pango/pangocoretext.c7
-rw-r--r--tests/test-font.c17
3 files changed, 17 insertions, 14 deletions
diff --git a/pango/pangocoretext-fontmap.c b/pango/pangocoretext-fontmap.c
index 0980303b..3d8544c6 100644
--- a/pango/pangocoretext-fontmap.c
+++ b/pango/pangocoretext-fontmap.c
@@ -407,6 +407,8 @@ _pango_core_text_font_description_from_ct_font_descriptor (CTFontDescriptorRef d
char *family_name;
char *style_name;
PangoFontDescription *font_desc;
+ CFNumberRef cf_number;
+ CGFloat pointsize;
font_desc = pango_font_description_new ();
@@ -419,6 +421,11 @@ _pango_core_text_font_description_from_ct_font_descriptor (CTFontDescriptorRef d
pango_font_description_set_family (font_desc, family_name);
g_free (family_name);
+ /* Size (if we have one) */
+ cf_number = CTFontDescriptorCopyAttribute (desc, kCTFontSizeAttribute);
+ if (cf_number != NULL && CFNumberGetValue (cf_number, kCFNumberCGFloatType, &pointsize))
+ pango_font_description_set_size (font_desc, (pointsize / (96./72.)) * 1024);
+
/* Weight */
pango_font_description_set_weight (font_desc,
ct_font_descriptor_get_weight (desc));
diff --git a/pango/pangocoretext.c b/pango/pangocoretext.c
index ccb3f674..25358cac 100644
--- a/pango/pangocoretext.c
+++ b/pango/pangocoretext.c
@@ -64,10 +64,13 @@ pango_core_text_font_describe (PangoFont *font)
PangoCoreTextFont *ctfont = (PangoCoreTextFont *)font;
PangoCoreTextFontPrivate *priv = ctfont->priv;
CTFontDescriptorRef ctfontdesc;
+ PangoFontDescription *desc;
- ctfontdesc = pango_core_text_font_key_get_ctfontdescriptor (priv->key);
+ ctfontdesc = CTFontCopyFontDescriptor (priv->font_ref);
+ desc = _pango_core_text_font_description_from_ct_font_descriptor (ctfontdesc);
+ CFRelease (ctfontdesc);
- return _pango_core_text_font_description_from_ct_font_descriptor (ctfontdesc);
+ return desc;
}
static PangoCoverage *
diff --git a/tests/test-font.c b/tests/test-font.c
index 1d3290c7..c3a1c29f 100644
--- a/tests/test-font.c
+++ b/tests/test-font.c
@@ -258,20 +258,19 @@ test_roundtrip_plain (void)
PangoFont *font;
#ifdef HAVE_CARBON
- /* We probably don't have the right fonts */
- g_test_skip ("Skipping font-dependent tests on OS X");
- return;
+ desc = pango_font_description_from_string ("Helvetica 11");
+#else
+ desc = pango_font_description_from_string ("Cantarell 11");
#endif
fontmap = pango_cairo_font_map_get_default ();
context = pango_font_map_create_context (fontmap);
- desc = pango_font_description_from_string ("Cantarell 11");
font = pango_context_load_font (context, desc);
desc2 = pango_font_describe (font);
- g_assert (pango_font_description_equal (desc2, desc));
+ g_assert_true (pango_font_description_equal (desc2, desc));
pango_font_description_free (desc2);
g_object_unref (font);
@@ -287,12 +286,6 @@ test_roundtrip_emoji (void)
PangoFontDescription *desc, *desc2;
PangoFont *font;
-#ifdef HAVE_CARBON
- /* We probably don't have the right fonts */
- g_test_skip ("Skipping font-dependent tests on OS X");
- return;
-#endif
-
fontmap = pango_cairo_font_map_get_default ();
context = pango_font_map_create_context (fontmap);
@@ -308,7 +301,7 @@ test_roundtrip_emoji (void)
*/
pango_font_description_unset_fields (desc, PANGO_FONT_MASK_FAMILY);
pango_font_description_unset_fields (desc2, PANGO_FONT_MASK_FAMILY);
- g_assert (pango_font_description_equal (desc2, desc));
+ g_assert_true (pango_font_description_equal (desc2, desc));
pango_font_description_free (desc2);
g_object_unref (font);