Use same size for styled fonts.

This commit is contained in:
John Preston 2024-05-02 18:52:50 +04:00
parent 6e924177b7
commit 141c1b4a7e

View file

@ -251,15 +251,12 @@ struct Metrics {
const auto adjusted = [&](int size, const QFontMetricsF &metrics) { const auto adjusted = [&](int size, const QFontMetricsF &metrics) {
const auto full = metrics.tightBoundingRect(Full); const auto full = metrics.tightBoundingRect(Full);
const auto desiredTightAscent = -desiredFull.y();
const auto desiredTightHeight = desiredFull.height(); const auto desiredTightHeight = desiredFull.height();
const auto ascentAdd = basicMetrics.ascent() - desiredTightAscent;
const auto heightAdd = basicMetrics.height() - desiredTightHeight; const auto heightAdd = basicMetrics.height() - desiredTightHeight;
const auto tightAscent = -full.y();
const auto tightHeight = full.height(); const auto tightHeight = full.height();
return Metrics{ return Metrics{
.pixelSize = size, .pixelSize = size,
.ascent = tightAscent + ascentAdd, .ascent = basicMetrics.ascent(),
.height = tightHeight + heightAdd, .height = tightHeight + heightAdd,
}; };
}; };
@ -337,6 +334,10 @@ struct Metrics {
} }
font.setPixelSize(size); font.setPixelSize(size);
const auto adjust = (overriden && !skipSizeAdjustment);
const auto metrics = ComputeMetrics(font, adjust);
font.setPixelSize(metrics.pixelSize);
font.setWeight((flags & (FontFlag::Bold | FontFlag::Semibold)) font.setWeight((flags & (FontFlag::Bold | FontFlag::Semibold))
? QFont::DemiBold ? QFont::DemiBold
: QFont::Normal); : QFont::Normal);
@ -353,10 +354,6 @@ struct Metrics {
font.setUnderline(flags & FontFlag::Underline); font.setUnderline(flags & FontFlag::Underline);
font.setStrikeOut(flags & FontFlag::StrikeOut); font.setStrikeOut(flags & FontFlag::StrikeOut);
const auto adjust = (overriden && !skipSizeAdjustment);
const auto metrics = ComputeMetrics(font, adjust);
font.setPixelSize(metrics.pixelSize);
return { return {
.font = font, .font = font,
.ascent = metrics.ascent, .ascent = metrics.ascent,