HandyReader Blog

HandyReader 1.22.260810 is NOW AVAILABLE!

Hey everyone! HandyReader v1.22.260810 is here!

This one is a focused refinement release. It brings a new page-turn direction mirroring option, fixes the dictionary and translation popup panel positioning, and improves the text-selection drag handle. I’ve also laid important groundwork for the upcoming RTL (right-to-left) language support.

What’s New

Page-Turn Direction Mirroring

A new option to mirror the page-turn direction. This is a necessary refinement for the upcoming RTL support — when reading right-to-left languages, page turns should naturally go the other way.

Improvements

Text Selection Drag Handle

Redesigned the drag handle that appears when you select text, making it clearer and easier to use.

Bug Fixes

  • Fixed the display positioning issue of the dictionary and translation popup panels.
  • Various other fixes and stability improvements.

A Note on RTL Support

I originally planned to ship full RTL (right-to-left) support in this version for Arabic, Persian, and other RTL languages. However, during implementation I discovered that my typesetting architecture had structural issues, and Android’s built-in RTL support isn’t complete enough to work around them cleanly. After several attempts that never quite worked, I decided to step back and redesign the approach rather than ship something half-baked. It cost a lot of time.

That said, the effort wasn’t wasted. Two pieces of groundwork from this work did make it into this release: the page-turn direction mirroring and the improved text-selection drag handle — both are necessary refinements for proper RTL support.

I’ve also introduced the SheenBidi library. Android’s StaticLayout measurement API has known issues with mixed RTL/LTR text within a single paragraph. SheenBidi lets me split a paragraph into RTL and LTR segments, typeset each segment separately, and then reassemble them — cleanly bypassing the system’s limitations.

Looking further ahead, for cross-platform support this approach isn’t the final answer. The Tehreer-Android library is a great reference — it bundles FreeType, SheenBidi, and HarfBuzz together and does typesetting and rendering natively. When I eventually go cross-platform, I plan to upgrade my typesetting framework once more along those lines.

The RTL typesetting rework is progressing smoothly with the new approach, and the next version should ship proper RTL support soon.

What’s Next

  • RTL Language Support: Complete the RTL typesetting rework and properly support right-to-left languages such as Arabic and Persian.

Download Now

Grab the latest build and let me know what you think!

Note: If the update hasn’t hit your Google Play Store yet, it’s likely still in review and will be available very soon. In the meantime, you can always grab the APK directly from the download page. Requires Android 6.0 or higher.

Happy reading!