summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gui/text/qtextengine.cpp4
-rw-r--r--tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp25
2 files changed, 28 insertions, 1 deletions
diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp
index 82cff6a043..37d6276f6b 100644
--- a/src/gui/text/qtextengine.cpp
+++ b/src/gui/text/qtextengine.cpp
@@ -1852,7 +1852,7 @@ void QTextEngine::justify(const QScriptLine &line)
itemize();
if (!forceJustification) {
- int end = line.from + (int)line.length;
+ int end = line.from + (int)line.length + line.trailingSpaces;
if (end == layoutData->string.length())
return; // no justification at end of paragraph
if (end && layoutData->items[findItem(end-1)].analysis.flags == QScriptAnalysis::LineOrParagraphSeparator)
@@ -1907,6 +1907,8 @@ void QTextEngine::justify(const QScriptLine &line)
int gs = log_clusters[start];
int ge = (end == length(firstItem+i) ? si.num_glyphs : log_clusters[end]);
+ Q_ASSERT(ge <= si.num_glyphs);
+
const QGlyphLayout g = shapedGlyphs(&si);
for (int i = gs; i < ge; ++i) {
diff --git a/tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp b/tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp
index cf3265d446..966102033c 100644
--- a/tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp
+++ b/tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp
@@ -184,6 +184,8 @@ private slots:
void htmlExportImportBlockCount();
+ void QTBUG27354_spaceAndSoftSpace();
+
private:
void backgroundImage_checkExpectedHtml(const QTextDocument &doc);
@@ -2900,5 +2902,28 @@ void tst_QTextDocument::htmlExportImportBlockCount()
QCOMPARE(document.blockCount(), 5);
}
+void tst_QTextDocument::QTBUG27354_spaceAndSoftSpace()
+{
+ QTextDocument document;
+ {
+ QTextCursor cursor(&document);
+ QTextBlockFormat blockFormat;
+ blockFormat.setAlignment(Qt::AlignJustify);
+ cursor.mergeBlockFormat(blockFormat);
+ cursor.insertText("ac");
+ cursor.insertBlock();
+ cursor.insertText(" ");
+ cursor.insertText(QChar(0x2028));
+ }
+
+ // Trigger justification of text
+ QImage image(1000, 1000, QImage::Format_ARGB32);
+ image.fill(0);
+ {
+ QPainter p(&image);
+ document.drawContents(&p, image.rect());
+ }
+}
+
QTEST_MAIN(tst_QTextDocument)
#include "tst_qtextdocument.moc"