Регистрационный шрифт повреждает файл .TTF

В моей системе мне нужно зарегистрировать два внешних файла шрифтов .TTF:

HamletOrNot.ttf (74 KB)
MorrisRoman-Black.ttf (67 KB)

Перед созданием объектов Font() я записываю с помощью следующих команд:

/* Set full path of font */
String path = filesPath + fileName;

/* Read file */
Resource resource = applicationContext.getResource( path );
File fontFile = resource.getFile();

/* Load font */
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
ge.registerFont(Font.createFont(Font.TRUETYPE_FONT, fontFile ));

Затем я создаю объекты (я создаю более одного шрифта (), потому что форматирование отличается):

Font font = new Font( "HamletOrNot" , Font.TRUETYPE_FONT , 10 );
Font font = new Font( "HamletOrNot" , Font.TRUETYPE_FONT , 12 );
Font font = new Font( "MorrisRoman-Black" , Font.TRUETYPE_FONT , 20 );
Font font = new Font( "MorrisRoman-Black" , Font.TRUETYPE_FONT , 22 );

Хорошо, система работает нормально. Проблема в том, что после запуска файлы .TTF меняют размер (до 83 КБ и 80 КБ), таким образом:

HamletOrNot.ttf (83 KB)
MorrisRoman-Black.ttf (80 KB)

Затем, когда я запускаю систему во второй раз, возникает следующая ошибка:

...
Caused by: java.awt.FontFormatException: bad table, tag=1280594760
    at sun.font.TrueTypeFont.init(TrueTypeFont.java:513)
    at sun.font.TrueTypeFont.<init>(TrueTypeFont.java:162)
    at sun.font.FontManager.createFont2D(FontManager.java:2474)
    at java.awt.Font.<init>(Font.java:570)
    at java.awt.Font.createFont(Font.java:980)
    at br.com.linu.vectortown.base.screen.font.GameFontFactory.postConstruct(GameFontFactory.java:43)
    at br.com.linu.vectortown.base.screen.font.GameFontContainer.postConstruct(GameFontContainer.java:27)
    at br.com.linu.vectortown.client.looping.util.AutomaticInjector.postConstruct(AutomaticInjector.java:47)
    ... 99 more

Если заменить файлы .TTF с измененным размером (83 КБ и 80 КБ) на оригинальные (74 КБ и 67 КБ), программа работает нормально.

Что я делаю неправильно? Я думал, что мне придется закрывать открытые файлы с помощью applicationContext.getResource(), но не знаю, как это сделать. Я не знаю, как это решить.

Примечание. Я получаю applicationContext of the Spring. Исходные файлы TTF (с правильными размерами) находятся в папке ресурсов проекта, а плохие файлы TTF — в целевой папке ресурсов (сборка выполняется с помощью Maven).

Помоги мне...

РЕДАКТИРОВАТЬ:

Я подозреваю, что maven повреждает файлы. Почему? Я использую Eclipse с плагином Maven. Всякий раз, когда я выполняю развертывание или нажимаю F5, чтобы обновить проект, файлы .TTF из целевой папки повреждаются.

Кто-нибудь видел поврежденные файлы ресурсов maven?

Спасибо


person lgapontes    schedule 20.08.2014    source источник
comment
Вы пробовали проверку на вирусы? (Извините за мысль.)   -  person Joop Eggen    schedule 20.08.2014
comment
:) ну у меня не было, но у меня есть хороший антивирус. ржу не могу   -  person lgapontes    schedule 20.08.2014


Ответы (2)


Нашел! Maven портил файлы .TTF при выполнении кода развертывания. Чтобы исправить это, вам нужно добавить расширения, которые не будут фильтроваться с помощью команды nonFilteredFileExtension в pom.xml (maven-resources-plugin).

<plugin>
  <artifactId>maven-resources-plugin</artifactId>
  <version>2.5</version>
  <configuration>
    <encoding>UTF-8</encoding>
    <nonFilteredFileExtensions>
      <nonFilteredFileExtension>ttf</nonFilteredFileExtension>
    </nonFilteredFileExtensions>
  </configuration>
</plugin>

Спасибо! xD, ...повезло!

person lgapontes    schedule 26.08.2014
comment
Спасибо, это также помогло мне Собственный шрифт runtimeexception нельзя сделать, но только из jenkins build%23autocomment42591213"> stackoverflow.com/questions/27030615/ - person Kevin D.; 20.11.2014
comment
У нас была такая же проблема. Спасибо, что указали на проблему. Наши сомнения были и в фильтрации ресурсов, так как мы использовали профили maven. как вы сказали, проблема с nonFilteredFileExtensions исправлена. СПАСИБО ! - person Peter; 31.08.2015
comment
После долгой отладки я пришел к тому же моменту, когда maven-resources-plugin ломает мои шрифты при копировании в папку target. Я пробовал <nonFilteredFileExtensions> (практически такая же конфигурация, как у вас выше), <filtering>false</filtering>, все возможные версии плагина (2.5, 2.6, 2.7, 3.0.1), но все же мои файлы шрифтов сломаны сборкой maven... - person jakub.g; 02.09.2016
comment
Спасибо! Этот комментарий исправил мою настройку Java Spring, куда теперь включены .ttf, .woff и .woff2. Еще раз спасибо за то, что сделали меня счастливым! - person Dirk Schumacher; 17.01.2018
comment
К сожалению, это не исправляет это для меня с Maven 3.6.3 и maven-resources-plugin 3.2.0... Изменить: с Maven 3.5.4 и Maven 3.6.1 это сработало. - person KnechtRootrecht; 14.01.2021

 <resources>
                    <resource>
                        <directory>src/main/resources</directory>
                        <includes>
                            <include>**/*</include>
                        </includes>
                        <excludes>
                            <exclude>**/xyz.properties</exclude>
                            <exclude>**/ehcache-myApp.xml</exclude>
                            <exclude>**/log4j-myApp.xml</exclude>
                            <exclude>**/*.ttf</exclude>
                        </excludes>
                        <filtering>true</filtering>
                    </resource>
                    <resource>
                        <directory>src/main/resources</directory>
                        <includes>
                            <include>**/*.ttf</include>
                        </includes>
                    </resource>
                </resources>

Сломанные шрифты при копировании ресурсов, но размеры файлов шрифтов изменены и, следовательно, повреждены. Ниже это исправлено для Maven 3.0.4 и maven-resources-plugin 3.0.1.

 <plugins>
            <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <version>3.0.1</version>
            <configuration>
                <encoding>UTF-8</encoding>
                <nonFilteredFileExtensions>
                    <nonFilteredFileExtension>ttf</nonFilteredFileExtension>
                </nonFilteredFileExtensions>
            </configuration>
            </plugin>
person Rahul Saini    schedule 15.04.2019