如何在 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屬性。具體方法如下:
- 打開Advanced Font Settings設置頁面
- 確定Script選擇為Default,右鍵點擊Standard下面的下拉菜單,Inspect element
- Ctrl-F,搜索"Noto Sans S Chinese Regular"或"思源黑體 Regular"或"Source Han Sans SC Regular"(不包含雙引號)
- 右鍵點擊搜索到的結果,Edit attribute。去掉所有的" Regular"(不包含雙引號,注意去掉Regular前面的空格)
- 將Standard、Serif、Sans-Serif都切換為剛修改的字體
- 將Script切換為Simplified Han、Traditional Han、Japanese、Hangul,分別將Standard、Serif、Sans-Serif切換為(Use Default)
- 點擊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 | 字體 |