unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Yuri D'Elia <wavexx@thregr.org>
To: Eli Zaretskii <eliz@gnu.org>
Cc: larsi@gnus.org, emacs-devel@gnu.org, monnier@iro.umontreal.ca,
	dgutov@yandex.ru
Subject: Re: Incorrect font weight selected
Date: Wed, 05 Jan 2022 18:11:50 +0100	[thread overview]
Message-ID: <87r19mulkg.fsf@wavexx.thregr.org> (raw)
In-Reply-To: <83ee5m9kp7.fsf@gnu.org>

On Wed, Jan 05 2022, Eli Zaretskii wrote:
> Thanks, but this is a scary change.  I have no idea what unintended
> consequences it could cause.

At least on X11, I've tried creating frames both normally, using the
daemon (across x11 and terminal sessions), and generally I've been using
this for about a week.

> Can we back up a bit, and understand how the change in 1b2511f
> triggered the problems you see?  If you already understand that, can
> you describe it?  Maybe we could then come up with a safer, better
> understood change.  If nothing better comes to mind, I'd prefer to
> revert 1b2511f than doing something like what you propose.

Overall, the change in 1b2511f seems correct to me. font_list_entities
(and the downstream font_delete_unmatched as touched by 1b2511f) can
return a list of candidates which can be used subsequently for
refinement.

If you look at the main font_find_for_lface which is where the action
takes place, this is done by using font_list_entities first, then using
font_select_entity to narrow it down further. This works as intended
already, and that's why the problem only showed itself on new frames
and/or with the daemon (which doesn't immediately create a frame).

When creating a new frame though, the attributes do not come from the
existing face spec the user supplied, but are are reconstructed from the
full font name that matched in the first frame instead.

I wrote above my guess about why this seems to be done in this way. We
could probably do better by re-using the attributes in the frame that
called make-frame (if that frame is of the same type as the new frame),
but that requires a bit more work.

So in the end we're left with font_open_by_name, which is passed a fully
qualified font pattern/name, parses it, but then resets the attributes
for selection, discarding the font attributes as set by the user. It
used to work as the returned entities only matched the requested font
exactly, so no selection ever took place.

The original commit introducing font_open_by_name also has the attribute
override, so that commit doesn't really tell me much about it. Maybe
font_list_entities never returned multiple weights/slants as we're doing
now, so the problem went unnoticed for a long time.

Or something else I don't see in the other font backends. Still, I do
support the change in 1b2511f despite the breakage. I'd rather fight
with the breakage introduced by this change.



  reply	other threads:[~2022-01-05 17:11 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-17 14:51 Incorrect font weight selected Yuri D'Elia
2021-12-17 18:55 ` Eli Zaretskii
2021-12-17 19:47   ` Yuri D'Elia
2021-12-17 20:27     ` Eli Zaretskii
2021-12-17 21:25       ` Yuri D'Elia
2021-12-18  6:32         ` Eli Zaretskii
2021-12-18 10:43           ` Yuri D'Elia
2021-12-18 11:41             ` Eli Zaretskii
2021-12-18 12:00               ` Yuri D'Elia
2021-12-18 12:49                 ` Eli Zaretskii
2021-12-19 11:14                   ` Yuri D'Elia
2021-12-19 12:46                     ` Eli Zaretskii
2021-12-19 13:17                       ` Yuri D'Elia
2021-12-19 13:32                         ` Lars Ingebrigtsen
2021-12-19 23:24         ` Yuri D'Elia
2021-12-20 10:34           ` Lars Ingebrigtsen
2021-12-20 19:43             ` Stefan Monnier
2021-12-20 19:52               ` Eli Zaretskii
2021-12-20 20:14                 ` Stefan Monnier
2021-12-20 20:19                   ` Eli Zaretskii
2021-12-21  4:22                     ` Dmitry Gutov
2021-12-21 12:18                       ` Eli Zaretskii
2021-12-21 12:27                         ` Yuri D'Elia
2021-12-21 14:19                           ` Eli Zaretskii
2022-01-05 16:19                             ` Yuri D'Elia
2022-01-05 17:05                               ` Eli Zaretskii
2022-01-05 17:11                                 ` Yuri D'Elia [this message]
2022-01-05 18:04                                   ` Eli Zaretskii
2022-01-05 18:08                                     ` Yuri D'Elia
2022-01-05 19:07                                       ` Eli Zaretskii
2022-01-05 23:16                                         ` Yuri D'Elia
2022-01-06  7:09                                           ` Eli Zaretskii
2022-01-06  9:46                                             ` Yuri D'Elia
2022-01-06 12:22                                               ` Eli Zaretskii
2022-01-05 21:57                                       ` Dmitry Gutov
2022-01-05 23:15                                         ` Yuri D'Elia
2022-01-05 23:15                                         ` Yuri D'Elia
2022-01-06  5:15                                       ` Sean Whitton
2022-01-06  0:41                               ` Po Lu
2022-01-06  0:54                                 ` Po Lu
2022-01-06  9:49                                 ` Yuri D'Elia
2022-01-06 12:21                                   ` Eli Zaretskii
2021-12-21 13:52                       ` John ff
2021-12-20 20:05               ` Stefan Monnier
2021-12-20 15:16           ` Eli Zaretskii
2021-12-18 23:26 ` Sean Whitton
2021-12-19  6:44   ` Eli Zaretskii
2021-12-19 11:29     ` Yuri D'Elia
2021-12-19 12:52       ` Eli Zaretskii
2021-12-19 12:57         ` Yuri D'Elia
2021-12-19 13:32           ` Eli Zaretskii
2021-12-19 21:03         ` Sean Whitton
2021-12-19 22:04           ` Yuri D'Elia
2021-12-19 22:39             ` Sean Whitton
2021-12-20 21:59           ` Sean Whitton

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87r19mulkg.fsf@wavexx.thregr.org \
    --to=wavexx@thregr.org \
    --cc=dgutov@yandex.ru \
    --cc=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=larsi@gnus.org \
    --cc=monnier@iro.umontreal.ca \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).