【问题标题】:iOS: Modify a font height, width, and spacing independently when creating PDFiOS:创建 PDF 时独立修改字体高度、宽度和间距
【发布时间】:2015-07-25 08:15:27
【问题描述】:

在 iOS 应用程序中,我需要使用特定的字体,但每个字符都需要更高、更细,并且间距要闭合以正确匹配。是否可以通过编程方式拉伸/挤压字体?

【问题讨论】:

  • 可以通过编程方式拉伸/挤压字体 - 如果您相应地更改转换矩阵,您可以在 PDF 中实现这种效果。对于高而瘦的外观,对 y 坐标使用比 x 坐标更大的缩放比例。
  • 这些答案是否回答了您的问题?如果是这样,您能否将其中一个标记为解决方案?如果不是,你能说明为什么不吗?
  • 您的答案看起来是最好的选择。我试图获得解决方案,但无法让它发挥作用。我没有太多机会,因为在使用它大约 20 分钟后,他们决定不进行修复并使用较小的字体。这看起来是一个很好的解决方案,我只是没有机会看看它是否是。

标签: ios pdf fonts


【解决方案1】:

似乎最好的选择是创建自己的自定义字体。

【讨论】:

  • 我同意,可惜我不知道怎么做,也没有时间。
  • 这是一件非常复杂的事情,我认为没有必要。
【解决方案2】:

您可以更改字体的字距(字母之间的间距)和字体的粗细/细度,但是您可能无法编辑字体的高度,除非您编辑边界框字体在里面以不同地缩放字母。

您可能还想考虑使用不同的字体...或者如果您真的是铁杆,您可以使用 photoshop/illustrator 自己编辑字体。

【讨论】:

  • 虽然字距调整会有所帮助,但这还不够。
  • 只是好奇,你用的是什么字体?
  • 我们使用的是 Andalé Mono
【解决方案3】:

当您向 PDF 文件添加文本时,有多种方法可以影响文本的显示方式。最通用的方式(并且实际上可能对您来说已经足够的方式)是缩放文本矩阵:

void CGContextSetTextMatrix ( CGContextRef c, CGAffineTransform t );

正如@mkl 的评论中提到的,您可以提供一个矩阵,该矩阵将在 Y 方向按比例放大,同时在 X 方向按比例缩小。效果将是字母垂直拉伸并水平挤压。

通常我希望在这种情况下您不必触摸间距,因为间距会像其他字符一样被“挤压”在一起。

以防万一,PDF 实际上也提供了一种更改字符间距的方法:

void CGContextSetCharacterSpacing ( CGContextRef context, CGFloat spacing );

虽然 Apple 的描述谈到要在字符之间添加“额外空间”,但 PDF 规范和我怀疑 Apple 的实施结果允许间距值是正数和负数。负值会产生使角色靠得更近的效果。

【讨论】:

    猜你喜欢
    • 2016-01-01
    • 1970-01-01
    • 2012-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多