emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: What is a default font?


From: martin rudalics
Subject: Re: What is a default font?
Date: Sat, 7 Dec 2019 10:39:00 +0100

>>           (not (string-equal (frame-parameter frame 'font) default-font)))
>>         (aref (font-info default-font frame) 3))
>
> Not sure I get the logic here: you use default-font if the frame's
> font is NOT the default-font?

I simply reused the specification from 'default-font-height' here with
FRAME specifying some frame, not necessarily the selected one.

           ;; Avoid calling font-info if the frame's default font was
           ;; not changed since the frame was created.  That's because
           ;; font-info is expensive for some fonts, see bug #14838.
           (not (string= (frame-parameter nil 'font) default-font)))
      (aref (font-info default-font) 3))

Do you see anything wrong with that?

>> And I'd still like to know what 'face-new-frame-defaults' is really
>> used for.
>
> The commentary at the beginning of xfaces.c says:
>
>     There is also a global face alist `Vface_new_frame_defaults'.  Face
>     definitions from this list are used to initialize faces of newly
>     created frames.
>
> If this is unclear, please ask more specific questions.

This variable has 258 x 21 elements all of them unspecified starting
like this here:

((custom-group-subtitle .
  [face unspecified unspecified unspecified unspecified unspecified unspecified 
unspecified unspecified unspecified unspecified unspecified unspecified 
unspecified unspecified unspecified unspecified unspecified unspecified 
unspecified])
 (custom-group-tag .
  [face unspecified unspecified unspecified unspecified unspecified unspecified 
unspecified unspecified unspecified unspecified unspecified unspecified 
unspecified unspecified unspecified unspecified unspecified unspecified 
unspecified])
 (custom-group-tag-1 .
  [face unspecified unspecified unspecified unspecified unspecified unspecified 
unspecified unspecified unspecified unspecified unspecified unspecified 
unspecified unspecified unspecified unspecified unspecified unspecified 
unspecified])
 (custom-face-tag .
  [face unspecified unspecified unspecified unspecified unspecified unspecified 
unspecified unspecified unspecified unspecified unspecified unspecified 
unspecified unspecified unspecified unspecified unspecified unspecified 
unspecified])
 ...

No matter what I do, the elements of each entry are to the best of my
knowledge nowhere changed and nowhere "really" used ('face-list' just
using the cars only).

The one potential use case I've seen (and obviously the use case that
would have interested me) is, when calling 'face-font' with the second
argument t in which case it calls lface_from_face_name with the first
argument NULL which then calls lface_from_face_name_no_resolve which
consults Vface_new_frame_defaults which, however, does never return
anything useful.  So the return value of 'face-font' is always nil
when the second argument is t.

So the specific question I ask is whether it makes sense to maintain
such a large variable that apparently never provides anything useful.

martin



reply via email to

[Prev in Thread] Current Thread [Next in Thread]