幾個帖子指出了從CTFramesetterSuggestFrameSizeWithConstraints獲取確切高度的困難,在這裏,(framesetter post),@Chris DeSalvo給出了看起來像確定性修正的內容:使用正確的行間距添加段落樣式設置調整。爲框架設定器提供正確的行間距調整
DeSalvo通過從其lineHeight中移除UIFont的上升和下降獲得他的「領先」。我想知道如何比較CTFontGetLeading
。
我喜歡這個創建字體的工作:
CTFontRef fontr = CTFontCreateWithName((CFStringRef)@"Helvetica Neue", 16.0f, NULL);
UIFont *font = [UIFont fontWithName:@"Helvetica Neue" size:16.0f];
值有很大差異:
- 0.448 CTFontGetLeading
- 2.360 DeSalvo公式:UIFont lineHeight是 - 伸+伸
以下是一些其他UIFont值:
- 21.000 UIFont的lineHeight是
- 15.232 UIFont的上升段(從基線的y座標)
- -3.408 UIFont的伸(從基線的y座標)
- 08.368 UIFont的X字高
這裏是Ken Thomases詢問的CTFont值:
- 11.568001 CTFontGetCapHeight
- 08.368 CTFontGetXHeight
- -15.216001,-7.696001,38.352001,24.928001 CTFontGetBoundingBox
- 15.232 CTFontGetAscent
- 03.408 CTFontGetDescent(類REF寫着「縮放字體下降度量縮放根據的點大小和矩陣字體引用」 - 這顯然意味着它是Y的絕對值從基線座標)
我注意到,UIFont以前有一個屬性專門爲?‘龍頭’,但它已被棄用,我們是 建議改爲使用lineHeight
。因此,UIFont認爲對於相同的字體是和CTFontRef .448?有些事不對。
三個問題:
- 是「龍頭」真的是什麼意思kCTParagraphStyleSpecifierLineSpacingAdjustment?
- 如果是這樣,我應該使用哪種方法/公式來獲取它?
- 如果不是,我應該使用什麼行間距調整?
我不認爲有人建議使用'lineHeight'作爲一個下拉更換爲主導。相反,我認爲這個建議是停止關注領先並考慮線高。也就是說,我無法調和CTFontGetLeading和公式之間的區別。其他CTFontGet ...函數給出了什麼(上升,邊界框高度,下降,頂點高度,X高度)? – 2012-04-09 16:13:22
好主意。我已經將這些CTFontGet值添加到了問題中。我沒有看到任何會產生0.448的組合。我想知道在考慮* inter * -line間距時,我們如何考慮線高度,特別是當線高度被簡單定義爲「文本線的高度」時? – Wienke 2012-04-10 01:42:24
您是否嘗試過設置'kCTParagraphStyleSpecifierMinimumLineHeight'而不是行間距調整?至少你對此有一定的價值。 – 2012-04-10 02:10:11