qpainterpath.addtext игнорирует вес qfont

Используя Qt 4.7.0, нам нужно, чтобы текст отображался на полпути между обычным и полужирным шрифтом. Вот что мы делаем:

В методе Paint нашего подкласса QGraphicsObject у нас есть QFont, для которого мы вызываем setWeight(58). Мы создаем QPainterPath и вызываем его метод addText, передавая наш QFont.

Затем мы используем параметр QPainter для вызова drawPath, передавая наш QPainterPath.

Мы обнаружили, что изменение веса шрифта с 50 до 62 не влияет на то, как он нарисован. При толщине шрифта от 63 до 75 шрифт выделяется жирным шрифтом.

Как мы можем заставить fontWeight работать так, как мы ожидаем?


person David Burson    schedule 23.11.2010    source источник


Ответы (1)


Согласно документации:

Устанавливает вес шрифта, равный весу, который должен быть значением из перечисления QFont::Weight.

На странице W3C, посвященной жирности шрифтов CSS, есть хорошее объяснение того, как CSS справляется с этим; документация Qt говорит, что она делает что-то подобное. По сути, он применяет некоторую эвристику, чтобы попытаться сопоставить значение веса с соответствующей версией шрифта (обычный, полужирный, тяжелый и т. д.).

Возможно (возможно, обводя QPainterPath?) создать немного более толстые глифы определенного шрифта, чем обычно, но результаты почти наверняка будут разочаровывающими. Дизайнеры шрифтов приложили немало усилий, чтобы шрифты хорошо выглядели при определенном начертании. Когда вы отступаете от этого (скажем, обрисовываете в общих чертах каждый глиф), вся оптимизация дизайна теряется.

person Dave Mateer    schedule 02.02.2011