2011-03-15 58 views
4

我正在使用CoreText來呈現多列文本。然而,當我設置第一個段落比文本的其餘部分加粗,大字體的第一個字母,我承擔2期(附加圖像中都可見):CoreText中的行間距和段落對齊方式

  1. 的間距第一下(我知道這是因爲第一個字符可能是ag,y,p,q等等。

  2. 第一行下面的行現在不會與下一列中的對應行對齊

有關如何克服這兩個問題的任何建議將是偉大的Ÿ讚賞,謝謝。 enter image description here

+0

可以顯示你的代碼嗎? – SAKrisT 2011-10-31 14:41:01

回答

2

這似乎是解決這個問題的唯一方法是使用一種變通方法,這是創造的第一列,1 3幀爲W,1對第一句的休息和1的其餘部分第一列。

3

根據文檔kCTParagraphStyleSpecifierMaximumLineHeight應該已經解決了這個問題,但不幸的是似乎至少在IOS 4.3上沒有工作。

CTParagraphStyleSetting theSettings[5] = 
{ 
    { kCTParagraphStyleSpecifierParagraphSpacing, sizeof(CGFloat), &spaceBetweenParaghraphs }, 
    { kCTParagraphStyleSpecifierParagraphSpacingBefore, sizeof(CGFloat), &topSpacing }, 
    { kCTParagraphStyleSpecifierLineSpacing, sizeof(CGFloat), &spaceBetweenLines }, 
    { kCTParagraphStyleSpecifierMinimumLineHeight, sizeof(CGFloat), &lineHeight}, 
    { kCTParagraphStyleSpecifierMaximumLineHeight, sizeof(CGFloat), &lineHeight} 
}; 

CTParagraphStyleRef paragraphStyle = CTParagraphStyleCreate(theSettings, 5); 

公平的文件說,它在OS v10.5及更高版本中可用。

kCTParagraphStyleSpecifierMaximumLineHeight
無論任何附加圖形的字體大小或大小,幀中任何行將佔據的最大高度。超過此高度的字形和圖形將與相鄰線條重疊。最大高度爲0意味着沒有線高度限制。這個值總是非負的。
類型:CGFloat。
默認值:0.0。
應用:CTFramesetter。
適用於Mac OS X v10.5及更高版本。
在CTParagraphStyle.h中聲明。