mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-05 11:45:45 +00:00
Avoid breaking Arabic shaping in 'window-text-pixel-size'
* src/xdisp.c (CHAR_COMPOSED_P): If the bidi_p flag is not set, pass -1 to composition_reseat_it, so that the shaping engine will figure out the directionality of the text. This is important, e.g., when using move_it_* functions in some context that is not redisplay, such as 'window-text-pixel-size'. (Bug#44521)
This commit is contained in:
parent
e693d97e50
commit
13ab70c80e
11
src/xdisp.c
11
src/xdisp.c
@ -7221,14 +7221,21 @@ static next_element_function const get_next_element[NUM_IT_METHODS] =
|
||||
|
||||
|
||||
/* Return true iff a character at CHARPOS (and BYTEPOS) is composed
|
||||
(possibly with the following characters). */
|
||||
(possibly with the following characters).
|
||||
|
||||
Note: we pass -1 as the "resolved bidi level" when the iterator
|
||||
doesn't have the bidi_p flag set, because in that case we really
|
||||
don't know what is the directionality of the text, so we leave it to
|
||||
the shaping engine to figure that out. */
|
||||
|
||||
#define CHAR_COMPOSED_P(IT,CHARPOS,BYTEPOS,END_CHARPOS) \
|
||||
((IT)->cmp_it.id >= 0 \
|
||||
|| ((IT)->cmp_it.stop_pos == (CHARPOS) \
|
||||
&& composition_reseat_it (&(IT)->cmp_it, CHARPOS, BYTEPOS, \
|
||||
END_CHARPOS, (IT)->w, \
|
||||
(IT)->bidi_it.resolved_level, \
|
||||
(IT)->bidi_p \
|
||||
? (IT)->bidi_it.resolved_level \
|
||||
: -1, \
|
||||
FACE_FROM_ID_OR_NULL ((IT)->f, \
|
||||
(IT)->face_id), \
|
||||
(IT)->string)))
|
||||
|
Loading…
Reference in New Issue
Block a user