From: Yuan Fu <casouri@gmail.com>
To: Alan Third <alan@idiocy.org>
Cc: Lars Ingebrigtsen <larsi@gnus.org>,
emacs-devel <emacs-devel@gnu.org>, Eli Zaretskii <eliz@gnu.org>,
monnier@iro.umontreal.ca, Robert Pluim <rpluim@gmail.com>
Subject: Re: "Fix" sag scaling for hidpi
Date: Wed, 10 Feb 2021 13:00:52 -0500 [thread overview]
Message-ID: <B341201D-64AF-4554-8EC0-3AD61DB9C760@gmail.com> (raw)
In-Reply-To: <YCLqGwpxrRjgmuOZ@breton.holly.idiocy.org>
>
> One of the main problems I've had with trying to find a solution is to
> work out what we want to actually happen.
>
> If I open an image on an emacs frame it makes sense that the image
> should be displayed 1:1 with the physical pixels no matter what the
> scale factor is.
>
> If that frame is then moved to another display with a different scale
> factor do we then resize the image according to the change in scale
> factor (so it's still 1:1 with the physical pixels), or keep it the
> same (logical) size?
>
> I think we probably want to keep it the same (logical) size, so I
> think we need to, as described elsewhere, expose the scale factor to
> lisp so that create-image can calculate :scale rather than trying to
> calculate it on-the-fly in C code.
I agrees that we should keep the logical size, i.e., keep the size comparing against text. If we expose correct physical size, packages that generate bitmaps for display can generate crisp bitmaps with correct pixel size.
IIUC, a high-res image with :scale 0.5 should work across high and low-res displays. So ideally any package that wants to generate crisp bitmap can get the physical size and pixel-ratio from Emacs, generate the image and set :scale to 1/pixel-ratio. And this image works across different displays.
>
> We'll probably have to do more fiddling with SVGs though, since they
> can define sizes in real-world units, like cm or inches, so the dpi
> has to match the physical pixels, and if we move to a different screen
> and regenerate the SVG the DPI will be different but the scale likely
> won't be recalculated and the image will change size.
To simplify things, maybe we can assume DPI is 96. I.e., assume 1 inch = 96 logical pixels = 96 * pixel-ratio physical pixels.
Obviously, if we can get DPI information from all terminals, then we could use that information. But from your previous message it doesn’t seem easy.
>
> Perhaps we need to let lisp set the DPI for an SVG (and other scalable
> image types) as well as the scale.
>
> And this is further complicated by the fact macOS uses a "fake" DPI
> that has no relation to physical pixel size at all!
>
> And, of course, none of this will help when the lisp code doesn't use
> create-image.
>
> I hope this makes sense, I find this hard to describe.
> --
> Alan Third
For SVGs I think we should automatically handle the pixel ratio and dpi so the image is always crisp and lisp doesn’t need to do anything (don’t need to add the :scale attribute or anything).
For bitmap images I think we display them in their physical size and let lisp alter the size by the :scale attribute.
For :width and :height attributes, I think they should be in logical pixels.Because the ratio of logical pixels and other text in a buffer doesn’t change when you drag a frame across different displays. So if the user set an image to have certain :width and drag the frame to a different display, the image doesn’t change its size comparing to everything else in the buffer.
Yuan
next prev parent reply other threads:[~2021-02-10 18:00 UTC|newest]
Thread overview: 192+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-04 20:49 "Fix" sag scaling for hidpi Yuan Fu
2021-02-04 22:07 ` Stefan Monnier
2021-02-04 23:10 ` Yuan Fu
2021-02-05 9:02 ` Lars Ingebrigtsen
2021-02-05 10:24 ` Robert Pluim
2021-02-06 10:00 ` Lars Ingebrigtsen
2021-02-06 11:15 ` Eli Zaretskii
2021-02-06 11:35 ` Lars Ingebrigtsen
2021-02-06 12:20 ` Eli Zaretskii
2021-02-07 12:05 ` Lars Ingebrigtsen
2021-02-07 13:14 ` Robert Pluim
2021-02-09 20:01 ` Alan Third
2021-02-10 8:29 ` Lars Ingebrigtsen
2021-02-10 18:00 ` Yuan Fu [this message]
2021-02-10 18:07 ` Yuan Fu
2021-02-10 18:17 ` Lars Ingebrigtsen
2021-02-10 18:24 ` Robert Pluim
2021-02-10 18:41 ` Lars Ingebrigtsen
2021-02-10 18:52 ` Basil L. Contovounesios
2021-02-11 13:53 ` Robert Pluim
2021-02-11 14:30 ` Basil L. Contovounesios
2021-02-11 15:11 ` Robert Pluim
2021-02-11 22:18 ` Cleaning out old X11 toolkits? chad
2021-02-12 7:09 ` Eli Zaretskii
2021-02-12 8:44 ` Colin Baxter
2021-02-12 11:22 ` Eli Zaretskii
2021-02-12 9:30 ` Robert Pluim
2021-02-12 9:35 ` Lars Ingebrigtsen
2021-02-12 10:00 ` Robert Pluim
2021-02-12 10:02 ` Lars Ingebrigtsen
2021-02-12 10:04 ` Lars Ingebrigtsen
2021-02-12 10:18 ` Robert Pluim
2021-02-12 10:30 ` Lars Ingebrigtsen
2021-02-12 21:49 ` Jean Louis
2021-02-12 22:03 ` Jean Louis
2021-02-12 22:45 ` Stefan Kangas
2021-02-13 7:51 ` Eli Zaretskii
2021-02-13 12:05 ` Jean Louis
2021-02-12 11:28 ` Eli Zaretskii
2021-02-12 11:38 ` tomas
2021-02-12 13:26 ` Robert Pluim
2021-02-12 13:57 ` Basil L. Contovounesios
2021-02-15 16:49 ` Sean Whitton
2021-02-12 11:47 ` Ulrich Mueller
2021-02-12 10:00 ` martin rudalics
2021-02-12 10:14 ` Robert Pluim
2021-02-12 17:56 ` martin rudalics
2021-02-12 18:14 ` Merging native-comp and pgtk Stefan Monnier
2021-02-12 18:36 ` Eli Zaretskii
2021-02-12 22:29 ` Andy Moreton
2021-02-12 23:06 ` Stefan Monnier
2021-02-12 23:28 ` Andy Moreton
2021-02-13 9:39 ` Eli Zaretskii
2021-02-13 13:27 ` Stefan Monnier
2021-02-13 14:10 ` Andy Moreton
2021-02-13 14:14 ` Eli Zaretskii
2021-02-13 14:17 ` Eli Zaretskii
2021-02-13 15:48 ` martin rudalics
2021-02-13 15:58 ` Eli Zaretskii
2021-02-14 8:34 ` martin rudalics
2021-02-13 9:20 ` Eli Zaretskii
2021-02-13 13:07 ` Andy Moreton
2021-02-13 14:16 ` Eli Zaretskii
2021-02-13 18:01 ` Andy Moreton
2021-02-13 18:12 ` Eli Zaretskii
2021-02-14 7:33 ` Andrea Corallo via Emacs development discussions.
2021-02-14 15:25 ` Eli Zaretskii
2021-02-13 9:26 ` Andreas Schwab
2021-02-13 12:45 ` Andy Moreton
2021-02-16 23:22 ` Phillip Lord
2021-02-17 15:32 ` Eli Zaretskii
2021-02-17 17:32 ` Andy Moreton
2021-02-17 18:09 ` Óscar Fuentes
2021-02-17 22:20 ` Andy Moreton
2021-02-17 22:52 ` Óscar Fuentes
2021-02-17 19:20 ` Eli Zaretskii
2021-02-12 23:04 ` Stefan Monnier
2021-02-13 9:30 ` Eli Zaretskii
2021-02-13 13:24 ` Stefan Monnier
2021-02-13 14:15 ` Eli Zaretskii
2021-02-12 21:47 ` Andrea Corallo via Emacs development discussions.
2021-02-13 7:39 ` Eli Zaretskii
2021-02-13 11:16 ` Lars Ingebrigtsen
2021-02-13 11:28 ` Tassilo Horn
2021-02-13 11:57 ` Lars Ingebrigtsen
2021-02-13 12:17 ` Dmitry Gutov
2021-02-13 14:53 ` Lars Ingebrigtsen
2021-02-13 20:30 ` Dmitry Gutov
2021-02-13 21:03 ` Lars Ingebrigtsen
2021-02-13 21:30 ` Dmitry Gutov
2021-02-13 21:42 ` Lars Ingebrigtsen
2021-02-13 22:48 ` Lars Ingebrigtsen
2021-02-13 23:44 ` Tassilo Horn
2021-02-13 17:38 ` Stefan Kangas
2021-02-14 18:36 ` Andrea Corallo via Emacs development discussions.
2021-02-14 19:23 ` Stefan Kangas
2021-02-14 19:32 ` Andrea Corallo via Emacs development discussions.
2021-02-14 23:18 ` Óscar Fuentes
2021-02-15 14:15 ` Andrea Corallo via Emacs development discussions.
2021-02-13 13:41 ` Stefan Monnier
2021-02-13 14:18 ` Eli Zaretskii
2021-02-13 20:32 ` Dmitry Gutov
2021-02-14 3:34 ` Eli Zaretskii
2021-02-14 4:32 ` Stefan Monnier
2021-02-13 14:58 ` Lars Ingebrigtsen
2021-02-14 18:34 ` Andrea Corallo via Emacs development discussions.
2021-02-14 7:42 ` Andrea Corallo via Emacs development discussions.
2021-02-12 18:32 ` Cleaning out old X11 toolkits? Eli Zaretskii
2021-02-13 9:01 ` martin rudalics
2021-02-13 9:44 ` Eli Zaretskii
2021-02-13 10:29 ` martin rudalics
2021-02-14 12:50 ` Robert Pluim
2021-02-14 15:53 ` Eli Zaretskii
2021-02-15 9:48 ` Robert Pluim
2021-02-15 15:23 ` Eli Zaretskii
2021-02-15 16:02 ` Robert Pluim
2021-02-15 16:13 ` tomas
2021-02-15 17:03 ` Eli Zaretskii
2021-02-15 17:20 ` Robert Pluim
2021-02-12 13:04 ` Dmitry Gutov
2021-02-12 17:56 ` martin rudalics
2021-02-12 18:33 ` Eli Zaretskii
2021-02-12 20:09 ` martin rudalics
2021-02-12 20:13 ` Eli Zaretskii
2021-02-13 9:02 ` martin rudalics
2021-02-13 9:47 ` Eli Zaretskii
2021-02-13 10:29 ` Colin Baxter
2021-02-13 13:24 ` martin rudalics
2021-02-13 13:53 ` Ulrich Mueller
2021-02-13 15:49 ` martin rudalics
2021-02-13 19:23 ` Jean Louis
2021-02-14 8:35 ` martin rudalics
2021-02-14 9:33 ` Ulrich Mueller
2021-02-14 17:16 ` martin rudalics
2021-02-14 17:48 ` Eli Zaretskii
2021-02-14 18:18 ` Andy Moreton
2021-02-14 19:15 ` Eli Zaretskii
2021-02-14 22:33 ` Óscar Fuentes
2021-02-15 8:17 ` martin rudalics
2021-02-15 9:19 ` Andy Moreton
2021-02-13 14:39 ` Colin Baxter
2021-02-13 14:43 ` Jean Louis
2021-02-13 15:50 ` martin rudalics
2021-02-13 16:04 ` Colin Baxter
2021-02-13 21:42 ` Stefan Monnier
2021-02-14 12:41 ` Robert Pluim
2021-02-14 15:51 ` Eli Zaretskii
2021-02-14 18:18 ` Stefan Monnier
2021-02-14 19:10 ` Eli Zaretskii
2021-02-12 11:20 ` Ulrich Mueller
2021-02-12 13:33 ` James Cloos
2021-02-12 13:49 ` Robert Pluim
2021-02-10 19:19 ` "Fix" sag scaling for hidpi Stefan Monnier
2021-02-11 14:01 ` Robert Pluim
2021-02-11 14:59 ` Stefan Monnier
2021-02-11 15:16 ` Robert Pluim
2021-02-10 23:55 ` Alan Third
2021-02-11 2:01 ` Yuan Fu
2021-02-11 17:34 ` Yuan Fu
2021-02-11 20:18 ` Alan Third
2021-02-12 22:47 ` Alan Third
2021-02-13 11:13 ` Lars Ingebrigtsen
2021-02-13 11:17 ` Alan Third
2021-02-13 11:52 ` Lars Ingebrigtsen
2021-02-13 12:54 ` Alan Third
2021-02-13 13:09 ` Alan Third
2021-02-13 15:09 ` Lars Ingebrigtsen
2021-02-13 16:00 ` Alan Third
2021-02-13 23:30 ` Alan Third
2021-02-13 20:09 ` Yuan Fu
2021-02-13 21:14 ` Lars Ingebrigtsen
2021-02-13 22:50 ` Dmitry Gutov
2021-02-13 23:14 ` Alan Third
2021-02-14 0:02 ` Dmitry Gutov
2021-02-14 2:06 ` Yuan Fu
2021-02-14 2:09 ` Yuan Fu
2021-02-14 12:19 ` Dmitry Gutov
2021-02-14 9:58 ` Alan Third
2021-02-13 15:08 ` Lars Ingebrigtsen
2021-02-13 15:59 ` Alan Third
2021-02-13 21:08 ` Lars Ingebrigtsen
2021-02-13 21:53 ` Alan Third
2021-02-13 21:57 ` Lars Ingebrigtsen
2021-02-13 22:13 ` Alan Third
2021-02-13 18:29 ` chad
2021-02-13 19:52 ` chad
2021-02-13 20:06 ` Yuan Fu
2021-02-13 21:11 ` Lars Ingebrigtsen
2021-02-13 23:20 ` Alan Third
2021-02-09 17:26 ` Grzegorz Kowzan
2021-02-05 20:29 ` Alan Third
2021-02-07 21:58 ` Alan Third
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=B341201D-64AF-4554-8EC0-3AD61DB9C760@gmail.com \
--to=casouri@gmail.com \
--cc=alan@idiocy.org \
--cc=eliz@gnu.org \
--cc=emacs-devel@gnu.org \
--cc=larsi@gnus.org \
--cc=monnier@iro.umontreal.ca \
--cc=rpluim@gmail.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.