Font and PDF
1. 独立存在的Font文件
有三类:
Type 1 Font
TrueType Font
OpenType Font
Type 1
是由Adobe开发的,它是基于PostScript的Font,它通常由两个分开的文件来描述:
1. Adobe Font Metrics[Adobe]/Printer Font Metrics[Microsoft]
用来描述每个Glyph占用的空间大小
2. PostScript Font Binary
用来完成每个Glyph的绘制工作
有14个特殊的Type 1字体被选择出来作为PDF默认支持的字体,它们被称为Standard Type1 Fonts,每个PDF viewer都应该默认提供这14个字体,因此使用这些字体的PDF文件无需将字体文件内嵌到PDF文件中,减少了PDF文件的尺寸。
TrueType
就由Apple开发,用来对抗Type 1字体的,不过这种字体类型刚刚发布,Type 1的标准也公开了。
TrueType是Windows操作系统的标准字体文件。
关于Type 1与TrueType字体优劣的比较,参考:http://www.pdf-tech.com/?p=981
Type1使用三次贝塞尔曲线来描述字形,TrueType则使用二次贝塞尔曲线来描述字形。所以Type1的字体比TrueType字体更加 精确美观。一个误解是:Type1字体比TrueType字体占用空间多。这是因为同样描述一个圆形,二次贝塞尔曲线只需要8个关键点和7段二次曲线;而 三次贝塞尔曲线则需要12个关键点和11段三次曲线。然而实际情况是一般来说 Type1比TrueType要小10%左右。这是因为对于稍微复杂的字形,为了保持平滑,TrueType必须使用更多的关键点。由于现代大部分打印机 都是使用PDL作为打印描述语言,所以True1字体打印的时候不会产生形变,速度快;而TrueType则需要翻译成PDL,由于曲线方程的变化,还会 产生一定的形变,不如Type1美观。
这么说来,Type1应该比TrueType更具有优势,为什么如今的计算机上TrueType反而比Type1使用更广泛呢?
这是因为第一:Type1由于字体方程的复杂,所以在屏幕上渲染的时候,花费的时间多,解决方案是大部分Type1字体嵌入了点阵字体,这样渲染快, 但是边缘不光滑,比较难看。很多PS文档和PS转换的PDF文档都是这样,在计算机上浏览的时候字体很难看,但是打印出来很美观。TrueType则渲染 比较快,可以平滑的显示在屏幕上,看上去很美观。
第二个原因是Type1的高额使用费,使得Type1没有被所有的操作系统所支持。Windows家族只有OS/2和windows 2000及之后的版本从操作系统级别开始支持Type1。由于这个问题,Adobe只好在其所有的产品中嵌入Adobe Type Manager(ATM)作为渲染引擎。
总结一下,就是Type 1字体更加精细准确,非常适合支持PDL的打印机设备; TrueType则更加适合在屏幕上渲染,快而且漂亮。
OpenType Font
OpenType则是Type1与TrueType之争的最终产物。1995年,Adobe公司和Microsoft公司开始联手开发一种兼容 Type1和TrueType,并且真正支持Unicode的字体,后来在发布的时候,正式命名为OpenType。OpenType可以嵌入Type1 和TrueType,这样就兼有了二者的特点,无论是在屏幕上察看还是打印,质量都非常优秀。
OpenType是一种更加兼容的方式,兼容上面两种字体;除此之外,支持Unicode也是其最大的亮点。
包含Type 1的OpenType文件为.otf后缀;包含TrueType的OpenType文件为.ttf后缀。
OpenType还可以包含TrueType字体的集合,即.ttc文件。
2. PDF支持的Font类型
PDF除了支持Type 1和TrueType类型字体外,还支持一种由PDF自己的Graphics Operator描述的字体类型,命名为Type 3。
此外,为了支持超大字符集的语言,比如中文字符集,PDF还支持一种Type 0字体,称为Composite Font。
Simple Font只支持0-255这个范围的character encoding,而Composite Font的CMap可以支持0-65535这个范围的character encoding。
Composite Font包含两部分组件: CIDFont和CMap。
CIDFont: Character Identifier Font
描述Glyph绘制参数的字体文件
CMap:Character Map, aka Character Encoding, aka Code Page
Character与Glyph之间的映射关系
CMap是一种很有效的方式,它相当于提供了一种临时的,小型的code page,以建立真正在PDF文件中用到的字符与字体文件之间的关系,比如WinAnsi,以及Identity_H都是一种character encoding,但是使用Indentity_H,就可以有效地减小内嵌字体的尺寸。
转载于:https://www.cnblogs.com/long123king/p/3940858.html
Font and PDF相关推荐
- 使用Python的PyPD创建PDF文档
原文地址: 顺藤摸瓜找到一个有很多学习python电子书的窝.在这里 希望你喜欢. 文章是自己瞎翻译的,不足之处,麻烦指出. 生成PDFs文件,我会将 ReportLab作为首选工具.不过,我发现在P ...
- java后台icon font 图标替换
我们知道后台有些菜单图标,一般用的是iconf font,往往免费的一套icon font系统里的图标太少,满足不了我们一些需求,当然也有人说用重复的图标不就可以了,可是作为一个资深程序员,强烈病态的 ...
- MFC--利用Haru库生成PDF文件
haru free pdf类库下载地址: http://download.csdn.net/detail/u011642774/9616781 解压后我们要用到三个东西: libhpdf.dll li ...
- Haru Free PDF Library——生成PDF的库
PDF是我们极其常用的文件格式,但对如何生成PDF,个人一直觉得很神秘,其实利用一些公开的PDF库,我们就可以直接生成PDF文件,而不用关注PDF文件的内部细节.我知道的PDF库有如CARIO和HAR ...
- MFC使用Haru free pdf lib生成pdf文件
MFC使用Haru free pdf lib生成pdf文件 我们先创建一个项目MFCPDFDemo,在上面添加一个编辑框和一个按钮: haru free pdf类库下载地址 这里直接下载dll,如果想 ...
- windows系统下的 pdf2html (pdf 转html)开源工具 pdf2htmlEX 使用方法
pdf2htmlEX windows系统可执行版下载地址: http://soft.rubypdf.com/software/pdf2htmlex-windows-version 使用方法: 将需要转 ...
- C语言实现png图片转为pdf文件
png图片转PDF文件(C语言) 准备 代码展示 效果展示 功能描述 准备 linux系统,libharu库,libgtk库. 代码展示 #include <png.h> #include ...
- iText导出PDF多表格
iText是一种生成PDF报表的Java组件.通过在服务器端使用Jsp或JavaBean生成PDF报表,客户端采用超链接显示或下载得到生成的报表,这样就很好的解决了B/S系统的报表处理问题.在使用iT ...
- 使用IText5+Freemarker生成PDF(模板可以使用CCS3分页效果)
iText介绍 iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库.通过iText不仅可以生成PDF或rtf的文档,而且可以将XML.Html文件转 ...
最新文章
- github的pull request是指什么意思?有什么用处
- 如果我的接口必须返回Task,那么实现无操作的最佳方法是什么?
- Java新鲜东西,带有标签的continue和break
- Dataframe花样切片~(Python)
- 关于mac注册机core keygen在10.12及以上版本不能使用的解决方法
- python进行usb通讯_Python实现树莓派USB串口通讯
- php里建立数据库和表,PHP 创建数据库和表 | w3cschool菜鸟教程
- SPSS24.0输了授权码还不能用怎么破?
- 无线ap ntp服务器,我有一优科 ZoneFlex 7982 的无线AP,怎样可以进AP系统进行设置...
- Fspecial函数用法
- 个人理解设计为何要多用组合,少用继承
- mysql rank函数怎么用_mysql rank函数怎么用
- 在市场买一个小鸡都要20多块,为什么加工好的童子鸡才19块?
- 苹果笔记本如何安装双系统
- 实用技巧 雷电模拟器导出apk
- python将视频转为图片
- “上云 用数 赋智”,这说的不是数字中台吗?
- 一条命令轻松绘制CNS顶级配图-ggpubr
- 服务器蓝屏显示7f,电脑蓝屏代码7f该怎么解决
- python网页爬虫漫画案例_Python爬虫 JS案例分析:爬取鬼灭之刃漫
热门文章
- 杰米棋牌开发商打造经典棋牌游戏
- tex模版wins版本在mac中字体不对应问题解决方案
- Multi-Faceted Distillation of Base-Novel Commonality for Few-shot Object Detection
- JavaWeb项目中出现faceted project problem问题是什么原因?
- Spring boot JPA+Gradle+QueryDSL 完美配置生成Q文件依赖
- 交叉编译ffmpeg:aac x264 x265
- 横向越权与纵向越权区别
- 1083 Cantor表
- 线上教育相关的微信公众号图文这样排版,阅读量翻十倍!
- 2021-05-23:pandas 新增sheet,不覆盖原来已经保存的sheet