Android の WebView クラスから Web アプリケーションを作成しています。現在、自分のページにポイントすると、日本語の文字はすべて、必要な DroidSansFallback フォントでレンダリングされます。ただし、デバイスの言語が日本語に変更されると、MTLmr3m.ttf フォントで日本語の文字のレンダリングが開始され、読み込まれる Web ページのレイアウトに影響することがあります。いくつかの調査を行った後、これは 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で必要なフォントを何らかの形で参照できる解決策があるかもしれないと思っていました。助言がありますか?