From 9a7c6bdcf2ed686e41a15bbf6a3fbd9e8517dc6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Thu, 24 Jun 2021 19:15:53 +0200 Subject: [PATCH] term: CELL_COMB_CHARS chars are keys, not indices -> more range is better Bump the available key range to 30 bits. This helps reduce key collisions when handling a large amount of grapheme clusters. --- terminal.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/terminal.h b/terminal.h index 00c4221f..385b36e0 100644 --- a/terminal.h +++ b/terminal.h @@ -51,9 +51,10 @@ struct attributes { }; static_assert(sizeof(struct attributes) == 8, "VT attribute struct too large"); -#define CELL_COMB_CHARS_LO 0x40000000ul -#define CELL_COMB_CHARS_HI 0x400ffffful -#define CELL_SPACER 0x40100000ul +/* Last valid Unicode code point is 0x0010FFFFul */ +#define CELL_COMB_CHARS_LO 0x00200000ul +#define CELL_COMB_CHARS_HI (CELL_COMB_CHARS_LO + 0x3fffffff) +#define CELL_SPACER (CELL_COMB_CHARS_HI + 1) struct cell { wchar_t wc;