


Type Arabic in R.E.P.O.'s chat and have it show up connected (proper joined letters) and in the correct right-to-left order — instead of the broken, disconnected, reversed text you normally get.
Best part: it works for everyone in the lobby, even players who don't have the mod.
Normally Arabic needs a "shaping" step to join letters and a "bidi" step to lay them right-to-left. R.E.P.O.'s chat doesn't do either, so you get isolated, reversed letters.
When you send a message, this mod converts your Arabic into its final presentation-form glyphs (the already-joined shapes) and puts them in visual order before the message goes out over the network. The text that travels to everyone else is already "baked," so even a player with no mod — whose game does no shaping at all — draws it correctly. There's nothing left to shape.
So:
Use a mod manager (Thunderstore / r2modman / Gale): just click install. It pulls in BepInEx automatically.
Manual install:
ArabicRepo.dll into R.E.P.O./BepInEx/plugins/.Config file: BepInEx/config/bandar.arabicrepo.cfg
FixOutgoing (default true) — bake your typed Arabic on send so everyone sees it.
FixIncomingDisplay (default true) — locally reshape raw Arabic typed by players without the mod, so you can read them.
CombineAllahLigature (default true) — render the standalone word الله as the single ﷲ glyph.
MaxLineChars (default 18) — wraps long messages so the first words stay on the top line and each line reads right-to-left. Tune to your chat width: lower it if a line still wraps oddly, raise it for fewer breaks. Set 0 to let the game wrap instead.
KeepLatinAndNumbersInOrder (default true) — keep Latin words, numbers, emails and URLs in normal reading order inside Arabic text.
SmoothFont (default true) — render Arabic from a clean system font so it looks genuine. Affects only screens with the mod installed.
SmoothFontName (default Tahoma) — any installed system font with good Arabic (e.g. Segoe UI, Arial, Sakkal Majalla, Traditional Arabic, Dubai).
Advanced (only needed if a game update moves things around):
Because R.E.P.O. updates often and renames internals, the chat hook is found at runtime instead of hard-coded. If a future update breaks sending, set DumpChatClassToLog = true, open BepInEx/LogOutput.log, find the method that runs when you press Enter, and put its name in SendMethodOverride. That's the whole fix.
Made by AlCool. Arabic shaping + bidi engine validated against the arabic_reshaper + python-bidi reference pipeline.
Parts of this mod were created with AI assistance. When uploading to Thunderstore, please tick the "AI Generated" category as required by Thunderstore's guidelines.