首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javafx实际默认字体

javafx实际默认字体
EN

Stack Overflow用户
提问于 2015-07-10 15:03:26
回答 1查看 11.3K关注 0票数 7

我在一台特定的Windows7机器上有一个JavaFX应用程序的问题,被错误地显示了非英语文本。字体设置为,据我所知,这应该是Windows 7上的Segoe (这确实是这台机器上的默认字体)。系统其他部分(非java)中的所有文本都是正确显示的,因此字体在那里并具有适当的字符集,这使我相信,由于某种原因,JavaFX没有加载它,而是使用了不同的字体。

我的问题是--我如何才能找到JavaFX在特定系统上实际使用的字体?我尝试了Font.getDefault().getName(),但它只是返回"System",这没有告诉我什么。使用-Djavafx.verbose=true等等也没有产生任何有价值的东西。

在您问-是的之前,应用程序是Unicode,它可以在其他机器上工作,包括windows和linux,没有问题。我想试着诊断这个问题,这样我就不需要重新安装机器了(目前这还不是一个选项),或者是一些戏剧性的事情。

编辑:看起来Segoe实际上并不包含特定的字符集。然而,系统的其他部分对此并无异议。因此,一个更准确的问题是--为什么JavaFX没有意识到这一点并使用退路?以及如何调试/诊断出了什么问题?

EN

回答 1

Stack Overflow用户

发布于 2015-07-11 07:40:57

问题

在Windows 7系统中有一个Segoe作为默认字体,但默认版本是5.01。因此,您无法使用此字体显示希伯来字符。Windows将在运行时将丢失的希伯来字体字符替换为能够显示这些字符的另一种字体。

因此,如果您还没有将Font更新到最小版本5.13,那么它将始终被替换。但是JavaFX无法做到这一点,因为它获得了系统默认字体(在字体家族系统中)。在它得到字体之后,它将不会替换它上的字符。

Windows 7字体首选项

如果您转到系统首选项,然后使用详细信息视图看到字体,Segoe 不是支持希伯来字符的

Windows 8.1字体首选项

如果您转到系统首选项,然后使用详细信息视图看到字体,Segoe 就是支持希伯来字符的

甚至看看这个类别,如果它没有被设置为文本,那么它可能不是默认的字体。

解决方案

用CSS定义字体

设置另一个字体,它可以显示整个应用程序的希伯来语。这里描述了这一点:https://stackoverflow.com/a/18409438/4170073

通过加载字体来定义字体

我已经向其他一些人展示了,您将能够在项目中放置所需的字体并从那里调用它:https://stackoverflow.com/a/31291372/4170073

结论

为了确保您的语言正确显示,您必须使用包并使用您自己的字体。否则,您将永远无法确定是否会在另一个系统上正确显示您的文本。这是而不是的解决方案,这是应用程序(JavaFX,Swing)所要做的。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31344162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档