mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-02-05 04:06:08 -05:00
Merge branch 'optionally-render-box-drawing-characters-using-font-glyphs'
Closes #430
This commit is contained in:
commit
f78ba6653f
6 changed files with 30 additions and 1 deletions
|
|
@ -32,6 +32,8 @@
|
|||
(https://codeberg.org/dnkl/foot/issues/436).
|
||||
* OSC 17/117/19/119 - change/reset selection background/foreground
|
||||
color.
|
||||
* `box-drawings-uses-font-glyphs=yes|no` option to `foot.ini`
|
||||
(https://codeberg.org/dnkl/foot/issues/430).
|
||||
|
||||
|
||||
### 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 {
|
||||
LOG_AND_NOTIFY_ERR("%s:%u: [default]: %s: invalid key", path, lineno, key);
|
||||
return false;
|
||||
|
|
@ -2198,6 +2201,7 @@ config_load(struct config *conf, const char *conf_path,
|
|||
.letter_spacing = { .pt = 0, .px = 0, },
|
||||
.horizontal_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 */
|
||||
.scrollback = {
|
||||
.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 vertical_letter_offset;
|
||||
|
||||
bool box_drawings_uses_font_glyphs;
|
||||
|
||||
struct {
|
||||
int lines;
|
||||
|
||||
|
|
|
|||
|
|
@ -96,6 +96,24 @@ in this order:
|
|||
|
||||
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 antialiasing 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*
|
||||
*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
|
||||
|
|
|
|||
1
foot.ini
1
foot.ini
|
|
@ -12,6 +12,7 @@
|
|||
# letter-spacing=0
|
||||
# horizontal-letter-offset=0
|
||||
# vertical-letter-offset=0
|
||||
# box-drawings-uses-font-glyphs=no
|
||||
# dpi-aware=yes
|
||||
|
||||
# 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) ||
|
||||
(base >= 0x1fb00 && base <= 0x1fb3b))) {
|
||||
(base >= 0x1fb00 && base <= 0x1fb3b)) &&
|
||||
likely(!term->conf->box_drawings_uses_font_glyphs))
|
||||
{
|
||||
/* Box drawing characters */
|
||||
size_t idx = base >= 0x1fb00 ? base - 0x1fb00 + 160 : base - 0x2500;
|
||||
xassert(idx < ALEN(term->box_drawing));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue