在NSTextField上我正在设置一个大小为140的自定义字体。文本设置为@“28”。但是正如您可以在图像上清楚地看到的那样,文本字段在顶部有足够的空间。这仅适用于某些类型的字体,而不是所有字体。我的问题是,字体中的哪些信息可能会影响最终裁剪文本的文本字段? (Ascender,Cap Height?)。如果是这样,我可以修改字体文件来修复它吗?
答案 0 :(得分:2)
基线因字体而异。此外,还有其他指标可能会有所不同。您可以使用NSAttributedString解决此问题。您可以尝试在段落setMinimumLineHeight和setMaximumLineHeight中更改NSBaselineOffsetAttribute。以下是一个例子。确保创建两个textField标签并连接其插座。
self.Label1.stringValue = @"Test Text";
//
// baseline is different for each font!
//
//self.Label2.stringValue = @"Test Text";
NSFont *otherFont = [NSFont fontWithName:@"MarkerFelt-Thin" size:40.0f];
NSNumber *baseline = [[NSNumber alloc] initWithFloat: 5.0f];
NSMutableParagraphStyle *paraStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
[paraStyle setParagraphSpacingBefore:20.0f];
[paraStyle setMinimumLineHeight:30.0f];
[paraStyle setMaximumLineHeight:50.0f];
NSDictionary *otherFDict = [NSDictionary dictionaryWithObjectsAndKeys: paraStyle, NSParagraphStyleAttributeName,
otherFont, NSFontAttributeName, baseline, NSBaselineOffsetAttributeName, nil];
NSMutableAttributedString *otherText = [[NSMutableAttributedString alloc] initWithString:@"Test Text" attributes:otherFDict];
self.Label2.attributedStringValue = otherText;