我正在尝试使用自定义字体显示阿拉伯文字。我的代码如下:
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)
但在模拟器中它显示为:
你可以注意到小字符(在阿拉伯语中称为aaraab字符)根本没有调整..我该如何解决这个问题? ////////////////////////////////////////////////// ///////////////// ///////////
//// /////
使用DroidSansArabic.ttf后的结果
答案 0 :(得分:3)
这是我的字体。它是一种有效的opentype字体,并且具有大多数其他阿拉伯字体所没有的一些先进功能。
这里的问题是Android。它的阿拉伯语支持太基础了,它不了解这种字体的高级排版功能。你将无法获得一个很好的阿拉伯语显示。你可以得到的最好的东西可能是像tahoma这样的东西,它的变音符号使用相同的位置。
为了解决这个问题,我更新了字体,使其适用于Android和Iphone。不幸的是,由于这些平台的性质,人们永远无法使用标准的阿拉伯语文本来获得良好的阿拉伯语支持。我所做的是使用修改过的文本,以便得到我想要的结果。结果是基本字体,但比那些系统字体好看。抱歉,我无法发布图片(此处为新用户)
提醒一下,me_quran不是免费字体。它只对免费项目免费。如果您想获得我的解决方案,可以直接与我联系。
答案 1 :(得分:1)
根据“me_quran.ttf”的 charmap 判断,模拟器显示的是它应该显示的内容。 这个字体看起来与我见过的其他阿拉伯字体太不一样了,你可能想要抓住另一种字体。