diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2021-01-15 06:02:18 -0800 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2021-01-19 12:35:29 -0800 |
commit | f26f71a80b13a9ddf9428e520d74043747432e10 (patch) | |
tree | 7d2de9290bf5506e24b0a60a26ee854af2dd157e | |
parent | 323e97c60370f06bb30e57580c8c4fce39df95f7 (diff) | |
download | subsurface-f26f71a80b13a9ddf9428e520d74043747432e10.tar.gz |
mobile/UI: fix font size when OS font is given in px
Android appears to set its default font in pixels, not points. So guess
the point size based on the font metric information. This is not
perfect, but creates results that are good enough.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r-- | subsurface-mobile-main.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/subsurface-mobile-main.cpp b/subsurface-mobile-main.cpp index 2b224b595..454996fc7 100644 --- a/subsurface-mobile-main.cpp +++ b/subsurface-mobile-main.cpp @@ -20,6 +20,7 @@ #include <QApplication> #include <QFont> +#include <QFontMetrics> #include <QLocale> #include <QLoggingCategory> #include <QStringList> @@ -64,6 +65,14 @@ int main(int argc, char **argv) // grab the system font size before we overwrite this when we load preferences double initial_font_size = QGuiApplication::font().pointSizeF(); + if (initial_font_size < 0.0) { + // The OS provides a default font in pixels, not points; doing some crude math + // to reverse engineer that information by measuring the height of a 10pt font in pixels + QFont testFont; + testFont.setPointSizeF(10.0); + QFontMetrics fm(testFont); + initial_font_size = QGuiApplication::font().pixelSize() * 10.0 / fm.height(); + } init_ui(); if (prefs.default_file_behavior == LOCAL_DEFAULT_FILE) set_filename(prefs.default_filename); |