render: render combining characters

This is basically just a loop that renders additional glyphs on top
off the base glyph.

Since we now need access to the row struct, for the combining
characters, the function prototype for 'render_cell()' has changed.

When rendering the combining characters we also need to deal with
broken fonts; some fonts use positive offsets (as if the combining
character was a regular character), while others use a negative
offset (to be used as if you had already advanced the pen position).

We handle both - a positive offset is rendered just like a regular
glyph. When we see a negative offset we simply add the width of a cell
first.
This commit is contained in:
Daniel Eklöf 2020-05-01 11:56:13 +02:00
parent 40bf01a8e6
commit 76567e9ef0
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
3 changed files with 35 additions and 12 deletions

View file

@ -374,7 +374,7 @@ struct terminal {
struct {
struct coord actual; /* Absolute */
struct coord in_view; /* Offset by view */
struct cell *cell; /* For easy access to content */
struct row *row; /* Actual row TODO: remove */
} last_cursor;
struct buffer *last_buf; /* Buffer we rendered to last time */