我在标签上使用attributed strings
来更改字母之间的间距:
var attributedString=NSMutableAttributedString(string: "Fifi floflo")
attributedString.addAttribute(NSKernAttributeName, value: CGFloat(10), range: NSRange(location: 0, length: attributedString.length))
label.attributedText=attributedString
字距很好,除了两组字母,其中包括" fl "和" fi " (也许是我目前没有看到的其他人)。 我正在使用" Avenir-medium"字体,但我用基本的Arial字体测试,问题仍然存在。
答案 0 :(得分:2)
NSAttributedStrings默认启用连字。 Ligatures将悬垂字符组合组合成单个字形。如果您正在应用字母间距,则需要禁用它们 - 否则这些字母对字形不会分开。
attributedString.addAttribute(NSLigatureAttributeName,
value:0,
range: NSRange(location: 0, length: attributedString.length))
来自文档:
NSLigatureAttributeName
此属性的值是包含整数的NSNumber对象。 Ligatures导致使用与这些字符对应的单个自定义字形呈现特定字符组合。值0表示没有连字。值1表示使用默认连字。值2表示使用所有连字。此属性的默认值为1.(iOS上不支持值2。)