6

使用 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它不再是一个类,并且已经被转换为一个接口。我在网上搜索并提出了一些我不满意的解决方案,我正在寻找其他想法来帮助解决我的问题。

我找到的解决方案:

  1. 在 Java 6 而不是 Java 7 上部署我的项目(不推荐,因为我在 Java 7 中使用了一些新功能)。
  2. 我在网上找到了 FontManager 类的代码,但是使用它需要包含很多其他类/接口,而且这个过程看起来很笨拙且耗时。如果我被允许使用该代码,我也不是,因为它是 Sun 公司的专有。

我需要的是: *一种在系统上找到确切字体文件路径的方法*. 欢迎所有想法。

4

2 回答 2

3

您不是在说您使用哪个 JDK(Oracle、OpenJDK、..)。可能你有

FontManagerFactory.getInstance()

可用的。或者接口实现Win32FontManager(如果你在 Windows 上)?

于 2013-01-18T12:20:39.463 回答
0

此代码适用于 Windows 10 和 IBM Java 8

sun.font.SunFontManager.getInstance().getPlatformFontPath(true)

但是在 macOS 11 和 AdoptOpenJDK 8/11 上会返回一个空字符串。

于 2021-01-27T11:01:15.913 回答