3

NSTextField で、サイズ 140 のカスタム フォントを設定しています。テキストは @"28" に設定されています。しかし、画像ではっきりとわかるように、テキスト フィールドの上部には十分なスペースがあります。これは、すべてのフォントではなく、特定の種類のフォントでのみ発生します。私の質問は、フォントからのどの情報がテキストフィールドに影響を与え、最終的にテキストをトリミングすることですか? (アセンダー、キャップの高さ?)。もしそうなら、フォントファイルを修正して修正できますか?

ここに画像の説明を入力

4

1 に答える 1

2

ベースラインはフォントによって異なります。さらに、変化する他の指標があります。この問題は NSAttributedString で回避できます。NSBaselineOffsetAttribute を変更して、段落内から setMinimumLineHeight と setMaximumLineHeight を試すことができます。以下は一例です。必ず 2 つの 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 に答える