【问题标题】:Android: add custom fonts to systemAndroid:向系统添加自定义字体
【发布时间】:2021-08-23 18:56:53
【问题描述】:

我知道如何在应用程序中使用自定义字体,但我想做的是在系统范围内添加自定义字体,就像在 Windows 上添加新字体一样。如果没有官方的方法,我应该阅读哪个模块的android源代码?我必须更改 android 源代码并构建它以支持自定义字体。

【问题讨论】:

    标签: android fonts


    【解决方案1】:

    以下是将自定义字体添加到 Android 内置系统的步骤:

    • 将自定义字体 .ttf 复制到 frameworks/base/data/fonts

    • 修改 frameworks/base/data/fonts/Android.mk
      将您的自定义字体添加到“font_src_files”列表中

      font_src_files :=
      Roboto-Regular.ttf
      …… AndroidClock_Solid.ttf
      .ttf \

    • 修改 frameworks/base/data/fonts/fonts.mk
      将您的自定义字体添加到 PRODUCT_PACKAGES 列表中

      PRODUCT_PACKAGES :=
      DroidSansFallback.ttf
      ... AndroidClock_Solid.ttf
      .ttf \

    • 重建
      注意:检查您的自定义字体是否存在于 out/target/product/generic/system/fonts 中。如果是,您的自定义字体已经包含在系统中。如果否,请重新检查您的修改。

    【讨论】:

    • 很好的答案。不要忘记根据需要编辑 xml 文件。
    【解决方案2】:

    我正在开发 Android 5.1.1 Lollipop。

    Nguyen 的回答支持了我,但只是在某种程度上。所以我必须编辑fonts.xml 和fallback_fonts.xml 文件(由Chef Pharaoh 评论)。

    • 首先执行步骤Nguyen explained。
    • 在fonts.xml 中向<familyset> 元素的末尾添加以下行。
    <family>
        <font weight="400" style="normal"><custom_font>.ttf</font>
    </family>
    
    • 在fallback_fonts.xml 中向&lt;familyset&gt; 元素的末尾添加以下行。
    <family>
        <fileset>
            <file><custom_font>.ttf</file>
        </fileset>
    </family>
    

    (将&lt;custom_font&gt;替换为您的自定义字体名称)

    我发现这个link 有点帮助,而且是中文的。

    FYR 下面的注释是关于文件fallback_fonts.xml

    注意:此文件是旧格式,用于与应用程序兼容。新的, 更灵活的格式是 fonts.xml。请保持两者同步,直到遗留 格式可以完全删除。

    【讨论】:

      【解决方案3】:

      下载Helvetica.ttf文件,将此文件复制到assets文件夹并使用此代码。

      Typeface font = Typeface.createFromAsset(getAssets(), "Helvetica.ttf");
      
          your_textview_id.setTypeface(font);
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-05
      • 1970-01-01
      • 2016-02-18
      • 2013-07-14
      • 1970-01-01
      • 1970-01-01
      • 2016-08-11
      • 1970-01-01
      相关资源
      最近更新 更多