aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJiang Jiang <jiang.jiang@nokia.com>2011-04-28 17:02:53 +0200
committerJiang Jiang <jiang.jiang@nokia.com>2011-04-29 10:29:28 +0200
commitc37880a3e8190d5eaceb39493fd638e662a32245 (patch)
tree8608b7119e412cb9a919b8c619c9f9d90b0895b9
parenta7dbf8a92f18fb77cb74d46da58ddd36f02bcb1f (diff)
Make text align in the same baseline
(cherry picked from commit 3f0e1ac647cc8ab700b85772264bc2a95e5301fa)
-rw-r--r--src/declarative/items/qsgtext.cpp3
-rw-r--r--src/declarative/items/qsgtextnode.cpp16
2 files changed, 8 insertions, 11 deletions
diff --git a/src/declarative/items/qsgtext.cpp b/src/declarative/items/qsgtext.cpp
index ab4669eb45..f796006c18 100644
--- a/src/declarative/items/qsgtext.cpp
+++ b/src/declarative/items/qsgtext.cpp
@@ -1116,9 +1116,6 @@ QSGNode *QSGText::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *data)
} else {
node->addTextLayout(QPoint(0, bounds.y()), &d->layout, d->color, d->style, d->styleColor);
- QMatrix4x4 m;
- m.translate(0, QFontMetricsF(d->font).ascent());
- node->setMatrix(m);
}
return node;
diff --git a/src/declarative/items/qsgtextnode.cpp b/src/declarative/items/qsgtextnode.cpp
index 3bbe0d2832..a887c2360a 100644
--- a/src/declarative/items/qsgtextnode.cpp
+++ b/src/declarative/items/qsgtextnode.cpp
@@ -188,8 +188,11 @@ void QSGTextNode::addTextLayout(const QPointF &position, QTextLayout *textLayout
QSGText::TextStyle style, const QColor &styleColor)
{
QList<QGlyphs> glyphsList(textLayout->glyphs());
- for (int i=0; i<glyphsList.size(); ++i)
- addGlyphs(position, glyphsList.at(i), color, style, styleColor);
+ for (int i=0; i<glyphsList.size(); ++i) {
+ QGlyphs glyphs = glyphsList.at(i);
+ QRawFont font = glyphs.font();
+ addGlyphs(position + QPointF(0, font.ascent()), glyphs, color, style, styleColor);
+ }
QFont font = textLayout->font();
QRawFont rawFont = QRawFont::fromFont(font);
@@ -353,16 +356,13 @@ void QSGTextNode::addTextBlock(const QPointF &position, QTextDocument *textDocum
? overrideColor
: charFormat.foreground().color();
- QFontMetricsF fm(fragment.charFormat().font());
- QPointF ascent(0, fm.ascent());
-
QList<QGlyphs> glyphsList = fragment.glyphs();
for (int i=0; i<glyphsList.size(); ++i) {
QGlyphs glyphs = glyphsList.at(i);
- QSGGlyphNode *glyphNode = addGlyphs(position + blockPosition + ascent, glyphs,
- color, style, styleColor);
-
QRawFont font = glyphs.font();
+ QSGGlyphNode *glyphNode = addGlyphs(position + blockPosition + QPointF(0, font.ascent()),
+ glyphs, color, style, styleColor);
+
QPointF baseLine = glyphNode->baseLine();
qreal width = glyphNode->boundingRect().width();
addTextDecorations(baseLine, font, color, width,