我想为 [NSFont systemFontOfSize:13 weight:NSFontWeightLight]
实现替换方法适用于 Mac OS 10.9 和 10.10。
我可以通过 [[NSFont systemFontOfSize:13] fontDescriptor]
获取字体描述符.
但是,我不知道如何更改字体描述符粗细并从中创建 NSFont。
如 WWDC 2015, #804 中所述: 30:17,我们不应该从系统字体中获取姓氏(如建议的 here 和 here )。
是否可以更改字体描述符权重并从中获取新的 NSFont?
最佳答案
我可以想到两种方法,但都没有给出与 +[NSFont systemFontOfSize:weight:]
完全相同的语义。 .
一是使用-[NSFontManager convertWeight:ofFont:]
。这只是允许您增加或减少体重,而不是选择特定的目标体重。不过,如果它提供了新字体,可以查询-[NSFontManager weightOfFont:]
获取其重量,其中值 3 表示“轻”(请参阅 -convertWeight:ofFont:
处的表)。通过重复该过程,您也许能够获得所需的重量,但该方法可能会失败或超出范围。
另一种方法是从字体到字体描述符,再到具有所需粗细的新字体描述符:
NSFontDescriptor* origDescriptor = origFont.fontDescriptor;
NSFontDescriptor* newDescriptor = [origDescriptor fontDescriptorByAddingAttributes:@{ NSFontTraitsAttribute: @{ NSFontWeightTrait: @(-0.2) } }];
NSFont* newFont = [NSFont fontWithDescriptor:newDescriptor size:origFont.pointSize];
这里我随意选择了-0.2。这种方法的问题在于,它采用从 -1.0 到 1.0 的值作为权重,其中 0 为“正常”。目前尚不清楚如何将该比例映射到“轻量级”。我想您可以通过名称查询您获取的一些轻量字体,看看它们的粗细是多少。
关于cocoa - 10.9 替换 [NSFont systemFontOfSize : weight:],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32646380/