diff options
author | Khaled Hosny <khaledhosny@eglug.org> | 2019-08-01 11:19:18 +0200 |
---|---|---|
committer | Khaled Hosny <khaledhosny@eglug.org> | 2019-08-01 11:33:09 +0200 |
commit | 5c262fe5a515a68a134bf4fded59ceef5d0939a7 (patch) | |
tree | d6a1a2924ebfd7aa05cb318a6b3bea3cd4be1f69 /pango | |
parent | 3385ecf1485f5aa6faedb92917f6e5edf2f66e6d (diff) | |
download | pango-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')
-rw-r--r-- | pango/pangocoretext-fontmap.c | 31 |
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 |