3

在 NSTextField 上,我设置了大小为 140 的自定义字体。文本设置为 @"28"。但正如您在图像上清楚地看到的那样,文本字段顶部有足够的空间。这只发生在某些类型的字体上,而不是全部。我的问题是字体中的哪些信息可能会影响最终裁剪文本的文本字段?(上升器,帽高度?)。如果是这样,我可以修改字体文件来修复它吗?

在此处输入图像描述

4

1 回答 1

2

基线会因字体而异。此外,还有其他指标有所不同。您可以使用 NSAttributedString 解决此问题。您可以尝试改变 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;
于 2014-02-09T04:06:28.690 回答