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

From: Dmitry Alexandrov <[email-masked]>
Date: Mon, 19 Dec 2016 06:17:57 +0300

> It doesn't surprise me.  What I don't understand is why this happens.
> Emacs explicitly tests the default font for supporting any symbol or
> punctuation character it needs to display, before it looks for another
> font.  See the function face_for_char in fontset.c.
>
>> Aha!  Thanks.  The exact problematic commit is ‘2276a19d’ [0].
>> 
>> By the way, how could I prove that without rebuilding the whole Emacs?  I tried:
>> 
>>    $ git show 2276a19^:lisp/international/fontset.el > /tmp/lisp/fontset.el
>>    $ emacs --directory /tmp/lisp --quick --font '-*-terminus-medium-r-*-*-20-*-*-*-*-*-*-*'
>> 
>> Despite that:
>> 
>>    (locate-library "fontset")
>>         ⇒ "/tmp/lisp/fontset.el"
>> 
>> I did not see any effect.
>
> You must rebuild Emacs or manually load fontset.el after changing it.
> fontset.el is preloaded when Emacs is built.

So I need to use ‘temacs’?  Yes, that works, thank you.

>> > I think you should be able to force Emacs to use your font for these
>> > characters by using set-fontset-font for the range of codepoints you
>> > want to be displayed by the Terminus font.
>> 
>> Yes, indeed.  Many thanks.
>> 
>>    (set-fontset-font "fontset-default" '(#x2000 . #x2067) "Terminus")
>> 
>> However, It might be even better if I could erase that rule, as if
>> there were no lines about that range in ‘fontsel.el’. Is it
>> possible?
>
> That would adversely affect all the users.  We arrived at that rule
> after many complaints that symbol and punctuation characters are not
> displayed at all, or displayed using variable-pitch fonts, so we made
> the default fontset "smarter" about that by using fonts people
> generally have installed and which are the default fonts in Emacs.

Well, I’m the only user on most my machines, so that’s probably bearable.  However, we apparently misunderstood each other — I did not ask how to patch ‘fontsel.el’ machine-wide (I hope, I do understand how to do that).  I meant, is it possible to remove elements from the default fontset *user-wide*?  ‘Terminus’ is not the only font I use, so that would be cleaner than appending it there.

I read (info "(emacs) Fontsets"), it did not help.  I could not even get yet how to show the current value of a certain fontset.