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
This commit is contained in:
Daniel Eklöf 2020-11-16 08:40:11 +01:00
parent 9c7cded616
commit 8bd711c33b
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F

View file

@ -451,12 +451,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 isnt 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);
}