合字(ligature)是指,在某些情況下,一個或以上的字符會以不同於獨立字符排列在一起的方式組合起來,形成一個新的圖樣。舉例來說,中文的「招財進寶」寫在春聯上的樣子就是一種合字;阿聯國際航空公司的公司圖案(logo)上面也有一個很漂亮的合字(見左上角紅框);有許多字體可以把拉丁文中的ff和fi排成比較漂亮的形式(見此。)。這些合字讓人看起來很舒服,而且有一種在欣賞藝術品的感覺!
有些合字比較少會在文件中使用,而有些合字則是太常被使用,而讓人沒有留意到他的存在。如果手上有本英文雜誌或英文書,就有機會可以找到fi, ffi的合字。
合字能否顯示,取決於文字繪製軟體,以及所使用的字型。據我所知,tex(xelatex, latex, plain tex等)以及其預設字型對於拉丁文合字有很好的支援。Harfbuzz也會在字型允許的情況下使用合字。至於字型方面,舉例來說,DejaVu Serif是一個可以支援合字的字型。所謂的「支援合字」並不只是字型本身含有合字的圖樣,也應含有「如何把原本文字替換成合字」的指示。(也就是,支援合字的字型除了要有fi合字以外,也要包含「"fi"字串替換成fi合字」的指示)
一個字型能不能支援合字,可以利用otfinfo來查看:
$ sudo yum install texlive-lcdftypetools # 有些版本的Fedora是lcdf-typetools $ otfinfo -f /usr/share/fonts/dejavu/DejaVuSerif.ttf aalt Access All Alternates ccmp Glyph Composition/Decomposition dlig Discretionary Ligatures kern Kerning liga Standard Ligatures mark Mark Positioning mkmk Mark to Mark Positioning salt Stylistic Alternates有了這個功能,那麼harfbuzz, xetex都可以在不接受任何指示的狀態下進行恰當的合字替換。
這裡面比較詭異的地方是,有許多ttf字型裡面確實有fi合字的存在,xetex和harfbuzz均沒有自行使用的情況。以xetex的情況來說,我們可以利用fontmapping的方式來自行替換。對這項技術有興趣的人可以參考這裡。
沒有留言:
張貼留言