Bre*_*els 5 pdf fonts postscript
我很难产生使用14种标准PDF字体的PDF。让我们以Times-Roman为例。
我创建了一个Font类型的词典Type1,具有BaseFont设置为Times-Roman。如果我省略了字典的Encoding条目Font,或者添加了Encoding不带字典的字典BaseEncoding,则PDF查看器应用程序应使用字体的内置编码。对于Times-Roman,这是AdobeStandardEncoding。
这对于ASCII字符来说很好用。但是,并非所有PDF查看器都能正确显示诸如“ fi”连字(AdobeStandardEncoding代码174)之类的更奇特的东西:
我尝试过的所有其他PDF查看器都正确显示了“ fi”连字。它们还会正确显示€符号,该符号还会使用字典中的Differences数组进行映射Encoding(因为AdobeStandardEncoding中不包含该符号):
打开Adobe Reader的“ 文档属性”窗口显示:
Times-Roman
Type: Type1
Encoding: Custom
Actual Font: Times-Roman
Actual Font Type: TrueType
Run Code Online (Sandbox Code Playgroud)
我怀疑使用TrueType字体而不是Type1字体的事实可能与问题有关。PDF规范:
StandardEncoding Adobe标准拉丁文本编码。这是在类型1拉丁文字字体程序中定义的内置编码(但 通常在TrueType字体程序中不是)。
它还说WinAnsiEncoding和MacRomanEncoding 可以与TrueType字体一起使用。那么我们应该避免对标准的14种字体使用内置的或StandardEncoding吗?其效果似乎是不确定的。似乎Adobe Reader不会费心在所使用的TrueType字体中执行从字形名称到字形的正确映射。
Differences使用Win或Mac编码时提供数组会产生正确的结果吗?由于这些代码点映射到Type1 / Postscript字形名称,因此没有直接链接到TrueType字形。
编辑,我觉得字体描述符标志对于这些标准字体可能很重要。到目前为止,我将所有字体的标志设置为4,这对于True / OpenType字体似乎工作正常。
原来,Flags在FontDescriptor字典中是很重要的。对于 Times,需要设置非符号标志(位 6)。Times 实际上是使用 TrueType 字体排版的事实与此无关。
要使用字体的内置编码,不应设置EncodingType1Font字典的条目。如果Encoding字典BaseEncoding包含非空Differences数组,则只能添加字典(省略),否则 Adobe Reader 会出错。
采取这些预防措施后,生成的 PDF 可以在上面列出的所有 9 个查看器应用程序上正确显示。
| 归档时间: |
|
| 查看次数: |
3314 次 |
| 最近记录: |