From 7f0143b87433a40b651a1ea582c7dcd2fd22660b Mon Sep 17 00:00:00 2001 From: "Felix (xq) Queißner" Date: Mon, 17 Aug 2020 11:12:16 +0200 Subject: Adds primitive support for emoji fonts. --- src/main.cpp | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) (limited to 'src/main.cpp') diff --git a/src/main.cpp b/src/main.cpp index 9be807e..8de3530 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include ProtocolSetup kristall::protocols; @@ -50,6 +51,36 @@ static QDir derive_dir(QDir const & parent, QString subdir) return child; } +static void addEmojiSubstitutions() +{ + QFontDatabase db; + + auto const families = db.families(); + + // Provide OpenMoji font for a safe fallback + QFontDatabase::addApplicationFont(":/fonts/OpenMoji-Color.ttf"); + QFontDatabase::addApplicationFont(":/fonts/NotoColorEmoji.ttf"); + + QStringList emojiFonts = { + // Use system fonts on windows/mac + "Apple Color Emoji", + "Segoe UI Emoji", + + // Provide common fonts as a fallback: + // "Noto Color Emoji", // this font seems to replace a lot of text characters? + // "JoyPixels", // this font seems to replace a lot of text characters? + + // Built-in font fallback + "OpenMoji", + }; + + for(auto const & family: families) + { + auto current = QFont::substitutes(family); + current << emojiFonts; + QFont::insertSubstitutions(family, current); + } +} int main(int argc, char *argv[]) @@ -61,6 +92,8 @@ int main(int argc, char *argv[]) kristall::clipboard = app.clipboard(); + addEmojiSubstitutions(); + QCommandLineParser cli_parser; cli_parser.addVersionOption(); cli_parser.addHelpOption(); @@ -261,7 +294,6 @@ int main(int argc, char *argv[]) } app_settings.endGroup(); - w.show(); int exit_code = app.exec(); -- cgit v1.2.3