diff --git a/src/characters/Character.h b/src/characters/Character.h index 33afa17b..3b5b5a62 100644 --- a/src/characters/Character.h +++ b/src/characters/Character.h @@ -206,6 +206,11 @@ public: const bool lineDraw = LineBlockCharacters::canDraw(character); return LineBlockCharacters::canDraw(lhs.character) == lineDraw; }; + + inline bool hasSameAttributes(Character lhs) const + { + return hasSameColors(lhs) && hasSameRendition(lhs) && hasSameLineDrawStatus(lhs) && isSameScript(lhs); + } }; constexpr bool operator==(const Character &a, const Character &b) diff --git a/src/terminalDisplay/TerminalPainter.cpp b/src/terminalDisplay/TerminalPainter.cpp index 137a6f33..1a54c777 100644 --- a/src/terminalDisplay/TerminalPainter.cpp +++ b/src/terminalDisplay/TerminalPainter.cpp @@ -111,9 +111,7 @@ void TerminalPainter::drawContents(Character *image, while (isInsideDrawArea(x + len)) { Character next_char = image[display->loc(x + len, y)]; - if (!char_value.hasSameColors(next_char) || !char_value.hasSameRendition(next_char) || !hasSameWidth(x + len) - || !char_value.hasSameLineDrawStatus(next_char) || !char_value.isSameScript(next_char) - || !next_char.canBeGrouped(bidiEnabled, doubleWidth)) { + if (!hasSameWidth(x + len) || !next_char.canBeGrouped(bidiEnabled, doubleWidth) || !char_value.hasSameAttributes(next_char)) { break; }