Java jdk7:sun.font.fontManager替换/如何从fontname获取文件名信息
使用Oracle(Sun)JDK6并尝试移动到Oracle JDK7 我正在使用Java jdk7:sun.font.fontManager替换/如何从fontname获取文件名信息,java,fonts,java-7,jdk-internal-api,Java,Fonts,Java 7,Jdk Internal Api,使用Oracle(Sun)JDK6并尝试移动到Oracle JDK7 我正在使用sun.awt.GraphicsEnvironment查找所有系统字体,以便使用它们更改pdf文件中使用的pdf字体。以下是我使用的确切代码: GraphicsEnvironment gEnv = GraphicsEnvironment.getLocalGraphicsEnvironment(); // get all system fonts final Font[] fonts = gEnv.getAllFon
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
不再是一个类,而是已转换为一个接口。我在网上搜索,找到了一些我不满意的解决方案,我正在寻找其他的想法来帮助解决我的问题
我找到的解决方案:
我需要的是:*一种在系统上查找确切字体文件路径的方法*。欢迎所有想法 您没有说您使用的是哪个JDK(Oracle、OpenJDK等等)。可能你有
FontManagerFactory.getInstance()
可用。或者inteface实现
Win32FontManager
(如果您在Windows上)?此代码适用于Windows 10和IBM Java 8
sun.font.SunFontManager.getInstance().getPlatformFontPath(true)
但是在macOS 11和OpenJDK 8/11上返回一个空字符串。真正的问题是“如何找到在系统上找到确切字体文件路径的方法”@Jayan,是的,我知道。十年前被请求加入Java:@Jayan,我得到了赏金,谢谢。在您的特殊情况下,解决方案是什么?我使用反射并访问保存文件路径的变量。我稍后会把代码放在这里。@Jayan:你能把代码放在这里吗?我现在也有同样的问题,伙计,你找到解决办法了吗?Marcel Stör关于使用Win32FontManager的回答只在Windows中帮助解决了这个问题。我怀疑它在Linux或Mac操作系统上不起作用。