Subject: bug#44632: 27.1.50; Left-to-right Arabic shaping breaks at property bounds

From: Thamer Mahmoud <[email-masked]>
Date: Sun, 22 Nov 2020 19:58:03 +0300

Eli Zaretskii <[email-masked]> writes:

>> From: Thamer Mahmoud <[email-masked]>
>> Date: Sat, 14 Nov 2020 15:42:35 +0300
>>
>> (with-current-buffer-window "*shaping testcase*" nil nil
>>   (insert "L2R عربي" "\n\n")
>>   (insert "عربي")
>>   (put-text-property 5 6 'face 'highlight)
>>   (put-text-property 11 12 'face 'highlight))
>>
>> 2. Notice the AIN(ع) in the L2R paragraph has the wrong shape.
>
> This is a known limitation of the current Emacs display engine: it
> cannot shape text across face changes.  All the text that needs to be
> shaped must have the same face.  This problem has existed since Emacs
> 21.
>
> Fixing this limitation would require a more or less complete redesign
> of how the display engine scans the buffer text, or maybe some radical
> changes in how character composition is handled.  Until one of these
> changes, this problem will remain unsolved, sorry.

Shaping across face changes works for me in R2L paragraphs, but not in
L2R. See the attached screenshot.

Wouldn't it be possible to extend the same behavior that is currently
working fine in R2L paragraphs to also apply to L2R ones?

Thanks.