mapbox / mapbox/mapbox-maps-ios

Kurdish (Sorani) text broken in SymbolLayer — ە (U+06D5) does not join with adjacent letters

Open
#2,414 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

auto-triaged bug :beetle:
Dominant language
Swift
Stars
601
Forks
196
PR merge metrics
No merged PRs in 30d

Description

## Environment

- Xcode version: 26.4
- iOS version: 26.4
- Devices affected: iPhone 16, iPhone 15
- Maps SDK Version: 11.x (latest)

## Observed behavior and steps to reproduce

Kurdish (Sorani) text in SymbolLayer labels renders with broken/disconnected
letters. The character **ە** (U+06D5, Arabic Letter Ae) does not join with adjacent
letters.

This character appears in almost every Kurdish word, making place names unreadable
for 8+ million Kurdish speakers.

**Steps to reproduce:**
1. Create a SymbolLayer with `textField` containing Kurdish text, e.g. "بنکەی
پۆلیسی" (police station)
2. The ە character renders disconnected from adjacent letters
3. Words appear broken with gaps

**Screenshots attached:**
- Broken rendering on iOS SDK
- How Kurdish text should look (correct rendering)

Image

## Expected behavior

Kurdish text should render with proper Arabic script shaping, where ە joins
correctly with adjacent letters — the same way it works on **Mapbox GL JS** using
the `mapbox-gl-rtl-text` plugin.

The web version handles Kurdish correctly. The iOS SDK does not.

## Notes / preliminary analysis

- The `mapbox-gl-rtl-text` plugin is available for GL JS but **not for iOS SDK**
- Kurdish (Sorani) uses Arabic script with additional characters (ە ۆ ێ ڕ ڵ ڤ)
- The character ە (U+06D5) is the primary issue — it has no Unicode Presentation
Forms, so the iOS SDK cannot shape it
- Arabic text (ة U+0629) renders correctly — only Kurdish ە breaks
- This affects millions of Kurdish users in Iraq, Iran, Syria, and Turkey

**Feature request:** Please add RTL text shaping support to the iOS Maps SDK,
equivalent to the web `mapbox-gl-rtl-text` plugin, with proper handling of Kurdish
characters.

![Image](https://github.com/user-attachments/assets/f13feefb-bcf4-423a-88e2-6fcbdc3a411a)

![Image](https://github.com/user-attachments/assets/249cce80-d286-4f6b-9e06-48ae6aeec8b4)

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the issue in an iOS Maps SDK SymbolLayer using a textField containing the provided Kurdish example, then compare its shaping with Mapbox GL JS and the mapbox-gl-rtl-text plugin. Done means Kurdish characters including ە join correctly in rendered labels and the behavior matches the expected Arabic-script shaping.

Written by the indexing model from the issue text.

Assessment

Tech stack
ios, swift
Domain
internationalization, mobile-dev
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.