在 Orbeon 中使用 font-awesome(@font-face 不加载本地托管的字体)

Using font-awesome with Orbeon (@font-face not loading locally hosted fonts)

我对 Orbeon 表单完全陌生(从上周开始)。

我们想在我们的 Orbeon 表单中使用来自 font=awesome 库的图标。使用官方 JS CDN(包括 properties-local.xml 中的 .js 文件)这样做效果很好。使用另一个基于 CSS 的 CDN(包括 properties-local.xml 中的 .css 文件)也可以正常工作。

但是,为了安全起见,这些表单 运行 中的环境不允许访问外部世界。因此,文件需要在本地托管。

将 CSS 文件添加到我们的设置中效果很好,包括从 /forms/blah/assets/css/font-awesome.css[= 加载的 properties-local.xml 中的 .css 文件10=]

失败的是从 /forms/blah/assets/fonts/

加载字体

控制台日志错误显示呈现的页面正在尝试从正确的 URI 加载文件,但给出了 404 错误。

我在官方文档和网上其他地方找到的最多的是加载字体以用于生成 PDF。在基于网络的表单中显示的字体是否也有类似的东西?

非常感谢

预感这是一个 mime 类型的问题。虽然我已经检查过 Apache Tomcat 在其 web.xml 中为字体文件包含了 mime 映射(确实如此),但我没想到 Orbeon 可能不会继承这些设置。

我看到一个 post 在这里谈论类似的事情:http://forum.primefaces.org/viewtopic.php?f=3&t=42002

将以下内容添加到我的 /webapps/blah/WEB-INF/web.xml 解决了问题:

<mime-mapping>
    <extension>eot</extension>
    <mime-type>application/vnd.ms-fontobject</mime-type>
</mime-mapping>
<mime-mapping>
    <extension>otf</extension>
    <mime-type>font/opentype</mime-type>
</mime-mapping>
<mime-mapping>
    <extension>ttf</extension>
    <mime-type>font/truetype</mime-type>
</mime-mapping>
<mime-mapping>
    <extension>woff</extension>
    <mime-type>application/font-woff </mime-type>
</mime-mapping>

Tomcat服务显然需要重启才能生效。

另外对/webapps/blah/WEB-INF/resources/page-flow.xml第22行进行如下修改:

<files path="(?!/([^/]+)/service/).+\.(gif|css|pdf|json|js|coffee|map|png|jpg|xsd|htc|ico|swf|html|htm|txt|svg|ttf|eot|woff|woff2)"/>

请注意,在该字符串的末尾添加 |ttf|eot|woff|woff2

希望能帮助其他尝试尝试的人 :)