【发布时间】:2021-08-23 18:56:53
【问题描述】:
我知道如何在应用程序中使用自定义字体,但我想做的是在系统范围内添加自定义字体,就像在 Windows 上添加新字体一样。如果没有官方的方法,我应该阅读哪个模块的android源代码?我必须更改 android 源代码并构建它以支持自定义字体。
【问题讨论】:
我知道如何在应用程序中使用自定义字体,但我想做的是在系统范围内添加自定义字体,就像在 Windows 上添加新字体一样。如果没有官方的方法,我应该阅读哪个模块的android源代码?我必须更改 android 源代码并构建它以支持自定义字体。
【问题讨论】:
以下是将自定义字体添加到 Android 内置系统的步骤:
将自定义字体 .ttf 复制到 frameworks/base/data/fonts
修改 frameworks/base/data/fonts/Android.mk
将您的自定义字体添加到“font_src_files”列表中
font_src_files :=
Roboto-Regular.ttf
……
AndroidClock_Solid.ttf
修改 frameworks/base/data/fonts/fonts.mk
将您的自定义字体添加到 PRODUCT_PACKAGES 列表中
PRODUCT_PACKAGES :=
DroidSansFallback.ttf
...
AndroidClock_Solid.ttf
重建
注意:检查您的自定义字体是否存在于 out/target/product/generic/system/fonts 中。如果是,您的自定义字体已经包含在系统中。如果否,请重新检查您的修改。
【讨论】:
我正在开发 Android 5.1.1 Lollipop。
Nguyen 的回答支持了我,但只是在某种程度上。所以我必须编辑fonts.xml 和fallback_fonts.xml 文件(由Chef Pharaoh 评论)。
fonts.xml 中向<familyset> 元素的末尾添加以下行。<family>
<font weight="400" style="normal"><custom_font>.ttf</font>
</family>
fallback_fonts.xml 中向<familyset> 元素的末尾添加以下行。<family>
<fileset>
<file><custom_font>.ttf</file>
</fileset>
</family>
(将<custom_font>替换为您的自定义字体名称)
我发现这个link 有点帮助,而且是中文的。
FYR 下面的注释是关于文件fallback_fonts.xml
注意:此文件是旧格式,用于与应用程序兼容。新的, 更灵活的格式是 fonts.xml。请保持两者同步,直到遗留 格式可以完全删除。
【讨论】:
下载Helvetica.ttf文件,将此文件复制到assets文件夹并使用此代码。
Typeface font = Typeface.createFromAsset(getAssets(), "Helvetica.ttf");
your_textview_id.setTypeface(font);
【讨论】: