开发者

How to draw Arabic Text on Android after reading from a file?

I've figured out how to draw Arabic characters properly (connected and right to left) using string literals like this:

textView.setTypeFace(Typeface.createFromAssets(getAssets(),"DejaVuSans.ttf"));
textView.setText("\uFEB3\uFE92\uFE98\uFE94");

But for some reason I cannot get the arabic to format properly if I read anything from a file using InputStreams like this:

arabictext.txt:

سبتة

and the 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");

and then displaying the string in a textview.开发者_Python百科 The letters are ordered correctly but are not connected nor are they in the proper form for end of word/middle of word. This makes no sense to me because I thought that each form of each letter is a different Unicode code point.

2) Putting the actual code values in the file just causes the textview to display the code point values as a string.

Any help would be appreciated! I started to make a custom view to just draw the text, but it got complicated, fast.


salam Alaikom, Actually there is a difference between the text you use in direct code:

textView.setText("\uFEB3\uFE92\uFE98\uFE94");

And what you got from File which I suppose will be :

\u0633\u0628\u062a\u0647

so try to insert characters in final format ( after rendering ) in file then you will get expected result.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜