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>
This commit is contained in:
Dirk Hohndel 2021-01-15 06:02:18 -08:00
parent 323e97c603
commit f26f71a80b

View file

@ -20,6 +20,7 @@
#include <QApplication> #include <QApplication>
#include <QFont> #include <QFont>
#include <QFontMetrics>
#include <QLocale> #include <QLocale>
#include <QLoggingCategory> #include <QLoggingCategory>
#include <QStringList> #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 // grab the system font size before we overwrite this when we load preferences
double initial_font_size = QGuiApplication::font().pointSizeF(); 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(); init_ui();
if (prefs.default_file_behavior == LOCAL_DEFAULT_FILE) if (prefs.default_file_behavior == LOCAL_DEFAULT_FILE)
set_filename(prefs.default_filename); set_filename(prefs.default_filename);