18

Problem with Fonts not working correctly within a Spring Boot / Spring MVC Application.

The problem is that all of the font files show various errors such as below

Failed to decode downloaded font: http://localhost:8080/fonts/fontawesome-webfont.woff2?v=4.4.0
OTS parsing error: Failed to convert WOFF 2.0 font to SFNT

Failed to decode downloaded font: http://localhost:8080/fonts/fontawesome-webfont.woff?v=4.4.0
OTS parsing error: incorrect file size in WOFF header

Failed to decode downloaded font: http://localhost:8080/fonts/fontawesome-webfont.ttf?v=4.4.0
OTS parsing error: incorrect entrySelector for table directory
code
  • 4,073
  • 3
  • 27
  • 47

4 Answers4

36

The issue is that Maven was filtering the font files and corrupting them.

    <resource>
        <directory>${project.basedir}/src/main/resources</directory>
        <filtering>true</filtering>
    </resource>

The fix was to make the following changes to the pom.xml

    <resource>
        <directory>${project.basedir}/src/main/resources</directory>
        <filtering>true</filtering>
        <excludes>
            <exclude>static/fonts/**</exclude>
        </excludes>
    </resource>

    <resource>
        <directory>${project.basedir}/src/main/resources</directory>
        <filtering>false</filtering>
        <includes>
            <include>static/fonts/**</include>
        </includes>
    </resource>

This change allows for the fonts to not be filtered during packaging.

code
  • 4,073
  • 3
  • 27
  • 47
33

Another way to do it is update the configuration of the maven-resources-plugin as follows:

<plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-resources-plugin</artifactId>
     <configuration>
          <nonFilteredFileExtensions>
               <nonFilteredFileExtension>ttf</nonFilteredFileExtension>
               <nonFilteredFileExtension>woff</nonFilteredFileExtension>
               <nonFilteredFileExtension>woff2</nonFilteredFileExtension>
          </nonFilteredFileExtensions>
     </configuration>
</plugin>
postalservice14
  • 2,515
  • 4
  • 25
  • 33
0

Maybe your file application.properties should be ignored some path like

security.ignored=/css/**,/js/**,/images/**,/font/**
  • 1
    Not sure those settings would affect Maven. Maven was the one introducing the issue. – code Dec 15 '15 at 06:17
0

Encountered the same issue and wasted hours to figure out the issue. This should already been fix in springboot 2.2.4 onwards.

If there are issue, firstly check the downloaded file size in the compiled /target/resources/fonts folder!

Somehow the fonts in this folder are not removed if you copied the first wrong font files. The goal is to make sure the font loaded is to monitor the font size.

Hope this helps for anyone.

Han
  • 728
  • 5
  • 17
  • This comment does'nt help anyone, since the problem is depending on Maven scanning resources and altering them this way. Spring Boot itself is not responsible for that and I don't know how Spring Boot could tell Maven how to behave. With today's Spring Boot v3.1.x you still have to fix it manually. Best answer see postalservice14 above. – Slevin Jul 15 '23 at 13:14