From 774dd75542d37410849524f40835a6eb7342a349 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Mon, 16 Nov 2020 08:40:11 +0100 Subject: [PATCH] render: allow-overflow: require a space in the next cell When checking if we should allow a single-width character double-width glyph to overflow into the next cell, require the next cell to either be empty, or contain a space. Closes #203 --- render.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/render.c b/render.c index 96905c0c..12601ac2 100644 --- a/render.c +++ b/render.c @@ -462,12 +462,16 @@ render_cell(struct terminal *term, pixman_image_t *pix, * - the *character* width is 1 * - the *glyph* width is at least 1.5 cells * - the *glyph* width is less than 3 cells + * - *this* column isn’t the last column + * - *this* cells is followed by an empty cell, or a space */ if (term->conf->tweak.allow_overflowing_double_width_glyphs && glyph != NULL && glyph->cols == 1 && glyph->width >= term->cell_width * 15 / 10 && - glyph->width < 3 * term->cell_width) + glyph->width < 3 * term->cell_width && + col < term->cols - 1 && + (row->cells[col + 1].wc == 0 || row->cells[col + 1].wc == L' ')) { cell_cols = min(2, cols_left); }