Безопасно ли использовать символы Юникода в Java GUI? - PullRequest
5 голосов
/ 13 сентября 2011

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

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

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

Ответы [ 3 ]

6 голосов
/ 13 сентября 2011

Имеют ли доступные шрифты или настройки шрифта проблемы для этого подхода?

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

AFAIK Есть немного, если таковые имеются, символы гарантированно всегда доступны. В классе Font Java есть несколько методов, таких как canDisplay и canDisplayUpTo, которые могут быть полезны для проверки этого во время выполнения.

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

3 голосов
/ 13 сентября 2011
I currently use a button with the label set to ' ▻ ' 

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

2 голосов
/ 13 сентября 2011

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

Посмотрите на этот пост: Поддержка Eclipse French

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

...