Android系统中通过Typeface.java加载字体:
frameworks/base/graphics/java/android/graphics/Typeface.java
private static void init() {
// Load font config and initialize Minikin state
File systemFontConfigLocation = getSystemFontConfigLocation();
File configFilename = new File(systemFontConfigLocation, FONTS_CONFIG);
...
}
该类初始化时File configFilename = new File(systemFontConfigLocation, FONTS_CONFIG);的FONTS_CONFIG为字体的配置文件:
static Typeface sDefaultTypeface;
...
static final String FONTS_CONFIG = "fonts.xml";
该fonts.xml位于frameworks/base/data/fonts/fonts.xml
....
NotoSansSC-Regular.otf
NotoSansTC-Regular.otf
...
从该xml中发现zh-Hans字段代表中文简体的字体,zh-Hant字段代表中文繁体的字体,目前我们需要将其中的字体NotoSansSC-Regular.otf替换成想要的字体。
实例:将系统默认中文字体修改为宋体常规(simsun.ttc)。
1.把