如何使用WebView自定义字体

现在我想显示一些unicode字符,并使用了<font face=" Arial">something here</font>标签。 但似乎WebView无法findArial字体,因为我只能看到不明飞行物字符。 我必须将arial.ttf复制到某个地方,或者如何在WebView使用这种TrueType字体? 谢谢。

loadData也不适用于我,所以我在srcpath中使用了file:///android_asset

它与loadDataWithBaseURL一起工作!

在这个例子中,我将CSS更改为:

 @font-face { font-family: 'feast'; src: url('fonts/feasfbrg.ttf'); } body {font-family: 'feast';} 

然后使用assetspath作为基础url:

 loadDataWithBaseURL("file:///android_asset/",myhtml,"text/html","utf-8",null); 

显然,你可以使用WebView的自定义字体,就像上面build议的@raychung一样。 但是这不会为2.1(Bug报道在这里 )。 这应该为1.5,1.6和2.2。

您可以将自定义字体TTF文件放在/assets文件夹中,然后放入您的CSS文件中:

 @font-face { font-family: "myIPA"; src: url('IPA.TTF'); } .phon, .unicode { display: inline; font-family: 'myIPA', Verdana, sans-serif; font-size: 14pt; font-weight: 500; font-style:normal; color: black; } 

您现在可以在HTML文件中引用此字体样式。

您可以通过在首次启动应用程序时将资产中的字体文件复制到文件夹,然后将其引用为所有版本,从而使其适用于所有版本:

 "@font-face { font-family: cool_font; src: url('file://"+ getFilesDir().getAbsolutePath() + "/cool_font.ttf'); }" 
 @font-face { font-family: 'MyCustomFont'; src: url('/assets/fonts/MaycustomFont.ttf') } 

这个对我有用。

 ->src ->assets ->fonts ->MaycustomFont.ttf ->.. ->res 

我用下面的代码rtl方向与波斯语字体,希望有人使用这个代码或有人build议我最好的方式。 谢谢

  String myCustomStyleString="<style type=\"text/css\">@font-face {font-family: MyFont;src: url(\"file:///android_asset/fonts/BYEKAN.ttf\")}body,* {font-family: MyFont; font-size: medium;text-align: justify;}</style>"; webView.loadDataWithBaseURL("", myCustomStyleString+"<div style=\"direction:rtl\">"+myHtm+"</div>", "text/html", "utf-8", null); 

它没有为我工作,我不得不链接我的Web服务器上的字体,而不是使用本地文件的引用:

  @font-face { font-family: 'feast'; src: url('http://yoursite.com/tutorial/css/feasfbrg.ttf'); } body {font-family: 'feast';} 

正如菲利普·马丁内斯·卡雷尼奥(Felipe MartinezCarreño)所说的那样,你可以从资产中复制,这将起作用

你可以参考这个更多的细节

基本的想法是网页应该可以访问字体文件。 这就是为什么build议的原始解决scheme在HTML文件和字体文件都在assets文件夹中时工作,并从那里加载HTML文件。

这不是一个Androidfunction,它是CSS,所以应该使用任何Android SDK。

如果字体文件真的存在,并且在样式中给出正确的path,则从文件夹加载字体也应该可以。 但是,这种方法更加复杂,需要编写代码来复制文件,然后编码来确定文件的位置。

我很乐意简单地在资产中joinHTML内容和字体文件,然后从那里加载。

 webView.loadUrl("file:///android_asset/content.html"); 

使用CSS

  @ font-face {
      font-family:cool_font;
      src:url('cool_font.ttf');
     }