From f5e3d2111399161ff9434997e855da5f35470b4b Mon Sep 17 00:00:00 2001 From: RadRussianRus Date: Tue, 4 Feb 2020 17:57:36 +0300 Subject: [PATCH] Option to use original font metrics --- ui/style/style_core_font.cpp | 23 ++++++++++++++++++++--- ui/style/style_core_font.h | 1 + 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/ui/style/style_core_font.cpp b/ui/style/style_core_font.cpp index c753ae9..5c21a90 100644 --- a/ui/style/style_core_font.cpp +++ b/ui/style/style_core_font.cpp @@ -171,6 +171,7 @@ QString CustomMainFont; QString CustomSemiboldFont; bool CustomSemiboldIsBold = false; bool UseSystemFont = false; +bool UseOriginalMetrics = false; } // namespace @@ -194,6 +195,10 @@ void SetUseSystemFont(bool isSystemFont) { UseSystemFont = isSystemFont; } +void SetUseOriginalMetrics(bool isOriginal) { + UseOriginalMetrics = isOriginal; +} + void StartFonts() { if (Started) { return; @@ -338,9 +343,21 @@ FontData::FontData(int size, uint32 flags, int family, Font *other) } m = QFontMetrics(f); - height = m.height(); - ascent = m.ascent(); - descent = m.descent(); + + if (UseOriginalMetrics) { + QFont originalFont(fontFamilies[family]); + originalFont.setPixelSize(size); + auto mOrig = QFontMetrics(originalFont); + + height = mOrig.height(); + ascent = mOrig.ascent(); + descent = mOrig.descent(); + } else { + height = m.height(); + ascent = m.ascent(); + descent = m.descent(); + } + spacew = width(QLatin1Char(' ')); elidew = width("..."); } diff --git a/ui/style/style_core_font.h b/ui/style/style_core_font.h index d9cd9b1..f936290 100644 --- a/ui/style/style_core_font.h +++ b/ui/style/style_core_font.h @@ -18,6 +18,7 @@ void SetMainFont(const QString &familyName); void SetSemiboldFont(const QString &familyName); void SetSemiboldIsBold(bool isBold); void SetUseSystemFont(bool isSystemFont); +void SetUseOriginalMetrics(bool isOriginal); void StartFonts(); [[nodiscard]] QString GetFontOverride(const QString &familyName, int32 flags = 0);