Мне нужно загрузить шрифт из файла, и я заметил, что Font.createFont()
занимает около 5 секунд для завершения создания шрифта. Вот соответствующий отрывок из моего класса управления ресурсами:Альтернатива Font.createFont()?
try(InputStream in = getClass().getResourceAsStream(FONT_DIR + fontName + FONT_EXT))
{
long startTime = System.nanoTime();
Font awtFont = Font.createFont(Font.TRUETYPE_FONT, in); //<-- This operation takes about 5 seconds
System.out.println("Operation took: " + (System.nanoTime() - startTime)/1000000);
awtFont = awtFont.deriveFont(fontSize);
result = new TrueTypeFont(awtFont, antiAlias);
}
Я проверил аналогичные должности, но я не смог найти решение этой проблемы. Поэтому мой вопрос: есть ли более быстрый способ создания java.awt.Font из файла, или я делаю что-то ужасно неправильно?
Спасибо за ваше время и у вас хороший день!
Alex
Я ничего не знаю о Java, но столкнулся с аналогичной проблемой в SpriteKit/Objective C. Оказалось, что я загружал все семейство шрифтов и все варианты этого шрифта. Это заняло 4-6 секунд. Когда я использовал другой метод, который загружал только определенный стиль (например, Regular или Bold), он занимал 100 мс. – GilesDMiddleton
Первоначально я думал, что задержка может быть связана с наличием шрифта в системе. Но оказывается, что присутствует ли шрифт или нет в системе, задержка остается той же. Также это единственный регулярный шрифт, поэтому я не думаю, что это связано с количеством загруженных шрифтов –