aboutsummaryrefslogtreecommitdiff
path: root/src/main.cpp
diff options
context:
space:
mode:
authorFelix (xq) Queißner <git@mq32.de>2020-08-17 11:12:16 +0200
committerFelix (xq) Queißner <git@mq32.de>2020-08-17 11:12:16 +0200
commit7f0143b87433a40b651a1ea582c7dcd2fd22660b (patch)
tree39758129b7a03d2adae4c65913b1f9a3f57477cd /src/main.cpp
parent696660b24314d662e16f585deca7c0c2e732b63a (diff)
downloadkristall-7f0143b87433a40b651a1ea582c7dcd2fd22660b.tar.gz
Adds primitive support for emoji fonts.
Diffstat (limited to 'src/main.cpp')
-rw-r--r--src/main.cpp34
1 files changed, 33 insertions, 1 deletions
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 <QCommandLineParser>
#include <QDebug>
#include <QStandardPaths>
+#include <QFontDatabase>
#include <cassert>
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();