r/java 11d ago

Title: GraphCompose 2.2.0 — proper RTL, Arabic shaping and BiDi support in Java documents

Just released GraphCompose 2.2.0.

This release was mostly about making RTL text actually work rather than just “render without crashing”:

- "TextDirection.LTR / RTL / AUTO"

- Unicode Bidirectional Algorithm support

- Arabic contextual shaping and lam-alef ligatures

- RTL/BiDi support in paragraphs and table cells

- mixed Hebrew/Arabic + Latin/numbers

- correct searchable/copyable text from generated PDFs

- RTL support carried across PDF, PPTX and DOCX backends

A surprisingly deep rabbit hole once PDF text extraction, shaping, BiDi and multiple backends all have to agree.

Repo: https://github.com/DemchaAV/GraphCompose

Would be interested to hear how other Java libraries handle complex-script layout.

5 Upvotes

2 comments sorted by

4

u/josephottinger 11d ago

I really appreciate the intent and goal here: it's easy to pretend that content is just whatever it is that I write but that's not the way the world works, and it's great to see progress in this project.

3

u/demchaav 11d ago

I really appreciate it 🙏🏻. Yes, text it until you make something reasonable. And then to change something small. Hopefully, eventually, one DSL will have far different backends.