怎样科学地给 Android(4.x)换字体

王成王成
看到了这个问题,感觉字体的效果很差,应该是换字体的方式太不科学了。很多软件换字体都是直接替换 Roboto 的,这样破坏了系统的字体回退机制,直接使用了中文字体的西文部分(通常品质不高),我认为更科学干净和安全的更换字体的方法是这样的:不要替换原有的字体文件,而是修改系统的配置文件,添加新的字体。

当然这一切的前提是你有 root 权限。

把要更换的字体文件(ttf 或者 otf)复制到 /system/fonts/,并且把权限设置成 -rw-r--r--;如果你要修改中文字体,打开 /system/etc/fallback_fonts.xml,仿照已经有的配置,在DroidSansFallback 之前添加一个<family> 里面的是你要修改的字体的文件名:

<!-- 以上省略 xx 字 -->

    <family>
        <fileset>
            <file>NanumGothic.ttf</file>
        </fileset>
    </family>
    <family>
        <fileset>
            <file>AndroidEmoji.ttf</file>
        </fileset>
    </family>

<!-- 在这里加上你的字体 -->

    <family>
        <fileset>
            <file>MyFont-Regular.ttf</file>
            <file>MyFont-Bold.ttf</file>
            <file>MyFont-Italic.ttf</file>
            <file>MyFont-Bolditalic.ttf</file>
        </fileset>
    </family>

    <family>
        <fileset>
            <file>DroidSansFallback.ttf</file>
        </fileset>
    </family>

<!-- 以下省略 yy 字 -->

值得注意的是,一个 <fileset> 下面可以又多个 <file>,分别对应常规体、粗体、斜体、粗斜体。 当然,一般的中文字体没有后两种风格。

为什么不建议替换掉 DroidSansFallback.ttf 呢,因为这个字体的字数很多,可以显示很多生僻字和特殊符号(比如国际音标);而一般你能获得的中文字体都没有这么全,所以如果替换掉它,很多生僻字和符号就可能显示不出来了。将它留在配置文件里的话,当遇到你的自定义字体中没有的字符时,就会 fallback 到 DroidSansFallback.ttf 来显示了。

如果要修改西文字体,复制西文字体文件(比如 Helvetica)到 /system/fonts/,并且把权限设置成 -rw-r--r--,请去修改 /etc/system_fonts.xml,把里面的 Roboto.ttf 等字体修改成你的字体。这个配置文件里面字体的风格很多,有 regular、bold、light、thin、italic、light italic、bold italic、condensed 等等,注意你复制过来的字体最好也包含有这些风格。

文章被以下专栏收录
17 条评论
推荐阅读