Las fuentes ttf personalizadas no se muestran correctamente en TextView en Android 4.4 KitKat

Tengo un texto que tiene algunas partes en negrita. Hasta KitKat esta estrategia ( como se menciona en este post ) funcionó perfectamente bien

Mi archivo de recursos de cadenas:

<string name="multi_style_text">NON-BOLD TEXT \n<b>BOLD</b></string> 

Mi código de aplicación en fragmento:

 txtView.setTypeface(FontUtils.getOstrichRegular(this.getActivity())); ... public static Typeface getOstrichRegular(Context context) { return Typeface.createFromAsset(context.getAssets(), "fonts/ostrich_regular.ttf"); } 

Actualmente (en KitKat), la parte en negrita no se muestra en la fuente personalizada, la parte en negrita se muestra en la fuente personalizada. En versiones anteriores de Android, todo el texto se muestra en la fuente personalizada.

¿Lo que da?

Así que, después de estar frustrado por este error, busqué alrededor y encontré una solución al problema. En mi proyecto actual utilizamos la fuente calibri.ttf. Que estaba funcionando bien hasta 4.4. Una vez que conseguí la actualización a mi nexo 4, todos los TextViews con la fuente de Calibri mostraban "ff" en vez del texto entero.

LA FIX – obtener una versión .otf (open type font) de su fuente, y poner en el proyecto, funciona como un encanto. Demasiado malo google no informó a los reveladores en esto y hay muy poca documentación en la materia.

Aparentemente este es un error en KitKat y se ha corregido en un árbol interno .

Pon tu fuente personalizada en los recursos de android bajo el nombre de la carpeta "fuente" o lo que quieras

Prueba esto

 myTypeface = Typeface.createFromAsset(this.getAssets(), "fonts/<<your font>>.ttf"); 

En onCreate() entonces

 [use youcontroll].setTypeface(myTypeface); 

La mejor de las suertes…

Resolví el problema convirtiendo mi archivo.ttf a file.otf

Reemplazar

 Typeface typeface = Typeface.createFromAsset(activity.getAssets(), "fonts/ostrich_regular.ttf"); yourTextView.setTypeface(typeface); 

Por:

 Typeface typeface = Typeface.createFromAsset(activity.getAssets(), "fonts/ostrich_regular.otf"); yourTextView.setTypeface(typeface); 

FYI: el trabajo de formato .otf para toda la versión de android (no sólo en kitkat)

Después de muchas horas buscando roboto.otf (año 2014) entendí que era un error. Simplemente descargue una fuente ttf normal de https://www.fontsquirrel.com/fonts/roboto-2014 y copie a la carpeta assets, luego use setTypeface. También puede convertirlo en otf con cualquier sitio web.

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