0

我正在显示这个字符串(注意中断):

CONSEJO
NACIONAL
PARA LA
CULTURA
Y LAS ARTES

我已经使用苹果在此处建议的代码将 NSAttributedString 配置为将行高常量设置为 26 点:

CGFloat lineSpacing = 26;
CTTextAlignment theAlignment = kCTLeftTextAlignment;

CTParagraphStyleSetting theSettings[3] = 
{
    {kCTParagraphStyleSpecifierMaximumLineHeight, sizeof(CGFloat), &lineSpacing},
    {kCTParagraphStyleSpecifierMinimumLineHeight, sizeof(CGFloat), &lineSpacing},
    {kCTParagraphStyleSpecifierAlignment, sizeof(CTTextAlignment), &theAlignment },
};

但是最后一行有额外的空间:

如果我在单词之间手动添加空格,我会得到预期的结果,所以在打印时:

CONSEJO            NACIONAL                    PARA LA                                                                CULTURA                                                         Y LAS ARTES

它显示了这一点(注意最后一行没有额外的间距):

这不是一个可持续的解决方案,因为我不想手动更改所有字符串以根据帧大小添加空格。

我已经测试了几个月,但我无法解决这个问题,最后一行总是有更多空间。

我还尝试了“\r”,看看这是否得到了不同的结果,但它仍然增加了额外的空间,显示:

Consejo\rNacional\rpara la\rCultura\ry las Artes

出品:

[左使用 \r] [右使用空格]

[这里所有的蓝色块都一样大]

所以空间变少了,但仍然超出了应有的空间。

CoreText 应该能够处理这样的简单字符串。

添加空格还不够好(有几个原因),必须有一种方法来控制它。

你认为问题是什么?

4

1 回答 1

0

我看不到图像,但我想你遇到了我不久前刚刚遇到的同样问题,看这个

您可以使用CTTypesetterandCTTypesetterSuggestClusterBreak手动处理换行符。我使用字体大小作为线条的高度,我在手动绘制线条时添加了线条间距,并且效果很好。

于 2012-05-11T04:18:36.563 回答