2012-03-15 2 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. Основная проблема заключается в различной ширине букв ...

Что было бы лучшим решением, которое бы отображало текст, похожий на вариант Windows на Linux? Возможно, некоторые альтернативные шрифты, например, Nimbus Sans L?

Некоторые ограничения: JRE не может поставляться с приложением, и он должен быть очень близок к Arial.

Спасибо!

+0

http://pastebin.com/C6NcGP0t Вы можете использовать это, чтобы затем отключить шрифты, иначе вы могли бы просто сохранить его в качестве изображения и вместо этого буферизовать изображение. –

+0

Если вы хотите быть кросс-платформенным, не настаивайте на том же шрифте. И почему ты должен? – Raedwald

+0

@ Raedwald, основная причина: ширина буквы разрывает расположение в некоторых местах. – Andrej

ответ

2

Одним из вариантов может быть загрузка файла шрифта с помощью Font.createFont(). Here's образец.

+0

Спасибо! Знаете ли вы, разрешена ли лицензия Arial? Я думаю, он должен быть куплен, прежде чем он может быть включен в приложение. – Andrej

+0

Думаю, вам нужно будет найти бесплатный шрифт для использования. [Arial font license] (http://en.wikipedia.org/wiki/Arial) говорит, что вы не можете распространять шрифт. Но в Интернете есть много бесплатных шрифтов, я уверен, что вы найдете что-то, что подходит :) –

5

Платформа Embrace platform. Учитывая, что на разных платформах есть похожие шрифты с разными метриками, пусть каждый компонент выполняет работу по вычислению собственного preferred size, не мешая и правильно используя макеты. Вот хороший example со скриншотами.

+2

Как в сторону, выбирая шрифт _logical_, например ['Font.SANS_SERIF'] (http://docs.oracle.com/ javase/7/docs/api/java/awt/Font.html # SANS_SERIF), а не шрифт _physical_, такой как _Ariel_, - это удобный способ получить лучший выбор дизайнера платформы. – trashgod

+0

Но я использую пользовательский внешний вид. И в некоторых местах используется абсолютная макет. Для меня не вариант переключиться на диспетчер компоновки. Скриншоты BTW из вашего примера показывают уродливый и неэргономичный дизайн. – Andrej

+0

Ваше приложение предназначено для работы на нескольких платформах? – trashgod

Смежные вопросы