3

I can't import custom fonts into my JSF pages. Project structure looks like this: Project structure screenshot

I've tried to write the following in my styles.css:

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

But it doesn't work. It gets compiled to /javax.faces.resource/fonts/GothaProBol.otf.xhtml, but the font is not in javax.faces.resource and I have no idea why it appends .xhtml.

The following:

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

is compiled to

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

but it doesn't work either.

How do I import the fonts properly?

Thanks in advance.

Community
  • 1
  • 1
  • 1
    similar question here [JSF2 add custom font to css stylesheet](http://stackoverflow.com/questions/9700341/jsf2-add-custom-font-to-css-stylesheet) – Abdelghani Roussi Nov 11 '14 at 01:00

2 Answers2

4

Did this using OmniFaces:

  1. Added the dependency (pom.xml):

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

  2. Added OmniFaces' resource handler to faces-config.xml:

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

  3. Mapped /javax.faces.resource/* to FacesServlet as follows (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. Used #{resource["<path>"]} in CSS, like so:

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

0

I had the same problem. This URL works

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

The file is situated in "/resources/fonts/mfont/mfont.ttf"

Also note that the css file itself is included using h:outputStylesheet (because font urls need to be relative to css)

Sergej Zr
  • 11
  • 3