diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/PositionCache.cxx | 7 | 
1 files changed, 7 insertions, 0 deletions
diff --git a/src/PositionCache.cxx b/src/PositionCache.cxx index 5cc8f8fe8..07f0c9541 100644 --- a/src/PositionCache.cxx +++ b/src/PositionCache.cxx @@ -355,6 +355,13 @@ void LineLayout::WrapLine(const Document *pdoc, Sci::Position posLineStart, Wrap  			Sci::Position lastGoodBreak = p;  			if (p > 0) {  				lastGoodBreak = CharacterBoundary(p, -1); +				if (CpUtf8 == pdoc->dbcsCodePage) { +					// Go back before a base character, commonly a letter as modifiers are after the letter they modify +					std::string_view svWithoutLast(&chars[lastLineStart], CharacterBoundary(p+1, 1) - lastLineStart); +					if (DiscardLastCombinedCharacter(svWithoutLast) && !svWithoutLast.empty()) { +						lastGoodBreak = lastLineStart + static_cast<Sci::Position>(svWithoutLast.length()); +					} +				}  			}  			if (wrapState != Wrap::Char) {  				Sci::Position pos = lastGoodBreak;  | 
