[爆卦]chrome字體渲染是什麼?優點缺點精華區懶人包

為什麼這篇chrome字體渲染鄉民發文收入到精華區:因為在chrome字體渲染這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者mayuyu ((・ω・)ノ)看板Browsers標題[情報] Firefox和Chrome的字...


先放幾張字體渲染效果
圖(1920x1080)不能放大縮小要1:1(100%)顯示才不會模糊失真

Firefox
http://i.imgur.com/B2JdEBX.png
Chrome
http://i.imgur.com/p0r5sxI.jpg
Firefox
http://i.imgur.com/4QI1tSt.png
Chrome
http://i.imgur.com/07DdUR4.png
Firefox
http://i.imgur.com/pLwbWtN.png
Chrome
http://i.imgur.com/f7vCBls.png
Firefox
http://i.imgur.com/dMQtuaa.png
Chrome
http://i.imgur.com/5P458zV.jpg

日文
http://i.imgur.com/701yoqG.png
簡中
http://i.imgur.com/pLnHXJC.png
好讀
http://i.imgur.com/p6mdoYz.png

我平常看文章的瀏覽器都是用火狐,因為火狐很早就支援
微軟的DirectWrite字體渲染加速,在以前的時候
如果系統沒有用Mactype另外做字體渲染,Chrome開起來的字體
實在不能看,文字的線條很細,顏色淡到快看不到,而且邊緣支離破碎,
線條比較密集的文字就會整個黏在一起、糊成一團。
所以那時候兼顧瀏覽器硬體加速的效能,還要看起來輕鬆易讀不傷眼,
我最好的選擇就是用火狐來閱讀文章,同時可以搭配ScrapBook來擷取網頁。

後來Chrome也開始支援DirectWrite,但是早期支援的效果很差,
文字破碎得更嚴重,有些系統甚至會發生文字消失,介面變成一片空白的情況,
所以當時大家都是進chrome://flags,把實驗性的DirectWrite功能給停用。
又過了一段時間,Chrome的DirectWrite終於到了可以正常使用的程度了,
而且預設也改成是開啟的,但是很可惜Chrome沒有開放參數給大家調整,
字體渲染的效果和強度都是固定的,使用者不能隨自己的喜好改變。

我當時有比較了一下Fx和Chrome的渲染效果,覺得自己調整後
還是Fx看起來稍微好一點,再加上Fx有二個模擬平板觸控拖曳滑動的擴展,
可以在網頁上任何位置用拖曳或滾輪的方式來慣性滑動或滾動畫面
(請參考#1KiIIJVN),用桌機版瀏覽器看Pocket、Evernote Clearly、
Instagram、Pinterest、Twitter、Facebook等網頁,可以自由的拖曳滑動,
就像用手機版一樣方便,再搭配Imagus圖片預覽擴展,滑鼠游標移到圖片上
就可以預覽原始大圖,看500px、Flickr等圖片網站甚至更方便。

雖然Chrome也有類似的擴展,但是我覺得Fx版的比較好用,滑動更順暢。
再加上FireGestures的手勢操作幾乎無所不能,實在太好用,
(我很少需要去點擊標籤頁來開關分頁、跳轉分頁,也沒有按過
上下一頁的按鈕來前進後退,都是在原地畫手勢就可以完成這些操作)
所以後來仍然繼續使用Fx作為主要的閱讀工具。

幾個星期前,我突然注意到同樣開啟美好的一天首頁
http://skyinc.net/zh-tw/
Fx的字體渲染很慘,天氣和時鐘的數字邊緣都是鋸齒狀,
可是用Chrome開同一個網頁,數字的邊緣卻非常的平滑
http://i.imgur.com/j4E13Zq.jpg

很奇怪,看起來好像Fx的字體在這個網頁上沒有成功渲染,
但是Chrome也未免太平滑了吧?!
因為實在太奇怪了,所以我研究了一下,
結果發現差異是在於我使用的t7yang大寫的字體替換樣式
「KillSerif 明蘭秀月 Style v3.0」(#1JodN9L7
將網頁常用的襯線字體替換為自己指定的無襯線字體,
讓網頁看起來更美觀、清楚,變得更好閱讀。

這個樣式最後有一個為字體加上陰影(稍微加粗加黑)的效果
/* 文字陰影效果,開啟後會有文字加粗的感覺,粗度建議範圍0.001~0.01em */
body {
text-shadow: 0 0 0.001em;
}

我有把它打開,Chrome開啟這個css渲染後,渲染效果非常強,
字體已經可以開始感覺到有一點霧霧的,但是還不到非常模糊的程度,
而且這樣顯示起來的效果字體邊緣非常平滑

而Fx同樣用0.001em,渲染效果卻很微弱,
我試了調整0.001em~0.014em,看起來效果完全一樣,沒有變化。
但是調整到0.015em的時候,渲染效果就突然增強了,瞬間跳了一級,
字體也變得非常平滑,但是卻比Chrome模糊一點,
也就是說渲染強度排起來比較的話:
Fx0.001em~0.014em < Chrome0.001em < Fx0.015em

Fx從0.014em到0.015em一下子就四捨五入跳了很大的一級,
沒有像Chrome0.001em那樣中間的效果。
所以我覺得很傷腦筋,Fx調0.014em效果太弱,調0.015em效果又太強。
我嘗試調整Fx的about:config裡面的gfx.font_rendering.cleartype.*
這一群調整字體渲染效果的設定,嘗試把硬體渲染的效果改銳利一點。
然後也換過css渲染的單位,改成text-shadow: 0 0 0.21px;
但還是沒有辦法,一經過css渲染以後,渲染的效果還是太強,
最終顯示的結果字體還是會變得霧霧的。

我已經很久沒有使用Mactype來渲染Fx,一直都是用Fx的硬體加速渲染。
百般無奈之下,我只好關閉Fx的硬體加速(Direct2D),
讓Fx可以使用系統上的Mactype的渲染,用Mactype來試試看
能不能取得折衷的效果。

只要在Fx的選項設定中,把「可用時開啟硬體加速」這個選項取消勾選,
Mactype就可以成功渲染Fx。
但是用這個方法取消硬體加速會連OMTC圖層合成加速的功能也一起失效,
也就是layers.acceleration.disabled這一項參數會被設為true。
所以我不是直接取消勾選,而是在about:config中,單獨關閉Direct2D,
把gfx.direct2d.disabled設為true,重新啟動Fx。

這樣子就可以保留OMTC加速的功能,單獨關閉Direct2D和DirectWrite。
如果成功的話,在about:Support裡面會顯示
「已啟用 DirectWrite」false
「GPU 加速視窗」1/1 Direct3D 11 (OMTC)
「AzureCanvasBackend」skia
「AzureContentBackend」cairo
「AzureFallbackCanvasBackend」cairo

Azure圖形處理引擎的介面會從Direct2D變成skia/cairo,
同時「已啟用 DirectWrite」會顯示false,
但是「GPU 加速視窗」會顯示1/1,使用Direct3D或者是OpenGL,
如果這一項顯示的是0/1 Basic (OMTC),代表OMTC加速啟用失敗。

使用Mactype渲染美好的一天
Firefox
http://i.imgur.com/2mdCt4K.jpg

看起來很完美。
不過我遇到幾個以前沒遇過的問題:

1. 新版的Fx改用skia/cairo + OMTC後,會變得很不穩定。
我使用的是pcxfirefox 35.0.1 x64的版本,
切換標籤頁的時候常常會發生卡住的現象,
Fx會暫時失去回應,而且時常發生閃退,程式會自己關閉。
我翻了一下bugzilla,目前已知skia/cairo在雙GPU上會發生問題,
同時也已經在37a版修復這個bug,可是我是單GPU 囧
或者是我使用的x64 + Mactype渲染組合的問題,
可能x86不會發生這個現象,我沒有測試。

2. 我將字體改為「明蘭」和「秀月」,結果Fx啟動的時候,
不會馬上載入無襯線的明蘭字體,英數字會變成有襯線,
要等經過120秒以後,英數字才會變回無襯線。
解決的方法:
將gfx.font_loader.delay的數值由120000改為1000(一秒鐘)
你可以自己修改延遲的時間長短。

3. 經過Mactype渲染後,網址列和標籤頁的文字會被削頭。
文字的頂端會有一部份不見,看起來好像被切掉一樣。
解決的方法:
Mactype新版有為這個問題提供一個參數作修正,
把下面的參數加到Mactype的ini設定裡:
;指定對Firefox.exe做文字削邊的修正
[[email protected]]
ClipBoxFix=1

加了這個參數以後,網址列和標籤頁削頭的現象就修正了,
但是我發現在某些網頁上,會變成文字的底端有輕微的削邊現象。

4. BBSFox裡移動游標的時候頁面更新會產生字體劇烈抖動的現象。
同時版面顯示,左右會稍微的擴大。
尤其是在BBSFox底下,OMTC + skia/cairo + Mactype更容易發生閃退的現象,
有時候剛開啟Fx,打開BBSFox滑沒幾下,Fx就瞬間閃退了Orz

所以雖然真的很好看,我用一用還是換回原本的DirectWrite渲染xD


--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.219.36.31
※ 文章網址: https://www.ptt.cc/bbs/Browsers/M.1422890095.A.BD3.html
abccbaandy: 借個標題問問,如果網頁有指定字型,替換好像就會失效 02/02 23:37
abccbaandy: 難道要一個個字型加入? 02/02 23:37
mayuyu: t7yang大的樣式已經將中文網頁常見的字型都寫好了 02/02 23:51
mayuyu: 如果網站指定的字型在這些預設的字型之外 02/02 23:51
mayuyu: 而你又想強制替換的話 確實是要手動加入沒錯 02/02 23:51
mayuyu: 例如pocket使用的襯線字體我就覺得不好讀 02/02 23:51
mayuyu: 所以就手動把pocket用的chaparral-pro給換掉 02/02 23:52
mayuyu: 有別種寫法可以強制替換所有字型 可是這種無條件替換法 02/02 23:54
mayuyu: 反而會造成更多的問題 所以還是用t7yang大的樣式比較好 02/02 23:54
mayuyu: 因為要貼圖又打開Mactype 結果剛剛推到一半 Fx又閃退了Orz 02/02 23:54
Wcw5504: FX到36也要支援unicode-range了 以後寫CSS會比較方便 02/03 00:11
Triedge: mayuyu桑請問一下你這字型有分字重嗎,還是單一款式@@? 02/03 00:28
t7yang: 樓樓上說的要是成真的,我就被感動到了(淚 02/03 01:35
t7yang: 那個問題在bugzilla都不知道擺了多久了 囧興 02/03 01:35
t7yang: 這篇文章大概要仔細讀一下,應該會獲得一些新的資訊 02/03 01:39
t7yang: 尤其是Chrome的部分。倒是我比較在意的是 FX 成像上的延遲 02/03 01:39
t7yang: 就是之前我一直反覆提到的,以Gmail作為例子,只要捲動 02/03 01:40
t7yang: 卷軸文字就失去強化成像的效果,要等個1秒左右才會恢復 02/03 01:41
t7yang: 這點也很煩人,不曉得mayuyu大有沒有遭遇這樣的情況 02/03 01:41
abccbaandy: 還是有那種排除特定字型不要換的?會出問題是好像都是 02/03 02:48
abccbaandy: icon font? 02/03 02:48
sziwu1100: 我是用stylish 基本上覺得GC的效果比FF漂亮 02/03 06:32
sziwu1100: http://drp.io/nqS/+ 使用GC看yahoo網頁的效果 02/03 06:33
@Wcw5504 終於要支援了,這樣真的方便很多。

@Triedge 你是說圖中使用的明蘭秀月嗎?有W4和W7兩個字重。
範例圖 http://i.imgur.com/I1K30mQ.png
圖(1920x1080)不能放大縮小要1:1(100%)顯示才不會模糊失真

@t7yang 在之前的Fx版本我也有遇過這個情況,
不過不是在Gmail遇到的而是在K島上,
拉動捲軸後要等一段時間渲染才會加上,
但是這個問題後來就自然消失了,我猜可能是
1.Fx更新修好了這個bug
2.我更新了顯示卡驅動程式到最新(我是用intel內顯)
3.可能我之前用某個css樣式會造成硬體渲染延遲?
4.和某個我後來停用的擴展衝突?
5.我一直開著Mactype不知道有沒有影響?

你用的顯示卡和驅動是哪一張?可以試試看更新驅動到最新,
或者是開一個全新profile,看看在沒有css或擴展的干擾下
還會不會出現這個問題。
還有雖然我目前在一般網頁上沒有遇到渲染延遲的現象,
但是在BBSFox底下還是會看到這個問題,
當游標快速移動的時候會看到字體輕微的抖動。
ettoolong大好像有提過這個bug,這個問題可能問他會比較清楚。

@abccbaandy 可以排除特定字體不要換,但就是因為這樣很麻煩,
同樣要手動一個一個加入例外,而且會越加越多樣式變得超煩。

@sziwu1100 css陰影效果可能差不多,只是Fx的強度一下子
就跳了一級,沒有接近Chrome0.001em的那個強度,
所以不上不下的有點尷尬。
至於DirectWrite硬體加速渲染的效果,由於Fx可調整參數,
所以彈性比較大。
但是Chrome的字都比較銳利一點,不只字,從以前我就覺得
Chrome的圖形也比較銳利,看看Fx用上高品質縮放之後會不會追上,
不過我覺得Chrome那個銳利是額外增強的,原本不應該會那麼銳利。


我昨晚因為時間太晚了沒打完,而且文章太長自己都不想看xD

我後面是要提供我使用的字型和設定,還有Mactype的設定檔。
我後來並沒有用Mactype來渲染Fx,還是用回DirectWrite,
不過因為0.015em會太模糊,所以我把陰影樣式改成
text-shadow: 0 0 0.5px rgba(0,0,0,0.5);

(調0.21px和0.5px二個數值效果都一樣)
我反覆抓圖下來直接切換比較,
在我的系統上這個數值會讓Fx接近Chrome0.001em的清晰程度,
雖然還是Chrome比較銳利一點,但是Fx的線條比較紮實,
Chrome細字的線條還是有點發虛,至於粗細的話兩者就幾乎一樣。

而硬體加速渲染的設定全部都是預設值,
我只有修改了
gfx.font_rendering.cleartype_params.rendering_mode

這一項調整為 5 也就是不管字型大小全部用Natural Symmetric抗鋸齒
這項不調整用預設值的話,部分英文字體小字號會改用GDI Classic抗鋸齒,
看起來會變得很難看。

其他全部都是預設值
gfx.font_rendering.cleartype_params.gamma -1
數值越低字體越粗,但是看起來筆畫會黏成一團

gfx.font_rendering.cleartype_params.enhanced_contrast -1
數值越高字體越黑,但是邊緣越破碎

gfx.font_rendering.cleartype_params.cleartype_level -1
數值越高次像素渲染越強,但是邊緣會溢色

gfx.font_rendering.cleartype_params.pixel_structure -1
一般都是RGB

gfx.use_text_smoothing_setting false
在OS X底下才有用

gfx.font_rendering.cleartype.always_use_for_content false
在Windows XP底下才有用

gfx.font_rendering.directwrite.enabled false
在關閉硬體加速的情況下,仍然可以使用DirectWrite

如果改變了這些硬體設定,同時也要修改上面的陰影樣式數值,
才能讓Fx看起來類似Chrome。


在Windows 7底下用Android虛擬機輸出
http://i.imgur.com/hm2nwya.png

強烈對比之下Windows 7的cleartype真是悲劇xD

所以後來看小說雜誌我都乾脆切到Android來看了。

※ 編輯: mayuyu (61.219.36.56), 02/03/2015 06:59:06
sate5232: 有沒有標點符號在中間而非在下面的推薦字體? 02/03 10:58
sate5232: 在底下的一直都不太習慣,所以我現在還在用iLiHei-FA 02/03 10:59
kaoh08: 花在搞這些東西的時間 換成時薪都可以加錢買台macbook了 02/03 11:15
sziwu1100: 樓上 還好吧 只是按按鍵改點設定而已 不花多少時間呀 02/03 11:54
ettoolong: 這篇很有用耶, 可是東西好多, 我要研究一下. 謝謝分享. 02/03 12:24
karst10607: 太複雜啦… 有沒有簡單無痛教學設定 02/03 17:52
Triedge: 了解了,謝謝mayuyu桑 <3 02/03 19:33
Triedge: 無痛教學搜尋ma桑的文章就有嘍,整個很實用! 02/03 19:48
Kreen: 推~~ 02/03 19:57
Wcw5504: 思源黑體標點就是在中間了 02/04 02:10
sate5232: 思源體我弄起來連微軟正黑都比她好看... 02/04 09:08
sziwu1100: sate大 微軟正黑體就可以了吧 用stylish效果也不差 02/04 10:44
sziwu1100: http://drp.io/nvN/+ stylish使用微軟正黑體 02/04 10:44
sziwu1100: http://drp.io/nvO/+ pttchrome 使用華康細黑體 02/04 10:47
mstar: 個人喜歡「華康中黑體-UN」,是華康三款 unicode 字型之一 02/04 12:01
mstar: 不過不是免費的 02/04 12:02
mayuyu: 抱歉我這幾天比較忙 懶人包我之後再放上來 02/04 16:10
mayuyu: 標點符號在中間的字型可以自己替換 例如FontCreator 02/04 16:10
mayuyu: 只要改標點符號那幾個字元拿別的在中間的字型 02/04 16:10
mayuyu: 來替換就可以了 像明蘭有一些字的舊字體寫法 02/04 16:10
mayuyu: 看起來可能會不習慣 也是替換掉那幾個字就可以了 02/04 16:11
mayuyu: sziwu1100的stylish渲染蠻好看的 可以分享你的樣式嗎? 02/04 16:11
sate5232: 我用DirectWrite怎麼調都還是沒辦法好看... 02/04 16:36
sate5232: 最後只好繼續MacType.. 02/04 16:37
sate5232: text-shadow:多少以下不作用會不會和解析度有關? 02/04 17:15
sate5232: 我在我15.5吋筆電上要0.36以上才會看到差異,可是就太 02/04 17:15
sate5232: 糊了,0.35以下則跟沒加一模一樣 02/04 17:16
mayuyu: @sate5232 我這裡沒辦法讓Mactype來渲染Fx 否則Fx會 02/04 18:07
mayuyu: 當得很厲害 囧興 調整一下alpha值試試看 alpha越低 02/04 18:07
mayuyu: 字體顏色越淡不過霧霧的情況會減輕 看起來會比較清晰 02/04 18:07
mayuyu: 範例圖用的Mactype設定檔下載 02/04 18:07
mayuyu: http://paste2.org/_EZAe7YsX 02/04 18:07
mayuyu: 我試過調整Mactype設定DirectWrite=1或0 看起來都一樣 02/04 18:07
mayuyu: Fx都會當得很厲害 >< 不過不同系統結果可能不一樣 02/04 18:08
mayuyu: 大家自己調整看看 02/04 18:08
mayuyu: 這個Mactype設定檔字很粗 最好不要再加stylish渲染 02/04 18:08
mayuyu: 否則比較複雜的字 密集的筆畫會黏在一起 看起來反而很吃力 02/04 18:09
mayuyu: 雖然字比較粗 不過清晰度還是比Mac差一點 02/04 18:09
mayuyu: Mac系統預設字型很難看 不過換成明蘭後還是很漂亮 02/04 18:10
mayuyu: http://i.imgur.com/qht2P77.png 明蘭雖然有些字體 02/04 18:10
mayuyu: 的舊字形看起來不習慣 但是真的很好讀 看很久也不會累 02/04 18:10

你可能也想看看

搜尋相關網站