【发布时间】:2015-09-29 09:40:34
【问题描述】:
我在特定 Windows 7 机器上的 JavaFX 应用程序存在问题,非英文文本显示不正确。字体在任何地方都设置为 System,据我了解,这应该是 Windows 7 上的 Segoe UI(这确实是这台机器上的默认字体)。 系统其他部分(非java)中的所有文本都正确显示,因此字体存在并且具有适当的字符集,这让我相信JavaFX出于某种原因默默地无法加载它,而是使用不同的字体.
我的问题是 - 我怎样才能找出 JavaFX 在特定系统上 实际 使用的字体?我试过Font.getDefault().getName(),但它只是返回“系统”,它什么也没告诉我。
使用-Djavafx.verbose=true 等也没有产生任何价值。
在您问之前 - 是的,该应用程序是 Unicode,它可以在其他机器上运行,包括 windows 和 linux,没有问题。我想尝试诊断问题,这样我就不必求助于重新安装机器(目前这不是一个选项),或者像戏剧性的那样。
编辑:Segoe UI 似乎实际上不包含该特定字符集。尽管如此,系统的其余部分都很好。 所以一个更准确的问题是 - 为什么 JavaFX 没有意识到这一点并使用回退?以及如何调试/诊断出了什么问题?
【问题讨论】:
-
更仔细地查看有问题的字体,它似乎确实不包含所需的字符集(在我的例子中是希伯来语)。尽管如此,系统希伯来语文本中的其他任何地方都可以正常显示。所以我想现在的问题变成了——我如何判断 JavaFX 的后备系统出了什么问题?