Subject: Re: bug#25216: 26.0.50 [regression]; Curly quotes are not found in some sizes of ‘Terminus’ font

From: Dmitry Alexandrov <[email-masked]>
Date: Sat, 31 Dec 2016 08:56:21 +0300

>> > And I still don't understand why you need that.  AFAICS, Emacs
>> > explicitly tries to use the default font for punctuation and symbol
>> > characters before falling back on looking up other fonts.
>> 
>> Do you mean that you could not reproduce this?
>
> It means I don't understand how it could happen.  The function
> face_for_char (defined in fontset.c) explicitly tries the current
> default font for any punctuation and symbol character, before it
> starts looking in other fonts.  I don't understand why this fails for
> you, and only in certain font sizes on top of that.  Perhaps you could
> step through that code with a debugger and see what happens there?

Well.  font_has_char of font.c:2989 returns 0 ← xftfont_has_char of xftfont.c:532 returns 0 ← XftCharExists of libXft.so.2 returns 0.

So the problem goes into libxft2.

Thus the possible workaround may be to prefer ‘x’ backend for font rendering:

   $ emacs -q -fn '-*-terminus-*-18-*-iso10646-1' -xrm 'emacs.fontBackend: x,xft'

However, by a fluke dropping ‘x’ entirely also conceals the issue at least on my system:

   $ emacs -q -fn '-*-terminus-*-18-*-iso10646-1' -xrm 'emacs.fontBackend: xft'

Only that (which is presumably the default) leads to the problem:

   $ emacs -q -fn '-*-terminus-*-18-*-iso10646-1' -xrm 'emacs.fontBackend: xft,x'

At least it’s now clear what’s so special about combination of Terminus and GNU Emacs — the former it is a rare example of a font that is available through both of font engines, the latter — of an application that uses both of them.