我正在使用CoreText呈现多列文本。但是,当我将第1段的第一个字母设置为比文本的其余部分更粗体,更大的字体时,我会产生2个问题(在附图中都可见):
第一行下面的间距太大(我明白这是因为第一个字符可能是g,y,p,q等。
第一行下方的行现在不与下一列中的相应行对齐。
非常感谢有关如何克服这两个问题的任何建议,谢谢。
答案 0 :(得分: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中声明。
答案 1 :(得分:2)
似乎解决这个问题的唯一方法是使用一种解决方法,即为第一列创建3个帧,为W创建1个帧,为第一个句子的其余部分创建1个帧,为第一个列的其余部分创建1个帧。