Subject: bug#69384: 30.0.50; :align-to and bidi-paragraph-direction interaction

From: Eli Zaretskii <[email-masked]>
Date: Sun, 25 Feb 2024 19:35:22 +0200

> From: Stephen Berman <[email-masked]>
> Cc: [email-masked]
> Date: Sun, 25 Feb 2024 18:17:35 +0100
> 
> >> 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).

I don't understand well enough what were you trying to achieve, so I
cannot suggest how to do that.

> >> 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.

What do you mean by "first column (0) in LTR order"?  D|o you mean the
leftmost column in the visual order? something else?

> > 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

OK, I will look into that when I have time.

> 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?

It's supposed to be a no-op, of course.  Exactly like in the strict
LTR unidirectional text.  What else can it mean?