| adm | Find | login register |
coolcd joined: 2008-01-21 posted: 2601 promoted: 348 bookmarked: 95 |
這串討論上承 請幫忙測試 Linux 下 Firefox 字型 因討論與主題偏離,故開新文討論
依我實測 sans-serif,沒有 prepend binding 之類的設定時,改變 65-nonlatin.conf 內 sans-serif 中文字型順序,確實會影響 fc-match 的排序,但如果有自己加 family prepend 或 binding 的設定,或者某些字型加了 family prefer (如 WenQuanYi ZenHei),也會影響字型的取用順序。 hemiola 大哥不要一直叫我啦,這樣可能別人不好意思參與討論 XD | |||||||||||
guest |
XD 抱歉抱歉,說得也是,希望大家一起討論。 我剛在正體中文 ubuntu 下很簡單地試了一下,發現有太多檔案有關,測到都有點亂了。 砍掉 69-language-selector-zh-tw.conf 後,用 fc-match --sort sans 來看,wqy-zenhei 變成 sans 的第一位,發現原因是 44-wqy-zenhei.conf 。 照 http://wenq.org/forum/viewtopic.php?f=6&t=943 修改了 44-wqy-zenhei.conf 後, AR PL UMing HK 變第一位,原因是 64-ttf-arphic-uming.conf 。 把 64-ttf-arphic-uming.conf 砍掉,wqy-zenhei 變回第一位,原因…不知道,找不到是哪個檔造成的…。似乎是 65-nonlatin.conf。 接著我照 http://wenq.org/forum/viewtopic.php?f=6&t=943 此篇二樓的做法使用 local.conf 後,排第一位的變成是 wqy-microhei,我以為會是Bitstream Vera Sans,但是都沒有。 從這測試看來,中文字型長久以來的問題,造成 fontconfig 的混亂,以現在的版本來說,64-ttf-arphic-uming.conf 似乎根本不需要了,重點是如 http://wenq.org/forum/viewtopic.php?f=3&t=926 所說的,好好地修 65-nonlatin.conf。 另外我問這個問題和做這些測試,是希望找到不用 69-language-selector-zh-tw.conf 可以達到 sans 第一位 dejavu sans、第二位 wqy-microhei 的方法,不過看來都行不通,似乎一定得用 mode="prepend" binding="strong"。 | |||||||||||
coolcd joined: 2008-01-21 posted: 2601 promoted: 348 bookmarked: 95 |
我前兩天就是在做跟你一樣的事,才會感嘆,為何 fontconfig 設定那麼複雜! 去官網查說明,看到一篇 fontconfig-user ,沒有看得很仔細,但有看到一個重點 <alias> 內可以接四種 element,<family>指定要作用的字型,<prefer>、<accept>與<default>,這三個 elements 各自有其功用,內部可再指定<family> <alias> 會針對 <alias> 內第一層 <family> 內指定的字型A 動作,<prefer> 是將字型B prepend 到字型A,<accept>是將字型C append 到字型A,<default> 則將字型D 加到字型A 的最後。 <alias><family>A</family> 你的系統有安裝 Bitstream Vera Sans 嗎?如果沒有,45-latin.conf 會在 Bitstream Vera Sans 後加上 sans-serif,你看到的結果可能是 sans serif。
應該把 WenQuanYi 那種強迫人家使用它的設定拿掉,修好 65-nonlatin.conf。只是繁體中文的 sans serif 可能有點麻煩,有人可接受 WenQuanYi、Droid Sans Fallback 的中文字型(非台灣寫法),但肯定有人不喜歡。要用微軟正黑體,好像鼓勵使用微軟不太好,cwTexHeiBold 又不夠清晰,總之如果有意思要改順序,還需要大家先討論出一個共識。在 local.conf 指定 prepend 或 prefer 應該還是目前比較實際的解法。 conf.d 內的設定應該能不改就儘量不改,以免升級時麻煩。 | |||||||||||
guest |
你實作有成功嗎?我在 ubuntu 下照你上述的說明,怎麼試都不行,只要 69-language-selector-zh-tw.conf 一拿掉,sans 排第一位的一定中文字型,即使 prefer 裡是 dejavu sans 也一樣。 下次用 archlinux 試試看。 | |||||||||||
coolcd joined: 2008-01-21 posted: 2601 promoted: 348 bookmarked: 95 |
應該算有成功吧…… 我在 local.conf 加入以下設定 <alias> $ fc-match --sort sans 出來的結果,是先 cwTexHeiBold,再 Liberation Sans 看似沒有成功,但實際上用 gvim、firefox 測試,當指定用 sans 顯示時,英文會用 Liberation Sans 顯示,中文會用 cwTexHeiBold 顯示,符合我的期待。 所以我懷疑是 fc-match 的 bug。 | |||||||||||
ychao joined: 2007-10-25 posted: 298 promoted: 21 bookmarked: 3 |
之前根據 LGJ 前輩的說法,得用 binding="strong"。不過應用軟體取字fallback的順序,不知是否跟fc-match是一樣的? | |||||||||||
coolcd joined: 2008-01-21 posted: 2601 promoted: 348 bookmarked: 95 |
條條大路通羅馬,應該不只一種方法可以達到同樣或類似的效果。 至於應用軟體取字 fallback 順序是否與 fc-match 一樣,要看軟體對 fontconfig 支援度如何吧。之前 firefox 支援還 ok,chrome 不 ok,但現在好像反過來了。 | |||||||||||
guest |
Firefox 修好囉!不過不知道為什麼,要等到 Firefox 9…。 | |||||||||||
本人已不在此站活動 joined: 2007-09-19 posted: 4946 promoted: 325 bookmarked: 206 歸隱山林 |
這兩種設定方式意義上是不一樣的。strong 的設定是忽略 locale 及 fc cache 的內容強迫指定。cooled 的設定方式則沒有[完全]這樣做。 fc 找字時會先參考 locale,然後檢視字型的 lang tag,及其它 fc-cat 裡頭的資訊,所以常常兩個人的 fc 設定明明一樣,但甲的顯示方式卻和乙的顯示方式不一樣。fc-cat 裡頭的資訊又是經過 fc-cache 的判斷,例如 lang 字型上標示為 zh,但經 fc 檢視的結果,字數不足以表達 zh,那麼 zh 的 lang tag 會被略過,但此時其他應用程式可能直接自行檢視這個字型,最後的結果就會和 fc 不一致了。 由於字型規格並不完全統一,字型品質也不一致,應用軟體的做法又不一樣(例如排版軟體一般是會無視 fc 的),每個人的 locale 設定又不一樣,為避免麻煩,所以才會使用 strong binding 的方式。
edited: 2
|
| adm | Find | login register |