近日,预制了一套系统字体,本来字体可以在app中单独放置到资源,然后调用,但由于系统中定制的apk有多个需要用该字库,为了节约空间,就把字库文件预制到了系统,一份文件可以供多个apk去使用。
具体改动patch如下:
在external/noto-fonts目录,将字体源文件编译到system.img:
--- a/Android.mk
+++ b/Android.mk
@@ -311,7 +311,8 @@ font_src_files += \
SourceHanSansCN-Light.otf \
SourceHanSansCN-Medium.otf \
SourceHanSansCN-Normal.otf \
- SourceHanSansCN-Regular.otf
+ SourceHanSansCN-Regular.otf \
+ FZKTJW.ttf
endif # !EXCLUDE_SERIF_FONTS && !SMALLER_FONT_FOOTPRINT
$(foreach f, $(font_src_files), $(call build-one-font-module, $(f)))
diff --git a/fonts.mk b/fonts.mk
index 96b8746..baf66ae 100644
--- a/fonts.mk
+++ b/fonts.mk
@@ -54,6 +54,7 @@ PRODUCT_PACKAGES := \
SourceHanSansCN-Medium.otf \
SourceHanSansCN-Normal.otf \
SourceHanSansCN-Regular.otf \
+ FZKTJW.ttf \
NotoSansCoptic-Regular.ttf \
NotoSansCuneiform-Regular.ttf \
NotoSansCypriot-Regular.ttf \
diff --git a/other/FZKTJW.ttf b/other/FZKTJW.ttf
new file mode 100644
index 0000000..7143eff
Binary files /dev/null and b/other/FZKTJW.ttf differ
这一步操作完成,即可增量编译,在out下的system/fonts/目录下会生成新增的字库文件;
单单执行这一步,apk是无法调用到的,还需要执行如下改动:
修改frameworks/base/data/fonts目录内容
diff --git a/data/fonts/fonts.xml b/data/fonts/fonts.xml
index 2a4a7274d87..1ff548ce7eb 100644
--- a/data/fonts/fonts.xml
+++ b/data/fonts/fonts.xml
@@ -59,6 +59,10 @@
<alias name="sans-serif-condensed-light" to="sans-serif-condensed" weight="300" />
<alias name="sans-serif-condensed-medium" to="sans-serif-condensed" weight="500" />
+ <family name="talkt">
+ <font weight="400" style="normal">FZKTJW.ttf</font>
+ </family>
+
<family name="serif">
<font weight="400" style="normal">NotoSerif-Regular.ttf</font>
<font weight="700" style="normal">NotoSerif-Bold.ttf</font>
在fonts.xml添加自己的字库配置,这样就可以保证app通过name去索引到字库并且调用。
APP侧调用实例如下:
diff --git a/src/com/android/settings/MasterClearConfirm.java b/src/com/android/settings/MasterClearConfirm.java
index a92c8f85c7..d1571a864e 100644
--- a/src/com/android/settings/MasterClearConfirm.java
+++ b/src/com/android/settings/MasterClearConfirm.java
@@ -32,6 +32,8 @@ import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
+import android.graphics.Typeface;
+
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.core.InstrumentedFragment;
import com.android.settings.enterprise.ActionDisabledByAdminDialogHelper;
@@ -173,6 +175,8 @@ public class MasterClearConfirm extends InstrumentedFragment {
confirmationMessage.getText()).toString();
getActivity().setTitle(Utils.createAccessibleSequence(currentTitle, accessibleText));
}
+
+ confirmationMessage.setTypeface(Typeface.create("talkt", Typeface.NORMAL));
}
@Override
我这里是改了Settings里边恢复出厂设置的确认界面的字体,修改完成,增量编译,然后刷机验证即可~~~
改动不大,主要是找到要改动的点,网上的方案很多,大部分都是针对低版本,好多文件在高版本没有了,没办法参考,自己搞定了,Mark一下。