我们如何从可下载的字体创建字体?

问题描述 投票:1回答:1

我有一个帮助方法,执行以下操作:

public CustomTypefaceSpan(Context context, String typefaceName) {
    mTypeface = sTypefaceCache.get(typefaceName);

    if (mTypeface == null) {
        mTypeface = Typeface.createFromAsset(context.getApplicationContext().getAssets(),
                String.format("fonts/%s", typefaceName));

        // Cache the loaded Typeface
        sTypefaceCache.put(typefaceName, mTypeface);
    }
}

切换到可下载字体后,我们得到以下异常,因为assets文件夹中没有可用的字体。我们怎样才能用可下载的字体执行此操作?谢谢!

引起:java.lang.RuntimeException:字体资产未找到字体/ OpenSans-Regular.ttf,位于com.woot.util.ui.CustomTypefaceSpan的android.graphics.Typeface.createFromAsset(Typeface.java:206)。(CustomTypefaceSpan.java :19)at com.woot.util.ui.ActivityUtil.setTitleCustomFont(ActivityUtil.java:20)at com.woot.storelocator.selectstorelanding.SelectStoreActivity.onCreate(SelectStoreActivity.java:40)at android.app.Activity.performCreate( Activity.java:6664)在android.app.AnstrumentationCallActivityCaate.AleCreate(Instrumentation.java:1118)android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2599)android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707) )在Android.A.运行时android.app.Handler.dispatchMessage(Handler.java:102)的android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1460)上的android.app.ActivityThread.-wrap12(ActivityThread.java)。 os.Looper.loop(Looper.java:154)在java.la的android.app.ActivityThread.main(ActivityThread.java:6077) com.android.internal.os.ZygoteInit $中的com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:865)中的ng.reflect.Method.invoke(Native Method)(ZygoteInit.java:755) )

android android-fonts
1个回答
1
投票

以下示例代码说明了整个可下载字体过程:

 FontRequest request = new FontRequest("com.example.fontprovider.authority",
            "com.example.fontprovider", "my font", certs); 
    FontsContract.FontRequestCallback callback =
        new FontsContract.FontRequestCallback() { 
            @Override 
            public void onTypefaceRetrieved(Typeface typeface) {
                // Your code to use the font goes here 
                ... 
            } 

            @Override 
            public void onTypefaceRequestFailed(int reason) {
                // Your code to deal with the failure goes here 
                ... 
            } 
    }; 
FontsContract.requestFonts(context, request, callback , handler);
© www.soinside.com 2019 - 2024. All rights reserved.