将自定义字体导入 JSF

问题描述 投票:0回答:3

我无法将自定义字体导入我的 JSF 页面。项目结构如下所示: Project structure screenshot

我尝试在 styles.css 中编写以下内容:

@font-face {
    font-family: "Gotham Pro Bold";
    src: url('#{resource["fonts/GothaProBol.otf"]}');
}

但这不起作用。它被编译为

/javax.faces.resource/fonts/GothaProBol.otf.xhtml
,但字体不在
javax.faces.resource
中,我不知道为什么它会附加
.xhtml

以下:

src: url("#{facesContext.externalContext.requestContextPath}/resources/fonts/GothaProBol.otf");

编译为

src: url("/resources/fonts/GothaProBol.otf");

但它也不起作用。

如何正确导入字体?

提前致谢。

java css jsf jsf-2 fonts
3个回答
4
投票

使用 OmniFaces 完成此操作:

  1. 添加了依赖项

    pom.xml
    ):

    <dependency>
        <groupId>org.omnifaces</groupId>
        <artifactId>omnifaces</artifactId>
        <version>1.8.1</version>
    </dependency>

  2. 将 OmniFaces 的资源处理程序添加到

    faces-config.xml
    :

    <application>
        <resource-handler>
            org.omnifaces.resourcehandler.UnmappedResourceHandler
        </resource-handler>
    </application>

  3. /javax.faces.resource/*
    映射到
    FacesServlet
    ,如下 (
    web.xml
    ):

    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/javax.faces.resource/*</url-pattern>
        <url-pattern>*.xhtml</url-pattern>
    </servlet-mapping>

  4. 在 CSS 中使用

    #{resource["<path>"]}
    ,如下所示:

    @font-face {
        font-family: "Gotham Pro Bold";
        src: url('#{resource["fonts/GothaProBol.otf"]}');
    }


0
投票

我也有同样的问题。这个网址有效

    @font-face {
    font-family: "MyFont";
    src:
    url("mfont/mfont.ttf.xhtml?ln=fonts")
    format("truetype")
    }

该文件位于“/resources/fonts/mfont/mfont.ttf”

另请注意,css 文件本身是使用 h:outputStylesheet 包含的(因为字体 url 需要相对于 css)


0
投票

我遇到了这个问题,我解决如下:

@font-face {
    font-family: "Roboto-Light";
    src: url('#{resource["fonts/Roboto-Light.ttf"]}');
}

© www.soinside.com 2019 - 2024. All rights reserved.