Easelt BuilderDocs
Feedback
Open Builder →
Interactivity

Arabic & RTL text

First-class Arabic shaping and right-to-left text, plus the Set Text action.

MTA's dxDrawText doesn't shape or reorder Arabic on its own — feed it Arabic and it renders as disconnected, left-to-right letters. Easelt Builder fixes this for you at export time, so any Arabic you type in your GUI comes out connected, correctly ordered, and correct in-game. This page explains exactly what happens and how to work with it.

Why Arabic needs special handling

In-game, MTA:SA's dxDrawText is a plain text drawer. It doesn't apply the two things Arabic requires: shaping (choosing the connected letter form for each position — initial, medial, final, or isolated) and bidi (laying the script out right-to-left). Left alone, dxDrawText prints Arabic as a run of isolated, disconnected glyphs flowing left-to-right — unreadable to an Arabic speaker.

Easelt Builder solves this so you never touch the low-level detail. You type Arabic the way you'd type it anywhere else, and the exported Lua carries the fully prepared text that dxDrawText can render correctly.

Preview vs. export

There are two moments where Arabic is rendered, and they work differently. Understanding the split explains why the editor always looks right — even before Easelt does its work.

In the editor preview
Arabic already renders correctly here because the browser shapes and orders it for you. What you see on the canvas is real, connected, right-to-left Arabic.
On export
Easelt reshapes your Arabic into Unicode presentation forms (the connected letter forms) and applies simplified bidi, then bakes the result straight into the Lua so the in-game GUI matches the preview.
ℹ️

The browser gives you a correct preview for free, but the game engine can't — so the real work happens at export, where the prepared text is written into your Lua.

What Easelt does on export

At export time, Easelt runs two transformations over every piece of text before writing it into the Lua.

  1. Reshaping — each Arabic letter is converted to its correct Unicode presentation form (connected form) based on its position in the word, so neighbouring letters join up the way Arabic is meant to.
  2. Simplified bidi — the text is reordered right-to-left, while any Latin and number runs inside it are kept left-to-right so they stay readable.

The output of both steps is baked into the exported Lua. The in-game GUI then shows correct, connected, correctly ordered Arabic without any runtime shaping code on your side.

Where Arabic is handled

Reshaping and bidi apply to any text you type into an element — there's no special "Arabic mode" to switch on. Every text-bearing control is covered:

Element / fieldArabic support
Text labelsReshaped and reordered on export
ButtonsReshaped and reordered on export
EditboxesReshaped and reordered on export
CheckboxesReshaped and reordered on export
Group titlesReshaped and reordered on export
Progress labelsReshaped and reordered on export
Dropdown itemsReshaped and reordered on export

Mixed Latin and numbers

You don't need to isolate Latin words or digits from your Arabic. When Easelt applies bidi, it keeps Latin and number runs left-to-right inside an otherwise right-to-left string, so labels like an Arabic caption with an embedded English name or a numeric value read correctly in-game.

💡

Just type mixed strings naturally — Arabic with an English word or a number in the middle comes out with each run flowing the right way.

Lam-alef ligatures

The lam-alef ligature — the combined form of لا that Arabic requires rather than two separate letters — is handled automatically during reshaping. You don't need to type any special character or ligature; Easelt produces the correct combined form for you.

Runtime text changes with Blueprint

Static text isn't the only thing that gets reshaped. The Blueprint Set Text action also supports Arabic: when your GUI changes an element's text at runtime through Set Text, that new text is reshaped too, so dynamic updates stay as correct as the text you designed.

ℹ️

Both design-time text and runtime Set Text changes go through the same reshaping and bidi, so your GUI stays consistent whether text is fixed or updated live.

How to use it

There's no configuration and no workflow to learn. The whole feature comes down to a single practice:

  1. Type Arabic normally
    Enter your Arabic into any text field — label, button, editbox, checkbox, group title, progress label, or dropdown item — exactly as you'd write it anywhere.
  2. Check the preview
    The editor shows correct, connected, right-to-left Arabic immediately, because the browser shapes it for you.
  3. Export
    Easelt reshapes to presentation forms and applies simplified bidi, baking the result into the Lua so the in-game GUI matches.
💡

The one thing to remember: just type Arabic normally. Easelt handles shaping and direction for you.


These very docs are available in Arabic too — so you can read this page in the same language your GUIs speak.

Got feedback or an idea?Share it →