GSUB表格
GSUB表
GSUB表處理字符的替換,最常用來建立歐文連字。
現代OpenType建議定義完整的字符對應關係,例如全半形之間的切換。另外,當字型備有多組數字(如等寬、比例寬、老式),也應定義相關GSUB功能來切換。
對中文處理來說,最重要的是直排形式(vert、vrt2)的設定。
主要的GSUB功能
功能名 | InDesign選單名稱(補充) | Lookup方式(例) | 備註 |
---|---|---|---|
ccmp | 字符組合與拆解 | 4, 2 | 強制性套用 |
liga | 連字 | 4 | 預設開啟但可關閉的連字 |
dlig | 任意連字 | 4 | 預設不開啟,使用者選用的連字 |
hlig | 歷史上的連字 | 4 | |
rlig | 強制連字 | 4 | 強制套用,阿拉伯文為主 |
tnum | 等寬表格數字 | 1 | |
pnum | 比例寬數字 | 1 | |
onum | 老式數字 | 1 | |
lnum | 等高數字 | 1 | |
afrc | 預組的分數字 | 4 | 如1/2切換成½ |
frac | 斜線任意分數 | 4→6 | |
dnom | 分母 | 1 | 與frac併用 |
numr | 分子 | 1 | 與frac併用 |
zero | 帶有斜線的數字零 | 1 | |
sups | 上標用字符 | 1 | |
subs | 下標用字符 | 1 | |
sinf | 科學用途下標字符 | 1 | |
ordn | 上標序數 | 1 | |
fwid | 等寬全形字符 | 1 | |
hwid | 等寬半形字符 | 1 | |
pwid | 比例寬字符 | 1 | |
qwid | 等寬四分字符 | 1 | |
twid | 等寬三分字符 | 1 | |
ital | 歐文義大利體 | 1 | |
nalt | 裝飾字符 | 1, 3 | |
swsh | 曲飾線字符 | 1 | |
titl | 標題用字符 | 1 | |
smcp | 小字大寫 | 1 | |
aalt | 所有異體字 | 3, 7 | |
salt | 預設異體字 | 1 | 通常建議等於ss01 |
ss01-ss20 | 樣式集 | 1 | |
cv01-cv99 | 異體字集 | 1 | |
case | 大寫替換字符 | 6 | 例如大寫用的連字號等 |
calt | 隨前後關係變化造型的字符 | 6 | |
vert | 直排用全形字符 | 1 | 直排 |
vrt2 | 直排用旋轉字符 | 1 | 直排 |
trad | 繁體字 或 日文舊字體 | 1, 3 | |
smpl | 簡體字 或 日文新字體 | 1, 3 | |
hkna | 橫排用假名 | 1 | |
vkna | 直排用假名 | 1 | |
pkna | 比例寬假名 | 1 | |
ruby | 注音用字符 | 1 | |
expt | 專家字形 | 1 | 日文漢字規格 |
hojo | 輔助漢字 | 1 | 日文漢字規格 |
jp04 | JIS2004字形 | 1 | 日文漢字規格 |
jp78 | JIS78字形 | 1 | 日文漢字規格 |
jp83 | JIS83字形 | 1 | 日文漢字規格 |
jp90 | JIS90字形 | 1 | 日文漢字規格 |
nlck | 印刷標準字體 | 1 | 日文漢字規格 |
init | 語頭形 | 1, 6, 8 | 阿拉伯文 |
medi | 語中形 | 1, 6, 8 | 阿拉伯文 |
fina | 語尾形 | 1, 6, 8 | 阿拉伯文 |
isol | 孤立形 | 1, 6, 8 | 阿拉伯文 |
Lookup方式
編號 | 名稱 | 說明 |
---|---|---|
1 | Single | 將1個字符替換成1個字符 |
2 | Multiple | 將1個字符替換成n個字符 |
3 | Alternate | 將1個字符替換成n個字符選項之一 |
4 | Ligature | 將n個字符替換成1個字符 |
5 | Context | 根據前後文替換多個字符 |
6 | Chaining Context | 根據連續前後文替換多個字符 |
7 | Extension Substitution | 擴充其他超過64K以上的替換表 |
8 | Reverse chaining context single | 根據連續前後文反方向替換多個字符 |
AFDKO語法
在AFDKO編寫GSUB語法時,要寫在 feature
區塊。並使用 substitute
指令,可簡寫為 sub
。如:
feature liga { sub f i by f_i; } feature liga;
LookupType 1 一對一
sub a by A.sc; # 將 a 切換成 A.sc sub [one.fitted one.oldstyle one.tab.oldstyle] by one; # 各種 one.xxx 字符都切換成 one sub [a - z] by [A.sc - Z.sc]; # a 切換成 A.sc, b 切換成 B.sc, 依此類推
LookupType 2 一對多
sub i by idotless dotabove; # 解開連字(通常用在ccmp)
LookupType 3 多選一
sub ampersand from [ampersand.ss01 ampersand.ss02 ampersand.ss03]; # 讓使用者手動選的異體字
LookupType 4 多對一
最一般的連字行為。
sub f i by f_i;
注意雖然規格上AFDKO建議字型軟體自動處理理想的排序,但實際上AFDKO與Glyphs本身不會自動排序,所以編寫時必須考慮指定執行的順序。
sub f f i by f_f_i; # 這行要放在前面,不然下面兩個可能會優先生效 sub f f by f_f; sub f i by f_i;
LookupType 6 前後文連鎖
只有在符合特定前後文時進行取代,要被取代的字符後方應加上 '
符號以茲識別。
sub [a e n] d' by d.alt; # ad, ed, nd 時的 d 顯示成 d.alt 字符
被取代的字可以不只一個,例如:
sub e' t' c by ampersand; # etc 連續出現時,et 取代成 ampersand 字符
前後文連鎖取代的語法相當複雜,還可以配合lookup使用定義出更具彈性的取代行為。或是使用 ignore
指令忽略部分項目。請參考官方文件。
LookupType 7 擴充
當區塊可能會超過64K時,加上 useExtension
字樣。
feature aalt useExtension { feature salt; feature smcp; substitute d by d.alt; # ... other rules } aalt;
LookupType 8 反向前後文連鎖
指令改用 reversesub
或 rsub
,其他與LookupType 6相通。排版引擎會從最後方開始往前比對。
reversesub [a e n] d' by d.alt;
常見功能說明
vert, vrt2 直排
請參閱直排。
分數
TBD
- 建立於 2020 年 12 月 21 日 15 時 59 分
- 本條目共被 1 位不同作者編輯過 4 次
- 最後一次修改於 2020 年 12 月 24 日 02 時 14 分