iT邦幫忙

2023 iThome 鐵人賽

DAY 12
1

今天,讓我們來處理另一個麻煩的問題——豎排(直排)。

歐美各國所使用的書寫系統皆是橫排為主,因此在顯示終端剛出現、對字型顯示需求剛誕生的時候,都只有考慮到橫排的狀況。但在東亞,扣除在近代廢除豎排的簡體中文,繁體中文與日文、韓文一直都有豎排的文化。

對於「僅」使用漢字、日文假名、韓文來排版而言,無論是橫排還是豎排,每個「方塊字」都可以像積木一樣的疊得好好的。但如果今天必須和標點符號、數字、歐文等文字混排,那麼豎排時要考慮的項目就會變成相當複雜。

通常來說,我們會讓半形的數字與歐文跟著旋轉 90 度,而全形的數字和歐文則不旋轉——好消息是,目前多數的文書軟體都有辦法做到這件事情;不過,標點符號就必須個別設定,例如全形句點 不旋轉,而全形引號 則必須另外設計一個旋轉九十度的樣子。

大多數 CJK 的字型都會特別設計豎排的符號——這就是我們的工作了。

豎排(Vertical Alternates, vert)

在文字從橫排改成豎排時,會先把所有的文字都旋轉 90 度,接著分辨哪些是需要轉正的(例如漢字、假名、全形字符),再將其旋轉回來。最後,透過 vert 表,將表內給定的標點符號替換成 vert 版。

豎排・改(Vertical Alternates and Rotation, vrt2)

做為 vert 的改版,vrt2 會先把全部的文字都旋轉 90 度,並再次將所有的文字旋轉回來(其實就是都排成正的),並透過 vrt2 將指定的字符「再轉回去」。

兩種轉換方式的差別在於,vert 在分辨哪些是不需要轉正的字符時,其實是相當模糊的。你或許會問,不就是把全形的字符轉回來嗎?拉丁文字確實是有將半形和全形的字符分開編碼,但像希臘文字與西里爾文字都僅有一個碼位,並無特別區分全形與半形。

這些字符要做成全形的尺寸(和漢字一樣寬)、還是做成半形的尺寸,都是各家字型廠商所決定的,所以有機會判斷錯誤。與之相比,vrt2 預設所有的字符都是正的,誰要旋轉則由 vrt2 控制,這相當於列了一個白名單,把旋轉與不旋轉一事交還給字型決定。

瀏覽器預設的 vertvrt2 為關閉,不過在開啟之後,若該字符同時有 vertvrt2 時,會優先使用 vrt2

.class {
    -moz-font-feature-settings: "vert";
    -webkit-font-feature-settings: "vert";
    font-feature-settings: "vert";
}

上一篇
DAY 11|OpenType Feature (4):上下文替代
下一篇
DAY 13|OpenType Feature (6):組合字符
系列文
一起成為新世紀文字藝術師:深入玩轉 Unicode 和 OpenType30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言