如何调整阿拉伯语' aarab#39;字符?请看我的代码

时间:2012-02-13 05:51:35

标签: android textview

我正在尝试使用自定义字体显示阿拉伯文字。我的代码如下:

package com.androidbook.test;

import java.io.BufferedInputStream;
import java.io.InputStream;

import org.apache.http.util.ByteArrayBuffer;

import android.app.Activity;
import android.graphics.Typeface;
import android.os.Bundle;
import android.widget.TextView;

public class ArabicTextActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.arabic_display);

        TextView arabicTextView;
          Typeface arabicFont;

          arabicTextView = (TextView)findViewById(R.id.arabicTextDisplayTextView);
          arabicFont =Typeface.createFromAsset(getAssets(),"me_quran.ttf");
          arabicTextView.setTypeface(arabicFont);     
          arabicTextView.setTextSize(40);

            InputStream is = getResources().openRawResource(R.raw.arabic_text); 
            BufferedInputStream bis = new BufferedInputStream(is);
            int myInt=0;

            try{
                ByteArrayBuffer myByteArray = new ByteArrayBuffer(100); 
                while((myInt = bis.read())!=-1)
                {
                    if(myInt == 10) break;
                    myByteArray.append((byte)myInt);
                }

                String arabicLine = new String(myByteArray.toByteArray(), 0, myByteArray.length(), "UTF-8");
                arabicTextView.setText(arabicLine);
            }catch(Exception ex)
            {
                ex.printStackTrace();
            }
    }

}

和arabic_display.xml是:

<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/quranDisplayItemLinearLayout"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" 
        android:orientation="vertical">

        <TextView
            android:id="@+id/arabicTextDisplayTextView"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:text="Arabic" />

    </LinearLayout> 

其中res / raw / as arabic_text.txt在记事本中显示为(字体名称:me_quran.ttf和字体大小40)

enter image description here

但在模拟器中它显示为:

enter image description here

你可以注意到小字符(在阿拉伯语中称为aaraab字符)根本没有调整..我该如何解决这个问题? ////////////////////////////////////////////////// ///////////////// ///////////

//// /////

使用DroidSansArabic.ttf后的结果

enter image description here

2 个答案:

答案 0 :(得分:3)

这是我的字体。它是一种有效的opentype字体,并且具有大多数其他阿拉伯字体所没有的一些先进功能。

这里的问题是Android。它的阿拉伯语支持太基础了,它不了解这种字体的高级排版功能。你将无法获得一个很好的阿拉伯语显示。你可以得到的最好的东西可能是像tahoma这样的东西,它的变音符号使用相同的位置。

为了解决这个问题,我更新了字体,使其适用于Android和Iphone。不幸的是,由于这些平台的性质,人们永远无法使用标准的阿拉伯语文本来获得良好的阿拉伯语支持。我所做的是使用修改过的文本,以便得到我想要的结果。结果是基本字体,但比那些系统字体好看。抱歉,我无法发布图片(此处为新用户)

提醒一下,me_quran不是免费字体。它只对免费项目免费。如果您想获得我的解决方案,可以直接与我联系。

答案 1 :(得分:1)

根据“me_quran.ttf” charmap 判断,模拟器显示的是它应该显示的内容。 这个字体看起来与我见过的其他阿拉伯字体太不一样了,你可能想要抓住另一种字体。