Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:dirkmueller:acdc:sp5-rebuild
libqt5-qtdeclarative.19402
fix-subpixel-positioned-text.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File fix-subpixel-positioned-text.patch of Package libqt5-qtdeclarative.19402
From 40ba29cae5cdb2ebd6330870a0f15e2e75d40de0 Mon Sep 17 00:00:00 2001 From: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> Date: Tue, 05 May 2020 11:36:24 +0200 Subject: [PATCH] Fix subpixel positioned text with Text.NativeRendering We would be generating subpixel positioned glyphs based on the relative positions of the glyphs, ignoring the fractional part contributed by the origin of the text. So if the text origin was inside a pixel, the subpixel antialiasing would be wrong and we would see kerning errors. This was especially visible when using AlignHCenter on text with hinting disabled and resizing the item it was aligning to. Pick-to: 5.15 Task-number: QTBUG-49646 Change-Id: I0e709ba2b5d2440e34c94c6f819befe0a65a113a --- diff --git a/src/quick/scenegraph/qsgdefaultglyphnode_p.cpp b/src/quick/scenegraph/qsgdefaultglyphnode_p.cpp index be6ef25..831586c 100644 --- a/src/quick/scenegraph/qsgdefaultglyphnode_p.cpp +++ b/src/quick/scenegraph/qsgdefaultglyphnode_p.cpp @@ -789,11 +789,12 @@ const QMargins &margins) { Q_ASSERT(m_font.isValid()); + QPointF position(p.x(), p.y() - m_font.ascent()); QVector<QFixedPoint> fixedPointPositions; const int glyphPositionsSize = glyphPositions.size(); fixedPointPositions.reserve(glyphPositionsSize); for (int i=0; i < glyphPositionsSize; ++i) - fixedPointPositions.append(QFixedPoint::fromPointF(glyphPositions.at(i))); + fixedPointPositions.append(QFixedPoint::fromPointF(position + glyphPositions.at(i))); QTextureGlyphCache *cache = glyphCache(); @@ -815,18 +816,16 @@ Q_ASSERT(geometry->sizeOfVertex() == sizeof(QVector4D)); ushort *ip = geometry->indexDataAsUShort(); - QPointF position(p.x(), p.y() - m_font.ascent()); bool supportsSubPixelPositions = fontD->fontEngine->supportsSubPixelPositions(); for (int i=0; i<glyphIndexes.size(); ++i) { + QPointF glyphPosition = glyphPositions.at(i) + position; QFixed subPixelPosition; if (supportsSubPixelPositions) - subPixelPosition = fontD->fontEngine->subPixelPositionForX(QFixed::fromReal(glyphPositions.at(i).x())); + subPixelPosition = fontD->fontEngine->subPixelPositionForX(QFixed::fromReal(glyphPosition.x())); QTextureGlyphCache::GlyphAndSubPixelPosition glyph(glyphIndexes.at(i), subPixelPosition); const QTextureGlyphCache::Coord &c = cache->coords.value(glyph); - QPointF glyphPosition = glyphPositions.at(i) + position; - // On a retina screen the glyph positions are not pre-scaled (as opposed to // eg. the raster paint engine). To ensure that we get the same behavior as // the raster engine (and CoreText itself) when it comes to rounding of the
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor