Displaying Arabic, Hebrew, or Farsi on a resource-constrained embedded display is technically complex — Arabic characters are contextually shaped, and most MCUs cannot afford the RAM overhead of a runtime Arabic shaper. Sparklet solves this with a design-time shaping approach: Flint pre-shapes Arabic text before code generation, delivering correct Arabic rendering on any 32-bit MCU with zero runtime shaping cost.
Arabic RTL embedded GUI refers to display interfaces on microcontroller or MPU hardware that render Arabic, Hebrew, Farsi, Urdu, and other right-to-left scripts correctly — including proper character shaping, glyph selection, and text direction. This is technically more complex than simply reversing text direction, and the complexity has direct implications for how an embedded GUI framework must handle it within the constraints of a 32-bit MCU.
There are three distinct layers of complexity in Arabic text rendering, each requiring different engineering effort and RAM. Understanding which layer your product actually needs is the key to choosing the right implementation approach — and avoiding over-engineering a solution onto an MCU that does not have the headroom for it. Sparklet's approach maps directly to these three layers, starting from the most common embedded use case (static Arabic labels) and scaling up to full bidirectional mixed-language text on MPU-class Linux devices.
For the vast majority of embedded Arabic applications — industrial panels with Arabic UI labels, appliance displays for Middle East markets, automotive cluster language variants — the design-time shaping approach is entirely sufficient and adds zero runtime cost. See also: Multi-Language Embedded GUI Support.
The recommended approach for most embedded Arabic projects. When a designer adds Arabic text to a Sparklet screen in Flint UI Designer, Flint pre-shapes the Arabic string at design time — converting each Arabic character sequence into its correct contextual presentation form using the Unicode Arabic Presentation Forms block (U+FE70–U+FEFF). The shaped glyphs are stored in the font data exported as C code. At runtime, Sparklet draws these pre-shaped glyphs in right-to-left order — no shaping computation on the MCU. Correct Arabic rendering on any 32-bit MCU with zero runtime overhead. ROM cost: zero additional bytes for shaping logic. Covers all text known at design time: labels, menu items, button text, mode names, alarm strings.
Required when Arabic text is constructed at runtime from external data — an Arabic patient name from a hospital system, an Arabic product name from a factory database, or a dynamically fetched Arabic string over a network connection. Phase 2 integrates a runtime Arabic shaping library alongside Sparklet. This library intercepts Arabic Unicode input and converts it to correctly shaped presentation-form glyphs before passing it to Sparklet's font renderer. Typical ROM cost: ~1.4 KB for shaping lookup tables, ~300 lines of new code. Suitable for high-RAM MCUs (Renesas RA8D1, NXP i.MX RT1170) and MPU-class devices. Embien provides integration guidance for Phase 2 on request.
The most complex tier. A text run containing both Arabic and English words requires the Unicode Bidirectional Algorithm (BiDi) to determine the correct visual rendering order of each directional segment. The reference implementation — SheenBidi — is approximately 3,000 lines of C code. Phase 3 is primarily relevant for MPU-class Linux devices (Rockchip RK3506G2, NXP i.MX 8) with unconstrained memory. This tier is uncommon in purpose-built embedded products and is typically not required for industrial, automotive, or appliance applications where text content is under the designer's control. Embien can advise on Phase 3 integration for MPU Linux builds.
Flint UI Designer's Arabic support is built into the text and font workflow — the designer does not need to understand Unicode Presentation Forms or glyph selection manually. Here is how the process works step by step:
The designer types or pastes Arabic text directly into Flint's text property field, using standard Unicode Arabic code points (U+0600–U+06FF, the standard Arabic block). Flint accepts Arabic input from any Windows-compatible Arabic keyboard layout or copy-paste from a standard text source.
When Flint processes the text for code export, it applies Arabic contextual analysis to each character sequence — determining whether each letter is in initial, medial, final, or isolated position within its word. It then maps each character to its corresponding Arabic Presentation Form glyph in the U+FE70–U+FEFF range. This is the same shaping operation a runtime Arabic shaper would perform, but done once at design time on the developer's PC rather than repeatedly at runtime on the MCU.
The shaped Arabic glyphs are included in the font asset that Flint exports as part of the C code package. Only the specific Arabic glyphs used in the design are included — unused glyphs are not exported, keeping the font asset compact. The exported font data is identical in format to Latin or CJK font data — Sparklet's renderer treats all glyph data uniformly regardless of script.
Flint provides RTL layout controls for Arabic screen variants: right-aligned text fields, reversed icon and widget placements, and correct reading-order navigation between interactive elements. The designer sees the Arabic layout correctly rendered in Flint's WYSIWYG canvas — what is visible in Flint is what will appear on the embedded display.
The design-time shaping approach means Arabic support in Flint requires no special workflow beyond entering Arabic text. The designer does not encode Presentation Forms manually, does not manage glyph tables, and does not configure a shaping engine. Flint handles it. The result — correct, connected Arabic script rendering on any 32-bit MCU — is a direct output of the standard Flint design and export workflow.
| Phase | Scope | ROM Cost | Suitable For | Status in Sparklet |
|---|---|---|---|---|
| Phase 1 — Static RTL | Pre-shaped static Arabic / Hebrew strings defined in Flint | ~0 bytes (shaping in Flint, not on MCU) | All MCUs, all platforms — STM32F4 upwards | Available — design-time shaping via Flint |
| Phase 2 — Runtime Shaping | Dynamic Arabic strings constructed at runtime | ~1.4 KB lookup tables + ~300 lines | High-RAM MCUs: RA8D1, i.MX RT1170, i.MX 8 | Supported with integration guidance from Embien |
| Phase 3 — Full BiDi | Mixed Arabic + English in one text run | ~30–50 KB (SheenBidi or equivalent) | MPU Linux only: Rockchip RK3506G2, NXP i.MX 8 | Available on Linux MPU builds — consult Embien |

Flint pre-shapes Arabic text using Unicode Presentation Forms (U+FE70–U+FEFF) at design time. Correct Arabic rendering delivered with zero runtime shaping engine on the MCU.

Pre-shaped Arabic glyphs are stored as standard font data. Sparklet renders them like any other glyph — no runtime lookup tables, no contextual shaping logic, no extra RAM.

Sparklet's font system supports the full Unicode range — Arabic, Hebrew, Farsi, CJK, Devanagari, and Latin scripts can coexist in the same font asset and appear on the same screen.

One Flint project produces Arabic, English, French, and other language variants from the same screen design — essential for appliances and panels sold across multiple global markets.
Displaying Arabic text on an embedded display requires three capabilities: a font with Arabic glyph coverage, RTL text direction in the renderer, and Arabic character shaping (selecting the correct glyph form for each character based on its word position). Sparklet handles this via Flint UI Designer, which pre-shapes Arabic text at design time using Unicode Presentation Forms. The pre-shaped glyphs are stored in the font asset exported to the embedded MCU, enabling correct Arabic rendering at runtime with zero shaping overhead.
Try Sparklet and Flint UI Designer with Arabic text support. Design Arabic screens on Windows, export to any 32-bit MCU, and ship correct Arabic rendering with zero runtime shaping overhead.