JP版本iOS上直排時拉丁字母沒有還原橫排
yaozhang-this opened this issue · 2 comments
最近在iOS上測試直排時,發現源樣明朝拉丁字母沒有還原橫排。對比系統自帶的HiraMinPro-W3卻成功還原橫排。
源ノ明朝
HiraMinProW3
測試時漢字和其他大部分標點符號直排沒有問題。
一些需要還原橫排的標點符號,如「()」「【】」都被成功的還原橫排模式。
請問是否可以調查一下?或者說明哪些flag是用來告訴系統還原橫排的。畢竟如果這些標點符號都可以被還原,拉丁字母應該也可以。
EDIT:拉丁文的句號「.」也沒有被還原橫排。
經測試,第三方安裝日本字體「衡山毛筆」在ios上也可以正確排版。圖片 應該不是iOS更改字體設置造成的。
全形符號類的橫倒必須在 vert 表定義,這個相信你知道。
關於歐文文字的直排處理方式,根據歷史因素,有要多種不同的規格存在。
最早期的做法是字型檔本身不做任何定義,由顯示環境端強制處理半形的英文、數字自動橫倒。
但哪個字需要橫倒、哪個字保持正立,以這種做法來說實在太黑箱。例如希臘文字母,一半老的中文字型設計成全形,這樣可能正立為佳。但也有些新字型設計為比例寬,那或許最好橫倒。情況太複雜後很難由環境自主判斷,所以OpenType 開始提倡使用 vrt2 表自行定義。
https://zi-hi.com/%E7%9B%B4%E6%8E%92
但若使用 vrt2 方式,所有希望他橫倒的字符,需要在字型裡另外真的做一個橫倒的字符。
英數字、希臘文、西里爾文字……全都考慮進去,會浪費大量字符空間,也造成字型檔肥大。
後來 W3C 又提倡 UTR#50 的直排方向協議。
這份表格直接針對 Unicode 每個字去規定這個字原則上要正立、橫倒,或是以字型內設定的 vert 為準。
半形歐文是定義為 R(橫倒)的,所以照此規格,字型檔不需做任何設定,半形歐文就應該自然橫倒。
https://zi-hi.com/%E7%9B%B4%E6%8E%92%E6%96%87%E5%AD%97%E6%96%B9%E5%90%91
日文一般的商業字型,採用的是 Adobe-Japan1 規格,此規格非常悠久,已接近30年。
當年是採用 vrt2 的方式,所以所有日文商業字型,原則上都大量內建了橫倒字符。
https://zi-hi.com/Adobe-Japan1
但這樣實在太浪費字符空間了,一樣由 Adobe 製作的思源系列,就決定比照 UTR#50 規定,對於所有在 UTR#50 以及規定為橫倒的字元,不在字型檔裡特別製作橫倒字符。
源樣系列衍生自思源系列,故也選擇不刻意製作橫倒字符,以 UTR#50 為準。
畢竟所需字符數極多,會讓字型檔虛胖不少。
在多數的環境(尤其是瀏覽器核心的環境)應該是會正常橫倒的。
Illustrator、InDesign等環境則是可以手動調整要以 vrt2 為準還是 UTR#50。
iOS環境我就不熟了,請研究API文件對於字型處理引擎有沒有相關選項。
謝謝答覆!
原來是這樣啊,之前完全不了解。
我在macOS上的pages等確實可以正常直排。Xcode可能遵循的不是一個協議。
我查了許久但是全網沒有任何有關vrt2,UAX的API相關信息。即使經常用直排的日本網路上也無可查,可能因為日本iOS開發者並沒有這個困擾。不過順便讀到了日本出版社物書堂在Apple系統上開發的艱難
我覺得依靠Apple自己來放開api應該是不可能的了。如果我想自己用字體設計軟體來調節西文字符橫倒的話我該怎麼做呢?可否單獨複製這寫半角西文的字符到額外的區間?工作量會有多大?