web-dev-qa-db-fra.com

Comment afficher correctement les lettres arabes dans Android?

Mon application affiche des lettres et des mots en langue arabe. Mais ces lettres semblent fausses. Par exemple, les symboles بَ et شَ:

Correct (depuis iOS):

 Correct

Wrong (à partir d'Android):

 Wrong

Comme vous pouvez le constater, la petite ligne en haut des lettres doit être centrée. Mais ce n'est pas. Comment afficher des symboles arabes sur Android comme sur iOS?

UPDATE: J'essaie d'utiliser Better-Arabic-Shapper, mais il affiche également de manière incorrecte:

Better-Arabic-Shapper

 Better-Arabic-Shapper

J'essaie de définir des polices personnalisées (Arial, Simpo, nassim_latn_rg) avec le code ci-dessous, mais cela ne fonctionne pas non plus correctement:

private const val FONT_PATH = "fonts/"

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

J'ai essayé avec la police Roboto, cela fonctionne bien. Tous les paramètres de l'application sont par défaut. Je n'ai pas eu à ajouter Android:supportsRtl="true" dans mon manifeste.

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

Résultat:

 enter image description here

S'il vous plaît essayer cette police et revenir si vous rencontrez toujours le problème. J'ai l'impression qu'il s'agit d'un problème lié aux polices.

3
user1506104

Dans le fichier AndroidManifest.xml sous la balise application, mettez

Android:supportsRtl="true"

permettre la langue arabe. Si cela ne fonctionne pas, vous devez définir gravity sur la vue TextView/other en fonction des besoins.

MODIFIER

Visitez ce lien pour changer votre langue arabe.Ils ont utilisé Better-Arabic-Shapper pour la solution 

EDIT 2

Je viens de tester cela sur mon appareil Redmi et il montre comme 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>

EDIT 2: Même sur l'émulateur PIXEL utilisant l'API 28, les résultats sont satisfaisants. vérifiez l'image ci-dessous:

 Pixel emulator

0
Rahul Khurana