首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSFont -如何获得正确的字体?

NSFont -如何获得正确的字体?
EN

Stack Overflow用户
提问于 2012-01-25 04:26:25
回答 1查看 10.9K关注 0票数 6

我想做一个NSFont来描述Arial,normal,30pt的高度。到目前为止,我有:

代码语言:javascript
复制
    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大小不正确。我可以把任何我想要的尺寸放进去,它们看起来都一样。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-25 05:15:19

你写的是iOS还是Mac?

这在我的Mac应用程序中运行良好:

代码语言:javascript
复制
NSFont* font = [NSFont fontWithName:@"Arial" size:30];

用粗体和/或斜体更新:这对你来说足够了吗?

代码语言:javascript
复制
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

代码语言:javascript
复制
// 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种字体样式(带有特征)不是由算法动态生成的。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8993625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档