最近在項目開發過程中遇到一個很怪異的問題:開發環境中設置的字體樣式有效,使用webpack打包后失效,導致本地字體正常,線上字體異常,我用的是 “冬青黑體簡體中文”,
線上
本地
在控制臺,對比發現:
線上: font-family: \51AC\9752\9ED1\4F53\7B80\4F53\4E2D\6587;
本地: font-family: "\51AC\9752\9ED1\4F53\7B80\4F53\4E2D\6587";
原來開發環境的時候,"冬青黑體簡體中文" 被解析成unicode編碼并且帶著雙引號,是正確的
webpack打包以后,"冬青黑體簡體中文" 的雙引號被錯誤解析并多加了個反斜杠,導致字體不生效
控制臺里,將字體改成 "\51AC\9752\9ED1\4F53\7B80\4F53\4E2D\6587",就正常了,這就可以確定是webpack打包引起的問題
解決方法:
使用中文字體的英文編碼,如:font-family: "Hiragino Sans GB"
問題產生原因:
雖然一些常見中文字體,例如“宋體”,“微軟雅黑”等,直接使用中文名稱作為CSS font-family的屬性值也能生效,但為了規避亂碼的風險,建議使用字體的英文名稱。 還有一些中文字體,直接使用中文名稱作為 font-family的屬性值是沒有效果的,如“思源黑體”, “蘭亭黑體”等,需要使用對應的英文字體名稱才可以。
總而言之一句話,你要想使用中文字體,就必須要知道其對應的英文名稱。