From c80ba5be8691fa80a18454b120eac451306ef4b5 Mon Sep 17 00:00:00 2001 From: Leon Styhre Date: Wed, 4 Sep 2024 17:19:36 +0200 Subject: [PATCH] Fixed a line breaking issue --- es-core/src/resources/Font.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/es-core/src/resources/Font.cpp b/es-core/src/resources/Font.cpp index 7edc67a79..b4d6c5e94 100644 --- a/es-core/src/resources/Font.cpp +++ b/es-core/src/resources/Font.cpp @@ -882,7 +882,12 @@ void Font::wrapText(std::vector& segmentsHB, // New row. size_t offset {0}; - if (lastSpace == i && !lastSegmentSpace) { + bool shapedSegmentChange {false}; + if (lastSpace == 0 && resultSegments.size() > 0 && + !resultSegments.back().lineBreak) + shapedSegmentChange = true; + + if (lastSpace == i && !lastSegmentSpace && !shapedSegmentChange) { if (segment.rightToLeft) newSegment.glyphIndexes.insert(newSegment.glyphIndexes.begin(), segment.glyphIndexes[i]); @@ -906,6 +911,9 @@ void Font::wrapText(std::vector& segmentsHB, spaceAccum = 0; } } + else if (shapedSegmentChange) { + offset = i; + } else { if (lastSpace == 0) ++spaceAccum;