मैं IOS13 में इस फ़ॉन्ट से संबंधित coretext चेतावनी के स्रोत को कैसे खोज सकता हूं?


17

अपने ऐप के अपडेट पर काम करते हुए मुझे ध्यान आता है कि IOS13 पर Xcode 11.2 में ऐप को चलाने पर मुझे लॉग में चेतावनी मिलती है।

CoreText नोट: क्लाइंट अनुरोधित नाम ".SFUI-Regular", यह इच्छित फ़ॉन्ट के बजाय TimesNewRomanPSMT प्राप्त करेगा। सभी सिस्टम UI फ़ॉन्ट का उपयोग उचित API जैसे CTFontCreateUIFontForLanguage () या + [UIFont systemFontOfSize:] के माध्यम से होना चाहिए।

मैंने लगभग थोड़ा खोदा और WWDC के इस उद्धरण को पाया:

जैसा कि कई WWDC सत्रों में उल्लेख किया गया है, डॉट-उपसर्ग फ़ॉन्ट नामों का सीधे उपयोग नहीं किया जाना है।

मैं स्वयं लगभग विशेष रूप से IB और nibs का उपयोग करके टेक्स्टफिल्ड्स इत्यादि के लिए फोंट सेट कर रहा हूँ, और मेरे कोड में कहीं भी "SFUI-Regular" का कोई संदर्भ नहीं है, इसलिए मुझे यकीन नहीं है कि इन चेतावनियों का वास्तविक कारण कैसे पता चलेगा (मेरे पास है) लॉग में इनमें से 20-30 पंक्तियों की तरह कुछ)।

क्या किसी के पास कोई सुझाव है कि मैं कैसे पा सकता हूं कि चेतावनी कहां से आती है, और इसे कैसे ठीक किया जाए?

जवाबों:


6

कंसोल में एक और आउटपुट है, आप एक प्रतीकात्मक ब्रेकपॉइंट जोड़ने की कोशिश कर सकते हैं

CoreText नोट: CTFontLogSystemFontNameRequest पर एक विराम बिंदु डीबग करने के लिए सेट करें।


हां, इस प्रतीकात्मक विराम बिंदु को निर्धारित करें। जब यह टूट जाए, तो अपने कॉल स्टैक को देखें। फिर आप देखेंगे कि अपराधी क्या है। मेरे लिए, 3 पार्टी सॉफ्टवेयर।
PDG

@PDG वास्तव में 3rd पार्टी सॉफ्टवेयर क्या कर रहा था?
कांतालिया

5

मैंने Xcode 11 से शुरू होने वाले कंसोल में इस चेतावनी का अनुभव करना शुरू कर दिया, जिसमें MacOS और iOS दोनों लक्ष्य हैं।

आपको “.SFUI-Regular” से प्राप्त होगा UIFont.systemFont(ofSize: X).fontName। चेतावनी तब होती है यदि आप उपयोग करने के लिए तुरंत प्रयास करते हैं UIFont(name: fontName, size: size)

मेरे मामले में मैं उपयोगकर्ता को प्रदर्शन फ़ॉन्ट को अनुकूलित करने दे रहा हूं, लेकिन डिफ़ॉल्ट ".SFUI-नियमित" था, इसलिए मैंने इसे "TimesNewRomanPSMT" में बदल दिया है

let defaultFont = UIFont.systemFont(ofSize: X).fontName

// replace with
let defaultFont = "TimesNewRomanPSMT"

UIFont(name: defaultFont, size: size)

2

एक ही समस्या होने और मेरे कोड में डॉट-उपसर्ग फ़ॉन्ट का कोई संदर्भ नहीं है। एक प्रतीकात्मक विराम बिंदु सेट करें, लेकिन किसी भी उपयोग के कुछ भी नहीं


2
यहाँ एक ही मुद्दा, एक macOS ऐप में। मुझे SDK बग पर संदेह होने लगा है?
जॉर्ज लीएंड्रो पेरेज़

मैं अपने द्वारा उपयोग किए जा रहे फली के पुराने संस्करण का पता लगाता हूं।
टोनी लॉ

6
रिकॉर्ड के लिए, मैंने एक खाली macOS प्रोजेक्ट, कोई बाहरी निर्भरता और कोड की सिर्फ 2 पंक्तियों में इस समस्या को पुन: पेश किया है। टेक सपोर्ट का टिकट, आपको तैनात रखेगा, महिलाओं और सज्जनों
जोर्ज लिएंड्रो पेरेज़

1
@ कैलास देर होने के बारे में माफ़ी! हाँ ... यह मुझे मिला आधिकारिक प्रतिक्रिया है, के माध्यम से टेक समर्थन:
जॉर्ज Leandro पेरेस

1
Regarding the error mesage shown in your video, I view it as a system bug because I don’t see any of your code requesting “.AppleColorEmojiUI” – If your real app indeed does that, you should follow the message to correct it. Other than that, I don’t have anything worth to mentioning. (और उन्होंने आगे कुछ भी नहीं जोड़ा .... "सिस्टम बग")
जॉर्ज लिएंड्रो पेरेज़

0

मेरे लिए, यह पता चला है कि यह एक तीसरे पक्ष का पुस्तकालय था जिसे कुछ समय में अपडेट नहीं किया गया था जो अपराधी था।

मैंने एक ब्रेकपॉइंट लगाया क्योंकि उपयोगकर्ता ने सुझाव दिया था और स्रोत मिला। मेरे मामले में यह TOMSMorphingLabel था ।


0
let fontCT = CTFontCreateUIFontForLanguage(.label, fontSize as CGFloat, nil)
attrStr.addAttribute(.font, value: fontCT as Any, range: NSMakeRange(0, text.count))

ios 13 के लिए uifont समस्या का समाधान

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.