Fix right-to-left text with DirectWrite engine + QPainterPath
When QPainterPath was used for RTL text, either directly or because the target text size exceeds 64 pixels, we would pass true for "isRightToLeft" to DirectWrite, causing it to do adaptation internally for this. But the RTL layout had already been handled by Qt, so we would essentially reverse the layout twice and also move the text to negative X coordinates. Passing false instead fixes this, as it will then just use the positions we pass in blindly. Fixes: QTBUG-94175 Pick-to: 5.15 6.1 6.2 Change-Id: Ie9a47e56e97fc867ede10ab21ac5e3f003ddcacb Reviewed-by: Lars Knoll <lars.knoll@qt.io>
This commit is contained in:
parent
7155e4f620
commit
30399fb95c
@ -517,6 +517,7 @@ void QWindowsFontEngineDirectWrite::recalcAdvances(QGlyphLayout *glyphs, QFontEn
|
||||
void QWindowsFontEngineDirectWrite::addGlyphsToPath(glyph_t *glyphs, QFixedPoint *positions, int nglyphs,
|
||||
QPainterPath *path, QTextItem::RenderFlags flags)
|
||||
{
|
||||
Q_UNUSED(flags);
|
||||
QVarLengthArray<UINT16> glyphIndices(nglyphs);
|
||||
QVarLengthArray<DWRITE_GLYPH_OFFSET> glyphOffsets(nglyphs);
|
||||
QVarLengthArray<FLOAT> glyphAdvances(nglyphs);
|
||||
@ -536,7 +537,7 @@ void QWindowsFontEngineDirectWrite::addGlyphsToPath(glyph_t *glyphs, QFixedPoint
|
||||
glyphOffsets.data(),
|
||||
nglyphs,
|
||||
false,
|
||||
flags & QTextItem::RightToLeft,
|
||||
false,
|
||||
&geometrySink
|
||||
);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user