0

出于某种原因,当我显示单词“Butterfly”(或其他任何带有“fl”的词)时,“f”和“l”在顶部连接(见下图)。字体为 Century Gothic Bold。这是我用来设置 UILabel 的代码。标签的字符串是从 plist 中检索的:

UILabel *label = [[UILabel alloc] init];
label.text = [self.flashcardDelegate.alphabetArr objectAtIndex:index];
label.textColor = [UIColor colorWithRed:.733 green:0 blue:.03137 alpha:1];
label.backgroundColor = [UIColor clearColor];
label.frame = CGRectMake(ipad ? 210.0f : 65.0f, 
                         ipad ? 650.0f : 300.0f, 
                         ipad ? 340.0f : 185.0f, 
                         ipad ? 250.0f : 135.0f);
label.font = [UIFont fontWithName:@"CenturyGothic-Bold" size:ipad ? 200 : 100];
label.textAlignment = UITextAlignmentCenter;

知道为什么会发生这种情况吗?谢谢。

截屏

4

3 回答 3

5

它被称为结扎,它是故意的。kCTLigatureAttributeName如果您使用 Core Text,您可以使用属性更改操作系统呈现连字的方式,或者NSLigatureAttributeName如果您使用NSAttributedString.

于 2012-07-10T23:58:01.883 回答
1

您所看到的被称为连字- 这个想法最初是为了更容易处理印刷机金属块上的字距调整(为共同连接的字符对使用一个字形),但现在已经持续到现代时代作为一个很大程度上的风格决定。

我不确定如何在 API 中禁用它,但希望这些额外的背景信息可以帮助您找到答案。

于 2012-07-10T23:45:23.563 回答
1

这是执行此操作的一种简短方法。iOS 6.0+

NSMutableAttributedString *attributedString;
attributedString = [[NSMutableAttributedString alloc] initWithString:label.text];
[attributedString addAttribute:NSLigatureAttributeName value:@0 range:NSMakeRange(0, label.text.length)];
[label.text setAttributedText:attributedString];
[attributedString release];
于 2014-04-19T12:03:11.537 回答