Subject: Re: bug#54646: 29.0.50; set-fontset-font and font clipping issues

From: Visuwesh <[email-masked]>
Date: Fri, 01 Apr 2022 18:40:30 +0530

[வெள்ளி ஏப்ரல் 01, 2022] Eli Zaretskii wrote:

>> From: Visuwesh <[email-masked]>
>> Cc: Robert Pluim <[email-masked]>,  [email-masked]
>> Date: Fri, 01 Apr 2022 17:08:59 +0530
>> 
>> > I think at this point we need to establish whether we pass the same
>> > information to HarfBuzz in the "good" and the "bad" cases.  In
>> > particular, we tell it how to scale the glyph metrics:
>> >
>> >   hb_font_t *hb_font
>> >     = font->driver->begin_hb_font
>> >     ? font->driver->begin_hb_font (font, &position_unit)
>> >     : NULL;
>> >
>> > The value of position_unit then affects the values returned in the
>> > Lisp glyph object used to display the grapheme cluster:
>> >
>> >       xoff = lround (pos[i].x_offset * position_unit);
>> >       yoff = - lround (pos[i].y_offset * position_unit);
>> >       wadjust = lround (pos[i].x_advance * position_unit);
>> >       if (xoff || yoff || wadjust != metrics.width)
>> > 	LGLYPH_SET_ADJUSTMENT (lglyph, CALLN (Fvector,
>> > 					      make_fixnum (xoff),
>> > 					      make_fixnum (yoff),
>> > 					      make_fixnum (wadjust)));
>> >
>> > I'd be interested in what happens there in the "good" vs the "bad"
>> > cases.
>> >
>> > If we pass the same information to HarfBuzz, and it returns different
>> > results, then it's probably a problem in HarfBuzz.
>> 
>> If you can give some instructions on how to get started, I can try
>> getting the value of position_unit in the good and the bad cases.
>
> I don't think I understand where to begin the instructions.  Are you
> familiar with running Emacs under GDB and debugging the C code?  

Unfortunately not, but the printf option sounds feasible.  So I will do
that.

> If so, setting a breakpoint in the code which I quoted (it's in
> hbfont.c) and showing the values in both the "good" and the "bad"
> cases is what we need.
>

I get two matches for the first snippet: in hbfont_shape and in
hbfont_otf_capability.  I assume I have to check the one in
hbfont_shape?

> Alternatively, you could add printf statements in that code which
> would output those values to stdout or stderr streams.