我正在构建一个基于 Android 的 WebView 类的 webapp。目前,当我将它指向我的页面时,任何日文字符都会使用我想要的 DroidSansFallback 字体呈现。但是,当设备的语言更改为日语时,它会开始以 MTLmr3m.ttf 字体呈现日语字符,这有时会影响正在加载的网页的布局。经过一番研究,我发现这是由于 fallback_fonts.xml 系统文件中的这段代码
<family>
<fileset>
<file lang="ja">MTLmr3m.ttf</file>
</fileset>
</family>
大概我无法更改此系统文件,但是有没有办法可以直接引用 DroidSansFallback.ttf 文件并将字体设置为当字符串包含日文字符时,这样无论设备设置的语言如何,都可以使用此字体至?
我尝试使用shouldInterceptRequest()
WebViewClient 类在 css @font-face 声明中捕获一个虚拟协议,如下所示:src: url("font:Droid") format("truetype");
并通过以下代码以这种方式发送字体:
...
if (url.equals("font:Droid")){
File font = new File(Environment.getRootDirectory(),"/fonts/DroidSansFallback.ttf");
InputStream is = new FileInputStream(font);
String encoding="UTF-8";
WebResourceResponse font = new WebResourceResponse("font/ttf",encoding,is);
return font;
}
...
该方法捕获请求,但未按预期返回 WebResourceResponse。
我希望也许有一个解决方案,我可以以某种方式在 CSS 中引用我想要的字体。有什么建议么?