2011-07-18 12 views
8

पर सही ढंग से प्रदर्शित नहीं हो रहा है Iphone पर काम कर रहे नियो सैन्स प्रो फोंट का एक सेट प्राप्त करने का प्रयास कर रहा हूं। मेरे पास चार वजन हैं: हल्के, नियमित, मध्यम, बोल्ड ओटीएफ फाइलों के रूप में (NeoSansPro-Light.otf, -Regular.otf आदि)। फ़ाइलों को निर्माण में शामिल किया गया है, और info.plist में पंजीकृत है।कस्टम फ़ॉन्ट्स आईओएस

कॉलिंग [UIFont fontNamesForFamilyName:@"Neo Sans Pro"] 4 प्रविष्टियों के साथ एक सरणी देता है उदा। "NeoSansPro-लाइट"।

मैं UIFont fontWithName:size: का उपयोग करके इन तारों में से प्रत्येक के लिए फ़ॉन्ट ऑब्जेक्ट पुनर्प्राप्त कर सकता हूं।

हालांकि, जब मैं उनके साथ पाठ खींचता हूं, तो लाइट, नियमित और मध्यम संस्करण सभी ठीक उसी तरह आकर्षित होते हैं, और लाइट संस्करण की तरह दिखते हैं। बोल्ड संस्करण अलग-अलग खींचता है।

फ़ॉन्ट बुक के अनुसार, प्रत्येक फ़ॉन्ट फ़ाइल में अलग-अलग ग्लिफ होते हैं।

मैं पूरी तरह से स्टंप हूं - मुझे कोई भी संकेत जो मुझे करने की ज़रूरत है?

[जोड़ा गया] कुछ और जांच:

name: NeoSansPro-Light font: <UICFFont: 0x66304a0> font-family: "Neo Sans Pro"; font-weight: normal; font-style: normal; font-size: 12px 
name: NeoSansPro-Regular font: <UICFFont: 0x66304a0> font-family: "Neo Sans Pro"; font-weight: normal; font-style: normal; font-size: 12px 
name: NeoSansPro-Medium font: <UICFFont: 0x66304a0> font-family: "Neo Sans Pro"; font-weight: normal; font-style: normal; font-size: 12px 
name: NeoSansPro-Bold font: <UICFFont: 0xaa06070> font-family: "Neo Sans Pro"; font-weight: bold; font-style: normal; font-size: 12px 

तो तीन फोंट है कि एक ही प्रदर्शित वास्तव में एक ही कर रहे हैं:

NSArray *fonts = [UIFont fontNamesForFamilyName:@"Neo Sans Pro"]; 

    for (NSString *fname in fonts) { 
     UIFont *font = [UIFont fontWithName:fname size:12.0]; 
     NSLog(@"name: %@ font: %@", fname, font); 
    } 

इस कोड रनिंग निम्नलिखित लॉग उत्पादन देता है। लेकिन निर्माण में चार फ़ॉन्ट वजन और चार फोंट हैं।

+0

टीटीएफ फाइलों के रूप में भी प्रयास किया गया, लेकिन यह भी हुआ –

उत्तर

10

ऐसा लगता है कि यह एक ही समस्या यहां है: Including multiple fonts of the same family in an iPad application

ऐसा लगता है आईओएस फ़ॉन्ट वास्तुकला भ्रमित हो जाता है अगर वहाँ एक ही फ़ॉन्ट परिवार में एक से अधिक फोंट कर रहे हैं, और सही फ़ॉन्ट वापस हाथ नहीं होंगे। समाधान फ़ॉन्ट परिवार की जानकारी मैन्युअल रूप से संपादित करना है (Font Forge जैसे कुछ मानों का उपयोग करना

जैसे नियो सैन्स प्रो लाइट फ़ॉन्ट के लिए, फ़ॉन्ट परिवार (पीएसएनएम्स और टीटीएफ नामों में) को "एनएसपी लाइट" पर सेट करें। ।> एनएसपी नियमित आदि

फिर आप मूल नाम उदाहरण के लिए "NeoSansPro-लाइट"

बदसूरत द्वारा फॉन्ट का उल्लेख कर सकते हैं, लेकिन यह काम करता है

+2

कुछ स्पष्टीकरण: फ़ॉन्ट फोर्ज में, यह 'फ़ॉन्ट जानकारी' के तहत 'एलिमेंट' मेनू में उपलब्ध है। साथ ही, यह वास्तव में कोई फर्क नहीं पड़ता कि आपने फ़ॉन्ट परिवार को क्या सेट किया है, मूल रूप से आप इसे मूल परिवार से बदल रहे हैं ताकि आईओएस इसे अपने अद्वितीय नाम से न पाएं, न कि परिवार/वजन। – alalonde

0

फ़ॉन्ट फोर्ज - नव संस प्रो नियमित रूप से करने के लिए इसी तरह करते हैं मेरे लिए थोड़ा अधिक देखा, इसलिए मैंने एक विधि बनाई जो फ़ॉन्ट्स में फोंट के विवरण पढ़ता है प्रमाण पत्र का ऐरे ऐन परिवार और उचित फ़ॉन्ट देता है।

- (UIFont*) getFontWithFamilyName:(NSString*)familyName bold:(Boolean)bold italic:(Boolean)italic size:(uint)size { 
    NSArray *fonts = [UIFont fontNamesForFamilyName:familyName]; 
    for (NSString *fname in fonts) { 
     UIFont *font = [UIFont fontWithName:fname size:size]; 
     Boolean isBold = [[font description] rangeOfString:@"bold"].location != NSNotFound; 
     Boolean isItalic = [[font description] rangeOfString:@"italic"].location != NSNotFound; 
     if (isBold == bold && isItalic == italic) { 
      return font; 
     } 
    } 
    //-- font was not found, provide system font bold or normal 
    if (bold) { 
     return [UIFont boldSystemFontOfSize:size]; 
    } else { 
     return [UIFont systemFontOfSize:size]; 
    } 
} 
+0

क्या आपने इसे उसी परिवार से स्थापित कई फोंट के साथ परीक्षण किया था? जिस समस्या को मैं देख रहा था वह था [यूफॉन्ट फ़ॉन्टविथनाम:] काम नहीं किया था, इसलिए आपका समाधान या तो –

+0

नहीं होगा, जाहिर है, यह काम करता है यदि [यूफॉन्ट फ़ॉन्टविथनाम:] कुछ देता है। यदि यह आपके लिए नहीं है, तो मुझे यकीन नहीं है कि समस्या यह है कि आपके पास एक ही परिवार के कई फोंट हैं। एकाधिक फ़ॉन्ट्स को एकाधिक सरणी प्रविष्टियों को वापस करना चाहिए – Elendurwen

+1

मैं मानता हूं कि [यूफॉन्ट फ़ॉन्टविथनाम] * * एकाधिक आइटम लौटाएंगे, लेकिन चूंकि यह * ऐप्पल कोड में कोई बग नहीं है। इसलिए उपरोक्त काम करते हैं। –

0

मैं अरवो नामक एक Google फ़ॉन्ट का उपयोग कर रहा था। यह निम्न फ़ाइलें था:

  • Arvo-Regular.ttf
  • Arvo-Bold.ttf
  • Arvo-BoldItalic.ttf
  • Arvo-Italic.ttf

इन नामों थे मेरे ऐप की info.plist में जोड़ा गया लेकिन किसी कारण से, मेरा ऐप केवल बोल्ड, बॉयलिटिकल और इटैलिक फ़ॉन्ट्स को पढ़ सकता था। जब मैं इसे लोड करने की कोशिश करता था तो यह नियमित फ़ॉन्ट नहीं पढ़ सका। हालांकि, फ़ॉन्ट नामों को प्रिंट करने के बाद, यह पता चला कि अरवो-रेगुलर को मेरे ऐप में अरवो के रूप में पहचाना गया था।

संबंधित मुद्दे