Fix adjustment of size for modified fonts.

This commit is contained in:
John Preston 2024-05-03 11:25:01 +04:00
parent 5b8eb3a5b8
commit db8c3d16e8

View file

@ -314,8 +314,7 @@ struct Metrics {
[[nodiscard]] FontResolveResult ResolveFont( [[nodiscard]] FontResolveResult ResolveFont(
const QString &family, const QString &family,
FontFlags flags, FontFlags flags,
int size, int size) {
bool skipSizeAdjustment) {
auto font = QFont(); auto font = QFont();
const auto monospace = (flags & FontFlag::Monospace) != 0; const auto monospace = (flags & FontFlag::Monospace) != 0;
@ -334,7 +333,7 @@ struct Metrics {
} }
font.setPixelSize(size); font.setPixelSize(size);
const auto adjust = !skipSizeAdjustment && (overriden || system); const auto adjust = (overriden || system);
const auto metrics = ComputeMetrics(font, adjust); const auto metrics = ComputeMetrics(font, adjust);
font.setPixelSize(metrics.pixelSize); font.setPixelSize(metrics.pixelSize);
@ -354,13 +353,14 @@ struct Metrics {
font.setUnderline(flags & FontFlag::Underline); font.setUnderline(flags & FontFlag::Underline);
font.setStrikeOut(flags & FontFlag::StrikeOut); font.setStrikeOut(flags & FontFlag::StrikeOut);
const auto index = (family == Custom) ? 0 : RegisterFontFamily(family);
return { return {
.font = font, .font = font,
.ascent = metrics.ascent, .ascent = metrics.ascent,
.height = metrics.height, .height = metrics.height,
.iascent = int(base::SafeRound(metrics.ascent)), .iascent = int(base::SafeRound(metrics.ascent)),
.iheight = int(base::SafeRound(metrics.height)), .iheight = int(base::SafeRound(metrics.height)),
.requestedFamily = RegisterFontFamily(family), .requestedFamily = index,
.requestedSize = size, .requestedSize = size,
.requestedFlags = flags, .requestedFlags = flags,
}; };
@ -506,8 +506,7 @@ void Font::init(
ResolveFont( ResolveFont(
family ? FontFamilies[family] : Custom, family ? FontFamilies[family] : Custom,
flags, flags,
size, size),
family != 0),
modified)).first; modified)).first;
QtFontsKeys.emplace(QtFontKey(i->second->data.f), key); QtFontsKeys.emplace(QtFontKey(i->second->data.f), key);
} }
@ -515,7 +514,7 @@ void Font::init(
} }
OwnedFont::OwnedFont(const QString &custom, FontFlags flags, int size) OwnedFont::OwnedFont(const QString &custom, FontFlags flags, int size)
: _data(ResolveFont(custom, flags, size, false), nullptr) { : _data(ResolveFont(custom, flags, size), nullptr) {
_font._data = &_data; _font._data = &_data;
} }