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

From: Visuwesh <[email-masked]>
Date: Wed, 30 Oct 2024 11:13:21 +0530

[செவ்வாய் அக்டோபர் 29, 2024] Eli Zaretskii wrote:

>> Thank you very much for the clear instructions.  I was testing this in a
>> fresh Emacs session.  And
>> 
>>     (gdb) pp composition_gstring_from_id(ID)
>> 
>> seems to show nothing?
>> 
>>     (gdb) c
>>     Continuing.
>> 
>>     Thread 1 "emacs" hit Breakpoint 3, set_cursor_from_row (w=0x55b8c994f338, row=0x55b8c9e20410, matrix=0x55b8c9960480, delta=0, delta_bytes=0, dy=0, dvpos=0) at xdisp.c:18217
>>     18217	  struct glyph *glyph = row->glyphs[TEXT_AREA];
>>     (gdb) pgrow
>>     TEXT: 4 glyphs
>>       0    0: COMP[16 (0..0)] pos=5 w=9 a+d=14+4 face=28 MB
>>       1    9: COMP[16 (1..1)] pos=6 w=9 a+d=14+4 face=28 MB
>>       2   18: COMP[16 (2..2)] pos=7 w=9 a+d=14+4 face=28 MB
>>       3   27: CHAR[ ] pos=0 blev=0,btyp=B w=9 a+d=14+4 MB
>>     (gdb) pp composition_gstring_from_id(16)
>>     (gdb) p composition_gstring_from_id(16)
>>     $1 = XIL(0x55b8cada607d)
>> 
>> Am I missing something?
>
> Maybe your Emacs is not built with enough debug info?

I built a debug version of Emacs specifically for this.

    ./configure --with-sound=alsa --with-x-toolkit=lucid --without-xaw3d \
                --without-gconf --without-libsystemd --with-cairo \
                --enable-checking='yes,glyphs' \
                --enable-check-lisp-object-type CFLAGS='-O0 -g3'

> What does this produce:
>
>   (gdb) p composition_gstring_from_id(16)
>   $1 = XIL(0x55b8cada607d)
>   (gdb) xpr
>
> If this doesn't work, either, you will have to decypher
> XIL(0x55b8cada607d) "by hand", using xvector etc...  I can give you
> instructions for that as well.

    (gdb) p composition_gstring_from_id(16)
    $3 = XIL(0x55b8cada607d)
    (gdb) xpr
    Lisp_Vectorlike
    PVEC_NORMAL_VECTOR
    $4 = (struct Lisp_Vector *) 0x55b8cada6078
    {XIL(0x55b8cada60ad), make_fixnum(16), XIL(0x55b8cada60d5), XIL(0x55b8cada612d), XIL(0x55b8cada6185)}

So I am guessing we do need to decypher it "by hand"?