我正在使用 CoreText 渲染多列文本。但是,当我将第一段的第一个字母设置为比文本其余部分更大的粗体字体时,我遇到了 2 个问题(均在附图中可见):
第一行下方的间距太大(我理解这是因为第一个字符可能是 g、y、p、q 等。
第一行下方的行现在不与下一列中的相应行对齐。
任何有关如何克服这两个问题的建议将不胜感激,谢谢。
最佳答案
根据文档 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);
公平地说,文档称它可在操作系统 v10.5 及更高版本中使用。
kCTParagraphStyleSpecifierMaximumLineHeight
:
框架中任何行将占据的最大高度,无论字体大小或任何附加图形的大小如何。超过此高度的字形和图形将与相邻的线重叠。最大高度 0 表示没有行高限制。该值始终为非负数。
类型:CGFloat。
默认值:0.0。
应用程序:CTFramesetter。
适用于 Mac OS X v10.5 及更高版本。
在 CTParagraphStyle.h 中声明。
关于iphone - CoreText 中的行距和段落对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5312962/