2012-03-15 96 views
3

在我的Swing应用程序中,我使用Arial字体。遗憾的是,不同的呈现在不同的平台: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。

谢谢!

+0

http://pastebin.com/C6NcGP0t 您可以使用它来切换字体,否则您可以将它保存为图像并缓存图像。 – 2012-03-15 16:04:03

+0

如果你想跨平台,不要坚持使用相同的字体。你为什么要这样? – Raedwald 2012-03-15 16:04:35

+0

@Raedwald,主要原因:字母宽度在某些地方打破布局。 – Andrej 2012-03-15 16:11:50

回答

2

一种解决方案可能是使用Font.createFont()加载字体文件。 Here's样本。

+0

谢谢!你知道Arial许可证是否允许吗?我认为它必须在捆绑到应用程序之前购买。 – Andrej 2012-03-15 16:14:45

+0

我想你将不得不找到一个免费的字体来使用。 [Arial字体许可证](http://en.wikipedia.org/wiki/Arial)说,你不能分发字体。但是网上有很多免费的字体,我相信你会找到适合的东西:) – 2012-03-15 16:21:20

5

拥抱平台品种。鉴于不同的平台具有不同指标的相似字体,请让每个组件通过不干扰以及正确使用布局来完成计算自己的preferred size的工作。这里有一个很好的带有屏幕截图的example

+2

另外,选择一个_logical_字体,例如['Font.SANS_SERIF'](http://docs.oracle.com/ javase/7/docs/api/java/awt/Font.html#SANS_SERIF),而不是像_Ariel_这样的_physical_字体,是获得平台设计师最佳选择的便捷方式。 – trashgod 2012-03-15 22:03:14

+0

但我正在使用自定义外观。在某些地方使用绝对布局。对我来说,切换到布局管理器不是一种选择。您示例中的BTW屏幕截图显示了一个丑陋而不符合人体工程学的设计。 – Andrej 2012-03-16 18:33:37

+0

您的应用程序是否打算在多个平台上工作? – trashgod 2012-03-16 22:25:18

相关问题