【閒聊】字型格式那麼多~到底差在哪?





acheron
2005-06-25, 05:59 PM
目前字型格式有
True Type字體(*.ttf, *.ttc)
Open Type字體(*.ttf, *.ttc,*.otf)
Postscript Type 1字體(*.pfm,*.pfb)
微軟的Windows字體(*.fnt, *.fon)

則Open Type是目前最新的技術
但他們之間到底有啥差異
又有啥不同的功用呢?

轉載
http://blog.bs2.to/post/EdwardLee/2341

基本上 OpenType 是源自於 MS 的 TrueType Open 字型,而 TrueType Open 字型是源自於 TrueType 字型,所以這些字型可以說是系出同門,基本的 container 格式是相同的。

TrueType Open font 和 TrueType font 最大的不同是:
增加了 GSUB(Glyph Substition), GPOS(Glyph Position), BASE(baseline), JSFF(Justification), GDEF(Glyph Definition) 等五個 table 來控制字的置放、取用機制。

OpenType font 和 TrueType Open font 最大的不同是:
引進 CFF table 來存放 ps outline 資料,這相當於 TTF 的 glyf table,這些都是主要的字型實體資料。
所以,在 OpenType font 會有兩種不同字型實體資料的字型出現:

TrueType format with TrueType outline(*.ttf, *.ttc)
TrueType format with PS outline(CFF)(*.otf) 或稱為 CFF OpenType font。
因此,並不是說 *.ttf 就不是 OpenType font。主要還是要看裡頭的 table。會以 *.otf 做延伸檔名的,通常就是 CFF OpenType,不同的地方是字型實體資料是 CFF(Compact Font Format) table,而不是原來 TTF 的 glyf table。
其他補充:

OpenType font 包括了 Adobe CID-Keyed font 的技術,像目前 AR6/7 所附上的 OpenType font,其實是 CID-Keyed font 但穿上了 TrueType 的衣服(因為 CFF 本來就可以含 CID-Keyed font)。
只要判斷出字型含有 DSIG(Digital Signature) table,大致上就可以判定他是 OpenType font。然後再來判斷是含有 CFF table 或是 glyf table 就可以判斷是 CFF outlines 或是 TrueType outlines。




realmax
2005-06-26, 11:26 AM
學到了....:)
對我來說字型最常用到的情況是文書編輯或美工編輯,
而沒想到還有這些學問....

otai
2005-12-10, 09:35 PM
正好有這類的問題想請教各位高手,於是爬一爬文章,找到這一篇,順便附加請教一下有關字型屬性的問題.
請問字型的屬性有沒有什麼特別的差異 : 如 A, AC, RA, RAC(這是好像金梅中文的屬性)....

lenbo
2005-12-10, 10:30 PM
還是搞不懂OpenType與TureType差在哪裡?
小弟常要在2種語言OS下工作(繁中XP+日文XP)
在繁中XP下可看到的TureType繁中字體
到了日文XP下就變成英文名稱了~
雖然可以透過修改非unicode軟體語系來勉強渡日…不過,這蠻累的也

otai
2005-12-11, 01:12 AM
如果記得沒錯 OS 從早期的 8088 時期發展到 window 後, true type 的字型便開始發展演進,至於後來漸漸衍生的各式 "新品種" 個人淺見應該是不會差很多, 繁體中文碼到日文XP 會變成對應的英文應該是OS上沒有完全顧及到的原因吧, 不知道這樣的 "推測" 是否正確.

琥珀
2005-12-11, 04:31 PM
對於中文、日文、韓文,除了英文名稱,還有一個本地化名稱。

每一種本地化 (包含英文) 版本,是被設計顯示出該系統語言之下的本地名稱。不過,可以改非 Unicode 程式的語言,重新啟動,系統會自動調出該設定之下的本地化名稱。

說明白一些,對於中文、日文、韓文系統的使用者,chs/cht/jpn/kor 此四個群組的字型,同一時間內只會有一個群組,字型名稱會轉為本地化名稱,其餘都是用英文名稱表示。這是微軟當時設計的規則。或許應該說,「本地化名稱」是 CJK 字型、CJK 作業系統才有的「專利」,因此微軟就不是很照顧了。

例如自己使用簡中版,字型名稱會轉為「宋体」、「宋体-方正超大字符集」…等。在簡體系統下要顯示「新細明體」是不可能的,一律用英文「PMingLiU」表示。

對於 Unicode Ready 的程式,字型用英文名稱還是本地名稱,並不是很重要。系統內部會自行溝通、轉換,不需要終端用戶干涉。對於 Win98/ME 的使用者,如果常常執行一些老舊的程式,就顯得比較重要了。

如果在網頁 (其中一種應用) 使用本地名稱的字型宣告,那就要小心了,因為有些系統、程式根本不了解什麼是「新細明體」、「新宋体」,只會接受「PMingLiU」、「NSimSun」(大小寫不分) 這類的宣告。不過這個問題在新的系統上已經獲得解決,因此現在也就沒有人討論了。