【发布时间】:2013-11-07 01:24:04
【问题描述】:
我正在构建一个基于 Android 的 WebView 类的 webapp。目前,当我将它指向我的页面时,任何日文字符都会使用我想要的 DroidSansFallback 字体呈现。但是,当设备的语言更改为日语时,它会开始以 MTLmr3m.ttf 字体呈现日语字符,这有时会影响正在加载的网页的布局。经过一番研究,我发现这是由于fallback_fonts.xml系统文件中的这段代码的sn-p
<family>
<fileset>
<file lang="ja">MTLmr3m.ttf</file>
</fileset>
</family>
大概我无法更改此系统文件,但有没有办法可以直接引用 DroidSansFallback.ttf 文件并将字体设置为字符串包含日文字符时的字体,以便无论语言如何都可以使用此字体设备设置为?
我尝试使用 WebViewClient 类中的 shouldInterceptRequest() 来捕获 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 中引用我想要的字体。有什么建议吗?
【问题讨论】:
标签: android css web-applications fonts webview