From 8f4bd0c6bdce18905d22e03cf32c8d456dc8792a Mon Sep 17 00:00:00 2001 From: deepend-tildeclub Date: Wed, 8 Jul 2026 22:18:28 -0600 Subject: [PATCH] fix windows emoji font fallback --- src/fe-gtk/maingui.c | 10 +++++++++- src/fe-gtk/xtext.c | 12 ++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/fe-gtk/maingui.c b/src/fe-gtk/maingui.c index 6bdb618d..25e437ae 100644 --- a/src/fe-gtk/maingui.c +++ b/src/fe-gtk/maingui.c @@ -3515,7 +3515,10 @@ mg_apply_session_font_prefs (session_gui *gui) } if (gui->input_box && prefs.hex_gui_input_style) + { theme_manager_apply_entry_palette (gui->input_box, font); + mg_apply_emoji_fallback_widget (gui->input_box); + } if (gui->chanview) chanview_apply_theme (gui->chanview); @@ -4364,7 +4367,7 @@ mg_inputbox_rightclick (GtkEntry *entry, GtkWidget *menu) static const char *mg_emoji_family_fallback = #ifdef G_OS_WIN32 - "Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji, Apple Color Emoji, Twemoji Mozilla, EmojiOne Color"; + "Segoe UI Emoji, Noto Color Emoji, Twemoji Mozilla, EmojiOne Color, Apple Color Emoji, Segoe UI Symbol"; #else "Noto Color Emoji, Segoe UI Emoji, Apple Color Emoji, Twemoji Mozilla, EmojiOne Color"; #endif @@ -4470,7 +4473,11 @@ mg_apply_emoji_fallback_widget (GtkWidget *widget) if (!base_desc) return; +#ifdef G_OS_WIN32 + desc = mg_fontdesc_with_fallback (base_desc, TRUE); +#else desc = mg_fontdesc_with_fallback (base_desc, FALSE); +#endif pango_font_description_free (base_desc); if (!desc) return; @@ -4788,6 +4795,7 @@ mg_create_entry (session *sess, GtkWidget *box) if (prefs.hex_gui_input_style) mg_apply_entry_style (entry); + mg_apply_emoji_fallback_widget (entry); mg_apply_entry_scroll_artifact_fix (entry); g_object_set (G_OBJECT (entry), "show-emoji-icon", TRUE, NULL); diff --git a/src/fe-gtk/xtext.c b/src/fe-gtk/xtext.c index 296848ea..c7360ddb 100644 --- a/src/fe-gtk/xtext.c +++ b/src/fe-gtk/xtext.c @@ -601,6 +601,10 @@ static PangoFontDescription * backend_font_open_real (char *name) { PangoFontDescription *font; +#ifdef WIN32 + const char *family; + char *family_list; +#endif font = pango_font_description_from_string (name); if (font && pango_font_description_get_size (font) == 0) @@ -611,6 +615,14 @@ backend_font_open_real (char *name) if (!font) font = pango_font_description_from_string ("sans 11"); +#ifdef WIN32 + family = pango_font_description_get_family (font); + family_list = g_strdup_printf ("%s, Segoe UI Emoji, Noto Color Emoji, Twemoji Mozilla, Twitter Color Emoji, EmojiOne Color, EmojiOne Mozilla, Noto Emoji, Segoe UI Symbol, Symbola, Unifont", + family && *family ? family : "Sans"); + pango_font_description_set_family (font, family_list); + g_free (family_list); +#endif + return font; }