Я выяснил, как правильно рисовать арабские символы (подключенные и справа налево), используя строковые литералы, подобные этому:
textView.setTypeFace(Typeface.createFromAssets(getAssets(),"DejaVuSans.ttf"));
textView.setText("\uFEB3\uFE92\uFE98\uFE94");
Но по какой-то причине я не могу заставить арабский правильно отформатировать, если ячитать что-либо из файла, используя InputStreams, например:
arabictext.txt:
سبتة
и код:
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");
, а затем отображать строку в текстовом представлении,Буквы упорядочены правильно, но не связаны и не имеют правильной формы конца слова / середины слова.Это не имеет смысла для меня, потому что я думал, что каждая форма каждой буквы - это отдельная кодовая точка Unicode.
2) Помещение фактических значений кода в файл просто заставляет текстовое представление отображать значения кодовой точки какСтрока.
Любая помощь будет оценена!Я начал создавать собственный вид, чтобы просто рисовать текст, но он стал сложным, быстрым.