直排

此頁面描述字型檔處理直排時,需要處理的相關議題。

直排符號轉換 vert, vrt2 (GSUB)

直排用符號轉換有兩種模式,分別是vertvrt2。兩種的實際差異在於轉換時前置作業的差異。



前置作業步驟1(圖中Step1),無論哪一種,都是先將所有字橫躺。 前置作業步驟2(圖中Step2)時,vert會將特定文字轉正;而vrt2則是將所有文字轉正。 而圖中的Step 3才是vert、vrt2功能實際描述的替換字符。


這兩種模式思維的差異在於,vert模式下,這些所謂需要被轉正的特定文字,其實是個黑箱。大致上是漢字、假名、全形標點類會被轉正,但比較細節的例如括號、引號、箭頭、表格符號、希臘文等等到底轉不轉,就是很模糊的空間。現代環境可能會參考UTR#50去判斷,但其實仍有一定的不確定性。

而vrt2模式則是全部先轉正,全部由字型去定義哪些字符需要轉換。所以半形歐文橫躺回來,在vrt2模式下,其實要另外定義真正橫躺下來的字符才行。這樣做的好處是例如希臘文(有些CJK字型會造成全形,有些造半形)等寬度相當模糊的字符,可在字型檔明確表達轉換行為,減少不確定性。缺點則是需要另外製作大量的橫倒字符。

當字型定義有vrt2,且環境支援時,vert會被忽略。

其他陷阱

head表格有部分flag會影響到Mac上直排基線位置的行為。