diff options
| author | Felix (xq) Queißner <git@mq32.de> | 2020-08-17 11:12:16 +0200 |
|---|---|---|
| committer | Felix (xq) Queißner <git@mq32.de> | 2020-08-17 11:12:16 +0200 |
| commit | 7f0143b87433a40b651a1ea582c7dcd2fd22660b (patch) | |
| tree | 39758129b7a03d2adae4c65913b1f9a3f57477cd /src | |
| parent | 696660b24314d662e16f585deca7c0c2e732b63a (diff) | |
| download | kristall-7f0143b87433a40b651a1ea582c7dcd2fd22660b.tar.gz | |
Adds primitive support for emoji fonts.
Diffstat (limited to 'src')
| -rw-r--r-- | src/about/updates.gemini | 5 | ||||
| -rw-r--r-- | src/documentstyle.cpp | 28 | ||||
| -rw-r--r-- | src/fonts.qrc | 6 | ||||
| -rw-r--r-- | src/fonts/NotoColorEmoji.ttf | bin | 0 -> 9723244 bytes | |||
| -rw-r--r-- | src/fonts/OpenMoji-Color.ttf | bin | 0 -> 13556148 bytes | |||
| -rw-r--r-- | src/kristall.pro | 5 | ||||
| -rw-r--r-- | src/main.cpp | 34 | ||||
| -rw-r--r-- | src/protocols/gopherclient.cpp | 1 |
8 files changed, 73 insertions, 6 deletions
diff --git a/src/about/updates.gemini b/src/about/updates.gemini index c9e4a56..5cd7074 100644 --- a/src/about/updates.gemini +++ b/src/about/updates.gemini @@ -1,5 +1,10 @@ # Kristall Changelog +## 0.4 - Improved user experience +* Basic Emoji rendering support using OpenMoji +* +* + ## 0.3 - TLS and security * Adds support for transient client certificates * Adds support for permanent client certificates diff --git a/src/documentstyle.cpp b/src/documentstyle.cpp index 7056cec..5f31a5f 100644 --- a/src/documentstyle.cpp +++ b/src/documentstyle.cpp @@ -265,7 +265,7 @@ bool DocumentStyle::load(QSettings &settings) margin = settings.value("margins").toDouble(); theme = Theme(settings.value("theme").toInt()); } - return true; + break; } case 1: { theme = Theme(settings.value("theme", int(theme)).toInt()); @@ -318,10 +318,32 @@ bool DocumentStyle::load(QSettings &settings) settings.endGroup(); } - return true; } + default: + return false; } - return false; + + + + // Patch font lists to allow improved emoji display: + + QStringList emojiFonts = { "Apple Color Emoji", "Segoe UI Emoji", "Twitter Color Emoji", "Noto Color Emoji", "JoyPixels" }; + + QFont::insertSubstitutions(h1_font.family(), emojiFonts); + QFont::insertSubstitutions(h2_font.family(), emojiFonts); + QFont::insertSubstitutions(h3_font.family(), emojiFonts); + QFont::insertSubstitutions(standard_font.family(), emojiFonts); + QFont::insertSubstitutions(preformatted_font.family(), emojiFonts); + + // from docs: + // > After substituting a font, you must trigger the updating of the font by destroying and re-creating all QFont objects. + h1_font.fromString(h1_font.toString()); + h2_font.fromString(h2_font.toString()); + h3_font.fromString(h3_font.toString()); + standard_font.fromString(standard_font.toString()); + preformatted_font.fromString(preformatted_font.toString()); + + return true; } DocumentStyle DocumentStyle::derive(const QUrl &url) const diff --git a/src/fonts.qrc b/src/fonts.qrc new file mode 100644 index 0000000..960ca97 --- /dev/null +++ b/src/fonts.qrc @@ -0,0 +1,6 @@ +<RCC> + <qresource prefix="/"> + <file>fonts/OpenMoji-Color.ttf</file> + <file>fonts/NotoColorEmoji.ttf</file> + </qresource> +</RCC> diff --git a/src/fonts/NotoColorEmoji.ttf b/src/fonts/NotoColorEmoji.ttf Binary files differnew file mode 100644 index 0000000..3fcd23f --- /dev/null +++ b/src/fonts/NotoColorEmoji.ttf diff --git a/src/fonts/OpenMoji-Color.ttf b/src/fonts/OpenMoji-Color.ttf Binary files differnew file mode 100644 index 0000000..af3f779 --- /dev/null +++ b/src/fonts/OpenMoji-Color.ttf diff --git a/src/kristall.pro b/src/kristall.pro index eca386e..9f2324a 100644 --- a/src/kristall.pro +++ b/src/kristall.pro @@ -51,10 +51,10 @@ macx { # Homebrew include paths INCLUDEPATH += /usr/local/opt/qt/include LIBS += -L/usr/local/opt/qt/lib - + INCLUDEPATH += /usr/local/opt/openssl/include LIBS += -L/usr/local/opt/openssl/lib - + ICON = icons/AppIcon.icns } @@ -177,6 +177,7 @@ else: unix:!android: target.path = /opt/$${TARGET}/bin !isEmpty(target.path): INSTALLS += target RESOURCES += \ + ./fonts.qrc \ ../lib/BreezeStyleSheets/breeze.qrc \ builtins.qrc \ icons.qrc 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(); diff --git a/src/protocols/gopherclient.cpp b/src/protocols/gopherclient.cpp index 63c35ca..658a3de 100644 --- a/src/protocols/gopherclient.cpp +++ b/src/protocols/gopherclient.cpp @@ -97,6 +97,7 @@ void GopherClient::on_finished() { if(not was_cancelled) { + this->on_readRead(); emit this->requestComplete(this->body, mime); was_cancelled = true; } |
