在 iOS 应用程序中,我需要使用特定的字体,但每个字符都需要更高、更细,并且间距要缩小才能正确适合。是否可以通过编程方式拉伸(stretch)/挤压字体?
最佳答案
当您向 PDF 文件添加文本时,有多种方法可以影响文本的显示方式。最通用的方法(以及可能对您来说实际上足够的方法)是缩放文本矩阵:
void CGContextSetTextMatrix ( CGContextRef c, CGAffineTransform t );
正如@mkl 在评论中提到的,您可以提供一个矩阵,该矩阵将在 Y 方向放大,同时在 X 方向缩小。效果是字母在垂直方向拉伸(stretch)并在水平方向被压扁。
通常我希望您在这种情况下不必触摸间距,因为间距会像其他字符一样被“挤压”在一起。
以防万一,PDF 实际上也提供了一种更改字符间距的方法:
void CGContextSetCharacterSpacing ( CGContextRef context, CGFloat spacing );
虽然 Apple 的描述谈到要在字符之间添加“额外空间”,但 PDF 规范和我怀疑 Apple 的实现结果允许间距值既可以是正数也可以是负数。负值会使字符靠得更近。
关于iOS:创建PDF时独立修改字体高度、宽度和间距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30225043/