I would like to make a NSFont to describe Arial, normal, 30pt in height. So far I have:
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];
but the resulting NSFont is not the right size. I can put any size I want in there and they all look the same.
are you writing for iOS or Mac OS X?
this works fine in my Mac App:
NSFont* font = [NSFont fontWithName:@"Arial" size:30];
UPDATE with bold and/or italic: is that enough for you ?
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 may be take a look at 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];
But with neither of those you are able to create a font with a weight of 5 and a slant of 4.
i recently talked to a designer about fonts and he told me that usually a font like Arial is actually 4 Fonts (i.e. Arial, Arial Italic, Arial Bold and Arial Bold Italic). those 3 other font styles (with the traits) are not generated on the fly by an algorithm.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With