這是字嗨社長 But 撰寫的一系列字型設計方法,包含英文與中文,推薦各位字型設計的有志之士從此開始學習。閱讀系列文章「字型設計自己來」
在開始字型製作之前,可以先認識一些字型設計時常常會碰到的名詞,以及一些預備觀念。 首先,讓我們從拉丁文字談起。雖說是拉丁文字,這裡也不談法文的重音符號或德文的神祕組合(因為我也不懂!),所以篇名就叫做英文字型設計了。
英文的字型設計上,最重要的一條線,是文字落腳的基線(baseline)。接著要去安排幾條線的位置,這些線的位置會大幅影響整個字型給人的印象。
- x 字高(x-height):x 字高是 a、c、m、n、x 這類小寫字母的高度,計算方式從基準線開始,到這類小寫字母的頂端,頂端這條線則稱為主線(mean line)。
- 上伸線(ascender line):小寫字母如 b、d 等高於 x 字高的部分稱為上伸部(ascender),上伸部頂端的線則稱為上伸線。
- 下伸線(descender line):g、p、y 這些小寫字母,超過基線下方的部分稱為下伸部(descender),下伸部底端的線稱為下伸線。
- 大寫線(cap line):大寫高度的頂端。基線到大寫線之間的高度稱為 大寫字高(cap height)。雖然我們在學寫英文字母的時候,大寫的高度也是對齊上伸線,但許多字型設計上會另外安排一條大寫線,給字型更多變化。例如稍微區分大寫 I、小寫 l 的高度,或是在設計上給人大小寫有點區別的印象。
英文因為有上伸部、下伸部的存在,文字有高低起伏的印象,對於單字的辨識性有不小的作用。一般來說,上伸部與下伸部的高度差異不會太大,否則 b、p 看起來就會很不對稱。
而 x 字高與上伸部的相對高度則是另一個重要學問,當一套字的 x 字高相對愈高,在同樣的文字大小下會顯得看起來較大。在螢幕之類的載體上,小字時的易辨性稍高,所以近年螢幕用數位字型的 x 字高似乎有點偏高傾向。而 x 字高較低者,與手寫較為接近,造型顯得比較自然。較古典的人文主義風格、舊風格,一般來說 x 字高都不高。
不過,請稍加注意一下在討論 TrueType、OpenType 字型技術的術語上,通常把基線到上伸線之間的整個高度稱之為 ascent。與傳統上伸部的定義不太相同。而一般定義 ascent 加上 descent 的高度為文字的 em大小。(感謝Julius的指正,之後會另外寫一篇來討論 em size)
在設計一個英文字時,先在上面設定的這幾條線之間,做出文字的造形。這個文字填滿的方形空間,稱之為 bounding box。
接下來,要決定左右各留下多少空間。就像傳統鉛字一樣,行距可以在排版時另外調整,但字與字之間是直接把鉛字排在一起,不會逐一去塞鉛角。所以要逐字訂出左留白(left side bearing)與右留白(right side bearing),讓文字排列在一起時,就留出適當的間距。為了讓字型每個字距離保持穩定,整套字型的左留白、右留白值,應做整體性的規劃。再針對幾個特殊的字(如 f 的右留白值)另外調整。
最後,bounding box 的寬度加上左右留白的總寬度,稱為步進寬度(advance width)。
當文字在顯示的時候,字型的渲染引擎沿著基線,逐一把每個字填在下一個位置上,並前進一個步進寬度。於是,這裡可以得到一個寬度公式:
不過,這裡的留白(side bearing)是可以有負值的。以下圖這個義大利體(italic)的 f 為例,整個橘框都是 bounding box,然而左、右兩側的留白都是負值,實際的步進寬度只有中間白色的區域。這是因為 f 這個字,在常態下,前後的字元都塞在它的留白位置內,如右方 afa 文字的範例。
也就是說,文字字符的寬度(也就是 bounding box 寬度)可以比步進寬度要寬,在現代的數位字型上,是理所當然的特性。但只不過幾十年前,英文打字機、甚至電腦初期用的點陣字,就很難做到這一點了。