1

Cocoa アプリケーション (macgap) に WebView があります。

(注: iOS アプリの UIWebView について話しているわけではありません)

私の CSS ファイルには、いくつかのカスタム フォント宣言があります。

@font-face{
    font-family:'Quivira';
    src:url("./Quivira.ttf") format("truetype");
    font-weight:normal;
    font-style:normal;
}

ただし、これらをロードできません-ある種のセキュリティ上の問題だと思います。

ときどき、コンソールに「ローカル リソースの読み込みが許可されていません: Quivira.ttf」というエラーが表示されることがあります (常に表示されるとは限りません)。

何が原因でしょうか? index.html ファイルは file:/// プロトコルを介してロードされるため、セキュリティ上の問題はありません。これは、既にローカルであり、ローカル リソースをロードできるはずだからです。

Webkitのバグである可能性があると思います。

誰でもカスタム フォントを Cocoa WebView にロードできますか?

4

2 に答える 2

4

カスタムフォントを使用してWebページをロードする2つのアプローチを試しました。

  • アプリバンドルから(NSBundleを使用)
  • ユーザーが指定したローカルパスから(絶対パスを使用)

どちらの場合も、カスタムフォントを正常に表示できます。HTMLファイルがあり、その横に.ttfフォントファイルがあります。HTMLファイルでは、インラインCSSで@font-faceを定義しました。

2番目のケースでは、ローカルファイルシステムから任意のフルパスを指定でき、Webビューはそこからロードされます(/Users/johndoe/Desktop/maiwebsite/index.htmlなど)。

コードはGithubにあります。

そして、SOに関する別の回答から:

  1. リソースパスを取得してサブパスを自分でホチキス止めする代わりに、バンドルに正しいパスを指定するように依頼してください。
  2. パスをまったく処理する代わりに、バンドルに正しいURLを提供するように依頼してください。(Mac OS X 10.6以降が必要です。)

これで問題が解決しない場合は、コードをどこかに配置して、デバッグを試みることができますか?

于 2012-09-08T11:01:56.483 に答える
0

WKWebView (WebView は廃止されました) の場合、次のように MacApp バンドルからカスタム フォントを読み込みます。

[_webView loadHTMLString:htmlContent baseURL:[[NSBundle mainBundle] resourceURL]];

バンドル リソースを提供する必要がある iOS とは異なり[[NSBundle mainBundle] bundlePath](iOS バンドルはよりフラットです)、MacApp の場合、リソースへのパスはより複雑で、bundlePath だけでは機能しません。上記のアプローチは機能します。

CSS@font-faceでそのように使用するだけで、指定された場所にあるすべてのフォントが検出されresourceURLます。

@font-face {font-family:'myfont';src:url('myfont.ttf');}
于 2019-12-28T18:24:14.603 に答える