关于PDF

1.版本号

文件头,一般以“%PDF-”开头,后接版本号(一般是1.0~1.7),特殊的PDF标准有其他的规则

2.对象

PDF由对象组成

2.1 boolean

布尔,关键词为true、false

2.2 numberic

数值,包括两种类型:integer、real

2.3 string

字符串,以“(”开头,以“)”结尾,使用“\”进行转义。支持16进制字符串,以“<”开头,以“>”结尾

2.4 name

名称,以“/”开头

2.5 array

数组,以“[”开头,以“]”结尾,通过“ ”隔开,可以存放任意object

2.6 dictionary

字典,由键值对组成,键是name,值是任意object,以“<<”开头,以“>>”结尾,通过“ ”隔开

2.7 stream

流,以“流属性字典”+”stream”开头,以”endstream结尾“,不同部分以“\n”隔开,内容可以为空

字典包括一些基本属性

2.7.1 /Length

integer,块长度,可能为空

2.7.2 /Filter

可选,name或者name array

可选值包括:

  • /ASCIIHexDecode /AHx 数据以16进制文本保存
  • /ASCII85Decode /A85 数据使用BASE85编码
  • /LZWDecode /LZW 数据使用LZW算法压缩
  • /FlateDecode /Fl 数据使用deflate算法压缩
  • /RunLengthDecode /RL 数据使用RLE算法压缩
  • /CCITTFaxDecode /CCF 数据使用CCITT Group III或IV算法压缩
  • /JBIG2Decode 数据使用JBIG2算法压缩
  • /DCTDecode /DCT 数据使用DCT算法压缩
  • /JPXDecode 数据使用JPEG 2000算法压缩
  • /Standard 数据使用口令加密
  • /Adobe.PubSec 数据使用证书加密

2.7.3 /DecodeParms

可选,Filter的参数,dictionary或dictionary array

2.7.4 /F

可选,描述外部文件,存在此参数时

2.7.5 /FFilter

可选,外部文件的Filter

2.7.6 /FDecodeParms

可选,外部文件的Filter的参数

2.7.7 /DL

可选,integer,解压缩之后的数据块长度

2.8 null

表示空值

2.9 indirect

间接对象,以“索引号 版本号 obj”开头,以“endobj”结束,任意object都能封装成一个indirect,引用indirect方式为“索引号 版本号 R”

3.交叉引用表

交叉引用表保存了所有的indirect在文件中的偏移量,可以存在多个交叉引用表

3.1 trailer

从文件末开始查找“%%EOF”、“startxref”,位于两者之间的数值是交叉引用表在文件中的偏移量

trailer dictionary:

  • /Size 交叉引用表中object的数量
  • /Root Catalog dictionary的引用
  • /Prev 可选,上一个交叉引用表的偏移量
  • /Encrypt 可选,文档的加密dictionary
  • /Info 可选,文档信息dictionary的indirect
  • /ID 可选,文档的标识,必须是包含两个string的array

3.1 xref

交叉引用表以“xref\n从第几个object开始 一共多少个object\n”开头,后面的每一行都是一个引用,格式为“偏移量 版本号 f/n”,最后加上trailer

  • f – free
  • n – in use

3.2 Catalog

3.2.1 Catalog dictionary

文档目录

  • /Type 类型,必须为/Catalog
  • /Pages 页面树根的indirect
  • /Version 可选,name,PDF的版本
  • /PageLabels 可选,数字标签树
  • /Names 可选,dictionary,名称字典
  • /Dests 可选,dictionary indirect,名称字典对应的目的地
  • /ViewerPreferences 可选,dictionary,PDF浏览器的首选项
  • PageLayout 可选,name,指定页面布局,默认/SinglePage
    • /SinglePage 一次显示一页
    • /OneColumn 显示成一列
    • TwoColumnLeft 显示成两列,左侧为奇数页
    • /TwoColumnRight 显示成两列,右侧为奇数页
    • /TwoPageLeft 一次显示两页,左边为奇数页
    • TwoPageRight 一次显示两页,右边为奇数页
  • PageMode 可选,name,如何显示页面,默认/UseNone
    • /UseNone 不显示文档大纲和缩略图
    • /UseOutlines 显示大纲
    • /UseThumbs 显示缩略图
    • /FullScreen 全屏
    • /UseOC 显示OCG
    • /UseAttachments 显示附加面板

3.2.2 页面树

用于描述页面结构

  • /Type 类型,必须为/Pages
  • /Parent 父节点,dictionary indirect
  • /Kids 子节点,array
  • /Count 子节点数,integer

3.2.3 页面对象

页面树的树叶

  • /Type 必须为/Page
  • /Parent 父级的indirect
  • /LastModified 页面修改时间
  • /Resources 此页面所需资源
  • /MediaBox 页面边界矩形
  • /Contents 页面的内容流
  • /Annots 页面的注释
  • /Metadata 页面的元数据流

3.3 线性化

PDF中一种特殊的文件结构

必须在文件的前1024个字节内包含一个线性化参数字典,必须在文件中使用hint流存储索引信息

3.3.1 线性化参数字典

  • /Linearized 线性化格式的版本号 number
  • /L 文件的长度 integer
  • /H hint流的偏移量和长度 array
  • /O 第一页页面对象编号 integer
  • /E 第一页末尾的偏移量 integer
  • /N 总页数 integer
  • /T 主交叉引用表的偏移量 integer
  • /P 可选,第一页的页码 integer

3.3.2 hint流

分为primary hint流和overflow hint流

  • /S 共享object提示表
  • /T 可选,缩略图提示表
  • /O 可选,大纲提示表
  • /A 可选,article thread提示表
  • /E 可选,named destination提示表
  • /V 可选,交互表单提示表
  • /I 可选,文档信息提示表
  • /C 可选,逻辑层次结构提示表
  • /L Page label提示表
  • /R 可选,Renditions name tree提示表
  • /B 可选,嵌入文件流提示表

4.密码

密码需要在流字典中使用/Filter指定,算法主要使用RC4、AES,支持公钥

  • /Filter 指定安全处理程序的名称,name
  • /V 可选,指定加密算法,number
    • 0 不受支持
    • 1 使用AES或RC4,密码40位
    • 2 使用AES或RC4,密码允许超过40位
    • 3 未公开算法,密码40~128位
    • 4 在文档中通过/CF、/StmF、/StrF指定规则
  • /Length 可选,密码位长,范围40~128,默认40,integer
  • /CF 可选,密码字典,name
  • /StmF 可选,流密码Filter的名称,name
  • /StrF 可选,字符串密码Filter的名称,name

4.1 /Standard

  • /R 指定版本,number
  • /O 基于作者和用户密码的32字节字符串,string
  • /U 基于用户密码的32字节字符串,string
  • /P 用户权限,integer

5. Optional Content Groups

PDF通过Optional Content Groups实现图层

  • /Type 类型,必须为/OCG
  • /Name OCG的名称,string

5.1 membership dictionary

  • /Type 类型,必须为/OCMD
  • /OCGs 控制可见状态,dictionary或array

5.2 properties dictionary

位于catalog的/OCProperties

  • /OCGs OCG的indirect,array
  • /D 初始状态,dictionary
  • /Configs 特殊情况,array

5.3 Configuration Dictionaries

  • /Name 配置的名称
  • /BaseState 初始状态,默认值/ON
    • /ON 打开所有的组
    • /OFF 关闭所有的组
    • /Unchanged 状态保持不变
  • /ON 设置要打开的组
  • /OFF 设置要关闭的组

6.图形对象

PDF提供了5种图形对象

  • 路径对象 直线、矩形、贝塞尔曲线的组合
  • 文本对象 由字符串构成
  • 外部对象 引用在内容流外部(资源)的对象
  • 内联图像对象 在内容流中的小图片
  • 着色对象 描述颜色

6.1 坐标系

默认情况下,PDF使用二维坐标

6.1.1 设备空间

设备的坐标系

6.1.2 用户空间

PDF定义的一个设备无关的坐标系,在页面流字典中定义页面的可见矩形区域/CropBox,默认情况下,X向右,Y向上,/Rotate能旋转坐标系,/UserUnit定义了坐标系的单位长度,默认单位长度为1/72inch,CTM定义了用户空间到设备空间到转换,可以通过cm变换坐标系

6.1.3 其他坐标系

  • text space
  • glyph space
  • image space
  • form space
  • pattern space

6.1.4 变换矩阵

PDF变换在齐次坐标系中进行计算,坐标使用行向量(x,y,1)表示,变换矩阵(a b c d e f)

在3D下同理

6.2 图形状态

6.2.1 设备无关的图形状态

CTMarray当前转换矩阵,从用户坐标映射到设备坐标,通过cm操作进行修改,初始值为将默认用户坐标转换为设备坐标的矩阵
clipping path(internal)当前裁剪路径,定义所有输出要裁剪的边界,初始值为页面的整个可成像部分的边界
color spacename或array当前颜色空间,选择解析颜色的空间,初始值为/DeviceGray
color(various)当前颜色,选择用于绘图的颜色,初始值为black
text state(various)绘制文本所需的参数
line widthnumber路径宽度,初始值1.0
line capinteger路径端点形状,初始值0
line joininteger路径连接样式,初始值0
miter limitnumber路径斜接的最大长度,初始值10.0,用于低于11.5度的斜接
dash patternarray和number虚线样式,默认值:一条实线
rendering intentname转换CIE颜色的方法,默认值:/RelativeColorimetric
stroke adjustmentboolean是否使用光栅化,初始值:false
blend modename或array混合模式,初始值:/Normal
soft maskdictionary或name指定蒙版形状、透明度,初始值:/None
alpha constantnumberalpha常量,初始值:1.0
alpha sourcebooleantrue alpha常量为形状 false alpha常量为透明度 初始值:false

6.2.2 设备相关的图形状态

overprintboolean设备是否支持叠印,初始值:false
overprint modenumber指定CMYK颜色空间中0的含义 0 删除分量 1 保持不变 初始值:0
black generationfunction or nameRGB转CMYK时生成黑色的算法,初始值:/installation-dependent
undercolor removalfunction or name减少CMY的分量使用K补偿,初始值:/installation-dependent
transferfunction, array, or name调整灰度或颜色分量来补偿设备的非线性响应,初始值:/installation-dependent
halftonedictionary, stream, or name用于灰色和彩色渲染的网屏,初始值:/installation-dependent
flatnessnumber渲染曲线的精度,初始值:1.0
smoothnessnumber渐变色精度,初始值:/installation-dependent

6.2.3 图形状态栈

  • q 将图形状态的副本压入栈
  • Q 将图形状态从栈中弹出并恢复

6.2.4 图形状态参数

线宽

最小单位:1设备像素

线条端点样式
线条连接样式
斜接长度

线条虚线模式

6.2.5 图形状态操作符

q保持图形状态
Q还原图形状态
a b c d e fcm当前投影矩阵
线宽w设置线宽
线条端点样式J设置线条端点样式
线条连接样式j设置线条连接样式
斜接长度M设置斜接长度
虚线数组 虚线相位d设置虚线样式
意图ri设置颜色渲染意图
平面度i设置平面度公差
字典名称gs设置图形状态参数

6.2.6 图形状态参数字典

/Typename必须为/ExtGState
/LWnumber线宽
/LCinteger线条端点样式
/LKinteger线条连接样式
/MLnumber斜接长度

6.2.7 路径构建和绘制

路径构造操作符

第一个操作符必须是m/re,S/F/B表示结束

x ym移动到(x,y)
x yl从当前点到(x,y)画一条直线
x1 y1 x2 y2 x3 y3c画一条贝塞尔曲线
x2 y2 x3 y3v画一条贝塞尔曲线
x1 y1 x3 y3y画一条贝塞尔曲线
h关闭当前子路径
x y 宽 高re画一个矩形子路径
路径绘制操作符
S画线
s关闭并画线,等同于h s
f使用非零环绕数规则填充路径
F相当于f
f*使用奇偶规则填充路径
B使用非零环绕数规则填充然后绘制线条
B*使用奇偶规则填充然后绘制线条
b关闭、使用非零环绕数规则填充然后绘制线条,等同于h B
b*关闭、使用奇偶规则填充然后绘制线条,等同于h B*
n结束路径
裁剪路径操作符
W将当前路径的相交部分作为裁剪路径,使用使用非零环绕数规则确定区域
W*将当前路径的相交部分作为裁剪路径,使用奇偶规则确定区域

6.2.8 颜色空间

颜色空间家族
  • 设备颜色空间 DeviceGray、DeviceRGB、DeviceCMYK
  • 基于CIE的颜色空间 CalGray、CalRGB、Lab、ICCBased
  • 特殊颜色空间 Pattern、Indexed、Separation、DeviceN

设置颜色空间

  • 内容流内
    • CS 设置画笔颜色空间
    • cs 设置非画笔颜色空间
  • 外部 使用/ColorSpace设置
颜色操作符
nameCS设置笔刷的颜色空间,将颜色设置为初始值 /DeviceGray/DeviceRGB/CalGray/CalRGB/Indexed 初始颜色为0 DeviceCMYK 初始颜色为[0.0 0.0 0.0 1.0] /Lab或基于ICC 所有通道初始颜色为0 /Separation/DeviceN 所有通道初始颜色为1 /Pattern 初始颜色为图章
namecs效果与CS相同,用于非笔刷
c1…cnSC设置笔刷颜色,用于设备、基于CIE、索引颜色空间 /DeviceGray/CalGray/Indexed n=1 /DeviceRGB/CalRGB/Lab n=3 /DeviceCMYK n=4
c1…cnSCN与SC相同,支持/Pattern/Separation/DeviceN/ICCBased
c1…cn nameSCN
c1…cnsc与SC相同,应用于非笔刷
c1…cnscn与SCN相同,应用于非笔刷
c1…cn namescn
grayG设置笔刷颜色,用于/DeviceGray/DefaultGray
grayg与G相同,应用于非笔刷
r g bRG设置笔刷颜色,用于/DeviceRGB/DefaultRGB
r g brg与RG相同,应用于非笔刷
c m y kK设置笔刷颜色,用于/DeviceCMYK/DefaultCMYK
c m y kk与K相同,应用于非笔刷

6.2.9 图案

包括平铺图案和着色图案

平铺图案
Typename可选,描述类型,必须为/Pattern
PatternTypeinteger图案类型,平铺图案必须为1
PaintTypeinteger图案颜色 1 彩色 2 未着色
TilingTypeinteger贴片间距 1 恒定间距 2 不失真 3 恒定间距和快速平铺
BBoxrectangle边界
XStepnumber水平间距
YStepnumber垂直间距
Resourcesdictionary资源字典
Matrixarray图案矩阵,默认值[1 0 0 1 0 0]
着色图案
Typename可选,描述类型,必须为/Pattern
PatternTypeinteger图案类型,着色图案必须为2
Shadingdictionary or stream定义渐变填充的对象
Matrixarray图案矩阵
ExtGStatedictionary图形状态字典
着色操作符
namesh根据剪切路径,绘制着色字典的形状、颜色
着色字典
ShadingTypeinteger着色类型 Function-based shadings (type 1) 使用数学函数定义颜色 Axial shadings (type 2) 使用直线定义颜色混合 Radial shadings (type 3) 使用两个圆定义颜色混合 Free-form Gouraud-shaded triangle meshes (type 4) 使用三维应用程序表示颜色和形状 Lattice-form Gouraud-shaded triangle meshes (type 5) 与type 4相同,顶点使用伪矩形格 Coons patch meshes (type 6) 从一/多个面片构建,面片由三次贝塞尔曲线指定 Tensor-product patch meshes (type 7) 与type 6相同,每个面片增加了额外的控制点
ColorSpacename or array指定颜色空间
Backgroundarray指定背景颜色
BBoxrectangle指定边界矩形
AntiAliasboolean开启抗锯齿
Type 1 (Function-Based) 
Domainarray[xmin xmax ymin ymax]指定矩形坐标域
Matrixarray指定变换矩阵
Functionfunction着色函数 x,y → 颜色(c1…cn) x,y → 颜色数组
Type 2 (Axial) 
Coordsarray[x0 y0 x1 y1]指定轴的起点和终点
Domainarray[t0 t1]指定变量的范围,默认值:[0.0 1.0]
Functionfunction着色函数 t → 颜色(c1…cn) t → 颜色数组
Extendarray指定是否将着色延伸到轴的起点和终点之外,默认值:[false false]
Type 3 (Radial) 
Coordsarray[x0 y0 r0 x1 y1 r1]指定两个圆
Domainarray[t0 t1]指定变量的范围,默认值:[0.0 1.0]
Functionfunction着色函数 t → 颜色c1…cn t → 颜色数组
Extendarray指定是否将着色延伸到两个圆之外,默认值:[false false]
Type 4 (Free-Form Gouraud-Shaded Triangle Meshes)
BitsPerCoordinateinteger每个顶点坐标使用位数,有效值为:1、2、4、8、12、16、24、32
BitsPerComponentinteger每个颜色通道使用位数,有效值为:1、2、4、8、12、16、24、32
BitsPerFlaginteger每个顶点的边标准的位数
Decodearray[xmin xmax ymin ymax c1,min c1,max … cn,min cn,max]指定顶点坐标映射到颜色通道的值范围
Functionfunction着色函数 t → 颜色c1…cn t → 颜色数组
Type 5 (Lattice-Form Gouraud-Shaded Triangle Meshes)
BitsPerCoordinateinteger每个顶点坐标使用位数,有效值为:1、2、4、8、12、16、24、32
BitsPerComponentinteger每个颜色通道使用位数,有效值为:1、2、4、8、12、16、24、32
BitsPerFlaginteger每个顶点的边标准的位数,大于等于2
Decodearray[xmin xmax ymin ymax c1,min c1,max … cn,min cn,max]指定顶点坐标映射到颜色通道的值范围
Functionfunction着色函数 t → 颜色c1…cn t → 颜色数组
Type 6 (Coons Patch Meshes) / Type 7 (Tensor-Product Patch Meshes)
BitsPerCoordinateinteger每个顶点坐标使用位数,有效值为:1、2、4、8、12、16、24、32
BitsPerComponentinteger每个颜色通道使用位数,有效值为:1、2、4、8、12、16、24、32
BitsPerFlaginteger每个顶点的边标准的位数
Decodearray[xmin xmax ymin ymax c1,min c1,max … cn,min cn,max]指定顶点坐标映射到颜色通道的值范围
Functionfunction着色函数 t → 颜色c1…cn t → 颜色数组

6.2.10 外部对象

  • 图片
  • 表单
  • PostScript
nameDo绘制指定的XObject

6.2.11 图像

  • 外部图像
  • 内联图像
图像字典
Typename可选,必须为/XObject
Subtypename必须为/Image
Widthinteger图像宽度
Heightinteger图像高度
ColorSpacename or array颜色空间
BitsPerComponentinteger每个颜色通道位数
Maskstream or array图像掩码
备选图像
Imagestream备选图像
DefaultForPrintingboolean指示打印的默认版本
OCdictionaryoptional content group或optional content membership dictionary
遮罩图像
  • 图片字典的/ImageMask
  • 图片字典的/Mark
  • /Mark指定颜色范围
内联图像
BI内联图像的开始
ID内联图像数据的开始
EI内联图像的结束
BI
...键值对...
ID
...图像数据...
EI
BitsPerComponentBPC
ColorSpaceCS
DecodeD
DecodeParmsDP
FilterF
HeightH
ImageMaskIM
Intent
InterpolateI
WidthW
DeviceGrayG
DeviceRGBRGB
DeviceCMYKCMYK
IndexedI

6.2.12 表单XObject

用途

  • 页面模板
  • 图像元素
  • Group XObject
  • Reference XObject
表单字典
Typename可选,必须为/XObject
Subtypename必须为/Form
FormTypeintegerXObject类型,有效值:1
BBoxrectangle边界
ResourcesdictionaryXObject所需资源
Group XObject
Typename可选,必须为/Group
Sname子类型,有效值:/Transparency
Reference XObjects
Ffile specification要包含的PDF文件
Pageinteger or text string文件的页数或者页面标签
IDarray文件标识符

6.3 文本

包括:

  • 文本状态
  • 文本对象和操作符
  • 文本数据结构

6.3.1 字体的组织与使用

展现文本
BT
/F13 12 Tf
288 720 Td
(ABC) Tj
ET
  1. BT 文本输出开始
  2. Tf 文本字体
  3. Td 文本位置
  4. Tj 文本内容
  5. ET 文本结束

6.3.2 文本状态参数和操作符

文本状态参数
Tc字间距
Tw词符间距
Th水平缩放
Tl行间距
Tf文本字体
Tfs文本字体大小
Tmode文本渲染模式
Trise文本上下标
TkKnockout
文本状态操作符
charSpaceTc设置字间距
wordSpaceTw设置词间距
scaleTz设置水平缩放
leadingTL设置行间距
font sizeTf设置字体
renderTr设置渲染模式
riseTs设置文本上下标
字间距

水平书写,Tc为正数,距离变大,而对于垂直书写,Tc为负数,距离变大

词间距

水平书写,Tw为正数,距离变大,而对于垂直书写,Tw为负数,距离变大

水平缩放

百分比数值,100表示正常宽度,高于100,放大字形,低于100,缩小字形

行间距
文本渲染模式
0填充
1描边
2填充+描边
3隐藏
4填充+裁剪
5描边+裁剪
6填充+描边+插件
7裁剪
文本上下标
(This text is ) Tj 5 Ts (superscripted) TjThis text is superscripted
(This text is ) Tj –5 Ts (subscripted) TjThis text is subscripted
(This ) Tj –5 Ts (text )Tj 5 Ts (moves ) Tj 0 Ts (around) TjThis text moves around

6.3.3 文本对象

  • Tm 文本矩阵
  • Tlm 文本行矩阵
  • Trm 文本渲染矩阵
文本定位操作符
tx tyTd下一行开头与当前行开头的偏移量(tx, ty)
tx tyTD等效于 -ty TL tx ty Td
a b c d e fTm设置Tm、Tlm矩阵
T*等效于 0 Tl Td
文本显示操作符
stringTj显示字符串
string等效于 T* string Tj
aw ac string等效于 aw Tw ac Tc string ‘
arrayTJ显示一/多个文本字符,如果是字符串,则显示字符串,如果是数字,则调整Tm

6.3.4 字体数据结构

Type 0/Type0由CIDFont组成的字体
Type 1/Type1使用Type 1字体
/MMType1multiple master font
Type 3/Type3使用PDF内置操作符定义的字体
TrueType/TrueType使用TrueType字体
CIDFont/CIDFontType0基于Type 1的CIDFont
/CIDFontType2基于TrueType的CIDFont

6.3.5 简单字体

Type 1
Typename必须为/Font
Subtypename必须为/Type1
BaseFontname字体的PostScript名称
FirstCharinteger字体的Widths数组中第一个字符的编码
LastCharinteger字体的Widths数组中最后一个字符的编码
Widthsarray每个字符编码的字形宽度数组
FontDescriptordictionary字体描述字典
标准Type 1字体
  • Times−Roman
  • Times−Bold
  • Times−Italic
  • Times−BoldItalic
  • Helvetica
  • Helvetica−Bold
  • Helvetica−Oblique
  • Helvetica−BoldOblique
  • Courier
  • Courier−Bold
  • Courier−Oblique
  • Courier−BoldOblique
  • Symbol
  • ZapfDingbats
Multiple Master Fonts
  • /Subtype为/MMType1
  • /BaseFont变量名中的空格替换成_
TrueType
  • /Subtype为/TrueType
  • /BaseFont 如果TrueType的“name”表包含PostScript名称,则使用该名称,如果“name”表中没有这样的条目,则PostScript名称应来自主机操作系统中对应字体的名称。在Windows系统中,名称应基于LOGFONT结构中的lfFaceName字段,在Mac OS中,名称应读取FOND 的名称,如果名称中包含空格,则应删除空格。
Type 3
Typename必须为/Font
Subtypename必须为/Type3
FontBBoxrectangle边界
FontMatrixarray字体矩阵
CharProcsdictionary键为字符名,值为内容流
Encodingname or dictionary编码字典
Resourcesdictionary资源字典
Type 3字体操作符
wx wyd0设置符号宽度信息
wx wy llx lly urx uryd1设置字形的宽度和边界框
编码字典
Typename可选,必须为/Encoding
BaseEncodingname基本编码

6.3.6 复合字体

CIDSystemInfo字典
RegistryASCII string字体作者
OrderingASCII string注册表中字符集合的名称
Supplementinteger字符集合的补充编号
CIDFonts
Typename必须为/Font
Subtypename/CIDFontType0或/CIDFontType2
BaseFontnameCIDFont的PostScript名称
CIDSystemInfodictionary包含定义CIDFont字符集合的字典
FontDescriptordictionary字体描述符
嵌入式CMap
Typename必须为/CMap
CMapNamenameCMap的PostScript名称
CIDSystemInfodictionary包含定义CIDFont字符集合的字典
WModeintegerCIDFont的写入模式 0 水平 1 垂直
CMap操作符
  • CMap以begincmap开始,以endcmap结束
  • usecmap合并指定CMap文件
  • codespace ranges以begincodespacerange开始,以endcodespacerange结束
  • usefont指定字体编号,在pdf中必须为0
  • beginbfchar和endbfchar定义单个输入字符代码到相关字体中字符代码或字符名称的映射
  • begincidchar和endcidchar定义了单个输入字符代码到相关CIDFont中CID的映射,begincidrange and endcidrange是范围输入
  • beginnotdefchar、endnotdefchar、beginnotdefrange和endnotdefrange定义从未定义字符代码到CID的映射
Type 0
/Typename必须为/Font
/Subtypename必须为/Type0
/BaseFontname字体的PostScript名称
/Encodingname or streamCMap
/DescendantFontsarrayCIDFont字典

6.3.7 字体描述符

Typename必须为/FontDescriptor
FontNamename字体的PostScript名称
Flagsinteger字体特征flag
FontBBoxrectangle字体边界
ItalicAnglenumber倾斜角度
字体描述符Flags
1FixedPitch所有字形都具有相同的宽度
2Serif使用衬线
3Symbolic字体包含Adobe标准拉丁字符集之外的字形
4Script字形类似草书手写体
6Nonsymbolic字体使用Adobe标准拉丁字符集或其子集
7Italic斜体
17AllCap字体不包含小写字母
18SmallCap字体包含大小写字母
19ForceBold在非常小的字号下使用额外像素绘制粗体字形

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注