【问题标题】:ios NSMutableAttributedString NSKernAttributeName wrong kerning with "fl" and "fi" lettersios NSMutableAttributedString NSKernAttributeName 使用“fl”和“fi”字母的错误字距
【发布时间】:2015-11-13 02:10:25
【问题描述】:

我在标签上使用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 字体进行了测试,问题仍然存在。

【问题讨论】:

    标签: ios fonts nsattributedstring nsmutableattributedstring kerning


    【解决方案1】:

    NSAttributedStrings 默认启用连字。连字将悬垂的字符组合组合成单个字形。如果您要应用字母间距,则需要禁用它们 - 否则这些字母对字形不会分开。

    attributedString.addAttribute(NSLigatureAttributeName, 
      value:0, 
      range: NSRange(location: 0, length: attributedString.length))
    

    来自文档:

    NSLigatureAttributeName

    该属性的值是一个包含整数的 NSNumber 对象。连字导致使用与这些字符相对应的单个自定义字形呈现特定的字符组合。值 0 表示没有连字。值 1 表示使用默认连字。值 2 表示使用所有连字。此属性的默认值为 1。(iOS 不支持值 2。)

    【讨论】:

    • 我确实从文档中找到了解决方案。
    猜你喜欢
    • 2017-08-13
    • 2015-04-09
    • 2013-10-19
    • 1970-01-01
    • 2011-12-15
    • 1970-01-01
    • 1970-01-01
    • 2013-04-21
    • 1970-01-01
    相关资源
    最近更新 更多