summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>2021-05-06 07:57:45 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2021-05-07 11:11:24 +0000
commit2a2680ea22200baf1a87b0655bcb47ac468a3255 (patch)
tree281afe8d618cd8c98ad1b8cf58841d25ec5b6d06 /src
parent2334a452b9e5f6e17f36d9462d8a949670f33642 (diff)
macOS: Fix synthesized bold
When a user requested bold and there was no available font for this (which is quite common with CJK fonts and in fact is the case for the official Japanese font on the system), we should synthesize the boldness. This was done by checking if the requested font weight boldness matched the one in the font's traits, and if not, we flag the font boldness to be synthesized. But when initializing the font, we would first override the requested weight with the selected font's weight, *before* performing the check above. So even if there was a mismatch, we would not catch this and as a result, e.g. the system Japanese font would never be bold. [ChangeLog][macOS] Fixed an issue where boldness would not be correctly synthesized for families with no bold variant. Fixes: QTBUG-85634 Change-Id: I36da59d7689455e29cca283cb0724a0841095918 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> (cherry picked from commit 76d3cda88469137050f6aab4bbb8578061fe25f2) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'src')
-rw-r--r--src/gui/text/coretext/qfontengine_coretext.mm4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/gui/text/coretext/qfontengine_coretext.mm b/src/gui/text/coretext/qfontengine_coretext.mm
index 33a3f22e67..d1b13f73e9 100644
--- a/src/gui/text/coretext/qfontengine_coretext.mm
+++ b/src/gui/text/coretext/qfontengine_coretext.mm
@@ -253,13 +253,15 @@ void QCoreTextFontEngine::init()
};
QCFType<CFDictionaryRef> allTraits = CTFontCopyTraits(ctfont);
- fontDef.weight = QCoreTextFontEngine::qtWeightFromCFWeight(getTraitValue(allTraits, kCTFontWeightTrait));
int slant = static_cast<int>(getTraitValue(allTraits, kCTFontSlantTrait) * 500 + 500);
if (slant > 500 && !(traits & kCTFontItalicTrait))
fontDef.style = QFont::StyleOblique;
if (fontDef.weight >= QFont::Bold && !(traits & kCTFontBoldTrait) && !qEnvironmentVariableIsSet("QT_NO_SYNTHESIZED_BOLD"))
synthesisFlags |= SynthesizedBold;
+ else
+ fontDef.weight = QCoreTextFontEngine::qtWeightFromCFWeight(getTraitValue(allTraits, kCTFontWeightTrait));
+
if (fontDef.style != QFont::StyleNormal && !(traits & kCTFontItalicTrait) && !qEnvironmentVariableIsSet("QT_NO_SYNTHESIZED_ITALIC"))
synthesisFlags |= SynthesizedItalic;