QFontMetrics::horizontalAdvance() возвращает противоречивые результаты
Я работаю над функцией, которая определяет максимальное количество символов, которые могут поместиться в заданную ширину (в пикселях), на основе самого широкого символа в строке, а затем соответствующим образом обрезает строку. Я использую метод horizontalAdvance QFontMetrics и заметил некоторые несоответствия.
Возьмем, к примеру, следующий код:
QFont myFont("Times New Roman", 12);
QFontMetrics fm(myFont);
qDebug() << "Width of 'w': " << fm.horizontalAdvance('w');
qDebug() << "Width of 'wwww': " << fm.horizontalAdvance("wwww");
Выход
Width of 'w': 9
Width of 'wwww': 35
Вы ожидаете, что ширина второго будет 36, верно? Интересно, что добавление одной буквы «w» во вторую строку дает:
Width of 'w': 9
Width of 'wwwww': 43
Должно быть 45. HorizontalAdvance возвращает целое число, потому что оно измеряется в пикселях, но похоже, что где-то при вычислении теряется десятичное значение.
Это ошибка или я что-то упускаю?