render: optionally enable heuristics that deal with private usage area chars

Try to detect double-width *glyphs* for single-width *characters*, and
allow them to overflow into the next cell.

This is only done for single-width chars with a glyph width that is at
least 1.5 cells wide, but at most 3 cells.

The feature is gated by the new
‘tweak.allow-overflowing-double-width-glyphs’, and is disabled by
default.

Closes #116
This commit is contained in:
Daniel Eklöf 2020-09-03 17:37:44 +02:00
parent bb8d9378c9
commit b71016c25d
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
5 changed files with 52 additions and 1 deletions

View file

@ -1358,7 +1358,10 @@ parse_section_tweak(
const char *key, const char *value, struct config *conf,
const char *path, unsigned lineno)
{
if (strcmp(key, "render-timer") == 0) {
if (strcmp(key, "allow-overflowing-double-width-glyphs") == 0)
conf->tweak.allow_overflowing_double_width_glyphs = str_to_bool(value);
else if (strcmp(key, "render-timer") == 0) {
if (strcmp(value, "none") == 0) {
conf->tweak.render_timer_osd = false;
conf->tweak.render_timer_log = false;
@ -1792,6 +1795,7 @@ config_load(struct config *conf, const char *conf_path, bool errors_are_fatal)
.hold_at_exit = false,
.tweak = {
.allow_overflowing_double_width_glyphs = false,
.delayed_render_lower_ns = 500000, /* 0.5ms */
.delayed_render_upper_ns = 16666666 / 2, /* half a frame period (60Hz) */
.max_shm_pool_size = 512 * 1024 * 1024,