迷茫2017-04-17 11:10:30
前端中文字體,說起來都是淚,能夠逼死強迫症設計師和強迫症前端。
中文字體在各種字體渲染引擎下,個人經驗如下表:
字体选择 | GDI Grayscale | GDI Cleartype | DirectWrite | Quartz(iOS) | Quartz(Mac) | MacType |
serif | 锯齿 (中易宋体) | 锯齿 (中易宋体) | 锯齿 (中易宋体) | 尚可 (华文细黑) | 字重过小 (宋) | 尚可(宋体) |
sans-serif | 锯齿 (中易宋体) | 锯齿 (中易宋体) | 锯齿 (中易宋体) | 尚可 (华文细黑) | 尚可 (华文细黑) | 尚可(宋体) |
中易宋体 | 锯齿 | 锯齿 | 锯齿 | 默认无 | 默认无 | 尚可 |
中易黑体 | 锯齿,变形 | 锯齿 | 锯齿 | 默认无 | 默认无 | 尚可 |
微软雅黑 | 无法辨认 | 尚可 | 尚可 | 尚可 | 尚可 | 字重过大 |
冬青黑 | 无法辨认 | x-height失常 | x-height失常 | 很好 | 很好 | x-height失常 字重过大 |
現狀之下,還是需要綜合考量各個UA的用戶量和對應的常見字體集。
比如微軟雅黑在xp下沒法看,但主動去安裝微軟雅黑的部分用戶量還是非常少的,如果他們會這個,估計係統也會升級了。(為了照顧這部分用戶,人人網的做法是JS區分UA,然後覆寫font-family设置
)
至於用信黑體的用戶我覺得沒法考慮,三萬元的個人授權費,這個門檻已經讓持有信黑體的用戶足夠少,少到無法在前端兼顧了。
實用層麵,我常用的font-family是這樣設置的,不太好看,但也不會太難看(已略去前方英文字體設置):
"Microsoft YaHei", "Hiragino Sans GB", sans-serif
原因可以詳細讀一下這個。
個人覺得最理想的屏顯字體是蘭亭細黑,在各個渲染引擎下都在能接受的範圍內(除了MacType,MacType渲染出來的任何字體字重都偏大)。
若中文字量少而且非用戶創造內容,可以考慮webfont,用sfntly求子集後中文字體的大小就在可以接受的水平了,當然,你得持有webfont版權才行。
具體示例如小米4的某一版官網,他們的字體就用到了蘭亭超細黑(最後換掉了,估計是因為在GDI Grayscale下橫線會斷,沒辦法,太細了)。
想知道自己的UA是什麼字體渲染引擎嗎?之前我做過一次整理:
我將會寫一篇《字體排印在前端》,敬請期待。
高洛峰2017-04-17 11:10:30
在不存在一種跨平台跨用戶的完美中文字體的前提下,不設置中文字體,讓係統、瀏覽器、用戶自己選擇,是最好的解決方案。
首先,無論係統默認字體好壞與否,用戶每天都看的字體也出現在你的網站上,至少不會導致反感。而且,操作係統的默認字體即便不好看,至少不會出現水土不服。
其次,相信不少在意字體呈現效果的用戶,都會調節係統默認字體及其效果以求最佳,這時候放任係統自己選擇依舊是最佳。
然而,如果手動設置了字體:
首先,那一部分不在意默認字體的用戶,不見得留意到字體變了,所以沒討好,也沒變差;
其次,對於在意字體的用戶,字體可能變好可能變差,而後者機率更大因為眾口難調。
綜上,前端手動設置中文字體基本就是費力不討好的。
即便設置,也不該出現常見的默認字體,如華文黑體、微軟雅黑、中易宋體,因為若這類字體生效,不是本來就會生效,就是在不該生效的地方生效,設置它們多此一舉。