foobnix / LibreraReader

Book Reader for Android
http://librera.mobi
Other
2.7k stars 296 forks source link

[Feature Request] Better Two/Multi-Column support (Idea) #1281

Open Hufschmidt opened 1 month ago

Hufschmidt commented 1 month ago

Hi there, first of all a big thank you for all contributors to this project. :)

I've recently been trying to switch from KoReader with its outdated muPDF renderer to Librera Reader and I'm really liking it so far, but there is one convenience feature from KoReader that I'm really missing and that is its better multi-column support.

What do I mean by that? I've currently not found a good way to read PDFs with a two-column layout with LibreraReader that:

At least not without having to manually pan along each column and then to the next column once I reach the bottom of a page.

Example Document: FREE! Jewel of the Indigo Isles Player's Guide PDF https://battlezoo.com/products/jewel-of-the-indigo-isles-players-guide

I've been mulling about how to best fix this without having to change to much about how the LibreraReader navigation (and margin) currently works. I think there are two solutions for this:

Solution 1

Allow to set an overlap percentage value for half-pages view mode, where each page is still split in half, but a percentage of the page on the other half is also visible. This would still run into the (minor) issues with different column alignments between even and odd pages, but would be an easy solution to implement and already somewhat of an improvement.

Solution 2

This one might be a bit more complex, but could also open up more ways to use LibreraReader. The general idea would be to copy the way KoReader allows the user to configure how to progress to the next page or go back to the previous one. Instead of only supporting scrolling by switching pages, KoReader also allows one to scroll/progress by advancing the viewport along page columns (or rows).

How could that be implemented in LibreraReader? Currently with vertical & horizontal scroll mode, tapping advances you to the next/previous page, while respecting your current zoom-level and pan-position. A new scroll mode "columns" (and optionally maybe "rows") could be implemented, where each tap first advances your pan-position along the column direction, moves to the next column when reaching the bottom of the page with your current zoom-level and switches to the next page when reaching the bottom right of the page with your current zoom-level. Doing the reverse when tapping to go backwards ofc, and working in the other directing when enabling Right-To-Left text mode.