NSFont - Как получить правильный шрифт? - PullRequest
5 голосов
/ 25 января 2012

Я хотел бы сделать NSFont для описания Arial, обычный, 30pt в высоту. Пока что у меня есть:

    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 имеет неправильный размер. Я могу положить туда любой размер, какой захочу, и все они будут выглядеть одинаково.

1 Ответ

8 голосов
/ 25 января 2012

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

это прекрасно работает в моем приложении Mac:

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

ОБНОВЛЕНИЕ жирным шрифтом и / или курсивом:Вам этого достаточно?

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

ОБНОВЛЕНИЕ 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 других стиля шрифта (с чертами) не генерируются алгоритмом на лету.

...