Grails 2.3 将 css font-face url 更改为“resource:/...”

Posted

技术标签:

【中文标题】Grails 2.3 将 css font-face url 更改为“resource:/...”【英文标题】:Grails 2.3 changes css font-face url to "resource:/..." 【发布时间】:2014-04-01 02:44:01 【问题描述】:

我想在我的 CSS 中包含这样的自定义字体:

@font-face

    font-family: TheFont;
    src: url(fonts/SourceSansProLight.ttf);

CSS 由 Grails 2.3 提供,CSS 被修改成这样

@font-face

    font-family: TheFont;
    src: url(resource:/css/fonts/fonts/SourceSansProLight.ttf);

生成的字体 url 方案未知,浏览器无法打开该文件。例如,Chrome 报告:

GET resource:/css/fonts/fonts/SourceSansProLight.ttf net::ERR_UNKNOWN_URL_SCHEME 

/css/fonts 也会添加到原始 URL 的前面。

我如何指示 Grails 将字体 URL 保持原样?

【问题讨论】:

我通常使用相对于 CSS 文件本身的路径 - 例如../images/foo.jpg. 你也可以试试grails.org/plugin/asset-pipeline插件,它会在后台转换路径 【参考方案1】:

解决方案是在 Config.groovy 中禁用 CSS 处理:

grails.resources.rewrite.css = false

我在Grails mailing list 上找到了如何做到这一点的提示。

【讨论】:

我真的不明白这是做什么的,但我把它放在我的 Config.groovy 中并开始抛出一个奇怪的错误【参考方案2】:

我认为dmahapatrohttps://***.com/a/22849288/2286664提出了一个更好的解决方案

您需要确保资源插件知道您的字体文件。

以下内容在我的Config.groovy 中对我有用,请根据您的路径进行调整:

grails.resources.adhoc.includes = [
    '/images/**', '/css/**', '/js/**', '/img/**', '/fonts/**'
]

进行此更改后,您需要运行 grails clean

【讨论】:

使用完整的 clean/compile/run-app 抛出相同的错误 这最终是比上面列出的更好的答案。希望你的标记是正确的。

以上是关于Grails 2.3 将 css font-face url 更改为“resource:/...”的主要内容,如果未能解决你的问题,请参考以下文章

Grails 2.3 IntegrationSpec 不能是事务性错误

Grails 2.3 迁移脚本不会在集成测试期间运行

将 CSS3 变换/动画与 font-face 一起使用会产生类似“摇摆不定”的微调器 gif

SASS 和 @font-face

Grails 2.3 使用 IVY 解析器进行单元测试

CSS3 关于@font-face引用中文字体解决办法