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: Mon, 19 Dec 2016 07:52:42 +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.
>
> If you want to rebuild Emacs, then yes, you will need to run the
> command which dumps it after changing fontset.el.

So there is another way?  Mere (load "/tmp/lisp/fontset.el") have no use after built-in ‘fontset’ is already loaded of course.  I’m just curious.

>> >> 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.
>
> No, I meant all the users of Emacs, world wide.
>
>> 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.
>
> You don't need (and cannot, AFAIK) to remove that.  What you need is
> to prepend your rules, which will override what's there.  Like this:
>
>  (set-fontset-font "fontset-default" '(#x2000 . #x2067) "Terminus" nil 'prepend)
>
> Note the "prepend" part.

Okay, if I can’t, I can’t.  As for ‘prepend’ it actually works all three ways for me: obviously ‘nil’ (for override, not what I want), ‘prepend’ (as expected) and ‘append’ (no idea why).