J'ai compris comment dessiner des caractères arabes correctement (connecté et droite à gauche) en utilisant des chaînes littérales comme ceci:Comment dessiner du texte arabe sur Android après avoir lu un fichier?
textView.setTypeFace(Typeface.createFromAssets(getAssets(),"DejaVuSans.ttf"));
textView.setText("\uFEB3\uFE92\uFE98\uFE94");
Mais pour une raison que je ne peux pas obtenir le arabe à formater correctement si je lis quelque chose de un fichier en utilisant InputStreams comme ceci:
arabictext.txt:
سبتة
et le code:
InputStream istream = as.open("arabictext.txt");
String string;
BufferedInputStream bis = new BufferedInputStream(istream);
/* Read bytes to the Buffer until
* there is nothing more to read(-1). */
ByteArrayBuffer baf = new ByteArrayBuffer(50);
int current = 0;
while((current = bis.read()) != -1){
baf.append((byte)current);
}
/* Convert the Bytes read to a String. */
string = new String(baf.toByteArray(), 0, baf.length(), "UTF-8");
puis en affichant la chaîne dans une vue de texte. Les lettres sont ordonnées correctement mais ne sont pas connectées et ne sont pas dans la forme appropriée pour la fin du mot/milieu du mot. Cela n'a aucun sens pour moi parce que je pensais que chaque forme de chaque lettre est un point de code Unicode différent.
2) Si vous placez les valeurs de code réelles dans le fichier, la textview affichera les valeurs des points de code sous forme de chaîne.
Toute aide serait appréciée! J'ai commencé à faire une vue personnalisée pour dessiner le texte, mais ça s'est compliqué, vite.
Vous pouvez trouver votre solution [sur ce lien] (http://stackoverflow.com/a/7962813/779408). Prendre plaisir! :) – breceivemail