字型工作

昨天終於把 cwTeX Q fonts 的 fontconfig 寫好了,接下來就是推入 fedora 官方了。

不過使用時也發現一些 cwTeX Q fonts 的字樣可以改善的地方,例如 Hei 體的全形標點長得太性格,以及希望將英數換成 Cantarell 這樣也就不用別名強綁定;小字希望能嵌入點陣等。所以等打包工作告一段落後,也打算 fork 一個 cwTeX Q fonts 以修改成自己期望的樣子,並開始協助 Droid Sans Fallback 字形臺灣版的編修。

目前在 GitHub 上開了個 l10n-tw 組織,打算將來這些字型改善計畫統統納入旗下。


以下是一些 fontconfig 設定的知識紀錄與心得分享。

別名的設計原意就是用來替換字族。例如想要用 Times 可是手邊只有類似的 Times New Roman,那就可以將 Times New Roman 設為 Times 所偏好的別名,這樣一來,當有人要「Times」的時候就會給他「Times New Roman」 。
  • 〈別名〉的〈偏好〉可以依順序羅列多項,會依內含字族的撰寫順序前置於比對的清單之前。提供一個不是很正規的技巧,就是可以羅列多種風格類似的字型,這樣系統就會由上而下取字,能讓原名字型有更大的覆蓋率。這個技巧的壞處就是,羅列的字型都會成為原名字型的別名... 這會間接影響到其他字型比對的運作機制。
  • 〈別名〉的〈接受〉可以依順序羅列多項,會依內含字族的撰寫順序附加在比對的清單之後。
  • 〈別名〉的〈預設〉會將內含的字族附加在比對的清單最末端,主要用來設定字族所要採用的預設字型。常見用法為指定 sans-serif 等通用字體名稱,讓內含的別名字族成為該字體的預設字型。
  • 〈別名〉的「強」屬性綁定,會讓字族元素比語言元素還先比對,這用起來幾乎等於是別名項目覆蓋掉原名項目。例如將 cwTeX Q Hei 偏好的字族別名設為 Cantarell 與 cwTeX Q Hei,並且屬性為「強」綁定,那麼當有人要 cwTeX Q Hei 時,其實系統會直接給 Cantarell,遇缺才會找 cwTeX Q Hei。你可以將這個作法視為「絕對替換」看待。因此,這樣衍生出個小技法可以用在較少字的字型上,例如將中文字族偏好別名設定為西文字族,就可以替換掉中文字型中醜陋不協調的西文字型。但如果反過來,把少字字族偏好別名設為多字字族;別以為這樣可以增補覆蓋率,這樣就只是直接替換罷了。值得注意的是,這只是單方面的一廂情願,所以想要讓西文字族有後備中文字族可用,還是要另外設定西文字族的別名〈偏好〉。
  • 強屬性綁定的最愚蠢用法,就是搭配「濫用」別名。例如,將實為有襯線字體的 AR PL UMing 的別名預設為 sans-serif、serif、monospace 等字體;然後你想說 AR PL UMing 的英數不好看,想替換成 DejaVu Sans,所以順手設個強綁定。那麼恭喜你,你的 sans-serif、serif、monospace 的英數字沒意外都會變成 DejaVu Sans (然後中文字都會 fallback 到 AR PL UMing)。
至於〈比對〉的〈測試〉元素,可以指定欲測試的名稱屬性,例如「語言」、「字族」,選項根據屬性名稱不同,也有比對、模式等可用,所以要用可以查 fonts-conf 的表來看範例,依樣畫葫蘆即可。

我們可以根據語言、字族作為條件比對,這樣就能找出特定語系下遇到某字族時該如何回應。例如我們可以這樣作,當比對的語言測試條件為〈zh-tw〉,且字族的測試條件為〈sans-serif〉,如果情況確實如此,系統回應他字族時,就前置個〈cwTeX Q Hei〉在比對所得列表的最前方。但要注意這即使設好了,也不見得完全如你所願,因為可能有人已經用別名設好 sans-serif 的預設字族了,這時零零總總的比對機制執行完後,你用前置的方式不見得可以搶到第一,除非你確信你的 fontconfig 條件很後面才執行,有信心可以擠掉其他人的卡位。

Bold 樣式的字型,似乎預設無法「偽粗」,要手動設定 embolden 為〈真〉才能看到偽粗體效果。但即使如此,LibreOffice 所採用的 HarzBuff 可能不吃 fontconfig 那套,還是不給偽粗。

如果想要小字點陣,比對時測試像素大小會比大小 (級數) 好;因為大小會隨 DPI 變動。

==== 附註 ===
由於個人撰寫的設定檔強綁定 Cantarell 作為 cwTeX Q Hei 字族之故,經過複雜的比對機制之後,結果會導致 cwTeX Q Yuan 與 cwTeX Q Fangsong 在某些區段被 Cantarell 凌駕,例如「中日韓相容表意文字」區段,會改用 cwTeX Q Hei 顯示,這並非預期效果。fc-match -s 的結果,會發現 Cantarell 在其餘 cwTeX Q 字族 (包括 Yuan 與 Fangsong) 後方虎視眈眈;因而推估強綁定 cwTeX Q Hei 時,影響也會同時擴及至其他 cwTeX Q 系列字族。

唯一的解決之道就是不要用強綁定,而直接改字型替換西文部份,其餘 cwTeX 字族其 fc-match -s 的結果就不會馬上接 Cantarell,「中日韓相容表意文字」區段也會以原本姿態呈現。

至於要推入 fedora 官方的版本,其 Hei 體的 fontconfig 將不會使用強綁定,以維持 cwTeX Q fonts 本身的樣貌,尊重原作。至於本人偏好的英數改用 Cantarell 之 Hei 體,在動工 fork 之前先暫時用 fontconfig 頂著,未來名稱也將變換,以避免和 cwTeX Q fonts 混淆。

留言

這個網誌中的熱門文章

直行橫列,以及 line (列/行), column (欄), row (列)

正體中文、繁體中文?

Permission 權能/取用權; Permission denied 取用遭拒; Ask for permission 請求權能/取用權; Don't have the right permission to 沒有權能/無權