Android TextView 无法正确显示具有自定义字体的阿拉伯文本

问题描述 投票:0回答:2

我正在开发一个使用阿拉伯文本的 Android 应用程序。 TextView 中的文本使用自定义字体显示。问题是某些暂停标记无法正确显示。当我使用 HTML 时,相同的文本、相同的字体在浏览器上完美地显示。但是Android TextView有问题。

浏览器显示:

enter image description here

TextView显示: enter image description here

我尝试了多种解决方案,包括以下内容,但没有一个有效

  • 尝试增加字母间距
  • 借助 Html.fromHtml 方法在 textView 中使用相同的 html 代码
  • 通过 xml 以及 Java 字体定义字体系列
  • 尝试使用 fontFeatureSettings 启用/禁用连字

我在textView上应用以下样式

 <style name="ArabicTextViewStyle">
    <item name="fontFamily">@font/alquran_indopak_by_quranwbw_v_4_2_2</item>
    <item name="singleLine">false</item>
    <item name="android:textDirection">rtl</item>
    <item name="android:textSize">30dp</item>
    <item name="textAppearanceTitleMedium" />
</style>

HTML 文件如下:

<html>
   <head>
    <style>
      @font-face { font-family: JuneBug; src: url('AlQuran-IndoPak-by-QuranWBW.v.4.2.2.ttf'); } 
      h2, p {
         font-family: JuneBug;
      }
    </style>
   </head>
   <body>
    <h2>
        صِرَاطَ الَّذِیْنَ اَنْعَمْتَ عَلَیْهِمْ ۙ۬— غَیْرِ الْمَغْضُوْبِ عَلَیْهِمْ وَلَا الضَّآلِّیْنَ 
    </h2>
   </body>
</html>

我不知道为什么相同的文本和字体在浏览器中可以正确显示,但在 Android 上却不能。两个地方的文本均采用 UTF-8 编码。 我已经在 Android Studio 模拟器以及多个物理设备上进行了尝试,但问题仍然存在。

android fonts textview arabic
2个回答
0
投票

根据这里的答案阿拉伯语发音符号未正确显示 所有阿拉伯字符都可以使用单个 UTF-16 代码单元(2 个字节)进行编码,但它们可能需要 2 或 3 个 UTF-8 代码单元(每个 1 个字节),因此如果您只编码阿拉伯语,则 UTF-16 会是一个更节省空间的选择。 检查这是否有效,并尝试 https://github.com/mobin-tabaran-intelligent-struct/MTTextView 来选择你的字体。


0
投票

使用不同的脚本,该脚本在 Android 设备上有问题,

不要使用古兰经 2:2 中具有以下模式的脚本 َْ巴َ 999

使用这个脚本 2019-09-09 14:01:01 来源: 您可以从以下位置下载此脚本 https://qul.tarteel.ai/resources

© www.soinside.com 2019 - 2024. All rights reserved.