OpenType

OpenType，是一種可縮放字型（scalable font）電腦字體類型，採用PostScript格式，是美國微軟公司與Adobe公司聯合開發，用來替代TrueType字型的新字型。這類字體的文件擴展名有`.otf`、`.ttf`、`.ttc`，類型代碼是`OTTO`，現行標準為OpenType 1.9。

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」類型，之後1996年Adobe加入開發，增加了其在Type 1字體中使用的對字體輪廓的支持，OpenType這個名字於是便用來稱呼合併之後的技術。

在後來的十幾年中，Adobe和微軟繼續開發改進OpenType格式，在2005年末，OpenType開始申請成為國際標準組織（ISO）的公開標準。這個新標準已經升級到OpenType 1.4，以適應ISO語言標準的一些變化，之後其被稱為「開放字體類型（Open Font Format）」。這個標準在2007年3月以ISO/IEC 14496-22發布。

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系統支持的特性

在Mac OS X v10.4（Tiger）中，蘋果公司開始在作業系統中支持OpenType功能，減輕了程序開發者的任務，但是仍有一些需要注意的地方：

- 在Mac OS 10.4.0到10.4.3中，若字體被識別為具有OpenType表，任何AAT表值將被忽略（之後，AAT功能優先於OpenType功能。）
- 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度時書寫的基線

## 參見

- Uniscribe（Windows多語種文本渲染引擎）
- Apple Type Services for Unicode Imaging（Macintosh多語種文本渲染引擎）
- WorldScript（舊版Macintosh多語種文本渲染引擎）
- Pango（開源多語種文本渲染引擎）
- XeTeX 基於TeX與統一碼及Mac OS X字體技術的整合的自由排版系統
- 嵌入式OpenType
- 字體排印學
- FreeType
- WOFF（Web Open Font Format），包含帶元數據的OpenType字體的web字體格式
- 思源黑體
- Noto
- 蘋果高級排版（Apple Advanced Typography、AAT）
- 可變字體

## 外部連結

- OpenType規範（微軟）
- OpenType字體功能（微軟）
- Adobe – Fonts : OpenType
- Typo.cz 上有關中歐字體排印及字體的資訊
- Diacritics Project — All you need to design a font with correct accents
- Bitstream Panorama: Line layout engine for worldwide text layout, multilanguage, multilingual fonts, and international complex scripts
- Adobe OpenType字體開發工具（AFDKO）
- 微軟TrueType和OpenType字體開發工具
- HarfBuzz - 基於FreeType的OpenType輸出引擎
- 如何用LaTeX安裝OpenType字體
- D-Type Font Engine and Text Layout Module — Portable software components for OpenType font rasterization and text layout
- Windows XP3下OTF字體提示破損（Damaged）無法安裝的解決方法

## 基本資料

- 擴展名：.otf, .otc, .ttf, .ttc
- mime：font/otf
- font/sfnt
- application/font-sfnt (deprecated)
- type code：OTTO
- 統一類型標識：public.opentype-font
- 所有者：微軟、Adobe Systems
- 最新版本：1.9
- 最新版本：2021年12月9日
- 類型：字型檔案
- 擴展自：TrueType、PostScript字體
- 標準：ISO/IEC 14496-22:2015