RTL Arabic text clipping for specific phrase "تعيين كلمة المرور"
还没有人认领这个 Issue。
- 主要语言
- C++
- 星标
- 127k
- 派生
- 25.3k
- 平均合并
- 1 天 23 小时
- 30 天内合并 PR
- 4
描述
Description
When the app is running in RTL mode, a specific Arabic phrase causes part of the text to be clipped and not rendered on screen.
The issue happens only with the exact phrase:
تعيين كلمة المرور
In this case, the word "المرور" is hidden/clipped from the UI.
However, the issue does not occur when:
An extra space is added at the end
تعيين كلمة المرور
A single character is changed
بعيين كلمة المرور
Any small modification is made to the phrase
This suggests a rendering/layout bug related to RTL text shaping or measurement for this specific Arabic phrase.
Steps to reproduce
Enable RTL layout:
I18nManager.forceRTL(true);
I18nManager.allowRTL(true);
Render a Text component with the following value:
<View style={{flex: 1, justifyContent: 'center', alignItems: 'center'}}>
{/* not working */}
<Text>تعيين كلمة مرور</Text>
{/* working by adding space */}
<Text>تعيين كلمة مرور </Text>
{/* working by replace first letter */}
<Text>بعيين كلمة مرور</Text>
</View>
React Native Version
0.83.1
Affected Platforms
Runtime - Android, Runtime - iOS
Output of npx @react-native-community/cli info
System:
OS: macOS 26.0.1
CPU: (12) arm64 Apple M2 Max
Memory: 100.19 MB / 32.00 GB
Shell:
version: "5.9"
path: /bin/zsh
Binaries:
Node:
version: 20.19.4
path: /Users/omar/.nvm/versions/node/v20.19.4/bin/node
Yarn:
version: 1.22.22
path: /Users/omar/.nvm/versions/node/v20.19.4/bin/yarn
npm:
version: 10.8.2
path: /Users/omar/.nvm/versions/node/v20.19.4/bin/npm
Watchman:
version: 2025.10.06.00
path: /opt/homebrew/bin/watchman
Managers:
CocoaPods:
version: 1.16.2
path: /opt/homebrew/bin/pod
SDKs:
iOS SDK:
Platforms:
- DriverKit 25.0
- iOS 26.0
- macOS 26.0
- tvOS 26.0
- visionOS 26.0
- watchOS 26.0
Android SDK: Not Found
IDEs:
Android Studio: 2025.1 AI-251.26094.121.2513.14007798
Xcode:
version: 26.0.1/17A400
path: /usr/bin/xcodebuild
Languages:
Java:
version: 17.0.15
path: /usr/bin/javac
Ruby:
version: 3.4.3
path: /opt/homebrew/bin/ruby
npmPackages:
"@react-native-community/cli":
installed: 20.0.0
wanted: 20.0.0
react:
installed: 19.2.0
wanted: 19.2.0
react-native:
installed: 0.83.1
wanted: 0.83.1
react-native-macos: Not Found
npmGlobalPackages:
"*react-native*": Not Found
Android:
hermesEnabled: true
newArchEnabled: true
iOS:
hermesEnabled: Not found
newArchEnabled: false
Stacktrace or Logs
console.log("تعيين كلمة مرور")
MANDATORY Reproducer
https://snack.expo.dev/@omarhija12/display-text?platform=android
Screenshots and Videos
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
调研方向
从必需的 Expo Snack 复现器开始,在 Android 和 iOS 上分别以 RTL 模式测试确切的阿拉伯语短语,并与提供的可正常工作的变体进行比较。跟踪涉及 RTL 字形处理或测量的 React Native Text 渲染路径;完成的标准是完整短语能够无裁切地渲染,同时现有变体仍然正确。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- javascript, react-native
- 领域
- mobile
- Issue 类型
- 缺陷
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 活跃度
- 冷清
- 描述清晰度
- 基本清楚
- 新手友好度
- 48/100