mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-03-24 09:05:48 -04:00
config: add box-drawings-uses-font-glyphs=no|yes option
When disabled, we render box drawing characters ourselves. This is the default. When enabled, we instead use font glyphs. I.e. no special treatment. Closes #430
This commit is contained in:
parent
2efd1016ce
commit
ce321e663e
6 changed files with 30 additions and 1 deletions
|
|
@ -32,6 +32,8 @@
|
||||||
(https://codeberg.org/dnkl/foot/issues/436).
|
(https://codeberg.org/dnkl/foot/issues/436).
|
||||||
* OSC 17/117/19/119 - change/reset selection background/foreground
|
* OSC 17/117/19/119 - change/reset selection background/foreground
|
||||||
color.
|
color.
|
||||||
|
* `box-drawings-uses-font-glyphs=yes|no` option to `foot.ini`
|
||||||
|
(https://codeberg.org/dnkl/foot/issues/430).
|
||||||
|
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
|
||||||
4
config.c
4
config.c
|
|
@ -770,6 +770,9 @@ parse_section_main(const char *key, const char *value, struct config *conf,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
else if (strcmp(key, "box-drawings-uses-font-glyphs") == 0)
|
||||||
|
conf->box_drawings_uses_font_glyphs = str_to_bool(value);
|
||||||
|
|
||||||
else {
|
else {
|
||||||
LOG_AND_NOTIFY_ERR("%s:%u: [default]: %s: invalid key", path, lineno, key);
|
LOG_AND_NOTIFY_ERR("%s:%u: [default]: %s: invalid key", path, lineno, key);
|
||||||
return false;
|
return false;
|
||||||
|
|
@ -2198,6 +2201,7 @@ config_load(struct config *conf, const char *conf_path,
|
||||||
.letter_spacing = { .pt = 0, .px = 0, },
|
.letter_spacing = { .pt = 0, .px = 0, },
|
||||||
.horizontal_letter_offset = {.pt = 0, .px = 0, },
|
.horizontal_letter_offset = {.pt = 0, .px = 0, },
|
||||||
.vertical_letter_offset = {.pt = 0, .px = 0, },
|
.vertical_letter_offset = {.pt = 0, .px = 0, },
|
||||||
|
.box_drawings_uses_font_glyphs = false,
|
||||||
.dpi_aware = DPI_AWARE_AUTO, /* DPI-aware when scaling-factor == 1 */
|
.dpi_aware = DPI_AWARE_AUTO, /* DPI-aware when scaling-factor == 1 */
|
||||||
.scrollback = {
|
.scrollback = {
|
||||||
.lines = 1000,
|
.lines = 1000,
|
||||||
|
|
|
||||||
2
config.h
2
config.h
|
|
@ -99,6 +99,8 @@ struct config {
|
||||||
struct pt_or_px horizontal_letter_offset;
|
struct pt_or_px horizontal_letter_offset;
|
||||||
struct pt_or_px vertical_letter_offset;
|
struct pt_or_px vertical_letter_offset;
|
||||||
|
|
||||||
|
bool box_drawings_uses_font_glyphs;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
int lines;
|
int lines;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -96,6 +96,24 @@ in this order:
|
||||||
|
|
||||||
Default: _0_.
|
Default: _0_.
|
||||||
|
|
||||||
|
*box-drawings-uses-font-glyphs*
|
||||||
|
Boolean. When disabled, foot generates box/line drawing characters
|
||||||
|
itself. The are several advantages to doing this instead of using
|
||||||
|
font glyphs:
|
||||||
|
|
||||||
|
- No antaliasing effects where e.g. line endpoints appear dimmer.
|
||||||
|
- Line- and box characters are guaranteed to span the entire cell,
|
||||||
|
resulting in a gap-less appearance.
|
||||||
|
- No alignment issues, i.e. lines are centered when they should be.
|
||||||
|
- Many fonts lack some, or all, of the line- and box drawing
|
||||||
|
characters, causing fallback fonts to be used, which results
|
||||||
|
in out-of-place (for example, badly sized) looking glyphs.
|
||||||
|
|
||||||
|
When enabled, box/line drawing characters are rendered using font
|
||||||
|
glyphs. This may result in a more uniform look, in some use cases.
|
||||||
|
|
||||||
|
Default: _no_.
|
||||||
|
|
||||||
*dpi-aware*
|
*dpi-aware*
|
||||||
*auto*, *yes*, or *no*. When set to *yes*, fonts are sized using
|
*auto*, *yes*, or *no*. When set to *yes*, fonts are sized using
|
||||||
the monitor's DPI, making a font of a given size have the same
|
the monitor's DPI, making a font of a given size have the same
|
||||||
|
|
|
||||||
1
foot.ini
1
foot.ini
|
|
@ -12,6 +12,7 @@
|
||||||
# letter-spacing=0
|
# letter-spacing=0
|
||||||
# horizontal-letter-offset=0
|
# horizontal-letter-offset=0
|
||||||
# vertical-letter-offset=0
|
# vertical-letter-offset=0
|
||||||
|
# box-drawings-uses-font-glyphs=no
|
||||||
# dpi-aware=yes
|
# dpi-aware=yes
|
||||||
|
|
||||||
# initial-window-size-pixels=700x500 # Or,
|
# initial-window-size-pixels=700x500 # Or,
|
||||||
|
|
|
||||||
4
render.c
4
render.c
|
|
@ -466,7 +466,9 @@ render_cell(struct terminal *term, pixman_image_t *pix,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (unlikely((base >= 0x2500 && base <= 0x259f) ||
|
if (unlikely((base >= 0x2500 && base <= 0x259f) ||
|
||||||
(base >= 0x1fb00 && base <= 0x1fb3b))) {
|
(base >= 0x1fb00 && base <= 0x1fb3b)) &&
|
||||||
|
likely(!term->conf->box_drawings_uses_font_glyphs))
|
||||||
|
{
|
||||||
/* Box drawing characters */
|
/* Box drawing characters */
|
||||||
size_t idx = base >= 0x1fb00 ? base - 0x1fb00 + 160 : base - 0x2500;
|
size_t idx = base >= 0x1fb00 ? base - 0x1fb00 + 160 : base - 0x2500;
|
||||||
xassert(idx < ALEN(term->box_drawing));
|
xassert(idx < ALEN(term->box_drawing));
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue