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,就可以有效地减小内嵌字体的尺寸。

时间: 2024-12-16 22:23:21

Font and PDF的相关文章

利用private font改变PDF文件的字体

利用private font改变PDF文件的字体 前几天做项目,需要使用未安装的字体来改变PDF的文件.以前并没有实现过类似的功能,幸运的是我在网上找到了类似的教程,并成功实现了这个功能. 下面就跟大家分享一下我是如何实现的. 1.首先我先下载了一个系统字体库中没有的字体,独立的DeeDeeFlowers.TTF字体文件,打开预览如下图: 2.我们接下来要做的是就是在一个新建的PDF文件中输入一些内容,然后把字体替换为DeeDeeFlowers.TTF. 我在他们的网站上下载了这个组件的最新Ho

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

MFC使用Haru free pdf lib生成pdf文件 我们先创建一个项目MFCPDFDemo,在上面添加一个编辑框和一个按钮: haru free pdf类库下载地址 这里直接下载dll,如果想以静态库的方式使用,得下载源码自己编译.然后把这个dll添加到项目中,怎么添加就不说了吧,还是说一下吧,万一有新手看不懂呢.解压后我们要用到三个东西:libhpdf.dlllibhpdf.libinclude整个文件夹解压后复制libhpdf.dll到项目的release和debug目录下:libh

基于iTextSharp的PDF文档操作

公司是跨境电商,需要和各种物流打交道,需要把东西交给物流,让他们发到世界各地.其中需要物流公司提供一个运单号,来追踪货物到达哪里?! 最近在和DHL物流公司(应该是个大公司)对接,取运单号的方式是调用对方提供的API,简单说,就是我们传一些发货地址和客户信息,要发的货物等,对方返回一个运单号和物流面单(就是我们淘宝快递上的面单).过程呢,还是比较顺利的,经过一系列沟通,最终还是实现了功能 下面还是说说没有实现的功能,如果都实现了,也不用写这篇博客了.不足之处在于DHL提供的面单,没有提供要拣哪些

Linux下实现文档在线浏览

使用php实现百度文库功能,网上搜索到的方案,实现doc转pdf,pdf转swf,然后显示出来. 这里简单的记录下,[doc转pdf,pdf转swf]两个功能的搭建流程. doc转pdf 使用到下列程序(文件): Apache OpenOffice 字体文件(windows系统C:\Windows\Fonts目录下的文件) JAVA环境(>=1.6) jodconverter 实现原理:调用jodconverter的包转换doc为pdf,而jodconverter会去连接OpenOffice的s

自然图像里的文本检測和识别2010-2014年论文汇总

我会不定时更新的. 1. 首先给大家介绍一个非常好用的CV 领域会议 期刊论文集网址. http://www.cvpapers.com/index.html 2.下面是2010-2014年 CVPR ICCV ECCV ACCV BMVC ICPR ICLR siggraph eurographics IJCAI上的有关自然图像中的文本检測和文本识别的文章. 1.CVPR 2014 Large-Scale Visual Font Recognition.pdf Wang, K and Belon

自然图像里的文本检测和识别2010-2014年论文汇总

我会不定时更新的. 1. 首先给大家介绍一个很好用的CV 领域会议 期刊论文集网址. http://www.cvpapers.com/index.html 2.以下是2010-2014年 CVPR ICCV ECCV ACCV BMVC ICPR ICLR siggraph eurographics IJCAI上的有关自然图像中的文本检测和文本识别的文章. 1.CVPR 2014 Large-Scale Visual Font Recognition.pdf Wang, K and Belong

LibHaru编译使用

最近公司准备在PDF方面发力了,我也要行动起来,就找到了LibHaru这个开源库 编译Libharu需要用到zlib库和libpng库,libpng库又依赖zlib库. zlib 下载地址:http://www.zlib.net/ libpng下载地址:http://www.libpng.org/pub/png/libpng.html libharu下载地址:http://libharu.org/ 下载好后,最好放到一个单独的文件夹下, 进入目录  D:\Users\PDF\lpng\proje

总会有一个是你需要的

http://www.shouce.ren/post/d/id/112300 黑客攻防实战入门与提高.pdfhttp://www.shouce.ren/post/d/id/112299 黑客入门新手特训.pdfhttp://www.shouce.ren/post/d/id/112298 黑客与设计-剖析设计之美的秘密(彩印).pdfhttp://www.shouce.ren/post/d/id/112297 鸟哥的LINUX私房菜:服务器架设篇 (第二版).pdfhttp://www.shouc

允许嵌入到PDF,Word文档和其他文件的条形码控件UPC/EAN Barcode Font Advantage Package

IDAutomation的UPC/EAN Barcode Font Advantage Package是一个先进的字体产品,它所用的工具,宏和源代码可以使用一个单一的字体文件来创建UCC-12, UPCA, UPCE, EAN8, EAN13, JAN, ISBN 和Bookland条形码.该字体满足ANSI, ISO和IEC 2000规格说明要求(ISO 15420:2000). 具体功能: 为了创建合适的UPC和EAN条形码类型,打印的字符必须要从UPC/EAN条形码字体数据表上定义的表格上