gpt4 book ai didi

pdf - 14种标准PDF字体和字符编码

转载 作者:行者123 更新时间:2023-12-01 19:33:50 25 4
gpt4 key购买 nike

我在生成使用 14 种标准 PDF 字体的 PDF 时遇到困难。我们以 Times-Roman 为例。

我创建了一个 Type1 类型的 Font 字典,并将 BaseFont 设置为 Times-Roman。如果我省略 Font 字典中的 Encoding 条目,或者添加未设置 BaseEncodingEncoding 字典,则PDF 查看器应用程序应使用字体的内置编码。对于 Times-Roman,这是AdobeStandardEncoding

这对于 ASCII 字符来说效果很好。但是,所有 PDF 查看器都无法正确显示“fi”连字(AdobeStandardEncoding 代码 174)等更奇特的内容:

  • Adobe Reader 显示 ® (unicode 索引 174)代表 Times-Roman 和 Ă 代表 Times-Italic
  • SumatraPDF (wine) 两种字体均显示 ®
  • Mozilla 的 PDF.js 显示两种字体的“AE”连字

我尝试过的所有其他 PDF 查看器都可以正确显示“fi”连字。它们还正确显示 € 符号,该符号还使用 Encoding 字典中的 Differences 数组进行映射(因为它不包含在 Adob​​eStandardEncoding 中):

  • Apple 预览/浏览
  • GhostScript
  • PDF-XChange Viewer( Wine )
  • 福昕阅读器( Wine )
  • Chromium 的内部 PDF 查看器
  • Evince(自制软件)

打开 Adob​​e Reader 的文档属性窗口显示:

Times-Roman
Type: Type1
Encoding: Custom
Actual Font: Times-Roman
Actual Font Type: TrueType

我怀疑使用 TrueType 字体而不是 Type1 字体可能与该问题有关。 PDF 规范:

StandardEncoding Adobe standard Latin-text encoding. This is the built-in encoding defined in Type 1 Latin-text font programs (but generally not in TrueType font programs).

它还表示 WinAnsiEncodingMacRomanEncoding 可以与 TrueType 字体一起使用。那么我们是否应该避免使用内置或 StandardEncoding 标准 14 字体呢?它的影响似乎是不确定的。 Adobe Reader 似乎并不费心执行从字形名称到所使用的 TrueType 字体中的字形的正确映射。

使用 Win 或 Mac 编码时提供 Differences 数组会产生正确的结果吗?由于这些映射代码点到 Type1/Postscript 字形名称,因此没有到 TrueType 字形的直接链接。

编辑 嗯,我有一种感觉,字体描述符标志对于这些标准字体可能很重要。到目前为止,我将所有字体的标志设置为 4,这对于 True/OpenType 字体似乎工作得很好。

最佳答案

事实证明,FontDescriptor 字典中的Flags 很重要。对于 Times,需要设置Nonsymbolic 标志(位 6)。事实上 Times 实际上是使用 TrueType 字体排版的,这与此无关。

要使用字体的内置编码,不应设置 Type1 Font 字典的 Encoding 条目。如果 Encoding 字典包含非空 Differences 数组,则只能添加它(省略 BaseEncoding),否则 Adob​​e Reader 将出错。

采取这些预防措施,生成的 PDF 可以在上面列出的所有 9 个查看器应用程序上正确显示。

关于pdf - 14种标准PDF字体和字符编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36486716/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com