2011-07-17 24 views
6

Quiero cambiar la fuente WebView. Hay 2 archivos en la carpeta "activos". Ellos son:Cambiar fuente de WebView utilizando CSS; archivo de fuente en la carpeta de activos. (problema)

activos/fonts/DejaVuSans.ttf y

activos/css/result.css

Busqué algunas respuestas sobre StackOverflow y encontrar una solución, pero no funciona. El result.css carga DejaVuSans.ttf utilizando la directiva @ font-face. Luego se incluye en el < enlace> etiqueta de datos que se pasa a WebView :: loadDataWithBaseURL (El código está debajo). El problema es que los estilos CSS funcionan (el texto es rojo) pero la fuente no es. Aparecen caracteres cuadrados cuando muestro símbolos fonéticos (/ 'pə: sn /).

String resultText = "<html><head>"; 
resultText += "<link href=\"css/result.css\"" + " rel=\"stylesheet\" type=\"text/css\" />"; 
resultText += "<style>" + "@font-face { font-family: \"DejaVuSans\"; " + "" + 
"src: url('file:///android_asset/fonts/DejaVuSans.ttf'); }</style>"; 
resultText += "</head>"; 
resultText += "<body><p>" + text + "</p>" + "</body></html>"; 
resultView.loadDataWithBaseURL("file:///android_asset/", resultText, "text/html", "utf-8", null); 

result.css:

@font-face { 
    font-family: "DejaVuSans"; 
    /*src: url('fonts/DejaVuSans.ttf'); also not work*/ 
    src: url('file:///android_asset/fonts/DejaVuSans.ttf'); 
} 

body { 
    color: red; 
} 

El System.out.println (resultText) es:

<html><head><link href="css/result.css" rel="stylesheet" type="text/css" /><style>@font-face { font-family: "DejaVuSans"; src: url('file:///android_asset/fonts/DejaVuSans.ttf'); }</style></head><body><p>person /'pə:sn/</p></body></html> 

Respuesta

16

Fue resuelto. No añadí "font-family" al selector de cuerpo y la fuente URL debe ser un archivo: ///android_asset/fonts/DejaVuSans.ttf"

@font-face { 
    font-family: 'DejaVuSans'; 
    /* src: url('DejaVuSans.ttf'); This doesn't work */ 
    /* src: url('fonts/DejaVuSans.ttf'); Neither is this */ 
    src: url('file:///android_asset/fonts/DejaVuSans.ttf'); /* but this does */ 
} 

body { 
    font-family: 'DejaVuSans'; 
    color: red; 
} 
+0

Estoy trabajando en Windows. ame para saber la "familia de fuentes"? – MobiDev

+0

Tengo el mismo problema pero la fuente todavía no se carga. Escribo el texto completo y el tipo de letra en un archivo html que se carga a la vista web. – Kenji

4

bug Conocido en 2,0 y 2,1:

http://code.google.com/p/android/issues/detail?id=4448

Para 2.2 :

@font-face { 
    font-family: 'FontName'; 
    src: url('filefont.ttf'); // with no "fonts/" 
} 
+0

he utilizado la etiqueta "android-2.2". Ese error es de 2.0. se fija en 2,2. – Emerald214

+0

Su derecho, editado ... – ChristopheCVB

+0

No funciona. Mi archivo de fuente está en la carpeta assets/fonts. Intenté copiarlo en assets/pero todavía no funciona. – Emerald214

0

Solía ​​reemplazo Cufon para dispositivos que no soportan. mi cara de la fuente local. me escribió una función de JavaScript para determinar si se requiere Cufon

requiresCufon : function(){ 
    var version = window.navigator.userAgent.match(/Android\s+([\d\.]+)/); 
    var MINIMUM_OS_FONTFACE = 2.2; 
    if(typeof version != 'undefined'){ 
     //strip non digits 
     version = version[0].replace(/[^0-9\.]/g, ''); 
     //if version is less than required for @font-face then cufon 
     if(parseFloat(version) < MINIMUM_OS_FONTFACE) 
      return true; 
     else 
      return false; 
    } 
    else{ 
     return true; 
    } 
}, 
Cuestiones relacionadas