diff --git a/gajim/gtk/avatar.py b/gajim/gtk/avatar.py index 2deb055962cd5add39ea4b108cf8f193b0916f96..4883adb71fdf5ed3ede4d1c45de069c7ac741d14 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 171e9c028b8d1e89cd7108038f62f3b0bfbdec70..e4c65741ff0a94d4178f6c977a1d49c67f531b30 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: