Denton Liu <liu.denton@xxxxxxxxx> writes: > static int calculate_width(const struct strbuf *row) > { > int in_termcode = 0; > int width = 0; > int i; > > for (i = 0; i < row.len; i++) { > if (row.buf[i] == '\033') > in_termcode = 1; > > if (!in_termcode) > width++; > else if (row.buf[i] == 'm') > in_termcode = 0; > } > } Not every byte that is outside the escape sequence contributes to one display columns. You would want to take a look at utf8_width() for inspiration.