来自CTLineCreateTruncatedLine的CTCineRef的iOS CoreText CTLineGetStringRange

我在iOS中有以下代码:

CFAttributedStringRef attributedString = ... CTLineRef line = CTLineCreateWithAttributedString(attributedString); CTLineRef truncatedLine = CTLineCreateTruncatedLine(line, 50.0, kCTLineTruncationEnd, NULL); CFRange lineRange = CTLineGetStringRange(line); CFRange truncatedLineRange = CTLineGetStringRange(truncatedLine); 

我的lineRange与truncatedLineRange相同。 为什么? 文档没有提到这一点。

根据coretext-dev邮件列表 , 这是预期的行为 :

截断的字符串仍然覆盖原始字符串范围,只是某些字形已包含截断的字符。 此外,在中间截断的情况下,不可能将不连续的字符串范围表示为CFRange。