Mon application affiche des lettres et des mots en langue arabe. Mais ces lettres semblent fausses. Par exemple, les symboles بَ et شَ:
Correct (depuis iOS):
Wrong (à partir d'Android):
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
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
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:
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.
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.
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: