ios 阿拉伯语发音符号(Harakat)在具有对齐文本对齐的UILabel中未对齐

trnvg8h3  于 11个月前  发布在  iOS
关注(0)|答案(1)|浏览(132)

我在UILabel中显示阿拉伯语文本时遇到了一个视觉故障,文本对齐设置为对齐。具体来说,阿拉伯语变音符号(Harakat)被放错了位置,这破坏了文本的可读性。这个问题似乎源于UILabel试图对齐内容,导致Harakat的位置不正确。这个问题可以在各种字体大小中看到,例如34,36,可能更多。而且问题并不是由于代码引起的,因为我已经尝试了一个只有UILabel和文本的新代码。
有趣的是,当我将文本对齐方式切换为从右向左时,问题就消失了,Harakat也被正确放置了。然而,我的要求是使文本对齐,以确保整洁和专业的布局。
有没有人遇到过类似的问题,或者可以提供关于如何在对齐的UILabel中保持阿拉伯语变音符号的正确位置的见解?任何建议或解决方法,以实现对齐而不影响阿拉伯语脚本的完整性,将不胜感激。作为参考,这里是您可以在图像上看到的具体文本:
وَلَنْ تَرْضَىٰ عَنْكَ الْيَهُودُ وَلَا النَّصَارَىٰ حَتَّىٰ تَتَّبِعَ مِلَّتَهُمْ ۗ قُلْ إِنَّ هُدَى اللَّهِ هُوَ الْهُدَىٰ ۗ وَلَئِنِ اتَّبَعْتَ أَهْوَاءَهُمْ بَعْدَ الَّذِي جَاءَكَ مِنَ الْعِلْمِ ۙ مَا لَكَ مِنَ اللَّهِ مِنْ وَلِيٍّ وَلَا نَصِيرٍ ‎﴿١٢٠﴾‏ الَّذِينَ آتَيْنَاهُمُ الْكِتَابَ يَتْلُونَهُ حَقَّ تِلَاوَتِهِ أُولَٰئِكَ يُؤْمِنُونَ بِهِ ۗ وَمَنْ يَكْفُرْ بِهِ فَأُولَٰئِكَ هُمُ الْخَاسِرُونَ ‎﴿١٢١﴾‏ يَا بَنِي إِسْرَائِيلَ اذْكُرُوا نِعْمَتِيَ الَّتِي أَنْعَمْتُ عَلَيْكُمْ وَأَنِّي فَضَّلْتُكُمْ عَلَى الْعَالَمِينَ ‎﴿١٢٢﴾‏ وَاتَّقُوا يَوْمًا لَا تَجْزِي نَفْسٌ عَنْ نَفْسٍ شَيْئًا وَلَا يُقْبَلُ مِنْهَا عَدْلٌ وَلَا تَنْفَعُهَا شَفَاعَةٌ وَلَا هُمْ يُنْصَرُونَ ‎﴿١٢٣﴾‏ ۞ وَإِذِ ابْتَلَىٰ إِبْرَاهِيمَ رَبُّهُ بِكَلِمَاتٍ فَأَتَمَّهُنَّ ۖ قَالَ إِنِّي جَاعِلُكَ لِلنَّاسِ إِمَامًا ۖ قَالَ وَمِنْ ذُرِّيَّتِي ۖ قَالَ لَا يَنَالُ عَهْدِي الظَّالِمِينَ ‎﴿١٢٤﴾‏ وَإِذْ جَعَلْنَا الْبَيْتَ مَثَابَةً لِلنَّاسِ وَأَمْنًا وَاتَّخِذُوا مِنْ مَقَامِ إِبْرَاهِيمَ مُصَلًّى ۖ وَعَهِدْنَا إِلَىٰ إِبْرَاهِيمَ وَإِسْمَاعِيلَ أَنْ طَهِّرَا بَيْتِيَ لِلطَّائِفِينَ وَالْعَاكِفِينَ وَالرُّكَّعِ السُّجُودِ ‎﴿١٢٥﴾‏ وَإِذْ قَالَ إِبْرَاهِيمُ رَبِّ اجْعَلْ هَٰذَا بَلَدًا آمِنًا وَارْزُقْ أَهْلَهُ مِنَ الثَّمَرَاتِ مَنْ آمَنَ مِنْهُمْ بِاللَّهِ وَالْيَوْمِ الْآخِرِ ۖ قَالَ وَمَنْ كَفَرَ فَأُمَتِّعُهُ قَلِيلًا ثُمَّ أَضْطَرُّهُ إِلَىٰ عَذَابِ النَّارِ ۖ وَبِئْسَ الْمَصِيرُ ‎
正确的方法:


的数据
错误的方式:

我已经尝试了我能想到的任何东西,比如改变字体,试图在单词之间添加额外的空格,尝试在一个新的代码中,尝试不同的来源来获取相同的文本。

fv2wmkja

fv2wmkja1#

我无法复制这个。我在17.2 Sim中进行测试。我将您的文本粘贴到默认故事板中的UILabel中,并设置自动布局约束,使其几乎与屏幕大小相同。我将行设置为0,换行符设置为自动换行,对齐设置为对齐。当我启动它时,它显示为对齐,harakat看起来对我来说是正确的(我的阿拉伯语不是很好,但我可以通过它跌跌撞撞,知道如何排版工作得很好)。特别是,字体布局正确。这是使用默认的系统字体。我也尝试了默认的系统字体在大小34作为你的建议,和Geeza Pro常规。
我注意到你的错误文本似乎包括tatweel/kashida在第一个词().你自己插入创建对齐点?我怀疑如果是这样,你可能已经把字符在错误的顺序.你的第一个错误布局我相信应该是(请原谅我,如果我弄乱我的字母表.):
瓦法塔兰法塔南苏昆
但也许它是:
was-fathah-lam-fathah-nun**-tatweel-**sukun
我认为这个tatweel是你的错误。至少,我认为它会在lam-fathah之后,而不是在nun和sukun之间。但我不相信UILabel需要它。通常阿拉伯字体会插入自己的延长。
我建议如下:

  • 确保你的文字就是你在这篇文章中包含的文字。这个文字看起来很好。
  • 在一个简单的故事板中测试这个方法,将文本直接粘贴到内容中,如果可以的话,从那里开始构建,看看问题出在哪里。
  • 检查文本的UTF-8字节,并验证它是否与您所认为的相同。我个人使用uni(您可以使用identify وَلَنْ这样的命令)。

相关问题