diff --git a/textview.go b/textview.go index 34197c3..429338a 100644 --- a/textview.go +++ b/textview.go @@ -5,6 +5,7 @@ import ( "fmt" "regexp" "sync" + "unicode" "unicode/utf8" "github.com/gdamore/tcell" @@ -815,7 +816,7 @@ func (t *TextView) Draw(screen tcell.Screen) { // Draw the character. var comb []rune - if len(runeSequence) > 1 { + if len(runeSequence) > 1 && !unicode.IsControl(runeSequence[1]) { // Allocate space for the combining characters only when necessary. comb = make([]rune, len(runeSequence)-1) copy(comb, runeSequence[1:]) diff --git a/util.go b/util.go index 0f8c075..ac12e57 100644 --- a/util.go +++ b/util.go @@ -419,7 +419,7 @@ func printWithStyle(screen tcell.Screen, text string, x, y, maxWidth, align int, _, background, _ := finalStyle.Decompose() finalStyle = overlayStyle(background, style, foregroundColor, backgroundColor, attributes) var comb []rune - if len(runeSequence) > 1 { + if len(runeSequence) > 1 && !unicode.IsControl(runeSequence[1]) { // Allocate space for the combining characters only when necessary. comb = make([]rune, len(runeSequence)-1) copy(comb, runeSequence[1:]) @@ -475,7 +475,6 @@ func printWithStyle(screen tcell.Screen, text string, x, y, maxWidth, align int, } runeSequence = append(runeSequence, ch) runeSeqWidth += chWidth - } if drawnWidth+runeSeqWidth <= maxWidth { flush()