lance: Handle unspecified size or weight in setFont command

We have test cases that call setFont without a specified weight, in
which case we would end up parsing an empty string into a number,
giving a weight of 0. This weight would in turn result in the
thinnest font on the system, which presumably was not the intent.

We now use default sizes and weights (similar to the default QFont
constructor arguments) if we're missing those arguments to setFont.

Pick-to: 6.2 6.3 5.15
Change-Id: I5a96f08cfa1b9e4f1de5edee6bf69ddd46f0ce92
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
This commit is contained in:
Tor Arne Vestbø 2022-03-31 14:03:52 +02:00
parent 5578b47092
commit 496bf5a946

View File

@ -2144,19 +2144,27 @@ void PaintCommands::command_setFont(QRegularExpressionMatch re)
{
QStringList caps = re.capturedTexts();
QString family = caps.at(1);
int size = convertToInt(caps.at(2));
int weight = translateEnum(fontWeightTable, re.captured(3).toLower(), 5);
if (weight != -1) {
switch (weight) {
case 0: weight = QFont::Light; break;
case 1: weight = QFont::Normal; break;
case 2: weight = QFont::DemiBold; break;
case 3: weight = QFont::Bold; break;
case 4: weight = QFont::Black; break;
}
} else {
weight = convertToInt(re.captured(3));
int size = -1; // Default
QString sizeArg = caps.at(2);
if (!sizeArg.isEmpty())
size = convertToInt(caps.at(2));
int weight = -1; // Default
QString weightArg = caps.at(3);
if (!weightArg.isEmpty()) {
weight = translateEnum(fontWeightTable, weightArg.toLower(), 5);
if (weight != -1) {
switch (weight) {
case 0: weight = QFont::Light; break;
case 1: weight = QFont::Normal; break;
case 2: weight = QFont::DemiBold; break;
case 3: weight = QFont::Bold; break;
case 4: weight = QFont::Black; break;
}
} else {
weight = convertToInt(weightArg);
}
}
bool italic = caps.at(4).toLower() == "true" || caps.at(4).toLower() == "italic";