讓netscape字型更美麗 有朋友問到 fonts.dir 及fonts.alias 的問題, 因為最近轉了一些 TTF 給 X-window 用, 正好來講一下使用經驗. 找到一個轉 TTF 為BDF 的程式TTF2BDF.exe(1.1版), 是Li Wei Jih 寫的, 這是個在Win95裡跑的, 它可以把 True Type 轉成 BDF 格式. 再把它丟給Linux/FreeBSD....裡X-window 附的程式 "bdftopcf" 轉成 PCF 格式. 指令是: cat m20.BDF bdftopcf -o m20.pcf 再 gzip m20.pcf 以產出 m20.pcf.gz 『P.S. XFree 3.3 以後可以用 gzip 壓縮字(如 xxxxx.pcf.gz), 之前 是用compress 壓縮字(如:xxxxx.pcf.Z) 3.3版可以較省空間.』 有的機組我目前沒有用 CXserver, 而是直接用原來的 Xserver, 因此直接在 /usr/X11/lib/fonts/misc 下放置各國字型, 包括台灣、日本、韓國、中國 等等字型都放在一齊, 舉例如下:這是日本JIS 字集: jiskan24.pcf.gz -jis-fixed-medium-r-normal--24-230-75-75-c-240-尾長,刪 jiskan16.pcf.gz -jis-fixed-medium-r-normal--16-150-75-75-c-160-尾長,刪 這是韓國KSC 字集: hanglm16.pcf.gz -daewoo-mincho-medium-r-normal--16-120-100-100-尾長,刪 hanglm24.pcf.gz -daewoo-mincho-medium-r-normal--24-170-100-100-尾長,刪 這是中國GB 字集: cclib16st.pcf.gz -cclib-song-medium-r-normal--16-160-72-72-c-160尾長,刪 cclib24st.pcf.gz -cclib-song-medium-r-normal--24-240-72-72-c-240尾長,刪 P.S.以上『外國』字集在 XFree86 3.3 以前是灌了 X 就有, 3.3 起要人工 另外放進去. 以下是自行 DIY 產出的部份台灣Big-5 字集: kt40.pcf.gz -tw-web-medium-r-normal--40-400-100-100-c-400-big5-0 kt33.pcf.gz -tw-web-medium-r-normal--33-330-100-100-c-340-big5-0 r30.pcf.gz -tw-web-medium-r-normal--30-300-100-100-c-300-big5-0 r27.pcf.gz -tw-web-medium-r-normal--27-270-100-100-c-280-big5-0 li23.pcf.gz -tw-web-medium-r-normal--23-230-100-100-c-240-big5-0 li20.pcf.gz -tw-web-medium-r-normal--20-200-100-100-c-200-big5-0 m17.pcf.gz -tw-web-medium-r-normal--17-170-100-100-c-180-big5-0 m16.pcf.gz -tw-web-medium-r-normal--16-160-72-72-c-160-big5-0 m15.pcf.gz -tw-web-medium-r-normal--15-150-100-100-c-160-big5-0 m13.pcf.gz -tw-web-medium-r-normal--13-130-100-100-c-140-big5-0 li23.pcf.gz -li-edi-medium-r-normal--23-230-100-100-c-240-big5-0 h20.pcf.gz -he-edi-medium-r-normal--20-200-100-100-c-200-big5-0 kt20.pcf.gz -kt-edi-medium-r-normal--20-200-100-100-c-200-big5-0 m20.pcf.gz -m-edi-medium-r-normal--20-200-100-100-c-200-big5-0 li16.pcf.gz -li-edi-medium-r-normal--16-160-72-72-c-160-big5-0 et16.pcf.gz -et-edi-medium-r-normal--16-160-72-72-c-160-big5.et-0 m15i.pcf.gz -mi-edi-medium-r-normal--15-150-100-100-c-160-big5-0 在 fonts.dir 裡的這些都是用手工編寫的喔! 為什麼不是用 mkfontdir 產出呢? 其實fonts.dir 並不一定要由執行 mkfontdir 來產生, 只要你知道它的格 式, 例如在用 "TTF2BDF.exe" 轉字型時, 可以看到它的「格式標示」, 因 此可以用任何editor 加以編輯, 特別是以下的用法時, 根本無法用 mkfontdir 產出如預期『可以使用』的 fonts.dir, 非用手工編輯不可. 這些由TTF 轉來的字不管是 x 字 y 字 z 字, 都用完全同樣的「尾巴」: xxxx.pcf.gz -big5-font-medium-r-normal--20-200-100-100-c-200-big5-0 yyyy.pcf.gz -big5-font-medium-r-normal--20-200-100-100-c-200-big5-0 zzzz.pcf.gz -big5-font-medium-r-normal--20-200-100-100-c-200-big5-0 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 因此, 假如你轉來三種 20 點陣的字, 但若是用 mkfontdir 做的話, 結果只 剩 zzzz.pcf.gz 在 fonts.dir 裡面, 因為它們的 標示格式 「-big5-font-medium-r.........」完全一樣, 而mkfontdir 根本 不知道你給它的是不一樣的東東. 使用多個『同級字』有什麼用呢? 我為了給不同環境使用不同的字型, 用手工的方式, 把同是 20 點字的加以 分類為 -xx-web-..... 或者 -xx-edi-..... 有 -web- 是要給Netscape 用, 而 -edi- 是要給其他editor 或shell(如crxvt) 用. 注意: 在 fonts.dir 裡所有字型的「格式標示」不可以重復 這有什麼特別呢? 請看 -web- 那一組, 完全沒有「重復出現同級字」這是因為Netscape 在換選 字型時 Option --> General Preferences --> Fonts 時, 只會找同一類標示 的字, 我把要給Netscape 用的字都改成 -xxx-web-....., 這樣, 在Netscape 裡看文章時就會有大小及字型變化, 例如大標題顯示的是『勘亭流』中標題顯 示的是『圓體』小標顯示的是『隸書』本文部份則是『明體』......不像在 Win95 的環境裡整篇都呆呆的用同一型字..... 美觀吧 而 fonts.alias 則只要把已經加入 fonts.dir 裡的字組整行 copy 過來, 並 把xxxx.pcf.gz 的 「.pcf.gz」去掉就可以, 或者為了「呼叫」時易記, 可以 給它任何一個你容易記的名字, 例如本來是 m20.pcf.gz 去掉後變成 m20, 但 你可以把它改成 ming20 去呼叫 m20.pcf.gz 就在fonts.alias 寫成: ming20 -m-edi-medium-r-normal--20-200-100-100-c-200-big5-0 用 li20 去呼叫 li20.pcf.gz 就寫成 li20 -tw-web-medium-r-normal--20-200-100-100-c-200-big5-0 簡單做個結語, fonts.dir 可以依須要用手工編寫, fonts.alias 的「標示格示」要跟fonts.dir 完全一樣, 就是: aabbcc.pcf.gz -aa-bb-ccc-ddd-ee-ff-00-11-22-33 <---在fonts.dir xxyyz -aa-bb-ccc-ddd-ee-ff-00-11-22-33 <---在fonts.alias 呼叫方式: 在 Netscape 只認 fonts.dir 裡的 -aa-bb-ccc-ddd-ee-ff-11-22-33 來呼叫aabbcc.pcf.gz 在 crxvt 可以用 xxyyz 來呼叫 aabbcc.pcf.gz 遺漏及錯誤之處還請大家指正、補充及提出大家的使用經驗.