From b1410cedd0db68b4caf7152a38eda70c6f208c80 Mon Sep 17 00:00:00 2001 From: Tomaz Canabrava Date: Mon, 15 Nov 2021 19:49:32 +0100 Subject: [PATCH] Do not group braille characters Braile characters will break if grouped in bidirectional text mode. --- src/terminalDisplay/TerminalPainter.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/terminalDisplay/TerminalPainter.cpp b/src/terminalDisplay/TerminalPainter.cpp index 3db3612d..f7d31f2f 100644 --- a/src/terminalDisplay/TerminalPainter.cpp +++ b/src/terminalDisplay/TerminalPainter.cpp @@ -137,7 +137,18 @@ void TerminalPainter::drawContents(Character *image, } return currentScript == script; }; + + // returns true if it's a braile char, false otherwise. + const auto isBraileChar = [&](int column) -> bool { + char32_t maybeBraile = image[display->loc(column, y)].character; + return maybeBraile >= 0x2800 && maybeBraile <= 0x28FF; + }; + const auto canBeGrouped = [&](int column) { + if (isBraileChar(x)) { + return false; + } + return image[display->loc(column, y)].character <= 0x7e || (image[display->loc(column, y)].rendition & RE_EXTENDED_CHAR) || (bidiEnabled && !doubleWidth); };