21 votos

Cacao (OS X) small font - kerning se ve horrible

Tengo un Cacao OS X aplicación que crea archivos Pdf para imprimir. Estoy teniendo un problema que cuando yo uso los pequeños tamaños de fuente, el espaciado parece del todo mal. Aquí está una captura de pantalla. Esta es una ampliación de un PDF de la salida de mi aplicación, utilizando Helvetica en 6 puntos. Horrible Kerning Output

Como se puede ver, el kerning es horrible, con algunos de los personajes de tocar y otros demasiado lejos.

El código que estoy utilizando, básicamente, se parece a esto (este es un ejemplo simplificado que se 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 exclusivo de Helvetica, ocurre en todas las fuentes que he probado, aunque es más pronunciada en algunos más que a otros. Si yo uso un tamaño más grande, al igual que 10, se ve bien. 6 punto Helvetica de otras aplicaciones, tales como Edición de Texto se ve bien. ¿Qué tengo que hacer para procesamiento de punto 6 de texto correctamente?

Editado para añadir: me acabo de dar cuenta de que esto parece mucho peor con las fuentes TrueType que con las fuentes PostScript. Lamentablemente, no tengo PostScript versiones de muchas de las fuentes que desea utilizar, evitando así TrueType no es realmente una opción.

Estoy ejecutando OS X 10.7.3 y XCode 4.2.1.

1voto

MacAndor Puntos 86

Creo que el printedDateRect el tamaño es incorrecto. Para comprobar esto, trate de usar - (void)drawAtPoint:(NSPoint)point.

Sólo un consejo...

0voto

Chip Russell Puntos 30

Si usted está recibiendo esta en el interior de una celda puede que desee probar las variaciones del tamaño de la fuente y volver líneas adicionales en el interior de la célula. Pruebe este enfoque.

    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;

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X