Android 7+ 添加全字重 Noto Sans CJK

Android 7+ 添加全字重 Noto Sans CJK

内容更新说明:本篇文章落稿于2017年初,即使核心思想万变不离其宗,但Android也加入了不少新功能。如果你只想得到效果,可以使用下文的Magisk模块。如果你有兴趣深入了解,将本篇和Android P Preview 1 中的字體變化结合阅读即可。


默认情况下,Android 的中日韩字体(Noto Sans CJK)只包含了一个 regular 字重

用 Android 6.0 时代的方法添加固然可行,但自从 Android 7(Nougat) 支持 TTC 格式的字体后,新的方法显得更好:


警告:本文假设你已了解修改系统的风险,并知道如何备份及救砖。


由知友提供的方法:

  • 曾位于Magisk官方仓库中的NotoCJK模块
  • 位于评论区的卡刷包


手动操作(已过时):

添加字体:

将下载并解压好的 NotoSansCJK.ttc 复制到 /system/fonts/ 下,然后修改权限为 644(rw-r--r--),所有者为 0(root)

修改 fonts.xml:

然后修改 /system/etc/fonts.xml,寻找关键词 “zh-Hans” (大约在 340 行处):

    <family lang="zh-Hans">
        <font weight="400" style="normal" index="2">NotoSansCJK-Regular.ttc</font>
    </family>
    <!-- TODO: Add Bopo -->
    <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>

将它注释掉,并加入新的内容:

    <!--
    <family lang="zh-Hans">
        <font weight="400" style="normal" index="2">NotoSansCJK-Regular.ttc</font>
    </family>
    -->
    <!-- TODO: Add Bopo -->
    <!--
    <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>
    -->

    <family lang="zh-Hans">
        <font weight="100" style="normal" index="2">NotoSansCJK.ttc</font>
        <font weight="300" style="normal" index="6">NotoSansCJK.ttc</font>
        <font weight="350" style="normal" index="10">NotoSansCJK.ttc</font>
	<font weight="400" style="normal" index="14">NotoSansCJK.ttc</font>
	<font weight="500" style="normal" index="22">NotoSansCJK.ttc</font>
	<font weight="700" style="normal" index="26">NotoSansCJK.ttc</font>
	<font weight="900" style="normal" index="34">NotoSansCJK.ttc</font>
    </family>
	<family lang="zh-Hant">
        <font weight="100" style="normal" index="3">NotoSansCJK.ttc</font>
        <font weight="300" style="normal" index="7">NotoSansCJK.ttc</font>
	<font weight="350" style="normal" index="11">NotoSansCJK.ttc</font>
	<font weight="400" style="normal" index="15">NotoSansCJK.ttc</font>
	<font weight="500" style="normal" index="23">NotoSansCJK.ttc</font>
	<font weight="700" style="normal" index="27">NotoSansCJK.ttc</font>
	<font weight="900" style="normal" index="35">NotoSansCJK.ttc</font>
    </family>
    <family lang="ja">
        <font weight="100" style="normal" index="0">NotoSansCJK.ttc</font>
        <font weight="300" style="normal" index="4">NotoSansCJK.ttc</font>
        <font weight="350" style="normal" index="8">NotoSansCJK.ttc</font>
	<font weight="400" style="normal" index="12">NotoSansCJK.ttc</font>
	<font weight="500" style="normal" index="20">NotoSansCJK.ttc</font>
	<font weight="700" style="normal" index="24">NotoSansCJK.ttc</font>
	<font weight="900" style="normal" index="32">NotoSansCJK.ttc</font>
    </family>
    <family lang="ko">
        <font weight="100" style="normal" index="1">NotoSansCJK.ttc</font>
        <font weight="300" style="normal" index="5">NotoSansCJK.ttc</font>
        <font weight="350" style="normal" index="9">NotoSansCJK.ttc</font>
	<font weight="400" style="normal" index="13">NotoSansCJK.ttc</font>
	<font weight="500" style="normal" index="21">NotoSansCJK.ttc</font>
	<font weight="700" style="normal" index="25">NotoSansCJK.ttc</font>
	<font weight="900" style="normal" index="33">NotoSansCJK.ttc</font>
    </family>

然后同样检查一遍权限,应该为 644(rw-r--r--),所有者应该为 0(root)。

最后:

重启设备,新加上的字重就会生效,在 Play 商店的详情页和应用抽屉(drawer)等地方中都能看见明显的变化。

致谢及工具

Android meets TTC! - 汚音屋 × UJAM

Source Han Sans 與 Noto Sans CJK 之字重對應 - 汚音屋 × UJAM

otc2otf.py

Noto Sans CJK如何在 Android 上使用思源黑体作为系统字体? - 豆腐君

编辑于 05-30

文章被以下专栏收录