![](/img/trans.png)
[英]Java binary compatibility issue: sun.font.FontManager class became interface
[英]jdk7: sun.font.fontManager replacement/how to get filename information from fontname
使用 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
不再是一個類, sun.font.FontManager
被轉換成了一個接口。 我在網上搜索並提出了一些我不滿意的解決方案,我正在尋找其他想法來幫助解決我的問題。
我找到的解決方案:
我需要的是: *一種在系統上找到確切字體文件路徑的方法*. 歡迎所有想法。
您不是說您使用的是哪個 JDK(Oracle、OpenJDK 等)。 可能你有
FontManagerFactory.getInstance()
可用的。 或者接口實現Win32FontManager
(如果你在 Windows 上)?
此代碼適用於 Windows 10 和 IBM Java 8
sun.font.SunFontManager.getInstance().getPlatformFontPath(true)
但在 macOS 11 和 AdoptOpenJDK 8/11 上,返回空字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.