summaryrefslogtreecommitdiff
path: root/pango/pangocoretext-fontmap.c
diff options
context:
space:
mode:
authorKhaled Hosny <khaledhosny@eglug.org>2019-08-01 11:19:18 +0200
committerKhaled Hosny <khaledhosny@eglug.org>2019-08-01 11:33:09 +0200
commit5c262fe5a515a68a134bf4fded59ceef5d0939a7 (patch)
treed6a1a2924ebfd7aa05cb318a6b3bea3cd4be1f69 /pango/pangocoretext-fontmap.c
parent3385ecf1485f5aa6faedb92917f6e5edf2f66e6d (diff)
downloadpango-5c262fe5a515a68a134bf4fded59ceef5d0939a7.tar.gz
coretext: Make “system-ui” alias work
Alias names need to be inserted into the font map or otherwise will be ignored and mapped to Sans (in pango_core_text_font_map_load_fontset()). Furthermore, there is no font named ”San Francisco” on macOS, the actual UI font is a hidden font called ”.SF NS Text” or something like that, and there an “.AppleSystemUIFont” alias that should be used instead.
Diffstat (limited to 'pango/pangocoretext-fontmap.c')
-rw-r--r--pango/pangocoretext-fontmap.c31
1 files changed, 15 insertions, 16 deletions
diff --git a/pango/pangocoretext-fontmap.c b/pango/pangocoretext-fontmap.c
index 240cb47a..96e13bab 100644
--- a/pango/pangocoretext-fontmap.c
+++ b/pango/pangocoretext-fontmap.c
@@ -158,7 +158,7 @@ get_real_family (const char *family_name)
else if (g_ascii_strcasecmp (family_name, "serif") == 0)
return "Times";
else if (g_ascii_strcasecmp (family_name, "system-ui") == 0)
- return "San Francisco";
+ return ".AppleSystemUIFont";
break;
}
@@ -1485,21 +1485,20 @@ pango_core_text_font_map_init (PangoCoreTextFontMap *ctfontmap)
}
/* Insert aliases */
- family = g_object_new (PANGO_TYPE_CORE_TEXT_FAMILY, NULL);
- family->family_name = g_strdup ("Sans");
- g_hash_table_insert (ctfontmap->families,
- g_utf8_casefold (family->family_name, -1), family);
-
- family = g_object_new (PANGO_TYPE_CORE_TEXT_FAMILY, NULL);
- family->family_name = g_strdup ("Serif");
- g_hash_table_insert (ctfontmap->families,
- g_utf8_casefold (family->family_name, -1), family);
-
- family = g_object_new (PANGO_TYPE_CORE_TEXT_FAMILY, NULL);
- family->family_name = g_strdup ("Monospace");
- family->is_monospace = TRUE;
- g_hash_table_insert (ctfontmap->families,
- g_utf8_casefold (family->family_name, -1), family);
+ /* Keep in sync with get_real_family() */
+ gchar* aliases[] = {
+ "Sans", "Serif", "system-ui", "cursive", "fantasy", "Monospace"
+ };
+
+ for (int i = 0; i < G_N_ELEMENTS(aliases); i++)
+ {
+ family = g_object_new (PANGO_TYPE_CORE_TEXT_FAMILY, NULL);
+ family->family_name = g_strdup (aliases[i]);
+ if (g_ascii_strcasecmp (family->family_name, "Monospace") == 0)
+ family->is_monospace = TRUE;
+ g_hash_table_insert (ctfontmap->families,
+ g_utf8_casefold (family->family_name, -1), family);
+ }
}
static void