6

我正在使用NSAttributedString(和NSMutableAttributeString)通过UIGraphicsBeginPDFContextToFile. 当我输出带有下划线属性的属性字符串时,当字母下降超过下划线时,下划线会被破坏。

这是显示当前输出的示例(屏幕截图):

示例下划线图像

这是构建该示例属性字符串的代码:

NSAttributedString* ftype = 
       [[NSMutableAttributedString alloc] 
                    initWithString:@"Dangerous"
                        attributes:@{ 
                                   NSParagraphStyleAttributeName:pstyle,
                                   NSFontAttributeName:[UIFont fontWithName:@"TimesNewRomanPS-BoldMT" size:48.0], 
                                   NSForegroundColorAttributeName:[UIColor redColor],
                                   NSUnderlineStyleAttributeName:[NSNumber numberWithInt:NSUnderlineStyleSingle]
                                   }
       ];

我的客户和我的偏好是下划线是连续的,理想情况下移到下降线下方。

手动绘制下划线很困难,因为我们必须在布局后计算单词的文本位置(有时文本不像上面的例子那么简单)

有没有人可以将下划线放在a)更低或b)使其连续?

提前致谢。

4

1 回答 1

5

我知道这是旧的,搜索后没有找到答案。我找到的解决方案是在您为属性传递给 NSAttributedString initWithString:attributes: 的字典中添加这个

NSExpansionAttributeName:@-0.0001f

这会缩放字形,即使使用这么少量,下划线似乎也不会被剪切(好吧,我使用的 13pt 字体没有)。虽然这似乎不是 NSExpansionAttributeName 的预期用途,但找不到其他解决方案。

于 2014-09-05T19:05:22.893 回答