| adm | Find | login register |
coolcd joined: 2008-01-21 posted: 2601 promoted: 348 bookmarked: 95 |
在友站看到一個中文字型問題 在 archlinux 試,發現預設設定下看這個檔案沒有問題,但把 ubuntu 的 69-language-selector-zhTW.conf 中的設定加入 local.conf 後,就產生了框框的問題(標題變成框框),所以我認為該檔中的設定應該是關鍵。 2004lanyu.pdf 這個檔案在標題的部分可能沒有內嵌字型,使用 poppler 中的 pdffonts 來看,該文件部分字型沒有內嵌,如:DFMing、DFLiShu……等,但標題到底採用何種字型,我不曉得可用什麼工具來看?只能猜測是一般人電腦中沒有的字型。根據 fontconfig 設定中的 49-sans-serif.conf,電腦中找不到相應字型時,會自動用 sans-serif 字型來顯示。 經過幾次實驗,發現把 binding=strong 改成 binding=same 或 binding=weak,就可以正常顯示該 PDF 檔的標題。 查閱 fontconfig 的文件,裡頭有提到,fontconfig 按照需求樣式來比對電腦中可用的字型時,是按照 foundry, charset, family, lang, spacing, pixelsize, style, slant, weight, antialias, rasterizer 與 outline 來決定的,愈前面的愈重要,而 binding 是特殊規則,binding=strong 的強度比 lang 強,binding=weak 比 lang 弱,這使得電腦缺少文件指定的字型時,能依文件語言來主導字型的選擇。 故在此例中,推測 binding=weak 或 binding=same 的時候,會依 PDF 文件的語言—中文,來選擇替代字型,因此沒有出現方框。如果是 binding=strong,似乎是—不管文件內容採用什麼語言,用 prepend 在 sans-serif 的第一個字型蠻幹就是了,所以出現方框。 以上是個人實驗與推測的結果,我只是普通使用者,如有不正確的地方請用力糾正。 (註:請不要說服我用中文字型來顯示英文!!) | |||||||||
coolcd joined: 2008-01-21 posted: 2601 promoted: 348 bookmarked: 95 |
結果是搞錯了 Orz 在 firefox 的介面正常,英文用英文字型,中文用中文字型,但在 Evince 還是只用 prepend 的第一個中文字型來顯示中、英文。猜想有可能是 Evince 或 Poppler 對 fontconfig 的 fallback 機制支援不足。或者,我前面的解釋是錯誤的,有可能 binding=same 或 binding=weak 時,因為依據文件的 lang 來判斷,強度大於或者覆蓋掉 binding=weak/same,所以依 lang 為主,就是用中文字型。 個人認為,除非中文字型裡的英文有所改善,否則,讓中文字型顯示中文、英文字型顯示英文是必要的手段。看來目前要達成這個目標,仍有待努力。
| |||||||||
guest |
Hello Coolcd, 很高興又再看到你,也謝謝你幫忙做測試。 Hemiola | |||||||||
coolcd joined: 2008-01-21 posted: 2601 promoted: 348 bookmarked: 95 |
太肉腳沒幫上忙 XD Hemiola 有空可以多來 hyperrate 玩 -- 之前我發的兩篇似乎邏輯上有點跳躍,說明一下好了,希望 Evince 達到的目標有二:
而 ubuntu 的 69-language-selector-zh-TW.conf 的內容是類似這樣的 <match target="pattern">
如果使用了 binding=same/weak,即使 prepend 的 font list 有英文字型,但因為範例文件是中文,所以可能因為 lang > binding=same/weak,所以依 lang 為主,直接用 font list 中的第一個中文字型顯示。我發第一篇文章時,因為沒注意到 Evince 中英文、數字仍用中文字型顯示,只注意到框框問題已經解決,所以才會建議用 binding=same/weak,其實在這個設定下,雖然看範例文件已經沒有框框,但其實還是僅用一個中文字型來顯示文件。同時,如果用 same/weak 的話,firefox 介面上的中英文,可以用中文用中文字型、英文用英文字型顯示。 如果用 binding=strong,理論上當使用英文字型顯示中文字失敗後,應該 fallback 到下一個字型,但 Evince 沒有做到這點,同時 firefox 介面上的中英文,都可以中文用中文字型顯示、英文用英文字型顯示。 所以個人的結論是,evince 在顯示 PDF 文件時,對 fontconfig prepend 的 font fallback 支援不足。 即使有人不在意美觀的問題,遇到較冷僻的中文字時,fallback 機制沒做好,照樣跛腳。改用單一中文字型來顯示中英文,也許可解決部分問題,但那不是治本的方法。 | |||||||||
guest |
沒錯!這個就是重點!改單一中文字型仍然沒有解決問題。 抱歉刪掉你其他的意見。今天太晚了,我明天再來好好研究。
Hemiola |
| adm | Find | login register |