Tengo una aplicación Cocoa OS X que crea archivos PDF para imprimir. Tengo un problema que cuando uso tamaños de letra pequeños, el kerning parece estar mal. Aquí hay una captura de pantalla. Esta es una ampliación de una salida PDF de mi aplicación, que usa Helvetica en 6 puntos. Fuente pequeña de cacao (OS X): el kerning se ve horrible
Como puede ver, el kerning es horrible, con algunos caracteres que se tocan y otros demasiado separados.
El código que estoy utilizando básicamente se parece a esto (este es un ejemplo simplificado que reproduce el problema para mí):
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];
Esto no es aplicable sólo a Helvetica, sucede en todos los tipos de letra I' lo he intentado, aunque es más pronunciado en algunos que en otros. Si uso un tamaño más grande, como 10, se ve bien. 6 puntos Helvetica de otras aplicaciones como Text Edit se ve bien. ¿Qué debo hacer para representar correctamente el texto de 6 puntos?
Editado para agregar: Acabo de notar que esto parece mucho peor con las fuentes TrueType que con las fuentes PostScript. Lamentablemente, no tengo versiones PostScript de muchas de las fuentes que quiero usar, por lo que evitar TrueType no es realmente una opción.
Estoy ejecutando OS X 10.7.3 y XCode 4.2.1.
Hombre, eso es algo grave [keming] (http://www.ironicsans.com/2008/02/idea_a_new_typography_term.html). – blahdiblah
Probé tu código en mi computadora. No pude obtener nada tan malo, pero noté que se vio afectado por el valor que utilicé para 'theWidth', por lo que es posible que desee intentar variar eso. Además, para un dibujo simple como este, es posible que desee utilizar [NSString's '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 :) en su lugar para simplificar el código. – ughoavgfhw
Gracias. Hacer que el ancho sea demasiado pequeño definitivamente causa problemas, pero en mi código está configurado para todo el ancho del papel. Puedo configurarlo en un número enorme y todavía muestra el mismo problema. – Wouldchux