vivo手机系统默认字体覆盖web字体的问题

发布于 2022-09-05 23:48:59 字数 216 浏览 37 评论 0

项目需要用到一款自定义的特殊字体,在其他手机上都可以正常显示,换到vivo x7,x9上测试时,发现部分字符可以显示,其他的都是错的。我修改了手机的系统自定义字体后,web字体又可以正常显示了,据此认为应该是系统的字体优先级高于web字体,导致了这个问题。

请教各位道友,有没有什么针对webview或者x5的配置,可以覆盖掉系统字体的优先级,或者某些特殊的css或者html属性,能够解决这一问题?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一生独一 2022-09-12 23:48:59

一个CSS足矣,简单粗暴,只是加载时会有延迟:
(dog.tff为你要加载的字体文件)

/* 以下在你的onPageFinished方法中: */
view.loadUrl( "javascript:!function(){" +
          "s=document.createElement('style');s.innerHTML="
          + "\"@font-face{font-family:dog;src:url('**injection**/dog.ttf');}*{font-family:dog !important;}\";"
          + "document.getElementsByTagName('head')[0].appendChild(s);" +
          "document.getElementsByTagName('body')[0].style.fontFamily = \"dog\";}()" );

/* 以下在你的shouldInterceptRequest方法中: */
@Override
public WebResourceResponse shouldInterceptRequest( final WebView view, String url )
{
    if ( url.contains( "**injection**/" ) )
    {
        try {
            return(new WebResourceResponse( "application/x-font-ttf",
                            "UTF8", new FileInputStream( "/sdcard/dog.ttf" ) ) );
        } catch ( FileNotFoundException e ) {
            e.printStackTrace();
        }
    }
    return(super.shouldInterceptRequest( view, url ) ); /* 正常加载 */
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文