lefteros_by SomniusX
EL ↗Say hello

LEFTEROS / PERSONAL NOTES

CrossInk-Indic now reads 13 Indic languages, on every Xteink

10 October 2026 / Lefteris Iliadis / SomniusX

13 Indic languages on every Xteink

Earlier today I made CrossInk-Indic public with Hindi, and said twelve more languages were in testing. They're out now, in v1.6.0-indic.2:

Hindi, Marathi, Nepali, Bengali, Assamese, Punjabi, Gujarati, Odia, Tamil, Telugu, Kannada, Malayalam and Sinhala.

Each one comes as its own firmware, for every Xteink model CrossInk supports (X3, X4, X4 Pro, X4 Classic and Seeed's Sticky). Each has its script built in and a menu in that language. Nothing goes on the SD card.

Bengali, Tamil, Malayalam and Sinhala on the X4 Pro

Bengali, Tamil, Malayalam and Sinhala on the X4 Pro simulator, each from its own build.

What's in it

  • Ten scripts: Devanagari (Hindi, Marathi, Nepali), Bengali (Bengali, Assamese), Gurmukhi, Gujarati, Oriya, Tamil, Telugu, Kannada, Malayalam and Sinhala. The fonts are Noto Sans, regular and bold at every reading size, and in the menu fonts.
  • Real shaping in every script: conjuncts, vowel signs that move or wrap around their consonant, reph and the rest. It all comes from the font's own OpenType tables, the same way HarfBuzz does it on a phone.
  • A menu in each language, all 845 strings each, translated with machine help and proofread with two blind back-translations.
  • Reading-only builds: if you want English menus and just need to read books in one script, there's a read-<script> firmware for each of the ten.
  • Hyphenation for Tamil, Telugu, Kannada and Malayalam, only ever between syllables, so justified lines fill up instead of leaving big gaps. In the Tamil page above you can see it: உடுப்பி-யிலிருந்து.

Why one firmware per language

The firmware gets 6.5 MB of flash, and the largest build (Telugu) already takes 6.3 MB of it with one script's fonts, so there's no room for all ten together. Each build has English plus one language, and the other 27 CrossInk menu languages are left out to make room. Pick the file for your reader and language, and that's it.

Bugs fixed along the way

  • In long paragraphs, a word could get cut in two where the book's text arrives in pieces, so a vowel sign would end up alone on a dotted circle. That bug is in CrossInk itself, not in my code, and it hits any language. It's just much easier to spot in Indic text. Fixed here, and in my Greek code too, for its next release.
  • Lines fill up more before a word gets moved down: word spaces can shrink by up to a third. Kostas from the Greek builds asked for this, and it helps every language.

Get it

On the v1.6.0-indic.2 release, take firmware-<reader>-v1.6.0-indic.2-<language>.bin. For Tamil on an X4 Pro, for example, that's firmware-x4-pro-v1.6.0-indic.2-ta.bin. Put it on the SD card, then Settings > System > SD Card Firmware Update, then pick your language under Settings > System > Device > Language. The full table of names is on the CrossInk-Indic page.

It's still a pre-release. It's been through the simulator for every language and device profile, the shaping tests, and an emulated X3/X4 chip, where words in all ten scripts come out the same as HarfBuzz. It hasn't been on a real device in my hands yet. If you read one of these languages, tell me what's wrong, in the menu or on the page. A photo helps a lot.

And if your language is still missing from CrossInk, I take commissions.