2012-04-03 14 views
21

मेरे पास कोको ओएस एक्स एप्लिकेशन है जो प्रिंटिंग के लिए पीडीएफ बनाता है। मुझे एक समस्या है कि जब मैं छोटे फ़ॉन्ट आकार का उपयोग करता हूं, तो कर्नाईंग सभी गलत लगता है। यहां एक स्क्रीन शॉट है। यह 6 अंक पर हेल्वैटिका का उपयोग करके, मेरे ऐप द्वारा पीडीएफ आउटपुट से एक विस्तार है। Horrible Kerning Outputकोको (ओएस एक्स) छोटा फ़ॉन्ट - कर्नाई भयानक लग रहा है

जैसा कि आप देख सकते हैं, कर्नाई भयानक है, कुछ पात्रों को छूने और अन्य बहुत दूर हैं।

कोड मैं मूल रूप से उपयोग कर रहा हूँ इस तरह दिखता है (यह एक सरल उदाहरण है कि मेरे लिए समस्या पुनरुत्पादित करता है):

NSString* dateStr = @"Printed 04/03/2012"; 
NSFont* detailsFont = [NSFont fontWithName:@"Helvetica" size:6]; 
NSMutableAttributedString* printedDate = [[NSMutableAttributedString alloc] initWithString:dateStr]; 
[printedDate addAttribute:NSFontAttributeName value:detailsFont range:NSMakeRange(0, [dateStr length])]; 
NSRect printedDateRect = NSMakeRect(0, 0, theWidth, 10); 
[printedDate drawInRect:printedDateRect]; 

यह Helvetica लिए अद्वितीय नहीं है, यह सब फोंट मैं में क्या होता है मैंने कोशिश की, हालांकि यह दूसरों की तुलना में कुछ अधिक स्पष्ट है। अगर मैं बड़े आकार का उपयोग करता हूं, जैसे 10, यह ठीक दिखता है। टेक्स्ट एडिट जैसे अन्य ऐप्स से 6 पॉइंट हेल्वैटिका ठीक लग रहा है। 6 बिंदु टेक्स्ट को सही तरीके से प्रस्तुत करने के लिए मुझे क्या करने की ज़रूरत है?

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

मैं ओएस एक्स 10.7.3 और एक्सकोड 4.2.1 चला रहा हूं।

+3

मैन, यह कुछ गंभीर [केमिंग] है (http://www.ironicsans.com/2008/02/idea_a_new_typography_term.html)। – blahdiblah

+0

मैंने अपने कंप्यूटर पर अपने कोड का परीक्षण किया। मैं कुछ भी बुरा नहीं पाने में असमर्थ था, लेकिन मैंने देखा कि यह 'द विड्थ' के लिए उपयोग किए जाने वाले मूल्य से प्रभावित था, इसलिए आप इसे अलग करने की कोशिश कर सकते हैं। इसके अलावा, इस तरह के साधारण ड्राइंग के लिए, आप [NSString की 'drawInRect: withAttributes: '] (http://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSString_AppKitAdditions/Reference का उपयोग करना चाह सकते हैं /Reference.html#//apple_ref/occ/instm/NSString/drawInRect:withAttributes :) इसके बजाय अपना कोड सरल बनाने के लिए। – ughoavgfhw

+0

धन्यवाद। Width को बहुत छोटा बनाना निश्चित रूप से समस्याएं पैदा करता है, लेकिन मेरे कोड में यह कागज़ की पूरी चौड़ाई पर सेट होता है। मैं इसे एक बड़ी संख्या में सेट कर सकता हूं और यह अभी भी एक ही समस्या प्रदर्शित करता है। – Wouldchux

उत्तर

1

मुझे लगता है कि मुद्रितडेट्रेट का आकार गलत है। इसे जांचने के लिए, - (void)drawAtPoint:(NSPoint)point का उपयोग करने का प्रयास करें।

बस एक टिप ...

0

आप एक सेल आप फ़ॉन्ट आकार के रूपांतरों कोशिश करते हैं और सेल के अंदर अतिरिक्त लाइनें वापस जाने के लिए चाहते हो सकता है की इस के अंदर मिल रहे हैं। इस दृष्टिकोण को आजमाएं।

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
    cell.autoresizingMask = UIViewAutoresizingFlexibleHeight; 
    cell.selectionStyle = UITableViewCellSelectionStyleNone; 
    cell.textLabel.font = [UIFont boldSystemFontOfSize:11]; 
    cell.textLabel.numberOfLines = 13; 
संबंधित मुद्दे