Арабский шрифт отображается неправильно в TextView

пытаюсь добавить арабский текст в свой проект, но возникают две проблемы:

  • глиф для букв ل и ا не совпадает (لا)
  • гласные не правильно расставлены

Это выглядит как:

Это не проблема со шрифтом, ведь в других программах он работает как надо? textDirection="anyRtl" не помогает

Текстовый вид:

<TextView
    android:id = "@+id/text_ayah_text"
    android:layout_width = "0dp"
    android:layout_height = "wrap_content"
    android:fontFamily = "@font/uthman_taha_naskh_regular"
    android:textSize = "34sp"
    app:layout_constraintEnd_toEndOf = "parent"
    app:layout_constraintStart_toEndOf = "@id/barrier"
    app:layout_constraintTop_toTopOf = "parent"
    tools:text = "اللَّهُ لا إِلٰهَ إِلّا هُوَ الحَيُّ القَيّومُ" />

Когда вы говорите in other programs it works as it should, что вы имеете в виду? это работает в другом месте в вашем приложении. я всегда нахожу поддержку RTL в Android проблематичной ..

ADM 06.12.2022 13:27

@ADM ахах, я имею в виду MS Word и сайт, на котором я скачал шрифт. Это не работает везде в моем приложении. На самом деле поддержка RTL в Android за последние годы стала намного лучше, но это все еще проблема, верно?

flex 06.12.2022 13:51

Ваша проблема не в Direction, что-то, что можно легко исправить, ваша проблема в рисовании текста, который является внутренним делом. Попробуйте использовать некоторые другие арабские шрифты только для testibg, посмотрите, видите ли вы какую-либо разницу.

ADM 06.12.2022 14:03

@ADM Я пробовал несколько арабских шрифтов, некоторые из них работают нормально, а некоторые имеют ту же проблему. Но этот шрифт самый распространенный, я его вижу во многих приложениях, так что он должен нормально работать. Похоже, что программа чтения глифов читает ltr вместо rtl и из-за этого не находит нужный глиф.

flex 06.12.2022 14:39
0
4
89
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

//Add this code in java file
textview.setTextDirection(View.TEXT_DIRECTION_ANY_RTL).
//And in textview
android:textDirection = "anyRtl"

к сожалению, это не работает

flex 06.12.2022 13:10
Ответ принят как подходящий

Проблема была с буквенным интервалом для TextView в темах. Удалил и все работает

Другие вопросы по теме