[Interest] TextMetrics give wrong metrics for some strings
Elvis Stansvik
elvstone at gmail.com
Mon Mar 21 10:47:14 CET 2016
2016-03-21 10:42 GMT+01:00 Elvis Stansvik <elvstone at gmail.com>:
> 2016-03-21 10:27 GMT+01:00 Elvis Stansvik <elvstone at gmail.com>:
>> Hi all,
>>
>> I'm attempting to make a custom Button item where the size of the
>> button is determined by the metrics of the text it holds. The reason
>> is I want to put a thin rectangle below the text, sort of a stylistic
>> underlining (text underlining is not sufficient, for aesthetic
>> reasons).
>>
>> But I'm seeing strange metrics reported for some strings.
>>
>> BEGIN TEST CASE
>>
>> Button.qml:
>>
>> import QtQuick 2.5
>>
>> // Attempt at a button with a size determined by the metrics
>> // of its text.
>>
>> Rectangle {
>> property alias text: text.text
>> property alias pointSize: text.font.pointSize
>>
>> width: textMetrics.width
>> height: textMetrics.height
>>
>> TextMetrics {
>> id: textMetrics
>> font: text.font
>> text: text.text
>> }
>>
>> Text {
>> id: text
>> text: "Button"
>> }
>> }
>>
>>
>> Test.qml:
>>
>> import QtQuick 2.5
>>
>> Rectangle {
>> width: 800
>> height: 600
>>
>> // Something wrong with the metrics on this one :/
>>
>> Button {
>> text: "Hej"
>> pointSize: 42
>> border.color: "red"
>>
>> anchors.top: parent.top
>> }
>>
>> // These two seem OK.
>>
>> Button {
>> text: "Something longer"
>> pointSize: 42
>> border.color: "red"
>>
>> anchors.verticalCenter: parent.verticalCenter
>> }
>>
>> Button {
>> text: "Test"
>> pointSize: 42
>> border.color: "red"
>>
>> anchors.bottom: parent.bottom
>> }
>> }
>>
>> END TEST CASE
>>
>> See the attached screenshot (metrics_are_off.png) which shows the
>> result. Notice how the size of the buttons (Rectangle) are correct for
>> the last two buttons, but for the first, the text is sticking out a
>> little :/
>>
>> Any idea why this is, and how I can solve it?
>>
>> I'm also attaching a sketch (sketch.png) of the look I'm after for my
>> buttons. If you know of a simpler way to achieve this, I'm idle ears.
>
> Nevermind. I realize now that the metrics are actually correct, it's
> just that the 'H' in "Hej" has some leading space, which seems to not
> be included in the reported metrics.
>
> I'll have to rethink a little, but should get it to work now I think.
> Still would appreciate if someone who's done something similar to what
> I'm trying could chime in.
Actually, I guess my question is now; how can I account for this
leading space? I.e. how can I get the position where the string
(visually) starts and ends in the X direction? In the "Test" and
"Something longer" case, the TextMetrics seems pretty accurate, but
the leading space that the 'H' has (in the font I guess) seems to not
be included in the metric rect :/
Elvis
>
> Elvis
>
>>
>> Cheers,
>> Elvis
More information about the Interest
mailing list