pdf字体研究

本文深入探讨PDF文档中字体种类,包括Type1、TrueType、Type3、Type0和OpenType等,详解FontSubsets和Type0字体的概念及其在PDF中的应用,以及字体嵌入原理,确保跨平台文字显示一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 自己研究了pdf规范,做一个总结。

一. pdf文档里面字体种类:

1)Type1(还包括扩展字体MMType1);2)TrueType(这种类型字体文件的扩展名是.ttf );3)Type3;4)Type0(composite fonts)5)OpenType

注意:pdf支持两个字体相关的子类:CIDFonts和CMaps;但是CIDFonts不能直接使用,只能作为Type0字体的组件使用;

二. Font Subsets

       对于字体Type1和TrueType,可以存在Font Subsets,当存在Font Subsets时,且BaseFont为”六位随机字母+“这样的前缀时,将会存在font descriptor,也就是描述字体的stream存在,这种情况下就可以判定字体是嵌入的,不受打开工具及平台的影响。

例如:下面就是一个TrueType字体的 Font Subsets的FontName:

三  Type0字体

         Type0是一个包含类字体对象CIDFont的字体,CIDFonts相当于 Type0的descendent,在pdf文档中的关键字为DescendantFonts,当对象存在DescendantFonts关键字时,表示此文字的字体是Type0类型:

 CIDFont又可以分为:CIDFontType0和CIDFontType2。

其中CIDFontType0的字体描述是基于Adobe Type 1;

CIDFontType2的字体描述是基于TrueType;

例如:在pdf文档中可以看到 CIDFont的分类:

四 pdf字体嵌入:

原理:pdf文档字体嵌入方式:以PDF stream的形式嵌入,这样的stream对象也叫做font file,从而使得pdf文字不受打开工具以及操作系统自带字体的影响。查看pdf规范文档可得不同的fontFile对应的字体类型:

注意:

1) Font Subsets存在的情况下,并且BaseFont的FontName是按照规则的前缀时;

2)DescendantFonts存在的情况下,由于对象之间的包含关系,记得多次判断。

参考书籍:《pdf_reference.pdf》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值