@ font-face src:url(...)无法确定上下文路径,该路径可能是变量

时间:2019-06-20 15:47:43

标签: css font-face

我的css文件使用URL的绝对路径使用此自定义字体。在默认上下文路径为空的情况下,它可以完美工作:

@font-face {
    src: url('/font/myfont-Regular.woff') format('woff');
}

该Web应用程序部署在jBoss或Tomcat中,并且上下文路径是可配置的。在“ ABC”之下可以是任何东西。

<jboss-web>
    <context-root>ABC</context-root>
</jboss-web>

在上下文路径为空的情况下,无法加载我的自定义字体,因为它不知道如何将“上下文路径”添加到“ URL”以获取字体位置。

设置上下文路径时,加载此自定义字体时出现404错误。 404的原因是它正在尝试通过加载     http://www.example.com/font/myfont-Regular.woff

它应该从以下位置加载:
    http://www.example.com/ABC/font/myfont-Regular.woff

但是“ ABC”(上下文路径)可以在客户端站点上配置,并且我无法在CSS文件中对其进行硬编码。
我已经尝试在css文件中使用“ c:url”标签,但无法对其进行评估。 (这是可以理解的)。 CSS文件也不知道JSP脚本片段。

我想找到一种方法,通过了解“上下文路径”来加载自定义字体

1 个答案:

答案 0 :(得分:0)

该解决方案不是外部css文件,而是在JSP文件内部使用内部样式表语法,以便能够识别上下文路径。例如,将以下部分嵌入到JSP的“标题”部分中。然后,“ c:url”将正确解析包含上下文的路径。

<style> 
   @font-face {
     ....
     src: url("<c:url value='/font/myfont-Regular.woff'/>") format('woff');
   }
</style> 

现在要提高上述内部样式的可重用性,另一个技巧是使用唯一内容高于内部样式的JSP(或JSPF)文件。然后可以在必要时将其包括在内。但是,它必须具有“ .jsp”或“ .jspf”扩展名才能“感知上下文”。