【问题标题】:How do I calculate PDF leading from TTF?如何计算从 TTF 开始的 PDF?
【发布时间】:2010-10-23 03:13:29
【问题描述】:

PDF 规范定义了一个名为'(撇号)的文本运算符。定义是它写出一些文本,并根据当前的前导状态移动到下一行。可以使用 TL 运算符设置当前领先状态。如果您知道它们应该垂直间隔多少,这使得编写文本行变得非常容易:

16 里拉 /F1 12 时间 (第 1 行)' (第 2 行)' (第 3 行)' (第 4 行)'

我没有为此使用任何库,因为这是一个学习练习。我编写了一些代码来直接解析 TTF 文件并提取字符宽度,以及 PDF FontDescriptor 字典所需的其他项目。

我一直在阅读 TTF 文件格式规范,试图找出行高的位置或如何计算它,但我没有运气。

假设我有以下给定:

  • 字体大小。
  • TTF 文件中的所有相关值(Ascender、Descender、Line Gap 等)

我如何计算从 TTF 开始的 PDF?

编辑

TTF 文件中的 Line Gap 值似乎有助于计算 PDF 行距,但某些字体并未为其提供合理的值(例如,Windows 上的 Courier New)。

【问题讨论】:

  • +1 我不知道答案是什么,但我也很想知道,因为我已经完成了手动输出 PDF 的分享。

标签: pdf truetype


【解决方案1】:

我对字体一无所知,也没有明确的答案,但我想我会发布一些关于我找到的关于该主题的一些信息的链接。

Microsoft OpenType Specification(参见底部的基线到基线距离部分)将行距定义为等于 LineGap。

Apple Text System Overview 声明:

在排版期间在字体行之间添加的空间称为前导,在传统金属字体页面布局中用于此目的的铅块之后。 (前导有时也称为 linegap。)

所以,根据这些链接,LineGap 不只是用来计算领先,实际上是领先。

【讨论】:

  • Windows 上的 Courier New 等字体的 Line Gap 为 0,你处理过吗?
  • 很好的研究,但据我了解,在 PDF 用语中,领先实际上定义为从前一个基线到当前基线的距离。也就是说,你可以直接使用OpenType规范中的baseline-to-baseline距离计算。
【解决方案2】:

我不完全确定您要做什么,但听起来您想在 pdf 文档中嵌入真字体。如果是这样,你为什么不直接使用乳胶?

http://www.radamir.com/tex/ttf-tex.htm

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-08
    • 1970-01-01
    • 1970-01-01
    • 2021-09-13
    • 1970-01-01
    • 2020-07-20
    • 2018-02-13
    • 2010-11-09
    相关资源
    最近更新 更多