2009-09-15 21 views
57

Quiero utilizar fuentes externas en mi aplicación. He intentado agregar fonts nuevo usando AssetManager pero no funcionó. A continuación se muestra el código:Usar fuentes externas en android

Typeface face; 

face = Typeface.createFromAsset(getAssets(), "font.otf"); 

textview.setTypeface(face); 

pero no muestra el texto ...

favor me ayude con esto.

+1

..para ser ordenada puede tener las fuentes en activos/carpeta de fuentes y el acceso cara Tipo de letra; face = Typeface.createFromAsset (getAssets(), "fonts /" + "font.otf"); textview.setTypeface (cara); –

Respuesta

63

AFAIK, Android no es compatible con OpenType. Use una fuente TrueType en su lugar.


ACTUALIZACIÓN: Al parecer OpenType ahora es compatible, al menos en cierta medida. No fue compatible originalmente, por lo que querrás probar tu fuente a fondo en cualquier versión de Android que admita tu aplicación.

+0

por lo que está diciendo que estoy en la dirección correcta ... solo necesito usar el archivo ttf en lugar de otf ??? – mudit

+2

Sí. Dado su código, necesita que su fuente esté en la raíz de su directorio assets /, pero de lo contrario debería estar bien con una fuente compatible. – CommonsWare

+0

El mensaje de error indica cierta dificultad de comunicación entre su emulador y cualquier adb o Eclipse; no tiene nada que ver con las fuentes. Descargue http://commonsware.com/Android/Android-src-2_1.zip y encontrará un proyecto de Android que muestra la carga de una fuente TrueType. También tenga en cuenta que ahora Android 1.6 le permite cargar fuentes desde fuera del APK (p. Ej., Una descarga por separado). – CommonsWare

1

Estaba teniendo el mismo problema. Mi fuente tampoco funcionaba en Android, pero necesitaba que funcionara. Utilizando un editor de fuentes, copié los caracteres de mi fuente en la fuente que viene con el ejemplo de FontSampler de Android-src-2_1. Funcionó perfectamente.

Si bien admitiré que mi método era cuestionable desde el punto de vista de la propiedad intelectual, en realidad no terminé con la fuente original, ya que todos los caracteres fueron reemplazados y todas las referencias a la fuente anterior fueron reemplazados como bien. Intenté "mirar" la forma en que se definieron las dos fuentes, pero hacer coincidir todas las variables de fuente tampoco funcionó. Entonces en el ned, utilicé un esqueleto de la fuente original como una plantilla para la nueva fuente.

9

Android es compatible con OTF (no estoy seguro de cuál versión de SDK pero definitivamente funciona con 1.6), estaba usando una fuente OTF de máquina de escribir por un tiempo, pero la representación no es tan precisa como con la versión TTF I terminé usando (a través del convertidor de fuentes en línea). La línea de base estaba por todas partes (algunas letras tenían un total de 2 píxeles más que otras), y en teléfonos LDPI como el HTC Wildfire el problema se magnifica enormemente debido a los píxeles más grandes.

12

Para acceder a nuestra fuente fácilmente, debemos agruparla con nuestra aplicación de forma que nuestro código pueda cargarla posteriormente. Para ello, creamos una carpeta Fuentes en nuestros activos directos

Esta puede ser su .xml

<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 
<TextView 
    android:id="@+id/DefaultFontText" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:textSize="30sp" 
    android:text="Here is some text." /> 
<TextView 
    android:id="@+id/CustomFontText" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textSize="30sp" 
    android:text="Here is some text."> 
    </TextView> 

Escribir siguiente código en su clase .java

Typeface tf = Typeface.createFromAsset(getAssets(), 
      "fonts/BPreplay.otf"); 
    TextView tv = (TextView) findViewById(R.id.CustomFontText); 
    tv.setTypeface(tf); 
1

androide admite formatos otf y ttf, los experimenté a ambos.

tv3 = (TextView)findViewById(R.id.tv1); 
    Typeface typeFace = Typeface.createFromAsset(getAssets(), "fonts/TRAJANPRO-BOLD.OTF"); 
    tv3.setTypeface(typeFace); 

este es el paso que he usado para ambos idiomas inglés y locales

1

Uso Fontinator soporte de TI OTF cabina y TTF Fuentes

Es un androide-Biblioteca de hacer más fácil, para usar fuentes personalizadas .

https://github.com/svendvd/Fontinator

+0

Es bastante bueno, pero cambiando más de 1000 televisores a los suyos propios ... no muy práctico –

-3

Puede utilizar biblioteca simple EasyFonts tercero para establecer variedad de fuente personalizada a su TextView.Al usar esta biblioteca, no debe preocuparse por descargar y agregar fuentes en la carpeta assets/fonts. También sobre la creación de objetos Tipo de letra.

Proporciona las siguientes caras de fuente.

  • Roboto
  • Droid Serif
  • Droid Robot
  • Libertad
  • Fun Raiser
  • Nación Android
  • verde aguacate
  • Reconocimiento

Simplemente:

TextView myTextView = (TextView)findViewById(R.id.myTextView); 
myTextView.setTypeface(EasyFonts.robotoThin(this)); 
Cuestiones relacionadas