如何在 Windows 版 Chrome 中將默認字體設置為思源黑體?

工作平台 Microsoft Windows 8.1(64-bit) + Google Chrome Dev Channel(64-bit).

Chrome 中默認字體選擇會把一個 Family 的字體拆成 Regular/Bold 的幾種。

然而帶 Regular 等字重標記的卻不能正常渲染,而是回退到Arial + 中易宋體。測試如下:

如何正確在 Windows 版本 Chrome 中正常使用思源黑體?(經測試,目前 Beta Channel 情況同樣,Linux 版本完全正常。)


我是來自問自答的……其實第二天突發奇想就解決了只是一直沒來得及寫……只能算是一個 workaround, 正經還是得靠改源代碼了。

問題里說了,其實只是選擇菜單里只能是字體把子族的字體名字當成族名來用了,因此實際上嘛只要想辦法用列表裡面沒有的名字了。於是,我們可以簡單粗暴的直接更改配置文件。

領導人教導我們,自己動手,風衣足食。還有什麼 Linux 教會我們,這些跨平台的東西好多直接把配置寫在文件里而非註冊表,什麼文件即對象之類的。因此我們直接到 User 目錄搜索配置文件……

直接定位到這個文件:

%USERPROFILE%AppDataLocalGoogleChromeUser DataDefaultPreferences

一般用戶的位置可能是:

C:UsersUSERNAME\%USERNAME%LocalGoogleChromeUser DataDefaultPreferences

這麼個文件實際上就是一個 JSON 配置文件,不管他,直接定位到文件末尾有 WebKit 的一段配置,如果之前該過的話呢,就是相應的東西(可以嘗試搜索之前自己設置過的名字):

"webkit": {
"webprefs": {
"fonts": {
"fixed": {
"Zyyy": "Consolas"
},
"sansserif": {
"Zyyy": "Noto Sans S Chinese Regular"
},
"serif": {
"Zyyy": "Noto Sans S Chinese Regular"
},
"standard": {
"Zyyy": "Noto Sans S Chinese Regular"
}
},
"uses_universal_detector": true
}
},

這裡面直接怒把三個項目的 Regular 刪掉,比如我的就是:

"webkit": {
"webprefs": {
"fonts": {
"fixed": {
"Zyyy": "Consolas"
},
"sansserif": {
"Zyyy": "Noto Sans S Chinese"
},
"serif": {
"Zyyy": "Noto Sans S Chinese"
},
"standard": {
"Zyyy": "Noto Sans S Chinese"
}
},
"uses_universal_detector": true
}
}, "webkit": {
"webprefs": {
"fonts": {
"fixed": {
"Zyyy": "Consolas"
},
"sansserif": {
"Zyyy": "Noto Sans S Chinese"
},
"serif": {
"Zyyy": "Noto Sans S Chinese"
},
"standard": {
"Zyyy": "Noto Sans S Chinese"
}
},
"uses_universal_detector": true
}
},

然後就正常了,雖說字體設置裡面顯示的是宋體……

如果是 Source Han Sans 的情況也類似吧。

另外,今天上午的時候我好像怎麼把瀏覽器整癱瘓了,然後重新裝的,因為本地只有第版本離線安裝包……(因為再下的話……你們懂得)好像是我把 Google Chrome 卸載重新安裝了一下好像是不用這麼麻煩了還是怎麼回事,然後就能用了總之比較奇怪……我現在的版本是 36.0.1985.143 dev-m, 之前的版本是 38.0.2121.3 ... 雖說帶著 Regular 這個詞也能照樣渲染,只不過不知道具體那個字重回事什麼樣的……寫著寫著就又來更新了……估計再重新啟動又不行又得重新設置……

另外 Source Han Sans / Noto Sans S Chinese 和 Source Sans Pro 真是絕配啊……如果用上 Stylish 的話,但如果不是每個網站單獨設置的話可能就會比較麻煩……

所以呢就是這個奇怪的估計跟版本有關的毛病……一個很爛的 workaround ......可能不少人用 Stable 還沒到這個版本的話升級一下可能會出問題所以算打前站了。估計相當於是渲染引擎的東西字體名稱的表示標準化了,然後字體選擇器沒跟上的問題……就是這樣了。


這是 Chrome 一個蛋疼的 bug 了:Chrome 早期在 Windows 上不能根據 Preferred Family 選擇字體,升級 Directwrite 之後終於能這麼幹了,但是那個字體列表是按 Family 列的。按照 Adobe 的尿性他家的字體 Family 保證按 Preferred Style 拆分且和 Preferred Family 不同。

這個基本上除了改 Chrome 源碼沒有解決方法。


受 @羅晨星 啟發,我想到了個類似的方法:修改Advanced Font Settings設置頁面里option標籤的value屬性。具體方法如下:

  1. 打開Advanced Font Settings設置頁面

  2. 確定Script選擇為Default,右鍵點擊Standard下面的下拉菜單,Inspect element
  3. Ctrl-F,搜索"Noto Sans S Chinese Regular"或"思源黑體 Regular"或"Source Han Sans SC Regular"(不包含雙引號)
  4. 右鍵點擊搜索到的結果,Edit attribute。去掉所有的" Regular"(不包含雙引號,注意去掉Regular前面的空格)
  5. 將Standard、Serif、Sans-Serif都切換為剛修改的字體
  6. 將Script切換為Simplified Han、Traditional Han、Japanese、Hangul,分別將Standard、Serif、Sans-Serif切換為(Use Default)
  7. 點擊Apply settings

應用設置之後三個字體都會顯示為宋體,不過打開新的標籤頁會發現字體都正確地顯示為了思源黑體。

另外,似乎Medium等字重可以不用修改直接選擇使用,而Regular卻不行,不知為何。


專門做了一個擴展來搞定這個問題https://chrome.google.com/webstore/detail/appoint-font/lmjdabbpgabigbonekfpjhfgjekpnkge


最簡單的辦法是安裝stylish用css設置,除了思源黑體還可以設置雅黑和其他的,userstyles.org/styles/100473/004-forcemyfonts-chinese-firefoxchromeie-catcat520


受 @Chris Xue 的啟發,我發現了一個規律:安裝完以Regular為結尾的字體後,將末尾的Regular去掉,chrome即可識別。於是我想到可以參照以前的custom.css的方法寫一個擴展,然後把擴展的id加到白名單。

安裝完NotoSansCJKsc-Regular字體之後:

1.創建一個名為custom.css的文件,文件內容為

*{font-family:Arial,"Noto Sans CJK SC" !important;}

2.創建一個名為manifest.json的文件,文件內容為

{

"content_scripts": [ {

"css": ["custom.css"],

"all_frames": true,

"matches": [ "http://*/*", "https://*/*" ]

} ],

"description": "custom.css",

"name": "Custom CSS",

"version": "1.0",

"permissions": [ "background" ],

"manifest_version": 2

註:本人為了使chrome能夠後台運行以加快打開速度,給了background許可權,如不需要可以修改。

3.將以上兩個文件打包成擴展。

具體方法為:先將兩個文件放入一個文件夾中,打開chrome://extensions/,點擊右上角的開發者模式,點擊」打包擴展程序「,選擇剛才的目錄打包即可。

4.使用組策略的方法把拓展加入白名單,這個Google一下到處都是教程…

這種方法的好處是可以把所有的字體全部改成你所設置的字體,不用custom.css的話不少網站都還是宋體,之前使用微軟雅黑我也是這麼改的。我現在的版本號是44.0.2403.125 m (64-bit),可以正常使用。如有問題歡迎反饋。


1.安裝思源字體

2.安裝Advanced Font Settings插件

https://chrome.google.com/webstore/detail/advanced-font-settings/caclkomlalccbpcdllchkeecicepbmbm


推薦閱讀:

chrome主頁被hao123篡改,怎麼改回來?
Chrome 上有能實現 Safari Reader 閱讀模式的插件嗎?

TAG:GoogleChrome | 字體 |