IOS 7.0.3 पर "HelveticaNeue-Italic" का क्या हुआ


100

बस मेरे आइपॉड टच को iOS 7.0.3 में अपग्रेड किया गया और "हेल्वेटिकाएयू-इटैलिक" गायब हो गया। जब मैं फोन पर क्वेरी करता हूं:

[UIFont fontNamesForFamilyName:@"Helvetica Neue"]

मुझे निम्नलिखित फ़ॉन्ट मिलते हैं (13):

HelveticaNeue-BoldItalic,
HelveticaNeue-Light,
HelveticaNeue-UltraLightItalic,
HelveticaNeue-CondensedBold,
HelveticaNeue-MediumItalic,
HelveticaNeue-Thin,
HelveticaNeue-Medium,
HelveticaNeue-ThinItalic,
HelveticaNeue-LightItalic,
HelveticaNeue-UltraLight,
HelveticaNeue-Bold,
HelveticaNeue,
HelveticaNeue-CondensedBlack

जब मैं सिम्युलेटर में चल रही समान क्वेरी (14) प्राप्त करता हूं:

HelveticaNeue-BoldItalic,
HelveticaNeue-Light,
**HelveticaNeue-Italic,**
HelveticaNeue-UltraLightItalic,
HelveticaNeue-CondensedBold,
HelveticaNeue-MediumItalic,
HelveticaNeue-Thin,
HelveticaNeue-Medium,
HelveticaNeue-Thin_Italic,
HelveticaNeue-LightItalic,
HelveticaNeue-UltraLight,
HelveticaNeue-Bold,
HelveticaNeue,
HelveticaNeue-CondensedBlack

इसे कोई और देखे?

---- नई जानकारी ----

मैं WWDC 2013 के वीडियो "टेक्स्ट किट के साथ फॉन्ट का उपयोग करना" पर वापस चला गया और दिलचस्प भाग 12:22 से शुरू होता है। प्रस्तुतकर्ता एक उदाहरण के रूप में ओएस एक्स में "मेटाफोन्स" के बारे में बात करता है। वह क्या कहता है कि जैसे कॉल के तहत फ़ॉन्ट:

+ (NSFont *)messageFontOfSize:(CGFloat)fontSize

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

इसलिए मैंने iOS 7 में एक प्रयोग किया। मैंने निम्न कोड के साथ अपना फ़ॉन्ट बनाया:

UIFontDescriptor *fontDescriptor = [UIFontDescriptor fontDescriptorWithName:@"Helvetica Neue" size:16.0];
UIFontDescriptor *symbolicFontDescriptor = [fontDescriptor fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitItalic];

UIFont *fontWithDescriptor = [UIFont fontWithDescriptor:symbolicFontDescriptor size:16.0];

मुझे FontWithDescriptor के लिए एक वैध UIFont वापस मिल गया और जब मैंने फ़ॉन्ट के लिए फ़ॉन्ट को छोड़ दिया:

[fontWithDescriptor fontName]

मुझे वापिस मिला...

HelveticaNeue-Italic

जाओ पता लगाओ???

तो 7.0.3 का संभावित उत्तर उपरोक्त कोड प्रतीत होता है।

---- आगे टीक ----

हालांकि समाधान ऊपर काम किया है, मुझे नहीं लगता कि यह औपचारिक रूप से सही है। मैंने निम्नलिखित समाधान पर स्विच किया है

    UIFontDescriptor *fontDescriptor = [[UIFontDescriptor alloc] init];

    UIFontDescriptor *fontDescriptorForHelveticaNeue = [fontDescriptor fontDescriptorWithFamily:@"Helvetica Neue"];
    UIFontDescriptor *symbolicFontDescriptor = [fontDescriptorForHelveticaNeue fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitItalic];

    textFont = [UIFont fontWithDescriptor:symbolicFontDescriptor size:textFontPointSize];

यह सभी सही काम करता प्रतीत होता है। मैंने एक और फ़ॉन्ट परिवार के साथ पिछले दृष्टिकोण की कोशिश की और यह फ़ॉन्टनेम और फ़ॉन्टफैमिली के साथ भ्रमित हो गया। उम्मीद है की यह मदद करेगा!


मैंने यह भी देखा है। पता नहीं क्या हुआ, लेकिन यह काफी प्रतिगमन है।
ipodishima

दिलचस्प बात यह है कि iOS 7.0.3 पर पेज हेल्वेटिका नीयू इटैलिक दिखाता है: i.stack.imgur.com/xpJKl.png
लियो

तो ऐसा लगता है कि आपने अपने प्रश्न और अनुसंधान के साथ मेरे प्रश्न का उत्तर दिया, फ़ॉन्ट विवरणक का उपयोग करना वास्तव में मेरे 7.0.3 iPhone पर इटैलिक फ़ॉन्ट दिखा रहा है।
रिक वैन डेर लिंडे

यह iOS 7.0.4
s.ka

जवाबों:


31

यह एक Apple बग है। इसे iOS 7.0.3 में पेश किया गया था और अभी तक इसे iOS 7.0.4 के रूप में तय नहीं किया गया है। यह iOS 7.1 के डेवलपर पूर्वावलोकन में तय किया गया प्रतीत होता है। इस समस्या को हल करने के लिए कोड (देव मंचों में Apple द्वारा प्रदान किया गया) है:

#import <CoreText/CoreText.h>

CGFloat size = 14;
UIFont *font = [UIFont fontWithName:@"HelveticaNeue-Italic" size:size];
if (font == nil && ([UIFontDescriptor class] != nil)) {
    font = (__bridge_transfer UIFont*)CTFontCreateWithName(CFSTR("HelveticaNeue-Italic"), size, NULL);
}

यह भी ध्यान देने योग्य है कि Xcode (5.0.1 (5A2053)) के वर्तमान संस्करण में यह फ़ॉन्ट इंटरफ़ेस बिल्डर में फ़ॉन्ट ड्रॉप डाउन सूची में एक विकल्प के रूप में सूचीबद्ध नहीं है। इसलिए यदि आप पहले इस फ़ॉन्ट के साथ एक लेबल कॉन्फ़िगर करते हैं, तो आप देखेंगे कि यूआई उलझन में है और लेबल रनटाइम पर कुछ अन्य फ़ॉन्ट और आकार को सौंपा जा रहा है (नीचे ui पेंचकैप देखें)। स्टोरीबोर्ड / xibs में कॉन्फ़िगर किए गए लेबल के लिए आपको कोड में फ़ॉन्ट रीसेट करना होगा।

संदर्भ के लिए यहाँ देव मंचों में जारी किए जाने की चर्चा है।

यहां छवि विवरण दर्ज करें


आप कहते हैं कि आपने अपने सभी उपयोगों को किसी और चीज़ से बदल दिया है। आपने इसे किसके साथ बदल दिया? हमने देखा कि यदि आप इसे XIB फ़ाइल में HelveticaNeue-MediumItalic से प्रतिस्थापित करते हैं, तो हमें iOS 6 और उससे पहले के गलत परिणाम मिलते हैं क्योंकि यह प्रतीत होता है कि iOS 7 में पेश किया गया है
GBegen

मैंने इसे HelveticaNeue-LightItalic से बदल दिया। निश्चित नहीं है कि इसे कब पेश किया गया था। मेरा ऐप iOS7 + है
माइक वोसलर

7

यह iOS 7.0.3 में एक बग है।

यदि आप स्पष्ट रूप से HelveticaNeue-Italic का उपयोग कर रहे हैं, तो आप इसे इस वर्कअराउंड का उपयोग करके बना सकते हैं:

UIFont* font = (__bridge_transfer UIFont*)CTFontCreateWithName(CFSTR("HelveticaNeue-Italic"), fontSize, NULL);

हालाँकि, ध्यान दें कि यह समाधान केवल iOS 7 पर काम करेगा ; यह iOS 6 के लिए लागू नहीं है (क्योंकि CTFontRefऔर UIFontiOS 6 पर टोल-फ्री नहीं थे)। हालाँकि, iOS 6 पर आप अपने नियमित फॉन्ट लुकिंग कोड का उपयोग कर सकते हैं।


4

यह मेरा विश्वास है कि यह एक बग है। मैंने इसे Apple के साथ दायर किया है। मेरे लिए दुख की बात है कि मेरा ऐप अब क्रैश हो रहा है। फॉन्ट का उपयोग मैं जिस 3rd पार्टी लाइब्रेरी में कर रहा हूं, उसमें किया जाता है। ट्विटर पर कई लोग समस्याएं बता रहे हैं।


1
FYI करें: मैंने अभी परीक्षण किया है और बग अभी भी iOS 7.0.4 में मौजूद है।
डेविड लारी

3

यदि आप गतिशील रूप से इटैलिक फ़ॉन्ट तक पहुँच रहे हैं, तो नाम के [UIFont fontWithName:@"HelveticaNeue-Italic" size:15.0f] उपयोग से फ़ॉन्ट तक पहुँचने के बजाय [UIFont italicSystemFontOfSize:15.0f]यह मेरे लिए ठीक काम कर रहा है।


यह शायद इस मुद्दे के आसपास सबसे साफ काम है। यदि iOS 6 समर्थन की आवश्यकता है, तो आप fontWithName:size:पहले चलाने की कोशिश कर सकते हैं , और यदि परिणाम है nil, तो दौड़ें italicSystemFontOfSize:, जो हमेशा कुछ वापस करना चाहिए, और कम से कम एक दुर्घटना से बचना चाहिए।
SaltyNuts

2

मुझे वर्तमान में सत्र नहीं मिला है, लेकिन उन्होंने कुछ ऐसा कहा है कि आप iOS7 पर उपलब्ध फोंट पर भरोसा नहीं कर सकते। वे आपके ऐप के जीवनकाल के दौरान भी बदल सकते हैं। जिसका मूल रूप से अर्थ है: जब आप अपने ऐप में फोंट निर्दिष्ट करते हैं, तो आप खराब हो जाते हैं, इसके बजाय फ़ॉन्ट डिस्क्रिप्टर या पसंदीदा फ़ॉन्ट का उपयोग करें!


2
निकटतम मैच जो मुझे मिल सकता है वह है asciiwwdc.com/2013/session/223 , लेकिन ऐसा लगता है कि वे डाउनलोड करने योग्य फोंट की बात कर रहे हैं, सिस्टम-प्रदान किए गए फोंट की नहीं।
हिल्टन कैंपबेल

ऊपर नई जानकारी देखें। मुझे लगता है कि प्रस्तुतकर्ता जो कह रहा है वह यह है कि आप "MetaFonts" को संस्करणों में समान अंतर्निहित फोंटों पर मैप नहीं कर सकते हैं या उपयोग नहीं कर सकते हैं। मुझे नहीं लगता कि वह कह रहा है कि यह भी संभावना है कि "हेल्वेटिकाएन्यू-इटैलिक" जैसी चीज कभी भी दूर जा सकती है।
स्कॉट सर्निकोवस्की

1

मुझे एक और उपाय मिला है जो काम करने लगता है। मैंने कॉल को लॉग आउट किया

[[UIFont italicSystemFontOfSize:12.0] fontName]

यह देखने के लिए कि वास्तविक सिस्टम इटैलिक फ़ॉन्ट का क्या उपयोग किया जा रहा है, और यह वापस आ गया है ".HelveticaNeueInterface-ItalicM3"। एक साधारण परीक्षण से पता चलता है कि उपयोग करना

[UIFont fontWithName:@".HelveticaNeueInterface-ItalicM3" size:12.0]

काम करता है! उनकी तुलना नेत्रहीन करते हुए, उपरोक्त कॉल द्वारा लौटाया गया फ़ॉन्ट बिल्कुल 'HelveticaNeue-Italic' फ़ॉन्ट के समान प्रतीत होता है।

यह समस्या लगभग निश्चित रूप से एक बग ... Helvetica Neue iOS 7 में डिफ़ॉल्ट फ़ॉन्ट है, इसलिए उस परिवार में फ़ॉन्ट गायब नहीं होना चाहिए। सब कुछ Xcode v.5.0 में ठीक काम किया, लेकिन 5.0.1 में अपग्रेड करने के तुरंत बाद, यह मुद्दा दिखाई देने लगा। मैं एक बग दर्ज किया है Apple के रूप में ज्यादा ध्यान देने वाली। तब तक, यह समाधान काम करने लगता है ...


1

मैंने ऐप्पल के साथ जो बग रिपोर्ट दायर की है, उसे "डुप्लिकेट के रूप में बंद" के रूप में चिह्नित किया गया है। मुझे आशा है कि इसका मतलब है कि वे इसे एक बग मानते हैं। हालाँकि, iOS 7.0.4 बग को ठीक नहीं करता है।


1
मुझे वही प्रतिक्रिया मिली। आशा है कि वे इसे ठीक करेंगे।
स्कॉट सर्निकोवस्की

1

बग आईओएस 7.1 बीटा 1 में तय किया गया है लगता है [UIFont fontWithName:@"HelveticaNeue-Italic" size:size];। एक फ़ॉन्ट लौटाता है।


अच्छी खबर है, लेकिन वह अभी भी एनडीए के अधीन है।
विन्सेन्ट टूरीन

9
मैं वह जोखिम उठाऊंगा।
सिंह नटण

0

मेरे पास एक ही दुर्घटना थी जो केवल iOS 7.0.3 और 7.0.4 में दुर्घटनाग्रस्त हो गई थी, और अन्य सभी संस्करणों में पूरी तरह से काम करती है। इतनी जाँच पड़ताल के बाद, मुझे पता चला कि @ "HelveticaNeue-Italic" iOS 7.0.3 और 7.0.4 संस्करणों में उपलब्ध नहीं है, जिससे कि मैं उन संस्करणों में ऊपर दुर्घटनाग्रस्त हो जाता था।

मैंने नीचे दिए गए कोड के साथ मुद्दे को तय किया है, यह किसी जरूरतमंद के लिए उपयोगी हो सकता है।

self.headerFont = [UIFont fontWithName:@"HelveticaNeue-Italic" size:16.0f];
if (self.headerFont == nil) {
    self.headerFont = [UIFont fontWithName:@"HelveticaNeue" size:16.0f];
}

दुर्घटना लॉग है:

[__NSCFConstantString pointSize]: unrecognized selector sent to instance 

-1

चूँकि UIWebView में किसी ने भी HelveticaNeue italic समर्थन के बारे में कुछ भी उल्लेख नहीं किया है, मैंने सोचा कि मैं अपने निष्कर्ष साझा करूँगा।

7.0.6 तक, नियमित इटैलिक अभी भी UIWebView में गायब है और एक ही परिवार में अल्ट्रालाइट इटैलिक पर वापस गिरता दिखाई देता है। यह थोड़ा अजीब लगता है जब यह नियमित रूप से गैर-इटैलिक हेल्वेटिकाएएन्यू पाठ के बगल में होता है क्योंकि यह बहुत हल्का होता है।

मेरा काम हेलवेटिकाएनयू के बजाय साधारण हेल्वेटिका का उपयोग करना था, लेकिन केवल इटैलिक के लिए। तो अगर आपके पास सीएसएस है जो इस तरह दिखता है:

.myCssClass {
    font-family:HelveticaNeue;
    /* etc, etc */
}

... आप ओवरराइड करने के लिए दो अन्य वर्ग जोड़ेंगे <i>और <em>:

.myCssClass i  { font-family:Helvetica; }
.myCssClass em { font-family:Helvetica; }

नियमित हेल्वेटिका इटैलिक फ़ॉन्ट ठीक लगता है और मुझे नहीं लगता कि किसी ने भी नोटिस किया होगा कि यह हेलवेटिकाएनेयू नहीं है।

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