Make Arabic render correctly in TextMeshPro. Bake shaping, RTL, and line wrapping at edit time, with zero runtime code.Editor-only tool. Works with any render pipeline since it does not use materials or shaders. Requires TextMeshPro (included with Unity).HeshamRTL — Arabic for TextMeshPro, baked at edit timeTextMeshPro does not handle Arabic. Drop an Arabic string into a TMP component and you hit four problems at once: the letters show as empty boxes because the font has no Arabic glyphs, the letters are not shaped into their connected forms, the text runs left to right so it reads mirrored, and the moment it wraps to a second line the line order flips so the reader gets the last line first.HeshamRTL fixes all four. It is an Editor tool that bakes your Arabic at edit time into text that is already shaped, already reordered right to left, and already wrapped correctly. You press one button and the corrected Arabic is written back as normal text in your scene or your Localization table.Nothing from the tool runs in your build. There is no runtime component, no DLL, no library, and no per-frame conversion. The baked text ships as plain game data, exactly like any other language you would add.WHAT IT FIXES- Missing glyphs (tofu): bundles an Arabic font and wires it in as a fallback automatically.- No shaping: converts every letter to its correct connected presentation form.- Wrong direction: reverses the text per line, while keeping Latin words, numbers, and tokens like config.json, v1.2, or 50% in their normal left to right order.- Line-order flip on wrap: asks TextMeshPro itself where it will break the text, measuring against the real box at edit time, then reorders each line so multi-line Arabic reads top to bottom and cannot flip at runtime.THREE WAYS TO BAKE- File bake: point it at an Arabic YAML, CSV, or JSON file and a target TMP box; it writes a baked copy.- Scene bake: bakes every Arabic TMP_Text in the open scene in place, each measured against its own width.- Unity Localization bake: bakes an Arabic String Table directly, measuring each key against its real display box, with a snapshot so Unbake always restores the originals. Appears when the Localization package is installed.HANDLES THE DETAILS- Paired rich text tags (color, b, i, u, s, size, link) that keep styling the right words, even across a wrapped line.- Standalone tags (page, br, sprite) kept verbatim.- Runtime placeholders {0}, {1} passed through untouched.- Harakat (diacritics) and the lam-alef ligature.- A guard that makes re-baking an already baked file a safe no-op.- YAML (comments and CRLF preserved), CSV (delimiter auto-detect, RFC-4180, BOM tolerant), and JSON (nested, values only, keys untouched).THE ONE RUNTIME RULEThe component that displays baked text must have wrapping turned off (NoWrap). The line breaks are already baked in; leaving wrapping on makes TMP wrap the text a second time and the line order flips. The scene and Localization bakers set NoWrap for you.SCOPEThis release is for Arabic. It is tested and confirmed in Unity: shaping, right to left, multi-line wrap, tags, placeholders, harakat, lam-alef, and the full Unity Localization path with snapshot and Unbake. Persian, Urdu, and Hebrew are not supported in this release. The tool works in Western digits (0-9).Tested on Unity 6000.5. Other versions are likely to work but are not yet tested.REQUIREMENTS- Unity with TextMeshPro.- Editor-only. Nothing is added to your built game.Includes the Noto Kufi Arabic font under the SIL Open Font License 1.1 (see the Third-Party Notices file in the package). Using it places no restriction on the games you make.- Zero runtime: editor-only tool, nothing ships in your build (no component, no DLL).- One-click bake: shaping, right-to-left reordering, and line wrapping done at edit time.- Fixes tofu: bundles an Arabic font and wires it as a fallback automatically.- Correct multi-line wrap: asks TextMeshPro for real break positions, so line order never flips.- Three workflows: file bake (YAML/CSV/JSON), scene bake, and Unity Localization String Table bake with Unbake.- Keeps rich text tags, {0} placeholders, Latin/number islands, harakat, and lam-alef intact.- Tested on Unity 6000.5. Arabic only in this release.AI was used in both the code and the documentation for this package.The C# implementation was produced with the assistance of AI language models, based on detailed specifications and an existing algorithm. The Arabic shaping and reordering logic is derived from the author's own prior open-source toolkit (Sutoor).Every technical capability the tool provides was tested and verified by the author by hand inside the Unity Editor before release: the shaping, the right-to-left reordering, the multi-line wrapping, the rich text tag handling, the runtime placeholders, and the full Unity Localization baking and Unbake workflow were all confirmed working on screen, not assumed.AI was also used to draft and edit the documentation, the store description, the repository structure, and this disclosure text itself.No AI-generated art assets are included. The bundled font (Noto Kufi Arabic) is by Google, licensed under the SIL Open Font License 1.1.





