From: Daniel Pittman <slippycheeze@google.com>
To: Eli Zaretskii <eliz@gnu.org>
Cc: "Clément Pit-Claudel" <cpitclaudel@gmail.com>,
emacs-devel <emacs-devel@gnu.org>
Subject: Re: What is the proper way to scale fringe-bitmaps for high-DPI displays?
Date: Thu, 21 Mar 2019 11:43:51 +0000 [thread overview]
Message-ID: <CAC45yQu=cg6-OpFQcSrHZepUNRkkwT8Br40X+sjDF7KCGPJ0_w@mail.gmail.com> (raw)
In-Reply-To: <83ftrg6gxm.fsf@gnu.org>
[-- Attachment #1: Type: text/plain, Size: 2245 bytes --]
On Thu, Mar 21, 2019 at 3:32 AM Eli Zaretskii <eliz@gnu.org> wrote:
> > Cc: emacs-devel@gnu.org
> > From: Clément Pit-Claudel <cpitclaudel@gmail.com>
> > Date: Wed, 20 Mar 2019 17:17:16 -0400
> >
> > >> Oh, so Emacs' C code would scale the bitmaps? I expected the Lisp
> code would do that.
> > >
> > > Fringes are displayed in C. Doing this in Lisp will produce
> > > flickering, I'm afraid.
> >
> > I thought the C code would read the scaling factor and set the bitmap
> accordingly just once, when creating overlays or applying text properties.
>
> But you were saying that a frame can move from a high-DPI terminal to
> a low-DPI one, which seems to mean we cannot compute that just once.
>
They can, at least on macOS, where that is entirely trivial to achieve by
plugging an external (low DPI) monitor into a (high DPI) laptop with the
panel open. You could even enjoy the fun situation where your frame is
displaying half the window on each of them, so technically has two
different and concurrent densities.
> And besides, there are fringe bitmaps that we display regardless of
> any overlays and text properties (e.g., truncation and continuation
> indicators), which are displayed directly from C.
>
What you really want here is a resolution independent unit for specifying
the size of the output, or a macOS-alike ability to give multiple
resolution bitmaps and have the most appropriate selected by Emacs, yeah?
Anyway, I'd certainly say that having the C code scale the bitmap is the
most reasonable "no changes to anything else" solution – macOS did that
during the early transition to those high density displays, and it worked
out pretty well overall. (Though they have a rendering model vastly less
tied to physical units than most things.)
As a potentially useful aside in this context, HTML specifies that the
"pixel" is a resolution-independent unit, and should probably approximate a
72 DPI display as the 1:1 logical:physical device. I mention this because
applying similar logic in Emacs would give the closest approximation of
what people have been trained to expect in other media. (Though the choice
to not scale the content of the img tag... was not great.)
[-- Attachment #2: Type: text/html, Size: 2915 bytes --]
next prev parent reply other threads:[~2019-03-21 11:43 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-03-20 14:55 What is the proper way to scale fringe-bitmaps for high-DPI displays? Clément Pit-Claudel
2019-03-20 17:32 ` Eli Zaretskii
2019-03-20 19:34 ` Clément Pit-Claudel
2019-03-20 19:44 ` Eli Zaretskii
2019-03-20 20:05 ` Clément Pit-Claudel
2019-03-20 20:17 ` Eli Zaretskii
2019-03-20 21:17 ` Clément Pit-Claudel
2019-03-21 3:32 ` Eli Zaretskii
2019-03-21 11:43 ` Daniel Pittman [this message]
2019-03-21 13:33 ` Yuri Khan
2019-03-21 14:32 ` Eli Zaretskii
2019-03-21 17:32 ` Alex
2019-03-21 18:31 ` Eli Zaretskii
2019-03-21 17:38 ` Clément Pit-Claudel
2019-03-21 18:33 ` Eli Zaretskii
2019-03-21 17:40 ` Clément Pit-Claudel
2019-03-20 19:37 ` Clément Pit-Claudel
2019-03-21 15:24 ` Dmitry Gutov
2019-03-21 16:02 ` Eli Zaretskii
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='CAC45yQu=cg6-OpFQcSrHZepUNRkkwT8Br40X+sjDF7KCGPJ0_w@mail.gmail.com' \
--to=slippycheeze@google.com \
--cc=cpitclaudel@gmail.com \
--cc=eliz@gnu.org \
--cc=emacs-devel@gnu.org \
/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).