2017-07-28 14 views
2

私はC#WebBrowserコントロール(Winforms)を使用していますが、.DocumentTextプロパティを使用してマークアップを渡しています。Winform Webbrowserのカスタムフォントが表示されない

(およびサーバからの)ローカルで実行しているときに動作します@font-faceルールを使用して、いくつかのCSSへの文書リンクが、は、WebBrowserコントロールによって消費されていないとき。

CSSが、それはこのようになり、かなり基本的なものです:

@font-face { 
    font-family: FontName; 
    src: url("/fonts/fontname.ttf") format("truetype"); 
    -webkit-font-smoothing: antialiased; 
    -moz-osx-font-smoothing: grayscale; 
} 

私はここに(無駄に)各地から様々なレジストリの提案を試してみた:https://weblog.west-wind.com/posts/2011/May/21/Web-Browser-Control-Specifying-the-IE-Version#FeatureDelegationviaRegistryHacks

他の一般的な提案が含まれるようにありますこのような(私が行っている)のマークアップにメタタグ:

<meta http-equiv="X-UA-Compatible" content="IE=edge"> 

マイフォントが既にマークされています(とIEでうまく動作する)ので、明らかに問題のWebブラウザコントロールに関する具体的なものがあります。しかし、何時間も費やしてみると、私はそれが何であるかについて迷っています。

私がここで紛失していることを知っている人はいますか?

ありがとうございます!

答えて

4

ここには2つの問題があることが判明しました。私は最終的に彼らの周りを歩くことができたので、将来私は他の誰かを救うことができるという希望で、問題とその解決方法をここで共有します。

問題#1
ブラウザ制御(.ScriptErrorsSuppressedfalseに設定したため、抑制された)セキュリティ警告を提示しました。自動的にセキュリティエラーを抑止する方法を検討していた後、私はここに、件名にシェン・ジャンの優れたブログエントリに出くわした - https://jiangsheng.net/2013/07/17/howto-ignoring-web-browser-certificate-errors-in-webbrowser-host/

問題#2
をイライラ取得した後、私は商業の選択肢のカップルに見て、エッセンシャル・オブジェクトからのものは有望だった(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.

、動作するように何かをと!私は一時的に私のサーバ上の任意の起源を許可し、ページは適切にレンダリングを開始しました(注 - 実際にははプロダクションサーバでを実行しません。

これは、Sheng Jiangのinteropでサブクラス化されていても最初の問題を解決するためにサブクラス化されていましたが、ここでの解決策はフォント資産にCORSポリシーを正しく設定することでした。

関連する問題