近期使用了Cefsharp框架开发应用,发现有一个问题,如果页面没有定义font-family的样式,则其页面默认字体一直是Simsun,如图:
在我的浏览器中表现为使用了“宋体”渲染。
搜索了一通发现网友们也没有提供好的办法,于是自己摸索的一番。
怀疑是资源文件内部定义了默认字体,尝试打开zh_CN.pak文件搜索,设置区域为zh_CN:无效(虽然内部定义‘Simsun’样式)
还有cef.pak文件,并没有相关的样式定义。
最后发现BrowserSetting类。
我们可以在控件里边设置BrowserSetting属性定义默认的字体
public class Browser: ChromiumWebBrowser
{
public Browser(string address)
:base(address)
{
SetStyle(System.Windows.Forms.ControlStyles.AllPaintingInWmPaint, true);
SetStyle(System.Windows.Forms.ControlStyles.ResizeRedraw, false);
SetStyle(System.Windows.Forms.ControlStyles.OptimizedDoubleBuffer, true);
this.DownloadHandler = new DownloadHandler();
this.IsBrowserInitializedChanged += Browser_IsBrowserInitializedChanged;
//this.RegisterJsObject("Test", this);
//重写默认字体为微软雅黑
BrowserSettings = new BrowserSettings();
BrowserSettings.StandardFontFamily = BrowserSettings.SansSerifFontFamily = BrowserSettings.SerifFontFamily = BrowserSettings.FantasyFontFamily = BrowserSettings.FixedFontFamily = BrowserSettings.CursiveFontFamily = "Microsoft YaHei";
}
}
cefsharp版本:49
cef版本:3.2623