出于某种原因,当我显示单词“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;
知道为什么会这样吗?感谢。
答案 0 :(得分:5)
它被称为结扎,它是故意的。如果您使用的是核心文本,则可以使用kCTLigatureAttributeName
属性更改操作系统渲染连字的方式,如果您使用的是NSAttributedString
,则可以使用NSLigatureAttributeName
。
答案 1 :(得分:1)
你所看到的被称为ligature - 这个想法最初是为了更容易处理印刷机的金属块上的字距调整(将一个字形用于常用字符对),但是现在作为一个主要的风格决定坚持到现代时代。
我不确定如何在API中禁用它,但希望这些额外的背景信息可以帮助您找到答案。
答案 2 :(得分:0)
这是一个简短的方法。 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];