bug-gnu-emacs
[Top][All Lists]
Advanced

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

bug#19117: 25.0.50; emacs on x11 chooses different fonts for the same fa


From: Dima Kogan
Subject: bug#19117: 25.0.50; emacs on x11 chooses different fonts for the same face sometimes
Date: Tue, 30 Dec 2014 10:33:17 -0800

Stefan Monnier <monnier@iro.umontreal.ca> writes:

>> 2. Do not set scalable-fonts-allowed to t in realize_basic_faces(). Does
>> anybody know why this is desirable?
>
> Have you looked at the "git blame" output to try and see when/why we do that?

I did look at earlier it without any particular enlightenment. But I
just looked at it again, and it IS helpful, actually. This is all from
2001, written by Gerd Moellmann. Here are the changes in chronological
order

https://github.com/emacs-mirror/emacs/commit/702a1e8e
https://github.com/emacs-mirror/emacs/commit/441bf856
https://github.com/emacs-mirror/emacs/commit/eeffb293

The logic was using a realizing_default_face_p variable (changed in the
last commit), anad roughtly it did this:

x_face_list_fonts()
{
  get_all_fonts();
  for(fonts)
  {
      if(!font_scalable)
          add to list;
  }

  if (realizing_default_face_p
      && no fonts in list
      && some were scalable)
  {
      for(fonts)
      {
          if(!font_scalable)
              add to list;
      }
  }
  ...
}

So we only added the scalable fonts if no other fonts were found. The
new logic does not do this; it always adds the scalable fonts. The
docstring of scalable-fonts-allowed further indicates that the original
intent was a last-resort like before:

 Note that if value is nil, a scalable font might still be used, if no
 other font of the appropriate family and registry is available.

I will patch xfont_list_pattern() to accept a 3rd type of
scalable-fonts-allowed: 'fallback where we add these fonts only if no
others are available, and in realize_basic_faces() I'll use THAT value.
Does that sound reasonable?





reply via email to

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