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 Bluetooth 文件接收路径修改方法
  2. Android文件图片上传的详细讲解(三)---模式回调类
  3. android XML文件序列化
  4. Android Studio(十二):打包多个发布渠道的apk文件
  5. [置顶] Android——4.2.2 文件系统目录分析
  6. Linux下 解包/打包 Android 映像文件 system.img, boot.img, ram
  7. AndroidManifest.xml 配置文件
  8. Android 部分内容设置颜色、字体、超链接、图片

随机推荐

  1. 在Wordpress中包含一个github jquery插件
  2. Jquery Validate 正则表达式实用验证代码
  3. 如何检索类以隐藏按钮?
  4. [置顶] JavaWeb JQuery实现记住我
  5. jQuery循环没有每个和回调函数
  6. jquery编写web页面头部分类的选中事件$.c
  7. 通过ajax POST提交nicEdit文本编辑器的值
  8. Google地图信息窗口左箭头,右箭头传递Type
  9. 如何使用jQuery的叠加对话框作为反馈表单
  10. 带有括号的某些字符串导致Ajax POST操作