java "रनटाइम अपवाद: फ़ॉन्ट लोड करते समय देशी टाइपफ़ेस नहीं बनाया जा सकता"




android runtimeexception (8)

मैं एंड्रॉइड पर टेक्स्टव्यू के लिए एक कस्टम फ़ॉन्ट का उपयोग करने का प्रयास कर रहा हूं, here और here मार्गदर्शिका here पालन here । एक ही फ़ॉन्ट का उपयोग, एक ही कोड, वही सबकुछ, मुझे यह एडीबी लॉगकैट में मिलता है:

W/dalvikvm(  317): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
E/AndroidRuntime(  317): FATAL EXCEPTION: main
E/AndroidRuntime(  317): java.lang.RuntimeException: Unable to start activity  ComponentInfo{org.evilx.quacklock/org.evilx.quacklock.MainActivity}:             java.lang.RuntimeException: native typeface cannot be made
E/AndroidRuntime(  317):        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
E/AndroidRuntime(  317):        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
E/AndroidRuntime(  317):        at android.app.ActivityThread.access$2300(ActivityThread.java:125)
E/AndroidRuntime(  317):        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
E/AndroidRuntime(  317):        at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(  317):        at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime(  317):        at android.app.ActivityThread.main(ActivityThread.java:4627)
E/AndroidRuntime(  317):        at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(  317):        at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime(  317):        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
E/AndroidRuntime(  317):        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
E/AndroidRuntime(  317):        at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(  317): Caused by: java.lang.RuntimeException: native typeface cannot be made
E/AndroidRuntime(  317):        at android.graphics.Typeface.<init>(Typeface.java:147)
E/AndroidRuntime(  317):        at android.graphics.Typeface.createFromAsset(Typeface.java:121)
E/AndroidRuntime(  317):        at org.evilx.quacklock.MainActivity.onCreate(MainActivity.java:24)
E/AndroidRuntime(  317):        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
E/AndroidRuntime(  317):        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
E/AndroidRuntime(  317):        ... 11 more
W/ActivityManager(   59):   Force finishing activity org.evilx.quacklock/.MainActivity
W/ActivityManager(   59): Activity pause timeout for HistoryRecord{43e80368 org.evilx.quacklock/.MainActivity}
D/dalvikvm(  247): GC_EXPLICIT freed 711 objects / 53160 bytes in 20922ms

अच्छा ठीक है। मैं फ़ॉन्ट Molot.otf का उपयोग कर रहा हूं, जिसे सफलतापूर्वक ब्लॉग में से एक में उपयोग किया गया था। मैं predator.ttf का उपयोग कर रहा हूं, एक और कस्टम फ़ॉन्ट लेकिन ट्रू टाइप प्रारूप में

प्रासंगिक कोड:

public class MainActivity extends Activity {
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle icicle) {
            super.onCreate(icicle);
            Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/Molot.otf");
            TextView tv = (TextView) findViewById(R.id.CustomFontText);
            tv.setTypeface(tf);
        }
    }

तथा

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TextView
        android:id="@+id/CustomFontText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="30sp"
        android:text="Here is some text.">
        </TextView>
</LinearLayout>

इसका क्या कारण होगा? यह ब्लॉग में लोगों के लिए काम किया, तो मुझे क्यों नहीं? एपीआई में कुछ महत्वपूर्ण बदलाव आया जो मुझे ऐसा करने से रोक रहा है?


एंड्रॉइड ओपनटाइप (ओटीएफ) का समर्थन नहीं करता है, केवल ट्रू टाइप (टीटीएफ), इसलिए आपका Molot.otf फ़ॉन्ट शायद काम नहीं करेगा। मैंने उन दोनों ब्लॉग पोस्टों को लिखा जो आप अपनी शुरुआती वाक्य में लिंक करते हैं (एक दूसरे की एक पायरेटेड प्रति है), और वे Molot.otf उपयोग नहीं करते हैं।

(बीटीडब्लू, मैंने कुछ हद तक उस पोस्ट के स्वरूपण की मरम्मत की - एंड्रॉइडजीई वर्डप्रेस होस्ट बदलती रहती है, और इसलिए मेरी पुरानी पोस्ट फॉर्मेटिंग के मामले में बहुत टूटी हुई हैं)।

संपादित करें : टिप्पणियों में बताया गया है, एंड्रॉइड अब ओटीएफ का समर्थन करता है


मुझे भी वही त्रुटि मिलती है और मेरे पास समाधान का पालन होता है।

Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/Molot.otf")

आपको अपने ग्रहण में assets/fonts फ़ोल्डर में fonts/Molot.otf डालना होगा।

इसे चलाने के बाद।

यदि आप इसे सफल नहीं चला सकते हैं तो आप प्रॉपलम भेज सकते हैं


यदि आप इस समस्या का सामना कर रहे हैं, तो एंड्रॉइड टाइपफ़ेस के लिए ओटीएफ फाइलों का समर्थन करता है, सुनिश्चित करें कि आप फ़ॉन्ट फ़ोल्डर के लिए फ़ॉन्ट पथ में फ़ोल्डर फ़ोल्डर में सही फ़ोल्डर सेट कर रहे हैं और टाइपफ़ेस को नीचे के रूप में बनाएं:

Typeface typeface = Typeface.createFromAsset(getAssets(), "font/StencilStd.otf");
TextView text = (TextView) findViewById(R.id.textView);
text.setTypeface(typeface);

आपको बाइनरी मोड में 'फ़ॉन्टलैब' सॉफ़्टवेयर के साथ अपना फ़ॉन्ट संपादित करना चाहिए।


यदि आप इस समस्या का सामना कर रहे हैं, तो एंड्रॉइड टाइपफ़ेस के लिए ओटीएफ फाइलों का समर्थन करता है, सुनिश्चित करें कि आप फ़ॉन्ट के लिए सही पथ सेट कर रहे हैं, उदाहरण के लिए, यदि आपके पास फ़ाइल fontname.otf है, तो इसे संपत्ति के अंदर फ़ोल्डर फोंट में रखें फ़ोल्डर और टाइपफेस निम्नानुसार बनाएं:

Typeface typeface = Typeface.createFromAsset(getAssets(), "fonts/fontname.otf");

(पथ तर्क "/" से शुरू नहीं होना चाहिए) और फ़ाइल नाम में विशेष वर्ण या "-" शामिल नहीं होना चाहिए और लोअरकेस में होना चाहिए


@deng उसका जवाब मेरे लिए काम किया ":

फ़ॉन्ट का नाम और एक्सटेंशन जांचें। यह मामला संवेदनशील और शायद सभी कैप्स है। जैसे।

Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/MOLOT.OTF")

FYI करें। दुर्घटना के लिए मेरा कारण ग्रहण के कारण कुछ कारण है। मैंने जो कुछ किया वह सिर्फ परियोजना की सफाई कर रहा है और फिर से भाग गया है, फिर यह काम करता है।

सबसे पहले, मैंने अपने परीक्षण प्रोजेक्ट में कस्टम फ़ॉन्ट की कोशिश की जिसे मैं कुछ नए कार्यों को आजमाने के लिए उपयोग करता हूं। यह पहली बार काम करता था। लेकिन यह उस परियोजना पर काम नहीं करता है जब तक मैं ऊपर तक नहीं करता तब तक काम कर रहा हूं।

तो आप जितनी विधियों के रूप में कर सकते हैं कोशिश करें।


फ़ॉन्ट का नाम और एक्सटेंशन जांचें। यह मामला संवेदनशील और शायद सभी कैप्स है। जैसे।

Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/MOLOT.OTF")