一些网站在Mac上显示的是乱码而不是正确的文本信息。比如,使用GMapsFX时:。另外一个在线网站也有同样的问题:。这可能与OS X 10.11或10.12有关系。我已经测试过Java 1.8.0_121了。是否有任何解决方案或变通方法来解决这个问题呢?
Mozilla/5.0 (Windows NT x.y; Win64; x64; rv:10.0) Gecko/20100101 Firefox/10.0
engine.setUserAgent(engine.getUserAgent().replace("Macintosh; ", ""));
我认为问题在于:提供字体的服务器使用userAgent来确定要发送哪种字体。当它由于误导性的userAgent而犯错时,它会发送错误的字体。进一步地,我认为Mac无法处理所发送格式,结果只能得到乱码。 - Frederic Leitenberger当Java应用程序启动时,请加载系统中的所有字体。但这不是最好的答案……抱歉。
List<String> fontFamilies = Font.getFamilies();
for (String fontFamily: fontFamilies) {
Font.font(fontFamily);
}
有一个特定版本的OpenJDK似乎没有这些问题。如果您是受影响的Mac用户,请按照以下说明切换到该版本的OpenJDK。
下载并安装Azul构建的OpenJDK 11版本,可以在这里找到(滚动到页面底部)。记得选择JDK FX
版本(而不是其他版本)。
建议:删除其他版本的OpenJDK,以免意外使用错误的版本启动JAR文件(此视频展示了如何操作)。
安装后,命令java --version
应该输出以下内容:
openjdk 11.0.12 2021-07-20 LTS
OpenJDK Runtime Environment Zulu11.50+19-CA (build 11.0.12+7-LTS)
OpenJDK 64-Bit Server VM Zulu11.50+19-CA (build 11.0.12+7-LTS, mixed mode)
And `whereis java` should output `/usr/bin/java`
JAVA_HOME
/JDK_HOME
系统变量设置为指向 /Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home
。
WebEngine
的documentProperty
。然后,一旦文档可用,我通过webEngine.executeScript()
运行一个JavaScript代码,该代码正在浏览器中遍历我之前识别的所有元素,并设置内联样式,这将覆盖CSS文件中的字体:nodes[i].style.fontFamily ='Serif';
。相当恶心,我知道,但那是我能找到的最好的解决方案...嗯,我想那对你可能行不通,因为你可能有动态HTML。 - JohnnyAW