0

我已经想出如何使用这样的字符串文字正确地绘制阿拉伯字符(连接和从右到左):

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

但是由于某种原因,如果我使用这样的 InputStreams 从文件中读取任何内容,我将无法正确格式化阿拉伯语:

阿拉伯文本.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)将实际代码值放入文件中只会导致文本视图将代码点值显示为字符串。

任何帮助,将不胜感激!我开始制作一个自定义视图来绘制文本,但它变得复杂、快速。

4

1 回答 1

3

salam Alaikom,实际上您在直接代码中使用的文本之间存在差异:

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

你从 File 中得到的,我想是:

\u0633\u0628\u062a\u0647

所以尝试在文件中插入最终格式的字符(渲染后),然后你会得到预期的结果。

于 2010-11-25T14:19:41.910 回答