2012-01-24 12 views
5

Me gustaría hacer un NSFont para describir Arial, normal, 30 pts de altura. Hasta ahora tengo:NSFont - ¿Cómo obtener la fuente correcta?

NSNumber *weight = [NSNumber numberWithFloat:1.0]; 
    NSNumber *slant = [NSNumber numberWithFloat:1.0]; 
    NSDictionary *fontTraits = [NSDictionary dictionaryWithObjectsAndKeys: weight, NSFontWeightTrait, slant, NSFontSlantTrait, nil]; 
    NSDictionary *fontAttributes = [NSDictionary dictionaryWithObjectsAndKeys: @"Arial", NSFontFaceAttribute, 
                       fontTraits, NSFontTraitsAttribute, nil]; 
    NSFontDescriptor *fontDescriptor = [NSFontDescriptor fontDescriptorWithFontAttributes: fontAttributes]; 
    NSFont *largeFont = [NSFont fontWithDescriptor: fontDescriptor size: 30]; 

pero el NSFont resultante no es del tamaño correcto. Puedo poner cualquier tamaño que quiera allí y todos se ven iguales.

Respuesta

8

¿Está escribiendo para iOS o Mac OS X?

esto funciona bien en mi aplicación Mac:

NSFont* font = [NSFont fontWithName:@"Arial" size:30]; 

ACTUALIZACIÓN con negrita y/o cursiva: es suficiente para ti?

NSFont* font = [NSFont fontWithName:@"Arial Italic" size:30]; 
NSFont* font = [NSFont fontWithName:@"Arial Bold" size:30]; 
NSFont* font = [NSFont fontWithName:@"Arial Bold Italic" size:30]; 

ACTUALIZACIÓN 2 puede ser echar un vistazo a NSFontManager

// convert font 
NSFont* font = [NSFont fontWithName:@"Arial" size:30]; 
font = [[NSFontManager sharedFontManager] convertFont:font toHaveTrait:NSFontItalicTrait]; 

// create with traits and weight 
NSFont* font = [[NSFontManager sharedFontManager] fontWithFamily:@"Arial" traits:NSFontItalicTrait weight:2 size:30]; 

embargo, con ninguno de los que son capaces de crear una fuente con un peso de 5 y una inclinación de 4.

Recientemente hablé con un diseñador sobre fuentes y me dijo que generalmente una fuente como Arial es en realidad 4 fuentes (es decir, Arial, Arial Italic, Arial Bold y Arial Bold Italic). esos otros 3 estilos de fuente (con los rasgos) no son generados sobre la marcha por un algoritmo.

+0

Esto funciona, pero no puedo cambiar el peso o la inclinación con este método de hacer las cosas. – Justin808

+0

es suficiente para usted? o ¿realmente quieres el peso dinámico y la inclinación? – JeanLuc

+0

yup, eso funciona maravillosamente. gracias – Justin808

Cuestiones relacionadas