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相关推荐

  1. 使用Python的PyPD创建PDF文档

    原文地址: 顺藤摸瓜找到一个有很多学习python电子书的窝.在这里 希望你喜欢. 文章是自己瞎翻译的,不足之处,麻烦指出. 生成PDFs文件,我会将 ReportLab作为首选工具.不过,我发现在P ...

  2. java后台icon font 图标替换

    我们知道后台有些菜单图标,一般用的是iconf font,往往免费的一套icon font系统里的图标太少,满足不了我们一些需求,当然也有人说用重复的图标不就可以了,可是作为一个资深程序员,强烈病态的 ...

  3. MFC--利用Haru库生成PDF文件

    haru free pdf类库下载地址: http://download.csdn.net/detail/u011642774/9616781 解压后我们要用到三个东西: libhpdf.dll li ...

  4. Haru Free PDF Library——生成PDF的库

    PDF是我们极其常用的文件格式,但对如何生成PDF,个人一直觉得很神秘,其实利用一些公开的PDF库,我们就可以直接生成PDF文件,而不用关注PDF文件的内部细节.我知道的PDF库有如CARIO和HAR ...

  5. MFC使用Haru free pdf lib生成pdf文件

    MFC使用Haru free pdf lib生成pdf文件 我们先创建一个项目MFCPDFDemo,在上面添加一个编辑框和一个按钮: haru free pdf类库下载地址 这里直接下载dll,如果想 ...

  6. windows系统下的 pdf2html (pdf 转html)开源工具 pdf2htmlEX 使用方法

    pdf2htmlEX windows系统可执行版下载地址: http://soft.rubypdf.com/software/pdf2htmlex-windows-version 使用方法: 将需要转 ...

  7. C语言实现png图片转为pdf文件

    png图片转PDF文件(C语言) 准备 代码展示 效果展示 功能描述 准备 linux系统,libharu库,libgtk库. 代码展示 #include <png.h> #include ...

  8. iText导出PDF多表格

    iText是一种生成PDF报表的Java组件.通过在服务器端使用Jsp或JavaBean生成PDF报表,客户端采用超链接显示或下载得到生成的报表,这样就很好的解决了B/S系统的报表处理问题.在使用iT ...

  9. 使用IText5+Freemarker生成PDF(模板可以使用CCS3分页效果)

    iText介绍 iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库.通过iText不仅可以生成PDF或rtf的文档,而且可以将XML.Html文件转 ...

最新文章

  1. github的pull request是指什么意思?有什么用处
  2. 如果我的接口必须返回Task,那么实现无操作的最佳方法是什么?
  3. Java新鲜东西,带有标签的continue和break
  4. Dataframe花样切片~(Python)
  5. 关于mac注册机core keygen在10.12及以上版本不能使用的解决方法
  6. python进行usb通讯_Python实现树莓派USB串口通讯
  7. php里建立数据库和表,PHP 创建数据库和表 | w3cschool菜鸟教程
  8. SPSS24.0输了授权码还不能用怎么破?
  9. 无线ap ntp服务器,我有一优科 ZoneFlex 7982 的无线AP,怎样可以进AP系统进行设置...
  10. Fspecial函数用法
  11. 个人理解设计为何要多用组合,少用继承
  12. mysql rank函数怎么用_mysql rank函数怎么用
  13. 在市场买一个小鸡都要20多块,为什么加工好的童子鸡才19块?
  14. 苹果笔记本如何安装双系统
  15. 实用技巧 雷电模拟器导出apk
  16. python将视频转为图片
  17. “上云 用数 赋智”,这说的不是数字中台吗?
  18. 一条命令轻松绘制CNS顶级配图-ggpubr
  19. 服务器蓝屏显示7f,电脑蓝屏代码7f该怎么解决
  20. python网页爬虫漫画案例_Python爬虫 JS案例分析:爬取鬼灭之刃漫

热门文章

  1. 杰米棋牌开发商打造经典棋牌游戏
  2. tex模版wins版本在mac中字体不对应问题解决方案
  3. Multi-Faceted Distillation of Base-Novel Commonality for Few-shot Object Detection
  4. JavaWeb项目中出现faceted project problem问题是什么原因?
  5. Spring boot JPA+Gradle+QueryDSL 完美配置生成Q文件依赖
  6. 交叉编译ffmpeg:aac x264 x265
  7. 横向越权与纵向越权区别
  8. 1083 Cantor表
  9. 线上教育相关的微信公众号图文这样排版,阅读量翻十倍!
  10. 2021-05-23:pandas 新增sheet,不覆盖原来已经保存的sheet