GNU bug report logs -
#69384
30.0.50; :align-to and bidi-paragraph-direction interaction
Previous Next
Reported by: Stephen Berman <stephen.berman <at> gmx.net>
Date: Sun, 25 Feb 2024 16:24:02 UTC
Severity: normal
Found in version 30.0.50
Done: Eli Zaretskii <eliz <at> gnu.org>
Bug is archived. No further changes may be made.
Full log
Message #11 received at 69384 <at> debbugs.gnu.org (full text, mbox):
On Sun, 25 Feb 2024 18:47:48 +0200 Eli Zaretskii <eliz <at> gnu.org> wrote:
>> Date: Sun, 25 Feb 2024 17:22:45 +0100
>> From: Stephen Berman via "Bug reports for GNU Emacs,
>> the Swiss army knife of text editors" <bug-gnu-emacs <at> gnu.org>
>>
>> In a buffer that contains bidirectional text, setting
>> bidi-paragraph-direction to 'left-to-right aligns the RTL text with the
>> left margin like the LTR text; see the first sexp below and the top
>> buffer in the attached screenshot.
>
> Yes, and that's what you should expect. That's what
> bidi-paragraph-direction set to left-to-right means: the base
> paragraph direction of every paragraph in this buffer will be LTR. If
> you think this is a bug or unexpected, please tell why.
No, this is indeed what I expected (see below for elaboration).
>> Another alternative to get this alignment is to leave
>> bidi-paragraph-direction at its default value of nil and use a space
>> display specification with a suitable value for the :align-to property,
>> but this requires a calculation that seems to depend at least on the
>> font used and the values of `window-width' and `string-width' for the
>> string used (or the corresponding pixel-width values); see the second
>> sexp below and the middle buffer in the attached screenshot.
>
> Yes, because in a RTL paragraph, columns are counted from the right
> edge of the window. So this again is the expected behavior, and if
> you consider that unexpected, please explain why.
This is also what I expected. But it would be nice if there were an
easier way to calculate the value of :align-to (I looked in the Elisp
manual but didn't find anything that would give me the value 0.75 I
found by trial and error).
>> It's also possible to avoid this calculation and use an :align-to value
>> of 0 in combination with setting bidi-paragraph-direction to
>> 'left-to-right;
>
> What is the purpose of using ":align-to 0"? what do you think is the
> semantics of that and your expectations?
I wanted to align to the first column (0) in LTR order, for which it's
necessary set bidi-paragraph-direction to 'left-to-right. The resulting
alignment is what I wanted and expected, but the broken shaping is not.
>> see the third sexp below and the bottom buffer in the
>> attached screenshot. However, as the screenshot shows, this last
>> alternative breaks Arabic text shaping, at least for the fonts I tried
>
> I will look into the shaping problem, but in general 'display' specs
> do affect bidirectional display; see the end of the node "Specified
> Space" in the ELisp manual.
>
> Still, I don't think I understand what are you reporting as a bug
> here. Please clarify.
Sorry for not being clearer in my report: the bug is the broken shaping
with the combination of setting bidi-paragraph-direction and using
:align-to; the first two examples were meant to show that using these
individually also works. But I gather from your reply that I've
misunderstood what :align-to set to 0 means; can you enlighten me?
Steve Berman
This bug report was last modified 1 year and 88 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.