Безопасно ли использовать символы Unicode в графическом интерфейсе Java?

Для кнопки воспроизведения в графическом интерфейсе Java я в настоящее время использую кнопку с меткой, установленной на ' ▻ ' (нашел этот символ в таблице символов Unicode). Насколько я понимаю, лучше не использовать такие символы непосредственно в исходном коде, а использовать явное представление юникода, такое как \u25BB в этом примере, потому что некоторые инструменты (редактор, ...) могут не работать с файлами с не-ASCII содержание (правильно?).

Предполагая, что скомпилированный класс содержит правильный символ, при каких обстоятельствах графический интерфейс не будет отображать предполагаемый символ в текущей операционной системе ПК? Linux, Windows, Mac должны поддерживать UTF-16, верно? Вызывают ли проблемы с этим подходом доступные шрифты или настройки шрифтов?

(Конечно, я мог бы добавить значок, но зачем добавлять дополнительные ресурсы, если символ уже должен быть доступен... учитывая, что это портативное решение)


person dcn    schedule 13.09.2011    source источник


Ответы (3)


Вызывают ли проблемы с этим подходом доступные шрифты или настройки шрифтов?

К сожалению, они делают. Конечно, вы можете использовать юникод в исходном коде, но проблема в том, что в настоящее время в юникоде назначено 246 943 кодовых точки так что, очевидно, ни один шрифт не имеет даже части тех, которые определены. Вы получите квадраты или какой-то другой странный рендеринг, когда глиф недоступен. У меня были случаи, когда относительно простые символы, такие как ³, хорошо отображались на одном компьютере с Windows и отображались в виде квадратов на следующем, почти идентичном компьютере. На это влияют всевозможные настройки языка и локали, а также незначительные изменения версии, поэтому это довольно хрупко.

Насколько я знаю, мало, если вообще есть, персонажей, которые гарантированно всегда будут доступны. Класс Java Font имеет несколько методов, таких как canDisplay и canDisplayUpTo, которые могут быть полезны для проверки во время выполнения.

Вместо использования значков вы можете связать какой-нибудь хороший шрифт TrueType со специальными символами, которые вам нужны, а затем использовать этот шрифт везде в вашем приложении.

person Joonas Pulakka    schedule 13.09.2011

I currently use a button with the label set to ' ▻ ' 

вместо того, чтобы всегда использовать JButton(текст строки, значок значка) и Значок не имеет значения, если есть этот Шрифт или другой Font, UTF-16 или Unicode

person mKorbel    schedule 13.09.2011

Большинство редакторов поддерживают юникод, так что продолжайте.

Посмотрите на этот пост: Поддержка французского языка Eclipse

Если вы используете простой редактор, например блокнот, то при сохранении имени типа и под ним выберите кодировку UTF ( http://www.sevenforums.com/software/72727-how-make-notepad-save-txt-files-unicode.html )

person Иван Бишевац    schedule 13.09.2011