johnfactotum / foliate

Read e-books in style
https://johnfactotum.github.io/foliate/
GNU General Public License v3.0
5.93k stars 273 forks source link

A checkbox or button to set current book zoom as default for all books #1158

Open agirtonea opened 8 months ago

agirtonea commented 8 months ago

Currently, whenever you open a book, it defaults to 100% zoom.

It would be nice to have a way to set what default you'd like to keep.

Tried using custom_user.css, but that only affects text size, not layout.

I think a settings option for default zoom value would be the best way to make this happen. Default zoom: 100%, but the user can set that value to whatever is best for them and the device they are using.

azzamsa commented 8 months ago

@agirtonea, that's a nice idea. I never thought about this.

johnfactotum commented 8 months ago

This would need some design. Foliate has so far resisted distinguishing between per-book, global, and temporary settings, which is simpler and less confusing.

I suppose there are three main cases where you'd want to zoom in or out:

  1. Working around books that have problematic formatting, in which case you want to set different zoom levels for each book.
  2. Working around problematic screen resolutions, in which case it should be a permanent global setting.
  3. Serving more or less the same purpose as pinch zooming, in which case it should be temporary. This can also sort of be used to solve use case no 1, if you only encounter those books rarely.

Now, no. 1 can also be fixed by setting the minimum font size, or by overriding it in the user stylesheet. No. 2 can be worked around by changing the default font size and/or the user stylesheet, and the layout options. These two are arguably bugs that should be fixed elsewhere (e.g. by editing the book or by fixing the scaling at toolkit and/or compositor level).

There is another use case where zooming is used as a way of generally changing the font size. Now the font size in general is changed either per-book, globally, or temporarily for similar reasons as the zoom level. So there are a few reasons why you'd need both:

rlperez commented 4 months ago

I argue the main reason for a default zoom is my first experience picking a new e-reader for my desktop. The default zoom on every book I opened is small on a 4k screen. Every title requires me to zoom in significantly and there isn't an easy way to do this without clicking through the UI.

If not a default zoom configuration perhaps the default behavior could be that the book content unless fixed should fit the reading view portal by width or height, which ever hit's the portal boundary (plus some margin) first. Or ctrl+scroll could be used in zoom as is common in anything from VS Code to most browsers.

Just changing font size is not the desired behavior by most, I'd wager, in illustrated books. The book covers and images are tiny unless you use zoom regardless of the font size you select. So, they are two different functions. One is for easing reading of text because reasons, the other is making content fit your screen. The problem would be exacerbated on higher resolution screens than 4k. The embedded images will continue to get smaller and smaller while you can set a default font to make the text readable you can't set a default to scale the rest of the content.

Using "Maximum Inline Size" and "Maximum Block Size" also does not address the issue.

johnfactotum commented 4 months ago

If not a default zoom configuration perhaps the default behavior could be that the book content unless fixed should fit the reading view portal by width or height, which ever hit's the portal boundary (plus some margin) first. Or ctrl+scroll could be used in zoom as is common in anything from VS Code to most browsers.

If you mean fixed layout books (CBZ, PDF, fixed layout EPUBs), that's not related to the default zoom level. The problem is that it can't be zoomed at all (#922).

As for your other points, yes, I mentioned the use case of working around not having proper display scaling above. Probably we should just add a "Default Zoom Level" preference in "Font & Layout Settings" similar to what Epiphany does. Difficulty only arises if one adds per-book settings to the mix, but I think we can do without that for now and just add a default zoom level setting.

ajitid commented 1 month ago

I'm on a similar situation as @rlperez is, and I'd too vote for adding Default Zoom Level. I switch between books infrequently, so that along with the fact one can override publisher font would make text with the chosen zoom level fairly legible across the books.