【问题标题】:Font metrics for the "base 14" fonts in the PDF specificationPDF 规范中“base 14”字体的字体规格
【发布时间】:2023-03-08 07:49:01
【问题描述】:

我一直在编写软件来解析 PDF 中的内容,特别是分解成区域的文本。为此,我需要字体度量,例如字形位移、字体范围的上升、下降和字形边界框等。简而言之,应该是 PDF 中字体定义的 FontDescriptor 字典中可用的度量类型。

不幸的是,对于基本字体是“base 14”标准字体集之一的字体,不必包含 FontDescriptor。

我在哪里可以找到或如何生成基本 14 种字体的字体指标?

【问题讨论】:

    标签: pdf fonts ghostscript


    【解决方案1】:

    我确信这些字体指标可以广泛使用。例如,在我的 Ubuntu 中,它们位于 /usr/share/fonts/type1/gsfonts/ 中——也许你不认识某些字体名称,但它们在度量上与 Helvetica 等兼容。

    【讨论】:

      【解决方案2】:

      在 Linux 上(也可能在 Mac OS X 上)您可以轻松使用 font2afm 脚本,该脚本从 PostScript 或 TrueType 字体(.pfa、.pfb、.ttf、.otf)创建字体规格文件。

      如果您没有可用的原始 Base 14,您可以使用 Ghostscript 提供的克隆。这些克隆可能使用完全不同的字体名称,但它们只能通过对每个字形使用完全相同的指标来克隆。

      这是一个 Ghostscript 命令行,它列出了所有基本的 14 个字体名称:

      窗口:

      gswin32c.exe -q -dNODISPLAY -dSAFER -c "systemdict /.standardfonts get == quit"
      

      Linux/Unix/Mac:

      gs -q -dNODISPLAY -dSAFER -c "systemdict /.standardfonts get == quit"
      

      在最新版本的 Ghostscript 中,克隆字体的文件名通常与克隆的字体名匹配。较旧的 GS 版本可能使用了更神秘的命名约定。以下是克隆字体的字体名称映射列表:

      +===============+========================+==========================+
      | Base 14 name  | Ghostscript name       | Font filename (older GS) |
      +===============+========================+==========================+
      | Courier       |                        |                          |
      |    standard   | NimbusMonL-Regu        | n022003l.pfb             |
      |    bold       | NimbusMonL-Bold        | n022004l.pfb             |
      |    italic     | NimbusMonL-ReguObli    | n022023l.pfb             |
      |    bolditalic | NimbusMonL-BoldObli    | n022024l.pfb             |
      +---------------+------------------------+--------------------------+
      | Helvetica     |                        |                          |
      |    standard   | NimbusSanL-Regu        | n019003l.pfb             |
      |    bold       | NimbusSanL-Bold        | n019004l.pfb             |
      |    italic     | NimbusSanL-ReguItal    | n019023l.pfb             |
      |    bolditalic | NimbusSanL-BoldItal    | n019024l.pfb             |
      +---------------+------------------------+--------------------------+
      | Times-Roman   |                        |                          |
      |    standard   | NimbusRomNo9L-Regu     | n021003l.pfb             |
      |    bold       | NimbusRomNo9L-Medi     | n021004l.pfb             |
      |    italic     | NimbusRomNo9L-ReguItal | n021023l.pfb             |
      |    bolditalic | NimbusRomNo9L-MediItal | n021024l.pfb             |
      +---------------+------------------------+--------------------------+
      | Symbol        | StandardSymL           | s050000l.pfb             |
      +---------------+------------------------+--------------------------+
      | ZapfDingbats  | Dingbats               | d050000l.pfb             |
      +---------------+------------------------+--------------------------+
      

      您可以从网络上的许多地方下载 Ghostscript 字体(例如来自 here)。然后运行 ​​f.e.这个命令:

      font2afm StandardSymL.ttf
      

      生成的文件StandardSymL.afm 应包含标准 .afm 格式的 Symbol 字体的字体规格......

      【讨论】:

      • 在我的机器上,字体的名称略有不同。我通过查找 ghostscript Fontmap 文件(在 /usr/share/ghostscript/9.54.0/Resource/Init 中)找到了新名称。
      【解决方案3】:

      【讨论】:

        猜你喜欢
        • 2020-08-30
        • 2015-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多