Subject: Re: bug#73752: 29.4; Ligatures are randomly rendered with extra spaces

From: Eli Zaretskii <[email-masked]>
Date: Sun, 27 Oct 2024 21:44:49 +0200

> Date: Sun, 27 Oct 2024 15:36:06 -0400
> Cc: [email-masked], [email-masked], [email-masked]
> From: Yixuan Chen <[email-masked]>
> 
> On 10/27/24 15:14, Eli Zaretskii wrote:
> >> Date: Sun, 27 Oct 2024 13:46:55 -0400
> >> Cc: [email-masked], [email-masked], [email-masked]
> >> From: Yixuan Chen <[email-masked]>
> >>
> >>> Sorry, I still don't understand.  Your code does
> >>>
> >>>     (highlight-lines-matching-regexp (cdr face) (car face))
> >>>
> >>> This potentially shows each line in a different face, and thus can
> >>> affect the metrics of the SPC character glyph which is what the
> >>> indentation is made of.  So why is this a problem, let alone a bug?
> >>
> >> The problem is executing that line at 10PM today may render the font one
> >> way, while executing that line at 6AM tomorrow (with exactly the same
> >> "face" variable) may render the font a different way, even if all the
> >> other variables remains the same.
> > 
> > But you modify the faces in a random fashion, so why is this a
> > surprise that it is not deterministic?
> 
> I said,
> 
>  > ... (with exactly the same "face" variable) ... even if all the
>  > other variables remains the same.
> 
> Yes, this script is modifying the scripts in a random fashion, but let's 
> imagine this:
> 
> 1. the first time I open emacs, start the script and it randomizes the 
> first line to a combination of face attributes (let's say (16, bold, 
> regular)) in 5 seconds after going through 50 different combinations, it 
> looks one way.
> 
> 2. I restart emacs, start the script and it randomizes the first line to 
> the same combination of face attributes (16, bold, regular) in 5 minutes 
> after going through 3000 combinations, it looks differently from the 
> first time,
> 
> Do you agree that in both cases that single line should look the same? 
> And they should always look the same as long as the randomization hits 
> (16, bold, regular) on that line regardless of time and previous history?

That depends when redisplay kicks in, between your face
randomizations.  Among other factors.

And I still fail to understand why this largely artificial program is
important to investigate.  Are there any real-life cases where you see
the same face displayed differently when ligatures are involved?  If
not, what useful stuff will we learn by digging into this, especially
since reproducing the problem is so hard?