gpl*_*umb 3 c# fonts webbrowser-control winforms
我正在使用C#WebBrowser控件(Winforms),并通过.DocumentText属性将标记传递给它。
该文档链接到一些使用该@font-face规则的css,该css 在本地运行(并从服务器运行)时有效,但在被webbrowser控件使用时无效。
CSS非常基本,看起来像这样:
@font-face {
font-family: FontName;
src: url("/fonts/fontname.ttf") format("truetype");
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
Run Code Online (Sandbox Code Playgroud)
我从这里尝试了各种注册表建议(无济于事):https : //weblog.west-wind.com/posts/2011/May/21/Web-Browser-Control-Specifying-the-IE-Version #FeatureDelegationviaRegistryHacks
另一个常见的建议是在标记中包含一个meta标签(我已经完成了),如下所示:
<meta http-equiv="X-UA-Compatible" content="IE=edge">
Run Code Online (Sandbox Code Playgroud)
我的字体被标记为已安装(和IE正常工作),所以有很明显的东西具体关于WebBrowser控件这就是问题所在-但花了几个小时试图弄清楚,我在一个无所适从,可能是。
有人知道我在这里想念的吗?
谢谢!
事实证明,这里有两个问题。我终于设法解决了这些问题,因此在这里我将分享问题和解决方案,以期将来可以节省其他人的时间。
问题#1
浏览器控件正在显示安全警告(由于.ScriptErrorsSuppressed设置为,因此被禁止了false)。在研究了如何自动抑制安全错误之后,我在这里遇到了Sheng Jiang关于该主题的出色博客文章-https: //jiangsheng.net/2013/07/17/howto-ignoring-web-browser-certificate-errors-网络浏览器中的主机/
问题#2
感到沮丧之后,我研究了几种商业替代方案,而Essential Objects的替代方案看上去很有希望(https://www.essentialobjects.com)-尽管这仍然无法呈现我的页面(尽管他们的示例应用程序确实可以呈现) )。
在深入研究他们的WebView控件后,我钩住了它公开的所有JavaScript控制台事件,并且在访问我的页面时收到了一条有用的错误消息:
Access to Font at 'https://localhost:1234/fonts/foo.ttf' from origin 'https://localhost:1234' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.
最后,一些需要配合的东西!我暂时让我的服务器上的任何来源和页面渲染开始正确(注意-你真的不希望这样做在生产服务器上-这只是测试)。
这也适用于Winforms控件(尽管已与Sheng Jiang的互操作程序进行了子类化以解决第一个问题),所以这里的解决方案是为我的字体资产正确配置CORS策略。
| 归档时间: |
|
| 查看次数: |
749 次 |
| 最近记录: |