可以,核心思路是:先把 NotoSansArabic-Regular.ttf 生成一个 TextMeshPro 的 SDF Font Asset,再把这个 Font Asset 挂到 RTLTMPro 的组件上。RTLTMPro 官方 README 说明它支持 Arabic / Farsi / Hebrew,并且它明确要求项目里先装好 TextMeshPro;它还给出了用 TMP Font Asset Creator 生成字体资源的流程。(GitHub)

按这个流程做就行:

  1. NotoSansArabic-Regular.ttf 导入 Unity。
  2. 打开 Window > TextMeshPro > Font Asset Creator
  3. Font Source 选择 NotoSansArabic-Regular.ttf
  4. Character Set 选 Unicode Range。
  5. Character Sequence (Hex) 里填阿拉伯字符范围;RTLTMPro 的 README 建议直接使用它仓库里 Assets/RTLTMPro/Ranges/ArabicAll.txt 的内容,或者按需用 ArabicLetters.txtArabicDigits.txtArabicTashkeel.txt
  6. Atlas Size 建议至少 512×512;README 也说明阿拉伯字体推荐这个起点,尺寸更大通常质量更好但占用也更大。
  7. Generate Font Atlas,确认字形都进去了。
  8. Save TextMeshPro Font Asset 保存生成的 SDF 资源。

然后在 UI 上这样用:

  • GameObject/UI/* - RTLTMP 创建 RTL 文本对象,或者把现有的 TextMeshPro UGUI 替换成 RTL Text Mesh Pro
  • 把刚生成的 TMP Font Asset 填到 RTL Text Mesh ProFont Asset 属性里。
  • 如果你的文本里混了富文本标签,可以开 Fix Tags
  • 如果文本以英文开头导致 RTL 修正不生效,可以试 Force Fix

一个实用建议:
如果你的界面只显示阿拉伯文,直接用 ArabicAll.txt 最省事;如果还要数字,就把 ArabicDigits.txt 一并覆盖进去。这样生成出来的 SDF 更稳,不容易出现缺字。

0

本文为原创文章,转载请注明出处,欢迎访问作者网站(和而不同)

发表评论

error: Content is protected !!