renderer, shaper: don't use null cells, handle bg and decorations separately

Significant rework that also removes a lot of unnecessarily duplicated
work while rebuilding cells in both renderers. Fixes multiple issues
with decorations and bg colors on wide chars and ligatures, while
reducing the amount of special case handling required.
This commit is contained in:
Qwerasd
2024-10-08 23:10:43 -04:00
parent 78d6cfb620
commit 7686cacde6
5 changed files with 898 additions and 771 deletions

View File

@@ -44,10 +44,7 @@ pub const Cell = struct {
/// this cell is available in the text run. This glyph index is only
/// valid for a given GroupCache and FontIndex that was used to create
/// the runs.
///
/// If this is null then this is an empty cell. If there are styles
/// then those should be applied but there is no glyph to render.
glyph_index: ?u32,
glyph_index: u32,
};
/// Options for shapers.