Шрифт Hindi с уровнем API 15 (или Android 4.0.2)

У меня есть приложение для Android на основе хинди, и я использовал шрифт devangiri из SDK Android API 16 и переименован в hindi.ttf. Текст отлично отображает уровень API 16 и 17, но просто разрывается на уровне API Android 15 и ниже.

Есть ли какие-либо причины, по которым я могу исправить это, не удаляя поддержку более низких уровней API. Мой код для настройки textview:

import android.app.Activity; import android.graphics.Paint; import android.graphics.Typeface; import android.os.Bundle; import android.view.GestureDetector; import android.widget.TextView; public class Prayer extends Activity { // TextSwitcher vs; GestureDetector gestureDetector; static Tips tip = null; static StringBuilder quesString = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.prayer); TextView tv1 = (TextView) findViewById(R.id.textView1); Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/hindi.ttf"); tv1.setTypeface(tf); tv1.setText("श्री"); tv1.setPaintFlags(tv1.getPaintFlags() | Paint.SUBPIXEL_TEXT_FLAG); } } 

Макет XML:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#C5C6E1" tools:context=".Prayer" > <TextView android:id="@+id/textView1" android:layout_width="fill_parent" android:layout_height="wrap_content" > </TextView> </RelativeLayout> 

Текущий: Введите описание изображения здесь

Ожидаемое: Введите описание изображения здесь

Я столкнулся с аналогичной проблемой, когда разрабатывал приложение для хинди. Тем не менее, ошибка была решена при изменении файлов шрифтов.

Кроме того, IMHO устройство просто заменяет символы UTF-8 в тексте соответствующими символами в файлах шрифтов. В этом случае он показывает совершенно другой символ. Таким образом, проблема должна быть с файлами шрифтов.

Дайте мне свое электронное письмо, если вы хотите использовать мои файлы шрифтов.

Для поддержки хинди я поддерживал шрифт DroidSansDevanagari-Regular.ttf который был добавлен в Jellybean. Вы можете найти все Jellybean Android-шрифты в каталоге SDK в разделе:

/<Android SDK Dir>/platforms/android-16/data/fonts

Если вы все еще видите разрывы на 4.0.2, вы можете попробовать:

 tv1.setPaintFlags(tv1.getPaintFlags() | Paint.SUBPIXEL_TEXT_FLAG); 

При настройке динамического textSize используйте это:

 tv1.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimensionPixelOffset(R.dimen.questionTEXT));