@font-face src: url(...) 无法找出上下文路径,这可能是一个变量
@font-face src: url(...) could not figure out context path, which could be a variable
我的 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>
上下文路径不是空的,我的自定义字体无法再加载,因为它不知道如何将 "context path" 添加到 "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 脚本。
我想通过"context path"感知
找到一种加载自定义字体的方法
解决方案不是外部 css 文件,而是在 JSP 文件内使用内部样式表语法,以便了解上下文路径。例如,将以下部分嵌入 JSP 中的 "head" 部分。 "c:url" 然后会正确解析包含上下文的路径。
<style>
@font-face {
....
src: url("<c:url value='/font/myfont-Regular.woff'/>") format('woff');
}
</style>
现在要改进上述内部样式的re-usability,还有一个技巧是使用一个JSP(或JSPF)文件,其唯一内容是上述内部样式。然后可以在必要时将其包括在内。它必须具有“.jsp”或“.jspf”的扩展名才能成为 "context aware"。
我的 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>
上下文路径不是空的,我的自定义字体无法再加载,因为它不知道如何将 "context path" 添加到 "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 脚本。
我想通过"context path"感知
找到一种加载自定义字体的方法解决方案不是外部 css 文件,而是在 JSP 文件内使用内部样式表语法,以便了解上下文路径。例如,将以下部分嵌入 JSP 中的 "head" 部分。 "c:url" 然后会正确解析包含上下文的路径。
<style>
@font-face {
....
src: url("<c:url value='/font/myfont-Regular.woff'/>") format('woff');
}
</style>
现在要改进上述内部样式的re-usability,还有一个技巧是使用一个JSP(或JSPF)文件,其唯一内容是上述内部样式。然后可以在必要时将其包括在内。它必须具有“.jsp”或“.jspf”的扩展名才能成为 "context aware"。