Как правильно показывать арабские буквы в Android? - PullRequest
0 голосов
/ 10 сентября 2018

Мое приложение показывает буквы и слова на арабском языке. Но эти буквы выглядят неправильно. Например символы بَ и شَ:

Правильно (из iOS):

Correct

Неправильно (из Android):

Wrong

Как видите, небольшая линия на верху букв должна быть по центру. Но это не так. Как отображать арабские символы на Android как на iOS?

ОБНОВЛЕНИЕ: я пытаюсь использовать Better-Arabic-Shapper, но он также отображается неправильно:

Better-арабско-Shapper

Better-Arabic-Shapper

Я пытаюсь установить пользовательские шрифты (Arial, Simpo, nassim_latn_rg) с кодом ниже, но он также не работает правильно:

private const val FONT_PATH = "fonts/"

val font = "nassim_latn_rg.otf"
val typeface = Typeface.createFromAsset(context.assets, FONT_PATH + font)
textView.typeface = typeface

Ответы [ 2 ]

0 голосов
/ 15 сентября 2018

Я пробовал со шрифтом Roboto, он отлично работает. Все настройки приложения по умолчанию. Мне не нужно было добавлять android:supportsRtl="true" в мой манифест.

<style name="RobotoRegular">
    <item name="android:fontFamily">sans-serif</item>
</style>

Результат:

enter image description here

Пожалуйста, попробуйте этот шрифт и вернитесь, если вы все еще сталкиваетесь с проблемой. У меня такое ощущение, что это проблема шрифта.

0 голосов
/ 10 сентября 2018

В AndroidManifest.xml файл под приложением тег поставлен

android:supportsRtl="true"

, чтобы разрешить арабский язык. Если это не работает, вам нужно установить Гравитация в TextView / других видах в соответствии с требованием.

EDIT

Посетите эту ссылку , чтобы изменить свой арабский язык. Они использовали Better-Arabic-Shapper для решения

РЕДАКТИРОВАТЬ 2

Я только что проверил это на устройстве My Redmi, и оно показывается как iOS.

Tested version

test_activity.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="بَ"
    android:textSize="40sp"
    android:layout_margin="20dp"/>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="شَ"
    android:textSize="40sp"
    android:layout_margin="20dp"/>

</LinearLayout>

РЕДАКТИРОВАТЬ 2: Даже на эмуляторе PIXEL, использующем API 28, он работает нормально. проверьте изображение ниже:

Pixel emulator

...