我在Cocoa应用程序中有一个WebView(macgap)。
(注意我不是在讨论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中加载自定义字体?
答案 0 :(得分:3)
我尝试了两种使用自定义字体加载网页的方法。
在这两种情况下,我都能成功显示自定义字体。有一个HTML文件,旁边是.ttf字体文件。在HTML文件中,我在内联CSS中定义了@ font-face。
在第二种情况下,您可以从本地文件系统提供任何完整路径,webview将从中加载(例如/Users/johndoe/Desktop/maiwebsite/index.html)。
<强> Code is on Github 强>
如果这没有用,那么你可以把你的代码放在某个地方,以便我们可以尝试调试它吗?
答案 1 :(得分:0)
对于WKWebView(现已弃用WebView),请从MacApp捆绑软件中加载自定义字体,如下所示:
[_webView loadHTMLString:htmlContent baseURL:[[NSBundle mainBundle] resourceURL]];
与iOS一样,所有需要提供捆绑资源的人都是:[[NSBundle mainBundle] bundlePath]
(iOS捆绑更便宜),对于MacApps,资源的路径更加复杂,单独的bundlePath将无法工作。以上方法确实有效。
在CSS中只需像这样使用@font-face
,就会找到resourceURL
指定位置的所有字体。
@font-face {font-family:'myfont';src:url('myfont.ttf');}