5

概述

我正在使用自定义字体 Trade Gothic 的 iPad 应用程序中生成四页 PDF 文档。它正确嵌入到应用程序中,看起来很棒。

但是,该应用程序的一部分是通过电子邮件将 PDF 作为留下来的。此发送的文件将所有字体显示为默认 sans 类型,在一些系统上,我收到错误无法找到或创建字体“RVYPRT+TradeGothicLTStd-Light”。某些字符可能无法正确显示或打印。

我正在使用 UIKit 框架生成 PDF。这是使用相同过程的教程:http: //www.ioslearner.com/generate-pdf-programmatically-iphoneipad/

我的问题

如何将字体嵌入到 PDF 输出中,以便在发送后正确呈现为自定义字体而不是默认类型。

提前致谢!

更新 1:我发现了类似的未回答问题

IOS在PDF中嵌入字体

iOS Quartz 在 pdf 中嵌入字体

更新 2:有关字体的更多信息

字体http://store1.adobe.com/cfusion/store/html/index.cfm?store=OLS-US&event=displayFont&code=TRDQ10003000是一种 OpenType 字体,并且允许通过许可证嵌入。

此外,使用的默认字体是标准字体。

如果 PDF 文件中缺少某些字体,Adobe Acrobat 和 Adob​​e Reader 将自动尝试使用这些程序中内置的多种主字体之一来模拟丢失的字体。这样,文档将不会完全按照设计者的要求呈现,但至少文本不会重排。用于此的 Multiple Master 字体是:Adobe Serif MMAdob​​e Sans MM

来源: http: //www.prepressure.com/pdf/basics/fonts

更新 3: PDF 中引用了字体,但未嵌入

该应用程序似乎正在尝试嵌入字体,但它们没有被正确嵌入。这是 File -> Document Properties 下嵌入字体的屏幕截图:

在此处输入图像描述

我看到的第一个问题是字体被列为 Type 1,而它实际上是 OpenType 字体。正如预期的那样,“实际字体”是 Sans MM(找不到嵌入字体时使用的字体。)

更新 4:在另一个 PDF(使用 Adob​​e,而不是 iPad 应用程序生成)中,所需的字体被嵌入为子集。我不确定,但这让我相信应该可以以编程方式做同样的事情。

在此处输入图像描述

4

2 回答 2

8

根据其许可,您正在使用且“看起来很棒”的字体TradeGothic不允许嵌入到 PDF(或其他)文档中。

(为什么字体设计师会想要这样做超出了我的小脑袋。毕竟他们出售了将其用于文档的许可证,不是吗?——以及为什么 [正如我最近亲身经历的那样] 大公司会设计他们的企业形象围绕着一种这样的字体,但是“太便宜”并且只购买了不允许嵌入的字体许可证,因此迫使他们的员工向他们的客户发送糟糕的 PDF 只会让这个故事更加疯狂......)

从您的第二次更新中可以看出,您已经发现了这一事实。

您似乎误解的是“文档属性”屏幕截图:

  1. OpenType 字体有不同的风格。有些使用(内部)TrueType 整形技术,有些使用 Type1/PostScript 方法。这就解释了为什么您看到它被声明为 Type1。
  2. 不,该应用程序不会 尝试嵌入字体(但这样做不正确)”。似乎很尊重字体文件中的“不嵌入”标志,它设置了这个限制。
  3. 那些发出“无法找到或创建字体 'RVYPRT+TradeGothicLTStd-Light' 的警告。某些字符可能无法正确显示或打印”的 PDF 接收系统并没有错。他们简直...

    • ...没有在本地安装该字体,或者
    • ...没有可用的 Adob​​e Multiple Master 字体技术,或者
    • ...不要使用 Adob​​e Reader 或 Acrobat(其中包含MM 内容)。

我的简单建议,多年来在我的客户面前重复了数百次:

  1. 始终在 PDF 中嵌入所有字体。(除非你有充分的理由不这样做,并且知道后果。)
  2. 永远不要购买(或使用)不允许嵌入的字体。(如果您不知道如何检查您当前的字体,请针对该问题获得一些专业建议。)

更新:

基本上,“嵌入标志”可以表示四个(重要的)不同级别的限制。(实际上,这个标志只适用于 TrueType 和 OpenTypes,而不适用于更老式的 PostScript Type1 字体。从技术上讲:这个标志的名称是fsType,它是一个位掩码,它包含在OS/2 TrueType 和 OpenType 字体表....)

这些级别指定类型铸造厂允许在文档中嵌入字体的位置、时间和目的(不仅是 PDF,还包括 Word、OpenOffice 或任何其他文档类型:

  1. 不允许嵌入。
    您可以在安装了字体的系统上创建一个电子文档,您可以对其进行编辑和查看。啊,您也可以打印它:Adobe PostScript 打印机驱动程序将在 PostScript 文件中包含打印所需的所有字体元素。但就是这样。
  2. 预览和仅打印嵌入。
    文档嵌入了字体,并且可以使用原始字体查看文档(即使在文档接收系统上)。但是你不能用它做很多其他事情(例如没有文档编辑)。它使整个文档只读+打印。可以将内容复制并粘贴到另一个文档中,但它不会使用(甚至传输)受限字体。
  3. 可编辑嵌入。
    可以编辑文档(在接收系统上)。但是,此操作的确切成功取决于是否嵌入了完整字体或子集。如果您的子集意外不包含“i”,则不能添加评论“白痴!” 到文件,你可能需要限制自己“傻瓜!”....
  4. 可安装嵌入。
    这里没有限制。嵌入的字体甚至可以被提取并安装在接收系统上。(曾经有一段时间,如果接收方计算机上的 Word 文档中没有任何嵌入文档的字体,Microsoft 会自动安装它。)然而,这个选项没有实际意义:没有“常规”应用程序提供任何一种提取方法或安装嵌入式文档字体。

字体的“嵌入”标志可能表明还有两个(不太重要的)限制:

  • 不允许子集(上述其他限制可能独立适用。)
  • 仅位图嵌入(不能嵌入轮廓数据。)

Adobe 软件在许多情况下,当字体本身根本不包含fsType标志时,会将这种字体视为允许仅打印 + 预览嵌入的字体。

有关此主题的详细信息,请参阅有关“第三方开发人员的字体嵌入指南”的 Adob​​e 白皮书

于 2012-07-06T22:46:30.857 回答
0

是否可以将嵌入的字体更改为允许嵌入的另一种字体?

于 2014-06-17T16:00:59.537 回答