Replace '\t' with a space in text buffers, as tab skip/stop is handled
by `alacritty_terminal`.
Also, sending a tab to the shaper causes issues, as fonts either have
no tab codepoint, or worse, some do, with the glyph produced being
anyone's guess. Some may render a tab to some random character like
'0'.
Fixes#73.
Signed-off-by: Mohammad AlSaleh <CE.Mohammad.AlSaleh@gmail.com>
Make use of the addition to cosmic-text that allows matching
the widths of fallback Monospace fonts to the default one.
Signed-off-by: Mohammad AlSaleh <CE.Mohammad.AlSaleh@gmail.com>
* Add `Metadata` struct to pass bg, underline_color, and flags info via
metadata.
* Keep and `IndexSet` of `Metadata` info in Terminal.
* Use `Metadata` info to render STRIKEOUT, UNDERCURL, and all underline
styles via `BgRect`.
Signed-off-by: Mohammad AlSaleh <CE.Mohammad.AlSaleh@gmail.com>
* Add a color deriver and derive dim colors for all themes.
* Derive actual bright colors for the OneHalfDark theme while at it.
* Use dim colors when the DIM flag is set.
Signed-off-by: Mohammad AlSaleh <CE.Mohammad.AlSaleh@gmail.com>
This zero-width char will force the shaper to treat detected RTL
lines as LTR.
RTL text would still be rendered correctly. But this fixes the wrong
behavior of it being displayed aligned to the right.
Signed-off-by: Mohammad AlSaleh <CE.Mohammad.AlSaleh@gmail.com>
* Store a font name => font faces map
* Only list font names that have `NORMAL` and `BOLD` faces with
`Normal` stretch. This will give us defaults and fall-backs that are
guaranteed to always exist.
* Filter by stretch first, with `Normal` chosen as the always existing
default.
* Then only list font weights supported by the font name stretch
selected, for the normal and bold cases.
* When changing the font name selected, the stretch/weight options
will stay the same if supported by the new font name, or revert to
the always existing fall-backs.
Signed-off-by: Mohammad AlSaleh <CE.Mohammad.AlSaleh@gmail.com>