如何使用web视图自定义字体( How to use custom font with WebVie

2019-06-21 05:41发布

现在我想展示一些Unicode字符和我用标签: <font face=" Arial">something here</font> 但似乎WebView找不到Arial字体,因为我只能看到不明飞行物字符。 我一定要ARIAL.TTF某处或者我如何使用这TrueType字体与复制WebView ? 谢谢。

Answer 1:

loadData没有为我工作,要么,所以我用file:///android_asset在src路径。

它曾与loadDataWithBaseURL

在这个例子中,我改变了CSS来:

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

body {font-family: 'feast';}

然后使用资产路径基础网址:

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


Answer 2:

显然,你可以使用自定义字体的WebView ,如上@raychung建议。 但是,这不会为工作2.1(错误报告在这里 )。 这应该适用于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文件中引用该字体样式。



Answer 3:

你可以得到它从你的资产将字体文件复制到你的文件的所有版本上最早推出的应用程序的文件夹,然后引用它为:

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


Answer 4:

@font-face {
 font-family: 'MyCustomFont';
 src: url('/assets/fonts/MaycustomFont.ttf') 
}

这个对我有用。

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


Answer 5:

I used below code for rtl direction with persian font, hope someone used this code or someone suggest me best way. thanks

            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);


Answer 6:

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

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

body {font-family: 'feast';}


Answer 7:

这对所有我测试过它的设备为我的伟大工程。

将您的字体文件在/ src目录/主/资产/字体,然后用这个方法:

public class HTMLUtils {

    public static String getLocalFontInHTML(String html, String fontFamily, String fontFileName) {

      return "<!DOCTYPE html>\n" +
            "<html>\n" +
            "<head>\n" +
            "<style>" +
            "@font-face {" +
            "font-family: " + fontFamily + ";" +
            "src: url('" + fontFileName + "');" +
            "}" +
            "* {font-family: '" + fontFamily + "' !important;}" +
            "* {font-size: 1rem !important;}" +
            "</style>" +
            "</head>\n" +
            "<body>\n" +
            html +
            "\n" +
            "</body>\n" +
            "</html>";
     }
}

如下

webView.loadDataWithBaseURL("file:///android_asset/", HTMLUtils.getLocalFontInHTML(item.text, Config.FONT_FAMILY, Config.REGULAR_FONT),"text/html", "UTF-8", null);

哪里

public static final String FONT_FAMILY = "Montserrat";

public static final String REGULAR_FONT = "fonts/Montserrat-Regular.otf";

希望它可以帮助别人!

如果你想从你的HTML代码中删除保持字体大小

 "* {font-size: 1rem !important;}"

有记住1rem大约相当于器14sp



Answer 8:

正如菲利普·马丁内斯·卡雷尼奥说,你可以从资产复制,它会工作。

您可以参考此了解更多详情



Answer 9:

其基本思路是,网页应该能够访问字体文件。 这就是为什么当两个HTML文件和字体文件是在资产文件夹中的建议原始解决方案的工作原理,以及HTML文件从那里加载。

这不是一个Android的功能,它是CSS,所以应该有任何的Android SDK工作。

加载从文件夹中的字体应该工作为好,如果字体文件是实实在在地存在着,并给它正确的路径在指定样式。 但寿的做法是混乱,需要编写代码复制该文件,然后代码找出文件的位置。

我很高兴只是必须从那里的HTML内容,并在资产的字体文件,和加载。

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


Answer 10:

使用CSS

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


文章来源: How to use custom font with WebView