Shawn, Sorry, I should have sent you the output of my test.
On the Image below, the knobs labels are using NativeRendering (OCTAVE & FINE) If you compare them agains WAVEFORM and SEMITONE, you will notice them more crisp. I will try the code you sent me! Thx! Regards, Nuno > On 25 Oct 2017, at 13:22, Shawn Rutledge <shawn.rutle...@qt.io> wrote: > > >> On 25 Oct 2017, at 11:54, Nuno Santos <nunosan...@imaginando.pt> wrote: >> >> Shawn, >> >> Thanks for your reply. >> >> It actually got worst with this setting. > > In what way? > > The downside of native text is that it’s a bit less efficient, and is > rendered exactly at the declared font size, so transforms such as scaling and > rotation look terrible. We don’t use it by default because QtQuick is for > fluid applications, but static text looks “more native” with NativeRendering. > > Here’s a little torture-test you can try (with the qml runtime): > > import QtQuick 2.0 > import QtQuick.Layouts 1.1 > import QtQuick.Controls 2.1 > > Rectangle { > width: 900 > height: 480 > > GridLayout { > width: parent.width > columns: 3 > flow: GridLayout.TopToBottom > > Repeater { > model: 10 > Text { > text: "default rendering" > font.pixelSize: sizeSlider.value * (index + 1) > transformOrigin: Item.TopLeft > scale: scaleSlider.value > rotation: rotationSlider.value > } > } > > Repeater { > id: nrRepeater > model: 10 > Text { > renderType: Text.NativeRendering > text: "native rendering" > font.pixelSize: sizeSlider.value * (index + 1) > Layout.column: 1 > Layout.row: index > transformOrigin: Item.TopLeft > scale: scaleSlider.value > rotation: rotationSlider.value > } > } > > Repeater { > model: 10 > Canvas { > width: 300 > height: fontSize > property real fontSize: sizeSlider.value * (index + 1) > onPaint: { > var ctx = getContext("2d"); > ctx.clearRect(0, 0, width, height); > ctx.fillStyle = Qt.rgba(0, 0, 0, 1); > ctx.font = fontSize + 'px Helvetica'; > ctx.textBaseline = 'top'; > console.log("painting " + index + " , height " + height + > " font " + ctx.font + " based on " + sizeSlider.value) > ctx.fillText('canvas rendering', 0, 0); > } > Layout.column: 2 > Layout.row: index > transformOrigin: Item.TopLeft > scale: scaleSlider.value > rotation: rotationSlider.value > } > } > SequentialAnimation on y { > id: jumper > running: cbAnimate.checked > loops: Animation.Infinite > NumberAnimation { from: 0; to: amplitudeSlider.value } > NumberAnimation { to: 0; from: amplitudeSlider.value } > } > } > > Column { > anchors.bottom: parent.bottom > Row { > spacing: 6 > Text { text: "Pixel size"; anchors.verticalCenter: > parent.verticalCenter } > Slider { id: sizeSlider; from: 2; to: 5 } > CheckBox { id: cbAnimate; text: "Jumpy"; checked: true } > Slider { id: amplitudeSlider; from: 1; to: 10; value: 1; > onValueChanged: jumper.restart() } > } > Row { > spacing: 6 > Text { text: "Scale"; anchors.verticalCenter: > parent.verticalCenter } > Slider { id: scaleSlider; from: 0.5; to: 2; value: 1 } > Text { text: "Rotation"; anchors.verticalCenter: > parent.verticalCenter } > Slider { id: rotationSlider; from: -10; to: 10; value: 0 } > Button { text: "Reset"; onClicked: { scaleSlider.value = 1; > rotationSlider.value = 0 } } > } > } > } > >> So I assume there aren’t any other alternatives. > > There’s some work in progress toward rendering with contours eventually: > https://bugreports.qt.io/browse/QTBUG-61933 but that’s intended for larger > text sizes. > > You could try using QPainter (make a custom C++ Item which renders words to > textures and then creates QSGImageNodes for them), but I think that would > look about the same as native text. > > _______________________________________________ > Interest mailing list > Interest@qt-project.org > http://lists.qt-project.org/mailman/listinfo/interest
_______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest