2012-03-15 127 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

相關問題