使用web view 加载一个html页面, html页面的源码片段:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="ja" lang="ja">
<head>
<link rel="stylesheet" type="text/css" href="../css/vertical_text.css"/>
<link rel="stylesheet" type="text/css" href="../css/vertical_font.css"/>
<link rel="stylesheet" type="text/css" href="../css/vertical.css"/>
<title>こころ</title>
</head>
我在web view的settings中设置显示的字体
settings.setStandardFontFamily("NotoSerifCJKjp-Regular"); 结果这个设置无效.
后来分析平台代码发现了问题:frameworks\base\data\fonts\ fonts.xml
<family lang="zh-Hant">
<font weight="400" style="normal" index="3">NotoSansCJK-Regular.ttc</font>
</family>
<family lang="ja">
<font weight="400" style="normal" index="0">NotoSansCJK-Regular.ttc</font>
</family>
<family lang="ko">
<font weight="400" style="normal" index="1">NotoSansCJK-Regular.ttc</font>
</family>
请注意HTML源码中的xml:lang="ja" lang="ja" 和系统配置中的 <family lang="ja">, 这样的话, 无论你web view中如何配置字体,
都会使用系统配置的NotoSansCJK-Regular.ttc字体
我的修改方法: frameworks\base\data\fonts\ fonts.xml中去掉这一行的配置,
然后在web view 的app中动态运行
settings.setStandardFontFamily("NotoSansCJKjp-Regular");
字体也就动态改变.