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

<?xml version="1.0" encoding="utf-8"?>....                NotoSansSC-Regular.otf                NotoSansTC-Regular.otf    ...

从该xml中发现zh-Hans字段代表中文简体的字体,zh-Hant字段代表中文繁体的字体,目前我们需要将其中的字体NotoSansSC-Regular.otf替换成想要的字体。

实例:将系统默认中文字体修改为宋体常规(simsun.ttc)。

1.把字体simsun.ttc文件copy到frameworks\base\data\fonts目录

2.修改frameworks/base/data/fonts/fonts.xml

            simsun.ttc    

2.修改frameworks\base\data\fonts\Android.mk

################################# Build the rest of font files as prebuilt.# $(1): The source file name in LOCAL_PATH.#       It also serves as the module name and the dest file name.define build-one-font-module$(eval include $(CLEAR_VARS))\$(eval LOCAL_MODULE := $(1))\$(eval LOCAL_SRC_FILES := $(1))\$(eval LOCAL_MODULE_CLASS := ETC)\$(eval LOCAL_MODULE_TAGS := optional)\$(eval LOCAL_MODULE_PATH := $(TARGET_OUT)/fonts)\$(eval include $(BUILD_PREBUILT))endeffont_src_files := \    Clockopia.ttf \    AndroidClock.ttf \    AndroidClock_Highlight.ttf \    AndroidClock_Solid.ttf \    simsun.ttc

3.修改frameworks\base\data\fonts\fonts.mk文件

... ...PRODUCT_PACKAGES := \    DroidSansFallback.ttf \    DroidSansMono.ttf \    Clockopia.ttf \    AndroidClock.ttf \    AndroidClock_Highlight.ttf \    AndroidClock_Solid.ttf \    simsun.ttc \

4..在frameworks/base/data/fonts目录下单编,执行mm,将生成到对应项目的simsun.ttc文件push到system/fonts下。

5.将修改后的frameworks/base/data/fonts/fonts.xml push 到system/etc目录下,重启设备,系统默认字体就被替换为宋体常规(simsun.ttc)了。

更多相关文章

  1. Android文件图片上传的详细讲解(三)---模式回调类
  2. Android(安卓)Bluetooth 文件接收路径修改方法
  3. Android(安卓)Studio导入Android平台源码
  4. 看Android(安卓)短信的一些关键字
  5. Android(安卓)编译之android.mk
  6. Android(安卓)VideoView简单播放视频
  7. Android开发高级进阶02
  8. 用Android(安卓)NDK编译FFmpeg
  9. NPM 和webpack 的基础使用

随机推荐

  1. android 开机动画(boot animation)的制作
  2. Android基础入门教程——7.1.3 Android(
  3. Android NDK之二:创建NativeActivity
  4. Android指纹解锁边界性问题
  5. android TextView和EditText中显示图片
  6. android之app widget(三)
  7. Android中的通知—Notification .
  8. Android 中 Handler 引起的内存泄露
  9. Android NDK-r4 sample--准备(一)
  10. Android使用Checkbox实现单选 ( 简单使用