summarylogtreecommitdiffstats
path: root/Parse-Semibold-Fontnames.patch
diff options
context:
space:
mode:
authorDmitry Porunov2019-12-05 19:05:32 +0000
committerDmitry Porunov2019-12-05 19:05:32 +0000
commitbdf25e954ba734a6ee2a25ba7cdfbe402cfcbcb2 (patch)
tree199fc6ce0fba97b9010b38fd5f002766d7634daa /Parse-Semibold-Fontnames.patch
parent7c293b0c667cf6a541f1b83574ff739146ded7c8 (diff)
downloadaur-bdf25e954ba734a6ee2a25ba7cdfbe402cfcbcb2.tar.gz
Release k1.1.1
Diffstat (limited to 'Parse-Semibold-Fontnames.patch')
-rw-r--r--Parse-Semibold-Fontnames.patch83
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();