From 73d269db1a3a72a5a4b91c9d24b35a3c2f9fd927 Mon Sep 17 00:00:00 2001
From: wurstsalat <mailtrash@posteo.de>
Date: Thu, 26 May 2022 11:07:14 +0200
Subject: [PATCH] imprv: Avatars: Render emojis correctly

Fixes: #10905
---
 gajim/gtk/avatar.py     | 8 +++++++-
 gajim/gtk/emoji_data.py | 7 +++++++
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/gajim/gtk/avatar.py b/gajim/gtk/avatar.py
index 2deb055962..4883adb71f 100644
--- a/gajim/gtk/avatar.py
+++ b/gajim/gtk/avatar.py
@@ -38,6 +38,8 @@
 from gajim.common.const import StyleAttr
 
 from .const import DEFAULT_WORKSPACE_COLOR
+from .emoji_data import is_emoji
+from .emoji_data import get_emoji_font
 from .util import load_icon_surface
 from .util import load_pixbuf
 from .util import text_to_color
@@ -79,7 +81,11 @@ def generate_avatar(letters: str,
     context.fill()
 
     # Draw letters
-    context.select_font_face('sans-serif',
+    if is_emoji(letters):
+        font_face = get_emoji_font()
+    else:
+        font_face = 'sans-serif'
+    context.select_font_face(font_face,
                              cairo.FontSlant.NORMAL,
                              cairo.FontWeight.NORMAL)
     context.set_font_size(font_size)
diff --git a/gajim/gtk/emoji_data.py b/gajim/gtk/emoji_data.py
index 171e9c028b..e4c65741ff 100644
--- a/gajim/gtk/emoji_data.py
+++ b/gajim/gtk/emoji_data.py
@@ -17,6 +17,7 @@
 from typing import Optional
 
 import re
+import sys
 import weakref
 from enum import IntEnum
 from collections import OrderedDict
@@ -61,6 +62,12 @@ def get_emoji_pixbuf(codepoints: str) -> Optional[GdkPixbuf.Pixbuf]:
     return pixbuf
 
 
+def get_emoji_font() -> str:
+    if sys.platform == 'win32':
+        return 'Segoe UI Emoji'
+    return 'Noto Color Emoji'
+
+
 class EmojiData(OrderedDict):
     def __getitem__(self, key):
         try:
-- 
GitLab