RTL Support Improvements for Persian, Arabic & Hebrew

Hi Penpot team and community!

First of all, thank you for building and maintaining such a great open-source design tool.

I’d like to suggest a more complete and consistent Right-to-Left (RTL) experience in Penpot, particularly for users working with Persian (Farsi), Arabic, Hebrew, and other RTL languages.

Although Penpot already provides some RTL text capabilities, there are still several usability gaps across text editing, the design interface, and numeric inputs. Addressing these areas together would make Penpot significantly more accessible and comfortable for RTL users.

Here are my suggestions:

1. Automatic RTL Text Direction Detection

Text direction should be detected automatically when users start typing in an RTL language.

Expected behavior:

  • Automatically detect RTL text and set its direction to RTL.
  • Apply appropriate text alignment automatically, preferably using direction-aware start alignment.
  • Support mixed RTL and LTR content within the same paragraph (for example, Persian text containing English words, URLs, numbers, or technical terms).
  • Preserve the correct order of punctuation marks, parentheses, numbers, and embedded LTR text.
  • Allow users to manually override the detected direction when needed.

Ideally, this should work based on the actual text content rather than relying exclusively on the keyboard language or application locale.

2. Better RTL Text Editing and Cursor Positioning

Text editing should work naturally in RTL languages, not just text rendering.

Some important improvements include:

  • Correct positioning of the blinking text caret (insertion caret) while typing.
  • Proper cursor movement when navigating through RTL and mixed RTL/LTR text.
  • Accurate text selection, insertion, deletion, and keyboard navigation.
  • Correct handling of punctuation and numbers when editing mixed-direction content.

For example, the caret should always appear at the actual insertion point instead of jumping to an incorrect character position.

3. Optional RTL User Interface (UI) Layout

It would be great to have a fully RTL version of Penpot’s interface for users who prefer working in RTL environments.

This should be an optional setting, not something forced on every user.

For example, a setting could be added under Preferences:

Interface Direction:

  • Auto (follow the selected interface language)
  • Left-to-Right (LTR)
  • Right-to-Left (RTL)

When RTL mode is enabled, the application interface should be mirrored appropriately, including:

  • Main navigation and sidebars.
  • Layers panel and properties panel.
  • Toolbars, menus, dialogs, and settings.
  • Text labels, input fields, and controls.
  • Layouts, spacing, and alignment throughout the application.

The goal is to provide a natural working environment for RTL users while preserving the existing LTR interface for those who prefer it.

Importantly, interface direction and canvas text direction should remain independent settings.

4. Persian and Arabic Numerals Support in Numeric Inputs

Currently, entering Persian or Arabic-Indic numerals into numeric fields can be problematic, especially when using a Persian or Arabic keyboard.

Penpot should accept all commonly used numeral systems in numeric input fields:

  • Western Arabic: 0123456789
  • Persian / Eastern Arabic: ۰۱۲۳۴۵۶۷۸۹
  • Arabic-Indic: ٠١٢٣٤٥٦٧٨٩

Suggested solution:

Automatically normalize Persian and Arabic-Indic digits to standard Western digits at the frontend when entering or pasting values into numeric fields.

This should work throughout the application, including:

  • Width and height fields.
  • X and Y position values.
  • Border radius and stroke width.
  • Spacing, padding, and gap values.
  • Opacity and other numeric properties.
  • Grid and layout settings.
  • Other numeric controls throughout the editor.

Users should not have to switch their keyboard layout just to enter a dimension or modify a design property.

This normalization should apply only to numeric inputs and must not change the actual text content inside text layers.

5. Better RTL Typography and Layout Consistency

RTL support should be consistent throughout the design workflow.

Some additional improvements worth considering:

  • Proper font fallback for Persian, Arabic, and Hebrew characters.
  • Consistent text rendering across the canvas and interface.
  • Correct RTL behavior in Auto Width and Auto Height text layers.
  • Preserving the right-side anchor when RTL text grows.
  • Better RTL support in grids, flex layouts, and component properties.

These improvements would help prevent situations where text direction is correct but its positioning, resizing, or surrounding layout still behaves like an LTR environment.


Related GitHub Issues and Community Discussions

There are already several related requests in the Penpot repository and community:

  1. #6806 – Text Direction Doesn’t Automatically Switch to RTL for Persian Content
  2. #2691 – RTL UI Layout
  3. #2183 – Support Arabic/Persian Numbers in Design Editor
  4. #2048 – Change the Font of the UI in Persian and Arabic Languages
  5. #11523 – RTL Auto-Width Text Grows to the Right Instead of Preserving the Right Edge
  6. Community Discussion – Improved User Interface in Persian/Arabic Languages

Rather than treating these as completely separate problems, I believe they could be considered as parts of a broader RTL improvement initiative.

Final Thoughts

RTL language support is more than simply displaying text from right to left. It involves the entire editing experience, including text direction, cursor behavior, numeric inputs, alignment, layout, and the application interface itself.

Implementing these improvements would make Penpot much more comfortable for millions of designers who work in Persian, Arabic, Hebrew, and other RTL languages.

It would also strengthen Penpot’s position as an accessible, inclusive, and genuinely international open-source design tool.

I’d love to hear what the community and Penpot team think about this proposal.

Thank you!

4 Likes

Hi Ahmad! Thanks a lot for this, it’s a really well put together proposal. Having everything we already do for RTL and all the related issues in one place makes it much easier.

We’ve opened an issue that collects it as one piece of work, so it doesn’t stay scattered across separate tickets: Add consistent right-to-left support to text editing, numeric inputs and the interface · Issue #12919 · penpot/penpot · GitHub

When we get to it (it’s no scheduled yet and we’ve got a lot on our plate, so we can’t give dates for now), we’d like to design it together with the vertical text work we’re already doing for Japanese, Chinese and Korean (Add vertical text layout and CJK language profiles to text layers · Issue #12864 · penpot/penpot · GitHub), so that text direction and writing modes work the same way across languages.

If you see anything missing or wrong in the issue, feel free to comment there or here. Thanks again!

2 Likes