¿Cómo corregir fallback de la fuente de TextView?

Tengo un programa que se localiza en varios idiomas. Funciona bien en Android 4.x pero tiene un problema de renderizado de fuentes Android 2.3.x. Aquí hay un pequeño ejemplo que lo reproduce. Cualquier ayuda será apreciada.

Diseño de la actividad principal. Nada especial aquí. Sólo dos vistas de TextView:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="10dp" > <TextView android:id="@+id/text_view1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="80dp" tools:context=".MainActivity" /> <TextView android:id="@+id/text_view2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="80dp" tools:context=".MainActivity" /> </LinearLayout> 

Actividad principal:

 package com.font_test; import android.app.Activity; import android.graphics.Typeface; import android.os.Bundle; import android.widget.TextView; public class MainActivity extends Activity { private static final String TEXT = "\u0440\u0443\u0441\u0441\u043A\u0438\u0439" + "\n" + "pyccknn"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Set textview 1 final Typeface typeface1 = Typeface .createFromAsset(getAssets(), "fonts/chelsea.ttf"); final TextView tv1 = (TextView) findViewById(R.id.text_view1); tv1.setTypeface(typeface1); tv1.setTextSize(40); tv1.setBackgroundColor(0x280000ff); tv1.setText(TEXT); // Set textview 2 final Typeface typeface2 = Typeface.SANS_SERIF; final TextView tv2 = (TextView) findViewById(R.id.text_view2); tv2.setTypeface(typeface2); tv2.setTextSize(40); tv2.setBackgroundColor(0x280000ff); tv2.setText(TEXT); } } 

La fuente personalizada chelsea.ttf es de aquí http://www.dafont.com/chelsea.font . Nada especial sobre él, puedo reproducirlo con otras fuentes también.

La cadena TEXT contiene dos líneas, la primera línea con caracteres unicode que no están en la fuente chelsea y la segunda líneas con caracteres que están en la fuente. La primera vista de texto se representa con la fuente personalizada y la segunda con las fuentes de archivo san serif (que contiene todos los caracteres unicode de TEXT).

Android 4.x lo procesa correctamente, fallando sobre la fuente de stock cuando es necesario:

introduzca la descripción de la imagen aquí

Sin embargo, Android 2.3.x, no lo hace correctamente. Se vuelve a las fuentes de stock (bueno), pero utiliza métricas extrañas que resultaron en un espaciado de caracteres demasiado grande:

introduzca la descripción de la imagen aquí

¿Alguna sugerencia de cómo solucionarlo? Estoy abierto para soluciones feas, si es necesario.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.