Fix cursor motion around some Emoji sequences

* src/character.h: Add TAG_SPACE and CANCEL_TAG to known Unicode
characters values.
* src/composite.c (char_composable_p): Recognize TAG characters
relevant to Emoji as composable regardless of their General
Category.  (Bug#39799)
This commit is contained in:
Eli Zaretskii 2021-09-25 12:18:27 +03:00
parent 12b860bd1b
commit 297c9aa3de
2 changed files with 5 additions and 0 deletions

View file

@ -82,6 +82,8 @@ enum
LEFT_ANGLE_BRACKET = 0x3008,
RIGHT_ANGLE_BRACKET = 0x3009,
OBJECT_REPLACEMENT_CHARACTER = 0xFFFC,
TAG_SPACE = 0xE0020,
CANCEL_TAG = 0xE007F,
};
extern int char_string (unsigned, unsigned char *);

View file

@ -953,6 +953,9 @@ char_composable_p (int c)
Lisp_Object val;
return (c >= ' '
&& (c == ZERO_WIDTH_NON_JOINER || c == ZERO_WIDTH_JOINER
/* Per Unicode TR51, these tag characters can be part of
Emoji sequences. */
|| (TAG_SPACE <= c && c <= CANCEL_TAG)
/* unicode-category-table may not be available during
dumping. */
|| (CHAR_TABLE_P (Vunicode_category_table)