2012-04-15 19 views
0

我顯示此字符串(注意休息):CoreText增加了額外的空間,每一個段落的拉斯維加斯線

CONSEJO 
NACIONAL 
PARA LA 
CULTURA 
Y LAS ARTES 

我已經配置了NSAttributedString有一條線高度不斷使用代碼提示26分蘋果here

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] [右鍵使用空格]

http://dl.dropbox.com/u/11470523/Test.png

[這裏所有的藍色塊大小相同]

http://dl.dropbox.com/u/11470523/TEsst1%20copy.png

所以有更少的空間,但還有更多的應該有。

CoreText應該能夠像這樣處理一個簡單的字符串。

添加空格不夠好(出於以下原因),必須有一種方法才能控制它。

你認爲問題是什麼?

回答

0

我看不到圖像,但我認爲你遇到了不久前遇到的同樣問題,請參閱this

您可以使用CTTypesetterCTTypesetterSuggestClusterBreak手動處理換行符。我使用字體大小作爲線條的高度,手動繪製線條時添加了線條間距,並且工作正常。