La fuente del recurso no se carga en android webView

Estoy desarrollando una actividad de Android que está cargando un archivo HTML en una vista web.
Sin embargo esta acitivty no está cargando fuentes en algunos teléfonos como HTC Desire o Sony Xperia Z con androides 4.4 o 4.1.
Quiero saber si he perdido algo o sólo depende del teléfono que estoy probando mi aplicación.

private void loadToWebView(String s) { try { pageWebView.loadDataWithBaseURL("file:///android_asset/", s, "text/html", "utf-8", null); configureWebView(pageWebView); } catch (Exception e) { e.printStackTrace(); } } 

Aquí está el encabezado html:

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> <style type="text/css"> @font-face { font-family: 'Persian'; src: url('file:///android_asset/fonts/b_yekan.ttf'); } @font-face { font-family: 'Persian2'; src: url('file:///android_asset/fonts/b_homa.ttf'); } @font-face { font-family: 'PersianTitle'; src: url('file:///android_asset/fonts/b_titr.ttf');} body {font-family: 'Persian';} h1 {font-family: 'PersianTitle';} h2 {font-family: 'Persian2';} </style> 

Las fuentes se encuentran en los elementos / fuentes / de esta forma
Introduzca aquí la descripción de la imagen

  • En primer lugar , la ruta de fuentes debe ser relativa a su archivo HTML / CSS.

Por lo tanto, en lugar de esto:

 @font-face { font-family: 'Persian'; src: url('file:///android_asset/fonts/b_yekan.ttf'); } 

Utilice algo como esto:

 @font-face { font-family: 'Persian'; src: url('fonts/b_yekan.ttf'); } 
  • En segundo lugar , debe asegurarse de que el objetivo que está probando contra realmente apoya el script en árabe.

Con eso, a continuación ofrezco un ejemplo práctico.


Assets / about_us.html :

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> <style type="text/css"> @font-face { font-family: 'B Homa'; src: url('fonts/BHOMA.TTF');} @font-face { font-family: 'B Lotus'; src: url('fonts/BLOTUS.TTF');} @font-face { font-family: 'B Lotus Bold'; src: url('fonts/BLOTUSBD.TTF');} </style> </head> <body> <p style="font-family:'B Homa';font-size:20px;">B Homa: مخصص</p> <p style="font-family:'B Lotus';font-size:20px;">B Lotus: مخصص</p> <p style="font-family:'B Lotus Bold';font-size:20px;">B Lotus Bold: مخصص</p> </body> </html> 

BHOMA.TTF , BLOTUS.TTF y BLOTUSBD.TTF se descargan desde bornaray.com y se almacenan en la carpeta assets/fonts/ .

LoadToWebView () , es parte de un Fragment , por getActivity().getAssets() tanto getActivity().getAssets() :

 private void loadToWebView() { AssetManager assetManager = getActivity().getAssets(); try { InputStream input = assetManager.open("about_us.html"); byte[] buffer = new byte[input.available()]; input.read(buffer); input.close(); mWebView.loadDataWithBaseURL("file:///android_asset/", new String(buffer), "text/html", "UTF-8", null); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } 

Y el resultado :

Captura de pantalla

Espero que esto ayude.

  • Android: "onBackPressed" sólo se llama desde la primera página de Cordova 3 webview, no se puede anular desde páginas interiores
  • Webview dentro de NestedScrollView causa problema de altura
  • Codificación UTF-8 en WebView e ICS
  • Android WebView dentro de ScrollView solo desplaza scrollview
  • Llamar a métodos Android desde JavaScript
  • El teclado Android no se muestra al hacer clic en la entrada en la vista web
  • Desarrollo de Android: Uso de la imagen de activos en un HTML de WebView
  • Se rehusó a mostrar un marco porque establecía X-Frame-Options en 'DENY en android webview
  • Enlace de correo electrónico de Webview (mailto)
  • Escáner de código de barras ZXing para Webapps
  • Cómo desplazarse mediante programación WebView de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.