Как настроить арабские символы «аараб»? Пожалуйста, смотрите мой код - PullRequest
1 голос
/ 13 февраля 2012

Я пытаюсь отобразить арабский текст с пользовательским шрифтом.мой код выглядит следующим образом:

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 ]

3 голосов
/ 22 февраля 2012

Это мой шрифт. Это допустимый шрифт opentype, и он имеет некоторые дополнительные функции, которых нет у большинства других арабских шрифтов.

Проблема здесь с Android. Это арабская поддержка слишком проста, она не понимает предварительные возможности типографии, которые есть у этого шрифта. Вы не сможете получить хороший арабский дисплей с. Лучшее, что вы можете получить, это, вероятно, что-то вроде Tahoma, которая использует ту же позицию для своих диакритических знаков.

Чтобы решить эту проблему, я обновил шрифт, чтобы он работал с Android и Iphone. К сожалению, из-за природы этой платформы, никто не мог использовать стандартный арабский текст, чтобы получить хорошую поддержку арабского языка. Я использовал измененный текст, чтобы получить желаемый результат. В результате получается базовый шрифт, но гораздо лучше выглядящий, чем системный шрифт. Извините, я не могу опубликовать изображение (новый пользователь здесь)

Просто напоминание, me_quran не бесплатный шрифт. Это бесплатно только для бесплатных проектов. Если вы хотите получить мое решение, вы можете связаться со мной напрямую.

1 голос
/ 15 февраля 2012

Судя по charmap из "me_quran.ttf" , похоже, что симулятор показывает то, что должен показывать.Этот шрифт слишком сильно отличается от других арабских шрифтов, которые я видел, возможно, вы захотите использовать другой шрифт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...