OpenType,是一種可縮放字型(scalable font)電腦字型類型,採用PostScript格式,是美國微軟公司與Adobe公司聯合開發,用來替代TrueType字型的新字型。這類字型的副檔名有.otf
、.ttf
、.ttc
,類型代碼是OTTO
,現行標準為OpenType 1.9。
此條目需要更新。 (2019年2月7日) |
OpenType最初發表於1996年,並在2000年之後出現大量字型。它源於微軟公司的TrueType Open字型,TrueType Open字型又源於TrueType字型。OpenType font包括了Adobe CID-Keyed font技術。Adobe公司已經在2002年末將其字型庫全部改用OpenType格式。到2005年大概有一萬多種OpenType字型,Adobe產品佔了三分之一。
歷史
OpenType之前的主流是蘋果公司和微軟開發的TrueType類型,還有Adobe公司開發的Type 1(PostScript)字型類型。微軟在1994年獨自開發了「TrueType Open」類型[4],之後1996年Adobe加入開發,增加了其在Type 1字型中使用的對字型輪廓的支援,OpenType這個名字於是便用來稱呼合併之後的技術。
在後來的十幾年中,Adobe和微軟繼續開發改進OpenType格式,在2005年末,OpenType開始申請成為國際標準組織(ISO)的公開標準。這個新標準已經升級到OpenType 1.4,以適應ISO語言標準的一些變化,之後其被稱為「開放字型類型(Open Font Format)」。這個標準在2007年3月以ISO/IEC 14496-22發佈。[5]
OpenType於2016年發佈了1.8版規範,引入了「可變字型」的功能。支援通過調節一定的參數來自由改變文字的形狀。
在OpenType1.9中,引入了COLR表的第二個版本,它增加了額外的圖形功能。增強版最初由谷歌提出並與微軟聯合開發。增強的圖形功能包括對三種類型的漸變、仿射變換、合成和混合模式的支援,以及定義可重用組件的能力。這些增強功能為COLR表提供了「SVG」表的所有圖形功能,除了描邊之外,應用程式應該支援這些功能。它還添加了合成和混合模式,對「SVG」表的支援被認為是可選的(因為這些在SVG中作為濾鏡效果實現)。此外,COLR表的增強功能與OpenTypeFontVariations整合在一起,而「SVG」表則無法做到這一點。自版本98起,Chromium瀏覽器引擎支援增強的COLR表。
描述
OpenType使用TrueType字型通用的sfnt架構,但其加入若干「智能字型」(smartfont)選項,可以加強字型的字形和語言支援能力。OpenType字型中的字形(glyph)、輪廓數據可以在兩種格式中任選其一:一個是在'glyf'表中TrueType格式輪廓,另一個是在'CFF '表中的CFF(壓縮字型格式,Compact Font Format)格式輪廓。CFF輪廓數據是基於PostScript語言Type 2字型格式。表格名'CFF '長度為四個字元,並且以一個空格字元結尾。
在如版式等大多數情況下,輪廓數據格式是什麼類型並不重要,但這兩種格式的區別在圖元光柵化(rasterisation)的時候就有區別。而單從「OpenType」一詞中看不出來使用的是哪種數據格式,所以有時候使用OpenType (PostScript flavor)、OpenType CFF、或者OpenType (TrueType flavor)等稱呼加以區別。
OpenType的主要特徵有:
- 字型編碼基於統一碼,可以支援任何文字,或者同時支援多種文字。
- 一個OpenType字型可以帶有最多65,536個字形。對於中文字庫而言,最基本的字彙應該包含Big5的13,060個漢字或是GB2312-80標準的6763個常用字型,這些字應該能滿足一般用戶的使用,對於戶籍管理、銀行系統和出版社等用戶而言需要2萬多字甚至7萬多字的支援。
- 字型有進階字形功能,可以進行對複雜文字進行充分的字形處理,並能通過更簡單的文字施加更複雜的字形效果,比如用羅馬字母指令碼書寫英文。
- 字型檔案可以拓展到跨平台,能夠在Mac OS,Windows和一些Unix系統中進行設置。
- 若不含變體字等拓展字形和拓展文字效能,OpenType CFF字型比Type 1要小
與其他類型比較
與蘋果公司的Apple Advanced Typography(簡稱AAT,舊名GX Typography)比較,OpenType在字形選項上更不靈活,但是在語言相關的選項和支援略勝一籌。OpenType比AAT更為成功,它現在有大量的字型和支援的應用程式,使AAT成為過時的技術。AAT的單平台效能使其缺乏蘋果以外的大廠商的支援。
從開發者的角度來說,在一般情況下OpenType比AAT更容易開發。首先,簡單聲明替換和OpenType的定位比AAT的狀態表更簡單易懂。其次,Adobe的認證策略不需要改變原始碼,執行第三方字型編輯應用程式,如FontLab、FontMaster去添加有關效能支援。雖然Adobe的文字驅動代碼支援不如微軟的單獨開發工具更為直觀,但是它的VOLT(視覺開放字型版式工具,Visual OpenType Layout Tool),一個製作字型的工具整合軟件還是比較受歡迎的。
另一個區別是,OpenType支援framework(如微軟的Uniscribe),若要處理阿拉伯語等語言的時候只需要提供一些特殊的語言處理知識。而在AAT中,ATT字型開發者需要對該語言字型的全面認識。這意味着AAT可以處理任何特殊語言,但是需要字型開發者的相當高度的語言知識。另外,OpenType字型更容易製作,但只能支援應用程式和作業系統能夠辨識的複雜文字。 在支援OpenType之前,Adobe針對進階文書處理中曾推出「multiple master fonts」,但其缺乏OpenType的異體字和語言控制,在字型形狀上有更多的控制參數。
OpenType支援
OpenType支援有以下幾個方面:所有應用程式和多數作業系統能在使用舊字型的同時使用OpenType字型;特別要注意的是,統一碼的拓展語言支援;支援阿拉伯語、印度語言等「複雜文字」;以及英語等拉丁文字的進階字形支援等。
在微軟的作業系統中,OpenType TT字型(.TTF)能向下相容,因此其支援所有Windows系統。OpenType PS字型(.OTF)支援Windows 2000或以後的版本。在Windows 95/98/NT/Me系統中需要安裝Adobe Type Manager才能使用基本的羅馬字元支援。
通過統一碼的拓展語言,可以在大多數的視窗應用程式中同時對OpenType和TrueType支援,包括Publisher,大多數的Adobe應用程式,微軟Office 2003(但Word 2002不行),以及多數的Mac OS應用程式,包括蘋果自己開發的TextEdit和Keynote。在Mac OS X中,通過文書處理Mellel,OpenType得到了全面支援。
OpenType通過微軟的Office和Publisher等軟件支援複雜書寫文字,Adobe InDesign也提供日文的拓展OpenType功能,但是不直接支援中東和印度文字——Adobe為支援阿拉伯語、希伯來語等中東語言,單獨發行另外的InDesign版本。
拉丁語言文字的進階字形支援主要是通過Adobe的應用程式,如Adobe InDesign、Adobe Photoshop和Adobe Illustrator來支援。QuarkXPress 6.5及其以下版本不支援統一碼,因此含有WinANSI/MacRoman字元表外的文字在OpenType字型中將無法正常顯示(同理,在其他使用統一碼的字型格式也不行)。Corel公司的CorelDRAW不支援OpenType字形功能。儘管如此,Quark公司在2006年5月發佈的QuarkXPress 7中開始支援OpenType,和Adobe程式達到類似的效果。
另外,Windows Presentation Foundation管理代碼執行支援OpenType CFF字型和一些進階字形功能,如連寫、舊體數字、花體字形、拐點、超文字和次文字,小型大寫字母、字形替換、多重基線、前後/風格化字間距調整、行間調整、註釋字元等等。
Mac OS X v10.4及其之後系統中的Apple Advanced Typography也支援OpenType拉丁文字語言的進階字形功能,如小型大寫字母,舊體數字和多種連寫。但是它不支援前後字母間距調整、定位格式、字形倒序等,因此Mac OS X v10.4不能通過OpenType支援阿拉伯語、印度的文字——這些文字通過蘋果自己的AAT字型來支援。
在自由軟件環境,如Linux中,OpenType支援是通過FreeType專案來支援的,包括自由執行X Window System,如Xorg。
在Mac OS X v10.4(Tiger)中,蘋果公司開始在作業系統中支援OpenType功能,減輕了程式開發者的任務,但是仍有一些需要注意的地方:
- 在Mac OS 10.4.0到10.4.3中,若字型被辨識為具有OpenType表,任何AAT表值將被忽略(之後,AAT功能優先於OpenType功能。)
- 只有以下的GDEF/GPOS/GSUB功能標籤被確認是支援的:
- liga: Common ligatures普通連寫
- dlig: Discretionary ligatures
- sups: Superior/superscript position
- tnum: Tabular numerals表用數字
- pnum: Proportional numerals比例數字
- onum: Old style numerals舊體數字
- lnum: Lining numerals線性數字
- sinf: Scientific inferiors
- zero: Slashed zero斜線零
- ital: Italics斜體
- trad: Traditional CJK forms傳統CJK樣式
- jp78: JIS 1978 CJK forms日本JIS1978CJK樣式
- jp83: JIS 1983 CJK forms日本JIS1983CJK樣式
- expt: Expert CJK forms專家CJK樣式
- nlck: NLC Kanji forms NLC漢字格式
- ruby: Ruby notation forms注音字元樣式
- pwid: Proportional CJK widths比例CJK寬度
- fwid: Full CJK widths全形CJK寬度
- hwid: Half CJK widths半形CJK寬度
- twid: Third CJK widths三分之一CJK寬度
- qwid: Quarter CJK widths四分之一CJK寬度
- palt: Alternate proportional CJK widths變C比例JK寬度
- halt: Alternate half CJK widths變半形CJK寬度
- vert or vrt2: Optimised kana vertical alternates
- 本列表不完整
- 以下功能是被確認不支援的:
- mark: Mark‐to‐base positioning
- mkmk: Mark‐to‐mark positioning
- mset: Mark positioning via substitution
- nukt: Nukta form
- akhn: Akhand ligature
- rphf: Reph form
- blwf: Below-base form底基線樣式
- half: Half-form(pre-base form)
- pstf: Post-base form
- vatu: Vattu variants
- pres: Pre-base substitution
- blws: Below-base substitution
- abvs: Above-base substitution
- psts: Post-base substitution
- haln: Halant form substitution
- blwm: Below-base mark positioning
- abvm: Above-base mark positioning
- dist: Distances
SING外字解決方案
2005年Adobe在其創意軟件套裝Adobe Creative Suite中發表了一個新的技術「外字」(Gaiji)解決方案。
所謂「外字」,源自日語的「表外漢字」(日語:表外漢字,hyōgai kanji)。與拉丁語言不同,在東亞表意文字系統如中文、日文中,沒有固定數量的字元集。一般字元集只含有8,000到15,000的常用字,另外數萬個非常用字、生僻字,往往沒有在各國的標準中給予編碼。另外一個情況是異體字:一個表意文字(漢字)在不同的歷史時期、地域產生了不同的字形,而一些地名人名等專有名字必須要使用傳統的寫法,需要使用這些冷僻字形,造成了生僻字問題,日語中稱為「外字」問題。
為了處理這些冷僻字,先前已經出現過很多方案,比如在統一碼中的私用區域(Private use area)增加編碼等。這樣的處理方法無法在制定環境以外的地方使用,基於私用區域編碼的統一碼製作的文件無法通用。另外一個辦法就是將其處理成圖像,這又導致文字排版的麻煩,因為版面指令無法作用於圖像,無法被當成文字搜尋,而且由於機器從字型描繪字形和描繪圖像的機制完全不同,這樣的處理導致插入的冷僻字看起來很突兀。
SING技術是和Adobe Creative Suite 2一起發佈的,它允許用戶新增字形,每個新字形作為一個獨立的字型打包。這樣打包出來的字形稱為字形包(glyphlet)。這種格式通過Adobe公開的,且基於OpenType。這個包的內容包括字形的TrueType或CFF輪廓樣式,標準OpenType表格,聲明字形的尺寸和組合行為,以及元數據,附加資訊,如字形包的認證、所屬,還有讀音或者部首分類等語言方面的分類等。SING字形包也可以使用Fontlab公司的SigMaker3程式建立。
SING(Smart INdependent Glyphlets,智能獨立字形包)的規範允許字形包隨同檔案一起傳送,這樣包含SING字元的檔案也是可攜帶的,而又不會字元亂碼、異常顯示。由於字形包的基礎是OpenType字型,標準字型機制可以對其進行正常描畫。SING規範也可以表述成XML格式,包括在二進制格式中重建字形的所有必要數據。一般情況下,一個字形包需要1-2 kB大小的容量。
版式標籤
OpenType版式標籤含有4個字串,含有字型版式中文字,語言系統,功能和基線等資訊。微軟的版式標籤登陸中,包含了這些標籤的使用和命名方法。OpenType特徵都是由這些標籤資訊來體現的,建立特徵文字來描述字元如何根據指令來排列。這些特徵文字還可以通過進階字型編輯器如FontlabStudio和AsiaFont Studio來制定。
- 文字標籤
文字標籤用來辨識OpenType字型中的文字類型。每個標籤對應統一碼中一個連續的字元區。每個字元標籤含有4個或更少的小寫字母。如,包含arab來辨識阿拉伯字母表,cyrl對應西里爾字母表,latn對應拉丁字母表,等等。
- 語言標籤
語言體統標籤辨識OpenType字型中支援的語言系統。如包含ARA對應阿拉伯語,ESP對應西班牙語,HYE對應亞美尼亞語等等。這個代碼類似於ISO 639-2,但不盡相同。
- 功能標籤
功能標籤用來辨識字元的一些字形特徵和功能。
- 基線標籤
基線標籤包含橫、豎兩個書寫方向的資訊。
基線標籤 | 橫軸 | 豎軸 |
'hang' | 藏文中發音符號的橫寫時的基線位置 | 藏文中豎寫時的基線位置 |
'icfb' | 表意文字字元底邊距基線 | 表意文字字元左邊距基線 |
'icft' | 表意文字字元頂邊距基線 | 表意文字字元右邊距基線 |
'ideo' | 表意文字字面底邊距基線 | 表意文字字面左邊距基線 |
'idtp' | 表意文字字面頂邊距基線 | 表意文字字面右邊距基線 |
'math' | 數學字元居中時的基線 | 書寫字元居中、在豎寫時的基線 |
'romn' | 簡單字母文字(拉丁、西里爾、希臘字母)的基線 | 簡單字母文字(拉丁、西里爾、希臘字母)在順時針90度時書寫的基線 |
參考文獻
參見
外部連結
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.