2012-04-03 17 views
21

Yazdırma için PDF'ler oluşturan bir Cocoa OS X uygulamasına sahibim. Küçük yazı tipi boyutları kullandığımda, karakter aralığı yanlış görünüyor. İşte bir ekran görüntüsü. Bu benim app tarafından bir PDF çıktısı, Helvetica 6 puan kullanarak bir büyütme. Horrible Kerning OutputKakao (OS X) küçük yazı tipi - kerning korkunç görünüyor

Gördüğünüz gibi, karakter aralığı çok dokunaklı, bazıları da birbirinden çok uzak.

temelde kullanıyorum kodu (bu benim için sorun reproduces basitleştirilmiş bir örnektir) şöyle görünür: o Ben hepten yazı olur,

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]; 

Bu Helvetica özgü değildir ve denedim, bazıları diğerlerinden daha belirgindir. 10 gibi daha büyük bir boyut kullanırsam, iyi görünüyor. Metin Düzenleme gibi diğer uygulamalardan 6 nokta Helvetica iyi görünüyor. 6 puntolu metni düzgün bir şekilde işlemek için ne yapmam gerekiyor?

Eklenme: Edindim ki bu, PostScript yazı tiplerinden daha TrueType yazı tipleriyle daha kötü görünüyor. Ne yazık ki, kullanmak istediğim yazı tiplerinin birçoğunda PostScript sürümleri yok, bu yüzden TrueType'dan kaçınmak gerçekten bir seçenek değil.

OS X 10.7.3 ve XCode 4.2.1 çalıştırıyorum.

+3

Adam, ciddi [keming] olduğu (http://www.ironicsans.com/2008/02/idea_a_new_typography_term.html). – blahdiblah

+0

Kodunuzu bilgisayarımda test ettim. O kadar kötü bir şey elde edemedim, ancak 'TheWidth' için kullandığım değerden etkilendiğini fark ettim, bu yüzden bunu değiştirmeyi deneyebilirsiniz. Ayrıca, bu gibi basit çizim için, [NSString'ın drawInRect: withAttributes: '] (http://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSString_AppKitAdditions/Reference adresini kullanmak isteyebilirsiniz. Kodunuzu daha basit yapmak için /Reference.html#//apple_ref/occ/instm/NSString/drawInRect:withAttributes :). – ughoavgfhw

+0

Teşekkürler. Gücü çok küçük yapmak kesinlikle sorunlara neden olur, ancak kodumda kağıdın tam genişliğine ayarlanır. Çok büyük bir sayıya ayarlayabilirim ve hala aynı problemi sergiliyor. – Wouldchux

cevap

1

Ben printDateRect'in boyutunun yanlış olduğunu düşünüyorum. Bunu kontrol etmek için - (void)drawAtPoint:(NSPoint)point kullanmayı deneyin. Sadece bir ipucu

...

0

Eğer yazı tipi boyutu varyasyonlarını denemek ve hücre içinde ekstra satırları döndürmek isteyebilirsiniz bir hücrenin bu içini alıyorsanız. Bu yaklaşımı dene.

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;