jdk7: замена sun.font.fontManager / как получить информацию о имени файла из шрифта
Использование Oracle(Sun) JDK6 и попытка перейти на Oracle JDK7
я использую sun.awt.GraphicsEnvironment
найти все системные шрифты, чтобы использовать их для изменения шрифта pdf, используемого в моем файле pdf. Вот точный код, который я использую:
GraphicsEnvironment gEnv = GraphicsEnvironment.getLocalGraphicsEnvironment();
// get all system fonts
final Font[] fonts = gEnv.getAllFonts();
После этого мне нужно будет получить точный путь к файлу шрифта в системе, поэтому я использую:
FontManager.getFontPath(true) + "/" +
FontManager.getFileNameForFontName(font_name);
Проблема в том, что sun.font.FontManager
больше не является классом и был преобразован в интерфейс. Я искал в Интернете и нашел некоторые решения, которые меня не устраивают, и я ищу другие идеи, которые помогут решить мою проблему.
Решения, которые я нашел:
- Разверните мой проект на Java 6 вместо Java 7 (не рекомендуется, поскольку я использую некоторые новые функции в Java 7).
- Я нашел код класса FontManager онлайн, но его использование потребует включения множества других классов / интерфейсов, и процесс кажется пустым и отнимает много времени. Также нет, если мне разрешено использовать этот код, поскольку он является собственностью компании Sun.
Что мне нужно, это: *Способ найти точный путь к файлу шрифта в системе*. Все идеи приветствуются.
2 ответа
Вы не говорите, какой JDK вы используете (Oracle, OpenJDK, ..). Возможно, у вас есть
FontManagerFactory.getInstance()
имеется в наличии. Или реализация интерфейса Win32FontManager
(если вы на Windows)?
Этот код работает в Windows 10 и IBM Java 8.
sun.font.SunFontManager.getInstance().getPlatformFontPath(true)
Но в macOS 11 и AdoptOpenJDK 8/11 возвращается пустая строка.