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