对齐 iOS(Swift 或 Objective-C)中的文本而不打断 tracking/kerning/letter 间距

Justify text in iOS (Swift or Objective-C) without breaking tracking/kerning/letter spacing

见下文:

// Description (HTML string):
var attrStr = NSMutableAttributedString(
    data: formatted.dataUsingEncoding(NSUnicodeStringEncoding, allowLossyConversion: true)!,
    options: [ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType],
    documentAttributes: nil,
    error: nil)

var paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.alignment = NSTextAlignment.Justified
attrStr?.addAttribute(NSParagraphStyleAttributeName, value: paragraphStyle, range: NSMakeRange(0, attrStr!.length))
attrStr?.addAttribute(NSKernAttributeName, value: -0.1, range: NSMakeRange(0, attrStr!.length))
descLabel.attributedText = attrStr
descLabel.sizeToFit()

到目前为止,我所有证明文本合理性的尝试都导致了完全相同的行为。我试过通过内联样式 CSS int eh html 文本,或使用 textAlignment 属性。

问题是,对齐文本打断了字母间距(实际上它增加了每个单词的 tracking/kerning 而不是只增加了中间的 space)。

见:

我希望看到一个不是 hack 的解决方案,因为我自己设计了一些 hack,但后来我陷入了其他问题的太多可能性。

我是不是漏掉了一些简单的东西?我已经完成了所有 UI 选项,正如我的代码示例中所见,我什至尝试更改 Kern,它确实发生了变化,但只是按比例变化(即它仍然增加)。

您是否尝试添加 hyphenationFactor 为 1 的 NSParagraphStyle 属性?

这将保持您的字距调整和字间距,但会在单词需要换行时添加连字符。