GNU bug report logs -
#33885
27.0.50; PUA character makes emacs crash
Previous Next
Reported by: Werner LEMBERG <wl <at> gnu.org>
Date: Thu, 27 Dec 2018 08:56:01 UTC
Severity: normal
Tags: moreinfo
Found in version 27.0.50
Fixed in version 29.1
Done: Lars Ingebrigtsen <larsi <at> gnus.org>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
>> We rather have to check how the `Cardo' fonts get loaded into
>> Emacs; it looks as if the global font descent value is incorrect.
>> Please tell me (a) how to identify the font used for U+E6A3, and
>> (b) where to set a breakpoint to see the font loading in action.
>
> (a) font->props[2] names the font, so:
>
> (gdb) pp font->props[2]
>
> should display its name in human-readable form.
Thanks. This indeed gives `Cardo'.
> (b) Given your list of features, which includes XFT, I think you
> want to set a breakpoint in xftfont_open, where there's a call to
> XftFontOpenPattern.
OK. `XftFontOpenPattern' returns the following data for `Cardo':
(gdb) p *xftfont
$12 = {
ascent = 16,
descent = -5,
height = 6,
max_advance_width = 91,
charset = 0x7fffe23d52d8,
pattern = 0x1f01050
}
This is problematic, since it only reflects the Apple values for
ascent and descent (i.e., the data in the font's `hhea' table). To
solve the issue, there are two possible solutions IMHO.
(1) Simply accept whatever `XftFontOpenPattern' returns, including
negative values for `descent' – actually, such font might exist:
for example, consider a special font that only contains dashes of
different length.
(2) Improve the heuristics to get sensible global ascent and descent
values of a font. In particular, use the FreeType library to
access a TrueType's or OpenType's `OS/2' table and compare its
vertical metrics values with the `hhea' data to eliminate bugs in
the font – sign problems with `descent' do happen especially in
older fonts that were either designed for Apple or for Windows,
and the fields for the `other' OS were filled out arbitrarily,
more or less.
Werner
This bug report was last modified 3 years and 73 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.