跨平台的 Arial 字体解决方案

3

在我的Swing应用程序中,我使用Arial字体。不幸的是,它在不同的平台上呈现方式不同:

Windows:

Windows variant

Mac OS X:

enter image description here

Linux:

enter image description here

Windows和Mac OS X变体看起来几乎一样。Linux则完全不同,似乎根本不是Arial。主要问题是字母的不同宽度...

有什么最好的解决方案可以使Linux上的文本呈现类似于Windows上的文本?可能是一些替代字体,例如Nimbus Sans L?

一些限制:JRE无法随应用程序供应,并且它应该非常接近Arial。

谢谢!


你可以使用它来切换字体,或者将其保存为图像并缓冲图像。 - user1181445
如果您想要跨平台,不要坚持使用同一种字体。那么为什么要这样做呢? - Raedwald
@Raedwald,主要原因:某些地方的字母宽度破坏了布局。 - Andrej
1
"breaks layout" 破坏了布局。修复布局。 - Andrew Thompson
布局已经OK,不在讨论范围内。请坚持原始问题。 - Andrej
4个回答

5

拥抱平台多样性。考虑到不同平台具有类似但具有不同度量的字体,让每个组件通过不干扰并正确使用布局来计算其自己的首选大小。这里有一个漂亮的示例和截图。


2
顺便提一下,选择一个逻辑字体,比如Font.SANS_SERIF,而不是像_Ariel_这样的物理字体,是获取平台设计师最佳选择的便捷方式。 - trashgod
但是我正在使用自定义的外观和感觉。而且在某些地方使用了绝对布局。对我来说,切换到布局管理器不是一个选项。顺便说一句,你的示例截图显示了一个丑陋和不符人体工程学的设计。 - Andrej
你的应用程序是否打算在多个平台上运行? - trashgod

2

一个解决方案可能是使用Font.createFont()加载字体文件。 这里有一个示例。


谢谢!你知道Arial字体许可证是否允许吗?我认为在将其捆绑到应用程序之前必须购买它。 - Andrej
我认为你需要找一个免费的字体来使用。Arial字体许可证表明你不能分发该字体。但是网上有很多免费的字体,我相信你一定能找到适合的字体 :) - user800014

0

是的,实际上它在示例图像上已启用。而抗锯齿不会影响字母的宽度。 - Andrej

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接