標籤:style http os 使用 strong ar 檔案 問題 sp
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,就可以有效地減小內嵌字型的尺寸。
Font and PDF