21

印刷用の PDF を作成する Cocoa OS X アプリケーションがあります。小さなフォント サイズを使用すると、カーニングがすべて間違っているように見えるという問題があります。これがスクリーンショットです。これは、Helvetica を 6 ポイント使用して、私のアプリで PDF 出力を拡大したものです。 恐ろしいカーニング出力

ご覧のとおり、カーニングはひどいもので、一部の文字が接触し、他の文字が離れすぎています。

私が使用しているコードは基本的に次のようになります (これは私の問題を再現する単純な例です):

NSString* dateStr = @"Printed 04/03/2012";
NSFont* detailsFont = [NSFont fontWithName:@"Helvetica" size:6];
NSMutableAttributedString* printedDate = [[NSMutableAttributedString alloc] initWithString:dateStr];
[printedDate addAttribute:NSFontAttributeName value:detailsFont range:NSMakeRange(0, [dateStr length])];
NSRect printedDateRect = NSMakeRect(0, 0, theWidth, 10);
[printedDate drawInRect:printedDateRect];

これは Helvetica に固有のものではなく、私が試したすべてのフォントで発生しますが、一部のフォントでは他のフォントよりも顕著です. 10 などの大きいサイズを使用すると、見栄えがよくなります。6 ポイント Text Edit などの他のアプリからの Helvetica は正常に見えます。6 ポイントのテキストを適切にレンダリングするにはどうすればよいですか?

追加するために編集: PostScript フォントよりも TrueType フォントの方がはるかに悪いことに気付きました。残念ながら、私は使いたいフォントの多くの PostScript バージョンを持っていないので、TrueType を避けるという選択肢はありません。

OS X 10.7.3 と XCode 4.2.1 を実行しています。

4

2 に答える 2

1

私は、printedDateRect のサイズが間違っていると思います。これを確認するには、 を使用してみてください- (void)drawAtPoint:(NSPoint)point

ほんのヒント...

于 2012-04-20T16:34:20.193 に答える
0

セル内でこれを取得している場合は、フォント サイズのバリエーションを試して、セル内に余分な行を返すことをお勧めします。このアプローチを試してください。

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    cell.autoresizingMask = UIViewAutoresizingFlexibleHeight;
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    cell.textLabel.font = [UIFont boldSystemFontOfSize:11];
    cell.textLabel.numberOfLines = 13;
于 2012-04-27T12:03:37.703 に答える