vt: ignore VS16 (U+FE0F) when grapheme clustering is disabled

This fixes:

a) a compilation error with -Dgrapheme-clustering=disabled

b) ensures U+FE0F does *not* allocate a two cells when grapheme
   clustering has been disabled (either compile time, in config, or
   run-time).
This commit is contained in:
Daniel Eklöf 2024-02-16 07:11:07 +01:00
parent aca9af0202
commit 0c94bf43f2
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F

8
vt.c
View file

@ -850,7 +850,11 @@ action_utf8_print(struct terminal *term, char32_t wc)
break;
case GRAPHEME_WIDTH_DOUBLE:
if (unlikely(wc == 0xfe0f && new_cc->count == 2)) {
#if defined(FOOT_GRAPHEME_CLUSTERING)
if (unlikely(grapheme_clustering &&
wc == 0xfe0f &&
new_cc->count == 2))
{
/* Only emojis should be affected by VS16 */
const utf8proc_property_t *props =
utf8proc_get_property(new_cc->chars[0]);
@ -858,6 +862,8 @@ action_utf8_print(struct terminal *term, char32_t wc)
if (props->boundclass == UTF8PROC_BOUNDCLASS_EXTENDED_PICTOGRAPHIC)
width = 2;
}
#endif
new_cc->width = min(grapheme_width + width, 2);
break;