diff options
author | Dmitry Porunov | 2019-12-05 19:05:32 +0000 |
---|---|---|
committer | Dmitry Porunov | 2019-12-05 19:05:32 +0000 |
commit | bdf25e954ba734a6ee2a25ba7cdfbe402cfcbcb2 (patch) | |
tree | 199fc6ce0fba97b9010b38fd5f002766d7634daa /Parse-Semibold-Fontnames.patch | |
parent | 7c293b0c667cf6a541f1b83574ff739146ded7c8 (diff) | |
download | aur-bdf25e954ba734a6ee2a25ba7cdfbe402cfcbcb2.tar.gz |
Release k1.1.1
Diffstat (limited to 'Parse-Semibold-Fontnames.patch')
-rw-r--r-- | Parse-Semibold-Fontnames.patch | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/Parse-Semibold-Fontnames.patch b/Parse-Semibold-Fontnames.patch new file mode 100644 index 000000000000..6ff255035c11 --- /dev/null +++ b/Parse-Semibold-Fontnames.patch @@ -0,0 +1,83 @@ +Submodule Telegram/lib_ui contains modified content +diff --git a/Telegram/lib_ui/ui/style/style_core_font.cpp b/Telegram/lib_ui/ui/style/style_core_font.cpp +index ad3a9e3..3cdf07a 100644 +--- a/Telegram/lib_ui/ui/style/style_core_font.cpp ++++ b/Telegram/lib_ui/ui/style/style_core_font.cpp +@@ -37,15 +37,55 @@ uint32 fontKey(int size, uint32 flags, int family) { + return (((uint32(family) << 10) | uint32(size)) << 4) | flags; + } + ++QString RemoveSemiboldFromName(const QString &familyName) { ++ auto removedSemibold = familyName; ++ removedSemibold.remove("Semibold", Qt::CaseInsensitive); ++ return removedSemibold.trimmed(); ++} ++ ++bool IsRealSemibold(const QString &familyName) { ++ const auto removedSemibold = RemoveSemiboldFromName(familyName); ++ ++ QFont originalFont(familyName); ++ QFont withoutSemiboldFont(removedSemibold); ++ withoutSemiboldFont.setStyleName("Semibold"); ++ ++ QFontInfo originalFontInfo(originalFont); ++ QFontInfo withoutSemiboldInfo(withoutSemiboldFont); ++ ++ if (originalFontInfo.family().trimmed().compare(familyName, Qt::CaseInsensitive) && ++ !withoutSemiboldInfo.family().trimmed().compare(removedSemibold, Qt::CaseInsensitive) && ++ !withoutSemiboldInfo.styleName().trimmed().compare("Semibold", Qt::CaseInsensitive)) { ++ return true; ++ } else { ++ return false; ++ } ++} ++ ++QString ParseFamilyName(const QString &familyName) { ++ if (IsRealSemibold(familyName)) { ++ return RemoveSemiboldFromName(familyName); ++ } else { ++ return familyName; ++ } ++} ++ + bool ValidateFont(const QString &familyName, int flags = 0) { +- QFont checkFont(familyName); ++ const auto parsedFamily = ParseFamilyName(familyName); ++ ++ QFont checkFont(parsedFamily); + checkFont.setPixelSize(13); + checkFont.setBold(flags & style::internal::FontBold); + checkFont.setItalic(flags & style::internal::FontItalic); + checkFont.setUnderline(flags & style::internal::FontUnderline); + checkFont.setStyleStrategy(QFont::PreferQuality); ++ ++ if (IsRealSemibold(familyName)) { ++ checkFont.setStyleName("Semibold"); ++ } ++ + auto realFamily = QFontInfo(checkFont).family(); +- if (realFamily.trimmed().compare(familyName, Qt::CaseInsensitive)) { ++ if (realFamily.trimmed().compare(parsedFamily, Qt::CaseInsensitive)) { + UI_LOG(("Font Error: could not resolve '%1' font, got '%2'.").arg(familyName).arg(realFamily)); + return false; + } +@@ -238,7 +278,7 @@ int registerFontFamily(const QString &family) { + } + + FontData::FontData(int size, uint32 flags, int family, Font *other) +-: f(GetFontOverride(fontFamilies[family], flags)) ++: f(ParseFamilyName(GetFontOverride(fontFamilies[family], flags))) + , m(f) + , _size(size) + , _flags(flags) +@@ -261,6 +301,10 @@ FontData::FontData(int size, uint32 flags, int family, Font *other) + f.setStrikeOut(_flags & FontStrikeOut); + f.setStyleStrategy(QFont::PreferQuality); + ++ if (IsRealSemibold(GetFontOverride(fontFamilies[family], flags))) { ++ f.setStyleName("Semibold"); ++ } ++ + m = QFontMetrics(f); + height = m.height(); + ascent = m.ascent(); |