2011-03-25 17 views
5

¿Por qué el siguiente código ignora el espacio en blanco? enter image description hereCGContextShowTextAtPoint y espacio en blanco

UIColor *textColor = [UIColor colorWithRed:153.0/255.0 green:102.0/255.0 blue:51.0/255.0 alpha:1.0]; 
CGContextSetFillColorWithColor(ctx, [textColor CGColor]); 
CGContextSelectFont(ctx, "Helvetica Neue Bold" , 14, kCGEncodingMacRoman); 
CGContextSetTextMatrix(ctx, CGAffineTransformMakeScale(1, -1)); 
CGContextSetShadowWithColor(ctx, CGSizeMake(0.0, 1.0), 1.0, [[UIColor whiteColor] CGColor]); 
//CGContextSetAllowsAntialiasing(ctx, YES); 

NSString *str = @"test1 test2"; 
CGContextShowTextAtPoint(ctx, 5, 17, [str UTF8String], str.length); 

Cuando, como cambiar el nombre de la fuente a "Helvetica Neue" produce el espacio en blanco:

¿Alguien entiende qué está pasando aquí?

Respuesta

4

CGContextShowTextAtPoint() no es la forma correcta de mostrar texto utilizando CoreGraphics, por más engañoso que sea el nombre de esa función. Pruebe CoreText en su lugar.

+0

Interesante, ¿por qué mostrar texto no es la forma correcta de mostrar texto usando CoreGraphics? Terminé cambiando la fuente a algo más para evitar esto, pero me encantaría revertir ese cambio y, lo que es más importante, entender la razón detrás de esto. ¡Gracias! – vance

+2

La API de texto de CoreGraphics no admite nada más que scripts romanos, no admite fuentes de respaldo (usando caracteres de otra fuente cuando falta su fuente), o cualquier tipo de diseño de texto real además de avances simples (incluidas las características presentes en muchas de las fuentes que se envían en el sistema). CoreText es compatible con todo esto y más, con una buena API para arrancar. –

+0

Gracias! Muy buena información, ¿dónde los encontraste? :) He estado buscando todo para entender esto más. Muchas gracias. – vance

Cuestiones relacionadas