發表文章

目前顯示的是有「fontconfig」標籤的文章

字型工作

昨天終於把 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。你可以將這個作法視為「絕對替換」看待。因此,這樣衍生出個小技法可以用在較少字的字型上,例如將中文字族偏好別名設定為西文字族,就可以替換掉中文字型中醜陋不協調的西...

cwtex-q-fonts 字型打包

首先,為了瞭解打包的概要,所以照著〈 How to create a GNU Hello RPM package/zh-tw 〉一文做了一次,約略知曉整個流程。 接著開始編輯 cwtex-q-fonts 的 spec 規格,這就像食譜一樣,只要寫得好,廚師就能直接煮出來。 嗯,講到這,我們得先準備好食材才行! 先切換到 ~/rpmbuild/SOURCES 擺放好所要的食材。也就是請前往 cwtex-q-fonts 的專案網站下載 0.2 版的封存檔,然後放到這個資料夾裡預備。抓下來的檔案叫做 cwtex-q-fonts-v02.tar.xz。 不過由於字型打包的 spec 樣板不在預設打包者工具中,要另外準備。所以如果你只有安裝前文所提及的 @development-tools 與 fedora-packager 的話還不夠,需要另外安裝: sudo yum install fontpackages-devel 裝好後,就能利用下列指令參照內含多款字型的軟體包其 spec 樣板: cd ~/rpmbuild/SPECS rpmdev-newspec -t fonts-multi cwtex-q-fonts 接著就來編輯 cwtex-q-fonts.spec 吧!用 vi 或是 gedit 都可以,順手就好。 利用樣板生成的檔案中,可以看到由 < 與 > 括住的地方,那是讓打包者替換所要內容的。①、②、③ 等數字編號,是小提示,拉到檔案最下方有註解解釋那段作什麼用途,或是選用填入之類的,整份檔案編輯完成後,記得把數字編號與最下方不再需要的註解移掉。 由於是第一次打包內含多款字型的字型包,不是很有頭緒,因此下載了一些字型 source rpm 來參考。 cd ~/rpmbuild/SPRMS yumdownloader --source google-droid-fonts cjkuni-uming-fonts wqy-microhei-fonts 用解壓縮軟體打開,找到附帶的 .spec 檔研究研究。 參考用 spec 檔開啟完後再回去 SPECS 資料夾。 cd ../SPECS 繼續改編 cwtex-q-fonts.spec 檔。 #global archivename %{name}...

一份開放中文字型改善專案提案書

開放中文字型專案發想 (未來可延伸至中文資訊處理技術)   前言 現有的漢字開放中文字型專案,如文泉驛項目與 CJKUnifonts 專案已經幾近停擺,或許是時候改善這塊開放中文字型領域。開放中文字型的永續發展,除了能改善漢字文化圈所有人的使用體驗外,也同時將漢字文化傳承下去、並進一步發展相關藝術,如此得以在數位時代下讓所有公民皆能自由應用漢字文化。開放字型授權建議以 SIL 的 OFL 為主。 理想 基本功能(從既有開放字型衍生) 一、線上組字: 利用網頁技術做出類似文泉驛網站上,大家皆可共同編修字庫中字元其字符樣貌的網頁程式,以既有開放字型為起點。參與者為任何網站註冊者,並且已完成初學者沙盒區教學、組過基本示範字符樣貌,且必須同意其著作將採開放字型之授權條款發布。 平日隨機在網站首頁顯示主打開放字型專案之字詞或成語的字符樣貌預覽,參與者可由此看見目前缺字狀況或詞彙中字符搭配時之協調性,以決定是否要增補缺字或改善既有字符。 以補缺字為例,參與者點按缺字進入該字繪字介面後,可見該字編碼資訊,以及白底九宮格(可開關格線)方格,有附帶字符繪製邊界之引導線(可開關引導線),處理該字符樣貌時,暫時(如 30 分鐘)鎖定字庫中該字符之編修,避免其他參與者再次更動以降低重複勞力之可能性。九宮格後方有可參考的骨架背景底圖(可開關底圖),繪字者可在畫面中檢索並取出各個基礎結構部件,或是其他可參照字符之部件,然後在方格中引用並排列出新的尚未有的字樣,再移動、縮放部件外框,並微調控制點;若經縮放,則縮放後應提示先前筆劃設定之直筆、橫筆寬度以便繪字者參考修正。組合完成並確認送出後,編輯畫面中有區塊可看見變動後之推薦詞語或成語之字符樣貌預覽,點按該區塊後進入預覽模式,可縮放,再點按指定字符後進入該字符編輯模式。退出編輯模式後則回到首頁。 流程:甫排好部件的字符樣貌之成熟等級為「一階」。經過組長第一次審對,遴選(若有多個字符樣貌貢獻的話)並調整出一個字符樣貌,正式進到字庫中,此時成熟等級為「候選」;組長由較具經驗者、熟練者擔任。字庫中字元提供已知之不同筆劃之異體字符可供繪字,但以其一種為預設正體(如臺灣、中國、香港、日本、韓國、大清……等)。 監督程序:每個發行週期內,監督從字庫定期(例如每兩個月檢討一次)挑出需要修改的字符加上「待修正」標...

為什麼 elementaryOS 預設中文字是「文泉驛正黑」(WenQuanYi Zen Hei)

首先,elementaryOS 雖然有引入 ubuntu 的「語言支援」機制,但沒有一併套用 /etc/fonts/conf.avail/69-language-selector-XX.conf 的機制 (沒有 ln -s 到 /etc/fonts/conf.d)。不知道是不是臭蟲一隻?還是故意的? 所以究其根本,是受到系統中預設裝有的 fontconfig 組態檔影響。主要是 65-nonlatin.conf 與 64-wqy-zenhei.conf 影響。 65-nonlatin.conf 一份已經超級過時但仍被持續使用,且維護者不想隨意更動的檔案。 這份檔案成立的年代甚至 AR PL UMing 都還沒改名... 不過意外的是有稍前時期 firefly 在晟鑫科技時發布的 AR PL New Sung 與 AR PL New Sung Mono。本檔案也因此沒列出目前 Linux 中正體中文最常用到的 AR PL UMing 字型。 當然,也因為檔案超舊的,所以甚至也沒有 WenQuanYi Micro Hei 與 Droid Sans Fallback 列在裡面啦!而且裡面還說 WenQunYi Zen Hei 是「serif」偏好,也是 sans-serif 偏好... 但它明明就不是 serif,這根本就是欺騙 Linux 社會啦! 64-wqy-zenhei.conf 一份看起來就是為了滿足私心,說著文泉驛正黑就是一切的組態檔。 裡面也一樣欺騙社會說 WenQuanYi Zen Hei 不只是 sans-serif 的偏好字型,也應是「serif」風格的偏好字型,這一樣在欺騙社會,而且明明就很難讀偏好個屁。比起 65-nonlatin.conf,它比較有良心的部份是說 monospace 偏好為 WenQuanYi Mono,是真的 monospace 風格。 這兩者一起加成發揮影響,WenQuanYi Zen Hei 就成了 Serif、Sans-serif、Monospace 的預設字型了..... Orz 結語 目前 Linux 下的 fontconfig 組態檔似乎還活在上個黑暗時代還沒文藝復興,也難怪 ubuntu 想要自己弄個 69-language-selector-XX.co...