2012-01-24 5 views
5

Я хотел бы сделать NSFont, чтобы описать Arial, нормальный, 30pt в высоту. До сих пор у меня есть:NSFont - Как получить правильный шрифт?

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

, но полученный NSFont - неправильный размер. Я могу разместить любой размер, который я хочу там, и все они выглядят одинаково.

ответ

8

Вы пишете для iOS или Mac OS X?

это отлично работает в моем Mac App:

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

UPDATE с жирным шрифтом и/или курсивом: достаточно ли для вас?

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

UPDATE 2 может взглянуть на 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]; 

Но ни с одним из тех, кого вы можете создать шрифт с весом 5 и скоса 4.

Недавно я поговорил с дизайнером о шрифтах, и он сказал мне, что обычно шрифт вроде Arial - это на самом деле 4 шрифта (то есть Arial, Arial Italic, Arial Bold и Arial Bold Italic). эти 3 других стиля шрифта (с признаками) не генерируются алгоритмом.

+0

Это работает, но я не могу изменить вес или наклон с помощью этого метода выполнения вещей. – Justin808

+0

это вам достаточно? или вы действительно хотите динамический вес и уклон? – JeanLuc

+0

yup, что работает чудесно. thanks – Justin808

Смежные вопросы