android从ttc字体设置默认字体和字体系列

时间:2019-07-11 12:19:44

标签: android fonts font-family

我有一个ttc font系列文件(在Mac上打开时可以看到),我想将其中一种样式设置为默认font并进行一些更改textView中的字体与该字体家族的另一种样式。

在此post和此post中,我用这些答案尝试了很多事情。
我也已经读过这个documentation。但这对我没有帮助。
在尝试的每个答案上,我都会遇到不同的错误,例如找不到font文件,无法为TextView充气(当我启动应用程序时,由于存在font文件我猜)。

我目前的情况是:
我的avenir.ttc文件位于font文件夹下的res文件夹下。
我已将这一行放在我的styles.xml中:

<item name="android:typeface">@font/avenir</item>  

当我在override文件中Application时,

TypeFaceUtil.overrideFont(applicationContext, "font/avenir.ttc")  

方法:

fun overrideFont(context: Context, customFontFileNameInAssets: String) {

    val customFontTypeface = Typeface.createFromAsset(context.assets, customFontFileNameInAssets)

    val newMap = HashMap<String, Typeface>()
    newMap["avenir"] = customFontTypeface
    try {
        val staticField = Typeface::class.java
            .getDeclaredField("sSystemFontMap")
        staticField.isAccessible = true
        staticField.set(null, newMap)
    } catch (e: NoSuchFieldException) {
        e.printStackTrace()
    } catch (e: IllegalAccessException) {
        e.printStackTrace()
    }

}

,我收到以下错误:

  

找不到字体资产font / avenir.ttc

0 个答案:

没有答案