diff --git a/CHANGELOG.md b/CHANGELOG.md index 06225366..4615b3e2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -99,12 +99,14 @@ ([#1744][1744]). * Regression: alpha changes through OSC-11 sequences not taking effect until window is resized. +* VS15 being ignored ([#1742][1742]). [1694]: https://codeberg.org/dnkl/foot/issues/1694 [1717]: https://codeberg.org/dnkl/foot/issues/1717 [1718]: https://codeberg.org/dnkl/foot/issues/1718 [1734]: https://codeberg.org/dnkl/foot/issues/1734 [1744]: https://codeberg.org/dnkl/foot/issues/1744 +[1742]: https://codeberg.org/dnkl/foot/issues/1742 ### Security diff --git a/vt.c b/vt.c index a8a0f0fb..41bb305d 100644 --- a/vt.c +++ b/vt.c @@ -852,9 +852,11 @@ action_utf8_print(struct terminal *term, char32_t wc) break; case GRAPHEME_WIDTH_DOUBLE: + new_cc->width = min(grapheme_width + width, 2); + #if defined(FOOT_GRAPHEME_CLUSTERING) if (unlikely(grapheme_clustering && - wc == 0xfe0f && + (wc == 0xfe0e || wc == 0xfe0f) && new_cc->count == 2)) { /* Only emojis should be affected by VS16 */ @@ -862,11 +864,10 @@ action_utf8_print(struct terminal *term, char32_t wc) utf8proc_get_property(new_cc->chars[0]); if (props->boundclass == UTF8PROC_BOUNDCLASS_EXTENDED_PICTOGRAPHIC) - width = 2; + new_cc->width = wc - 0xfe0d; /* 1 for VS-15, 2 for VS-16 */ } #endif - new_cc->width = min(grapheme_width + width, 2); break; case GRAPHEME_WIDTH_WCSWIDTH: