all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: Nicolas Ouellet-payeur <nicolaso@google.com>
Cc: lumarzeli30@gmail.com, emacs-devel@gnu.org
Subject: Re: Supporting stylistic sets
Date: Fri, 23 Sep 2022 21:09:27 +0300	[thread overview]
Message-ID: <83h70yotd4.fsf@gnu.org> (raw)
In-Reply-To: <CADuLPF5Qc2_2pDjzKndn_f8i41SWkYuCV4L7EYCr4uCEueB7Ww@mail.gmail.com> (message from Nicolas Ouellet-payeur on Fri, 23 Sep 2022 13:31:30 -0400)

> From: Nicolas Ouellet-payeur <nicolaso@google.com>
> Date: Fri, 23 Sep 2022 13:31:30 -0400
> Cc: Eli Zaretskii <eliz@gnu.org>, emacs-devel@gnu.org
> 
> > How did you envision this font property to be used in Emacs?
> >
> > The etc/TODO item for that suggests to implement this as a text
> > property instead.  That is, of course, not carved in stone, but I
> > think we should in any case decide on how this will be used from Lisp
> > before we talk about how to expose it to Lisp.
> 
> Personally, I think a font property is easier to configure. I can use
> customize or set-face-attribute to set how I want a font to look.
> Ideally, I would like to do something like this:
> 
>   (set-face-attribute
>    'default nil
>    :stylistic-sets '("cv01" "cv02" "cv03"))

This is not a font property, this is a face property.  It will be in
effect for every font used for the default face, including fonts used
for non-ASCII characters, like CJK and Emoji.  Are you sure this is
what you want?

I'm not against adding a face property, I just think it isn't enough,
even if that's what people will want.

Also, AFAIU this feature is meant for special styling of select text
segments, not for the entire buffer.

> This uses my chosen stylistic sets everywhere with a single line of
> Lisp. If I don't like having it *everywhere* (e.g. minibuffer,
> mode-line), I can still set it separately for each face.

That'd be very tedious, since Emacs uses so many different faces.

> With a text property, I'd have to hook into everything that displays
> text, somehow, and add the text property there.

Yes.

Maybe we should talk about higher-level use cases: when and why would
one want to use stylistic-sets in Emacs?

> Also, while we're on this topic: I'm working on a patch to pass *all*
> strings/buffer contents to hbfont_shape() during redisplay, and making
> all text a composition. That way we could have stylistic sets for Latin
> scripts as well (and most other scripts), not just "composed" scripts
> like Bengali and Arabic. It'd also achieve "Support ligatures out of the
> box" from etc/TODO, by giving HarfBuzz the means to shape text properly.

I think you will find out that this makes Emacs redisplay unbearably
slow.  IMO, it is impractical to shape everything via a shaping engine
without completely redesigning how we handle character compositions in
the display engine, because what we have now was not designed to be
used for all the text we display.  And the main difficulty with such a
redesign is to do it in a way that still allows easy customization of
composition rules from Lisp.

> This would be nice for fonts like Fira Code [1], which has both
> ligatures and stylistic sets.

You can have ligatures today without passing everything through the
shaping engine.  The number of character combinations that ligate is
not very large, so this is a far cry from shaping everything.  The
only known problem with using ligatures in current Emacs codebase is
that some of the character sequences you'd like to ligate happen in
places where you don't want that, such as on the mode line.  So we
need some way of preventing ligation in certain contexts.



  reply	other threads:[~2022-09-23 18:09 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-23 12:54 Supporting stylistic sets समीर सिंह Sameer Singh
2022-09-23 15:37 ` Eli Zaretskii
2022-09-23 17:27   ` समीर सिंह Sameer Singh
2022-09-23 17:31     ` Nicolas Ouellet-payeur
2022-09-23 18:09       ` Eli Zaretskii [this message]
2022-09-23 19:20         ` Nicolas Ouellet-payeur
2022-09-23 20:10           ` Eli Zaretskii
     [not found]             ` <CADuLPF5sKi4NMcGSdy1GAi8=KHBfUcVa3tV=XwnhPfWxroAJCA@mail.gmail.com>
2022-09-26 17:07               ` Eli Zaretskii
2022-09-26 17:46                 ` Nicolas Ouellet-payeur
2022-09-26 18:28                   ` Eli Zaretskii
2022-09-26 19:06                     ` Yuri Khan
2022-09-26 19:20                       ` Eli Zaretskii
2022-09-23 17:55     ` Eli Zaretskii
2022-09-23 18:26       ` Visuwesh
2022-09-23 18:55         ` Eli Zaretskii
2022-09-24  4:59           ` Visuwesh
2022-09-24  6:33             ` Eli Zaretskii
2022-09-24  8:42               ` Visuwesh
2022-09-24  4:43       ` समीर सिंह Sameer Singh
2022-09-24  6:55         ` Eli Zaretskii
2022-09-24  8:00           ` समीर सिंह Sameer Singh
2022-09-24  8:27             ` Eli Zaretskii
2022-09-24  8:34               ` समीर सिंह Sameer Singh
2022-09-24  8:38                 ` Eli Zaretskii
2022-09-24  8:41                   ` समीर सिंह Sameer Singh
2022-09-24  8:50                   ` समीर सिंह Sameer Singh
2022-09-24 12:09                     ` समीर सिंह Sameer Singh
2022-09-24 12:35                       ` Eli Zaretskii
2022-09-24 12:45                         ` समीर सिंह Sameer Singh
2022-09-24 13:00                           ` Eli Zaretskii
2022-09-24 13:10                             ` समीर सिंह Sameer Singh
2022-09-24 14:18                               ` Eli Zaretskii
2022-09-24 14:26                                 ` समीर सिंह Sameer Singh
2022-09-24 15:01                                   ` Eli Zaretskii
2022-09-24 15:02                                     ` समीर सिंह Sameer Singh
2022-09-24 15:21                                       ` Eli Zaretskii
2022-09-24 15:50                                         ` समीर सिंह Sameer Singh
2022-09-24 16:14                                           ` Eli Zaretskii
2022-09-24 16:42                                             ` Yuri Khan
2022-09-24 17:02                                               ` Eli Zaretskii
2022-09-24 17:09                                             ` समीर सिंह Sameer Singh
2022-09-24 17:11                                               ` समीर सिंह Sameer Singh
2022-09-25 22:19                                             ` Clément Pit-Claudel

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

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

  git send-email \
    --in-reply-to=83h70yotd4.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=lumarzeli30@gmail.com \
    --cc=nicolaso@google.com \
    /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 external index

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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.