GNU bug report logs -
#59802
30.0.50; Checkbox button not rendered
Previous Next
Reported by: Manuel Giraud <manuel <at> ledu-giraud.fr>
Date: Sat, 3 Dec 2022 10:41:02 UTC
Severity: minor
Found in version 30.0.50
Done: Eli Zaretskii <eliz <at> gnu.org>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
On Sun, 11 Dec 2022 17:54:00 +0200 Eli Zaretskii <eliz <at> gnu.org> wrote:
>> From: Stephen Berman <stephen.berman <at> gmx.net>
>> Cc: manuel <at> ledu-giraud.fr, 59802 <at> debbugs.gnu.org
>> Date: Sun, 11 Dec 2022 14:12:09 +0100
>>
>> When I visit the SVG image file the image scales without any display
>> problem, so the problem apparently only arises with text scaling. And
>> not just via face-remapping with text-scale-mode: when I evaluate
>> (set-face-attribute 'default nil :height 200) and then insert
>> emacs/etc/images/checked.svg with insert-image-file, the bottom half of
>> the image is truncated like in the "+4" buffer in the screenshot I
>> attached to my first post in this thread. (When the image is displayed
>> via put-text-property, explicitly passing `:ascent center' does correct
>> the initial alignment, but on increasing the font size with `C-x C-+'
>> the image still gets pushed down just like in the screenshot I posted.)
>
> In the Custom buffers, we already use ":ascent center" for images, so
> they should scale correctly. If they don't, the place to look is in
> the produce image_glyph function: look at the values of ascent and
> descent computed there. Maybe something goes wrong there when the SVG
> images are scaled.
Here's what I tried and the output I got:
I started gdb with `M-x gdb' and set a breakpoint at xdisp.c:30795,
which is the first line after these two lines:
it->ascent = it->phys_ascent = glyph_ascent = image_ascent (img, face, &slice);
it->descent = slice.height - glyph_ascent;
Then I started emacs -Q, typed `M-x customize-face RET bold RET' and hit
the breakpoint. Now the *locals of emacs* buffer displayed this:
struct it * it 0x7fffffff8a70
struct it * it <at> entry 0x7fffffff8a70
struct image * img 0x5555563f5fb0
struct face * face 0x555555e5ca10
int glyph_ascent 13
int crop <optimized out>
struct glyph_slice slice { x = 0, y = 0, width = 16, height = 16 }
In the *gud-emacs* buffer I typed `pp it->ascent' and then `pp
it->descent' and the *input/output of emacs* buffers displayed this:
#<INVALID_LISP_OBJECT 0x0000000d>
#<INVALID_LISP_OBJECT 0x00000003>
In the *gud-emacs* buffer I typed `c', which immediately hit the
breakpoint again. I then kept typing RET until the Emacs being debugged
became accessible, now showing the *Customize Face: Bold* buffer. Now
the *locals of emacs* buffer displayed this:
struct it * it 0x7fffffff8a70
struct it * it <at> entry 0x7fffffff8a70
struct image * img 0x5555569f4dd0
struct face * face 0x555555e5ca10
int glyph_ascent 12
int crop <optimized out>
struct glyph_slice slice { x = 0, y = 0, width = 15, height = 15 }
In the *Customize Face: Bold* buffer I typed `C-x C-+' and hit the
breakpoint again, and the *locals of emacs* buffers now displayed this:
struct it * it 0x7fffffff8a70
struct it * it <at> entry 0x7fffffff8a70
struct image * img 0x5555560bcc00
struct face * face 0x5555562f4110
int glyph_ascent 14
int crop <optimized out>
struct glyph_slice slice { x = 0, y = 0, width = 16, height = 16 }
In the *gud-emacs* buffer I again typed `pp it->ascent' and then `pp
it->descent', which added the following to *input/output of emacs*:
3
0
I repeated the above steps for a few more iterations, getting similar
output: glyph_ascent ranged from 12 to 19; width and height switched
back and forth between 15 and 16; the following values of it->ascent and
it->descent were added to *input/output*:
#<INVALID_LISP_OBJECT 0x00000001>
#<INVALID_LISP_OBJECT 0x0000000f>
#<INVALID_LISP_OBJECT 0x00000001>
#<INVALID_LISP_OBJECT 0x0000000f>
#<INVALID_LISP_OBJECT 0x00000001>
#<INVALID_LISP_OBJECT 0x0000000f>
#<INVALID_LISP_OBJECT 0x00000001>
#<INVALID_LISP_OBJECT 0x00000010>
nil
4
-1
#<INVALID_LISP_OBJECT 0x00000013>
#<INVALID_LISP_OBJECT 0xfffffffffffffffd>
At this point the latter two values repeated for two iterations, then
when the *Customize* buffer became accessible again, with text scaling
at +5, I could now type `C-x C-+' without hitting the breakpoint. I
went as far as +12, then typed `C-x C--' and when the scaling got back
down to +6 again, that hit the breakpoint again. Now the values
returned by `pp it->ascent' and `pp it->descent' were again the last two
above.
If this isn't isn't useful, please advise me what to do.
Steve Berman
This bug report was last modified 2 years and 157 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.