如何在 Android Lollipop 下更换字体

如题所述

第1个回答  2016-03-25
前提:Root。

第一步,将准备好的字体文件用 Root Explorer 之类的文件管理器复制到 /system/fonts/ 目录,并设置好相应权限。

第二步就是修改Android 系统的字体配置文件,你可以在 Android 之中修改,鉴于文件行数很多,在电脑上修改好再覆盖源文件也是不错的选择。

以前我们只需要修改一个 fallback_fonts.xml 文件即可,而 Android 5.0 为了更好地 实现多重字重和样式,使用了新的字体配置文件 fonts.xml,两个文件都在 /etc/ 目录下可以找到,我们需要同时修改两个文件。

旧文件:fallback_fonts.xml

找到其中的这一处:
<family>
<fileset>
<file lang="zh-Hans">NotoSansHans-Regular.otf</file>
</fileset>
</family>

这里记录了系统默认的简体中文字体 NotoSans Hans,是否留着它由你决定,你可以用你自己的字体记录将其替换,或者写在它前面。形式是这样的:
<family>
<fileset>
<file>YourFont-Regular.otf</file>
<file>YourFont-Bold.otf</file>
<file>YourFont-Italic.otf</file>
<file>YourFont-ItalicBold.otf</file>
</fileset>
</family>

其中,lang 属性是可选的,字体文件可以使 otf,也可是是 ttf。一个 family 下最多可以对应四个字体,分别是常规、粗体、斜体、粗斜体。对于中文字体,一般只有常规和粗体两个单独的字体文件,所以一般不需要写后两行。

新文件:fonts.xml

这是 Android 5.0 新引入的配置文件,跟老的文件相比,这个配置文件

这一次,系统首选字体(也就是 Roboto )和各个语言的 fallback 字体都记录在了同一个文件中(之前分了两个文件),而且使用了相似的记录格式,因此,fallback 字体也可以实现多重字重和样式,而不是之前只有常规、粗、斜、粗斜四种。

首先看到其中 Roboto 部分:
<family name="sans-serif">
<font weight="100" style="normal">Roboto-Thin.ttf</font>
<font weight="100" style="italic">Roboto-ThinItalic.ttf</font>
<font weight="300" style="normal">Roboto-Light.ttf</font>
<font weight="300" style="italic">Roboto-LightItalic.ttf</font>
<font weight="400" style="normal">Roboto-Regular.ttf</font>
<font weight="400" style="italic">Roboto-Italic.ttf</font>
<font weight="500" style="normal">Roboto-Medium.ttf</font>
<font weight="500" style="italic">Roboto-MediumItalic.ttf</font>
<font weight="900" style="normal">Roboto-Black.ttf</font>
<font weight="900" style="italic">Roboto-BlackItalic.ttf</font>
<font weight="700" style="normal">Roboto-Bold.ttf</font>
<font weight="700" style="italic">Roboto-BoldItalic.ttf</font>
</family>

可以看到, 只要我们愿意,可以以很细的间隔为每个字重,每个样式对应相应的字体文件。这一段代码是我们模仿的对象。

然后同样找到后面控制简体中文的部分:
<family lang="zh-Hans">
<font weight="400" style="normal">NotoSansHans-Regular.otf</font>
</family>

Google 虽然很懒地只写了一行,但是我们完全仿照前面的代码任意增加字重——只要你有相应地字体文件,这里就不啰嗦了。

全部修改完成之后(软)重启手机即可。
第2个回答  2016-03-25
前提:Root。

第一步,将准备好的字体文件用 Root Explorer 之类的文件管理器复制到 /system/fonts/ 目录,并设置好相应权限。

第二步就是修改Android 系统的字体配置文件,你可以在 Android 之中修改,鉴于文件行数很多,在电脑上修改好再覆盖源文件也是不错的选择。

以前我们只需要修改一个 fallback_fonts.xml 文件即可,而 Android 5.0 为了更好地 实现多重字重和样式,使用了新的字体配置文件 fonts.xml,两个文件都在 /etc/ 目录下可以找到,我们需要同时修改两个文件。

旧文件:fallback_fonts.xml

找到其中的这一处:
<family>
<fileset>
<file lang="zh-Hans">NotoSansHans-Regular.otf</file>
</fileset>
</family>

这里记录了系统默认的简体中文字体 NotoSans Hans,是否留着它由你决定,你可以用你自己的字体记录将其替换,或者写在它前面。形式是这样的:
<family>
<fileset>
<file>YourFont-Regular.otf</file>
<file>YourFont-Bold.otf</file>
<file>YourFont-Italic.otf</file>
<file>YourFont-ItalicBold.otf</file>
</fileset>
</family>

其中,lang 属性是可选的,字体文件可以使 otf,也可是是 ttf。一个 family 下最多可以对应四个字体,分别是常规、粗体、斜体、粗斜体。对于中文字体,一般只有常规和粗体两个单独的字体文件,所以一般不需要写后两行。

新文件:fonts.xml

这是 Android 5.0 新引入的配置文件,跟老的文件相比,这个配置文件

这一次,系统首选字体(也就是 Roboto )和各个语言的 fallback 字体都记录在了同一个文件中(之前分了两个文件),而且使用了相似的记录格式,因此,fallback 字体也可以实现多重字重和样式,而不是之前只有常规、粗、斜、粗斜四种。

首先看到其中 Roboto 部分:
<family name="sans-serif">
<font weight="100" style="normal">Roboto-Thin.ttf</font>
<font weight="100" style="italic">Roboto-ThinItalic.ttf</font>
<font weight="300" style="normal">Roboto-Light.ttf</font>
<font weight="300" style="italic">Roboto-LightItalic.ttf</font>
<font weight="400" style="normal">Roboto-Regular.ttf</font>
<font weight="400" style="italic">Roboto-Italic.ttf</font>
<font weight="500" style="normal">Roboto-Medium.ttf</font>
<font weight="500" style="italic">Roboto-MediumItalic.ttf</font>
<font weight="900" style="normal">Roboto-Black.ttf</font>
<font weight="900" style="italic">Roboto-BlackItalic.ttf</font>
<font weight="700" style="normal">Roboto-Bold.ttf</font>
<font weight="700" style="italic">Roboto-BoldItalic.ttf</font>
</family>

可以看到, 只要我们愿意,可以以很细的间隔为每个字重,每个样式对应相应的字体文件。这一段代码是我们模仿的对象。

然后同样找到后面控制简体中文的部分:
<family lang="zh-Hans">
<font weight="400" style="normal">NotoSansHans-Regular.otf</font>
</family>

Google 虽然很懒地只写了一行,但是我们完全仿照前面的代码任意增加字重——只要你有相应地字体文件,这里就不啰嗦了。

全部修改完成之后(软)重启手机即可。
相似回答